From 5bf22fc7e3c392c8bd44315ca2d06d7dca7d084e Mon Sep 17 00:00:00 2001 From: sotech117 Date: Thu, 31 Jul 2025 17:27:24 -0400 Subject: add code for analysis of data --- .../lib/python3.8/site-packages/plotly/__init__.py | 194 + .../python3.8/site-packages/plotly/_subplots.py | 1523 ++ .../python3.8/site-packages/plotly/animation.py | 54 + .../python3.8/site-packages/plotly/api/__init__.py | 0 .../site-packages/plotly/basedatatypes.py | 6434 +++++ .../python3.8/site-packages/plotly/basewidget.py | 989 + .../python3.8/site-packages/plotly/callbacks.py | 294 + .../site-packages/plotly/colors/__init__.py | 51 + .../lib/python3.8/site-packages/plotly/conftest.py | 24 + .../site-packages/plotly/data/__init__.py | 430 + .../python3.8/site-packages/plotly/exceptions.py | 1 + .../site-packages/plotly/express/__init__.py | 132 + .../site-packages/plotly/express/_chart_types.py | 1950 ++ .../site-packages/plotly/express/_core.py | 2905 +++ .../python3.8/site-packages/plotly/express/_doc.py | 640 + .../site-packages/plotly/express/_imshow.py | 605 + .../plotly/express/_special_inputs.py | 40 + .../plotly/express/colors/__init__.py | 52 + .../site-packages/plotly/express/data/__init__.py | 18 + .../site-packages/plotly/express/imshow_utils.py | 247 + .../plotly/express/trendline_functions/__init__.py | 170 + .../plotly/figure_factory/_2d_density.py | 155 + .../plotly/figure_factory/__init__.py | 69 + .../plotly/figure_factory/_annotated_heatmap.py | 307 + .../site-packages/plotly/figure_factory/_bullet.py | 366 + .../plotly/figure_factory/_candlestick.py | 277 + .../plotly/figure_factory/_county_choropleth.py | 1013 + .../plotly/figure_factory/_dendrogram.py | 395 + .../plotly/figure_factory/_distplot.py | 441 + .../plotly/figure_factory/_facet_grid.py | 1195 + .../site-packages/plotly/figure_factory/_gantt.py | 1034 + .../plotly/figure_factory/_hexbin_mapbox.py | 526 + .../site-packages/plotly/figure_factory/_ohlc.py | 295 + .../site-packages/plotly/figure_factory/_quiver.py | 265 + .../plotly/figure_factory/_scatterplot.py | 1135 + .../plotly/figure_factory/_streamline.py | 406 + .../site-packages/plotly/figure_factory/_table.py | 280 + .../plotly/figure_factory/_ternary_contour.py | 692 + .../plotly/figure_factory/_trisurf.py | 509 + .../site-packages/plotly/figure_factory/_violin.py | 704 + .../site-packages/plotly/figure_factory/utils.py | 249 + venv/lib/python3.8/site-packages/plotly/files.py | 1 + .../site-packages/plotly/graph_objects/__init__.py | 306 + .../site-packages/plotly/graph_objs/__init__.py | 305 + .../site-packages/plotly/graph_objs/_bar.py | 2598 ++ .../site-packages/plotly/graph_objs/_barpolar.py | 1606 ++ .../site-packages/plotly/graph_objs/_box.py | 3050 +++ .../plotly/graph_objs/_candlestick.py | 1677 ++ .../site-packages/plotly/graph_objs/_carpet.py | 1257 + .../site-packages/plotly/graph_objs/_choropleth.py | 1755 ++ .../plotly/graph_objs/_choroplethmap.py | 1749 ++ .../plotly/graph_objs/_choroplethmapbox.py | 1777 ++ .../site-packages/plotly/graph_objs/_cone.py | 2260 ++ .../site-packages/plotly/graph_objs/_contour.py | 2616 ++ .../plotly/graph_objs/_contourcarpet.py | 1837 ++ .../site-packages/plotly/graph_objs/_densitymap.py | 1722 ++ .../plotly/graph_objs/_densitymapbox.py | 1749 ++ .../plotly/graph_objs/_deprecations.py | 723 + .../site-packages/plotly/graph_objs/_figure.py | 24433 ++++++++++++++++++ .../plotly/graph_objs/_figurewidget.py | 24437 +++++++++++++++++++ .../site-packages/plotly/graph_objs/_frame.py | 220 + .../site-packages/plotly/graph_objs/_funnel.py | 2392 ++ .../site-packages/plotly/graph_objs/_funnelarea.py | 1640 ++ .../site-packages/plotly/graph_objs/_heatmap.py | 2531 ++ .../site-packages/plotly/graph_objs/_histogram.py | 2419 ++ .../plotly/graph_objs/_histogram2d.py | 2363 ++ .../plotly/graph_objs/_histogram2dcontour.py | 2422 ++ .../site-packages/plotly/graph_objs/_icicle.py | 1765 ++ .../site-packages/plotly/graph_objs/_image.py | 1454 ++ .../site-packages/plotly/graph_objs/_indicator.py | 848 + .../site-packages/plotly/graph_objs/_isosurface.py | 2161 ++ .../site-packages/plotly/graph_objs/_layout.py | 3507 +++ .../site-packages/plotly/graph_objs/_mesh3d.py | 2577 ++ .../site-packages/plotly/graph_objs/_ohlc.py | 1675 ++ .../site-packages/plotly/graph_objs/_parcats.py | 934 + .../site-packages/plotly/graph_objs/_parcoords.py | 919 + .../site-packages/plotly/graph_objs/_pie.py | 1869 ++ .../site-packages/plotly/graph_objs/_sankey.py | 966 + .../site-packages/plotly/graph_objs/_scatter.py | 2750 +++ .../site-packages/plotly/graph_objs/_scatter3d.py | 1995 ++ .../plotly/graph_objs/_scattercarpet.py | 1826 ++ .../site-packages/plotly/graph_objs/_scattergeo.py | 1854 ++ .../site-packages/plotly/graph_objs/_scattergl.py | 2287 ++ .../site-packages/plotly/graph_objs/_scattermap.py | 1708 ++ .../plotly/graph_objs/_scattermapbox.py | 1736 ++ .../plotly/graph_objs/_scatterpolar.py | 1913 ++ .../plotly/graph_objs/_scatterpolargl.py | 1874 ++ .../plotly/graph_objs/_scattersmith.py | 1779 ++ .../plotly/graph_objs/_scatterternary.py | 1889 ++ .../site-packages/plotly/graph_objs/_splom.py | 1520 ++ .../site-packages/plotly/graph_objs/_streamtube.py | 2166 ++ .../site-packages/plotly/graph_objs/_sunburst.py | 1760 ++ .../site-packages/plotly/graph_objs/_surface.py | 2138 ++ .../site-packages/plotly/graph_objs/_table.py | 908 + .../site-packages/plotly/graph_objs/_treemap.py | 1738 ++ .../site-packages/plotly/graph_objs/_violin.py | 2264 ++ .../site-packages/plotly/graph_objs/_volume.py | 2211 ++ .../site-packages/plotly/graph_objs/_waterfall.py | 2580 ++ .../plotly/graph_objs/bar/__init__.py | 40 + .../plotly/graph_objs/bar/_error_x.py | 502 + .../plotly/graph_objs/bar/_error_y.py | 479 + .../plotly/graph_objs/bar/_hoverlabel.py | 338 + .../plotly/graph_objs/bar/_insidetextfont.py | 587 + .../plotly/graph_objs/bar/_legendgrouptitle.py | 104 + .../site-packages/plotly/graph_objs/bar/_marker.py | 685 + .../plotly/graph_objs/bar/_outsidetextfont.py | 587 + .../plotly/graph_objs/bar/_selected.py | 105 + .../site-packages/plotly/graph_objs/bar/_stream.py | 113 + .../plotly/graph_objs/bar/_textfont.py | 586 + .../plotly/graph_objs/bar/_unselected.py | 106 + .../plotly/graph_objs/bar/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/bar/hoverlabel/_font.py | 587 + .../graph_objs/bar/legendgrouptitle/__init__.py | 9 + .../graph_objs/bar/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/bar/marker/__init__.py | 16 + .../plotly/graph_objs/bar/marker/_colorbar.py | 1721 ++ .../plotly/graph_objs/bar/marker/_line.py | 546 + .../plotly/graph_objs/bar/marker/_pattern.py | 433 + .../graph_objs/bar/marker/colorbar/__init__.py | 16 + .../graph_objs/bar/marker/colorbar/_tickfont.py | 334 + .../bar/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/bar/marker/colorbar/_title.py | 136 + .../bar/marker/colorbar/title/__init__.py | 9 + .../graph_objs/bar/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/bar/selected/__init__.py | 12 + .../plotly/graph_objs/bar/selected/_marker.py | 104 + .../plotly/graph_objs/bar/selected/_textfont.py | 81 + .../plotly/graph_objs/bar/unselected/__init__.py | 12 + .../plotly/graph_objs/bar/unselected/_marker.py | 110 + .../plotly/graph_objs/bar/unselected/_textfont.py | 84 + .../plotly/graph_objs/barpolar/__init__.py | 30 + .../plotly/graph_objs/barpolar/_hoverlabel.py | 338 + .../graph_objs/barpolar/_legendgrouptitle.py | 104 + .../plotly/graph_objs/barpolar/_marker.py | 650 + .../plotly/graph_objs/barpolar/_selected.py | 106 + .../plotly/graph_objs/barpolar/_stream.py | 114 + .../plotly/graph_objs/barpolar/_unselected.py | 106 + .../graph_objs/barpolar/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/barpolar/hoverlabel/_font.py | 587 + .../barpolar/legendgrouptitle/__init__.py | 9 + .../graph_objs/barpolar/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/barpolar/marker/__init__.py | 16 + .../plotly/graph_objs/barpolar/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/barpolar/marker/_line.py | 546 + .../plotly/graph_objs/barpolar/marker/_pattern.py | 433 + .../barpolar/marker/colorbar/__init__.py | 16 + .../barpolar/marker/colorbar/_tickfont.py | 334 + .../barpolar/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/barpolar/marker/colorbar/_title.py | 136 + .../barpolar/marker/colorbar/title/__init__.py | 9 + .../barpolar/marker/colorbar/title/_font.py | 334 + .../graph_objs/barpolar/selected/__init__.py | 12 + .../plotly/graph_objs/barpolar/selected/_marker.py | 104 + .../graph_objs/barpolar/selected/_textfont.py | 81 + .../graph_objs/barpolar/unselected/__init__.py | 12 + .../graph_objs/barpolar/unselected/_marker.py | 110 + .../graph_objs/barpolar/unselected/_textfont.py | 84 + .../plotly/graph_objs/box/__init__.py | 32 + .../plotly/graph_objs/box/_hoverlabel.py | 338 + .../plotly/graph_objs/box/_legendgrouptitle.py | 104 + .../site-packages/plotly/graph_objs/box/_line.py | 103 + .../site-packages/plotly/graph_objs/box/_marker.py | 357 + .../plotly/graph_objs/box/_selected.py | 79 + .../site-packages/plotly/graph_objs/box/_stream.py | 113 + .../plotly/graph_objs/box/_unselected.py | 80 + .../plotly/graph_objs/box/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/box/hoverlabel/_font.py | 587 + .../graph_objs/box/legendgrouptitle/__init__.py | 9 + .../graph_objs/box/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/box/marker/__init__.py | 9 + .../plotly/graph_objs/box/marker/_line.py | 181 + .../plotly/graph_objs/box/selected/__init__.py | 9 + .../plotly/graph_objs/box/selected/_marker.py | 127 + .../plotly/graph_objs/box/unselected/__init__.py | 9 + .../plotly/graph_objs/box/unselected/_marker.py | 136 + .../plotly/graph_objs/candlestick/__init__.py | 29 + .../plotly/graph_objs/candlestick/_decreasing.py | 113 + .../plotly/graph_objs/candlestick/_hoverlabel.py | 366 + .../plotly/graph_objs/candlestick/_increasing.py | 113 + .../graph_objs/candlestick/_legendgrouptitle.py | 104 + .../plotly/graph_objs/candlestick/_line.py | 85 + .../plotly/graph_objs/candlestick/_stream.py | 114 + .../graph_objs/candlestick/decreasing/__init__.py | 9 + .../graph_objs/candlestick/decreasing/_line.py | 104 + .../graph_objs/candlestick/hoverlabel/__init__.py | 9 + .../graph_objs/candlestick/hoverlabel/_font.py | 587 + .../graph_objs/candlestick/increasing/__init__.py | 9 + .../graph_objs/candlestick/increasing/_line.py | 104 + .../candlestick/legendgrouptitle/__init__.py | 9 + .../candlestick/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/carpet/__init__.py | 26 + .../plotly/graph_objs/carpet/_aaxis.py | 1850 ++ .../plotly/graph_objs/carpet/_baxis.py | 1850 ++ .../plotly/graph_objs/carpet/_font.py | 333 + .../plotly/graph_objs/carpet/_legendgrouptitle.py | 104 + .../plotly/graph_objs/carpet/_stream.py | 113 + .../plotly/graph_objs/carpet/aaxis/__init__.py | 16 + .../plotly/graph_objs/carpet/aaxis/_tickfont.py | 334 + .../graph_objs/carpet/aaxis/_tickformatstop.py | 241 + .../plotly/graph_objs/carpet/aaxis/_title.py | 130 + .../graph_objs/carpet/aaxis/title/__init__.py | 9 + .../plotly/graph_objs/carpet/aaxis/title/_font.py | 334 + .../plotly/graph_objs/carpet/baxis/__init__.py | 16 + .../plotly/graph_objs/carpet/baxis/_tickfont.py | 334 + .../graph_objs/carpet/baxis/_tickformatstop.py | 241 + .../plotly/graph_objs/carpet/baxis/_title.py | 130 + .../graph_objs/carpet/baxis/title/__init__.py | 9 + .../plotly/graph_objs/carpet/baxis/title/_font.py | 334 + .../graph_objs/carpet/legendgrouptitle/__init__.py | 9 + .../graph_objs/carpet/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/choropleth/__init__.py | 40 + .../plotly/graph_objs/choropleth/_colorbar.py | 1721 ++ .../plotly/graph_objs/choropleth/_hoverlabel.py | 338 + .../graph_objs/choropleth/_legendgrouptitle.py | 104 + .../plotly/graph_objs/choropleth/_marker.py | 129 + .../plotly/graph_objs/choropleth/_selected.py | 80 + .../plotly/graph_objs/choropleth/_stream.py | 114 + .../plotly/graph_objs/choropleth/_unselected.py | 80 + .../graph_objs/choropleth/colorbar/__init__.py | 16 + .../graph_objs/choropleth/colorbar/_tickfont.py | 334 + .../choropleth/colorbar/_tickformatstop.py | 241 + .../graph_objs/choropleth/colorbar/_title.py | 136 + .../choropleth/colorbar/title/__init__.py | 9 + .../graph_objs/choropleth/colorbar/title/_font.py | 334 + .../graph_objs/choropleth/hoverlabel/__init__.py | 9 + .../graph_objs/choropleth/hoverlabel/_font.py | 587 + .../choropleth/legendgrouptitle/__init__.py | 9 + .../choropleth/legendgrouptitle/_font.py | 334 + .../graph_objs/choropleth/marker/__init__.py | 9 + .../plotly/graph_objs/choropleth/marker/_line.py | 171 + .../graph_objs/choropleth/selected/__init__.py | 9 + .../graph_objs/choropleth/selected/_marker.py | 77 + .../graph_objs/choropleth/unselected/__init__.py | 9 + .../graph_objs/choropleth/unselected/_marker.py | 80 + .../plotly/graph_objs/choroplethmap/__init__.py | 40 + .../plotly/graph_objs/choroplethmap/_colorbar.py | 1722 ++ .../plotly/graph_objs/choroplethmap/_hoverlabel.py | 338 + .../graph_objs/choroplethmap/_legendgrouptitle.py | 104 + .../plotly/graph_objs/choroplethmap/_marker.py | 129 + .../plotly/graph_objs/choroplethmap/_selected.py | 80 + .../plotly/graph_objs/choroplethmap/_stream.py | 114 + .../plotly/graph_objs/choroplethmap/_unselected.py | 80 + .../graph_objs/choroplethmap/colorbar/__init__.py | 16 + .../graph_objs/choroplethmap/colorbar/_tickfont.py | 334 + .../choroplethmap/colorbar/_tickformatstop.py | 241 + .../graph_objs/choroplethmap/colorbar/_title.py | 136 + .../choroplethmap/colorbar/title/__init__.py | 9 + .../choroplethmap/colorbar/title/_font.py | 334 + .../choroplethmap/hoverlabel/__init__.py | 9 + .../graph_objs/choroplethmap/hoverlabel/_font.py | 587 + .../choroplethmap/legendgrouptitle/__init__.py | 9 + .../choroplethmap/legendgrouptitle/_font.py | 334 + .../graph_objs/choroplethmap/marker/__init__.py | 9 + .../graph_objs/choroplethmap/marker/_line.py | 171 + .../graph_objs/choroplethmap/selected/__init__.py | 9 + .../graph_objs/choroplethmap/selected/_marker.py | 77 + .../choroplethmap/unselected/__init__.py | 9 + .../graph_objs/choroplethmap/unselected/_marker.py | 80 + .../plotly/graph_objs/choroplethmapbox/__init__.py | 40 + .../graph_objs/choroplethmapbox/_colorbar.py | 1722 ++ .../graph_objs/choroplethmapbox/_hoverlabel.py | 338 + .../choroplethmapbox/_legendgrouptitle.py | 104 + .../plotly/graph_objs/choroplethmapbox/_marker.py | 129 + .../graph_objs/choroplethmapbox/_selected.py | 80 + .../plotly/graph_objs/choroplethmapbox/_stream.py | 114 + .../graph_objs/choroplethmapbox/_unselected.py | 80 + .../choroplethmapbox/colorbar/__init__.py | 16 + .../choroplethmapbox/colorbar/_tickfont.py | 334 + .../choroplethmapbox/colorbar/_tickformatstop.py | 241 + .../graph_objs/choroplethmapbox/colorbar/_title.py | 136 + .../choroplethmapbox/colorbar/title/__init__.py | 9 + .../choroplethmapbox/colorbar/title/_font.py | 334 + .../choroplethmapbox/hoverlabel/__init__.py | 9 + .../choroplethmapbox/hoverlabel/_font.py | 587 + .../choroplethmapbox/legendgrouptitle/__init__.py | 9 + .../choroplethmapbox/legendgrouptitle/_font.py | 334 + .../graph_objs/choroplethmapbox/marker/__init__.py | 9 + .../graph_objs/choroplethmapbox/marker/_line.py | 171 + .../choroplethmapbox/selected/__init__.py | 9 + .../choroplethmapbox/selected/_marker.py | 77 + .../choroplethmapbox/unselected/__init__.py | 9 + .../choroplethmapbox/unselected/_marker.py | 80 + .../plotly/graph_objs/cone/__init__.py | 28 + .../plotly/graph_objs/cone/_colorbar.py | 1721 ++ .../plotly/graph_objs/cone/_hoverlabel.py | 338 + .../plotly/graph_objs/cone/_legendgrouptitle.py | 104 + .../plotly/graph_objs/cone/_lighting.py | 259 + .../plotly/graph_objs/cone/_lightposition.py | 129 + .../plotly/graph_objs/cone/_stream.py | 113 + .../plotly/graph_objs/cone/colorbar/__init__.py | 16 + .../plotly/graph_objs/cone/colorbar/_tickfont.py | 334 + .../graph_objs/cone/colorbar/_tickformatstop.py | 241 + .../plotly/graph_objs/cone/colorbar/_title.py | 136 + .../graph_objs/cone/colorbar/title/__init__.py | 9 + .../plotly/graph_objs/cone/colorbar/title/_font.py | 334 + .../plotly/graph_objs/cone/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/cone/hoverlabel/_font.py | 587 + .../graph_objs/cone/legendgrouptitle/__init__.py | 9 + .../graph_objs/cone/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/contour/__init__.py | 31 + .../plotly/graph_objs/contour/_colorbar.py | 1722 ++ .../plotly/graph_objs/contour/_contours.py | 436 + .../plotly/graph_objs/contour/_hoverlabel.py | 338 + .../plotly/graph_objs/contour/_legendgrouptitle.py | 104 + .../plotly/graph_objs/contour/_line.py | 175 + .../plotly/graph_objs/contour/_stream.py | 114 + .../plotly/graph_objs/contour/_textfont.py | 335 + .../plotly/graph_objs/contour/colorbar/__init__.py | 16 + .../graph_objs/contour/colorbar/_tickfont.py | 334 + .../graph_objs/contour/colorbar/_tickformatstop.py | 241 + .../plotly/graph_objs/contour/colorbar/_title.py | 136 + .../graph_objs/contour/colorbar/title/__init__.py | 9 + .../graph_objs/contour/colorbar/title/_font.py | 334 + .../plotly/graph_objs/contour/contours/__init__.py | 11 + .../graph_objs/contour/contours/_labelfont.py | 336 + .../graph_objs/contour/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/contour/hoverlabel/_font.py | 587 + .../contour/legendgrouptitle/__init__.py | 9 + .../graph_objs/contour/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/contourcarpet/__init__.py | 26 + .../plotly/graph_objs/contourcarpet/_colorbar.py | 1722 ++ .../plotly/graph_objs/contourcarpet/_contours.py | 433 + .../graph_objs/contourcarpet/_legendgrouptitle.py | 104 + .../plotly/graph_objs/contourcarpet/_line.py | 176 + .../plotly/graph_objs/contourcarpet/_stream.py | 114 + .../graph_objs/contourcarpet/colorbar/__init__.py | 16 + .../graph_objs/contourcarpet/colorbar/_tickfont.py | 334 + .../contourcarpet/colorbar/_tickformatstop.py | 241 + .../graph_objs/contourcarpet/colorbar/_title.py | 136 + .../contourcarpet/colorbar/title/__init__.py | 9 + .../contourcarpet/colorbar/title/_font.py | 334 + .../graph_objs/contourcarpet/contours/__init__.py | 11 + .../contourcarpet/contours/_labelfont.py | 336 + .../contourcarpet/legendgrouptitle/__init__.py | 9 + .../contourcarpet/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/densitymap/__init__.py | 24 + .../plotly/graph_objs/densitymap/_colorbar.py | 1721 ++ .../plotly/graph_objs/densitymap/_hoverlabel.py | 338 + .../graph_objs/densitymap/_legendgrouptitle.py | 104 + .../plotly/graph_objs/densitymap/_stream.py | 114 + .../graph_objs/densitymap/colorbar/__init__.py | 16 + .../graph_objs/densitymap/colorbar/_tickfont.py | 334 + .../densitymap/colorbar/_tickformatstop.py | 241 + .../graph_objs/densitymap/colorbar/_title.py | 136 + .../densitymap/colorbar/title/__init__.py | 9 + .../graph_objs/densitymap/colorbar/title/_font.py | 334 + .../graph_objs/densitymap/hoverlabel/__init__.py | 9 + .../graph_objs/densitymap/hoverlabel/_font.py | 587 + .../densitymap/legendgrouptitle/__init__.py | 9 + .../densitymap/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/densitymapbox/__init__.py | 24 + .../plotly/graph_objs/densitymapbox/_colorbar.py | 1722 ++ .../plotly/graph_objs/densitymapbox/_hoverlabel.py | 338 + .../graph_objs/densitymapbox/_legendgrouptitle.py | 104 + .../plotly/graph_objs/densitymapbox/_stream.py | 114 + .../graph_objs/densitymapbox/colorbar/__init__.py | 16 + .../graph_objs/densitymapbox/colorbar/_tickfont.py | 334 + .../densitymapbox/colorbar/_tickformatstop.py | 241 + .../graph_objs/densitymapbox/colorbar/_title.py | 136 + .../densitymapbox/colorbar/title/__init__.py | 9 + .../densitymapbox/colorbar/title/_font.py | 334 + .../densitymapbox/hoverlabel/__init__.py | 9 + .../graph_objs/densitymapbox/hoverlabel/_font.py | 587 + .../densitymapbox/legendgrouptitle/__init__.py | 9 + .../densitymapbox/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/funnel/__init__.py | 33 + .../plotly/graph_objs/funnel/_connector.py | 130 + .../plotly/graph_objs/funnel/_hoverlabel.py | 338 + .../plotly/graph_objs/funnel/_insidetextfont.py | 587 + .../plotly/graph_objs/funnel/_legendgrouptitle.py | 104 + .../plotly/graph_objs/funnel/_marker.py | 621 + .../plotly/graph_objs/funnel/_outsidetextfont.py | 587 + .../plotly/graph_objs/funnel/_stream.py | 113 + .../plotly/graph_objs/funnel/_textfont.py | 587 + .../plotly/graph_objs/funnel/connector/__init__.py | 9 + .../plotly/graph_objs/funnel/connector/_line.py | 139 + .../graph_objs/funnel/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/funnel/hoverlabel/_font.py | 587 + .../graph_objs/funnel/legendgrouptitle/__init__.py | 9 + .../graph_objs/funnel/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/funnel/marker/__init__.py | 13 + .../plotly/graph_objs/funnel/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/funnel/marker/_line.py | 546 + .../graph_objs/funnel/marker/colorbar/__init__.py | 16 + .../graph_objs/funnel/marker/colorbar/_tickfont.py | 334 + .../funnel/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/funnel/marker/colorbar/_title.py | 136 + .../funnel/marker/colorbar/title/__init__.py | 9 + .../funnel/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/funnelarea/__init__.py | 33 + .../plotly/graph_objs/funnelarea/_domain.py | 170 + .../plotly/graph_objs/funnelarea/_hoverlabel.py | 338 + .../graph_objs/funnelarea/_insidetextfont.py | 587 + .../graph_objs/funnelarea/_legendgrouptitle.py | 104 + .../plotly/graph_objs/funnelarea/_marker.py | 161 + .../plotly/graph_objs/funnelarea/_stream.py | 114 + .../plotly/graph_objs/funnelarea/_textfont.py | 587 + .../plotly/graph_objs/funnelarea/_title.py | 131 + .../graph_objs/funnelarea/hoverlabel/__init__.py | 9 + .../graph_objs/funnelarea/hoverlabel/_font.py | 587 + .../funnelarea/legendgrouptitle/__init__.py | 9 + .../funnelarea/legendgrouptitle/_font.py | 334 + .../graph_objs/funnelarea/marker/__init__.py | 12 + .../plotly/graph_objs/funnelarea/marker/_line.py | 163 + .../graph_objs/funnelarea/marker/_pattern.py | 433 + .../plotly/graph_objs/funnelarea/title/__init__.py | 9 + .../plotly/graph_objs/funnelarea/title/_font.py | 587 + .../site-packages/plotly/graph_objs/graph_objs.py | 1 + .../plotly/graph_objs/heatmap/__init__.py | 26 + .../plotly/graph_objs/heatmap/_colorbar.py | 1722 ++ .../plotly/graph_objs/heatmap/_hoverlabel.py | 338 + .../plotly/graph_objs/heatmap/_legendgrouptitle.py | 104 + .../plotly/graph_objs/heatmap/_stream.py | 114 + .../plotly/graph_objs/heatmap/_textfont.py | 334 + .../plotly/graph_objs/heatmap/colorbar/__init__.py | 16 + .../graph_objs/heatmap/colorbar/_tickfont.py | 334 + .../graph_objs/heatmap/colorbar/_tickformatstop.py | 241 + .../plotly/graph_objs/heatmap/colorbar/_title.py | 136 + .../graph_objs/heatmap/colorbar/title/__init__.py | 9 + .../graph_objs/heatmap/colorbar/title/_font.py | 334 + .../graph_objs/heatmap/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/heatmap/hoverlabel/_font.py | 587 + .../heatmap/legendgrouptitle/__init__.py | 9 + .../graph_objs/heatmap/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/histogram/__init__.py | 46 + .../plotly/graph_objs/histogram/_cumulative.py | 173 + .../plotly/graph_objs/histogram/_error_x.py | 503 + .../plotly/graph_objs/histogram/_error_y.py | 480 + .../plotly/graph_objs/histogram/_hoverlabel.py | 338 + .../plotly/graph_objs/histogram/_insidetextfont.py | 334 + .../graph_objs/histogram/_legendgrouptitle.py | 104 + .../plotly/graph_objs/histogram/_marker.py | 686 + .../graph_objs/histogram/_outsidetextfont.py | 334 + .../plotly/graph_objs/histogram/_selected.py | 106 + .../plotly/graph_objs/histogram/_stream.py | 114 + .../plotly/graph_objs/histogram/_textfont.py | 334 + .../plotly/graph_objs/histogram/_unselected.py | 106 + .../plotly/graph_objs/histogram/_xbins.py | 210 + .../plotly/graph_objs/histogram/_ybins.py | 210 + .../graph_objs/histogram/hoverlabel/__init__.py | 9 + .../graph_objs/histogram/hoverlabel/_font.py | 587 + .../histogram/legendgrouptitle/__init__.py | 9 + .../graph_objs/histogram/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/histogram/marker/__init__.py | 16 + .../graph_objs/histogram/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/histogram/marker/_line.py | 546 + .../plotly/graph_objs/histogram/marker/_pattern.py | 433 + .../histogram/marker/colorbar/__init__.py | 16 + .../histogram/marker/colorbar/_tickfont.py | 334 + .../histogram/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/histogram/marker/colorbar/_title.py | 136 + .../histogram/marker/colorbar/title/__init__.py | 9 + .../histogram/marker/colorbar/title/_font.py | 334 + .../graph_objs/histogram/selected/__init__.py | 12 + .../graph_objs/histogram/selected/_marker.py | 104 + .../graph_objs/histogram/selected/_textfont.py | 81 + .../graph_objs/histogram/unselected/__init__.py | 12 + .../graph_objs/histogram/unselected/_marker.py | 110 + .../graph_objs/histogram/unselected/_textfont.py | 84 + .../plotly/graph_objs/histogram2d/__init__.py | 32 + .../plotly/graph_objs/histogram2d/_colorbar.py | 1722 ++ .../plotly/graph_objs/histogram2d/_hoverlabel.py | 338 + .../graph_objs/histogram2d/_legendgrouptitle.py | 104 + .../plotly/graph_objs/histogram2d/_marker.py | 102 + .../plotly/graph_objs/histogram2d/_stream.py | 114 + .../plotly/graph_objs/histogram2d/_textfont.py | 334 + .../plotly/graph_objs/histogram2d/_xbins.py | 187 + .../plotly/graph_objs/histogram2d/_ybins.py | 187 + .../graph_objs/histogram2d/colorbar/__init__.py | 16 + .../graph_objs/histogram2d/colorbar/_tickfont.py | 334 + .../histogram2d/colorbar/_tickformatstop.py | 241 + .../graph_objs/histogram2d/colorbar/_title.py | 136 + .../histogram2d/colorbar/title/__init__.py | 9 + .../graph_objs/histogram2d/colorbar/title/_font.py | 334 + .../graph_objs/histogram2d/hoverlabel/__init__.py | 9 + .../graph_objs/histogram2d/hoverlabel/_font.py | 587 + .../histogram2d/legendgrouptitle/__init__.py | 9 + .../histogram2d/legendgrouptitle/_font.py | 334 + .../graph_objs/histogram2dcontour/__init__.py | 37 + .../graph_objs/histogram2dcontour/_colorbar.py | 1722 ++ .../graph_objs/histogram2dcontour/_contours.py | 436 + .../graph_objs/histogram2dcontour/_hoverlabel.py | 338 + .../histogram2dcontour/_legendgrouptitle.py | 104 + .../plotly/graph_objs/histogram2dcontour/_line.py | 170 + .../graph_objs/histogram2dcontour/_marker.py | 102 + .../graph_objs/histogram2dcontour/_stream.py | 114 + .../graph_objs/histogram2dcontour/_textfont.py | 335 + .../plotly/graph_objs/histogram2dcontour/_xbins.py | 187 + .../plotly/graph_objs/histogram2dcontour/_ybins.py | 187 + .../histogram2dcontour/colorbar/__init__.py | 16 + .../histogram2dcontour/colorbar/_tickfont.py | 334 + .../histogram2dcontour/colorbar/_tickformatstop.py | 241 + .../histogram2dcontour/colorbar/_title.py | 136 + .../histogram2dcontour/colorbar/title/__init__.py | 9 + .../histogram2dcontour/colorbar/title/_font.py | 334 + .../histogram2dcontour/contours/__init__.py | 11 + .../histogram2dcontour/contours/_labelfont.py | 336 + .../histogram2dcontour/hoverlabel/__init__.py | 9 + .../histogram2dcontour/hoverlabel/_font.py | 587 + .../legendgrouptitle/__init__.py | 9 + .../histogram2dcontour/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/icicle/__init__.py | 41 + .../plotly/graph_objs/icicle/_domain.py | 169 + .../plotly/graph_objs/icicle/_hoverlabel.py | 338 + .../plotly/graph_objs/icicle/_insidetextfont.py | 587 + .../plotly/graph_objs/icicle/_leaf.py | 79 + .../plotly/graph_objs/icicle/_legendgrouptitle.py | 104 + .../plotly/graph_objs/icicle/_marker.py | 578 + .../plotly/graph_objs/icicle/_outsidetextfont.py | 591 + .../plotly/graph_objs/icicle/_pathbar.py | 198 + .../plotly/graph_objs/icicle/_root.py | 86 + .../plotly/graph_objs/icicle/_stream.py | 113 + .../plotly/graph_objs/icicle/_textfont.py | 587 + .../plotly/graph_objs/icicle/_tiling.py | 153 + .../graph_objs/icicle/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/icicle/hoverlabel/_font.py | 587 + .../graph_objs/icicle/legendgrouptitle/__init__.py | 9 + .../graph_objs/icicle/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/icicle/marker/__init__.py | 16 + .../plotly/graph_objs/icicle/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/icicle/marker/_line.py | 163 + .../plotly/graph_objs/icicle/marker/_pattern.py | 433 + .../graph_objs/icicle/marker/colorbar/__init__.py | 16 + .../graph_objs/icicle/marker/colorbar/_tickfont.py | 334 + .../icicle/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/icicle/marker/colorbar/_title.py | 136 + .../icicle/marker/colorbar/title/__init__.py | 9 + .../icicle/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/icicle/pathbar/__init__.py | 11 + .../plotly/graph_objs/icicle/pathbar/_textfont.py | 587 + .../plotly/graph_objs/image/__init__.py | 21 + .../plotly/graph_objs/image/_hoverlabel.py | 338 + .../plotly/graph_objs/image/_legendgrouptitle.py | 104 + .../plotly/graph_objs/image/_stream.py | 113 + .../plotly/graph_objs/image/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/image/hoverlabel/_font.py | 587 + .../graph_objs/image/legendgrouptitle/__init__.py | 9 + .../graph_objs/image/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/indicator/__init__.py | 32 + .../plotly/graph_objs/indicator/_delta.py | 309 + .../plotly/graph_objs/indicator/_domain.py | 170 + .../plotly/graph_objs/indicator/_gauge.py | 323 + .../graph_objs/indicator/_legendgrouptitle.py | 104 + .../plotly/graph_objs/indicator/_number.py | 163 + .../plotly/graph_objs/indicator/_stream.py | 114 + .../plotly/graph_objs/indicator/_title.py | 134 + .../plotly/graph_objs/indicator/delta/__init__.py | 15 + .../graph_objs/indicator/delta/_decreasing.py | 105 + .../plotly/graph_objs/indicator/delta/_font.py | 334 + .../graph_objs/indicator/delta/_increasing.py | 105 + .../plotly/graph_objs/indicator/gauge/__init__.py | 20 + .../plotly/graph_objs/indicator/gauge/_axis.py | 1108 + .../plotly/graph_objs/indicator/gauge/_bar.py | 135 + .../plotly/graph_objs/indicator/gauge/_step.py | 262 + .../graph_objs/indicator/gauge/_threshold.py | 129 + .../graph_objs/indicator/gauge/axis/__init__.py | 12 + .../graph_objs/indicator/gauge/axis/_tickfont.py | 334 + .../indicator/gauge/axis/_tickformatstop.py | 241 + .../graph_objs/indicator/gauge/bar/__init__.py | 9 + .../plotly/graph_objs/indicator/gauge/bar/_line.py | 106 + .../graph_objs/indicator/gauge/step/__init__.py | 9 + .../graph_objs/indicator/gauge/step/_line.py | 106 + .../indicator/gauge/threshold/__init__.py | 9 + .../graph_objs/indicator/gauge/threshold/_line.py | 104 + .../indicator/legendgrouptitle/__init__.py | 9 + .../graph_objs/indicator/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/indicator/number/__init__.py | 9 + .../plotly/graph_objs/indicator/number/_font.py | 334 + .../plotly/graph_objs/indicator/title/__init__.py | 9 + .../plotly/graph_objs/indicator/title/_font.py | 334 + .../plotly/graph_objs/isosurface/__init__.py | 40 + .../plotly/graph_objs/isosurface/_caps.py | 132 + .../plotly/graph_objs/isosurface/_colorbar.py | 1721 ++ .../plotly/graph_objs/isosurface/_contour.py | 127 + .../plotly/graph_objs/isosurface/_hoverlabel.py | 338 + .../graph_objs/isosurface/_legendgrouptitle.py | 104 + .../plotly/graph_objs/isosurface/_lighting.py | 260 + .../plotly/graph_objs/isosurface/_lightposition.py | 129 + .../plotly/graph_objs/isosurface/_slices.py | 132 + .../plotly/graph_objs/isosurface/_spaceframe.py | 122 + .../plotly/graph_objs/isosurface/_stream.py | 114 + .../plotly/graph_objs/isosurface/_surface.py | 193 + .../plotly/graph_objs/isosurface/caps/__init__.py | 13 + .../plotly/graph_objs/isosurface/caps/_x.py | 122 + .../plotly/graph_objs/isosurface/caps/_y.py | 122 + .../plotly/graph_objs/isosurface/caps/_z.py | 122 + .../graph_objs/isosurface/colorbar/__init__.py | 16 + .../graph_objs/isosurface/colorbar/_tickfont.py | 334 + .../isosurface/colorbar/_tickformatstop.py | 241 + .../graph_objs/isosurface/colorbar/_title.py | 136 + .../isosurface/colorbar/title/__init__.py | 9 + .../graph_objs/isosurface/colorbar/title/_font.py | 334 + .../graph_objs/isosurface/hoverlabel/__init__.py | 9 + .../graph_objs/isosurface/hoverlabel/_font.py | 587 + .../isosurface/legendgrouptitle/__init__.py | 9 + .../isosurface/legendgrouptitle/_font.py | 334 + .../graph_objs/isosurface/slices/__init__.py | 13 + .../plotly/graph_objs/isosurface/slices/_x.py | 177 + .../plotly/graph_objs/isosurface/slices/_y.py | 177 + .../plotly/graph_objs/isosurface/slices/_z.py | 177 + .../plotly/graph_objs/layout/__init__.py | 120 + .../plotly/graph_objs/layout/_activeselection.py | 104 + .../plotly/graph_objs/layout/_activeshape.py | 104 + .../plotly/graph_objs/layout/_annotation.py | 1714 ++ .../plotly/graph_objs/layout/_coloraxis.py | 396 + .../plotly/graph_objs/layout/_colorscale.py | 214 + .../plotly/graph_objs/layout/_font.py | 334 + .../site-packages/plotly/graph_objs/layout/_geo.py | 968 + .../plotly/graph_objs/layout/_grid.py | 511 + .../plotly/graph_objs/layout/_hoverlabel.py | 254 + .../plotly/graph_objs/layout/_image.py | 608 + .../plotly/graph_objs/layout/_legend.py | 916 + .../site-packages/plotly/graph_objs/layout/_map.py | 392 + .../plotly/graph_objs/layout/_mapbox.py | 452 + .../plotly/graph_objs/layout/_margin.py | 212 + .../plotly/graph_objs/layout/_modebar.py | 387 + .../plotly/graph_objs/layout/_newselection.py | 118 + .../plotly/graph_objs/layout/_newshape.py | 543 + .../plotly/graph_objs/layout/_polar.py | 382 + .../plotly/graph_objs/layout/_scene.py | 454 + .../plotly/graph_objs/layout/_selection.py | 493 + .../plotly/graph_objs/layout/_shape.py | 1287 + .../plotly/graph_objs/layout/_slider.py | 786 + .../plotly/graph_objs/layout/_smith.py | 166 + .../plotly/graph_objs/layout/_template.py | 133 + .../plotly/graph_objs/layout/_ternary.py | 250 + .../plotly/graph_objs/layout/_title.py | 450 + .../plotly/graph_objs/layout/_transition.py | 144 + .../plotly/graph_objs/layout/_uniformtext.py | 124 + .../plotly/graph_objs/layout/_updatemenu.py | 632 + .../plotly/graph_objs/layout/_xaxis.py | 3415 +++ .../plotly/graph_objs/layout/_yaxis.py | 3443 +++ .../graph_objs/layout/annotation/__init__.py | 13 + .../plotly/graph_objs/layout/annotation/_font.py | 334 + .../graph_objs/layout/annotation/_hoverlabel.py | 151 + .../layout/annotation/hoverlabel/__init__.py | 9 + .../layout/annotation/hoverlabel/_font.py | 335 + .../plotly/graph_objs/layout/coloraxis/__init__.py | 12 + .../graph_objs/layout/coloraxis/_colorbar.py | 1722 ++ .../layout/coloraxis/colorbar/__init__.py | 16 + .../layout/coloraxis/colorbar/_tickfont.py | 334 + .../layout/coloraxis/colorbar/_tickformatstop.py | 241 + .../graph_objs/layout/coloraxis/colorbar/_title.py | 136 + .../layout/coloraxis/colorbar/title/__init__.py | 9 + .../layout/coloraxis/colorbar/title/_font.py | 334 + .../plotly/graph_objs/layout/geo/__init__.py | 24 + .../plotly/graph_objs/layout/geo/_center.py | 115 + .../plotly/graph_objs/layout/geo/_domain.py | 204 + .../plotly/graph_objs/layout/geo/_lataxis.py | 258 + .../plotly/graph_objs/layout/geo/_lonaxis.py | 258 + .../plotly/graph_objs/layout/geo/_projection.py | 251 + .../graph_objs/layout/geo/projection/__init__.py | 11 + .../graph_objs/layout/geo/projection/_rotation.py | 129 + .../plotly/graph_objs/layout/grid/__init__.py | 9 + .../plotly/graph_objs/layout/grid/_domain.py | 122 + .../graph_objs/layout/hoverlabel/__init__.py | 12 + .../plotly/graph_objs/layout/hoverlabel/_font.py | 335 + .../layout/hoverlabel/_grouptitlefont.py | 335 + .../plotly/graph_objs/layout/legend/__init__.py | 16 + .../plotly/graph_objs/layout/legend/_font.py | 334 + .../graph_objs/layout/legend/_grouptitlefont.py | 335 + .../plotly/graph_objs/layout/legend/_title.py | 145 + .../graph_objs/layout/legend/title/__init__.py | 9 + .../plotly/graph_objs/layout/legend/title/_font.py | 335 + .../plotly/graph_objs/layout/map/__init__.py | 17 + .../plotly/graph_objs/layout/map/_bounds.py | 160 + .../plotly/graph_objs/layout/map/_center.py | 104 + .../plotly/graph_objs/layout/map/_domain.py | 170 + .../plotly/graph_objs/layout/map/_layer.py | 691 + .../plotly/graph_objs/layout/map/layer/__init__.py | 17 + .../plotly/graph_objs/layout/map/layer/_circle.py | 80 + .../plotly/graph_objs/layout/map/layer/_fill.py | 86 + .../plotly/graph_objs/layout/map/layer/_line.py | 133 + .../plotly/graph_objs/layout/map/layer/_symbol.py | 243 + .../graph_objs/layout/map/layer/symbol/__init__.py | 11 + .../layout/map/layer/symbol/_textfont.py | 202 + .../plotly/graph_objs/layout/mapbox/__init__.py | 17 + .../plotly/graph_objs/layout/mapbox/_bounds.py | 160 + .../plotly/graph_objs/layout/mapbox/_center.py | 104 + .../plotly/graph_objs/layout/mapbox/_domain.py | 170 + .../plotly/graph_objs/layout/mapbox/_layer.py | 695 + .../graph_objs/layout/mapbox/layer/__init__.py | 17 + .../graph_objs/layout/mapbox/layer/_circle.py | 82 + .../plotly/graph_objs/layout/mapbox/layer/_fill.py | 86 + .../plotly/graph_objs/layout/mapbox/layer/_line.py | 133 + .../graph_objs/layout/mapbox/layer/_symbol.py | 245 + .../layout/mapbox/layer/symbol/__init__.py | 11 + .../layout/mapbox/layer/symbol/_textfont.py | 202 + .../graph_objs/layout/newselection/__init__.py | 9 + .../plotly/graph_objs/layout/newselection/_line.py | 142 + .../plotly/graph_objs/layout/newshape/__init__.py | 17 + .../plotly/graph_objs/layout/newshape/_label.py | 397 + .../layout/newshape/_legendgrouptitle.py | 104 + .../plotly/graph_objs/layout/newshape/_line.py | 142 + .../graph_objs/layout/newshape/label/__init__.py | 9 + .../graph_objs/layout/newshape/label/_font.py | 334 + .../layout/newshape/legendgrouptitle/__init__.py | 9 + .../layout/newshape/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/layout/polar/__init__.py | 17 + .../plotly/graph_objs/layout/polar/_angularaxis.py | 1776 ++ .../plotly/graph_objs/layout/polar/_domain.py | 170 + .../plotly/graph_objs/layout/polar/_radialaxis.py | 2049 ++ .../layout/polar/angularaxis/__init__.py | 12 + .../layout/polar/angularaxis/_tickfont.py | 334 + .../layout/polar/angularaxis/_tickformatstop.py | 241 + .../graph_objs/layout/polar/radialaxis/__init__.py | 22 + .../layout/polar/radialaxis/_autorangeoptions.py | 216 + .../layout/polar/radialaxis/_tickfont.py | 334 + .../layout/polar/radialaxis/_tickformatstop.py | 241 + .../graph_objs/layout/polar/radialaxis/_title.py | 104 + .../layout/polar/radialaxis/title/__init__.py | 9 + .../layout/polar/radialaxis/title/_font.py | 334 + .../plotly/graph_objs/layout/scene/__init__.py | 32 + .../plotly/graph_objs/layout/scene/_annotation.py | 1243 + .../plotly/graph_objs/layout/scene/_aspectratio.py | 119 + .../plotly/graph_objs/layout/scene/_camera.py | 183 + .../plotly/graph_objs/layout/scene/_domain.py | 170 + .../plotly/graph_objs/layout/scene/_xaxis.py | 2111 ++ .../plotly/graph_objs/layout/scene/_yaxis.py | 2111 ++ .../plotly/graph_objs/layout/scene/_zaxis.py | 2111 ++ .../graph_objs/layout/scene/annotation/__init__.py | 13 + .../graph_objs/layout/scene/annotation/_font.py | 334 + .../layout/scene/annotation/_hoverlabel.py | 151 + .../layout/scene/annotation/hoverlabel/__init__.py | 9 + .../layout/scene/annotation/hoverlabel/_font.py | 335 + .../graph_objs/layout/scene/camera/__init__.py | 16 + .../graph_objs/layout/scene/camera/_center.py | 121 + .../plotly/graph_objs/layout/scene/camera/_eye.py | 121 + .../graph_objs/layout/scene/camera/_projection.py | 83 + .../plotly/graph_objs/layout/scene/camera/_up.py | 122 + .../graph_objs/layout/scene/xaxis/__init__.py | 22 + .../layout/scene/xaxis/_autorangeoptions.py | 216 + .../graph_objs/layout/scene/xaxis/_tickfont.py | 334 + .../layout/scene/xaxis/_tickformatstop.py | 241 + .../plotly/graph_objs/layout/scene/xaxis/_title.py | 104 + .../layout/scene/xaxis/title/__init__.py | 9 + .../graph_objs/layout/scene/xaxis/title/_font.py | 334 + .../graph_objs/layout/scene/yaxis/__init__.py | 22 + .../layout/scene/yaxis/_autorangeoptions.py | 216 + .../graph_objs/layout/scene/yaxis/_tickfont.py | 334 + .../layout/scene/yaxis/_tickformatstop.py | 241 + .../plotly/graph_objs/layout/scene/yaxis/_title.py | 104 + .../layout/scene/yaxis/title/__init__.py | 9 + .../graph_objs/layout/scene/yaxis/title/_font.py | 334 + .../graph_objs/layout/scene/zaxis/__init__.py | 22 + .../layout/scene/zaxis/_autorangeoptions.py | 216 + .../graph_objs/layout/scene/zaxis/_tickfont.py | 334 + .../layout/scene/zaxis/_tickformatstop.py | 241 + .../plotly/graph_objs/layout/scene/zaxis/_title.py | 104 + .../layout/scene/zaxis/title/__init__.py | 9 + .../graph_objs/layout/scene/zaxis/title/_font.py | 334 + .../plotly/graph_objs/layout/selection/__init__.py | 9 + .../plotly/graph_objs/layout/selection/_line.py | 139 + .../plotly/graph_objs/layout/shape/__init__.py | 17 + .../plotly/graph_objs/layout/shape/_label.py | 396 + .../graph_objs/layout/shape/_legendgrouptitle.py | 104 + .../plotly/graph_objs/layout/shape/_line.py | 139 + .../graph_objs/layout/shape/label/__init__.py | 9 + .../plotly/graph_objs/layout/shape/label/_font.py | 334 + .../layout/shape/legendgrouptitle/__init__.py | 9 + .../layout/shape/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/layout/slider/__init__.py | 24 + .../graph_objs/layout/slider/_currentvalue.py | 220 + .../plotly/graph_objs/layout/slider/_font.py | 334 + .../plotly/graph_objs/layout/slider/_pad.py | 159 + .../plotly/graph_objs/layout/slider/_step.py | 354 + .../plotly/graph_objs/layout/slider/_transition.py | 109 + .../layout/slider/currentvalue/__init__.py | 9 + .../graph_objs/layout/slider/currentvalue/_font.py | 334 + .../plotly/graph_objs/layout/smith/__init__.py | 17 + .../plotly/graph_objs/layout/smith/_domain.py | 170 + .../graph_objs/layout/smith/_imaginaryaxis.py | 865 + .../plotly/graph_objs/layout/smith/_realaxis.py | 922 + .../layout/smith/imaginaryaxis/__init__.py | 11 + .../layout/smith/imaginaryaxis/_tickfont.py | 334 + .../graph_objs/layout/smith/realaxis/__init__.py | 11 + .../graph_objs/layout/smith/realaxis/_tickfont.py | 334 + .../plotly/graph_objs/layout/template/__init__.py | 13 + .../plotly/graph_objs/layout/template/_data.py | 1435 ++ .../plotly/graph_objs/layout/template/_layout.py | 1 + .../graph_objs/layout/template/data/__init__.py | 111 + .../plotly/graph_objs/layout/template/data/_bar.py | 1 + .../graph_objs/layout/template/data/_barpolar.py | 1 + .../plotly/graph_objs/layout/template/data/_box.py | 1 + .../layout/template/data/_candlestick.py | 1 + .../graph_objs/layout/template/data/_carpet.py | 1 + .../graph_objs/layout/template/data/_choropleth.py | 1 + .../layout/template/data/_choroplethmap.py | 1 + .../layout/template/data/_choroplethmapbox.py | 1 + .../graph_objs/layout/template/data/_cone.py | 1 + .../graph_objs/layout/template/data/_contour.py | 1 + .../layout/template/data/_contourcarpet.py | 1 + .../graph_objs/layout/template/data/_densitymap.py | 1 + .../layout/template/data/_densitymapbox.py | 1 + .../graph_objs/layout/template/data/_funnel.py | 1 + .../graph_objs/layout/template/data/_funnelarea.py | 1 + .../graph_objs/layout/template/data/_heatmap.py | 1 + .../graph_objs/layout/template/data/_histogram.py | 1 + .../layout/template/data/_histogram2d.py | 1 + .../layout/template/data/_histogram2dcontour.py | 1 + .../graph_objs/layout/template/data/_icicle.py | 1 + .../graph_objs/layout/template/data/_image.py | 1 + .../graph_objs/layout/template/data/_indicator.py | 1 + .../graph_objs/layout/template/data/_isosurface.py | 1 + .../graph_objs/layout/template/data/_mesh3d.py | 1 + .../graph_objs/layout/template/data/_ohlc.py | 1 + .../graph_objs/layout/template/data/_parcats.py | 1 + .../graph_objs/layout/template/data/_parcoords.py | 1 + .../plotly/graph_objs/layout/template/data/_pie.py | 1 + .../graph_objs/layout/template/data/_sankey.py | 1 + .../graph_objs/layout/template/data/_scatter.py | 1 + .../graph_objs/layout/template/data/_scatter3d.py | 1 + .../layout/template/data/_scattercarpet.py | 1 + .../graph_objs/layout/template/data/_scattergeo.py | 1 + .../graph_objs/layout/template/data/_scattergl.py | 1 + .../graph_objs/layout/template/data/_scattermap.py | 1 + .../layout/template/data/_scattermapbox.py | 1 + .../layout/template/data/_scatterpolar.py | 1 + .../layout/template/data/_scatterpolargl.py | 1 + .../layout/template/data/_scattersmith.py | 1 + .../layout/template/data/_scatterternary.py | 1 + .../graph_objs/layout/template/data/_splom.py | 1 + .../graph_objs/layout/template/data/_streamtube.py | 1 + .../graph_objs/layout/template/data/_sunburst.py | 1 + .../graph_objs/layout/template/data/_surface.py | 1 + .../graph_objs/layout/template/data/_table.py | 1 + .../graph_objs/layout/template/data/_treemap.py | 1 + .../graph_objs/layout/template/data/_violin.py | 1 + .../graph_objs/layout/template/data/_volume.py | 1 + .../graph_objs/layout/template/data/_waterfall.py | 1 + .../plotly/graph_objs/layout/ternary/__init__.py | 19 + .../plotly/graph_objs/layout/ternary/_aaxis.py | 1474 ++ .../plotly/graph_objs/layout/ternary/_baxis.py | 1474 ++ .../plotly/graph_objs/layout/ternary/_caxis.py | 1474 ++ .../plotly/graph_objs/layout/ternary/_domain.py | 170 + .../graph_objs/layout/ternary/aaxis/__init__.py | 16 + .../graph_objs/layout/ternary/aaxis/_tickfont.py | 334 + .../layout/ternary/aaxis/_tickformatstop.py | 241 + .../graph_objs/layout/ternary/aaxis/_title.py | 104 + .../layout/ternary/aaxis/title/__init__.py | 9 + .../graph_objs/layout/ternary/aaxis/title/_font.py | 334 + .../graph_objs/layout/ternary/baxis/__init__.py | 16 + .../graph_objs/layout/ternary/baxis/_tickfont.py | 334 + .../layout/ternary/baxis/_tickformatstop.py | 241 + .../graph_objs/layout/ternary/baxis/_title.py | 104 + .../layout/ternary/baxis/title/__init__.py | 9 + .../graph_objs/layout/ternary/baxis/title/_font.py | 334 + .../graph_objs/layout/ternary/caxis/__init__.py | 16 + .../graph_objs/layout/ternary/caxis/_tickfont.py | 334 + .../layout/ternary/caxis/_tickformatstop.py | 241 + .../graph_objs/layout/ternary/caxis/_title.py | 104 + .../layout/ternary/caxis/title/__init__.py | 9 + .../graph_objs/layout/ternary/caxis/title/_font.py | 334 + .../plotly/graph_objs/layout/title/__init__.py | 14 + .../plotly/graph_objs/layout/title/_font.py | 334 + .../plotly/graph_objs/layout/title/_pad.py | 164 + .../plotly/graph_objs/layout/title/_subtitle.py | 104 + .../graph_objs/layout/title/subtitle/__init__.py | 9 + .../graph_objs/layout/title/subtitle/_font.py | 334 + .../graph_objs/layout/updatemenu/__init__.py | 13 + .../plotly/graph_objs/layout/updatemenu/_button.py | 359 + .../plotly/graph_objs/layout/updatemenu/_font.py | 334 + .../plotly/graph_objs/layout/updatemenu/_pad.py | 159 + .../plotly/graph_objs/layout/xaxis/__init__.py | 32 + .../graph_objs/layout/xaxis/_autorangeoptions.py | 216 + .../plotly/graph_objs/layout/xaxis/_minor.py | 566 + .../plotly/graph_objs/layout/xaxis/_rangebreak.py | 330 + .../graph_objs/layout/xaxis/_rangeselector.py | 427 + .../plotly/graph_objs/layout/xaxis/_rangeslider.py | 311 + .../plotly/graph_objs/layout/xaxis/_tickfont.py | 334 + .../graph_objs/layout/xaxis/_tickformatstop.py | 241 + .../plotly/graph_objs/layout/xaxis/_title.py | 150 + .../layout/xaxis/rangeselector/__init__.py | 12 + .../layout/xaxis/rangeselector/_button.py | 318 + .../graph_objs/layout/xaxis/rangeselector/_font.py | 334 + .../layout/xaxis/rangeslider/__init__.py | 9 + .../graph_objs/layout/xaxis/rangeslider/_yaxis.py | 118 + .../graph_objs/layout/xaxis/title/__init__.py | 9 + .../plotly/graph_objs/layout/xaxis/title/_font.py | 334 + .../plotly/graph_objs/layout/yaxis/__init__.py | 26 + .../graph_objs/layout/yaxis/_autorangeoptions.py | 216 + .../plotly/graph_objs/layout/yaxis/_minor.py | 566 + .../plotly/graph_objs/layout/yaxis/_rangebreak.py | 330 + .../plotly/graph_objs/layout/yaxis/_tickfont.py | 334 + .../graph_objs/layout/yaxis/_tickformatstop.py | 241 + .../plotly/graph_objs/layout/yaxis/_title.py | 150 + .../graph_objs/layout/yaxis/title/__init__.py | 9 + .../plotly/graph_objs/layout/yaxis/title/_font.py | 334 + .../plotly/graph_objs/mesh3d/__init__.py | 30 + .../plotly/graph_objs/mesh3d/_colorbar.py | 1722 ++ .../plotly/graph_objs/mesh3d/_contour.py | 127 + .../plotly/graph_objs/mesh3d/_hoverlabel.py | 338 + .../plotly/graph_objs/mesh3d/_legendgrouptitle.py | 104 + .../plotly/graph_objs/mesh3d/_lighting.py | 260 + .../plotly/graph_objs/mesh3d/_lightposition.py | 129 + .../plotly/graph_objs/mesh3d/_stream.py | 113 + .../plotly/graph_objs/mesh3d/colorbar/__init__.py | 16 + .../plotly/graph_objs/mesh3d/colorbar/_tickfont.py | 334 + .../graph_objs/mesh3d/colorbar/_tickformatstop.py | 241 + .../plotly/graph_objs/mesh3d/colorbar/_title.py | 136 + .../graph_objs/mesh3d/colorbar/title/__init__.py | 9 + .../graph_objs/mesh3d/colorbar/title/_font.py | 334 + .../graph_objs/mesh3d/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/mesh3d/hoverlabel/_font.py | 587 + .../graph_objs/mesh3d/legendgrouptitle/__init__.py | 9 + .../graph_objs/mesh3d/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/ohlc/__init__.py | 29 + .../plotly/graph_objs/ohlc/_decreasing.py | 80 + .../plotly/graph_objs/ohlc/_hoverlabel.py | 366 + .../plotly/graph_objs/ohlc/_increasing.py | 80 + .../plotly/graph_objs/ohlc/_legendgrouptitle.py | 104 + .../site-packages/plotly/graph_objs/ohlc/_line.py | 123 + .../plotly/graph_objs/ohlc/_stream.py | 113 + .../plotly/graph_objs/ohlc/decreasing/__init__.py | 9 + .../plotly/graph_objs/ohlc/decreasing/_line.py | 139 + .../plotly/graph_objs/ohlc/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/ohlc/hoverlabel/_font.py | 587 + .../plotly/graph_objs/ohlc/increasing/__init__.py | 9 + .../plotly/graph_objs/ohlc/increasing/_line.py | 139 + .../graph_objs/ohlc/legendgrouptitle/__init__.py | 9 + .../graph_objs/ohlc/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/parcats/__init__.py | 29 + .../plotly/graph_objs/parcats/_dimension.py | 383 + .../plotly/graph_objs/parcats/_domain.py | 170 + .../plotly/graph_objs/parcats/_labelfont.py | 334 + .../plotly/graph_objs/parcats/_legendgrouptitle.py | 104 + .../plotly/graph_objs/parcats/_line.py | 680 + .../plotly/graph_objs/parcats/_stream.py | 114 + .../plotly/graph_objs/parcats/_tickfont.py | 334 + .../parcats/legendgrouptitle/__init__.py | 9 + .../graph_objs/parcats/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/parcats/line/__init__.py | 12 + .../plotly/graph_objs/parcats/line/_colorbar.py | 1722 ++ .../graph_objs/parcats/line/colorbar/__init__.py | 16 + .../graph_objs/parcats/line/colorbar/_tickfont.py | 334 + .../parcats/line/colorbar/_tickformatstop.py | 241 + .../graph_objs/parcats/line/colorbar/_title.py | 136 + .../parcats/line/colorbar/title/__init__.py | 9 + .../parcats/line/colorbar/title/_font.py | 334 + .../plotly/graph_objs/parcoords/__init__.py | 34 + .../plotly/graph_objs/parcoords/_dimension.py | 546 + .../plotly/graph_objs/parcoords/_domain.py | 170 + .../plotly/graph_objs/parcoords/_labelfont.py | 334 + .../graph_objs/parcoords/_legendgrouptitle.py | 104 + .../plotly/graph_objs/parcoords/_line.py | 540 + .../plotly/graph_objs/parcoords/_rangefont.py | 334 + .../plotly/graph_objs/parcoords/_stream.py | 114 + .../plotly/graph_objs/parcoords/_tickfont.py | 334 + .../plotly/graph_objs/parcoords/_unselected.py | 80 + .../parcoords/legendgrouptitle/__init__.py | 9 + .../graph_objs/parcoords/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/parcoords/line/__init__.py | 12 + .../plotly/graph_objs/parcoords/line/_colorbar.py | 1722 ++ .../graph_objs/parcoords/line/colorbar/__init__.py | 16 + .../parcoords/line/colorbar/_tickfont.py | 334 + .../parcoords/line/colorbar/_tickformatstop.py | 241 + .../graph_objs/parcoords/line/colorbar/_title.py | 136 + .../parcoords/line/colorbar/title/__init__.py | 9 + .../parcoords/line/colorbar/title/_font.py | 334 + .../graph_objs/parcoords/unselected/__init__.py | 9 + .../graph_objs/parcoords/unselected/_line.py | 115 + .../plotly/graph_objs/pie/__init__.py | 35 + .../site-packages/plotly/graph_objs/pie/_domain.py | 168 + .../plotly/graph_objs/pie/_hoverlabel.py | 338 + .../plotly/graph_objs/pie/_insidetextfont.py | 587 + .../plotly/graph_objs/pie/_legendgrouptitle.py | 104 + .../site-packages/plotly/graph_objs/pie/_marker.py | 160 + .../plotly/graph_objs/pie/_outsidetextfont.py | 587 + .../site-packages/plotly/graph_objs/pie/_stream.py | 113 + .../plotly/graph_objs/pie/_textfont.py | 586 + .../site-packages/plotly/graph_objs/pie/_title.py | 131 + .../plotly/graph_objs/pie/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/pie/hoverlabel/_font.py | 587 + .../graph_objs/pie/legendgrouptitle/__init__.py | 9 + .../graph_objs/pie/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/pie/marker/__init__.py | 12 + .../plotly/graph_objs/pie/marker/_line.py | 160 + .../plotly/graph_objs/pie/marker/_pattern.py | 433 + .../plotly/graph_objs/pie/title/__init__.py | 9 + .../plotly/graph_objs/pie/title/_font.py | 587 + .../plotly/graph_objs/sankey/__init__.py | 31 + .../plotly/graph_objs/sankey/_domain.py | 169 + .../plotly/graph_objs/sankey/_hoverlabel.py | 338 + .../plotly/graph_objs/sankey/_legendgrouptitle.py | 104 + .../plotly/graph_objs/sankey/_link.py | 784 + .../plotly/graph_objs/sankey/_node.py | 682 + .../plotly/graph_objs/sankey/_stream.py | 113 + .../plotly/graph_objs/sankey/_textfont.py | 334 + .../graph_objs/sankey/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/sankey/hoverlabel/_font.py | 587 + .../graph_objs/sankey/legendgrouptitle/__init__.py | 9 + .../graph_objs/sankey/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/sankey/link/__init__.py | 16 + .../plotly/graph_objs/sankey/link/_colorscale.py | 304 + .../plotly/graph_objs/sankey/link/_hoverlabel.py | 338 + .../plotly/graph_objs/sankey/link/_line.py | 160 + .../graph_objs/sankey/link/hoverlabel/__init__.py | 9 + .../graph_objs/sankey/link/hoverlabel/_font.py | 587 + .../plotly/graph_objs/sankey/node/__init__.py | 13 + .../plotly/graph_objs/sankey/node/_hoverlabel.py | 338 + .../plotly/graph_objs/sankey/node/_line.py | 160 + .../graph_objs/sankey/node/hoverlabel/__init__.py | 9 + .../graph_objs/sankey/node/hoverlabel/_font.py | 587 + .../plotly/graph_objs/scatter/__init__.py | 42 + .../plotly/graph_objs/scatter/_error_x.py | 503 + .../plotly/graph_objs/scatter/_error_y.py | 480 + .../plotly/graph_objs/scatter/_fillgradient.py | 227 + .../plotly/graph_objs/scatter/_fillpattern.py | 433 + .../plotly/graph_objs/scatter/_hoverlabel.py | 338 + .../plotly/graph_objs/scatter/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scatter/_line.py | 310 + .../plotly/graph_objs/scatter/_marker.py | 1130 + .../plotly/graph_objs/scatter/_selected.py | 106 + .../plotly/graph_objs/scatter/_stream.py | 114 + .../plotly/graph_objs/scatter/_textfont.py | 587 + .../plotly/graph_objs/scatter/_unselected.py | 106 + .../graph_objs/scatter/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/scatter/hoverlabel/_font.py | 587 + .../scatter/legendgrouptitle/__init__.py | 9 + .../graph_objs/scatter/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/scatter/marker/__init__.py | 16 + .../plotly/graph_objs/scatter/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/scatter/marker/_gradient.py | 164 + .../plotly/graph_objs/scatter/marker/_line.py | 546 + .../graph_objs/scatter/marker/colorbar/__init__.py | 16 + .../scatter/marker/colorbar/_tickfont.py | 334 + .../scatter/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/scatter/marker/colorbar/_title.py | 136 + .../scatter/marker/colorbar/title/__init__.py | 9 + .../scatter/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/scatter/selected/__init__.py | 12 + .../plotly/graph_objs/scatter/selected/_marker.py | 127 + .../graph_objs/scatter/selected/_textfont.py | 81 + .../graph_objs/scatter/unselected/__init__.py | 12 + .../graph_objs/scatter/unselected/_marker.py | 136 + .../graph_objs/scatter/unselected/_textfont.py | 84 + .../plotly/graph_objs/scatter3d/__init__.py | 38 + .../plotly/graph_objs/scatter3d/_error_x.py | 503 + .../plotly/graph_objs/scatter3d/_error_y.py | 503 + .../plotly/graph_objs/scatter3d/_error_z.py | 480 + .../plotly/graph_objs/scatter3d/_hoverlabel.py | 338 + .../graph_objs/scatter3d/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scatter3d/_line.py | 592 + .../plotly/graph_objs/scatter3d/_marker.py | 810 + .../plotly/graph_objs/scatter3d/_projection.py | 132 + .../plotly/graph_objs/scatter3d/_stream.py | 114 + .../plotly/graph_objs/scatter3d/_textfont.py | 400 + .../graph_objs/scatter3d/hoverlabel/__init__.py | 9 + .../graph_objs/scatter3d/hoverlabel/_font.py | 587 + .../scatter3d/legendgrouptitle/__init__.py | 9 + .../graph_objs/scatter3d/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/scatter3d/line/__init__.py | 12 + .../plotly/graph_objs/scatter3d/line/_colorbar.py | 1722 ++ .../graph_objs/scatter3d/line/colorbar/__init__.py | 16 + .../scatter3d/line/colorbar/_tickfont.py | 334 + .../scatter3d/line/colorbar/_tickformatstop.py | 241 + .../graph_objs/scatter3d/line/colorbar/_title.py | 136 + .../scatter3d/line/colorbar/title/__init__.py | 9 + .../scatter3d/line/colorbar/title/_font.py | 334 + .../plotly/graph_objs/scatter3d/marker/__init__.py | 13 + .../graph_objs/scatter3d/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/scatter3d/marker/_line.py | 518 + .../scatter3d/marker/colorbar/__init__.py | 16 + .../scatter3d/marker/colorbar/_tickfont.py | 334 + .../scatter3d/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/scatter3d/marker/colorbar/_title.py | 136 + .../scatter3d/marker/colorbar/title/__init__.py | 9 + .../scatter3d/marker/colorbar/title/_font.py | 334 + .../graph_objs/scatter3d/projection/__init__.py | 13 + .../plotly/graph_objs/scatter3d/projection/_x.py | 128 + .../plotly/graph_objs/scatter3d/projection/_y.py | 128 + .../plotly/graph_objs/scatter3d/projection/_z.py | 128 + .../plotly/graph_objs/scattercarpet/__init__.py | 34 + .../plotly/graph_objs/scattercarpet/_hoverlabel.py | 338 + .../graph_objs/scattercarpet/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scattercarpet/_line.py | 277 + .../plotly/graph_objs/scattercarpet/_marker.py | 1130 + .../plotly/graph_objs/scattercarpet/_selected.py | 106 + .../plotly/graph_objs/scattercarpet/_stream.py | 114 + .../plotly/graph_objs/scattercarpet/_textfont.py | 587 + .../plotly/graph_objs/scattercarpet/_unselected.py | 106 + .../scattercarpet/hoverlabel/__init__.py | 9 + .../graph_objs/scattercarpet/hoverlabel/_font.py | 587 + .../scattercarpet/legendgrouptitle/__init__.py | 9 + .../scattercarpet/legendgrouptitle/_font.py | 334 + .../graph_objs/scattercarpet/marker/__init__.py | 16 + .../graph_objs/scattercarpet/marker/_colorbar.py | 1722 ++ .../graph_objs/scattercarpet/marker/_gradient.py | 164 + .../graph_objs/scattercarpet/marker/_line.py | 546 + .../scattercarpet/marker/colorbar/__init__.py | 16 + .../scattercarpet/marker/colorbar/_tickfont.py | 334 + .../marker/colorbar/_tickformatstop.py | 241 + .../scattercarpet/marker/colorbar/_title.py | 136 + .../marker/colorbar/title/__init__.py | 9 + .../scattercarpet/marker/colorbar/title/_font.py | 334 + .../graph_objs/scattercarpet/selected/__init__.py | 12 + .../graph_objs/scattercarpet/selected/_marker.py | 127 + .../graph_objs/scattercarpet/selected/_textfont.py | 81 + .../scattercarpet/unselected/__init__.py | 12 + .../graph_objs/scattercarpet/unselected/_marker.py | 136 + .../scattercarpet/unselected/_textfont.py | 84 + .../plotly/graph_objs/scattergeo/__init__.py | 34 + .../plotly/graph_objs/scattergeo/_hoverlabel.py | 338 + .../graph_objs/scattergeo/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scattergeo/_line.py | 139 + .../plotly/graph_objs/scattergeo/_marker.py | 1106 + .../plotly/graph_objs/scattergeo/_selected.py | 106 + .../plotly/graph_objs/scattergeo/_stream.py | 114 + .../plotly/graph_objs/scattergeo/_textfont.py | 587 + .../plotly/graph_objs/scattergeo/_unselected.py | 106 + .../graph_objs/scattergeo/hoverlabel/__init__.py | 9 + .../graph_objs/scattergeo/hoverlabel/_font.py | 587 + .../scattergeo/legendgrouptitle/__init__.py | 9 + .../scattergeo/legendgrouptitle/_font.py | 334 + .../graph_objs/scattergeo/marker/__init__.py | 16 + .../graph_objs/scattergeo/marker/_colorbar.py | 1722 ++ .../graph_objs/scattergeo/marker/_gradient.py | 164 + .../plotly/graph_objs/scattergeo/marker/_line.py | 546 + .../scattergeo/marker/colorbar/__init__.py | 16 + .../scattergeo/marker/colorbar/_tickfont.py | 334 + .../scattergeo/marker/colorbar/_tickformatstop.py | 241 + .../scattergeo/marker/colorbar/_title.py | 136 + .../scattergeo/marker/colorbar/title/__init__.py | 9 + .../scattergeo/marker/colorbar/title/_font.py | 334 + .../graph_objs/scattergeo/selected/__init__.py | 12 + .../graph_objs/scattergeo/selected/_marker.py | 127 + .../graph_objs/scattergeo/selected/_textfont.py | 81 + .../graph_objs/scattergeo/unselected/__init__.py | 12 + .../graph_objs/scattergeo/unselected/_marker.py | 136 + .../graph_objs/scattergeo/unselected/_textfont.py | 84 + .../plotly/graph_objs/scattergl/__init__.py | 38 + .../plotly/graph_objs/scattergl/_error_x.py | 503 + .../plotly/graph_objs/scattergl/_error_y.py | 480 + .../plotly/graph_objs/scattergl/_hoverlabel.py | 338 + .../graph_objs/scattergl/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scattergl/_line.py | 158 + .../plotly/graph_objs/scattergl/_marker.py | 978 + .../plotly/graph_objs/scattergl/_selected.py | 106 + .../plotly/graph_objs/scattergl/_stream.py | 114 + .../plotly/graph_objs/scattergl/_textfont.py | 399 + .../plotly/graph_objs/scattergl/_unselected.py | 106 + .../graph_objs/scattergl/hoverlabel/__init__.py | 9 + .../graph_objs/scattergl/hoverlabel/_font.py | 587 + .../scattergl/legendgrouptitle/__init__.py | 9 + .../graph_objs/scattergl/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/scattergl/marker/__init__.py | 13 + .../graph_objs/scattergl/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/scattergl/marker/_line.py | 546 + .../scattergl/marker/colorbar/__init__.py | 16 + .../scattergl/marker/colorbar/_tickfont.py | 334 + .../scattergl/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/scattergl/marker/colorbar/_title.py | 136 + .../scattergl/marker/colorbar/title/__init__.py | 9 + .../scattergl/marker/colorbar/title/_font.py | 334 + .../graph_objs/scattergl/selected/__init__.py | 12 + .../graph_objs/scattergl/selected/_marker.py | 127 + .../graph_objs/scattergl/selected/_textfont.py | 81 + .../graph_objs/scattergl/unselected/__init__.py | 12 + .../graph_objs/scattergl/unselected/_marker.py | 136 + .../graph_objs/scattergl/unselected/_textfont.py | 84 + .../plotly/graph_objs/scattermap/__init__.py | 36 + .../plotly/graph_objs/scattermap/_cluster.py | 342 + .../plotly/graph_objs/scattermap/_hoverlabel.py | 338 + .../graph_objs/scattermap/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scattermap/_line.py | 104 + .../plotly/graph_objs/scattermap/_marker.py | 892 + .../plotly/graph_objs/scattermap/_selected.py | 80 + .../plotly/graph_objs/scattermap/_stream.py | 114 + .../plotly/graph_objs/scattermap/_textfont.py | 202 + .../plotly/graph_objs/scattermap/_unselected.py | 80 + .../graph_objs/scattermap/hoverlabel/__init__.py | 9 + .../graph_objs/scattermap/hoverlabel/_font.py | 587 + .../scattermap/legendgrouptitle/__init__.py | 9 + .../scattermap/legendgrouptitle/_font.py | 334 + .../graph_objs/scattermap/marker/__init__.py | 12 + .../graph_objs/scattermap/marker/_colorbar.py | 1722 ++ .../scattermap/marker/colorbar/__init__.py | 16 + .../scattermap/marker/colorbar/_tickfont.py | 334 + .../scattermap/marker/colorbar/_tickformatstop.py | 241 + .../scattermap/marker/colorbar/_title.py | 136 + .../scattermap/marker/colorbar/title/__init__.py | 9 + .../scattermap/marker/colorbar/title/_font.py | 334 + .../graph_objs/scattermap/selected/__init__.py | 9 + .../graph_objs/scattermap/selected/_marker.py | 127 + .../graph_objs/scattermap/unselected/__init__.py | 9 + .../graph_objs/scattermap/unselected/_marker.py | 136 + .../plotly/graph_objs/scattermapbox/__init__.py | 36 + .../plotly/graph_objs/scattermapbox/_cluster.py | 342 + .../plotly/graph_objs/scattermapbox/_hoverlabel.py | 338 + .../graph_objs/scattermapbox/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scattermapbox/_line.py | 104 + .../plotly/graph_objs/scattermapbox/_marker.py | 892 + .../plotly/graph_objs/scattermapbox/_selected.py | 80 + .../plotly/graph_objs/scattermapbox/_stream.py | 114 + .../plotly/graph_objs/scattermapbox/_textfont.py | 202 + .../plotly/graph_objs/scattermapbox/_unselected.py | 80 + .../scattermapbox/hoverlabel/__init__.py | 9 + .../graph_objs/scattermapbox/hoverlabel/_font.py | 587 + .../scattermapbox/legendgrouptitle/__init__.py | 9 + .../scattermapbox/legendgrouptitle/_font.py | 334 + .../graph_objs/scattermapbox/marker/__init__.py | 12 + .../graph_objs/scattermapbox/marker/_colorbar.py | 1722 ++ .../scattermapbox/marker/colorbar/__init__.py | 16 + .../scattermapbox/marker/colorbar/_tickfont.py | 334 + .../marker/colorbar/_tickformatstop.py | 241 + .../scattermapbox/marker/colorbar/_title.py | 136 + .../marker/colorbar/title/__init__.py | 9 + .../scattermapbox/marker/colorbar/title/_font.py | 334 + .../graph_objs/scattermapbox/selected/__init__.py | 9 + .../graph_objs/scattermapbox/selected/_marker.py | 127 + .../scattermapbox/unselected/__init__.py | 9 + .../graph_objs/scattermapbox/unselected/_marker.py | 136 + .../plotly/graph_objs/scatterpolar/__init__.py | 34 + .../plotly/graph_objs/scatterpolar/_hoverlabel.py | 338 + .../graph_objs/scatterpolar/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scatterpolar/_line.py | 277 + .../plotly/graph_objs/scatterpolar/_marker.py | 1130 + .../plotly/graph_objs/scatterpolar/_selected.py | 106 + .../plotly/graph_objs/scatterpolar/_stream.py | 114 + .../plotly/graph_objs/scatterpolar/_textfont.py | 587 + .../plotly/graph_objs/scatterpolar/_unselected.py | 106 + .../graph_objs/scatterpolar/hoverlabel/__init__.py | 9 + .../graph_objs/scatterpolar/hoverlabel/_font.py | 587 + .../scatterpolar/legendgrouptitle/__init__.py | 9 + .../scatterpolar/legendgrouptitle/_font.py | 334 + .../graph_objs/scatterpolar/marker/__init__.py | 16 + .../graph_objs/scatterpolar/marker/_colorbar.py | 1722 ++ .../graph_objs/scatterpolar/marker/_gradient.py | 164 + .../plotly/graph_objs/scatterpolar/marker/_line.py | 546 + .../scatterpolar/marker/colorbar/__init__.py | 16 + .../scatterpolar/marker/colorbar/_tickfont.py | 334 + .../marker/colorbar/_tickformatstop.py | 241 + .../scatterpolar/marker/colorbar/_title.py | 136 + .../scatterpolar/marker/colorbar/title/__init__.py | 9 + .../scatterpolar/marker/colorbar/title/_font.py | 334 + .../graph_objs/scatterpolar/selected/__init__.py | 12 + .../graph_objs/scatterpolar/selected/_marker.py | 127 + .../graph_objs/scatterpolar/selected/_textfont.py | 81 + .../graph_objs/scatterpolar/unselected/__init__.py | 12 + .../graph_objs/scatterpolar/unselected/_marker.py | 136 + .../scatterpolar/unselected/_textfont.py | 84 + .../plotly/graph_objs/scatterpolargl/__init__.py | 34 + .../graph_objs/scatterpolargl/_hoverlabel.py | 338 + .../graph_objs/scatterpolargl/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scatterpolargl/_line.py | 129 + .../plotly/graph_objs/scatterpolargl/_marker.py | 978 + .../plotly/graph_objs/scatterpolargl/_selected.py | 106 + .../plotly/graph_objs/scatterpolargl/_stream.py | 114 + .../plotly/graph_objs/scatterpolargl/_textfont.py | 399 + .../graph_objs/scatterpolargl/_unselected.py | 106 + .../scatterpolargl/hoverlabel/__init__.py | 9 + .../graph_objs/scatterpolargl/hoverlabel/_font.py | 587 + .../scatterpolargl/legendgrouptitle/__init__.py | 9 + .../scatterpolargl/legendgrouptitle/_font.py | 334 + .../graph_objs/scatterpolargl/marker/__init__.py | 13 + .../graph_objs/scatterpolargl/marker/_colorbar.py | 1722 ++ .../graph_objs/scatterpolargl/marker/_line.py | 546 + .../scatterpolargl/marker/colorbar/__init__.py | 16 + .../scatterpolargl/marker/colorbar/_tickfont.py | 334 + .../marker/colorbar/_tickformatstop.py | 241 + .../scatterpolargl/marker/colorbar/_title.py | 136 + .../marker/colorbar/title/__init__.py | 9 + .../scatterpolargl/marker/colorbar/title/_font.py | 334 + .../graph_objs/scatterpolargl/selected/__init__.py | 12 + .../graph_objs/scatterpolargl/selected/_marker.py | 127 + .../scatterpolargl/selected/_textfont.py | 81 + .../scatterpolargl/unselected/__init__.py | 12 + .../scatterpolargl/unselected/_marker.py | 136 + .../scatterpolargl/unselected/_textfont.py | 84 + .../plotly/graph_objs/scattersmith/__init__.py | 34 + .../plotly/graph_objs/scattersmith/_hoverlabel.py | 338 + .../graph_objs/scattersmith/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scattersmith/_line.py | 277 + .../plotly/graph_objs/scattersmith/_marker.py | 1130 + .../plotly/graph_objs/scattersmith/_selected.py | 106 + .../plotly/graph_objs/scattersmith/_stream.py | 114 + .../plotly/graph_objs/scattersmith/_textfont.py | 587 + .../plotly/graph_objs/scattersmith/_unselected.py | 106 + .../graph_objs/scattersmith/hoverlabel/__init__.py | 9 + .../graph_objs/scattersmith/hoverlabel/_font.py | 587 + .../scattersmith/legendgrouptitle/__init__.py | 9 + .../scattersmith/legendgrouptitle/_font.py | 334 + .../graph_objs/scattersmith/marker/__init__.py | 16 + .../graph_objs/scattersmith/marker/_colorbar.py | 1722 ++ .../graph_objs/scattersmith/marker/_gradient.py | 164 + .../plotly/graph_objs/scattersmith/marker/_line.py | 546 + .../scattersmith/marker/colorbar/__init__.py | 16 + .../scattersmith/marker/colorbar/_tickfont.py | 334 + .../marker/colorbar/_tickformatstop.py | 241 + .../scattersmith/marker/colorbar/_title.py | 136 + .../scattersmith/marker/colorbar/title/__init__.py | 9 + .../scattersmith/marker/colorbar/title/_font.py | 334 + .../graph_objs/scattersmith/selected/__init__.py | 12 + .../graph_objs/scattersmith/selected/_marker.py | 127 + .../graph_objs/scattersmith/selected/_textfont.py | 81 + .../graph_objs/scattersmith/unselected/__init__.py | 12 + .../graph_objs/scattersmith/unselected/_marker.py | 136 + .../scattersmith/unselected/_textfont.py | 84 + .../plotly/graph_objs/scatterternary/__init__.py | 34 + .../graph_objs/scatterternary/_hoverlabel.py | 338 + .../graph_objs/scatterternary/_legendgrouptitle.py | 104 + .../plotly/graph_objs/scatterternary/_line.py | 277 + .../plotly/graph_objs/scatterternary/_marker.py | 1130 + .../plotly/graph_objs/scatterternary/_selected.py | 106 + .../plotly/graph_objs/scatterternary/_stream.py | 114 + .../plotly/graph_objs/scatterternary/_textfont.py | 587 + .../graph_objs/scatterternary/_unselected.py | 106 + .../scatterternary/hoverlabel/__init__.py | 9 + .../graph_objs/scatterternary/hoverlabel/_font.py | 587 + .../scatterternary/legendgrouptitle/__init__.py | 9 + .../scatterternary/legendgrouptitle/_font.py | 334 + .../graph_objs/scatterternary/marker/__init__.py | 16 + .../graph_objs/scatterternary/marker/_colorbar.py | 1722 ++ .../graph_objs/scatterternary/marker/_gradient.py | 164 + .../graph_objs/scatterternary/marker/_line.py | 546 + .../scatterternary/marker/colorbar/__init__.py | 16 + .../scatterternary/marker/colorbar/_tickfont.py | 334 + .../marker/colorbar/_tickformatstop.py | 241 + .../scatterternary/marker/colorbar/_title.py | 136 + .../marker/colorbar/title/__init__.py | 9 + .../scatterternary/marker/colorbar/title/_font.py | 334 + .../graph_objs/scatterternary/selected/__init__.py | 12 + .../graph_objs/scatterternary/selected/_marker.py | 127 + .../scatterternary/selected/_textfont.py | 81 + .../scatterternary/unselected/__init__.py | 12 + .../scatterternary/unselected/_marker.py | 136 + .../scatterternary/unselected/_textfont.py | 84 + .../plotly/graph_objs/splom/__init__.py | 42 + .../plotly/graph_objs/splom/_diagonal.py | 80 + .../plotly/graph_objs/splom/_dimension.py | 293 + .../plotly/graph_objs/splom/_hoverlabel.py | 338 + .../plotly/graph_objs/splom/_legendgrouptitle.py | 104 + .../plotly/graph_objs/splom/_marker.py | 977 + .../plotly/graph_objs/splom/_selected.py | 80 + .../plotly/graph_objs/splom/_stream.py | 113 + .../plotly/graph_objs/splom/_unselected.py | 80 + .../plotly/graph_objs/splom/dimension/__init__.py | 9 + .../plotly/graph_objs/splom/dimension/_axis.py | 115 + .../plotly/graph_objs/splom/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/splom/hoverlabel/_font.py | 587 + .../graph_objs/splom/legendgrouptitle/__init__.py | 9 + .../graph_objs/splom/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/splom/marker/__init__.py | 13 + .../plotly/graph_objs/splom/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/splom/marker/_line.py | 546 + .../graph_objs/splom/marker/colorbar/__init__.py | 16 + .../graph_objs/splom/marker/colorbar/_tickfont.py | 334 + .../splom/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/splom/marker/colorbar/_title.py | 136 + .../splom/marker/colorbar/title/__init__.py | 9 + .../splom/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/splom/selected/__init__.py | 9 + .../plotly/graph_objs/splom/selected/_marker.py | 127 + .../plotly/graph_objs/splom/unselected/__init__.py | 9 + .../plotly/graph_objs/splom/unselected/_marker.py | 136 + .../plotly/graph_objs/streamtube/__init__.py | 30 + .../plotly/graph_objs/streamtube/_colorbar.py | 1721 ++ .../plotly/graph_objs/streamtube/_hoverlabel.py | 338 + .../graph_objs/streamtube/_legendgrouptitle.py | 104 + .../plotly/graph_objs/streamtube/_lighting.py | 260 + .../plotly/graph_objs/streamtube/_lightposition.py | 129 + .../plotly/graph_objs/streamtube/_starts.py | 217 + .../plotly/graph_objs/streamtube/_stream.py | 114 + .../graph_objs/streamtube/colorbar/__init__.py | 16 + .../graph_objs/streamtube/colorbar/_tickfont.py | 334 + .../streamtube/colorbar/_tickformatstop.py | 241 + .../graph_objs/streamtube/colorbar/_title.py | 136 + .../streamtube/colorbar/title/__init__.py | 9 + .../graph_objs/streamtube/colorbar/title/_font.py | 334 + .../graph_objs/streamtube/hoverlabel/__init__.py | 9 + .../graph_objs/streamtube/hoverlabel/_font.py | 587 + .../streamtube/legendgrouptitle/__init__.py | 9 + .../streamtube/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/sunburst/__init__.py | 36 + .../plotly/graph_objs/sunburst/_domain.py | 170 + .../plotly/graph_objs/sunburst/_hoverlabel.py | 338 + .../plotly/graph_objs/sunburst/_insidetextfont.py | 587 + .../plotly/graph_objs/sunburst/_leaf.py | 79 + .../graph_objs/sunburst/_legendgrouptitle.py | 104 + .../plotly/graph_objs/sunburst/_marker.py | 579 + .../plotly/graph_objs/sunburst/_outsidetextfont.py | 591 + .../plotly/graph_objs/sunburst/_root.py | 86 + .../plotly/graph_objs/sunburst/_stream.py | 114 + .../plotly/graph_objs/sunburst/_textfont.py | 587 + .../graph_objs/sunburst/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/sunburst/hoverlabel/_font.py | 587 + .../sunburst/legendgrouptitle/__init__.py | 9 + .../graph_objs/sunburst/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/sunburst/marker/__init__.py | 16 + .../plotly/graph_objs/sunburst/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/sunburst/marker/_line.py | 163 + .../plotly/graph_objs/sunburst/marker/_pattern.py | 433 + .../sunburst/marker/colorbar/__init__.py | 16 + .../sunburst/marker/colorbar/_tickfont.py | 334 + .../sunburst/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/sunburst/marker/colorbar/_title.py | 136 + .../sunburst/marker/colorbar/title/__init__.py | 9 + .../sunburst/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/surface/__init__.py | 31 + .../plotly/graph_objs/surface/_colorbar.py | 1722 ++ .../plotly/graph_objs/surface/_contours.py | 132 + .../plotly/graph_objs/surface/_hoverlabel.py | 338 + .../plotly/graph_objs/surface/_legendgrouptitle.py | 104 + .../plotly/graph_objs/surface/_lighting.py | 198 + .../plotly/graph_objs/surface/_lightposition.py | 129 + .../plotly/graph_objs/surface/_stream.py | 114 + .../plotly/graph_objs/surface/colorbar/__init__.py | 16 + .../graph_objs/surface/colorbar/_tickfont.py | 334 + .../graph_objs/surface/colorbar/_tickformatstop.py | 241 + .../plotly/graph_objs/surface/colorbar/_title.py | 136 + .../graph_objs/surface/colorbar/title/__init__.py | 9 + .../graph_objs/surface/colorbar/title/_font.py | 334 + .../plotly/graph_objs/surface/contours/__init__.py | 16 + .../plotly/graph_objs/surface/contours/_x.py | 362 + .../plotly/graph_objs/surface/contours/_y.py | 362 + .../plotly/graph_objs/surface/contours/_z.py | 362 + .../graph_objs/surface/contours/x/__init__.py | 9 + .../graph_objs/surface/contours/x/_project.py | 156 + .../graph_objs/surface/contours/y/__init__.py | 9 + .../graph_objs/surface/contours/y/_project.py | 156 + .../graph_objs/surface/contours/z/__init__.py | 9 + .../graph_objs/surface/contours/z/_project.py | 156 + .../graph_objs/surface/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/surface/hoverlabel/_font.py | 587 + .../surface/legendgrouptitle/__init__.py | 9 + .../graph_objs/surface/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/table/__init__.py | 29 + .../plotly/graph_objs/table/_cells.py | 464 + .../plotly/graph_objs/table/_domain.py | 169 + .../plotly/graph_objs/table/_header.py | 464 + .../plotly/graph_objs/table/_hoverlabel.py | 338 + .../plotly/graph_objs/table/_legendgrouptitle.py | 104 + .../plotly/graph_objs/table/_stream.py | 113 + .../plotly/graph_objs/table/cells/__init__.py | 13 + .../plotly/graph_objs/table/cells/_fill.py | 110 + .../plotly/graph_objs/table/cells/_font.py | 585 + .../plotly/graph_objs/table/cells/_line.py | 154 + .../plotly/graph_objs/table/header/__init__.py | 13 + .../plotly/graph_objs/table/header/_fill.py | 110 + .../plotly/graph_objs/table/header/_font.py | 585 + .../plotly/graph_objs/table/header/_line.py | 154 + .../plotly/graph_objs/table/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/table/hoverlabel/_font.py | 587 + .../graph_objs/table/legendgrouptitle/__init__.py | 9 + .../graph_objs/table/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/treemap/__init__.py | 39 + .../plotly/graph_objs/treemap/_domain.py | 170 + .../plotly/graph_objs/treemap/_hoverlabel.py | 338 + .../plotly/graph_objs/treemap/_insidetextfont.py | 587 + .../plotly/graph_objs/treemap/_legendgrouptitle.py | 104 + .../plotly/graph_objs/treemap/_marker.py | 681 + .../plotly/graph_objs/treemap/_outsidetextfont.py | 591 + .../plotly/graph_objs/treemap/_pathbar.py | 198 + .../plotly/graph_objs/treemap/_root.py | 86 + .../plotly/graph_objs/treemap/_stream.py | 114 + .../plotly/graph_objs/treemap/_textfont.py | 587 + .../plotly/graph_objs/treemap/_tiling.py | 195 + .../graph_objs/treemap/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/treemap/hoverlabel/_font.py | 587 + .../treemap/legendgrouptitle/__init__.py | 9 + .../graph_objs/treemap/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/treemap/marker/__init__.py | 17 + .../plotly/graph_objs/treemap/marker/_colorbar.py | 1722 ++ .../plotly/graph_objs/treemap/marker/_line.py | 163 + .../plotly/graph_objs/treemap/marker/_pad.py | 146 + .../plotly/graph_objs/treemap/marker/_pattern.py | 433 + .../graph_objs/treemap/marker/colorbar/__init__.py | 16 + .../treemap/marker/colorbar/_tickfont.py | 334 + .../treemap/marker/colorbar/_tickformatstop.py | 241 + .../graph_objs/treemap/marker/colorbar/_title.py | 136 + .../treemap/marker/colorbar/title/__init__.py | 9 + .../treemap/marker/colorbar/title/_font.py | 334 + .../plotly/graph_objs/treemap/pathbar/__init__.py | 11 + .../plotly/graph_objs/treemap/pathbar/_textfont.py | 587 + .../plotly/graph_objs/violin/__init__.py | 44 + .../site-packages/plotly/graph_objs/violin/_box.py | 163 + .../plotly/graph_objs/violin/_hoverlabel.py | 338 + .../plotly/graph_objs/violin/_legendgrouptitle.py | 104 + .../plotly/graph_objs/violin/_line.py | 103 + .../plotly/graph_objs/violin/_marker.py | 357 + .../plotly/graph_objs/violin/_meanline.py | 138 + .../plotly/graph_objs/violin/_selected.py | 80 + .../plotly/graph_objs/violin/_stream.py | 113 + .../plotly/graph_objs/violin/_unselected.py | 80 + .../plotly/graph_objs/violin/box/__init__.py | 9 + .../plotly/graph_objs/violin/box/_line.py | 104 + .../graph_objs/violin/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/violin/hoverlabel/_font.py | 587 + .../graph_objs/violin/legendgrouptitle/__init__.py | 9 + .../graph_objs/violin/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/violin/marker/__init__.py | 9 + .../plotly/graph_objs/violin/marker/_line.py | 181 + .../plotly/graph_objs/violin/selected/__init__.py | 9 + .../plotly/graph_objs/violin/selected/_marker.py | 127 + .../graph_objs/violin/unselected/__init__.py | 9 + .../plotly/graph_objs/violin/unselected/_marker.py | 136 + .../plotly/graph_objs/volume/__init__.py | 40 + .../plotly/graph_objs/volume/_caps.py | 131 + .../plotly/graph_objs/volume/_colorbar.py | 1722 ++ .../plotly/graph_objs/volume/_contour.py | 127 + .../plotly/graph_objs/volume/_hoverlabel.py | 338 + .../plotly/graph_objs/volume/_legendgrouptitle.py | 104 + .../plotly/graph_objs/volume/_lighting.py | 260 + .../plotly/graph_objs/volume/_lightposition.py | 129 + .../plotly/graph_objs/volume/_slices.py | 131 + .../plotly/graph_objs/volume/_spaceframe.py | 117 + .../plotly/graph_objs/volume/_stream.py | 113 + .../plotly/graph_objs/volume/_surface.py | 193 + .../plotly/graph_objs/volume/caps/__init__.py | 13 + .../plotly/graph_objs/volume/caps/_x.py | 121 + .../plotly/graph_objs/volume/caps/_y.py | 121 + .../plotly/graph_objs/volume/caps/_z.py | 121 + .../plotly/graph_objs/volume/colorbar/__init__.py | 16 + .../plotly/graph_objs/volume/colorbar/_tickfont.py | 334 + .../graph_objs/volume/colorbar/_tickformatstop.py | 241 + .../plotly/graph_objs/volume/colorbar/_title.py | 136 + .../graph_objs/volume/colorbar/title/__init__.py | 9 + .../graph_objs/volume/colorbar/title/_font.py | 334 + .../graph_objs/volume/hoverlabel/__init__.py | 9 + .../plotly/graph_objs/volume/hoverlabel/_font.py | 587 + .../graph_objs/volume/legendgrouptitle/__init__.py | 9 + .../graph_objs/volume/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/volume/slices/__init__.py | 13 + .../plotly/graph_objs/volume/slices/_x.py | 177 + .../plotly/graph_objs/volume/slices/_y.py | 177 + .../plotly/graph_objs/volume/slices/_z.py | 177 + .../plotly/graph_objs/waterfall/__init__.py | 46 + .../plotly/graph_objs/waterfall/_connector.py | 127 + .../plotly/graph_objs/waterfall/_decreasing.py | 80 + .../plotly/graph_objs/waterfall/_hoverlabel.py | 338 + .../plotly/graph_objs/waterfall/_increasing.py | 80 + .../plotly/graph_objs/waterfall/_insidetextfont.py | 587 + .../graph_objs/waterfall/_legendgrouptitle.py | 104 + .../graph_objs/waterfall/_outsidetextfont.py | 587 + .../plotly/graph_objs/waterfall/_stream.py | 114 + .../plotly/graph_objs/waterfall/_textfont.py | 587 + .../plotly/graph_objs/waterfall/_totals.py | 80 + .../graph_objs/waterfall/connector/__init__.py | 9 + .../plotly/graph_objs/waterfall/connector/_line.py | 139 + .../graph_objs/waterfall/decreasing/__init__.py | 12 + .../graph_objs/waterfall/decreasing/_marker.py | 107 + .../waterfall/decreasing/marker/__init__.py | 9 + .../waterfall/decreasing/marker/_line.py | 104 + .../graph_objs/waterfall/hoverlabel/__init__.py | 9 + .../graph_objs/waterfall/hoverlabel/_font.py | 587 + .../graph_objs/waterfall/increasing/__init__.py | 12 + .../graph_objs/waterfall/increasing/_marker.py | 107 + .../waterfall/increasing/marker/__init__.py | 9 + .../waterfall/increasing/marker/_line.py | 104 + .../waterfall/legendgrouptitle/__init__.py | 9 + .../graph_objs/waterfall/legendgrouptitle/_font.py | 334 + .../plotly/graph_objs/waterfall/totals/__init__.py | 12 + .../plotly/graph_objs/waterfall/totals/_marker.py | 110 + .../graph_objs/waterfall/totals/marker/__init__.py | 9 + .../graph_objs/waterfall/totals/marker/_line.py | 108 + .../python3.8/site-packages/plotly/io/__init__.py | 68 + .../site-packages/plotly/io/_base_renderers.py | 846 + .../python3.8/site-packages/plotly/io/_defaults.py | 19 + .../lib/python3.8/site-packages/plotly/io/_html.py | 517 + .../lib/python3.8/site-packages/plotly/io/_json.py | 594 + .../python3.8/site-packages/plotly/io/_kaleido.py | 872 + .../lib/python3.8/site-packages/plotly/io/_orca.py | 1670 ++ .../site-packages/plotly/io/_renderers.py | 567 + .../site-packages/plotly/io/_sg_scraper.py | 100 + .../site-packages/plotly/io/_templates.py | 492 + .../python3.8/site-packages/plotly/io/_utils.py | 93 + .../site-packages/plotly/io/base_renderers.py | 17 + venv/lib/python3.8/site-packages/plotly/io/json.py | 10 + .../python3.8/site-packages/plotly/io/kaleido.py | 12 + venv/lib/python3.8/site-packages/plotly/io/orca.py | 9 + .../static/340.2a23c8275d47a2531dae.js | 2 + .../static/remoteEntry.5153b2c003c011c482e3.js | 1 + .../plotly/labextension/static/style.js | 4 + .../site-packages/plotly/matplotlylib/__init__.py | 16 + .../plotly/matplotlylib/mplexporter/__init__.py | 3 + .../plotly/matplotlylib/mplexporter/exporter.py | 317 + .../matplotlylib/mplexporter/renderers/__init__.py | 14 + .../matplotlylib/mplexporter/renderers/base.py | 428 + .../mplexporter/renderers/fake_renderer.py | 88 + .../mplexporter/renderers/vega_renderer.py | 155 + .../mplexporter/renderers/vincent_renderer.py | 54 + .../matplotlylib/mplexporter/tests/__init__.py | 3 + .../matplotlylib/mplexporter/tests/test_basic.py | 257 + .../matplotlylib/mplexporter/tests/test_utils.py | 40 + .../plotly/matplotlylib/mplexporter/tools.py | 55 + .../plotly/matplotlylib/mplexporter/utils.py | 382 + .../site-packages/plotly/matplotlylib/mpltools.py | 610 + .../site-packages/plotly/matplotlylib/renderer.py | 861 + .../site-packages/plotly/missing_anywidget.py | 13 + .../site-packages/plotly/offline/__init__.py | 18 + .../plotly/offline/_plotlyjs_version.py | 3 + .../site-packages/plotly/offline/offline.py | 834 + .../site-packages/plotly/optional_imports.py | 1 + .../plotly/package_data/datasets/carshare.csv.gz | Bin 0 -> 6215 bytes .../plotly/package_data/datasets/election.csv.gz | Bin 0 -> 1656 bytes .../package_data/datasets/election.geojson.gz | Bin 0 -> 31857 bytes .../plotly/package_data/datasets/experiment.csv.gz | Bin 0 -> 3154 bytes .../plotly/package_data/datasets/gapminder.csv.gz | Bin 0 -> 34016 bytes .../plotly/package_data/datasets/iris.csv.gz | Bin 0 -> 875 bytes .../plotly/package_data/datasets/medals.csv.gz | Bin 0 -> 110 bytes .../plotly/package_data/datasets/stocks.csv.gz | Bin 0 -> 5895 bytes .../plotly/package_data/datasets/tips.csv.gz | Bin 0 -> 1740 bytes .../plotly/package_data/datasets/wind.csv.gz | Bin 0 -> 424 bytes .../plotly/package_data/plotly.min.js | 3879 +++ .../plotly/package_data/widgetbundle.js | 3906 +++ .../python3.8/site-packages/plotly/serializers.py | 105 + .../site-packages/plotly/shapeannotation.py | 246 + .../lib/python3.8/site-packages/plotly/subplots.py | 325 + venv/lib/python3.8/site-packages/plotly/tools.py | 710 + venv/lib/python3.8/site-packages/plotly/utils.py | 208 + .../site-packages/plotly/validator_cache.py | 66 + 1611 files changed, 561802 insertions(+) create mode 100644 venv/lib/python3.8/site-packages/plotly/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/_subplots.py create mode 100644 venv/lib/python3.8/site-packages/plotly/animation.py create mode 100644 venv/lib/python3.8/site-packages/plotly/api/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/basedatatypes.py create mode 100644 venv/lib/python3.8/site-packages/plotly/basewidget.py create mode 100644 venv/lib/python3.8/site-packages/plotly/callbacks.py create mode 100644 venv/lib/python3.8/site-packages/plotly/colors/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/conftest.py create mode 100644 venv/lib/python3.8/site-packages/plotly/data/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/exceptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/_chart_types.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/_core.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/_doc.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/_imshow.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/_special_inputs.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/colors/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/data/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/imshow_utils.py create mode 100644 venv/lib/python3.8/site-packages/plotly/express/trendline_functions/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_2d_density.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_annotated_heatmap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_bullet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_candlestick.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_county_choropleth.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_dendrogram.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_distplot.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_facet_grid.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_gantt.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_hexbin_mapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_ohlc.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_quiver.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_scatterplot.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_streamline.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_table.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_ternary_contour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_trisurf.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/_violin.py create mode 100644 venv/lib/python3.8/site-packages/plotly/figure_factory/utils.py create mode 100644 venv/lib/python3.8/site-packages/plotly/files.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objects/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_bar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_barpolar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_box.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_candlestick.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_carpet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_choropleth.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_cone.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_contour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_contourcarpet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_deprecations.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_figure.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_figurewidget.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_frame.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_funnel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_funnelarea.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_heatmap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2d.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2dcontour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_icicle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_image.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_indicator.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_isosurface.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_layout.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_mesh3d.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_ohlc.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_parcats.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_parcoords.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_pie.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_sankey.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter3d.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scattercarpet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergeo.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergl.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolargl.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scattersmith.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterternary.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_splom.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_streamtube.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_sunburst.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_surface.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_table.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_treemap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_violin.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_volume.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/_waterfall.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_decreasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_increasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_aaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_baxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lighting.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lightposition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_contours.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/_labelfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_contours.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/_labelfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_connector.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/graph_objs.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_cumulative.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_xbins.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_ybins.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_xbins.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_ybins.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_contours.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_xbins.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_ybins.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_leaf.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_pathbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_root.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_tiling.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_delta.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_gauge.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_number.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_decreasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_increasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_axis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_bar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_step.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_threshold.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_caps.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_contour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lighting.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lightposition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_slices.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_spaceframe.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_surface.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeselection.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeshape.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_annotation.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_coloraxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_colorscale.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_geo.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_grid.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_image.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_legend.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_map.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_mapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_margin.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_modebar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newselection.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newshape.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_polar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_scene.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_selection.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_shape.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_slider.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_smith.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_template.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_ternary.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_transition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_uniformtext.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_updatemenu.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_xaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_yaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_center.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lataxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lonaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_projection.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/_rotation.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_grouptitlefont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_bounds.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_center.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_layer.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_circle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_fill.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_symbol.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_bounds.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_center.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_layer.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_circle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_fill.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_symbol.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_label.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_angularaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_radialaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_annotation.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_aspectratio.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_camera.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_xaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_yaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_zaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_center.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_eye.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_projection.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_up.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_label.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_currentvalue.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_pad.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_step.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_transition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_imaginaryaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_realaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_data.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_layout.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_bar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_barpolar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_box.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_candlestick.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_carpet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choropleth.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_cone.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contourcarpet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnelarea.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_heatmap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2d.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2dcontour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_icicle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_image.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_indicator.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_isosurface.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_mesh3d.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_ohlc.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcats.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcoords.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_pie.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sankey.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter3d.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattercarpet.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergeo.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergl.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermapbox.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolargl.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattersmith.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterternary.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_splom.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_streamtube.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sunburst.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_surface.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_table.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_treemap.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_violin.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_volume.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_waterfall.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_aaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_baxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_caxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_pad.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_subtitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_button.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_pad.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_autorangeoptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_minor.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangebreak.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeselector.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeslider.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_button.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_autorangeoptions.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_minor.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_rangebreak.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_contour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lighting.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lightposition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_decreasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_increasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_dimension.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_labelfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_dimension.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_labelfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_rangefont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_link.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_node.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_colorscale.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillgradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillpattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_gradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_projection.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_gradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_gradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_cluster.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_cluster.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_gradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_gradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_gradient.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_diagonal.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_dimension.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/_axis.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lighting.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lightposition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_starts.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_leaf.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_root.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_contours.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lighting.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lightposition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/_project.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/_project.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/_project.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/_cells.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/_header.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_fill.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_fill.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_domain.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_pathbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_root.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_tiling.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pad.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pattern.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_box.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_meanline.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_selected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_unselected.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_caps.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_colorbar.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_contour.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lighting.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lightposition.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_slices.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_spaceframe.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_surface.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickformatstop.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_title.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_x.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_y.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_z.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_connector.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_decreasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_hoverlabel.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_increasing.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_insidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_legendgrouptitle.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_outsidetextfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_stream.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_textfont.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_totals.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/_font.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/_marker.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/_line.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_base_renderers.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_defaults.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_html.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_json.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_kaleido.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_orca.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_renderers.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_sg_scraper.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_templates.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/_utils.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/base_renderers.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/json.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/kaleido.py create mode 100644 venv/lib/python3.8/site-packages/plotly/io/orca.py create mode 100644 venv/lib/python3.8/site-packages/plotly/labextension/static/340.2a23c8275d47a2531dae.js create mode 100644 venv/lib/python3.8/site-packages/plotly/labextension/static/remoteEntry.5153b2c003c011c482e3.js create mode 100644 venv/lib/python3.8/site-packages/plotly/labextension/static/style.js create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/exporter.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/base.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_basic.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_utils.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tools.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/utils.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/mpltools.py create mode 100644 venv/lib/python3.8/site-packages/plotly/matplotlylib/renderer.py create mode 100644 venv/lib/python3.8/site-packages/plotly/missing_anywidget.py create mode 100644 venv/lib/python3.8/site-packages/plotly/offline/__init__.py create mode 100644 venv/lib/python3.8/site-packages/plotly/offline/_plotlyjs_version.py create mode 100644 venv/lib/python3.8/site-packages/plotly/offline/offline.py create mode 100644 venv/lib/python3.8/site-packages/plotly/optional_imports.py create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/carshare.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.geojson.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/experiment.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/gapminder.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/iris.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/medals.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/stocks.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/tips.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/datasets/wind.csv.gz create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/plotly.min.js create mode 100644 venv/lib/python3.8/site-packages/plotly/package_data/widgetbundle.js create mode 100644 venv/lib/python3.8/site-packages/plotly/serializers.py create mode 100644 venv/lib/python3.8/site-packages/plotly/shapeannotation.py create mode 100644 venv/lib/python3.8/site-packages/plotly/subplots.py create mode 100644 venv/lib/python3.8/site-packages/plotly/tools.py create mode 100644 venv/lib/python3.8/site-packages/plotly/utils.py create mode 100644 venv/lib/python3.8/site-packages/plotly/validator_cache.py (limited to 'venv/lib/python3.8/site-packages/plotly') diff --git a/venv/lib/python3.8/site-packages/plotly/__init__.py b/venv/lib/python3.8/site-packages/plotly/__init__.py new file mode 100644 index 0000000..8caefd3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/__init__.py @@ -0,0 +1,194 @@ +""" +https://plot.ly/python/ + +Plotly's Python API allows users to programmatically access Plotly's +server resources. + +This package is organized as follows: + +Subpackages: + +- plotly: all functionality that requires access to Plotly's servers + +- graph_objs: objects for designing figures and visualizing data + +- matplotlylib: tools to convert matplotlib figures + +Modules: + +- tools: some helpful tools that do not require access to Plotly's servers + +- utils: functions that you probably won't need, but that subpackages use + +- version: holds the current API version + +- exceptions: defines our custom exception classes + +""" + +from typing import TYPE_CHECKING +from _plotly_utils.importers import relative_import +import importlib.metadata + +# This is the version of the plotly package +__version__ = importlib.metadata.version("plotly") +version = __version__ + +if TYPE_CHECKING: + from plotly import ( + graph_objs, + tools, + utils, + offline, + colors, + io, + data, + ) + from plotly.version import __version__ + + __all__ = [ + "graph_objs", + "tools", + "utils", + "offline", + "colors", + "io", + "data", + "__version__", + ] + + # Set default template (for >= 3.7 this is done in ploty/io/__init__.py) + from plotly.io import templates + + templates._default = "plotly" +else: + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".graph_objs", + ".graph_objects", + ".tools", + ".utils", + ".offline", + ".colors", + ".io", + ".data", + ], + [".version.__version__"], + ) + + +def plot(data_frame, kind, **kwargs): + """ + Pandas plotting backend function, not meant to be called directly. + To activate, set pandas.options.plotting.backend="plotly" + See https://github.com/pandas-dev/pandas/blob/master/pandas/plotting/__init__.py + """ + from .express import ( + scatter, + line, + area, + bar, + box, + histogram, + violin, + strip, + funnel, + density_contour, + density_heatmap, + imshow, + ) + + if kind == "scatter": + new_kwargs = {k: kwargs[k] for k in kwargs if k not in ["s", "c"]} + return scatter(data_frame, **new_kwargs) + if kind == "line": + return line(data_frame, **kwargs) + if kind == "area": + new_kwargs = {k: kwargs[k] for k in kwargs if k not in ["stacked"]} + return area(data_frame, **new_kwargs) + if kind == "bar": + return bar(data_frame, **kwargs) + if kind == "barh": + return bar(data_frame, orientation="h", **kwargs) + if kind == "box": + new_kwargs = {k: kwargs[k] for k in kwargs if k not in ["by"]} + return box(data_frame, **new_kwargs) + if kind in ["hist", "histogram"]: + new_kwargs = {k: kwargs[k] for k in kwargs if k not in ["by", "bins"]} + return histogram(data_frame, **new_kwargs) + if kind == "violin": + return violin(data_frame, **kwargs) + if kind == "strip": + return strip(data_frame, **kwargs) + if kind == "funnel": + return funnel(data_frame, **kwargs) + if kind == "density_contour": + return density_contour(data_frame, **kwargs) + if kind == "density_heatmap": + return density_heatmap(data_frame, **kwargs) + if kind == "imshow": + return imshow(data_frame, **kwargs) + if kind == "heatmap": + raise ValueError( + "kind='heatmap' not supported plotting.backend='plotly'. " + "Please use kind='imshow' or kind='density_heatmap'." + ) + + raise NotImplementedError( + "kind='%s' not yet supported for plotting.backend='plotly'" % kind + ) + + +def boxplot_frame(data_frame, **kwargs): + """ + Pandas plotting backend function, not meant to be called directly. + To activate, set pandas.options.plotting.backend="plotly" + See https://github.com/pandas-dev/pandas/blob/master/pandas/plotting/__init__.py + """ + from .express import box + + skip = ["by", "column", "ax", "fontsize", "rot", "grid", "figsize", "layout"] + skip += ["return_type"] + new_kwargs = {k: kwargs[k] for k in kwargs if k not in skip} + return box(data_frame, **new_kwargs) + + +def hist_frame(data_frame, **kwargs): + """ + Pandas plotting backend function, not meant to be called directly. + To activate, set pandas.options.plotting.backend="plotly" + See https://github.com/pandas-dev/pandas/blob/master/pandas/plotting/__init__.py + """ + from .express import histogram + + skip = ["column", "by", "grid", "xlabelsize", "xrot", "ylabelsize", "yrot"] + skip += ["ax", "sharex", "sharey", "figsize", "layout", "bins", "legend"] + new_kwargs = {k: kwargs[k] for k in kwargs if k not in skip} + return histogram(data_frame, **new_kwargs) + + +def hist_series(data_frame, **kwargs): + """ + Pandas plotting backend function, not meant to be called directly. + To activate, set pandas.options.plotting.backend="plotly" + See https://github.com/pandas-dev/pandas/blob/master/pandas/plotting/__init__.py + """ + from .express import histogram + + skip = ["by", "grid", "xlabelsize", "xrot", "ylabelsize", "yrot", "ax"] + skip += ["figsize", "bins", "legend"] + new_kwargs = {k: kwargs[k] for k in kwargs if k not in skip} + return histogram(data_frame, **new_kwargs) + + +def _jupyter_labextension_paths(): + """Called by Jupyter Lab Server to detect if it is a valid labextension and + to install the extension. + """ + return [ + { + "src": "labextension/static", + "dest": "jupyterlab-plotly", + } + ] diff --git a/venv/lib/python3.8/site-packages/plotly/_subplots.py b/venv/lib/python3.8/site-packages/plotly/_subplots.py new file mode 100644 index 0000000..8930fd9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/_subplots.py @@ -0,0 +1,1523 @@ +# Constants +# --------- +# Subplot types that are each individually positioned with a domain +# +# Each of these subplot types has a `domain` property with `x`/`y` +# properties. +# Note that this set does not contain `xaxis`/`yaxis` because these behave a +# little differently. +import collections + +_single_subplot_types = {"scene", "geo", "polar", "ternary", "map", "mapbox"} +_subplot_types = set.union(_single_subplot_types, {"xy", "domain"}) + +# For most subplot types, a trace is associated with a particular subplot +# using a trace property with a name that matches the subplot type. For +# example, a `scatter3d.scene` property set to `'scene2'` associates a +# scatter3d trace with the second `scene` subplot in the figure. +# +# There are a few subplot types that don't follow this pattern, and instead +# the trace property is just named `subplot`. For example setting +# the `scatterpolar.subplot` property to `polar3` associates the scatterpolar +# trace with the third polar subplot in the figure +_subplot_prop_named_subplot = {"polar", "ternary", "map", "mapbox"} + + +# Named tuple to hold an xaxis/yaxis pair that represent a single subplot +SubplotXY = collections.namedtuple("SubplotXY", ("xaxis", "yaxis")) +SubplotDomain = collections.namedtuple("SubplotDomain", ("x", "y")) + +SubplotRef = collections.namedtuple( + "SubplotRef", ("subplot_type", "layout_keys", "trace_kwargs") +) + + +def _get_initial_max_subplot_ids(): + max_subplot_ids = {subplot_type: 0 for subplot_type in _single_subplot_types} + max_subplot_ids["xaxis"] = 0 + max_subplot_ids["yaxis"] = 0 + return max_subplot_ids + + +def make_subplots( + rows=1, + cols=1, + shared_xaxes=False, + shared_yaxes=False, + start_cell="top-left", + print_grid=False, + horizontal_spacing=None, + vertical_spacing=None, + subplot_titles=None, + column_widths=None, + row_heights=None, + specs=None, + insets=None, + column_titles=None, + row_titles=None, + x_title=None, + y_title=None, + figure=None, + **kwargs, +): + """ + Return an instance of plotly.graph_objs.Figure with predefined subplots + configured in 'layout'. + + Parameters + ---------- + rows: int (default 1) + Number of rows in the subplot grid. Must be greater than zero. + + cols: int (default 1) + Number of columns in the subplot grid. Must be greater than zero. + + shared_xaxes: boolean or str (default False) + Assign shared (linked) x-axes for 2D cartesian subplots + + - True or 'columns': Share axes among subplots in the same column + - 'rows': Share axes among subplots in the same row + - 'all': Share axes across all subplots in the grid. + + shared_yaxes: boolean or str (default False) + Assign shared (linked) y-axes for 2D cartesian subplots + + - 'columns': Share axes among subplots in the same column + - True or 'rows': Share axes among subplots in the same row + - 'all': Share axes across all subplots in the grid. + + start_cell: 'bottom-left' or 'top-left' (default 'top-left') + Choose the starting cell in the subplot grid used to set the + domains_grid of the subplots. + + - 'top-left': Subplots are numbered with (1, 1) in the top + left corner + - 'bottom-left': Subplots are numbererd with (1, 1) in the bottom + left corner + + print_grid: boolean (default True): + If True, prints a string representation of the plot grid. Grid may + also be printed using the `Figure.print_grid()` method on the + resulting figure. + + horizontal_spacing: float (default 0.2 / cols) + Space between subplot columns in normalized plot coordinates. Must be + a float between 0 and 1. + + Applies to all columns (use 'specs' subplot-dependents spacing) + + vertical_spacing: float (default 0.3 / rows) + Space between subplot rows in normalized plot coordinates. Must be + a float between 0 and 1. + + Applies to all rows (use 'specs' subplot-dependents spacing) + + subplot_titles: list of str or None (default None) + Title of each subplot as a list in row-major ordering. + + Empty strings ("") can be included in the list if no subplot title + is desired in that space so that the titles are properly indexed. + + specs: list of lists of dict or None (default None) + Per subplot specifications of subplot type, row/column spanning, and + spacing. + + ex1: specs=[[{}, {}], [{'colspan': 2}, None]] + + ex2: specs=[[{'rowspan': 2}, {}], [None, {}]] + + - Indices of the outer list correspond to subplot grid rows + starting from the top, if start_cell='top-left', + or bottom, if start_cell='bottom-left'. + The number of rows in 'specs' must be equal to 'rows'. + + - Indices of the inner lists correspond to subplot grid columns + starting from the left. The number of columns in 'specs' + must be equal to 'cols'. + + - Each item in the 'specs' list corresponds to one subplot + in a subplot grid. (N.B. The subplot grid has exactly 'rows' + times 'cols' cells.) + + - Use None for a blank a subplot cell (or to move past a col/row span). + + - Note that specs[0][0] has the specs of the 'start_cell' subplot. + + - Each item in 'specs' is a dictionary. + The available keys are: + * type (string, default 'xy'): Subplot type. One of + - 'xy': 2D Cartesian subplot type for scatter, bar, etc. + - 'scene': 3D Cartesian subplot for scatter3d, cone, etc. + - 'polar': Polar subplot for scatterpolar, barpolar, etc. + - 'ternary': Ternary subplot for scatterternary + - 'map': Map subplot for scattermap, choroplethmap and densitymap + - 'mapbox': Mapbox subplot for scattermapbox, choroplethmapbox and densitymapbox + - 'domain': Subplot type for traces that are individually + positioned. pie, parcoords, parcats, etc. + - trace type: A trace type which will be used to determine + the appropriate subplot type for that trace + + * secondary_y (bool, default False): If True, create a secondary + y-axis positioned on the right side of the subplot. Only valid + if type='xy'. + * colspan (int, default 1): number of subplot columns + for this subplot to span. + * rowspan (int, default 1): number of subplot rows + for this subplot to span. + * l (float, default 0.0): padding left of cell + * r (float, default 0.0): padding right of cell + * t (float, default 0.0): padding right of cell + * b (float, default 0.0): padding bottom of cell + + - Note: Use 'horizontal_spacing' and 'vertical_spacing' to adjust + the spacing in between the subplots. + + insets: list of dict or None (default None): + Inset specifications. Insets are subplots that overlay grid subplots + + - Each item in 'insets' is a dictionary. + The available keys are: + + * cell (tuple, default=(1,1)): (row, col) index of the + subplot cell to overlay inset axes onto. + * type (string, default 'xy'): Subplot type + * l (float, default=0.0): padding left of inset + in fraction of cell width + * w (float or 'to_end', default='to_end') inset width + in fraction of cell width ('to_end': to cell right edge) + * b (float, default=0.0): padding bottom of inset + in fraction of cell height + * h (float or 'to_end', default='to_end') inset height + in fraction of cell height ('to_end': to cell top edge) + + column_widths: list of numbers or None (default None) + list of length `cols` of the relative widths of each column of subplots. + Values are normalized internally and used to distribute overall width + of the figure (excluding padding) among the columns. + + For backward compatibility, may also be specified using the + `column_width` keyword argument. + + row_heights: list of numbers or None (default None) + list of length `rows` of the relative heights of each row of subplots. + If start_cell='top-left' then row heights are applied top to bottom. + Otherwise, if start_cell='bottom-left' then row heights are applied + bottom to top. + + For backward compatibility, may also be specified using the + `row_width` kwarg. If specified as `row_width`, then the width values + are applied from bottom to top regardless of the value of start_cell. + This matches the legacy behavior of the `row_width` argument. + + column_titles: list of str or None (default None) + list of length `cols` of titles to place above the top subplot in + each column. + + row_titles: list of str or None (default None) + list of length `rows` of titles to place on the right side of each + row of subplots. If start_cell='top-left' then row titles are + applied top to bottom. Otherwise, if start_cell='bottom-left' then + row titles are applied bottom to top. + + x_title: str or None (default None) + Title to place below the bottom row of subplots, + centered horizontally + + y_title: str or None (default None) + Title to place to the left of the left column of subplots, + centered vertically + + figure: go.Figure or None (default None) + If None, a new go.Figure instance will be created and its axes will be + populated with those corresponding to the requested subplot geometry and + this new figure will be returned. + If a go.Figure instance, the axes will be added to the + layout of this figure and this figure will be returned. If the figure + already contains axes, they will be overwritten. + + Examples + -------- + + Example 1: + + >>> # Stack two subplots vertically, and add a scatter trace to each + >>> from plotly.subplots import make_subplots + >>> import plotly.graph_objects as go + >>> fig = make_subplots(rows=2) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] + [ (2,1) xaxis2,yaxis2 ] + + >>> fig.add_scatter(y=[2, 1, 3], row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_scatter(y=[1, 3, 2], row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + or see Figure.append_trace + + Example 2: + + >>> # Stack a scatter plot + >>> fig = make_subplots(rows=2, shared_xaxes=True) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] + [ (2,1) xaxis2,yaxis2 ] + + >>> fig.add_scatter(y=[2, 1, 3], row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_scatter(y=[1, 3, 2], row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + Example 3: + + >>> # irregular subplot layout (more examples below under 'specs') + >>> fig = make_subplots(rows=2, cols=2, + ... specs=[[{}, {}], + ... [{'colspan': 2}, None]]) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] [ (1,2) xaxis2,yaxis2 ] + [ (2,1) xaxis3,yaxis3 - ] + + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=2) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + Example 4: + + >>> # insets + >>> fig = make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}]) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] + + With insets: + [ xaxis2,yaxis2 ] over [ (1,1) xaxis1,yaxis1 ] + + >>> fig.add_scatter(x=[1,2,3], y=[2,1,1]) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2') # doctest: +ELLIPSIS + Figure(...) + + Example 5: + + >>> # include subplot titles + >>> fig = make_subplots(rows=2, subplot_titles=('Plot 1','Plot 2')) + + This is the format of your plot grid: + [ (1,1) x1,y1 ] + [ (2,1) x2,y2 ] + + >>> fig.add_scatter(x=[1,2,3], y=[2,1,2], row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_bar(x=[1,2,3], y=[2,1,2], row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + Example 6: + + Subplot with mixed subplot types + + >>> fig = make_subplots(rows=2, cols=2, + ... specs=[[{'type': 'xy'}, {'type': 'polar'}], + ... [{'type': 'scene'}, {'type': 'ternary'}]]) + + >>> fig.add_traces( + ... [go.Scatter(y=[2, 3, 1]), + ... go.Scatterpolar(r=[1, 3, 2], theta=[0, 45, 90]), + ... go.Scatter3d(x=[1, 2, 1], y=[2, 3, 1], z=[0, 3, 5]), + ... go.Scatterternary(a=[0.1, 0.2, 0.1], + ... b=[0.2, 0.3, 0.1], + ... c=[0.7, 0.5, 0.8])], + ... rows=[1, 1, 2, 2], + ... cols=[1, 2, 1, 2]) # doctest: +ELLIPSIS + Figure(...) + """ + + import plotly.graph_objs as go + + # Handle backward compatibility + # ----------------------------- + use_legacy_row_heights_order = "row_width" in kwargs + row_heights = kwargs.pop("row_width", row_heights) + column_widths = kwargs.pop("column_width", column_widths) + + if kwargs: + raise TypeError( + "make_subplots() got unexpected keyword argument(s): {}".format( + list(kwargs) + ) + ) + + # Validate coerce inputs + # ---------------------- + # ### rows ### + if not isinstance(rows, int) or rows <= 0: + raise ValueError( + """ +The 'rows' argument to make_subplots must be an int greater than 0. + Received value of type {typ}: {val}""".format(typ=type(rows), val=repr(rows)) + ) + + # ### cols ### + if not isinstance(cols, int) or cols <= 0: + raise ValueError( + """ +The 'cols' argument to make_subplots must be an int greater than 0. + Received value of type {typ}: {val}""".format(typ=type(cols), val=repr(cols)) + ) + + # ### start_cell ### + if start_cell == "bottom-left": + col_dir = 1 + row_dir = 1 + elif start_cell == "top-left": + col_dir = 1 + row_dir = -1 + else: + raise ValueError( + """ +The 'start_cell` argument to make_subplots must be one of \ +['bottom-left', 'top-left'] + Received value of type {typ}: {val}""".format( + typ=type(start_cell), val=repr(start_cell) + ) + ) + + # ### Helper to validate coerce elements of lists of dictionaries ### + def _check_keys_and_fill(name, arg, defaults): + def _checks(item, defaults): + if item is None: + return + if not isinstance(item, dict): + raise ValueError( + """ +Elements of the '{name}' argument to make_subplots must be dictionaries \ +or None. + Received value of type {typ}: {val}""".format( + name=name, typ=type(item), val=repr(item) + ) + ) + + for k in item: + if k not in defaults: + raise ValueError( + """ +Invalid key specified in an element of the '{name}' argument to \ +make_subplots: {k} + Valid keys include: {valid_keys}""".format( + k=repr(k), name=name, valid_keys=repr(list(defaults)) + ) + ) + for k, v in defaults.items(): + item.setdefault(k, v) + + for arg_i in arg: + if isinstance(arg_i, (list, tuple)): + # 2D list + for arg_ii in arg_i: + _checks(arg_ii, defaults) + elif isinstance(arg_i, dict): + # 1D list + _checks(arg_i, defaults) + + # ### specs ### + if specs is None: + specs = [[{} for c in range(cols)] for r in range(rows)] + elif not ( + isinstance(specs, (list, tuple)) + and specs + and all(isinstance(row, (list, tuple)) for row in specs) + and len(specs) == rows + and all(len(row) == cols for row in specs) + and all(all(v is None or isinstance(v, dict) for v in row) for row in specs) + ): + raise ValueError( + """ +The 'specs' argument to make_subplots must be a 2D list of dictionaries with \ +dimensions ({rows} x {cols}). + Received value of type {typ}: {val}""".format( + rows=rows, cols=cols, typ=type(specs), val=repr(specs) + ) + ) + + for row in specs: + for spec in row: + # For backward compatibility, + # convert is_3d flag to type='scene' kwarg + if spec and spec.pop("is_3d", None): + spec["type"] = "scene" + + spec_defaults = dict( + type="xy", secondary_y=False, colspan=1, rowspan=1, l=0.0, r=0.0, b=0.0, t=0.0 + ) + _check_keys_and_fill("specs", specs, spec_defaults) + + # Validate secondary_y + has_secondary_y = False + for row in specs: + for spec in row: + if spec is not None: + has_secondary_y = has_secondary_y or spec["secondary_y"] + if spec and spec["type"] != "xy" and spec["secondary_y"]: + raise ValueError( + """ +The 'secondary_y' spec property is not supported for subplot of type '{s_typ}' + 'secondary_y' is only supported for subplots of type 'xy' +""".format(s_typ=spec["type"]) + ) + + # ### insets ### + if insets is None or insets is False: + insets = [] + elif not ( + isinstance(insets, (list, tuple)) and all(isinstance(v, dict) for v in insets) + ): + raise ValueError( + """ +The 'insets' argument to make_subplots must be a list of dictionaries. + Received value of type {typ}: {val}""".format(typ=type(insets), val=repr(insets)) + ) + + if insets: + for inset in insets: + if inset and inset.pop("is_3d", None): + inset["type"] = "scene" + + inset_defaults = dict( + cell=(1, 1), type="xy", l=0.0, w="to_end", b=0.0, h="to_end" + ) + _check_keys_and_fill("insets", insets, inset_defaults) + + # ### shared_xaxes / shared_yaxes + valid_shared_vals = [None, True, False, "rows", "columns", "all"] + shared_err_msg = """ +The {arg} argument to make_subplots must be one of: {valid_vals} + Received value of type {typ}: {val}""" + + if shared_xaxes not in valid_shared_vals: + val = shared_xaxes + raise ValueError( + shared_err_msg.format( + arg="shared_xaxes", + valid_vals=valid_shared_vals, + typ=type(val), + val=repr(val), + ) + ) + if shared_yaxes not in valid_shared_vals: + val = shared_yaxes + raise ValueError( + shared_err_msg.format( + arg="shared_yaxes", + valid_vals=valid_shared_vals, + typ=type(val), + val=repr(val), + ) + ) + + def _check_hv_spacing(dimsize, spacing, name, dimvarname, dimname): + if spacing < 0 or spacing > 1: + raise ValueError("%s spacing must be between 0 and 1." % (name,)) + if dimsize <= 1: + return + max_spacing = 1.0 / float(dimsize - 1) + if spacing > max_spacing: + raise ValueError( + """{name} spacing cannot be greater than (1 / ({dimvarname} - 1)) = {max_spacing:f}. +The resulting plot would have {dimsize} {dimname} ({dimvarname}={dimsize}).""".format( + dimvarname=dimvarname, + name=name, + dimname=dimname, + max_spacing=max_spacing, + dimsize=dimsize, + ) + ) + + # ### horizontal_spacing ### + if horizontal_spacing is None: + if has_secondary_y: + horizontal_spacing = 0.4 / cols + else: + horizontal_spacing = 0.2 / cols + # check horizontal_spacing can be satisfied: + _check_hv_spacing(cols, horizontal_spacing, "Horizontal", "cols", "columns") + + # ### vertical_spacing ### + if vertical_spacing is None: + if subplot_titles is not None: + vertical_spacing = 0.5 / rows + else: + vertical_spacing = 0.3 / rows + # check vertical_spacing can be satisfied: + _check_hv_spacing(rows, vertical_spacing, "Vertical", "rows", "rows") + + # ### subplot titles ### + if subplot_titles is None: + subplot_titles = [""] * rows * cols + + # ### column_widths ### + if has_secondary_y: + # Add room for secondary y-axis title + max_width = 0.94 + elif row_titles: + # Add a little breathing room between row labels and legend + max_width = 0.98 + else: + max_width = 1.0 + + if column_widths is None: + widths = [(max_width - horizontal_spacing * (cols - 1)) / cols] * cols + elif isinstance(column_widths, (list, tuple)) and len(column_widths) == cols: + cum_sum = float(sum(column_widths)) + widths = [] + for w in column_widths: + widths.append((max_width - horizontal_spacing * (cols - 1)) * (w / cum_sum)) + else: + raise ValueError( + """ +The 'column_widths' argument to make_subplots must be a list of numbers of \ +length {cols}. + Received value of type {typ}: {val}""".format( + cols=cols, typ=type(column_widths), val=repr(column_widths) + ) + ) + + # ### row_heights ### + if row_heights is None: + heights = [(1.0 - vertical_spacing * (rows - 1)) / rows] * rows + elif isinstance(row_heights, (list, tuple)) and len(row_heights) == rows: + cum_sum = float(sum(row_heights)) + heights = [] + for h in row_heights: + heights.append((1.0 - vertical_spacing * (rows - 1)) * (h / cum_sum)) + if row_dir < 0 and not use_legacy_row_heights_order: + heights = list(reversed(heights)) + else: + raise ValueError( + """ +The 'row_heights' argument to make_subplots must be a list of numbers of \ +length {rows}. + Received value of type {typ}: {val}""".format( + rows=rows, typ=type(row_heights), val=repr(row_heights) + ) + ) + + # ### column_titles / row_titles ### + if column_titles and not isinstance(column_titles, (list, tuple)): + raise ValueError( + """ +The column_titles argument to make_subplots must be a list or tuple + Received value of type {typ}: {val}""".format( + typ=type(column_titles), val=repr(column_titles) + ) + ) + + if row_titles and not isinstance(row_titles, (list, tuple)): + raise ValueError( + """ +The row_titles argument to make_subplots must be a list or tuple + Received value of type {typ}: {val}""".format( + typ=type(row_titles), val=repr(row_titles) + ) + ) + + # Init layout + # ----------- + layout = go.Layout() + + # Build grid reference + # -------------------- + # Built row/col sequence using 'row_dir' and 'col_dir' + col_seq = range(cols)[::col_dir] + row_seq = range(rows)[::row_dir] + + # Build 2D array of tuples of the start x and start y coordinate of each + # subplot + grid = [ + [ + ( + (sum(widths[:c]) + c * horizontal_spacing), + (sum(heights[:r]) + r * vertical_spacing), + ) + for c in col_seq + ] + for r in row_seq + ] + + domains_grid = [[None for _ in range(cols)] for _ in range(rows)] + + # Initialize subplot reference lists for the grid and insets + grid_ref = [[None for c in range(cols)] for r in range(rows)] + + list_of_domains = [] # added for subplot titles + + max_subplot_ids = _get_initial_max_subplot_ids() + + # Loop through specs -- (r, c) <-> (row, col) + for r, spec_row in enumerate(specs): + for c, spec in enumerate(spec_row): + if spec is None: # skip over None cells + continue + + # ### Compute x and y domain for subplot ### + c_spanned = c + spec["colspan"] - 1 # get spanned c + r_spanned = r + spec["rowspan"] - 1 # get spanned r + + # Throw exception if 'colspan' | 'rowspan' is too large for grid + if c_spanned >= cols: + raise Exception( + "Some 'colspan' value is too large for this subplot grid." + ) + if r_spanned >= rows: + raise Exception( + "Some 'rowspan' value is too large for this subplot grid." + ) + + # Get x domain using grid and colspan + x_s = grid[r][c][0] + spec["l"] + + x_e = grid[r][c_spanned][0] + widths[c_spanned] - spec["r"] + x_domain = [x_s, x_e] + + # Get y domain (dep. on row_dir) using grid & r_spanned + if row_dir > 0: + y_s = grid[r][c][1] + spec["b"] + y_e = grid[r_spanned][c][1] + heights[r_spanned] - spec["t"] + else: + y_s = grid[r_spanned][c][1] + spec["b"] + y_e = grid[r][c][1] + heights[-1 - r] - spec["t"] + + if y_s < 0.0: + # round for values very close to one + # handles some floating point errors + if y_s > -0.01: + y_s = 0.0 + else: + raise Exception( + "A combination of the 'b' values, heights, and " + "number of subplots too large for this subplot grid." + ) + if y_s > 1.0: + # round for values very close to one + # handles some floating point errors + if y_s < 1.01: + y_s = 1.0 + else: + raise Exception( + "A combination of the 'b' values, heights, and " + "number of subplots too large for this subplot grid." + ) + + if y_e < 0.0: + if y_e > -0.01: + y_e = 0.0 + else: + raise Exception( + "A combination of the 't' values, heights, and " + "number of subplots too large for this subplot grid." + ) + + if y_e > 1.0: + if y_e < 1.01: + y_e = 1.0 + else: + raise Exception( + "A combination of the 't' values, heights, and " + "number of subplots too large for this subplot grid." + ) + + y_domain = [y_s, y_e] + + list_of_domains.append(x_domain) + list_of_domains.append(y_domain) + + domains_grid[r][c] = [x_domain, y_domain] + + # ### construct subplot container ### + subplot_type = spec["type"] + secondary_y = spec["secondary_y"] + subplot_refs = _init_subplot( + layout, subplot_type, secondary_y, x_domain, y_domain, max_subplot_ids + ) + grid_ref[r][c] = subplot_refs + + _configure_shared_axes(layout, grid_ref, specs, "x", shared_xaxes, row_dir) + _configure_shared_axes(layout, grid_ref, specs, "y", shared_yaxes, row_dir) + + # Build inset reference + # --------------------- + # Loop through insets + insets_ref = [None for inset in range(len(insets))] if insets else None + if insets: + for i_inset, inset in enumerate(insets): + r = inset["cell"][0] - 1 + c = inset["cell"][1] - 1 + + # Throw exception if r | c is out of range + if not (0 <= r < rows): + raise Exception( + "Some 'cell' row value is out of range. " + "Note: the starting cell is (1, 1)" + ) + if not (0 <= c < cols): + raise Exception( + "Some 'cell' col value is out of range. " + "Note: the starting cell is (1, 1)" + ) + + # Get inset x domain using grid + x_s = grid[r][c][0] + inset["l"] * widths[c] + if inset["w"] == "to_end": + x_e = grid[r][c][0] + widths[c] + else: + x_e = x_s + inset["w"] * widths[c] + x_domain = [x_s, x_e] + + # Get inset y domain using grid + y_s = grid[r][c][1] + inset["b"] * heights[-1 - r] + if inset["h"] == "to_end": + y_e = grid[r][c][1] + heights[-1 - r] + else: + y_e = y_s + inset["h"] * heights[-1 - r] + y_domain = [y_s, y_e] + + list_of_domains.append(x_domain) + list_of_domains.append(y_domain) + + subplot_type = inset["type"] + + subplot_refs = _init_subplot( + layout, subplot_type, False, x_domain, y_domain, max_subplot_ids + ) + + insets_ref[i_inset] = subplot_refs + + # Build grid_str + # This is the message printed when print_grid=True + grid_str = _build_grid_str(specs, grid_ref, insets, insets_ref, row_seq) + + # Add subplot titles + plot_title_annotations = _build_subplot_title_annotations( + subplot_titles, list_of_domains + ) + + layout["annotations"] = plot_title_annotations + + # Add column titles + if column_titles: + domains_list = [] + if row_dir > 0: + for c in range(cols): + domain_pair = domains_grid[-1][c] + if domain_pair: + domains_list.extend(domain_pair) + else: + for c in range(cols): + domain_pair = domains_grid[0][c] + if domain_pair: + domains_list.extend(domain_pair) + + # Add subplot titles + column_title_annotations = _build_subplot_title_annotations( + column_titles, domains_list + ) + + layout["annotations"] += tuple(column_title_annotations) + + if row_titles: + domains_list = [] + for r in range(rows): + domain_pair = domains_grid[r][-1] + if domain_pair: + domains_list.extend(domain_pair) + + # Add subplot titles + column_title_annotations = _build_subplot_title_annotations( + row_titles, domains_list, title_edge="right" + ) + + layout["annotations"] += tuple(column_title_annotations) + + if x_title: + domains_list = [(0, max_width), (0, 1)] + + # Add subplot titles + column_title_annotations = _build_subplot_title_annotations( + [x_title], domains_list, title_edge="bottom", offset=30 + ) + + layout["annotations"] += tuple(column_title_annotations) + + if y_title: + domains_list = [(0, 1), (0, 1)] + + # Add subplot titles + column_title_annotations = _build_subplot_title_annotations( + [y_title], domains_list, title_edge="left", offset=40 + ) + + layout["annotations"] += tuple(column_title_annotations) + + # Handle displaying grid information + if print_grid: + print(grid_str) + + # Build resulting figure + if figure is None: + figure = go.Figure() + figure.update_layout(layout) + + # Attach subplot grid info to the figure + figure.__dict__["_grid_ref"] = grid_ref + figure.__dict__["_grid_str"] = grid_str + + return figure + + +def _configure_shared_axes(layout, grid_ref, specs, x_or_y, shared, row_dir): + rows = len(grid_ref) + cols = len(grid_ref[0]) + + layout_key_ind = ["x", "y"].index(x_or_y) + + if row_dir < 0: + rows_iter = range(rows - 1, -1, -1) + else: + rows_iter = range(rows) + + def update_axis_matches(first_axis_id, subplot_ref, spec, remove_label): + if subplot_ref is None: + return first_axis_id + + if x_or_y == "x": + span = spec["colspan"] + else: + span = spec["rowspan"] + + if subplot_ref.subplot_type == "xy" and span == 1: + if first_axis_id is None: + first_axis_name = subplot_ref.layout_keys[layout_key_ind] + first_axis_id = first_axis_name.replace("axis", "") + else: + axis_name = subplot_ref.layout_keys[layout_key_ind] + axis_to_match = layout[axis_name] + axis_to_match.matches = first_axis_id + if remove_label: + axis_to_match.showticklabels = False + + return first_axis_id + + if shared == "columns" or (x_or_y == "x" and shared is True): + for c in range(cols): + first_axis_id = None + ok_to_remove_label = x_or_y == "x" + for r in rows_iter: + if not grid_ref[r][c]: + continue + subplot_ref = grid_ref[r][c][0] + spec = specs[r][c] + first_axis_id = update_axis_matches( + first_axis_id, subplot_ref, spec, ok_to_remove_label + ) + + elif shared == "rows" or (x_or_y == "y" and shared is True): + for r in rows_iter: + first_axis_id = None + ok_to_remove_label = x_or_y == "y" + for c in range(cols): + if not grid_ref[r][c]: + continue + subplot_ref = grid_ref[r][c][0] + spec = specs[r][c] + first_axis_id = update_axis_matches( + first_axis_id, subplot_ref, spec, ok_to_remove_label + ) + + elif shared == "all": + first_axis_id = None + for c in range(cols): + for ri, r in enumerate(rows_iter): + if not grid_ref[r][c]: + continue + subplot_ref = grid_ref[r][c][0] + spec = specs[r][c] + + if x_or_y == "y": + ok_to_remove_label = c > 0 + else: + ok_to_remove_label = ri > 0 if row_dir > 0 else r < rows - 1 + + first_axis_id = update_axis_matches( + first_axis_id, subplot_ref, spec, ok_to_remove_label + ) + + +def _init_subplot_xy(layout, secondary_y, x_domain, y_domain, max_subplot_ids=None): + if max_subplot_ids is None: + max_subplot_ids = _get_initial_max_subplot_ids() + + # Get axis label and anchor + x_cnt = max_subplot_ids["xaxis"] + 1 + y_cnt = max_subplot_ids["yaxis"] + 1 + + # Compute x/y labels (the values of trace.xaxis/trace.yaxis + x_label = "x{cnt}".format(cnt=x_cnt if x_cnt > 1 else "") + y_label = "y{cnt}".format(cnt=y_cnt if y_cnt > 1 else "") + + # Anchor x and y axes to each other + x_anchor, y_anchor = y_label, x_label + + # Build layout.xaxis/layout.yaxis containers + xaxis_name = "xaxis{cnt}".format(cnt=x_cnt if x_cnt > 1 else "") + yaxis_name = "yaxis{cnt}".format(cnt=y_cnt if y_cnt > 1 else "") + x_axis = {"domain": x_domain, "anchor": x_anchor} + y_axis = {"domain": y_domain, "anchor": y_anchor} + + layout[xaxis_name] = x_axis + layout[yaxis_name] = y_axis + + subplot_refs = [ + SubplotRef( + subplot_type="xy", + layout_keys=(xaxis_name, yaxis_name), + trace_kwargs={"xaxis": x_label, "yaxis": y_label}, + ) + ] + + if secondary_y: + y_cnt += 1 + secondary_yaxis_name = "yaxis{cnt}".format(cnt=y_cnt if y_cnt > 1 else "") + secondary_y_label = "y{cnt}".format(cnt=y_cnt) + + # Add secondary y-axis to subplot reference + subplot_refs.append( + SubplotRef( + subplot_type="xy", + layout_keys=(xaxis_name, secondary_yaxis_name), + trace_kwargs={"xaxis": x_label, "yaxis": secondary_y_label}, + ) + ) + + # Add secondary y axis to layout + secondary_y_axis = {"anchor": y_anchor, "overlaying": y_label, "side": "right"} + layout[secondary_yaxis_name] = secondary_y_axis + + # increment max_subplot_ids + max_subplot_ids["xaxis"] = x_cnt + max_subplot_ids["yaxis"] = y_cnt + + return tuple(subplot_refs) + + +def _init_subplot_single( + layout, subplot_type, x_domain, y_domain, max_subplot_ids=None +): + if max_subplot_ids is None: + max_subplot_ids = _get_initial_max_subplot_ids() + + # Add scene to layout + cnt = max_subplot_ids[subplot_type] + 1 + label = "{subplot_type}{cnt}".format( + subplot_type=subplot_type, cnt=cnt if cnt > 1 else "" + ) + scene = dict(domain={"x": x_domain, "y": y_domain}) + layout[label] = scene + + trace_key = ( + "subplot" if subplot_type in _subplot_prop_named_subplot else subplot_type + ) + + subplot_ref = SubplotRef( + subplot_type=subplot_type, layout_keys=(label,), trace_kwargs={trace_key: label} + ) + + # increment max_subplot_id + max_subplot_ids[subplot_type] = cnt + + return (subplot_ref,) + + +def _init_subplot_domain(x_domain, y_domain): + # No change to layout since domain traces are labeled individually + subplot_ref = SubplotRef( + subplot_type="domain", + layout_keys=(), + trace_kwargs={"domain": {"x": tuple(x_domain), "y": tuple(y_domain)}}, + ) + + return (subplot_ref,) + + +def _subplot_type_for_trace_type(trace_type): + from plotly.validator_cache import ValidatorCache + + DataValidator = ValidatorCache.get_validator("", "data") + + trace_validator = DataValidator + if trace_type in trace_validator.class_strs_map: + # subplot_type is a trace name, find the subplot type for trace + trace = trace_validator.validate_coerce([{"type": trace_type}])[0] + if "domain" in trace: + return "domain" + elif "xaxis" in trace and "yaxis" in trace: + return "xy" + elif "geo" in trace: + return "geo" + elif "scene" in trace: + return "scene" + elif "subplot" in trace: + for t in _subplot_prop_named_subplot: + try: + trace.subplot = t + return t + except ValueError: + pass + + return None + + +def _validate_coerce_subplot_type(subplot_type): + # Lowercase subplot_type + orig_subplot_type = subplot_type + subplot_type = subplot_type.lower() + + # Check if it's a named subplot type + if subplot_type in _subplot_types: + return subplot_type + + # Try to determine subplot type for trace + subplot_type = _subplot_type_for_trace_type(subplot_type) + + if subplot_type is None: + raise ValueError("Unsupported subplot type: {}".format(repr(orig_subplot_type))) + else: + return subplot_type + + +def _init_subplot( + layout, subplot_type, secondary_y, x_domain, y_domain, max_subplot_ids=None +): + # Normalize subplot type + subplot_type = _validate_coerce_subplot_type(subplot_type) + + if max_subplot_ids is None: + max_subplot_ids = _get_initial_max_subplot_ids() + + # Clamp domain elements between [0, 1]. + # This is only needed to combat numerical precision errors + # See GH1031 + x_domain = [max(0.0, x_domain[0]), min(1.0, x_domain[1])] + y_domain = [max(0.0, y_domain[0]), min(1.0, y_domain[1])] + + if subplot_type == "xy": + subplot_refs = _init_subplot_xy( + layout, secondary_y, x_domain, y_domain, max_subplot_ids + ) + elif subplot_type in _single_subplot_types: + subplot_refs = _init_subplot_single( + layout, subplot_type, x_domain, y_domain, max_subplot_ids + ) + elif subplot_type == "domain": + subplot_refs = _init_subplot_domain(x_domain, y_domain) + else: + raise ValueError("Unsupported subplot type: {}".format(repr(subplot_type))) + + return subplot_refs + + +def _get_cartesian_label(x_or_y, r, c, cnt): + # Default label (given strictly by cnt) + label = "{x_or_y}{cnt}".format(x_or_y=x_or_y, cnt=cnt) + return label + + +def _build_subplot_title_annotations( + subplot_titles, list_of_domains, title_edge="top", offset=0 +): + # If shared_axes is False (default) use list_of_domains + # This is used for insets and irregular layouts + # if not shared_xaxes and not shared_yaxes: + x_dom = list_of_domains[::2] + y_dom = list_of_domains[1::2] + subtitle_pos_x = [] + subtitle_pos_y = [] + + if title_edge == "top": + text_angle = 0 + xanchor = "center" + yanchor = "bottom" + + for x_domains in x_dom: + subtitle_pos_x.append(sum(x_domains) / 2.0) + for y_domains in y_dom: + subtitle_pos_y.append(y_domains[1]) + + yshift = offset + xshift = 0 + elif title_edge == "bottom": + text_angle = 0 + xanchor = "center" + yanchor = "top" + + for x_domains in x_dom: + subtitle_pos_x.append(sum(x_domains) / 2.0) + for y_domains in y_dom: + subtitle_pos_y.append(y_domains[0]) + + yshift = -offset + xshift = 0 + elif title_edge == "right": + text_angle = 90 + xanchor = "left" + yanchor = "middle" + + for x_domains in x_dom: + subtitle_pos_x.append(x_domains[1]) + for y_domains in y_dom: + subtitle_pos_y.append(sum(y_domains) / 2.0) + + yshift = 0 + xshift = offset + elif title_edge == "left": + text_angle = -90 + xanchor = "right" + yanchor = "middle" + + for x_domains in x_dom: + subtitle_pos_x.append(x_domains[0]) + for y_domains in y_dom: + subtitle_pos_y.append(sum(y_domains) / 2.0) + + yshift = 0 + xshift = -offset + else: + raise ValueError("Invalid annotation edge '{edge}'".format(edge=title_edge)) + + plot_titles = [] + for index in range(len(subplot_titles)): + if not subplot_titles[index] or index >= len(subtitle_pos_y): + pass + else: + annot = { + "y": subtitle_pos_y[index], + "xref": "paper", + "x": subtitle_pos_x[index], + "yref": "paper", + "text": subplot_titles[index], + "showarrow": False, + "font": dict(size=16), + "xanchor": xanchor, + "yanchor": yanchor, + } + + if xshift != 0: + annot["xshift"] = xshift + + if yshift != 0: + annot["yshift"] = yshift + + if text_angle != 0: + annot["textangle"] = text_angle + + plot_titles.append(annot) + return plot_titles + + +def _build_grid_str(specs, grid_ref, insets, insets_ref, row_seq): + # Compute rows and columns + rows = len(specs) + cols = len(specs[0]) + + # Initialize constants + sp = " " # space between cell + s_str = "[ " # cell start string + e_str = " ]" # cell end string + + s_top = "⎡ " # U+23A1 + s_mid = "⎢ " # U+23A2 + s_bot = "⎣ " # U+23A3 + + e_top = " ⎤" # U+23A4 + e_mid = " ⎟" # U+239F + e_bot = " ⎦" # U+23A6 + + colspan_str = " -" # colspan string + rowspan_str = " :" # rowspan string + empty_str = " (empty) " # empty cell string + # Init grid_str with intro message + grid_str = "This is the format of your plot grid:\n" + + # Init tmp list of lists of strings (sorta like 'grid_ref' but w/ strings) + _tmp = [["" for c in range(cols)] for r in range(rows)] + + # Define cell string as function of (r, c) and grid_ref + def _get_cell_str(r, c, subplot_refs): + layout_keys = sorted({k for ref in subplot_refs for k in ref.layout_keys}) + + ref_str = ",".join(layout_keys) + + # Replace yaxis2 -> y2 + ref_str = ref_str.replace("axis", "") + return "({r},{c}) {ref}".format(r=r + 1, c=c + 1, ref=ref_str) + + # Find max len of _cell_str, add define a padding function + cell_len = ( + max( + [ + len(_get_cell_str(r, c, ref)) + for r, row_ref in enumerate(grid_ref) + for c, ref in enumerate(row_ref) + if ref + ] + ) + + len(s_str) + + len(e_str) + ) + + def _pad(s, cell_len=cell_len): + return " " * (cell_len - len(s)) + + # Loop through specs, fill in _tmp + for r, spec_row in enumerate(specs): + for c, spec in enumerate(spec_row): + ref = grid_ref[r][c] + if ref is None: + if _tmp[r][c] == "": + _tmp[r][c] = empty_str + _pad(empty_str) + continue + + if spec["rowspan"] > 1: + cell_str = s_top + _get_cell_str(r, c, ref) + else: + cell_str = s_str + _get_cell_str(r, c, ref) + + if spec["colspan"] > 1: + for cc in range(1, spec["colspan"] - 1): + _tmp[r][c + cc] = colspan_str + _pad(colspan_str) + + if spec["rowspan"] > 1: + _tmp[r][c + spec["colspan"] - 1] = ( + colspan_str + _pad(colspan_str + e_str) + ) + e_top + else: + _tmp[r][c + spec["colspan"] - 1] = ( + colspan_str + _pad(colspan_str + e_str) + ) + e_str + else: + padding = " " * (cell_len - len(cell_str) - 2) + if spec["rowspan"] > 1: + cell_str += padding + e_top + else: + cell_str += padding + e_str + + if spec["rowspan"] > 1: + for cc in range(spec["colspan"]): + for rr in range(1, spec["rowspan"]): + row_str = rowspan_str + _pad(rowspan_str) + if cc == 0: + if rr < spec["rowspan"] - 1: + row_str = s_mid + row_str[2:] + else: + row_str = s_bot + row_str[2:] + + if cc == spec["colspan"] - 1: + if rr < spec["rowspan"] - 1: + row_str = row_str[:-2] + e_mid + else: + row_str = row_str[:-2] + e_bot + + _tmp[r + rr][c + cc] = row_str + + _tmp[r][c] = cell_str + _pad(cell_str) + + # Append grid_str using data from _tmp in the correct order + for r in row_seq[::-1]: + grid_str += sp.join(_tmp[r]) + "\n" + + # Append grid_str to include insets info + if insets: + grid_str += "\nWith insets:\n" + for i_inset, inset in enumerate(insets): + r = inset["cell"][0] - 1 + c = inset["cell"][1] - 1 + ref = grid_ref[r][c] + + subplot_labels_str = ",".join(insets_ref[i_inset][0].layout_keys) + + # Replace, e.g., yaxis2 -> y2 + subplot_labels_str = subplot_labels_str.replace("axis", "") + + grid_str += ( + s_str + + subplot_labels_str + + e_str + + " over " + + s_str + + _get_cell_str(r, c, ref) + + e_str + + "\n" + ) + return grid_str + + +def _set_trace_grid_reference(trace, layout, grid_ref, row, col, secondary_y=False): + if row <= 0: + raise Exception("Row value is out of range. Note: the starting cell is (1, 1)") + if col <= 0: + raise Exception("Col value is out of range. Note: the starting cell is (1, 1)") + try: + subplot_refs = grid_ref[row - 1][col - 1] + except IndexError: + raise Exception( + "The (row, col) pair sent is out of " + "range. Use Figure.print_grid to view the " + "subplot grid. " + ) + + if not subplot_refs: + raise ValueError( + """ +No subplot specified at grid position ({row}, {col})""".format(row=row, col=col) + ) + + if secondary_y: + if len(subplot_refs) < 2: + raise ValueError( + """ +Subplot with type '{subplot_type}' at grid position ({row}, {col}) was not +created with the secondary_y spec property set to True. See the docstring +for the specs argument to plotly.subplots.make_subplots for more information. +""" + ) + trace_kwargs = subplot_refs[1].trace_kwargs + else: + trace_kwargs = subplot_refs[0].trace_kwargs + + for k in trace_kwargs: + if k not in trace: + raise ValueError( + """\ +Trace type '{typ}' is not compatible with subplot type '{subplot_type}' +at grid position ({row}, {col}) + +See the docstring for the specs argument to plotly.subplots.make_subplots +for more information on subplot types""".format( + typ=trace.type, + subplot_type=subplot_refs[0].subplot_type, + row=row, + col=col, + ) + ) + + # Update trace reference + trace.update(trace_kwargs) + + +def _get_grid_subplot(fig, row, col, secondary_y=False): + try: + grid_ref = fig._grid_ref + except AttributeError: + raise Exception( + "In order to reference traces by row and column, " + "you must first use " + "plotly.tools.make_subplots " + "to create the figure with a subplot grid." + ) + + rows = len(grid_ref) + cols = len(grid_ref[0]) + + # Validate row + if not isinstance(row, int) or row < 1 or rows < row: + raise ValueError( + """ +The row argument to get_subplot must be an integer where 1 <= row <= {rows} + Received value of type {typ}: {val}""".format( + rows=rows, typ=type(row), val=repr(row) + ) + ) + + if not isinstance(col, int) or col < 1 or cols < col: + raise ValueError( + """ +The col argument to get_subplot must be an integer where 1 <= row <= {cols} + Received value of type {typ}: {val}""".format( + cols=cols, typ=type(col), val=repr(col) + ) + ) + + subplot_refs = fig._grid_ref[row - 1][col - 1] + if not subplot_refs: + return None + + if secondary_y: + if len(subplot_refs) > 1: + layout_keys = subplot_refs[1].layout_keys + else: + return None + else: + layout_keys = subplot_refs[0].layout_keys + + if len(layout_keys) == 0: + return SubplotDomain(**subplot_refs[0].trace_kwargs["domain"]) + elif len(layout_keys) == 1: + return fig.layout[layout_keys[0]] + elif len(layout_keys) == 2: + return SubplotXY( + xaxis=fig.layout[layout_keys[0]], yaxis=fig.layout[layout_keys[1]] + ) + else: + raise ValueError( + """ +Unexpected subplot type with layout_keys of {}""".format(layout_keys) + ) + + +def _get_subplot_ref_for_trace(trace): + if "domain" in trace: + return SubplotRef( + subplot_type="domain", + layout_keys=(), + trace_kwargs={"domain": {"x": trace.domain.x, "y": trace.domain.y}}, + ) + + elif "xaxis" in trace and "yaxis" in trace: + xaxis_name = "xaxis" + trace.xaxis[1:] if trace.xaxis else "xaxis" + yaxis_name = "yaxis" + trace.yaxis[1:] if trace.yaxis else "yaxis" + + return SubplotRef( + subplot_type="xy", + layout_keys=(xaxis_name, yaxis_name), + trace_kwargs={"xaxis": trace.xaxis, "yaxis": trace.yaxis}, + ) + elif "geo" in trace: + return SubplotRef( + subplot_type="geo", + layout_keys=(trace.geo,), + trace_kwargs={"geo": trace.geo}, + ) + elif "scene" in trace: + return SubplotRef( + subplot_type="scene", + layout_keys=(trace.scene,), + trace_kwargs={"scene": trace.scene}, + ) + elif "subplot" in trace: + for t in _subplot_prop_named_subplot: + try: + validator = trace._get_prop_validator("subplot") + validator.validate_coerce(t) + return SubplotRef( + subplot_type=t, + layout_keys=(trace.subplot,), + trace_kwargs={"subplot": trace.subplot}, + ) + except ValueError: + pass + + return None diff --git a/venv/lib/python3.8/site-packages/plotly/animation.py b/venv/lib/python3.8/site-packages/plotly/animation.py new file mode 100644 index 0000000..1cf5e3a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/animation.py @@ -0,0 +1,54 @@ +from _plotly_utils.basevalidators import EnumeratedValidator, NumberValidator + + +class EasingValidator(EnumeratedValidator): + def __init__(self, plotly_name="easing", parent_name="batch_animate", **_): + super(EasingValidator, self).__init__( + plotly_name=plotly_name, + parent_name=parent_name, + values=[ + "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", + ], + ) + + +class DurationValidator(NumberValidator): + def __init__(self, plotly_name="duration"): + super(DurationValidator, self).__init__( + plotly_name=plotly_name, parent_name="batch_animate", min=0 + ) diff --git a/venv/lib/python3.8/site-packages/plotly/api/__init__.py b/venv/lib/python3.8/site-packages/plotly/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.8/site-packages/plotly/basedatatypes.py b/venv/lib/python3.8/site-packages/plotly/basedatatypes.py new file mode 100644 index 0000000..72f4cd2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/basedatatypes.py @@ -0,0 +1,6434 @@ +import collections +from collections import OrderedDict +import re +import warnings +from contextlib import contextmanager +from copy import deepcopy, copy +import itertools +from functools import reduce + +from _plotly_utils.utils import ( + _natural_sort_strings, + _get_int_type, + split_multichar, + split_string_positions, + display_string_positions, + chomp_empty_strings, + find_closest_string, + convert_to_base64, +) +from _plotly_utils.exceptions import PlotlyKeyError +from .optional_imports import get_module + +from . import shapeannotation +from . import _subplots + +# Create Undefined sentinel value +# - Setting a property to None removes any existing value +# - Setting a property to Undefined leaves existing value unmodified +Undefined = object() + + +def _len_dict_item(item): + """ + Because a parsed dict path is a tuple containings strings or integers, to + know the length of the resulting string when printing we might need to + convert to a string before calling len on it. + """ + try: + temp = len(item) + except TypeError: + try: + temp = len("%d" % (item,)) + except TypeError: + raise ValueError( + "Cannot find string length of an item that is not string-like nor an integer." + ) + return temp + + +def _str_to_dict_path_full(key_path_str): + """ + Convert a key path string into a tuple of key path elements and also + return a tuple of indices marking the beginning of each element in the + string. + + Parameters + ---------- + key_path_str : str + Key path string, where nested keys are joined on '.' characters + and array indexes are specified using brackets + (e.g. 'foo.bar[1]') + Returns + ------- + tuple[str | int] + tuple [int] + """ + # skip all the parsing if the string is empty + if len(key_path_str): + # split string on ".[]" and filter out empty strings + key_path2 = split_multichar([key_path_str], list(".[]")) + # Split out underscore + # e.g. ['foo', 'bar_baz', '1'] -> ['foo', 'bar', 'baz', '1'] + key_path3 = [] + underscore_props = BaseFigure._valid_underscore_properties + + def _make_hyphen_key(key): + if "_" in key[1:]: + # For valid properties that contain underscores (error_x) + # replace the underscores with hyphens to protect them + # from being split up + for under_prop, hyphen_prop in underscore_props.items(): + key = key.replace(under_prop, hyphen_prop) + return key + + def _make_underscore_key(key): + return key.replace("-", "_") + + key_path2b = list(map(_make_hyphen_key, key_path2)) + + # Here we want to split up each non-empty string in the list at + # underscores and recombine the strings using chomp_empty_strings so + # that leading, trailing and multiple _ will be preserved + def _split_and_chomp(s): + if not len(s): + return s + s_split = split_multichar([s], list("_")) + # handle key paths like "a_path_", "_another_path", or + # "yet__another_path" by joining extra "_" to the string to the right or + # the empty string if at the end + s_chomped = chomp_empty_strings(s_split, "_", reverse=True) + return s_chomped + + # after running _split_and_chomp on key_path2b, it will be a list + # containing strings and lists of strings; concatenate the sublists with + # the list ("lift" the items out of the sublists) + key_path2c = list( + reduce( + lambda x, y: x + y if isinstance(y, list) else x + [y], + map(_split_and_chomp, key_path2b), + [], + ) + ) + + key_path2d = list(map(_make_underscore_key, key_path2c)) + all_elem_idcs = tuple(split_string_positions(list(key_path2d))) + # remove empty strings, and indices pointing to them + key_elem_pairs = list(filter(lambda t: len(t[1]), enumerate(key_path2d))) + key_path3 = [x for _, x in key_elem_pairs] + elem_idcs = [all_elem_idcs[i] for i, _ in key_elem_pairs] + + # Convert elements to ints if possible. + # e.g. ['foo', 'bar', '0'] -> ['foo', 'bar', 0] + for i in range(len(key_path3)): + try: + key_path3[i] = int(key_path3[i]) + except ValueError as _: + pass + else: + key_path3 = [] + elem_idcs = [] + + return (tuple(key_path3), elem_idcs) + + +def _remake_path_from_tuple(props): + """ + try to remake a path using the properties in props + """ + if len(props) == 0: + return "" + + def _add_square_brackets_to_number(n): + if isinstance(n, int): + return "[%d]" % (n,) + return n + + def _prepend_dot_if_not_number(s): + if not s.startswith("["): + return "." + s + return s + + props_all_str = list(map(_add_square_brackets_to_number, props)) + props_w_underscore = props_all_str[:1] + list( + map(_prepend_dot_if_not_number, props_all_str[1:]) + ) + return "".join(props_w_underscore) + + +def _check_path_in_prop_tree(obj, path, error_cast=None): + """ + obj: the object in which the first property is looked up + path: the path that will be split into properties to be looked up + path can also be a tuple. In this case, it is combined using . + and [] because it is impossible to reconstruct the string fully + in order to give a decent error message. + error_cast: this function walks down the property tree by looking up values + in objects. So this will throw exceptions that are thrown by + __getitem__, but in some cases we are checking the path for a + different reason and would prefer throwing a more relevant + exception (e.g., __getitem__ throws KeyError but __setitem__ + throws ValueError for subclasses of BasePlotlyType and + BaseFigure). So the resulting error can be "casted" to the + passed in type, if not None. + returns + an Exception object or None. The caller can raise this + exception to see where the lookup error occurred. + """ + if isinstance(path, tuple): + path = _remake_path_from_tuple(path) + prop, prop_idcs = _str_to_dict_path_full(path) + prev_objs = [] + for i, p in enumerate(prop): + arg = "" + prev_objs.append(obj) + try: + obj = obj[p] + except (ValueError, KeyError, IndexError, TypeError) as e: + arg = e.args[0] + if issubclass(e.__class__, TypeError): + # If obj doesn't support subscripting, state that and show the + # (valid) property that gives the object that doesn't support + # subscripting. + if i > 0: + validator = prev_objs[i - 1]._get_validator(prop[i - 1]) + arg += """ + +Invalid value received for the '{plotly_name}' property of {parent_name} + +{description}""".format( + parent_name=validator.parent_name, + plotly_name=validator.plotly_name, + description=validator.description(), + ) + # In case i is 0, the best we can do is indicate the first + # property in the string as having caused the error + disp_i = max(i - 1, 0) + dict_item_len = _len_dict_item(prop[disp_i]) + # if the path has trailing underscores, the prop string will start with "_" + trailing_underscores = "" + if prop[i][0] == "_": + trailing_underscores = " and path has trailing underscores" + # if the path has trailing underscores and the display index is + # one less than the prop index (see above), then we can also + # indicate the offending underscores + if (trailing_underscores != "") and (disp_i != i): + dict_item_len += _len_dict_item(prop[i]) + arg += """ + +Property does not support subscripting%s: +%s +%s""" % ( + trailing_underscores, + path, + display_string_positions( + prop_idcs, disp_i, length=dict_item_len, char="^" + ), + ) + else: + # State that the property for which subscripting was attempted + # is bad and indicate the start of the bad property. + arg += """ +Bad property path: +%s +%s""" % ( + path, + display_string_positions( + prop_idcs, i, length=_len_dict_item(prop[i]), char="^" + ), + ) + # Make KeyError more pretty by changing it to a PlotlyKeyError, + # because the Python interpreter has a special way of printing + # KeyError + if isinstance(e, KeyError): + e = PlotlyKeyError() + if error_cast is not None: + e = error_cast() + e.args = (arg,) + return e + return None + + +def _combine_dicts(dicts): + all_args = dict() + for d in dicts: + for k in d: + all_args[k] = d[k] + return all_args + + +def _indexing_combinations(dims, alls, product=False): + """ + Gives indexing tuples specified by the coordinates in dims. + If a member of dims is 'all' then it is replaced by the corresponding member + in alls. + If product is True, then the cartesian product of all the indices is + returned, otherwise the zip (that means index lists of mis-matched length + will yield a list of tuples whose length is the length of the shortest + list). + """ + if len(dims) == 0: + # this is because list(itertools.product(*[])) returns [()] which has non-zero + # length! + return [] + if len(dims) != len(alls): + raise ValueError( + "Must have corresponding values in alls for each value of dims. Got dims=%s and alls=%s." + % (str(dims), str(alls)) + ) + r = [] + for d, a in zip(dims, alls): + if d == "all": + d = a + elif not isinstance(d, list): + d = [d] + r.append(d) + if product: + return itertools.product(*r) + else: + return zip(*r) + + +def _is_select_subplot_coordinates_arg(*args): + """Returns true if any args are lists or the string 'all'""" + return any((a == "all") or isinstance(a, list) for a in args) + + +def _axis_spanning_shapes_docstr(shape_type): + docstr = "" + if shape_type == "hline": + docstr = """ +Add a horizontal line to a plot or subplot that extends infinitely in the +x-dimension. + +Parameters +---------- +y: float or int + A number representing the y coordinate of the horizontal line.""" + elif shape_type == "vline": + docstr = """ +Add a vertical line to a plot or subplot that extends infinitely in the +y-dimension. + +Parameters +---------- +x: float or int + A number representing the x coordinate of the vertical line.""" + elif shape_type == "hrect": + docstr = """ +Add a rectangle to a plot or subplot that extends infinitely in the +x-dimension. + +Parameters +---------- +y0: float or int + A number representing the y coordinate of one side of the rectangle. +y1: float or int + A number representing the y coordinate of the other side of the rectangle.""" + elif shape_type == "vrect": + docstr = """ +Add a rectangle to a plot or subplot that extends infinitely in the +y-dimension. + +Parameters +---------- +x0: float or int + A number representing the x coordinate of one side of the rectangle. +x1: float or int + A number representing the x coordinate of the other side of the rectangle.""" + docstr += """ +exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. +row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". +col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". +annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden.""" + if shape_type in ["hline", "vline"]: + docstr += """ +annotation_position: a string containing optionally ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the line. Example positions are "bottom left", "right top", + "right", "bottom". If an annotation is added but annotation_position is + not specified, this defaults to "top right".""" + elif shape_type in ["hrect", "vrect"]: + docstr += """ +annotation_position: a string containing optionally ["inside", "outside"], ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the rectangle. Example positions are "outside top left", "inside + bottom", "right", "inside left", "inside" ("outside" is not supported). If + an annotation is added but annotation_position is not specified this + defaults to "inside top right".""" + docstr += """ +annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. +**kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type.""" + return docstr + + +def _generator(i): + """ "cast" an iterator to a generator""" + for x in i: + yield x + + +def _set_property_provided_value(obj, name, arg, provided): + """ + Initialize a property of this object using the provided value + or a value popped from the arguments dictionary. If neither + is available, do not set the property. + """ + val = arg.pop(name, None) + val = provided if provided is not None else val + if val is not None: + obj[name] = val + + +class BaseFigure(object): + """ + Base class for all figure types (both widget and non-widget) + """ + + _bracket_re = re.compile(r"^(.*)\[(\d+)\]$") + + _valid_underscore_properties = { + "error_x": "error-x", + "error_y": "error-y", + "error_z": "error-z", + "copy_xstyle": "copy-xstyle", + "copy_ystyle": "copy-ystyle", + "copy_zstyle": "copy-zstyle", + "paper_bgcolor": "paper-bgcolor", + "plot_bgcolor": "plot-bgcolor", + } + + _set_trace_uid = False + _allow_disable_validation = True + + # Constructor + # ----------- + def __init__( + self, data=None, layout_plotly=None, frames=None, skip_invalid=False, **kwargs + ): + """ + Construct a BaseFigure object + + Parameters + ---------- + data + One of: + - A list or tuple of trace objects (or dicts that can be coerced + into trace objects) + + - If `data` is a dict that contains a 'data', + 'layout', or 'frames' key then these values are used to + construct the figure. + + - If `data` is a `BaseFigure` instance then the `data`, `layout`, + and `frames` properties are extracted from the input figure + layout_plotly + The plotly layout dict. + + Note: this property is named `layout_plotly` rather than `layout` + to deconflict it with the `layout` constructor parameter of the + `widgets.DOMWidget` ipywidgets class, as the `BaseFigureWidget` + class is a subclass of both BaseFigure and widgets.DOMWidget. + + If the `data` property is a BaseFigure instance, or a dict that + contains a 'layout' key, then this property is ignored. + frames + A list or tuple of `plotly.graph_objs.Frame` objects (or dicts + that can be coerced into Frame objects) + + If the `data` property is a BaseFigure instance, or a dict that + contains a 'frames' key, then this property is ignored. + + skip_invalid: bool + If True, invalid properties in the figure specification will be + skipped silently. If False (default) invalid properties in the + figure specification will result in a ValueError + + Raises + ------ + ValueError + if a property in the specification of data, layout, or frames + is invalid AND skip_invalid is False + """ + from .validator_cache import ValidatorCache + + data_validator = ValidatorCache.get_validator("", "data") + frames_validator = ValidatorCache.get_validator("", "frames") + layout_validator = ValidatorCache.get_validator("", "layout") + + super(BaseFigure, self).__init__() + + # Initialize validation + self._validate = kwargs.pop("_validate", True) + + # Assign layout_plotly to layout + # ------------------------------ + # See docstring note for explanation + layout = layout_plotly + + # Subplot properties + # ------------------ + # These properties are used by the tools.make_subplots logic. + # We initialize them to None here, before checking if the input data + # object is a BaseFigure, or a dict with _grid_str and _grid_ref + # properties, in which case we bring over the _grid* properties of + # the input + self._grid_str = None + self._grid_ref = None + + # Handle case where data is a Figure or Figure-like dict + # ------------------------------------------------------ + if isinstance(data, BaseFigure): + # Bring over subplot fields + self._grid_str = data._grid_str + self._grid_ref = data._grid_ref + + # Extract data, layout, and frames + data, layout, frames = data.data, data.layout, data.frames + + elif isinstance(data, dict) and ( + "data" in data or "layout" in data or "frames" in data + ): + # Bring over subplot fields + self._grid_str = data.get("_grid_str", None) + self._grid_ref = data.get("_grid_ref", None) + + # Extract data, layout, and frames + data, layout, frames = ( + data.get("data", None), + data.get("layout", None), + data.get("frames", None), + ) + + # Handle data (traces) + # -------------------- + # ### Construct data validator ### + # This is the validator that handles importing sequences of trace + # objects + # We make a copy because we are overriding the set_uid attribute + # and do not want to alter all other uses of the cached data_validator + self._data_validator = copy(data_validator) + self._data_validator.set_uid = self._set_trace_uid + + # ### Import traces ### + data = self._data_validator.validate_coerce( + data, skip_invalid=skip_invalid, _validate=self._validate + ) + + # ### Save tuple of trace objects ### + self._data_objs = data + + # ### Import clone of trace properties ### + # The _data property is a list of dicts containing the properties + # explicitly set by the user for each trace. + self._data = [deepcopy(trace._props) for trace in data] + + # ### Create data defaults ### + # _data_defaults is a tuple of dicts, one for each trace. When + # running in a widget context, these defaults are populated with + # all property values chosen by the Plotly.js library that + # aren't explicitly specified by the user. + # + # Note: No property should exist in both the _data and + # _data_defaults for the same trace. + self._data_defaults = [{} for _ in data] + + # ### Reparent trace objects ### + for trace_ind, trace in enumerate(data): + # By setting the trace's parent to be this figure, we tell the + # trace object to use the figure's _data and _data_defaults + # dicts to get/set it's properties, rather than using the trace + # object's internal _orphan_props dict. + trace._parent = self + + # We clear the orphan props since the trace no longer needs then + trace._orphan_props.clear() + + # Set trace index + trace._trace_ind = trace_ind + + # Layout + # ------ + # ### Construct layout validator ### + # This is the validator that handles importing Layout objects + self._layout_validator = layout_validator + + # ### Import Layout ### + self._layout_obj = self._layout_validator.validate_coerce( + layout, skip_invalid=skip_invalid, _validate=self._validate + ) + + # ### Import clone of layout properties ### + self._layout = deepcopy(self._layout_obj._props) + + # ### Initialize layout defaults dict ### + self._layout_defaults = {} + + # ### Reparent layout object ### + self._layout_obj._orphan_props.clear() + self._layout_obj._parent = self + + # Config + # ------ + # Pass along default config to the front end. For now this just + # ensures that the plotly domain url gets passed to the front end. + # In the future we can extend this to allow the user to supply + # arbitrary config options like in plotly.offline.plot/iplot. But + # this will require a fair amount of testing to determine which + # options are compatible with FigureWidget. + from plotly.offline.offline import _get_jconfig + + self._config = _get_jconfig(None) + + # Frames + # ------ + + # ### Construct frames validator ### + # This is the validator that handles importing sequences of frame + # objects + self._frames_validator = frames_validator + + # ### Import frames ### + self._frame_objs = self._frames_validator.validate_coerce( + frames, skip_invalid=skip_invalid + ) + + # Note: Because frames are not currently supported in the widget + # context, we don't need to follow the pattern above and create + # _frames and _frame_defaults properties and then reparent the + # frames. The figure doesn't need to be notified of + # changes to the properties in the frames object hierarchy. + + # Context manager + # --------------- + + # ### batch mode indicator ### + # Flag that indicates whether we're currently inside a batch_*() + # context + self._in_batch_mode = False + + # ### Batch trace edits ### + # Dict from trace indexes to trace edit dicts. These trace edit dicts + # are suitable as `data` elements of Plotly.animate, but not + # the Plotly.update (See `_build_update_params_from_batch`) + self._batch_trace_edits = OrderedDict() + + # ### Batch layout edits ### + # Dict from layout properties to new layout values. This dict is + # directly suitable for use in Plotly.animate and Plotly.update + self._batch_layout_edits = OrderedDict() + + # Animation property validators + # ----------------------------- + from . import animation + + self._animation_duration_validator = animation.DurationValidator() + self._animation_easing_validator = animation.EasingValidator() + + # Template + # -------- + # ### Check for default template ### + self._initialize_layout_template() + + # Process kwargs + # -------------- + for k, v in kwargs.items(): + err = _check_path_in_prop_tree(self, k) + if err is None: + self[k] = v + elif not skip_invalid: + type_err = TypeError("invalid Figure property: {}".format(k)) + type_err.args = ( + type_err.args[0] + + """ +%s""" + % (err.args[0],), + ) + raise type_err + + # Magic Methods + # ------------- + def __reduce__(self): + """ + Custom implementation of reduce is used to support deep copying + and pickling + """ + props = self.to_dict() + props["_grid_str"] = self._grid_str + props["_grid_ref"] = self._grid_ref + return (self.__class__, (props,)) + + def __setitem__(self, prop, value): + # Normalize prop + # -------------- + # Convert into a property tuple + orig_prop = prop + prop = BaseFigure._str_to_dict_path(prop) + + # Handle empty case + # ----------------- + if len(prop) == 0: + raise KeyError(orig_prop) + + # Handle scalar case + # ------------------ + # e.g. ('foo',) + elif len(prop) == 1: + # ### Unwrap scalar tuple ### + prop = prop[0] + + if prop == "data": + self.data = value + elif prop == "layout": + self.layout = value + elif prop == "frames": + self.frames = value + else: + raise KeyError(prop) + + # Handle non-scalar case + # ---------------------- + # e.g. ('foo', 1) + else: + err = _check_path_in_prop_tree(self, orig_prop, error_cast=ValueError) + if err is not None: + raise err + res = self + for p in prop[:-1]: + res = res[p] + + res._validate = self._validate + + res[prop[-1]] = value + + def __setattr__(self, prop, value): + """ + Parameters + ---------- + prop : str + The name of a direct child of this object + value + New property value + Returns + ------- + None + """ + if prop.startswith("_") or hasattr(self, prop): + # Let known properties and private properties through + super(BaseFigure, self).__setattr__(prop, value) + else: + # Raise error on unknown public properties + raise AttributeError(prop) + + def __getitem__(self, prop): + # Normalize prop + # -------------- + # Convert into a property tuple + orig_prop = prop + prop = BaseFigure._str_to_dict_path(prop) + + # Handle scalar case + # ------------------ + # e.g. ('foo',) + if len(prop) == 1: + # Unwrap scalar tuple + prop = prop[0] + + if prop == "data": + return self._data_validator.present(self._data_objs) + elif prop == "layout": + return self._layout_validator.present(self._layout_obj) + elif prop == "frames": + return self._frames_validator.present(self._frame_objs) + else: + raise KeyError(orig_prop) + + # Handle non-scalar case + # ---------------------- + # e.g. ('foo', 1) + else: + err = _check_path_in_prop_tree(self, orig_prop, error_cast=PlotlyKeyError) + if err is not None: + raise err + res = self + for p in prop: + res = res[p] + + return res + + def __iter__(self): + return iter(("data", "layout", "frames")) + + def __contains__(self, prop): + prop = BaseFigure._str_to_dict_path(prop) + if prop[0] not in ("data", "layout", "frames"): + return False + elif len(prop) == 1: + return True + else: + return prop[1:] in self[prop[0]] + + def __eq__(self, other): + if not isinstance(other, BaseFigure): + # Require objects to both be BaseFigure instances + return False + else: + # Compare plotly_json representations + + # Use _vals_equal instead of `==` to handle cases where + # underlying dicts contain numpy arrays + return BasePlotlyType._vals_equal( + self.to_plotly_json(), other.to_plotly_json() + ) + + def __repr__(self): + """ + Customize Figure representation when displayed in the + terminal/notebook + """ + props = self.to_plotly_json() + + # Elide template + template_props = props.get("layout", {}).get("template", {}) + if template_props: + props["layout"]["template"] = "..." + + repr_str = BasePlotlyType._build_repr_for_class( + props=props, class_name=self.__class__.__name__ + ) + + return repr_str + + def _repr_html_(self): + """ + Customize html representation + """ + bundle = self._repr_mimebundle_() + if "text/html" in bundle: + return bundle["text/html"] + else: + return self.to_html(full_html=False, include_plotlyjs="cdn") + + def _repr_mimebundle_(self, include=None, exclude=None, validate=True, **kwargs): + """ + Return mimebundle corresponding to default renderer. + """ + import plotly.io as pio + + renderer_str = pio.renderers.default + renderers = pio._renderers.renderers + from plotly.io._utils import validate_coerce_fig_to_dict + + fig_dict = validate_coerce_fig_to_dict(self, validate) + return renderers._build_mime_bundle(fig_dict, renderer_str, **kwargs) + + def _ipython_display_(self): + """ + Handle rich display of figures in ipython contexts + """ + import plotly.io as pio + + if pio.renderers.render_on_display and pio.renderers.default: + pio.show(self) + else: + print(repr(self)) + + def _set_property(self, name, arg, provided): + """ + Initialize a property of this object using the provided value + or a value popped from the arguments dictionary. If neither + is available, do not set the property. + """ + _set_property_provided_value(self, name, arg, provided) + + def update(self, dict1=None, overwrite=False, **kwargs): + """ + Update the properties of the figure with a dict and/or with + keyword arguments. + + This recursively updates the structure of the figure + object with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Examples + -------- + >>> import plotly.graph_objs as go + >>> fig = go.Figure(data=[{'y': [1, 2, 3]}]) + >>> fig.update(data=[{'y': [4, 5, 6]}]) # doctest: +ELLIPSIS + Figure(...) + >>> fig.to_plotly_json() # doctest: +SKIP + {'data': [{'type': 'scatter', + 'uid': 'e86a7c7a-346a-11e8-8aa8-a0999b0c017b', + 'y': array([4, 5, 6], dtype=int32)}], + 'layout': {}} + + >>> fig = go.Figure(layout={'xaxis': + ... {'color': 'green', + ... 'range': [0, 1]}}) + >>> fig.update({'layout': {'xaxis': {'color': 'pink'}}}) # doctest: +ELLIPSIS + Figure(...) + >>> fig.to_plotly_json() # doctest: +SKIP + {'data': [], + 'layout': {'xaxis': + {'color': 'pink', + 'range': [0, 1]}}} + + Returns + ------- + BaseFigure + Updated figure + """ + with self.batch_update(): + for d in [dict1, kwargs]: + if d: + for k, v in d.items(): + update_target = self[k] + if update_target == () or overwrite: + if k == "data": + # Overwrite all traces as special due to + # restrictions on trace assignment + self.data = () + self.add_traces(v) + else: + # Accept v + self[k] = v + elif ( + isinstance(update_target, BasePlotlyType) + and isinstance(v, (dict, BasePlotlyType)) + ) or ( + isinstance(update_target, tuple) + and isinstance(update_target[0], BasePlotlyType) + ): + BaseFigure._perform_update(self[k], v) + else: + self[k] = v + return self + + def pop(self, key, *args): + """ + Remove the value associated with the specified key and return it + + Parameters + ---------- + key: str + Property name + dflt + The default value to return if key was not found in figure + + Returns + ------- + value + The removed value that was previously associated with key + + Raises + ------ + KeyError + If key is not in object and no dflt argument specified + """ + # Handle default + if key not in self and args: + return args[0] + elif key in self: + val = self[key] + self[key] = None + return val + else: + raise KeyError(key) + + # Data + # ---- + @property + def data(self): + """ + The `data` property is a tuple of the figure's trace objects + + Returns + ------- + tuple[BaseTraceType] + """ + return self["data"] + + @data.setter + def data(self, new_data): + # Validate new_data + # ----------------- + err_header = ( + "The data property of a figure may only be assigned \n" + "a list or tuple that contains a permutation of a " + "subset of itself.\n" + ) + + # ### Treat None as empty ### + if new_data is None: + new_data = () + + # ### Check valid input type ### + if not isinstance(new_data, (list, tuple)): + err_msg = err_header + " Received value with type {typ}".format( + typ=type(new_data) + ) + raise ValueError(err_msg) + + # ### Check valid element types ### + for trace in new_data: + if not isinstance(trace, BaseTraceType): + err_msg = ( + err_header + + " Received element value of type {typ}".format(typ=type(trace)) + ) + raise ValueError(err_msg) + + # ### Check trace objects ### + # Require that no new traces are introduced + orig_uids = [id(trace) for trace in self.data] + new_uids = [id(trace) for trace in new_data] + + invalid_uids = set(new_uids).difference(set(orig_uids)) + if invalid_uids: + err_msg = err_header + + raise ValueError(err_msg) + + # ### Check for duplicates in assignment ### + uid_counter = collections.Counter(new_uids) + duplicate_uids = [uid for uid, count in uid_counter.items() if count > 1] + if duplicate_uids: + err_msg = err_header + " Received duplicated traces" + + raise ValueError(err_msg) + + # Remove traces + # ------------- + remove_uids = set(orig_uids).difference(set(new_uids)) + delete_inds = [] + + # ### Unparent removed traces ### + for i, trace in enumerate(self.data): + if id(trace) in remove_uids: + delete_inds.append(i) + + # Unparent trace object to be removed + old_trace = self.data[i] + old_trace._orphan_props.update(deepcopy(old_trace._props)) + old_trace._parent = None + old_trace._trace_ind = None + + # ### Compute trace props / defaults after removal ### + traces_props_post_removal = [t for t in self._data] + traces_prop_defaults_post_removal = [t for t in self._data_defaults] + uids_post_removal = [id(trace_data) for trace_data in self.data] + + for i in reversed(delete_inds): + del traces_props_post_removal[i] + del traces_prop_defaults_post_removal[i] + del uids_post_removal[i] + + # Modify in-place so we don't trigger serialization + del self._data[i] + + if delete_inds: + # Update widget, if any + self._send_deleteTraces_msg(delete_inds) + + # Move traces + # ----------- + + # ### Compute new index for each remaining trace ### + new_inds = [] + for uid in uids_post_removal: + new_inds.append(new_uids.index(uid)) + + # ### Compute current index for each remaining trace ### + current_inds = list(range(len(traces_props_post_removal))) + + # ### Check whether a move is needed ### + if not all([i1 == i2 for i1, i2 in zip(new_inds, current_inds)]): + # #### Save off index lists for moveTraces message #### + msg_current_inds = current_inds + msg_new_inds = new_inds + + # #### Reorder trace elements #### + # We do so in-place so we don't trigger traitlet property + # serialization for the FigureWidget case + # ##### Remove by curr_inds in reverse order ##### + moving_traces_data = [] + for ci in reversed(current_inds): + # Push moving traces data to front of list + moving_traces_data.insert(0, self._data[ci]) + del self._data[ci] + + # #### Sort new_inds and moving_traces_data by new_inds #### + new_inds, moving_traces_data = zip( + *sorted(zip(new_inds, moving_traces_data)) + ) + + # #### Insert by new_inds in forward order #### + for ni, trace_data in zip(new_inds, moving_traces_data): + self._data.insert(ni, trace_data) + + # #### Update widget, if any #### + self._send_moveTraces_msg(msg_current_inds, msg_new_inds) + + # ### Update data defaults ### + # There is to front-end syncronization to worry about so this + # operations doesn't need to be in-place + self._data_defaults = [ + _trace + for i, _trace in sorted(zip(new_inds, traces_prop_defaults_post_removal)) + ] + + # Update trace objects tuple + self._data_objs = list(new_data) + + # Update trace indexes + for trace_ind, trace in enumerate(self._data_objs): + trace._trace_ind = trace_ind + + def select_traces(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select traces from a particular subplot cell and/or traces + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the traces that satisfy + all of the specified selection criteria + """ + if not selector and not isinstance(selector, int): + selector = {} + + if row is not None or col is not None or secondary_y is not None: + grid_ref = self._validate_get_grid_ref() + filter_by_subplot = True + + if row is None and col is not None: + # All rows for column + grid_subplot_ref_tuples = [ref_row[col - 1] for ref_row in grid_ref] + elif col is None and row is not None: + # All columns for row + grid_subplot_ref_tuples = grid_ref[row - 1] + elif col is not None and row is not None: + # Single grid cell + grid_subplot_ref_tuples = [grid_ref[row - 1][col - 1]] + else: + # row and col are None, secondary_y not None + grid_subplot_ref_tuples = [ + refs for refs_row in grid_ref for refs in refs_row + ] + + # Collect list of subplot refs, taking secondary_y into account + grid_subplot_refs = [] + for refs in grid_subplot_ref_tuples: + if not refs: + continue + if secondary_y is not True: + grid_subplot_refs.append(refs[0]) + + if secondary_y is not False and len(refs) > 1: + grid_subplot_refs.append(refs[1]) + + else: + filter_by_subplot = False + grid_subplot_refs = None + + return self._perform_select_traces( + filter_by_subplot, grid_subplot_refs, selector + ) + + def _perform_select_traces(self, filter_by_subplot, grid_subplot_refs, selector): + from plotly._subplots import _get_subplot_ref_for_trace + + # functions for filtering + def _filter_by_subplot_ref(trace): + trace_subplot_ref = _get_subplot_ref_for_trace(trace) + return trace_subplot_ref in grid_subplot_refs + + funcs = [] + if filter_by_subplot: + funcs.append(_filter_by_subplot_ref) + + return _generator(self._filter_by_selector(self.data, funcs, selector)) + + @staticmethod + def _selector_matches(obj, selector): + if selector is None: + return True + # If selector is a string then put it at the 'type' key of a dictionary + # to select objects where "type":selector + if isinstance(selector, str): + selector = dict(type=selector) + # If selector is a dict, compare the fields + if isinstance(selector, dict) or isinstance(selector, BasePlotlyType): + # This returns True if selector is an empty dict + for k in selector: + if k not in obj: + return False + + obj_val = obj[k] + selector_val = selector[k] + + if isinstance(obj_val, BasePlotlyType): + obj_val = obj_val.to_plotly_json() + + if isinstance(selector_val, BasePlotlyType): + selector_val = selector_val.to_plotly_json() + + if obj_val != selector_val: + return False + return True + # If selector is a function, call it with the obj as the argument + elif callable(selector): + return selector(obj) + else: + raise TypeError( + "selector must be dict or a function " + "accepting a graph object returning a boolean." + ) + + def _filter_by_selector(self, objects, funcs, selector): + """ + objects is a sequence of objects, funcs a list of functions that + return True if the object should be included in the selection and False + otherwise and selector is an argument to the self._selector_matches + function. + If selector is an integer, the resulting sequence obtained after + sucessively filtering by each function in funcs is indexed by this + integer. + Otherwise selector is used as the selector argument to + self._selector_matches which is used to filter down the sequence. + The function returns the sequence (an iterator). + """ + + # if selector is not an int, we call it on each trace to test it for selection + if not isinstance(selector, int): + funcs.append(lambda obj: self._selector_matches(obj, selector)) + + def _filt(last, f): + return filter(f, last) + + filtered_objects = reduce(_filt, funcs, objects) + + if isinstance(selector, int): + return iter([list(filtered_objects)[selector]]) + + return filtered_objects + + def for_each_trace(self, fn, selector=None, row=None, col=None, secondary_y=None): + """ + Apply a function to all traces that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single trace object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for trace in self.select_traces( + selector=selector, row=row, col=col, secondary_y=secondary_y + ): + fn(trace) + + return self + + def update_traces( + self, + patch=None, + selector=None, + row=None, + col=None, + secondary_y=None, + overwrite=False, + **kwargs, + ): + """ + Perform a property update operation on all traces that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all traces that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + **kwargs + Additional property updates to apply to each selected trace. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for trace in self.select_traces( + selector=selector, row=row, col=col, secondary_y=secondary_y + ): + trace.update(patch, overwrite=overwrite, **kwargs) + return self + + def update_layout(self, dict1=None, overwrite=False, **kwargs): + """ + Update the properties of the figure's layout with a dict and/or with + keyword arguments. + + This recursively updates the structure of the original + layout with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Returns + ------- + BaseFigure + The Figure object that the update_layout method was called on + """ + self.layout.update(dict1, overwrite=overwrite, **kwargs) + return self + + def _select_layout_subplots_by_prefix( + self, prefix, selector=None, row=None, col=None, secondary_y=None + ): + """ + Helper called by code generated select_* methods + """ + + if row is not None or col is not None or secondary_y is not None: + # Build mapping from container keys ('xaxis2', 'scene4', etc.) + # to (row, col, secondary_y) triplets + grid_ref = self._validate_get_grid_ref() + container_to_row_col = {} + for r, subplot_row in enumerate(grid_ref): + for c, subplot_refs in enumerate(subplot_row): + if not subplot_refs: + continue + + # collect primary keys + for i, subplot_ref in enumerate(subplot_refs): + for layout_key in subplot_ref.layout_keys: + if layout_key.startswith(prefix): + is_secondary_y = i == 1 + container_to_row_col[layout_key] = ( + r + 1, + c + 1, + is_secondary_y, + ) + else: + container_to_row_col = None + + layout_keys_filters = [ + lambda k: k.startswith(prefix) and self.layout[k] is not None, + lambda k: row is None + or container_to_row_col.get(k, (None, None, None))[0] == row, + lambda k: col is None + or container_to_row_col.get(k, (None, None, None))[1] == col, + lambda k: ( + secondary_y is None + or container_to_row_col.get(k, (None, None, None))[2] == secondary_y + ), + ] + layout_keys = reduce( + lambda last, f: filter(f, last), + layout_keys_filters, + # Natural sort keys so that xaxis20 is after xaxis3 + _natural_sort_strings(list(self.layout)), + ) + layout_objs = [self.layout[k] for k in layout_keys] + return _generator(self._filter_by_selector(layout_objs, [], selector)) + + def _select_annotations_like( + self, prop, selector=None, row=None, col=None, secondary_y=None + ): + """ + Helper to select annotation-like elements from a layout object array. + Compatible with layout.annotations, layout.shapes, and layout.images + """ + xref_to_col = {} + yref_to_row = {} + yref_to_secondary_y = {} + if isinstance(row, int) or isinstance(col, int) or secondary_y is not None: + grid_ref = self._validate_get_grid_ref() + for r, subplot_row in enumerate(grid_ref): + for c, subplot_refs in enumerate(subplot_row): + if not subplot_refs: + continue + + for i, subplot_ref in enumerate(subplot_refs): + if subplot_ref.subplot_type == "xy": + is_secondary_y = i == 1 + xaxis, yaxis = subplot_ref.layout_keys + xref = xaxis.replace("axis", "") + yref = yaxis.replace("axis", "") + xref_to_col[xref] = c + 1 + yref_to_row[yref] = r + 1 + yref_to_secondary_y[yref] = is_secondary_y + + # filter down (select) which graph objects, by applying the filters + # successively + def _filter_row(obj): + """Filter objects in rows by column""" + return (col is None) or (xref_to_col.get(obj.xref, None) == col) + + def _filter_col(obj): + """Filter objects in columns by row""" + return (row is None) or (yref_to_row.get(obj.yref, None) == row) + + def _filter_sec_y(obj): + """Filter objects on secondary y axes""" + return (secondary_y is None) or ( + yref_to_secondary_y.get(obj.yref, None) == secondary_y + ) + + funcs = [_filter_row, _filter_col, _filter_sec_y] + + return _generator(self._filter_by_selector(self.layout[prop], funcs, selector)) + + def _add_annotation_like( + self, + prop_singular, + prop_plural, + new_obj, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=False, + ): + # Make sure we have both row and col or neither + if row is not None and col is None: + raise ValueError( + "Received row parameter but not col.\n" + "row and col must be specified together" + ) + elif col is not None and row is None: + raise ValueError( + "Received col parameter but not row.\n" + "row and col must be specified together" + ) + + # Address multiple subplots + if row is not None and _is_select_subplot_coordinates_arg(row, col): + # TODO product argument could be added + rows_cols = self._select_subplot_coordinates(row, col) + for r, c in rows_cols: + self._add_annotation_like( + prop_singular, + prop_plural, + new_obj, + row=r, + col=c, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + return self + + # Get grid_ref if specific row or column requested + if row is not None: + grid_ref = self._validate_get_grid_ref() + if row > len(grid_ref): + raise IndexError( + "row index %d out-of-bounds, row index must be between 1 and %d, inclusive." + % (row, len(grid_ref)) + ) + if col > len(grid_ref[row - 1]): + raise IndexError( + "column index %d out-of-bounds, " + "column index must be between 1 and %d, inclusive." + % (row, len(grid_ref[row - 1])) + ) + refs = grid_ref[row - 1][col - 1] + if not refs: + raise ValueError( + "No subplot found at position ({r}, {c})".format(r=row, c=col) + ) + + if refs[0].subplot_type != "xy": + raise ValueError( + """ +Cannot add {prop_singular} to subplot at position ({r}, {c}) because subplot +is of type {subplot_type}.""".format( + prop_singular=prop_singular, + r=row, + c=col, + subplot_type=refs[0].subplot_type, + ) + ) + + # If the new_object was created with a yref specified that did not include paper or domain, the specified yref should be used otherwise assign the xref and yref from the layout_keys + if ( + new_obj.yref is None + or new_obj.yref == "y" + or "paper" in new_obj.yref + or "domain" in new_obj.yref + ): + if len(refs) == 1 and secondary_y: + raise ValueError( + """ + Cannot add {prop_singular} to secondary y-axis of subplot at position ({r}, {c}) + because subplot does not have a secondary y-axis""".format( + prop_singular=prop_singular, r=row, c=col + ) + ) + if secondary_y: + xaxis, yaxis = refs[1].layout_keys + else: + xaxis, yaxis = refs[0].layout_keys + xref, yref = xaxis.replace("axis", ""), yaxis.replace("axis", "") + else: + yref = new_obj.yref + xaxis = refs[0].layout_keys[0] + xref = xaxis.replace("axis", "") + # if exclude_empty_subplots is True, check to see if subplot is + # empty and return if it is + if exclude_empty_subplots and ( + not self._subplot_not_empty( + xref, yref, selector=bool(exclude_empty_subplots) + ) + ): + return self + + # in case the user specified they wanted an axis to refer to the + # domain of that axis and not the data, append ' domain' to the + # computed axis accordingly + def _add_domain(ax_letter, new_axref): + axref = ax_letter + "ref" + if axref in new_obj._props.keys() and "domain" in new_obj[axref]: + new_axref += " domain" + return new_axref + + xref, yref = map(lambda t: _add_domain(*t), zip(["x", "y"], [xref, yref])) + new_obj.update(xref=xref, yref=yref) + + self.layout[prop_plural] += (new_obj,) + # The 'new_obj.xref' and 'new_obj.yref' parameters need to be reset otherwise it + # will appear as if user supplied yref params when looping through subplots and + # will force annotation to be on the axis of the last drawn annotation + # i.e. they all end up on the same axis. + new_obj.update(xref=None, yref=None) + + return self + + # Restyle + # ------- + def plotly_restyle(self, restyle_data, trace_indexes=None, **kwargs): + """ + Perform a Plotly restyle operation on the figure's traces + + Parameters + ---------- + restyle_data : dict + Dict of trace style updates. + + Keys are strings that specify the properties to be updated. + Nested properties are expressed by joining successive keys on + '.' characters (e.g. 'marker.color'). + + Values may be scalars or lists. When values are scalars, + that scalar value is applied to all traces specified by the + `trace_indexes` parameter. When values are lists, + the restyle operation will cycle through the elements + of the list as it cycles through the traces specified by the + `trace_indexes` parameter. + + Caution: To use plotly_restyle to update a list property (e.g. + the `x` property of the scatter trace), the property value + should be a scalar list containing the list to update with. For + example, the following command would be used to update the 'x' + property of the first trace to the list [1, 2, 3] + + >>> import plotly.graph_objects as go + >>> fig = go.Figure(go.Scatter(x=[2, 4, 6])) + >>> fig.plotly_restyle({'x': [[1, 2, 3]]}, 0) + + trace_indexes : int or list of int + Trace index, or list of trace indexes, that the restyle operation + applies to. Defaults to all trace indexes. + + Returns + ------- + None + """ + + # Normalize trace indexes + # ----------------------- + trace_indexes = self._normalize_trace_indexes(trace_indexes) + + # Handle source_view_id + # --------------------- + # If not None, the source_view_id is the UID of the frontend + # Plotly.js view that initially triggered this restyle operation + # (e.g. the user clicked on the legend to hide a trace). We pass + # this UID along so that the frontend views can determine whether + # they need to apply the restyle operation on themselves. + source_view_id = kwargs.get("source_view_id", None) + + # Perform restyle on trace dicts + # ------------------------------ + restyle_changes = self._perform_plotly_restyle(restyle_data, trace_indexes) + if restyle_changes: + # The restyle operation resulted in a change to some trace + # properties, so we dispatch change callbacks and send the + # restyle message to the frontend (if any) + msg_kwargs = ( + {"source_view_id": source_view_id} if source_view_id is not None else {} + ) + + self._send_restyle_msg( + restyle_changes, trace_indexes=trace_indexes, **msg_kwargs + ) + + self._dispatch_trace_change_callbacks(restyle_changes, trace_indexes) + + def _perform_plotly_restyle(self, restyle_data, trace_indexes): + """ + Perform a restyle operation on the figure's traces data and return + the changes that were applied + + Parameters + ---------- + restyle_data : dict[str, any] + See docstring for plotly_restyle + trace_indexes : list[int] + List of trace indexes that restyle operation applies to + Returns + ------- + restyle_changes: dict[str, any] + Subset of restyle_data including only the keys / values that + resulted in a change to the figure's traces data + """ + # Initialize restyle changes + # -------------------------- + # This will be a subset of the restyle_data including only the + # keys / values that are changed in the figure's trace data + restyle_changes = {} + + # Process each key + # ---------------- + for key_path_str, v in restyle_data.items(): + # Track whether any of the new values are cause a change in + # self._data + any_vals_changed = False + for i, trace_ind in enumerate(trace_indexes): + if trace_ind >= len(self._data): + raise ValueError( + "Trace index {trace_ind} out of range".format( + trace_ind=trace_ind + ) + ) + + # Get new value for this particular trace + trace_v = v[i % len(v)] if isinstance(v, list) else v + + if trace_v is not Undefined: + # Get trace being updated + trace_obj = self.data[trace_ind] + + # Validate key_path_str + if not BaseFigure._is_key_path_compatible(key_path_str, trace_obj): + trace_class = trace_obj.__class__.__name__ + raise ValueError( + """ +Invalid property path '{key_path_str}' for trace class {trace_class} +""".format(key_path_str=key_path_str, trace_class=trace_class) + ) + + # Apply set operation for this trace and thist value + val_changed = BaseFigure._set_in( + self._data[trace_ind], key_path_str, trace_v + ) + + # Update any_vals_changed status + any_vals_changed = any_vals_changed or val_changed + + if any_vals_changed: + restyle_changes[key_path_str] = v + + return restyle_changes + + def _restyle_child(self, child, key_path_str, val): + """ + Process restyle operation on a child trace object + + Note: This method name/signature must match the one in + BasePlotlyType. BasePlotlyType objects call their parent's + _restyle_child method without knowing whether their parent is a + BasePlotlyType or a BaseFigure. + + Parameters + ---------- + child : BaseTraceType + Child being restyled + key_path_str : str + A key path string (e.g. 'foo.bar[0]') + val + Restyle value + + Returns + ------- + None + """ + + # Compute trace index + # ------------------- + trace_index = child._trace_ind + + # Not in batch mode + # ----------------- + # Dispatch change callbacks and send restyle message + if not self._in_batch_mode: + send_val = [val] + restyle = {key_path_str: send_val} + self._send_restyle_msg(restyle, trace_indexes=trace_index) + self._dispatch_trace_change_callbacks(restyle, [trace_index]) + + # In batch mode + # ------------- + # Add key_path_str/val to saved batch edits + else: + if trace_index not in self._batch_trace_edits: + self._batch_trace_edits[trace_index] = OrderedDict() + self._batch_trace_edits[trace_index][key_path_str] = val + + def _normalize_trace_indexes(self, trace_indexes): + """ + Input trace index specification and return list of the specified trace + indexes + + Parameters + ---------- + trace_indexes : None or int or list[int] + + Returns + ------- + list[int] + """ + if trace_indexes is None: + trace_indexes = list(range(len(self.data))) + if not isinstance(trace_indexes, (list, tuple)): + trace_indexes = [trace_indexes] + return list(trace_indexes) + + @staticmethod + def _str_to_dict_path(key_path_str): + """ + Convert a key path string into a tuple of key path elements. + + Parameters + ---------- + key_path_str : str + Key path string, where nested keys are joined on '.' characters + and array indexes are specified using brackets + (e.g. 'foo.bar[1]') + Returns + ------- + tuple[str | int] + """ + if ( + isinstance(key_path_str, str) + and "." not in key_path_str + and "[" not in key_path_str + and "_" not in key_path_str + ): + # Fast path for common case that avoids regular expressions + return (key_path_str,) + elif isinstance(key_path_str, tuple): + # Nothing to do + return key_path_str + else: + ret = _str_to_dict_path_full(key_path_str)[0] + return ret + + @staticmethod + def _set_in(d, key_path_str, v): + """ + Set a value in a nested dict using a key path string + (e.g. 'foo.bar[0]') + + Parameters + ---------- + d : dict + Input dict to set property in + key_path_str : str + Key path string, where nested keys are joined on '.' characters + and array indexes are specified using brackets + (e.g. 'foo.bar[1]') + v + New value + Returns + ------- + bool + True if set resulted in modification of dict (i.e. v was not + already present at the specified location), False otherwise. + """ + + # Validate inputs + # --------------- + assert isinstance(d, dict) + + # Compute key path + # ---------------- + # Convert the key_path_str into a tuple of key paths + # e.g. 'foo.bar[0]' -> ('foo', 'bar', 0) + key_path = BaseFigure._str_to_dict_path(key_path_str) + + # Initialize val_parent + # --------------------- + # This variable will be assigned to the parent of the next key path + # element currently being processed + val_parent = d + + # Initialize parent dict or list of value to be assigned + # ----------------------------------------------------- + for kp, key_path_el in enumerate(key_path[:-1]): + # Extend val_parent list if needed + if isinstance(val_parent, list) and isinstance(key_path_el, int): + while len(val_parent) <= key_path_el: + val_parent.append(None) + + elif isinstance(val_parent, dict) and key_path_el not in val_parent: + if isinstance(key_path[kp + 1], int): + val_parent[key_path_el] = [] + else: + val_parent[key_path_el] = {} + + val_parent = val_parent[key_path_el] + + # Assign value to to final parent dict or list + # -------------------------------------------- + # ### Get reference to final key path element ### + last_key = key_path[-1] + + # ### Track whether assignment alters parent ### + val_changed = False + + # v is Undefined + # -------------- + # Don't alter val_parent + if v is Undefined: + pass + + # v is None + # --------- + # Check whether we can remove key from parent + elif v is None: + if isinstance(val_parent, dict): + if last_key in val_parent: + # Parent is a dict and has last_key as a current key so + # we can pop the key, which alters parent + val_parent.pop(last_key) + val_changed = True + elif isinstance(val_parent, list): + if isinstance(last_key, int) and 0 <= last_key < len(val_parent): + # Parent is a list and last_key is a valid index so we + # can set the element value to None + val_parent[last_key] = None + val_changed = True + else: + # Unsupported parent type (numpy array for example) + raise ValueError( + """ + Cannot remove element of type {typ} at location {raw_key}""".format( + typ=type(val_parent), raw_key=key_path_str + ) + ) + # v is a valid value + # ------------------ + # Check whether parent should be updated + else: + if isinstance(val_parent, dict): + if last_key not in val_parent or not BasePlotlyType._vals_equal( + val_parent[last_key], v + ): + # Parent is a dict and does not already contain the + # value v at key last_key + val_parent[last_key] = v + val_changed = True + elif isinstance(val_parent, list): + if isinstance(last_key, int): + # Extend list with Nones if needed so that last_key is + # in bounds + while len(val_parent) <= last_key: + val_parent.append(None) + + if not BasePlotlyType._vals_equal(val_parent[last_key], v): + # Parent is a list and does not already contain the + # value v at index last_key + val_parent[last_key] = v + val_changed = True + else: + # Unsupported parent type (numpy array for example) + raise ValueError( + """ + Cannot set element of type {typ} at location {raw_key}""".format( + typ=type(val_parent), raw_key=key_path_str + ) + ) + return val_changed + + # Add traces + # ---------- + @staticmethod + def _raise_invalid_rows_cols(name, n, invalid): + rows_err_msg = """ + If specified, the {name} parameter must be a list or tuple of integers + of length {n} (The number of traces being added) + + Received: {invalid} + """.format(name=name, n=n, invalid=invalid) + + raise ValueError(rows_err_msg) + + @staticmethod + def _validate_rows_cols(name, n, vals): + if vals is None: + pass + elif isinstance(vals, (list, tuple)): + if len(vals) != n: + BaseFigure._raise_invalid_rows_cols(name=name, n=n, invalid=vals) + + int_type = _get_int_type() + + if [r for r in vals if not isinstance(r, int_type)]: + BaseFigure._raise_invalid_rows_cols(name=name, n=n, invalid=vals) + else: + BaseFigure._raise_invalid_rows_cols(name=name, n=n, invalid=vals) + + def add_trace( + self, trace, row=None, col=None, secondary_y=None, exclude_empty_subplots=False + ): + """ + Add a trace to the figure + + Parameters + ---------- + trace : BaseTraceType or dict + Either: + - An instances of a trace classe from the plotly.graph_objs + package (e.g plotly.graph_objs.Scatter, plotly.graph_objs.Bar) + - or a dicts where: + + - The 'type' property specifies the trace type (e.g. + 'scatter', 'bar', 'area', etc.). If the dict has no 'type' + property then 'scatter' is assumed. + - All remaining properties are passed to the constructor + of the specified trace type. + + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`. + If 'all', addresses all rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`. + If 'all', addresses all columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + * The trace argument is a 2D cartesian trace + (scatter, bar, etc.) + exclude_empty_subplots: boolean + If True, the trace will not be added to subplots that don't already + have traces. + Returns + ------- + BaseFigure + The Figure that add_trace was called on + + Examples + -------- + + >>> from plotly import subplots + >>> import plotly.graph_objs as go + + Add two Scatter traces to a figure + + >>> fig = go.Figure() + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2])) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2])) # doctest: +ELLIPSIS + Figure(...) + + + Add two Scatter traces to vertically stacked subplots + + >>> fig = subplots.make_subplots(rows=2) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + """ + # Make sure we have both row and col or neither + if row is not None and col is None: + raise ValueError( + "Received row parameter but not col.\n" + "row and col must be specified together" + ) + elif col is not None and row is None: + raise ValueError( + "Received col parameter but not row.\n" + "row and col must be specified together" + ) + + # Address multiple subplots + if row is not None and _is_select_subplot_coordinates_arg(row, col): + # TODO add product argument + rows_cols = self._select_subplot_coordinates(row, col) + for r, c in rows_cols: + self.add_trace( + trace, + row=r, + col=c, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + return self + + return self.add_traces( + data=[trace], + rows=[row] if row is not None else None, + cols=[col] if col is not None else None, + secondary_ys=[secondary_y] if secondary_y is not None else None, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def add_traces( + self, + data, + rows=None, + cols=None, + secondary_ys=None, + exclude_empty_subplots=False, + ): + """ + Add traces to the figure + + Parameters + ---------- + data : list[BaseTraceType or dict] + A list of trace specifications to be added. + Trace specifications may be either: + + - Instances of trace classes from the plotly.graph_objs + package (e.g plotly.graph_objs.Scatter, plotly.graph_objs.Bar) + - Dicts where: + + - The 'type' property specifies the trace type (e.g. + 'scatter', 'bar', 'area', etc.). If the dict has no 'type' + property then 'scatter' is assumed. + - All remaining properties are passed to the constructor + of the specified trace type. + + rows : None, list[int], or int (default None) + List of subplot row indexes (starting from 1) for the traces to be + added. Only valid if figure was created using + `plotly.tools.make_subplots` + If a single integer is passed, all traces will be added to row number + + cols : None or list[int] (default None) + List of subplot column indexes (starting from 1) for the traces + to be added. Only valid if figure was created using + `plotly.tools.make_subplots` + If a single integer is passed, all traces will be added to column number + + + secondary_ys: None or list[boolean] (default None) + List of secondary_y booleans for traces to be added. See the + docstring for `add_trace` for more info. + + exclude_empty_subplots: boolean + If True, the trace will not be added to subplots that don't already + have traces. + + Returns + ------- + BaseFigure + The Figure that add_traces was called on + + Examples + -------- + + >>> from plotly import subplots + >>> import plotly.graph_objs as go + + Add two Scatter traces to a figure + + >>> fig = go.Figure() + >>> fig.add_traces([go.Scatter(x=[1,2,3], y=[2,1,2]), + ... go.Scatter(x=[1,2,3], y=[2,1,2])]) # doctest: +ELLIPSIS + Figure(...) + + Add two Scatter traces to vertically stacked subplots + + >>> fig = subplots.make_subplots(rows=2) + >>> fig.add_traces([go.Scatter(x=[1,2,3], y=[2,1,2]), + ... go.Scatter(x=[1,2,3], y=[2,1,2])], + ... rows=[1, 2], cols=[1, 1]) # doctest: +ELLIPSIS + Figure(...) + """ + + # Validate traces + data = self._data_validator.validate_coerce(data) + + # Set trace indexes + for ind, new_trace in enumerate(data): + new_trace._trace_ind = ind + len(self.data) + + # Allow integers as inputs to subplots + int_type = _get_int_type() + + if isinstance(rows, int_type): + rows = [rows] * len(data) + + if isinstance(cols, int_type): + cols = [cols] * len(data) + + # Validate rows / cols + n = len(data) + BaseFigure._validate_rows_cols("rows", n, rows) + BaseFigure._validate_rows_cols("cols", n, cols) + + # Make sure we have both rows and cols or neither + if rows is not None and cols is None: + raise ValueError( + "Received rows parameter but not cols.\n" + "rows and cols must be specified together" + ) + elif cols is not None and rows is None: + raise ValueError( + "Received cols parameter but not rows.\n" + "rows and cols must be specified together" + ) + + # Process secondary_ys defaults + if secondary_ys is not None and rows is None: + # Default rows/cols to 1s if secondary_ys specified but not rows + # or cols + rows = [1] * len(secondary_ys) + cols = rows + elif secondary_ys is None and rows is not None: + # Default secondary_ys to Nones if secondary_ys is not specified + # but not rows and cols are specified + secondary_ys = [None] * len(rows) + + # Apply rows / cols + if rows is not None: + for trace, row, col, secondary_y in zip(data, rows, cols, secondary_ys): + self._set_trace_grid_position(trace, row, col, secondary_y) + + if exclude_empty_subplots: + data = list( + filter( + lambda trace: self._subplot_not_empty( + trace["xaxis"], trace["yaxis"], bool(exclude_empty_subplots) + ), + data, + ) + ) + + # Make deep copy of trace data (Optimize later if needed) + new_traces_data = [deepcopy(trace._props) for trace in data] + + # Update trace parent + for trace in data: + trace._parent = self + trace._orphan_props.clear() + + # Update python side + # Use extend instead of assignment so we don't trigger serialization + self._data.extend(new_traces_data) + self._data_defaults = self._data_defaults + [{} for _ in data] + self._data_objs = self._data_objs + data + + # Update messages + self._send_addTraces_msg(new_traces_data) + + return self + + # Subplots + # -------- + def print_grid(self): + """ + Print a visual layout of the figure's axes arrangement. + This is only valid for figures that are created + with plotly.tools.make_subplots. + """ + if self._grid_str is None: + raise Exception("Use plotly.tools.make_subplots to create a subplot grid.") + print(self._grid_str) + + def append_trace(self, trace, row, col): + """ + Add a trace to the figure bound to axes at the specified row, + col index. + + A row, col index grid is generated for figures created with + plotly.tools.make_subplots, and can be viewed with the `print_grid` + method + + Parameters + ---------- + trace + The data trace to be bound + row: int + Subplot row index (see Figure.print_grid) + col: int + Subplot column index (see Figure.print_grid) + + Examples + -------- + + >>> from plotly import tools + >>> import plotly.graph_objs as go + >>> # stack two subplots vertically + >>> fig = tools.make_subplots(rows=2) + + This is the format of your plot grid: + [ (1,1) x1,y1 ] + [ (2,1) x2,y2 ] + + >>> fig.append_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) + >>> fig.append_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) + """ + warnings.warn( + """\ +The append_trace method is deprecated and will be removed in a future version. +Please use the add_trace method with the row and col parameters. +""", + DeprecationWarning, + ) + + self.add_trace(trace=trace, row=row, col=col) + + def _set_trace_grid_position(self, trace, row, col, secondary_y=False): + from plotly._subplots import _set_trace_grid_reference + + grid_ref = self._validate_get_grid_ref() + return _set_trace_grid_reference( + trace, self.layout, grid_ref, row, col, secondary_y + ) + + def _validate_get_grid_ref(self): + try: + grid_ref = self._grid_ref + if grid_ref is None: + raise AttributeError("_grid_ref") + except AttributeError: + raise Exception( + "In order to reference traces by row and column, " + "you must first use " + "plotly.tools.make_subplots " + "to create the figure with a subplot grid." + ) + return grid_ref + + def _get_subplot_rows_columns(self): + """ + Returns a pair of lists, the first containing all the row indices and + the second all the column indices. + """ + # currently, this just iterates over all the rows and columns (because + # self._grid_ref is currently always rectangular) + grid_ref = self._validate_get_grid_ref() + nrows = len(grid_ref) + ncols = len(grid_ref[0]) + return (range(1, nrows + 1), range(1, ncols + 1)) + + def _get_subplot_coordinates(self): + """ + Returns an iterator over (row,col) pairs representing all the possible + subplot coordinates. + """ + return itertools.product(*self._get_subplot_rows_columns()) + + def _select_subplot_coordinates(self, rows, cols, product=False): + """ + Allows selecting all or a subset of the subplots. + If any of rows or columns is 'all', product is set to True. This is + probably the expected behaviour, so that rows=1,cols='all' selects all + the columns in row 1 (otherwise it would just select the subplot in the + first row and first column). + """ + product |= any([s == "all" for s in [rows, cols]]) + # TODO: If grid_ref ever becomes non-rectangular, then t should be the + # set-intersection of the result of _indexing_combinations and + # _get_subplot_coordinates, because some coordinates given by + # the _indexing_combinations function might be invalid. + t = _indexing_combinations( + [rows, cols], + list(self._get_subplot_rows_columns()), + product=product, + ) + t = list(t) + # remove rows and cols where the subplot is "None" + grid_ref = self._validate_get_grid_ref() + t = list(filter(lambda u: grid_ref[u[0] - 1][u[1] - 1] is not None, t)) + return t + + def get_subplot(self, row, col, secondary_y=False): + """ + Return an object representing the subplot at the specified row + and column. May only be used on Figures created using + plotly.tools.make_subplots + + Parameters + ---------- + row: int + 1-based index of subplot row + col: int + 1-based index of subplot column + secondary_y: bool + If True, select the subplot that consists of the x-axis and the + secondary y-axis at the specified row/col. Only valid if the + subplot at row/col is an 2D cartesian subplot that was created + with a secondary y-axis. See the docstring for the specs argument + to make_subplots for more info on creating a subplot with a + secondary y-axis. + Returns + ------- + subplot + * None: if subplot is empty + * plotly.graph_objs.layout.Scene: if subplot type is 'scene' + * plotly.graph_objs.layout.Polar: if subplot type is 'polar' + * plotly.graph_objs.layout.Ternary: if subplot type is 'ternary' + * plotly.graph_objs.layout.Mapbox: if subplot type is 'ternary' + * SubplotDomain namedtuple with `x` and `y` fields: + if subplot type is 'domain'. + - x: length 2 list of the subplot start and stop width + - y: length 2 list of the subplot start and stop height + * SubplotXY namedtuple with `xaxis` and `yaxis` fields: + if subplot type is 'xy'. + - xaxis: plotly.graph_objs.layout.XAxis instance for subplot + - yaxis: plotly.graph_objs.layout.YAxis instance for subplot + """ + from plotly._subplots import _get_grid_subplot + + return _get_grid_subplot(self, row, col, secondary_y) + + # Child property operations + # ------------------------- + def _get_child_props(self, child): + """ + Return the properties dict for a child trace or child layout + + Note: this method must match the name/signature of one on + BasePlotlyType + + Parameters + ---------- + child : BaseTraceType | BaseLayoutType + + Returns + ------- + dict + """ + # Try to find index of child as a trace + # ------------------------------------- + if isinstance(child, BaseTraceType): + # ### Child is a trace ### + trace_index = child._trace_ind + return self._data[trace_index] + + # Child is the layout + # ------------------- + elif child is self.layout: + return self._layout + + # Unknown child + # ------------- + else: + raise ValueError("Unrecognized child: %s" % child) + + def _get_child_prop_defaults(self, child): + """ + Return the default properties dict for a child trace or child layout + + Note: this method must match the name/signature of one on + BasePlotlyType + + Parameters + ---------- + child : BaseTraceType | BaseLayoutType + + Returns + ------- + dict + """ + # Child is a trace + # ---------------- + if isinstance(child, BaseTraceType): + trace_index = child._trace_ind + return self._data_defaults[trace_index] + + # Child is the layout + # ------------------- + elif child is self.layout: + return self._layout_defaults + + # Unknown child + # ------------- + else: + raise ValueError("Unrecognized child: %s" % child) + + def _init_child_props(self, child): + """ + Initialize the properties dict for a child trace or layout + + Note: this method must match the name/signature of one on + BasePlotlyType + + Parameters + ---------- + child : BaseTraceType | BaseLayoutType + + Returns + ------- + None + """ + # layout and traces dict are initialize when figure is constructed + # and when new traces are added to the figure + pass + + # Layout + # ------ + def _initialize_layout_template(self): + import plotly.io as pio + + if self._layout_obj._props.get("template", None) is None: + if pio.templates.default is not None: + # Assume default template is already validated + if self._allow_disable_validation: + self._layout_obj._validate = False + try: + if isinstance(pio.templates.default, BasePlotlyType): + # Template object. Don't want to actually import `Template` + # here for performance so we check against `BasePlotlyType` + template_object = pio.templates.default + else: + # Name of registered template object + template_object = pio.templates[pio.templates.default] + self._layout_obj.template = template_object + finally: + self._layout_obj._validate = self._validate + + @property + def layout(self): + """ + The `layout` property of the figure + + Returns + ------- + plotly.graph_objs.Layout + """ + return self["layout"] + + @layout.setter + def layout(self, new_layout): + # Validate new layout + # ------------------- + new_layout = self._layout_validator.validate_coerce(new_layout) + new_layout_data = deepcopy(new_layout._props) + + # Unparent current layout + # ----------------------- + if self._layout_obj: + old_layout_data = deepcopy(self._layout_obj._props) + self._layout_obj._orphan_props.update(old_layout_data) + self._layout_obj._parent = None + + # Parent new layout + # ----------------- + self._layout = new_layout_data + new_layout._parent = self + new_layout._orphan_props.clear() + self._layout_obj = new_layout + + # Initialize template object + # -------------------------- + self._initialize_layout_template() + + # Notify JS side + self._send_relayout_msg(new_layout_data) + + def plotly_relayout(self, relayout_data, **kwargs): + """ + Perform a Plotly relayout operation on the figure's layout + + Parameters + ---------- + relayout_data : dict + Dict of layout updates + + dict keys are strings that specify the properties to be updated. + Nested properties are expressed by joining successive keys on + '.' characters (e.g. 'xaxis.range') + + dict values are the values to use to update the layout. + + Returns + ------- + None + """ + + # Handle source_view_id + # --------------------- + # If not None, the source_view_id is the UID of the frontend + # Plotly.js view that initially triggered this relayout operation + # (e.g. the user clicked on the toolbar to change the drag mode + # from zoom to pan). We pass this UID along so that the frontend + # views can determine whether they need to apply the relayout + # operation on themselves. + if "source_view_id" in kwargs: + msg_kwargs = {"source_view_id": kwargs["source_view_id"]} + else: + msg_kwargs = {} + + # Perform relayout operation on layout dict + # ----------------------------------------- + relayout_changes = self._perform_plotly_relayout(relayout_data) + if relayout_changes: + # The relayout operation resulted in a change to some layout + # properties, so we dispatch change callbacks and send the + # relayout message to the frontend (if any) + self._send_relayout_msg(relayout_changes, **msg_kwargs) + + self._dispatch_layout_change_callbacks(relayout_changes) + + def _perform_plotly_relayout(self, relayout_data): + """ + Perform a relayout operation on the figure's layout data and return + the changes that were applied + + Parameters + ---------- + relayout_data : dict[str, any] + See the docstring for plotly_relayout + Returns + ------- + relayout_changes: dict[str, any] + Subset of relayout_data including only the keys / values that + resulted in a change to the figure's layout data + """ + # Initialize relayout changes + # --------------------------- + # This will be a subset of the relayout_data including only the + # keys / values that are changed in the figure's layout data + relayout_changes = {} + + # Process each key + # ---------------- + for key_path_str, v in relayout_data.items(): + if not BaseFigure._is_key_path_compatible(key_path_str, self.layout): + raise ValueError( + """ +Invalid property path '{key_path_str}' for layout +""".format(key_path_str=key_path_str) + ) + + # Apply set operation on the layout dict + val_changed = BaseFigure._set_in(self._layout, key_path_str, v) + + if val_changed: + relayout_changes[key_path_str] = v + + return relayout_changes + + @staticmethod + def _is_key_path_compatible(key_path_str, plotly_obj): + """ + Return whether the specifieid key path string is compatible with + the specified plotly object for the purpose of relayout/restyle + operation + """ + + # Convert string to tuple of path components + # e.g. 'foo[0].bar[1]' -> ('foo', 0, 'bar', 1) + key_path_tuple = BaseFigure._str_to_dict_path(key_path_str) + + # Remove trailing integer component + # e.g. ('foo', 0, 'bar', 1) -> ('foo', 0, 'bar') + # We do this because it's fine for relayout/restyle to create new + # elements in the final array in the path. + if isinstance(key_path_tuple[-1], int): + key_path_tuple = key_path_tuple[:-1] + + # Test whether modified key path tuple is in plotly_obj + return key_path_tuple in plotly_obj + + def _relayout_child(self, child, key_path_str, val): + """ + Process relayout operation on child layout object + + Parameters + ---------- + child : BaseLayoutType + The figure's layout + key_path_str : + A key path string (e.g. 'foo.bar[0]') + val + Relayout value + + Returns + ------- + None + """ + + # Validate input + # -------------- + assert child is self.layout + + # Not in batch mode + # ------------- + # Dispatch change callbacks and send relayout message + if not self._in_batch_mode: + relayout_msg = {key_path_str: val} + self._send_relayout_msg(relayout_msg) + self._dispatch_layout_change_callbacks(relayout_msg) + + # In batch mode + # ------------- + # Add key_path_str/val to saved batch edits + else: + self._batch_layout_edits[key_path_str] = val + + # Dispatch change callbacks + # ------------------------- + @staticmethod + def _build_dispatch_plan(key_path_strs): + """ + Build a dispatch plan for a list of key path strings + + A dispatch plan is a dict: + - *from* path tuples that reference an object that has descendants + that are referenced in `key_path_strs`. + - *to* sets of tuples that correspond to descendants of the object + above. + + Parameters + ---------- + key_path_strs : list[str] + List of key path strings. For example: + + ['xaxis.rangeselector.font.color', 'xaxis.rangeselector.bgcolor'] + + Returns + ------- + dispatch_plan: dict[tuple[str|int], set[tuple[str|int]]] + + Examples + -------- + + >>> key_path_strs = ['xaxis.rangeselector.font.color', + ... 'xaxis.rangeselector.bgcolor'] + + >>> BaseFigure._build_dispatch_plan(key_path_strs) # doctest: +SKIP + {(): {'xaxis', + ('xaxis', 'rangeselector'), + ('xaxis', 'rangeselector', 'bgcolor'), + ('xaxis', 'rangeselector', 'font'), + ('xaxis', 'rangeselector', 'font', 'color')}, + ('xaxis',): {('rangeselector',), + ('rangeselector', 'bgcolor'), + ('rangeselector', 'font'), + ('rangeselector', 'font', 'color')}, + ('xaxis', 'rangeselector'): {('bgcolor',), + ('font',), + ('font', 'color')}, + ('xaxis', 'rangeselector', 'font'): {('color',)}} + """ + dispatch_plan = {} + + for key_path_str in key_path_strs: + key_path = BaseFigure._str_to_dict_path(key_path_str) + key_path_so_far = () + keys_left = key_path + + # Iterate down the key path + for next_key in key_path: + if key_path_so_far not in dispatch_plan: + dispatch_plan[key_path_so_far] = set() + + to_add = [keys_left[: i + 1] for i in range(len(keys_left))] + dispatch_plan[key_path_so_far].update(to_add) + + key_path_so_far = key_path_so_far + (next_key,) + keys_left = keys_left[1:] + + return dispatch_plan + + def _dispatch_layout_change_callbacks(self, relayout_data): + """ + Dispatch property change callbacks given relayout_data + + Parameters + ---------- + relayout_data : dict[str, any] + See docstring for plotly_relayout. + + Returns + ------- + None + """ + # Build dispatch plan + # ------------------- + key_path_strs = list(relayout_data.keys()) + dispatch_plan = BaseFigure._build_dispatch_plan(key_path_strs) + + # Dispatch changes to each layout objects + # --------------------------------------- + for path_tuple, changed_paths in dispatch_plan.items(): + if path_tuple in self.layout: + dispatch_obj = self.layout[path_tuple] + if isinstance(dispatch_obj, BasePlotlyType): + dispatch_obj._dispatch_change_callbacks(changed_paths) + + def _dispatch_trace_change_callbacks(self, restyle_data, trace_indexes): + """ + Dispatch property change callbacks given restyle_data + + Parameters + ---------- + restyle_data : dict[str, any] + See docstring for plotly_restyle. + + trace_indexes : list[int] + List of trace indexes that restyle operation applied to + + Returns + ------- + None + """ + + # Build dispatch plan + # ------------------- + key_path_strs = list(restyle_data.keys()) + dispatch_plan = BaseFigure._build_dispatch_plan(key_path_strs) + + # Dispatch changes to each object in each trace + # --------------------------------------------- + for path_tuple, changed_paths in dispatch_plan.items(): + for trace_ind in trace_indexes: + trace = self.data[trace_ind] + if path_tuple in trace: + dispatch_obj = trace[path_tuple] + if isinstance(dispatch_obj, BasePlotlyType): + dispatch_obj._dispatch_change_callbacks(changed_paths) + + # Frames + # ------ + @property + def frames(self): + """ + The `frames` property is a tuple of the figure's frame objects + + Returns + ------- + tuple[plotly.graph_objs.Frame] + """ + return self["frames"] + + @frames.setter + def frames(self, new_frames): + # Note: Frames are not supported by the FigureWidget subclass so we + # only validate coerce the frames. We don't emit any events on frame + # changes, and we don't reparent the frames. + + # Validate frames + self._frame_objs = self._frames_validator.validate_coerce(new_frames) + + # Update + # ------ + def plotly_update( + self, restyle_data=None, relayout_data=None, trace_indexes=None, **kwargs + ): + """ + Perform a Plotly update operation on the figure. + + Note: This operation both mutates and returns the figure + + Parameters + ---------- + restyle_data : dict + Traces update specification. See the docstring for the + `plotly_restyle` method for details + relayout_data : dict + Layout update specification. See the docstring for the + `plotly_relayout` method for details + trace_indexes : + Trace index, or list of trace indexes, that the update operation + applies to. Defaults to all trace indexes. + + Returns + ------- + BaseFigure + None + """ + + # Handle source_view_id + # --------------------- + # If not None, the source_view_id is the UID of the frontend + # Plotly.js view that initially triggered this update operation + # (e.g. the user clicked a button that triggered an update + # operation). We pass this UID along so that the frontend views can + # determine whether they need to apply the update operation on + # themselves. + if "source_view_id" in kwargs: + msg_kwargs = {"source_view_id": kwargs["source_view_id"]} + else: + msg_kwargs = {} + + # Perform update operation + # ------------------------ + # This updates the _data and _layout dicts, and returns the changes + # to the traces (restyle_changes) and layout (relayout_changes) + ( + restyle_changes, + relayout_changes, + trace_indexes, + ) = self._perform_plotly_update( + restyle_data=restyle_data, + relayout_data=relayout_data, + trace_indexes=trace_indexes, + ) + + # Send update message + # ------------------- + # Send a plotly_update message to the frontend (if any) + if restyle_changes or relayout_changes: + self._send_update_msg( + restyle_data=restyle_changes, + relayout_data=relayout_changes, + trace_indexes=trace_indexes, + **msg_kwargs, + ) + + # Dispatch changes + # ---------------- + # ### Dispatch restyle changes ### + if restyle_changes: + self._dispatch_trace_change_callbacks(restyle_changes, trace_indexes) + + # ### Dispatch relayout changes ### + if relayout_changes: + self._dispatch_layout_change_callbacks(relayout_changes) + + def _perform_plotly_update( + self, restyle_data=None, relayout_data=None, trace_indexes=None + ): + # Check for early exist + # --------------------- + if not restyle_data and not relayout_data: + # Nothing to do + return None, None, None + + # Normalize input + # --------------- + if restyle_data is None: + restyle_data = {} + if relayout_data is None: + relayout_data = {} + + trace_indexes = self._normalize_trace_indexes(trace_indexes) + + # Perform relayout + # ---------------- + relayout_changes = self._perform_plotly_relayout(relayout_data) + + # Perform restyle + # --------------- + restyle_changes = self._perform_plotly_restyle(restyle_data, trace_indexes) + + # Return changes + # -------------- + return restyle_changes, relayout_changes, trace_indexes + + # Plotly message stubs + # -------------------- + # send-message stubs that may be overridden by the widget subclass + def _send_addTraces_msg(self, new_traces_data): + pass + + def _send_moveTraces_msg(self, current_inds, new_inds): + pass + + def _send_deleteTraces_msg(self, delete_inds): + pass + + def _send_restyle_msg(self, style, trace_indexes=None, source_view_id=None): + pass + + def _send_relayout_msg(self, layout, source_view_id=None): + pass + + def _send_update_msg( + self, restyle_data, relayout_data, trace_indexes=None, source_view_id=None + ): + pass + + def _send_animate_msg( + self, styles_data, relayout_data, trace_indexes, animation_opts + ): + pass + + # Context managers + # ---------------- + @contextmanager + def batch_update(self): + """ + A context manager that batches up trace and layout assignment + operations into a singe plotly_update message that is executed when + the context exits. + + Examples + -------- + For example, suppose we have a figure widget, `fig`, with a single + trace. + + >>> import plotly.graph_objs as go + >>> fig = go.FigureWidget(data=[{'y': [3, 4, 2]}]) + + If we want to update the xaxis range, the yaxis range, and the + marker color, we could do so using a series of three property + assignments as follows: + + >>> fig.layout.xaxis.range = [0, 5] + >>> fig.layout.yaxis.range = [0, 10] + >>> fig.data[0].marker.color = 'green' + + This will work, however it will result in three messages being + sent to the front end (two relayout messages for the axis range + updates followed by one restyle message for the marker color + update). This can cause the plot to appear to stutter as the + three updates are applied incrementally. + + We can avoid this problem by performing these three assignments in a + `batch_update` context as follows: + + >>> with fig.batch_update(): + ... fig.layout.xaxis.range = [0, 5] + ... fig.layout.yaxis.range = [0, 10] + ... fig.data[0].marker.color = 'green' + + Now, these three property updates will be sent to the frontend in a + single update message, and they will be applied by the front end + simultaneously. + """ + if self._in_batch_mode is True: + yield + else: + try: + self._in_batch_mode = True + yield + finally: + # ### Disable batch mode ### + self._in_batch_mode = False + + # ### Build plotly_update params ### + ( + restyle_data, + relayout_data, + trace_indexes, + ) = self._build_update_params_from_batch() + + # ### Call plotly_update ### + self.plotly_update( + restyle_data=restyle_data, + relayout_data=relayout_data, + trace_indexes=trace_indexes, + ) + + # ### Clear out saved batch edits ### + self._batch_layout_edits.clear() + self._batch_trace_edits.clear() + + def _build_update_params_from_batch(self): + """ + Convert `_batch_trace_edits` and `_batch_layout_edits` into the + `restyle_data`, `relayout_data`, and `trace_indexes` params accepted + by the `plotly_update` method. + + Returns + ------- + (dict, dict, list[int]) + """ + + # Handle Style / Trace Indexes + # ---------------------------- + batch_style_commands = self._batch_trace_edits + trace_indexes = sorted(set([trace_ind for trace_ind in batch_style_commands])) + + all_props = sorted( + set( + [ + prop + for trace_style in self._batch_trace_edits.values() + for prop in trace_style + ] + ) + ) + + # Initialize restyle_data dict with all values undefined + restyle_data = { + prop: [Undefined for _ in range(len(trace_indexes))] for prop in all_props + } + + # Fill in values + for trace_ind, trace_style in batch_style_commands.items(): + for trace_prop, trace_val in trace_style.items(): + restyle_trace_index = trace_indexes.index(trace_ind) + restyle_data[trace_prop][restyle_trace_index] = trace_val + + # Handle Layout + # ------------- + relayout_data = self._batch_layout_edits + + # Return plotly_update params + # --------------------------- + return restyle_data, relayout_data, trace_indexes + + @contextmanager + def batch_animate(self, duration=500, easing="cubic-in-out"): + """ + Context manager to animate trace / layout updates + + Parameters + ---------- + duration : number + The duration of the transition, in milliseconds. + If equal to zero, updates are synchronous. + easing : string + The easing function used for the transition. + One of: + - 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 + + Examples + -------- + Suppose we have a figure widget, `fig`, with a single trace. + + >>> import plotly.graph_objs as go + >>> fig = go.FigureWidget(data=[{'y': [3, 4, 2]}]) + + 1) Animate a change in the xaxis and yaxis ranges using default + duration and easing parameters. + + >>> with fig.batch_animate(): + ... fig.layout.xaxis.range = [0, 5] + ... fig.layout.yaxis.range = [0, 10] + + 2) Animate a change in the size and color of the trace's markers + over 2 seconds using the elastic-in-out easing method + + >>> with fig.batch_animate(duration=2000, easing='elastic-in-out'): + ... fig.data[0].marker.color = 'green' + ... fig.data[0].marker.size = 20 + """ + + # Validate inputs + # --------------- + duration = self._animation_duration_validator.validate_coerce(duration) + easing = self._animation_easing_validator.validate_coerce(easing) + + if self._in_batch_mode is True: + yield + else: + try: + self._in_batch_mode = True + yield + finally: + # Exit batch mode + # --------------- + self._in_batch_mode = False + + # Apply batch animate + # ------------------- + self._perform_batch_animate( + { + "transition": {"duration": duration, "easing": easing}, + "frame": {"duration": duration}, + } + ) + + def _perform_batch_animate(self, animation_opts): + """ + Perform the batch animate operation + + This method should be called with the batch_animate() context + manager exits. + + Parameters + ---------- + animation_opts : dict + Animation options as accepted by frontend Plotly.animation command + + Returns + ------- + None + """ + # Apply commands to internal dictionaries as an update + # ---------------------------------------------------- + ( + restyle_data, + relayout_data, + trace_indexes, + ) = self._build_update_params_from_batch() + + ( + restyle_changes, + relayout_changes, + trace_indexes, + ) = self._perform_plotly_update(restyle_data, relayout_data, trace_indexes) + + # Convert style / trace_indexes into animate form + # ----------------------------------------------- + if self._batch_trace_edits: + animate_styles, animate_trace_indexes = zip( + *[ + (trace_style, trace_index) + for trace_index, trace_style in self._batch_trace_edits.items() + ] + ) + else: + animate_styles, animate_trace_indexes = {}, [] + + animate_layout = copy(self._batch_layout_edits) + + # Send animate message + # -------------------- + # Sends animate message to the front end (if any) + self._send_animate_msg( + styles_data=list(animate_styles), + relayout_data=animate_layout, + trace_indexes=list(animate_trace_indexes), + animation_opts=animation_opts, + ) + + # Clear batched commands + # ---------------------- + self._batch_layout_edits.clear() + self._batch_trace_edits.clear() + + # Dispatch callbacks + # ------------------ + # ### Dispatch restyle changes ### + if restyle_changes: + self._dispatch_trace_change_callbacks(restyle_changes, trace_indexes) + + # ### Dispatch relayout changes ### + if relayout_changes: + self._dispatch_layout_change_callbacks(relayout_changes) + + # Exports + # ------- + def to_dict(self): + """ + Convert figure to a dictionary + + Note: the dictionary includes the properties explicitly set by the + user, it does not include default values of unspecified properties + + Returns + ------- + dict + """ + # Handle data + # ----------- + data = deepcopy(self._data) + + # Handle layout + # ------------- + layout = deepcopy(self._layout) + + # Handle frames + # ------------- + # Frame key is only added if there are any frames + res = {"data": data, "layout": layout} + frames = deepcopy([frame._props for frame in self._frame_objs]) + + if frames: + res["frames"] = frames + + # Add base64 conversion before sending to the front-end + convert_to_base64(res) + + return res + + def to_plotly_json(self): + """ + Convert figure to a JSON representation as a Python dict + + Note: May include some JSON-invalid data types, use the `PlotlyJSONEncoder` util + or the `to_json` method to encode to a string. + + Returns + ------- + dict + """ + return self.to_dict() + + @staticmethod + def _to_ordered_dict(d, skip_uid=False): + """ + Static helper for converting dict or list to structure of ordered + dictionaries + """ + if isinstance(d, dict): + # d is a dict + result = collections.OrderedDict() + for key in sorted(d.keys()): + if skip_uid and key == "uid": + continue + else: + result[key] = BaseFigure._to_ordered_dict(d[key], skip_uid=skip_uid) + + elif isinstance(d, list) and d and isinstance(d[0], dict): + # d is a list of dicts + result = [BaseFigure._to_ordered_dict(el, skip_uid=skip_uid) for el in d] + else: + result = d + + return result + + def to_ordered_dict(self, skip_uid=True): + # Initialize resulting OrderedDict + # -------------------------------- + result = collections.OrderedDict() + + # Handle data + # ----------- + result["data"] = BaseFigure._to_ordered_dict(self._data, skip_uid=skip_uid) + + # Handle layout + # ------------- + result["layout"] = BaseFigure._to_ordered_dict(self._layout) + + # Handle frames + # ------------- + if self._frame_objs: + frames_props = [frame._props for frame in self._frame_objs] + result["frames"] = BaseFigure._to_ordered_dict(frames_props) + + return result + + # plotly.io methods + # ----------------- + # Note that docstrings are auto-generated in plotly/_docstring_gen.py + def show(self, *args, **kwargs): + """ + Show a figure using either the default renderer(s) or the renderer(s) + specified by the renderer argument + + Parameters + ---------- + renderer: str or None (default None) + A string containing the names of one or more registered renderers + (separated by '+' characters) or None. If None, then the default + renderers specified in plotly.io.renderers.default are used. + + validate: bool (default True) + True if the figure should be validated before being shown, + False otherwise. + + width: int or float + An integer or float that determines the number of pixels wide the + plot is. The default is set in plotly.js. + + height: int or float + An integer or float that determines the number of pixels wide the + plot is. The default is set in plotly.js. + + config: dict + A dict of parameters to configure the figure. The defaults are set + in plotly.js. + + Returns + ------- + None + """ + import plotly.io as pio + + return pio.show(self, *args, **kwargs) + + def to_json(self, *args, **kwargs): + """ + Convert a figure to a JSON string representation + + Parameters + ---------- + validate: bool (default True) + True if the figure should be validated before being converted to + JSON, False otherwise. + + pretty: bool (default False) + True if JSON representation should be pretty-printed, False if + representation should be as compact as possible. + + remove_uids: bool (default True) + True if trace UIDs should be omitted from the JSON representation + + engine: str (default None) + The JSON encoding engine to use. One of: + - "json" for an encoder based on the built-in Python json module + - "orjson" for a fast encoder the requires the orjson package + If not specified, the default encoder is set to the current value of + plotly.io.json.config.default_encoder. + + Returns + ------- + str + Representation of figure as a JSON string + """ + import plotly.io as pio + + return pio.to_json(self, *args, **kwargs) + + def full_figure_for_development(self, warn=True, as_dict=False): + """ + Compute default values for all attributes not specified in the input figure and + returns the output as a "full" figure. This function calls Plotly.js via Kaleido + to populate unspecified attributes. This function is intended for interactive use + during development to learn more about how Plotly.js computes default values and is + not generally necessary or recommended for production use. + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + warn: bool + If False, suppress warnings about not using this in production. + + as_dict: bool + If True, output is a dict with some keys that go.Figure can't parse. + If False, output is a go.Figure with unparseable keys skipped. + + Returns + ------- + plotly.graph_objects.Figure or dict + The full figure + """ + import plotly.io as pio + + return pio.full_figure_for_development(self, warn, as_dict) + + def write_json(self, *args, **kwargs): + """ + Convert a figure to JSON and write it to a file or writeable + object + + Parameters + ---------- + file: str or writeable + A string representing a local file path or a writeable object + (e.g. an open file descriptor) + + pretty: bool (default False) + True if JSON representation should be pretty-printed, False if + representation should be as compact as possible. + + remove_uids: bool (default True) + True if trace UIDs should be omitted from the JSON representation + + engine: str (default None) + The JSON encoding engine to use. One of: + - "json" for an encoder based on the built-in Python json module + - "orjson" for a fast encoder the requires the orjson package + If not specified, the default encoder is set to the current value of + plotly.io.json.config.default_encoder. + + Returns + ------- + None + """ + import plotly.io as pio + + return pio.write_json(self, *args, **kwargs) + + def to_html(self, *args, **kwargs): + """ + Convert a figure to an HTML string representation. + + Parameters + ---------- + config: dict or None (default None) + Plotly.js figure config options + auto_play: bool (default=True) + Whether to automatically start the animation sequence on page load + if the figure contains frames. Has no effect if the figure does not + contain frames. + include_plotlyjs: bool or string (default True) + Specifies how the plotly.js library is included/loaded in the output + div string. + + If True, a script tag containing the plotly.js source code (~3MB) + is included in the output. HTML files generated with this option are + fully self-contained and can be used offline. + + If 'cdn', a script tag that references the plotly.js CDN is included + in the output. HTML files generated with this option are about 3MB + smaller than those generated with include_plotlyjs=True, but they + require an active internet connection in order to load the plotly.js + library. + + If 'directory', a script tag is included that references an external + plotly.min.js bundle that is assumed to reside in the same + directory as the HTML file. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point + the resulting HTML file to an alternative CDN or local bundle. + + If False, no script tag referencing plotly.js is included. This is + useful when the resulting div string will be placed inside an HTML + document that already loads plotly.js. This option is not advised + when full_html=True as it will result in a non-functional html file. + include_mathjax: bool or string (default False) + Specifies how the MathJax.js library is included in the output html + div string. MathJax is required in order to display labels + with LaTeX typesetting. + + If False, no script tag referencing MathJax.js will be included in the + output. + + If 'cdn', a script tag that references a MathJax CDN location will be + included in the output. HTML div strings generated with this option + will be able to display LaTeX typesetting as long as internet access + is available. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point the + resulting HTML div string to an alternative CDN. + post_script: str or list or None (default None) + JavaScript snippet(s) to be included in the resulting div just after + plot creation. The string(s) may include '{plot_id}' placeholders + that will then be replaced by the `id` of the div element that the + plotly.js figure is associated with. One application for this script + is to install custom plotly.js event handlers. + full_html: bool (default True) + If True, produce a string containing a complete HTML document + starting with an tag. If False, produce a string containing + a single
element. + animation_opts: dict or None (default None) + dict of custom animation parameters to be passed to the function + Plotly.animate in Plotly.js. See + https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js + for available options. Has no effect if the figure does not contain + frames, or auto_play is False. + default_width, default_height: number or str (default '100%') + The default figure width/height to use if the provided figure does not + specify its own layout.width/layout.height property. May be + specified in pixels as an integer (e.g. 500), or as a css width style + string (e.g. '500px', '100%'). + validate: bool (default True) + True if the figure should be validated before being converted to + JSON, False otherwise. + div_id: str (default None) + If provided, this is the value of the id attribute of the div tag. If None, the + id attribute is a UUID. + + Returns + ------- + str + Representation of figure as an HTML div string + """ + import plotly.io as pio + + return pio.to_html(self, *args, **kwargs) + + def write_html(self, *args, **kwargs): + """ + Write a figure to an HTML file representation + + Parameters + ---------- + file: str or writeable + A string representing a local file path or a writeable object + (e.g. a pathlib.Path object or an open file descriptor) + config: dict or None (default None) + Plotly.js figure config options + auto_play: bool (default=True) + Whether to automatically start the animation sequence on page load + if the figure contains frames. Has no effect if the figure does not + contain frames. + include_plotlyjs: bool or string (default True) + Specifies how the plotly.js library is included/loaded in the output + div string. + + If True, a script tag containing the plotly.js source code (~3MB) + is included in the output. HTML files generated with this option are + fully self-contained and can be used offline. + + If 'cdn', a script tag that references the plotly.js CDN is included + in the output. HTML files generated with this option are about 3MB + smaller than those generated with include_plotlyjs=True, but they + require an active internet connection in order to load the plotly.js + library. + + If 'directory', a script tag is included that references an external + plotly.min.js bundle that is assumed to reside in the same + directory as the HTML file. If `file` is a string to a local file + path and `full_html` is True, then the plotly.min.js bundle is copied + into the directory of the resulting HTML file. If a file named + plotly.min.js already exists in the output directory then this file + is left unmodified and no copy is performed. HTML files generated + with this option can be used offline, but they require a copy of + the plotly.min.js bundle in the same directory. This option is + useful when many figures will be saved as HTML files in the same + directory because the plotly.js source code will be included only + once per output directory, rather than once per output file. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point + the resulting HTML file to an alternative CDN or local bundle. + + If False, no script tag referencing plotly.js is included. This is + useful when the resulting div string will be placed inside an HTML + document that already loads plotly.js. This option is not advised + when full_html=True as it will result in a non-functional html file. + + include_mathjax: bool or string (default False) + Specifies how the MathJax.js library is included in the output html + div string. MathJax is required in order to display labels + with LaTeX typesetting. + + If False, no script tag referencing MathJax.js will be included in the + output. + + If 'cdn', a script tag that references a MathJax CDN location will be + included in the output. HTML div strings generated with this option + will be able to display LaTeX typesetting as long as internet access + is available. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point the + resulting HTML div string to an alternative CDN. + post_script: str or list or None (default None) + JavaScript snippet(s) to be included in the resulting div just after + plot creation. The string(s) may include '{plot_id}' placeholders + that will then be replaced by the `id` of the div element that the + plotly.js figure is associated with. One application for this script + is to install custom plotly.js event handlers. + full_html: bool (default True) + If True, produce a string containing a complete HTML document + starting with an tag. If False, produce a string containing + a single
element. + animation_opts: dict or None (default None) + dict of custom animation parameters to be passed to the function + Plotly.animate in Plotly.js. See + https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js + for available options. Has no effect if the figure does not contain + frames, or auto_play is False. + default_width, default_height: number or str (default '100%') + The default figure width/height to use if the provided figure does not + specify its own layout.width/layout.height property. May be + specified in pixels as an integer (e.g. 500), or as a css width style + string (e.g. '500px', '100%'). + validate: bool (default True) + True if the figure should be validated before being converted to + JSON, False otherwise. + auto_open: bool (default True) + If True, open the saved file in a web browser after saving. + This argument only applies if `full_html` is True. + div_id: str (default None) + If provided, this is the value of the id attribute of the div tag. If None, the + id attribute is a UUID. + + Returns + ------- + None + """ + import plotly.io as pio + + return pio.write_html(self, *args, **kwargs) + + def to_image(self, *args, **kwargs): + """ + Convert a figure to a static image bytes string + + Parameters + ---------- + format: str or None + The desired image format. One of + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (deprecated) (Requires the poppler library to be installed) + + If not specified, will default to: + - `plotly.io.defaults.default_format` if engine is "kaleido" + - `plotly.io.orca.config.default_format` if engine is "orca" (deprecated) + + width: int or None + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_width` if engine is "kaleido" + - `plotly.io.orca.config.default_width` if engine is "orca" (deprecated) + + height: int or None + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_height` if engine is "kaleido" + - `plotly.io.orca.config.default_height` if engine is "orca" (deprecated) + + scale: int or float or None + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + If not specified, will default to: + - `plotly.io.defaults.default_scale` if engine is "kaliedo" + - `plotly.io.orca.config.default_scale` if engine is "orca" (deprecated) + + validate: bool + True if the figure should be validated before being converted to + an image, False otherwise. + + engine (deprecated): str + Image export engine to use. This parameter is deprecated and Orca engine support will be + dropped in the next major Plotly version. Until then, the following values are supported: + - "kaleido": Use Kaleido for image export + - "orca": Use Orca for image export + - "auto" (default): Use Kaleido if installed, otherwise use Orca + + Returns + ------- + bytes + The image data + """ + import plotly.io as pio + from plotly.io.kaleido import ( + kaleido_available, + kaleido_major, + ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS, + KALEIDO_DEPRECATION_MSG, + ORCA_DEPRECATION_MSG, + ENGINE_PARAM_DEPRECATION_MSG, + ) + + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + if ( + kwargs.get("engine", None) in {None, "auto", "kaleido"} + and kaleido_available() + and kaleido_major() < 1 + ): + warnings.warn(KALEIDO_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + if kwargs.get("engine", None) == "orca": + warnings.warn(ORCA_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + if kwargs.get("engine", None): + warnings.warn( + ENGINE_PARAM_DEPRECATION_MSG, DeprecationWarning, stacklevel=2 + ) + + return pio.to_image(self, *args, **kwargs) + + def write_image(self, *args, **kwargs): + """ + Convert a figure to a static image and write it to a file or writeable + object + + Parameters + ---------- + file: str or writeable + A string representing a local file path or a writeable object + (e.g. a pathlib.Path object or an open file descriptor) + + format: str or None + The desired image format. One of + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (deprecated) (Requires the poppler library to be installed) + + If not specified and `file` is a string then this will default to the + file extension. If not specified and `file` is not a string then this + will default to: + - `plotly.io.defaults.default_format` if engine is "kaleido" + - `plotly.io.orca.config.default_format` if engine is "orca" (deprecated) + + width: int or None + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_width` if engine is "kaleido" + - `plotly.io.orca.config.default_width` if engine is "orca" (deprecated) + + height: int or None + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_height` if engine is "kaleido" + - `plotly.io.orca.config.default_height` if engine is "orca" (deprecated) + + scale: int or float or None + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + If not specified, will default to: + - `plotly.io.defaults.default_scale` if engine is "kaleido" + - `plotly.io.orca.config.default_scale` if engine is "orca" (deprecated) + + validate: bool + True if the figure should be validated before being converted to + an image, False otherwise. + + engine (deprecated): str + Image export engine to use. This parameter is deprecated and Orca engine support will be + dropped in the next major Plotly version. Until then, the following values are supported: + - "kaleido": Use Kaleido for image export + - "orca": Use Orca for image export + - "auto" (default): Use Kaleido if installed, otherwise use Orca + + Returns + ------- + None + """ + import plotly.io as pio + from plotly.io.kaleido import ( + kaleido_available, + kaleido_major, + ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS, + KALEIDO_DEPRECATION_MSG, + ORCA_DEPRECATION_MSG, + ENGINE_PARAM_DEPRECATION_MSG, + ) + + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + if ( + kwargs.get("engine", None) in {None, "auto", "kaleido"} + and kaleido_available() + and kaleido_major() < 1 + ): + warnings.warn(KALEIDO_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + if kwargs.get("engine", None) == "orca": + warnings.warn(ORCA_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + if kwargs.get("engine", None): + warnings.warn( + ENGINE_PARAM_DEPRECATION_MSG, DeprecationWarning, stacklevel=2 + ) + return pio.write_image(self, *args, **kwargs) + + # Static helpers + # -------------- + @staticmethod + def _is_dict_list(v): + """ + Return true of the input object is a list of dicts + """ + return isinstance(v, list) and len(v) > 0 and isinstance(v[0], dict) + + @staticmethod + def _perform_update(plotly_obj, update_obj, overwrite=False): + """ + Helper to support the update() methods on :class:`BaseFigure` and + :class:`BasePlotlyType` + + Parameters + ---------- + plotly_obj : BasePlotlyType|tuple[BasePlotlyType] + Object to up updated + update_obj : dict|list[dict]|tuple[dict] + When ``plotly_obj`` is an instance of :class:`BaseFigure`, + ``update_obj`` should be a dict + + When ``plotly_obj`` is a tuple of instances of + :class:`BasePlotlyType`, ``update_obj`` should be a tuple or list + of dicts + """ + from _plotly_utils.basevalidators import ( + CompoundValidator, + CompoundArrayValidator, + ) + + if update_obj is None: + # Nothing to do + return + elif isinstance(plotly_obj, BasePlotlyType): + # Handle initializing subplot ids + # ------------------------------- + # This should be valid even if xaxis2 hasn't been initialized: + # >>> layout.update(xaxis2={'title': 'xaxis 2'}) + for key in update_obj: + # special handling for missing keys that match _subplot_re_match + if key not in plotly_obj and isinstance(plotly_obj, BaseLayoutType): + # try _subplot_re_match + match = plotly_obj._subplot_re_match(key) + if match: + # We need to create a subplotid object + plotly_obj[key] = {} + continue + + err = _check_path_in_prop_tree(plotly_obj, key, error_cast=ValueError) + if err is not None: + raise err + + # Convert update_obj to dict + # -------------------------- + if isinstance(update_obj, BasePlotlyType): + update_obj = update_obj.to_plotly_json() + + # Process valid properties + # ------------------------ + for key in update_obj: + val = update_obj[key] + + if overwrite: + # Don't recurse and assign property as-is + plotly_obj[key] = val + continue + + validator = plotly_obj._get_prop_validator(key) + + if isinstance(validator, CompoundValidator) and isinstance(val, dict): + # Update compound objects recursively + # plotly_obj[key].update(val) + BaseFigure._perform_update(plotly_obj[key], val) + elif isinstance(validator, CompoundArrayValidator): + if plotly_obj[key]: + # plotly_obj has an existing non-empty array for key + # In this case we merge val into the existing elements + BaseFigure._perform_update(plotly_obj[key], val) + + # If update tuple is longer that current tuple, append the + # extra elements to the end + if isinstance(val, (list, tuple)) and len(val) > len( + plotly_obj[key] + ): + plotly_obj[key] = plotly_obj[key] + tuple( + val[len(plotly_obj[key]) :] + ) + else: + # plotly_obj is an empty or uninitialized list for key + # In this case we accept val as is + plotly_obj[key] = val + else: + # Assign non-compound value + plotly_obj[key] = val + + elif isinstance(plotly_obj, tuple): + if len(update_obj) == 0: + # Nothing to do + return + else: + for i, plotly_element in enumerate(plotly_obj): + if isinstance(update_obj, dict): + if i in update_obj: + update_element = update_obj[i] + else: + continue + else: + update_element = update_obj[i % len(update_obj)] + BaseFigure._perform_update(plotly_element, update_element) + else: + raise ValueError( + "Unexpected plotly object with type {typ}".format(typ=type(plotly_obj)) + ) + + @staticmethod + def _index_is(iterable, val): + """ + Return the index of a value in an iterable using object identity + (not object equality as is the case for list.index) + + """ + index_list = [i for i, curr_val in enumerate(iterable) if curr_val is val] + if not index_list: + raise ValueError("Invalid value") + + return index_list[0] + + def _make_axis_spanning_layout_object(self, direction, shape): + """ + Convert a shape drawn on a plot or a subplot into one whose yref or xref + ends with " domain" and has coordinates so that the shape will seem to + extend infinitely in that dimension. This is useful for drawing lines or + boxes on a plot where one dimension of the shape will not move out of + bounds when moving the plot's view. + Note that the shape already added to the (sub)plot must have the + corresponding axis reference referring to an actual axis (e.g., 'x', + 'y2' etc. are accepted, but not 'paper'). This will be the case if the + shape was added with "add_shape". + Shape must have the x0, x1, y0, y1 fields already initialized. + """ + if direction == "vertical": + # fix y points to top and bottom of subplot + ref = "yref" + elif direction == "horizontal": + # fix x points to left and right of subplot + ref = "xref" + else: + raise ValueError( + "Bad direction: %s. Permissible values are 'vertical' and 'horizontal'." + % (direction,) + ) + # set the ref to " domain" so that its size is based on the + # axis's size + shape[ref] += " domain" + return shape + + def _process_multiple_axis_spanning_shapes( + self, + shape_args, + row, + col, + shape_type, + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ): + """ + Add a shape or multiple shapes and call _make_axis_spanning_layout_object on + all the new shapes. + """ + if shape_type in ["vline", "vrect"]: + direction = "vertical" + elif shape_type in ["hline", "hrect"]: + direction = "horizontal" + else: + raise ValueError( + "Bad shape_type %s, needs to be one of 'vline', 'hline', 'vrect', 'hrect'" + % (shape_type,) + ) + if (row is not None or col is not None) and (not self._has_subplots()): + # this has no subplots to address, so we force row and col to be None + row = None + col = None + n_shapes_before = len(self.layout["shapes"]) + n_annotations_before = len(self.layout["annotations"]) + # shapes are always added at the end of the tuple of shapes, so we see + # how long the tuple is before the call and after the call, and adjust + # the new shapes that were added at the end + # extract annotation prefixed kwargs + # annotation with extra parameters based on the annotation_position + # argument and other annotation_ prefixed kwargs + shape_kwargs, annotation_kwargs = shapeannotation.split_dict_by_key_prefix( + kwargs, "annotation_" + ) + augmented_annotation = shapeannotation.axis_spanning_shape_annotation( + annotation, shape_type, shape_args, annotation_kwargs + ) + self.add_shape( + row=row, + col=col, + exclude_empty_subplots=exclude_empty_subplots, + **_combine_dicts([shape_args, shape_kwargs]), + ) + if augmented_annotation is not None: + self.add_annotation( + augmented_annotation, + row=row, + col=col, + exclude_empty_subplots=exclude_empty_subplots, + yref=shape_kwargs.get("yref", "y"), + ) + # update xref and yref for the new shapes and annotations + for layout_obj, n_layout_objs_before in zip( + ["shapes", "annotations"], [n_shapes_before, n_annotations_before] + ): + n_layout_objs_after = len(self.layout[layout_obj]) + if (n_layout_objs_after > n_layout_objs_before) and ( + row is None and col is None + ): + # this was called intending to add to a single plot (and + # self.add_{layout_obj} succeeded) + # however, in the case of a single plot, xref and yref MAY not be + # specified, IF they are not specified we specify them here so the following routines can work + # (they need to append " domain" to xref or yref). If they are specified, we leave them alone. + if self.layout[layout_obj][-1].xref is None: + self.layout[layout_obj][-1].update(xref="x") + if self.layout[layout_obj][-1].yref is None: + self.layout[layout_obj][-1].update(yref="y") + new_layout_objs = tuple( + filter( + lambda x: x is not None, + [ + self._make_axis_spanning_layout_object( + direction, + self.layout[layout_obj][n], + ) + for n in range(n_layout_objs_before, n_layout_objs_after) + ], + ) + ) + self.layout[layout_obj] = ( + self.layout[layout_obj][:n_layout_objs_before] + new_layout_objs + ) + + def add_vline( + self, + x, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ): + self._process_multiple_axis_spanning_shapes( + dict(type="line", x0=x, x1=x, y0=0, y1=1), + row, + col, + "vline", + exclude_empty_subplots=exclude_empty_subplots, + annotation=annotation, + **kwargs, + ) + return self + + add_vline.__doc__ = _axis_spanning_shapes_docstr("vline") + + def add_hline( + self, + y, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ): + self._process_multiple_axis_spanning_shapes( + dict( + type="line", + x0=0, + x1=1, + y0=y, + y1=y, + ), + row, + col, + "hline", + exclude_empty_subplots=exclude_empty_subplots, + annotation=annotation, + **kwargs, + ) + return self + + add_hline.__doc__ = _axis_spanning_shapes_docstr("hline") + + def add_vrect( + self, + x0, + x1, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ): + self._process_multiple_axis_spanning_shapes( + dict(type="rect", x0=x0, x1=x1, y0=0, y1=1), + row, + col, + "vrect", + exclude_empty_subplots=exclude_empty_subplots, + annotation=annotation, + **kwargs, + ) + return self + + add_vrect.__doc__ = _axis_spanning_shapes_docstr("vrect") + + def add_hrect( + self, + y0, + y1, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ): + self._process_multiple_axis_spanning_shapes( + dict(type="rect", x0=0, x1=1, y0=y0, y1=y1), + row, + col, + "hrect", + exclude_empty_subplots=exclude_empty_subplots, + annotation=annotation, + **kwargs, + ) + return self + + add_hrect.__doc__ = _axis_spanning_shapes_docstr("hrect") + + def _has_subplots(self): + """Returns True if figure contains subplots, otherwise it contains a + single plot and so this returns False.""" + return self._grid_ref is not None + + def _subplot_not_empty(self, xref, yref, selector="all"): + """ + xref: string representing the axis. Objects in the plot will be checked + for this xref (for layout objects) or xaxis (for traces) to + determine if they lie in a certain subplot. + yref: string representing the axis. Objects in the plot will be checked + for this yref (for layout objects) or yaxis (for traces) to + determine if they lie in a certain subplot. + selector: can be "all" or an iterable containing some combination of + "traces", "shapes", "annotations", "images". Only the presence + of objects specified in selector will be checked. So if + ["traces","shapes"] is passed then a plot we be considered + non-empty if it contains traces or shapes. If + bool(selector) returns False, no checking is performed and + this function returns True. If selector is True, it is + converted to "all". + """ + if not selector: + # If nothing to select was specified then a subplot is always deemed non-empty + return True + if selector is True: + selector = "all" + if selector == "all": + selector = ["traces", "shapes", "annotations", "images"] + ret = False + for s in selector: + if s == "traces": + obj = self.data + xaxiskw = "xaxis" + yaxiskw = "yaxis" + elif s in ["shapes", "annotations", "images"]: + obj = self.layout[s] + xaxiskw = "xref" + yaxiskw = "yref" + else: + obj = None + if obj: + ret |= any( + t == (xref, yref) + for t in [ + # if a object exists but has no xaxis or yaxis keys, then it + # is plotted with xaxis/xref 'x' and yaxis/yref 'y' + ( + "x" if d[xaxiskw] is None else d[xaxiskw], + "y" if d[yaxiskw] is None else d[yaxiskw], + ) + for d in obj + ] + ) + return ret + + def set_subplots(self, rows=None, cols=None, **make_subplots_args): + """ + Add subplots to this figure. If the figure already contains subplots, + then this throws an error. Accepts any keyword arguments that + plotly.subplots.make_subplots accepts. + """ + # rows, cols provided so that this can be called like + # fig.set_subplots(2,3), say + if rows is not None: + make_subplots_args["rows"] = rows + if cols is not None: + make_subplots_args["cols"] = cols + if self._has_subplots(): + raise ValueError("This figure already has subplots.") + return _subplots.make_subplots(figure=self, **make_subplots_args) + + +class BasePlotlyType(object): + """ + BasePlotlyType is the base class for all objects in the trace, layout, + and frame object hierarchies + """ + + # ### Mapped (deprecated) properties ### + # dict for deprecated property name (e.g. 'title_font') to tuple + # of relative path to new property (e.g. ('title', 'font') + _mapped_properties = {} + + _parent_path_str = "" + _path_str = "" + _valid_props = set() + + def __init__(self, plotly_name, **kwargs): + """ + Construct a new BasePlotlyType + + Parameters + ---------- + plotly_name : str + The lowercase name of the plotly object + kwargs : dict + Invalid props/values to raise on + """ + # ### _skip_invalid ## + # If True, then invalid properties should be skipped, if False then + # invalid properties will result in an exception + self._skip_invalid = False + + self._validate = True + + # Validate inputs + # --------------- + self._process_kwargs(**kwargs) + + # Store params + # ------------ + self._plotly_name = plotly_name + + # Initialize properties + # --------------------- + # ### _compound_props ### + # A dict from compound property names to compound objects + self._compound_props = {} + + # ### _compound_array_props ### + # A dict from compound array property names to tuples of compound + # objects + self._compound_array_props = {} + + # ### _orphan_props ### + # A dict of properties for use while object has no parent. When + # object has a parent, it requests its properties dict from its + # parent and doesn't use this. + self._orphan_props = {} + + # ### _parent ### + # The parent of the object. May be another BasePlotlyType or it may + # be a BaseFigure (as is the case for the Layout and Trace objects) + self._parent = None + + # ### _change_callbacks ### + # A dict from tuples of child property path tuples to lists + # of callbacks that should be executed whenever any of these + # properties is modified + self._change_callbacks = {} + + # ### Backing property for backward compatible _validator property ## + self.__validators = None + + # @property + # def _validate(self): + # fig = self.figure + # if fig is None: + # return True + # else: + # return fig._validate + + def _get_validator(self, prop): + from .validator_cache import ValidatorCache + + return ValidatorCache.get_validator(self._path_str, prop) + + def _set_property(self, name, arg, provided): + """ + Initialize a property of this object using the provided value + or a value popped from the arguments dictionary. If neither + is available, do not set the property. + """ + _set_property_provided_value(self, name, arg, provided) + + @property + def _validators(self): + """ + Validators used to be stored in a private _validators property. This was + eliminated when we switched to building validators on demand using the + _get_validator method. + + This property returns a simple object that + + Returns + ------- + dict-like interface for accessing the object's validators + """ + obj = self + if self.__validators is None: + + class ValidatorCompat(object): + def __getitem__(self, item): + return obj._get_validator(item) + + def __contains__(self, item): + return obj.__contains__(item) + + def __iter__(self): + return iter(obj) + + def items(self): + return [(k, self[k]) for k in self] + + self.__validators = ValidatorCompat() + + return self.__validators + + def _process_kwargs(self, **kwargs): + """ + Process any extra kwargs that are not predefined as constructor params + """ + for k, v in kwargs.items(): + err = _check_path_in_prop_tree(self, k, error_cast=ValueError) + if err is None: + # e.g. underscore kwargs like marker_line_color + self[k] = v + elif not self._validate: + # Set extra property as-is + self[k] = v + elif not self._skip_invalid: + raise err + # No need to call _raise_on_invalid_property_error here, + # because we have it set up so that the singular case of calling + # __setitem__ will raise this. If _check_path_in_prop_tree + # raised that in its travels, it will already be in the error + # message. + + @property + def plotly_name(self): + """ + The plotly name of the object + + Returns + ------- + str + """ + return self._plotly_name + + @property + def _prop_descriptions(self): + """ + Formatted string containing all of this obejcts child properties + and their descriptions + + Returns + ------- + str + """ + raise NotImplementedError + + @property + def _props(self): + """ + Dictionary used to store this object properties. When the object + has a parent, this dict is retreived from the parent. When the + object does not have a parent, this dict is the object's + `_orphan_props` property + + Note: Property will return None if the object has a parent and the + object's properties have not been initialized using the + `_init_props` method. + + Returns + ------- + dict|None + """ + if self.parent is None: + # Use orphan data + return self._orphan_props + else: + # Get data from parent's dict + return self.parent._get_child_props(self) + + def _get_child_props(self, child): + """ + Return properties dict for child + + Parameters + ---------- + child : BasePlotlyType + + Returns + ------- + dict + """ + if self._props is None: + # If this node's properties are uninitialized then so are its + # child's + return None + else: + # ### Child a compound property ### + if child.plotly_name in self: + from _plotly_utils.basevalidators import ( + CompoundValidator, + CompoundArrayValidator, + ) + + validator = self._get_validator(child.plotly_name) + + if isinstance(validator, CompoundValidator): + return self._props.get(child.plotly_name, None) + + # ### Child an element of a compound array property ### + elif isinstance(validator, CompoundArrayValidator): + children = self[child.plotly_name] + child_ind = BaseFigure._index_is(children, child) + assert child_ind is not None + + children_props = self._props.get(child.plotly_name, None) + return ( + children_props[child_ind] + if children_props is not None + and len(children_props) > child_ind + else None + ) + + # ### Invalid child ### + else: + raise ValueError("Invalid child with name: %s" % child.plotly_name) + + def _init_props(self): + """ + Ensure that this object's properties dict has been initialized. When + the object has a parent, this ensures that the parent has an + initialized properties dict with this object's plotly_name as a key. + + Returns + ------- + None + """ + # Ensure that _data is initialized. + if self._props is not None: + pass + else: + self._parent._init_child_props(self) + + def _init_child_props(self, child): + """ + Ensure that a properties dict has been initialized for a child object + + Parameters + ---------- + child : BasePlotlyType + + Returns + ------- + None + """ + # Init our own properties + # ----------------------- + self._init_props() + + # Child a compound property + # ------------------------- + if child.plotly_name in self._compound_props: + if child.plotly_name not in self._props: + self._props[child.plotly_name] = {} + + # Child an element of a compound array property + # --------------------------------------------- + elif child.plotly_name in self._compound_array_props: + children = self._compound_array_props[child.plotly_name] + child_ind = BaseFigure._index_is(children, child) + assert child_ind is not None + + if child.plotly_name not in self._props: + # Initialize list + self._props[child.plotly_name] = [] + + # Make sure list is long enough for child + children_list = self._props[child.plotly_name] + while len(children_list) <= child_ind: + children_list.append({}) + + # Invalid child + # ------------- + else: + raise ValueError("Invalid child with name: %s" % child.plotly_name) + + def _get_child_prop_defaults(self, child): + """ + Return default properties dict for child + + Parameters + ---------- + child : BasePlotlyType + + Returns + ------- + dict + """ + if self._prop_defaults is None: + # If this node's default properties are uninitialized then so are + # its child's + return None + else: + # ### Child a compound property ### + if child.plotly_name in self._compound_props: + return self._prop_defaults.get(child.plotly_name, None) + + # ### Child an element of a compound array property ### + elif child.plotly_name in self._compound_array_props: + children = self._compound_array_props[child.plotly_name] + child_ind = BaseFigure._index_is(children, child) + + assert child_ind is not None + + children_props = self._prop_defaults.get(child.plotly_name, None) + + return ( + children_props[child_ind] + if children_props is not None and len(children_props) > child_ind + else None + ) + + # ### Invalid child ### + else: + raise ValueError("Invalid child with name: %s" % child.plotly_name) + + @property + def _prop_defaults(self): + """ + Return default properties dict + + Returns + ------- + dict + """ + if self.parent is None: + return None + else: + return self.parent._get_child_prop_defaults(self) + + def _get_prop_validator(self, prop): + """ + Return the validator associated with the specified property + + Parameters + ---------- + prop: str + A property that exists in this object + + Returns + ------- + BaseValidator + """ + + # Handle remapping + # ---------------- + if prop in self._mapped_properties: + prop_path = self._mapped_properties[prop] + plotly_obj = self[prop_path[:-1]] + prop = prop_path[-1] + else: + prop_path = BaseFigure._str_to_dict_path(prop) + plotly_obj = self[prop_path[:-1]] + prop = prop_path[-1] + + # Return validator + # ---------------- + return plotly_obj._get_validator(prop) + + @property + def parent(self): + """ + Return the object's parent, or None if the object has no parent + Returns + ------- + BasePlotlyType|BaseFigure + """ + return self._parent + + @property + def figure(self): + """ + Reference to the top-level Figure or FigureWidget that this object + belongs to. None if the object does not belong to a Figure + + Returns + ------- + Union[BaseFigure, None] + """ + top_parent = self + while top_parent is not None: + if isinstance(top_parent, BaseFigure): + break + else: + top_parent = top_parent.parent + + return top_parent + + # Magic Methods + # ------------- + def __reduce__(self): + """ + Custom implementation of reduce is used to support deep copying + and pickling + """ + props = self.to_plotly_json() + return (self.__class__, (props,)) + + def __getitem__(self, prop): + """ + Get item or nested item from object + + Parameters + ---------- + prop : str|tuple + + If prop is the name of a property of this object, then the + property is returned. + + If prop is a nested property path string (e.g. 'foo[1].bar'), + then a nested property is returned (e.g. obj['foo'][1]['bar']) + + If prop is a path tuple (e.g. ('foo', 1, 'bar')), then a nested + property is returned (e.g. obj['foo'][1]['bar']). + + Returns + ------- + Any + """ + from _plotly_utils.basevalidators import ( + CompoundValidator, + CompoundArrayValidator, + BaseDataValidator, + ) + + # Normalize prop + # -------------- + # Convert into a property tuple + orig_prop = prop + prop = BaseFigure._str_to_dict_path(prop) + + # Handle remapping + # ---------------- + if prop and prop[0] in self._mapped_properties: + prop = self._mapped_properties[prop[0]] + prop[1:] + orig_prop = _remake_path_from_tuple(prop) + + # Handle scalar case + # ------------------ + # e.g. ('foo',) + if len(prop) == 1: + # Unwrap scalar tuple + prop = prop[0] + if prop not in self._valid_props: + self._raise_on_invalid_property_error(_error_to_raise=PlotlyKeyError)( + prop + ) + + validator = self._get_validator(prop) + + if isinstance(validator, CompoundValidator): + if self._compound_props.get(prop, None) is None: + # Init compound objects + self._compound_props[prop] = validator.data_class( + _parent=self, plotly_name=prop + ) + # Update plotly_name value in case the validator applies + # non-standard name (e.g. imagedefaults instead of image) + self._compound_props[prop]._plotly_name = prop + + return validator.present(self._compound_props[prop]) + elif isinstance(validator, (CompoundArrayValidator, BaseDataValidator)): + if self._compound_array_props.get(prop, None) is None: + # Init list of compound objects + if self._props is not None: + self._compound_array_props[prop] = [ + validator.data_class(_parent=self) + for _ in self._props.get(prop, []) + ] + else: + self._compound_array_props[prop] = [] + + return validator.present(self._compound_array_props[prop]) + elif self._props is not None and prop in self._props: + return validator.present(self._props[prop]) + elif self._prop_defaults is not None: + return validator.present(self._prop_defaults.get(prop, None)) + else: + return None + + # Handle non-scalar case + # ---------------------- + # e.g. ('foo', 1), () + else: + err = _check_path_in_prop_tree(self, orig_prop, error_cast=PlotlyKeyError) + if err is not None: + raise err + res = self + for p in prop: + res = res[p] + + return res + + def __contains__(self, prop): + """ + Determine whether object contains a property or nested property + + Parameters + ---------- + prop : str|tuple + If prop is a simple string (e.g. 'foo'), then return true of the + object contains an element named 'foo' + + If prop is a property path string (e.g. 'foo[0].bar'), + then return true if the obejct contains the nested elements for + each entry in the path string (e.g. 'bar' in obj['foo'][0]) + + If prop is a property path tuple (e.g. ('foo', 0, 'bar')), + then return true if the object contains the nested elements for + each entry in the path string (e.g. 'bar' in obj['foo'][0]) + + Returns + ------- + bool + """ + prop = BaseFigure._str_to_dict_path(prop) + + # Handle remapping + if prop and prop[0] in self._mapped_properties: + prop = self._mapped_properties[prop[0]] + prop[1:] + + obj = self + for p in prop: + if isinstance(p, int): + if isinstance(obj, tuple) and 0 <= p < len(obj): + obj = obj[p] + else: + return False + else: + if hasattr(obj, "_valid_props") and p in obj._valid_props: + obj = obj[p] + else: + return False + + return True + + def __setitem__(self, prop, value): + """ + Parameters + ---------- + prop : str + The name of a direct child of this object + + Note: Setting nested properties using property path string or + property path tuples is not supported. + value + New property value + + Returns + ------- + None + """ + from _plotly_utils.basevalidators import ( + CompoundValidator, + CompoundArrayValidator, + BaseDataValidator, + ) + + # Normalize prop + # -------------- + # Convert into a property tuple + orig_prop = prop + prop = BaseFigure._str_to_dict_path(prop) + + # Handle empty case + # ----------------- + if len(prop) == 0: + raise KeyError(orig_prop) + + # Handle remapping + # ---------------- + if prop[0] in self._mapped_properties: + prop = self._mapped_properties[prop[0]] + prop[1:] + + # Handle scalar case + # ------------------ + # e.g. ('foo',) + if len(prop) == 1: + # ### Unwrap scalar tuple ### + prop = prop[0] + + if self._validate: + if prop not in self._valid_props: + self._raise_on_invalid_property_error()(prop) + + # ### Get validator for this property ### + validator = self._get_validator(prop) + + # ### Handle compound property ### + if isinstance(validator, CompoundValidator): + self._set_compound_prop(prop, value) + + # ### Handle compound array property ### + elif isinstance(validator, (CompoundArrayValidator, BaseDataValidator)): + self._set_array_prop(prop, value) + + # ### Handle simple property ### + else: + self._set_prop(prop, value) + else: + # Make sure properties dict is initialized + self._init_props() + + if isinstance(value, BasePlotlyType): + # Extract json from graph objects + value = value.to_plotly_json() + + # Check for list/tuple of graph objects + if ( + isinstance(value, (list, tuple)) + and value + and isinstance(value[0], BasePlotlyType) + ): + value = [ + v.to_plotly_json() if isinstance(v, BasePlotlyType) else v + for v in value + ] + + self._props[prop] = value + + # Remove any already constructed graph object so that it will be + # reconstructed on property access + self._compound_props.pop(prop, None) + self._compound_array_props.pop(prop, None) + + # Handle non-scalar case + # ---------------------- + # e.g. ('foo', 1), () + else: + err = _check_path_in_prop_tree(self, orig_prop, error_cast=ValueError) + if err is not None: + raise err + res = self + for p in prop[:-1]: + res = res[p] + + res._validate = self._validate + + res[prop[-1]] = value + + def __setattr__(self, prop, value): + """ + Parameters + ---------- + prop : str + The name of a direct child of this object + value + New property value + Returns + ------- + None + """ + if prop.startswith("_") or hasattr(self, prop) or prop in self._valid_props: + # Let known properties and private properties through + super(BasePlotlyType, self).__setattr__(prop, value) + else: + # Raise error on unknown public properties + self._raise_on_invalid_property_error()(prop) + + def __iter__(self): + """ + Return an iterator over the object's properties + """ + res = list(self._valid_props) + for prop in self._mapped_properties: + res.append(prop) + return iter(res) + + def __eq__(self, other): + """ + Test for equality + + To be considered equal, `other` must have the same type as this object + and their `to_plotly_json` representaitons must be identical. + + Parameters + ---------- + other + The object to compare against + + Returns + ------- + bool + """ + if not isinstance(other, self.__class__): + # Require objects to be of the same plotly type + return False + else: + # Compare plotly_json representations + + # Use _vals_equal instead of `==` to handle cases where + # underlying dicts contain numpy arrays + return BasePlotlyType._vals_equal( + self._props if self._props is not None else {}, + other._props if other._props is not None else {}, + ) + + @staticmethod + def _build_repr_for_class(props, class_name, parent_path_str=None): + """ + Helper to build representation string for a class + + Parameters + ---------- + class_name : str + Name of the class being represented + parent_path_str : str of None (default) + Name of the class's parent package to display + props : dict + Properties to unpack into the constructor + + Returns + ------- + str + The representation string + """ + from plotly.utils import ElidedPrettyPrinter + + if parent_path_str: + class_name = parent_path_str + "." + class_name + + if len(props) == 0: + repr_str = class_name + "()" + else: + pprinter = ElidedPrettyPrinter(threshold=200, width=120) + pprint_res = pprinter.pformat(props) + + # pprint_res is indented by 1 space. Add extra 3 spaces for PEP8 + # complaint indent + body = " " + pprint_res[1:-1].replace("\n", "\n ") + + repr_str = class_name + "({\n " + body + "\n})" + + return repr_str + + def __repr__(self): + """ + Customize object representation when displayed in the + terminal/notebook + """ + from _plotly_utils.basevalidators import LiteralValidator + + # Get all properties + props = self._props if self._props is not None else {} + + # Remove literals (These can't be specified in the constructor) + props = { + p: v + for p, v in props.items() + if p in self._valid_props + and not isinstance(self._get_validator(p), LiteralValidator) + } + + # Elide template + if "template" in props: + props["template"] = "..." + + # Build repr string + repr_str = BasePlotlyType._build_repr_for_class( + props=props, + class_name=self.__class__.__name__, + parent_path_str=self._parent_path_str, + ) + + return repr_str + + def _raise_on_invalid_property_error(self, _error_to_raise=None): + """ + Returns a function that raises informative exception when invalid + property names are encountered. The _error_to_raise argument allows + specifying the exception to raise, which is ValueError if None. + + Parameters + ---------- + args : list[str] + List of property names that have already been determined to be + invalid + + Raises + ------ + ValueError by default, or _error_to_raise if not None + """ + if _error_to_raise is None: + _error_to_raise = ValueError + + def _ret(*args): + invalid_props = args + if invalid_props: + if len(invalid_props) == 1: + prop_str = "property" + invalid_str = repr(invalid_props[0]) + else: + prop_str = "properties" + invalid_str = repr(invalid_props) + + module_root = "plotly.graph_objs." + if self._parent_path_str: + full_obj_name = ( + module_root + + self._parent_path_str + + "." + + self.__class__.__name__ + ) + else: + full_obj_name = module_root + self.__class__.__name__ + + guessed_prop = None + if len(invalid_props) == 1: + try: + guessed_prop = find_closest_string( + invalid_props[0], self._valid_props + ) + except Exception: + pass + guessed_prop_suggestion = "" + if guessed_prop is not None: + guessed_prop_suggestion = 'Did you mean "%s"?' % (guessed_prop,) + raise _error_to_raise( + "Invalid {prop_str} specified for object of type " + "{full_obj_name}: {invalid_str}\n" + "\n{guessed_prop_suggestion}\n" + "\n Valid properties:\n" + "{prop_descriptions}" + "\n{guessed_prop_suggestion}\n".format( + prop_str=prop_str, + full_obj_name=full_obj_name, + invalid_str=invalid_str, + prop_descriptions=self._prop_descriptions, + guessed_prop_suggestion=guessed_prop_suggestion, + ) + ) + + return _ret + + def update(self, dict1=None, overwrite=False, **kwargs): + """ + Update the properties of an object with a dict and/or with + keyword arguments. + + This recursively updates the structure of the original + object with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Returns + ------- + BasePlotlyType + Updated plotly object + """ + if self.figure: + with self.figure.batch_update(): + BaseFigure._perform_update(self, dict1, overwrite=overwrite) + BaseFigure._perform_update(self, kwargs, overwrite=overwrite) + else: + BaseFigure._perform_update(self, dict1, overwrite=overwrite) + BaseFigure._perform_update(self, kwargs, overwrite=overwrite) + + return self + + def pop(self, key, *args): + """ + Remove the value associated with the specified key and return it + + Parameters + ---------- + key: str + Property name + dflt + The default value to return if key was not found in object + + Returns + ------- + value + The removed value that was previously associated with key + + Raises + ------ + KeyError + If key is not in object and no dflt argument specified + """ + # Handle default + if key not in self and args: + return args[0] + elif key in self: + val = self[key] + self[key] = None + return val + else: + raise KeyError(key) + + @property + def _in_batch_mode(self): + """ + True if the object belongs to a figure that is currently in batch mode + Returns + ------- + bool + """ + return self.parent and self.parent._in_batch_mode + + def _set_prop(self, prop, val): + """ + Set the value of a simple property + + Parameters + ---------- + prop : str + Name of a simple (non-compound, non-array) property + val + The new property value + + Returns + ------- + Any + The coerced assigned value + """ + + # val is Undefined + # ---------------- + if val is Undefined: + # Do nothing + return + + # Import value + # ------------ + validator = self._get_validator(prop) + + try: + val = validator.validate_coerce(val) + except ValueError as err: + if self._skip_invalid: + return + else: + raise err + + # val is None + # ----------- + if val is None: + # Check if we should send null update + if self._props and prop in self._props: + # Remove property if not in batch mode + if not self._in_batch_mode: + self._props.pop(prop) + + # Send property update message + self._send_prop_set(prop, val) + + # val is valid value + # ------------------ + else: + # Make sure properties dict is initialized + self._init_props() + + # Check whether the value is a change + if prop not in self._props or not BasePlotlyType._vals_equal( + self._props[prop], val + ): + # Set property value if not in batch mode + if not self._in_batch_mode: + self._props[prop] = val + + # Send property update message + self._send_prop_set(prop, val) + + return val + + def _set_compound_prop(self, prop, val): + """ + Set the value of a compound property + + Parameters + ---------- + prop : str + Name of a compound property + val + The new property value + + Returns + ------- + BasePlotlyType + The coerced assigned object + """ + + # val is Undefined + # ---------------- + if val is Undefined: + # Do nothing + return + + # Import value + # ------------ + validator = self._get_validator(prop) + val = validator.validate_coerce(val, skip_invalid=self._skip_invalid) + + # Save deep copies of current and new states + # ------------------------------------------ + curr_val = self._compound_props.get(prop, None) + if curr_val is not None: + curr_dict_val = deepcopy(curr_val._props) + else: + curr_dict_val = None + + if val is not None: + new_dict_val = deepcopy(val._props) + else: + new_dict_val = None + + # Update _props dict + # ------------------ + if not self._in_batch_mode: + if not new_dict_val: + if self._props and prop in self._props: + self._props.pop(prop) + else: + self._init_props() + self._props[prop] = new_dict_val + + # Send update if there was a change in value + # ------------------------------------------ + if not BasePlotlyType._vals_equal(curr_dict_val, new_dict_val): + self._send_prop_set(prop, new_dict_val) + + # Reparent + # -------- + # ### Reparent new value and clear orphan data ### + if isinstance(val, BasePlotlyType): + val._parent = self + val._orphan_props.clear() + + # ### Unparent old value and update orphan data ### + if curr_val is not None: + if curr_dict_val is not None: + curr_val._orphan_props.update(curr_dict_val) + curr_val._parent = None + + # Update _compound_props + # ---------------------- + self._compound_props[prop] = val + return val + + def _set_array_prop(self, prop, val): + """ + Set the value of a compound property + + Parameters + ---------- + prop : str + Name of a compound property + val + The new property value + + Returns + ------- + tuple[BasePlotlyType] + The coerced assigned object + """ + + # val is Undefined + # ---------------- + if val is Undefined: + # Do nothing + return + + # Import value + # ------------ + validator = self._get_validator(prop) + val = validator.validate_coerce(val, skip_invalid=self._skip_invalid) + + # Save deep copies of current and new states + # ------------------------------------------ + curr_val = self._compound_array_props.get(prop, None) + if curr_val is not None: + curr_dict_vals = [deepcopy(cv._props) for cv in curr_val] + else: + curr_dict_vals = None + + if val is not None: + new_dict_vals = [deepcopy(nv._props) for nv in val] + else: + new_dict_vals = None + + # Update _props dict + # ------------------ + if not self._in_batch_mode: + if not new_dict_vals: + if self._props and prop in self._props: + self._props.pop(prop) + else: + self._init_props() + self._props[prop] = new_dict_vals + + # Send update if there was a change in value + # ------------------------------------------ + if not BasePlotlyType._vals_equal(curr_dict_vals, new_dict_vals): + self._send_prop_set(prop, new_dict_vals) + + # Reparent + # -------- + # ### Reparent new values and clear orphan data ### + if val is not None: + for v in val: + v._orphan_props.clear() + v._parent = self + + # ### Unparent old value and update orphan data ### + if curr_val is not None: + for cv, cv_dict in zip(curr_val, curr_dict_vals): + if cv_dict is not None: + cv._orphan_props.update(cv_dict) + cv._parent = None + + # Update _compound_array_props + # ---------------------------- + self._compound_array_props[prop] = val + return val + + def _send_prop_set(self, prop_path_str, val): + """ + Notify parent that a property has been set to a new value + + Parameters + ---------- + prop_path_str : str + Property path string (e.g. 'foo[0].bar') of property that + was set, relative to this object + val + New value for property. Either a simple value, a dict, + or a tuple of dicts. This should *not* be a BasePlotlyType object. + + Returns + ------- + None + """ + raise NotImplementedError() + + def _prop_set_child(self, child, prop_path_str, val): + """ + Propagate property setting notification from child to parent + + Parameters + ---------- + child : BasePlotlyType + Child object + prop_path_str : str + Property path string (e.g. 'foo[0].bar') of property that + was set, relative to `child` + val + New value for property. Either a simple value, a dict, + or a tuple of dicts. This should *not* be a BasePlotlyType object. + + Returns + ------- + None + """ + + # Child is compound array property + # -------------------------------- + child_prop_val = getattr(self, child.plotly_name) + if isinstance(child_prop_val, (list, tuple)): + child_ind = BaseFigure._index_is(child_prop_val, child) + obj_path = "{child_name}.{child_ind}.{prop}".format( + child_name=child.plotly_name, child_ind=child_ind, prop=prop_path_str + ) + + # Child is compound property + # -------------------------- + else: + obj_path = "{child_name}.{prop}".format( + child_name=child.plotly_name, prop=prop_path_str + ) + + # Propagate to parent + # ------------------- + self._send_prop_set(obj_path, val) + + def _restyle_child(self, child, prop, val): + """ + Propagate _restyle_child to parent + + Note: This method must match the name and signature of the + corresponding method on BaseFigure + """ + self._prop_set_child(child, prop, val) + + def _relayout_child(self, child, prop, val): + """ + Propagate _relayout_child to parent + + Note: This method must match the name and signature of the + corresponding method on BaseFigure + """ + self._prop_set_child(child, prop, val) + + # Callbacks + # --------- + def _dispatch_change_callbacks(self, changed_paths): + """ + Execute the appropriate change callback functions given a set of + changed property path tuples + + Parameters + ---------- + changed_paths : set[tuple[int|str]] + + Returns + ------- + None + """ + # Loop over registered callbacks + # ------------------------------ + for prop_path_tuples, callbacks in self._change_callbacks.items(): + # ### Compute callback paths that changed ### + common_paths = changed_paths.intersection(set(prop_path_tuples)) + if common_paths: + # #### Invoke callback #### + callback_args = [self[cb_path] for cb_path in prop_path_tuples] + + for callback in callbacks: + callback(self, *callback_args) + + def on_change(self, callback, *args, **kwargs): + """ + Register callback function to be called when certain properties or + subproperties of this object are modified. + + Callback will be invoked whenever ANY of these properties is + modified. Furthermore, the callback will only be invoked once even + if multiple properties are modified during the same restyle / + relayout / update operation. + + Parameters + ---------- + callback : function + Function that accepts 1 + len(`args`) parameters. First parameter + is this object. Second through last parameters are the + property / subpropery values referenced by args. + args : list[str|tuple[int|str]] + List of property references where each reference may be one of: + + 1) A property name string (e.g. 'foo') for direct properties + 2) A property path string (e.g. 'foo[0].bar') for + subproperties + 3) A property path tuple (e.g. ('foo', 0, 'bar')) for + subproperties + + append : bool + True if callback should be appended to previously registered + callback on the same properties, False if callback should replace + previously registered callbacks on the same properties. Defaults + to False. + + Examples + -------- + + Register callback that prints out the range extents of the xaxis and + yaxis whenever either either of them changes. + + >>> import plotly.graph_objects as go + >>> fig = go.Figure(go.Scatter(x=[1, 2], y=[1, 0])) + >>> fig.layout.on_change( + ... lambda obj, xrange, yrange: print("%s-%s" % (xrange, yrange)), + ... ('xaxis', 'range'), ('yaxis', 'range')) + + + Returns + ------- + None + """ + + # Warn if object not descendent of a figure + # ----------------------------------------- + if not self.figure: + class_name = self.__class__.__name__ + msg = """ +{class_name} object is not a descendant of a Figure. +on_change callbacks are not supported in this case. +""".format(class_name=class_name) + raise ValueError(msg) + + # Validate args not empty + # ----------------------- + if len(args) == 0: + raise ValueError("At least one change property must be specified") + + # Validate args + # ------------- + invalid_args = [arg for arg in args if arg not in self] + if invalid_args: + raise ValueError("Invalid property specification(s): %s" % invalid_args) + + # Process append option + # --------------------- + append = kwargs.get("append", False) + + # Normalize args to path tuples + # ----------------------------- + arg_tuples = tuple([BaseFigure._str_to_dict_path(a) for a in args]) + + # Initialize callbacks list + # ------------------------- + # Initialize an empty callbacks list if there are no previously + # defined callbacks for this collection of args, or if append is False + if arg_tuples not in self._change_callbacks or not append: + self._change_callbacks[arg_tuples] = [] + + # Register callback + # ----------------- + self._change_callbacks[arg_tuples].append(callback) + + def to_plotly_json(self): + """ + Return plotly JSON representation of object as a Python dict + + Note: May include some JSON-invalid data types, use the `PlotlyJSONEncoder` util + or the `to_json` method to encode to a string. + + Returns + ------- + dict + """ + return deepcopy(self._props if self._props is not None else {}) + + def to_json(self, *args, **kwargs): + """ + Convert object to a JSON string representation + + Parameters + ---------- + validate: bool (default True) + True if the object should be validated before being converted to + JSON, False otherwise. + + pretty: bool (default False) + True if JSON representation should be pretty-printed, False if + representation should be as compact as possible. + + remove_uids: bool (default True) + True if trace UIDs should be omitted from the JSON representation + + engine: str (default None) + The JSON encoding engine to use. One of: + - "json" for an encoder based on the built-in Python json module + - "orjson" for a fast encoder the requires the orjson package + If not specified, the default encoder is set to the current value of + plotly.io.json.config.default_encoder. + + Returns + ------- + str + Representation of object as a JSON string + """ + import plotly.io as pio + + return pio.to_json(self, *args, **kwargs) + + @staticmethod + def _vals_equal(v1, v2): + """ + Recursive equality function that handles nested dicts / tuples / lists + that contain numpy arrays. + + v1 + First value to compare + v2 + Second value to compare + + Returns + ------- + bool + True if v1 and v2 are equal, False otherwise + """ + np = get_module("numpy", should_load=False) + if np is not None and ( + isinstance(v1, np.ndarray) or isinstance(v2, np.ndarray) + ): + return np.array_equal(v1, v2) + elif isinstance(v1, (list, tuple)): + # Handle recursive equality on lists and tuples + return ( + isinstance(v2, (list, tuple)) + and len(v1) == len(v2) + and all(BasePlotlyType._vals_equal(e1, e2) for e1, e2 in zip(v1, v2)) + ) + elif isinstance(v1, dict): + # Handle recursive equality on dicts + return ( + isinstance(v2, dict) + and set(v1.keys()) == set(v2.keys()) + and all(BasePlotlyType._vals_equal(v1[k], v2[k]) for k in v1) + ) + else: + return v1 == v2 + + +class BaseLayoutHierarchyType(BasePlotlyType): + """ + Base class for all types in the layout hierarchy + """ + + @property + def _parent_path_str(self): + pass + + def __init__(self, plotly_name, **kwargs): + super(BaseLayoutHierarchyType, self).__init__(plotly_name, **kwargs) + + def _send_prop_set(self, prop_path_str, val): + if self.parent: + # ### Inform parent of relayout operation ### + self.parent._relayout_child(self, prop_path_str, val) + + +class BaseLayoutType(BaseLayoutHierarchyType): + """ + Base class for the layout type. The Layout class itself is a + code-generated subclass. + """ + + # Dynamic properties + # ------------------ + # Unlike all other plotly types, BaseLayoutType has dynamic properties. + # These are used when a layout has multiple instances of subplot types + # (xaxis2, yaxis3, geo4, etc.) + # + # The base version of each subplot type is defined in the schema and code + # generated. So the Layout subclass has statically defined properties + # for xaxis, yaxis, geo, ternary, and scene. But, we need to dynamically + # generated properties/validators as needed for xaxis2, yaxis3, etc. + + @property + def _subplotid_validators(self): + """ + dict of validator classes for each subplot type + + Returns + ------- + dict + """ + raise NotImplementedError() + + def _subplot_re_match(self, prop): + raise NotImplementedError() + + def __init__(self, plotly_name, **kwargs): + """ + Construct a new BaseLayoutType object + + Parameters + ---------- + plotly_name : str + Name of the object (should always be 'layout') + kwargs : dict[str, any] + Properties that were not recognized by the Layout subclass. + These are subplot identifiers (xaxis2, geo4, etc.) or they are + invalid properties. + """ + # Validate inputs + # --------------- + assert plotly_name == "layout" + + # Call superclass constructor + # --------------------------- + super(BaseLayoutHierarchyType, self).__init__(plotly_name) + + # Initialize _subplotid_props + # --------------------------- + # This is a set storing the names of the layout's dynamic subplot + # properties + self._subplotid_props = set() + + # Process kwargs + # -------------- + self._process_kwargs(**kwargs) + + def _process_kwargs(self, **kwargs): + """ + Process any extra kwargs that are not predefined as constructor params + """ + unknown_kwargs = { + k: v for k, v in kwargs.items() if not self._subplot_re_match(k) + } + super(BaseLayoutHierarchyType, self)._process_kwargs(**unknown_kwargs) + + subplot_kwargs = {k: v for k, v in kwargs.items() if self._subplot_re_match(k)} + + for prop, value in subplot_kwargs.items(): + self._set_subplotid_prop(prop, value) + + def _set_subplotid_prop(self, prop, value): + """ + Set a subplot property on the layout + + Parameters + ---------- + prop : str + A valid subplot property + value + Subplot value + """ + # Get regular expression match + # ---------------------------- + # Note: we already tested that match exists in the constructor + match = self._subplot_re_match(prop) + subplot_prop = match.group(1) + suffix_digit = int(match.group(2)) + + # Validate suffix digit + # --------------------- + if suffix_digit == 0: + raise TypeError( + "Subplot properties may only be suffixed by an " + "integer >= 1\n" + "Received {k}".format(k=prop) + ) + + # Handle suffix_digit == 1 + # ------------------------ + # In this case we remove suffix digit (e.g. xaxis1 -> xaxis) + if suffix_digit == 1: + prop = subplot_prop + + # Construct and add validator + # --------------------------- + if prop not in self._valid_props: + self._valid_props.add(prop) + + # Import value + # ------------ + # Use the standard _set_compound_prop method to + # validate/coerce/import subplot value. This must be called AFTER + # the validator instance is added to self._validators above. + self._set_compound_prop(prop, value) + self._subplotid_props.add(prop) + + def _strip_subplot_suffix_of_1(self, prop): + """ + Strip the suffix for subplot property names that have a suffix of 1. + All other properties are returned unchanged + + e.g. 'xaxis1' -> 'xaxis' + + Parameters + ---------- + prop : str|tuple + + Returns + ------- + str|tuple + """ + # Let parent handle non-scalar cases + # ---------------------------------- + # e.g. ('xaxis', 'range') or 'xaxis.range' + prop_tuple = BaseFigure._str_to_dict_path(prop) + if len(prop_tuple) != 1 or not isinstance(prop_tuple[0], str): + return prop + else: + # Unwrap to scalar string + prop = prop_tuple[0] + + # Handle subplot suffix digit of 1 + # -------------------------------- + # Remove digit of 1 from subplot id (e.g.. xaxis1 -> xaxis) + match = self._subplot_re_match(prop) + + if match: + subplot_prop = match.group(1) + suffix_digit = int(match.group(2)) + if subplot_prop and suffix_digit == 1: + prop = subplot_prop + + return prop + + def _get_prop_validator(self, prop): + """ + Custom _get_prop_validator that handles subplot properties + """ + prop = self._strip_subplot_suffix_of_1(prop) + return super(BaseLayoutHierarchyType, self)._get_prop_validator(prop) + + def __getattr__(self, prop): + """ + Custom __getattr__ that handles dynamic subplot properties + """ + prop = self._strip_subplot_suffix_of_1(prop) + if prop != "_subplotid_props" and prop in self._subplotid_props: + validator = self._get_validator(prop) + return validator.present(self._compound_props[prop]) + else: + return super(BaseLayoutHierarchyType, self).__getattribute__(prop) + + def __getitem__(self, prop): + """ + Custom __getitem__ that handles dynamic subplot properties + """ + prop = self._strip_subplot_suffix_of_1(prop) + return super(BaseLayoutHierarchyType, self).__getitem__(prop) + + def __contains__(self, prop): + """ + Custom __contains__ that handles dynamic subplot properties + """ + prop = self._strip_subplot_suffix_of_1(prop) + return super(BaseLayoutHierarchyType, self).__contains__(prop) + + def __setitem__(self, prop, value): + """ + Custom __setitem__ that handles dynamic subplot properties + """ + # Convert prop to prop tuple + # -------------------------- + prop_tuple = BaseFigure._str_to_dict_path(prop) + if len(prop_tuple) != 1 or not isinstance(prop_tuple[0], str): + # Let parent handle non-scalar non-string cases + super(BaseLayoutHierarchyType, self).__setitem__(prop, value) + return + else: + # Unwrap prop tuple + prop = prop_tuple[0] + + # Check for subplot assignment + # ---------------------------- + match = self._subplot_re_match(prop) + if match is None: + # Set as ordinary property + super(BaseLayoutHierarchyType, self).__setitem__(prop, value) + else: + # Set as subplotid property + self._set_subplotid_prop(prop, value) + + def __setattr__(self, prop, value): + """ + Custom __setattr__ that handles dynamic subplot properties + """ + # Check for subplot assignment + # ---------------------------- + match = self._subplot_re_match(prop) + if match is None: + # Set as ordinary property + super(BaseLayoutHierarchyType, self).__setattr__(prop, value) + else: + # Set as subplotid property + self._set_subplotid_prop(prop, value) + + def __dir__(self): + """ + Custom __dir__ that handles dynamic subplot properties + """ + # Include any active subplot values + return list(super(BaseLayoutHierarchyType, self).__dir__()) + sorted( + self._subplotid_props + ) + + +class BaseTraceHierarchyType(BasePlotlyType): + """ + Base class for all types in the trace hierarchy + """ + + def __init__(self, plotly_name, **kwargs): + super(BaseTraceHierarchyType, self).__init__(plotly_name, **kwargs) + + def _send_prop_set(self, prop_path_str, val): + if self.parent: + # ### Inform parent of restyle operation ### + self.parent._restyle_child(self, prop_path_str, val) + + +class BaseTraceType(BaseTraceHierarchyType): + """ + Base class for the all trace types. + + Specific trace type classes (Scatter, Bar, etc.) are code generated as + subclasses of this class. + """ + + def __init__(self, plotly_name, **kwargs): + super(BaseTraceHierarchyType, self).__init__(plotly_name, **kwargs) + + # Initialize callback function lists + # ---------------------------------- + # ### Callbacks to be called on hover ### + self._hover_callbacks = [] + + # ### Callbacks to be called on unhover ### + self._unhover_callbacks = [] + + # ### Callbacks to be called on click ### + self._click_callbacks = [] + + # ### Callbacks to be called on selection ### + self._select_callbacks = [] + + # ### Callbacks to be called on deselect ### + self._deselect_callbacks = [] + + # ### Trace index in figure ### + self._trace_ind = None + + # uid + # --- + # All trace types must have a top-level UID + @property + def uid(self): + raise NotImplementedError + + @uid.setter + def uid(self, val): + raise NotImplementedError + + # Hover + # ----- + def on_hover(self, callback, append=False): + """ + Register function to be called when the user hovers over one or more + points in this trace + + Note: Callbacks will only be triggered when the trace belongs to a + instance of plotly.graph_objs.FigureWidget and it is displayed in an + ipywidget context. Callbacks will not be triggered on figures + that are displayed using plot/iplot. + + Parameters + ---------- + callback + Callable function that accepts 3 arguments + + - this trace + - plotly.callbacks.Points object + - plotly.callbacks.InputDeviceState object + + append : bool + If False (the default), this callback replaces any previously + defined on_hover callbacks for this trace. If True, + this callback is appended to the list of any previously defined + callbacks. + + Returns + ------- + None + + Examples + -------- + + >>> import plotly.graph_objects as go + >>> from plotly.callbacks import Points, InputDeviceState + >>> points, state = Points(), InputDeviceState() + + >>> def hover_fn(trace, points, state): + ... inds = points.point_inds + ... # Do something + + >>> trace = go.Scatter(x=[1, 2], y=[3, 0]) + >>> trace.on_hover(hover_fn) + + Note: The creation of the `points` and `state` objects is optional, + it's simply a convenience to help the text editor perform completion + on the arguments inside `hover_fn` + """ + if not append: + del self._hover_callbacks[:] + + if callback: + self._hover_callbacks.append(callback) + + def _dispatch_on_hover(self, points, state): + """ + Dispatch points and device state all all hover callbacks + """ + for callback in self._hover_callbacks: + callback(self, points, state) + + # Unhover + # ------- + def on_unhover(self, callback, append=False): + """ + Register function to be called when the user unhovers away from one + or more points in this trace. + + Note: Callbacks will only be triggered when the trace belongs to a + instance of plotly.graph_objs.FigureWidget and it is displayed in an + ipywidget context. Callbacks will not be triggered on figures + that are displayed using plot/iplot. + + Parameters + ---------- + callback + Callable function that accepts 3 arguments + + - this trace + - plotly.callbacks.Points object + - plotly.callbacks.InputDeviceState object + + append : bool + If False (the default), this callback replaces any previously + defined on_unhover callbacks for this trace. If True, + this callback is appended to the list of any previously defined + callbacks. + + Returns + ------- + None + + Examples + -------- + + >>> import plotly.graph_objects as go + >>> from plotly.callbacks import Points, InputDeviceState + >>> points, state = Points(), InputDeviceState() + + >>> def unhover_fn(trace, points, state): + ... inds = points.point_inds + ... # Do something + + >>> trace = go.Scatter(x=[1, 2], y=[3, 0]) + >>> trace.on_unhover(unhover_fn) + + Note: The creation of the `points` and `state` objects is optional, + it's simply a convenience to help the text editor perform completion + on the arguments inside `unhover_fn` + """ + if not append: + del self._unhover_callbacks[:] + + if callback: + self._unhover_callbacks.append(callback) + + def _dispatch_on_unhover(self, points, state): + """ + Dispatch points and device state all all hover callbacks + """ + for callback in self._unhover_callbacks: + callback(self, points, state) + + # Click + # ----- + def on_click(self, callback, append=False): + """ + Register function to be called when the user clicks on one or more + points in this trace. + + Note: Callbacks will only be triggered when the trace belongs to a + instance of plotly.graph_objs.FigureWidget and it is displayed in an + ipywidget context. Callbacks will not be triggered on figures + that are displayed using plot/iplot. + + Parameters + ---------- + callback + Callable function that accepts 3 arguments + + - this trace + - plotly.callbacks.Points object + - plotly.callbacks.InputDeviceState object + + append : bool + If False (the default), this callback replaces any previously + defined on_click callbacks for this trace. If True, + this callback is appended to the list of any previously defined + callbacks. + + Returns + ------- + None + + Examples + -------- + + >>> import plotly.graph_objects as go + >>> from plotly.callbacks import Points, InputDeviceState + >>> points, state = Points(), InputDeviceState() + + >>> def click_fn(trace, points, state): + ... inds = points.point_inds + ... # Do something + + >>> trace = go.Scatter(x=[1, 2], y=[3, 0]) + >>> trace.on_click(click_fn) + + Note: The creation of the `points` and `state` objects is optional, + it's simply a convenience to help the text editor perform completion + on the arguments inside `click_fn` + """ + if not append: + del self._click_callbacks[:] + if callback: + self._click_callbacks.append(callback) + + def _dispatch_on_click(self, points, state): + """ + Dispatch points and device state all all hover callbacks + """ + for callback in self._click_callbacks: + callback(self, points, state) + + # Select + # ------ + def on_selection(self, callback, append=False): + """ + Register function to be called when the user selects one or more + points in this trace. + + Note: Callbacks will only be triggered when the trace belongs to a + instance of plotly.graph_objs.FigureWidget and it is displayed in an + ipywidget context. Callbacks will not be triggered on figures + that are displayed using plot/iplot. + + Parameters + ---------- + callback + Callable function that accepts 4 arguments + + - this trace + - plotly.callbacks.Points object + - plotly.callbacks.BoxSelector or plotly.callbacks.LassoSelector + + append : bool + If False (the default), this callback replaces any previously + defined on_selection callbacks for this trace. If True, + this callback is appended to the list of any previously defined + callbacks. + + Returns + ------- + None + + Examples + -------- + + >>> import plotly.graph_objects as go + >>> from plotly.callbacks import Points + >>> points = Points() + + >>> def selection_fn(trace, points, selector): + ... inds = points.point_inds + ... # Do something + + >>> trace = go.Scatter(x=[1, 2], y=[3, 0]) + >>> trace.on_selection(selection_fn) + + Note: The creation of the `points` object is optional, + it's simply a convenience to help the text editor perform completion + on the `points` arguments inside `selection_fn` + """ + if not append: + del self._select_callbacks[:] + + if callback: + self._select_callbacks.append(callback) + + def _dispatch_on_selection(self, points, selector): + """ + Dispatch points and selector info to selection callbacks + """ + if "selectedpoints" in self: + # Update the selectedpoints property, which will notify all views + # of the selection change. This is a special case because no + # restyle event is emitted by plotly.js on selection events + # even though these events update the selectedpoints property. + self.selectedpoints = points.point_inds + + for callback in self._select_callbacks: + callback(self, points, selector) + + # deselect + # -------- + def on_deselect(self, callback, append=False): + """ + Register function to be called when the user deselects points + in this trace using doubleclick. + + Note: Callbacks will only be triggered when the trace belongs to a + instance of plotly.graph_objs.FigureWidget and it is displayed in an + ipywidget context. Callbacks will not be triggered on figures + that are displayed using plot/iplot. + + Parameters + ---------- + callback + Callable function that accepts 3 arguments + + - this trace + - plotly.callbacks.Points object + + append : bool + If False (the default), this callback replaces any previously + defined on_deselect callbacks for this trace. If True, + this callback is appended to the list of any previously defined + callbacks. + + Returns + ------- + None + + Examples + -------- + + >>> import plotly.graph_objects as go + >>> from plotly.callbacks import Points + >>> points = Points() + + >>> def deselect_fn(trace, points): + ... inds = points.point_inds + ... # Do something + + >>> trace = go.Scatter(x=[1, 2], y=[3, 0]) + >>> trace.on_deselect(deselect_fn) + + Note: The creation of the `points` object is optional, + it's simply a convenience to help the text editor perform completion + on the `points` arguments inside `selection_fn` + """ + if not append: + del self._deselect_callbacks[:] + + if callback: + self._deselect_callbacks.append(callback) + + def _dispatch_on_deselect(self, points): + """ + Dispatch points info to deselection callbacks + """ + if "selectedpoints" in self: + # Update the selectedpoints property, which will notify all views + # of the selection change. This is a special case because no + # restyle event is emitted by plotly.js on selection events + # even though these events update the selectedpoints property. + self.selectedpoints = None + + for callback in self._deselect_callbacks: + callback(self, points) + + +class BaseFrameHierarchyType(BasePlotlyType): + """ + Base class for all types in the trace hierarchy + """ + + def __init__(self, plotly_name, **kwargs): + super(BaseFrameHierarchyType, self).__init__(plotly_name, **kwargs) + + def _send_prop_set(self, prop_path_str, val): + # Note: Frames are not supported by FigureWidget, and updates are not + # propagated to parents + pass + + def _restyle_child(self, child, key_path_str, val): + # Note: Frames are not supported by FigureWidget, and updates are not + # propagated to parents + pass + + def on_change(self, callback, *args): + raise NotImplementedError("Change callbacks are not supported on Frames") + + def _get_child_props(self, child): + """ + Return the properties dict for a child trace or child layout + + Note: this method must match the name/signature of one on + BasePlotlyType + + Parameters + ---------- + child : BaseTraceType | BaseLayoutType + + Returns + ------- + dict + """ + # Try to find index of child as a trace + # ------------------------------------- + try: + trace_index = BaseFigure._index_is(self.data, child) + except ValueError: + trace_index = None + + # Child is a trace + # ---------------- + if trace_index is not None: + if "data" in self._props: + return self._props["data"][trace_index] + else: + return None + + # Child is the layout + # ------------------- + elif child is self.layout: + return self._props.get("layout", None) + + # Unknown child + # ------------- + else: + raise ValueError("Unrecognized child: %s" % child) diff --git a/venv/lib/python3.8/site-packages/plotly/basewidget.py b/venv/lib/python3.8/site-packages/plotly/basewidget.py new file mode 100644 index 0000000..08c655f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/basewidget.py @@ -0,0 +1,989 @@ +from copy import deepcopy +import pathlib +from traitlets import List, Dict, observe, Integer +from plotly.io._renderers import display_jupyter_version_warnings + +from .basedatatypes import BaseFigure, BasePlotlyType +from .callbacks import BoxSelector, LassoSelector, InputDeviceState, Points +from .serializers import custom_serializers +import anywidget + + +class BaseFigureWidget(BaseFigure, anywidget.AnyWidget): + """ + Base class for FigureWidget. The FigureWidget class is code-generated as a + subclass + """ + + _esm = pathlib.Path(__file__).parent / "package_data" / "widgetbundle.js" + + # ### _data and _layout ### + # These properties store the current state of the traces and + # layout as JSON-style dicts. These dicts do not store any subclasses of + # `BasePlotlyType` + # + # Note: These are only automatically synced with the frontend on full + # assignment, not on mutation. We use this fact to only directly sync + # them to the front-end on FigureWidget construction. All other updates + # are made using mutation, and they are manually synced to the frontend + # using the relayout/restyle/update/etc. messages. + _widget_layout = Dict().tag(sync=True, **custom_serializers) + _widget_data = List().tag(sync=True, **custom_serializers) + _config = Dict().tag(sync=True, **custom_serializers) + + # ### Python -> JS message properties ### + # These properties are used to send messages from Python to the + # frontend. Messages are sent by assigning the message contents to the + # appropriate _py2js_* property and then immediatly assigning None to the + # property. + # + # See JSDoc comments in the FigureModel class in js/src/Figure.js for + # detailed descriptions of the messages. + _py2js_addTraces = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _py2js_restyle = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _py2js_relayout = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _py2js_update = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _py2js_animate = Dict(allow_none=True).tag(sync=True, **custom_serializers) + + _py2js_deleteTraces = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _py2js_moveTraces = Dict(allow_none=True).tag(sync=True, **custom_serializers) + + _py2js_removeLayoutProps = Dict(allow_none=True).tag( + sync=True, **custom_serializers + ) + _py2js_removeTraceProps = Dict(allow_none=True).tag(sync=True, **custom_serializers) + + # ### JS -> Python message properties ### + # These properties are used to receive messages from the frontend. + # Messages are received by defining methods that observe changes to these + # properties. Receive methods are named `_handler_js2py_*` where '*' is + # the name of the corresponding message property. Receive methods are + # responsible for setting the message property to None after retreiving + # the message data. + # + # See JSDoc comments in the FigureModel class in js/src/Figure.js for + # detailed descriptions of the messages. + _js2py_traceDeltas = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _js2py_layoutDelta = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _js2py_restyle = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _js2py_relayout = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _js2py_update = Dict(allow_none=True).tag(sync=True, **custom_serializers) + _js2py_pointsCallback = Dict(allow_none=True).tag(sync=True, **custom_serializers) + + # ### Message tracking properties ### + # The _last_layout_edit_id and _last_trace_edit_id properties are used + # to keep track of the edit id of the message that most recently + # requested an update to the Figures layout or traces respectively. + # + # We track this information because we don't want to update the Figure's + # default layout/trace properties (_layout_defaults, _data_defaults) + # while edits are in process. This can lead to inconsistent property + # states. + _last_layout_edit_id = Integer(0).tag(sync=True) + _last_trace_edit_id = Integer(0).tag(sync=True) + + _set_trace_uid = True + _allow_disable_validation = False + + # Constructor + # ----------- + def __init__( + self, data=None, layout=None, frames=None, skip_invalid=False, **kwargs + ): + # Call superclass constructors + # ---------------------------- + # Note: We rename layout to layout_plotly because to deconflict it + # with the `layout` constructor parameter of the `widgets.DOMWidget` + # ipywidgets class + super(BaseFigureWidget, self).__init__( + data=data, + layout_plotly=layout, + frames=frames, + skip_invalid=skip_invalid, + **kwargs, + ) + + # Validate Frames + # --------------- + # Frames are not supported by figure widget + if self._frame_objs: + BaseFigureWidget._display_frames_error() + + # Message States + # -------------- + # ### Layout ### + + # _last_layout_edit_id is described above + self._last_layout_edit_id = 0 + + # _layout_edit_in_process is set to True if there are layout edit + # operations that have been sent to the frontend that haven't + # completed yet. + self._layout_edit_in_process = False + + # _waiting_edit_callbacks is a list of callback functions that + # should be executed as soon as all pending edit operations are + # completed + self._waiting_edit_callbacks = [] + + # ### Trace ### + # _last_trace_edit_id: described above + self._last_trace_edit_id = 0 + + # _trace_edit_in_process is set to True if there are trace edit + # operations that have been sent to the frontend that haven't + # completed yet. + self._trace_edit_in_process = False + + # View count + # ---------- + # ipywidget property that stores the number of active frontend + # views of this widget + self._view_count = 0 + + # Initialize widget layout and data for third-party widget integration + # -------------------------------------------------------------------- + self._widget_layout = deepcopy(self._layout_obj._props) + self._widget_data = deepcopy(self._data) + + def show(self, *args, **kwargs): + return self + + # Python -> JavaScript Messages + # ----------------------------- + def _send_relayout_msg(self, layout_data, source_view_id=None): + """ + Send Plotly.relayout message to the frontend + + Parameters + ---------- + layout_data : dict + Plotly.relayout layout data + source_view_id : str + UID of view that triggered this relayout operation + (e.g. By the user clicking 'zoom' in the toolbar). None if the + operation was not triggered by a frontend view + """ + # Increment layout edit messages IDs + # ---------------------------------- + layout_edit_id = self._last_layout_edit_id + 1 + self._last_layout_edit_id = layout_edit_id + self._layout_edit_in_process = True + + # Build message + # ------------- + msg_data = { + "relayout_data": layout_data, + "layout_edit_id": layout_edit_id, + "source_view_id": source_view_id, + } + + # Send message + # ------------ + self._py2js_relayout = msg_data + self._py2js_relayout = None + + def _send_restyle_msg(self, restyle_data, trace_indexes=None, source_view_id=None): + """ + Send Plotly.restyle message to the frontend + + Parameters + ---------- + restyle_data : dict + Plotly.restyle restyle data + trace_indexes : list[int] + List of trace indexes that the restyle operation + applies to + source_view_id : str + UID of view that triggered this restyle operation + (e.g. By the user clicking the legend to hide a trace). + None if the operation was not triggered by a frontend view + """ + + # Validate / normalize inputs + # --------------------------- + trace_indexes = self._normalize_trace_indexes(trace_indexes) + + # Increment layout/trace edit message IDs + # --------------------------------------- + layout_edit_id = self._last_layout_edit_id + 1 + self._last_layout_edit_id = layout_edit_id + self._layout_edit_in_process = True + + trace_edit_id = self._last_trace_edit_id + 1 + self._last_trace_edit_id = trace_edit_id + self._trace_edit_in_process = True + + # Build message + # ------------- + restyle_msg = { + "restyle_data": restyle_data, + "restyle_traces": trace_indexes, + "trace_edit_id": trace_edit_id, + "layout_edit_id": layout_edit_id, + "source_view_id": source_view_id, + } + + # Send message + # ------------ + self._py2js_restyle = restyle_msg + self._py2js_restyle = None + + def _send_addTraces_msg(self, new_traces_data): + """ + Send Plotly.addTraces message to the frontend + + Parameters + ---------- + new_traces_data : list[dict] + List of trace data for new traces as accepted by Plotly.addTraces + """ + + # Increment layout/trace edit message IDs + # --------------------------------------- + layout_edit_id = self._last_layout_edit_id + 1 + self._last_layout_edit_id = layout_edit_id + self._layout_edit_in_process = True + + trace_edit_id = self._last_trace_edit_id + 1 + self._last_trace_edit_id = trace_edit_id + self._trace_edit_in_process = True + + # Build message + # ------------- + add_traces_msg = { + "trace_data": new_traces_data, + "trace_edit_id": trace_edit_id, + "layout_edit_id": layout_edit_id, + } + + # Send message + # ------------ + self._py2js_addTraces = add_traces_msg + self._py2js_addTraces = None + + def _send_moveTraces_msg(self, current_inds, new_inds): + """ + Send Plotly.moveTraces message to the frontend + + Parameters + ---------- + current_inds : list[int] + List of current trace indexes + new_inds : list[int] + List of new trace indexes + """ + + # Build message + # ------------- + move_msg = {"current_trace_inds": current_inds, "new_trace_inds": new_inds} + + # Send message + # ------------ + self._py2js_moveTraces = move_msg + self._py2js_moveTraces = None + + def _send_update_msg( + self, restyle_data, relayout_data, trace_indexes=None, source_view_id=None + ): + """ + Send Plotly.update message to the frontend + + Parameters + ---------- + restyle_data : dict + Plotly.update restyle data + relayout_data : dict + Plotly.update relayout data + trace_indexes : list[int] + List of trace indexes that the update operation applies to + source_view_id : str + UID of view that triggered this update operation + (e.g. By the user clicking a button). + None if the operation was not triggered by a frontend view + """ + + # Validate / normalize inputs + # --------------------------- + trace_indexes = self._normalize_trace_indexes(trace_indexes) + + # Increment layout/trace edit message IDs + # --------------------------------------- + trace_edit_id = self._last_trace_edit_id + 1 + self._last_trace_edit_id = trace_edit_id + self._trace_edit_in_process = True + + layout_edit_id = self._last_layout_edit_id + 1 + self._last_layout_edit_id = layout_edit_id + self._layout_edit_in_process = True + + # Build message + # ------------- + update_msg = { + "style_data": restyle_data, + "layout_data": relayout_data, + "style_traces": trace_indexes, + "trace_edit_id": trace_edit_id, + "layout_edit_id": layout_edit_id, + "source_view_id": source_view_id, + } + + # Send message + # ------------ + self._py2js_update = update_msg + self._py2js_update = None + + def _send_animate_msg( + self, styles_data, relayout_data, trace_indexes, animation_opts + ): + """ + Send Plotly.update message to the frontend + + Note: there is no source_view_id parameter because animations + triggered by the fontend are not currently supported + + Parameters + ---------- + styles_data : list[dict] + Plotly.animate styles data + relayout_data : dict + Plotly.animate relayout data + trace_indexes : list[int] + List of trace indexes that the animate operation applies to + """ + + # Validate / normalize inputs + # --------------------------- + trace_indexes = self._normalize_trace_indexes(trace_indexes) + + # Increment layout/trace edit message IDs + # --------------------------------------- + trace_edit_id = self._last_trace_edit_id + 1 + self._last_trace_edit_id = trace_edit_id + self._trace_edit_in_process = True + + layout_edit_id = self._last_layout_edit_id + 1 + self._last_layout_edit_id = layout_edit_id + self._layout_edit_in_process = True + + # Build message + # ------------- + animate_msg = { + "style_data": styles_data, + "layout_data": relayout_data, + "style_traces": trace_indexes, + "animation_opts": animation_opts, + "trace_edit_id": trace_edit_id, + "layout_edit_id": layout_edit_id, + "source_view_id": None, + } + + # Send message + # ------------ + self._py2js_animate = animate_msg + self._py2js_animate = None + + def _send_deleteTraces_msg(self, delete_inds): + """ + Send Plotly.deleteTraces message to the frontend + + Parameters + ---------- + delete_inds : list[int] + List of trace indexes of traces to delete + """ + + # Increment layout/trace edit message IDs + # --------------------------------------- + trace_edit_id = self._last_trace_edit_id + 1 + self._last_trace_edit_id = trace_edit_id + self._trace_edit_in_process = True + + layout_edit_id = self._last_layout_edit_id + 1 + self._last_layout_edit_id = layout_edit_id + self._layout_edit_in_process = True + + # Build message + # ------------- + delete_msg = { + "delete_inds": delete_inds, + "layout_edit_id": layout_edit_id, + "trace_edit_id": trace_edit_id, + } + + # Send message + # ------------ + self._py2js_deleteTraces = delete_msg + self._py2js_deleteTraces = None + + # JavaScript -> Python Messages + # ----------------------------- + @observe("_js2py_traceDeltas") + def _handler_js2py_traceDeltas(self, change): + """ + Process trace deltas message from the frontend + """ + + # Receive message + # --------------- + msg_data = change["new"] + if not msg_data: + self._js2py_traceDeltas = None + return + + trace_deltas = msg_data["trace_deltas"] + trace_edit_id = msg_data["trace_edit_id"] + + # Apply deltas + # ------------ + # We only apply the deltas if this message corresponds to the most + # recent trace edit operation + if trace_edit_id == self._last_trace_edit_id: + # ### Loop over deltas ### + for delta in trace_deltas: + # #### Find existing trace for uid ### + trace_uid = delta["uid"] + trace_uids = [trace.uid for trace in self.data] + trace_index = trace_uids.index(trace_uid) + uid_trace = self.data[trace_index] + + # #### Transform defaults to delta #### + delta_transform = BaseFigureWidget._transform_data( + uid_trace._prop_defaults, delta + ) + + # #### Remove overlapping properties #### + # If a property is present in both _props and _prop_defaults + # then we remove the copy from _props + remove_props = self._remove_overlapping_props( + uid_trace._props, uid_trace._prop_defaults + ) + + # #### Notify frontend model of property removal #### + if remove_props: + remove_trace_props_msg = { + "remove_trace": trace_index, + "remove_props": remove_props, + } + self._py2js_removeTraceProps = remove_trace_props_msg + self._py2js_removeTraceProps = None + + # #### Dispatch change callbacks #### + self._dispatch_trace_change_callbacks(delta_transform, [trace_index]) + + # ### Trace edits no longer in process ### + self._trace_edit_in_process = False + + # ### Call any waiting trace edit callbacks ### + if not self._layout_edit_in_process: + while self._waiting_edit_callbacks: + self._waiting_edit_callbacks.pop()() + + self._js2py_traceDeltas = None + + @observe("_js2py_layoutDelta") + def _handler_js2py_layoutDelta(self, change): + """ + Process layout delta message from the frontend + """ + + # Receive message + # --------------- + msg_data = change["new"] + if not msg_data: + self._js2py_layoutDelta = None + return + + layout_delta = msg_data["layout_delta"] + layout_edit_id = msg_data["layout_edit_id"] + + # Apply delta + # ----------- + # We only apply the delta if this message corresponds to the most + # recent layout edit operation + if layout_edit_id == self._last_layout_edit_id: + # ### Transform defaults to delta ### + delta_transform = BaseFigureWidget._transform_data( + self._layout_defaults, layout_delta + ) + + # ### Remove overlapping properties ### + # If a property is present in both _layout and _layout_defaults + # then we remove the copy from _layout + removed_props = self._remove_overlapping_props( + self._widget_layout, self._layout_defaults + ) + + # ### Notify frontend model of property removal ### + if removed_props: + remove_props_msg = {"remove_props": removed_props} + + self._py2js_removeLayoutProps = remove_props_msg + self._py2js_removeLayoutProps = None + + # ### Create axis objects ### + # For example, when a SPLOM trace is created the layout defaults + # may include axes that weren't explicitly defined by the user. + for proppath in delta_transform: + prop = proppath[0] + match = self.layout._subplot_re_match(prop) + if match and prop not in self.layout: + # We need to create a subplotid object + self.layout[prop] = {} + + # ### Dispatch change callbacks ### + self._dispatch_layout_change_callbacks(delta_transform) + + # ### Layout edits no longer in process ### + self._layout_edit_in_process = False + + # ### Call any waiting layout edit callbacks ### + if not self._trace_edit_in_process: + while self._waiting_edit_callbacks: + self._waiting_edit_callbacks.pop()() + + self._js2py_layoutDelta = None + + @observe("_js2py_restyle") + def _handler_js2py_restyle(self, change): + """ + Process Plotly.restyle message from the frontend + """ + + # Receive message + # --------------- + restyle_msg = change["new"] + + if not restyle_msg: + self._js2py_restyle = None + return + + style_data = restyle_msg["style_data"] + style_traces = restyle_msg["style_traces"] + source_view_id = restyle_msg["source_view_id"] + + # Perform restyle + # --------------- + self.plotly_restyle( + restyle_data=style_data, + trace_indexes=style_traces, + source_view_id=source_view_id, + ) + + self._js2py_restyle = None + + @observe("_js2py_update") + def _handler_js2py_update(self, change): + """ + Process Plotly.update message from the frontend + """ + + # Receive message + # --------------- + update_msg = change["new"] + + if not update_msg: + self._js2py_update = None + return + + style = update_msg["style_data"] + trace_indexes = update_msg["style_traces"] + layout = update_msg["layout_data"] + source_view_id = update_msg["source_view_id"] + + # Perform update + # -------------- + self.plotly_update( + restyle_data=style, + relayout_data=layout, + trace_indexes=trace_indexes, + source_view_id=source_view_id, + ) + + self._js2py_update = None + + @observe("_js2py_relayout") + def _handler_js2py_relayout(self, change): + """ + Process Plotly.relayout message from the frontend + """ + + # Receive message + # --------------- + relayout_msg = change["new"] + + if not relayout_msg: + self._js2py_relayout = None + return + + relayout_data = relayout_msg["relayout_data"] + source_view_id = relayout_msg["source_view_id"] + + if "lastInputTime" in relayout_data: + # Remove 'lastInputTime'. Seems to be an internal plotly + # property that is introduced for some plot types, but it is not + # actually a property in the schema + relayout_data.pop("lastInputTime") + + # Perform relayout + # ---------------- + self.plotly_relayout(relayout_data=relayout_data, source_view_id=source_view_id) + + self._js2py_relayout = None + + @observe("_js2py_pointsCallback") + def _handler_js2py_pointsCallback(self, change): + """ + Process points callback message from the frontend + """ + + # Receive message + # --------------- + callback_data = change["new"] + + if not callback_data: + self._js2py_pointsCallback = None + return + + # Get event type + # -------------- + event_type = callback_data["event_type"] + + # Build Selector Object + # --------------------- + if callback_data.get("selector", None): + selector_data = callback_data["selector"] + selector_type = selector_data["type"] + selector_state = selector_data["selector_state"] + if selector_type == "box": + selector = BoxSelector(**selector_state) + elif selector_type == "lasso": + selector = LassoSelector(**selector_state) + else: + raise ValueError("Unsupported selector type: %s" % selector_type) + else: + selector = None + + # Build Input Device State Object + # ------------------------------- + if callback_data.get("device_state", None): + device_state_data = callback_data["device_state"] + state = InputDeviceState(**device_state_data) + else: + state = None + + # Build Trace Points Dictionary + # ----------------------------- + points_data = callback_data["points"] + trace_points = { + trace_ind: { + "point_inds": [], + "xs": [], + "ys": [], + "trace_name": self._data_objs[trace_ind].name, + "trace_index": trace_ind, + } + for trace_ind in range(len(self._data_objs)) + } + + for x, y, point_ind, trace_ind in zip( + points_data["xs"], + points_data["ys"], + points_data["point_indexes"], + points_data["trace_indexes"], + ): + trace_dict = trace_points[trace_ind] + trace_dict["xs"].append(x) + trace_dict["ys"].append(y) + trace_dict["point_inds"].append(point_ind) + + # Dispatch callbacks + # ------------------ + for trace_ind, trace_points_data in trace_points.items(): + points = Points(**trace_points_data) + trace = self.data[trace_ind] + + if event_type == "plotly_click": + trace._dispatch_on_click(points, state) + elif event_type == "plotly_hover": + trace._dispatch_on_hover(points, state) + elif event_type == "plotly_unhover": + trace._dispatch_on_unhover(points, state) + elif event_type == "plotly_selected": + trace._dispatch_on_selection(points, selector) + elif event_type == "plotly_deselect": + trace._dispatch_on_deselect(points) + + self._js2py_pointsCallback = None + + # Display + # ------- + def _repr_html_(self): + """ + Customize html representation + """ + raise NotImplementedError # Prefer _repr_mimebundle_ + + def _repr_mimebundle_(self, include=None, exclude=None, validate=True, **kwargs): + """ + Return mimebundle corresponding to default renderer. + """ + display_jupyter_version_warnings() + + # Widget layout and data need to be set here in case there are + # changes made to the figure after the widget is created but before + # the cell is run. + self._widget_layout = deepcopy(self._layout_obj._props) + self._widget_data = deepcopy(self._data) + return { + "application/vnd.jupyter.widget-view+json": { + "version_major": 2, + "version_minor": 0, + "model_id": self._model_id, + }, + } + + def _ipython_display_(self): + """ + Handle rich display of figures in ipython contexts + """ + raise NotImplementedError # Prefer _repr_mimebundle_ + + # Callbacks + # --------- + def on_edits_completed(self, fn): + """ + Register a function to be called after all pending trace and layout + edit operations have completed + + If there are no pending edit operations then function is called + immediately + + Parameters + ---------- + fn : callable + Function of zero arguments to be called when all pending edit + operations have completed + """ + if self._layout_edit_in_process or self._trace_edit_in_process: + self._waiting_edit_callbacks.append(fn) + else: + fn() + + # Validate No Frames + # ------------------ + @property + def frames(self): + # Note: This property getter is identical to that of the superclass, + # but it must be included here because we're overriding the setter + # below. + return self._frame_objs + + @frames.setter + def frames(self, new_frames): + if new_frames: + BaseFigureWidget._display_frames_error() + + @staticmethod + def _display_frames_error(): + """ + Display an informative error when user attempts to set frames on a + FigureWidget + + Raises + ------ + ValueError + always + """ + msg = """ +Frames are not supported by the plotly.graph_objs.FigureWidget class. +Note: Frames are supported by the plotly.graph_objs.Figure class""" + raise ValueError(msg) + + # Static Helpers + # -------------- + @staticmethod + def _remove_overlapping_props(input_data, delta_data, prop_path=()): + """ + Remove properties in input_data that are also in delta_data, and do so + recursively. + + Exception: Never remove 'uid' from input_data, this property is used + to align traces + + Parameters + ---------- + input_data : dict|list + delta_data : dict|list + + Returns + ------- + list[tuple[str|int]] + List of removed property path tuples + """ + + # Initialize removed + # ------------------ + # This is the list of path tuples to the properties that were + # removed from input_data + removed = [] + + # Handle dict + # ----------- + if isinstance(input_data, dict): + assert isinstance(delta_data, dict) + + for p, delta_val in delta_data.items(): + if isinstance(delta_val, dict) or BaseFigure._is_dict_list(delta_val): + if p in input_data: + # ### Recurse ### + input_val = input_data[p] + recur_prop_path = prop_path + (p,) + recur_removed = BaseFigureWidget._remove_overlapping_props( + input_val, delta_val, recur_prop_path + ) + removed.extend(recur_removed) + + # Check whether the last property in input_val + # has been removed. If so, remove it entirely + if not input_val: + input_data.pop(p) + removed.append(recur_prop_path) + + elif p in input_data and p != "uid": + # ### Remove property ### + input_data.pop(p) + removed.append(prop_path + (p,)) + + # Handle list + # ----------- + elif isinstance(input_data, list): + assert isinstance(delta_data, list) + + for i, delta_val in enumerate(delta_data): + if i >= len(input_data): + break + + input_val = input_data[i] + if ( + input_val is not None + and isinstance(delta_val, dict) + or BaseFigure._is_dict_list(delta_val) + ): + # ### Recurse ### + recur_prop_path = prop_path + (i,) + recur_removed = BaseFigureWidget._remove_overlapping_props( + input_val, delta_val, recur_prop_path + ) + + removed.extend(recur_removed) + + return removed + + @staticmethod + def _transform_data(to_data, from_data, should_remove=True, relayout_path=()): + """ + Transform to_data into from_data and return relayout-style + description of the transformation + + Parameters + ---------- + to_data : dict|list + from_data : dict|list + + Returns + ------- + dict + relayout-style description of the transformation + """ + + # Initialize relayout data + # ------------------------ + relayout_data = {} + + # Handle dict + # ----------- + if isinstance(to_data, dict): + # ### Validate from_data ### + if not isinstance(from_data, dict): + raise ValueError( + "Mismatched data types: {to_dict} {from_data}".format( + to_dict=to_data, from_data=from_data + ) + ) + + # ### Add/modify properties ### + # Loop over props/vals + for from_prop, from_val in from_data.items(): + # #### Handle compound vals recursively #### + if isinstance(from_val, dict) or BaseFigure._is_dict_list(from_val): + # ##### Init property value if needed ##### + if from_prop not in to_data: + to_data[from_prop] = {} if isinstance(from_val, dict) else [] + + # ##### Transform property val recursively ##### + input_val = to_data[from_prop] + relayout_data.update( + BaseFigureWidget._transform_data( + input_val, + from_val, + should_remove=should_remove, + relayout_path=relayout_path + (from_prop,), + ) + ) + + # #### Handle simple vals directly #### + else: + if from_prop not in to_data or not BasePlotlyType._vals_equal( + to_data[from_prop], from_val + ): + to_data[from_prop] = from_val + relayout_path_prop = relayout_path + (from_prop,) + relayout_data[relayout_path_prop] = from_val + + # ### Remove properties ### + if should_remove: + for remove_prop in set(to_data.keys()).difference( + set(from_data.keys()) + ): + to_data.pop(remove_prop) + + # Handle list + # ----------- + elif isinstance(to_data, list): + # ### Validate from_data ### + if not isinstance(from_data, list): + raise ValueError( + "Mismatched data types: to_data: {to_data} {from_data}".format( + to_data=to_data, from_data=from_data + ) + ) + + # ### Add/modify properties ### + # Loop over indexes / elements + for i, from_val in enumerate(from_data): + # #### Initialize element if needed #### + if i >= len(to_data): + to_data.append(None) + input_val = to_data[i] + + # #### Handle compound element recursively #### + if input_val is not None and ( + isinstance(from_val, dict) or BaseFigure._is_dict_list(from_val) + ): + relayout_data.update( + BaseFigureWidget._transform_data( + input_val, + from_val, + should_remove=should_remove, + relayout_path=relayout_path + (i,), + ) + ) + + # #### Handle simple elements directly #### + else: + if not BasePlotlyType._vals_equal(to_data[i], from_val): + to_data[i] = from_val + relayout_data[relayout_path + (i,)] = from_val + + return relayout_data diff --git a/venv/lib/python3.8/site-packages/plotly/callbacks.py b/venv/lib/python3.8/site-packages/plotly/callbacks.py new file mode 100644 index 0000000..4e2f9e9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/callbacks.py @@ -0,0 +1,294 @@ +from plotly.utils import _list_repr_elided + + +class InputDeviceState: + def __init__( + self, ctrl=None, alt=None, shift=None, meta=None, button=None, buttons=None, **_ + ): + self._ctrl = ctrl + self._alt = alt + self._meta = meta + self._shift = shift + self._button = button + self._buttons = buttons + + def __repr__(self): + return """\ +InputDeviceState( + ctrl={ctrl}, + alt={alt}, + shift={shift}, + meta={meta}, + button={button}, + buttons={buttons})""".format( + ctrl=repr(self.ctrl), + alt=repr(self.alt), + meta=repr(self.meta), + shift=repr(self.shift), + button=repr(self.button), + buttons=repr(self.buttons), + ) + + @property + def alt(self): + """ + Whether alt key pressed + + Returns + ------- + bool + """ + return self._alt + + @property + def ctrl(self): + """ + Whether ctrl key pressed + + Returns + ------- + bool + """ + return self._ctrl + + @property + def shift(self): + """ + Whether shift key pressed + + Returns + ------- + bool + """ + return self._shift + + @property + def meta(self): + """ + Whether meta key pressed + + Returns + ------- + bool + """ + return self._meta + + @property + def button(self): + """ + Integer code for the button that was pressed on the mouse to trigger + the event + + - 0: Main button pressed, usually the left button or the + un-initialized state + - 1: Auxiliary button pressed, usually the wheel button or the middle + button (if present) + - 2: Secondary button pressed, usually the right button + - 3: Fourth button, typically the Browser Back button + - 4: Fifth button, typically the Browser Forward button + + Returns + ------- + int + """ + return self._button + + @property + def buttons(self): + """ + Integer code for which combination of buttons are pressed on the + mouse when the event is triggered. + + - 0: No button or un-initialized + - 1: Primary button (usually left) + - 2: Secondary button (usually right) + - 4: Auxilary button (usually middle or mouse wheel button) + - 8: 4th button (typically the "Browser Back" button) + - 16: 5th button (typically the "Browser Forward" button) + + Combinations of buttons are represented as the decimal form of the + bitmask of the values above. + + For example, pressing both the primary (1) and auxilary (4) buttons + will result in a code of 5 + + Returns + ------- + int + """ + return self._buttons + + +class Points: + def __init__(self, point_inds=[], xs=[], ys=[], trace_name=None, trace_index=None): + self._point_inds = point_inds + self._xs = xs + self._ys = ys + self._trace_name = trace_name + self._trace_index = trace_index + + def __repr__(self): + return """\ +Points(point_inds={point_inds}, + xs={xs}, + ys={ys}, + trace_name={trace_name}, + trace_index={trace_index})""".format( + point_inds=_list_repr_elided( + self.point_inds, indent=len("Points(point_inds=") + ), + xs=_list_repr_elided(self.xs, indent=len(" xs=")), + ys=_list_repr_elided(self.ys, indent=len(" ys=")), + trace_name=repr(self.trace_name), + trace_index=repr(self.trace_index), + ) + + @property + def point_inds(self): + """ + List of selected indexes into the trace's points + + Returns + ------- + list[int] + """ + return self._point_inds + + @property + def xs(self): + """ + List of x-coordinates of selected points + + Returns + ------- + list[float] + """ + return self._xs + + @property + def ys(self): + """ + List of y-coordinates of selected points + + Returns + ------- + list[float] + """ + return self._ys + + @property + def trace_name(self): + """ + Name of the trace + + Returns + ------- + str + """ + return self._trace_name + + @property + def trace_index(self): + """ + Index of the trace in the figure + + Returns + ------- + int + """ + return self._trace_index + + +class BoxSelector: + def __init__(self, xrange=None, yrange=None, **_): + self._type = "box" + self._xrange = xrange + self._yrange = yrange + + def __repr__(self): + return """\ +BoxSelector(xrange={xrange}, + yrange={yrange})""".format(xrange=self.xrange, yrange=self.yrange) + + @property + def type(self): + """ + The selector's type + + Returns + ------- + str + """ + return self._type + + @property + def xrange(self): + """ + x-axis range extents of the box selection + + Returns + ------- + (float, float) + """ + return self._xrange + + @property + def yrange(self): + """ + y-axis range extents of the box selection + + Returns + ------- + (float, float) + """ + return self._yrange + + +class LassoSelector: + def __init__(self, xs=None, ys=None, **_): + self._type = "lasso" + self._xs = xs + self._ys = ys + + def __repr__(self): + return """\ +LassoSelector(xs={xs}, + ys={ys})""".format( + xs=_list_repr_elided(self.xs, indent=len("LassoSelector(xs=")), + ys=_list_repr_elided(self.ys, indent=len(" ys=")), + ) + + @property + def type(self): + """ + The selector's type + + Returns + ------- + str + """ + return self._type + + @property + def xs(self): + """ + list of x-axis coordinates of each point in the lasso selection + boundary + + Returns + ------- + list[float] + """ + return self._xs + + @property + def ys(self): + """ + list of y-axis coordinates of each point in the lasso selection + boundary + + Returns + ------- + list[float] + """ + return self._ys diff --git a/venv/lib/python3.8/site-packages/plotly/colors/__init__.py b/venv/lib/python3.8/site-packages/plotly/colors/__init__.py new file mode 100644 index 0000000..3a58bfe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/colors/__init__.py @@ -0,0 +1,51 @@ +# ruff: noqa: F405 + +"""For a list of colors available in `plotly.colors`, please see + +* the `tutorial on discrete color sequences `_ +* the `list of built-in continuous color scales `_ +* the `tutorial on continuous colors `_ + +Color scales and sequences are available within the following namespaces + +* cyclical +* diverging +* qualitative +* sequential +""" + +from _plotly_utils.colors import * # noqa: F403 + +__all__ = [ + "named_colorscales", + "cyclical", + "diverging", + "sequential", + "qualitative", + "colorbrewer", + "carto", + "cmocean", + "color_parser", + "colorscale_to_colors", + "colorscale_to_scale", + "convert_colors_to_same_type", + "convert_colorscale_to_rgb", + "convert_dict_colors_to_same_type", + "convert_to_RGB_255", + "find_intermediate_color", + "hex_to_rgb", + "label_rgb", + "make_colorscale", + "n_colors", + "sample_colorscale", + "unconvert_from_RGB_255", + "unlabel_rgb", + "validate_colors", + "validate_colors_dict", + "validate_colorscale", + "validate_scale_values", + "plotlyjs", + "DEFAULT_PLOTLY_COLORS", + "PLOTLY_SCALES", + "get_colorscale", +] diff --git a/venv/lib/python3.8/site-packages/plotly/conftest.py b/venv/lib/python3.8/site-packages/plotly/conftest.py new file mode 100644 index 0000000..1e1361d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/conftest.py @@ -0,0 +1,24 @@ +import os + + +def pytest_ignore_collect(path): + # Ignored files, most of them are raising a chart studio error + ignored_paths = [ + "exploding_module.py", + "chunked_requests.py", + "v2.py", + "v1.py", + "presentation_objs.py", + "widgets.py", + "dashboard_objs.py", + "grid_objs.py", + "config.py", + "presentation_objs.py", + "session.py", + ] + if ( + os.path.basename(str(path)) in ignored_paths + or "plotly/plotly/plotly/__init__.py" in str(path) + or "plotly/api/utils.py" in str(path) + ): + return True diff --git a/venv/lib/python3.8/site-packages/plotly/data/__init__.py b/venv/lib/python3.8/site-packages/plotly/data/__init__.py new file mode 100644 index 0000000..3bba389 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/data/__init__.py @@ -0,0 +1,430 @@ +""" +Built-in datasets for demonstration, educational and test purposes. +""" + +import os +from importlib import import_module + +import narwhals.stable.v1 as nw + +AVAILABLE_BACKENDS = {"pandas", "polars", "pyarrow", "modin", "cudf"} +BACKENDS_WITH_INDEX_SUPPORT = {"pandas", "modin", "cudf"} + + +def gapminder( + datetimes=False, + centroids=False, + year=None, + pretty_names=False, + return_type="pandas", +): + """ + Each row represents a country on a given year. + + https://www.gapminder.org/data/ + + Parameters + ---------- + datetimes: bool + Whether or not 'year' column will converted to datetime type + + centroids: bool + If True, ['centroid_lat', 'centroid_lon'] columns are added + + year: int | None + If provided, the dataset will be filtered for that year + + pretty_names: bool + If True, prettifies the column names + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 1704 rows and the following columns: + `['country', 'continent', 'year', 'lifeExp', 'pop', 'gdpPercap', + 'iso_alpha', 'iso_num']`. + + If `datetimes` is True, the 'year' column will be a datetime column + If `centroids` is True, two new columns are added: ['centroid_lat', 'centroid_lon'] + If `year` is an integer, the dataset will be filtered for that year + """ + df = nw.from_native( + _get_dataset("gapminder", return_type=return_type), eager_only=True + ) + if year: + df = df.filter(nw.col("year") == year) + if datetimes: + df = df.with_columns( + # Concatenate the year value with the literal "-01-01" so that it can be + # casted to datetime from "%Y-%m-%d" format + nw.concat_str( + [nw.col("year").cast(nw.String()), nw.lit("-01-01")] + ).str.to_datetime(format="%Y-%m-%d") + ) + if not centroids: + df = df.drop("centroid_lat", "centroid_lon") + if pretty_names: + df = df.rename( + dict( + country="Country", + continent="Continent", + year="Year", + lifeExp="Life Expectancy", + gdpPercap="GDP per Capita", + pop="Population", + iso_alpha="ISO Alpha Country Code", + iso_num="ISO Numeric Country Code", + centroid_lat="Centroid Latitude", + centroid_lon="Centroid Longitude", + ) + ) + return df.to_native() + + +def tips(pretty_names=False, return_type="pandas"): + """ + Each row represents a restaurant bill. + + https://vincentarelbundock.github.io/Rdatasets/doc/reshape2/tips.html + + Parameters + ---------- + pretty_names: bool + If True, prettifies the column names + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 244 rows and the following columns: + `['total_bill', 'tip', 'sex', 'smoker', 'day', 'time', 'size']`. + """ + + df = nw.from_native(_get_dataset("tips", return_type=return_type), eager_only=True) + if pretty_names: + df = df.rename( + dict( + total_bill="Total Bill", + tip="Tip", + sex="Payer Gender", + smoker="Smokers at Table", + day="Day of Week", + time="Meal", + size="Party Size", + ) + ) + return df.to_native() + + +def iris(return_type="pandas"): + """ + Each row represents a flower. + + https://en.wikipedia.org/wiki/Iris_flower_data_set + + Parameters + ---------- + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 150 rows and the following columns: + `['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'species', 'species_id']`. + """ + return _get_dataset("iris", return_type=return_type) + + +def wind(return_type="pandas"): + """ + Each row represents a level of wind intensity in a cardinal direction, and its frequency. + + Parameters + ---------- + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 128 rows and the following columns: + `['direction', 'strength', 'frequency']`. + """ + return _get_dataset("wind", return_type=return_type) + + +def election(return_type="pandas"): + """ + Each row represents voting results for an electoral district in the 2013 Montreal + mayoral election. + + Parameters + ---------- + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 58 rows and the following columns: + `['district', 'Coderre', 'Bergeron', 'Joly', 'total', 'winner', 'result', 'district_id']`. + """ + return _get_dataset("election", return_type=return_type) + + +def election_geojson(): + """ + Each feature represents an electoral district in the 2013 Montreal mayoral election. + + Returns + ------- + A GeoJSON-formatted `dict` with 58 polygon or multi-polygon features whose `id` + is an electoral district numerical ID and whose `district` property is the ID and + district name. + """ + import gzip + import json + import os + + path = os.path.join( + os.path.dirname(os.path.dirname(__file__)), + "package_data", + "datasets", + "election.geojson.gz", + ) + with gzip.GzipFile(path, "r") as f: + result = json.loads(f.read().decode("utf-8")) + return result + + +def carshare(return_type="pandas"): + """ + Each row represents the availability of car-sharing services near the centroid of a zone + in Montreal over a month-long period. + + Parameters + ---------- + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe` with 249 rows and the following columns: + `['centroid_lat', 'centroid_lon', 'car_hours', 'peak_hour']`. + """ + return _get_dataset("carshare", return_type=return_type) + + +def stocks(indexed=False, datetimes=False, return_type="pandas"): + """ + Each row in this wide dataset represents closing prices from 6 tech stocks in 2018/2019. + + Parameters + ---------- + indexed: bool + Whether or not the 'date' column is used as the index and the column index + is named 'company'. Applicable only if `return_type='pandas'` + + datetimes: bool + Whether or not the 'date' column will be of datetime type + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 100 rows and the following columns: + `['date', 'GOOG', 'AAPL', 'AMZN', 'FB', 'NFLX', 'MSFT']`. + If `indexed` is True, the 'date' column is used as the index and the column index + is named 'company' + If `datetimes` is True, the 'date' column will be a datetime column + """ + if indexed and return_type not in BACKENDS_WITH_INDEX_SUPPORT: + msg = f"Backend '{return_type}' does not support setting index" + raise NotImplementedError(msg) + + df = nw.from_native( + _get_dataset("stocks", return_type=return_type), eager_only=True + ).with_columns(nw.col("date").cast(nw.String())) + + if datetimes: + df = df.with_columns(nw.col("date").str.to_datetime()) + + if indexed: # then it must be pandas + df = df.to_native().set_index("date") + df.columns.name = "company" + return df + + return df.to_native() + + +def experiment(indexed=False, return_type="pandas"): + """ + Each row in this wide dataset represents the results of 100 simulated participants + on three hypothetical experiments, along with their gender and control/treatment group. + + Parameters + ---------- + indexed: bool + If True, then the index is named "participant". + Applicable only if `return_type='pandas'` + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 100 rows and the following columns: + `['experiment_1', 'experiment_2', 'experiment_3', 'gender', 'group']`. + If `indexed` is True, the data frame index is named "participant" + """ + + if indexed and return_type not in BACKENDS_WITH_INDEX_SUPPORT: + msg = f"Backend '{return_type}' does not support setting index" + raise NotImplementedError(msg) + + df = nw.from_native( + _get_dataset("experiment", return_type=return_type), eager_only=True + ) + if indexed: # then it must be pandas + df = df.to_native() + df.index.name = "participant" + return df + return df.to_native() + + +def medals_wide(indexed=False, return_type="pandas"): + """ + This dataset represents the medal table for Olympic Short Track Speed Skating for the + top three nations as of 2020. + + Parameters + ---------- + indexed: bool + Whether or not the 'nation' column is used as the index and the column index + is named 'medal'. Applicable only if `return_type='pandas'` + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 3 rows and the following columns: + `['nation', 'gold', 'silver', 'bronze']`. + If `indexed` is True, the 'nation' column is used as the index and the column index + is named 'medal' + """ + + if indexed and return_type not in BACKENDS_WITH_INDEX_SUPPORT: + msg = f"Backend '{return_type}' does not support setting index" + raise NotImplementedError(msg) + + df = nw.from_native( + _get_dataset("medals", return_type=return_type), eager_only=True + ) + if indexed: # then it must be pandas + df = df.to_native().set_index("nation") + df.columns.name = "medal" + return df + return df.to_native() + + +def medals_long(indexed=False, return_type="pandas"): + """ + This dataset represents the medal table for Olympic Short Track Speed Skating for the + top three nations as of 2020. + + Parameters + ---------- + indexed: bool + Whether or not the 'nation' column is used as the index. + Applicable only if `return_type='pandas'` + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + Dataframe with 9 rows and the following columns: `['nation', 'medal', 'count']`. + If `indexed` is True, the 'nation' column is used as the index. + """ + + if indexed and return_type not in BACKENDS_WITH_INDEX_SUPPORT: + msg = f"Backend '{return_type}' does not support setting index" + raise NotImplementedError(msg) + + df = nw.from_native( + _get_dataset("medals", return_type=return_type), eager_only=True + ).unpivot( + index=["nation"], + value_name="count", + variable_name="medal", + ) + if indexed: + df = nw.maybe_set_index(df, "nation") + return df.to_native() + + +def _get_dataset(d, return_type): + """ + Loads the dataset using the specified backend. + + Notice that the available backends are 'pandas', 'polars', 'pyarrow' and they all have + a `read_csv` function (pyarrow has it via pyarrow.csv). Therefore we can dynamically + load the library using `importlib.import_module` and then call + `backend.read_csv(filepath)`. + + Parameters + ---------- + d: str + Name of the dataset to load. + + return_type: {'pandas', 'polars', 'pyarrow', 'modin', 'cudf'} + Type of the resulting dataframe + + Returns + ------- + Dataframe of `return_type` type + """ + filepath = os.path.join( + os.path.dirname(os.path.dirname(__file__)), + "package_data", + "datasets", + d + ".csv.gz", + ) + + if return_type not in AVAILABLE_BACKENDS: + msg = ( + f"Unsupported return_type. Found {return_type}, expected one " + f"of {AVAILABLE_BACKENDS}" + ) + raise NotImplementedError(msg) + + try: + if return_type == "pyarrow": + module_to_load = "pyarrow.csv" + elif return_type == "modin": + module_to_load = "modin.pandas" + else: + module_to_load = return_type + backend = import_module(module_to_load) + except ModuleNotFoundError: + msg = f"return_type={return_type}, but {return_type} is not installed" + raise ModuleNotFoundError(msg) + + try: + return backend.read_csv(filepath) + except Exception as e: + msg = f"Unable to read '{d}' dataset due to: {e}" + raise Exception(msg).with_traceback(e.__traceback__) diff --git a/venv/lib/python3.8/site-packages/plotly/exceptions.py b/venv/lib/python3.8/site-packages/plotly/exceptions.py new file mode 100644 index 0000000..6faa7d9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/exceptions.py @@ -0,0 +1 @@ +from _plotly_utils.exceptions import PlotlyError # noqa: F401 diff --git a/venv/lib/python3.8/site-packages/plotly/express/__init__.py b/venv/lib/python3.8/site-packages/plotly/express/__init__.py new file mode 100644 index 0000000..62a9bca --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/__init__.py @@ -0,0 +1,132 @@ +# ruff: noqa: E402 + +""" +`plotly.express` is a terse, consistent, high-level wrapper around `plotly.graph_objects` +for rapid data exploration and figure generation. Learn more at https://plotly.com/python/plotly-express/ +""" + +from plotly import optional_imports + +np = optional_imports.get_module("numpy") +if np is None: + raise ImportError( + """\ +Plotly Express requires numpy to be installed. You can install numpy using pip with: + +$ pip install numpy + +Or install Plotly Express and its dependencies directly with: + +$ pip install "plotly[express]" + +You can also use Plotly Graph Objects to create a large number of charts without installing +numpy. See examples here: https://plotly.com/python/graph-objects/ +""" + ) + +from ._imshow import imshow +from ._chart_types import ( # noqa: F401 + scatter, + scatter_3d, + scatter_polar, + scatter_ternary, + scatter_map, + scatter_mapbox, + scatter_geo, + line, + line_3d, + line_polar, + line_ternary, + line_map, + line_mapbox, + line_geo, + area, + bar, + timeline, + bar_polar, + violin, + box, + strip, + histogram, + ecdf, + scatter_matrix, + parallel_coordinates, + parallel_categories, + choropleth, + density_contour, + density_heatmap, + pie, + sunburst, + treemap, + icicle, + funnel, + funnel_area, + choropleth_map, + choropleth_mapbox, + density_map, + density_mapbox, +) + + +from ._core import ( # noqa: F401 + set_mapbox_access_token, + defaults, + get_trendline_results, + NO_COLOR, +) + +from ._special_inputs import IdentityMap, Constant, Range # noqa: F401 + +from . import data, colors, trendline_functions # noqa: F401 + +__all__ = [ + "scatter", + "scatter_3d", + "scatter_polar", + "scatter_ternary", + "scatter_map", + "scatter_mapbox", + "scatter_geo", + "scatter_matrix", + "density_contour", + "density_heatmap", + "density_map", + "density_mapbox", + "line", + "line_3d", + "line_polar", + "line_ternary", + "line_map", + "line_mapbox", + "line_geo", + "parallel_coordinates", + "parallel_categories", + "area", + "bar", + "timeline", + "bar_polar", + "violin", + "box", + "strip", + "histogram", + "ecdf", + "choropleth", + "choropleth_map", + "choropleth_mapbox", + "pie", + "sunburst", + "treemap", + "icicle", + "funnel", + "funnel_area", + "imshow", + "data", + "colors", + "trendline_functions", + "set_mapbox_access_token", + "get_trendline_results", + "IdentityMap", + "Constant", + "Range", + "NO_COLOR", +] diff --git a/venv/lib/python3.8/site-packages/plotly/express/_chart_types.py b/venv/lib/python3.8/site-packages/plotly/express/_chart_types.py new file mode 100644 index 0000000..9ec2b4a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/_chart_types.py @@ -0,0 +1,1950 @@ +from warnings import warn + +from ._core import make_figure +from ._doc import make_docstring +import plotly.graph_objs as go + +_wide_mode_xy_append = [ + "Either `x` or `y` can optionally be a list of column references or array_likes, ", + "in which case the data will be treated as if it were 'wide' rather than 'long'.", +] +_cartesian_append_dict = dict(x=_wide_mode_xy_append, y=_wide_mode_xy_append) + + +def scatter( + data_frame=None, + x=None, + y=None, + color=None, + symbol=None, + size=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + error_x=None, + error_x_minus=None, + error_y=None, + error_y_minus=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + orientation=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + symbol_sequence=None, + symbol_map=None, + opacity=None, + size_max=None, + marginal_x=None, + marginal_y=None, + trendline=None, + trendline_options=None, + trendline_color_override=None, + trendline_scope="trace", + log_x=False, + log_y=False, + range_x=None, + range_y=None, + render_mode="auto", + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a scatter plot, each row of `data_frame` is represented by a symbol + mark in 2D space. + """ + return make_figure(args=locals(), constructor=go.Scatter) + + +scatter.__doc__ = make_docstring(scatter, append_dict=_cartesian_append_dict) + + +def density_contour( + data_frame=None, + x=None, + y=None, + z=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + orientation=None, + color_discrete_sequence=None, + color_discrete_map=None, + marginal_x=None, + marginal_y=None, + trendline=None, + trendline_options=None, + trendline_color_override=None, + trendline_scope="trace", + log_x=False, + log_y=False, + range_x=None, + range_y=None, + histfunc=None, + histnorm=None, + nbinsx=None, + nbinsy=None, + text_auto=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a density contour plot, rows of `data_frame` are grouped together + into contour marks to visualize the 2D distribution of an aggregate + function `histfunc` (e.g. the count or sum) of the value `z`. + """ + return make_figure( + args=locals(), + constructor=go.Histogram2dContour, + trace_patch=dict( + contours=dict(coloring="none"), + histfunc=histfunc, + histnorm=histnorm, + nbinsx=nbinsx, + nbinsy=nbinsy, + xbingroup="x", + ybingroup="y", + ), + ) + + +density_contour.__doc__ = make_docstring( + density_contour, + append_dict=dict( + x=_wide_mode_xy_append, + y=_wide_mode_xy_append, + z=[ + "For `density_heatmap` and `density_contour` these values are used as the inputs to `histfunc`.", + ], + histfunc=["The arguments to this function are the values of `z`."], + ), +) + + +def density_heatmap( + data_frame=None, + x=None, + y=None, + z=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + orientation=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + marginal_x=None, + marginal_y=None, + opacity=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + histfunc=None, + histnorm=None, + nbinsx=None, + nbinsy=None, + text_auto=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a density heatmap, rows of `data_frame` are grouped together into + colored rectangular tiles to visualize the 2D distribution of an + aggregate function `histfunc` (e.g. the count or sum) of the value `z`. + """ + return make_figure( + args=locals(), + constructor=go.Histogram2d, + trace_patch=dict( + histfunc=histfunc, + histnorm=histnorm, + nbinsx=nbinsx, + nbinsy=nbinsy, + xbingroup="x", + ybingroup="y", + ), + ) + + +density_heatmap.__doc__ = make_docstring( + density_heatmap, + append_dict=dict( + x=_wide_mode_xy_append, + y=_wide_mode_xy_append, + z=[ + "For `density_heatmap` and `density_contour` these values are used as the inputs to `histfunc`.", + ], + histfunc=[ + "The arguments to this function are the values of `z`.", + ], + ), +) + + +def line( + data_frame=None, + x=None, + y=None, + line_group=None, + color=None, + line_dash=None, + symbol=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + error_x=None, + error_x_minus=None, + error_y=None, + error_y_minus=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + orientation=None, + color_discrete_sequence=None, + color_discrete_map=None, + line_dash_sequence=None, + line_dash_map=None, + symbol_sequence=None, + symbol_map=None, + markers=False, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + line_shape=None, + render_mode="auto", + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a 2D line plot, each row of `data_frame` is represented as a vertex of + a polyline mark in 2D space. + """ + return make_figure(args=locals(), constructor=go.Scatter) + + +line.__doc__ = make_docstring(line, append_dict=_cartesian_append_dict) + + +def area( + data_frame=None, + x=None, + y=None, + line_group=None, + color=None, + pattern_shape=None, + symbol=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + pattern_shape_sequence=None, + pattern_shape_map=None, + symbol_sequence=None, + symbol_map=None, + markers=False, + orientation=None, + groupnorm=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + line_shape=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a stacked area plot, each row of `data_frame` is represented as + a vertex of a polyline mark in 2D space. The area between + successive polylines is filled. + """ + return make_figure( + args=locals(), + constructor=go.Scatter, + trace_patch=dict(stackgroup=1, mode="lines", groupnorm=groupnorm), + ) + + +area.__doc__ = make_docstring(area, append_dict=_cartesian_append_dict) + + +def bar( + data_frame=None, + x=None, + y=None, + color=None, + pattern_shape=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + base=None, + error_x=None, + error_x_minus=None, + error_y=None, + error_y_minus=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + pattern_shape_sequence=None, + pattern_shape_map=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + orientation=None, + barmode="relative", + log_x=False, + log_y=False, + range_x=None, + range_y=None, + text_auto=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a bar plot, each row of `data_frame` is represented as a rectangular + mark. + """ + return make_figure( + args=locals(), + constructor=go.Bar, + trace_patch=dict(textposition="auto"), + layout_patch=dict(barmode=barmode), + ) + + +bar.__doc__ = make_docstring(bar, append_dict=_cartesian_append_dict) + + +def timeline( + data_frame=None, + x_start=None, + x_end=None, + y=None, + color=None, + pattern_shape=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + pattern_shape_sequence=None, + pattern_shape_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + range_x=None, + range_y=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a timeline plot, each row of `data_frame` is represented as a rectangular + mark on an x axis of type `date`, spanning from `x_start` to `x_end`. + """ + return make_figure( + args=locals(), + constructor="timeline", + trace_patch=dict(textposition="auto", orientation="h"), + layout_patch=dict(barmode="overlay"), + ) + + +timeline.__doc__ = make_docstring(timeline) + + +def histogram( + data_frame=None, + x=None, + y=None, + color=None, + pattern_shape=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + pattern_shape_sequence=None, + pattern_shape_map=None, + marginal=None, + opacity=None, + orientation=None, + barmode="relative", + barnorm=None, + histnorm=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + histfunc=None, + cumulative=None, + nbins=None, + text_auto=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a histogram, rows of `data_frame` are grouped together into a + rectangular mark to visualize the 1D distribution of an aggregate + function `histfunc` (e.g. the count or sum) of the value `y` (or `x` if + `orientation` is `'h'`). + """ + return make_figure( + args=locals(), + constructor=go.Histogram, + trace_patch=dict( + histnorm=histnorm, + histfunc=histfunc, + cumulative=dict(enabled=cumulative), + ), + layout_patch=dict(barmode=barmode, barnorm=barnorm), + ) + + +histogram.__doc__ = make_docstring( + histogram, + append_dict=dict( + x=["If `orientation` is `'h'`, these values are used as inputs to `histfunc`."] + + _wide_mode_xy_append, + y=["If `orientation` is `'v'`, these values are used as inputs to `histfunc`."] + + _wide_mode_xy_append, + histfunc=[ + "The arguments to this function are the values of `y` (`x`) if `orientation` is `'v'` (`'h'`).", + ], + ), +) + + +def ecdf( + data_frame=None, + x=None, + y=None, + color=None, + text=None, + line_dash=None, + symbol=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + animation_frame=None, + animation_group=None, + markers=False, + lines=True, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + line_dash_sequence=None, + line_dash_map=None, + symbol_sequence=None, + symbol_map=None, + marginal=None, + opacity=None, + orientation=None, + ecdfnorm="probability", + ecdfmode="standard", + render_mode="auto", + log_x=False, + log_y=False, + range_x=None, + range_y=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a Empirical Cumulative Distribution Function (ECDF) plot, rows of `data_frame` + are sorted by the value `x` (or `y` if `orientation` is `'h'`) and their cumulative + count (or the cumulative sum of `y` if supplied and `orientation` is `h`) is drawn + as a line. + """ + return make_figure(args=locals(), constructor=go.Scatter) + + +ecdf.__doc__ = make_docstring( + ecdf, + append_dict=dict( + x=[ + "If `orientation` is `'h'`, the cumulative sum of this argument is plotted rather than the cumulative count." + ] + + _wide_mode_xy_append, + y=[ + "If `orientation` is `'v'`, the cumulative sum of this argument is plotted rather than the cumulative count." + ] + + _wide_mode_xy_append, + ), +) + + +def violin( + data_frame=None, + x=None, + y=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + orientation=None, + violinmode=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + points=None, + box=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a violin plot, rows of `data_frame` are grouped together into a + curved mark to visualize their distribution. + """ + return make_figure( + args=locals(), + constructor=go.Violin, + trace_patch=dict( + points=points, + box=dict(visible=box), + scalegroup=True, + x0=" ", + y0=" ", + ), + layout_patch=dict(violinmode=violinmode), + ) + + +violin.__doc__ = make_docstring(violin, append_dict=_cartesian_append_dict) + + +def box( + data_frame=None, + x=None, + y=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + orientation=None, + boxmode=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + points=None, + notched=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a box plot, rows of `data_frame` are grouped together into a + box-and-whisker mark to visualize their distribution. + + Each box spans from quartile 1 (Q1) to quartile 3 (Q3). The second + quartile (Q2) is marked by a line inside the box. By default, the + whiskers correspond to the box' edges +/- 1.5 times the interquartile + range (IQR: Q3-Q1), see "points" for other options. + """ + return make_figure( + args=locals(), + constructor=go.Box, + trace_patch=dict(boxpoints=points, notched=notched, x0=" ", y0=" "), + layout_patch=dict(boxmode=boxmode), + ) + + +box.__doc__ = make_docstring(box, append_dict=_cartesian_append_dict) + + +def strip( + data_frame=None, + x=None, + y=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + orientation=None, + stripmode=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a strip plot each row of `data_frame` is represented as a jittered + mark within categories. + """ + return make_figure( + args=locals(), + constructor=go.Box, + trace_patch=dict( + boxpoints="all", + pointpos=0, + hoveron="points", + fillcolor="rgba(255,255,255,0)", + line={"color": "rgba(255,255,255,0)"}, + x0=" ", + y0=" ", + ), + layout_patch=dict(boxmode=stripmode), + ) + + +strip.__doc__ = make_docstring(strip, append_dict=_cartesian_append_dict) + + +def scatter_3d( + data_frame=None, + x=None, + y=None, + z=None, + color=None, + symbol=None, + size=None, + text=None, + hover_name=None, + hover_data=None, + custom_data=None, + error_x=None, + error_x_minus=None, + error_y=None, + error_y_minus=None, + error_z=None, + error_z_minus=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + size_max=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + symbol_sequence=None, + symbol_map=None, + opacity=None, + log_x=False, + log_y=False, + log_z=False, + range_x=None, + range_y=None, + range_z=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a 3D scatter plot, each row of `data_frame` is represented by a + symbol mark in 3D space. + """ + return make_figure(args=locals(), constructor=go.Scatter3d) + + +scatter_3d.__doc__ = make_docstring(scatter_3d) + + +def line_3d( + data_frame=None, + x=None, + y=None, + z=None, + color=None, + line_dash=None, + text=None, + line_group=None, + symbol=None, + hover_name=None, + hover_data=None, + custom_data=None, + error_x=None, + error_x_minus=None, + error_y=None, + error_y_minus=None, + error_z=None, + error_z_minus=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + line_dash_sequence=None, + line_dash_map=None, + symbol_sequence=None, + symbol_map=None, + markers=False, + log_x=False, + log_y=False, + log_z=False, + range_x=None, + range_y=None, + range_z=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a 3D line plot, each row of `data_frame` is represented as a vertex of + a polyline mark in 3D space. + """ + return make_figure(args=locals(), constructor=go.Scatter3d) + + +line_3d.__doc__ = make_docstring(line_3d) + + +def scatter_ternary( + data_frame=None, + a=None, + b=None, + c=None, + color=None, + symbol=None, + size=None, + text=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + symbol_sequence=None, + symbol_map=None, + opacity=None, + size_max=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a ternary scatter plot, each row of `data_frame` is represented by a + symbol mark in ternary coordinates. + """ + return make_figure(args=locals(), constructor=go.Scatterternary) + + +scatter_ternary.__doc__ = make_docstring(scatter_ternary) + + +def line_ternary( + data_frame=None, + a=None, + b=None, + c=None, + color=None, + line_dash=None, + line_group=None, + symbol=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + line_dash_sequence=None, + line_dash_map=None, + symbol_sequence=None, + symbol_map=None, + markers=False, + line_shape=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a ternary line plot, each row of `data_frame` is represented as + a vertex of a polyline mark in ternary coordinates. + """ + return make_figure(args=locals(), constructor=go.Scatterternary) + + +line_ternary.__doc__ = make_docstring(line_ternary) + + +def scatter_polar( + data_frame=None, + r=None, + theta=None, + color=None, + symbol=None, + size=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + symbol_sequence=None, + symbol_map=None, + opacity=None, + direction="clockwise", + start_angle=90, + size_max=None, + range_r=None, + range_theta=None, + log_r=False, + render_mode="auto", + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a polar scatter plot, each row of `data_frame` is represented by a + symbol mark in polar coordinates. + """ + return make_figure(args=locals(), constructor=go.Scatterpolar) + + +scatter_polar.__doc__ = make_docstring(scatter_polar) + + +def line_polar( + data_frame=None, + r=None, + theta=None, + color=None, + line_dash=None, + hover_name=None, + hover_data=None, + custom_data=None, + line_group=None, + text=None, + symbol=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + line_dash_sequence=None, + line_dash_map=None, + symbol_sequence=None, + symbol_map=None, + markers=False, + direction="clockwise", + start_angle=90, + line_close=False, + line_shape=None, + render_mode="auto", + range_r=None, + range_theta=None, + log_r=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a polar line plot, each row of `data_frame` is represented as a + vertex of a polyline mark in polar coordinates. + """ + return make_figure(args=locals(), constructor=go.Scatterpolar) + + +line_polar.__doc__ = make_docstring(line_polar) + + +def bar_polar( + data_frame=None, + r=None, + theta=None, + color=None, + pattern_shape=None, + hover_name=None, + hover_data=None, + custom_data=None, + base=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + pattern_shape_sequence=None, + pattern_shape_map=None, + range_color=None, + color_continuous_midpoint=None, + barnorm=None, + barmode="relative", + direction="clockwise", + start_angle=90, + range_r=None, + range_theta=None, + log_r=False, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a polar bar plot, each row of `data_frame` is represented as a wedge + mark in polar coordinates. + """ + return make_figure( + args=locals(), + constructor=go.Barpolar, + layout_patch=dict(barnorm=barnorm, barmode=barmode), + ) + + +bar_polar.__doc__ = make_docstring(bar_polar) + + +def choropleth( + data_frame=None, + lat=None, + lon=None, + locations=None, + locationmode=None, + geojson=None, + featureidkey=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + projection=None, + scope=None, + center=None, + fitbounds=None, + basemap_visible=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a choropleth map, each row of `data_frame` is represented by a + colored region mark on a map. + """ + return make_figure( + args=locals(), + constructor=go.Choropleth, + trace_patch=dict(locationmode=locationmode), + ) + + +choropleth.__doc__ = make_docstring(choropleth) + + +def scatter_geo( + data_frame=None, + lat=None, + lon=None, + locations=None, + locationmode=None, + geojson=None, + featureidkey=None, + color=None, + text=None, + symbol=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + size=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + symbol_sequence=None, + symbol_map=None, + opacity=None, + size_max=None, + projection=None, + scope=None, + center=None, + fitbounds=None, + basemap_visible=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a geographic scatter plot, each row of `data_frame` is represented + by a symbol mark on a map. + """ + return make_figure( + args=locals(), + constructor=go.Scattergeo, + trace_patch=dict(locationmode=locationmode), + ) + + +scatter_geo.__doc__ = make_docstring(scatter_geo) + + +def line_geo( + data_frame=None, + lat=None, + lon=None, + locations=None, + locationmode=None, + geojson=None, + featureidkey=None, + color=None, + line_dash=None, + text=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + line_group=None, + symbol=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + line_dash_sequence=None, + line_dash_map=None, + symbol_sequence=None, + symbol_map=None, + markers=False, + projection=None, + scope=None, + center=None, + fitbounds=None, + basemap_visible=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a geographic line plot, each row of `data_frame` is represented as + a vertex of a polyline mark on a map. + """ + return make_figure( + args=locals(), + constructor=go.Scattergeo, + trace_patch=dict(locationmode=locationmode), + ) + + +line_geo.__doc__ = make_docstring(line_geo) + + +def scatter_map( + data_frame=None, + lat=None, + lon=None, + color=None, + text=None, + hover_name=None, + hover_data=None, + custom_data=None, + size=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + size_max=None, + zoom=8, + center=None, + map_style=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a scatter map, each row of `data_frame` is represented by a + symbol mark on the map. + """ + return make_figure(args=locals(), constructor=go.Scattermap) + + +scatter_map.__doc__ = make_docstring(scatter_map) + + +def choropleth_map( + data_frame=None, + geojson=None, + featureidkey=None, + locations=None, + color=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + zoom=8, + center=None, + map_style=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a choropleth map, each row of `data_frame` is represented by a + colored region on the map. + """ + return make_figure(args=locals(), constructor=go.Choroplethmap) + + +choropleth_map.__doc__ = make_docstring(choropleth_map) + + +def density_map( + data_frame=None, + lat=None, + lon=None, + z=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + zoom=8, + center=None, + map_style=None, + radius=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a density map, each row of `data_frame` contributes to the intensity of + the color of the region around the corresponding point on the map. + """ + return make_figure( + args=locals(), constructor=go.Densitymap, trace_patch=dict(radius=radius) + ) + + +density_map.__doc__ = make_docstring(density_map) + + +def line_map( + data_frame=None, + lat=None, + lon=None, + color=None, + text=None, + hover_name=None, + hover_data=None, + custom_data=None, + line_group=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + zoom=8, + center=None, + map_style=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a line map, each row of `data_frame` is represented as + a vertex of a polyline mark on the map. + """ + return make_figure(args=locals(), constructor=go.Scattermap) + + +line_map.__doc__ = make_docstring(line_map) + + +def scatter_mapbox( + data_frame=None, + lat=None, + lon=None, + color=None, + text=None, + hover_name=None, + hover_data=None, + custom_data=None, + size=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + size_max=None, + zoom=8, + center=None, + mapbox_style=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + *scatter_mapbox* is deprecated! Use *scatter_map* instead. + Learn more at: https://plotly.com/python/mapbox-to-maplibre/ + In a Mapbox scatter plot, each row of `data_frame` is represented by a + symbol mark on a Mapbox map. + """ + warn( + "*scatter_mapbox* is deprecated!" + + " Use *scatter_map* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) + return make_figure(args=locals(), constructor=go.Scattermapbox) + + +scatter_mapbox.__doc__ = make_docstring(scatter_mapbox) + + +def choropleth_mapbox( + data_frame=None, + geojson=None, + featureidkey=None, + locations=None, + color=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + zoom=8, + center=None, + mapbox_style=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + *choropleth_mapbox* is deprecated! Use *choropleth_map* instead. + Learn more at: https://plotly.com/python/mapbox-to-maplibre/ + In a Mapbox choropleth map, each row of `data_frame` is represented by a + colored region on a Mapbox map. + """ + warn( + "*choropleth_mapbox* is deprecated!" + + " Use *choropleth_map* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) + return make_figure(args=locals(), constructor=go.Choroplethmapbox) + + +choropleth_mapbox.__doc__ = make_docstring(choropleth_mapbox) + + +def density_mapbox( + data_frame=None, + lat=None, + lon=None, + z=None, + hover_name=None, + hover_data=None, + custom_data=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + zoom=8, + center=None, + mapbox_style=None, + radius=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + *density_mapbox* is deprecated! Use *density_map* instead. + Learn more at: https://plotly.com/python/mapbox-to-maplibre/ + In a Mapbox density map, each row of `data_frame` contributes to the intensity of + the color of the region around the corresponding point on the map + """ + warn( + "*density_mapbox* is deprecated!" + + " Use *density_map* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) + return make_figure( + args=locals(), constructor=go.Densitymapbox, trace_patch=dict(radius=radius) + ) + + +density_mapbox.__doc__ = make_docstring(density_mapbox) + + +def line_mapbox( + data_frame=None, + lat=None, + lon=None, + color=None, + text=None, + hover_name=None, + hover_data=None, + custom_data=None, + line_group=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + zoom=8, + center=None, + mapbox_style=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + *line_mapbox* is deprecated! Use *line_map* instead. + Learn more at: https://plotly.com/python/mapbox-to-maplibre/ + In a Mapbox line plot, each row of `data_frame` is represented as + a vertex of a polyline mark on a Mapbox map. + """ + warn( + "*line_mapbox* is deprecated!" + + " Use *line_map* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) + return make_figure(args=locals(), constructor=go.Scattermapbox) + + +line_mapbox.__doc__ = make_docstring(line_mapbox) + + +def scatter_matrix( + data_frame=None, + dimensions=None, + color=None, + symbol=None, + size=None, + hover_name=None, + hover_data=None, + custom_data=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + symbol_sequence=None, + symbol_map=None, + opacity=None, + size_max=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a scatter plot matrix (or SPLOM), each row of `data_frame` is + represented by a multiple symbol marks, one in each cell of a grid of + 2D scatter plots, which plot each pair of `dimensions` against each + other. + """ + return make_figure( + args=locals(), constructor=go.Splom, layout_patch=dict(dragmode="select") + ) + + +scatter_matrix.__doc__ = make_docstring(scatter_matrix) + + +def parallel_coordinates( + data_frame=None, + dimensions=None, + color=None, + labels=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a parallel coordinates plot, each row of `data_frame` is represented + by a polyline mark which traverses a set of parallel axes, one for each + of the `dimensions`. + """ + return make_figure(args=locals(), constructor=go.Parcoords) + + +parallel_coordinates.__doc__ = make_docstring(parallel_coordinates) + + +def parallel_categories( + data_frame=None, + dimensions=None, + color=None, + labels=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, + dimensions_max_cardinality=50, +) -> go.Figure: + """ + In a parallel categories (or parallel sets) plot, each row of + `data_frame` is grouped with other rows that share the same values of + `dimensions` and then plotted as a polyline mark through a set of + parallel axes, one for each of the `dimensions`. + """ + return make_figure(args=locals(), constructor=go.Parcats) + + +parallel_categories.__doc__ = make_docstring(parallel_categories) + + +def pie( + data_frame=None, + names=None, + values=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + color_discrete_sequence=None, + color_discrete_map=None, + hover_name=None, + hover_data=None, + custom_data=None, + category_orders=None, + labels=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, + opacity=None, + hole=None, +) -> go.Figure: + """ + In a pie plot, each row of `data_frame` is represented as a sector of a + pie. + """ + if color_discrete_sequence is not None: + layout_patch = {"piecolorway": color_discrete_sequence} + else: + layout_patch = {} + return make_figure( + args=locals(), + constructor=go.Pie, + trace_patch=dict(showlegend=(names is not None), hole=hole), + layout_patch=layout_patch, + ) + + +pie.__doc__ = make_docstring( + pie, + override_dict=dict( + hole=[ + "float", + "Sets the fraction of the radius to cut out of the pie." + "Use this to make a donut chart.", + ], + ), +) + + +def sunburst( + data_frame=None, + names=None, + values=None, + parents=None, + path=None, + ids=None, + color=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + color_discrete_sequence=None, + color_discrete_map=None, + hover_name=None, + hover_data=None, + custom_data=None, + labels=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, + branchvalues=None, + maxdepth=None, +) -> go.Figure: + """ + A sunburst plot represents hierarchial data as sectors laid out over + several levels of concentric rings. + """ + if color_discrete_sequence is not None: + layout_patch = {"sunburstcolorway": color_discrete_sequence} + else: + layout_patch = {} + if path is not None and (ids is not None or parents is not None): + raise ValueError( + "Either `path` should be provided, or `ids` and `parents`." + "These parameters are mutually exclusive and cannot be passed together." + ) + if path is not None and branchvalues is None: + branchvalues = "total" + return make_figure( + args=locals(), + constructor=go.Sunburst, + trace_patch=dict(branchvalues=branchvalues, maxdepth=maxdepth), + layout_patch=layout_patch, + ) + + +sunburst.__doc__ = make_docstring(sunburst) + + +def treemap( + data_frame=None, + names=None, + values=None, + parents=None, + ids=None, + path=None, + color=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + color_discrete_sequence=None, + color_discrete_map=None, + hover_name=None, + hover_data=None, + custom_data=None, + labels=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, + branchvalues=None, + maxdepth=None, +) -> go.Figure: + """ + A treemap plot represents hierarchial data as nested rectangular + sectors. + """ + if color_discrete_sequence is not None: + layout_patch = {"treemapcolorway": color_discrete_sequence} + else: + layout_patch = {} + if path is not None and (ids is not None or parents is not None): + raise ValueError( + "Either `path` should be provided, or `ids` and `parents`." + "These parameters are mutually exclusive and cannot be passed together." + ) + if path is not None and branchvalues is None: + branchvalues = "total" + return make_figure( + args=locals(), + constructor=go.Treemap, + trace_patch=dict(branchvalues=branchvalues, maxdepth=maxdepth), + layout_patch=layout_patch, + ) + + +treemap.__doc__ = make_docstring(treemap) + + +def icicle( + data_frame=None, + names=None, + values=None, + parents=None, + path=None, + ids=None, + color=None, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + color_discrete_sequence=None, + color_discrete_map=None, + hover_name=None, + hover_data=None, + custom_data=None, + labels=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, + branchvalues=None, + maxdepth=None, +) -> go.Figure: + """ + An icicle plot represents hierarchial data with adjoined rectangular + sectors that all cascade from root down to leaf in one direction. + """ + if color_discrete_sequence is not None: + layout_patch = {"iciclecolorway": color_discrete_sequence} + else: + layout_patch = {} + if path is not None and (ids is not None or parents is not None): + raise ValueError( + "Either `path` should be provided, or `ids` and `parents`." + "These parameters are mutually exclusive and cannot be passed together." + ) + if path is not None and branchvalues is None: + branchvalues = "total" + return make_figure( + args=locals(), + constructor=go.Icicle, + trace_patch=dict(branchvalues=branchvalues, maxdepth=maxdepth), + layout_patch=layout_patch, + ) + + +icicle.__doc__ = make_docstring(icicle) + + +def funnel( + data_frame=None, + x=None, + y=None, + color=None, + facet_row=None, + facet_col=None, + facet_col_wrap=0, + facet_row_spacing=None, + facet_col_spacing=None, + hover_name=None, + hover_data=None, + custom_data=None, + text=None, + animation_frame=None, + animation_group=None, + category_orders=None, + labels=None, + color_discrete_sequence=None, + color_discrete_map=None, + opacity=None, + orientation=None, + log_x=False, + log_y=False, + range_x=None, + range_y=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, +) -> go.Figure: + """ + In a funnel plot, each row of `data_frame` is represented as a + rectangular sector of a funnel. + """ + return make_figure(args=locals(), constructor=go.Funnel) + + +funnel.__doc__ = make_docstring(funnel, append_dict=_cartesian_append_dict) + + +def funnel_area( + data_frame=None, + names=None, + values=None, + color=None, + color_discrete_sequence=None, + color_discrete_map=None, + hover_name=None, + hover_data=None, + custom_data=None, + labels=None, + title=None, + subtitle=None, + template=None, + width=None, + height=None, + opacity=None, +) -> go.Figure: + """ + In a funnel area plot, each row of `data_frame` is represented as a + trapezoidal sector of a funnel. + """ + if color_discrete_sequence is not None: + layout_patch = {"funnelareacolorway": color_discrete_sequence} + else: + layout_patch = {} + return make_figure( + args=locals(), + constructor=go.Funnelarea, + trace_patch=dict(showlegend=(names is not None)), + layout_patch=layout_patch, + ) + + +funnel_area.__doc__ = make_docstring(funnel_area) diff --git a/venv/lib/python3.8/site-packages/plotly/express/_core.py b/venv/lib/python3.8/site-packages/plotly/express/_core.py new file mode 100644 index 0000000..d2dbc84 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/_core.py @@ -0,0 +1,2905 @@ +import plotly.graph_objs as go +import plotly.io as pio +from collections import namedtuple, OrderedDict +from ._special_inputs import IdentityMap, Constant, Range +from .trendline_functions import ols, lowess, rolling, expanding, ewm + +from _plotly_utils.basevalidators import ColorscaleValidator +from plotly.colors import qualitative, sequential +import math + +from plotly._subplots import ( + make_subplots, + _set_trace_grid_reference, + _subplot_type_for_trace_type, +) + +import narwhals.stable.v1 as nw + +# The reason to use narwhals.stable.v1 is to have a stable and perfectly +# backwards-compatible API, hence the confidence to not pin the Narwhals version exactly, +# allowing for multiple major libraries to have Narwhals as a dependency without +# forbidding users to install them all together due to dependency conflicts. + +NO_COLOR = "px_no_color_constant" + + +trendline_functions = dict( + lowess=lowess, rolling=rolling, ewm=ewm, expanding=expanding, ols=ols +) + +# Declare all supported attributes, across all plot types +direct_attrables = ( + ["base", "x", "y", "z", "a", "b", "c", "r", "theta", "size", "x_start", "x_end"] + + ["hover_name", "text", "names", "values", "parents", "wide_cross"] + + ["ids", "error_x", "error_x_minus", "error_y", "error_y_minus", "error_z"] + + ["error_z_minus", "lat", "lon", "locations", "animation_group"] +) +array_attrables = ["dimensions", "custom_data", "hover_data", "path", "wide_variable"] +group_attrables = ["animation_frame", "facet_row", "facet_col", "line_group"] +renameable_group_attrables = [ + "color", # renamed to marker.color or line.color in infer_config + "symbol", # renamed to marker.symbol in infer_config + "line_dash", # renamed to line.dash in infer_config + "pattern_shape", # renamed to marker.pattern.shape in infer_config +] +all_attrables = ( + direct_attrables + array_attrables + group_attrables + renameable_group_attrables +) + +cartesians = [go.Scatter, go.Scattergl, go.Bar, go.Funnel, go.Box, go.Violin] +cartesians += [go.Histogram, go.Histogram2d, go.Histogram2dContour] + + +class PxDefaults(object): + __slots__ = [ + "template", + "width", + "height", + "color_discrete_sequence", + "color_discrete_map", + "color_continuous_scale", + "symbol_sequence", + "symbol_map", + "line_dash_sequence", + "line_dash_map", + "pattern_shape_sequence", + "pattern_shape_map", + "size_max", + "category_orders", + "labels", + ] + + def __init__(self): + self.reset() + + def reset(self): + self.template = None + self.width = None + self.height = None + self.color_discrete_sequence = None + self.color_discrete_map = {} + self.color_continuous_scale = None + self.symbol_sequence = None + self.symbol_map = {} + self.line_dash_sequence = None + self.line_dash_map = {} + self.pattern_shape_sequence = None + self.pattern_shape_map = {} + self.size_max = 20 + self.category_orders = {} + self.labels = {} + + +defaults = PxDefaults() +del PxDefaults + + +MAPBOX_TOKEN = None + + +def set_mapbox_access_token(token): + """ + Arguments: + token: A Mapbox token to be used in `plotly.express.scatter_mapbox` and \ + `plotly.express.line_mapbox` figures. See \ + https://docs.mapbox.com/help/how-mapbox-works/access-tokens/ for more details + """ + global MAPBOX_TOKEN + MAPBOX_TOKEN = token + + +def get_trendline_results(fig): + """ + Extracts fit statistics for trendlines (when applied to figures generated with + the `trendline` argument set to `"ols"`). + + Arguments: + fig: the output of a `plotly.express` charting call + Returns: + A `pandas.DataFrame` with a column "px_fit_results" containing the `statsmodels` + results objects, along with columns identifying the subset of the data the + trendline was fit on. + """ + return fig._px_trendlines + + +Mapping = namedtuple( + "Mapping", + [ + "show_in_trace_name", + "grouper", + "val_map", + "sequence", + "updater", + "variable", + "facet", + ], +) +TraceSpec = namedtuple("TraceSpec", ["constructor", "attrs", "trace_patch", "marginal"]) + + +def get_label(args, column): + try: + return args["labels"][column] + except Exception: + return column + + +def invert_label(args, column): + """Invert mapping. + Find key corresponding to value column in dict args["labels"]. + Returns `column` if the value does not exist. + """ + reversed_labels = {value: key for (key, value) in args["labels"].items()} + try: + return reversed_labels[column] + except Exception: + return column + + +def _is_continuous(df: nw.DataFrame, col_name: str) -> bool: + if nw.dependencies.is_pandas_like_dataframe(df_native := df.to_native()): + # fastpath for pandas: Narwhals' Series.dtype has a bit of overhead, as it + # tries to distinguish between true "object" columns, and "string" columns + # disguised as "object". But here, we deal with neither. + return df_native[col_name].dtype.kind in "ifc" + return df.get_column(col_name).dtype.is_numeric() + + +def _to_unix_epoch_seconds(s: nw.Series) -> nw.Series: + dtype = s.dtype + if dtype == nw.Date: + return s.dt.timestamp("ms") / 1_000 + if dtype == nw.Datetime: + if dtype.time_unit in ("s", "ms"): + return s.dt.timestamp("ms") / 1_000 + elif dtype.time_unit == "us": + return s.dt.timestamp("us") / 1_000_000 + elif dtype.time_unit == "ns": + return s.dt.timestamp("ns") / 1_000_000_000 + else: + msg = "Unexpected dtype, please report a bug" + raise ValueError(msg) + else: + msg = f"Expected Date or Datetime, got {dtype}" + raise TypeError(msg) + + +def _generate_temporary_column_name(n_bytes, columns) -> str: + """Wraps of Narwhals generate_temporary_column_name to generate a token + which is guaranteed to not be in columns, nor in [col + token for col in columns] + """ + counter = 0 + while True: + # This is guaranteed to not be in columns by Narwhals + token = nw.generate_temporary_column_name(n_bytes, columns=columns) + + # Now check that it is not in the [col + token for col in columns] list + if token not in {f"{c}{token}" for c in columns}: + return token + + counter += 1 + if counter > 100: + msg = ( + "Internal Error: Plotly was not able to generate a column name with " + f"{n_bytes=} and not in {columns}.\n" + "Please report this to " + "https://github.com/plotly/plotly.py/issues/new and we will try to " + "replicate and fix it." + ) + raise AssertionError(msg) + + +def get_decorated_label(args, column, role): + original_label = label = get_label(args, column) + if "histfunc" in args and ( + (role == "z") + or (role == "x" and "orientation" in args and args["orientation"] == "h") + or (role == "y" and "orientation" in args and args["orientation"] == "v") + ): + histfunc = args["histfunc"] or "count" + if histfunc != "count": + label = "%s of %s" % (histfunc, label) + else: + label = "count" + + if "histnorm" in args and args["histnorm"] is not None: + if label == "count": + label = args["histnorm"] + else: + histnorm = args["histnorm"] + if histfunc == "sum": + if histnorm == "probability": + label = "%s of %s" % ("fraction", label) + elif histnorm == "percent": + label = "%s of %s" % (histnorm, label) + else: + label = "%s weighted by %s" % (histnorm, original_label) + elif histnorm == "probability": + label = "%s of sum of %s" % ("fraction", label) + elif histnorm == "percent": + label = "%s of sum of %s" % ("percent", label) + else: + label = "%s of %s" % (histnorm, label) + + if "barnorm" in args and args["barnorm"] is not None: + label = "%s (normalized as %s)" % (label, args["barnorm"]) + + return label + + +def make_mapping(args, variable): + if variable == "line_group" or variable == "animation_frame": + return Mapping( + show_in_trace_name=False, + grouper=args[variable], + val_map={}, + sequence=[""], + variable=variable, + updater=(lambda trace, v: v), + facet=None, + ) + if variable == "facet_row" or variable == "facet_col": + letter = "x" if variable == "facet_col" else "y" + return Mapping( + show_in_trace_name=False, + variable=letter, + grouper=args[variable], + val_map={}, + sequence=[i for i in range(1, 1000)], + updater=(lambda trace, v: v), + facet="row" if variable == "facet_row" else "col", + ) + (parent, variable, *other_variables) = variable.split(".") + vprefix = variable + arg_name = variable + if variable == "color": + vprefix = "color_discrete" + if variable == "dash": + arg_name = "line_dash" + vprefix = "line_dash" + if variable in ["pattern", "shape"]: + arg_name = "pattern_shape" + vprefix = "pattern_shape" + if args[vprefix + "_map"] == "identity": + val_map = IdentityMap() + else: + val_map = args[vprefix + "_map"].copy() + return Mapping( + show_in_trace_name=True, + variable=variable, + grouper=args[arg_name], + val_map=val_map, + sequence=args[vprefix + "_sequence"], + updater=lambda trace, v: trace.update( + {parent: {".".join([variable] + other_variables): v}} + ), + facet=None, + ) + + +def make_trace_kwargs(args, trace_spec, trace_data, mapping_labels, sizeref): + """Populates a dict with arguments to update trace + + Parameters + ---------- + args : dict + args to be used for the trace + trace_spec : NamedTuple + which kind of trace to be used (has constructor, marginal etc. + attributes) + trace_data : pandas DataFrame + data + mapping_labels : dict + to be used for hovertemplate + sizeref : float + marker sizeref + + Returns + ------- + trace_patch : dict + dict to be used to update trace + fit_results : dict + fit information to be used for trendlines + """ + trace_data: nw.DataFrame + df: nw.DataFrame = args["data_frame"] + + if "line_close" in args and args["line_close"]: + trace_data = nw.concat([trace_data, trace_data.head(1)], how="vertical") + + trace_patch = trace_spec.trace_patch.copy() or {} + fit_results = None + hover_header = "" + for attr_name in trace_spec.attrs: + attr_value = args[attr_name] + attr_label = get_decorated_label(args, attr_value, attr_name) + if attr_name == "dimensions": + dims = [ + (name, trace_data.get_column(name)) + for name in trace_data.columns + if ((not attr_value) or (name in attr_value)) + and (trace_spec.constructor != go.Parcoords or _is_continuous(df, name)) + and ( + trace_spec.constructor != go.Parcats + or (attr_value is not None and name in attr_value) + or nw.to_py_scalar(df.get_column(name).n_unique()) + <= args["dimensions_max_cardinality"] + ) + ] + trace_patch["dimensions"] = [ + dict(label=get_label(args, name), values=column) + for (name, column) in dims + ] + if trace_spec.constructor == go.Splom: + for d in trace_patch["dimensions"]: + d["axis"] = dict(matches=True) + mapping_labels["%{xaxis.title.text}"] = "%{x}" + mapping_labels["%{yaxis.title.text}"] = "%{y}" + + elif attr_value is not None: + if attr_name == "size": + if "marker" not in trace_patch: + trace_patch["marker"] = dict() + trace_patch["marker"]["size"] = trace_data.get_column(attr_value) + trace_patch["marker"]["sizemode"] = "area" + trace_patch["marker"]["sizeref"] = sizeref + mapping_labels[attr_label] = "%{marker.size}" + elif attr_name == "marginal_x": + if trace_spec.constructor == go.Histogram: + mapping_labels["count"] = "%{y}" + elif attr_name == "marginal_y": + if trace_spec.constructor == go.Histogram: + mapping_labels["count"] = "%{x}" + elif attr_name == "trendline": + if ( + args["x"] + and args["y"] + and len( + trace_data.select(nw.col(args["x"], args["y"])).drop_nulls() + ) + > 1 + ): + # sorting is bad but trace_specs with "trendline" have no other attrs + sorted_trace_data = trace_data.sort(by=args["x"], nulls_last=True) + y = sorted_trace_data.get_column(args["y"]) + x = sorted_trace_data.get_column(args["x"]) + + if x.dtype == nw.Datetime or x.dtype == nw.Date: + # convert to unix epoch seconds + x = _to_unix_epoch_seconds(x) + elif not x.dtype.is_numeric(): + try: + x = x.cast(nw.Float64()) + except ValueError: + raise ValueError( + "Could not convert value of 'x' ('%s') into a numeric type. " + "If 'x' contains stringified dates, please convert to a datetime column." + % args["x"] + ) + + if not y.dtype.is_numeric(): + try: + y = y.cast(nw.Float64()) + except ValueError: + raise ValueError( + "Could not convert value of 'y' into a numeric type." + ) + + # preserve original values of "x" in case they're dates + # otherwise numpy/pandas can mess with the timezones + # NB this means trendline functions must output one-to-one with the input series + # i.e. we can't do resampling, because then the X values might not line up! + non_missing = ~(x.is_null() | y.is_null()) + trace_patch["x"] = sorted_trace_data.filter(non_missing).get_column( + args["x"] + ) + if ( + trace_patch["x"].dtype == nw.Datetime + and trace_patch["x"].dtype.time_zone is not None + ): + # Remove time zone so that local time is displayed + trace_patch["x"] = ( + trace_patch["x"].dt.replace_time_zone(None).to_numpy() + ) + else: + trace_patch["x"] = trace_patch["x"].to_numpy() + + trendline_function = trendline_functions[attr_value] + y_out, hover_header, fit_results = trendline_function( + args["trendline_options"], + sorted_trace_data.get_column(args["x"]), # narwhals series + x.to_numpy(), # numpy array + y.to_numpy(), # numpy array + args["x"], + args["y"], + non_missing.to_numpy(), # numpy array + ) + assert len(y_out) == len(trace_patch["x"]), ( + "missing-data-handling failure in trendline code" + ) + trace_patch["y"] = y_out + mapping_labels[get_label(args, args["x"])] = "%{x}" + mapping_labels[get_label(args, args["y"])] = "%{y} (trend)" + elif attr_name.startswith("error"): + error_xy = attr_name[:7] + arr = "arrayminus" if attr_name.endswith("minus") else "array" + if error_xy not in trace_patch: + trace_patch[error_xy] = {} + trace_patch[error_xy][arr] = trace_data.get_column(attr_value) + elif attr_name == "custom_data": + if len(attr_value) > 0: + # here we store a data frame in customdata, and it's serialized + # as a list of row lists, which is what we want + trace_patch["customdata"] = trace_data.select(nw.col(attr_value)) + elif attr_name == "hover_name": + if trace_spec.constructor not in [ + go.Histogram, + go.Histogram2d, + go.Histogram2dContour, + ]: + trace_patch["hovertext"] = trace_data.get_column(attr_value) + if hover_header == "": + hover_header = "%{hovertext}

" + elif attr_name == "hover_data": + if trace_spec.constructor not in [ + go.Histogram, + go.Histogram2d, + go.Histogram2dContour, + ]: + hover_is_dict = isinstance(attr_value, dict) + customdata_cols = args.get("custom_data") or [] + for col in attr_value: + if hover_is_dict and not attr_value[col]: + continue + if col in [ + args.get("x"), + args.get("y"), + args.get("z"), + args.get("base"), + ]: + continue + try: + position = args["custom_data"].index(col) + except (ValueError, AttributeError, KeyError): + position = len(customdata_cols) + customdata_cols.append(col) + attr_label_col = get_decorated_label(args, col, None) + mapping_labels[attr_label_col] = "%%{customdata[%d]}" % ( + position + ) + + if len(customdata_cols) > 0: + # here we store a data frame in customdata, and it's serialized + # as a list of row lists, which is what we want + + # dict.fromkeys(customdata_cols) allows to deduplicate column + # names, yet maintaining the original order. + trace_patch["customdata"] = trace_data.select( + *[nw.col(c) for c in dict.fromkeys(customdata_cols)] + ) + elif attr_name == "color": + if trace_spec.constructor in [ + go.Choropleth, + go.Choroplethmap, + go.Choroplethmapbox, + ]: + trace_patch["z"] = trace_data.get_column(attr_value) + trace_patch["coloraxis"] = "coloraxis1" + mapping_labels[attr_label] = "%{z}" + elif trace_spec.constructor in [ + go.Sunburst, + go.Treemap, + go.Icicle, + go.Pie, + go.Funnelarea, + ]: + if "marker" not in trace_patch: + trace_patch["marker"] = dict() + + if args.get("color_is_continuous"): + trace_patch["marker"]["colors"] = trace_data.get_column( + attr_value + ) + trace_patch["marker"]["coloraxis"] = "coloraxis1" + mapping_labels[attr_label] = "%{color}" + else: + trace_patch["marker"]["colors"] = [] + if args["color_discrete_map"] is not None: + mapping = args["color_discrete_map"].copy() + else: + mapping = {} + for cat in trace_data.get_column(attr_value).to_list(): + # although trace_data.get_column(attr_value) is a Narwhals + # Series, which is an iterable, explicitly calling a to_list() + # makes sure that the elements we loop over are python objects + # in all cases, since depending on the backend this may not be + # the case (e.g. PyArrow) + if mapping.get(cat) is None: + mapping[cat] = args["color_discrete_sequence"][ + len(mapping) % len(args["color_discrete_sequence"]) + ] + trace_patch["marker"]["colors"].append(mapping[cat]) + else: + colorable = "marker" + if trace_spec.constructor in [go.Parcats, go.Parcoords]: + colorable = "line" + if colorable not in trace_patch: + trace_patch[colorable] = dict() + trace_patch[colorable]["color"] = trace_data.get_column(attr_value) + trace_patch[colorable]["coloraxis"] = "coloraxis1" + mapping_labels[attr_label] = "%%{%s.color}" % colorable + elif attr_name == "animation_group": + trace_patch["ids"] = trace_data.get_column(attr_value) + elif attr_name == "locations": + trace_patch[attr_name] = trace_data.get_column(attr_value) + mapping_labels[attr_label] = "%{location}" + elif attr_name == "values": + trace_patch[attr_name] = trace_data.get_column(attr_value) + _label = "value" if attr_label == "values" else attr_label + mapping_labels[_label] = "%{value}" + elif attr_name == "parents": + trace_patch[attr_name] = trace_data.get_column(attr_value) + _label = "parent" if attr_label == "parents" else attr_label + mapping_labels[_label] = "%{parent}" + elif attr_name == "ids": + trace_patch[attr_name] = trace_data.get_column(attr_value) + _label = "id" if attr_label == "ids" else attr_label + mapping_labels[_label] = "%{id}" + elif attr_name == "names": + if trace_spec.constructor in [ + go.Sunburst, + go.Treemap, + go.Icicle, + go.Pie, + go.Funnelarea, + ]: + trace_patch["labels"] = trace_data.get_column(attr_value) + _label = "label" if attr_label == "names" else attr_label + mapping_labels[_label] = "%{label}" + else: + trace_patch[attr_name] = trace_data.get_column(attr_value) + else: + trace_patch[attr_name] = trace_data.get_column(attr_value) + mapping_labels[attr_label] = "%%{%s}" % attr_name + elif (trace_spec.constructor == go.Histogram and attr_name in ["x", "y"]) or ( + trace_spec.constructor in [go.Histogram2d, go.Histogram2dContour] + and attr_name == "z" + ): + # ensure that stuff like "count" gets into the hoverlabel + mapping_labels[attr_label] = "%%{%s}" % attr_name + if trace_spec.constructor not in [go.Parcoords, go.Parcats]: + # Modify mapping_labels according to hover_data keys + # if hover_data is a dict + mapping_labels_copy = OrderedDict(mapping_labels) + if args["hover_data"] and isinstance(args["hover_data"], dict): + for k, v in mapping_labels.items(): + # We need to invert the mapping here + k_args = invert_label(args, k) + if k_args in args["hover_data"]: + formatter = args["hover_data"][k_args][0] + if formatter: + if isinstance(formatter, str): + mapping_labels_copy[k] = v.replace("}", "%s}" % formatter) + else: + _ = mapping_labels_copy.pop(k) + hover_lines = [k + "=" + v for k, v in mapping_labels_copy.items()] + trace_patch["hovertemplate"] = hover_header + "
".join(hover_lines) + trace_patch["hovertemplate"] += "" + return trace_patch, fit_results + + +def configure_axes(args, constructor, fig, orders): + configurators = { + go.Scatter3d: configure_3d_axes, + go.Scatterternary: configure_ternary_axes, + go.Scatterpolar: configure_polar_axes, + go.Scatterpolargl: configure_polar_axes, + go.Barpolar: configure_polar_axes, + go.Scattermap: configure_map, + go.Choroplethmap: configure_map, + go.Densitymap: configure_map, + go.Scattermapbox: configure_mapbox, + go.Choroplethmapbox: configure_mapbox, + go.Densitymapbox: configure_mapbox, + go.Scattergeo: configure_geo, + go.Choropleth: configure_geo, + } + for c in cartesians: + configurators[c] = configure_cartesian_axes + if constructor in configurators: + configurators[constructor](args, fig, orders) + + +def set_cartesian_axis_opts(args, axis, letter, orders): + log_key = "log_" + letter + range_key = "range_" + letter + if log_key in args and args[log_key]: + axis["type"] = "log" + if range_key in args and args[range_key]: + axis["range"] = [math.log(r, 10) for r in args[range_key]] + elif range_key in args and args[range_key]: + axis["range"] = args[range_key] + + if args[letter] in orders: + axis["categoryorder"] = "array" + axis["categoryarray"] = ( + orders[args[letter]] + if isinstance(axis, go.layout.XAxis) + else list(reversed(orders[args[letter]])) # top down for Y axis + ) + + +def configure_cartesian_marginal_axes(args, fig, orders): + nrows = len(fig._grid_ref) + ncols = len(fig._grid_ref[0]) + + # Set y-axis titles and axis options in the left-most column + for yaxis in fig.select_yaxes(col=1): + set_cartesian_axis_opts(args, yaxis, "y", orders) + + # Set x-axis titles and axis options in the bottom-most row + for xaxis in fig.select_xaxes(row=1): + set_cartesian_axis_opts(args, xaxis, "x", orders) + + # Configure axis ticks on marginal subplots + if args["marginal_x"]: + fig.update_yaxes( + showticklabels=False, showline=False, ticks="", range=None, row=nrows + ) + if args["template"].layout.yaxis.showgrid is None: + fig.update_yaxes(showgrid=args["marginal_x"] == "histogram", row=nrows) + if args["template"].layout.xaxis.showgrid is None: + fig.update_xaxes(showgrid=True, row=nrows) + + if args["marginal_y"]: + fig.update_xaxes( + showticklabels=False, showline=False, ticks="", range=None, col=ncols + ) + if args["template"].layout.xaxis.showgrid is None: + fig.update_xaxes(showgrid=args["marginal_y"] == "histogram", col=ncols) + if args["template"].layout.yaxis.showgrid is None: + fig.update_yaxes(showgrid=True, col=ncols) + + # Add axis titles to non-marginal subplots + y_title = get_decorated_label(args, args["y"], "y") + if args["marginal_x"]: + fig.update_yaxes(title_text=y_title, row=1, col=1) + else: + for row in range(1, nrows + 1): + fig.update_yaxes(title_text=y_title, row=row, col=1) + + x_title = get_decorated_label(args, args["x"], "x") + if args["marginal_y"]: + fig.update_xaxes(title_text=x_title, row=1, col=1) + else: + for col in range(1, ncols + 1): + fig.update_xaxes(title_text=x_title, row=1, col=col) + + # Configure axis type across all x-axes + if "log_x" in args and args["log_x"]: + fig.update_xaxes(type="log") + + # Configure axis type across all y-axes + if "log_y" in args and args["log_y"]: + fig.update_yaxes(type="log") + + # Configure matching and axis type for marginal y-axes + matches_y = "y" + str(ncols + 1) + if args["marginal_x"]: + for row in range(2, nrows + 1, 2): + fig.update_yaxes(matches=matches_y, type=None, row=row) + + if args["marginal_y"]: + for col in range(2, ncols + 1, 2): + fig.update_xaxes(matches="x2", type=None, col=col) + + +def configure_cartesian_axes(args, fig, orders): + if ("marginal_x" in args and args["marginal_x"]) or ( + "marginal_y" in args and args["marginal_y"] + ): + configure_cartesian_marginal_axes(args, fig, orders) + return + + # Set y-axis titles and axis options in the left-most column + y_title = get_decorated_label(args, args["y"], "y") + for yaxis in fig.select_yaxes(col=1): + yaxis.update(title_text=y_title) + set_cartesian_axis_opts(args, yaxis, "y", orders) + + # Set x-axis titles and axis options in the bottom-most row + x_title = get_decorated_label(args, args["x"], "x") + for xaxis in fig.select_xaxes(row=1): + if "is_timeline" not in args: + xaxis.update(title_text=x_title) + set_cartesian_axis_opts(args, xaxis, "x", orders) + + # Configure axis type across all x-axes + if "log_x" in args and args["log_x"]: + fig.update_xaxes(type="log") + + # Configure axis type across all y-axes + if "log_y" in args and args["log_y"]: + fig.update_yaxes(type="log") + + if "is_timeline" in args: + fig.update_xaxes(type="date") + + if "ecdfmode" in args: + if args["orientation"] == "v": + fig.update_yaxes(rangemode="tozero") + else: + fig.update_xaxes(rangemode="tozero") + + +def configure_ternary_axes(args, fig, orders): + fig.update_ternaries( + aaxis=dict(title_text=get_label(args, args["a"])), + baxis=dict(title_text=get_label(args, args["b"])), + caxis=dict(title_text=get_label(args, args["c"])), + ) + + +def configure_polar_axes(args, fig, orders): + patch = dict( + angularaxis=dict(direction=args["direction"], rotation=args["start_angle"]), + radialaxis=dict(), + ) + + for var, axis in [("r", "radialaxis"), ("theta", "angularaxis")]: + if args[var] in orders: + patch[axis]["categoryorder"] = "array" + patch[axis]["categoryarray"] = orders[args[var]] + + radialaxis = patch["radialaxis"] + if args["log_r"]: + radialaxis["type"] = "log" + if args["range_r"]: + radialaxis["range"] = [math.log(x, 10) for x in args["range_r"]] + else: + if args["range_r"]: + radialaxis["range"] = args["range_r"] + + if args["range_theta"]: + patch["sector"] = args["range_theta"] + fig.update_polars(patch) + + +def configure_3d_axes(args, fig, orders): + patch = dict( + xaxis=dict(title_text=get_label(args, args["x"])), + yaxis=dict(title_text=get_label(args, args["y"])), + zaxis=dict(title_text=get_label(args, args["z"])), + ) + + for letter in ["x", "y", "z"]: + axis = patch[letter + "axis"] + if args["log_" + letter]: + axis["type"] = "log" + if args["range_" + letter]: + axis["range"] = [math.log(x, 10) for x in args["range_" + letter]] + else: + if args["range_" + letter]: + axis["range"] = args["range_" + letter] + if args[letter] in orders: + axis["categoryorder"] = "array" + axis["categoryarray"] = orders[args[letter]] + fig.update_scenes(patch) + + +def configure_mapbox(args, fig, orders): + center = args["center"] + if not center and "lat" in args and "lon" in args: + center = dict( + lat=args["data_frame"][args["lat"]].mean(), + lon=args["data_frame"][args["lon"]].mean(), + ) + fig.update_mapboxes( + accesstoken=MAPBOX_TOKEN, + center=center, + zoom=args["zoom"], + style=args["mapbox_style"], + ) + + +def configure_map(args, fig, orders): + center = args["center"] + if not center and "lat" in args and "lon" in args: + center = dict( + lat=args["data_frame"][args["lat"]].mean(), + lon=args["data_frame"][args["lon"]].mean(), + ) + fig.update_maps( + center=center, + zoom=args["zoom"], + style=args["map_style"], + ) + + +def configure_geo(args, fig, orders): + fig.update_geos( + center=args["center"], + scope=args["scope"], + fitbounds=args["fitbounds"], + visible=args["basemap_visible"], + projection=dict(type=args["projection"]), + ) + + +def configure_animation_controls(args, constructor, fig): + def frame_args(duration): + return { + "frame": {"duration": duration, "redraw": constructor != go.Scatter}, + "mode": "immediate", + "fromcurrent": True, + "transition": {"duration": duration, "easing": "linear"}, + } + + if "animation_frame" in args and args["animation_frame"] and len(fig.frames) > 1: + fig.layout.updatemenus = [ + { + "buttons": [ + { + "args": [None, frame_args(500)], + "label": "▶", + "method": "animate", + }, + { + "args": [[None], frame_args(0)], + "label": "◼", + "method": "animate", + }, + ], + "direction": "left", + "pad": {"r": 10, "t": 70}, + "showactive": False, + "type": "buttons", + "x": 0.1, + "xanchor": "right", + "y": 0, + "yanchor": "top", + } + ] + fig.layout.sliders = [ + { + "active": 0, + "yanchor": "top", + "xanchor": "left", + "currentvalue": { + "prefix": get_label(args, args["animation_frame"]) + "=" + }, + "pad": {"b": 10, "t": 60}, + "len": 0.9, + "x": 0.1, + "y": 0, + "steps": [ + { + "args": [[f.name], frame_args(0)], + "label": f.name, + "method": "animate", + } + for f in fig.frames + ], + } + ] + + +def make_trace_spec(args, constructor, attrs, trace_patch): + if constructor in [go.Scatter, go.Scatterpolar]: + if "render_mode" in args and ( + args["render_mode"] == "webgl" + or ( + args["render_mode"] == "auto" + and len(args["data_frame"]) > 1000 + and args.get("line_shape") != "spline" + and args["animation_frame"] is None + ) + ): + if constructor == go.Scatter: + constructor = go.Scattergl + if "orientation" in trace_patch: + del trace_patch["orientation"] + else: + constructor = go.Scatterpolargl + # Create base trace specification + result = [TraceSpec(constructor, attrs, trace_patch, None)] + + # Add marginal trace specifications + for letter in ["x", "y"]: + if "marginal_" + letter in args and args["marginal_" + letter]: + trace_spec = None + axis_map = dict( + xaxis="x1" if letter == "x" else "x2", + yaxis="y1" if letter == "y" else "y2", + ) + if args["marginal_" + letter] == "histogram": + trace_spec = TraceSpec( + constructor=go.Histogram, + attrs=[letter, "marginal_" + letter], + trace_patch=dict(opacity=0.5, bingroup=letter, **axis_map), + marginal=letter, + ) + elif args["marginal_" + letter] == "violin": + trace_spec = TraceSpec( + constructor=go.Violin, + attrs=[letter, "hover_name", "hover_data"], + trace_patch=dict(scalegroup=letter), + marginal=letter, + ) + elif args["marginal_" + letter] == "box": + trace_spec = TraceSpec( + constructor=go.Box, + attrs=[letter, "hover_name", "hover_data"], + trace_patch=dict(notched=True), + marginal=letter, + ) + elif args["marginal_" + letter] == "rug": + symbols = {"x": "line-ns-open", "y": "line-ew-open"} + trace_spec = TraceSpec( + constructor=go.Box, + attrs=[letter, "hover_name", "hover_data"], + trace_patch=dict( + fillcolor="rgba(255,255,255,0)", + line={"color": "rgba(255,255,255,0)"}, + boxpoints="all", + jitter=0, + hoveron="points", + marker={"symbol": symbols[letter]}, + ), + marginal=letter, + ) + if "color" in attrs or "color" not in args: + if "marker" not in trace_spec.trace_patch: + trace_spec.trace_patch["marker"] = dict() + first_default_color = args["color_continuous_scale"][0] + trace_spec.trace_patch["marker"]["color"] = first_default_color + result.append(trace_spec) + + # Add trendline trace specifications + if args.get("trendline") and args.get("trendline_scope", "trace") == "trace": + result.append(make_trendline_spec(args, constructor)) + return result + + +def make_trendline_spec(args, constructor): + trace_spec = TraceSpec( + constructor=( + go.Scattergl + if constructor == go.Scattergl # could be contour + else go.Scatter + ), + attrs=["trendline"], + trace_patch=dict(mode="lines"), + marginal=None, + ) + if args["trendline_color_override"]: + trace_spec.trace_patch["line"] = dict(color=args["trendline_color_override"]) + return trace_spec + + +def one_group(x): + return "" + + +def apply_default_cascade(args): + # first we apply px.defaults to unspecified args + + for param in defaults.__slots__: + if param in args and args[param] is None: + args[param] = getattr(defaults, param) + + # load the default template if set, otherwise "plotly" + if args["template"] is None: + if pio.templates.default is not None: + args["template"] = pio.templates.default + else: + args["template"] = "plotly" + + try: + # retrieve the actual template if we were given a name + args["template"] = pio.templates[args["template"]] + except Exception: + # otherwise try to build a real template + args["template"] = go.layout.Template(args["template"]) + + # if colors not set explicitly or in px.defaults, defer to a template + # if the template doesn't have one, we set some final fallback defaults + if "color_continuous_scale" in args: + if ( + args["color_continuous_scale"] is None + and args["template"].layout.colorscale.sequential + ): + args["color_continuous_scale"] = [ + x[1] for x in args["template"].layout.colorscale.sequential + ] + if args["color_continuous_scale"] is None: + args["color_continuous_scale"] = sequential.Viridis + + if "color_discrete_sequence" in args: + if args["color_discrete_sequence"] is None and args["template"].layout.colorway: + args["color_discrete_sequence"] = args["template"].layout.colorway + if args["color_discrete_sequence"] is None: + args["color_discrete_sequence"] = qualitative.D3 + + # if symbol_sequence/line_dash_sequence not set explicitly or in px.defaults, + # see if we can defer to template. If not, set reasonable defaults + if "symbol_sequence" in args: + if args["symbol_sequence"] is None and args["template"].data.scatter: + args["symbol_sequence"] = [ + scatter.marker.symbol for scatter in args["template"].data.scatter + ] + if not args["symbol_sequence"] or not any(args["symbol_sequence"]): + args["symbol_sequence"] = ["circle", "diamond", "square", "x", "cross"] + + if "line_dash_sequence" in args: + if args["line_dash_sequence"] is None and args["template"].data.scatter: + args["line_dash_sequence"] = [ + scatter.line.dash for scatter in args["template"].data.scatter + ] + if not args["line_dash_sequence"] or not any(args["line_dash_sequence"]): + args["line_dash_sequence"] = [ + "solid", + "dot", + "dash", + "longdash", + "dashdot", + "longdashdot", + ] + + if "pattern_shape_sequence" in args: + if args["pattern_shape_sequence"] is None and args["template"].data.bar: + args["pattern_shape_sequence"] = [ + bar.marker.pattern.shape for bar in args["template"].data.bar + ] + if not args["pattern_shape_sequence"] or not any( + args["pattern_shape_sequence"] + ): + args["pattern_shape_sequence"] = ["", "/", "\\", "x", "+", "."] + + +def _check_name_not_reserved(field_name, reserved_names): + if field_name not in reserved_names: + return field_name + else: + raise NameError( + "A name conflict was encountered for argument '%s'. " + "A column or index with name '%s' is ambiguous." % (field_name, field_name) + ) + + +def _get_reserved_col_names(args): + """ + This function builds a list of columns of the data_frame argument used + as arguments, either as str/int arguments or given as columns + (pandas series type). + """ + df: nw.DataFrame = args["data_frame"] + reserved_names = set() + for field in args: + if field not in all_attrables: + continue + names = args[field] if field in array_attrables else [args[field]] + if names is None: + continue + for arg in names: + if arg is None: + continue + elif isinstance(arg, str): # no need to add ints since kw arg are not ints + reserved_names.add(arg) + elif nw.dependencies.is_into_series(arg): + arg_series = nw.from_native(arg, series_only=True) + arg_name = arg_series.name + if arg_name and arg_name in df.columns: + in_df = (arg_series == df.get_column(arg_name)).all() + if in_df: + reserved_names.add(arg_name) + elif arg is nw.maybe_get_index(df) and arg.name is not None: + reserved_names.add(arg.name) + + return reserved_names + + +def _is_col_list(columns, arg, is_pd_like, native_namespace): + """Returns True if arg looks like it's a list of columns or references to columns + in df_input, and False otherwise (in which case it's assumed to be a single column + or reference to a column). + """ + if arg is None or isinstance(arg, str) or isinstance(arg, int): + return False + if is_pd_like and isinstance(arg, native_namespace.MultiIndex): + return False # just to keep existing behaviour for now + try: + iter(arg) + except TypeError: + return False # not iterable + for c in arg: + if isinstance(c, str) or isinstance(c, int): + if columns is None or c not in columns: + return False + else: + try: + iter(c) + except TypeError: + return False # not iterable + return True + + +def _isinstance_listlike(x): + """Returns True if x is an iterable which can be transformed into a pandas Series, + False for the other types of possible values of a `hover_data` dict. + A tuple of length 2 is a special case corresponding to a (format, data) tuple. + """ + if ( + isinstance(x, str) + or (isinstance(x, tuple) and len(x) == 2) + or isinstance(x, bool) + or x is None + ): + return False + else: + return True + + +def _escape_col_name(columns, col_name, extra): + if columns is None: + return col_name + while col_name in columns or col_name in extra: + col_name = "_" + col_name + return col_name + + +def to_named_series(x, name=None, native_namespace=None): + """Assuming x is list-like or even an existing Series, returns a new Series named `name`.""" + # With `pass_through=True`, the original object will be returned if unable to convert + # to a Narwhals Series. + x = nw.from_native(x, series_only=True, pass_through=True) + if isinstance(x, nw.Series): + return x.rename(name) + elif native_namespace is not None: + return nw.new_series(name=name, values=x, native_namespace=native_namespace) + else: + try: + import pandas as pd + + return nw.new_series(name=name, values=x, native_namespace=pd) + except ImportError: + msg = "Pandas installation is required if no dataframe is provided." + raise NotImplementedError(msg) + + +def process_args_into_dataframe( + args, wide_mode, var_name, value_name, is_pd_like, native_namespace +): + """ + After this function runs, the `all_attrables` keys of `args` all contain only + references to columns of `df_output`. This function handles the extraction of data + from `args["attrable"]` and column-name-generation as appropriate, and adds the + data to `df_output` and then replaces `args["attrable"]` with the appropriate + reference. + """ + + df_input: nw.DataFrame | None = args["data_frame"] + df_provided = df_input is not None + + # we use a dict instead of a dataframe directly so that it doesn't cause + # PerformanceWarning by pandas by repeatedly setting the columns. + # a dict is used instead of a list as the columns needs to be overwritten. + df_output = {} + constants = {} + ranges = [] + wide_id_vars = set() + reserved_names = _get_reserved_col_names(args) if df_provided else set() + + # Case of functions with a "dimensions" kw: scatter_matrix, parcats, parcoords + if "dimensions" in args and args["dimensions"] is None: + if not df_provided: + raise ValueError( + "No data were provided. Please provide data either with the `data_frame` or with the `dimensions` argument." + ) + else: + df_output = {col: df_input.get_column(col) for col in df_input.columns} + + # hover_data is a dict + hover_data_is_dict = ( + "hover_data" in args + and args["hover_data"] + and isinstance(args["hover_data"], dict) + ) + # If dict, convert all values of hover_data to tuples to simplify processing + if hover_data_is_dict: + for k in args["hover_data"]: + if _isinstance_listlike(args["hover_data"][k]): + args["hover_data"][k] = (True, args["hover_data"][k]) + if not isinstance(args["hover_data"][k], tuple): + args["hover_data"][k] = (args["hover_data"][k], None) + if df_provided and args["hover_data"][k][1] is not None and k in df_input: + raise ValueError( + "Ambiguous input: values for '%s' appear both in hover_data and data_frame" + % k + ) + # Loop over possible arguments + for field_name in all_attrables: + # Massaging variables + argument_list = ( + [args.get(field_name)] + if field_name not in array_attrables + else args.get(field_name) + ) + + # argument not specified, continue + # The original also tested `or argument_list is [None]` but + # that clause is always False, so it has been removed. The + # alternative fix would have been to test that `argument_list` + # is of length 1 and its sole element is `None`, but that + # feels pedantic. All tests pass with the change below; let's + # see if the world decides we were wrong. + if argument_list is None: + continue + + # Argument name: field_name if the argument is not a list + # Else we give names like ["hover_data_0, hover_data_1"] etc. + field_list = ( + [field_name] + if field_name not in array_attrables + else [field_name + "_" + str(i) for i in range(len(argument_list))] + ) + # argument_list and field_list ready, iterate over them + # Core of the loop starts here + for i, (argument, field) in enumerate(zip(argument_list, field_list)): + length = len(df_output[next(iter(df_output))]) if len(df_output) else 0 + if argument is None: + continue + col_name = None + # Case of multiindex + if is_pd_like and isinstance(argument, native_namespace.MultiIndex): + raise TypeError( + f"Argument '{field}' is a {native_namespace.__name__} MultiIndex. " + f"{native_namespace.__name__} MultiIndex is not supported by plotly " + "express at the moment." + ) + # ----------------- argument is a special value ---------------------- + if isinstance(argument, (Constant, Range)): + col_name = _check_name_not_reserved( + str(argument.label) if argument.label is not None else field, + reserved_names, + ) + if isinstance(argument, Constant): + constants[col_name] = argument.value + else: + ranges.append(col_name) + # ----------------- argument is likely a col name ---------------------- + elif isinstance(argument, str) or not hasattr(argument, "__len__"): + if ( + field_name == "hover_data" + and hover_data_is_dict + and args["hover_data"][str(argument)][1] is not None + ): + # hover_data has onboard data + # previously-checked to have no name-conflict with data_frame + col_name = str(argument) + real_argument = args["hover_data"][col_name][1] + + if length and (real_length := len(real_argument)) != length: + raise ValueError( + "All arguments should have the same length. " + "The length of hover_data key `%s` is %d, whereas the " + "length of previously-processed arguments %s is %d" + % ( + argument, + real_length, + str(list(df_output.keys())), + length, + ) + ) + df_output[col_name] = to_named_series( + real_argument, col_name, native_namespace + ) + elif not df_provided: + raise ValueError( + "String or int arguments are only possible when a " + "DataFrame or an array is provided in the `data_frame` " + "argument. No DataFrame was provided, but argument " + "'%s' is of type str or int." % field + ) + # Check validity of column name + elif argument not in df_input.columns: + if wide_mode and argument in (value_name, var_name): + continue + else: + err_msg = ( + "Value of '%s' is not the name of a column in 'data_frame'. " + "Expected one of %s but received: %s" + % (field, str(list(df_input.columns)), argument) + ) + if argument == "index": + err_msg += "\n To use the index, pass it in directly as `df.index`." + raise ValueError(err_msg) + elif length and (actual_len := len(df_input)) != length: + raise ValueError( + "All arguments should have the same length. " + "The length of column argument `df[%s]` is %d, whereas the " + "length of previously-processed arguments %s is %d" + % ( + field, + actual_len, + str(list(df_output.keys())), + length, + ) + ) + else: + col_name = str(argument) + df_output[col_name] = to_named_series( + df_input.get_column(argument), col_name + ) + # ----------------- argument is likely a column / array / list.... ------- + else: + if df_provided and hasattr(argument, "name"): + if is_pd_like and argument is nw.maybe_get_index(df_input): + if argument.name is None or argument.name in df_input.columns: + col_name = "index" + else: + col_name = argument.name + col_name = _escape_col_name( + df_input.columns, col_name, [var_name, value_name] + ) + else: + if ( + argument.name is not None + and argument.name in df_input.columns + and ( + to_named_series( + argument, argument.name, native_namespace + ) + == df_input.get_column(argument.name) + ).all() + ): + col_name = argument.name + if col_name is None: # numpy array, list... + col_name = _check_name_not_reserved(field, reserved_names) + + if length and (len_arg := len(argument)) != length: + raise ValueError( + "All arguments should have the same length. " + "The length of argument `%s` is %d, whereas the " + "length of previously-processed arguments %s is %d" + % (field, len_arg, str(list(df_output.keys())), length) + ) + + df_output[str(col_name)] = to_named_series( + x=argument, + name=str(col_name), + native_namespace=native_namespace, + ) + + # Finally, update argument with column name now that column exists + assert col_name is not None, ( + "Data-frame processing failure, likely due to a internal bug. " + "Please report this to " + "https://github.com/plotly/plotly.py/issues/new and we will try to " + "replicate and fix it." + ) + if field_name not in array_attrables: + args[field_name] = str(col_name) + elif isinstance(args[field_name], dict): + pass + else: + args[field_name][i] = str(col_name) + if field_name != "wide_variable": + wide_id_vars.add(str(col_name)) + + length = len(df_output[next(iter(df_output))]) if len(df_output) else 0 + + if native_namespace is None: + try: + import pandas as pd + + native_namespace = pd + except ImportError: + msg = "Pandas installation is required if no dataframe is provided." + raise NotImplementedError(msg) + + if ranges: + import numpy as np + + range_series = nw.new_series( + name="__placeholder__", + values=np.arange(length), + native_namespace=native_namespace, + ) + df_output.update( + {col_name: range_series.alias(col_name) for col_name in ranges} + ) + + df_output.update( + { + # constant is single value. repeat by len to avoid creating NaN on concatenating + col_name: nw.new_series( + name=col_name, + values=[constants[col_name]] * length, + native_namespace=native_namespace, + ) + for col_name in constants + } + ) + + if df_output: + df_output = nw.from_dict(df_output) + else: + try: + import pandas as pd + except ImportError: + msg = "Pandas installation is required." + raise NotImplementedError(msg) + df_output = nw.from_native(pd.DataFrame({}), eager_only=True) + return df_output, wide_id_vars + + +def build_dataframe(args, constructor): + """ + Constructs a dataframe and modifies `args` in-place. + + The argument values in `args` can be either strings corresponding to + existing columns of a dataframe, or data arrays (lists, numpy arrays, + pandas columns, series). + + Parameters + ---------- + args : OrderedDict + arguments passed to the px function and subsequently modified + constructor : graph_object trace class + the trace type selected for this figure + """ + + # make copies of all the fields via dict() and list() + for field in args: + if field in array_attrables and args[field] is not None: + if isinstance(args[field], dict): + args[field] = dict(args[field]) + elif field in ["custom_data", "hover_data"] and isinstance( + args[field], str + ): + args[field] = [args[field]] + else: + args[field] = list(args[field]) + + # Cast data_frame argument to DataFrame (it could be a numpy array, dict etc.) + df_provided = args["data_frame"] is not None + + # Flag that indicates if the resulting data_frame after parsing is pandas-like + # (in terms of resulting Narwhals DataFrame). + # True if pandas, modin.pandas or cudf DataFrame/Series instance, or converted from + # PySpark to pandas. + is_pd_like = False + + # Flag that indicates if data_frame needs to be converted to PyArrow. + # True if Ibis, DuckDB, Vaex, or implements __dataframe__ + needs_interchanging = False + + # If data_frame is provided, we parse it into a narwhals DataFrame, while accounting + # for compatibility with pandas specific paths (e.g. Index/MultiIndex case). + if df_provided: + # data_frame is pandas-like DataFrame (pandas, modin.pandas, cudf) + if nw.dependencies.is_pandas_like_dataframe(args["data_frame"]): + columns = args["data_frame"].columns # This can be multi index + args["data_frame"] = nw.from_native(args["data_frame"], eager_only=True) + is_pd_like = True + + # data_frame is pandas-like Series (pandas, modin.pandas, cudf) + elif nw.dependencies.is_pandas_like_series(args["data_frame"]): + args["data_frame"] = nw.from_native( + args["data_frame"], series_only=True + ).to_frame() + columns = args["data_frame"].columns + is_pd_like = True + + # data_frame is any other DataFrame object natively supported via Narwhals. + # With `pass_through=True`, the original object will be returned if unable to convert + # to a Narwhals DataFrame, making this condition False. + elif isinstance( + data_frame := nw.from_native( + args["data_frame"], eager_or_interchange_only=True, pass_through=True + ), + nw.DataFrame, + ): + args["data_frame"] = data_frame + needs_interchanging = nw.get_level(data_frame) == "interchange" + columns = args["data_frame"].columns + + # data_frame is any other Series object natively supported via Narwhals. + # With `pass_through=True`, the original object will be returned if unable to convert + # to a Narwhals Series, making this condition False. + elif isinstance( + series := nw.from_native( + args["data_frame"], series_only=True, pass_through=True + ), + nw.Series, + ): + args["data_frame"] = series.to_frame() + columns = args["data_frame"].columns + + # data_frame is PySpark: it does not support interchange protocol and it is not + # integrated in Narwhals. We use its native method to convert it to pandas. + elif hasattr(args["data_frame"], "toPandas"): + args["data_frame"] = nw.from_native( + args["data_frame"].toPandas(), eager_only=True + ) + columns = args["data_frame"].columns + is_pd_like = True + + # data_frame is some other object type (e.g. dict, list, ...) + # We try to import pandas, and then try to instantiate a pandas dataframe from + # this such object + else: + try: + import pandas as pd + + try: + args["data_frame"] = nw.from_native( + pd.DataFrame(args["data_frame"]) + ) + columns = args["data_frame"].columns + is_pd_like = True + except Exception: + msg = ( + f"Unable to convert data_frame of type {type(args['data_frame'])} " + "to pandas DataFrame. Please provide a supported dataframe type " + "or a type that can be passed to pd.DataFrame." + ) + + raise NotImplementedError(msg) + except ImportError: + msg = ( + f"Attempting to convert data_frame of type {type(args['data_frame'])} " + "to pandas DataFrame, but Pandas is not installed. " + "Convert it to supported dataframe type or install pandas." + ) + raise NotImplementedError(msg) + + # data_frame is not provided + else: + columns = None + + df_input: nw.DataFrame | None = args["data_frame"] + index = ( + nw.maybe_get_index(df_input) + if df_provided and not needs_interchanging + else None + ) + native_namespace = ( + nw.get_native_namespace(df_input) + if df_provided and not needs_interchanging + else None + ) + + # now we handle special cases like wide-mode or x-xor-y specification + # by rearranging args to tee things up for process_args_into_dataframe to work + no_x = args.get("x") is None + no_y = args.get("y") is None + wide_x = ( + False + if no_x + else _is_col_list(columns, args["x"], is_pd_like, native_namespace) + ) + wide_y = ( + False + if no_y + else _is_col_list(columns, args["y"], is_pd_like, native_namespace) + ) + + wide_mode = False + var_name = None # will likely be "variable" in wide_mode + wide_cross_name = None # will likely be "index" in wide_mode + value_name = None # will likely be "value" in wide_mode + hist2d_types = [go.Histogram2d, go.Histogram2dContour] + hist1d_orientation = constructor == go.Histogram or "ecdfmode" in args + if constructor in cartesians: + if wide_x and wide_y: + raise ValueError( + "Cannot accept list of column references or list of columns for both `x` and `y`." + ) + if df_provided and no_x and no_y: + wide_mode = True + if is_pd_like and isinstance(columns, native_namespace.MultiIndex): + raise TypeError( + f"Data frame columns is a {native_namespace.__name__} MultiIndex. " + f"{native_namespace.__name__} MultiIndex is not supported by plotly " + "express at the moment." + ) + args["wide_variable"] = list(columns) + if is_pd_like and isinstance(columns, native_namespace.Index): + var_name = columns.name + else: + var_name = None + if var_name in [None, "value", "index"] or var_name in columns: + var_name = "variable" + if constructor == go.Funnel: + wide_orientation = args.get("orientation") or "h" + else: + wide_orientation = args.get("orientation") or "v" + args["orientation"] = wide_orientation + args["wide_cross"] = None + elif wide_x != wide_y: + wide_mode = True + args["wide_variable"] = args["y"] if wide_y else args["x"] + if df_provided and is_pd_like and args["wide_variable"] is columns: + var_name = columns.name + if is_pd_like and isinstance(args["wide_variable"], native_namespace.Index): + args["wide_variable"] = list(args["wide_variable"]) + if var_name in [None, "value", "index"] or ( + df_provided and var_name in columns + ): + var_name = "variable" + if hist1d_orientation: + wide_orientation = "v" if wide_x else "h" + else: + wide_orientation = "v" if wide_y else "h" + args["y" if wide_y else "x"] = None + args["wide_cross"] = None + if not no_x and not no_y: + wide_cross_name = "__x__" if wide_y else "__y__" + + if wide_mode: + value_name = _escape_col_name(columns, "value", []) + var_name = _escape_col_name(columns, var_name, []) + + # If the data_frame has interchange-only support levelin Narwhals, then we need to + # convert it to a full support level backend. + # Hence we convert requires Interchange to PyArrow. + if needs_interchanging: + if wide_mode: + args["data_frame"] = nw.from_native( + args["data_frame"].to_arrow(), eager_only=True + ) + else: + # Save precious resources by only interchanging columns that are + # actually going to be plotted. This is tricky to do in the general case, + # because Plotly allows calls like `px.line(df, x='x', y=['y1', df['y1']])`, + # but interchange-only objects (e.g. DuckDB) don't typically have a concept + # of self-standing Series. It's more important to perform project pushdown + # here seeing as we're materialising to an (eager) PyArrow table. + necessary_columns = { + i for i in args.values() if isinstance(i, str) and i in columns + } + for field in args: + if args[field] is not None and field in array_attrables: + necessary_columns.update(i for i in args[field] if i in columns) + columns = list(necessary_columns) + args["data_frame"] = nw.from_native( + args["data_frame"].select(columns).to_arrow(), eager_only=True + ) + import pyarrow as pa + + native_namespace = pa + missing_bar_dim = None + if ( + constructor in [go.Scatter, go.Bar, go.Funnel] + hist2d_types + and not hist1d_orientation + ): + if not wide_mode and (no_x != no_y): + for ax in ["x", "y"]: + if args.get(ax) is None: + args[ax] = ( + index + if index is not None + else Range( + label=_escape_col_name(columns, ax, [var_name, value_name]) + ) + ) + if constructor == go.Bar: + missing_bar_dim = ax + else: + if args["orientation"] is None: + args["orientation"] = "v" if ax == "x" else "h" + if wide_mode and wide_cross_name is None: + if no_x != no_y and args["orientation"] is None: + args["orientation"] = "v" if no_x else "h" + if df_provided and is_pd_like and index is not None: + if isinstance(index, native_namespace.MultiIndex): + raise TypeError( + f"Data frame index is a {native_namespace.__name__} MultiIndex. " + f"{native_namespace.__name__} MultiIndex is not supported by " + "plotly express at the moment." + ) + args["wide_cross"] = index + else: + args["wide_cross"] = Range( + label=_escape_col_name(columns, "index", [var_name, value_name]) + ) + + no_color = False + if isinstance(args.get("color"), str) and args["color"] == NO_COLOR: + no_color = True + args["color"] = None + # now that things have been prepped, we do the systematic rewriting of `args` + + df_output, wide_id_vars = process_args_into_dataframe( + args, + wide_mode, + var_name, + value_name, + is_pd_like, + native_namespace, + ) + df_output: nw.DataFrame + # now that `df_output` exists and `args` contains only references, we complete + # the special-case and wide-mode handling by further rewriting args and/or mutating + # df_output + + count_name = _escape_col_name(df_output.columns, "count", [var_name, value_name]) + if not wide_mode and missing_bar_dim and constructor == go.Bar: + # now that we've populated df_output, we check to see if the non-missing + # dimension is categorical: if so, then setting the missing dimension to a + # constant 1 is a less-insane thing to do than setting it to the index by + # default and we let the normal auto-orientation-code do its thing later + other_dim = "x" if missing_bar_dim == "y" else "y" + if not _is_continuous(df_output, args[other_dim]): + args[missing_bar_dim] = count_name + df_output = df_output.with_columns(nw.lit(1).alias(count_name)) + else: + # on the other hand, if the non-missing dimension is continuous, then we + # can use this information to override the normal auto-orientation code + if args["orientation"] is None: + args["orientation"] = "v" if missing_bar_dim == "x" else "h" + + if constructor in hist2d_types: + del args["orientation"] + + if wide_mode: + # at this point, `df_output` is semi-long/semi-wide, but we know which columns + # are which, so we melt it and reassign `args` to refer to the newly-tidy + # columns, keeping track of various names and manglings set up above + wide_value_vars = [c for c in args["wide_variable"] if c not in wide_id_vars] + del args["wide_variable"] + if wide_cross_name == "__x__": + wide_cross_name = args["x"] + elif wide_cross_name == "__y__": + wide_cross_name = args["y"] + else: + wide_cross_name = args["wide_cross"] + del args["wide_cross"] + dtype = None + for v in wide_value_vars: + v_dtype = df_output.get_column(v).dtype + v_dtype = "number" if v_dtype.is_numeric() else str(v_dtype) + if dtype is None: + dtype = v_dtype + elif dtype != v_dtype: + raise ValueError( + "Plotly Express cannot process wide-form data with columns of different type." + ) + df_output = df_output.unpivot( + index=wide_id_vars, + on=wide_value_vars, + variable_name=var_name, + value_name=value_name, + ) + assert len(df_output.columns) == len(set(df_output.columns)), ( + "Wide-mode name-inference failure, likely due to a internal bug. " + "Please report this to " + "https://github.com/plotly/plotly.py/issues/new and we will try to " + "replicate and fix it." + ) + df_output = df_output.with_columns(nw.col(var_name).cast(nw.String)) + orient_v = wide_orientation == "v" + + if hist1d_orientation: + args["x" if orient_v else "y"] = value_name + args["y" if orient_v else "x"] = wide_cross_name + args["color"] = args["color"] or var_name + elif constructor in [go.Scatter, go.Funnel] + hist2d_types: + args["x" if orient_v else "y"] = wide_cross_name + args["y" if orient_v else "x"] = value_name + if constructor != go.Histogram2d: + args["color"] = args["color"] or var_name + if "line_group" in args: + args["line_group"] = args["line_group"] or var_name + elif constructor == go.Bar: + if _is_continuous(df_output, value_name): + args["x" if orient_v else "y"] = wide_cross_name + args["y" if orient_v else "x"] = value_name + args["color"] = args["color"] or var_name + else: + args["x" if orient_v else "y"] = value_name + args["y" if orient_v else "x"] = count_name + df_output = df_output.with_columns(nw.lit(1).alias(count_name)) + args["color"] = args["color"] or var_name + elif constructor in [go.Violin, go.Box]: + args["x" if orient_v else "y"] = wide_cross_name or var_name + args["y" if orient_v else "x"] = value_name + + if hist1d_orientation and constructor == go.Scatter: + if args["x"] is not None and args["y"] is not None: + args["histfunc"] = "sum" + elif args["x"] is None: + args["histfunc"] = None + args["orientation"] = "h" + args["x"] = count_name + df_output = df_output.with_columns(nw.lit(1).alias(count_name)) + else: + args["histfunc"] = None + args["orientation"] = "v" + args["y"] = count_name + df_output = df_output.with_columns(nw.lit(1).alias(count_name)) + + if no_color: + args["color"] = None + args["data_frame"] = df_output + return args + + +def _check_dataframe_all_leaves(df: nw.DataFrame) -> None: + cols = df.columns + df_sorted = df.sort(by=cols, descending=False, nulls_last=True) + null_mask = df_sorted.select(nw.all().is_null()) + df_sorted = df_sorted.select(nw.all().cast(nw.String())) + null_indices_mask = null_mask.select( + null_mask=nw.any_horizontal(nw.all()) + ).get_column("null_mask") + + null_mask_filtered = null_mask.filter(null_indices_mask) + if not null_mask_filtered.is_empty(): + for col_idx in range(1, null_mask_filtered.shape[1]): + # For each row, if a True value is encountered, then check that + # all values in subsequent columns are also True + null_entries_with_non_null_children = ( + ~null_mask_filtered[:, col_idx] & null_mask_filtered[:, col_idx - 1] + ) + if nw.to_py_scalar(null_entries_with_non_null_children.any()): + row_idx = null_entries_with_non_null_children.to_list().index(True) + raise ValueError( + "None entries cannot have not-None children", + df_sorted.row(row_idx), + ) + + fill_series = nw.new_series( + name="fill_value", + values=[""] * len(df_sorted), + dtype=nw.String(), + native_namespace=nw.get_native_namespace(df_sorted), + ) + df_sorted = df_sorted.with_columns( + **{ + c: df_sorted.get_column(c).zip_with(~null_mask.get_column(c), fill_series) + for c in cols + } + ) + + # Conversion to list is due to python native vs pyarrow scalars + row_strings = ( + df_sorted.select( + row_strings=nw.concat_str(cols, separator="", ignore_nulls=False) + ) + .get_column("row_strings") + .to_list() + ) + + null_indices = set(null_indices_mask.arg_true().to_list()) + for i, (current_row, next_row) in enumerate( + zip(row_strings[:-1], row_strings[1:]), start=1 + ): + if (next_row in current_row) and (i in null_indices): + raise ValueError( + "Non-leaves rows are not permitted in the dataframe \n", + df_sorted.row(i), + "is not a leaf.", + ) + + +def process_dataframe_hierarchy(args): + """ + Build dataframe for sunburst, treemap, or icicle when the path argument is provided. + """ + df: nw.DataFrame = args["data_frame"] + path = args["path"][::-1] + _check_dataframe_all_leaves(df[path[::-1]]) + discrete_color = not _is_continuous(df, args["color"]) if args["color"] else False + + df = df.lazy() + + new_path = [col_name + "_path_copy" for col_name in path] + df = df.with_columns( + nw.col(col_name).alias(new_col_name) + for new_col_name, col_name in zip(new_path, path) + ) + path = new_path + # ------------ Define aggregation functions -------------------------------- + agg_f = {} + if args["values"]: + try: + df = df.with_columns(nw.col(args["values"]).cast(nw.Float64())) + + except Exception: # pandas, Polars and pyarrow exception types are different + raise ValueError( + "Column `%s` of `df` could not be converted to a numerical data type." + % args["values"] + ) + + if args["color"] and args["color"] == args["values"]: + new_value_col_name = args["values"] + "_sum" + df = df.with_columns(nw.col(args["values"]).alias(new_value_col_name)) + args["values"] = new_value_col_name + count_colname = args["values"] + else: + # we need a count column for the first groupby and the weighted mean of color + # trick to be sure the col name is unused: take the sum of existing names + columns = df.collect_schema().names() + count_colname = ( + "count" if "count" not in columns else "".join([str(el) for el in columns]) + ) + # we can modify df because it's a copy of the px argument + df = df.with_columns(nw.lit(1).alias(count_colname)) + args["values"] = count_colname + + # Since count_colname is always in agg_f, it can be used later to normalize color + # in the continuous case after some gymnastic + agg_f[count_colname] = nw.sum(count_colname) + + discrete_aggs = [] + continuous_aggs = [] + + n_unique_token = _generate_temporary_column_name( + n_bytes=16, columns=df.collect_schema().names() + ) + + # In theory, for discrete columns aggregation, we should have a way to do + # `.agg(nw.col(x).unique())` in group_by and successively unpack/parse it as: + # ``` + # (nw.when(nw.col(x).list.len()==1) + # .then(nw.col(x).list.first()) + # .otherwise(nw.lit("(?)")) + # ) + # ``` + # which replicates the original pandas only codebase: + # ``` + # def discrete_agg(x): + # uniques = x.unique() + # return uniques[0] if len(uniques) == 1 else "(?)" + # + # df.groupby(path[i:]).agg(...) + # ``` + # However this is not possible, therefore the following workaround is provided. + # We make two aggregations for the same column: + # - take the max value + # - take the number of unique values + # Finally, after the group by statement, it is unpacked via: + # ``` + # (nw.when(nw.col(col_n_unique) == 1) + # .then(nw.col(col_max_value)) # which is the unique value + # .otherwise(nw.lit("(?)")) + # ) + # ``` + + if args["color"]: + if discrete_color: + discrete_aggs.append(args["color"]) + agg_f[args["color"]] = nw.col(args["color"]).max() + agg_f[f"{args['color']}{n_unique_token}"] = ( + nw.col(args["color"]) + .n_unique() + .alias(f"{args['color']}{n_unique_token}") + ) + else: + # This first needs to be multiplied by `count_colname` + continuous_aggs.append(args["color"]) + + agg_f[args["color"]] = nw.sum(args["color"]) + + # Other columns (for color, hover_data, custom_data etc.) + cols = list(set(df.collect_schema().names()).difference(path)) + df = df.with_columns(nw.col(c).cast(nw.String()) for c in cols if c not in agg_f) + + for col in cols: # for hover_data, custom_data etc. + if col not in agg_f: + # Similar trick as above + discrete_aggs.append(col) + agg_f[col] = nw.col(col).max() + agg_f[f"{col}{n_unique_token}"] = ( + nw.col(col).n_unique().alias(f"{col}{n_unique_token}") + ) + # Avoid collisions with reserved names - columns in the path have been copied already + cols = list(set(cols) - set(["labels", "parent", "id"])) + # ---------------------------------------------------------------------------- + all_trees = [] + + if args["color"] and not discrete_color: + df = df.with_columns( + (nw.col(args["color"]) * nw.col(count_colname)).alias(args["color"]) + ) + + def post_agg(dframe: nw.LazyFrame, continuous_aggs, discrete_aggs) -> nw.LazyFrame: + """ + - continuous_aggs is either [] or [args["color"]] + - discrete_aggs is either [args["color"], ] or [] + """ + return dframe.with_columns( + *[nw.col(col) / nw.col(count_colname) for col in continuous_aggs], + *[ + ( + nw.when(nw.col(f"{col}{n_unique_token}") == 1) + .then(nw.col(col)) + .otherwise(nw.lit("(?)")) + .alias(col) + ) + for col in discrete_aggs + ], + ).drop([f"{col}{n_unique_token}" for col in discrete_aggs]) + + for i, level in enumerate(path): + dfg = ( + df.group_by(path[i:], drop_null_keys=True) + .agg(**agg_f) + .pipe(post_agg, continuous_aggs, discrete_aggs) + ) + + # Path label massaging + df_tree = dfg.with_columns( + *cols, + labels=nw.col(level).cast(nw.String()), + parent=nw.lit(""), + id=nw.col(level).cast(nw.String()), + ) + if i < len(path) - 1: + _concat_str_token = _generate_temporary_column_name( + n_bytes=16, columns=[*cols, "labels", "parent", "id"] + ) + df_tree = ( + df_tree.with_columns( + nw.concat_str( + [ + nw.col(path[j]).cast(nw.String()) + for j in range(len(path) - 1, i, -1) + ], + separator="/", + ).alias(_concat_str_token) + ) + .with_columns( + parent=nw.concat_str( + [nw.col(_concat_str_token), nw.col("parent")], separator="/" + ), + id=nw.concat_str( + [nw.col(_concat_str_token), nw.col("id")], separator="/" + ), + ) + .drop(_concat_str_token) + ) + + # strip "/" if at the end of the string, equivalent to `.str.rstrip` + df_tree = df_tree.with_columns( + parent=nw.col("parent").str.replace("/?$", "").str.replace("^/?", "") + ) + + all_trees.append(df_tree.select(*["labels", "parent", "id", *cols])) + + df_all_trees = nw.maybe_reset_index(nw.concat(all_trees, how="vertical").collect()) + + # we want to make sure than (?) is the first color of the sequence + if args["color"] and discrete_color: + sort_col_name = "sort_color_if_discrete_color" + while sort_col_name in df_all_trees.columns: + sort_col_name += "0" + df_all_trees = df_all_trees.with_columns( + nw.col(args["color"]).cast(nw.String()).alias(sort_col_name) + ).sort(by=sort_col_name, nulls_last=True) + + # Now modify arguments + args["data_frame"] = df_all_trees + args["path"] = None + args["ids"] = "id" + args["names"] = "labels" + args["parents"] = "parent" + if args["color"]: + if not args["hover_data"]: + args["hover_data"] = [args["color"]] + elif isinstance(args["hover_data"], dict): + if not args["hover_data"].get(args["color"]): + args["hover_data"][args["color"]] = (True, None) + else: + args["hover_data"].append(args["color"]) + return args + + +def process_dataframe_timeline(args): + """ + Massage input for bar traces for px.timeline() + """ + args["is_timeline"] = True + if args["x_start"] is None or args["x_end"] is None: + raise ValueError("Both x_start and x_end are required") + + df: nw.DataFrame = args["data_frame"] + schema = df.schema + to_convert_to_datetime = [ + col + for col in [args["x_start"], args["x_end"]] + if schema[col] != nw.Datetime and schema[col] != nw.Date + ] + + if to_convert_to_datetime: + try: + df = df.with_columns(nw.col(to_convert_to_datetime).str.to_datetime()) + except Exception as exc: + raise TypeError( + "Both x_start and x_end must refer to data convertible to datetimes." + ) from exc + + # note that we are not adding any columns to the data frame here, so no risk of overwrite + args["data_frame"] = df.with_columns( + (nw.col(args["x_end"]) - nw.col(args["x_start"])) + .dt.total_milliseconds() + .alias(args["x_end"]) + ) + args["x"] = args["x_end"] + args["base"] = args["x_start"] + del args["x_start"], args["x_end"] + return args + + +def process_dataframe_pie(args, trace_patch): + import numpy as np + + names = args.get("names") + if names is None: + return args, trace_patch + order_in = args["category_orders"].get(names, {}).copy() + if not order_in: + return args, trace_patch + df: nw.DataFrame = args["data_frame"] + trace_patch["sort"] = False + trace_patch["direction"] = "clockwise" + uniques = df.get_column(names).unique(maintain_order=True).to_list() + order = [x for x in OrderedDict.fromkeys(list(order_in) + uniques) if x in uniques] + + # Sort args['data_frame'] by column `names` according to order `order`. + token = nw.generate_temporary_column_name(8, df.columns) + args["data_frame"] = ( + df.with_columns( + nw.col(names) + .replace_strict(order, np.arange(len(order)), return_dtype=nw.UInt32) + .alias(token) + ) + .sort(token) + .drop(token) + ) + return args, trace_patch + + +def infer_config(args, constructor, trace_patch, layout_patch): + attrs = [k for k in direct_attrables + array_attrables if k in args] + grouped_attrs = [] + df: nw.DataFrame = args["data_frame"] + + # Compute sizeref + sizeref = 0 + if "size" in args and args["size"]: + sizeref = ( + nw.to_py_scalar(df.get_column(args["size"]).max()) / args["size_max"] ** 2 + ) + + # Compute color attributes and grouping attributes + if "color" in args: + if "color_continuous_scale" in args: + if "color_discrete_sequence" not in args: + attrs.append("color") + else: + if args["color"] and _is_continuous(df, args["color"]): + attrs.append("color") + args["color_is_continuous"] = True + elif constructor in [go.Sunburst, go.Treemap, go.Icicle]: + attrs.append("color") + args["color_is_continuous"] = False + else: + grouped_attrs.append("marker.color") + elif "line_group" in args or constructor == go.Histogram2dContour: + grouped_attrs.append("line.color") + elif constructor in [go.Pie, go.Funnelarea]: + attrs.append("color") + if args["color"]: + if args["hover_data"] is None: + args["hover_data"] = [] + args["hover_data"].append(args["color"]) + else: + grouped_attrs.append("marker.color") + + show_colorbar = bool( + "color" in attrs + and args["color"] + and constructor not in [go.Pie, go.Funnelarea] + and ( + constructor not in [go.Treemap, go.Sunburst, go.Icicle] + or args.get("color_is_continuous") + ) + ) + else: + show_colorbar = False + + if "line_dash" in args: + grouped_attrs.append("line.dash") + + if "symbol" in args: + grouped_attrs.append("marker.symbol") + + if "pattern_shape" in args: + if constructor in [go.Scatter]: + grouped_attrs.append("fillpattern.shape") + else: + grouped_attrs.append("marker.pattern.shape") + + if "orientation" in args: + has_x = args["x"] is not None + has_y = args["y"] is not None + if args["orientation"] is None: + if constructor in [go.Histogram, go.Scatter]: + if has_y and not has_x: + args["orientation"] = "h" + elif constructor in [go.Violin, go.Box, go.Bar, go.Funnel]: + if has_x and not has_y: + args["orientation"] = "h" + + if args["orientation"] is None and has_x and has_y: + x_is_continuous = _is_continuous(df, args["x"]) + y_is_continuous = _is_continuous(df, args["y"]) + if x_is_continuous and not y_is_continuous: + args["orientation"] = "h" + if y_is_continuous and not x_is_continuous: + args["orientation"] = "v" + + if args["orientation"] is None: + args["orientation"] = "v" + + if constructor == go.Histogram: + if has_x and has_y and args["histfunc"] is None: + args["histfunc"] = trace_patch["histfunc"] = "sum" + + orientation = args["orientation"] + nbins = args["nbins"] + trace_patch["nbinsx"] = nbins if orientation == "v" else None + trace_patch["nbinsy"] = None if orientation == "v" else nbins + trace_patch["bingroup"] = "x" if orientation == "v" else "y" + trace_patch["orientation"] = args["orientation"] + + if constructor in [go.Violin, go.Box]: + mode = "boxmode" if constructor == go.Box else "violinmode" + if layout_patch[mode] is None and args["color"] is not None: + if args["y"] == args["color"] and args["orientation"] == "h": + layout_patch[mode] = "overlay" + elif args["x"] == args["color"] and args["orientation"] == "v": + layout_patch[mode] = "overlay" + if layout_patch[mode] is None: + layout_patch[mode] = "group" + + if ( + constructor == go.Histogram2d + and args["z"] is not None + and args["histfunc"] is None + ): + args["histfunc"] = trace_patch["histfunc"] = "sum" + + if args.get("text_auto", False) is not False: + if constructor in [go.Histogram2d, go.Histogram2dContour]: + letter = "z" + elif constructor == go.Bar: + letter = "y" if args["orientation"] == "v" else "x" + else: + letter = "value" + if args["text_auto"] is True: + trace_patch["texttemplate"] = "%{" + letter + "}" + else: + trace_patch["texttemplate"] = "%{" + letter + ":" + args["text_auto"] + "}" + + if constructor in [go.Histogram2d, go.Densitymap, go.Densitymapbox]: + show_colorbar = True + trace_patch["coloraxis"] = "coloraxis1" + + if "opacity" in args: + if args["opacity"] is None: + if "barmode" in args and args["barmode"] == "overlay": + trace_patch["marker"] = dict(opacity=0.5) + elif constructor in [ + go.Densitymap, + go.Densitymapbox, + go.Pie, + go.Funnel, + go.Funnelarea, + ]: + trace_patch["opacity"] = args["opacity"] + else: + trace_patch["marker"] = dict(opacity=args["opacity"]) + if ( + "line_group" in args or "line_dash" in args + ): # px.line, px.line_*, px.area, px.ecdf + modes = set() + if args.get("lines", True): + modes.add("lines") + if args.get("text") or args.get("symbol") or args.get("markers"): + modes.add("markers") + if args.get("text"): + modes.add("text") + if len(modes) == 0: + modes.add("lines") + trace_patch["mode"] = "+".join(sorted(modes)) + elif constructor != go.Splom and ( + "symbol" in args or constructor in [go.Scattermap, go.Scattermapbox] + ): + trace_patch["mode"] = "markers" + ("+text" if args["text"] else "") + + if "line_shape" in args: + trace_patch["line"] = dict(shape=args["line_shape"]) + elif "ecdfmode" in args: + trace_patch["line"] = dict( + shape="vh" if args["ecdfmode"] == "reversed" else "hv" + ) + + if "geojson" in args: + trace_patch["featureidkey"] = args["featureidkey"] + trace_patch["geojson"] = ( + args["geojson"] + if not hasattr(args["geojson"], "__geo_interface__") # for geopandas + else args["geojson"].__geo_interface__ + ) + + # Compute marginal attribute: copy to appropriate marginal_* + if "marginal" in args: + position = "marginal_x" if args["orientation"] == "v" else "marginal_y" + other_position = "marginal_x" if args["orientation"] == "h" else "marginal_y" + args[position] = args["marginal"] + args[other_position] = None + + # Ignore facet rows and columns when data frame is empty so as to prevent nrows/ncols equaling 0 + if df.is_empty(): + args["facet_row"] = args["facet_col"] = None + + # If both marginals and faceting are specified, faceting wins + if args.get("facet_col") is not None and args.get("marginal_y") is not None: + args["marginal_y"] = None + + if args.get("facet_row") is not None and args.get("marginal_x") is not None: + args["marginal_x"] = None + + # facet_col_wrap only works if no marginals or row faceting is used + if ( + args.get("marginal_x") is not None + or args.get("marginal_y") is not None + or args.get("facet_row") is not None + ): + args["facet_col_wrap"] = 0 + + if "trendline" in args and args["trendline"] is not None: + if args["trendline"] not in trendline_functions: + raise ValueError( + "Value '%s' for `trendline` must be one of %s" + % (args["trendline"], trendline_functions.keys()) + ) + + if "trendline_options" in args and args["trendline_options"] is None: + args["trendline_options"] = dict() + + if "ecdfnorm" in args: + if args.get("ecdfnorm", None) not in [None, "percent", "probability"]: + raise ValueError( + "`ecdfnorm` must be one of None, 'percent' or 'probability'. " + + "'%s' was provided." % args["ecdfnorm"] + ) + args["histnorm"] = args["ecdfnorm"] + + # Compute applicable grouping attributes + grouped_attrs.extend([k for k in group_attrables if k in args]) + + # Create grouped mappings + grouped_mappings = [make_mapping(args, a) for a in grouped_attrs] + + # Create trace specs + trace_specs = make_trace_spec(args, constructor, attrs, trace_patch) + return trace_specs, grouped_mappings, sizeref, show_colorbar + + +def get_groups_and_orders(args, grouper): + """ + `orders` is the user-supplied ordering with the remaining data-frame-supplied + ordering appended if the column is used for grouping. It includes anything the user + gave, for any variable, including values not present in the dataset. It's a dict + where the keys are e.g. "x" or "color" + + `groups` is the dicts of groups, ordered by the order above. Its keys are + tuples like [("value1", ""), ("value2", "")] where each tuple contains the name + of a single dimension-group + """ + orders = {} if "category_orders" not in args else args["category_orders"].copy() + df: nw.DataFrame = args["data_frame"] + # figure out orders and what the single group name would be if there were one + single_group_name = [] + unique_cache = dict() + + for i, col in enumerate(grouper): + if col == one_group: + single_group_name.append("") + else: + if col not in unique_cache: + unique_cache[col] = ( + df.get_column(col).unique(maintain_order=True).to_list() + ) + uniques = unique_cache[col] + if len(uniques) == 1: + single_group_name.append(uniques[0]) + if col not in orders: + orders[col] = uniques + else: + orders[col] = list(OrderedDict.fromkeys(list(orders[col]) + uniques)) + + if len(single_group_name) == len(grouper): + # we have a single group, so we can skip all group-by operations! + groups = {tuple(single_group_name): df} + else: + required_grouper = [group for group in orders if group in grouper] + grouped = dict(df.group_by(required_grouper, drop_null_keys=True).__iter__()) + + sorted_group_names = sorted( + grouped.keys(), + key=lambda values: [ + orders[group].index(value) if value in orders[group] else -1 + for group, value in zip(required_grouper, values) + ], + ) + + # calculate the full group_names by inserting "" in the tuple index for one_group groups + full_sorted_group_names = [ + tuple( + [ + ( + "" + if col == one_group + else sub_group_names[required_grouper.index(col)] + ) + for col in grouper + ] + ) + for sub_group_names in sorted_group_names + ] + + groups = { + sf: grouped[s] for sf, s in zip(full_sorted_group_names, sorted_group_names) + } + return groups, orders + + +def make_figure(args, constructor, trace_patch=None, layout_patch=None): + trace_patch = trace_patch or {} + layout_patch = layout_patch or {} + apply_default_cascade(args) + + args = build_dataframe(args, constructor) + if constructor in [go.Treemap, go.Sunburst, go.Icicle] and args["path"] is not None: + args = process_dataframe_hierarchy(args) + if constructor in [go.Pie]: + args, trace_patch = process_dataframe_pie(args, trace_patch) + if constructor == "timeline": + constructor = go.Bar + args = process_dataframe_timeline(args) + + # If we have marginal histograms, set barmode to "overlay" + if "histogram" in [args.get("marginal_x"), args.get("marginal_y")]: + layout_patch["barmode"] = "overlay" + + trace_specs, grouped_mappings, sizeref, show_colorbar = infer_config( + args, constructor, trace_patch, layout_patch + ) + grouper = [x.grouper or one_group for x in grouped_mappings] or [one_group] + groups, orders = get_groups_and_orders(args, grouper) + + col_labels = [] + row_labels = [] + nrows = ncols = 1 + for m in grouped_mappings: + if m.grouper not in orders: + m.val_map[""] = m.sequence[0] + else: + sorted_values = orders[m.grouper] + if m.facet == "col": + prefix = get_label(args, args["facet_col"]) + "=" + col_labels = [prefix + str(s) for s in sorted_values] + ncols = len(col_labels) + if m.facet == "row": + prefix = get_label(args, args["facet_row"]) + "=" + row_labels = [prefix + str(s) for s in sorted_values] + nrows = len(row_labels) + for val in sorted_values: + if val not in m.val_map: # always False if it's an IdentityMap + m.val_map[val] = m.sequence[len(m.val_map) % len(m.sequence)] + + subplot_type = _subplot_type_for_trace_type(constructor().type) + + trace_names_by_frame = {} + frames = OrderedDict() + trendline_rows = [] + trace_name_labels = None + facet_col_wrap = args.get("facet_col_wrap", 0) + for group_name, group in groups.items(): + mapping_labels = OrderedDict() + trace_name_labels = OrderedDict() + frame_name = "" + for col, val, m in zip(grouper, group_name, grouped_mappings): + if col != one_group: + key = get_label(args, col) + if not isinstance(m.val_map, IdentityMap): + mapping_labels[key] = str(val) + if m.show_in_trace_name: + trace_name_labels[key] = str(val) + if m.variable == "animation_frame": + frame_name = val + trace_name = ", ".join(trace_name_labels.values()) + if frame_name not in trace_names_by_frame: + trace_names_by_frame[frame_name] = set() + trace_names = trace_names_by_frame[frame_name] + + for trace_spec in trace_specs: + # Create the trace + trace = trace_spec.constructor(name=trace_name) + if trace_spec.constructor not in [ + go.Parcats, + go.Parcoords, + go.Choropleth, + go.Choroplethmap, + go.Choroplethmapbox, + go.Densitymap, + go.Densitymapbox, + go.Histogram2d, + go.Sunburst, + go.Treemap, + go.Icicle, + ]: + trace.update( + legendgroup=trace_name, + showlegend=(trace_name != "" and trace_name not in trace_names), + ) + + # Set 'offsetgroup' only in group barmode (or if no barmode is set) + barmode = layout_patch.get("barmode") + if trace_spec.constructor in [go.Bar, go.Box, go.Violin, go.Histogram] and ( + barmode == "group" or barmode is None + ): + trace.update(alignmentgroup=True, offsetgroup=trace_name) + trace_names.add(trace_name) + + # Init subplot row/col + trace._subplot_row = 1 + trace._subplot_col = 1 + + for i, m in enumerate(grouped_mappings): + val = group_name[i] + try: + m.updater(trace, m.val_map[val]) # covers most cases + except ValueError: + # this catches some odd cases like marginals + if ( + trace_spec != trace_specs[0] + and ( + trace_spec.constructor in [go.Violin, go.Box] + and m.variable in ["symbol", "pattern", "dash"] + ) + or ( + trace_spec.constructor in [go.Histogram] + and m.variable in ["symbol", "dash"] + ) + ): + pass + elif ( + trace_spec != trace_specs[0] + and trace_spec.constructor in [go.Histogram] + and m.variable == "color" + ): + trace.update(marker=dict(color=m.val_map[val])) + elif ( + trace_spec.constructor + in [go.Choropleth, go.Choroplethmap, go.Choroplethmapbox] + and m.variable == "color" + ): + trace.update( + z=[1] * len(group), + colorscale=[m.val_map[val]] * 2, + showscale=False, + showlegend=True, + ) + else: + raise + + # Find row for trace, handling facet_row and marginal_x + if m.facet == "row": + row = m.val_map[val] + else: + if ( + args.get("marginal_x") is not None # there is a marginal + and trace_spec.marginal != "x" # and we're not it + ): + row = 2 + else: + row = 1 + + # Find col for trace, handling facet_col and marginal_y + if m.facet == "col": + col = m.val_map[val] + if facet_col_wrap: # assumes no facet_row, no marginals + row = 1 + ((col - 1) // facet_col_wrap) + col = 1 + ((col - 1) % facet_col_wrap) + else: + if trace_spec.marginal == "y": + col = 2 + else: + col = 1 + + if row > 1: + trace._subplot_row = row + + if col > 1: + trace._subplot_col = col + if ( + trace_specs[0].constructor == go.Histogram2dContour + and trace_spec.constructor == go.Box + and trace.line.color + ): + trace.update(marker=dict(color=trace.line.color)) + + if "ecdfmode" in args: + base = args["x"] if args["orientation"] == "v" else args["y"] + var = args["x"] if args["orientation"] == "h" else args["y"] + ascending = args.get("ecdfmode", "standard") != "reversed" + group = group.sort(by=base, descending=not ascending, nulls_last=True) + group_sum = group.get_column( + var + ).sum() # compute here before next line mutates + group = group.with_columns(nw.col(var).cum_sum().alias(var)) + if not ascending: + group = group.sort(by=base, descending=False, nulls_last=True) + + if args.get("ecdfmode", "standard") == "complementary": + group = group.with_columns((group_sum - nw.col(var)).alias(var)) + + if args["ecdfnorm"] == "probability": + group = group.with_columns(nw.col(var) / group_sum) + elif args["ecdfnorm"] == "percent": + group = group.with_columns((nw.col(var) / group_sum) * 100.0) + + patch, fit_results = make_trace_kwargs( + args, trace_spec, group, mapping_labels.copy(), sizeref + ) + trace.update(patch) + if fit_results is not None: + trendline_rows.append(mapping_labels.copy()) + trendline_rows[-1]["px_fit_results"] = fit_results + if frame_name not in frames: + frames[frame_name] = dict(data=[], name=frame_name) + frames[frame_name]["data"].append(trace) + frame_list = [f for f in frames.values()] + if len(frame_list) > 1: + frame_list = sorted( + frame_list, key=lambda f: orders[args["animation_frame"]].index(f["name"]) + ) + + if show_colorbar: + colorvar = ( + "z" + if constructor in [go.Histogram2d, go.Densitymap, go.Densitymapbox] + else "color" + ) + range_color = args["range_color"] or [None, None] + + colorscale_validator = ColorscaleValidator("colorscale", "make_figure") + layout_patch["coloraxis1"] = dict( + colorscale=colorscale_validator.validate_coerce( + args["color_continuous_scale"] + ), + cmid=args["color_continuous_midpoint"], + cmin=range_color[0], + cmax=range_color[1], + colorbar=dict( + title_text=get_decorated_label(args, args[colorvar], colorvar) + ), + ) + for v in ["height", "width"]: + if args[v]: + layout_patch[v] = args[v] + layout_patch["legend"] = dict(tracegroupgap=0) + if trace_name_labels: + layout_patch["legend"]["title_text"] = ", ".join(trace_name_labels) + if args["title"]: + layout_patch["title_text"] = args["title"] + elif args["template"].layout.margin.t is None: + layout_patch["margin"] = {"t": 60} + if args["subtitle"]: + layout_patch["title_subtitle_text"] = args["subtitle"] + if ( + "size" in args + and args["size"] + and args["template"].layout.legend.itemsizing is None + ): + layout_patch["legend"]["itemsizing"] = "constant" + + if facet_col_wrap: + nrows = math.ceil(ncols / facet_col_wrap) + ncols = min(ncols, facet_col_wrap) + + if args.get("marginal_x") is not None: + nrows += 1 + + if args.get("marginal_y") is not None: + ncols += 1 + + fig = init_figure( + args, subplot_type, frame_list, nrows, ncols, col_labels, row_labels + ) + + # Position traces in subplots + for frame in frame_list: + for trace in frame["data"]: + if isinstance(trace, go.Splom): + # Special case that is not compatible with make_subplots + continue + + _set_trace_grid_reference( + trace, + fig.layout, + fig._grid_ref, + nrows - trace._subplot_row + 1, + trace._subplot_col, + ) + + # Add traces, layout and frames to figure + fig.add_traces(frame_list[0]["data"] if len(frame_list) > 0 else []) + fig.update_layout(layout_patch) + if "template" in args and args["template"] is not None: + fig.update_layout(template=args["template"], overwrite=True) + for f in frame_list: + f["name"] = str(f["name"]) + fig.frames = frame_list if len(frames) > 1 else [] + + if args.get("trendline") and args.get("trendline_scope", "trace") == "overall": + trendline_spec = make_trendline_spec(args, constructor) + trendline_trace = trendline_spec.constructor( + name="Overall Trendline", legendgroup="Overall Trendline", showlegend=False + ) + if "line" not in trendline_spec.trace_patch: # no color override + for m in grouped_mappings: + if m.variable == "color": + next_color = m.sequence[len(m.val_map) % len(m.sequence)] + trendline_spec.trace_patch["line"] = dict(color=next_color) + patch, fit_results = make_trace_kwargs( + args, trendline_spec, args["data_frame"], {}, sizeref + ) + trendline_trace.update(patch) + fig.add_trace( + trendline_trace, row="all", col="all", exclude_empty_subplots=True + ) + fig.update_traces(selector=-1, showlegend=True) + if fit_results is not None: + trendline_rows.append(dict(px_fit_results=fit_results)) + + if trendline_rows: + try: + import pandas as pd + + fig._px_trendlines = pd.DataFrame(trendline_rows) + except ImportError: + msg = "Trendlines require pandas to be installed." + raise NotImplementedError(msg) + else: + fig._px_trendlines = [] + + configure_axes(args, constructor, fig, orders) + configure_animation_controls(args, constructor, fig) + return fig + + +def init_figure(args, subplot_type, frame_list, nrows, ncols, col_labels, row_labels): + # Build subplot specs + specs = [[dict(type=subplot_type or "domain")] * ncols for _ in range(nrows)] + + # Default row/column widths uniform + column_widths = [1.0] * ncols + row_heights = [1.0] * nrows + facet_col_wrap = args.get("facet_col_wrap", 0) + + # Build column_widths/row_heights + if subplot_type == "xy": + if args.get("marginal_x") is not None: + if args["marginal_x"] == "histogram" or ("color" in args and args["color"]): + main_size = 0.74 + else: + main_size = 0.84 + + row_heights = [main_size] * (nrows - 1) + [1 - main_size] + vertical_spacing = 0.01 + elif facet_col_wrap: + vertical_spacing = args.get("facet_row_spacing") or 0.07 + else: + vertical_spacing = args.get("facet_row_spacing") or 0.03 + + if args.get("marginal_y") is not None: + if args["marginal_y"] == "histogram" or ("color" in args and args["color"]): + main_size = 0.74 + else: + main_size = 0.84 + + column_widths = [main_size] * (ncols - 1) + [1 - main_size] + horizontal_spacing = 0.005 + else: + horizontal_spacing = args.get("facet_col_spacing") or 0.02 + else: + # Other subplot types: + # 'scene', 'geo', 'polar', 'ternary', 'mapbox', 'domain', None + # + # We can customize subplot spacing per type once we enable faceting + # for all plot types + if facet_col_wrap: + vertical_spacing = args.get("facet_row_spacing") or 0.07 + else: + vertical_spacing = args.get("facet_row_spacing") or 0.03 + horizontal_spacing = args.get("facet_col_spacing") or 0.02 + + if facet_col_wrap: + subplot_labels = [None] * nrows * ncols + while len(col_labels) < nrows * ncols: + col_labels.append(None) + for i in range(nrows): + for j in range(ncols): + subplot_labels[i * ncols + j] = col_labels[(nrows - 1 - i) * ncols + j] + + def _spacing_error_translator(e, direction, facet_arg): + """ + Translates the spacing errors thrown by the underlying make_subplots + routine into one that describes an argument adjustable through px. + """ + if ("%s spacing" % (direction,)) in e.args[0]: + e.args = ( + e.args[0] + + """ +Use the {facet_arg} argument to adjust this spacing.""".format(facet_arg=facet_arg), + ) + raise e + + # Create figure with subplots + try: + fig = make_subplots( + rows=nrows, + cols=ncols, + specs=specs, + shared_xaxes="all", + shared_yaxes="all", + row_titles=[] if facet_col_wrap else list(reversed(row_labels)), + column_titles=[] if facet_col_wrap else col_labels, + subplot_titles=subplot_labels if facet_col_wrap else [], + horizontal_spacing=horizontal_spacing, + vertical_spacing=vertical_spacing, + row_heights=row_heights, + column_widths=column_widths, + start_cell="bottom-left", + ) + except ValueError as e: + _spacing_error_translator(e, "Horizontal", "facet_col_spacing") + _spacing_error_translator(e, "Vertical", "facet_row_spacing") + raise + + # Remove explicit font size of row/col titles so template can take over + for annot in fig.layout.annotations: + annot.update(font=None) + + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/express/_doc.py b/venv/lib/python3.8/site-packages/plotly/express/_doc.py new file mode 100644 index 0000000..59faac4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/_doc.py @@ -0,0 +1,640 @@ +import inspect +from textwrap import TextWrapper + +try: + getfullargspec = inspect.getfullargspec +except AttributeError: # python 2 + getfullargspec = inspect.getargspec + + +colref_type = "str or int or Series or array-like" +colref_desc = "Either a name of a column in `data_frame`, or a pandas Series or array_like object." +colref_list_type = "list of str or int, or Series or array-like" +colref_list_desc = ( + "Either names of columns in `data_frame`, or pandas Series, or array_like objects" +) + +docs = dict( + data_frame=[ + "DataFrame or array-like or dict", + "This argument needs to be passed for column names (and not keyword names) to be used.", + "Array-like and dict are transformed internally to a pandas DataFrame.", + "Optional: if missing, a DataFrame gets constructed under the hood using the other arguments.", + ], + x=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the x axis in cartesian coordinates.", + ], + y=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the y axis in cartesian coordinates.", + ], + z=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the z axis in cartesian coordinates.", + ], + x_start=[ + colref_type, + colref_desc, + "(required)", + "Values from this column or array_like are used to position marks along the x axis in cartesian coordinates.", + ], + x_end=[ + colref_type, + colref_desc, + "(required)", + "Values from this column or array_like are used to position marks along the x axis in cartesian coordinates.", + ], + a=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the a axis in ternary coordinates.", + ], + b=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the b axis in ternary coordinates.", + ], + c=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the c axis in ternary coordinates.", + ], + r=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the radial axis in polar coordinates.", + ], + theta=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks along the angular axis in polar coordinates.", + ], + values=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to set values associated to sectors.", + ], + parents=[ + colref_type, + colref_desc, + "Values from this column or array_like are used as parents in sunburst and treemap charts.", + ], + ids=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to set ids of sectors", + ], + path=[ + colref_list_type, + colref_list_desc, + "List of columns names or columns of a rectangular dataframe defining the hierarchy of sectors, from root to leaves.", + "An error is raised if path AND ids or parents is passed", + ], + lat=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks according to latitude on a map.", + ], + lon=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position marks according to longitude on a map.", + ], + locations=[ + colref_type, + colref_desc, + "Values from this column or array_like are to be interpreted according to `locationmode` and mapped to longitude/latitude.", + ], + base=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to position the base of the bar.", + ], + dimensions=[ + colref_list_type, + colref_list_desc, + "Values from these columns are used for multidimensional visualization.", + ], + dimensions_max_cardinality=[ + "int (default 50)", + "When `dimensions` is `None` and `data_frame` is provided, " + "columns with more than this number of unique values are excluded from the output.", + "Not used when `dimensions` is passed.", + ], + error_x=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to size x-axis error bars.", + "If `error_x_minus` is `None`, error bars will be symmetrical, otherwise `error_x` is used for the positive direction only.", + ], + error_x_minus=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to size x-axis error bars in the negative direction.", + "Ignored if `error_x` is `None`.", + ], + error_y=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to size y-axis error bars.", + "If `error_y_minus` is `None`, error bars will be symmetrical, otherwise `error_y` is used for the positive direction only.", + ], + error_y_minus=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to size y-axis error bars in the negative direction.", + "Ignored if `error_y` is `None`.", + ], + error_z=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to size z-axis error bars.", + "If `error_z_minus` is `None`, error bars will be symmetrical, otherwise `error_z` is used for the positive direction only.", + ], + error_z_minus=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to size z-axis error bars in the negative direction.", + "Ignored if `error_z` is `None`.", + ], + color=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign color to marks.", + ], + opacity=["float", "Value between 0 and 1. Sets the opacity for markers."], + line_dash=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign dash-patterns to lines.", + ], + line_group=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to group rows of `data_frame` into lines.", + ], + symbol=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign symbols to marks.", + ], + pattern_shape=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign pattern shapes to marks.", + ], + size=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign mark sizes.", + ], + radius=["int (default is 30)", "Sets the radius of influence of each point."], + hover_name=[ + colref_type, + colref_desc, + "Values from this column or array_like appear in bold in the hover tooltip.", + ], + hover_data=[ + "str, or list of str or int, or Series or array-like, or dict", + "Either a name or list of names of columns in `data_frame`, or pandas Series,", + "or array_like objects", + "or a dict with column names as keys, with values True (for default formatting)", + "False (in order to remove this column from hover information),", + "or a formatting string, for example ':.3f' or '|%a'", + "or list-like data to appear in the hover tooltip", + "or tuples with a bool or formatting string as first element,", + "and list-like data to appear in hover as second element", + "Values from these columns appear as extra data in the hover tooltip.", + ], + custom_data=[ + "str, or list of str or int, or Series or array-like", + "Either name or list of names of columns in `data_frame`, or pandas Series, or array_like objects", + "Values from these columns are extra data, to be used in widgets or Dash callbacks for example. This data is not user-visible but is included in events emitted by the figure (lasso selection etc.)", + ], + text=[ + colref_type, + colref_desc, + "Values from this column or array_like appear in the figure as text labels.", + ], + names=[ + colref_type, + colref_desc, + "Values from this column or array_like are used as labels for sectors.", + ], + locationmode=[ + "str", + "One of 'ISO-3', 'USA-states', or 'country names'", + "Determines the set of locations used to match entries in `locations` to regions on the map.", + ], + facet_row=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign marks to facetted subplots in the vertical direction.", + ], + facet_col=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign marks to facetted subplots in the horizontal direction.", + ], + facet_col_wrap=[ + "int", + "Maximum number of facet columns.", + "Wraps the column variable at this width, so that the column facets span multiple rows.", + "Ignored if 0, and forced to 0 if `facet_row` or a `marginal` is set.", + ], + facet_row_spacing=[ + "float between 0 and 1", + "Spacing between facet rows, in paper units. Default is 0.03 or 0.07 when facet_col_wrap is used.", + ], + facet_col_spacing=[ + "float between 0 and 1", + "Spacing between facet columns, in paper units Default is 0.02.", + ], + animation_frame=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to assign marks to animation frames.", + ], + animation_group=[ + colref_type, + colref_desc, + "Values from this column or array_like are used to provide object-constancy across animation frames: rows with matching `animation_group`s will be treated as if they describe the same object in each frame.", + ], + symbol_sequence=[ + "list of str", + "Strings should define valid plotly.js symbols.", + "When `symbol` is set, values in that column are assigned symbols by cycling through `symbol_sequence` in the order described in `category_orders`, unless the value of `symbol` is a key in `symbol_map`.", + ], + symbol_map=[ + "dict with str keys and str values (default `{}`)", + "String values should define plotly.js symbols", + "Used to override `symbol_sequence` to assign a specific symbols to marks corresponding with specific values.", + "Keys in `symbol_map` should be values in the column denoted by `symbol`.", + "Alternatively, if the values of `symbol` are valid symbol names, the string `'identity'` may be passed to cause them to be used directly.", + ], + line_dash_map=[ + "dict with str keys and str values (default `{}`)", + "Strings values define plotly.js dash-patterns.", + "Used to override `line_dash_sequences` to assign a specific dash-patterns to lines corresponding with specific values.", + "Keys in `line_dash_map` should be values in the column denoted by `line_dash`.", + "Alternatively, if the values of `line_dash` are valid line-dash names, the string `'identity'` may be passed to cause them to be used directly.", + ], + line_dash_sequence=[ + "list of str", + "Strings should define valid plotly.js dash-patterns.", + "When `line_dash` is set, values in that column are assigned dash-patterns by cycling through `line_dash_sequence` in the order described in `category_orders`, unless the value of `line_dash` is a key in `line_dash_map`.", + ], + pattern_shape_map=[ + "dict with str keys and str values (default `{}`)", + "Strings values define plotly.js patterns-shapes.", + "Used to override `pattern_shape_sequences` to assign a specific patterns-shapes to lines corresponding with specific values.", + "Keys in `pattern_shape_map` should be values in the column denoted by `pattern_shape`.", + "Alternatively, if the values of `pattern_shape` are valid patterns-shapes names, the string `'identity'` may be passed to cause them to be used directly.", + ], + pattern_shape_sequence=[ + "list of str", + "Strings should define valid plotly.js patterns-shapes.", + "When `pattern_shape` is set, values in that column are assigned patterns-shapes by cycling through `pattern_shape_sequence` in the order described in `category_orders`, unless the value of `pattern_shape` is a key in `pattern_shape_map`.", + ], + color_discrete_sequence=[ + "list of str", + "Strings should define valid CSS-colors.", + "When `color` is set and the values in the corresponding column are not numeric, values in that column are assigned colors by cycling through `color_discrete_sequence` in the order described in `category_orders`, unless the value of `color` is a key in `color_discrete_map`.", + "Various useful color sequences are available in the `plotly.express.colors` submodules, specifically `plotly.express.colors.qualitative`.", + ], + color_discrete_map=[ + "dict with str keys and str values (default `{}`)", + "String values should define valid CSS-colors", + "Used to override `color_discrete_sequence` to assign a specific colors to marks corresponding with specific values.", + "Keys in `color_discrete_map` should be values in the column denoted by `color`.", + "Alternatively, if the values of `color` are valid colors, the string `'identity'` may be passed to cause them to be used directly.", + ], + color_continuous_scale=[ + "list of str", + "Strings should define valid CSS-colors", + "This list is used to build a continuous color scale when the column denoted by `color` contains numeric data.", + "Various useful color scales are available in the `plotly.express.colors` submodules, specifically `plotly.express.colors.sequential`, `plotly.express.colors.diverging` and `plotly.express.colors.cyclical`.", + ], + color_continuous_midpoint=[ + "number (default `None`)", + "If set, computes the bounds of the continuous color scale to have the desired midpoint.", + "Setting this value is recommended when using `plotly.express.colors.diverging` color scales as the inputs to `color_continuous_scale`.", + ], + size_max=["int (default `20`)", "Set the maximum mark size when using `size`."], + markers=["boolean (default `False`)", "If `True`, markers are shown on lines."], + lines=[ + "boolean (default `True`)", + "If `False`, lines are not drawn (forced to `True` if `markers` is `False`).", + ], + log_x=[ + "boolean (default `False`)", + "If `True`, the x-axis is log-scaled in cartesian coordinates.", + ], + log_y=[ + "boolean (default `False`)", + "If `True`, the y-axis is log-scaled in cartesian coordinates.", + ], + log_z=[ + "boolean (default `False`)", + "If `True`, the z-axis is log-scaled in cartesian coordinates.", + ], + log_r=[ + "boolean (default `False`)", + "If `True`, the radial axis is log-scaled in polar coordinates.", + ], + range_x=[ + "list of two numbers", + "If provided, overrides auto-scaling on the x-axis in cartesian coordinates.", + ], + range_y=[ + "list of two numbers", + "If provided, overrides auto-scaling on the y-axis in cartesian coordinates.", + ], + range_z=[ + "list of two numbers", + "If provided, overrides auto-scaling on the z-axis in cartesian coordinates.", + ], + range_color=[ + "list of two numbers", + "If provided, overrides auto-scaling on the continuous color scale.", + ], + range_r=[ + "list of two numbers", + "If provided, overrides auto-scaling on the radial axis in polar coordinates.", + ], + range_theta=[ + "list of two numbers", + "If provided, overrides auto-scaling on the angular axis in polar coordinates.", + ], + title=["str", "The figure title."], + subtitle=["str", "The figure subtitle."], + template=[ + "str or dict or plotly.graph_objects.layout.Template instance", + "The figure template name (must be a key in plotly.io.templates) or definition.", + ], + width=["int (default `None`)", "The figure width in pixels."], + height=["int (default `None`)", "The figure height in pixels."], + labels=[ + "dict with str keys and str values (default `{}`)", + "By default, column names are used in the figure for axis titles, legend entries and hovers.", + "This parameter allows this to be overridden.", + "The keys of this dict should correspond to column names, and the values should correspond to the desired label to be displayed.", + ], + category_orders=[ + "dict with str keys and list of str values (default `{}`)", + "By default, in Python 3.6+, the order of categorical values in axes, legends and facets depends on the order in which these values are first encountered in `data_frame` (and no order is guaranteed by default in Python below 3.6).", + "This parameter is used to force a specific ordering of values per column.", + "The keys of this dict should correspond to column names, and the values should be lists of strings corresponding to the specific display order desired.", + ], + marginal=[ + "str", + "One of `'rug'`, `'box'`, `'violin'`, or `'histogram'`.", + "If set, a subplot is drawn alongside the main plot, visualizing the distribution.", + ], + marginal_x=[ + "str", + "One of `'rug'`, `'box'`, `'violin'`, or `'histogram'`.", + "If set, a horizontal subplot is drawn above the main plot, visualizing the x-distribution.", + ], + marginal_y=[ + "str", + "One of `'rug'`, `'box'`, `'violin'`, or `'histogram'`.", + "If set, a vertical subplot is drawn to the right of the main plot, visualizing the y-distribution.", + ], + trendline=[ + "str", + "One of `'ols'`, `'lowess'`, `'rolling'`, `'expanding'` or `'ewm'`.", + "If `'ols'`, an Ordinary Least Squares regression line will be drawn for each discrete-color/symbol group.", + "If `'lowess`', a Locally Weighted Scatterplot Smoothing line will be drawn for each discrete-color/symbol group.", + "If `'rolling`', a Rolling (e.g. rolling average, rolling median) line will be drawn for each discrete-color/symbol group.", + "If `'expanding`', an Expanding (e.g. expanding average, expanding sum) line will be drawn for each discrete-color/symbol group.", + "If `'ewm`', an Exponentially Weighted Moment (e.g. exponentially-weighted moving average) line will be drawn for each discrete-color/symbol group.", + "See the docstrings for the functions in `plotly.express.trendline_functions` for more details on these functions and how", + "to configure them with the `trendline_options` argument.", + ], + trendline_options=[ + "dict", + "Options passed as the first argument to the function from `plotly.express.trendline_functions` ", + "named in the `trendline` argument.", + ], + trendline_color_override=[ + "str", + "Valid CSS color.", + "If provided, and if `trendline` is set, all trendlines will be drawn in this color rather than in the same color as the traces from which they draw their inputs.", + ], + trendline_scope=[ + "str (one of `'trace'` or `'overall'`, default `'trace'`)", + "If `'trace'`, then one trendline is drawn per trace (i.e. per color, symbol, facet, animation frame etc) and if `'overall'` then one trendline is computed for the entire dataset, and replicated across all facets.", + ], + render_mode=[ + "str", + "One of `'auto'`, `'svg'` or `'webgl'`, default `'auto'`", + "Controls the browser API used to draw marks.", + "`'svg'` is appropriate for figures of less than 1000 data points, and will allow for fully-vectorized output.", + "`'webgl'` is likely necessary for acceptable performance above 1000 points but rasterizes part of the output. ", + "`'auto'` uses heuristics to choose the mode.", + ], + direction=[ + "str", + "One of '`counterclockwise'` or `'clockwise'`. Default is `'clockwise'`", + "Sets the direction in which increasing values of the angular axis are drawn.", + ], + start_angle=[ + "int (default `90`)", + "Sets start angle for the angular axis, with 0 being due east and 90 being due north.", + ], + histfunc=[ + "str (default `'count'` if no arguments are provided, else `'sum'`)", + "One of `'count'`, `'sum'`, `'avg'`, `'min'`, or `'max'`.", + "Function used to aggregate values for summarization (note: can be normalized with `histnorm`).", + ], + histnorm=[ + "str (default `None`)", + "One of `'percent'`, `'probability'`, `'density'`, or `'probability density'`", + "If `None`, the output of `histfunc` is used as is.", + "If `'probability'`, the output of `histfunc` for a given bin is divided by the sum of the output of `histfunc` for all bins.", + "If `'percent'`, the output of `histfunc` for a given bin is divided by the sum of the output of `histfunc` for all bins and multiplied by 100.", + "If `'density'`, the output of `histfunc` for a given bin is divided by the size of the bin.", + "If `'probability density'`, the output of `histfunc` for a given bin is normalized such that it corresponds to the probability that a random event whose distribution is described by the output of `histfunc` will fall into that bin.", + ], + barnorm=[ + "str (default `None`)", + "One of `'fraction'` or `'percent'`.", + "If `'fraction'`, the value of each bar is divided by the sum of all values at that location coordinate.", + "`'percent'` is the same but multiplied by 100 to show percentages.", + "`None` will stack up all values at each location coordinate.", + ], + groupnorm=[ + "str (default `None`)", + "One of `'fraction'` or `'percent'`.", + "If `'fraction'`, the value of each point is divided by the sum of all values at that location coordinate.", + "`'percent'` is the same but multiplied by 100 to show percentages.", + "`None` will stack up all values at each location coordinate.", + ], + barmode=[ + "str (default `'relative'`)", + "One of `'group'`, `'overlay'` or `'relative'`", + "In `'relative'` mode, bars are stacked above zero for positive values and below zero for negative values.", + "In `'overlay'` mode, bars are drawn on top of one another.", + "In `'group'` mode, bars are placed beside each other.", + ], + boxmode=[ + "str (default `'group'`)", + "One of `'group'` or `'overlay'`", + "In `'overlay'` mode, boxes are on drawn top of one another.", + "In `'group'` mode, boxes are placed beside each other.", + ], + violinmode=[ + "str (default `'group'`)", + "One of `'group'` or `'overlay'`", + "In `'overlay'` mode, violins are on drawn top of one another.", + "In `'group'` mode, violins are placed beside each other.", + ], + stripmode=[ + "str (default `'group'`)", + "One of `'group'` or `'overlay'`", + "In `'overlay'` mode, strips are on drawn top of one another.", + "In `'group'` mode, strips are placed beside each other.", + ], + zoom=["int (default `8`)", "Between 0 and 20.", "Sets map zoom level."], + orientation=[ + "str, one of `'h'` for horizontal or `'v'` for vertical. ", + "(default `'v'` if `x` and `y` are provided and both continuous or both categorical, ", + "otherwise `'v'`(`'h'`) if `x`(`y`) is categorical and `y`(`x`) is continuous, ", + "otherwise `'v'`(`'h'`) if only `x`(`y`) is provided) ", + ], + line_close=[ + "boolean (default `False`)", + "If `True`, an extra line segment is drawn between the first and last point.", + ], + line_shape=[ + "str (default `'linear'`)", + "One of `'linear'`, `'spline'`, `'hv'`, `'vh'`, `'hvh'`, or `'vhv'`", + ], + fitbounds=["str (default `False`).", "One of `False`, `locations` or `geojson`."], + basemap_visible=["bool", "Force the basemap visibility."], + scope=[ + "str (default `'world'`).", + "One of `'world'`, `'usa'`, `'europe'`, `'asia'`, `'africa'`, `'north america'`, or `'south america'`" + "Default is `'world'` unless `projection` is set to `'albers usa'`, which forces `'usa'`.", + ], + projection=[ + "str ", + "One of `'equirectangular'`, `'mercator'`, `'orthographic'`, `'natural earth'`, `'kavrayskiy7'`, `'miller'`, `'robinson'`, `'eckert4'`, `'azimuthal equal area'`, `'azimuthal equidistant'`, `'conic equal area'`, `'conic conformal'`, `'conic equidistant'`, `'gnomonic'`, `'stereographic'`, `'mollweide'`, `'hammer'`, `'transverse mercator'`, `'albers usa'`, `'winkel tripel'`, `'aitoff'`, or `'sinusoidal'`" + "Default depends on `scope`.", + ], + center=[ + "dict", + "Dict keys are `'lat'` and `'lon'`", + "Sets the center point of the map.", + ], + map_style=[ + "str (default `'basic'`)", + "Identifier of base map style.", + "Allowed values 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'`.", + ], + mapbox_style=[ + "str (default `'basic'`, needs Mapbox API token)", + "Identifier of base map style, some of which require a Mapbox or Stadia Maps API token to be set using `plotly.express.set_mapbox_access_token()`.", + "Allowed values which do not require a token are `'open-street-map'`, `'white-bg'`, `'carto-positron'`, `'carto-darkmatter'`.", + "Allowed values which require a Mapbox API token are `'basic'`, `'streets'`, `'outdoors'`, `'light'`, `'dark'`, `'satellite'`, `'satellite-streets'`.", + "Allowed values which require a Stadia Maps API token are `'stamen-terrain'`, `'stamen-toner'`, `'stamen-watercolor'`.", + ], + points=[ + "str or boolean (default `'outliers'`)", + "One of `'outliers'`, `'suspectedoutliers'`, `'all'`, or `False`.", + "If `'outliers'`, only the sample points lying outside the whiskers are shown.", + "If `'suspectedoutliers'`, all outlier points are shown and those less than 4*Q1-3*Q3 or greater than 4*Q3-3*Q1 are highlighted with the marker's `'outliercolor'`.", + "If `'outliers'`, only the sample points lying outside the whiskers are shown.", + "If `'all'`, all sample points are shown.", + "If `False`, no sample points are shown and the whiskers extend to the full range of the sample.", + ], + box=["boolean (default `False`)", "If `True`, boxes are drawn inside the violins."], + notched=["boolean (default `False`)", "If `True`, boxes are drawn with notches."], + geojson=[ + "GeoJSON-formatted dict", + "Must contain a Polygon feature collection, with IDs, which are references from `locations`.", + ], + featureidkey=[ + "str (default: `'id'`)", + "Path to field in GeoJSON feature object with which to match the values passed in to `locations`." + "The most common alternative to the default is of the form `'properties.`.", + ], + cumulative=[ + "boolean (default `False`)", + "If `True`, histogram values are cumulative.", + ], + nbins=["int", "Positive integer.", "Sets the number of bins."], + nbinsx=["int", "Positive integer.", "Sets the number of bins along the x axis."], + nbinsy=["int", "Positive integer.", "Sets the number of bins along the y axis."], + branchvalues=[ + "str", + "'total' or 'remainder'", + "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.", + ], + maxdepth=[ + "int", + "Positive integer", + "Sets the number of rendered sectors from any given `level`. Set `maxdepth` to -1 to render all the" + "levels in the hierarchy.", + ], + ecdfnorm=[ + "string or `None` (default `'probability'`)", + "One of `'probability'` or `'percent'`", + "If `None`, values will be raw counts or sums.", + "If `'probability', values will be probabilities normalized from 0 to 1.", + "If `'percent', values will be percentages normalized from 0 to 100.", + ], + ecdfmode=[ + "string (default `'standard'`)", + "One of `'standard'`, `'complementary'` or `'reversed'`", + "If `'standard'`, the ECDF is plotted such that values represent data at or below the point.", + "If `'complementary'`, the CCDF is plotted such that values represent data above the point.", + "If `'reversed'`, a variant of the CCDF is plotted such that values represent data at or above the point.", + ], + text_auto=[ + "bool or string (default `False`)", + "If `True` or a string, the x or y or z values will be displayed as text, depending on the orientation", + "A string like `'.2f'` will be interpreted as a `texttemplate` numeric formatting directive.", + ], +) + + +def make_docstring(fn, override_dict=None, append_dict=None): + override_dict = {} if override_dict is None else override_dict + append_dict = {} if append_dict is None else append_dict + tw = TextWrapper( + width=75, + initial_indent=" ", + subsequent_indent=" ", + break_on_hyphens=False, + ) + result = (fn.__doc__ or "") + "\nParameters\n----------\n" + for param in getfullargspec(fn)[0]: + if override_dict.get(param): + param_doc = list(override_dict[param]) + else: + param_doc = list(docs[param]) + if append_dict.get(param): + param_doc += append_dict[param] + param_desc_list = param_doc[1:] + param_desc = ( + tw.fill(" ".join(param_desc_list or "")) + if param in docs or param in override_dict + else "(documentation missing from map)" + ) + + param_type = param_doc[0] + result += "%s: %s\n%s\n" % (param, param_type, param_desc) + result += "\nReturns\n-------\n" + result += " plotly.graph_objects.Figure" + return result diff --git a/venv/lib/python3.8/site-packages/plotly/express/_imshow.py b/venv/lib/python3.8/site-packages/plotly/express/_imshow.py new file mode 100644 index 0000000..ce6ddb8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/_imshow.py @@ -0,0 +1,605 @@ +import plotly.graph_objs as go +from _plotly_utils.basevalidators import ColorscaleValidator +from ._core import apply_default_cascade, init_figure, configure_animation_controls +from .imshow_utils import rescale_intensity, _integer_ranges, _integer_types +import narwhals.stable.v1 as nw +import numpy as np +import itertools +from plotly.utils import image_array_to_data_uri + +try: + import xarray + + xarray_imported = True +except ImportError: + xarray_imported = False + +_float_types = [] + + +def _vectorize_zvalue(z, mode="max"): + alpha = 255 if mode == "max" else 0 + if z is None: + return z + elif np.isscalar(z): + return [z] * 3 + [alpha] + elif len(z) == 1: + return list(z) * 3 + [alpha] + elif len(z) == 3: + return list(z) + [alpha] + elif len(z) == 4: + return z + else: + raise ValueError( + "zmax can be a scalar, or an iterable of length 1, 3 or 4. " + "A value of %s was passed for zmax." % str(z) + ) + + +def _infer_zmax_from_type(img): + dt = img.dtype.type + rtol = 1.05 + if dt in _integer_types: + return _integer_ranges[dt][1] + else: + im_max = img[np.isfinite(img)].max() + if im_max <= 1 * rtol: + return 1 + elif im_max <= 255 * rtol: + return 255 + elif im_max <= 65535 * rtol: + return 65535 + else: + return 2**32 + + +def imshow( + img, + zmin=None, + zmax=None, + origin=None, + labels={}, + x=None, + y=None, + animation_frame=None, + facet_col=None, + facet_col_wrap=None, + facet_col_spacing=None, + facet_row_spacing=None, + color_continuous_scale=None, + color_continuous_midpoint=None, + range_color=None, + title=None, + template=None, + width=None, + height=None, + aspect=None, + contrast_rescaling=None, + binary_string=None, + binary_backend="auto", + binary_compression_level=4, + binary_format="png", + text_auto=False, +) -> go.Figure: + """ + Display an image, i.e. data on a 2D regular raster. + + Parameters + ---------- + + img: array-like image, or xarray + The image data. Supported array shapes are + + - (M, N): an image with scalar data. The data is visualized + using a colormap. + - (M, N, 3): an image with RGB values. + - (M, N, 4): an image with RGBA values, i.e. including transparency. + + zmin, zmax : scalar or iterable, optional + zmin and zmax define the scalar range that the colormap covers. By default, + zmin and zmax correspond to the min and max values of the datatype for integer + datatypes (ie [0-255] for uint8 images, [0, 65535] for uint16 images, etc.). For + a multichannel image of floats, the max of the image is computed and zmax is the + smallest power of 256 (1, 255, 65535) greater than this max value, + with a 5% tolerance. For a single-channel image, the max of the image is used. + Overridden by range_color. + + origin : str, 'upper' or 'lower' (default 'upper') + position of the [0, 0] pixel of the image array, in the upper left or lower left + corner. The convention 'upper' is typically used for matrices and images. + + labels : dict with str keys and str values (default `{}`) + Sets names used in the figure for axis titles (keys ``x`` and ``y``), + colorbar title and hoverlabel (key ``color``). The values should correspond + to the desired label to be displayed. If ``img`` is an xarray, dimension + names are used for axis titles, and long name for the colorbar title + (unless overridden in ``labels``). Possible keys are: x, y, and color. + + x, y: list-like, optional + x and y are used to label the axes of single-channel heatmap visualizations and + their lengths must match the lengths of the second and first dimensions of the + img argument. They are auto-populated if the input is an xarray. + + animation_frame: int or str, optional (default None) + axis number along which the image array is sliced to create an animation plot. + If `img` is an xarray, `animation_frame` can be the name of one the dimensions. + + facet_col: int or str, optional (default None) + axis number along which the image array is sliced to create a facetted plot. + If `img` is an xarray, `facet_col` can be the name of one the dimensions. + + facet_col_wrap: int + Maximum number of facet columns. Wraps the column variable at this width, + so that the column facets span multiple rows. + Ignored if `facet_col` is None. + + facet_col_spacing: float between 0 and 1 + Spacing between facet columns, in paper units. Default is 0.02. + + facet_row_spacing: float between 0 and 1 + Spacing between facet rows created when ``facet_col_wrap`` is used, in + paper units. Default is 0.0.7. + + color_continuous_scale : str or list of str + colormap used to map scalar data to colors (for a 2D image). This parameter is + not used for RGB or RGBA images. If a string is provided, it should be the name + of a known color scale, and if a list is provided, it should be a list of CSS- + compatible colors. + + color_continuous_midpoint : number + If set, computes the bounds of the continuous color scale to have the desired + midpoint. Overridden by range_color or zmin and zmax. + + range_color : list of two numbers + If provided, overrides auto-scaling on the continuous color scale, including + overriding `color_continuous_midpoint`. Also overrides zmin and zmax. Used only + for single-channel images. + + title : str + The figure title. + + template : str or dict or plotly.graph_objects.layout.Template instance + The figure template name or definition. + + width : number + The figure width in pixels. + + height: number + The figure height in pixels. + + aspect: 'equal', 'auto', or None + - 'equal': Ensures an aspect ratio of 1 or pixels (square pixels) + - 'auto': The axes is kept fixed and the aspect ratio of pixels is + adjusted so that the data fit in the axes. In general, this will + result in non-square pixels. + - if None, 'equal' is used for numpy arrays and 'auto' for xarrays + (which have typically heterogeneous coordinates) + + contrast_rescaling: 'minmax', 'infer', or None + how to determine data values corresponding to the bounds of the color + range, when zmin or zmax are not passed. If `minmax`, the min and max + values of the image are used. If `infer`, a heuristic based on the image + data type is used. + + binary_string: bool, default None + if True, the image data are first rescaled and encoded as uint8 and + then passed to plotly.js as a b64 PNG string. If False, data are passed + unchanged as a numerical array. Setting to True may lead to performance + gains, at the cost of a loss of precision depending on the original data + type. If None, use_binary_string is set to True for multichannel (eg) RGB + arrays, and to False for single-channel (2D) arrays. 2D arrays are + represented as grayscale and with no colorbar if use_binary_string is + True. + + binary_backend: str, 'auto' (default), 'pil' or 'pypng' + Third-party package for the transformation of numpy arrays to + png b64 strings. If 'auto', Pillow is used if installed, otherwise + pypng. + + binary_compression_level: int, between 0 and 9 (default 4) + png compression level to be passed to the backend when transforming an + array to a png b64 string. Increasing `binary_compression` decreases the + size of the png string, but the compression step takes more time. For most + images it is not worth using levels greater than 5, but it's possible to + test `len(fig.data[0].source)` and to time the execution of `imshow` to + tune the level of compression. 0 means no compression (not recommended). + + binary_format: str, 'png' (default) or 'jpg' + compression format used to generate b64 string. 'png' is recommended + since it uses lossless compression, but 'jpg' (lossy) compression can + result if smaller binary strings for natural images. + + text_auto: bool or str (default `False`) + If `True` or a string, single-channel `img` values will be displayed as text. + A string like `'.2f'` will be interpreted as a `texttemplate` numeric formatting directive. + + Returns + ------- + fig : graph_objects.Figure containing the displayed image + + See also + -------- + + plotly.graph_objects.Image : image trace + plotly.graph_objects.Heatmap : heatmap trace + + Notes + ----- + + In order to update and customize the returned figure, use + `go.Figure.update_traces` or `go.Figure.update_layout`. + + If an xarray is passed, dimensions names and coordinates are used for + axes labels and ticks. + """ + args = locals() + apply_default_cascade(args) + labels = labels.copy() + nslices_facet = 1 + if facet_col is not None: + if isinstance(facet_col, str): + facet_col = img.dims.index(facet_col) + nslices_facet = img.shape[facet_col] + facet_slices = range(nslices_facet) + ncols = int(facet_col_wrap) if facet_col_wrap is not None else nslices_facet + nrows = ( + nslices_facet // ncols + 1 + if nslices_facet % ncols + else nslices_facet // ncols + ) + else: + nrows = 1 + ncols = 1 + if animation_frame is not None: + if isinstance(animation_frame, str): + animation_frame = img.dims.index(animation_frame) + nslices_animation = img.shape[animation_frame] + animation_slices = range(nslices_animation) + slice_dimensions = (facet_col is not None) + ( + animation_frame is not None + ) # 0, 1, or 2 + facet_label = None + animation_label = None + img_is_xarray = False + # ----- Define x and y, set labels if img is an xarray ------------------- + if xarray_imported and isinstance(img, xarray.DataArray): + dims = list(img.dims) + img_is_xarray = True + pop_indexes = [] + if facet_col is not None: + facet_slices = img.coords[img.dims[facet_col]].values + pop_indexes.append(facet_col) + facet_label = img.dims[facet_col] + if animation_frame is not None: + animation_slices = img.coords[img.dims[animation_frame]].values + pop_indexes.append(animation_frame) + animation_label = img.dims[animation_frame] + # Remove indices in sorted order. + for index in sorted(pop_indexes, reverse=True): + _ = dims.pop(index) + y_label, x_label = dims[0], dims[1] + # np.datetime64 is not handled correctly by go.Heatmap + for ax in [x_label, y_label]: + if np.issubdtype(img.coords[ax].dtype, np.datetime64): + img.coords[ax] = img.coords[ax].astype(str) + if x is None: + x = img.coords[x_label].values + if y is None: + y = img.coords[y_label].values + if aspect is None: + aspect = "auto" + if labels.get("x", None) is None: + labels["x"] = x_label + if labels.get("y", None) is None: + labels["y"] = y_label + if labels.get("animation_frame", None) is None: + labels["animation_frame"] = animation_label + if labels.get("facet_col", None) is None: + labels["facet_col"] = facet_label + if labels.get("color", None) is None: + labels["color"] = xarray.plot.utils.label_from_attrs(img) + labels["color"] = labels["color"].replace("\n", "
") + else: + if hasattr(img, "columns") and hasattr(img.columns, "__len__"): + if x is None: + x = img.columns + if labels.get("x", None) is None and hasattr(img.columns, "name"): + labels["x"] = img.columns.name or "" + if hasattr(img, "index") and hasattr(img.index, "__len__"): + if y is None: + y = img.index + if labels.get("y", None) is None and hasattr(img.index, "name"): + labels["y"] = img.index.name or "" + + if labels.get("x", None) is None: + labels["x"] = "" + if labels.get("y", None) is None: + labels["y"] = "" + if labels.get("color", None) is None: + labels["color"] = "" + if aspect is None: + aspect = "equal" + + # --- Set the value of binary_string (forbidden for pandas) + img = nw.from_native(img, pass_through=True) + if isinstance(img, nw.DataFrame): + if binary_string: + raise ValueError("Binary strings cannot be used with pandas arrays") + is_dataframe = True + else: + is_dataframe = False + + # --------------- Starting from here img is always a numpy array -------- + img = np.asanyarray(img) + # Reshape array so that animation dimension comes first, then facets, then images + if facet_col is not None: + img = np.moveaxis(img, facet_col, 0) + if animation_frame is not None and animation_frame < facet_col: + animation_frame += 1 + facet_col = True + if animation_frame is not None: + img = np.moveaxis(img, animation_frame, 0) + animation_frame = True + args["animation_frame"] = ( + "animation_frame" + if labels.get("animation_frame") is None + else labels["animation_frame"] + ) + iterables = () + if animation_frame is not None: + iterables += (range(nslices_animation),) + if facet_col is not None: + iterables += (range(nslices_facet),) + + # Default behaviour of binary_string: True for RGB images, False for 2D + if binary_string is None: + binary_string = img.ndim >= (3 + slice_dimensions) and not is_dataframe + + # Cast bools to uint8 (also one byte) + if img.dtype == bool: + img = 255 * img.astype(np.uint8) + + if range_color is not None: + zmin = range_color[0] + zmax = range_color[1] + + # -------- Contrast rescaling: either minmax or infer ------------------ + if contrast_rescaling is None: + contrast_rescaling = "minmax" if img.ndim == (2 + slice_dimensions) else "infer" + + # We try to set zmin and zmax only if necessary, because traces have good defaults + if contrast_rescaling == "minmax": + # When using binary_string and minmax we need to set zmin and zmax to rescale the image + if (zmin is not None or binary_string) and zmax is None: + zmax = img.max() + if (zmax is not None or binary_string) and zmin is None: + zmin = img.min() + else: + # For uint8 data and infer we let zmin and zmax to be None if passed as None + if zmax is None and img.dtype != np.uint8: + zmax = _infer_zmax_from_type(img) + if zmin is None and zmax is not None: + zmin = 0 + + # For 2d data, use Heatmap trace, unless binary_string is True + if img.ndim == 2 + slice_dimensions and not binary_string: + y_index = slice_dimensions + if y is not None and img.shape[y_index] != len(y): + raise ValueError( + "The length of the y vector must match the length of the first " + + "dimension of the img matrix." + ) + x_index = slice_dimensions + 1 + if x is not None and img.shape[x_index] != len(x): + raise ValueError( + "The length of the x vector must match the length of the second " + + "dimension of the img matrix." + ) + + texttemplate = None + if text_auto is True: + texttemplate = "%{z}" + elif text_auto is not False: + texttemplate = "%{z:" + text_auto + "}" + + traces = [ + go.Heatmap( + x=x, + y=y, + z=img[index_tup], + coloraxis="coloraxis1", + name=str(i), + texttemplate=texttemplate, + ) + for i, index_tup in enumerate(itertools.product(*iterables)) + ] + autorange = True if origin == "lower" else "reversed" + layout = dict(yaxis=dict(autorange=autorange)) + if aspect == "equal": + layout["xaxis"] = dict(scaleanchor="y", constrain="domain") + layout["yaxis"]["constrain"] = "domain" + colorscale_validator = ColorscaleValidator("colorscale", "imshow") + layout["coloraxis1"] = dict( + colorscale=colorscale_validator.validate_coerce( + args["color_continuous_scale"] + ), + cmid=color_continuous_midpoint, + cmin=zmin, + cmax=zmax, + ) + if labels["color"]: + layout["coloraxis1"]["colorbar"] = dict(title_text=labels["color"]) + + # For 2D+RGB data, use Image trace + elif ( + img.ndim >= 3 + and (img.shape[-1] in [3, 4] or slice_dimensions and binary_string) + ) or (img.ndim == 2 and binary_string): + rescale_image = True # to check whether image has been modified + if zmin is not None and zmax is not None: + zmin, zmax = ( + _vectorize_zvalue(zmin, mode="min"), + _vectorize_zvalue(zmax, mode="max"), + ) + x0, y0, dx, dy = (None,) * 4 + error_msg_xarray = ( + "Non-numerical coordinates were passed with xarray `img`, but " + "the Image trace cannot handle it. Please use `binary_string=False` " + "for 2D data or pass instead the numpy array `img.values` to `px.imshow`." + ) + if x is not None: + x = np.asanyarray(x) + if np.issubdtype(x.dtype, np.number): + x0 = x[0] + dx = x[1] - x[0] + else: + error_msg = ( + error_msg_xarray + if img_is_xarray + else ( + "Only numerical values are accepted for the `x` parameter " + "when an Image trace is used." + ) + ) + raise ValueError(error_msg) + if y is not None: + y = np.asanyarray(y) + if np.issubdtype(y.dtype, np.number): + y0 = y[0] + dy = y[1] - y[0] + else: + error_msg = ( + error_msg_xarray + if img_is_xarray + else ( + "Only numerical values are accepted for the `y` parameter " + "when an Image trace is used." + ) + ) + raise ValueError(error_msg) + if binary_string: + if zmin is None and zmax is None: # no rescaling, faster + img_rescaled = img + rescale_image = False + elif img.ndim == 2 + slice_dimensions: # single-channel image + img_rescaled = rescale_intensity( + img, in_range=(zmin[0], zmax[0]), out_range=np.uint8 + ) + else: + img_rescaled = np.stack( + [ + rescale_intensity( + img[..., ch], + in_range=(zmin[ch], zmax[ch]), + out_range=np.uint8, + ) + for ch in range(img.shape[-1]) + ], + axis=-1, + ) + img_str = [ + image_array_to_data_uri( + img_rescaled[index_tup], + backend=binary_backend, + compression=binary_compression_level, + ext=binary_format, + ) + for index_tup in itertools.product(*iterables) + ] + + traces = [ + go.Image(source=img_str_slice, name=str(i), x0=x0, y0=y0, dx=dx, dy=dy) + for i, img_str_slice in enumerate(img_str) + ] + else: + colormodel = "rgb" if img.shape[-1] == 3 else "rgba256" + traces = [ + go.Image( + z=img[index_tup], + zmin=zmin, + zmax=zmax, + colormodel=colormodel, + x0=x0, + y0=y0, + dx=dx, + dy=dy, + ) + for index_tup in itertools.product(*iterables) + ] + layout = {} + if origin == "lower" or (dy is not None and dy < 0): + layout["yaxis"] = dict(autorange=True) + if dx is not None and dx < 0: + layout["xaxis"] = dict(autorange="reversed") + else: + raise ValueError( + "px.imshow only accepts 2D single-channel, RGB or RGBA images. " + "An image of shape %s was provided. " + "Alternatively, 3- or 4-D single or multichannel datasets can be " + "visualized using the `facet_col` or/and `animation_frame` arguments." + % str(img.shape) + ) + + # Now build figure + col_labels = [] + if facet_col is not None: + slice_label = ( + "facet_col" if labels.get("facet_col") is None else labels["facet_col"] + ) + col_labels = [f"{slice_label}={i}" for i in facet_slices] + fig = init_figure(args, "xy", [], nrows, ncols, col_labels, []) + for attr_name in ["height", "width"]: + if args[attr_name]: + layout[attr_name] = args[attr_name] + if args["title"]: + layout["title_text"] = args["title"] + elif args["template"].layout.margin.t is None: + layout["margin"] = {"t": 60} + + frame_list = [] + for index, trace in enumerate(traces): + if (facet_col and index < nrows * ncols) or index == 0: + fig.add_trace(trace, row=nrows - index // ncols, col=index % ncols + 1) + if animation_frame is not None: + for i, index in zip(range(nslices_animation), animation_slices): + frame_list.append( + dict( + data=traces[nslices_facet * i : nslices_facet * (i + 1)], + layout=layout, + name=str(index), + ) + ) + if animation_frame: + fig.frames = frame_list + fig.update_layout(layout) + # Hover name, z or color + if binary_string and rescale_image and not np.all(img == img_rescaled): + # we rescaled the image, hence z is not displayed in hover since it does + # not correspond to img values + hovertemplate = "%s: %%{x}
%s: %%{y}" % ( + labels["x"] or "x", + labels["y"] or "y", + ) + else: + if trace["type"] == "heatmap": + hover_name = "%{z}" + elif img.ndim == 2: + hover_name = "%{z[0]}" + elif img.ndim == 3 and img.shape[-1] == 3: + hover_name = "[%{z[0]}, %{z[1]}, %{z[2]}]" + else: + hover_name = "%{z}" + hovertemplate = "%s: %%{x}
%s: %%{y}
%s: %s" % ( + labels["x"] or "x", + labels["y"] or "y", + labels["color"] or "color", + hover_name, + ) + fig.update_traces(hovertemplate=hovertemplate) + if labels["x"]: + fig.update_xaxes(title_text=labels["x"], row=1) + if labels["y"]: + fig.update_yaxes(title_text=labels["y"], col=1) + configure_animation_controls(args, go.Image, fig) + fig.update_layout(template=args["template"], overwrite=True) + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/express/_special_inputs.py b/venv/lib/python3.8/site-packages/plotly/express/_special_inputs.py new file mode 100644 index 0000000..c1b3d4d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/_special_inputs.py @@ -0,0 +1,40 @@ +class IdentityMap(object): + """ + `dict`-like object which acts as if the value for any key is the key itself. Objects + of this class can be passed in to arguments like `color_discrete_map` to + use the provided data values as colors, rather than mapping them to colors cycled + from `color_discrete_sequence`. This works for any `_map` argument to Plotly Express + functions, such as `line_dash_map` and `symbol_map`. + """ + + def __getitem__(self, key): + return key + + def __contains__(self, key): + return True + + def copy(self): + return self + + +class Constant(object): + """ + Objects of this class can be passed to Plotly Express functions that expect column + identifiers or list-like objects to indicate that this attribute should take on a + constant value. An optional label can be provided. + """ + + def __init__(self, value, label=None): + self.value = value + self.label = label + + +class Range(object): + """ + Objects of this class can be passed to Plotly Express functions that expect column + identifiers or list-like objects to indicate that this attribute should be mapped + onto integers starting at 0. An optional label can be provided. + """ + + def __init__(self, label=None): + self.label = label diff --git a/venv/lib/python3.8/site-packages/plotly/express/colors/__init__.py b/venv/lib/python3.8/site-packages/plotly/express/colors/__init__.py new file mode 100644 index 0000000..62cd3ca --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/colors/__init__.py @@ -0,0 +1,52 @@ +# ruff: noqa: F405 +"""For a list of colors available in `plotly.express.colors`, please see + +* the `tutorial on discrete color sequences `_ +* the `list of built-in continuous color scales `_ +* the `tutorial on continuous colors `_ + +Color scales are available within the following namespaces + +* cyclical +* diverging +* qualitative +* sequential +""" + +from plotly.colors import * # noqa: F403 + + +__all__ = [ + "named_colorscales", + "cyclical", + "diverging", + "sequential", + "qualitative", + "colorbrewer", + "colorbrewer", + "carto", + "cmocean", + "color_parser", + "colorscale_to_colors", + "colorscale_to_scale", + "convert_colors_to_same_type", + "convert_colorscale_to_rgb", + "convert_dict_colors_to_same_type", + "convert_to_RGB_255", + "find_intermediate_color", + "hex_to_rgb", + "label_rgb", + "make_colorscale", + "n_colors", + "unconvert_from_RGB_255", + "unlabel_rgb", + "validate_colors", + "validate_colors_dict", + "validate_colorscale", + "validate_scale_values", + "plotlyjs", + "DEFAULT_PLOTLY_COLORS", + "PLOTLY_SCALES", + "get_colorscale", + "sample_colorscale", +] diff --git a/venv/lib/python3.8/site-packages/plotly/express/data/__init__.py b/venv/lib/python3.8/site-packages/plotly/express/data/__init__.py new file mode 100644 index 0000000..5096f33 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/data/__init__.py @@ -0,0 +1,18 @@ +# ruff: noqa: F405 +"""Built-in datasets for demonstration, educational and test purposes.""" + +from plotly.data import * # noqa: F403 + +__all__ = [ + "carshare", + "election", + "election_geojson", + "experiment", + "gapminder", + "iris", + "medals_wide", + "medals_long", + "stocks", + "tips", + "wind", +] diff --git a/venv/lib/python3.8/site-packages/plotly/express/imshow_utils.py b/venv/lib/python3.8/site-packages/plotly/express/imshow_utils.py new file mode 100644 index 0000000..7f110ed --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/imshow_utils.py @@ -0,0 +1,247 @@ +"""Vendored code from scikit-image in order to limit the number of dependencies +Extracted from scikit-image/skimage/exposure/exposure.py +""" + +import numpy as np + +from warnings import warn + +_integer_types = ( + np.byte, + np.ubyte, # 8 bits + np.short, + np.ushort, # 16 bits + np.intc, + np.uintc, # 16 or 32 or 64 bits + np.int_, + np.uint, # 32 or 64 bits + np.longlong, + np.ulonglong, +) # 64 bits +_integer_ranges = {t: (np.iinfo(t).min, np.iinfo(t).max) for t in _integer_types} +dtype_range = { + np.bool_: (False, True), + np.float16: (-1, 1), + np.float32: (-1, 1), + np.float64: (-1, 1), +} +dtype_range.update(_integer_ranges) + + +DTYPE_RANGE = dtype_range.copy() +DTYPE_RANGE.update((d.__name__, limits) for d, limits in dtype_range.items()) +DTYPE_RANGE.update( + { + "uint10": (0, 2**10 - 1), + "uint12": (0, 2**12 - 1), + "uint14": (0, 2**14 - 1), + "bool": dtype_range[np.bool_], + "float": dtype_range[np.float64], + } +) + + +def intensity_range(image, range_values="image", clip_negative=False): + """Return image intensity range (min, max) based on desired value type. + + Parameters + ---------- + image : array + Input image. + range_values : str or 2-tuple, optional + The image intensity range is configured by this parameter. + The possible values for this parameter are enumerated below. + + 'image' + Return image min/max as the range. + 'dtype' + Return min/max of the image's dtype as the range. + dtype-name + Return intensity range based on desired `dtype`. Must be valid key + in `DTYPE_RANGE`. Note: `image` is ignored for this range type. + 2-tuple + Return `range_values` as min/max intensities. Note that there's no + reason to use this function if you just want to specify the + intensity range explicitly. This option is included for functions + that use `intensity_range` to support all desired range types. + + clip_negative : bool, optional + If True, clip the negative range (i.e. return 0 for min intensity) + even if the image dtype allows negative values. + """ + if range_values == "dtype": + range_values = image.dtype.type + + if range_values == "image": + i_min = np.min(image) + i_max = np.max(image) + elif range_values in DTYPE_RANGE: + i_min, i_max = DTYPE_RANGE[range_values] + if clip_negative: + i_min = 0 + else: + i_min, i_max = range_values + return i_min, i_max + + +def _output_dtype(dtype_or_range): + """Determine the output dtype for rescale_intensity. + + The dtype is determined according to the following rules: + - if ``dtype_or_range`` is a dtype, that is the output dtype. + - if ``dtype_or_range`` is a dtype string, that is the dtype used, unless + it is not a NumPy data type (e.g. 'uint12' for 12-bit unsigned integers), + in which case the data type that can contain it will be used + (e.g. uint16 in this case). + - if ``dtype_or_range`` is a pair of values, the output data type will be + float. + + Parameters + ---------- + dtype_or_range : type, string, or 2-tuple of int/float + The desired range for the output, expressed as either a NumPy dtype or + as a (min, max) pair of numbers. + + Returns + ------- + out_dtype : type + The data type appropriate for the desired output. + """ + if type(dtype_or_range) in [list, tuple, np.ndarray]: + # pair of values: always return float. + return np.float_ + if isinstance(dtype_or_range, type): + # already a type: return it + return dtype_or_range + if dtype_or_range in DTYPE_RANGE: + # string key in DTYPE_RANGE dictionary + try: + # if it's a canonical numpy dtype, convert + return np.dtype(dtype_or_range).type + except TypeError: # uint10, uint12, uint14 + # otherwise, return uint16 + return np.uint16 + else: + raise ValueError( + "Incorrect value for out_range, should be a valid image data " + "type or a pair of values, got %s." % str(dtype_or_range) + ) + + +def rescale_intensity(image, in_range="image", out_range="dtype"): + """Return image after stretching or shrinking its intensity levels. + + The desired intensity range of the input and output, `in_range` and + `out_range` respectively, are used to stretch or shrink the intensity range + of the input image. See examples below. + + Parameters + ---------- + image : array + Image array. + in_range, out_range : str or 2-tuple, optional + Min and max intensity values of input and output image. + The possible values for this parameter are enumerated below. + + 'image' + Use image min/max as the intensity range. + 'dtype' + Use min/max of the image's dtype as the intensity range. + dtype-name + Use intensity range based on desired `dtype`. Must be valid key + in `DTYPE_RANGE`. + 2-tuple + Use `range_values` as explicit min/max intensities. + + Returns + ------- + out : array + Image array after rescaling its intensity. This image is the same dtype + as the input image. + + Notes + ----- + .. versionchanged:: 0.17 + The dtype of the output array has changed to match the output dtype, or + float if the output range is specified by a pair of floats. + + See Also + -------- + equalize_hist + + Examples + -------- + By default, the min/max intensities of the input image are stretched to + the limits allowed by the image's dtype, since `in_range` defaults to + 'image' and `out_range` defaults to 'dtype': + + >>> image = np.array([51, 102, 153], dtype=np.uint8) + >>> rescale_intensity(image) + array([ 0, 127, 255], dtype=uint8) + + It's easy to accidentally convert an image dtype from uint8 to float: + + >>> 1.0 * image + array([ 51., 102., 153.]) + + Use `rescale_intensity` to rescale to the proper range for float dtypes: + + >>> image_float = 1.0 * image + >>> rescale_intensity(image_float) + array([0. , 0.5, 1. ]) + + To maintain the low contrast of the original, use the `in_range` parameter: + + >>> rescale_intensity(image_float, in_range=(0, 255)) + array([0.2, 0.4, 0.6]) + + If the min/max value of `in_range` is more/less than the min/max image + intensity, then the intensity levels are clipped: + + >>> rescale_intensity(image_float, in_range=(0, 102)) + array([0.5, 1. , 1. ]) + + If you have an image with signed integers but want to rescale the image to + just the positive range, use the `out_range` parameter. In that case, the + output dtype will be float: + + >>> image = np.array([-10, 0, 10], dtype=np.int8) + >>> rescale_intensity(image, out_range=(0, 127)) + array([ 0. , 63.5, 127. ]) + + To get the desired range with a specific dtype, use ``.astype()``: + + >>> rescale_intensity(image, out_range=(0, 127)).astype(np.int8) + array([ 0, 63, 127], dtype=int8) + + If the input image is constant, the output will be clipped directly to the + output range: + >>> image = np.array([130, 130, 130], dtype=np.int32) + >>> rescale_intensity(image, out_range=(0, 127)).astype(np.int32) + array([127, 127, 127], dtype=int32) + """ + if out_range in ["dtype", "image"]: + out_dtype = _output_dtype(image.dtype.type) + else: + out_dtype = _output_dtype(out_range) + + imin, imax = map(float, intensity_range(image, in_range)) + omin, omax = map( + float, intensity_range(image, out_range, clip_negative=(imin >= 0)) + ) + + if np.any(np.isnan([imin, imax, omin, omax])): + warn( + "One or more intensity levels are NaN. Rescaling will broadcast " + "NaN to the full image. Provide intensity levels yourself to " + "avoid this. E.g. with np.nanmin(image), np.nanmax(image).", + stacklevel=2, + ) + + image = np.clip(image, imin, imax) + + if imin != imax: + image = (image - imin) / (imax - imin) + return np.asarray(image * (omax - omin) + omin, dtype=out_dtype) + else: + return np.clip(image, omin, omax).astype(out_dtype) diff --git a/venv/lib/python3.8/site-packages/plotly/express/trendline_functions/__init__.py b/venv/lib/python3.8/site-packages/plotly/express/trendline_functions/__init__.py new file mode 100644 index 0000000..18ff219 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/express/trendline_functions/__init__.py @@ -0,0 +1,170 @@ +""" +The `trendline_functions` module contains functions which are called by Plotly Express +when the `trendline` argument is used. Valid values for `trendline` are the names of the +functions in this module, and the value of the `trendline_options` argument to PX +functions is passed in as the first argument to these functions when called. + +Note that the functions in this module are not meant to be called directly, and are +exposed as part of the public API for documentation purposes. +""" + +__all__ = ["ols", "lowess", "rolling", "ewm", "expanding"] + + +def ols(trendline_options, x_raw, x, y, x_label, y_label, non_missing): + """Ordinary Least Squares (OLS) trendline function + + Requires `statsmodels` to be installed. + + This trendline function causes fit results to be stored within the figure, + accessible via the `plotly.express.get_trendline_results` function. The fit results + are the output of the `statsmodels.api.OLS` function. + + Valid keys for the `trendline_options` dict are: + + - `add_constant` (`bool`, default `True`): if `False`, the trendline passes through + the origin but if `True` a y-intercept is fitted. + + - `log_x` and `log_y` (`bool`, default `False`): if `True` the OLS is computed with + respect to the base 10 logarithm of the input. Note that this means no zeros can + be present in the input. + """ + import numpy as np + + valid_options = ["add_constant", "log_x", "log_y"] + for k in trendline_options.keys(): + if k not in valid_options: + raise ValueError( + "OLS trendline_options keys must be one of [%s] but got '%s'" + % (", ".join(valid_options), k) + ) + + import statsmodels.api as sm + + add_constant = trendline_options.get("add_constant", True) + log_x = trendline_options.get("log_x", False) + log_y = trendline_options.get("log_y", False) + + if log_y: + if np.any(y <= 0): + raise ValueError( + "Can't do OLS trendline with `log_y=True` when `y` contains non-positive values." + ) + y = np.log10(y) + y_label = "log10(%s)" % y_label + if log_x: + if np.any(x <= 0): + raise ValueError( + "Can't do OLS trendline with `log_x=True` when `x` contains non-positive values." + ) + x = np.log10(x) + x_label = "log10(%s)" % x_label + if add_constant: + x = sm.add_constant(x) + fit_results = sm.OLS(y, x, missing="drop").fit() + y_out = fit_results.predict() + if log_y: + y_out = np.power(10, y_out) + hover_header = "OLS trendline
" + if len(fit_results.params) == 2: + hover_header += "%s = %g * %s + %g
" % ( + y_label, + fit_results.params[1], + x_label, + fit_results.params[0], + ) + elif not add_constant: + hover_header += "%s = %g * %s
" % (y_label, fit_results.params[0], x_label) + else: + hover_header += "%s = %g
" % (y_label, fit_results.params[0]) + hover_header += "R2=%f

" % fit_results.rsquared + return y_out, hover_header, fit_results + + +def lowess(trendline_options, x_raw, x, y, x_label, y_label, non_missing): + """LOcally WEighted Scatterplot Smoothing (LOWESS) trendline function + + Requires `statsmodels` to be installed. + + Valid keys for the `trendline_options` dict are: + + - `frac` (`float`, default `0.6666666`): the `frac` parameter from the + `statsmodels.api.nonparametric.lowess` function + """ + + valid_options = ["frac"] + for k in trendline_options.keys(): + if k not in valid_options: + raise ValueError( + "LOWESS trendline_options keys must be one of [%s] but got '%s'" + % (", ".join(valid_options), k) + ) + + import statsmodels.api as sm + + frac = trendline_options.get("frac", 0.6666666) + y_out = sm.nonparametric.lowess(y, x, missing="drop", frac=frac)[:, 1] + hover_header = "LOWESS trendline

" + return y_out, hover_header, None + + +def _pandas(mode, trendline_options, x_raw, y, non_missing): + import numpy as np + + try: + import pandas as pd + except ImportError: + msg = "Trendline requires pandas to be installed" + raise ImportError(msg) + + modes = dict(rolling="Rolling", ewm="Exponentially Weighted", expanding="Expanding") + trendline_options = trendline_options.copy() + function_name = trendline_options.pop("function", "mean") + function_args = trendline_options.pop("function_args", dict()) + + series = pd.Series(np.copy(y), index=x_raw.to_pandas()) + + # TODO: Narwhals Series/DataFrame do not support rolling, ewm nor expanding, therefore + # it fallbacks to pandas Series independently of the original type. + # Plotly issue: https://github.com/plotly/plotly.py/issues/4834 + # Narwhals issue: https://github.com/narwhals-dev/narwhals/issues/1254 + agg = getattr(series, mode) # e.g. series.rolling + agg_obj = agg(**trendline_options) # e.g. series.rolling(**opts) + function = getattr(agg_obj, function_name) # e.g. series.rolling(**opts).mean + y_out = function(**function_args) # e.g. series.rolling(**opts).mean(**opts) + y_out = y_out[non_missing] + hover_header = "%s %s trendline

" % (modes[mode], function_name) + return y_out, hover_header, None + + +def rolling(trendline_options, x_raw, x, y, x_label, y_label, non_missing): + """Rolling trendline function + + The value of the `function` key of the `trendline_options` dict is the function to + use (defaults to `mean`) and the value of the `function_args` key are taken to be + its arguments as a dict. The remainder of the `trendline_options` dict is passed as + keyword arguments into the `pandas.Series.rolling` function. + """ + return _pandas("rolling", trendline_options, x_raw, y, non_missing) + + +def expanding(trendline_options, x_raw, x, y, x_label, y_label, non_missing): + """Expanding trendline function + + The value of the `function` key of the `trendline_options` dict is the function to + use (defaults to `mean`) and the value of the `function_args` key are taken to be + its arguments as a dict. The remainder of the `trendline_options` dict is passed as + keyword arguments into the `pandas.Series.expanding` function. + """ + return _pandas("expanding", trendline_options, x_raw, y, non_missing) + + +def ewm(trendline_options, x_raw, x, y, x_label, y_label, non_missing): + """Exponentially Weighted Moment (EWM) trendline function + + The value of the `function` key of the `trendline_options` dict is the function to + use (defaults to `mean`) and the value of the `function_args` key are taken to be + its arguments as a dict. The remainder of the `trendline_options` dict is passed as + keyword arguments into the `pandas.Series.ewm` function. + """ + return _pandas("ewm", trendline_options, x_raw, y, non_missing) diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_2d_density.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_2d_density.py new file mode 100644 index 0000000..3094d0b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_2d_density.py @@ -0,0 +1,155 @@ +from numbers import Number + +import plotly.exceptions + +import plotly.colors as clrs +from plotly.graph_objs import graph_objs + + +def make_linear_colorscale(colors): + """ + Makes a list of colors into a colorscale-acceptable form + + For documentation regarding to the form of the output, see + https://plot.ly/python/reference/#mesh3d-colorscale + """ + scale = 1.0 / (len(colors) - 1) + return [[i * scale, color] for i, color in enumerate(colors)] + + +def create_2d_density( + x, + y, + colorscale="Earth", + ncontours=20, + hist_color=(0, 0, 0.5), + point_color=(0, 0, 0.5), + point_size=2, + title="2D Density Plot", + height=600, + width=600, +): + """ + **deprecated**, use instead + :func:`plotly.express.density_heatmap`. + + :param (list|array) x: x-axis data for plot generation + :param (list|array) y: y-axis data for plot generation + :param (str|tuple|list) colorscale: either a plotly scale name, an rgb + or hex color, a color tuple or a list or tuple of colors. An rgb + color is of the form 'rgb(x, y, z)' where x, y, z belong to the + interval [0, 255] and a color tuple is a tuple of the form + (a, b, c) where a, b and c belong to [0, 1]. If colormap is a + list, it must contain the valid color types aforementioned as its + members. + :param (int) ncontours: the number of 2D contours to draw on the plot + :param (str) hist_color: the color of the plotted histograms + :param (str) point_color: the color of the scatter points + :param (str) point_size: the color of the scatter points + :param (str) title: set the title for the plot + :param (float) height: the height of the chart + :param (float) width: the width of the chart + + Examples + -------- + + Example 1: Simple 2D Density Plot + + >>> from plotly.figure_factory import create_2d_density + >>> import numpy as np + + >>> # Make data points + >>> t = np.linspace(-1,1.2,2000) + >>> x = (t**3)+(0.3*np.random.randn(2000)) + >>> y = (t**6)+(0.3*np.random.randn(2000)) + + >>> # Create a figure + >>> fig = create_2d_density(x, y) + + >>> # Plot the data + >>> fig.show() + + Example 2: Using Parameters + + >>> from plotly.figure_factory import create_2d_density + + >>> import numpy as np + + >>> # Make data points + >>> t = np.linspace(-1,1.2,2000) + >>> x = (t**3)+(0.3*np.random.randn(2000)) + >>> y = (t**6)+(0.3*np.random.randn(2000)) + + >>> # Create custom colorscale + >>> colorscale = ['#7A4579', '#D56073', 'rgb(236,158,105)', + ... (1, 1, 0.2), (0.98,0.98,0.98)] + + >>> # Create a figure + >>> fig = create_2d_density(x, y, colorscale=colorscale, + ... hist_color='rgb(255, 237, 222)', point_size=3) + + >>> # Plot the data + >>> fig.show() + """ + + # validate x and y are filled with numbers only + for array in [x, y]: + if not all(isinstance(element, Number) for element in array): + raise plotly.exceptions.PlotlyError( + "All elements of your 'x' and 'y' lists must be numbers." + ) + + # validate x and y are the same length + if len(x) != len(y): + raise plotly.exceptions.PlotlyError( + "Both lists 'x' and 'y' must be the same length." + ) + + colorscale = clrs.validate_colors(colorscale, "rgb") + colorscale = make_linear_colorscale(colorscale) + + # validate hist_color and point_color + hist_color = clrs.validate_colors(hist_color, "rgb") + point_color = clrs.validate_colors(point_color, "rgb") + + trace1 = graph_objs.Scatter( + x=x, + y=y, + mode="markers", + name="points", + marker=dict(color=point_color[0], size=point_size, opacity=0.4), + ) + trace2 = graph_objs.Histogram2dContour( + x=x, + y=y, + name="density", + ncontours=ncontours, + colorscale=colorscale, + reversescale=True, + showscale=False, + ) + trace3 = graph_objs.Histogram( + x=x, name="x density", marker=dict(color=hist_color[0]), yaxis="y2" + ) + trace4 = graph_objs.Histogram( + y=y, name="y density", marker=dict(color=hist_color[0]), xaxis="x2" + ) + data = [trace1, trace2, trace3, trace4] + + layout = graph_objs.Layout( + showlegend=False, + autosize=False, + title=title, + height=height, + width=width, + xaxis=dict(domain=[0, 0.85], showgrid=False, zeroline=False), + yaxis=dict(domain=[0, 0.85], showgrid=False, zeroline=False), + margin=dict(t=50), + hovermode="closest", + bargap=0, + xaxis2=dict(domain=[0.85, 1], showgrid=False, zeroline=False), + yaxis2=dict(domain=[0.85, 1], showgrid=False, zeroline=False), + ) + + fig = graph_objs.Figure(data=data, layout=layout) + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/__init__.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/__init__.py new file mode 100644 index 0000000..1919ca8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/__init__.py @@ -0,0 +1,69 @@ +# ruff: noqa: E402 + +from plotly import optional_imports + +# Require that numpy exists for figure_factory +np = optional_imports.get_module("numpy") +if np is None: + raise ImportError( + """\ +The figure factory module requires the numpy package""" + ) + + +from plotly.figure_factory._2d_density import create_2d_density +from plotly.figure_factory._annotated_heatmap import create_annotated_heatmap +from plotly.figure_factory._bullet import create_bullet +from plotly.figure_factory._candlestick import create_candlestick +from plotly.figure_factory._dendrogram import create_dendrogram +from plotly.figure_factory._distplot import create_distplot +from plotly.figure_factory._facet_grid import create_facet_grid +from plotly.figure_factory._gantt import create_gantt +from plotly.figure_factory._ohlc import create_ohlc +from plotly.figure_factory._quiver import create_quiver +from plotly.figure_factory._scatterplot import create_scatterplotmatrix +from plotly.figure_factory._streamline import create_streamline +from plotly.figure_factory._table import create_table +from plotly.figure_factory._trisurf import create_trisurf +from plotly.figure_factory._violin import create_violin + +if optional_imports.get_module("pandas") is not None: + from plotly.figure_factory._county_choropleth import create_choropleth + from plotly.figure_factory._hexbin_mapbox import create_hexbin_mapbox +else: + + def create_choropleth(*args, **kwargs): + raise ImportError("Please install pandas to use `create_choropleth`") + + def create_hexbin_mapbox(*args, **kwargs): + raise ImportError("Please install pandas to use `create_hexbin_mapbox`") + + +if optional_imports.get_module("skimage") is not None: + from plotly.figure_factory._ternary_contour import create_ternary_contour +else: + + def create_ternary_contour(*args, **kwargs): + raise ImportError("Please install scikit-image to use `create_ternary_contour`") + + +__all__ = [ + "create_2d_density", + "create_annotated_heatmap", + "create_bullet", + "create_candlestick", + "create_choropleth", + "create_dendrogram", + "create_distplot", + "create_facet_grid", + "create_gantt", + "create_hexbin_mapbox", + "create_ohlc", + "create_quiver", + "create_scatterplotmatrix", + "create_streamline", + "create_table", + "create_ternary_contour", + "create_trisurf", + "create_violin", +] diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_annotated_heatmap.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_annotated_heatmap.py new file mode 100644 index 0000000..5da24ae --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_annotated_heatmap.py @@ -0,0 +1,307 @@ +import plotly.colors as clrs +from plotly import exceptions, optional_imports +from plotly.figure_factory import utils +from plotly.graph_objs import graph_objs +from plotly.validator_cache import ValidatorCache + +# Optional imports, may be None for users that only use our core functionality. +np = optional_imports.get_module("numpy") + + +def validate_annotated_heatmap(z, x, y, annotation_text): + """ + Annotated-heatmap-specific validations + + Check that if a text matrix is supplied, it has the same + dimensions as the z matrix. + + See FigureFactory.create_annotated_heatmap() for params + + :raises: (PlotlyError) If z and text matrices do not have the same + dimensions. + """ + if annotation_text is not None and isinstance(annotation_text, list): + utils.validate_equal_length(z, annotation_text) + for lst in range(len(z)): + if len(z[lst]) != len(annotation_text[lst]): + raise exceptions.PlotlyError( + "z and text should have the same dimensions" + ) + + if x: + if len(x) != len(z[0]): + raise exceptions.PlotlyError( + "oops, the x list that you " + "provided does not match the " + "width of your z matrix " + ) + + if y: + if len(y) != len(z): + raise exceptions.PlotlyError( + "oops, the y list that you " + "provided does not match the " + "length of your z matrix " + ) + + +def create_annotated_heatmap( + z, + x=None, + y=None, + annotation_text=None, + colorscale="Plasma", + font_colors=None, + showscale=False, + reversescale=False, + **kwargs, +): + """ + **deprecated**, use instead + :func:`plotly.express.imshow`. + + Function that creates annotated heatmaps + + This function adds annotations to each cell of the heatmap. + + :param (list[list]|ndarray) z: z matrix to create heatmap. + :param (list) x: x axis labels. + :param (list) y: y axis labels. + :param (list[list]|ndarray) annotation_text: Text strings for + annotations. Should have the same dimensions as the z matrix. If no + text is added, the values of the z matrix are annotated. Default = + z matrix values. + :param (list|str) colorscale: heatmap colorscale. + :param (list) font_colors: List of two color strings: [min_text_color, + max_text_color] where min_text_color is applied to annotations for + heatmap values < (max_value - min_value)/2. If font_colors is not + defined, the colors are defined logically as black or white + depending on the heatmap's colorscale. + :param (bool) showscale: Display colorscale. Default = False + :param (bool) reversescale: Reverse colorscale. Default = False + :param kwargs: kwargs passed through plotly.graph_objs.Heatmap. + These kwargs describe other attributes about the annotated Heatmap + trace such as the colorscale. For more information on valid kwargs + call help(plotly.graph_objs.Heatmap) + + Example 1: Simple annotated heatmap with default configuration + + >>> import plotly.figure_factory as ff + + >>> z = [[0.300000, 0.00000, 0.65, 0.300000], + ... [1, 0.100005, 0.45, 0.4300], + ... [0.300000, 0.00000, 0.65, 0.300000], + ... [1, 0.100005, 0.45, 0.00000]] + + >>> fig = ff.create_annotated_heatmap(z) + >>> fig.show() + """ + + # Avoiding mutables in the call signature + font_colors = font_colors if font_colors is not None else [] + validate_annotated_heatmap(z, x, y, annotation_text) + + # validate colorscale + colorscale_validator = ValidatorCache.get_validator("heatmap", "colorscale") + colorscale = colorscale_validator.validate_coerce(colorscale) + + annotations = _AnnotatedHeatmap( + z, x, y, annotation_text, colorscale, font_colors, reversescale, **kwargs + ).make_annotations() + + if x or y: + trace = dict( + type="heatmap", + z=z, + x=x, + y=y, + colorscale=colorscale, + showscale=showscale, + reversescale=reversescale, + **kwargs, + ) + layout = dict( + annotations=annotations, + xaxis=dict(ticks="", dtick=1, side="top", gridcolor="rgb(0, 0, 0)"), + yaxis=dict(ticks="", dtick=1, ticksuffix=" "), + ) + else: + trace = dict( + type="heatmap", + z=z, + colorscale=colorscale, + showscale=showscale, + reversescale=reversescale, + **kwargs, + ) + layout = dict( + annotations=annotations, + xaxis=dict( + ticks="", side="top", gridcolor="rgb(0, 0, 0)", showticklabels=False + ), + yaxis=dict(ticks="", ticksuffix=" ", showticklabels=False), + ) + + data = [trace] + + return graph_objs.Figure(data=data, layout=layout) + + +def to_rgb_color_list(color_str, default): + color_str = color_str.strip() + if color_str.startswith("rgb"): + return [int(v) for v in color_str.strip("rgba()").split(",")] + elif color_str.startswith("#"): + return clrs.hex_to_rgb(color_str) + else: + return default + + +def should_use_black_text(background_color): + return ( + background_color[0] * 0.299 + + background_color[1] * 0.587 + + background_color[2] * 0.114 + ) > 186 + + +class _AnnotatedHeatmap(object): + """ + Refer to TraceFactory.create_annotated_heatmap() for docstring + """ + + def __init__( + self, z, x, y, annotation_text, colorscale, font_colors, reversescale, **kwargs + ): + self.z = z + if x: + self.x = x + else: + self.x = range(len(z[0])) + if y: + self.y = y + else: + self.y = range(len(z)) + if annotation_text is not None: + self.annotation_text = annotation_text + else: + self.annotation_text = self.z + self.colorscale = colorscale + self.reversescale = reversescale + self.font_colors = font_colors + + if np and isinstance(self.z, np.ndarray): + self.zmin = np.amin(self.z) + self.zmax = np.amax(self.z) + else: + self.zmin = min([v for row in self.z for v in row]) + self.zmax = max([v for row in self.z for v in row]) + + if kwargs.get("zmin", None) is not None: + self.zmin = kwargs["zmin"] + if kwargs.get("zmax", None) is not None: + self.zmax = kwargs["zmax"] + + self.zmid = (self.zmax + self.zmin) / 2 + + if kwargs.get("zmid", None) is not None: + self.zmid = kwargs["zmid"] + + def get_text_color(self): + """ + Get font color for annotations. + + The annotated heatmap can feature two text colors: min_text_color and + max_text_color. The min_text_color is applied to annotations for + heatmap values < (max_value - min_value)/2. The user can define these + two colors. Otherwise the colors are defined logically as black or + white depending on the heatmap's colorscale. + + :rtype (string, string) min_text_color, max_text_color: text + color for annotations for heatmap values < + (max_value - min_value)/2 and text color for annotations for + heatmap values >= (max_value - min_value)/2 + """ + # Plotly colorscales ranging from a lighter shade to a darker shade + colorscales = [ + "Greys", + "Greens", + "Blues", + "YIGnBu", + "YIOrRd", + "RdBu", + "Picnic", + "Jet", + "Hot", + "Blackbody", + "Earth", + "Electric", + "Viridis", + "Cividis", + ] + # Plotly colorscales ranging from a darker shade to a lighter shade + colorscales_reverse = ["Reds"] + + white = "#FFFFFF" + black = "#000000" + if self.font_colors: + min_text_color = self.font_colors[0] + max_text_color = self.font_colors[-1] + elif self.colorscale in colorscales and self.reversescale: + min_text_color = black + max_text_color = white + elif self.colorscale in colorscales: + min_text_color = white + max_text_color = black + elif self.colorscale in colorscales_reverse and self.reversescale: + min_text_color = white + max_text_color = black + elif self.colorscale in colorscales_reverse: + min_text_color = black + max_text_color = white + elif isinstance(self.colorscale, list): + min_col = to_rgb_color_list(self.colorscale[0][1], [255, 255, 255]) + max_col = to_rgb_color_list(self.colorscale[-1][1], [255, 255, 255]) + + # swap min/max colors if reverse scale + if self.reversescale: + min_col, max_col = max_col, min_col + + if should_use_black_text(min_col): + min_text_color = black + else: + min_text_color = white + + if should_use_black_text(max_col): + max_text_color = black + else: + max_text_color = white + else: + min_text_color = black + max_text_color = black + return min_text_color, max_text_color + + def make_annotations(self): + """ + Get annotations for each cell of the heatmap with graph_objs.Annotation + + :rtype (list[dict]) annotations: list of annotations for each cell of + the heatmap + """ + min_text_color, max_text_color = _AnnotatedHeatmap.get_text_color(self) + annotations = [] + for n, row in enumerate(self.z): + for m, val in enumerate(row): + font_color = min_text_color if val < self.zmid else max_text_color + annotations.append( + graph_objs.layout.Annotation( + text=str(self.annotation_text[n][m]), + x=self.x[m], + y=self.y[n], + xref="x1", + yref="y1", + font=dict(color=font_color), + showarrow=False, + ) + ) + return annotations diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_bullet.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_bullet.py new file mode 100644 index 0000000..ce51e93 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_bullet.py @@ -0,0 +1,366 @@ +import math + +from plotly import exceptions, optional_imports +import plotly.colors as clrs +from plotly.figure_factory import utils + +import plotly +import plotly.graph_objs as go + +pd = optional_imports.get_module("pandas") + + +def _bullet( + df, + markers, + measures, + ranges, + subtitles, + titles, + orientation, + range_colors, + measure_colors, + horizontal_spacing, + vertical_spacing, + scatter_options, + layout_options, +): + num_of_lanes = len(df) + num_of_rows = num_of_lanes if orientation == "h" else 1 + num_of_cols = 1 if orientation == "h" else num_of_lanes + if not horizontal_spacing: + horizontal_spacing = 1.0 / num_of_lanes + if not vertical_spacing: + vertical_spacing = 1.0 / num_of_lanes + fig = plotly.subplots.make_subplots( + num_of_rows, + num_of_cols, + print_grid=False, + horizontal_spacing=horizontal_spacing, + vertical_spacing=vertical_spacing, + ) + + # layout + fig["layout"].update( + dict(shapes=[]), + title="Bullet Chart", + height=600, + width=1000, + showlegend=False, + barmode="stack", + annotations=[], + margin=dict(l=120 if orientation == "h" else 80), + ) + + # update layout + fig["layout"].update(layout_options) + + if orientation == "h": + width_axis = "yaxis" + length_axis = "xaxis" + else: + width_axis = "xaxis" + length_axis = "yaxis" + + for key in fig["layout"]: + if "xaxis" in key or "yaxis" in key: + fig["layout"][key]["showgrid"] = False + fig["layout"][key]["zeroline"] = False + if length_axis in key: + fig["layout"][key]["tickwidth"] = 1 + if width_axis in key: + fig["layout"][key]["showticklabels"] = False + fig["layout"][key]["range"] = [0, 1] + + # narrow domain if 1 bar + if num_of_lanes <= 1: + fig["layout"][width_axis + "1"]["domain"] = [0.4, 0.6] + + if not range_colors: + range_colors = ["rgb(200, 200, 200)", "rgb(245, 245, 245)"] + if not measure_colors: + measure_colors = ["rgb(31, 119, 180)", "rgb(176, 196, 221)"] + + for row in range(num_of_lanes): + # ranges bars + for idx in range(len(df.iloc[row]["ranges"])): + inter_colors = clrs.n_colors( + range_colors[0], range_colors[1], len(df.iloc[row]["ranges"]), "rgb" + ) + x = ( + [sorted(df.iloc[row]["ranges"])[-1 - idx]] + if orientation == "h" + else [0] + ) + y = ( + [0] + if orientation == "h" + else [sorted(df.iloc[row]["ranges"])[-1 - idx]] + ) + bar = go.Bar( + x=x, + y=y, + marker=dict(color=inter_colors[-1 - idx]), + name="ranges", + hoverinfo="x" if orientation == "h" else "y", + orientation=orientation, + width=2, + base=0, + xaxis="x{}".format(row + 1), + yaxis="y{}".format(row + 1), + ) + fig.add_trace(bar) + + # measures bars + for idx in range(len(df.iloc[row]["measures"])): + inter_colors = clrs.n_colors( + measure_colors[0], + measure_colors[1], + len(df.iloc[row]["measures"]), + "rgb", + ) + x = ( + [sorted(df.iloc[row]["measures"])[-1 - idx]] + if orientation == "h" + else [0.5] + ) + y = ( + [0.5] + if orientation == "h" + else [sorted(df.iloc[row]["measures"])[-1 - idx]] + ) + bar = go.Bar( + x=x, + y=y, + marker=dict(color=inter_colors[-1 - idx]), + name="measures", + hoverinfo="x" if orientation == "h" else "y", + orientation=orientation, + width=0.4, + base=0, + xaxis="x{}".format(row + 1), + yaxis="y{}".format(row + 1), + ) + fig.add_trace(bar) + + # markers + x = df.iloc[row]["markers"] if orientation == "h" else [0.5] + y = [0.5] if orientation == "h" else df.iloc[row]["markers"] + markers = go.Scatter( + x=x, + y=y, + name="markers", + hoverinfo="x" if orientation == "h" else "y", + xaxis="x{}".format(row + 1), + yaxis="y{}".format(row + 1), + **scatter_options, + ) + + fig.add_trace(markers) + + # titles and subtitles + title = df.iloc[row]["titles"] + if "subtitles" in df: + subtitle = "
{}".format(df.iloc[row]["subtitles"]) + else: + subtitle = "" + label = "{}".format(title) + subtitle + annot = utils.annotation_dict_for_label( + label, + (num_of_lanes - row if orientation == "h" else row + 1), + num_of_lanes, + vertical_spacing if orientation == "h" else horizontal_spacing, + "row" if orientation == "h" else "col", + True if orientation == "h" else False, + False, + ) + fig["layout"]["annotations"] += (annot,) + + return fig + + +def create_bullet( + data, + markers=None, + measures=None, + ranges=None, + subtitles=None, + titles=None, + orientation="h", + range_colors=("rgb(200, 200, 200)", "rgb(245, 245, 245)"), + measure_colors=("rgb(31, 119, 180)", "rgb(176, 196, 221)"), + horizontal_spacing=None, + vertical_spacing=None, + scatter_options={}, + **layout_options, +): + """ + **deprecated**, use instead the plotly.graph_objects trace + :class:`plotly.graph_objects.Indicator`. + + :param (pd.DataFrame | list | tuple) data: either a list/tuple of + dictionaries or a pandas DataFrame. + :param (str) markers: the column name or dictionary key for the markers in + each subplot. + :param (str) measures: the column name or dictionary key for the measure + bars in each subplot. This bar usually represents the quantitative + measure of performance, usually a list of two values [a, b] and are + the blue bars in the foreground of each subplot by default. + :param (str) ranges: the column name or dictionary key for the qualitative + ranges of performance, usually a 3-item list [bad, okay, good]. They + correspond to the grey bars in the background of each chart. + :param (str) subtitles: the column name or dictionary key for the subtitle + of each subplot chart. The subplots are displayed right underneath + each title. + :param (str) titles: the column name or dictionary key for the main label + of each subplot chart. + :param (bool) orientation: if 'h', the bars are placed horizontally as + rows. If 'v' the bars are placed vertically in the chart. + :param (list) range_colors: a tuple of two colors between which all + the rectangles for the range are drawn. These rectangles are meant to + be qualitative indicators against which the marker and measure bars + are compared. + Default=('rgb(200, 200, 200)', 'rgb(245, 245, 245)') + :param (list) measure_colors: a tuple of two colors which is used to color + the thin quantitative bars in the bullet chart. + Default=('rgb(31, 119, 180)', 'rgb(176, 196, 221)') + :param (float) horizontal_spacing: see the 'horizontal_spacing' param in + plotly.tools.make_subplots. Ranges between 0 and 1. + :param (float) vertical_spacing: see the 'vertical_spacing' param in + plotly.tools.make_subplots. Ranges between 0 and 1. + :param (dict) scatter_options: describes attributes for the scatter trace + in each subplot such as name and marker size. Call + help(plotly.graph_objs.Scatter) for more information on valid params. + :param layout_options: describes attributes for the layout of the figure + such as title, height and width. Call help(plotly.graph_objs.Layout) + for more information on valid params. + + Example 1: Use a Dictionary + + >>> import plotly.figure_factory as ff + + >>> data = [ + ... {"label": "revenue", "sublabel": "us$, in thousands", + ... "range": [150, 225, 300], "performance": [220,270], "point": [250]}, + ... {"label": "Profit", "sublabel": "%", "range": [20, 25, 30], + ... "performance": [21, 23], "point": [26]}, + ... {"label": "Order Size", "sublabel":"US$, average","range": [350, 500, 600], + ... "performance": [100,320],"point": [550]}, + ... {"label": "New Customers", "sublabel": "count", "range": [1400, 2000, 2500], + ... "performance": [1000, 1650],"point": [2100]}, + ... {"label": "Satisfaction", "sublabel": "out of 5","range": [3.5, 4.25, 5], + ... "performance": [3.2, 4.7], "point": [4.4]} + ... ] + + >>> fig = ff.create_bullet( + ... data, titles='label', subtitles='sublabel', markers='point', + ... measures='performance', ranges='range', orientation='h', + ... title='my simple bullet chart' + ... ) + >>> fig.show() + + Example 2: Use a DataFrame with Custom Colors + + >>> import plotly.figure_factory as ff + >>> import pandas as pd + >>> data = pd.read_json('https://cdn.rawgit.com/plotly/datasets/master/BulletData.json') + + >>> fig = ff.create_bullet( + ... data, titles='title', markers='markers', measures='measures', + ... orientation='v', measure_colors=['rgb(14, 52, 75)', 'rgb(31, 141, 127)'], + ... scatter_options={'marker': {'symbol': 'circle'}}, width=700) + >>> fig.show() + """ + # validate df + if not pd: + raise ImportError("'pandas' must be installed for this figure factory.") + + if utils.is_sequence(data): + if not all(isinstance(item, dict) for item in data): + raise exceptions.PlotlyError( + "Every entry of the data argument list, tuple, etc must " + "be a dictionary." + ) + + elif not isinstance(data, pd.DataFrame): + raise exceptions.PlotlyError( + "You must input a pandas DataFrame, or a list of dictionaries." + ) + + # make DataFrame from data with correct column headers + col_names = ["titles", "subtitle", "markers", "measures", "ranges"] + if utils.is_sequence(data): + df = pd.DataFrame( + [ + [d[titles] for d in data] if titles else [""] * len(data), + [d[subtitles] for d in data] if subtitles else [""] * len(data), + [d[markers] for d in data] if markers else [[]] * len(data), + [d[measures] for d in data] if measures else [[]] * len(data), + [d[ranges] for d in data] if ranges else [[]] * len(data), + ], + index=col_names, + ) + elif isinstance(data, pd.DataFrame): + df = pd.DataFrame( + [ + data[titles].tolist() if titles else [""] * len(data), + data[subtitles].tolist() if subtitles else [""] * len(data), + data[markers].tolist() if markers else [[]] * len(data), + data[measures].tolist() if measures else [[]] * len(data), + data[ranges].tolist() if ranges else [[]] * len(data), + ], + index=col_names, + ) + df = pd.DataFrame.transpose(df) + + # make sure ranges, measures, 'markers' are not NAN or NONE + for needed_key in ["ranges", "measures", "markers"]: + for idx, r in enumerate(df[needed_key]): + try: + r_is_nan = math.isnan(r) + if r_is_nan or r is None: + df[needed_key][idx] = [] + except TypeError: + pass + + # validate custom colors + for colors_list in [range_colors, measure_colors]: + if colors_list: + if len(colors_list) != 2: + raise exceptions.PlotlyError( + "Both 'range_colors' or 'measure_colors' must be a list " + "of two valid colors." + ) + clrs.validate_colors(colors_list) + colors_list = clrs.convert_colors_to_same_type(colors_list, "rgb")[0] + + # default scatter options + default_scatter = { + "marker": {"size": 12, "symbol": "diamond-tall", "color": "rgb(0, 0, 0)"} + } + + if scatter_options == {}: + scatter_options.update(default_scatter) + else: + # add default options to scatter_options if they are not present + for k in default_scatter["marker"]: + if k not in scatter_options["marker"]: + scatter_options["marker"][k] = default_scatter["marker"][k] + + fig = _bullet( + df, + markers, + measures, + ranges, + subtitles, + titles, + orientation, + range_colors, + measure_colors, + horizontal_spacing, + vertical_spacing, + scatter_options, + layout_options, + ) + + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_candlestick.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_candlestick.py new file mode 100644 index 0000000..572ccfe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_candlestick.py @@ -0,0 +1,277 @@ +from plotly.figure_factory import utils +from plotly.figure_factory._ohlc import ( + _DEFAULT_INCREASING_COLOR, + _DEFAULT_DECREASING_COLOR, + validate_ohlc, +) +from plotly.graph_objs import graph_objs + + +def make_increasing_candle(open, high, low, close, dates, **kwargs): + """ + Makes boxplot trace for increasing candlesticks + + _make_increasing_candle() and _make_decreasing_candle separate the + increasing traces from the decreasing traces so kwargs (such as + color) can be passed separately to increasing or decreasing traces + when direction is set to 'increasing' or 'decreasing' in + FigureFactory.create_candlestick() + + :param (list) open: opening values + :param (list) high: high values + :param (list) low: low values + :param (list) close: closing values + :param (list) dates: list of datetime objects. Default: None + :param kwargs: kwargs to be passed to increasing trace via + plotly.graph_objs.Scatter. + + :rtype (list) candle_incr_data: list of the box trace for + increasing candlesticks. + """ + increase_x, increase_y = _Candlestick( + open, high, low, close, dates, **kwargs + ).get_candle_increase() + + if "line" in kwargs: + kwargs.setdefault("fillcolor", kwargs["line"]["color"]) + else: + kwargs.setdefault("fillcolor", _DEFAULT_INCREASING_COLOR) + if "name" in kwargs: + kwargs.setdefault("showlegend", True) + else: + kwargs.setdefault("showlegend", False) + kwargs.setdefault("name", "Increasing") + kwargs.setdefault("line", dict(color=_DEFAULT_INCREASING_COLOR)) + + candle_incr_data = dict( + type="box", + x=increase_x, + y=increase_y, + whiskerwidth=0, + boxpoints=False, + **kwargs, + ) + + return [candle_incr_data] + + +def make_decreasing_candle(open, high, low, close, dates, **kwargs): + """ + Makes boxplot trace for decreasing candlesticks + + :param (list) open: opening values + :param (list) high: high values + :param (list) low: low values + :param (list) close: closing values + :param (list) dates: list of datetime objects. Default: None + :param kwargs: kwargs to be passed to decreasing trace via + plotly.graph_objs.Scatter. + + :rtype (list) candle_decr_data: list of the box trace for + decreasing candlesticks. + """ + + decrease_x, decrease_y = _Candlestick( + open, high, low, close, dates, **kwargs + ).get_candle_decrease() + + if "line" in kwargs: + kwargs.setdefault("fillcolor", kwargs["line"]["color"]) + else: + kwargs.setdefault("fillcolor", _DEFAULT_DECREASING_COLOR) + kwargs.setdefault("showlegend", False) + kwargs.setdefault("line", dict(color=_DEFAULT_DECREASING_COLOR)) + kwargs.setdefault("name", "Decreasing") + + candle_decr_data = dict( + type="box", + x=decrease_x, + y=decrease_y, + whiskerwidth=0, + boxpoints=False, + **kwargs, + ) + + return [candle_decr_data] + + +def create_candlestick(open, high, low, close, dates=None, direction="both", **kwargs): + """ + **deprecated**, use instead the plotly.graph_objects trace + :class:`plotly.graph_objects.Candlestick` + + :param (list) open: opening values + :param (list) high: high values + :param (list) low: low values + :param (list) close: closing values + :param (list) dates: list of datetime objects. Default: None + :param (string) direction: direction can be 'increasing', 'decreasing', + or 'both'. When the direction is 'increasing', the returned figure + consists of all candlesticks where the close value is greater than + the corresponding open value, and when the direction is + 'decreasing', the returned figure consists of all candlesticks + where the close value is less than or equal to the corresponding + open value. When the direction is 'both', both increasing and + decreasing candlesticks are returned. Default: 'both' + :param kwargs: kwargs passed through plotly.graph_objs.Scatter. + These kwargs describe other attributes about the ohlc Scatter trace + such as the color or the legend name. For more information on valid + kwargs call help(plotly.graph_objs.Scatter) + + :rtype (dict): returns a representation of candlestick chart figure. + + Example 1: Simple candlestick chart from a Pandas DataFrame + + >>> from plotly.figure_factory import create_candlestick + >>> from datetime import datetime + >>> import pandas as pd + + >>> df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv') + >>> fig = create_candlestick(df['AAPL.Open'], df['AAPL.High'], df['AAPL.Low'], df['AAPL.Close'], + ... dates=df.index) + >>> fig.show() + + Example 2: Customize the candlestick colors + + >>> from plotly.figure_factory import create_candlestick + >>> from plotly.graph_objs import Line, Marker + >>> from datetime import datetime + + >>> import pandas as pd + >>> df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv') + + >>> # Make increasing candlesticks and customize their color and name + >>> fig_increasing = create_candlestick(df['AAPL.Open'], df['AAPL.High'], df['AAPL.Low'], df['AAPL.Close'], + ... dates=df.index, + ... direction='increasing', name='AAPL', + ... marker=Marker(color='rgb(150, 200, 250)'), + ... line=Line(color='rgb(150, 200, 250)')) + + >>> # Make decreasing candlesticks and customize their color and name + >>> fig_decreasing = create_candlestick(df['AAPL.Open'], df['AAPL.High'], df['AAPL.Low'], df['AAPL.Close'], + ... dates=df.index, + ... direction='decreasing', + ... marker=Marker(color='rgb(128, 128, 128)'), + ... line=Line(color='rgb(128, 128, 128)')) + + >>> # Initialize the figure + >>> fig = fig_increasing + + >>> # Add decreasing data with .extend() + >>> fig.add_trace(fig_decreasing['data']) # doctest: +SKIP + >>> fig.show() + + Example 3: Candlestick chart with datetime objects + + >>> from plotly.figure_factory import create_candlestick + + >>> from datetime import datetime + + >>> # Add data + >>> open_data = [33.0, 33.3, 33.5, 33.0, 34.1] + >>> high_data = [33.1, 33.3, 33.6, 33.2, 34.8] + >>> low_data = [32.7, 32.7, 32.8, 32.6, 32.8] + >>> close_data = [33.0, 32.9, 33.3, 33.1, 33.1] + >>> dates = [datetime(year=2013, month=10, day=10), + ... datetime(year=2013, month=11, day=10), + ... datetime(year=2013, month=12, day=10), + ... datetime(year=2014, month=1, day=10), + ... datetime(year=2014, month=2, day=10)] + + >>> # Create ohlc + >>> fig = create_candlestick(open_data, high_data, + ... low_data, close_data, dates=dates) + >>> fig.show() + """ + if dates is not None: + utils.validate_equal_length(open, high, low, close, dates) + else: + utils.validate_equal_length(open, high, low, close) + validate_ohlc(open, high, low, close, direction, **kwargs) + + if direction == "increasing": + candle_incr_data = make_increasing_candle( + open, high, low, close, dates, **kwargs + ) + data = candle_incr_data + elif direction == "decreasing": + candle_decr_data = make_decreasing_candle( + open, high, low, close, dates, **kwargs + ) + data = candle_decr_data + else: + candle_incr_data = make_increasing_candle( + open, high, low, close, dates, **kwargs + ) + candle_decr_data = make_decreasing_candle( + open, high, low, close, dates, **kwargs + ) + data = candle_incr_data + candle_decr_data + + layout = graph_objs.Layout() + return graph_objs.Figure(data=data, layout=layout) + + +class _Candlestick(object): + """ + Refer to FigureFactory.create_candlestick() for docstring. + """ + + def __init__(self, open, high, low, close, dates, **kwargs): + self.open = open + self.high = high + self.low = low + self.close = close + if dates is not None: + self.x = dates + else: + self.x = [x for x in range(len(self.open))] + self.get_candle_increase() + + def get_candle_increase(self): + """ + Separate increasing data from decreasing data. + + The data is increasing when close value > open value + and decreasing when the close value <= open value. + """ + increase_y = [] + increase_x = [] + for index in range(len(self.open)): + if self.close[index] > self.open[index]: + increase_y.append(self.low[index]) + increase_y.append(self.open[index]) + increase_y.append(self.close[index]) + increase_y.append(self.close[index]) + increase_y.append(self.close[index]) + increase_y.append(self.high[index]) + increase_x.append(self.x[index]) + + increase_x = [[x, x, x, x, x, x] for x in increase_x] + increase_x = utils.flatten(increase_x) + + return increase_x, increase_y + + def get_candle_decrease(self): + """ + Separate increasing data from decreasing data. + + The data is increasing when close value > open value + and decreasing when the close value <= open value. + """ + decrease_y = [] + decrease_x = [] + for index in range(len(self.open)): + if self.close[index] <= self.open[index]: + decrease_y.append(self.low[index]) + decrease_y.append(self.open[index]) + decrease_y.append(self.close[index]) + decrease_y.append(self.close[index]) + decrease_y.append(self.close[index]) + decrease_y.append(self.high[index]) + decrease_x.append(self.x[index]) + + decrease_x = [[x, x, x, x, x, x] for x in decrease_x] + decrease_x = utils.flatten(decrease_x) + + return decrease_x, decrease_y diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_county_choropleth.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_county_choropleth.py new file mode 100644 index 0000000..7b397e7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_county_choropleth.py @@ -0,0 +1,1013 @@ +import io +import numpy as np +import os +import pandas as pd +import warnings + +from math import log, floor +from numbers import Number + +from plotly import optional_imports +import plotly.colors as clrs +from plotly.figure_factory import utils +from plotly.exceptions import PlotlyError +import plotly.graph_objs as go + +pd.options.mode.chained_assignment = None + +shapely = optional_imports.get_module("shapely") +shapefile = optional_imports.get_module("shapefile") +gp = optional_imports.get_module("geopandas") +_plotly_geo = optional_imports.get_module("_plotly_geo") + + +def _create_us_counties_df(st_to_state_name_dict, state_to_st_dict): + # URLS + abs_dir_path = os.path.realpath(_plotly_geo.__file__) + + abs_plotly_geo_path = os.path.dirname(abs_dir_path) + + abs_package_data_dir_path = os.path.join(abs_plotly_geo_path, "package_data") + + shape_pre2010 = "gz_2010_us_050_00_500k.shp" + shape_pre2010 = os.path.join(abs_package_data_dir_path, shape_pre2010) + + df_shape_pre2010 = gp.read_file(shape_pre2010) + df_shape_pre2010["FIPS"] = df_shape_pre2010["STATE"] + df_shape_pre2010["COUNTY"] + df_shape_pre2010["FIPS"] = pd.to_numeric(df_shape_pre2010["FIPS"]) + + states_path = "cb_2016_us_state_500k.shp" + states_path = os.path.join(abs_package_data_dir_path, states_path) + + df_state = gp.read_file(states_path) + df_state = df_state[["STATEFP", "NAME", "geometry"]] + df_state = df_state.rename(columns={"NAME": "STATE_NAME"}) + + filenames = [ + "cb_2016_us_county_500k.dbf", + "cb_2016_us_county_500k.shp", + "cb_2016_us_county_500k.shx", + ] + + for j in range(len(filenames)): + filenames[j] = os.path.join(abs_package_data_dir_path, filenames[j]) + + dbf = io.open(filenames[0], "rb") + shp = io.open(filenames[1], "rb") + shx = io.open(filenames[2], "rb") + + r = shapefile.Reader(shp=shp, shx=shx, dbf=dbf) + + attributes, geometry = [], [] + field_names = [field[0] for field in r.fields[1:]] + for row in r.shapeRecords(): + geometry.append(shapely.geometry.shape(row.shape.__geo_interface__)) + attributes.append(dict(zip(field_names, row.record))) + + gdf = gp.GeoDataFrame(data=attributes, geometry=geometry) + + gdf["FIPS"] = gdf["STATEFP"] + gdf["COUNTYFP"] + gdf["FIPS"] = pd.to_numeric(gdf["FIPS"]) + + # add missing counties + f = 46113 + singlerow = pd.DataFrame( + [ + [ + st_to_state_name_dict["SD"], + "SD", + df_shape_pre2010[df_shape_pre2010["FIPS"] == f]["geometry"].iloc[0], + df_shape_pre2010[df_shape_pre2010["FIPS"] == f]["FIPS"].iloc[0], + "46", + "Shannon", + ] + ], + columns=["State", "ST", "geometry", "FIPS", "STATEFP", "NAME"], + index=[max(gdf.index) + 1], + ) + gdf = pd.concat([gdf, singlerow], sort=True) + + f = 51515 + singlerow = pd.DataFrame( + [ + [ + st_to_state_name_dict["VA"], + "VA", + df_shape_pre2010[df_shape_pre2010["FIPS"] == f]["geometry"].iloc[0], + df_shape_pre2010[df_shape_pre2010["FIPS"] == f]["FIPS"].iloc[0], + "51", + "Bedford City", + ] + ], + columns=["State", "ST", "geometry", "FIPS", "STATEFP", "NAME"], + index=[max(gdf.index) + 1], + ) + gdf = pd.concat([gdf, singlerow], sort=True) + + f = 2270 + singlerow = pd.DataFrame( + [ + [ + st_to_state_name_dict["AK"], + "AK", + df_shape_pre2010[df_shape_pre2010["FIPS"] == f]["geometry"].iloc[0], + df_shape_pre2010[df_shape_pre2010["FIPS"] == f]["FIPS"].iloc[0], + "02", + "Wade Hampton", + ] + ], + columns=["State", "ST", "geometry", "FIPS", "STATEFP", "NAME"], + index=[max(gdf.index) + 1], + ) + gdf = pd.concat([gdf, singlerow], sort=True) + + row_2198 = gdf[gdf["FIPS"] == 2198] + row_2198.index = [max(gdf.index) + 1] + row_2198.loc[row_2198.index[0], "FIPS"] = 2201 + row_2198.loc[row_2198.index[0], "STATEFP"] = "02" + gdf = pd.concat([gdf, row_2198], sort=True) + + row_2105 = gdf[gdf["FIPS"] == 2105] + row_2105.index = [max(gdf.index) + 1] + row_2105.loc[row_2105.index[0], "FIPS"] = 2232 + row_2105.loc[row_2105.index[0], "STATEFP"] = "02" + gdf = pd.concat([gdf, row_2105], sort=True) + gdf = gdf.rename(columns={"NAME": "COUNTY_NAME"}) + + gdf_reduced = gdf[["FIPS", "STATEFP", "COUNTY_NAME", "geometry"]] + gdf_statefp = gdf_reduced.merge(df_state[["STATEFP", "STATE_NAME"]], on="STATEFP") + + ST = [] + for n in gdf_statefp["STATE_NAME"]: + ST.append(state_to_st_dict[n]) + + gdf_statefp["ST"] = ST + return gdf_statefp, df_state + + +st_to_state_name_dict = { + "AK": "Alaska", + "AL": "Alabama", + "AR": "Arkansas", + "AZ": "Arizona", + "CA": "California", + "CO": "Colorado", + "CT": "Connecticut", + "DC": "District of Columbia", + "DE": "Delaware", + "FL": "Florida", + "GA": "Georgia", + "HI": "Hawaii", + "IA": "Iowa", + "ID": "Idaho", + "IL": "Illinois", + "IN": "Indiana", + "KS": "Kansas", + "KY": "Kentucky", + "LA": "Louisiana", + "MA": "Massachusetts", + "MD": "Maryland", + "ME": "Maine", + "MI": "Michigan", + "MN": "Minnesota", + "MO": "Missouri", + "MS": "Mississippi", + "MT": "Montana", + "NC": "North Carolina", + "ND": "North Dakota", + "NE": "Nebraska", + "NH": "New Hampshire", + "NJ": "New Jersey", + "NM": "New Mexico", + "NV": "Nevada", + "NY": "New York", + "OH": "Ohio", + "OK": "Oklahoma", + "OR": "Oregon", + "PA": "Pennsylvania", + "RI": "Rhode Island", + "SC": "South Carolina", + "SD": "South Dakota", + "TN": "Tennessee", + "TX": "Texas", + "UT": "Utah", + "VA": "Virginia", + "VT": "Vermont", + "WA": "Washington", + "WI": "Wisconsin", + "WV": "West Virginia", + "WY": "Wyoming", +} + +state_to_st_dict = { + "Alabama": "AL", + "Alaska": "AK", + "American Samoa": "AS", + "Arizona": "AZ", + "Arkansas": "AR", + "California": "CA", + "Colorado": "CO", + "Commonwealth of the Northern Mariana Islands": "MP", + "Connecticut": "CT", + "Delaware": "DE", + "District of Columbia": "DC", + "Florida": "FL", + "Georgia": "GA", + "Guam": "GU", + "Hawaii": "HI", + "Idaho": "ID", + "Illinois": "IL", + "Indiana": "IN", + "Iowa": "IA", + "Kansas": "KS", + "Kentucky": "KY", + "Louisiana": "LA", + "Maine": "ME", + "Maryland": "MD", + "Massachusetts": "MA", + "Michigan": "MI", + "Minnesota": "MN", + "Mississippi": "MS", + "Missouri": "MO", + "Montana": "MT", + "Nebraska": "NE", + "Nevada": "NV", + "New Hampshire": "NH", + "New Jersey": "NJ", + "New Mexico": "NM", + "New York": "NY", + "North Carolina": "NC", + "North Dakota": "ND", + "Ohio": "OH", + "Oklahoma": "OK", + "Oregon": "OR", + "Pennsylvania": "PA", + "Puerto Rico": "", + "Rhode Island": "RI", + "South Carolina": "SC", + "South Dakota": "SD", + "Tennessee": "TN", + "Texas": "TX", + "United States Virgin Islands": "VI", + "Utah": "UT", + "Vermont": "VT", + "Virginia": "VA", + "Washington": "WA", + "West Virginia": "WV", + "Wisconsin": "WI", + "Wyoming": "WY", +} + +USA_XRANGE = [-125.0, -65.0] +USA_YRANGE = [25.0, 49.0] + + +def _human_format(number): + units = ["", "K", "M", "G", "T", "P"] + k = 1000.0 + magnitude = int(floor(log(number, k))) + return "%.2f%s" % (number / k**magnitude, units[magnitude]) + + +def _intervals_as_labels(array_of_intervals, round_legend_values, exponent_format): + """ + Transform an number interval to a clean string for legend + + Example: [-inf, 30] to '< 30' + """ + infs = [float("-inf"), float("inf")] + string_intervals = [] + for interval in array_of_intervals: + # round to 2nd decimal place + if round_legend_values: + rnd_interval = [ + (int(interval[i]) if interval[i] not in infs else interval[i]) + for i in range(2) + ] + else: + rnd_interval = [round(interval[0], 2), round(interval[1], 2)] + + num0 = rnd_interval[0] + num1 = rnd_interval[1] + if exponent_format: + if num0 not in infs: + num0 = _human_format(num0) + if num1 not in infs: + num1 = _human_format(num1) + else: + if num0 not in infs: + num0 = "{:,}".format(num0) + if num1 not in infs: + num1 = "{:,}".format(num1) + + if num0 == float("-inf"): + as_str = "< {}".format(num1) + elif num1 == float("inf"): + as_str = "> {}".format(num0) + else: + as_str = "{} - {}".format(num0, num1) + string_intervals.append(as_str) + return string_intervals + + +def _calculations( + df, + fips, + values, + index, + f, + simplify_county, + level, + x_centroids, + y_centroids, + centroid_text, + x_traces, + y_traces, + fips_polygon_map, +): + # 0-pad FIPS code to ensure exactly 5 digits + padded_f = str(f).zfill(5) + if fips_polygon_map[f].type == "Polygon": + x = fips_polygon_map[f].simplify(simplify_county).exterior.xy[0].tolist() + y = fips_polygon_map[f].simplify(simplify_county).exterior.xy[1].tolist() + + x_c, y_c = fips_polygon_map[f].centroid.xy + county_name_str = str(df[df["FIPS"] == f]["COUNTY_NAME"].iloc[0]) + state_name_str = str(df[df["FIPS"] == f]["STATE_NAME"].iloc[0]) + + t_c = ( + "County: " + + county_name_str + + "
" + + "State: " + + state_name_str + + "
" + + "FIPS: " + + padded_f + + "
Value: " + + str(values[index]) + ) + + x_centroids.append(x_c[0]) + y_centroids.append(y_c[0]) + centroid_text.append(t_c) + + x_traces[level] = x_traces[level] + x + [np.nan] + y_traces[level] = y_traces[level] + y + [np.nan] + elif fips_polygon_map[f].type == "MultiPolygon": + x = [ + poly.simplify(simplify_county).exterior.xy[0].tolist() + for poly in fips_polygon_map[f].geoms + ] + y = [ + poly.simplify(simplify_county).exterior.xy[1].tolist() + for poly in fips_polygon_map[f].geoms + ] + + x_c = [poly.centroid.xy[0].tolist() for poly in fips_polygon_map[f].geoms] + y_c = [poly.centroid.xy[1].tolist() for poly in fips_polygon_map[f].geoms] + + county_name_str = str(df[df["FIPS"] == f]["COUNTY_NAME"].iloc[0]) + state_name_str = str(df[df["FIPS"] == f]["STATE_NAME"].iloc[0]) + text = ( + "County: " + + county_name_str + + "
" + + "State: " + + state_name_str + + "
" + + "FIPS: " + + padded_f + + "
Value: " + + str(values[index]) + ) + t_c = [text for poly in fips_polygon_map[f].geoms] + x_centroids = x_c + x_centroids + y_centroids = y_c + y_centroids + centroid_text = t_c + centroid_text + for x_y_idx in range(len(x)): + x_traces[level] = x_traces[level] + x[x_y_idx] + [np.nan] + y_traces[level] = y_traces[level] + y[x_y_idx] + [np.nan] + + return x_traces, y_traces, x_centroids, y_centroids, centroid_text + + +def create_choropleth( + fips, + values, + scope=["usa"], + binning_endpoints=None, + colorscale=None, + order=None, + simplify_county=0.02, + simplify_state=0.02, + asp=None, + show_hover=True, + show_state_data=True, + state_outline=None, + county_outline=None, + centroid_marker=None, + round_legend_values=False, + exponent_format=False, + legend_title="", + **layout_options, +): + """ + **deprecated**, use instead + :func:`plotly.express.choropleth` with custom GeoJSON. + + This function also requires `shapely`, `geopandas` and `plotly-geo` to be installed. + + Returns figure for county choropleth. Uses data from package_data. + + :param (list) fips: list of FIPS values which correspond to the con + catination of state and county ids. An example is '01001'. + :param (list) values: list of numbers/strings which correspond to the + fips list. These are the values that will determine how the counties + are colored. + :param (list) scope: list of states and/or states abbreviations. Fits + all states in the camera tightly. Selecting ['usa'] is the equivalent + of appending all 50 states into your scope list. Selecting only 'usa' + does not include 'Alaska', 'Puerto Rico', 'American Samoa', + 'Commonwealth of the Northern Mariana Islands', 'Guam', + 'United States Virgin Islands'. These must be added manually to the + list. + Default = ['usa'] + :param (list) binning_endpoints: ascending numbers which implicitly define + real number intervals which are used as bins. The colorscale used must + have the same number of colors as the number of bins and this will + result in a categorical colormap. + :param (list) colorscale: a list of colors with length equal to the + number of categories of colors. The length must match either all + unique numbers in the 'values' list or if endpoints is being used, the + number of categories created by the endpoints.\n + For example, if binning_endpoints = [4, 6, 8], then there are 4 bins: + [-inf, 4), [4, 6), [6, 8), [8, inf) + :param (list) order: a list of the unique categories (numbers/bins) in any + desired order. This is helpful if you want to order string values to + a chosen colorscale. + :param (float) simplify_county: determines the simplification factor + for the counties. The larger the number, the fewer vertices and edges + each polygon has. See + http://toblerity.org/shapely/manual.html#object.simplify for more + information. + Default = 0.02 + :param (float) simplify_state: simplifies the state outline polygon. + See http://toblerity.org/shapely/manual.html#object.simplify for more + information. + Default = 0.02 + :param (float) asp: the width-to-height aspect ratio for the camera. + Default = 2.5 + :param (bool) show_hover: show county hover and centroid info + :param (bool) show_state_data: reveals state boundary lines + :param (dict) state_outline: dict of attributes of the state outline + including width and color. See + https://plot.ly/python/reference/#scatter-marker-line for all valid + params + :param (dict) county_outline: dict of attributes of the county outline + including width and color. See + https://plot.ly/python/reference/#scatter-marker-line for all valid + params + :param (dict) centroid_marker: dict of attributes of the centroid marker. + The centroid markers are invisible by default and appear visible on + selection. See https://plot.ly/python/reference/#scatter-marker for + all valid params + :param (bool) round_legend_values: automatically round the numbers that + appear in the legend to the nearest integer. + Default = False + :param (bool) exponent_format: if set to True, puts numbers in the K, M, + B number format. For example 4000.0 becomes 4.0K + Default = False + :param (str) legend_title: title that appears above the legend + :param **layout_options: a **kwargs argument for all layout parameters + + + Example 1: Florida:: + + import plotly.plotly as py + import plotly.figure_factory as ff + + import numpy as np + import pandas as pd + + df_sample = pd.read_csv( + 'https://raw.githubusercontent.com/plotly/datasets/master/minoritymajority.csv' + ) + df_sample_r = df_sample[df_sample['STNAME'] == 'Florida'] + + values = df_sample_r['TOT_POP'].tolist() + fips = df_sample_r['FIPS'].tolist() + + binning_endpoints = list(np.mgrid[min(values):max(values):4j]) + colorscale = ["#030512","#1d1d3b","#323268","#3d4b94","#3e6ab0", + "#4989bc","#60a7c7","#85c5d3","#b7e0e4","#eafcfd"] + fig = ff.create_choropleth( + fips=fips, values=values, scope=['Florida'], show_state_data=True, + colorscale=colorscale, binning_endpoints=binning_endpoints, + round_legend_values=True, plot_bgcolor='rgb(229,229,229)', + paper_bgcolor='rgb(229,229,229)', legend_title='Florida Population', + county_outline={'color': 'rgb(255,255,255)', 'width': 0.5}, + exponent_format=True, + ) + + Example 2: New England:: + + import plotly.figure_factory as ff + + import pandas as pd + + NE_states = ['Connecticut', 'Maine', 'Massachusetts', + 'New Hampshire', 'Rhode Island'] + df_sample = pd.read_csv( + 'https://raw.githubusercontent.com/plotly/datasets/master/minoritymajority.csv' + ) + df_sample_r = df_sample[df_sample['STNAME'].isin(NE_states)] + colorscale = ['rgb(68.0, 1.0, 84.0)', + 'rgb(66.0, 64.0, 134.0)', + 'rgb(38.0, 130.0, 142.0)', + 'rgb(63.0, 188.0, 115.0)', + 'rgb(216.0, 226.0, 25.0)'] + + values = df_sample_r['TOT_POP'].tolist() + fips = df_sample_r['FIPS'].tolist() + fig = ff.create_choropleth( + fips=fips, values=values, scope=NE_states, show_state_data=True + ) + fig.show() + + Example 3: California and Surrounding States:: + + import plotly.figure_factory as ff + + import pandas as pd + + df_sample = pd.read_csv( + 'https://raw.githubusercontent.com/plotly/datasets/master/minoritymajority.csv' + ) + df_sample_r = df_sample[df_sample['STNAME'] == 'California'] + + values = df_sample_r['TOT_POP'].tolist() + fips = df_sample_r['FIPS'].tolist() + + colorscale = [ + 'rgb(193, 193, 193)', + 'rgb(239,239,239)', + 'rgb(195, 196, 222)', + 'rgb(144,148,194)', + 'rgb(101,104,168)', + 'rgb(65, 53, 132)' + ] + + fig = ff.create_choropleth( + fips=fips, values=values, colorscale=colorscale, + scope=['CA', 'AZ', 'Nevada', 'Oregon', ' Idaho'], + binning_endpoints=[14348, 63983, 134827, 426762, 2081313], + county_outline={'color': 'rgb(255,255,255)', 'width': 0.5}, + legend_title='California Counties', + title='California and Nearby States' + ) + fig.show() + + Example 4: USA:: + + import plotly.figure_factory as ff + + import numpy as np + import pandas as pd + + df_sample = pd.read_csv( + 'https://raw.githubusercontent.com/plotly/datasets/master/laucnty16.csv' + ) + df_sample['State FIPS Code'] = df_sample['State FIPS Code'].apply( + lambda x: str(x).zfill(2) + ) + df_sample['County FIPS Code'] = df_sample['County FIPS Code'].apply( + lambda x: str(x).zfill(3) + ) + df_sample['FIPS'] = ( + df_sample['State FIPS Code'] + df_sample['County FIPS Code'] + ) + + binning_endpoints = list(np.linspace(1, 12, len(colorscale) - 1)) + colorscale = ["#f7fbff", "#ebf3fb", "#deebf7", "#d2e3f3", "#c6dbef", + "#b3d2e9", "#9ecae1", "#85bcdb", "#6baed6", "#57a0ce", + "#4292c6", "#3082be", "#2171b5", "#1361a9", "#08519c", + "#0b4083","#08306b"] + fips = df_sample['FIPS'] + values = df_sample['Unemployment Rate (%)'] + fig = ff.create_choropleth( + fips=fips, values=values, scope=['usa'], + binning_endpoints=binning_endpoints, colorscale=colorscale, + show_hover=True, centroid_marker={'opacity': 0}, + asp=2.9, title='USA by Unemployment %', + legend_title='Unemployment %' + ) + fig.show() + """ + # ensure optional modules imported + if not _plotly_geo: + raise ValueError( + """ +The create_choropleth figure factory requires the plotly-geo package. +Install using pip with: + +$ pip install plotly-geo + +Or, install using conda with + +$ conda install -c plotly plotly-geo +""" + ) + + if not gp or not shapefile or not shapely: + raise ImportError( + "geopandas, pyshp and shapely must be installed for this figure " + "factory.\n\nRun the following commands to install the correct " + "versions of the following modules:\n\n" + "```\n" + "$ pip install geopandas==0.3.0\n" + "$ pip install pyshp==1.2.10\n" + "$ pip install shapely==1.6.3\n" + "```\n" + "If you are using Windows, follow this post to properly " + "install geopandas and dependencies:" + "http://geoffboeing.com/2014/09/using-geopandas-windows/\n\n" + "If you are using Anaconda, do not use PIP to install the " + "packages above. Instead use conda to install them:\n\n" + "```\n" + "$ conda install plotly\n" + "$ conda install geopandas\n" + "```" + ) + + df, df_state = _create_us_counties_df(st_to_state_name_dict, state_to_st_dict) + + fips_polygon_map = dict(zip(df["FIPS"].tolist(), df["geometry"].tolist())) + + if not state_outline: + state_outline = {"color": "rgb(240, 240, 240)", "width": 1} + if not county_outline: + county_outline = {"color": "rgb(0, 0, 0)", "width": 0} + if not centroid_marker: + centroid_marker = {"size": 3, "color": "white", "opacity": 1} + + # ensure centroid markers appear on selection + if "opacity" not in centroid_marker: + centroid_marker.update({"opacity": 1}) + + if len(fips) != len(values): + raise PlotlyError("fips and values must be the same length") + + # make fips, values into lists + if isinstance(fips, pd.core.series.Series): + fips = fips.tolist() + if isinstance(values, pd.core.series.Series): + values = values.tolist() + + # make fips numeric + fips = map(lambda x: int(x), fips) + + if binning_endpoints: + intervals = utils.endpts_to_intervals(binning_endpoints) + LEVELS = _intervals_as_labels(intervals, round_legend_values, exponent_format) + else: + if not order: + LEVELS = sorted(list(set(values))) + else: + # check if order is permutation + # of unique color col values + same_sets = sorted(list(set(values))) == set(order) + no_duplicates = not any(order.count(x) > 1 for x in order) + if same_sets and no_duplicates: + LEVELS = order + else: + raise PlotlyError( + "if you are using a custom order of unique values from " + "your color column, you must: have all the unique values " + "in your order and have no duplicate items" + ) + + if not colorscale: + colorscale = [] + viridis_colors = clrs.colorscale_to_colors(clrs.PLOTLY_SCALES["Viridis"]) + viridis_colors = clrs.color_parser(viridis_colors, clrs.hex_to_rgb) + viridis_colors = clrs.color_parser(viridis_colors, clrs.label_rgb) + viri_len = len(viridis_colors) + 1 + viri_intervals = utils.endpts_to_intervals(list(np.linspace(0, 1, viri_len)))[ + 1:-1 + ] + + for L in np.linspace(0, 1, len(LEVELS)): + for idx, inter in enumerate(viri_intervals): + if L == 0: + break + elif inter[0] < L <= inter[1]: + break + + intermed = (L - viri_intervals[idx][0]) / ( + viri_intervals[idx][1] - viri_intervals[idx][0] + ) + + float_color = clrs.find_intermediate_color( + viridis_colors[idx], viridis_colors[idx], intermed, colortype="rgb" + ) + + # make R,G,B into int values + float_color = clrs.unlabel_rgb(float_color) + float_color = clrs.unconvert_from_RGB_255(float_color) + int_rgb = clrs.convert_to_RGB_255(float_color) + int_rgb = clrs.label_rgb(int_rgb) + + colorscale.append(int_rgb) + + if len(colorscale) < len(LEVELS): + raise PlotlyError( + "You have {} LEVELS. Your number of colors in 'colorscale' must " + "be at least the number of LEVELS: {}. If you are " + "using 'binning_endpoints' then 'colorscale' must have at " + "least len(binning_endpoints) + 2 colors".format( + len(LEVELS), min(LEVELS, LEVELS[:20]) + ) + ) + + color_lookup = dict(zip(LEVELS, colorscale)) + x_traces = dict(zip(LEVELS, [[] for i in range(len(LEVELS))])) + y_traces = dict(zip(LEVELS, [[] for i in range(len(LEVELS))])) + + # scope + if isinstance(scope, str): + raise PlotlyError("'scope' must be a list/tuple/sequence") + + scope_names = [] + extra_states = [ + "Alaska", + "Commonwealth of the Northern Mariana Islands", + "Puerto Rico", + "Guam", + "United States Virgin Islands", + "American Samoa", + ] + for state in scope: + if state.lower() == "usa": + scope_names = df["STATE_NAME"].unique() + scope_names = list(scope_names) + for ex_st in extra_states: + try: + scope_names.remove(ex_st) + except ValueError: + pass + else: + if state in st_to_state_name_dict.keys(): + state = st_to_state_name_dict[state] + scope_names.append(state) + df_state = df_state[df_state["STATE_NAME"].isin(scope_names)] + + plot_data = [] + x_centroids = [] + y_centroids = [] + centroid_text = [] + fips_not_in_shapefile = [] + if not binning_endpoints: + for index, f in enumerate(fips): + level = values[index] + try: + fips_polygon_map[f].type + + ( + x_traces, + y_traces, + x_centroids, + y_centroids, + centroid_text, + ) = _calculations( + df, + fips, + values, + index, + f, + simplify_county, + level, + x_centroids, + y_centroids, + centroid_text, + x_traces, + y_traces, + fips_polygon_map, + ) + except KeyError: + fips_not_in_shapefile.append(f) + + else: + for index, f in enumerate(fips): + for j, inter in enumerate(intervals): + if inter[0] < values[index] <= inter[1]: + break + level = LEVELS[j] + + try: + fips_polygon_map[f].type + + ( + x_traces, + y_traces, + x_centroids, + y_centroids, + centroid_text, + ) = _calculations( + df, + fips, + values, + index, + f, + simplify_county, + level, + x_centroids, + y_centroids, + centroid_text, + x_traces, + y_traces, + fips_polygon_map, + ) + except KeyError: + fips_not_in_shapefile.append(f) + + if len(fips_not_in_shapefile) > 0: + msg = ( + "Unrecognized FIPS Values\n\nWhoops! It looks like you are " + "trying to pass at least one FIPS value that is not in " + "our shapefile of FIPS and data for the counties. Your " + "choropleth will still show up but these counties cannot " + "be shown.\nUnrecognized FIPS are: {}".format(fips_not_in_shapefile) + ) + warnings.warn(msg) + + x_states = [] + y_states = [] + for index, row in df_state.iterrows(): + if df_state["geometry"][index].type == "Polygon": + x = row.geometry.simplify(simplify_state).exterior.xy[0].tolist() + y = row.geometry.simplify(simplify_state).exterior.xy[1].tolist() + x_states = x_states + x + y_states = y_states + y + elif df_state["geometry"][index].type == "MultiPolygon": + x = [ + poly.simplify(simplify_state).exterior.xy[0].tolist() + for poly in df_state["geometry"][index].geoms + ] + y = [ + poly.simplify(simplify_state).exterior.xy[1].tolist() + for poly in df_state["geometry"][index].geoms + ] + for segment in range(len(x)): + x_states = x_states + x[segment] + y_states = y_states + y[segment] + x_states.append(np.nan) + y_states.append(np.nan) + x_states.append(np.nan) + y_states.append(np.nan) + + for lev in LEVELS: + county_data = dict( + type="scatter", + mode="lines", + x=x_traces[lev], + y=y_traces[lev], + line=county_outline, + fill="toself", + fillcolor=color_lookup[lev], + name=lev, + hoverinfo="none", + ) + plot_data.append(county_data) + + if show_hover: + hover_points = dict( + type="scatter", + showlegend=False, + legendgroup="centroids", + x=x_centroids, + y=y_centroids, + text=centroid_text, + name="US Counties", + mode="markers", + marker={"color": "white", "opacity": 0}, + hoverinfo="text", + ) + centroids_on_select = dict( + selected=dict(marker=centroid_marker), + unselected=dict(marker=dict(opacity=0)), + ) + hover_points.update(centroids_on_select) + plot_data.append(hover_points) + + if show_state_data: + state_data = dict( + type="scatter", + legendgroup="States", + line=state_outline, + x=x_states, + y=y_states, + hoverinfo="text", + showlegend=False, + mode="lines", + ) + plot_data.append(state_data) + + DEFAULT_LAYOUT = dict( + hovermode="closest", + xaxis=dict( + autorange=False, + range=USA_XRANGE, + showgrid=False, + zeroline=False, + fixedrange=True, + showticklabels=False, + ), + yaxis=dict( + autorange=False, + range=USA_YRANGE, + showgrid=False, + zeroline=False, + fixedrange=True, + showticklabels=False, + ), + margin=dict(t=40, b=20, r=20, l=20), + width=900, + height=450, + dragmode="select", + legend=dict(traceorder="reversed", xanchor="right", yanchor="top", x=1, y=1), + annotations=[], + ) + fig = dict(data=plot_data, layout=DEFAULT_LAYOUT) + fig["layout"].update(layout_options) + fig["layout"]["annotations"].append( + dict( + x=1, + y=1.05, + xref="paper", + yref="paper", + xanchor="right", + showarrow=False, + text="" + legend_title + "", + ) + ) + + if len(scope) == 1 and scope[0].lower() == "usa": + xaxis_range_low = -125.0 + xaxis_range_high = -55.0 + yaxis_range_low = 25.0 + yaxis_range_high = 49.0 + else: + xaxis_range_low = float("inf") + xaxis_range_high = float("-inf") + yaxis_range_low = float("inf") + yaxis_range_high = float("-inf") + for trace in fig["data"]: + if all(isinstance(n, Number) for n in trace["x"]): + calc_x_min = min(trace["x"] or [float("inf")]) + calc_x_max = max(trace["x"] or [float("-inf")]) + if calc_x_min < xaxis_range_low: + xaxis_range_low = calc_x_min + if calc_x_max > xaxis_range_high: + xaxis_range_high = calc_x_max + if all(isinstance(n, Number) for n in trace["y"]): + calc_y_min = min(trace["y"] or [float("inf")]) + calc_y_max = max(trace["y"] or [float("-inf")]) + if calc_y_min < yaxis_range_low: + yaxis_range_low = calc_y_min + if calc_y_max > yaxis_range_high: + yaxis_range_high = calc_y_max + + # camera zoom + fig["layout"]["xaxis"]["range"] = [xaxis_range_low, xaxis_range_high] + fig["layout"]["yaxis"]["range"] = [yaxis_range_low, yaxis_range_high] + + # aspect ratio + if asp is None: + usa_x_range = USA_XRANGE[1] - USA_XRANGE[0] + usa_y_range = USA_YRANGE[1] - USA_YRANGE[0] + asp = usa_x_range / usa_y_range + + # based on your figure + width = float( + fig["layout"]["xaxis"]["range"][1] - fig["layout"]["xaxis"]["range"][0] + ) + height = float( + fig["layout"]["yaxis"]["range"][1] - fig["layout"]["yaxis"]["range"][0] + ) + + center = ( + sum(fig["layout"]["xaxis"]["range"]) / 2.0, + sum(fig["layout"]["yaxis"]["range"]) / 2.0, + ) + + if height / width > (1 / asp): + new_width = asp * height + fig["layout"]["xaxis"]["range"][0] = center[0] - new_width * 0.5 + fig["layout"]["xaxis"]["range"][1] = center[0] + new_width * 0.5 + else: + new_height = (1 / asp) * width + fig["layout"]["yaxis"]["range"][0] = center[1] - new_height * 0.5 + fig["layout"]["yaxis"]["range"][1] = center[1] + new_height * 0.5 + + return go.Figure(fig) diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_dendrogram.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_dendrogram.py new file mode 100644 index 0000000..fd6d505 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_dendrogram.py @@ -0,0 +1,395 @@ +from collections import OrderedDict + +from plotly import exceptions, optional_imports +from plotly.graph_objs import graph_objs + +# Optional imports, may be None for users that only use our core functionality. +np = optional_imports.get_module("numpy") +scp = optional_imports.get_module("scipy") +sch = optional_imports.get_module("scipy.cluster.hierarchy") +scs = optional_imports.get_module("scipy.spatial") + + +def create_dendrogram( + X, + orientation="bottom", + labels=None, + colorscale=None, + distfun=None, + linkagefun=lambda x: sch.linkage(x, "complete"), + hovertext=None, + color_threshold=None, +): + """ + Function that returns a dendrogram Plotly figure object. This is a thin + wrapper around scipy.cluster.hierarchy.dendrogram. + + See also https://dash.plot.ly/dash-bio/clustergram. + + :param (ndarray) X: Matrix of observations as array of arrays + :param (str) orientation: 'top', 'right', 'bottom', or 'left' + :param (list) labels: List of axis category labels(observation labels) + :param (list) colorscale: Optional colorscale for the dendrogram tree. + Requires 8 colors to be specified, the 7th of + which is ignored. With scipy>=1.5.0, the 2nd, 3rd + and 6th are used twice as often as the others. + Given a shorter list, the missing values are + replaced with defaults and with a longer list the + extra values are ignored. + :param (function) distfun: Function to compute the pairwise distance from + the observations + :param (function) linkagefun: Function to compute the linkage matrix from + the pairwise distances + :param (list[list]) hovertext: List of hovertext for constituent traces of dendrogram + clusters + :param (double) color_threshold: Value at which the separation of clusters will be made + + Example 1: Simple bottom oriented dendrogram + + >>> from plotly.figure_factory import create_dendrogram + + >>> import numpy as np + + >>> X = np.random.rand(10,10) + >>> fig = create_dendrogram(X) + >>> fig.show() + + Example 2: Dendrogram to put on the left of the heatmap + + >>> from plotly.figure_factory import create_dendrogram + + >>> import numpy as np + + >>> X = np.random.rand(5,5) + >>> names = ['Jack', 'Oxana', 'John', 'Chelsea', 'Mark'] + >>> dendro = create_dendrogram(X, orientation='right', labels=names) + >>> dendro.update_layout({'width':700, 'height':500}) # doctest: +SKIP + >>> dendro.show() + + Example 3: Dendrogram with Pandas + + >>> from plotly.figure_factory import create_dendrogram + + >>> import numpy as np + >>> import pandas as pd + + >>> Index= ['A','B','C','D','E','F','G','H','I','J'] + >>> df = pd.DataFrame(abs(np.random.randn(10, 10)), index=Index) + >>> fig = create_dendrogram(df, labels=Index) + >>> fig.show() + """ + if not scp or not scs or not sch: + raise ImportError( + "FigureFactory.create_dendrogram requires scipy, \ + scipy.spatial and scipy.hierarchy" + ) + + s = X.shape + if len(s) != 2: + exceptions.PlotlyError("X should be 2-dimensional array.") + + if distfun is None: + distfun = scs.distance.pdist + + dendrogram = _Dendrogram( + X, + orientation, + labels, + colorscale, + distfun=distfun, + linkagefun=linkagefun, + hovertext=hovertext, + color_threshold=color_threshold, + ) + + return graph_objs.Figure(data=dendrogram.data, layout=dendrogram.layout) + + +class _Dendrogram(object): + """Refer to FigureFactory.create_dendrogram() for docstring.""" + + def __init__( + self, + X, + orientation="bottom", + labels=None, + colorscale=None, + width=np.inf, + height=np.inf, + xaxis="xaxis", + yaxis="yaxis", + distfun=None, + linkagefun=lambda x: sch.linkage(x, "complete"), + hovertext=None, + color_threshold=None, + ): + self.orientation = orientation + self.labels = labels + self.xaxis = xaxis + self.yaxis = yaxis + self.data = [] + self.leaves = [] + self.sign = {self.xaxis: 1, self.yaxis: 1} + self.layout = {self.xaxis: {}, self.yaxis: {}} + + if self.orientation in ["left", "bottom"]: + self.sign[self.xaxis] = 1 + else: + self.sign[self.xaxis] = -1 + + if self.orientation in ["right", "bottom"]: + self.sign[self.yaxis] = 1 + else: + self.sign[self.yaxis] = -1 + + if distfun is None: + distfun = scs.distance.pdist + + (dd_traces, xvals, yvals, ordered_labels, leaves) = self.get_dendrogram_traces( + X, colorscale, distfun, linkagefun, hovertext, color_threshold + ) + + self.labels = ordered_labels + self.leaves = leaves + yvals_flat = yvals.flatten() + xvals_flat = xvals.flatten() + + self.zero_vals = [] + + for i in range(len(yvals_flat)): + if yvals_flat[i] == 0.0 and xvals_flat[i] not in self.zero_vals: + self.zero_vals.append(xvals_flat[i]) + + if len(self.zero_vals) > len(yvals) + 1: + # If the length of zero_vals is larger than the length of yvals, + # it means that there are wrong vals because of the identicial samples. + # Three and more identicial samples will make the yvals of spliting + # center into 0 and it will accidentally take it as leaves. + l_border = int(min(self.zero_vals)) + r_border = int(max(self.zero_vals)) + correct_leaves_pos = range( + l_border, r_border + 1, int((r_border - l_border) / len(yvals)) + ) + # Regenerating the leaves pos from the self.zero_vals with equally intervals. + self.zero_vals = [v for v in correct_leaves_pos] + + self.zero_vals.sort() + self.layout = self.set_figure_layout(width, height) + self.data = dd_traces + + def get_color_dict(self, colorscale): + """ + Returns colorscale used for dendrogram tree clusters. + + :param (list) colorscale: Colors to use for the plot in rgb format. + :rtype (dict): A dict of default colors mapped to the user colorscale. + + """ + + # These are the color codes returned for dendrograms + # We're replacing them with nicer colors + # This list is the colors that can be used by dendrogram, which were + # determined as the combination of the default above_threshold_color and + # the default color palette (see scipy/cluster/hierarchy.py) + d = { + "r": "red", + "g": "green", + "b": "blue", + "c": "cyan", + "m": "magenta", + "y": "yellow", + "k": "black", + # TODO: 'w' doesn't seem to be in the default color + # palette in scipy/cluster/hierarchy.py + "w": "white", + } + default_colors = OrderedDict(sorted(d.items(), key=lambda t: t[0])) + + if colorscale is None: + rgb_colorscale = [ + "rgb(0,116,217)", # blue + "rgb(35,205,205)", # cyan + "rgb(61,153,112)", # green + "rgb(40,35,35)", # black + "rgb(133,20,75)", # magenta + "rgb(255,65,54)", # red + "rgb(255,255,255)", # white + "rgb(255,220,0)", # yellow + ] + else: + rgb_colorscale = colorscale + + for i in range(len(default_colors.keys())): + k = list(default_colors.keys())[i] # PY3 won't index keys + if i < len(rgb_colorscale): + default_colors[k] = rgb_colorscale[i] + + # add support for cyclic format colors as introduced in scipy===1.5.0 + # before this, the colors were named 'r', 'b', 'y' etc., now they are + # named 'C0', 'C1', etc. To keep the colors consistent regardless of the + # scipy version, we try as much as possible to map the new colors to the + # old colors + # this mapping was found by inpecting scipy/cluster/hierarchy.py (see + # comment above). + new_old_color_map = [ + ("C0", "b"), + ("C1", "g"), + ("C2", "r"), + ("C3", "c"), + ("C4", "m"), + ("C5", "y"), + ("C6", "k"), + ("C7", "g"), + ("C8", "r"), + ("C9", "c"), + ] + for nc, oc in new_old_color_map: + try: + default_colors[nc] = default_colors[oc] + except KeyError: + # it could happen that the old color isn't found (if a custom + # colorscale was specified), in this case we set it to an + # arbitrary default. + default_colors[nc] = "rgb(0,116,217)" + + return default_colors + + def set_axis_layout(self, axis_key): + """ + Sets and returns default axis object for dendrogram figure. + + :param (str) axis_key: E.g., 'xaxis', 'xaxis1', 'yaxis', yaxis1', etc. + :rtype (dict): An axis_key dictionary with set parameters. + + """ + axis_defaults = { + "type": "linear", + "ticks": "outside", + "mirror": "allticks", + "rangemode": "tozero", + "showticklabels": True, + "zeroline": False, + "showgrid": False, + "showline": True, + } + + if len(self.labels) != 0: + axis_key_labels = self.xaxis + if self.orientation in ["left", "right"]: + axis_key_labels = self.yaxis + if axis_key_labels not in self.layout: + self.layout[axis_key_labels] = {} + self.layout[axis_key_labels]["tickvals"] = [ + zv * self.sign[axis_key] for zv in self.zero_vals + ] + self.layout[axis_key_labels]["ticktext"] = self.labels + self.layout[axis_key_labels]["tickmode"] = "array" + + self.layout[axis_key].update(axis_defaults) + + return self.layout[axis_key] + + def set_figure_layout(self, width, height): + """ + Sets and returns default layout object for dendrogram figure. + + """ + self.layout.update( + { + "showlegend": False, + "autosize": False, + "hovermode": "closest", + "width": width, + "height": height, + } + ) + + self.set_axis_layout(self.xaxis) + self.set_axis_layout(self.yaxis) + + return self.layout + + def get_dendrogram_traces( + self, X, colorscale, distfun, linkagefun, hovertext, color_threshold + ): + """ + Calculates all the elements needed for plotting a dendrogram. + + :param (ndarray) X: Matrix of observations as array of arrays + :param (list) colorscale: Color scale for dendrogram tree clusters + :param (function) distfun: Function to compute the pairwise distance + from the observations + :param (function) linkagefun: Function to compute the linkage matrix + from the pairwise distances + :param (list) hovertext: List of hovertext for constituent traces of dendrogram + :rtype (tuple): Contains all the traces in the following order: + (a) trace_list: List of Plotly trace objects for dendrogram tree + (b) icoord: All X points of the dendrogram tree as array of arrays + with length 4 + (c) dcoord: All Y points of the dendrogram tree as array of arrays + with length 4 + (d) ordered_labels: leaf labels in the order they are going to + appear on the plot + (e) P['leaves']: left-to-right traversal of the leaves + + """ + d = distfun(X) + Z = linkagefun(d) + P = sch.dendrogram( + Z, + orientation=self.orientation, + labels=self.labels, + no_plot=True, + color_threshold=color_threshold, + ) + + icoord = np.array(P["icoord"]) + dcoord = np.array(P["dcoord"]) + ordered_labels = np.array(P["ivl"]) + color_list = np.array(P["color_list"]) + colors = self.get_color_dict(colorscale) + + trace_list = [] + + for i in range(len(icoord)): + # xs and ys are arrays of 4 points that make up the '∩' shapes + # of the dendrogram tree + if self.orientation in ["top", "bottom"]: + xs = icoord[i] + else: + xs = dcoord[i] + + if self.orientation in ["top", "bottom"]: + ys = dcoord[i] + else: + ys = icoord[i] + color_key = color_list[i] + hovertext_label = None + if hovertext: + hovertext_label = hovertext[i] + trace = dict( + type="scatter", + x=np.multiply(self.sign[self.xaxis], xs), + y=np.multiply(self.sign[self.yaxis], ys), + mode="lines", + marker=dict(color=colors[color_key]), + text=hovertext_label, + hoverinfo="text", + ) + + try: + x_index = int(self.xaxis[-1]) + except ValueError: + x_index = "" + + try: + y_index = int(self.yaxis[-1]) + except ValueError: + y_index = "" + + trace["xaxis"] = f"x{x_index}" + trace["yaxis"] = f"y{y_index}" + + trace_list.append(trace) + + return trace_list, icoord, dcoord, ordered_labels, P["leaves"] diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_distplot.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_distplot.py new file mode 100644 index 0000000..73f6609 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_distplot.py @@ -0,0 +1,441 @@ +from plotly import exceptions, optional_imports +from plotly.figure_factory import utils +from plotly.graph_objs import graph_objs + +# Optional imports, may be None for users that only use our core functionality. +np = optional_imports.get_module("numpy") +pd = optional_imports.get_module("pandas") +scipy = optional_imports.get_module("scipy") +scipy_stats = optional_imports.get_module("scipy.stats") + + +DEFAULT_HISTNORM = "probability density" +ALTERNATIVE_HISTNORM = "probability" + + +def validate_distplot(hist_data, curve_type): + """ + Distplot-specific validations + + :raises: (PlotlyError) If hist_data is not a list of lists + :raises: (PlotlyError) If curve_type is not valid (i.e. not 'kde' or + 'normal'). + """ + hist_data_types = (list,) + if np: + hist_data_types += (np.ndarray,) + if pd: + hist_data_types += (pd.core.series.Series,) + + if not isinstance(hist_data[0], hist_data_types): + raise exceptions.PlotlyError( + "Oops, this function was written " + "to handle multiple datasets, if " + "you want to plot just one, make " + "sure your hist_data variable is " + "still a list of lists, i.e. x = " + "[1, 2, 3] -> x = [[1, 2, 3]]" + ) + + curve_opts = ("kde", "normal") + if curve_type not in curve_opts: + raise exceptions.PlotlyError("curve_type must be defined as 'kde' or 'normal'") + + if not scipy: + raise ImportError("FigureFactory.create_distplot requires scipy") + + +def create_distplot( + hist_data, + group_labels, + bin_size=1.0, + curve_type="kde", + colors=None, + rug_text=None, + histnorm=DEFAULT_HISTNORM, + show_hist=True, + show_curve=True, + show_rug=True, +): + """ + Function that creates a distplot similar to seaborn.distplot; + **this function is deprecated**, use instead :mod:`plotly.express` + functions, for example + + >>> import plotly.express as px + >>> tips = px.data.tips() + >>> fig = px.histogram(tips, x="total_bill", y="tip", color="sex", marginal="rug", + ... hover_data=tips.columns) + >>> fig.show() + + + The distplot can be composed of all or any combination of the following + 3 components: (1) histogram, (2) curve: (a) kernel density estimation + or (b) normal curve, and (3) rug plot. Additionally, multiple distplots + (from multiple datasets) can be created in the same plot. + + :param (list[list]) hist_data: Use list of lists to plot multiple data + sets on the same plot. + :param (list[str]) group_labels: Names for each data set. + :param (list[float]|float) bin_size: Size of histogram bins. + Default = 1. + :param (str) curve_type: 'kde' or 'normal'. Default = 'kde' + :param (str) histnorm: 'probability density' or 'probability' + Default = 'probability density' + :param (bool) show_hist: Add histogram to distplot? Default = True + :param (bool) show_curve: Add curve to distplot? Default = True + :param (bool) show_rug: Add rug to distplot? Default = True + :param (list[str]) colors: Colors for traces. + :param (list[list]) rug_text: Hovertext values for rug_plot, + :return (dict): Representation of a distplot figure. + + Example 1: Simple distplot of 1 data set + + >>> from plotly.figure_factory import create_distplot + + >>> hist_data = [[1.1, 1.1, 2.5, 3.0, 3.5, + ... 3.5, 4.1, 4.4, 4.5, 4.5, + ... 5.0, 5.0, 5.2, 5.5, 5.5, + ... 5.5, 5.5, 5.5, 6.1, 7.0]] + >>> group_labels = ['distplot example'] + >>> fig = create_distplot(hist_data, group_labels) + >>> fig.show() + + + Example 2: Two data sets and added rug text + + >>> from plotly.figure_factory import create_distplot + >>> # Add histogram data + >>> hist1_x = [0.8, 1.2, 0.2, 0.6, 1.6, + ... -0.9, -0.07, 1.95, 0.9, -0.2, + ... -0.5, 0.3, 0.4, -0.37, 0.6] + >>> hist2_x = [0.8, 1.5, 1.5, 0.6, 0.59, + ... 1.0, 0.8, 1.7, 0.5, 0.8, + ... -0.3, 1.2, 0.56, 0.3, 2.2] + + >>> # Group data together + >>> hist_data = [hist1_x, hist2_x] + + >>> group_labels = ['2012', '2013'] + + >>> # Add text + >>> rug_text_1 = ['a1', 'b1', 'c1', 'd1', 'e1', + ... 'f1', 'g1', 'h1', 'i1', 'j1', + ... 'k1', 'l1', 'm1', 'n1', 'o1'] + + >>> rug_text_2 = ['a2', 'b2', 'c2', 'd2', 'e2', + ... 'f2', 'g2', 'h2', 'i2', 'j2', + ... 'k2', 'l2', 'm2', 'n2', 'o2'] + + >>> # Group text together + >>> rug_text_all = [rug_text_1, rug_text_2] + + >>> # Create distplot + >>> fig = create_distplot( + ... hist_data, group_labels, rug_text=rug_text_all, bin_size=.2) + + >>> # Add title + >>> fig.update_layout(title='Dist Plot') # doctest: +SKIP + >>> fig.show() + + + Example 3: Plot with normal curve and hide rug plot + + >>> from plotly.figure_factory import create_distplot + >>> import numpy as np + + >>> x1 = np.random.randn(190) + >>> x2 = np.random.randn(200)+1 + >>> x3 = np.random.randn(200)-1 + >>> x4 = np.random.randn(210)+2 + + >>> hist_data = [x1, x2, x3, x4] + >>> group_labels = ['2012', '2013', '2014', '2015'] + + >>> fig = create_distplot( + ... hist_data, group_labels, curve_type='normal', + ... show_rug=False, bin_size=.4) + + + Example 4: Distplot with Pandas + + >>> from plotly.figure_factory import create_distplot + >>> import numpy as np + >>> import pandas as pd + + >>> df = pd.DataFrame({'2012': np.random.randn(200), + ... '2013': np.random.randn(200)+1}) + >>> fig = create_distplot([df[c] for c in df.columns], df.columns) + >>> fig.show() + """ + if colors is None: + colors = [] + if rug_text is None: + rug_text = [] + + validate_distplot(hist_data, curve_type) + utils.validate_equal_length(hist_data, group_labels) + + if isinstance(bin_size, (float, int)): + bin_size = [bin_size] * len(hist_data) + + data = [] + if show_hist: + hist = _Distplot( + hist_data, + histnorm, + group_labels, + bin_size, + curve_type, + colors, + rug_text, + show_hist, + show_curve, + ).make_hist() + + data.append(hist) + + if show_curve: + if curve_type == "normal": + curve = _Distplot( + hist_data, + histnorm, + group_labels, + bin_size, + curve_type, + colors, + rug_text, + show_hist, + show_curve, + ).make_normal() + else: + curve = _Distplot( + hist_data, + histnorm, + group_labels, + bin_size, + curve_type, + colors, + rug_text, + show_hist, + show_curve, + ).make_kde() + + data.append(curve) + + if show_rug: + rug = _Distplot( + hist_data, + histnorm, + group_labels, + bin_size, + curve_type, + colors, + rug_text, + show_hist, + show_curve, + ).make_rug() + + data.append(rug) + layout = graph_objs.Layout( + barmode="overlay", + hovermode="closest", + legend=dict(traceorder="reversed"), + xaxis1=dict(domain=[0.0, 1.0], anchor="y2", zeroline=False), + yaxis1=dict(domain=[0.35, 1], anchor="free", position=0.0), + yaxis2=dict(domain=[0, 0.25], anchor="x1", dtick=1, showticklabels=False), + ) + else: + layout = graph_objs.Layout( + barmode="overlay", + hovermode="closest", + legend=dict(traceorder="reversed"), + xaxis1=dict(domain=[0.0, 1.0], anchor="y2", zeroline=False), + yaxis1=dict(domain=[0.0, 1], anchor="free", position=0.0), + ) + + data = sum(data, []) + return graph_objs.Figure(data=data, layout=layout) + + +class _Distplot(object): + """ + Refer to TraceFactory.create_distplot() for docstring + """ + + def __init__( + self, + hist_data, + histnorm, + group_labels, + bin_size, + curve_type, + colors, + rug_text, + show_hist, + show_curve, + ): + self.hist_data = hist_data + self.histnorm = histnorm + self.group_labels = group_labels + self.bin_size = bin_size + self.show_hist = show_hist + self.show_curve = show_curve + self.trace_number = len(hist_data) + if rug_text: + self.rug_text = rug_text + else: + self.rug_text = [None] * self.trace_number + + self.start = [] + self.end = [] + if colors: + self.colors = colors + else: + self.colors = [ + "rgb(31, 119, 180)", + "rgb(255, 127, 14)", + "rgb(44, 160, 44)", + "rgb(214, 39, 40)", + "rgb(148, 103, 189)", + "rgb(140, 86, 75)", + "rgb(227, 119, 194)", + "rgb(127, 127, 127)", + "rgb(188, 189, 34)", + "rgb(23, 190, 207)", + ] + self.curve_x = [None] * self.trace_number + self.curve_y = [None] * self.trace_number + + for trace in self.hist_data: + self.start.append(min(trace) * 1.0) + self.end.append(max(trace) * 1.0) + + def make_hist(self): + """ + Makes the histogram(s) for FigureFactory.create_distplot(). + + :rtype (list) hist: list of histogram representations + """ + hist = [None] * self.trace_number + + for index in range(self.trace_number): + hist[index] = dict( + type="histogram", + x=self.hist_data[index], + xaxis="x1", + yaxis="y1", + histnorm=self.histnorm, + name=self.group_labels[index], + legendgroup=self.group_labels[index], + marker=dict(color=self.colors[index % len(self.colors)]), + autobinx=False, + xbins=dict( + start=self.start[index], + end=self.end[index], + size=self.bin_size[index], + ), + opacity=0.7, + ) + return hist + + def make_kde(self): + """ + Makes the kernel density estimation(s) for create_distplot(). + + This is called when curve_type = 'kde' in create_distplot(). + + :rtype (list) curve: list of kde representations + """ + curve = [None] * self.trace_number + for index in range(self.trace_number): + self.curve_x[index] = [ + self.start[index] + x * (self.end[index] - self.start[index]) / 500 + for x in range(500) + ] + self.curve_y[index] = scipy_stats.gaussian_kde(self.hist_data[index])( + self.curve_x[index] + ) + + if self.histnorm == ALTERNATIVE_HISTNORM: + self.curve_y[index] *= self.bin_size[index] + + for index in range(self.trace_number): + curve[index] = dict( + type="scatter", + x=self.curve_x[index], + y=self.curve_y[index], + xaxis="x1", + yaxis="y1", + mode="lines", + name=self.group_labels[index], + legendgroup=self.group_labels[index], + showlegend=False if self.show_hist else True, + marker=dict(color=self.colors[index % len(self.colors)]), + ) + return curve + + def make_normal(self): + """ + Makes the normal curve(s) for create_distplot(). + + This is called when curve_type = 'normal' in create_distplot(). + + :rtype (list) curve: list of normal curve representations + """ + curve = [None] * self.trace_number + mean = [None] * self.trace_number + sd = [None] * self.trace_number + + for index in range(self.trace_number): + mean[index], sd[index] = scipy_stats.norm.fit(self.hist_data[index]) + self.curve_x[index] = [ + self.start[index] + x * (self.end[index] - self.start[index]) / 500 + for x in range(500) + ] + self.curve_y[index] = scipy_stats.norm.pdf( + self.curve_x[index], loc=mean[index], scale=sd[index] + ) + + if self.histnorm == ALTERNATIVE_HISTNORM: + self.curve_y[index] *= self.bin_size[index] + + for index in range(self.trace_number): + curve[index] = dict( + type="scatter", + x=self.curve_x[index], + y=self.curve_y[index], + xaxis="x1", + yaxis="y1", + mode="lines", + name=self.group_labels[index], + legendgroup=self.group_labels[index], + showlegend=False if self.show_hist else True, + marker=dict(color=self.colors[index % len(self.colors)]), + ) + return curve + + def make_rug(self): + """ + Makes the rug plot(s) for create_distplot(). + + :rtype (list) rug: list of rug plot representations + """ + rug = [None] * self.trace_number + for index in range(self.trace_number): + rug[index] = dict( + type="scatter", + x=self.hist_data[index], + y=([self.group_labels[index]] * len(self.hist_data[index])), + xaxis="x1", + yaxis="y2", + mode="markers", + name=self.group_labels[index], + legendgroup=self.group_labels[index], + showlegend=(False if self.show_hist or self.show_curve else True), + text=self.rug_text[index], + marker=dict( + color=self.colors[index % len(self.colors)], symbol="line-ns-open" + ), + ) + return rug diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_facet_grid.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_facet_grid.py new file mode 100644 index 0000000..06dc71d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_facet_grid.py @@ -0,0 +1,1195 @@ +from plotly import exceptions, optional_imports +import plotly.colors as clrs +from plotly.figure_factory import utils +from plotly.subplots import make_subplots + +import math +from numbers import Number + +pd = optional_imports.get_module("pandas") + +TICK_COLOR = "#969696" +AXIS_TITLE_COLOR = "#0f0f0f" +AXIS_TITLE_SIZE = 12 +GRID_COLOR = "#ffffff" +LEGEND_COLOR = "#efefef" +PLOT_BGCOLOR = "#ededed" +ANNOT_RECT_COLOR = "#d0d0d0" +LEGEND_BORDER_WIDTH = 1 +LEGEND_ANNOT_X = 1.05 +LEGEND_ANNOT_Y = 0.5 +MAX_TICKS_PER_AXIS = 5 +THRES_FOR_FLIPPED_FACET_TITLES = 10 +GRID_WIDTH = 1 + +VALID_TRACE_TYPES = ["scatter", "scattergl", "histogram", "bar", "box"] + +CUSTOM_LABEL_ERROR = ( + "If you are using a dictionary for custom labels for the facet row/col, " + "make sure each key in that column of the dataframe is in your facet " + "labels. The keys you need are {}" +) + + +def _is_flipped(num): + if num >= THRES_FOR_FLIPPED_FACET_TITLES: + flipped = True + else: + flipped = False + return flipped + + +def _return_label(original_label, facet_labels, facet_var): + if isinstance(facet_labels, dict): + label = facet_labels[original_label] + elif isinstance(facet_labels, str): + label = "{}: {}".format(facet_var, original_label) + else: + label = original_label + return label + + +def _legend_annotation(color_name): + legend_title = dict( + textangle=0, + xanchor="left", + yanchor="middle", + x=LEGEND_ANNOT_X, + y=1.03, + showarrow=False, + xref="paper", + yref="paper", + text="factor({})".format(color_name), + font=dict(size=13, color="#000000"), + ) + return legend_title + + +def _annotation_dict( + text, lane, num_of_lanes, SUBPLOT_SPACING, row_col="col", flipped=True +): + temp = (1 - (num_of_lanes - 1) * SUBPLOT_SPACING) / (num_of_lanes) + if not flipped: + xanchor = "center" + yanchor = "middle" + if row_col == "col": + x = (lane - 1) * (temp + SUBPLOT_SPACING) + 0.5 * temp + y = 1.03 + textangle = 0 + elif row_col == "row": + y = (lane - 1) * (temp + SUBPLOT_SPACING) + 0.5 * temp + x = 1.03 + textangle = 90 + else: + if row_col == "col": + xanchor = "center" + yanchor = "bottom" + x = (lane - 1) * (temp + SUBPLOT_SPACING) + 0.5 * temp + y = 1.0 + textangle = 270 + elif row_col == "row": + xanchor = "left" + yanchor = "middle" + y = (lane - 1) * (temp + SUBPLOT_SPACING) + 0.5 * temp + x = 1.0 + textangle = 0 + + annotation_dict = dict( + textangle=textangle, + xanchor=xanchor, + yanchor=yanchor, + x=x, + y=y, + showarrow=False, + xref="paper", + yref="paper", + text=str(text), + font=dict(size=13, color=AXIS_TITLE_COLOR), + ) + return annotation_dict + + +def _axis_title_annotation(text, x_or_y_axis): + if x_or_y_axis == "x": + x_pos = 0.5 + y_pos = -0.1 + textangle = 0 + elif x_or_y_axis == "y": + x_pos = -0.1 + y_pos = 0.5 + textangle = 270 + + if not text: + text = "" + + annot = { + "font": {"color": "#000000", "size": AXIS_TITLE_SIZE}, + "showarrow": False, + "text": text, + "textangle": textangle, + "x": x_pos, + "xanchor": "center", + "xref": "paper", + "y": y_pos, + "yanchor": "middle", + "yref": "paper", + } + return annot + + +def _add_shapes_to_fig(fig, annot_rect_color, flipped_rows=False, flipped_cols=False): + shapes_list = [] + for key in fig["layout"].to_plotly_json().keys(): + if "axis" in key and fig["layout"][key]["domain"] != [0.0, 1.0]: + shape = { + "fillcolor": annot_rect_color, + "layer": "below", + "line": {"color": annot_rect_color, "width": 1}, + "type": "rect", + "xref": "paper", + "yref": "paper", + } + + if "xaxis" in key: + shape["x0"] = fig["layout"][key]["domain"][0] + shape["x1"] = fig["layout"][key]["domain"][1] + shape["y0"] = 1.005 + shape["y1"] = 1.05 + + if flipped_cols: + shape["y1"] += 0.5 + shapes_list.append(shape) + + elif "yaxis" in key: + shape["x0"] = 1.005 + shape["x1"] = 1.05 + shape["y0"] = fig["layout"][key]["domain"][0] + shape["y1"] = fig["layout"][key]["domain"][1] + + if flipped_rows: + shape["x1"] += 1 + shapes_list.append(shape) + + fig["layout"]["shapes"] = shapes_list + + +def _make_trace_for_scatter(trace, trace_type, color, **kwargs_marker): + if trace_type in ["scatter", "scattergl"]: + trace["mode"] = "markers" + trace["marker"] = dict(color=color, **kwargs_marker) + return trace + + +def _facet_grid_color_categorical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colormap, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, +): + fig = make_subplots( + rows=num_of_rows, + cols=num_of_cols, + shared_xaxes=True, + shared_yaxes=True, + horizontal_spacing=SUBPLOT_SPACING, + vertical_spacing=SUBPLOT_SPACING, + print_grid=False, + ) + + annotations = [] + if not facet_row and not facet_col: + color_groups = list(df.groupby(color_name)) + for group in color_groups: + trace = dict( + type=trace_type, + name=group[0], + marker=dict(color=colormap[group[0]]), + **kwargs_trace, + ) + if x: + trace["x"] = group[1][x] + if y: + trace["y"] = group[1][y] + trace = _make_trace_for_scatter( + trace, trace_type, colormap[group[0]], **kwargs_marker + ) + + fig.append_trace(trace, 1, 1) + + elif (facet_row and not facet_col) or (not facet_row and facet_col): + groups_by_facet = list(df.groupby(facet_row if facet_row else facet_col)) + for j, group in enumerate(groups_by_facet): + for color_val in df[color_name].unique(): + data_by_color = group[1][group[1][color_name] == color_val] + trace = dict( + type=trace_type, + name=color_val, + marker=dict(color=colormap[color_val]), + **kwargs_trace, + ) + if x: + trace["x"] = data_by_color[x] + if y: + trace["y"] = data_by_color[y] + trace = _make_trace_for_scatter( + trace, trace_type, colormap[color_val], **kwargs_marker + ) + + fig.append_trace( + trace, j + 1 if facet_row else 1, 1 if facet_row else j + 1 + ) + + label = _return_label( + group[0], + facet_row_labels if facet_row else facet_col_labels, + facet_row if facet_row else facet_col, + ) + + annotations.append( + _annotation_dict( + label, + num_of_rows - j if facet_row else j + 1, + num_of_rows if facet_row else num_of_cols, + SUBPLOT_SPACING, + "row" if facet_row else "col", + flipped_rows, + ) + ) + + elif facet_row and facet_col: + groups_by_facets = list(df.groupby([facet_row, facet_col])) + tuple_to_facet_group = {item[0]: item[1] for item in groups_by_facets} + + row_values = df[facet_row].unique() + col_values = df[facet_col].unique() + color_vals = df[color_name].unique() + for row_count, x_val in enumerate(row_values): + for col_count, y_val in enumerate(col_values): + try: + group = tuple_to_facet_group[(x_val, y_val)] + except KeyError: + group = pd.DataFrame( + [[None, None, None]], columns=[x, y, color_name] + ) + + for color_val in color_vals: + if group.values.tolist() != [[None, None, None]]: + group_filtered = group[group[color_name] == color_val] + + trace = dict( + type=trace_type, + name=color_val, + marker=dict(color=colormap[color_val]), + **kwargs_trace, + ) + new_x = group_filtered[x] + new_y = group_filtered[y] + else: + trace = dict( + type=trace_type, + name=color_val, + marker=dict(color=colormap[color_val]), + showlegend=False, + **kwargs_trace, + ) + new_x = group[x] + new_y = group[y] + + if x: + trace["x"] = new_x + if y: + trace["y"] = new_y + trace = _make_trace_for_scatter( + trace, trace_type, colormap[color_val], **kwargs_marker + ) + + fig.append_trace(trace, row_count + 1, col_count + 1) + if row_count == 0: + label = _return_label( + col_values[col_count], facet_col_labels, facet_col + ) + annotations.append( + _annotation_dict( + label, + col_count + 1, + num_of_cols, + SUBPLOT_SPACING, + row_col="col", + flipped=flipped_cols, + ) + ) + label = _return_label(row_values[row_count], facet_row_labels, facet_row) + annotations.append( + _annotation_dict( + label, + num_of_rows - row_count, + num_of_rows, + SUBPLOT_SPACING, + row_col="row", + flipped=flipped_rows, + ) + ) + + return fig, annotations + + +def _facet_grid_color_numerical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colormap, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, +): + fig = make_subplots( + rows=num_of_rows, + cols=num_of_cols, + shared_xaxes=True, + shared_yaxes=True, + horizontal_spacing=SUBPLOT_SPACING, + vertical_spacing=SUBPLOT_SPACING, + print_grid=False, + ) + + annotations = [] + if not facet_row and not facet_col: + trace = dict( + type=trace_type, + marker=dict(color=df[color_name], colorscale=colormap, showscale=True), + **kwargs_trace, + ) + if x: + trace["x"] = df[x] + if y: + trace["y"] = df[y] + trace = _make_trace_for_scatter( + trace, trace_type, df[color_name], **kwargs_marker + ) + + fig.append_trace(trace, 1, 1) + + if (facet_row and not facet_col) or (not facet_row and facet_col): + groups_by_facet = list(df.groupby(facet_row if facet_row else facet_col)) + for j, group in enumerate(groups_by_facet): + trace = dict( + type=trace_type, + marker=dict( + color=df[color_name], + colorscale=colormap, + showscale=True, + colorbar=dict(x=1.15), + ), + **kwargs_trace, + ) + if x: + trace["x"] = group[1][x] + if y: + trace["y"] = group[1][y] + trace = _make_trace_for_scatter( + trace, trace_type, df[color_name], **kwargs_marker + ) + + fig.append_trace( + trace, j + 1 if facet_row else 1, 1 if facet_row else j + 1 + ) + + labels = facet_row_labels if facet_row else facet_col_labels + label = _return_label( + group[0], labels, facet_row if facet_row else facet_col + ) + + annotations.append( + _annotation_dict( + label, + num_of_rows - j if facet_row else j + 1, + num_of_rows if facet_row else num_of_cols, + SUBPLOT_SPACING, + "row" if facet_row else "col", + flipped=flipped_rows, + ) + ) + + elif facet_row and facet_col: + groups_by_facets = list(df.groupby([facet_row, facet_col])) + tuple_to_facet_group = {item[0]: item[1] for item in groups_by_facets} + + row_values = df[facet_row].unique() + col_values = df[facet_col].unique() + for row_count, x_val in enumerate(row_values): + for col_count, y_val in enumerate(col_values): + try: + group = tuple_to_facet_group[(x_val, y_val)] + except KeyError: + group = pd.DataFrame( + [[None, None, None]], columns=[x, y, color_name] + ) + + if group.values.tolist() != [[None, None, None]]: + trace = dict( + type=trace_type, + marker=dict( + color=df[color_name], + colorscale=colormap, + showscale=(row_count == 0), + colorbar=dict(x=1.15), + ), + **kwargs_trace, + ) + + else: + trace = dict(type=trace_type, showlegend=False, **kwargs_trace) + + if x: + trace["x"] = group[x] + if y: + trace["y"] = group[y] + trace = _make_trace_for_scatter( + trace, trace_type, df[color_name], **kwargs_marker + ) + + fig.append_trace(trace, row_count + 1, col_count + 1) + if row_count == 0: + label = _return_label( + col_values[col_count], facet_col_labels, facet_col + ) + annotations.append( + _annotation_dict( + label, + col_count + 1, + num_of_cols, + SUBPLOT_SPACING, + row_col="col", + flipped=flipped_cols, + ) + ) + label = _return_label(row_values[row_count], facet_row_labels, facet_row) + annotations.append( + _annotation_dict( + row_values[row_count], + num_of_rows - row_count, + num_of_rows, + SUBPLOT_SPACING, + row_col="row", + flipped=flipped_rows, + ) + ) + + return fig, annotations + + +def _facet_grid( + df, + x, + y, + facet_row, + facet_col, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, +): + fig = make_subplots( + rows=num_of_rows, + cols=num_of_cols, + shared_xaxes=True, + shared_yaxes=True, + horizontal_spacing=SUBPLOT_SPACING, + vertical_spacing=SUBPLOT_SPACING, + print_grid=False, + ) + annotations = [] + if not facet_row and not facet_col: + trace = dict( + type=trace_type, + marker=dict(color=marker_color, line=kwargs_marker["line"]), + **kwargs_trace, + ) + + if x: + trace["x"] = df[x] + if y: + trace["y"] = df[y] + trace = _make_trace_for_scatter( + trace, trace_type, marker_color, **kwargs_marker + ) + + fig.append_trace(trace, 1, 1) + + elif (facet_row and not facet_col) or (not facet_row and facet_col): + groups_by_facet = list(df.groupby(facet_row if facet_row else facet_col)) + for j, group in enumerate(groups_by_facet): + trace = dict( + type=trace_type, + marker=dict(color=marker_color, line=kwargs_marker["line"]), + **kwargs_trace, + ) + + if x: + trace["x"] = group[1][x] + if y: + trace["y"] = group[1][y] + trace = _make_trace_for_scatter( + trace, trace_type, marker_color, **kwargs_marker + ) + + fig.append_trace( + trace, j + 1 if facet_row else 1, 1 if facet_row else j + 1 + ) + + label = _return_label( + group[0], + facet_row_labels if facet_row else facet_col_labels, + facet_row if facet_row else facet_col, + ) + + annotations.append( + _annotation_dict( + label, + num_of_rows - j if facet_row else j + 1, + num_of_rows if facet_row else num_of_cols, + SUBPLOT_SPACING, + "row" if facet_row else "col", + flipped_rows, + ) + ) + + elif facet_row and facet_col: + groups_by_facets = list(df.groupby([facet_row, facet_col])) + tuple_to_facet_group = {item[0]: item[1] for item in groups_by_facets} + + row_values = df[facet_row].unique() + col_values = df[facet_col].unique() + for row_count, x_val in enumerate(row_values): + for col_count, y_val in enumerate(col_values): + try: + group = tuple_to_facet_group[(x_val, y_val)] + except KeyError: + group = pd.DataFrame([[None, None]], columns=[x, y]) + trace = dict( + type=trace_type, + marker=dict(color=marker_color, line=kwargs_marker["line"]), + **kwargs_trace, + ) + if x: + trace["x"] = group[x] + if y: + trace["y"] = group[y] + trace = _make_trace_for_scatter( + trace, trace_type, marker_color, **kwargs_marker + ) + + fig.append_trace(trace, row_count + 1, col_count + 1) + if row_count == 0: + label = _return_label( + col_values[col_count], facet_col_labels, facet_col + ) + annotations.append( + _annotation_dict( + label, + col_count + 1, + num_of_cols, + SUBPLOT_SPACING, + row_col="col", + flipped=flipped_cols, + ) + ) + + label = _return_label(row_values[row_count], facet_row_labels, facet_row) + annotations.append( + _annotation_dict( + label, + num_of_rows - row_count, + num_of_rows, + SUBPLOT_SPACING, + row_col="row", + flipped=flipped_rows, + ) + ) + + return fig, annotations + + +def create_facet_grid( + df, + x=None, + y=None, + facet_row=None, + facet_col=None, + color_name=None, + colormap=None, + color_is_cat=False, + facet_row_labels=None, + facet_col_labels=None, + height=None, + width=None, + trace_type="scatter", + scales="fixed", + dtick_x=None, + dtick_y=None, + show_boxes=True, + ggplot2=False, + binsize=1, + **kwargs, +): + """ + Returns figure for facet grid; **this function is deprecated**, since + plotly.express functions should be used instead, for example + + >>> import plotly.express as px + >>> tips = px.data.tips() + >>> fig = px.scatter(tips, + ... x='total_bill', + ... y='tip', + ... facet_row='sex', + ... facet_col='smoker', + ... color='size') + + + :param (pd.DataFrame) df: the dataframe of columns for the facet grid. + :param (str) x: the name of the dataframe column for the x axis data. + :param (str) y: the name of the dataframe column for the y axis data. + :param (str) facet_row: the name of the dataframe column that is used to + facet the grid into row panels. + :param (str) facet_col: the name of the dataframe column that is used to + facet the grid into column panels. + :param (str) color_name: the name of your dataframe column that will + function as the colormap variable. + :param (str|list|dict) colormap: the param that determines how the + color_name column colors the data. If the dataframe contains numeric + data, then a dictionary of colors will group the data categorically + while a Plotly Colorscale name or a custom colorscale will treat it + numerically. To learn more about colors and types of colormap, run + `help(plotly.colors)`. + :param (bool) color_is_cat: determines whether a numerical column for the + colormap will be treated as categorical (True) or sequential (False). + Default = False. + :param (str|dict) facet_row_labels: set to either 'name' or a dictionary + of all the unique values in the faceting row mapped to some text to + show up in the label annotations. If None, labeling works like usual. + :param (str|dict) facet_col_labels: set to either 'name' or a dictionary + of all the values in the faceting row mapped to some text to show up + in the label annotations. If None, labeling works like usual. + :param (int) height: the height of the facet grid figure. + :param (int) width: the width of the facet grid figure. + :param (str) trace_type: decides the type of plot to appear in the + facet grid. The options are 'scatter', 'scattergl', 'histogram', + 'bar', and 'box'. + Default = 'scatter'. + :param (str) scales: determines if axes have fixed ranges or not. Valid + settings are 'fixed' (all axes fixed), 'free_x' (x axis free only), + 'free_y' (y axis free only) or 'free' (both axes free). + :param (float) dtick_x: determines the distance between each tick on the + x-axis. Default is None which means dtick_x is set automatically. + :param (float) dtick_y: determines the distance between each tick on the + y-axis. Default is None which means dtick_y is set automatically. + :param (bool) show_boxes: draws grey boxes behind the facet titles. + :param (bool) ggplot2: draws the facet grid in the style of `ggplot2`. See + http://ggplot2.tidyverse.org/reference/facet_grid.html for reference. + Default = False + :param (int) binsize: groups all data into bins of a given length. + :param (dict) kwargs: a dictionary of scatterplot arguments. + + Examples 1: One Way Faceting + + >>> import plotly.figure_factory as ff + >>> import pandas as pd + >>> mpg = pd.read_table('https://raw.githubusercontent.com/plotly/datasets/master/mpg_2017.txt') + + >>> fig = ff.create_facet_grid( + ... mpg, + ... x='displ', + ... y='cty', + ... facet_col='cyl', + ... ) + >>> fig.show() + + Example 2: Two Way Faceting + + >>> import plotly.figure_factory as ff + + >>> import pandas as pd + + >>> mpg = pd.read_table('https://raw.githubusercontent.com/plotly/datasets/master/mpg_2017.txt') + + >>> fig = ff.create_facet_grid( + ... mpg, + ... x='displ', + ... y='cty', + ... facet_row='drv', + ... facet_col='cyl', + ... ) + >>> fig.show() + + Example 3: Categorical Coloring + + >>> import plotly.figure_factory as ff + >>> import pandas as pd + >>> mtcars = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/mtcars.csv') + >>> mtcars.cyl = mtcars.cyl.astype(str) + >>> fig = ff.create_facet_grid( + ... mtcars, + ... x='mpg', + ... y='wt', + ... facet_col='cyl', + ... color_name='cyl', + ... color_is_cat=True, + ... ) + >>> fig.show() + + + """ + if not pd: + raise ImportError("'pandas' must be installed for this figure_factory.") + + if not isinstance(df, pd.DataFrame): + raise exceptions.PlotlyError("You must input a pandas DataFrame.") + + # make sure all columns are of homogenous datatype + utils.validate_dataframe(df) + + if trace_type in ["scatter", "scattergl"]: + if not x or not y: + raise exceptions.PlotlyError( + "You need to input 'x' and 'y' if you are you are using a " + "trace_type of 'scatter' or 'scattergl'." + ) + + for key in [x, y, facet_row, facet_col, color_name]: + if key is not None: + try: + df[key] + except KeyError: + raise exceptions.PlotlyError( + "x, y, facet_row, facet_col and color_name must be keys " + "in your dataframe." + ) + # autoscale histogram bars + if trace_type not in ["scatter", "scattergl"]: + scales = "free" + + # validate scales + if scales not in ["fixed", "free_x", "free_y", "free"]: + raise exceptions.PlotlyError( + "'scales' must be set to 'fixed', 'free_x', 'free_y' and 'free'." + ) + + if trace_type not in VALID_TRACE_TYPES: + raise exceptions.PlotlyError( + "'trace_type' must be in {}".format(VALID_TRACE_TYPES) + ) + + if trace_type == "histogram": + SUBPLOT_SPACING = 0.06 + else: + SUBPLOT_SPACING = 0.015 + + # seperate kwargs for marker and else + if "marker" in kwargs: + kwargs_marker = kwargs["marker"] + else: + kwargs_marker = {} + marker_color = kwargs_marker.pop("color", None) + kwargs.pop("marker", None) + kwargs_trace = kwargs + + if "size" not in kwargs_marker: + if ggplot2: + kwargs_marker["size"] = 5 + else: + kwargs_marker["size"] = 8 + + if "opacity" not in kwargs_marker: + if not ggplot2: + kwargs_trace["opacity"] = 0.6 + + if "line" not in kwargs_marker: + if not ggplot2: + kwargs_marker["line"] = {"color": "darkgrey", "width": 1} + else: + kwargs_marker["line"] = {} + + # default marker size + if not ggplot2: + if not marker_color: + marker_color = "rgb(31, 119, 180)" + else: + marker_color = "rgb(0, 0, 0)" + + num_of_rows = 1 + num_of_cols = 1 + flipped_rows = False + flipped_cols = False + if facet_row: + num_of_rows = len(df[facet_row].unique()) + flipped_rows = _is_flipped(num_of_rows) + if isinstance(facet_row_labels, dict): + for key in df[facet_row].unique(): + if key not in facet_row_labels.keys(): + unique_keys = df[facet_row].unique().tolist() + raise exceptions.PlotlyError(CUSTOM_LABEL_ERROR.format(unique_keys)) + if facet_col: + num_of_cols = len(df[facet_col].unique()) + flipped_cols = _is_flipped(num_of_cols) + if isinstance(facet_col_labels, dict): + for key in df[facet_col].unique(): + if key not in facet_col_labels.keys(): + unique_keys = df[facet_col].unique().tolist() + raise exceptions.PlotlyError(CUSTOM_LABEL_ERROR.format(unique_keys)) + show_legend = False + if color_name: + if isinstance(df[color_name].iloc[0], str) or color_is_cat: + show_legend = True + if isinstance(colormap, dict): + clrs.validate_colors_dict(colormap, "rgb") + + for val in df[color_name].unique(): + if val not in colormap.keys(): + raise exceptions.PlotlyError( + "If using 'colormap' as a dictionary, make sure " + "all the values of the colormap column are in " + "the keys of your dictionary." + ) + else: + # use default plotly colors for dictionary + default_colors = clrs.DEFAULT_PLOTLY_COLORS + colormap = {} + j = 0 + for val in df[color_name].unique(): + if j >= len(default_colors): + j = 0 + colormap[val] = default_colors[j] + j += 1 + fig, annotations = _facet_grid_color_categorical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colormap, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, + ) + + elif isinstance(df[color_name].iloc[0], Number): + if isinstance(colormap, dict): + show_legend = True + clrs.validate_colors_dict(colormap, "rgb") + + for val in df[color_name].unique(): + if val not in colormap.keys(): + raise exceptions.PlotlyError( + "If using 'colormap' as a dictionary, make sure " + "all the values of the colormap column are in " + "the keys of your dictionary." + ) + fig, annotations = _facet_grid_color_categorical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colormap, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, + ) + + elif isinstance(colormap, list): + colorscale_list = colormap + clrs.validate_colorscale(colorscale_list) + + fig, annotations = _facet_grid_color_numerical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colorscale_list, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, + ) + elif isinstance(colormap, str): + if colormap in clrs.PLOTLY_SCALES.keys(): + colorscale_list = clrs.PLOTLY_SCALES[colormap] + else: + raise exceptions.PlotlyError( + "If 'colormap' is a string, it must be the name " + "of a Plotly Colorscale. The available colorscale " + "names are {}".format(clrs.PLOTLY_SCALES.keys()) + ) + fig, annotations = _facet_grid_color_numerical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colorscale_list, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, + ) + else: + colorscale_list = clrs.PLOTLY_SCALES["Reds"] + fig, annotations = _facet_grid_color_numerical( + df, + x, + y, + facet_row, + facet_col, + color_name, + colorscale_list, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, + ) + + else: + fig, annotations = _facet_grid( + df, + x, + y, + facet_row, + facet_col, + num_of_rows, + num_of_cols, + facet_row_labels, + facet_col_labels, + trace_type, + flipped_rows, + flipped_cols, + show_boxes, + SUBPLOT_SPACING, + marker_color, + kwargs_trace, + kwargs_marker, + ) + + if not height: + height = max(600, 100 * num_of_rows) + if not width: + width = max(600, 100 * num_of_cols) + + fig["layout"].update( + height=height, width=width, title="", paper_bgcolor="rgb(251, 251, 251)" + ) + if ggplot2: + fig["layout"].update( + plot_bgcolor=PLOT_BGCOLOR, + paper_bgcolor="rgb(255, 255, 255)", + hovermode="closest", + ) + + # axis titles + x_title_annot = _axis_title_annotation(x, "x") + y_title_annot = _axis_title_annotation(y, "y") + + # annotations + annotations.append(x_title_annot) + annotations.append(y_title_annot) + + # legend + fig["layout"]["showlegend"] = show_legend + fig["layout"]["legend"]["bgcolor"] = LEGEND_COLOR + fig["layout"]["legend"]["borderwidth"] = LEGEND_BORDER_WIDTH + fig["layout"]["legend"]["x"] = 1.05 + fig["layout"]["legend"]["y"] = 1 + fig["layout"]["legend"]["yanchor"] = "top" + + if show_legend: + fig["layout"]["showlegend"] = show_legend + if ggplot2: + if color_name: + legend_annot = _legend_annotation(color_name) + annotations.append(legend_annot) + fig["layout"]["margin"]["r"] = 150 + + # assign annotations to figure + fig["layout"]["annotations"] = annotations + + # add shaded boxes behind axis titles + if show_boxes and ggplot2: + _add_shapes_to_fig(fig, ANNOT_RECT_COLOR, flipped_rows, flipped_cols) + + # all xaxis and yaxis labels + axis_labels = {"x": [], "y": []} + for key in fig["layout"]: + if "xaxis" in key: + axis_labels["x"].append(key) + elif "yaxis" in key: + axis_labels["y"].append(key) + + string_number_in_data = False + for var in [v for v in [x, y] if v]: + if isinstance(df[var].tolist()[0], str): + for item in df[var]: + try: + int(item) + string_number_in_data = True + except ValueError: + pass + + if string_number_in_data: + for x_y in axis_labels.keys(): + for axis_name in axis_labels[x_y]: + fig["layout"][axis_name]["type"] = "category" + + if scales == "fixed": + fixed_axes = ["x", "y"] + elif scales == "free_x": + fixed_axes = ["y"] + elif scales == "free_y": + fixed_axes = ["x"] + elif scales == "free": + fixed_axes = [] + + # fixed ranges + for x_y in fixed_axes: + min_ranges = [] + max_ranges = [] + for trace in fig["data"]: + if trace[x_y] is not None and len(trace[x_y]) > 0: + min_ranges.append(min(trace[x_y])) + max_ranges.append(max(trace[x_y])) + while None in min_ranges: + min_ranges.remove(None) + while None in max_ranges: + max_ranges.remove(None) + + min_range = min(min_ranges) + max_range = max(max_ranges) + + range_are_numbers = isinstance(min_range, Number) and isinstance( + max_range, Number + ) + + if range_are_numbers: + min_range = math.floor(min_range) + max_range = math.ceil(max_range) + + # extend widen frame by 5% on each side + min_range -= 0.05 * (max_range - min_range) + max_range += 0.05 * (max_range - min_range) + + if x_y == "x": + if dtick_x: + dtick = dtick_x + else: + dtick = math.floor((max_range - min_range) / MAX_TICKS_PER_AXIS) + elif x_y == "y": + if dtick_y: + dtick = dtick_y + else: + dtick = math.floor((max_range - min_range) / MAX_TICKS_PER_AXIS) + else: + dtick = 1 + + for axis_title in axis_labels[x_y]: + fig["layout"][axis_title]["dtick"] = dtick + fig["layout"][axis_title]["ticklen"] = 0 + fig["layout"][axis_title]["zeroline"] = False + if ggplot2: + fig["layout"][axis_title]["tickwidth"] = 1 + fig["layout"][axis_title]["ticklen"] = 4 + fig["layout"][axis_title]["gridwidth"] = GRID_WIDTH + + fig["layout"][axis_title]["gridcolor"] = GRID_COLOR + fig["layout"][axis_title]["gridwidth"] = 2 + fig["layout"][axis_title]["tickfont"] = { + "color": TICK_COLOR, + "size": 10, + } + + # insert ranges into fig + if x_y in fixed_axes: + for key in fig["layout"]: + if "{}axis".format(x_y) in key and range_are_numbers: + fig["layout"][key]["range"] = [min_range, max_range] + + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_gantt.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_gantt.py new file mode 100644 index 0000000..2fe393f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_gantt.py @@ -0,0 +1,1034 @@ +from numbers import Number + +import copy + +from plotly import exceptions, optional_imports +import plotly.colors as clrs +from plotly.figure_factory import utils +import plotly.graph_objects as go + +pd = optional_imports.get_module("pandas") + +REQUIRED_GANTT_KEYS = ["Task", "Start", "Finish"] + + +def _get_corner_points(x0, y0, x1, y1): + """ + Returns the corner points of a scatter rectangle + + :param x0: x-start + :param y0: y-lower + :param x1: x-end + :param y1: y-upper + :return: ([x], [y]), tuple of lists containing the x and y values + """ + + return ([x0, x1, x1, x0], [y0, y0, y1, y1]) + + +def validate_gantt(df): + """ + Validates the inputted dataframe or list + """ + if pd and isinstance(df, pd.core.frame.DataFrame): + # validate that df has all the required keys + for key in REQUIRED_GANTT_KEYS: + if key not in df: + raise exceptions.PlotlyError( + "The columns in your dataframe must include the " + "following keys: {0}".format(", ".join(REQUIRED_GANTT_KEYS)) + ) + + num_of_rows = len(df.index) + chart = [] + for index in range(num_of_rows): + task_dict = {} + for key in df: + task_dict[key] = df.iloc[index][key] + chart.append(task_dict) + + return chart + + # validate if df is a list + if not isinstance(df, list): + raise exceptions.PlotlyError( + "You must input either a dataframe or a list of dictionaries." + ) + + # validate if df is empty + if len(df) <= 0: + raise exceptions.PlotlyError( + "Your list is empty. It must contain at least one dictionary." + ) + if not isinstance(df[0], dict): + raise exceptions.PlotlyError("Your list must only include dictionaries.") + return df + + +def gantt( + chart, + colors, + title, + bar_width, + showgrid_x, + showgrid_y, + height, + width, + tasks=None, + task_names=None, + data=None, + group_tasks=False, + show_hover_fill=True, + show_colorbar=True, +): + """ + Refer to create_gantt() for docstring + """ + if tasks is None: + tasks = [] + if task_names is None: + task_names = [] + if data is None: + data = [] + + for index in range(len(chart)): + task = dict( + x0=chart[index]["Start"], + x1=chart[index]["Finish"], + name=chart[index]["Task"], + ) + if "Description" in chart[index]: + task["description"] = chart[index]["Description"] + tasks.append(task) + + # create a scatter trace for every task group + scatter_data_dict = dict() + marker_data_dict = dict() + + if show_hover_fill: + hoverinfo = "name" + else: + hoverinfo = "skip" + + scatter_data_template = { + "x": [], + "y": [], + "mode": "none", + "fill": "toself", + "hoverinfo": hoverinfo, + } + + marker_data_template = { + "x": [], + "y": [], + "mode": "markers", + "text": [], + "marker": dict(color="", size=1, opacity=0), + "name": "", + "showlegend": False, + } + + # create the list of task names + for index in range(len(tasks)): + tn = tasks[index]["name"] + # Is added to task_names if group_tasks is set to False, + # or if the option is used (True) it only adds them if the + # name is not already in the list + if not group_tasks or tn not in task_names: + task_names.append(tn) + # Guarantees that for grouped tasks the tasks that are inserted first + # are shown at the top + if group_tasks: + task_names.reverse() + + color_index = 0 + for index in range(len(tasks)): + tn = tasks[index]["name"] + del tasks[index]["name"] + + # If group_tasks is True, all tasks with the same name belong + # to the same row. + groupID = index + if group_tasks: + groupID = task_names.index(tn) + tasks[index]["y0"] = groupID - bar_width + tasks[index]["y1"] = groupID + bar_width + + # check if colors need to be looped + if color_index >= len(colors): + color_index = 0 + tasks[index]["fillcolor"] = colors[color_index] + color_id = tasks[index]["fillcolor"] + + if color_id not in scatter_data_dict: + scatter_data_dict[color_id] = copy.deepcopy(scatter_data_template) + + scatter_data_dict[color_id]["fillcolor"] = color_id + scatter_data_dict[color_id]["name"] = str(tn) + scatter_data_dict[color_id]["legendgroup"] = color_id + + # if there are already values append the gap + if len(scatter_data_dict[color_id]["x"]) > 0: + # a gap on the scatterplot separates the rectangles from each other + scatter_data_dict[color_id]["x"].append( + scatter_data_dict[color_id]["x"][-1] + ) + scatter_data_dict[color_id]["y"].append(None) + + xs, ys = _get_corner_points( + tasks[index]["x0"], + tasks[index]["y0"], + tasks[index]["x1"], + tasks[index]["y1"], + ) + + scatter_data_dict[color_id]["x"] += xs + scatter_data_dict[color_id]["y"] += ys + + # append dummy markers for showing start and end of interval + if color_id not in marker_data_dict: + marker_data_dict[color_id] = copy.deepcopy(marker_data_template) + marker_data_dict[color_id]["marker"]["color"] = color_id + marker_data_dict[color_id]["legendgroup"] = color_id + + marker_data_dict[color_id]["x"].append(tasks[index]["x0"]) + marker_data_dict[color_id]["x"].append(tasks[index]["x1"]) + marker_data_dict[color_id]["y"].append(groupID) + marker_data_dict[color_id]["y"].append(groupID) + + if "description" in tasks[index]: + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + del tasks[index]["description"] + else: + marker_data_dict[color_id]["text"].append(None) + marker_data_dict[color_id]["text"].append(None) + + color_index += 1 + + showlegend = show_colorbar + + layout = dict( + title=title, + showlegend=showlegend, + height=height, + width=width, + shapes=[], + hovermode="closest", + yaxis=dict( + showgrid=showgrid_y, + ticktext=task_names, + tickvals=list(range(len(task_names))), + range=[-1, len(task_names) + 1], + autorange=False, + zeroline=False, + ), + xaxis=dict( + showgrid=showgrid_x, + zeroline=False, + rangeselector=dict( + buttons=list( + [ + dict(count=7, label="1w", step="day", stepmode="backward"), + dict(count=1, label="1m", step="month", stepmode="backward"), + dict(count=6, label="6m", step="month", stepmode="backward"), + dict(count=1, label="YTD", step="year", stepmode="todate"), + dict(count=1, label="1y", step="year", stepmode="backward"), + dict(step="all"), + ] + ) + ), + type="date", + ), + ) + + data = [scatter_data_dict[k] for k in sorted(scatter_data_dict)] + data += [marker_data_dict[k] for k in sorted(marker_data_dict)] + + # fig = dict( + # data=data, layout=layout + # ) + fig = go.Figure(data=data, layout=layout) + return fig + + +def gantt_colorscale( + chart, + colors, + title, + index_col, + show_colorbar, + bar_width, + showgrid_x, + showgrid_y, + height, + width, + tasks=None, + task_names=None, + data=None, + group_tasks=False, + show_hover_fill=True, +): + """ + Refer to FigureFactory.create_gantt() for docstring + """ + if tasks is None: + tasks = [] + if task_names is None: + task_names = [] + if data is None: + data = [] + showlegend = False + + for index in range(len(chart)): + task = dict( + x0=chart[index]["Start"], + x1=chart[index]["Finish"], + name=chart[index]["Task"], + ) + if "Description" in chart[index]: + task["description"] = chart[index]["Description"] + tasks.append(task) + + # create a scatter trace for every task group + scatter_data_dict = dict() + # create scatter traces for the start- and endpoints + marker_data_dict = dict() + + if show_hover_fill: + hoverinfo = "name" + else: + hoverinfo = "skip" + + scatter_data_template = { + "x": [], + "y": [], + "mode": "none", + "fill": "toself", + "showlegend": False, + "hoverinfo": hoverinfo, + "legendgroup": "", + } + + marker_data_template = { + "x": [], + "y": [], + "mode": "markers", + "text": [], + "marker": dict(color="", size=1, opacity=0), + "name": "", + "showlegend": False, + "legendgroup": "", + } + + index_vals = [] + for row in range(len(tasks)): + if chart[row][index_col] not in index_vals: + index_vals.append(chart[row][index_col]) + + index_vals.sort() + + # compute the color for task based on indexing column + if isinstance(chart[0][index_col], Number): + # check that colors has at least 2 colors + if len(colors) < 2: + raise exceptions.PlotlyError( + "You must use at least 2 colors in 'colors' if you " + "are using a colorscale. However only the first two " + "colors given will be used for the lower and upper " + "bounds on the colormap." + ) + + # create the list of task names + for index in range(len(tasks)): + tn = tasks[index]["name"] + # Is added to task_names if group_tasks is set to False, + # or if the option is used (True) it only adds them if the + # name is not already in the list + if not group_tasks or tn not in task_names: + task_names.append(tn) + # Guarantees that for grouped tasks the tasks that are inserted + # first are shown at the top + if group_tasks: + task_names.reverse() + + for index in range(len(tasks)): + tn = tasks[index]["name"] + del tasks[index]["name"] + + # If group_tasks is True, all tasks with the same name belong + # to the same row. + groupID = index + if group_tasks: + groupID = task_names.index(tn) + tasks[index]["y0"] = groupID - bar_width + tasks[index]["y1"] = groupID + bar_width + + # unlabel color + colors = clrs.color_parser(colors, clrs.unlabel_rgb) + lowcolor = colors[0] + highcolor = colors[1] + + intermed = (chart[index][index_col]) / 100.0 + intermed_color = clrs.find_intermediate_color(lowcolor, highcolor, intermed) + intermed_color = clrs.color_parser(intermed_color, clrs.label_rgb) + tasks[index]["fillcolor"] = intermed_color + color_id = tasks[index]["fillcolor"] + + if color_id not in scatter_data_dict: + scatter_data_dict[color_id] = copy.deepcopy(scatter_data_template) + + scatter_data_dict[color_id]["fillcolor"] = color_id + scatter_data_dict[color_id]["name"] = str(chart[index][index_col]) + scatter_data_dict[color_id]["legendgroup"] = color_id + + # relabel colors with 'rgb' + colors = clrs.color_parser(colors, clrs.label_rgb) + + # if there are already values append the gap + if len(scatter_data_dict[color_id]["x"]) > 0: + # a gap on the scatterplot separates the rectangles from each other + scatter_data_dict[color_id]["x"].append( + scatter_data_dict[color_id]["x"][-1] + ) + scatter_data_dict[color_id]["y"].append(None) + + xs, ys = _get_corner_points( + tasks[index]["x0"], + tasks[index]["y0"], + tasks[index]["x1"], + tasks[index]["y1"], + ) + + scatter_data_dict[color_id]["x"] += xs + scatter_data_dict[color_id]["y"] += ys + + # append dummy markers for showing start and end of interval + if color_id not in marker_data_dict: + marker_data_dict[color_id] = copy.deepcopy(marker_data_template) + marker_data_dict[color_id]["marker"]["color"] = color_id + marker_data_dict[color_id]["legendgroup"] = color_id + + marker_data_dict[color_id]["x"].append(tasks[index]["x0"]) + marker_data_dict[color_id]["x"].append(tasks[index]["x1"]) + marker_data_dict[color_id]["y"].append(groupID) + marker_data_dict[color_id]["y"].append(groupID) + + if "description" in tasks[index]: + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + del tasks[index]["description"] + else: + marker_data_dict[color_id]["text"].append(None) + marker_data_dict[color_id]["text"].append(None) + + # add colorbar to one of the traces randomly just for display + if show_colorbar is True: + k = list(marker_data_dict.keys())[0] + marker_data_dict[k]["marker"].update( + dict( + colorscale=[[0, colors[0]], [1, colors[1]]], + showscale=True, + cmax=100, + cmin=0, + ) + ) + + if isinstance(chart[0][index_col], str): + index_vals = [] + for row in range(len(tasks)): + if chart[row][index_col] not in index_vals: + index_vals.append(chart[row][index_col]) + + index_vals.sort() + + if len(colors) < len(index_vals): + raise exceptions.PlotlyError( + "Error. The number of colors in 'colors' must be no less " + "than the number of unique index values in your group " + "column." + ) + + # make a dictionary assignment to each index value + index_vals_dict = {} + # define color index + c_index = 0 + for key in index_vals: + if c_index > len(colors) - 1: + c_index = 0 + index_vals_dict[key] = colors[c_index] + c_index += 1 + + # create the list of task names + for index in range(len(tasks)): + tn = tasks[index]["name"] + # Is added to task_names if group_tasks is set to False, + # or if the option is used (True) it only adds them if the + # name is not already in the list + if not group_tasks or tn not in task_names: + task_names.append(tn) + # Guarantees that for grouped tasks the tasks that are inserted + # first are shown at the top + if group_tasks: + task_names.reverse() + + for index in range(len(tasks)): + tn = tasks[index]["name"] + del tasks[index]["name"] + + # If group_tasks is True, all tasks with the same name belong + # to the same row. + groupID = index + if group_tasks: + groupID = task_names.index(tn) + tasks[index]["y0"] = groupID - bar_width + tasks[index]["y1"] = groupID + bar_width + + tasks[index]["fillcolor"] = index_vals_dict[chart[index][index_col]] + color_id = tasks[index]["fillcolor"] + + if color_id not in scatter_data_dict: + scatter_data_dict[color_id] = copy.deepcopy(scatter_data_template) + + scatter_data_dict[color_id]["fillcolor"] = color_id + scatter_data_dict[color_id]["legendgroup"] = color_id + scatter_data_dict[color_id]["name"] = str(chart[index][index_col]) + + # relabel colors with 'rgb' + colors = clrs.color_parser(colors, clrs.label_rgb) + + # if there are already values append the gap + if len(scatter_data_dict[color_id]["x"]) > 0: + # a gap on the scatterplot separates the rectangles from each other + scatter_data_dict[color_id]["x"].append( + scatter_data_dict[color_id]["x"][-1] + ) + scatter_data_dict[color_id]["y"].append(None) + + xs, ys = _get_corner_points( + tasks[index]["x0"], + tasks[index]["y0"], + tasks[index]["x1"], + tasks[index]["y1"], + ) + + scatter_data_dict[color_id]["x"] += xs + scatter_data_dict[color_id]["y"] += ys + + # append dummy markers for showing start and end of interval + if color_id not in marker_data_dict: + marker_data_dict[color_id] = copy.deepcopy(marker_data_template) + marker_data_dict[color_id]["marker"]["color"] = color_id + marker_data_dict[color_id]["legendgroup"] = color_id + + marker_data_dict[color_id]["x"].append(tasks[index]["x0"]) + marker_data_dict[color_id]["x"].append(tasks[index]["x1"]) + marker_data_dict[color_id]["y"].append(groupID) + marker_data_dict[color_id]["y"].append(groupID) + + if "description" in tasks[index]: + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + del tasks[index]["description"] + else: + marker_data_dict[color_id]["text"].append(None) + marker_data_dict[color_id]["text"].append(None) + + if show_colorbar is True: + showlegend = True + for k in scatter_data_dict: + scatter_data_dict[k]["showlegend"] = showlegend + # add colorbar to one of the traces randomly just for display + # if show_colorbar is True: + # k = list(marker_data_dict.keys())[0] + # marker_data_dict[k]["marker"].update( + # dict( + # colorscale=[[0, colors[0]], [1, colors[1]]], + # showscale=True, + # cmax=100, + # cmin=0, + # ) + # ) + + layout = dict( + title=title, + showlegend=showlegend, + height=height, + width=width, + shapes=[], + hovermode="closest", + yaxis=dict( + showgrid=showgrid_y, + ticktext=task_names, + tickvals=list(range(len(task_names))), + range=[-1, len(task_names) + 1], + autorange=False, + zeroline=False, + ), + xaxis=dict( + showgrid=showgrid_x, + zeroline=False, + rangeselector=dict( + buttons=list( + [ + dict(count=7, label="1w", step="day", stepmode="backward"), + dict(count=1, label="1m", step="month", stepmode="backward"), + dict(count=6, label="6m", step="month", stepmode="backward"), + dict(count=1, label="YTD", step="year", stepmode="todate"), + dict(count=1, label="1y", step="year", stepmode="backward"), + dict(step="all"), + ] + ) + ), + type="date", + ), + ) + + data = [scatter_data_dict[k] for k in sorted(scatter_data_dict)] + data += [marker_data_dict[k] for k in sorted(marker_data_dict)] + + # fig = dict( + # data=data, layout=layout + # ) + fig = go.Figure(data=data, layout=layout) + return fig + + +def gantt_dict( + chart, + colors, + title, + index_col, + show_colorbar, + bar_width, + showgrid_x, + showgrid_y, + height, + width, + tasks=None, + task_names=None, + data=None, + group_tasks=False, + show_hover_fill=True, +): + """ + Refer to FigureFactory.create_gantt() for docstring + """ + + if tasks is None: + tasks = [] + if task_names is None: + task_names = [] + if data is None: + data = [] + showlegend = False + + for index in range(len(chart)): + task = dict( + x0=chart[index]["Start"], + x1=chart[index]["Finish"], + name=chart[index]["Task"], + ) + if "Description" in chart[index]: + task["description"] = chart[index]["Description"] + tasks.append(task) + + # create a scatter trace for every task group + scatter_data_dict = dict() + # create scatter traces for the start- and endpoints + marker_data_dict = dict() + + if show_hover_fill: + hoverinfo = "name" + else: + hoverinfo = "skip" + + scatter_data_template = { + "x": [], + "y": [], + "mode": "none", + "fill": "toself", + "hoverinfo": hoverinfo, + "legendgroup": "", + } + + marker_data_template = { + "x": [], + "y": [], + "mode": "markers", + "text": [], + "marker": dict(color="", size=1, opacity=0), + "name": "", + "showlegend": False, + } + + index_vals = [] + for row in range(len(tasks)): + if chart[row][index_col] not in index_vals: + index_vals.append(chart[row][index_col]) + + index_vals.sort() + + # verify each value in index column appears in colors dictionary + for key in index_vals: + if key not in colors: + raise exceptions.PlotlyError( + "If you are using colors as a dictionary, all of its " + "keys must be all the values in the index column." + ) + + # create the list of task names + for index in range(len(tasks)): + tn = tasks[index]["name"] + # Is added to task_names if group_tasks is set to False, + # or if the option is used (True) it only adds them if the + # name is not already in the list + if not group_tasks or tn not in task_names: + task_names.append(tn) + # Guarantees that for grouped tasks the tasks that are inserted first + # are shown at the top + if group_tasks: + task_names.reverse() + + for index in range(len(tasks)): + tn = tasks[index]["name"] + del tasks[index]["name"] + + # If group_tasks is True, all tasks with the same name belong + # to the same row. + groupID = index + if group_tasks: + groupID = task_names.index(tn) + tasks[index]["y0"] = groupID - bar_width + tasks[index]["y1"] = groupID + bar_width + + tasks[index]["fillcolor"] = colors[chart[index][index_col]] + color_id = tasks[index]["fillcolor"] + + if color_id not in scatter_data_dict: + scatter_data_dict[color_id] = copy.deepcopy(scatter_data_template) + + scatter_data_dict[color_id]["legendgroup"] = color_id + scatter_data_dict[color_id]["fillcolor"] = color_id + + # if there are already values append the gap + if len(scatter_data_dict[color_id]["x"]) > 0: + # a gap on the scatterplot separates the rectangles from each other + scatter_data_dict[color_id]["x"].append( + scatter_data_dict[color_id]["x"][-1] + ) + scatter_data_dict[color_id]["y"].append(None) + + xs, ys = _get_corner_points( + tasks[index]["x0"], + tasks[index]["y0"], + tasks[index]["x1"], + tasks[index]["y1"], + ) + + scatter_data_dict[color_id]["x"] += xs + scatter_data_dict[color_id]["y"] += ys + + # append dummy markers for showing start and end of interval + if color_id not in marker_data_dict: + marker_data_dict[color_id] = copy.deepcopy(marker_data_template) + marker_data_dict[color_id]["marker"]["color"] = color_id + marker_data_dict[color_id]["legendgroup"] = color_id + + marker_data_dict[color_id]["x"].append(tasks[index]["x0"]) + marker_data_dict[color_id]["x"].append(tasks[index]["x1"]) + marker_data_dict[color_id]["y"].append(groupID) + marker_data_dict[color_id]["y"].append(groupID) + + if "description" in tasks[index]: + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + marker_data_dict[color_id]["text"].append(tasks[index]["description"]) + del tasks[index]["description"] + else: + marker_data_dict[color_id]["text"].append(None) + marker_data_dict[color_id]["text"].append(None) + + if show_colorbar is True: + showlegend = True + + for index_value in index_vals: + scatter_data_dict[colors[index_value]]["name"] = str(index_value) + + layout = dict( + title=title, + showlegend=showlegend, + height=height, + width=width, + shapes=[], + hovermode="closest", + yaxis=dict( + showgrid=showgrid_y, + ticktext=task_names, + tickvals=list(range(len(task_names))), + range=[-1, len(task_names) + 1], + autorange=False, + zeroline=False, + ), + xaxis=dict( + showgrid=showgrid_x, + zeroline=False, + rangeselector=dict( + buttons=list( + [ + dict(count=7, label="1w", step="day", stepmode="backward"), + dict(count=1, label="1m", step="month", stepmode="backward"), + dict(count=6, label="6m", step="month", stepmode="backward"), + dict(count=1, label="YTD", step="year", stepmode="todate"), + dict(count=1, label="1y", step="year", stepmode="backward"), + dict(step="all"), + ] + ) + ), + type="date", + ), + ) + + data = [scatter_data_dict[k] for k in sorted(scatter_data_dict)] + data += [marker_data_dict[k] for k in sorted(marker_data_dict)] + + # fig = dict( + # data=data, layout=layout + # ) + fig = go.Figure(data=data, layout=layout) + return fig + + +def create_gantt( + df, + colors=None, + index_col=None, + show_colorbar=False, + reverse_colors=False, + title="Gantt Chart", + bar_width=0.2, + showgrid_x=False, + showgrid_y=False, + height=600, + width=None, + tasks=None, + task_names=None, + data=None, + group_tasks=False, + show_hover_fill=True, +): + """ + **deprecated**, use instead + :func:`plotly.express.timeline`. + + Returns figure for a gantt chart + + :param (array|list) df: input data for gantt chart. Must be either a + a dataframe or a list. If dataframe, the columns must include + 'Task', 'Start' and 'Finish'. Other columns can be included and + used for indexing. If a list, its elements must be dictionaries + with the same required column headers: 'Task', 'Start' and + 'Finish'. + :param (str|list|dict|tuple) colors: either a plotly scale name, an + rgb or hex color, a color tuple or a list of colors. An rgb color + is of the form 'rgb(x, y, z)' where x, y, z belong to the interval + [0, 255] and a color tuple is a tuple of the form (a, b, c) where + a, b and c belong to [0, 1]. If colors is a list, it must + contain the valid color types aforementioned as its members. + If a dictionary, all values of the indexing column must be keys in + colors. + :param (str|float) index_col: the column header (if df is a data + frame) that will function as the indexing column. If df is a list, + index_col must be one of the keys in all the items of df. + :param (bool) show_colorbar: determines if colorbar will be visible. + Only applies if values in the index column are numeric. + :param (bool) show_hover_fill: enables/disables the hovertext for the + filled area of the chart. + :param (bool) reverse_colors: reverses the order of selected colors + :param (str) title: the title of the chart + :param (float) bar_width: the width of the horizontal bars in the plot + :param (bool) showgrid_x: show/hide the x-axis grid + :param (bool) showgrid_y: show/hide the y-axis grid + :param (float) height: the height of the chart + :param (float) width: the width of the chart + + Example 1: Simple Gantt Chart + + >>> from plotly.figure_factory import create_gantt + + >>> # Make data for chart + >>> df = [dict(Task="Job A", Start='2009-01-01', Finish='2009-02-30'), + ... dict(Task="Job B", Start='2009-03-05', Finish='2009-04-15'), + ... dict(Task="Job C", Start='2009-02-20', Finish='2009-05-30')] + + >>> # Create a figure + >>> fig = create_gantt(df) + >>> fig.show() + + + Example 2: Index by Column with Numerical Entries + + >>> from plotly.figure_factory import create_gantt + + >>> # Make data for chart + >>> df = [dict(Task="Job A", Start='2009-01-01', + ... Finish='2009-02-30', Complete=10), + ... dict(Task="Job B", Start='2009-03-05', + ... Finish='2009-04-15', Complete=60), + ... dict(Task="Job C", Start='2009-02-20', + ... Finish='2009-05-30', Complete=95)] + + >>> # Create a figure with Plotly colorscale + >>> fig = create_gantt(df, colors='Blues', index_col='Complete', + ... show_colorbar=True, bar_width=0.5, + ... showgrid_x=True, showgrid_y=True) + >>> fig.show() + + + Example 3: Index by Column with String Entries + + >>> from plotly.figure_factory import create_gantt + + >>> # Make data for chart + >>> df = [dict(Task="Job A", Start='2009-01-01', + ... Finish='2009-02-30', Resource='Apple'), + ... dict(Task="Job B", Start='2009-03-05', + ... Finish='2009-04-15', Resource='Grape'), + ... dict(Task="Job C", Start='2009-02-20', + ... Finish='2009-05-30', Resource='Banana')] + + >>> # Create a figure with Plotly colorscale + >>> fig = create_gantt(df, colors=['rgb(200, 50, 25)', (1, 0, 1), '#6c4774'], + ... index_col='Resource', reverse_colors=True, + ... show_colorbar=True) + >>> fig.show() + + + Example 4: Use a dictionary for colors + + >>> from plotly.figure_factory import create_gantt + >>> # Make data for chart + >>> df = [dict(Task="Job A", Start='2009-01-01', + ... Finish='2009-02-30', Resource='Apple'), + ... dict(Task="Job B", Start='2009-03-05', + ... Finish='2009-04-15', Resource='Grape'), + ... dict(Task="Job C", Start='2009-02-20', + ... Finish='2009-05-30', Resource='Banana')] + + >>> # Make a dictionary of colors + >>> colors = {'Apple': 'rgb(255, 0, 0)', + ... 'Grape': 'rgb(170, 14, 200)', + ... 'Banana': (1, 1, 0.2)} + + >>> # Create a figure with Plotly colorscale + >>> fig = create_gantt(df, colors=colors, index_col='Resource', + ... show_colorbar=True) + + >>> fig.show() + + Example 5: Use a pandas dataframe + + >>> from plotly.figure_factory import create_gantt + >>> import pandas as pd + + >>> # Make data as a dataframe + >>> df = pd.DataFrame([['Run', '2010-01-01', '2011-02-02', 10], + ... ['Fast', '2011-01-01', '2012-06-05', 55], + ... ['Eat', '2012-01-05', '2013-07-05', 94]], + ... columns=['Task', 'Start', 'Finish', 'Complete']) + + >>> # Create a figure with Plotly colorscale + >>> fig = create_gantt(df, colors='Blues', index_col='Complete', + ... show_colorbar=True, bar_width=0.5, + ... showgrid_x=True, showgrid_y=True) + >>> fig.show() + """ + # validate gantt input data + chart = validate_gantt(df) + + if index_col: + if index_col not in chart[0]: + raise exceptions.PlotlyError( + "In order to use an indexing column and assign colors to " + "the values of the index, you must choose an actual " + "column name in the dataframe or key if a list of " + "dictionaries is being used." + ) + + # validate gantt index column + index_list = [] + for dictionary in chart: + index_list.append(dictionary[index_col]) + utils.validate_index(index_list) + + # Validate colors + if isinstance(colors, dict): + colors = clrs.validate_colors_dict(colors, "rgb") + else: + colors = clrs.validate_colors(colors, "rgb") + + if reverse_colors is True: + colors.reverse() + + if not index_col: + if isinstance(colors, dict): + raise exceptions.PlotlyError( + "Error. You have set colors to a dictionary but have not " + "picked an index. An index is required if you are " + "assigning colors to particular values in a dictionary." + ) + fig = gantt( + chart, + colors, + title, + bar_width, + showgrid_x, + showgrid_y, + height, + width, + tasks=None, + task_names=None, + data=None, + group_tasks=group_tasks, + show_hover_fill=show_hover_fill, + show_colorbar=show_colorbar, + ) + return fig + else: + if not isinstance(colors, dict): + fig = gantt_colorscale( + chart, + colors, + title, + index_col, + show_colorbar, + bar_width, + showgrid_x, + showgrid_y, + height, + width, + tasks=None, + task_names=None, + data=None, + group_tasks=group_tasks, + show_hover_fill=show_hover_fill, + ) + return fig + else: + fig = gantt_dict( + chart, + colors, + title, + index_col, + show_colorbar, + bar_width, + showgrid_x, + showgrid_y, + height, + width, + tasks=None, + task_names=None, + data=None, + group_tasks=group_tasks, + show_hover_fill=show_hover_fill, + ) + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_hexbin_mapbox.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_hexbin_mapbox.py new file mode 100644 index 0000000..c763522 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_hexbin_mapbox.py @@ -0,0 +1,526 @@ +from plotly.express._core import build_dataframe +from plotly.express._doc import make_docstring +from plotly.express._chart_types import choropleth_mapbox, scatter_mapbox +import narwhals.stable.v1 as nw +import numpy as np + + +def _project_latlon_to_wgs84(lat, lon): + """ + Projects lat and lon to WGS84, used to get regular hexagons on a mapbox map + """ + x = lon * np.pi / 180 + y = np.arctanh(np.sin(lat * np.pi / 180)) + return x, y + + +def _project_wgs84_to_latlon(x, y): + """ + Projects WGS84 to lat and lon, used to get regular hexagons on a mapbox map + """ + lon = x * 180 / np.pi + lat = (2 * np.arctan(np.exp(y)) - np.pi / 2) * 180 / np.pi + return lat, lon + + +def _getBoundsZoomLevel(lon_min, lon_max, lat_min, lat_max, mapDim): + """ + Get the mapbox zoom level given bounds and a figure dimension + Source: https://stackoverflow.com/questions/6048975/google-maps-v3-how-to-calculate-the-zoom-level-for-a-given-bounds + """ + + scale = ( + 2 # adjustment to reflect MapBox base tiles are 512x512 vs. Google's 256x256 + ) + WORLD_DIM = {"height": 256 * scale, "width": 256 * scale} + ZOOM_MAX = 18 + + def latRad(lat): + sin = np.sin(lat * np.pi / 180) + radX2 = np.log((1 + sin) / (1 - sin)) / 2 + return max(min(radX2, np.pi), -np.pi) / 2 + + def zoom(mapPx, worldPx, fraction): + return 0.95 * np.log(mapPx / worldPx / fraction) / np.log(2) + + latFraction = (latRad(lat_max) - latRad(lat_min)) / np.pi + + lngDiff = lon_max - lon_min + lngFraction = ((lngDiff + 360) if lngDiff < 0 else lngDiff) / 360 + + latZoom = zoom(mapDim["height"], WORLD_DIM["height"], latFraction) + lngZoom = zoom(mapDim["width"], WORLD_DIM["width"], lngFraction) + + return min(latZoom, lngZoom, ZOOM_MAX) + + +def _compute_hexbin(x, y, x_range, y_range, color, nx, agg_func, min_count): + """ + Computes the aggregation at hexagonal bin level. + Also defines the coordinates of the hexagons for plotting. + The binning is inspired by matplotlib's implementation. + + Parameters + ---------- + x : np.ndarray + Array of x values (shape N) + y : np.ndarray + Array of y values (shape N) + x_range : np.ndarray + Min and max x (shape 2) + y_range : np.ndarray + Min and max y (shape 2) + color : np.ndarray + Metric to aggregate at hexagon level (shape N) + nx : int + Number of hexagons horizontally + agg_func : function + Numpy compatible aggregator, this function must take a one-dimensional + np.ndarray as input and output a scalar + min_count : int + Minimum number of points in the hexagon for the hexagon to be displayed + + Returns + ------- + np.ndarray + X coordinates of each hexagon (shape M x 6) + np.ndarray + Y coordinates of each hexagon (shape M x 6) + np.ndarray + Centers of the hexagons (shape M x 2) + np.ndarray + Aggregated value in each hexagon (shape M) + + """ + xmin = x_range.min() + xmax = x_range.max() + ymin = y_range.min() + ymax = y_range.max() + + # In the x-direction, the hexagons exactly cover the region from + # xmin to xmax. Need some padding to avoid roundoff errors. + padding = 1.0e-9 * (xmax - xmin) + xmin -= padding + xmax += padding + + Dx = xmax - xmin + Dy = ymax - ymin + if Dx == 0 and Dy > 0: + dx = Dy / nx + elif Dx == 0 and Dy == 0: + dx, _ = _project_latlon_to_wgs84(1, 1) + else: + dx = Dx / nx + dy = dx * np.sqrt(3) + ny = np.ceil(Dy / dy).astype(int) + + # Center the hexagons vertically since we only want regular hexagons + ymin -= (ymin + dy * ny - ymax) / 2 + + x = (x - xmin) / dx + y = (y - ymin) / dy + ix1 = np.round(x).astype(int) + iy1 = np.round(y).astype(int) + ix2 = np.floor(x).astype(int) + iy2 = np.floor(y).astype(int) + + nx1 = nx + 1 + ny1 = ny + 1 + nx2 = nx + ny2 = ny + n = nx1 * ny1 + nx2 * ny2 + + d1 = (x - ix1) ** 2 + 3.0 * (y - iy1) ** 2 + d2 = (x - ix2 - 0.5) ** 2 + 3.0 * (y - iy2 - 0.5) ** 2 + bdist = d1 < d2 + + if color is None: + lattice1 = np.zeros((nx1, ny1)) + lattice2 = np.zeros((nx2, ny2)) + c1 = (0 <= ix1) & (ix1 < nx1) & (0 <= iy1) & (iy1 < ny1) & bdist + c2 = (0 <= ix2) & (ix2 < nx2) & (0 <= iy2) & (iy2 < ny2) & ~bdist + np.add.at(lattice1, (ix1[c1], iy1[c1]), 1) + np.add.at(lattice2, (ix2[c2], iy2[c2]), 1) + if min_count is not None: + lattice1[lattice1 < min_count] = np.nan + lattice2[lattice2 < min_count] = np.nan + accum = np.concatenate([lattice1.ravel(), lattice2.ravel()]) + good_idxs = ~np.isnan(accum) + else: + if min_count is None: + min_count = 1 + + # create accumulation arrays + lattice1 = np.empty((nx1, ny1), dtype=object) + for i in range(nx1): + for j in range(ny1): + lattice1[i, j] = [] + lattice2 = np.empty((nx2, ny2), dtype=object) + for i in range(nx2): + for j in range(ny2): + lattice2[i, j] = [] + + for i in range(len(x)): + if bdist[i]: + if 0 <= ix1[i] < nx1 and 0 <= iy1[i] < ny1: + lattice1[ix1[i], iy1[i]].append(color[i]) + else: + if 0 <= ix2[i] < nx2 and 0 <= iy2[i] < ny2: + lattice2[ix2[i], iy2[i]].append(color[i]) + + for i in range(nx1): + for j in range(ny1): + vals = lattice1[i, j] + if len(vals) >= min_count: + lattice1[i, j] = agg_func(vals) + else: + lattice1[i, j] = np.nan + for i in range(nx2): + for j in range(ny2): + vals = lattice2[i, j] + if len(vals) >= min_count: + lattice2[i, j] = agg_func(vals) + else: + lattice2[i, j] = np.nan + + accum = np.hstack( + (lattice1.astype(float).ravel(), lattice2.astype(float).ravel()) + ) + good_idxs = ~np.isnan(accum) + + agreggated_value = accum[good_idxs] + + centers = np.zeros((n, 2), float) + centers[: nx1 * ny1, 0] = np.repeat(np.arange(nx1), ny1) + centers[: nx1 * ny1, 1] = np.tile(np.arange(ny1), nx1) + centers[nx1 * ny1 :, 0] = np.repeat(np.arange(nx2) + 0.5, ny2) + centers[nx1 * ny1 :, 1] = np.tile(np.arange(ny2), nx2) + 0.5 + centers[:, 0] *= dx + centers[:, 1] *= dy + centers[:, 0] += xmin + centers[:, 1] += ymin + centers = centers[good_idxs] + + # Define normalised regular hexagon coordinates + hx = [0, 0.5, 0.5, 0, -0.5, -0.5] + hy = [ + -0.5 / np.cos(np.pi / 6), + -0.5 * np.tan(np.pi / 6), + 0.5 * np.tan(np.pi / 6), + 0.5 / np.cos(np.pi / 6), + 0.5 * np.tan(np.pi / 6), + -0.5 * np.tan(np.pi / 6), + ] + + # Number of hexagons needed + m = len(centers) + + # Coordinates for all hexagonal patches + hxs = np.array([hx] * m) * dx + np.vstack(centers[:, 0]) + hys = np.array([hy] * m) * dy / np.sqrt(3) + np.vstack(centers[:, 1]) + + return hxs, hys, centers, agreggated_value + + +def _compute_wgs84_hexbin( + lat=None, + lon=None, + lat_range=None, + lon_range=None, + color=None, + nx=None, + agg_func=None, + min_count=None, + native_namespace=None, +): + """ + Computes the lat-lon aggregation at hexagonal bin level. + Latitude and longitude need to be projected to WGS84 before aggregating + in order to display regular hexagons on the map. + + Parameters + ---------- + lat : np.ndarray + Array of latitudes (shape N) + lon : np.ndarray + Array of longitudes (shape N) + lat_range : np.ndarray + Min and max latitudes (shape 2) + lon_range : np.ndarray + Min and max longitudes (shape 2) + color : np.ndarray + Metric to aggregate at hexagon level (shape N) + nx : int + Number of hexagons horizontally + agg_func : function + Numpy compatible aggregator, this function must take a one-dimensional + np.ndarray as input and output a scalar + min_count : int + Minimum number of points in the hexagon for the hexagon to be displayed + + Returns + ------- + np.ndarray + Lat coordinates of each hexagon (shape M x 6) + np.ndarray + Lon coordinates of each hexagon (shape M x 6) + nw.Series + Unique id for each hexagon, to be used in the geojson data (shape M) + np.ndarray + Aggregated value in each hexagon (shape M) + + """ + # Project to WGS 84 + x, y = _project_latlon_to_wgs84(lat, lon) + + if lat_range is None: + lat_range = np.array([lat.min(), lat.max()]) + if lon_range is None: + lon_range = np.array([lon.min(), lon.max()]) + + x_range, y_range = _project_latlon_to_wgs84(lat_range, lon_range) + + hxs, hys, centers, agreggated_value = _compute_hexbin( + x, y, x_range, y_range, color, nx, agg_func, min_count + ) + + # Convert back to lat-lon + hexagons_lats, hexagons_lons = _project_wgs84_to_latlon(hxs, hys) + + # Create unique feature id based on hexagon center + centers = centers.astype(str) + hexagons_ids = ( + nw.from_dict( + {"x1": centers[:, 0], "x2": centers[:, 1]}, + native_namespace=native_namespace, + ) + .select(hexagons_ids=nw.concat_str([nw.col("x1"), nw.col("x2")], separator=",")) + .get_column("hexagons_ids") + ) + + return hexagons_lats, hexagons_lons, hexagons_ids, agreggated_value + + +def _hexagons_to_geojson(hexagons_lats, hexagons_lons, ids=None): + """ + Creates a geojson of hexagonal features based on the outputs of + _compute_wgs84_hexbin + """ + features = [] + if ids is None: + ids = np.arange(len(hexagons_lats)) + for lat, lon, idx in zip(hexagons_lats, hexagons_lons, ids): + points = np.array([lon, lat]).T.tolist() + points.append(points[0]) + features.append( + dict( + type="Feature", + id=idx, + geometry=dict(type="Polygon", coordinates=[points]), + ) + ) + return dict(type="FeatureCollection", features=features) + + +def create_hexbin_mapbox( + data_frame=None, + lat=None, + lon=None, + color=None, + nx_hexagon=5, + agg_func=None, + animation_frame=None, + color_discrete_sequence=None, + color_discrete_map={}, + labels={}, + color_continuous_scale=None, + range_color=None, + color_continuous_midpoint=None, + opacity=None, + zoom=None, + center=None, + mapbox_style=None, + title=None, + template=None, + width=None, + height=None, + min_count=None, + show_original_data=False, + original_data_marker=None, +): + """ + Returns a figure aggregating scattered points into connected hexagons + """ + args = build_dataframe(args=locals(), constructor=None) + native_namespace = nw.get_native_namespace(args["data_frame"]) + if agg_func is None: + agg_func = np.mean + + lat_range = ( + args["data_frame"] + .select( + nw.min(args["lat"]).name.suffix("_min"), + nw.max(args["lat"]).name.suffix("_max"), + ) + .to_numpy() + .squeeze() + ) + + lon_range = ( + args["data_frame"] + .select( + nw.min(args["lon"]).name.suffix("_min"), + nw.max(args["lon"]).name.suffix("_max"), + ) + .to_numpy() + .squeeze() + ) + + hexagons_lats, hexagons_lons, hexagons_ids, count = _compute_wgs84_hexbin( + lat=args["data_frame"].get_column(args["lat"]).to_numpy(), + lon=args["data_frame"].get_column(args["lon"]).to_numpy(), + lat_range=lat_range, + lon_range=lon_range, + color=None, + nx=nx_hexagon, + agg_func=agg_func, + min_count=min_count, + native_namespace=native_namespace, + ) + + geojson = _hexagons_to_geojson(hexagons_lats, hexagons_lons, hexagons_ids) + + if zoom is None: + if height is None and width is None: + mapDim = dict(height=450, width=450) + elif height is None and width is not None: + mapDim = dict(height=450, width=width) + elif height is not None and width is None: + mapDim = dict(height=height, width=height) + else: + mapDim = dict(height=height, width=width) + zoom = _getBoundsZoomLevel( + lon_range[0], lon_range[1], lat_range[0], lat_range[1], mapDim + ) + + if center is None: + center = dict(lat=lat_range.mean(), lon=lon_range.mean()) + + if args["animation_frame"] is not None: + groups = dict( + args["data_frame"] + .group_by(args["animation_frame"], drop_null_keys=True) + .__iter__() + ) + else: + groups = {(0,): args["data_frame"]} + + agg_data_frame_list = [] + for key, df in groups.items(): + _, _, hexagons_ids, aggregated_value = _compute_wgs84_hexbin( + lat=df.get_column(args["lat"]).to_numpy(), + lon=df.get_column(args["lon"]).to_numpy(), + lat_range=lat_range, + lon_range=lon_range, + color=df.get_column(args["color"]).to_numpy() if args["color"] else None, + nx=nx_hexagon, + agg_func=agg_func, + min_count=min_count, + native_namespace=native_namespace, + ) + agg_data_frame_list.append( + nw.from_dict( + { + "frame": [key[0]] * len(hexagons_ids), + "locations": hexagons_ids, + "color": aggregated_value, + }, + native_namespace=native_namespace, + ) + ) + + agg_data_frame = nw.concat(agg_data_frame_list, how="vertical").with_columns( + color=nw.col("color").cast(nw.Int64) + ) + + if range_color is None: + range_color = [agg_data_frame["color"].min(), agg_data_frame["color"].max()] + + fig = choropleth_mapbox( + data_frame=agg_data_frame.to_native(), + geojson=geojson, + locations="locations", + color="color", + hover_data={"color": True, "locations": False, "frame": False}, + animation_frame=("frame" if args["animation_frame"] is not None else None), + color_discrete_sequence=color_discrete_sequence, + color_discrete_map=color_discrete_map, + labels=labels, + color_continuous_scale=color_continuous_scale, + range_color=range_color, + color_continuous_midpoint=color_continuous_midpoint, + opacity=opacity, + zoom=zoom, + center=center, + mapbox_style=mapbox_style, + title=title, + template=template, + width=width, + height=height, + ) + + if show_original_data: + original_fig = scatter_mapbox( + data_frame=( + args["data_frame"].sort( + by=args["animation_frame"], descending=False, nulls_last=True + ) + if args["animation_frame"] is not None + else args["data_frame"] + ).to_native(), + lat=args["lat"], + lon=args["lon"], + animation_frame=args["animation_frame"], + ) + original_fig.data[0].hoverinfo = "skip" + original_fig.data[0].hovertemplate = None + original_fig.data[0].marker = original_data_marker + + fig.add_trace(original_fig.data[0]) + + if args["animation_frame"] is not None: + for i in range(len(original_fig.frames)): + original_fig.frames[i].data[0].hoverinfo = "skip" + original_fig.frames[i].data[0].hovertemplate = None + original_fig.frames[i].data[0].marker = original_data_marker + + fig.frames[i].data = [ + fig.frames[i].data[0], + original_fig.frames[i].data[0], + ] + + return fig + + +create_hexbin_mapbox.__doc__ = make_docstring( + create_hexbin_mapbox, + override_dict=dict( + nx_hexagon=["int", "Number of hexagons (horizontally) to be created"], + agg_func=[ + "function", + "Numpy array aggregator, it must take as input a 1D array", + "and output a scalar value.", + ], + min_count=[ + "int", + "Minimum number of points in a hexagon for it to be displayed.", + "If None and color is not set, display all hexagons.", + "If None and color is set, only display hexagons that contain points.", + ], + show_original_data=[ + "bool", + "Whether to show the original data on top of the hexbin aggregation.", + ], + original_data_marker=["dict", "Scattermapbox marker options."], + ), +) diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_ohlc.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_ohlc.py new file mode 100644 index 0000000..a0b1b48 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_ohlc.py @@ -0,0 +1,295 @@ +from plotly import exceptions +from plotly.graph_objs import graph_objs +from plotly.figure_factory import utils + + +# Default colours for finance charts +_DEFAULT_INCREASING_COLOR = "#3D9970" # http://clrs.cc +_DEFAULT_DECREASING_COLOR = "#FF4136" + + +def validate_ohlc(open, high, low, close, direction, **kwargs): + """ + ohlc and candlestick specific validations + + Specifically, this checks that the high value is the greatest value and + the low value is the lowest value in each unit. + + See FigureFactory.create_ohlc() or FigureFactory.create_candlestick() + for params + + :raises: (PlotlyError) If the high value is not the greatest value in + each unit. + :raises: (PlotlyError) If the low value is not the lowest value in each + unit. + :raises: (PlotlyError) If direction is not 'increasing' or 'decreasing' + """ + for lst in [open, low, close]: + for index in range(len(high)): + if high[index] < lst[index]: + raise exceptions.PlotlyError( + "Oops! Looks like some of " + "your high values are less " + "the corresponding open, " + "low, or close values. " + "Double check that your data " + "is entered in O-H-L-C order" + ) + + for lst in [open, high, close]: + for index in range(len(low)): + if low[index] > lst[index]: + raise exceptions.PlotlyError( + "Oops! Looks like some of " + "your low values are greater " + "than the corresponding high" + ", open, or close values. " + "Double check that your data " + "is entered in O-H-L-C order" + ) + + direction_opts = ("increasing", "decreasing", "both") + if direction not in direction_opts: + raise exceptions.PlotlyError( + "direction must be defined as 'increasing', 'decreasing', or 'both'" + ) + + +def make_increasing_ohlc(open, high, low, close, dates, **kwargs): + """ + Makes increasing ohlc sticks + + _make_increasing_ohlc() and _make_decreasing_ohlc separate the + increasing trace from the decreasing trace so kwargs (such as + color) can be passed separately to increasing or decreasing traces + when direction is set to 'increasing' or 'decreasing' in + FigureFactory.create_candlestick() + + :param (list) open: opening values + :param (list) high: high values + :param (list) low: low values + :param (list) close: closing values + :param (list) dates: list of datetime objects. Default: None + :param kwargs: kwargs to be passed to increasing trace via + plotly.graph_objs.Scatter. + + :rtype (trace) ohlc_incr_data: Scatter trace of all increasing ohlc + sticks. + """ + (flat_increase_x, flat_increase_y, text_increase) = _OHLC( + open, high, low, close, dates + ).get_increase() + + if "name" in kwargs: + showlegend = True + else: + kwargs.setdefault("name", "Increasing") + showlegend = False + + kwargs.setdefault("line", dict(color=_DEFAULT_INCREASING_COLOR, width=1)) + kwargs.setdefault("text", text_increase) + + ohlc_incr = dict( + type="scatter", + x=flat_increase_x, + y=flat_increase_y, + mode="lines", + showlegend=showlegend, + **kwargs, + ) + return ohlc_incr + + +def make_decreasing_ohlc(open, high, low, close, dates, **kwargs): + """ + Makes decreasing ohlc sticks + + :param (list) open: opening values + :param (list) high: high values + :param (list) low: low values + :param (list) close: closing values + :param (list) dates: list of datetime objects. Default: None + :param kwargs: kwargs to be passed to increasing trace via + plotly.graph_objs.Scatter. + + :rtype (trace) ohlc_decr_data: Scatter trace of all decreasing ohlc + sticks. + """ + (flat_decrease_x, flat_decrease_y, text_decrease) = _OHLC( + open, high, low, close, dates + ).get_decrease() + + kwargs.setdefault("line", dict(color=_DEFAULT_DECREASING_COLOR, width=1)) + kwargs.setdefault("text", text_decrease) + kwargs.setdefault("showlegend", False) + kwargs.setdefault("name", "Decreasing") + + ohlc_decr = dict( + type="scatter", x=flat_decrease_x, y=flat_decrease_y, mode="lines", **kwargs + ) + return ohlc_decr + + +def create_ohlc(open, high, low, close, dates=None, direction="both", **kwargs): + """ + **deprecated**, use instead the plotly.graph_objects trace + :class:`plotly.graph_objects.Ohlc` + + :param (list) open: opening values + :param (list) high: high values + :param (list) low: low values + :param (list) close: closing + :param (list) dates: list of datetime objects. Default: None + :param (string) direction: direction can be 'increasing', 'decreasing', + or 'both'. When the direction is 'increasing', the returned figure + consists of all units where the close value is greater than the + corresponding open value, and when the direction is 'decreasing', + the returned figure consists of all units where the close value is + less than or equal to the corresponding open value. When the + direction is 'both', both increasing and decreasing units are + returned. Default: 'both' + :param kwargs: kwargs passed through plotly.graph_objs.Scatter. + These kwargs describe other attributes about the ohlc Scatter trace + such as the color or the legend name. For more information on valid + kwargs call help(plotly.graph_objs.Scatter) + + :rtype (dict): returns a representation of an ohlc chart figure. + + Example 1: Simple OHLC chart from a Pandas DataFrame + + >>> from plotly.figure_factory import create_ohlc + >>> from datetime import datetime + + >>> import pandas as pd + >>> df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv') + >>> fig = create_ohlc(df['AAPL.Open'], df['AAPL.High'], df['AAPL.Low'], df['AAPL.Close'], dates=df.index) + >>> fig.show() + """ + if dates is not None: + utils.validate_equal_length(open, high, low, close, dates) + else: + utils.validate_equal_length(open, high, low, close) + validate_ohlc(open, high, low, close, direction, **kwargs) + + if direction == "increasing": + ohlc_incr = make_increasing_ohlc(open, high, low, close, dates, **kwargs) + data = [ohlc_incr] + elif direction == "decreasing": + ohlc_decr = make_decreasing_ohlc(open, high, low, close, dates, **kwargs) + data = [ohlc_decr] + else: + ohlc_incr = make_increasing_ohlc(open, high, low, close, dates, **kwargs) + ohlc_decr = make_decreasing_ohlc(open, high, low, close, dates, **kwargs) + data = [ohlc_incr, ohlc_decr] + + layout = graph_objs.Layout(xaxis=dict(zeroline=False), hovermode="closest") + + return graph_objs.Figure(data=data, layout=layout) + + +class _OHLC(object): + """ + Refer to FigureFactory.create_ohlc_increase() for docstring. + """ + + def __init__(self, open, high, low, close, dates, **kwargs): + self.open = open + self.high = high + self.low = low + self.close = close + self.empty = [None] * len(open) + self.dates = dates + + self.all_x = [] + self.all_y = [] + self.increase_x = [] + self.increase_y = [] + self.decrease_x = [] + self.decrease_y = [] + self.get_all_xy() + self.separate_increase_decrease() + + def get_all_xy(self): + """ + Zip data to create OHLC shape + + OHLC shape: low to high vertical bar with + horizontal branches for open and close values. + If dates were added, the smallest date difference is calculated and + multiplied by .2 to get the length of the open and close branches. + If no date data was provided, the x-axis is a list of integers and the + length of the open and close branches is .2. + """ + self.all_y = list( + zip( + self.open, + self.open, + self.high, + self.low, + self.close, + self.close, + self.empty, + ) + ) + if self.dates is not None: + date_dif = [] + for i in range(len(self.dates) - 1): + date_dif.append(self.dates[i + 1] - self.dates[i]) + date_dif_min = (min(date_dif)) / 5 + self.all_x = [ + [x - date_dif_min, x, x, x, x, x + date_dif_min, None] + for x in self.dates + ] + else: + self.all_x = [ + [x - 0.2, x, x, x, x, x + 0.2, None] for x in range(len(self.open)) + ] + + def separate_increase_decrease(self): + """ + Separate data into two groups: increase and decrease + + (1) Increase, where close > open and + (2) Decrease, where close <= open + """ + for index in range(len(self.open)): + if self.close[index] is None: + pass + elif self.close[index] > self.open[index]: + self.increase_x.append(self.all_x[index]) + self.increase_y.append(self.all_y[index]) + else: + self.decrease_x.append(self.all_x[index]) + self.decrease_y.append(self.all_y[index]) + + def get_increase(self): + """ + Flatten increase data and get increase text + + :rtype (list, list, list): flat_increase_x: x-values for the increasing + trace, flat_increase_y: y=values for the increasing trace and + text_increase: hovertext for the increasing trace + """ + flat_increase_x = utils.flatten(self.increase_x) + flat_increase_y = utils.flatten(self.increase_y) + text_increase = ("Open", "Open", "High", "Low", "Close", "Close", "") * ( + len(self.increase_x) + ) + + return flat_increase_x, flat_increase_y, text_increase + + def get_decrease(self): + """ + Flatten decrease data and get decrease text + + :rtype (list, list, list): flat_decrease_x: x-values for the decreasing + trace, flat_decrease_y: y=values for the decreasing trace and + text_decrease: hovertext for the decreasing trace + """ + flat_decrease_x = utils.flatten(self.decrease_x) + flat_decrease_y = utils.flatten(self.decrease_y) + text_decrease = ("Open", "Open", "High", "Low", "Close", "Close", "") * ( + len(self.decrease_x) + ) + + return flat_decrease_x, flat_decrease_y, text_decrease diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_quiver.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_quiver.py new file mode 100644 index 0000000..fa18222 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_quiver.py @@ -0,0 +1,265 @@ +import math + +from plotly import exceptions +from plotly.graph_objs import graph_objs +from plotly.figure_factory import utils + + +def create_quiver( + x, y, u, v, scale=0.1, arrow_scale=0.3, angle=math.pi / 9, scaleratio=None, **kwargs +): + """ + Returns data for a quiver plot. + + :param (list|ndarray) x: x coordinates of the arrow locations + :param (list|ndarray) y: y coordinates of the arrow locations + :param (list|ndarray) u: x components of the arrow vectors + :param (list|ndarray) v: y components of the arrow vectors + :param (float in [0,1]) scale: scales size of the arrows(ideally to + avoid overlap). Default = .1 + :param (float in [0,1]) arrow_scale: value multiplied to length of barb + to get length of arrowhead. Default = .3 + :param (angle in radians) angle: angle of arrowhead. Default = pi/9 + :param (positive float) scaleratio: the ratio between the scale of the y-axis + and the scale of the x-axis (scale_y / scale_x). Default = None, the + scale ratio is not fixed. + :param kwargs: kwargs passed through plotly.graph_objs.Scatter + for more information on valid kwargs call + help(plotly.graph_objs.Scatter) + + :rtype (dict): returns a representation of quiver figure. + + Example 1: Trivial Quiver + + >>> from plotly.figure_factory import create_quiver + >>> import math + + >>> # 1 Arrow from (0,0) to (1,1) + >>> fig = create_quiver(x=[0], y=[0], u=[1], v=[1], scale=1) + >>> fig.show() + + + Example 2: Quiver plot using meshgrid + + >>> from plotly.figure_factory import create_quiver + + >>> import numpy as np + >>> import math + + >>> # Add data + >>> x,y = np.meshgrid(np.arange(0, 2, .2), np.arange(0, 2, .2)) + >>> u = np.cos(x)*y + >>> v = np.sin(x)*y + + >>> #Create quiver + >>> fig = create_quiver(x, y, u, v) + >>> fig.show() + + + Example 3: Styling the quiver plot + + >>> from plotly.figure_factory import create_quiver + >>> import numpy as np + >>> import math + + >>> # Add data + >>> x, y = np.meshgrid(np.arange(-np.pi, math.pi, .5), + ... np.arange(-math.pi, math.pi, .5)) + >>> u = np.cos(x)*y + >>> v = np.sin(x)*y + + >>> # Create quiver + >>> fig = create_quiver(x, y, u, v, scale=.2, arrow_scale=.3, angle=math.pi/6, + ... name='Wind Velocity', line=dict(width=1)) + + >>> # Add title to layout + >>> fig.update_layout(title='Quiver Plot') # doctest: +SKIP + >>> fig.show() + + + Example 4: Forcing a fix scale ratio to maintain the arrow length + + >>> from plotly.figure_factory import create_quiver + >>> import numpy as np + + >>> # Add data + >>> x,y = np.meshgrid(np.arange(0.5, 3.5, .5), np.arange(0.5, 4.5, .5)) + >>> u = x + >>> v = y + >>> angle = np.arctan(v / u) + >>> norm = 0.25 + >>> u = norm * np.cos(angle) + >>> v = norm * np.sin(angle) + + >>> # Create quiver with a fix scale ratio + >>> fig = create_quiver(x, y, u, v, scale = 1, scaleratio = 0.5) + >>> fig.show() + """ + utils.validate_equal_length(x, y, u, v) + utils.validate_positive_scalars(arrow_scale=arrow_scale, scale=scale) + + if scaleratio is None: + quiver_obj = _Quiver(x, y, u, v, scale, arrow_scale, angle) + else: + quiver_obj = _Quiver(x, y, u, v, scale, arrow_scale, angle, scaleratio) + + barb_x, barb_y = quiver_obj.get_barbs() + arrow_x, arrow_y = quiver_obj.get_quiver_arrows() + + quiver_plot = graph_objs.Scatter( + x=barb_x + arrow_x, y=barb_y + arrow_y, mode="lines", **kwargs + ) + + data = [quiver_plot] + + if scaleratio is None: + layout = graph_objs.Layout(hovermode="closest") + else: + layout = graph_objs.Layout( + hovermode="closest", yaxis=dict(scaleratio=scaleratio, scaleanchor="x") + ) + + return graph_objs.Figure(data=data, layout=layout) + + +class _Quiver(object): + """ + Refer to FigureFactory.create_quiver() for docstring + """ + + def __init__(self, x, y, u, v, scale, arrow_scale, angle, scaleratio=1, **kwargs): + try: + x = utils.flatten(x) + except exceptions.PlotlyError: + pass + + try: + y = utils.flatten(y) + except exceptions.PlotlyError: + pass + + try: + u = utils.flatten(u) + except exceptions.PlotlyError: + pass + + try: + v = utils.flatten(v) + except exceptions.PlotlyError: + pass + + self.x = x + self.y = y + self.u = u + self.v = v + self.scale = scale + self.scaleratio = scaleratio + self.arrow_scale = arrow_scale + self.angle = angle + self.end_x = [] + self.end_y = [] + self.scale_uv() + barb_x, barb_y = self.get_barbs() + arrow_x, arrow_y = self.get_quiver_arrows() + + def scale_uv(self): + """ + Scales u and v to avoid overlap of the arrows. + + u and v are added to x and y to get the + endpoints of the arrows so a smaller scale value will + result in less overlap of arrows. + """ + self.u = [i * self.scale * self.scaleratio for i in self.u] + self.v = [i * self.scale for i in self.v] + + def get_barbs(self): + """ + Creates x and y startpoint and endpoint pairs + + After finding the endpoint of each barb this zips startpoint and + endpoint pairs to create 2 lists: x_values for barbs and y values + for barbs + + :rtype: (list, list) barb_x, barb_y: list of startpoint and endpoint + x_value pairs separated by a None to create the barb of the arrow, + and list of startpoint and endpoint y_value pairs separated by a + None to create the barb of the arrow. + """ + self.end_x = [i + j for i, j in zip(self.x, self.u)] + self.end_y = [i + j for i, j in zip(self.y, self.v)] + empty = [None] * len(self.x) + barb_x = utils.flatten(zip(self.x, self.end_x, empty)) + barb_y = utils.flatten(zip(self.y, self.end_y, empty)) + return barb_x, barb_y + + def get_quiver_arrows(self): + """ + Creates lists of x and y values to plot the arrows + + Gets length of each barb then calculates the length of each side of + the arrow. Gets angle of barb and applies angle to each side of the + arrowhead. Next uses arrow_scale to scale the length of arrowhead and + creates x and y values for arrowhead point1 and point2. Finally x and y + values for point1, endpoint and point2s for each arrowhead are + separated by a None and zipped to create lists of x and y values for + the arrows. + + :rtype: (list, list) arrow_x, arrow_y: list of point1, endpoint, point2 + x_values separated by a None to create the arrowhead and list of + point1, endpoint, point2 y_values separated by a None to create + the barb of the arrow. + """ + dif_x = [i - j for i, j in zip(self.end_x, self.x)] + dif_y = [i - j for i, j in zip(self.end_y, self.y)] + + # Get barb lengths(default arrow length = 30% barb length) + barb_len = [None] * len(self.x) + for index in range(len(barb_len)): + barb_len[index] = math.hypot(dif_x[index] / self.scaleratio, dif_y[index]) + + # Make arrow lengths + arrow_len = [None] * len(self.x) + arrow_len = [i * self.arrow_scale for i in barb_len] + + # Get barb angles + barb_ang = [None] * len(self.x) + for index in range(len(barb_ang)): + barb_ang[index] = math.atan2(dif_y[index], dif_x[index] / self.scaleratio) + + # Set angles to create arrow + ang1 = [i + self.angle for i in barb_ang] + ang2 = [i - self.angle for i in barb_ang] + + cos_ang1 = [None] * len(ang1) + for index in range(len(ang1)): + cos_ang1[index] = math.cos(ang1[index]) + seg1_x = [i * j for i, j in zip(arrow_len, cos_ang1)] + + sin_ang1 = [None] * len(ang1) + for index in range(len(ang1)): + sin_ang1[index] = math.sin(ang1[index]) + seg1_y = [i * j for i, j in zip(arrow_len, sin_ang1)] + + cos_ang2 = [None] * len(ang2) + for index in range(len(ang2)): + cos_ang2[index] = math.cos(ang2[index]) + seg2_x = [i * j for i, j in zip(arrow_len, cos_ang2)] + + sin_ang2 = [None] * len(ang2) + for index in range(len(ang2)): + sin_ang2[index] = math.sin(ang2[index]) + seg2_y = [i * j for i, j in zip(arrow_len, sin_ang2)] + + # Set coordinates to create arrow + for index in range(len(self.end_x)): + point1_x = [i - j * self.scaleratio for i, j in zip(self.end_x, seg1_x)] + point1_y = [i - j for i, j in zip(self.end_y, seg1_y)] + point2_x = [i - j * self.scaleratio for i, j in zip(self.end_x, seg2_x)] + point2_y = [i - j for i, j in zip(self.end_y, seg2_y)] + + # Combine lists to create arrow + empty = [None] * len(self.end_x) + arrow_x = utils.flatten(zip(point1_x, self.end_x, point2_x, empty)) + arrow_y = utils.flatten(zip(point1_y, self.end_y, point2_y, empty)) + return arrow_x, arrow_y diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_scatterplot.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_scatterplot.py new file mode 100644 index 0000000..7589527 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_scatterplot.py @@ -0,0 +1,1135 @@ +from plotly import exceptions, optional_imports +import plotly.colors as clrs +from plotly.figure_factory import utils +from plotly.graph_objs import graph_objs +from plotly.subplots import make_subplots + +pd = optional_imports.get_module("pandas") + +DIAG_CHOICES = ["scatter", "histogram", "box"] +VALID_COLORMAP_TYPES = ["cat", "seq"] + + +def endpts_to_intervals(endpts): + """ + Returns a list of intervals for categorical colormaps + + Accepts a list or tuple of sequentially increasing numbers and returns + a list representation of the mathematical intervals with these numbers + as endpoints. For example, [1, 6] returns [[-inf, 1], [1, 6], [6, inf]] + + :raises: (PlotlyError) If input is not a list or tuple + :raises: (PlotlyError) If the input contains a string + :raises: (PlotlyError) If any number does not increase after the + previous one in the sequence + """ + length = len(endpts) + # Check if endpts is a list or tuple + if not (isinstance(endpts, (tuple)) or isinstance(endpts, (list))): + raise exceptions.PlotlyError( + "The intervals_endpts argument must " + "be a list or tuple of a sequence " + "of increasing numbers." + ) + # Check if endpts contains only numbers + for item in endpts: + if isinstance(item, str): + raise exceptions.PlotlyError( + "The intervals_endpts argument " + "must be a list or tuple of a " + "sequence of increasing " + "numbers." + ) + # Check if numbers in endpts are increasing + for k in range(length - 1): + if endpts[k] >= endpts[k + 1]: + raise exceptions.PlotlyError( + "The intervals_endpts argument " + "must be a list or tuple of a " + "sequence of increasing " + "numbers." + ) + else: + intervals = [] + # add -inf to intervals + intervals.append([float("-inf"), endpts[0]]) + for k in range(length - 1): + interval = [] + interval.append(endpts[k]) + interval.append(endpts[k + 1]) + intervals.append(interval) + # add +inf to intervals + intervals.append([endpts[length - 1], float("inf")]) + return intervals + + +def hide_tick_labels_from_box_subplots(fig): + """ + Hides tick labels for box plots in scatterplotmatrix subplots. + """ + boxplot_xaxes = [] + for trace in fig["data"]: + if trace["type"] == "box": + # stores the xaxes which correspond to boxplot subplots + # since we use xaxis1, xaxis2, etc, in plotly.py + boxplot_xaxes.append("xaxis{}".format(trace["xaxis"][1:])) + for xaxis in boxplot_xaxes: + fig["layout"][xaxis]["showticklabels"] = False + + +def validate_scatterplotmatrix(df, index, diag, colormap_type, **kwargs): + """ + Validates basic inputs for FigureFactory.create_scatterplotmatrix() + + :raises: (PlotlyError) If pandas is not imported + :raises: (PlotlyError) If pandas dataframe is not inputted + :raises: (PlotlyError) If pandas dataframe has <= 1 columns + :raises: (PlotlyError) If diagonal plot choice (diag) is not one of + the viable options + :raises: (PlotlyError) If colormap_type is not a valid choice + :raises: (PlotlyError) If kwargs contains 'size', 'color' or + 'colorscale' + """ + if not pd: + raise ImportError( + "FigureFactory.scatterplotmatrix requires a pandas DataFrame." + ) + + # Check if pandas dataframe + if not isinstance(df, pd.core.frame.DataFrame): + raise exceptions.PlotlyError( + "Dataframe not inputed. Please " + "use a pandas dataframe to pro" + "duce a scatterplot matrix." + ) + + # Check if dataframe is 1 column or less + if len(df.columns) <= 1: + raise exceptions.PlotlyError( + "Dataframe has only one column. To " + "use the scatterplot matrix, use at " + "least 2 columns." + ) + + # Check that diag parameter is a valid selection + if diag not in DIAG_CHOICES: + raise exceptions.PlotlyError( + "Make sure diag is set to one of {}".format(DIAG_CHOICES) + ) + + # Check that colormap_types is a valid selection + if colormap_type not in VALID_COLORMAP_TYPES: + raise exceptions.PlotlyError( + "Must choose a valid colormap type. " + "Either 'cat' or 'seq' for a cate" + "gorical and sequential colormap " + "respectively." + ) + + # Check for not 'size' or 'color' in 'marker' of **kwargs + if "marker" in kwargs: + FORBIDDEN_PARAMS = ["size", "color", "colorscale"] + if any(param in kwargs["marker"] for param in FORBIDDEN_PARAMS): + raise exceptions.PlotlyError( + "Your kwargs dictionary cannot " + "include the 'size', 'color' or " + "'colorscale' key words inside " + "the marker dict since 'size' is " + "already an argument of the " + "scatterplot matrix function and " + "both 'color' and 'colorscale " + "are set internally." + ) + + +def scatterplot(dataframe, headers, diag, size, height, width, title, **kwargs): + """ + Refer to FigureFactory.create_scatterplotmatrix() for docstring + + Returns fig for scatterplotmatrix without index + + """ + dim = len(dataframe) + fig = make_subplots(rows=dim, cols=dim, print_grid=False) + trace_list = [] + # Insert traces into trace_list + for listy in dataframe: + for listx in dataframe: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram(x=listx, showlegend=False) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box(y=listx, name=None, showlegend=False) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + trace = graph_objs.Scatter( + x=listx, y=listy, mode="markers", showlegend=False, **kwargs + ) + trace_list.append(trace) + else: + trace = graph_objs.Scatter( + x=listx, + y=listy, + mode="markers", + marker=dict(size=size), + showlegend=False, + **kwargs, + ) + trace_list.append(trace) + + trace_index = 0 + indices = range(1, dim + 1) + for y_index in indices: + for x_index in indices: + fig.append_trace(trace_list[trace_index], y_index, x_index) + trace_index += 1 + + # Insert headers into the figure + for j in range(dim): + xaxis_key = "xaxis{}".format((dim * dim) - dim + 1 + j) + fig["layout"][xaxis_key].update(title=headers[j]) + for j in range(dim): + yaxis_key = "yaxis{}".format(1 + (dim * j)) + fig["layout"][yaxis_key].update(title=headers[j]) + + fig["layout"].update(height=height, width=width, title=title, showlegend=True) + + hide_tick_labels_from_box_subplots(fig) + + return fig + + +def scatterplot_dict( + dataframe, + headers, + diag, + size, + height, + width, + title, + index, + index_vals, + endpts, + colormap, + colormap_type, + **kwargs, +): + """ + Refer to FigureFactory.create_scatterplotmatrix() for docstring + + Returns fig for scatterplotmatrix with both index and colormap picked. + Used if colormap is a dictionary with index values as keys pointing to + colors. Forces colormap_type to behave categorically because it would + not make sense colors are assigned to each index value and thus + implies that a categorical approach should be taken + + """ + + theme = colormap + dim = len(dataframe) + fig = make_subplots(rows=dim, cols=dim, print_grid=False) + trace_list = [] + legend_param = 0 + # Work over all permutations of list pairs + for listy in dataframe: + for listx in dataframe: + # create a dictionary for index_vals + unique_index_vals = {} + for name in index_vals: + if name not in unique_index_vals: + unique_index_vals[name] = [] + + # Fill all the rest of the names into the dictionary + for name in sorted(unique_index_vals.keys()): + new_listx = [] + new_listy = [] + for j in range(len(index_vals)): + if index_vals[j] == name: + new_listx.append(listx[j]) + new_listy.append(listy[j]) + # Generate trace with VISIBLE icon + if legend_param == 1: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=new_listx, marker=dict(color=theme[name]), showlegend=True + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=new_listx, + name=None, + marker=dict(color=theme[name]), + showlegend=True, + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + kwargs["marker"]["color"] = theme[name] + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + showlegend=True, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + marker=dict(size=size, color=theme[name]), + showlegend=True, + **kwargs, + ) + # Generate trace with INVISIBLE icon + else: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=new_listx, + marker=dict(color=theme[name]), + showlegend=False, + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=new_listx, + name=None, + marker=dict(color=theme[name]), + showlegend=False, + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + kwargs["marker"]["color"] = theme[name] + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + showlegend=False, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + marker=dict(size=size, color=theme[name]), + showlegend=False, + **kwargs, + ) + # Push the trace into dictionary + unique_index_vals[name] = trace + trace_list.append(unique_index_vals) + legend_param += 1 + + trace_index = 0 + indices = range(1, dim + 1) + for y_index in indices: + for x_index in indices: + for name in sorted(trace_list[trace_index].keys()): + fig.append_trace(trace_list[trace_index][name], y_index, x_index) + trace_index += 1 + + # Insert headers into the figure + for j in range(dim): + xaxis_key = "xaxis{}".format((dim * dim) - dim + 1 + j) + fig["layout"][xaxis_key].update(title=headers[j]) + + for j in range(dim): + yaxis_key = "yaxis{}".format(1 + (dim * j)) + fig["layout"][yaxis_key].update(title=headers[j]) + + hide_tick_labels_from_box_subplots(fig) + + if diag == "histogram": + fig["layout"].update( + height=height, width=width, title=title, showlegend=True, barmode="stack" + ) + return fig + + else: + fig["layout"].update(height=height, width=width, title=title, showlegend=True) + return fig + + +def scatterplot_theme( + dataframe, + headers, + diag, + size, + height, + width, + title, + index, + index_vals, + endpts, + colormap, + colormap_type, + **kwargs, +): + """ + Refer to FigureFactory.create_scatterplotmatrix() for docstring + + Returns fig for scatterplotmatrix with both index and colormap picked + + """ + + # Check if index is made of string values + if isinstance(index_vals[0], str): + unique_index_vals = [] + for name in index_vals: + if name not in unique_index_vals: + unique_index_vals.append(name) + n_colors_len = len(unique_index_vals) + + # Convert colormap to list of n RGB tuples + if colormap_type == "seq": + foo = clrs.color_parser(colormap, clrs.unlabel_rgb) + foo = clrs.n_colors(foo[0], foo[1], n_colors_len) + theme = clrs.color_parser(foo, clrs.label_rgb) + + if colormap_type == "cat": + # leave list of colors the same way + theme = colormap + + dim = len(dataframe) + fig = make_subplots(rows=dim, cols=dim, print_grid=False) + trace_list = [] + legend_param = 0 + # Work over all permutations of list pairs + for listy in dataframe: + for listx in dataframe: + # create a dictionary for index_vals + unique_index_vals = {} + for name in index_vals: + if name not in unique_index_vals: + unique_index_vals[name] = [] + + c_indx = 0 # color index + # Fill all the rest of the names into the dictionary + for name in sorted(unique_index_vals.keys()): + new_listx = [] + new_listy = [] + for j in range(len(index_vals)): + if index_vals[j] == name: + new_listx.append(listx[j]) + new_listy.append(listy[j]) + # Generate trace with VISIBLE icon + if legend_param == 1: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=new_listx, + marker=dict(color=theme[c_indx]), + showlegend=True, + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=new_listx, + name=None, + marker=dict(color=theme[c_indx]), + showlegend=True, + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + kwargs["marker"]["color"] = theme[c_indx] + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + showlegend=True, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + marker=dict(size=size, color=theme[c_indx]), + showlegend=True, + **kwargs, + ) + # Generate trace with INVISIBLE icon + else: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=new_listx, + marker=dict(color=theme[c_indx]), + showlegend=False, + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=new_listx, + name=None, + marker=dict(color=theme[c_indx]), + showlegend=False, + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + kwargs["marker"]["color"] = theme[c_indx] + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + showlegend=False, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=name, + marker=dict(size=size, color=theme[c_indx]), + showlegend=False, + **kwargs, + ) + # Push the trace into dictionary + unique_index_vals[name] = trace + if c_indx >= (len(theme) - 1): + c_indx = -1 + c_indx += 1 + trace_list.append(unique_index_vals) + legend_param += 1 + + trace_index = 0 + indices = range(1, dim + 1) + for y_index in indices: + for x_index in indices: + for name in sorted(trace_list[trace_index].keys()): + fig.append_trace(trace_list[trace_index][name], y_index, x_index) + trace_index += 1 + + # Insert headers into the figure + for j in range(dim): + xaxis_key = "xaxis{}".format((dim * dim) - dim + 1 + j) + fig["layout"][xaxis_key].update(title=headers[j]) + + for j in range(dim): + yaxis_key = "yaxis{}".format(1 + (dim * j)) + fig["layout"][yaxis_key].update(title=headers[j]) + + hide_tick_labels_from_box_subplots(fig) + + if diag == "histogram": + fig["layout"].update( + height=height, + width=width, + title=title, + showlegend=True, + barmode="stack", + ) + return fig + + elif diag == "box": + fig["layout"].update( + height=height, width=width, title=title, showlegend=True + ) + return fig + + else: + fig["layout"].update( + height=height, width=width, title=title, showlegend=True + ) + return fig + + else: + if endpts: + intervals = utils.endpts_to_intervals(endpts) + + # Convert colormap to list of n RGB tuples + if colormap_type == "seq": + foo = clrs.color_parser(colormap, clrs.unlabel_rgb) + foo = clrs.n_colors(foo[0], foo[1], len(intervals)) + theme = clrs.color_parser(foo, clrs.label_rgb) + + if colormap_type == "cat": + # leave list of colors the same way + theme = colormap + + dim = len(dataframe) + fig = make_subplots(rows=dim, cols=dim, print_grid=False) + trace_list = [] + legend_param = 0 + # Work over all permutations of list pairs + for listy in dataframe: + for listx in dataframe: + interval_labels = {} + for interval in intervals: + interval_labels[str(interval)] = [] + + c_indx = 0 # color index + # Fill all the rest of the names into the dictionary + for interval in intervals: + new_listx = [] + new_listy = [] + for j in range(len(index_vals)): + if interval[0] < index_vals[j] <= interval[1]: + new_listx.append(listx[j]) + new_listy.append(listy[j]) + # Generate trace with VISIBLE icon + if legend_param == 1: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=new_listx, + marker=dict(color=theme[c_indx]), + showlegend=True, + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=new_listx, + name=None, + marker=dict(color=theme[c_indx]), + showlegend=True, + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + (kwargs["marker"]["color"]) = theme[c_indx] + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=str(interval), + showlegend=True, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=str(interval), + marker=dict(size=size, color=theme[c_indx]), + showlegend=True, + **kwargs, + ) + # Generate trace with INVISIBLE icon + else: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=new_listx, + marker=dict(color=theme[c_indx]), + showlegend=False, + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=new_listx, + name=None, + marker=dict(color=theme[c_indx]), + showlegend=False, + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + (kwargs["marker"]["color"]) = theme[c_indx] + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=str(interval), + showlegend=False, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=new_listx, + y=new_listy, + mode="markers", + name=str(interval), + marker=dict(size=size, color=theme[c_indx]), + showlegend=False, + **kwargs, + ) + # Push the trace into dictionary + interval_labels[str(interval)] = trace + if c_indx >= (len(theme) - 1): + c_indx = -1 + c_indx += 1 + trace_list.append(interval_labels) + legend_param += 1 + + trace_index = 0 + indices = range(1, dim + 1) + for y_index in indices: + for x_index in indices: + for interval in intervals: + fig.append_trace( + trace_list[trace_index][str(interval)], y_index, x_index + ) + trace_index += 1 + + # Insert headers into the figure + for j in range(dim): + xaxis_key = "xaxis{}".format((dim * dim) - dim + 1 + j) + fig["layout"][xaxis_key].update(title=headers[j]) + for j in range(dim): + yaxis_key = "yaxis{}".format(1 + (dim * j)) + fig["layout"][yaxis_key].update(title=headers[j]) + + hide_tick_labels_from_box_subplots(fig) + + if diag == "histogram": + fig["layout"].update( + height=height, + width=width, + title=title, + showlegend=True, + barmode="stack", + ) + return fig + + elif diag == "box": + fig["layout"].update( + height=height, width=width, title=title, showlegend=True + ) + return fig + + else: + fig["layout"].update( + height=height, width=width, title=title, showlegend=True + ) + return fig + + else: + theme = colormap + + # add a copy of rgb color to theme if it contains one color + if len(theme) <= 1: + theme.append(theme[0]) + + color = [] + for incr in range(len(theme)): + color.append([1.0 / (len(theme) - 1) * incr, theme[incr]]) + + dim = len(dataframe) + fig = make_subplots(rows=dim, cols=dim, print_grid=False) + trace_list = [] + legend_param = 0 + # Run through all permutations of list pairs + for listy in dataframe: + for listx in dataframe: + # Generate trace with VISIBLE icon + if legend_param == 1: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=listx, marker=dict(color=theme[0]), showlegend=False + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=listx, marker=dict(color=theme[0]), showlegend=False + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + kwargs["marker"]["color"] = index_vals + kwargs["marker"]["colorscale"] = color + kwargs["marker"]["showscale"] = True + trace = graph_objs.Scatter( + x=listx, + y=listy, + mode="markers", + showlegend=False, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=listx, + y=listy, + mode="markers", + marker=dict( + size=size, + color=index_vals, + colorscale=color, + showscale=True, + ), + showlegend=False, + **kwargs, + ) + # Generate trace with INVISIBLE icon + else: + if (listx == listy) and (diag == "histogram"): + trace = graph_objs.Histogram( + x=listx, marker=dict(color=theme[0]), showlegend=False + ) + elif (listx == listy) and (diag == "box"): + trace = graph_objs.Box( + y=listx, marker=dict(color=theme[0]), showlegend=False + ) + else: + if "marker" in kwargs: + kwargs["marker"]["size"] = size + kwargs["marker"]["color"] = index_vals + kwargs["marker"]["colorscale"] = color + kwargs["marker"]["showscale"] = False + trace = graph_objs.Scatter( + x=listx, + y=listy, + mode="markers", + showlegend=False, + **kwargs, + ) + else: + trace = graph_objs.Scatter( + x=listx, + y=listy, + mode="markers", + marker=dict( + size=size, + color=index_vals, + colorscale=color, + showscale=False, + ), + showlegend=False, + **kwargs, + ) + # Push the trace into list + trace_list.append(trace) + legend_param += 1 + + trace_index = 0 + indices = range(1, dim + 1) + for y_index in indices: + for x_index in indices: + fig.append_trace(trace_list[trace_index], y_index, x_index) + trace_index += 1 + + # Insert headers into the figure + for j in range(dim): + xaxis_key = "xaxis{}".format((dim * dim) - dim + 1 + j) + fig["layout"][xaxis_key].update(title=headers[j]) + for j in range(dim): + yaxis_key = "yaxis{}".format(1 + (dim * j)) + fig["layout"][yaxis_key].update(title=headers[j]) + + hide_tick_labels_from_box_subplots(fig) + + if diag == "histogram": + fig["layout"].update( + height=height, + width=width, + title=title, + showlegend=True, + barmode="stack", + ) + return fig + + elif diag == "box": + fig["layout"].update( + height=height, width=width, title=title, showlegend=True + ) + return fig + + else: + fig["layout"].update( + height=height, width=width, title=title, showlegend=True + ) + return fig + + +def create_scatterplotmatrix( + df, + index=None, + endpts=None, + diag="scatter", + height=500, + width=500, + size=6, + title="Scatterplot Matrix", + colormap=None, + colormap_type="cat", + dataframe=None, + headers=None, + index_vals=None, + **kwargs, +): + """ + Returns data for a scatterplot matrix; + **deprecated**, + use instead the plotly.graph_objects trace + :class:`plotly.graph_objects.Splom`. + + :param (array) df: array of the data with column headers + :param (str) index: name of the index column in data array + :param (list|tuple) endpts: takes an increasing sequece of numbers + that defines intervals on the real line. They are used to group + the entries in an index of numbers into their corresponding + interval and therefore can be treated as categorical data + :param (str) diag: sets the chart type for the main diagonal plots. + The options are 'scatter', 'histogram' and 'box'. + :param (int|float) height: sets the height of the chart + :param (int|float) width: sets the width of the chart + :param (float) size: sets the marker size (in px) + :param (str) title: the title label of the scatterplot matrix + :param (str|tuple|list|dict) colormap: either a plotly scale name, + an rgb or hex color, a color tuple, a list of colors or a + dictionary. An rgb color is of the form 'rgb(x, y, z)' where + x, y and z belong to the interval [0, 255] and a color tuple is a + tuple of the form (a, b, c) where a, b and c belong to [0, 1]. + If colormap is a list, it must contain valid color types as its + members. + If colormap is a dictionary, all the string entries in + the index column must be a key in colormap. In this case, the + colormap_type is forced to 'cat' or categorical + :param (str) colormap_type: determines how colormap is interpreted. + Valid choices are 'seq' (sequential) and 'cat' (categorical). If + 'seq' is selected, only the first two colors in colormap will be + considered (when colormap is a list) and the index values will be + linearly interpolated between those two colors. This option is + forced if all index values are numeric. + If 'cat' is selected, a color from colormap will be assigned to + each category from index, including the intervals if endpts is + being used + :param (dict) **kwargs: a dictionary of scatterplot arguments + The only forbidden parameters are 'size', 'color' and + 'colorscale' in 'marker' + + Example 1: Vanilla Scatterplot Matrix + + >>> from plotly.graph_objs import graph_objs + >>> from plotly.figure_factory import create_scatterplotmatrix + + >>> import numpy as np + >>> import pandas as pd + + >>> # Create dataframe + >>> df = pd.DataFrame(np.random.randn(10, 2), + ... columns=['Column 1', 'Column 2']) + + >>> # Create scatterplot matrix + >>> fig = create_scatterplotmatrix(df) + >>> fig.show() + + + Example 2: Indexing a Column + + >>> from plotly.graph_objs import graph_objs + >>> from plotly.figure_factory import create_scatterplotmatrix + + >>> import numpy as np + >>> import pandas as pd + + >>> # Create dataframe with index + >>> df = pd.DataFrame(np.random.randn(10, 2), + ... columns=['A', 'B']) + + >>> # Add another column of strings to the dataframe + >>> df['Fruit'] = pd.Series(['apple', 'apple', 'grape', 'apple', 'apple', + ... 'grape', 'pear', 'pear', 'apple', 'pear']) + + >>> # Create scatterplot matrix + >>> fig = create_scatterplotmatrix(df, index='Fruit', size=10) + >>> fig.show() + + + Example 3: Styling the Diagonal Subplots + + >>> from plotly.graph_objs import graph_objs + >>> from plotly.figure_factory import create_scatterplotmatrix + + >>> import numpy as np + >>> import pandas as pd + + >>> # Create dataframe with index + >>> df = pd.DataFrame(np.random.randn(10, 4), + ... columns=['A', 'B', 'C', 'D']) + + >>> # Add another column of strings to the dataframe + >>> df['Fruit'] = pd.Series(['apple', 'apple', 'grape', 'apple', 'apple', + ... 'grape', 'pear', 'pear', 'apple', 'pear']) + + >>> # Create scatterplot matrix + >>> fig = create_scatterplotmatrix(df, diag='box', index='Fruit', height=1000, + ... width=1000) + >>> fig.show() + + + Example 4: Use a Theme to Style the Subplots + + >>> from plotly.graph_objs import graph_objs + >>> from plotly.figure_factory import create_scatterplotmatrix + + >>> import numpy as np + >>> import pandas as pd + + >>> # Create dataframe with random data + >>> df = pd.DataFrame(np.random.randn(100, 3), + ... columns=['A', 'B', 'C']) + + >>> # Create scatterplot matrix using a built-in + >>> # Plotly palette scale and indexing column 'A' + >>> fig = create_scatterplotmatrix(df, diag='histogram', index='A', + ... colormap='Blues', height=800, width=800) + >>> fig.show() + + + Example 5: Example 4 with Interval Factoring + + >>> from plotly.graph_objs import graph_objs + >>> from plotly.figure_factory import create_scatterplotmatrix + + >>> import numpy as np + >>> import pandas as pd + + >>> # Create dataframe with random data + >>> df = pd.DataFrame(np.random.randn(100, 3), + ... columns=['A', 'B', 'C']) + + >>> # Create scatterplot matrix using a list of 2 rgb tuples + >>> # and endpoints at -1, 0 and 1 + >>> fig = create_scatterplotmatrix(df, diag='histogram', index='A', + ... colormap=['rgb(140, 255, 50)', + ... 'rgb(170, 60, 115)', '#6c4774', + ... (0.5, 0.1, 0.8)], + ... endpts=[-1, 0, 1], height=800, width=800) + >>> fig.show() + + + Example 6: Using the colormap as a Dictionary + + >>> from plotly.graph_objs import graph_objs + >>> from plotly.figure_factory import create_scatterplotmatrix + + >>> import numpy as np + >>> import pandas as pd + >>> import random + + >>> # Create dataframe with random data + >>> df = pd.DataFrame(np.random.randn(100, 3), + ... columns=['Column A', + ... 'Column B', + ... 'Column C']) + + >>> # Add new color column to dataframe + >>> new_column = [] + >>> strange_colors = ['turquoise', 'limegreen', 'goldenrod'] + + >>> for j in range(100): + ... new_column.append(random.choice(strange_colors)) + >>> df['Colors'] = pd.Series(new_column, index=df.index) + + >>> # Create scatterplot matrix using a dictionary of hex color values + >>> # which correspond to actual color names in 'Colors' column + >>> fig = create_scatterplotmatrix( + ... df, diag='box', index='Colors', + ... colormap= dict( + ... turquoise = '#00F5FF', + ... limegreen = '#32CD32', + ... goldenrod = '#DAA520' + ... ), + ... colormap_type='cat', + ... height=800, width=800 + ... ) + >>> fig.show() + """ + # TODO: protected until #282 + if dataframe is None: + dataframe = [] + if headers is None: + headers = [] + if index_vals is None: + index_vals = [] + + validate_scatterplotmatrix(df, index, diag, colormap_type, **kwargs) + + # Validate colormap + if isinstance(colormap, dict): + colormap = clrs.validate_colors_dict(colormap, "rgb") + elif isinstance(colormap, str) and "rgb" not in colormap and "#" not in colormap: + if colormap not in clrs.PLOTLY_SCALES.keys(): + raise exceptions.PlotlyError( + "If 'colormap' is a string, it must be the name " + "of a Plotly Colorscale. The available colorscale " + "names are {}".format(clrs.PLOTLY_SCALES.keys()) + ) + else: + # TODO change below to allow the correct Plotly colorscale + colormap = clrs.colorscale_to_colors(clrs.PLOTLY_SCALES[colormap]) + # keep only first and last item - fix later + colormap = [colormap[0]] + [colormap[-1]] + colormap = clrs.validate_colors(colormap, "rgb") + else: + colormap = clrs.validate_colors(colormap, "rgb") + + if not index: + for name in df: + headers.append(name) + for name in headers: + dataframe.append(df[name].values.tolist()) + # Check for same data-type in df columns + utils.validate_dataframe(dataframe) + figure = scatterplot( + dataframe, headers, diag, size, height, width, title, **kwargs + ) + return figure + else: + # Validate index selection + if index not in df: + raise exceptions.PlotlyError( + "Make sure you set the index " + "input variable to one of the " + "column names of your " + "dataframe." + ) + index_vals = df[index].values.tolist() + for name in df: + if name != index: + headers.append(name) + for name in headers: + dataframe.append(df[name].values.tolist()) + + # check for same data-type in each df column + utils.validate_dataframe(dataframe) + utils.validate_index(index_vals) + + # check if all colormap keys are in the index + # if colormap is a dictionary + if isinstance(colormap, dict): + for key in colormap: + if not all(index in colormap for index in index_vals): + raise exceptions.PlotlyError( + "If colormap is a " + "dictionary, all the " + "names in the index " + "must be keys." + ) + figure = scatterplot_dict( + dataframe, + headers, + diag, + size, + height, + width, + title, + index, + index_vals, + endpts, + colormap, + colormap_type, + **kwargs, + ) + return figure + + else: + figure = scatterplot_theme( + dataframe, + headers, + diag, + size, + height, + width, + title, + index, + index_vals, + endpts, + colormap, + colormap_type, + **kwargs, + ) + return figure diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_streamline.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_streamline.py new file mode 100644 index 0000000..55b74c3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_streamline.py @@ -0,0 +1,406 @@ +import math + +from plotly import exceptions, optional_imports +from plotly.figure_factory import utils +from plotly.graph_objs import graph_objs + +np = optional_imports.get_module("numpy") + + +def validate_streamline(x, y): + """ + Streamline-specific validations + + Specifically, this checks that x and y are both evenly spaced, + and that the package numpy is available. + + See FigureFactory.create_streamline() for params + + :raises: (ImportError) If numpy is not available. + :raises: (PlotlyError) If x is not evenly spaced. + :raises: (PlotlyError) If y is not evenly spaced. + """ + if np is False: + raise ImportError("FigureFactory.create_streamline requires numpy") + for index in range(len(x) - 1): + if ((x[index + 1] - x[index]) - (x[1] - x[0])) > 0.0001: + raise exceptions.PlotlyError( + "x must be a 1 dimensional, evenly spaced array" + ) + for index in range(len(y) - 1): + if ((y[index + 1] - y[index]) - (y[1] - y[0])) > 0.0001: + raise exceptions.PlotlyError( + "y must be a 1 dimensional, evenly spaced array" + ) + + +def create_streamline( + x, y, u, v, density=1, angle=math.pi / 9, arrow_scale=0.09, **kwargs +): + """ + Returns data for a streamline plot. + + :param (list|ndarray) x: 1 dimensional, evenly spaced list or array + :param (list|ndarray) y: 1 dimensional, evenly spaced list or array + :param (ndarray) u: 2 dimensional array + :param (ndarray) v: 2 dimensional array + :param (float|int) density: controls the density of streamlines in + plot. This is multiplied by 30 to scale similiarly to other + available streamline functions such as matplotlib. + Default = 1 + :param (angle in radians) angle: angle of arrowhead. Default = pi/9 + :param (float in [0,1]) arrow_scale: value to scale length of arrowhead + Default = .09 + :param kwargs: kwargs passed through plotly.graph_objs.Scatter + for more information on valid kwargs call + help(plotly.graph_objs.Scatter) + + :rtype (dict): returns a representation of streamline figure. + + Example 1: Plot simple streamline and increase arrow size + + >>> from plotly.figure_factory import create_streamline + >>> import plotly.graph_objects as go + >>> import numpy as np + >>> import math + + >>> # Add data + >>> x = np.linspace(-3, 3, 100) + >>> y = np.linspace(-3, 3, 100) + >>> Y, X = np.meshgrid(x, y) + >>> u = -1 - X**2 + Y + >>> v = 1 + X - Y**2 + >>> u = u.T # Transpose + >>> v = v.T # Transpose + + >>> # Create streamline + >>> fig = create_streamline(x, y, u, v, arrow_scale=.1) + >>> fig.show() + + Example 2: from nbviewer.ipython.org/github/barbagroup/AeroPython + + >>> from plotly.figure_factory import create_streamline + >>> import numpy as np + >>> import math + + >>> # Add data + >>> N = 50 + >>> x_start, x_end = -2.0, 2.0 + >>> y_start, y_end = -1.0, 1.0 + >>> x = np.linspace(x_start, x_end, N) + >>> y = np.linspace(y_start, y_end, N) + >>> X, Y = np.meshgrid(x, y) + >>> ss = 5.0 + >>> x_s, y_s = -1.0, 0.0 + + >>> # Compute the velocity field on the mesh grid + >>> u_s = ss/(2*np.pi) * (X-x_s)/((X-x_s)**2 + (Y-y_s)**2) + >>> v_s = ss/(2*np.pi) * (Y-y_s)/((X-x_s)**2 + (Y-y_s)**2) + + >>> # Create streamline + >>> fig = create_streamline(x, y, u_s, v_s, density=2, name='streamline') + + >>> # Add source point + >>> point = go.Scatter(x=[x_s], y=[y_s], mode='markers', + ... marker_size=14, name='source point') + + >>> fig.add_trace(point) # doctest: +SKIP + >>> fig.show() + """ + utils.validate_equal_length(x, y) + utils.validate_equal_length(u, v) + validate_streamline(x, y) + utils.validate_positive_scalars(density=density, arrow_scale=arrow_scale) + + streamline_x, streamline_y = _Streamline( + x, y, u, v, density, angle, arrow_scale + ).sum_streamlines() + arrow_x, arrow_y = _Streamline( + x, y, u, v, density, angle, arrow_scale + ).get_streamline_arrows() + + streamline = graph_objs.Scatter( + x=streamline_x + arrow_x, y=streamline_y + arrow_y, mode="lines", **kwargs + ) + + data = [streamline] + layout = graph_objs.Layout(hovermode="closest") + + return graph_objs.Figure(data=data, layout=layout) + + +class _Streamline(object): + """ + Refer to FigureFactory.create_streamline() for docstring + """ + + def __init__(self, x, y, u, v, density, angle, arrow_scale, **kwargs): + self.x = np.array(x) + self.y = np.array(y) + self.u = np.array(u) + self.v = np.array(v) + self.angle = angle + self.arrow_scale = arrow_scale + self.density = int(30 * density) # Scale similarly to other functions + self.delta_x = self.x[1] - self.x[0] + self.delta_y = self.y[1] - self.y[0] + self.val_x = self.x + self.val_y = self.y + + # Set up spacing + self.blank = np.zeros((self.density, self.density)) + self.spacing_x = len(self.x) / float(self.density - 1) + self.spacing_y = len(self.y) / float(self.density - 1) + self.trajectories = [] + + # Rescale speed onto axes-coordinates + self.u = self.u / (self.x[-1] - self.x[0]) + self.v = self.v / (self.y[-1] - self.y[0]) + self.speed = np.sqrt(self.u**2 + self.v**2) + + # Rescale u and v for integrations. + self.u *= len(self.x) + self.v *= len(self.y) + self.st_x = [] + self.st_y = [] + self.get_streamlines() + streamline_x, streamline_y = self.sum_streamlines() + arrows_x, arrows_y = self.get_streamline_arrows() + + def blank_pos(self, xi, yi): + """ + Set up positions for trajectories to be used with rk4 function. + """ + return (int((xi / self.spacing_x) + 0.5), int((yi / self.spacing_y) + 0.5)) + + def value_at(self, a, xi, yi): + """ + Set up for RK4 function, based on Bokeh's streamline code + """ + if isinstance(xi, np.ndarray): + self.x = xi.astype(int) + self.y = yi.astype(int) + else: + self.val_x = int(xi) + self.val_y = int(yi) + a00 = a[self.val_y, self.val_x] + a01 = a[self.val_y, self.val_x + 1] + a10 = a[self.val_y + 1, self.val_x] + a11 = a[self.val_y + 1, self.val_x + 1] + xt = xi - self.val_x + yt = yi - self.val_y + a0 = a00 * (1 - xt) + a01 * xt + a1 = a10 * (1 - xt) + a11 * xt + return a0 * (1 - yt) + a1 * yt + + def rk4_integrate(self, x0, y0): + """ + RK4 forward and back trajectories from the initial conditions. + + Adapted from Bokeh's streamline -uses Runge-Kutta method to fill + x and y trajectories then checks length of traj (s in units of axes) + """ + + def f(xi, yi): + dt_ds = 1.0 / self.value_at(self.speed, xi, yi) + ui = self.value_at(self.u, xi, yi) + vi = self.value_at(self.v, xi, yi) + return ui * dt_ds, vi * dt_ds + + def g(xi, yi): + dt_ds = 1.0 / self.value_at(self.speed, xi, yi) + ui = self.value_at(self.u, xi, yi) + vi = self.value_at(self.v, xi, yi) + return -ui * dt_ds, -vi * dt_ds + + def check(xi, yi): + return (0 <= xi < len(self.x) - 1) and (0 <= yi < len(self.y) - 1) + + xb_changes = [] + yb_changes = [] + + def rk4(x0, y0, f): + ds = 0.01 + stotal = 0 + xi = x0 + yi = y0 + xb, yb = self.blank_pos(xi, yi) + xf_traj = [] + yf_traj = [] + while check(xi, yi): + xf_traj.append(xi) + yf_traj.append(yi) + try: + k1x, k1y = f(xi, yi) + k2x, k2y = f(xi + 0.5 * ds * k1x, yi + 0.5 * ds * k1y) + k3x, k3y = f(xi + 0.5 * ds * k2x, yi + 0.5 * ds * k2y) + k4x, k4y = f(xi + ds * k3x, yi + ds * k3y) + except IndexError: + break + xi += ds * (k1x + 2 * k2x + 2 * k3x + k4x) / 6.0 + yi += ds * (k1y + 2 * k2y + 2 * k3y + k4y) / 6.0 + if not check(xi, yi): + break + stotal += ds + new_xb, new_yb = self.blank_pos(xi, yi) + if new_xb != xb or new_yb != yb: + if self.blank[new_yb, new_xb] == 0: + self.blank[new_yb, new_xb] = 1 + xb_changes.append(new_xb) + yb_changes.append(new_yb) + xb = new_xb + yb = new_yb + else: + break + if stotal > 2: + break + return stotal, xf_traj, yf_traj + + sf, xf_traj, yf_traj = rk4(x0, y0, f) + sb, xb_traj, yb_traj = rk4(x0, y0, g) + stotal = sf + sb + x_traj = xb_traj[::-1] + xf_traj[1:] + y_traj = yb_traj[::-1] + yf_traj[1:] + + if len(x_traj) < 1: + return None + if stotal > 0.2: + initxb, inityb = self.blank_pos(x0, y0) + self.blank[inityb, initxb] = 1 + return x_traj, y_traj + else: + for xb, yb in zip(xb_changes, yb_changes): + self.blank[yb, xb] = 0 + return None + + def traj(self, xb, yb): + """ + Integrate trajectories + + :param (int) xb: results of passing xi through self.blank_pos + :param (int) xy: results of passing yi through self.blank_pos + + Calculate each trajectory based on rk4 integrate method. + """ + + if xb < 0 or xb >= self.density or yb < 0 or yb >= self.density: + return + if self.blank[yb, xb] == 0: + t = self.rk4_integrate(xb * self.spacing_x, yb * self.spacing_y) + if t is not None: + self.trajectories.append(t) + + def get_streamlines(self): + """ + Get streamlines by building trajectory set. + """ + for indent in range(self.density // 2): + for xi in range(self.density - 2 * indent): + self.traj(xi + indent, indent) + self.traj(xi + indent, self.density - 1 - indent) + self.traj(indent, xi + indent) + self.traj(self.density - 1 - indent, xi + indent) + + self.st_x = [ + np.array(t[0]) * self.delta_x + self.x[0] for t in self.trajectories + ] + self.st_y = [ + np.array(t[1]) * self.delta_y + self.y[0] for t in self.trajectories + ] + + for index in range(len(self.st_x)): + self.st_x[index] = self.st_x[index].tolist() + self.st_x[index].append(np.nan) + + for index in range(len(self.st_y)): + self.st_y[index] = self.st_y[index].tolist() + self.st_y[index].append(np.nan) + + def get_streamline_arrows(self): + """ + Makes an arrow for each streamline. + + Gets angle of streamline at 1/3 mark and creates arrow coordinates + based off of user defined angle and arrow_scale. + + :param (array) st_x: x-values for all streamlines + :param (array) st_y: y-values for all streamlines + :param (angle in radians) angle: angle of arrowhead. Default = pi/9 + :param (float in [0,1]) arrow_scale: value to scale length of arrowhead + Default = .09 + :rtype (list, list) arrows_x: x-values to create arrowhead and + arrows_y: y-values to create arrowhead + """ + arrow_end_x = np.empty((len(self.st_x))) + arrow_end_y = np.empty((len(self.st_y))) + arrow_start_x = np.empty((len(self.st_x))) + arrow_start_y = np.empty((len(self.st_y))) + for index in range(len(self.st_x)): + arrow_end_x[index] = self.st_x[index][int(len(self.st_x[index]) / 3)] + arrow_start_x[index] = self.st_x[index][ + (int(len(self.st_x[index]) / 3)) - 1 + ] + arrow_end_y[index] = self.st_y[index][int(len(self.st_y[index]) / 3)] + arrow_start_y[index] = self.st_y[index][ + (int(len(self.st_y[index]) / 3)) - 1 + ] + + dif_x = arrow_end_x - arrow_start_x + dif_y = arrow_end_y - arrow_start_y + + orig_err = np.geterr() + np.seterr(divide="ignore", invalid="ignore") + streamline_ang = np.arctan(dif_y / dif_x) + np.seterr(**orig_err) + + ang1 = streamline_ang + (self.angle) + ang2 = streamline_ang - (self.angle) + + seg1_x = np.cos(ang1) * self.arrow_scale + seg1_y = np.sin(ang1) * self.arrow_scale + seg2_x = np.cos(ang2) * self.arrow_scale + seg2_y = np.sin(ang2) * self.arrow_scale + + point1_x = np.empty((len(dif_x))) + point1_y = np.empty((len(dif_y))) + point2_x = np.empty((len(dif_x))) + point2_y = np.empty((len(dif_y))) + + for index in range(len(dif_x)): + if dif_x[index] >= 0: + point1_x[index] = arrow_end_x[index] - seg1_x[index] + point1_y[index] = arrow_end_y[index] - seg1_y[index] + point2_x[index] = arrow_end_x[index] - seg2_x[index] + point2_y[index] = arrow_end_y[index] - seg2_y[index] + else: + point1_x[index] = arrow_end_x[index] + seg1_x[index] + point1_y[index] = arrow_end_y[index] + seg1_y[index] + point2_x[index] = arrow_end_x[index] + seg2_x[index] + point2_y[index] = arrow_end_y[index] + seg2_y[index] + + space = np.empty((len(point1_x))) + space[:] = np.nan + + # Combine arrays into array + arrows_x = np.array([point1_x, arrow_end_x, point2_x, space]) + arrows_x = arrows_x.flatten("F") + arrows_x = arrows_x.tolist() + + # Combine arrays into array + arrows_y = np.array([point1_y, arrow_end_y, point2_y, space]) + arrows_y = arrows_y.flatten("F") + arrows_y = arrows_y.tolist() + + return arrows_x, arrows_y + + def sum_streamlines(self): + """ + Makes all streamlines readable as a single trace. + + :rtype (list, list): streamline_x: all x values for each streamline + combined into single list and streamline_y: all y values for each + streamline combined into single list + """ + streamline_x = sum(self.st_x, []) + streamline_y = sum(self.st_y, []) + return streamline_x, streamline_y diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_table.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_table.py new file mode 100644 index 0000000..bda731f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_table.py @@ -0,0 +1,280 @@ +from plotly import exceptions, optional_imports +from plotly.graph_objs import graph_objs + +pd = optional_imports.get_module("pandas") + + +def validate_table(table_text, font_colors): + """ + Table-specific validations + + Check that font_colors is supplied correctly (1, 3, or len(text) + colors). + + :raises: (PlotlyError) If font_colors is supplied incorretly. + + See FigureFactory.create_table() for params + """ + font_colors_len_options = [1, 3, len(table_text)] + if len(font_colors) not in font_colors_len_options: + raise exceptions.PlotlyError( + "Oops, font_colors should be a list of length 1, 3 or len(text)" + ) + + +def create_table( + table_text, + colorscale=None, + font_colors=None, + index=False, + index_title="", + annotation_offset=0.45, + height_constant=30, + hoverinfo="none", + **kwargs, +): + """ + Function that creates data tables. + + See also the plotly.graph_objects trace + :class:`plotly.graph_objects.Table` + + :param (pandas.Dataframe | list[list]) text: data for table. + :param (str|list[list]) colorscale: Colorscale for table where the + color at value 0 is the header color, .5 is the first table color + and 1 is the second table color. (Set .5 and 1 to avoid the striped + table effect). Default=[[0, '#66b2ff'], [.5, '#d9d9d9'], + [1, '#ffffff']] + :param (list) font_colors: Color for fonts in table. Can be a single + color, three colors, or a color for each row in the table. + Default=['#000000'] (black text for the entire table) + :param (int) height_constant: Constant multiplied by # of rows to + create table height. Default=30. + :param (bool) index: Create (header-colored) index column index from + Pandas dataframe or list[0] for each list in text. Default=False. + :param (string) index_title: Title for index column. Default=''. + :param kwargs: kwargs passed through plotly.graph_objs.Heatmap. + These kwargs describe other attributes about the annotated Heatmap + trace such as the colorscale. For more information on valid kwargs + call help(plotly.graph_objs.Heatmap) + + Example 1: Simple Plotly Table + + >>> from plotly.figure_factory import create_table + + >>> text = [['Country', 'Year', 'Population'], + ... ['US', 2000, 282200000], + ... ['Canada', 2000, 27790000], + ... ['US', 2010, 309000000], + ... ['Canada', 2010, 34000000]] + + >>> table = create_table(text) + >>> table.show() + + Example 2: Table with Custom Coloring + + >>> from plotly.figure_factory import create_table + >>> text = [['Country', 'Year', 'Population'], + ... ['US', 2000, 282200000], + ... ['Canada', 2000, 27790000], + ... ['US', 2010, 309000000], + ... ['Canada', 2010, 34000000]] + >>> table = create_table(text, + ... colorscale=[[0, '#000000'], + ... [.5, '#80beff'], + ... [1, '#cce5ff']], + ... font_colors=['#ffffff', '#000000', + ... '#000000']) + >>> table.show() + + Example 3: Simple Plotly Table with Pandas + + >>> from plotly.figure_factory import create_table + >>> import pandas as pd + >>> df = pd.read_csv('http://www.stat.ubc.ca/~jenny/notOcto/STAT545A/examples/gapminder/data/gapminderDataFiveYear.txt', sep='\t') + >>> df_p = df[0:25] + >>> table_simple = create_table(df_p) + >>> table_simple.show() + + """ + + # Avoiding mutables in the call signature + colorscale = ( + colorscale + if colorscale is not None + else [[0, "#00083e"], [0.5, "#ededee"], [1, "#ffffff"]] + ) + font_colors = ( + font_colors if font_colors is not None else ["#ffffff", "#000000", "#000000"] + ) + + validate_table(table_text, font_colors) + table_matrix = _Table( + table_text, + colorscale, + font_colors, + index, + index_title, + annotation_offset, + **kwargs, + ).get_table_matrix() + annotations = _Table( + table_text, + colorscale, + font_colors, + index, + index_title, + annotation_offset, + **kwargs, + ).make_table_annotations() + + trace = dict( + type="heatmap", + z=table_matrix, + opacity=0.75, + colorscale=colorscale, + showscale=False, + hoverinfo=hoverinfo, + **kwargs, + ) + + data = [trace] + layout = dict( + annotations=annotations, + height=len(table_matrix) * height_constant + 50, + margin=dict(t=0, b=0, r=0, l=0), + yaxis=dict( + autorange="reversed", + zeroline=False, + gridwidth=2, + ticks="", + dtick=1, + tick0=0.5, + showticklabels=False, + ), + xaxis=dict( + zeroline=False, + gridwidth=2, + ticks="", + dtick=1, + tick0=-0.5, + showticklabels=False, + ), + ) + return graph_objs.Figure(data=data, layout=layout) + + +class _Table(object): + """ + Refer to TraceFactory.create_table() for docstring + """ + + def __init__( + self, + table_text, + colorscale, + font_colors, + index, + index_title, + annotation_offset, + **kwargs, + ): + if pd and isinstance(table_text, pd.DataFrame): + headers = table_text.columns.tolist() + table_text_index = table_text.index.tolist() + table_text = table_text.values.tolist() + table_text.insert(0, headers) + if index: + table_text_index.insert(0, index_title) + for i in range(len(table_text)): + table_text[i].insert(0, table_text_index[i]) + self.table_text = table_text + self.colorscale = colorscale + self.font_colors = font_colors + self.index = index + self.annotation_offset = annotation_offset + self.x = range(len(table_text[0])) + self.y = range(len(table_text)) + + def get_table_matrix(self): + """ + Create z matrix to make heatmap with striped table coloring + + :rtype (list[list]) table_matrix: z matrix to make heatmap with striped + table coloring. + """ + header = [0] * len(self.table_text[0]) + odd_row = [0.5] * len(self.table_text[0]) + even_row = [1] * len(self.table_text[0]) + table_matrix = [None] * len(self.table_text) + table_matrix[0] = header + for i in range(1, len(self.table_text), 2): + table_matrix[i] = odd_row + for i in range(2, len(self.table_text), 2): + table_matrix[i] = even_row + if self.index: + for array in table_matrix: + array[0] = 0 + return table_matrix + + def get_table_font_color(self): + """ + Fill font-color array. + + Table text color can vary by row so this extends a single color or + creates an array to set a header color and two alternating colors to + create the striped table pattern. + + :rtype (list[list]) all_font_colors: list of font colors for each row + in table. + """ + if len(self.font_colors) == 1: + all_font_colors = self.font_colors * len(self.table_text) + elif len(self.font_colors) == 3: + all_font_colors = list(range(len(self.table_text))) + all_font_colors[0] = self.font_colors[0] + for i in range(1, len(self.table_text), 2): + all_font_colors[i] = self.font_colors[1] + for i in range(2, len(self.table_text), 2): + all_font_colors[i] = self.font_colors[2] + elif len(self.font_colors) == len(self.table_text): + all_font_colors = self.font_colors + else: + all_font_colors = ["#000000"] * len(self.table_text) + return all_font_colors + + def make_table_annotations(self): + """ + Generate annotations to fill in table text + + :rtype (list) annotations: list of annotations for each cell of the + table. + """ + all_font_colors = _Table.get_table_font_color(self) + annotations = [] + for n, row in enumerate(self.table_text): + for m, val in enumerate(row): + # Bold text in header and index + format_text = ( + "" + str(val) + "" + if n == 0 or self.index and m < 1 + else str(val) + ) + # Match font color of index to font color of header + font_color = ( + self.font_colors[0] if self.index and m == 0 else all_font_colors[n] + ) + annotations.append( + graph_objs.layout.Annotation( + text=format_text, + x=self.x[m] - self.annotation_offset, + y=self.y[n], + xref="x1", + yref="y1", + align="left", + xanchor="left", + font=dict(color=font_color), + showarrow=False, + ) + ) + return annotations diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_ternary_contour.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_ternary_contour.py new file mode 100644 index 0000000..4cdcf17 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_ternary_contour.py @@ -0,0 +1,692 @@ +import plotly.colors as clrs +from plotly.graph_objs import graph_objs as go +from plotly import exceptions +from plotly import optional_imports + +from skimage import measure + +np = optional_imports.get_module("numpy") +scipy_interp = optional_imports.get_module("scipy.interpolate") + +# -------------------------- Layout ------------------------------ + + +def _ternary_layout( + title="Ternary contour plot", width=550, height=525, pole_labels=["a", "b", "c"] +): + """ + Layout of ternary contour plot, to be passed to ``go.FigureWidget`` + object. + + Parameters + ========== + title : str or None + Title of ternary plot + width : int + Figure width. + height : int + Figure height. + pole_labels : str, default ['a', 'b', 'c'] + Names of the three poles of the triangle. + """ + return dict( + title=title, + width=width, + height=height, + ternary=dict( + sum=1, + aaxis=dict( + title=dict(text=pole_labels[0]), min=0.01, linewidth=2, ticks="outside" + ), + baxis=dict( + title=dict(text=pole_labels[1]), min=0.01, linewidth=2, ticks="outside" + ), + caxis=dict( + title=dict(text=pole_labels[2]), min=0.01, linewidth=2, ticks="outside" + ), + ), + showlegend=False, + ) + + +# ------------- Transformations of coordinates ------------------- + + +def _replace_zero_coords(ternary_data, delta=0.0005): + """ + Replaces zero ternary coordinates with delta and normalize the new + triplets (a, b, c). + + Parameters + ---------- + + ternary_data : ndarray of shape (N, 3) + + delta : float + Small float to regularize logarithm. + + Notes + ----- + Implements a method + by J. A. Martin-Fernandez, C. Barcelo-Vidal, V. Pawlowsky-Glahn, + Dealing with zeros and missing values in compositional data sets + using nonparametric imputation, Mathematical Geology 35 (2003), + pp 253-278. + """ + zero_mask = ternary_data == 0 + is_any_coord_zero = np.any(zero_mask, axis=0) + + unity_complement = 1 - delta * is_any_coord_zero + if np.any(unity_complement) < 0: + raise ValueError( + "The provided value of delta led to negative" + "ternary coords.Set a smaller delta" + ) + ternary_data = np.where(zero_mask, delta, unity_complement * ternary_data) + return ternary_data + + +def _ilr_transform(barycentric): + """ + Perform Isometric Log-Ratio on barycentric (compositional) data. + + Parameters + ---------- + barycentric: ndarray of shape (3, N) + Barycentric coordinates. + + References + ---------- + "An algebraic method to compute isometric logratio transformation and + back transformation of compositional data", Jarauta-Bragulat, E., + Buenestado, P.; Hervada-Sala, C., in Proc. of the Annual Conf. of the + Intl Assoc for Math Geology, 2003, pp 31-30. + """ + barycentric = np.asarray(barycentric) + x_0 = np.log(barycentric[0] / barycentric[1]) / np.sqrt(2) + x_1 = ( + 1.0 / np.sqrt(6) * np.log(barycentric[0] * barycentric[1] / barycentric[2] ** 2) + ) + ilr_tdata = np.stack((x_0, x_1)) + return ilr_tdata + + +def _ilr_inverse(x): + """ + Perform inverse Isometric Log-Ratio (ILR) transform to retrieve + barycentric (compositional) data. + + Parameters + ---------- + x : array of shape (2, N) + Coordinates in ILR space. + + References + ---------- + "An algebraic method to compute isometric logratio transformation and + back transformation of compositional data", Jarauta-Bragulat, E., + Buenestado, P.; Hervada-Sala, C., in Proc. of the Annual Conf. of the + Intl Assoc for Math Geology, 2003, pp 31-30. + """ + x = np.array(x) + matrix = np.array([[0.5, 1, 1.0], [-0.5, 1, 1.0], [0.0, 0.0, 1.0]]) + s = np.sqrt(2) / 2 + t = np.sqrt(3 / 2) + Sk = np.einsum("ik, kj -> ij", np.array([[s, t], [-s, t]]), x) + Z = -np.log(1 + np.exp(Sk).sum(axis=0)) + log_barycentric = np.einsum( + "ik, kj -> ij", matrix, np.stack((2 * s * x[0], t * x[1], Z)) + ) + iilr_tdata = np.exp(log_barycentric) + return iilr_tdata + + +def _transform_barycentric_cartesian(): + """ + Returns the transformation matrix from barycentric to Cartesian + coordinates and conversely. + """ + # reference triangle + tri_verts = np.array([[0.5, np.sqrt(3) / 2], [0, 0], [1, 0]]) + M = np.array([tri_verts[:, 0], tri_verts[:, 1], np.ones(3)]) + return M, np.linalg.inv(M) + + +def _prepare_barycentric_coord(b_coords): + """ + Check ternary coordinates and return the right barycentric coordinates. + """ + if not isinstance(b_coords, (list, np.ndarray)): + raise ValueError( + "Data should be either an array of shape (n,m)," + "or a list of n m-lists, m=2 or 3" + ) + b_coords = np.asarray(b_coords) + if b_coords.shape[0] not in (2, 3): + raise ValueError( + "A point should have 2 (a, b) or 3 (a, b, c)barycentric coordinates" + ) + if ( + (len(b_coords) == 3) + and not np.allclose(b_coords.sum(axis=0), 1, rtol=0.01) + and not np.allclose(b_coords.sum(axis=0), 100, rtol=0.01) + ): + msg = "The sum of coordinates should be 1 or 100 for all data points" + raise ValueError(msg) + + if len(b_coords) == 2: + A, B = b_coords + C = 1 - (A + B) + else: + A, B, C = b_coords / b_coords.sum(axis=0) + if np.any(np.stack((A, B, C)) < 0): + raise ValueError("Barycentric coordinates should be positive.") + return np.stack((A, B, C)) + + +def _compute_grid(coordinates, values, interp_mode="ilr"): + """ + Transform data points with Cartesian or ILR mapping, then Compute + interpolation on a regular grid. + + Parameters + ========== + + coordinates : array-like + Barycentric coordinates of data points. + values : 1-d array-like + Data points, field to be represented as contours. + interp_mode : 'ilr' (default) or 'cartesian' + Defines how data are interpolated to compute contours. + """ + if interp_mode == "cartesian": + M, invM = _transform_barycentric_cartesian() + coord_points = np.einsum("ik, kj -> ij", M, coordinates) + elif interp_mode == "ilr": + coordinates = _replace_zero_coords(coordinates) + coord_points = _ilr_transform(coordinates) + else: + raise ValueError("interp_mode should be cartesian or ilr") + xx, yy = coord_points[:2] + x_min, x_max = xx.min(), xx.max() + y_min, y_max = yy.min(), yy.max() + n_interp = max(200, int(np.sqrt(len(values)))) + gr_x = np.linspace(x_min, x_max, n_interp) + gr_y = np.linspace(y_min, y_max, n_interp) + grid_x, grid_y = np.meshgrid(gr_x, gr_y) + # We use cubic interpolation, except outside of the convex hull + # of data points where we use nearest neighbor values. + grid_z = scipy_interp.griddata( + coord_points[:2].T, values, (grid_x, grid_y), method="cubic" + ) + return grid_z, gr_x, gr_y + + +# ----------------------- Contour traces ---------------------- + + +def _polygon_area(x, y): + return 0.5 * np.abs(np.dot(x, np.roll(y, 1)) - np.dot(y, np.roll(x, 1))) + + +def _colors(ncontours, colormap=None): + """ + Return a list of ``ncontours`` colors from the ``colormap`` colorscale. + """ + if colormap in clrs.PLOTLY_SCALES.keys(): + cmap = clrs.PLOTLY_SCALES[colormap] + else: + raise exceptions.PlotlyError( + "Colorscale must be a valid Plotly Colorscale." + "The available colorscale names are {}".format(clrs.PLOTLY_SCALES.keys()) + ) + values = np.linspace(0, 1, ncontours) + vals_cmap = np.array([pair[0] for pair in cmap]) + cols = np.array([pair[1] for pair in cmap]) + inds = np.searchsorted(vals_cmap, values) + if "#" in cols[0]: # for Viridis + cols = [clrs.label_rgb(clrs.hex_to_rgb(col)) for col in cols] + + colors = [cols[0]] + for ind, val in zip(inds[1:], values[1:]): + val1, val2 = vals_cmap[ind - 1], vals_cmap[ind] + interm = (val - val1) / (val2 - val1) + col = clrs.find_intermediate_color( + cols[ind - 1], cols[ind], interm, colortype="rgb" + ) + colors.append(col) + return colors + + +def _is_invalid_contour(x, y): + """ + Utility function for _contour_trace + + Contours with an area of the order as 1 pixel are considered spurious. + """ + too_small = np.all(np.abs(x - x[0]) < 2) and np.all(np.abs(y - y[0]) < 2) + return too_small + + +def _extract_contours(im, values, colors): + """ + Utility function for _contour_trace. + + In ``im`` only one part of the domain has valid values (corresponding + to a subdomain where barycentric coordinates are well defined). When + computing contours, we need to assign values outside of this domain. + We can choose a value either smaller than all the values inside the + valid domain, or larger. This value must be chose with caution so that + no spurious contours are added. For example, if the boundary of the valid + domain has large values and the outer value is set to a small one, all + intermediate contours will be added at the boundary. + + Therefore, we compute the two sets of contours (with an outer value + smaller of larger than all values in the valid domain), and choose + the value resulting in a smaller total number of contours. There might + be a faster way to do this, but it works... + """ + mask_nan = np.isnan(im) + im_min, im_max = ( + im[np.logical_not(mask_nan)].min(), + im[np.logical_not(mask_nan)].max(), + ) + zz_min = np.copy(im) + zz_min[mask_nan] = 2 * im_min + zz_max = np.copy(im) + zz_max[mask_nan] = 2 * im_max + all_contours1, all_values1, all_areas1, all_colors1 = [], [], [], [] + all_contours2, all_values2, all_areas2, all_colors2 = [], [], [], [] + for i, val in enumerate(values): + contour_level1 = measure.find_contours(zz_min, val) + contour_level2 = measure.find_contours(zz_max, val) + all_contours1.extend(contour_level1) + all_contours2.extend(contour_level2) + all_values1.extend([val] * len(contour_level1)) + all_values2.extend([val] * len(contour_level2)) + all_areas1.extend( + [_polygon_area(contour.T[1], contour.T[0]) for contour in contour_level1] + ) + all_areas2.extend( + [_polygon_area(contour.T[1], contour.T[0]) for contour in contour_level2] + ) + all_colors1.extend([colors[i]] * len(contour_level1)) + all_colors2.extend([colors[i]] * len(contour_level2)) + if len(all_contours1) <= len(all_contours2): + return all_contours1, all_values1, all_areas1, all_colors1 + else: + return all_contours2, all_values2, all_areas2, all_colors2 + + +def _add_outer_contour( + all_contours, + all_values, + all_areas, + all_colors, + values, + val_outer, + v_min, + v_max, + colors, + color_min, + color_max, +): + """ + Utility function for _contour_trace + + Adds the background color to fill gaps outside of computed contours. + + To compute the background color, the color of the contour with largest + area (``val_outer``) is used. As background color, we choose the next + color value in the direction of the extrema of the colormap. + + Then we add information for the outer contour for the different lists + provided as arguments. + + A discrete colormap with all used colors is also returned (to be used + by colorscale trace). + """ + # The exact value of outer contour is not used when defining the trace + outer_contour = 20 * np.array([[0, 0, 1], [0, 1, 0.5]]).T + all_contours = [outer_contour] + all_contours + delta_values = np.diff(values)[0] + values = np.concatenate( + ([values[0] - delta_values], values, [values[-1] + delta_values]) + ) + colors = np.concatenate(([color_min], colors, [color_max])) + index = np.nonzero(values == val_outer)[0][0] + if index < len(values) / 2: + index -= 1 + else: + index += 1 + all_colors = [colors[index]] + all_colors + all_values = [values[index]] + all_values + all_areas = [0] + all_areas + used_colors = [color for color in colors if color in all_colors] + # Define discrete colorscale + color_number = len(used_colors) + scale = np.linspace(0, 1, color_number + 1) + discrete_cm = [] + for i, color in enumerate(used_colors): + discrete_cm.append([scale[i], used_colors[i]]) + discrete_cm.append([scale[i + 1], used_colors[i]]) + discrete_cm.append([scale[color_number], used_colors[color_number - 1]]) + + return all_contours, all_values, all_areas, all_colors, discrete_cm + + +def _contour_trace( + x, + y, + z, + ncontours=None, + colorscale="Electric", + linecolor="rgb(150,150,150)", + interp_mode="llr", + coloring=None, + v_min=0, + v_max=1, +): + """ + Contour trace in Cartesian coordinates. + + Parameters + ========== + + x, y : array-like + Cartesian coordinates + z : array-like + Field to be represented as contours. + ncontours : int or None + Number of contours to display (determined automatically if None). + colorscale : None or str (Plotly colormap) + colorscale of the contours. + linecolor : rgb color + Color used for lines. If ``colorscale`` is not None, line colors are + determined from ``colorscale`` instead. + interp_mode : 'ilr' (default) or 'cartesian' + Defines how data are interpolated to compute contours. If 'irl', + ILR (Isometric Log-Ratio) of compositional data is performed. If + 'cartesian', contours are determined in Cartesian space. + coloring : None or 'lines' + How to display contour. Filled contours if None, lines if ``lines``. + vmin, vmax : float + Bounds of interval of values used for the colorspace + + Notes + ===== + """ + # Prepare colors + # We do not take extrema, for example for one single contour + # the color will be the middle point of the colormap + colors = _colors(ncontours + 2, colorscale) + # Values used for contours, extrema are not used + # For example for a binary array [0, 1], the value of + # the contour for ncontours=1 is 0.5. + values = np.linspace(v_min, v_max, ncontours + 2) + color_min, color_max = colors[0], colors[-1] + colors = colors[1:-1] + values = values[1:-1] + + # Color of line contours + if linecolor is None: + linecolor = "rgb(150, 150, 150)" + else: + colors = [linecolor] * ncontours + + # Retrieve all contours + all_contours, all_values, all_areas, all_colors = _extract_contours( + z, values, colors + ) + + # Now sort contours by decreasing area + order = np.argsort(all_areas)[::-1] + + # Add outer contour + all_contours, all_values, all_areas, all_colors, discrete_cm = _add_outer_contour( + all_contours, + all_values, + all_areas, + all_colors, + values, + all_values[order[0]], + v_min, + v_max, + colors, + color_min, + color_max, + ) + order = np.concatenate(([0], order + 1)) + + # Compute traces, in the order of decreasing area + traces = [] + M, invM = _transform_barycentric_cartesian() + dx = (x.max() - x.min()) / x.size + dy = (y.max() - y.min()) / y.size + for index in order: + y_contour, x_contour = all_contours[index].T + val = all_values[index] + if interp_mode == "cartesian": + bar_coords = np.dot( + invM, + np.stack((dx * x_contour, dy * y_contour, np.ones(x_contour.shape))), + ) + elif interp_mode == "ilr": + bar_coords = _ilr_inverse( + np.stack((dx * x_contour + x.min(), dy * y_contour + y.min())) + ) + if index == 0: # outer triangle + a = np.array([1, 0, 0]) + b = np.array([0, 1, 0]) + c = np.array([0, 0, 1]) + else: + a, b, c = bar_coords + if _is_invalid_contour(x_contour, y_contour): + continue + + _col = all_colors[index] if coloring == "lines" else linecolor + trace = dict( + type="scatterternary", + a=a, + b=b, + c=c, + mode="lines", + line=dict(color=_col, shape="spline", width=1), + fill="toself", + fillcolor=all_colors[index], + showlegend=True, + hoverinfo="skip", + name="%.3f" % val, + ) + if coloring == "lines": + trace["fill"] = None + traces.append(trace) + + return traces, discrete_cm + + +# -------------------- Figure Factory for ternary contour ------------- + + +def create_ternary_contour( + coordinates, + values, + pole_labels=["a", "b", "c"], + width=500, + height=500, + ncontours=None, + showscale=False, + coloring=None, + colorscale="Bluered", + linecolor=None, + title=None, + interp_mode="ilr", + showmarkers=False, +): + """ + Ternary contour plot. + + Parameters + ---------- + + coordinates : list or ndarray + Barycentric coordinates of shape (2, N) or (3, N) where N is the + number of data points. The sum of the 3 coordinates is expected + to be 1 for all data points. + values : array-like + Data points of field to be represented as contours. + pole_labels : str, default ['a', 'b', 'c'] + Names of the three poles of the triangle. + width : int + Figure width. + height : int + Figure height. + ncontours : int or None + Number of contours to display (determined automatically if None). + showscale : bool, default False + If True, a colorbar showing the color scale is displayed. + coloring : None or 'lines' + How to display contour. Filled contours if None, lines if ``lines``. + colorscale : None or str (Plotly colormap) + colorscale of the contours. + linecolor : None or rgb color + Color used for lines. ``colorscale`` has to be set to None, otherwise + line colors are determined from ``colorscale``. + title : str or None + Title of ternary plot + interp_mode : 'ilr' (default) or 'cartesian' + Defines how data are interpolated to compute contours. If 'irl', + ILR (Isometric Log-Ratio) of compositional data is performed. If + 'cartesian', contours are determined in Cartesian space. + showmarkers : bool, default False + If True, markers corresponding to input compositional points are + superimposed on contours, using the same colorscale. + + Examples + ======== + + Example 1: ternary contour plot with filled contours + + >>> import plotly.figure_factory as ff + >>> import numpy as np + >>> # Define coordinates + >>> a, b = np.mgrid[0:1:20j, 0:1:20j] + >>> mask = a + b <= 1 + >>> a = a[mask].ravel() + >>> b = b[mask].ravel() + >>> c = 1 - a - b + >>> # Values to be displayed as contours + >>> z = a * b * c + >>> fig = ff.create_ternary_contour(np.stack((a, b, c)), z) + >>> fig.show() + + It is also possible to give only two barycentric coordinates for each + point, since the sum of the three coordinates is one: + + >>> fig = ff.create_ternary_contour(np.stack((a, b)), z) + + + Example 2: ternary contour plot with line contours + + >>> fig = ff.create_ternary_contour(np.stack((a, b, c)), z, coloring='lines') + + Example 3: customize number of contours + + >>> fig = ff.create_ternary_contour(np.stack((a, b, c)), z, ncontours=8) + + Example 4: superimpose contour plot and original data as markers + + >>> fig = ff.create_ternary_contour(np.stack((a, b, c)), z, coloring='lines', + ... showmarkers=True) + + Example 5: customize title and pole labels + + >>> fig = ff.create_ternary_contour(np.stack((a, b, c)), z, + ... title='Ternary plot', + ... pole_labels=['clay', 'quartz', 'fledspar']) + """ + if scipy_interp is None: + raise ImportError( + """\ + The create_ternary_contour figure factory requires the scipy package""" + ) + sk_measure = optional_imports.get_module("skimage") + if sk_measure is None: + raise ImportError( + """\ + The create_ternary_contour figure factory requires the scikit-image + package""" + ) + if colorscale is None: + showscale = False + if ncontours is None: + ncontours = 5 + coordinates = _prepare_barycentric_coord(coordinates) + v_min, v_max = values.min(), values.max() + grid_z, gr_x, gr_y = _compute_grid(coordinates, values, interp_mode=interp_mode) + + layout = _ternary_layout( + pole_labels=pole_labels, width=width, height=height, title=title + ) + + contour_trace, discrete_cm = _contour_trace( + gr_x, + gr_y, + grid_z, + ncontours=ncontours, + colorscale=colorscale, + linecolor=linecolor, + interp_mode=interp_mode, + coloring=coloring, + v_min=v_min, + v_max=v_max, + ) + + fig = go.Figure(data=contour_trace, layout=layout) + + opacity = 1 if showmarkers else 0 + a, b, c = coordinates + hovertemplate = ( + pole_labels[0] + + ": %{a:.3f}
" + + pole_labels[1] + + ": %{b:.3f}
" + + pole_labels[2] + + ": %{c:.3f}
" + "z: %{marker.color:.3f}" + ) + + fig.add_scatterternary( + a=a, + b=b, + c=c, + mode="markers", + marker={ + "color": values, + "colorscale": colorscale, + "line": {"color": "rgb(120, 120, 120)", "width": int(coloring != "lines")}, + }, + opacity=opacity, + hovertemplate=hovertemplate, + ) + if showscale: + if not showmarkers: + colorscale = discrete_cm + colorbar = dict( + { + "type": "scatterternary", + "a": [None], + "b": [None], + "c": [None], + "marker": { + "cmin": values.min(), + "cmax": values.max(), + "colorscale": colorscale, + "showscale": True, + }, + "mode": "markers", + } + ) + fig.add_trace(colorbar) + + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_trisurf.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_trisurf.py new file mode 100644 index 0000000..f935292 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_trisurf.py @@ -0,0 +1,509 @@ +from plotly import exceptions, optional_imports +import plotly.colors as clrs +from plotly.graph_objs import graph_objs + +np = optional_imports.get_module("numpy") + + +def map_face2color(face, colormap, scale, vmin, vmax): + """ + Normalize facecolor values by vmin/vmax and return rgb-color strings + + This function takes a tuple color along with a colormap and a minimum + (vmin) and maximum (vmax) range of possible mean distances for the + given parametrized surface. It returns an rgb color based on the mean + distance between vmin and vmax + + """ + if vmin >= vmax: + raise exceptions.PlotlyError( + "Incorrect relation between vmin " + "and vmax. The vmin value cannot be " + "bigger than or equal to the value " + "of vmax." + ) + if len(colormap) == 1: + # color each triangle face with the same color in colormap + face_color = colormap[0] + face_color = clrs.convert_to_RGB_255(face_color) + face_color = clrs.label_rgb(face_color) + return face_color + if face == vmax: + # pick last color in colormap + face_color = colormap[-1] + face_color = clrs.convert_to_RGB_255(face_color) + face_color = clrs.label_rgb(face_color) + return face_color + else: + if scale is None: + # find the normalized distance t of a triangle face between + # vmin and vmax where the distance is between 0 and 1 + t = (face - vmin) / float((vmax - vmin)) + low_color_index = int(t / (1.0 / (len(colormap) - 1))) + + face_color = clrs.find_intermediate_color( + colormap[low_color_index], + colormap[low_color_index + 1], + t * (len(colormap) - 1) - low_color_index, + ) + + face_color = clrs.convert_to_RGB_255(face_color) + face_color = clrs.label_rgb(face_color) + else: + # find the face color for a non-linearly interpolated scale + t = (face - vmin) / float((vmax - vmin)) + + low_color_index = 0 + for k in range(len(scale) - 1): + if scale[k] <= t < scale[k + 1]: + break + low_color_index += 1 + + low_scale_val = scale[low_color_index] + high_scale_val = scale[low_color_index + 1] + + face_color = clrs.find_intermediate_color( + colormap[low_color_index], + colormap[low_color_index + 1], + (t - low_scale_val) / (high_scale_val - low_scale_val), + ) + + face_color = clrs.convert_to_RGB_255(face_color) + face_color = clrs.label_rgb(face_color) + return face_color + + +def trisurf( + x, + y, + z, + simplices, + show_colorbar, + edges_color, + scale, + colormap=None, + color_func=None, + plot_edges=False, + x_edge=None, + y_edge=None, + z_edge=None, + facecolor=None, +): + """ + Refer to FigureFactory.create_trisurf() for docstring + """ + # numpy import check + if not np: + raise ImportError("FigureFactory._trisurf() requires numpy imported.") + points3D = np.vstack((x, y, z)).T + simplices = np.atleast_2d(simplices) + + # vertices of the surface triangles + tri_vertices = points3D[simplices] + + # Define colors for the triangle faces + if color_func is None: + # mean values of z-coordinates of triangle vertices + mean_dists = tri_vertices[:, :, 2].mean(-1) + elif isinstance(color_func, (list, np.ndarray)): + # Pre-computed list / array of values to map onto color + if len(color_func) != len(simplices): + raise ValueError( + "If color_func is a list/array, it must " + "be the same length as simplices." + ) + + # convert all colors in color_func to rgb + for index in range(len(color_func)): + if isinstance(color_func[index], str): + if "#" in color_func[index]: + foo = clrs.hex_to_rgb(color_func[index]) + color_func[index] = clrs.label_rgb(foo) + + if isinstance(color_func[index], tuple): + foo = clrs.convert_to_RGB_255(color_func[index]) + color_func[index] = clrs.label_rgb(foo) + + mean_dists = np.asarray(color_func) + else: + # apply user inputted function to calculate + # custom coloring for triangle vertices + mean_dists = [] + for triangle in tri_vertices: + dists = [] + for vertex in triangle: + dist = color_func(vertex[0], vertex[1], vertex[2]) + dists.append(dist) + mean_dists.append(np.mean(dists)) + mean_dists = np.asarray(mean_dists) + + # Check if facecolors are already strings and can be skipped + if isinstance(mean_dists[0], str): + facecolor = mean_dists + else: + min_mean_dists = np.min(mean_dists) + max_mean_dists = np.max(mean_dists) + + if facecolor is None: + facecolor = [] + for index in range(len(mean_dists)): + color = map_face2color( + mean_dists[index], colormap, scale, min_mean_dists, max_mean_dists + ) + facecolor.append(color) + + # Make sure facecolor is a list so output is consistent across Pythons + facecolor = np.asarray(facecolor) + ii, jj, kk = simplices.T + + triangles = graph_objs.Mesh3d( + x=x, y=y, z=z, facecolor=facecolor, i=ii, j=jj, k=kk, name="" + ) + + mean_dists_are_numbers = not isinstance(mean_dists[0], str) + + if mean_dists_are_numbers and show_colorbar is True: + # make a colorscale from the colors + colorscale = clrs.make_colorscale(colormap, scale) + colorscale = clrs.convert_colorscale_to_rgb(colorscale) + + colorbar = graph_objs.Scatter3d( + x=x[:1], + y=y[:1], + z=z[:1], + mode="markers", + marker=dict( + size=0.1, + color=[min_mean_dists, max_mean_dists], + colorscale=colorscale, + showscale=True, + ), + hoverinfo="none", + showlegend=False, + ) + + # the triangle sides are not plotted + if plot_edges is False: + if mean_dists_are_numbers and show_colorbar is True: + return [triangles, colorbar] + else: + return [triangles] + + # define the lists x_edge, y_edge and z_edge, of x, y, resp z + # coordinates of edge end points for each triangle + # None separates data corresponding to two consecutive triangles + is_none = [ii is None for ii in [x_edge, y_edge, z_edge]] + if any(is_none): + if not all(is_none): + raise ValueError( + "If any (x_edge, y_edge, z_edge) is None, all must be None" + ) + else: + x_edge = [] + y_edge = [] + z_edge = [] + + # Pull indices we care about, then add a None column to separate tris + ixs_triangles = [0, 1, 2, 0] + pull_edges = tri_vertices[:, ixs_triangles, :] + x_edge_pull = np.hstack( + [pull_edges[:, :, 0], np.tile(None, [pull_edges.shape[0], 1])] + ) + y_edge_pull = np.hstack( + [pull_edges[:, :, 1], np.tile(None, [pull_edges.shape[0], 1])] + ) + z_edge_pull = np.hstack( + [pull_edges[:, :, 2], np.tile(None, [pull_edges.shape[0], 1])] + ) + + # Now unravel the edges into a 1-d vector for plotting + x_edge = np.hstack([x_edge, x_edge_pull.reshape([1, -1])[0]]) + y_edge = np.hstack([y_edge, y_edge_pull.reshape([1, -1])[0]]) + z_edge = np.hstack([z_edge, z_edge_pull.reshape([1, -1])[0]]) + + if not (len(x_edge) == len(y_edge) == len(z_edge)): + raise exceptions.PlotlyError( + "The lengths of x_edge, y_edge and z_edge are not the same." + ) + + # define the lines for plotting + lines = graph_objs.Scatter3d( + x=x_edge, + y=y_edge, + z=z_edge, + mode="lines", + line=graph_objs.scatter3d.Line(color=edges_color, width=1.5), + showlegend=False, + ) + + if mean_dists_are_numbers and show_colorbar is True: + return [triangles, lines, colorbar] + else: + return [triangles, lines] + + +def create_trisurf( + x, + y, + z, + simplices, + colormap=None, + show_colorbar=True, + scale=None, + color_func=None, + title="Trisurf Plot", + plot_edges=True, + showbackground=True, + backgroundcolor="rgb(230, 230, 230)", + gridcolor="rgb(255, 255, 255)", + zerolinecolor="rgb(255, 255, 255)", + edges_color="rgb(50, 50, 50)", + height=800, + width=800, + aspectratio=None, +): + """ + Returns figure for a triangulated surface plot + + :param (array) x: data values of x in a 1D array + :param (array) y: data values of y in a 1D array + :param (array) z: data values of z in a 1D array + :param (array) simplices: an array of shape (ntri, 3) where ntri is + the number of triangles in the triangularization. Each row of the + array contains the indicies of the verticies of each triangle + :param (str|tuple|list) colormap: either a plotly scale name, an rgb + or hex color, a color tuple or a list of colors. An rgb color is + of the form 'rgb(x, y, z)' where x, y, z belong to the interval + [0, 255] and a color tuple is a tuple of the form (a, b, c) where + a, b and c belong to [0, 1]. If colormap is a list, it must + contain the valid color types aforementioned as its members + :param (bool) show_colorbar: determines if colorbar is visible + :param (list|array) scale: sets the scale values to be used if a non- + linearly interpolated colormap is desired. If left as None, a + linear interpolation between the colors will be excecuted + :param (function|list) color_func: The parameter that determines the + coloring of the surface. Takes either a function with 3 arguments + x, y, z or a list/array of color values the same length as + simplices. If None, coloring will only depend on the z axis + :param (str) title: title of the plot + :param (bool) plot_edges: determines if the triangles on the trisurf + are visible + :param (bool) showbackground: makes background in plot visible + :param (str) backgroundcolor: color of background. Takes a string of + the form 'rgb(x,y,z)' x,y,z are between 0 and 255 inclusive + :param (str) gridcolor: color of the gridlines besides the axes. Takes + a string of the form 'rgb(x,y,z)' x,y,z are between 0 and 255 + inclusive + :param (str) zerolinecolor: color of the axes. Takes a string of the + form 'rgb(x,y,z)' x,y,z are between 0 and 255 inclusive + :param (str) edges_color: color of the edges, if plot_edges is True + :param (int|float) height: the height of the plot (in pixels) + :param (int|float) width: the width of the plot (in pixels) + :param (dict) aspectratio: a dictionary of the aspect ratio values for + the x, y and z axes. 'x', 'y' and 'z' take (int|float) values + + Example 1: Sphere + + >>> # Necessary Imports for Trisurf + >>> import numpy as np + >>> from scipy.spatial import Delaunay + + >>> from plotly.figure_factory import create_trisurf + >>> from plotly.graph_objs import graph_objs + + >>> # Make data for plot + >>> u = np.linspace(0, 2*np.pi, 20) + >>> v = np.linspace(0, np.pi, 20) + >>> u,v = np.meshgrid(u,v) + >>> u = u.flatten() + >>> v = v.flatten() + + >>> x = np.sin(v)*np.cos(u) + >>> y = np.sin(v)*np.sin(u) + >>> z = np.cos(v) + + >>> points2D = np.vstack([u,v]).T + >>> tri = Delaunay(points2D) + >>> simplices = tri.simplices + + >>> # Create a figure + >>> fig1 = create_trisurf(x=x, y=y, z=z, colormap="Rainbow", + ... simplices=simplices) + + Example 2: Torus + + >>> # Necessary Imports for Trisurf + >>> import numpy as np + >>> from scipy.spatial import Delaunay + + >>> from plotly.figure_factory import create_trisurf + >>> from plotly.graph_objs import graph_objs + + >>> # Make data for plot + >>> u = np.linspace(0, 2*np.pi, 20) + >>> v = np.linspace(0, 2*np.pi, 20) + >>> u,v = np.meshgrid(u,v) + >>> u = u.flatten() + >>> v = v.flatten() + + >>> x = (3 + (np.cos(v)))*np.cos(u) + >>> y = (3 + (np.cos(v)))*np.sin(u) + >>> z = np.sin(v) + + >>> points2D = np.vstack([u,v]).T + >>> tri = Delaunay(points2D) + >>> simplices = tri.simplices + + >>> # Create a figure + >>> fig1 = create_trisurf(x=x, y=y, z=z, colormap="Viridis", + ... simplices=simplices) + + Example 3: Mobius Band + + >>> # Necessary Imports for Trisurf + >>> import numpy as np + >>> from scipy.spatial import Delaunay + + >>> from plotly.figure_factory import create_trisurf + >>> from plotly.graph_objs import graph_objs + + >>> # Make data for plot + >>> u = np.linspace(0, 2*np.pi, 24) + >>> v = np.linspace(-1, 1, 8) + >>> u,v = np.meshgrid(u,v) + >>> u = u.flatten() + >>> v = v.flatten() + + >>> tp = 1 + 0.5*v*np.cos(u/2.) + >>> x = tp*np.cos(u) + >>> y = tp*np.sin(u) + >>> z = 0.5*v*np.sin(u/2.) + + >>> points2D = np.vstack([u,v]).T + >>> tri = Delaunay(points2D) + >>> simplices = tri.simplices + + >>> # Create a figure + >>> fig1 = create_trisurf(x=x, y=y, z=z, colormap=[(0.2, 0.4, 0.6), (1, 1, 1)], + ... simplices=simplices) + + Example 4: Using a Custom Colormap Function with Light Cone + + >>> # Necessary Imports for Trisurf + >>> import numpy as np + >>> from scipy.spatial import Delaunay + + >>> from plotly.figure_factory import create_trisurf + >>> from plotly.graph_objs import graph_objs + + >>> # Make data for plot + >>> u=np.linspace(-np.pi, np.pi, 30) + >>> v=np.linspace(-np.pi, np.pi, 30) + >>> u,v=np.meshgrid(u,v) + >>> u=u.flatten() + >>> v=v.flatten() + + >>> x = u + >>> y = u*np.cos(v) + >>> z = u*np.sin(v) + + >>> points2D = np.vstack([u,v]).T + >>> tri = Delaunay(points2D) + >>> simplices = tri.simplices + + >>> # Define distance function + >>> def dist_origin(x, y, z): + ... return np.sqrt((1.0 * x)**2 + (1.0 * y)**2 + (1.0 * z)**2) + + >>> # Create a figure + >>> fig1 = create_trisurf(x=x, y=y, z=z, + ... colormap=['#FFFFFF', '#E4FFFE', + ... '#A4F6F9', '#FF99FE', + ... '#BA52ED'], + ... scale=[0, 0.6, 0.71, 0.89, 1], + ... simplices=simplices, + ... color_func=dist_origin) + + Example 5: Enter color_func as a list of colors + + >>> # Necessary Imports for Trisurf + >>> import numpy as np + >>> from scipy.spatial import Delaunay + >>> import random + + >>> from plotly.figure_factory import create_trisurf + >>> from plotly.graph_objs import graph_objs + + >>> # Make data for plot + >>> u=np.linspace(-np.pi, np.pi, 30) + >>> v=np.linspace(-np.pi, np.pi, 30) + >>> u,v=np.meshgrid(u,v) + >>> u=u.flatten() + >>> v=v.flatten() + + >>> x = u + >>> y = u*np.cos(v) + >>> z = u*np.sin(v) + + >>> points2D = np.vstack([u,v]).T + >>> tri = Delaunay(points2D) + >>> simplices = tri.simplices + + + >>> colors = [] + >>> color_choices = ['rgb(0, 0, 0)', '#6c4774', '#d6c7dd'] + + >>> for index in range(len(simplices)): + ... colors.append(random.choice(color_choices)) + + >>> fig = create_trisurf( + ... x, y, z, simplices, + ... color_func=colors, + ... show_colorbar=True, + ... edges_color='rgb(2, 85, 180)', + ... title=' Modern Art' + ... ) + """ + if aspectratio is None: + aspectratio = {"x": 1, "y": 1, "z": 1} + + # Validate colormap + clrs.validate_colors(colormap) + colormap, scale = clrs.convert_colors_to_same_type( + colormap, colortype="tuple", return_default_colors=True, scale=scale + ) + + data1 = trisurf( + x, + y, + z, + simplices, + show_colorbar=show_colorbar, + color_func=color_func, + colormap=colormap, + scale=scale, + edges_color=edges_color, + plot_edges=plot_edges, + ) + + axis = dict( + showbackground=showbackground, + backgroundcolor=backgroundcolor, + gridcolor=gridcolor, + zerolinecolor=zerolinecolor, + ) + layout = graph_objs.Layout( + title=title, + width=width, + height=height, + scene=graph_objs.layout.Scene( + xaxis=graph_objs.layout.scene.XAxis(**axis), + yaxis=graph_objs.layout.scene.YAxis(**axis), + zaxis=graph_objs.layout.scene.ZAxis(**axis), + aspectratio=dict( + x=aspectratio["x"], y=aspectratio["y"], z=aspectratio["z"] + ), + ), + ) + + return graph_objs.Figure(data=data1, layout=layout) diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/_violin.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/_violin.py new file mode 100644 index 0000000..55924e6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/_violin.py @@ -0,0 +1,704 @@ +from numbers import Number + +from plotly import exceptions, optional_imports +import plotly.colors as clrs +from plotly.graph_objs import graph_objs +from plotly.subplots import make_subplots + +pd = optional_imports.get_module("pandas") +np = optional_imports.get_module("numpy") +scipy_stats = optional_imports.get_module("scipy.stats") + + +def calc_stats(data): + """ + Calculate statistics for use in violin plot. + """ + x = np.asarray(data, float) + vals_min = np.min(x) + vals_max = np.max(x) + q2 = np.percentile(x, 50, interpolation="linear") + q1 = np.percentile(x, 25, interpolation="lower") + q3 = np.percentile(x, 75, interpolation="higher") + iqr = q3 - q1 + whisker_dist = 1.5 * iqr + + # in order to prevent drawing whiskers outside the interval + # of data one defines the whisker positions as: + d1 = np.min(x[x >= (q1 - whisker_dist)]) + d2 = np.max(x[x <= (q3 + whisker_dist)]) + return { + "min": vals_min, + "max": vals_max, + "q1": q1, + "q2": q2, + "q3": q3, + "d1": d1, + "d2": d2, + } + + +def make_half_violin(x, y, fillcolor="#1f77b4", linecolor="rgb(0, 0, 0)"): + """ + Produces a sideways probability distribution fig violin plot. + """ + text = [ + "(pdf(y), y)=(" + "{:0.2f}".format(x[i]) + ", " + "{:0.2f}".format(y[i]) + ")" + for i in range(len(x)) + ] + + return graph_objs.Scatter( + x=x, + y=y, + mode="lines", + name="", + text=text, + fill="tonextx", + fillcolor=fillcolor, + line=graph_objs.scatter.Line(width=0.5, color=linecolor, shape="spline"), + hoverinfo="text", + opacity=0.5, + ) + + +def make_violin_rugplot(vals, pdf_max, distance, color="#1f77b4"): + """ + Returns a rugplot fig for a violin plot. + """ + return graph_objs.Scatter( + y=vals, + x=[-pdf_max - distance] * len(vals), + marker=graph_objs.scatter.Marker(color=color, symbol="line-ew-open"), + mode="markers", + name="", + showlegend=False, + hoverinfo="y", + ) + + +def make_non_outlier_interval(d1, d2): + """ + Returns the scatterplot fig of most of a violin plot. + """ + return graph_objs.Scatter( + x=[0, 0], + y=[d1, d2], + name="", + mode="lines", + line=graph_objs.scatter.Line(width=1.5, color="rgb(0,0,0)"), + ) + + +def make_quartiles(q1, q3): + """ + Makes the upper and lower quartiles for a violin plot. + """ + return graph_objs.Scatter( + x=[0, 0], + y=[q1, q3], + text=[ + "lower-quartile: " + "{:0.2f}".format(q1), + "upper-quartile: " + "{:0.2f}".format(q3), + ], + mode="lines", + line=graph_objs.scatter.Line(width=4, color="rgb(0,0,0)"), + hoverinfo="text", + ) + + +def make_median(q2): + """ + Formats the 'median' hovertext for a violin plot. + """ + return graph_objs.Scatter( + x=[0], + y=[q2], + text=["median: " + "{:0.2f}".format(q2)], + mode="markers", + marker=dict(symbol="square", color="rgb(255,255,255)"), + hoverinfo="text", + ) + + +def make_XAxis(xaxis_title, xaxis_range): + """ + Makes the x-axis for a violin plot. + """ + xaxis = graph_objs.layout.XAxis( + title=xaxis_title, + range=xaxis_range, + showgrid=False, + zeroline=False, + showline=False, + mirror=False, + ticks="", + showticklabels=False, + ) + return xaxis + + +def make_YAxis(yaxis_title): + """ + Makes the y-axis for a violin plot. + """ + yaxis = graph_objs.layout.YAxis( + title=yaxis_title, + showticklabels=True, + autorange=True, + ticklen=4, + showline=True, + zeroline=False, + showgrid=False, + mirror=False, + ) + return yaxis + + +def violinplot(vals, fillcolor="#1f77b4", rugplot=True): + """ + Refer to FigureFactory.create_violin() for docstring. + """ + vals = np.asarray(vals, float) + # summary statistics + vals_min = calc_stats(vals)["min"] + vals_max = calc_stats(vals)["max"] + q1 = calc_stats(vals)["q1"] + q2 = calc_stats(vals)["q2"] + q3 = calc_stats(vals)["q3"] + d1 = calc_stats(vals)["d1"] + d2 = calc_stats(vals)["d2"] + + # kernel density estimation of pdf + pdf = scipy_stats.gaussian_kde(vals) + # grid over the data interval + xx = np.linspace(vals_min, vals_max, 100) + # evaluate the pdf at the grid xx + yy = pdf(xx) + max_pdf = np.max(yy) + # distance from the violin plot to rugplot + distance = (2.0 * max_pdf) / 10 if rugplot else 0 + # range for x values in the plot + plot_xrange = [-max_pdf - distance - 0.1, max_pdf + 0.1] + plot_data = [ + make_half_violin(-yy, xx, fillcolor=fillcolor), + make_half_violin(yy, xx, fillcolor=fillcolor), + make_non_outlier_interval(d1, d2), + make_quartiles(q1, q3), + make_median(q2), + ] + if rugplot: + plot_data.append( + make_violin_rugplot(vals, max_pdf, distance=distance, color=fillcolor) + ) + return plot_data, plot_xrange + + +def violin_no_colorscale( + data, + data_header, + group_header, + colors, + use_colorscale, + group_stats, + rugplot, + sort, + height, + width, + title, +): + """ + Refer to FigureFactory.create_violin() for docstring. + + Returns fig for violin plot without colorscale. + + """ + + # collect all group names + group_name = [] + for name in data[group_header]: + if name not in group_name: + group_name.append(name) + if sort: + group_name.sort() + + gb = data.groupby([group_header]) + L = len(group_name) + + fig = make_subplots( + rows=1, cols=L, shared_yaxes=True, horizontal_spacing=0.025, print_grid=False + ) + color_index = 0 + for k, gr in enumerate(group_name): + vals = np.asarray(gb.get_group(gr)[data_header], float) + if color_index >= len(colors): + color_index = 0 + plot_data, plot_xrange = violinplot( + vals, fillcolor=colors[color_index], rugplot=rugplot + ) + for item in plot_data: + fig.append_trace(item, 1, k + 1) + color_index += 1 + + # add violin plot labels + fig["layout"].update( + {"xaxis{}".format(k + 1): make_XAxis(group_name[k], plot_xrange)} + ) + + # set the sharey axis style + fig["layout"].update({"yaxis{}".format(1): make_YAxis("")}) + fig["layout"].update( + title=title, + showlegend=False, + hovermode="closest", + autosize=False, + height=height, + width=width, + ) + + return fig + + +def violin_colorscale( + data, + data_header, + group_header, + colors, + use_colorscale, + group_stats, + rugplot, + sort, + height, + width, + title, +): + """ + Refer to FigureFactory.create_violin() for docstring. + + Returns fig for violin plot with colorscale. + + """ + + # collect all group names + group_name = [] + for name in data[group_header]: + if name not in group_name: + group_name.append(name) + if sort: + group_name.sort() + + # make sure all group names are keys in group_stats + for group in group_name: + if group not in group_stats: + raise exceptions.PlotlyError( + "All values/groups in the index " + "column must be represented " + "as a key in group_stats." + ) + + gb = data.groupby([group_header]) + L = len(group_name) + + fig = make_subplots( + rows=1, cols=L, shared_yaxes=True, horizontal_spacing=0.025, print_grid=False + ) + + # prepare low and high color for colorscale + lowcolor = clrs.color_parser(colors[0], clrs.unlabel_rgb) + highcolor = clrs.color_parser(colors[1], clrs.unlabel_rgb) + + # find min and max values in group_stats + group_stats_values = [] + for key in group_stats: + group_stats_values.append(group_stats[key]) + + max_value = max(group_stats_values) + min_value = min(group_stats_values) + + for k, gr in enumerate(group_name): + vals = np.asarray(gb.get_group(gr)[data_header], float) + + # find intermediate color from colorscale + intermed = (group_stats[gr] - min_value) / (max_value - min_value) + intermed_color = clrs.find_intermediate_color(lowcolor, highcolor, intermed) + + plot_data, plot_xrange = violinplot( + vals, fillcolor="rgb{}".format(intermed_color), rugplot=rugplot + ) + for item in plot_data: + fig.append_trace(item, 1, k + 1) + fig["layout"].update( + {"xaxis{}".format(k + 1): make_XAxis(group_name[k], plot_xrange)} + ) + # add colorbar to plot + trace_dummy = graph_objs.Scatter( + x=[0], + y=[0], + mode="markers", + marker=dict( + size=2, + cmin=min_value, + cmax=max_value, + colorscale=[[0, colors[0]], [1, colors[1]]], + showscale=True, + ), + showlegend=False, + ) + fig.append_trace(trace_dummy, 1, L) + + # set the sharey axis style + fig["layout"].update({"yaxis{}".format(1): make_YAxis("")}) + fig["layout"].update( + title=title, + showlegend=False, + hovermode="closest", + autosize=False, + height=height, + width=width, + ) + + return fig + + +def violin_dict( + data, + data_header, + group_header, + colors, + use_colorscale, + group_stats, + rugplot, + sort, + height, + width, + title, +): + """ + Refer to FigureFactory.create_violin() for docstring. + + Returns fig for violin plot without colorscale. + + """ + + # collect all group names + group_name = [] + for name in data[group_header]: + if name not in group_name: + group_name.append(name) + + if sort: + group_name.sort() + + # check if all group names appear in colors dict + for group in group_name: + if group not in colors: + raise exceptions.PlotlyError( + "If colors is a dictionary, all " + "the group names must appear as " + "keys in colors." + ) + + gb = data.groupby([group_header]) + L = len(group_name) + + fig = make_subplots( + rows=1, cols=L, shared_yaxes=True, horizontal_spacing=0.025, print_grid=False + ) + + for k, gr in enumerate(group_name): + vals = np.asarray(gb.get_group(gr)[data_header], float) + plot_data, plot_xrange = violinplot(vals, fillcolor=colors[gr], rugplot=rugplot) + for item in plot_data: + fig.append_trace(item, 1, k + 1) + + # add violin plot labels + fig["layout"].update( + {"xaxis{}".format(k + 1): make_XAxis(group_name[k], plot_xrange)} + ) + + # set the sharey axis style + fig["layout"].update({"yaxis{}".format(1): make_YAxis("")}) + fig["layout"].update( + title=title, + showlegend=False, + hovermode="closest", + autosize=False, + height=height, + width=width, + ) + + return fig + + +def create_violin( + data, + data_header=None, + group_header=None, + colors=None, + use_colorscale=False, + group_stats=None, + rugplot=True, + sort=False, + height=450, + width=600, + title="Violin and Rug Plot", +): + """ + **deprecated**, use instead the plotly.graph_objects trace + :class:`plotly.graph_objects.Violin`. + + :param (list|array) data: accepts either a list of numerical values, + a list of dictionaries all with identical keys and at least one + column of numeric values, or a pandas dataframe with at least one + column of numbers. + :param (str) data_header: the header of the data column to be used + from an inputted pandas dataframe. Not applicable if 'data' is + a list of numeric values. + :param (str) group_header: applicable if grouping data by a variable. + 'group_header' must be set to the name of the grouping variable. + :param (str|tuple|list|dict) colors: either a plotly scale name, + an rgb or hex color, a color tuple, a list of colors or a + dictionary. An rgb color is of the form 'rgb(x, y, z)' where + x, y and z belong to the interval [0, 255] and a color tuple is a + tuple of the form (a, b, c) where a, b and c belong to [0, 1]. + If colors is a list, it must contain valid color types as its + members. + :param (bool) use_colorscale: only applicable if grouping by another + variable. Will implement a colorscale based on the first 2 colors + of param colors. This means colors must be a list with at least 2 + colors in it (Plotly colorscales are accepted since they map to a + list of two rgb colors). Default = False + :param (dict) group_stats: a dictionary where each key is a unique + value from the group_header column in data. Each value must be a + number and will be used to color the violin plots if a colorscale + is being used. + :param (bool) rugplot: determines if a rugplot is draw on violin plot. + Default = True + :param (bool) sort: determines if violins are sorted + alphabetically (True) or by input order (False). Default = False + :param (float) height: the height of the violin plot. + :param (float) width: the width of the violin plot. + :param (str) title: the title of the violin plot. + + Example 1: Single Violin Plot + + >>> from plotly.figure_factory import create_violin + >>> import plotly.graph_objs as graph_objects + + >>> import numpy as np + >>> from scipy import stats + + >>> # create list of random values + >>> data_list = np.random.randn(100) + + >>> # create violin fig + >>> fig = create_violin(data_list, colors='#604d9e') + + >>> # plot + >>> fig.show() + + Example 2: Multiple Violin Plots with Qualitative Coloring + + >>> from plotly.figure_factory import create_violin + >>> import plotly.graph_objs as graph_objects + + >>> import numpy as np + >>> import pandas as pd + >>> from scipy import stats + + >>> # create dataframe + >>> np.random.seed(619517) + >>> Nr=250 + >>> y = np.random.randn(Nr) + >>> gr = np.random.choice(list("ABCDE"), Nr) + >>> norm_params=[(0, 1.2), (0.7, 1), (-0.5, 1.4), (0.3, 1), (0.8, 0.9)] + + >>> for i, letter in enumerate("ABCDE"): + ... y[gr == letter] *=norm_params[i][1]+ norm_params[i][0] + >>> df = pd.DataFrame(dict(Score=y, Group=gr)) + + >>> # create violin fig + >>> fig = create_violin(df, data_header='Score', group_header='Group', + ... sort=True, height=600, width=1000) + + >>> # plot + >>> fig.show() + + Example 3: Violin Plots with Colorscale + + >>> from plotly.figure_factory import create_violin + >>> import plotly.graph_objs as graph_objects + + >>> import numpy as np + >>> import pandas as pd + >>> from scipy import stats + + >>> # create dataframe + >>> np.random.seed(619517) + >>> Nr=250 + >>> y = np.random.randn(Nr) + >>> gr = np.random.choice(list("ABCDE"), Nr) + >>> norm_params=[(0, 1.2), (0.7, 1), (-0.5, 1.4), (0.3, 1), (0.8, 0.9)] + + >>> for i, letter in enumerate("ABCDE"): + ... y[gr == letter] *=norm_params[i][1]+ norm_params[i][0] + >>> df = pd.DataFrame(dict(Score=y, Group=gr)) + + >>> # define header params + >>> data_header = 'Score' + >>> group_header = 'Group' + + >>> # make groupby object with pandas + >>> group_stats = {} + >>> groupby_data = df.groupby([group_header]) + + >>> for group in "ABCDE": + ... data_from_group = groupby_data.get_group(group)[data_header] + ... # take a stat of the grouped data + ... stat = np.median(data_from_group) + ... # add to dictionary + ... group_stats[group] = stat + + >>> # create violin fig + >>> fig = create_violin(df, data_header='Score', group_header='Group', + ... height=600, width=1000, use_colorscale=True, + ... group_stats=group_stats) + + >>> # plot + >>> fig.show() + """ + + # Validate colors + if isinstance(colors, dict): + valid_colors = clrs.validate_colors_dict(colors, "rgb") + else: + valid_colors = clrs.validate_colors(colors, "rgb") + + # validate data and choose plot type + if group_header is None: + if isinstance(data, list): + if len(data) <= 0: + raise exceptions.PlotlyError( + "If data is a list, it must be " + "nonempty and contain either " + "numbers or dictionaries." + ) + + if not all(isinstance(element, Number) for element in data): + raise exceptions.PlotlyError( + "If data is a list, it must contain only numbers." + ) + + if pd and isinstance(data, pd.core.frame.DataFrame): + if data_header is None: + raise exceptions.PlotlyError( + "data_header must be the " + "column name with the " + "desired numeric data for " + "the violin plot." + ) + + data = data[data_header].values.tolist() + + # call the plotting functions + plot_data, plot_xrange = violinplot( + data, fillcolor=valid_colors[0], rugplot=rugplot + ) + + layout = graph_objs.Layout( + title=title, + autosize=False, + font=graph_objs.layout.Font(size=11), + height=height, + showlegend=False, + width=width, + xaxis=make_XAxis("", plot_xrange), + yaxis=make_YAxis(""), + hovermode="closest", + ) + layout["yaxis"].update(dict(showline=False, showticklabels=False, ticks="")) + + fig = graph_objs.Figure(data=plot_data, layout=layout) + + return fig + + else: + if not isinstance(data, pd.core.frame.DataFrame): + raise exceptions.PlotlyError( + "Error. You must use a pandas " + "DataFrame if you are using a " + "group header." + ) + + if data_header is None: + raise exceptions.PlotlyError( + "data_header must be the column " + "name with the desired numeric " + "data for the violin plot." + ) + + if use_colorscale is False: + if isinstance(valid_colors, dict): + # validate colors dict choice below + fig = violin_dict( + data, + data_header, + group_header, + valid_colors, + use_colorscale, + group_stats, + rugplot, + sort, + height, + width, + title, + ) + return fig + else: + fig = violin_no_colorscale( + data, + data_header, + group_header, + valid_colors, + use_colorscale, + group_stats, + rugplot, + sort, + height, + width, + title, + ) + return fig + else: + if isinstance(valid_colors, dict): + raise exceptions.PlotlyError( + "The colors param cannot be " + "a dictionary if you are " + "using a colorscale." + ) + + if len(valid_colors) < 2: + raise exceptions.PlotlyError( + "colors must be a list with " + "at least 2 colors. A " + "Plotly scale is allowed." + ) + + if not isinstance(group_stats, dict): + raise exceptions.PlotlyError( + "Your group_stats param must be a dictionary." + ) + + fig = violin_colorscale( + data, + data_header, + group_header, + valid_colors, + use_colorscale, + group_stats, + rugplot, + sort, + height, + width, + title, + ) + return fig diff --git a/venv/lib/python3.8/site-packages/plotly/figure_factory/utils.py b/venv/lib/python3.8/site-packages/plotly/figure_factory/utils.py new file mode 100644 index 0000000..e20a319 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/figure_factory/utils.py @@ -0,0 +1,249 @@ +from collections.abc import Sequence + +from plotly import exceptions + + +def is_sequence(obj): + return isinstance(obj, Sequence) and not isinstance(obj, str) + + +def validate_index(index_vals): + """ + Validates if a list contains all numbers or all strings + + :raises: (PlotlyError) If there are any two items in the list whose + types differ + """ + from numbers import Number + + if isinstance(index_vals[0], Number): + if not all(isinstance(item, Number) for item in index_vals): + raise exceptions.PlotlyError( + "Error in indexing column. " + "Make sure all entries of each " + "column are all numbers or " + "all strings." + ) + + elif isinstance(index_vals[0], str): + if not all(isinstance(item, str) for item in index_vals): + raise exceptions.PlotlyError( + "Error in indexing column. " + "Make sure all entries of each " + "column are all numbers or " + "all strings." + ) + + +def validate_dataframe(array): + """ + Validates all strings or numbers in each dataframe column + + :raises: (PlotlyError) If there are any two items in any list whose + types differ + """ + from numbers import Number + + for vector in array: + if isinstance(vector[0], Number): + if not all(isinstance(item, Number) for item in vector): + raise exceptions.PlotlyError( + "Error in dataframe. " + "Make sure all entries of " + "each column are either " + "numbers or strings." + ) + elif isinstance(vector[0], str): + if not all(isinstance(item, str) for item in vector): + raise exceptions.PlotlyError( + "Error in dataframe. " + "Make sure all entries of " + "each column are either " + "numbers or strings." + ) + + +def validate_equal_length(*args): + """ + Validates that data lists or ndarrays are the same length. + + :raises: (PlotlyError) If any data lists are not the same length. + """ + length = len(args[0]) + if any(len(lst) != length for lst in args): + raise exceptions.PlotlyError( + "Oops! Your data lists or ndarrays should be the same length." + ) + + +def validate_positive_scalars(**kwargs): + """ + Validates that all values given in key/val pairs are positive. + + Accepts kwargs to improve Exception messages. + + :raises: (PlotlyError) If any value is < 0 or raises. + """ + for key, val in kwargs.items(): + try: + if val <= 0: + raise ValueError("{} must be > 0, got {}".format(key, val)) + except TypeError: + raise exceptions.PlotlyError("{} must be a number, got {}".format(key, val)) + + +def flatten(array): + """ + Uses list comprehension to flatten array + + :param (array): An iterable to flatten + :raises (PlotlyError): If iterable is not nested. + :rtype (list): The flattened list. + """ + try: + return [item for sublist in array for item in sublist] + except TypeError: + raise exceptions.PlotlyError( + "Your data array could not be " + "flattened! Make sure your data is " + "entered as lists or ndarrays!" + ) + + +def endpts_to_intervals(endpts): + """ + Returns a list of intervals for categorical colormaps + + Accepts a list or tuple of sequentially increasing numbers and returns + a list representation of the mathematical intervals with these numbers + as endpoints. For example, [1, 6] returns [[-inf, 1], [1, 6], [6, inf]] + + :raises: (PlotlyError) If input is not a list or tuple + :raises: (PlotlyError) If the input contains a string + :raises: (PlotlyError) If any number does not increase after the + previous one in the sequence + """ + length = len(endpts) + # Check if endpts is a list or tuple + if not (isinstance(endpts, (tuple)) or isinstance(endpts, (list))): + raise exceptions.PlotlyError( + "The intervals_endpts argument must " + "be a list or tuple of a sequence " + "of increasing numbers." + ) + # Check if endpts contains only numbers + for item in endpts: + if isinstance(item, str): + raise exceptions.PlotlyError( + "The intervals_endpts argument " + "must be a list or tuple of a " + "sequence of increasing " + "numbers." + ) + # Check if numbers in endpts are increasing + for k in range(length - 1): + if endpts[k] >= endpts[k + 1]: + raise exceptions.PlotlyError( + "The intervals_endpts argument " + "must be a list or tuple of a " + "sequence of increasing " + "numbers." + ) + else: + intervals = [] + # add -inf to intervals + intervals.append([float("-inf"), endpts[0]]) + for k in range(length - 1): + interval = [] + interval.append(endpts[k]) + interval.append(endpts[k + 1]) + intervals.append(interval) + # add +inf to intervals + intervals.append([endpts[length - 1], float("inf")]) + return intervals + + +def annotation_dict_for_label( + text, + lane, + num_of_lanes, + subplot_spacing, + row_col="col", + flipped=True, + right_side=True, + text_color="#0f0f0f", +): + """ + Returns annotation dict for label of n labels of a 1xn or nx1 subplot. + + :param (str) text: the text for a label. + :param (int) lane: the label number for text. From 1 to n inclusive. + :param (int) num_of_lanes: the number 'n' of rows or columns in subplot. + :param (float) subplot_spacing: the value for the horizontal_spacing and + vertical_spacing params in your plotly.tools.make_subplots() call. + :param (str) row_col: choose whether labels are placed along rows or + columns. + :param (bool) flipped: flips text by 90 degrees. Text is printed + horizontally if set to True and row_col='row', or if False and + row_col='col'. + :param (bool) right_side: only applicable if row_col is set to 'row'. + :param (str) text_color: color of the text. + """ + temp = (1 - (num_of_lanes - 1) * subplot_spacing) / (num_of_lanes) + if not flipped: + xanchor = "center" + yanchor = "middle" + if row_col == "col": + x = (lane - 1) * (temp + subplot_spacing) + 0.5 * temp + y = 1.03 + textangle = 0 + elif row_col == "row": + y = (lane - 1) * (temp + subplot_spacing) + 0.5 * temp + x = 1.03 + textangle = 90 + else: + if row_col == "col": + xanchor = "center" + yanchor = "bottom" + x = (lane - 1) * (temp + subplot_spacing) + 0.5 * temp + y = 1.0 + textangle = 270 + elif row_col == "row": + yanchor = "middle" + y = (lane - 1) * (temp + subplot_spacing) + 0.5 * temp + if right_side: + x = 1.0 + xanchor = "left" + else: + x = -0.01 + xanchor = "right" + textangle = 0 + + annotation_dict = dict( + textangle=textangle, + xanchor=xanchor, + yanchor=yanchor, + x=x, + y=y, + showarrow=False, + xref="paper", + yref="paper", + text=text, + font=dict(size=13, color=text_color), + ) + return annotation_dict + + +def list_of_options(iterable, conj="and", period=True): + """ + Returns an English listing of objects seperated by commas ',' + + For example, ['foo', 'bar', 'baz'] becomes 'foo, bar and baz' + if the conjunction 'and' is selected. + """ + if len(iterable) < 2: + raise exceptions.PlotlyError( + "Your list or tuple must contain at least 2 items." + ) + template = (len(iterable) - 2) * "{}, " + "{} " + conj + " {}" + period * "." + return template.format(*iterable) diff --git a/venv/lib/python3.8/site-packages/plotly/files.py b/venv/lib/python3.8/site-packages/plotly/files.py new file mode 100644 index 0000000..74394db --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/files.py @@ -0,0 +1 @@ +from _plotly_utils.files import PLOTLY_DIR, ensure_writable_plotly_dir # noqa: F401 diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objects/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objects/__init__.py new file mode 100644 index 0000000..ab87744 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objects/__init__.py @@ -0,0 +1,306 @@ +# ruff: noqa: F401 +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ..graph_objs import Waterfall + from ..graph_objs import Volume + from ..graph_objs import Violin + from ..graph_objs import Treemap + from ..graph_objs import Table + from ..graph_objs import Surface + from ..graph_objs import Sunburst + from ..graph_objs import Streamtube + from ..graph_objs import Splom + from ..graph_objs import Scatterternary + from ..graph_objs import Scattersmith + from ..graph_objs import Scatterpolargl + from ..graph_objs import Scatterpolar + from ..graph_objs import Scattermapbox + from ..graph_objs import Scattermap + from ..graph_objs import Scattergl + from ..graph_objs import Scattergeo + from ..graph_objs import Scattercarpet + from ..graph_objs import Scatter3d + from ..graph_objs import Scatter + from ..graph_objs import Sankey + from ..graph_objs import Pie + from ..graph_objs import Parcoords + from ..graph_objs import Parcats + from ..graph_objs import Ohlc + from ..graph_objs import Mesh3d + from ..graph_objs import Isosurface + from ..graph_objs import Indicator + from ..graph_objs import Image + from ..graph_objs import Icicle + from ..graph_objs import Histogram2dContour + from ..graph_objs import Histogram2d + from ..graph_objs import Histogram + from ..graph_objs import Heatmap + from ..graph_objs import Funnelarea + from ..graph_objs import Funnel + from ..graph_objs import Densitymapbox + from ..graph_objs import Densitymap + from ..graph_objs import Contourcarpet + from ..graph_objs import Contour + from ..graph_objs import Cone + from ..graph_objs import Choroplethmapbox + from ..graph_objs import Choroplethmap + from ..graph_objs import Choropleth + from ..graph_objs import Carpet + from ..graph_objs import Candlestick + from ..graph_objs import Box + from ..graph_objs import Barpolar + from ..graph_objs import Bar + from ..graph_objs import Layout + from ..graph_objs import Frame + from ..graph_objs import Figure + from ..graph_objs import Data + from ..graph_objs import Annotations + from ..graph_objs import Frames + from ..graph_objs import AngularAxis + from ..graph_objs import Annotation + from ..graph_objs import ColorBar + from ..graph_objs import Contours + from ..graph_objs import ErrorX + from ..graph_objs import ErrorY + from ..graph_objs import ErrorZ + from ..graph_objs import Font + from ..graph_objs import Legend + from ..graph_objs import Line + from ..graph_objs import Margin + from ..graph_objs import Marker + from ..graph_objs import RadialAxis + from ..graph_objs import Scene + from ..graph_objs import Stream + from ..graph_objs import XAxis + from ..graph_objs import YAxis + from ..graph_objs import ZAxis + from ..graph_objs import XBins + from ..graph_objs import YBins + from ..graph_objs import Trace + from ..graph_objs import Histogram2dcontour + from ..graph_objs import waterfall + from ..graph_objs import volume + from ..graph_objs import violin + from ..graph_objs import treemap + from ..graph_objs import table + from ..graph_objs import surface + from ..graph_objs import sunburst + from ..graph_objs import streamtube + from ..graph_objs import splom + from ..graph_objs import scatterternary + from ..graph_objs import scattersmith + from ..graph_objs import scatterpolargl + from ..graph_objs import scatterpolar + from ..graph_objs import scattermapbox + from ..graph_objs import scattermap + from ..graph_objs import scattergl + from ..graph_objs import scattergeo + from ..graph_objs import scattercarpet + from ..graph_objs import scatter3d + from ..graph_objs import scatter + from ..graph_objs import sankey + from ..graph_objs import pie + from ..graph_objs import parcoords + from ..graph_objs import parcats + from ..graph_objs import ohlc + from ..graph_objs import mesh3d + from ..graph_objs import isosurface + from ..graph_objs import indicator + from ..graph_objs import image + from ..graph_objs import icicle + from ..graph_objs import histogram2dcontour + from ..graph_objs import histogram2d + from ..graph_objs import histogram + from ..graph_objs import heatmap + from ..graph_objs import funnelarea + from ..graph_objs import funnel + from ..graph_objs import densitymapbox + from ..graph_objs import densitymap + from ..graph_objs import contourcarpet + from ..graph_objs import contour + from ..graph_objs import cone + from ..graph_objs import choroplethmapbox + from ..graph_objs import choroplethmap + from ..graph_objs import choropleth + from ..graph_objs import carpet + from ..graph_objs import candlestick + from ..graph_objs import box + from ..graph_objs import barpolar + from ..graph_objs import bar + from ..graph_objs import layout +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + "..graph_objs.waterfall", + "..graph_objs.volume", + "..graph_objs.violin", + "..graph_objs.treemap", + "..graph_objs.table", + "..graph_objs.surface", + "..graph_objs.sunburst", + "..graph_objs.streamtube", + "..graph_objs.splom", + "..graph_objs.scatterternary", + "..graph_objs.scattersmith", + "..graph_objs.scatterpolargl", + "..graph_objs.scatterpolar", + "..graph_objs.scattermapbox", + "..graph_objs.scattermap", + "..graph_objs.scattergl", + "..graph_objs.scattergeo", + "..graph_objs.scattercarpet", + "..graph_objs.scatter3d", + "..graph_objs.scatter", + "..graph_objs.sankey", + "..graph_objs.pie", + "..graph_objs.parcoords", + "..graph_objs.parcats", + "..graph_objs.ohlc", + "..graph_objs.mesh3d", + "..graph_objs.isosurface", + "..graph_objs.indicator", + "..graph_objs.image", + "..graph_objs.icicle", + "..graph_objs.histogram2dcontour", + "..graph_objs.histogram2d", + "..graph_objs.histogram", + "..graph_objs.heatmap", + "..graph_objs.funnelarea", + "..graph_objs.funnel", + "..graph_objs.densitymapbox", + "..graph_objs.densitymap", + "..graph_objs.contourcarpet", + "..graph_objs.contour", + "..graph_objs.cone", + "..graph_objs.choroplethmapbox", + "..graph_objs.choroplethmap", + "..graph_objs.choropleth", + "..graph_objs.carpet", + "..graph_objs.candlestick", + "..graph_objs.box", + "..graph_objs.barpolar", + "..graph_objs.bar", + "..graph_objs.layout", + ], + [ + "..graph_objs.Waterfall", + "..graph_objs.Volume", + "..graph_objs.Violin", + "..graph_objs.Treemap", + "..graph_objs.Table", + "..graph_objs.Surface", + "..graph_objs.Sunburst", + "..graph_objs.Streamtube", + "..graph_objs.Splom", + "..graph_objs.Scatterternary", + "..graph_objs.Scattersmith", + "..graph_objs.Scatterpolargl", + "..graph_objs.Scatterpolar", + "..graph_objs.Scattermapbox", + "..graph_objs.Scattermap", + "..graph_objs.Scattergl", + "..graph_objs.Scattergeo", + "..graph_objs.Scattercarpet", + "..graph_objs.Scatter3d", + "..graph_objs.Scatter", + "..graph_objs.Sankey", + "..graph_objs.Pie", + "..graph_objs.Parcoords", + "..graph_objs.Parcats", + "..graph_objs.Ohlc", + "..graph_objs.Mesh3d", + "..graph_objs.Isosurface", + "..graph_objs.Indicator", + "..graph_objs.Image", + "..graph_objs.Icicle", + "..graph_objs.Histogram2dContour", + "..graph_objs.Histogram2d", + "..graph_objs.Histogram", + "..graph_objs.Heatmap", + "..graph_objs.Funnelarea", + "..graph_objs.Funnel", + "..graph_objs.Densitymapbox", + "..graph_objs.Densitymap", + "..graph_objs.Contourcarpet", + "..graph_objs.Contour", + "..graph_objs.Cone", + "..graph_objs.Choroplethmapbox", + "..graph_objs.Choroplethmap", + "..graph_objs.Choropleth", + "..graph_objs.Carpet", + "..graph_objs.Candlestick", + "..graph_objs.Box", + "..graph_objs.Barpolar", + "..graph_objs.Bar", + "..graph_objs.Layout", + "..graph_objs.Frame", + "..graph_objs.Figure", + "..graph_objs.Data", + "..graph_objs.Annotations", + "..graph_objs.Frames", + "..graph_objs.AngularAxis", + "..graph_objs.Annotation", + "..graph_objs.ColorBar", + "..graph_objs.Contours", + "..graph_objs.ErrorX", + "..graph_objs.ErrorY", + "..graph_objs.ErrorZ", + "..graph_objs.Font", + "..graph_objs.Legend", + "..graph_objs.Line", + "..graph_objs.Margin", + "..graph_objs.Marker", + "..graph_objs.RadialAxis", + "..graph_objs.Scene", + "..graph_objs.Stream", + "..graph_objs.XAxis", + "..graph_objs.YAxis", + "..graph_objs.ZAxis", + "..graph_objs.XBins", + "..graph_objs.YBins", + "..graph_objs.Trace", + "..graph_objs.Histogram2dcontour", + ], + ) + + +if sys.version_info < (3, 7) or TYPE_CHECKING: + try: + import ipywidgets as _ipywidgets + from packaging.version import Version as _Version + + if _Version(_ipywidgets.__version__) >= _Version("7.0.0"): + from ..graph_objs._figurewidget import FigureWidget + else: + raise ImportError() + except Exception: + from ..missing_anywidget import FigureWidget +else: + __all__.append("FigureWidget") + orig_getattr = __getattr__ + + def __getattr__(import_name): + if import_name == "FigureWidget": + try: + import ipywidgets + from packaging.version import Version + + if Version(ipywidgets.__version__) >= Version("7.0.0"): + from ..graph_objs._figurewidget import FigureWidget + + return FigureWidget + else: + raise ImportError() + except Exception: + from ..missing_anywidget import FigureWidget + + return FigureWidget + else: + raise ImportError() + + return orig_getattr(import_name) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/__init__.py new file mode 100644 index 0000000..57a7317 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/__init__.py @@ -0,0 +1,305 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._bar import Bar + from ._barpolar import Barpolar + from ._box import Box + from ._candlestick import Candlestick + from ._carpet import Carpet + from ._choropleth import Choropleth + from ._choroplethmap import Choroplethmap + from ._choroplethmapbox import Choroplethmapbox + from ._cone import Cone + from ._contour import Contour + from ._contourcarpet import Contourcarpet + from ._densitymap import Densitymap + from ._densitymapbox import Densitymapbox + from ._deprecations import AngularAxis + from ._deprecations import Annotation + from ._deprecations import Annotations + from ._deprecations import ColorBar + from ._deprecations import Contours + from ._deprecations import Data + from ._deprecations import ErrorX + from ._deprecations import ErrorY + from ._deprecations import ErrorZ + from ._deprecations import Font + from ._deprecations import Frames + from ._deprecations import Histogram2dcontour + from ._deprecations import Legend + from ._deprecations import Line + from ._deprecations import Margin + from ._deprecations import Marker + from ._deprecations import RadialAxis + from ._deprecations import Scene + from ._deprecations import Stream + from ._deprecations import Trace + from ._deprecations import XAxis + from ._deprecations import XBins + from ._deprecations import YAxis + from ._deprecations import YBins + from ._deprecations import ZAxis + from ._figure import Figure + from ._frame import Frame + from ._funnel import Funnel + from ._funnelarea import Funnelarea + from ._heatmap import Heatmap + from ._histogram import Histogram + from ._histogram2d import Histogram2d + from ._histogram2dcontour import Histogram2dContour + from ._icicle import Icicle + from ._image import Image + from ._indicator import Indicator + from ._isosurface import Isosurface + from ._layout import Layout + from ._mesh3d import Mesh3d + from ._ohlc import Ohlc + from ._parcats import Parcats + from ._parcoords import Parcoords + from ._pie import Pie + from ._sankey import Sankey + from ._scatter import Scatter + from ._scatter3d import Scatter3d + from ._scattercarpet import Scattercarpet + from ._scattergeo import Scattergeo + from ._scattergl import Scattergl + from ._scattermap import Scattermap + from ._scattermapbox import Scattermapbox + from ._scatterpolar import Scatterpolar + from ._scatterpolargl import Scatterpolargl + from ._scattersmith import Scattersmith + from ._scatterternary import Scatterternary + from ._splom import Splom + from ._streamtube import Streamtube + from ._sunburst import Sunburst + from ._surface import Surface + from ._table import Table + from ._treemap import Treemap + from ._violin import Violin + from ._volume import Volume + from ._waterfall import Waterfall + from . import bar + from . import barpolar + from . import box + from . import candlestick + from . import carpet + from . import choropleth + from . import choroplethmap + from . import choroplethmapbox + from . import cone + from . import contour + from . import contourcarpet + from . import densitymap + from . import densitymapbox + from . import funnel + from . import funnelarea + from . import heatmap + from . import histogram + from . import histogram2d + from . import histogram2dcontour + from . import icicle + from . import image + from . import indicator + from . import isosurface + from . import layout + from . import mesh3d + from . import ohlc + from . import parcats + from . import parcoords + from . import pie + from . import sankey + from . import scatter + from . import scatter3d + from . import scattercarpet + from . import scattergeo + from . import scattergl + from . import scattermap + from . import scattermapbox + from . import scatterpolar + from . import scatterpolargl + from . import scattersmith + from . import scatterternary + from . import splom + from . import streamtube + from . import sunburst + from . import surface + from . import table + from . import treemap + from . import violin + from . import volume + from . import waterfall +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".bar", + ".barpolar", + ".box", + ".candlestick", + ".carpet", + ".choropleth", + ".choroplethmap", + ".choroplethmapbox", + ".cone", + ".contour", + ".contourcarpet", + ".densitymap", + ".densitymapbox", + ".funnel", + ".funnelarea", + ".heatmap", + ".histogram", + ".histogram2d", + ".histogram2dcontour", + ".icicle", + ".image", + ".indicator", + ".isosurface", + ".layout", + ".mesh3d", + ".ohlc", + ".parcats", + ".parcoords", + ".pie", + ".sankey", + ".scatter", + ".scatter3d", + ".scattercarpet", + ".scattergeo", + ".scattergl", + ".scattermap", + ".scattermapbox", + ".scatterpolar", + ".scatterpolargl", + ".scattersmith", + ".scatterternary", + ".splom", + ".streamtube", + ".sunburst", + ".surface", + ".table", + ".treemap", + ".violin", + ".volume", + ".waterfall", + ], + [ + "._bar.Bar", + "._barpolar.Barpolar", + "._box.Box", + "._candlestick.Candlestick", + "._carpet.Carpet", + "._choropleth.Choropleth", + "._choroplethmap.Choroplethmap", + "._choroplethmapbox.Choroplethmapbox", + "._cone.Cone", + "._contour.Contour", + "._contourcarpet.Contourcarpet", + "._densitymap.Densitymap", + "._densitymapbox.Densitymapbox", + "._deprecations.AngularAxis", + "._deprecations.Annotation", + "._deprecations.Annotations", + "._deprecations.ColorBar", + "._deprecations.Contours", + "._deprecations.Data", + "._deprecations.ErrorX", + "._deprecations.ErrorY", + "._deprecations.ErrorZ", + "._deprecations.Font", + "._deprecations.Frames", + "._deprecations.Histogram2dcontour", + "._deprecations.Legend", + "._deprecations.Line", + "._deprecations.Margin", + "._deprecations.Marker", + "._deprecations.RadialAxis", + "._deprecations.Scene", + "._deprecations.Stream", + "._deprecations.Trace", + "._deprecations.XAxis", + "._deprecations.XBins", + "._deprecations.YAxis", + "._deprecations.YBins", + "._deprecations.ZAxis", + "._figure.Figure", + "._frame.Frame", + "._funnel.Funnel", + "._funnelarea.Funnelarea", + "._heatmap.Heatmap", + "._histogram.Histogram", + "._histogram2d.Histogram2d", + "._histogram2dcontour.Histogram2dContour", + "._icicle.Icicle", + "._image.Image", + "._indicator.Indicator", + "._isosurface.Isosurface", + "._layout.Layout", + "._mesh3d.Mesh3d", + "._ohlc.Ohlc", + "._parcats.Parcats", + "._parcoords.Parcoords", + "._pie.Pie", + "._sankey.Sankey", + "._scatter.Scatter", + "._scatter3d.Scatter3d", + "._scattercarpet.Scattercarpet", + "._scattergeo.Scattergeo", + "._scattergl.Scattergl", + "._scattermap.Scattermap", + "._scattermapbox.Scattermapbox", + "._scatterpolar.Scatterpolar", + "._scatterpolargl.Scatterpolargl", + "._scattersmith.Scattersmith", + "._scatterternary.Scatterternary", + "._splom.Splom", + "._streamtube.Streamtube", + "._sunburst.Sunburst", + "._surface.Surface", + "._table.Table", + "._treemap.Treemap", + "._violin.Violin", + "._volume.Volume", + "._waterfall.Waterfall", + ], + ) + + +if sys.version_info < (3, 7) or TYPE_CHECKING: + try: + import ipywidgets as _ipywidgets + from packaging.version import Version as _Version + + if _Version(_ipywidgets.__version__) >= _Version("7.0.0"): + from ..graph_objs._figurewidget import FigureWidget + else: + raise ImportError() + except Exception: + from ..missing_anywidget import FigureWidget +else: + __all__.append("FigureWidget") + orig_getattr = __getattr__ + + def __getattr__(import_name): + if import_name == "FigureWidget": + try: + import ipywidgets + from packaging.version import Version + + if Version(ipywidgets.__version__) >= Version("7.0.0"): + from ..graph_objs._figurewidget import FigureWidget + + return FigureWidget + else: + raise ImportError() + except Exception: + from ..missing_anywidget import FigureWidget + + return FigureWidget + else: + raise ImportError() + + return orig_getattr(import_name) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_bar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_bar.py new file mode 100644 index 0000000..0e12061 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_bar.py @@ -0,0 +1,2598 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Bar(_BaseTraceType): + _parent_path_str = "" + _path_str = "bar" + _valid_props = { + "alignmentgroup", + "base", + "basesrc", + "cliponaxis", + "constraintext", + "customdata", + "customdatasrc", + "dx", + "dy", + "error_x", + "error_y", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextanchor", + "insidetextfont", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "offset", + "offsetgroup", + "offsetsrc", + "opacity", + "orientation", + "outsidetextfont", + "selected", + "selectedpoints", + "showlegend", + "stream", + "text", + "textangle", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "width", + "widthsrc", + "x", + "x0", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "y", + "y0", + "yaxis", + "ycalendar", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def base(self): + """ + 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. + + The 'base' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["base"] + + @base.setter + def base(self, val): + self["base"] = val + + @property + def basesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `base`. + + The 'basesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["basesrc"] + + @basesrc.setter + def basesrc(self, val): + self["basesrc"] = val + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def constraintext(self): + """ + Constrain the size of text inside or outside a bar to be no + larger than the bar itself. + + The 'constraintext' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'both', 'none'] + + Returns + ------- + Any + """ + return self["constraintext"] + + @constraintext.setter + def constraintext(self, val): + self["constraintext"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def error_x(self): + """ + The 'error_x' property is an instance of ErrorX + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.ErrorX` + - A dict of string/value properties that will be passed + to the ErrorX constructor + + Returns + ------- + plotly.graph_objs.bar.ErrorX + """ + return self["error_x"] + + @error_x.setter + def error_x(self, val): + self["error_x"] = val + + @property + def error_y(self): + """ + The 'error_y' property is an instance of ErrorY + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.ErrorY` + - A dict of string/value properties that will be passed + to the ErrorY constructor + + Returns + ------- + plotly.graph_objs.bar.ErrorY + """ + return self["error_y"] + + @error_y.setter + def error_y(self, val): + self["error_y"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.bar.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextanchor(self): + """ + Determines if texts are kept at center or start/end points in + `textposition` "inside" mode. + + The 'insidetextanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['end', 'middle', 'start'] + + Returns + ------- + Any + """ + return self["insidetextanchor"] + + @insidetextanchor.setter + def insidetextanchor(self, val): + self["insidetextanchor"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `text` lying inside the bar. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.bar.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.bar.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.bar.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def offset(self): + """ + 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. + + The 'offset' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def offsetsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `offset`. + + The 'offsetsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["offsetsrc"] + + @offsetsrc.setter + def offsetsrc(self, val): + self["offsetsrc"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + Sets the orientation of the bars. With "v" ("h"), the value of + the each bar spans along the vertical (horizontal). + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outsidetextfont(self): + """ + Sets the font used for `text` lying outside the bar. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.bar.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.bar.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.bar.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + 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. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def textfont(self): + """ + Sets the font used for `text`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.bar.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + 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. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'auto', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.bar.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the bar width (in position axis units). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.bar.ErrorX` instance or + dict with compatible properties + error_y + :class:`plotly.graph_objects.bar.ErrorY` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.bar.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.bar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.bar.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.bar.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.bar.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.bar.Unselected` instance + or dict with compatible properties + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + base=None, + basesrc=None, + cliponaxis=None, + constraintext=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + offsetsrc=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + widthsrc=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Bar object + + The data visualized by the span of the bars is set in `y` if + `orientation` is set to "v" (the default) and the labels are + set in `x`. By setting `orientation` to "h", the roles are + interchanged. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Bar` + alignmentgroup + 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. + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.bar.ErrorX` instance or + dict with compatible properties + error_y + :class:`plotly.graph_objects.bar.ErrorY` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.bar.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.bar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.bar.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.bar.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.bar.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.bar.Unselected` instance + or dict with compatible properties + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Bar + """ + super().__init__("bar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Bar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Bar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("base", arg, base) + self._set_property("basesrc", arg, basesrc) + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("constraintext", arg, constraintext) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("error_x", arg, error_x) + self._set_property("error_y", arg, error_y) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextanchor", arg, insidetextanchor) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("offset", arg, offset) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("offsetsrc", arg, offsetsrc) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "bar" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_barpolar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_barpolar.py new file mode 100644 index 0000000..a45eb7b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_barpolar.py @@ -0,0 +1,1606 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Barpolar(_BaseTraceType): + _parent_path_str = "" + _path_str = "barpolar" + _valid_props = { + "base", + "basesrc", + "customdata", + "customdatasrc", + "dr", + "dtheta", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "offset", + "offsetsrc", + "opacity", + "r", + "r0", + "rsrc", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "text", + "textsrc", + "theta", + "theta0", + "thetasrc", + "thetaunit", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "width", + "widthsrc", + } + + @property + def base(self): + """ + 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. + + The 'base' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["base"] + + @base.setter + def base(self, val): + self["base"] = val + + @property + def basesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `base`. + + The 'basesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["basesrc"] + + @basesrc.setter + def basesrc(self, val): + self["basesrc"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dr(self): + """ + Sets the r coordinate step. + + The 'dr' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dr"] + + @dr.setter + def dr(self, val): + self["dr"] = val + + @property + def dtheta(self): + """ + Sets the theta coordinate step. By default, the `dtheta` step + equals the subplot's period divided by the length of the `r` + coordinates. + + The 'dtheta' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dtheta"] + + @dtheta.setter + def dtheta(self, val): + self["dtheta"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['r', 'theta', 'text', 'name'] joined with '+' characters + (e.g. 'r+theta') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.barpolar.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.barpolar.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.barpolar.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def offset(self): + """ + Shifts the angular position where the bar is drawn (in + "thetatunit" units). + + The 'offset' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def offsetsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `offset`. + + The 'offsetsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["offsetsrc"] + + @offsetsrc.setter + def offsetsrc(self, val): + self["offsetsrc"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def r(self): + """ + Sets the radial coordinates + + The 'r' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def r0(self): + """ + Alternate to `r`. Builds a linear space of r coordinates. Use + with `dr` where `r0` is the starting coordinate and `dr` the + step. + + The 'r0' property accepts values of any type + + Returns + ------- + Any + """ + return self["r0"] + + @r0.setter + def r0(self, val): + self["r0"] = val + + @property + def rsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `r`. + + The 'rsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["rsrc"] + + @rsrc.setter + def rsrc(self, val): + self["rsrc"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.barpolar.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.barpolar.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'polar', that may be specified as the string 'polar' + optionally followed by an integer >= 1 + (e.g. 'polar', 'polar1', 'polar2', 'polar3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def theta(self): + """ + Sets the angular coordinates + + The 'theta' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["theta"] + + @theta.setter + def theta(self, val): + self["theta"] = val + + @property + def theta0(self): + """ + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the starting + coordinate and `dtheta` the step. + + The 'theta0' property accepts values of any type + + Returns + ------- + Any + """ + return self["theta0"] + + @theta0.setter + def theta0(self, val): + self["theta0"] = val + + @property + def thetasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `theta`. + + The 'thetasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["thetasrc"] + + @thetasrc.setter + def thetasrc(self, val): + self["thetasrc"] = val + + @property + def thetaunit(self): + """ + Sets the unit of input "theta" values. Has an effect only when + on "linear" angular axes. + + The 'thetaunit' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radians', 'degrees', 'gradians'] + + Returns + ------- + Any + """ + return self["thetaunit"] + + @thetaunit.setter + def thetaunit(self, val): + self["thetaunit"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.barpolar.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the bar angular width (in "thetaunit" units). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.barpolar.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.barpolar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.barpolar.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + Shifts the angular position where the bar is drawn (in + "thetatunit" units). + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.barpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.barpolar.Stream` instance + or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.barpolar.Unselected` + instance or dict with compatible properties + visible + 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). + width + Sets the bar angular width (in "thetaunit" units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + base=None, + basesrc=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetsrc=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Barpolar object + + The data visualized by the radial span of the bars is set in + `r` + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Barpolar` + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.barpolar.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.barpolar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.barpolar.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + Shifts the angular position where the bar is drawn (in + "thetatunit" units). + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.barpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.barpolar.Stream` instance + or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.barpolar.Unselected` + instance or dict with compatible properties + visible + 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). + width + Sets the bar angular width (in "thetaunit" units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Barpolar + """ + super().__init__("barpolar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Barpolar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Barpolar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("base", arg, base) + self._set_property("basesrc", arg, basesrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dr", arg, dr) + self._set_property("dtheta", arg, dtheta) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("offset", arg, offset) + self._set_property("offsetsrc", arg, offsetsrc) + self._set_property("opacity", arg, opacity) + self._set_property("r", arg, r) + self._set_property("r0", arg, r0) + self._set_property("rsrc", arg, rsrc) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("theta", arg, theta) + self._set_property("theta0", arg, theta0) + self._set_property("thetasrc", arg, thetasrc) + self._set_property("thetaunit", arg, thetaunit) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + + self._props["type"] = "barpolar" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_box.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_box.py new file mode 100644 index 0000000..34ef561 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_box.py @@ -0,0 +1,3050 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Box(_BaseTraceType): + _parent_path_str = "" + _path_str = "box" + _valid_props = { + "alignmentgroup", + "boxmean", + "boxpoints", + "customdata", + "customdatasrc", + "dx", + "dy", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "jitter", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "lowerfence", + "lowerfencesrc", + "marker", + "mean", + "meansrc", + "median", + "mediansrc", + "meta", + "metasrc", + "name", + "notched", + "notchspan", + "notchspansrc", + "notchwidth", + "offsetgroup", + "opacity", + "orientation", + "pointpos", + "q1", + "q1src", + "q3", + "q3src", + "quartilemethod", + "sd", + "sdmultiple", + "sdsrc", + "selected", + "selectedpoints", + "showlegend", + "showwhiskers", + "sizemode", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "unselected", + "upperfence", + "upperfencesrc", + "visible", + "whiskerwidth", + "width", + "x", + "x0", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "y", + "y0", + "yaxis", + "ycalendar", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def boxmean(self): + """ + 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. + + The 'boxmean' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, 'sd', False] + + Returns + ------- + Any + """ + return self["boxmean"] + + @boxmean.setter + def boxmean(self, val): + self["boxmean"] = val + + @property + def boxpoints(self): + """ + 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". + + The 'boxpoints' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'outliers', 'suspectedoutliers', False] + + Returns + ------- + Any + """ + return self["boxpoints"] + + @boxpoints.setter + def boxpoints(self, val): + self["boxpoints"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step for multi-box traces set using + q1/median/q3. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step for multi-box traces set using + q1/median/q3. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.box.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + Do the hover effects highlight individual boxes or sample + points or both? + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['boxes', 'points'] joined with '+' characters + (e.g. 'boxes+points') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def jitter(self): + """ + 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). + + The 'jitter' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["jitter"] + + @jitter.setter + def jitter(self, val): + self["jitter"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.box.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.box.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def lowerfence(self): + """ + 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. + + The 'lowerfence' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lowerfence"] + + @lowerfence.setter + def lowerfence(self, val): + self["lowerfence"] = val + + @property + def lowerfencesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lowerfence`. + + The 'lowerfencesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lowerfencesrc"] + + @lowerfencesrc.setter + def lowerfencesrc(self, val): + self["lowerfencesrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.box.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def mean(self): + """ + 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. + + The 'mean' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["mean"] + + @mean.setter + def mean(self, val): + self["mean"] = val + + @property + def meansrc(self): + """ + Sets the source reference on Chart Studio Cloud for `mean`. + + The 'meansrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["meansrc"] + + @meansrc.setter + def meansrc(self, val): + self["meansrc"] = val + + @property + def median(self): + """ + Sets the median values. There should be as many items as the + number of boxes desired. + + The 'median' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["median"] + + @median.setter + def median(self, val): + self["median"] = val + + @property + def mediansrc(self): + """ + Sets the source reference on Chart Studio Cloud for `median`. + + The 'mediansrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["mediansrc"] + + @mediansrc.setter + def mediansrc(self, val): + self["mediansrc"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + 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 + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def notched(self): + """ + 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. + + The 'notched' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["notched"] + + @notched.setter + def notched(self, val): + self["notched"] = val + + @property + def notchspan(self): + """ + 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. + + The 'notchspan' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["notchspan"] + + @notchspan.setter + def notchspan(self, val): + self["notchspan"] = val + + @property + def notchspansrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `notchspan`. + + The 'notchspansrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["notchspansrc"] + + @notchspansrc.setter + def notchspansrc(self, val): + self["notchspansrc"] = val + + @property + def notchwidth(self): + """ + Sets the width of the notches relative to the box' width. For + example, with 0, the notches are as wide as the box(es). + + The 'notchwidth' property is a number and may be specified as: + - An int or float in the interval [0, 0.5] + + Returns + ------- + int|float + """ + return self["notchwidth"] + + @notchwidth.setter + def notchwidth(self, val): + self["notchwidth"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + Sets the orientation of the box(es). If "v" ("h"), the + distribution is visualized along the vertical (horizontal). + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def pointpos(self): + """ + 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 + + The 'pointpos' property is a number and may be specified as: + - An int or float in the interval [-2, 2] + + Returns + ------- + int|float + """ + return self["pointpos"] + + @pointpos.setter + def pointpos(self, val): + self["pointpos"] = val + + @property + def q1(self): + """ + Sets the Quartile 1 values. There should be as many items as + the number of boxes desired. + + The 'q1' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["q1"] + + @q1.setter + def q1(self, val): + self["q1"] = val + + @property + def q1src(self): + """ + Sets the source reference on Chart Studio Cloud for `q1`. + + The 'q1src' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["q1src"] + + @q1src.setter + def q1src(self, val): + self["q1src"] = val + + @property + def q3(self): + """ + Sets the Quartile 3 values. There should be as many items as + the number of boxes desired. + + The 'q3' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["q3"] + + @q3.setter + def q3(self, val): + self["q3"] = val + + @property + def q3src(self): + """ + Sets the source reference on Chart Studio Cloud for `q3`. + + The 'q3src' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["q3src"] + + @q3src.setter + def q3src(self, val): + self["q3src"] = val + + @property + def quartilemethod(self): + """ + 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. + + The 'quartilemethod' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'exclusive', 'inclusive'] + + Returns + ------- + Any + """ + return self["quartilemethod"] + + @quartilemethod.setter + def quartilemethod(self, val): + self["quartilemethod"] = val + + @property + def sd(self): + """ + 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. + + The 'sd' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["sd"] + + @sd.setter + def sd(self, val): + self["sd"] = val + + @property + def sdmultiple(self): + """ + Scales the box size when sizemode=sd Allowing boxes to be drawn + across any stddev range For example 1-stddev, 3-stddev, + 5-stddev + + The 'sdmultiple' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sdmultiple"] + + @sdmultiple.setter + def sdmultiple(self, val): + self["sdmultiple"] = val + + @property + def sdsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `sd`. + + The 'sdsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sdsrc"] + + @sdsrc.setter + def sdsrc(self, val): + self["sdsrc"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.box.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showwhiskers(self): + """ + Determines whether or not whiskers are visible. Defaults to + true for `sizemode` "quartiles", false for "sd". + + The 'showwhiskers' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showwhiskers"] + + @showwhiskers.setter + def showwhiskers(self, val): + self["showwhiskers"] = val + + @property + def sizemode(self): + """ + 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 + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['quartiles', 'sd'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.box.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.box.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def upperfence(self): + """ + 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. + + The 'upperfence' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["upperfence"] + + @upperfence.setter + def upperfence(self, val): + self["upperfence"] = val + + @property + def upperfencesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `upperfence`. + + The 'upperfencesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["upperfencesrc"] + + @upperfencesrc.setter + def upperfencesrc(self, val): + self["upperfencesrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def whiskerwidth(self): + """ + Sets the width of the whiskers relative to the box' width. For + example, with 1, the whiskers are as wide as the box(es). + + The 'whiskerwidth' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["whiskerwidth"] + + @whiskerwidth.setter + def whiskerwidth(self, val): + self["whiskerwidth"] = val + + @property + def width(self): + """ + 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. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def x(self): + """ + Sets the x sample data or coordinates. See overview for more + info. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + 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. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y sample data or coordinates. See overview for more + info. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + 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. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + boxmean + 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. + boxpoints + 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". + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step for multi-box traces set + using q1/median/q3. + dy + Sets the y coordinate step for multi-box traces set + using q1/median/q3. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.box.Hoverlabel` instance + or dict with compatible properties + hoveron + Do the hover effects highlight individual boxes or + sample points or both? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.box.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.box.Line` instance or dict + with compatible properties + lowerfence + 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. + lowerfencesrc + Sets the source reference on Chart Studio Cloud for + `lowerfence`. + marker + :class:`plotly.graph_objects.box.Marker` instance or + dict with compatible properties + mean + 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. + meansrc + Sets the source reference on Chart Studio Cloud for + `mean`. + median + Sets the median values. There should be as many items + as the number of boxes desired. + mediansrc + Sets the source reference on Chart Studio Cloud for + `median`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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 + notched + 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. + notchspan + 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. + notchspansrc + Sets the source reference on Chart Studio Cloud for + `notchspan`. + notchwidth + Sets the width of the notches relative to the box' + width. For example, with 0, the notches are as wide as + the box(es). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the box(es). If "v" ("h"), the + distribution is visualized along the vertical + (horizontal). + pointpos + 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 + q1 + Sets the Quartile 1 values. There should be as many + items as the number of boxes desired. + q1src + Sets the source reference on Chart Studio Cloud for + `q1`. + q3 + Sets the Quartile 3 values. There should be as many + items as the number of boxes desired. + q3src + Sets the source reference on Chart Studio Cloud for + `q3`. + quartilemethod + 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. + sd + 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. + sdmultiple + Scales the box size when sizemode=sd Allowing boxes to + be drawn across any stddev range For example 1-stddev, + 3-stddev, 5-stddev + sdsrc + Sets the source reference on Chart Studio Cloud for + `sd`. + selected + :class:`plotly.graph_objects.box.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showwhiskers + Determines whether or not whiskers are visible. + Defaults to true for `sizemode` "quartiles", false for + "sd". + sizemode + 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 + stream + :class:`plotly.graph_objects.box.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.box.Unselected` instance + or dict with compatible properties + upperfence + 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. + upperfencesrc + Sets the source reference on Chart Studio Cloud for + `upperfence`. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + boxmean=None, + boxpoints=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + jitter=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lowerfence=None, + lowerfencesrc=None, + marker=None, + mean=None, + meansrc=None, + median=None, + mediansrc=None, + meta=None, + metasrc=None, + name=None, + notched=None, + notchspan=None, + notchspansrc=None, + notchwidth=None, + offsetgroup=None, + opacity=None, + orientation=None, + pointpos=None, + q1=None, + q1src=None, + q3=None, + q3src=None, + quartilemethod=None, + sd=None, + sdmultiple=None, + sdsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + showwhiskers=None, + sizemode=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + upperfence=None, + upperfencesrc=None, + visible=None, + whiskerwidth=None, + width=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Box object + + Each box spans from quartile 1 (Q1) to quartile 3 (Q3). The + second quartile (Q2, i.e. the median) is marked by a line + inside the box. The fences grow outward from the boxes' edges, + by default they span +/- 1.5 times the interquartile range + (IQR: Q3-Q1), The sample mean and standard deviation as well as + notches and the sample, outlier and suspected outliers points + can be optionally added to the box plot. The values and + positions corresponding to each boxes can be input using two + signatures. The first signature expects users to supply the + sample values in the `y` data array for vertical boxes (`x` for + horizontal boxes). By supplying an `x` (`y`) array, one box per + distinct `x` (`y`) value is drawn If no `x` (`y`) list is + provided, a single box is drawn. In this case, the box is + positioned with the trace `name` or with `x0` (`y0`) if + provided. The second signature expects users to supply the + boxes corresponding Q1, median and Q3 statistics in the `q1`, + `median` and `q3` data arrays respectively. Other box features + relying on statistics namely `lowerfence`, `upperfence`, + `notchspan` can be set directly by the users. To have plotly + compute them or to show sample points besides the boxes, users + can set the `y` data array for vertical boxes (`x` for + horizontal boxes) to a 2D array with the outer length + corresponding to the number of boxes in the traces and the + inner length corresponding the sample size. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Box` + alignmentgroup + 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. + boxmean + 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. + boxpoints + 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". + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step for multi-box traces set + using q1/median/q3. + dy + Sets the y coordinate step for multi-box traces set + using q1/median/q3. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.box.Hoverlabel` instance + or dict with compatible properties + hoveron + Do the hover effects highlight individual boxes or + sample points or both? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.box.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.box.Line` instance or dict + with compatible properties + lowerfence + 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. + lowerfencesrc + Sets the source reference on Chart Studio Cloud for + `lowerfence`. + marker + :class:`plotly.graph_objects.box.Marker` instance or + dict with compatible properties + mean + 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. + meansrc + Sets the source reference on Chart Studio Cloud for + `mean`. + median + Sets the median values. There should be as many items + as the number of boxes desired. + mediansrc + Sets the source reference on Chart Studio Cloud for + `median`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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 + notched + 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. + notchspan + 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. + notchspansrc + Sets the source reference on Chart Studio Cloud for + `notchspan`. + notchwidth + Sets the width of the notches relative to the box' + width. For example, with 0, the notches are as wide as + the box(es). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the box(es). If "v" ("h"), the + distribution is visualized along the vertical + (horizontal). + pointpos + 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 + q1 + Sets the Quartile 1 values. There should be as many + items as the number of boxes desired. + q1src + Sets the source reference on Chart Studio Cloud for + `q1`. + q3 + Sets the Quartile 3 values. There should be as many + items as the number of boxes desired. + q3src + Sets the source reference on Chart Studio Cloud for + `q3`. + quartilemethod + 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. + sd + 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. + sdmultiple + Scales the box size when sizemode=sd Allowing boxes to + be drawn across any stddev range For example 1-stddev, + 3-stddev, 5-stddev + sdsrc + Sets the source reference on Chart Studio Cloud for + `sd`. + selected + :class:`plotly.graph_objects.box.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showwhiskers + Determines whether or not whiskers are visible. + Defaults to true for `sizemode` "quartiles", false for + "sd". + sizemode + 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 + stream + :class:`plotly.graph_objects.box.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.box.Unselected` instance + or dict with compatible properties + upperfence + 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. + upperfencesrc + Sets the source reference on Chart Studio Cloud for + `upperfence`. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Box + """ + super().__init__("box") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Box +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Box`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("boxmean", arg, boxmean) + self._set_property("boxpoints", arg, boxpoints) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("jitter", arg, jitter) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("lowerfence", arg, lowerfence) + self._set_property("lowerfencesrc", arg, lowerfencesrc) + self._set_property("marker", arg, marker) + self._set_property("mean", arg, mean) + self._set_property("meansrc", arg, meansrc) + self._set_property("median", arg, median) + self._set_property("mediansrc", arg, mediansrc) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("notched", arg, notched) + self._set_property("notchspan", arg, notchspan) + self._set_property("notchspansrc", arg, notchspansrc) + self._set_property("notchwidth", arg, notchwidth) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("pointpos", arg, pointpos) + self._set_property("q1", arg, q1) + self._set_property("q1src", arg, q1src) + self._set_property("q3", arg, q3) + self._set_property("q3src", arg, q3src) + self._set_property("quartilemethod", arg, quartilemethod) + self._set_property("sd", arg, sd) + self._set_property("sdmultiple", arg, sdmultiple) + self._set_property("sdsrc", arg, sdsrc) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("showwhiskers", arg, showwhiskers) + self._set_property("sizemode", arg, sizemode) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("upperfence", arg, upperfence) + self._set_property("upperfencesrc", arg, upperfencesrc) + self._set_property("visible", arg, visible) + self._set_property("whiskerwidth", arg, whiskerwidth) + self._set_property("width", arg, width) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "box" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_candlestick.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_candlestick.py new file mode 100644 index 0000000..0a8d71a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_candlestick.py @@ -0,0 +1,1677 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Candlestick(_BaseTraceType): + _parent_path_str = "" + _path_str = "candlestick" + _valid_props = { + "close", + "closesrc", + "customdata", + "customdatasrc", + "decreasing", + "high", + "highsrc", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "increasing", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "low", + "lowsrc", + "meta", + "metasrc", + "name", + "opacity", + "open", + "opensrc", + "selectedpoints", + "showlegend", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "visible", + "whiskerwidth", + "x", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "yaxis", + "yhoverformat", + "zorder", + } + + @property + def close(self): + """ + Sets the close values. + + The 'close' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["close"] + + @close.setter + def close(self, val): + self["close"] = val + + @property + def closesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `close`. + + The 'closesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["closesrc"] + + @closesrc.setter + def closesrc(self, val): + self["closesrc"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def decreasing(self): + """ + The 'decreasing' property is an instance of Decreasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.Decreasing` + - A dict of string/value properties that will be passed + to the Decreasing constructor + + Returns + ------- + plotly.graph_objs.candlestick.Decreasing + """ + return self["decreasing"] + + @decreasing.setter + def decreasing(self, val): + self["decreasing"] = val + + @property + def high(self): + """ + Sets the high values. + + The 'high' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["high"] + + @high.setter + def high(self, val): + self["high"] = val + + @property + def highsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `high`. + + The 'highsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["highsrc"] + + @highsrc.setter + def highsrc(self, val): + self["highsrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.candlestick.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def increasing(self): + """ + The 'increasing' property is an instance of Increasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.Increasing` + - A dict of string/value properties that will be passed + to the Increasing constructor + + Returns + ------- + plotly.graph_objs.candlestick.Increasing + """ + return self["increasing"] + + @increasing.setter + def increasing(self, val): + self["increasing"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.candlestick.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.candlestick.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def low(self): + """ + Sets the low values. + + The 'low' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["low"] + + @low.setter + def low(self, val): + self["low"] = val + + @property + def lowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `low`. + + The 'lowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lowsrc"] + + @lowsrc.setter + def lowsrc(self, val): + self["lowsrc"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def open(self): + """ + Sets the open values. + + The 'open' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["open"] + + @open.setter + def open(self, val): + self["open"] = val + + @property + def opensrc(self): + """ + Sets the source reference on Chart Studio Cloud for `open`. + + The 'opensrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opensrc"] + + @opensrc.setter + def opensrc(self, val): + self["opensrc"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.candlestick.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def whiskerwidth(self): + """ + Sets the width of the whiskers relative to the box' width. For + example, with 1, the whiskers are as wide as the box(es). + + The 'whiskerwidth' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["whiskerwidth"] + + @whiskerwidth.setter + def whiskerwidth(self, val): + self["whiskerwidth"] = val + + @property + def x(self): + """ + Sets the x coordinates. If absent, linear coordinate will be + generated. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.candlestick.Decreasing` + instance or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.candlestick.Hoverlabel` + instance or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.candlestick.Increasing` + instance or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.candlestick.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.candlestick.Line` instance + or dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.candlestick.Stream` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + close=None, + closesrc=None, + customdata=None, + customdatasrc=None, + decreasing=None, + high=None, + highsrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + low=None, + lowsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + open=None, + opensrc=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + whiskerwidth=None, + x=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + yaxis=None, + yhoverformat=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Candlestick object + + The candlestick is a style of financial chart describing open, + high, low and close for a given `x` coordinate (most likely + time). 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 value are called increasing + (decreasing). By default, increasing candles are drawn in green + whereas decreasing are drawn in red. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Candlestick` + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.candlestick.Decreasing` + instance or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.candlestick.Hoverlabel` + instance or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.candlestick.Increasing` + instance or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.candlestick.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.candlestick.Line` instance + or dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.candlestick.Stream` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + + Returns + ------- + Candlestick + """ + super().__init__("candlestick") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Candlestick +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Candlestick`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("close", arg, close) + self._set_property("closesrc", arg, closesrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("decreasing", arg, decreasing) + self._set_property("high", arg, high) + self._set_property("highsrc", arg, highsrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("increasing", arg, increasing) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("low", arg, low) + self._set_property("lowsrc", arg, lowsrc) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("open", arg, open) + self._set_property("opensrc", arg, opensrc) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("whiskerwidth", arg, whiskerwidth) + self._set_property("x", arg, x) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("yaxis", arg, yaxis) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "candlestick" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_carpet.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_carpet.py new file mode 100644 index 0000000..b75b58a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_carpet.py @@ -0,0 +1,1257 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Carpet(_BaseTraceType): + _parent_path_str = "" + _path_str = "carpet" + _valid_props = { + "a", + "a0", + "aaxis", + "asrc", + "b", + "b0", + "baxis", + "bsrc", + "carpet", + "cheaterslope", + "color", + "customdata", + "customdatasrc", + "da", + "db", + "font", + "ids", + "idssrc", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "meta", + "metasrc", + "name", + "opacity", + "stream", + "type", + "uid", + "uirevision", + "visible", + "x", + "xaxis", + "xsrc", + "y", + "yaxis", + "ysrc", + "zorder", + } + + @property + def a(self): + """ + An array containing values of the first parameter value + + The 'a' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["a"] + + @a.setter + def a(self, val): + self["a"] = val + + @property + def a0(self): + """ + Alternate to `a`. Builds a linear space of a coordinates. Use + with `da` where `a0` is the starting coordinate and `da` the + step. + + The 'a0' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["a0"] + + @a0.setter + def a0(self, val): + self["a0"] = val + + @property + def aaxis(self): + """ + The 'aaxis' property is an instance of Aaxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.Aaxis` + - A dict of string/value properties that will be passed + to the Aaxis constructor + + Returns + ------- + plotly.graph_objs.carpet.Aaxis + """ + return self["aaxis"] + + @aaxis.setter + def aaxis(self, val): + self["aaxis"] = val + + @property + def asrc(self): + """ + Sets the source reference on Chart Studio Cloud for `a`. + + The 'asrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["asrc"] + + @asrc.setter + def asrc(self, val): + self["asrc"] = val + + @property + def b(self): + """ + A two dimensional array of y coordinates at each carpet point. + + The 'b' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def b0(self): + """ + Alternate to `b`. Builds a linear space of a coordinates. Use + with `db` where `b0` is the starting coordinate and `db` the + step. + + The 'b0' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["b0"] + + @b0.setter + def b0(self, val): + self["b0"] = val + + @property + def baxis(self): + """ + The 'baxis' property is an instance of Baxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.Baxis` + - A dict of string/value properties that will be passed + to the Baxis constructor + + Returns + ------- + plotly.graph_objs.carpet.Baxis + """ + return self["baxis"] + + @baxis.setter + def baxis(self, val): + self["baxis"] = val + + @property + def bsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `b`. + + The 'bsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bsrc"] + + @bsrc.setter + def bsrc(self, val): + self["bsrc"] = val + + @property + def carpet(self): + """ + An identifier for this carpet, so that `scattercarpet` and + `contourcarpet` traces can specify a carpet plot on which they + lie + + The 'carpet' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["carpet"] + + @carpet.setter + def carpet(self, val): + self["carpet"] = val + + @property + def cheaterslope(self): + """ + The shift applied to each successive row of data in creating a + cheater plot. Only used if `x` is been omitted. + + The 'cheaterslope' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cheaterslope"] + + @cheaterslope.setter + def cheaterslope(self, val): + self["cheaterslope"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def da(self): + """ + Sets the a coordinate step. See `a0` for more info. + + The 'da' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["da"] + + @da.setter + def da(self, val): + self["da"] = val + + @property + def db(self): + """ + Sets the b coordinate step. See `b0` for more info. + + The 'db' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["db"] + + @db.setter + def db(self, val): + self["db"] = val + + @property + def font(self): + """ + The default font used for axis & tick labels on this carpet + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.carpet.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.carpet.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.carpet.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + 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. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + A two dimensional array of y coordinates at each carpet point. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + a + An array containing values of the first parameter value + a0 + Alternate to `a`. Builds a linear space of a + coordinates. Use with `da` where `a0` is the starting + coordinate and `da` the step. + aaxis + :class:`plotly.graph_objects.carpet.Aaxis` instance or + dict with compatible properties + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + A two dimensional array of y coordinates at each carpet + point. + b0 + Alternate to `b`. Builds a linear space of a + coordinates. Use with `db` where `b0` is the starting + coordinate and `db` the step. + baxis + :class:`plotly.graph_objects.carpet.Baxis` instance or + dict with compatible properties + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + cheaterslope + The shift applied to each successive row of data in + creating a cheater plot. Only used if `x` is been + omitted. + color + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the a coordinate step. See `a0` for more info. + db + Sets the b coordinate step. See `b0` for more info. + font + The default font used for axis & tick labels on this + carpet + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.carpet.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + stream + :class:`plotly.graph_objects.carpet.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + 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. + xaxis + 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. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + A two dimensional array of y coordinates at each carpet + point. + yaxis + 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. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + a=None, + a0=None, + aaxis=None, + asrc=None, + b=None, + b0=None, + baxis=None, + bsrc=None, + carpet=None, + cheaterslope=None, + color=None, + customdata=None, + customdatasrc=None, + da=None, + db=None, + font=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + stream=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xsrc=None, + y=None, + yaxis=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Carpet object + + The data describing carpet axis layout is set in `y` and + (optionally) also `x`. If only `y` is present, `x` the plot is + interpreted as a cheater plot and is filled in using the `y` + values. `x` and `y` may either be 2D arrays matching with each + dimension matching that of `a` and `b`, or they may be 1D + arrays with total length equal to that of `a` and `b`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Carpet` + a + An array containing values of the first parameter value + a0 + Alternate to `a`. Builds a linear space of a + coordinates. Use with `da` where `a0` is the starting + coordinate and `da` the step. + aaxis + :class:`plotly.graph_objects.carpet.Aaxis` instance or + dict with compatible properties + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + A two dimensional array of y coordinates at each carpet + point. + b0 + Alternate to `b`. Builds a linear space of a + coordinates. Use with `db` where `b0` is the starting + coordinate and `db` the step. + baxis + :class:`plotly.graph_objects.carpet.Baxis` instance or + dict with compatible properties + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + cheaterslope + The shift applied to each successive row of data in + creating a cheater plot. Only used if `x` is been + omitted. + color + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the a coordinate step. See `a0` for more info. + db + Sets the b coordinate step. See `b0` for more info. + font + The default font used for axis & tick labels on this + carpet + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.carpet.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + stream + :class:`plotly.graph_objects.carpet.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + 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. + xaxis + 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. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + A two dimensional array of y coordinates at each carpet + point. + yaxis + 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. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Carpet + """ + super().__init__("carpet") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Carpet +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Carpet`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("a", arg, a) + self._set_property("a0", arg, a0) + self._set_property("aaxis", arg, aaxis) + self._set_property("asrc", arg, asrc) + self._set_property("b", arg, b) + self._set_property("b0", arg, b0) + self._set_property("baxis", arg, baxis) + self._set_property("bsrc", arg, bsrc) + self._set_property("carpet", arg, carpet) + self._set_property("cheaterslope", arg, cheaterslope) + self._set_property("color", arg, color) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("da", arg, da) + self._set_property("db", arg, db) + self._set_property("font", arg, font) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("stream", arg, stream) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xaxis", arg, xaxis) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yaxis", arg, yaxis) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "carpet" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_choropleth.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_choropleth.py new file mode 100644 index 0000000..9c55f8a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_choropleth.py @@ -0,0 +1,1755 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Choropleth(_BaseTraceType): + _parent_path_str = "" + _path_str = "choropleth" + _valid_props = { + "autocolorscale", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "featureidkey", + "geo", + "geojson", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "locationmode", + "locations", + "locationssrc", + "marker", + "meta", + "metasrc", + "name", + "reversescale", + "selected", + "selectedpoints", + "showlegend", + "showscale", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "z", + "zauto", + "zmax", + "zmid", + "zmin", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.choropleth.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def featureidkey(self): + """ + 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". + + The 'featureidkey' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["featureidkey"] + + @featureidkey.setter + def featureidkey(self, val): + self["featureidkey"] = val + + @property + def geo(self): + """ + 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. + + The 'geo' property is an identifier of a particular + subplot, of type 'geo', that may be specified as the string 'geo' + optionally followed by an integer >= 1 + (e.g. 'geo', 'geo1', 'geo2', 'geo3', etc.) + + Returns + ------- + str + """ + return self["geo"] + + @geo.setter + def geo(self, val): + self["geo"] = val + + @property + def geojson(self): + """ + 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". + + The 'geojson' property accepts values of any type + + Returns + ------- + Any + """ + return self["geojson"] + + @geojson.setter + def geojson(self, val): + self["geojson"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['location', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'location+z') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.choropleth.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.choropleth.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def locationmode(self): + """ + 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. + + The 'locationmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['ISO-3', 'USA-states', 'country names', 'geojson-id'] + + Returns + ------- + Any + """ + return self["locationmode"] + + @locationmode.setter + def locationmode(self, val): + self["locationmode"] = val + + @property + def locations(self): + """ + Sets the coordinates via location IDs or names. See + `locationmode` for more info. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choropleth.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.choropleth.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.choropleth.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + Sets the text elements associated with each location. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.choropleth.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def z(self): + """ + Sets the color values. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choropleth.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choropleth.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choropleth.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locationmode + 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. + locations + Sets the coordinates via location IDs or names. See + `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choropleth.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choropleth.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choropleth.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choropleth.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geo=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locationmode=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Choropleth object + + The data that describes the choropleth value-to-color mapping + is set in `z`. The geographic locations corresponding to each + value in `z` are set in `locations`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Choropleth` + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choropleth.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choropleth.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choropleth.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locationmode + 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. + locations + Sets the coordinates via location IDs or names. See + `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choropleth.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choropleth.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choropleth.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choropleth.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Choropleth + """ + super().__init__("choropleth") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Choropleth +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Choropleth`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("featureidkey", arg, featureidkey) + self._set_property("geo", arg, geo) + self._set_property("geojson", arg, geojson) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("locationmode", arg, locationmode) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("reversescale", arg, reversescale) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "choropleth" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmap.py new file mode 100644 index 0000000..7c23376 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmap.py @@ -0,0 +1,1749 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Choroplethmap(_BaseTraceType): + _parent_path_str = "" + _path_str = "choroplethmap" + _valid_props = { + "autocolorscale", + "below", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "featureidkey", + "geojson", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "locations", + "locationssrc", + "marker", + "meta", + "metasrc", + "name", + "reversescale", + "selected", + "selectedpoints", + "showlegend", + "showscale", + "stream", + "subplot", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "z", + "zauto", + "zmax", + "zmid", + "zmin", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def below(self): + """ + 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. + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def featureidkey(self): + """ + 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". + + The 'featureidkey' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["featureidkey"] + + @featureidkey.setter + def featureidkey(self, val): + self["featureidkey"] = val + + @property + def geojson(self): + """ + 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". + + The 'geojson' property accepts values of any type + + Returns + ------- + Any + """ + return self["geojson"] + + @geojson.setter + def geojson(self, val): + self["geojson"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['location', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'location+z') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def locations(self): + """ + Sets which features found in "geojson" to plot using their + feature `id` field. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'map', that may be specified as the string 'map' + optionally followed by an integer >= 1 + (e.g. 'map', 'map1', 'map2', 'map3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + Sets the text elements associated with each location. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def z(self): + """ + Sets the color values. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmap.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmap.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmap.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Choroplethmap object + + GeoJSON features to be filled are set in `geojson` The data + that describes the choropleth value-to-color mapping is set in + `locations` and `z`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Choroplethmap` + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmap.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmap.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmap.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Choroplethmap + """ + super().__init__("choroplethmap") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Choroplethmap +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Choroplethmap`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("below", arg, below) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("featureidkey", arg, featureidkey) + self._set_property("geojson", arg, geojson) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("reversescale", arg, reversescale) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "choroplethmap" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmapbox.py new file mode 100644 index 0000000..8225c27 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_choroplethmapbox.py @@ -0,0 +1,1777 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy +import warnings + + +class Choroplethmapbox(_BaseTraceType): + _parent_path_str = "" + _path_str = "choroplethmapbox" + _valid_props = { + "autocolorscale", + "below", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "featureidkey", + "geojson", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "locations", + "locationssrc", + "marker", + "meta", + "metasrc", + "name", + "reversescale", + "selected", + "selectedpoints", + "showlegend", + "showscale", + "stream", + "subplot", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "z", + "zauto", + "zmax", + "zmid", + "zmin", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def below(self): + """ + 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. + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def featureidkey(self): + """ + 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". + + The 'featureidkey' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["featureidkey"] + + @featureidkey.setter + def featureidkey(self, val): + self["featureidkey"] = val + + @property + def geojson(self): + """ + 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". + + The 'geojson' property accepts values of any type + + Returns + ------- + Any + """ + return self["geojson"] + + @geojson.setter + def geojson(self, val): + self["geojson"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['location', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'location+z') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def locations(self): + """ + Sets which features found in "geojson" to plot using their + feature `id` field. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'mapbox', that may be specified as the string 'mapbox' + optionally followed by an integer >= 1 + (e.g. 'mapbox', 'mapbox1', 'mapbox2', 'mapbox3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + Sets the text elements associated with each location. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def z(self): + """ + Sets the color values. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmapbox.Hoverlabe + l` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmapbox.Legendgro + uptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmapbox.Unselecte + d` instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Choroplethmapbox object + + "choroplethmapbox" trace is deprecated! Please consider + switching to the "choroplethmap" trace type and `map` subplots. + Learn more at: https://plotly.com/python/maplibre-migration/ as + well as https://plotly.com/javascript/maplibre-migration/ + GeoJSON features to be filled are set in `geojson` The data + that describes the choropleth value-to-color mapping is set in + `locations` and `z`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.Choroplethmapbox` + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmapbox.Hoverlabe + l` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmapbox.Legendgro + uptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmapbox.Unselecte + d` instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Choroplethmapbox + """ + super().__init__("choroplethmapbox") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Choroplethmapbox +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Choroplethmapbox`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("below", arg, below) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("featureidkey", arg, featureidkey) + self._set_property("geojson", arg, geojson) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("reversescale", arg, reversescale) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "choroplethmapbox" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False + + warnings.warn( + "*choroplethmapbox* is deprecated!" + + " Use *choroplethmap* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_cone.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_cone.py new file mode 100644 index 0000000..0e85f56 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_cone.py @@ -0,0 +1,2260 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Cone(_BaseTraceType): + _parent_path_str = "" + _path_str = "cone" + _valid_props = { + "anchor", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lighting", + "lightposition", + "meta", + "metasrc", + "name", + "opacity", + "reversescale", + "scene", + "showlegend", + "showscale", + "sizemode", + "sizeref", + "stream", + "text", + "textsrc", + "type", + "u", + "uhoverformat", + "uid", + "uirevision", + "usrc", + "v", + "vhoverformat", + "visible", + "vsrc", + "w", + "whoverformat", + "wsrc", + "x", + "xhoverformat", + "xsrc", + "y", + "yhoverformat", + "ysrc", + "z", + "zhoverformat", + "zsrc", + } + + @property + def anchor(self): + """ + 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. + + The 'anchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['tip', 'tail', 'cm', 'center'] + + Returns + ------- + Any + """ + return self["anchor"] + + @anchor.setter + def anchor(self, val): + self["anchor"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.cone.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'u', 'v', 'w', 'norm', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.cone.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.cone.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lighting(self): + """ + The 'lighting' property is an instance of Lighting + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.Lighting` + - A dict of string/value properties that will be passed + to the Lighting constructor + + Returns + ------- + plotly.graph_objs.cone.Lighting + """ + return self["lighting"] + + @lighting.setter + def lighting(self, val): + self["lighting"] = val + + @property + def lightposition(self): + """ + The 'lightposition' property is an instance of Lightposition + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.Lightposition` + - A dict of string/value properties that will be passed + to the Lightposition constructor + + Returns + ------- + plotly.graph_objs.cone.Lightposition + """ + return self["lightposition"] + + @lightposition.setter + def lightposition(self, val): + self["lightposition"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def sizemode(self): + """ + 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". + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['scaled', 'absolute', 'raw'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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. + + The 'sizeref' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.cone.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def u(self): + """ + Sets the x components of the vector field. + + The 'u' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["u"] + + @u.setter + def u(self, val): + self["u"] = val + + @property + def uhoverformat(self): + """ + 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. + + The 'uhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uhoverformat"] + + @uhoverformat.setter + def uhoverformat(self, val): + self["uhoverformat"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def usrc(self): + """ + Sets the source reference on Chart Studio Cloud for `u`. + + The 'usrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["usrc"] + + @usrc.setter + def usrc(self, val): + self["usrc"] = val + + @property + def v(self): + """ + Sets the y components of the vector field. + + The 'v' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["v"] + + @v.setter + def v(self, val): + self["v"] = val + + @property + def vhoverformat(self): + """ + 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. + + The 'vhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["vhoverformat"] + + @vhoverformat.setter + def vhoverformat(self, val): + self["vhoverformat"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def vsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `v`. + + The 'vsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["vsrc"] + + @vsrc.setter + def vsrc(self, val): + self["vsrc"] = val + + @property + def w(self): + """ + Sets the z components of the vector field. + + The 'w' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["w"] + + @w.setter + def w(self, val): + self["w"] = val + + @property + def whoverformat(self): + """ + 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. + + The 'whoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["whoverformat"] + + @whoverformat.setter + def whoverformat(self, val): + self["whoverformat"] = val + + @property + def wsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `w`. + + The 'wsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["wsrc"] + + @wsrc.setter + def wsrc(self, val): + self["wsrc"] = val + + @property + def x(self): + """ + Sets the x coordinates of the vector field and of the displayed + cones. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates of the vector field and of the displayed + cones. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the z coordinates of the vector field and of the displayed + cones. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + anchor + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.cone.ColorBar` instance or + dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.cone.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.cone.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.cone.Lighting` instance or + dict with compatible properties + lightposition + :class:`plotly.graph_objects.cone.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizemode + 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". + sizeref + 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. + stream + :class:`plotly.graph_objects.cone.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field and of the + displayed cones. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field and of the + displayed cones. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field and of the + displayed cones. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + anchor=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + sizemode=None, + sizeref=None, + stream=None, + text=None, + textsrc=None, + u=None, + uhoverformat=None, + uid=None, + uirevision=None, + usrc=None, + v=None, + vhoverformat=None, + visible=None, + vsrc=None, + w=None, + whoverformat=None, + wsrc=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Cone object + + Use cone traces to visualize vector fields. Specify a vector + field using 6 1D arrays, 3 position arrays `x`, `y` and `z` and + 3 vector component arrays `u`, `v`, `w`. The cones are drawn + exactly at the positions given by `x`, `y` and `z`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Cone` + anchor + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.cone.ColorBar` instance or + dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.cone.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.cone.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.cone.Lighting` instance or + dict with compatible properties + lightposition + :class:`plotly.graph_objects.cone.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizemode + 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". + sizeref + 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. + stream + :class:`plotly.graph_objects.cone.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field and of the + displayed cones. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field and of the + displayed cones. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field and of the + displayed cones. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Cone + """ + super().__init__("cone") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Cone +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Cone`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("anchor", arg, anchor) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lighting", arg, lighting) + self._set_property("lightposition", arg, lightposition) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("u", arg, u) + self._set_property("uhoverformat", arg, uhoverformat) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("usrc", arg, usrc) + self._set_property("v", arg, v) + self._set_property("vhoverformat", arg, vhoverformat) + self._set_property("visible", arg, visible) + self._set_property("vsrc", arg, vsrc) + self._set_property("w", arg, w) + self._set_property("whoverformat", arg, whoverformat) + self._set_property("wsrc", arg, wsrc) + self._set_property("x", arg, x) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "cone" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_contour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_contour.py new file mode 100644 index 0000000..3d4eb5c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_contour.py @@ -0,0 +1,2616 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Contour(_BaseTraceType): + _parent_path_str = "" + _path_str = "contour" + _valid_props = { + "autocolorscale", + "autocontour", + "coloraxis", + "colorbar", + "colorscale", + "connectgaps", + "contours", + "customdata", + "customdatasrc", + "dx", + "dy", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoverongaps", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "meta", + "metasrc", + "name", + "ncontours", + "opacity", + "reversescale", + "showlegend", + "showscale", + "stream", + "text", + "textfont", + "textsrc", + "texttemplate", + "transpose", + "type", + "uid", + "uirevision", + "visible", + "x", + "x0", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "xtype", + "y", + "y0", + "yaxis", + "ycalendar", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "ytype", + "z", + "zauto", + "zhoverformat", + "zmax", + "zmid", + "zmin", + "zorder", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def autocontour(self): + """ + 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`. + + The 'autocontour' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocontour"] + + @autocontour.setter + def autocontour(self, val): + self["autocontour"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.contour.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def connectgaps(self): + """ + 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. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def contours(self): + """ + The 'contours' property is an instance of Contours + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.Contours` + - A dict of string/value properties that will be passed + to the Contours constructor + + Returns + ------- + plotly.graph_objs.contour.Contours + """ + return self["contours"] + + @contours.setter + def contours(self, val): + self["contours"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def fillcolor(self): + """ + 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. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to contour.colorscale + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.contour.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoverongaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the `z` data have hover labels associated with them. + + The 'hoverongaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["hoverongaps"] + + @hoverongaps.setter + def hoverongaps(self, val): + self["hoverongaps"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.contour.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.contour.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def ncontours(self): + """ + 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. + + The 'ncontours' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ncontours"] + + @ncontours.setter + def ncontours(self, val): + self["ncontours"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.contour.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + Sets the text elements associated with each z value. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + For this trace it only has an effect if `coloring` is set to + "heatmap". Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.contour.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + For this trace it only has an effect if `coloring` is set to + "heatmap". Template string used for rendering the information + text that appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def transpose(self): + """ + Transposes the z data. + + The 'transpose' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["transpose"] + + @transpose.setter + def transpose(self, val): + self["transpose"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def xtype(self): + """ + 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). + + The 'xtype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['array', 'scaled'] + + Returns + ------- + Any + """ + return self["xtype"] + + @xtype.setter + def xtype(self, val): + self["xtype"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def ytype(self): + """ + 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) + + The 'ytype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['array', 'scaled'] + + Returns + ------- + Any + """ + return self["ytype"] + + @ytype.setter + def ytype(self, val): + self["ytype"] = val + + @property + def z(self): + """ + Sets the z data. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zhoverformat(self): + """ + 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. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + autocontour + 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`. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contour.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + contours + :class:`plotly.graph_objects.contour.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.contour.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contour.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contour.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contour.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + autocontour=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + contours=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoverongaps=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textfont=None, + textsrc=None, + texttemplate=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + xtype=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + ytype=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Contour object + + The data from which contour lines are computed is set in `z`. + Data in `z` must be a 2D list of numbers. Say that `z` has N + rows and M columns, then by default, these N rows correspond to + N y coordinates (set in `y` or auto-generated) and the M + columns correspond to M x coordinates (set in `x` or auto- + generated). By setting `transpose` to True, the above behavior + is flipped. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Contour` + autocolorscale + 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. + autocontour + 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`. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contour.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + contours + :class:`plotly.graph_objects.contour.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.contour.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contour.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contour.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contour.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Contour + """ + super().__init__("contour") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Contour +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Contour`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("autocontour", arg, autocontour) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("contours", arg, contours) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoverongaps", arg, hoverongaps) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("ncontours", arg, ncontours) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("transpose", arg, transpose) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("xtype", arg, xtype) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("ytype", arg, ytype) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zorder", arg, zorder) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "contour" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_contourcarpet.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_contourcarpet.py new file mode 100644 index 0000000..2a24b88 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_contourcarpet.py @@ -0,0 +1,1837 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Contourcarpet(_BaseTraceType): + _parent_path_str = "" + _path_str = "contourcarpet" + _valid_props = { + "a", + "a0", + "asrc", + "atype", + "autocolorscale", + "autocontour", + "b", + "b0", + "bsrc", + "btype", + "carpet", + "coloraxis", + "colorbar", + "colorscale", + "contours", + "customdata", + "customdatasrc", + "da", + "db", + "fillcolor", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "meta", + "metasrc", + "name", + "ncontours", + "opacity", + "reversescale", + "showlegend", + "showscale", + "stream", + "text", + "textsrc", + "transpose", + "type", + "uid", + "uirevision", + "visible", + "xaxis", + "yaxis", + "z", + "zauto", + "zmax", + "zmid", + "zmin", + "zorder", + "zsrc", + } + + @property + def a(self): + """ + Sets the x coordinates. + + The 'a' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["a"] + + @a.setter + def a(self, val): + self["a"] = val + + @property + def a0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'a0' property accepts values of any type + + Returns + ------- + Any + """ + return self["a0"] + + @a0.setter + def a0(self, val): + self["a0"] = val + + @property + def asrc(self): + """ + Sets the source reference on Chart Studio Cloud for `a`. + + The 'asrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["asrc"] + + @asrc.setter + def asrc(self, val): + self["asrc"] = val + + @property + def atype(self): + """ + 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). + + The 'atype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['array', 'scaled'] + + Returns + ------- + Any + """ + return self["atype"] + + @atype.setter + def atype(self, val): + self["atype"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def autocontour(self): + """ + 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`. + + The 'autocontour' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocontour"] + + @autocontour.setter + def autocontour(self, val): + self["autocontour"] = val + + @property + def b(self): + """ + Sets the y coordinates. + + The 'b' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def b0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'b0' property accepts values of any type + + Returns + ------- + Any + """ + return self["b0"] + + @b0.setter + def b0(self, val): + self["b0"] = val + + @property + def bsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `b`. + + The 'bsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bsrc"] + + @bsrc.setter + def bsrc(self, val): + self["bsrc"] = val + + @property + def btype(self): + """ + 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) + + The 'btype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['array', 'scaled'] + + Returns + ------- + Any + """ + return self["btype"] + + @btype.setter + def btype(self, val): + self["btype"] = val + + @property + def carpet(self): + """ + The `carpet` of the carpet axes on which this contour trace + lies + + The 'carpet' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["carpet"] + + @carpet.setter + def carpet(self, val): + self["carpet"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def contours(self): + """ + The 'contours' property is an instance of Contours + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.Contours` + - A dict of string/value properties that will be passed + to the Contours constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.Contours + """ + return self["contours"] + + @contours.setter + def contours(self, val): + self["contours"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def da(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'da' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["da"] + + @da.setter + def da(self, val): + self["da"] = val + + @property + def db(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'db' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["db"] + + @db.setter + def db(self, val): + self["db"] = val + + @property + def fillcolor(self): + """ + 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. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to contourcarpet.colorscale + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def ncontours(self): + """ + 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. + + The 'ncontours' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ncontours"] + + @ncontours.setter + def ncontours(self, val): + self["ncontours"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + Sets the text elements associated with each z value. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def transpose(self): + """ + Transposes the z data. + + The 'transpose' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["transpose"] + + @transpose.setter + def transpose(self, val): + self["transpose"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def z(self): + """ + Sets the z data. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + a + Sets the x coordinates. + a0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + atype + 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). + autocolorscale + 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. + autocontour + 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`. + b + Sets the y coordinates. + b0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + btype + 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) + carpet + The `carpet` of the carpet axes on which this contour + trace lies + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contourcarpet.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.contourcarpet.Contours` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the x coordinate step. See `x0` for more info. + db + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contourcarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contourcarpet.Line` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contourcarpet.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + xaxis + 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. + yaxis + 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. + z + Sets the z data. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + a=None, + a0=None, + asrc=None, + atype=None, + autocolorscale=None, + autocontour=None, + b=None, + b0=None, + bsrc=None, + btype=None, + carpet=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contours=None, + customdata=None, + customdatasrc=None, + da=None, + db=None, + fillcolor=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + xaxis=None, + yaxis=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Contourcarpet object + + Plots contours on either the first carpet axis or the carpet + axis with a matching `carpet` attribute. Data `z` is + interpreted as matching that of the corresponding carpet axis. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Contourcarpet` + a + Sets the x coordinates. + a0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + atype + 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). + autocolorscale + 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. + autocontour + 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`. + b + Sets the y coordinates. + b0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + btype + 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) + carpet + The `carpet` of the carpet axes on which this contour + trace lies + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contourcarpet.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.contourcarpet.Contours` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the x coordinate step. See `x0` for more info. + db + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contourcarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contourcarpet.Line` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contourcarpet.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + xaxis + 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. + yaxis + 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. + z + Sets the z data. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Contourcarpet + """ + super().__init__("contourcarpet") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Contourcarpet +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Contourcarpet`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("a", arg, a) + self._set_property("a0", arg, a0) + self._set_property("asrc", arg, asrc) + self._set_property("atype", arg, atype) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("autocontour", arg, autocontour) + self._set_property("b", arg, b) + self._set_property("b0", arg, b0) + self._set_property("bsrc", arg, bsrc) + self._set_property("btype", arg, btype) + self._set_property("carpet", arg, carpet) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("contours", arg, contours) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("da", arg, da) + self._set_property("db", arg, db) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("ncontours", arg, ncontours) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("transpose", arg, transpose) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("xaxis", arg, xaxis) + self._set_property("yaxis", arg, yaxis) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zorder", arg, zorder) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "contourcarpet" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymap.py new file mode 100644 index 0000000..4291849 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymap.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Densitymap(_BaseTraceType): + _parent_path_str = "" + _path_str = "densitymap" + _valid_props = { + "autocolorscale", + "below", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "lat", + "latsrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lon", + "lonsrc", + "meta", + "metasrc", + "name", + "opacity", + "radius", + "radiussrc", + "reversescale", + "showlegend", + "showscale", + "stream", + "subplot", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "visible", + "z", + "zauto", + "zmax", + "zmid", + "zmin", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def below(self): + """ + 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. + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.densitymap.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lon', 'lat', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'lon+lat') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.densitymap.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def lat(self): + """ + Sets the latitude coordinates (in degrees North). + + The 'lat' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def latsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lat`. + + The 'latsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["latsrc"] + + @latsrc.setter + def latsrc(self, val): + self["latsrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.densitymap.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lon(self): + """ + Sets the longitude coordinates (in degrees East). + + The 'lon' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def lonsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lon`. + + The 'lonsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lonsrc"] + + @lonsrc.setter + def lonsrc(self, val): + self["lonsrc"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def radius(self): + """ + Sets the radius of influence of one `lon` / `lat` point in + pixels. Increasing the value makes the densitymap trace + smoother, but less detailed. + + The 'radius' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["radius"] + + @radius.setter + def radius(self, val): + self["radius"] = val + + @property + def radiussrc(self): + """ + Sets the source reference on Chart Studio Cloud for `radius`. + + The 'radiussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["radiussrc"] + + @radiussrc.setter + def radiussrc(self, val): + self["radiussrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.densitymap.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'map', that may be specified as the string 'map' + optionally followed by an integer >= 1 + (e.g. 'map', 'map1', 'map2', 'map3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def z(self): + """ + Sets the points' weight. For example, a value of 10 would be + equivalent to having 10 points of weight 1 in the same spot + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymap + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lon=None, + lonsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + radius=None, + radiussrc=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Densitymap object + + Draws a bivariate kernel density estimation with a Gaussian + kernel from `lon` and `lat` coordinates and optional `z` values + using a colorscale. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Densitymap` + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymap + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Densitymap + """ + super().__init__("densitymap") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Densitymap +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Densitymap`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("below", arg, below) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("lat", arg, lat) + self._set_property("latsrc", arg, latsrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lon", arg, lon) + self._set_property("lonsrc", arg, lonsrc) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("radius", arg, radius) + self._set_property("radiussrc", arg, radiussrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "densitymap" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymapbox.py new file mode 100644 index 0000000..e483328 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_densitymapbox.py @@ -0,0 +1,1749 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy +import warnings + + +class Densitymapbox(_BaseTraceType): + _parent_path_str = "" + _path_str = "densitymapbox" + _valid_props = { + "autocolorscale", + "below", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "lat", + "latsrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lon", + "lonsrc", + "meta", + "metasrc", + "name", + "opacity", + "radius", + "radiussrc", + "reversescale", + "showlegend", + "showscale", + "stream", + "subplot", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "visible", + "z", + "zauto", + "zmax", + "zmid", + "zmin", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def below(self): + """ + 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. + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lon', 'lat', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'lon+lat') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def lat(self): + """ + Sets the latitude coordinates (in degrees North). + + The 'lat' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def latsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lat`. + + The 'latsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["latsrc"] + + @latsrc.setter + def latsrc(self, val): + self["latsrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lon(self): + """ + Sets the longitude coordinates (in degrees East). + + The 'lon' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def lonsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lon`. + + The 'lonsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lonsrc"] + + @lonsrc.setter + def lonsrc(self, val): + self["lonsrc"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def radius(self): + """ + Sets the radius of influence of one `lon` / `lat` point in + pixels. Increasing the value makes the densitymapbox trace + smoother, but less detailed. + + The 'radius' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["radius"] + + @radius.setter + def radius(self, val): + self["radius"] = val + + @property + def radiussrc(self): + """ + Sets the source reference on Chart Studio Cloud for `radius`. + + The 'radiussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["radiussrc"] + + @radiussrc.setter + def radiussrc(self, val): + self["radiussrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'mapbox', that may be specified as the string 'mapbox' + optionally followed by an integer >= 1 + (e.g. 'mapbox', 'mapbox1', 'mapbox2', 'mapbox3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def z(self): + """ + Sets the points' weight. For example, a value of 10 would be + equivalent to having 10 points of weight 1 in the same spot + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymapbox + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lon=None, + lonsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + radius=None, + radiussrc=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Densitymapbox object + + "densitymapbox" trace is deprecated! Please consider switching + to the "densitymap" trace type and `map` subplots. Learn more + at: https://plotly.com/python/maplibre-migration/ as well as + https://plotly.com/javascript/maplibre-migration/ Draws a + bivariate kernel density estimation with a Gaussian kernel from + `lon` and `lat` coordinates and optional `z` values using a + colorscale. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Densitymapbox` + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymapbox + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Densitymapbox + """ + super().__init__("densitymapbox") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Densitymapbox +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Densitymapbox`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("below", arg, below) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("lat", arg, lat) + self._set_property("latsrc", arg, latsrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lon", arg, lon) + self._set_property("lonsrc", arg, lonsrc) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("radius", arg, radius) + self._set_property("radiussrc", arg, radiussrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "densitymapbox" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False + + warnings.warn( + "*densitymapbox* is deprecated!" + + " Use *densitymap* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_deprecations.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_deprecations.py new file mode 100644 index 0000000..aa08325 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_deprecations.py @@ -0,0 +1,723 @@ +import warnings + +warnings.filterwarnings( + "default", r"plotly\.graph_objs\.\w+ is deprecated", DeprecationWarning +) + + +class Data(list): + """ + plotly.graph_objs.Data is deprecated. + Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.Scatter + - plotly.graph_objs.Bar + - plotly.graph_objs.Area + - plotly.graph_objs.Histogram + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Data is deprecated. + Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.Scatter + - plotly.graph_objs.Bar + - plotly.graph_objs.Area + - plotly.graph_objs.Histogram + - etc. + + """ + warnings.warn( + """plotly.graph_objs.Data is deprecated. +Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.Scatter + - plotly.graph_objs.Bar + - plotly.graph_objs.Area + - plotly.graph_objs.Histogram + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Annotations(list): + """ + plotly.graph_objs.Annotations is deprecated. + Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.layout.Annotation + - plotly.graph_objs.layout.scene.Annotation + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Annotations is deprecated. + Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.layout.Annotation + - plotly.graph_objs.layout.scene.Annotation + + """ + warnings.warn( + """plotly.graph_objs.Annotations is deprecated. +Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.layout.Annotation + - plotly.graph_objs.layout.scene.Annotation +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Frames(list): + """ + plotly.graph_objs.Frames is deprecated. + Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.Frame + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Frames is deprecated. + Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.Frame + + """ + warnings.warn( + """plotly.graph_objs.Frames is deprecated. +Please replace it with a list or tuple of instances of the following types + - plotly.graph_objs.Frame +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class AngularAxis(dict): + """ + plotly.graph_objs.AngularAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.AngularAxis + - plotly.graph_objs.layout.polar.AngularAxis + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.AngularAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.AngularAxis + - plotly.graph_objs.layout.polar.AngularAxis + + """ + warnings.warn( + """plotly.graph_objs.AngularAxis is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.AngularAxis + - plotly.graph_objs.layout.polar.AngularAxis +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Annotation(dict): + """ + plotly.graph_objs.Annotation is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Annotation + - plotly.graph_objs.layout.scene.Annotation + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Annotation is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Annotation + - plotly.graph_objs.layout.scene.Annotation + + """ + warnings.warn( + """plotly.graph_objs.Annotation is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Annotation + - plotly.graph_objs.layout.scene.Annotation +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class ColorBar(dict): + """ + plotly.graph_objs.ColorBar is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.marker.ColorBar + - plotly.graph_objs.surface.ColorBar + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.ColorBar is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.marker.ColorBar + - plotly.graph_objs.surface.ColorBar + - etc. + + """ + warnings.warn( + """plotly.graph_objs.ColorBar is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.marker.ColorBar + - plotly.graph_objs.surface.ColorBar + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Contours(dict): + """ + plotly.graph_objs.Contours is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.contour.Contours + - plotly.graph_objs.surface.Contours + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Contours is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.contour.Contours + - plotly.graph_objs.surface.Contours + - etc. + + """ + warnings.warn( + """plotly.graph_objs.Contours is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.contour.Contours + - plotly.graph_objs.surface.Contours + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class ErrorX(dict): + """ + plotly.graph_objs.ErrorX is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.ErrorX + - plotly.graph_objs.histogram.ErrorX + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.ErrorX is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.ErrorX + - plotly.graph_objs.histogram.ErrorX + - etc. + + """ + warnings.warn( + """plotly.graph_objs.ErrorX is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.ErrorX + - plotly.graph_objs.histogram.ErrorX + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class ErrorY(dict): + """ + plotly.graph_objs.ErrorY is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.ErrorY + - plotly.graph_objs.histogram.ErrorY + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.ErrorY is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.ErrorY + - plotly.graph_objs.histogram.ErrorY + - etc. + + """ + warnings.warn( + """plotly.graph_objs.ErrorY is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.ErrorY + - plotly.graph_objs.histogram.ErrorY + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class ErrorZ(dict): + """ + plotly.graph_objs.ErrorZ is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter3d.ErrorZ + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.ErrorZ is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter3d.ErrorZ + + """ + warnings.warn( + """plotly.graph_objs.ErrorZ is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter3d.ErrorZ +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Font(dict): + """ + plotly.graph_objs.Font is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Font + - plotly.graph_objs.layout.hoverlabel.Font + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Font is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Font + - plotly.graph_objs.layout.hoverlabel.Font + - etc. + + """ + warnings.warn( + """plotly.graph_objs.Font is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Font + - plotly.graph_objs.layout.hoverlabel.Font + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Legend(dict): + """ + plotly.graph_objs.Legend is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Legend + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Legend is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Legend + + """ + warnings.warn( + """plotly.graph_objs.Legend is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Legend +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Line(dict): + """ + plotly.graph_objs.Line is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Line + - plotly.graph_objs.layout.shape.Line + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Line is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Line + - plotly.graph_objs.layout.shape.Line + - etc. + + """ + warnings.warn( + """plotly.graph_objs.Line is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Line + - plotly.graph_objs.layout.shape.Line + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Margin(dict): + """ + plotly.graph_objs.Margin is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Margin + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Margin is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Margin + + """ + warnings.warn( + """plotly.graph_objs.Margin is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Margin +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Marker(dict): + """ + plotly.graph_objs.Marker is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Marker + - plotly.graph_objs.histogram.selected.Marker + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Marker is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Marker + - plotly.graph_objs.histogram.selected.Marker + - etc. + + """ + warnings.warn( + """plotly.graph_objs.Marker is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Marker + - plotly.graph_objs.histogram.selected.Marker + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class RadialAxis(dict): + """ + plotly.graph_objs.RadialAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.RadialAxis + - plotly.graph_objs.layout.polar.RadialAxis + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.RadialAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.RadialAxis + - plotly.graph_objs.layout.polar.RadialAxis + + """ + warnings.warn( + """plotly.graph_objs.RadialAxis is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.RadialAxis + - plotly.graph_objs.layout.polar.RadialAxis +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Scene(dict): + """ + plotly.graph_objs.Scene is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Scene + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Scene is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Scene + + """ + warnings.warn( + """plotly.graph_objs.Scene is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.Scene +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Stream(dict): + """ + plotly.graph_objs.Stream is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Stream + - plotly.graph_objs.area.Stream + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Stream is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Stream + - plotly.graph_objs.area.Stream + + """ + warnings.warn( + """plotly.graph_objs.Stream is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.scatter.Stream + - plotly.graph_objs.area.Stream +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class XAxis(dict): + """ + plotly.graph_objs.XAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.XAxis + - plotly.graph_objs.layout.scene.XAxis + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.XAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.XAxis + - plotly.graph_objs.layout.scene.XAxis + + """ + warnings.warn( + """plotly.graph_objs.XAxis is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.XAxis + - plotly.graph_objs.layout.scene.XAxis +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class YAxis(dict): + """ + plotly.graph_objs.YAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.YAxis + - plotly.graph_objs.layout.scene.YAxis + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.YAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.YAxis + - plotly.graph_objs.layout.scene.YAxis + + """ + warnings.warn( + """plotly.graph_objs.YAxis is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.YAxis + - plotly.graph_objs.layout.scene.YAxis +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class ZAxis(dict): + """ + plotly.graph_objs.ZAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.scene.ZAxis + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.ZAxis is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.layout.scene.ZAxis + + """ + warnings.warn( + """plotly.graph_objs.ZAxis is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.layout.scene.ZAxis +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class XBins(dict): + """ + plotly.graph_objs.XBins is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.histogram.XBins + - plotly.graph_objs.histogram2d.XBins + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.XBins is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.histogram.XBins + - plotly.graph_objs.histogram2d.XBins + + """ + warnings.warn( + """plotly.graph_objs.XBins is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.histogram.XBins + - plotly.graph_objs.histogram2d.XBins +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class YBins(dict): + """ + plotly.graph_objs.YBins is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.histogram.YBins + - plotly.graph_objs.histogram2d.YBins + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.YBins is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.histogram.YBins + - plotly.graph_objs.histogram2d.YBins + + """ + warnings.warn( + """plotly.graph_objs.YBins is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.histogram.YBins + - plotly.graph_objs.histogram2d.YBins +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Trace(dict): + """ + plotly.graph_objs.Trace is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.Scatter + - plotly.graph_objs.Bar + - plotly.graph_objs.Area + - plotly.graph_objs.Histogram + - etc. + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Trace is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.Scatter + - plotly.graph_objs.Bar + - plotly.graph_objs.Area + - plotly.graph_objs.Histogram + - etc. + + """ + warnings.warn( + """plotly.graph_objs.Trace is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.Scatter + - plotly.graph_objs.Bar + - plotly.graph_objs.Area + - plotly.graph_objs.Histogram + - etc. +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) + + +class Histogram2dcontour(dict): + """ + plotly.graph_objs.Histogram2dcontour is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.Histogram2dContour + + """ + + def __init__(self, *args, **kwargs): + """ + plotly.graph_objs.Histogram2dcontour is deprecated. + Please replace it with one of the following more specific types + - plotly.graph_objs.Histogram2dContour + + """ + warnings.warn( + """plotly.graph_objs.Histogram2dcontour is deprecated. +Please replace it with one of the following more specific types + - plotly.graph_objs.Histogram2dContour +""", + DeprecationWarning, + ) + super().__init__(*args, **kwargs) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_figure.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_figure.py new file mode 100644 index 0000000..a3c9f83 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_figure.py @@ -0,0 +1,24433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseFigure + + +class Figure(BaseFigure): + def __init__( + self, data=None, layout=None, frames=None, skip_invalid=False, **kwargs + ): + """ + Create a new :class:Figure instance + + Parameters + ---------- + data + The 'data' property is a tuple of trace instances + that may be specified as: + - A list or tuple of trace instances + (e.g. [Scatter(...), Bar(...)]) + - A single trace instance + (e.g. Scatter(...), Bar(...), etc.) + - A list or tuple of dicts of string/value properties where: + - The 'type' property specifies the trace type + One of: ['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', 'sankey', + 'scatter', 'scatter3d', 'scattercarpet', + 'scattergeo', 'scattergl', 'scattermap', + 'scattermapbox', 'scatterpolar', + 'scatterpolargl', 'scattersmith', + 'scatterternary', 'splom', 'streamtube', + 'sunburst', 'surface', 'table', 'treemap', + 'violin', 'volume', 'waterfall'] + + - All remaining properties are passed to the constructor of + the specified trace type + + (e.g. [{'type': 'scatter', ...}, {'type': 'bar, ...}]) + + layout + The 'layout' property is an instance of Layout + that may be specified as: + - An instance of :class:`plotly.graph_objs.Layout` + - A dict of string/value properties that will be passed + to the Layout constructor + + frames + The 'frames' property is a tuple of instances of + Frame that may be specified as: + - A list or tuple of instances of plotly.graph_objs.Frame + - A list or tuple of dicts of string/value properties that + will be passed to the Frame constructor + + skip_invalid: bool + If True, invalid properties in the figure specification will be + skipped silently. If False (default) invalid properties in the + figure specification will result in a ValueError + + Raises + ------ + ValueError + if a property in the specification of data, layout, or frames + is invalid AND skip_invalid is False + """ + super().__init__(data, layout, frames, skip_invalid, **kwargs) + + def update(self, dict1=None, overwrite=False, **kwargs) -> "Figure": + """ + + Update the properties of the figure with a dict and/or with + keyword arguments. + + This recursively updates the structure of the figure + object with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Examples + -------- + >>> import plotly.graph_objs as go + >>> fig = go.Figure(data=[{'y': [1, 2, 3]}]) + >>> fig.update(data=[{'y': [4, 5, 6]}]) # doctest: +ELLIPSIS + Figure(...) + >>> fig.to_plotly_json() # doctest: +SKIP + {'data': [{'type': 'scatter', + 'uid': 'e86a7c7a-346a-11e8-8aa8-a0999b0c017b', + 'y': array([4, 5, 6], dtype=int32)}], + 'layout': {}} + + >>> fig = go.Figure(layout={'xaxis': + ... {'color': 'green', + ... 'range': [0, 1]}}) + >>> fig.update({'layout': {'xaxis': {'color': 'pink'}}}) # doctest: +ELLIPSIS + Figure(...) + >>> fig.to_plotly_json() # doctest: +SKIP + {'data': [], + 'layout': {'xaxis': + {'color': 'pink', + 'range': [0, 1]}}} + + Returns + ------- + BaseFigure + Updated figure + + """ + return super().update(dict1, overwrite, **kwargs) + + def update_traces( + self, + patch=None, + selector=None, + row=None, + col=None, + secondary_y=None, + overwrite=False, + **kwargs, + ) -> "Figure": + """ + + Perform a property update operation on all traces that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all traces that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + **kwargs + Additional property updates to apply to each selected trace. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + + """ + return super().update_traces( + patch, selector, row, col, secondary_y, overwrite, **kwargs + ) + + def update_layout(self, dict1=None, overwrite=False, **kwargs) -> "Figure": + """ + + Update the properties of the figure's layout with a dict and/or with + keyword arguments. + + This recursively updates the structure of the original + layout with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Returns + ------- + BaseFigure + The Figure object that the update_layout method was called on + + """ + return super().update_layout(dict1, overwrite, **kwargs) + + def for_each_trace( + self, fn, selector=None, row=None, col=None, secondary_y=None + ) -> "Figure": + """ + + Apply a function to all traces that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single trace object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + + """ + return super().for_each_trace(fn, selector, row, col, secondary_y) + + def add_trace( + self, trace, row=None, col=None, secondary_y=None, exclude_empty_subplots=False + ) -> "Figure": + """ + + Add a trace to the figure + + Parameters + ---------- + trace : BaseTraceType or dict + Either: + - An instances of a trace classe from the plotly.graph_objs + package (e.g plotly.graph_objs.Scatter, plotly.graph_objs.Bar) + - or a dicts where: + + - The 'type' property specifies the trace type (e.g. + 'scatter', 'bar', 'area', etc.). If the dict has no 'type' + property then 'scatter' is assumed. + - All remaining properties are passed to the constructor + of the specified trace type. + + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`. + If 'all', addresses all rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`. + If 'all', addresses all columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + * The trace argument is a 2D cartesian trace + (scatter, bar, etc.) + exclude_empty_subplots: boolean + If True, the trace will not be added to subplots that don't already + have traces. + Returns + ------- + BaseFigure + The Figure that add_trace was called on + + Examples + -------- + + >>> from plotly import subplots + >>> import plotly.graph_objs as go + + Add two Scatter traces to a figure + + >>> fig = go.Figure() + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2])) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2])) # doctest: +ELLIPSIS + Figure(...) + + + Add two Scatter traces to vertically stacked subplots + + >>> fig = subplots.make_subplots(rows=2) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + """ + return super().add_trace(trace, row, col, secondary_y, exclude_empty_subplots) + + def add_traces( + self, + data, + rows=None, + cols=None, + secondary_ys=None, + exclude_empty_subplots=False, + ) -> "Figure": + """ + + Add traces to the figure + + Parameters + ---------- + data : list[BaseTraceType or dict] + A list of trace specifications to be added. + Trace specifications may be either: + + - Instances of trace classes from the plotly.graph_objs + package (e.g plotly.graph_objs.Scatter, plotly.graph_objs.Bar) + - Dicts where: + + - The 'type' property specifies the trace type (e.g. + 'scatter', 'bar', 'area', etc.). If the dict has no 'type' + property then 'scatter' is assumed. + - All remaining properties are passed to the constructor + of the specified trace type. + + rows : None, list[int], or int (default None) + List of subplot row indexes (starting from 1) for the traces to be + added. Only valid if figure was created using + `plotly.tools.make_subplots` + If a single integer is passed, all traces will be added to row number + + cols : None or list[int] (default None) + List of subplot column indexes (starting from 1) for the traces + to be added. Only valid if figure was created using + `plotly.tools.make_subplots` + If a single integer is passed, all traces will be added to column number + + + secondary_ys: None or list[boolean] (default None) + List of secondary_y booleans for traces to be added. See the + docstring for `add_trace` for more info. + + exclude_empty_subplots: boolean + If True, the trace will not be added to subplots that don't already + have traces. + + Returns + ------- + BaseFigure + The Figure that add_traces was called on + + Examples + -------- + + >>> from plotly import subplots + >>> import plotly.graph_objs as go + + Add two Scatter traces to a figure + + >>> fig = go.Figure() + >>> fig.add_traces([go.Scatter(x=[1,2,3], y=[2,1,2]), + ... go.Scatter(x=[1,2,3], y=[2,1,2])]) # doctest: +ELLIPSIS + Figure(...) + + Add two Scatter traces to vertically stacked subplots + + >>> fig = subplots.make_subplots(rows=2) + >>> fig.add_traces([go.Scatter(x=[1,2,3], y=[2,1,2]), + ... go.Scatter(x=[1,2,3], y=[2,1,2])], + ... rows=[1, 2], cols=[1, 1]) # doctest: +ELLIPSIS + Figure(...) + + """ + return super().add_traces( + data, rows, cols, secondary_ys, exclude_empty_subplots + ) + + def add_vline( + self, + x, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "Figure": + """ + + Add a vertical line to a plot or subplot that extends infinitely in the + y-dimension. + + Parameters + ---------- + x: float or int + A number representing the x coordinate of the vertical line. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the line. Example positions are "bottom left", "right top", + "right", "bottom". If an annotation is added but annotation_position is + not specified, this defaults to "top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_vline( + x, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def add_hline( + self, + y, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "Figure": + """ + + Add a horizontal line to a plot or subplot that extends infinitely in the + x-dimension. + + Parameters + ---------- + y: float or int + A number representing the y coordinate of the horizontal line. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the line. Example positions are "bottom left", "right top", + "right", "bottom". If an annotation is added but annotation_position is + not specified, this defaults to "top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_hline( + y, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def add_vrect( + self, + x0, + x1, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "Figure": + """ + + Add a rectangle to a plot or subplot that extends infinitely in the + y-dimension. + + Parameters + ---------- + x0: float or int + A number representing the x coordinate of one side of the rectangle. + x1: float or int + A number representing the x coordinate of the other side of the rectangle. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["inside", "outside"], ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the rectangle. Example positions are "outside top left", "inside + bottom", "right", "inside left", "inside" ("outside" is not supported). If + an annotation is added but annotation_position is not specified this + defaults to "inside top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_vrect( + x0, x1, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def add_hrect( + self, + y0, + y1, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "Figure": + """ + + Add a rectangle to a plot or subplot that extends infinitely in the + x-dimension. + + Parameters + ---------- + y0: float or int + A number representing the y coordinate of one side of the rectangle. + y1: float or int + A number representing the y coordinate of the other side of the rectangle. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["inside", "outside"], ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the rectangle. Example positions are "outside top left", "inside + bottom", "right", "inside left", "inside" ("outside" is not supported). If + an annotation is added but annotation_position is not specified this + defaults to "inside top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_hrect( + y0, y1, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def set_subplots(self, rows=None, cols=None, **make_subplots_args) -> "Figure": + """ + + Add subplots to this figure. If the figure already contains subplots, + then this throws an error. Accepts any keyword arguments that + plotly.subplots.make_subplots accepts. + + """ + return super().set_subplots(rows, cols, **make_subplots_args) + + def add_bar( + self, + alignmentgroup=None, + base=None, + basesrc=None, + cliponaxis=None, + constraintext=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + offsetsrc=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + widthsrc=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Bar trace + + The data visualized by the span of the bars is set in `y` if + `orientation` is set to "v" (the default) and the labels are + set in `x`. By setting `orientation` to "h", the roles are + interchanged. + + Parameters + ---------- + alignmentgroup + 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. + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.bar.ErrorX` instance or + dict with compatible properties + error_y + :class:`plotly.graph_objects.bar.ErrorY` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.bar.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.bar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.bar.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.bar.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.bar.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.bar.Unselected` instance + or dict with compatible properties + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Bar + + new_trace = Bar( + alignmentgroup=alignmentgroup, + base=base, + basesrc=basesrc, + cliponaxis=cliponaxis, + constraintext=constraintext, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + error_x=error_x, + error_y=error_y, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetgroup=offsetgroup, + offsetsrc=offsetsrc, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + width=width, + widthsrc=widthsrc, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_barpolar( + self, + base=None, + basesrc=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetsrc=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + widthsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Barpolar trace + + The data visualized by the radial span of the bars is set in + `r` + + Parameters + ---------- + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.barpolar.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.barpolar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.barpolar.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + Shifts the angular position where the bar is drawn (in + "thetatunit" units). + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.barpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.barpolar.Stream` instance + or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.barpolar.Unselected` + instance or dict with compatible properties + visible + 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). + width + Sets the bar angular width (in "thetaunit" units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Barpolar + + new_trace = Barpolar( + base=base, + basesrc=basesrc, + customdata=customdata, + customdatasrc=customdatasrc, + dr=dr, + dtheta=dtheta, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetsrc=offsetsrc, + opacity=opacity, + r=r, + r0=r0, + rsrc=rsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + theta=theta, + theta0=theta0, + thetasrc=thetasrc, + thetaunit=thetaunit, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + width=width, + widthsrc=widthsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_box( + self, + alignmentgroup=None, + boxmean=None, + boxpoints=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + jitter=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lowerfence=None, + lowerfencesrc=None, + marker=None, + mean=None, + meansrc=None, + median=None, + mediansrc=None, + meta=None, + metasrc=None, + name=None, + notched=None, + notchspan=None, + notchspansrc=None, + notchwidth=None, + offsetgroup=None, + opacity=None, + orientation=None, + pointpos=None, + q1=None, + q1src=None, + q3=None, + q3src=None, + quartilemethod=None, + sd=None, + sdmultiple=None, + sdsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + showwhiskers=None, + sizemode=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + upperfence=None, + upperfencesrc=None, + visible=None, + whiskerwidth=None, + width=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Box trace + + Each box spans from quartile 1 (Q1) to quartile 3 (Q3). The + second quartile (Q2, i.e. the median) is marked by a line + inside the box. The fences grow outward from the boxes' edges, + by default they span +/- 1.5 times the interquartile range + (IQR: Q3-Q1), The sample mean and standard deviation as well as + notches and the sample, outlier and suspected outliers points + can be optionally added to the box plot. The values and + positions corresponding to each boxes can be input using two + signatures. The first signature expects users to supply the + sample values in the `y` data array for vertical boxes (`x` for + horizontal boxes). By supplying an `x` (`y`) array, one box per + distinct `x` (`y`) value is drawn If no `x` (`y`) list is + provided, a single box is drawn. In this case, the box is + positioned with the trace `name` or with `x0` (`y0`) if + provided. The second signature expects users to supply the + boxes corresponding Q1, median and Q3 statistics in the `q1`, + `median` and `q3` data arrays respectively. Other box features + relying on statistics namely `lowerfence`, `upperfence`, + `notchspan` can be set directly by the users. To have plotly + compute them or to show sample points besides the boxes, users + can set the `y` data array for vertical boxes (`x` for + horizontal boxes) to a 2D array with the outer length + corresponding to the number of boxes in the traces and the + inner length corresponding the sample size. + + Parameters + ---------- + alignmentgroup + 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. + boxmean + 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. + boxpoints + 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". + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step for multi-box traces set + using q1/median/q3. + dy + Sets the y coordinate step for multi-box traces set + using q1/median/q3. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.box.Hoverlabel` instance + or dict with compatible properties + hoveron + Do the hover effects highlight individual boxes or + sample points or both? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.box.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.box.Line` instance or dict + with compatible properties + lowerfence + 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. + lowerfencesrc + Sets the source reference on Chart Studio Cloud for + `lowerfence`. + marker + :class:`plotly.graph_objects.box.Marker` instance or + dict with compatible properties + mean + 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. + meansrc + Sets the source reference on Chart Studio Cloud for + `mean`. + median + Sets the median values. There should be as many items + as the number of boxes desired. + mediansrc + Sets the source reference on Chart Studio Cloud for + `median`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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 + notched + 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. + notchspan + 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. + notchspansrc + Sets the source reference on Chart Studio Cloud for + `notchspan`. + notchwidth + Sets the width of the notches relative to the box' + width. For example, with 0, the notches are as wide as + the box(es). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the box(es). If "v" ("h"), the + distribution is visualized along the vertical + (horizontal). + pointpos + 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 + q1 + Sets the Quartile 1 values. There should be as many + items as the number of boxes desired. + q1src + Sets the source reference on Chart Studio Cloud for + `q1`. + q3 + Sets the Quartile 3 values. There should be as many + items as the number of boxes desired. + q3src + Sets the source reference on Chart Studio Cloud for + `q3`. + quartilemethod + 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. + sd + 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. + sdmultiple + Scales the box size when sizemode=sd Allowing boxes to + be drawn across any stddev range For example 1-stddev, + 3-stddev, 5-stddev + sdsrc + Sets the source reference on Chart Studio Cloud for + `sd`. + selected + :class:`plotly.graph_objects.box.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showwhiskers + Determines whether or not whiskers are visible. + Defaults to true for `sizemode` "quartiles", false for + "sd". + sizemode + 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 + stream + :class:`plotly.graph_objects.box.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.box.Unselected` instance + or dict with compatible properties + upperfence + 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. + upperfencesrc + Sets the source reference on Chart Studio Cloud for + `upperfence`. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Box + + new_trace = Box( + alignmentgroup=alignmentgroup, + boxmean=boxmean, + boxpoints=boxpoints, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + jitter=jitter, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + lowerfence=lowerfence, + lowerfencesrc=lowerfencesrc, + marker=marker, + mean=mean, + meansrc=meansrc, + median=median, + mediansrc=mediansrc, + meta=meta, + metasrc=metasrc, + name=name, + notched=notched, + notchspan=notchspan, + notchspansrc=notchspansrc, + notchwidth=notchwidth, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + pointpos=pointpos, + q1=q1, + q1src=q1src, + q3=q3, + q3src=q3src, + quartilemethod=quartilemethod, + sd=sd, + sdmultiple=sdmultiple, + sdsrc=sdsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showwhiskers=showwhiskers, + sizemode=sizemode, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + upperfence=upperfence, + upperfencesrc=upperfencesrc, + visible=visible, + whiskerwidth=whiskerwidth, + width=width, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_candlestick( + self, + close=None, + closesrc=None, + customdata=None, + customdatasrc=None, + decreasing=None, + high=None, + highsrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + low=None, + lowsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + open=None, + opensrc=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + whiskerwidth=None, + x=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + yaxis=None, + yhoverformat=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Candlestick trace + + The candlestick is a style of financial chart describing open, + high, low and close for a given `x` coordinate (most likely + time). 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 value are called increasing + (decreasing). By default, increasing candles are drawn in green + whereas decreasing are drawn in red. + + Parameters + ---------- + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.candlestick.Decreasing` + instance or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.candlestick.Hoverlabel` + instance or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.candlestick.Increasing` + instance or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.candlestick.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.candlestick.Line` instance + or dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.candlestick.Stream` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Candlestick + + new_trace = Candlestick( + close=close, + closesrc=closesrc, + customdata=customdata, + customdatasrc=customdatasrc, + decreasing=decreasing, + high=high, + highsrc=highsrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + increasing=increasing, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + low=low, + lowsrc=lowsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + open=open, + opensrc=opensrc, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + whiskerwidth=whiskerwidth, + x=x, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + yaxis=yaxis, + yhoverformat=yhoverformat, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_carpet( + self, + a=None, + a0=None, + aaxis=None, + asrc=None, + b=None, + b0=None, + baxis=None, + bsrc=None, + carpet=None, + cheaterslope=None, + color=None, + customdata=None, + customdatasrc=None, + da=None, + db=None, + font=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + stream=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xsrc=None, + y=None, + yaxis=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Carpet trace + + The data describing carpet axis layout is set in `y` and + (optionally) also `x`. If only `y` is present, `x` the plot is + interpreted as a cheater plot and is filled in using the `y` + values. `x` and `y` may either be 2D arrays matching with each + dimension matching that of `a` and `b`, or they may be 1D + arrays with total length equal to that of `a` and `b`. + + Parameters + ---------- + a + An array containing values of the first parameter value + a0 + Alternate to `a`. Builds a linear space of a + coordinates. Use with `da` where `a0` is the starting + coordinate and `da` the step. + aaxis + :class:`plotly.graph_objects.carpet.Aaxis` instance or + dict with compatible properties + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + A two dimensional array of y coordinates at each carpet + point. + b0 + Alternate to `b`. Builds a linear space of a + coordinates. Use with `db` where `b0` is the starting + coordinate and `db` the step. + baxis + :class:`plotly.graph_objects.carpet.Baxis` instance or + dict with compatible properties + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + cheaterslope + The shift applied to each successive row of data in + creating a cheater plot. Only used if `x` is been + omitted. + color + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the a coordinate step. See `a0` for more info. + db + Sets the b coordinate step. See `b0` for more info. + font + The default font used for axis & tick labels on this + carpet + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.carpet.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + stream + :class:`plotly.graph_objects.carpet.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + 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. + xaxis + 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. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + A two dimensional array of y coordinates at each carpet + point. + yaxis + 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. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Carpet + + new_trace = Carpet( + a=a, + a0=a0, + aaxis=aaxis, + asrc=asrc, + b=b, + b0=b0, + baxis=baxis, + bsrc=bsrc, + carpet=carpet, + cheaterslope=cheaterslope, + color=color, + customdata=customdata, + customdatasrc=customdatasrc, + da=da, + db=db, + font=font, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + stream=stream, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_choropleth( + self, + autocolorscale=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geo=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locationmode=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Choropleth trace + + The data that describes the choropleth value-to-color mapping + is set in `z`. The geographic locations corresponding to each + value in `z` are set in `locations`. + + Parameters + ---------- + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choropleth.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choropleth.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choropleth.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locationmode + 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. + locations + Sets the coordinates via location IDs or names. See + `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choropleth.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choropleth.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choropleth.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choropleth.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Choropleth + + new_trace = Choropleth( + autocolorscale=autocolorscale, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + geo=geo, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + locationmode=locationmode, + locations=locations, + locationssrc=locationssrc, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + reversescale=reversescale, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_choroplethmap( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Choroplethmap trace + + GeoJSON features to be filled are set in `geojson` The data + that describes the choropleth value-to-color mapping is set in + `locations` and `z`. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmap.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmap.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmap.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Choroplethmap + + new_trace = Choroplethmap( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + locations=locations, + locationssrc=locationssrc, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + reversescale=reversescale, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_choroplethmapbox( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Choroplethmapbox trace + + "choroplethmapbox" trace is deprecated! Please consider + switching to the "choroplethmap" trace type and `map` subplots. + Learn more at: https://plotly.com/python/maplibre-migration/ as + well as https://plotly.com/javascript/maplibre-migration/ + GeoJSON features to be filled are set in `geojson` The data + that describes the choropleth value-to-color mapping is set in + `locations` and `z`. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmapbox.Hoverlabe + l` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmapbox.Legendgro + uptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmapbox.Unselecte + d` instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Choroplethmapbox + + new_trace = Choroplethmapbox( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + locations=locations, + locationssrc=locationssrc, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + reversescale=reversescale, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_cone( + self, + anchor=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + sizemode=None, + sizeref=None, + stream=None, + text=None, + textsrc=None, + u=None, + uhoverformat=None, + uid=None, + uirevision=None, + usrc=None, + v=None, + vhoverformat=None, + visible=None, + vsrc=None, + w=None, + whoverformat=None, + wsrc=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Cone trace + + Use cone traces to visualize vector fields. Specify a vector + field using 6 1D arrays, 3 position arrays `x`, `y` and `z` and + 3 vector component arrays `u`, `v`, `w`. The cones are drawn + exactly at the positions given by `x`, `y` and `z`. + + Parameters + ---------- + anchor + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.cone.ColorBar` instance or + dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.cone.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.cone.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.cone.Lighting` instance or + dict with compatible properties + lightposition + :class:`plotly.graph_objects.cone.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizemode + 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". + sizeref + 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. + stream + :class:`plotly.graph_objects.cone.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field and of the + displayed cones. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field and of the + displayed cones. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field and of the + displayed cones. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Cone + + new_trace = Cone( + anchor=anchor, + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + sizemode=sizemode, + sizeref=sizeref, + stream=stream, + text=text, + textsrc=textsrc, + u=u, + uhoverformat=uhoverformat, + uid=uid, + uirevision=uirevision, + usrc=usrc, + v=v, + vhoverformat=vhoverformat, + visible=visible, + vsrc=vsrc, + w=w, + whoverformat=whoverformat, + wsrc=wsrc, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_contour( + self, + autocolorscale=None, + autocontour=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + contours=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoverongaps=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textfont=None, + textsrc=None, + texttemplate=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + xtype=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + ytype=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Contour trace + + The data from which contour lines are computed is set in `z`. + Data in `z` must be a 2D list of numbers. Say that `z` has N + rows and M columns, then by default, these N rows correspond to + N y coordinates (set in `y` or auto-generated) and the M + columns correspond to M x coordinates (set in `x` or auto- + generated). By setting `transpose` to True, the above behavior + is flipped. + + Parameters + ---------- + autocolorscale + 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. + autocontour + 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`. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contour.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + contours + :class:`plotly.graph_objects.contour.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.contour.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contour.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contour.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contour.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Contour + + new_trace = Contour( + autocolorscale=autocolorscale, + autocontour=autocontour, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + connectgaps=connectgaps, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoverongaps=hoverongaps, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + ncontours=ncontours, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textfont=textfont, + textsrc=textsrc, + texttemplate=texttemplate, + transpose=transpose, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + xtype=xtype, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + ytype=ytype, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zorder=zorder, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_contourcarpet( + self, + a=None, + a0=None, + asrc=None, + atype=None, + autocolorscale=None, + autocontour=None, + b=None, + b0=None, + bsrc=None, + btype=None, + carpet=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contours=None, + customdata=None, + customdatasrc=None, + da=None, + db=None, + fillcolor=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + xaxis=None, + yaxis=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Contourcarpet trace + + Plots contours on either the first carpet axis or the carpet + axis with a matching `carpet` attribute. Data `z` is + interpreted as matching that of the corresponding carpet axis. + + Parameters + ---------- + a + Sets the x coordinates. + a0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + atype + 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). + autocolorscale + 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. + autocontour + 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`. + b + Sets the y coordinates. + b0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + btype + 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) + carpet + The `carpet` of the carpet axes on which this contour + trace lies + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contourcarpet.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.contourcarpet.Contours` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the x coordinate step. See `x0` for more info. + db + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contourcarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contourcarpet.Line` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contourcarpet.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + xaxis + 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. + yaxis + 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. + z + Sets the z data. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Contourcarpet + + new_trace = Contourcarpet( + a=a, + a0=a0, + asrc=asrc, + atype=atype, + autocolorscale=autocolorscale, + autocontour=autocontour, + b=b, + b0=b0, + bsrc=bsrc, + btype=btype, + carpet=carpet, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + da=da, + db=db, + fillcolor=fillcolor, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + ncontours=ncontours, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textsrc=textsrc, + transpose=transpose, + uid=uid, + uirevision=uirevision, + visible=visible, + xaxis=xaxis, + yaxis=yaxis, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zorder=zorder, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_densitymap( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lon=None, + lonsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + radius=None, + radiussrc=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Densitymap trace + + Draws a bivariate kernel density estimation with a Gaussian + kernel from `lon` and `lat` coordinates and optional `z` values + using a colorscale. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymap + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Densitymap + + new_trace = Densitymap( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lon=lon, + lonsrc=lonsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + radius=radius, + radiussrc=radiussrc, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_densitymapbox( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lon=None, + lonsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + radius=None, + radiussrc=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Densitymapbox trace + + "densitymapbox" trace is deprecated! Please consider switching + to the "densitymap" trace type and `map` subplots. Learn more + at: https://plotly.com/python/maplibre-migration/ as well as + https://plotly.com/javascript/maplibre-migration/ Draws a + bivariate kernel density estimation with a Gaussian kernel from + `lon` and `lat` coordinates and optional `z` values using a + colorscale. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymapbox + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Densitymapbox + + new_trace = Densitymapbox( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lon=lon, + lonsrc=lonsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + radius=radius, + radiussrc=radiussrc, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_funnel( + self, + alignmentgroup=None, + cliponaxis=None, + connector=None, + constraintext=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + visible=None, + width=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Funnel trace + + Visualize stages in a process using length-encoded bars. This + trace can be used to show data in either a part-to-whole + representation wherein each item appears in a single stage, or + in a "drop-off" representation wherein each item appears in + each stage it traversed. See also the "funnelarea" trace type + for a different approach to visualizing funnel data. + + Parameters + ---------- + alignmentgroup + 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. + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.funnel.Connector` instance + or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnel.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnel.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnel.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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". + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnel.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple funnels, percentages & + totals are computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Funnel + + new_trace = Funnel( + alignmentgroup=alignmentgroup, + cliponaxis=cliponaxis, + connector=connector, + constraintext=constraintext, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + visible=visible, + width=width, + x=x, + x0=x0, + xaxis=xaxis, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_funnelarea( + self, + aspectratio=None, + baseratio=None, + customdata=None, + customdatasrc=None, + dlabel=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + label0=None, + labels=None, + labelssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + scalegroup=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + title=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Funnelarea trace + + Visualize stages in a process using area-encoded trapezoids. + This trace can be used to show data in a part-to-whole + representation similar to a "pie" trace, wherein each item + appears in a single stage. See also the "funnel" trace type for + a different approach to visualizing funnel data. + + Parameters + ---------- + aspectratio + Sets the ratio between height and width + baseratio + Sets the ratio between bottom length and maximum top + length. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.funnelarea.Domain` + instance or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnelarea.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnelarea.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnelarea.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnelarea.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.funnelarea.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Funnelarea + + new_trace = Funnelarea( + aspectratio=aspectratio, + baseratio=baseratio, + customdata=customdata, + customdatasrc=customdatasrc, + dlabel=dlabel, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + label0=label0, + labels=labels, + labelssrc=labelssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + scalegroup=scalegroup, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + title=title, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_heatmap( + self, + autocolorscale=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoverongaps=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textfont=None, + textsrc=None, + texttemplate=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xgap=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + xtype=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + ygap=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + ytype=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsmooth=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Heatmap trace + + The data that describes the heatmap value-to-color mapping is + set in `z`. Data in `z` can either be a 2D list of values + (ragged or not) or a 1D array of values. In the case where `z` + is a 2D list, say that `z` has N rows and M columns. Then, by + default, the resulting heatmap will have N partitions along the + y axis and M partitions along the x axis. In other words, the + i-th row/ j-th column cell in `z` is mapped to the i-th + partition of the y axis (starting from the bottom of the plot) + and the j-th partition of the x-axis (starting from the left of + the plot). This behavior can be flipped by using `transpose`. + Moreover, `x` (`y`) can be provided with M or M+1 (N or N+1) + elements. If M (N), then the coordinates correspond to the + center of the heatmap cells and the cells have equal width. If + M+1 (N+1), then the coordinates correspond to the edges of the + heatmap cells. In the case where `z` is a 1D list, the x and y + coordinates must be provided in `x` and `y` respectively to + form data triplets. + + Parameters + ---------- + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.heatmap.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.heatmap.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.heatmap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.heatmap.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Heatmap + + new_trace = Heatmap( + autocolorscale=autocolorscale, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoverongaps=hoverongaps, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textfont=textfont, + textsrc=textsrc, + texttemplate=texttemplate, + transpose=transpose, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xgap=xgap, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + xtype=xtype, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + ygap=ygap, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + ytype=ytype, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zorder=zorder, + zsmooth=zsmooth, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_histogram( + self, + alignmentgroup=None, + autobinx=None, + autobiny=None, + bingroup=None, + cliponaxis=None, + constraintext=None, + cumulative=None, + customdata=None, + customdatasrc=None, + error_x=None, + error_y=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + offsetgroup=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + xaxis=None, + xbins=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybins=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Histogram trace + + The sample data from which statistics are computed is set in + `x` for vertically spanning histograms and in `y` for + horizontally spanning histograms. Binning options are set + `xbins` and `ybins` respectively if no aggregation data is + provided. + + Parameters + ---------- + alignmentgroup + 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. + autobinx + 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. + autobiny + 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. + bingroup + 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` + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + cumulative + :class:`plotly.graph_objects.histogram.Cumulative` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.histogram.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.histogram.ErrorY` instance + or dict with compatible properties + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.histogram.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.histogram.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the text font. + textposition + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.histogram.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbins + :class:`plotly.graph_objects.histogram.XBins` instance + or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybins + :class:`plotly.graph_objects.histogram.YBins` instance + or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Histogram + + new_trace = Histogram( + alignmentgroup=alignmentgroup, + autobinx=autobinx, + autobiny=autobiny, + bingroup=bingroup, + cliponaxis=cliponaxis, + constraintext=constraintext, + cumulative=cumulative, + customdata=customdata, + customdatasrc=customdatasrc, + error_x=error_x, + error_y=error_y, + histfunc=histfunc, + histnorm=histnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + nbinsx=nbinsx, + nbinsy=nbinsy, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + x=x, + xaxis=xaxis, + xbins=xbins, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ybins=ybins, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_histogram2d( + self, + autobinx=None, + autobiny=None, + autocolorscale=None, + bingroup=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + textfont=None, + texttemplate=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xbingroup=None, + xbins=None, + xcalendar=None, + xgap=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybingroup=None, + ybins=None, + ycalendar=None, + ygap=None, + yhoverformat=None, + ysrc=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zsmooth=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Histogram2d trace + + The sample data from which statistics are computed is set in + `x` and `y` (where `x` and `y` represent marginal + distributions, binning is set in `xbins` and `ybins` in this + case) or `z` (where `z` represent the 2D distribution and + binning set, binning is set by `x` and `y` in this case). The + resulting distribution is visualized as a heatmap. + + Parameters + ---------- + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2d.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2d.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram2d.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2d.Stream` + instance or dict with compatible properties + textfont + Sets the text font. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Finally, the template string has access + to variable `z` + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2d.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2d.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Histogram2d + + new_trace = Histogram2d( + autobinx=autobinx, + autobiny=autobiny, + autocolorscale=autocolorscale, + bingroup=bingroup, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + histfunc=histfunc, + histnorm=histnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + nbinsx=nbinsx, + nbinsy=nbinsy, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + textfont=textfont, + texttemplate=texttemplate, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xbingroup=xbingroup, + xbins=xbins, + xcalendar=xcalendar, + xgap=xgap, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ybingroup=ybingroup, + ybins=ybins, + ycalendar=ycalendar, + ygap=ygap, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsmooth=zsmooth, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_histogram2dcontour( + self, + autobinx=None, + autobiny=None, + autocolorscale=None, + autocontour=None, + bingroup=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contours=None, + customdata=None, + customdatasrc=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + textfont=None, + texttemplate=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xbingroup=None, + xbins=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybingroup=None, + ybins=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Histogram2dContour trace + + The sample data from which statistics are computed is set in + `x` and `y` (where `x` and `y` represent marginal + distributions, binning is set in `xbins` and `ybins` in this + case) or `z` (where `z` represent the 2D distribution and + binning set, binning is set by `x` and `y` in this case). The + resulting distribution is visualized as a contour plot. + + Parameters + ---------- + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + autocontour + 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`. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2dcontour.ColorBa + r` instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.histogram2dcontour.Contour + s` instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2dcontour.Hoverla + bel` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2dcontour.Legendg + rouptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.histogram2dcontour.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.histogram2dcontour.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2dcontour.Stream` + instance or dict with compatible properties + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2dcontour.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2dcontour.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Histogram2dContour + + new_trace = Histogram2dContour( + autobinx=autobinx, + autobiny=autobiny, + autocolorscale=autocolorscale, + autocontour=autocontour, + bingroup=bingroup, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + histfunc=histfunc, + histnorm=histnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + nbinsx=nbinsx, + nbinsy=nbinsy, + ncontours=ncontours, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + textfont=textfont, + texttemplate=texttemplate, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xbingroup=xbingroup, + xbins=xbins, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ybingroup=ybingroup, + ybins=ybins, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_icicle( + self, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + labels=None, + labelssrc=None, + leaf=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + pathbar=None, + root=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + tiling=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Icicle trace + + Visualize hierarchal data from leaves (and/or outer branches) + towards root with rectangles. The icicle sectors are determined + by the entries in "labels" or "ids" and in "parents". + + Parameters + ---------- + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.icicle.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.icicle.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.icicle.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.icicle.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.icicle.Marker` instance or + dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.icicle.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.icicle.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.icicle.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.icicle.Tiling` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Icicle + + new_trace = Icicle( + branchvalues=branchvalues, + count=count, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + labels=labels, + labelssrc=labelssrc, + leaf=leaf, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + level=level, + marker=marker, + maxdepth=maxdepth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + parents=parents, + parentssrc=parentssrc, + pathbar=pathbar, + root=root, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + tiling=tiling, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_image( + self, + colormodel=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + source=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + x0=None, + xaxis=None, + y0=None, + yaxis=None, + z=None, + zmax=None, + zmin=None, + zorder=None, + zsmooth=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Image trace + + Display an image, i.e. data on a 2D regular raster. By default, + when an image is displayed in a subplot, its y axis will be + reversed (ie. `autorange: 'reversed'`), constrained to the + domain (ie. `constrain: 'domain'`) and it will have the same + scale as its x axis (ie. `scaleanchor: 'x,`) in order for + pixels to be rendered as squares. + + Parameters + ---------- + colormodel + 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`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Set the pixel's horizontal size. + dy + Set the pixel's vertical size + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.image.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.image.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + source + Specifies the data URI of the image to be visualized. + The URI consists of "data:image/[][;base64]," + stream + :class:`plotly.graph_objects.image.Stream` instance or + dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x0 + 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 + xaxis + 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. + y0 + 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. + yaxis + 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. + z + A 2-dimensional array in which each element is an array + of 3 or 4 numbers representing a color. + zmax + 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]. + zmin + 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]. + zorder + 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`. + zsmooth + Picks a smoothing algorithm used to smooth `z` data. + This only applies for image traces that use the + `source` attribute. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Image + + new_trace = Image( + colormodel=colormodel, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + source=source, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + x0=x0, + xaxis=xaxis, + y0=y0, + yaxis=yaxis, + z=z, + zmax=zmax, + zmin=zmin, + zorder=zorder, + zsmooth=zsmooth, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_indicator( + self, + align=None, + customdata=None, + customdatasrc=None, + delta=None, + domain=None, + gauge=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + mode=None, + name=None, + number=None, + stream=None, + title=None, + uid=None, + uirevision=None, + value=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Indicator trace + + An indicator is used to visualize a single `value` along with + some contextual information such as `steps` or a `threshold`, + using a combination of three visual elements: a number, a + delta, and/or a gauge. Deltas are taken with respect to a + `reference`. Gauges can be either angular or bullet (aka + linear) gauges. + + Parameters + ---------- + align + 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 + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delta + :class:`plotly.graph_objects.indicator.Delta` instance + or dict with compatible properties + domain + :class:`plotly.graph_objects.indicator.Domain` instance + or dict with compatible properties + gauge + The gauge of the Indicator plot. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.indicator.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + number + :class:`plotly.graph_objects.indicator.Number` instance + or dict with compatible properties + stream + :class:`plotly.graph_objects.indicator.Stream` instance + or dict with compatible properties + title + :class:`plotly.graph_objects.indicator.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the number to be displayed. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Indicator + + new_trace = Indicator( + align=align, + customdata=customdata, + customdatasrc=customdatasrc, + delta=delta, + domain=domain, + gauge=gauge, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + number=number, + stream=stream, + title=title, + uid=uid, + uirevision=uirevision, + value=value, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_isosurface( + self, + autocolorscale=None, + caps=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + isomax=None, + isomin=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + slices=None, + spaceframe=None, + stream=None, + surface=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + value=None, + valuehoverformat=None, + valuesrc=None, + visible=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Isosurface trace + + Draws isosurfaces between iso-min and iso-max values with + coordinates given by four 1-dimensional arrays containing the + `value`, `x`, `y` and `z` of every vertex of a uniform or non- + uniform 3-D grid. Horizontal or vertical slices, caps as well + as spaceframe between iso-min and iso-max values could also be + drawn using this trace. + + Parameters + ---------- + autocolorscale + 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. + caps + :class:`plotly.graph_objects.isosurface.Caps` instance + or dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.isosurface.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.isosurface.Contour` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.isosurface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.isosurface.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.isosurface.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.isosurface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.isosurface.Slices` + instance or dict with compatible properties + spaceframe + :class:`plotly.graph_objects.isosurface.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.isosurface.Stream` + instance or dict with compatible properties + surface + :class:`plotly.graph_objects.isosurface.Surface` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Isosurface + + new_trace = Isosurface( + autocolorscale=autocolorscale, + caps=caps, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contour=contour, + customdata=customdata, + customdatasrc=customdatasrc, + flatshading=flatshading, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + isomax=isomax, + isomin=isomin, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + slices=slices, + spaceframe=spaceframe, + stream=stream, + surface=surface, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + value=value, + valuehoverformat=valuehoverformat, + valuesrc=valuesrc, + visible=visible, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_mesh3d( + self, + alphahull=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + delaunayaxis=None, + facecolor=None, + facecolorsrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + i=None, + ids=None, + idssrc=None, + intensity=None, + intensitymode=None, + intensitysrc=None, + isrc=None, + j=None, + jsrc=None, + k=None, + ksrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + vertexcolor=None, + vertexcolorsrc=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Mesh3d trace + + Draws sets of triangles with coordinates given by three + 1-dimensional arrays in `x`, `y`, `z` and (1) a sets of `i`, + `j`, `k` indices (2) Delaunay triangulation or (3) the Alpha- + shape algorithm or (4) the Convex-hull algorithm + + Parameters + ---------- + alphahull + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + Sets the color of the whole mesh + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.mesh3d.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.mesh3d.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delaunayaxis + 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. + facecolor + Sets the color of each face Overrides "color" and + "vertexcolor". + facecolorsrc + Sets the source reference on Chart Studio Cloud for + `facecolor`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.mesh3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + i + 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. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + intensity + Sets the intensity values for vertices or cells as + defined by `intensitymode`. It can be used for plotting + fields on meshes. + intensitymode + Determines the source of `intensity` values. + intensitysrc + Sets the source reference on Chart Studio Cloud for + `intensity`. + isrc + Sets the source reference on Chart Studio Cloud for + `i`. + j + 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. + jsrc + Sets the source reference on Chart Studio Cloud for + `j`. + k + 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. + ksrc + Sets the source reference on Chart Studio Cloud for + `k`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.mesh3d.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.mesh3d.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.mesh3d.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.mesh3d.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + vertexcolor + 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. + vertexcolorsrc + Sets the source reference on Chart Studio Cloud for + `vertexcolor`. + visible + 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). + x + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + 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. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Mesh3d + + new_trace = Mesh3d( + alphahull=alphahull, + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + color=color, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contour=contour, + customdata=customdata, + customdatasrc=customdatasrc, + delaunayaxis=delaunayaxis, + facecolor=facecolor, + facecolorsrc=facecolorsrc, + flatshading=flatshading, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + i=i, + ids=ids, + idssrc=idssrc, + intensity=intensity, + intensitymode=intensitymode, + intensitysrc=intensitysrc, + isrc=isrc, + j=j, + jsrc=jsrc, + k=k, + ksrc=ksrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + vertexcolor=vertexcolor, + vertexcolorsrc=vertexcolorsrc, + visible=visible, + x=x, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zcalendar=zcalendar, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_ohlc( + self, + close=None, + closesrc=None, + customdata=None, + customdatasrc=None, + decreasing=None, + high=None, + highsrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + low=None, + lowsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + open=None, + opensrc=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textsrc=None, + tickwidth=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + yaxis=None, + yhoverformat=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Ohlc trace + + 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. + + Parameters + ---------- + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.ohlc.Decreasing` instance + or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.ohlc.Hoverlabel` instance + or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.ohlc.Increasing` instance + or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.ohlc.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.ohlc.Line` instance or + dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.ohlc.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + tickwidth + Sets the width of the open/close tick marks relative to + the "x" minimal interval. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Ohlc + + new_trace = Ohlc( + close=close, + closesrc=closesrc, + customdata=customdata, + customdatasrc=customdatasrc, + decreasing=decreasing, + high=high, + highsrc=highsrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + increasing=increasing, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + low=low, + lowsrc=lowsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + open=open, + opensrc=opensrc, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textsrc=textsrc, + tickwidth=tickwidth, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + yaxis=yaxis, + yhoverformat=yhoverformat, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_parcats( + self, + arrangement=None, + bundlecolors=None, + counts=None, + countssrc=None, + dimensions=None, + dimensiondefaults=None, + domain=None, + hoverinfo=None, + hoveron=None, + hovertemplate=None, + labelfont=None, + legendgrouptitle=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + sortpaths=None, + stream=None, + tickfont=None, + uid=None, + uirevision=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Parcats trace + + Parallel categories diagram for multidimensional categorical + data. + + Parameters + ---------- + arrangement + 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. + bundlecolors + Sort paths so that like colors are bundled together + within each category. + counts + The number of observations represented by each state. + Defaults to 1 so that each state represents one + observation + countssrc + Sets the source reference on Chart Studio Cloud for + `counts`. + dimensions + The dimensions (variables) of the parallel categories + diagram. + dimensiondefaults + When used in a template (as + layout.template.data.parcats.dimensiondefaults), sets + the default property values to use for elements of + parcats.dimensions + domain + :class:`plotly.graph_objects.parcats.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoveron + 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. + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. This value here applies when hovering + over dimensions. Note that `*categorycount`, + "colorcount" and "bandcolorcount" are only available + when `hoveron` contains the "color" flagFinally, 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 + ``. + labelfont + Sets the font for the `dimension` labels. + legendgrouptitle + :class:`plotly.graph_objects.parcats.Legendgrouptitle` + instance or dict with compatible properties + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcats.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + sortpaths + 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. + stream + :class:`plotly.graph_objects.parcats.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `category` labels. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Parcats + + new_trace = Parcats( + arrangement=arrangement, + bundlecolors=bundlecolors, + counts=counts, + countssrc=countssrc, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + domain=domain, + hoverinfo=hoverinfo, + hoveron=hoveron, + hovertemplate=hovertemplate, + labelfont=labelfont, + legendgrouptitle=legendgrouptitle, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + sortpaths=sortpaths, + stream=stream, + tickfont=tickfont, + uid=uid, + uirevision=uirevision, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_parcoords( + self, + customdata=None, + customdatasrc=None, + dimensions=None, + dimensiondefaults=None, + domain=None, + ids=None, + idssrc=None, + labelangle=None, + labelfont=None, + labelside=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + rangefont=None, + stream=None, + tickfont=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Parcoords trace + + Parallel coordinates for multidimensional exploratory data + analysis. The samples are specified in `dimensions`. The colors + are set in `line.color`. + + Parameters + ---------- + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dimensions + The dimensions (variables) of the parallel coordinates + chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions + domain + :class:`plotly.graph_objects.parcoords.Domain` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + labelangle + 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". + labelfont + Sets the font for the `dimension` labels. + labelside + 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". + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.parcoords.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcoords.Line` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + rangefont + Sets the font for the `dimension` range values. + stream + :class:`plotly.graph_objects.parcoords.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `dimension` tick values. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.parcoords.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Parcoords + + new_trace = Parcoords( + customdata=customdata, + customdatasrc=customdatasrc, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + domain=domain, + ids=ids, + idssrc=idssrc, + labelangle=labelangle, + labelfont=labelfont, + labelside=labelside, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + rangefont=rangefont, + stream=stream, + tickfont=tickfont, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_pie( + self, + automargin=None, + customdata=None, + customdatasrc=None, + direction=None, + dlabel=None, + domain=None, + hole=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + insidetextorientation=None, + label0=None, + labels=None, + labelssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + pull=None, + pullsrc=None, + rotation=None, + scalegroup=None, + showlegend=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + title=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Pie trace + + A data visualized by the sectors of the pie is set in `values`. + The sector labels are set in `labels`. The sector colors are + set in `marker.colors` + + Parameters + ---------- + automargin + Determines whether outside text labels can push the + margins. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + direction + Specifies the direction at which succeeding sectors + follow one another. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.pie.Domain` instance or + dict with compatible properties + hole + Sets the fraction of the radius to cut out of the pie. + Use this to make a donut chart. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.pie.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.pie.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.pie.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + Sets the font used for `textinfo` lying outside the + sector. + pull + 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. + pullsrc + Sets the source reference on Chart Studio Cloud for + `pull`. + rotation + Instead of the first slice starting at 12 o'clock, + rotate to some other angle. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.pie.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.pie.Title` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Pie + + new_trace = Pie( + automargin=automargin, + customdata=customdata, + customdatasrc=customdatasrc, + direction=direction, + dlabel=dlabel, + domain=domain, + hole=hole, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + insidetextorientation=insidetextorientation, + label0=label0, + labels=labels, + labelssrc=labelssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + pull=pull, + pullsrc=pullsrc, + rotation=rotation, + scalegroup=scalegroup, + showlegend=showlegend, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + title=title, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_sankey( + self, + arrangement=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverlabel=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + link=None, + meta=None, + metasrc=None, + name=None, + node=None, + orientation=None, + selectedpoints=None, + stream=None, + textfont=None, + uid=None, + uirevision=None, + valueformat=None, + valuesuffix=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Sankey trace + + Sankey plots for network flow data analysis. The nodes are + specified in `nodes` and the links between sources and targets + in `links`. The colors are set in `nodes[i].color` and + `links[i].color`, otherwise defaults are used. + + Parameters + ---------- + arrangement + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sankey.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.Hoverlabel` + instance or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sankey.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + link + The links of the Sankey plot. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + node + The nodes of the Sankey plot. + orientation + Sets the orientation of the Sankey diagram. + selectedpoints + 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. + stream + :class:`plotly.graph_objects.sankey.Stream` instance or + dict with compatible properties + textfont + Sets the font for node labels + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + valueformat + 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. + valuesuffix + Adds a unit to follow the value in the hover tooltip. + Add a space if a separation is necessary from the + value. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Sankey + + new_trace = Sankey( + arrangement=arrangement, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverlabel=hoverlabel, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + link=link, + meta=meta, + metasrc=metasrc, + name=name, + node=node, + orientation=orientation, + selectedpoints=selectedpoints, + stream=stream, + textfont=textfont, + uid=uid, + uirevision=uirevision, + valueformat=valueformat, + valuesuffix=valuesuffix, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatter( + self, + alignmentgroup=None, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + fill=None, + fillcolor=None, + fillgradient=None, + fillpattern=None, + groupnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + offsetgroup=None, + opacity=None, + orientation=None, + selected=None, + selectedpoints=None, + showlegend=None, + stackgaps=None, + stackgroup=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scatter trace + + The scatter trace type encompasses line charts, scatter charts, + text charts, and bubble charts. The data visualized as scatter + point or lines is set in `x` and `y`. Text (appearing either on + the chart or on hover only) is via `text`. Bubble charts are + achieved by setting `marker.size` and/or `marker.color` to + numerical arrays. + + Parameters + ---------- + alignmentgroup + 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. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scatter.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + 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. + fillgradient + Sets a fill gradient. If not specified, the fillcolor + is used instead. + fillpattern + Sets the pattern within the marker. + groupnorm + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.scatter.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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`. + selected + :class:`plotly.graph_objects.scatter.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stackgaps + 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. + stackgroup + 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. + stream + :class:`plotly.graph_objects.scatter.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatter.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scatter + + new_trace = Scatter( + alignmentgroup=alignmentgroup, + cliponaxis=cliponaxis, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + error_x=error_x, + error_y=error_y, + fill=fill, + fillcolor=fillcolor, + fillgradient=fillgradient, + fillpattern=fillpattern, + groupnorm=groupnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stackgaps=stackgaps, + stackgroup=stackgroup, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_scatter3d( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + error_x=None, + error_y=None, + error_z=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + projection=None, + scene=None, + showlegend=None, + stream=None, + surfaceaxis=None, + surfacecolor=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scatter3d trace + + The data visualized as scatter point or lines in 3D dimension + is set in `x`, `y`, `z`. Text (appearing either on the chart or + on hover only) is via `text`. Bubble charts are achieved by + setting `marker.size` and/or `marker.color` Projections are + achieved via `projection`. Surface fills are achieved via + `surfaceaxis`. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.scatter3d.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter3d.ErrorY` instance + or dict with compatible properties + error_z + :class:`plotly.graph_objects.scatter3d.ErrorZ` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter3d.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter3d.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scatter3d.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + projection + :class:`plotly.graph_objects.scatter3d.Projection` + instance or dict with compatible properties + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatter3d.Stream` instance + or dict with compatible properties + surfaceaxis + 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. + surfacecolor + Sets the surface fill color. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scatter3d + + new_trace = Scatter3d( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + error_x=error_x, + error_y=error_y, + error_z=error_z, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + projection=projection, + scene=scene, + showlegend=showlegend, + stream=stream, + surfaceaxis=surfaceaxis, + surfacecolor=surfacecolor, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zcalendar=zcalendar, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattercarpet( + self, + a=None, + asrc=None, + b=None, + bsrc=None, + carpet=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + xaxis=None, + yaxis=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scattercarpet trace + + Plots a scatter trace on either the first carpet axis or the + carpet axis with a matching `carpet` attribute. + + Parameters + ---------- + a + Sets the a-axis coordinates. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + Sets the b-axis coordinates. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattercarpet.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattercarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattercarpet.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattercarpet.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattercarpet.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattercarpet.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattercarpet.Unselected` + instance or dict with compatible properties + visible + 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). + xaxis + 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. + yaxis + 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. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scattercarpet + + new_trace = Scattercarpet( + a=a, + asrc=asrc, + b=b, + bsrc=bsrc, + carpet=carpet, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + xaxis=xaxis, + yaxis=yaxis, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_scattergeo( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + fill=None, + fillcolor=None, + geo=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + locationmode=None, + locations=None, + locationssrc=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scattergeo trace + + The data visualized as scatter point or lines on a geographic + map is provided either by longitude/latitude pairs in `lon` and + `lat` respectively or by geographic location IDs or names in + `locations`. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergeo.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergeo.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergeo.Line` instance + or dict with compatible properties + locationmode + 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. + locations + Sets the coordinates via location IDs or names. + Coordinates correspond to the centroid of each location + given. See `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattergeo.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergeo.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergeo.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergeo.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scattergeo + + new_trace = Scattergeo( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + fill=fill, + fillcolor=fillcolor, + geo=geo, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + locationmode=locationmode, + locations=locations, + locationssrc=locationssrc, + lon=lon, + lonsrc=lonsrc, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattergl( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scattergl trace + + The data visualized as scatter point or lines is set in `x` and + `y` using the WebGL plotting engine. Bubble charts are achieved + by setting `marker.size` and/or `marker.color` to a numerical + arrays. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scattergl.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scattergl.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergl.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergl.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scattergl.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + Determines the drawing mode for this scatter trace. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergl.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergl.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scattergl + + new_trace = Scattergl( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + error_x=error_x, + error_y=error_y, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_scattermap( + self, + below=None, + cluster=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scattermap trace + + The data visualized as scatter point, lines or marker symbols + on a MapLibre GL geographic map is provided by + longitude/latitude pairs in `lon` and `lat`. + + Parameters + ---------- + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermap.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermap.Line` instance + or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermap.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scattermap + + new_trace = Scattermap( + below=below, + cluster=cluster, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + lon=lon, + lonsrc=lonsrc, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattermapbox( + self, + below=None, + cluster=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scattermapbox trace + + "scattermapbox" trace is deprecated! Please consider switching + to the "scattermap" trace type and `map` subplots. Learn more + at: https://plotly.com/python/maplibre-migration/ as well as + https://plotly.com/javascript/maplibre-migration/ The data + visualized as scatter point, lines or marker symbols on a + Mapbox GL geographic map is provided by longitude/latitude + pairs in `lon` and `lat`. + + Parameters + ---------- + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermapbox.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermapbox.Line` + instance or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermapbox.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scattermapbox + + new_trace = Scattermapbox( + below=below, + cluster=cluster, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + lon=lon, + lonsrc=lonsrc, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatterpolar( + self, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scatterpolar trace + + The scatterpolar trace type encompasses line charts, scatter + charts, text charts, and bubble charts in polar coordinates. + The data visualized as scatter point or lines is set in `r` + (radial) and `theta` (angular) coordinates Text (appearing + either on the chart or on hover only) is via `text`. Bubble + charts are achieved by setting `marker.size` and/or + `marker.color` to numerical arrays. + + Parameters + ---------- + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolar.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolar.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolar.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolar.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolar.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolar.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scatterpolar + + new_trace = Scatterpolar( + cliponaxis=cliponaxis, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dr=dr, + dtheta=dtheta, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + r=r, + r0=r0, + rsrc=rsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + theta=theta, + theta0=theta0, + thetasrc=thetasrc, + thetaunit=thetaunit, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatterpolargl( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scatterpolargl trace + + The scatterpolargl trace type encompasses line charts, scatter + charts, and bubble charts in polar coordinates using the WebGL + plotting engine. The data visualized as scatter point or lines + is set in `r` (radial) and `theta` (angular) coordinates Bubble + charts are achieved by setting `marker.size` and/or + `marker.color` to numerical arrays. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolargl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolargl.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolargl.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolargl.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolargl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolargl.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolargl.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scatterpolargl + + new_trace = Scatterpolargl( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dr=dr, + dtheta=dtheta, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + r=r, + r0=r0, + rsrc=rsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + theta=theta, + theta0=theta0, + thetasrc=thetasrc, + thetaunit=thetaunit, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattersmith( + self, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + imag=None, + imagsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + real=None, + realsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scattersmith trace + + The scattersmith trace type encompasses line charts, scatter + charts, text charts, and bubble charts in smith coordinates. + The data visualized as scatter point or lines is set in `real` + and `imag` (imaginary) coordinates Text (appearing either on + the chart or on hover only) is via `text`. Bubble charts are + achieved by setting `marker.size` and/or `marker.color` to + numerical arrays. + + Parameters + ---------- + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattersmith.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + imag + Sets the imaginary component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + imagsrc + Sets the source reference on Chart Studio Cloud for + `imag`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattersmith.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattersmith.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattersmith.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + real + Sets the real component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + realsrc + Sets the source reference on Chart Studio Cloud for + `real`. + selected + :class:`plotly.graph_objects.scattersmith.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattersmith.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattersmith.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scattersmith + + new_trace = Scattersmith( + cliponaxis=cliponaxis, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + imag=imag, + imagsrc=imagsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + real=real, + realsrc=realsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatterternary( + self, + a=None, + asrc=None, + b=None, + bsrc=None, + c=None, + cliponaxis=None, + connectgaps=None, + csrc=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + sum=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Scatterternary trace + + Provides similar functionality to the "scatter" type but on a + ternary phase diagram. The data is provided by at least two + arrays out of `a`, `b`, `c` triplets. + + Parameters + ---------- + a + 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`. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + 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`. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + c + 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`. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + csrc + Sets the source reference on Chart Studio Cloud for + `c`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterternary.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterternary.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterternary.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterternary.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scatterternary.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterternary.Stream` + instance or dict with compatible properties + subplot + 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. + sum + 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 + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterternary.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Scatterternary + + new_trace = Scatterternary( + a=a, + asrc=asrc, + b=b, + bsrc=bsrc, + c=c, + cliponaxis=cliponaxis, + connectgaps=connectgaps, + csrc=csrc, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + sum=sum, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_splom( + self, + customdata=None, + customdatasrc=None, + diagonal=None, + dimensions=None, + dimensiondefaults=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + showlowerhalf=None, + showupperhalf=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + xaxes=None, + xhoverformat=None, + yaxes=None, + yhoverformat=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Splom trace + + Splom traces generate scatter plot matrix visualizations. Each + splom `dimensions` items correspond to a generated axis. Values + for each of those dimensions are set in `dimensions[i].values`. + Splom traces support all `scattergl` marker style attributes. + Specify `layout.grid` attributes and/or layout x-axis and + y-axis attributes for more control over the axis positioning + and style. + + Parameters + ---------- + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + diagonal + :class:`plotly.graph_objects.splom.Diagonal` instance + or dict with compatible properties + dimensions + A tuple of + :class:`plotly.graph_objects.splom.Dimension` instances + or dicts with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.splom.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.splom.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.splom.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.splom.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showlowerhalf + Determines whether or not subplots on the lower half + from the diagonal are displayed. + showupperhalf + Determines whether or not subplots on the upper half + from the diagonal are displayed. + stream + :class:`plotly.graph_objects.splom.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.splom.Unselected` instance + or dict with compatible properties + visible + 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). + xaxes + 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. + xhoverformat + 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`. + yaxes + 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. + yhoverformat + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Splom + + new_trace = Splom( + customdata=customdata, + customdatasrc=customdatasrc, + diagonal=diagonal, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showlowerhalf=showlowerhalf, + showupperhalf=showupperhalf, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + xaxes=xaxes, + xhoverformat=xhoverformat, + yaxes=yaxes, + yhoverformat=yhoverformat, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_streamtube( + self, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + maxdisplayed=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + sizeref=None, + starts=None, + stream=None, + text=None, + u=None, + uhoverformat=None, + uid=None, + uirevision=None, + usrc=None, + v=None, + vhoverformat=None, + visible=None, + vsrc=None, + w=None, + whoverformat=None, + wsrc=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Streamtube trace + + Use a streamtube trace to visualize flow in a vector field. + Specify a vector field using 6 1D arrays of equal length, 3 + position arrays `x`, `y` and `z` and 3 vector component arrays + `u`, `v`, and `w`. By default, the tubes' starting positions + will be cut from the vector field's x-z plane at its minimum y + value. To specify your own starting position, use attributes + `starts.x`, `starts.y` and `starts.z`. The color is encoded by + the norm of (u, v, w), and the local radius by the divergence + of (u, v, w). + + Parameters + ---------- + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.streamtube.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.streamtube.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.streamtube.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.streamtube.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.streamtube.Lightposition` + instance or dict with compatible properties + maxdisplayed + The maximum number of displayed segments in a + streamtube. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizeref + The scaling factor for the streamtubes. The default is + 1, which avoids two max divergence tubes from touching + at adjacent starting positions. + starts + :class:`plotly.graph_objects.streamtube.Starts` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.streamtube.Stream` + instance or dict with compatible properties + text + 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. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Streamtube + + new_trace = Streamtube( + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + maxdisplayed=maxdisplayed, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + sizeref=sizeref, + starts=starts, + stream=stream, + text=text, + u=u, + uhoverformat=uhoverformat, + uid=uid, + uirevision=uirevision, + usrc=usrc, + v=v, + vhoverformat=vhoverformat, + visible=visible, + vsrc=vsrc, + w=w, + whoverformat=whoverformat, + wsrc=wsrc, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_sunburst( + self, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + insidetextorientation=None, + labels=None, + labelssrc=None, + leaf=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + root=None, + rotation=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Sunburst trace + + Visualize hierarchal data spanning outward radially from root + to leaves. The sunburst sectors are determined by the entries + in "labels" or "ids" and in "parents". + + Parameters + ---------- + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sunburst.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.sunburst.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.sunburst.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sunburst.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.sunburst.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + root + :class:`plotly.graph_objects.sunburst.Root` instance or + dict with compatible properties + rotation + Rotates the whole diagram counterclockwise by some + angle. By default the first slice starts at 3 o'clock. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.sunburst.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Sunburst + + new_trace = Sunburst( + branchvalues=branchvalues, + count=count, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + insidetextorientation=insidetextorientation, + labels=labels, + labelssrc=labelssrc, + leaf=leaf, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + level=level, + marker=marker, + maxdepth=maxdepth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + parents=parents, + parentssrc=parentssrc, + root=root, + rotation=rotation, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_surface( + self, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + contours=None, + customdata=None, + customdatasrc=None, + hidesurface=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + opacityscale=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + stream=None, + surfacecolor=None, + surfacecolorsrc=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Surface trace + + The data the describes the coordinates of the surface is set in + `z`. Data in `z` should be a 2D list. Coordinates in `x` and + `y` can either be 1D lists or 2D lists (e.g. to graph + parametric surfaces). If not provided in `x` and `y`, the x and + y coordinates are assumed to be linear starting at 0 with a + unit step. The color scale corresponds to the `z` values by + default. For custom color scales, use `surfacecolor` which + should be a 2D list, where its bounds can be controlled using + `cmin` and `cmax`. + + Parameters + ---------- + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.surface.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data are filled in. + contours + :class:`plotly.graph_objects.surface.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hidesurface + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.surface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.surface.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.surface.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.surface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.surface.Stream` instance + or dict with compatible properties + surfacecolor + Sets the surface color values, used for setting a color + scale independent of `z`. + surfacecolorsrc + Sets the source reference on Chart Studio Cloud for + `surfacecolor`. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Surface + + new_trace = Surface( + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + connectgaps=connectgaps, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + hidesurface=hidesurface, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + opacityscale=opacityscale, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + stream=stream, + surfacecolor=surfacecolor, + surfacecolorsrc=surfacecolorsrc, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zcalendar=zcalendar, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_table( + self, + cells=None, + columnorder=None, + columnordersrc=None, + columnwidth=None, + columnwidthsrc=None, + customdata=None, + customdatasrc=None, + domain=None, + header=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + stream=None, + uid=None, + uirevision=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Table trace + + Table view for detailed data viewing. The data are arranged in + a grid of rows and columns. Most styling can be specified for + columns, rows or individual cells. Table is using a column- + major order, ie. the grid is represented as a vector of column + vectors. + + Parameters + ---------- + cells + :class:`plotly.graph_objects.table.Cells` instance or + dict with compatible properties + columnorder + 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. + columnordersrc + Sets the source reference on Chart Studio Cloud for + `columnorder`. + columnwidth + The width of columns expressed as a ratio. Columns fill + the available width in proportion of their specified + column widths. + columnwidthsrc + Sets the source reference on Chart Studio Cloud for + `columnwidth`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.table.Domain` instance or + dict with compatible properties + header + :class:`plotly.graph_objects.table.Header` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.table.Hoverlabel` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.table.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + stream + :class:`plotly.graph_objects.table.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Table + + new_trace = Table( + cells=cells, + columnorder=columnorder, + columnordersrc=columnordersrc, + columnwidth=columnwidth, + columnwidthsrc=columnwidthsrc, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + header=header, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + stream=stream, + uid=uid, + uirevision=uirevision, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_treemap( + self, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + labels=None, + labelssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + pathbar=None, + root=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + tiling=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Treemap trace + + Visualize hierarchal data from leaves (and/or outer branches) + towards root with rectangles. The treemap sectors are + determined by the entries in "labels" or "ids" and in + "parents". + + Parameters + ---------- + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.treemap.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.treemap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.treemap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.treemap.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.treemap.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.treemap.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.treemap.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.treemap.Tiling` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Treemap + + new_trace = Treemap( + branchvalues=branchvalues, + count=count, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + labels=labels, + labelssrc=labelssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + level=level, + marker=marker, + maxdepth=maxdepth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + parents=parents, + parentssrc=parentssrc, + pathbar=pathbar, + root=root, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + tiling=tiling, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_violin( + self, + alignmentgroup=None, + bandwidth=None, + box=None, + customdata=None, + customdatasrc=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + jitter=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meanline=None, + meta=None, + metasrc=None, + name=None, + offsetgroup=None, + opacity=None, + orientation=None, + pointpos=None, + points=None, + quartilemethod=None, + scalegroup=None, + scalemode=None, + selected=None, + selectedpoints=None, + showlegend=None, + side=None, + span=None, + spanmode=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Violin trace + + 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`) list + is provided, a single violin is drawn. That violin position is + then positioned with with `name` or with `x0` (`y0`) if + provided. + + Parameters + ---------- + alignmentgroup + 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. + bandwidth + Sets the bandwidth used to compute the kernel density + estimate. By default, the bandwidth is determined by + Silverman's rule of thumb. + box + :class:`plotly.graph_objects.violin.Box` instance or + dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.violin.Hoverlabel` + instance or dict with compatible properties + hoveron + Do the hover effects highlight individual violins or + sample points or the kernel density estimate or any + combination of them? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.violin.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.violin.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.violin.Marker` instance or + dict with compatible properties + meanline + :class:`plotly.graph_objects.violin.Meanline` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the violin(s). If "v" ("h"), + the distribution is visualized along the vertical + (horizontal). + pointpos + 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. + points + 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". + quartilemethod + 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. + scalegroup + 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 + scalemode + 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. + selected + :class:`plotly.graph_objects.violin.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + side + 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". + span + Sets the span in data space for which the density + function will be computed. Has an effect only when + `spanmode` is set to "manual". + spanmode + 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. + stream + :class:`plotly.graph_objects.violin.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.violin.Unselected` + instance or dict with compatible properties + visible + 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). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Violin + + new_trace = Violin( + alignmentgroup=alignmentgroup, + bandwidth=bandwidth, + box=box, + customdata=customdata, + customdatasrc=customdatasrc, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + jitter=jitter, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meanline=meanline, + meta=meta, + metasrc=metasrc, + name=name, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + pointpos=pointpos, + points=points, + quartilemethod=quartilemethod, + scalegroup=scalegroup, + scalemode=scalemode, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + side=side, + span=span, + spanmode=spanmode, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + width=width, + x=x, + x0=x0, + xaxis=xaxis, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + yhoverformat=yhoverformat, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_volume( + self, + autocolorscale=None, + caps=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + isomax=None, + isomin=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + opacityscale=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + slices=None, + spaceframe=None, + stream=None, + surface=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + value=None, + valuehoverformat=None, + valuesrc=None, + visible=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "Figure": + """ + Add a new Volume trace + + Draws volume trace between iso-min and iso-max values with + coordinates given by four 1-dimensional arrays containing the + `value`, `x`, `y` and `z` of every vertex of a uniform or non- + uniform 3-D grid. Horizontal or vertical slices, caps as well + as spaceframe between iso-min and iso-max values could also be + drawn using this trace. + + Parameters + ---------- + autocolorscale + 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. + caps + :class:`plotly.graph_objects.volume.Caps` instance or + dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.volume.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.volume.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.volume.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.volume.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.volume.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.volume.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.volume.Slices` instance or + dict with compatible properties + spaceframe + :class:`plotly.graph_objects.volume.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.volume.Stream` instance or + dict with compatible properties + surface + :class:`plotly.graph_objects.volume.Surface` instance + or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + Figure + """ + from plotly.graph_objs import Volume + + new_trace = Volume( + autocolorscale=autocolorscale, + caps=caps, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contour=contour, + customdata=customdata, + customdatasrc=customdatasrc, + flatshading=flatshading, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + isomax=isomax, + isomin=isomin, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + opacityscale=opacityscale, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + slices=slices, + spaceframe=spaceframe, + stream=stream, + surface=surface, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + value=value, + valuehoverformat=valuehoverformat, + valuesrc=valuesrc, + visible=visible, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_waterfall( + self, + alignmentgroup=None, + base=None, + cliponaxis=None, + connector=None, + constraintext=None, + customdata=None, + customdatasrc=None, + decreasing=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + measure=None, + measuresrc=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + offsetsrc=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + totals=None, + uid=None, + uirevision=None, + visible=None, + width=None, + widthsrc=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Add a new Waterfall trace + + Draws waterfall trace which is useful graph to displays the + contribution of various elements (either positive or negative) + in a bar chart. The data visualized by the span of the bars is + set in `y` if `orientation` is set to "v" (the default) and the + labels are set in `x`. By setting `orientation` to "h", the + roles are interchanged. + + Parameters + ---------- + alignmentgroup + 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. + base + Sets where the bar base is drawn (in position axis + units). + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.waterfall.Connector` + instance or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.waterfall.Decreasing` + instance or dict with compatible properties + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.waterfall.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.waterfall.Increasing` + instance or dict with compatible properties + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.waterfall.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + measure + 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. + measuresrc + Sets the source reference on Chart Studio Cloud for + `measure`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.waterfall.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple waterfalls, totals are + computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + totals + :class:`plotly.graph_objects.waterfall.Totals` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + Figure + """ + from plotly.graph_objs import Waterfall + + new_trace = Waterfall( + alignmentgroup=alignmentgroup, + base=base, + cliponaxis=cliponaxis, + connector=connector, + constraintext=constraintext, + customdata=customdata, + customdatasrc=customdatasrc, + decreasing=decreasing, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + increasing=increasing, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + measure=measure, + measuresrc=measuresrc, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetgroup=offsetgroup, + offsetsrc=offsetsrc, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + totals=totals, + uid=uid, + uirevision=uirevision, + visible=visible, + width=width, + widthsrc=widthsrc, + x=x, + x0=x0, + xaxis=xaxis, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def select_coloraxes(self, selector=None, row=None, col=None): + """ + Select coloraxis subplot objects from a particular subplot cell + and/or coloraxis subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + coloraxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all coloraxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + coloraxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of coloraxis objects to select. + To select coloraxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all coloraxis objects are selected. + Returns + ------- + generator + Generator that iterates through all of the coloraxis + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("coloraxis", selector, row, col) + + def for_each_coloraxis(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all coloraxis objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single coloraxis object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + coloraxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all coloraxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + coloraxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of coloraxis objects to select. + To select coloraxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all coloraxis objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_coloraxes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_coloraxes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all coloraxis objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + coloraxis objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + coloraxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all coloraxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + coloraxis and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of coloraxis objects to select. + To select coloraxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all coloraxis objects are selected. + **kwargs + Additional property updates to apply to each selected + coloraxis object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_coloraxes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_geos(self, selector=None, row=None, col=None): + """ + Select geo subplot objects from a particular subplot cell + and/or geo subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + geo objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all geo objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + geo and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of geo objects to select. + To select geo objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all geo objects are selected. + Returns + ------- + generator + Generator that iterates through all of the geo + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("geo", selector, row, col) + + def for_each_geo(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all geo objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single geo object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + geo objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all geo objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + geo and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of geo objects to select. + To select geo objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all geo objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_geos(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_geos( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all geo objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + geo objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + geo objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all geo objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + geo and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of geo objects to select. + To select geo objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all geo objects are selected. + **kwargs + Additional property updates to apply to each selected + geo object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_geos(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_legends(self, selector=None, row=None, col=None): + """ + Select legend subplot objects from a particular subplot cell + and/or legend subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + legend objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all legend objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + legend and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of legend objects to select. + To select legend objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all legend objects are selected. + Returns + ------- + generator + Generator that iterates through all of the legend + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("legend", selector, row, col) + + def for_each_legend(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all legend objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single legend object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + legend objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all legend objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + legend and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of legend objects to select. + To select legend objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all legend objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_legends(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_legends( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all legend objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + legend objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + legend objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all legend objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + legend and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of legend objects to select. + To select legend objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all legend objects are selected. + **kwargs + Additional property updates to apply to each selected + legend object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_legends(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_maps(self, selector=None, row=None, col=None): + """ + Select map subplot objects from a particular subplot cell + and/or map subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + map objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all map objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + map and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of map objects to select. + To select map objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all map objects are selected. + Returns + ------- + generator + Generator that iterates through all of the map + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("map", selector, row, col) + + def for_each_map(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all map objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single map object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + map objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all map objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + map and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of map objects to select. + To select map objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all map objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_maps(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_maps( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all map objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + map objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + map objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all map objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + map and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of map objects to select. + To select map objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all map objects are selected. + **kwargs + Additional property updates to apply to each selected + map object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_maps(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_mapboxes(self, selector=None, row=None, col=None): + """ + Select mapbox subplot objects from a particular subplot cell + and/or mapbox subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + mapbox objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all mapbox objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + mapbox and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of mapbox objects to select. + To select mapbox objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all mapbox objects are selected. + Returns + ------- + generator + Generator that iterates through all of the mapbox + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("mapbox", selector, row, col) + + def for_each_mapbox(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all mapbox objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single mapbox object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + mapbox objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all mapbox objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + mapbox and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of mapbox objects to select. + To select mapbox objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all mapbox objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_mapboxes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_mapboxes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all mapbox objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + mapbox objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + mapbox objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all mapbox objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + mapbox and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of mapbox objects to select. + To select mapbox objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all mapbox objects are selected. + **kwargs + Additional property updates to apply to each selected + mapbox object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_mapboxes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_polars(self, selector=None, row=None, col=None): + """ + Select polar subplot objects from a particular subplot cell + and/or polar subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + polar objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all polar objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + polar and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of polar objects to select. + To select polar objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all polar objects are selected. + Returns + ------- + generator + Generator that iterates through all of the polar + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("polar", selector, row, col) + + def for_each_polar(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all polar objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single polar object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + polar objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all polar objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + polar and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of polar objects to select. + To select polar objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all polar objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_polars(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_polars( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all polar objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + polar objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + polar objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all polar objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + polar and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of polar objects to select. + To select polar objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all polar objects are selected. + **kwargs + Additional property updates to apply to each selected + polar object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_polars(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_scenes(self, selector=None, row=None, col=None): + """ + Select scene subplot objects from a particular subplot cell + and/or scene subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + scene objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all scene objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + scene and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of scene objects to select. + To select scene objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all scene objects are selected. + Returns + ------- + generator + Generator that iterates through all of the scene + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("scene", selector, row, col) + + def for_each_scene(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all scene objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single scene object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + scene objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all scene objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + scene and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of scene objects to select. + To select scene objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all scene objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_scenes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_scenes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all scene objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + scene objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + scene objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all scene objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + scene and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of scene objects to select. + To select scene objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all scene objects are selected. + **kwargs + Additional property updates to apply to each selected + scene object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_scenes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_smiths(self, selector=None, row=None, col=None): + """ + Select smith subplot objects from a particular subplot cell + and/or smith subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + smith objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all smith objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + smith and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of smith objects to select. + To select smith objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all smith objects are selected. + Returns + ------- + generator + Generator that iterates through all of the smith + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("smith", selector, row, col) + + def for_each_smith(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all smith objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single smith object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + smith objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all smith objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + smith and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of smith objects to select. + To select smith objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all smith objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_smiths(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_smiths( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all smith objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + smith objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + smith objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all smith objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + smith and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of smith objects to select. + To select smith objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all smith objects are selected. + **kwargs + Additional property updates to apply to each selected + smith object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_smiths(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_ternaries(self, selector=None, row=None, col=None): + """ + Select ternary subplot objects from a particular subplot cell + and/or ternary subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + ternary objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all ternary objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + ternary and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of ternary objects to select. + To select ternary objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all ternary objects are selected. + Returns + ------- + generator + Generator that iterates through all of the ternary + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("ternary", selector, row, col) + + def for_each_ternary(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all ternary objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single ternary object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + ternary objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all ternary objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + ternary and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of ternary objects to select. + To select ternary objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all ternary objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_ternaries(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_ternaries( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all ternary objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + ternary objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + ternary objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all ternary objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + ternary and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of ternary objects to select. + To select ternary objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all ternary objects are selected. + **kwargs + Additional property updates to apply to each selected + ternary object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_ternaries(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_xaxes(self, selector=None, row=None, col=None): + """ + Select xaxis subplot objects from a particular subplot cell + and/or xaxis subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + xaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all xaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + xaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of xaxis objects to select. + To select xaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all xaxis objects are selected. + Returns + ------- + generator + Generator that iterates through all of the xaxis + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("xaxis", selector, row, col) + + def for_each_xaxis(self, fn, selector=None, row=None, col=None) -> "Figure": + """ + Apply a function to all xaxis objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single xaxis object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + xaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all xaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + xaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of xaxis objects to select. + To select xaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all xaxis objects are selected. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_xaxes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_xaxes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all xaxis objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + xaxis objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + xaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all xaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + xaxis and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of xaxis objects to select. + To select xaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all xaxis objects are selected. + **kwargs + Additional property updates to apply to each selected + xaxis object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_xaxes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_yaxes(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select yaxis subplot objects from a particular subplot cell + and/or yaxis subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + yaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all yaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + yaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of yaxis objects to select. + To select yaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all yaxis objects are selected. + secondary_y: boolean or None (default None) + * If True, only select yaxis objects associated with the secondary + y-axis of the subplot. + * If False, only select yaxis objects associated with the primary + y-axis of the subplot. + * If None (the default), do not filter yaxis objects based on + a secondary y-axis condition. + + To select yaxis objects by secondary y-axis, the Figure must + have been created using plotly.subplots.make_subplots. See + the docstring for the specs argument to make_subplots for more + info on creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the yaxis + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix( + "yaxis", selector, row, col, secondary_y=secondary_y + ) + + def for_each_yaxis( + self, fn, selector=None, row=None, col=None, secondary_y=None + ) -> "Figure": + """ + Apply a function to all yaxis objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single yaxis object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + yaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all yaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + yaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of yaxis objects to select. + To select yaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all yaxis objects are selected. + secondary_y: boolean or None (default None) + * If True, only select yaxis objects associated with the secondary + y-axis of the subplot. + * If False, only select yaxis objects associated with the primary + y-axis of the subplot. + * If None (the default), do not filter yaxis objects based on + a secondary y-axis condition. + + To select yaxis objects by secondary y-axis, the Figure must + have been created using plotly.subplots.make_subplots. See + the docstring for the specs argument to make_subplots for more + info on creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_yaxes( + selector=selector, row=row, col=col, secondary_y=secondary_y + ): + fn(obj) + + return self + + def update_yaxes( + self, + patch=None, + selector=None, + overwrite=False, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "Figure": + """ + Perform a property update operation on all yaxis objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + yaxis objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + yaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all yaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + yaxis and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of yaxis objects to select. + To select yaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all yaxis objects are selected. + secondary_y: boolean or None (default None) + * If True, only select yaxis objects associated with the secondary + y-axis of the subplot. + * If False, only select yaxis objects associated with the primary + y-axis of the subplot. + * If None (the default), do not filter yaxis objects based on + a secondary y-axis condition. + + To select yaxis objects by secondary y-axis, the Figure must + have been created using plotly.subplots.make_subplots. See + the docstring for the specs argument to make_subplots for more + info on creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected + yaxis object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self.select_yaxes( + selector=selector, row=row, col=col, secondary_y=secondary_y + ): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_annotations(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select annotations from a particular subplot cell and/or annotations + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all annotations are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each annotation and those for which the function returned True + will be in the selection. If an int N, the Nth annotation matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of annotations to select. + To select annotations by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + annotation that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all annotations are selected. + secondary_y: boolean or None (default None) + * If True, only select annotations associated with the secondary + y-axis of the subplot. + * If False, only select annotations associated with the primary + y-axis of the subplot. + * If None (the default), do not filter annotations based on secondary + y-axis. + + To select annotations by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the annotations that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "annotations", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_annotation( + self, fn, selector=None, row=None, col=None, secondary_y=None + ): + """ + Apply a function to all annotations that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single annotation object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all annotations are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each annotation and those for which the function returned True + will be in the selection. If an int N, the Nth annotation matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of annotations to select. + To select annotations by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + annotations that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all annotations are selected. + secondary_y: boolean or None (default None) + * If True, only select annotations associated with the secondary + y-axis of the subplot. + * If False, only select annotations associated with the primary + y-axis of the subplot. + * If None (the default), do not filter annotations based on secondary + y-axis. + + To select annotations by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="annotations", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_annotations( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all annotations that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all annotations that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all annotations are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each annotation and those for which the function returned True + will be in the selection. If an int N, the Nth annotation matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of annotations to select. + To select annotations by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + annotation that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all annotations are selected. + secondary_y: boolean or None (default None) + * If True, only select annotations associated with the secondary + y-axis of the subplot. + * If False, only select annotations associated with the primary + y-axis of the subplot. + * If None (the default), do not filter annotations based on secondary + y-axis. + + To select annotations by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected annotation. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="annotations", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_annotation( + self, + arg=None, + align=None, + arrowcolor=None, + arrowhead=None, + arrowside=None, + arrowsize=None, + arrowwidth=None, + ax=None, + axref=None, + ay=None, + ayref=None, + bgcolor=None, + bordercolor=None, + borderpad=None, + borderwidth=None, + captureevents=None, + clicktoshow=None, + font=None, + height=None, + hoverlabel=None, + hovertext=None, + name=None, + opacity=None, + showarrow=None, + standoff=None, + startarrowhead=None, + startarrowsize=None, + startstandoff=None, + templateitemname=None, + text=None, + textangle=None, + valign=None, + visible=None, + width=None, + x=None, + xanchor=None, + xclick=None, + xref=None, + xshift=None, + y=None, + yanchor=None, + yclick=None, + yref=None, + yshift=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "Figure": + """ + Create and add a new annotation to the figure's layout + + Parameters + ---------- + arg + instance of Annotation or dict with compatible + properties + align + 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. + arrowcolor + Sets the color of the annotation arrow. + arrowhead + Sets the end annotation arrow head style. + arrowside + Sets the annotation arrow head position. + arrowsize + 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. + arrowwidth + Sets the width (in px) of annotation arrow line. + ax + 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`. + axref + 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. + ay + 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`. + ayref + 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. + bgcolor + Sets the background color of the annotation. + bordercolor + Sets the color of the border enclosing the annotation + `text`. + borderpad + Sets the padding (in px) between the `text` and the + enclosing border. + borderwidth + Sets the width (in px) of the border enclosing the + annotation `text`. + captureevents + 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`. + clicktoshow + 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`. + font + Sets the annotation text font. + height + Sets an explicit height for the text box. null + (default) lets the text set the box height. Taller text + will be clipped. + hoverlabel + :class:`plotly.graph_objects.layout.annotation.Hoverlab + el` instance or dict with compatible properties + hovertext + Sets text to appear when hovering over this annotation. + If omitted or blank, no hover label will appear. + name + 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. + opacity + Sets the opacity of the annotation (text + arrow). + showarrow + 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. + standoff + 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. + startarrowhead + Sets the start annotation arrow head style. + startarrowsize + 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. + startstandoff + 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. + templateitemname + 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`. + text + Sets the text associated with this annotation. Plotly + uses a subset of HTML tags to do things like newline + (
), bold (), italics (), hyperlinks + (). Tags , , , , + are also supported. + textangle + Sets the angle at which the `text` is drawn with + respect to the horizontal. + valign + 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. + visible + Determines whether or not this annotation is visible. + width + 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. + x + 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. + xanchor + 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. + xclick + Toggle this annotation when clicking a data point whose + `x` value is `xclick` rather than the annotation's `x` + value. + xref + 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. + xshift + Shifts the position of the whole annotation and arrow + to the right (positive) or left (negative) by this many + pixels. + y + 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. + yanchor + 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. + yclick + Toggle this annotation when clicking a data point whose + `y` value is `yclick` rather than the annotation's `y` + value. + yref + 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. + yshift + Shifts the position of the whole annotation and arrow + up (positive) or down (negative) by this many pixels. + row + Subplot row for annotation. If 'all', addresses all + rows in the specified column(s). + col + Subplot column for annotation. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add annotation to secondary y-axis + exclude_empty_subplots + If True, annotation will not be added to subplots + without traces. + + Returns + ------- + Figure + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Annotation( + arg, + align=align, + arrowcolor=arrowcolor, + arrowhead=arrowhead, + arrowside=arrowside, + arrowsize=arrowsize, + arrowwidth=arrowwidth, + ax=ax, + axref=axref, + ay=ay, + ayref=ayref, + bgcolor=bgcolor, + bordercolor=bordercolor, + borderpad=borderpad, + borderwidth=borderwidth, + captureevents=captureevents, + clicktoshow=clicktoshow, + font=font, + height=height, + hoverlabel=hoverlabel, + hovertext=hovertext, + name=name, + opacity=opacity, + showarrow=showarrow, + standoff=standoff, + startarrowhead=startarrowhead, + startarrowsize=startarrowsize, + startstandoff=startstandoff, + templateitemname=templateitemname, + text=text, + textangle=textangle, + valign=valign, + visible=visible, + width=width, + x=x, + xanchor=xanchor, + xclick=xclick, + xref=xref, + xshift=xshift, + y=y, + yanchor=yanchor, + yclick=yclick, + yref=yref, + yshift=yshift, + **kwargs, + ) + return self._add_annotation_like( + "annotation", + "annotations", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def select_layout_images(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select images from a particular subplot cell and/or images + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all images are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each image and those for which the function returned True + will be in the selection. If an int N, the Nth image matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of images to select. + To select images by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + image that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all images are selected. + secondary_y: boolean or None (default None) + * If True, only select images associated with the secondary + y-axis of the subplot. + * If False, only select images associated with the primary + y-axis of the subplot. + * If None (the default), do not filter images based on secondary + y-axis. + + To select images by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the images that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "images", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_layout_image( + self, fn, selector=None, row=None, col=None, secondary_y=None + ): + """ + Apply a function to all images that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single image object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all images are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each image and those for which the function returned True + will be in the selection. If an int N, the Nth image matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of images to select. + To select images by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + images that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all images are selected. + secondary_y: boolean or None (default None) + * If True, only select images associated with the secondary + y-axis of the subplot. + * If False, only select images associated with the primary + y-axis of the subplot. + * If None (the default), do not filter images based on secondary + y-axis. + + To select images by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="images", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_layout_images( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all images that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all images that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all images are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each image and those for which the function returned True + will be in the selection. If an int N, the Nth image matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of images to select. + To select images by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + image that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all images are selected. + secondary_y: boolean or None (default None) + * If True, only select images associated with the secondary + y-axis of the subplot. + * If False, only select images associated with the primary + y-axis of the subplot. + * If None (the default), do not filter images based on secondary + y-axis. + + To select images by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected image. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="images", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_layout_image( + self, + arg=None, + layer=None, + name=None, + opacity=None, + sizex=None, + sizey=None, + sizing=None, + source=None, + templateitemname=None, + visible=None, + x=None, + xanchor=None, + xref=None, + y=None, + yanchor=None, + yref=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "Figure": + """ + Create and add a new image to the figure's layout + + Parameters + ---------- + arg + instance of Image or dict with compatible properties + layer + 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. + name + 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. + opacity + Sets the opacity of the image. + sizex + 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. + sizey + 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. + sizing + Specifies which dimension of the image to constrain. + source + 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. + templateitemname + 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`. + visible + Determines whether or not this image is visible. + x + 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 + xanchor + Sets the anchor for the x position + xref + 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. + y + 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 + yanchor + Sets the anchor for the y position. + yref + 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. + row + Subplot row for image. If 'all', addresses all rows in + the specified column(s). + col + Subplot column for image. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add image to secondary y-axis + exclude_empty_subplots + If True, image will not be added to subplots without + traces. + + Returns + ------- + Figure + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Image( + arg, + layer=layer, + name=name, + opacity=opacity, + sizex=sizex, + sizey=sizey, + sizing=sizing, + source=source, + templateitemname=templateitemname, + visible=visible, + x=x, + xanchor=xanchor, + xref=xref, + y=y, + yanchor=yanchor, + yref=yref, + **kwargs, + ) + return self._add_annotation_like( + "image", + "images", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def select_selections(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select selections from a particular subplot cell and/or selections + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all selections are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each selection and those for which the function returned True + will be in the selection. If an int N, the Nth selection matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of selections to select. + To select selections by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + selection that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all selections are selected. + secondary_y: boolean or None (default None) + * If True, only select selections associated with the secondary + y-axis of the subplot. + * If False, only select selections associated with the primary + y-axis of the subplot. + * If None (the default), do not filter selections based on secondary + y-axis. + + To select selections by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the selections that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "selections", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_selection( + self, fn, selector=None, row=None, col=None, secondary_y=None + ): + """ + Apply a function to all selections that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single selection object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all selections are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each selection and those for which the function returned True + will be in the selection. If an int N, the Nth selection matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of selections to select. + To select selections by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + selections that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all selections are selected. + secondary_y: boolean or None (default None) + * If True, only select selections associated with the secondary + y-axis of the subplot. + * If False, only select selections associated with the primary + y-axis of the subplot. + * If None (the default), do not filter selections based on secondary + y-axis. + + To select selections by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="selections", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_selections( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all selections that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all selections that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all selections are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each selection and those for which the function returned True + will be in the selection. If an int N, the Nth selection matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of selections to select. + To select selections by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + selection that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all selections are selected. + secondary_y: boolean or None (default None) + * If True, only select selections associated with the secondary + y-axis of the subplot. + * If False, only select selections associated with the primary + y-axis of the subplot. + * If None (the default), do not filter selections based on secondary + y-axis. + + To select selections by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected selection. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="selections", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_selection( + self, + arg=None, + line=None, + name=None, + opacity=None, + path=None, + templateitemname=None, + type=None, + x0=None, + x1=None, + xref=None, + y0=None, + y1=None, + yref=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "Figure": + """ + Create and add a new selection to the figure's layout + + Parameters + ---------- + arg + instance of Selection or dict with compatible + properties + line + :class:`plotly.graph_objects.layout.selection.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the selection. + path + For `type` "path" - a valid SVG path similar to + `shapes.path` in data coordinates. Allowed segments + are: M, L and Z. + templateitemname + 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`. + type + 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`. + x0 + Sets the selection's starting x position. + x1 + Sets the selection's end x position. + xref + 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. + y0 + Sets the selection's starting y position. + y1 + Sets the selection's end y position. + yref + 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. + row + Subplot row for selection. If 'all', addresses all rows + in the specified column(s). + col + Subplot column for selection. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add selection to secondary y-axis + exclude_empty_subplots + If True, selection will not be added to subplots + without traces. + + Returns + ------- + Figure + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Selection( + arg, + line=line, + name=name, + opacity=opacity, + path=path, + templateitemname=templateitemname, + type=type, + x0=x0, + x1=x1, + xref=xref, + y0=y0, + y1=y1, + yref=yref, + **kwargs, + ) + return self._add_annotation_like( + "selection", + "selections", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def select_shapes(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select shapes from a particular subplot cell and/or shapes + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all shapes are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each shape and those for which the function returned True + will be in the selection. If an int N, the Nth shape matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of shapes to select. + To select shapes by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + shape that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all shapes are selected. + secondary_y: boolean or None (default None) + * If True, only select shapes associated with the secondary + y-axis of the subplot. + * If False, only select shapes associated with the primary + y-axis of the subplot. + * If None (the default), do not filter shapes based on secondary + y-axis. + + To select shapes by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the shapes that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "shapes", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_shape(self, fn, selector=None, row=None, col=None, secondary_y=None): + """ + Apply a function to all shapes that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single shape object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all shapes are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each shape and those for which the function returned True + will be in the selection. If an int N, the Nth shape matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of shapes to select. + To select shapes by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + shapes that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all shapes are selected. + secondary_y: boolean or None (default None) + * If True, only select shapes associated with the secondary + y-axis of the subplot. + * If False, only select shapes associated with the primary + y-axis of the subplot. + * If None (the default), do not filter shapes based on secondary + y-axis. + + To select shapes by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="shapes", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_shapes( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "Figure": + """ + Perform a property update operation on all shapes that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all shapes that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all shapes are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each shape and those for which the function returned True + will be in the selection. If an int N, the Nth shape matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of shapes to select. + To select shapes by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + shape that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all shapes are selected. + secondary_y: boolean or None (default None) + * If True, only select shapes associated with the secondary + y-axis of the subplot. + * If False, only select shapes associated with the primary + y-axis of the subplot. + * If None (the default), do not filter shapes based on secondary + y-axis. + + To select shapes by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected shape. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + """ + for obj in self._select_annotations_like( + prop="shapes", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_shape( + self, + arg=None, + editable=None, + fillcolor=None, + fillrule=None, + label=None, + layer=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + name=None, + opacity=None, + path=None, + showlegend=None, + templateitemname=None, + type=None, + visible=None, + x0=None, + x0shift=None, + x1=None, + x1shift=None, + xanchor=None, + xref=None, + xsizemode=None, + y0=None, + y0shift=None, + y1=None, + y1shift=None, + yanchor=None, + yref=None, + ysizemode=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "Figure": + """ + Create and add a new shape to the figure's layout + + Parameters + ---------- + arg + instance of Shape or dict with compatible properties + editable + 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`. + fillcolor + Sets the color filling the shape's interior. Only + applies to closed shapes. + fillrule + 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 + label + :class:`plotly.graph_objects.layout.shape.Label` + instance or dict with compatible properties + layer + Specifies whether shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or + above traces ("above"). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.layout.shape.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this shape. + line + :class:`plotly.graph_objects.layout.shape.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the shape. + path + 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 + showlegend + Determines whether or not this shape is shown in the + legend. + templateitemname + 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`. + type + 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. + visible + 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). + x0 + Sets the shape's starting x position. See `type` and + `xsizemode` for more info. + x0shift + 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. + x1 + Sets the shape's end x position. See `type` and + `xsizemode` for more info. + x1shift + 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. + xanchor + 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". + xref + 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. + xsizemode + 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. + y0 + Sets the shape's starting y position. See `type` and + `ysizemode` for more info. + y0shift + 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. + y1 + Sets the shape's end y position. See `type` and + `ysizemode` for more info. + y1shift + 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. + yanchor + 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". + yref + 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. + ysizemode + 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. + row + Subplot row for shape. If 'all', addresses all rows in + the specified column(s). + col + Subplot column for shape. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add shape to secondary y-axis + exclude_empty_subplots + If True, shape will not be added to subplots without + traces. + + Returns + ------- + Figure + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Shape( + arg, + editable=editable, + fillcolor=fillcolor, + fillrule=fillrule, + label=label, + layer=layer, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + name=name, + opacity=opacity, + path=path, + showlegend=showlegend, + templateitemname=templateitemname, + type=type, + visible=visible, + x0=x0, + x0shift=x0shift, + x1=x1, + x1shift=x1shift, + xanchor=xanchor, + xref=xref, + xsizemode=xsizemode, + y0=y0, + y0shift=y0shift, + y1=y1, + y1shift=y1shift, + yanchor=yanchor, + yref=yref, + ysizemode=ysizemode, + **kwargs, + ) + return self._add_annotation_like( + "shape", + "shapes", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_figurewidget.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_figurewidget.py new file mode 100644 index 0000000..9731635 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_figurewidget.py @@ -0,0 +1,24437 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basewidget import BaseFigureWidget + + +class FigureWidget(BaseFigureWidget): + def __init__( + self, data=None, layout=None, frames=None, skip_invalid=False, **kwargs + ): + """ + Create a new :class:FigureWidget instance + + Parameters + ---------- + data + The 'data' property is a tuple of trace instances + that may be specified as: + - A list or tuple of trace instances + (e.g. [Scatter(...), Bar(...)]) + - A single trace instance + (e.g. Scatter(...), Bar(...), etc.) + - A list or tuple of dicts of string/value properties where: + - The 'type' property specifies the trace type + One of: ['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', 'sankey', + 'scatter', 'scatter3d', 'scattercarpet', + 'scattergeo', 'scattergl', 'scattermap', + 'scattermapbox', 'scatterpolar', + 'scatterpolargl', 'scattersmith', + 'scatterternary', 'splom', 'streamtube', + 'sunburst', 'surface', 'table', 'treemap', + 'violin', 'volume', 'waterfall'] + + - All remaining properties are passed to the constructor of + the specified trace type + + (e.g. [{'type': 'scatter', ...}, {'type': 'bar, ...}]) + + layout + The 'layout' property is an instance of Layout + that may be specified as: + - An instance of :class:`plotly.graph_objs.Layout` + - A dict of string/value properties that will be passed + to the Layout constructor + + frames + The 'frames' property is a tuple of instances of + Frame that may be specified as: + - A list or tuple of instances of plotly.graph_objs.Frame + - A list or tuple of dicts of string/value properties that + will be passed to the Frame constructor + + skip_invalid: bool + If True, invalid properties in the figure specification will be + skipped silently. If False (default) invalid properties in the + figure specification will result in a ValueError + + Raises + ------ + ValueError + if a property in the specification of data, layout, or frames + is invalid AND skip_invalid is False + """ + super().__init__(data, layout, frames, skip_invalid, **kwargs) + + def update(self, dict1=None, overwrite=False, **kwargs) -> "FigureWidget": + """ + + Update the properties of the figure with a dict and/or with + keyword arguments. + + This recursively updates the structure of the figure + object with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Examples + -------- + >>> import plotly.graph_objs as go + >>> fig = go.Figure(data=[{'y': [1, 2, 3]}]) + >>> fig.update(data=[{'y': [4, 5, 6]}]) # doctest: +ELLIPSIS + Figure(...) + >>> fig.to_plotly_json() # doctest: +SKIP + {'data': [{'type': 'scatter', + 'uid': 'e86a7c7a-346a-11e8-8aa8-a0999b0c017b', + 'y': array([4, 5, 6], dtype=int32)}], + 'layout': {}} + + >>> fig = go.Figure(layout={'xaxis': + ... {'color': 'green', + ... 'range': [0, 1]}}) + >>> fig.update({'layout': {'xaxis': {'color': 'pink'}}}) # doctest: +ELLIPSIS + Figure(...) + >>> fig.to_plotly_json() # doctest: +SKIP + {'data': [], + 'layout': {'xaxis': + {'color': 'pink', + 'range': [0, 1]}}} + + Returns + ------- + BaseFigure + Updated figure + + """ + return super().update(dict1, overwrite, **kwargs) + + def update_traces( + self, + patch=None, + selector=None, + row=None, + col=None, + secondary_y=None, + overwrite=False, + **kwargs, + ) -> "FigureWidget": + """ + + Perform a property update operation on all traces that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all traces that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + **kwargs + Additional property updates to apply to each selected trace. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the Figure object that the method was called on + + """ + return super().update_traces( + patch, selector, row, col, secondary_y, overwrite, **kwargs + ) + + def update_layout(self, dict1=None, overwrite=False, **kwargs) -> "FigureWidget": + """ + + Update the properties of the figure's layout with a dict and/or with + keyword arguments. + + This recursively updates the structure of the original + layout with the values in the input dict / keyword arguments. + + Parameters + ---------- + dict1 : dict + Dictionary of properties to be updated + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + kwargs : + Keyword/value pair of properties to be updated + + Returns + ------- + BaseFigure + The Figure object that the update_layout method was called on + + """ + return super().update_layout(dict1, overwrite, **kwargs) + + def for_each_trace( + self, fn, selector=None, row=None, col=None, secondary_y=None + ) -> "FigureWidget": + """ + + Apply a function to all traces that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single trace object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all traces are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each trace and those for which the function returned True + will be in the selection. If an int N, the Nth trace matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of traces to select. + To select traces by row and column, the Figure must have been + created using plotly.subplots.make_subplots. If None + (the default), all traces are selected. + secondary_y: boolean or None (default None) + * If True, only select traces associated with the secondary + y-axis of the subplot. + * If False, only select traces associated with the primary + y-axis of the subplot. + * If None (the default), do not filter traces based on secondary + y-axis. + + To select traces by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the Figure object that the method was called on + + """ + return super().for_each_trace(fn, selector, row, col, secondary_y) + + def add_trace( + self, trace, row=None, col=None, secondary_y=None, exclude_empty_subplots=False + ) -> "FigureWidget": + """ + + Add a trace to the figure + + Parameters + ---------- + trace : BaseTraceType or dict + Either: + - An instances of a trace classe from the plotly.graph_objs + package (e.g plotly.graph_objs.Scatter, plotly.graph_objs.Bar) + - or a dicts where: + + - The 'type' property specifies the trace type (e.g. + 'scatter', 'bar', 'area', etc.). If the dict has no 'type' + property then 'scatter' is assumed. + - All remaining properties are passed to the constructor + of the specified trace type. + + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`. + If 'all', addresses all rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`. + If 'all', addresses all columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + * The trace argument is a 2D cartesian trace + (scatter, bar, etc.) + exclude_empty_subplots: boolean + If True, the trace will not be added to subplots that don't already + have traces. + Returns + ------- + BaseFigure + The Figure that add_trace was called on + + Examples + -------- + + >>> from plotly import subplots + >>> import plotly.graph_objs as go + + Add two Scatter traces to a figure + + >>> fig = go.Figure() + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2])) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2])) # doctest: +ELLIPSIS + Figure(...) + + + Add two Scatter traces to vertically stacked subplots + + >>> fig = subplots.make_subplots(rows=2) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + """ + return super().add_trace(trace, row, col, secondary_y, exclude_empty_subplots) + + def add_traces( + self, + data, + rows=None, + cols=None, + secondary_ys=None, + exclude_empty_subplots=False, + ) -> "FigureWidget": + """ + + Add traces to the figure + + Parameters + ---------- + data : list[BaseTraceType or dict] + A list of trace specifications to be added. + Trace specifications may be either: + + - Instances of trace classes from the plotly.graph_objs + package (e.g plotly.graph_objs.Scatter, plotly.graph_objs.Bar) + - Dicts where: + + - The 'type' property specifies the trace type (e.g. + 'scatter', 'bar', 'area', etc.). If the dict has no 'type' + property then 'scatter' is assumed. + - All remaining properties are passed to the constructor + of the specified trace type. + + rows : None, list[int], or int (default None) + List of subplot row indexes (starting from 1) for the traces to be + added. Only valid if figure was created using + `plotly.tools.make_subplots` + If a single integer is passed, all traces will be added to row number + + cols : None or list[int] (default None) + List of subplot column indexes (starting from 1) for the traces + to be added. Only valid if figure was created using + `plotly.tools.make_subplots` + If a single integer is passed, all traces will be added to column number + + + secondary_ys: None or list[boolean] (default None) + List of secondary_y booleans for traces to be added. See the + docstring for `add_trace` for more info. + + exclude_empty_subplots: boolean + If True, the trace will not be added to subplots that don't already + have traces. + + Returns + ------- + BaseFigure + The Figure that add_traces was called on + + Examples + -------- + + >>> from plotly import subplots + >>> import plotly.graph_objs as go + + Add two Scatter traces to a figure + + >>> fig = go.Figure() + >>> fig.add_traces([go.Scatter(x=[1,2,3], y=[2,1,2]), + ... go.Scatter(x=[1,2,3], y=[2,1,2])]) # doctest: +ELLIPSIS + Figure(...) + + Add two Scatter traces to vertically stacked subplots + + >>> fig = subplots.make_subplots(rows=2) + >>> fig.add_traces([go.Scatter(x=[1,2,3], y=[2,1,2]), + ... go.Scatter(x=[1,2,3], y=[2,1,2])], + ... rows=[1, 2], cols=[1, 1]) # doctest: +ELLIPSIS + Figure(...) + + """ + return super().add_traces( + data, rows, cols, secondary_ys, exclude_empty_subplots + ) + + def add_vline( + self, + x, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "FigureWidget": + """ + + Add a vertical line to a plot or subplot that extends infinitely in the + y-dimension. + + Parameters + ---------- + x: float or int + A number representing the x coordinate of the vertical line. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the line. Example positions are "bottom left", "right top", + "right", "bottom". If an annotation is added but annotation_position is + not specified, this defaults to "top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_vline( + x, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def add_hline( + self, + y, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "FigureWidget": + """ + + Add a horizontal line to a plot or subplot that extends infinitely in the + x-dimension. + + Parameters + ---------- + y: float or int + A number representing the y coordinate of the horizontal line. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the line. Example positions are "bottom left", "right top", + "right", "bottom". If an annotation is added but annotation_position is + not specified, this defaults to "top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_hline( + y, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def add_vrect( + self, + x0, + x1, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "FigureWidget": + """ + + Add a rectangle to a plot or subplot that extends infinitely in the + y-dimension. + + Parameters + ---------- + x0: float or int + A number representing the x coordinate of one side of the rectangle. + x1: float or int + A number representing the x coordinate of the other side of the rectangle. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["inside", "outside"], ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the rectangle. Example positions are "outside top left", "inside + bottom", "right", "inside left", "inside" ("outside" is not supported). If + an annotation is added but annotation_position is not specified this + defaults to "inside top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_vrect( + x0, x1, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def add_hrect( + self, + y0, + y1, + row="all", + col="all", + exclude_empty_subplots=True, + annotation=None, + **kwargs, + ) -> "FigureWidget": + """ + + Add a rectangle to a plot or subplot that extends infinitely in the + x-dimension. + + Parameters + ---------- + y0: float or int + A number representing the y coordinate of one side of the rectangle. + y1: float or int + A number representing the y coordinate of the other side of the rectangle. + exclude_empty_subplots: Boolean + If True (default) do not place the shape on subplots that have no data + plotted on them. + row: None, int or 'all' + Subplot row for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + col: None, int or 'all' + Subplot column for shape indexed starting at 1. If 'all', addresses all rows in + the specified column(s). If both row and col are None, addresses the + first subplot if subplots exist, or the only plot. By default is "all". + annotation: dict or plotly.graph_objects.layout.Annotation. If dict(), + it is interpreted as describing an annotation. The annotation is + placed relative to the shape based on annotation_position (see + below) unless its x or y value has been specified for the annotation + passed here. xref and yref are always the same as for the added + shape and cannot be overridden. + annotation_position: a string containing optionally ["inside", "outside"], ["top", "bottom"] + and ["left", "right"] specifying where the text should be anchored + to on the rectangle. Example positions are "outside top left", "inside + bottom", "right", "inside left", "inside" ("outside" is not supported). If + an annotation is added but annotation_position is not specified this + defaults to "inside top right". + annotation_*: any parameters to go.layout.Annotation can be passed as + keywords by prefixing them with "annotation_". For example, to specify the + annotation text "example" you can pass annotation_text="example" as a + keyword argument. + **kwargs: + Any named function parameters that can be passed to 'add_shape', + except for x0, x1, y0, y1 or type. + """ + return super().add_hrect( + y0, y1, row, col, exclude_empty_subplots, annotation, **kwargs + ) + + def set_subplots( + self, rows=None, cols=None, **make_subplots_args + ) -> "FigureWidget": + """ + + Add subplots to this figure. If the figure already contains subplots, + then this throws an error. Accepts any keyword arguments that + plotly.subplots.make_subplots accepts. + + """ + return super().set_subplots(rows, cols, **make_subplots_args) + + def add_bar( + self, + alignmentgroup=None, + base=None, + basesrc=None, + cliponaxis=None, + constraintext=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + offsetsrc=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + widthsrc=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Bar trace + + The data visualized by the span of the bars is set in `y` if + `orientation` is set to "v" (the default) and the labels are + set in `x`. By setting `orientation` to "h", the roles are + interchanged. + + Parameters + ---------- + alignmentgroup + 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. + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.bar.ErrorX` instance or + dict with compatible properties + error_y + :class:`plotly.graph_objects.bar.ErrorY` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.bar.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.bar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.bar.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.bar.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.bar.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.bar.Unselected` instance + or dict with compatible properties + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Bar + + new_trace = Bar( + alignmentgroup=alignmentgroup, + base=base, + basesrc=basesrc, + cliponaxis=cliponaxis, + constraintext=constraintext, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + error_x=error_x, + error_y=error_y, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetgroup=offsetgroup, + offsetsrc=offsetsrc, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + width=width, + widthsrc=widthsrc, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_barpolar( + self, + base=None, + basesrc=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetsrc=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + widthsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Barpolar trace + + The data visualized by the radial span of the bars is set in + `r` + + Parameters + ---------- + base + 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. + basesrc + Sets the source reference on Chart Studio Cloud for + `base`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.barpolar.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.barpolar.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.barpolar.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + Shifts the angular position where the bar is drawn (in + "thetatunit" units). + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.barpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.barpolar.Stream` instance + or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.barpolar.Unselected` + instance or dict with compatible properties + visible + 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). + width + Sets the bar angular width (in "thetaunit" units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Barpolar + + new_trace = Barpolar( + base=base, + basesrc=basesrc, + customdata=customdata, + customdatasrc=customdatasrc, + dr=dr, + dtheta=dtheta, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetsrc=offsetsrc, + opacity=opacity, + r=r, + r0=r0, + rsrc=rsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + theta=theta, + theta0=theta0, + thetasrc=thetasrc, + thetaunit=thetaunit, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + width=width, + widthsrc=widthsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_box( + self, + alignmentgroup=None, + boxmean=None, + boxpoints=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + jitter=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lowerfence=None, + lowerfencesrc=None, + marker=None, + mean=None, + meansrc=None, + median=None, + mediansrc=None, + meta=None, + metasrc=None, + name=None, + notched=None, + notchspan=None, + notchspansrc=None, + notchwidth=None, + offsetgroup=None, + opacity=None, + orientation=None, + pointpos=None, + q1=None, + q1src=None, + q3=None, + q3src=None, + quartilemethod=None, + sd=None, + sdmultiple=None, + sdsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + showwhiskers=None, + sizemode=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + upperfence=None, + upperfencesrc=None, + visible=None, + whiskerwidth=None, + width=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Box trace + + Each box spans from quartile 1 (Q1) to quartile 3 (Q3). The + second quartile (Q2, i.e. the median) is marked by a line + inside the box. The fences grow outward from the boxes' edges, + by default they span +/- 1.5 times the interquartile range + (IQR: Q3-Q1), The sample mean and standard deviation as well as + notches and the sample, outlier and suspected outliers points + can be optionally added to the box plot. The values and + positions corresponding to each boxes can be input using two + signatures. The first signature expects users to supply the + sample values in the `y` data array for vertical boxes (`x` for + horizontal boxes). By supplying an `x` (`y`) array, one box per + distinct `x` (`y`) value is drawn If no `x` (`y`) list is + provided, a single box is drawn. In this case, the box is + positioned with the trace `name` or with `x0` (`y0`) if + provided. The second signature expects users to supply the + boxes corresponding Q1, median and Q3 statistics in the `q1`, + `median` and `q3` data arrays respectively. Other box features + relying on statistics namely `lowerfence`, `upperfence`, + `notchspan` can be set directly by the users. To have plotly + compute them or to show sample points besides the boxes, users + can set the `y` data array for vertical boxes (`x` for + horizontal boxes) to a 2D array with the outer length + corresponding to the number of boxes in the traces and the + inner length corresponding the sample size. + + Parameters + ---------- + alignmentgroup + 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. + boxmean + 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. + boxpoints + 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". + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step for multi-box traces set + using q1/median/q3. + dy + Sets the y coordinate step for multi-box traces set + using q1/median/q3. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.box.Hoverlabel` instance + or dict with compatible properties + hoveron + Do the hover effects highlight individual boxes or + sample points or both? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.box.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.box.Line` instance or dict + with compatible properties + lowerfence + 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. + lowerfencesrc + Sets the source reference on Chart Studio Cloud for + `lowerfence`. + marker + :class:`plotly.graph_objects.box.Marker` instance or + dict with compatible properties + mean + 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. + meansrc + Sets the source reference on Chart Studio Cloud for + `mean`. + median + Sets the median values. There should be as many items + as the number of boxes desired. + mediansrc + Sets the source reference on Chart Studio Cloud for + `median`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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 + notched + 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. + notchspan + 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. + notchspansrc + Sets the source reference on Chart Studio Cloud for + `notchspan`. + notchwidth + Sets the width of the notches relative to the box' + width. For example, with 0, the notches are as wide as + the box(es). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the box(es). If "v" ("h"), the + distribution is visualized along the vertical + (horizontal). + pointpos + 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 + q1 + Sets the Quartile 1 values. There should be as many + items as the number of boxes desired. + q1src + Sets the source reference on Chart Studio Cloud for + `q1`. + q3 + Sets the Quartile 3 values. There should be as many + items as the number of boxes desired. + q3src + Sets the source reference on Chart Studio Cloud for + `q3`. + quartilemethod + 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. + sd + 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. + sdmultiple + Scales the box size when sizemode=sd Allowing boxes to + be drawn across any stddev range For example 1-stddev, + 3-stddev, 5-stddev + sdsrc + Sets the source reference on Chart Studio Cloud for + `sd`. + selected + :class:`plotly.graph_objects.box.Selected` instance or + dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showwhiskers + Determines whether or not whiskers are visible. + Defaults to true for `sizemode` "quartiles", false for + "sd". + sizemode + 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 + stream + :class:`plotly.graph_objects.box.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.box.Unselected` instance + or dict with compatible properties + upperfence + 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. + upperfencesrc + Sets the source reference on Chart Studio Cloud for + `upperfence`. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Box + + new_trace = Box( + alignmentgroup=alignmentgroup, + boxmean=boxmean, + boxpoints=boxpoints, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + jitter=jitter, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + lowerfence=lowerfence, + lowerfencesrc=lowerfencesrc, + marker=marker, + mean=mean, + meansrc=meansrc, + median=median, + mediansrc=mediansrc, + meta=meta, + metasrc=metasrc, + name=name, + notched=notched, + notchspan=notchspan, + notchspansrc=notchspansrc, + notchwidth=notchwidth, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + pointpos=pointpos, + q1=q1, + q1src=q1src, + q3=q3, + q3src=q3src, + quartilemethod=quartilemethod, + sd=sd, + sdmultiple=sdmultiple, + sdsrc=sdsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showwhiskers=showwhiskers, + sizemode=sizemode, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + upperfence=upperfence, + upperfencesrc=upperfencesrc, + visible=visible, + whiskerwidth=whiskerwidth, + width=width, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_candlestick( + self, + close=None, + closesrc=None, + customdata=None, + customdatasrc=None, + decreasing=None, + high=None, + highsrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + low=None, + lowsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + open=None, + opensrc=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + whiskerwidth=None, + x=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + yaxis=None, + yhoverformat=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Candlestick trace + + The candlestick is a style of financial chart describing open, + high, low and close for a given `x` coordinate (most likely + time). 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 value are called increasing + (decreasing). By default, increasing candles are drawn in green + whereas decreasing are drawn in red. + + Parameters + ---------- + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.candlestick.Decreasing` + instance or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.candlestick.Hoverlabel` + instance or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.candlestick.Increasing` + instance or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.candlestick.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.candlestick.Line` instance + or dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.candlestick.Stream` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + whiskerwidth + Sets the width of the whiskers relative to the box' + width. For example, with 1, the whiskers are as wide as + the box(es). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Candlestick + + new_trace = Candlestick( + close=close, + closesrc=closesrc, + customdata=customdata, + customdatasrc=customdatasrc, + decreasing=decreasing, + high=high, + highsrc=highsrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + increasing=increasing, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + low=low, + lowsrc=lowsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + open=open, + opensrc=opensrc, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + whiskerwidth=whiskerwidth, + x=x, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + yaxis=yaxis, + yhoverformat=yhoverformat, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_carpet( + self, + a=None, + a0=None, + aaxis=None, + asrc=None, + b=None, + b0=None, + baxis=None, + bsrc=None, + carpet=None, + cheaterslope=None, + color=None, + customdata=None, + customdatasrc=None, + da=None, + db=None, + font=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + stream=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xsrc=None, + y=None, + yaxis=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Carpet trace + + The data describing carpet axis layout is set in `y` and + (optionally) also `x`. If only `y` is present, `x` the plot is + interpreted as a cheater plot and is filled in using the `y` + values. `x` and `y` may either be 2D arrays matching with each + dimension matching that of `a` and `b`, or they may be 1D + arrays with total length equal to that of `a` and `b`. + + Parameters + ---------- + a + An array containing values of the first parameter value + a0 + Alternate to `a`. Builds a linear space of a + coordinates. Use with `da` where `a0` is the starting + coordinate and `da` the step. + aaxis + :class:`plotly.graph_objects.carpet.Aaxis` instance or + dict with compatible properties + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + A two dimensional array of y coordinates at each carpet + point. + b0 + Alternate to `b`. Builds a linear space of a + coordinates. Use with `db` where `b0` is the starting + coordinate and `db` the step. + baxis + :class:`plotly.graph_objects.carpet.Baxis` instance or + dict with compatible properties + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + cheaterslope + The shift applied to each successive row of data in + creating a cheater plot. Only used if `x` is been + omitted. + color + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the a coordinate step. See `a0` for more info. + db + Sets the b coordinate step. See `b0` for more info. + font + The default font used for axis & tick labels on this + carpet + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.carpet.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + stream + :class:`plotly.graph_objects.carpet.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + 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. + xaxis + 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. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + A two dimensional array of y coordinates at each carpet + point. + yaxis + 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. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Carpet + + new_trace = Carpet( + a=a, + a0=a0, + aaxis=aaxis, + asrc=asrc, + b=b, + b0=b0, + baxis=baxis, + bsrc=bsrc, + carpet=carpet, + cheaterslope=cheaterslope, + color=color, + customdata=customdata, + customdatasrc=customdatasrc, + da=da, + db=db, + font=font, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + stream=stream, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_choropleth( + self, + autocolorscale=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geo=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locationmode=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Choropleth trace + + The data that describes the choropleth value-to-color mapping + is set in `z`. The geographic locations corresponding to each + value in `z` are set in `locations`. + + Parameters + ---------- + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choropleth.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choropleth.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choropleth.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locationmode + 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. + locations + Sets the coordinates via location IDs or names. See + `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choropleth.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choropleth.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choropleth.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choropleth.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Choropleth + + new_trace = Choropleth( + autocolorscale=autocolorscale, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + geo=geo, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + locationmode=locationmode, + locations=locations, + locationssrc=locationssrc, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + reversescale=reversescale, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_choroplethmap( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Choroplethmap trace + + GeoJSON features to be filled are set in `geojson` The data + that describes the choropleth value-to-color mapping is set in + `locations` and `z`. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmap.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmap.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmap.Unselected` + instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Choroplethmap + + new_trace = Choroplethmap( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + locations=locations, + locationssrc=locationssrc, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + reversescale=reversescale, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_choroplethmapbox( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + locations=None, + locationssrc=None, + marker=None, + meta=None, + metasrc=None, + name=None, + reversescale=None, + selected=None, + selectedpoints=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Choroplethmapbox trace + + "choroplethmapbox" trace is deprecated! Please consider + switching to the "choroplethmap" trace type and `map` subplots. + Learn more at: https://plotly.com/python/maplibre-migration/ as + well as https://plotly.com/javascript/maplibre-migration/ + GeoJSON features to be filled are set in `geojson` The data + that describes the choropleth value-to-color mapping is set in + `locations` and `z`. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.choroplethmapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.choroplethmapbox.Hoverlabe + l` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.choroplethmapbox.Legendgro + uptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + locations + Sets which features found in "geojson" to plot using + their feature `id` field. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + marker + :class:`plotly.graph_objects.choroplethmapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + reversescale + 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. + selected + :class:`plotly.graph_objects.choroplethmapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.choroplethmapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + Sets the text elements associated with each location. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.choroplethmapbox.Unselecte + d` instance or dict with compatible properties + visible + 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). + z + Sets the color values. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Choroplethmapbox + + new_trace = Choroplethmapbox( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + locations=locations, + locationssrc=locationssrc, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + reversescale=reversescale, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_cone( + self, + anchor=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + sizemode=None, + sizeref=None, + stream=None, + text=None, + textsrc=None, + u=None, + uhoverformat=None, + uid=None, + uirevision=None, + usrc=None, + v=None, + vhoverformat=None, + visible=None, + vsrc=None, + w=None, + whoverformat=None, + wsrc=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Cone trace + + Use cone traces to visualize vector fields. Specify a vector + field using 6 1D arrays, 3 position arrays `x`, `y` and `z` and + 3 vector component arrays `u`, `v`, `w`. The cones are drawn + exactly at the positions given by `x`, `y` and `z`. + + Parameters + ---------- + anchor + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.cone.ColorBar` instance or + dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.cone.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.cone.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.cone.Lighting` instance or + dict with compatible properties + lightposition + :class:`plotly.graph_objects.cone.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizemode + 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". + sizeref + 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. + stream + :class:`plotly.graph_objects.cone.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field and of the + displayed cones. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field and of the + displayed cones. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field and of the + displayed cones. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Cone + + new_trace = Cone( + anchor=anchor, + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + sizemode=sizemode, + sizeref=sizeref, + stream=stream, + text=text, + textsrc=textsrc, + u=u, + uhoverformat=uhoverformat, + uid=uid, + uirevision=uirevision, + usrc=usrc, + v=v, + vhoverformat=vhoverformat, + visible=visible, + vsrc=vsrc, + w=w, + whoverformat=whoverformat, + wsrc=wsrc, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_contour( + self, + autocolorscale=None, + autocontour=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + contours=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoverongaps=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textfont=None, + textsrc=None, + texttemplate=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + xtype=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + ytype=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Contour trace + + The data from which contour lines are computed is set in `z`. + Data in `z` must be a 2D list of numbers. Say that `z` has N + rows and M columns, then by default, these N rows correspond to + N y coordinates (set in `y` or auto-generated) and the M + columns correspond to M x coordinates (set in `x` or auto- + generated). By setting `transpose` to True, the above behavior + is flipped. + + Parameters + ---------- + autocolorscale + 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. + autocontour + 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`. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contour.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + contours + :class:`plotly.graph_objects.contour.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.contour.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contour.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contour.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contour.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Contour + + new_trace = Contour( + autocolorscale=autocolorscale, + autocontour=autocontour, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + connectgaps=connectgaps, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoverongaps=hoverongaps, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + ncontours=ncontours, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textfont=textfont, + textsrc=textsrc, + texttemplate=texttemplate, + transpose=transpose, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + xtype=xtype, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + ytype=ytype, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zorder=zorder, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_contourcarpet( + self, + a=None, + a0=None, + asrc=None, + atype=None, + autocolorscale=None, + autocontour=None, + b=None, + b0=None, + bsrc=None, + btype=None, + carpet=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contours=None, + customdata=None, + customdatasrc=None, + da=None, + db=None, + fillcolor=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + xaxis=None, + yaxis=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Contourcarpet trace + + Plots contours on either the first carpet axis or the carpet + axis with a matching `carpet` attribute. Data `z` is + interpreted as matching that of the corresponding carpet axis. + + Parameters + ---------- + a + Sets the x coordinates. + a0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + atype + 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). + autocolorscale + 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. + autocontour + 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`. + b + Sets the y coordinates. + b0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + btype + 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) + carpet + The `carpet` of the carpet axes on which this contour + trace lies + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.contourcarpet.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.contourcarpet.Contours` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + da + Sets the x coordinate step. See `x0` for more info. + db + Sets the y coordinate step. See `y0` for more info. + fillcolor + 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. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.contourcarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.contourcarpet.Line` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.contourcarpet.Stream` + instance or dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + xaxis + 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. + yaxis + 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. + z + Sets the z data. + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Contourcarpet + + new_trace = Contourcarpet( + a=a, + a0=a0, + asrc=asrc, + atype=atype, + autocolorscale=autocolorscale, + autocontour=autocontour, + b=b, + b0=b0, + bsrc=bsrc, + btype=btype, + carpet=carpet, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + da=da, + db=db, + fillcolor=fillcolor, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + ncontours=ncontours, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textsrc=textsrc, + transpose=transpose, + uid=uid, + uirevision=uirevision, + visible=visible, + xaxis=xaxis, + yaxis=yaxis, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zorder=zorder, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_densitymap( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lon=None, + lonsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + radius=None, + radiussrc=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Densitymap trace + + Draws a bivariate kernel density estimation with a Gaussian + kernel from `lon` and `lat` coordinates and optional `z` values + using a colorscale. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymap.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymap + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Densitymap + + new_trace = Densitymap( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lon=lon, + lonsrc=lonsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + radius=radius, + radiussrc=radiussrc, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_densitymapbox( + self, + autocolorscale=None, + below=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lon=None, + lonsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + radius=None, + radiussrc=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + subplot=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + z=None, + zauto=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Densitymapbox trace + + "densitymapbox" trace is deprecated! Please consider switching + to the "densitymap" trace type and `map` subplots. Learn more + at: https://plotly.com/python/maplibre-migration/ as well as + https://plotly.com/javascript/maplibre-migration/ Draws a + bivariate kernel density estimation with a Gaussian kernel from + `lon` and `lat` coordinates and optional `z` values using a + colorscale. + + Parameters + ---------- + autocolorscale + 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. + below + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.densitymapbox.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.densitymapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.densitymapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + radius + Sets the radius of influence of one `lon` / `lat` point + in pixels. Increasing the value makes the densitymapbox + trace smoother, but less detailed. + radiussrc + Sets the source reference on Chart Studio Cloud for + `radius`. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.densitymapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + z + Sets the points' weight. For example, a value of 10 + would be equivalent to having 10 points of weight 1 in + the same spot + zauto + 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. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Densitymapbox + + new_trace = Densitymapbox( + autocolorscale=autocolorscale, + below=below, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lon=lon, + lonsrc=lonsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + radius=radius, + radiussrc=radiussrc, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + subplot=subplot, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + z=z, + zauto=zauto, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_funnel( + self, + alignmentgroup=None, + cliponaxis=None, + connector=None, + constraintext=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + visible=None, + width=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Funnel trace + + Visualize stages in a process using length-encoded bars. This + trace can be used to show data in either a part-to-whole + representation wherein each item appears in a single stage, or + in a "drop-off" representation wherein each item appears in + each stage it traversed. See also the "funnelarea" trace type + for a different approach to visualizing funnel data. + + Parameters + ---------- + alignmentgroup + 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. + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.funnel.Connector` instance + or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnel.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnel.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnel.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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". + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnel.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple funnels, percentages & + totals are computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Funnel + + new_trace = Funnel( + alignmentgroup=alignmentgroup, + cliponaxis=cliponaxis, + connector=connector, + constraintext=constraintext, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + visible=visible, + width=width, + x=x, + x0=x0, + xaxis=xaxis, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_funnelarea( + self, + aspectratio=None, + baseratio=None, + customdata=None, + customdatasrc=None, + dlabel=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + label0=None, + labels=None, + labelssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + scalegroup=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + title=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Funnelarea trace + + Visualize stages in a process using area-encoded trapezoids. + This trace can be used to show data in a part-to-whole + representation similar to a "pie" trace, wherein each item + appears in a single stage. See also the "funnel" trace type for + a different approach to visualizing funnel data. + + Parameters + ---------- + aspectratio + Sets the ratio between height and width + baseratio + Sets the ratio between bottom length and maximum top + length. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.funnelarea.Domain` + instance or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnelarea.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnelarea.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnelarea.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnelarea.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.funnelarea.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Funnelarea + + new_trace = Funnelarea( + aspectratio=aspectratio, + baseratio=baseratio, + customdata=customdata, + customdatasrc=customdatasrc, + dlabel=dlabel, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + label0=label0, + labels=labels, + labelssrc=labelssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + scalegroup=scalegroup, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + title=title, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_heatmap( + self, + autocolorscale=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoverongaps=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textfont=None, + textsrc=None, + texttemplate=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xgap=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + xtype=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + ygap=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + ytype=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsmooth=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Heatmap trace + + The data that describes the heatmap value-to-color mapping is + set in `z`. Data in `z` can either be a 2D list of values + (ragged or not) or a 1D array of values. In the case where `z` + is a 2D list, say that `z` has N rows and M columns. Then, by + default, the resulting heatmap will have N partitions along the + y axis and M partitions along the x axis. In other words, the + i-th row/ j-th column cell in `z` is mapped to the i-th + partition of the y axis (starting from the bottom of the plot) + and the j-th partition of the x-axis (starting from the left of + the plot). This behavior can be flipped by using `transpose`. + Moreover, `x` (`y`) can be provided with M or M+1 (N or N+1) + elements. If M (N), then the coordinates correspond to the + center of the heatmap cells and the cells have equal width. If + M+1 (N+1), then the coordinates correspond to the edges of the + heatmap cells. In the case where `z` is a 1D list, the x and y + coordinates must be provided in `x` and `y` respectively to + form data triplets. + + Parameters + ---------- + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.heatmap.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.heatmap.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.heatmap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.heatmap.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Heatmap + + new_trace = Heatmap( + autocolorscale=autocolorscale, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoverongaps=hoverongaps, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textfont=textfont, + textsrc=textsrc, + texttemplate=texttemplate, + transpose=transpose, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xgap=xgap, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + xtype=xtype, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + ygap=ygap, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + ytype=ytype, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zorder=zorder, + zsmooth=zsmooth, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_histogram( + self, + alignmentgroup=None, + autobinx=None, + autobiny=None, + bingroup=None, + cliponaxis=None, + constraintext=None, + cumulative=None, + customdata=None, + customdatasrc=None, + error_x=None, + error_y=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + offsetgroup=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + xaxis=None, + xbins=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybins=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Histogram trace + + The sample data from which statistics are computed is set in + `x` for vertically spanning histograms and in `y` for + horizontally spanning histograms. Binning options are set + `xbins` and `ybins` respectively if no aggregation data is + provided. + + Parameters + ---------- + alignmentgroup + 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. + autobinx + 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. + autobiny + 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. + bingroup + 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` + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + cumulative + :class:`plotly.graph_objects.histogram.Cumulative` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.histogram.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.histogram.ErrorY` instance + or dict with compatible properties + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.histogram.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.histogram.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the text font. + textposition + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.histogram.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbins + :class:`plotly.graph_objects.histogram.XBins` instance + or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybins + :class:`plotly.graph_objects.histogram.YBins` instance + or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Histogram + + new_trace = Histogram( + alignmentgroup=alignmentgroup, + autobinx=autobinx, + autobiny=autobiny, + bingroup=bingroup, + cliponaxis=cliponaxis, + constraintext=constraintext, + cumulative=cumulative, + customdata=customdata, + customdatasrc=customdatasrc, + error_x=error_x, + error_y=error_y, + histfunc=histfunc, + histnorm=histnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + nbinsx=nbinsx, + nbinsy=nbinsy, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + x=x, + xaxis=xaxis, + xbins=xbins, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ybins=ybins, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_histogram2d( + self, + autobinx=None, + autobiny=None, + autocolorscale=None, + bingroup=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + textfont=None, + texttemplate=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xbingroup=None, + xbins=None, + xcalendar=None, + xgap=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybingroup=None, + ybins=None, + ycalendar=None, + ygap=None, + yhoverformat=None, + ysrc=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zsmooth=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Histogram2d trace + + The sample data from which statistics are computed is set in + `x` and `y` (where `x` and `y` represent marginal + distributions, binning is set in `xbins` and `ybins` in this + case) or `z` (where `z` represent the 2D distribution and + binning set, binning is set by `x` and `y` in this case). The + resulting distribution is visualized as a heatmap. + + Parameters + ---------- + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2d.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2d.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram2d.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2d.Stream` + instance or dict with compatible properties + textfont + Sets the text font. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Finally, the template string has access + to variable `z` + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2d.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2d.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Histogram2d + + new_trace = Histogram2d( + autobinx=autobinx, + autobiny=autobiny, + autocolorscale=autocolorscale, + bingroup=bingroup, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + histfunc=histfunc, + histnorm=histnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + nbinsx=nbinsx, + nbinsy=nbinsy, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + textfont=textfont, + texttemplate=texttemplate, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xbingroup=xbingroup, + xbins=xbins, + xcalendar=xcalendar, + xgap=xgap, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ybingroup=ybingroup, + ybins=ybins, + ycalendar=ycalendar, + ygap=ygap, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsmooth=zsmooth, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_histogram2dcontour( + self, + autobinx=None, + autobiny=None, + autocolorscale=None, + autocontour=None, + bingroup=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contours=None, + customdata=None, + customdatasrc=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + textfont=None, + texttemplate=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xbingroup=None, + xbins=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybingroup=None, + ybins=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Histogram2dContour trace + + The sample data from which statistics are computed is set in + `x` and `y` (where `x` and `y` represent marginal + distributions, binning is set in `xbins` and `ybins` in this + case) or `z` (where `z` represent the 2D distribution and + binning set, binning is set by `x` and `y` in this case). The + resulting distribution is visualized as a contour plot. + + Parameters + ---------- + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + autocontour + 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`. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2dcontour.ColorBa + r` instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.histogram2dcontour.Contour + s` instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2dcontour.Hoverla + bel` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2dcontour.Legendg + rouptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.histogram2dcontour.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.histogram2dcontour.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2dcontour.Stream` + instance or dict with compatible properties + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2dcontour.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2dcontour.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Histogram2dContour + + new_trace = Histogram2dContour( + autobinx=autobinx, + autobiny=autobiny, + autocolorscale=autocolorscale, + autocontour=autocontour, + bingroup=bingroup, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + histfunc=histfunc, + histnorm=histnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + nbinsx=nbinsx, + nbinsy=nbinsy, + ncontours=ncontours, + opacity=opacity, + reversescale=reversescale, + showlegend=showlegend, + showscale=showscale, + stream=stream, + textfont=textfont, + texttemplate=texttemplate, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xbingroup=xbingroup, + xbins=xbins, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yaxis=yaxis, + ybingroup=ybingroup, + ybins=ybins, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zauto=zauto, + zhoverformat=zhoverformat, + zmax=zmax, + zmid=zmid, + zmin=zmin, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_icicle( + self, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + labels=None, + labelssrc=None, + leaf=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + pathbar=None, + root=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + tiling=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Icicle trace + + Visualize hierarchal data from leaves (and/or outer branches) + towards root with rectangles. The icicle sectors are determined + by the entries in "labels" or "ids" and in "parents". + + Parameters + ---------- + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.icicle.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.icicle.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.icicle.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.icicle.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.icicle.Marker` instance or + dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.icicle.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.icicle.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.icicle.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.icicle.Tiling` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Icicle + + new_trace = Icicle( + branchvalues=branchvalues, + count=count, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + labels=labels, + labelssrc=labelssrc, + leaf=leaf, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + level=level, + marker=marker, + maxdepth=maxdepth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + parents=parents, + parentssrc=parentssrc, + pathbar=pathbar, + root=root, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + tiling=tiling, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_image( + self, + colormodel=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + source=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + x0=None, + xaxis=None, + y0=None, + yaxis=None, + z=None, + zmax=None, + zmin=None, + zorder=None, + zsmooth=None, + zsrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Image trace + + Display an image, i.e. data on a 2D regular raster. By default, + when an image is displayed in a subplot, its y axis will be + reversed (ie. `autorange: 'reversed'`), constrained to the + domain (ie. `constrain: 'domain'`) and it will have the same + scale as its x axis (ie. `scaleanchor: 'x,`) in order for + pixels to be rendered as squares. + + Parameters + ---------- + colormodel + 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`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Set the pixel's horizontal size. + dy + Set the pixel's vertical size + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.image.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.image.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + source + Specifies the data URI of the image to be visualized. + The URI consists of "data:image/[][;base64]," + stream + :class:`plotly.graph_objects.image.Stream` instance or + dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x0 + 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 + xaxis + 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. + y0 + 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. + yaxis + 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. + z + A 2-dimensional array in which each element is an array + of 3 or 4 numbers representing a color. + zmax + 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]. + zmin + 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]. + zorder + 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`. + zsmooth + Picks a smoothing algorithm used to smooth `z` data. + This only applies for image traces that use the + `source` attribute. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Image + + new_trace = Image( + colormodel=colormodel, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + source=source, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + x0=x0, + xaxis=xaxis, + y0=y0, + yaxis=yaxis, + z=z, + zmax=zmax, + zmin=zmin, + zorder=zorder, + zsmooth=zsmooth, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_indicator( + self, + align=None, + customdata=None, + customdatasrc=None, + delta=None, + domain=None, + gauge=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + mode=None, + name=None, + number=None, + stream=None, + title=None, + uid=None, + uirevision=None, + value=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Indicator trace + + An indicator is used to visualize a single `value` along with + some contextual information such as `steps` or a `threshold`, + using a combination of three visual elements: a number, a + delta, and/or a gauge. Deltas are taken with respect to a + `reference`. Gauges can be either angular or bullet (aka + linear) gauges. + + Parameters + ---------- + align + 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 + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delta + :class:`plotly.graph_objects.indicator.Delta` instance + or dict with compatible properties + domain + :class:`plotly.graph_objects.indicator.Domain` instance + or dict with compatible properties + gauge + The gauge of the Indicator plot. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.indicator.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + number + :class:`plotly.graph_objects.indicator.Number` instance + or dict with compatible properties + stream + :class:`plotly.graph_objects.indicator.Stream` instance + or dict with compatible properties + title + :class:`plotly.graph_objects.indicator.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the number to be displayed. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Indicator + + new_trace = Indicator( + align=align, + customdata=customdata, + customdatasrc=customdatasrc, + delta=delta, + domain=domain, + gauge=gauge, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + number=number, + stream=stream, + title=title, + uid=uid, + uirevision=uirevision, + value=value, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_isosurface( + self, + autocolorscale=None, + caps=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + isomax=None, + isomin=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + slices=None, + spaceframe=None, + stream=None, + surface=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + value=None, + valuehoverformat=None, + valuesrc=None, + visible=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Isosurface trace + + Draws isosurfaces between iso-min and iso-max values with + coordinates given by four 1-dimensional arrays containing the + `value`, `x`, `y` and `z` of every vertex of a uniform or non- + uniform 3-D grid. Horizontal or vertical slices, caps as well + as spaceframe between iso-min and iso-max values could also be + drawn using this trace. + + Parameters + ---------- + autocolorscale + 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. + caps + :class:`plotly.graph_objects.isosurface.Caps` instance + or dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.isosurface.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.isosurface.Contour` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.isosurface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.isosurface.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.isosurface.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.isosurface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.isosurface.Slices` + instance or dict with compatible properties + spaceframe + :class:`plotly.graph_objects.isosurface.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.isosurface.Stream` + instance or dict with compatible properties + surface + :class:`plotly.graph_objects.isosurface.Surface` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Isosurface + + new_trace = Isosurface( + autocolorscale=autocolorscale, + caps=caps, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contour=contour, + customdata=customdata, + customdatasrc=customdatasrc, + flatshading=flatshading, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + isomax=isomax, + isomin=isomin, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + slices=slices, + spaceframe=spaceframe, + stream=stream, + surface=surface, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + value=value, + valuehoverformat=valuehoverformat, + valuesrc=valuesrc, + visible=visible, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_mesh3d( + self, + alphahull=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + delaunayaxis=None, + facecolor=None, + facecolorsrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + i=None, + ids=None, + idssrc=None, + intensity=None, + intensitymode=None, + intensitysrc=None, + isrc=None, + j=None, + jsrc=None, + k=None, + ksrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + vertexcolor=None, + vertexcolorsrc=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Mesh3d trace + + Draws sets of triangles with coordinates given by three + 1-dimensional arrays in `x`, `y`, `z` and (1) a sets of `i`, + `j`, `k` indices (2) Delaunay triangulation or (3) the Alpha- + shape algorithm or (4) the Convex-hull algorithm + + Parameters + ---------- + alphahull + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + Sets the color of the whole mesh + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.mesh3d.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.mesh3d.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delaunayaxis + 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. + facecolor + Sets the color of each face Overrides "color" and + "vertexcolor". + facecolorsrc + Sets the source reference on Chart Studio Cloud for + `facecolor`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.mesh3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + i + 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. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + intensity + Sets the intensity values for vertices or cells as + defined by `intensitymode`. It can be used for plotting + fields on meshes. + intensitymode + Determines the source of `intensity` values. + intensitysrc + Sets the source reference on Chart Studio Cloud for + `intensity`. + isrc + Sets the source reference on Chart Studio Cloud for + `i`. + j + 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. + jsrc + Sets the source reference on Chart Studio Cloud for + `j`. + k + 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. + ksrc + Sets the source reference on Chart Studio Cloud for + `k`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.mesh3d.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.mesh3d.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.mesh3d.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.mesh3d.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + vertexcolor + 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. + vertexcolorsrc + Sets the source reference on Chart Studio Cloud for + `vertexcolor`. + visible + 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). + x + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + 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. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Mesh3d + + new_trace = Mesh3d( + alphahull=alphahull, + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + color=color, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contour=contour, + customdata=customdata, + customdatasrc=customdatasrc, + delaunayaxis=delaunayaxis, + facecolor=facecolor, + facecolorsrc=facecolorsrc, + flatshading=flatshading, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + i=i, + ids=ids, + idssrc=idssrc, + intensity=intensity, + intensitymode=intensitymode, + intensitysrc=intensitysrc, + isrc=isrc, + j=j, + jsrc=jsrc, + k=k, + ksrc=ksrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + vertexcolor=vertexcolor, + vertexcolorsrc=vertexcolorsrc, + visible=visible, + x=x, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zcalendar=zcalendar, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_ohlc( + self, + close=None, + closesrc=None, + customdata=None, + customdatasrc=None, + decreasing=None, + high=None, + highsrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + low=None, + lowsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + open=None, + opensrc=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textsrc=None, + tickwidth=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + yaxis=None, + yhoverformat=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Ohlc trace + + 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. + + Parameters + ---------- + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.ohlc.Decreasing` instance + or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.ohlc.Hoverlabel` instance + or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.ohlc.Increasing` instance + or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.ohlc.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.ohlc.Line` instance or + dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.ohlc.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + tickwidth + Sets the width of the open/close tick marks relative to + the "x" minimal interval. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Ohlc + + new_trace = Ohlc( + close=close, + closesrc=closesrc, + customdata=customdata, + customdatasrc=customdatasrc, + decreasing=decreasing, + high=high, + highsrc=highsrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + increasing=increasing, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + low=low, + lowsrc=lowsrc, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + open=open, + opensrc=opensrc, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textsrc=textsrc, + tickwidth=tickwidth, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + yaxis=yaxis, + yhoverformat=yhoverformat, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_parcats( + self, + arrangement=None, + bundlecolors=None, + counts=None, + countssrc=None, + dimensions=None, + dimensiondefaults=None, + domain=None, + hoverinfo=None, + hoveron=None, + hovertemplate=None, + labelfont=None, + legendgrouptitle=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + sortpaths=None, + stream=None, + tickfont=None, + uid=None, + uirevision=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Parcats trace + + Parallel categories diagram for multidimensional categorical + data. + + Parameters + ---------- + arrangement + 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. + bundlecolors + Sort paths so that like colors are bundled together + within each category. + counts + The number of observations represented by each state. + Defaults to 1 so that each state represents one + observation + countssrc + Sets the source reference on Chart Studio Cloud for + `counts`. + dimensions + The dimensions (variables) of the parallel categories + diagram. + dimensiondefaults + When used in a template (as + layout.template.data.parcats.dimensiondefaults), sets + the default property values to use for elements of + parcats.dimensions + domain + :class:`plotly.graph_objects.parcats.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoveron + 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. + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. This value here applies when hovering + over dimensions. Note that `*categorycount`, + "colorcount" and "bandcolorcount" are only available + when `hoveron` contains the "color" flagFinally, 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 + ``. + labelfont + Sets the font for the `dimension` labels. + legendgrouptitle + :class:`plotly.graph_objects.parcats.Legendgrouptitle` + instance or dict with compatible properties + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcats.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + sortpaths + 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. + stream + :class:`plotly.graph_objects.parcats.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `category` labels. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Parcats + + new_trace = Parcats( + arrangement=arrangement, + bundlecolors=bundlecolors, + counts=counts, + countssrc=countssrc, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + domain=domain, + hoverinfo=hoverinfo, + hoveron=hoveron, + hovertemplate=hovertemplate, + labelfont=labelfont, + legendgrouptitle=legendgrouptitle, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + sortpaths=sortpaths, + stream=stream, + tickfont=tickfont, + uid=uid, + uirevision=uirevision, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_parcoords( + self, + customdata=None, + customdatasrc=None, + dimensions=None, + dimensiondefaults=None, + domain=None, + ids=None, + idssrc=None, + labelangle=None, + labelfont=None, + labelside=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + rangefont=None, + stream=None, + tickfont=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Parcoords trace + + Parallel coordinates for multidimensional exploratory data + analysis. The samples are specified in `dimensions`. The colors + are set in `line.color`. + + Parameters + ---------- + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dimensions + The dimensions (variables) of the parallel coordinates + chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions + domain + :class:`plotly.graph_objects.parcoords.Domain` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + labelangle + 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". + labelfont + Sets the font for the `dimension` labels. + labelside + 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". + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.parcoords.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcoords.Line` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + rangefont + Sets the font for the `dimension` range values. + stream + :class:`plotly.graph_objects.parcoords.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `dimension` tick values. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.parcoords.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Parcoords + + new_trace = Parcoords( + customdata=customdata, + customdatasrc=customdatasrc, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + domain=domain, + ids=ids, + idssrc=idssrc, + labelangle=labelangle, + labelfont=labelfont, + labelside=labelside, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + meta=meta, + metasrc=metasrc, + name=name, + rangefont=rangefont, + stream=stream, + tickfont=tickfont, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_pie( + self, + automargin=None, + customdata=None, + customdatasrc=None, + direction=None, + dlabel=None, + domain=None, + hole=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + insidetextorientation=None, + label0=None, + labels=None, + labelssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + pull=None, + pullsrc=None, + rotation=None, + scalegroup=None, + showlegend=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + title=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Pie trace + + A data visualized by the sectors of the pie is set in `values`. + The sector labels are set in `labels`. The sector colors are + set in `marker.colors` + + Parameters + ---------- + automargin + Determines whether outside text labels can push the + margins. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + direction + Specifies the direction at which succeeding sectors + follow one another. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.pie.Domain` instance or + dict with compatible properties + hole + Sets the fraction of the radius to cut out of the pie. + Use this to make a donut chart. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.pie.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.pie.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.pie.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + Sets the font used for `textinfo` lying outside the + sector. + pull + 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. + pullsrc + Sets the source reference on Chart Studio Cloud for + `pull`. + rotation + Instead of the first slice starting at 12 o'clock, + rotate to some other angle. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.pie.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.pie.Title` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Pie + + new_trace = Pie( + automargin=automargin, + customdata=customdata, + customdatasrc=customdatasrc, + direction=direction, + dlabel=dlabel, + domain=domain, + hole=hole, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + insidetextorientation=insidetextorientation, + label0=label0, + labels=labels, + labelssrc=labelssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + pull=pull, + pullsrc=pullsrc, + rotation=rotation, + scalegroup=scalegroup, + showlegend=showlegend, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + title=title, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_sankey( + self, + arrangement=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverlabel=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + link=None, + meta=None, + metasrc=None, + name=None, + node=None, + orientation=None, + selectedpoints=None, + stream=None, + textfont=None, + uid=None, + uirevision=None, + valueformat=None, + valuesuffix=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Sankey trace + + Sankey plots for network flow data analysis. The nodes are + specified in `nodes` and the links between sources and targets + in `links`. The colors are set in `nodes[i].color` and + `links[i].color`, otherwise defaults are used. + + Parameters + ---------- + arrangement + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sankey.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.Hoverlabel` + instance or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sankey.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + link + The links of the Sankey plot. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + node + The nodes of the Sankey plot. + orientation + Sets the orientation of the Sankey diagram. + selectedpoints + 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. + stream + :class:`plotly.graph_objects.sankey.Stream` instance or + dict with compatible properties + textfont + Sets the font for node labels + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + valueformat + 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. + valuesuffix + Adds a unit to follow the value in the hover tooltip. + Add a space if a separation is necessary from the + value. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Sankey + + new_trace = Sankey( + arrangement=arrangement, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverlabel=hoverlabel, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + link=link, + meta=meta, + metasrc=metasrc, + name=name, + node=node, + orientation=orientation, + selectedpoints=selectedpoints, + stream=stream, + textfont=textfont, + uid=uid, + uirevision=uirevision, + valueformat=valueformat, + valuesuffix=valuesuffix, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatter( + self, + alignmentgroup=None, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + fill=None, + fillcolor=None, + fillgradient=None, + fillpattern=None, + groupnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + offsetgroup=None, + opacity=None, + orientation=None, + selected=None, + selectedpoints=None, + showlegend=None, + stackgaps=None, + stackgroup=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scatter trace + + The scatter trace type encompasses line charts, scatter charts, + text charts, and bubble charts. The data visualized as scatter + point or lines is set in `x` and `y`. Text (appearing either on + the chart or on hover only) is via `text`. Bubble charts are + achieved by setting `marker.size` and/or `marker.color` to + numerical arrays. + + Parameters + ---------- + alignmentgroup + 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. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scatter.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + 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. + fillgradient + Sets a fill gradient. If not specified, the fillcolor + is used instead. + fillpattern + Sets the pattern within the marker. + groupnorm + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.scatter.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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`. + selected + :class:`plotly.graph_objects.scatter.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stackgaps + 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. + stackgroup + 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. + stream + :class:`plotly.graph_objects.scatter.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatter.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scatter + + new_trace = Scatter( + alignmentgroup=alignmentgroup, + cliponaxis=cliponaxis, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + error_x=error_x, + error_y=error_y, + fill=fill, + fillcolor=fillcolor, + fillgradient=fillgradient, + fillpattern=fillpattern, + groupnorm=groupnorm, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stackgaps=stackgaps, + stackgroup=stackgroup, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_scatter3d( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + error_x=None, + error_y=None, + error_z=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + projection=None, + scene=None, + showlegend=None, + stream=None, + surfaceaxis=None, + surfacecolor=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scatter3d trace + + The data visualized as scatter point or lines in 3D dimension + is set in `x`, `y`, `z`. Text (appearing either on the chart or + on hover only) is via `text`. Bubble charts are achieved by + setting `marker.size` and/or `marker.color` Projections are + achieved via `projection`. Surface fills are achieved via + `surfaceaxis`. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.scatter3d.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter3d.ErrorY` instance + or dict with compatible properties + error_z + :class:`plotly.graph_objects.scatter3d.ErrorZ` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter3d.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter3d.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scatter3d.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + projection + :class:`plotly.graph_objects.scatter3d.Projection` + instance or dict with compatible properties + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatter3d.Stream` instance + or dict with compatible properties + surfaceaxis + 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. + surfacecolor + Sets the surface fill color. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scatter3d + + new_trace = Scatter3d( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + error_x=error_x, + error_y=error_y, + error_z=error_z, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + projection=projection, + scene=scene, + showlegend=showlegend, + stream=stream, + surfaceaxis=surfaceaxis, + surfacecolor=surfacecolor, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zcalendar=zcalendar, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattercarpet( + self, + a=None, + asrc=None, + b=None, + bsrc=None, + carpet=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + xaxis=None, + yaxis=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scattercarpet trace + + Plots a scatter trace on either the first carpet axis or the + carpet axis with a matching `carpet` attribute. + + Parameters + ---------- + a + Sets the a-axis coordinates. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + Sets the b-axis coordinates. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattercarpet.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattercarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattercarpet.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattercarpet.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattercarpet.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattercarpet.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattercarpet.Unselected` + instance or dict with compatible properties + visible + 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). + xaxis + 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. + yaxis + 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. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scattercarpet + + new_trace = Scattercarpet( + a=a, + asrc=asrc, + b=b, + bsrc=bsrc, + carpet=carpet, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + xaxis=xaxis, + yaxis=yaxis, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_scattergeo( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + fill=None, + fillcolor=None, + geo=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + locationmode=None, + locations=None, + locationssrc=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scattergeo trace + + The data visualized as scatter point or lines on a geographic + map is provided either by longitude/latitude pairs in `lon` and + `lat` respectively or by geographic location IDs or names in + `locations`. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergeo.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergeo.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergeo.Line` instance + or dict with compatible properties + locationmode + 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. + locations + Sets the coordinates via location IDs or names. + Coordinates correspond to the centroid of each location + given. See `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattergeo.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergeo.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergeo.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergeo.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scattergeo + + new_trace = Scattergeo( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + featureidkey=featureidkey, + fill=fill, + fillcolor=fillcolor, + geo=geo, + geojson=geojson, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + locationmode=locationmode, + locations=locations, + locationssrc=locationssrc, + lon=lon, + lonsrc=lonsrc, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattergl( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scattergl trace + + The data visualized as scatter point or lines is set in `x` and + `y` using the WebGL plotting engine. Bubble charts are achieved + by setting `marker.size` and/or `marker.color` to a numerical + arrays. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scattergl.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scattergl.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergl.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergl.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scattergl.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + Determines the drawing mode for this scatter trace. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergl.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergl.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scattergl + + new_trace = Scattergl( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dx=dx, + dy=dy, + error_x=error_x, + error_y=error_y, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + x=x, + x0=x0, + xaxis=xaxis, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_scattermap( + self, + below=None, + cluster=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scattermap trace + + The data visualized as scatter point, lines or marker symbols + on a MapLibre GL geographic map is provided by + longitude/latitude pairs in `lon` and `lat`. + + Parameters + ---------- + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermap.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermap.Line` instance + or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermap.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scattermap + + new_trace = Scattermap( + below=below, + cluster=cluster, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + lon=lon, + lonsrc=lonsrc, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattermapbox( + self, + below=None, + cluster=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scattermapbox trace + + "scattermapbox" trace is deprecated! Please consider switching + to the "scattermap" trace type and `map` subplots. Learn more + at: https://plotly.com/python/maplibre-migration/ as well as + https://plotly.com/javascript/maplibre-migration/ The data + visualized as scatter point, lines or marker symbols on a + Mapbox GL geographic map is provided by longitude/latitude + pairs in `lon` and `lat`. + + Parameters + ---------- + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermapbox.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermapbox.Line` + instance or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermapbox.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scattermapbox + + new_trace = Scattermapbox( + below=below, + cluster=cluster, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + lat=lat, + latsrc=latsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + lon=lon, + lonsrc=lonsrc, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatterpolar( + self, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scatterpolar trace + + The scatterpolar trace type encompasses line charts, scatter + charts, text charts, and bubble charts in polar coordinates. + The data visualized as scatter point or lines is set in `r` + (radial) and `theta` (angular) coordinates Text (appearing + either on the chart or on hover only) is via `text`. Bubble + charts are achieved by setting `marker.size` and/or + `marker.color` to numerical arrays. + + Parameters + ---------- + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolar.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolar.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolar.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolar.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolar.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolar.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scatterpolar + + new_trace = Scatterpolar( + cliponaxis=cliponaxis, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dr=dr, + dtheta=dtheta, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + r=r, + r0=r0, + rsrc=rsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + theta=theta, + theta0=theta0, + thetasrc=thetasrc, + thetaunit=thetaunit, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatterpolargl( + self, + connectgaps=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scatterpolargl trace + + The scatterpolargl trace type encompasses line charts, scatter + charts, and bubble charts in polar coordinates using the WebGL + plotting engine. The data visualized as scatter point or lines + is set in `r` (radial) and `theta` (angular) coordinates Bubble + charts are achieved by setting `marker.size` and/or + `marker.color` to numerical arrays. + + Parameters + ---------- + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolargl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolargl.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolargl.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolargl.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolargl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolargl.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolargl.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scatterpolargl + + new_trace = Scatterpolargl( + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + dr=dr, + dtheta=dtheta, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + r=r, + r0=r0, + rsrc=rsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + theta=theta, + theta0=theta0, + thetasrc=thetasrc, + thetaunit=thetaunit, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scattersmith( + self, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + imag=None, + imagsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + real=None, + realsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scattersmith trace + + The scattersmith trace type encompasses line charts, scatter + charts, text charts, and bubble charts in smith coordinates. + The data visualized as scatter point or lines is set in `real` + and `imag` (imaginary) coordinates Text (appearing either on + the chart or on hover only) is via `text`. Bubble charts are + achieved by setting `marker.size` and/or `marker.color` to + numerical arrays. + + Parameters + ---------- + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattersmith.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + imag + Sets the imaginary component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + imagsrc + Sets the source reference on Chart Studio Cloud for + `imag`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattersmith.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattersmith.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattersmith.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + real + Sets the real component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + realsrc + Sets the source reference on Chart Studio Cloud for + `real`. + selected + :class:`plotly.graph_objects.scattersmith.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattersmith.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattersmith.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scattersmith + + new_trace = Scattersmith( + cliponaxis=cliponaxis, + connectgaps=connectgaps, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + imag=imag, + imagsrc=imagsrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + real=real, + realsrc=realsrc, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_scatterternary( + self, + a=None, + asrc=None, + b=None, + bsrc=None, + c=None, + cliponaxis=None, + connectgaps=None, + csrc=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + sum=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Scatterternary trace + + Provides similar functionality to the "scatter" type but on a + ternary phase diagram. The data is provided by at least two + arrays out of `a`, `b`, `c` triplets. + + Parameters + ---------- + a + 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`. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + 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`. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + c + 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`. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + csrc + Sets the source reference on Chart Studio Cloud for + `c`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterternary.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterternary.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterternary.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterternary.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scatterternary.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterternary.Stream` + instance or dict with compatible properties + subplot + 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. + sum + 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 + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterternary.Unselected` + instance or dict with compatible properties + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Scatterternary + + new_trace = Scatterternary( + a=a, + asrc=asrc, + b=b, + bsrc=bsrc, + c=c, + cliponaxis=cliponaxis, + connectgaps=connectgaps, + csrc=csrc, + customdata=customdata, + customdatasrc=customdatasrc, + fill=fill, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meta=meta, + metasrc=metasrc, + mode=mode, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + subplot=subplot, + sum=sum, + text=text, + textfont=textfont, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_splom( + self, + customdata=None, + customdatasrc=None, + diagonal=None, + dimensions=None, + dimensiondefaults=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + showlowerhalf=None, + showupperhalf=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + xaxes=None, + xhoverformat=None, + yaxes=None, + yhoverformat=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Splom trace + + Splom traces generate scatter plot matrix visualizations. Each + splom `dimensions` items correspond to a generated axis. Values + for each of those dimensions are set in `dimensions[i].values`. + Splom traces support all `scattergl` marker style attributes. + Specify `layout.grid` attributes and/or layout x-axis and + y-axis attributes for more control over the axis positioning + and style. + + Parameters + ---------- + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + diagonal + :class:`plotly.graph_objects.splom.Diagonal` instance + or dict with compatible properties + dimensions + A tuple of + :class:`plotly.graph_objects.splom.Dimension` instances + or dicts with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.splom.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.splom.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.splom.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.splom.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showlowerhalf + Determines whether or not subplots on the lower half + from the diagonal are displayed. + showupperhalf + Determines whether or not subplots on the upper half + from the diagonal are displayed. + stream + :class:`plotly.graph_objects.splom.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.splom.Unselected` instance + or dict with compatible properties + visible + 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). + xaxes + 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. + xhoverformat + 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`. + yaxes + 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. + yhoverformat + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Splom + + new_trace = Splom( + customdata=customdata, + customdatasrc=customdatasrc, + diagonal=diagonal, + dimensions=dimensions, + dimensiondefaults=dimensiondefaults, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + marker=marker, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + showlowerhalf=showlowerhalf, + showupperhalf=showupperhalf, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + xaxes=xaxes, + xhoverformat=xhoverformat, + yaxes=yaxes, + yhoverformat=yhoverformat, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_streamtube( + self, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + maxdisplayed=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + sizeref=None, + starts=None, + stream=None, + text=None, + u=None, + uhoverformat=None, + uid=None, + uirevision=None, + usrc=None, + v=None, + vhoverformat=None, + visible=None, + vsrc=None, + w=None, + whoverformat=None, + wsrc=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Streamtube trace + + Use a streamtube trace to visualize flow in a vector field. + Specify a vector field using 6 1D arrays of equal length, 3 + position arrays `x`, `y` and `z` and 3 vector component arrays + `u`, `v`, and `w`. By default, the tubes' starting positions + will be cut from the vector field's x-z plane at its minimum y + value. To specify your own starting position, use attributes + `starts.x`, `starts.y` and `starts.z`. The color is encoded by + the norm of (u, v, w), and the local radius by the divergence + of (u, v, w). + + Parameters + ---------- + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.streamtube.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.streamtube.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.streamtube.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.streamtube.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.streamtube.Lightposition` + instance or dict with compatible properties + maxdisplayed + The maximum number of displayed segments in a + streamtube. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizeref + The scaling factor for the streamtubes. The default is + 1, which avoids two max divergence tubes from touching + at adjacent starting positions. + starts + :class:`plotly.graph_objects.streamtube.Starts` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.streamtube.Stream` + instance or dict with compatible properties + text + 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. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Streamtube + + new_trace = Streamtube( + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + customdata=customdata, + customdatasrc=customdatasrc, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + maxdisplayed=maxdisplayed, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + sizeref=sizeref, + starts=starts, + stream=stream, + text=text, + u=u, + uhoverformat=uhoverformat, + uid=uid, + uirevision=uirevision, + usrc=usrc, + v=v, + vhoverformat=vhoverformat, + visible=visible, + vsrc=vsrc, + w=w, + whoverformat=whoverformat, + wsrc=wsrc, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_sunburst( + self, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + insidetextorientation=None, + labels=None, + labelssrc=None, + leaf=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + root=None, + rotation=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Sunburst trace + + Visualize hierarchal data spanning outward radially from root + to leaves. The sunburst sectors are determined by the entries + in "labels" or "ids" and in "parents". + + Parameters + ---------- + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sunburst.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.sunburst.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.sunburst.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sunburst.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.sunburst.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + root + :class:`plotly.graph_objects.sunburst.Root` instance or + dict with compatible properties + rotation + Rotates the whole diagram counterclockwise by some + angle. By default the first slice starts at 3 o'clock. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.sunburst.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Sunburst + + new_trace = Sunburst( + branchvalues=branchvalues, + count=count, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + insidetextorientation=insidetextorientation, + labels=labels, + labelssrc=labelssrc, + leaf=leaf, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + level=level, + marker=marker, + maxdepth=maxdepth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + parents=parents, + parentssrc=parentssrc, + root=root, + rotation=rotation, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_surface( + self, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + contours=None, + customdata=None, + customdatasrc=None, + hidesurface=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + opacityscale=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + stream=None, + surfacecolor=None, + surfacecolorsrc=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Surface trace + + The data the describes the coordinates of the surface is set in + `z`. Data in `z` should be a 2D list. Coordinates in `x` and + `y` can either be 1D lists or 2D lists (e.g. to graph + parametric surfaces). If not provided in `x` and `y`, the x and + y coordinates are assumed to be linear starting at 0 with a + unit step. The color scale corresponds to the `z` values by + default. For custom color scales, use `surfacecolor` which + should be a 2D list, where its bounds can be controlled using + `cmin` and `cmax`. + + Parameters + ---------- + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.surface.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data are filled in. + contours + :class:`plotly.graph_objects.surface.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hidesurface + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.surface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.surface.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.surface.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.surface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.surface.Stream` instance + or dict with compatible properties + surfacecolor + Sets the surface color values, used for setting a color + scale independent of `z`. + surfacecolorsrc + Sets the source reference on Chart Studio Cloud for + `surfacecolor`. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Surface + + new_trace = Surface( + autocolorscale=autocolorscale, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + connectgaps=connectgaps, + contours=contours, + customdata=customdata, + customdatasrc=customdatasrc, + hidesurface=hidesurface, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + opacityscale=opacityscale, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + stream=stream, + surfacecolor=surfacecolor, + surfacecolorsrc=surfacecolorsrc, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + visible=visible, + x=x, + xcalendar=xcalendar, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + ycalendar=ycalendar, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zcalendar=zcalendar, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_table( + self, + cells=None, + columnorder=None, + columnordersrc=None, + columnwidth=None, + columnwidthsrc=None, + customdata=None, + customdatasrc=None, + domain=None, + header=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + stream=None, + uid=None, + uirevision=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Table trace + + Table view for detailed data viewing. The data are arranged in + a grid of rows and columns. Most styling can be specified for + columns, rows or individual cells. Table is using a column- + major order, ie. the grid is represented as a vector of column + vectors. + + Parameters + ---------- + cells + :class:`plotly.graph_objects.table.Cells` instance or + dict with compatible properties + columnorder + 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. + columnordersrc + Sets the source reference on Chart Studio Cloud for + `columnorder`. + columnwidth + The width of columns expressed as a ratio. Columns fill + the available width in proportion of their specified + column widths. + columnwidthsrc + Sets the source reference on Chart Studio Cloud for + `columnwidth`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.table.Domain` instance or + dict with compatible properties + header + :class:`plotly.graph_objects.table.Header` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.table.Hoverlabel` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.table.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + stream + :class:`plotly.graph_objects.table.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Table + + new_trace = Table( + cells=cells, + columnorder=columnorder, + columnordersrc=columnordersrc, + columnwidth=columnwidth, + columnwidthsrc=columnwidthsrc, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + header=header, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + ids=ids, + idssrc=idssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + meta=meta, + metasrc=metasrc, + name=name, + stream=stream, + uid=uid, + uirevision=uirevision, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_treemap( + self, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + labels=None, + labelssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + pathbar=None, + root=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + tiling=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Treemap trace + + Visualize hierarchal data from leaves (and/or outer branches) + towards root with rectangles. The treemap sectors are + determined by the entries in "labels" or "ids" and in + "parents". + + Parameters + ---------- + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.treemap.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.treemap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.treemap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.treemap.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.treemap.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.treemap.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.treemap.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.treemap.Tiling` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Treemap + + new_trace = Treemap( + branchvalues=branchvalues, + count=count, + customdata=customdata, + customdatasrc=customdatasrc, + domain=domain, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + insidetextfont=insidetextfont, + labels=labels, + labelssrc=labelssrc, + legend=legend, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + level=level, + marker=marker, + maxdepth=maxdepth, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + outsidetextfont=outsidetextfont, + parents=parents, + parentssrc=parentssrc, + pathbar=pathbar, + root=root, + sort=sort, + stream=stream, + text=text, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + tiling=tiling, + uid=uid, + uirevision=uirevision, + values=values, + valuessrc=valuessrc, + visible=visible, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_violin( + self, + alignmentgroup=None, + bandwidth=None, + box=None, + customdata=None, + customdatasrc=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + jitter=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meanline=None, + meta=None, + metasrc=None, + name=None, + offsetgroup=None, + opacity=None, + orientation=None, + pointpos=None, + points=None, + quartilemethod=None, + scalegroup=None, + scalemode=None, + selected=None, + selectedpoints=None, + showlegend=None, + side=None, + span=None, + spanmode=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Violin trace + + 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`) list + is provided, a single violin is drawn. That violin position is + then positioned with with `name` or with `x0` (`y0`) if + provided. + + Parameters + ---------- + alignmentgroup + 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. + bandwidth + Sets the bandwidth used to compute the kernel density + estimate. By default, the bandwidth is determined by + Silverman's rule of thumb. + box + :class:`plotly.graph_objects.violin.Box` instance or + dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.violin.Hoverlabel` + instance or dict with compatible properties + hoveron + Do the hover effects highlight individual violins or + sample points or the kernel density estimate or any + combination of them? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.violin.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.violin.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.violin.Marker` instance or + dict with compatible properties + meanline + :class:`plotly.graph_objects.violin.Meanline` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the violin(s). If "v" ("h"), + the distribution is visualized along the vertical + (horizontal). + pointpos + 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. + points + 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". + quartilemethod + 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. + scalegroup + 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 + scalemode + 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. + selected + :class:`plotly.graph_objects.violin.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + side + 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". + span + Sets the span in data space for which the density + function will be computed. Has an effect only when + `spanmode` is set to "manual". + spanmode + 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. + stream + :class:`plotly.graph_objects.violin.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.violin.Unselected` + instance or dict with compatible properties + visible + 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). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Violin + + new_trace = Violin( + alignmentgroup=alignmentgroup, + bandwidth=bandwidth, + box=box, + customdata=customdata, + customdatasrc=customdatasrc, + fillcolor=fillcolor, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hoveron=hoveron, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + jitter=jitter, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + marker=marker, + meanline=meanline, + meta=meta, + metasrc=metasrc, + name=name, + offsetgroup=offsetgroup, + opacity=opacity, + orientation=orientation, + pointpos=pointpos, + points=points, + quartilemethod=quartilemethod, + scalegroup=scalegroup, + scalemode=scalemode, + selected=selected, + selectedpoints=selectedpoints, + showlegend=showlegend, + side=side, + span=span, + spanmode=spanmode, + stream=stream, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + unselected=unselected, + visible=visible, + width=width, + x=x, + x0=x0, + xaxis=xaxis, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + yhoverformat=yhoverformat, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def add_volume( + self, + autocolorscale=None, + caps=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + isomax=None, + isomin=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + opacityscale=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + slices=None, + spaceframe=None, + stream=None, + surface=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + value=None, + valuehoverformat=None, + valuesrc=None, + visible=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + row=None, + col=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Volume trace + + Draws volume trace between iso-min and iso-max values with + coordinates given by four 1-dimensional arrays containing the + `value`, `x`, `y` and `z` of every vertex of a uniform or non- + uniform 3-D grid. Horizontal or vertical slices, caps as well + as spaceframe between iso-min and iso-max values could also be + drawn using this trace. + + Parameters + ---------- + autocolorscale + 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. + caps + :class:`plotly.graph_objects.volume.Caps` instance or + dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.volume.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.volume.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.volume.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.volume.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.volume.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.volume.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.volume.Slices` instance or + dict with compatible properties + spaceframe + :class:`plotly.graph_objects.volume.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.volume.Stream` instance or + dict with compatible properties + surface + :class:`plotly.graph_objects.volume.Surface` instance + or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Volume + + new_trace = Volume( + autocolorscale=autocolorscale, + caps=caps, + cauto=cauto, + cmax=cmax, + cmid=cmid, + cmin=cmin, + coloraxis=coloraxis, + colorbar=colorbar, + colorscale=colorscale, + contour=contour, + customdata=customdata, + customdatasrc=customdatasrc, + flatshading=flatshading, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + isomax=isomax, + isomin=isomin, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + lighting=lighting, + lightposition=lightposition, + meta=meta, + metasrc=metasrc, + name=name, + opacity=opacity, + opacityscale=opacityscale, + reversescale=reversescale, + scene=scene, + showlegend=showlegend, + showscale=showscale, + slices=slices, + spaceframe=spaceframe, + stream=stream, + surface=surface, + text=text, + textsrc=textsrc, + uid=uid, + uirevision=uirevision, + value=value, + valuehoverformat=valuehoverformat, + valuesrc=valuesrc, + visible=visible, + x=x, + xhoverformat=xhoverformat, + xsrc=xsrc, + y=y, + yhoverformat=yhoverformat, + ysrc=ysrc, + z=z, + zhoverformat=zhoverformat, + zsrc=zsrc, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col) + + def add_waterfall( + self, + alignmentgroup=None, + base=None, + cliponaxis=None, + connector=None, + constraintext=None, + customdata=None, + customdatasrc=None, + decreasing=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + measure=None, + measuresrc=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + offsetsrc=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + totals=None, + uid=None, + uirevision=None, + visible=None, + width=None, + widthsrc=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Add a new Waterfall trace + + Draws waterfall trace which is useful graph to displays the + contribution of various elements (either positive or negative) + in a bar chart. The data visualized by the span of the bars is + set in `y` if `orientation` is set to "v" (the default) and the + labels are set in `x`. By setting `orientation` to "h", the + roles are interchanged. + + Parameters + ---------- + alignmentgroup + 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. + base + Sets where the bar base is drawn (in position axis + units). + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.waterfall.Connector` + instance or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.waterfall.Decreasing` + instance or dict with compatible properties + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.waterfall.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.waterfall.Increasing` + instance or dict with compatible properties + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.waterfall.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + measure + 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. + measuresrc + Sets the source reference on Chart Studio Cloud for + `measure`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.waterfall.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple waterfalls, totals are + computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + totals + :class:`plotly.graph_objects.waterfall.Totals` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + row : 'all', int or None (default) + Subplot row index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + rows in the specified column(s). + col : 'all', int or None (default) + Subplot col index (starting from 1) for the trace to be + added. Only valid if figure was created using + `plotly.tools.make_subplots`.If 'all', addresses all + columns in the specified row(s). + secondary_y: boolean or None (default None) + If True, associate this trace with the secondary y-axis of the + subplot at the specified row and col. Only valid if all of the + following conditions are satisfied: + * The figure was created using `plotly.subplots.make_subplots`. + * The row and col arguments are not None + * The subplot at the specified row and col has type xy + (which is the default) and secondary_y True. These + properties are specified in the specs argument to + make_subplots. See the make_subplots docstring for more info. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import Waterfall + + new_trace = Waterfall( + alignmentgroup=alignmentgroup, + base=base, + cliponaxis=cliponaxis, + connector=connector, + constraintext=constraintext, + customdata=customdata, + customdatasrc=customdatasrc, + decreasing=decreasing, + dx=dx, + dy=dy, + hoverinfo=hoverinfo, + hoverinfosrc=hoverinfosrc, + hoverlabel=hoverlabel, + hovertemplate=hovertemplate, + hovertemplatesrc=hovertemplatesrc, + hovertext=hovertext, + hovertextsrc=hovertextsrc, + ids=ids, + idssrc=idssrc, + increasing=increasing, + insidetextanchor=insidetextanchor, + insidetextfont=insidetextfont, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + measure=measure, + measuresrc=measuresrc, + meta=meta, + metasrc=metasrc, + name=name, + offset=offset, + offsetgroup=offsetgroup, + offsetsrc=offsetsrc, + opacity=opacity, + orientation=orientation, + outsidetextfont=outsidetextfont, + selectedpoints=selectedpoints, + showlegend=showlegend, + stream=stream, + text=text, + textangle=textangle, + textfont=textfont, + textinfo=textinfo, + textposition=textposition, + textpositionsrc=textpositionsrc, + textsrc=textsrc, + texttemplate=texttemplate, + texttemplatesrc=texttemplatesrc, + totals=totals, + uid=uid, + uirevision=uirevision, + visible=visible, + width=width, + widthsrc=widthsrc, + x=x, + x0=x0, + xaxis=xaxis, + xhoverformat=xhoverformat, + xperiod=xperiod, + xperiod0=xperiod0, + xperiodalignment=xperiodalignment, + xsrc=xsrc, + y=y, + y0=y0, + yaxis=yaxis, + yhoverformat=yhoverformat, + yperiod=yperiod, + yperiod0=yperiod0, + yperiodalignment=yperiodalignment, + ysrc=ysrc, + zorder=zorder, + **kwargs, + ) + return self.add_trace(new_trace, row=row, col=col, secondary_y=secondary_y) + + def select_coloraxes(self, selector=None, row=None, col=None): + """ + Select coloraxis subplot objects from a particular subplot cell + and/or coloraxis subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + coloraxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all coloraxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + coloraxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of coloraxis objects to select. + To select coloraxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all coloraxis objects are selected. + Returns + ------- + generator + Generator that iterates through all of the coloraxis + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("coloraxis", selector, row, col) + + def for_each_coloraxis( + self, fn, selector=None, row=None, col=None + ) -> "FigureWidget": + """ + Apply a function to all coloraxis objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single coloraxis object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + coloraxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all coloraxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + coloraxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of coloraxis objects to select. + To select coloraxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all coloraxis objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_coloraxes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_coloraxes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all coloraxis objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + coloraxis objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + coloraxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all coloraxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + coloraxis and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of coloraxis objects to select. + To select coloraxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all coloraxis objects are selected. + **kwargs + Additional property updates to apply to each selected + coloraxis object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_coloraxes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_geos(self, selector=None, row=None, col=None): + """ + Select geo subplot objects from a particular subplot cell + and/or geo subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + geo objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all geo objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + geo and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of geo objects to select. + To select geo objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all geo objects are selected. + Returns + ------- + generator + Generator that iterates through all of the geo + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("geo", selector, row, col) + + def for_each_geo(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all geo objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single geo object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + geo objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all geo objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + geo and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of geo objects to select. + To select geo objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all geo objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_geos(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_geos( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all geo objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + geo objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + geo objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all geo objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + geo and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of geo objects to select. + To select geo objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all geo objects are selected. + **kwargs + Additional property updates to apply to each selected + geo object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_geos(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_legends(self, selector=None, row=None, col=None): + """ + Select legend subplot objects from a particular subplot cell + and/or legend subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + legend objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all legend objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + legend and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of legend objects to select. + To select legend objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all legend objects are selected. + Returns + ------- + generator + Generator that iterates through all of the legend + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("legend", selector, row, col) + + def for_each_legend(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all legend objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single legend object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + legend objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all legend objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + legend and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of legend objects to select. + To select legend objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all legend objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_legends(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_legends( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all legend objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + legend objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + legend objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all legend objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + legend and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of legend objects to select. + To select legend objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all legend objects are selected. + **kwargs + Additional property updates to apply to each selected + legend object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_legends(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_maps(self, selector=None, row=None, col=None): + """ + Select map subplot objects from a particular subplot cell + and/or map subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + map objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all map objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + map and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of map objects to select. + To select map objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all map objects are selected. + Returns + ------- + generator + Generator that iterates through all of the map + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("map", selector, row, col) + + def for_each_map(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all map objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single map object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + map objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all map objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + map and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of map objects to select. + To select map objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all map objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_maps(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_maps( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all map objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + map objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + map objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all map objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + map and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of map objects to select. + To select map objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all map objects are selected. + **kwargs + Additional property updates to apply to each selected + map object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_maps(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_mapboxes(self, selector=None, row=None, col=None): + """ + Select mapbox subplot objects from a particular subplot cell + and/or mapbox subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + mapbox objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all mapbox objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + mapbox and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of mapbox objects to select. + To select mapbox objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all mapbox objects are selected. + Returns + ------- + generator + Generator that iterates through all of the mapbox + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("mapbox", selector, row, col) + + def for_each_mapbox(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all mapbox objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single mapbox object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + mapbox objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all mapbox objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + mapbox and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of mapbox objects to select. + To select mapbox objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all mapbox objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_mapboxes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_mapboxes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all mapbox objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + mapbox objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + mapbox objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all mapbox objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + mapbox and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of mapbox objects to select. + To select mapbox objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all mapbox objects are selected. + **kwargs + Additional property updates to apply to each selected + mapbox object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_mapboxes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_polars(self, selector=None, row=None, col=None): + """ + Select polar subplot objects from a particular subplot cell + and/or polar subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + polar objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all polar objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + polar and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of polar objects to select. + To select polar objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all polar objects are selected. + Returns + ------- + generator + Generator that iterates through all of the polar + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("polar", selector, row, col) + + def for_each_polar(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all polar objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single polar object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + polar objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all polar objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + polar and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of polar objects to select. + To select polar objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all polar objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_polars(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_polars( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all polar objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + polar objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + polar objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all polar objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + polar and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of polar objects to select. + To select polar objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all polar objects are selected. + **kwargs + Additional property updates to apply to each selected + polar object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_polars(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_scenes(self, selector=None, row=None, col=None): + """ + Select scene subplot objects from a particular subplot cell + and/or scene subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + scene objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all scene objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + scene and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of scene objects to select. + To select scene objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all scene objects are selected. + Returns + ------- + generator + Generator that iterates through all of the scene + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("scene", selector, row, col) + + def for_each_scene(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all scene objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single scene object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + scene objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all scene objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + scene and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of scene objects to select. + To select scene objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all scene objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_scenes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_scenes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all scene objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + scene objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + scene objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all scene objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + scene and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of scene objects to select. + To select scene objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all scene objects are selected. + **kwargs + Additional property updates to apply to each selected + scene object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_scenes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_smiths(self, selector=None, row=None, col=None): + """ + Select smith subplot objects from a particular subplot cell + and/or smith subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + smith objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all smith objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + smith and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of smith objects to select. + To select smith objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all smith objects are selected. + Returns + ------- + generator + Generator that iterates through all of the smith + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("smith", selector, row, col) + + def for_each_smith(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all smith objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single smith object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + smith objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all smith objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + smith and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of smith objects to select. + To select smith objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all smith objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_smiths(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_smiths( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all smith objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + smith objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + smith objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all smith objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + smith and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of smith objects to select. + To select smith objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all smith objects are selected. + **kwargs + Additional property updates to apply to each selected + smith object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_smiths(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_ternaries(self, selector=None, row=None, col=None): + """ + Select ternary subplot objects from a particular subplot cell + and/or ternary subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + ternary objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all ternary objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + ternary and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of ternary objects to select. + To select ternary objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all ternary objects are selected. + Returns + ------- + generator + Generator that iterates through all of the ternary + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("ternary", selector, row, col) + + def for_each_ternary(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all ternary objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single ternary object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + ternary objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all ternary objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + ternary and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of ternary objects to select. + To select ternary objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all ternary objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_ternaries(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_ternaries( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all ternary objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + ternary objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + ternary objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all ternary objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + ternary and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of ternary objects to select. + To select ternary objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all ternary objects are selected. + **kwargs + Additional property updates to apply to each selected + ternary object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_ternaries(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_xaxes(self, selector=None, row=None, col=None): + """ + Select xaxis subplot objects from a particular subplot cell + and/or xaxis subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + xaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all xaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + xaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of xaxis objects to select. + To select xaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all xaxis objects are selected. + Returns + ------- + generator + Generator that iterates through all of the xaxis + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix("xaxis", selector, row, col) + + def for_each_xaxis(self, fn, selector=None, row=None, col=None) -> "FigureWidget": + """ + Apply a function to all xaxis objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single xaxis object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + xaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all xaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + xaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of xaxis objects to select. + To select xaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all xaxis objects are selected. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_xaxes(selector=selector, row=row, col=col): + fn(obj) + + return self + + def update_xaxes( + self, patch=None, selector=None, overwrite=False, row=None, col=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all xaxis objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + xaxis objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + xaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all xaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + xaxis and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of xaxis objects to select. + To select xaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all xaxis objects are selected. + **kwargs + Additional property updates to apply to each selected + xaxis object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_xaxes(selector=selector, row=row, col=col): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_yaxes(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select yaxis subplot objects from a particular subplot cell + and/or yaxis subplot objects that satisfy custom selection + criteria. + + Parameters + ---------- + selector: dict, function, or None (default None) + Dict to use as selection criteria. + yaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all yaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + yaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of yaxis objects to select. + To select yaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all yaxis objects are selected. + secondary_y: boolean or None (default None) + * If True, only select yaxis objects associated with the secondary + y-axis of the subplot. + * If False, only select yaxis objects associated with the primary + y-axis of the subplot. + * If None (the default), do not filter yaxis objects based on + a secondary y-axis condition. + + To select yaxis objects by secondary y-axis, the Figure must + have been created using plotly.subplots.make_subplots. See + the docstring for the specs argument to make_subplots for more + info on creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the yaxis + objects that satisfy all of the specified selection criteria + """ + + return self._select_layout_subplots_by_prefix( + "yaxis", selector, row, col, secondary_y=secondary_y + ) + + def for_each_yaxis( + self, fn, selector=None, row=None, col=None, secondary_y=None + ) -> "FigureWidget": + """ + Apply a function to all yaxis objects that satisfy the + specified selection criteria + + Parameters + ---------- + fn: + Function that inputs a single yaxis object. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + yaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all yaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + yaxis and those for which the function returned True will + be in the selection. + row, col: int or None (default None) + Subplot row and column index of yaxis objects to select. + To select yaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all yaxis objects are selected. + secondary_y: boolean or None (default None) + * If True, only select yaxis objects associated with the secondary + y-axis of the subplot. + * If False, only select yaxis objects associated with the primary + y-axis of the subplot. + * If None (the default), do not filter yaxis objects based on + a secondary y-axis condition. + + To select yaxis objects by secondary y-axis, the Figure must + have been created using plotly.subplots.make_subplots. See + the docstring for the specs argument to make_subplots for more + info on creating subplots with secondary y-axes. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_yaxes( + selector=selector, row=row, col=col, secondary_y=secondary_y + ): + fn(obj) + + return self + + def update_yaxes( + self, + patch=None, + selector=None, + overwrite=False, + row=None, + col=None, + secondary_y=None, + **kwargs, + ) -> "FigureWidget": + """ + Perform a property update operation on all yaxis objects + that satisfy the specified selection criteria + + Parameters + ---------- + patch: dict + Dictionary of property updates to be applied to all + yaxis objects that satisfy the selection criteria. + selector: dict, function, or None (default None) + Dict to use as selection criteria. + yaxis objects will be selected if they contain + properties corresponding to all of the dictionary's keys, with + values that exactly match the supplied values. If None + (the default), all yaxis objects are selected. If a + function, it must be a function accepting a single argument and + returning a boolean. The function will be called on each + yaxis and those for which the function returned True will + be in the selection. + overwrite: bool + If True, overwrite existing properties. If False, apply updates + to existing properties recursively, preserving existing + properties that are not specified in the update operation. + row, col: int or None (default None) + Subplot row and column index of yaxis objects to select. + To select yaxis objects by row and column, the Figure + must have been created using plotly.subplots.make_subplots. + If None (the default), all yaxis objects are selected. + secondary_y: boolean or None (default None) + * If True, only select yaxis objects associated with the secondary + y-axis of the subplot. + * If False, only select yaxis objects associated with the primary + y-axis of the subplot. + * If None (the default), do not filter yaxis objects based on + a secondary y-axis condition. + + To select yaxis objects by secondary y-axis, the Figure must + have been created using plotly.subplots.make_subplots. See + the docstring for the specs argument to make_subplots for more + info on creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected + yaxis object. If a property is specified in + both patch and in **kwargs then the one in **kwargs + takes precedence. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self.select_yaxes( + selector=selector, row=row, col=col, secondary_y=secondary_y + ): + obj.update(patch, overwrite=overwrite, **kwargs) + + return self + + def select_annotations(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select annotations from a particular subplot cell and/or annotations + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all annotations are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each annotation and those for which the function returned True + will be in the selection. If an int N, the Nth annotation matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of annotations to select. + To select annotations by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + annotation that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all annotations are selected. + secondary_y: boolean or None (default None) + * If True, only select annotations associated with the secondary + y-axis of the subplot. + * If False, only select annotations associated with the primary + y-axis of the subplot. + * If None (the default), do not filter annotations based on secondary + y-axis. + + To select annotations by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the annotations that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "annotations", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_annotation( + self, fn, selector=None, row=None, col=None, secondary_y=None + ): + """ + Apply a function to all annotations that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single annotation object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all annotations are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each annotation and those for which the function returned True + will be in the selection. If an int N, the Nth annotation matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of annotations to select. + To select annotations by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + annotations that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all annotations are selected. + secondary_y: boolean or None (default None) + * If True, only select annotations associated with the secondary + y-axis of the subplot. + * If False, only select annotations associated with the primary + y-axis of the subplot. + * If None (the default), do not filter annotations based on secondary + y-axis. + + To select annotations by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="annotations", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_annotations( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all annotations that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all annotations that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all annotations are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each annotation and those for which the function returned True + will be in the selection. If an int N, the Nth annotation matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of annotations to select. + To select annotations by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + annotation that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all annotations are selected. + secondary_y: boolean or None (default None) + * If True, only select annotations associated with the secondary + y-axis of the subplot. + * If False, only select annotations associated with the primary + y-axis of the subplot. + * If None (the default), do not filter annotations based on secondary + y-axis. + + To select annotations by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected annotation. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="annotations", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_annotation( + self, + arg=None, + align=None, + arrowcolor=None, + arrowhead=None, + arrowside=None, + arrowsize=None, + arrowwidth=None, + ax=None, + axref=None, + ay=None, + ayref=None, + bgcolor=None, + bordercolor=None, + borderpad=None, + borderwidth=None, + captureevents=None, + clicktoshow=None, + font=None, + height=None, + hoverlabel=None, + hovertext=None, + name=None, + opacity=None, + showarrow=None, + standoff=None, + startarrowhead=None, + startarrowsize=None, + startstandoff=None, + templateitemname=None, + text=None, + textangle=None, + valign=None, + visible=None, + width=None, + x=None, + xanchor=None, + xclick=None, + xref=None, + xshift=None, + y=None, + yanchor=None, + yclick=None, + yref=None, + yshift=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "FigureWidget": + """ + Create and add a new annotation to the figure's layout + + Parameters + ---------- + arg + instance of Annotation or dict with compatible + properties + align + 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. + arrowcolor + Sets the color of the annotation arrow. + arrowhead + Sets the end annotation arrow head style. + arrowside + Sets the annotation arrow head position. + arrowsize + 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. + arrowwidth + Sets the width (in px) of annotation arrow line. + ax + 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`. + axref + 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. + ay + 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`. + ayref + 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. + bgcolor + Sets the background color of the annotation. + bordercolor + Sets the color of the border enclosing the annotation + `text`. + borderpad + Sets the padding (in px) between the `text` and the + enclosing border. + borderwidth + Sets the width (in px) of the border enclosing the + annotation `text`. + captureevents + 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`. + clicktoshow + 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`. + font + Sets the annotation text font. + height + Sets an explicit height for the text box. null + (default) lets the text set the box height. Taller text + will be clipped. + hoverlabel + :class:`plotly.graph_objects.layout.annotation.Hoverlab + el` instance or dict with compatible properties + hovertext + Sets text to appear when hovering over this annotation. + If omitted or blank, no hover label will appear. + name + 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. + opacity + Sets the opacity of the annotation (text + arrow). + showarrow + 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. + standoff + 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. + startarrowhead + Sets the start annotation arrow head style. + startarrowsize + 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. + startstandoff + 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. + templateitemname + 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`. + text + Sets the text associated with this annotation. Plotly + uses a subset of HTML tags to do things like newline + (
), bold (), italics (), hyperlinks + (). Tags , , , , + are also supported. + textangle + Sets the angle at which the `text` is drawn with + respect to the horizontal. + valign + 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. + visible + Determines whether or not this annotation is visible. + width + 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. + x + 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. + xanchor + 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. + xclick + Toggle this annotation when clicking a data point whose + `x` value is `xclick` rather than the annotation's `x` + value. + xref + 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. + xshift + Shifts the position of the whole annotation and arrow + to the right (positive) or left (negative) by this many + pixels. + y + 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. + yanchor + 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. + yclick + Toggle this annotation when clicking a data point whose + `y` value is `yclick` rather than the annotation's `y` + value. + yref + 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. + yshift + Shifts the position of the whole annotation and arrow + up (positive) or down (negative) by this many pixels. + row + Subplot row for annotation. If 'all', addresses all + rows in the specified column(s). + col + Subplot column for annotation. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add annotation to secondary y-axis + exclude_empty_subplots + If True, annotation will not be added to subplots + without traces. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Annotation( + arg, + align=align, + arrowcolor=arrowcolor, + arrowhead=arrowhead, + arrowside=arrowside, + arrowsize=arrowsize, + arrowwidth=arrowwidth, + ax=ax, + axref=axref, + ay=ay, + ayref=ayref, + bgcolor=bgcolor, + bordercolor=bordercolor, + borderpad=borderpad, + borderwidth=borderwidth, + captureevents=captureevents, + clicktoshow=clicktoshow, + font=font, + height=height, + hoverlabel=hoverlabel, + hovertext=hovertext, + name=name, + opacity=opacity, + showarrow=showarrow, + standoff=standoff, + startarrowhead=startarrowhead, + startarrowsize=startarrowsize, + startstandoff=startstandoff, + templateitemname=templateitemname, + text=text, + textangle=textangle, + valign=valign, + visible=visible, + width=width, + x=x, + xanchor=xanchor, + xclick=xclick, + xref=xref, + xshift=xshift, + y=y, + yanchor=yanchor, + yclick=yclick, + yref=yref, + yshift=yshift, + **kwargs, + ) + return self._add_annotation_like( + "annotation", + "annotations", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def select_layout_images(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select images from a particular subplot cell and/or images + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all images are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each image and those for which the function returned True + will be in the selection. If an int N, the Nth image matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of images to select. + To select images by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + image that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all images are selected. + secondary_y: boolean or None (default None) + * If True, only select images associated with the secondary + y-axis of the subplot. + * If False, only select images associated with the primary + y-axis of the subplot. + * If None (the default), do not filter images based on secondary + y-axis. + + To select images by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the images that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "images", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_layout_image( + self, fn, selector=None, row=None, col=None, secondary_y=None + ): + """ + Apply a function to all images that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single image object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all images are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each image and those for which the function returned True + will be in the selection. If an int N, the Nth image matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of images to select. + To select images by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + images that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all images are selected. + secondary_y: boolean or None (default None) + * If True, only select images associated with the secondary + y-axis of the subplot. + * If False, only select images associated with the primary + y-axis of the subplot. + * If None (the default), do not filter images based on secondary + y-axis. + + To select images by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="images", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_layout_images( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all images that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all images that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all images are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each image and those for which the function returned True + will be in the selection. If an int N, the Nth image matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of images to select. + To select images by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + image that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all images are selected. + secondary_y: boolean or None (default None) + * If True, only select images associated with the secondary + y-axis of the subplot. + * If False, only select images associated with the primary + y-axis of the subplot. + * If None (the default), do not filter images based on secondary + y-axis. + + To select images by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected image. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="images", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_layout_image( + self, + arg=None, + layer=None, + name=None, + opacity=None, + sizex=None, + sizey=None, + sizing=None, + source=None, + templateitemname=None, + visible=None, + x=None, + xanchor=None, + xref=None, + y=None, + yanchor=None, + yref=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "FigureWidget": + """ + Create and add a new image to the figure's layout + + Parameters + ---------- + arg + instance of Image or dict with compatible properties + layer + 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. + name + 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. + opacity + Sets the opacity of the image. + sizex + 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. + sizey + 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. + sizing + Specifies which dimension of the image to constrain. + source + 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. + templateitemname + 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`. + visible + Determines whether or not this image is visible. + x + 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 + xanchor + Sets the anchor for the x position + xref + 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. + y + 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 + yanchor + Sets the anchor for the y position. + yref + 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. + row + Subplot row for image. If 'all', addresses all rows in + the specified column(s). + col + Subplot column for image. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add image to secondary y-axis + exclude_empty_subplots + If True, image will not be added to subplots without + traces. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Image( + arg, + layer=layer, + name=name, + opacity=opacity, + sizex=sizex, + sizey=sizey, + sizing=sizing, + source=source, + templateitemname=templateitemname, + visible=visible, + x=x, + xanchor=xanchor, + xref=xref, + y=y, + yanchor=yanchor, + yref=yref, + **kwargs, + ) + return self._add_annotation_like( + "image", + "images", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def select_selections(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select selections from a particular subplot cell and/or selections + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all selections are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each selection and those for which the function returned True + will be in the selection. If an int N, the Nth selection matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of selections to select. + To select selections by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + selection that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all selections are selected. + secondary_y: boolean or None (default None) + * If True, only select selections associated with the secondary + y-axis of the subplot. + * If False, only select selections associated with the primary + y-axis of the subplot. + * If None (the default), do not filter selections based on secondary + y-axis. + + To select selections by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the selections that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "selections", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_selection( + self, fn, selector=None, row=None, col=None, secondary_y=None + ): + """ + Apply a function to all selections that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single selection object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all selections are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each selection and those for which the function returned True + will be in the selection. If an int N, the Nth selection matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of selections to select. + To select selections by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + selections that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all selections are selected. + secondary_y: boolean or None (default None) + * If True, only select selections associated with the secondary + y-axis of the subplot. + * If False, only select selections associated with the primary + y-axis of the subplot. + * If None (the default), do not filter selections based on secondary + y-axis. + + To select selections by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="selections", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_selections( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all selections that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all selections that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all selections are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each selection and those for which the function returned True + will be in the selection. If an int N, the Nth selection matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of selections to select. + To select selections by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + selection that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all selections are selected. + secondary_y: boolean or None (default None) + * If True, only select selections associated with the secondary + y-axis of the subplot. + * If False, only select selections associated with the primary + y-axis of the subplot. + * If None (the default), do not filter selections based on secondary + y-axis. + + To select selections by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected selection. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="selections", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_selection( + self, + arg=None, + line=None, + name=None, + opacity=None, + path=None, + templateitemname=None, + type=None, + x0=None, + x1=None, + xref=None, + y0=None, + y1=None, + yref=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "FigureWidget": + """ + Create and add a new selection to the figure's layout + + Parameters + ---------- + arg + instance of Selection or dict with compatible + properties + line + :class:`plotly.graph_objects.layout.selection.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the selection. + path + For `type` "path" - a valid SVG path similar to + `shapes.path` in data coordinates. Allowed segments + are: M, L and Z. + templateitemname + 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`. + type + 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`. + x0 + Sets the selection's starting x position. + x1 + Sets the selection's end x position. + xref + 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. + y0 + Sets the selection's starting y position. + y1 + Sets the selection's end y position. + yref + 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. + row + Subplot row for selection. If 'all', addresses all rows + in the specified column(s). + col + Subplot column for selection. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add selection to secondary y-axis + exclude_empty_subplots + If True, selection will not be added to subplots + without traces. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Selection( + arg, + line=line, + name=name, + opacity=opacity, + path=path, + templateitemname=templateitemname, + type=type, + x0=x0, + x1=x1, + xref=xref, + y0=y0, + y1=y1, + yref=yref, + **kwargs, + ) + return self._add_annotation_like( + "selection", + "selections", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) + + def select_shapes(self, selector=None, row=None, col=None, secondary_y=None): + """ + Select shapes from a particular subplot cell and/or shapes + that satisfy custom selection criteria. + + Parameters + ---------- + selector: dict, function, int, str, or None (default None) + Dict to use as selection criteria. + Annotations will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all shapes are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each shape and those for which the function returned True + will be in the selection. If an int N, the Nth shape matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of shapes to select. + To select shapes by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + shape that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all shapes are selected. + secondary_y: boolean or None (default None) + * If True, only select shapes associated with the secondary + y-axis of the subplot. + * If False, only select shapes associated with the primary + y-axis of the subplot. + * If None (the default), do not filter shapes based on secondary + y-axis. + + To select shapes by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + generator + Generator that iterates through all of the shapes that satisfy + all of the specified selection criteria + """ + return self._select_annotations_like( + "shapes", selector=selector, row=row, col=col, secondary_y=secondary_y + ) + + def for_each_shape(self, fn, selector=None, row=None, col=None, secondary_y=None): + """ + Apply a function to all shapes that satisfy the specified selection + criteria + + Parameters + ---------- + fn: + Function that inputs a single shape object. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all shapes are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each shape and those for which the function returned True + will be in the selection. If an int N, the Nth shape matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of shapes to select. + To select shapes by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + shapes that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all shapes are selected. + secondary_y: boolean or None (default None) + * If True, only select shapes associated with the secondary + y-axis of the subplot. + * If False, only select shapes associated with the primary + y-axis of the subplot. + * If None (the default), do not filter shapes based on secondary + y-axis. + + To select shapes by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="shapes", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + fn(obj) + + return self + + def update_shapes( + self, patch=None, selector=None, row=None, col=None, secondary_y=None, **kwargs + ) -> "FigureWidget": + """ + Perform a property update operation on all shapes that satisfy the + specified selection criteria + + Parameters + ---------- + patch: dict or None (default None) + Dictionary of property updates to be applied to all shapes that + satisfy the selection criteria. + selector: dict, function, int, str or None (default None) + Dict to use as selection criteria. + Traces will be selected if they contain properties corresponding + to all of the dictionary's keys, with values that exactly match + the supplied values. If None (the default), all shapes are + selected. If a function, it must be a function accepting a single + argument and returning a boolean. The function will be called on + each shape and those for which the function returned True + will be in the selection. If an int N, the Nth shape matching row + and col will be selected (N can be negative). If a string S, the selector + is equivalent to dict(type=S). + row, col: int or None (default None) + Subplot row and column index of shapes to select. + To select shapes by row and column, the Figure must have been + created using plotly.subplots.make_subplots. To select only those + shape that are in paper coordinates, set row and col to the + string 'paper'. If None (the default), all shapes are selected. + secondary_y: boolean or None (default None) + * If True, only select shapes associated with the secondary + y-axis of the subplot. + * If False, only select shapes associated with the primary + y-axis of the subplot. + * If None (the default), do not filter shapes based on secondary + y-axis. + + To select shapes by secondary y-axis, the Figure must have been + created using plotly.subplots.make_subplots. See the docstring + for the specs argument to make_subplots for more info on + creating subplots with secondary y-axes. + **kwargs + Additional property updates to apply to each selected shape. If + a property is specified in both patch and in **kwargs then the + one in **kwargs takes precedence. + + Returns + ------- + self + Returns the FigureWidget object that the method was called on + """ + for obj in self._select_annotations_like( + prop="shapes", + selector=selector, + row=row, + col=col, + secondary_y=secondary_y, + ): + obj.update(patch, **kwargs) + + return self + + def add_shape( + self, + arg=None, + editable=None, + fillcolor=None, + fillrule=None, + label=None, + layer=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + name=None, + opacity=None, + path=None, + showlegend=None, + templateitemname=None, + type=None, + visible=None, + x0=None, + x0shift=None, + x1=None, + x1shift=None, + xanchor=None, + xref=None, + xsizemode=None, + y0=None, + y0shift=None, + y1=None, + y1shift=None, + yanchor=None, + yref=None, + ysizemode=None, + row=None, + col=None, + secondary_y=None, + exclude_empty_subplots=None, + **kwargs, + ) -> "FigureWidget": + """ + Create and add a new shape to the figure's layout + + Parameters + ---------- + arg + instance of Shape or dict with compatible properties + editable + 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`. + fillcolor + Sets the color filling the shape's interior. Only + applies to closed shapes. + fillrule + 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 + label + :class:`plotly.graph_objects.layout.shape.Label` + instance or dict with compatible properties + layer + Specifies whether shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or + above traces ("above"). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.layout.shape.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this shape. + line + :class:`plotly.graph_objects.layout.shape.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the shape. + path + 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 + showlegend + Determines whether or not this shape is shown in the + legend. + templateitemname + 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`. + type + 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. + visible + 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). + x0 + Sets the shape's starting x position. See `type` and + `xsizemode` for more info. + x0shift + 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. + x1 + Sets the shape's end x position. See `type` and + `xsizemode` for more info. + x1shift + 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. + xanchor + 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". + xref + 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. + xsizemode + 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. + y0 + Sets the shape's starting y position. See `type` and + `ysizemode` for more info. + y0shift + 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. + y1 + Sets the shape's end y position. See `type` and + `ysizemode` for more info. + y1shift + 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. + yanchor + 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". + yref + 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. + ysizemode + 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. + row + Subplot row for shape. If 'all', addresses all rows in + the specified column(s). + col + Subplot column for shape. If 'all', addresses all + columns in the specified row(s). + secondary_y + Whether to add shape to secondary y-axis + exclude_empty_subplots + If True, shape will not be added to subplots without + traces. + + Returns + ------- + FigureWidget + """ + from plotly.graph_objs import layout as _layout + + new_obj = _layout.Shape( + arg, + editable=editable, + fillcolor=fillcolor, + fillrule=fillrule, + label=label, + layer=layer, + legend=legend, + legendgroup=legendgroup, + legendgrouptitle=legendgrouptitle, + legendrank=legendrank, + legendwidth=legendwidth, + line=line, + name=name, + opacity=opacity, + path=path, + showlegend=showlegend, + templateitemname=templateitemname, + type=type, + visible=visible, + x0=x0, + x0shift=x0shift, + x1=x1, + x1shift=x1shift, + xanchor=xanchor, + xref=xref, + xsizemode=xsizemode, + y0=y0, + y0shift=y0shift, + y1=y1, + y1shift=y1shift, + yanchor=yanchor, + yref=yref, + ysizemode=ysizemode, + **kwargs, + ) + return self._add_annotation_like( + "shape", + "shapes", + new_obj, + row=row, + col=col, + secondary_y=secondary_y, + exclude_empty_subplots=exclude_empty_subplots, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_frame.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_frame.py new file mode 100644 index 0000000..703e8d2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_frame.py @@ -0,0 +1,220 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseFrameHierarchyType as _BaseFrameHierarchyType +import copy as _copy + + +class Frame(_BaseFrameHierarchyType): + _parent_path_str = "" + _path_str = "frame" + _valid_props = {"baseframe", "data", "group", "layout", "name", "traces"} + + @property + def baseframe(self): + """ + 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. + + The 'baseframe' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["baseframe"] + + @baseframe.setter + def baseframe(self, val): + self["baseframe"] = val + + @property + def data(self): + """ + A list of traces this frame modifies. The format is identical + to the normal trace definition. + + Returns + ------- + Any + """ + return self["data"] + + @data.setter + def data(self, val): + self["data"] = val + + @property + def group(self): + """ + An identifier that specifies the group to which the frame + belongs, used by animate to select a subset of frames. + + The 'group' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["group"] + + @group.setter + def group(self, val): + self["group"] = val + + @property + def layout(self): + """ + Layout properties which this frame modifies. The format is + identical to the normal layout definition. + + Returns + ------- + Any + """ + return self["layout"] + + @layout.setter + def layout(self, val): + self["layout"] = val + + @property + def name(self): + """ + A label by which to identify the frame + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def traces(self): + """ + A list of trace indices that identify the respective traces in + the data attribute + + The 'traces' property accepts values of any type + + Returns + ------- + Any + """ + return self["traces"] + + @traces.setter + def traces(self, val): + self["traces"] = val + + @property + def _prop_descriptions(self): + return """\ + baseframe + 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. + data + A list of traces this frame modifies. The format is + identical to the normal trace definition. + group + An identifier that specifies the group to which the + frame belongs, used by animate to select a subset of + frames. + layout + Layout properties which this frame modifies. The format + is identical to the normal layout definition. + name + A label by which to identify the frame + traces + A list of trace indices that identify the respective + traces in the data attribute + """ + + def __init__( + self, + arg=None, + baseframe=None, + data=None, + group=None, + layout=None, + name=None, + traces=None, + **kwargs, + ): + """ + Construct a new Frame object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Frame` + baseframe + 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. + data + A list of traces this frame modifies. The format is + identical to the normal trace definition. + group + An identifier that specifies the group to which the + frame belongs, used by animate to select a subset of + frames. + layout + Layout properties which this frame modifies. The format + is identical to the normal layout definition. + name + A label by which to identify the frame + traces + A list of trace indices that identify the respective + traces in the data attribute + + Returns + ------- + Frame + """ + super().__init__("frames") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Frame +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Frame`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("baseframe", arg, baseframe) + self._set_property("data", arg, data) + self._set_property("group", arg, group) + self._set_property("layout", arg, layout) + self._set_property("name", arg, name) + self._set_property("traces", arg, traces) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_funnel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_funnel.py new file mode 100644 index 0000000..fd2682f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_funnel.py @@ -0,0 +1,2392 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Funnel(_BaseTraceType): + _parent_path_str = "" + _path_str = "funnel" + _valid_props = { + "alignmentgroup", + "cliponaxis", + "connector", + "constraintext", + "customdata", + "customdatasrc", + "dx", + "dy", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextanchor", + "insidetextfont", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "offset", + "offsetgroup", + "opacity", + "orientation", + "outsidetextfont", + "selectedpoints", + "showlegend", + "stream", + "text", + "textangle", + "textfont", + "textinfo", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "visible", + "width", + "x", + "x0", + "xaxis", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "y", + "y0", + "yaxis", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def connector(self): + """ + The 'connector' property is an instance of Connector + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Connector` + - A dict of string/value properties that will be passed + to the Connector constructor + + Returns + ------- + plotly.graph_objs.funnel.Connector + """ + return self["connector"] + + @connector.setter + def connector(self, val): + self["connector"] = val + + @property + def constraintext(self): + """ + Constrain the size of text inside or outside a bar to be no + larger than the bar itself. + + The 'constraintext' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'both', 'none'] + + Returns + ------- + Any + """ + return self["constraintext"] + + @constraintext.setter + def constraintext(self, val): + self["constraintext"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['name', 'x', 'y', 'text', 'percent initial', 'percent previous', 'percent total'] joined with '+' characters + (e.g. 'name+x') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.funnel.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextanchor(self): + """ + Determines if texts are kept at center or start/end points in + `textposition` "inside" mode. + + The 'insidetextanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['end', 'middle', 'start'] + + Returns + ------- + Any + """ + return self["insidetextanchor"] + + @insidetextanchor.setter + def insidetextanchor(self, val): + self["insidetextanchor"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `text` lying inside the bar. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.funnel.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.funnel.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.funnel.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def offset(self): + """ + 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. + + The 'offset' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + 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". + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outsidetextfont(self): + """ + Sets the font used for `text` lying outside the bar. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.funnel.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.funnel.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + 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. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def textfont(self): + """ + Sets the font used for `text`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.funnel.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. In the + case of having multiple funnels, percentages & totals are + computed separately (per trace). + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'percent initial', 'percent previous', 'percent total', 'value'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textposition(self): + """ + 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. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'auto', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the bar width (in position axis units). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.funnel.Connector` instance + or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnel.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnel.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnel.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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". + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnel.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple funnels, percentages & + totals are computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + cliponaxis=None, + connector=None, + constraintext=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + visible=None, + width=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Funnel object + + Visualize stages in a process using length-encoded bars. This + trace can be used to show data in either a part-to-whole + representation wherein each item appears in a single stage, or + in a "drop-off" representation wherein each item appears in + each stage it traversed. See also the "funnelarea" trace type + for a different approach to visualizing funnel data. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Funnel` + alignmentgroup + 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. + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.funnel.Connector` instance + or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnel.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnel.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnel.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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". + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnel.Stream` instance or + dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple funnels, percentages & + totals are computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Funnel + """ + super().__init__("funnel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Funnel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Funnel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("connector", arg, connector) + self._set_property("constraintext", arg, constraintext) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextanchor", arg, insidetextanchor) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("offset", arg, offset) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "funnel" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_funnelarea.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_funnelarea.py new file mode 100644 index 0000000..50e316b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_funnelarea.py @@ -0,0 +1,1640 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Funnelarea(_BaseTraceType): + _parent_path_str = "" + _path_str = "funnelarea" + _valid_props = { + "aspectratio", + "baseratio", + "customdata", + "customdatasrc", + "dlabel", + "domain", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextfont", + "label0", + "labels", + "labelssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "opacity", + "scalegroup", + "showlegend", + "stream", + "text", + "textfont", + "textinfo", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "title", + "type", + "uid", + "uirevision", + "values", + "valuessrc", + "visible", + } + + @property + def aspectratio(self): + """ + Sets the ratio between height and width + + The 'aspectratio' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["aspectratio"] + + @aspectratio.setter + def aspectratio(self, val): + self["aspectratio"] = val + + @property + def baseratio(self): + """ + Sets the ratio between bottom length and maximum top length. + + The 'baseratio' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["baseratio"] + + @baseratio.setter + def baseratio(self, val): + self["baseratio"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dlabel(self): + """ + Sets the label step. See `label0` for more info. + + The 'dlabel' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dlabel"] + + @dlabel.setter + def dlabel(self, val): + self["dlabel"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'percent', 'name'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `textinfo` lying inside the sector. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def label0(self): + """ + Alternate to `labels`. Builds a numeric set of labels. Use with + `dlabel` where `label0` is the starting label and `dlabel` the + step. + + The 'label0' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["label0"] + + @label0.setter + def label0(self, val): + self["label0"] = val + + @property + def labels(self): + """ + 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. + + The 'labels' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["labels"] + + @labels.setter + def labels(self, val): + self["labels"] = val + + @property + def labelssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `labels`. + + The 'labelssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelssrc"] + + @labelssrc.setter + def labelssrc(self, val): + self["labelssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def scalegroup(self): + """ + 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. + + The 'scalegroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["scalegroup"] + + @scalegroup.setter + def scalegroup(self, val): + self["scalegroup"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the font used for `textinfo`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'percent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textposition(self): + """ + Specifies the location of the `textinfo`. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.funnelarea.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def values(self): + """ + Sets the values of the sectors. If omitted, we count + occurrences of each label. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + aspectratio + Sets the ratio between height and width + baseratio + Sets the ratio between bottom length and maximum top + length. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.funnelarea.Domain` + instance or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnelarea.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnelarea.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnelarea.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnelarea.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.funnelarea.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + """ + + def __init__( + self, + arg=None, + aspectratio=None, + baseratio=None, + customdata=None, + customdatasrc=None, + dlabel=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + label0=None, + labels=None, + labelssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + scalegroup=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + title=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Funnelarea object + + Visualize stages in a process using area-encoded trapezoids. + This trace can be used to show data in a part-to-whole + representation similar to a "pie" trace, wherein each item + appears in a single stage. See also the "funnel" trace type for + a different approach to visualizing funnel data. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Funnelarea` + aspectratio + Sets the ratio between height and width + baseratio + Sets the ratio between bottom length and maximum top + length. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.funnelarea.Domain` + instance or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.funnelarea.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.funnelarea.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.funnelarea.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.funnelarea.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.funnelarea.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + + Returns + ------- + Funnelarea + """ + super().__init__("funnelarea") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Funnelarea +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Funnelarea`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("aspectratio", arg, aspectratio) + self._set_property("baseratio", arg, baseratio) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dlabel", arg, dlabel) + self._set_property("domain", arg, domain) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("label0", arg, label0) + self._set_property("labels", arg, labels) + self._set_property("labelssrc", arg, labelssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("scalegroup", arg, scalegroup) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("title", arg, title) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + + self._props["type"] = "funnelarea" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_heatmap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_heatmap.py new file mode 100644 index 0000000..0a6819e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_heatmap.py @@ -0,0 +1,2531 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Heatmap(_BaseTraceType): + _parent_path_str = "" + _path_str = "heatmap" + _valid_props = { + "autocolorscale", + "coloraxis", + "colorbar", + "colorscale", + "connectgaps", + "customdata", + "customdatasrc", + "dx", + "dy", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoverongaps", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "meta", + "metasrc", + "name", + "opacity", + "reversescale", + "showlegend", + "showscale", + "stream", + "text", + "textfont", + "textsrc", + "texttemplate", + "transpose", + "type", + "uid", + "uirevision", + "visible", + "x", + "x0", + "xaxis", + "xcalendar", + "xgap", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "xtype", + "y", + "y0", + "yaxis", + "ycalendar", + "ygap", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "ytype", + "z", + "zauto", + "zhoverformat", + "zmax", + "zmid", + "zmin", + "zorder", + "zsmooth", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.heatmap.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def connectgaps(self): + """ + 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. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.heatmap.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoverongaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the `z` data have hover labels associated with them. + + The 'hoverongaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["hoverongaps"] + + @hoverongaps.setter + def hoverongaps(self, val): + self["hoverongaps"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.heatmap.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.heatmap.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + Sets the text elements associated with each z value. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.heatmap.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def transpose(self): + """ + Transposes the z data. + + The 'transpose' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["transpose"] + + @transpose.setter + def transpose(self, val): + self["transpose"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xgap(self): + """ + Sets the horizontal gap (in pixels) between bricks. + + The 'xgap' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xgap"] + + @xgap.setter + def xgap(self, val): + self["xgap"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def xtype(self): + """ + 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). + + The 'xtype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['array', 'scaled'] + + Returns + ------- + Any + """ + return self["xtype"] + + @xtype.setter + def xtype(self, val): + self["xtype"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def ygap(self): + """ + Sets the vertical gap (in pixels) between bricks. + + The 'ygap' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ygap"] + + @ygap.setter + def ygap(self, val): + self["ygap"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def ytype(self): + """ + 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) + + The 'ytype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['array', 'scaled'] + + Returns + ------- + Any + """ + return self["ytype"] + + @ytype.setter + def ytype(self, val): + self["ytype"] = val + + @property + def z(self): + """ + Sets the z data. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zhoverformat(self): + """ + 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. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def zsmooth(self): + """ + Picks a smoothing algorithm use to smooth `z` data. + + The 'zsmooth' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fast', 'best', False] + + Returns + ------- + Any + """ + return self["zsmooth"] + + @zsmooth.setter + def zsmooth(self, val): + self["zsmooth"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.heatmap.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.heatmap.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.heatmap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.heatmap.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoverongaps=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textfont=None, + textsrc=None, + texttemplate=None, + transpose=None, + uid=None, + uirevision=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xgap=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + xtype=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + ygap=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + ytype=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zorder=None, + zsmooth=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Heatmap object + + The data that describes the heatmap value-to-color mapping is + set in `z`. Data in `z` can either be a 2D list of values + (ragged or not) or a 1D array of values. In the case where `z` + is a 2D list, say that `z` has N rows and M columns. Then, by + default, the resulting heatmap will have N partitions along the + y axis and M partitions along the x axis. In other words, the + i-th row/ j-th column cell in `z` is mapped to the i-th + partition of the y axis (starting from the bottom of the plot) + and the j-th partition of the x-axis (starting from the left of + the plot). This behavior can be flipped by using `transpose`. + Moreover, `x` (`y`) can be provided with M or M+1 (N or N+1) + elements. If M (N), then the coordinates correspond to the + center of the heatmap cells and the cells have equal width. If + M+1 (N+1), then the coordinates correspond to the edges of the + heatmap cells. In the case where `z` is a 1D list, the x and y + coordinates must be provided in `x` and `y` respectively to + form data triplets. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Heatmap` + autocolorscale + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.heatmap.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.heatmap.Hoverlabel` + instance or dict with compatible properties + hoverongaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data have hover labels associated + with them. + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.heatmap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.heatmap.Stream` instance + or dict with compatible properties + text + Sets the text elements associated with each z value. + textfont + Sets the text font. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + transpose + Transposes the z data. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + xtype + 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). + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + ytype + 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) + z + Sets the z data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zorder + 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`. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Heatmap + """ + super().__init__("heatmap") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Heatmap +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Heatmap`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoverongaps", arg, hoverongaps) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("transpose", arg, transpose) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xgap", arg, xgap) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("xtype", arg, xtype) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("ygap", arg, ygap) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("ytype", arg, ytype) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zorder", arg, zorder) + self._set_property("zsmooth", arg, zsmooth) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "heatmap" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram.py new file mode 100644 index 0000000..9bc1462 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram.py @@ -0,0 +1,2419 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Histogram(_BaseTraceType): + _parent_path_str = "" + _path_str = "histogram" + _valid_props = { + "alignmentgroup", + "autobinx", + "autobiny", + "bingroup", + "cliponaxis", + "constraintext", + "cumulative", + "customdata", + "customdatasrc", + "error_x", + "error_y", + "histfunc", + "histnorm", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextanchor", + "insidetextfont", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "nbinsx", + "nbinsy", + "offsetgroup", + "opacity", + "orientation", + "outsidetextfont", + "selected", + "selectedpoints", + "showlegend", + "stream", + "text", + "textangle", + "textfont", + "textposition", + "textsrc", + "texttemplate", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "x", + "xaxis", + "xbins", + "xcalendar", + "xhoverformat", + "xsrc", + "y", + "yaxis", + "ybins", + "ycalendar", + "yhoverformat", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def autobinx(self): + """ + 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. + + The 'autobinx' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autobinx"] + + @autobinx.setter + def autobinx(self, val): + self["autobinx"] = val + + @property + def autobiny(self): + """ + 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. + + The 'autobiny' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autobiny"] + + @autobiny.setter + def autobiny(self, val): + self["autobiny"] = val + + @property + def bingroup(self): + """ + 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` + + The 'bingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["bingroup"] + + @bingroup.setter + def bingroup(self, val): + self["bingroup"] = val + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def constraintext(self): + """ + Constrain the size of text inside or outside a bar to be no + larger than the bar itself. + + The 'constraintext' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'both', 'none'] + + Returns + ------- + Any + """ + return self["constraintext"] + + @constraintext.setter + def constraintext(self, val): + self["constraintext"] = val + + @property + def cumulative(self): + """ + The 'cumulative' property is an instance of Cumulative + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Cumulative` + - A dict of string/value properties that will be passed + to the Cumulative constructor + + Returns + ------- + plotly.graph_objs.histogram.Cumulative + """ + return self["cumulative"] + + @cumulative.setter + def cumulative(self, val): + self["cumulative"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def error_x(self): + """ + The 'error_x' property is an instance of ErrorX + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.ErrorX` + - A dict of string/value properties that will be passed + to the ErrorX constructor + + Returns + ------- + plotly.graph_objs.histogram.ErrorX + """ + return self["error_x"] + + @error_x.setter + def error_x(self, val): + self["error_x"] = val + + @property + def error_y(self): + """ + The 'error_y' property is an instance of ErrorY + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.ErrorY` + - A dict of string/value properties that will be passed + to the ErrorY constructor + + Returns + ------- + plotly.graph_objs.histogram.ErrorY + """ + return self["error_y"] + + @error_y.setter + def error_y(self, val): + self["error_y"] = val + + @property + def histfunc(self): + """ + 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. + + The 'histfunc' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['count', 'sum', 'avg', 'min', 'max'] + + Returns + ------- + Any + """ + return self["histfunc"] + + @histfunc.setter + def histfunc(self, val): + self["histfunc"] = val + + @property + def histnorm(self): + """ + 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). + + The 'histnorm' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', 'percent', 'probability', 'density', 'probability + density'] + + Returns + ------- + Any + """ + return self["histnorm"] + + @histnorm.setter + def histnorm(self, val): + self["histnorm"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.histogram.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextanchor(self): + """ + Determines if texts are kept at center or start/end points in + `textposition` "inside" mode. + + The 'insidetextanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['end', 'middle', 'start'] + + Returns + ------- + Any + """ + return self["insidetextanchor"] + + @insidetextanchor.setter + def insidetextanchor(self, val): + self["insidetextanchor"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `text` lying inside the bar. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.histogram.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.histogram.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.histogram.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def nbinsx(self): + """ + 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. + + The 'nbinsx' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nbinsx"] + + @nbinsx.setter + def nbinsx(self, val): + self["nbinsx"] = val + + @property + def nbinsy(self): + """ + 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. + + The 'nbinsy' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nbinsy"] + + @nbinsy.setter + def nbinsy(self, val): + self["nbinsy"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + Sets the orientation of the bars. With "v" ("h"), the value of + the each bar spans along the vertical (horizontal). + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outsidetextfont(self): + """ + Sets the font used for `text` lying outside the bar. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.histogram.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.histogram.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.histogram.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + 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. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.histogram.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + 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. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'auto', 'none'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.histogram.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the sample data to be binned on the x axis. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xbins(self): + """ + The 'xbins' property is an instance of XBins + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.XBins` + - A dict of string/value properties that will be passed + to the XBins constructor + + Returns + ------- + plotly.graph_objs.histogram.XBins + """ + return self["xbins"] + + @xbins.setter + def xbins(self, val): + self["xbins"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the sample data to be binned on the y axis. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ybins(self): + """ + The 'ybins' property is an instance of YBins + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.YBins` + - A dict of string/value properties that will be passed + to the YBins constructor + + Returns + ------- + plotly.graph_objs.histogram.YBins + """ + return self["ybins"] + + @ybins.setter + def ybins(self, val): + self["ybins"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + autobinx + 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. + autobiny + 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. + bingroup + 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` + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + cumulative + :class:`plotly.graph_objects.histogram.Cumulative` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.histogram.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.histogram.ErrorY` instance + or dict with compatible properties + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.histogram.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.histogram.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the text font. + textposition + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.histogram.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbins + :class:`plotly.graph_objects.histogram.XBins` instance + or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybins + :class:`plotly.graph_objects.histogram.YBins` instance + or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + autobinx=None, + autobiny=None, + bingroup=None, + cliponaxis=None, + constraintext=None, + cumulative=None, + customdata=None, + customdatasrc=None, + error_x=None, + error_y=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + offsetgroup=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + xaxis=None, + xbins=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybins=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Histogram object + + The sample data from which statistics are computed is set in + `x` for vertically spanning histograms and in `y` for + horizontally spanning histograms. Binning options are set + `xbins` and `ybins` respectively if no aggregation data is + provided. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Histogram` + alignmentgroup + 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. + autobinx + 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. + autobiny + 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. + bingroup + 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` + cliponaxis + 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*. + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + cumulative + :class:`plotly.graph_objects.histogram.Cumulative` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.histogram.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.histogram.ErrorY` instance + or dict with compatible properties + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selected + :class:`plotly.graph_objects.histogram.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.histogram.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the text font. + textposition + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.histogram.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbins + :class:`plotly.graph_objects.histogram.XBins` instance + or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybins + :class:`plotly.graph_objects.histogram.YBins` instance + or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Histogram + """ + super().__init__("histogram") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Histogram +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Histogram`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("autobinx", arg, autobinx) + self._set_property("autobiny", arg, autobiny) + self._set_property("bingroup", arg, bingroup) + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("constraintext", arg, constraintext) + self._set_property("cumulative", arg, cumulative) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("error_x", arg, error_x) + self._set_property("error_y", arg, error_y) + self._set_property("histfunc", arg, histfunc) + self._set_property("histnorm", arg, histnorm) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextanchor", arg, insidetextanchor) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("nbinsx", arg, nbinsx) + self._set_property("nbinsy", arg, nbinsy) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xaxis", arg, xaxis) + self._set_property("xbins", arg, xbins) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yaxis", arg, yaxis) + self._set_property("ybins", arg, ybins) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "histogram" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2d.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2d.py new file mode 100644 index 0000000..bf1befd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2d.py @@ -0,0 +1,2363 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Histogram2d(_BaseTraceType): + _parent_path_str = "" + _path_str = "histogram2d" + _valid_props = { + "autobinx", + "autobiny", + "autocolorscale", + "bingroup", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "histfunc", + "histnorm", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "nbinsx", + "nbinsy", + "opacity", + "reversescale", + "showlegend", + "showscale", + "stream", + "textfont", + "texttemplate", + "type", + "uid", + "uirevision", + "visible", + "x", + "xaxis", + "xbingroup", + "xbins", + "xcalendar", + "xgap", + "xhoverformat", + "xsrc", + "y", + "yaxis", + "ybingroup", + "ybins", + "ycalendar", + "ygap", + "yhoverformat", + "ysrc", + "z", + "zauto", + "zhoverformat", + "zmax", + "zmid", + "zmin", + "zsmooth", + "zsrc", + } + + @property + def autobinx(self): + """ + 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. + + The 'autobinx' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autobinx"] + + @autobinx.setter + def autobinx(self, val): + self["autobinx"] = val + + @property + def autobiny(self): + """ + 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. + + The 'autobiny' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autobiny"] + + @autobiny.setter + def autobiny(self, val): + self["autobiny"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def bingroup(self): + """ + 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. + + The 'bingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["bingroup"] + + @bingroup.setter + def bingroup(self, val): + self["bingroup"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.histogram2d.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def histfunc(self): + """ + 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. + + The 'histfunc' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['count', 'sum', 'avg', 'min', 'max'] + + Returns + ------- + Any + """ + return self["histfunc"] + + @histfunc.setter + def histfunc(self, val): + self["histfunc"] = val + + @property + def histnorm(self): + """ + 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). + + The 'histnorm' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', 'percent', 'probability', 'density', 'probability + density'] + + Returns + ------- + Any + """ + return self["histnorm"] + + @histnorm.setter + def histnorm(self, val): + self["histnorm"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.histogram2d.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.histogram2d.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.histogram2d.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def nbinsx(self): + """ + 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. + + The 'nbinsx' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nbinsx"] + + @nbinsx.setter + def nbinsx(self, val): + self["nbinsx"] = val + + @property + def nbinsy(self): + """ + 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. + + The 'nbinsy' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nbinsy"] + + @nbinsy.setter + def nbinsy(self, val): + self["nbinsy"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.histogram2d.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.histogram2d.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every attributes that can be specified per- + point (the ones that are `arrayOk: true`) are available. + Finally, the template string has access to variable `z` + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the sample data to be binned on the x axis. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xbingroup(self): + """ + 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` + + The 'xbingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xbingroup"] + + @xbingroup.setter + def xbingroup(self, val): + self["xbingroup"] = val + + @property + def xbins(self): + """ + The 'xbins' property is an instance of XBins + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.XBins` + - A dict of string/value properties that will be passed + to the XBins constructor + + Returns + ------- + plotly.graph_objs.histogram2d.XBins + """ + return self["xbins"] + + @xbins.setter + def xbins(self, val): + self["xbins"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xgap(self): + """ + Sets the horizontal gap (in pixels) between bricks. + + The 'xgap' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xgap"] + + @xgap.setter + def xgap(self, val): + self["xgap"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the sample data to be binned on the y axis. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ybingroup(self): + """ + 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` + + The 'ybingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ybingroup"] + + @ybingroup.setter + def ybingroup(self, val): + self["ybingroup"] = val + + @property + def ybins(self): + """ + The 'ybins' property is an instance of YBins + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.YBins` + - A dict of string/value properties that will be passed + to the YBins constructor + + Returns + ------- + plotly.graph_objs.histogram2d.YBins + """ + return self["ybins"] + + @ybins.setter + def ybins(self, val): + self["ybins"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def ygap(self): + """ + Sets the vertical gap (in pixels) between bricks. + + The 'ygap' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ygap"] + + @ygap.setter + def ygap(self, val): + self["ygap"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the aggregation data. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zhoverformat(self): + """ + 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. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsmooth(self): + """ + Picks a smoothing algorithm use to smooth `z` data. + + The 'zsmooth' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fast', 'best', False] + + Returns + ------- + Any + """ + return self["zsmooth"] + + @zsmooth.setter + def zsmooth(self, val): + self["zsmooth"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2d.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2d.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram2d.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2d.Stream` + instance or dict with compatible properties + textfont + Sets the text font. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Finally, the template string has access + to variable `z` + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2d.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2d.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autobinx=None, + autobiny=None, + autocolorscale=None, + bingroup=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + textfont=None, + texttemplate=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xbingroup=None, + xbins=None, + xcalendar=None, + xgap=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybingroup=None, + ybins=None, + ycalendar=None, + ygap=None, + yhoverformat=None, + ysrc=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zsmooth=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Histogram2d object + + The sample data from which statistics are computed is set in + `x` and `y` (where `x` and `y` represent marginal + distributions, binning is set in `xbins` and `ybins` in this + case) or `z` (where `z` represent the 2D distribution and + binning set, binning is set by `x` and `y` in this case). The + resulting distribution is visualized as a heatmap. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Histogram2d` + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2d.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2d.Legendgrouptit + le` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.histogram2d.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2d.Stream` + instance or dict with compatible properties + textfont + Sets the text font. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Finally, the template string has access + to variable `z` + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2d.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xgap + Sets the horizontal gap (in pixels) between bricks. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2d.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + ygap + Sets the vertical gap (in pixels) between bricks. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsmooth + Picks a smoothing algorithm use to smooth `z` data. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Histogram2d + """ + super().__init__("histogram2d") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Histogram2d +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Histogram2d`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autobinx", arg, autobinx) + self._set_property("autobiny", arg, autobiny) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("bingroup", arg, bingroup) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("histfunc", arg, histfunc) + self._set_property("histnorm", arg, histnorm) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("nbinsx", arg, nbinsx) + self._set_property("nbinsy", arg, nbinsy) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("textfont", arg, textfont) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xaxis", arg, xaxis) + self._set_property("xbingroup", arg, xbingroup) + self._set_property("xbins", arg, xbins) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xgap", arg, xgap) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yaxis", arg, yaxis) + self._set_property("ybingroup", arg, ybingroup) + self._set_property("ybins", arg, ybins) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("ygap", arg, ygap) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsmooth", arg, zsmooth) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "histogram2d" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2dcontour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2dcontour.py new file mode 100644 index 0000000..2cfc1ed --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_histogram2dcontour.py @@ -0,0 +1,2422 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Histogram2dContour(_BaseTraceType): + _parent_path_str = "" + _path_str = "histogram2dcontour" + _valid_props = { + "autobinx", + "autobiny", + "autocolorscale", + "autocontour", + "bingroup", + "coloraxis", + "colorbar", + "colorscale", + "contours", + "customdata", + "customdatasrc", + "histfunc", + "histnorm", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "name", + "nbinsx", + "nbinsy", + "ncontours", + "opacity", + "reversescale", + "showlegend", + "showscale", + "stream", + "textfont", + "texttemplate", + "type", + "uid", + "uirevision", + "visible", + "x", + "xaxis", + "xbingroup", + "xbins", + "xcalendar", + "xhoverformat", + "xsrc", + "y", + "yaxis", + "ybingroup", + "ybins", + "ycalendar", + "yhoverformat", + "ysrc", + "z", + "zauto", + "zhoverformat", + "zmax", + "zmid", + "zmin", + "zsrc", + } + + @property + def autobinx(self): + """ + 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. + + The 'autobinx' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autobinx"] + + @autobinx.setter + def autobinx(self, val): + self["autobinx"] = val + + @property + def autobiny(self): + """ + 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. + + The 'autobiny' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autobiny"] + + @autobiny.setter + def autobiny(self, val): + self["autobiny"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def autocontour(self): + """ + 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`. + + The 'autocontour' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocontour"] + + @autocontour.setter + def autocontour(self, val): + self["autocontour"] = val + + @property + def bingroup(self): + """ + 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. + + The 'bingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["bingroup"] + + @bingroup.setter + def bingroup(self, val): + self["bingroup"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def contours(self): + """ + The 'contours' property is an instance of Contours + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Contours` + - A dict of string/value properties that will be passed + to the Contours constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Contours + """ + return self["contours"] + + @contours.setter + def contours(self, val): + self["contours"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def histfunc(self): + """ + 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. + + The 'histfunc' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['count', 'sum', 'avg', 'min', 'max'] + + Returns + ------- + Any + """ + return self["histfunc"] + + @histfunc.setter + def histfunc(self, val): + self["histfunc"] = val + + @property + def histnorm(self): + """ + 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). + + The 'histnorm' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', 'percent', 'probability', 'density', 'probability + density'] + + Returns + ------- + Any + """ + return self["histnorm"] + + @histnorm.setter + def histnorm(self, val): + self["histnorm"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def nbinsx(self): + """ + 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. + + The 'nbinsx' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nbinsx"] + + @nbinsx.setter + def nbinsx(self, val): + self["nbinsx"] = val + + @property + def nbinsy(self): + """ + 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. + + The 'nbinsy' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nbinsy"] + + @nbinsy.setter + def nbinsy(self, val): + self["nbinsy"] = val + + @property + def ncontours(self): + """ + 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. + + The 'ncontours' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ncontours"] + + @ncontours.setter + def ncontours(self, val): + self["ncontours"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def textfont(self): + """ + For this trace it only has an effect if `coloring` is set to + "heatmap". Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def texttemplate(self): + """ + For this trace it only has an effect if `coloring` is set to + "heatmap". Template string used for rendering the information + text that appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the sample data to be binned on the x axis. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xbingroup(self): + """ + 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` + + The 'xbingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xbingroup"] + + @xbingroup.setter + def xbingroup(self, val): + self["xbingroup"] = val + + @property + def xbins(self): + """ + The 'xbins' property is an instance of XBins + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.XBins` + - A dict of string/value properties that will be passed + to the XBins constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.XBins + """ + return self["xbins"] + + @xbins.setter + def xbins(self, val): + self["xbins"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the sample data to be binned on the y axis. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ybingroup(self): + """ + 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` + + The 'ybingroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ybingroup"] + + @ybingroup.setter + def ybingroup(self, val): + self["ybingroup"] = val + + @property + def ybins(self): + """ + The 'ybins' property is an instance of YBins + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.YBins` + - A dict of string/value properties that will be passed + to the YBins constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.YBins + """ + return self["ybins"] + + @ybins.setter + def ybins(self, val): + self["ybins"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the aggregation data. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zauto(self): + """ + 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. + + The 'zauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zauto"] + + @zauto.setter + def zauto(self, val): + self["zauto"] = val + + @property + def zhoverformat(self): + """ + 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. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zmax(self): + """ + 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. + + The 'zmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmid(self): + """ + 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`. + + The 'zmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmid"] + + @zmid.setter + def zmid(self, val): + self["zmid"] = val + + @property + def zmin(self): + """ + 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. + + The 'zmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + autocontour + 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`. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2dcontour.ColorBa + r` instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.histogram2dcontour.Contour + s` instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2dcontour.Hoverla + bel` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2dcontour.Legendg + rouptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.histogram2dcontour.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.histogram2dcontour.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2dcontour.Stream` + instance or dict with compatible properties + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2dcontour.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2dcontour.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autobinx=None, + autobiny=None, + autocolorscale=None, + autocontour=None, + bingroup=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contours=None, + customdata=None, + customdatasrc=None, + histfunc=None, + histnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + name=None, + nbinsx=None, + nbinsy=None, + ncontours=None, + opacity=None, + reversescale=None, + showlegend=None, + showscale=None, + stream=None, + textfont=None, + texttemplate=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xbingroup=None, + xbins=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + yaxis=None, + ybingroup=None, + ybins=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zauto=None, + zhoverformat=None, + zmax=None, + zmid=None, + zmin=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Histogram2dContour object + + The sample data from which statistics are computed is set in + `x` and `y` (where `x` and `y` represent marginal + distributions, binning is set in `xbins` and `ybins` in this + case) or `z` (where `z` represent the 2D distribution and + binning set, binning is set by `x` and `y` in this case). The + resulting distribution is visualized as a contour plot. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.Histogram2dContour` + autobinx + 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. + autobiny + 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. + autocolorscale + 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. + autocontour + 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`. + bingroup + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram2dcontour.ColorBa + r` instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contours + :class:`plotly.graph_objects.histogram2dcontour.Contour + s` instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + histfunc + 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. + histnorm + 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). + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.histogram2dcontour.Hoverla + bel` instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.histogram2dcontour.Legendg + rouptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.histogram2dcontour.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.histogram2dcontour.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + nbinsx + 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. + nbinsy + 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. + ncontours + 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. + opacity + Sets the opacity of the trace. + reversescale + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.histogram2dcontour.Stream` + instance or dict with compatible properties + textfont + For this trace it only has an effect if `coloring` is + set to "heatmap". Sets the text font. + texttemplate + For this trace it only has an effect if `coloring` is + set to "heatmap". Template string used for rendering + the information text that appear 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. Every 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`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the sample data to be binned on the x axis. + xaxis + 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. + xbingroup + 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` + xbins + :class:`plotly.graph_objects.histogram2dcontour.XBins` + instance or dict with compatible properties + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the sample data to be binned on the y axis. + yaxis + 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. + ybingroup + 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` + ybins + :class:`plotly.graph_objects.histogram2dcontour.YBins` + instance or dict with compatible properties + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the aggregation data. + zauto + 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. + zhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + zmax + 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. + zmid + 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`. + zmin + 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. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Histogram2dContour + """ + super().__init__("histogram2dcontour") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Histogram2dContour +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Histogram2dContour`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autobinx", arg, autobinx) + self._set_property("autobiny", arg, autobiny) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("autocontour", arg, autocontour) + self._set_property("bingroup", arg, bingroup) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("contours", arg, contours) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("histfunc", arg, histfunc) + self._set_property("histnorm", arg, histnorm) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("nbinsx", arg, nbinsx) + self._set_property("nbinsy", arg, nbinsy) + self._set_property("ncontours", arg, ncontours) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("textfont", arg, textfont) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xaxis", arg, xaxis) + self._set_property("xbingroup", arg, xbingroup) + self._set_property("xbins", arg, xbins) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yaxis", arg, yaxis) + self._set_property("ybingroup", arg, ybingroup) + self._set_property("ybins", arg, ybins) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zauto", arg, zauto) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zmax", arg, zmax) + self._set_property("zmid", arg, zmid) + self._set_property("zmin", arg, zmin) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "histogram2dcontour" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_icicle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_icicle.py new file mode 100644 index 0000000..94d4919 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_icicle.py @@ -0,0 +1,1765 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Icicle(_BaseTraceType): + _parent_path_str = "" + _path_str = "icicle" + _valid_props = { + "branchvalues", + "count", + "customdata", + "customdatasrc", + "domain", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextfont", + "labels", + "labelssrc", + "leaf", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "level", + "marker", + "maxdepth", + "meta", + "metasrc", + "name", + "opacity", + "outsidetextfont", + "parents", + "parentssrc", + "pathbar", + "root", + "sort", + "stream", + "text", + "textfont", + "textinfo", + "textposition", + "textsrc", + "texttemplate", + "texttemplatesrc", + "tiling", + "type", + "uid", + "uirevision", + "values", + "valuessrc", + "visible", + } + + @property + def branchvalues(self): + """ + 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. + + The 'branchvalues' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['remainder', 'total'] + + Returns + ------- + Any + """ + return self["branchvalues"] + + @branchvalues.setter + def branchvalues(self, val): + self["branchvalues"] = val + + @property + def count(self): + """ + Determines default for `values` when it is not provided, by + inferring a 1 for each of the "leaves" and/or "branches", + otherwise 0. + + The 'count' property is a flaglist and may be specified + as a string containing: + - Any combination of ['branches', 'leaves'] joined with '+' characters + (e.g. 'branches+leaves') + + Returns + ------- + Any + """ + return self["count"] + + @count.setter + def count(self, val): + self["count"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.icicle.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'name', 'current path', 'percent root', 'percent entry', 'percent parent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.icicle.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `textinfo` lying inside the sector. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.icicle.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def labels(self): + """ + Sets the labels of each of the sectors. + + The 'labels' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["labels"] + + @labels.setter + def labels(self, val): + self["labels"] = val + + @property + def labelssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `labels`. + + The 'labelssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelssrc"] + + @labelssrc.setter + def labelssrc(self, val): + self["labelssrc"] = val + + @property + def leaf(self): + """ + The 'leaf' property is an instance of Leaf + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Leaf` + - A dict of string/value properties that will be passed + to the Leaf constructor + + Returns + ------- + plotly.graph_objs.icicle.Leaf + """ + return self["leaf"] + + @leaf.setter + def leaf(self, val): + self["leaf"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.icicle.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def level(self): + """ + 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`. + + The 'level' property accepts values of any type + + Returns + ------- + Any + """ + return self["level"] + + @level.setter + def level(self, val): + self["level"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.icicle.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def maxdepth(self): + """ + Sets the number of rendered sectors from any given `level`. Set + `maxdepth` to "-1" to render all the levels in the hierarchy. + + The 'maxdepth' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["maxdepth"] + + @maxdepth.setter + def maxdepth(self, val): + self["maxdepth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def outsidetextfont(self): + """ + 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. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.icicle.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def parents(self): + """ + 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. + + The 'parents' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["parents"] + + @parents.setter + def parents(self, val): + self["parents"] = val + + @property + def parentssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `parents`. + + The 'parentssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["parentssrc"] + + @parentssrc.setter + def parentssrc(self, val): + self["parentssrc"] = val + + @property + def pathbar(self): + """ + The 'pathbar' property is an instance of Pathbar + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Pathbar` + - A dict of string/value properties that will be passed + to the Pathbar constructor + + Returns + ------- + plotly.graph_objs.icicle.Pathbar + """ + return self["pathbar"] + + @pathbar.setter + def pathbar(self, val): + self["pathbar"] = val + + @property + def root(self): + """ + The 'root' property is an instance of Root + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Root` + - A dict of string/value properties that will be passed + to the Root constructor + + Returns + ------- + plotly.graph_objs.icicle.Root + """ + return self["root"] + + @root.setter + def root(self, val): + self["root"] = val + + @property + def sort(self): + """ + Determines whether or not the sectors are reordered from + largest to smallest. + + The 'sort' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["sort"] + + @sort.setter + def sort(self, val): + self["sort"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.icicle.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the font used for `textinfo`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.icicle.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'current path', 'percent root', 'percent entry', 'percent parent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def tiling(self): + """ + The 'tiling' property is an instance of Tiling + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.Tiling` + - A dict of string/value properties that will be passed + to the Tiling constructor + + Returns + ------- + plotly.graph_objs.icicle.Tiling + """ + return self["tiling"] + + @tiling.setter + def tiling(self, val): + self["tiling"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def values(self): + """ + Sets the values associated with each of the sectors. Use with + `branchvalues` to determine how the values are summed. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.icicle.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.icicle.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.icicle.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.icicle.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.icicle.Marker` instance or + dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.icicle.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.icicle.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.icicle.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.icicle.Tiling` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + """ + + def __init__( + self, + arg=None, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + labels=None, + labelssrc=None, + leaf=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + pathbar=None, + root=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + tiling=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Icicle object + + Visualize hierarchal data from leaves (and/or outer branches) + towards root with rectangles. The icicle sectors are determined + by the entries in "labels" or "ids" and in "parents". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Icicle` + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.icicle.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.icicle.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.icicle.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.icicle.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.icicle.Marker` instance or + dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.icicle.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.icicle.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.icicle.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.icicle.Tiling` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + + Returns + ------- + Icicle + """ + super().__init__("icicle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Icicle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Icicle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("branchvalues", arg, branchvalues) + self._set_property("count", arg, count) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("domain", arg, domain) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("labels", arg, labels) + self._set_property("labelssrc", arg, labelssrc) + self._set_property("leaf", arg, leaf) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("level", arg, level) + self._set_property("marker", arg, marker) + self._set_property("maxdepth", arg, maxdepth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("parents", arg, parents) + self._set_property("parentssrc", arg, parentssrc) + self._set_property("pathbar", arg, pathbar) + self._set_property("root", arg, root) + self._set_property("sort", arg, sort) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textposition", arg, textposition) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("tiling", arg, tiling) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + + self._props["type"] = "icicle" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_image.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_image.py new file mode 100644 index 0000000..e0f8afe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_image.py @@ -0,0 +1,1454 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Image(_BaseTraceType): + _parent_path_str = "" + _path_str = "image" + _valid_props = { + "colormodel", + "customdata", + "customdatasrc", + "dx", + "dy", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "meta", + "metasrc", + "name", + "opacity", + "source", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "visible", + "x0", + "xaxis", + "y0", + "yaxis", + "z", + "zmax", + "zmin", + "zorder", + "zsmooth", + "zsrc", + } + + @property + def colormodel(self): + """ + 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`. + + The 'colormodel' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['rgb', 'rgba', 'rgba256', 'hsl', 'hsla'] + + Returns + ------- + Any + """ + return self["colormodel"] + + @colormodel.setter + def colormodel(self, val): + self["colormodel"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Set the pixel's horizontal size. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Set the pixel's vertical size + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'color', 'name', 'text'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.image.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.image.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.image.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.image.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def source(self): + """ + Specifies the data URI of the image to be visualized. The URI + consists of "data:image/[][;base64]," + + The 'source' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["source"] + + @source.setter + def source(self, val): + self["source"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.image.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.image.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + Sets the text elements associated with each z value. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x0(self): + """ + 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 + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def y0(self): + """ + 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. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def z(self): + """ + A 2-dimensional array in which each element is an array of 3 or + 4 numbers representing a color. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zmax(self): + """ + 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]. + + The 'zmax' property is an info array that may be specified as: + + * a list or tuple of 4 elements where: + (0) The 'zmax[0]' property is a number and may be specified as: + - An int or float + (1) The 'zmax[1]' property is a number and may be specified as: + - An int or float + (2) The 'zmax[2]' property is a number and may be specified as: + - An int or float + (3) The 'zmax[3]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["zmax"] + + @zmax.setter + def zmax(self, val): + self["zmax"] = val + + @property + def zmin(self): + """ + 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]. + + The 'zmin' property is an info array that may be specified as: + + * a list or tuple of 4 elements where: + (0) The 'zmin[0]' property is a number and may be specified as: + - An int or float + (1) The 'zmin[1]' property is a number and may be specified as: + - An int or float + (2) The 'zmin[2]' property is a number and may be specified as: + - An int or float + (3) The 'zmin[3]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["zmin"] + + @zmin.setter + def zmin(self, val): + self["zmin"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def zsmooth(self): + """ + Picks a smoothing algorithm used to smooth `z` data. This only + applies for image traces that use the `source` attribute. + + The 'zsmooth' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fast', False] + + Returns + ------- + Any + """ + return self["zsmooth"] + + @zsmooth.setter + def zsmooth(self, val): + self["zsmooth"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + colormodel + 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`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Set the pixel's horizontal size. + dy + Set the pixel's vertical size + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.image.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.image.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + source + Specifies the data URI of the image to be visualized. + The URI consists of "data:image/[][;base64]," + stream + :class:`plotly.graph_objects.image.Stream` instance or + dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x0 + 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 + xaxis + 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. + y0 + 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. + yaxis + 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. + z + A 2-dimensional array in which each element is an array + of 3 or 4 numbers representing a color. + zmax + 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]. + zmin + 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]. + zorder + 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`. + zsmooth + Picks a smoothing algorithm used to smooth `z` data. + This only applies for image traces that use the + `source` attribute. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + colormodel=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + source=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + x0=None, + xaxis=None, + y0=None, + yaxis=None, + z=None, + zmax=None, + zmin=None, + zorder=None, + zsmooth=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Image object + + Display an image, i.e. data on a 2D regular raster. By default, + when an image is displayed in a subplot, its y axis will be + reversed (ie. `autorange: 'reversed'`), constrained to the + domain (ie. `constrain: 'domain'`) and it will have the same + scale as its x axis (ie. `scaleanchor: 'x,`) in order for + pixels to be rendered as squares. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Image` + colormodel + 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`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Set the pixel's horizontal size. + dy + Set the pixel's vertical size + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.image.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.image.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + source + Specifies the data URI of the image to be visualized. + The URI consists of "data:image/[][;base64]," + stream + :class:`plotly.graph_objects.image.Stream` instance or + dict with compatible properties + text + Sets the text elements associated with each z value. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x0 + 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 + xaxis + 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. + y0 + 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. + yaxis + 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. + z + A 2-dimensional array in which each element is an array + of 3 or 4 numbers representing a color. + zmax + 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]. + zmin + 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]. + zorder + 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`. + zsmooth + Picks a smoothing algorithm used to smooth `z` data. + This only applies for image traces that use the + `source` attribute. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Image + """ + super().__init__("image") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Image +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Image`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("colormodel", arg, colormodel) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("source", arg, source) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("z", arg, z) + self._set_property("zmax", arg, zmax) + self._set_property("zmin", arg, zmin) + self._set_property("zorder", arg, zorder) + self._set_property("zsmooth", arg, zsmooth) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "image" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_indicator.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_indicator.py new file mode 100644 index 0000000..ae35450 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_indicator.py @@ -0,0 +1,848 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Indicator(_BaseTraceType): + _parent_path_str = "" + _path_str = "indicator" + _valid_props = { + "align", + "customdata", + "customdatasrc", + "delta", + "domain", + "gauge", + "ids", + "idssrc", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "meta", + "metasrc", + "mode", + "name", + "number", + "stream", + "title", + "type", + "uid", + "uirevision", + "value", + "visible", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def delta(self): + """ + The 'delta' property is an instance of Delta + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Delta` + - A dict of string/value properties that will be passed + to the Delta constructor + + Returns + ------- + plotly.graph_objs.indicator.Delta + """ + return self["delta"] + + @delta.setter + def delta(self, val): + self["delta"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.indicator.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def gauge(self): + """ + The gauge of the Indicator plot. + + The 'gauge' property is an instance of Gauge + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Gauge` + - A dict of string/value properties that will be passed + to the Gauge constructor + + Returns + ------- + plotly.graph_objs.indicator.Gauge + """ + return self["gauge"] + + @gauge.setter + def gauge(self, val): + self["gauge"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.indicator.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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. + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['number', 'delta', 'gauge'] joined with '+' characters + (e.g. 'number+delta') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def number(self): + """ + The 'number' property is an instance of Number + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Number` + - A dict of string/value properties that will be passed + to the Number constructor + + Returns + ------- + plotly.graph_objs.indicator.Number + """ + return self["number"] + + @number.setter + def number(self, val): + self["number"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.indicator.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.indicator.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def value(self): + """ + Sets the number to be displayed. + + The 'value' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + align + 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 + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delta + :class:`plotly.graph_objects.indicator.Delta` instance + or dict with compatible properties + domain + :class:`plotly.graph_objects.indicator.Domain` instance + or dict with compatible properties + gauge + The gauge of the Indicator plot. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.indicator.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + number + :class:`plotly.graph_objects.indicator.Number` instance + or dict with compatible properties + stream + :class:`plotly.graph_objects.indicator.Stream` instance + or dict with compatible properties + title + :class:`plotly.graph_objects.indicator.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the number to be displayed. + visible + 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). + """ + + def __init__( + self, + arg=None, + align=None, + customdata=None, + customdatasrc=None, + delta=None, + domain=None, + gauge=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + mode=None, + name=None, + number=None, + stream=None, + title=None, + uid=None, + uirevision=None, + value=None, + visible=None, + **kwargs, + ): + """ + Construct a new Indicator object + + An indicator is used to visualize a single `value` along with + some contextual information such as `steps` or a `threshold`, + using a combination of three visual elements: a number, a + delta, and/or a gauge. Deltas are taken with respect to a + `reference`. Gauges can be either angular or bullet (aka + linear) gauges. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Indicator` + align + 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 + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delta + :class:`plotly.graph_objects.indicator.Delta` instance + or dict with compatible properties + domain + :class:`plotly.graph_objects.indicator.Domain` instance + or dict with compatible properties + gauge + The gauge of the Indicator plot. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.indicator.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + number + :class:`plotly.graph_objects.indicator.Number` instance + or dict with compatible properties + stream + :class:`plotly.graph_objects.indicator.Stream` instance + or dict with compatible properties + title + :class:`plotly.graph_objects.indicator.Title` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the number to be displayed. + visible + 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). + + Returns + ------- + Indicator + """ + super().__init__("indicator") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Indicator +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Indicator`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("delta", arg, delta) + self._set_property("domain", arg, domain) + self._set_property("gauge", arg, gauge) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("number", arg, number) + self._set_property("stream", arg, stream) + self._set_property("title", arg, title) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("value", arg, value) + self._set_property("visible", arg, visible) + + self._props["type"] = "indicator" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_isosurface.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_isosurface.py new file mode 100644 index 0000000..1705fcf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_isosurface.py @@ -0,0 +1,2161 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Isosurface(_BaseTraceType): + _parent_path_str = "" + _path_str = "isosurface" + _valid_props = { + "autocolorscale", + "caps", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colorscale", + "contour", + "customdata", + "customdatasrc", + "flatshading", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "isomax", + "isomin", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lighting", + "lightposition", + "meta", + "metasrc", + "name", + "opacity", + "reversescale", + "scene", + "showlegend", + "showscale", + "slices", + "spaceframe", + "stream", + "surface", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "value", + "valuehoverformat", + "valuesrc", + "visible", + "x", + "xhoverformat", + "xsrc", + "y", + "yhoverformat", + "ysrc", + "z", + "zhoverformat", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def caps(self): + """ + The 'caps' property is an instance of Caps + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Caps` + - A dict of string/value properties that will be passed + to the Caps constructor + + Returns + ------- + plotly.graph_objs.isosurface.Caps + """ + return self["caps"] + + @caps.setter + def caps(self, val): + self["caps"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.isosurface.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def contour(self): + """ + The 'contour' property is an instance of Contour + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Contour` + - A dict of string/value properties that will be passed + to the Contour constructor + + Returns + ------- + plotly.graph_objs.isosurface.Contour + """ + return self["contour"] + + @contour.setter + def contour(self, val): + self["contour"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def flatshading(self): + """ + Determines whether or not normal smoothing is applied to the + meshes, creating meshes with an angular, low-poly look via flat + reflections. + + The 'flatshading' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["flatshading"] + + @flatshading.setter + def flatshading(self, val): + self["flatshading"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.isosurface.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def isomax(self): + """ + Sets the maximum boundary for iso-surface plot. + + The 'isomax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["isomax"] + + @isomax.setter + def isomax(self, val): + self["isomax"] = val + + @property + def isomin(self): + """ + Sets the minimum boundary for iso-surface plot. + + The 'isomin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["isomin"] + + @isomin.setter + def isomin(self, val): + self["isomin"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.isosurface.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lighting(self): + """ + The 'lighting' property is an instance of Lighting + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Lighting` + - A dict of string/value properties that will be passed + to the Lighting constructor + + Returns + ------- + plotly.graph_objs.isosurface.Lighting + """ + return self["lighting"] + + @lighting.setter + def lighting(self, val): + self["lighting"] = val + + @property + def lightposition(self): + """ + The 'lightposition' property is an instance of Lightposition + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Lightposition` + - A dict of string/value properties that will be passed + to the Lightposition constructor + + Returns + ------- + plotly.graph_objs.isosurface.Lightposition + """ + return self["lightposition"] + + @lightposition.setter + def lightposition(self, val): + self["lightposition"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def slices(self): + """ + The 'slices' property is an instance of Slices + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Slices` + - A dict of string/value properties that will be passed + to the Slices constructor + + Returns + ------- + plotly.graph_objs.isosurface.Slices + """ + return self["slices"] + + @slices.setter + def slices(self, val): + self["slices"] = val + + @property + def spaceframe(self): + """ + The 'spaceframe' property is an instance of Spaceframe + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Spaceframe` + - A dict of string/value properties that will be passed + to the Spaceframe constructor + + Returns + ------- + plotly.graph_objs.isosurface.Spaceframe + """ + return self["spaceframe"] + + @spaceframe.setter + def spaceframe(self, val): + self["spaceframe"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.isosurface.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def surface(self): + """ + The 'surface' property is an instance of Surface + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.Surface` + - A dict of string/value properties that will be passed + to the Surface constructor + + Returns + ------- + plotly.graph_objs.isosurface.Surface + """ + return self["surface"] + + @surface.setter + def surface(self, val): + self["surface"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def value(self): + """ + Sets the 4th dimension (value) of the vertices. + + The 'value' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valuehoverformat(self): + """ + 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. + + The 'valuehoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["valuehoverformat"] + + @valuehoverformat.setter + def valuehoverformat(self, val): + self["valuehoverformat"] = val + + @property + def valuesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `value`. + + The 'valuesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuesrc"] + + @valuesrc.setter + def valuesrc(self, val): + self["valuesrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the X coordinates of the vertices on X axis. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the Y coordinates of the vertices on Y axis. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the Z coordinates of the vertices on Z axis. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + caps + :class:`plotly.graph_objects.isosurface.Caps` instance + or dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.isosurface.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.isosurface.Contour` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.isosurface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.isosurface.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.isosurface.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.isosurface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.isosurface.Slices` + instance or dict with compatible properties + spaceframe + :class:`plotly.graph_objects.isosurface.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.isosurface.Stream` + instance or dict with compatible properties + surface + :class:`plotly.graph_objects.isosurface.Surface` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + caps=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + isomax=None, + isomin=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + slices=None, + spaceframe=None, + stream=None, + surface=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + value=None, + valuehoverformat=None, + valuesrc=None, + visible=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Isosurface object + + Draws isosurfaces between iso-min and iso-max values with + coordinates given by four 1-dimensional arrays containing the + `value`, `x`, `y` and `z` of every vertex of a uniform or non- + uniform 3-D grid. Horizontal or vertical slices, caps as well + as spaceframe between iso-min and iso-max values could also be + drawn using this trace. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Isosurface` + autocolorscale + 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. + caps + :class:`plotly.graph_objects.isosurface.Caps` instance + or dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.isosurface.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.isosurface.Contour` + instance or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.isosurface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.isosurface.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.isosurface.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.isosurface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.isosurface.Slices` + instance or dict with compatible properties + spaceframe + :class:`plotly.graph_objects.isosurface.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.isosurface.Stream` + instance or dict with compatible properties + surface + :class:`plotly.graph_objects.isosurface.Surface` + instance or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Isosurface + """ + super().__init__("isosurface") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Isosurface +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Isosurface`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("caps", arg, caps) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("contour", arg, contour) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("flatshading", arg, flatshading) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("isomax", arg, isomax) + self._set_property("isomin", arg, isomin) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lighting", arg, lighting) + self._set_property("lightposition", arg, lightposition) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("slices", arg, slices) + self._set_property("spaceframe", arg, spaceframe) + self._set_property("stream", arg, stream) + self._set_property("surface", arg, surface) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("value", arg, value) + self._set_property("valuehoverformat", arg, valuehoverformat) + self._set_property("valuesrc", arg, valuesrc) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "isosurface" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_layout.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_layout.py new file mode 100644 index 0000000..2a08e49 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_layout.py @@ -0,0 +1,3507 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutType as _BaseLayoutType +import copy as _copy + + +class Layout(_BaseLayoutType): + _subplotid_prop_names = [ + "coloraxis", + "geo", + "legend", + "map", + "mapbox", + "polar", + "scene", + "smith", + "ternary", + "xaxis", + "yaxis", + ] + + import re + + _subplotid_prop_re = re.compile("^(" + "|".join(_subplotid_prop_names) + r")(\d+)$") + + @property + def _subplotid_validators(self): + """ + dict of validator classes for each subplot type + + Returns + ------- + dict + """ + from plotly.validator_cache import ValidatorCache + + return { + "coloraxis": ValidatorCache.get_validator("layout", "coloraxis"), + "geo": ValidatorCache.get_validator("layout", "geo"), + "legend": ValidatorCache.get_validator("layout", "legend"), + "map": ValidatorCache.get_validator("layout", "map"), + "mapbox": ValidatorCache.get_validator("layout", "mapbox"), + "polar": ValidatorCache.get_validator("layout", "polar"), + "scene": ValidatorCache.get_validator("layout", "scene"), + "smith": ValidatorCache.get_validator("layout", "smith"), + "ternary": ValidatorCache.get_validator("layout", "ternary"), + "xaxis": ValidatorCache.get_validator("layout", "xaxis"), + "yaxis": ValidatorCache.get_validator("layout", "yaxis"), + } + + def _subplot_re_match(self, prop): + return self._subplotid_prop_re.match(prop) + + _parent_path_str = "" + _path_str = "layout" + _valid_props = { + "activeselection", + "activeshape", + "annotationdefaults", + "annotations", + "autosize", + "autotypenumbers", + "barcornerradius", + "bargap", + "bargroupgap", + "barmode", + "barnorm", + "boxgap", + "boxgroupgap", + "boxmode", + "calendar", + "clickmode", + "coloraxis", + "colorscale", + "colorway", + "computed", + "datarevision", + "dragmode", + "editrevision", + "extendfunnelareacolors", + "extendiciclecolors", + "extendpiecolors", + "extendsunburstcolors", + "extendtreemapcolors", + "font", + "funnelareacolorway", + "funnelgap", + "funnelgroupgap", + "funnelmode", + "geo", + "grid", + "height", + "hiddenlabels", + "hiddenlabelssrc", + "hidesources", + "hoverdistance", + "hoverlabel", + "hovermode", + "hoversubplots", + "iciclecolorway", + "imagedefaults", + "images", + "legend", + "map", + "mapbox", + "margin", + "meta", + "metasrc", + "minreducedheight", + "minreducedwidth", + "modebar", + "newselection", + "newshape", + "paper_bgcolor", + "piecolorway", + "plot_bgcolor", + "polar", + "scattergap", + "scattermode", + "scene", + "selectdirection", + "selectiondefaults", + "selectionrevision", + "selections", + "separators", + "shapedefaults", + "shapes", + "showlegend", + "sliderdefaults", + "sliders", + "smith", + "spikedistance", + "sunburstcolorway", + "template", + "ternary", + "title", + "transition", + "treemapcolorway", + "uirevision", + "uniformtext", + "updatemenudefaults", + "updatemenus", + "violingap", + "violingroupgap", + "violinmode", + "waterfallgap", + "waterfallgroupgap", + "waterfallmode", + "width", + "xaxis", + "yaxis", + } + + @property + def activeselection(self): + """ + The 'activeselection' property is an instance of Activeselection + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Activeselection` + - A dict of string/value properties that will be passed + to the Activeselection constructor + + Returns + ------- + plotly.graph_objs.layout.Activeselection + """ + return self["activeselection"] + + @activeselection.setter + def activeselection(self, val): + self["activeselection"] = val + + @property + def activeshape(self): + """ + The 'activeshape' property is an instance of Activeshape + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Activeshape` + - A dict of string/value properties that will be passed + to the Activeshape constructor + + Returns + ------- + plotly.graph_objs.layout.Activeshape + """ + return self["activeshape"] + + @activeshape.setter + def activeshape(self, val): + self["activeshape"] = val + + @property + def annotations(self): + """ + The 'annotations' property is a tuple of instances of + Annotation that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.Annotation + - A list or tuple of dicts of string/value properties that + will be passed to the Annotation constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.Annotation] + """ + return self["annotations"] + + @annotations.setter + def annotations(self, val): + self["annotations"] = val + + @property + def annotationdefaults(self): + """ + When used in a template (as + layout.template.layout.annotationdefaults), sets the default + property values to use for elements of layout.annotations + + The 'annotationdefaults' property is an instance of Annotation + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Annotation` + - A dict of string/value properties that will be passed + to the Annotation constructor + + Returns + ------- + plotly.graph_objs.layout.Annotation + """ + return self["annotationdefaults"] + + @annotationdefaults.setter + def annotationdefaults(self, val): + self["annotationdefaults"] = val + + @property + def autosize(self): + """ + Determines whether or not a layout width or height that has + been left undefined by the user is initialized on each + relayout. Note that, regardless of this attribute, an undefined + layout width or height is always initialized on the first call + to plot. + + The 'autosize' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autosize"] + + @autosize.setter + def autosize(self, val): + self["autosize"] = val + + @property + def autotypenumbers(self): + """ + 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. This is the default value; however it could be + overridden for individual axes. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def barcornerradius(self): + """ + Sets the rounding of bar corners. May be an integer number of + pixels, or a percentage of bar width (as a string ending in %). + + The 'barcornerradius' property accepts values of any type + + Returns + ------- + Any + """ + return self["barcornerradius"] + + @barcornerradius.setter + def barcornerradius(self, val): + self["barcornerradius"] = val + + @property + def bargap(self): + """ + Sets the gap (in plot fraction) between bars of adjacent + location coordinates. + + The 'bargap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["bargap"] + + @bargap.setter + def bargap(self, val): + self["bargap"] = val + + @property + def bargroupgap(self): + """ + Sets the gap (in plot fraction) between bars of the same + location coordinate. + + The 'bargroupgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["bargroupgap"] + + @bargroupgap.setter + def bargroupgap(self, val): + self["bargroupgap"] = val + + @property + def barmode(self): + """ + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are stacked on + top of one another With "relative", the bars are stacked on top + of one another, with negative values below the axis, positive + values above With "group", the bars are plotted next to one + another centered around the shared location. With "overlay", + the bars are plotted over one another, you might need to reduce + "opacity" to see multiple bars. + + The 'barmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['stack', 'group', 'overlay', 'relative'] + + Returns + ------- + Any + """ + return self["barmode"] + + @barmode.setter + def barmode(self, val): + self["barmode"] = val + + @property + def barnorm(self): + """ + Sets the normalization for bar traces on the graph. With + "fraction", the value of each bar is divided by the sum of all + values at that location coordinate. "percent" is the same but + multiplied by 100 to show percentages. + + The 'barnorm' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', 'fraction', 'percent'] + + Returns + ------- + Any + """ + return self["barnorm"] + + @barnorm.setter + def barnorm(self, val): + self["barnorm"] = val + + @property + def boxgap(self): + """ + Sets the gap (in plot fraction) between boxes of adjacent + location coordinates. Has no effect on traces that have "width" + set. + + The 'boxgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["boxgap"] + + @boxgap.setter + def boxgap(self, val): + self["boxgap"] = val + + @property + def boxgroupgap(self): + """ + Sets the gap (in plot fraction) between boxes of the same + location coordinate. Has no effect on traces that have "width" + set. + + The 'boxgroupgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["boxgroupgap"] + + @boxgroupgap.setter + def boxgroupgap(self, val): + self["boxgroupgap"] = val + + @property + def boxmode(self): + """ + Determines how boxes at the same location coordinate are + displayed on the graph. If "group", the boxes are plotted next + to one another centered around the shared location. If + "overlay", the boxes are plotted over one another, you might + need to set "opacity" to see them multiple boxes. Has no effect + on traces that have "width" set. + + The 'boxmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['group', 'overlay'] + + Returns + ------- + Any + """ + return self["boxmode"] + + @boxmode.setter + def boxmode(self, val): + self["boxmode"] = val + + @property + def calendar(self): + """ + Sets the default calendar system to use for interpreting and + displaying dates throughout the plot. + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def clickmode(self): + """ + Determines the mode of single click interactions. "event" is + the default value and emits the `plotly_click` event. In + addition this mode emits the `plotly_selected` event in drag + modes "lasso" and "select", but with no event data attached + (kept for compatibility reasons). The "select" flag enables + selecting single data points via click. This mode also supports + persistent selections, meaning that pressing Shift while + clicking, adds to / subtracts from an existing selection. + "select" with `hovermode`: "x" can be confusing, consider + explicitly setting `hovermode`: "closest" when using this + feature. Selection events are sent accordingly as long as + "event" flag is set as well. When the "event" flag is missing, + `plotly_click` and `plotly_selected` events are not fired. + + The 'clickmode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['event', 'select'] joined with '+' characters + (e.g. 'event+select') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["clickmode"] + + @clickmode.setter + def clickmode(self, val): + self["clickmode"] = val + + @property + def coloraxis(self): + """ + The 'coloraxis' property is an instance of Coloraxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Coloraxis` + - A dict of string/value properties that will be passed + to the Coloraxis constructor + + Returns + ------- + plotly.graph_objs.layout.Coloraxis + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + The 'colorscale' property is an instance of Colorscale + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Colorscale` + - A dict of string/value properties that will be passed + to the Colorscale constructor + + Returns + ------- + plotly.graph_objs.layout.Colorscale + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorway(self): + """ + Sets the default trace colors. + + The 'colorway' property is a colorlist that may be specified + as a tuple, list, one-dimensional numpy array, or pandas Series of valid + color strings + + Returns + ------- + list + """ + return self["colorway"] + + @colorway.setter + def colorway(self, val): + self["colorway"] = val + + @property + def computed(self): + """ + Placeholder for exporting automargin-impacting values namely + `margin.t`, `margin.b`, `margin.l` and `margin.r` in "full- + json" mode. + + The 'computed' property accepts values of any type + + Returns + ------- + Any + """ + return self["computed"] + + @computed.setter + def computed(self, val): + self["computed"] = val + + @property + def datarevision(self): + """ + If provided, a changed value tells `Plotly.react` that one or + more data arrays has changed. This way you can modify arrays + in-place rather than making a complete new copy for an + incremental change. If NOT provided, `Plotly.react` assumes + that data arrays are being treated as immutable, thus any data + array with a different identity from its predecessor contains + new data. + + The 'datarevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["datarevision"] + + @datarevision.setter + def datarevision(self, val): + self["datarevision"] = val + + @property + def dragmode(self): + """ + Determines the mode of drag interactions. "select" and "lasso" + apply only to scatter traces with markers or text. "orbit" and + "turntable" apply only to 3D scenes. + + The 'dragmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['zoom', 'pan', 'select', 'lasso', 'drawclosedpath', + 'drawopenpath', 'drawline', 'drawrect', 'drawcircle', + 'orbit', 'turntable', False] + + Returns + ------- + Any + """ + return self["dragmode"] + + @dragmode.setter + def dragmode(self, val): + self["dragmode"] = val + + @property + def editrevision(self): + """ + Controls persistence of user-driven changes in `editable: true` + configuration, other than trace names and axis titles. Defaults + to `layout.uirevision`. + + The 'editrevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["editrevision"] + + @editrevision.setter + def editrevision(self, val): + self["editrevision"] = val + + @property + def extendfunnelareacolors(self): + """ + If `true`, the funnelarea slice colors (whether given by + `funnelareacolorway` or inherited from `colorway`) will be + extended to three times its original length by first repeating + every color 20% lighter then each color 20% darker. This is + intended to reduce the likelihood of reusing the same color + when you have many slices, but you can set `false` to disable. + Colors provided in the trace, using `marker.colors`, are never + extended. + + The 'extendfunnelareacolors' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["extendfunnelareacolors"] + + @extendfunnelareacolors.setter + def extendfunnelareacolors(self, val): + self["extendfunnelareacolors"] = val + + @property + def extendiciclecolors(self): + """ + If `true`, the icicle slice colors (whether given by + `iciclecolorway` or inherited from `colorway`) will be extended + to three times its original length by first repeating every + color 20% lighter then each color 20% darker. This is intended + to reduce the likelihood of reusing the same color when you + have many slices, but you can set `false` to disable. Colors + provided in the trace, using `marker.colors`, are never + extended. + + The 'extendiciclecolors' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["extendiciclecolors"] + + @extendiciclecolors.setter + def extendiciclecolors(self, val): + self["extendiciclecolors"] = val + + @property + def extendpiecolors(self): + """ + If `true`, the pie slice colors (whether given by `piecolorway` + or inherited from `colorway`) will be extended to three times + its original length by first repeating every color 20% lighter + then each color 20% darker. This is intended to reduce the + likelihood of reusing the same color when you have many slices, + but you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + + The 'extendpiecolors' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["extendpiecolors"] + + @extendpiecolors.setter + def extendpiecolors(self, val): + self["extendpiecolors"] = val + + @property + def extendsunburstcolors(self): + """ + If `true`, the sunburst slice colors (whether given by + `sunburstcolorway` or inherited from `colorway`) will be + extended to three times its original length by first repeating + every color 20% lighter then each color 20% darker. This is + intended to reduce the likelihood of reusing the same color + when you have many slices, but you can set `false` to disable. + Colors provided in the trace, using `marker.colors`, are never + extended. + + The 'extendsunburstcolors' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["extendsunburstcolors"] + + @extendsunburstcolors.setter + def extendsunburstcolors(self, val): + self["extendsunburstcolors"] = val + + @property + def extendtreemapcolors(self): + """ + If `true`, the treemap slice colors (whether given by + `treemapcolorway` or inherited from `colorway`) will be + extended to three times its original length by first repeating + every color 20% lighter then each color 20% darker. This is + intended to reduce the likelihood of reusing the same color + when you have many slices, but you can set `false` to disable. + Colors provided in the trace, using `marker.colors`, are never + extended. + + The 'extendtreemapcolors' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["extendtreemapcolors"] + + @extendtreemapcolors.setter + def extendtreemapcolors(self, val): + self["extendtreemapcolors"] = val + + @property + def font(self): + """ + Sets the global font. Note that fonts used in traces and other + layout components inherit from the global font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def funnelareacolorway(self): + """ + Sets the default funnelarea 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 `extendfunnelareacolors`. + + The 'funnelareacolorway' property is a colorlist that may be specified + as a tuple, list, one-dimensional numpy array, or pandas Series of valid + color strings + + Returns + ------- + list + """ + return self["funnelareacolorway"] + + @funnelareacolorway.setter + def funnelareacolorway(self, val): + self["funnelareacolorway"] = val + + @property + def funnelgap(self): + """ + Sets the gap (in plot fraction) between bars of adjacent + location coordinates. + + The 'funnelgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["funnelgap"] + + @funnelgap.setter + def funnelgap(self, val): + self["funnelgap"] = val + + @property + def funnelgroupgap(self): + """ + Sets the gap (in plot fraction) between bars of the same + location coordinate. + + The 'funnelgroupgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["funnelgroupgap"] + + @funnelgroupgap.setter + def funnelgroupgap(self, val): + self["funnelgroupgap"] = val + + @property + def funnelmode(self): + """ + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are stacked on + top of one another With "group", the bars are plotted next to + one another centered around the shared location. With + "overlay", the bars are plotted over one another, you might + need to reduce "opacity" to see multiple bars. + + The 'funnelmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['stack', 'group', 'overlay'] + + Returns + ------- + Any + """ + return self["funnelmode"] + + @funnelmode.setter + def funnelmode(self, val): + self["funnelmode"] = val + + @property + def geo(self): + """ + The 'geo' property is an instance of Geo + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Geo` + - A dict of string/value properties that will be passed + to the Geo constructor + + Returns + ------- + plotly.graph_objs.layout.Geo + """ + return self["geo"] + + @geo.setter + def geo(self, val): + self["geo"] = val + + @property + def grid(self): + """ + The 'grid' property is an instance of Grid + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Grid` + - A dict of string/value properties that will be passed + to the Grid constructor + + Returns + ------- + plotly.graph_objs.layout.Grid + """ + return self["grid"] + + @grid.setter + def grid(self, val): + self["grid"] = val + + @property + def height(self): + """ + Sets the plot's height (in px). + + The 'height' property is a number and may be specified as: + - An int or float in the interval [10, inf] + + Returns + ------- + int|float + """ + return self["height"] + + @height.setter + def height(self, val): + self["height"] = val + + @property + def hiddenlabels(self): + """ + 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 + + The 'hiddenlabels' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["hiddenlabels"] + + @hiddenlabels.setter + def hiddenlabels(self, val): + self["hiddenlabels"] = val + + @property + def hiddenlabelssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hiddenlabels`. + + The 'hiddenlabelssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hiddenlabelssrc"] + + @hiddenlabelssrc.setter + def hiddenlabelssrc(self, val): + self["hiddenlabelssrc"] = val + + @property + def hidesources(self): + """ + 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). + + The 'hidesources' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["hidesources"] + + @hidesources.setter + def hidesources(self, val): + self["hidesources"] = val + + @property + def hoverdistance(self): + """ + Sets the default distance (in pixels) to look for data to add + hover labels (-1 means no cutoff, 0 means no looking for data). + This is only a real distance for hovering on point-like + objects, like scatter points. For area-like objects (bars, + scatter fills, etc) hovering is on inside the area and off + outside, but these objects will not supersede hover on point- + like objects in case of conflict. + + The 'hoverdistance' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + + Returns + ------- + int + """ + return self["hoverdistance"] + + @hoverdistance.setter + def hoverdistance(self, val): + self["hoverdistance"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.layout.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovermode(self): + """ + Determines the mode of hover interactions. If "closest", a + single hoverlabel will appear for the "closest" point within + the `hoverdistance`. If "x" (or "y"), multiple hoverlabels will + appear for multiple points at the "closest" x- (or y-) + coordinate within the `hoverdistance`, with the caveat that no + more than one hoverlabel will appear per trace. If *x unified* + (or *y unified*), a single hoverlabel will appear multiple + points at the closest x- (or y-) coordinate within the + `hoverdistance` with the caveat that no more than one + hoverlabel will appear per trace. In this mode, spikelines are + enabled by default perpendicular to the specified axis. If + false, hover interactions are disabled. + + The 'hovermode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['x', 'y', 'closest', False, 'x unified', 'y unified'] + + Returns + ------- + Any + """ + return self["hovermode"] + + @hovermode.setter + def hovermode(self, val): + self["hovermode"] = val + + @property + def hoversubplots(self): + """ + Determines expansion of hover effects to other subplots If + "single" just the axis pair of the primary point is included + without overlaying subplots. If "overlaying" all subplots using + the main axis and occupying the same space are included. If + "axis", also include stacked subplots using the same axis when + `hovermode` is set to "x", *x unified*, "y" or *y unified*. + + The 'hoversubplots' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['single', 'overlaying', 'axis'] + + Returns + ------- + Any + """ + return self["hoversubplots"] + + @hoversubplots.setter + def hoversubplots(self, val): + self["hoversubplots"] = val + + @property + def iciclecolorway(self): + """ + Sets the default icicle 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 `extendiciclecolors`. + + The 'iciclecolorway' property is a colorlist that may be specified + as a tuple, list, one-dimensional numpy array, or pandas Series of valid + color strings + + Returns + ------- + list + """ + return self["iciclecolorway"] + + @iciclecolorway.setter + def iciclecolorway(self, val): + self["iciclecolorway"] = val + + @property + def images(self): + """ + The 'images' property is a tuple of instances of + Image that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.Image + - A list or tuple of dicts of string/value properties that + will be passed to the Image constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.Image] + """ + return self["images"] + + @images.setter + def images(self, val): + self["images"] = val + + @property + def imagedefaults(self): + """ + When used in a template (as + layout.template.layout.imagedefaults), sets the default + property values to use for elements of layout.images + + The 'imagedefaults' property is an instance of Image + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Image` + - A dict of string/value properties that will be passed + to the Image constructor + + Returns + ------- + plotly.graph_objs.layout.Image + """ + return self["imagedefaults"] + + @imagedefaults.setter + def imagedefaults(self, val): + self["imagedefaults"] = val + + @property + def legend(self): + """ + The 'legend' property is an instance of Legend + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Legend` + - A dict of string/value properties that will be passed + to the Legend constructor + + Returns + ------- + plotly.graph_objs.layout.Legend + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def map(self): + """ + The 'map' property is an instance of Map + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Map` + - A dict of string/value properties that will be passed + to the Map constructor + + Returns + ------- + plotly.graph_objs.layout.Map + """ + return self["map"] + + @map.setter + def map(self, val): + self["map"] = val + + @property + def mapbox(self): + """ + The 'mapbox' property is an instance of Mapbox + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Mapbox` + - A dict of string/value properties that will be passed + to the Mapbox constructor + + Returns + ------- + plotly.graph_objs.layout.Mapbox + """ + return self["mapbox"] + + @mapbox.setter + def mapbox(self, val): + self["mapbox"] = val + + @property + def margin(self): + """ + The 'margin' property is an instance of Margin + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Margin` + - A dict of string/value properties that will be passed + to the Margin constructor + + Returns + ------- + plotly.graph_objs.layout.Margin + """ + return self["margin"] + + @margin.setter + def margin(self, val): + self["margin"] = val + + @property + def meta(self): + """ + Assigns extra meta information that can be used in various + `text` attributes. Attributes such as the graph, axis and + colorbar `title.text`, annotation `text` `trace.name` in legend + items, `rangeselector`, `updatemenus` and `sliders` `label` + text all support `meta`. One can access `meta` fields using + template strings: `%{meta[i]}` where `i` is the index of the + `meta` item in question. `meta` can also be an object for + example `{key: value}` which can be accessed %{meta[key]}. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def minreducedheight(self): + """ + Minimum height of the plot with margin.automargin applied (in + px) + + The 'minreducedheight' property is a number and may be specified as: + - An int or float in the interval [2, inf] + + Returns + ------- + int|float + """ + return self["minreducedheight"] + + @minreducedheight.setter + def minreducedheight(self, val): + self["minreducedheight"] = val + + @property + def minreducedwidth(self): + """ + Minimum width of the plot with margin.automargin applied (in + px) + + The 'minreducedwidth' property is a number and may be specified as: + - An int or float in the interval [2, inf] + + Returns + ------- + int|float + """ + return self["minreducedwidth"] + + @minreducedwidth.setter + def minreducedwidth(self, val): + self["minreducedwidth"] = val + + @property + def modebar(self): + """ + The 'modebar' property is an instance of Modebar + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Modebar` + - A dict of string/value properties that will be passed + to the Modebar constructor + + Returns + ------- + plotly.graph_objs.layout.Modebar + """ + return self["modebar"] + + @modebar.setter + def modebar(self, val): + self["modebar"] = val + + @property + def newselection(self): + """ + The 'newselection' property is an instance of Newselection + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Newselection` + - A dict of string/value properties that will be passed + to the Newselection constructor + + Returns + ------- + plotly.graph_objs.layout.Newselection + """ + return self["newselection"] + + @newselection.setter + def newselection(self, val): + self["newselection"] = val + + @property + def newshape(self): + """ + The 'newshape' property is an instance of Newshape + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Newshape` + - A dict of string/value properties that will be passed + to the Newshape constructor + + Returns + ------- + plotly.graph_objs.layout.Newshape + """ + return self["newshape"] + + @newshape.setter + def newshape(self, val): + self["newshape"] = val + + @property + def paper_bgcolor(self): + """ + Sets the background color of the paper where the graph is + drawn. + + The 'paper_bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["paper_bgcolor"] + + @paper_bgcolor.setter + def paper_bgcolor(self, val): + self["paper_bgcolor"] = val + + @property + def piecolorway(self): + """ + 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`. + + The 'piecolorway' property is a colorlist that may be specified + as a tuple, list, one-dimensional numpy array, or pandas Series of valid + color strings + + Returns + ------- + list + """ + return self["piecolorway"] + + @piecolorway.setter + def piecolorway(self, val): + self["piecolorway"] = val + + @property + def plot_bgcolor(self): + """ + Sets the background color of the plotting area in-between x and + y axes. + + The 'plot_bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["plot_bgcolor"] + + @plot_bgcolor.setter + def plot_bgcolor(self, val): + self["plot_bgcolor"] = val + + @property + def polar(self): + """ + The 'polar' property is an instance of Polar + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Polar` + - A dict of string/value properties that will be passed + to the Polar constructor + + Returns + ------- + plotly.graph_objs.layout.Polar + """ + return self["polar"] + + @polar.setter + def polar(self, val): + self["polar"] = val + + @property + def scattergap(self): + """ + Sets the gap (in plot fraction) between scatter points of + adjacent location coordinates. Defaults to `bargap`. + + The 'scattergap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["scattergap"] + + @scattergap.setter + def scattergap(self, val): + self["scattergap"] = val + + @property + def scattermode(self): + """ + Determines how scatter points at the same location coordinate + are displayed on the graph. With "group", the scatter points + are plotted next to one another centered around the shared + location. With "overlay", the scatter points are plotted over + one another, you might need to reduce "opacity" to see multiple + scatter points. + + The 'scattermode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['group', 'overlay'] + + Returns + ------- + Any + """ + return self["scattermode"] + + @scattermode.setter + def scattermode(self, val): + self["scattermode"] = val + + @property + def scene(self): + """ + The 'scene' property is an instance of Scene + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Scene` + - A dict of string/value properties that will be passed + to the Scene constructor + + Returns + ------- + plotly.graph_objs.layout.Scene + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def selectdirection(self): + """ + When `dragmode` is set to "select", this limits the selection + of the drag to horizontal, vertical or diagonal. "h" only + allows horizontal selection, "v" only vertical, "d" only + diagonal and "any" sets no limit. + + The 'selectdirection' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v', 'd', 'any'] + + Returns + ------- + Any + """ + return self["selectdirection"] + + @selectdirection.setter + def selectdirection(self, val): + self["selectdirection"] = val + + @property + def selectionrevision(self): + """ + Controls persistence of user-driven changes in selected points + from all traces. + + The 'selectionrevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectionrevision"] + + @selectionrevision.setter + def selectionrevision(self, val): + self["selectionrevision"] = val + + @property + def selections(self): + """ + The 'selections' property is a tuple of instances of + Selection that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.Selection + - A list or tuple of dicts of string/value properties that + will be passed to the Selection constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.Selection] + """ + return self["selections"] + + @selections.setter + def selections(self, val): + self["selections"] = val + + @property + def selectiondefaults(self): + """ + When used in a template (as + layout.template.layout.selectiondefaults), sets the default + property values to use for elements of layout.selections + + The 'selectiondefaults' property is an instance of Selection + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Selection` + - A dict of string/value properties that will be passed + to the Selection constructor + + Returns + ------- + plotly.graph_objs.layout.Selection + """ + return self["selectiondefaults"] + + @selectiondefaults.setter + def selectiondefaults(self, val): + self["selectiondefaults"] = val + + @property + def separators(self): + """ + Sets the decimal and thousand separators. For example, *. * + puts a '.' before decimals and a space between thousands. In + English locales, dflt is ".," but other locales may alter this + default. + + The 'separators' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["separators"] + + @separators.setter + def separators(self, val): + self["separators"] = val + + @property + def shapes(self): + """ + The 'shapes' property is a tuple of instances of + Shape that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.Shape + - A list or tuple of dicts of string/value properties that + will be passed to the Shape constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.Shape] + """ + return self["shapes"] + + @shapes.setter + def shapes(self, val): + self["shapes"] = val + + @property + def shapedefaults(self): + """ + When used in a template (as + layout.template.layout.shapedefaults), sets the default + property values to use for elements of layout.shapes + + The 'shapedefaults' property is an instance of Shape + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Shape` + - A dict of string/value properties that will be passed + to the Shape constructor + + Returns + ------- + plotly.graph_objs.layout.Shape + """ + return self["shapedefaults"] + + @shapedefaults.setter + def shapedefaults(self, val): + self["shapedefaults"] = val + + @property + def showlegend(self): + """ + Determines whether or not a legend is drawn. Default is `true` + if there is a trace to show and any of these: a) Two or more + traces would by default be shown in the legend. b) One pie + trace is shown in the legend. c) One trace is explicitly given + with `showlegend: true`. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def sliders(self): + """ + The 'sliders' property is a tuple of instances of + Slider that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.Slider + - A list or tuple of dicts of string/value properties that + will be passed to the Slider constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.Slider] + """ + return self["sliders"] + + @sliders.setter + def sliders(self, val): + self["sliders"] = val + + @property + def sliderdefaults(self): + """ + When used in a template (as + layout.template.layout.sliderdefaults), sets the default + property values to use for elements of layout.sliders + + The 'sliderdefaults' property is an instance of Slider + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Slider` + - A dict of string/value properties that will be passed + to the Slider constructor + + Returns + ------- + plotly.graph_objs.layout.Slider + """ + return self["sliderdefaults"] + + @sliderdefaults.setter + def sliderdefaults(self, val): + self["sliderdefaults"] = val + + @property + def smith(self): + """ + The 'smith' property is an instance of Smith + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Smith` + - A dict of string/value properties that will be passed + to the Smith constructor + + Returns + ------- + plotly.graph_objs.layout.Smith + """ + return self["smith"] + + @smith.setter + def smith(self, val): + self["smith"] = val + + @property + def spikedistance(self): + """ + Sets the default distance (in pixels) to look for data to draw + spikelines to (-1 means no cutoff, 0 means no looking for + data). As with hoverdistance, distance does not apply to area- + like objects. In addition, some objects can be hovered on but + will not generate spikelines, such as scatter fills. + + The 'spikedistance' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + + Returns + ------- + int + """ + return self["spikedistance"] + + @spikedistance.setter + def spikedistance(self, val): + self["spikedistance"] = val + + @property + def sunburstcolorway(self): + """ + Sets the default sunburst 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 `extendsunburstcolors`. + + The 'sunburstcolorway' property is a colorlist that may be specified + as a tuple, list, one-dimensional numpy array, or pandas Series of valid + color strings + + Returns + ------- + list + """ + return self["sunburstcolorway"] + + @sunburstcolorway.setter + def sunburstcolorway(self, val): + self["sunburstcolorway"] = val + + @property + def template(self): + """ + Default attributes to be applied to the plot. This should be a + dict with format: `{'layout': layoutTemplate, 'data': + {trace_type: [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the structure of + `figure.layout` and `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` (e.g. 'scatter'). + Alternatively, this may be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are applied + cyclically to traces of each type. Container arrays (eg + `annotations`) have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied to each array + item. But if an item has a `templateitemname` key we look in + the template array for an item with matching `name` and apply + that instead. If no matching `name` is found we mark the item + invisible. Any named template item not referenced is appended + to the end of the array, so this can be used to add a watermark + annotation or a logo image, for example. To omit one of these + items on the plot, make an item with matching + `templateitemname` and `visible: false`. + + The 'template' property is an instance of Template + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Template` + - A dict of string/value properties that will be passed + to the Template constructor + - The name of a registered template where current registered templates + are stored in the plotly.io.templates configuration object. The names + of all registered templates can be retrieved with: + >>> import plotly.io as pio + >>> list(pio.templates) # doctest: +ELLIPSIS + ['ggplot2', 'seaborn', 'simple_white', 'plotly', 'plotly_white', ...] + + - A string containing multiple registered template names, joined on '+' + characters (e.g. 'template1+template2'). In this case the resulting + template is computed by merging together the collection of registered + templates + + Returns + ------- + plotly.graph_objs.layout.Template + """ + return self["template"] + + @template.setter + def template(self, val): + self["template"] = val + + @property + def ternary(self): + """ + The 'ternary' property is an instance of Ternary + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Ternary` + - A dict of string/value properties that will be passed + to the Ternary constructor + + Returns + ------- + plotly.graph_objs.layout.Ternary + """ + return self["ternary"] + + @ternary.setter + def ternary(self, val): + self["ternary"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def transition(self): + """ + Sets transition options used during Plotly.react updates. + + The 'transition' property is an instance of Transition + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Transition` + - A dict of string/value properties that will be passed + to the Transition constructor + + Returns + ------- + plotly.graph_objs.layout.Transition + """ + return self["transition"] + + @transition.setter + def transition(self, val): + self["transition"] = val + + @property + def treemapcolorway(self): + """ + Sets the default treemap 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 `extendtreemapcolors`. + + The 'treemapcolorway' property is a colorlist that may be specified + as a tuple, list, one-dimensional numpy array, or pandas Series of valid + color strings + + Returns + ------- + list + """ + return self["treemapcolorway"] + + @treemapcolorway.setter + def treemapcolorway(self, val): + self["treemapcolorway"] = val + + @property + def uirevision(self): + """ + Used to allow user interactions with the plot to persist after + `Plotly.react` calls that are unaware of these interactions. If + `uirevision` is omitted, or if it is given and it changed from + the previous `Plotly.react` call, the exact new figure is used. + If `uirevision` is truthy and did NOT change, any attribute + that has been affected by user interactions and did not receive + a different value in the new figure will keep the interaction + value. `layout.uirevision` attribute serves as the default for + `uirevision` attributes in various sub-containers. For finer + control you can set these sub-attributes directly. For example, + if your app separately controls the data on the x and y axes + you might set `xaxis.uirevision=*time*` and + `yaxis.uirevision=*cost*`. Then if only the y data is changed, + you can update `yaxis.uirevision=*quantity*` and the y axis + range will reset but the x axis range will retain any user- + driven zoom. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def uniformtext(self): + """ + The 'uniformtext' property is an instance of Uniformtext + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Uniformtext` + - A dict of string/value properties that will be passed + to the Uniformtext constructor + + Returns + ------- + plotly.graph_objs.layout.Uniformtext + """ + return self["uniformtext"] + + @uniformtext.setter + def uniformtext(self, val): + self["uniformtext"] = val + + @property + def updatemenus(self): + """ + The 'updatemenus' property is a tuple of instances of + Updatemenu that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.Updatemenu + - A list or tuple of dicts of string/value properties that + will be passed to the Updatemenu constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.Updatemenu] + """ + return self["updatemenus"] + + @updatemenus.setter + def updatemenus(self, val): + self["updatemenus"] = val + + @property + def updatemenudefaults(self): + """ + When used in a template (as + layout.template.layout.updatemenudefaults), sets the default + property values to use for elements of layout.updatemenus + + The 'updatemenudefaults' property is an instance of Updatemenu + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.Updatemenu` + - A dict of string/value properties that will be passed + to the Updatemenu constructor + + Returns + ------- + plotly.graph_objs.layout.Updatemenu + """ + return self["updatemenudefaults"] + + @updatemenudefaults.setter + def updatemenudefaults(self, val): + self["updatemenudefaults"] = val + + @property + def violingap(self): + """ + Sets the gap (in plot fraction) between violins of adjacent + location coordinates. Has no effect on traces that have "width" + set. + + The 'violingap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["violingap"] + + @violingap.setter + def violingap(self, val): + self["violingap"] = val + + @property + def violingroupgap(self): + """ + Sets the gap (in plot fraction) between violins of the same + location coordinate. Has no effect on traces that have "width" + set. + + The 'violingroupgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["violingroupgap"] + + @violingroupgap.setter + def violingroupgap(self, val): + self["violingroupgap"] = val + + @property + def violinmode(self): + """ + Determines how violins at the same location coordinate are + displayed on the graph. If "group", the violins are plotted + next to one another centered around the shared location. If + "overlay", the violins are plotted over one another, you might + need to set "opacity" to see them multiple violins. Has no + effect on traces that have "width" set. + + The 'violinmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['group', 'overlay'] + + Returns + ------- + Any + """ + return self["violinmode"] + + @violinmode.setter + def violinmode(self, val): + self["violinmode"] = val + + @property + def waterfallgap(self): + """ + Sets the gap (in plot fraction) between bars of adjacent + location coordinates. + + The 'waterfallgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["waterfallgap"] + + @waterfallgap.setter + def waterfallgap(self, val): + self["waterfallgap"] = val + + @property + def waterfallgroupgap(self): + """ + Sets the gap (in plot fraction) between bars of the same + location coordinate. + + The 'waterfallgroupgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["waterfallgroupgap"] + + @waterfallgroupgap.setter + def waterfallgroupgap(self, val): + self["waterfallgroupgap"] = val + + @property + def waterfallmode(self): + """ + Determines how bars at the same location coordinate are + displayed on the graph. With "group", the bars are plotted next + to one another centered around the shared location. With + "overlay", the bars are plotted over one another, you might + need to reduce "opacity" to see multiple bars. + + The 'waterfallmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['group', 'overlay'] + + Returns + ------- + Any + """ + return self["waterfallmode"] + + @waterfallmode.setter + def waterfallmode(self, val): + self["waterfallmode"] = val + + @property + def width(self): + """ + Sets the plot's width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [10, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def xaxis(self): + """ + The 'xaxis' property is an instance of XAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.XAxis` + - A dict of string/value properties that will be passed + to the XAxis constructor + + Returns + ------- + plotly.graph_objs.layout.XAxis + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def yaxis(self): + """ + The 'yaxis' property is an instance of YAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.YAxis` + - A dict of string/value properties that will be passed + to the YAxis constructor + + Returns + ------- + plotly.graph_objs.layout.YAxis + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def _prop_descriptions(self): + return """\ + activeselection + :class:`plotly.graph_objects.layout.Activeselection` + instance or dict with compatible properties + activeshape + :class:`plotly.graph_objects.layout.Activeshape` + instance or dict with compatible properties + annotations + A tuple of + :class:`plotly.graph_objects.layout.Annotation` + instances or dicts with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), sets the + default property values to use for elements of + layout.annotations + autosize + Determines whether or not a layout width or height that + has been left undefined by the user is initialized on + each relayout. Note that, regardless of this attribute, + an undefined layout width or height is always + initialized on the first call to plot. + autotypenumbers + 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. This is the default + value; however it could be overridden for individual + axes. + barcornerradius + Sets the rounding of bar corners. May be an integer + number of pixels, or a percentage of bar width (as a + string ending in %). + bargap + Sets the gap (in plot fraction) between bars of + adjacent location coordinates. + bargroupgap + Sets the gap (in plot fraction) between bars of the + same location coordinate. + barmode + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are + stacked on top of one another With "relative", the bars + are stacked on top of one another, with negative values + below the axis, positive values above With "group", the + bars are plotted next to one another centered around + the shared location. With "overlay", the bars are + plotted over one another, you might need to reduce + "opacity" to see multiple bars. + barnorm + Sets the normalization for bar traces on the graph. + With "fraction", the value of each bar is divided by + the sum of all values at that location coordinate. + "percent" is the same but multiplied by 100 to show + percentages. + boxgap + Sets the gap (in plot fraction) between boxes of + adjacent location coordinates. Has no effect on traces + that have "width" set. + boxgroupgap + Sets the gap (in plot fraction) between boxes of the + same location coordinate. Has no effect on traces that + have "width" set. + boxmode + Determines how boxes at the same location coordinate + are displayed on the graph. If "group", the boxes are + plotted next to one another centered around the shared + location. If "overlay", the boxes are plotted over one + another, you might need to set "opacity" to see them + multiple boxes. Has no effect on traces that have + "width" set. + calendar + Sets the default calendar system to use for + interpreting and displaying dates throughout the plot. + clickmode + Determines the mode of single click interactions. + "event" is the default value and emits the + `plotly_click` event. In addition this mode emits the + `plotly_selected` event in drag modes "lasso" and + "select", but with no event data attached (kept for + compatibility reasons). The "select" flag enables + selecting single data points via click. This mode also + supports persistent selections, meaning that pressing + Shift while clicking, adds to / subtracts from an + existing selection. "select" with `hovermode`: "x" can + be confusing, consider explicitly setting `hovermode`: + "closest" when using this feature. Selection events are + sent accordingly as long as "event" flag is set as + well. When the "event" flag is missing, `plotly_click` + and `plotly_selected` events are not fired. + coloraxis + :class:`plotly.graph_objects.layout.Coloraxis` instance + or dict with compatible properties + colorscale + :class:`plotly.graph_objects.layout.Colorscale` + instance or dict with compatible properties + colorway + Sets the default trace colors. + computed + Placeholder for exporting automargin-impacting values + namely `margin.t`, `margin.b`, `margin.l` and + `margin.r` in "full-json" mode. + datarevision + If provided, a changed value tells `Plotly.react` that + one or more data arrays has changed. This way you can + modify arrays in-place rather than making a complete + new copy for an incremental change. If NOT provided, + `Plotly.react` assumes that data arrays are being + treated as immutable, thus any data array with a + different identity from its predecessor contains new + data. + dragmode + Determines the mode of drag interactions. "select" and + "lasso" apply only to scatter traces with markers or + text. "orbit" and "turntable" apply only to 3D scenes. + editrevision + Controls persistence of user-driven changes in + `editable: true` configuration, other than trace names + and axis titles. Defaults to `layout.uirevision`. + extendfunnelareacolors + If `true`, the funnelarea slice colors (whether given + by `funnelareacolorway` or inherited from `colorway`) + will be extended to three times its original length by + first repeating every color 20% lighter then each color + 20% darker. This is intended to reduce the likelihood + of reusing the same color when you have many slices, + but you can set `false` to disable. Colors provided in + the trace, using `marker.colors`, are never extended. + extendiciclecolors + If `true`, the icicle slice colors (whether given by + `iciclecolorway` or inherited from `colorway`) will be + extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + extendpiecolors + If `true`, the pie slice colors (whether given by + `piecolorway` or inherited from `colorway`) will be + extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + extendsunburstcolors + If `true`, the sunburst slice colors (whether given by + `sunburstcolorway` or inherited from `colorway`) will + be extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + extendtreemapcolors + If `true`, the treemap slice colors (whether given by + `treemapcolorway` or inherited from `colorway`) will be + extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + font + Sets the global font. Note that fonts used in traces + and other layout components inherit from the global + font. + funnelareacolorway + Sets the default funnelarea 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 + `extendfunnelareacolors`. + funnelgap + Sets the gap (in plot fraction) between bars of + adjacent location coordinates. + funnelgroupgap + Sets the gap (in plot fraction) between bars of the + same location coordinate. + funnelmode + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are + stacked on top of one another With "group", the bars + are plotted next to one another centered around the + shared location. With "overlay", the bars are plotted + over one another, you might need to reduce "opacity" to + see multiple bars. + geo + :class:`plotly.graph_objects.layout.Geo` instance or + dict with compatible properties + grid + :class:`plotly.graph_objects.layout.Grid` instance or + dict with compatible properties + height + Sets the plot's height (in px). + hiddenlabels + 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 + hiddenlabelssrc + Sets the source reference on Chart Studio Cloud for + `hiddenlabels`. + hidesources + 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). + hoverdistance + Sets the default distance (in pixels) to look for data + to add hover labels (-1 means no cutoff, 0 means no + looking for data). This is only a real distance for + hovering on point-like objects, like scatter points. + For area-like objects (bars, scatter fills, etc) + hovering is on inside the area and off outside, but + these objects will not supersede hover on point-like + objects in case of conflict. + hoverlabel + :class:`plotly.graph_objects.layout.Hoverlabel` + instance or dict with compatible properties + hovermode + Determines the mode of hover interactions. If + "closest", a single hoverlabel will appear for the + "closest" point within the `hoverdistance`. If "x" (or + "y"), multiple hoverlabels will appear for multiple + points at the "closest" x- (or y-) coordinate within + the `hoverdistance`, with the caveat that no more than + one hoverlabel will appear per trace. If *x unified* + (or *y unified*), a single hoverlabel will appear + multiple points at the closest x- (or y-) coordinate + within the `hoverdistance` with the caveat that no more + than one hoverlabel will appear per trace. In this + mode, spikelines are enabled by default perpendicular + to the specified axis. If false, hover interactions are + disabled. + hoversubplots + Determines expansion of hover effects to other subplots + If "single" just the axis pair of the primary point is + included without overlaying subplots. If "overlaying" + all subplots using the main axis and occupying the same + space are included. If "axis", also include stacked + subplots using the same axis when `hovermode` is set to + "x", *x unified*, "y" or *y unified*. + iciclecolorway + Sets the default icicle 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 `extendiciclecolors`. + images + A tuple of :class:`plotly.graph_objects.layout.Image` + instances or dicts with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the default + property values to use for elements of layout.images + legend + :class:`plotly.graph_objects.layout.Legend` instance or + dict with compatible properties + map + :class:`plotly.graph_objects.layout.Map` instance or + dict with compatible properties + mapbox + :class:`plotly.graph_objects.layout.Mapbox` instance or + dict with compatible properties + margin + :class:`plotly.graph_objects.layout.Margin` instance or + dict with compatible properties + meta + Assigns extra meta information that can be used in + various `text` attributes. Attributes such as the + graph, axis and colorbar `title.text`, annotation + `text` `trace.name` in legend items, `rangeselector`, + `updatemenus` and `sliders` `label` text all support + `meta`. One can access `meta` fields using template + strings: `%{meta[i]}` where `i` is the index of the + `meta` item in question. `meta` can also be an object + for example `{key: value}` which can be accessed + %{meta[key]}. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + minreducedheight + Minimum height of the plot with margin.automargin + applied (in px) + minreducedwidth + Minimum width of the plot with margin.automargin + applied (in px) + modebar + :class:`plotly.graph_objects.layout.Modebar` instance + or dict with compatible properties + newselection + :class:`plotly.graph_objects.layout.Newselection` + instance or dict with compatible properties + newshape + :class:`plotly.graph_objects.layout.Newshape` instance + or dict with compatible properties + paper_bgcolor + Sets the background color of the paper where the graph + is drawn. + piecolorway + 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`. + plot_bgcolor + Sets the background color of the plotting area in- + between x and y axes. + polar + :class:`plotly.graph_objects.layout.Polar` instance or + dict with compatible properties + scattergap + Sets the gap (in plot fraction) between scatter points + of adjacent location coordinates. Defaults to `bargap`. + scattermode + Determines how scatter points at the same location + coordinate are displayed on the graph. With "group", + the scatter points are plotted next to one another + centered around the shared location. With "overlay", + the scatter points are plotted over one another, you + might need to reduce "opacity" to see multiple scatter + points. + scene + :class:`plotly.graph_objects.layout.Scene` instance or + dict with compatible properties + selectdirection + When `dragmode` is set to "select", this limits the + selection of the drag to horizontal, vertical or + diagonal. "h" only allows horizontal selection, "v" + only vertical, "d" only diagonal and "any" sets no + limit. + selectionrevision + Controls persistence of user-driven changes in selected + points from all traces. + selections + A tuple of + :class:`plotly.graph_objects.layout.Selection` + instances or dicts with compatible properties + selectiondefaults + When used in a template (as + layout.template.layout.selectiondefaults), sets the + default property values to use for elements of + layout.selections + separators + Sets the decimal and thousand separators. For example, + *. * puts a '.' before decimals and a space between + thousands. In English locales, dflt is ".," but other + locales may alter this default. + shapes + A tuple of :class:`plotly.graph_objects.layout.Shape` + instances or dicts with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the default + property values to use for elements of layout.shapes + showlegend + Determines whether or not a legend is drawn. Default is + `true` if there is a trace to show and any of these: a) + Two or more traces would by default be shown in the + legend. b) One pie trace is shown in the legend. c) One + trace is explicitly given with `showlegend: true`. + sliders + A tuple of :class:`plotly.graph_objects.layout.Slider` + instances or dicts with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets the + default property values to use for elements of + layout.sliders + smith + :class:`plotly.graph_objects.layout.Smith` instance or + dict with compatible properties + spikedistance + Sets the default distance (in pixels) to look for data + to draw spikelines to (-1 means no cutoff, 0 means no + looking for data). As with hoverdistance, distance does + not apply to area-like objects. In addition, some + objects can be hovered on but will not generate + spikelines, such as scatter fills. + sunburstcolorway + Sets the default sunburst 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 `extendsunburstcolors`. + template + Default attributes to be applied to the plot. This + should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: [traceTemplate, + ...], ...}}` where `layoutTemplate` is a dict matching + the structure of `figure.layout` and `traceTemplate` is + a dict matching the structure of the trace with type + `trace_type` (e.g. 'scatter'). Alternatively, this may + be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are + applied cyclically to traces of each type. Container + arrays (eg `annotations`) have special handling: An + object ending in `defaults` (eg `annotationdefaults`) + is applied to each array item. But if an item has a + `templateitemname` key we look in the template array + for an item with matching `name` and apply that + instead. If no matching `name` is found we mark the + item invisible. Any named template item not referenced + is appended to the end of the array, so this can be + used to add a watermark annotation or a logo image, for + example. To omit one of these items on the plot, make + an item with matching `templateitemname` and `visible: + false`. + ternary + :class:`plotly.graph_objects.layout.Ternary` instance + or dict with compatible properties + title + :class:`plotly.graph_objects.layout.Title` instance or + dict with compatible properties + transition + Sets transition options used during Plotly.react + updates. + treemapcolorway + Sets the default treemap 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 `extendtreemapcolors`. + uirevision + Used to allow user interactions with the plot to + persist after `Plotly.react` calls that are unaware of + these interactions. If `uirevision` is omitted, or if + it is given and it changed from the previous + `Plotly.react` call, the exact new figure is used. If + `uirevision` is truthy and did NOT change, any + attribute that has been affected by user interactions + and did not receive a different value in the new figure + will keep the interaction value. `layout.uirevision` + attribute serves as the default for `uirevision` + attributes in various sub-containers. For finer control + you can set these sub-attributes directly. For example, + if your app separately controls the data on the x and y + axes you might set `xaxis.uirevision=*time*` and + `yaxis.uirevision=*cost*`. Then if only the y data is + changed, you can update `yaxis.uirevision=*quantity*` + and the y axis range will reset but the x axis range + will retain any user-driven zoom. + uniformtext + :class:`plotly.graph_objects.layout.Uniformtext` + instance or dict with compatible properties + updatemenus + A tuple of + :class:`plotly.graph_objects.layout.Updatemenu` + instances or dicts with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), sets the + default property values to use for elements of + layout.updatemenus + violingap + Sets the gap (in plot fraction) between violins of + adjacent location coordinates. Has no effect on traces + that have "width" set. + violingroupgap + Sets the gap (in plot fraction) between violins of the + same location coordinate. Has no effect on traces that + have "width" set. + violinmode + Determines how violins at the same location coordinate + are displayed on the graph. If "group", the violins are + plotted next to one another centered around the shared + location. If "overlay", the violins are plotted over + one another, you might need to set "opacity" to see + them multiple violins. Has no effect on traces that + have "width" set. + waterfallgap + Sets the gap (in plot fraction) between bars of + adjacent location coordinates. + waterfallgroupgap + Sets the gap (in plot fraction) between bars of the + same location coordinate. + waterfallmode + Determines how bars at the same location coordinate are + displayed on the graph. With "group", the bars are + plotted next to one another centered around the shared + location. With "overlay", the bars are plotted over one + another, you might need to reduce "opacity" to see + multiple bars. + width + Sets the plot's width (in px). + xaxis + :class:`plotly.graph_objects.layout.XAxis` instance or + dict with compatible properties + yaxis + :class:`plotly.graph_objects.layout.YAxis` instance or + dict with compatible properties + """ + + def __init__( + self, + arg=None, + activeselection=None, + activeshape=None, + annotations=None, + annotationdefaults=None, + autosize=None, + autotypenumbers=None, + barcornerradius=None, + bargap=None, + bargroupgap=None, + barmode=None, + barnorm=None, + boxgap=None, + boxgroupgap=None, + boxmode=None, + calendar=None, + clickmode=None, + coloraxis=None, + colorscale=None, + colorway=None, + computed=None, + datarevision=None, + dragmode=None, + editrevision=None, + extendfunnelareacolors=None, + extendiciclecolors=None, + extendpiecolors=None, + extendsunburstcolors=None, + extendtreemapcolors=None, + font=None, + funnelareacolorway=None, + funnelgap=None, + funnelgroupgap=None, + funnelmode=None, + geo=None, + grid=None, + height=None, + hiddenlabels=None, + hiddenlabelssrc=None, + hidesources=None, + hoverdistance=None, + hoverlabel=None, + hovermode=None, + hoversubplots=None, + iciclecolorway=None, + images=None, + imagedefaults=None, + legend=None, + map=None, + mapbox=None, + margin=None, + meta=None, + metasrc=None, + minreducedheight=None, + minreducedwidth=None, + modebar=None, + newselection=None, + newshape=None, + paper_bgcolor=None, + piecolorway=None, + plot_bgcolor=None, + polar=None, + scattergap=None, + scattermode=None, + scene=None, + selectdirection=None, + selectionrevision=None, + selections=None, + selectiondefaults=None, + separators=None, + shapes=None, + shapedefaults=None, + showlegend=None, + sliders=None, + sliderdefaults=None, + smith=None, + spikedistance=None, + sunburstcolorway=None, + template=None, + ternary=None, + title=None, + transition=None, + treemapcolorway=None, + uirevision=None, + uniformtext=None, + updatemenus=None, + updatemenudefaults=None, + violingap=None, + violingroupgap=None, + violinmode=None, + waterfallgap=None, + waterfallgroupgap=None, + waterfallmode=None, + width=None, + xaxis=None, + yaxis=None, + **kwargs, + ): + """ + Construct a new Layout object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Layout` + activeselection + :class:`plotly.graph_objects.layout.Activeselection` + instance or dict with compatible properties + activeshape + :class:`plotly.graph_objects.layout.Activeshape` + instance or dict with compatible properties + annotations + A tuple of + :class:`plotly.graph_objects.layout.Annotation` + instances or dicts with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.annotationdefaults), sets the + default property values to use for elements of + layout.annotations + autosize + Determines whether or not a layout width or height that + has been left undefined by the user is initialized on + each relayout. Note that, regardless of this attribute, + an undefined layout width or height is always + initialized on the first call to plot. + autotypenumbers + 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. This is the default + value; however it could be overridden for individual + axes. + barcornerradius + Sets the rounding of bar corners. May be an integer + number of pixels, or a percentage of bar width (as a + string ending in %). + bargap + Sets the gap (in plot fraction) between bars of + adjacent location coordinates. + bargroupgap + Sets the gap (in plot fraction) between bars of the + same location coordinate. + barmode + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are + stacked on top of one another With "relative", the bars + are stacked on top of one another, with negative values + below the axis, positive values above With "group", the + bars are plotted next to one another centered around + the shared location. With "overlay", the bars are + plotted over one another, you might need to reduce + "opacity" to see multiple bars. + barnorm + Sets the normalization for bar traces on the graph. + With "fraction", the value of each bar is divided by + the sum of all values at that location coordinate. + "percent" is the same but multiplied by 100 to show + percentages. + boxgap + Sets the gap (in plot fraction) between boxes of + adjacent location coordinates. Has no effect on traces + that have "width" set. + boxgroupgap + Sets the gap (in plot fraction) between boxes of the + same location coordinate. Has no effect on traces that + have "width" set. + boxmode + Determines how boxes at the same location coordinate + are displayed on the graph. If "group", the boxes are + plotted next to one another centered around the shared + location. If "overlay", the boxes are plotted over one + another, you might need to set "opacity" to see them + multiple boxes. Has no effect on traces that have + "width" set. + calendar + Sets the default calendar system to use for + interpreting and displaying dates throughout the plot. + clickmode + Determines the mode of single click interactions. + "event" is the default value and emits the + `plotly_click` event. In addition this mode emits the + `plotly_selected` event in drag modes "lasso" and + "select", but with no event data attached (kept for + compatibility reasons). The "select" flag enables + selecting single data points via click. This mode also + supports persistent selections, meaning that pressing + Shift while clicking, adds to / subtracts from an + existing selection. "select" with `hovermode`: "x" can + be confusing, consider explicitly setting `hovermode`: + "closest" when using this feature. Selection events are + sent accordingly as long as "event" flag is set as + well. When the "event" flag is missing, `plotly_click` + and `plotly_selected` events are not fired. + coloraxis + :class:`plotly.graph_objects.layout.Coloraxis` instance + or dict with compatible properties + colorscale + :class:`plotly.graph_objects.layout.Colorscale` + instance or dict with compatible properties + colorway + Sets the default trace colors. + computed + Placeholder for exporting automargin-impacting values + namely `margin.t`, `margin.b`, `margin.l` and + `margin.r` in "full-json" mode. + datarevision + If provided, a changed value tells `Plotly.react` that + one or more data arrays has changed. This way you can + modify arrays in-place rather than making a complete + new copy for an incremental change. If NOT provided, + `Plotly.react` assumes that data arrays are being + treated as immutable, thus any data array with a + different identity from its predecessor contains new + data. + dragmode + Determines the mode of drag interactions. "select" and + "lasso" apply only to scatter traces with markers or + text. "orbit" and "turntable" apply only to 3D scenes. + editrevision + Controls persistence of user-driven changes in + `editable: true` configuration, other than trace names + and axis titles. Defaults to `layout.uirevision`. + extendfunnelareacolors + If `true`, the funnelarea slice colors (whether given + by `funnelareacolorway` or inherited from `colorway`) + will be extended to three times its original length by + first repeating every color 20% lighter then each color + 20% darker. This is intended to reduce the likelihood + of reusing the same color when you have many slices, + but you can set `false` to disable. Colors provided in + the trace, using `marker.colors`, are never extended. + extendiciclecolors + If `true`, the icicle slice colors (whether given by + `iciclecolorway` or inherited from `colorway`) will be + extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + extendpiecolors + If `true`, the pie slice colors (whether given by + `piecolorway` or inherited from `colorway`) will be + extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + extendsunburstcolors + If `true`, the sunburst slice colors (whether given by + `sunburstcolorway` or inherited from `colorway`) will + be extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + extendtreemapcolors + If `true`, the treemap slice colors (whether given by + `treemapcolorway` or inherited from `colorway`) will be + extended to three times its original length by first + repeating every color 20% lighter then each color 20% + darker. This is intended to reduce the likelihood of + reusing the same color when you have many slices, but + you can set `false` to disable. Colors provided in the + trace, using `marker.colors`, are never extended. + font + Sets the global font. Note that fonts used in traces + and other layout components inherit from the global + font. + funnelareacolorway + Sets the default funnelarea 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 + `extendfunnelareacolors`. + funnelgap + Sets the gap (in plot fraction) between bars of + adjacent location coordinates. + funnelgroupgap + Sets the gap (in plot fraction) between bars of the + same location coordinate. + funnelmode + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are + stacked on top of one another With "group", the bars + are plotted next to one another centered around the + shared location. With "overlay", the bars are plotted + over one another, you might need to reduce "opacity" to + see multiple bars. + geo + :class:`plotly.graph_objects.layout.Geo` instance or + dict with compatible properties + grid + :class:`plotly.graph_objects.layout.Grid` instance or + dict with compatible properties + height + Sets the plot's height (in px). + hiddenlabels + 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 + hiddenlabelssrc + Sets the source reference on Chart Studio Cloud for + `hiddenlabels`. + hidesources + 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). + hoverdistance + Sets the default distance (in pixels) to look for data + to add hover labels (-1 means no cutoff, 0 means no + looking for data). This is only a real distance for + hovering on point-like objects, like scatter points. + For area-like objects (bars, scatter fills, etc) + hovering is on inside the area and off outside, but + these objects will not supersede hover on point-like + objects in case of conflict. + hoverlabel + :class:`plotly.graph_objects.layout.Hoverlabel` + instance or dict with compatible properties + hovermode + Determines the mode of hover interactions. If + "closest", a single hoverlabel will appear for the + "closest" point within the `hoverdistance`. If "x" (or + "y"), multiple hoverlabels will appear for multiple + points at the "closest" x- (or y-) coordinate within + the `hoverdistance`, with the caveat that no more than + one hoverlabel will appear per trace. If *x unified* + (or *y unified*), a single hoverlabel will appear + multiple points at the closest x- (or y-) coordinate + within the `hoverdistance` with the caveat that no more + than one hoverlabel will appear per trace. In this + mode, spikelines are enabled by default perpendicular + to the specified axis. If false, hover interactions are + disabled. + hoversubplots + Determines expansion of hover effects to other subplots + If "single" just the axis pair of the primary point is + included without overlaying subplots. If "overlaying" + all subplots using the main axis and occupying the same + space are included. If "axis", also include stacked + subplots using the same axis when `hovermode` is set to + "x", *x unified*, "y" or *y unified*. + iciclecolorway + Sets the default icicle 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 `extendiciclecolors`. + images + A tuple of :class:`plotly.graph_objects.layout.Image` + instances or dicts with compatible properties + imagedefaults + When used in a template (as + layout.template.layout.imagedefaults), sets the default + property values to use for elements of layout.images + legend + :class:`plotly.graph_objects.layout.Legend` instance or + dict with compatible properties + map + :class:`plotly.graph_objects.layout.Map` instance or + dict with compatible properties + mapbox + :class:`plotly.graph_objects.layout.Mapbox` instance or + dict with compatible properties + margin + :class:`plotly.graph_objects.layout.Margin` instance or + dict with compatible properties + meta + Assigns extra meta information that can be used in + various `text` attributes. Attributes such as the + graph, axis and colorbar `title.text`, annotation + `text` `trace.name` in legend items, `rangeselector`, + `updatemenus` and `sliders` `label` text all support + `meta`. One can access `meta` fields using template + strings: `%{meta[i]}` where `i` is the index of the + `meta` item in question. `meta` can also be an object + for example `{key: value}` which can be accessed + %{meta[key]}. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + minreducedheight + Minimum height of the plot with margin.automargin + applied (in px) + minreducedwidth + Minimum width of the plot with margin.automargin + applied (in px) + modebar + :class:`plotly.graph_objects.layout.Modebar` instance + or dict with compatible properties + newselection + :class:`plotly.graph_objects.layout.Newselection` + instance or dict with compatible properties + newshape + :class:`plotly.graph_objects.layout.Newshape` instance + or dict with compatible properties + paper_bgcolor + Sets the background color of the paper where the graph + is drawn. + piecolorway + 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`. + plot_bgcolor + Sets the background color of the plotting area in- + between x and y axes. + polar + :class:`plotly.graph_objects.layout.Polar` instance or + dict with compatible properties + scattergap + Sets the gap (in plot fraction) between scatter points + of adjacent location coordinates. Defaults to `bargap`. + scattermode + Determines how scatter points at the same location + coordinate are displayed on the graph. With "group", + the scatter points are plotted next to one another + centered around the shared location. With "overlay", + the scatter points are plotted over one another, you + might need to reduce "opacity" to see multiple scatter + points. + scene + :class:`plotly.graph_objects.layout.Scene` instance or + dict with compatible properties + selectdirection + When `dragmode` is set to "select", this limits the + selection of the drag to horizontal, vertical or + diagonal. "h" only allows horizontal selection, "v" + only vertical, "d" only diagonal and "any" sets no + limit. + selectionrevision + Controls persistence of user-driven changes in selected + points from all traces. + selections + A tuple of + :class:`plotly.graph_objects.layout.Selection` + instances or dicts with compatible properties + selectiondefaults + When used in a template (as + layout.template.layout.selectiondefaults), sets the + default property values to use for elements of + layout.selections + separators + Sets the decimal and thousand separators. For example, + *. * puts a '.' before decimals and a space between + thousands. In English locales, dflt is ".," but other + locales may alter this default. + shapes + A tuple of :class:`plotly.graph_objects.layout.Shape` + instances or dicts with compatible properties + shapedefaults + When used in a template (as + layout.template.layout.shapedefaults), sets the default + property values to use for elements of layout.shapes + showlegend + Determines whether or not a legend is drawn. Default is + `true` if there is a trace to show and any of these: a) + Two or more traces would by default be shown in the + legend. b) One pie trace is shown in the legend. c) One + trace is explicitly given with `showlegend: true`. + sliders + A tuple of :class:`plotly.graph_objects.layout.Slider` + instances or dicts with compatible properties + sliderdefaults + When used in a template (as + layout.template.layout.sliderdefaults), sets the + default property values to use for elements of + layout.sliders + smith + :class:`plotly.graph_objects.layout.Smith` instance or + dict with compatible properties + spikedistance + Sets the default distance (in pixels) to look for data + to draw spikelines to (-1 means no cutoff, 0 means no + looking for data). As with hoverdistance, distance does + not apply to area-like objects. In addition, some + objects can be hovered on but will not generate + spikelines, such as scatter fills. + sunburstcolorway + Sets the default sunburst 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 `extendsunburstcolors`. + template + Default attributes to be applied to the plot. This + should be a dict with format: `{'layout': + layoutTemplate, 'data': {trace_type: [traceTemplate, + ...], ...}}` where `layoutTemplate` is a dict matching + the structure of `figure.layout` and `traceTemplate` is + a dict matching the structure of the trace with type + `trace_type` (e.g. 'scatter'). Alternatively, this may + be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are + applied cyclically to traces of each type. Container + arrays (eg `annotations`) have special handling: An + object ending in `defaults` (eg `annotationdefaults`) + is applied to each array item. But if an item has a + `templateitemname` key we look in the template array + for an item with matching `name` and apply that + instead. If no matching `name` is found we mark the + item invisible. Any named template item not referenced + is appended to the end of the array, so this can be + used to add a watermark annotation or a logo image, for + example. To omit one of these items on the plot, make + an item with matching `templateitemname` and `visible: + false`. + ternary + :class:`plotly.graph_objects.layout.Ternary` instance + or dict with compatible properties + title + :class:`plotly.graph_objects.layout.Title` instance or + dict with compatible properties + transition + Sets transition options used during Plotly.react + updates. + treemapcolorway + Sets the default treemap 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 `extendtreemapcolors`. + uirevision + Used to allow user interactions with the plot to + persist after `Plotly.react` calls that are unaware of + these interactions. If `uirevision` is omitted, or if + it is given and it changed from the previous + `Plotly.react` call, the exact new figure is used. If + `uirevision` is truthy and did NOT change, any + attribute that has been affected by user interactions + and did not receive a different value in the new figure + will keep the interaction value. `layout.uirevision` + attribute serves as the default for `uirevision` + attributes in various sub-containers. For finer control + you can set these sub-attributes directly. For example, + if your app separately controls the data on the x and y + axes you might set `xaxis.uirevision=*time*` and + `yaxis.uirevision=*cost*`. Then if only the y data is + changed, you can update `yaxis.uirevision=*quantity*` + and the y axis range will reset but the x axis range + will retain any user-driven zoom. + uniformtext + :class:`plotly.graph_objects.layout.Uniformtext` + instance or dict with compatible properties + updatemenus + A tuple of + :class:`plotly.graph_objects.layout.Updatemenu` + instances or dicts with compatible properties + updatemenudefaults + When used in a template (as + layout.template.layout.updatemenudefaults), sets the + default property values to use for elements of + layout.updatemenus + violingap + Sets the gap (in plot fraction) between violins of + adjacent location coordinates. Has no effect on traces + that have "width" set. + violingroupgap + Sets the gap (in plot fraction) between violins of the + same location coordinate. Has no effect on traces that + have "width" set. + violinmode + Determines how violins at the same location coordinate + are displayed on the graph. If "group", the violins are + plotted next to one another centered around the shared + location. If "overlay", the violins are plotted over + one another, you might need to set "opacity" to see + them multiple violins. Has no effect on traces that + have "width" set. + waterfallgap + Sets the gap (in plot fraction) between bars of + adjacent location coordinates. + waterfallgroupgap + Sets the gap (in plot fraction) between bars of the + same location coordinate. + waterfallmode + Determines how bars at the same location coordinate are + displayed on the graph. With "group", the bars are + plotted next to one another centered around the shared + location. With "overlay", the bars are plotted over one + another, you might need to reduce "opacity" to see + multiple bars. + width + Sets the plot's width (in px). + xaxis + :class:`plotly.graph_objects.layout.XAxis` instance or + dict with compatible properties + yaxis + :class:`plotly.graph_objects.layout.YAxis` instance or + dict with compatible properties + + Returns + ------- + Layout + """ + super().__init__("layout") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + self._valid_props = { + "activeselection", + "activeshape", + "annotationdefaults", + "annotations", + "autosize", + "autotypenumbers", + "barcornerradius", + "bargap", + "bargroupgap", + "barmode", + "barnorm", + "boxgap", + "boxgroupgap", + "boxmode", + "calendar", + "clickmode", + "coloraxis", + "colorscale", + "colorway", + "computed", + "datarevision", + "dragmode", + "editrevision", + "extendfunnelareacolors", + "extendiciclecolors", + "extendpiecolors", + "extendsunburstcolors", + "extendtreemapcolors", + "font", + "funnelareacolorway", + "funnelgap", + "funnelgroupgap", + "funnelmode", + "geo", + "grid", + "height", + "hiddenlabels", + "hiddenlabelssrc", + "hidesources", + "hoverdistance", + "hoverlabel", + "hovermode", + "hoversubplots", + "iciclecolorway", + "imagedefaults", + "images", + "legend", + "map", + "mapbox", + "margin", + "meta", + "metasrc", + "minreducedheight", + "minreducedwidth", + "modebar", + "newselection", + "newshape", + "paper_bgcolor", + "piecolorway", + "plot_bgcolor", + "polar", + "scattergap", + "scattermode", + "scene", + "selectdirection", + "selectiondefaults", + "selectionrevision", + "selections", + "separators", + "shapedefaults", + "shapes", + "showlegend", + "sliderdefaults", + "sliders", + "smith", + "spikedistance", + "sunburstcolorway", + "template", + "ternary", + "title", + "transition", + "treemapcolorway", + "uirevision", + "uniformtext", + "updatemenudefaults", + "updatemenus", + "violingap", + "violingroupgap", + "violinmode", + "waterfallgap", + "waterfallgroupgap", + "waterfallmode", + "width", + "xaxis", + "yaxis", + } + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Layout +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Layout`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("activeselection", arg, activeselection) + self._set_property("activeshape", arg, activeshape) + self._set_property("annotations", arg, annotations) + self._set_property("annotationdefaults", arg, annotationdefaults) + self._set_property("autosize", arg, autosize) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("barcornerradius", arg, barcornerradius) + self._set_property("bargap", arg, bargap) + self._set_property("bargroupgap", arg, bargroupgap) + self._set_property("barmode", arg, barmode) + self._set_property("barnorm", arg, barnorm) + self._set_property("boxgap", arg, boxgap) + self._set_property("boxgroupgap", arg, boxgroupgap) + self._set_property("boxmode", arg, boxmode) + self._set_property("calendar", arg, calendar) + self._set_property("clickmode", arg, clickmode) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorway", arg, colorway) + self._set_property("computed", arg, computed) + self._set_property("datarevision", arg, datarevision) + self._set_property("dragmode", arg, dragmode) + self._set_property("editrevision", arg, editrevision) + self._set_property("extendfunnelareacolors", arg, extendfunnelareacolors) + self._set_property("extendiciclecolors", arg, extendiciclecolors) + self._set_property("extendpiecolors", arg, extendpiecolors) + self._set_property("extendsunburstcolors", arg, extendsunburstcolors) + self._set_property("extendtreemapcolors", arg, extendtreemapcolors) + self._set_property("font", arg, font) + self._set_property("funnelareacolorway", arg, funnelareacolorway) + self._set_property("funnelgap", arg, funnelgap) + self._set_property("funnelgroupgap", arg, funnelgroupgap) + self._set_property("funnelmode", arg, funnelmode) + self._set_property("geo", arg, geo) + self._set_property("grid", arg, grid) + self._set_property("height", arg, height) + self._set_property("hiddenlabels", arg, hiddenlabels) + self._set_property("hiddenlabelssrc", arg, hiddenlabelssrc) + self._set_property("hidesources", arg, hidesources) + self._set_property("hoverdistance", arg, hoverdistance) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovermode", arg, hovermode) + self._set_property("hoversubplots", arg, hoversubplots) + self._set_property("iciclecolorway", arg, iciclecolorway) + self._set_property("images", arg, images) + self._set_property("imagedefaults", arg, imagedefaults) + self._set_property("legend", arg, legend) + self._set_property("map", arg, map) + self._set_property("mapbox", arg, mapbox) + self._set_property("margin", arg, margin) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("minreducedheight", arg, minreducedheight) + self._set_property("minreducedwidth", arg, minreducedwidth) + self._set_property("modebar", arg, modebar) + self._set_property("newselection", arg, newselection) + self._set_property("newshape", arg, newshape) + self._set_property("paper_bgcolor", arg, paper_bgcolor) + self._set_property("piecolorway", arg, piecolorway) + self._set_property("plot_bgcolor", arg, plot_bgcolor) + self._set_property("polar", arg, polar) + self._set_property("scattergap", arg, scattergap) + self._set_property("scattermode", arg, scattermode) + self._set_property("scene", arg, scene) + self._set_property("selectdirection", arg, selectdirection) + self._set_property("selectionrevision", arg, selectionrevision) + self._set_property("selections", arg, selections) + self._set_property("selectiondefaults", arg, selectiondefaults) + self._set_property("separators", arg, separators) + self._set_property("shapes", arg, shapes) + self._set_property("shapedefaults", arg, shapedefaults) + self._set_property("showlegend", arg, showlegend) + self._set_property("sliders", arg, sliders) + self._set_property("sliderdefaults", arg, sliderdefaults) + self._set_property("smith", arg, smith) + self._set_property("spikedistance", arg, spikedistance) + self._set_property("sunburstcolorway", arg, sunburstcolorway) + self._set_property("template", arg, template) + self._set_property("ternary", arg, ternary) + self._set_property("title", arg, title) + self._set_property("transition", arg, transition) + self._set_property("treemapcolorway", arg, treemapcolorway) + self._set_property("uirevision", arg, uirevision) + self._set_property("uniformtext", arg, uniformtext) + self._set_property("updatemenus", arg, updatemenus) + self._set_property("updatemenudefaults", arg, updatemenudefaults) + self._set_property("violingap", arg, violingap) + self._set_property("violingroupgap", arg, violingroupgap) + self._set_property("violinmode", arg, violinmode) + self._set_property("waterfallgap", arg, waterfallgap) + self._set_property("waterfallgroupgap", arg, waterfallgroupgap) + self._set_property("waterfallmode", arg, waterfallmode) + self._set_property("width", arg, width) + self._set_property("xaxis", arg, xaxis) + self._set_property("yaxis", arg, yaxis) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_mesh3d.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_mesh3d.py new file mode 100644 index 0000000..68928a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_mesh3d.py @@ -0,0 +1,2577 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Mesh3d(_BaseTraceType): + _parent_path_str = "" + _path_str = "mesh3d" + _valid_props = { + "alphahull", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "contour", + "customdata", + "customdatasrc", + "delaunayaxis", + "facecolor", + "facecolorsrc", + "flatshading", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "i", + "ids", + "idssrc", + "intensity", + "intensitymode", + "intensitysrc", + "isrc", + "j", + "jsrc", + "k", + "ksrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lighting", + "lightposition", + "meta", + "metasrc", + "name", + "opacity", + "reversescale", + "scene", + "showlegend", + "showscale", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "vertexcolor", + "vertexcolorsrc", + "visible", + "x", + "xcalendar", + "xhoverformat", + "xsrc", + "y", + "ycalendar", + "yhoverformat", + "ysrc", + "z", + "zcalendar", + "zhoverformat", + "zsrc", + } + + @property + def alphahull(self): + """ + 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. + + The 'alphahull' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["alphahull"] + + @alphahull.setter + def alphahull(self, val): + self["alphahull"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + Sets the color of the whole mesh + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to mesh3d.colorscale + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.mesh3d.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def contour(self): + """ + The 'contour' property is an instance of Contour + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.Contour` + - A dict of string/value properties that will be passed + to the Contour constructor + + Returns + ------- + plotly.graph_objs.mesh3d.Contour + """ + return self["contour"] + + @contour.setter + def contour(self, val): + self["contour"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def delaunayaxis(self): + """ + 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. + + The 'delaunayaxis' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['x', 'y', 'z'] + + Returns + ------- + Any + """ + return self["delaunayaxis"] + + @delaunayaxis.setter + def delaunayaxis(self, val): + self["delaunayaxis"] = val + + @property + def facecolor(self): + """ + Sets the color of each face Overrides "color" and + "vertexcolor". + + The 'facecolor' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["facecolor"] + + @facecolor.setter + def facecolor(self, val): + self["facecolor"] = val + + @property + def facecolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `facecolor`. + + The 'facecolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["facecolorsrc"] + + @facecolorsrc.setter + def facecolorsrc(self, val): + self["facecolorsrc"] = val + + @property + def flatshading(self): + """ + Determines whether or not normal smoothing is applied to the + meshes, creating meshes with an angular, low-poly look via flat + reflections. + + The 'flatshading' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["flatshading"] + + @flatshading.setter + def flatshading(self, val): + self["flatshading"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.mesh3d.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def i(self): + """ + 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. + + The 'i' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["i"] + + @i.setter + def i(self, val): + self["i"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def intensity(self): + """ + Sets the intensity values for vertices or cells as defined by + `intensitymode`. It can be used for plotting fields on meshes. + + The 'intensity' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["intensity"] + + @intensity.setter + def intensity(self, val): + self["intensity"] = val + + @property + def intensitymode(self): + """ + Determines the source of `intensity` values. + + The 'intensitymode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['vertex', 'cell'] + + Returns + ------- + Any + """ + return self["intensitymode"] + + @intensitymode.setter + def intensitymode(self, val): + self["intensitymode"] = val + + @property + def intensitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `intensity`. + + The 'intensitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["intensitysrc"] + + @intensitysrc.setter + def intensitysrc(self, val): + self["intensitysrc"] = val + + @property + def isrc(self): + """ + Sets the source reference on Chart Studio Cloud for `i`. + + The 'isrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["isrc"] + + @isrc.setter + def isrc(self, val): + self["isrc"] = val + + @property + def j(self): + """ + 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. + + The 'j' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["j"] + + @j.setter + def j(self, val): + self["j"] = val + + @property + def jsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `j`. + + The 'jsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["jsrc"] + + @jsrc.setter + def jsrc(self, val): + self["jsrc"] = val + + @property + def k(self): + """ + 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. + + The 'k' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["k"] + + @k.setter + def k(self, val): + self["k"] = val + + @property + def ksrc(self): + """ + Sets the source reference on Chart Studio Cloud for `k`. + + The 'ksrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ksrc"] + + @ksrc.setter + def ksrc(self, val): + self["ksrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.mesh3d.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lighting(self): + """ + The 'lighting' property is an instance of Lighting + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.Lighting` + - A dict of string/value properties that will be passed + to the Lighting constructor + + Returns + ------- + plotly.graph_objs.mesh3d.Lighting + """ + return self["lighting"] + + @lighting.setter + def lighting(self, val): + self["lighting"] = val + + @property + def lightposition(self): + """ + The 'lightposition' property is an instance of Lightposition + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.Lightposition` + - A dict of string/value properties that will be passed + to the Lightposition constructor + + Returns + ------- + plotly.graph_objs.mesh3d.Lightposition + """ + return self["lightposition"] + + @lightposition.setter + def lightposition(self, val): + self["lightposition"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.mesh3d.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def vertexcolor(self): + """ + 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. + + The 'vertexcolor' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["vertexcolor"] + + @vertexcolor.setter + def vertexcolor(self, val): + self["vertexcolor"] = val + + @property + def vertexcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `vertexcolor`. + + The 'vertexcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["vertexcolorsrc"] + + @vertexcolorsrc.setter + def vertexcolorsrc(self, val): + self["vertexcolorsrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + 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. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + 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. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + 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. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zcalendar(self): + """ + Sets the calendar system to use with `z` date data. + + The 'zcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["zcalendar"] + + @zcalendar.setter + def zcalendar(self, val): + self["zcalendar"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alphahull + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + Sets the color of the whole mesh + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.mesh3d.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.mesh3d.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delaunayaxis + 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. + facecolor + Sets the color of each face Overrides "color" and + "vertexcolor". + facecolorsrc + Sets the source reference on Chart Studio Cloud for + `facecolor`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.mesh3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + i + 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. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + intensity + Sets the intensity values for vertices or cells as + defined by `intensitymode`. It can be used for plotting + fields on meshes. + intensitymode + Determines the source of `intensity` values. + intensitysrc + Sets the source reference on Chart Studio Cloud for + `intensity`. + isrc + Sets the source reference on Chart Studio Cloud for + `i`. + j + 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. + jsrc + Sets the source reference on Chart Studio Cloud for + `j`. + k + 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. + ksrc + Sets the source reference on Chart Studio Cloud for + `k`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.mesh3d.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.mesh3d.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.mesh3d.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.mesh3d.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + vertexcolor + 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. + vertexcolorsrc + Sets the source reference on Chart Studio Cloud for + `vertexcolor`. + visible + 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). + x + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + 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. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + alphahull=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + delaunayaxis=None, + facecolor=None, + facecolorsrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + i=None, + ids=None, + idssrc=None, + intensity=None, + intensitymode=None, + intensitysrc=None, + isrc=None, + j=None, + jsrc=None, + k=None, + ksrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + vertexcolor=None, + vertexcolorsrc=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Mesh3d object + + Draws sets of triangles with coordinates given by three + 1-dimensional arrays in `x`, `y`, `z` and (1) a sets of `i`, + `j`, `k` indices (2) Delaunay triangulation or (3) the Alpha- + shape algorithm or (4) the Convex-hull algorithm + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Mesh3d` + alphahull + 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. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + Sets the color of the whole mesh + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.mesh3d.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.mesh3d.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + delaunayaxis + 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. + facecolor + Sets the color of each face Overrides "color" and + "vertexcolor". + facecolorsrc + Sets the source reference on Chart Studio Cloud for + `facecolor`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.mesh3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + i + 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. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + intensity + Sets the intensity values for vertices or cells as + defined by `intensitymode`. It can be used for plotting + fields on meshes. + intensitymode + Determines the source of `intensity` values. + intensitysrc + Sets the source reference on Chart Studio Cloud for + `intensity`. + isrc + Sets the source reference on Chart Studio Cloud for + `i`. + j + 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. + jsrc + Sets the source reference on Chart Studio Cloud for + `j`. + k + 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. + ksrc + Sets the source reference on Chart Studio Cloud for + `k`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.mesh3d.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.mesh3d.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.mesh3d.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.mesh3d.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + vertexcolor + 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. + vertexcolorsrc + Sets the source reference on Chart Studio Cloud for + `vertexcolor`. + visible + 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). + x + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + 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. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Mesh3d + """ + super().__init__("mesh3d") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Mesh3d +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Mesh3d`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alphahull", arg, alphahull) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("contour", arg, contour) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("delaunayaxis", arg, delaunayaxis) + self._set_property("facecolor", arg, facecolor) + self._set_property("facecolorsrc", arg, facecolorsrc) + self._set_property("flatshading", arg, flatshading) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("i", arg, i) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("intensity", arg, intensity) + self._set_property("intensitymode", arg, intensitymode) + self._set_property("intensitysrc", arg, intensitysrc) + self._set_property("isrc", arg, isrc) + self._set_property("j", arg, j) + self._set_property("jsrc", arg, jsrc) + self._set_property("k", arg, k) + self._set_property("ksrc", arg, ksrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lighting", arg, lighting) + self._set_property("lightposition", arg, lightposition) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("vertexcolor", arg, vertexcolor) + self._set_property("vertexcolorsrc", arg, vertexcolorsrc) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zcalendar", arg, zcalendar) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "mesh3d" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_ohlc.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_ohlc.py new file mode 100644 index 0000000..26f405a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_ohlc.py @@ -0,0 +1,1675 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Ohlc(_BaseTraceType): + _parent_path_str = "" + _path_str = "ohlc" + _valid_props = { + "close", + "closesrc", + "customdata", + "customdatasrc", + "decreasing", + "high", + "highsrc", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "increasing", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "low", + "lowsrc", + "meta", + "metasrc", + "name", + "opacity", + "open", + "opensrc", + "selectedpoints", + "showlegend", + "stream", + "text", + "textsrc", + "tickwidth", + "type", + "uid", + "uirevision", + "visible", + "x", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "yaxis", + "yhoverformat", + "zorder", + } + + @property + def close(self): + """ + Sets the close values. + + The 'close' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["close"] + + @close.setter + def close(self, val): + self["close"] = val + + @property + def closesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `close`. + + The 'closesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["closesrc"] + + @closesrc.setter + def closesrc(self, val): + self["closesrc"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def decreasing(self): + """ + The 'decreasing' property is an instance of Decreasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.Decreasing` + - A dict of string/value properties that will be passed + to the Decreasing constructor + + Returns + ------- + plotly.graph_objs.ohlc.Decreasing + """ + return self["decreasing"] + + @decreasing.setter + def decreasing(self, val): + self["decreasing"] = val + + @property + def high(self): + """ + Sets the high values. + + The 'high' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["high"] + + @high.setter + def high(self, val): + self["high"] = val + + @property + def highsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `high`. + + The 'highsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["highsrc"] + + @highsrc.setter + def highsrc(self, val): + self["highsrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.ohlc.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def increasing(self): + """ + The 'increasing' property is an instance of Increasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.Increasing` + - A dict of string/value properties that will be passed + to the Increasing constructor + + Returns + ------- + plotly.graph_objs.ohlc.Increasing + """ + return self["increasing"] + + @increasing.setter + def increasing(self, val): + self["increasing"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.ohlc.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.ohlc.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def low(self): + """ + Sets the low values. + + The 'low' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["low"] + + @low.setter + def low(self, val): + self["low"] = val + + @property + def lowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `low`. + + The 'lowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lowsrc"] + + @lowsrc.setter + def lowsrc(self, val): + self["lowsrc"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def open(self): + """ + Sets the open values. + + The 'open' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["open"] + + @open.setter + def open(self, val): + self["open"] = val + + @property + def opensrc(self): + """ + Sets the source reference on Chart Studio Cloud for `open`. + + The 'opensrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opensrc"] + + @opensrc.setter + def opensrc(self, val): + self["opensrc"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.ohlc.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def tickwidth(self): + """ + Sets the width of the open/close tick marks relative to the "x" + minimal interval. + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, 0.5] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. If absent, linear coordinate will be + generated. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.ohlc.Decreasing` instance + or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.ohlc.Hoverlabel` instance + or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.ohlc.Increasing` instance + or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.ohlc.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.ohlc.Line` instance or + dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.ohlc.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + tickwidth + Sets the width of the open/close tick marks relative to + the "x" minimal interval. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + close=None, + closesrc=None, + customdata=None, + customdatasrc=None, + decreasing=None, + high=None, + highsrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + low=None, + lowsrc=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + open=None, + opensrc=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textsrc=None, + tickwidth=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + yaxis=None, + yhoverformat=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Ohlc object + + 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. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Ohlc` + close + Sets the close values. + closesrc + Sets the source reference on Chart Studio Cloud for + `close`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.ohlc.Decreasing` instance + or dict with compatible properties + high + Sets the high values. + highsrc + Sets the source reference on Chart Studio Cloud for + `high`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.ohlc.Hoverlabel` instance + or dict with compatible properties + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.ohlc.Increasing` instance + or dict with compatible properties + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.ohlc.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.ohlc.Line` instance or + dict with compatible properties + low + Sets the low values. + lowsrc + Sets the source reference on Chart Studio Cloud for + `low`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + open + Sets the open values. + opensrc + Sets the source reference on Chart Studio Cloud for + `open`. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.ohlc.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + tickwidth + Sets the width of the open/close tick marks relative to + the "x" minimal interval. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. If absent, linear coordinate + will be generated. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + yaxis + 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. + yhoverformat + 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`. + zorder + 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`. + + Returns + ------- + Ohlc + """ + super().__init__("ohlc") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Ohlc +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Ohlc`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("close", arg, close) + self._set_property("closesrc", arg, closesrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("decreasing", arg, decreasing) + self._set_property("high", arg, high) + self._set_property("highsrc", arg, highsrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("increasing", arg, increasing) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("low", arg, low) + self._set_property("lowsrc", arg, lowsrc) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("open", arg, open) + self._set_property("opensrc", arg, opensrc) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("yaxis", arg, yaxis) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "ohlc" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_parcats.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_parcats.py new file mode 100644 index 0000000..bea3d95 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_parcats.py @@ -0,0 +1,934 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Parcats(_BaseTraceType): + _parent_path_str = "" + _path_str = "parcats" + _valid_props = { + "arrangement", + "bundlecolors", + "counts", + "countssrc", + "dimensiondefaults", + "dimensions", + "domain", + "hoverinfo", + "hoveron", + "hovertemplate", + "labelfont", + "legendgrouptitle", + "legendwidth", + "line", + "meta", + "metasrc", + "name", + "sortpaths", + "stream", + "tickfont", + "type", + "uid", + "uirevision", + "visible", + } + + @property + def arrangement(self): + """ + 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. + + The 'arrangement' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['perpendicular', 'freeform', 'fixed'] + + Returns + ------- + Any + """ + return self["arrangement"] + + @arrangement.setter + def arrangement(self, val): + self["arrangement"] = val + + @property + def bundlecolors(self): + """ + Sort paths so that like colors are bundled together within each + category. + + The 'bundlecolors' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["bundlecolors"] + + @bundlecolors.setter + def bundlecolors(self, val): + self["bundlecolors"] = val + + @property + def counts(self): + """ + The number of observations represented by each state. Defaults + to 1 so that each state represents one observation + + The 'counts' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["counts"] + + @counts.setter + def counts(self, val): + self["counts"] = val + + @property + def countssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `counts`. + + The 'countssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["countssrc"] + + @countssrc.setter + def countssrc(self, val): + self["countssrc"] = val + + @property + def dimensions(self): + """ + The dimensions (variables) of the parallel categories diagram. + + The 'dimensions' property is a tuple of instances of + Dimension that may be specified as: + - A list or tuple of instances of plotly.graph_objs.parcats.Dimension + - A list or tuple of dicts of string/value properties that + will be passed to the Dimension constructor + + Returns + ------- + tuple[plotly.graph_objs.parcats.Dimension] + """ + return self["dimensions"] + + @dimensions.setter + def dimensions(self, val): + self["dimensions"] = val + + @property + def dimensiondefaults(self): + """ + When used in a template (as + layout.template.data.parcats.dimensiondefaults), sets the + default property values to use for elements of + parcats.dimensions + + The 'dimensiondefaults' property is an instance of Dimension + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Dimension` + - A dict of string/value properties that will be passed + to the Dimension constructor + + Returns + ------- + plotly.graph_objs.parcats.Dimension + """ + return self["dimensiondefaults"] + + @dimensiondefaults.setter + def dimensiondefaults(self, val): + self["dimensiondefaults"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.parcats.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['count', 'probability'] joined with '+' characters + (e.g. 'count+probability') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + + Returns + ------- + Any + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoveron(self): + """ + 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. + + The 'hoveron' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['category', 'color', 'dimension'] + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every attributes that can be specified per-point + (the ones that are `arrayOk: true`) are available. This value + here applies when hovering over dimensions. Note that + `*categorycount`, "colorcount" and "bandcolorcount" are only + available when `hoveron` contains the "color" flagFinally, 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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def labelfont(self): + """ + Sets the font for the `dimension` labels. + + The 'labelfont' property is an instance of Labelfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Labelfont` + - A dict of string/value properties that will be passed + to the Labelfont constructor + + Returns + ------- + plotly.graph_objs.parcats.Labelfont + """ + return self["labelfont"] + + @labelfont.setter + def labelfont(self, val): + self["labelfont"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.parcats.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.parcats.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def sortpaths(self): + """ + 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. + + The 'sortpaths' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['forward', 'backward'] + + Returns + ------- + Any + """ + return self["sortpaths"] + + @sortpaths.setter + def sortpaths(self, val): + self["sortpaths"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.parcats.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def tickfont(self): + """ + Sets the font for the `category` labels. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.parcats.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + arrangement + 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. + bundlecolors + Sort paths so that like colors are bundled together + within each category. + counts + The number of observations represented by each state. + Defaults to 1 so that each state represents one + observation + countssrc + Sets the source reference on Chart Studio Cloud for + `counts`. + dimensions + The dimensions (variables) of the parallel categories + diagram. + dimensiondefaults + When used in a template (as + layout.template.data.parcats.dimensiondefaults), sets + the default property values to use for elements of + parcats.dimensions + domain + :class:`plotly.graph_objects.parcats.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoveron + 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. + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. This value here applies when hovering + over dimensions. Note that `*categorycount`, + "colorcount" and "bandcolorcount" are only available + when `hoveron` contains the "color" flagFinally, 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 + ``. + labelfont + Sets the font for the `dimension` labels. + legendgrouptitle + :class:`plotly.graph_objects.parcats.Legendgrouptitle` + instance or dict with compatible properties + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcats.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + sortpaths + 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. + stream + :class:`plotly.graph_objects.parcats.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `category` labels. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + """ + + def __init__( + self, + arg=None, + arrangement=None, + bundlecolors=None, + counts=None, + countssrc=None, + dimensions=None, + dimensiondefaults=None, + domain=None, + hoverinfo=None, + hoveron=None, + hovertemplate=None, + labelfont=None, + legendgrouptitle=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + sortpaths=None, + stream=None, + tickfont=None, + uid=None, + uirevision=None, + visible=None, + **kwargs, + ): + """ + Construct a new Parcats object + + Parallel categories diagram for multidimensional categorical + data. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Parcats` + arrangement + 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. + bundlecolors + Sort paths so that like colors are bundled together + within each category. + counts + The number of observations represented by each state. + Defaults to 1 so that each state represents one + observation + countssrc + Sets the source reference on Chart Studio Cloud for + `counts`. + dimensions + The dimensions (variables) of the parallel categories + diagram. + dimensiondefaults + When used in a template (as + layout.template.data.parcats.dimensiondefaults), sets + the default property values to use for elements of + parcats.dimensions + domain + :class:`plotly.graph_objects.parcats.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoveron + 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. + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. This value here applies when hovering + over dimensions. Note that `*categorycount`, + "colorcount" and "bandcolorcount" are only available + when `hoveron` contains the "color" flagFinally, 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 + ``. + labelfont + Sets the font for the `dimension` labels. + legendgrouptitle + :class:`plotly.graph_objects.parcats.Legendgrouptitle` + instance or dict with compatible properties + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcats.Line` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + sortpaths + 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. + stream + :class:`plotly.graph_objects.parcats.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `category` labels. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + + Returns + ------- + Parcats + """ + super().__init__("parcats") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Parcats +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Parcats`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("arrangement", arg, arrangement) + self._set_property("bundlecolors", arg, bundlecolors) + self._set_property("counts", arg, counts) + self._set_property("countssrc", arg, countssrc) + self._set_property("dimensions", arg, dimensions) + self._set_property("dimensiondefaults", arg, dimensiondefaults) + self._set_property("domain", arg, domain) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("labelfont", arg, labelfont) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("sortpaths", arg, sortpaths) + self._set_property("stream", arg, stream) + self._set_property("tickfont", arg, tickfont) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + + self._props["type"] = "parcats" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_parcoords.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_parcoords.py new file mode 100644 index 0000000..e3f2f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_parcoords.py @@ -0,0 +1,919 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Parcoords(_BaseTraceType): + _parent_path_str = "" + _path_str = "parcoords" + _valid_props = { + "customdata", + "customdatasrc", + "dimensiondefaults", + "dimensions", + "domain", + "ids", + "idssrc", + "labelangle", + "labelfont", + "labelside", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "meta", + "metasrc", + "name", + "rangefont", + "stream", + "tickfont", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dimensions(self): + """ + The dimensions (variables) of the parallel coordinates chart. + 2..60 dimensions are supported. + + The 'dimensions' property is a tuple of instances of + Dimension that may be specified as: + - A list or tuple of instances of plotly.graph_objs.parcoords.Dimension + - A list or tuple of dicts of string/value properties that + will be passed to the Dimension constructor + + Returns + ------- + tuple[plotly.graph_objs.parcoords.Dimension] + """ + return self["dimensions"] + + @dimensions.setter + def dimensions(self, val): + self["dimensions"] = val + + @property + def dimensiondefaults(self): + """ + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets the + default property values to use for elements of + parcoords.dimensions + + The 'dimensiondefaults' property is an instance of Dimension + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Dimension` + - A dict of string/value properties that will be passed + to the Dimension constructor + + Returns + ------- + plotly.graph_objs.parcoords.Dimension + """ + return self["dimensiondefaults"] + + @dimensiondefaults.setter + def dimensiondefaults(self, val): + self["dimensiondefaults"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.parcoords.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def labelangle(self): + """ + 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". + + The 'labelangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["labelangle"] + + @labelangle.setter + def labelangle(self, val): + self["labelangle"] = val + + @property + def labelfont(self): + """ + Sets the font for the `dimension` labels. + + The 'labelfont' property is an instance of Labelfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Labelfont` + - A dict of string/value properties that will be passed + to the Labelfont constructor + + Returns + ------- + plotly.graph_objs.parcoords.Labelfont + """ + return self["labelfont"] + + @labelfont.setter + def labelfont(self, val): + self["labelfont"] = val + + @property + def labelside(self): + """ + 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". + + The 'labelside' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom'] + + Returns + ------- + Any + """ + return self["labelside"] + + @labelside.setter + def labelside(self, val): + self["labelside"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.parcoords.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.parcoords.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def rangefont(self): + """ + Sets the font for the `dimension` range values. + + The 'rangefont' property is an instance of Rangefont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Rangefont` + - A dict of string/value properties that will be passed + to the Rangefont constructor + + Returns + ------- + plotly.graph_objs.parcoords.Rangefont + """ + return self["rangefont"] + + @rangefont.setter + def rangefont(self, val): + self["rangefont"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.parcoords.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def tickfont(self): + """ + Sets the font for the `dimension` tick values. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.parcoords.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.parcoords.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dimensions + The dimensions (variables) of the parallel coordinates + chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions + domain + :class:`plotly.graph_objects.parcoords.Domain` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + labelangle + 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". + labelfont + Sets the font for the `dimension` labels. + labelside + 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". + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.parcoords.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcoords.Line` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + rangefont + Sets the font for the `dimension` range values. + stream + :class:`plotly.graph_objects.parcoords.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `dimension` tick values. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.parcoords.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + customdata=None, + customdatasrc=None, + dimensions=None, + dimensiondefaults=None, + domain=None, + ids=None, + idssrc=None, + labelangle=None, + labelfont=None, + labelside=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + meta=None, + metasrc=None, + name=None, + rangefont=None, + stream=None, + tickfont=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Parcoords object + + Parallel coordinates for multidimensional exploratory data + analysis. The samples are specified in `dimensions`. The colors + are set in `line.color`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Parcoords` + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dimensions + The dimensions (variables) of the parallel coordinates + chart. 2..60 dimensions are supported. + dimensiondefaults + When used in a template (as + layout.template.data.parcoords.dimensiondefaults), sets + the default property values to use for elements of + parcoords.dimensions + domain + :class:`plotly.graph_objects.parcoords.Domain` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + labelangle + 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". + labelfont + Sets the font for the `dimension` labels. + labelside + 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". + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.parcoords.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.parcoords.Line` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + rangefont + Sets the font for the `dimension` range values. + stream + :class:`plotly.graph_objects.parcoords.Stream` instance + or dict with compatible properties + tickfont + Sets the font for the `dimension` tick values. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.parcoords.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Parcoords + """ + super().__init__("parcoords") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Parcoords +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Parcoords`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dimensions", arg, dimensions) + self._set_property("dimensiondefaults", arg, dimensiondefaults) + self._set_property("domain", arg, domain) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("labelangle", arg, labelangle) + self._set_property("labelfont", arg, labelfont) + self._set_property("labelside", arg, labelside) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("rangefont", arg, rangefont) + self._set_property("stream", arg, stream) + self._set_property("tickfont", arg, tickfont) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "parcoords" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_pie.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_pie.py new file mode 100644 index 0000000..f2eda4a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_pie.py @@ -0,0 +1,1869 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Pie(_BaseTraceType): + _parent_path_str = "" + _path_str = "pie" + _valid_props = { + "automargin", + "customdata", + "customdatasrc", + "direction", + "dlabel", + "domain", + "hole", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextfont", + "insidetextorientation", + "label0", + "labels", + "labelssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "opacity", + "outsidetextfont", + "pull", + "pullsrc", + "rotation", + "scalegroup", + "showlegend", + "sort", + "stream", + "text", + "textfont", + "textinfo", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "title", + "type", + "uid", + "uirevision", + "values", + "valuessrc", + "visible", + } + + @property + def automargin(self): + """ + Determines whether outside text labels can push the margins. + + The 'automargin' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["automargin"] + + @automargin.setter + def automargin(self, val): + self["automargin"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def direction(self): + """ + Specifies the direction at which succeeding sectors follow one + another. + + The 'direction' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['clockwise', 'counterclockwise'] + + Returns + ------- + Any + """ + return self["direction"] + + @direction.setter + def direction(self, val): + self["direction"] = val + + @property + def dlabel(self): + """ + Sets the label step. See `label0` for more info. + + The 'dlabel' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dlabel"] + + @dlabel.setter + def dlabel(self, val): + self["dlabel"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.pie.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hole(self): + """ + Sets the fraction of the radius to cut out of the pie. Use this + to make a donut chart. + + The 'hole' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["hole"] + + @hole.setter + def hole(self, val): + self["hole"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'percent', 'name'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.pie.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `textinfo` lying inside the sector. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.pie.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def insidetextorientation(self): + """ + 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. + + The 'insidetextorientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['horizontal', 'radial', 'tangential', 'auto'] + + Returns + ------- + Any + """ + return self["insidetextorientation"] + + @insidetextorientation.setter + def insidetextorientation(self, val): + self["insidetextorientation"] = val + + @property + def label0(self): + """ + Alternate to `labels`. Builds a numeric set of labels. Use with + `dlabel` where `label0` is the starting label and `dlabel` the + step. + + The 'label0' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["label0"] + + @label0.setter + def label0(self, val): + self["label0"] = val + + @property + def labels(self): + """ + 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. + + The 'labels' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["labels"] + + @labels.setter + def labels(self, val): + self["labels"] = val + + @property + def labelssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `labels`. + + The 'labelssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelssrc"] + + @labelssrc.setter + def labelssrc(self, val): + self["labelssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.pie.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.pie.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def outsidetextfont(self): + """ + Sets the font used for `textinfo` lying outside the sector. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.pie.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def pull(self): + """ + 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. + + The 'pull' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["pull"] + + @pull.setter + def pull(self, val): + self["pull"] = val + + @property + def pullsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `pull`. + + The 'pullsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["pullsrc"] + + @pullsrc.setter + def pullsrc(self, val): + self["pullsrc"] = val + + @property + def rotation(self): + """ + Instead of the first slice starting at 12 o'clock, rotate to + some other angle. + + The 'rotation' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["rotation"] + + @rotation.setter + def rotation(self, val): + self["rotation"] = val + + @property + def scalegroup(self): + """ + 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. + + The 'scalegroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["scalegroup"] + + @scalegroup.setter + def scalegroup(self, val): + self["scalegroup"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def sort(self): + """ + Determines whether or not the sectors are reordered from + largest to smallest. + + The 'sort' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["sort"] + + @sort.setter + def sort(self, val): + self["sort"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.pie.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the font used for `textinfo`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.pie.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'percent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textposition(self): + """ + Specifies the location of the `textinfo`. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'auto', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.pie.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def values(self): + """ + Sets the values of the sectors. If omitted, we count + occurrences of each label. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + automargin + Determines whether outside text labels can push the + margins. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + direction + Specifies the direction at which succeeding sectors + follow one another. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.pie.Domain` instance or + dict with compatible properties + hole + Sets the fraction of the radius to cut out of the pie. + Use this to make a donut chart. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.pie.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.pie.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.pie.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + Sets the font used for `textinfo` lying outside the + sector. + pull + 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. + pullsrc + Sets the source reference on Chart Studio Cloud for + `pull`. + rotation + Instead of the first slice starting at 12 o'clock, + rotate to some other angle. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.pie.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.pie.Title` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + """ + + def __init__( + self, + arg=None, + automargin=None, + customdata=None, + customdatasrc=None, + direction=None, + dlabel=None, + domain=None, + hole=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + insidetextorientation=None, + label0=None, + labels=None, + labelssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + pull=None, + pullsrc=None, + rotation=None, + scalegroup=None, + showlegend=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + title=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Pie object + + A data visualized by the sectors of the pie is set in `values`. + The sector labels are set in `labels`. The sector colors are + set in `marker.colors` + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Pie` + automargin + Determines whether outside text labels can push the + margins. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + direction + Specifies the direction at which succeeding sectors + follow one another. + dlabel + Sets the label step. See `label0` for more info. + domain + :class:`plotly.graph_objects.pie.Domain` instance or + dict with compatible properties + hole + Sets the fraction of the radius to cut out of the pie. + Use this to make a donut chart. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.pie.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + label0 + Alternate to `labels`. Builds a numeric set of labels. + Use with `dlabel` where `label0` is the starting label + and `dlabel` the step. + labels + 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. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.pie.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.pie.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + Sets the font used for `textinfo` lying outside the + sector. + pull + 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. + pullsrc + Sets the source reference on Chart Studio Cloud for + `pull`. + rotation + Instead of the first slice starting at 12 o'clock, + rotate to some other angle. + scalegroup + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.pie.Stream` instance or + dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Specifies the location of the `textinfo`. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + title + :class:`plotly.graph_objects.pie.Title` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values of the sectors. If omitted, we count + occurrences of each label. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + + Returns + ------- + Pie + """ + super().__init__("pie") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Pie +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Pie`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("automargin", arg, automargin) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("direction", arg, direction) + self._set_property("dlabel", arg, dlabel) + self._set_property("domain", arg, domain) + self._set_property("hole", arg, hole) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("insidetextorientation", arg, insidetextorientation) + self._set_property("label0", arg, label0) + self._set_property("labels", arg, labels) + self._set_property("labelssrc", arg, labelssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("pull", arg, pull) + self._set_property("pullsrc", arg, pullsrc) + self._set_property("rotation", arg, rotation) + self._set_property("scalegroup", arg, scalegroup) + self._set_property("showlegend", arg, showlegend) + self._set_property("sort", arg, sort) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("title", arg, title) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + + self._props["type"] = "pie" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_sankey.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_sankey.py new file mode 100644 index 0000000..0190fcf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_sankey.py @@ -0,0 +1,966 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Sankey(_BaseTraceType): + _parent_path_str = "" + _path_str = "sankey" + _valid_props = { + "arrangement", + "customdata", + "customdatasrc", + "domain", + "hoverinfo", + "hoverlabel", + "ids", + "idssrc", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "link", + "meta", + "metasrc", + "name", + "node", + "orientation", + "selectedpoints", + "stream", + "textfont", + "type", + "uid", + "uirevision", + "valueformat", + "valuesuffix", + "visible", + } + + @property + def arrangement(self): + """ + 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. + + The 'arrangement' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['snap', 'perpendicular', 'freeform', 'fixed'] + + Returns + ------- + Any + """ + return self["arrangement"] + + @arrangement.setter + def arrangement(self, val): + self["arrangement"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.sankey.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of [] joined with '+' characters + (e.g. '') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + + Returns + ------- + Any + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.sankey.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.sankey.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def link(self): + """ + The links of the Sankey plot. + + The 'link' property is an instance of Link + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Link` + - A dict of string/value properties that will be passed + to the Link constructor + + Returns + ------- + plotly.graph_objs.sankey.Link + """ + return self["link"] + + @link.setter + def link(self, val): + self["link"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def node(self): + """ + The nodes of the Sankey plot. + + The 'node' property is an instance of Node + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Node` + - A dict of string/value properties that will be passed + to the Node constructor + + Returns + ------- + plotly.graph_objs.sankey.Node + """ + return self["node"] + + @node.setter + def node(self, val): + self["node"] = val + + @property + def orientation(self): + """ + Sets the orientation of the Sankey diagram. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.sankey.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def textfont(self): + """ + Sets the font for node labels + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.sankey.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def valueformat(self): + """ + 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. + + The 'valueformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["valueformat"] + + @valueformat.setter + def valueformat(self, val): + self["valueformat"] = val + + @property + def valuesuffix(self): + """ + Adds a unit to follow the value in the hover tooltip. Add a + space if a separation is necessary from the value. + + The 'valuesuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["valuesuffix"] + + @valuesuffix.setter + def valuesuffix(self, val): + self["valuesuffix"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + arrangement + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sankey.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.Hoverlabel` + instance or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sankey.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + link + The links of the Sankey plot. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + node + The nodes of the Sankey plot. + orientation + Sets the orientation of the Sankey diagram. + selectedpoints + 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. + stream + :class:`plotly.graph_objects.sankey.Stream` instance or + dict with compatible properties + textfont + Sets the font for node labels + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + valueformat + 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. + valuesuffix + Adds a unit to follow the value in the hover tooltip. + Add a space if a separation is necessary from the + value. + visible + 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). + """ + + def __init__( + self, + arg=None, + arrangement=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverlabel=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + link=None, + meta=None, + metasrc=None, + name=None, + node=None, + orientation=None, + selectedpoints=None, + stream=None, + textfont=None, + uid=None, + uirevision=None, + valueformat=None, + valuesuffix=None, + visible=None, + **kwargs, + ): + """ + Construct a new Sankey object + + Sankey plots for network flow data analysis. The nodes are + specified in `nodes` and the links between sources and targets + in `links`. The colors are set in `nodes[i].color` and + `links[i].color`, otherwise defaults are used. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Sankey` + arrangement + 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. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sankey.Domain` instance or + dict with compatible properties + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.Hoverlabel` + instance or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sankey.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + link + The links of the Sankey plot. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + node + The nodes of the Sankey plot. + orientation + Sets the orientation of the Sankey diagram. + selectedpoints + 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. + stream + :class:`plotly.graph_objects.sankey.Stream` instance or + dict with compatible properties + textfont + Sets the font for node labels + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + valueformat + 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. + valuesuffix + Adds a unit to follow the value in the hover tooltip. + Add a space if a separation is necessary from the + value. + visible + 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). + + Returns + ------- + Sankey + """ + super().__init__("sankey") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Sankey +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Sankey`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("arrangement", arg, arrangement) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("domain", arg, domain) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("link", arg, link) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("node", arg, node) + self._set_property("orientation", arg, orientation) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("stream", arg, stream) + self._set_property("textfont", arg, textfont) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("valueformat", arg, valueformat) + self._set_property("valuesuffix", arg, valuesuffix) + self._set_property("visible", arg, visible) + + self._props["type"] = "sankey" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter.py new file mode 100644 index 0000000..9bef62b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter.py @@ -0,0 +1,2750 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scatter(_BaseTraceType): + _parent_path_str = "" + _path_str = "scatter" + _valid_props = { + "alignmentgroup", + "cliponaxis", + "connectgaps", + "customdata", + "customdatasrc", + "dx", + "dy", + "error_x", + "error_y", + "fill", + "fillcolor", + "fillgradient", + "fillpattern", + "groupnorm", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "offsetgroup", + "opacity", + "orientation", + "selected", + "selectedpoints", + "showlegend", + "stackgaps", + "stackgroup", + "stream", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "x", + "x0", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "y", + "y0", + "yaxis", + "ycalendar", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def error_x(self): + """ + The 'error_x' property is an instance of ErrorX + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.ErrorX` + - A dict of string/value properties that will be passed + to the ErrorX constructor + + Returns + ------- + plotly.graph_objs.scatter.ErrorX + """ + return self["error_x"] + + @error_x.setter + def error_x(self, val): + self["error_x"] = val + + @property + def error_y(self): + """ + The 'error_y' property is an instance of ErrorY + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.ErrorY` + - A dict of string/value properties that will be passed + to the ErrorY constructor + + Returns + ------- + plotly.graph_objs.scatter.ErrorY + """ + return self["error_y"] + + @error_y.setter + def error_y(self, val): + self["error_y"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'tozeroy', 'tozerox', 'tonexty', 'tonextx', + 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + 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. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def fillgradient(self): + """ + Sets a fill gradient. If not specified, the fillcolor is used + instead. + + The 'fillgradient' property is an instance of Fillgradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Fillgradient` + - A dict of string/value properties that will be passed + to the Fillgradient constructor + + Returns + ------- + plotly.graph_objs.scatter.Fillgradient + """ + return self["fillgradient"] + + @fillgradient.setter + def fillgradient(self, val): + self["fillgradient"] = val + + @property + def fillpattern(self): + """ + Sets the pattern within the marker. + + The 'fillpattern' property is an instance of Fillpattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Fillpattern` + - A dict of string/value properties that will be passed + to the Fillpattern constructor + + Returns + ------- + plotly.graph_objs.scatter.Fillpattern + """ + return self["fillpattern"] + + @fillpattern.setter + def fillpattern(self, val): + self["fillpattern"] = val + + @property + def groupnorm(self): + """ + 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. + + The 'groupnorm' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', 'fraction', 'percent'] + + Returns + ------- + Any + """ + return self["groupnorm"] + + @groupnorm.setter + def groupnorm(self, val): + self["groupnorm"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scatter.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + 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". + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['points', 'fills'] joined with '+' characters + (e.g. 'points+fills') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scatter.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatter.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatter.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + 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`. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scatter.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stackgaps(self): + """ + 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. + + The 'stackgaps' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['infer zero', 'interpolate'] + + Returns + ------- + Any + """ + return self["stackgaps"] + + @stackgaps.setter + def stackgaps(self, val): + self["stackgaps"] = val + + @property + def stackgroup(self): + """ + 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. + + The 'stackgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["stackgroup"] + + @stackgroup.setter + def stackgroup(self, val): + self["stackgroup"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scatter.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatter.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every attributes that can be specified per- + point (the ones that are `arrayOk: true`) are available. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scatter.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scatter.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + 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. + fillgradient + Sets a fill gradient. If not specified, the fillcolor + is used instead. + fillpattern + Sets the pattern within the marker. + groupnorm + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.scatter.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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`. + selected + :class:`plotly.graph_objects.scatter.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stackgaps + 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. + stackgroup + 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. + stream + :class:`plotly.graph_objects.scatter.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatter.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + fill=None, + fillcolor=None, + fillgradient=None, + fillpattern=None, + groupnorm=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + offsetgroup=None, + opacity=None, + orientation=None, + selected=None, + selectedpoints=None, + showlegend=None, + stackgaps=None, + stackgroup=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Scatter object + + The scatter trace type encompasses line charts, scatter charts, + text charts, and bubble charts. The data visualized as scatter + point or lines is set in `x` and `y`. Text (appearing either on + the chart or on hover only) is via `text`. Bubble charts are + achieved by setting `marker.size` and/or `marker.color` to + numerical arrays. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scatter` + alignmentgroup + 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. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scatter.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + 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. + fillgradient + Sets a fill gradient. If not specified, the fillcolor + is used instead. + fillpattern + Sets the pattern within the marker. + groupnorm + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.scatter.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + 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`. + selected + :class:`plotly.graph_objects.scatter.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stackgaps + 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. + stackgroup + 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. + stream + :class:`plotly.graph_objects.scatter.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatter.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Scatter + """ + super().__init__("scatter") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scatter +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scatter`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("error_x", arg, error_x) + self._set_property("error_y", arg, error_y) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("fillgradient", arg, fillgradient) + self._set_property("fillpattern", arg, fillpattern) + self._set_property("groupnorm", arg, groupnorm) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stackgaps", arg, stackgaps) + self._set_property("stackgroup", arg, stackgroup) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "scatter" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter3d.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter3d.py new file mode 100644 index 0000000..229056e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatter3d.py @@ -0,0 +1,1995 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scatter3d(_BaseTraceType): + _parent_path_str = "" + _path_str = "scatter3d" + _valid_props = { + "connectgaps", + "customdata", + "customdatasrc", + "error_x", + "error_y", + "error_z", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "projection", + "scene", + "showlegend", + "stream", + "surfaceaxis", + "surfacecolor", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "visible", + "x", + "xcalendar", + "xhoverformat", + "xsrc", + "y", + "ycalendar", + "yhoverformat", + "ysrc", + "z", + "zcalendar", + "zhoverformat", + "zsrc", + } + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def error_x(self): + """ + The 'error_x' property is an instance of ErrorX + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.ErrorX` + - A dict of string/value properties that will be passed + to the ErrorX constructor + + Returns + ------- + plotly.graph_objs.scatter3d.ErrorX + """ + return self["error_x"] + + @error_x.setter + def error_x(self, val): + self["error_x"] = val + + @property + def error_y(self): + """ + The 'error_y' property is an instance of ErrorY + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.ErrorY` + - A dict of string/value properties that will be passed + to the ErrorY constructor + + Returns + ------- + plotly.graph_objs.scatter3d.ErrorY + """ + return self["error_y"] + + @error_y.setter + def error_y(self, val): + self["error_y"] = val + + @property + def error_z(self): + """ + The 'error_z' property is an instance of ErrorZ + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.ErrorZ` + - A dict of string/value properties that will be passed + to the ErrorZ constructor + + Returns + ------- + plotly.graph_objs.scatter3d.ErrorZ + """ + return self["error_z"] + + @error_z.setter + def error_z(self, val): + self["error_z"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def projection(self): + """ + The 'projection' property is an instance of Projection + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Projection` + - A dict of string/value properties that will be passed + to the Projection constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Projection + """ + return self["projection"] + + @projection.setter + def projection(self, val): + self["projection"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def surfaceaxis(self): + """ + 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. + + The 'surfaceaxis' property is an enumeration that may be specified as: + - One of the following enumeration values: + [-1, 0, 1, 2] + + Returns + ------- + Any + """ + return self["surfaceaxis"] + + @surfaceaxis.setter + def surfaceaxis(self, val): + self["surfaceaxis"] = val + + @property + def surfacecolor(self): + """ + Sets the surface fill color. + + The 'surfacecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["surfacecolor"] + + @surfacecolor.setter + def surfacecolor(self, val): + self["surfacecolor"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatter3d.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every attributes that can be specified per- + point (the ones that are `arrayOk: true`) are available. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the z coordinates. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zcalendar(self): + """ + Sets the calendar system to use with `z` date data. + + The 'zcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["zcalendar"] + + @zcalendar.setter + def zcalendar(self, val): + self["zcalendar"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.scatter3d.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter3d.ErrorY` instance + or dict with compatible properties + error_z + :class:`plotly.graph_objects.scatter3d.ErrorZ` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter3d.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter3d.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scatter3d.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + projection + :class:`plotly.graph_objects.scatter3d.Projection` + instance or dict with compatible properties + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatter3d.Stream` instance + or dict with compatible properties + surfaceaxis + 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. + surfacecolor + Sets the surface fill color. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + error_x=None, + error_y=None, + error_z=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + projection=None, + scene=None, + showlegend=None, + stream=None, + surfaceaxis=None, + surfacecolor=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Scatter3d object + + The data visualized as scatter point or lines in 3D dimension + is set in `x`, `y`, `z`. Text (appearing either on the chart or + on hover only) is via `text`. Bubble charts are achieved by + setting `marker.size` and/or `marker.color` Projections are + achieved via `projection`. Surface fills are achieved via + `surfaceaxis`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scatter3d` + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + error_x + :class:`plotly.graph_objects.scatter3d.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scatter3d.ErrorY` instance + or dict with compatible properties + error_z + :class:`plotly.graph_objects.scatter3d.ErrorZ` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatter3d.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatter3d.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatter3d.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scatter3d.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + projection + :class:`plotly.graph_objects.scatter3d.Projection` + instance or dict with compatible properties + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatter3d.Stream` instance + or dict with compatible properties + surfaceaxis + 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. + surfacecolor + Sets the surface fill color. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Scatter3d + """ + super().__init__("scatter3d") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scatter3d +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scatter3d`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("error_x", arg, error_x) + self._set_property("error_y", arg, error_y) + self._set_property("error_z", arg, error_z) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("projection", arg, projection) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("surfaceaxis", arg, surfaceaxis) + self._set_property("surfacecolor", arg, surfacecolor) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zcalendar", arg, zcalendar) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "scatter3d" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattercarpet.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattercarpet.py new file mode 100644 index 0000000..4b846bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattercarpet.py @@ -0,0 +1,1826 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scattercarpet(_BaseTraceType): + _parent_path_str = "" + _path_str = "scattercarpet" + _valid_props = { + "a", + "asrc", + "b", + "bsrc", + "carpet", + "connectgaps", + "customdata", + "customdatasrc", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "stream", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "xaxis", + "yaxis", + "zorder", + } + + @property + def a(self): + """ + Sets the a-axis coordinates. + + The 'a' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["a"] + + @a.setter + def a(self, val): + self["a"] = val + + @property + def asrc(self): + """ + Sets the source reference on Chart Studio Cloud for `a`. + + The 'asrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["asrc"] + + @asrc.setter + def asrc(self, val): + self["asrc"] = val + + @property + def b(self): + """ + Sets the b-axis coordinates. + + The 'b' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def bsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `b`. + + The 'bsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bsrc"] + + @bsrc.setter + def bsrc(self, val): + self["bsrc"] = val + + @property + def carpet(self): + """ + An identifier for this carpet, so that `scattercarpet` and + `contourcarpet` traces can specify a carpet plot on which they + lie + + The 'carpet' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["carpet"] + + @carpet.setter + def carpet(self, val): + self["carpet"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['a', 'b', 'text', 'name'] joined with '+' characters + (e.g. 'a+b') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + 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". + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['points', 'fills'] joined with '+' characters + (e.g. 'points+fills') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + a + Sets the a-axis coordinates. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + Sets the b-axis coordinates. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattercarpet.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattercarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattercarpet.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattercarpet.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattercarpet.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattercarpet.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattercarpet.Unselected` + instance or dict with compatible properties + visible + 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). + xaxis + 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. + yaxis + 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. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + a=None, + asrc=None, + b=None, + bsrc=None, + carpet=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + xaxis=None, + yaxis=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Scattercarpet object + + Plots a scatter trace on either the first carpet axis or the + carpet axis with a matching `carpet` attribute. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scattercarpet` + a + Sets the a-axis coordinates. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + Sets the b-axis coordinates. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + carpet + An identifier for this carpet, so that `scattercarpet` + and `contourcarpet` traces can specify a carpet plot on + which they lie + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattercarpet.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattercarpet.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattercarpet.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattercarpet.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattercarpet.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattercarpet.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattercarpet.Unselected` + instance or dict with compatible properties + visible + 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). + xaxis + 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. + yaxis + 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. + zorder + 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`. + + Returns + ------- + Scattercarpet + """ + super().__init__("scattercarpet") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scattercarpet +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scattercarpet`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("a", arg, a) + self._set_property("asrc", arg, asrc) + self._set_property("b", arg, b) + self._set_property("bsrc", arg, bsrc) + self._set_property("carpet", arg, carpet) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("xaxis", arg, xaxis) + self._set_property("yaxis", arg, yaxis) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "scattercarpet" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergeo.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergeo.py new file mode 100644 index 0000000..4c0fb09 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergeo.py @@ -0,0 +1,1854 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scattergeo(_BaseTraceType): + _parent_path_str = "" + _path_str = "scattergeo" + _valid_props = { + "connectgaps", + "customdata", + "customdatasrc", + "featureidkey", + "fill", + "fillcolor", + "geo", + "geojson", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "lat", + "latsrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "locationmode", + "locations", + "locationssrc", + "lon", + "lonsrc", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "stream", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def featureidkey(self): + """ + 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". + + The 'featureidkey' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["featureidkey"] + + @featureidkey.setter + def featureidkey(self, val): + self["featureidkey"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def geo(self): + """ + 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. + + The 'geo' property is an identifier of a particular + subplot, of type 'geo', that may be specified as the string 'geo' + optionally followed by an integer >= 1 + (e.g. 'geo', 'geo1', 'geo2', 'geo3', etc.) + + Returns + ------- + str + """ + return self["geo"] + + @geo.setter + def geo(self, val): + self["geo"] = val + + @property + def geojson(self): + """ + 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". + + The 'geojson' property accepts values of any type + + Returns + ------- + Any + """ + return self["geojson"] + + @geojson.setter + def geojson(self, val): + self["geojson"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lon', 'lat', 'location', 'text', 'name'] joined with '+' characters + (e.g. 'lon+lat') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def lat(self): + """ + Sets the latitude coordinates (in degrees North). + + The 'lat' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def latsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lat`. + + The 'latsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["latsrc"] + + @latsrc.setter + def latsrc(self, val): + self["latsrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def locationmode(self): + """ + 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. + + The 'locationmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['ISO-3', 'USA-states', 'country names', 'geojson-id'] + + Returns + ------- + Any + """ + return self["locationmode"] + + @locationmode.setter + def locationmode(self, val): + self["locationmode"] = val + + @property + def locations(self): + """ + Sets the coordinates via location IDs or names. Coordinates + correspond to the centroid of each location given. See + `locationmode` for more info. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def lon(self): + """ + Sets the longitude coordinates (in degrees East). + + The 'lon' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def lonsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lon`. + + The 'lonsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lonsrc"] + + @lonsrc.setter + def lonsrc(self, val): + self["lonsrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scattergeo.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergeo.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergeo.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergeo.Line` instance + or dict with compatible properties + locationmode + 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. + locations + Sets the coordinates via location IDs or names. + Coordinates correspond to the centroid of each location + given. See `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattergeo.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergeo.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergeo.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergeo.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + featureidkey=None, + fill=None, + fillcolor=None, + geo=None, + geojson=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + locationmode=None, + locations=None, + locationssrc=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scattergeo object + + The data visualized as scatter point or lines on a geographic + map is provided either by longitude/latitude pairs in `lon` and + `lat` respectively or by geographic location IDs or names in + `locations`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scattergeo` + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + featureidkey + 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". + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + geo + 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. + geojson + 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". + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergeo.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergeo.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergeo.Line` instance + or dict with compatible properties + locationmode + 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. + locations + Sets the coordinates via location IDs or names. + Coordinates correspond to the centroid of each location + given. See `locationmode` for more info. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattergeo.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergeo.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergeo.Stream` + instance or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergeo.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scattergeo + """ + super().__init__("scattergeo") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scattergeo +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scattergeo`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("featureidkey", arg, featureidkey) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("geo", arg, geo) + self._set_property("geojson", arg, geojson) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("lat", arg, lat) + self._set_property("latsrc", arg, latsrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("locationmode", arg, locationmode) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("lon", arg, lon) + self._set_property("lonsrc", arg, lonsrc) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scattergeo" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergl.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergl.py new file mode 100644 index 0000000..bccddc4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattergl.py @@ -0,0 +1,2287 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scattergl(_BaseTraceType): + _parent_path_str = "" + _path_str = "scattergl" + _valid_props = { + "connectgaps", + "customdata", + "customdatasrc", + "dx", + "dy", + "error_x", + "error_y", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "stream", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "x", + "x0", + "xaxis", + "xcalendar", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "y", + "y0", + "yaxis", + "ycalendar", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + } + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def error_x(self): + """ + The 'error_x' property is an instance of ErrorX + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.ErrorX` + - A dict of string/value properties that will be passed + to the ErrorX constructor + + Returns + ------- + plotly.graph_objs.scattergl.ErrorX + """ + return self["error_x"] + + @error_x.setter + def error_x(self, val): + self["error_x"] = val + + @property + def error_y(self): + """ + The 'error_y' property is an instance of ErrorY + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.ErrorY` + - A dict of string/value properties that will be passed + to the ErrorY constructor + + Returns + ------- + plotly.graph_objs.scattergl.ErrorY + """ + return self["error_y"] + + @error_y.setter + def error_y(self, val): + self["error_y"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'tozeroy', 'tozerox', 'tonexty', 'tonextx', + 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scattergl.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scattergl.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattergl.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattergl.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + Determines the drawing mode for this scatter trace. + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scattergl.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scattergl.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattergl.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every attributes that can be specified per- + point (the ones that are `arrayOk: true`) are available. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scattergl.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scattergl.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scattergl.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergl.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergl.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scattergl.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + Determines the drawing mode for this scatter trace. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergl.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergl.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + """ + + def __init__( + self, + arg=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dx=None, + dy=None, + error_x=None, + error_y=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + x=None, + x0=None, + xaxis=None, + xcalendar=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + ycalendar=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + **kwargs, + ): + """ + Construct a new Scattergl object + + The data visualized as scatter point or lines is set in `x` and + `y` using the WebGL plotting engine. Bubble charts are achieved + by setting `marker.size` and/or `marker.color` to a numerical + arrays. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scattergl` + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + error_x + :class:`plotly.graph_objects.scattergl.ErrorX` instance + or dict with compatible properties + error_y + :class:`plotly.graph_objects.scattergl.ErrorY` instance + or dict with compatible properties + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattergl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattergl.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattergl.Line` instance + or dict with compatible properties + marker + :class:`plotly.graph_objects.scattergl.Marker` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + Determines the drawing mode for this scatter trace. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattergl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattergl.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattergl.Unselected` + instance or dict with compatible properties + visible + 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). + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + + Returns + ------- + Scattergl + """ + super().__init__("scattergl") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scattergl +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scattergl`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("error_x", arg, error_x) + self._set_property("error_y", arg, error_y) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + + self._props["type"] = "scattergl" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermap.py new file mode 100644 index 0000000..a4b82a9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermap.py @@ -0,0 +1,1708 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scattermap(_BaseTraceType): + _parent_path_str = "" + _path_str = "scattermap" + _valid_props = { + "below", + "cluster", + "connectgaps", + "customdata", + "customdatasrc", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "lat", + "latsrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "lon", + "lonsrc", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "text", + "textfont", + "textposition", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def below(self): + """ + 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 "''". + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def cluster(self): + """ + The 'cluster' property is an instance of Cluster + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Cluster` + - A dict of string/value properties that will be passed + to the Cluster constructor + + Returns + ------- + plotly.graph_objs.scattermap.Cluster + """ + return self["cluster"] + + @cluster.setter + def cluster(self, val): + self["cluster"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lon', 'lat', 'text', 'name'] joined with '+' characters + (e.g. 'lon+lat') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scattermap.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def lat(self): + """ + Sets the latitude coordinates (in degrees North). + + The 'lat' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def latsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lat`. + + The 'latsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["latsrc"] + + @latsrc.setter + def latsrc(self, val): + self["latsrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scattermap.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattermap.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def lon(self): + """ + Sets the longitude coordinates (in degrees East). + + The 'lon' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def lonsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lon`. + + The 'lonsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lonsrc"] + + @lonsrc.setter + def lonsrc(self, val): + self["lonsrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattermap.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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. + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scattermap.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scattermap.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'map', that may be specified as the string 'map' + optionally followed by an integer >= 1 + (e.g. 'map', 'map1', 'map2', 'map3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + 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". + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattermap.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scattermap.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermap.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermap.Line` instance + or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermap.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + below=None, + cluster=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scattermap object + + The data visualized as scatter point, lines or marker symbols + on a MapLibre GL geographic map is provided by + longitude/latitude pairs in `lon` and `lat`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scattermap` + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermap.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermap.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermap.Line` instance + or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermap.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermap.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermap.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermap.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scattermap + """ + super().__init__("scattermap") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scattermap +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scattermap`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("below", arg, below) + self._set_property("cluster", arg, cluster) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("lat", arg, lat) + self._set_property("latsrc", arg, latsrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("lon", arg, lon) + self._set_property("lonsrc", arg, lonsrc) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scattermap" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermapbox.py new file mode 100644 index 0000000..3c20238 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattermapbox.py @@ -0,0 +1,1736 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy +import warnings + + +class Scattermapbox(_BaseTraceType): + _parent_path_str = "" + _path_str = "scattermapbox" + _valid_props = { + "below", + "cluster", + "connectgaps", + "customdata", + "customdatasrc", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "lat", + "latsrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "lon", + "lonsrc", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "text", + "textfont", + "textposition", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def below(self): + """ + 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 "''". + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def cluster(self): + """ + The 'cluster' property is an instance of Cluster + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Cluster` + - A dict of string/value properties that will be passed + to the Cluster constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Cluster + """ + return self["cluster"] + + @cluster.setter + def cluster(self, val): + self["cluster"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lon', 'lat', 'text', 'name'] joined with '+' characters + (e.g. 'lon+lat') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def lat(self): + """ + Sets the latitude coordinates (in degrees North). + + The 'lat' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def latsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lat`. + + The 'latsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["latsrc"] + + @latsrc.setter + def latsrc(self, val): + self["latsrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def lon(self): + """ + Sets the longitude coordinates (in degrees East). + + The 'lon' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def lonsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `lon`. + + The 'lonsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["lonsrc"] + + @lonsrc.setter + def lonsrc(self, val): + self["lonsrc"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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. + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'mapbox', that may be specified as the string 'mapbox' + optionally followed by an integer >= 1 + (e.g. 'mapbox', 'mapbox1', 'mapbox2', 'mapbox3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + 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". + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermapbox.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermapbox.Line` + instance or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermapbox.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + below=None, + cluster=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + lat=None, + latsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + lon=None, + lonsrc=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scattermapbox object + + "scattermapbox" trace is deprecated! Please consider switching + to the "scattermap" trace type and `map` subplots. Learn more + at: https://plotly.com/python/maplibre-migration/ as well as + https://plotly.com/javascript/maplibre-migration/ The data + visualized as scatter point, lines or marker symbols on a + Mapbox GL geographic map is provided by longitude/latitude + pairs in `lon` and `lat`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scattermapbox` + below + 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 "''". + cluster + :class:`plotly.graph_objects.scattermapbox.Cluster` + instance or dict with compatible properties + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattermapbox.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + lat + Sets the latitude coordinates (in degrees North). + latsrc + Sets the source reference on Chart Studio Cloud for + `lat`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattermapbox.Legendgroupt + itle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattermapbox.Line` + instance or dict with compatible properties + lon + Sets the longitude coordinates (in degrees East). + lonsrc + Sets the source reference on Chart Studio Cloud for + `lon`. + marker + :class:`plotly.graph_objects.scattermapbox.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scattermapbox.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattermapbox.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattermapbox.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scattermapbox + """ + super().__init__("scattermapbox") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scattermapbox +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scattermapbox`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("below", arg, below) + self._set_property("cluster", arg, cluster) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("lat", arg, lat) + self._set_property("latsrc", arg, latsrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("lon", arg, lon) + self._set_property("lonsrc", arg, lonsrc) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scattermapbox" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False + + warnings.warn( + "*scattermapbox* is deprecated!" + + " Use *scattermap* instead." + + " Learn more at: https://plotly.com/python/mapbox-to-maplibre/", + stacklevel=2, + category=DeprecationWarning, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolar.py new file mode 100644 index 0000000..5168023 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolar.py @@ -0,0 +1,1913 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scatterpolar(_BaseTraceType): + _parent_path_str = "" + _path_str = "scatterpolar" + _valid_props = { + "cliponaxis", + "connectgaps", + "customdata", + "customdatasrc", + "dr", + "dtheta", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "r", + "r0", + "rsrc", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "theta", + "theta0", + "thetasrc", + "thetaunit", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dr(self): + """ + Sets the r coordinate step. + + The 'dr' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dr"] + + @dr.setter + def dr(self, val): + self["dr"] = val + + @property + def dtheta(self): + """ + Sets the theta coordinate step. By default, the `dtheta` step + equals the subplot's period divided by the length of the `r` + coordinates. + + The 'dtheta' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dtheta"] + + @dtheta.setter + def dtheta(self, val): + self["dtheta"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['r', 'theta', 'text', 'name'] joined with '+' characters + (e.g. 'r+theta') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + 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". + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['points', 'fills'] joined with '+' characters + (e.g. 'points+fills') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def r(self): + """ + Sets the radial coordinates + + The 'r' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def r0(self): + """ + Alternate to `r`. Builds a linear space of r coordinates. Use + with `dr` where `r0` is the starting coordinate and `dr` the + step. + + The 'r0' property accepts values of any type + + Returns + ------- + Any + """ + return self["r0"] + + @r0.setter + def r0(self, val): + self["r0"] = val + + @property + def rsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `r`. + + The 'rsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["rsrc"] + + @rsrc.setter + def rsrc(self, val): + self["rsrc"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'polar', that may be specified as the string 'polar' + optionally followed by an integer >= 1 + (e.g. 'polar', 'polar1', 'polar2', 'polar3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def theta(self): + """ + Sets the angular coordinates + + The 'theta' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["theta"] + + @theta.setter + def theta(self, val): + self["theta"] = val + + @property + def theta0(self): + """ + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the starting + coordinate and `dtheta` the step. + + The 'theta0' property accepts values of any type + + Returns + ------- + Any + """ + return self["theta0"] + + @theta0.setter + def theta0(self, val): + self["theta0"] = val + + @property + def thetasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `theta`. + + The 'thetasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["thetasrc"] + + @thetasrc.setter + def thetasrc(self, val): + self["thetasrc"] = val + + @property + def thetaunit(self): + """ + Sets the unit of input "theta" values. Has an effect only when + on "linear" angular axes. + + The 'thetaunit' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radians', 'degrees', 'gradians'] + + Returns + ------- + Any + """ + return self["thetaunit"] + + @thetaunit.setter + def thetaunit(self, val): + self["thetaunit"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolar.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolar.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolar.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolar.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolar.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolar.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scatterpolar object + + The scatterpolar trace type encompasses line charts, scatter + charts, text charts, and bubble charts in polar coordinates. + The data visualized as scatter point or lines is set in `r` + (radial) and `theta` (angular) coordinates Text (appearing + either on the chart or on hover only) is via `text`. Bubble + charts are achieved by setting `marker.size` and/or + `marker.color` to numerical arrays. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scatterpolar` + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolar.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolar.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolar.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolar.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolar.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolar.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolar.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scatterpolar + """ + super().__init__("scatterpolar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scatterpolar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scatterpolar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dr", arg, dr) + self._set_property("dtheta", arg, dtheta) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("r", arg, r) + self._set_property("r0", arg, r0) + self._set_property("rsrc", arg, rsrc) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("theta", arg, theta) + self._set_property("theta0", arg, theta0) + self._set_property("thetasrc", arg, thetasrc) + self._set_property("thetaunit", arg, thetaunit) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scatterpolar" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolargl.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolargl.py new file mode 100644 index 0000000..f75aa05 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterpolargl.py @@ -0,0 +1,1874 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scatterpolargl(_BaseTraceType): + _parent_path_str = "" + _path_str = "scatterpolargl" + _valid_props = { + "connectgaps", + "customdata", + "customdatasrc", + "dr", + "dtheta", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "r", + "r0", + "rsrc", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "theta", + "theta0", + "thetasrc", + "thetaunit", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def dr(self): + """ + Sets the r coordinate step. + + The 'dr' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dr"] + + @dr.setter + def dr(self, val): + self["dr"] = val + + @property + def dtheta(self): + """ + Sets the theta coordinate step. By default, the `dtheta` step + equals the subplot's period divided by the length of the `r` + coordinates. + + The 'dtheta' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dtheta"] + + @dtheta.setter + def dtheta(self, val): + self["dtheta"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'tozeroy', 'tozerox', 'tonexty', 'tonextx', + 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['r', 'theta', 'text', 'name'] joined with '+' characters + (e.g. 'r+theta') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def r(self): + """ + Sets the radial coordinates + + The 'r' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def r0(self): + """ + Alternate to `r`. Builds a linear space of r coordinates. Use + with `dr` where `r0` is the starting coordinate and `dr` the + step. + + The 'r0' property accepts values of any type + + Returns + ------- + Any + """ + return self["r0"] + + @r0.setter + def r0(self, val): + self["r0"] = val + + @property + def rsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `r`. + + The 'rsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["rsrc"] + + @rsrc.setter + def rsrc(self, val): + self["rsrc"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'polar', that may be specified as the string 'polar' + optionally followed by an integer >= 1 + (e.g. 'polar', 'polar1', 'polar2', 'polar3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def theta(self): + """ + Sets the angular coordinates + + The 'theta' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["theta"] + + @theta.setter + def theta(self, val): + self["theta"] = val + + @property + def theta0(self): + """ + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the starting + coordinate and `dtheta` the step. + + The 'theta0' property accepts values of any type + + Returns + ------- + Any + """ + return self["theta0"] + + @theta0.setter + def theta0(self, val): + self["theta0"] = val + + @property + def thetasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `theta`. + + The 'thetasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["thetasrc"] + + @thetasrc.setter + def thetasrc(self, val): + self["thetasrc"] = val + + @property + def thetaunit(self): + """ + Sets the unit of input "theta" values. Has an effect only when + on "linear" angular axes. + + The 'thetaunit' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radians', 'degrees', 'gradians'] + + Returns + ------- + Any + """ + return self["thetaunit"] + + @thetaunit.setter + def thetaunit(self, val): + self["thetaunit"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolargl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolargl.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolargl.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolargl.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolargl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolargl.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolargl.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + dr=None, + dtheta=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + r=None, + r0=None, + rsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + theta=None, + theta0=None, + thetasrc=None, + thetaunit=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scatterpolargl object + + The scatterpolargl trace type encompasses line charts, scatter + charts, and bubble charts in polar coordinates using the WebGL + plotting engine. The data visualized as scatter point or lines + is set in `r` (radial) and `theta` (angular) coordinates Bubble + charts are achieved by setting `marker.size` and/or + `marker.color` to numerical arrays. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.Scatterpolargl` + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + dr + Sets the r coordinate step. + dtheta + Sets the theta coordinate step. By default, the + `dtheta` step equals the subplot's period divided by + the length of the `r` coordinates. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterpolargl.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterpolargl.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterpolargl.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterpolargl.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + r + Sets the radial coordinates + r0 + Alternate to `r`. Builds a linear space of r + coordinates. Use with `dr` where `r0` is the starting + coordinate and `dr` the step. + rsrc + Sets the source reference on Chart Studio Cloud for + `r`. + selected + :class:`plotly.graph_objects.scatterpolargl.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterpolargl.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + theta + Sets the angular coordinates + theta0 + Alternate to `theta`. Builds a linear space of theta + coordinates. Use with `dtheta` where `theta0` is the + starting coordinate and `dtheta` the step. + thetasrc + Sets the source reference on Chart Studio Cloud for + `theta`. + thetaunit + Sets the unit of input "theta" values. Has an effect + only when on "linear" angular axes. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterpolargl.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scatterpolargl + """ + super().__init__("scatterpolargl") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scatterpolargl +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scatterpolargl`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("dr", arg, dr) + self._set_property("dtheta", arg, dtheta) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("r", arg, r) + self._set_property("r0", arg, r0) + self._set_property("rsrc", arg, rsrc) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("theta", arg, theta) + self._set_property("theta0", arg, theta0) + self._set_property("thetasrc", arg, thetasrc) + self._set_property("thetaunit", arg, thetaunit) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scatterpolargl" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattersmith.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattersmith.py new file mode 100644 index 0000000..e43d34b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scattersmith.py @@ -0,0 +1,1779 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scattersmith(_BaseTraceType): + _parent_path_str = "" + _path_str = "scattersmith" + _valid_props = { + "cliponaxis", + "connectgaps", + "customdata", + "customdatasrc", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "imag", + "imagsrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "real", + "realsrc", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['real', 'imag', 'text', 'name'] joined with '+' characters + (e.g. 'real+imag') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + 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". + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['points', 'fills'] joined with '+' characters + (e.g. 'points+fills') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def imag(self): + """ + Sets the imaginary component of the data, in units of + normalized impedance such that real=1, imag=0 is the center of + the chart. + + The 'imag' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["imag"] + + @imag.setter + def imag(self, val): + self["imag"] = val + + @property + def imagsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `imag`. + + The 'imagsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["imagsrc"] + + @imagsrc.setter + def imagsrc(self, val): + self["imagsrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def real(self): + """ + Sets the real component of the data, in units of normalized + impedance such that real=1, imag=0 is the center of the chart. + + The 'real' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["real"] + + @real.setter + def real(self, val): + self["real"] = val + + @property + def realsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `real`. + + The 'realsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["realsrc"] + + @realsrc.setter + def realsrc(self, val): + self["realsrc"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'smith', that may be specified as the string 'smith' + optionally followed by an integer >= 1 + (e.g. 'smith', 'smith1', 'smith2', 'smith3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scattersmith.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattersmith.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + imag + Sets the imaginary component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + imagsrc + Sets the source reference on Chart Studio Cloud for + `imag`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattersmith.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattersmith.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattersmith.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + real + Sets the real component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + realsrc + Sets the source reference on Chart Studio Cloud for + `real`. + selected + :class:`plotly.graph_objects.scattersmith.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattersmith.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattersmith.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + cliponaxis=None, + connectgaps=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + imag=None, + imagsrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + real=None, + realsrc=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scattersmith object + + The scattersmith trace type encompasses line charts, scatter + charts, text charts, and bubble charts in smith coordinates. + The data visualized as scatter point or lines is set in `real` + and `imag` (imaginary) coordinates Text (appearing either on + the chart or on hover only) is via `text`. Bubble charts are + achieved by setting `marker.size` and/or `marker.color` to + numerical arrays. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Scattersmith` + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scattersmith.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + imag + Sets the imaginary component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + imagsrc + Sets the source reference on Chart Studio Cloud for + `imag`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scattersmith.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scattersmith.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scattersmith.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + real + Sets the real component of the data, in units of + normalized impedance such that real=1, imag=0 is the + center of the chart. + realsrc + Sets the source reference on Chart Studio Cloud for + `real`. + selected + :class:`plotly.graph_objects.scattersmith.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scattersmith.Stream` + instance or dict with compatible properties + subplot + 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. + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scattersmith.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scattersmith + """ + super().__init__("scattersmith") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scattersmith +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scattersmith`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("imag", arg, imag) + self._set_property("imagsrc", arg, imagsrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("real", arg, real) + self._set_property("realsrc", arg, realsrc) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scattersmith" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterternary.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterternary.py new file mode 100644 index 0000000..db865ea --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_scatterternary.py @@ -0,0 +1,1889 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Scatterternary(_BaseTraceType): + _parent_path_str = "" + _path_str = "scatterternary" + _valid_props = { + "a", + "asrc", + "b", + "bsrc", + "c", + "cliponaxis", + "connectgaps", + "csrc", + "customdata", + "customdatasrc", + "fill", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meta", + "metasrc", + "mode", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "stream", + "subplot", + "sum", + "text", + "textfont", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + } + + @property + def a(self): + """ + 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`. + + The 'a' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["a"] + + @a.setter + def a(self, val): + self["a"] = val + + @property + def asrc(self): + """ + Sets the source reference on Chart Studio Cloud for `a`. + + The 'asrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["asrc"] + + @asrc.setter + def asrc(self, val): + self["asrc"] = val + + @property + def b(self): + """ + 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`. + + The 'b' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def bsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `b`. + + The 'bsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bsrc"] + + @bsrc.setter + def bsrc(self, val): + self["bsrc"] = val + + @property + def c(self): + """ + 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`. + + The 'c' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["c"] + + @c.setter + def c(self, val): + self["c"] = val + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the provided data arrays are connected. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def csrc(self): + """ + Sets the source reference on Chart Studio Cloud for `c`. + + The 'csrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["csrc"] + + @csrc.setter + def csrc(self, val): + self["csrc"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'toself', 'tonext'] + + Returns + ------- + Any + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['a', 'b', 'c', 'text', 'name'] joined with '+' characters + (e.g. 'a+b') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + 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". + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['points', 'fills'] joined with '+' characters + (e.g. 'points+fills') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def mode(self): + """ + 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". + + The 'mode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['lines', 'markers', 'text'] joined with '+' characters + (e.g. 'lines+markers') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def subplot(self): + """ + 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. + + The 'subplot' property is an identifier of a particular + subplot, of type 'ternary', that may be specified as the string 'ternary' + optionally followed by an integer >= 1 + (e.g. 'ternary', 'ternary1', 'ternary2', 'ternary3', etc.) + + Returns + ------- + str + """ + return self["subplot"] + + @subplot.setter + def subplot(self, val): + self["subplot"] = val + + @property + def sum(self): + """ + 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 + + The 'sum' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sum"] + + @sum.setter + def sum(self, val): + self["sum"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the text font. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.scatterternary.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + a + 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`. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + 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`. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + c + 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`. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + csrc + Sets the source reference on Chart Studio Cloud for + `c`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterternary.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterternary.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterternary.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterternary.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scatterternary.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterternary.Stream` + instance or dict with compatible properties + subplot + 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. + sum + 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 + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterternary.Unselected` + instance or dict with compatible properties + visible + 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). + """ + + def __init__( + self, + arg=None, + a=None, + asrc=None, + b=None, + bsrc=None, + c=None, + cliponaxis=None, + connectgaps=None, + csrc=None, + customdata=None, + customdatasrc=None, + fill=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meta=None, + metasrc=None, + mode=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + stream=None, + subplot=None, + sum=None, + text=None, + textfont=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + **kwargs, + ): + """ + Construct a new Scatterternary object + + Provides similar functionality to the "scatter" type but on a + ternary phase diagram. The data is provided by at least two + arrays out of `a`, `b`, `c` triplets. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.Scatterternary` + a + 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`. + asrc + Sets the source reference on Chart Studio Cloud for + `a`. + b + 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`. + bsrc + Sets the source reference on Chart Studio Cloud for + `b`. + c + 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`. + cliponaxis + 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*. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the provided data arrays are connected. + csrc + Sets the source reference on Chart Studio Cloud for + `c`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fill + 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. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.scatterternary.Hoverlabel` + instance or dict with compatible properties + hoveron + 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". + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.scatterternary.Legendgroup + title` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.scatterternary.Line` + instance or dict with compatible properties + marker + :class:`plotly.graph_objects.scatterternary.Marker` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + mode + 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". + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.scatterternary.Selected` + instance or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.scatterternary.Stream` + instance or dict with compatible properties + subplot + 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. + sum + 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 + text + 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. + textfont + Sets the text font. + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.scatterternary.Unselected` + instance or dict with compatible properties + visible + 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). + + Returns + ------- + Scatterternary + """ + super().__init__("scatterternary") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Scatterternary +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Scatterternary`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("a", arg, a) + self._set_property("asrc", arg, asrc) + self._set_property("b", arg, b) + self._set_property("bsrc", arg, bsrc) + self._set_property("c", arg, c) + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("csrc", arg, csrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("fill", arg, fill) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("mode", arg, mode) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("subplot", arg, subplot) + self._set_property("sum", arg, sum) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + + self._props["type"] = "scatterternary" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_splom.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_splom.py new file mode 100644 index 0000000..6dda185 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_splom.py @@ -0,0 +1,1520 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Splom(_BaseTraceType): + _parent_path_str = "" + _path_str = "splom" + _valid_props = { + "customdata", + "customdatasrc", + "diagonal", + "dimensiondefaults", + "dimensions", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "marker", + "meta", + "metasrc", + "name", + "opacity", + "selected", + "selectedpoints", + "showlegend", + "showlowerhalf", + "showupperhalf", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "xaxes", + "xhoverformat", + "yaxes", + "yhoverformat", + } + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def diagonal(self): + """ + The 'diagonal' property is an instance of Diagonal + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Diagonal` + - A dict of string/value properties that will be passed + to the Diagonal constructor + + Returns + ------- + plotly.graph_objs.splom.Diagonal + """ + return self["diagonal"] + + @diagonal.setter + def diagonal(self, val): + self["diagonal"] = val + + @property + def dimensions(self): + """ + The 'dimensions' property is a tuple of instances of + Dimension that may be specified as: + - A list or tuple of instances of plotly.graph_objs.splom.Dimension + - A list or tuple of dicts of string/value properties that + will be passed to the Dimension constructor + + Returns + ------- + tuple[plotly.graph_objs.splom.Dimension] + """ + return self["dimensions"] + + @dimensions.setter + def dimensions(self, val): + self["dimensions"] = val + + @property + def dimensiondefaults(self): + """ + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the default + property values to use for elements of splom.dimensions + + The 'dimensiondefaults' property is an instance of Dimension + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Dimension` + - A dict of string/value properties that will be passed + to the Dimension constructor + + Returns + ------- + plotly.graph_objs.splom.Dimension + """ + return self["dimensiondefaults"] + + @dimensiondefaults.setter + def dimensiondefaults(self, val): + self["dimensiondefaults"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.splom.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.splom.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.splom.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.splom.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showlowerhalf(self): + """ + Determines whether or not subplots on the lower half from the + diagonal are displayed. + + The 'showlowerhalf' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlowerhalf"] + + @showlowerhalf.setter + def showlowerhalf(self, val): + self["showlowerhalf"] = val + + @property + def showupperhalf(self): + """ + Determines whether or not subplots on the upper half from the + diagonal are displayed. + + The 'showupperhalf' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showupperhalf"] + + @showupperhalf.setter + def showupperhalf(self, val): + self["showupperhalf"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.splom.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.splom.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def xaxes(self): + """ + 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. + + The 'xaxes' property is an info array that may be specified as: + * a list of elements where: + The 'xaxes[i]' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + list + """ + return self["xaxes"] + + @xaxes.setter + def xaxes(self, val): + self["xaxes"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def yaxes(self): + """ + 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. + + The 'yaxes' property is an info array that may be specified as: + * a list of elements where: + The 'yaxes[i]' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + list + """ + return self["yaxes"] + + @yaxes.setter + def yaxes(self, val): + self["yaxes"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + diagonal + :class:`plotly.graph_objects.splom.Diagonal` instance + or dict with compatible properties + dimensions + A tuple of + :class:`plotly.graph_objects.splom.Dimension` instances + or dicts with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.splom.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.splom.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.splom.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.splom.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showlowerhalf + Determines whether or not subplots on the lower half + from the diagonal are displayed. + showupperhalf + Determines whether or not subplots on the upper half + from the diagonal are displayed. + stream + :class:`plotly.graph_objects.splom.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.splom.Unselected` instance + or dict with compatible properties + visible + 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). + xaxes + 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. + xhoverformat + 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`. + yaxes + 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. + yhoverformat + 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`. + """ + + def __init__( + self, + arg=None, + customdata=None, + customdatasrc=None, + diagonal=None, + dimensions=None, + dimensiondefaults=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + marker=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + selected=None, + selectedpoints=None, + showlegend=None, + showlowerhalf=None, + showupperhalf=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + xaxes=None, + xhoverformat=None, + yaxes=None, + yhoverformat=None, + **kwargs, + ): + """ + Construct a new Splom object + + Splom traces generate scatter plot matrix visualizations. Each + splom `dimensions` items correspond to a generated axis. Values + for each of those dimensions are set in `dimensions[i].values`. + Splom traces support all `scattergl` marker style attributes. + Specify `layout.grid` attributes and/or layout x-axis and + y-axis attributes for more control over the axis positioning + and style. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Splom` + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + diagonal + :class:`plotly.graph_objects.splom.Diagonal` instance + or dict with compatible properties + dimensions + A tuple of + :class:`plotly.graph_objects.splom.Dimension` instances + or dicts with compatible properties + dimensiondefaults + When used in a template (as + layout.template.data.splom.dimensiondefaults), sets the + default property values to use for elements of + splom.dimensions + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.splom.Hoverlabel` instance + or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.splom.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + marker + :class:`plotly.graph_objects.splom.Marker` instance or + dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + selected + :class:`plotly.graph_objects.splom.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showlowerhalf + Determines whether or not subplots on the lower half + from the diagonal are displayed. + showupperhalf + Determines whether or not subplots on the upper half + from the diagonal are displayed. + stream + :class:`plotly.graph_objects.splom.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.splom.Unselected` instance + or dict with compatible properties + visible + 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). + xaxes + 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. + xhoverformat + 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`. + yaxes + 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. + yhoverformat + 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`. + + Returns + ------- + Splom + """ + super().__init__("splom") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Splom +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Splom`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("diagonal", arg, diagonal) + self._set_property("dimensions", arg, dimensions) + self._set_property("dimensiondefaults", arg, dimensiondefaults) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("marker", arg, marker) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("showlowerhalf", arg, showlowerhalf) + self._set_property("showupperhalf", arg, showupperhalf) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("xaxes", arg, xaxes) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("yaxes", arg, yaxes) + self._set_property("yhoverformat", arg, yhoverformat) + + self._props["type"] = "splom" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_streamtube.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_streamtube.py new file mode 100644 index 0000000..de98ac3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_streamtube.py @@ -0,0 +1,2166 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Streamtube(_BaseTraceType): + _parent_path_str = "" + _path_str = "streamtube" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colorscale", + "customdata", + "customdatasrc", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lighting", + "lightposition", + "maxdisplayed", + "meta", + "metasrc", + "name", + "opacity", + "reversescale", + "scene", + "showlegend", + "showscale", + "sizeref", + "starts", + "stream", + "text", + "type", + "u", + "uhoverformat", + "uid", + "uirevision", + "usrc", + "v", + "vhoverformat", + "visible", + "vsrc", + "w", + "whoverformat", + "wsrc", + "x", + "xhoverformat", + "xsrc", + "y", + "yhoverformat", + "ysrc", + "z", + "zhoverformat", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.streamtube.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'u', 'v', 'w', 'norm', 'divergence', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.streamtube.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.streamtube.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lighting(self): + """ + The 'lighting' property is an instance of Lighting + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.Lighting` + - A dict of string/value properties that will be passed + to the Lighting constructor + + Returns + ------- + plotly.graph_objs.streamtube.Lighting + """ + return self["lighting"] + + @lighting.setter + def lighting(self, val): + self["lighting"] = val + + @property + def lightposition(self): + """ + The 'lightposition' property is an instance of Lightposition + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.Lightposition` + - A dict of string/value properties that will be passed + to the Lightposition constructor + + Returns + ------- + plotly.graph_objs.streamtube.Lightposition + """ + return self["lightposition"] + + @lightposition.setter + def lightposition(self, val): + self["lightposition"] = val + + @property + def maxdisplayed(self): + """ + The maximum number of displayed segments in a streamtube. + + The 'maxdisplayed' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["maxdisplayed"] + + @maxdisplayed.setter + def maxdisplayed(self, val): + self["maxdisplayed"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def sizeref(self): + """ + The scaling factor for the streamtubes. The default is 1, which + avoids two max divergence tubes from touching at adjacent + starting positions. + + The 'sizeref' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def starts(self): + """ + The 'starts' property is an instance of Starts + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.Starts` + - A dict of string/value properties that will be passed + to the Starts constructor + + Returns + ------- + plotly.graph_objs.streamtube.Starts + """ + return self["starts"] + + @starts.setter + def starts(self, val): + self["starts"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.streamtube.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def u(self): + """ + Sets the x components of the vector field. + + The 'u' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["u"] + + @u.setter + def u(self, val): + self["u"] = val + + @property + def uhoverformat(self): + """ + 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. + + The 'uhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uhoverformat"] + + @uhoverformat.setter + def uhoverformat(self, val): + self["uhoverformat"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def usrc(self): + """ + Sets the source reference on Chart Studio Cloud for `u`. + + The 'usrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["usrc"] + + @usrc.setter + def usrc(self, val): + self["usrc"] = val + + @property + def v(self): + """ + Sets the y components of the vector field. + + The 'v' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["v"] + + @v.setter + def v(self, val): + self["v"] = val + + @property + def vhoverformat(self): + """ + 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. + + The 'vhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["vhoverformat"] + + @vhoverformat.setter + def vhoverformat(self, val): + self["vhoverformat"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def vsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `v`. + + The 'vsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["vsrc"] + + @vsrc.setter + def vsrc(self, val): + self["vsrc"] = val + + @property + def w(self): + """ + Sets the z components of the vector field. + + The 'w' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["w"] + + @w.setter + def w(self, val): + self["w"] = val + + @property + def whoverformat(self): + """ + 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. + + The 'whoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["whoverformat"] + + @whoverformat.setter + def whoverformat(self, val): + self["whoverformat"] = val + + @property + def wsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `w`. + + The 'wsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["wsrc"] + + @wsrc.setter + def wsrc(self, val): + self["wsrc"] = val + + @property + def x(self): + """ + Sets the x coordinates of the vector field. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates of the vector field. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the z coordinates of the vector field. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.streamtube.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.streamtube.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.streamtube.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.streamtube.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.streamtube.Lightposition` + instance or dict with compatible properties + maxdisplayed + The maximum number of displayed segments in a + streamtube. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizeref + The scaling factor for the streamtubes. The default is + 1, which avoids two max divergence tubes from touching + at adjacent starting positions. + starts + :class:`plotly.graph_objects.streamtube.Starts` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.streamtube.Stream` + instance or dict with compatible properties + text + 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. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + customdata=None, + customdatasrc=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + maxdisplayed=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + sizeref=None, + starts=None, + stream=None, + text=None, + u=None, + uhoverformat=None, + uid=None, + uirevision=None, + usrc=None, + v=None, + vhoverformat=None, + visible=None, + vsrc=None, + w=None, + whoverformat=None, + wsrc=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Streamtube object + + Use a streamtube trace to visualize flow in a vector field. + Specify a vector field using 6 1D arrays of equal length, 3 + position arrays `x`, `y` and `z` and 3 vector component arrays + `u`, `v`, and `w`. By default, the tubes' starting positions + will be cut from the vector field's x-z plane at its minimum y + value. To specify your own starting position, use attributes + `starts.x`, `starts.y` and `starts.z`. The color is encoded by + the norm of (u, v, w), and the local radius by the divergence + of (u, v, w). + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Streamtube` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.streamtube.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.streamtube.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.streamtube.Legendgrouptitl + e` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.streamtube.Lighting` + instance or dict with compatible properties + lightposition + :class:`plotly.graph_objects.streamtube.Lightposition` + instance or dict with compatible properties + maxdisplayed + The maximum number of displayed segments in a + streamtube. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + sizeref + The scaling factor for the streamtubes. The default is + 1, which avoids two max divergence tubes from touching + at adjacent starting positions. + starts + :class:`plotly.graph_objects.streamtube.Starts` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.streamtube.Stream` + instance or dict with compatible properties + text + 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. + u + Sets the x components of the vector field. + uhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + usrc + Sets the source reference on Chart Studio Cloud for + `u`. + v + Sets the y components of the vector field. + vhoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + visible + 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). + vsrc + Sets the source reference on Chart Studio Cloud for + `v`. + w + Sets the z components of the vector field. + whoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + wsrc + Sets the source reference on Chart Studio Cloud for + `w`. + x + Sets the x coordinates of the vector field. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates of the vector field. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates of the vector field. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Streamtube + """ + super().__init__("streamtube") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Streamtube +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Streamtube`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lighting", arg, lighting) + self._set_property("lightposition", arg, lightposition) + self._set_property("maxdisplayed", arg, maxdisplayed) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("sizeref", arg, sizeref) + self._set_property("starts", arg, starts) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("u", arg, u) + self._set_property("uhoverformat", arg, uhoverformat) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("usrc", arg, usrc) + self._set_property("v", arg, v) + self._set_property("vhoverformat", arg, vhoverformat) + self._set_property("visible", arg, visible) + self._set_property("vsrc", arg, vsrc) + self._set_property("w", arg, w) + self._set_property("whoverformat", arg, whoverformat) + self._set_property("wsrc", arg, wsrc) + self._set_property("x", arg, x) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "streamtube" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_sunburst.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_sunburst.py new file mode 100644 index 0000000..3f14360 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_sunburst.py @@ -0,0 +1,1760 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Sunburst(_BaseTraceType): + _parent_path_str = "" + _path_str = "sunburst" + _valid_props = { + "branchvalues", + "count", + "customdata", + "customdatasrc", + "domain", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextfont", + "insidetextorientation", + "labels", + "labelssrc", + "leaf", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "level", + "marker", + "maxdepth", + "meta", + "metasrc", + "name", + "opacity", + "outsidetextfont", + "parents", + "parentssrc", + "root", + "rotation", + "sort", + "stream", + "text", + "textfont", + "textinfo", + "textsrc", + "texttemplate", + "texttemplatesrc", + "type", + "uid", + "uirevision", + "values", + "valuessrc", + "visible", + } + + @property + def branchvalues(self): + """ + 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. + + The 'branchvalues' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['remainder', 'total'] + + Returns + ------- + Any + """ + return self["branchvalues"] + + @branchvalues.setter + def branchvalues(self, val): + self["branchvalues"] = val + + @property + def count(self): + """ + Determines default for `values` when it is not provided, by + inferring a 1 for each of the "leaves" and/or "branches", + otherwise 0. + + The 'count' property is a flaglist and may be specified + as a string containing: + - Any combination of ['branches', 'leaves'] joined with '+' characters + (e.g. 'branches+leaves') + + Returns + ------- + Any + """ + return self["count"] + + @count.setter + def count(self, val): + self["count"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.sunburst.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'name', 'current path', 'percent root', 'percent entry', 'percent parent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.sunburst.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `textinfo` lying inside the sector. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.sunburst.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def insidetextorientation(self): + """ + 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. + + The 'insidetextorientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['horizontal', 'radial', 'tangential', 'auto'] + + Returns + ------- + Any + """ + return self["insidetextorientation"] + + @insidetextorientation.setter + def insidetextorientation(self, val): + self["insidetextorientation"] = val + + @property + def labels(self): + """ + Sets the labels of each of the sectors. + + The 'labels' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["labels"] + + @labels.setter + def labels(self, val): + self["labels"] = val + + @property + def labelssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `labels`. + + The 'labelssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelssrc"] + + @labelssrc.setter + def labelssrc(self, val): + self["labelssrc"] = val + + @property + def leaf(self): + """ + The 'leaf' property is an instance of Leaf + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Leaf` + - A dict of string/value properties that will be passed + to the Leaf constructor + + Returns + ------- + plotly.graph_objs.sunburst.Leaf + """ + return self["leaf"] + + @leaf.setter + def leaf(self, val): + self["leaf"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.sunburst.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def level(self): + """ + 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`. + + The 'level' property accepts values of any type + + Returns + ------- + Any + """ + return self["level"] + + @level.setter + def level(self, val): + self["level"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.sunburst.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def maxdepth(self): + """ + Sets the number of rendered sectors from any given `level`. Set + `maxdepth` to "-1" to render all the levels in the hierarchy. + + The 'maxdepth' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["maxdepth"] + + @maxdepth.setter + def maxdepth(self, val): + self["maxdepth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def outsidetextfont(self): + """ + 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. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.sunburst.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def parents(self): + """ + 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. + + The 'parents' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["parents"] + + @parents.setter + def parents(self, val): + self["parents"] = val + + @property + def parentssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `parents`. + + The 'parentssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["parentssrc"] + + @parentssrc.setter + def parentssrc(self, val): + self["parentssrc"] = val + + @property + def root(self): + """ + The 'root' property is an instance of Root + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Root` + - A dict of string/value properties that will be passed + to the Root constructor + + Returns + ------- + plotly.graph_objs.sunburst.Root + """ + return self["root"] + + @root.setter + def root(self, val): + self["root"] = val + + @property + def rotation(self): + """ + Rotates the whole diagram counterclockwise by some angle. By + default the first slice starts at 3 o'clock. + + The 'rotation' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["rotation"] + + @rotation.setter + def rotation(self, val): + self["rotation"] = val + + @property + def sort(self): + """ + Determines whether or not the sectors are reordered from + largest to smallest. + + The 'sort' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["sort"] + + @sort.setter + def sort(self, val): + self["sort"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.sunburst.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the font used for `textinfo`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.sunburst.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'current path', 'percent root', 'percent entry', 'percent parent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def values(self): + """ + Sets the values associated with each of the sectors. Use with + `branchvalues` to determine how the values are summed. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sunburst.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.sunburst.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.sunburst.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sunburst.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.sunburst.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + root + :class:`plotly.graph_objects.sunburst.Root` instance or + dict with compatible properties + rotation + Rotates the whole diagram counterclockwise by some + angle. By default the first slice starts at 3 o'clock. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.sunburst.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + """ + + def __init__( + self, + arg=None, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + insidetextorientation=None, + labels=None, + labelssrc=None, + leaf=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + root=None, + rotation=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Sunburst object + + Visualize hierarchal data spanning outward radially from root + to leaves. The sunburst sectors are determined by the entries + in "labels" or "ids" and in "parents". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Sunburst` + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.sunburst.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.sunburst.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + insidetextorientation + 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. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + leaf + :class:`plotly.graph_objects.sunburst.Leaf` instance or + dict with compatible properties + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.sunburst.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.sunburst.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + root + :class:`plotly.graph_objects.sunburst.Root` instance or + dict with compatible properties + rotation + Rotates the whole diagram counterclockwise by some + angle. By default the first slice starts at 3 o'clock. + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.sunburst.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + + Returns + ------- + Sunburst + """ + super().__init__("sunburst") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Sunburst +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Sunburst`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("branchvalues", arg, branchvalues) + self._set_property("count", arg, count) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("domain", arg, domain) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("insidetextorientation", arg, insidetextorientation) + self._set_property("labels", arg, labels) + self._set_property("labelssrc", arg, labelssrc) + self._set_property("leaf", arg, leaf) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("level", arg, level) + self._set_property("marker", arg, marker) + self._set_property("maxdepth", arg, maxdepth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("parents", arg, parents) + self._set_property("parentssrc", arg, parentssrc) + self._set_property("root", arg, root) + self._set_property("rotation", arg, rotation) + self._set_property("sort", arg, sort) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + + self._props["type"] = "sunburst" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_surface.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_surface.py new file mode 100644 index 0000000..a2d65c3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_surface.py @@ -0,0 +1,2138 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Surface(_BaseTraceType): + _parent_path_str = "" + _path_str = "surface" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colorscale", + "connectgaps", + "contours", + "customdata", + "customdatasrc", + "hidesurface", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lighting", + "lightposition", + "meta", + "metasrc", + "name", + "opacity", + "opacityscale", + "reversescale", + "scene", + "showlegend", + "showscale", + "stream", + "surfacecolor", + "surfacecolorsrc", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "visible", + "x", + "xcalendar", + "xhoverformat", + "xsrc", + "y", + "ycalendar", + "yhoverformat", + "ysrc", + "z", + "zcalendar", + "zhoverformat", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.surface.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def connectgaps(self): + """ + Determines whether or not gaps (i.e. {nan} or missing values) + in the `z` data are filled in. + + The 'connectgaps' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["connectgaps"] + + @connectgaps.setter + def connectgaps(self, val): + self["connectgaps"] = val + + @property + def contours(self): + """ + The 'contours' property is an instance of Contours + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.Contours` + - A dict of string/value properties that will be passed + to the Contours constructor + + Returns + ------- + plotly.graph_objs.surface.Contours + """ + return self["contours"] + + @contours.setter + def contours(self, val): + self["contours"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def hidesurface(self): + """ + 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. + + The 'hidesurface' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["hidesurface"] + + @hidesurface.setter + def hidesurface(self, val): + self["hidesurface"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.surface.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.surface.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lighting(self): + """ + The 'lighting' property is an instance of Lighting + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.Lighting` + - A dict of string/value properties that will be passed + to the Lighting constructor + + Returns + ------- + plotly.graph_objs.surface.Lighting + """ + return self["lighting"] + + @lighting.setter + def lighting(self, val): + self["lighting"] = val + + @property + def lightposition(self): + """ + The 'lightposition' property is an instance of Lightposition + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.Lightposition` + - A dict of string/value properties that will be passed + to the Lightposition constructor + + Returns + ------- + plotly.graph_objs.surface.Lightposition + """ + return self["lightposition"] + + @lightposition.setter + def lightposition(self, val): + self["lightposition"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacityscale(self): + """ + 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'. + + The 'opacityscale' property accepts values of any type + + Returns + ------- + Any + """ + return self["opacityscale"] + + @opacityscale.setter + def opacityscale(self, val): + self["opacityscale"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.surface.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def surfacecolor(self): + """ + Sets the surface color values, used for setting a color scale + independent of `z`. + + The 'surfacecolor' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["surfacecolor"] + + @surfacecolor.setter + def surfacecolor(self, val): + self["surfacecolor"] = val + + @property + def surfacecolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `surfacecolor`. + + The 'surfacecolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["surfacecolorsrc"] + + @surfacecolorsrc.setter + def surfacecolorsrc(self, val): + self["surfacecolorsrc"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xcalendar(self): + """ + Sets the calendar system to use with `x` date data. + + The 'xcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["xcalendar"] + + @xcalendar.setter + def xcalendar(self, val): + self["xcalendar"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def ycalendar(self): + """ + Sets the calendar system to use with `y` date data. + + The 'ycalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["ycalendar"] + + @ycalendar.setter + def ycalendar(self, val): + self["ycalendar"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the z coordinates. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zcalendar(self): + """ + Sets the calendar system to use with `z` date data. + + The 'zcalendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["zcalendar"] + + @zcalendar.setter + def zcalendar(self, val): + self["zcalendar"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.surface.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data are filled in. + contours + :class:`plotly.graph_objects.surface.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hidesurface + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.surface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.surface.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.surface.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.surface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.surface.Stream` instance + or dict with compatible properties + surfacecolor + Sets the surface color values, used for setting a color + scale independent of `z`. + surfacecolorsrc + Sets the source reference on Chart Studio Cloud for + `surfacecolor`. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + connectgaps=None, + contours=None, + customdata=None, + customdatasrc=None, + hidesurface=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + opacityscale=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + stream=None, + surfacecolor=None, + surfacecolorsrc=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + visible=None, + x=None, + xcalendar=None, + xhoverformat=None, + xsrc=None, + y=None, + ycalendar=None, + yhoverformat=None, + ysrc=None, + z=None, + zcalendar=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Surface object + + The data the describes the coordinates of the surface is set in + `z`. Data in `z` should be a 2D list. Coordinates in `x` and + `y` can either be 1D lists or 2D lists (e.g. to graph + parametric surfaces). If not provided in `x` and `y`, the x and + y coordinates are assumed to be linear starting at 0 with a + unit step. The color scale corresponds to the `z` values by + default. For custom color scales, use `surfacecolor` which + should be a 2D list, where its bounds can be controlled using + `cmin` and `cmax`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Surface` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.surface.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + connectgaps + Determines whether or not gaps (i.e. {nan} or missing + values) in the `z` data are filled in. + contours + :class:`plotly.graph_objects.surface.Contours` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hidesurface + 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. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.surface.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.surface.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.surface.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.surface.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + stream + :class:`plotly.graph_objects.surface.Stream` instance + or dict with compatible properties + surfacecolor + Sets the surface color values, used for setting a color + scale independent of `z`. + surfacecolorsrc + Sets the source reference on Chart Studio Cloud for + `surfacecolor`. + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + x + Sets the x coordinates. + xcalendar + Sets the calendar system to use with `x` date data. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + ycalendar + Sets the calendar system to use with `y` date data. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z coordinates. + zcalendar + Sets the calendar system to use with `z` date data. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Surface + """ + super().__init__("surface") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Surface +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Surface`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("connectgaps", arg, connectgaps) + self._set_property("contours", arg, contours) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("hidesurface", arg, hidesurface) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lighting", arg, lighting) + self._set_property("lightposition", arg, lightposition) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("opacityscale", arg, opacityscale) + self._set_property("reversescale", arg, reversescale) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("stream", arg, stream) + self._set_property("surfacecolor", arg, surfacecolor) + self._set_property("surfacecolorsrc", arg, surfacecolorsrc) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xcalendar", arg, xcalendar) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("ycalendar", arg, ycalendar) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zcalendar", arg, zcalendar) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "surface" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_table.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_table.py new file mode 100644 index 0000000..3bf76e1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_table.py @@ -0,0 +1,908 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Table(_BaseTraceType): + _parent_path_str = "" + _path_str = "table" + _valid_props = { + "cells", + "columnorder", + "columnordersrc", + "columnwidth", + "columnwidthsrc", + "customdata", + "customdatasrc", + "domain", + "header", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "ids", + "idssrc", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "meta", + "metasrc", + "name", + "stream", + "type", + "uid", + "uirevision", + "visible", + } + + @property + def cells(self): + """ + The 'cells' property is an instance of Cells + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.Cells` + - A dict of string/value properties that will be passed + to the Cells constructor + + Returns + ------- + plotly.graph_objs.table.Cells + """ + return self["cells"] + + @cells.setter + def cells(self, val): + self["cells"] = val + + @property + def columnorder(self): + """ + 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. + + The 'columnorder' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["columnorder"] + + @columnorder.setter + def columnorder(self, val): + self["columnorder"] = val + + @property + def columnordersrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `columnorder`. + + The 'columnordersrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["columnordersrc"] + + @columnordersrc.setter + def columnordersrc(self, val): + self["columnordersrc"] = val + + @property + def columnwidth(self): + """ + The width of columns expressed as a ratio. Columns fill the + available width in proportion of their specified column widths. + + The 'columnwidth' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["columnwidth"] + + @columnwidth.setter + def columnwidth(self, val): + self["columnwidth"] = val + + @property + def columnwidthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `columnwidth`. + + The 'columnwidthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["columnwidthsrc"] + + @columnwidthsrc.setter + def columnwidthsrc(self, val): + self["columnwidthsrc"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.table.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def header(self): + """ + The 'header' property is an instance of Header + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.Header` + - A dict of string/value properties that will be passed + to the Header constructor + + Returns + ------- + plotly.graph_objs.table.Header + """ + return self["header"] + + @header.setter + def header(self, val): + self["header"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.table.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.table.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.table.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + cells + :class:`plotly.graph_objects.table.Cells` instance or + dict with compatible properties + columnorder + 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. + columnordersrc + Sets the source reference on Chart Studio Cloud for + `columnorder`. + columnwidth + The width of columns expressed as a ratio. Columns fill + the available width in proportion of their specified + column widths. + columnwidthsrc + Sets the source reference on Chart Studio Cloud for + `columnwidth`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.table.Domain` instance or + dict with compatible properties + header + :class:`plotly.graph_objects.table.Header` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.table.Hoverlabel` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.table.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + stream + :class:`plotly.graph_objects.table.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + """ + + def __init__( + self, + arg=None, + cells=None, + columnorder=None, + columnordersrc=None, + columnwidth=None, + columnwidthsrc=None, + customdata=None, + customdatasrc=None, + domain=None, + header=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + ids=None, + idssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + meta=None, + metasrc=None, + name=None, + stream=None, + uid=None, + uirevision=None, + visible=None, + **kwargs, + ): + """ + Construct a new Table object + + Table view for detailed data viewing. The data are arranged in + a grid of rows and columns. Most styling can be specified for + columns, rows or individual cells. Table is using a column- + major order, ie. the grid is represented as a vector of column + vectors. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Table` + cells + :class:`plotly.graph_objects.table.Cells` instance or + dict with compatible properties + columnorder + 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. + columnordersrc + Sets the source reference on Chart Studio Cloud for + `columnorder`. + columnwidth + The width of columns expressed as a ratio. Columns fill + the available width in proportion of their specified + column widths. + columnwidthsrc + Sets the source reference on Chart Studio Cloud for + `columnwidth`. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.table.Domain` instance or + dict with compatible properties + header + :class:`plotly.graph_objects.table.Header` instance or + dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.table.Hoverlabel` instance + or dict with compatible properties + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.table.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + stream + :class:`plotly.graph_objects.table.Stream` instance or + dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + + Returns + ------- + Table + """ + super().__init__("table") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Table +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Table`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("cells", arg, cells) + self._set_property("columnorder", arg, columnorder) + self._set_property("columnordersrc", arg, columnordersrc) + self._set_property("columnwidth", arg, columnwidth) + self._set_property("columnwidthsrc", arg, columnwidthsrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("domain", arg, domain) + self._set_property("header", arg, header) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("stream", arg, stream) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + + self._props["type"] = "table" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_treemap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_treemap.py new file mode 100644 index 0000000..69dbd3b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_treemap.py @@ -0,0 +1,1738 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Treemap(_BaseTraceType): + _parent_path_str = "" + _path_str = "treemap" + _valid_props = { + "branchvalues", + "count", + "customdata", + "customdatasrc", + "domain", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "insidetextfont", + "labels", + "labelssrc", + "legend", + "legendgrouptitle", + "legendrank", + "legendwidth", + "level", + "marker", + "maxdepth", + "meta", + "metasrc", + "name", + "opacity", + "outsidetextfont", + "parents", + "parentssrc", + "pathbar", + "root", + "sort", + "stream", + "text", + "textfont", + "textinfo", + "textposition", + "textsrc", + "texttemplate", + "texttemplatesrc", + "tiling", + "type", + "uid", + "uirevision", + "values", + "valuessrc", + "visible", + } + + @property + def branchvalues(self): + """ + 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. + + The 'branchvalues' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['remainder', 'total'] + + Returns + ------- + Any + """ + return self["branchvalues"] + + @branchvalues.setter + def branchvalues(self, val): + self["branchvalues"] = val + + @property + def count(self): + """ + Determines default for `values` when it is not provided, by + inferring a 1 for each of the "leaves" and/or "branches", + otherwise 0. + + The 'count' property is a flaglist and may be specified + as a string containing: + - Any combination of ['branches', 'leaves'] joined with '+' characters + (e.g. 'branches+leaves') + + Returns + ------- + Any + """ + return self["count"] + + @count.setter + def count(self, val): + self["count"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.treemap.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'name', 'current path', 'percent root', 'percent entry', 'percent parent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.treemap.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `textinfo` lying inside the sector. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.treemap.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def labels(self): + """ + Sets the labels of each of the sectors. + + The 'labels' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["labels"] + + @labels.setter + def labels(self, val): + self["labels"] = val + + @property + def labelssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `labels`. + + The 'labelssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelssrc"] + + @labelssrc.setter + def labelssrc(self, val): + self["labelssrc"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.treemap.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def level(self): + """ + 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`. + + The 'level' property accepts values of any type + + Returns + ------- + Any + """ + return self["level"] + + @level.setter + def level(self, val): + self["level"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.treemap.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def maxdepth(self): + """ + Sets the number of rendered sectors from any given `level`. Set + `maxdepth` to "-1" to render all the levels in the hierarchy. + + The 'maxdepth' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["maxdepth"] + + @maxdepth.setter + def maxdepth(self, val): + self["maxdepth"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def outsidetextfont(self): + """ + 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. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.treemap.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def parents(self): + """ + 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. + + The 'parents' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["parents"] + + @parents.setter + def parents(self, val): + self["parents"] = val + + @property + def parentssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `parents`. + + The 'parentssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["parentssrc"] + + @parentssrc.setter + def parentssrc(self, val): + self["parentssrc"] = val + + @property + def pathbar(self): + """ + The 'pathbar' property is an instance of Pathbar + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Pathbar` + - A dict of string/value properties that will be passed + to the Pathbar constructor + + Returns + ------- + plotly.graph_objs.treemap.Pathbar + """ + return self["pathbar"] + + @pathbar.setter + def pathbar(self, val): + self["pathbar"] = val + + @property + def root(self): + """ + The 'root' property is an instance of Root + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Root` + - A dict of string/value properties that will be passed + to the Root constructor + + Returns + ------- + plotly.graph_objs.treemap.Root + """ + return self["root"] + + @root.setter + def root(self, val): + self["root"] = val + + @property + def sort(self): + """ + Determines whether or not the sectors are reordered from + largest to smallest. + + The 'sort' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["sort"] + + @sort.setter + def sort(self, val): + self["sort"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.treemap.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + Sets the font used for `textinfo`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.treemap.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'value', 'current path', 'percent root', 'percent entry', 'percent parent'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def tiling(self): + """ + The 'tiling' property is an instance of Tiling + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.Tiling` + - A dict of string/value properties that will be passed + to the Tiling constructor + + Returns + ------- + plotly.graph_objs.treemap.Tiling + """ + return self["tiling"] + + @tiling.setter + def tiling(self, val): + self["tiling"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def values(self): + """ + Sets the values associated with each of the sectors. Use with + `branchvalues` to determine how the values are summed. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.treemap.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.treemap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.treemap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.treemap.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.treemap.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.treemap.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.treemap.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.treemap.Tiling` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + """ + + def __init__( + self, + arg=None, + branchvalues=None, + count=None, + customdata=None, + customdatasrc=None, + domain=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + insidetextfont=None, + labels=None, + labelssrc=None, + legend=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + level=None, + marker=None, + maxdepth=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + outsidetextfont=None, + parents=None, + parentssrc=None, + pathbar=None, + root=None, + sort=None, + stream=None, + text=None, + textfont=None, + textinfo=None, + textposition=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + tiling=None, + uid=None, + uirevision=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Treemap object + + Visualize hierarchal data from leaves (and/or outer branches) + towards root with rectangles. The treemap sectors are + determined by the entries in "labels" or "ids" and in + "parents". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Treemap` + branchvalues + 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. + count + Determines default for `values` when it is not + provided, by inferring a 1 for each of the "leaves" + and/or "branches", otherwise 0. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + domain + :class:`plotly.graph_objects.treemap.Domain` instance + or dict with compatible properties + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.treemap.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + insidetextfont + Sets the font used for `textinfo` lying inside the + sector. + labels + Sets the labels of each of the sectors. + labelssrc + Sets the source reference on Chart Studio Cloud for + `labels`. + legend + 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. + legendgrouptitle + :class:`plotly.graph_objects.treemap.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + level + 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`. + marker + :class:`plotly.graph_objects.treemap.Marker` instance + or dict with compatible properties + maxdepth + Sets the number of rendered sectors from any given + `level`. Set `maxdepth` to "-1" to render all the + levels in the hierarchy. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + Sets the opacity of the trace. + outsidetextfont + 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. + parents + 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. + parentssrc + Sets the source reference on Chart Studio Cloud for + `parents`. + pathbar + :class:`plotly.graph_objects.treemap.Pathbar` instance + or dict with compatible properties + root + :class:`plotly.graph_objects.treemap.Root` instance or + dict with compatible properties + sort + Determines whether or not the sectors are reordered + from largest to smallest. + stream + :class:`plotly.graph_objects.treemap.Stream` instance + or dict with compatible properties + text + 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. + textfont + Sets the font used for `textinfo`. + textinfo + Determines which trace information appear on the graph. + textposition + Sets the positions of the `text` elements. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + tiling + :class:`plotly.graph_objects.treemap.Tiling` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + values + Sets the values associated with each of the sectors. + Use with `branchvalues` to determine how the values are + summed. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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). + + Returns + ------- + Treemap + """ + super().__init__("treemap") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Treemap +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Treemap`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("branchvalues", arg, branchvalues) + self._set_property("count", arg, count) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("domain", arg, domain) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("labels", arg, labels) + self._set_property("labelssrc", arg, labelssrc) + self._set_property("legend", arg, legend) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("level", arg, level) + self._set_property("marker", arg, marker) + self._set_property("maxdepth", arg, maxdepth) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("parents", arg, parents) + self._set_property("parentssrc", arg, parentssrc) + self._set_property("pathbar", arg, pathbar) + self._set_property("root", arg, root) + self._set_property("sort", arg, sort) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textposition", arg, textposition) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("tiling", arg, tiling) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + + self._props["type"] = "treemap" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_violin.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_violin.py new file mode 100644 index 0000000..943a5f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_violin.py @@ -0,0 +1,2264 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Violin(_BaseTraceType): + _parent_path_str = "" + _path_str = "violin" + _valid_props = { + "alignmentgroup", + "bandwidth", + "box", + "customdata", + "customdatasrc", + "fillcolor", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hoveron", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "jitter", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "marker", + "meanline", + "meta", + "metasrc", + "name", + "offsetgroup", + "opacity", + "orientation", + "pointpos", + "points", + "quartilemethod", + "scalegroup", + "scalemode", + "selected", + "selectedpoints", + "showlegend", + "side", + "span", + "spanmode", + "stream", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "unselected", + "visible", + "width", + "x", + "x0", + "xaxis", + "xhoverformat", + "xsrc", + "y", + "y0", + "yaxis", + "yhoverformat", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def bandwidth(self): + """ + Sets the bandwidth used to compute the kernel density estimate. + By default, the bandwidth is determined by Silverman's rule of + thumb. + + The 'bandwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["bandwidth"] + + @bandwidth.setter + def bandwidth(self, val): + self["bandwidth"] = val + + @property + def box(self): + """ + The 'box' property is an instance of Box + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Box` + - A dict of string/value properties that will be passed + to the Box constructor + + Returns + ------- + plotly.graph_objs.violin.Box + """ + return self["box"] + + @box.setter + def box(self, val): + self["box"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.violin.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hoveron(self): + """ + Do the hover effects highlight individual violins or sample + points or the kernel density estimate or any combination of + them? + + The 'hoveron' property is a flaglist and may be specified + as a string containing: + - Any combination of ['violins', 'points', 'kde'] joined with '+' characters + (e.g. 'violins+points') + OR exactly one of ['all'] (e.g. 'all') + + Returns + ------- + Any + """ + return self["hoveron"] + + @hoveron.setter + def hoveron(self, val): + self["hoveron"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def jitter(self): + """ + 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. + + The 'jitter' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["jitter"] + + @jitter.setter + def jitter(self, val): + self["jitter"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.violin.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.violin.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.violin.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def meanline(self): + """ + The 'meanline' property is an instance of Meanline + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Meanline` + - A dict of string/value properties that will be passed + to the Meanline constructor + + Returns + ------- + plotly.graph_objs.violin.Meanline + """ + return self["meanline"] + + @meanline.setter + def meanline(self, val): + self["meanline"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + 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). + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + Sets the orientation of the violin(s). If "v" ("h"), the + distribution is visualized along the vertical (horizontal). + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def pointpos(self): + """ + 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. + + The 'pointpos' property is a number and may be specified as: + - An int or float in the interval [-2, 2] + + Returns + ------- + int|float + """ + return self["pointpos"] + + @pointpos.setter + def pointpos(self, val): + self["pointpos"] = val + + @property + def points(self): + """ + 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". + + The 'points' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'outliers', 'suspectedoutliers', False] + + Returns + ------- + Any + """ + return self["points"] + + @points.setter + def points(self, val): + self["points"] = val + + @property + def quartilemethod(self): + """ + 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. + + The 'quartilemethod' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'exclusive', 'inclusive'] + + Returns + ------- + Any + """ + return self["quartilemethod"] + + @quartilemethod.setter + def quartilemethod(self, val): + self["quartilemethod"] = val + + @property + def scalegroup(self): + """ + 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 + + The 'scalegroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["scalegroup"] + + @scalegroup.setter + def scalegroup(self, val): + self["scalegroup"] = val + + @property + def scalemode(self): + """ + 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. + + The 'scalemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['width', 'count'] + + Returns + ------- + Any + """ + return self["scalemode"] + + @scalemode.setter + def scalemode(self, val): + self["scalemode"] = val + + @property + def selected(self): + """ + The 'selected' property is an instance of Selected + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Selected` + - A dict of string/value properties that will be passed + to the Selected constructor + + Returns + ------- + plotly.graph_objs.violin.Selected + """ + return self["selected"] + + @selected.setter + def selected(self, val): + self["selected"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['both', 'positive', 'negative'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def span(self): + """ + Sets the span in data space for which the density function will + be computed. Has an effect only when `spanmode` is set to + "manual". + + The 'span' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'span[0]' property accepts values of any type + (1) The 'span[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["span"] + + @span.setter + def span(self, val): + self["span"] = val + + @property + def spanmode(self): + """ + 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. + + The 'spanmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['soft', 'hard', 'manual'] + + Returns + ------- + Any + """ + return self["spanmode"] + + @spanmode.setter + def spanmode(self, val): + self["spanmode"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.violin.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def unselected(self): + """ + The 'unselected' property is an instance of Unselected + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.Unselected` + - A dict of string/value properties that will be passed + to the Unselected constructor + + Returns + ------- + plotly.graph_objs.violin.Unselected + """ + return self["unselected"] + + @unselected.setter + def unselected(self, val): + self["unselected"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + 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. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def x(self): + """ + Sets the x sample data or coordinates. See overview for more + info. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + 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. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y sample data or coordinates. See overview for more + info. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + 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. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + bandwidth + Sets the bandwidth used to compute the kernel density + estimate. By default, the bandwidth is determined by + Silverman's rule of thumb. + box + :class:`plotly.graph_objects.violin.Box` instance or + dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.violin.Hoverlabel` + instance or dict with compatible properties + hoveron + Do the hover effects highlight individual violins or + sample points or the kernel density estimate or any + combination of them? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.violin.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.violin.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.violin.Marker` instance or + dict with compatible properties + meanline + :class:`plotly.graph_objects.violin.Meanline` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the violin(s). If "v" ("h"), + the distribution is visualized along the vertical + (horizontal). + pointpos + 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. + points + 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". + quartilemethod + 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. + scalegroup + 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 + scalemode + 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. + selected + :class:`plotly.graph_objects.violin.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + side + 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". + span + Sets the span in data space for which the density + function will be computed. Has an effect only when + `spanmode` is set to "manual". + spanmode + 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. + stream + :class:`plotly.graph_objects.violin.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.violin.Unselected` + instance or dict with compatible properties + visible + 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). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + bandwidth=None, + box=None, + customdata=None, + customdatasrc=None, + fillcolor=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hoveron=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + jitter=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + marker=None, + meanline=None, + meta=None, + metasrc=None, + name=None, + offsetgroup=None, + opacity=None, + orientation=None, + pointpos=None, + points=None, + quartilemethod=None, + scalegroup=None, + scalemode=None, + selected=None, + selectedpoints=None, + showlegend=None, + side=None, + span=None, + spanmode=None, + stream=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + unselected=None, + visible=None, + width=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Violin object + + 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`) list + is provided, a single violin is drawn. That violin position is + then positioned with with `name` or with `x0` (`y0`) if + provided. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Violin` + alignmentgroup + 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. + bandwidth + Sets the bandwidth used to compute the kernel density + estimate. By default, the bandwidth is determined by + Silverman's rule of thumb. + box + :class:`plotly.graph_objects.violin.Box` instance or + dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.violin.Hoverlabel` + instance or dict with compatible properties + hoveron + Do the hover effects highlight individual violins or + sample points or the kernel density estimate or any + combination of them? + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + jitter + 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. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.violin.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + line + :class:`plotly.graph_objects.violin.Line` instance or + dict with compatible properties + marker + :class:`plotly.graph_objects.violin.Marker` instance or + dict with compatible properties + meanline + :class:`plotly.graph_objects.violin.Meanline` instance + or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + 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). + offsetgroup + 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. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the violin(s). If "v" ("h"), + the distribution is visualized along the vertical + (horizontal). + pointpos + 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. + points + 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". + quartilemethod + 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. + scalegroup + 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 + scalemode + 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. + selected + :class:`plotly.graph_objects.violin.Selected` instance + or dict with compatible properties + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + side + 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". + span + Sets the span in data space for which the density + function will be computed. Has an effect only when + `spanmode` is set to "manual". + spanmode + 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. + stream + :class:`plotly.graph_objects.violin.Stream` instance or + dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + unselected + :class:`plotly.graph_objects.violin.Unselected` + instance or dict with compatible properties + visible + 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). + width + 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. + x + Sets the x sample data or coordinates. See overview for + more info. + x0 + 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. + xaxis + 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. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y sample data or coordinates. See overview for + more info. + y0 + 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. + yaxis + 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. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Violin + """ + super().__init__("violin") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Violin +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Violin`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("bandwidth", arg, bandwidth) + self._set_property("box", arg, box) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hoveron", arg, hoveron) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("jitter", arg, jitter) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("marker", arg, marker) + self._set_property("meanline", arg, meanline) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("pointpos", arg, pointpos) + self._set_property("points", arg, points) + self._set_property("quartilemethod", arg, quartilemethod) + self._set_property("scalegroup", arg, scalegroup) + self._set_property("scalemode", arg, scalemode) + self._set_property("selected", arg, selected) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("side", arg, side) + self._set_property("span", arg, span) + self._set_property("spanmode", arg, spanmode) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("unselected", arg, unselected) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "violin" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_volume.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_volume.py new file mode 100644 index 0000000..9bc3099 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_volume.py @@ -0,0 +1,2211 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Volume(_BaseTraceType): + _parent_path_str = "" + _path_str = "volume" + _valid_props = { + "autocolorscale", + "caps", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colorscale", + "contour", + "customdata", + "customdatasrc", + "flatshading", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "isomax", + "isomin", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "lighting", + "lightposition", + "meta", + "metasrc", + "name", + "opacity", + "opacityscale", + "reversescale", + "scene", + "showlegend", + "showscale", + "slices", + "spaceframe", + "stream", + "surface", + "text", + "textsrc", + "type", + "uid", + "uirevision", + "value", + "valuehoverformat", + "valuesrc", + "visible", + "x", + "xhoverformat", + "xsrc", + "y", + "yhoverformat", + "ysrc", + "z", + "zhoverformat", + "zsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def caps(self): + """ + The 'caps' property is an instance of Caps + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Caps` + - A dict of string/value properties that will be passed + to the Caps constructor + + Returns + ------- + plotly.graph_objs.volume.Caps + """ + return self["caps"] + + @caps.setter + def caps(self, val): + self["caps"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.volume.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def contour(self): + """ + The 'contour' property is an instance of Contour + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Contour` + - A dict of string/value properties that will be passed + to the Contour constructor + + Returns + ------- + plotly.graph_objs.volume.Contour + """ + return self["contour"] + + @contour.setter + def contour(self, val): + self["contour"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def flatshading(self): + """ + Determines whether or not normal smoothing is applied to the + meshes, creating meshes with an angular, low-poly look via flat + reflections. + + The 'flatshading' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["flatshading"] + + @flatshading.setter + def flatshading(self, val): + self["flatshading"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y', 'z', 'text', 'name'] joined with '+' characters + (e.g. 'x+y') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.volume.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + Same as `text`. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def isomax(self): + """ + Sets the maximum boundary for iso-surface plot. + + The 'isomax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["isomax"] + + @isomax.setter + def isomax(self, val): + self["isomax"] = val + + @property + def isomin(self): + """ + Sets the minimum boundary for iso-surface plot. + + The 'isomin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["isomin"] + + @isomin.setter + def isomin(self, val): + self["isomin"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.volume.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def lighting(self): + """ + The 'lighting' property is an instance of Lighting + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Lighting` + - A dict of string/value properties that will be passed + to the Lighting constructor + + Returns + ------- + plotly.graph_objs.volume.Lighting + """ + return self["lighting"] + + @lighting.setter + def lighting(self, val): + self["lighting"] = val + + @property + def lightposition(self): + """ + The 'lightposition' property is an instance of Lightposition + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Lightposition` + - A dict of string/value properties that will be passed + to the Lightposition constructor + + Returns + ------- + plotly.graph_objs.volume.Lightposition + """ + return self["lightposition"] + + @lightposition.setter + def lightposition(self, val): + self["lightposition"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacityscale(self): + """ + 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'. + + The 'opacityscale' property accepts values of any type + + Returns + ------- + Any + """ + return self["opacityscale"] + + @opacityscale.setter + def opacityscale(self, val): + self["opacityscale"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def scene(self): + """ + 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. + + The 'scene' property is an identifier of a particular + subplot, of type 'scene', that may be specified as the string 'scene' + optionally followed by an integer >= 1 + (e.g. 'scene', 'scene1', 'scene2', 'scene3', etc.) + + Returns + ------- + str + """ + return self["scene"] + + @scene.setter + def scene(self, val): + self["scene"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def slices(self): + """ + The 'slices' property is an instance of Slices + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Slices` + - A dict of string/value properties that will be passed + to the Slices constructor + + Returns + ------- + plotly.graph_objs.volume.Slices + """ + return self["slices"] + + @slices.setter + def slices(self, val): + self["slices"] = val + + @property + def spaceframe(self): + """ + The 'spaceframe' property is an instance of Spaceframe + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Spaceframe` + - A dict of string/value properties that will be passed + to the Spaceframe constructor + + Returns + ------- + plotly.graph_objs.volume.Spaceframe + """ + return self["spaceframe"] + + @spaceframe.setter + def spaceframe(self, val): + self["spaceframe"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.volume.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def surface(self): + """ + The 'surface' property is an instance of Surface + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.Surface` + - A dict of string/value properties that will be passed + to the Surface constructor + + Returns + ------- + plotly.graph_objs.volume.Surface + """ + return self["surface"] + + @surface.setter + def surface(self, val): + self["surface"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def value(self): + """ + Sets the 4th dimension (value) of the vertices. + + The 'value' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valuehoverformat(self): + """ + 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. + + The 'valuehoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["valuehoverformat"] + + @valuehoverformat.setter + def valuehoverformat(self, val): + self["valuehoverformat"] = val + + @property + def valuesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `value`. + + The 'valuesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuesrc"] + + @valuesrc.setter + def valuesrc(self, val): + self["valuesrc"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the X coordinates of the vertices on X axis. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the Y coordinates of the vertices on Y axis. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the Z coordinates of the vertices on Z axis. + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zhoverformat(self): + """ + 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`. + + The 'zhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["zhoverformat"] + + @zhoverformat.setter + def zhoverformat(self, val): + self["zhoverformat"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + caps + :class:`plotly.graph_objects.volume.Caps` instance or + dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.volume.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.volume.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.volume.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.volume.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.volume.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.volume.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.volume.Slices` instance or + dict with compatible properties + spaceframe + :class:`plotly.graph_objects.volume.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.volume.Stream` instance or + dict with compatible properties + surface + :class:`plotly.graph_objects.volume.Surface` instance + or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + caps=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colorscale=None, + contour=None, + customdata=None, + customdatasrc=None, + flatshading=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + isomax=None, + isomin=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + lighting=None, + lightposition=None, + meta=None, + metasrc=None, + name=None, + opacity=None, + opacityscale=None, + reversescale=None, + scene=None, + showlegend=None, + showscale=None, + slices=None, + spaceframe=None, + stream=None, + surface=None, + text=None, + textsrc=None, + uid=None, + uirevision=None, + value=None, + valuehoverformat=None, + valuesrc=None, + visible=None, + x=None, + xhoverformat=None, + xsrc=None, + y=None, + yhoverformat=None, + ysrc=None, + z=None, + zhoverformat=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Volume object + + Draws volume trace between iso-min and iso-max values with + coordinates given by four 1-dimensional arrays containing the + `value`, `x`, `y` and `z` of every vertex of a uniform or non- + uniform 3-D grid. Horizontal or vertical slices, caps as well + as spaceframe between iso-min and iso-max values could also be + drawn using this trace. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Volume` + autocolorscale + 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. + caps + :class:`plotly.graph_objects.volume.Caps` instance or + dict with compatible properties + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.volume.ColorBar` instance + or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + contour + :class:`plotly.graph_objects.volume.Contour` instance + or dict with compatible properties + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + flatshading + Determines whether or not normal smoothing is applied + to the meshes, creating meshes with an angular, low- + poly look via flat reflections. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.volume.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + Same as `text`. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + isomax + Sets the maximum boundary for iso-surface plot. + isomin + Sets the minimum boundary for iso-surface plot. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.volume.Legendgrouptitle` + instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + lighting + :class:`plotly.graph_objects.volume.Lighting` instance + or dict with compatible properties + lightposition + :class:`plotly.graph_objects.volume.Lightposition` + instance or dict with compatible properties + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + opacity + 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. + opacityscale + 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'. + reversescale + 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. + scene + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + showscale + Determines whether or not a colorbar is displayed for + this trace. + slices + :class:`plotly.graph_objects.volume.Slices` instance or + dict with compatible properties + spaceframe + :class:`plotly.graph_objects.volume.Spaceframe` + instance or dict with compatible properties + stream + :class:`plotly.graph_objects.volume.Stream` instance or + dict with compatible properties + surface + :class:`plotly.graph_objects.volume.Surface` instance + or dict with compatible properties + text + 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. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + value + Sets the 4th dimension (value) of the vertices. + valuehoverformat + 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/d + 3/d3-format/tree/v1.4.5#d3-format.By default the values + are formatted using generic number format. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + visible + 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). + x + Sets the X coordinates of the vertices on X axis. + xhoverformat + 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`. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the Y coordinates of the vertices on Y axis. + yhoverformat + 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`. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the Z coordinates of the vertices on Z axis. + zhoverformat + 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`. + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Volume + """ + super().__init__("volume") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Volume +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Volume`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("caps", arg, caps) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("contour", arg, contour) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("flatshading", arg, flatshading) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("isomax", arg, isomax) + self._set_property("isomin", arg, isomin) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("lighting", arg, lighting) + self._set_property("lightposition", arg, lightposition) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("opacityscale", arg, opacityscale) + self._set_property("reversescale", arg, reversescale) + self._set_property("scene", arg, scene) + self._set_property("showlegend", arg, showlegend) + self._set_property("showscale", arg, showscale) + self._set_property("slices", arg, slices) + self._set_property("spaceframe", arg, spaceframe) + self._set_property("stream", arg, stream) + self._set_property("surface", arg, surface) + self._set_property("text", arg, text) + self._set_property("textsrc", arg, textsrc) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("value", arg, value) + self._set_property("valuehoverformat", arg, valuehoverformat) + self._set_property("valuesrc", arg, valuesrc) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zhoverformat", arg, zhoverformat) + self._set_property("zsrc", arg, zsrc) + + self._props["type"] = "volume" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/_waterfall.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/_waterfall.py new file mode 100644 index 0000000..04dc774 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/_waterfall.py @@ -0,0 +1,2580 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceType as _BaseTraceType +import copy as _copy + + +class Waterfall(_BaseTraceType): + _parent_path_str = "" + _path_str = "waterfall" + _valid_props = { + "alignmentgroup", + "base", + "cliponaxis", + "connector", + "constraintext", + "customdata", + "customdatasrc", + "decreasing", + "dx", + "dy", + "hoverinfo", + "hoverinfosrc", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "hovertext", + "hovertextsrc", + "ids", + "idssrc", + "increasing", + "insidetextanchor", + "insidetextfont", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "measure", + "measuresrc", + "meta", + "metasrc", + "name", + "offset", + "offsetgroup", + "offsetsrc", + "opacity", + "orientation", + "outsidetextfont", + "selectedpoints", + "showlegend", + "stream", + "text", + "textangle", + "textfont", + "textinfo", + "textposition", + "textpositionsrc", + "textsrc", + "texttemplate", + "texttemplatesrc", + "totals", + "type", + "uid", + "uirevision", + "visible", + "width", + "widthsrc", + "x", + "x0", + "xaxis", + "xhoverformat", + "xperiod", + "xperiod0", + "xperiodalignment", + "xsrc", + "y", + "y0", + "yaxis", + "yhoverformat", + "yperiod", + "yperiod0", + "yperiodalignment", + "ysrc", + "zorder", + } + + @property + def alignmentgroup(self): + """ + 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. + + The 'alignmentgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["alignmentgroup"] + + @alignmentgroup.setter + def alignmentgroup(self, val): + self["alignmentgroup"] = val + + @property + def base(self): + """ + Sets where the bar base is drawn (in position axis units). + + The 'base' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["base"] + + @base.setter + def base(self, val): + self["base"] = val + + @property + def cliponaxis(self): + """ + 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*. + + The 'cliponaxis' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cliponaxis"] + + @cliponaxis.setter + def cliponaxis(self, val): + self["cliponaxis"] = val + + @property + def connector(self): + """ + The 'connector' property is an instance of Connector + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Connector` + - A dict of string/value properties that will be passed + to the Connector constructor + + Returns + ------- + plotly.graph_objs.waterfall.Connector + """ + return self["connector"] + + @connector.setter + def connector(self, val): + self["connector"] = val + + @property + def constraintext(self): + """ + Constrain the size of text inside or outside a bar to be no + larger than the bar itself. + + The 'constraintext' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'both', 'none'] + + Returns + ------- + Any + """ + return self["constraintext"] + + @constraintext.setter + def constraintext(self, val): + self["constraintext"] = val + + @property + def customdata(self): + """ + 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 + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def decreasing(self): + """ + The 'decreasing' property is an instance of Decreasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Decreasing` + - A dict of string/value properties that will be passed + to the Decreasing constructor + + Returns + ------- + plotly.graph_objs.waterfall.Decreasing + """ + return self["decreasing"] + + @decreasing.setter + def decreasing(self, val): + self["decreasing"] = val + + @property + def dx(self): + """ + Sets the x coordinate step. See `x0` for more info. + + The 'dx' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dx"] + + @dx.setter + def dx(self, val): + self["dx"] = val + + @property + def dy(self): + """ + Sets the y coordinate step. See `y0` for more info. + + The 'dy' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dy"] + + @dy.setter + def dy(self, val): + self["dy"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['name', 'x', 'y', 'text', 'initial', 'delta', 'final'] joined with '+' characters + (e.g. 'name+x') + OR exactly one of ['all', 'none', 'skip'] (e.g. 'skip') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverinfosrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + + The 'hoverinfosrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hoverinfosrc"] + + @hoverinfosrc.setter + def hoverinfosrc(self, val): + self["hoverinfosrc"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.waterfall.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every 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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def hovertext(self): + """ + 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. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def hovertextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertext`. + + The 'hovertextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertextsrc"] + + @hovertextsrc.setter + def hovertextsrc(self, val): + self["hovertextsrc"] = val + + @property + def ids(self): + """ + 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. + + The 'ids' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ids"] + + @ids.setter + def ids(self, val): + self["ids"] = val + + @property + def idssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ids`. + + The 'idssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["idssrc"] + + @idssrc.setter + def idssrc(self, val): + self["idssrc"] = val + + @property + def increasing(self): + """ + The 'increasing' property is an instance of Increasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Increasing` + - A dict of string/value properties that will be passed + to the Increasing constructor + + Returns + ------- + plotly.graph_objs.waterfall.Increasing + """ + return self["increasing"] + + @increasing.setter + def increasing(self, val): + self["increasing"] = val + + @property + def insidetextanchor(self): + """ + Determines if texts are kept at center or start/end points in + `textposition` "inside" mode. + + The 'insidetextanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['end', 'middle', 'start'] + + Returns + ------- + Any + """ + return self["insidetextanchor"] + + @insidetextanchor.setter + def insidetextanchor(self, val): + self["insidetextanchor"] = val + + @property + def insidetextfont(self): + """ + Sets the font used for `text` lying inside the bar. + + The 'insidetextfont' property is an instance of Insidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Insidetextfont` + - A dict of string/value properties that will be passed + to the Insidetextfont constructor + + Returns + ------- + plotly.graph_objs.waterfall.Insidetextfont + """ + return self["insidetextfont"] + + @insidetextfont.setter + def insidetextfont(self, val): + self["insidetextfont"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.waterfall.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + trace. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def measure(self): + """ + 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. + + The 'measure' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["measure"] + + @measure.setter + def measure(self, val): + self["measure"] = val + + @property + def measuresrc(self): + """ + Sets the source reference on Chart Studio Cloud for `measure`. + + The 'measuresrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["measuresrc"] + + @measuresrc.setter + def measuresrc(self, val): + self["measuresrc"] = val + + @property + def meta(self): + """ + 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. + + The 'meta' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["meta"] + + @meta.setter + def meta(self, val): + self["meta"] = val + + @property + def metasrc(self): + """ + Sets the source reference on Chart Studio Cloud for `meta`. + + The 'metasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["metasrc"] + + @metasrc.setter + def metasrc(self, val): + self["metasrc"] = val + + @property + def name(self): + """ + Sets the trace name. The trace name appears as the legend item + and on hover. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def offset(self): + """ + 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. + + The 'offset' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def offsetgroup(self): + """ + 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. + + The 'offsetgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["offsetgroup"] + + @offsetgroup.setter + def offsetgroup(self, val): + self["offsetgroup"] = val + + @property + def offsetsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `offset`. + + The 'offsetsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["offsetsrc"] + + @offsetsrc.setter + def offsetsrc(self, val): + self["offsetsrc"] = val + + @property + def opacity(self): + """ + Sets the opacity of the trace. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def orientation(self): + """ + Sets the orientation of the bars. With "v" ("h"), the value of + the each bar spans along the vertical (horizontal). + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outsidetextfont(self): + """ + Sets the font used for `text` lying outside the bar. + + The 'outsidetextfont' property is an instance of Outsidetextfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Outsidetextfont` + - A dict of string/value properties that will be passed + to the Outsidetextfont constructor + + Returns + ------- + plotly.graph_objs.waterfall.Outsidetextfont + """ + return self["outsidetextfont"] + + @outsidetextfont.setter + def outsidetextfont(self, val): + self["outsidetextfont"] = val + + @property + def selectedpoints(self): + """ + 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. + + The 'selectedpoints' property accepts values of any type + + Returns + ------- + Any + """ + return self["selectedpoints"] + + @selectedpoints.setter + def selectedpoints(self, val): + self["selectedpoints"] = val + + @property + def showlegend(self): + """ + Determines whether or not an item corresponding to this trace + is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def stream(self): + """ + The 'stream' property is an instance of Stream + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Stream` + - A dict of string/value properties that will be passed + to the Stream constructor + + Returns + ------- + plotly.graph_objs.waterfall.Stream + """ + return self["stream"] + + @stream.setter + def stream(self, val): + self["stream"] = val + + @property + def text(self): + """ + 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. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + 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. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def textfont(self): + """ + Sets the font used for `text`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.waterfall.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textinfo(self): + """ + Determines which trace information appear on the graph. In the + case of having multiple waterfalls, totals are computed + separately (per trace). + + The 'textinfo' property is a flaglist and may be specified + as a string containing: + - Any combination of ['label', 'text', 'initial', 'delta', 'final'] joined with '+' characters + (e.g. 'label+text') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["textinfo"] + + @textinfo.setter + def textinfo(self, val): + self["textinfo"] = val + + @property + def textposition(self): + """ + 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. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['inside', 'outside', 'auto', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def textpositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `textposition`. + + The 'textpositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textpositionsrc"] + + @textpositionsrc.setter + def textpositionsrc(self, val): + self["textpositionsrc"] = val + + @property + def textsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `text`. + + The 'textsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textsrc"] + + @textsrc.setter + def textsrc(self, val): + self["textsrc"] = val + + @property + def texttemplate(self): + """ + Template string used for rendering the information text that + appear 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. Every 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`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def texttemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + + The 'texttemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["texttemplatesrc"] + + @texttemplatesrc.setter + def texttemplatesrc(self, val): + self["texttemplatesrc"] = val + + @property + def totals(self): + """ + The 'totals' property is an instance of Totals + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.Totals` + - A dict of string/value properties that will be passed + to the Totals constructor + + Returns + ------- + plotly.graph_objs.waterfall.Totals + """ + return self["totals"] + + @totals.setter + def totals(self, val): + self["totals"] = val + + @property + def uid(self): + """ + Assign an id to this trace, Use this to provide object + constancy between traces during animations and transitions. + + The 'uid' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["uid"] + + @uid.setter + def uid(self, val): + self["uid"] = val + + @property + def uirevision(self): + """ + 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. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the bar width (in position axis units). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def x(self): + """ + Sets the x coordinates. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def x0(self): + """ + Alternate to `x`. Builds a linear space of x coordinates. Use + with `dx` where `x0` is the starting coordinate and `dx` the + step. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def xaxis(self): + """ + 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. + + The 'xaxis' property is an identifier of a particular + subplot, of type 'x', that may be specified as the string 'x' + optionally followed by an integer >= 1 + (e.g. 'x', 'x1', 'x2', 'x3', etc.) + + Returns + ------- + str + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def xhoverformat(self): + """ + 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`. + + The 'xhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["xhoverformat"] + + @xhoverformat.setter + def xhoverformat(self, val): + self["xhoverformat"] = val + + @property + def xperiod(self): + """ + 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. + + The 'xperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod"] + + @xperiod.setter + def xperiod(self, val): + self["xperiod"] = val + + @property + def xperiod0(self): + """ + 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. + + The 'xperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["xperiod0"] + + @xperiod0.setter + def xperiod0(self, val): + self["xperiod0"] = val + + @property + def xperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + + The 'xperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["xperiodalignment"] + + @xperiodalignment.setter + def xperiodalignment(self, val): + self["xperiodalignment"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y coordinates. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def y0(self): + """ + Alternate to `y`. Builds a linear space of y coordinates. Use + with `dy` where `y0` is the starting coordinate and `dy` the + step. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def yaxis(self): + """ + 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. + + The 'yaxis' property is an identifier of a particular + subplot, of type 'y', that may be specified as the string 'y' + optionally followed by an integer >= 1 + (e.g. 'y', 'y1', 'y2', 'y3', etc.) + + Returns + ------- + str + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def yhoverformat(self): + """ + 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`. + + The 'yhoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["yhoverformat"] + + @yhoverformat.setter + def yhoverformat(self, val): + self["yhoverformat"] = val + + @property + def yperiod(self): + """ + 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. + + The 'yperiod' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod"] + + @yperiod.setter + def yperiod(self, val): + self["yperiod"] = val + + @property + def yperiod0(self): + """ + 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. + + The 'yperiod0' property accepts values of any type + + Returns + ------- + Any + """ + return self["yperiod0"] + + @yperiod0.setter + def yperiod0(self, val): + self["yperiod0"] = val + + @property + def yperiodalignment(self): + """ + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + + The 'yperiodalignment' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["yperiodalignment"] + + @yperiodalignment.setter + def yperiodalignment(self, val): + self["yperiodalignment"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def zorder(self): + """ + 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`. + + The 'zorder' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["zorder"] + + @zorder.setter + def zorder(self, val): + self["zorder"] = val + + @property + def type(self): + return self._props["type"] + + @property + def _prop_descriptions(self): + return """\ + alignmentgroup + 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. + base + Sets where the bar base is drawn (in position axis + units). + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.waterfall.Connector` + instance or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.waterfall.Decreasing` + instance or dict with compatible properties + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.waterfall.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.waterfall.Increasing` + instance or dict with compatible properties + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.waterfall.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + measure + 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. + measuresrc + Sets the source reference on Chart Studio Cloud for + `measure`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.waterfall.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple waterfalls, totals are + computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + totals + :class:`plotly.graph_objects.waterfall.Totals` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + """ + + def __init__( + self, + arg=None, + alignmentgroup=None, + base=None, + cliponaxis=None, + connector=None, + constraintext=None, + customdata=None, + customdatasrc=None, + decreasing=None, + dx=None, + dy=None, + hoverinfo=None, + hoverinfosrc=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + hovertext=None, + hovertextsrc=None, + ids=None, + idssrc=None, + increasing=None, + insidetextanchor=None, + insidetextfont=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + measure=None, + measuresrc=None, + meta=None, + metasrc=None, + name=None, + offset=None, + offsetgroup=None, + offsetsrc=None, + opacity=None, + orientation=None, + outsidetextfont=None, + selectedpoints=None, + showlegend=None, + stream=None, + text=None, + textangle=None, + textfont=None, + textinfo=None, + textposition=None, + textpositionsrc=None, + textsrc=None, + texttemplate=None, + texttemplatesrc=None, + totals=None, + uid=None, + uirevision=None, + visible=None, + width=None, + widthsrc=None, + x=None, + x0=None, + xaxis=None, + xhoverformat=None, + xperiod=None, + xperiod0=None, + xperiodalignment=None, + xsrc=None, + y=None, + y0=None, + yaxis=None, + yhoverformat=None, + yperiod=None, + yperiod0=None, + yperiodalignment=None, + ysrc=None, + zorder=None, + **kwargs, + ): + """ + Construct a new Waterfall object + + Draws waterfall trace which is useful graph to displays the + contribution of various elements (either positive or negative) + in a bar chart. The data visualized by the span of the bars is + set in `y` if `orientation` is set to "v" (the default) and the + labels are set in `x`. By setting `orientation` to "h", the + roles are interchanged. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.Waterfall` + alignmentgroup + 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. + base + Sets where the bar base is drawn (in position axis + units). + cliponaxis + 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*. + connector + :class:`plotly.graph_objects.waterfall.Connector` + instance or dict with compatible properties + constraintext + Constrain the size of text inside or outside a bar to + be no larger than the bar itself. + customdata + 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 + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + decreasing + :class:`plotly.graph_objects.waterfall.Decreasing` + instance or dict with compatible properties + dx + Sets the x coordinate step. See `x0` for more info. + dy + Sets the y coordinate step. See `y0` for more info. + hoverinfo + 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. + hoverinfosrc + Sets the source reference on Chart Studio Cloud for + `hoverinfo`. + hoverlabel + :class:`plotly.graph_objects.waterfall.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every 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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + hovertext + 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. + hovertextsrc + Sets the source reference on Chart Studio Cloud for + `hovertext`. + ids + 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. + idssrc + Sets the source reference on Chart Studio Cloud for + `ids`. + increasing + :class:`plotly.graph_objects.waterfall.Increasing` + instance or dict with compatible properties + insidetextanchor + Determines if texts are kept at center or start/end + points in `textposition` "inside" mode. + insidetextfont + Sets the font used for `text` lying inside the bar. + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.waterfall.Legendgrouptitle + ` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this trace. + measure + 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. + measuresrc + Sets the source reference on Chart Studio Cloud for + `measure`. + meta + 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. + metasrc + Sets the source reference on Chart Studio Cloud for + `meta`. + name + Sets the trace name. The trace name appears as the + legend item and on hover. + offset + 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. + offsetgroup + 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. + offsetsrc + Sets the source reference on Chart Studio Cloud for + `offset`. + opacity + Sets the opacity of the trace. + orientation + Sets the orientation of the bars. With "v" ("h"), the + value of the each bar spans along the vertical + (horizontal). + outsidetextfont + Sets the font used for `text` lying outside the bar. + selectedpoints + 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. + showlegend + Determines whether or not an item corresponding to this + trace is shown in the legend. + stream + :class:`plotly.graph_objects.waterfall.Stream` instance + or dict with compatible properties + text + 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. + textangle + 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. + textfont + Sets the font used for `text`. + textinfo + Determines which trace information appear on the graph. + In the case of having multiple waterfalls, totals are + computed separately (per trace). + textposition + 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. + textpositionsrc + Sets the source reference on Chart Studio Cloud for + `textposition`. + textsrc + Sets the source reference on Chart Studio Cloud for + `text`. + texttemplate + Template string used for rendering the information text + that appear 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. Every 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`. + texttemplatesrc + Sets the source reference on Chart Studio Cloud for + `texttemplate`. + totals + :class:`plotly.graph_objects.waterfall.Totals` instance + or dict with compatible properties + uid + Assign an id to this trace, Use this to provide object + constancy between traces during animations and + transitions. + uirevision + 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. + visible + 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). + width + Sets the bar width (in position axis units). + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + x + Sets the x coordinates. + x0 + Alternate to `x`. Builds a linear space of x + coordinates. Use with `dx` where `x0` is the starting + coordinate and `dx` the step. + xaxis + 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. + xhoverformat + 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`. + xperiod + 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. + xperiod0 + 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. + xperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the x axis. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y coordinates. + y0 + Alternate to `y`. Builds a linear space of y + coordinates. Use with `dy` where `y0` is the starting + coordinate and `dy` the step. + yaxis + 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. + yhoverformat + 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`. + yperiod + 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. + yperiod0 + 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. + yperiodalignment + Only relevant when the axis `type` is "date". Sets the + alignment of data points on the y axis. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + zorder + 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`. + + Returns + ------- + Waterfall + """ + super().__init__("waterfall") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.Waterfall +constructor must be a dict or +an instance of :class:`plotly.graph_objs.Waterfall`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("alignmentgroup", arg, alignmentgroup) + self._set_property("base", arg, base) + self._set_property("cliponaxis", arg, cliponaxis) + self._set_property("connector", arg, connector) + self._set_property("constraintext", arg, constraintext) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("decreasing", arg, decreasing) + self._set_property("dx", arg, dx) + self._set_property("dy", arg, dy) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverinfosrc", arg, hoverinfosrc) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("hovertext", arg, hovertext) + self._set_property("hovertextsrc", arg, hovertextsrc) + self._set_property("ids", arg, ids) + self._set_property("idssrc", arg, idssrc) + self._set_property("increasing", arg, increasing) + self._set_property("insidetextanchor", arg, insidetextanchor) + self._set_property("insidetextfont", arg, insidetextfont) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("measure", arg, measure) + self._set_property("measuresrc", arg, measuresrc) + self._set_property("meta", arg, meta) + self._set_property("metasrc", arg, metasrc) + self._set_property("name", arg, name) + self._set_property("offset", arg, offset) + self._set_property("offsetgroup", arg, offsetgroup) + self._set_property("offsetsrc", arg, offsetsrc) + self._set_property("opacity", arg, opacity) + self._set_property("orientation", arg, orientation) + self._set_property("outsidetextfont", arg, outsidetextfont) + self._set_property("selectedpoints", arg, selectedpoints) + self._set_property("showlegend", arg, showlegend) + self._set_property("stream", arg, stream) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("textfont", arg, textfont) + self._set_property("textinfo", arg, textinfo) + self._set_property("textposition", arg, textposition) + self._set_property("textpositionsrc", arg, textpositionsrc) + self._set_property("textsrc", arg, textsrc) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("texttemplatesrc", arg, texttemplatesrc) + self._set_property("totals", arg, totals) + self._set_property("uid", arg, uid) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._set_property("x", arg, x) + self._set_property("x0", arg, x0) + self._set_property("xaxis", arg, xaxis) + self._set_property("xhoverformat", arg, xhoverformat) + self._set_property("xperiod", arg, xperiod) + self._set_property("xperiod0", arg, xperiod0) + self._set_property("xperiodalignment", arg, xperiodalignment) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("y0", arg, y0) + self._set_property("yaxis", arg, yaxis) + self._set_property("yhoverformat", arg, yhoverformat) + self._set_property("yperiod", arg, yperiod) + self._set_property("yperiod0", arg, yperiod0) + self._set_property("yperiodalignment", arg, yperiodalignment) + self._set_property("ysrc", arg, ysrc) + self._set_property("zorder", arg, zorder) + + self._props["type"] = "waterfall" + arg.pop("type", None) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/__init__.py new file mode 100644 index 0000000..3b22b71 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/__init__.py @@ -0,0 +1,40 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._error_x import ErrorX + from ._error_y import ErrorY + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._error_x.ErrorX", + "._error_y.ErrorY", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_x.py new file mode 100644 index 0000000..f28208c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_x.py @@ -0,0 +1,502 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorX(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.error_x" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "copy_ystyle", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def copy_ystyle(self): + """ + The 'copy_ystyle' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["copy_ystyle"] + + @copy_ystyle.setter + def copy_ystyle(self, val): + self["copy_ystyle"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + copy_ystyle=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorX object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.ErrorX` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorX + """ + super().__init__("error_x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.ErrorX +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.ErrorX`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("copy_ystyle", arg, copy_ystyle) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_y.py new file mode 100644 index 0000000..e5db21f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_error_y.py @@ -0,0 +1,479 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorY(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.error_y" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorY object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.ErrorY` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorY + """ + super().__init__("error_y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.ErrorY +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.ErrorY`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_hoverlabel.py new file mode 100644 index 0000000..65ab966 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.bar.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_insidetextfont.py new file mode 100644 index 0000000..f1c48da --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `text` lying inside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_legendgrouptitle.py new file mode 100644 index 0000000..3a74894 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.bar.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_marker.py new file mode 100644 index 0000000..a80880e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_marker.py @@ -0,0 +1,685 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "cornerradius", + "line", + "opacity", + "opacitysrc", + "pattern", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to bar.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.bar.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def cornerradius(self): + """ + 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. + + The 'cornerradius' property accepts values of any type + + Returns + ------- + Any + """ + return self["cornerradius"] + + @cornerradius.setter + def cornerradius(self, val): + self["cornerradius"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.bar.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the bars. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.bar.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.bar.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + cornerradius + 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. + line + :class:`plotly.graph_objects.bar.marker.Line` instance + or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + 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. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + cornerradius=None, + line=None, + opacity=None, + opacitysrc=None, + pattern=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.bar.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + cornerradius + 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. + line + :class:`plotly.graph_objects.bar.marker.Line` instance + or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + 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. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("cornerradius", arg, cornerradius) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("pattern", arg, pattern) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_outsidetextfont.py new file mode 100644 index 0000000..2e2a8a3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_outsidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + Sets the font used for `text` lying outside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_selected.py new file mode 100644 index 0000000..df30936 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_selected.py @@ -0,0 +1,105 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.bar.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.bar.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.bar.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.bar.selected.Textfont` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.Selected` + marker + :class:`plotly.graph_objects.bar.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.bar.selected.Textfont` + instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_stream.py new file mode 100644 index 0000000..c4d3c05 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_textfont.py new file mode 100644 index 0000000..f63c5c4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_textfont.py @@ -0,0 +1,586 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `text`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_unselected.py new file mode 100644 index 0000000..9bd645d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "bar" + _path_str = "bar.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.bar.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.bar.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.bar.unselected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.bar.unselected.Textfont` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.Unselected` + marker + :class:`plotly.graph_objects.bar.unselected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.bar.unselected.Textfont` + instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/_font.py new file mode 100644 index 0000000..485d5a7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "bar.hoverlabel" + _path_str = "bar.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/_font.py new file mode 100644 index 0000000..9c134c3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "bar.legendgrouptitle" + _path_str = "bar.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/__init__.py new file mode 100644 index 0000000..e2d7a12 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from ._pattern import Pattern + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._line.Line", "._pattern.Pattern"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_colorbar.py new file mode 100644 index 0000000..529a714 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_colorbar.py @@ -0,0 +1,1721 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker" + _path_str = "bar.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.bar.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.bar.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.bar.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.bar.marker.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of bar.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.bar.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.bar.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.bar.marker.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.bar.ma + rker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + bar.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.bar.marker.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.bar.marker.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.bar.ma + rker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + bar.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.bar.marker.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_line.py new file mode 100644 index 0000000..f9d515b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker" + _path_str = "bar.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to bar.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_pattern.py new file mode 100644 index 0000000..71b73ab --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker" + _path_str = "bar.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..5cfa677 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker.colorbar" + _path_str = "bar.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.marker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..04819a0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker.colorbar" + _path_str = "bar.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.marker.col + orbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_title.py new file mode 100644 index 0000000..ac2a569 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker.colorbar" + _path_str = "bar.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.bar.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.bar.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/_font.py new file mode 100644 index 0000000..a3c50a3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "bar.marker.colorbar.title" + _path_str = "bar.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.bar.marker.col + orbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_marker.py new file mode 100644 index 0000000..e704eb4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_marker.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "bar.selected" + _path_str = "bar.selected.marker" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_textfont.py new file mode 100644 index 0000000..79fb7ab --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "bar.selected" + _path_str = "bar.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_marker.py new file mode 100644 index 0000000..a4e004c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_marker.py @@ -0,0 +1,110 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "bar.unselected" + _path_str = "bar.unselected.marker" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_textfont.py new file mode 100644 index 0000000..eb15311 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/bar/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "bar.unselected" + _path_str = "bar.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.bar.unselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.bar.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.bar.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/__init__.py new file mode 100644 index 0000000..12dab9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/__init__.py @@ -0,0 +1,30 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_hoverlabel.py new file mode 100644 index 0000000..bfb053f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "barpolar" + _path_str = "barpolar.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.barpolar.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_legendgrouptitle.py new file mode 100644 index 0000000..d5a6556 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "barpolar" + _path_str = "barpolar.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.barpolar.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_marker.py new file mode 100644 index 0000000..5015e40 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_marker.py @@ -0,0 +1,650 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "barpolar" + _path_str = "barpolar.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "line", + "opacity", + "opacitysrc", + "pattern", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to barpolar.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the bars. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.barpolar.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.barpolar.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + 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. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + line=None, + opacity=None, + opacitysrc=None, + pattern=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.barpolar.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.barpolar.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + 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. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("pattern", arg, pattern) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_selected.py new file mode 100644 index 0000000..60132e3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "barpolar" + _path_str = "barpolar.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.barpolar.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.barpolar.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.barpolar.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.barpolar.selected.Textfont + ` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.Selected` + marker + :class:`plotly.graph_objects.barpolar.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.barpolar.selected.Textfont + ` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_stream.py new file mode 100644 index 0000000..8640dbb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "barpolar" + _path_str = "barpolar.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_unselected.py new file mode 100644 index 0000000..ef4cde9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "barpolar" + _path_str = "barpolar.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.barpolar.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.barpolar.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.barpolar.unselected.Marker + ` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.barpolar.unselected.Textfo + nt` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.Unselected` + marker + :class:`plotly.graph_objects.barpolar.unselected.Marker + ` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.barpolar.unselected.Textfo + nt` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/_font.py new file mode 100644 index 0000000..fd59e9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.hoverlabel" + _path_str = "barpolar.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/_font.py new file mode 100644 index 0000000..5c097a1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.legendgrouptitle" + _path_str = "barpolar.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.barpolar.legen + dgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/__init__.py new file mode 100644 index 0000000..e2d7a12 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from ._pattern import Pattern + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._line.Line", "._pattern.Pattern"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_colorbar.py new file mode 100644 index 0000000..112445d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker" + _path_str = "barpolar.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.barpolar.marke + r.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + barpolar.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.barpolar.marker + .colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.barpol + ar.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + barpolar.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.barpolar.marker.colorbar.T + itle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.barpolar.marker + .colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.barpol + ar.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + barpolar.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.barpolar.marker.colorbar.T + itle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_line.py new file mode 100644 index 0000000..9449d22 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker" + _path_str = "barpolar.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to barpolar.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_pattern.py new file mode 100644 index 0000000..e94caf7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker" + _path_str = "barpolar.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..3f1bdc9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker.colorbar" + _path_str = "barpolar.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.barpolar.marke + r.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..c860e69 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker.colorbar" + _path_str = "barpolar.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.barpolar.marke + r.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_title.py new file mode 100644 index 0000000..6c674fb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker.colorbar" + _path_str = "barpolar.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.barpolar.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.barpolar.marke + r.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py new file mode 100644 index 0000000..fac5ba9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.marker.colorbar.title" + _path_str = "barpolar.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.barpolar.marke + r.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_marker.py new file mode 100644 index 0000000..ca4aba8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_marker.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.selected" + _path_str = "barpolar.selected.marker" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_textfont.py new file mode 100644 index 0000000..111a9ff --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.selected" + _path_str = "barpolar.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_marker.py new file mode 100644 index 0000000..85e314b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_marker.py @@ -0,0 +1,110 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.unselected" + _path_str = "barpolar.unselected.marker" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_textfont.py new file mode 100644 index 0000000..41ad2f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/barpolar/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "barpolar.unselected" + _path_str = "barpolar.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.barpolar.unselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.barpolar.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.barpolar.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/__init__.py new file mode 100644 index 0000000..f9bb46f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/__init__.py @@ -0,0 +1,32 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_hoverlabel.py new file mode 100644 index 0000000..b273e6c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.box.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_legendgrouptitle.py new file mode 100644 index 0000000..a2c2541 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.box.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_line.py new file mode 100644 index 0000000..4887c7e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_line.py @@ -0,0 +1,103 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of line bounding the box(es). + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of line bounding the box(es). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of line bounding the box(es). + width + Sets the width (in px) of line bounding the box(es). + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.box.Line` + color + Sets the color of line bounding the box(es). + width + Sets the width (in px) of line bounding the box(es). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_marker.py new file mode 100644 index 0000000..eaf4f80 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_marker.py @@ -0,0 +1,357 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.marker" + _valid_props = { + "angle", + "color", + "line", + "opacity", + "outliercolor", + "size", + "symbol", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.box.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def outliercolor(self): + """ + Sets the color of the outlier sample points. + + The 'outliercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outliercolor"] + + @outliercolor.setter + def outliercolor(self, val): + self["outliercolor"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + + Returns + ------- + Any + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + color + 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. + line + :class:`plotly.graph_objects.box.marker.Line` instance + or dict with compatible properties + opacity + Sets the marker opacity. + outliercolor + Sets the color of the outlier sample points. + size + Sets the marker size (in px). + symbol + 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. + """ + + def __init__( + self, + arg=None, + angle=None, + color=None, + line=None, + opacity=None, + outliercolor=None, + size=None, + symbol=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.box.Marker` + angle + Sets the marker angle in respect to `angleref`. + color + 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. + line + :class:`plotly.graph_objects.box.marker.Line` instance + or dict with compatible properties + opacity + Sets the marker opacity. + outliercolor + Sets the color of the outlier sample points. + size + Sets the marker size (in px). + symbol + 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. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("outliercolor", arg, outliercolor) + self._set_property("size", arg, size) + self._set_property("symbol", arg, symbol) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_selected.py new file mode 100644 index 0000000..cb94773 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_selected.py @@ -0,0 +1,79 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.box.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.box.selected.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.box.Selected` + marker + :class:`plotly.graph_objects.box.selected.Marker` + instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_stream.py new file mode 100644 index 0000000..b6cd0eb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.box.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_unselected.py new file mode 100644 index 0000000..9db72eb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "box" + _path_str = "box.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.box.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.box.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.box.unselected.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.Unselected` + marker + :class:`plotly.graph_objects.box.unselected.Marker` + instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/_font.py new file mode 100644 index 0000000..f4ab0af --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "box.hoverlabel" + _path_str = "box.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/_font.py new file mode 100644 index 0000000..aa42e3d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "box.legendgrouptitle" + _path_str = "box.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/_line.py new file mode 100644 index 0000000..95b6e0b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/marker/_line.py @@ -0,0 +1,181 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "box.marker" + _path_str = "box.marker.line" + _valid_props = {"color", "outliercolor", "outlierwidth", "width"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def outliercolor(self): + """ + Sets the border line color of the outlier sample points. + Defaults to marker.color + + The 'outliercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outliercolor"] + + @outliercolor.setter + def outliercolor(self, val): + self["outliercolor"] = val + + @property + def outlierwidth(self): + """ + Sets the border line width (in px) of the outlier sample + points. + + The 'outlierwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlierwidth"] + + @outlierwidth.setter + def outlierwidth(self, val): + self["outlierwidth"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + outliercolor + Sets the border line color of the outlier sample + points. Defaults to marker.color + outlierwidth + Sets the border line width (in px) of the outlier + sample points. + width + Sets the width (in px) of the lines bounding the marker + points. + """ + + def __init__( + self, + arg=None, + color=None, + outliercolor=None, + outlierwidth=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.marker.Line` + color + 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. + outliercolor + Sets the border line color of the outlier sample + points. Defaults to marker.color + outlierwidth + Sets the border line width (in px) of the outlier + sample points. + width + Sets the width (in px) of the lines bounding the marker + points. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("outliercolor", arg, outliercolor) + self._set_property("outlierwidth", arg, outlierwidth) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/_marker.py new file mode 100644 index 0000000..b4f9afa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "box.selected" + _path_str = "box.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/_marker.py new file mode 100644 index 0000000..b2c5d8f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/box/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "box.unselected" + _path_str = "box.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.box.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.box.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.box.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/__init__.py new file mode 100644 index 0000000..464258c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/__init__.py @@ -0,0 +1,29 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._decreasing import Decreasing + from ._hoverlabel import Hoverlabel + from ._increasing import Increasing + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._stream import Stream + from . import decreasing + from . import hoverlabel + from . import increasing + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".decreasing", ".hoverlabel", ".increasing", ".legendgrouptitle"], + [ + "._decreasing.Decreasing", + "._hoverlabel.Hoverlabel", + "._increasing.Increasing", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_decreasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_decreasing.py new file mode 100644 index 0000000..c801692 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_decreasing.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Decreasing(_BaseTraceHierarchyType): + _parent_path_str = "candlestick" + _path_str = "candlestick.decreasing" + _valid_props = {"fillcolor", "line"} + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.decreasing.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.candlestick.decreasing.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + line + :class:`plotly.graph_objects.candlestick.decreasing.Lin + e` instance or dict with compatible properties + """ + + def __init__(self, arg=None, fillcolor=None, line=None, **kwargs): + """ + Construct a new Decreasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.Decreasing` + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + line + :class:`plotly.graph_objects.candlestick.decreasing.Lin + e` instance or dict with compatible properties + + Returns + ------- + Decreasing + """ + super().__init__("decreasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.Decreasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.Decreasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fillcolor", arg, fillcolor) + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_hoverlabel.py new file mode 100644 index 0000000..b2c8c86 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_hoverlabel.py @@ -0,0 +1,366 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "candlestick" + _path_str = "candlestick.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + "split", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.candlestick.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def split(self): + """ + Show hover information (open, close, high, low) in separate + labels. + + The 'split' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["split"] + + @split.setter + def split(self, val): + self["split"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + split + Show hover information (open, close, high, low) in + separate labels. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + split=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + split + Show hover information (open, close, high, low) in + separate labels. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._set_property("split", arg, split) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_increasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_increasing.py new file mode 100644 index 0000000..547e846 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_increasing.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Increasing(_BaseTraceHierarchyType): + _parent_path_str = "candlestick" + _path_str = "candlestick.increasing" + _valid_props = {"fillcolor", "line"} + + @property + def fillcolor(self): + """ + Sets the fill color. Defaults to a half-transparent variant of + the line color, marker color, or marker line color, whichever + is available. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.increasing.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.candlestick.increasing.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + line + :class:`plotly.graph_objects.candlestick.increasing.Lin + e` instance or dict with compatible properties + """ + + def __init__(self, arg=None, fillcolor=None, line=None, **kwargs): + """ + Construct a new Increasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.Increasing` + fillcolor + Sets the fill color. Defaults to a half-transparent + variant of the line color, marker color, or marker line + color, whichever is available. + line + :class:`plotly.graph_objects.candlestick.increasing.Lin + e` instance or dict with compatible properties + + Returns + ------- + Increasing + """ + super().__init__("increasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.Increasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.Increasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fillcolor", arg, fillcolor) + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_legendgrouptitle.py new file mode 100644 index 0000000..c4fb3f7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "candlestick" + _path_str = "candlestick.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.candlestick.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.candlestick.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_line.py new file mode 100644 index 0000000..4250d33 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_line.py @@ -0,0 +1,85 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "candlestick" + _path_str = "candlestick.line" + _valid_props = {"width"} + + @property + def width(self): + """ + Sets the width (in px) of line bounding the box(es). Note that + this style setting can also be set per direction via + `increasing.line.width` and `decreasing.line.width`. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + width + Sets the width (in px) of line bounding the box(es). + Note that this style setting can also be set per + direction via `increasing.line.width` and + `decreasing.line.width`. + """ + + def __init__(self, arg=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.Line` + width + Sets the width (in px) of line bounding the box(es). + Note that this style setting can also be set per + direction via `increasing.line.width` and + `decreasing.line.width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_stream.py new file mode 100644 index 0000000..1242e42 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "candlestick" + _path_str = "candlestick.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/_line.py new file mode 100644 index 0000000..4e0f2e0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/decreasing/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "candlestick.decreasing" + _path_str = "candlestick.decreasing.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of line bounding the box(es). + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of line bounding the box(es). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of line bounding the box(es). + width + Sets the width (in px) of line bounding the box(es). + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.decreasing.Line` + color + Sets the color of line bounding the box(es). + width + Sets the width (in px) of line bounding the box(es). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.decreasing.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.decreasing.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/_font.py new file mode 100644 index 0000000..86e1b5a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "candlestick.hoverlabel" + _path_str = "candlestick.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/_line.py new file mode 100644 index 0000000..964d07d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/increasing/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "candlestick.increasing" + _path_str = "candlestick.increasing.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of line bounding the box(es). + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of line bounding the box(es). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of line bounding the box(es). + width + Sets the width (in px) of line bounding the box(es). + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.candlestick.increasing.Line` + color + Sets the color of line bounding the box(es). + width + Sets the width (in px) of line bounding the box(es). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.increasing.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.increasing.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/_font.py new file mode 100644 index 0000000..3026f85 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/candlestick/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "candlestick.legendgrouptitle" + _path_str = "candlestick.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.candlestick.le + gendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.candlestick.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.candlestick.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/__init__.py new file mode 100644 index 0000000..38c554d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/__init__.py @@ -0,0 +1,26 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._aaxis import Aaxis + from ._baxis import Baxis + from ._font import Font + from ._legendgrouptitle import Legendgrouptitle + from ._stream import Stream + from . import aaxis + from . import baxis + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".aaxis", ".baxis", ".legendgrouptitle"], + [ + "._aaxis.Aaxis", + "._baxis.Baxis", + "._font.Font", + "._legendgrouptitle.Legendgrouptitle", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_aaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_aaxis.py new file mode 100644 index 0000000..f10597e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_aaxis.py @@ -0,0 +1,1850 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Aaxis(_BaseTraceHierarchyType): + _parent_path_str = "carpet" + _path_str = "carpet.aaxis" + _valid_props = { + "arraydtick", + "arraytick0", + "autorange", + "autotypenumbers", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "cheatertype", + "color", + "dtick", + "endline", + "endlinecolor", + "endlinewidth", + "exponentformat", + "fixedrange", + "gridcolor", + "griddash", + "gridwidth", + "labelalias", + "labelpadding", + "labelprefix", + "labelsuffix", + "linecolor", + "linewidth", + "minexponent", + "minorgridcolor", + "minorgridcount", + "minorgriddash", + "minorgridwidth", + "nticks", + "range", + "rangemode", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "smoothing", + "startline", + "startlinecolor", + "startlinewidth", + "tick0", + "tickangle", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "tickmode", + "tickprefix", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "title", + "type", + } + + @property + def arraydtick(self): + """ + The stride between grid lines along the axis + + The 'arraydtick' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["arraydtick"] + + @arraydtick.setter + def arraydtick(self, val): + self["arraydtick"] = val + + @property + def arraytick0(self): + """ + The starting index of grid lines along the axis + + The 'arraytick0' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["arraytick0"] + + @arraytick0.setter + def arraytick0(self, val): + self["arraytick0"] = val + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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`. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['trace', 'category ascending', 'category descending', + 'array'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def cheatertype(self): + """ + The 'cheatertype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['index', 'value'] + + Returns + ------- + Any + """ + return self["cheatertype"] + + @cheatertype.setter + def cheatertype(self, val): + self["cheatertype"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + The stride between grid lines along the axis + + The 'dtick' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def endline(self): + """ + 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. + + The 'endline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["endline"] + + @endline.setter + def endline(self, val): + self["endline"] = val + + @property + def endlinecolor(self): + """ + Sets the line color of the end line. + + The 'endlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["endlinecolor"] + + @endlinecolor.setter + def endlinecolor(self, val): + self["endlinecolor"] = val + + @property + def endlinewidth(self): + """ + Sets the width (in px) of the end line. + + The 'endlinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["endlinewidth"] + + @endlinewidth.setter + def endlinewidth(self, val): + self["endlinewidth"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def fixedrange(self): + """ + Determines whether or not this axis is zoom-able. If true, then + zoom is disabled. + + The 'fixedrange' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["fixedrange"] + + @fixedrange.setter + def fixedrange(self, val): + self["fixedrange"] = val + + @property + def gridcolor(self): + """ + Sets the axis line color. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the axis line. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def labelpadding(self): + """ + Extra padding between label and the axis + + The 'labelpadding' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["labelpadding"] + + @labelpadding.setter + def labelpadding(self, val): + self["labelpadding"] = val + + @property + def labelprefix(self): + """ + Sets a axis label prefix. + + The 'labelprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelprefix"] + + @labelprefix.setter + def labelprefix(self, val): + self["labelprefix"] = val + + @property + def labelsuffix(self): + """ + Sets a axis label suffix. + + The 'labelsuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelsuffix"] + + @labelsuffix.setter + def labelsuffix(self, val): + self["labelsuffix"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def minorgridcolor(self): + """ + Sets the color of the grid lines. + + The 'minorgridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["minorgridcolor"] + + @minorgridcolor.setter + def minorgridcolor(self, val): + self["minorgridcolor"] = val + + @property + def minorgridcount(self): + """ + Sets the number of minor grid ticks per major grid tick + + The 'minorgridcount' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["minorgridcount"] + + @minorgridcount.setter + def minorgridcount(self, val): + self["minorgridcount"] = val + + @property + def minorgriddash(self): + """ + 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"). + + The 'minorgriddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["minorgriddash"] + + @minorgriddash.setter + def minorgriddash(self, val): + self["minorgriddash"] = val + + @property + def minorgridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'minorgridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minorgridwidth"] + + @minorgridwidth.setter + def minorgridwidth(self, val): + self["minorgridwidth"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + 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. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether axis labels are drawn on the low side, the + high side, both, or neither side of the axis. + + The 'showticklabels' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'end', 'both', 'none'] + + Returns + ------- + Any + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def smoothing(self): + """ + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def startline(self): + """ + 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. + + The 'startline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["startline"] + + @startline.setter + def startline(self, val): + self["startline"] = val + + @property + def startlinecolor(self): + """ + Sets the line color of the start line. + + The 'startlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["startlinecolor"] + + @startlinecolor.setter + def startlinecolor(self, val): + self["startlinecolor"] = val + + @property + def startlinewidth(self): + """ + Sets the width (in px) of the start line. + + The 'startlinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["startlinewidth"] + + @startlinewidth.setter + def startlinewidth(self, val): + self["startlinewidth"] = val + + @property + def tick0(self): + """ + The starting index of grid lines along the axis + + The 'tick0' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.aaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.carpet.aaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.carpet.aaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.carpet.aaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.carpet.aaxis.tickformatstopdefaults), sets + the default property values to use for elements of + carpet.aaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.aaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.carpet.aaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def tickmode(self): + """ + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.aaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.carpet.aaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def _prop_descriptions(self): + return """\ + arraydtick + The stride between grid lines along the axis + arraytick0 + The starting index of grid lines along the axis + autorange + 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. + autotypenumbers + 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. + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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`. + cheatertype + + color + 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. + dtick + The stride between grid lines along the axis + endline + 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. + endlinecolor + Sets the line color of the end line. + endlinewidth + Sets the width (in px) of the end line. + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the axis line color. + griddash + 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"). + gridwidth + Sets the width (in px) of the axis line. + labelalias + 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. + labelpadding + Extra padding between label and the axis + labelprefix + Sets a axis label prefix. + labelsuffix + Sets a axis label suffix. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + minexponent + Hide SI prefix for 10^n if |n| is below this number + minorgridcolor + Sets the color of the grid lines. + minorgridcount + Sets the number of minor grid ticks per major grid tick + minorgriddash + 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"). + minorgridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + range + 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. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether axis labels are drawn on the low + side, the high side, both, or neither side of the axis. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + smoothing + + startline + 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. + startlinecolor + Sets the line color of the start line. + startlinewidth + Sets the width (in px) of the start line. + tick0 + The starting index of grid lines along the axis + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.carpet.aaxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.aaxis.tickformatstops + tickmode + + tickprefix + Sets a tick label prefix. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + title + :class:`plotly.graph_objects.carpet.aaxis.Title` + instance or dict with compatible properties + type + 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. + """ + + def __init__( + self, + arg=None, + arraydtick=None, + arraytick0=None, + autorange=None, + autotypenumbers=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + cheatertype=None, + color=None, + dtick=None, + endline=None, + endlinecolor=None, + endlinewidth=None, + exponentformat=None, + fixedrange=None, + gridcolor=None, + griddash=None, + gridwidth=None, + labelalias=None, + labelpadding=None, + labelprefix=None, + labelsuffix=None, + linecolor=None, + linewidth=None, + minexponent=None, + minorgridcolor=None, + minorgridcount=None, + minorgriddash=None, + minorgridwidth=None, + nticks=None, + range=None, + rangemode=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + smoothing=None, + startline=None, + startlinecolor=None, + startlinewidth=None, + tick0=None, + tickangle=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + tickmode=None, + tickprefix=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + title=None, + type=None, + **kwargs, + ): + """ + Construct a new Aaxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.carpet.Aaxis` + arraydtick + The stride between grid lines along the axis + arraytick0 + The starting index of grid lines along the axis + autorange + 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. + autotypenumbers + 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. + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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`. + cheatertype + + color + 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. + dtick + The stride between grid lines along the axis + endline + 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. + endlinecolor + Sets the line color of the end line. + endlinewidth + Sets the width (in px) of the end line. + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the axis line color. + griddash + 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"). + gridwidth + Sets the width (in px) of the axis line. + labelalias + 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. + labelpadding + Extra padding between label and the axis + labelprefix + Sets a axis label prefix. + labelsuffix + Sets a axis label suffix. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + minexponent + Hide SI prefix for 10^n if |n| is below this number + minorgridcolor + Sets the color of the grid lines. + minorgridcount + Sets the number of minor grid ticks per major grid tick + minorgriddash + 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"). + minorgridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + range + 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. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether axis labels are drawn on the low + side, the high side, both, or neither side of the axis. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + smoothing + + startline + 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. + startlinecolor + Sets the line color of the start line. + startlinewidth + Sets the width (in px) of the start line. + tick0 + The starting index of grid lines along the axis + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.carpet.aaxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.aaxis.tickformatstops + tickmode + + tickprefix + Sets a tick label prefix. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + title + :class:`plotly.graph_objects.carpet.aaxis.Title` + instance or dict with compatible properties + type + 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. + + Returns + ------- + Aaxis + """ + super().__init__("aaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.Aaxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.Aaxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("arraydtick", arg, arraydtick) + self._set_property("arraytick0", arg, arraytick0) + self._set_property("autorange", arg, autorange) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("cheatertype", arg, cheatertype) + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("endline", arg, endline) + self._set_property("endlinecolor", arg, endlinecolor) + self._set_property("endlinewidth", arg, endlinewidth) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("fixedrange", arg, fixedrange) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("labelalias", arg, labelalias) + self._set_property("labelpadding", arg, labelpadding) + self._set_property("labelprefix", arg, labelprefix) + self._set_property("labelsuffix", arg, labelsuffix) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("minexponent", arg, minexponent) + self._set_property("minorgridcolor", arg, minorgridcolor) + self._set_property("minorgridcount", arg, minorgridcount) + self._set_property("minorgriddash", arg, minorgriddash) + self._set_property("minorgridwidth", arg, minorgridwidth) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("smoothing", arg, smoothing) + self._set_property("startline", arg, startline) + self._set_property("startlinecolor", arg, startlinecolor) + self._set_property("startlinewidth", arg, startlinewidth) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_baxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_baxis.py new file mode 100644 index 0000000..f268f69 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_baxis.py @@ -0,0 +1,1850 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Baxis(_BaseTraceHierarchyType): + _parent_path_str = "carpet" + _path_str = "carpet.baxis" + _valid_props = { + "arraydtick", + "arraytick0", + "autorange", + "autotypenumbers", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "cheatertype", + "color", + "dtick", + "endline", + "endlinecolor", + "endlinewidth", + "exponentformat", + "fixedrange", + "gridcolor", + "griddash", + "gridwidth", + "labelalias", + "labelpadding", + "labelprefix", + "labelsuffix", + "linecolor", + "linewidth", + "minexponent", + "minorgridcolor", + "minorgridcount", + "minorgriddash", + "minorgridwidth", + "nticks", + "range", + "rangemode", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "smoothing", + "startline", + "startlinecolor", + "startlinewidth", + "tick0", + "tickangle", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "tickmode", + "tickprefix", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "title", + "type", + } + + @property + def arraydtick(self): + """ + The stride between grid lines along the axis + + The 'arraydtick' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["arraydtick"] + + @arraydtick.setter + def arraydtick(self, val): + self["arraydtick"] = val + + @property + def arraytick0(self): + """ + The starting index of grid lines along the axis + + The 'arraytick0' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["arraytick0"] + + @arraytick0.setter + def arraytick0(self, val): + self["arraytick0"] = val + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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`. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['trace', 'category ascending', 'category descending', + 'array'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def cheatertype(self): + """ + The 'cheatertype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['index', 'value'] + + Returns + ------- + Any + """ + return self["cheatertype"] + + @cheatertype.setter + def cheatertype(self, val): + self["cheatertype"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + The stride between grid lines along the axis + + The 'dtick' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def endline(self): + """ + 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. + + The 'endline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["endline"] + + @endline.setter + def endline(self, val): + self["endline"] = val + + @property + def endlinecolor(self): + """ + Sets the line color of the end line. + + The 'endlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["endlinecolor"] + + @endlinecolor.setter + def endlinecolor(self, val): + self["endlinecolor"] = val + + @property + def endlinewidth(self): + """ + Sets the width (in px) of the end line. + + The 'endlinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["endlinewidth"] + + @endlinewidth.setter + def endlinewidth(self, val): + self["endlinewidth"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def fixedrange(self): + """ + Determines whether or not this axis is zoom-able. If true, then + zoom is disabled. + + The 'fixedrange' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["fixedrange"] + + @fixedrange.setter + def fixedrange(self, val): + self["fixedrange"] = val + + @property + def gridcolor(self): + """ + Sets the axis line color. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the axis line. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def labelpadding(self): + """ + Extra padding between label and the axis + + The 'labelpadding' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["labelpadding"] + + @labelpadding.setter + def labelpadding(self, val): + self["labelpadding"] = val + + @property + def labelprefix(self): + """ + Sets a axis label prefix. + + The 'labelprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelprefix"] + + @labelprefix.setter + def labelprefix(self, val): + self["labelprefix"] = val + + @property + def labelsuffix(self): + """ + Sets a axis label suffix. + + The 'labelsuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelsuffix"] + + @labelsuffix.setter + def labelsuffix(self, val): + self["labelsuffix"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def minorgridcolor(self): + """ + Sets the color of the grid lines. + + The 'minorgridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["minorgridcolor"] + + @minorgridcolor.setter + def minorgridcolor(self, val): + self["minorgridcolor"] = val + + @property + def minorgridcount(self): + """ + Sets the number of minor grid ticks per major grid tick + + The 'minorgridcount' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["minorgridcount"] + + @minorgridcount.setter + def minorgridcount(self, val): + self["minorgridcount"] = val + + @property + def minorgriddash(self): + """ + 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"). + + The 'minorgriddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["minorgriddash"] + + @minorgriddash.setter + def minorgriddash(self, val): + self["minorgriddash"] = val + + @property + def minorgridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'minorgridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minorgridwidth"] + + @minorgridwidth.setter + def minorgridwidth(self, val): + self["minorgridwidth"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + 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. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether axis labels are drawn on the low side, the + high side, both, or neither side of the axis. + + The 'showticklabels' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['start', 'end', 'both', 'none'] + + Returns + ------- + Any + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def smoothing(self): + """ + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def startline(self): + """ + 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. + + The 'startline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["startline"] + + @startline.setter + def startline(self, val): + self["startline"] = val + + @property + def startlinecolor(self): + """ + Sets the line color of the start line. + + The 'startlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["startlinecolor"] + + @startlinecolor.setter + def startlinecolor(self, val): + self["startlinecolor"] = val + + @property + def startlinewidth(self): + """ + Sets the width (in px) of the start line. + + The 'startlinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["startlinewidth"] + + @startlinewidth.setter + def startlinewidth(self, val): + self["startlinewidth"] = val + + @property + def tick0(self): + """ + The starting index of grid lines along the axis + + The 'tick0' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.baxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.carpet.baxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.carpet.baxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.carpet.baxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.carpet.baxis.tickformatstopdefaults), sets + the default property values to use for elements of + carpet.baxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.baxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.carpet.baxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def tickmode(self): + """ + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.baxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.carpet.baxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def _prop_descriptions(self): + return """\ + arraydtick + The stride between grid lines along the axis + arraytick0 + The starting index of grid lines along the axis + autorange + 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. + autotypenumbers + 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. + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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`. + cheatertype + + color + 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. + dtick + The stride between grid lines along the axis + endline + 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. + endlinecolor + Sets the line color of the end line. + endlinewidth + Sets the width (in px) of the end line. + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the axis line color. + griddash + 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"). + gridwidth + Sets the width (in px) of the axis line. + labelalias + 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. + labelpadding + Extra padding between label and the axis + labelprefix + Sets a axis label prefix. + labelsuffix + Sets a axis label suffix. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + minexponent + Hide SI prefix for 10^n if |n| is below this number + minorgridcolor + Sets the color of the grid lines. + minorgridcount + Sets the number of minor grid ticks per major grid tick + minorgriddash + 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"). + minorgridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + range + 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. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether axis labels are drawn on the low + side, the high side, both, or neither side of the axis. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + smoothing + + startline + 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. + startlinecolor + Sets the line color of the start line. + startlinewidth + Sets the width (in px) of the start line. + tick0 + The starting index of grid lines along the axis + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.carpet.baxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .baxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.baxis.tickformatstops + tickmode + + tickprefix + Sets a tick label prefix. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + title + :class:`plotly.graph_objects.carpet.baxis.Title` + instance or dict with compatible properties + type + 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. + """ + + def __init__( + self, + arg=None, + arraydtick=None, + arraytick0=None, + autorange=None, + autotypenumbers=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + cheatertype=None, + color=None, + dtick=None, + endline=None, + endlinecolor=None, + endlinewidth=None, + exponentformat=None, + fixedrange=None, + gridcolor=None, + griddash=None, + gridwidth=None, + labelalias=None, + labelpadding=None, + labelprefix=None, + labelsuffix=None, + linecolor=None, + linewidth=None, + minexponent=None, + minorgridcolor=None, + minorgridcount=None, + minorgriddash=None, + minorgridwidth=None, + nticks=None, + range=None, + rangemode=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + smoothing=None, + startline=None, + startlinecolor=None, + startlinewidth=None, + tick0=None, + tickangle=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + tickmode=None, + tickprefix=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + title=None, + type=None, + **kwargs, + ): + """ + Construct a new Baxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.carpet.Baxis` + arraydtick + The stride between grid lines along the axis + arraytick0 + The starting index of grid lines along the axis + autorange + 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. + autotypenumbers + 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. + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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`. + cheatertype + + color + 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. + dtick + The stride between grid lines along the axis + endline + 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. + endlinecolor + Sets the line color of the end line. + endlinewidth + Sets the width (in px) of the end line. + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the axis line color. + griddash + 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"). + gridwidth + Sets the width (in px) of the axis line. + labelalias + 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. + labelpadding + Extra padding between label and the axis + labelprefix + Sets a axis label prefix. + labelsuffix + Sets a axis label suffix. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + minexponent + Hide SI prefix for 10^n if |n| is below this number + minorgridcolor + Sets the color of the grid lines. + minorgridcount + Sets the number of minor grid ticks per major grid tick + minorgriddash + 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"). + minorgridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + range + 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. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether axis labels are drawn on the low + side, the high side, both, or neither side of the axis. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + smoothing + + startline + 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. + startlinecolor + Sets the line color of the start line. + startlinewidth + Sets the width (in px) of the start line. + tick0 + The starting index of grid lines along the axis + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.carpet.baxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.carpet + .baxis.tickformatstopdefaults), sets the default + property values to use for elements of + carpet.baxis.tickformatstops + tickmode + + tickprefix + Sets a tick label prefix. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + title + :class:`plotly.graph_objects.carpet.baxis.Title` + instance or dict with compatible properties + type + 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. + + Returns + ------- + Baxis + """ + super().__init__("baxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.Baxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.Baxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("arraydtick", arg, arraydtick) + self._set_property("arraytick0", arg, arraytick0) + self._set_property("autorange", arg, autorange) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("cheatertype", arg, cheatertype) + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("endline", arg, endline) + self._set_property("endlinecolor", arg, endlinecolor) + self._set_property("endlinewidth", arg, endlinewidth) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("fixedrange", arg, fixedrange) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("labelalias", arg, labelalias) + self._set_property("labelpadding", arg, labelpadding) + self._set_property("labelprefix", arg, labelprefix) + self._set_property("labelsuffix", arg, labelsuffix) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("minexponent", arg, minexponent) + self._set_property("minorgridcolor", arg, minorgridcolor) + self._set_property("minorgridcount", arg, minorgridcount) + self._set_property("minorgriddash", arg, minorgriddash) + self._set_property("minorgridwidth", arg, minorgridwidth) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("smoothing", arg, smoothing) + self._set_property("startline", arg, startline) + self._set_property("startlinecolor", arg, startlinecolor) + self._set_property("startlinewidth", arg, startlinewidth) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_font.py new file mode 100644 index 0000000..d41425c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_font.py @@ -0,0 +1,333 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "carpet" + _path_str = "carpet.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + The default font used for axis & tick labels on this carpet + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.carpet.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_legendgrouptitle.py new file mode 100644 index 0000000..94d0b97 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "carpet" + _path_str = "carpet.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.carpet.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_stream.py new file mode 100644 index 0000000..47c3ae7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "carpet" + _path_str = "carpet.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.carpet.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickfont.py new file mode 100644 index 0000000..32256e9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "carpet.aaxis" + _path_str = "carpet.aaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.aaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.aaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.aaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickformatstop.py new file mode 100644 index 0000000..5a757be --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "carpet.aaxis" + _path_str = "carpet.aaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.aaxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.aaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.aaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_title.py new file mode 100644 index 0000000..265e4e1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/_title.py @@ -0,0 +1,130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "carpet.aaxis" + _path_str = "carpet.aaxis.title" + _valid_props = {"font", "offset", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.aaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.carpet.aaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def offset(self): + """ + An additional amount by which to offset the title from the tick + labels, given in pixels. + + The 'offset' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + offset + An additional amount by which to offset the title from + the tick labels, given in pixels. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, offset=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.aaxis.Title` + font + Sets this axis' title font. + offset + An additional amount by which to offset the title from + the tick labels, given in pixels. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.aaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.aaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("offset", arg, offset) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/_font.py new file mode 100644 index 0000000..398ca78 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/aaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "carpet.aaxis.title" + _path_str = "carpet.aaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.aaxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.aaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.aaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickfont.py new file mode 100644 index 0000000..0085dc5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "carpet.baxis" + _path_str = "carpet.baxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.baxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.baxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.baxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickformatstop.py new file mode 100644 index 0000000..f034d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "carpet.baxis" + _path_str = "carpet.baxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.baxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.baxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.baxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_title.py new file mode 100644 index 0000000..b1e66dd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/_title.py @@ -0,0 +1,130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "carpet.baxis" + _path_str = "carpet.baxis.title" + _valid_props = {"font", "offset", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.carpet.baxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.carpet.baxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def offset(self): + """ + An additional amount by which to offset the title from the tick + labels, given in pixels. + + The 'offset' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + offset + An additional amount by which to offset the title from + the tick labels, given in pixels. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, offset=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.baxis.Title` + font + Sets this axis' title font. + offset + An additional amount by which to offset the title from + the tick labels, given in pixels. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.baxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.baxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("offset", arg, offset) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/_font.py new file mode 100644 index 0000000..58b3595 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/baxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "carpet.baxis.title" + _path_str = "carpet.baxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.baxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.baxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.baxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/_font.py new file mode 100644 index 0000000..d8f6eb1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/carpet/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "carpet.legendgrouptitle" + _path_str = "carpet.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.carpet.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.carpet.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.carpet.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/__init__.py new file mode 100644 index 0000000..bbdf79a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/__init__.py @@ -0,0 +1,40 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".colorbar", + ".hoverlabel", + ".legendgrouptitle", + ".marker", + ".selected", + ".unselected", + ], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_colorbar.py new file mode 100644 index 0000000..615e866 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_colorbar.py @@ -0,0 +1,1721 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.choropleth.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.choropleth.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.choropleth.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.choropleth.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of choropleth.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.choropleth.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.choropleth.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.choropleth.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + leth.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + choropleth.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.choropleth.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.choropleth.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + leth.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + choropleth.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.choropleth.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_hoverlabel.py new file mode 100644 index 0000000..3c8294e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choropleth.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_legendgrouptitle.py new file mode 100644 index 0000000..c568234 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choropleth.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_marker.py new file mode 100644 index 0000000..212bde1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_marker.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.marker" + _valid_props = {"line", "opacity", "opacitysrc"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.choropleth.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the locations. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.choropleth.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the locations. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + """ + + def __init__(self, arg=None, line=None, opacity=None, opacitysrc=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.Marker` + line + :class:`plotly.graph_objects.choropleth.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the locations. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_selected.py new file mode 100644 index 0000000..ff0cafd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choropleth.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.choropleth.selected.Marker + ` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.Selected` + marker + :class:`plotly.graph_objects.choropleth.selected.Marker + ` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_stream.py new file mode 100644 index 0000000..84624f8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_unselected.py new file mode 100644 index 0000000..68ef597 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "choropleth" + _path_str = "choropleth.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choropleth.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.choropleth.unselected.Mark + er` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.Unselected` + marker + :class:`plotly.graph_objects.choropleth.unselected.Mark + er` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickfont.py new file mode 100644 index 0000000..4809642 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.colorbar" + _path_str = "choropleth.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py new file mode 100644 index 0000000..63aa29c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.colorbar" + _path_str = "choropleth.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choropleth.col + orbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_title.py new file mode 100644 index 0000000..1ae8cfc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.colorbar" + _path_str = "choropleth.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choropleth.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choropleth.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/_font.py new file mode 100644 index 0000000..69df048 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.colorbar.title" + _path_str = "choropleth.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choropleth.col + orbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/_font.py new file mode 100644 index 0000000..5892c80 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.hoverlabel" + _path_str = "choropleth.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/_font.py new file mode 100644 index 0000000..79c05c7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.legendgrouptitle" + _path_str = "choropleth.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choropleth.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/_line.py new file mode 100644 index 0000000..bf9d861 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/marker/_line.py @@ -0,0 +1,171 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.marker" + _path_str = "choropleth.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.marker.Line` + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/_marker.py new file mode 100644 index 0000000..97eaa76 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/selected/_marker.py @@ -0,0 +1,77 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.selected" + _path_str = "choropleth.selected.marker" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the marker opacity of selected points. + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.selected.Marker` + opacity + Sets the marker opacity of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/_marker.py new file mode 100644 index 0000000..d7d5881 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choropleth/unselected/_marker.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choropleth.unselected" + _path_str = "choropleth.unselected.marker" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choropleth.unselected.Marker` + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choropleth.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choropleth.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/__init__.py new file mode 100644 index 0000000..bbdf79a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/__init__.py @@ -0,0 +1,40 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".colorbar", + ".hoverlabel", + ".legendgrouptitle", + ".marker", + ".selected", + ".unselected", + ], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_colorbar.py new file mode 100644 index 0000000..1a40618 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.choroplethmap.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.choroplethmap.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.choroplethmap. + colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + choroplethmap.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.choroplethmap.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + lethmap.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + choroplethmap.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.choroplethmap.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.choroplethmap.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + lethmap.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + choroplethmap.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.choroplethmap.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_hoverlabel.py new file mode 100644 index 0000000..761e481 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_legendgrouptitle.py new file mode 100644 index 0000000..ddfbdfd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_marker.py new file mode 100644 index 0000000..0f7f498 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_marker.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.marker" + _valid_props = {"line", "opacity", "opacitysrc"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the locations. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.choroplethmap.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the locations. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + """ + + def __init__(self, arg=None, line=None, opacity=None, opacitysrc=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.Marker` + line + :class:`plotly.graph_objects.choroplethmap.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the locations. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_selected.py new file mode 100644 index 0000000..e68c38f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.choroplethmap.selected.Mar + ker` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.Selected` + marker + :class:`plotly.graph_objects.choroplethmap.selected.Mar + ker` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_stream.py new file mode 100644 index 0000000..348b27d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_unselected.py new file mode 100644 index 0000000..fcbf6a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap" + _path_str = "choroplethmap.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.choroplethmap.unselected.M + arker` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.Unselected` + marker + :class:`plotly.graph_objects.choroplethmap.unselected.M + arker` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py new file mode 100644 index 0000000..b20f689 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.colorbar" + _path_str = "choroplethmap.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py new file mode 100644 index 0000000..f13d83f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.colorbar" + _path_str = "choroplethmap.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_title.py new file mode 100644 index 0000000..c5f12b3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.colorbar" + _path_str = "choroplethmap.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmap.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choroplethmap.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/_font.py new file mode 100644 index 0000000..ff94542 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.colorbar.title" + _path_str = "choroplethmap.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/_font.py new file mode 100644 index 0000000..dda15f3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.hoverlabel" + _path_str = "choroplethmap.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py new file mode 100644 index 0000000..4d2b65b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.legendgrouptitle" + _path_str = "choroplethmap.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/_line.py new file mode 100644 index 0000000..77c7928 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/marker/_line.py @@ -0,0 +1,171 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.marker" + _path_str = "choroplethmap.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmap.marker.Line` + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/_marker.py new file mode 100644 index 0000000..9f254a9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/selected/_marker.py @@ -0,0 +1,77 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.selected" + _path_str = "choroplethmap.selected.marker" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the marker opacity of selected points. + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + selected.Marker` + opacity + Sets the marker opacity of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/_marker.py new file mode 100644 index 0000000..27e2a34 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmap/unselected/_marker.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmap.unselected" + _path_str = "choroplethmap.unselected.marker" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmap. + unselected.Marker` + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmap.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmap.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/__init__.py new file mode 100644 index 0000000..bbdf79a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/__init__.py @@ -0,0 +1,40 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".colorbar", + ".hoverlabel", + ".legendgrouptitle", + ".marker", + ".selected", + ".unselected", + ], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_colorbar.py new file mode 100644 index 0000000..135c851 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.choroplethmapbox.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.choroplethmapbox.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.choroplethmapb + ox.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + choroplethmapbox.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.choroplethmapbo + x.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + lethmapbox.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + choroplethmapbox.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.choroplethmapbox.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.choroplethmapbo + x.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.chorop + lethmapbox.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + choroplethmapbox.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.choroplethmapbox.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_hoverlabel.py new file mode 100644 index 0000000..1c8312e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py new file mode 100644 index 0000000..2445531 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_marker.py new file mode 100644 index 0000000..d4b24d4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_marker.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.marker" + _valid_props = {"line", "opacity", "opacitysrc"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the locations. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.choroplethmapbox.marker.Li + ne` instance or dict with compatible properties + opacity + Sets the opacity of the locations. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + """ + + def __init__(self, arg=None, line=None, opacity=None, opacitysrc=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.Marker` + line + :class:`plotly.graph_objects.choroplethmapbox.marker.Li + ne` instance or dict with compatible properties + opacity + Sets the opacity of the locations. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_selected.py new file mode 100644 index 0000000..d7c4b13 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.choroplethmapbox.selected. + Marker` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.Selected` + marker + :class:`plotly.graph_objects.choroplethmapbox.selected. + Marker` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_stream.py new file mode 100644 index 0000000..1698554 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_unselected.py new file mode 100644 index 0000000..ad22ba4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox" + _path_str = "choroplethmapbox.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.choroplethmapbox.unselecte + d.Marker` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.Unselected` + marker + :class:`plotly.graph_objects.choroplethmapbox.unselecte + d.Marker` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py new file mode 100644 index 0000000..b44c18a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.colorbar" + _path_str = "choroplethmapbox.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py new file mode 100644 index 0000000..30794de --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.colorbar" + _path_str = "choroplethmapbox.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_title.py new file mode 100644 index 0000000..f96e32e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.colorbar" + _path_str = "choroplethmapbox.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.choroplethmapbox.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py new file mode 100644 index 0000000..1fd1fc2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.colorbar.title" + _path_str = "choroplethmapbox.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py new file mode 100644 index 0000000..20d0759 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.hoverlabel" + _path_str = "choroplethmapbox.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py new file mode 100644 index 0000000..21b889a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.legendgrouptitle" + _path_str = "choroplethmapbox.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/_line.py new file mode 100644 index 0000000..47d10d3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/marker/_line.py @@ -0,0 +1,171 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.marker" + _path_str = "choroplethmapbox.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.choroplethmapbox.marker.Line` + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/_marker.py new file mode 100644 index 0000000..4b7a35d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/selected/_marker.py @@ -0,0 +1,77 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.selected" + _path_str = "choroplethmapbox.selected.marker" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the marker opacity of selected points. + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.selected.Marker` + opacity + Sets the marker opacity of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/_marker.py new file mode 100644 index 0000000..5da2bb2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/choroplethmapbox/unselected/_marker.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "choroplethmapbox.unselected" + _path_str = "choroplethmapbox.unselected.marker" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.choroplethmapb + ox.unselected.Marker` + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.choroplethmapbox.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.choroplethmapbox.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/__init__.py new file mode 100644 index 0000000..c523ad1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/__init__.py @@ -0,0 +1,28 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._lighting import Lighting + from ._lightposition import Lightposition + from ._stream import Stream + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._lighting.Lighting", + "._lightposition.Lightposition", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_colorbar.py new file mode 100644 index 0000000..8fa8105 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_colorbar.py @@ -0,0 +1,1721 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "cone" + _path_str = "cone.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.cone.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.cone.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.cone.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.cone.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + cone.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.cone.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.cone.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.cone.colorbar.T + ickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.cone.c + olorbar.tickformatstopdefaults), sets the default + property values to use for elements of + cone.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.cone.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.cone.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.cone.colorbar.T + ickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.cone.c + olorbar.tickformatstopdefaults), sets the default + property values to use for elements of + cone.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.cone.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_hoverlabel.py new file mode 100644 index 0000000..a2d769c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "cone" + _path_str = "cone.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.cone.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_legendgrouptitle.py new file mode 100644 index 0000000..2028ac4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "cone" + _path_str = "cone.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.cone.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lighting.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lighting.py new file mode 100644 index 0000000..e8cfa31 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lighting.py @@ -0,0 +1,259 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lighting(_BaseTraceHierarchyType): + _parent_path_str = "cone" + _path_str = "cone.lighting" + _valid_props = { + "ambient", + "diffuse", + "facenormalsepsilon", + "fresnel", + "roughness", + "specular", + "vertexnormalsepsilon", + } + + @property + def ambient(self): + """ + Ambient light increases overall color visibility but can wash + out the image. + + The 'ambient' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ambient"] + + @ambient.setter + def ambient(self, val): + self["ambient"] = val + + @property + def diffuse(self): + """ + Represents the extent that incident rays are reflected in a + range of angles. + + The 'diffuse' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["diffuse"] + + @diffuse.setter + def diffuse(self, val): + self["diffuse"] = val + + @property + def facenormalsepsilon(self): + """ + Epsilon for face normals calculation avoids math issues arising + from degenerate geometry. + + The 'facenormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["facenormalsepsilon"] + + @facenormalsepsilon.setter + def facenormalsepsilon(self, val): + self["facenormalsepsilon"] = val + + @property + def fresnel(self): + """ + 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. + + The 'fresnel' property is a number and may be specified as: + - An int or float in the interval [0, 5] + + Returns + ------- + int|float + """ + return self["fresnel"] + + @fresnel.setter + def fresnel(self, val): + self["fresnel"] = val + + @property + def roughness(self): + """ + Alters specular reflection; the rougher the surface, the wider + and less contrasty the shine. + + The 'roughness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["roughness"] + + @roughness.setter + def roughness(self, val): + self["roughness"] = val + + @property + def specular(self): + """ + Represents the level that incident rays are reflected in a + single direction, causing shine. + + The 'specular' property is a number and may be specified as: + - An int or float in the interval [0, 2] + + Returns + ------- + int|float + """ + return self["specular"] + + @specular.setter + def specular(self, val): + self["specular"] = val + + @property + def vertexnormalsepsilon(self): + """ + Epsilon for vertex normals calculation avoids math issues + arising from degenerate geometry. + + The 'vertexnormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["vertexnormalsepsilon"] + + @vertexnormalsepsilon.setter + def vertexnormalsepsilon(self, val): + self["vertexnormalsepsilon"] = val + + @property + def _prop_descriptions(self): + return """\ + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + """ + + def __init__( + self, + arg=None, + ambient=None, + diffuse=None, + facenormalsepsilon=None, + fresnel=None, + roughness=None, + specular=None, + vertexnormalsepsilon=None, + **kwargs, + ): + """ + Construct a new Lighting object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.cone.Lighting` + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + + Returns + ------- + Lighting + """ + super().__init__("lighting") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.Lighting +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.Lighting`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("ambient", arg, ambient) + self._set_property("diffuse", arg, diffuse) + self._set_property("facenormalsepsilon", arg, facenormalsepsilon) + self._set_property("fresnel", arg, fresnel) + self._set_property("roughness", arg, roughness) + self._set_property("specular", arg, specular) + self._set_property("vertexnormalsepsilon", arg, vertexnormalsepsilon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lightposition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lightposition.py new file mode 100644 index 0000000..13775d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_lightposition.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lightposition(_BaseTraceHierarchyType): + _parent_path_str = "cone" + _path_str = "cone.lightposition" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + Numeric vector, representing the X coordinate for each vertex. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Numeric vector, representing the Y coordinate for each vertex. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + Numeric vector, representing the Z coordinate for each vertex. + + The 'z' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Lightposition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.Lightposition` + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + + Returns + ------- + Lightposition + """ + super().__init__("lightposition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.Lightposition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.Lightposition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_stream.py new file mode 100644 index 0000000..6660a2b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "cone" + _path_str = "cone.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.cone.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickfont.py new file mode 100644 index 0000000..4b28730 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "cone.colorbar" + _path_str = "cone.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickformatstop.py new file mode 100644 index 0000000..740f390 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "cone.colorbar" + _path_str = "cone.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_title.py new file mode 100644 index 0000000..66d5ec4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "cone.colorbar" + _path_str = "cone.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.cone.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.cone.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/_font.py new file mode 100644 index 0000000..08e5f3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "cone.colorbar.title" + _path_str = "cone.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/_font.py new file mode 100644 index 0000000..b24ef20 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "cone.hoverlabel" + _path_str = "cone.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/_font.py new file mode 100644 index 0000000..90b723a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/cone/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "cone.legendgrouptitle" + _path_str = "cone.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.cone.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.cone.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.cone.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/__init__.py new file mode 100644 index 0000000..335ba25 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/__init__.py @@ -0,0 +1,31 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._contours import Contours + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._stream import Stream + from ._textfont import Textfont + from . import colorbar + from . import contours + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".contours", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._contours.Contours", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._stream.Stream", + "._textfont.Textfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_colorbar.py new file mode 100644 index 0000000..6c36df4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.contour.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.contour.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.contour.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.contour.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + contour.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.contour.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.contour.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.contour.colorba + r.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + r.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + contour.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.contour.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.contour.colorba + r.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + r.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + contour.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.contour.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_contours.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_contours.py new file mode 100644 index 0000000..122d8d2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_contours.py @@ -0,0 +1,436 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contours(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.contours" + _valid_props = { + "coloring", + "end", + "labelfont", + "labelformat", + "operation", + "showlabels", + "showlines", + "size", + "start", + "type", + "value", + } + + @property + def coloring(self): + """ + 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. + + The 'coloring' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fill', 'heatmap', 'lines', 'none'] + + Returns + ------- + Any + """ + return self["coloring"] + + @coloring.setter + def coloring(self, val): + self["coloring"] = val + + @property + def end(self): + """ + Sets the end contour level value. Must be more than + `contours.start` + + The 'end' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def labelfont(self): + """ + 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`. + + The 'labelfont' property is an instance of Labelfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.contours.Labelfont` + - A dict of string/value properties that will be passed + to the Labelfont constructor + + Returns + ------- + plotly.graph_objs.contour.contours.Labelfont + """ + return self["labelfont"] + + @labelfont.setter + def labelfont(self, val): + self["labelfont"] = val + + @property + def labelformat(self): + """ + 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. + + The 'labelformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelformat"] + + @labelformat.setter + def labelformat(self, val): + self["labelformat"] = val + + @property + def operation(self): + """ + 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. + + The 'operation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['=', '<', '>=', '>', '<=', '[]', '()', '[)', '(]', '][', + ')(', '](', ')['] + + Returns + ------- + Any + """ + return self["operation"] + + @operation.setter + def operation(self, val): + self["operation"] = val + + @property + def showlabels(self): + """ + Determines whether to label the contour lines with their + values. + + The 'showlabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlabels"] + + @showlabels.setter + def showlabels(self, val): + self["showlabels"] = val + + @property + def showlines(self): + """ + Determines whether or not the contour lines are drawn. Has an + effect only if `contours.coloring` is set to "fill". + + The 'showlines' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlines"] + + @showlines.setter + def showlines(self, val): + self["showlines"] = val + + @property + def size(self): + """ + Sets the step between each contour level. Must be positive. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + Sets the starting contour level value. Must be less than + `contours.end` + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['levels', 'constraint'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property accepts values of any type + + Returns + ------- + Any + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + coloring + 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. + end + Sets the end contour level value. Must be more than + `contours.start` + labelfont + 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`. + labelformat + 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. + operation + 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. + showlabels + Determines whether to label the contour lines with + their values. + showlines + Determines whether or not the contour lines are drawn. + Has an effect only if `contours.coloring` is set to + "fill". + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + type + 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. + value + 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. + """ + + def __init__( + self, + arg=None, + coloring=None, + end=None, + labelfont=None, + labelformat=None, + operation=None, + showlabels=None, + showlines=None, + size=None, + start=None, + type=None, + value=None, + **kwargs, + ): + """ + Construct a new Contours object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.Contours` + coloring + 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. + end + Sets the end contour level value. Must be more than + `contours.start` + labelfont + 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`. + labelformat + 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. + operation + 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. + showlabels + Determines whether to label the contour lines with + their values. + showlines + Determines whether or not the contour lines are drawn. + Has an effect only if `contours.coloring` is set to + "fill". + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + type + 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. + value + 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. + + Returns + ------- + Contours + """ + super().__init__("contours") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.Contours +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.Contours`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("coloring", arg, coloring) + self._set_property("end", arg, end) + self._set_property("labelfont", arg, labelfont) + self._set_property("labelformat", arg, labelformat) + self._set_property("operation", arg, operation) + self._set_property("showlabels", arg, showlabels) + self._set_property("showlines", arg, showlines) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_hoverlabel.py new file mode 100644 index 0000000..b8731b5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.contour.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_legendgrouptitle.py new file mode 100644 index 0000000..9566a13 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.contour.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_line.py new file mode 100644 index 0000000..9090ff7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_line.py @@ -0,0 +1,175 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.line" + _valid_props = {"color", "dash", "smoothing", "width"} + + @property + def color(self): + """ + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def smoothing(self): + """ + Sets the amount of smoothing for the contour lines, where 0 + corresponds to no smoothing. + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + 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". + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + dash + 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"). + smoothing + Sets the amount of smoothing for the contour lines, + where 0 corresponds to no smoothing. + width + 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". + """ + + def __init__( + self, arg=None, color=None, dash=None, smoothing=None, width=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contour.Line` + color + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + dash + 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"). + smoothing + Sets the amount of smoothing for the contour lines, + where 0 corresponds to no smoothing. + width + 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". + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_stream.py new file mode 100644 index 0000000..0fc45b6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_textfont.py new file mode 100644 index 0000000..281f19b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/_textfont.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "contour" + _path_str = "contour.textfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + For this trace it only has an effect if `coloring` is set to + "heatmap". Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.Textfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickfont.py new file mode 100644 index 0000000..5d83a64 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "contour.colorbar" + _path_str = "contour.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickformatstop.py new file mode 100644 index 0000000..3ec4bfd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "contour.colorbar" + _path_str = "contour.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contour.colorb + ar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_title.py new file mode 100644 index 0000000..111d848 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "contour.colorbar" + _path_str = "contour.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.contour.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.contour.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/_font.py new file mode 100644 index 0000000..4d09b4e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "contour.colorbar.title" + _path_str = "contour.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/__init__.py new file mode 100644 index 0000000..48d6bb6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._labelfont import Labelfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._labelfont.Labelfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/_labelfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/_labelfont.py new file mode 100644 index 0000000..da43317 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/contours/_labelfont.py @@ -0,0 +1,336 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Labelfont(_BaseTraceHierarchyType): + _parent_path_str = "contour.contours" + _path_str = "contour.contours.labelfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Labelfont object + + 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`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.contours.Labelfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Labelfont + """ + super().__init__("labelfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.contours.Labelfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.contours.Labelfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/_font.py new file mode 100644 index 0000000..6da93a5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "contour.hoverlabel" + _path_str = "contour.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contour.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/_font.py new file mode 100644 index 0000000..71f9700 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contour/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "contour.legendgrouptitle" + _path_str = "contour.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contour.legend + grouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contour.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contour.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/__init__.py new file mode 100644 index 0000000..8d9cb5e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/__init__.py @@ -0,0 +1,26 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._contours import Contours + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._stream import Stream + from . import colorbar + from . import contours + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".contours", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._contours.Contours", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_colorbar.py new file mode 100644 index 0000000..0ae3122 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet" + _path_str = "contourcarpet.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.contourcarpet.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.contourcarpet.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.contourcarpet. + colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + contourcarpet.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.contourcarpet.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + rcarpet.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + contourcarpet.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.contourcarpet.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contourcarpet.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.contourcarpet.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.contou + rcarpet.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + contourcarpet.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.contourcarpet.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_contours.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_contours.py new file mode 100644 index 0000000..0b5e3fb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_contours.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contours(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet" + _path_str = "contourcarpet.contours" + _valid_props = { + "coloring", + "end", + "labelfont", + "labelformat", + "operation", + "showlabels", + "showlines", + "size", + "start", + "type", + "value", + } + + @property + def coloring(self): + """ + 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. + + The 'coloring' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fill', 'lines', 'none'] + + Returns + ------- + Any + """ + return self["coloring"] + + @coloring.setter + def coloring(self, val): + self["coloring"] = val + + @property + def end(self): + """ + Sets the end contour level value. Must be more than + `contours.start` + + The 'end' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def labelfont(self): + """ + 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`. + + The 'labelfont' property is an instance of Labelfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.contours.Labelfont` + - A dict of string/value properties that will be passed + to the Labelfont constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.contours.Labelfont + """ + return self["labelfont"] + + @labelfont.setter + def labelfont(self, val): + self["labelfont"] = val + + @property + def labelformat(self): + """ + 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. + + The 'labelformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelformat"] + + @labelformat.setter + def labelformat(self, val): + self["labelformat"] = val + + @property + def operation(self): + """ + 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. + + The 'operation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['=', '<', '>=', '>', '<=', '[]', '()', '[)', '(]', '][', + ')(', '](', ')['] + + Returns + ------- + Any + """ + return self["operation"] + + @operation.setter + def operation(self, val): + self["operation"] = val + + @property + def showlabels(self): + """ + Determines whether to label the contour lines with their + values. + + The 'showlabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlabels"] + + @showlabels.setter + def showlabels(self, val): + self["showlabels"] = val + + @property + def showlines(self): + """ + Determines whether or not the contour lines are drawn. Has an + effect only if `contours.coloring` is set to "fill". + + The 'showlines' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlines"] + + @showlines.setter + def showlines(self, val): + self["showlines"] = val + + @property + def size(self): + """ + Sets the step between each contour level. Must be positive. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + Sets the starting contour level value. Must be less than + `contours.end` + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['levels', 'constraint'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property accepts values of any type + + Returns + ------- + Any + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + coloring + 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. + end + Sets the end contour level value. Must be more than + `contours.start` + labelfont + 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`. + labelformat + 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. + operation + 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. + showlabels + Determines whether to label the contour lines with + their values. + showlines + Determines whether or not the contour lines are drawn. + Has an effect only if `contours.coloring` is set to + "fill". + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + type + 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. + value + 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. + """ + + def __init__( + self, + arg=None, + coloring=None, + end=None, + labelfont=None, + labelformat=None, + operation=None, + showlabels=None, + showlines=None, + size=None, + start=None, + type=None, + value=None, + **kwargs, + ): + """ + Construct a new Contours object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contourcarpet.Contours` + coloring + 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. + end + Sets the end contour level value. Must be more than + `contours.start` + labelfont + 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`. + labelformat + 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. + operation + 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. + showlabels + Determines whether to label the contour lines with + their values. + showlines + Determines whether or not the contour lines are drawn. + Has an effect only if `contours.coloring` is set to + "fill". + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + type + 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. + value + 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. + + Returns + ------- + Contours + """ + super().__init__("contours") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.Contours +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.Contours`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("coloring", arg, coloring) + self._set_property("end", arg, end) + self._set_property("labelfont", arg, labelfont) + self._set_property("labelformat", arg, labelformat) + self._set_property("operation", arg, operation) + self._set_property("showlabels", arg, showlabels) + self._set_property("showlines", arg, showlines) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_legendgrouptitle.py new file mode 100644 index 0000000..77cc45a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet" + _path_str = "contourcarpet.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contourcarpet. + Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_line.py new file mode 100644 index 0000000..7846e68 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_line.py @@ -0,0 +1,176 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet" + _path_str = "contourcarpet.line" + _valid_props = {"color", "dash", "smoothing", "width"} + + @property + def color(self): + """ + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def smoothing(self): + """ + Sets the amount of smoothing for the contour lines, where 0 + corresponds to no smoothing. + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + 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". + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + dash + 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"). + smoothing + Sets the amount of smoothing for the contour lines, + where 0 corresponds to no smoothing. + width + 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". + """ + + def __init__( + self, arg=None, color=None, dash=None, smoothing=None, width=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contourcarpet.Line` + color + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + dash + 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"). + smoothing + Sets the amount of smoothing for the contour lines, + where 0 corresponds to no smoothing. + width + 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". + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_stream.py new file mode 100644 index 0000000..cc8c3f7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet" + _path_str = "contourcarpet.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contourcarpet.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py new file mode 100644 index 0000000..184293e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet.colorbar" + _path_str = "contourcarpet.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contourcarpet. + colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py new file mode 100644 index 0000000..e62f409 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet.colorbar" + _path_str = "contourcarpet.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contourcarpet. + colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_title.py new file mode 100644 index 0000000..879af1d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet.colorbar" + _path_str = "contourcarpet.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.contourcarpet.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.contourcarpet.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.contourcarpet.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/_font.py new file mode 100644 index 0000000..673f011 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet.colorbar.title" + _path_str = "contourcarpet.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contourcarpet. + colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/__init__.py new file mode 100644 index 0000000..48d6bb6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._labelfont import Labelfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._labelfont.Labelfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/_labelfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/_labelfont.py new file mode 100644 index 0000000..d880ceb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/contours/_labelfont.py @@ -0,0 +1,336 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Labelfont(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet.contours" + _path_str = "contourcarpet.contours.labelfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Labelfont object + + 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`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contourcarpet. + contours.Labelfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Labelfont + """ + super().__init__("labelfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.contours.Labelfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.contours.Labelfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py new file mode 100644 index 0000000..cf6e131 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/contourcarpet/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "contourcarpet.legendgrouptitle" + _path_str = "contourcarpet.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.contourcarpet. + legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.contourcarpet.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.contourcarpet.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/__init__.py new file mode 100644 index 0000000..7740f6e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/__init__.py @@ -0,0 +1,24 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._stream import Stream + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_colorbar.py new file mode 100644 index 0000000..750416e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_colorbar.py @@ -0,0 +1,1721 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "densitymap" + _path_str = "densitymap.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.densitymap.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.densitymap.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.densitymap.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.densitymap.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of densitymap.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.densitymap.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.densitymap.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.densitymap.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.densit + ymap.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + densitymap.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.densitymap.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.densitymap.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.densit + ymap.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + densitymap.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.densitymap.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_hoverlabel.py new file mode 100644 index 0000000..af9edb0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "densitymap" + _path_str = "densitymap.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.densitymap.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_legendgrouptitle.py new file mode 100644 index 0000000..27e91ac --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "densitymap" + _path_str = "densitymap.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.densitymap.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_stream.py new file mode 100644 index 0000000..d46b641 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "densitymap" + _path_str = "densitymap.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickfont.py new file mode 100644 index 0000000..26b4695 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "densitymap.colorbar" + _path_str = "densitymap.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py new file mode 100644 index 0000000..ec189ab --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "densitymap.colorbar" + _path_str = "densitymap.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymap.col + orbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_title.py new file mode 100644 index 0000000..caf12d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "densitymap.colorbar" + _path_str = "densitymap.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymap.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.densitymap.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/_font.py new file mode 100644 index 0000000..903a546 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "densitymap.colorbar.title" + _path_str = "densitymap.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymap.col + orbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/_font.py new file mode 100644 index 0000000..6ce6808 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "densitymap.hoverlabel" + _path_str = "densitymap.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymap.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/_font.py new file mode 100644 index 0000000..3aed80b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymap/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "densitymap.legendgrouptitle" + _path_str = "densitymap.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymap.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymap.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymap.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/__init__.py new file mode 100644 index 0000000..7740f6e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/__init__.py @@ -0,0 +1,24 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._stream import Stream + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_colorbar.py new file mode 100644 index 0000000..a6c1f87 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox" + _path_str = "densitymapbox.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.densitymapbox.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.densitymapbox.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.densitymapbox. + colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + densitymapbox.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.densitymapbox.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.densit + ymapbox.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + densitymapbox.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.densitymapbox.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymapbox.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.densitymapbox.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.densit + ymapbox.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + densitymapbox.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.densitymapbox.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_hoverlabel.py new file mode 100644 index 0000000..832e326 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox" + _path_str = "densitymapbox.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymapbox.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_legendgrouptitle.py new file mode 100644 index 0000000..79528e3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox" + _path_str = "densitymapbox.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymapbox. + Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_stream.py new file mode 100644 index 0000000..9949ce7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox" + _path_str = "densitymapbox.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymapbox.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py new file mode 100644 index 0000000..046dc4f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox.colorbar" + _path_str = "densitymapbox.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymapbox. + colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py new file mode 100644 index 0000000..e81db35 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox.colorbar" + _path_str = "densitymapbox.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymapbox. + colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_title.py new file mode 100644 index 0000000..b281eb6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox.colorbar" + _path_str = "densitymapbox.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.densitymapbox.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.densitymapbox.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.densitymapbox.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/_font.py new file mode 100644 index 0000000..f3d719e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox.colorbar.title" + _path_str = "densitymapbox.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymapbox. + colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/_font.py new file mode 100644 index 0000000..84548e8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox.hoverlabel" + _path_str = "densitymapbox.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymapbox. + hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py new file mode 100644 index 0000000..70b46b7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/densitymapbox/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "densitymapbox.legendgrouptitle" + _path_str = "densitymapbox.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.densitymapbox. + legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.densitymapbox.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.densitymapbox.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/__init__.py new file mode 100644 index 0000000..e488b00 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/__init__.py @@ -0,0 +1,33 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._connector import Connector + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._stream import Stream + from ._textfont import Textfont + from . import connector + from . import hoverlabel + from . import legendgrouptitle + from . import marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".connector", ".hoverlabel", ".legendgrouptitle", ".marker"], + [ + "._connector.Connector", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._stream.Stream", + "._textfont.Textfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_connector.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_connector.py new file mode 100644 index 0000000..c19f431 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_connector.py @@ -0,0 +1,130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Connector(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.connector" + _valid_props = {"fillcolor", "line", "visible"} + + @property + def fillcolor(self): + """ + Sets the fill color. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.connector.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.funnel.connector.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def visible(self): + """ + Determines if connector regions and lines are drawn. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + fillcolor + Sets the fill color. + line + :class:`plotly.graph_objects.funnel.connector.Line` + instance or dict with compatible properties + visible + Determines if connector regions and lines are drawn. + """ + + def __init__(self, arg=None, fillcolor=None, line=None, visible=None, **kwargs): + """ + Construct a new Connector object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.Connector` + fillcolor + Sets the fill color. + line + :class:`plotly.graph_objects.funnel.connector.Line` + instance or dict with compatible properties + visible + Determines if connector regions and lines are drawn. + + Returns + ------- + Connector + """ + super().__init__("connector") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Connector +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Connector`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fillcolor", arg, fillcolor) + self._set_property("line", arg, line) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_hoverlabel.py new file mode 100644 index 0000000..ad98b30 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.funnel.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_insidetextfont.py new file mode 100644 index 0000000..1ab68aa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `text` lying inside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_legendgrouptitle.py new file mode 100644 index 0000000..599ae79 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.funnel.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_marker.py new file mode 100644 index 0000000..631cc28 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_marker.py @@ -0,0 +1,621 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "line", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to funnel.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.funnel.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.funnel.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the bars. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.funnel.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.funnel.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + line=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.funnel.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.funnel.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.funnel.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_outsidetextfont.py new file mode 100644 index 0000000..a413cf4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_outsidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + Sets the font used for `text` lying outside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_stream.py new file mode 100644 index 0000000..a9b62ad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.funnel.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_textfont.py new file mode 100644 index 0000000..c7f91d3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "funnel" + _path_str = "funnel.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `text`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/_line.py new file mode 100644 index 0000000..9484bb3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/connector/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "funnel.connector" + _path_str = "funnel.connector.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.connector.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.connector.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.connector.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/_font.py new file mode 100644 index 0000000..fda3253 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "funnel.hoverlabel" + _path_str = "funnel.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/_font.py new file mode 100644 index 0000000..de2957b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "funnel.legendgrouptitle" + _path_str = "funnel.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/__init__.py new file mode 100644 index 0000000..e0fbf0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_colorbar.py new file mode 100644 index 0000000..9db280e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "funnel.marker" + _path_str = "funnel.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.funnel.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.funnel.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.funnel.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.funnel.marker. + colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + funnel.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.funnel.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.funnel.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.funnel.marker.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.funnel + .marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + funnel.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.funnel.marker.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.funnel.marker.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.funnel + .marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + funnel.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.funnel.marker.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_line.py new file mode 100644 index 0000000..3131fba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "funnel.marker" + _path_str = "funnel.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to funnel.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..57aa294 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "funnel.marker.colorbar" + _path_str = "funnel.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.funnel.marker. + colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..65a1693 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "funnel.marker.colorbar" + _path_str = "funnel.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.funnel.marker. + colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_title.py new file mode 100644 index 0000000..0b75fba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "funnel.marker.colorbar" + _path_str = "funnel.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnel.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.funnel.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnel.marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/_font.py new file mode 100644 index 0000000..b107d09 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnel/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "funnel.marker.colorbar.title" + _path_str = "funnel.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.funnel.marker. + colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnel.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnel.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/__init__.py new file mode 100644 index 0000000..639ccf4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/__init__.py @@ -0,0 +1,33 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._stream import Stream + from ._textfont import Textfont + from ._title import Title + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".title"], + [ + "._domain.Domain", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._stream.Stream", + "._textfont.Textfont", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_domain.py new file mode 100644 index 0000000..e83dc2d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this funnelarea trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this funnelarea trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this funnelarea trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this funnelarea trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this funnelarea trace . + row + If there is a layout grid, use the domain for this row + in the grid for this funnelarea trace . + x + Sets the horizontal domain of this funnelarea trace (in + plot fraction). + y + Sets the vertical domain of this funnelarea trace (in + plot fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this funnelarea trace . + row + If there is a layout grid, use the domain for this row + in the grid for this funnelarea trace . + x + Sets the horizontal domain of this funnelarea trace (in + plot fraction). + y + Sets the vertical domain of this funnelarea trace (in + plot fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_hoverlabel.py new file mode 100644 index 0000000..0285bce --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.funnelarea.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_insidetextfont.py new file mode 100644 index 0000000..0aa7f8f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `textinfo` lying inside the sector. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_legendgrouptitle.py new file mode 100644 index 0000000..3efd6da --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.funnelarea.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_marker.py new file mode 100644 index 0000000..ca38cf7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_marker.py @@ -0,0 +1,161 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.marker" + _valid_props = {"colors", "colorssrc", "line", "pattern"} + + @property + def colors(self): + """ + Sets the color of each sector. If not specified, the default + trace color set is used to pick the sector colors. + + The 'colors' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["colors"] + + @colors.setter + def colors(self, val): + self["colors"] = val + + @property + def colorssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `colors`. + + The 'colorssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorssrc"] + + @colorssrc.setter + def colorssrc(self, val): + self["colorssrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.funnelarea.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.funnelarea.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def _prop_descriptions(self): + return """\ + colors + Sets the color of each sector. If not specified, the + default trace color set is used to pick the sector + colors. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.funnelarea.marker.Line` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + """ + + def __init__( + self, arg=None, colors=None, colorssrc=None, line=None, pattern=None, **kwargs + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Marker` + colors + Sets the color of each sector. If not specified, the + default trace color set is used to pick the sector + colors. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.funnelarea.marker.Line` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("colors", arg, colors) + self._set_property("colorssrc", arg, colorssrc) + self._set_property("line", arg, line) + self._set_property("pattern", arg, pattern) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_stream.py new file mode 100644 index 0000000..c271022 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_textfont.py new file mode 100644 index 0000000..7b61d33 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `textinfo`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_title.py new file mode 100644 index 0000000..5c2d042 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/_title.py @@ -0,0 +1,131 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea" + _path_str = "funnelarea.title" + _valid_props = {"font", "position", "text"} + + @property + def font(self): + """ + Sets the font used for `title`. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.funnelarea.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.funnelarea.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def position(self): + """ + Specifies the location of the `title`. + + The 'position' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right'] + + Returns + ------- + Any + """ + return self["position"] + + @position.setter + def position(self, val): + self["position"] = val + + @property + def text(self): + """ + Sets the title of the chart. If it is empty, no title is + displayed. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets the font used for `title`. + position + Specifies the location of the `title`. + text + Sets the title of the chart. If it is empty, no title + is displayed. + """ + + def __init__(self, arg=None, font=None, position=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.Title` + font + Sets the font used for `title`. + position + Specifies the location of the `title`. + text + Sets the title of the chart. If it is empty, no title + is displayed. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("position", arg, position) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/_font.py new file mode 100644 index 0000000..63dcb4f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea.hoverlabel" + _path_str = "funnelarea.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py new file mode 100644 index 0000000..5b01415 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea.legendgrouptitle" + _path_str = "funnelarea.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.funnelarea.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/__init__.py new file mode 100644 index 0000000..ae09590 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line + from ._pattern import Pattern +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._line.Line", "._pattern.Pattern"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_line.py new file mode 100644 index 0000000..a8d25f0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_line.py @@ -0,0 +1,163 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea.marker" + _path_str = "funnelarea.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. Defaults to + the `paper_bgcolor` value. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.marker.Line` + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_pattern.py new file mode 100644 index 0000000..99e8420 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea.marker" + _path_str = "funnelarea.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/_font.py new file mode 100644 index 0000000..0b90b88 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/funnelarea/title/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "funnelarea.title" + _path_str = "funnelarea.title.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used for `title`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.funnelarea.title.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.funnelarea.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.funnelarea.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/graph_objs.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/graph_objs.py new file mode 100644 index 0000000..60189f9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/graph_objs.py @@ -0,0 +1 @@ +from plotly.graph_objs import * diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/__init__.py new file mode 100644 index 0000000..4ae9809 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/__init__.py @@ -0,0 +1,26 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._stream import Stream + from ._textfont import Textfont + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._stream.Stream", + "._textfont.Textfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_colorbar.py new file mode 100644 index 0000000..c75db38 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "heatmap" + _path_str = "heatmap.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.heatmap.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.heatmap.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.heatmap.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.heatmap.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + heatmap.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.heatmap.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.heatmap.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.heatmap.colorba + r.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.heatma + p.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + heatmap.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.heatmap.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.heatmap.colorba + r.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.heatma + p.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + heatmap.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.heatmap.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_hoverlabel.py new file mode 100644 index 0000000..03a7a2e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "heatmap" + _path_str = "heatmap.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.heatmap.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_legendgrouptitle.py new file mode 100644 index 0000000..b3f935a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "heatmap" + _path_str = "heatmap.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.heatmap.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_stream.py new file mode 100644 index 0000000..776d1b3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "heatmap" + _path_str = "heatmap.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_textfont.py new file mode 100644 index 0000000..b09281c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/_textfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "heatmap" + _path_str = "heatmap.textfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.Textfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickfont.py new file mode 100644 index 0000000..807c1e2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "heatmap.colorbar" + _path_str = "heatmap.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py new file mode 100644 index 0000000..3055e07 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "heatmap.colorbar" + _path_str = "heatmap.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.heatmap.colorb + ar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_title.py new file mode 100644 index 0000000..f362767 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "heatmap.colorbar" + _path_str = "heatmap.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.heatmap.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.heatmap.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/_font.py new file mode 100644 index 0000000..cd5653f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "heatmap.colorbar.title" + _path_str = "heatmap.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/_font.py new file mode 100644 index 0000000..7885449 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "heatmap.hoverlabel" + _path_str = "heatmap.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.heatmap.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/_font.py new file mode 100644 index 0000000..681209c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/heatmap/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "heatmap.legendgrouptitle" + _path_str = "heatmap.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.heatmap.legend + grouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.heatmap.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.heatmap.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/__init__.py new file mode 100644 index 0000000..ba70e4a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/__init__.py @@ -0,0 +1,46 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._cumulative import Cumulative + from ._error_x import ErrorX + from ._error_y import ErrorY + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from ._xbins import XBins + from ._ybins import YBins + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._cumulative.Cumulative", + "._error_x.ErrorX", + "._error_y.ErrorY", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + "._xbins.XBins", + "._ybins.YBins", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_cumulative.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_cumulative.py new file mode 100644 index 0000000..0799480 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_cumulative.py @@ -0,0 +1,173 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Cumulative(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.cumulative" + _valid_props = {"currentbin", "direction", "enabled"} + + @property + def currentbin(self): + """ + 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. + + The 'currentbin' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['include', 'exclude', 'half'] + + Returns + ------- + Any + """ + return self["currentbin"] + + @currentbin.setter + def currentbin(self, val): + self["currentbin"] = val + + @property + def direction(self): + """ + 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. + + The 'direction' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['increasing', 'decreasing'] + + Returns + ------- + Any + """ + return self["direction"] + + @direction.setter + def direction(self, val): + self["direction"] = val + + @property + def enabled(self): + """ + 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. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def _prop_descriptions(self): + return """\ + currentbin + 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. + direction + 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. + enabled + 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. + """ + + def __init__( + self, arg=None, currentbin=None, direction=None, enabled=None, **kwargs + ): + """ + Construct a new Cumulative object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Cumulative` + currentbin + 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. + direction + 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. + enabled + 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. + + Returns + ------- + Cumulative + """ + super().__init__("cumulative") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Cumulative +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Cumulative`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("currentbin", arg, currentbin) + self._set_property("direction", arg, direction) + self._set_property("enabled", arg, enabled) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_x.py new file mode 100644 index 0000000..0f51b63 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_x.py @@ -0,0 +1,503 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorX(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.error_x" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "copy_ystyle", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def copy_ystyle(self): + """ + The 'copy_ystyle' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["copy_ystyle"] + + @copy_ystyle.setter + def copy_ystyle(self, val): + self["copy_ystyle"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + copy_ystyle=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorX object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.ErrorX` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorX + """ + super().__init__("error_x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.ErrorX +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.ErrorX`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("copy_ystyle", arg, copy_ystyle) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_y.py new file mode 100644 index 0000000..9c33cf1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_error_y.py @@ -0,0 +1,480 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorY(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.error_y" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorY object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.ErrorY` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorY + """ + super().__init__("error_y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.ErrorY +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.ErrorY`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_hoverlabel.py new file mode 100644 index 0000000..f9761b9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_insidetextfont.py new file mode 100644 index 0000000..f7d9c83 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_insidetextfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.insidetextfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `text` lying inside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Insidetextfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_legendgrouptitle.py new file mode 100644 index 0000000..aea72de --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_marker.py new file mode 100644 index 0000000..4606fa6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_marker.py @@ -0,0 +1,686 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "cornerradius", + "line", + "opacity", + "opacitysrc", + "pattern", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to histogram.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def cornerradius(self): + """ + 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. + + The 'cornerradius' property accepts values of any type + + Returns + ------- + Any + """ + return self["cornerradius"] + + @cornerradius.setter + def cornerradius(self, val): + self["cornerradius"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the opacity of the bars. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + cornerradius + 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. + line + :class:`plotly.graph_objects.histogram.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + 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. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + cornerradius=None, + line=None, + opacity=None, + opacitysrc=None, + pattern=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.histogram.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + cornerradius + 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. + line + :class:`plotly.graph_objects.histogram.marker.Line` + instance or dict with compatible properties + opacity + Sets the opacity of the bars. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + 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. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("cornerradius", arg, cornerradius) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("pattern", arg, pattern) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_outsidetextfont.py new file mode 100644 index 0000000..ae088ec --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_outsidetextfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.outsidetextfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + Sets the font used for `text` lying outside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Outsidetextfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_selected.py new file mode 100644 index 0000000..b99df32 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.histogram.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.histogram.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.histogram.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.histogram.selected.Textfon + t` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Selected` + marker + :class:`plotly.graph_objects.histogram.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.histogram.selected.Textfon + t` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_stream.py new file mode 100644 index 0000000..1249bc9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_textfont.py new file mode 100644 index 0000000..dcacc29 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_textfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.textfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Textfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_unselected.py new file mode 100644 index 0000000..a9e9341 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.histogram.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.histogram.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.histogram.unselected.Marke + r` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.histogram.unselected.Textf + ont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.Unselected` + marker + :class:`plotly.graph_objects.histogram.unselected.Marke + r` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.histogram.unselected.Textf + ont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_xbins.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_xbins.py new file mode 100644 index 0000000..a0dd1a5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_xbins.py @@ -0,0 +1,210 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class XBins(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.xbins" + _valid_props = {"end", "size", "start"} + + @property + def end(self): + """ + 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. + + The 'end' property accepts values of any type + + Returns + ------- + Any + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def size(self): + """ + 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. + + The 'size' property accepts values of any type + + Returns + ------- + Any + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + 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. + + The 'start' property accepts values of any type + + Returns + ------- + Any + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def _prop_descriptions(self): + return """\ + end + 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. + size + 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. + start + 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. + """ + + def __init__(self, arg=None, end=None, size=None, start=None, **kwargs): + """ + Construct a new XBins object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.XBins` + end + 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. + size + 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. + start + 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. + + Returns + ------- + XBins + """ + super().__init__("xbins") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.XBins +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.XBins`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("end", arg, end) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_ybins.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_ybins.py new file mode 100644 index 0000000..1c0975d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/_ybins.py @@ -0,0 +1,210 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class YBins(_BaseTraceHierarchyType): + _parent_path_str = "histogram" + _path_str = "histogram.ybins" + _valid_props = {"end", "size", "start"} + + @property + def end(self): + """ + 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. + + The 'end' property accepts values of any type + + Returns + ------- + Any + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def size(self): + """ + 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. + + The 'size' property accepts values of any type + + Returns + ------- + Any + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + 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. + + The 'start' property accepts values of any type + + Returns + ------- + Any + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def _prop_descriptions(self): + return """\ + end + 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. + size + 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. + start + 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. + """ + + def __init__(self, arg=None, end=None, size=None, start=None, **kwargs): + """ + Construct a new YBins object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.YBins` + end + 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. + size + 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. + start + 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. + + Returns + ------- + YBins + """ + super().__init__("ybins") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.YBins +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.YBins`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("end", arg, end) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/_font.py new file mode 100644 index 0000000..0e6c08b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram.hoverlabel" + _path_str = "histogram.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/_font.py new file mode 100644 index 0000000..20e0452 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram.legendgrouptitle" + _path_str = "histogram.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram.lege + ndgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/__init__.py new file mode 100644 index 0000000..e2d7a12 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from ._pattern import Pattern + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._line.Line", "._pattern.Pattern"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_colorbar.py new file mode 100644 index 0000000..80eba66 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker" + _path_str = "histogram.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.histogram.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.histogram.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.histogram.mark + er.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + histogram.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.histogram.marke + r.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.histogram.marker.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.histogram.marke + r.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.histogram.marker.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_line.py new file mode 100644 index 0000000..d236c0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker" + _path_str = "histogram.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to histogram.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_pattern.py new file mode 100644 index 0000000..1b3673a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker" + _path_str = "histogram.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..8d282ee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker.colorbar" + _path_str = "histogram.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram.mark + er.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..b3fda12 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker.colorbar" + _path_str = "histogram.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram.mark + er.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_title.py new file mode 100644 index 0000000..f7b5a88 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker.colorbar" + _path_str = "histogram.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram.mark + er.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/_font.py new file mode 100644 index 0000000..aaa57f4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram.marker.colorbar.title" + _path_str = "histogram.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram.mark + er.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_marker.py new file mode 100644 index 0000000..7858b6f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_marker.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "histogram.selected" + _path_str = "histogram.selected.marker" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_textfont.py new file mode 100644 index 0000000..dc0739a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram.selected" + _path_str = "histogram.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_marker.py new file mode 100644 index 0000000..1912438 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_marker.py @@ -0,0 +1,110 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "histogram.unselected" + _path_str = "histogram.unselected.marker" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_textfont.py new file mode 100644 index 0000000..423fc3d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram.unselected" + _path_str = "histogram.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram.unse + lected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/__init__.py new file mode 100644 index 0000000..780e8d1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/__init__.py @@ -0,0 +1,32 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._stream import Stream + from ._textfont import Textfont + from ._xbins import XBins + from ._ybins import YBins + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._stream.Stream", + "._textfont.Textfont", + "._xbins.XBins", + "._ybins.YBins", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_colorbar.py new file mode 100644 index 0000000..f8b9298 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.histogram2d.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.histogram2d.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.histogram2d.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.histogram2d.co + lorbar.tickformatstopdefaults), sets the default property + values to use for elements of + histogram2d.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.histogram2d.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.histogram2d.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.histogram2d.col + orbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2d.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2d.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.histogram2d.colorbar.Title + ` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.histogram2d.col + orbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2d.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2d.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.histogram2d.colorbar.Title + ` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_hoverlabel.py new file mode 100644 index 0000000..6c4513c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram2d.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_legendgrouptitle.py new file mode 100644 index 0000000..8e993cd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram2d.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_marker.py new file mode 100644 index 0000000..c433bac --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_marker.py @@ -0,0 +1,102 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.marker" + _valid_props = {"color", "colorsrc"} + + @property + def color(self): + """ + Sets the aggregation data. + + The 'color' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the aggregation data. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + """ + + def __init__(self, arg=None, color=None, colorsrc=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.Marker` + color + Sets the aggregation data. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_stream.py new file mode 100644 index 0000000..7d45c68 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_textfont.py new file mode 100644 index 0000000..047d5b0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_textfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.textfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.Textfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_xbins.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_xbins.py new file mode 100644 index 0000000..076c78d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_xbins.py @@ -0,0 +1,187 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class XBins(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.xbins" + _valid_props = {"end", "size", "start"} + + @property + def end(self): + """ + 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. + + The 'end' property accepts values of any type + + Returns + ------- + Any + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def size(self): + """ + 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). + + The 'size' property accepts values of any type + + Returns + ------- + Any + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + 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. + + The 'start' property accepts values of any type + + Returns + ------- + Any + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def _prop_descriptions(self): + return """\ + end + 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. + size + 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). + start + 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. + """ + + def __init__(self, arg=None, end=None, size=None, start=None, **kwargs): + """ + Construct a new XBins object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.XBins` + end + 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. + size + 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). + start + 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. + + Returns + ------- + XBins + """ + super().__init__("xbins") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.XBins +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.XBins`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("end", arg, end) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_ybins.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_ybins.py new file mode 100644 index 0000000..c24581d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/_ybins.py @@ -0,0 +1,187 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class YBins(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d" + _path_str = "histogram2d.ybins" + _valid_props = {"end", "size", "start"} + + @property + def end(self): + """ + 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. + + The 'end' property accepts values of any type + + Returns + ------- + Any + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def size(self): + """ + 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). + + The 'size' property accepts values of any type + + Returns + ------- + Any + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + 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. + + The 'start' property accepts values of any type + + Returns + ------- + Any + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def _prop_descriptions(self): + return """\ + end + 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. + size + 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). + start + 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. + """ + + def __init__(self, arg=None, end=None, size=None, start=None, **kwargs): + """ + Construct a new YBins object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.YBins` + end + 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. + size + 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). + start + 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. + + Returns + ------- + YBins + """ + super().__init__("ybins") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.YBins +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.YBins`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("end", arg, end) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickfont.py new file mode 100644 index 0000000..5e74d76 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d.colorbar" + _path_str = "histogram2d.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2d.co + lorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py new file mode 100644 index 0000000..b6cf996 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d.colorbar" + _path_str = "histogram2d.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2d.co + lorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_title.py new file mode 100644 index 0000000..a941eb6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d.colorbar" + _path_str = "histogram2d.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2d.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram2d.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/_font.py new file mode 100644 index 0000000..2e0dd20 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d.colorbar.title" + _path_str = "histogram2d.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2d.co + lorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/_font.py new file mode 100644 index 0000000..0aded40 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d.hoverlabel" + _path_str = "histogram2d.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2d.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py new file mode 100644 index 0000000..e1eda69 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2d/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram2d.legendgrouptitle" + _path_str = "histogram2d.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2d.le + gendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2d.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2d.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/__init__.py new file mode 100644 index 0000000..406ff71 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/__init__.py @@ -0,0 +1,37 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._contours import Contours + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._stream import Stream + from ._textfont import Textfont + from ._xbins import XBins + from ._ybins import YBins + from . import colorbar + from . import contours + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".contours", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._contours.Contours", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._stream.Stream", + "._textfont.Textfont", + "._xbins.XBins", + "._ybins.YBins", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_colorbar.py new file mode 100644 index 0000000..0fe4f0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.histogram2dcon + tour.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + histogram2dcontour.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.histogram2dcont + our.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2dcontour.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2dcontour.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.histogram2dcontour.colorba + r.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.histogram2dcont + our.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.histog + ram2dcontour.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + histogram2dcontour.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.histogram2dcontour.colorba + r.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_contours.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_contours.py new file mode 100644 index 0000000..fd0c374 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_contours.py @@ -0,0 +1,436 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contours(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.contours" + _valid_props = { + "coloring", + "end", + "labelfont", + "labelformat", + "operation", + "showlabels", + "showlines", + "size", + "start", + "type", + "value", + } + + @property + def coloring(self): + """ + 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. + + The 'coloring' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fill', 'heatmap', 'lines', 'none'] + + Returns + ------- + Any + """ + return self["coloring"] + + @coloring.setter + def coloring(self, val): + self["coloring"] = val + + @property + def end(self): + """ + Sets the end contour level value. Must be more than + `contours.start` + + The 'end' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def labelfont(self): + """ + 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`. + + The 'labelfont' property is an instance of Labelfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.contours.Labelfont` + - A dict of string/value properties that will be passed + to the Labelfont constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.contours.Labelfont + """ + return self["labelfont"] + + @labelfont.setter + def labelfont(self, val): + self["labelfont"] = val + + @property + def labelformat(self): + """ + 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. + + The 'labelformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["labelformat"] + + @labelformat.setter + def labelformat(self, val): + self["labelformat"] = val + + @property + def operation(self): + """ + 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. + + The 'operation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['=', '<', '>=', '>', '<=', '[]', '()', '[)', '(]', '][', + ')(', '](', ')['] + + Returns + ------- + Any + """ + return self["operation"] + + @operation.setter + def operation(self, val): + self["operation"] = val + + @property + def showlabels(self): + """ + Determines whether to label the contour lines with their + values. + + The 'showlabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlabels"] + + @showlabels.setter + def showlabels(self, val): + self["showlabels"] = val + + @property + def showlines(self): + """ + Determines whether or not the contour lines are drawn. Has an + effect only if `contours.coloring` is set to "fill". + + The 'showlines' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlines"] + + @showlines.setter + def showlines(self, val): + self["showlines"] = val + + @property + def size(self): + """ + Sets the step between each contour level. Must be positive. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + Sets the starting contour level value. Must be less than + `contours.end` + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['levels', 'constraint'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property accepts values of any type + + Returns + ------- + Any + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + coloring + 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. + end + Sets the end contour level value. Must be more than + `contours.start` + labelfont + 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`. + labelformat + 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. + operation + 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. + showlabels + Determines whether to label the contour lines with + their values. + showlines + Determines whether or not the contour lines are drawn. + Has an effect only if `contours.coloring` is set to + "fill". + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + type + 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. + value + 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. + """ + + def __init__( + self, + arg=None, + coloring=None, + end=None, + labelfont=None, + labelformat=None, + operation=None, + showlabels=None, + showlines=None, + size=None, + start=None, + type=None, + value=None, + **kwargs, + ): + """ + Construct a new Contours object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.Contours` + coloring + 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. + end + Sets the end contour level value. Must be more than + `contours.start` + labelfont + 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`. + labelformat + 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. + operation + 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. + showlabels + Determines whether to label the contour lines with + their values. + showlines + Determines whether or not the contour lines are drawn. + Has an effect only if `contours.coloring` is set to + "fill". + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + type + 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. + value + 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. + + Returns + ------- + Contours + """ + super().__init__("contours") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Contours +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Contours`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("coloring", arg, coloring) + self._set_property("end", arg, end) + self._set_property("labelfont", arg, labelfont) + self._set_property("labelformat", arg, labelformat) + self._set_property("operation", arg, operation) + self._set_property("showlabels", arg, showlabels) + self._set_property("showlines", arg, showlines) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_hoverlabel.py new file mode 100644 index 0000000..b1cb457 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py new file mode 100644 index 0000000..b327560 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_line.py new file mode 100644 index 0000000..c57d618 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_line.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.line" + _valid_props = {"color", "dash", "smoothing", "width"} + + @property + def color(self): + """ + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def smoothing(self): + """ + Sets the amount of smoothing for the contour lines, where 0 + corresponds to no smoothing. + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + Sets the contour line width in (in px) + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + dash + 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"). + smoothing + Sets the amount of smoothing for the contour lines, + where 0 corresponds to no smoothing. + width + Sets the contour line width in (in px) + """ + + def __init__( + self, arg=None, color=None, dash=None, smoothing=None, width=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.Line` + color + Sets the color of the contour level. Has no effect if + `contours.coloring` is set to "lines". + dash + 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"). + smoothing + Sets the amount of smoothing for the contour lines, + where 0 corresponds to no smoothing. + width + Sets the contour line width in (in px) + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_marker.py new file mode 100644 index 0000000..146412a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_marker.py @@ -0,0 +1,102 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.marker" + _valid_props = {"color", "colorsrc"} + + @property + def color(self): + """ + Sets the aggregation data. + + The 'color' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the aggregation data. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + """ + + def __init__(self, arg=None, color=None, colorsrc=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.Marker` + color + Sets the aggregation data. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_stream.py new file mode 100644 index 0000000..59dbafd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_textfont.py new file mode 100644 index 0000000..36f7542 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_textfont.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.textfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + For this trace it only has an effect if `coloring` is set to + "heatmap". Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.Textfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_xbins.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_xbins.py new file mode 100644 index 0000000..80a4aca --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_xbins.py @@ -0,0 +1,187 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class XBins(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.xbins" + _valid_props = {"end", "size", "start"} + + @property + def end(self): + """ + 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. + + The 'end' property accepts values of any type + + Returns + ------- + Any + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def size(self): + """ + 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). + + The 'size' property accepts values of any type + + Returns + ------- + Any + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + 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. + + The 'start' property accepts values of any type + + Returns + ------- + Any + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def _prop_descriptions(self): + return """\ + end + 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. + size + 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). + start + 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. + """ + + def __init__(self, arg=None, end=None, size=None, start=None, **kwargs): + """ + Construct a new XBins object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.XBins` + end + 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. + size + 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). + start + 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. + + Returns + ------- + XBins + """ + super().__init__("xbins") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.XBins +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.XBins`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("end", arg, end) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_ybins.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_ybins.py new file mode 100644 index 0000000..f73dc70 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/_ybins.py @@ -0,0 +1,187 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class YBins(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour" + _path_str = "histogram2dcontour.ybins" + _valid_props = {"end", "size", "start"} + + @property + def end(self): + """ + 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. + + The 'end' property accepts values of any type + + Returns + ------- + Any + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def size(self): + """ + 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). + + The 'size' property accepts values of any type + + Returns + ------- + Any + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + 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. + + The 'start' property accepts values of any type + + Returns + ------- + Any + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def _prop_descriptions(self): + return """\ + end + 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. + size + 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). + start + 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. + """ + + def __init__(self, arg=None, end=None, size=None, start=None, **kwargs): + """ + Construct a new YBins object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.histogram2dcontour.YBins` + end + 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. + size + 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). + start + 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. + + Returns + ------- + YBins + """ + super().__init__("ybins") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.YBins +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.YBins`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("end", arg, end) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py new file mode 100644 index 0000000..164e6ba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.colorbar" + _path_str = "histogram2dcontour.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py new file mode 100644 index 0000000..1dba319 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.colorbar" + _path_str = "histogram2dcontour.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_title.py new file mode 100644 index 0000000..52f41a1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.colorbar" + _path_str = "histogram2dcontour.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.histogram2dcontour.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py new file mode 100644 index 0000000..8c9e818 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.colorbar.title" + _path_str = "histogram2dcontour.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/__init__.py new file mode 100644 index 0000000..48d6bb6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._labelfont import Labelfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._labelfont.Labelfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py new file mode 100644 index 0000000..96bc43b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/contours/_labelfont.py @@ -0,0 +1,336 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Labelfont(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.contours" + _path_str = "histogram2dcontour.contours.labelfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Labelfont object + + 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`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.contours.Labelfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Labelfont + """ + super().__init__("labelfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.contours.Labelfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.contours.Labelfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py new file mode 100644 index 0000000..3697c6b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.hoverlabel" + _path_str = "histogram2dcontour.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py new file mode 100644 index 0000000..79fa0f4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/histogram2dcontour/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "histogram2dcontour.legendgrouptitle" + _path_str = "histogram2dcontour.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.histogram2dcon + tour.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.histogram2dcontour.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.histogram2dcontour.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/__init__.py new file mode 100644 index 0000000..4450c0c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/__init__.py @@ -0,0 +1,41 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._leaf import Leaf + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._pathbar import Pathbar + from ._root import Root + from ._stream import Stream + from ._textfont import Textfont + from ._tiling import Tiling + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import pathbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".pathbar"], + [ + "._domain.Domain", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._leaf.Leaf", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._pathbar.Pathbar", + "._root.Root", + "._stream.Stream", + "._textfont.Textfont", + "._tiling.Tiling", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_domain.py new file mode 100644 index 0000000..82640ce --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_domain.py @@ -0,0 +1,169 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this icicle trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this icicle trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this icicle trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this icicle trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this icicle trace . + row + If there is a layout grid, use the domain for this row + in the grid for this icicle trace . + x + Sets the horizontal domain of this icicle trace (in + plot fraction). + y + Sets the vertical domain of this icicle trace (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this icicle trace . + row + If there is a layout grid, use the domain for this row + in the grid for this icicle trace . + x + Sets the horizontal domain of this icicle trace (in + plot fraction). + y + Sets the vertical domain of this icicle trace (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_hoverlabel.py new file mode 100644 index 0000000..1cf2d8e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.icicle.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_insidetextfont.py new file mode 100644 index 0000000..6be9851 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `textinfo` lying inside the sector. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_leaf.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_leaf.py new file mode 100644 index 0000000..467527d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_leaf.py @@ -0,0 +1,79 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Leaf(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.leaf" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the opacity of the leaves. With colorscale it is defaulted + to 1; otherwise it is defaulted to 0.7 + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the opacity of the leaves. With colorscale it is + defaulted to 1; otherwise it is defaulted to 0.7 + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Leaf object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.Leaf` + opacity + Sets the opacity of the leaves. With colorscale it is + defaulted to 1; otherwise it is defaulted to 0.7 + + Returns + ------- + Leaf + """ + super().__init__("leaf") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Leaf +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Leaf`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_legendgrouptitle.py new file mode 100644 index 0000000..11ed7f9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.icicle.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_marker.py new file mode 100644 index 0000000..15330a6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_marker.py @@ -0,0 +1,578 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colors", + "colorscale", + "colorssrc", + "line", + "pattern", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colors(self): + """ + Sets the color of each sector of this trace. If not specified, + the default trace color set is used to pick the sector colors. + + The 'colors' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["colors"] + + @colors.setter + def colors(self, val): + self["colors"] = val + + @property + def colorscale(self): + """ + 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,Civi + dis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow + ,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `colors`. + + The 'colorssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorssrc"] + + @colorssrc.setter + def colorssrc(self, val): + self["colorssrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. Has an effect only if colors is set to a numerical + array. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.icicle.marker.ColorBar` + instance or dict with compatible properties + colors + Sets the color of each sector of this trace. If not + specified, the default trace color set is used to pick + the sector colors. + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.icicle.marker.Line` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. Has an effect only if colors is set to a + numerical array. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colors=None, + colorscale=None, + colorssrc=None, + line=None, + pattern=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.icicle.marker.ColorBar` + instance or dict with compatible properties + colors + Sets the color of each sector of this trace. If not + specified, the default trace color set is used to pick + the sector colors. + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.icicle.marker.Line` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. Has an effect only if colors is set to a + numerical array. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colors", arg, colors) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorssrc", arg, colorssrc) + self._set_property("line", arg, line) + self._set_property("pattern", arg, pattern) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_outsidetextfont.py new file mode 100644 index 0000000..2e226d0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_outsidetextfont.py @@ -0,0 +1,591 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + 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. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_pathbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_pathbar.py new file mode 100644 index 0000000..828c24f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_pathbar.py @@ -0,0 +1,198 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pathbar(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.pathbar" + _valid_props = {"edgeshape", "side", "textfont", "thickness", "visible"} + + @property + def edgeshape(self): + """ + Determines which shape is used for edges between `barpath` + labels. + + The 'edgeshape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['>', '<', '|', '/', '\\'] + + Returns + ------- + Any + """ + return self["edgeshape"] + + @edgeshape.setter + def edgeshape(self, val): + self["edgeshape"] = val + + @property + def side(self): + """ + Determines on which side of the the treemap the `pathbar` + should be presented. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def textfont(self): + """ + Sets the font used inside `pathbar`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.pathbar.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.icicle.pathbar.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def thickness(self): + """ + Sets the thickness of `pathbar` (in px). If not specified the + `pathbar.textfont.size` is used with 3 pixles extra padding on + each side. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [12, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def visible(self): + """ + Determines if the path bar is drawn i.e. outside the trace + `domain` and with one pixel gap. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + edgeshape + Determines which shape is used for edges between + `barpath` labels. + side + Determines on which side of the the treemap the + `pathbar` should be presented. + textfont + Sets the font used inside `pathbar`. + thickness + Sets the thickness of `pathbar` (in px). If not + specified the `pathbar.textfont.size` is used with 3 + pixles extra padding on each side. + visible + Determines if the path bar is drawn i.e. outside the + trace `domain` and with one pixel gap. + """ + + def __init__( + self, + arg=None, + edgeshape=None, + side=None, + textfont=None, + thickness=None, + visible=None, + **kwargs, + ): + """ + Construct a new Pathbar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.Pathbar` + edgeshape + Determines which shape is used for edges between + `barpath` labels. + side + Determines on which side of the the treemap the + `pathbar` should be presented. + textfont + Sets the font used inside `pathbar`. + thickness + Sets the thickness of `pathbar` (in px). If not + specified the `pathbar.textfont.size` is used with 3 + pixles extra padding on each side. + visible + Determines if the path bar is drawn i.e. outside the + trace `domain` and with one pixel gap. + + Returns + ------- + Pathbar + """ + super().__init__("pathbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Pathbar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Pathbar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("edgeshape", arg, edgeshape) + self._set_property("side", arg, side) + self._set_property("textfont", arg, textfont) + self._set_property("thickness", arg, thickness) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_root.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_root.py new file mode 100644 index 0000000..563937c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_root.py @@ -0,0 +1,86 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Root(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.root" + _valid_props = {"color"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Root object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.Root` + color + 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. + + Returns + ------- + Root + """ + super().__init__("root") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Root +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Root`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_stream.py new file mode 100644 index 0000000..10fa9d9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_textfont.py new file mode 100644 index 0000000..5818410 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `textinfo`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_tiling.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_tiling.py new file mode 100644 index 0000000..9c382f1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/_tiling.py @@ -0,0 +1,153 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tiling(_BaseTraceHierarchyType): + _parent_path_str = "icicle" + _path_str = "icicle.tiling" + _valid_props = {"flip", "orientation", "pad"} + + @property + def flip(self): + """ + Determines if the positions obtained from solver are flipped on + each axis. + + The 'flip' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y'] joined with '+' characters + (e.g. 'x+y') + + Returns + ------- + Any + """ + return self["flip"] + + @flip.setter + def flip(self, val): + self["flip"] = val + + @property + def orientation(self): + """ + 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. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def pad(self): + """ + Sets the inner padding (in px). + + The 'pad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def _prop_descriptions(self): + return """\ + flip + Determines if the positions obtained from solver are + flipped on each axis. + orientation + 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. + pad + Sets the inner padding (in px). + """ + + def __init__(self, arg=None, flip=None, orientation=None, pad=None, **kwargs): + """ + Construct a new Tiling object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.Tiling` + flip + Determines if the positions obtained from solver are + flipped on each axis. + orientation + 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. + pad + Sets the inner padding (in px). + + Returns + ------- + Tiling + """ + super().__init__("tiling") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.Tiling +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.Tiling`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("flip", arg, flip) + self._set_property("orientation", arg, orientation) + self._set_property("pad", arg, pad) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/_font.py new file mode 100644 index 0000000..c4253a2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "icicle.hoverlabel" + _path_str = "icicle.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/_font.py new file mode 100644 index 0000000..cbeb577 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "icicle.legendgrouptitle" + _path_str = "icicle.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/__init__.py new file mode 100644 index 0000000..e2d7a12 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from ._pattern import Pattern + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._line.Line", "._pattern.Pattern"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_colorbar.py new file mode 100644 index 0000000..848f59a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker" + _path_str = "icicle.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.icicle.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.icicle.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.icicle.marker. + colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + icicle.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.icicle.marker.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.icicle + .marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + icicle.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.icicle.marker.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.icicle.marker.c + olorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.icicle + .marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + icicle.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.icicle.marker.colorbar.Tit + le` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_line.py new file mode 100644 index 0000000..ea00cd5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_line.py @@ -0,0 +1,163 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker" + _path_str = "icicle.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. Defaults to + the `paper_bgcolor` value. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.marker.Line` + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_pattern.py new file mode 100644 index 0000000..1e58174 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker" + _path_str = "icicle.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..03caedc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker.colorbar" + _path_str = "icicle.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.marker. + colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..1cdf63f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker.colorbar" + _path_str = "icicle.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.marker. + colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_title.py new file mode 100644 index 0000000..0e4f9ec --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker.colorbar" + _path_str = "icicle.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.icicle.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.icicle.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/_font.py new file mode 100644 index 0000000..8d4fec6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "icicle.marker.colorbar.title" + _path_str = "icicle.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.icicle.marker. + colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/__init__.py new file mode 100644 index 0000000..a713099 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/_textfont.py new file mode 100644 index 0000000..8df72dd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/icicle/pathbar/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "icicle.pathbar" + _path_str = "icicle.pathbar.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used inside `pathbar`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.icicle.pathbar.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.icicle.pathbar.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.icicle.pathbar.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/__init__.py new file mode 100644 index 0000000..7dc94b8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/__init__.py @@ -0,0 +1,21 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._stream import Stream + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_hoverlabel.py new file mode 100644 index 0000000..69435bd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "image" + _path_str = "image.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.image.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.image.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.image.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.image.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.image.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_legendgrouptitle.py new file mode 100644 index 0000000..7b24846 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "image" + _path_str = "image.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.image.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.image.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.image.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.image.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.image.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_stream.py new file mode 100644 index 0000000..7c0a3d3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "image" + _path_str = "image.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.image.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.image.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.image.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/_font.py new file mode 100644 index 0000000..1eb363f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "image.hoverlabel" + _path_str = "image.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.image.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.image.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.image.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/_font.py new file mode 100644 index 0000000..c3a46b3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/image/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "image.legendgrouptitle" + _path_str = "image.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.image.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.image.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.image.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/__init__.py new file mode 100644 index 0000000..d1ed63e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/__init__.py @@ -0,0 +1,32 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._delta import Delta + from ._domain import Domain + from ._gauge import Gauge + from ._legendgrouptitle import Legendgrouptitle + from ._number import Number + from ._stream import Stream + from ._title import Title + from . import delta + from . import gauge + from . import legendgrouptitle + from . import number + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".delta", ".gauge", ".legendgrouptitle", ".number", ".title"], + [ + "._delta.Delta", + "._domain.Domain", + "._gauge.Gauge", + "._legendgrouptitle.Legendgrouptitle", + "._number.Number", + "._stream.Stream", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_delta.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_delta.py new file mode 100644 index 0000000..97ff3e1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_delta.py @@ -0,0 +1,309 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Delta(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.delta" + _valid_props = { + "decreasing", + "font", + "increasing", + "position", + "prefix", + "reference", + "relative", + "suffix", + "valueformat", + } + + @property + def decreasing(self): + """ + The 'decreasing' property is an instance of Decreasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.delta.Decreasing` + - A dict of string/value properties that will be passed + to the Decreasing constructor + + Returns + ------- + plotly.graph_objs.indicator.delta.Decreasing + """ + return self["decreasing"] + + @decreasing.setter + def decreasing(self, val): + self["decreasing"] = val + + @property + def font(self): + """ + Set the font used to display the delta + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.delta.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.indicator.delta.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def increasing(self): + """ + The 'increasing' property is an instance of Increasing + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.delta.Increasing` + - A dict of string/value properties that will be passed + to the Increasing constructor + + Returns + ------- + plotly.graph_objs.indicator.delta.Increasing + """ + return self["increasing"] + + @increasing.setter + def increasing(self, val): + self["increasing"] = val + + @property + def position(self): + """ + Sets the position of delta with respect to the number. + + The 'position' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom', 'left', 'right'] + + Returns + ------- + Any + """ + return self["position"] + + @position.setter + def position(self, val): + self["position"] = val + + @property + def prefix(self): + """ + Sets a prefix appearing before the delta. + + The 'prefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["prefix"] + + @prefix.setter + def prefix(self, val): + self["prefix"] = val + + @property + def reference(self): + """ + Sets the reference value to compute the delta. By default, it + is set to the current value. + + The 'reference' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["reference"] + + @reference.setter + def reference(self, val): + self["reference"] = val + + @property + def relative(self): + """ + Show relative change + + The 'relative' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["relative"] + + @relative.setter + def relative(self, val): + self["relative"] = val + + @property + def suffix(self): + """ + Sets a suffix appearing next to the delta. + + The 'suffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["suffix"] + + @suffix.setter + def suffix(self, val): + self["suffix"] = val + + @property + def valueformat(self): + """ + 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. + + The 'valueformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["valueformat"] + + @valueformat.setter + def valueformat(self, val): + self["valueformat"] = val + + @property + def _prop_descriptions(self): + return """\ + decreasing + :class:`plotly.graph_objects.indicator.delta.Decreasing + ` instance or dict with compatible properties + font + Set the font used to display the delta + increasing + :class:`plotly.graph_objects.indicator.delta.Increasing + ` instance or dict with compatible properties + position + Sets the position of delta with respect to the number. + prefix + Sets a prefix appearing before the delta. + reference + Sets the reference value to compute the delta. By + default, it is set to the current value. + relative + Show relative change + suffix + Sets a suffix appearing next to the delta. + valueformat + 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. + """ + + def __init__( + self, + arg=None, + decreasing=None, + font=None, + increasing=None, + position=None, + prefix=None, + reference=None, + relative=None, + suffix=None, + valueformat=None, + **kwargs, + ): + """ + Construct a new Delta object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Delta` + decreasing + :class:`plotly.graph_objects.indicator.delta.Decreasing + ` instance or dict with compatible properties + font + Set the font used to display the delta + increasing + :class:`plotly.graph_objects.indicator.delta.Increasing + ` instance or dict with compatible properties + position + Sets the position of delta with respect to the number. + prefix + Sets a prefix appearing before the delta. + reference + Sets the reference value to compute the delta. By + default, it is set to the current value. + relative + Show relative change + suffix + Sets a suffix appearing next to the delta. + valueformat + 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. + + Returns + ------- + Delta + """ + super().__init__("delta") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Delta +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Delta`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("decreasing", arg, decreasing) + self._set_property("font", arg, font) + self._set_property("increasing", arg, increasing) + self._set_property("position", arg, position) + self._set_property("prefix", arg, prefix) + self._set_property("reference", arg, reference) + self._set_property("relative", arg, relative) + self._set_property("suffix", arg, suffix) + self._set_property("valueformat", arg, valueformat) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_domain.py new file mode 100644 index 0000000..1aaf4e6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this indicator trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this indicator trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this indicator trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this indicator trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this indicator trace . + row + If there is a layout grid, use the domain for this row + in the grid for this indicator trace . + x + Sets the horizontal domain of this indicator trace (in + plot fraction). + y + Sets the vertical domain of this indicator trace (in + plot fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this indicator trace . + row + If there is a layout grid, use the domain for this row + in the grid for this indicator trace . + x + Sets the horizontal domain of this indicator trace (in + plot fraction). + y + Sets the vertical domain of this indicator trace (in + plot fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_gauge.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_gauge.py new file mode 100644 index 0000000..1fde32d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_gauge.py @@ -0,0 +1,323 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gauge(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.gauge" + _valid_props = { + "axis", + "bar", + "bgcolor", + "bordercolor", + "borderwidth", + "shape", + "stepdefaults", + "steps", + "threshold", + } + + @property + def axis(self): + """ + The 'axis' property is an instance of Axis + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.Axis` + - A dict of string/value properties that will be passed + to the Axis constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.Axis + """ + return self["axis"] + + @axis.setter + def axis(self, val): + self["axis"] = val + + @property + def bar(self): + """ + Set the appearance of the gauge's value + + The 'bar' property is an instance of Bar + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.Bar` + - A dict of string/value properties that will be passed + to the Bar constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.Bar + """ + return self["bar"] + + @bar.setter + def bar(self, val): + self["bar"] = val + + @property + def bgcolor(self): + """ + Sets the gauge background color. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the gauge. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the gauge. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def shape(self): + """ + Set the shape of the gauge + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['angular', 'bullet'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def steps(self): + """ + The 'steps' property is a tuple of instances of + Step that may be specified as: + - A list or tuple of instances of plotly.graph_objs.indicator.gauge.Step + - A list or tuple of dicts of string/value properties that + will be passed to the Step constructor + + Returns + ------- + tuple[plotly.graph_objs.indicator.gauge.Step] + """ + return self["steps"] + + @steps.setter + def steps(self, val): + self["steps"] = val + + @property + def stepdefaults(self): + """ + When used in a template (as + layout.template.data.indicator.gauge.stepdefaults), sets the + default property values to use for elements of + indicator.gauge.steps + + The 'stepdefaults' property is an instance of Step + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.Step` + - A dict of string/value properties that will be passed + to the Step constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.Step + """ + return self["stepdefaults"] + + @stepdefaults.setter + def stepdefaults(self, val): + self["stepdefaults"] = val + + @property + def threshold(self): + """ + The 'threshold' property is an instance of Threshold + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.Threshold` + - A dict of string/value properties that will be passed + to the Threshold constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.Threshold + """ + return self["threshold"] + + @threshold.setter + def threshold(self, val): + self["threshold"] = val + + @property + def _prop_descriptions(self): + return """\ + axis + :class:`plotly.graph_objects.indicator.gauge.Axis` + instance or dict with compatible properties + bar + Set the appearance of the gauge's value + bgcolor + Sets the gauge background color. + bordercolor + Sets the color of the border enclosing the gauge. + borderwidth + Sets the width (in px) of the border enclosing the + gauge. + shape + Set the shape of the gauge + steps + A tuple of + :class:`plotly.graph_objects.indicator.gauge.Step` + instances or dicts with compatible properties + stepdefaults + When used in a template (as + layout.template.data.indicator.gauge.stepdefaults), + sets the default property values to use for elements of + indicator.gauge.steps + threshold + :class:`plotly.graph_objects.indicator.gauge.Threshold` + instance or dict with compatible properties + """ + + def __init__( + self, + arg=None, + axis=None, + bar=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + shape=None, + steps=None, + stepdefaults=None, + threshold=None, + **kwargs, + ): + """ + Construct a new Gauge object + + The gauge of the Indicator plot. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Gauge` + axis + :class:`plotly.graph_objects.indicator.gauge.Axis` + instance or dict with compatible properties + bar + Set the appearance of the gauge's value + bgcolor + Sets the gauge background color. + bordercolor + Sets the color of the border enclosing the gauge. + borderwidth + Sets the width (in px) of the border enclosing the + gauge. + shape + Set the shape of the gauge + steps + A tuple of + :class:`plotly.graph_objects.indicator.gauge.Step` + instances or dicts with compatible properties + stepdefaults + When used in a template (as + layout.template.data.indicator.gauge.stepdefaults), + sets the default property values to use for elements of + indicator.gauge.steps + threshold + :class:`plotly.graph_objects.indicator.gauge.Threshold` + instance or dict with compatible properties + + Returns + ------- + Gauge + """ + super().__init__("gauge") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Gauge +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Gauge`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("axis", arg, axis) + self._set_property("bar", arg, bar) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("shape", arg, shape) + self._set_property("steps", arg, steps) + self._set_property("stepdefaults", arg, stepdefaults) + self._set_property("threshold", arg, threshold) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_legendgrouptitle.py new file mode 100644 index 0000000..d4767c7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.indicator.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_number.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_number.py new file mode 100644 index 0000000..487d4fd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_number.py @@ -0,0 +1,163 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Number(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.number" + _valid_props = {"font", "prefix", "suffix", "valueformat"} + + @property + def font(self): + """ + Set the font used to display main number + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.number.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.indicator.number.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def prefix(self): + """ + Sets a prefix appearing before the number. + + The 'prefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["prefix"] + + @prefix.setter + def prefix(self, val): + self["prefix"] = val + + @property + def suffix(self): + """ + Sets a suffix appearing next to the number. + + The 'suffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["suffix"] + + @suffix.setter + def suffix(self, val): + self["suffix"] = val + + @property + def valueformat(self): + """ + 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. + + The 'valueformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["valueformat"] + + @valueformat.setter + def valueformat(self, val): + self["valueformat"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Set the font used to display main number + prefix + Sets a prefix appearing before the number. + suffix + Sets a suffix appearing next to the number. + valueformat + 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. + """ + + def __init__( + self, arg=None, font=None, prefix=None, suffix=None, valueformat=None, **kwargs + ): + """ + Construct a new Number object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Number` + font + Set the font used to display main number + prefix + Sets a prefix appearing before the number. + suffix + Sets a suffix appearing next to the number. + valueformat + 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. + + Returns + ------- + Number + """ + super().__init__("number") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Number +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Number`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("prefix", arg, prefix) + self._set_property("suffix", arg, suffix) + self._set_property("valueformat", arg, valueformat) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_stream.py new file mode 100644 index 0000000..0b793d0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_title.py new file mode 100644 index 0000000..68f71ab --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/_title.py @@ -0,0 +1,134 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "indicator" + _path_str = "indicator.title" + _valid_props = {"align", "font", "text"} + + @property + def align(self): + """ + Sets the horizontal alignment of the title. It defaults to + `center` except for bullet charts for which it defaults to + right. + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def font(self): + """ + Set the font used to display the title + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.indicator.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this indicator. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + align + Sets the horizontal alignment of the title. It defaults + to `center` except for bullet charts for which it + defaults to right. + font + Set the font used to display the title + text + Sets the title of this indicator. + """ + + def __init__(self, arg=None, align=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.Title` + align + Sets the horizontal alignment of the title. It defaults + to `center` except for bullet charts for which it + defaults to right. + font + Set the font used to display the title + text + Sets the title of this indicator. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/__init__.py new file mode 100644 index 0000000..6b93968 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/__init__.py @@ -0,0 +1,15 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._decreasing import Decreasing + from ._font import Font + from ._increasing import Increasing +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [], + ["._decreasing.Decreasing", "._font.Font", "._increasing.Increasing"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_decreasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_decreasing.py new file mode 100644 index 0000000..4364427 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_decreasing.py @@ -0,0 +1,105 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Decreasing(_BaseTraceHierarchyType): + _parent_path_str = "indicator.delta" + _path_str = "indicator.delta.decreasing" + _valid_props = {"color", "symbol"} + + @property + def color(self): + """ + Sets the color for increasing value. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symbol(self): + """ + Sets the symbol to display for increasing value + + The 'symbol' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color for increasing value. + symbol + Sets the symbol to display for increasing value + """ + + def __init__(self, arg=None, color=None, symbol=None, **kwargs): + """ + Construct a new Decreasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.delta.Decreasing` + color + Sets the color for increasing value. + symbol + Sets the symbol to display for increasing value + + Returns + ------- + Decreasing + """ + super().__init__("decreasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.delta.Decreasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.delta.Decreasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("symbol", arg, symbol) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_font.py new file mode 100644 index 0000000..a30bb94 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "indicator.delta" + _path_str = "indicator.delta.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Set the font used to display the delta + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.delta.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.delta.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.delta.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_increasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_increasing.py new file mode 100644 index 0000000..91ee3b2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/delta/_increasing.py @@ -0,0 +1,105 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Increasing(_BaseTraceHierarchyType): + _parent_path_str = "indicator.delta" + _path_str = "indicator.delta.increasing" + _valid_props = {"color", "symbol"} + + @property + def color(self): + """ + Sets the color for increasing value. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symbol(self): + """ + Sets the symbol to display for increasing value + + The 'symbol' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color for increasing value. + symbol + Sets the symbol to display for increasing value + """ + + def __init__(self, arg=None, color=None, symbol=None, **kwargs): + """ + Construct a new Increasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.delta.Increasing` + color + Sets the color for increasing value. + symbol + Sets the symbol to display for increasing value + + Returns + ------- + Increasing + """ + super().__init__("increasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.delta.Increasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.delta.Increasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("symbol", arg, symbol) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/__init__.py new file mode 100644 index 0000000..cad4a3b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/__init__.py @@ -0,0 +1,20 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._axis import Axis + from ._bar import Bar + from ._step import Step + from ._threshold import Threshold + from . import axis + from . import bar + from . import step + from . import threshold +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".axis", ".bar", ".step", ".threshold"], + ["._axis.Axis", "._bar.Bar", "._step.Step", "._threshold.Threshold"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_axis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_axis.py new file mode 100644 index 0000000..83ba584 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_axis.py @@ -0,0 +1,1108 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Axis(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge" + _path_str = "indicator.gauge.axis" + _valid_props = { + "dtick", + "exponentformat", + "labelalias", + "minexponent", + "nticks", + "range", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "visible", + } + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + Sets the range of this axis. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property is a number and may be specified as: + - An int or float + (1) The 'range[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.axis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.axis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.indicator.gauge.axis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.indicator.gauge.axis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.indicator.gaug + e.axis.tickformatstopdefaults), sets the default property + values to use for elements of + indicator.gauge.axis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.axis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.axis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + dtick + 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" + exponentformat + 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. + labelalias + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + range + Sets the range of this axis. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.indicator.gauge + .axis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.indica + tor.gauge.axis.tickformatstopdefaults), sets the + default property values to use for elements of + indicator.gauge.axis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + visible + 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 + """ + + def __init__( + self, + arg=None, + dtick=None, + exponentformat=None, + labelalias=None, + minexponent=None, + nticks=None, + range=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + visible=None, + **kwargs, + ): + """ + Construct a new Axis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.gauge.Axis` + dtick + 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" + exponentformat + 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. + labelalias + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + range + Sets the range of this axis. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.indicator.gauge + .axis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.indica + tor.gauge.axis.tickformatstopdefaults), sets the + default property values to use for elements of + indicator.gauge.axis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + visible + 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 + + Returns + ------- + Axis + """ + super().__init__("axis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.Axis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.Axis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_bar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_bar.py new file mode 100644 index 0000000..622dc9e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_bar.py @@ -0,0 +1,135 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Bar(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge" + _path_str = "indicator.gauge.bar" + _valid_props = {"color", "line", "thickness"} + + @property + def color(self): + """ + Sets the background color of the arc. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.bar.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.bar.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def thickness(self): + """ + Sets the thickness of the bar as a fraction of the total + thickness of the gauge. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the background color of the arc. + line + :class:`plotly.graph_objects.indicator.gauge.bar.Line` + instance or dict with compatible properties + thickness + Sets the thickness of the bar as a fraction of the + total thickness of the gauge. + """ + + def __init__(self, arg=None, color=None, line=None, thickness=None, **kwargs): + """ + Construct a new Bar object + + Set the appearance of the gauge's value + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.gauge.Bar` + color + Sets the background color of the arc. + line + :class:`plotly.graph_objects.indicator.gauge.bar.Line` + instance or dict with compatible properties + thickness + Sets the thickness of the bar as a fraction of the + total thickness of the gauge. + + Returns + ------- + Bar + """ + super().__init__("bar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.Bar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.Bar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._set_property("thickness", arg, thickness) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_step.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_step.py new file mode 100644 index 0000000..c683b9b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_step.py @@ -0,0 +1,262 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Step(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge" + _path_str = "indicator.gauge.step" + _valid_props = {"color", "line", "name", "range", "templateitemname", "thickness"} + + @property + def color(self): + """ + Sets the background color of the arc. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.step.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.step.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def range(self): + """ + Sets the range of this axis. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property is a number and may be specified as: + - An int or float + (1) The 'range[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def thickness(self): + """ + Sets the thickness of the bar as a fraction of the total + thickness of the gauge. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the background color of the arc. + line + :class:`plotly.graph_objects.indicator.gauge.step.Line` + instance or dict with compatible properties + name + 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. + range + Sets the range of this axis. + templateitemname + 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`. + thickness + Sets the thickness of the bar as a fraction of the + total thickness of the gauge. + """ + + def __init__( + self, + arg=None, + color=None, + line=None, + name=None, + range=None, + templateitemname=None, + thickness=None, + **kwargs, + ): + """ + Construct a new Step object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.gauge.Step` + color + Sets the background color of the arc. + line + :class:`plotly.graph_objects.indicator.gauge.step.Line` + instance or dict with compatible properties + name + 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. + range + Sets the range of this axis. + templateitemname + 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`. + thickness + Sets the thickness of the bar as a fraction of the + total thickness of the gauge. + + Returns + ------- + Step + """ + super().__init__("steps") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.Step +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.Step`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._set_property("name", arg, name) + self._set_property("range", arg, range) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("thickness", arg, thickness) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_threshold.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_threshold.py new file mode 100644 index 0000000..acee114 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/_threshold.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Threshold(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge" + _path_str = "indicator.gauge.threshold" + _valid_props = {"line", "thickness", "value"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.indicator.gauge.threshold.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.indicator.gauge.threshold.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def thickness(self): + """ + Sets the thickness of the threshold line as a fraction of the + thickness of the gauge. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def value(self): + """ + Sets a treshold value drawn as a line. + + The 'value' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.indicator.gauge.threshold. + Line` instance or dict with compatible properties + thickness + Sets the thickness of the threshold line as a fraction + of the thickness of the gauge. + value + Sets a treshold value drawn as a line. + """ + + def __init__(self, arg=None, line=None, thickness=None, value=None, **kwargs): + """ + Construct a new Threshold object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.gauge.Threshold` + line + :class:`plotly.graph_objects.indicator.gauge.threshold. + Line` instance or dict with compatible properties + thickness + Sets the thickness of the threshold line as a fraction + of the thickness of the gauge. + value + Sets a treshold value drawn as a line. + + Returns + ------- + Threshold + """ + super().__init__("threshold") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.Threshold +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.Threshold`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("thickness", arg, thickness) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/__init__.py new file mode 100644 index 0000000..1dfbe47 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickfont.py new file mode 100644 index 0000000..22ed546 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge.axis" + _path_str = "indicator.gauge.axis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.indicator.gaug + e.axis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.axis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.axis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py new file mode 100644 index 0000000..d9f8c19 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/axis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge.axis" + _path_str = "indicator.gauge.axis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.indicator.gaug + e.axis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.axis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.axis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/_line.py new file mode 100644 index 0000000..4b6a842 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/bar/_line.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge.bar" + _path_str = "indicator.gauge.bar.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + width + Sets the width (in px) of the line enclosing each + sector. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.gauge.bar.Line` + color + Sets the color of the line enclosing each sector. + width + Sets the width (in px) of the line enclosing each + sector. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.bar.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.bar.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/_line.py new file mode 100644 index 0000000..66e52fe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/step/_line.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge.step" + _path_str = "indicator.gauge.step.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + width + Sets the width (in px) of the line enclosing each + sector. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.gauge.step.Line` + color + Sets the color of the line enclosing each sector. + width + Sets the width (in px) of the line enclosing each + sector. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.step.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.step.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/_line.py new file mode 100644 index 0000000..39cc174 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/gauge/threshold/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "indicator.gauge.threshold" + _path_str = "indicator.gauge.threshold.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of the threshold line. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of the threshold line. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the threshold line. + width + Sets the width (in px) of the threshold line. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.indicator.gaug + e.threshold.Line` + color + Sets the color of the threshold line. + width + Sets the width (in px) of the threshold line. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.gauge.threshold.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.gauge.threshold.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/_font.py new file mode 100644 index 0000000..6cd1574 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "indicator.legendgrouptitle" + _path_str = "indicator.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.indicator.lege + ndgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/_font.py new file mode 100644 index 0000000..48dedbd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/number/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "indicator.number" + _path_str = "indicator.number.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Set the font used to display main number + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.number.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.number.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.number.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/_font.py new file mode 100644 index 0000000..4407ab2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/indicator/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "indicator.title" + _path_str = "indicator.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Set the font used to display the title + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.indicator.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.indicator.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.indicator.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/__init__.py new file mode 100644 index 0000000..27f503c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/__init__.py @@ -0,0 +1,40 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._caps import Caps + from ._colorbar import ColorBar + from ._contour import Contour + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._lighting import Lighting + from ._lightposition import Lightposition + from ._slices import Slices + from ._spaceframe import Spaceframe + from ._stream import Stream + from ._surface import Surface + from . import caps + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle + from . import slices +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".caps", ".colorbar", ".hoverlabel", ".legendgrouptitle", ".slices"], + [ + "._caps.Caps", + "._colorbar.ColorBar", + "._contour.Contour", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._lighting.Lighting", + "._lightposition.Lightposition", + "._slices.Slices", + "._spaceframe.Spaceframe", + "._stream.Stream", + "._surface.Surface", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_caps.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_caps.py new file mode 100644 index 0000000..e54a7e0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_caps.py @@ -0,0 +1,132 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Caps(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.caps" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is an instance of X + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.caps.X` + - A dict of string/value properties that will be passed + to the X constructor + + Returns + ------- + plotly.graph_objs.isosurface.caps.X + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is an instance of Y + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.caps.Y` + - A dict of string/value properties that will be passed + to the Y constructor + + Returns + ------- + plotly.graph_objs.isosurface.caps.Y + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is an instance of Z + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.caps.Z` + - A dict of string/value properties that will be passed + to the Z constructor + + Returns + ------- + plotly.graph_objs.isosurface.caps.Z + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + :class:`plotly.graph_objects.isosurface.caps.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.isosurface.caps.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.isosurface.caps.Z` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Caps object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Caps` + x + :class:`plotly.graph_objects.isosurface.caps.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.isosurface.caps.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.isosurface.caps.Z` + instance or dict with compatible properties + + Returns + ------- + Caps + """ + super().__init__("caps") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Caps +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Caps`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_colorbar.py new file mode 100644 index 0000000..fff5911 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_colorbar.py @@ -0,0 +1,1721 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.isosurface.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.isosurface.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.isosurface.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.isosurface.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of isosurface.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.isosurface.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.isosurface.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.isosurface.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.isosur + face.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + isosurface.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.isosurface.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.isosurface.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.isosur + face.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + isosurface.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.isosurface.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_contour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_contour.py new file mode 100644 index 0000000..9032da2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_contour.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contour(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.contour" + _valid_props = {"color", "show", "width"} + + @property + def color(self): + """ + Sets the color of the contour lines. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def show(self): + """ + Sets whether or not dynamic contours are shown on hover + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def width(self): + """ + Sets the width of the contour lines. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour lines. + show + Sets whether or not dynamic contours are shown on hover + width + Sets the width of the contour lines. + """ + + def __init__(self, arg=None, color=None, show=None, width=None, **kwargs): + """ + Construct a new Contour object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Contour` + color + Sets the color of the contour lines. + show + Sets whether or not dynamic contours are shown on hover + width + Sets the width of the contour lines. + + Returns + ------- + Contour + """ + super().__init__("contour") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Contour +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Contour`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("show", arg, show) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_hoverlabel.py new file mode 100644 index 0000000..51a6cca --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.isosurface.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_legendgrouptitle.py new file mode 100644 index 0000000..bff6425 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.isosurface.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lighting.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lighting.py new file mode 100644 index 0000000..e5b9e8f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lighting.py @@ -0,0 +1,260 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lighting(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.lighting" + _valid_props = { + "ambient", + "diffuse", + "facenormalsepsilon", + "fresnel", + "roughness", + "specular", + "vertexnormalsepsilon", + } + + @property + def ambient(self): + """ + Ambient light increases overall color visibility but can wash + out the image. + + The 'ambient' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ambient"] + + @ambient.setter + def ambient(self, val): + self["ambient"] = val + + @property + def diffuse(self): + """ + Represents the extent that incident rays are reflected in a + range of angles. + + The 'diffuse' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["diffuse"] + + @diffuse.setter + def diffuse(self, val): + self["diffuse"] = val + + @property + def facenormalsepsilon(self): + """ + Epsilon for face normals calculation avoids math issues arising + from degenerate geometry. + + The 'facenormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["facenormalsepsilon"] + + @facenormalsepsilon.setter + def facenormalsepsilon(self, val): + self["facenormalsepsilon"] = val + + @property + def fresnel(self): + """ + 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. + + The 'fresnel' property is a number and may be specified as: + - An int or float in the interval [0, 5] + + Returns + ------- + int|float + """ + return self["fresnel"] + + @fresnel.setter + def fresnel(self, val): + self["fresnel"] = val + + @property + def roughness(self): + """ + Alters specular reflection; the rougher the surface, the wider + and less contrasty the shine. + + The 'roughness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["roughness"] + + @roughness.setter + def roughness(self, val): + self["roughness"] = val + + @property + def specular(self): + """ + Represents the level that incident rays are reflected in a + single direction, causing shine. + + The 'specular' property is a number and may be specified as: + - An int or float in the interval [0, 2] + + Returns + ------- + int|float + """ + return self["specular"] + + @specular.setter + def specular(self, val): + self["specular"] = val + + @property + def vertexnormalsepsilon(self): + """ + Epsilon for vertex normals calculation avoids math issues + arising from degenerate geometry. + + The 'vertexnormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["vertexnormalsepsilon"] + + @vertexnormalsepsilon.setter + def vertexnormalsepsilon(self, val): + self["vertexnormalsepsilon"] = val + + @property + def _prop_descriptions(self): + return """\ + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + """ + + def __init__( + self, + arg=None, + ambient=None, + diffuse=None, + facenormalsepsilon=None, + fresnel=None, + roughness=None, + specular=None, + vertexnormalsepsilon=None, + **kwargs, + ): + """ + Construct a new Lighting object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Lighting` + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + + Returns + ------- + Lighting + """ + super().__init__("lighting") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Lighting +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Lighting`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("ambient", arg, ambient) + self._set_property("diffuse", arg, diffuse) + self._set_property("facenormalsepsilon", arg, facenormalsepsilon) + self._set_property("fresnel", arg, fresnel) + self._set_property("roughness", arg, roughness) + self._set_property("specular", arg, specular) + self._set_property("vertexnormalsepsilon", arg, vertexnormalsepsilon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lightposition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lightposition.py new file mode 100644 index 0000000..07e99a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_lightposition.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lightposition(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.lightposition" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + Numeric vector, representing the X coordinate for each vertex. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Numeric vector, representing the Y coordinate for each vertex. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + Numeric vector, representing the Z coordinate for each vertex. + + The 'z' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Lightposition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Lightposition` + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + + Returns + ------- + Lightposition + """ + super().__init__("lightposition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Lightposition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Lightposition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_slices.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_slices.py new file mode 100644 index 0000000..df6b483 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_slices.py @@ -0,0 +1,132 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Slices(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.slices" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is an instance of X + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.slices.X` + - A dict of string/value properties that will be passed + to the X constructor + + Returns + ------- + plotly.graph_objs.isosurface.slices.X + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is an instance of Y + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.slices.Y` + - A dict of string/value properties that will be passed + to the Y constructor + + Returns + ------- + plotly.graph_objs.isosurface.slices.Y + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is an instance of Z + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.slices.Z` + - A dict of string/value properties that will be passed + to the Z constructor + + Returns + ------- + plotly.graph_objs.isosurface.slices.Z + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + :class:`plotly.graph_objects.isosurface.slices.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.isosurface.slices.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.isosurface.slices.Z` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Slices object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Slices` + x + :class:`plotly.graph_objects.isosurface.slices.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.isosurface.slices.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.isosurface.slices.Z` + instance or dict with compatible properties + + Returns + ------- + Slices + """ + super().__init__("slices") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Slices +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Slices`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_spaceframe.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_spaceframe.py new file mode 100644 index 0000000..8aa7d75 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_spaceframe.py @@ -0,0 +1,122 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Spaceframe(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.spaceframe" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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). + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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). + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new Spaceframe object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Spaceframe` + fill + 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). + show + 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. + + Returns + ------- + Spaceframe + """ + super().__init__("spaceframe") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Spaceframe +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Spaceframe`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_stream.py new file mode 100644 index 0000000..ee2809f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_surface.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_surface.py new file mode 100644 index 0000000..605e7fd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/_surface.py @@ -0,0 +1,193 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Surface(_BaseTraceHierarchyType): + _parent_path_str = "isosurface" + _path_str = "isosurface.surface" + _valid_props = {"count", "fill", "pattern", "show"} + + @property + def count(self): + """ + 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. + + The 'count' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["count"] + + @count.setter + def count(self, val): + self["count"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def pattern(self): + """ + 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. + + The 'pattern' property is a flaglist and may be specified + as a string containing: + - Any combination of ['A', 'B', 'C', 'D', 'E'] joined with '+' characters + (e.g. 'A+B') + OR exactly one of ['all', 'odd', 'even'] (e.g. 'even') + + Returns + ------- + Any + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def show(self): + """ + Hides/displays surfaces between minimum and maximum iso-values. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + count + 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. + fill + 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. + pattern + 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. + show + Hides/displays surfaces between minimum and maximum + iso-values. + """ + + def __init__( + self, arg=None, count=None, fill=None, pattern=None, show=None, **kwargs + ): + """ + Construct a new Surface object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.Surface` + count + 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. + fill + 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. + pattern + 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. + show + Hides/displays surfaces between minimum and maximum + iso-values. + + Returns + ------- + Surface + """ + super().__init__("surface") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.Surface +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.Surface`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("count", arg, count) + self._set_property("fill", arg, fill) + self._set_property("pattern", arg, pattern) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/__init__.py new file mode 100644 index 0000000..3802eba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._x import X + from ._y import Y + from ._z import Z +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._x.X", "._y.Y", "._z.Z"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_x.py new file mode 100644 index 0000000..c93cb6d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_x.py @@ -0,0 +1,122 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class X(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.caps" + _path_str = "isosurface.caps.x" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new X object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.caps.X` + fill + 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. + show + 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. + + Returns + ------- + X + """ + super().__init__("x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.caps.X +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.caps.X`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_y.py new file mode 100644 index 0000000..fe3a13e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_y.py @@ -0,0 +1,122 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Y(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.caps" + _path_str = "isosurface.caps.y" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new Y object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.caps.Y` + fill + 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. + show + 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. + + Returns + ------- + Y + """ + super().__init__("y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.caps.Y +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.caps.Y`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_z.py new file mode 100644 index 0000000..b60831e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/caps/_z.py @@ -0,0 +1,122 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Z(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.caps" + _path_str = "isosurface.caps.z" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new Z object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.caps.Z` + fill + 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. + show + 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. + + Returns + ------- + Z + """ + super().__init__("z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.caps.Z +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.caps.Z`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickfont.py new file mode 100644 index 0000000..16009fe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.colorbar" + _path_str = "isosurface.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py new file mode 100644 index 0000000..faa7b68 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.colorbar" + _path_str = "isosurface.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.isosurface.col + orbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_title.py new file mode 100644 index 0000000..c19b2b5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.colorbar" + _path_str = "isosurface.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.isosurface.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.isosurface.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/_font.py new file mode 100644 index 0000000..1ee65df --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.colorbar.title" + _path_str = "isosurface.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.isosurface.col + orbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/_font.py new file mode 100644 index 0000000..a5ca352 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.hoverlabel" + _path_str = "isosurface.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/_font.py new file mode 100644 index 0000000..2297567 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.legendgrouptitle" + _path_str = "isosurface.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.isosurface.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/__init__.py new file mode 100644 index 0000000..3802eba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._x import X + from ._y import Y + from ._z import Z +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._x.X", "._y.Y", "._z.Z"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_x.py new file mode 100644 index 0000000..a47a8f9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_x.py @@ -0,0 +1,177 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class X(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.slices" + _path_str = "isosurface.slices.x" + _valid_props = {"fill", "locations", "locationssrc", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def locations(self): + """ + 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. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def show(self): + """ + Determines whether or not slice planes about the x dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the x + dimension are drawn. + """ + + def __init__( + self, + arg=None, + fill=None, + locations=None, + locationssrc=None, + show=None, + **kwargs, + ): + """ + Construct a new X object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.slices.X` + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the x + dimension are drawn. + + Returns + ------- + X + """ + super().__init__("x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.slices.X +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.slices.X`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_y.py new file mode 100644 index 0000000..29e54ef --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_y.py @@ -0,0 +1,177 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Y(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.slices" + _path_str = "isosurface.slices.y" + _valid_props = {"fill", "locations", "locationssrc", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def locations(self): + """ + 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. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def show(self): + """ + Determines whether or not slice planes about the y dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the y + dimension are drawn. + """ + + def __init__( + self, + arg=None, + fill=None, + locations=None, + locationssrc=None, + show=None, + **kwargs, + ): + """ + Construct a new Y object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.slices.Y` + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the y + dimension are drawn. + + Returns + ------- + Y + """ + super().__init__("y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.slices.Y +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.slices.Y`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_z.py new file mode 100644 index 0000000..2aa0012 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/isosurface/slices/_z.py @@ -0,0 +1,177 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Z(_BaseTraceHierarchyType): + _parent_path_str = "isosurface.slices" + _path_str = "isosurface.slices.z" + _valid_props = {"fill", "locations", "locationssrc", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def locations(self): + """ + 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. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def show(self): + """ + Determines whether or not slice planes about the z dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the z + dimension are drawn. + """ + + def __init__( + self, + arg=None, + fill=None, + locations=None, + locationssrc=None, + show=None, + **kwargs, + ): + """ + Construct a new Z object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.isosurface.slices.Z` + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the z + dimension are drawn. + + Returns + ------- + Z + """ + super().__init__("z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.isosurface.slices.Z +constructor must be a dict or +an instance of :class:`plotly.graph_objs.isosurface.slices.Z`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/__init__.py new file mode 100644 index 0000000..9fe6cad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/__init__.py @@ -0,0 +1,120 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._activeselection import Activeselection + from ._activeshape import Activeshape + from ._annotation import Annotation + from ._coloraxis import Coloraxis + from ._colorscale import Colorscale + from ._font import Font + from ._geo import Geo + from ._grid import Grid + from ._hoverlabel import Hoverlabel + from ._image import Image + from ._legend import Legend + from ._map import Map + from ._mapbox import Mapbox + from ._margin import Margin + from ._modebar import Modebar + from ._newselection import Newselection + from ._newshape import Newshape + from ._polar import Polar + from ._scene import Scene + from ._selection import Selection + from ._shape import Shape + from ._slider import Slider + from ._smith import Smith + from ._template import Template + from ._ternary import Ternary + from ._title import Title + from ._transition import Transition + from ._uniformtext import Uniformtext + from ._updatemenu import Updatemenu + from ._xaxis import XAxis + from ._yaxis import YAxis + from . import annotation + from . import coloraxis + from . import geo + from . import grid + from . import hoverlabel + from . import legend + from . import map + from . import mapbox + from . import newselection + from . import newshape + from . import polar + from . import scene + from . import selection + from . import shape + from . import slider + from . import smith + from . import template + from . import ternary + from . import title + from . import updatemenu + from . import xaxis + from . import yaxis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".annotation", + ".coloraxis", + ".geo", + ".grid", + ".hoverlabel", + ".legend", + ".map", + ".mapbox", + ".newselection", + ".newshape", + ".polar", + ".scene", + ".selection", + ".shape", + ".slider", + ".smith", + ".template", + ".ternary", + ".title", + ".updatemenu", + ".xaxis", + ".yaxis", + ], + [ + "._activeselection.Activeselection", + "._activeshape.Activeshape", + "._annotation.Annotation", + "._coloraxis.Coloraxis", + "._colorscale.Colorscale", + "._font.Font", + "._geo.Geo", + "._grid.Grid", + "._hoverlabel.Hoverlabel", + "._image.Image", + "._legend.Legend", + "._map.Map", + "._mapbox.Mapbox", + "._margin.Margin", + "._modebar.Modebar", + "._newselection.Newselection", + "._newshape.Newshape", + "._polar.Polar", + "._scene.Scene", + "._selection.Selection", + "._shape.Shape", + "._slider.Slider", + "._smith.Smith", + "._template.Template", + "._ternary.Ternary", + "._title.Title", + "._transition.Transition", + "._uniformtext.Uniformtext", + "._updatemenu.Updatemenu", + "._xaxis.XAxis", + "._yaxis.YAxis", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeselection.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeselection.py new file mode 100644 index 0000000..df89476 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeselection.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Activeselection(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.activeselection" + _valid_props = {"fillcolor", "opacity"} + + @property + def fillcolor(self): + """ + Sets the color filling the active selection' interior. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def opacity(self): + """ + Sets the opacity of the active selection. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + fillcolor + Sets the color filling the active selection' interior. + opacity + Sets the opacity of the active selection. + """ + + def __init__(self, arg=None, fillcolor=None, opacity=None, **kwargs): + """ + Construct a new Activeselection object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Activeselection` + fillcolor + Sets the color filling the active selection' interior. + opacity + Sets the opacity of the active selection. + + Returns + ------- + Activeselection + """ + super().__init__("activeselection") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Activeselection +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Activeselection`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fillcolor", arg, fillcolor) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeshape.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeshape.py new file mode 100644 index 0000000..e350187 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_activeshape.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Activeshape(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.activeshape" + _valid_props = {"fillcolor", "opacity"} + + @property + def fillcolor(self): + """ + Sets the color filling the active shape' interior. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def opacity(self): + """ + Sets the opacity of the active shape. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + fillcolor + Sets the color filling the active shape' interior. + opacity + Sets the opacity of the active shape. + """ + + def __init__(self, arg=None, fillcolor=None, opacity=None, **kwargs): + """ + Construct a new Activeshape object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Activeshape` + fillcolor + Sets the color filling the active shape' interior. + opacity + Sets the opacity of the active shape. + + Returns + ------- + Activeshape + """ + super().__init__("activeshape") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Activeshape +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Activeshape`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fillcolor", arg, fillcolor) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_annotation.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_annotation.py new file mode 100644 index 0000000..5be9964 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_annotation.py @@ -0,0 +1,1714 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Annotation(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.annotation" + _valid_props = { + "align", + "arrowcolor", + "arrowhead", + "arrowside", + "arrowsize", + "arrowwidth", + "ax", + "axref", + "ay", + "ayref", + "bgcolor", + "bordercolor", + "borderpad", + "borderwidth", + "captureevents", + "clicktoshow", + "font", + "height", + "hoverlabel", + "hovertext", + "name", + "opacity", + "showarrow", + "standoff", + "startarrowhead", + "startarrowsize", + "startstandoff", + "templateitemname", + "text", + "textangle", + "valign", + "visible", + "width", + "x", + "xanchor", + "xclick", + "xref", + "xshift", + "y", + "yanchor", + "yclick", + "yref", + "yshift", + } + + @property + def align(self): + """ + 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. + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def arrowcolor(self): + """ + Sets the color of the annotation arrow. + + The 'arrowcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["arrowcolor"] + + @arrowcolor.setter + def arrowcolor(self, val): + self["arrowcolor"] = val + + @property + def arrowhead(self): + """ + Sets the end annotation arrow head style. + + The 'arrowhead' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 8] + + Returns + ------- + int + """ + return self["arrowhead"] + + @arrowhead.setter + def arrowhead(self, val): + self["arrowhead"] = val + + @property + def arrowside(self): + """ + Sets the annotation arrow head position. + + The 'arrowside' property is a flaglist and may be specified + as a string containing: + - Any combination of ['end', 'start'] joined with '+' characters + (e.g. 'end+start') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["arrowside"] + + @arrowside.setter + def arrowside(self, val): + self["arrowside"] = val + + @property + def arrowsize(self): + """ + 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. + + The 'arrowsize' property is a number and may be specified as: + - An int or float in the interval [0.3, inf] + + Returns + ------- + int|float + """ + return self["arrowsize"] + + @arrowsize.setter + def arrowsize(self, val): + self["arrowsize"] = val + + @property + def arrowwidth(self): + """ + Sets the width (in px) of annotation arrow line. + + The 'arrowwidth' property is a number and may be specified as: + - An int or float in the interval [0.1, inf] + + Returns + ------- + int|float + """ + return self["arrowwidth"] + + @arrowwidth.setter + def arrowwidth(self, val): + self["arrowwidth"] = val + + @property + def ax(self): + """ + 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`. + + The 'ax' property accepts values of any type + + Returns + ------- + Any + """ + return self["ax"] + + @ax.setter + def ax(self, val): + self["ax"] = val + + @property + def axref(self): + """ + 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. + + The 'axref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['pixel'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["axref"] + + @axref.setter + def axref(self, val): + self["axref"] = val + + @property + def ay(self): + """ + 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`. + + The 'ay' property accepts values of any type + + Returns + ------- + Any + """ + return self["ay"] + + @ay.setter + def ay(self, val): + self["ay"] = val + + @property + def ayref(self): + """ + 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. + + The 'ayref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['pixel'] + - A string that matches one of the following regular expressions: + ['^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["ayref"] + + @ayref.setter + def ayref(self, val): + self["ayref"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the annotation. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the annotation `text`. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderpad(self): + """ + Sets the padding (in px) between the `text` and the enclosing + border. + + The 'borderpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderpad"] + + @borderpad.setter + def borderpad(self, val): + self["borderpad"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the annotation + `text`. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def captureevents(self): + """ + 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`. + + The 'captureevents' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["captureevents"] + + @captureevents.setter + def captureevents(self, val): + self["captureevents"] = val + + @property + def clicktoshow(self): + """ + 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`. + + The 'clicktoshow' property is an enumeration that may be specified as: + - One of the following enumeration values: + [False, 'onoff', 'onout'] + + Returns + ------- + Any + """ + return self["clicktoshow"] + + @clicktoshow.setter + def clicktoshow(self, val): + self["clicktoshow"] = val + + @property + def font(self): + """ + Sets the annotation text font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.annotation.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.annotation.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def height(self): + """ + Sets an explicit height for the text box. null (default) lets + the text set the box height. Taller text will be clipped. + + The 'height' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["height"] + + @height.setter + def height(self, val): + self["height"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.annotation.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.layout.annotation.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertext(self): + """ + Sets text to appear when hovering over this annotation. If + omitted or blank, no hover label will appear. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the annotation (text + arrow). + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def showarrow(self): + """ + 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. + + The 'showarrow' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showarrow"] + + @showarrow.setter + def showarrow(self, val): + self["showarrow"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def startarrowhead(self): + """ + Sets the start annotation arrow head style. + + The 'startarrowhead' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 8] + + Returns + ------- + int + """ + return self["startarrowhead"] + + @startarrowhead.setter + def startarrowhead(self, val): + self["startarrowhead"] = val + + @property + def startarrowsize(self): + """ + 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. + + The 'startarrowsize' property is a number and may be specified as: + - An int or float in the interval [0.3, inf] + + Returns + ------- + int|float + """ + return self["startarrowsize"] + + @startarrowsize.setter + def startarrowsize(self, val): + self["startarrowsize"] = val + + @property + def startstandoff(self): + """ + 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. + + The 'startstandoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["startstandoff"] + + @startstandoff.setter + def startstandoff(self, val): + self["startstandoff"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def text(self): + """ + Sets the text associated with this annotation. Plotly uses a + subset of HTML tags to do things like newline (
), bold + (), italics (), hyperlinks (). + Tags , , , , are also supported. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + Sets the angle at which the `text` is drawn with respect to the + horizontal. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def valign(self): + """ + 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. + + The 'valign' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["valign"] + + @valign.setter + def valign(self, val): + self["valign"] = val + + @property + def visible(self): + """ + Determines whether or not this annotation is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + 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. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def x(self): + """ + 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. + + The 'x' property accepts values of any type + + Returns + ------- + Any + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xclick(self): + """ + Toggle this annotation when clicking a data point whose `x` + value is `xclick` rather than the annotation's `x` value. + + The 'xclick' property accepts values of any type + + Returns + ------- + Any + """ + return self["xclick"] + + @xclick.setter + def xclick(self, val): + self["xclick"] = val + + @property + def xref(self): + """ + 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. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def xshift(self): + """ + Shifts the position of the whole annotation and arrow to the + right (positive) or left (negative) by this many pixels. + + The 'xshift' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["xshift"] + + @xshift.setter + def xshift(self, val): + self["xshift"] = val + + @property + def y(self): + """ + 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. + + The 'y' property accepts values of any type + + Returns + ------- + Any + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def yclick(self): + """ + Toggle this annotation when clicking a data point whose `y` + value is `yclick` rather than the annotation's `y` value. + + The 'yclick' property accepts values of any type + + Returns + ------- + Any + """ + return self["yclick"] + + @yclick.setter + def yclick(self, val): + self["yclick"] = val + + @property + def yref(self): + """ + 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. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def yshift(self): + """ + Shifts the position of the whole annotation and arrow up + (positive) or down (negative) by this many pixels. + + The 'yshift' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["yshift"] + + @yshift.setter + def yshift(self, val): + self["yshift"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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. + arrowcolor + Sets the color of the annotation arrow. + arrowhead + Sets the end annotation arrow head style. + arrowside + Sets the annotation arrow head position. + arrowsize + 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. + arrowwidth + Sets the width (in px) of annotation arrow line. + ax + 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`. + axref + 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. + ay + 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`. + ayref + 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. + bgcolor + Sets the background color of the annotation. + bordercolor + Sets the color of the border enclosing the annotation + `text`. + borderpad + Sets the padding (in px) between the `text` and the + enclosing border. + borderwidth + Sets the width (in px) of the border enclosing the + annotation `text`. + captureevents + 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`. + clicktoshow + 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`. + font + Sets the annotation text font. + height + Sets an explicit height for the text box. null + (default) lets the text set the box height. Taller text + will be clipped. + hoverlabel + :class:`plotly.graph_objects.layout.annotation.Hoverlab + el` instance or dict with compatible properties + hovertext + Sets text to appear when hovering over this annotation. + If omitted or blank, no hover label will appear. + name + 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. + opacity + Sets the opacity of the annotation (text + arrow). + showarrow + 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. + standoff + 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. + startarrowhead + Sets the start annotation arrow head style. + startarrowsize + 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. + startstandoff + 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. + templateitemname + 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`. + text + Sets the text associated with this annotation. Plotly + uses a subset of HTML tags to do things like newline + (
), bold (), italics (), hyperlinks + (). Tags , , , , + are also supported. + textangle + Sets the angle at which the `text` is drawn with + respect to the horizontal. + valign + 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. + visible + Determines whether or not this annotation is visible. + width + 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. + x + 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. + xanchor + 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. + xclick + Toggle this annotation when clicking a data point whose + `x` value is `xclick` rather than the annotation's `x` + value. + xref + 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. + xshift + Shifts the position of the whole annotation and arrow + to the right (positive) or left (negative) by this many + pixels. + y + 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. + yanchor + 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. + yclick + Toggle this annotation when clicking a data point whose + `y` value is `yclick` rather than the annotation's `y` + value. + yref + 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. + yshift + Shifts the position of the whole annotation and arrow + up (positive) or down (negative) by this many pixels. + """ + + def __init__( + self, + arg=None, + align=None, + arrowcolor=None, + arrowhead=None, + arrowside=None, + arrowsize=None, + arrowwidth=None, + ax=None, + axref=None, + ay=None, + ayref=None, + bgcolor=None, + bordercolor=None, + borderpad=None, + borderwidth=None, + captureevents=None, + clicktoshow=None, + font=None, + height=None, + hoverlabel=None, + hovertext=None, + name=None, + opacity=None, + showarrow=None, + standoff=None, + startarrowhead=None, + startarrowsize=None, + startstandoff=None, + templateitemname=None, + text=None, + textangle=None, + valign=None, + visible=None, + width=None, + x=None, + xanchor=None, + xclick=None, + xref=None, + xshift=None, + y=None, + yanchor=None, + yclick=None, + yref=None, + yshift=None, + **kwargs, + ): + """ + Construct a new Annotation object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Annotation` + align + 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. + arrowcolor + Sets the color of the annotation arrow. + arrowhead + Sets the end annotation arrow head style. + arrowside + Sets the annotation arrow head position. + arrowsize + 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. + arrowwidth + Sets the width (in px) of annotation arrow line. + ax + 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`. + axref + 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. + ay + 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`. + ayref + 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. + bgcolor + Sets the background color of the annotation. + bordercolor + Sets the color of the border enclosing the annotation + `text`. + borderpad + Sets the padding (in px) between the `text` and the + enclosing border. + borderwidth + Sets the width (in px) of the border enclosing the + annotation `text`. + captureevents + 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`. + clicktoshow + 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`. + font + Sets the annotation text font. + height + Sets an explicit height for the text box. null + (default) lets the text set the box height. Taller text + will be clipped. + hoverlabel + :class:`plotly.graph_objects.layout.annotation.Hoverlab + el` instance or dict with compatible properties + hovertext + Sets text to appear when hovering over this annotation. + If omitted or blank, no hover label will appear. + name + 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. + opacity + Sets the opacity of the annotation (text + arrow). + showarrow + 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. + standoff + 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. + startarrowhead + Sets the start annotation arrow head style. + startarrowsize + 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. + startstandoff + 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. + templateitemname + 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`. + text + Sets the text associated with this annotation. Plotly + uses a subset of HTML tags to do things like newline + (
), bold (), italics (), hyperlinks + (). Tags , , , , + are also supported. + textangle + Sets the angle at which the `text` is drawn with + respect to the horizontal. + valign + 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. + visible + Determines whether or not this annotation is visible. + width + 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. + x + 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. + xanchor + 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. + xclick + Toggle this annotation when clicking a data point whose + `x` value is `xclick` rather than the annotation's `x` + value. + xref + 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. + xshift + Shifts the position of the whole annotation and arrow + to the right (positive) or left (negative) by this many + pixels. + y + 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. + yanchor + 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. + yclick + Toggle this annotation when clicking a data point whose + `y` value is `yclick` rather than the annotation's `y` + value. + yref + 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. + yshift + Shifts the position of the whole annotation and arrow + up (positive) or down (negative) by this many pixels. + + Returns + ------- + Annotation + """ + super().__init__("annotations") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Annotation +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Annotation`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("arrowcolor", arg, arrowcolor) + self._set_property("arrowhead", arg, arrowhead) + self._set_property("arrowside", arg, arrowside) + self._set_property("arrowsize", arg, arrowsize) + self._set_property("arrowwidth", arg, arrowwidth) + self._set_property("ax", arg, ax) + self._set_property("axref", arg, axref) + self._set_property("ay", arg, ay) + self._set_property("ayref", arg, ayref) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderpad", arg, borderpad) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("captureevents", arg, captureevents) + self._set_property("clicktoshow", arg, clicktoshow) + self._set_property("font", arg, font) + self._set_property("height", arg, height) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertext", arg, hovertext) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("showarrow", arg, showarrow) + self._set_property("standoff", arg, standoff) + self._set_property("startarrowhead", arg, startarrowhead) + self._set_property("startarrowsize", arg, startarrowsize) + self._set_property("startstandoff", arg, startstandoff) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("valign", arg, valign) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xclick", arg, xclick) + self._set_property("xref", arg, xref) + self._set_property("xshift", arg, xshift) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("yclick", arg, yclick) + self._set_property("yref", arg, yref) + self._set_property("yshift", arg, yshift) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_coloraxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_coloraxis.py new file mode 100644 index 0000000..4606c7a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_coloraxis.py @@ -0,0 +1,396 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Coloraxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.coloraxis" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "colorbar", + "colorscale", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.coloraxis.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.layout.coloraxis.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + colorbar + :class:`plotly.graph_objects.layout.coloraxis.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + colorbar=None, + colorscale=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Coloraxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Coloraxis` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + colorbar + :class:`plotly.graph_objects.layout.coloraxis.ColorBar` + instance or dict with compatible properties + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. + + Returns + ------- + Coloraxis + """ + super().__init__("coloraxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Coloraxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Coloraxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_colorscale.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_colorscale.py new file mode 100644 index 0000000..b65ed87 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_colorscale.py @@ -0,0 +1,214 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Colorscale(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.colorscale" + _valid_props = {"diverging", "sequential", "sequentialminus"} + + @property + def diverging(self): + """ + Sets the default diverging colorscale. Note that + `autocolorscale` must be true for this attribute to work. + + The 'diverging' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["diverging"] + + @diverging.setter + def diverging(self, val): + self["diverging"] = val + + @property + def sequential(self): + """ + Sets the default sequential colorscale for positive values. + Note that `autocolorscale` must be true for this attribute to + work. + + The 'sequential' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["sequential"] + + @sequential.setter + def sequential(self, val): + self["sequential"] = val + + @property + def sequentialminus(self): + """ + Sets the default sequential colorscale for negative values. + Note that `autocolorscale` must be true for this attribute to + work. + + The 'sequentialminus' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["sequentialminus"] + + @sequentialminus.setter + def sequentialminus(self, val): + self["sequentialminus"] = val + + @property + def _prop_descriptions(self): + return """\ + diverging + Sets the default diverging colorscale. Note that + `autocolorscale` must be true for this attribute to + work. + sequential + Sets the default sequential colorscale for positive + values. Note that `autocolorscale` must be true for + this attribute to work. + sequentialminus + Sets the default sequential colorscale for negative + values. Note that `autocolorscale` must be true for + this attribute to work. + """ + + def __init__( + self, arg=None, diverging=None, sequential=None, sequentialminus=None, **kwargs + ): + """ + Construct a new Colorscale object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Colorscale` + diverging + Sets the default diverging colorscale. Note that + `autocolorscale` must be true for this attribute to + work. + sequential + Sets the default sequential colorscale for positive + values. Note that `autocolorscale` must be true for + this attribute to work. + sequentialminus + Sets the default sequential colorscale for negative + values. Note that `autocolorscale` must be true for + this attribute to work. + + Returns + ------- + Colorscale + """ + super().__init__("colorscale") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Colorscale +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Colorscale`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("diverging", arg, diverging) + self._set_property("sequential", arg, sequential) + self._set_property("sequentialminus", arg, sequentialminus) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_font.py new file mode 100644 index 0000000..c691e70 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the global font. Note that fonts used in traces and other + layout components inherit from the global font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_geo.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_geo.py new file mode 100644 index 0000000..40fba3a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_geo.py @@ -0,0 +1,968 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Geo(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.geo" + _valid_props = { + "bgcolor", + "center", + "coastlinecolor", + "coastlinewidth", + "countrycolor", + "countrywidth", + "domain", + "fitbounds", + "framecolor", + "framewidth", + "lakecolor", + "landcolor", + "lataxis", + "lonaxis", + "oceancolor", + "projection", + "resolution", + "rivercolor", + "riverwidth", + "scope", + "showcoastlines", + "showcountries", + "showframe", + "showlakes", + "showland", + "showocean", + "showrivers", + "showsubunits", + "subunitcolor", + "subunitwidth", + "uirevision", + "visible", + } + + @property + def bgcolor(self): + """ + Set the background color of the map + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def center(self): + """ + The 'center' property is an instance of Center + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.geo.Center` + - A dict of string/value properties that will be passed + to the Center constructor + + Returns + ------- + plotly.graph_objs.layout.geo.Center + """ + return self["center"] + + @center.setter + def center(self, val): + self["center"] = val + + @property + def coastlinecolor(self): + """ + Sets the coastline color. + + The 'coastlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["coastlinecolor"] + + @coastlinecolor.setter + def coastlinecolor(self, val): + self["coastlinecolor"] = val + + @property + def coastlinewidth(self): + """ + Sets the coastline stroke width (in px). + + The 'coastlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["coastlinewidth"] + + @coastlinewidth.setter + def coastlinewidth(self, val): + self["coastlinewidth"] = val + + @property + def countrycolor(self): + """ + Sets line color of the country boundaries. + + The 'countrycolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["countrycolor"] + + @countrycolor.setter + def countrycolor(self, val): + self["countrycolor"] = val + + @property + def countrywidth(self): + """ + Sets line width (in px) of the country boundaries. + + The 'countrywidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["countrywidth"] + + @countrywidth.setter + def countrywidth(self, val): + self["countrywidth"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.geo.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.geo.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def fitbounds(self): + """ + 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. + + The 'fitbounds' property is an enumeration that may be specified as: + - One of the following enumeration values: + [False, 'locations', 'geojson'] + + Returns + ------- + Any + """ + return self["fitbounds"] + + @fitbounds.setter + def fitbounds(self, val): + self["fitbounds"] = val + + @property + def framecolor(self): + """ + Sets the color the frame. + + The 'framecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["framecolor"] + + @framecolor.setter + def framecolor(self, val): + self["framecolor"] = val + + @property + def framewidth(self): + """ + Sets the stroke width (in px) of the frame. + + The 'framewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["framewidth"] + + @framewidth.setter + def framewidth(self, val): + self["framewidth"] = val + + @property + def lakecolor(self): + """ + Sets the color of the lakes. + + The 'lakecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["lakecolor"] + + @lakecolor.setter + def lakecolor(self, val): + self["lakecolor"] = val + + @property + def landcolor(self): + """ + Sets the land mass color. + + The 'landcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["landcolor"] + + @landcolor.setter + def landcolor(self, val): + self["landcolor"] = val + + @property + def lataxis(self): + """ + The 'lataxis' property is an instance of Lataxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.geo.Lataxis` + - A dict of string/value properties that will be passed + to the Lataxis constructor + + Returns + ------- + plotly.graph_objs.layout.geo.Lataxis + """ + return self["lataxis"] + + @lataxis.setter + def lataxis(self, val): + self["lataxis"] = val + + @property + def lonaxis(self): + """ + The 'lonaxis' property is an instance of Lonaxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.geo.Lonaxis` + - A dict of string/value properties that will be passed + to the Lonaxis constructor + + Returns + ------- + plotly.graph_objs.layout.geo.Lonaxis + """ + return self["lonaxis"] + + @lonaxis.setter + def lonaxis(self, val): + self["lonaxis"] = val + + @property + def oceancolor(self): + """ + Sets the ocean color + + The 'oceancolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["oceancolor"] + + @oceancolor.setter + def oceancolor(self, val): + self["oceancolor"] = val + + @property + def projection(self): + """ + The 'projection' property is an instance of Projection + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.geo.Projection` + - A dict of string/value properties that will be passed + to the Projection constructor + + Returns + ------- + plotly.graph_objs.layout.geo.Projection + """ + return self["projection"] + + @projection.setter + def projection(self, val): + self["projection"] = val + + @property + def resolution(self): + """ + 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. + + The 'resolution' property is an enumeration that may be specified as: + - One of the following enumeration values: + [110, 50] + + Returns + ------- + Any + """ + return self["resolution"] + + @resolution.setter + def resolution(self, val): + self["resolution"] = val + + @property + def rivercolor(self): + """ + Sets color of the rivers. + + The 'rivercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["rivercolor"] + + @rivercolor.setter + def rivercolor(self, val): + self["rivercolor"] = val + + @property + def riverwidth(self): + """ + Sets the stroke width (in px) of the rivers. + + The 'riverwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["riverwidth"] + + @riverwidth.setter + def riverwidth(self, val): + self["riverwidth"] = val + + @property + def scope(self): + """ + Set the scope of the map. + + The 'scope' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['africa', 'asia', 'europe', 'north america', 'south + america', 'usa', 'world'] + + Returns + ------- + Any + """ + return self["scope"] + + @scope.setter + def scope(self, val): + self["scope"] = val + + @property + def showcoastlines(self): + """ + Sets whether or not the coastlines are drawn. + + The 'showcoastlines' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showcoastlines"] + + @showcoastlines.setter + def showcoastlines(self, val): + self["showcoastlines"] = val + + @property + def showcountries(self): + """ + Sets whether or not country boundaries are drawn. + + The 'showcountries' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showcountries"] + + @showcountries.setter + def showcountries(self, val): + self["showcountries"] = val + + @property + def showframe(self): + """ + Sets whether or not a frame is drawn around the map. + + The 'showframe' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showframe"] + + @showframe.setter + def showframe(self, val): + self["showframe"] = val + + @property + def showlakes(self): + """ + Sets whether or not lakes are drawn. + + The 'showlakes' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlakes"] + + @showlakes.setter + def showlakes(self, val): + self["showlakes"] = val + + @property + def showland(self): + """ + Sets whether or not land masses are filled in color. + + The 'showland' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showland"] + + @showland.setter + def showland(self, val): + self["showland"] = val + + @property + def showocean(self): + """ + Sets whether or not oceans are filled in color. + + The 'showocean' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showocean"] + + @showocean.setter + def showocean(self, val): + self["showocean"] = val + + @property + def showrivers(self): + """ + Sets whether or not rivers are drawn. + + The 'showrivers' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showrivers"] + + @showrivers.setter + def showrivers(self, val): + self["showrivers"] = val + + @property + def showsubunits(self): + """ + Sets whether or not boundaries of subunits within countries + (e.g. states, provinces) are drawn. + + The 'showsubunits' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showsubunits"] + + @showsubunits.setter + def showsubunits(self, val): + self["showsubunits"] = val + + @property + def subunitcolor(self): + """ + Sets the color of the subunits boundaries. + + The 'subunitcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["subunitcolor"] + + @subunitcolor.setter + def subunitcolor(self, val): + self["subunitcolor"] = val + + @property + def subunitwidth(self): + """ + Sets the stroke width (in px) of the subunits boundaries. + + The 'subunitwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["subunitwidth"] + + @subunitwidth.setter + def subunitwidth(self, val): + self["subunitwidth"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in the view + (projection and center). Defaults to `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + Sets the default visibility of the base layers. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Set the background color of the map + center + :class:`plotly.graph_objects.layout.geo.Center` + instance or dict with compatible properties + coastlinecolor + Sets the coastline color. + coastlinewidth + Sets the coastline stroke width (in px). + countrycolor + Sets line color of the country boundaries. + countrywidth + Sets line width (in px) of the country boundaries. + domain + :class:`plotly.graph_objects.layout.geo.Domain` + instance or dict with compatible properties + fitbounds + 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. + framecolor + Sets the color the frame. + framewidth + Sets the stroke width (in px) of the frame. + lakecolor + Sets the color of the lakes. + landcolor + Sets the land mass color. + lataxis + :class:`plotly.graph_objects.layout.geo.Lataxis` + instance or dict with compatible properties + lonaxis + :class:`plotly.graph_objects.layout.geo.Lonaxis` + instance or dict with compatible properties + oceancolor + Sets the ocean color + projection + :class:`plotly.graph_objects.layout.geo.Projection` + instance or dict with compatible properties + resolution + 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. + rivercolor + Sets color of the rivers. + riverwidth + Sets the stroke width (in px) of the rivers. + scope + Set the scope of the map. + showcoastlines + Sets whether or not the coastlines are drawn. + showcountries + Sets whether or not country boundaries are drawn. + showframe + Sets whether or not a frame is drawn around the map. + showlakes + Sets whether or not lakes are drawn. + showland + Sets whether or not land masses are filled in color. + showocean + Sets whether or not oceans are filled in color. + showrivers + Sets whether or not rivers are drawn. + showsubunits + Sets whether or not boundaries of subunits within + countries (e.g. states, provinces) are drawn. + subunitcolor + Sets the color of the subunits boundaries. + subunitwidth + Sets the stroke width (in px) of the subunits + boundaries. + uirevision + Controls persistence of user-driven changes in the view + (projection and center). Defaults to + `layout.uirevision`. + visible + Sets the default visibility of the base layers. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + center=None, + coastlinecolor=None, + coastlinewidth=None, + countrycolor=None, + countrywidth=None, + domain=None, + fitbounds=None, + framecolor=None, + framewidth=None, + lakecolor=None, + landcolor=None, + lataxis=None, + lonaxis=None, + oceancolor=None, + projection=None, + resolution=None, + rivercolor=None, + riverwidth=None, + scope=None, + showcoastlines=None, + showcountries=None, + showframe=None, + showlakes=None, + showland=None, + showocean=None, + showrivers=None, + showsubunits=None, + subunitcolor=None, + subunitwidth=None, + uirevision=None, + visible=None, + **kwargs, + ): + """ + Construct a new Geo object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Geo` + bgcolor + Set the background color of the map + center + :class:`plotly.graph_objects.layout.geo.Center` + instance or dict with compatible properties + coastlinecolor + Sets the coastline color. + coastlinewidth + Sets the coastline stroke width (in px). + countrycolor + Sets line color of the country boundaries. + countrywidth + Sets line width (in px) of the country boundaries. + domain + :class:`plotly.graph_objects.layout.geo.Domain` + instance or dict with compatible properties + fitbounds + 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. + framecolor + Sets the color the frame. + framewidth + Sets the stroke width (in px) of the frame. + lakecolor + Sets the color of the lakes. + landcolor + Sets the land mass color. + lataxis + :class:`plotly.graph_objects.layout.geo.Lataxis` + instance or dict with compatible properties + lonaxis + :class:`plotly.graph_objects.layout.geo.Lonaxis` + instance or dict with compatible properties + oceancolor + Sets the ocean color + projection + :class:`plotly.graph_objects.layout.geo.Projection` + instance or dict with compatible properties + resolution + 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. + rivercolor + Sets color of the rivers. + riverwidth + Sets the stroke width (in px) of the rivers. + scope + Set the scope of the map. + showcoastlines + Sets whether or not the coastlines are drawn. + showcountries + Sets whether or not country boundaries are drawn. + showframe + Sets whether or not a frame is drawn around the map. + showlakes + Sets whether or not lakes are drawn. + showland + Sets whether or not land masses are filled in color. + showocean + Sets whether or not oceans are filled in color. + showrivers + Sets whether or not rivers are drawn. + showsubunits + Sets whether or not boundaries of subunits within + countries (e.g. states, provinces) are drawn. + subunitcolor + Sets the color of the subunits boundaries. + subunitwidth + Sets the stroke width (in px) of the subunits + boundaries. + uirevision + Controls persistence of user-driven changes in the view + (projection and center). Defaults to + `layout.uirevision`. + visible + Sets the default visibility of the base layers. + + Returns + ------- + Geo + """ + super().__init__("geo") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Geo +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Geo`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("center", arg, center) + self._set_property("coastlinecolor", arg, coastlinecolor) + self._set_property("coastlinewidth", arg, coastlinewidth) + self._set_property("countrycolor", arg, countrycolor) + self._set_property("countrywidth", arg, countrywidth) + self._set_property("domain", arg, domain) + self._set_property("fitbounds", arg, fitbounds) + self._set_property("framecolor", arg, framecolor) + self._set_property("framewidth", arg, framewidth) + self._set_property("lakecolor", arg, lakecolor) + self._set_property("landcolor", arg, landcolor) + self._set_property("lataxis", arg, lataxis) + self._set_property("lonaxis", arg, lonaxis) + self._set_property("oceancolor", arg, oceancolor) + self._set_property("projection", arg, projection) + self._set_property("resolution", arg, resolution) + self._set_property("rivercolor", arg, rivercolor) + self._set_property("riverwidth", arg, riverwidth) + self._set_property("scope", arg, scope) + self._set_property("showcoastlines", arg, showcoastlines) + self._set_property("showcountries", arg, showcountries) + self._set_property("showframe", arg, showframe) + self._set_property("showlakes", arg, showlakes) + self._set_property("showland", arg, showland) + self._set_property("showocean", arg, showocean) + self._set_property("showrivers", arg, showrivers) + self._set_property("showsubunits", arg, showsubunits) + self._set_property("subunitcolor", arg, subunitcolor) + self._set_property("subunitwidth", arg, subunitwidth) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_grid.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_grid.py new file mode 100644 index 0000000..8788027 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_grid.py @@ -0,0 +1,511 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Grid(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.grid" + _valid_props = { + "columns", + "domain", + "pattern", + "roworder", + "rows", + "subplots", + "xaxes", + "xgap", + "xside", + "yaxes", + "ygap", + "yside", + } + + @property + def columns(self): + """ + 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. + + The 'columns' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["columns"] + + @columns.setter + def columns(self, val): + self["columns"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.grid.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.grid.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def pattern(self): + """ + 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`. + + The 'pattern' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['independent', 'coupled'] + + Returns + ------- + Any + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def roworder(self): + """ + Is the first row the top or the bottom? Note that columns are + always enumerated from left to right. + + The 'roworder' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top to bottom', 'bottom to top'] + + Returns + ------- + Any + """ + return self["roworder"] + + @roworder.setter + def roworder(self, val): + self["roworder"] = val + + @property + def rows(self): + """ + 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. + + The 'rows' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["rows"] + + @rows.setter + def rows(self, val): + self["rows"] = val + + @property + def subplots(self): + """ + 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. + + The 'subplots' property is an info array that may be specified as: + * a 2D list where: + The 'subplots[i][j]' property is an enumeration that may be specified as: + - One of the following enumeration values: + [''] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?$'] + + Returns + ------- + list + """ + return self["subplots"] + + @subplots.setter + def subplots(self, val): + self["subplots"] = val + + @property + def xaxes(self): + """ + 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. + + The 'xaxes' property is an info array that may be specified as: + * a list of elements where: + The 'xaxes[i]' property is an enumeration that may be specified as: + - One of the following enumeration values: + [''] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + list + """ + return self["xaxes"] + + @xaxes.setter + def xaxes(self, val): + self["xaxes"] = val + + @property + def xgap(self): + """ + 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. + + The 'xgap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["xgap"] + + @xgap.setter + def xgap(self, val): + self["xgap"] = val + + @property + def xside(self): + """ + 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. + + The 'xside' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['bottom', 'bottom plot', 'top plot', 'top'] + + Returns + ------- + Any + """ + return self["xside"] + + @xside.setter + def xside(self, val): + self["xside"] = val + + @property + def yaxes(self): + """ + 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. + + The 'yaxes' property is an info array that may be specified as: + * a list of elements where: + The 'yaxes[i]' property is an enumeration that may be specified as: + - One of the following enumeration values: + [''] + - A string that matches one of the following regular expressions: + ['^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + list + """ + return self["yaxes"] + + @yaxes.setter + def yaxes(self, val): + self["yaxes"] = val + + @property + def ygap(self): + """ + 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. + + The 'ygap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ygap"] + + @ygap.setter + def ygap(self, val): + self["ygap"] = val + + @property + def yside(self): + """ + 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. + + The 'yside' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'left plot', 'right plot', 'right'] + + Returns + ------- + Any + """ + return self["yside"] + + @yside.setter + def yside(self, val): + self["yside"] = val + + @property + def _prop_descriptions(self): + return """\ + columns + 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. + domain + :class:`plotly.graph_objects.layout.grid.Domain` + instance or dict with compatible properties + pattern + 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`. + roworder + Is the first row the top or the bottom? Note that + columns are always enumerated from left to right. + rows + 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. + subplots + 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. + xaxes + 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. + xgap + 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. + xside + 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. + yaxes + 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. + ygap + 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. + yside + 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. + """ + + def __init__( + self, + arg=None, + columns=None, + domain=None, + pattern=None, + roworder=None, + rows=None, + subplots=None, + xaxes=None, + xgap=None, + xside=None, + yaxes=None, + ygap=None, + yside=None, + **kwargs, + ): + """ + Construct a new Grid object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Grid` + columns + 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. + domain + :class:`plotly.graph_objects.layout.grid.Domain` + instance or dict with compatible properties + pattern + 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`. + roworder + Is the first row the top or the bottom? Note that + columns are always enumerated from left to right. + rows + 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. + subplots + 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. + xaxes + 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. + xgap + 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. + xside + 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. + yaxes + 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. + ygap + 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. + yside + 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. + + Returns + ------- + Grid + """ + super().__init__("grid") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Grid +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Grid`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("columns", arg, columns) + self._set_property("domain", arg, domain) + self._set_property("pattern", arg, pattern) + self._set_property("roworder", arg, roworder) + self._set_property("rows", arg, rows) + self._set_property("subplots", arg, subplots) + self._set_property("xaxes", arg, xaxes) + self._set_property("xgap", arg, xgap) + self._set_property("xside", arg, xside) + self._set_property("yaxes", arg, yaxes) + self._set_property("ygap", arg, ygap) + self._set_property("yside", arg, yside) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_hoverlabel.py new file mode 100644 index 0000000..867d356 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_hoverlabel.py @@ -0,0 +1,254 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.hoverlabel" + _valid_props = { + "align", + "bgcolor", + "bordercolor", + "font", + "grouptitlefont", + "namelength", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + + Returns + ------- + Any + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def bgcolor(self): + """ + Sets the background color of all hover labels on graph + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the border color of all hover labels on graph. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def font(self): + """ + Sets the default hover label font used by all traces on the + graph. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def grouptitlefont(self): + """ + Sets the font for group titles in hover (unified modes). + Defaults to `hoverlabel.font`. + + The 'grouptitlefont' property is an instance of Grouptitlefont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.hoverlabel.Grouptitlefont` + - A dict of string/value properties that will be passed + to the Grouptitlefont constructor + + Returns + ------- + plotly.graph_objs.layout.hoverlabel.Grouptitlefont + """ + return self["grouptitlefont"] + + @grouptitlefont.setter + def grouptitlefont(self, val): + self["grouptitlefont"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + + Returns + ------- + int + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + bgcolor + Sets the background color of all hover labels on graph + bordercolor + Sets the border color of all hover labels on graph. + font + Sets the default hover label font used by all traces on + the graph. + grouptitlefont + Sets the font for group titles in hover (unified + modes). Defaults to `hoverlabel.font`. + namelength + 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. + """ + + def __init__( + self, + arg=None, + align=None, + bgcolor=None, + bordercolor=None, + font=None, + grouptitlefont=None, + namelength=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Hoverlabel` + align + 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 + bgcolor + Sets the background color of all hover labels on graph + bordercolor + Sets the border color of all hover labels on graph. + font + Sets the default hover label font used by all traces on + the graph. + grouptitlefont + Sets the font for group titles in hover (unified + modes). Defaults to `hoverlabel.font`. + namelength + 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. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("font", arg, font) + self._set_property("grouptitlefont", arg, grouptitlefont) + self._set_property("namelength", arg, namelength) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_image.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_image.py new file mode 100644 index 0000000..33865e4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_image.py @@ -0,0 +1,608 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Image(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.image" + _valid_props = { + "layer", + "name", + "opacity", + "sizex", + "sizey", + "sizing", + "source", + "templateitemname", + "visible", + "x", + "xanchor", + "xref", + "y", + "yanchor", + "yref", + } + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['below', 'above'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the image. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def sizex(self): + """ + 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. + + The 'sizex' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizex"] + + @sizex.setter + def sizex(self, val): + self["sizex"] = val + + @property + def sizey(self): + """ + 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. + + The 'sizey' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizey"] + + @sizey.setter + def sizey(self, val): + self["sizey"] = val + + @property + def sizing(self): + """ + Specifies which dimension of the image to constrain. + + The 'sizing' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fill', 'contain', 'stretch'] + + Returns + ------- + Any + """ + return self["sizing"] + + @sizing.setter + def sizing(self, val): + self["sizing"] = val + + @property + def source(self): + """ + 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. + + The 'source' property is an image URI that may be specified as: + - A remote image URI string + (e.g. 'http://www.somewhere.com/image.png') + - A data URI image string + (e.g. 'data:image/png;base64,iVBORw0KGgoAAAANSU') + - A PIL.Image.Image object which will be immediately converted + to a data URI image string + See http://pillow.readthedocs.io/en/latest/reference/Image.html + + Returns + ------- + str + """ + return self["source"] + + @source.setter + def source(self, val): + self["source"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def visible(self): + """ + Determines whether or not this image is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + 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 + + The 'x' property accepts values of any type + + Returns + ------- + Any + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + Sets the anchor for the x position + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xref(self): + """ + 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. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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 + + The 'y' property accepts values of any type + + Returns + ------- + Any + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + Sets the anchor for the y position. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def yref(self): + """ + 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. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + layer + 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. + name + 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. + opacity + Sets the opacity of the image. + sizex + 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. + sizey + 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. + sizing + Specifies which dimension of the image to constrain. + source + 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. + templateitemname + 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`. + visible + Determines whether or not this image is visible. + x + 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 + xanchor + Sets the anchor for the x position + xref + 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. + y + 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 + yanchor + Sets the anchor for the y position. + yref + 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. + """ + + def __init__( + self, + arg=None, + layer=None, + name=None, + opacity=None, + sizex=None, + sizey=None, + sizing=None, + source=None, + templateitemname=None, + visible=None, + x=None, + xanchor=None, + xref=None, + y=None, + yanchor=None, + yref=None, + **kwargs, + ): + """ + Construct a new Image object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Image` + layer + 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. + name + 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. + opacity + Sets the opacity of the image. + sizex + 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. + sizey + 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. + sizing + Specifies which dimension of the image to constrain. + source + 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. + templateitemname + 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`. + visible + Determines whether or not this image is visible. + x + 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 + xanchor + Sets the anchor for the x position + xref + 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. + y + 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 + yanchor + Sets the anchor for the y position. + yref + 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. + + Returns + ------- + Image + """ + super().__init__("images") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Image +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Image`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("layer", arg, layer) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("sizex", arg, sizex) + self._set_property("sizey", arg, sizey) + self._set_property("sizing", arg, sizing) + self._set_property("source", arg, source) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_legend.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_legend.py new file mode 100644 index 0000000..7df6dad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_legend.py @@ -0,0 +1,916 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Legend(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.legend" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "entrywidth", + "entrywidthmode", + "font", + "groupclick", + "grouptitlefont", + "indentation", + "itemclick", + "itemdoubleclick", + "itemsizing", + "itemwidth", + "orientation", + "title", + "tracegroupgap", + "traceorder", + "uirevision", + "valign", + "visible", + "x", + "xanchor", + "xref", + "y", + "yanchor", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the legend background color. Defaults to + `layout.paper_bgcolor`. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the legend. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the legend. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def entrywidth(self): + """ + 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". + + The 'entrywidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["entrywidth"] + + @entrywidth.setter + def entrywidth(self, val): + self["entrywidth"] = val + + @property + def entrywidthmode(self): + """ + Determines what entrywidth means. + + The 'entrywidthmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["entrywidthmode"] + + @entrywidthmode.setter + def entrywidthmode(self, val): + self["entrywidthmode"] = val + + @property + def font(self): + """ + Sets the font used to text the legend items. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.legend.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.legend.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def groupclick(self): + """ + 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. + + The 'groupclick' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['toggleitem', 'togglegroup'] + + Returns + ------- + Any + """ + return self["groupclick"] + + @groupclick.setter + def groupclick(self, val): + self["groupclick"] = val + + @property + def grouptitlefont(self): + """ + Sets the font for group titles in legend. Defaults to + `legend.font` with its size increased about 10%. + + The 'grouptitlefont' property is an instance of Grouptitlefont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.legend.Grouptitlefont` + - A dict of string/value properties that will be passed + to the Grouptitlefont constructor + + Returns + ------- + plotly.graph_objs.layout.legend.Grouptitlefont + """ + return self["grouptitlefont"] + + @grouptitlefont.setter + def grouptitlefont(self, val): + self["grouptitlefont"] = val + + @property + def indentation(self): + """ + Sets the indentation (in px) of the legend entries. + + The 'indentation' property is a number and may be specified as: + - An int or float in the interval [-15, inf] + + Returns + ------- + int|float + """ + return self["indentation"] + + @indentation.setter + def indentation(self, val): + self["indentation"] = val + + @property + def itemclick(self): + """ + 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. + + The 'itemclick' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['toggle', 'toggleothers', False] + + Returns + ------- + Any + """ + return self["itemclick"] + + @itemclick.setter + def itemclick(self, val): + self["itemclick"] = val + + @property + def itemdoubleclick(self): + """ + 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. + + The 'itemdoubleclick' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['toggle', 'toggleothers', False] + + Returns + ------- + Any + """ + return self["itemdoubleclick"] + + @itemdoubleclick.setter + def itemdoubleclick(self, val): + self["itemdoubleclick"] = val + + @property + def itemsizing(self): + """ + Determines if the legend items symbols scale with their + corresponding "trace" attributes or remain "constant" + independent of the symbol size on the graph. + + The 'itemsizing' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['trace', 'constant'] + + Returns + ------- + Any + """ + return self["itemsizing"] + + @itemsizing.setter + def itemsizing(self, val): + self["itemsizing"] = val + + @property + def itemwidth(self): + """ + Sets the width (in px) of the legend item symbols (the part + other than the title.text). + + The 'itemwidth' property is a number and may be specified as: + - An int or float in the interval [30, inf] + + Returns + ------- + int|float + """ + return self["itemwidth"] + + @itemwidth.setter + def itemwidth(self, val): + self["itemwidth"] = val + + @property + def orientation(self): + """ + Sets the orientation of the legend. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.legend.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.legend.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def tracegroupgap(self): + """ + Sets the amount of vertical space (in px) between legend + groups. + + The 'tracegroupgap' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tracegroupgap"] + + @tracegroupgap.setter + def tracegroupgap(self, val): + self["tracegroupgap"] = val + + @property + def traceorder(self): + """ + 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". + + The 'traceorder' property is a flaglist and may be specified + as a string containing: + - Any combination of ['reversed', 'grouped'] joined with '+' characters + (e.g. 'reversed+grouped') + OR exactly one of ['normal'] (e.g. 'normal') + + Returns + ------- + Any + """ + return self["traceorder"] + + @traceorder.setter + def traceorder(self, val): + self["traceorder"] = val + + @property + def uirevision(self): + """ + Controls persistence of legend-driven changes in trace and pie + label visibility. Defaults to `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def valign(self): + """ + Sets the vertical alignment of the symbols with respect to + their associated text. + + The 'valign' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["valign"] + + @valign.setter + def valign(self, val): + self["valign"] = val + + @property + def visible(self): + """ + Determines whether or not this legend is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the legend background color. Defaults to + `layout.paper_bgcolor`. + bordercolor + Sets the color of the border enclosing the legend. + borderwidth + Sets the width (in px) of the border enclosing the + legend. + entrywidth + 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". + entrywidthmode + Determines what entrywidth means. + font + Sets the font used to text the legend items. + groupclick + 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. + grouptitlefont + Sets the font for group titles in legend. Defaults to + `legend.font` with its size increased about 10%. + indentation + Sets the indentation (in px) of the legend entries. + itemclick + 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. + itemdoubleclick + 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. + itemsizing + Determines if the legend items symbols scale with their + corresponding "trace" attributes or remain "constant" + independent of the symbol size on the graph. + itemwidth + Sets the width (in px) of the legend item symbols (the + part other than the title.text). + orientation + Sets the orientation of the legend. + title + :class:`plotly.graph_objects.layout.legend.Title` + instance or dict with compatible properties + tracegroupgap + Sets the amount of vertical space (in px) between + legend groups. + traceorder + 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". + uirevision + Controls persistence of legend-driven changes in trace + and pie label visibility. Defaults to + `layout.uirevision`. + valign + Sets the vertical alignment of the symbols with respect + to their associated text. + visible + Determines whether or not this legend is visible. + x + 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". + xanchor + 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. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + entrywidth=None, + entrywidthmode=None, + font=None, + groupclick=None, + grouptitlefont=None, + indentation=None, + itemclick=None, + itemdoubleclick=None, + itemsizing=None, + itemwidth=None, + orientation=None, + title=None, + tracegroupgap=None, + traceorder=None, + uirevision=None, + valign=None, + visible=None, + x=None, + xanchor=None, + xref=None, + y=None, + yanchor=None, + yref=None, + **kwargs, + ): + """ + Construct a new Legend object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Legend` + bgcolor + Sets the legend background color. Defaults to + `layout.paper_bgcolor`. + bordercolor + Sets the color of the border enclosing the legend. + borderwidth + Sets the width (in px) of the border enclosing the + legend. + entrywidth + 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". + entrywidthmode + Determines what entrywidth means. + font + Sets the font used to text the legend items. + groupclick + 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. + grouptitlefont + Sets the font for group titles in legend. Defaults to + `legend.font` with its size increased about 10%. + indentation + Sets the indentation (in px) of the legend entries. + itemclick + 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. + itemdoubleclick + 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. + itemsizing + Determines if the legend items symbols scale with their + corresponding "trace" attributes or remain "constant" + independent of the symbol size on the graph. + itemwidth + Sets the width (in px) of the legend item symbols (the + part other than the title.text). + orientation + Sets the orientation of the legend. + title + :class:`plotly.graph_objects.layout.legend.Title` + instance or dict with compatible properties + tracegroupgap + Sets the amount of vertical space (in px) between + legend groups. + traceorder + 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". + uirevision + Controls persistence of legend-driven changes in trace + and pie label visibility. Defaults to + `layout.uirevision`. + valign + Sets the vertical alignment of the symbols with respect + to their associated text. + visible + Determines whether or not this legend is visible. + x + 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". + xanchor + 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. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + Legend + """ + super().__init__("legend") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Legend +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Legend`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("entrywidth", arg, entrywidth) + self._set_property("entrywidthmode", arg, entrywidthmode) + self._set_property("font", arg, font) + self._set_property("groupclick", arg, groupclick) + self._set_property("grouptitlefont", arg, grouptitlefont) + self._set_property("indentation", arg, indentation) + self._set_property("itemclick", arg, itemclick) + self._set_property("itemdoubleclick", arg, itemdoubleclick) + self._set_property("itemsizing", arg, itemsizing) + self._set_property("itemwidth", arg, itemwidth) + self._set_property("orientation", arg, orientation) + self._set_property("title", arg, title) + self._set_property("tracegroupgap", arg, tracegroupgap) + self._set_property("traceorder", arg, traceorder) + self._set_property("uirevision", arg, uirevision) + self._set_property("valign", arg, valign) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_map.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_map.py new file mode 100644 index 0000000..f54257c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_map.py @@ -0,0 +1,392 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Map(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.map" + _valid_props = { + "bearing", + "bounds", + "center", + "domain", + "layerdefaults", + "layers", + "pitch", + "style", + "uirevision", + "zoom", + } + + @property + def bearing(self): + """ + Sets the bearing angle of the map in degrees counter-clockwise + from North (map.bearing). + + The 'bearing' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["bearing"] + + @bearing.setter + def bearing(self, val): + self["bearing"] = val + + @property + def bounds(self): + """ + The 'bounds' property is an instance of Bounds + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.Bounds` + - A dict of string/value properties that will be passed + to the Bounds constructor + + Returns + ------- + plotly.graph_objs.layout.map.Bounds + """ + return self["bounds"] + + @bounds.setter + def bounds(self, val): + self["bounds"] = val + + @property + def center(self): + """ + The 'center' property is an instance of Center + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.Center` + - A dict of string/value properties that will be passed + to the Center constructor + + Returns + ------- + plotly.graph_objs.layout.map.Center + """ + return self["center"] + + @center.setter + def center(self, val): + self["center"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.map.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def layers(self): + """ + The 'layers' property is a tuple of instances of + Layer that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.map.Layer + - A list or tuple of dicts of string/value properties that + will be passed to the Layer constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.map.Layer] + """ + return self["layers"] + + @layers.setter + def layers(self, val): + self["layers"] = val + + @property + def layerdefaults(self): + """ + When used in a template (as + layout.template.layout.map.layerdefaults), sets the default + property values to use for elements of layout.map.layers + + The 'layerdefaults' property is an instance of Layer + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.Layer` + - A dict of string/value properties that will be passed + to the Layer constructor + + Returns + ------- + plotly.graph_objs.layout.map.Layer + """ + return self["layerdefaults"] + + @layerdefaults.setter + def layerdefaults(self, val): + self["layerdefaults"] = val + + @property + def pitch(self): + """ + Sets the pitch angle of the map (in degrees, where 0 means + perpendicular to the surface of the map) (map.pitch). + + The 'pitch' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["pitch"] + + @pitch.setter + def pitch(self, val): + self["pitch"] = val + + @property + def style(self): + """ + 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. + + The 'style' property accepts values of any type + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in the view: + `center`, `zoom`, `bearing`, `pitch`. Defaults to + `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def zoom(self): + """ + Sets the zoom level of the map (map.zoom). + + The 'zoom' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zoom"] + + @zoom.setter + def zoom(self, val): + self["zoom"] = val + + @property + def _prop_descriptions(self): + return """\ + bearing + Sets the bearing angle of the map in degrees counter- + clockwise from North (map.bearing). + bounds + :class:`plotly.graph_objects.layout.map.Bounds` + instance or dict with compatible properties + center + :class:`plotly.graph_objects.layout.map.Center` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.map.Domain` + instance or dict with compatible properties + layers + A tuple of + :class:`plotly.graph_objects.layout.map.Layer` + instances or dicts with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.map.layerdefaults), sets the + default property values to use for elements of + layout.map.layers + pitch + Sets the pitch angle of the map (in degrees, where 0 + means perpendicular to the surface of the map) + (map.pitch). + style + 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. + uirevision + Controls persistence of user-driven changes in the + view: `center`, `zoom`, `bearing`, `pitch`. Defaults to + `layout.uirevision`. + zoom + Sets the zoom level of the map (map.zoom). + """ + + def __init__( + self, + arg=None, + bearing=None, + bounds=None, + center=None, + domain=None, + layers=None, + layerdefaults=None, + pitch=None, + style=None, + uirevision=None, + zoom=None, + **kwargs, + ): + """ + Construct a new Map object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Map` + bearing + Sets the bearing angle of the map in degrees counter- + clockwise from North (map.bearing). + bounds + :class:`plotly.graph_objects.layout.map.Bounds` + instance or dict with compatible properties + center + :class:`plotly.graph_objects.layout.map.Center` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.map.Domain` + instance or dict with compatible properties + layers + A tuple of + :class:`plotly.graph_objects.layout.map.Layer` + instances or dicts with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.map.layerdefaults), sets the + default property values to use for elements of + layout.map.layers + pitch + Sets the pitch angle of the map (in degrees, where 0 + means perpendicular to the surface of the map) + (map.pitch). + style + 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. + uirevision + Controls persistence of user-driven changes in the + view: `center`, `zoom`, `bearing`, `pitch`. Defaults to + `layout.uirevision`. + zoom + Sets the zoom level of the map (map.zoom). + + Returns + ------- + Map + """ + super().__init__("map") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Map +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Map`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bearing", arg, bearing) + self._set_property("bounds", arg, bounds) + self._set_property("center", arg, center) + self._set_property("domain", arg, domain) + self._set_property("layers", arg, layers) + self._set_property("layerdefaults", arg, layerdefaults) + self._set_property("pitch", arg, pitch) + self._set_property("style", arg, style) + self._set_property("uirevision", arg, uirevision) + self._set_property("zoom", arg, zoom) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_mapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_mapbox.py new file mode 100644 index 0000000..b0f5e4e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_mapbox.py @@ -0,0 +1,452 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Mapbox(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.mapbox" + _valid_props = { + "accesstoken", + "bearing", + "bounds", + "center", + "domain", + "layerdefaults", + "layers", + "pitch", + "style", + "uirevision", + "zoom", + } + + @property + def accesstoken(self): + """ + 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. + + The 'accesstoken' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["accesstoken"] + + @accesstoken.setter + def accesstoken(self, val): + self["accesstoken"] = val + + @property + def bearing(self): + """ + Sets the bearing angle of the map in degrees counter-clockwise + from North (mapbox.bearing). + + The 'bearing' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["bearing"] + + @bearing.setter + def bearing(self, val): + self["bearing"] = val + + @property + def bounds(self): + """ + The 'bounds' property is an instance of Bounds + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.Bounds` + - A dict of string/value properties that will be passed + to the Bounds constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.Bounds + """ + return self["bounds"] + + @bounds.setter + def bounds(self, val): + self["bounds"] = val + + @property + def center(self): + """ + The 'center' property is an instance of Center + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.Center` + - A dict of string/value properties that will be passed + to the Center constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.Center + """ + return self["center"] + + @center.setter + def center(self, val): + self["center"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def layers(self): + """ + The 'layers' property is a tuple of instances of + Layer that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.mapbox.Layer + - A list or tuple of dicts of string/value properties that + will be passed to the Layer constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.mapbox.Layer] + """ + return self["layers"] + + @layers.setter + def layers(self, val): + self["layers"] = val + + @property + def layerdefaults(self): + """ + When used in a template (as + layout.template.layout.mapbox.layerdefaults), sets the default + property values to use for elements of layout.mapbox.layers + + The 'layerdefaults' property is an instance of Layer + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.Layer` + - A dict of string/value properties that will be passed + to the Layer constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.Layer + """ + return self["layerdefaults"] + + @layerdefaults.setter + def layerdefaults(self, val): + self["layerdefaults"] = val + + @property + def pitch(self): + """ + Sets the pitch angle of the map (in degrees, where 0 means + perpendicular to the surface of the map) (mapbox.pitch). + + The 'pitch' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["pitch"] + + @pitch.setter + def pitch(self, val): + self["pitch"] = val + + @property + def style(self): + """ + 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.mapbox.layers`. + These layers can be defined either explicitly as a Mapbox 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 which do not require any + access tokens, or by using a default Mapbox style or custom + Mapbox style URL, both of which require a Mapbox access token + Note that Mapbox access token can be set in the `accesstoken` + attribute or in the `mapboxAccessToken` config option. Mapbox + Style objects are of the form described in the Mapbox GL JS + documentation available at https://docs.mapbox.com/mapbox-gl- + js/style-spec The built-in plotly.js styles objects are: + carto-darkmatter, carto-positron, open-street-map, stamen- + terrain, stamen-toner, stamen-watercolor, white-bg The built- + in Mapbox styles are: basic, streets, outdoors, light, dark, + satellite, satellite-streets Mapbox style URLs are of the + form: mapbox://mapbox.mapbox-- + + The 'style' property accepts values of any type + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in the view: + `center`, `zoom`, `bearing`, `pitch`. Defaults to + `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def zoom(self): + """ + Sets the zoom level of the map (mapbox.zoom). + + The 'zoom' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zoom"] + + @zoom.setter + def zoom(self, val): + self["zoom"] = val + + @property + def _prop_descriptions(self): + return """\ + accesstoken + 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. + bearing + Sets the bearing angle of the map in degrees counter- + clockwise from North (mapbox.bearing). + bounds + :class:`plotly.graph_objects.layout.mapbox.Bounds` + instance or dict with compatible properties + center + :class:`plotly.graph_objects.layout.mapbox.Center` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.mapbox.Domain` + instance or dict with compatible properties + layers + A tuple of + :class:`plotly.graph_objects.layout.mapbox.Layer` + instances or dicts with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.mapbox.layerdefaults), sets the + default property values to use for elements of + layout.mapbox.layers + pitch + Sets the pitch angle of the map (in degrees, where 0 + means perpendicular to the surface of the map) + (mapbox.pitch). + style + 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.mapbox.layers`. These layers can be defined + either explicitly as a Mapbox 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 which do not + require any access tokens, or by using a default Mapbox + style or custom Mapbox style URL, both of which require + a Mapbox access token Note that Mapbox access token + can be set in the `accesstoken` attribute or in the + `mapboxAccessToken` config option. Mapbox Style + objects are of the form described in the Mapbox GL JS + documentation available at + https://docs.mapbox.com/mapbox-gl-js/style-spec The + built-in plotly.js styles objects are: carto- + darkmatter, carto-positron, open-street-map, stamen- + terrain, stamen-toner, stamen-watercolor, white-bg The + built-in Mapbox styles are: basic, streets, outdoors, + light, dark, satellite, satellite-streets Mapbox style + URLs are of the form: + mapbox://mapbox.mapbox-- + uirevision + Controls persistence of user-driven changes in the + view: `center`, `zoom`, `bearing`, `pitch`. Defaults to + `layout.uirevision`. + zoom + Sets the zoom level of the map (mapbox.zoom). + """ + + def __init__( + self, + arg=None, + accesstoken=None, + bearing=None, + bounds=None, + center=None, + domain=None, + layers=None, + layerdefaults=None, + pitch=None, + style=None, + uirevision=None, + zoom=None, + **kwargs, + ): + """ + Construct a new Mapbox object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Mapbox` + accesstoken + 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. + bearing + Sets the bearing angle of the map in degrees counter- + clockwise from North (mapbox.bearing). + bounds + :class:`plotly.graph_objects.layout.mapbox.Bounds` + instance or dict with compatible properties + center + :class:`plotly.graph_objects.layout.mapbox.Center` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.mapbox.Domain` + instance or dict with compatible properties + layers + A tuple of + :class:`plotly.graph_objects.layout.mapbox.Layer` + instances or dicts with compatible properties + layerdefaults + When used in a template (as + layout.template.layout.mapbox.layerdefaults), sets the + default property values to use for elements of + layout.mapbox.layers + pitch + Sets the pitch angle of the map (in degrees, where 0 + means perpendicular to the surface of the map) + (mapbox.pitch). + style + 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.mapbox.layers`. These layers can be defined + either explicitly as a Mapbox 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 which do not + require any access tokens, or by using a default Mapbox + style or custom Mapbox style URL, both of which require + a Mapbox access token Note that Mapbox access token + can be set in the `accesstoken` attribute or in the + `mapboxAccessToken` config option. Mapbox Style + objects are of the form described in the Mapbox GL JS + documentation available at + https://docs.mapbox.com/mapbox-gl-js/style-spec The + built-in plotly.js styles objects are: carto- + darkmatter, carto-positron, open-street-map, stamen- + terrain, stamen-toner, stamen-watercolor, white-bg The + built-in Mapbox styles are: basic, streets, outdoors, + light, dark, satellite, satellite-streets Mapbox style + URLs are of the form: + mapbox://mapbox.mapbox-- + uirevision + Controls persistence of user-driven changes in the + view: `center`, `zoom`, `bearing`, `pitch`. Defaults to + `layout.uirevision`. + zoom + Sets the zoom level of the map (mapbox.zoom). + + Returns + ------- + Mapbox + """ + super().__init__("mapbox") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Mapbox +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Mapbox`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("accesstoken", arg, accesstoken) + self._set_property("bearing", arg, bearing) + self._set_property("bounds", arg, bounds) + self._set_property("center", arg, center) + self._set_property("domain", arg, domain) + self._set_property("layers", arg, layers) + self._set_property("layerdefaults", arg, layerdefaults) + self._set_property("pitch", arg, pitch) + self._set_property("style", arg, style) + self._set_property("uirevision", arg, uirevision) + self._set_property("zoom", arg, zoom) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_margin.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_margin.py new file mode 100644 index 0000000..2af6048 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_margin.py @@ -0,0 +1,212 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Margin(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.margin" + _valid_props = {"autoexpand", "b", "l", "pad", "r", "t"} + + @property + def autoexpand(self): + """ + Turns on/off margin expansion computations. Legends, colorbars, + updatemenus, sliders, axis rangeselector and rangeslider are + allowed to push the margins by defaults. + + The 'autoexpand' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autoexpand"] + + @autoexpand.setter + def autoexpand(self, val): + self["autoexpand"] = val + + @property + def b(self): + """ + Sets the bottom margin (in px). + + The 'b' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def l(self): + """ + Sets the left margin (in px). + + The 'l' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["l"] + + @l.setter + def l(self, val): + self["l"] = val + + @property + def pad(self): + """ + Sets the amount of padding (in px) between the plotting area + and the axis lines + + The 'pad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def r(self): + """ + Sets the right margin (in px). + + The 'r' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def t(self): + """ + Sets the top margin (in px). + + The 't' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["t"] + + @t.setter + def t(self, val): + self["t"] = val + + @property + def _prop_descriptions(self): + return """\ + autoexpand + Turns on/off margin expansion computations. Legends, + colorbars, updatemenus, sliders, axis rangeselector and + rangeslider are allowed to push the margins by + defaults. + b + Sets the bottom margin (in px). + l + Sets the left margin (in px). + pad + Sets the amount of padding (in px) between the plotting + area and the axis lines + r + Sets the right margin (in px). + t + Sets the top margin (in px). + """ + + def __init__( + self, + arg=None, + autoexpand=None, + b=None, + l=None, + pad=None, + r=None, + t=None, + **kwargs, + ): + """ + Construct a new Margin object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Margin` + autoexpand + Turns on/off margin expansion computations. Legends, + colorbars, updatemenus, sliders, axis rangeselector and + rangeslider are allowed to push the margins by + defaults. + b + Sets the bottom margin (in px). + l + Sets the left margin (in px). + pad + Sets the amount of padding (in px) between the plotting + area and the axis lines + r + Sets the right margin (in px). + t + Sets the top margin (in px). + + Returns + ------- + Margin + """ + super().__init__("margin") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Margin +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Margin`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autoexpand", arg, autoexpand) + self._set_property("b", arg, b) + self._set_property("l", arg, l) + self._set_property("pad", arg, pad) + self._set_property("r", arg, r) + self._set_property("t", arg, t) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_modebar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_modebar.py new file mode 100644 index 0000000..34b9180 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_modebar.py @@ -0,0 +1,387 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Modebar(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.modebar" + _valid_props = { + "activecolor", + "add", + "addsrc", + "bgcolor", + "color", + "orientation", + "remove", + "removesrc", + "uirevision", + } + + @property + def activecolor(self): + """ + Sets the color of the active or hovered on icons in the + modebar. + + The 'activecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["activecolor"] + + @activecolor.setter + def activecolor(self, val): + self["activecolor"] = val + + @property + def add(self): + """ + 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". + + The 'add' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["add"] + + @add.setter + def add(self, val): + self["add"] = val + + @property + def addsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `add`. + + The 'addsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["addsrc"] + + @addsrc.setter + def addsrc(self, val): + self["addsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the modebar. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def color(self): + """ + Sets the color of the icons in the modebar. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def orientation(self): + """ + Sets the orientation of the modebar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['v', 'h'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def remove(self): + """ + Determines which predefined modebar buttons to remove. Similar + to `config.modeBarButtonsToRemove` option. This may include + "autoScale2d", "autoscale", "editInChartStudio", + "editinchartstudio", "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", "sendDataToCloud", "senddatatocloud", + "tableRotation", "tablerotation", "toImage", "toggleHover", + "toggleSpikelines", "togglehover", "togglespikelines", + "toimage", "zoom", "zoom2d", "zoom3d", "zoomIn2d", "zoomInGeo", + "zoomInMap", "zoomInMapbox", "zoomOut2d", "zoomOutGeo", + "zoomOutMap", "zoomOutMapbox", "zoomin", "zoomout". + + The 'remove' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["remove"] + + @remove.setter + def remove(self, val): + self["remove"] = val + + @property + def removesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `remove`. + + The 'removesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["removesrc"] + + @removesrc.setter + def removesrc(self, val): + self["removesrc"] = val + + @property + def uirevision(self): + """ + 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`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def _prop_descriptions(self): + return """\ + activecolor + Sets the color of the active or hovered on icons in the + modebar. + add + 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". + addsrc + Sets the source reference on Chart Studio Cloud for + `add`. + bgcolor + Sets the background color of the modebar. + color + Sets the color of the icons in the modebar. + orientation + Sets the orientation of the modebar. + remove + Determines which predefined modebar buttons to remove. + Similar to `config.modeBarButtonsToRemove` option. This + may include "autoScale2d", "autoscale", + "editInChartStudio", "editinchartstudio", + "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", "sendDataToCloud", "senddatatocloud", + "tableRotation", "tablerotation", "toImage", + "toggleHover", "toggleSpikelines", "togglehover", + "togglespikelines", "toimage", "zoom", "zoom2d", + "zoom3d", "zoomIn2d", "zoomInGeo", "zoomInMap", + "zoomInMapbox", "zoomOut2d", "zoomOutGeo", + "zoomOutMap", "zoomOutMapbox", "zoomin", "zoomout". + removesrc + Sets the source reference on Chart Studio Cloud for + `remove`. + uirevision + 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`. + """ + + def __init__( + self, + arg=None, + activecolor=None, + add=None, + addsrc=None, + bgcolor=None, + color=None, + orientation=None, + remove=None, + removesrc=None, + uirevision=None, + **kwargs, + ): + """ + Construct a new Modebar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Modebar` + activecolor + Sets the color of the active or hovered on icons in the + modebar. + add + 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". + addsrc + Sets the source reference on Chart Studio Cloud for + `add`. + bgcolor + Sets the background color of the modebar. + color + Sets the color of the icons in the modebar. + orientation + Sets the orientation of the modebar. + remove + Determines which predefined modebar buttons to remove. + Similar to `config.modeBarButtonsToRemove` option. This + may include "autoScale2d", "autoscale", + "editInChartStudio", "editinchartstudio", + "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", "sendDataToCloud", "senddatatocloud", + "tableRotation", "tablerotation", "toImage", + "toggleHover", "toggleSpikelines", "togglehover", + "togglespikelines", "toimage", "zoom", "zoom2d", + "zoom3d", "zoomIn2d", "zoomInGeo", "zoomInMap", + "zoomInMapbox", "zoomOut2d", "zoomOutGeo", + "zoomOutMap", "zoomOutMapbox", "zoomin", "zoomout". + removesrc + Sets the source reference on Chart Studio Cloud for + `remove`. + uirevision + 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`. + + Returns + ------- + Modebar + """ + super().__init__("modebar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Modebar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Modebar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("activecolor", arg, activecolor) + self._set_property("add", arg, add) + self._set_property("addsrc", arg, addsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("color", arg, color) + self._set_property("orientation", arg, orientation) + self._set_property("remove", arg, remove) + self._set_property("removesrc", arg, removesrc) + self._set_property("uirevision", arg, uirevision) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newselection.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newselection.py new file mode 100644 index 0000000..4f06571 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newselection.py @@ -0,0 +1,118 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Newselection(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.newselection" + _valid_props = {"line", "mode"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.newselection.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.layout.newselection.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def mode(self): + """ + 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. + + The 'mode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['immediate', 'gradual'] + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.layout.newselection.Line` + instance or dict with compatible properties + mode + 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. + """ + + def __init__(self, arg=None, line=None, mode=None, **kwargs): + """ + Construct a new Newselection object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Newselection` + line + :class:`plotly.graph_objects.layout.newselection.Line` + instance or dict with compatible properties + mode + 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. + + Returns + ------- + Newselection + """ + super().__init__("newselection") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Newselection +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Newselection`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("mode", arg, mode) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newshape.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newshape.py new file mode 100644 index 0000000..05710a1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_newshape.py @@ -0,0 +1,543 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Newshape(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.newshape" + _valid_props = { + "drawdirection", + "fillcolor", + "fillrule", + "label", + "layer", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "name", + "opacity", + "showlegend", + "visible", + } + + @property + def drawdirection(self): + """ + 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. + + The 'drawdirection' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['ortho', 'horizontal', 'vertical', 'diagonal'] + + Returns + ------- + Any + """ + return self["drawdirection"] + + @drawdirection.setter + def drawdirection(self, val): + self["drawdirection"] = val + + @property + def fillcolor(self): + """ + 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. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def fillrule(self): + """ + Determines the path's interior. For more info please visit + https://developer.mozilla.org/en- + US/docs/Web/SVG/Attribute/fill-rule + + The 'fillrule' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['evenodd', 'nonzero'] + + Returns + ------- + Any + """ + return self["fillrule"] + + @fillrule.setter + def fillrule(self, val): + self["fillrule"] = val + + @property + def label(self): + """ + The 'label' property is an instance of Label + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.newshape.Label` + - A dict of string/value properties that will be passed + to the Label constructor + + Returns + ------- + plotly.graph_objs.layout.newshape.Label + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def layer(self): + """ + Specifies whether new shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or above + traces ("above"). + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['below', 'above', 'between'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.newshape.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.layout.newshape.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for new shape. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.newshape.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.layout.newshape.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def name(self): + """ + Sets new shape name. The name appears as the legend item. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of new shapes. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def showlegend(self): + """ + Determines whether or not new shape is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + drawdirection + 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. + fillcolor + 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. + fillrule + Determines the path's interior. For more info please + visit https://developer.mozilla.org/en- + US/docs/Web/SVG/Attribute/fill-rule + label + :class:`plotly.graph_objects.layout.newshape.Label` + instance or dict with compatible properties + layer + Specifies whether new shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or + above traces ("above"). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.layout.newshape.Legendgrou + ptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + new shape. + line + :class:`plotly.graph_objects.layout.newshape.Line` + instance or dict with compatible properties + name + Sets new shape name. The name appears as the legend + item. + opacity + Sets the opacity of new shapes. + showlegend + Determines whether or not new shape is shown in the + legend. + visible + 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). + """ + + def __init__( + self, + arg=None, + drawdirection=None, + fillcolor=None, + fillrule=None, + label=None, + layer=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + name=None, + opacity=None, + showlegend=None, + visible=None, + **kwargs, + ): + """ + Construct a new Newshape object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Newshape` + drawdirection + 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. + fillcolor + 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. + fillrule + Determines the path's interior. For more info please + visit https://developer.mozilla.org/en- + US/docs/Web/SVG/Attribute/fill-rule + label + :class:`plotly.graph_objects.layout.newshape.Label` + instance or dict with compatible properties + layer + Specifies whether new shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or + above traces ("above"). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.layout.newshape.Legendgrou + ptitle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + new shape. + line + :class:`plotly.graph_objects.layout.newshape.Line` + instance or dict with compatible properties + name + Sets new shape name. The name appears as the legend + item. + opacity + Sets the opacity of new shapes. + showlegend + Determines whether or not new shape is shown in the + legend. + visible + 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). + + Returns + ------- + Newshape + """ + super().__init__("newshape") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Newshape +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Newshape`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("drawdirection", arg, drawdirection) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("fillrule", arg, fillrule) + self._set_property("label", arg, label) + self._set_property("layer", arg, layer) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("showlegend", arg, showlegend) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_polar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_polar.py new file mode 100644 index 0000000..51d7620 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_polar.py @@ -0,0 +1,382 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Polar(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.polar" + _valid_props = { + "angularaxis", + "bargap", + "barmode", + "bgcolor", + "domain", + "gridshape", + "hole", + "radialaxis", + "sector", + "uirevision", + } + + @property + def angularaxis(self): + """ + The 'angularaxis' property is an instance of AngularAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.AngularAxis` + - A dict of string/value properties that will be passed + to the AngularAxis constructor + + Returns + ------- + plotly.graph_objs.layout.polar.AngularAxis + """ + return self["angularaxis"] + + @angularaxis.setter + def angularaxis(self, val): + self["angularaxis"] = val + + @property + def bargap(self): + """ + Sets the gap between bars of adjacent location coordinates. + Values are unitless, they represent fractions of the minimum + difference in bar positions in the data. + + The 'bargap' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["bargap"] + + @bargap.setter + def bargap(self, val): + self["bargap"] = val + + @property + def barmode(self): + """ + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are stacked on + top of one another With "overlay", the bars are plotted over + one another, you might need to reduce "opacity" to see multiple + bars. + + The 'barmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['stack', 'overlay'] + + Returns + ------- + Any + """ + return self["barmode"] + + @barmode.setter + def barmode(self, val): + self["barmode"] = val + + @property + def bgcolor(self): + """ + Set the background color of the subplot + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.polar.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def gridshape(self): + """ + 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). + + The 'gridshape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['circular', 'linear'] + + Returns + ------- + Any + """ + return self["gridshape"] + + @gridshape.setter + def gridshape(self, val): + self["gridshape"] = val + + @property + def hole(self): + """ + Sets the fraction of the radius to cut out of the polar + subplot. + + The 'hole' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["hole"] + + @hole.setter + def hole(self, val): + self["hole"] = val + + @property + def radialaxis(self): + """ + The 'radialaxis' property is an instance of RadialAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.RadialAxis` + - A dict of string/value properties that will be passed + to the RadialAxis constructor + + Returns + ------- + plotly.graph_objs.layout.polar.RadialAxis + """ + return self["radialaxis"] + + @radialaxis.setter + def radialaxis(self, val): + self["radialaxis"] = val + + @property + def sector(self): + """ + 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. + + The 'sector' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'sector[0]' property is a number and may be specified as: + - An int or float + (1) The 'sector[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["sector"] + + @sector.setter + def sector(self, val): + self["sector"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis attributes, + if not overridden in the individual axes. Defaults to + `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def _prop_descriptions(self): + return """\ + angularaxis + :class:`plotly.graph_objects.layout.polar.AngularAxis` + instance or dict with compatible properties + bargap + Sets the gap between bars of adjacent location + coordinates. Values are unitless, they represent + fractions of the minimum difference in bar positions in + the data. + barmode + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are + stacked on top of one another With "overlay", the bars + are plotted over one another, you might need to reduce + "opacity" to see multiple bars. + bgcolor + Set the background color of the subplot + domain + :class:`plotly.graph_objects.layout.polar.Domain` + instance or dict with compatible properties + gridshape + 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). + hole + Sets the fraction of the radius to cut out of the polar + subplot. + radialaxis + :class:`plotly.graph_objects.layout.polar.RadialAxis` + instance or dict with compatible properties + sector + 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. + uirevision + Controls persistence of user-driven changes in axis + attributes, if not overridden in the individual axes. + Defaults to `layout.uirevision`. + """ + + def __init__( + self, + arg=None, + angularaxis=None, + bargap=None, + barmode=None, + bgcolor=None, + domain=None, + gridshape=None, + hole=None, + radialaxis=None, + sector=None, + uirevision=None, + **kwargs, + ): + """ + Construct a new Polar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Polar` + angularaxis + :class:`plotly.graph_objects.layout.polar.AngularAxis` + instance or dict with compatible properties + bargap + Sets the gap between bars of adjacent location + coordinates. Values are unitless, they represent + fractions of the minimum difference in bar positions in + the data. + barmode + Determines how bars at the same location coordinate are + displayed on the graph. With "stack", the bars are + stacked on top of one another With "overlay", the bars + are plotted over one another, you might need to reduce + "opacity" to see multiple bars. + bgcolor + Set the background color of the subplot + domain + :class:`plotly.graph_objects.layout.polar.Domain` + instance or dict with compatible properties + gridshape + 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). + hole + Sets the fraction of the radius to cut out of the polar + subplot. + radialaxis + :class:`plotly.graph_objects.layout.polar.RadialAxis` + instance or dict with compatible properties + sector + 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. + uirevision + Controls persistence of user-driven changes in axis + attributes, if not overridden in the individual axes. + Defaults to `layout.uirevision`. + + Returns + ------- + Polar + """ + super().__init__("polar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Polar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Polar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angularaxis", arg, angularaxis) + self._set_property("bargap", arg, bargap) + self._set_property("barmode", arg, barmode) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("domain", arg, domain) + self._set_property("gridshape", arg, gridshape) + self._set_property("hole", arg, hole) + self._set_property("radialaxis", arg, radialaxis) + self._set_property("sector", arg, sector) + self._set_property("uirevision", arg, uirevision) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_scene.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_scene.py new file mode 100644 index 0000000..2d08ae1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_scene.py @@ -0,0 +1,454 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Scene(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.scene" + _valid_props = { + "annotationdefaults", + "annotations", + "aspectmode", + "aspectratio", + "bgcolor", + "camera", + "domain", + "dragmode", + "hovermode", + "uirevision", + "xaxis", + "yaxis", + "zaxis", + } + + @property + def annotations(self): + """ + The 'annotations' property is a tuple of instances of + Annotation that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.scene.Annotation + - A list or tuple of dicts of string/value properties that + will be passed to the Annotation constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.scene.Annotation] + """ + return self["annotations"] + + @annotations.setter + def annotations(self, val): + self["annotations"] = val + + @property + def annotationdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.annotationdefaults), sets the + default property values to use for elements of + layout.scene.annotations + + The 'annotationdefaults' property is an instance of Annotation + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.Annotation` + - A dict of string/value properties that will be passed + to the Annotation constructor + + Returns + ------- + plotly.graph_objs.layout.scene.Annotation + """ + return self["annotationdefaults"] + + @annotationdefaults.setter + def annotationdefaults(self, val): + self["annotationdefaults"] = val + + @property + def aspectmode(self): + """ + 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. + + The 'aspectmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'cube', 'data', 'manual'] + + Returns + ------- + Any + """ + return self["aspectmode"] + + @aspectmode.setter + def aspectmode(self, val): + self["aspectmode"] = val + + @property + def aspectratio(self): + """ + Sets this scene's axis aspectratio. + + The 'aspectratio' property is an instance of Aspectratio + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.Aspectratio` + - A dict of string/value properties that will be passed + to the Aspectratio constructor + + Returns + ------- + plotly.graph_objs.layout.scene.Aspectratio + """ + return self["aspectratio"] + + @aspectratio.setter + def aspectratio(self, val): + self["aspectratio"] = val + + @property + def bgcolor(self): + """ + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def camera(self): + """ + The 'camera' property is an instance of Camera + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.Camera` + - A dict of string/value properties that will be passed + to the Camera constructor + + Returns + ------- + plotly.graph_objs.layout.scene.Camera + """ + return self["camera"] + + @camera.setter + def camera(self, val): + self["camera"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.scene.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def dragmode(self): + """ + Determines the mode of drag interactions for this scene. + + The 'dragmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['orbit', 'turntable', 'zoom', 'pan', False] + + Returns + ------- + Any + """ + return self["dragmode"] + + @dragmode.setter + def dragmode(self, val): + self["dragmode"] = val + + @property + def hovermode(self): + """ + Determines the mode of hover interactions for this scene. + + The 'hovermode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['closest', False] + + Returns + ------- + Any + """ + return self["hovermode"] + + @hovermode.setter + def hovermode(self, val): + self["hovermode"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in camera + attributes. Defaults to `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def xaxis(self): + """ + The 'xaxis' property is an instance of XAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.XAxis` + - A dict of string/value properties that will be passed + to the XAxis constructor + + Returns + ------- + plotly.graph_objs.layout.scene.XAxis + """ + return self["xaxis"] + + @xaxis.setter + def xaxis(self, val): + self["xaxis"] = val + + @property + def yaxis(self): + """ + The 'yaxis' property is an instance of YAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.YAxis` + - A dict of string/value properties that will be passed + to the YAxis constructor + + Returns + ------- + plotly.graph_objs.layout.scene.YAxis + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def zaxis(self): + """ + The 'zaxis' property is an instance of ZAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.ZAxis` + - A dict of string/value properties that will be passed + to the ZAxis constructor + + Returns + ------- + plotly.graph_objs.layout.scene.ZAxis + """ + return self["zaxis"] + + @zaxis.setter + def zaxis(self, val): + self["zaxis"] = val + + @property + def _prop_descriptions(self): + return """\ + annotations + A tuple of + :class:`plotly.graph_objects.layout.scene.Annotation` + instances or dicts with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.scene.annotationdefaults), sets + the default property values to use for elements of + layout.scene.annotations + aspectmode + 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. + aspectratio + Sets this scene's axis aspectratio. + bgcolor + + camera + :class:`plotly.graph_objects.layout.scene.Camera` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.scene.Domain` + instance or dict with compatible properties + dragmode + Determines the mode of drag interactions for this + scene. + hovermode + Determines the mode of hover interactions for this + scene. + uirevision + Controls persistence of user-driven changes in camera + attributes. Defaults to `layout.uirevision`. + xaxis + :class:`plotly.graph_objects.layout.scene.XAxis` + instance or dict with compatible properties + yaxis + :class:`plotly.graph_objects.layout.scene.YAxis` + instance or dict with compatible properties + zaxis + :class:`plotly.graph_objects.layout.scene.ZAxis` + instance or dict with compatible properties + """ + + def __init__( + self, + arg=None, + annotations=None, + annotationdefaults=None, + aspectmode=None, + aspectratio=None, + bgcolor=None, + camera=None, + domain=None, + dragmode=None, + hovermode=None, + uirevision=None, + xaxis=None, + yaxis=None, + zaxis=None, + **kwargs, + ): + """ + Construct a new Scene object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Scene` + annotations + A tuple of + :class:`plotly.graph_objects.layout.scene.Annotation` + instances or dicts with compatible properties + annotationdefaults + When used in a template (as + layout.template.layout.scene.annotationdefaults), sets + the default property values to use for elements of + layout.scene.annotations + aspectmode + 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. + aspectratio + Sets this scene's axis aspectratio. + bgcolor + + camera + :class:`plotly.graph_objects.layout.scene.Camera` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.scene.Domain` + instance or dict with compatible properties + dragmode + Determines the mode of drag interactions for this + scene. + hovermode + Determines the mode of hover interactions for this + scene. + uirevision + Controls persistence of user-driven changes in camera + attributes. Defaults to `layout.uirevision`. + xaxis + :class:`plotly.graph_objects.layout.scene.XAxis` + instance or dict with compatible properties + yaxis + :class:`plotly.graph_objects.layout.scene.YAxis` + instance or dict with compatible properties + zaxis + :class:`plotly.graph_objects.layout.scene.ZAxis` + instance or dict with compatible properties + + Returns + ------- + Scene + """ + super().__init__("scene") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Scene +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Scene`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("annotations", arg, annotations) + self._set_property("annotationdefaults", arg, annotationdefaults) + self._set_property("aspectmode", arg, aspectmode) + self._set_property("aspectratio", arg, aspectratio) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("camera", arg, camera) + self._set_property("domain", arg, domain) + self._set_property("dragmode", arg, dragmode) + self._set_property("hovermode", arg, hovermode) + self._set_property("uirevision", arg, uirevision) + self._set_property("xaxis", arg, xaxis) + self._set_property("yaxis", arg, yaxis) + self._set_property("zaxis", arg, zaxis) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_selection.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_selection.py new file mode 100644 index 0000000..3ebf741 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_selection.py @@ -0,0 +1,493 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Selection(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.selection" + _valid_props = { + "line", + "name", + "opacity", + "path", + "templateitemname", + "type", + "x0", + "x1", + "xref", + "y0", + "y1", + "yref", + } + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.selection.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.layout.selection.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the selection. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def path(self): + """ + For `type` "path" - a valid SVG path similar to `shapes.path` + in data coordinates. Allowed segments are: M, L and Z. + + The 'path' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["path"] + + @path.setter + def path(self, val): + self["path"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['rect', 'path'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def x0(self): + """ + Sets the selection's starting x position. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def x1(self): + """ + Sets the selection's end x position. + + The 'x1' property accepts values of any type + + Returns + ------- + Any + """ + return self["x1"] + + @x1.setter + def x1(self, val): + self["x1"] = val + + @property + def xref(self): + """ + 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. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y0(self): + """ + Sets the selection's starting y position. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def y1(self): + """ + Sets the selection's end y position. + + The 'y1' property accepts values of any type + + Returns + ------- + Any + """ + return self["y1"] + + @y1.setter + def y1(self, val): + self["y1"] = val + + @property + def yref(self): + """ + 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. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.layout.selection.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the selection. + path + For `type` "path" - a valid SVG path similar to + `shapes.path` in data coordinates. Allowed segments + are: M, L and Z. + templateitemname + 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`. + type + 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`. + x0 + Sets the selection's starting x position. + x1 + Sets the selection's end x position. + xref + 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. + y0 + Sets the selection's starting y position. + y1 + Sets the selection's end y position. + yref + 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. + """ + + def __init__( + self, + arg=None, + line=None, + name=None, + opacity=None, + path=None, + templateitemname=None, + type=None, + x0=None, + x1=None, + xref=None, + y0=None, + y1=None, + yref=None, + **kwargs, + ): + """ + Construct a new Selection object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Selection` + line + :class:`plotly.graph_objects.layout.selection.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the selection. + path + For `type` "path" - a valid SVG path similar to + `shapes.path` in data coordinates. Allowed segments + are: M, L and Z. + templateitemname + 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`. + type + 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`. + x0 + Sets the selection's starting x position. + x1 + Sets the selection's end x position. + xref + 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. + y0 + Sets the selection's starting y position. + y1 + Sets the selection's end y position. + yref + 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. + + Returns + ------- + Selection + """ + super().__init__("selections") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Selection +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Selection`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("path", arg, path) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("type", arg, type) + self._set_property("x0", arg, x0) + self._set_property("x1", arg, x1) + self._set_property("xref", arg, xref) + self._set_property("y0", arg, y0) + self._set_property("y1", arg, y1) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_shape.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_shape.py new file mode 100644 index 0000000..8923d1c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_shape.py @@ -0,0 +1,1287 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Shape(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.shape" + _valid_props = { + "editable", + "fillcolor", + "fillrule", + "label", + "layer", + "legend", + "legendgroup", + "legendgrouptitle", + "legendrank", + "legendwidth", + "line", + "name", + "opacity", + "path", + "showlegend", + "templateitemname", + "type", + "visible", + "x0", + "x0shift", + "x1", + "x1shift", + "xanchor", + "xref", + "xsizemode", + "y0", + "y0shift", + "y1", + "y1shift", + "yanchor", + "yref", + "ysizemode", + } + + @property + def editable(self): + """ + 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`. + + The 'editable' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["editable"] + + @editable.setter + def editable(self, val): + self["editable"] = val + + @property + def fillcolor(self): + """ + Sets the color filling the shape's interior. Only applies to + closed shapes. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def fillrule(self): + """ + 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 + + The 'fillrule' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['evenodd', 'nonzero'] + + Returns + ------- + Any + """ + return self["fillrule"] + + @fillrule.setter + def fillrule(self, val): + self["fillrule"] = val + + @property + def label(self): + """ + The 'label' property is an instance of Label + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.shape.Label` + - A dict of string/value properties that will be passed + to the Label constructor + + Returns + ------- + plotly.graph_objs.layout.shape.Label + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def layer(self): + """ + Specifies whether shapes are drawn below gridlines ("below"), + between gridlines and traces ("between") or above traces + ("above"). + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['below', 'above', 'between'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def legend(self): + """ + 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. + + The 'legend' property is an identifier of a particular + subplot, of type 'legend', that may be specified as the string 'legend' + optionally followed by an integer >= 1 + (e.g. 'legend', 'legend1', 'legend2', 'legend3', etc.) + + Returns + ------- + str + """ + return self["legend"] + + @legend.setter + def legend(self, val): + self["legend"] = val + + @property + def legendgroup(self): + """ + 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. + + The 'legendgroup' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["legendgroup"] + + @legendgroup.setter + def legendgroup(self, val): + self["legendgroup"] = val + + @property + def legendgrouptitle(self): + """ + The 'legendgrouptitle' property is an instance of Legendgrouptitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.shape.Legendgrouptitle` + - A dict of string/value properties that will be passed + to the Legendgrouptitle constructor + + Returns + ------- + plotly.graph_objs.layout.shape.Legendgrouptitle + """ + return self["legendgrouptitle"] + + @legendgrouptitle.setter + def legendgrouptitle(self, val): + self["legendgrouptitle"] = val + + @property + def legendrank(self): + """ + 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. + + The 'legendrank' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["legendrank"] + + @legendrank.setter + def legendrank(self, val): + self["legendrank"] = val + + @property + def legendwidth(self): + """ + Sets the width (in px or fraction) of the legend for this + shape. + + The 'legendwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["legendwidth"] + + @legendwidth.setter + def legendwidth(self, val): + self["legendwidth"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.shape.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.layout.shape.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the shape. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def path(self): + """ + 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 + + The 'path' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["path"] + + @path.setter + def path(self, val): + self["path"] = val + + @property + def showlegend(self): + """ + Determines whether or not this shape is shown in the legend. + + The 'showlegend' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showlegend"] + + @showlegend.setter + def showlegend(self, val): + self["showlegend"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['circle', 'rect', 'path', 'line'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + 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). + + The 'visible' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'legendonly'] + + Returns + ------- + Any + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x0(self): + """ + Sets the shape's starting x position. See `type` and + `xsizemode` for more info. + + The 'x0' property accepts values of any type + + Returns + ------- + Any + """ + return self["x0"] + + @x0.setter + def x0(self, val): + self["x0"] = val + + @property + def x0shift(self): + """ + 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. + + The 'x0shift' property is a number and may be specified as: + - An int or float in the interval [-1, 1] + + Returns + ------- + int|float + """ + return self["x0shift"] + + @x0shift.setter + def x0shift(self, val): + self["x0shift"] = val + + @property + def x1(self): + """ + Sets the shape's end x position. See `type` and `xsizemode` for + more info. + + The 'x1' property accepts values of any type + + Returns + ------- + Any + """ + return self["x1"] + + @x1.setter + def x1(self, val): + self["x1"] = val + + @property + def x1shift(self): + """ + 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. + + The 'x1shift' property is a number and may be specified as: + - An int or float in the interval [-1, 1] + + Returns + ------- + int|float + """ + return self["x1shift"] + + @x1shift.setter + def x1shift(self, val): + self["x1shift"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property accepts values of any type + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xref(self): + """ + 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. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def xsizemode(self): + """ + 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. + + The 'xsizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['scaled', 'pixel'] + + Returns + ------- + Any + """ + return self["xsizemode"] + + @xsizemode.setter + def xsizemode(self, val): + self["xsizemode"] = val + + @property + def y0(self): + """ + Sets the shape's starting y position. See `type` and + `ysizemode` for more info. + + The 'y0' property accepts values of any type + + Returns + ------- + Any + """ + return self["y0"] + + @y0.setter + def y0(self, val): + self["y0"] = val + + @property + def y0shift(self): + """ + 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. + + The 'y0shift' property is a number and may be specified as: + - An int or float in the interval [-1, 1] + + Returns + ------- + int|float + """ + return self["y0shift"] + + @y0shift.setter + def y0shift(self, val): + self["y0shift"] = val + + @property + def y1(self): + """ + Sets the shape's end y position. See `type` and `ysizemode` for + more info. + + The 'y1' property accepts values of any type + + Returns + ------- + Any + """ + return self["y1"] + + @y1.setter + def y1(self, val): + self["y1"] = val + + @property + def y1shift(self): + """ + 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. + + The 'y1shift' property is a number and may be specified as: + - An int or float in the interval [-1, 1] + + Returns + ------- + int|float + """ + return self["y1shift"] + + @y1shift.setter + def y1shift(self, val): + self["y1shift"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property accepts values of any type + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def yref(self): + """ + 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. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['paper'] + - A string that matches one of the following regular expressions: + ['^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def ysizemode(self): + """ + 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. + + The 'ysizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['scaled', 'pixel'] + + Returns + ------- + Any + """ + return self["ysizemode"] + + @ysizemode.setter + def ysizemode(self, val): + self["ysizemode"] = val + + @property + def _prop_descriptions(self): + return """\ + editable + 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`. + fillcolor + Sets the color filling the shape's interior. Only + applies to closed shapes. + fillrule + 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 + label + :class:`plotly.graph_objects.layout.shape.Label` + instance or dict with compatible properties + layer + Specifies whether shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or + above traces ("above"). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.layout.shape.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this shape. + line + :class:`plotly.graph_objects.layout.shape.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the shape. + path + 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 + showlegend + Determines whether or not this shape is shown in the + legend. + templateitemname + 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`. + type + 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. + visible + 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). + x0 + Sets the shape's starting x position. See `type` and + `xsizemode` for more info. + x0shift + 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. + x1 + Sets the shape's end x position. See `type` and + `xsizemode` for more info. + x1shift + 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. + xanchor + 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". + xref + 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. + xsizemode + 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. + y0 + Sets the shape's starting y position. See `type` and + `ysizemode` for more info. + y0shift + 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. + y1 + Sets the shape's end y position. See `type` and + `ysizemode` for more info. + y1shift + 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. + yanchor + 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". + yref + 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. + ysizemode + 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. + """ + + def __init__( + self, + arg=None, + editable=None, + fillcolor=None, + fillrule=None, + label=None, + layer=None, + legend=None, + legendgroup=None, + legendgrouptitle=None, + legendrank=None, + legendwidth=None, + line=None, + name=None, + opacity=None, + path=None, + showlegend=None, + templateitemname=None, + type=None, + visible=None, + x0=None, + x0shift=None, + x1=None, + x1shift=None, + xanchor=None, + xref=None, + xsizemode=None, + y0=None, + y0shift=None, + y1=None, + y1shift=None, + yanchor=None, + yref=None, + ysizemode=None, + **kwargs, + ): + """ + Construct a new Shape object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Shape` + editable + 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`. + fillcolor + Sets the color filling the shape's interior. Only + applies to closed shapes. + fillrule + 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 + label + :class:`plotly.graph_objects.layout.shape.Label` + instance or dict with compatible properties + layer + Specifies whether shapes are drawn below gridlines + ("below"), between gridlines and traces ("between") or + above traces ("above"). + legend + 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. + legendgroup + 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. + legendgrouptitle + :class:`plotly.graph_objects.layout.shape.Legendgroupti + tle` instance or dict with compatible properties + legendrank + 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. + legendwidth + Sets the width (in px or fraction) of the legend for + this shape. + line + :class:`plotly.graph_objects.layout.shape.Line` + instance or dict with compatible properties + name + 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. + opacity + Sets the opacity of the shape. + path + 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 + showlegend + Determines whether or not this shape is shown in the + legend. + templateitemname + 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`. + type + 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. + visible + 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). + x0 + Sets the shape's starting x position. See `type` and + `xsizemode` for more info. + x0shift + 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. + x1 + Sets the shape's end x position. See `type` and + `xsizemode` for more info. + x1shift + 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. + xanchor + 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". + xref + 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. + xsizemode + 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. + y0 + Sets the shape's starting y position. See `type` and + `ysizemode` for more info. + y0shift + 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. + y1 + Sets the shape's end y position. See `type` and + `ysizemode` for more info. + y1shift + 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. + yanchor + 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". + yref + 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. + ysizemode + 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. + + Returns + ------- + Shape + """ + super().__init__("shapes") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Shape +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Shape`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("editable", arg, editable) + self._set_property("fillcolor", arg, fillcolor) + self._set_property("fillrule", arg, fillrule) + self._set_property("label", arg, label) + self._set_property("layer", arg, layer) + self._set_property("legend", arg, legend) + self._set_property("legendgroup", arg, legendgroup) + self._set_property("legendgrouptitle", arg, legendgrouptitle) + self._set_property("legendrank", arg, legendrank) + self._set_property("legendwidth", arg, legendwidth) + self._set_property("line", arg, line) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("path", arg, path) + self._set_property("showlegend", arg, showlegend) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._set_property("x0", arg, x0) + self._set_property("x0shift", arg, x0shift) + self._set_property("x1", arg, x1) + self._set_property("x1shift", arg, x1shift) + self._set_property("xanchor", arg, xanchor) + self._set_property("xref", arg, xref) + self._set_property("xsizemode", arg, xsizemode) + self._set_property("y0", arg, y0) + self._set_property("y0shift", arg, y0shift) + self._set_property("y1", arg, y1) + self._set_property("y1shift", arg, y1shift) + self._set_property("yanchor", arg, yanchor) + self._set_property("yref", arg, yref) + self._set_property("ysizemode", arg, ysizemode) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_slider.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_slider.py new file mode 100644 index 0000000..e6d0a2f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_slider.py @@ -0,0 +1,786 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Slider(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.slider" + _valid_props = { + "active", + "activebgcolor", + "bgcolor", + "bordercolor", + "borderwidth", + "currentvalue", + "font", + "len", + "lenmode", + "minorticklen", + "name", + "pad", + "stepdefaults", + "steps", + "templateitemname", + "tickcolor", + "ticklen", + "tickwidth", + "transition", + "visible", + "x", + "xanchor", + "y", + "yanchor", + } + + @property + def active(self): + """ + Determines which button (by index starting from 0) is + considered active. + + The 'active' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["active"] + + @active.setter + def active(self, val): + self["active"] = val + + @property + def activebgcolor(self): + """ + Sets the background color of the slider grip while dragging. + + The 'activebgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["activebgcolor"] + + @activebgcolor.setter + def activebgcolor(self, val): + self["activebgcolor"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the slider. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the slider. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the slider. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def currentvalue(self): + """ + The 'currentvalue' property is an instance of Currentvalue + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.slider.Currentvalue` + - A dict of string/value properties that will be passed + to the Currentvalue constructor + + Returns + ------- + plotly.graph_objs.layout.slider.Currentvalue + """ + return self["currentvalue"] + + @currentvalue.setter + def currentvalue(self, val): + self["currentvalue"] = val + + @property + def font(self): + """ + Sets the font of the slider step labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.slider.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.slider.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + Determines whether this slider length is set in units of plot + "fraction" or in *pixels. Use `len` to set the value. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minorticklen(self): + """ + Sets the length in pixels of minor step tick marks + + The 'minorticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minorticklen"] + + @minorticklen.setter + def minorticklen(self, val): + self["minorticklen"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def pad(self): + """ + Set the padding of the slider component along each side. + + The 'pad' property is an instance of Pad + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.slider.Pad` + - A dict of string/value properties that will be passed + to the Pad constructor + + Returns + ------- + plotly.graph_objs.layout.slider.Pad + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def steps(self): + """ + The 'steps' property is a tuple of instances of + Step that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.slider.Step + - A list or tuple of dicts of string/value properties that + will be passed to the Step constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.slider.Step] + """ + return self["steps"] + + @steps.setter + def steps(self, val): + self["steps"] = val + + @property + def stepdefaults(self): + """ + When used in a template (as + layout.template.layout.slider.stepdefaults), sets the default + property values to use for elements of layout.slider.steps + + The 'stepdefaults' property is an instance of Step + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.slider.Step` + - A dict of string/value properties that will be passed + to the Step constructor + + Returns + ------- + plotly.graph_objs.layout.slider.Step + """ + return self["stepdefaults"] + + @stepdefaults.setter + def stepdefaults(self, val): + self["stepdefaults"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def tickcolor(self): + """ + Sets the color of the border enclosing the slider. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def ticklen(self): + """ + Sets the length in pixels of step tick marks + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def transition(self): + """ + The 'transition' property is an instance of Transition + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.slider.Transition` + - A dict of string/value properties that will be passed + to the Transition constructor + + Returns + ------- + plotly.graph_objs.layout.slider.Transition + """ + return self["transition"] + + @transition.setter + def transition(self, val): + self["transition"] = val + + @property + def visible(self): + """ + Determines whether or not the slider is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x position (in normalized coordinates) of the slider. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-2, 3] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + Sets the slider's horizontal position anchor. This anchor binds + the `x` position to the "left", "center" or "right" of the + range selector. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def y(self): + """ + Sets the y position (in normalized coordinates) of the slider. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-2, 3] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + Sets the slider's vertical position anchor This anchor binds + the `y` position to the "top", "middle" or "bottom" of the + range selector. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def _prop_descriptions(self): + return """\ + active + Determines which button (by index starting from 0) is + considered active. + activebgcolor + Sets the background color of the slider grip while + dragging. + bgcolor + Sets the background color of the slider. + bordercolor + Sets the color of the border enclosing the slider. + borderwidth + Sets the width (in px) of the border enclosing the + slider. + currentvalue + :class:`plotly.graph_objects.layout.slider.Currentvalue + ` instance or dict with compatible properties + font + Sets the font of the slider step labels. + len + 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. + lenmode + Determines whether this slider length is set in units + of plot "fraction" or in *pixels. Use `len` to set the + value. + minorticklen + Sets the length in pixels of minor step tick marks + name + 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. + pad + Set the padding of the slider component along each + side. + steps + A tuple of + :class:`plotly.graph_objects.layout.slider.Step` + instances or dicts with compatible properties + stepdefaults + When used in a template (as + layout.template.layout.slider.stepdefaults), sets the + default property values to use for elements of + layout.slider.steps + templateitemname + 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`. + tickcolor + Sets the color of the border enclosing the slider. + ticklen + Sets the length in pixels of step tick marks + tickwidth + Sets the tick width (in px). + transition + :class:`plotly.graph_objects.layout.slider.Transition` + instance or dict with compatible properties + visible + Determines whether or not the slider is visible. + x + Sets the x position (in normalized coordinates) of the + slider. + xanchor + Sets the slider's horizontal position anchor. This + anchor binds the `x` position to the "left", "center" + or "right" of the range selector. + y + Sets the y position (in normalized coordinates) of the + slider. + yanchor + Sets the slider's vertical position anchor This anchor + binds the `y` position to the "top", "middle" or + "bottom" of the range selector. + """ + + def __init__( + self, + arg=None, + active=None, + activebgcolor=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + currentvalue=None, + font=None, + len=None, + lenmode=None, + minorticklen=None, + name=None, + pad=None, + steps=None, + stepdefaults=None, + templateitemname=None, + tickcolor=None, + ticklen=None, + tickwidth=None, + transition=None, + visible=None, + x=None, + xanchor=None, + y=None, + yanchor=None, + **kwargs, + ): + """ + Construct a new Slider object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Slider` + active + Determines which button (by index starting from 0) is + considered active. + activebgcolor + Sets the background color of the slider grip while + dragging. + bgcolor + Sets the background color of the slider. + bordercolor + Sets the color of the border enclosing the slider. + borderwidth + Sets the width (in px) of the border enclosing the + slider. + currentvalue + :class:`plotly.graph_objects.layout.slider.Currentvalue + ` instance or dict with compatible properties + font + Sets the font of the slider step labels. + len + 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. + lenmode + Determines whether this slider length is set in units + of plot "fraction" or in *pixels. Use `len` to set the + value. + minorticklen + Sets the length in pixels of minor step tick marks + name + 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. + pad + Set the padding of the slider component along each + side. + steps + A tuple of + :class:`plotly.graph_objects.layout.slider.Step` + instances or dicts with compatible properties + stepdefaults + When used in a template (as + layout.template.layout.slider.stepdefaults), sets the + default property values to use for elements of + layout.slider.steps + templateitemname + 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`. + tickcolor + Sets the color of the border enclosing the slider. + ticklen + Sets the length in pixels of step tick marks + tickwidth + Sets the tick width (in px). + transition + :class:`plotly.graph_objects.layout.slider.Transition` + instance or dict with compatible properties + visible + Determines whether or not the slider is visible. + x + Sets the x position (in normalized coordinates) of the + slider. + xanchor + Sets the slider's horizontal position anchor. This + anchor binds the `x` position to the "left", "center" + or "right" of the range selector. + y + Sets the y position (in normalized coordinates) of the + slider. + yanchor + Sets the slider's vertical position anchor This anchor + binds the `y` position to the "top", "middle" or + "bottom" of the range selector. + + Returns + ------- + Slider + """ + super().__init__("sliders") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Slider +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Slider`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("active", arg, active) + self._set_property("activebgcolor", arg, activebgcolor) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("currentvalue", arg, currentvalue) + self._set_property("font", arg, font) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minorticklen", arg, minorticklen) + self._set_property("name", arg, name) + self._set_property("pad", arg, pad) + self._set_property("steps", arg, steps) + self._set_property("stepdefaults", arg, stepdefaults) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("transition", arg, transition) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_smith.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_smith.py new file mode 100644 index 0000000..061e679 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_smith.py @@ -0,0 +1,166 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Smith(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.smith" + _valid_props = {"bgcolor", "domain", "imaginaryaxis", "realaxis"} + + @property + def bgcolor(self): + """ + Set the background color of the subplot + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.smith.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.smith.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def imaginaryaxis(self): + """ + The 'imaginaryaxis' property is an instance of Imaginaryaxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.smith.Imaginaryaxis` + - A dict of string/value properties that will be passed + to the Imaginaryaxis constructor + + Returns + ------- + plotly.graph_objs.layout.smith.Imaginaryaxis + """ + return self["imaginaryaxis"] + + @imaginaryaxis.setter + def imaginaryaxis(self, val): + self["imaginaryaxis"] = val + + @property + def realaxis(self): + """ + The 'realaxis' property is an instance of Realaxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.smith.Realaxis` + - A dict of string/value properties that will be passed + to the Realaxis constructor + + Returns + ------- + plotly.graph_objs.layout.smith.Realaxis + """ + return self["realaxis"] + + @realaxis.setter + def realaxis(self, val): + self["realaxis"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Set the background color of the subplot + domain + :class:`plotly.graph_objects.layout.smith.Domain` + instance or dict with compatible properties + imaginaryaxis + :class:`plotly.graph_objects.layout.smith.Imaginaryaxis + ` instance or dict with compatible properties + realaxis + :class:`plotly.graph_objects.layout.smith.Realaxis` + instance or dict with compatible properties + """ + + def __init__( + self, + arg=None, + bgcolor=None, + domain=None, + imaginaryaxis=None, + realaxis=None, + **kwargs, + ): + """ + Construct a new Smith object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Smith` + bgcolor + Set the background color of the subplot + domain + :class:`plotly.graph_objects.layout.smith.Domain` + instance or dict with compatible properties + imaginaryaxis + :class:`plotly.graph_objects.layout.smith.Imaginaryaxis + ` instance or dict with compatible properties + realaxis + :class:`plotly.graph_objects.layout.smith.Realaxis` + instance or dict with compatible properties + + Returns + ------- + Smith + """ + super().__init__("smith") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Smith +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Smith`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("domain", arg, domain) + self._set_property("imaginaryaxis", arg, imaginaryaxis) + self._set_property("realaxis", arg, realaxis) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_template.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_template.py new file mode 100644 index 0000000..90eb3f6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_template.py @@ -0,0 +1,133 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy +import warnings + + +class Template(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.template" + _valid_props = {"data", "layout"} + + @property + def data(self): + """ + The 'data' property is an instance of Data + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.template.Data` + - A dict of string/value properties that will be passed + to the Data constructor + + Returns + ------- + plotly.graph_objs.layout.template.Data + """ + return self["data"] + + @data.setter + def data(self, val): + self["data"] = val + + @property + def layout(self): + """ + The 'layout' property is an instance of Layout + that may be specified as: + - An instance of :class:`plotly.graph_objs.Layout` + - A dict of string/value properties that will be passed + to the Layout constructor + + Returns + ------- + plotly.graph_objs.layout.template.Layout + """ + return self["layout"] + + @layout.setter + def layout(self, val): + self["layout"] = val + + @property + def _prop_descriptions(self): + return """\ + data + :class:`plotly.graph_objects.layout.template.Data` + instance or dict with compatible properties + layout + :class:`plotly.graph_objects.Layout` instance or dict + with compatible properties + """ + + def __init__(self, arg=None, data=None, layout=None, **kwargs): + """ + Construct a new Template object + + Default attributes to be applied to the plot. This should be a + dict with format: `{'layout': layoutTemplate, 'data': + {trace_type: [traceTemplate, ...], ...}}` where + `layoutTemplate` is a dict matching the structure of + `figure.layout` and `traceTemplate` is a dict matching the + structure of the trace with type `trace_type` (e.g. 'scatter'). + Alternatively, this may be specified as an instance of + plotly.graph_objs.layout.Template. Trace templates are applied + cyclically to traces of each type. Container arrays (eg + `annotations`) have special handling: An object ending in + `defaults` (eg `annotationdefaults`) is applied to each array + item. But if an item has a `templateitemname` key we look in + the template array for an item with matching `name` and apply + that instead. If no matching `name` is found we mark the item + invisible. Any named template item not referenced is appended + to the end of the array, so this can be used to add a watermark + annotation or a logo image, for example. To omit one of these + items on the plot, make an item with matching + `templateitemname` and `visible: false`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Template` + data + :class:`plotly.graph_objects.layout.template.Data` + instance or dict with compatible properties + layout + :class:`plotly.graph_objects.Layout` instance or dict + with compatible properties + + Returns + ------- + Template + """ + super().__init__("template") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Template +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Template`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + # Template.data contains a 'scattermapbox' key, which causes a + # go.Scattermapbox trace object to be created during validation. + # In order to prevent false deprecation warnings from surfacing, + # we suppress deprecation warnings for this line only. + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=DeprecationWarning) + self._set_property("data", arg, data) + self._set_property("layout", arg, layout) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_ternary.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_ternary.py new file mode 100644 index 0000000..c8cb58f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_ternary.py @@ -0,0 +1,250 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Ternary(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.ternary" + _valid_props = {"aaxis", "baxis", "bgcolor", "caxis", "domain", "sum", "uirevision"} + + @property + def aaxis(self): + """ + The 'aaxis' property is an instance of Aaxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.Aaxis` + - A dict of string/value properties that will be passed + to the Aaxis constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.Aaxis + """ + return self["aaxis"] + + @aaxis.setter + def aaxis(self, val): + self["aaxis"] = val + + @property + def baxis(self): + """ + The 'baxis' property is an instance of Baxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.Baxis` + - A dict of string/value properties that will be passed + to the Baxis constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.Baxis + """ + return self["baxis"] + + @baxis.setter + def baxis(self, val): + self["baxis"] = val + + @property + def bgcolor(self): + """ + Set the background color of the subplot + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def caxis(self): + """ + The 'caxis' property is an instance of Caxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.Caxis` + - A dict of string/value properties that will be passed + to the Caxis constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.Caxis + """ + return self["caxis"] + + @caxis.setter + def caxis(self, val): + self["caxis"] = val + + @property + def domain(self): + """ + The 'domain' property is an instance of Domain + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.Domain` + - A dict of string/value properties that will be passed + to the Domain constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.Domain + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def sum(self): + """ + The number each triplet should sum to, and the maximum range of + each axis + + The 'sum' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sum"] + + @sum.setter + def sum(self, val): + self["sum"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `min` and + `title`, if not overridden in the individual axes. Defaults to + `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def _prop_descriptions(self): + return """\ + aaxis + :class:`plotly.graph_objects.layout.ternary.Aaxis` + instance or dict with compatible properties + baxis + :class:`plotly.graph_objects.layout.ternary.Baxis` + instance or dict with compatible properties + bgcolor + Set the background color of the subplot + caxis + :class:`plotly.graph_objects.layout.ternary.Caxis` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.ternary.Domain` + instance or dict with compatible properties + sum + The number each triplet should sum to, and the maximum + range of each axis + uirevision + Controls persistence of user-driven changes in axis + `min` and `title`, if not overridden in the individual + axes. Defaults to `layout.uirevision`. + """ + + def __init__( + self, + arg=None, + aaxis=None, + baxis=None, + bgcolor=None, + caxis=None, + domain=None, + sum=None, + uirevision=None, + **kwargs, + ): + """ + Construct a new Ternary object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Ternary` + aaxis + :class:`plotly.graph_objects.layout.ternary.Aaxis` + instance or dict with compatible properties + baxis + :class:`plotly.graph_objects.layout.ternary.Baxis` + instance or dict with compatible properties + bgcolor + Set the background color of the subplot + caxis + :class:`plotly.graph_objects.layout.ternary.Caxis` + instance or dict with compatible properties + domain + :class:`plotly.graph_objects.layout.ternary.Domain` + instance or dict with compatible properties + sum + The number each triplet should sum to, and the maximum + range of each axis + uirevision + Controls persistence of user-driven changes in axis + `min` and `title`, if not overridden in the individual + axes. Defaults to `layout.uirevision`. + + Returns + ------- + Ternary + """ + super().__init__("ternary") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Ternary +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Ternary`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("aaxis", arg, aaxis) + self._set_property("baxis", arg, baxis) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("caxis", arg, caxis) + self._set_property("domain", arg, domain) + self._set_property("sum", arg, sum) + self._set_property("uirevision", arg, uirevision) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_title.py new file mode 100644 index 0000000..47301d8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_title.py @@ -0,0 +1,450 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.title" + _valid_props = { + "automargin", + "font", + "pad", + "subtitle", + "text", + "x", + "xanchor", + "xref", + "y", + "yanchor", + "yref", + } + + @property + def automargin(self): + """ + 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. + + The 'automargin' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["automargin"] + + @automargin.setter + def automargin(self, val): + self["automargin"] = val + + @property + def font(self): + """ + Sets the title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def pad(self): + """ + 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". + + The 'pad' property is an instance of Pad + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.title.Pad` + - A dict of string/value properties that will be passed + to the Pad constructor + + Returns + ------- + plotly.graph_objs.layout.title.Pad + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def subtitle(self): + """ + The 'subtitle' property is an instance of Subtitle + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.title.Subtitle` + - A dict of string/value properties that will be passed + to the Subtitle constructor + + Returns + ------- + plotly.graph_objs.layout.title.Subtitle + """ + return self["subtitle"] + + @subtitle.setter + def subtitle(self, val): + self["subtitle"] = val + + @property + def text(self): + """ + Sets the plot's title. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def x(self): + """ + Sets the x position with respect to `xref` in normalized + coordinates from 0 (left) to 1 (right). + + The 'x' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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`. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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`. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + automargin + 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. + font + Sets the title font. + pad + 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". + subtitle + :class:`plotly.graph_objects.layout.title.Subtitle` + instance or dict with compatible properties + text + Sets the plot's title. + x + Sets the x position with respect to `xref` in + normalized coordinates from 0 (left) to 1 (right). + xanchor + 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`. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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. + yanchor + 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`. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + automargin=None, + font=None, + pad=None, + subtitle=None, + text=None, + x=None, + xanchor=None, + xref=None, + y=None, + yanchor=None, + yref=None, + **kwargs, + ): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.Title` + automargin + 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. + font + Sets the title font. + pad + 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". + subtitle + :class:`plotly.graph_objects.layout.title.Subtitle` + instance or dict with compatible properties + text + Sets the plot's title. + x + Sets the x position with respect to `xref` in + normalized coordinates from 0 (left) to 1 (right). + xanchor + 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`. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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. + yanchor + 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`. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("automargin", arg, automargin) + self._set_property("font", arg, font) + self._set_property("pad", arg, pad) + self._set_property("subtitle", arg, subtitle) + self._set_property("text", arg, text) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_transition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_transition.py new file mode 100644 index 0000000..fec6a28 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_transition.py @@ -0,0 +1,144 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Transition(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.transition" + _valid_props = {"duration", "easing", "ordering"} + + @property + def duration(self): + """ + The duration of the transition, in milliseconds. If equal to + zero, updates are synchronous. + + The 'duration' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["duration"] + + @duration.setter + def duration(self, val): + self["duration"] = val + + @property + def easing(self): + """ + The easing function used for the transition + + The 'easing' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['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'] + + Returns + ------- + Any + """ + return self["easing"] + + @easing.setter + def easing(self, val): + self["easing"] = val + + @property + def ordering(self): + """ + Determines whether the figure's layout or traces smoothly + transitions during updates that make both traces and layout + change. + + The 'ordering' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['layout first', 'traces first'] + + Returns + ------- + Any + """ + return self["ordering"] + + @ordering.setter + def ordering(self, val): + self["ordering"] = val + + @property + def _prop_descriptions(self): + return """\ + duration + The duration of the transition, in milliseconds. If + equal to zero, updates are synchronous. + easing + The easing function used for the transition + ordering + Determines whether the figure's layout or traces + smoothly transitions during updates that make both + traces and layout change. + """ + + def __init__(self, arg=None, duration=None, easing=None, ordering=None, **kwargs): + """ + Construct a new Transition object + + Sets transition options used during Plotly.react updates. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Transition` + duration + The duration of the transition, in milliseconds. If + equal to zero, updates are synchronous. + easing + The easing function used for the transition + ordering + Determines whether the figure's layout or traces + smoothly transitions during updates that make both + traces and layout change. + + Returns + ------- + Transition + """ + super().__init__("transition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Transition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Transition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("duration", arg, duration) + self._set_property("easing", arg, easing) + self._set_property("ordering", arg, ordering) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_uniformtext.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_uniformtext.py new file mode 100644 index 0000000..a47da28 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_uniformtext.py @@ -0,0 +1,124 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Uniformtext(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.uniformtext" + _valid_props = {"minsize", "mode"} + + @property + def minsize(self): + """ + Sets the minimum text size between traces of the same type. + + The 'minsize' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minsize"] + + @minsize.setter + def minsize(self, val): + self["minsize"] = val + + @property + def mode(self): + """ + 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. + + The 'mode' property is an enumeration that may be specified as: + - One of the following enumeration values: + [False, 'hide', 'show'] + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def _prop_descriptions(self): + return """\ + minsize + Sets the minimum text size between traces of the same + type. + mode + 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. + """ + + def __init__(self, arg=None, minsize=None, mode=None, **kwargs): + """ + Construct a new Uniformtext object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Uniformtext` + minsize + Sets the minimum text size between traces of the same + type. + mode + 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. + + Returns + ------- + Uniformtext + """ + super().__init__("uniformtext") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Uniformtext +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Uniformtext`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("minsize", arg, minsize) + self._set_property("mode", arg, mode) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_updatemenu.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_updatemenu.py new file mode 100644 index 0000000..ebd1e67 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_updatemenu.py @@ -0,0 +1,632 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Updatemenu(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.updatemenu" + _valid_props = { + "active", + "bgcolor", + "bordercolor", + "borderwidth", + "buttondefaults", + "buttons", + "direction", + "font", + "name", + "pad", + "showactive", + "templateitemname", + "type", + "visible", + "x", + "xanchor", + "y", + "yanchor", + } + + @property + def active(self): + """ + Determines which button (by index starting from 0) is + considered active. + + The 'active' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + + Returns + ------- + int + """ + return self["active"] + + @active.setter + def active(self, val): + self["active"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the update menu buttons. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the update menu. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the update menu. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def buttons(self): + """ + The 'buttons' property is a tuple of instances of + Button that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.updatemenu.Button + - A list or tuple of dicts of string/value properties that + will be passed to the Button constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.updatemenu.Button] + """ + return self["buttons"] + + @buttons.setter + def buttons(self, val): + self["buttons"] = val + + @property + def buttondefaults(self): + """ + When used in a template (as + layout.template.layout.updatemenu.buttondefaults), sets the + default property values to use for elements of + layout.updatemenu.buttons + + The 'buttondefaults' property is an instance of Button + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.updatemenu.Button` + - A dict of string/value properties that will be passed + to the Button constructor + + Returns + ------- + plotly.graph_objs.layout.updatemenu.Button + """ + return self["buttondefaults"] + + @buttondefaults.setter + def buttondefaults(self, val): + self["buttondefaults"] = val + + @property + def direction(self): + """ + 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. + + The 'direction' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'up', 'down'] + + Returns + ------- + Any + """ + return self["direction"] + + @direction.setter + def direction(self, val): + self["direction"] = val + + @property + def font(self): + """ + Sets the font of the update menu button text. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.updatemenu.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.updatemenu.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def pad(self): + """ + Sets the padding around the buttons or dropdown menu. + + The 'pad' property is an instance of Pad + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.updatemenu.Pad` + - A dict of string/value properties that will be passed + to the Pad constructor + + Returns + ------- + plotly.graph_objs.layout.updatemenu.Pad + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def showactive(self): + """ + Highlights active dropdown item or active button if true. + + The 'showactive' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showactive"] + + @showactive.setter + def showactive(self, val): + self["showactive"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def type(self): + """ + Determines whether the buttons are accessible via a dropdown + menu or whether the buttons are stacked horizontally or + vertically + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['dropdown', 'buttons'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + Determines whether or not the update menu is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x position (in normalized coordinates) of the update + menu. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-2, 3] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + Sets the update menu's horizontal position anchor. This anchor + binds the `x` position to the "left", "center" or "right" of + the range selector. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def y(self): + """ + Sets the y position (in normalized coordinates) of the update + menu. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-2, 3] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + Sets the update menu's vertical position anchor This anchor + binds the `y` position to the "top", "middle" or "bottom" of + the range selector. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def _prop_descriptions(self): + return """\ + active + Determines which button (by index starting from 0) is + considered active. + bgcolor + Sets the background color of the update menu buttons. + bordercolor + Sets the color of the border enclosing the update menu. + borderwidth + Sets the width (in px) of the border enclosing the + update menu. + buttons + A tuple of + :class:`plotly.graph_objects.layout.updatemenu.Button` + instances or dicts with compatible properties + buttondefaults + When used in a template (as + layout.template.layout.updatemenu.buttondefaults), sets + the default property values to use for elements of + layout.updatemenu.buttons + direction + 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. + font + Sets the font of the update menu button text. + name + 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. + pad + Sets the padding around the buttons or dropdown menu. + showactive + Highlights active dropdown item or active button if + true. + templateitemname + 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`. + type + Determines whether the buttons are accessible via a + dropdown menu or whether the buttons are stacked + horizontally or vertically + visible + Determines whether or not the update menu is visible. + x + Sets the x position (in normalized coordinates) of the + update menu. + xanchor + Sets the update menu's horizontal position anchor. This + anchor binds the `x` position to the "left", "center" + or "right" of the range selector. + y + Sets the y position (in normalized coordinates) of the + update menu. + yanchor + Sets the update menu's vertical position anchor This + anchor binds the `y` position to the "top", "middle" or + "bottom" of the range selector. + """ + + def __init__( + self, + arg=None, + active=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + buttons=None, + buttondefaults=None, + direction=None, + font=None, + name=None, + pad=None, + showactive=None, + templateitemname=None, + type=None, + visible=None, + x=None, + xanchor=None, + y=None, + yanchor=None, + **kwargs, + ): + """ + Construct a new Updatemenu object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.Updatemenu` + active + Determines which button (by index starting from 0) is + considered active. + bgcolor + Sets the background color of the update menu buttons. + bordercolor + Sets the color of the border enclosing the update menu. + borderwidth + Sets the width (in px) of the border enclosing the + update menu. + buttons + A tuple of + :class:`plotly.graph_objects.layout.updatemenu.Button` + instances or dicts with compatible properties + buttondefaults + When used in a template (as + layout.template.layout.updatemenu.buttondefaults), sets + the default property values to use for elements of + layout.updatemenu.buttons + direction + 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. + font + Sets the font of the update menu button text. + name + 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. + pad + Sets the padding around the buttons or dropdown menu. + showactive + Highlights active dropdown item or active button if + true. + templateitemname + 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`. + type + Determines whether the buttons are accessible via a + dropdown menu or whether the buttons are stacked + horizontally or vertically + visible + Determines whether or not the update menu is visible. + x + Sets the x position (in normalized coordinates) of the + update menu. + xanchor + Sets the update menu's horizontal position anchor. This + anchor binds the `x` position to the "left", "center" + or "right" of the range selector. + y + Sets the y position (in normalized coordinates) of the + update menu. + yanchor + Sets the update menu's vertical position anchor This + anchor binds the `y` position to the "top", "middle" or + "bottom" of the range selector. + + Returns + ------- + Updatemenu + """ + super().__init__("updatemenus") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.Updatemenu +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.Updatemenu`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("active", arg, active) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("buttons", arg, buttons) + self._set_property("buttondefaults", arg, buttondefaults) + self._set_property("direction", arg, direction) + self._set_property("font", arg, font) + self._set_property("name", arg, name) + self._set_property("pad", arg, pad) + self._set_property("showactive", arg, showactive) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_xaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_xaxis.py new file mode 100644 index 0000000..901e418 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_xaxis.py @@ -0,0 +1,3415 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class XAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.xaxis" + _valid_props = { + "anchor", + "automargin", + "autorange", + "autorangeoptions", + "autotickangles", + "autotypenumbers", + "calendar", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "constrain", + "constraintoward", + "dividercolor", + "dividerwidth", + "domain", + "dtick", + "exponentformat", + "fixedrange", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "insiderange", + "labelalias", + "layer", + "linecolor", + "linewidth", + "matches", + "maxallowed", + "minallowed", + "minexponent", + "minor", + "mirror", + "nticks", + "overlaying", + "position", + "range", + "rangebreakdefaults", + "rangebreaks", + "rangemode", + "rangeselector", + "rangeslider", + "scaleanchor", + "scaleratio", + "separatethousands", + "showdividers", + "showexponent", + "showgrid", + "showline", + "showspikes", + "showticklabels", + "showtickprefix", + "showticksuffix", + "side", + "spikecolor", + "spikedash", + "spikemode", + "spikesnap", + "spikethickness", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelindex", + "ticklabelindexsrc", + "ticklabelmode", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelshift", + "ticklabelstandoff", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "tickson", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "type", + "uirevision", + "visible", + "zeroline", + "zerolinecolor", + "zerolinewidth", + } + + @property + def anchor(self): + """ + 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`. + + The 'anchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['free'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["anchor"] + + @anchor.setter + def anchor(self, val): + self["anchor"] = val + + @property + def automargin(self): + """ + Determines whether long tick labels automatically grow the + figure margins. + + The 'automargin' property is a flaglist and may be specified + as a string containing: + - Any combination of ['height', 'width', 'left', 'right', 'top', 'bottom'] joined with '+' characters + (e.g. 'height+width') + OR exactly one of [True, False] (e.g. 'False') + + Returns + ------- + Any + """ + return self["automargin"] + + @automargin.setter + def automargin(self, val): + self["automargin"] = val + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed', 'min reversed', 'max reversed', + 'min', 'max'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autorangeoptions(self): + """ + The 'autorangeoptions' property is an instance of Autorangeoptions + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Autorangeoptions` + - A dict of string/value properties that will be passed + to the Autorangeoptions constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Autorangeoptions + """ + return self["autorangeoptions"] + + @autorangeoptions.setter + def autorangeoptions(self, val): + self["autorangeoptions"] = val + + @property + def autotickangles(self): + """ + 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. + + The 'autotickangles' property is an info array that may be specified as: + * a list of elements where: + The 'autotickangles[i]' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + list + """ + return self["autotickangles"] + + @autotickangles.setter + def autotickangles(self, val): + self["autotickangles"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def calendar(self): + """ + 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` + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def constrain(self): + """ + 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. + + The 'constrain' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['range', 'domain'] + + Returns + ------- + Any + """ + return self["constrain"] + + @constrain.setter + def constrain(self, val): + self["constrain"] = val + + @property + def constraintoward(self): + """ + 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. + + The 'constraintoward' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["constraintoward"] + + @constraintoward.setter + def constraintoward(self, val): + self["constraintoward"] = val + + @property + def dividercolor(self): + """ + Sets the color of the dividers Only has an effect on + "multicategory" axes. + + The 'dividercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["dividercolor"] + + @dividercolor.setter + def dividercolor(self, val): + self["dividercolor"] = val + + @property + def dividerwidth(self): + """ + Sets the width (in px) of the dividers Only has an effect on + "multicategory" axes. + + The 'dividerwidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dividerwidth"] + + @dividerwidth.setter + def dividerwidth(self, val): + self["dividerwidth"] = val + + @property + def domain(self): + """ + Sets the domain of this axis (in plot fraction). + + The 'domain' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'domain[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'domain[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def fixedrange(self): + """ + Determines whether or not this axis is zoom-able. If true, then + zoom is disabled. + + The 'fixedrange' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["fixedrange"] + + @fixedrange.setter + def fixedrange(self, val): + self["fixedrange"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def insiderange(self): + """ + 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. + + The 'insiderange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'insiderange[0]' property accepts values of any type + (1) The 'insiderange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["insiderange"] + + @insiderange.setter + def insiderange(self, val): + self["insiderange"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def matches(self): + """ + 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`. + + The 'matches' property is an enumeration that may be specified as: + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["matches"] + + @matches.setter + def matches(self, val): + self["matches"] = val + + @property + def maxallowed(self): + """ + Determines the maximum range of this axis. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Determines the minimum range of this axis. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def minor(self): + """ + The 'minor' property is an instance of Minor + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Minor` + - A dict of string/value properties that will be passed + to the Minor constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Minor + """ + return self["minor"] + + @minor.setter + def minor(self, val): + self["minor"] = val + + @property + def mirror(self): + """ + 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. + + The 'mirror' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, 'ticks', False, 'all', 'allticks'] + + Returns + ------- + Any + """ + return self["mirror"] + + @mirror.setter + def mirror(self, val): + self["mirror"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def overlaying(self): + """ + 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. + + The 'overlaying' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['free'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["overlaying"] + + @overlaying.setter + def overlaying(self, val): + self["overlaying"] = val + + @property + def position(self): + """ + Sets the position of this axis in the plotting space (in + normalized coordinates). Only has an effect if `anchor` is set + to "free". + + The 'position' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["position"] + + @position.setter + def position(self, val): + self["position"] = val + + @property + def range(self): + """ + 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`. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangebreaks(self): + """ + The 'rangebreaks' property is a tuple of instances of + Rangebreak that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.xaxis.Rangebreak + - A list or tuple of dicts of string/value properties that + will be passed to the Rangebreak constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.xaxis.Rangebreak] + """ + return self["rangebreaks"] + + @rangebreaks.setter + def rangebreaks(self, val): + self["rangebreaks"] = val + + @property + def rangebreakdefaults(self): + """ + When used in a template (as + layout.template.layout.xaxis.rangebreakdefaults), sets the + default property values to use for elements of + layout.xaxis.rangebreaks + + The 'rangebreakdefaults' property is an instance of Rangebreak + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Rangebreak` + - A dict of string/value properties that will be passed + to the Rangebreak constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Rangebreak + """ + return self["rangebreakdefaults"] + + @rangebreakdefaults.setter + def rangebreakdefaults(self, val): + self["rangebreakdefaults"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def rangeselector(self): + """ + The 'rangeselector' property is an instance of Rangeselector + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Rangeselector` + - A dict of string/value properties that will be passed + to the Rangeselector constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Rangeselector + """ + return self["rangeselector"] + + @rangeselector.setter + def rangeselector(self, val): + self["rangeselector"] = val + + @property + def rangeslider(self): + """ + The 'rangeslider' property is an instance of Rangeslider + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Rangeslider` + - A dict of string/value properties that will be passed + to the Rangeslider constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Rangeslider + """ + return self["rangeslider"] + + @rangeslider.setter + def rangeslider(self, val): + self["rangeslider"] = val + + @property + def scaleanchor(self): + """ + 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). + + The 'scaleanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + [False] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["scaleanchor"] + + @scaleanchor.setter + def scaleanchor(self, val): + self["scaleanchor"] = val + + @property + def scaleratio(self): + """ + 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. + + The 'scaleratio' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["scaleratio"] + + @scaleratio.setter + def scaleratio(self, val): + self["scaleratio"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showdividers(self): + """ + Determines whether or not a dividers are drawn between the + category levels of this axis. Only has an effect on + "multicategory" axes. + + The 'showdividers' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showdividers"] + + @showdividers.setter + def showdividers(self, val): + self["showdividers"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showspikes(self): + """ + Determines whether or not spikes (aka droplines) are drawn for + this axis. Note: This only takes affect when hovermode = + closest + + The 'showspikes' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showspikes"] + + @showspikes.setter + def showspikes(self, val): + self["showspikes"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def side(self): + """ + Determines whether a x (y) axis is positioned at the "bottom" + ("left") or "top" ("right") of the plotting area. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom', 'left', 'right'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def spikecolor(self): + """ + Sets the spike color. If undefined, will use the series color + + The 'spikecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["spikecolor"] + + @spikecolor.setter + def spikecolor(self, val): + self["spikecolor"] = val + + @property + def spikedash(self): + """ + 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"). + + The 'spikedash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["spikedash"] + + @spikedash.setter + def spikedash(self, val): + self["spikedash"] = val + + @property + def spikemode(self): + """ + 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 + + The 'spikemode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['toaxis', 'across', 'marker'] joined with '+' characters + (e.g. 'toaxis+across') + + Returns + ------- + Any + """ + return self["spikemode"] + + @spikemode.setter + def spikemode(self, val): + self["spikemode"] = val + + @property + def spikesnap(self): + """ + Determines whether spikelines are stuck to the cursor or to the + closest datapoints. + + The 'spikesnap' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['data', 'cursor', 'hovered data'] + + Returns + ------- + Any + """ + return self["spikesnap"] + + @spikesnap.setter + def spikesnap(self, val): + self["spikesnap"] = val + + @property + def spikethickness(self): + """ + Sets the width (in px) of the zero line. + + The 'spikethickness' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["spikethickness"] + + @spikethickness.setter + def spikethickness(self, val): + self["spikethickness"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.xaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.xaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.xaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.xaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelindex(self): + """ + 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. + + The 'ticklabelindex' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["ticklabelindex"] + + @ticklabelindex.setter + def ticklabelindex(self, val): + self["ticklabelindex"] = val + + @property + def ticklabelindexsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `ticklabelindex`. + + The 'ticklabelindexsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticklabelindexsrc"] + + @ticklabelindexsrc.setter + def ticklabelindexsrc(self, val): + self["ticklabelindexsrc"] = val + + @property + def ticklabelmode(self): + """ + 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. + + The 'ticklabelmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['instant', 'period'] + + Returns + ------- + Any + """ + return self["ticklabelmode"] + + @ticklabelmode.setter + def ticklabelmode(self, val): + self["ticklabelmode"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". Similarly left or right has + no effect on y axes or when `ticklabelmode` is set to "period". + Has no effect on "multicategory" axes or when `tickson` is set + to "boundaries". 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. + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelshift(self): + """ + 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. + + The 'ticklabelshift' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["ticklabelshift"] + + @ticklabelshift.setter + def ticklabelshift(self, val): + self["ticklabelshift"] = val + + @property + def ticklabelstandoff(self): + """ + 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. + + The 'ticklabelstandoff' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["ticklabelstandoff"] + + @ticklabelstandoff.setter + def ticklabelstandoff(self, val): + self["ticklabelstandoff"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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. + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array', 'sync'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def tickson(self): + """ + 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. + + The 'tickson' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['labels', 'boundaries'] + + Returns + ------- + Any + """ + return self["tickson"] + + @tickson.setter + def tickson(self, val): + self["tickson"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'log', 'date', 'category', + 'multicategory'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `range`, + `autorange`, and `title` if in `editable: true` configuration. + Defaults to `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def zeroline(self): + """ + 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. + + The 'zeroline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zeroline"] + + @zeroline.setter + def zeroline(self, val): + self["zeroline"] = val + + @property + def zerolinecolor(self): + """ + Sets the line color of the zero line. + + The 'zerolinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["zerolinecolor"] + + @zerolinecolor.setter + def zerolinecolor(self, val): + self["zerolinecolor"] = val + + @property + def zerolinewidth(self): + """ + Sets the width (in px) of the zero line. + + The 'zerolinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zerolinewidth"] + + @zerolinewidth.setter + def zerolinewidth(self, val): + self["zerolinewidth"] = val + + @property + def _prop_descriptions(self): + return """\ + anchor + 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`. + automargin + Determines whether long tick labels automatically grow + the figure margins. + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.xaxis.Autorangeopti + ons` instance or dict with compatible properties + autotickangles + 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. + autotypenumbers + 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. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + constrain + 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. + constraintoward + 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. + dividercolor + Sets the color of the dividers Only has an effect on + "multicategory" axes. + dividerwidth + Sets the width (in px) of the dividers Only has an + effect on "multicategory" axes. + domain + Sets the domain of this axis (in plot fraction). + dtick + 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" + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + insiderange + 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. + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + matches + 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`. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + minor + :class:`plotly.graph_objects.layout.xaxis.Minor` + instance or dict with compatible properties + mirror + 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. + nticks + 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". + overlaying + 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. + position + Sets the position of this axis in the plotting space + (in normalized coordinates). Only has an effect if + `anchor` is set to "free". + range + 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`. + rangebreaks + A tuple of + :class:`plotly.graph_objects.layout.xaxis.Rangebreak` + instances or dicts with compatible properties + rangebreakdefaults + When used in a template (as + layout.template.layout.xaxis.rangebreakdefaults), sets + the default property values to use for elements of + layout.xaxis.rangebreaks + rangemode + 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. + rangeselector + :class:`plotly.graph_objects.layout.xaxis.Rangeselector + ` instance or dict with compatible properties + rangeslider + :class:`plotly.graph_objects.layout.xaxis.Rangeslider` + instance or dict with compatible properties + scaleanchor + 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). + scaleratio + 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. + separatethousands + If "true", even 4-digit integers are separated + showdividers + Determines whether or not a dividers are drawn between + the category levels of this axis. Only has an effect on + "multicategory" axes. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Determines whether or not spikes (aka droplines) are + drawn for this axis. Note: This only takes affect when + hovermode = closest + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines whether a x (y) axis is positioned at the + "bottom" ("left") or "top" ("right") of the plotting + area. + spikecolor + Sets the spike color. If undefined, will use the series + color + spikedash + 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"). + spikemode + 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 + spikesnap + Determines whether spikelines are stuck to the cursor + or to the closest datapoints. + spikethickness + Sets the width (in px) of the zero line. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.xaxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.xaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.xaxis.tickformatstops + ticklabelindex + 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. + ticklabelindexsrc + Sets the source reference on Chart Studio Cloud for + `ticklabelindex`. + ticklabelmode + 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. + ticklabeloverflow + 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*. + ticklabelposition + 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". + Similarly left or right has no effect on y axes or when + `ticklabelmode` is set to "period". Has no effect on + "multicategory" axes or when `tickson` is set to + "boundaries". 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. + ticklabelshift + 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. + ticklabelstandoff + 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. + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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. + tickprefix + Sets a tick label prefix. + ticks + 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. + tickson + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.xaxis.Title` + instance or dict with compatible properties + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `range`, `autorange`, and `title` if in `editable: + true` configuration. Defaults to `layout.uirevision`. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + """ + + def __init__( + self, + arg=None, + anchor=None, + automargin=None, + autorange=None, + autorangeoptions=None, + autotickangles=None, + autotypenumbers=None, + calendar=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + constrain=None, + constraintoward=None, + dividercolor=None, + dividerwidth=None, + domain=None, + dtick=None, + exponentformat=None, + fixedrange=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + insiderange=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + matches=None, + maxallowed=None, + minallowed=None, + minexponent=None, + minor=None, + mirror=None, + nticks=None, + overlaying=None, + position=None, + range=None, + rangebreaks=None, + rangebreakdefaults=None, + rangemode=None, + rangeselector=None, + rangeslider=None, + scaleanchor=None, + scaleratio=None, + separatethousands=None, + showdividers=None, + showexponent=None, + showgrid=None, + showline=None, + showspikes=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + side=None, + spikecolor=None, + spikedash=None, + spikemode=None, + spikesnap=None, + spikethickness=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelindex=None, + ticklabelindexsrc=None, + ticklabelmode=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelshift=None, + ticklabelstandoff=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + tickson=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + type=None, + uirevision=None, + visible=None, + zeroline=None, + zerolinecolor=None, + zerolinewidth=None, + **kwargs, + ): + """ + Construct a new XAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.XAxis` + anchor + 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`. + automargin + Determines whether long tick labels automatically grow + the figure margins. + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.xaxis.Autorangeopti + ons` instance or dict with compatible properties + autotickangles + 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. + autotypenumbers + 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. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + constrain + 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. + constraintoward + 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. + dividercolor + Sets the color of the dividers Only has an effect on + "multicategory" axes. + dividerwidth + Sets the width (in px) of the dividers Only has an + effect on "multicategory" axes. + domain + Sets the domain of this axis (in plot fraction). + dtick + 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" + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + insiderange + 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. + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + matches + 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`. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + minor + :class:`plotly.graph_objects.layout.xaxis.Minor` + instance or dict with compatible properties + mirror + 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. + nticks + 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". + overlaying + 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. + position + Sets the position of this axis in the plotting space + (in normalized coordinates). Only has an effect if + `anchor` is set to "free". + range + 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`. + rangebreaks + A tuple of + :class:`plotly.graph_objects.layout.xaxis.Rangebreak` + instances or dicts with compatible properties + rangebreakdefaults + When used in a template (as + layout.template.layout.xaxis.rangebreakdefaults), sets + the default property values to use for elements of + layout.xaxis.rangebreaks + rangemode + 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. + rangeselector + :class:`plotly.graph_objects.layout.xaxis.Rangeselector + ` instance or dict with compatible properties + rangeslider + :class:`plotly.graph_objects.layout.xaxis.Rangeslider` + instance or dict with compatible properties + scaleanchor + 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). + scaleratio + 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. + separatethousands + If "true", even 4-digit integers are separated + showdividers + Determines whether or not a dividers are drawn between + the category levels of this axis. Only has an effect on + "multicategory" axes. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Determines whether or not spikes (aka droplines) are + drawn for this axis. Note: This only takes affect when + hovermode = closest + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines whether a x (y) axis is positioned at the + "bottom" ("left") or "top" ("right") of the plotting + area. + spikecolor + Sets the spike color. If undefined, will use the series + color + spikedash + 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"). + spikemode + 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 + spikesnap + Determines whether spikelines are stuck to the cursor + or to the closest datapoints. + spikethickness + Sets the width (in px) of the zero line. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.xaxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.xaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.xaxis.tickformatstops + ticklabelindex + 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. + ticklabelindexsrc + Sets the source reference on Chart Studio Cloud for + `ticklabelindex`. + ticklabelmode + 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. + ticklabeloverflow + 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*. + ticklabelposition + 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". + Similarly left or right has no effect on y axes or when + `ticklabelmode` is set to "period". Has no effect on + "multicategory" axes or when `tickson` is set to + "boundaries". 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. + ticklabelshift + 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. + ticklabelstandoff + 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. + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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. + tickprefix + Sets a tick label prefix. + ticks + 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. + tickson + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.xaxis.Title` + instance or dict with compatible properties + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `range`, `autorange`, and `title` if in `editable: + true` configuration. Defaults to `layout.uirevision`. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + + Returns + ------- + XAxis + """ + super().__init__("xaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.XAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.XAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("anchor", arg, anchor) + self._set_property("automargin", arg, automargin) + self._set_property("autorange", arg, autorange) + self._set_property("autorangeoptions", arg, autorangeoptions) + self._set_property("autotickangles", arg, autotickangles) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("calendar", arg, calendar) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("constrain", arg, constrain) + self._set_property("constraintoward", arg, constraintoward) + self._set_property("dividercolor", arg, dividercolor) + self._set_property("dividerwidth", arg, dividerwidth) + self._set_property("domain", arg, domain) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("fixedrange", arg, fixedrange) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("insiderange", arg, insiderange) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("matches", arg, matches) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._set_property("minexponent", arg, minexponent) + self._set_property("minor", arg, minor) + self._set_property("mirror", arg, mirror) + self._set_property("nticks", arg, nticks) + self._set_property("overlaying", arg, overlaying) + self._set_property("position", arg, position) + self._set_property("range", arg, range) + self._set_property("rangebreaks", arg, rangebreaks) + self._set_property("rangebreakdefaults", arg, rangebreakdefaults) + self._set_property("rangemode", arg, rangemode) + self._set_property("rangeselector", arg, rangeselector) + self._set_property("rangeslider", arg, rangeslider) + self._set_property("scaleanchor", arg, scaleanchor) + self._set_property("scaleratio", arg, scaleratio) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showdividers", arg, showdividers) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showspikes", arg, showspikes) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("side", arg, side) + self._set_property("spikecolor", arg, spikecolor) + self._set_property("spikedash", arg, spikedash) + self._set_property("spikemode", arg, spikemode) + self._set_property("spikesnap", arg, spikesnap) + self._set_property("spikethickness", arg, spikethickness) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelindex", arg, ticklabelindex) + self._set_property("ticklabelindexsrc", arg, ticklabelindexsrc) + self._set_property("ticklabelmode", arg, ticklabelmode) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelshift", arg, ticklabelshift) + self._set_property("ticklabelstandoff", arg, ticklabelstandoff) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("tickson", arg, tickson) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("zeroline", arg, zeroline) + self._set_property("zerolinecolor", arg, zerolinecolor) + self._set_property("zerolinewidth", arg, zerolinewidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_yaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_yaxis.py new file mode 100644 index 0000000..95cf85f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/_yaxis.py @@ -0,0 +1,3443 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class YAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout" + _path_str = "layout.yaxis" + _valid_props = { + "anchor", + "automargin", + "autorange", + "autorangeoptions", + "autoshift", + "autotickangles", + "autotypenumbers", + "calendar", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "constrain", + "constraintoward", + "dividercolor", + "dividerwidth", + "domain", + "dtick", + "exponentformat", + "fixedrange", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "insiderange", + "labelalias", + "layer", + "linecolor", + "linewidth", + "matches", + "maxallowed", + "minallowed", + "minexponent", + "minor", + "mirror", + "nticks", + "overlaying", + "position", + "range", + "rangebreakdefaults", + "rangebreaks", + "rangemode", + "scaleanchor", + "scaleratio", + "separatethousands", + "shift", + "showdividers", + "showexponent", + "showgrid", + "showline", + "showspikes", + "showticklabels", + "showtickprefix", + "showticksuffix", + "side", + "spikecolor", + "spikedash", + "spikemode", + "spikesnap", + "spikethickness", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelindex", + "ticklabelindexsrc", + "ticklabelmode", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelshift", + "ticklabelstandoff", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "tickson", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "type", + "uirevision", + "visible", + "zeroline", + "zerolinecolor", + "zerolinewidth", + } + + @property + def anchor(self): + """ + 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`. + + The 'anchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['free'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["anchor"] + + @anchor.setter + def anchor(self, val): + self["anchor"] = val + + @property + def automargin(self): + """ + Determines whether long tick labels automatically grow the + figure margins. + + The 'automargin' property is a flaglist and may be specified + as a string containing: + - Any combination of ['height', 'width', 'left', 'right', 'top', 'bottom'] joined with '+' characters + (e.g. 'height+width') + OR exactly one of [True, False] (e.g. 'False') + + Returns + ------- + Any + """ + return self["automargin"] + + @automargin.setter + def automargin(self, val): + self["automargin"] = val + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed', 'min reversed', 'max reversed', + 'min', 'max'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autorangeoptions(self): + """ + The 'autorangeoptions' property is an instance of Autorangeoptions + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.Autorangeoptions` + - A dict of string/value properties that will be passed + to the Autorangeoptions constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.Autorangeoptions + """ + return self["autorangeoptions"] + + @autorangeoptions.setter + def autorangeoptions(self, val): + self["autorangeoptions"] = val + + @property + def autoshift(self): + """ + 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". + + The 'autoshift' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autoshift"] + + @autoshift.setter + def autoshift(self, val): + self["autoshift"] = val + + @property + def autotickangles(self): + """ + 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. + + The 'autotickangles' property is an info array that may be specified as: + * a list of elements where: + The 'autotickangles[i]' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + list + """ + return self["autotickangles"] + + @autotickangles.setter + def autotickangles(self, val): + self["autotickangles"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def calendar(self): + """ + 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` + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def constrain(self): + """ + 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. + + The 'constrain' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['range', 'domain'] + + Returns + ------- + Any + """ + return self["constrain"] + + @constrain.setter + def constrain(self, val): + self["constrain"] = val + + @property + def constraintoward(self): + """ + 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. + + The 'constraintoward' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["constraintoward"] + + @constraintoward.setter + def constraintoward(self, val): + self["constraintoward"] = val + + @property + def dividercolor(self): + """ + Sets the color of the dividers Only has an effect on + "multicategory" axes. + + The 'dividercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["dividercolor"] + + @dividercolor.setter + def dividercolor(self, val): + self["dividercolor"] = val + + @property + def dividerwidth(self): + """ + Sets the width (in px) of the dividers Only has an effect on + "multicategory" axes. + + The 'dividerwidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dividerwidth"] + + @dividerwidth.setter + def dividerwidth(self, val): + self["dividerwidth"] = val + + @property + def domain(self): + """ + Sets the domain of this axis (in plot fraction). + + The 'domain' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'domain[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'domain[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["domain"] + + @domain.setter + def domain(self, val): + self["domain"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def fixedrange(self): + """ + Determines whether or not this axis is zoom-able. If true, then + zoom is disabled. + + The 'fixedrange' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["fixedrange"] + + @fixedrange.setter + def fixedrange(self, val): + self["fixedrange"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def insiderange(self): + """ + 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. + + The 'insiderange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'insiderange[0]' property accepts values of any type + (1) The 'insiderange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["insiderange"] + + @insiderange.setter + def insiderange(self, val): + self["insiderange"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def matches(self): + """ + 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`. + + The 'matches' property is an enumeration that may be specified as: + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["matches"] + + @matches.setter + def matches(self, val): + self["matches"] = val + + @property + def maxallowed(self): + """ + Determines the maximum range of this axis. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Determines the minimum range of this axis. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def minor(self): + """ + The 'minor' property is an instance of Minor + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.Minor` + - A dict of string/value properties that will be passed + to the Minor constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.Minor + """ + return self["minor"] + + @minor.setter + def minor(self, val): + self["minor"] = val + + @property + def mirror(self): + """ + 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. + + The 'mirror' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, 'ticks', False, 'all', 'allticks'] + + Returns + ------- + Any + """ + return self["mirror"] + + @mirror.setter + def mirror(self, val): + self["mirror"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def overlaying(self): + """ + 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. + + The 'overlaying' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['free'] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["overlaying"] + + @overlaying.setter + def overlaying(self, val): + self["overlaying"] = val + + @property + def position(self): + """ + Sets the position of this axis in the plotting space (in + normalized coordinates). Only has an effect if `anchor` is set + to "free". + + The 'position' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["position"] + + @position.setter + def position(self, val): + self["position"] = val + + @property + def range(self): + """ + 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`. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangebreaks(self): + """ + The 'rangebreaks' property is a tuple of instances of + Rangebreak that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.yaxis.Rangebreak + - A list or tuple of dicts of string/value properties that + will be passed to the Rangebreak constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.yaxis.Rangebreak] + """ + return self["rangebreaks"] + + @rangebreaks.setter + def rangebreaks(self, val): + self["rangebreaks"] = val + + @property + def rangebreakdefaults(self): + """ + When used in a template (as + layout.template.layout.yaxis.rangebreakdefaults), sets the + default property values to use for elements of + layout.yaxis.rangebreaks + + The 'rangebreakdefaults' property is an instance of Rangebreak + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.Rangebreak` + - A dict of string/value properties that will be passed + to the Rangebreak constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.Rangebreak + """ + return self["rangebreakdefaults"] + + @rangebreakdefaults.setter + def rangebreakdefaults(self, val): + self["rangebreakdefaults"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def scaleanchor(self): + """ + 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). + + The 'scaleanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + [False] + - A string that matches one of the following regular expressions: + ['^x([2-9]|[1-9][0-9]+)?( domain)?$', + '^y([2-9]|[1-9][0-9]+)?( domain)?$'] + + Returns + ------- + Any + """ + return self["scaleanchor"] + + @scaleanchor.setter + def scaleanchor(self, val): + self["scaleanchor"] = val + + @property + def scaleratio(self): + """ + 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. + + The 'scaleratio' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["scaleratio"] + + @scaleratio.setter + def scaleratio(self, val): + self["scaleratio"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def shift(self): + """ + 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". + + The 'shift' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["shift"] + + @shift.setter + def shift(self, val): + self["shift"] = val + + @property + def showdividers(self): + """ + Determines whether or not a dividers are drawn between the + category levels of this axis. Only has an effect on + "multicategory" axes. + + The 'showdividers' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showdividers"] + + @showdividers.setter + def showdividers(self, val): + self["showdividers"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showspikes(self): + """ + Determines whether or not spikes (aka droplines) are drawn for + this axis. Note: This only takes affect when hovermode = + closest + + The 'showspikes' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showspikes"] + + @showspikes.setter + def showspikes(self, val): + self["showspikes"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def side(self): + """ + Determines whether a x (y) axis is positioned at the "bottom" + ("left") or "top" ("right") of the plotting area. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom', 'left', 'right'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def spikecolor(self): + """ + Sets the spike color. If undefined, will use the series color + + The 'spikecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["spikecolor"] + + @spikecolor.setter + def spikecolor(self, val): + self["spikecolor"] = val + + @property + def spikedash(self): + """ + 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"). + + The 'spikedash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["spikedash"] + + @spikedash.setter + def spikedash(self, val): + self["spikedash"] = val + + @property + def spikemode(self): + """ + 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 + + The 'spikemode' property is a flaglist and may be specified + as a string containing: + - Any combination of ['toaxis', 'across', 'marker'] joined with '+' characters + (e.g. 'toaxis+across') + + Returns + ------- + Any + """ + return self["spikemode"] + + @spikemode.setter + def spikemode(self, val): + self["spikemode"] = val + + @property + def spikesnap(self): + """ + Determines whether spikelines are stuck to the cursor or to the + closest datapoints. + + The 'spikesnap' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['data', 'cursor', 'hovered data'] + + Returns + ------- + Any + """ + return self["spikesnap"] + + @spikesnap.setter + def spikesnap(self, val): + self["spikesnap"] = val + + @property + def spikethickness(self): + """ + Sets the width (in px) of the zero line. + + The 'spikethickness' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["spikethickness"] + + @spikethickness.setter + def spikethickness(self, val): + self["spikethickness"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.yaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.yaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.yaxis.tickformatstopdefaults), sets the + default property values to use for elements of + layout.yaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelindex(self): + """ + 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. + + The 'ticklabelindex' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["ticklabelindex"] + + @ticklabelindex.setter + def ticklabelindex(self, val): + self["ticklabelindex"] = val + + @property + def ticklabelindexsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `ticklabelindex`. + + The 'ticklabelindexsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticklabelindexsrc"] + + @ticklabelindexsrc.setter + def ticklabelindexsrc(self, val): + self["ticklabelindexsrc"] = val + + @property + def ticklabelmode(self): + """ + 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. + + The 'ticklabelmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['instant', 'period'] + + Returns + ------- + Any + """ + return self["ticklabelmode"] + + @ticklabelmode.setter + def ticklabelmode(self, val): + self["ticklabelmode"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". Similarly left or right has + no effect on y axes or when `ticklabelmode` is set to "period". + Has no effect on "multicategory" axes or when `tickson` is set + to "boundaries". 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. + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelshift(self): + """ + 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. + + The 'ticklabelshift' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["ticklabelshift"] + + @ticklabelshift.setter + def ticklabelshift(self, val): + self["ticklabelshift"] = val + + @property + def ticklabelstandoff(self): + """ + 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. + + The 'ticklabelstandoff' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["ticklabelstandoff"] + + @ticklabelstandoff.setter + def ticklabelstandoff(self, val): + self["ticklabelstandoff"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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. + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array', 'sync'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def tickson(self): + """ + 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. + + The 'tickson' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['labels', 'boundaries'] + + Returns + ------- + Any + """ + return self["tickson"] + + @tickson.setter + def tickson(self, val): + self["tickson"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'log', 'date', 'category', + 'multicategory'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `range`, + `autorange`, and `title` if in `editable: true` configuration. + Defaults to `layout.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def zeroline(self): + """ + 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. + + The 'zeroline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zeroline"] + + @zeroline.setter + def zeroline(self, val): + self["zeroline"] = val + + @property + def zerolinecolor(self): + """ + Sets the line color of the zero line. + + The 'zerolinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["zerolinecolor"] + + @zerolinecolor.setter + def zerolinecolor(self, val): + self["zerolinecolor"] = val + + @property + def zerolinewidth(self): + """ + Sets the width (in px) of the zero line. + + The 'zerolinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zerolinewidth"] + + @zerolinewidth.setter + def zerolinewidth(self, val): + self["zerolinewidth"] = val + + @property + def _prop_descriptions(self): + return """\ + anchor + 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`. + automargin + Determines whether long tick labels automatically grow + the figure margins. + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.yaxis.Autorangeopti + ons` instance or dict with compatible properties + autoshift + 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". + autotickangles + 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. + autotypenumbers + 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. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + constrain + 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. + constraintoward + 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. + dividercolor + Sets the color of the dividers Only has an effect on + "multicategory" axes. + dividerwidth + Sets the width (in px) of the dividers Only has an + effect on "multicategory" axes. + domain + Sets the domain of this axis (in plot fraction). + dtick + 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" + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + insiderange + 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. + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + matches + 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`. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + minor + :class:`plotly.graph_objects.layout.yaxis.Minor` + instance or dict with compatible properties + mirror + 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. + nticks + 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". + overlaying + 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. + position + Sets the position of this axis in the plotting space + (in normalized coordinates). Only has an effect if + `anchor` is set to "free". + range + 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`. + rangebreaks + A tuple of + :class:`plotly.graph_objects.layout.yaxis.Rangebreak` + instances or dicts with compatible properties + rangebreakdefaults + When used in a template (as + layout.template.layout.yaxis.rangebreakdefaults), sets + the default property values to use for elements of + layout.yaxis.rangebreaks + rangemode + 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. + scaleanchor + 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). + scaleratio + 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. + separatethousands + If "true", even 4-digit integers are separated + shift + 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". + showdividers + Determines whether or not a dividers are drawn between + the category levels of this axis. Only has an effect on + "multicategory" axes. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Determines whether or not spikes (aka droplines) are + drawn for this axis. Note: This only takes affect when + hovermode = closest + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines whether a x (y) axis is positioned at the + "bottom" ("left") or "top" ("right") of the plotting + area. + spikecolor + Sets the spike color. If undefined, will use the series + color + spikedash + 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"). + spikemode + 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 + spikesnap + Determines whether spikelines are stuck to the cursor + or to the closest datapoints. + spikethickness + Sets the width (in px) of the zero line. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.yaxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.yaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.yaxis.tickformatstops + ticklabelindex + 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. + ticklabelindexsrc + Sets the source reference on Chart Studio Cloud for + `ticklabelindex`. + ticklabelmode + 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. + ticklabeloverflow + 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*. + ticklabelposition + 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". + Similarly left or right has no effect on y axes or when + `ticklabelmode` is set to "period". Has no effect on + "multicategory" axes or when `tickson` is set to + "boundaries". 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. + ticklabelshift + 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. + ticklabelstandoff + 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. + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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. + tickprefix + Sets a tick label prefix. + ticks + 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. + tickson + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.yaxis.Title` + instance or dict with compatible properties + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `range`, `autorange`, and `title` if in `editable: + true` configuration. Defaults to `layout.uirevision`. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + """ + + def __init__( + self, + arg=None, + anchor=None, + automargin=None, + autorange=None, + autorangeoptions=None, + autoshift=None, + autotickangles=None, + autotypenumbers=None, + calendar=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + constrain=None, + constraintoward=None, + dividercolor=None, + dividerwidth=None, + domain=None, + dtick=None, + exponentformat=None, + fixedrange=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + insiderange=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + matches=None, + maxallowed=None, + minallowed=None, + minexponent=None, + minor=None, + mirror=None, + nticks=None, + overlaying=None, + position=None, + range=None, + rangebreaks=None, + rangebreakdefaults=None, + rangemode=None, + scaleanchor=None, + scaleratio=None, + separatethousands=None, + shift=None, + showdividers=None, + showexponent=None, + showgrid=None, + showline=None, + showspikes=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + side=None, + spikecolor=None, + spikedash=None, + spikemode=None, + spikesnap=None, + spikethickness=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelindex=None, + ticklabelindexsrc=None, + ticklabelmode=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelshift=None, + ticklabelstandoff=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + tickson=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + type=None, + uirevision=None, + visible=None, + zeroline=None, + zerolinecolor=None, + zerolinewidth=None, + **kwargs, + ): + """ + Construct a new YAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.YAxis` + anchor + 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`. + automargin + Determines whether long tick labels automatically grow + the figure margins. + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.yaxis.Autorangeopti + ons` instance or dict with compatible properties + autoshift + 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". + autotickangles + 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. + autotypenumbers + 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. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + constrain + 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. + constraintoward + 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. + dividercolor + Sets the color of the dividers Only has an effect on + "multicategory" axes. + dividerwidth + Sets the width (in px) of the dividers Only has an + effect on "multicategory" axes. + domain + Sets the domain of this axis (in plot fraction). + dtick + 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" + exponentformat + 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. + fixedrange + Determines whether or not this axis is zoom-able. If + true, then zoom is disabled. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + insiderange + 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. + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + matches + 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`. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + minor + :class:`plotly.graph_objects.layout.yaxis.Minor` + instance or dict with compatible properties + mirror + 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. + nticks + 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". + overlaying + 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. + position + Sets the position of this axis in the plotting space + (in normalized coordinates). Only has an effect if + `anchor` is set to "free". + range + 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`. + rangebreaks + A tuple of + :class:`plotly.graph_objects.layout.yaxis.Rangebreak` + instances or dicts with compatible properties + rangebreakdefaults + When used in a template (as + layout.template.layout.yaxis.rangebreakdefaults), sets + the default property values to use for elements of + layout.yaxis.rangebreaks + rangemode + 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. + scaleanchor + 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). + scaleratio + 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. + separatethousands + If "true", even 4-digit integers are separated + shift + 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". + showdividers + Determines whether or not a dividers are drawn between + the category levels of this axis. Only has an effect on + "multicategory" axes. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Determines whether or not spikes (aka droplines) are + drawn for this axis. Note: This only takes affect when + hovermode = closest + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines whether a x (y) axis is positioned at the + "bottom" ("left") or "top" ("right") of the plotting + area. + spikecolor + Sets the spike color. If undefined, will use the series + color + spikedash + 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"). + spikemode + 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 + spikesnap + Determines whether spikelines are stuck to the cursor + or to the closest datapoints. + spikethickness + Sets the width (in px) of the zero line. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.yaxis.Ti + ckformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as + layout.template.layout.yaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.yaxis.tickformatstops + ticklabelindex + 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. + ticklabelindexsrc + Sets the source reference on Chart Studio Cloud for + `ticklabelindex`. + ticklabelmode + 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. + ticklabeloverflow + 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*. + ticklabelposition + 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". + Similarly left or right has no effect on y axes or when + `ticklabelmode` is set to "period". Has no effect on + "multicategory" axes or when `tickson` is set to + "boundaries". 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. + ticklabelshift + 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. + ticklabelstandoff + 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. + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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. + tickprefix + Sets a tick label prefix. + ticks + 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. + tickson + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.yaxis.Title` + instance or dict with compatible properties + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `range`, `autorange`, and `title` if in `editable: + true` configuration. Defaults to `layout.uirevision`. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + + Returns + ------- + YAxis + """ + super().__init__("yaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.YAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.YAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("anchor", arg, anchor) + self._set_property("automargin", arg, automargin) + self._set_property("autorange", arg, autorange) + self._set_property("autorangeoptions", arg, autorangeoptions) + self._set_property("autoshift", arg, autoshift) + self._set_property("autotickangles", arg, autotickangles) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("calendar", arg, calendar) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("constrain", arg, constrain) + self._set_property("constraintoward", arg, constraintoward) + self._set_property("dividercolor", arg, dividercolor) + self._set_property("dividerwidth", arg, dividerwidth) + self._set_property("domain", arg, domain) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("fixedrange", arg, fixedrange) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("insiderange", arg, insiderange) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("matches", arg, matches) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._set_property("minexponent", arg, minexponent) + self._set_property("minor", arg, minor) + self._set_property("mirror", arg, mirror) + self._set_property("nticks", arg, nticks) + self._set_property("overlaying", arg, overlaying) + self._set_property("position", arg, position) + self._set_property("range", arg, range) + self._set_property("rangebreaks", arg, rangebreaks) + self._set_property("rangebreakdefaults", arg, rangebreakdefaults) + self._set_property("rangemode", arg, rangemode) + self._set_property("scaleanchor", arg, scaleanchor) + self._set_property("scaleratio", arg, scaleratio) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("shift", arg, shift) + self._set_property("showdividers", arg, showdividers) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showspikes", arg, showspikes) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("side", arg, side) + self._set_property("spikecolor", arg, spikecolor) + self._set_property("spikedash", arg, spikedash) + self._set_property("spikemode", arg, spikemode) + self._set_property("spikesnap", arg, spikesnap) + self._set_property("spikethickness", arg, spikethickness) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelindex", arg, ticklabelindex) + self._set_property("ticklabelindexsrc", arg, ticklabelindexsrc) + self._set_property("ticklabelmode", arg, ticklabelmode) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelshift", arg, ticklabelshift) + self._set_property("ticklabelstandoff", arg, ticklabelstandoff) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("tickson", arg, tickson) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._set_property("zeroline", arg, zeroline) + self._set_property("zerolinecolor", arg, zerolinecolor) + self._set_property("zerolinewidth", arg, zerolinewidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/__init__.py new file mode 100644 index 0000000..372a9f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font + from ._hoverlabel import Hoverlabel + from . import hoverlabel +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".hoverlabel"], ["._font.Font", "._hoverlabel.Hoverlabel"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_font.py new file mode 100644 index 0000000..736edb1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.annotation" + _path_str = "layout.annotation.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the annotation text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.annotation.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.annotation.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.annotation.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_hoverlabel.py new file mode 100644 index 0000000..ee847b2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/_hoverlabel.py @@ -0,0 +1,151 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseLayoutHierarchyType): + _parent_path_str = "layout.annotation" + _path_str = "layout.annotation.hoverlabel" + _valid_props = {"bgcolor", "bordercolor", "font"} + + @property + def bgcolor(self): + """ + Sets the background color of the hover label. By default uses + the annotation's `bgcolor` made opaque, or white if it was + transparent. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover label. By default uses + either dark grey or white, for maximum contrast with + `hoverlabel.bgcolor`. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def font(self): + """ + Sets the hover label text font. By default uses the global + hover font and size, with color from `hoverlabel.bordercolor`. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.annotation.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.annotation.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the background color of the hover label. By + default uses the annotation's `bgcolor` made opaque, or + white if it was transparent. + bordercolor + Sets the border color of the hover label. By default + uses either dark grey or white, for maximum contrast + with `hoverlabel.bgcolor`. + font + Sets the hover label text font. By default uses the + global hover font and size, with color from + `hoverlabel.bordercolor`. + """ + + def __init__(self, arg=None, bgcolor=None, bordercolor=None, font=None, **kwargs): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.annotation.Hoverlabel` + bgcolor + Sets the background color of the hover label. By + default uses the annotation's `bgcolor` made opaque, or + white if it was transparent. + bordercolor + Sets the border color of the hover label. By default + uses either dark grey or white, for maximum contrast + with `hoverlabel.bgcolor`. + font + Sets the hover label text font. By default uses the + global hover font and size, with color from + `hoverlabel.bordercolor`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.annotation.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.annotation.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("font", arg, font) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/_font.py new file mode 100644 index 0000000..b3a561e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/annotation/hoverlabel/_font.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.annotation.hoverlabel" + _path_str = "layout.annotation.hoverlabel.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the hover label text font. By default uses the global + hover font and size, with color from `hoverlabel.bordercolor`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.annotat + ion.hoverlabel.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.annotation.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.annotation.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/__init__.py new file mode 100644 index 0000000..5e06f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/_colorbar.py new file mode 100644 index 0000000..0749ad3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class ColorBar(_BaseLayoutHierarchyType): + _parent_path_str = "layout.coloraxis" + _path_str = "layout.coloraxis.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.coloraxis.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.coloraxis.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.coloraxis.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.layout.coloraxis.co + lorbar.tickformatstopdefaults), sets the default property + values to use for elements of + layout.coloraxis.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.coloraxis.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.coloraxis.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.coloraxi + s.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.colo + raxis.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + layout.coloraxis.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.coloraxis.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.coloraxis.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.coloraxi + s.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.colo + raxis.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + layout.coloraxis.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.coloraxis.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.coloraxis.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.coloraxis.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py new file mode 100644 index 0000000..146bfec --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.coloraxis.colorbar" + _path_str = "layout.coloraxis.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.colorax + is.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.coloraxis.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py new file mode 100644 index 0000000..2a971e1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.coloraxis.colorbar" + _path_str = "layout.coloraxis.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.colorax + is.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.coloraxis.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_title.py new file mode 100644 index 0000000..3f906c7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.coloraxis.colorbar" + _path_str = "layout.coloraxis.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.coloraxis.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.colorax + is.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.coloraxis.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py new file mode 100644 index 0000000..d151ff3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/coloraxis/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.coloraxis.colorbar.title" + _path_str = "layout.coloraxis.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.colorax + is.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.coloraxis.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.coloraxis.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/__init__.py new file mode 100644 index 0000000..22d3516 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/__init__.py @@ -0,0 +1,24 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._center import Center + from ._domain import Domain + from ._lataxis import Lataxis + from ._lonaxis import Lonaxis + from ._projection import Projection + from . import projection +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".projection"], + [ + "._center.Center", + "._domain.Domain", + "._lataxis.Lataxis", + "._lonaxis.Lonaxis", + "._projection.Projection", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_center.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_center.py new file mode 100644 index 0000000..059d3a4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_center.py @@ -0,0 +1,115 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Center(_BaseLayoutHierarchyType): + _parent_path_str = "layout.geo" + _path_str = "layout.geo.center" + _valid_props = {"lat", "lon"} + + @property + def lat(self): + """ + 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. + + The 'lat' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def lon(self): + """ + 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. + + The 'lon' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def _prop_descriptions(self): + return """\ + lat + 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. + lon + 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. + """ + + def __init__(self, arg=None, lat=None, lon=None, **kwargs): + """ + Construct a new Center object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.geo.Center` + lat + 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. + lon + 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. + + Returns + ------- + Center + """ + super().__init__("center") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.geo.Center +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.geo.Center`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("lat", arg, lat) + self._set_property("lon", arg, lon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_domain.py new file mode 100644 index 0000000..1869b41 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_domain.py @@ -0,0 +1,204 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.geo" + _path_str = "layout.geo.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this geo subplot . 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. + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this geo subplot . 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. + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this geo subplot (in plot + fraction). 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. + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this geo subplot (in plot + fraction). 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. + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this geo subplot . 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. + row + If there is a layout grid, use the domain for this row + in the grid for this geo subplot . 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. + x + Sets the horizontal domain of this geo subplot (in plot + fraction). 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. + y + Sets the vertical domain of this geo subplot (in plot + fraction). 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. + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.geo.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this geo subplot . 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. + row + If there is a layout grid, use the domain for this row + in the grid for this geo subplot . 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. + x + Sets the horizontal domain of this geo subplot (in plot + fraction). 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. + y + Sets the vertical domain of this geo subplot (in plot + fraction). 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. + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.geo.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.geo.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lataxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lataxis.py new file mode 100644 index 0000000..fcaf4c8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lataxis.py @@ -0,0 +1,258 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Lataxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.geo" + _path_str = "layout.geo.lataxis" + _valid_props = { + "dtick", + "gridcolor", + "griddash", + "gridwidth", + "range", + "showgrid", + "tick0", + } + + @property + def dtick(self): + """ + Sets the graticule's longitude/latitude tick step. + + The 'dtick' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def gridcolor(self): + """ + Sets the graticule's stroke color. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the graticule's stroke width (in px). + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def range(self): + """ + Sets the range of this axis (in degrees), sets the map's + clipped coordinates. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property is a number and may be specified as: + - An int or float + (1) The 'range[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def showgrid(self): + """ + Sets whether or not graticule are shown on the map. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def tick0(self): + """ + Sets the graticule's starting tick longitude/latitude. + + The 'tick0' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def _prop_descriptions(self): + return """\ + dtick + Sets the graticule's longitude/latitude tick step. + gridcolor + Sets the graticule's stroke color. + griddash + 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"). + gridwidth + Sets the graticule's stroke width (in px). + range + Sets the range of this axis (in degrees), sets the + map's clipped coordinates. + showgrid + Sets whether or not graticule are shown on the map. + tick0 + Sets the graticule's starting tick longitude/latitude. + """ + + def __init__( + self, + arg=None, + dtick=None, + gridcolor=None, + griddash=None, + gridwidth=None, + range=None, + showgrid=None, + tick0=None, + **kwargs, + ): + """ + Construct a new Lataxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.geo.Lataxis` + dtick + Sets the graticule's longitude/latitude tick step. + gridcolor + Sets the graticule's stroke color. + griddash + 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"). + gridwidth + Sets the graticule's stroke width (in px). + range + Sets the range of this axis (in degrees), sets the + map's clipped coordinates. + showgrid + Sets whether or not graticule are shown on the map. + tick0 + Sets the graticule's starting tick longitude/latitude. + + Returns + ------- + Lataxis + """ + super().__init__("lataxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.geo.Lataxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.geo.Lataxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtick", arg, dtick) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("range", arg, range) + self._set_property("showgrid", arg, showgrid) + self._set_property("tick0", arg, tick0) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lonaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lonaxis.py new file mode 100644 index 0000000..6b31527 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_lonaxis.py @@ -0,0 +1,258 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Lonaxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.geo" + _path_str = "layout.geo.lonaxis" + _valid_props = { + "dtick", + "gridcolor", + "griddash", + "gridwidth", + "range", + "showgrid", + "tick0", + } + + @property + def dtick(self): + """ + Sets the graticule's longitude/latitude tick step. + + The 'dtick' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def gridcolor(self): + """ + Sets the graticule's stroke color. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the graticule's stroke width (in px). + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def range(self): + """ + Sets the range of this axis (in degrees), sets the map's + clipped coordinates. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property is a number and may be specified as: + - An int or float + (1) The 'range[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def showgrid(self): + """ + Sets whether or not graticule are shown on the map. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def tick0(self): + """ + Sets the graticule's starting tick longitude/latitude. + + The 'tick0' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def _prop_descriptions(self): + return """\ + dtick + Sets the graticule's longitude/latitude tick step. + gridcolor + Sets the graticule's stroke color. + griddash + 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"). + gridwidth + Sets the graticule's stroke width (in px). + range + Sets the range of this axis (in degrees), sets the + map's clipped coordinates. + showgrid + Sets whether or not graticule are shown on the map. + tick0 + Sets the graticule's starting tick longitude/latitude. + """ + + def __init__( + self, + arg=None, + dtick=None, + gridcolor=None, + griddash=None, + gridwidth=None, + range=None, + showgrid=None, + tick0=None, + **kwargs, + ): + """ + Construct a new Lonaxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.geo.Lonaxis` + dtick + Sets the graticule's longitude/latitude tick step. + gridcolor + Sets the graticule's stroke color. + griddash + 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"). + gridwidth + Sets the graticule's stroke width (in px). + range + Sets the range of this axis (in degrees), sets the + map's clipped coordinates. + showgrid + Sets whether or not graticule are shown on the map. + tick0 + Sets the graticule's starting tick longitude/latitude. + + Returns + ------- + Lonaxis + """ + super().__init__("lonaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.geo.Lonaxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.geo.Lonaxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtick", arg, dtick) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("range", arg, range) + self._set_property("showgrid", arg, showgrid) + self._set_property("tick0", arg, tick0) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_projection.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_projection.py new file mode 100644 index 0000000..fb8a539 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/_projection.py @@ -0,0 +1,251 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Projection(_BaseLayoutHierarchyType): + _parent_path_str = "layout.geo" + _path_str = "layout.geo.projection" + _valid_props = {"distance", "parallels", "rotation", "scale", "tilt", "type"} + + @property + def distance(self): + """ + 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. + + The 'distance' property is a number and may be specified as: + - An int or float in the interval [1.001, inf] + + Returns + ------- + int|float + """ + return self["distance"] + + @distance.setter + def distance(self, val): + self["distance"] = val + + @property + def parallels(self): + """ + For conic projection types only. Sets the parallels (tangent, + secant) where the cone intersects the sphere. + + The 'parallels' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'parallels[0]' property is a number and may be specified as: + - An int or float + (1) The 'parallels[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["parallels"] + + @parallels.setter + def parallels(self, val): + self["parallels"] = val + + @property + def rotation(self): + """ + The 'rotation' property is an instance of Rotation + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.geo.projection.Rotation` + - A dict of string/value properties that will be passed + to the Rotation constructor + + Returns + ------- + plotly.graph_objs.layout.geo.projection.Rotation + """ + return self["rotation"] + + @rotation.setter + def rotation(self, val): + self["rotation"] = val + + @property + def scale(self): + """ + 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. + + The 'scale' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["scale"] + + @scale.setter + def scale(self, val): + self["scale"] = val + + @property + def tilt(self): + """ + For satellite projection type only. Sets the tilt angle of + perspective projection. + + The 'tilt' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["tilt"] + + @tilt.setter + def tilt(self, val): + self["tilt"] = val + + @property + def type(self): + """ + Sets the projection type. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['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'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def _prop_descriptions(self): + return """\ + distance + 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. + parallels + For conic projection types only. Sets the parallels + (tangent, secant) where the cone intersects the sphere. + rotation + :class:`plotly.graph_objects.layout.geo.projection.Rota + tion` instance or dict with compatible properties + scale + 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. + tilt + For satellite projection type only. Sets the tilt angle + of perspective projection. + type + Sets the projection type. + """ + + def __init__( + self, + arg=None, + distance=None, + parallels=None, + rotation=None, + scale=None, + tilt=None, + type=None, + **kwargs, + ): + """ + Construct a new Projection object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.geo.Projection` + distance + 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. + parallels + For conic projection types only. Sets the parallels + (tangent, secant) where the cone intersects the sphere. + rotation + :class:`plotly.graph_objects.layout.geo.projection.Rota + tion` instance or dict with compatible properties + scale + 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. + tilt + For satellite projection type only. Sets the tilt angle + of perspective projection. + type + Sets the projection type. + + Returns + ------- + Projection + """ + super().__init__("projection") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.geo.Projection +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.geo.Projection`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("distance", arg, distance) + self._set_property("parallels", arg, parallels) + self._set_property("rotation", arg, rotation) + self._set_property("scale", arg, scale) + self._set_property("tilt", arg, tilt) + self._set_property("type", arg, type) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/__init__.py new file mode 100644 index 0000000..7354e48 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._rotation import Rotation +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._rotation.Rotation"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/_rotation.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/_rotation.py new file mode 100644 index 0000000..4934597 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/geo/projection/_rotation.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Rotation(_BaseLayoutHierarchyType): + _parent_path_str = "layout.geo.projection" + _path_str = "layout.geo.projection.rotation" + _valid_props = {"lat", "lon", "roll"} + + @property + def lat(self): + """ + Rotates the map along meridians (in degrees North). + + The 'lat' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def lon(self): + """ + Rotates the map along parallels (in degrees East). Defaults to + the center of the `lonaxis.range` values. + + The 'lon' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def roll(self): + """ + Roll the map (in degrees) For example, a roll of 180 makes the + map appear upside down. + + The 'roll' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["roll"] + + @roll.setter + def roll(self, val): + self["roll"] = val + + @property + def _prop_descriptions(self): + return """\ + lat + Rotates the map along meridians (in degrees North). + lon + Rotates the map along parallels (in degrees East). + Defaults to the center of the `lonaxis.range` values. + roll + Roll the map (in degrees) For example, a roll of 180 + makes the map appear upside down. + """ + + def __init__(self, arg=None, lat=None, lon=None, roll=None, **kwargs): + """ + Construct a new Rotation object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.geo.pro + jection.Rotation` + lat + Rotates the map along meridians (in degrees North). + lon + Rotates the map along parallels (in degrees East). + Defaults to the center of the `lonaxis.range` values. + roll + Roll the map (in degrees) For example, a roll of 180 + makes the map appear upside down. + + Returns + ------- + Rotation + """ + super().__init__("rotation") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.geo.projection.Rotation +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.geo.projection.Rotation`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("lat", arg, lat) + self._set_property("lon", arg, lon) + self._set_property("roll", arg, roll) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/__init__.py new file mode 100644 index 0000000..672daf1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._domain.Domain"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/_domain.py new file mode 100644 index 0000000..1e1fc2f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/grid/_domain.py @@ -0,0 +1,122 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.grid" + _path_str = "layout.grid.domain" + _valid_props = {"x", "y"} + + @property + def x(self): + """ + 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. + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + 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. + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + x + 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. + y + 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. + """ + + def __init__(self, arg=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.grid.Domain` + x + 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. + y + 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. + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.grid.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.grid.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/__init__.py new file mode 100644 index 0000000..c1800c3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font + from ._grouptitlefont import Grouptitlefont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._font.Font", "._grouptitlefont.Grouptitlefont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_font.py new file mode 100644 index 0000000..afaef5d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_font.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.hoverlabel" + _path_str = "layout.hoverlabel.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the default hover label font used by all traces on the + graph. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.hoverlabel.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py new file mode 100644 index 0000000..f1aae36 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/hoverlabel/_grouptitlefont.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Grouptitlefont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.hoverlabel" + _path_str = "layout.hoverlabel.grouptitlefont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Grouptitlefont object + + Sets the font for group titles in hover (unified modes). + Defaults to `hoverlabel.font`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.hoverla + bel.Grouptitlefont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Grouptitlefont + """ + super().__init__("grouptitlefont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.hoverlabel.Grouptitlefont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.hoverlabel.Grouptitlefont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/__init__.py new file mode 100644 index 0000000..74cf3d2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font + from ._grouptitlefont import Grouptitlefont + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._font.Font", "._grouptitlefont.Grouptitlefont", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_font.py new file mode 100644 index 0000000..5b1eedf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.legend" + _path_str = "layout.legend.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used to text the legend items. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.legend.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.legend.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.legend.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_grouptitlefont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_grouptitlefont.py new file mode 100644 index 0000000..1dc1285 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_grouptitlefont.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Grouptitlefont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.legend" + _path_str = "layout.legend.grouptitlefont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Grouptitlefont object + + Sets the font for group titles in legend. Defaults to + `legend.font` with its size increased about 10%. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.legend.Grouptitlefont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Grouptitlefont + """ + super().__init__("grouptitlefont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.legend.Grouptitlefont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.legend.Grouptitlefont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_title.py new file mode 100644 index 0000000..a0c67bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/_title.py @@ -0,0 +1,145 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.legend" + _path_str = "layout.legend.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this legend's title font. Defaults to `legend.font` with + its size increased about 20%. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.legend.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.legend.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'left', 'top left', 'top center', 'top right'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the legend. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend's title font. Defaults to + `legend.font` with its size increased about 20%. + side + 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. + text + Sets the title of the legend. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.legend.Title` + font + Sets this legend's title font. Defaults to + `legend.font` with its size increased about 20%. + side + 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. + text + Sets the title of the legend. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.legend.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.legend.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/_font.py new file mode 100644 index 0000000..1deec6a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/legend/title/_font.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.legend.title" + _path_str = "layout.legend.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend's title font. Defaults to `legend.font` with + its size increased about 20%. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.legend.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.legend.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.legend.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/__init__.py new file mode 100644 index 0000000..929c41c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._bounds import Bounds + from ._center import Center + from ._domain import Domain + from ._layer import Layer + from . import layer +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".layer"], + ["._bounds.Bounds", "._center.Center", "._domain.Domain", "._layer.Layer"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_bounds.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_bounds.py new file mode 100644 index 0000000..13e914c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_bounds.py @@ -0,0 +1,160 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Bounds(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map" + _path_str = "layout.map.bounds" + _valid_props = {"east", "north", "south", "west"} + + @property + def east(self): + """ + Sets the maximum longitude of the map (in degrees East) if + `west`, `south` and `north` are declared. + + The 'east' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["east"] + + @east.setter + def east(self, val): + self["east"] = val + + @property + def north(self): + """ + Sets the maximum latitude of the map (in degrees North) if + `east`, `west` and `south` are declared. + + The 'north' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["north"] + + @north.setter + def north(self, val): + self["north"] = val + + @property + def south(self): + """ + Sets the minimum latitude of the map (in degrees North) if + `east`, `west` and `north` are declared. + + The 'south' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["south"] + + @south.setter + def south(self, val): + self["south"] = val + + @property + def west(self): + """ + Sets the minimum longitude of the map (in degrees East) if + `east`, `south` and `north` are declared. + + The 'west' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["west"] + + @west.setter + def west(self, val): + self["west"] = val + + @property + def _prop_descriptions(self): + return """\ + east + Sets the maximum longitude of the map (in degrees East) + if `west`, `south` and `north` are declared. + north + Sets the maximum latitude of the map (in degrees North) + if `east`, `west` and `south` are declared. + south + Sets the minimum latitude of the map (in degrees North) + if `east`, `west` and `north` are declared. + west + Sets the minimum longitude of the map (in degrees East) + if `east`, `south` and `north` are declared. + """ + + def __init__( + self, arg=None, east=None, north=None, south=None, west=None, **kwargs + ): + """ + Construct a new Bounds object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.Bounds` + east + Sets the maximum longitude of the map (in degrees East) + if `west`, `south` and `north` are declared. + north + Sets the maximum latitude of the map (in degrees North) + if `east`, `west` and `south` are declared. + south + Sets the minimum latitude of the map (in degrees North) + if `east`, `west` and `north` are declared. + west + Sets the minimum longitude of the map (in degrees East) + if `east`, `south` and `north` are declared. + + Returns + ------- + Bounds + """ + super().__init__("bounds") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.Bounds +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.Bounds`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("east", arg, east) + self._set_property("north", arg, north) + self._set_property("south", arg, south) + self._set_property("west", arg, west) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_center.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_center.py new file mode 100644 index 0000000..34c339e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_center.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Center(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map" + _path_str = "layout.map.center" + _valid_props = {"lat", "lon"} + + @property + def lat(self): + """ + Sets the latitude of the center of the map (in degrees North). + + The 'lat' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def lon(self): + """ + Sets the longitude of the center of the map (in degrees East). + + The 'lon' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def _prop_descriptions(self): + return """\ + lat + Sets the latitude of the center of the map (in degrees + North). + lon + Sets the longitude of the center of the map (in degrees + East). + """ + + def __init__(self, arg=None, lat=None, lon=None, **kwargs): + """ + Construct a new Center object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.Center` + lat + Sets the latitude of the center of the map (in degrees + North). + lon + Sets the longitude of the center of the map (in degrees + East). + + Returns + ------- + Center + """ + super().__init__("center") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.Center +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.Center`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("lat", arg, lat) + self._set_property("lon", arg, lon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_domain.py new file mode 100644 index 0000000..9baf6ea --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map" + _path_str = "layout.map.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this map subplot . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this map subplot . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this map subplot (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this map subplot (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this map subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this map subplot . + x + Sets the horizontal domain of this map subplot (in plot + fraction). + y + Sets the vertical domain of this map subplot (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this map subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this map subplot . + x + Sets the horizontal domain of this map subplot (in plot + fraction). + y + Sets the vertical domain of this map subplot (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_layer.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_layer.py new file mode 100644 index 0000000..cf22d32 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/_layer.py @@ -0,0 +1,691 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Layer(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map" + _path_str = "layout.map.layer" + _valid_props = { + "below", + "circle", + "color", + "coordinates", + "fill", + "line", + "maxzoom", + "minzoom", + "name", + "opacity", + "source", + "sourceattribution", + "sourcelayer", + "sourcetype", + "symbol", + "templateitemname", + "type", + "visible", + } + + @property + def below(self): + """ + 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. + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def circle(self): + """ + The 'circle' property is an instance of Circle + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.layer.Circle` + - A dict of string/value properties that will be passed + to the Circle constructor + + Returns + ------- + plotly.graph_objs.layout.map.layer.Circle + """ + return self["circle"] + + @circle.setter + def circle(self, val): + self["circle"] = val + + @property + def color(self): + """ + 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) + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coordinates(self): + """ + 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`. + + The 'coordinates' property accepts values of any type + + Returns + ------- + Any + """ + return self["coordinates"] + + @coordinates.setter + def coordinates(self, val): + self["coordinates"] = val + + @property + def fill(self): + """ + The 'fill' property is an instance of Fill + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.layer.Fill` + - A dict of string/value properties that will be passed + to the Fill constructor + + Returns + ------- + plotly.graph_objs.layout.map.layer.Fill + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.layer.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.layout.map.layer.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxzoom(self): + """ + Sets the maximum zoom level (map.layer.maxzoom). At zoom levels + equal to or greater than the maxzoom, the layer will be hidden. + + The 'maxzoom' property is a number and may be specified as: + - An int or float in the interval [0, 24] + + Returns + ------- + int|float + """ + return self["maxzoom"] + + @maxzoom.setter + def maxzoom(self, val): + self["maxzoom"] = val + + @property + def minzoom(self): + """ + Sets the minimum zoom level (map.layer.minzoom). At zoom levels + less than the minzoom, the layer will be hidden. + + The 'minzoom' property is a number and may be specified as: + - An int or float in the interval [0, 24] + + Returns + ------- + int|float + """ + return self["minzoom"] + + @minzoom.setter + def minzoom(self, val): + self["minzoom"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + 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) + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def source(self): + """ + 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. + + The 'source' property accepts values of any type + + Returns + ------- + Any + """ + return self["source"] + + @source.setter + def source(self, val): + self["source"] = val + + @property + def sourceattribution(self): + """ + Sets the attribution for this source. + + The 'sourceattribution' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["sourceattribution"] + + @sourceattribution.setter + def sourceattribution(self, val): + self["sourceattribution"] = val + + @property + def sourcelayer(self): + """ + Specifies the layer to use from a vector tile source + (map.layer.source-layer). Required for "vector" source type + that supports multiple layers. + + The 'sourcelayer' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["sourcelayer"] + + @sourcelayer.setter + def sourcelayer(self, val): + self["sourcelayer"] = val + + @property + def sourcetype(self): + """ + Sets the source type for this layer, that is the type of the + layer data. + + The 'sourcetype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['geojson', 'vector', 'raster', 'image'] + + Returns + ------- + Any + """ + return self["sourcetype"] + + @sourcetype.setter + def sourcetype(self, val): + self["sourcetype"] = val + + @property + def symbol(self): + """ + The 'symbol' property is an instance of Symbol + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.layer.Symbol` + - A dict of string/value properties that will be passed + to the Symbol constructor + + Returns + ------- + plotly.graph_objs.layout.map.layer.Symbol + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['circle', 'line', 'fill', 'symbol', 'raster'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + Determines whether this layer is displayed + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + below + 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. + circle + :class:`plotly.graph_objects.layout.map.layer.Circle` + instance or dict with compatible properties + color + 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) + coordinates + 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`. + fill + :class:`plotly.graph_objects.layout.map.layer.Fill` + instance or dict with compatible properties + line + :class:`plotly.graph_objects.layout.map.layer.Line` + instance or dict with compatible properties + maxzoom + Sets the maximum zoom level (map.layer.maxzoom). At + zoom levels equal to or greater than the maxzoom, the + layer will be hidden. + minzoom + Sets the minimum zoom level (map.layer.minzoom). At + zoom levels less than the minzoom, the layer will be + hidden. + name + 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. + opacity + 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) + source + 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. + sourceattribution + Sets the attribution for this source. + sourcelayer + Specifies the layer to use from a vector tile source + (map.layer.source-layer). Required for "vector" source + type that supports multiple layers. + sourcetype + Sets the source type for this layer, that is the type + of the layer data. + symbol + :class:`plotly.graph_objects.layout.map.layer.Symbol` + instance or dict with compatible properties + templateitemname + 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`. + type + 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. + visible + Determines whether this layer is displayed + """ + + def __init__( + self, + arg=None, + below=None, + circle=None, + color=None, + coordinates=None, + fill=None, + line=None, + maxzoom=None, + minzoom=None, + name=None, + opacity=None, + source=None, + sourceattribution=None, + sourcelayer=None, + sourcetype=None, + symbol=None, + templateitemname=None, + type=None, + visible=None, + **kwargs, + ): + """ + Construct a new Layer object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.Layer` + below + 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. + circle + :class:`plotly.graph_objects.layout.map.layer.Circle` + instance or dict with compatible properties + color + 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) + coordinates + 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`. + fill + :class:`plotly.graph_objects.layout.map.layer.Fill` + instance or dict with compatible properties + line + :class:`plotly.graph_objects.layout.map.layer.Line` + instance or dict with compatible properties + maxzoom + Sets the maximum zoom level (map.layer.maxzoom). At + zoom levels equal to or greater than the maxzoom, the + layer will be hidden. + minzoom + Sets the minimum zoom level (map.layer.minzoom). At + zoom levels less than the minzoom, the layer will be + hidden. + name + 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. + opacity + 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) + source + 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. + sourceattribution + Sets the attribution for this source. + sourcelayer + Specifies the layer to use from a vector tile source + (map.layer.source-layer). Required for "vector" source + type that supports multiple layers. + sourcetype + Sets the source type for this layer, that is the type + of the layer data. + symbol + :class:`plotly.graph_objects.layout.map.layer.Symbol` + instance or dict with compatible properties + templateitemname + 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`. + type + 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. + visible + Determines whether this layer is displayed + + Returns + ------- + Layer + """ + super().__init__("layers") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.Layer +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.Layer`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("below", arg, below) + self._set_property("circle", arg, circle) + self._set_property("color", arg, color) + self._set_property("coordinates", arg, coordinates) + self._set_property("fill", arg, fill) + self._set_property("line", arg, line) + self._set_property("maxzoom", arg, maxzoom) + self._set_property("minzoom", arg, minzoom) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("source", arg, source) + self._set_property("sourceattribution", arg, sourceattribution) + self._set_property("sourcelayer", arg, sourcelayer) + self._set_property("sourcetype", arg, sourcetype) + self._set_property("symbol", arg, symbol) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/__init__.py new file mode 100644 index 0000000..2d86fbd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._circle import Circle + from ._fill import Fill + from ._line import Line + from ._symbol import Symbol + from . import symbol +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".symbol"], + ["._circle.Circle", "._fill.Fill", "._line.Line", "._symbol.Symbol"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_circle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_circle.py new file mode 100644 index 0000000..2d99a00 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_circle.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Circle(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map.layer" + _path_str = "layout.map.layer.circle" + _valid_props = {"radius"} + + @property + def radius(self): + """ + Sets the circle radius (map.layer.paint.circle-radius). Has an + effect only when `type` is set to "circle". + + The 'radius' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["radius"] + + @radius.setter + def radius(self, val): + self["radius"] = val + + @property + def _prop_descriptions(self): + return """\ + radius + Sets the circle radius (map.layer.paint.circle-radius). + Has an effect only when `type` is set to "circle". + """ + + def __init__(self, arg=None, radius=None, **kwargs): + """ + Construct a new Circle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.layer.Circle` + radius + Sets the circle radius (map.layer.paint.circle-radius). + Has an effect only when `type` is set to "circle". + + Returns + ------- + Circle + """ + super().__init__("circle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.layer.Circle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.layer.Circle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("radius", arg, radius) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_fill.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_fill.py new file mode 100644 index 0000000..2c82cdd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_fill.py @@ -0,0 +1,86 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Fill(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map.layer" + _path_str = "layout.map.layer.fill" + _valid_props = {"outlinecolor"} + + @property + def outlinecolor(self): + """ + Sets the fill outline color (map.layer.paint.fill-outline- + color). Has an effect only when `type` is set to "fill". + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def _prop_descriptions(self): + return """\ + outlinecolor + Sets the fill outline color (map.layer.paint.fill- + outline-color). Has an effect only when `type` is set + to "fill". + """ + + def __init__(self, arg=None, outlinecolor=None, **kwargs): + """ + Construct a new Fill object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.layer.Fill` + outlinecolor + Sets the fill outline color (map.layer.paint.fill- + outline-color). Has an effect only when `type` is set + to "fill". + + Returns + ------- + Fill + """ + super().__init__("fill") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.layer.Fill +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.layer.Fill`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("outlinecolor", arg, outlinecolor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_line.py new file mode 100644 index 0000000..369be5f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_line.py @@ -0,0 +1,133 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Line(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map.layer" + _path_str = "layout.map.layer.line" + _valid_props = {"dash", "dashsrc", "width"} + + @property + def dash(self): + """ + Sets the length of dashes and gaps (map.layer.paint.line- + dasharray). Has an effect only when `type` is set to "line". + + The 'dash' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def dashsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `dash`. + + The 'dashsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["dashsrc"] + + @dashsrc.setter + def dashsrc(self, val): + self["dashsrc"] = val + + @property + def width(self): + """ + Sets the line width (map.layer.paint.line-width). Has an effect + only when `type` is set to "line". + + The 'width' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + dash + Sets the length of dashes and gaps + (map.layer.paint.line-dasharray). Has an effect only + when `type` is set to "line". + dashsrc + Sets the source reference on Chart Studio Cloud for + `dash`. + width + Sets the line width (map.layer.paint.line-width). Has + an effect only when `type` is set to "line". + """ + + def __init__(self, arg=None, dash=None, dashsrc=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.layer.Line` + dash + Sets the length of dashes and gaps + (map.layer.paint.line-dasharray). Has an effect only + when `type` is set to "line". + dashsrc + Sets the source reference on Chart Studio Cloud for + `dash`. + width + Sets the line width (map.layer.paint.line-width). Has + an effect only when `type` is set to "line". + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.layer.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.layer.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dash", arg, dash) + self._set_property("dashsrc", arg, dashsrc) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_symbol.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_symbol.py new file mode 100644 index 0000000..58507ae --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/_symbol.py @@ -0,0 +1,243 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Symbol(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map.layer" + _path_str = "layout.map.layer.symbol" + _valid_props = {"icon", "iconsize", "placement", "text", "textfont", "textposition"} + + @property + def icon(self): + """ + Sets the symbol icon image (map.layer.layout.icon-image). Full + list: https://www.map.com/maki-icons/ + + The 'icon' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["icon"] + + @icon.setter + def icon(self, val): + self["icon"] = val + + @property + def iconsize(self): + """ + Sets the symbol icon size (map.layer.layout.icon-size). Has an + effect only when `type` is set to "symbol". + + The 'iconsize' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["iconsize"] + + @iconsize.setter + def iconsize(self, val): + self["iconsize"] = val + + @property + def placement(self): + """ + 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 + + The 'placement' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['point', 'line', 'line-center'] + + Returns + ------- + Any + """ + return self["placement"] + + @placement.setter + def placement(self, val): + self["placement"] = val + + @property + def text(self): + """ + Sets the symbol text (map.layer.layout.text-field). + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + 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". + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.map.layer.symbol.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.layout.map.layer.symbol.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def _prop_descriptions(self): + return """\ + icon + Sets the symbol icon image (map.layer.layout.icon- + image). Full list: https://www.map.com/maki-icons/ + iconsize + Sets the symbol icon size (map.layer.layout.icon-size). + Has an effect only when `type` is set to "symbol". + placement + 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 + text + Sets the symbol text (map.layer.layout.text-field). + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + """ + + def __init__( + self, + arg=None, + icon=None, + iconsize=None, + placement=None, + text=None, + textfont=None, + textposition=None, + **kwargs, + ): + """ + Construct a new Symbol object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.map.layer.Symbol` + icon + Sets the symbol icon image (map.layer.layout.icon- + image). Full list: https://www.map.com/maki-icons/ + iconsize + Sets the symbol icon size (map.layer.layout.icon-size). + Has an effect only when `type` is set to "symbol". + placement + 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 + text + Sets the symbol text (map.layer.layout.text-field). + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + + Returns + ------- + Symbol + """ + super().__init__("symbol") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.layer.Symbol +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.layer.Symbol`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("icon", arg, icon) + self._set_property("iconsize", arg, iconsize) + self._set_property("placement", arg, placement) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/__init__.py new file mode 100644 index 0000000..a713099 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/_textfont.py new file mode 100644 index 0000000..911cbcd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/map/layer/symbol/_textfont.py @@ -0,0 +1,202 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Textfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.map.layer.symbol" + _path_str = "layout.map.layer.symbol.textfont" + _valid_props = {"color", "family", "size", "style", "weight"} + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + size=None, + style=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + 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". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.map.lay + er.symbol.Textfont` + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.map.layer.symbol.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.map.layer.symbol.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/__init__.py new file mode 100644 index 0000000..929c41c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._bounds import Bounds + from ._center import Center + from ._domain import Domain + from ._layer import Layer + from . import layer +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".layer"], + ["._bounds.Bounds", "._center.Center", "._domain.Domain", "._layer.Layer"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_bounds.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_bounds.py new file mode 100644 index 0000000..0179224 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_bounds.py @@ -0,0 +1,160 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Bounds(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox" + _path_str = "layout.mapbox.bounds" + _valid_props = {"east", "north", "south", "west"} + + @property + def east(self): + """ + Sets the maximum longitude of the map (in degrees East) if + `west`, `south` and `north` are declared. + + The 'east' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["east"] + + @east.setter + def east(self, val): + self["east"] = val + + @property + def north(self): + """ + Sets the maximum latitude of the map (in degrees North) if + `east`, `west` and `south` are declared. + + The 'north' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["north"] + + @north.setter + def north(self, val): + self["north"] = val + + @property + def south(self): + """ + Sets the minimum latitude of the map (in degrees North) if + `east`, `west` and `north` are declared. + + The 'south' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["south"] + + @south.setter + def south(self, val): + self["south"] = val + + @property + def west(self): + """ + Sets the minimum longitude of the map (in degrees East) if + `east`, `south` and `north` are declared. + + The 'west' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["west"] + + @west.setter + def west(self, val): + self["west"] = val + + @property + def _prop_descriptions(self): + return """\ + east + Sets the maximum longitude of the map (in degrees East) + if `west`, `south` and `north` are declared. + north + Sets the maximum latitude of the map (in degrees North) + if `east`, `west` and `south` are declared. + south + Sets the minimum latitude of the map (in degrees North) + if `east`, `west` and `north` are declared. + west + Sets the minimum longitude of the map (in degrees East) + if `east`, `south` and `north` are declared. + """ + + def __init__( + self, arg=None, east=None, north=None, south=None, west=None, **kwargs + ): + """ + Construct a new Bounds object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.Bounds` + east + Sets the maximum longitude of the map (in degrees East) + if `west`, `south` and `north` are declared. + north + Sets the maximum latitude of the map (in degrees North) + if `east`, `west` and `south` are declared. + south + Sets the minimum latitude of the map (in degrees North) + if `east`, `west` and `north` are declared. + west + Sets the minimum longitude of the map (in degrees East) + if `east`, `south` and `north` are declared. + + Returns + ------- + Bounds + """ + super().__init__("bounds") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.Bounds +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.Bounds`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("east", arg, east) + self._set_property("north", arg, north) + self._set_property("south", arg, south) + self._set_property("west", arg, west) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_center.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_center.py new file mode 100644 index 0000000..c3a2380 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_center.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Center(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox" + _path_str = "layout.mapbox.center" + _valid_props = {"lat", "lon"} + + @property + def lat(self): + """ + Sets the latitude of the center of the map (in degrees North). + + The 'lat' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lat"] + + @lat.setter + def lat(self, val): + self["lat"] = val + + @property + def lon(self): + """ + Sets the longitude of the center of the map (in degrees East). + + The 'lon' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["lon"] + + @lon.setter + def lon(self, val): + self["lon"] = val + + @property + def _prop_descriptions(self): + return """\ + lat + Sets the latitude of the center of the map (in degrees + North). + lon + Sets the longitude of the center of the map (in degrees + East). + """ + + def __init__(self, arg=None, lat=None, lon=None, **kwargs): + """ + Construct a new Center object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.Center` + lat + Sets the latitude of the center of the map (in degrees + North). + lon + Sets the longitude of the center of the map (in degrees + East). + + Returns + ------- + Center + """ + super().__init__("center") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.Center +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.Center`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("lat", arg, lat) + self._set_property("lon", arg, lon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_domain.py new file mode 100644 index 0000000..371af69 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox" + _path_str = "layout.mapbox.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this mapbox subplot . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this mapbox subplot . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this mapbox subplot (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this mapbox subplot (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this mapbox subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this mapbox subplot . + x + Sets the horizontal domain of this mapbox subplot (in + plot fraction). + y + Sets the vertical domain of this mapbox subplot (in + plot fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this mapbox subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this mapbox subplot . + x + Sets the horizontal domain of this mapbox subplot (in + plot fraction). + y + Sets the vertical domain of this mapbox subplot (in + plot fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_layer.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_layer.py new file mode 100644 index 0000000..abad68f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/_layer.py @@ -0,0 +1,695 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Layer(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox" + _path_str = "layout.mapbox.layer" + _valid_props = { + "below", + "circle", + "color", + "coordinates", + "fill", + "line", + "maxzoom", + "minzoom", + "name", + "opacity", + "source", + "sourceattribution", + "sourcelayer", + "sourcetype", + "symbol", + "templateitemname", + "type", + "visible", + } + + @property + def below(self): + """ + 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. + + The 'below' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["below"] + + @below.setter + def below(self, val): + self["below"] = val + + @property + def circle(self): + """ + The 'circle' property is an instance of Circle + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.layer.Circle` + - A dict of string/value properties that will be passed + to the Circle constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.layer.Circle + """ + return self["circle"] + + @circle.setter + def circle(self, val): + self["circle"] = val + + @property + def color(self): + """ + Sets the primary layer color. If `type` is "circle", color + corresponds to the circle color (mapbox.layer.paint.circle- + color) If `type` is "line", color corresponds to the line color + (mapbox.layer.paint.line-color) If `type` is "fill", color + corresponds to the fill color (mapbox.layer.paint.fill-color) + If `type` is "symbol", color corresponds to the icon color + (mapbox.layer.paint.icon-color) + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coordinates(self): + """ + 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`. + + The 'coordinates' property accepts values of any type + + Returns + ------- + Any + """ + return self["coordinates"] + + @coordinates.setter + def coordinates(self, val): + self["coordinates"] = val + + @property + def fill(self): + """ + The 'fill' property is an instance of Fill + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.layer.Fill` + - A dict of string/value properties that will be passed + to the Fill constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.layer.Fill + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.layer.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.layer.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxzoom(self): + """ + Sets the maximum zoom level (mapbox.layer.maxzoom). At zoom + levels equal to or greater than the maxzoom, the layer will be + hidden. + + The 'maxzoom' property is a number and may be specified as: + - An int or float in the interval [0, 24] + + Returns + ------- + int|float + """ + return self["maxzoom"] + + @maxzoom.setter + def maxzoom(self, val): + self["maxzoom"] = val + + @property + def minzoom(self): + """ + Sets the minimum zoom level (mapbox.layer.minzoom). At zoom + levels less than the minzoom, the layer will be hidden. + + The 'minzoom' property is a number and may be specified as: + - An int or float in the interval [0, 24] + + Returns + ------- + int|float + """ + return self["minzoom"] + + @minzoom.setter + def minzoom(self, val): + self["minzoom"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the layer. If `type` is "circle", opacity + corresponds to the circle opacity (mapbox.layer.paint.circle- + opacity) If `type` is "line", opacity corresponds to the line + opacity (mapbox.layer.paint.line-opacity) If `type` is "fill", + opacity corresponds to the fill opacity + (mapbox.layer.paint.fill-opacity) If `type` is "symbol", + opacity corresponds to the icon/text opacity + (mapbox.layer.paint.text-opacity) + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def source(self): + """ + Sets the source data for this layer (mapbox.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. + + The 'source' property accepts values of any type + + Returns + ------- + Any + """ + return self["source"] + + @source.setter + def source(self, val): + self["source"] = val + + @property + def sourceattribution(self): + """ + Sets the attribution for this source. + + The 'sourceattribution' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["sourceattribution"] + + @sourceattribution.setter + def sourceattribution(self, val): + self["sourceattribution"] = val + + @property + def sourcelayer(self): + """ + Specifies the layer to use from a vector tile source + (mapbox.layer.source-layer). Required for "vector" source type + that supports multiple layers. + + The 'sourcelayer' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["sourcelayer"] + + @sourcelayer.setter + def sourcelayer(self, val): + self["sourcelayer"] = val + + @property + def sourcetype(self): + """ + Sets the source type for this layer, that is the type of the + layer data. + + The 'sourcetype' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['geojson', 'vector', 'raster', 'image'] + + Returns + ------- + Any + """ + return self["sourcetype"] + + @sourcetype.setter + def sourcetype(self, val): + self["sourcetype"] = val + + @property + def symbol(self): + """ + The 'symbol' property is an instance of Symbol + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.layer.Symbol` + - A dict of string/value properties that will be passed + to the Symbol constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.layer.Symbol + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['circle', 'line', 'fill', 'symbol', 'raster'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + Determines whether this layer is displayed + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + below + 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. + circle + :class:`plotly.graph_objects.layout.mapbox.layer.Circle + ` instance or dict with compatible properties + color + Sets the primary layer color. If `type` is "circle", + color corresponds to the circle color + (mapbox.layer.paint.circle-color) If `type` is "line", + color corresponds to the line color + (mapbox.layer.paint.line-color) If `type` is "fill", + color corresponds to the fill color + (mapbox.layer.paint.fill-color) If `type` is "symbol", + color corresponds to the icon color + (mapbox.layer.paint.icon-color) + coordinates + 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`. + fill + :class:`plotly.graph_objects.layout.mapbox.layer.Fill` + instance or dict with compatible properties + line + :class:`plotly.graph_objects.layout.mapbox.layer.Line` + instance or dict with compatible properties + maxzoom + Sets the maximum zoom level (mapbox.layer.maxzoom). At + zoom levels equal to or greater than the maxzoom, the + layer will be hidden. + minzoom + Sets the minimum zoom level (mapbox.layer.minzoom). At + zoom levels less than the minzoom, the layer will be + hidden. + name + 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. + opacity + Sets the opacity of the layer. If `type` is "circle", + opacity corresponds to the circle opacity + (mapbox.layer.paint.circle-opacity) If `type` is + "line", opacity corresponds to the line opacity + (mapbox.layer.paint.line-opacity) If `type` is "fill", + opacity corresponds to the fill opacity + (mapbox.layer.paint.fill-opacity) If `type` is + "symbol", opacity corresponds to the icon/text opacity + (mapbox.layer.paint.text-opacity) + source + Sets the source data for this layer + (mapbox.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. + sourceattribution + Sets the attribution for this source. + sourcelayer + Specifies the layer to use from a vector tile source + (mapbox.layer.source-layer). Required for "vector" + source type that supports multiple layers. + sourcetype + Sets the source type for this layer, that is the type + of the layer data. + symbol + :class:`plotly.graph_objects.layout.mapbox.layer.Symbol + ` instance or dict with compatible properties + templateitemname + 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`. + type + 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. + visible + Determines whether this layer is displayed + """ + + def __init__( + self, + arg=None, + below=None, + circle=None, + color=None, + coordinates=None, + fill=None, + line=None, + maxzoom=None, + minzoom=None, + name=None, + opacity=None, + source=None, + sourceattribution=None, + sourcelayer=None, + sourcetype=None, + symbol=None, + templateitemname=None, + type=None, + visible=None, + **kwargs, + ): + """ + Construct a new Layer object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.Layer` + below + 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. + circle + :class:`plotly.graph_objects.layout.mapbox.layer.Circle + ` instance or dict with compatible properties + color + Sets the primary layer color. If `type` is "circle", + color corresponds to the circle color + (mapbox.layer.paint.circle-color) If `type` is "line", + color corresponds to the line color + (mapbox.layer.paint.line-color) If `type` is "fill", + color corresponds to the fill color + (mapbox.layer.paint.fill-color) If `type` is "symbol", + color corresponds to the icon color + (mapbox.layer.paint.icon-color) + coordinates + 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`. + fill + :class:`plotly.graph_objects.layout.mapbox.layer.Fill` + instance or dict with compatible properties + line + :class:`plotly.graph_objects.layout.mapbox.layer.Line` + instance or dict with compatible properties + maxzoom + Sets the maximum zoom level (mapbox.layer.maxzoom). At + zoom levels equal to or greater than the maxzoom, the + layer will be hidden. + minzoom + Sets the minimum zoom level (mapbox.layer.minzoom). At + zoom levels less than the minzoom, the layer will be + hidden. + name + 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. + opacity + Sets the opacity of the layer. If `type` is "circle", + opacity corresponds to the circle opacity + (mapbox.layer.paint.circle-opacity) If `type` is + "line", opacity corresponds to the line opacity + (mapbox.layer.paint.line-opacity) If `type` is "fill", + opacity corresponds to the fill opacity + (mapbox.layer.paint.fill-opacity) If `type` is + "symbol", opacity corresponds to the icon/text opacity + (mapbox.layer.paint.text-opacity) + source + Sets the source data for this layer + (mapbox.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. + sourceattribution + Sets the attribution for this source. + sourcelayer + Specifies the layer to use from a vector tile source + (mapbox.layer.source-layer). Required for "vector" + source type that supports multiple layers. + sourcetype + Sets the source type for this layer, that is the type + of the layer data. + symbol + :class:`plotly.graph_objects.layout.mapbox.layer.Symbol + ` instance or dict with compatible properties + templateitemname + 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`. + type + 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. + visible + Determines whether this layer is displayed + + Returns + ------- + Layer + """ + super().__init__("layers") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.Layer +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.Layer`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("below", arg, below) + self._set_property("circle", arg, circle) + self._set_property("color", arg, color) + self._set_property("coordinates", arg, coordinates) + self._set_property("fill", arg, fill) + self._set_property("line", arg, line) + self._set_property("maxzoom", arg, maxzoom) + self._set_property("minzoom", arg, minzoom) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("source", arg, source) + self._set_property("sourceattribution", arg, sourceattribution) + self._set_property("sourcelayer", arg, sourcelayer) + self._set_property("sourcetype", arg, sourcetype) + self._set_property("symbol", arg, symbol) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/__init__.py new file mode 100644 index 0000000..2d86fbd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._circle import Circle + from ._fill import Fill + from ._line import Line + from ._symbol import Symbol + from . import symbol +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".symbol"], + ["._circle.Circle", "._fill.Fill", "._line.Line", "._symbol.Symbol"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_circle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_circle.py new file mode 100644 index 0000000..74ba819 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_circle.py @@ -0,0 +1,82 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Circle(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox.layer" + _path_str = "layout.mapbox.layer.circle" + _valid_props = {"radius"} + + @property + def radius(self): + """ + Sets the circle radius (mapbox.layer.paint.circle-radius). Has + an effect only when `type` is set to "circle". + + The 'radius' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["radius"] + + @radius.setter + def radius(self, val): + self["radius"] = val + + @property + def _prop_descriptions(self): + return """\ + radius + Sets the circle radius (mapbox.layer.paint.circle- + radius). Has an effect only when `type` is set to + "circle". + """ + + def __init__(self, arg=None, radius=None, **kwargs): + """ + Construct a new Circle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.layer.Circle` + radius + Sets the circle radius (mapbox.layer.paint.circle- + radius). Has an effect only when `type` is set to + "circle". + + Returns + ------- + Circle + """ + super().__init__("circle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.layer.Circle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.layer.Circle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("radius", arg, radius) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_fill.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_fill.py new file mode 100644 index 0000000..d7ae63c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_fill.py @@ -0,0 +1,86 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Fill(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox.layer" + _path_str = "layout.mapbox.layer.fill" + _valid_props = {"outlinecolor"} + + @property + def outlinecolor(self): + """ + Sets the fill outline color (mapbox.layer.paint.fill-outline- + color). Has an effect only when `type` is set to "fill". + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def _prop_descriptions(self): + return """\ + outlinecolor + Sets the fill outline color (mapbox.layer.paint.fill- + outline-color). Has an effect only when `type` is set + to "fill". + """ + + def __init__(self, arg=None, outlinecolor=None, **kwargs): + """ + Construct a new Fill object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.layer.Fill` + outlinecolor + Sets the fill outline color (mapbox.layer.paint.fill- + outline-color). Has an effect only when `type` is set + to "fill". + + Returns + ------- + Fill + """ + super().__init__("fill") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.layer.Fill +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.layer.Fill`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("outlinecolor", arg, outlinecolor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_line.py new file mode 100644 index 0000000..1ca3ca3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_line.py @@ -0,0 +1,133 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Line(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox.layer" + _path_str = "layout.mapbox.layer.line" + _valid_props = {"dash", "dashsrc", "width"} + + @property + def dash(self): + """ + Sets the length of dashes and gaps (mapbox.layer.paint.line- + dasharray). Has an effect only when `type` is set to "line". + + The 'dash' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def dashsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `dash`. + + The 'dashsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["dashsrc"] + + @dashsrc.setter + def dashsrc(self, val): + self["dashsrc"] = val + + @property + def width(self): + """ + Sets the line width (mapbox.layer.paint.line-width). Has an + effect only when `type` is set to "line". + + The 'width' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + dash + Sets the length of dashes and gaps + (mapbox.layer.paint.line-dasharray). Has an effect only + when `type` is set to "line". + dashsrc + Sets the source reference on Chart Studio Cloud for + `dash`. + width + Sets the line width (mapbox.layer.paint.line-width). + Has an effect only when `type` is set to "line". + """ + + def __init__(self, arg=None, dash=None, dashsrc=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.layer.Line` + dash + Sets the length of dashes and gaps + (mapbox.layer.paint.line-dasharray). Has an effect only + when `type` is set to "line". + dashsrc + Sets the source reference on Chart Studio Cloud for + `dash`. + width + Sets the line width (mapbox.layer.paint.line-width). + Has an effect only when `type` is set to "line". + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.layer.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.layer.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dash", arg, dash) + self._set_property("dashsrc", arg, dashsrc) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_symbol.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_symbol.py new file mode 100644 index 0000000..506e36a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/_symbol.py @@ -0,0 +1,245 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Symbol(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox.layer" + _path_str = "layout.mapbox.layer.symbol" + _valid_props = {"icon", "iconsize", "placement", "text", "textfont", "textposition"} + + @property + def icon(self): + """ + Sets the symbol icon image (mapbox.layer.layout.icon-image). + Full list: https://www.mapbox.com/maki-icons/ + + The 'icon' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["icon"] + + @icon.setter + def icon(self, val): + self["icon"] = val + + @property + def iconsize(self): + """ + Sets the symbol icon size (mapbox.layer.layout.icon-size). Has + an effect only when `type` is set to "symbol". + + The 'iconsize' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["iconsize"] + + @iconsize.setter + def iconsize(self, val): + self["iconsize"] = val + + @property + def placement(self): + """ + Sets the symbol and/or text placement + (mapbox.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 + + The 'placement' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['point', 'line', 'line-center'] + + Returns + ------- + Any + """ + return self["placement"] + + @placement.setter + def placement(self, val): + self["placement"] = val + + @property + def text(self): + """ + Sets the symbol text (mapbox.layer.layout.text-field). + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textfont(self): + """ + 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". + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.mapbox.layer.symbol.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.layout.mapbox.layer.symbol.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def textposition(self): + """ + Sets the positions of the `text` elements with respects to the + (x,y) coordinates. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def _prop_descriptions(self): + return """\ + icon + Sets the symbol icon image (mapbox.layer.layout.icon- + image). Full list: https://www.mapbox.com/maki-icons/ + iconsize + Sets the symbol icon size (mapbox.layer.layout.icon- + size). Has an effect only when `type` is set to + "symbol". + placement + Sets the symbol and/or text placement + (mapbox.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 + text + Sets the symbol text (mapbox.layer.layout.text-field). + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + """ + + def __init__( + self, + arg=None, + icon=None, + iconsize=None, + placement=None, + text=None, + textfont=None, + textposition=None, + **kwargs, + ): + """ + Construct a new Symbol object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.mapbox.layer.Symbol` + icon + Sets the symbol icon image (mapbox.layer.layout.icon- + image). Full list: https://www.mapbox.com/maki-icons/ + iconsize + Sets the symbol icon size (mapbox.layer.layout.icon- + size). Has an effect only when `type` is set to + "symbol". + placement + Sets the symbol and/or text placement + (mapbox.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 + text + Sets the symbol text (mapbox.layer.layout.text-field). + textfont + 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". + textposition + Sets the positions of the `text` elements with respects + to the (x,y) coordinates. + + Returns + ------- + Symbol + """ + super().__init__("symbol") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.layer.Symbol +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.layer.Symbol`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("icon", arg, icon) + self._set_property("iconsize", arg, iconsize) + self._set_property("placement", arg, placement) + self._set_property("text", arg, text) + self._set_property("textfont", arg, textfont) + self._set_property("textposition", arg, textposition) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py new file mode 100644 index 0000000..a713099 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py new file mode 100644 index 0000000..473535e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/mapbox/layer/symbol/_textfont.py @@ -0,0 +1,202 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Textfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.mapbox.layer.symbol" + _path_str = "layout.mapbox.layer.symbol.textfont" + _valid_props = {"color", "family", "size", "style", "weight"} + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + size=None, + style=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + 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". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.mapbox. + layer.symbol.Textfont` + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.mapbox.layer.symbol.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.mapbox.layer.symbol.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/_line.py new file mode 100644 index 0000000..b7d6420 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newselection/_line.py @@ -0,0 +1,142 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Line(_BaseLayoutHierarchyType): + _parent_path_str = "layout.newselection" + _path_str = "layout.newselection.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. By default uses either dark grey or white + to increase contrast with background color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. By default uses either dark grey + or white to increase contrast with background color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.newselection.Line` + color + Sets the line color. By default uses either dark grey + or white to increase contrast with background color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.newselection.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.newselection.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/__init__.py new file mode 100644 index 0000000..9192b99 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._label import Label + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from . import label + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".label", ".legendgrouptitle"], + ["._label.Label", "._legendgrouptitle.Legendgrouptitle", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_label.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_label.py new file mode 100644 index 0000000..419a6a0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_label.py @@ -0,0 +1,397 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Label(_BaseLayoutHierarchyType): + _parent_path_str = "layout.newshape" + _path_str = "layout.newshape.label" + _valid_props = { + "font", + "padding", + "text", + "textangle", + "textposition", + "texttemplate", + "xanchor", + "yanchor", + } + + @property + def font(self): + """ + Sets the new shape label text font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.newshape.label.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.newshape.label.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def padding(self): + """ + Sets padding (in px) between edge of label and edge of new + shape. + + The 'padding' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["padding"] + + @padding.setter + def padding(self, val): + self["padding"] = val + + @property + def text(self): + """ + Sets the text to display with the new shape. It is also used + for legend item if `name` is not provided. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + 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. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def textposition(self): + """ + 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. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right', 'start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def texttemplate(self): + """ + 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` and + `ycenter`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def xanchor(self): + """ + 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. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def yanchor(self): + """ + 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. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets the new shape label text font. + padding + Sets padding (in px) between edge of label and edge of + new shape. + text + Sets the text to display with the new shape. It is also + used for legend item if `name` is not provided. + textangle + 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. + textposition + 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. + texttemplate + 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` and `ycenter`. + xanchor + 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. + yanchor + 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. + """ + + def __init__( + self, + arg=None, + font=None, + padding=None, + text=None, + textangle=None, + textposition=None, + texttemplate=None, + xanchor=None, + yanchor=None, + **kwargs, + ): + """ + Construct a new Label object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.newshape.Label` + font + Sets the new shape label text font. + padding + Sets padding (in px) between edge of label and edge of + new shape. + text + Sets the text to display with the new shape. It is also + used for legend item if `name` is not provided. + textangle + 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. + textposition + 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. + texttemplate + 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` and `ycenter`. + xanchor + 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. + yanchor + 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. + + Returns + ------- + Label + """ + super().__init__("label") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.newshape.Label +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.newshape.Label`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("padding", arg, padding) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("textposition", arg, textposition) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("xanchor", arg, xanchor) + self._set_property("yanchor", arg, yanchor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_legendgrouptitle.py new file mode 100644 index 0000000..00230ca --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseLayoutHierarchyType): + _parent_path_str = "layout.newshape" + _path_str = "layout.newshape.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.newshape.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.newshape.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.newshap + e.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.newshape.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.newshape.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_line.py new file mode 100644 index 0000000..9a679d8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/_line.py @@ -0,0 +1,142 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Line(_BaseLayoutHierarchyType): + _parent_path_str = "layout.newshape" + _path_str = "layout.newshape.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. By default uses either dark grey or white + to increase contrast with background color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. By default uses either dark grey + or white to increase contrast with background color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.newshape.Line` + color + Sets the line color. By default uses either dark grey + or white to increase contrast with background color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.newshape.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.newshape.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/_font.py new file mode 100644 index 0000000..91e49de --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/label/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.newshape.label" + _path_str = "layout.newshape.label.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the new shape label text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.newshape.label.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.newshape.label.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.newshape.label.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py new file mode 100644 index 0000000..879c619 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/newshape/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.newshape.legendgrouptitle" + _path_str = "layout.newshape.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.newshap + e.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.newshape.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.newshape.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/__init__.py new file mode 100644 index 0000000..b893a6c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._angularaxis import AngularAxis + from ._domain import Domain + from ._radialaxis import RadialAxis + from . import angularaxis + from . import radialaxis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".angularaxis", ".radialaxis"], + ["._angularaxis.AngularAxis", "._domain.Domain", "._radialaxis.RadialAxis"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_angularaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_angularaxis.py new file mode 100644 index 0000000..0dbf891 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_angularaxis.py @@ -0,0 +1,1776 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class AngularAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar" + _path_str = "layout.polar.angularaxis" + _valid_props = { + "autotypenumbers", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "direction", + "dtick", + "exponentformat", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "minexponent", + "nticks", + "period", + "rotation", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thetaunit", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "type", + "uirevision", + "visible", + } + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def direction(self): + """ + Sets the direction corresponding to positive angles. + + The 'direction' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['counterclockwise', 'clockwise'] + + Returns + ------- + Any + """ + return self["direction"] + + @direction.setter + def direction(self, val): + self["direction"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def period(self): + """ + Set the angular period. Has an effect only when + `angularaxis.type` is "category". + + The 'period' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["period"] + + @period.setter + def period(self, val): + self["period"] = val + + @property + def rotation(self): + """ + 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), + + The 'rotation' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["rotation"] + + @rotation.setter + def rotation(self, val): + self["rotation"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thetaunit(self): + """ + Sets the format unit of the formatted "theta" values. Has an + effect only when `angularaxis.type` is "linear". + + The 'thetaunit' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radians', 'degrees'] + + Returns + ------- + Any + """ + return self["thetaunit"] + + @thetaunit.setter + def thetaunit(self, val): + self["thetaunit"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.angularaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.polar.angularaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.polar.angularaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.polar.angularaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.layout.polar.angula + raxis.tickformatstopdefaults), sets the default property values + to use for elements of layout.polar.angularaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.angularaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.polar.angularaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `rotation`. + Defaults to `polar.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + autotypenumbers + 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. + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + direction + Sets the direction corresponding to positive angles. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + period + Set the angular period. Has an effect only when + `angularaxis.type` is "category". + rotation + 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), + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thetaunit + Sets the format unit of the formatted "theta" values. + Has an effect only when `angularaxis.type` is "linear". + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.polar.an + gularaxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.angularaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.angularaxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `rotation`. Defaults to `polar.uirevision`. + visible + 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 + """ + + def __init__( + self, + arg=None, + autotypenumbers=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + direction=None, + dtick=None, + exponentformat=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + minexponent=None, + nticks=None, + period=None, + rotation=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thetaunit=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + type=None, + uirevision=None, + visible=None, + **kwargs, + ): + """ + Construct a new AngularAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.polar.AngularAxis` + autotypenumbers + 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. + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + direction + Sets the direction corresponding to positive angles. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + period + Set the angular period. Has an effect only when + `angularaxis.type` is "category". + rotation + 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), + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thetaunit + Sets the format unit of the formatted "theta" values. + Has an effect only when `angularaxis.type` is "linear". + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.polar.an + gularaxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.angularaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.angularaxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `rotation`. Defaults to `polar.uirevision`. + visible + 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 + + Returns + ------- + AngularAxis + """ + super().__init__("angularaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.AngularAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.AngularAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("direction", arg, direction) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("period", arg, period) + self._set_property("rotation", arg, rotation) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thetaunit", arg, thetaunit) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("type", arg, type) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_domain.py new file mode 100644 index 0000000..0fd15cf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar" + _path_str = "layout.polar.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this polar subplot . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this polar subplot . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this polar subplot (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this polar subplot (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this polar subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this polar subplot . + x + Sets the horizontal domain of this polar subplot (in + plot fraction). + y + Sets the vertical domain of this polar subplot (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.polar.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this polar subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this polar subplot . + x + Sets the horizontal domain of this polar subplot (in + plot fraction). + y + Sets the vertical domain of this polar subplot (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_radialaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_radialaxis.py new file mode 100644 index 0000000..aa5bfd5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/_radialaxis.py @@ -0,0 +1,2049 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class RadialAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar" + _path_str = "layout.polar.radialaxis" + _valid_props = { + "angle", + "autorange", + "autorangeoptions", + "autotickangles", + "autotypenumbers", + "calendar", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "dtick", + "exponentformat", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "maxallowed", + "minallowed", + "minexponent", + "nticks", + "range", + "rangemode", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "side", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "type", + "uirevision", + "visible", + } + + @property + def angle(self): + """ + 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. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed', 'min reversed', 'max reversed', + 'min', 'max'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autorangeoptions(self): + """ + The 'autorangeoptions' property is an instance of Autorangeoptions + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions` + - A dict of string/value properties that will be passed + to the Autorangeoptions constructor + + Returns + ------- + plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions + """ + return self["autorangeoptions"] + + @autorangeoptions.setter + def autorangeoptions(self, val): + self["autorangeoptions"] = val + + @property + def autotickangles(self): + """ + 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. + + The 'autotickangles' property is an info array that may be specified as: + * a list of elements where: + The 'autotickangles[i]' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + list + """ + return self["autotickangles"] + + @autotickangles.setter + def autotickangles(self, val): + self["autotickangles"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def calendar(self): + """ + 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` + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def maxallowed(self): + """ + Determines the maximum range of this axis. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Determines the minimum range of this axis. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + 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`. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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). + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['tozero', 'nonnegative', 'normal'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def side(self): + """ + Determines on which side of radial axis line the tick and tick + labels appear. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['clockwise', 'counterclockwise'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.polar.radialaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.polar.radialaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.polar.radialaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.layout.polar.radial + axis.tickformatstopdefaults), sets the default property values + to use for elements of layout.polar.radialaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.polar.radialaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.polar.radialaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'log', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `range`, + `autorange`, `angle`, and `title` if in `editable: true` + configuration. Defaults to `polar.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + 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. + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.polar.radialaxis.Au + torangeoptions` instance or dict with compatible + properties + autotickangles + 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. + autotypenumbers + 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. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + range + 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`. + rangemode + 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). + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines on which side of radial axis line the tick + and tick labels appear. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.polar.ra + dialaxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.radialaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.radialaxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.polar.radialaxis.Ti + tle` instance or dict with compatible properties + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `range`, `autorange`, `angle`, and `title` if in + `editable: true` configuration. Defaults to + `polar.uirevision`. + visible + 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 + """ + + def __init__( + self, + arg=None, + angle=None, + autorange=None, + autorangeoptions=None, + autotickangles=None, + autotypenumbers=None, + calendar=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + maxallowed=None, + minallowed=None, + minexponent=None, + nticks=None, + range=None, + rangemode=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + side=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + type=None, + uirevision=None, + visible=None, + **kwargs, + ): + """ + Construct a new RadialAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.polar.RadialAxis` + angle + 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. + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.polar.radialaxis.Au + torangeoptions` instance or dict with compatible + properties + autotickangles + 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. + autotypenumbers + 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. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + range + 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`. + rangemode + 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). + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines on which side of radial axis line the tick + and tick labels appear. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.polar.ra + dialaxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.pola + r.radialaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.polar.radialaxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.polar.radialaxis.Ti + tle` instance or dict with compatible properties + type + 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. + uirevision + Controls persistence of user-driven changes in axis + `range`, `autorange`, `angle`, and `title` if in + `editable: true` configuration. Defaults to + `polar.uirevision`. + visible + 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 + + Returns + ------- + RadialAxis + """ + super().__init__("radialaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.RadialAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.RadialAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("autorange", arg, autorange) + self._set_property("autorangeoptions", arg, autorangeoptions) + self._set_property("autotickangles", arg, autotickangles) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("calendar", arg, calendar) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("side", arg, side) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._set_property("uirevision", arg, uirevision) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/__init__.py new file mode 100644 index 0000000..1dfbe47 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py new file mode 100644 index 0000000..d0a6e74 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.angularaxis" + _path_str = "layout.polar.angularaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.a + ngularaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.angularaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.angularaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py new file mode 100644 index 0000000..8142b3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/angularaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.angularaxis" + _path_str = "layout.polar.angularaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.a + ngularaxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.angularaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.angularaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/__init__.py new file mode 100644 index 0000000..d58e980 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/__init__.py @@ -0,0 +1,22 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._autorangeoptions import Autorangeoptions + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + [ + "._autorangeoptions.Autorangeoptions", + "._tickfont.Tickfont", + "._tickformatstop.Tickformatstop", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py new file mode 100644 index 0000000..0c12c55 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_autorangeoptions.py @@ -0,0 +1,216 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Autorangeoptions(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.radialaxis" + _path_str = "layout.polar.radialaxis.autorangeoptions" + _valid_props = { + "clipmax", + "clipmin", + "include", + "includesrc", + "maxallowed", + "minallowed", + } + + @property + def clipmax(self): + """ + Clip autorange maximum if it goes beyond this value. Has no + effect when `autorangeoptions.maxallowed` is provided. + + The 'clipmax' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmax"] + + @clipmax.setter + def clipmax(self, val): + self["clipmax"] = val + + @property + def clipmin(self): + """ + Clip autorange minimum if it goes beyond this value. Has no + effect when `autorangeoptions.minallowed` is provided. + + The 'clipmin' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmin"] + + @clipmin.setter + def clipmin(self, val): + self["clipmin"] = val + + @property + def include(self): + """ + Ensure this value is included in autorange. + + The 'include' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["include"] + + @include.setter + def include(self, val): + self["include"] = val + + @property + def includesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `include`. + + The 'includesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["includesrc"] + + @includesrc.setter + def includesrc(self, val): + self["includesrc"] = val + + @property + def maxallowed(self): + """ + Use this value exactly as autorange maximum. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Use this value exactly as autorange minimum. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def _prop_descriptions(self): + return """\ + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + """ + + def __init__( + self, + arg=None, + clipmax=None, + clipmin=None, + include=None, + includesrc=None, + maxallowed=None, + minallowed=None, + **kwargs, + ): + """ + Construct a new Autorangeoptions object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.r + adialaxis.Autorangeoptions` + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + + Returns + ------- + Autorangeoptions + """ + super().__init__("autorangeoptions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Autorangeoptions`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("clipmax", arg, clipmax) + self._set_property("clipmin", arg, clipmin) + self._set_property("include", arg, include) + self._set_property("includesrc", arg, includesrc) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py new file mode 100644 index 0000000..6be3feb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.radialaxis" + _path_str = "layout.polar.radialaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.r + adialaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.radialaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py new file mode 100644 index 0000000..a2c237a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.radialaxis" + _path_str = "layout.polar.radialaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.r + adialaxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.radialaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_title.py new file mode 100644 index 0000000..6472d88 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.radialaxis" + _path_str = "layout.polar.radialaxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.polar.radialaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.polar.radialaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.r + adialaxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.radialaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.radialaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/_font.py new file mode 100644 index 0000000..8a6981f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/polar/radialaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.polar.radialaxis.title" + _path_str = "layout.polar.radialaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.polar.r + adialaxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.polar.radialaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.polar.radialaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/__init__.py new file mode 100644 index 0000000..3b340bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/__init__.py @@ -0,0 +1,32 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._annotation import Annotation + from ._aspectratio import Aspectratio + from ._camera import Camera + from ._domain import Domain + from ._xaxis import XAxis + from ._yaxis import YAxis + from ._zaxis import ZAxis + from . import annotation + from . import camera + from . import xaxis + from . import yaxis + from . import zaxis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".annotation", ".camera", ".xaxis", ".yaxis", ".zaxis"], + [ + "._annotation.Annotation", + "._aspectratio.Aspectratio", + "._camera.Camera", + "._domain.Domain", + "._xaxis.XAxis", + "._yaxis.YAxis", + "._zaxis.ZAxis", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_annotation.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_annotation.py new file mode 100644 index 0000000..341cb4b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_annotation.py @@ -0,0 +1,1243 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Annotation(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.annotation" + _valid_props = { + "align", + "arrowcolor", + "arrowhead", + "arrowside", + "arrowsize", + "arrowwidth", + "ax", + "ay", + "bgcolor", + "bordercolor", + "borderpad", + "borderwidth", + "captureevents", + "font", + "height", + "hoverlabel", + "hovertext", + "name", + "opacity", + "showarrow", + "standoff", + "startarrowhead", + "startarrowsize", + "startstandoff", + "templateitemname", + "text", + "textangle", + "valign", + "visible", + "width", + "x", + "xanchor", + "xshift", + "y", + "yanchor", + "yshift", + "z", + } + + @property + def align(self): + """ + 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. + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def arrowcolor(self): + """ + Sets the color of the annotation arrow. + + The 'arrowcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["arrowcolor"] + + @arrowcolor.setter + def arrowcolor(self, val): + self["arrowcolor"] = val + + @property + def arrowhead(self): + """ + Sets the end annotation arrow head style. + + The 'arrowhead' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 8] + + Returns + ------- + int + """ + return self["arrowhead"] + + @arrowhead.setter + def arrowhead(self, val): + self["arrowhead"] = val + + @property + def arrowside(self): + """ + Sets the annotation arrow head position. + + The 'arrowside' property is a flaglist and may be specified + as a string containing: + - Any combination of ['end', 'start'] joined with '+' characters + (e.g. 'end+start') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["arrowside"] + + @arrowside.setter + def arrowside(self, val): + self["arrowside"] = val + + @property + def arrowsize(self): + """ + 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. + + The 'arrowsize' property is a number and may be specified as: + - An int or float in the interval [0.3, inf] + + Returns + ------- + int|float + """ + return self["arrowsize"] + + @arrowsize.setter + def arrowsize(self, val): + self["arrowsize"] = val + + @property + def arrowwidth(self): + """ + Sets the width (in px) of annotation arrow line. + + The 'arrowwidth' property is a number and may be specified as: + - An int or float in the interval [0.1, inf] + + Returns + ------- + int|float + """ + return self["arrowwidth"] + + @arrowwidth.setter + def arrowwidth(self, val): + self["arrowwidth"] = val + + @property + def ax(self): + """ + Sets the x component of the arrow tail about the arrow head (in + pixels). + + The 'ax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["ax"] + + @ax.setter + def ax(self, val): + self["ax"] = val + + @property + def ay(self): + """ + Sets the y component of the arrow tail about the arrow head (in + pixels). + + The 'ay' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["ay"] + + @ay.setter + def ay(self, val): + self["ay"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the annotation. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the annotation `text`. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderpad(self): + """ + Sets the padding (in px) between the `text` and the enclosing + border. + + The 'borderpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderpad"] + + @borderpad.setter + def borderpad(self, val): + self["borderpad"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the annotation + `text`. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def captureevents(self): + """ + 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`. + + The 'captureevents' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["captureevents"] + + @captureevents.setter + def captureevents(self, val): + self["captureevents"] = val + + @property + def font(self): + """ + Sets the annotation text font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.annotation.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.scene.annotation.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def height(self): + """ + Sets an explicit height for the text box. null (default) lets + the text set the box height. Taller text will be clipped. + + The 'height' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["height"] + + @height.setter + def height(self, val): + self["height"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.annotation.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.layout.scene.annotation.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertext(self): + """ + Sets text to appear when hovering over this annotation. If + omitted or blank, no hover label will appear. + + The 'hovertext' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hovertext"] + + @hovertext.setter + def hovertext(self, val): + self["hovertext"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def opacity(self): + """ + Sets the opacity of the annotation (text + arrow). + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def showarrow(self): + """ + 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. + + The 'showarrow' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showarrow"] + + @showarrow.setter + def showarrow(self, val): + self["showarrow"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def startarrowhead(self): + """ + Sets the start annotation arrow head style. + + The 'startarrowhead' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 8] + + Returns + ------- + int + """ + return self["startarrowhead"] + + @startarrowhead.setter + def startarrowhead(self, val): + self["startarrowhead"] = val + + @property + def startarrowsize(self): + """ + 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. + + The 'startarrowsize' property is a number and may be specified as: + - An int or float in the interval [0.3, inf] + + Returns + ------- + int|float + """ + return self["startarrowsize"] + + @startarrowsize.setter + def startarrowsize(self, val): + self["startarrowsize"] = val + + @property + def startstandoff(self): + """ + 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. + + The 'startstandoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["startstandoff"] + + @startstandoff.setter + def startstandoff(self, val): + self["startstandoff"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def text(self): + """ + Sets the text associated with this annotation. Plotly uses a + subset of HTML tags to do things like newline (
), bold + (), italics (), hyperlinks (). + Tags , , , , are also supported. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + Sets the angle at which the `text` is drawn with respect to the + horizontal. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def valign(self): + """ + 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. + + The 'valign' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["valign"] + + @valign.setter + def valign(self, val): + self["valign"] = val + + @property + def visible(self): + """ + Determines whether or not this annotation is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + 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. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def x(self): + """ + Sets the annotation's x position. + + The 'x' property accepts values of any type + + Returns + ------- + Any + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xshift(self): + """ + Shifts the position of the whole annotation and arrow to the + right (positive) or left (negative) by this many pixels. + + The 'xshift' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["xshift"] + + @xshift.setter + def xshift(self, val): + self["xshift"] = val + + @property + def y(self): + """ + Sets the annotation's y position. + + The 'y' property accepts values of any type + + Returns + ------- + Any + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def yshift(self): + """ + Shifts the position of the whole annotation and arrow up + (positive) or down (negative) by this many pixels. + + The 'yshift' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["yshift"] + + @yshift.setter + def yshift(self, val): + self["yshift"] = val + + @property + def z(self): + """ + Sets the annotation's z position. + + The 'z' property accepts values of any type + + Returns + ------- + Any + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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. + arrowcolor + Sets the color of the annotation arrow. + arrowhead + Sets the end annotation arrow head style. + arrowside + Sets the annotation arrow head position. + arrowsize + 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. + arrowwidth + Sets the width (in px) of annotation arrow line. + ax + Sets the x component of the arrow tail about the arrow + head (in pixels). + ay + Sets the y component of the arrow tail about the arrow + head (in pixels). + bgcolor + Sets the background color of the annotation. + bordercolor + Sets the color of the border enclosing the annotation + `text`. + borderpad + Sets the padding (in px) between the `text` and the + enclosing border. + borderwidth + Sets the width (in px) of the border enclosing the + annotation `text`. + captureevents + 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`. + font + Sets the annotation text font. + height + Sets an explicit height for the text box. null + (default) lets the text set the box height. Taller text + will be clipped. + hoverlabel + :class:`plotly.graph_objects.layout.scene.annotation.Ho + verlabel` instance or dict with compatible properties + hovertext + Sets text to appear when hovering over this annotation. + If omitted or blank, no hover label will appear. + name + 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. + opacity + Sets the opacity of the annotation (text + arrow). + showarrow + 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. + standoff + 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. + startarrowhead + Sets the start annotation arrow head style. + startarrowsize + 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. + startstandoff + 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. + templateitemname + 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`. + text + Sets the text associated with this annotation. Plotly + uses a subset of HTML tags to do things like newline + (
), bold (), italics (), hyperlinks + (). Tags , , , , + are also supported. + textangle + Sets the angle at which the `text` is drawn with + respect to the horizontal. + valign + 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. + visible + Determines whether or not this annotation is visible. + width + 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. + x + Sets the annotation's x position. + xanchor + 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. + xshift + Shifts the position of the whole annotation and arrow + to the right (positive) or left (negative) by this many + pixels. + y + Sets the annotation's y position. + yanchor + 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. + yshift + Shifts the position of the whole annotation and arrow + up (positive) or down (negative) by this many pixels. + z + Sets the annotation's z position. + """ + + def __init__( + self, + arg=None, + align=None, + arrowcolor=None, + arrowhead=None, + arrowside=None, + arrowsize=None, + arrowwidth=None, + ax=None, + ay=None, + bgcolor=None, + bordercolor=None, + borderpad=None, + borderwidth=None, + captureevents=None, + font=None, + height=None, + hoverlabel=None, + hovertext=None, + name=None, + opacity=None, + showarrow=None, + standoff=None, + startarrowhead=None, + startarrowsize=None, + startstandoff=None, + templateitemname=None, + text=None, + textangle=None, + valign=None, + visible=None, + width=None, + x=None, + xanchor=None, + xshift=None, + y=None, + yanchor=None, + yshift=None, + z=None, + **kwargs, + ): + """ + Construct a new Annotation object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.Annotation` + align + 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. + arrowcolor + Sets the color of the annotation arrow. + arrowhead + Sets the end annotation arrow head style. + arrowside + Sets the annotation arrow head position. + arrowsize + 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. + arrowwidth + Sets the width (in px) of annotation arrow line. + ax + Sets the x component of the arrow tail about the arrow + head (in pixels). + ay + Sets the y component of the arrow tail about the arrow + head (in pixels). + bgcolor + Sets the background color of the annotation. + bordercolor + Sets the color of the border enclosing the annotation + `text`. + borderpad + Sets the padding (in px) between the `text` and the + enclosing border. + borderwidth + Sets the width (in px) of the border enclosing the + annotation `text`. + captureevents + 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`. + font + Sets the annotation text font. + height + Sets an explicit height for the text box. null + (default) lets the text set the box height. Taller text + will be clipped. + hoverlabel + :class:`plotly.graph_objects.layout.scene.annotation.Ho + verlabel` instance or dict with compatible properties + hovertext + Sets text to appear when hovering over this annotation. + If omitted or blank, no hover label will appear. + name + 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. + opacity + Sets the opacity of the annotation (text + arrow). + showarrow + 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. + standoff + 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. + startarrowhead + Sets the start annotation arrow head style. + startarrowsize + 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. + startstandoff + 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. + templateitemname + 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`. + text + Sets the text associated with this annotation. Plotly + uses a subset of HTML tags to do things like newline + (
), bold (), italics (), hyperlinks + (). Tags , , , , + are also supported. + textangle + Sets the angle at which the `text` is drawn with + respect to the horizontal. + valign + 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. + visible + Determines whether or not this annotation is visible. + width + 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. + x + Sets the annotation's x position. + xanchor + 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. + xshift + Shifts the position of the whole annotation and arrow + to the right (positive) or left (negative) by this many + pixels. + y + Sets the annotation's y position. + yanchor + 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. + yshift + Shifts the position of the whole annotation and arrow + up (positive) or down (negative) by this many pixels. + z + Sets the annotation's z position. + + Returns + ------- + Annotation + """ + super().__init__("annotations") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.Annotation +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.Annotation`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("arrowcolor", arg, arrowcolor) + self._set_property("arrowhead", arg, arrowhead) + self._set_property("arrowside", arg, arrowside) + self._set_property("arrowsize", arg, arrowsize) + self._set_property("arrowwidth", arg, arrowwidth) + self._set_property("ax", arg, ax) + self._set_property("ay", arg, ay) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderpad", arg, borderpad) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("captureevents", arg, captureevents) + self._set_property("font", arg, font) + self._set_property("height", arg, height) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertext", arg, hovertext) + self._set_property("name", arg, name) + self._set_property("opacity", arg, opacity) + self._set_property("showarrow", arg, showarrow) + self._set_property("standoff", arg, standoff) + self._set_property("startarrowhead", arg, startarrowhead) + self._set_property("startarrowsize", arg, startarrowsize) + self._set_property("startstandoff", arg, startstandoff) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("valign", arg, valign) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xshift", arg, xshift) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("yshift", arg, yshift) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_aspectratio.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_aspectratio.py new file mode 100644 index 0000000..62e1729 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_aspectratio.py @@ -0,0 +1,119 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Aspectratio(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.aspectratio" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + + y + + z + + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Aspectratio object + + Sets this scene's axis aspectratio. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.Aspectratio` + x + + y + + z + + + Returns + ------- + Aspectratio + """ + super().__init__("aspectratio") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.Aspectratio +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.Aspectratio`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_camera.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_camera.py new file mode 100644 index 0000000..cd73985 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_camera.py @@ -0,0 +1,183 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Camera(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.camera" + _valid_props = {"center", "eye", "projection", "up"} + + @property + def center(self): + """ + 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. + + The 'center' property is an instance of Center + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.camera.Center` + - A dict of string/value properties that will be passed + to the Center constructor + + Returns + ------- + plotly.graph_objs.layout.scene.camera.Center + """ + return self["center"] + + @center.setter + def center(self, val): + self["center"] = val + + @property + def eye(self): + """ + Sets the (x,y,z) components of the 'eye' camera vector. This + vector determines the view point about the origin of this + scene. + + The 'eye' property is an instance of Eye + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.camera.Eye` + - A dict of string/value properties that will be passed + to the Eye constructor + + Returns + ------- + plotly.graph_objs.layout.scene.camera.Eye + """ + return self["eye"] + + @eye.setter + def eye(self, val): + self["eye"] = val + + @property + def projection(self): + """ + The 'projection' property is an instance of Projection + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.camera.Projection` + - A dict of string/value properties that will be passed + to the Projection constructor + + Returns + ------- + plotly.graph_objs.layout.scene.camera.Projection + """ + return self["projection"] + + @projection.setter + def projection(self, val): + self["projection"] = val + + @property + def up(self): + """ + 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. + + The 'up' property is an instance of Up + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.camera.Up` + - A dict of string/value properties that will be passed + to the Up constructor + + Returns + ------- + plotly.graph_objs.layout.scene.camera.Up + """ + return self["up"] + + @up.setter + def up(self, val): + self["up"] = val + + @property + def _prop_descriptions(self): + return """\ + center + 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. + eye + Sets the (x,y,z) components of the 'eye' camera vector. + This vector determines the view point about the origin + of this scene. + projection + :class:`plotly.graph_objects.layout.scene.camera.Projec + tion` instance or dict with compatible properties + up + 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. + """ + + def __init__( + self, arg=None, center=None, eye=None, projection=None, up=None, **kwargs + ): + """ + Construct a new Camera object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.Camera` + center + 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. + eye + Sets the (x,y,z) components of the 'eye' camera vector. + This vector determines the view point about the origin + of this scene. + projection + :class:`plotly.graph_objects.layout.scene.camera.Projec + tion` instance or dict with compatible properties + up + 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. + + Returns + ------- + Camera + """ + super().__init__("camera") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.Camera +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.Camera`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("center", arg, center) + self._set_property("eye", arg, eye) + self._set_property("projection", arg, projection) + self._set_property("up", arg, up) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_domain.py new file mode 100644 index 0000000..ef03c38 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this scene subplot . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this scene subplot . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this scene subplot (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this scene subplot (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this scene subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this scene subplot . + x + Sets the horizontal domain of this scene subplot (in + plot fraction). + y + Sets the vertical domain of this scene subplot (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this scene subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this scene subplot . + x + Sets the horizontal domain of this scene subplot (in + plot fraction). + y + Sets the vertical domain of this scene subplot (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_xaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_xaxis.py new file mode 100644 index 0000000..3158a2e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_xaxis.py @@ -0,0 +1,2111 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class XAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.xaxis" + _valid_props = { + "autorange", + "autorangeoptions", + "autotypenumbers", + "backgroundcolor", + "calendar", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "dtick", + "exponentformat", + "gridcolor", + "gridwidth", + "hoverformat", + "labelalias", + "linecolor", + "linewidth", + "maxallowed", + "minallowed", + "minexponent", + "mirror", + "nticks", + "range", + "rangemode", + "separatethousands", + "showaxeslabels", + "showbackground", + "showexponent", + "showgrid", + "showline", + "showspikes", + "showticklabels", + "showtickprefix", + "showticksuffix", + "spikecolor", + "spikesides", + "spikethickness", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "type", + "visible", + "zeroline", + "zerolinecolor", + "zerolinewidth", + } + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed', 'min reversed', 'max reversed', + 'min', 'max'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autorangeoptions(self): + """ + The 'autorangeoptions' property is an instance of Autorangeoptions + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.xaxis.Autorangeoptions` + - A dict of string/value properties that will be passed + to the Autorangeoptions constructor + + Returns + ------- + plotly.graph_objs.layout.scene.xaxis.Autorangeoptions + """ + return self["autorangeoptions"] + + @autorangeoptions.setter + def autorangeoptions(self, val): + self["autorangeoptions"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def backgroundcolor(self): + """ + Sets the background color of this axis' wall. + + The 'backgroundcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["backgroundcolor"] + + @backgroundcolor.setter + def backgroundcolor(self, val): + self["backgroundcolor"] = val + + @property + def calendar(self): + """ + 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` + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def maxallowed(self): + """ + Determines the maximum range of this axis. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Determines the minimum range of this axis. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def mirror(self): + """ + 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. + + The 'mirror' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, 'ticks', False, 'all', 'allticks'] + + Returns + ------- + Any + """ + return self["mirror"] + + @mirror.setter + def mirror(self, val): + self["mirror"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + 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`. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showaxeslabels(self): + """ + Sets whether or not this axis is labeled + + The 'showaxeslabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showaxeslabels"] + + @showaxeslabels.setter + def showaxeslabels(self, val): + self["showaxeslabels"] = val + + @property + def showbackground(self): + """ + Sets whether or not this axis' wall has a background color. + + The 'showbackground' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showbackground"] + + @showbackground.setter + def showbackground(self, val): + self["showbackground"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showspikes(self): + """ + Sets whether or not spikes starting from data points to this + axis' wall are shown on hover. + + The 'showspikes' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showspikes"] + + @showspikes.setter + def showspikes(self, val): + self["showspikes"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def spikecolor(self): + """ + Sets the color of the spikes. + + The 'spikecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["spikecolor"] + + @spikecolor.setter + def spikecolor(self, val): + self["spikecolor"] = val + + @property + def spikesides(self): + """ + Sets whether or not spikes extending from the projection data + points to this axis' wall boundaries are shown on hover. + + The 'spikesides' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["spikesides"] + + @spikesides.setter + def spikesides(self, val): + self["spikesides"] = val + + @property + def spikethickness(self): + """ + Sets the thickness (in px) of the spikes. + + The 'spikethickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["spikethickness"] + + @spikethickness.setter + def spikethickness(self, val): + self["spikethickness"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.xaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.scene.xaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.scene.xaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.scene.xaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.xaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.scene.xaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.xaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.scene.xaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.xaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.scene.xaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'log', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def zeroline(self): + """ + 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. + + The 'zeroline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zeroline"] + + @zeroline.setter + def zeroline(self, val): + self["zeroline"] = val + + @property + def zerolinecolor(self): + """ + Sets the line color of the zero line. + + The 'zerolinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["zerolinecolor"] + + @zerolinecolor.setter + def zerolinecolor(self, val): + self["zerolinecolor"] = val + + @property + def zerolinewidth(self): + """ + Sets the width (in px) of the zero line. + + The 'zerolinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zerolinewidth"] + + @zerolinewidth.setter + def zerolinewidth(self, val): + self["zerolinewidth"] = val + + @property + def _prop_descriptions(self): + return """\ + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.scene.xaxis.Autoran + geoptions` instance or dict with compatible properties + autotypenumbers + 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. + backgroundcolor + Sets the background color of this axis' wall. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + mirror + 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. + nticks + 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". + range + 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`. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showaxeslabels + Sets whether or not this axis is labeled + showbackground + Sets whether or not this axis' wall has a background + color. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Sets whether or not spikes starting from data points to + this axis' wall are shown on hover. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + spikecolor + Sets the color of the spikes. + spikesides + Sets whether or not spikes extending from the + projection data points to this axis' wall boundaries + are shown on hover. + spikethickness + Sets the thickness (in px) of the spikes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.scene.xa + xis.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.xaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.xaxis.tickformatstops + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.scene.xaxis.Title` + instance or dict with compatible properties + type + 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. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + """ + + def __init__( + self, + arg=None, + autorange=None, + autorangeoptions=None, + autotypenumbers=None, + backgroundcolor=None, + calendar=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + linecolor=None, + linewidth=None, + maxallowed=None, + minallowed=None, + minexponent=None, + mirror=None, + nticks=None, + range=None, + rangemode=None, + separatethousands=None, + showaxeslabels=None, + showbackground=None, + showexponent=None, + showgrid=None, + showline=None, + showspikes=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + spikecolor=None, + spikesides=None, + spikethickness=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + type=None, + visible=None, + zeroline=None, + zerolinecolor=None, + zerolinewidth=None, + **kwargs, + ): + """ + Construct a new XAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.XAxis` + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.scene.xaxis.Autoran + geoptions` instance or dict with compatible properties + autotypenumbers + 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. + backgroundcolor + Sets the background color of this axis' wall. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + mirror + 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. + nticks + 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". + range + 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`. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showaxeslabels + Sets whether or not this axis is labeled + showbackground + Sets whether or not this axis' wall has a background + color. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Sets whether or not spikes starting from data points to + this axis' wall are shown on hover. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + spikecolor + Sets the color of the spikes. + spikesides + Sets whether or not spikes extending from the + projection data points to this axis' wall boundaries + are shown on hover. + spikethickness + Sets the thickness (in px) of the spikes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.scene.xa + xis.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.xaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.xaxis.tickformatstops + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.scene.xaxis.Title` + instance or dict with compatible properties + type + 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. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + + Returns + ------- + XAxis + """ + super().__init__("xaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.XAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.XAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autorange", arg, autorange) + self._set_property("autorangeoptions", arg, autorangeoptions) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("backgroundcolor", arg, backgroundcolor) + self._set_property("calendar", arg, calendar) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._set_property("minexponent", arg, minexponent) + self._set_property("mirror", arg, mirror) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showaxeslabels", arg, showaxeslabels) + self._set_property("showbackground", arg, showbackground) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showspikes", arg, showspikes) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("spikecolor", arg, spikecolor) + self._set_property("spikesides", arg, spikesides) + self._set_property("spikethickness", arg, spikethickness) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._set_property("zeroline", arg, zeroline) + self._set_property("zerolinecolor", arg, zerolinecolor) + self._set_property("zerolinewidth", arg, zerolinewidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_yaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_yaxis.py new file mode 100644 index 0000000..852837d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_yaxis.py @@ -0,0 +1,2111 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class YAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.yaxis" + _valid_props = { + "autorange", + "autorangeoptions", + "autotypenumbers", + "backgroundcolor", + "calendar", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "dtick", + "exponentformat", + "gridcolor", + "gridwidth", + "hoverformat", + "labelalias", + "linecolor", + "linewidth", + "maxallowed", + "minallowed", + "minexponent", + "mirror", + "nticks", + "range", + "rangemode", + "separatethousands", + "showaxeslabels", + "showbackground", + "showexponent", + "showgrid", + "showline", + "showspikes", + "showticklabels", + "showtickprefix", + "showticksuffix", + "spikecolor", + "spikesides", + "spikethickness", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "type", + "visible", + "zeroline", + "zerolinecolor", + "zerolinewidth", + } + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed', 'min reversed', 'max reversed', + 'min', 'max'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autorangeoptions(self): + """ + The 'autorangeoptions' property is an instance of Autorangeoptions + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.yaxis.Autorangeoptions` + - A dict of string/value properties that will be passed + to the Autorangeoptions constructor + + Returns + ------- + plotly.graph_objs.layout.scene.yaxis.Autorangeoptions + """ + return self["autorangeoptions"] + + @autorangeoptions.setter + def autorangeoptions(self, val): + self["autorangeoptions"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def backgroundcolor(self): + """ + Sets the background color of this axis' wall. + + The 'backgroundcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["backgroundcolor"] + + @backgroundcolor.setter + def backgroundcolor(self, val): + self["backgroundcolor"] = val + + @property + def calendar(self): + """ + 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` + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def maxallowed(self): + """ + Determines the maximum range of this axis. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Determines the minimum range of this axis. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def mirror(self): + """ + 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. + + The 'mirror' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, 'ticks', False, 'all', 'allticks'] + + Returns + ------- + Any + """ + return self["mirror"] + + @mirror.setter + def mirror(self, val): + self["mirror"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + 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`. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showaxeslabels(self): + """ + Sets whether or not this axis is labeled + + The 'showaxeslabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showaxeslabels"] + + @showaxeslabels.setter + def showaxeslabels(self, val): + self["showaxeslabels"] = val + + @property + def showbackground(self): + """ + Sets whether or not this axis' wall has a background color. + + The 'showbackground' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showbackground"] + + @showbackground.setter + def showbackground(self, val): + self["showbackground"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showspikes(self): + """ + Sets whether or not spikes starting from data points to this + axis' wall are shown on hover. + + The 'showspikes' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showspikes"] + + @showspikes.setter + def showspikes(self, val): + self["showspikes"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def spikecolor(self): + """ + Sets the color of the spikes. + + The 'spikecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["spikecolor"] + + @spikecolor.setter + def spikecolor(self, val): + self["spikecolor"] = val + + @property + def spikesides(self): + """ + Sets whether or not spikes extending from the projection data + points to this axis' wall boundaries are shown on hover. + + The 'spikesides' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["spikesides"] + + @spikesides.setter + def spikesides(self, val): + self["spikesides"] = val + + @property + def spikethickness(self): + """ + Sets the thickness (in px) of the spikes. + + The 'spikethickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["spikethickness"] + + @spikethickness.setter + def spikethickness(self, val): + self["spikethickness"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.yaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.scene.yaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.scene.yaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.scene.yaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.yaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.scene.yaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.yaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.scene.yaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.yaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.scene.yaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'log', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def zeroline(self): + """ + 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. + + The 'zeroline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zeroline"] + + @zeroline.setter + def zeroline(self, val): + self["zeroline"] = val + + @property + def zerolinecolor(self): + """ + Sets the line color of the zero line. + + The 'zerolinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["zerolinecolor"] + + @zerolinecolor.setter + def zerolinecolor(self, val): + self["zerolinecolor"] = val + + @property + def zerolinewidth(self): + """ + Sets the width (in px) of the zero line. + + The 'zerolinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zerolinewidth"] + + @zerolinewidth.setter + def zerolinewidth(self, val): + self["zerolinewidth"] = val + + @property + def _prop_descriptions(self): + return """\ + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.scene.yaxis.Autoran + geoptions` instance or dict with compatible properties + autotypenumbers + 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. + backgroundcolor + Sets the background color of this axis' wall. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + mirror + 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. + nticks + 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". + range + 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`. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showaxeslabels + Sets whether or not this axis is labeled + showbackground + Sets whether or not this axis' wall has a background + color. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Sets whether or not spikes starting from data points to + this axis' wall are shown on hover. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + spikecolor + Sets the color of the spikes. + spikesides + Sets whether or not spikes extending from the + projection data points to this axis' wall boundaries + are shown on hover. + spikethickness + Sets the thickness (in px) of the spikes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.scene.ya + xis.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.yaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.yaxis.tickformatstops + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.scene.yaxis.Title` + instance or dict with compatible properties + type + 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. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + """ + + def __init__( + self, + arg=None, + autorange=None, + autorangeoptions=None, + autotypenumbers=None, + backgroundcolor=None, + calendar=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + linecolor=None, + linewidth=None, + maxallowed=None, + minallowed=None, + minexponent=None, + mirror=None, + nticks=None, + range=None, + rangemode=None, + separatethousands=None, + showaxeslabels=None, + showbackground=None, + showexponent=None, + showgrid=None, + showline=None, + showspikes=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + spikecolor=None, + spikesides=None, + spikethickness=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + type=None, + visible=None, + zeroline=None, + zerolinecolor=None, + zerolinewidth=None, + **kwargs, + ): + """ + Construct a new YAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.YAxis` + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.scene.yaxis.Autoran + geoptions` instance or dict with compatible properties + autotypenumbers + 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. + backgroundcolor + Sets the background color of this axis' wall. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + mirror + 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. + nticks + 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". + range + 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`. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showaxeslabels + Sets whether or not this axis is labeled + showbackground + Sets whether or not this axis' wall has a background + color. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Sets whether or not spikes starting from data points to + this axis' wall are shown on hover. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + spikecolor + Sets the color of the spikes. + spikesides + Sets whether or not spikes extending from the + projection data points to this axis' wall boundaries + are shown on hover. + spikethickness + Sets the thickness (in px) of the spikes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.scene.ya + xis.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.yaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.yaxis.tickformatstops + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.scene.yaxis.Title` + instance or dict with compatible properties + type + 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. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + + Returns + ------- + YAxis + """ + super().__init__("yaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.YAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.YAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autorange", arg, autorange) + self._set_property("autorangeoptions", arg, autorangeoptions) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("backgroundcolor", arg, backgroundcolor) + self._set_property("calendar", arg, calendar) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._set_property("minexponent", arg, minexponent) + self._set_property("mirror", arg, mirror) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showaxeslabels", arg, showaxeslabels) + self._set_property("showbackground", arg, showbackground) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showspikes", arg, showspikes) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("spikecolor", arg, spikecolor) + self._set_property("spikesides", arg, spikesides) + self._set_property("spikethickness", arg, spikethickness) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._set_property("zeroline", arg, zeroline) + self._set_property("zerolinecolor", arg, zerolinecolor) + self._set_property("zerolinewidth", arg, zerolinewidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_zaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_zaxis.py new file mode 100644 index 0000000..81936c6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/_zaxis.py @@ -0,0 +1,2111 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class ZAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene" + _path_str = "layout.scene.zaxis" + _valid_props = { + "autorange", + "autorangeoptions", + "autotypenumbers", + "backgroundcolor", + "calendar", + "categoryarray", + "categoryarraysrc", + "categoryorder", + "color", + "dtick", + "exponentformat", + "gridcolor", + "gridwidth", + "hoverformat", + "labelalias", + "linecolor", + "linewidth", + "maxallowed", + "minallowed", + "minexponent", + "mirror", + "nticks", + "range", + "rangemode", + "separatethousands", + "showaxeslabels", + "showbackground", + "showexponent", + "showgrid", + "showline", + "showspikes", + "showticklabels", + "showtickprefix", + "showticksuffix", + "spikecolor", + "spikesides", + "spikethickness", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "type", + "visible", + "zeroline", + "zerolinecolor", + "zerolinewidth", + } + + @property + def autorange(self): + """ + 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. + + The 'autorange' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed', 'min reversed', 'max reversed', + 'min', 'max'] + + Returns + ------- + Any + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def autorangeoptions(self): + """ + The 'autorangeoptions' property is an instance of Autorangeoptions + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.zaxis.Autorangeoptions` + - A dict of string/value properties that will be passed + to the Autorangeoptions constructor + + Returns + ------- + plotly.graph_objs.layout.scene.zaxis.Autorangeoptions + """ + return self["autorangeoptions"] + + @autorangeoptions.setter + def autorangeoptions(self, val): + self["autorangeoptions"] = val + + @property + def autotypenumbers(self): + """ + 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. + + The 'autotypenumbers' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['convert types', 'strict'] + + Returns + ------- + Any + """ + return self["autotypenumbers"] + + @autotypenumbers.setter + def autotypenumbers(self, val): + self["autotypenumbers"] = val + + @property + def backgroundcolor(self): + """ + Sets the background color of this axis' wall. + + The 'backgroundcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["backgroundcolor"] + + @backgroundcolor.setter + def backgroundcolor(self, val): + self["backgroundcolor"] = val + + @property + def calendar(self): + """ + 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` + + The 'calendar' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['chinese', 'coptic', 'discworld', 'ethiopian', + 'gregorian', 'hebrew', 'islamic', 'jalali', 'julian', + 'mayan', 'nanakshahi', 'nepali', 'persian', 'taiwan', + 'thai', 'ummalqura'] + + Returns + ------- + Any + """ + return self["calendar"] + + @calendar.setter + def calendar(self, val): + self["calendar"] = val + + @property + def categoryarray(self): + """ + Sets the order in which categories on this axis appear. Only + has an effect if `categoryorder` is set to "array". Used with + `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration 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'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def maxallowed(self): + """ + Determines the maximum range of this axis. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Determines the minimum range of this axis. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def mirror(self): + """ + 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. + + The 'mirror' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, 'ticks', False, 'all', 'allticks'] + + Returns + ------- + Any + """ + return self["mirror"] + + @mirror.setter + def mirror(self, val): + self["mirror"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def range(self): + """ + 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`. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'tozero', 'nonnegative'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showaxeslabels(self): + """ + Sets whether or not this axis is labeled + + The 'showaxeslabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showaxeslabels"] + + @showaxeslabels.setter + def showaxeslabels(self, val): + self["showaxeslabels"] = val + + @property + def showbackground(self): + """ + Sets whether or not this axis' wall has a background color. + + The 'showbackground' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showbackground"] + + @showbackground.setter + def showbackground(self, val): + self["showbackground"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showspikes(self): + """ + Sets whether or not spikes starting from data points to this + axis' wall are shown on hover. + + The 'showspikes' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showspikes"] + + @showspikes.setter + def showspikes(self, val): + self["showspikes"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def spikecolor(self): + """ + Sets the color of the spikes. + + The 'spikecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["spikecolor"] + + @spikecolor.setter + def spikecolor(self, val): + self["spikecolor"] = val + + @property + def spikesides(self): + """ + Sets whether or not spikes extending from the projection data + points to this axis' wall boundaries are shown on hover. + + The 'spikesides' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["spikesides"] + + @spikesides.setter + def spikesides(self, val): + self["spikesides"] = val + + @property + def spikethickness(self): + """ + Sets the thickness (in px) of the spikes. + + The 'spikethickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["spikethickness"] + + @spikethickness.setter + def spikethickness(self, val): + self["spikethickness"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.zaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.scene.zaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.scene.zaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.scene.zaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.scene.zaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.scene.zaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.zaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.scene.zaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.zaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.scene.zaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['-', 'linear', 'log', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def zeroline(self): + """ + 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. + + The 'zeroline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["zeroline"] + + @zeroline.setter + def zeroline(self, val): + self["zeroline"] = val + + @property + def zerolinecolor(self): + """ + Sets the line color of the zero line. + + The 'zerolinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["zerolinecolor"] + + @zerolinecolor.setter + def zerolinecolor(self, val): + self["zerolinecolor"] = val + + @property + def zerolinewidth(self): + """ + Sets the width (in px) of the zero line. + + The 'zerolinewidth' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["zerolinewidth"] + + @zerolinewidth.setter + def zerolinewidth(self, val): + self["zerolinewidth"] = val + + @property + def _prop_descriptions(self): + return """\ + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.scene.zaxis.Autoran + geoptions` instance or dict with compatible properties + autotypenumbers + 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. + backgroundcolor + Sets the background color of this axis' wall. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + mirror + 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. + nticks + 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". + range + 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`. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showaxeslabels + Sets whether or not this axis is labeled + showbackground + Sets whether or not this axis' wall has a background + color. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Sets whether or not spikes starting from data points to + this axis' wall are shown on hover. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + spikecolor + Sets the color of the spikes. + spikesides + Sets whether or not spikes extending from the + projection data points to this axis' wall boundaries + are shown on hover. + spikethickness + Sets the thickness (in px) of the spikes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.scene.za + xis.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.zaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.zaxis.tickformatstops + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.scene.zaxis.Title` + instance or dict with compatible properties + type + 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. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + """ + + def __init__( + self, + arg=None, + autorange=None, + autorangeoptions=None, + autotypenumbers=None, + backgroundcolor=None, + calendar=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + linecolor=None, + linewidth=None, + maxallowed=None, + minallowed=None, + minexponent=None, + mirror=None, + nticks=None, + range=None, + rangemode=None, + separatethousands=None, + showaxeslabels=None, + showbackground=None, + showexponent=None, + showgrid=None, + showline=None, + showspikes=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + spikecolor=None, + spikesides=None, + spikethickness=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + type=None, + visible=None, + zeroline=None, + zerolinecolor=None, + zerolinewidth=None, + **kwargs, + ): + """ + Construct a new ZAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.ZAxis` + autorange + 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. + autorangeoptions + :class:`plotly.graph_objects.layout.scene.zaxis.Autoran + geoptions` instance or dict with compatible properties + autotypenumbers + 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. + backgroundcolor + Sets the background color of this axis' wall. + calendar + 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` + categoryarray + Sets the order in which categories on this axis appear. + Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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. + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + maxallowed + Determines the maximum range of this axis. + minallowed + Determines the minimum range of this axis. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + mirror + 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. + nticks + 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". + range + 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`. + rangemode + 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. + separatethousands + If "true", even 4-digit integers are separated + showaxeslabels + Sets whether or not this axis is labeled + showbackground + Sets whether or not this axis' wall has a background + color. + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showspikes + Sets whether or not spikes starting from data points to + this axis' wall are shown on hover. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + spikecolor + Sets the color of the spikes. + spikesides + Sets whether or not spikes extending from the + projection data points to this axis' wall boundaries + are shown on hover. + spikethickness + Sets the thickness (in px) of the spikes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.scene.za + xis.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.layout.scen + e.zaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.scene.zaxis.tickformatstops + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.scene.zaxis.Title` + instance or dict with compatible properties + type + 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. + visible + 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 + zeroline + 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. + zerolinecolor + Sets the line color of the zero line. + zerolinewidth + Sets the width (in px) of the zero line. + + Returns + ------- + ZAxis + """ + super().__init__("zaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.ZAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.ZAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autorange", arg, autorange) + self._set_property("autorangeoptions", arg, autorangeoptions) + self._set_property("autotypenumbers", arg, autotypenumbers) + self._set_property("backgroundcolor", arg, backgroundcolor) + self._set_property("calendar", arg, calendar) + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._set_property("minexponent", arg, minexponent) + self._set_property("mirror", arg, mirror) + self._set_property("nticks", arg, nticks) + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showaxeslabels", arg, showaxeslabels) + self._set_property("showbackground", arg, showbackground) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showspikes", arg, showspikes) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("spikecolor", arg, spikecolor) + self._set_property("spikesides", arg, spikesides) + self._set_property("spikethickness", arg, spikethickness) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("type", arg, type) + self._set_property("visible", arg, visible) + self._set_property("zeroline", arg, zeroline) + self._set_property("zerolinecolor", arg, zerolinecolor) + self._set_property("zerolinewidth", arg, zerolinewidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/__init__.py new file mode 100644 index 0000000..372a9f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font + from ._hoverlabel import Hoverlabel + from . import hoverlabel +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".hoverlabel"], ["._font.Font", "._hoverlabel.Hoverlabel"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_font.py new file mode 100644 index 0000000..d4a686a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.annotation" + _path_str = "layout.scene.annotation.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the annotation text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.annotation.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.annotation.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.annotation.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py new file mode 100644 index 0000000..32232be --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/_hoverlabel.py @@ -0,0 +1,151 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.annotation" + _path_str = "layout.scene.annotation.hoverlabel" + _valid_props = {"bgcolor", "bordercolor", "font"} + + @property + def bgcolor(self): + """ + Sets the background color of the hover label. By default uses + the annotation's `bgcolor` made opaque, or white if it was + transparent. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover label. By default uses + either dark grey or white, for maximum contrast with + `hoverlabel.bgcolor`. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def font(self): + """ + Sets the hover label text font. By default uses the global + hover font and size, with color from `hoverlabel.bordercolor`. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.annotation.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.scene.annotation.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the background color of the hover label. By + default uses the annotation's `bgcolor` made opaque, or + white if it was transparent. + bordercolor + Sets the border color of the hover label. By default + uses either dark grey or white, for maximum contrast + with `hoverlabel.bgcolor`. + font + Sets the hover label text font. By default uses the + global hover font and size, with color from + `hoverlabel.bordercolor`. + """ + + def __init__(self, arg=None, bgcolor=None, bordercolor=None, font=None, **kwargs): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.a + nnotation.Hoverlabel` + bgcolor + Sets the background color of the hover label. By + default uses the annotation's `bgcolor` made opaque, or + white if it was transparent. + bordercolor + Sets the border color of the hover label. By default + uses either dark grey or white, for maximum contrast + with `hoverlabel.bgcolor`. + font + Sets the hover label text font. By default uses the + global hover font and size, with color from + `hoverlabel.bordercolor`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.annotation.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.annotation.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("font", arg, font) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py new file mode 100644 index 0000000..04b66f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/annotation/hoverlabel/_font.py @@ -0,0 +1,335 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.annotation.hoverlabel" + _path_str = "layout.scene.annotation.hoverlabel.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the hover label text font. By default uses the global + hover font and size, with color from `hoverlabel.bordercolor`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.a + nnotation.hoverlabel.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.annotation.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.annotation.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/__init__.py new file mode 100644 index 0000000..76c8894 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._center import Center + from ._eye import Eye + from ._projection import Projection + from ._up import Up +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [], + ["._center.Center", "._eye.Eye", "._projection.Projection", "._up.Up"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_center.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_center.py new file mode 100644 index 0000000..b64f441 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_center.py @@ -0,0 +1,121 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Center(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.camera" + _path_str = "layout.scene.camera.center" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + + y + + z + + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Center object + + 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. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.camera.Center` + x + + y + + z + + + Returns + ------- + Center + """ + super().__init__("center") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.camera.Center +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.camera.Center`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_eye.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_eye.py new file mode 100644 index 0000000..19767a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_eye.py @@ -0,0 +1,121 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Eye(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.camera" + _path_str = "layout.scene.camera.eye" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + + y + + z + + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Eye object + + Sets the (x,y,z) components of the 'eye' camera vector. This + vector determines the view point about the origin of this + scene. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.camera.Eye` + x + + y + + z + + + Returns + ------- + Eye + """ + super().__init__("eye") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.camera.Eye +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.camera.Eye`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_projection.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_projection.py new file mode 100644 index 0000000..58b936e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_projection.py @@ -0,0 +1,83 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Projection(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.camera" + _path_str = "layout.scene.camera.projection" + _valid_props = {"type"} + + @property + def type(self): + """ + Sets the projection type. The projection type could be either + "perspective" or "orthographic". The default is "perspective". + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['perspective', 'orthographic'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def _prop_descriptions(self): + return """\ + type + Sets the projection type. The projection type could be + either "perspective" or "orthographic". The default is + "perspective". + """ + + def __init__(self, arg=None, type=None, **kwargs): + """ + Construct a new Projection object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.c + amera.Projection` + type + Sets the projection type. The projection type could be + either "perspective" or "orthographic". The default is + "perspective". + + Returns + ------- + Projection + """ + super().__init__("projection") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.camera.Projection +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.camera.Projection`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("type", arg, type) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_up.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_up.py new file mode 100644 index 0000000..1f307ec --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/camera/_up.py @@ -0,0 +1,122 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Up(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.camera" + _path_str = "layout.scene.camera.up" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + + y + + z + + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Up object + + 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. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.camera.Up` + x + + y + + z + + + Returns + ------- + Up + """ + super().__init__("up") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.camera.Up +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.camera.Up`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/__init__.py new file mode 100644 index 0000000..d58e980 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/__init__.py @@ -0,0 +1,22 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._autorangeoptions import Autorangeoptions + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + [ + "._autorangeoptions.Autorangeoptions", + "._tickfont.Tickfont", + "._tickformatstop.Tickformatstop", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py new file mode 100644 index 0000000..707a38e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_autorangeoptions.py @@ -0,0 +1,216 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Autorangeoptions(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.xaxis" + _path_str = "layout.scene.xaxis.autorangeoptions" + _valid_props = { + "clipmax", + "clipmin", + "include", + "includesrc", + "maxallowed", + "minallowed", + } + + @property + def clipmax(self): + """ + Clip autorange maximum if it goes beyond this value. Has no + effect when `autorangeoptions.maxallowed` is provided. + + The 'clipmax' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmax"] + + @clipmax.setter + def clipmax(self, val): + self["clipmax"] = val + + @property + def clipmin(self): + """ + Clip autorange minimum if it goes beyond this value. Has no + effect when `autorangeoptions.minallowed` is provided. + + The 'clipmin' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmin"] + + @clipmin.setter + def clipmin(self, val): + self["clipmin"] = val + + @property + def include(self): + """ + Ensure this value is included in autorange. + + The 'include' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["include"] + + @include.setter + def include(self, val): + self["include"] = val + + @property + def includesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `include`. + + The 'includesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["includesrc"] + + @includesrc.setter + def includesrc(self, val): + self["includesrc"] = val + + @property + def maxallowed(self): + """ + Use this value exactly as autorange maximum. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Use this value exactly as autorange minimum. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def _prop_descriptions(self): + return """\ + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + """ + + def __init__( + self, + arg=None, + clipmax=None, + clipmin=None, + include=None, + includesrc=None, + maxallowed=None, + minallowed=None, + **kwargs, + ): + """ + Construct a new Autorangeoptions object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.x + axis.Autorangeoptions` + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + + Returns + ------- + Autorangeoptions + """ + super().__init__("autorangeoptions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.xaxis.Autorangeoptions +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.xaxis.Autorangeoptions`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("clipmax", arg, clipmax) + self._set_property("clipmin", arg, clipmin) + self._set_property("include", arg, include) + self._set_property("includesrc", arg, includesrc) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickfont.py new file mode 100644 index 0000000..d9d2628 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.xaxis" + _path_str = "layout.scene.xaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.xaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.xaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.xaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py new file mode 100644 index 0000000..8953f2c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.xaxis" + _path_str = "layout.scene.xaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.x + axis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.xaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.xaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_title.py new file mode 100644 index 0000000..b2be9aa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.xaxis" + _path_str = "layout.scene.xaxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.xaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.scene.xaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.xaxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.xaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.xaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/_font.py new file mode 100644 index 0000000..46dc7b4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/xaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.xaxis.title" + _path_str = "layout.scene.xaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.x + axis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.xaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.xaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/__init__.py new file mode 100644 index 0000000..d58e980 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/__init__.py @@ -0,0 +1,22 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._autorangeoptions import Autorangeoptions + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + [ + "._autorangeoptions.Autorangeoptions", + "._tickfont.Tickfont", + "._tickformatstop.Tickformatstop", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py new file mode 100644 index 0000000..1f57def --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_autorangeoptions.py @@ -0,0 +1,216 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Autorangeoptions(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.yaxis" + _path_str = "layout.scene.yaxis.autorangeoptions" + _valid_props = { + "clipmax", + "clipmin", + "include", + "includesrc", + "maxallowed", + "minallowed", + } + + @property + def clipmax(self): + """ + Clip autorange maximum if it goes beyond this value. Has no + effect when `autorangeoptions.maxallowed` is provided. + + The 'clipmax' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmax"] + + @clipmax.setter + def clipmax(self, val): + self["clipmax"] = val + + @property + def clipmin(self): + """ + Clip autorange minimum if it goes beyond this value. Has no + effect when `autorangeoptions.minallowed` is provided. + + The 'clipmin' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmin"] + + @clipmin.setter + def clipmin(self, val): + self["clipmin"] = val + + @property + def include(self): + """ + Ensure this value is included in autorange. + + The 'include' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["include"] + + @include.setter + def include(self, val): + self["include"] = val + + @property + def includesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `include`. + + The 'includesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["includesrc"] + + @includesrc.setter + def includesrc(self, val): + self["includesrc"] = val + + @property + def maxallowed(self): + """ + Use this value exactly as autorange maximum. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Use this value exactly as autorange minimum. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def _prop_descriptions(self): + return """\ + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + """ + + def __init__( + self, + arg=None, + clipmax=None, + clipmin=None, + include=None, + includesrc=None, + maxallowed=None, + minallowed=None, + **kwargs, + ): + """ + Construct a new Autorangeoptions object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.y + axis.Autorangeoptions` + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + + Returns + ------- + Autorangeoptions + """ + super().__init__("autorangeoptions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.yaxis.Autorangeoptions +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.yaxis.Autorangeoptions`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("clipmax", arg, clipmax) + self._set_property("clipmin", arg, clipmin) + self._set_property("include", arg, include) + self._set_property("includesrc", arg, includesrc) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickfont.py new file mode 100644 index 0000000..ff12147 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.yaxis" + _path_str = "layout.scene.yaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.yaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.yaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.yaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py new file mode 100644 index 0000000..faf7540 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.yaxis" + _path_str = "layout.scene.yaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.y + axis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.yaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.yaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_title.py new file mode 100644 index 0000000..296c622 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.yaxis" + _path_str = "layout.scene.yaxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.yaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.scene.yaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.yaxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.yaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.yaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/_font.py new file mode 100644 index 0000000..81c436c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/yaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.yaxis.title" + _path_str = "layout.scene.yaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.y + axis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.yaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.yaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/__init__.py new file mode 100644 index 0000000..d58e980 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/__init__.py @@ -0,0 +1,22 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._autorangeoptions import Autorangeoptions + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + [ + "._autorangeoptions.Autorangeoptions", + "._tickfont.Tickfont", + "._tickformatstop.Tickformatstop", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py new file mode 100644 index 0000000..ca4a8db --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_autorangeoptions.py @@ -0,0 +1,216 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Autorangeoptions(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.zaxis" + _path_str = "layout.scene.zaxis.autorangeoptions" + _valid_props = { + "clipmax", + "clipmin", + "include", + "includesrc", + "maxallowed", + "minallowed", + } + + @property + def clipmax(self): + """ + Clip autorange maximum if it goes beyond this value. Has no + effect when `autorangeoptions.maxallowed` is provided. + + The 'clipmax' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmax"] + + @clipmax.setter + def clipmax(self, val): + self["clipmax"] = val + + @property + def clipmin(self): + """ + Clip autorange minimum if it goes beyond this value. Has no + effect when `autorangeoptions.minallowed` is provided. + + The 'clipmin' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmin"] + + @clipmin.setter + def clipmin(self, val): + self["clipmin"] = val + + @property + def include(self): + """ + Ensure this value is included in autorange. + + The 'include' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["include"] + + @include.setter + def include(self, val): + self["include"] = val + + @property + def includesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `include`. + + The 'includesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["includesrc"] + + @includesrc.setter + def includesrc(self, val): + self["includesrc"] = val + + @property + def maxallowed(self): + """ + Use this value exactly as autorange maximum. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Use this value exactly as autorange minimum. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def _prop_descriptions(self): + return """\ + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + """ + + def __init__( + self, + arg=None, + clipmax=None, + clipmin=None, + include=None, + includesrc=None, + maxallowed=None, + minallowed=None, + **kwargs, + ): + """ + Construct a new Autorangeoptions object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.z + axis.Autorangeoptions` + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + + Returns + ------- + Autorangeoptions + """ + super().__init__("autorangeoptions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.zaxis.Autorangeoptions +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.zaxis.Autorangeoptions`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("clipmax", arg, clipmax) + self._set_property("clipmin", arg, clipmin) + self._set_property("include", arg, include) + self._set_property("includesrc", arg, includesrc) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickfont.py new file mode 100644 index 0000000..7146405 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.zaxis" + _path_str = "layout.scene.zaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.zaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.zaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.zaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py new file mode 100644 index 0000000..1d6cc95 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.zaxis" + _path_str = "layout.scene.zaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.z + axis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.zaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.zaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_title.py new file mode 100644 index 0000000..ae7e476 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.zaxis" + _path_str = "layout.scene.zaxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.scene.zaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.scene.zaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.scene.zaxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.zaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.zaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/_font.py new file mode 100644 index 0000000..54972c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/scene/zaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.scene.zaxis.title" + _path_str = "layout.scene.zaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.scene.z + axis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.scene.zaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.scene.zaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/_line.py new file mode 100644 index 0000000..aeecc17 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/selection/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Line(_BaseLayoutHierarchyType): + _parent_path_str = "layout.selection" + _path_str = "layout.selection.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.selection.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.selection.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.selection.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/__init__.py new file mode 100644 index 0000000..9192b99 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._label import Label + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from . import label + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".label", ".legendgrouptitle"], + ["._label.Label", "._legendgrouptitle.Legendgrouptitle", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_label.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_label.py new file mode 100644 index 0000000..81028c6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_label.py @@ -0,0 +1,396 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Label(_BaseLayoutHierarchyType): + _parent_path_str = "layout.shape" + _path_str = "layout.shape.label" + _valid_props = { + "font", + "padding", + "text", + "textangle", + "textposition", + "texttemplate", + "xanchor", + "yanchor", + } + + @property + def font(self): + """ + Sets the shape label text font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.shape.label.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.shape.label.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def padding(self): + """ + Sets padding (in px) between edge of label and edge of shape. + + The 'padding' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["padding"] + + @padding.setter + def padding(self, val): + self["padding"] = val + + @property + def text(self): + """ + Sets the text to display with shape. It is also used for legend + item if `name` is not provided. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def textangle(self): + """ + 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. + + The 'textangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["textangle"] + + @textangle.setter + def textangle(self, val): + self["textangle"] = val + + @property + def textposition(self): + """ + 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. + + The 'textposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle left', + 'middle center', 'middle right', 'bottom left', 'bottom + center', 'bottom right', 'start', 'middle', 'end'] + + Returns + ------- + Any + """ + return self["textposition"] + + @textposition.setter + def textposition(self, val): + self["textposition"] = val + + @property + def texttemplate(self): + """ + 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` and + `ycenter`. + + The 'texttemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["texttemplate"] + + @texttemplate.setter + def texttemplate(self, val): + self["texttemplate"] = val + + @property + def xanchor(self): + """ + 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. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def yanchor(self): + """ + 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. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets the shape label text font. + padding + Sets padding (in px) between edge of label and edge of + shape. + text + Sets the text to display with shape. It is also used + for legend item if `name` is not provided. + textangle + 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. + textposition + 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. + texttemplate + 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` and `ycenter`. + xanchor + 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. + yanchor + 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. + """ + + def __init__( + self, + arg=None, + font=None, + padding=None, + text=None, + textangle=None, + textposition=None, + texttemplate=None, + xanchor=None, + yanchor=None, + **kwargs, + ): + """ + Construct a new Label object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.shape.Label` + font + Sets the shape label text font. + padding + Sets padding (in px) between edge of label and edge of + shape. + text + Sets the text to display with shape. It is also used + for legend item if `name` is not provided. + textangle + 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. + textposition + 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. + texttemplate + 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` and `ycenter`. + xanchor + 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. + yanchor + 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. + + Returns + ------- + Label + """ + super().__init__("label") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.shape.Label +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.shape.Label`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("padding", arg, padding) + self._set_property("text", arg, text) + self._set_property("textangle", arg, textangle) + self._set_property("textposition", arg, textposition) + self._set_property("texttemplate", arg, texttemplate) + self._set_property("xanchor", arg, xanchor) + self._set_property("yanchor", arg, yanchor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_legendgrouptitle.py new file mode 100644 index 0000000..898c1fb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseLayoutHierarchyType): + _parent_path_str = "layout.shape" + _path_str = "layout.shape.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.shape.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.shape.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.shape.L + egendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.shape.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.shape.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_line.py new file mode 100644 index 0000000..b59b472 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Line(_BaseLayoutHierarchyType): + _parent_path_str = "layout.shape" + _path_str = "layout.shape.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.shape.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.shape.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.shape.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/_font.py new file mode 100644 index 0000000..d80142d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/label/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.shape.label" + _path_str = "layout.shape.label.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the shape label text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.shape.label.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.shape.label.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.shape.label.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py new file mode 100644 index 0000000..c547c64 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/shape/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.shape.legendgrouptitle" + _path_str = "layout.shape.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.shape.l + egendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.shape.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.shape.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/__init__.py new file mode 100644 index 0000000..071bb99 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/__init__.py @@ -0,0 +1,24 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._currentvalue import Currentvalue + from ._font import Font + from ._pad import Pad + from ._step import Step + from ._transition import Transition + from . import currentvalue +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".currentvalue"], + [ + "._currentvalue.Currentvalue", + "._font.Font", + "._pad.Pad", + "._step.Step", + "._transition.Transition", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_currentvalue.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_currentvalue.py new file mode 100644 index 0000000..d25d72b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_currentvalue.py @@ -0,0 +1,220 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Currentvalue(_BaseLayoutHierarchyType): + _parent_path_str = "layout.slider" + _path_str = "layout.slider.currentvalue" + _valid_props = {"font", "offset", "prefix", "suffix", "visible", "xanchor"} + + @property + def font(self): + """ + Sets the font of the current value label text. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.slider.currentvalue.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.slider.currentvalue.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def offset(self): + """ + The amount of space, in pixels, between the current value label + and the slider. + + The 'offset' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["offset"] + + @offset.setter + def offset(self, val): + self["offset"] = val + + @property + def prefix(self): + """ + When currentvalue.visible is true, this sets the prefix of the + label. + + The 'prefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["prefix"] + + @prefix.setter + def prefix(self, val): + self["prefix"] = val + + @property + def suffix(self): + """ + When currentvalue.visible is true, this sets the suffix of the + label. + + The 'suffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["suffix"] + + @suffix.setter + def suffix(self, val): + self["suffix"] = val + + @property + def visible(self): + """ + Shows the currently-selected value above the slider. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def xanchor(self): + """ + The alignment of the value readout relative to the length of + the slider. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets the font of the current value label text. + offset + The amount of space, in pixels, between the current + value label and the slider. + prefix + When currentvalue.visible is true, this sets the prefix + of the label. + suffix + When currentvalue.visible is true, this sets the suffix + of the label. + visible + Shows the currently-selected value above the slider. + xanchor + The alignment of the value readout relative to the + length of the slider. + """ + + def __init__( + self, + arg=None, + font=None, + offset=None, + prefix=None, + suffix=None, + visible=None, + xanchor=None, + **kwargs, + ): + """ + Construct a new Currentvalue object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.slider.Currentvalue` + font + Sets the font of the current value label text. + offset + The amount of space, in pixels, between the current + value label and the slider. + prefix + When currentvalue.visible is true, this sets the prefix + of the label. + suffix + When currentvalue.visible is true, this sets the suffix + of the label. + visible + Shows the currently-selected value above the slider. + xanchor + The alignment of the value readout relative to the + length of the slider. + + Returns + ------- + Currentvalue + """ + super().__init__("currentvalue") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.slider.Currentvalue +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.slider.Currentvalue`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("offset", arg, offset) + self._set_property("prefix", arg, prefix) + self._set_property("suffix", arg, suffix) + self._set_property("visible", arg, visible) + self._set_property("xanchor", arg, xanchor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_font.py new file mode 100644 index 0000000..4141210 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.slider" + _path_str = "layout.slider.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font of the slider step labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.slider.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.slider.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.slider.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_pad.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_pad.py new file mode 100644 index 0000000..dfee202 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_pad.py @@ -0,0 +1,159 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Pad(_BaseLayoutHierarchyType): + _parent_path_str = "layout.slider" + _path_str = "layout.slider.pad" + _valid_props = {"b", "l", "r", "t"} + + @property + def b(self): + """ + The amount of padding (in px) along the bottom of the + component. + + The 'b' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def l(self): + """ + The amount of padding (in px) on the left side of the + component. + + The 'l' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["l"] + + @l.setter + def l(self, val): + self["l"] = val + + @property + def r(self): + """ + The amount of padding (in px) on the right side of the + component. + + The 'r' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def t(self): + """ + The amount of padding (in px) along the top of the component. + + The 't' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["t"] + + @t.setter + def t(self, val): + self["t"] = val + + @property + def _prop_descriptions(self): + return """\ + b + The amount of padding (in px) along the bottom of the + component. + l + The amount of padding (in px) on the left side of the + component. + r + The amount of padding (in px) on the right side of the + component. + t + The amount of padding (in px) along the top of the + component. + """ + + def __init__(self, arg=None, b=None, l=None, r=None, t=None, **kwargs): + """ + Construct a new Pad object + + Set the padding of the slider component along each side. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.slider.Pad` + b + The amount of padding (in px) along the bottom of the + component. + l + The amount of padding (in px) on the left side of the + component. + r + The amount of padding (in px) on the right side of the + component. + t + The amount of padding (in px) along the top of the + component. + + Returns + ------- + Pad + """ + super().__init__("pad") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.slider.Pad +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.slider.Pad`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("b", arg, b) + self._set_property("l", arg, l) + self._set_property("r", arg, r) + self._set_property("t", arg, t) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_step.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_step.py new file mode 100644 index 0000000..bcc3d92 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_step.py @@ -0,0 +1,354 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Step(_BaseLayoutHierarchyType): + _parent_path_str = "layout.slider" + _path_str = "layout.slider.step" + _valid_props = { + "args", + "execute", + "label", + "method", + "name", + "templateitemname", + "value", + "visible", + } + + @property + def args(self): + """ + Sets the arguments values to be passed to the Plotly method set + in `method` on slide. + + The 'args' property is an info array that may be specified as: + + * a list or tuple of up to 3 elements where: + (0) The 'args[0]' property accepts values of any type + (1) The 'args[1]' property accepts values of any type + (2) The 'args[2]' property accepts values of any type + + Returns + ------- + list + """ + return self["args"] + + @args.setter + def args(self, val): + self["args"] = val + + @property + def execute(self): + """ + 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`. + + The 'execute' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["execute"] + + @execute.setter + def execute(self, val): + self["execute"] = val + + @property + def label(self): + """ + Sets the text label to appear on the slider + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def method(self): + """ + 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. + + The 'method' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['restyle', 'relayout', 'animate', 'update', 'skip'] + + Returns + ------- + Any + """ + return self["method"] + + @method.setter + def method(self, val): + self["method"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + Sets the value of the slider step, used to refer to the step + programatically. Defaults to the slider label if not provided. + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def visible(self): + """ + Determines whether or not this step is included in the slider. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + args + Sets the arguments values to be passed to the Plotly + method set in `method` on slide. + execute + 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`. + label + Sets the text label to appear on the slider + method + 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. + name + 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. + templateitemname + 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`. + value + Sets the value of the slider step, used to refer to the + step programatically. Defaults to the slider label if + not provided. + visible + Determines whether or not this step is included in the + slider. + """ + + def __init__( + self, + arg=None, + args=None, + execute=None, + label=None, + method=None, + name=None, + templateitemname=None, + value=None, + visible=None, + **kwargs, + ): + """ + Construct a new Step object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.slider.Step` + args + Sets the arguments values to be passed to the Plotly + method set in `method` on slide. + execute + 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`. + label + Sets the text label to appear on the slider + method + 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. + name + 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. + templateitemname + 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`. + value + Sets the value of the slider step, used to refer to the + step programatically. Defaults to the slider label if + not provided. + visible + Determines whether or not this step is included in the + slider. + + Returns + ------- + Step + """ + super().__init__("steps") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.slider.Step +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.slider.Step`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("args", arg, args) + self._set_property("execute", arg, execute) + self._set_property("label", arg, label) + self._set_property("method", arg, method) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_transition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_transition.py new file mode 100644 index 0000000..7fbc3aa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/_transition.py @@ -0,0 +1,109 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Transition(_BaseLayoutHierarchyType): + _parent_path_str = "layout.slider" + _path_str = "layout.slider.transition" + _valid_props = {"duration", "easing"} + + @property + def duration(self): + """ + Sets the duration of the slider transition + + The 'duration' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["duration"] + + @duration.setter + def duration(self, val): + self["duration"] = val + + @property + def easing(self): + """ + Sets the easing function of the slider transition + + The 'easing' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['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'] + + Returns + ------- + Any + """ + return self["easing"] + + @easing.setter + def easing(self, val): + self["easing"] = val + + @property + def _prop_descriptions(self): + return """\ + duration + Sets the duration of the slider transition + easing + Sets the easing function of the slider transition + """ + + def __init__(self, arg=None, duration=None, easing=None, **kwargs): + """ + Construct a new Transition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.slider.Transition` + duration + Sets the duration of the slider transition + easing + Sets the easing function of the slider transition + + Returns + ------- + Transition + """ + super().__init__("transition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.slider.Transition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.slider.Transition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("duration", arg, duration) + self._set_property("easing", arg, easing) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/_font.py new file mode 100644 index 0000000..60743f4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/slider/currentvalue/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.slider.currentvalue" + _path_str = "layout.slider.currentvalue.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font of the current value label text. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.slider. + currentvalue.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.slider.currentvalue.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.slider.currentvalue.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/__init__.py new file mode 100644 index 0000000..f809fe8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._imaginaryaxis import Imaginaryaxis + from ._realaxis import Realaxis + from . import imaginaryaxis + from . import realaxis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".imaginaryaxis", ".realaxis"], + ["._domain.Domain", "._imaginaryaxis.Imaginaryaxis", "._realaxis.Realaxis"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_domain.py new file mode 100644 index 0000000..bbfd610 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.smith" + _path_str = "layout.smith.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this smith subplot . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this smith subplot . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this smith subplot (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this smith subplot (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this smith subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this smith subplot . + x + Sets the horizontal domain of this smith subplot (in + plot fraction). + y + Sets the vertical domain of this smith subplot (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.smith.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this smith subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this smith subplot . + x + Sets the horizontal domain of this smith subplot (in + plot fraction). + y + Sets the vertical domain of this smith subplot (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.smith.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.smith.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_imaginaryaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_imaginaryaxis.py new file mode 100644 index 0000000..85ae07a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_imaginaryaxis.py @@ -0,0 +1,865 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Imaginaryaxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.smith" + _path_str = "layout.smith.imaginaryaxis" + _valid_props = { + "color", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "tickcolor", + "tickfont", + "tickformat", + "ticklen", + "tickprefix", + "ticks", + "ticksuffix", + "tickvals", + "tickvalssrc", + "tickwidth", + "visible", + } + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.smith.imaginaryaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.smith.imaginaryaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Defaults to + `realaxis.tickvals` plus the same as negatives and zero. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + ticklen + Sets the tick length (in px). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + tickvals + Sets the values at which ticks on this axis appear. + Defaults to `realaxis.tickvals` plus the same as + negatives and zero. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + visible + 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 + """ + + def __init__( + self, + arg=None, + color=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + tickcolor=None, + tickfont=None, + tickformat=None, + ticklen=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + visible=None, + **kwargs, + ): + """ + Construct a new Imaginaryaxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.smith.Imaginaryaxis` + color + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + ticklen + Sets the tick length (in px). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + tickvals + Sets the values at which ticks on this axis appear. + Defaults to `realaxis.tickvals` plus the same as + negatives and zero. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + visible + 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 + + Returns + ------- + Imaginaryaxis + """ + super().__init__("imaginaryaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.smith.Imaginaryaxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.smith.Imaginaryaxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_realaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_realaxis.py new file mode 100644 index 0000000..7a3bf0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/_realaxis.py @@ -0,0 +1,922 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Realaxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.smith" + _path_str = "layout.smith.realaxis" + _valid_props = { + "color", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "side", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "ticklen", + "tickprefix", + "ticks", + "ticksuffix", + "tickvals", + "tickvalssrc", + "tickwidth", + "visible", + } + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def side(self): + """ + Determines on which side of real axis line the tick and tick + labels appear. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.smith.realaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.smith.realaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def visible(self): + """ + 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 + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines on which side of real axis line the tick and + tick labels appear. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + ticklen + Sets the tick length (in px). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + tickvals + Sets the values at which ticks on this axis appear. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + visible + 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 + """ + + def __init__( + self, + arg=None, + color=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + side=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + ticklen=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + visible=None, + **kwargs, + ): + """ + Construct a new Realaxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.smith.Realaxis` + color + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + side + Determines on which side of real axis line the tick and + tick labels appear. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + ticklen + Sets the tick length (in px). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + tickvals + Sets the values at which ticks on this axis appear. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + visible + 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 + + Returns + ------- + Realaxis + """ + super().__init__("realaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.smith.Realaxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.smith.Realaxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("side", arg, side) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py new file mode 100644 index 0000000..c372856 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._tickfont.Tickfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py new file mode 100644 index 0000000..6ecb552 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/imaginaryaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.smith.imaginaryaxis" + _path_str = "layout.smith.imaginaryaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.smith.i + maginaryaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.smith.imaginaryaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.smith.imaginaryaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/__init__.py new file mode 100644 index 0000000..c372856 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._tickfont.Tickfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/_tickfont.py new file mode 100644 index 0000000..63d8713 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/smith/realaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.smith.realaxis" + _path_str = "layout.smith.realaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.smith.r + ealaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.smith.realaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.smith.realaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/__init__.py new file mode 100644 index 0000000..388a6b6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._data import Data + from ._layout import Layout + from . import data +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".data"], ["._data.Data", "._layout.Layout"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_data.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_data.py new file mode 100644 index 0000000..ef3b5f6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_data.py @@ -0,0 +1,1435 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Data(_BaseLayoutHierarchyType): + _parent_path_str = "layout.template" + _path_str = "layout.template.data" + _valid_props = { + "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", + "sankey", + "scatter", + "scatter3d", + "scattercarpet", + "scattergeo", + "scattergl", + "scattermap", + "scattermapbox", + "scatterpolar", + "scatterpolargl", + "scattersmith", + "scatterternary", + "splom", + "streamtube", + "sunburst", + "surface", + "table", + "treemap", + "violin", + "volume", + "waterfall", + } + + @property + def barpolar(self): + """ + The 'barpolar' property is a tuple of instances of + Barpolar that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Barpolar + - A list or tuple of dicts of string/value properties that + will be passed to the Barpolar constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Barpolar] + """ + return self["barpolar"] + + @barpolar.setter + def barpolar(self, val): + self["barpolar"] = val + + @property + def bar(self): + """ + The 'bar' property is a tuple of instances of + Bar that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Bar + - A list or tuple of dicts of string/value properties that + will be passed to the Bar constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Bar] + """ + return self["bar"] + + @bar.setter + def bar(self, val): + self["bar"] = val + + @property + def box(self): + """ + The 'box' property is a tuple of instances of + Box that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Box + - A list or tuple of dicts of string/value properties that + will be passed to the Box constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Box] + """ + return self["box"] + + @box.setter + def box(self, val): + self["box"] = val + + @property + def candlestick(self): + """ + The 'candlestick' property is a tuple of instances of + Candlestick that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Candlestick + - A list or tuple of dicts of string/value properties that + will be passed to the Candlestick constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Candlestick] + """ + return self["candlestick"] + + @candlestick.setter + def candlestick(self, val): + self["candlestick"] = val + + @property + def carpet(self): + """ + The 'carpet' property is a tuple of instances of + Carpet that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Carpet + - A list or tuple of dicts of string/value properties that + will be passed to the Carpet constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Carpet] + """ + return self["carpet"] + + @carpet.setter + def carpet(self, val): + self["carpet"] = val + + @property + def choroplethmapbox(self): + """ + The 'choroplethmapbox' property is a tuple of instances of + Choroplethmapbox that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Choroplethmapbox + - A list or tuple of dicts of string/value properties that + will be passed to the Choroplethmapbox constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Choroplethmapbox] + """ + return self["choroplethmapbox"] + + @choroplethmapbox.setter + def choroplethmapbox(self, val): + self["choroplethmapbox"] = val + + @property + def choroplethmap(self): + """ + The 'choroplethmap' property is a tuple of instances of + Choroplethmap that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Choroplethmap + - A list or tuple of dicts of string/value properties that + will be passed to the Choroplethmap constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Choroplethmap] + """ + return self["choroplethmap"] + + @choroplethmap.setter + def choroplethmap(self, val): + self["choroplethmap"] = val + + @property + def choropleth(self): + """ + The 'choropleth' property is a tuple of instances of + Choropleth that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Choropleth + - A list or tuple of dicts of string/value properties that + will be passed to the Choropleth constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Choropleth] + """ + return self["choropleth"] + + @choropleth.setter + def choropleth(self, val): + self["choropleth"] = val + + @property + def cone(self): + """ + The 'cone' property is a tuple of instances of + Cone that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Cone + - A list or tuple of dicts of string/value properties that + will be passed to the Cone constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Cone] + """ + return self["cone"] + + @cone.setter + def cone(self, val): + self["cone"] = val + + @property + def contourcarpet(self): + """ + The 'contourcarpet' property is a tuple of instances of + Contourcarpet that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Contourcarpet + - A list or tuple of dicts of string/value properties that + will be passed to the Contourcarpet constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Contourcarpet] + """ + return self["contourcarpet"] + + @contourcarpet.setter + def contourcarpet(self, val): + self["contourcarpet"] = val + + @property + def contour(self): + """ + The 'contour' property is a tuple of instances of + Contour that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Contour + - A list or tuple of dicts of string/value properties that + will be passed to the Contour constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Contour] + """ + return self["contour"] + + @contour.setter + def contour(self, val): + self["contour"] = val + + @property + def densitymapbox(self): + """ + The 'densitymapbox' property is a tuple of instances of + Densitymapbox that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Densitymapbox + - A list or tuple of dicts of string/value properties that + will be passed to the Densitymapbox constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Densitymapbox] + """ + return self["densitymapbox"] + + @densitymapbox.setter + def densitymapbox(self, val): + self["densitymapbox"] = val + + @property + def densitymap(self): + """ + The 'densitymap' property is a tuple of instances of + Densitymap that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Densitymap + - A list or tuple of dicts of string/value properties that + will be passed to the Densitymap constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Densitymap] + """ + return self["densitymap"] + + @densitymap.setter + def densitymap(self, val): + self["densitymap"] = val + + @property + def funnelarea(self): + """ + The 'funnelarea' property is a tuple of instances of + Funnelarea that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Funnelarea + - A list or tuple of dicts of string/value properties that + will be passed to the Funnelarea constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Funnelarea] + """ + return self["funnelarea"] + + @funnelarea.setter + def funnelarea(self, val): + self["funnelarea"] = val + + @property + def funnel(self): + """ + The 'funnel' property is a tuple of instances of + Funnel that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Funnel + - A list or tuple of dicts of string/value properties that + will be passed to the Funnel constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Funnel] + """ + return self["funnel"] + + @funnel.setter + def funnel(self, val): + self["funnel"] = val + + @property + def heatmap(self): + """ + The 'heatmap' property is a tuple of instances of + Heatmap that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Heatmap + - A list or tuple of dicts of string/value properties that + will be passed to the Heatmap constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Heatmap] + """ + return self["heatmap"] + + @heatmap.setter + def heatmap(self, val): + self["heatmap"] = val + + @property + def histogram2dcontour(self): + """ + The 'histogram2dcontour' property is a tuple of instances of + Histogram2dContour that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Histogram2dContour + - A list or tuple of dicts of string/value properties that + will be passed to the Histogram2dContour constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Histogram2dContour] + """ + return self["histogram2dcontour"] + + @histogram2dcontour.setter + def histogram2dcontour(self, val): + self["histogram2dcontour"] = val + + @property + def histogram2d(self): + """ + The 'histogram2d' property is a tuple of instances of + Histogram2d that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Histogram2d + - A list or tuple of dicts of string/value properties that + will be passed to the Histogram2d constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Histogram2d] + """ + return self["histogram2d"] + + @histogram2d.setter + def histogram2d(self, val): + self["histogram2d"] = val + + @property + def histogram(self): + """ + The 'histogram' property is a tuple of instances of + Histogram that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Histogram + - A list or tuple of dicts of string/value properties that + will be passed to the Histogram constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Histogram] + """ + return self["histogram"] + + @histogram.setter + def histogram(self, val): + self["histogram"] = val + + @property + def icicle(self): + """ + The 'icicle' property is a tuple of instances of + Icicle that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Icicle + - A list or tuple of dicts of string/value properties that + will be passed to the Icicle constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Icicle] + """ + return self["icicle"] + + @icicle.setter + def icicle(self, val): + self["icicle"] = val + + @property + def image(self): + """ + The 'image' property is a tuple of instances of + Image that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Image + - A list or tuple of dicts of string/value properties that + will be passed to the Image constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Image] + """ + return self["image"] + + @image.setter + def image(self, val): + self["image"] = val + + @property + def indicator(self): + """ + The 'indicator' property is a tuple of instances of + Indicator that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Indicator + - A list or tuple of dicts of string/value properties that + will be passed to the Indicator constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Indicator] + """ + return self["indicator"] + + @indicator.setter + def indicator(self, val): + self["indicator"] = val + + @property + def isosurface(self): + """ + The 'isosurface' property is a tuple of instances of + Isosurface that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Isosurface + - A list or tuple of dicts of string/value properties that + will be passed to the Isosurface constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Isosurface] + """ + return self["isosurface"] + + @isosurface.setter + def isosurface(self, val): + self["isosurface"] = val + + @property + def mesh3d(self): + """ + The 'mesh3d' property is a tuple of instances of + Mesh3d that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Mesh3d + - A list or tuple of dicts of string/value properties that + will be passed to the Mesh3d constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Mesh3d] + """ + return self["mesh3d"] + + @mesh3d.setter + def mesh3d(self, val): + self["mesh3d"] = val + + @property + def ohlc(self): + """ + The 'ohlc' property is a tuple of instances of + Ohlc that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Ohlc + - A list or tuple of dicts of string/value properties that + will be passed to the Ohlc constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Ohlc] + """ + return self["ohlc"] + + @ohlc.setter + def ohlc(self, val): + self["ohlc"] = val + + @property + def parcats(self): + """ + The 'parcats' property is a tuple of instances of + Parcats that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Parcats + - A list or tuple of dicts of string/value properties that + will be passed to the Parcats constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Parcats] + """ + return self["parcats"] + + @parcats.setter + def parcats(self, val): + self["parcats"] = val + + @property + def parcoords(self): + """ + The 'parcoords' property is a tuple of instances of + Parcoords that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Parcoords + - A list or tuple of dicts of string/value properties that + will be passed to the Parcoords constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Parcoords] + """ + return self["parcoords"] + + @parcoords.setter + def parcoords(self, val): + self["parcoords"] = val + + @property + def pie(self): + """ + The 'pie' property is a tuple of instances of + Pie that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Pie + - A list or tuple of dicts of string/value properties that + will be passed to the Pie constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Pie] + """ + return self["pie"] + + @pie.setter + def pie(self, val): + self["pie"] = val + + @property + def sankey(self): + """ + The 'sankey' property is a tuple of instances of + Sankey that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Sankey + - A list or tuple of dicts of string/value properties that + will be passed to the Sankey constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Sankey] + """ + return self["sankey"] + + @sankey.setter + def sankey(self, val): + self["sankey"] = val + + @property + def scatter3d(self): + """ + The 'scatter3d' property is a tuple of instances of + Scatter3d that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatter3d + - A list or tuple of dicts of string/value properties that + will be passed to the Scatter3d constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatter3d] + """ + return self["scatter3d"] + + @scatter3d.setter + def scatter3d(self, val): + self["scatter3d"] = val + + @property + def scattercarpet(self): + """ + The 'scattercarpet' property is a tuple of instances of + Scattercarpet that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattercarpet + - A list or tuple of dicts of string/value properties that + will be passed to the Scattercarpet constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattercarpet] + """ + return self["scattercarpet"] + + @scattercarpet.setter + def scattercarpet(self, val): + self["scattercarpet"] = val + + @property + def scattergeo(self): + """ + The 'scattergeo' property is a tuple of instances of + Scattergeo that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattergeo + - A list or tuple of dicts of string/value properties that + will be passed to the Scattergeo constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattergeo] + """ + return self["scattergeo"] + + @scattergeo.setter + def scattergeo(self, val): + self["scattergeo"] = val + + @property + def scattergl(self): + """ + The 'scattergl' property is a tuple of instances of + Scattergl that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattergl + - A list or tuple of dicts of string/value properties that + will be passed to the Scattergl constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattergl] + """ + return self["scattergl"] + + @scattergl.setter + def scattergl(self, val): + self["scattergl"] = val + + @property + def scattermapbox(self): + """ + The 'scattermapbox' property is a tuple of instances of + Scattermapbox that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattermapbox + - A list or tuple of dicts of string/value properties that + will be passed to the Scattermapbox constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattermapbox] + """ + return self["scattermapbox"] + + @scattermapbox.setter + def scattermapbox(self, val): + self["scattermapbox"] = val + + @property + def scattermap(self): + """ + The 'scattermap' property is a tuple of instances of + Scattermap that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattermap + - A list or tuple of dicts of string/value properties that + will be passed to the Scattermap constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattermap] + """ + return self["scattermap"] + + @scattermap.setter + def scattermap(self, val): + self["scattermap"] = val + + @property + def scatterpolargl(self): + """ + The 'scatterpolargl' property is a tuple of instances of + Scatterpolargl that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatterpolargl + - A list or tuple of dicts of string/value properties that + will be passed to the Scatterpolargl constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatterpolargl] + """ + return self["scatterpolargl"] + + @scatterpolargl.setter + def scatterpolargl(self, val): + self["scatterpolargl"] = val + + @property + def scatterpolar(self): + """ + The 'scatterpolar' property is a tuple of instances of + Scatterpolar that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatterpolar + - A list or tuple of dicts of string/value properties that + will be passed to the Scatterpolar constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatterpolar] + """ + return self["scatterpolar"] + + @scatterpolar.setter + def scatterpolar(self, val): + self["scatterpolar"] = val + + @property + def scatter(self): + """ + The 'scatter' property is a tuple of instances of + Scatter that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatter + - A list or tuple of dicts of string/value properties that + will be passed to the Scatter constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatter] + """ + return self["scatter"] + + @scatter.setter + def scatter(self, val): + self["scatter"] = val + + @property + def scattersmith(self): + """ + The 'scattersmith' property is a tuple of instances of + Scattersmith that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scattersmith + - A list or tuple of dicts of string/value properties that + will be passed to the Scattersmith constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scattersmith] + """ + return self["scattersmith"] + + @scattersmith.setter + def scattersmith(self, val): + self["scattersmith"] = val + + @property + def scatterternary(self): + """ + The 'scatterternary' property is a tuple of instances of + Scatterternary that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Scatterternary + - A list or tuple of dicts of string/value properties that + will be passed to the Scatterternary constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Scatterternary] + """ + return self["scatterternary"] + + @scatterternary.setter + def scatterternary(self, val): + self["scatterternary"] = val + + @property + def splom(self): + """ + The 'splom' property is a tuple of instances of + Splom that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Splom + - A list or tuple of dicts of string/value properties that + will be passed to the Splom constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Splom] + """ + return self["splom"] + + @splom.setter + def splom(self, val): + self["splom"] = val + + @property + def streamtube(self): + """ + The 'streamtube' property is a tuple of instances of + Streamtube that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Streamtube + - A list or tuple of dicts of string/value properties that + will be passed to the Streamtube constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Streamtube] + """ + return self["streamtube"] + + @streamtube.setter + def streamtube(self, val): + self["streamtube"] = val + + @property + def sunburst(self): + """ + The 'sunburst' property is a tuple of instances of + Sunburst that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Sunburst + - A list or tuple of dicts of string/value properties that + will be passed to the Sunburst constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Sunburst] + """ + return self["sunburst"] + + @sunburst.setter + def sunburst(self, val): + self["sunburst"] = val + + @property + def surface(self): + """ + The 'surface' property is a tuple of instances of + Surface that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Surface + - A list or tuple of dicts of string/value properties that + will be passed to the Surface constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Surface] + """ + return self["surface"] + + @surface.setter + def surface(self, val): + self["surface"] = val + + @property + def table(self): + """ + The 'table' property is a tuple of instances of + Table that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Table + - A list or tuple of dicts of string/value properties that + will be passed to the Table constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Table] + """ + return self["table"] + + @table.setter + def table(self, val): + self["table"] = val + + @property + def treemap(self): + """ + The 'treemap' property is a tuple of instances of + Treemap that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Treemap + - A list or tuple of dicts of string/value properties that + will be passed to the Treemap constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Treemap] + """ + return self["treemap"] + + @treemap.setter + def treemap(self, val): + self["treemap"] = val + + @property + def violin(self): + """ + The 'violin' property is a tuple of instances of + Violin that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Violin + - A list or tuple of dicts of string/value properties that + will be passed to the Violin constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Violin] + """ + return self["violin"] + + @violin.setter + def violin(self, val): + self["violin"] = val + + @property + def volume(self): + """ + The 'volume' property is a tuple of instances of + Volume that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Volume + - A list or tuple of dicts of string/value properties that + will be passed to the Volume constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Volume] + """ + return self["volume"] + + @volume.setter + def volume(self, val): + self["volume"] = val + + @property + def waterfall(self): + """ + The 'waterfall' property is a tuple of instances of + Waterfall that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.template.data.Waterfall + - A list or tuple of dicts of string/value properties that + will be passed to the Waterfall constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.template.data.Waterfall] + """ + return self["waterfall"] + + @waterfall.setter + def waterfall(self, val): + self["waterfall"] = val + + @property + def _prop_descriptions(self): + return """\ + barpolar + A tuple of :class:`plotly.graph_objects.Barpolar` + instances or dicts with compatible properties + bar + A tuple of :class:`plotly.graph_objects.Bar` instances + or dicts with compatible properties + box + A tuple of :class:`plotly.graph_objects.Box` instances + or dicts with compatible properties + candlestick + A tuple of :class:`plotly.graph_objects.Candlestick` + instances or dicts with compatible properties + carpet + A tuple of :class:`plotly.graph_objects.Carpet` + instances or dicts with compatible properties + choroplethmapbox + A tuple of + :class:`plotly.graph_objects.Choroplethmapbox` + instances or dicts with compatible properties + choroplethmap + A tuple of :class:`plotly.graph_objects.Choroplethmap` + instances or dicts with compatible properties + choropleth + A tuple of :class:`plotly.graph_objects.Choropleth` + instances or dicts with compatible properties + cone + A tuple of :class:`plotly.graph_objects.Cone` instances + or dicts with compatible properties + contourcarpet + A tuple of :class:`plotly.graph_objects.Contourcarpet` + instances or dicts with compatible properties + contour + A tuple of :class:`plotly.graph_objects.Contour` + instances or dicts with compatible properties + densitymapbox + A tuple of :class:`plotly.graph_objects.Densitymapbox` + instances or dicts with compatible properties + densitymap + A tuple of :class:`plotly.graph_objects.Densitymap` + instances or dicts with compatible properties + funnelarea + A tuple of :class:`plotly.graph_objects.Funnelarea` + instances or dicts with compatible properties + funnel + A tuple of :class:`plotly.graph_objects.Funnel` + instances or dicts with compatible properties + heatmap + A tuple of :class:`plotly.graph_objects.Heatmap` + instances or dicts with compatible properties + histogram2dcontour + A tuple of + :class:`plotly.graph_objects.Histogram2dContour` + instances or dicts with compatible properties + histogram2d + A tuple of :class:`plotly.graph_objects.Histogram2d` + instances or dicts with compatible properties + histogram + A tuple of :class:`plotly.graph_objects.Histogram` + instances or dicts with compatible properties + icicle + A tuple of :class:`plotly.graph_objects.Icicle` + instances or dicts with compatible properties + image + A tuple of :class:`plotly.graph_objects.Image` + instances or dicts with compatible properties + indicator + A tuple of :class:`plotly.graph_objects.Indicator` + instances or dicts with compatible properties + isosurface + A tuple of :class:`plotly.graph_objects.Isosurface` + instances or dicts with compatible properties + mesh3d + A tuple of :class:`plotly.graph_objects.Mesh3d` + instances or dicts with compatible properties + ohlc + A tuple of :class:`plotly.graph_objects.Ohlc` instances + or dicts with compatible properties + parcats + A tuple of :class:`plotly.graph_objects.Parcats` + instances or dicts with compatible properties + parcoords + A tuple of :class:`plotly.graph_objects.Parcoords` + instances or dicts with compatible properties + pie + A tuple of :class:`plotly.graph_objects.Pie` instances + or dicts with compatible properties + sankey + A tuple of :class:`plotly.graph_objects.Sankey` + instances or dicts with compatible properties + scatter3d + A tuple of :class:`plotly.graph_objects.Scatter3d` + instances or dicts with compatible properties + scattercarpet + A tuple of :class:`plotly.graph_objects.Scattercarpet` + instances or dicts with compatible properties + scattergeo + A tuple of :class:`plotly.graph_objects.Scattergeo` + instances or dicts with compatible properties + scattergl + A tuple of :class:`plotly.graph_objects.Scattergl` + instances or dicts with compatible properties + scattermapbox + A tuple of :class:`plotly.graph_objects.Scattermapbox` + instances or dicts with compatible properties + scattermap + A tuple of :class:`plotly.graph_objects.Scattermap` + instances or dicts with compatible properties + scatterpolargl + A tuple of :class:`plotly.graph_objects.Scatterpolargl` + instances or dicts with compatible properties + scatterpolar + A tuple of :class:`plotly.graph_objects.Scatterpolar` + instances or dicts with compatible properties + scatter + A tuple of :class:`plotly.graph_objects.Scatter` + instances or dicts with compatible properties + scattersmith + A tuple of :class:`plotly.graph_objects.Scattersmith` + instances or dicts with compatible properties + scatterternary + A tuple of :class:`plotly.graph_objects.Scatterternary` + instances or dicts with compatible properties + splom + A tuple of :class:`plotly.graph_objects.Splom` + instances or dicts with compatible properties + streamtube + A tuple of :class:`plotly.graph_objects.Streamtube` + instances or dicts with compatible properties + sunburst + A tuple of :class:`plotly.graph_objects.Sunburst` + instances or dicts with compatible properties + surface + A tuple of :class:`plotly.graph_objects.Surface` + instances or dicts with compatible properties + table + A tuple of :class:`plotly.graph_objects.Table` + instances or dicts with compatible properties + treemap + A tuple of :class:`plotly.graph_objects.Treemap` + instances or dicts with compatible properties + violin + A tuple of :class:`plotly.graph_objects.Violin` + instances or dicts with compatible properties + volume + A tuple of :class:`plotly.graph_objects.Volume` + instances or dicts with compatible properties + waterfall + A tuple of :class:`plotly.graph_objects.Waterfall` + instances or dicts with compatible properties + """ + + def __init__( + self, + arg=None, + barpolar=None, + bar=None, + box=None, + candlestick=None, + carpet=None, + choroplethmapbox=None, + choroplethmap=None, + choropleth=None, + cone=None, + contourcarpet=None, + contour=None, + densitymapbox=None, + densitymap=None, + funnelarea=None, + funnel=None, + heatmap=None, + histogram2dcontour=None, + histogram2d=None, + histogram=None, + icicle=None, + image=None, + indicator=None, + isosurface=None, + mesh3d=None, + ohlc=None, + parcats=None, + parcoords=None, + pie=None, + sankey=None, + scatter3d=None, + scattercarpet=None, + scattergeo=None, + scattergl=None, + scattermapbox=None, + scattermap=None, + scatterpolargl=None, + scatterpolar=None, + scatter=None, + scattersmith=None, + scatterternary=None, + splom=None, + streamtube=None, + sunburst=None, + surface=None, + table=None, + treemap=None, + violin=None, + volume=None, + waterfall=None, + **kwargs, + ): + """ + Construct a new Data object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.template.Data` + barpolar + A tuple of :class:`plotly.graph_objects.Barpolar` + instances or dicts with compatible properties + bar + A tuple of :class:`plotly.graph_objects.Bar` instances + or dicts with compatible properties + box + A tuple of :class:`plotly.graph_objects.Box` instances + or dicts with compatible properties + candlestick + A tuple of :class:`plotly.graph_objects.Candlestick` + instances or dicts with compatible properties + carpet + A tuple of :class:`plotly.graph_objects.Carpet` + instances or dicts with compatible properties + choroplethmapbox + A tuple of + :class:`plotly.graph_objects.Choroplethmapbox` + instances or dicts with compatible properties + choroplethmap + A tuple of :class:`plotly.graph_objects.Choroplethmap` + instances or dicts with compatible properties + choropleth + A tuple of :class:`plotly.graph_objects.Choropleth` + instances or dicts with compatible properties + cone + A tuple of :class:`plotly.graph_objects.Cone` instances + or dicts with compatible properties + contourcarpet + A tuple of :class:`plotly.graph_objects.Contourcarpet` + instances or dicts with compatible properties + contour + A tuple of :class:`plotly.graph_objects.Contour` + instances or dicts with compatible properties + densitymapbox + A tuple of :class:`plotly.graph_objects.Densitymapbox` + instances or dicts with compatible properties + densitymap + A tuple of :class:`plotly.graph_objects.Densitymap` + instances or dicts with compatible properties + funnelarea + A tuple of :class:`plotly.graph_objects.Funnelarea` + instances or dicts with compatible properties + funnel + A tuple of :class:`plotly.graph_objects.Funnel` + instances or dicts with compatible properties + heatmap + A tuple of :class:`plotly.graph_objects.Heatmap` + instances or dicts with compatible properties + histogram2dcontour + A tuple of + :class:`plotly.graph_objects.Histogram2dContour` + instances or dicts with compatible properties + histogram2d + A tuple of :class:`plotly.graph_objects.Histogram2d` + instances or dicts with compatible properties + histogram + A tuple of :class:`plotly.graph_objects.Histogram` + instances or dicts with compatible properties + icicle + A tuple of :class:`plotly.graph_objects.Icicle` + instances or dicts with compatible properties + image + A tuple of :class:`plotly.graph_objects.Image` + instances or dicts with compatible properties + indicator + A tuple of :class:`plotly.graph_objects.Indicator` + instances or dicts with compatible properties + isosurface + A tuple of :class:`plotly.graph_objects.Isosurface` + instances or dicts with compatible properties + mesh3d + A tuple of :class:`plotly.graph_objects.Mesh3d` + instances or dicts with compatible properties + ohlc + A tuple of :class:`plotly.graph_objects.Ohlc` instances + or dicts with compatible properties + parcats + A tuple of :class:`plotly.graph_objects.Parcats` + instances or dicts with compatible properties + parcoords + A tuple of :class:`plotly.graph_objects.Parcoords` + instances or dicts with compatible properties + pie + A tuple of :class:`plotly.graph_objects.Pie` instances + or dicts with compatible properties + sankey + A tuple of :class:`plotly.graph_objects.Sankey` + instances or dicts with compatible properties + scatter3d + A tuple of :class:`plotly.graph_objects.Scatter3d` + instances or dicts with compatible properties + scattercarpet + A tuple of :class:`plotly.graph_objects.Scattercarpet` + instances or dicts with compatible properties + scattergeo + A tuple of :class:`plotly.graph_objects.Scattergeo` + instances or dicts with compatible properties + scattergl + A tuple of :class:`plotly.graph_objects.Scattergl` + instances or dicts with compatible properties + scattermapbox + A tuple of :class:`plotly.graph_objects.Scattermapbox` + instances or dicts with compatible properties + scattermap + A tuple of :class:`plotly.graph_objects.Scattermap` + instances or dicts with compatible properties + scatterpolargl + A tuple of :class:`plotly.graph_objects.Scatterpolargl` + instances or dicts with compatible properties + scatterpolar + A tuple of :class:`plotly.graph_objects.Scatterpolar` + instances or dicts with compatible properties + scatter + A tuple of :class:`plotly.graph_objects.Scatter` + instances or dicts with compatible properties + scattersmith + A tuple of :class:`plotly.graph_objects.Scattersmith` + instances or dicts with compatible properties + scatterternary + A tuple of :class:`plotly.graph_objects.Scatterternary` + instances or dicts with compatible properties + splom + A tuple of :class:`plotly.graph_objects.Splom` + instances or dicts with compatible properties + streamtube + A tuple of :class:`plotly.graph_objects.Streamtube` + instances or dicts with compatible properties + sunburst + A tuple of :class:`plotly.graph_objects.Sunburst` + instances or dicts with compatible properties + surface + A tuple of :class:`plotly.graph_objects.Surface` + instances or dicts with compatible properties + table + A tuple of :class:`plotly.graph_objects.Table` + instances or dicts with compatible properties + treemap + A tuple of :class:`plotly.graph_objects.Treemap` + instances or dicts with compatible properties + violin + A tuple of :class:`plotly.graph_objects.Violin` + instances or dicts with compatible properties + volume + A tuple of :class:`plotly.graph_objects.Volume` + instances or dicts with compatible properties + waterfall + A tuple of :class:`plotly.graph_objects.Waterfall` + instances or dicts with compatible properties + + Returns + ------- + Data + """ + super().__init__("data") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.template.Data +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.template.Data`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("barpolar", arg, barpolar) + self._set_property("bar", arg, bar) + self._set_property("box", arg, box) + self._set_property("candlestick", arg, candlestick) + self._set_property("carpet", arg, carpet) + self._set_property("choroplethmapbox", arg, choroplethmapbox) + self._set_property("choroplethmap", arg, choroplethmap) + self._set_property("choropleth", arg, choropleth) + self._set_property("cone", arg, cone) + self._set_property("contourcarpet", arg, contourcarpet) + self._set_property("contour", arg, contour) + self._set_property("densitymapbox", arg, densitymapbox) + self._set_property("densitymap", arg, densitymap) + self._set_property("funnelarea", arg, funnelarea) + self._set_property("funnel", arg, funnel) + self._set_property("heatmap", arg, heatmap) + self._set_property("histogram2dcontour", arg, histogram2dcontour) + self._set_property("histogram2d", arg, histogram2d) + self._set_property("histogram", arg, histogram) + self._set_property("icicle", arg, icicle) + self._set_property("image", arg, image) + self._set_property("indicator", arg, indicator) + self._set_property("isosurface", arg, isosurface) + self._set_property("mesh3d", arg, mesh3d) + self._set_property("ohlc", arg, ohlc) + self._set_property("parcats", arg, parcats) + self._set_property("parcoords", arg, parcoords) + self._set_property("pie", arg, pie) + self._set_property("sankey", arg, sankey) + self._set_property("scatter3d", arg, scatter3d) + self._set_property("scattercarpet", arg, scattercarpet) + self._set_property("scattergeo", arg, scattergeo) + self._set_property("scattergl", arg, scattergl) + self._set_property("scattermapbox", arg, scattermapbox) + self._set_property("scattermap", arg, scattermap) + self._set_property("scatterpolargl", arg, scatterpolargl) + self._set_property("scatterpolar", arg, scatterpolar) + self._set_property("scatter", arg, scatter) + self._set_property("scattersmith", arg, scattersmith) + self._set_property("scatterternary", arg, scatterternary) + self._set_property("splom", arg, splom) + self._set_property("streamtube", arg, streamtube) + self._set_property("sunburst", arg, sunburst) + self._set_property("surface", arg, surface) + self._set_property("table", arg, table) + self._set_property("treemap", arg, treemap) + self._set_property("violin", arg, violin) + self._set_property("volume", arg, volume) + self._set_property("waterfall", arg, waterfall) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_layout.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_layout.py new file mode 100644 index 0000000..058b60b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/_layout.py @@ -0,0 +1 @@ +from plotly.graph_objs import Layout diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/__init__.py new file mode 100644 index 0000000..1ce619d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/__init__.py @@ -0,0 +1,111 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._bar import Bar + from ._barpolar import Barpolar + from ._box import Box + from ._candlestick import Candlestick + from ._carpet import Carpet + from ._choropleth import Choropleth + from ._choroplethmap import Choroplethmap + from ._choroplethmapbox import Choroplethmapbox + from ._cone import Cone + from ._contour import Contour + from ._contourcarpet import Contourcarpet + from ._densitymap import Densitymap + from ._densitymapbox import Densitymapbox + from ._funnel import Funnel + from ._funnelarea import Funnelarea + from ._heatmap import Heatmap + from ._histogram import Histogram + from ._histogram2d import Histogram2d + from ._histogram2dcontour import Histogram2dContour + from ._icicle import Icicle + from ._image import Image + from ._indicator import Indicator + from ._isosurface import Isosurface + from ._mesh3d import Mesh3d + from ._ohlc import Ohlc + from ._parcats import Parcats + from ._parcoords import Parcoords + from ._pie import Pie + from ._sankey import Sankey + from ._scatter import Scatter + from ._scatter3d import Scatter3d + from ._scattercarpet import Scattercarpet + from ._scattergeo import Scattergeo + from ._scattergl import Scattergl + from ._scattermap import Scattermap + from ._scattermapbox import Scattermapbox + from ._scatterpolar import Scatterpolar + from ._scatterpolargl import Scatterpolargl + from ._scattersmith import Scattersmith + from ._scatterternary import Scatterternary + from ._splom import Splom + from ._streamtube import Streamtube + from ._sunburst import Sunburst + from ._surface import Surface + from ._table import Table + from ._treemap import Treemap + from ._violin import Violin + from ._volume import Volume + from ._waterfall import Waterfall +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [], + [ + "._bar.Bar", + "._barpolar.Barpolar", + "._box.Box", + "._candlestick.Candlestick", + "._carpet.Carpet", + "._choropleth.Choropleth", + "._choroplethmap.Choroplethmap", + "._choroplethmapbox.Choroplethmapbox", + "._cone.Cone", + "._contour.Contour", + "._contourcarpet.Contourcarpet", + "._densitymap.Densitymap", + "._densitymapbox.Densitymapbox", + "._funnel.Funnel", + "._funnelarea.Funnelarea", + "._heatmap.Heatmap", + "._histogram.Histogram", + "._histogram2d.Histogram2d", + "._histogram2dcontour.Histogram2dContour", + "._icicle.Icicle", + "._image.Image", + "._indicator.Indicator", + "._isosurface.Isosurface", + "._mesh3d.Mesh3d", + "._ohlc.Ohlc", + "._parcats.Parcats", + "._parcoords.Parcoords", + "._pie.Pie", + "._sankey.Sankey", + "._scatter.Scatter", + "._scatter3d.Scatter3d", + "._scattercarpet.Scattercarpet", + "._scattergeo.Scattergeo", + "._scattergl.Scattergl", + "._scattermap.Scattermap", + "._scattermapbox.Scattermapbox", + "._scatterpolar.Scatterpolar", + "._scatterpolargl.Scatterpolargl", + "._scattersmith.Scattersmith", + "._scatterternary.Scatterternary", + "._splom.Splom", + "._streamtube.Streamtube", + "._sunburst.Sunburst", + "._surface.Surface", + "._table.Table", + "._treemap.Treemap", + "._violin.Violin", + "._volume.Volume", + "._waterfall.Waterfall", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_bar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_bar.py new file mode 100644 index 0000000..5a800e6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_bar.py @@ -0,0 +1 @@ +from plotly.graph_objs import Bar diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_barpolar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_barpolar.py new file mode 100644 index 0000000..18abed8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_barpolar.py @@ -0,0 +1 @@ +from plotly.graph_objs import Barpolar diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_box.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_box.py new file mode 100644 index 0000000..ffdd1d9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_box.py @@ -0,0 +1 @@ +from plotly.graph_objs import Box diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_candlestick.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_candlestick.py new file mode 100644 index 0000000..5d11b44 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_candlestick.py @@ -0,0 +1 @@ +from plotly.graph_objs import Candlestick diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_carpet.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_carpet.py new file mode 100644 index 0000000..b923d73 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_carpet.py @@ -0,0 +1 @@ +from plotly.graph_objs import Carpet diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choropleth.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choropleth.py new file mode 100644 index 0000000..733e127 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choropleth.py @@ -0,0 +1 @@ +from plotly.graph_objs import Choropleth diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmap.py new file mode 100644 index 0000000..855102a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmap.py @@ -0,0 +1 @@ +from plotly.graph_objs import Choroplethmap diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmapbox.py new file mode 100644 index 0000000..220b935 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_choroplethmapbox.py @@ -0,0 +1 @@ +from plotly.graph_objs import Choroplethmapbox diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_cone.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_cone.py new file mode 100644 index 0000000..7a28452 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_cone.py @@ -0,0 +1 @@ +from plotly.graph_objs import Cone diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contour.py new file mode 100644 index 0000000..e474909 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contour.py @@ -0,0 +1 @@ +from plotly.graph_objs import Contour diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contourcarpet.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contourcarpet.py new file mode 100644 index 0000000..6240faf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_contourcarpet.py @@ -0,0 +1 @@ +from plotly.graph_objs import Contourcarpet diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymap.py new file mode 100644 index 0000000..c73e108 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymap.py @@ -0,0 +1 @@ +from plotly.graph_objs import Densitymap diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymapbox.py new file mode 100644 index 0000000..d655b21 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_densitymapbox.py @@ -0,0 +1 @@ +from plotly.graph_objs import Densitymapbox diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnel.py new file mode 100644 index 0000000..70e2ba7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnel.py @@ -0,0 +1 @@ +from plotly.graph_objs import Funnel diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnelarea.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnelarea.py new file mode 100644 index 0000000..242d0fc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_funnelarea.py @@ -0,0 +1 @@ +from plotly.graph_objs import Funnelarea diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_heatmap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_heatmap.py new file mode 100644 index 0000000..6098ee8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_heatmap.py @@ -0,0 +1 @@ +from plotly.graph_objs import Heatmap diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram.py new file mode 100644 index 0000000..7ba4c6d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram.py @@ -0,0 +1 @@ +from plotly.graph_objs import Histogram diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2d.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2d.py new file mode 100644 index 0000000..710f7f9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2d.py @@ -0,0 +1 @@ +from plotly.graph_objs import Histogram2d diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2dcontour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2dcontour.py new file mode 100644 index 0000000..94af41a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_histogram2dcontour.py @@ -0,0 +1 @@ +from plotly.graph_objs import Histogram2dContour diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_icicle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_icicle.py new file mode 100644 index 0000000..6749cbe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_icicle.py @@ -0,0 +1 @@ +from plotly.graph_objs import Icicle diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_image.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_image.py new file mode 100644 index 0000000..828920a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_image.py @@ -0,0 +1 @@ +from plotly.graph_objs import Image diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_indicator.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_indicator.py new file mode 100644 index 0000000..a5a488f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_indicator.py @@ -0,0 +1 @@ +from plotly.graph_objs import Indicator diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_isosurface.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_isosurface.py new file mode 100644 index 0000000..5a7885a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_isosurface.py @@ -0,0 +1 @@ +from plotly.graph_objs import Isosurface diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_mesh3d.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_mesh3d.py new file mode 100644 index 0000000..2172a23 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_mesh3d.py @@ -0,0 +1 @@ +from plotly.graph_objs import Mesh3d diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_ohlc.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_ohlc.py new file mode 100644 index 0000000..d3f8574 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_ohlc.py @@ -0,0 +1 @@ +from plotly.graph_objs import Ohlc diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcats.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcats.py new file mode 100644 index 0000000..9b0290b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcats.py @@ -0,0 +1 @@ +from plotly.graph_objs import Parcats diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcoords.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcoords.py new file mode 100644 index 0000000..ccf5629 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_parcoords.py @@ -0,0 +1 @@ +from plotly.graph_objs import Parcoords diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_pie.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_pie.py new file mode 100644 index 0000000..0625fd2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_pie.py @@ -0,0 +1 @@ +from plotly.graph_objs import Pie diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sankey.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sankey.py new file mode 100644 index 0000000..b572f65 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sankey.py @@ -0,0 +1 @@ +from plotly.graph_objs import Sankey diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter.py new file mode 100644 index 0000000..afcfab3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatter diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter3d.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter3d.py new file mode 100644 index 0000000..9314622 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatter3d.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatter3d diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattercarpet.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattercarpet.py new file mode 100644 index 0000000..26d87ca --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattercarpet.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattercarpet diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergeo.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergeo.py new file mode 100644 index 0000000..34308e1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergeo.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattergeo diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergl.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergl.py new file mode 100644 index 0000000..30bd371 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattergl.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattergl diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermap.py new file mode 100644 index 0000000..5a494e2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermap.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattermap diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermapbox.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermapbox.py new file mode 100644 index 0000000..6c3333a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattermapbox.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattermapbox diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolar.py new file mode 100644 index 0000000..e1417b2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolar.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatterpolar diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolargl.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolargl.py new file mode 100644 index 0000000..60b023a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterpolargl.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatterpolargl diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattersmith.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattersmith.py new file mode 100644 index 0000000..e2dcf41 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scattersmith.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scattersmith diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterternary.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterternary.py new file mode 100644 index 0000000..2221ead --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_scatterternary.py @@ -0,0 +1 @@ +from plotly.graph_objs import Scatterternary diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_splom.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_splom.py new file mode 100644 index 0000000..0909cdf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_splom.py @@ -0,0 +1 @@ +from plotly.graph_objs import Splom diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_streamtube.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_streamtube.py new file mode 100644 index 0000000..8b23c31 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_streamtube.py @@ -0,0 +1 @@ +from plotly.graph_objs import Streamtube diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sunburst.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sunburst.py new file mode 100644 index 0000000..1b9511c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_sunburst.py @@ -0,0 +1 @@ +from plotly.graph_objs import Sunburst diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_surface.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_surface.py new file mode 100644 index 0000000..cfaa55d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_surface.py @@ -0,0 +1 @@ +from plotly.graph_objs import Surface diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_table.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_table.py new file mode 100644 index 0000000..2b6d4ad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_table.py @@ -0,0 +1 @@ +from plotly.graph_objs import Table diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_treemap.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_treemap.py new file mode 100644 index 0000000..5c648e7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_treemap.py @@ -0,0 +1 @@ +from plotly.graph_objs import Treemap diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_violin.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_violin.py new file mode 100644 index 0000000..23221b6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_violin.py @@ -0,0 +1 @@ +from plotly.graph_objs import Violin diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_volume.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_volume.py new file mode 100644 index 0000000..1128580 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_volume.py @@ -0,0 +1 @@ +from plotly.graph_objs import Volume diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_waterfall.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_waterfall.py new file mode 100644 index 0000000..c45e785 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/template/data/_waterfall.py @@ -0,0 +1 @@ +from plotly.graph_objs import Waterfall diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/__init__.py new file mode 100644 index 0000000..a9ba0ff --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/__init__.py @@ -0,0 +1,19 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._aaxis import Aaxis + from ._baxis import Baxis + from ._caxis import Caxis + from ._domain import Domain + from . import aaxis + from . import baxis + from . import caxis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".aaxis", ".baxis", ".caxis"], + ["._aaxis.Aaxis", "._baxis.Baxis", "._caxis.Caxis", "._domain.Domain"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_aaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_aaxis.py new file mode 100644 index 0000000..636e68a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_aaxis.py @@ -0,0 +1,1474 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Aaxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary" + _path_str = "layout.ternary.aaxis" + _valid_props = { + "color", + "dtick", + "exponentformat", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "min", + "minexponent", + "nticks", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "uirevision", + } + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def min(self): + """ + 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. + + The 'min' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["min"] + + @min.setter + def min(self, val): + self["min"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.aaxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.aaxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.ternary.aaxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.ternary.aaxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.ternary.aaxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.ternary.aaxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.aaxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.aaxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.aaxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.aaxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `min`, and + `title` if in `editable: true` configuration. Defaults to + `ternary.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + min + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.ternary. + aaxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.aaxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.ternary.aaxis.Title + ` instance or dict with compatible properties + uirevision + Controls persistence of user-driven changes in axis + `min`, and `title` if in `editable: true` + configuration. Defaults to `ternary.uirevision`. + """ + + def __init__( + self, + arg=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + min=None, + minexponent=None, + nticks=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + uirevision=None, + **kwargs, + ): + """ + Construct a new Aaxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.Aaxis` + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + min + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.ternary. + aaxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.aaxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.aaxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.ternary.aaxis.Title + ` instance or dict with compatible properties + uirevision + Controls persistence of user-driven changes in axis + `min`, and `title` if in `editable: true` + configuration. Defaults to `ternary.uirevision`. + + Returns + ------- + Aaxis + """ + super().__init__("aaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.Aaxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.Aaxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("min", arg, min) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("uirevision", arg, uirevision) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_baxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_baxis.py new file mode 100644 index 0000000..c660431 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_baxis.py @@ -0,0 +1,1474 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Baxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary" + _path_str = "layout.ternary.baxis" + _valid_props = { + "color", + "dtick", + "exponentformat", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "min", + "minexponent", + "nticks", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "uirevision", + } + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def min(self): + """ + 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. + + The 'min' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["min"] + + @min.setter + def min(self, val): + self["min"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.baxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.ternary.baxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.ternary.baxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.ternary.baxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.ternary.baxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.baxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.baxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `min`, and + `title` if in `editable: true` configuration. Defaults to + `ternary.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + min + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.ternary. + baxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.baxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.baxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.ternary.baxis.Title + ` instance or dict with compatible properties + uirevision + Controls persistence of user-driven changes in axis + `min`, and `title` if in `editable: true` + configuration. Defaults to `ternary.uirevision`. + """ + + def __init__( + self, + arg=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + min=None, + minexponent=None, + nticks=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + uirevision=None, + **kwargs, + ): + """ + Construct a new Baxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.Baxis` + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + min + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.ternary. + baxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.baxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.baxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.ternary.baxis.Title + ` instance or dict with compatible properties + uirevision + Controls persistence of user-driven changes in axis + `min`, and `title` if in `editable: true` + configuration. Defaults to `ternary.uirevision`. + + Returns + ------- + Baxis + """ + super().__init__("baxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.Baxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.Baxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("min", arg, min) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("uirevision", arg, uirevision) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_caxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_caxis.py new file mode 100644 index 0000000..486cf47 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_caxis.py @@ -0,0 +1,1474 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Caxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary" + _path_str = "layout.ternary.caxis" + _valid_props = { + "color", + "dtick", + "exponentformat", + "gridcolor", + "griddash", + "gridwidth", + "hoverformat", + "labelalias", + "layer", + "linecolor", + "linewidth", + "min", + "minexponent", + "nticks", + "separatethousands", + "showexponent", + "showgrid", + "showline", + "showticklabels", + "showtickprefix", + "showticksuffix", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "uirevision", + } + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def hoverformat(self): + """ + 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" + + The 'hoverformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hoverformat"] + + @hoverformat.setter + def hoverformat(self, val): + self["hoverformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def layer(self): + """ + 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. + + The 'layer' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['above traces', 'below traces'] + + Returns + ------- + Any + """ + return self["layer"] + + @layer.setter + def layer(self, val): + self["layer"] = val + + @property + def linecolor(self): + """ + Sets the axis line color. + + The 'linecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["linecolor"] + + @linecolor.setter + def linecolor(self, val): + self["linecolor"] = val + + @property + def linewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'linewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["linewidth"] + + @linewidth.setter + def linewidth(self, val): + self["linewidth"] = val + + @property + def min(self): + """ + 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. + + The 'min' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["min"] + + @min.setter + def min(self, val): + self["min"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def showline(self): + """ + Determines whether or not a line bounding this axis is drawn. + + The 'showline' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showline"] + + @showline.setter + def showline(self, val): + self["showline"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the tick font. + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.caxis.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.caxis.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.ternary.caxis.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.ternary.caxis.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.layout.ternary.caxis.tickformatstopdefaults), + sets the default property values to use for elements of + layout.ternary.caxis.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.caxis.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.caxis.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.caxis.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.caxis.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def uirevision(self): + """ + Controls persistence of user-driven changes in axis `min`, and + `title` if in `editable: true` configuration. Defaults to + `ternary.uirevision`. + + The 'uirevision' property accepts values of any type + + Returns + ------- + Any + """ + return self["uirevision"] + + @uirevision.setter + def uirevision(self, val): + self["uirevision"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + min + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.ternary. + caxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.caxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.caxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.ternary.caxis.Title + ` instance or dict with compatible properties + uirevision + Controls persistence of user-driven changes in axis + `min`, and `title` if in `editable: true` + configuration. Defaults to `ternary.uirevision`. + """ + + def __init__( + self, + arg=None, + color=None, + dtick=None, + exponentformat=None, + gridcolor=None, + griddash=None, + gridwidth=None, + hoverformat=None, + labelalias=None, + layer=None, + linecolor=None, + linewidth=None, + min=None, + minexponent=None, + nticks=None, + separatethousands=None, + showexponent=None, + showgrid=None, + showline=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + uirevision=None, + **kwargs, + ): + """ + Construct a new Caxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.Caxis` + color + 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. + dtick + 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" + exponentformat + 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. + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + hoverformat + 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" + labelalias + 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. + layer + 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. + linecolor + Sets the axis line color. + linewidth + Sets the width (in px) of the axis line. + min + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + showline + Determines whether or not a line bounding this axis is + drawn. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the tick font. + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.layout.ternary. + caxis.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.layout.tern + ary.caxis.tickformatstopdefaults), sets the default + property values to use for elements of + layout.ternary.caxis.tickformatstops + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.layout.ternary.caxis.Title + ` instance or dict with compatible properties + uirevision + Controls persistence of user-driven changes in axis + `min`, and `title` if in `editable: true` + configuration. Defaults to `ternary.uirevision`. + + Returns + ------- + Caxis + """ + super().__init__("caxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.Caxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.Caxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("hoverformat", arg, hoverformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("layer", arg, layer) + self._set_property("linecolor", arg, linecolor) + self._set_property("linewidth", arg, linewidth) + self._set_property("min", arg, min) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showgrid", arg, showgrid) + self._set_property("showline", arg, showline) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("uirevision", arg, uirevision) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_domain.py new file mode 100644 index 0000000..ce72c0d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Domain(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary" + _path_str = "layout.ternary.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this ternary subplot . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this ternary subplot . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this ternary subplot (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this ternary subplot (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this ternary subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this ternary subplot . + x + Sets the horizontal domain of this ternary subplot (in + plot fraction). + y + Sets the vertical domain of this ternary subplot (in + plot fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this ternary subplot . + row + If there is a layout grid, use the domain for this row + in the grid for this ternary subplot . + x + Sets the horizontal domain of this ternary subplot (in + plot fraction). + y + Sets the vertical domain of this ternary subplot (in + plot fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py new file mode 100644 index 0000000..2da6f8a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.aaxis" + _path_str = "layout.ternary.aaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .aaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.aaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.aaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py new file mode 100644 index 0000000..e58ffb3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.aaxis" + _path_str = "layout.ternary.aaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .aaxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.aaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.aaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_title.py new file mode 100644 index 0000000..3e143c2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.aaxis" + _path_str = "layout.ternary.aaxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.aaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.aaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.aaxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.aaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.aaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/_font.py new file mode 100644 index 0000000..2f486ce --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/aaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.aaxis.title" + _path_str = "layout.ternary.aaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .aaxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.aaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.aaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickfont.py new file mode 100644 index 0000000..33d4488 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.baxis" + _path_str = "layout.ternary.baxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .baxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.baxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.baxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py new file mode 100644 index 0000000..7c934f9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.baxis" + _path_str = "layout.ternary.baxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .baxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.baxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.baxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_title.py new file mode 100644 index 0000000..e41f7fa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.baxis" + _path_str = "layout.ternary.baxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.baxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.baxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.baxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.baxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/_font.py new file mode 100644 index 0000000..596e1c7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/baxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.baxis.title" + _path_str = "layout.ternary.baxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .baxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.baxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.baxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickfont.py new file mode 100644 index 0000000..9e5adba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.caxis" + _path_str = "layout.ternary.caxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .caxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.caxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.caxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py new file mode 100644 index 0000000..a0baf4d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.caxis" + _path_str = "layout.ternary.caxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .caxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.caxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.caxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_title.py new file mode 100644 index 0000000..cdb9446 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/_title.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.caxis" + _path_str = "layout.ternary.caxis.title" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.ternary.caxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.ternary.caxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.ternary.caxis.Title` + font + Sets this axis' title font. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.caxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.caxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/_font.py new file mode 100644 index 0000000..c4868a7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/ternary/caxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.ternary.caxis.title" + _path_str = "layout.ternary.caxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.ternary + .caxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.ternary.caxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.ternary.caxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/__init__.py new file mode 100644 index 0000000..11f90e0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/__init__.py @@ -0,0 +1,14 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font + from ._pad import Pad + from ._subtitle import Subtitle + from . import subtitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".subtitle"], ["._font.Font", "._pad.Pad", "._subtitle.Subtitle"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_font.py new file mode 100644 index 0000000..969f70e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.title" + _path_str = "layout.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_pad.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_pad.py new file mode 100644 index 0000000..c70910c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_pad.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Pad(_BaseLayoutHierarchyType): + _parent_path_str = "layout.title" + _path_str = "layout.title.pad" + _valid_props = {"b", "l", "r", "t"} + + @property + def b(self): + """ + The amount of padding (in px) along the bottom of the + component. + + The 'b' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def l(self): + """ + The amount of padding (in px) on the left side of the + component. + + The 'l' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["l"] + + @l.setter + def l(self, val): + self["l"] = val + + @property + def r(self): + """ + The amount of padding (in px) on the right side of the + component. + + The 'r' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def t(self): + """ + The amount of padding (in px) along the top of the component. + + The 't' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["t"] + + @t.setter + def t(self, val): + self["t"] = val + + @property + def _prop_descriptions(self): + return """\ + b + The amount of padding (in px) along the bottom of the + component. + l + The amount of padding (in px) on the left side of the + component. + r + The amount of padding (in px) on the right side of the + component. + t + The amount of padding (in px) along the top of the + component. + """ + + def __init__(self, arg=None, b=None, l=None, r=None, t=None, **kwargs): + """ + Construct a new Pad object + + 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". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.title.Pad` + b + The amount of padding (in px) along the bottom of the + component. + l + The amount of padding (in px) on the left side of the + component. + r + The amount of padding (in px) on the right side of the + component. + t + The amount of padding (in px) along the top of the + component. + + Returns + ------- + Pad + """ + super().__init__("pad") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.title.Pad +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.title.Pad`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("b", arg, b) + self._set_property("l", arg, l) + self._set_property("r", arg, r) + self._set_property("t", arg, t) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_subtitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_subtitle.py new file mode 100644 index 0000000..fb36d65 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/_subtitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Subtitle(_BaseLayoutHierarchyType): + _parent_path_str = "layout.title" + _path_str = "layout.title.subtitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets the subtitle font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.title.subtitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.title.subtitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the plot's subtitle. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets the subtitle font. + text + Sets the plot's subtitle. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Subtitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.title.Subtitle` + font + Sets the subtitle font. + text + Sets the plot's subtitle. + + Returns + ------- + Subtitle + """ + super().__init__("subtitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.title.Subtitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.title.Subtitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/_font.py new file mode 100644 index 0000000..7e3781a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/title/subtitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.title.subtitle" + _path_str = "layout.title.subtitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the subtitle font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.title.subtitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.title.subtitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.title.subtitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/__init__.py new file mode 100644 index 0000000..f42482b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._button import Button + from ._font import Font + from ._pad import Pad +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._button.Button", "._font.Font", "._pad.Pad"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_button.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_button.py new file mode 100644 index 0000000..2fdb0b4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_button.py @@ -0,0 +1,359 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Button(_BaseLayoutHierarchyType): + _parent_path_str = "layout.updatemenu" + _path_str = "layout.updatemenu.button" + _valid_props = { + "args", + "args2", + "execute", + "label", + "method", + "name", + "templateitemname", + "visible", + } + + @property + def args(self): + """ + Sets the arguments values to be passed to the Plotly method set + in `method` on click. + + The 'args' property is an info array that may be specified as: + + * a list or tuple of up to 3 elements where: + (0) The 'args[0]' property accepts values of any type + (1) The 'args[1]' property accepts values of any type + (2) The 'args[2]' property accepts values of any type + + Returns + ------- + list + """ + return self["args"] + + @args.setter + def args(self, val): + self["args"] = val + + @property + def args2(self): + """ + 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. + + The 'args2' property is an info array that may be specified as: + + * a list or tuple of up to 3 elements where: + (0) The 'args2[0]' property accepts values of any type + (1) The 'args2[1]' property accepts values of any type + (2) The 'args2[2]' property accepts values of any type + + Returns + ------- + list + """ + return self["args2"] + + @args2.setter + def args2(self, val): + self["args2"] = val + + @property + def execute(self): + """ + 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`. + + The 'execute' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["execute"] + + @execute.setter + def execute(self, val): + self["execute"] = val + + @property + def label(self): + """ + Sets the text label to appear on the button. + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def method(self): + """ + 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. + + The 'method' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['restyle', 'relayout', 'animate', 'update', 'skip'] + + Returns + ------- + Any + """ + return self["method"] + + @method.setter + def method(self, val): + self["method"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def visible(self): + """ + Determines whether or not this button is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + args + Sets the arguments values to be passed to the Plotly + method set in `method` on click. + args2 + 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. + execute + 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`. + label + Sets the text label to appear on the button. + method + 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. + name + 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. + templateitemname + 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`. + visible + Determines whether or not this button is visible. + """ + + def __init__( + self, + arg=None, + args=None, + args2=None, + execute=None, + label=None, + method=None, + name=None, + templateitemname=None, + visible=None, + **kwargs, + ): + """ + Construct a new Button object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.updatemenu.Button` + args + Sets the arguments values to be passed to the Plotly + method set in `method` on click. + args2 + 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. + execute + 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`. + label + Sets the text label to appear on the button. + method + 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. + name + 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. + templateitemname + 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`. + visible + Determines whether or not this button is visible. + + Returns + ------- + Button + """ + super().__init__("buttons") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.updatemenu.Button +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.updatemenu.Button`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("args", arg, args) + self._set_property("args2", arg, args2) + self._set_property("execute", arg, execute) + self._set_property("label", arg, label) + self._set_property("method", arg, method) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_font.py new file mode 100644 index 0000000..cbab80e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.updatemenu" + _path_str = "layout.updatemenu.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font of the update menu button text. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.updatemenu.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.updatemenu.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.updatemenu.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_pad.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_pad.py new file mode 100644 index 0000000..3a641d8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/updatemenu/_pad.py @@ -0,0 +1,159 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Pad(_BaseLayoutHierarchyType): + _parent_path_str = "layout.updatemenu" + _path_str = "layout.updatemenu.pad" + _valid_props = {"b", "l", "r", "t"} + + @property + def b(self): + """ + The amount of padding (in px) along the bottom of the + component. + + The 'b' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def l(self): + """ + The amount of padding (in px) on the left side of the + component. + + The 'l' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["l"] + + @l.setter + def l(self, val): + self["l"] = val + + @property + def r(self): + """ + The amount of padding (in px) on the right side of the + component. + + The 'r' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def t(self): + """ + The amount of padding (in px) along the top of the component. + + The 't' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["t"] + + @t.setter + def t(self, val): + self["t"] = val + + @property + def _prop_descriptions(self): + return """\ + b + The amount of padding (in px) along the bottom of the + component. + l + The amount of padding (in px) on the left side of the + component. + r + The amount of padding (in px) on the right side of the + component. + t + The amount of padding (in px) along the top of the + component. + """ + + def __init__(self, arg=None, b=None, l=None, r=None, t=None, **kwargs): + """ + Construct a new Pad object + + Sets the padding around the buttons or dropdown menu. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.updatemenu.Pad` + b + The amount of padding (in px) along the bottom of the + component. + l + The amount of padding (in px) on the left side of the + component. + r + The amount of padding (in px) on the right side of the + component. + t + The amount of padding (in px) along the top of the + component. + + Returns + ------- + Pad + """ + super().__init__("pad") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.updatemenu.Pad +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.updatemenu.Pad`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("b", arg, b) + self._set_property("l", arg, l) + self._set_property("r", arg, r) + self._set_property("t", arg, t) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/__init__.py new file mode 100644 index 0000000..92c3b60 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/__init__.py @@ -0,0 +1,32 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._autorangeoptions import Autorangeoptions + from ._minor import Minor + from ._rangebreak import Rangebreak + from ._rangeselector import Rangeselector + from ._rangeslider import Rangeslider + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import rangeselector + from . import rangeslider + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".rangeselector", ".rangeslider", ".title"], + [ + "._autorangeoptions.Autorangeoptions", + "._minor.Minor", + "._rangebreak.Rangebreak", + "._rangeselector.Rangeselector", + "._rangeslider.Rangeslider", + "._tickfont.Tickfont", + "._tickformatstop.Tickformatstop", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_autorangeoptions.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_autorangeoptions.py new file mode 100644 index 0000000..e16114b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_autorangeoptions.py @@ -0,0 +1,216 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Autorangeoptions(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.autorangeoptions" + _valid_props = { + "clipmax", + "clipmin", + "include", + "includesrc", + "maxallowed", + "minallowed", + } + + @property + def clipmax(self): + """ + Clip autorange maximum if it goes beyond this value. Has no + effect when `autorangeoptions.maxallowed` is provided. + + The 'clipmax' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmax"] + + @clipmax.setter + def clipmax(self, val): + self["clipmax"] = val + + @property + def clipmin(self): + """ + Clip autorange minimum if it goes beyond this value. Has no + effect when `autorangeoptions.minallowed` is provided. + + The 'clipmin' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmin"] + + @clipmin.setter + def clipmin(self, val): + self["clipmin"] = val + + @property + def include(self): + """ + Ensure this value is included in autorange. + + The 'include' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["include"] + + @include.setter + def include(self, val): + self["include"] = val + + @property + def includesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `include`. + + The 'includesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["includesrc"] + + @includesrc.setter + def includesrc(self, val): + self["includesrc"] = val + + @property + def maxallowed(self): + """ + Use this value exactly as autorange maximum. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Use this value exactly as autorange minimum. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def _prop_descriptions(self): + return """\ + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + """ + + def __init__( + self, + arg=None, + clipmax=None, + clipmin=None, + include=None, + includesrc=None, + maxallowed=None, + minallowed=None, + **kwargs, + ): + """ + Construct a new Autorangeoptions object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.xaxis.A + utorangeoptions` + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + + Returns + ------- + Autorangeoptions + """ + super().__init__("autorangeoptions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Autorangeoptions +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Autorangeoptions`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("clipmax", arg, clipmax) + self._set_property("clipmin", arg, clipmin) + self._set_property("include", arg, include) + self._set_property("includesrc", arg, includesrc) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_minor.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_minor.py new file mode 100644 index 0000000..fbe8b72 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_minor.py @@ -0,0 +1,566 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Minor(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.minor" + _valid_props = { + "dtick", + "gridcolor", + "griddash", + "gridwidth", + "nticks", + "showgrid", + "tick0", + "tickcolor", + "ticklen", + "tickmode", + "ticks", + "tickvals", + "tickvalssrc", + "tickwidth", + } + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def _prop_descriptions(self): + return """\ + dtick + 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" + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + tick0 + 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. + tickcolor + Sets the tick color. + ticklen + Sets the tick length (in px). + tickmode + 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). + ticks + 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. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + """ + + def __init__( + self, + arg=None, + dtick=None, + gridcolor=None, + griddash=None, + gridwidth=None, + nticks=None, + showgrid=None, + tick0=None, + tickcolor=None, + ticklen=None, + tickmode=None, + ticks=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + **kwargs, + ): + """ + Construct a new Minor object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Minor` + dtick + 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" + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + tick0 + 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. + tickcolor + Sets the tick color. + ticklen + Sets the tick length (in px). + tickmode + 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). + ticks + 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. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + + Returns + ------- + Minor + """ + super().__init__("minor") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Minor +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Minor`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtick", arg, dtick) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("nticks", arg, nticks) + self._set_property("showgrid", arg, showgrid) + self._set_property("tick0", arg, tick0) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("ticks", arg, ticks) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangebreak.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangebreak.py new file mode 100644 index 0000000..40246fb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangebreak.py @@ -0,0 +1,330 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Rangebreak(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.rangebreak" + _valid_props = { + "bounds", + "dvalue", + "enabled", + "name", + "pattern", + "templateitemname", + "values", + } + + @property + def bounds(self): + """ + Sets the lower and upper bounds of this axis rangebreak. Can be + used with `pattern`. + + The 'bounds' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'bounds[0]' property accepts values of any type + (1) The 'bounds[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["bounds"] + + @bounds.setter + def bounds(self, val): + self["bounds"] = val + + @property + def dvalue(self): + """ + Sets the size of each `values` item. The default is one day in + milliseconds. + + The 'dvalue' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["dvalue"] + + @dvalue.setter + def dvalue(self, val): + self["dvalue"] = val + + @property + def enabled(self): + """ + Determines whether this axis rangebreak is enabled or disabled. + Please note that `rangebreaks` only work for "date" axis type. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def pattern(self): + """ + 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). + + The 'pattern' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['day of week', 'hour', ''] + + Returns + ------- + Any + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def values(self): + """ + Sets the coordinate values corresponding to the rangebreaks. An + alternative to `bounds`. Use `dvalue` to set the size of the + values along the axis. + + The 'values' property is an info array that may be specified as: + * a list of elements where: + The 'values[i]' property accepts values of any type + + Returns + ------- + list + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def _prop_descriptions(self): + return """\ + bounds + Sets the lower and upper bounds of this axis + rangebreak. Can be used with `pattern`. + dvalue + Sets the size of each `values` item. The default is one + day in milliseconds. + enabled + Determines whether this axis rangebreak is enabled or + disabled. Please note that `rangebreaks` only work for + "date" axis type. + name + 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. + pattern + 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). + templateitemname + 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`. + values + Sets the coordinate values corresponding to the + rangebreaks. An alternative to `bounds`. Use `dvalue` + to set the size of the values along the axis. + """ + + def __init__( + self, + arg=None, + bounds=None, + dvalue=None, + enabled=None, + name=None, + pattern=None, + templateitemname=None, + values=None, + **kwargs, + ): + """ + Construct a new Rangebreak object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Rangebreak` + bounds + Sets the lower and upper bounds of this axis + rangebreak. Can be used with `pattern`. + dvalue + Sets the size of each `values` item. The default is one + day in milliseconds. + enabled + Determines whether this axis rangebreak is enabled or + disabled. Please note that `rangebreaks` only work for + "date" axis type. + name + 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. + pattern + 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). + templateitemname + 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`. + values + Sets the coordinate values corresponding to the + rangebreaks. An alternative to `bounds`. Use `dvalue` + to set the size of the values along the axis. + + Returns + ------- + Rangebreak + """ + super().__init__("rangebreaks") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Rangebreak +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Rangebreak`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bounds", arg, bounds) + self._set_property("dvalue", arg, dvalue) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("pattern", arg, pattern) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("values", arg, values) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeselector.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeselector.py new file mode 100644 index 0000000..22404bc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeselector.py @@ -0,0 +1,427 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Rangeselector(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.rangeselector" + _valid_props = { + "activecolor", + "bgcolor", + "bordercolor", + "borderwidth", + "buttondefaults", + "buttons", + "font", + "visible", + "x", + "xanchor", + "y", + "yanchor", + } + + @property + def activecolor(self): + """ + Sets the background color of the active range selector button. + + The 'activecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["activecolor"] + + @activecolor.setter + def activecolor(self, val): + self["activecolor"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the range selector buttons. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the color of the border enclosing the range selector. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) of the border enclosing the range + selector. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def buttons(self): + """ + Sets the specifications for each buttons. By default, a range + selector comes with no buttons. + + The 'buttons' property is a tuple of instances of + Button that may be specified as: + - A list or tuple of instances of plotly.graph_objs.layout.xaxis.rangeselector.Button + - A list or tuple of dicts of string/value properties that + will be passed to the Button constructor + + Returns + ------- + tuple[plotly.graph_objs.layout.xaxis.rangeselector.Button] + """ + return self["buttons"] + + @buttons.setter + def buttons(self, val): + self["buttons"] = val + + @property + def buttondefaults(self): + """ + When used in a template (as + layout.template.layout.xaxis.rangeselector.buttondefaults), + sets the default property values to use for elements of + layout.xaxis.rangeselector.buttons + + The 'buttondefaults' property is an instance of Button + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.rangeselector.Button` + - A dict of string/value properties that will be passed + to the Button constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.rangeselector.Button + """ + return self["buttondefaults"] + + @buttondefaults.setter + def buttondefaults(self, val): + self["buttondefaults"] = val + + @property + def font(self): + """ + Sets the font of the range selector button text. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.rangeselector.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.rangeselector.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def visible(self): + """ + 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". + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def x(self): + """ + Sets the x position (in normalized coordinates) of the range + selector. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-2, 3] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + Sets the range selector's horizontal position anchor. This + anchor binds the `x` position to the "left", "center" or + "right" of the range selector. + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def y(self): + """ + Sets the y position (in normalized coordinates) of the range + selector. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-2, 3] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + Sets the range selector's vertical position anchor This anchor + binds the `y` position to the "top", "middle" or "bottom" of + the range selector. + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def _prop_descriptions(self): + return """\ + activecolor + Sets the background color of the active range selector + button. + bgcolor + Sets the background color of the range selector + buttons. + bordercolor + Sets the color of the border enclosing the range + selector. + borderwidth + Sets the width (in px) of the border enclosing the + range selector. + buttons + Sets the specifications for each buttons. By default, a + range selector comes with no buttons. + buttondefaults + When used in a template (as layout.template.layout.xaxi + s.rangeselector.buttondefaults), sets the default + property values to use for elements of + layout.xaxis.rangeselector.buttons + font + Sets the font of the range selector button text. + visible + 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". + x + Sets the x position (in normalized coordinates) of the + range selector. + xanchor + Sets the range selector's horizontal position anchor. + This anchor binds the `x` position to the "left", + "center" or "right" of the range selector. + y + Sets the y position (in normalized coordinates) of the + range selector. + yanchor + Sets the range selector's vertical position anchor This + anchor binds the `y` position to the "top", "middle" or + "bottom" of the range selector. + """ + + def __init__( + self, + arg=None, + activecolor=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + buttons=None, + buttondefaults=None, + font=None, + visible=None, + x=None, + xanchor=None, + y=None, + yanchor=None, + **kwargs, + ): + """ + Construct a new Rangeselector object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Rangeselector` + activecolor + Sets the background color of the active range selector + button. + bgcolor + Sets the background color of the range selector + buttons. + bordercolor + Sets the color of the border enclosing the range + selector. + borderwidth + Sets the width (in px) of the border enclosing the + range selector. + buttons + Sets the specifications for each buttons. By default, a + range selector comes with no buttons. + buttondefaults + When used in a template (as layout.template.layout.xaxi + s.rangeselector.buttondefaults), sets the default + property values to use for elements of + layout.xaxis.rangeselector.buttons + font + Sets the font of the range selector button text. + visible + 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". + x + Sets the x position (in normalized coordinates) of the + range selector. + xanchor + Sets the range selector's horizontal position anchor. + This anchor binds the `x` position to the "left", + "center" or "right" of the range selector. + y + Sets the y position (in normalized coordinates) of the + range selector. + yanchor + Sets the range selector's vertical position anchor This + anchor binds the `y` position to the "top", "middle" or + "bottom" of the range selector. + + Returns + ------- + Rangeselector + """ + super().__init__("rangeselector") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Rangeselector +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Rangeselector`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("activecolor", arg, activecolor) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("buttons", arg, buttons) + self._set_property("buttondefaults", arg, buttondefaults) + self._set_property("font", arg, font) + self._set_property("visible", arg, visible) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeslider.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeslider.py new file mode 100644 index 0000000..9d30a4d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_rangeslider.py @@ -0,0 +1,311 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Rangeslider(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.rangeslider" + _valid_props = { + "autorange", + "bgcolor", + "bordercolor", + "borderwidth", + "range", + "thickness", + "visible", + "yaxis", + } + + @property + def autorange(self): + """ + 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. + + The 'autorange' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autorange"] + + @autorange.setter + def autorange(self, val): + self["autorange"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the range slider. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the range slider. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the border width of the range slider. + + The 'borderwidth' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def range(self): + """ + 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. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def thickness(self): + """ + The height of the range slider as a fraction of the total plot + area height. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def visible(self): + """ + Determines whether or not the range slider will be visible. If + visible, perpendicular axes will be set to `fixedrange` + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def yaxis(self): + """ + The 'yaxis' property is an instance of YAxis + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.rangeslider.YAxis` + - A dict of string/value properties that will be passed + to the YAxis constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.rangeslider.YAxis + """ + return self["yaxis"] + + @yaxis.setter + def yaxis(self, val): + self["yaxis"] = val + + @property + def _prop_descriptions(self): + return """\ + autorange + 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. + bgcolor + Sets the background color of the range slider. + bordercolor + Sets the border color of the range slider. + borderwidth + Sets the border width of the range slider. + range + 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. + thickness + The height of the range slider as a fraction of the + total plot area height. + visible + Determines whether or not the range slider will be + visible. If visible, perpendicular axes will be set to + `fixedrange` + yaxis + :class:`plotly.graph_objects.layout.xaxis.rangeslider.Y + Axis` instance or dict with compatible properties + """ + + def __init__( + self, + arg=None, + autorange=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + range=None, + thickness=None, + visible=None, + yaxis=None, + **kwargs, + ): + """ + Construct a new Rangeslider object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Rangeslider` + autorange + 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. + bgcolor + Sets the background color of the range slider. + bordercolor + Sets the border color of the range slider. + borderwidth + Sets the border width of the range slider. + range + 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. + thickness + The height of the range slider as a fraction of the + total plot area height. + visible + Determines whether or not the range slider will be + visible. If visible, perpendicular axes will be set to + `fixedrange` + yaxis + :class:`plotly.graph_objects.layout.xaxis.rangeslider.Y + Axis` instance or dict with compatible properties + + Returns + ------- + Rangeslider + """ + super().__init__("rangeslider") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Rangeslider +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Rangeslider`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autorange", arg, autorange) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("range", arg, range) + self._set_property("thickness", arg, thickness) + self._set_property("visible", arg, visible) + self._set_property("yaxis", arg, yaxis) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickfont.py new file mode 100644 index 0000000..3df643e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickformatstop.py new file mode 100644 index 0000000..6941096 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_title.py new file mode 100644 index 0000000..a517a22 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/_title.py @@ -0,0 +1,150 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis" + _path_str = "layout.xaxis.title" + _valid_props = {"font", "standoff", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.xaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.xaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + standoff + 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. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, standoff=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.Title` + font + Sets this axis' title font. + standoff + 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. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("standoff", arg, standoff) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py new file mode 100644 index 0000000..4796cc0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._button import Button + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._button.Button", "._font.Font"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_button.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_button.py new file mode 100644 index 0000000..adfa467 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_button.py @@ -0,0 +1,318 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Button(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis.rangeselector" + _path_str = "layout.xaxis.rangeselector.button" + _valid_props = { + "count", + "label", + "name", + "step", + "stepmode", + "templateitemname", + "visible", + } + + @property + def count(self): + """ + Sets the number of steps to take to update the range. Use with + `step` to specify the update interval. + + The 'count' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["count"] + + @count.setter + def count(self, val): + self["count"] = val + + @property + def label(self): + """ + Sets the text label to appear on the button. + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def step(self): + """ + The unit of measurement that the `count` value will set the + range by. + + The 'step' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['month', 'year', 'day', 'hour', 'minute', 'second', + 'all'] + + Returns + ------- + Any + """ + return self["step"] + + @step.setter + def step(self, val): + self["step"] = val + + @property + def stepmode(self): + """ + 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. + + The 'stepmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['backward', 'todate'] + + Returns + ------- + Any + """ + return self["stepmode"] + + @stepmode.setter + def stepmode(self, val): + self["stepmode"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def visible(self): + """ + Determines whether or not this button is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + count + Sets the number of steps to take to update the range. + Use with `step` to specify the update interval. + label + Sets the text label to appear on the button. + name + 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. + step + The unit of measurement that the `count` value will set + the range by. + stepmode + 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. + templateitemname + 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`. + visible + Determines whether or not this button is visible. + """ + + def __init__( + self, + arg=None, + count=None, + label=None, + name=None, + step=None, + stepmode=None, + templateitemname=None, + visible=None, + **kwargs, + ): + """ + Construct a new Button object + + Sets the specifications for each buttons. By default, a range + selector comes with no buttons. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.xaxis.r + angeselector.Button` + count + Sets the number of steps to take to update the range. + Use with `step` to specify the update interval. + label + Sets the text label to appear on the button. + name + 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. + step + The unit of measurement that the `count` value will set + the range by. + stepmode + 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. + templateitemname + 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`. + visible + Determines whether or not this button is visible. + + Returns + ------- + Button + """ + super().__init__("buttons") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.rangeselector.Button +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.rangeselector.Button`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("count", arg, count) + self._set_property("label", arg, label) + self._set_property("name", arg, name) + self._set_property("step", arg, step) + self._set_property("stepmode", arg, stepmode) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_font.py new file mode 100644 index 0000000..b594067 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeselector/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis.rangeselector" + _path_str = "layout.xaxis.rangeselector.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font of the range selector button text. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.xaxis.r + angeselector.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.rangeselector.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.rangeselector.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py new file mode 100644 index 0000000..b48657f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._yaxis import YAxis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._yaxis.YAxis"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py new file mode 100644 index 0000000..1ce88a5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/rangeslider/_yaxis.py @@ -0,0 +1,118 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class YAxis(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis.rangeslider" + _path_str = "layout.xaxis.rangeslider.yaxis" + _valid_props = {"range", "rangemode"} + + @property + def range(self): + """ + Sets the range of this axis for the rangeslider. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property accepts values of any type + (1) The 'range[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def rangemode(self): + """ + 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. + + The 'rangemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'fixed', 'match'] + + Returns + ------- + Any + """ + return self["rangemode"] + + @rangemode.setter + def rangemode(self, val): + self["rangemode"] = val + + @property + def _prop_descriptions(self): + return """\ + range + Sets the range of this axis for the rangeslider. + rangemode + 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. + """ + + def __init__(self, arg=None, range=None, rangemode=None, **kwargs): + """ + Construct a new YAxis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.xaxis.r + angeslider.YAxis` + range + Sets the range of this axis for the rangeslider. + rangemode + 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. + + Returns + ------- + YAxis + """ + super().__init__("yaxis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.rangeslider.YAxis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.rangeslider.YAxis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("range", arg, range) + self._set_property("rangemode", arg, rangemode) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/_font.py new file mode 100644 index 0000000..b943351 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/xaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.xaxis.title" + _path_str = "layout.xaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.xaxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.xaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.xaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/__init__.py new file mode 100644 index 0000000..7d5e696 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/__init__.py @@ -0,0 +1,26 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._autorangeoptions import Autorangeoptions + from ._minor import Minor + from ._rangebreak import Rangebreak + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + [ + "._autorangeoptions.Autorangeoptions", + "._minor.Minor", + "._rangebreak.Rangebreak", + "._tickfont.Tickfont", + "._tickformatstop.Tickformatstop", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_autorangeoptions.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_autorangeoptions.py new file mode 100644 index 0000000..722feb1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_autorangeoptions.py @@ -0,0 +1,216 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Autorangeoptions(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis" + _path_str = "layout.yaxis.autorangeoptions" + _valid_props = { + "clipmax", + "clipmin", + "include", + "includesrc", + "maxallowed", + "minallowed", + } + + @property + def clipmax(self): + """ + Clip autorange maximum if it goes beyond this value. Has no + effect when `autorangeoptions.maxallowed` is provided. + + The 'clipmax' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmax"] + + @clipmax.setter + def clipmax(self, val): + self["clipmax"] = val + + @property + def clipmin(self): + """ + Clip autorange minimum if it goes beyond this value. Has no + effect when `autorangeoptions.minallowed` is provided. + + The 'clipmin' property accepts values of any type + + Returns + ------- + Any + """ + return self["clipmin"] + + @clipmin.setter + def clipmin(self, val): + self["clipmin"] = val + + @property + def include(self): + """ + Ensure this value is included in autorange. + + The 'include' property accepts values of any type + + Returns + ------- + Any|numpy.ndarray + """ + return self["include"] + + @include.setter + def include(self, val): + self["include"] = val + + @property + def includesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `include`. + + The 'includesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["includesrc"] + + @includesrc.setter + def includesrc(self, val): + self["includesrc"] = val + + @property + def maxallowed(self): + """ + Use this value exactly as autorange maximum. + + The 'maxallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["maxallowed"] + + @maxallowed.setter + def maxallowed(self, val): + self["maxallowed"] = val + + @property + def minallowed(self): + """ + Use this value exactly as autorange minimum. + + The 'minallowed' property accepts values of any type + + Returns + ------- + Any + """ + return self["minallowed"] + + @minallowed.setter + def minallowed(self, val): + self["minallowed"] = val + + @property + def _prop_descriptions(self): + return """\ + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + """ + + def __init__( + self, + arg=None, + clipmax=None, + clipmin=None, + include=None, + includesrc=None, + maxallowed=None, + minallowed=None, + **kwargs, + ): + """ + Construct a new Autorangeoptions object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.layout.yaxis.A + utorangeoptions` + clipmax + Clip autorange maximum if it goes beyond this value. + Has no effect when `autorangeoptions.maxallowed` is + provided. + clipmin + Clip autorange minimum if it goes beyond this value. + Has no effect when `autorangeoptions.minallowed` is + provided. + include + Ensure this value is included in autorange. + includesrc + Sets the source reference on Chart Studio Cloud for + `include`. + maxallowed + Use this value exactly as autorange maximum. + minallowed + Use this value exactly as autorange minimum. + + Returns + ------- + Autorangeoptions + """ + super().__init__("autorangeoptions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.Autorangeoptions +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.Autorangeoptions`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("clipmax", arg, clipmax) + self._set_property("clipmin", arg, clipmin) + self._set_property("include", arg, include) + self._set_property("includesrc", arg, includesrc) + self._set_property("maxallowed", arg, maxallowed) + self._set_property("minallowed", arg, minallowed) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_minor.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_minor.py new file mode 100644 index 0000000..c718a60 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_minor.py @@ -0,0 +1,566 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Minor(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis" + _path_str = "layout.yaxis.minor" + _valid_props = { + "dtick", + "gridcolor", + "griddash", + "gridwidth", + "nticks", + "showgrid", + "tick0", + "tickcolor", + "ticklen", + "tickmode", + "ticks", + "tickvals", + "tickvalssrc", + "tickwidth", + } + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def gridcolor(self): + """ + Sets the color of the grid lines. + + The 'gridcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["gridcolor"] + + @gridcolor.setter + def gridcolor(self, val): + self["gridcolor"] = val + + @property + def griddash(self): + """ + 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"). + + The 'griddash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["griddash"] + + @griddash.setter + def griddash(self, val): + self["griddash"] = val + + @property + def gridwidth(self): + """ + Sets the width (in px) of the grid lines. + + The 'gridwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["gridwidth"] + + @gridwidth.setter + def gridwidth(self, val): + self["gridwidth"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def showgrid(self): + """ + Determines whether or not grid lines are drawn. If True, the + grid lines are drawn at every tick mark. + + The 'showgrid' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showgrid"] + + @showgrid.setter + def showgrid(self, val): + self["showgrid"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def _prop_descriptions(self): + return """\ + dtick + 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" + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + tick0 + 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. + tickcolor + Sets the tick color. + ticklen + Sets the tick length (in px). + tickmode + 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). + ticks + 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. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + """ + + def __init__( + self, + arg=None, + dtick=None, + gridcolor=None, + griddash=None, + gridwidth=None, + nticks=None, + showgrid=None, + tick0=None, + tickcolor=None, + ticklen=None, + tickmode=None, + ticks=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + **kwargs, + ): + """ + Construct a new Minor object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.yaxis.Minor` + dtick + 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" + gridcolor + Sets the color of the grid lines. + griddash + 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"). + gridwidth + Sets the width (in px) of the grid lines. + nticks + 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". + showgrid + Determines whether or not grid lines are drawn. If + True, the grid lines are drawn at every tick mark. + tick0 + 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. + tickcolor + Sets the tick color. + ticklen + Sets the tick length (in px). + tickmode + 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). + ticks + 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. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + + Returns + ------- + Minor + """ + super().__init__("minor") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.Minor +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.Minor`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtick", arg, dtick) + self._set_property("gridcolor", arg, gridcolor) + self._set_property("griddash", arg, griddash) + self._set_property("gridwidth", arg, gridwidth) + self._set_property("nticks", arg, nticks) + self._set_property("showgrid", arg, showgrid) + self._set_property("tick0", arg, tick0) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("ticks", arg, ticks) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_rangebreak.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_rangebreak.py new file mode 100644 index 0000000..1816985 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_rangebreak.py @@ -0,0 +1,330 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Rangebreak(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis" + _path_str = "layout.yaxis.rangebreak" + _valid_props = { + "bounds", + "dvalue", + "enabled", + "name", + "pattern", + "templateitemname", + "values", + } + + @property + def bounds(self): + """ + Sets the lower and upper bounds of this axis rangebreak. Can be + used with `pattern`. + + The 'bounds' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'bounds[0]' property accepts values of any type + (1) The 'bounds[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["bounds"] + + @bounds.setter + def bounds(self, val): + self["bounds"] = val + + @property + def dvalue(self): + """ + Sets the size of each `values` item. The default is one day in + milliseconds. + + The 'dvalue' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["dvalue"] + + @dvalue.setter + def dvalue(self, val): + self["dvalue"] = val + + @property + def enabled(self): + """ + Determines whether this axis rangebreak is enabled or disabled. + Please note that `rangebreaks` only work for "date" axis type. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def pattern(self): + """ + 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). + + The 'pattern' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['day of week', 'hour', ''] + + Returns + ------- + Any + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def values(self): + """ + Sets the coordinate values corresponding to the rangebreaks. An + alternative to `bounds`. Use `dvalue` to set the size of the + values along the axis. + + The 'values' property is an info array that may be specified as: + * a list of elements where: + The 'values[i]' property accepts values of any type + + Returns + ------- + list + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def _prop_descriptions(self): + return """\ + bounds + Sets the lower and upper bounds of this axis + rangebreak. Can be used with `pattern`. + dvalue + Sets the size of each `values` item. The default is one + day in milliseconds. + enabled + Determines whether this axis rangebreak is enabled or + disabled. Please note that `rangebreaks` only work for + "date" axis type. + name + 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. + pattern + 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). + templateitemname + 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`. + values + Sets the coordinate values corresponding to the + rangebreaks. An alternative to `bounds`. Use `dvalue` + to set the size of the values along the axis. + """ + + def __init__( + self, + arg=None, + bounds=None, + dvalue=None, + enabled=None, + name=None, + pattern=None, + templateitemname=None, + values=None, + **kwargs, + ): + """ + Construct a new Rangebreak object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.yaxis.Rangebreak` + bounds + Sets the lower and upper bounds of this axis + rangebreak. Can be used with `pattern`. + dvalue + Sets the size of each `values` item. The default is one + day in milliseconds. + enabled + Determines whether this axis rangebreak is enabled or + disabled. Please note that `rangebreaks` only work for + "date" axis type. + name + 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. + pattern + 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). + templateitemname + 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`. + values + Sets the coordinate values corresponding to the + rangebreaks. An alternative to `bounds`. Use `dvalue` + to set the size of the values along the axis. + + Returns + ------- + Rangebreak + """ + super().__init__("rangebreaks") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.Rangebreak +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.Rangebreak`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bounds", arg, bounds) + self._set_property("dvalue", arg, dvalue) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("pattern", arg, pattern) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("values", arg, values) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickfont.py new file mode 100644 index 0000000..7a57384 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickfont(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis" + _path_str = "layout.yaxis.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the tick font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.yaxis.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickformatstop.py new file mode 100644 index 0000000..40314fd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis" + _path_str = "layout.yaxis.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.yaxis.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_title.py new file mode 100644 index 0000000..4bb8d4f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/_title.py @@ -0,0 +1,150 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Title(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis" + _path_str = "layout.yaxis.title" + _valid_props = {"font", "standoff", "text"} + + @property + def font(self): + """ + Sets this axis' title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.layout.yaxis.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.layout.yaxis.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def text(self): + """ + Sets the title of this axis. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this axis' title font. + standoff + 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. + text + Sets the title of this axis. + """ + + def __init__(self, arg=None, font=None, standoff=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.yaxis.Title` + font + Sets this axis' title font. + standoff + 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. + text + Sets the title of this axis. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("standoff", arg, standoff) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/_font.py new file mode 100644 index 0000000..b04cd98 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/layout/yaxis/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType +import copy as _copy + + +class Font(_BaseLayoutHierarchyType): + _parent_path_str = "layout.yaxis.title" + _path_str = "layout.yaxis.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this axis' title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.layout.yaxis.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.layout.yaxis.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.layout.yaxis.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/__init__.py new file mode 100644 index 0000000..b818b1a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/__init__.py @@ -0,0 +1,30 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._contour import Contour + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._lighting import Lighting + from ._lightposition import Lightposition + from ._stream import Stream + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._contour.Contour", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._lighting.Lighting", + "._lightposition.Lightposition", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_colorbar.py new file mode 100644 index 0000000..6e23c41 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.mesh3d.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.mesh3d.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.mesh3d.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.mesh3d.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + mesh3d.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.mesh3d.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.mesh3d.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.mesh3d.colorbar + .Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.mesh3d + .colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + mesh3d.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.mesh3d.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.mesh3d.colorbar + .Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.mesh3d + .colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + mesh3d.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.mesh3d.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_contour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_contour.py new file mode 100644 index 0000000..b55625a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_contour.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contour(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.contour" + _valid_props = {"color", "show", "width"} + + @property + def color(self): + """ + Sets the color of the contour lines. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def show(self): + """ + Sets whether or not dynamic contours are shown on hover + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def width(self): + """ + Sets the width of the contour lines. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour lines. + show + Sets whether or not dynamic contours are shown on hover + width + Sets the width of the contour lines. + """ + + def __init__(self, arg=None, color=None, show=None, width=None, **kwargs): + """ + Construct a new Contour object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.Contour` + color + Sets the color of the contour lines. + show + Sets whether or not dynamic contours are shown on hover + width + Sets the width of the contour lines. + + Returns + ------- + Contour + """ + super().__init__("contour") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.Contour +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.Contour`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("show", arg, show) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_hoverlabel.py new file mode 100644 index 0000000..dfcd90c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.mesh3d.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_legendgrouptitle.py new file mode 100644 index 0000000..19ae382 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.mesh3d.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lighting.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lighting.py new file mode 100644 index 0000000..18a57ff --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lighting.py @@ -0,0 +1,260 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lighting(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.lighting" + _valid_props = { + "ambient", + "diffuse", + "facenormalsepsilon", + "fresnel", + "roughness", + "specular", + "vertexnormalsepsilon", + } + + @property + def ambient(self): + """ + Ambient light increases overall color visibility but can wash + out the image. + + The 'ambient' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ambient"] + + @ambient.setter + def ambient(self, val): + self["ambient"] = val + + @property + def diffuse(self): + """ + Represents the extent that incident rays are reflected in a + range of angles. + + The 'diffuse' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["diffuse"] + + @diffuse.setter + def diffuse(self, val): + self["diffuse"] = val + + @property + def facenormalsepsilon(self): + """ + Epsilon for face normals calculation avoids math issues arising + from degenerate geometry. + + The 'facenormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["facenormalsepsilon"] + + @facenormalsepsilon.setter + def facenormalsepsilon(self, val): + self["facenormalsepsilon"] = val + + @property + def fresnel(self): + """ + 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. + + The 'fresnel' property is a number and may be specified as: + - An int or float in the interval [0, 5] + + Returns + ------- + int|float + """ + return self["fresnel"] + + @fresnel.setter + def fresnel(self, val): + self["fresnel"] = val + + @property + def roughness(self): + """ + Alters specular reflection; the rougher the surface, the wider + and less contrasty the shine. + + The 'roughness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["roughness"] + + @roughness.setter + def roughness(self, val): + self["roughness"] = val + + @property + def specular(self): + """ + Represents the level that incident rays are reflected in a + single direction, causing shine. + + The 'specular' property is a number and may be specified as: + - An int or float in the interval [0, 2] + + Returns + ------- + int|float + """ + return self["specular"] + + @specular.setter + def specular(self, val): + self["specular"] = val + + @property + def vertexnormalsepsilon(self): + """ + Epsilon for vertex normals calculation avoids math issues + arising from degenerate geometry. + + The 'vertexnormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["vertexnormalsepsilon"] + + @vertexnormalsepsilon.setter + def vertexnormalsepsilon(self, val): + self["vertexnormalsepsilon"] = val + + @property + def _prop_descriptions(self): + return """\ + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + """ + + def __init__( + self, + arg=None, + ambient=None, + diffuse=None, + facenormalsepsilon=None, + fresnel=None, + roughness=None, + specular=None, + vertexnormalsepsilon=None, + **kwargs, + ): + """ + Construct a new Lighting object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.Lighting` + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + + Returns + ------- + Lighting + """ + super().__init__("lighting") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.Lighting +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.Lighting`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("ambient", arg, ambient) + self._set_property("diffuse", arg, diffuse) + self._set_property("facenormalsepsilon", arg, facenormalsepsilon) + self._set_property("fresnel", arg, fresnel) + self._set_property("roughness", arg, roughness) + self._set_property("specular", arg, specular) + self._set_property("vertexnormalsepsilon", arg, vertexnormalsepsilon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lightposition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lightposition.py new file mode 100644 index 0000000..00b35d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_lightposition.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lightposition(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.lightposition" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + Numeric vector, representing the X coordinate for each vertex. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Numeric vector, representing the Y coordinate for each vertex. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + Numeric vector, representing the Z coordinate for each vertex. + + The 'z' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Lightposition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.Lightposition` + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + + Returns + ------- + Lightposition + """ + super().__init__("lightposition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.Lightposition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.Lightposition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_stream.py new file mode 100644 index 0000000..b3b00d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d" + _path_str = "mesh3d.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.mesh3d.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickfont.py new file mode 100644 index 0000000..7aaacd1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d.colorbar" + _path_str = "mesh3d.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py new file mode 100644 index 0000000..bb5fe24 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d.colorbar" + _path_str = "mesh3d.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.mesh3d.colorba + r.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_title.py new file mode 100644 index 0000000..19426d4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d.colorbar" + _path_str = "mesh3d.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.mesh3d.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.mesh3d.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/_font.py new file mode 100644 index 0000000..f4dd6a9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d.colorbar.title" + _path_str = "mesh3d.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/_font.py new file mode 100644 index 0000000..0928833 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d.hoverlabel" + _path_str = "mesh3d.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py new file mode 100644 index 0000000..266ef98 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/mesh3d/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "mesh3d.legendgrouptitle" + _path_str = "mesh3d.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.mesh3d.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.mesh3d.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.mesh3d.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/__init__.py new file mode 100644 index 0000000..464258c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/__init__.py @@ -0,0 +1,29 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._decreasing import Decreasing + from ._hoverlabel import Hoverlabel + from ._increasing import Increasing + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._stream import Stream + from . import decreasing + from . import hoverlabel + from . import increasing + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".decreasing", ".hoverlabel", ".increasing", ".legendgrouptitle"], + [ + "._decreasing.Decreasing", + "._hoverlabel.Hoverlabel", + "._increasing.Increasing", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_decreasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_decreasing.py new file mode 100644 index 0000000..bed4934 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_decreasing.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Decreasing(_BaseTraceHierarchyType): + _parent_path_str = "ohlc" + _path_str = "ohlc.decreasing" + _valid_props = {"line"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.decreasing.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.ohlc.decreasing.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.ohlc.decreasing.Line` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, line=None, **kwargs): + """ + Construct a new Decreasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.Decreasing` + line + :class:`plotly.graph_objects.ohlc.decreasing.Line` + instance or dict with compatible properties + + Returns + ------- + Decreasing + """ + super().__init__("decreasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.Decreasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.Decreasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_hoverlabel.py new file mode 100644 index 0000000..8e0c8eb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_hoverlabel.py @@ -0,0 +1,366 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "ohlc" + _path_str = "ohlc.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + "split", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.ohlc.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def split(self): + """ + Show hover information (open, close, high, low) in separate + labels. + + The 'split' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["split"] + + @split.setter + def split(self, val): + self["split"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + split + Show hover information (open, close, high, low) in + separate labels. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + split=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + split + Show hover information (open, close, high, low) in + separate labels. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._set_property("split", arg, split) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_increasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_increasing.py new file mode 100644 index 0000000..77ff3e4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_increasing.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Increasing(_BaseTraceHierarchyType): + _parent_path_str = "ohlc" + _path_str = "ohlc.increasing" + _valid_props = {"line"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.increasing.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.ohlc.increasing.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.ohlc.increasing.Line` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, line=None, **kwargs): + """ + Construct a new Increasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.Increasing` + line + :class:`plotly.graph_objects.ohlc.increasing.Line` + instance or dict with compatible properties + + Returns + ------- + Increasing + """ + super().__init__("increasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.Increasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.Increasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_legendgrouptitle.py new file mode 100644 index 0000000..b21b440 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "ohlc" + _path_str = "ohlc.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.ohlc.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.ohlc.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_line.py new file mode 100644 index 0000000..0090896 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_line.py @@ -0,0 +1,123 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "ohlc" + _path_str = "ohlc.line" + _valid_props = {"dash", "width"} + + @property + def dash(self): + """ + 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`. + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + [object Object] Note that this style setting can also be set + per direction via `increasing.line.width` and + `decreasing.line.width`. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + dash + 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`. + width + [object Object] Note that this style setting can also + be set per direction via `increasing.line.width` and + `decreasing.line.width`. + """ + + def __init__(self, arg=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.ohlc.Line` + dash + 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`. + width + [object Object] Note that this style setting can also + be set per direction via `increasing.line.width` and + `decreasing.line.width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_stream.py new file mode 100644 index 0000000..5e753fb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "ohlc" + _path_str = "ohlc.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.ohlc.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/_line.py new file mode 100644 index 0000000..55ec4c4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/decreasing/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "ohlc.decreasing" + _path_str = "ohlc.decreasing.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.decreasing.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.decreasing.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.decreasing.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/_font.py new file mode 100644 index 0000000..de3f870 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "ohlc.hoverlabel" + _path_str = "ohlc.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/_line.py new file mode 100644 index 0000000..567f9cf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/increasing/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "ohlc.increasing" + _path_str = "ohlc.increasing.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.increasing.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.increasing.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.increasing.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/_font.py new file mode 100644 index 0000000..7d1cc80 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/ohlc/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "ohlc.legendgrouptitle" + _path_str = "ohlc.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.ohlc.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.ohlc.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.ohlc.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/__init__.py new file mode 100644 index 0000000..5289c29 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/__init__.py @@ -0,0 +1,29 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._dimension import Dimension + from ._domain import Domain + from ._labelfont import Labelfont + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._stream import Stream + from ._tickfont import Tickfont + from . import legendgrouptitle + from . import line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".legendgrouptitle", ".line"], + [ + "._dimension.Dimension", + "._domain.Domain", + "._labelfont.Labelfont", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._stream.Stream", + "._tickfont.Tickfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_dimension.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_dimension.py new file mode 100644 index 0000000..17a67da --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_dimension.py @@ -0,0 +1,383 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Dimension(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.dimension" + _valid_props = { + "categoryarray", + "categoryarraysrc", + "categoryorder", + "displayindex", + "label", + "ticktext", + "ticktextsrc", + "values", + "valuessrc", + "visible", + } + + @property + def categoryarray(self): + """ + Sets the order in which categories in this dimension appear. + Only has an effect if `categoryorder` is set to "array". Used + with `categoryorder`. + + The 'categoryarray' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["categoryarray"] + + @categoryarray.setter + def categoryarray(self, val): + self["categoryarray"] = val + + @property + def categoryarraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + + The 'categoryarraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["categoryarraysrc"] + + @categoryarraysrc.setter + def categoryarraysrc(self, val): + self["categoryarraysrc"] = val + + @property + def categoryorder(self): + """ + 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`. + + The 'categoryorder' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['trace', 'category ascending', 'category descending', + 'array'] + + Returns + ------- + Any + """ + return self["categoryorder"] + + @categoryorder.setter + def categoryorder(self, val): + self["categoryorder"] = val + + @property + def displayindex(self): + """ + The display index of dimension, from left to right, zero + indexed, defaults to dimension index. + + The 'displayindex' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + + Returns + ------- + int + """ + return self["displayindex"] + + @displayindex.setter + def displayindex(self, val): + self["displayindex"] = val + + @property + def label(self): + """ + The shown name of the dimension. + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def ticktext(self): + """ + 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`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def values(self): + """ + 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). + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + Shows the dimension when set to `true` (the default). Hides the + dimension for `false`. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + categoryarray + Sets the order in which categories in this dimension + appear. Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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`. + displayindex + The display index of dimension, from left to right, + zero indexed, defaults to dimension index. + label + The shown name of the dimension. + ticktext + 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`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + values + 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). + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + Shows the dimension when set to `true` (the default). + Hides the dimension for `false`. + """ + + def __init__( + self, + arg=None, + categoryarray=None, + categoryarraysrc=None, + categoryorder=None, + displayindex=None, + label=None, + ticktext=None, + ticktextsrc=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Dimension object + + The dimensions (variables) of the parallel categories diagram. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.Dimension` + categoryarray + Sets the order in which categories in this dimension + appear. Only has an effect if `categoryorder` is set to + "array". Used with `categoryorder`. + categoryarraysrc + Sets the source reference on Chart Studio Cloud for + `categoryarray`. + categoryorder + 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`. + displayindex + The display index of dimension, from left to right, + zero indexed, defaults to dimension index. + label + The shown name of the dimension. + ticktext + 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`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + values + 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). + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + Shows the dimension when set to `true` (the default). + Hides the dimension for `false`. + + Returns + ------- + Dimension + """ + super().__init__("dimensions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Dimension +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Dimension`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("categoryarray", arg, categoryarray) + self._set_property("categoryarraysrc", arg, categoryarraysrc) + self._set_property("categoryorder", arg, categoryorder) + self._set_property("displayindex", arg, displayindex) + self._set_property("label", arg, label) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_domain.py new file mode 100644 index 0000000..6699f7b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this parcats trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this parcats trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this parcats trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this parcats trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this parcats trace . + row + If there is a layout grid, use the domain for this row + in the grid for this parcats trace . + x + Sets the horizontal domain of this parcats trace (in + plot fraction). + y + Sets the vertical domain of this parcats trace (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this parcats trace . + row + If there is a layout grid, use the domain for this row + in the grid for this parcats trace . + x + Sets the horizontal domain of this parcats trace (in + plot fraction). + y + Sets the vertical domain of this parcats trace (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_labelfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_labelfont.py new file mode 100644 index 0000000..8f3bd58 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_labelfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Labelfont(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.labelfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Labelfont object + + Sets the font for the `dimension` labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.Labelfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Labelfont + """ + super().__init__("labelfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Labelfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Labelfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_legendgrouptitle.py new file mode 100644 index 0000000..180f8f8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.parcats.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_line.py new file mode 100644 index 0000000..72b01bc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_line.py @@ -0,0 +1,680 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "hovertemplate", + "reversescale", + "shape", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to parcats.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.line.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.parcats.line.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,Portla + nd,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every attributes that can be specified per-point + (the ones that are `arrayOk: true`) are available. This value + here applies when hovering over lines.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 + ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def shape(self): + """ + Sets the shape of the paths. If `linear`, paths are composed of + straight lines. If `hspline`, paths are composed of horizontal + curved splines + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'hspline'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.parcats.line.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. This value here applies when hovering + over lines.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 + ``. + reversescale + 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. + shape + Sets the shape of the paths. If `linear`, paths are + composed of straight lines. If `hspline`, paths are + composed of horizontal curved splines + showscale + 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. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + hovertemplate=None, + reversescale=None, + shape=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcats.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.parcats.line.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. This value here applies when hovering + over lines.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 + ``. + reversescale + 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. + shape + Sets the shape of the paths. If `linear`, paths are + composed of straight lines. If `hspline`, paths are + composed of horizontal curved splines + showscale + 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. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("reversescale", arg, reversescale) + self._set_property("shape", arg, shape) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_stream.py new file mode 100644 index 0000000..8d07078 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_tickfont.py new file mode 100644 index 0000000..630d6dc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "parcats" + _path_str = "parcats.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the font for the `category` labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/_font.py new file mode 100644 index 0000000..1f01359 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "parcats.legendgrouptitle" + _path_str = "parcats.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcats.legend + grouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/__init__.py new file mode 100644 index 0000000..5e06f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/_colorbar.py new file mode 100644 index 0000000..453686b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "parcats.line" + _path_str = "parcats.line.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.line.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.parcats.line.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.parcats.line.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.parcats.line.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.parcats.line.c + olorbar.tickformatstopdefaults), sets the default property + values to use for elements of + parcats.line.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.line.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.parcats.line.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.line.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.parcats.line.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.parcats.line.co + lorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.parcat + s.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + parcats.line.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.parcats.line.colorbar.Titl + e` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.line.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.parcats.line.co + lorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.parcat + s.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + parcats.line.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.parcats.line.colorbar.Titl + e` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.line.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.line.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickfont.py new file mode 100644 index 0000000..4f92e44 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "parcats.line.colorbar" + _path_str = "parcats.line.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcats.line.c + olorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.line.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.line.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py new file mode 100644 index 0000000..fc0ffbf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "parcats.line.colorbar" + _path_str = "parcats.line.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcats.line.c + olorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.line.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.line.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_title.py new file mode 100644 index 0000000..ec90649 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "parcats.line.colorbar" + _path_str = "parcats.line.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcats.line.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.parcats.line.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcats.line.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.line.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.line.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/_font.py new file mode 100644 index 0000000..37698b1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcats/line/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "parcats.line.colorbar.title" + _path_str = "parcats.line.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcats.line.c + olorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcats.line.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcats.line.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/__init__.py new file mode 100644 index 0000000..53ed764 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._dimension import Dimension + from ._domain import Domain + from ._labelfont import Labelfont + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._rangefont import Rangefont + from ._stream import Stream + from ._tickfont import Tickfont + from ._unselected import Unselected + from . import legendgrouptitle + from . import line + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".legendgrouptitle", ".line", ".unselected"], + [ + "._dimension.Dimension", + "._domain.Domain", + "._labelfont.Labelfont", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._rangefont.Rangefont", + "._stream.Stream", + "._tickfont.Tickfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_dimension.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_dimension.py new file mode 100644 index 0000000..0c28911 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_dimension.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Dimension(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.dimension" + _valid_props = { + "constraintrange", + "label", + "multiselect", + "name", + "range", + "templateitemname", + "tickformat", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "values", + "valuessrc", + "visible", + } + + @property + def constraintrange(self): + """ + 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]`. + + The 'constraintrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'constraintrange[0]' property accepts values of any type + (1) The 'constraintrange[1]' property accepts values of any type + + * a 2D list where: + (0) The 'constraintrange[i][0]' property accepts values of any type + (1) The 'constraintrange[i][1]' property accepts values of any type + + Returns + ------- + list + """ + return self["constraintrange"] + + @constraintrange.setter + def constraintrange(self, val): + self["constraintrange"] = val + + @property + def label(self): + """ + The shown name of the dimension. + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def multiselect(self): + """ + Do we allow multiple selection ranges or just a single range? + + The 'multiselect' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["multiselect"] + + @multiselect.setter + def multiselect(self, val): + self["multiselect"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def range(self): + """ + 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. + + The 'range' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'range[0]' property is a number and may be specified as: + - An int or float + (1) The 'range[1]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["range"] + + @range.setter + def range(self, val): + self["range"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def values(self): + """ + 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. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + Shows the dimension when set to `true` (the default). Hides the + dimension for `false`. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + constraintrange + 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]`. + label + The shown name of the dimension. + multiselect + Do we allow multiple selection ranges or just a single + range? + name + 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. + range + 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. + templateitemname + 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`. + tickformat + 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" + ticktext + Sets the text displayed at the ticks position via + `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + values + 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. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + Shows the dimension when set to `true` (the default). + Hides the dimension for `false`. + """ + + def __init__( + self, + arg=None, + constraintrange=None, + label=None, + multiselect=None, + name=None, + range=None, + templateitemname=None, + tickformat=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Dimension object + + The dimensions (variables) of the parallel coordinates chart. + 2..60 dimensions are supported. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Dimension` + constraintrange + 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]`. + label + The shown name of the dimension. + multiselect + Do we allow multiple selection ranges or just a single + range? + name + 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. + range + 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. + templateitemname + 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`. + tickformat + 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" + ticktext + Sets the text displayed at the ticks position via + `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + values + 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. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + Shows the dimension when set to `true` (the default). + Hides the dimension for `false`. + + Returns + ------- + Dimension + """ + super().__init__("dimensions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Dimension +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Dimension`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("constraintrange", arg, constraintrange) + self._set_property("label", arg, label) + self._set_property("multiselect", arg, multiselect) + self._set_property("name", arg, name) + self._set_property("range", arg, range) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("tickformat", arg, tickformat) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_domain.py new file mode 100644 index 0000000..a1b3f57 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this parcoords trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this parcoords trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this parcoords trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this parcoords trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this parcoords trace . + row + If there is a layout grid, use the domain for this row + in the grid for this parcoords trace . + x + Sets the horizontal domain of this parcoords trace (in + plot fraction). + y + Sets the vertical domain of this parcoords trace (in + plot fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this parcoords trace . + row + If there is a layout grid, use the domain for this row + in the grid for this parcoords trace . + x + Sets the horizontal domain of this parcoords trace (in + plot fraction). + y + Sets the vertical domain of this parcoords trace (in + plot fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_labelfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_labelfont.py new file mode 100644 index 0000000..b73fe48 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_labelfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Labelfont(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.labelfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Labelfont object + + Sets the font for the `dimension` labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Labelfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Labelfont + """ + super().__init__("labelfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Labelfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Labelfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_legendgrouptitle.py new file mode 100644 index 0000000..67462f3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.parcoords.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_line.py new file mode 100644 index 0000000..82478ae --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_line.py @@ -0,0 +1,540 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to parcoords.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.line.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.parcoords.line.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,Portla + nd,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.parcoords.line.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + showscale + 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. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.parcoords.line.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + showscale + 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. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_rangefont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_rangefont.py new file mode 100644 index 0000000..1e19cef --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_rangefont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Rangefont(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.rangefont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Rangefont object + + Sets the font for the `dimension` range values. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Rangefont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Rangefont + """ + super().__init__("rangefont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Rangefont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Rangefont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_stream.py new file mode 100644 index 0000000..a3753b1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_tickfont.py new file mode 100644 index 0000000..676f0ad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the font for the `dimension` tick values. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_unselected.py new file mode 100644 index 0000000..576feb6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "parcoords" + _path_str = "parcoords.unselected" + _valid_props = {"line"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.unselected.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.parcoords.unselected.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.parcoords.unselected.Line` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, line=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.Unselected` + line + :class:`plotly.graph_objects.parcoords.unselected.Line` + instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/_font.py new file mode 100644 index 0000000..32fda37 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.legendgrouptitle" + _path_str = "parcoords.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcoords.lege + ndgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/__init__.py new file mode 100644 index 0000000..5e06f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/_colorbar.py new file mode 100644 index 0000000..43cf23b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.line" + _path_str = "parcoords.line.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.line.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.parcoords.line.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.parcoords.line.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.parcoords.line.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.parcoords.line + .colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + parcoords.line.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.line.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.parcoords.line.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.line.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.parcoords.line.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.parcoords.line. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.parcoo + rds.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + parcoords.line.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.parcoords.line.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.line.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.parcoords.line. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.parcoo + rds.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + parcoords.line.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.parcoords.line.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.line.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.line.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py new file mode 100644 index 0000000..8737a56 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.line.colorbar" + _path_str = "parcoords.line.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcoords.line + .colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.line.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.line.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py new file mode 100644 index 0000000..0cbc645 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.line.colorbar" + _path_str = "parcoords.line.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcoords.line + .colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.line.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.line.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_title.py new file mode 100644 index 0000000..caa26b0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.line.colorbar" + _path_str = "parcoords.line.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.parcoords.line.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.parcoords.line.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcoords.line + .colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.line.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.line.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/_font.py new file mode 100644 index 0000000..d09e6f7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/line/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.line.colorbar.title" + _path_str = "parcoords.line.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.parcoords.line + .colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.line.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.line.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/_line.py new file mode 100644 index 0000000..0f34094 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/parcoords/unselected/_line.py @@ -0,0 +1,115 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "parcoords.unselected" + _path_str = "parcoords.unselected.line" + _valid_props = {"color", "opacity"} + + @property + def color(self): + """ + Sets the base color of unselected lines. in connection with + `unselected.line.opacity`. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + 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`. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the base color of unselected lines. in connection + with `unselected.line.opacity`. + opacity + 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`. + """ + + def __init__(self, arg=None, color=None, opacity=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.parcoords.unselected.Line` + color + Sets the base color of unselected lines. in connection + with `unselected.line.opacity`. + opacity + 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`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.parcoords.unselected.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.parcoords.unselected.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/__init__.py new file mode 100644 index 0000000..4444182 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/__init__.py @@ -0,0 +1,35 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._stream import Stream + from ._textfont import Textfont + from ._title import Title + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".title"], + [ + "._domain.Domain", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._stream.Stream", + "._textfont.Textfont", + "._title.Title", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_domain.py new file mode 100644 index 0000000..fd3dee6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_domain.py @@ -0,0 +1,168 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this pie trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this pie trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this pie trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this pie trace (in plot fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this pie trace . + row + If there is a layout grid, use the domain for this row + in the grid for this pie trace . + x + Sets the horizontal domain of this pie trace (in plot + fraction). + y + Sets the vertical domain of this pie trace (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.pie.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this pie trace . + row + If there is a layout grid, use the domain for this row + in the grid for this pie trace . + x + Sets the horizontal domain of this pie trace (in plot + fraction). + y + Sets the vertical domain of this pie trace (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_hoverlabel.py new file mode 100644 index 0000000..674f659 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.pie.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_insidetextfont.py new file mode 100644 index 0000000..cf59dbe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `textinfo` lying inside the sector. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_legendgrouptitle.py new file mode 100644 index 0000000..ff1230c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.pie.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_marker.py new file mode 100644 index 0000000..49f0443 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_marker.py @@ -0,0 +1,160 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.marker" + _valid_props = {"colors", "colorssrc", "line", "pattern"} + + @property + def colors(self): + """ + Sets the color of each sector. If not specified, the default + trace color set is used to pick the sector colors. + + The 'colors' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["colors"] + + @colors.setter + def colors(self, val): + self["colors"] = val + + @property + def colorssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `colors`. + + The 'colorssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorssrc"] + + @colorssrc.setter + def colorssrc(self, val): + self["colorssrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.pie.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.pie.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def _prop_descriptions(self): + return """\ + colors + Sets the color of each sector. If not specified, the + default trace color set is used to pick the sector + colors. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.pie.marker.Line` instance + or dict with compatible properties + pattern + Sets the pattern within the marker. + """ + + def __init__( + self, arg=None, colors=None, colorssrc=None, line=None, pattern=None, **kwargs + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.pie.Marker` + colors + Sets the color of each sector. If not specified, the + default trace color set is used to pick the sector + colors. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.pie.marker.Line` instance + or dict with compatible properties + pattern + Sets the pattern within the marker. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("colors", arg, colors) + self._set_property("colorssrc", arg, colorssrc) + self._set_property("line", arg, line) + self._set_property("pattern", arg, pattern) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_outsidetextfont.py new file mode 100644 index 0000000..dac483e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_outsidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + Sets the font used for `textinfo` lying outside the sector. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_stream.py new file mode 100644 index 0000000..d8187aa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.pie.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_textfont.py new file mode 100644 index 0000000..3ad5c97 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_textfont.py @@ -0,0 +1,586 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `textinfo`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.pie.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_title.py new file mode 100644 index 0000000..84582a5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/_title.py @@ -0,0 +1,131 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "pie" + _path_str = "pie.title" + _valid_props = {"font", "position", "text"} + + @property + def font(self): + """ + Sets the font used for `title`. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.pie.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.pie.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def position(self): + """ + Specifies the location of the `title`. + + The 'position' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top left', 'top center', 'top right', 'middle center', + 'bottom left', 'bottom center', 'bottom right'] + + Returns + ------- + Any + """ + return self["position"] + + @position.setter + def position(self, val): + self["position"] = val + + @property + def text(self): + """ + Sets the title of the chart. If it is empty, no title is + displayed. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets the font used for `title`. + position + Specifies the location of the `title`. + text + Sets the title of the chart. If it is empty, no title + is displayed. + """ + + def __init__(self, arg=None, font=None, position=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.pie.Title` + font + Sets the font used for `title`. + position + Specifies the location of the `title`. + text + Sets the title of the chart. If it is empty, no title + is displayed. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("position", arg, position) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/_font.py new file mode 100644 index 0000000..556bfc2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "pie.hoverlabel" + _path_str = "pie.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/_font.py new file mode 100644 index 0000000..fff0d0d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "pie.legendgrouptitle" + _path_str = "pie.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/__init__.py new file mode 100644 index 0000000..ae09590 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line + from ._pattern import Pattern +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._line.Line", "._pattern.Pattern"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_line.py new file mode 100644 index 0000000..3fdf9ce --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_line.py @@ -0,0 +1,160 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "pie.marker" + _path_str = "pie.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.marker.Line` + color + Sets the color of the line enclosing each sector. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_pattern.py new file mode 100644 index 0000000..db8b13e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "pie.marker" + _path_str = "pie.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/_font.py new file mode 100644 index 0000000..abe9386 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/pie/title/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "pie.title" + _path_str = "pie.title.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used for `title`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.pie.title.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.pie.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.pie.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/__init__.py new file mode 100644 index 0000000..257626f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/__init__.py @@ -0,0 +1,31 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._link import Link + from ._node import Node + from ._stream import Stream + from ._textfont import Textfont + from . import hoverlabel + from . import legendgrouptitle + from . import link + from . import node +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".link", ".node"], + [ + "._domain.Domain", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._link.Link", + "._node.Node", + "._stream.Stream", + "._textfont.Textfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_domain.py new file mode 100644 index 0000000..c86377e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_domain.py @@ -0,0 +1,169 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this sankey trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this sankey trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this sankey trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this sankey trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this sankey trace . + row + If there is a layout grid, use the domain for this row + in the grid for this sankey trace . + x + Sets the horizontal domain of this sankey trace (in + plot fraction). + y + Sets the vertical domain of this sankey trace (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sankey.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this sankey trace . + row + If there is a layout grid, use the domain for this row + in the grid for this sankey trace . + x + Sets the horizontal domain of this sankey trace (in + plot fraction). + y + Sets the vertical domain of this sankey trace (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_hoverlabel.py new file mode 100644 index 0000000..32d95a9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sankey.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_legendgrouptitle.py new file mode 100644 index 0000000..8f02463 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sankey.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_link.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_link.py new file mode 100644 index 0000000..d436fd8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_link.py @@ -0,0 +1,784 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Link(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.link" + _valid_props = { + "arrowlen", + "color", + "colorscaledefaults", + "colorscales", + "colorsrc", + "customdata", + "customdatasrc", + "hovercolor", + "hovercolorsrc", + "hoverinfo", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "label", + "labelsrc", + "line", + "source", + "sourcesrc", + "target", + "targetsrc", + "value", + "valuesrc", + } + + @property + def arrowlen(self): + """ + Sets the length (in px) of the links arrow, if 0 no arrow will + be drawn. + + The 'arrowlen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["arrowlen"] + + @arrowlen.setter + def arrowlen(self, val): + self["arrowlen"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorscales(self): + """ + The 'colorscales' property is a tuple of instances of + Colorscale that may be specified as: + - A list or tuple of instances of plotly.graph_objs.sankey.link.Colorscale + - A list or tuple of dicts of string/value properties that + will be passed to the Colorscale constructor + + Returns + ------- + tuple[plotly.graph_objs.sankey.link.Colorscale] + """ + return self["colorscales"] + + @colorscales.setter + def colorscales(self, val): + self["colorscales"] = val + + @property + def colorscaledefaults(self): + """ + When used in a template (as + layout.template.data.sankey.link.colorscaledefaults), sets the + default property values to use for elements of + sankey.link.colorscales + + The 'colorscaledefaults' property is an instance of Colorscale + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.link.Colorscale` + - A dict of string/value properties that will be passed + to the Colorscale constructor + + Returns + ------- + plotly.graph_objs.sankey.link.Colorscale + """ + return self["colorscaledefaults"] + + @colorscaledefaults.setter + def colorscaledefaults(self, val): + self["colorscaledefaults"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def customdata(self): + """ + Assigns extra data to each link. + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def hovercolor(self): + """ + 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. + + The 'hovercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovercolor"] + + @hovercolor.setter + def hovercolor(self, val): + self["hovercolor"] = val + + @property + def hovercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovercolor`. + + The 'hovercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovercolorsrc"] + + @hovercolorsrc.setter + def hovercolorsrc(self, val): + self["hovercolorsrc"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'none', 'skip'] + + Returns + ------- + Any + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.link.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.sankey.link.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every attributes that can be specified per-point + (the ones that are `arrayOk: true`) are available. Variables + `source` and `target` are node objects.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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def label(self): + """ + The shown name of the link. + + The 'label' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def labelsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `label`. + + The 'labelsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelsrc"] + + @labelsrc.setter + def labelsrc(self, val): + self["labelsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.link.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.sankey.link.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def source(self): + """ + An integer number `[0..nodes.length - 1]` that represents the + source node. + + The 'source' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["source"] + + @source.setter + def source(self, val): + self["source"] = val + + @property + def sourcesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `source`. + + The 'sourcesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sourcesrc"] + + @sourcesrc.setter + def sourcesrc(self, val): + self["sourcesrc"] = val + + @property + def target(self): + """ + An integer number `[0..nodes.length - 1]` that represents the + target node. + + The 'target' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["target"] + + @target.setter + def target(self, val): + self["target"] = val + + @property + def targetsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `target`. + + The 'targetsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["targetsrc"] + + @targetsrc.setter + def targetsrc(self, val): + self["targetsrc"] = val + + @property + def value(self): + """ + A numeric value representing the flow volume value. + + The 'value' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valuesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `value`. + + The 'valuesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuesrc"] + + @valuesrc.setter + def valuesrc(self, val): + self["valuesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + arrowlen + Sets the length (in px) of the links arrow, if 0 no + arrow will be drawn. + color + 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. + colorscales + A tuple of + :class:`plotly.graph_objects.sankey.link.Colorscale` + instances or dicts with compatible properties + colorscaledefaults + When used in a template (as + layout.template.data.sankey.link.colorscaledefaults), + sets the default property values to use for elements of + sankey.link.colorscales + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + customdata + Assigns extra data to each link. + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hovercolor + 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. + hovercolorsrc + Sets the source reference on Chart Studio Cloud for + `hovercolor`. + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.link.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Variables `source` and `target` are + node objects.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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + label + The shown name of the link. + labelsrc + Sets the source reference on Chart Studio Cloud for + `label`. + line + :class:`plotly.graph_objects.sankey.link.Line` instance + or dict with compatible properties + source + An integer number `[0..nodes.length - 1]` that + represents the source node. + sourcesrc + Sets the source reference on Chart Studio Cloud for + `source`. + target + An integer number `[0..nodes.length - 1]` that + represents the target node. + targetsrc + Sets the source reference on Chart Studio Cloud for + `target`. + value + A numeric value representing the flow volume value. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + """ + + def __init__( + self, + arg=None, + arrowlen=None, + color=None, + colorscales=None, + colorscaledefaults=None, + colorsrc=None, + customdata=None, + customdatasrc=None, + hovercolor=None, + hovercolorsrc=None, + hoverinfo=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + label=None, + labelsrc=None, + line=None, + source=None, + sourcesrc=None, + target=None, + targetsrc=None, + value=None, + valuesrc=None, + **kwargs, + ): + """ + Construct a new Link object + + The links of the Sankey plot. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sankey.Link` + arrowlen + Sets the length (in px) of the links arrow, if 0 no + arrow will be drawn. + color + 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. + colorscales + A tuple of + :class:`plotly.graph_objects.sankey.link.Colorscale` + instances or dicts with compatible properties + colorscaledefaults + When used in a template (as + layout.template.data.sankey.link.colorscaledefaults), + sets the default property values to use for elements of + sankey.link.colorscales + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + customdata + Assigns extra data to each link. + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + hovercolor + 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. + hovercolorsrc + Sets the source reference on Chart Studio Cloud for + `hovercolor`. + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.link.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Variables `source` and `target` are + node objects.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 + ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + label + The shown name of the link. + labelsrc + Sets the source reference on Chart Studio Cloud for + `label`. + line + :class:`plotly.graph_objects.sankey.link.Line` instance + or dict with compatible properties + source + An integer number `[0..nodes.length - 1]` that + represents the source node. + sourcesrc + Sets the source reference on Chart Studio Cloud for + `source`. + target + An integer number `[0..nodes.length - 1]` that + represents the target node. + targetsrc + Sets the source reference on Chart Studio Cloud for + `target`. + value + A numeric value representing the flow volume value. + valuesrc + Sets the source reference on Chart Studio Cloud for + `value`. + + Returns + ------- + Link + """ + super().__init__("link") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Link +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Link`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("arrowlen", arg, arrowlen) + self._set_property("color", arg, color) + self._set_property("colorscales", arg, colorscales) + self._set_property("colorscaledefaults", arg, colorscaledefaults) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("hovercolor", arg, hovercolor) + self._set_property("hovercolorsrc", arg, hovercolorsrc) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("label", arg, label) + self._set_property("labelsrc", arg, labelsrc) + self._set_property("line", arg, line) + self._set_property("source", arg, source) + self._set_property("sourcesrc", arg, sourcesrc) + self._set_property("target", arg, target) + self._set_property("targetsrc", arg, targetsrc) + self._set_property("value", arg, value) + self._set_property("valuesrc", arg, valuesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_node.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_node.py new file mode 100644 index 0000000..1e05e7a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_node.py @@ -0,0 +1,682 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Node(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.node" + _valid_props = { + "align", + "color", + "colorsrc", + "customdata", + "customdatasrc", + "groups", + "hoverinfo", + "hoverlabel", + "hovertemplate", + "hovertemplatesrc", + "label", + "labelsrc", + "line", + "pad", + "thickness", + "x", + "xsrc", + "y", + "ysrc", + } + + @property + def align(self): + """ + Sets the alignment method used to position the nodes along the + horizontal axis. + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['justify', 'left', 'right', 'center'] + + Returns + ------- + Any + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def customdata(self): + """ + Assigns extra data to each node. + + The 'customdata' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["customdata"] + + @customdata.setter + def customdata(self, val): + self["customdata"] = val + + @property + def customdatasrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `customdata`. + + The 'customdatasrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["customdatasrc"] + + @customdatasrc.setter + def customdatasrc(self, val): + self["customdatasrc"] = val + + @property + def groups(self): + """ + Groups of nodes. Each group is defined by an array with the + indices of the nodes it contains. Multiple groups can be + specified. + + The 'groups' property is an info array that may be specified as: + * a 2D list where: + The 'groups[i][j]' property is a number and may be specified as: + - An int or float + + Returns + ------- + list + """ + return self["groups"] + + @groups.setter + def groups(self, val): + self["groups"] = val + + @property + def hoverinfo(self): + """ + 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. + + The 'hoverinfo' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'none', 'skip'] + + Returns + ------- + Any + """ + return self["hoverinfo"] + + @hoverinfo.setter + def hoverinfo(self, val): + self["hoverinfo"] = val + + @property + def hoverlabel(self): + """ + The 'hoverlabel' property is an instance of Hoverlabel + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.node.Hoverlabel` + - A dict of string/value properties that will be passed + to the Hoverlabel constructor + + Returns + ------- + plotly.graph_objs.sankey.node.Hoverlabel + """ + return self["hoverlabel"] + + @hoverlabel.setter + def hoverlabel(self, val): + self["hoverlabel"] = val + + @property + def hovertemplate(self): + """ + 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. 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, every attributes that can be specified per-point + (the ones that are `arrayOk: true`) are available. Variables + `sourceLinks` and `targetLinks` are arrays of link + objects.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 ``. + + The 'hovertemplate' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["hovertemplate"] + + @hovertemplate.setter + def hovertemplate(self, val): + self["hovertemplate"] = val + + @property + def hovertemplatesrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + + The 'hovertemplatesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["hovertemplatesrc"] + + @hovertemplatesrc.setter + def hovertemplatesrc(self, val): + self["hovertemplatesrc"] = val + + @property + def label(self): + """ + The shown name of the node. + + The 'label' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def labelsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `label`. + + The 'labelsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["labelsrc"] + + @labelsrc.setter + def labelsrc(self, val): + self["labelsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.node.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.sankey.node.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def pad(self): + """ + Sets the padding (in px) between the `nodes`. + + The 'pad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the `nodes`. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def x(self): + """ + The normalized horizontal position of the node. + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + The normalized vertical position of the node. + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + Sets the alignment method used to position the nodes + along the horizontal axis. + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + customdata + Assigns extra data to each node. + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + groups + Groups of nodes. Each group is defined by an array with + the indices of the nodes it contains. Multiple groups + can be specified. + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.node.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Variables `sourceLinks` and + `targetLinks` are arrays of link objects.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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + label + The shown name of the node. + labelsrc + Sets the source reference on Chart Studio Cloud for + `label`. + line + :class:`plotly.graph_objects.sankey.node.Line` instance + or dict with compatible properties + pad + Sets the padding (in px) between the `nodes`. + thickness + Sets the thickness (in px) of the `nodes`. + x + The normalized horizontal position of the node. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + The normalized vertical position of the node. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + """ + + def __init__( + self, + arg=None, + align=None, + color=None, + colorsrc=None, + customdata=None, + customdatasrc=None, + groups=None, + hoverinfo=None, + hoverlabel=None, + hovertemplate=None, + hovertemplatesrc=None, + label=None, + labelsrc=None, + line=None, + pad=None, + thickness=None, + x=None, + xsrc=None, + y=None, + ysrc=None, + **kwargs, + ): + """ + Construct a new Node object + + The nodes of the Sankey plot. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sankey.Node` + align + Sets the alignment method used to position the nodes + along the horizontal axis. + color + 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. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + customdata + Assigns extra data to each node. + customdatasrc + Sets the source reference on Chart Studio Cloud for + `customdata`. + groups + Groups of nodes. Each group is defined by an array with + the indices of the nodes it contains. Multiple groups + can be specified. + hoverinfo + 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. + hoverlabel + :class:`plotly.graph_objects.sankey.node.Hoverlabel` + instance or dict with compatible properties + hovertemplate + 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. 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, every attributes that can be + specified per-point (the ones that are `arrayOk: true`) + are available. Variables `sourceLinks` and + `targetLinks` are arrays of link objects.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 ``. + hovertemplatesrc + Sets the source reference on Chart Studio Cloud for + `hovertemplate`. + label + The shown name of the node. + labelsrc + Sets the source reference on Chart Studio Cloud for + `label`. + line + :class:`plotly.graph_objects.sankey.node.Line` instance + or dict with compatible properties + pad + Sets the padding (in px) between the `nodes`. + thickness + Sets the thickness (in px) of the `nodes`. + x + The normalized horizontal position of the node. + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + The normalized vertical position of the node. + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + + Returns + ------- + Node + """ + super().__init__("node") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Node +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Node`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("customdata", arg, customdata) + self._set_property("customdatasrc", arg, customdatasrc) + self._set_property("groups", arg, groups) + self._set_property("hoverinfo", arg, hoverinfo) + self._set_property("hoverlabel", arg, hoverlabel) + self._set_property("hovertemplate", arg, hovertemplate) + self._set_property("hovertemplatesrc", arg, hovertemplatesrc) + self._set_property("label", arg, label) + self._set_property("labelsrc", arg, labelsrc) + self._set_property("line", arg, line) + self._set_property("pad", arg, pad) + self._set_property("thickness", arg, thickness) + self._set_property("x", arg, x) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("ysrc", arg, ysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_stream.py new file mode 100644 index 0000000..542d7c1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sankey.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_textfont.py new file mode 100644 index 0000000..d052501 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/_textfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "sankey" + _path_str = "sankey.textfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font for node labels + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.Textfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/_font.py new file mode 100644 index 0000000..3d9d60f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sankey.hoverlabel" + _path_str = "sankey.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/_font.py new file mode 100644 index 0000000..2887958 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sankey.legendgrouptitle" + _path_str = "sankey.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/__init__.py new file mode 100644 index 0000000..7170211 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorscale import Colorscale + from ._hoverlabel import Hoverlabel + from ._line import Line + from . import hoverlabel +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel"], + ["._colorscale.Colorscale", "._hoverlabel.Hoverlabel", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_colorscale.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_colorscale.py new file mode 100644 index 0000000..61d0934 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_colorscale.py @@ -0,0 +1,304 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Colorscale(_BaseTraceHierarchyType): + _parent_path_str = "sankey.link" + _path_str = "sankey.link.colorscale" + _valid_props = {"cmax", "cmin", "colorscale", "label", "name", "templateitemname"} + + @property + def cmax(self): + """ + Sets the upper bound of the color domain. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmin(self): + """ + Sets the lower bound of the color domain. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def label(self): + """ + The label of the links to color based on their concentration + within a flow. + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def _prop_descriptions(self): + return """\ + cmax + Sets the upper bound of the color domain. + cmin + Sets the lower bound of the color domain. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + label + The label of the links to color based on their + concentration within a flow. + name + 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. + templateitemname + 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`. + """ + + def __init__( + self, + arg=None, + cmax=None, + cmin=None, + colorscale=None, + label=None, + name=None, + templateitemname=None, + **kwargs, + ): + """ + Construct a new Colorscale object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.link.Colorscale` + cmax + Sets the upper bound of the color domain. + cmin + Sets the lower bound of the color domain. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + label + The label of the links to color based on their + concentration within a flow. + name + 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. + templateitemname + 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`. + + Returns + ------- + Colorscale + """ + super().__init__("colorscales") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.link.Colorscale +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.link.Colorscale`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("cmax", arg, cmax) + self._set_property("cmin", arg, cmin) + self._set_property("colorscale", arg, colorscale) + self._set_property("label", arg, label) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_hoverlabel.py new file mode 100644 index 0000000..e5684a2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "sankey.link" + _path_str = "sankey.link.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.link.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sankey.link.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.link.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.link.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.link.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_line.py new file mode 100644 index 0000000..feb0d9e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/_line.py @@ -0,0 +1,160 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "sankey.link" + _path_str = "sankey.link.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the `line` around each `link`. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the `line` around each `link`. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the `line` around each `link`. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the `line` around each + `link`. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.link.Line` + color + Sets the color of the `line` around each `link`. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the `line` around each + `link`. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.link.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.link.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/_font.py new file mode 100644 index 0000000..e96c178 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/link/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sankey.link.hoverlabel" + _path_str = "sankey.link.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.link.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.link.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.link.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/__init__.py new file mode 100644 index 0000000..dfd0787 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._line import Line + from . import hoverlabel +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".hoverlabel"], ["._hoverlabel.Hoverlabel", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_hoverlabel.py new file mode 100644 index 0000000..22a6590 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "sankey.node" + _path_str = "sankey.node.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sankey.node.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sankey.node.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.node.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.node.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.node.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_line.py new file mode 100644 index 0000000..d3855f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/_line.py @@ -0,0 +1,160 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "sankey.node" + _path_str = "sankey.node.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the `line` around each `node`. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the `line` around each `node`. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the `line` around each `node`. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the `line` around each + `node`. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.node.Line` + color + Sets the color of the `line` around each `node`. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the `line` around each + `node`. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.node.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.node.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/_font.py new file mode 100644 index 0000000..545db57 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sankey/node/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sankey.node.hoverlabel" + _path_str = "sankey.node.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sankey.node.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sankey.node.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sankey.node.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/__init__.py new file mode 100644 index 0000000..c4452eb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/__init__.py @@ -0,0 +1,42 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._error_x import ErrorX + from ._error_y import ErrorY + from ._fillgradient import Fillgradient + from ._fillpattern import Fillpattern + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._error_x.ErrorX", + "._error_y.ErrorY", + "._fillgradient.Fillgradient", + "._fillpattern.Fillpattern", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_x.py new file mode 100644 index 0000000..b312a56 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_x.py @@ -0,0 +1,503 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorX(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.error_x" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "copy_ystyle", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def copy_ystyle(self): + """ + The 'copy_ystyle' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["copy_ystyle"] + + @copy_ystyle.setter + def copy_ystyle(self, val): + self["copy_ystyle"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + copy_ystyle=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorX object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.ErrorX` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorX + """ + super().__init__("error_x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.ErrorX +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.ErrorX`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("copy_ystyle", arg, copy_ystyle) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_y.py new file mode 100644 index 0000000..a5a8228 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_error_y.py @@ -0,0 +1,480 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorY(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.error_y" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorY object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.ErrorY` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorY + """ + super().__init__("error_y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.ErrorY +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.ErrorY`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillgradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillgradient.py new file mode 100644 index 0000000..1df626d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillgradient.py @@ -0,0 +1,227 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Fillgradient(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.fillgradient" + _valid_props = {"colorscale", "start", "stop", "type"} + + @property + def colorscale(self): + """ + 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". + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def start(self): + """ + 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". + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def stop(self): + """ + 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". + + The 'stop' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["stop"] + + @stop.setter + def stop(self, val): + self["stop"] = val + + @property + def type(self): + """ + Sets the type/orientation of the color gradient for the fill. + Defaults to "none". + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def _prop_descriptions(self): + return """\ + colorscale + 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". + start + 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". + stop + 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". + type + Sets the type/orientation of the color gradient for the + fill. Defaults to "none". + """ + + def __init__( + self, arg=None, colorscale=None, start=None, stop=None, type=None, **kwargs + ): + """ + Construct a new Fillgradient object + + Sets a fill gradient. If not specified, the fillcolor is used + instead. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Fillgradient` + colorscale + 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". + start + 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". + stop + 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". + type + Sets the type/orientation of the color gradient for the + fill. Defaults to "none". + + Returns + ------- + Fillgradient + """ + super().__init__("fillgradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Fillgradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Fillgradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("colorscale", arg, colorscale) + self._set_property("start", arg, start) + self._set_property("stop", arg, stop) + self._set_property("type", arg, type) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillpattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillpattern.py new file mode 100644 index 0000000..f333974 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_fillpattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Fillpattern(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.fillpattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Fillpattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Fillpattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Fillpattern + """ + super().__init__("fillpattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Fillpattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Fillpattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_hoverlabel.py new file mode 100644 index 0000000..e7ff803 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_legendgrouptitle.py new file mode 100644 index 0000000..fabbee3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_line.py new file mode 100644 index 0000000..872923d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_line.py @@ -0,0 +1,310 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.line" + _valid_props = { + "backoff", + "backoffsrc", + "color", + "dash", + "shape", + "simplify", + "smoothing", + "width", + } + + @property + def backoff(self): + """ + 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". + + The 'backoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["backoff"] + + @backoff.setter + def backoff(self, val): + self["backoff"] = val + + @property + def backoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `backoff`. + + The 'backoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["backoffsrc"] + + @backoffsrc.setter + def backoffsrc(self, val): + self["backoffsrc"] = val + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def shape(self): + """ + Determines the line shape. With "spline" the lines are drawn + using spline interpolation. The other available values + correspond to step-wise line shapes. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'spline', 'hv', 'vh', 'hvh', 'vhv'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def simplify(self): + """ + 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. + + The 'simplify' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["simplify"] + + @simplify.setter + def simplify(self, val): + self["simplify"] = val + + @property + def smoothing(self): + """ + 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). + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + simplify + 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. + smoothing + 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). + width + Sets the line width (in px). + """ + + def __init__( + self, + arg=None, + backoff=None, + backoffsrc=None, + color=None, + dash=None, + shape=None, + simplify=None, + smoothing=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter.Line` + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + simplify + 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. + smoothing + 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). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("backoff", arg, backoff) + self._set_property("backoffsrc", arg, backoffsrc) + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("shape", arg, shape) + self._set_property("simplify", arg, simplify) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_marker.py new file mode 100644 index 0000000..3543558 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_marker.py @@ -0,0 +1,1130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.marker" + _valid_props = { + "angle", + "angleref", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "gradient", + "line", + "maxdisplayed", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "standoff", + "standoffsrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def angleref(self): + """ + 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. + + The 'angleref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['previous', 'up'] + + Returns + ------- + Any + """ + return self["angleref"] + + @angleref.setter + def angleref(self, val): + self["angleref"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatter.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def gradient(self): + """ + The 'gradient' property is an instance of Gradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.Gradient` + - A dict of string/value properties that will be passed + to the Gradient constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.Gradient + """ + return self["gradient"] + + @gradient.setter + def gradient(self, val): + self["gradient"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxdisplayed(self): + """ + Sets a maximum number of points to be drawn on the graph. 0 + corresponds to no limit. + + The 'maxdisplayed' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["maxdisplayed"] + + @maxdisplayed.setter + def maxdisplayed(self, val): + self["maxdisplayed"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def standoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `standoff`. + + The 'standoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["standoffsrc"] + + @standoffsrc.setter + def standoffsrc(self, val): + self["standoffsrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatter.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scatter.marker.Gradient` + instance or dict with compatible properties + line + :class:`plotly.graph_objects.scatter.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + angleref=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + gradient=None, + line=None, + maxdisplayed=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + standoff=None, + standoffsrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Marker` + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatter.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scatter.marker.Gradient` + instance or dict with compatible properties + line + :class:`plotly.graph_objects.scatter.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("angleref", arg, angleref) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("gradient", arg, gradient) + self._set_property("line", arg, line) + self._set_property("maxdisplayed", arg, maxdisplayed) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("standoff", arg, standoff) + self._set_property("standoffsrc", arg, standoffsrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_selected.py new file mode 100644 index 0000000..d8f7e1d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatter.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatter.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatter.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatter.selected.Textfont` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Selected` + marker + :class:`plotly.graph_objects.scatter.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatter.selected.Textfont` + instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_stream.py new file mode 100644 index 0000000..6ba740d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_textfont.py new file mode 100644 index 0000000..7957629 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_unselected.py new file mode 100644 index 0000000..e96e33b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scatter" + _path_str = "scatter.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatter.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatter.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatter.unselected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatter.unselected.Textfon + t` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.Unselected` + marker + :class:`plotly.graph_objects.scatter.unselected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatter.unselected.Textfon + t` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/_font.py new file mode 100644 index 0000000..1abdf82 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter.hoverlabel" + _path_str = "scatter.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/_font.py new file mode 100644 index 0000000..fbc6a1a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter.legendgrouptitle" + _path_str = "scatter.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter.legend + grouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/__init__.py new file mode 100644 index 0000000..6cfc468 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._gradient import Gradient + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._gradient.Gradient", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_colorbar.py new file mode 100644 index 0000000..69d2530 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker" + _path_str = "scatter.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scatter.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scatter.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatter.marker + .colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scatter.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatter.marker. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatter.marker.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatter.marker. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatter.marker.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_gradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_gradient.py new file mode 100644 index 0000000..129ea67 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_gradient.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gradient(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker" + _path_str = "scatter.marker.gradient" + _valid_props = {"color", "colorsrc", "type", "typesrc"} + + @property + def color(self): + """ + Sets the final color of the gradient fill: the center color for + radial, the right for horizontal, or the bottom for vertical. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def type(self): + """ + Sets the type of gradient used to fill the markers + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def typesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `type`. + + The 'typesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["typesrc"] + + @typesrc.setter + def typesrc(self, val): + self["typesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, type=None, typesrc=None, **kwargs + ): + """ + Construct a new Gradient object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.marker.Gradient` + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + + Returns + ------- + Gradient + """ + super().__init__("gradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.Gradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.Gradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("type", arg, type) + self._set_property("typesrc", arg, typesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_line.py new file mode 100644 index 0000000..4d77c65 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker" + _path_str = "scatter.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatter.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..979d2b7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker.colorbar" + _path_str = "scatter.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter.marker + .colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..17996eb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker.colorbar" + _path_str = "scatter.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter.marker + .colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_title.py new file mode 100644 index 0000000..381a749 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker.colorbar" + _path_str = "scatter.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter.marker + .colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/_font.py new file mode 100644 index 0000000..6d20253 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter.marker.colorbar.title" + _path_str = "scatter.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter.marker + .colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_marker.py new file mode 100644 index 0000000..6eb0a98 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatter.selected" + _path_str = "scatter.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_textfont.py new file mode 100644 index 0000000..75424c1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter.selected" + _path_str = "scatter.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_marker.py new file mode 100644 index 0000000..dce5658 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatter.unselected" + _path_str = "scatter.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_textfont.py new file mode 100644 index 0000000..63e1707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter.unselected" + _path_str = "scatter.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter.unselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/__init__.py new file mode 100644 index 0000000..e28bc44 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/__init__.py @@ -0,0 +1,38 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._error_x import ErrorX + from ._error_y import ErrorY + from ._error_z import ErrorZ + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._projection import Projection + from ._stream import Stream + from ._textfont import Textfont + from . import hoverlabel + from . import legendgrouptitle + from . import line + from . import marker + from . import projection +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".line", ".marker", ".projection"], + [ + "._error_x.ErrorX", + "._error_y.ErrorY", + "._error_z.ErrorZ", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._projection.Projection", + "._stream.Stream", + "._textfont.Textfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_x.py new file mode 100644 index 0000000..1fd5bd2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_x.py @@ -0,0 +1,503 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorX(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.error_x" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "copy_zstyle", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def copy_zstyle(self): + """ + The 'copy_zstyle' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["copy_zstyle"] + + @copy_zstyle.setter + def copy_zstyle(self, val): + self["copy_zstyle"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_zstyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + copy_zstyle=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorX object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.ErrorX` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_zstyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorX + """ + super().__init__("error_x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.ErrorX +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.ErrorX`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("copy_zstyle", arg, copy_zstyle) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_y.py new file mode 100644 index 0000000..87c1a93 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_y.py @@ -0,0 +1,503 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorY(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.error_y" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "copy_zstyle", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def copy_zstyle(self): + """ + The 'copy_zstyle' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["copy_zstyle"] + + @copy_zstyle.setter + def copy_zstyle(self, val): + self["copy_zstyle"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_zstyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + copy_zstyle=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorY object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.ErrorY` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_zstyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorY + """ + super().__init__("error_y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.ErrorY +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.ErrorY`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("copy_zstyle", arg, copy_zstyle) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_z.py new file mode 100644 index 0000000..cdfd115 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_error_z.py @@ -0,0 +1,480 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorZ(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.error_z" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorZ object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.ErrorZ` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorZ + """ + super().__init__("error_z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.ErrorZ +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.ErrorZ`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_hoverlabel.py new file mode 100644 index 0000000..efb8616 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter3d.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_legendgrouptitle.py new file mode 100644 index 0000000..35ef9ea --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter3d.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_line.py new file mode 100644 index 0000000..d1d7234 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_line.py @@ -0,0 +1,592 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "dash", + "reversescale", + "showscale", + "width", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatter3d.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.line.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scatter3d.line.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,Portla + nd,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def dash(self): + """ + Sets the dash style of the lines. + + The 'dash' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['dash', 'dashdot', 'dot', 'longdash', 'longdashdot', + 'solid'] + + Returns + ------- + Any + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatter3d.line.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + dash + Sets the dash style of the lines. + reversescale + 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. + showscale + 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. + width + Sets the line width (in px). + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + dash=None, + reversescale=None, + showscale=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatter3d.line.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + dash + Sets the dash style of the lines. + reversescale + 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. + showscale + 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. + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("dash", arg, dash) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_marker.py new file mode 100644 index 0000000..7f4e422 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_marker.py @@ -0,0 +1,810 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "line", + "opacity", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "symbol", + "symbolsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatter3d.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scatter3d.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatter3d.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + 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. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def symbol(self): + """ + Sets the marker symbol type. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['circle', 'circle-open', 'cross', 'diamond', + 'diamond-open', 'square', 'square-open', 'x'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatter3d.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.scatter3d.marker.Line` + instance or dict with compatible properties + opacity + 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. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + Sets the marker symbol type. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + line=None, + opacity=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatter3d.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.scatter3d.marker.Line` + instance or dict with compatible properties + opacity + 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. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + Sets the marker symbol type. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_projection.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_projection.py new file mode 100644 index 0000000..de02e0c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_projection.py @@ -0,0 +1,132 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Projection(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.projection" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is an instance of X + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.projection.X` + - A dict of string/value properties that will be passed + to the X constructor + + Returns + ------- + plotly.graph_objs.scatter3d.projection.X + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is an instance of Y + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.projection.Y` + - A dict of string/value properties that will be passed + to the Y constructor + + Returns + ------- + plotly.graph_objs.scatter3d.projection.Y + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is an instance of Z + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.projection.Z` + - A dict of string/value properties that will be passed + to the Z constructor + + Returns + ------- + plotly.graph_objs.scatter3d.projection.Z + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + :class:`plotly.graph_objects.scatter3d.projection.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.scatter3d.projection.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.scatter3d.projection.Z` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Projection object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Projection` + x + :class:`plotly.graph_objects.scatter3d.projection.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.scatter3d.projection.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.scatter3d.projection.Z` + instance or dict with compatible properties + + Returns + ------- + Projection + """ + super().__init__("projection") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Projection +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Projection`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_stream.py new file mode 100644 index 0000000..382456f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_textfont.py new file mode 100644 index 0000000..6d36523 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/_textfont.py @@ -0,0 +1,400 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d" + _path_str = "scatter3d.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "size", + "sizesrc", + "style", + "stylesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/_font.py new file mode 100644 index 0000000..3edf8ed --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.hoverlabel" + _path_str = "scatter3d.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py new file mode 100644 index 0000000..95c7ad1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.legendgrouptitle" + _path_str = "scatter3d.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.lege + ndgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/__init__.py new file mode 100644 index 0000000..5e06f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/_colorbar.py new file mode 100644 index 0000000..b2b308e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.line" + _path_str = "scatter3d.line.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scatter3d.line.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scatter3d.line.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scatter3d.line.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatter3d.line + .colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scatter3d.line.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scatter3d.line.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scatter3d.line.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatter3d.line. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r3d.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter3d.line.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatter3d.line.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.line.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatter3d.line. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r3d.line.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter3d.line.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatter3d.line.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.line.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.line.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py new file mode 100644 index 0000000..2d5833c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.line.colorbar" + _path_str = "scatter3d.line.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.line + .colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.line.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py new file mode 100644 index 0000000..66e80c3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.line.colorbar" + _path_str = "scatter3d.line.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.line + .colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.line.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_title.py new file mode 100644 index 0000000..7bcfe28 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.line.colorbar" + _path_str = "scatter3d.line.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter3d.line.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.line + .colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.line.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py new file mode 100644 index 0000000..603e087 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/line/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.line.colorbar.title" + _path_str = "scatter3d.line.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.line + .colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.line.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.line.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/__init__.py new file mode 100644 index 0000000..e0fbf0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_colorbar.py new file mode 100644 index 0000000..f362a2b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.marker" + _path_str = "scatter3d.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scatter3d.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatter3d.mark + er.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scatter3d.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scatter3d.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatter3d.marke + r.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r3d.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter3d.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatter3d.marker.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatter3d.marke + r.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + r3d.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scatter3d.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatter3d.marker.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_line.py new file mode 100644 index 0000000..50011a6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/_line.py @@ -0,0 +1,518 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.marker" + _path_str = "scatter3d.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatter3d.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..7861266 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.marker.colorbar" + _path_str = "scatter3d.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.mark + er.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..5c95cfa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.marker.colorbar" + _path_str = "scatter3d.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.mark + er.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_title.py new file mode 100644 index 0000000..1b2aafe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.marker.colorbar" + _path_str = "scatter3d.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatter3d.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.mark + er.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py new file mode 100644 index 0000000..53344ff --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.marker.colorbar.title" + _path_str = "scatter3d.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatter3d.mark + er.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/__init__.py new file mode 100644 index 0000000..3802eba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._x import X + from ._y import Y + from ._z import Z +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._x.X", "._y.Y", "._z.Z"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_x.py new file mode 100644 index 0000000..2094583 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_x.py @@ -0,0 +1,128 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class X(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.projection" + _path_str = "scatter3d.projection.x" + _valid_props = {"opacity", "scale", "show"} + + @property + def opacity(self): + """ + Sets the projection color. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def scale(self): + """ + Sets the scale factor determining the size of the projection + marker points. + + The 'scale' property is a number and may be specified as: + - An int or float in the interval [0, 10] + + Returns + ------- + int|float + """ + return self["scale"] + + @scale.setter + def scale(self, val): + self["scale"] = val + + @property + def show(self): + """ + Sets whether or not projections are shown along the x axis. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the projection color. + scale + Sets the scale factor determining the size of the + projection marker points. + show + Sets whether or not projections are shown along the x + axis. + """ + + def __init__(self, arg=None, opacity=None, scale=None, show=None, **kwargs): + """ + Construct a new X object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.projection.X` + opacity + Sets the projection color. + scale + Sets the scale factor determining the size of the + projection marker points. + show + Sets whether or not projections are shown along the x + axis. + + Returns + ------- + X + """ + super().__init__("x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.projection.X +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.projection.X`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._set_property("scale", arg, scale) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_y.py new file mode 100644 index 0000000..fb4d7df --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_y.py @@ -0,0 +1,128 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Y(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.projection" + _path_str = "scatter3d.projection.y" + _valid_props = {"opacity", "scale", "show"} + + @property + def opacity(self): + """ + Sets the projection color. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def scale(self): + """ + Sets the scale factor determining the size of the projection + marker points. + + The 'scale' property is a number and may be specified as: + - An int or float in the interval [0, 10] + + Returns + ------- + int|float + """ + return self["scale"] + + @scale.setter + def scale(self, val): + self["scale"] = val + + @property + def show(self): + """ + Sets whether or not projections are shown along the y axis. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the projection color. + scale + Sets the scale factor determining the size of the + projection marker points. + show + Sets whether or not projections are shown along the y + axis. + """ + + def __init__(self, arg=None, opacity=None, scale=None, show=None, **kwargs): + """ + Construct a new Y object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.projection.Y` + opacity + Sets the projection color. + scale + Sets the scale factor determining the size of the + projection marker points. + show + Sets whether or not projections are shown along the y + axis. + + Returns + ------- + Y + """ + super().__init__("y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.projection.Y +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.projection.Y`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._set_property("scale", arg, scale) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_z.py new file mode 100644 index 0000000..16655eb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatter3d/projection/_z.py @@ -0,0 +1,128 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Z(_BaseTraceHierarchyType): + _parent_path_str = "scatter3d.projection" + _path_str = "scatter3d.projection.z" + _valid_props = {"opacity", "scale", "show"} + + @property + def opacity(self): + """ + Sets the projection color. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def scale(self): + """ + Sets the scale factor determining the size of the projection + marker points. + + The 'scale' property is a number and may be specified as: + - An int or float in the interval [0, 10] + + Returns + ------- + int|float + """ + return self["scale"] + + @scale.setter + def scale(self, val): + self["scale"] = val + + @property + def show(self): + """ + Sets whether or not projections are shown along the z axis. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the projection color. + scale + Sets the scale factor determining the size of the + projection marker points. + show + Sets whether or not projections are shown along the z + axis. + """ + + def __init__(self, arg=None, opacity=None, scale=None, show=None, **kwargs): + """ + Construct a new Z object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatter3d.projection.Z` + opacity + Sets the projection color. + scale + Sets the scale factor determining the size of the + projection marker points. + show + Sets whether or not projections are shown along the z + axis. + + Returns + ------- + Z + """ + super().__init__("z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatter3d.projection.Z +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatter3d.projection.Z`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._set_property("scale", arg, scale) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/__init__.py new file mode 100644 index 0000000..55ee707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_hoverlabel.py new file mode 100644 index 0000000..dc13e02 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_legendgrouptitle.py new file mode 100644 index 0000000..ded5649 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_line.py new file mode 100644 index 0000000..0aa2e06 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_line.py @@ -0,0 +1,277 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.line" + _valid_props = { + "backoff", + "backoffsrc", + "color", + "dash", + "shape", + "smoothing", + "width", + } + + @property + def backoff(self): + """ + 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". + + The 'backoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["backoff"] + + @backoff.setter + def backoff(self, val): + self["backoff"] = val + + @property + def backoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `backoff`. + + The 'backoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["backoffsrc"] + + @backoffsrc.setter + def backoffsrc(self, val): + self["backoffsrc"] = val + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def shape(self): + """ + Determines the line shape. With "spline" the lines are drawn + using spline interpolation. The other available values + correspond to step-wise line shapes. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'spline'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def smoothing(self): + """ + 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). + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + """ + + def __init__( + self, + arg=None, + backoff=None, + backoffsrc=None, + color=None, + dash=None, + shape=None, + smoothing=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Line` + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("backoff", arg, backoff) + self._set_property("backoffsrc", arg, backoffsrc) + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("shape", arg, shape) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_marker.py new file mode 100644 index 0000000..3dfb1f7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_marker.py @@ -0,0 +1,1130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.marker" + _valid_props = { + "angle", + "angleref", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "gradient", + "line", + "maxdisplayed", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "standoff", + "standoffsrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def angleref(self): + """ + 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. + + The 'angleref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['previous', 'up'] + + Returns + ------- + Any + """ + return self["angleref"] + + @angleref.setter + def angleref(self, val): + self["angleref"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattercarpet.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def gradient(self): + """ + The 'gradient' property is an instance of Gradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.Gradient` + - A dict of string/value properties that will be passed + to the Gradient constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.Gradient + """ + return self["gradient"] + + @gradient.setter + def gradient(self, val): + self["gradient"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxdisplayed(self): + """ + Sets a maximum number of points to be drawn on the graph. 0 + corresponds to no limit. + + The 'maxdisplayed' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["maxdisplayed"] + + @maxdisplayed.setter + def maxdisplayed(self, val): + self["maxdisplayed"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def standoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `standoff`. + + The 'standoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["standoffsrc"] + + @standoffsrc.setter + def standoffsrc(self, val): + self["standoffsrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattercarpet.marker.Color + Bar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scattercarpet.marker.Gradi + ent` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scattercarpet.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + angleref=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + gradient=None, + line=None, + maxdisplayed=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + standoff=None, + standoffsrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Marker` + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattercarpet.marker.Color + Bar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scattercarpet.marker.Gradi + ent` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scattercarpet.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("angleref", arg, angleref) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("gradient", arg, gradient) + self._set_property("line", arg, line) + self._set_property("maxdisplayed", arg, maxdisplayed) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("standoff", arg, standoff) + self._set_property("standoffsrc", arg, standoffsrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_selected.py new file mode 100644 index 0000000..c92d8b3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattercarpet.selected.Mar + ker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattercarpet.selected.Tex + tfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Selected` + marker + :class:`plotly.graph_objects.scattercarpet.selected.Mar + ker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattercarpet.selected.Tex + tfont` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_stream.py new file mode 100644 index 0000000..d1b93a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_textfont.py new file mode 100644 index 0000000..3deda0f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_unselected.py new file mode 100644 index 0000000..ab71af9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet" + _path_str = "scattercarpet.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattercarpet.unselected.M + arker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattercarpet.unselected.T + extfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.Unselected` + marker + :class:`plotly.graph_objects.scattercarpet.unselected.M + arker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattercarpet.unselected.T + extfont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/_font.py new file mode 100644 index 0000000..232ffa7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.hoverlabel" + _path_str = "scattercarpet.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py new file mode 100644 index 0000000..083f9ec --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.legendgrouptitle" + _path_str = "scattercarpet.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/__init__.py new file mode 100644 index 0000000..6cfc468 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._gradient import Gradient + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._gradient.Gradient", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_colorbar.py new file mode 100644 index 0000000..1d5c07f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker" + _path_str = "scattercarpet.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattercarpet. + marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scattercarpet.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattercarpet.m + arker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rcarpet.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattercarpet.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattercarpet.marker.color + bar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattercarpet.m + arker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rcarpet.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattercarpet.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattercarpet.marker.color + bar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_gradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_gradient.py new file mode 100644 index 0000000..1fe30ae --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_gradient.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gradient(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker" + _path_str = "scattercarpet.marker.gradient" + _valid_props = {"color", "colorsrc", "type", "typesrc"} + + @property + def color(self): + """ + Sets the final color of the gradient fill: the center color for + radial, the right for horizontal, or the bottom for vertical. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def type(self): + """ + Sets the type of gradient used to fill the markers + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def typesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `type`. + + The 'typesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["typesrc"] + + @typesrc.setter + def typesrc(self, val): + self["typesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, type=None, typesrc=None, **kwargs + ): + """ + Construct a new Gradient object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + marker.Gradient` + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + + Returns + ------- + Gradient + """ + super().__init__("gradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.Gradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.Gradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("type", arg, type) + self._set_property("typesrc", arg, typesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_line.py new file mode 100644 index 0000000..bc682af --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker" + _path_str = "scattercarpet.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattercarpet.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattercarpet.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..b831738 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker.colorbar" + _path_str = "scattercarpet.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + marker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..6edaabe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker.colorbar" + _path_str = "scattercarpet.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + marker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py new file mode 100644 index 0000000..c8032d9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker.colorbar" + _path_str = "scattercarpet.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattercarpet.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py new file mode 100644 index 0000000..33b501c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.marker.colorbar.title" + _path_str = "scattercarpet.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + marker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_marker.py new file mode 100644 index 0000000..1af34aa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.selected" + _path_str = "scattercarpet.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_textfont.py new file mode 100644 index 0000000..10dc095 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.selected" + _path_str = "scattercarpet.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_marker.py new file mode 100644 index 0000000..4873833 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.unselected" + _path_str = "scattercarpet.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_textfont.py new file mode 100644 index 0000000..02f1e9d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattercarpet/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattercarpet.unselected" + _path_str = "scattercarpet.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattercarpet. + unselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattercarpet.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattercarpet.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/__init__.py new file mode 100644 index 0000000..55ee707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_hoverlabel.py new file mode 100644 index 0000000..249bc9c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattergeo.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_legendgrouptitle.py new file mode 100644 index 0000000..ba86fda --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattergeo.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_line.py new file mode 100644 index 0000000..5151208 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_marker.py new file mode 100644 index 0000000..3db78be --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_marker.py @@ -0,0 +1,1106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.marker" + _valid_props = { + "angle", + "angleref", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "gradient", + "line", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "standoff", + "standoffsrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def angleref(self): + """ + 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. + + The 'angleref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['previous', 'up', 'north'] + + Returns + ------- + Any + """ + return self["angleref"] + + @angleref.setter + def angleref(self, val): + self["angleref"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattergeo.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def gradient(self): + """ + The 'gradient' property is an instance of Gradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.Gradient` + - A dict of string/value properties that will be passed + to the Gradient constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.Gradient + """ + return self["gradient"] + + @gradient.setter + def gradient(self, val): + self["gradient"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def standoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `standoff`. + + The 'standoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["standoffsrc"] + + @standoffsrc.setter + def standoffsrc(self, val): + self["standoffsrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattergeo.marker.ColorBar + ` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scattergeo.marker.Gradient + ` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scattergeo.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + angleref=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + gradient=None, + line=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + standoff=None, + standoffsrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Marker` + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattergeo.marker.ColorBar + ` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scattergeo.marker.Gradient + ` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scattergeo.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("angleref", arg, angleref) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("gradient", arg, gradient) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("standoff", arg, standoff) + self._set_property("standoffsrc", arg, standoffsrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_selected.py new file mode 100644 index 0000000..efa633a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattergeo.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattergeo.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattergeo.selected.Marker + ` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergeo.selected.Textfo + nt` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Selected` + marker + :class:`plotly.graph_objects.scattergeo.selected.Marker + ` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergeo.selected.Textfo + nt` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_stream.py new file mode 100644 index 0000000..18aea3e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_textfont.py new file mode 100644 index 0000000..8a56df5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_unselected.py new file mode 100644 index 0000000..0904ecc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo" + _path_str = "scattergeo.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattergeo.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattergeo.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattergeo.unselected.Mark + er` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergeo.unselected.Text + font` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.Unselected` + marker + :class:`plotly.graph_objects.scattergeo.unselected.Mark + er` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergeo.unselected.Text + font` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/_font.py new file mode 100644 index 0000000..730d1d4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.hoverlabel" + _path_str = "scattergeo.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py new file mode 100644 index 0000000..4dfd8a0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.legendgrouptitle" + _path_str = "scattergeo.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergeo.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/__init__.py new file mode 100644 index 0000000..6cfc468 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._gradient import Gradient + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._gradient.Gradient", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_colorbar.py new file mode 100644 index 0000000..6b0e321 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker" + _path_str = "scattergeo.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattergeo.mar + ker.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scattergeo.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattergeo.mark + er.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgeo.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergeo.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattergeo.marker.colorbar + .Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattergeo.mark + er.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgeo.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergeo.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattergeo.marker.colorbar + .Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_gradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_gradient.py new file mode 100644 index 0000000..abda79f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_gradient.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gradient(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker" + _path_str = "scattergeo.marker.gradient" + _valid_props = {"color", "colorsrc", "type", "typesrc"} + + @property + def color(self): + """ + Sets the final color of the gradient fill: the center color for + radial, the right for horizontal, or the bottom for vertical. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def type(self): + """ + Sets the type of gradient used to fill the markers + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def typesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `type`. + + The 'typesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["typesrc"] + + @typesrc.setter + def typesrc(self, val): + self["typesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, type=None, typesrc=None, **kwargs + ): + """ + Construct a new Gradient object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.marker.Gradient` + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + + Returns + ------- + Gradient + """ + super().__init__("gradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.Gradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.Gradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("type", arg, type) + self._set_property("typesrc", arg, typesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_line.py new file mode 100644 index 0000000..c721fcd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker" + _path_str = "scattergeo.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattergeo.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..81b1718 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker.colorbar" + _path_str = "scattergeo.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergeo.mar + ker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..af8aad9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker.colorbar" + _path_str = "scattergeo.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergeo.mar + ker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_title.py new file mode 100644 index 0000000..8ca1156 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker.colorbar" + _path_str = "scattergeo.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattergeo.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergeo.mar + ker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py new file mode 100644 index 0000000..ace978f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.marker.colorbar.title" + _path_str = "scattergeo.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergeo.mar + ker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_marker.py new file mode 100644 index 0000000..e3c2b9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.selected" + _path_str = "scattergeo.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_textfont.py new file mode 100644 index 0000000..d3fa7e8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.selected" + _path_str = "scattergeo.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_marker.py new file mode 100644 index 0000000..7249a60 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.unselected" + _path_str = "scattergeo.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergeo.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_textfont.py new file mode 100644 index 0000000..c076f08 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergeo/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergeo.unselected" + _path_str = "scattergeo.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergeo.uns + elected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergeo.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergeo.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/__init__.py new file mode 100644 index 0000000..f3ca4ee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/__init__.py @@ -0,0 +1,38 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._error_x import ErrorX + from ._error_y import ErrorY + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._error_x.ErrorX", + "._error_y.ErrorY", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_x.py new file mode 100644 index 0000000..b2efa2a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_x.py @@ -0,0 +1,503 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorX(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.error_x" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "copy_ystyle", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def copy_ystyle(self): + """ + The 'copy_ystyle' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["copy_ystyle"] + + @copy_ystyle.setter + def copy_ystyle(self, val): + self["copy_ystyle"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + copy_ystyle=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorX object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.ErrorX` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + copy_ystyle + + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorX + """ + super().__init__("error_x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.ErrorX +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.ErrorX`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("copy_ystyle", arg, copy_ystyle) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_y.py new file mode 100644 index 0000000..376febb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_error_y.py @@ -0,0 +1,480 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ErrorY(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.error_y" + _valid_props = { + "array", + "arrayminus", + "arrayminussrc", + "arraysrc", + "color", + "symmetric", + "thickness", + "traceref", + "tracerefminus", + "type", + "value", + "valueminus", + "visible", + "width", + } + + @property + def array(self): + """ + Sets the data corresponding the length of each error bar. + Values are plotted relative to the underlying data. + + The 'array' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["array"] + + @array.setter + def array(self, val): + self["array"] = val + + @property + def arrayminus(self): + """ + 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. + + The 'arrayminus' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["arrayminus"] + + @arrayminus.setter + def arrayminus(self, val): + self["arrayminus"] = val + + @property + def arrayminussrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + + The 'arrayminussrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arrayminussrc"] + + @arrayminussrc.setter + def arrayminussrc(self, val): + self["arrayminussrc"] = val + + @property + def arraysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `array`. + + The 'arraysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["arraysrc"] + + @arraysrc.setter + def arraysrc(self, val): + self["arraysrc"] = val + + @property + def color(self): + """ + Sets the stroke color of the error bars. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def symmetric(self): + """ + Determines whether or not the error bars have the same length + in both direction (top/bottom for vertical bars, left/right for + horizontal bars. + + The 'symmetric' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["symmetric"] + + @symmetric.setter + def symmetric(self, val): + self["symmetric"] = val + + @property + def thickness(self): + """ + Sets the thickness (in px) of the error bars. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def traceref(self): + """ + The 'traceref' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["traceref"] + + @traceref.setter + def traceref(self, val): + self["traceref"] = val + + @property + def tracerefminus(self): + """ + The 'tracerefminus' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["tracerefminus"] + + @tracerefminus.setter + def tracerefminus(self, val): + self["tracerefminus"] = val + + @property + def type(self): + """ + 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`. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['percent', 'constant', 'sqrt', 'data'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def value(self): + """ + 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. + + The 'value' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def valueminus(self): + """ + 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 + + The 'valueminus' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["valueminus"] + + @valueminus.setter + def valueminus(self, val): + self["valueminus"] = val + + @property + def visible(self): + """ + Determines whether or not this set of error bars is visible. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the width (in px) of the cross-bar at both ends of the + error bars. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + """ + + def __init__( + self, + arg=None, + array=None, + arrayminus=None, + arrayminussrc=None, + arraysrc=None, + color=None, + symmetric=None, + thickness=None, + traceref=None, + tracerefminus=None, + type=None, + value=None, + valueminus=None, + visible=None, + width=None, + **kwargs, + ): + """ + Construct a new ErrorY object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.ErrorY` + array + Sets the data corresponding the length of each error + bar. Values are plotted relative to the underlying + data. + arrayminus + 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. + arrayminussrc + Sets the source reference on Chart Studio Cloud for + `arrayminus`. + arraysrc + Sets the source reference on Chart Studio Cloud for + `array`. + color + Sets the stroke color of the error bars. + symmetric + Determines whether or not the error bars have the same + length in both direction (top/bottom for vertical bars, + left/right for horizontal bars. + thickness + Sets the thickness (in px) of the error bars. + traceref + + tracerefminus + + type + 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`. + value + 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. + valueminus + 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 + visible + Determines whether or not this set of error bars is + visible. + width + Sets the width (in px) of the cross-bar at both ends of + the error bars. + + Returns + ------- + ErrorY + """ + super().__init__("error_y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.ErrorY +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.ErrorY`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("array", arg, array) + self._set_property("arrayminus", arg, arrayminus) + self._set_property("arrayminussrc", arg, arrayminussrc) + self._set_property("arraysrc", arg, arraysrc) + self._set_property("color", arg, color) + self._set_property("symmetric", arg, symmetric) + self._set_property("thickness", arg, thickness) + self._set_property("traceref", arg, traceref) + self._set_property("tracerefminus", arg, tracerefminus) + self._set_property("type", arg, type) + self._set_property("value", arg, value) + self._set_property("valueminus", arg, valueminus) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_hoverlabel.py new file mode 100644 index 0000000..cdd1270 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattergl.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_legendgrouptitle.py new file mode 100644 index 0000000..ac54eda --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattergl.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_line.py new file mode 100644 index 0000000..12b641c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_line.py @@ -0,0 +1,158 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.line" + _valid_props = {"color", "dash", "shape", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + Sets the style of the lines. + + The 'dash' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['dash', 'dashdot', 'dot', 'longdash', 'longdashdot', + 'solid'] + + Returns + ------- + Any + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def shape(self): + """ + Determines the line shape. The values correspond to step-wise + line shapes. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'hv', 'vh', 'hvh', 'vhv'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + Sets the style of the lines. + shape + Determines the line shape. The values correspond to + step-wise line shapes. + width + Sets the line width (in px). + """ + + def __init__( + self, arg=None, color=None, dash=None, shape=None, width=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Line` + color + Sets the line color. + dash + Sets the style of the lines. + shape + Determines the line shape. The values correspond to + step-wise line shapes. + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("shape", arg, shape) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_marker.py new file mode 100644 index 0000000..c26e398 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_marker.py @@ -0,0 +1,978 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.marker" + _valid_props = { + "angle", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "line", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattergl.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scattergl.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattergl.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattergl.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.scattergl.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + line=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Marker` + angle + Sets the marker angle in respect to `angleref`. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattergl.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.scattergl.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_selected.py new file mode 100644 index 0000000..1271ced --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattergl.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattergl.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattergl.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergl.selected.Textfon + t` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Selected` + marker + :class:`plotly.graph_objects.scattergl.selected.Marker` + instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergl.selected.Textfon + t` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_stream.py new file mode 100644 index 0000000..108cc9b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_textfont.py new file mode 100644 index 0000000..ccc8e03 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_textfont.py @@ -0,0 +1,399 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "size", + "sizesrc", + "style", + "stylesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'bold'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_unselected.py new file mode 100644 index 0000000..7c2cd4b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scattergl" + _path_str = "scattergl.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattergl.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattergl.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattergl.unselected.Marke + r` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergl.unselected.Textf + ont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.Unselected` + marker + :class:`plotly.graph_objects.scattergl.unselected.Marke + r` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattergl.unselected.Textf + ont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/_font.py new file mode 100644 index 0000000..9481a51 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.hoverlabel" + _path_str = "scattergl.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/_font.py new file mode 100644 index 0000000..fa358d7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.legendgrouptitle" + _path_str = "scattergl.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergl.lege + ndgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/__init__.py new file mode 100644 index 0000000..e0fbf0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_colorbar.py new file mode 100644 index 0000000..6cb0422 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.marker" + _path_str = "scattergl.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scattergl.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattergl.mark + er.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scattergl.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scattergl.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattergl.marke + r.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgl.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergl.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattergl.marker.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattergl.marke + r.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rgl.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattergl.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattergl.marker.colorbar. + Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_line.py new file mode 100644 index 0000000..70e9960 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.marker" + _path_str = "scattergl.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattergl.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..c4aaded --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.marker.colorbar" + _path_str = "scattergl.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergl.mark + er.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..c621d4a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.marker.colorbar" + _path_str = "scattergl.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergl.mark + er.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_title.py new file mode 100644 index 0000000..48a0384 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.marker.colorbar" + _path_str = "scattergl.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattergl.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergl.mark + er.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py new file mode 100644 index 0000000..359d09e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.marker.colorbar.title" + _path_str = "scattergl.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergl.mark + er.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_marker.py new file mode 100644 index 0000000..dbad7a5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.selected" + _path_str = "scattergl.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_textfont.py new file mode 100644 index 0000000..a37e6d9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.selected" + _path_str = "scattergl.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_marker.py new file mode 100644 index 0000000..0d9f1cc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.unselected" + _path_str = "scattergl.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattergl.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_textfont.py new file mode 100644 index 0000000..73d64c9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattergl/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattergl.unselected" + _path_str = "scattergl.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattergl.unse + lected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattergl.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattergl.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/__init__.py new file mode 100644 index 0000000..aaeb5c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/__init__.py @@ -0,0 +1,36 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._cluster import Cluster + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._cluster.Cluster", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_cluster.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_cluster.py new file mode 100644 index 0000000..06e8863 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_cluster.py @@ -0,0 +1,342 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Cluster(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.cluster" + _valid_props = { + "color", + "colorsrc", + "enabled", + "maxzoom", + "opacity", + "opacitysrc", + "size", + "sizesrc", + "step", + "stepsrc", + } + + @property + def color(self): + """ + Sets the color for each cluster step. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def enabled(self): + """ + Determines whether clustering is enabled or disabled. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def maxzoom(self): + """ + Sets the maximum zoom level. At zoom levels equal to or greater + than this, points will never be clustered. + + The 'maxzoom' property is a number and may be specified as: + - An int or float in the interval [0, 24] + + Returns + ------- + int|float + """ + return self["maxzoom"] + + @maxzoom.setter + def maxzoom(self, val): + self["maxzoom"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def size(self): + """ + Sets the size for each cluster step. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def step(self): + """ + 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. + + The 'step' property is a number and may be specified as: + - An int or float in the interval [-1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["step"] + + @step.setter + def step(self, val): + self["step"] = val + + @property + def stepsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `step`. + + The 'stepsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stepsrc"] + + @stepsrc.setter + def stepsrc(self, val): + self["stepsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color for each cluster step. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + enabled + Determines whether clustering is enabled or disabled. + maxzoom + Sets the maximum zoom level. At zoom levels equal to or + greater than this, points will never be clustered. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + size + Sets the size for each cluster step. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + step + 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. + stepsrc + Sets the source reference on Chart Studio Cloud for + `step`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + enabled=None, + maxzoom=None, + opacity=None, + opacitysrc=None, + size=None, + sizesrc=None, + step=None, + stepsrc=None, + **kwargs, + ): + """ + Construct a new Cluster object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Cluster` + color + Sets the color for each cluster step. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + enabled + Determines whether clustering is enabled or disabled. + maxzoom + Sets the maximum zoom level. At zoom levels equal to or + greater than this, points will never be clustered. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + size + Sets the size for each cluster step. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + step + 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. + stepsrc + Sets the source reference on Chart Studio Cloud for + `step`. + + Returns + ------- + Cluster + """ + super().__init__("cluster") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Cluster +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Cluster`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("enabled", arg, enabled) + self._set_property("maxzoom", arg, maxzoom) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("step", arg, step) + self._set_property("stepsrc", arg, stepsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_hoverlabel.py new file mode 100644 index 0000000..7e63cfb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattermap.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_legendgrouptitle.py new file mode 100644 index 0000000..0dee4c5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattermap.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_line.py new file mode 100644 index 0000000..6d07e8b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Line` + color + Sets the line color. + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_marker.py new file mode 100644 index 0000000..a5612a3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_marker.py @@ -0,0 +1,892 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.marker" + _valid_props = { + "allowoverlap", + "angle", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "symbol", + "symbolsrc", + } + + @property + def allowoverlap(self): + """ + Flag to draw all symbols, even if they overlap. + + The 'allowoverlap' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["allowoverlap"] + + @allowoverlap.setter + def allowoverlap(self, val): + self["allowoverlap"] = val + + @property + def angle(self): + """ + 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. + + The 'angle' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattermap.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scattermap.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def symbol(self): + """ + Sets the marker symbol. Full list: https://www.map.com/maki- + icons/ Note that the array `marker.color` and `marker.size` are + only available for "circle" symbols. + + The 'symbol' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + allowoverlap + Flag to draw all symbols, even if they overlap. + angle + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattermap.marker.ColorBar + ` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + Sets the marker symbol. Full list: + https://www.map.com/maki-icons/ Note that the array + `marker.color` and `marker.size` are only available for + "circle" symbols. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + allowoverlap=None, + angle=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Marker` + allowoverlap + Flag to draw all symbols, even if they overlap. + angle + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattermap.marker.ColorBar + ` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + Sets the marker symbol. Full list: + https://www.map.com/maki-icons/ Note that the array + `marker.color` and `marker.size` are only available for + "circle" symbols. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("allowoverlap", arg, allowoverlap) + self._set_property("angle", arg, angle) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_selected.py new file mode 100644 index 0000000..fc36d37 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattermap.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattermap.selected.Marker + ` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Selected` + marker + :class:`plotly.graph_objects.scattermap.selected.Marker + ` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_stream.py new file mode 100644 index 0000000..cb82bb8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_textfont.py new file mode 100644 index 0000000..fda40ac --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_textfont.py @@ -0,0 +1,202 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.textfont" + _valid_props = {"color", "family", "size", "style", "weight"} + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + size=None, + style=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + 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". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Textfont` + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_unselected.py new file mode 100644 index 0000000..6911361 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scattermap" + _path_str = "scattermap.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattermap.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattermap.unselected.Mark + er` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.Unselected` + marker + :class:`plotly.graph_objects.scattermap.unselected.Mark + er` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/_font.py new file mode 100644 index 0000000..a6fe495 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.hoverlabel" + _path_str = "scattermap.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/_font.py new file mode 100644 index 0000000..ea1fc04 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.legendgrouptitle" + _path_str = "scattermap.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermap.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/__init__.py new file mode 100644 index 0000000..5e06f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/_colorbar.py new file mode 100644 index 0000000..77f929e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.marker" + _path_str = "scattermap.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scattermap.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scattermap.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scattermap.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattermap.mar + ker.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + scattermap.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scattermap.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scattermap.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattermap.mark + er.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rmap.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattermap.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattermap.marker.colorbar + .Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattermap.mark + er.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rmap.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + scattermap.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattermap.marker.colorbar + .Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..77304fc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.marker.colorbar" + _path_str = "scattermap.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermap.mar + ker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..9185e88 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.marker.colorbar" + _path_str = "scattermap.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermap.mar + ker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_title.py new file mode 100644 index 0000000..3fd7257 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.marker.colorbar" + _path_str = "scattermap.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattermap.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermap.mar + ker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py new file mode 100644 index 0000000..5fbf794 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.marker.colorbar.title" + _path_str = "scattermap.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermap.mar + ker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/_marker.py new file mode 100644 index 0000000..f7df731 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.selected" + _path_str = "scattermap.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/_marker.py new file mode 100644 index 0000000..b85c1a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermap/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattermap.unselected" + _path_str = "scattermap.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermap.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermap.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermap.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/__init__.py new file mode 100644 index 0000000..aaeb5c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/__init__.py @@ -0,0 +1,36 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._cluster import Cluster + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._cluster.Cluster", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_cluster.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_cluster.py new file mode 100644 index 0000000..c064caf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_cluster.py @@ -0,0 +1,342 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Cluster(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.cluster" + _valid_props = { + "color", + "colorsrc", + "enabled", + "maxzoom", + "opacity", + "opacitysrc", + "size", + "sizesrc", + "step", + "stepsrc", + } + + @property + def color(self): + """ + Sets the color for each cluster step. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def enabled(self): + """ + Determines whether clustering is enabled or disabled. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def maxzoom(self): + """ + Sets the maximum zoom level. At zoom levels equal to or greater + than this, points will never be clustered. + + The 'maxzoom' property is a number and may be specified as: + - An int or float in the interval [0, 24] + + Returns + ------- + int|float + """ + return self["maxzoom"] + + @maxzoom.setter + def maxzoom(self, val): + self["maxzoom"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def size(self): + """ + Sets the size for each cluster step. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def step(self): + """ + 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. + + The 'step' property is a number and may be specified as: + - An int or float in the interval [-1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["step"] + + @step.setter + def step(self, val): + self["step"] = val + + @property + def stepsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `step`. + + The 'stepsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stepsrc"] + + @stepsrc.setter + def stepsrc(self, val): + self["stepsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color for each cluster step. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + enabled + Determines whether clustering is enabled or disabled. + maxzoom + Sets the maximum zoom level. At zoom levels equal to or + greater than this, points will never be clustered. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + size + Sets the size for each cluster step. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + step + 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. + stepsrc + Sets the source reference on Chart Studio Cloud for + `step`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + enabled=None, + maxzoom=None, + opacity=None, + opacitysrc=None, + size=None, + sizesrc=None, + step=None, + stepsrc=None, + **kwargs, + ): + """ + Construct a new Cluster object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Cluster` + color + Sets the color for each cluster step. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + enabled + Determines whether clustering is enabled or disabled. + maxzoom + Sets the maximum zoom level. At zoom levels equal to or + greater than this, points will never be clustered. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + size + Sets the size for each cluster step. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + step + 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. + stepsrc + Sets the source reference on Chart Studio Cloud for + `step`. + + Returns + ------- + Cluster + """ + super().__init__("cluster") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Cluster +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Cluster`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("enabled", arg, enabled) + self._set_property("maxzoom", arg, maxzoom) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("step", arg, step) + self._set_property("stepsrc", arg, stepsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_hoverlabel.py new file mode 100644 index 0000000..424c960 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_legendgrouptitle.py new file mode 100644 index 0000000..754d1be --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_line.py new file mode 100644 index 0000000..16aa69c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Line` + color + Sets the line color. + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_marker.py new file mode 100644 index 0000000..00c348d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_marker.py @@ -0,0 +1,892 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.marker" + _valid_props = { + "allowoverlap", + "angle", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "symbol", + "symbolsrc", + } + + @property + def allowoverlap(self): + """ + Flag to draw all symbols, even if they overlap. + + The 'allowoverlap' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["allowoverlap"] + + @allowoverlap.setter + def allowoverlap(self, val): + self["allowoverlap"] = val + + @property + def angle(self): + """ + 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. + + The 'angle' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattermapbox.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + allowoverlap + Flag to draw all symbols, even if they overlap. + angle + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattermapbox.marker.Color + Bar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + allowoverlap=None, + angle=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Marker` + allowoverlap + Flag to draw all symbols, even if they overlap. + angle + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattermapbox.marker.Color + Bar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("allowoverlap", arg, allowoverlap) + self._set_property("angle", arg, angle) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_selected.py new file mode 100644 index 0000000..e2f9603 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattermapbox.selected.Mar + ker` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Selected` + marker + :class:`plotly.graph_objects.scattermapbox.selected.Mar + ker` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_stream.py new file mode 100644 index 0000000..d28443d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_textfont.py new file mode 100644 index 0000000..7e99b01 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_textfont.py @@ -0,0 +1,202 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.textfont" + _valid_props = {"color", "family", "size", "style", "weight"} + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + size=None, + style=None, + weight=None, + **kwargs, + ): + """ + Construct a new Textfont object + + 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". + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Textfont` + color + + family + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_unselected.py new file mode 100644 index 0000000..4d67064 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox" + _path_str = "scattermapbox.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattermapbox.unselected.M + arker` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattermapbox.Unselected` + marker + :class:`plotly.graph_objects.scattermapbox.unselected.M + arker` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/_font.py new file mode 100644 index 0000000..c62d8e2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.hoverlabel" + _path_str = "scattermapbox.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py new file mode 100644 index 0000000..344b825 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.legendgrouptitle" + _path_str = "scattermapbox.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/__init__.py new file mode 100644 index 0000000..5e06f9a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/_colorbar.py new file mode 100644 index 0000000..5203418 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.marker" + _path_str = "scattermapbox.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattermapbox. + marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scattermapbox.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattermapbox.m + arker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rmapbox.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattermapbox.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattermapbox.marker.color + bar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattermapbox.m + arker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rmapbox.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattermapbox.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattermapbox.marker.color + bar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..98b197c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.marker.colorbar" + _path_str = "scattermapbox.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + marker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..e41d613 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.marker.colorbar" + _path_str = "scattermapbox.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + marker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py new file mode 100644 index 0000000..d3846ce --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.marker.colorbar" + _path_str = "scattermapbox.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattermapbox.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py new file mode 100644 index 0000000..c287c6e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.marker.colorbar.title" + _path_str = "scattermapbox.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + marker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/_marker.py new file mode 100644 index 0000000..14bd5d4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.selected" + _path_str = "scattermapbox.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/_marker.py new file mode 100644 index 0000000..2bbe8a6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattermapbox/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattermapbox.unselected" + _path_str = "scattermapbox.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattermapbox. + unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattermapbox.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattermapbox.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/__init__.py new file mode 100644 index 0000000..55ee707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_hoverlabel.py new file mode 100644 index 0000000..81f0a31 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_legendgrouptitle.py new file mode 100644 index 0000000..a4da5c4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.L + egendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_line.py new file mode 100644 index 0000000..ae3d3f2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_line.py @@ -0,0 +1,277 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.line" + _valid_props = { + "backoff", + "backoffsrc", + "color", + "dash", + "shape", + "smoothing", + "width", + } + + @property + def backoff(self): + """ + 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". + + The 'backoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["backoff"] + + @backoff.setter + def backoff(self, val): + self["backoff"] = val + + @property + def backoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `backoff`. + + The 'backoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["backoffsrc"] + + @backoffsrc.setter + def backoffsrc(self, val): + self["backoffsrc"] = val + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def shape(self): + """ + Determines the line shape. With "spline" the lines are drawn + using spline interpolation. The other available values + correspond to step-wise line shapes. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'spline'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def smoothing(self): + """ + 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). + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + """ + + def __init__( + self, + arg=None, + backoff=None, + backoffsrc=None, + color=None, + dash=None, + shape=None, + smoothing=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Line` + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("backoff", arg, backoff) + self._set_property("backoffsrc", arg, backoffsrc) + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("shape", arg, shape) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_marker.py new file mode 100644 index 0000000..377e839 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_marker.py @@ -0,0 +1,1130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.marker" + _valid_props = { + "angle", + "angleref", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "gradient", + "line", + "maxdisplayed", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "standoff", + "standoffsrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def angleref(self): + """ + 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. + + The 'angleref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['previous', 'up'] + + Returns + ------- + Any + """ + return self["angleref"] + + @angleref.setter + def angleref(self, val): + self["angleref"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatterpolar.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def gradient(self): + """ + The 'gradient' property is an instance of Gradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.Gradient` + - A dict of string/value properties that will be passed + to the Gradient constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.Gradient + """ + return self["gradient"] + + @gradient.setter + def gradient(self, val): + self["gradient"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxdisplayed(self): + """ + Sets a maximum number of points to be drawn on the graph. 0 + corresponds to no limit. + + The 'maxdisplayed' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["maxdisplayed"] + + @maxdisplayed.setter + def maxdisplayed(self, val): + self["maxdisplayed"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def standoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `standoff`. + + The 'standoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["standoffsrc"] + + @standoffsrc.setter + def standoffsrc(self, val): + self["standoffsrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatterpolar.marker.ColorB + ar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scatterpolar.marker.Gradie + nt` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scatterpolar.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + angleref=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + gradient=None, + line=None, + maxdisplayed=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + standoff=None, + standoffsrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Marker` + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatterpolar.marker.ColorB + ar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scatterpolar.marker.Gradie + nt` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scatterpolar.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("angleref", arg, angleref) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("gradient", arg, gradient) + self._set_property("line", arg, line) + self._set_property("maxdisplayed", arg, maxdisplayed) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("standoff", arg, standoff) + self._set_property("standoffsrc", arg, standoffsrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_selected.py new file mode 100644 index 0000000..09902d4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatterpolar.selected.Mark + er` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolar.selected.Text + font` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Selected` + marker + :class:`plotly.graph_objects.scatterpolar.selected.Mark + er` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolar.selected.Text + font` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_stream.py new file mode 100644 index 0000000..094bc94 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_textfont.py new file mode 100644 index 0000000..7e28749 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_unselected.py new file mode 100644 index 0000000..1b9fd77 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar" + _path_str = "scatterpolar.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatterpolar.unselected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolar.unselected.Te + xtfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.Unselected` + marker + :class:`plotly.graph_objects.scatterpolar.unselected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolar.unselected.Te + xtfont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/_font.py new file mode 100644 index 0000000..d178804 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.hoverlabel" + _path_str = "scatterpolar.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py new file mode 100644 index 0000000..f64a5f7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.legendgrouptitle" + _path_str = "scatterpolar.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.l + egendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/__init__.py new file mode 100644 index 0000000..6cfc468 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._gradient import Gradient + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._gradient.Gradient", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_colorbar.py new file mode 100644 index 0000000..08cb618 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker" + _path_str = "scatterpolar.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatterpolar.m + arker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scatterpolar.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatterpolar.ma + rker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolar.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolar.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatterpolar.marker.colorb + ar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatterpolar.ma + rker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolar.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolar.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatterpolar.marker.colorb + ar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_gradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_gradient.py new file mode 100644 index 0000000..2688228 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_gradient.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gradient(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker" + _path_str = "scatterpolar.marker.gradient" + _valid_props = {"color", "colorsrc", "type", "typesrc"} + + @property + def color(self): + """ + Sets the final color of the gradient fill: the center color for + radial, the right for horizontal, or the bottom for vertical. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def type(self): + """ + Sets the type of gradient used to fill the markers + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def typesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `type`. + + The 'typesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["typesrc"] + + @typesrc.setter + def typesrc(self, val): + self["typesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, type=None, typesrc=None, **kwargs + ): + """ + Construct a new Gradient object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.marker.Gradient` + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + + Returns + ------- + Gradient + """ + super().__init__("gradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.Gradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.Gradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("type", arg, type) + self._set_property("typesrc", arg, typesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_line.py new file mode 100644 index 0000000..a3a941e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker" + _path_str = "scatterpolar.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatterpolar.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..6933852 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker.colorbar" + _path_str = "scatterpolar.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.m + arker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..730bf53 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker.colorbar" + _path_str = "scatterpolar.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.m + arker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py new file mode 100644 index 0000000..84d0132 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker.colorbar" + _path_str = "scatterpolar.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterpolar.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.m + arker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py new file mode 100644 index 0000000..3768be6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.marker.colorbar.title" + _path_str = "scatterpolar.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.m + arker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_marker.py new file mode 100644 index 0000000..ae28c0b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.selected" + _path_str = "scatterpolar.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolar.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_textfont.py new file mode 100644 index 0000000..c1cad86 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.selected" + _path_str = "scatterpolar.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.s + elected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_marker.py new file mode 100644 index 0000000..aa06db1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.unselected" + _path_str = "scatterpolar.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.u + nselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_textfont.py new file mode 100644 index 0000000..bd19b9b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolar/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolar.unselected" + _path_str = "scatterpolar.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolar.u + nselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolar.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolar.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/__init__.py new file mode 100644 index 0000000..55ee707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_hoverlabel.py new file mode 100644 index 0000000..9d33d8e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py new file mode 100644 index 0000000..6ff24db --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_line.py new file mode 100644 index 0000000..8fee4fa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_line.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + Sets the style of the lines. + + The 'dash' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['dash', 'dashdot', 'dot', 'longdash', 'longdashdot', + 'solid'] + + Returns + ------- + Any + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + Sets the style of the lines. + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Line` + color + Sets the line color. + dash + Sets the style of the lines. + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_marker.py new file mode 100644 index 0000000..616c489 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_marker.py @@ -0,0 +1,978 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.marker" + _valid_props = { + "angle", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "line", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatterpolargl.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatterpolargl.marker.Colo + rBar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.scatterpolargl.marker.Line + ` instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + line=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Marker` + angle + Sets the marker angle in respect to `angleref`. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatterpolargl.marker.Colo + rBar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.scatterpolargl.marker.Line + ` instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_selected.py new file mode 100644 index 0000000..b5e95a3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatterpolargl.selected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolargl.selected.Te + xtfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Selected` + marker + :class:`plotly.graph_objects.scatterpolargl.selected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolargl.selected.Te + xtfont` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_stream.py new file mode 100644 index 0000000..8b01198 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_textfont.py new file mode 100644 index 0000000..93fd42e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_textfont.py @@ -0,0 +1,399 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "size", + "sizesrc", + "style", + "stylesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'bold'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_unselected.py new file mode 100644 index 0000000..319c3b7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl" + _path_str = "scatterpolargl.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatterpolargl.unselected. + Marker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolargl.unselected. + Textfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.Unselected` + marker + :class:`plotly.graph_objects.scatterpolargl.unselected. + Marker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterpolargl.unselected. + Textfont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py new file mode 100644 index 0000000..d55cff8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.hoverlabel" + _path_str = "scatterpolargl.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py new file mode 100644 index 0000000..2f256fe --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.legendgrouptitle" + _path_str = "scatterpolargl.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/__init__.py new file mode 100644 index 0000000..e0fbf0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_colorbar.py new file mode 100644 index 0000000..ac11006 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.marker" + _path_str = "scatterpolargl.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatterpolargl + .marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scatterpolargl.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatterpolargl. + marker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolargl.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolargl.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatterpolargl.marker.colo + rbar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatterpolargl. + marker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rpolargl.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterpolargl.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatterpolargl.marker.colo + rbar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_line.py new file mode 100644 index 0000000..9f480f9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.marker" + _path_str = "scatterpolargl.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatterpolargl.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterpolargl.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..713228d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.marker.colorbar" + _path_str = "scatterpolargl.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .marker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..d30c15b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.marker.colorbar" + _path_str = "scatterpolargl.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .marker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py new file mode 100644 index 0000000..808e58b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.marker.colorbar" + _path_str = "scatterpolargl.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterpolargl.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py new file mode 100644 index 0000000..555ee29 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.marker.colorbar.title" + _path_str = "scatterpolargl.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .marker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_marker.py new file mode 100644 index 0000000..9403086 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.selected" + _path_str = "scatterpolargl.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_textfont.py new file mode 100644 index 0000000..e62601f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.selected" + _path_str = "scatterpolargl.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_marker.py new file mode 100644 index 0000000..993de30 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.unselected" + _path_str = "scatterpolargl.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_textfont.py new file mode 100644 index 0000000..ce3650d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterpolargl/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterpolargl.unselected" + _path_str = "scatterpolargl.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterpolargl + .unselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterpolargl.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterpolargl.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/__init__.py new file mode 100644 index 0000000..55ee707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_hoverlabel.py new file mode 100644 index 0000000..6d7ab19 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattersmith.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_legendgrouptitle.py new file mode 100644 index 0000000..9dbdd04 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattersmith.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.L + egendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_line.py new file mode 100644 index 0000000..4c7aa71 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_line.py @@ -0,0 +1,277 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.line" + _valid_props = { + "backoff", + "backoffsrc", + "color", + "dash", + "shape", + "smoothing", + "width", + } + + @property + def backoff(self): + """ + 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". + + The 'backoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["backoff"] + + @backoff.setter + def backoff(self, val): + self["backoff"] = val + + @property + def backoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `backoff`. + + The 'backoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["backoffsrc"] + + @backoffsrc.setter + def backoffsrc(self, val): + self["backoffsrc"] = val + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def shape(self): + """ + Determines the line shape. With "spline" the lines are drawn + using spline interpolation. The other available values + correspond to step-wise line shapes. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'spline'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def smoothing(self): + """ + 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). + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + """ + + def __init__( + self, + arg=None, + backoff=None, + backoffsrc=None, + color=None, + dash=None, + shape=None, + smoothing=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Line` + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("backoff", arg, backoff) + self._set_property("backoffsrc", arg, backoffsrc) + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("shape", arg, shape) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_marker.py new file mode 100644 index 0000000..4b5dfcf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_marker.py @@ -0,0 +1,1130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.marker" + _valid_props = { + "angle", + "angleref", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "gradient", + "line", + "maxdisplayed", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "standoff", + "standoffsrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def angleref(self): + """ + 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. + + The 'angleref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['previous', 'up'] + + Returns + ------- + Any + """ + return self["angleref"] + + @angleref.setter + def angleref(self, val): + self["angleref"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattersmith.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def gradient(self): + """ + The 'gradient' property is an instance of Gradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.Gradient` + - A dict of string/value properties that will be passed + to the Gradient constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.Gradient + """ + return self["gradient"] + + @gradient.setter + def gradient(self, val): + self["gradient"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxdisplayed(self): + """ + Sets a maximum number of points to be drawn on the graph. 0 + corresponds to no limit. + + The 'maxdisplayed' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["maxdisplayed"] + + @maxdisplayed.setter + def maxdisplayed(self, val): + self["maxdisplayed"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def standoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `standoff`. + + The 'standoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["standoffsrc"] + + @standoffsrc.setter + def standoffsrc(self, val): + self["standoffsrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattersmith.marker.ColorB + ar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scattersmith.marker.Gradie + nt` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scattersmith.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + angleref=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + gradient=None, + line=None, + maxdisplayed=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + standoff=None, + standoffsrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Marker` + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scattersmith.marker.ColorB + ar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scattersmith.marker.Gradie + nt` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scattersmith.marker.Line` + instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("angleref", arg, angleref) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("gradient", arg, gradient) + self._set_property("line", arg, line) + self._set_property("maxdisplayed", arg, maxdisplayed) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("standoff", arg, standoff) + self._set_property("standoffsrc", arg, standoffsrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_selected.py new file mode 100644 index 0000000..a4c23ba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattersmith.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattersmith.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattersmith.selected.Mark + er` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattersmith.selected.Text + font` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Selected` + marker + :class:`plotly.graph_objects.scattersmith.selected.Mark + er` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattersmith.selected.Text + font` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_stream.py new file mode 100644 index 0000000..184e762 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_textfont.py new file mode 100644 index 0000000..cbc481a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_unselected.py new file mode 100644 index 0000000..8886fdb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith" + _path_str = "scattersmith.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scattersmith.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scattersmith.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scattersmith.unselected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattersmith.unselected.Te + xtfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.Unselected` + marker + :class:`plotly.graph_objects.scattersmith.unselected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scattersmith.unselected.Te + xtfont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/_font.py new file mode 100644 index 0000000..a342e77 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.hoverlabel" + _path_str = "scattersmith.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py new file mode 100644 index 0000000..1341c3b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.legendgrouptitle" + _path_str = "scattersmith.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.l + egendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/__init__.py new file mode 100644 index 0000000..6cfc468 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._gradient import Gradient + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._gradient.Gradient", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_colorbar.py new file mode 100644 index 0000000..c99af1e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker" + _path_str = "scattersmith.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scattersmith.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scattersmith.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scattersmith.m + arker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scattersmith.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattersmith.ma + rker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rsmith.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattersmith.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattersmith.marker.colorb + ar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scattersmith.ma + rker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rsmith.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scattersmith.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scattersmith.marker.colorb + ar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_gradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_gradient.py new file mode 100644 index 0000000..32e158b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_gradient.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gradient(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker" + _path_str = "scattersmith.marker.gradient" + _valid_props = {"color", "colorsrc", "type", "typesrc"} + + @property + def color(self): + """ + Sets the final color of the gradient fill: the center color for + radial, the right for horizontal, or the bottom for vertical. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def type(self): + """ + Sets the type of gradient used to fill the markers + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def typesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `type`. + + The 'typesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["typesrc"] + + @typesrc.setter + def typesrc(self, val): + self["typesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, type=None, typesrc=None, **kwargs + ): + """ + Construct a new Gradient object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.marker.Gradient` + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + + Returns + ------- + Gradient + """ + super().__init__("gradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.Gradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.Gradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("type", arg, type) + self._set_property("typesrc", arg, typesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_line.py new file mode 100644 index 0000000..e12c8fc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker" + _path_str = "scattersmith.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scattersmith.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..47e244a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker.colorbar" + _path_str = "scattersmith.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.m + arker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..6fcd9e5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker.colorbar" + _path_str = "scattersmith.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.m + arker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_title.py new file mode 100644 index 0000000..61f1a36 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker.colorbar" + _path_str = "scattersmith.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scattersmith.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.m + arker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py new file mode 100644 index 0000000..2853b19 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.marker.colorbar.title" + _path_str = "scattersmith.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.m + arker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_marker.py new file mode 100644 index 0000000..7c441e4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.selected" + _path_str = "scattersmith.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scattersmith.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_textfont.py new file mode 100644 index 0000000..8958154 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.selected" + _path_str = "scattersmith.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.s + elected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_marker.py new file mode 100644 index 0000000..dbacc8f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.unselected" + _path_str = "scattersmith.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.u + nselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_textfont.py new file mode 100644 index 0000000..1118734 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scattersmith/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scattersmith.unselected" + _path_str = "scattersmith.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scattersmith.u + nselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scattersmith.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scattersmith.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/__init__.py new file mode 100644 index 0000000..55ee707 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/__init__.py @@ -0,0 +1,34 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._textfont import Textfont + from ._unselected import Unselected + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".selected", ".unselected"], + [ + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._textfont.Textfont", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_hoverlabel.py new file mode 100644 index 0000000..6f49de4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterternary.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_legendgrouptitle.py new file mode 100644 index 0000000..6d8fe3b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterternary.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_line.py new file mode 100644 index 0000000..015e097 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_line.py @@ -0,0 +1,277 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.line" + _valid_props = { + "backoff", + "backoffsrc", + "color", + "dash", + "shape", + "smoothing", + "width", + } + + @property + def backoff(self): + """ + 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". + + The 'backoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["backoff"] + + @backoff.setter + def backoff(self, val): + self["backoff"] = val + + @property + def backoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `backoff`. + + The 'backoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["backoffsrc"] + + @backoffsrc.setter + def backoffsrc(self, val): + self["backoffsrc"] = val + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def shape(self): + """ + Determines the line shape. With "spline" the lines are drawn + using spline interpolation. The other available values + correspond to step-wise line shapes. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'spline'] + + Returns + ------- + Any + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def smoothing(self): + """ + 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). + + The 'smoothing' property is a number and may be specified as: + - An int or float in the interval [0, 1.3] + + Returns + ------- + int|float + """ + return self["smoothing"] + + @smoothing.setter + def smoothing(self, val): + self["smoothing"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + """ + + def __init__( + self, + arg=None, + backoff=None, + backoffsrc=None, + color=None, + dash=None, + shape=None, + smoothing=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Line` + backoff + 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". + backoffsrc + Sets the source reference on Chart Studio Cloud for + `backoff`. + color + Sets the line color. + dash + 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"). + shape + Determines the line shape. With "spline" the lines are + drawn using spline interpolation. The other available + values correspond to step-wise line shapes. + smoothing + 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). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("backoff", arg, backoff) + self._set_property("backoffsrc", arg, backoffsrc) + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("shape", arg, shape) + self._set_property("smoothing", arg, smoothing) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_marker.py new file mode 100644 index 0000000..defc23e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_marker.py @@ -0,0 +1,1130 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.marker" + _valid_props = { + "angle", + "angleref", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "gradient", + "line", + "maxdisplayed", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "standoff", + "standoffsrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def angleref(self): + """ + 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. + + The 'angleref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['previous', 'up'] + + Returns + ------- + Any + """ + return self["angleref"] + + @angleref.setter + def angleref(self, val): + self["angleref"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatterternary.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def gradient(self): + """ + The 'gradient' property is an instance of Gradient + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.Gradient` + - A dict of string/value properties that will be passed + to the Gradient constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.Gradient + """ + return self["gradient"] + + @gradient.setter + def gradient(self, val): + self["gradient"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def maxdisplayed(self): + """ + Sets a maximum number of points to be drawn on the graph. 0 + corresponds to no limit. + + The 'maxdisplayed' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["maxdisplayed"] + + @maxdisplayed.setter + def maxdisplayed(self, val): + self["maxdisplayed"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def standoff(self): + """ + 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. + + The 'standoff' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["standoff"] + + @standoff.setter + def standoff(self, val): + self["standoff"] = val + + @property + def standoffsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `standoff`. + + The 'standoffsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["standoffsrc"] + + @standoffsrc.setter + def standoffsrc(self, val): + self["standoffsrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatterternary.marker.Colo + rBar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scatterternary.marker.Grad + ient` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scatterternary.marker.Line + ` instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + angleref=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + gradient=None, + line=None, + maxdisplayed=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + standoff=None, + standoffsrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Marker` + angle + Sets the marker angle in respect to `angleref`. + angleref + 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. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.scatterternary.marker.Colo + rBar` instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + gradient + :class:`plotly.graph_objects.scatterternary.marker.Grad + ient` instance or dict with compatible properties + line + :class:`plotly.graph_objects.scatterternary.marker.Line + ` instance or dict with compatible properties + maxdisplayed + Sets a maximum number of points to be drawn on the + graph. 0 corresponds to no limit. + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + standoff + 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. + standoffsrc + Sets the source reference on Chart Studio Cloud for + `standoff`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("angleref", arg, angleref) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("gradient", arg, gradient) + self._set_property("line", arg, line) + self._set_property("maxdisplayed", arg, maxdisplayed) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("standoff", arg, standoff) + self._set_property("standoffsrc", arg, standoffsrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_selected.py new file mode 100644 index 0000000..9259834 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_selected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.selected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterternary.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.selected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterternary.selected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatterternary.selected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterternary.selected.Te + xtfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Selected` + marker + :class:`plotly.graph_objects.scatterternary.selected.Ma + rker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterternary.selected.Te + xtfont` instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_stream.py new file mode 100644 index 0000000..54c0e1e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_textfont.py new file mode 100644 index 0000000..6a41c48 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the text font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_unselected.py new file mode 100644 index 0000000..f02bb39 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/_unselected.py @@ -0,0 +1,106 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary" + _path_str = "scatterternary.unselected" + _valid_props = {"marker", "textfont"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.scatterternary.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def textfont(self): + """ + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.unselected.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.scatterternary.unselected.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.scatterternary.unselected. + Marker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterternary.unselected. + Textfont` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, textfont=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.Unselected` + marker + :class:`plotly.graph_objects.scatterternary.unselected. + Marker` instance or dict with compatible properties + textfont + :class:`plotly.graph_objects.scatterternary.unselected. + Textfont` instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._set_property("textfont", arg, textfont) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/_font.py new file mode 100644 index 0000000..e642d4a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.hoverlabel" + _path_str = "scatterternary.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py new file mode 100644 index 0000000..a261155 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.legendgrouptitle" + _path_str = "scatterternary.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/__init__.py new file mode 100644 index 0000000..6cfc468 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._gradient import Gradient + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._gradient.Gradient", "._line.Line"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_colorbar.py new file mode 100644 index 0000000..141b719 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker" + _path_str = "scatterternary.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.scatterternary + .marker.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + scatterternary.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatterternary. + marker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rternary.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterternary.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatterternary.marker.colo + rbar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.scatterternary. + marker.colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.scatte + rternary.marker.colorbar.tickformatstopdefaults), sets + the default property values to use for elements of + scatterternary.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.scatterternary.marker.colo + rbar.Title` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_gradient.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_gradient.py new file mode 100644 index 0000000..fb803bc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_gradient.py @@ -0,0 +1,164 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Gradient(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker" + _path_str = "scatterternary.marker.gradient" + _valid_props = {"color", "colorsrc", "type", "typesrc"} + + @property + def color(self): + """ + Sets the final color of the gradient fill: the center color for + radial, the right for horizontal, or the bottom for vertical. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def type(self): + """ + Sets the type of gradient used to fill the markers + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['radial', 'horizontal', 'vertical', 'none'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def typesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `type`. + + The 'typesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["typesrc"] + + @typesrc.setter + def typesrc(self, val): + self["typesrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, type=None, typesrc=None, **kwargs + ): + """ + Construct a new Gradient object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .marker.Gradient` + color + Sets the final color of the gradient fill: the center + color for radial, the right for horizontal, or the + bottom for vertical. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + type + Sets the type of gradient used to fill the markers + typesrc + Sets the source reference on Chart Studio Cloud for + `type`. + + Returns + ------- + Gradient + """ + super().__init__("gradient") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.Gradient +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.Gradient`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("type", arg, type) + self._set_property("typesrc", arg, typesrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_line.py new file mode 100644 index 0000000..df4544e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker" + _path_str = "scatterternary.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to scatterternary.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.scatterternary.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..f35a4c5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker.colorbar" + _path_str = "scatterternary.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .marker.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..266d0af --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker.colorbar" + _path_str = "scatterternary.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .marker.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_title.py new file mode 100644 index 0000000..835128f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker.colorbar" + _path_str = "scatterternary.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.scatterternary.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py new file mode 100644 index 0000000..e6ea459 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.marker.colorbar.title" + _path_str = "scatterternary.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .marker.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_marker.py new file mode 100644 index 0000000..f82f165 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.selected" + _path_str = "scatterternary.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_textfont.py new file mode 100644 index 0000000..9e9ba65 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/selected/_textfont.py @@ -0,0 +1,81 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.selected" + _path_str = "scatterternary.selected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of selected points. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .selected.Textfont` + color + Sets the text font color of selected points. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.selected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.selected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/__init__.py new file mode 100644 index 0000000..8515490 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._marker.Marker", "._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_marker.py new file mode 100644 index 0000000..842223a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.unselected" + _path_str = "scatterternary.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_textfont.py new file mode 100644 index 0000000..06e08d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/scatterternary/unselected/_textfont.py @@ -0,0 +1,84 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "scatterternary.unselected" + _path_str = "scatterternary.unselected.textfont" + _valid_props = {"color"} + + @property + def color(self): + """ + Sets the text font color of unselected points, applied only + when a selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the text font color of unselected points, applied + only when a selection exists. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Textfont object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.scatterternary + .unselected.Textfont` + color + Sets the text font color of unselected points, applied + only when a selection exists. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.scatterternary.unselected.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.scatterternary.unselected.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/__init__.py new file mode 100644 index 0000000..200342c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/__init__.py @@ -0,0 +1,42 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._diagonal import Diagonal + from ._dimension import Dimension + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import dimension + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".dimension", + ".hoverlabel", + ".legendgrouptitle", + ".marker", + ".selected", + ".unselected", + ], + [ + "._diagonal.Diagonal", + "._dimension.Dimension", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_diagonal.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_diagonal.py new file mode 100644 index 0000000..a29d8e7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_diagonal.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Diagonal(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.diagonal" + _valid_props = {"visible"} + + @property + def visible(self): + """ + Determines whether or not subplots on the diagonal are + displayed. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + visible + Determines whether or not subplots on the diagonal are + displayed. + """ + + def __init__(self, arg=None, visible=None, **kwargs): + """ + Construct a new Diagonal object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.Diagonal` + visible + Determines whether or not subplots on the diagonal are + displayed. + + Returns + ------- + Diagonal + """ + super().__init__("diagonal") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Diagonal +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Diagonal`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_dimension.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_dimension.py new file mode 100644 index 0000000..beb275e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_dimension.py @@ -0,0 +1,293 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Dimension(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.dimension" + _valid_props = { + "axis", + "label", + "name", + "templateitemname", + "values", + "valuessrc", + "visible", + } + + @property + def axis(self): + """ + The 'axis' property is an instance of Axis + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.dimension.Axis` + - A dict of string/value properties that will be passed + to the Axis constructor + + Returns + ------- + plotly.graph_objs.splom.dimension.Axis + """ + return self["axis"] + + @axis.setter + def axis(self, val): + self["axis"] = val + + @property + def label(self): + """ + Sets the label corresponding to this splom dimension. + + The 'label' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["label"] + + @label.setter + def label(self, val): + self["label"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def values(self): + """ + Sets the dimension values to be plotted. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def visible(self): + """ + 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. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + axis + :class:`plotly.graph_objects.splom.dimension.Axis` + instance or dict with compatible properties + label + Sets the label corresponding to this splom dimension. + name + 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. + templateitemname + 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`. + values + Sets the dimension values to be plotted. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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. + """ + + def __init__( + self, + arg=None, + axis=None, + label=None, + name=None, + templateitemname=None, + values=None, + valuessrc=None, + visible=None, + **kwargs, + ): + """ + Construct a new Dimension object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.Dimension` + axis + :class:`plotly.graph_objects.splom.dimension.Axis` + instance or dict with compatible properties + label + Sets the label corresponding to this splom dimension. + name + 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. + templateitemname + 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`. + values + Sets the dimension values to be plotted. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + visible + 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. + + Returns + ------- + Dimension + """ + super().__init__("dimensions") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Dimension +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Dimension`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("axis", arg, axis) + self._set_property("label", arg, label) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_hoverlabel.py new file mode 100644 index 0000000..3412679 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.splom.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_legendgrouptitle.py new file mode 100644 index 0000000..e2def19 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.splom.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_marker.py new file mode 100644 index 0000000..5487958 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_marker.py @@ -0,0 +1,977 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.marker" + _valid_props = { + "angle", + "anglesrc", + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorbar", + "colorscale", + "colorsrc", + "line", + "opacity", + "opacitysrc", + "reversescale", + "showscale", + "size", + "sizemin", + "sizemode", + "sizeref", + "sizesrc", + "symbol", + "symbolsrc", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180, or a list, numpy array or other iterable thereof. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float|numpy.ndarray + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def anglesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `angle`. + + The 'anglesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["anglesrc"] + + @anglesrc.setter + def anglesrc(self, val): + self["anglesrc"] = val + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to splom.marker.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.splom.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colorscale(self): + """ + 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,B + luered,Blues,Cividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic + ,Portland,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.splom.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def opacitysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `opacity`. + + The 'opacitysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["opacitysrc"] + + @opacitysrc.setter + def opacitysrc(self, val): + self["opacitysrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + 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. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizemin(self): + """ + Has an effect only if `marker.size` is set to a numerical + array. Sets the minimum size (in px) of the rendered marker + points. + + The 'sizemin' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["sizemin"] + + @sizemin.setter + def sizemin(self, val): + self["sizemin"] = val + + @property + def sizemode(self): + """ + 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. + + The 'sizemode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['diameter', 'area'] + + Returns + ------- + Any + """ + return self["sizemode"] + + @sizemode.setter + def sizemode(self, val): + self["sizemode"] = val + + @property + def sizeref(self): + """ + 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`. + + The 'sizeref' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["sizeref"] + + @sizeref.setter + def sizeref(self, val): + self["sizeref"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def symbolsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `symbol`. + + The 'symbolsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["symbolsrc"] + + @symbolsrc.setter + def symbolsrc(self, val): + self["symbolsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.splom.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.splom.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + """ + + def __init__( + self, + arg=None, + angle=None, + anglesrc=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorbar=None, + colorscale=None, + colorsrc=None, + line=None, + opacity=None, + opacitysrc=None, + reversescale=None, + showscale=None, + size=None, + sizemin=None, + sizemode=None, + sizeref=None, + sizesrc=None, + symbol=None, + symbolsrc=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.splom.Marker` + angle + Sets the marker angle in respect to `angleref`. + anglesrc + Sets the source reference on Chart Studio Cloud for + `angle`. + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.splom.marker.ColorBar` + instance or dict with compatible properties + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + line + :class:`plotly.graph_objects.splom.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + opacitysrc + Sets the source reference on Chart Studio Cloud for + `opacity`. + reversescale + 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. + showscale + 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. + size + Sets the marker size (in px). + sizemin + Has an effect only if `marker.size` is set to a + numerical array. Sets the minimum size (in px) of the + rendered marker points. + sizemode + 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. + sizeref + 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`. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + symbol + 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. + symbolsrc + Sets the source reference on Chart Studio Cloud for + `symbol`. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("anglesrc", arg, anglesrc) + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("opacitysrc", arg, opacitysrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._set_property("size", arg, size) + self._set_property("sizemin", arg, sizemin) + self._set_property("sizemode", arg, sizemode) + self._set_property("sizeref", arg, sizeref) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("symbol", arg, symbol) + self._set_property("symbolsrc", arg, symbolsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_selected.py new file mode 100644 index 0000000..964b3a6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.splom.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.splom.selected.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.Selected` + marker + :class:`plotly.graph_objects.splom.selected.Marker` + instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_stream.py new file mode 100644 index 0000000..1697225 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.splom.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_unselected.py new file mode 100644 index 0000000..bcf6df6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "splom" + _path_str = "splom.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.splom.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.splom.unselected.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.Unselected` + marker + :class:`plotly.graph_objects.splom.unselected.Marker` + instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/__init__.py new file mode 100644 index 0000000..939c73e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._axis import Axis +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._axis.Axis"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/_axis.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/_axis.py new file mode 100644 index 0000000..0366dfc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/dimension/_axis.py @@ -0,0 +1,115 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Axis(_BaseTraceHierarchyType): + _parent_path_str = "splom.dimension" + _path_str = "splom.dimension.axis" + _valid_props = {"matches", "type"} + + @property + def matches(self): + """ + 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. + + The 'matches' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["matches"] + + @matches.setter + def matches(self, val): + self["matches"] = val + + @property + def type(self): + """ + 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. + + The 'type' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['linear', 'log', 'date', 'category'] + + Returns + ------- + Any + """ + return self["type"] + + @type.setter + def type(self, val): + self["type"] = val + + @property + def _prop_descriptions(self): + return """\ + matches + 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. + type + 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. + """ + + def __init__(self, arg=None, matches=None, type=None, **kwargs): + """ + Construct a new Axis object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.dimension.Axis` + matches + 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. + type + 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. + + Returns + ------- + Axis + """ + super().__init__("axis") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.dimension.Axis +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.dimension.Axis`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("matches", arg, matches) + self._set_property("type", arg, type) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/_font.py new file mode 100644 index 0000000..64f7bec --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "splom.hoverlabel" + _path_str = "splom.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/_font.py new file mode 100644 index 0000000..c1fa90d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "splom.legendgrouptitle" + _path_str = "splom.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/__init__.py new file mode 100644 index 0000000..e0fbf0e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".colorbar"], ["._colorbar.ColorBar", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_colorbar.py new file mode 100644 index 0000000..60af07e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "splom.marker" + _path_str = "splom.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.splom.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.splom.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.splom.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.splom.marker.c + olorbar.tickformatstopdefaults), sets the default property + values to use for elements of + splom.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.splom.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.splom.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.splom.marker.co + lorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.splom. + marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + splom.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.splom.marker.colorbar.Titl + e` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.splom.marker.co + lorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.splom. + marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + splom.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.splom.marker.colorbar.Titl + e` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_line.py new file mode 100644 index 0000000..764a952 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/_line.py @@ -0,0 +1,546 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "splom.marker" + _path_str = "splom.marker.line" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "color", + "coloraxis", + "colorscale", + "colorsrc", + "reversescale", + "width", + "widthsrc", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A number that will be interpreted as a color + according to splom.marker.line.colorscale + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorscale(self): + """ + 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. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + color=None, + coloraxis=None, + colorscale=None, + colorsrc=None, + reversescale=None, + width=None, + widthsrc=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.marker.Line` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + color + 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. + coloraxis + 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. + colorscale + 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,C + ividis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portl + and,Rainbow,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + reversescale + 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. + width + Sets the width (in px) of the lines bounding the marker + points. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("color", arg, color) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("reversescale", arg, reversescale) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..955183f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "splom.marker.colorbar" + _path_str = "splom.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.splom.marker.c + olorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..10c4054 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "splom.marker.colorbar" + _path_str = "splom.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.splom.marker.c + olorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_title.py new file mode 100644 index 0000000..4f40789 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "splom.marker.colorbar" + _path_str = "splom.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.splom.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.splom.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.marker.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/_font.py new file mode 100644 index 0000000..4bfb809 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "splom.marker.colorbar.title" + _path_str = "splom.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.splom.marker.c + olorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/_marker.py new file mode 100644 index 0000000..2002deb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "splom.selected" + _path_str = "splom.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/_marker.py new file mode 100644 index 0000000..48f8c53 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/splom/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "splom.unselected" + _path_str = "splom.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.splom.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.splom.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.splom.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/__init__.py new file mode 100644 index 0000000..d141858 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/__init__.py @@ -0,0 +1,30 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._lighting import Lighting + from ._lightposition import Lightposition + from ._starts import Starts + from ._stream import Stream + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._lighting.Lighting", + "._lightposition.Lightposition", + "._starts.Starts", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_colorbar.py new file mode 100644 index 0000000..f4ce2df --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_colorbar.py @@ -0,0 +1,1721 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.streamtube.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.streamtube.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.streamtube.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.streamtube.col + orbar.tickformatstopdefaults), sets the default property values + to use for elements of streamtube.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.streamtube.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.streamtube.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.streamtube.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.stream + tube.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + streamtube.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.streamtube.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.streamtube.colo + rbar.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.stream + tube.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + streamtube.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.streamtube.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_hoverlabel.py new file mode 100644 index 0000000..d197560 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.streamtube.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_legendgrouptitle.py new file mode 100644 index 0000000..0cb3297 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.streamtube.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lighting.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lighting.py new file mode 100644 index 0000000..0e1dd46 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lighting.py @@ -0,0 +1,260 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lighting(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.lighting" + _valid_props = { + "ambient", + "diffuse", + "facenormalsepsilon", + "fresnel", + "roughness", + "specular", + "vertexnormalsepsilon", + } + + @property + def ambient(self): + """ + Ambient light increases overall color visibility but can wash + out the image. + + The 'ambient' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ambient"] + + @ambient.setter + def ambient(self, val): + self["ambient"] = val + + @property + def diffuse(self): + """ + Represents the extent that incident rays are reflected in a + range of angles. + + The 'diffuse' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["diffuse"] + + @diffuse.setter + def diffuse(self, val): + self["diffuse"] = val + + @property + def facenormalsepsilon(self): + """ + Epsilon for face normals calculation avoids math issues arising + from degenerate geometry. + + The 'facenormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["facenormalsepsilon"] + + @facenormalsepsilon.setter + def facenormalsepsilon(self, val): + self["facenormalsepsilon"] = val + + @property + def fresnel(self): + """ + 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. + + The 'fresnel' property is a number and may be specified as: + - An int or float in the interval [0, 5] + + Returns + ------- + int|float + """ + return self["fresnel"] + + @fresnel.setter + def fresnel(self, val): + self["fresnel"] = val + + @property + def roughness(self): + """ + Alters specular reflection; the rougher the surface, the wider + and less contrasty the shine. + + The 'roughness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["roughness"] + + @roughness.setter + def roughness(self, val): + self["roughness"] = val + + @property + def specular(self): + """ + Represents the level that incident rays are reflected in a + single direction, causing shine. + + The 'specular' property is a number and may be specified as: + - An int or float in the interval [0, 2] + + Returns + ------- + int|float + """ + return self["specular"] + + @specular.setter + def specular(self, val): + self["specular"] = val + + @property + def vertexnormalsepsilon(self): + """ + Epsilon for vertex normals calculation avoids math issues + arising from degenerate geometry. + + The 'vertexnormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["vertexnormalsepsilon"] + + @vertexnormalsepsilon.setter + def vertexnormalsepsilon(self, val): + self["vertexnormalsepsilon"] = val + + @property + def _prop_descriptions(self): + return """\ + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + """ + + def __init__( + self, + arg=None, + ambient=None, + diffuse=None, + facenormalsepsilon=None, + fresnel=None, + roughness=None, + specular=None, + vertexnormalsepsilon=None, + **kwargs, + ): + """ + Construct a new Lighting object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.Lighting` + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + + Returns + ------- + Lighting + """ + super().__init__("lighting") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.Lighting +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.Lighting`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("ambient", arg, ambient) + self._set_property("diffuse", arg, diffuse) + self._set_property("facenormalsepsilon", arg, facenormalsepsilon) + self._set_property("fresnel", arg, fresnel) + self._set_property("roughness", arg, roughness) + self._set_property("specular", arg, specular) + self._set_property("vertexnormalsepsilon", arg, vertexnormalsepsilon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lightposition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lightposition.py new file mode 100644 index 0000000..0c6c7f7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_lightposition.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lightposition(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.lightposition" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + Numeric vector, representing the X coordinate for each vertex. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Numeric vector, representing the Y coordinate for each vertex. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + Numeric vector, representing the Z coordinate for each vertex. + + The 'z' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Lightposition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.Lightposition` + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + + Returns + ------- + Lightposition + """ + super().__init__("lightposition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.Lightposition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.Lightposition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_starts.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_starts.py new file mode 100644 index 0000000..eccda64 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_starts.py @@ -0,0 +1,217 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Starts(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.starts" + _valid_props = {"x", "xsrc", "y", "ysrc", "z", "zsrc"} + + @property + def x(self): + """ + Sets the x components of the starting position of the + streamtubes + + The 'x' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `x`. + + The 'xsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["xsrc"] + + @xsrc.setter + def xsrc(self, val): + self["xsrc"] = val + + @property + def y(self): + """ + Sets the y components of the starting position of the + streamtubes + + The 'y' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def ysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `y`. + + The 'ysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ysrc"] + + @ysrc.setter + def ysrc(self, val): + self["ysrc"] = val + + @property + def z(self): + """ + Sets the z components of the starting position of the + streamtubes + + The 'z' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def zsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `z`. + + The 'zsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["zsrc"] + + @zsrc.setter + def zsrc(self, val): + self["zsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Sets the x components of the starting position of the + streamtubes + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y components of the starting position of the + streamtubes + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z components of the starting position of the + streamtubes + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + """ + + def __init__( + self, + arg=None, + x=None, + xsrc=None, + y=None, + ysrc=None, + z=None, + zsrc=None, + **kwargs, + ): + """ + Construct a new Starts object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.Starts` + x + Sets the x components of the starting position of the + streamtubes + xsrc + Sets the source reference on Chart Studio Cloud for + `x`. + y + Sets the y components of the starting position of the + streamtubes + ysrc + Sets the source reference on Chart Studio Cloud for + `y`. + z + Sets the z components of the starting position of the + streamtubes + zsrc + Sets the source reference on Chart Studio Cloud for + `z`. + + Returns + ------- + Starts + """ + super().__init__("starts") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.Starts +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.Starts`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("xsrc", arg, xsrc) + self._set_property("y", arg, y) + self._set_property("ysrc", arg, ysrc) + self._set_property("z", arg, z) + self._set_property("zsrc", arg, zsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_stream.py new file mode 100644 index 0000000..46d9371 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "streamtube" + _path_str = "streamtube.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickfont.py new file mode 100644 index 0000000..b9ae28e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "streamtube.colorbar" + _path_str = "streamtube.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py new file mode 100644 index 0000000..3bb5efa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "streamtube.colorbar" + _path_str = "streamtube.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.streamtube.col + orbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_title.py new file mode 100644 index 0000000..e9b903a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "streamtube.colorbar" + _path_str = "streamtube.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.streamtube.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.streamtube.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/_font.py new file mode 100644 index 0000000..a1869a5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "streamtube.colorbar.title" + _path_str = "streamtube.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.streamtube.col + orbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/_font.py new file mode 100644 index 0000000..d8d34b5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "streamtube.hoverlabel" + _path_str = "streamtube.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.streamtube.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/_font.py new file mode 100644 index 0000000..3bf085d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/streamtube/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "streamtube.legendgrouptitle" + _path_str = "streamtube.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.streamtube.leg + endgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.streamtube.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.streamtube.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/__init__.py new file mode 100644 index 0000000..69c0dee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/__init__.py @@ -0,0 +1,36 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._leaf import Leaf + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._root import Root + from ._stream import Stream + from ._textfont import Textfont + from . import hoverlabel + from . import legendgrouptitle + from . import marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker"], + [ + "._domain.Domain", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._leaf.Leaf", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._root.Root", + "._stream.Stream", + "._textfont.Textfont", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_domain.py new file mode 100644 index 0000000..5e50ff1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this sunburst trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this sunburst trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this sunburst trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this sunburst trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this sunburst trace . + row + If there is a layout grid, use the domain for this row + in the grid for this sunburst trace . + x + Sets the horizontal domain of this sunburst trace (in + plot fraction). + y + Sets the vertical domain of this sunburst trace (in + plot fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this sunburst trace . + row + If there is a layout grid, use the domain for this row + in the grid for this sunburst trace . + x + Sets the horizontal domain of this sunburst trace (in + plot fraction). + y + Sets the vertical domain of this sunburst trace (in + plot fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_hoverlabel.py new file mode 100644 index 0000000..bcfd1f5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sunburst.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_insidetextfont.py new file mode 100644 index 0000000..48d3703 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `textinfo` lying inside the sector. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_leaf.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_leaf.py new file mode 100644 index 0000000..9b996c8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_leaf.py @@ -0,0 +1,79 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Leaf(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.leaf" + _valid_props = {"opacity"} + + @property + def opacity(self): + """ + Sets the opacity of the leaves. With colorscale it is defaulted + to 1; otherwise it is defaulted to 0.7 + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def _prop_descriptions(self): + return """\ + opacity + Sets the opacity of the leaves. With colorscale it is + defaulted to 1; otherwise it is defaulted to 0.7 + """ + + def __init__(self, arg=None, opacity=None, **kwargs): + """ + Construct a new Leaf object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.Leaf` + opacity + Sets the opacity of the leaves. With colorscale it is + defaulted to 1; otherwise it is defaulted to 0.7 + + Returns + ------- + Leaf + """ + super().__init__("leaf") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Leaf +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Leaf`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("opacity", arg, opacity) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_legendgrouptitle.py new file mode 100644 index 0000000..ccbc7fd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sunburst.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_marker.py new file mode 100644 index 0000000..4a4234e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_marker.py @@ -0,0 +1,579 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colors", + "colorscale", + "colorssrc", + "line", + "pattern", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colors(self): + """ + Sets the color of each sector of this trace. If not specified, + the default trace color set is used to pick the sector colors. + + The 'colors' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["colors"] + + @colors.setter + def colors(self, val): + self["colors"] = val + + @property + def colorscale(self): + """ + 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,Civi + dis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow + ,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `colors`. + + The 'colorssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorssrc"] + + @colorssrc.setter + def colorssrc(self, val): + self["colorssrc"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. Has an effect only if colors is set to a numerical + array. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.sunburst.marker.ColorBar` + instance or dict with compatible properties + colors + Sets the color of each sector of this trace. If not + specified, the default trace color set is used to pick + the sector colors. + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.sunburst.marker.Line` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. Has an effect only if colors is set to a + numerical array. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colors=None, + colorscale=None, + colorssrc=None, + line=None, + pattern=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.sunburst.marker.ColorBar` + instance or dict with compatible properties + colors + Sets the color of each sector of this trace. If not + specified, the default trace color set is used to pick + the sector colors. + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + line + :class:`plotly.graph_objects.sunburst.marker.Line` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. Has an effect only if colors is set to a + numerical array. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colors", arg, colors) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorssrc", arg, colorssrc) + self._set_property("line", arg, line) + self._set_property("pattern", arg, pattern) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_outsidetextfont.py new file mode 100644 index 0000000..07709e4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_outsidetextfont.py @@ -0,0 +1,591 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + 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. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_root.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_root.py new file mode 100644 index 0000000..87854a8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_root.py @@ -0,0 +1,86 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Root(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.root" + _valid_props = {"color"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Root object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.Root` + color + 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. + + Returns + ------- + Root + """ + super().__init__("root") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Root +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Root`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_stream.py new file mode 100644 index 0000000..5680641 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_textfont.py new file mode 100644 index 0000000..6dcabc1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "sunburst" + _path_str = "sunburst.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `textinfo`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/_font.py new file mode 100644 index 0000000..33c7f2b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.hoverlabel" + _path_str = "sunburst.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/_font.py new file mode 100644 index 0000000..5b753a2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.legendgrouptitle" + _path_str = "sunburst.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.legen + dgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/__init__.py new file mode 100644 index 0000000..e2d7a12 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from ._pattern import Pattern + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._line.Line", "._pattern.Pattern"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_colorbar.py new file mode 100644 index 0000000..af16789 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker" + _path_str = "sunburst.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.sunburst.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.sunburst.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.sunburst.marke + r.colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + sunburst.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.sunburst.marker + .colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.sunbur + st.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + sunburst.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.sunburst.marker.colorbar.T + itle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.sunburst.marker + .colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.sunbur + st.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + sunburst.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.sunburst.marker.colorbar.T + itle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_line.py new file mode 100644 index 0000000..a14be3b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_line.py @@ -0,0 +1,163 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker" + _path_str = "sunburst.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. Defaults to + the `paper_bgcolor` value. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.marker.Line` + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_pattern.py new file mode 100644 index 0000000..16346c9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker" + _path_str = "sunburst.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.sunburst.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..04da881 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker.colorbar" + _path_str = "sunburst.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.marke + r.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..893cef9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker.colorbar" + _path_str = "sunburst.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.marke + r.colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_title.py new file mode 100644 index 0000000..c824761 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker.colorbar" + _path_str = "sunburst.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.sunburst.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.marke + r.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py new file mode 100644 index 0000000..ba4e0c7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/sunburst/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "sunburst.marker.colorbar.title" + _path_str = "sunburst.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.sunburst.marke + r.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.sunburst.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.sunburst.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/__init__.py new file mode 100644 index 0000000..f0a5e46 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/__init__.py @@ -0,0 +1,31 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._contours import Contours + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._lighting import Lighting + from ._lightposition import Lightposition + from ._stream import Stream + from . import colorbar + from . import contours + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar", ".contours", ".hoverlabel", ".legendgrouptitle"], + [ + "._colorbar.ColorBar", + "._contours.Contours", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._lighting.Lighting", + "._lightposition.Lightposition", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_colorbar.py new file mode 100644 index 0000000..83db758 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.surface.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.surface.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.surface.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.surface.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + surface.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.surface.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.surface.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.surface.colorba + r.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.surfac + e.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + surface.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.surface.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.surface.colorba + r.Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.surfac + e.colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + surface.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.surface.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_contours.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_contours.py new file mode 100644 index 0000000..9c42096 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_contours.py @@ -0,0 +1,132 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contours(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.contours" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is an instance of X + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.contours.X` + - A dict of string/value properties that will be passed + to the X constructor + + Returns + ------- + plotly.graph_objs.surface.contours.X + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is an instance of Y + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.contours.Y` + - A dict of string/value properties that will be passed + to the Y constructor + + Returns + ------- + plotly.graph_objs.surface.contours.Y + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is an instance of Z + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.contours.Z` + - A dict of string/value properties that will be passed + to the Z constructor + + Returns + ------- + plotly.graph_objs.surface.contours.Z + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + :class:`plotly.graph_objects.surface.contours.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.surface.contours.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.surface.contours.Z` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Contours object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.Contours` + x + :class:`plotly.graph_objects.surface.contours.X` + instance or dict with compatible properties + y + :class:`plotly.graph_objects.surface.contours.Y` + instance or dict with compatible properties + z + :class:`plotly.graph_objects.surface.contours.Z` + instance or dict with compatible properties + + Returns + ------- + Contours + """ + super().__init__("contours") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.Contours +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.Contours`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_hoverlabel.py new file mode 100644 index 0000000..fef0273 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.surface.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_legendgrouptitle.py new file mode 100644 index 0000000..d77d8a1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.surface.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lighting.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lighting.py new file mode 100644 index 0000000..b8499ee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lighting.py @@ -0,0 +1,198 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lighting(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.lighting" + _valid_props = {"ambient", "diffuse", "fresnel", "roughness", "specular"} + + @property + def ambient(self): + """ + Ambient light increases overall color visibility but can wash + out the image. + + The 'ambient' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ambient"] + + @ambient.setter + def ambient(self, val): + self["ambient"] = val + + @property + def diffuse(self): + """ + Represents the extent that incident rays are reflected in a + range of angles. + + The 'diffuse' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["diffuse"] + + @diffuse.setter + def diffuse(self, val): + self["diffuse"] = val + + @property + def fresnel(self): + """ + 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. + + The 'fresnel' property is a number and may be specified as: + - An int or float in the interval [0, 5] + + Returns + ------- + int|float + """ + return self["fresnel"] + + @fresnel.setter + def fresnel(self, val): + self["fresnel"] = val + + @property + def roughness(self): + """ + Alters specular reflection; the rougher the surface, the wider + and less contrasty the shine. + + The 'roughness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["roughness"] + + @roughness.setter + def roughness(self, val): + self["roughness"] = val + + @property + def specular(self): + """ + Represents the level that incident rays are reflected in a + single direction, causing shine. + + The 'specular' property is a number and may be specified as: + - An int or float in the interval [0, 2] + + Returns + ------- + int|float + """ + return self["specular"] + + @specular.setter + def specular(self, val): + self["specular"] = val + + @property + def _prop_descriptions(self): + return """\ + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + """ + + def __init__( + self, + arg=None, + ambient=None, + diffuse=None, + fresnel=None, + roughness=None, + specular=None, + **kwargs, + ): + """ + Construct a new Lighting object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.Lighting` + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + + Returns + ------- + Lighting + """ + super().__init__("lighting") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.Lighting +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.Lighting`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("ambient", arg, ambient) + self._set_property("diffuse", arg, diffuse) + self._set_property("fresnel", arg, fresnel) + self._set_property("roughness", arg, roughness) + self._set_property("specular", arg, specular) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lightposition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lightposition.py new file mode 100644 index 0000000..283529d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_lightposition.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lightposition(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.lightposition" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + Numeric vector, representing the X coordinate for each vertex. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Numeric vector, representing the Y coordinate for each vertex. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + Numeric vector, representing the Z coordinate for each vertex. + + The 'z' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Lightposition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.Lightposition` + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + + Returns + ------- + Lightposition + """ + super().__init__("lightposition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.Lightposition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.Lightposition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_stream.py new file mode 100644 index 0000000..70b8602 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "surface" + _path_str = "surface.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickfont.py new file mode 100644 index 0000000..b8736fc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "surface.colorbar" + _path_str = "surface.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickformatstop.py new file mode 100644 index 0000000..893ffaf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "surface.colorbar" + _path_str = "surface.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.surface.colorb + ar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_title.py new file mode 100644 index 0000000..4728e34 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "surface.colorbar" + _path_str = "surface.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.surface.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/_font.py new file mode 100644 index 0000000..a5d1736 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "surface.colorbar.title" + _path_str = "surface.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/__init__.py new file mode 100644 index 0000000..12aff2a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._x import X + from ._y import Y + from ._z import Z + from . import x + from . import y + from . import z +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".x", ".y", ".z"], ["._x.X", "._y.Y", "._z.Z"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_x.py new file mode 100644 index 0000000..9df5130 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_x.py @@ -0,0 +1,362 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class X(_BaseTraceHierarchyType): + _parent_path_str = "surface.contours" + _path_str = "surface.contours.x" + _valid_props = { + "color", + "end", + "highlight", + "highlightcolor", + "highlightwidth", + "project", + "show", + "size", + "start", + "usecolormap", + "width", + } + + @property + def color(self): + """ + Sets the color of the contour lines. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def end(self): + """ + Sets the end contour level value. Must be more than + `contours.start` + + The 'end' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def highlight(self): + """ + Determines whether or not contour lines about the x dimension + are highlighted on hover. + + The 'highlight' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["highlight"] + + @highlight.setter + def highlight(self, val): + self["highlight"] = val + + @property + def highlightcolor(self): + """ + Sets the color of the highlighted contour lines. + + The 'highlightcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["highlightcolor"] + + @highlightcolor.setter + def highlightcolor(self, val): + self["highlightcolor"] = val + + @property + def highlightwidth(self): + """ + Sets the width of the highlighted contour lines. + + The 'highlightwidth' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["highlightwidth"] + + @highlightwidth.setter + def highlightwidth(self, val): + self["highlightwidth"] = val + + @property + def project(self): + """ + The 'project' property is an instance of Project + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.contours.x.Project` + - A dict of string/value properties that will be passed + to the Project constructor + + Returns + ------- + plotly.graph_objs.surface.contours.x.Project + """ + return self["project"] + + @project.setter + def project(self, val): + self["project"] = val + + @property + def show(self): + """ + Determines whether or not contour lines about the x dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def size(self): + """ + Sets the step between each contour level. Must be positive. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + Sets the starting contour level value. Must be less than + `contours.end` + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def usecolormap(self): + """ + An alternate to "color". Determines whether or not the contour + lines are colored using the trace "colorscale". + + The 'usecolormap' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["usecolormap"] + + @usecolormap.setter + def usecolormap(self, val): + self["usecolormap"] = val + + @property + def width(self): + """ + Sets the width of the contour lines. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour lines. + end + Sets the end contour level value. Must be more than + `contours.start` + highlight + Determines whether or not contour lines about the x + dimension are highlighted on hover. + highlightcolor + Sets the color of the highlighted contour lines. + highlightwidth + Sets the width of the highlighted contour lines. + project + :class:`plotly.graph_objects.surface.contours.x.Project + ` instance or dict with compatible properties + show + Determines whether or not contour lines about the x + dimension are drawn. + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + usecolormap + An alternate to "color". Determines whether or not the + contour lines are colored using the trace "colorscale". + width + Sets the width of the contour lines. + """ + + def __init__( + self, + arg=None, + color=None, + end=None, + highlight=None, + highlightcolor=None, + highlightwidth=None, + project=None, + show=None, + size=None, + start=None, + usecolormap=None, + width=None, + **kwargs, + ): + """ + Construct a new X object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.contours.X` + color + Sets the color of the contour lines. + end + Sets the end contour level value. Must be more than + `contours.start` + highlight + Determines whether or not contour lines about the x + dimension are highlighted on hover. + highlightcolor + Sets the color of the highlighted contour lines. + highlightwidth + Sets the width of the highlighted contour lines. + project + :class:`plotly.graph_objects.surface.contours.x.Project + ` instance or dict with compatible properties + show + Determines whether or not contour lines about the x + dimension are drawn. + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + usecolormap + An alternate to "color". Determines whether or not the + contour lines are colored using the trace "colorscale". + width + Sets the width of the contour lines. + + Returns + ------- + X + """ + super().__init__("x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.contours.X +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.contours.X`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("end", arg, end) + self._set_property("highlight", arg, highlight) + self._set_property("highlightcolor", arg, highlightcolor) + self._set_property("highlightwidth", arg, highlightwidth) + self._set_property("project", arg, project) + self._set_property("show", arg, show) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._set_property("usecolormap", arg, usecolormap) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_y.py new file mode 100644 index 0000000..00c1042 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_y.py @@ -0,0 +1,362 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Y(_BaseTraceHierarchyType): + _parent_path_str = "surface.contours" + _path_str = "surface.contours.y" + _valid_props = { + "color", + "end", + "highlight", + "highlightcolor", + "highlightwidth", + "project", + "show", + "size", + "start", + "usecolormap", + "width", + } + + @property + def color(self): + """ + Sets the color of the contour lines. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def end(self): + """ + Sets the end contour level value. Must be more than + `contours.start` + + The 'end' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def highlight(self): + """ + Determines whether or not contour lines about the y dimension + are highlighted on hover. + + The 'highlight' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["highlight"] + + @highlight.setter + def highlight(self, val): + self["highlight"] = val + + @property + def highlightcolor(self): + """ + Sets the color of the highlighted contour lines. + + The 'highlightcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["highlightcolor"] + + @highlightcolor.setter + def highlightcolor(self, val): + self["highlightcolor"] = val + + @property + def highlightwidth(self): + """ + Sets the width of the highlighted contour lines. + + The 'highlightwidth' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["highlightwidth"] + + @highlightwidth.setter + def highlightwidth(self, val): + self["highlightwidth"] = val + + @property + def project(self): + """ + The 'project' property is an instance of Project + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.contours.y.Project` + - A dict of string/value properties that will be passed + to the Project constructor + + Returns + ------- + plotly.graph_objs.surface.contours.y.Project + """ + return self["project"] + + @project.setter + def project(self, val): + self["project"] = val + + @property + def show(self): + """ + Determines whether or not contour lines about the y dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def size(self): + """ + Sets the step between each contour level. Must be positive. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + Sets the starting contour level value. Must be less than + `contours.end` + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def usecolormap(self): + """ + An alternate to "color". Determines whether or not the contour + lines are colored using the trace "colorscale". + + The 'usecolormap' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["usecolormap"] + + @usecolormap.setter + def usecolormap(self, val): + self["usecolormap"] = val + + @property + def width(self): + """ + Sets the width of the contour lines. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour lines. + end + Sets the end contour level value. Must be more than + `contours.start` + highlight + Determines whether or not contour lines about the y + dimension are highlighted on hover. + highlightcolor + Sets the color of the highlighted contour lines. + highlightwidth + Sets the width of the highlighted contour lines. + project + :class:`plotly.graph_objects.surface.contours.y.Project + ` instance or dict with compatible properties + show + Determines whether or not contour lines about the y + dimension are drawn. + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + usecolormap + An alternate to "color". Determines whether or not the + contour lines are colored using the trace "colorscale". + width + Sets the width of the contour lines. + """ + + def __init__( + self, + arg=None, + color=None, + end=None, + highlight=None, + highlightcolor=None, + highlightwidth=None, + project=None, + show=None, + size=None, + start=None, + usecolormap=None, + width=None, + **kwargs, + ): + """ + Construct a new Y object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.contours.Y` + color + Sets the color of the contour lines. + end + Sets the end contour level value. Must be more than + `contours.start` + highlight + Determines whether or not contour lines about the y + dimension are highlighted on hover. + highlightcolor + Sets the color of the highlighted contour lines. + highlightwidth + Sets the width of the highlighted contour lines. + project + :class:`plotly.graph_objects.surface.contours.y.Project + ` instance or dict with compatible properties + show + Determines whether or not contour lines about the y + dimension are drawn. + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + usecolormap + An alternate to "color". Determines whether or not the + contour lines are colored using the trace "colorscale". + width + Sets the width of the contour lines. + + Returns + ------- + Y + """ + super().__init__("y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.contours.Y +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.contours.Y`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("end", arg, end) + self._set_property("highlight", arg, highlight) + self._set_property("highlightcolor", arg, highlightcolor) + self._set_property("highlightwidth", arg, highlightwidth) + self._set_property("project", arg, project) + self._set_property("show", arg, show) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._set_property("usecolormap", arg, usecolormap) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_z.py new file mode 100644 index 0000000..62d2416 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/_z.py @@ -0,0 +1,362 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Z(_BaseTraceHierarchyType): + _parent_path_str = "surface.contours" + _path_str = "surface.contours.z" + _valid_props = { + "color", + "end", + "highlight", + "highlightcolor", + "highlightwidth", + "project", + "show", + "size", + "start", + "usecolormap", + "width", + } + + @property + def color(self): + """ + Sets the color of the contour lines. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def end(self): + """ + Sets the end contour level value. Must be more than + `contours.start` + + The 'end' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["end"] + + @end.setter + def end(self, val): + self["end"] = val + + @property + def highlight(self): + """ + Determines whether or not contour lines about the z dimension + are highlighted on hover. + + The 'highlight' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["highlight"] + + @highlight.setter + def highlight(self, val): + self["highlight"] = val + + @property + def highlightcolor(self): + """ + Sets the color of the highlighted contour lines. + + The 'highlightcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["highlightcolor"] + + @highlightcolor.setter + def highlightcolor(self, val): + self["highlightcolor"] = val + + @property + def highlightwidth(self): + """ + Sets the width of the highlighted contour lines. + + The 'highlightwidth' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["highlightwidth"] + + @highlightwidth.setter + def highlightwidth(self, val): + self["highlightwidth"] = val + + @property + def project(self): + """ + The 'project' property is an instance of Project + that may be specified as: + - An instance of :class:`plotly.graph_objs.surface.contours.z.Project` + - A dict of string/value properties that will be passed + to the Project constructor + + Returns + ------- + plotly.graph_objs.surface.contours.z.Project + """ + return self["project"] + + @project.setter + def project(self, val): + self["project"] = val + + @property + def show(self): + """ + Determines whether or not contour lines about the z dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def size(self): + """ + Sets the step between each contour level. Must be positive. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def start(self): + """ + Sets the starting contour level value. Must be less than + `contours.end` + + The 'start' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["start"] + + @start.setter + def start(self, val): + self["start"] = val + + @property + def usecolormap(self): + """ + An alternate to "color". Determines whether or not the contour + lines are colored using the trace "colorscale". + + The 'usecolormap' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["usecolormap"] + + @usecolormap.setter + def usecolormap(self, val): + self["usecolormap"] = val + + @property + def width(self): + """ + Sets the width of the contour lines. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour lines. + end + Sets the end contour level value. Must be more than + `contours.start` + highlight + Determines whether or not contour lines about the z + dimension are highlighted on hover. + highlightcolor + Sets the color of the highlighted contour lines. + highlightwidth + Sets the width of the highlighted contour lines. + project + :class:`plotly.graph_objects.surface.contours.z.Project + ` instance or dict with compatible properties + show + Determines whether or not contour lines about the z + dimension are drawn. + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + usecolormap + An alternate to "color". Determines whether or not the + contour lines are colored using the trace "colorscale". + width + Sets the width of the contour lines. + """ + + def __init__( + self, + arg=None, + color=None, + end=None, + highlight=None, + highlightcolor=None, + highlightwidth=None, + project=None, + show=None, + size=None, + start=None, + usecolormap=None, + width=None, + **kwargs, + ): + """ + Construct a new Z object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.contours.Z` + color + Sets the color of the contour lines. + end + Sets the end contour level value. Must be more than + `contours.start` + highlight + Determines whether or not contour lines about the z + dimension are highlighted on hover. + highlightcolor + Sets the color of the highlighted contour lines. + highlightwidth + Sets the width of the highlighted contour lines. + project + :class:`plotly.graph_objects.surface.contours.z.Project + ` instance or dict with compatible properties + show + Determines whether or not contour lines about the z + dimension are drawn. + size + Sets the step between each contour level. Must be + positive. + start + Sets the starting contour level value. Must be less + than `contours.end` + usecolormap + An alternate to "color". Determines whether or not the + contour lines are colored using the trace "colorscale". + width + Sets the width of the contour lines. + + Returns + ------- + Z + """ + super().__init__("z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.contours.Z +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.contours.Z`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("end", arg, end) + self._set_property("highlight", arg, highlight) + self._set_property("highlightcolor", arg, highlightcolor) + self._set_property("highlightwidth", arg, highlightwidth) + self._set_property("project", arg, project) + self._set_property("show", arg, show) + self._set_property("size", arg, size) + self._set_property("start", arg, start) + self._set_property("usecolormap", arg, usecolormap) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/__init__.py new file mode 100644 index 0000000..bb18f1a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._project import Project +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._project.Project"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/_project.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/_project.py new file mode 100644 index 0000000..d2ac9d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/x/_project.py @@ -0,0 +1,156 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Project(_BaseTraceHierarchyType): + _parent_path_str = "surface.contours.x" + _path_str = "surface.contours.x.project" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + 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. + + The 'x' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + 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. + + The 'y' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + 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. + + The 'z' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + 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. + y + 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. + z + 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. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Project object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.contours.x.Project` + x + 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. + y + 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. + z + 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. + + Returns + ------- + Project + """ + super().__init__("project") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.contours.x.Project +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.contours.x.Project`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/__init__.py new file mode 100644 index 0000000..bb18f1a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._project import Project +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._project.Project"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/_project.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/_project.py new file mode 100644 index 0000000..9a026aa --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/y/_project.py @@ -0,0 +1,156 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Project(_BaseTraceHierarchyType): + _parent_path_str = "surface.contours.y" + _path_str = "surface.contours.y.project" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + 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. + + The 'x' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + 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. + + The 'y' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + 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. + + The 'z' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + 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. + y + 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. + z + 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. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Project object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.contours.y.Project` + x + 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. + y + 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. + z + 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. + + Returns + ------- + Project + """ + super().__init__("project") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.contours.y.Project +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.contours.y.Project`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/__init__.py new file mode 100644 index 0000000..bb18f1a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._project import Project +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._project.Project"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/_project.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/_project.py new file mode 100644 index 0000000..51ae7ef --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/contours/z/_project.py @@ -0,0 +1,156 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Project(_BaseTraceHierarchyType): + _parent_path_str = "surface.contours.z" + _path_str = "surface.contours.z.project" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + 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. + + The 'x' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + 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. + + The 'y' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + 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. + + The 'z' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + 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. + y + 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. + z + 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. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Project object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.contours.z.Project` + x + 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. + y + 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. + z + 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. + + Returns + ------- + Project + """ + super().__init__("project") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.contours.z.Project +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.contours.z.Project`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/_font.py new file mode 100644 index 0000000..32d05ea --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "surface.hoverlabel" + _path_str = "surface.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.surface.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/_font.py new file mode 100644 index 0000000..37ecb29 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/surface/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "surface.legendgrouptitle" + _path_str = "surface.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.surface.legend + grouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.surface.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.surface.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/__init__.py new file mode 100644 index 0000000..4442a1a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/__init__.py @@ -0,0 +1,29 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._cells import Cells + from ._domain import Domain + from ._header import Header + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._stream import Stream + from . import cells + from . import header + from . import hoverlabel + from . import legendgrouptitle +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".cells", ".header", ".hoverlabel", ".legendgrouptitle"], + [ + "._cells.Cells", + "._domain.Domain", + "._header.Header", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._stream.Stream", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_cells.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_cells.py new file mode 100644 index 0000000..083afdd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_cells.py @@ -0,0 +1,464 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Cells(_BaseTraceHierarchyType): + _parent_path_str = "table" + _path_str = "table.cells" + _valid_props = { + "align", + "alignsrc", + "fill", + "font", + "format", + "formatsrc", + "height", + "line", + "prefix", + "prefixsrc", + "suffix", + "suffixsrc", + "values", + "valuessrc", + } + + @property + def align(self): + """ + 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. + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def fill(self): + """ + The 'fill' property is an instance of Fill + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.cells.Fill` + - A dict of string/value properties that will be passed + to the Fill constructor + + Returns + ------- + plotly.graph_objs.table.cells.Fill + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def font(self): + """ + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.cells.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.table.cells.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def format(self): + """ + 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. + + The 'format' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["format"] + + @format.setter + def format(self, val): + self["format"] = val + + @property + def formatsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `format`. + + The 'formatsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["formatsrc"] + + @formatsrc.setter + def formatsrc(self, val): + self["formatsrc"] = val + + @property + def height(self): + """ + The height of cells. + + The 'height' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["height"] + + @height.setter + def height(self, val): + self["height"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.cells.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.table.cells.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def prefix(self): + """ + Prefix for cell values. + + The 'prefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["prefix"] + + @prefix.setter + def prefix(self, val): + self["prefix"] = val + + @property + def prefixsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `prefix`. + + The 'prefixsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["prefixsrc"] + + @prefixsrc.setter + def prefixsrc(self, val): + self["prefixsrc"] = val + + @property + def suffix(self): + """ + Suffix for cell values. + + The 'suffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["suffix"] + + @suffix.setter + def suffix(self, val): + self["suffix"] = val + + @property + def suffixsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `suffix`. + + The 'suffixsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["suffixsrc"] + + @suffixsrc.setter + def suffixsrc(self, val): + self["suffixsrc"] = val + + @property + def values(self): + """ + 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. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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. + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + fill + :class:`plotly.graph_objects.table.cells.Fill` instance + or dict with compatible properties + font + :class:`plotly.graph_objects.table.cells.Font` instance + or dict with compatible properties + format + 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. + formatsrc + Sets the source reference on Chart Studio Cloud for + `format`. + height + The height of cells. + line + :class:`plotly.graph_objects.table.cells.Line` instance + or dict with compatible properties + prefix + Prefix for cell values. + prefixsrc + Sets the source reference on Chart Studio Cloud for + `prefix`. + suffix + Suffix for cell values. + suffixsrc + Sets the source reference on Chart Studio Cloud for + `suffix`. + values + 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. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + fill=None, + font=None, + format=None, + formatsrc=None, + height=None, + line=None, + prefix=None, + prefixsrc=None, + suffix=None, + suffixsrc=None, + values=None, + valuessrc=None, + **kwargs, + ): + """ + Construct a new Cells object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.table.Cells` + align + 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. + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + fill + :class:`plotly.graph_objects.table.cells.Fill` instance + or dict with compatible properties + font + :class:`plotly.graph_objects.table.cells.Font` instance + or dict with compatible properties + format + 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. + formatsrc + Sets the source reference on Chart Studio Cloud for + `format`. + height + The height of cells. + line + :class:`plotly.graph_objects.table.cells.Line` instance + or dict with compatible properties + prefix + Prefix for cell values. + prefixsrc + Sets the source reference on Chart Studio Cloud for + `prefix`. + suffix + Suffix for cell values. + suffixsrc + Sets the source reference on Chart Studio Cloud for + `suffix`. + values + 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. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + + Returns + ------- + Cells + """ + super().__init__("cells") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.Cells +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.Cells`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("fill", arg, fill) + self._set_property("font", arg, font) + self._set_property("format", arg, format) + self._set_property("formatsrc", arg, formatsrc) + self._set_property("height", arg, height) + self._set_property("line", arg, line) + self._set_property("prefix", arg, prefix) + self._set_property("prefixsrc", arg, prefixsrc) + self._set_property("suffix", arg, suffix) + self._set_property("suffixsrc", arg, suffixsrc) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_domain.py new file mode 100644 index 0000000..5cc3241 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_domain.py @@ -0,0 +1,169 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "table" + _path_str = "table.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this table trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this table trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this table trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this table trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this table trace . + row + If there is a layout grid, use the domain for this row + in the grid for this table trace . + x + Sets the horizontal domain of this table trace (in plot + fraction). + y + Sets the vertical domain of this table trace (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.table.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this table trace . + row + If there is a layout grid, use the domain for this row + in the grid for this table trace . + x + Sets the horizontal domain of this table trace (in plot + fraction). + y + Sets the vertical domain of this table trace (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_header.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_header.py new file mode 100644 index 0000000..5a4f6f6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_header.py @@ -0,0 +1,464 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Header(_BaseTraceHierarchyType): + _parent_path_str = "table" + _path_str = "table.header" + _valid_props = { + "align", + "alignsrc", + "fill", + "font", + "format", + "formatsrc", + "height", + "line", + "prefix", + "prefixsrc", + "suffix", + "suffixsrc", + "values", + "valuessrc", + } + + @property + def align(self): + """ + 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. + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def fill(self): + """ + The 'fill' property is an instance of Fill + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.header.Fill` + - A dict of string/value properties that will be passed + to the Fill constructor + + Returns + ------- + plotly.graph_objs.table.header.Fill + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def font(self): + """ + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.header.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.table.header.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def format(self): + """ + 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. + + The 'format' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["format"] + + @format.setter + def format(self, val): + self["format"] = val + + @property + def formatsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `format`. + + The 'formatsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["formatsrc"] + + @formatsrc.setter + def formatsrc(self, val): + self["formatsrc"] = val + + @property + def height(self): + """ + The height of cells. + + The 'height' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["height"] + + @height.setter + def height(self, val): + self["height"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.header.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.table.header.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def prefix(self): + """ + Prefix for cell values. + + The 'prefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["prefix"] + + @prefix.setter + def prefix(self, val): + self["prefix"] = val + + @property + def prefixsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `prefix`. + + The 'prefixsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["prefixsrc"] + + @prefixsrc.setter + def prefixsrc(self, val): + self["prefixsrc"] = val + + @property + def suffix(self): + """ + Suffix for cell values. + + The 'suffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["suffix"] + + @suffix.setter + def suffix(self, val): + self["suffix"] = val + + @property + def suffixsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `suffix`. + + The 'suffixsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["suffixsrc"] + + @suffixsrc.setter + def suffixsrc(self, val): + self["suffixsrc"] = val + + @property + def values(self): + """ + 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. + + The 'values' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["values"] + + @values.setter + def values(self, val): + self["values"] = val + + @property + def valuessrc(self): + """ + Sets the source reference on Chart Studio Cloud for `values`. + + The 'valuessrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["valuessrc"] + + @valuessrc.setter + def valuessrc(self, val): + self["valuessrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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. + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + fill + :class:`plotly.graph_objects.table.header.Fill` + instance or dict with compatible properties + font + :class:`plotly.graph_objects.table.header.Font` + instance or dict with compatible properties + format + 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. + formatsrc + Sets the source reference on Chart Studio Cloud for + `format`. + height + The height of cells. + line + :class:`plotly.graph_objects.table.header.Line` + instance or dict with compatible properties + prefix + Prefix for cell values. + prefixsrc + Sets the source reference on Chart Studio Cloud for + `prefix`. + suffix + Suffix for cell values. + suffixsrc + Sets the source reference on Chart Studio Cloud for + `suffix`. + values + 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. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + fill=None, + font=None, + format=None, + formatsrc=None, + height=None, + line=None, + prefix=None, + prefixsrc=None, + suffix=None, + suffixsrc=None, + values=None, + valuessrc=None, + **kwargs, + ): + """ + Construct a new Header object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.table.Header` + align + 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. + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + fill + :class:`plotly.graph_objects.table.header.Fill` + instance or dict with compatible properties + font + :class:`plotly.graph_objects.table.header.Font` + instance or dict with compatible properties + format + 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. + formatsrc + Sets the source reference on Chart Studio Cloud for + `format`. + height + The height of cells. + line + :class:`plotly.graph_objects.table.header.Line` + instance or dict with compatible properties + prefix + Prefix for cell values. + prefixsrc + Sets the source reference on Chart Studio Cloud for + `prefix`. + suffix + Suffix for cell values. + suffixsrc + Sets the source reference on Chart Studio Cloud for + `suffix`. + values + 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. + valuessrc + Sets the source reference on Chart Studio Cloud for + `values`. + + Returns + ------- + Header + """ + super().__init__("header") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.Header +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.Header`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("fill", arg, fill) + self._set_property("font", arg, font) + self._set_property("format", arg, format) + self._set_property("formatsrc", arg, formatsrc) + self._set_property("height", arg, height) + self._set_property("line", arg, line) + self._set_property("prefix", arg, prefix) + self._set_property("prefixsrc", arg, prefixsrc) + self._set_property("suffix", arg, suffix) + self._set_property("suffixsrc", arg, suffixsrc) + self._set_property("values", arg, values) + self._set_property("valuessrc", arg, valuessrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_hoverlabel.py new file mode 100644 index 0000000..3f41e95 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "table" + _path_str = "table.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.table.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_legendgrouptitle.py new file mode 100644 index 0000000..3ce6859 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "table" + _path_str = "table.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.table.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.table.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_stream.py new file mode 100644 index 0000000..24b93ee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "table" + _path_str = "table.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.table.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/__init__.py new file mode 100644 index 0000000..803b7c1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._fill import Fill + from ._font import Font + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._fill.Fill", "._font.Font", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_fill.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_fill.py new file mode 100644 index 0000000..7767853 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_fill.py @@ -0,0 +1,110 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Fill(_BaseTraceHierarchyType): + _parent_path_str = "table.cells" + _path_str = "table.cells.fill" + _valid_props = {"color", "colorsrc"} + + @property + def color(self): + """ + Sets the cell fill color. It accepts either a specific color or + an array of colors or a 2D array of colors. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the cell fill color. It accepts either a specific + color or an array of colors or a 2D array of colors. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + """ + + def __init__(self, arg=None, color=None, colorsrc=None, **kwargs): + """ + Construct a new Fill object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.cells.Fill` + color + Sets the cell fill color. It accepts either a specific + color or an array of colors or a 2D array of colors. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + + Returns + ------- + Fill + """ + super().__init__("fill") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.cells.Fill +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.cells.Fill`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_font.py new file mode 100644 index 0000000..c0f59ea --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_font.py @@ -0,0 +1,585 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "table.cells" + _path_str = "table.cells.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.cells.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.cells.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.cells.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_line.py new file mode 100644 index 0000000..9158331 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/cells/_line.py @@ -0,0 +1,154 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "table.cells" + _path_str = "table.cells.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + The 'width' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.cells.Line` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.cells.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.cells.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/__init__.py new file mode 100644 index 0000000..803b7c1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._fill import Fill + from ._font import Font + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._fill.Fill", "._font.Font", "._line.Line"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_fill.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_fill.py new file mode 100644 index 0000000..156dd95 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_fill.py @@ -0,0 +1,110 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Fill(_BaseTraceHierarchyType): + _parent_path_str = "table.header" + _path_str = "table.header.fill" + _valid_props = {"color", "colorsrc"} + + @property + def color(self): + """ + Sets the cell fill color. It accepts either a specific color or + an array of colors or a 2D array of colors. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the cell fill color. It accepts either a specific + color or an array of colors or a 2D array of colors. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + """ + + def __init__(self, arg=None, color=None, colorsrc=None, **kwargs): + """ + Construct a new Fill object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.header.Fill` + color + Sets the cell fill color. It accepts either a specific + color or an array of colors or a 2D array of colors. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + + Returns + ------- + Fill + """ + super().__init__("fill") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.header.Fill +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.header.Fill`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_font.py new file mode 100644 index 0000000..7b39fc0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_font.py @@ -0,0 +1,585 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "table.header" + _path_str = "table.header.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.header.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.header.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.header.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_line.py new file mode 100644 index 0000000..0c7e311 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/header/_line.py @@ -0,0 +1,154 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "table.header" + _path_str = "table.header.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + The 'width' property is a number and may be specified as: + - An int or float + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.header.Line` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.header.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.header.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/_font.py new file mode 100644 index 0000000..d43a1e2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "table.hoverlabel" + _path_str = "table.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/_font.py new file mode 100644 index 0000000..8111db0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/table/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "table.legendgrouptitle" + _path_str = "table.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.table.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.table.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.table.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/__init__.py new file mode 100644 index 0000000..2387dd3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/__init__.py @@ -0,0 +1,39 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._domain import Domain + from ._hoverlabel import Hoverlabel + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._marker import Marker + from ._outsidetextfont import Outsidetextfont + from ._pathbar import Pathbar + from ._root import Root + from ._stream import Stream + from ._textfont import Textfont + from ._tiling import Tiling + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import pathbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".hoverlabel", ".legendgrouptitle", ".marker", ".pathbar"], + [ + "._domain.Domain", + "._hoverlabel.Hoverlabel", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._marker.Marker", + "._outsidetextfont.Outsidetextfont", + "._pathbar.Pathbar", + "._root.Root", + "._stream.Stream", + "._textfont.Textfont", + "._tiling.Tiling", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_domain.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_domain.py new file mode 100644 index 0000000..21b63ad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_domain.py @@ -0,0 +1,170 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Domain(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.domain" + _valid_props = {"column", "row", "x", "y"} + + @property + def column(self): + """ + If there is a layout grid, use the domain for this column in + the grid for this treemap trace . + + The 'column' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["column"] + + @column.setter + def column(self, val): + self["column"] = val + + @property + def row(self): + """ + If there is a layout grid, use the domain for this row in the + grid for this treemap trace . + + The 'row' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["row"] + + @row.setter + def row(self, val): + self["row"] = val + + @property + def x(self): + """ + Sets the horizontal domain of this treemap trace (in plot + fraction). + + The 'x' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'x[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'x[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Sets the vertical domain of this treemap trace (in plot + fraction). + + The 'y' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'y[0]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + (1) The 'y[1]' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + list + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def _prop_descriptions(self): + return """\ + column + If there is a layout grid, use the domain for this + column in the grid for this treemap trace . + row + If there is a layout grid, use the domain for this row + in the grid for this treemap trace . + x + Sets the horizontal domain of this treemap trace (in + plot fraction). + y + Sets the vertical domain of this treemap trace (in plot + fraction). + """ + + def __init__(self, arg=None, column=None, row=None, x=None, y=None, **kwargs): + """ + Construct a new Domain object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Domain` + column + If there is a layout grid, use the domain for this + column in the grid for this treemap trace . + row + If there is a layout grid, use the domain for this row + in the grid for this treemap trace . + x + Sets the horizontal domain of this treemap trace (in + plot fraction). + y + Sets the vertical domain of this treemap trace (in plot + fraction). + + Returns + ------- + Domain + """ + super().__init__("domain") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Domain +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Domain`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("column", arg, column) + self._set_property("row", arg, row) + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_hoverlabel.py new file mode 100644 index 0000000..a513118 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.treemap.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_insidetextfont.py new file mode 100644 index 0000000..2587366 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `textinfo` lying inside the sector. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_legendgrouptitle.py new file mode 100644 index 0000000..8a630dc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.treemap.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_marker.py new file mode 100644 index 0000000..2d2af08 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_marker.py @@ -0,0 +1,681 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.marker" + _valid_props = { + "autocolorscale", + "cauto", + "cmax", + "cmid", + "cmin", + "coloraxis", + "colorbar", + "colors", + "colorscale", + "colorssrc", + "cornerradius", + "depthfade", + "line", + "pad", + "pattern", + "reversescale", + "showscale", + } + + @property + def autocolorscale(self): + """ + 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. + + The 'autocolorscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["autocolorscale"] + + @autocolorscale.setter + def autocolorscale(self, val): + self["autocolorscale"] = val + + @property + def cauto(self): + """ + 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. + + The 'cauto' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["cauto"] + + @cauto.setter + def cauto(self, val): + self["cauto"] = val + + @property + def cmax(self): + """ + 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. + + The 'cmax' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmax"] + + @cmax.setter + def cmax(self, val): + self["cmax"] = val + + @property + def cmid(self): + """ + 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`. + + The 'cmid' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmid"] + + @cmid.setter + def cmid(self, val): + self["cmid"] = val + + @property + def cmin(self): + """ + 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. + + The 'cmin' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["cmin"] + + @cmin.setter + def cmin(self, val): + self["cmin"] = val + + @property + def coloraxis(self): + """ + 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. + + The 'coloraxis' property is an identifier of a particular + subplot, of type 'coloraxis', that may be specified as the string 'coloraxis' + optionally followed by an integer >= 1 + (e.g. 'coloraxis', 'coloraxis1', 'coloraxis2', 'coloraxis3', etc.) + + Returns + ------- + str + """ + return self["coloraxis"] + + @coloraxis.setter + def coloraxis(self, val): + self["coloraxis"] = val + + @property + def colorbar(self): + """ + The 'colorbar' property is an instance of ColorBar + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.ColorBar` + - A dict of string/value properties that will be passed + to the ColorBar constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.ColorBar + """ + return self["colorbar"] + + @colorbar.setter + def colorbar(self, val): + self["colorbar"] = val + + @property + def colors(self): + """ + Sets the color of each sector of this trace. If not specified, + the default trace color set is used to pick the sector colors. + + The 'colors' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["colors"] + + @colors.setter + def colors(self, val): + self["colors"] = val + + @property + def colorscale(self): + """ + 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,Civi + dis,Earth,Electric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow + ,RdBu,Reds,Viridis,YlGnBu,YlOrRd. + + The 'colorscale' property is a colorscale and may be + specified as: + - A list of colors that will be spaced evenly to create the colorscale. + Many predefined colorscale lists are included in the sequential, diverging, + and cyclical modules in the plotly.colors package. + - A list of 2-element lists where the first element is the + normalized color level value (starting at 0 and ending at 1), + and the second item is a valid color string. + (e.g. [[0, 'green'], [0.5, 'red'], [1.0, 'rgb(0, 0, 255)']]) + - One of the following named colorscales: + ['aggrnyl', 'agsunset', 'algae', 'amp', 'armyrose', 'balance', + 'blackbody', 'bluered', 'blues', 'blugrn', 'bluyl', 'brbg', + 'brwnyl', 'bugn', 'bupu', 'burg', 'burgyl', 'cividis', 'curl', + 'darkmint', 'deep', 'delta', 'dense', 'earth', 'edge', 'electric', + 'emrld', 'fall', 'geyser', 'gnbu', 'gray', 'greens', 'greys', + 'haline', 'hot', 'hsv', 'ice', 'icefire', 'inferno', 'jet', + 'magenta', 'magma', 'matter', 'mint', 'mrybm', 'mygbm', 'oranges', + 'orrd', 'oryel', 'oxy', 'peach', 'phase', 'picnic', 'pinkyl', + 'piyg', 'plasma', 'plotly3', 'portland', 'prgn', 'pubu', 'pubugn', + 'puor', 'purd', 'purp', 'purples', 'purpor', 'rainbow', 'rdbu', + 'rdgy', 'rdpu', 'rdylbu', 'rdylgn', 'redor', 'reds', 'solar', + 'spectral', 'speed', 'sunset', 'sunsetdark', 'teal', 'tealgrn', + 'tealrose', 'tempo', 'temps', 'thermal', 'tropic', 'turbid', + 'turbo', 'twilight', 'viridis', 'ylgn', 'ylgnbu', 'ylorbr', + 'ylorrd']. + Appending '_r' to a named colorscale reverses it. + + Returns + ------- + str + """ + return self["colorscale"] + + @colorscale.setter + def colorscale(self, val): + self["colorscale"] = val + + @property + def colorssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `colors`. + + The 'colorssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorssrc"] + + @colorssrc.setter + def colorssrc(self, val): + self["colorssrc"] = val + + @property + def cornerradius(self): + """ + Sets the maximum rounding of corners (in px). + + The 'cornerradius' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["cornerradius"] + + @cornerradius.setter + def cornerradius(self, val): + self["cornerradius"] = val + + @property + def depthfade(self): + """ + 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. + + The 'depthfade' property is an enumeration that may be specified as: + - One of the following enumeration values: + [True, False, 'reversed'] + + Returns + ------- + Any + """ + return self["depthfade"] + + @depthfade.setter + def depthfade(self, val): + self["depthfade"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def pad(self): + """ + The 'pad' property is an instance of Pad + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.Pad` + - A dict of string/value properties that will be passed + to the Pad constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.Pad + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def pattern(self): + """ + Sets the pattern within the marker. + + The 'pattern' property is an instance of Pattern + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.Pattern` + - A dict of string/value properties that will be passed + to the Pattern constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.Pattern + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def reversescale(self): + """ + 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. + + The 'reversescale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["reversescale"] + + @reversescale.setter + def reversescale(self, val): + self["reversescale"] = val + + @property + def showscale(self): + """ + Determines whether or not a colorbar is displayed for this + trace. Has an effect only if colors is set to a numerical + array. + + The 'showscale' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showscale"] + + @showscale.setter + def showscale(self, val): + self["showscale"] = val + + @property + def _prop_descriptions(self): + return """\ + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.treemap.marker.ColorBar` + instance or dict with compatible properties + colors + Sets the color of each sector of this trace. If not + specified, the default trace color set is used to pick + the sector colors. + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + cornerradius + Sets the maximum rounding of corners (in px). + depthfade + 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. + line + :class:`plotly.graph_objects.treemap.marker.Line` + instance or dict with compatible properties + pad + :class:`plotly.graph_objects.treemap.marker.Pad` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. Has an effect only if colors is set to a + numerical array. + """ + + def __init__( + self, + arg=None, + autocolorscale=None, + cauto=None, + cmax=None, + cmid=None, + cmin=None, + coloraxis=None, + colorbar=None, + colors=None, + colorscale=None, + colorssrc=None, + cornerradius=None, + depthfade=None, + line=None, + pad=None, + pattern=None, + reversescale=None, + showscale=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Marker` + autocolorscale + 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. + cauto + 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. + cmax + 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. + cmid + 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`. + cmin + 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. + coloraxis + 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. + colorbar + :class:`plotly.graph_objects.treemap.marker.ColorBar` + instance or dict with compatible properties + colors + Sets the color of each sector of this trace. If not + specified, the default trace color set is used to pick + the sector colors. + colorscale + 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,E + lectric,Greens,Greys,Hot,Jet,Picnic,Portland,Rainbow,Rd + Bu,Reds,Viridis,YlGnBu,YlOrRd. + colorssrc + Sets the source reference on Chart Studio Cloud for + `colors`. + cornerradius + Sets the maximum rounding of corners (in px). + depthfade + 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. + line + :class:`plotly.graph_objects.treemap.marker.Line` + instance or dict with compatible properties + pad + :class:`plotly.graph_objects.treemap.marker.Pad` + instance or dict with compatible properties + pattern + Sets the pattern within the marker. + reversescale + 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. + showscale + Determines whether or not a colorbar is displayed for + this trace. Has an effect only if colors is set to a + numerical array. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("autocolorscale", arg, autocolorscale) + self._set_property("cauto", arg, cauto) + self._set_property("cmax", arg, cmax) + self._set_property("cmid", arg, cmid) + self._set_property("cmin", arg, cmin) + self._set_property("coloraxis", arg, coloraxis) + self._set_property("colorbar", arg, colorbar) + self._set_property("colors", arg, colors) + self._set_property("colorscale", arg, colorscale) + self._set_property("colorssrc", arg, colorssrc) + self._set_property("cornerradius", arg, cornerradius) + self._set_property("depthfade", arg, depthfade) + self._set_property("line", arg, line) + self._set_property("pad", arg, pad) + self._set_property("pattern", arg, pattern) + self._set_property("reversescale", arg, reversescale) + self._set_property("showscale", arg, showscale) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_outsidetextfont.py new file mode 100644 index 0000000..2bbe923 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_outsidetextfont.py @@ -0,0 +1,591 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + 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. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_pathbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_pathbar.py new file mode 100644 index 0000000..295cc48 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_pathbar.py @@ -0,0 +1,198 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pathbar(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.pathbar" + _valid_props = {"edgeshape", "side", "textfont", "thickness", "visible"} + + @property + def edgeshape(self): + """ + Determines which shape is used for edges between `barpath` + labels. + + The 'edgeshape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['>', '<', '|', '/', '\\'] + + Returns + ------- + Any + """ + return self["edgeshape"] + + @edgeshape.setter + def edgeshape(self, val): + self["edgeshape"] = val + + @property + def side(self): + """ + Determines on which side of the the treemap the `pathbar` + should be presented. + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def textfont(self): + """ + Sets the font used inside `pathbar`. + + The 'textfont' property is an instance of Textfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.pathbar.Textfont` + - A dict of string/value properties that will be passed + to the Textfont constructor + + Returns + ------- + plotly.graph_objs.treemap.pathbar.Textfont + """ + return self["textfont"] + + @textfont.setter + def textfont(self, val): + self["textfont"] = val + + @property + def thickness(self): + """ + Sets the thickness of `pathbar` (in px). If not specified the + `pathbar.textfont.size` is used with 3 pixles extra padding on + each side. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [12, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def visible(self): + """ + Determines if the path bar is drawn i.e. outside the trace + `domain` and with one pixel gap. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + edgeshape + Determines which shape is used for edges between + `barpath` labels. + side + Determines on which side of the the treemap the + `pathbar` should be presented. + textfont + Sets the font used inside `pathbar`. + thickness + Sets the thickness of `pathbar` (in px). If not + specified the `pathbar.textfont.size` is used with 3 + pixles extra padding on each side. + visible + Determines if the path bar is drawn i.e. outside the + trace `domain` and with one pixel gap. + """ + + def __init__( + self, + arg=None, + edgeshape=None, + side=None, + textfont=None, + thickness=None, + visible=None, + **kwargs, + ): + """ + Construct a new Pathbar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Pathbar` + edgeshape + Determines which shape is used for edges between + `barpath` labels. + side + Determines on which side of the the treemap the + `pathbar` should be presented. + textfont + Sets the font used inside `pathbar`. + thickness + Sets the thickness of `pathbar` (in px). If not + specified the `pathbar.textfont.size` is used with 3 + pixles extra padding on each side. + visible + Determines if the path bar is drawn i.e. outside the + trace `domain` and with one pixel gap. + + Returns + ------- + Pathbar + """ + super().__init__("pathbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Pathbar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Pathbar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("edgeshape", arg, edgeshape) + self._set_property("side", arg, side) + self._set_property("textfont", arg, textfont) + self._set_property("thickness", arg, thickness) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_root.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_root.py new file mode 100644 index 0000000..9ab16ee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_root.py @@ -0,0 +1,86 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Root(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.root" + _valid_props = {"color"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + """ + + def __init__(self, arg=None, color=None, **kwargs): + """ + Construct a new Root object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.treemap.Root` + color + 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. + + Returns + ------- + Root + """ + super().__init__("root") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Root +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Root`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_stream.py new file mode 100644 index 0000000..54bbfd7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_textfont.py new file mode 100644 index 0000000..16f5ef0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `textinfo`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_tiling.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_tiling.py new file mode 100644 index 0000000..36d677e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/_tiling.py @@ -0,0 +1,195 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tiling(_BaseTraceHierarchyType): + _parent_path_str = "treemap" + _path_str = "treemap.tiling" + _valid_props = {"flip", "packing", "pad", "squarifyratio"} + + @property + def flip(self): + """ + Determines if the positions obtained from solver are flipped on + each axis. + + The 'flip' property is a flaglist and may be specified + as a string containing: + - Any combination of ['x', 'y'] joined with '+' characters + (e.g. 'x+y') + + Returns + ------- + Any + """ + return self["flip"] + + @flip.setter + def flip(self, val): + self["flip"] = val + + @property + def packing(self): + """ + Determines d3 treemap solver. For more info please refer to + https://github.com/d3/d3-hierarchy#treemap-tiling + + The 'packing' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['squarify', 'binary', 'dice', 'slice', 'slice-dice', + 'dice-slice'] + + Returns + ------- + Any + """ + return self["packing"] + + @packing.setter + def packing(self, val): + self["packing"] = val + + @property + def pad(self): + """ + Sets the inner padding (in px). + + The 'pad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["pad"] + + @pad.setter + def pad(self, val): + self["pad"] = val + + @property + def squarifyratio(self): + """ + 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. + + The 'squarifyratio' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["squarifyratio"] + + @squarifyratio.setter + def squarifyratio(self, val): + self["squarifyratio"] = val + + @property + def _prop_descriptions(self): + return """\ + flip + Determines if the positions obtained from solver are + flipped on each axis. + packing + Determines d3 treemap solver. For more info please + refer to https://github.com/d3/d3-hierarchy#treemap- + tiling + pad + Sets the inner padding (in px). + squarifyratio + 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. + """ + + def __init__( + self, arg=None, flip=None, packing=None, pad=None, squarifyratio=None, **kwargs + ): + """ + Construct a new Tiling object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.Tiling` + flip + Determines if the positions obtained from solver are + flipped on each axis. + packing + Determines d3 treemap solver. For more info please + refer to https://github.com/d3/d3-hierarchy#treemap- + tiling + pad + Sets the inner padding (in px). + squarifyratio + 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. + + Returns + ------- + Tiling + """ + super().__init__("tiling") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.Tiling +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.Tiling`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("flip", arg, flip) + self._set_property("packing", arg, packing) + self._set_property("pad", arg, pad) + self._set_property("squarifyratio", arg, squarifyratio) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/_font.py new file mode 100644 index 0000000..106b281 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "treemap.hoverlabel" + _path_str = "treemap.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/_font.py new file mode 100644 index 0000000..d0cda3d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "treemap.legendgrouptitle" + _path_str = "treemap.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.treemap.legend + grouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/__init__.py new file mode 100644 index 0000000..a3eae49 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/__init__.py @@ -0,0 +1,17 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._colorbar import ColorBar + from ._line import Line + from ._pad import Pad + from ._pattern import Pattern + from . import colorbar +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".colorbar"], + ["._colorbar.ColorBar", "._line.Line", "._pad.Pad", "._pattern.Pattern"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_colorbar.py new file mode 100644 index 0000000..a59fb86 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker" + _path_str = "treemap.marker.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.treemap.marker.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.treemap.marker.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as layout.template.data.treemap.marker + .colorbar.tickformatstopdefaults), sets the default property + values to use for elements of + treemap.marker.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.treemap.marker. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.treema + p.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + treemap.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.treemap.marker.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.marker.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.treemap.marker. + colorbar.Tickformatstop` instances or dicts with + compatible properties + tickformatstopdefaults + When used in a template (as layout.template.data.treema + p.marker.colorbar.tickformatstopdefaults), sets the + default property values to use for elements of + treemap.marker.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.treemap.marker.colorbar.Ti + tle` instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_line.py new file mode 100644 index 0000000..59f149a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_line.py @@ -0,0 +1,163 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker" + _path_str = "treemap.marker.line" + _valid_props = {"color", "colorsrc", "width", "widthsrc"} + + @property + def color(self): + """ + Sets the color of the line enclosing each sector. Defaults to + the `paper_bgcolor` value. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def width(self): + """ + Sets the width (in px) of the line enclosing each sector. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def widthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `width`. + + The 'widthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["widthsrc"] + + @widthsrc.setter + def widthsrc(self, val): + self["widthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + """ + + def __init__( + self, arg=None, color=None, colorsrc=None, width=None, widthsrc=None, **kwargs + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.marker.Line` + color + Sets the color of the line enclosing each sector. + Defaults to the `paper_bgcolor` value. + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + width + Sets the width (in px) of the line enclosing each + sector. + widthsrc + Sets the source reference on Chart Studio Cloud for + `width`. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("width", arg, width) + self._set_property("widthsrc", arg, widthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pad.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pad.py new file mode 100644 index 0000000..f3b58b7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pad.py @@ -0,0 +1,146 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pad(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker" + _path_str = "treemap.marker.pad" + _valid_props = {"b", "l", "r", "t"} + + @property + def b(self): + """ + Sets the padding form the bottom (in px). + + The 'b' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["b"] + + @b.setter + def b(self, val): + self["b"] = val + + @property + def l(self): + """ + Sets the padding form the left (in px). + + The 'l' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["l"] + + @l.setter + def l(self, val): + self["l"] = val + + @property + def r(self): + """ + Sets the padding form the right (in px). + + The 'r' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["r"] + + @r.setter + def r(self, val): + self["r"] = val + + @property + def t(self): + """ + Sets the padding form the top (in px). + + The 't' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["t"] + + @t.setter + def t(self, val): + self["t"] = val + + @property + def _prop_descriptions(self): + return """\ + b + Sets the padding form the bottom (in px). + l + Sets the padding form the left (in px). + r + Sets the padding form the right (in px). + t + Sets the padding form the top (in px). + """ + + def __init__(self, arg=None, b=None, l=None, r=None, t=None, **kwargs): + """ + Construct a new Pad object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.marker.Pad` + b + Sets the padding form the bottom (in px). + l + Sets the padding form the left (in px). + r + Sets the padding form the right (in px). + t + Sets the padding form the top (in px). + + Returns + ------- + Pad + """ + super().__init__("pad") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.Pad +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.Pad`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("b", arg, b) + self._set_property("l", arg, l) + self._set_property("r", arg, r) + self._set_property("t", arg, t) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pattern.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pattern.py new file mode 100644 index 0000000..faa03c4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/_pattern.py @@ -0,0 +1,433 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Pattern(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker" + _path_str = "treemap.marker.pattern" + _valid_props = { + "bgcolor", + "bgcolorsrc", + "fgcolor", + "fgcolorsrc", + "fgopacity", + "fillmode", + "shape", + "shapesrc", + "size", + "sizesrc", + "solidity", + "soliditysrc", + } + + @property + def bgcolor(self): + """ + 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. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def fgcolor(self): + """ + 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`. + + The 'fgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["fgcolor"] + + @fgcolor.setter + def fgcolor(self, val): + self["fgcolor"] = val + + @property + def fgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `fgcolor`. + + The 'fgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["fgcolorsrc"] + + @fgcolorsrc.setter + def fgcolorsrc(self, val): + self["fgcolorsrc"] = val + + @property + def fgopacity(self): + """ + Sets the opacity of the foreground pattern fill. Defaults to a + 0.5 when `fillmode` is "overlay". Otherwise, defaults to 1. + + The 'fgopacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fgopacity"] + + @fgopacity.setter + def fgopacity(self, val): + self["fgopacity"] = val + + @property + def fillmode(self): + """ + Determines whether `marker.color` should be used as a default + to `bgcolor` or a `fgcolor`. + + The 'fillmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['replace', 'overlay'] + + Returns + ------- + Any + """ + return self["fillmode"] + + @fillmode.setter + def fillmode(self, val): + self["fillmode"] = val + + @property + def shape(self): + """ + Sets the shape of the pattern fill. By default, no pattern is + used for filling the area. + + The 'shape' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['', '/', '\\', 'x', '-', '|', '+', '.'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["shape"] + + @shape.setter + def shape(self, val): + self["shape"] = val + + @property + def shapesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shape`. + + The 'shapesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shapesrc"] + + @shapesrc.setter + def shapesrc(self, val): + self["shapesrc"] = val + + @property + def size(self): + """ + Sets the size of unit squares of the pattern fill in pixels, + which corresponds to the interval of repetition of the pattern. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def solidity(self): + """ + 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. + + The 'solidity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["solidity"] + + @solidity.setter + def solidity(self, val): + self["solidity"] = val + + @property + def soliditysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `solidity`. + + The 'soliditysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["soliditysrc"] + + @soliditysrc.setter + def soliditysrc(self, val): + self["soliditysrc"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bgcolorsrc=None, + fgcolor=None, + fgcolorsrc=None, + fgopacity=None, + fillmode=None, + shape=None, + shapesrc=None, + size=None, + sizesrc=None, + solidity=None, + soliditysrc=None, + **kwargs, + ): + """ + Construct a new Pattern object + + Sets the pattern within the marker. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.marker.Pattern` + bgcolor + 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. + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + fgcolor + 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`. + fgcolorsrc + Sets the source reference on Chart Studio Cloud for + `fgcolor`. + fgopacity + Sets the opacity of the foreground pattern fill. + Defaults to a 0.5 when `fillmode` is "overlay". + Otherwise, defaults to 1. + fillmode + Determines whether `marker.color` should be used as a + default to `bgcolor` or a `fgcolor`. + shape + Sets the shape of the pattern fill. By default, no + pattern is used for filling the area. + shapesrc + Sets the source reference on Chart Studio Cloud for + `shape`. + size + Sets the size of unit squares of the pattern fill in + pixels, which corresponds to the interval of repetition + of the pattern. + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + solidity + 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. + soliditysrc + Sets the source reference on Chart Studio Cloud for + `solidity`. + + Returns + ------- + Pattern + """ + super().__init__("pattern") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.Pattern +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.Pattern`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("fgcolor", arg, fgcolor) + self._set_property("fgcolorsrc", arg, fgcolorsrc) + self._set_property("fgopacity", arg, fgopacity) + self._set_property("fillmode", arg, fillmode) + self._set_property("shape", arg, shape) + self._set_property("shapesrc", arg, shapesrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("solidity", arg, solidity) + self._set_property("soliditysrc", arg, soliditysrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py new file mode 100644 index 0000000..54b0173 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker.colorbar" + _path_str = "treemap.marker.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.treemap.marker + .colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py new file mode 100644 index 0000000..08aeb3e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker.colorbar" + _path_str = "treemap.marker.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.treemap.marker + .colorbar.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_title.py new file mode 100644 index 0000000..9e1633f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker.colorbar" + _path_str = "treemap.marker.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.treemap.marker.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.treemap.marker.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.treemap.marker + .colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/_font.py new file mode 100644 index 0000000..556b314 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/marker/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "treemap.marker.colorbar.title" + _path_str = "treemap.marker.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.treemap.marker + .colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.marker.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.marker.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/__init__.py new file mode 100644 index 0000000..a713099 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/__init__.py @@ -0,0 +1,11 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._textfont import Textfont +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._textfont.Textfont"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/_textfont.py new file mode 100644 index 0000000..0475771 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/treemap/pathbar/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "treemap.pathbar" + _path_str = "treemap.pathbar.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used inside `pathbar`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.treemap.pathbar.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.treemap.pathbar.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.treemap.pathbar.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/__init__.py new file mode 100644 index 0000000..bcd588d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/__init__.py @@ -0,0 +1,44 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._box import Box + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._line import Line + from ._marker import Marker + from ._meanline import Meanline + from ._selected import Selected + from ._stream import Stream + from ._unselected import Unselected + from . import box + from . import hoverlabel + from . import legendgrouptitle + from . import marker + from . import selected + from . import unselected +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".box", + ".hoverlabel", + ".legendgrouptitle", + ".marker", + ".selected", + ".unselected", + ], + [ + "._box.Box", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._line.Line", + "._marker.Marker", + "._meanline.Meanline", + "._selected.Selected", + "._stream.Stream", + "._unselected.Unselected", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_box.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_box.py new file mode 100644 index 0000000..7aa241e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_box.py @@ -0,0 +1,163 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Box(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.box" + _valid_props = {"fillcolor", "line", "visible", "width"} + + @property + def fillcolor(self): + """ + Sets the inner box plot fill color. + + The 'fillcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["fillcolor"] + + @fillcolor.setter + def fillcolor(self, val): + self["fillcolor"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.box.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.violin.box.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def visible(self): + """ + Determines if an miniature box plot is drawn inside the + violins. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + 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. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + fillcolor + Sets the inner box plot fill color. + line + :class:`plotly.graph_objects.violin.box.Line` instance + or dict with compatible properties + visible + Determines if an miniature box plot is drawn inside the + violins. + width + 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. + """ + + def __init__( + self, arg=None, fillcolor=None, line=None, visible=None, width=None, **kwargs + ): + """ + Construct a new Box object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.violin.Box` + fillcolor + Sets the inner box plot fill color. + line + :class:`plotly.graph_objects.violin.box.Line` instance + or dict with compatible properties + visible + Determines if an miniature box plot is drawn inside the + violins. + width + 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. + + Returns + ------- + Box + """ + super().__init__("box") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Box +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Box`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fillcolor", arg, fillcolor) + self._set_property("line", arg, line) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_hoverlabel.py new file mode 100644 index 0000000..b5bdfcd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.violin.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_legendgrouptitle.py new file mode 100644 index 0000000..2345d27 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.violin.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_line.py new file mode 100644 index 0000000..e4b50d6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_line.py @@ -0,0 +1,103 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the color of line bounding the violin(s). + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the width (in px) of line bounding the violin(s). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of line bounding the violin(s). + width + Sets the width (in px) of line bounding the violin(s). + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.violin.Line` + color + Sets the color of line bounding the violin(s). + width + Sets the width (in px) of line bounding the violin(s). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_marker.py new file mode 100644 index 0000000..6389cae --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_marker.py @@ -0,0 +1,357 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.marker" + _valid_props = { + "angle", + "color", + "line", + "opacity", + "outliercolor", + "size", + "symbol", + } + + @property + def angle(self): + """ + Sets the marker angle in respect to `angleref`. + + The 'angle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["angle"] + + @angle.setter + def angle(self, val): + self["angle"] = val + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.violin.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def opacity(self): + """ + Sets the marker opacity. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def outliercolor(self): + """ + Sets the color of the outlier sample points. + + The 'outliercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outliercolor"] + + @outliercolor.setter + def outliercolor(self, val): + self["outliercolor"] = val + + @property + def size(self): + """ + Sets the marker size (in px). + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def symbol(self): + """ + 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. + + The 'symbol' property is an enumeration that may be specified as: + - One of the following enumeration values: + [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'] + + Returns + ------- + Any + """ + return self["symbol"] + + @symbol.setter + def symbol(self, val): + self["symbol"] = val + + @property + def _prop_descriptions(self): + return """\ + angle + Sets the marker angle in respect to `angleref`. + color + 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. + line + :class:`plotly.graph_objects.violin.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + outliercolor + Sets the color of the outlier sample points. + size + Sets the marker size (in px). + symbol + 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. + """ + + def __init__( + self, + arg=None, + angle=None, + color=None, + line=None, + opacity=None, + outliercolor=None, + size=None, + symbol=None, + **kwargs, + ): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.violin.Marker` + angle + Sets the marker angle in respect to `angleref`. + color + 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. + line + :class:`plotly.graph_objects.violin.marker.Line` + instance or dict with compatible properties + opacity + Sets the marker opacity. + outliercolor + Sets the color of the outlier sample points. + size + Sets the marker size (in px). + symbol + 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. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("angle", arg, angle) + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._set_property("opacity", arg, opacity) + self._set_property("outliercolor", arg, outliercolor) + self._set_property("size", arg, size) + self._set_property("symbol", arg, symbol) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_meanline.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_meanline.py new file mode 100644 index 0000000..4eecef2 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_meanline.py @@ -0,0 +1,138 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Meanline(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.meanline" + _valid_props = {"color", "visible", "width"} + + @property + def color(self): + """ + Sets the mean line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def visible(self): + """ + 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. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def width(self): + """ + Sets the mean line width. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the mean line color. + visible + 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. + width + Sets the mean line width. + """ + + def __init__(self, arg=None, color=None, visible=None, width=None, **kwargs): + """ + Construct a new Meanline object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.Meanline` + color + Sets the mean line color. + visible + 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. + width + Sets the mean line width. + + Returns + ------- + Meanline + """ + super().__init__("meanline") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Meanline +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Meanline`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("visible", arg, visible) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_selected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_selected.py new file mode 100644 index 0000000..ec18b8f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_selected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Selected(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.selected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.selected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.violin.selected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.violin.selected.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Selected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.Selected` + marker + :class:`plotly.graph_objects.violin.selected.Marker` + instance or dict with compatible properties + + Returns + ------- + Selected + """ + super().__init__("selected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Selected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Selected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_stream.py new file mode 100644 index 0000000..959e455 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.violin.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_unselected.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_unselected.py new file mode 100644 index 0000000..9e13dda --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/_unselected.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Unselected(_BaseTraceHierarchyType): + _parent_path_str = "violin" + _path_str = "violin.unselected" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.violin.unselected.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.violin.unselected.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.violin.unselected.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Unselected object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.Unselected` + marker + :class:`plotly.graph_objects.violin.unselected.Marker` + instance or dict with compatible properties + + Returns + ------- + Unselected + """ + super().__init__("unselected") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.Unselected +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.Unselected`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/_line.py new file mode 100644 index 0000000..aab887d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/box/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "violin.box" + _path_str = "violin.box.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the inner box plot bounding line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the inner box plot bounding line width. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the inner box plot bounding line color. + width + Sets the inner box plot bounding line width. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.box.Line` + color + Sets the inner box plot bounding line color. + width + Sets the inner box plot bounding line width. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.box.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.box.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/_font.py new file mode 100644 index 0000000..190b7e0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "violin.hoverlabel" + _path_str = "violin.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/_font.py new file mode 100644 index 0000000..d9bd7ad --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "violin.legendgrouptitle" + _path_str = "violin.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/_line.py new file mode 100644 index 0000000..b46ec94 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/marker/_line.py @@ -0,0 +1,181 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "violin.marker" + _path_str = "violin.marker.line" + _valid_props = {"color", "outliercolor", "outlierwidth", "width"} + + @property + def color(self): + """ + 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. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def outliercolor(self): + """ + Sets the border line color of the outlier sample points. + Defaults to marker.color + + The 'outliercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outliercolor"] + + @outliercolor.setter + def outliercolor(self, val): + self["outliercolor"] = val + + @property + def outlierwidth(self): + """ + Sets the border line width (in px) of the outlier sample + points. + + The 'outlierwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlierwidth"] + + @outlierwidth.setter + def outlierwidth(self, val): + self["outlierwidth"] = val + + @property + def width(self): + """ + Sets the width (in px) of the lines bounding the marker points. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + 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. + outliercolor + Sets the border line color of the outlier sample + points. Defaults to marker.color + outlierwidth + Sets the border line width (in px) of the outlier + sample points. + width + Sets the width (in px) of the lines bounding the marker + points. + """ + + def __init__( + self, + arg=None, + color=None, + outliercolor=None, + outlierwidth=None, + width=None, + **kwargs, + ): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.marker.Line` + color + 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. + outliercolor + Sets the border line color of the outlier sample + points. Defaults to marker.color + outlierwidth + Sets the border line width (in px) of the outlier + sample points. + width + Sets the width (in px) of the lines bounding the marker + points. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("outliercolor", arg, outliercolor) + self._set_property("outlierwidth", arg, outlierwidth) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/_marker.py new file mode 100644 index 0000000..79d5ec0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/selected/_marker.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "violin.selected" + _path_str = "violin.selected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of selected points. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of selected points. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of selected points. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.selected.Marker` + color + Sets the marker color of selected points. + opacity + Sets the marker opacity of selected points. + size + Sets the marker size of selected points. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.selected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.selected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/__init__.py new file mode 100644 index 0000000..b4ba7bf --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._marker.Marker"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/_marker.py new file mode 100644 index 0000000..657f722 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/violin/unselected/_marker.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "violin.unselected" + _path_str = "violin.unselected.marker" + _valid_props = {"color", "opacity", "size"} + + @property + def color(self): + """ + Sets the marker color of unselected points, applied only when a + selection exists. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def opacity(self): + """ + Sets the marker opacity of unselected points, applied only when + a selection exists. + + The 'opacity' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["opacity"] + + @opacity.setter + def opacity(self, val): + self["opacity"] = val + + @property + def size(self): + """ + Sets the marker size of unselected points, applied only when a + selection exists. + + The 'size' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + """ + + def __init__(self, arg=None, color=None, opacity=None, size=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.violin.unselected.Marker` + color + Sets the marker color of unselected points, applied + only when a selection exists. + opacity + Sets the marker opacity of unselected points, applied + only when a selection exists. + size + Sets the marker size of unselected points, applied only + when a selection exists. + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.violin.unselected.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.violin.unselected.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("opacity", arg, opacity) + self._set_property("size", arg, size) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/__init__.py new file mode 100644 index 0000000..27f503c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/__init__.py @@ -0,0 +1,40 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._caps import Caps + from ._colorbar import ColorBar + from ._contour import Contour + from ._hoverlabel import Hoverlabel + from ._legendgrouptitle import Legendgrouptitle + from ._lighting import Lighting + from ._lightposition import Lightposition + from ._slices import Slices + from ._spaceframe import Spaceframe + from ._stream import Stream + from ._surface import Surface + from . import caps + from . import colorbar + from . import hoverlabel + from . import legendgrouptitle + from . import slices +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".caps", ".colorbar", ".hoverlabel", ".legendgrouptitle", ".slices"], + [ + "._caps.Caps", + "._colorbar.ColorBar", + "._contour.Contour", + "._hoverlabel.Hoverlabel", + "._legendgrouptitle.Legendgrouptitle", + "._lighting.Lighting", + "._lightposition.Lightposition", + "._slices.Slices", + "._spaceframe.Spaceframe", + "._stream.Stream", + "._surface.Surface", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_caps.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_caps.py new file mode 100644 index 0000000..20d4443 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_caps.py @@ -0,0 +1,131 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Caps(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.caps" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is an instance of X + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.caps.X` + - A dict of string/value properties that will be passed + to the X constructor + + Returns + ------- + plotly.graph_objs.volume.caps.X + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is an instance of Y + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.caps.Y` + - A dict of string/value properties that will be passed + to the Y constructor + + Returns + ------- + plotly.graph_objs.volume.caps.Y + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is an instance of Z + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.caps.Z` + - A dict of string/value properties that will be passed + to the Z constructor + + Returns + ------- + plotly.graph_objs.volume.caps.Z + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + :class:`plotly.graph_objects.volume.caps.X` instance or + dict with compatible properties + y + :class:`plotly.graph_objects.volume.caps.Y` instance or + dict with compatible properties + z + :class:`plotly.graph_objects.volume.caps.Z` instance or + dict with compatible properties + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Caps object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.Caps` + x + :class:`plotly.graph_objects.volume.caps.X` instance or + dict with compatible properties + y + :class:`plotly.graph_objects.volume.caps.Y` instance or + dict with compatible properties + z + :class:`plotly.graph_objects.volume.caps.Z` instance or + dict with compatible properties + + Returns + ------- + Caps + """ + super().__init__("caps") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Caps +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Caps`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_colorbar.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_colorbar.py new file mode 100644 index 0000000..9384323 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_colorbar.py @@ -0,0 +1,1722 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class ColorBar(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.colorbar" + _valid_props = { + "bgcolor", + "bordercolor", + "borderwidth", + "dtick", + "exponentformat", + "labelalias", + "len", + "lenmode", + "minexponent", + "nticks", + "orientation", + "outlinecolor", + "outlinewidth", + "separatethousands", + "showexponent", + "showticklabels", + "showtickprefix", + "showticksuffix", + "thickness", + "thicknessmode", + "tick0", + "tickangle", + "tickcolor", + "tickfont", + "tickformat", + "tickformatstopdefaults", + "tickformatstops", + "ticklabeloverflow", + "ticklabelposition", + "ticklabelstep", + "ticklen", + "tickmode", + "tickprefix", + "ticks", + "ticksuffix", + "ticktext", + "ticktextsrc", + "tickvals", + "tickvalssrc", + "tickwidth", + "title", + "x", + "xanchor", + "xpad", + "xref", + "y", + "yanchor", + "ypad", + "yref", + } + + @property + def bgcolor(self): + """ + Sets the color of padded area. + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bordercolor(self): + """ + Sets the axis line color. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def borderwidth(self): + """ + Sets the width (in px) or the border enclosing this color bar. + + The 'borderwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["borderwidth"] + + @borderwidth.setter + def borderwidth(self, val): + self["borderwidth"] = val + + @property + def dtick(self): + """ + 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" + + The 'dtick' property accepts values of any type + + Returns + ------- + Any + """ + return self["dtick"] + + @dtick.setter + def dtick(self, val): + self["dtick"] = val + + @property + def exponentformat(self): + """ + 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. + + The 'exponentformat' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['none', 'e', 'E', 'power', 'SI', 'B'] + + Returns + ------- + Any + """ + return self["exponentformat"] + + @exponentformat.setter + def exponentformat(self, val): + self["exponentformat"] = val + + @property + def labelalias(self): + """ + 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. + + The 'labelalias' property accepts values of any type + + Returns + ------- + Any + """ + return self["labelalias"] + + @labelalias.setter + def labelalias(self, val): + self["labelalias"] = val + + @property + def len(self): + """ + 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. + + The 'len' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["len"] + + @len.setter + def len(self, val): + self["len"] = val + + @property + def lenmode(self): + """ + 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. + + The 'lenmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["lenmode"] + + @lenmode.setter + def lenmode(self, val): + self["lenmode"] = val + + @property + def minexponent(self): + """ + Hide SI prefix for 10^n if |n| is below this number. This only + has an effect when `tickformat` is "SI" or "B". + + The 'minexponent' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["minexponent"] + + @minexponent.setter + def minexponent(self, val): + self["minexponent"] = val + + @property + def nticks(self): + """ + 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". + + The 'nticks' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [0, 9223372036854775807] + + Returns + ------- + int + """ + return self["nticks"] + + @nticks.setter + def nticks(self, val): + self["nticks"] = val + + @property + def orientation(self): + """ + Sets the orientation of the colorbar. + + The 'orientation' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['h', 'v'] + + Returns + ------- + Any + """ + return self["orientation"] + + @orientation.setter + def orientation(self, val): + self["orientation"] = val + + @property + def outlinecolor(self): + """ + Sets the axis line color. + + The 'outlinecolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["outlinecolor"] + + @outlinecolor.setter + def outlinecolor(self, val): + self["outlinecolor"] = val + + @property + def outlinewidth(self): + """ + Sets the width (in px) of the axis line. + + The 'outlinewidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["outlinewidth"] + + @outlinewidth.setter + def outlinewidth(self, val): + self["outlinewidth"] = val + + @property + def separatethousands(self): + """ + If "true", even 4-digit integers are separated + + The 'separatethousands' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["separatethousands"] + + @separatethousands.setter + def separatethousands(self, val): + self["separatethousands"] = val + + @property + def showexponent(self): + """ + 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. + + The 'showexponent' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showexponent"] + + @showexponent.setter + def showexponent(self, val): + self["showexponent"] = val + + @property + def showticklabels(self): + """ + Determines whether or not the tick labels are drawn. + + The 'showticklabels' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["showticklabels"] + + @showticklabels.setter + def showticklabels(self, val): + self["showticklabels"] = val + + @property + def showtickprefix(self): + """ + 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. + + The 'showtickprefix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showtickprefix"] + + @showtickprefix.setter + def showtickprefix(self, val): + self["showtickprefix"] = val + + @property + def showticksuffix(self): + """ + Same as `showtickprefix` but for tick suffixes. + + The 'showticksuffix' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['all', 'first', 'last', 'none'] + + Returns + ------- + Any + """ + return self["showticksuffix"] + + @showticksuffix.setter + def showticksuffix(self, val): + self["showticksuffix"] = val + + @property + def thickness(self): + """ + Sets the thickness of the color bar This measure excludes the + size of the padding, ticks and labels. + + The 'thickness' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["thickness"] + + @thickness.setter + def thickness(self, val): + self["thickness"] = val + + @property + def thicknessmode(self): + """ + 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. + + The 'thicknessmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['fraction', 'pixels'] + + Returns + ------- + Any + """ + return self["thicknessmode"] + + @thicknessmode.setter + def thicknessmode(self, val): + self["thicknessmode"] = val + + @property + def tick0(self): + """ + 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. + + The 'tick0' property accepts values of any type + + Returns + ------- + Any + """ + return self["tick0"] + + @tick0.setter + def tick0(self, val): + self["tick0"] = val + + @property + def tickangle(self): + """ + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the tick + labels vertically. + + The 'tickangle' property is a angle (in degrees) that may be + specified as a number between -180 and 180. + Numeric values outside this range are converted to the equivalent value + (e.g. 270 is converted to -90). + + Returns + ------- + int|float + """ + return self["tickangle"] + + @tickangle.setter + def tickangle(self, val): + self["tickangle"] = val + + @property + def tickcolor(self): + """ + Sets the tick color. + + The 'tickcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["tickcolor"] + + @tickcolor.setter + def tickcolor(self, val): + self["tickcolor"] = val + + @property + def tickfont(self): + """ + Sets the color bar's tick label font + + The 'tickfont' property is an instance of Tickfont + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.colorbar.Tickfont` + - A dict of string/value properties that will be passed + to the Tickfont constructor + + Returns + ------- + plotly.graph_objs.volume.colorbar.Tickfont + """ + return self["tickfont"] + + @tickfont.setter + def tickfont(self, val): + self["tickfont"] = val + + @property + def tickformat(self): + """ + 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" + + The 'tickformat' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickformat"] + + @tickformat.setter + def tickformat(self, val): + self["tickformat"] = val + + @property + def tickformatstops(self): + """ + The 'tickformatstops' property is a tuple of instances of + Tickformatstop that may be specified as: + - A list or tuple of instances of plotly.graph_objs.volume.colorbar.Tickformatstop + - A list or tuple of dicts of string/value properties that + will be passed to the Tickformatstop constructor + + Returns + ------- + tuple[plotly.graph_objs.volume.colorbar.Tickformatstop] + """ + return self["tickformatstops"] + + @tickformatstops.setter + def tickformatstops(self, val): + self["tickformatstops"] = val + + @property + def tickformatstopdefaults(self): + """ + When used in a template (as + layout.template.data.volume.colorbar.tickformatstopdefaults), + sets the default property values to use for elements of + volume.colorbar.tickformatstops + + The 'tickformatstopdefaults' property is an instance of Tickformatstop + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.colorbar.Tickformatstop` + - A dict of string/value properties that will be passed + to the Tickformatstop constructor + + Returns + ------- + plotly.graph_objs.volume.colorbar.Tickformatstop + """ + return self["tickformatstopdefaults"] + + @tickformatstopdefaults.setter + def tickformatstopdefaults(self, val): + self["tickformatstopdefaults"] = val + + @property + def ticklabeloverflow(self): + """ + 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*. + + The 'ticklabeloverflow' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['allow', 'hide past div', 'hide past domain'] + + Returns + ------- + Any + """ + return self["ticklabeloverflow"] + + @ticklabeloverflow.setter + def ticklabeloverflow(self, val): + self["ticklabeloverflow"] = val + + @property + def ticklabelposition(self): + """ + 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". + + The 'ticklabelposition' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', 'outside top', 'inside top', + 'outside left', 'inside left', 'outside right', 'inside + right', 'outside bottom', 'inside bottom'] + + Returns + ------- + Any + """ + return self["ticklabelposition"] + + @ticklabelposition.setter + def ticklabelposition(self, val): + self["ticklabelposition"] = val + + @property + def ticklabelstep(self): + """ + 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". + + The 'ticklabelstep' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["ticklabelstep"] + + @ticklabelstep.setter + def ticklabelstep(self, val): + self["ticklabelstep"] = val + + @property + def ticklen(self): + """ + Sets the tick length (in px). + + The 'ticklen' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ticklen"] + + @ticklen.setter + def ticklen(self, val): + self["ticklen"] = val + + @property + def tickmode(self): + """ + 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). + + The 'tickmode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['auto', 'linear', 'array'] + + Returns + ------- + Any + """ + return self["tickmode"] + + @tickmode.setter + def tickmode(self, val): + self["tickmode"] = val + + @property + def tickprefix(self): + """ + Sets a tick label prefix. + + The 'tickprefix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["tickprefix"] + + @tickprefix.setter + def tickprefix(self, val): + self["tickprefix"] = val + + @property + def ticks(self): + """ + 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. + + The 'ticks' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['outside', 'inside', ''] + + Returns + ------- + Any + """ + return self["ticks"] + + @ticks.setter + def ticks(self, val): + self["ticks"] = val + + @property + def ticksuffix(self): + """ + Sets a tick label suffix. + + The 'ticksuffix' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["ticksuffix"] + + @ticksuffix.setter + def ticksuffix(self, val): + self["ticksuffix"] = val + + @property + def ticktext(self): + """ + Sets the text displayed at the ticks position via `tickvals`. + Only has an effect if `tickmode` is set to "array". Used with + `tickvals`. + + The 'ticktext' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["ticktext"] + + @ticktext.setter + def ticktext(self, val): + self["ticktext"] = val + + @property + def ticktextsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `ticktext`. + + The 'ticktextsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["ticktextsrc"] + + @ticktextsrc.setter + def ticktextsrc(self, val): + self["ticktextsrc"] = val + + @property + def tickvals(self): + """ + Sets the values at which ticks on this axis appear. Only has an + effect if `tickmode` is set to "array". Used with `ticktext`. + + The 'tickvals' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["tickvals"] + + @tickvals.setter + def tickvals(self, val): + self["tickvals"] = val + + @property + def tickvalssrc(self): + """ + Sets the source reference on Chart Studio Cloud for `tickvals`. + + The 'tickvalssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["tickvalssrc"] + + @tickvalssrc.setter + def tickvalssrc(self, val): + self["tickvalssrc"] = val + + @property + def tickwidth(self): + """ + Sets the tick width (in px). + + The 'tickwidth' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["tickwidth"] + + @tickwidth.setter + def tickwidth(self, val): + self["tickwidth"] = val + + @property + def title(self): + """ + The 'title' property is an instance of Title + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.colorbar.Title` + - A dict of string/value properties that will be passed + to the Title constructor + + Returns + ------- + plotly.graph_objs.volume.colorbar.Title + """ + return self["title"] + + @title.setter + def title(self, val): + self["title"] = val + + @property + def x(self): + """ + 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". + + The 'x' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def xanchor(self): + """ + 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". + + The 'xanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'center', 'right'] + + Returns + ------- + Any + """ + return self["xanchor"] + + @xanchor.setter + def xanchor(self, val): + self["xanchor"] = val + + @property + def xpad(self): + """ + Sets the amount of padding (in px) along the x direction. + + The 'xpad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["xpad"] + + @xpad.setter + def xpad(self, val): + self["xpad"] = val + + @property + def xref(self): + """ + Sets the container `x` refers to. "container" spans the entire + `width` of the plot. "paper" refers to the width of the + plotting area only. + + The 'xref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["xref"] + + @xref.setter + def xref(self, val): + self["xref"] = val + + @property + def y(self): + """ + 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". + + The 'y' property is a number and may be specified as: + - An int or float + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def yanchor(self): + """ + 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". + + The 'yanchor' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['top', 'middle', 'bottom'] + + Returns + ------- + Any + """ + return self["yanchor"] + + @yanchor.setter + def yanchor(self, val): + self["yanchor"] = val + + @property + def ypad(self): + """ + Sets the amount of padding (in px) along the y direction. + + The 'ypad' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["ypad"] + + @ypad.setter + def ypad(self, val): + self["ypad"] = val + + @property + def yref(self): + """ + Sets the container `y` refers to. "container" spans the entire + `height` of the plot. "paper" refers to the height of the + plotting area only. + + The 'yref' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['container', 'paper'] + + Returns + ------- + Any + """ + return self["yref"] + + @yref.setter + def yref(self, val): + self["yref"] = val + + @property + def _prop_descriptions(self): + return """\ + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.volume.colorbar + .Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.volume + .colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + volume.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.volume.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + """ + + def __init__( + self, + arg=None, + bgcolor=None, + bordercolor=None, + borderwidth=None, + dtick=None, + exponentformat=None, + labelalias=None, + len=None, + lenmode=None, + minexponent=None, + nticks=None, + orientation=None, + outlinecolor=None, + outlinewidth=None, + separatethousands=None, + showexponent=None, + showticklabels=None, + showtickprefix=None, + showticksuffix=None, + thickness=None, + thicknessmode=None, + tick0=None, + tickangle=None, + tickcolor=None, + tickfont=None, + tickformat=None, + tickformatstops=None, + tickformatstopdefaults=None, + ticklabeloverflow=None, + ticklabelposition=None, + ticklabelstep=None, + ticklen=None, + tickmode=None, + tickprefix=None, + ticks=None, + ticksuffix=None, + ticktext=None, + ticktextsrc=None, + tickvals=None, + tickvalssrc=None, + tickwidth=None, + title=None, + x=None, + xanchor=None, + xpad=None, + xref=None, + y=None, + yanchor=None, + ypad=None, + yref=None, + **kwargs, + ): + """ + Construct a new ColorBar object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.ColorBar` + bgcolor + Sets the color of padded area. + bordercolor + Sets the axis line color. + borderwidth + Sets the width (in px) or the border enclosing this + color bar. + dtick + 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" + exponentformat + 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. + labelalias + 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. + len + 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. + lenmode + 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. + minexponent + Hide SI prefix for 10^n if |n| is below this number. + This only has an effect when `tickformat` is "SI" or + "B". + nticks + 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". + orientation + Sets the orientation of the colorbar. + outlinecolor + Sets the axis line color. + outlinewidth + Sets the width (in px) of the axis line. + separatethousands + If "true", even 4-digit integers are separated + showexponent + 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. + showticklabels + Determines whether or not the tick labels are drawn. + showtickprefix + 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. + showticksuffix + Same as `showtickprefix` but for tick suffixes. + thickness + Sets the thickness of the color bar This measure + excludes the size of the padding, ticks and labels. + thicknessmode + 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. + tick0 + 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. + tickangle + Sets the angle of the tick labels with respect to the + horizontal. For example, a `tickangle` of -90 draws the + tick labels vertically. + tickcolor + Sets the tick color. + tickfont + Sets the color bar's tick label font + tickformat + 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" + tickformatstops + A tuple of :class:`plotly.graph_objects.volume.colorbar + .Tickformatstop` instances or dicts with compatible + properties + tickformatstopdefaults + When used in a template (as layout.template.data.volume + .colorbar.tickformatstopdefaults), sets the default + property values to use for elements of + volume.colorbar.tickformatstops + ticklabeloverflow + 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*. + ticklabelposition + 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". + ticklabelstep + 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". + ticklen + Sets the tick length (in px). + tickmode + 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). + tickprefix + Sets a tick label prefix. + ticks + 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. + ticksuffix + Sets a tick label suffix. + ticktext + Sets the text displayed at the ticks position via + `tickvals`. Only has an effect if `tickmode` is set to + "array". Used with `tickvals`. + ticktextsrc + Sets the source reference on Chart Studio Cloud for + `ticktext`. + tickvals + Sets the values at which ticks on this axis appear. + Only has an effect if `tickmode` is set to "array". + Used with `ticktext`. + tickvalssrc + Sets the source reference on Chart Studio Cloud for + `tickvals`. + tickwidth + Sets the tick width (in px). + title + :class:`plotly.graph_objects.volume.colorbar.Title` + instance or dict with compatible properties + x + 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". + xanchor + 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". + xpad + Sets the amount of padding (in px) along the x + direction. + xref + Sets the container `x` refers to. "container" spans the + entire `width` of the plot. "paper" refers to the width + of the plotting area only. + y + 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". + yanchor + 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". + ypad + Sets the amount of padding (in px) along the y + direction. + yref + Sets the container `y` refers to. "container" spans the + entire `height` of the plot. "paper" refers to the + height of the plotting area only. + + Returns + ------- + ColorBar + """ + super().__init__("colorbar") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.ColorBar +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.ColorBar`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("borderwidth", arg, borderwidth) + self._set_property("dtick", arg, dtick) + self._set_property("exponentformat", arg, exponentformat) + self._set_property("labelalias", arg, labelalias) + self._set_property("len", arg, len) + self._set_property("lenmode", arg, lenmode) + self._set_property("minexponent", arg, minexponent) + self._set_property("nticks", arg, nticks) + self._set_property("orientation", arg, orientation) + self._set_property("outlinecolor", arg, outlinecolor) + self._set_property("outlinewidth", arg, outlinewidth) + self._set_property("separatethousands", arg, separatethousands) + self._set_property("showexponent", arg, showexponent) + self._set_property("showticklabels", arg, showticklabels) + self._set_property("showtickprefix", arg, showtickprefix) + self._set_property("showticksuffix", arg, showticksuffix) + self._set_property("thickness", arg, thickness) + self._set_property("thicknessmode", arg, thicknessmode) + self._set_property("tick0", arg, tick0) + self._set_property("tickangle", arg, tickangle) + self._set_property("tickcolor", arg, tickcolor) + self._set_property("tickfont", arg, tickfont) + self._set_property("tickformat", arg, tickformat) + self._set_property("tickformatstops", arg, tickformatstops) + self._set_property("tickformatstopdefaults", arg, tickformatstopdefaults) + self._set_property("ticklabeloverflow", arg, ticklabeloverflow) + self._set_property("ticklabelposition", arg, ticklabelposition) + self._set_property("ticklabelstep", arg, ticklabelstep) + self._set_property("ticklen", arg, ticklen) + self._set_property("tickmode", arg, tickmode) + self._set_property("tickprefix", arg, tickprefix) + self._set_property("ticks", arg, ticks) + self._set_property("ticksuffix", arg, ticksuffix) + self._set_property("ticktext", arg, ticktext) + self._set_property("ticktextsrc", arg, ticktextsrc) + self._set_property("tickvals", arg, tickvals) + self._set_property("tickvalssrc", arg, tickvalssrc) + self._set_property("tickwidth", arg, tickwidth) + self._set_property("title", arg, title) + self._set_property("x", arg, x) + self._set_property("xanchor", arg, xanchor) + self._set_property("xpad", arg, xpad) + self._set_property("xref", arg, xref) + self._set_property("y", arg, y) + self._set_property("yanchor", arg, yanchor) + self._set_property("ypad", arg, ypad) + self._set_property("yref", arg, yref) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_contour.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_contour.py new file mode 100644 index 0000000..61a81b5 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_contour.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Contour(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.contour" + _valid_props = {"color", "show", "width"} + + @property + def color(self): + """ + Sets the color of the contour lines. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def show(self): + """ + Sets whether or not dynamic contours are shown on hover + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def width(self): + """ + Sets the width of the contour lines. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [1, 16] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the color of the contour lines. + show + Sets whether or not dynamic contours are shown on hover + width + Sets the width of the contour lines. + """ + + def __init__(self, arg=None, color=None, show=None, width=None, **kwargs): + """ + Construct a new Contour object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Contour` + color + Sets the color of the contour lines. + show + Sets whether or not dynamic contours are shown on hover + width + Sets the width of the contour lines. + + Returns + ------- + Contour + """ + super().__init__("contour") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Contour +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Contour`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("show", arg, show) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_hoverlabel.py new file mode 100644 index 0000000..1236f19 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.volume.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_legendgrouptitle.py new file mode 100644 index 0000000..5d92a29 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.volume.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lighting.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lighting.py new file mode 100644 index 0000000..3d01d1e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lighting.py @@ -0,0 +1,260 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lighting(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.lighting" + _valid_props = { + "ambient", + "diffuse", + "facenormalsepsilon", + "fresnel", + "roughness", + "specular", + "vertexnormalsepsilon", + } + + @property + def ambient(self): + """ + Ambient light increases overall color visibility but can wash + out the image. + + The 'ambient' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["ambient"] + + @ambient.setter + def ambient(self, val): + self["ambient"] = val + + @property + def diffuse(self): + """ + Represents the extent that incident rays are reflected in a + range of angles. + + The 'diffuse' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["diffuse"] + + @diffuse.setter + def diffuse(self, val): + self["diffuse"] = val + + @property + def facenormalsepsilon(self): + """ + Epsilon for face normals calculation avoids math issues arising + from degenerate geometry. + + The 'facenormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["facenormalsepsilon"] + + @facenormalsepsilon.setter + def facenormalsepsilon(self, val): + self["facenormalsepsilon"] = val + + @property + def fresnel(self): + """ + 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. + + The 'fresnel' property is a number and may be specified as: + - An int or float in the interval [0, 5] + + Returns + ------- + int|float + """ + return self["fresnel"] + + @fresnel.setter + def fresnel(self, val): + self["fresnel"] = val + + @property + def roughness(self): + """ + Alters specular reflection; the rougher the surface, the wider + and less contrasty the shine. + + The 'roughness' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["roughness"] + + @roughness.setter + def roughness(self, val): + self["roughness"] = val + + @property + def specular(self): + """ + Represents the level that incident rays are reflected in a + single direction, causing shine. + + The 'specular' property is a number and may be specified as: + - An int or float in the interval [0, 2] + + Returns + ------- + int|float + """ + return self["specular"] + + @specular.setter + def specular(self, val): + self["specular"] = val + + @property + def vertexnormalsepsilon(self): + """ + Epsilon for vertex normals calculation avoids math issues + arising from degenerate geometry. + + The 'vertexnormalsepsilon' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["vertexnormalsepsilon"] + + @vertexnormalsepsilon.setter + def vertexnormalsepsilon(self, val): + self["vertexnormalsepsilon"] = val + + @property + def _prop_descriptions(self): + return """\ + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + """ + + def __init__( + self, + arg=None, + ambient=None, + diffuse=None, + facenormalsepsilon=None, + fresnel=None, + roughness=None, + specular=None, + vertexnormalsepsilon=None, + **kwargs, + ): + """ + Construct a new Lighting object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Lighting` + ambient + Ambient light increases overall color visibility but + can wash out the image. + diffuse + Represents the extent that incident rays are reflected + in a range of angles. + facenormalsepsilon + Epsilon for face normals calculation avoids math issues + arising from degenerate geometry. + fresnel + 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. + roughness + Alters specular reflection; the rougher the surface, + the wider and less contrasty the shine. + specular + Represents the level that incident rays are reflected + in a single direction, causing shine. + vertexnormalsepsilon + Epsilon for vertex normals calculation avoids math + issues arising from degenerate geometry. + + Returns + ------- + Lighting + """ + super().__init__("lighting") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Lighting +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Lighting`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("ambient", arg, ambient) + self._set_property("diffuse", arg, diffuse) + self._set_property("facenormalsepsilon", arg, facenormalsepsilon) + self._set_property("fresnel", arg, fresnel) + self._set_property("roughness", arg, roughness) + self._set_property("specular", arg, specular) + self._set_property("vertexnormalsepsilon", arg, vertexnormalsepsilon) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lightposition.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lightposition.py new file mode 100644 index 0000000..50fcd20 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_lightposition.py @@ -0,0 +1,129 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Lightposition(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.lightposition" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + Numeric vector, representing the X coordinate for each vertex. + + The 'x' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + Numeric vector, representing the Y coordinate for each vertex. + + The 'y' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + Numeric vector, representing the Z coordinate for each vertex. + + The 'z' property is a number and may be specified as: + - An int or float in the interval [-100000, 100000] + + Returns + ------- + int|float + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Lightposition object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Lightposition` + x + Numeric vector, representing the X coordinate for each + vertex. + y + Numeric vector, representing the Y coordinate for each + vertex. + z + Numeric vector, representing the Z coordinate for each + vertex. + + Returns + ------- + Lightposition + """ + super().__init__("lightposition") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Lightposition +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Lightposition`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_slices.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_slices.py new file mode 100644 index 0000000..6faf4de --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_slices.py @@ -0,0 +1,131 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Slices(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.slices" + _valid_props = {"x", "y", "z"} + + @property + def x(self): + """ + The 'x' property is an instance of X + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.slices.X` + - A dict of string/value properties that will be passed + to the X constructor + + Returns + ------- + plotly.graph_objs.volume.slices.X + """ + return self["x"] + + @x.setter + def x(self, val): + self["x"] = val + + @property + def y(self): + """ + The 'y' property is an instance of Y + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.slices.Y` + - A dict of string/value properties that will be passed + to the Y constructor + + Returns + ------- + plotly.graph_objs.volume.slices.Y + """ + return self["y"] + + @y.setter + def y(self, val): + self["y"] = val + + @property + def z(self): + """ + The 'z' property is an instance of Z + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.slices.Z` + - A dict of string/value properties that will be passed + to the Z constructor + + Returns + ------- + plotly.graph_objs.volume.slices.Z + """ + return self["z"] + + @z.setter + def z(self, val): + self["z"] = val + + @property + def _prop_descriptions(self): + return """\ + x + :class:`plotly.graph_objects.volume.slices.X` instance + or dict with compatible properties + y + :class:`plotly.graph_objects.volume.slices.Y` instance + or dict with compatible properties + z + :class:`plotly.graph_objects.volume.slices.Z` instance + or dict with compatible properties + """ + + def __init__(self, arg=None, x=None, y=None, z=None, **kwargs): + """ + Construct a new Slices object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.Slices` + x + :class:`plotly.graph_objects.volume.slices.X` instance + or dict with compatible properties + y + :class:`plotly.graph_objects.volume.slices.Y` instance + or dict with compatible properties + z + :class:`plotly.graph_objects.volume.slices.Z` instance + or dict with compatible properties + + Returns + ------- + Slices + """ + super().__init__("slices") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Slices +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Slices`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("x", arg, x) + self._set_property("y", arg, y) + self._set_property("z", arg, z) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_spaceframe.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_spaceframe.py new file mode 100644 index 0000000..ff07188 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_spaceframe.py @@ -0,0 +1,117 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Spaceframe(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.spaceframe" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new Spaceframe object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Spaceframe` + fill + 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. + show + 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. + + Returns + ------- + Spaceframe + """ + super().__init__("spaceframe") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Spaceframe +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Spaceframe`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_stream.py new file mode 100644 index 0000000..272624b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_stream.py @@ -0,0 +1,113 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_surface.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_surface.py new file mode 100644 index 0000000..0f35f1b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/_surface.py @@ -0,0 +1,193 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Surface(_BaseTraceHierarchyType): + _parent_path_str = "volume" + _path_str = "volume.surface" + _valid_props = {"count", "fill", "pattern", "show"} + + @property + def count(self): + """ + 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. + + The 'count' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 9223372036854775807] + + Returns + ------- + int + """ + return self["count"] + + @count.setter + def count(self, val): + self["count"] = val + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def pattern(self): + """ + 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. + + The 'pattern' property is a flaglist and may be specified + as a string containing: + - Any combination of ['A', 'B', 'C', 'D', 'E'] joined with '+' characters + (e.g. 'A+B') + OR exactly one of ['all', 'odd', 'even'] (e.g. 'even') + + Returns + ------- + Any + """ + return self["pattern"] + + @pattern.setter + def pattern(self, val): + self["pattern"] = val + + @property + def show(self): + """ + Hides/displays surfaces between minimum and maximum iso-values. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + count + 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. + fill + 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. + pattern + 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. + show + Hides/displays surfaces between minimum and maximum + iso-values. + """ + + def __init__( + self, arg=None, count=None, fill=None, pattern=None, show=None, **kwargs + ): + """ + Construct a new Surface object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.Surface` + count + 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. + fill + 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. + pattern + 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. + show + Hides/displays surfaces between minimum and maximum + iso-values. + + Returns + ------- + Surface + """ + super().__init__("surface") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.Surface +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.Surface`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("count", arg, count) + self._set_property("fill", arg, fill) + self._set_property("pattern", arg, pattern) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/__init__.py new file mode 100644 index 0000000..3802eba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._x import X + from ._y import Y + from ._z import Z +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._x.X", "._y.Y", "._z.Z"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_x.py new file mode 100644 index 0000000..2c3c692 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_x.py @@ -0,0 +1,121 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class X(_BaseTraceHierarchyType): + _parent_path_str = "volume.caps" + _path_str = "volume.caps.x" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new X object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.caps.X` + fill + 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. + show + 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. + + Returns + ------- + X + """ + super().__init__("x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.caps.X +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.caps.X`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_y.py new file mode 100644 index 0000000..6ad9bde --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_y.py @@ -0,0 +1,121 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Y(_BaseTraceHierarchyType): + _parent_path_str = "volume.caps" + _path_str = "volume.caps.y" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new Y object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.caps.Y` + fill + 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. + show + 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. + + Returns + ------- + Y + """ + super().__init__("y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.caps.Y +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.caps.Y`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_z.py new file mode 100644 index 0000000..37064fd --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/caps/_z.py @@ -0,0 +1,121 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Z(_BaseTraceHierarchyType): + _parent_path_str = "volume.caps" + _path_str = "volume.caps.z" + _valid_props = {"fill", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def show(self): + """ + 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. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + show + 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. + """ + + def __init__(self, arg=None, fill=None, show=None, **kwargs): + """ + Construct a new Z object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.caps.Z` + fill + 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. + show + 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. + + Returns + ------- + Z + """ + super().__init__("z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.caps.Z +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.caps.Z`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/__init__.py new file mode 100644 index 0000000..4690d3c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/__init__.py @@ -0,0 +1,16 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._tickfont import Tickfont + from ._tickformatstop import Tickformatstop + from ._title import Title + from . import title +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".title"], + ["._tickfont.Tickfont", "._tickformatstop.Tickformatstop", "._title.Title"], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickfont.py new file mode 100644 index 0000000..ad46aa7 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickfont.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickfont(_BaseTraceHierarchyType): + _parent_path_str = "volume.colorbar" + _path_str = "volume.colorbar.tickfont" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Tickfont object + + Sets the color bar's tick label font + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.colorbar.Tickfont` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Tickfont + """ + super().__init__("tickfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.colorbar.Tickfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.colorbar.Tickfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickformatstop.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickformatstop.py new file mode 100644 index 0000000..67ddb27 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_tickformatstop.py @@ -0,0 +1,241 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Tickformatstop(_BaseTraceHierarchyType): + _parent_path_str = "volume.colorbar" + _path_str = "volume.colorbar.tickformatstop" + _valid_props = {"dtickrange", "enabled", "name", "templateitemname", "value"} + + @property + def dtickrange(self): + """ + 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" + + The 'dtickrange' property is an info array that may be specified as: + + * a list or tuple of 2 elements where: + (0) The 'dtickrange[0]' property accepts values of any type + (1) The 'dtickrange[1]' property accepts values of any type + + Returns + ------- + list + """ + return self["dtickrange"] + + @dtickrange.setter + def dtickrange(self, val): + self["dtickrange"] = val + + @property + def enabled(self): + """ + Determines whether or not this stop is used. If `false`, this + stop is ignored even within its `dtickrange`. + + The 'enabled' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["enabled"] + + @enabled.setter + def enabled(self, val): + self["enabled"] = val + + @property + def name(self): + """ + 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. + + The 'name' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["name"] + + @name.setter + def name(self, val): + self["name"] = val + + @property + def templateitemname(self): + """ + 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`. + + The 'templateitemname' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["templateitemname"] + + @templateitemname.setter + def templateitemname(self, val): + self["templateitemname"] = val + + @property + def value(self): + """ + string - dtickformat for described zoom level, the same as + "tickformat" + + The 'value' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["value"] + + @value.setter + def value(self, val): + self["value"] = val + + @property + def _prop_descriptions(self): + return """\ + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + """ + + def __init__( + self, + arg=None, + dtickrange=None, + enabled=None, + name=None, + templateitemname=None, + value=None, + **kwargs, + ): + """ + Construct a new Tickformatstop object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.volume.colorba + r.Tickformatstop` + dtickrange + 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" + enabled + Determines whether or not this stop is used. If + `false`, this stop is ignored even within its + `dtickrange`. + name + 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. + templateitemname + 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`. + value + string - dtickformat for described zoom level, the same + as "tickformat" + + Returns + ------- + Tickformatstop + """ + super().__init__("tickformatstops") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.colorbar.Tickformatstop +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.colorbar.Tickformatstop`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("dtickrange", arg, dtickrange) + self._set_property("enabled", arg, enabled) + self._set_property("name", arg, name) + self._set_property("templateitemname", arg, templateitemname) + self._set_property("value", arg, value) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_title.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_title.py new file mode 100644 index 0000000..17a9258 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/_title.py @@ -0,0 +1,136 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Title(_BaseTraceHierarchyType): + _parent_path_str = "volume.colorbar" + _path_str = "volume.colorbar.title" + _valid_props = {"font", "side", "text"} + + @property + def font(self): + """ + Sets this color bar's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.volume.colorbar.title.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.volume.colorbar.title.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def side(self): + """ + 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". + + The 'side' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['right', 'top', 'bottom'] + + Returns + ------- + Any + """ + return self["side"] + + @side.setter + def side(self, val): + self["side"] = val + + @property + def text(self): + """ + Sets the title of the color bar. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + """ + + def __init__(self, arg=None, font=None, side=None, text=None, **kwargs): + """ + Construct a new Title object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.colorbar.Title` + font + Sets this color bar's title font. + side + 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". + text + Sets the title of the color bar. + + Returns + ------- + Title + """ + super().__init__("title") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.colorbar.Title +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.colorbar.Title`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("side", arg, side) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/_font.py new file mode 100644 index 0000000..cf0cb0d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/colorbar/title/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "volume.colorbar.title" + _path_str = "volume.colorbar.title.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this color bar's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.colorbar.title.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.colorbar.title.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.colorbar.title.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/_font.py new file mode 100644 index 0000000..43ab7f3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "volume.hoverlabel" + _path_str = "volume.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/_font.py new file mode 100644 index 0000000..59553af --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "volume.legendgrouptitle" + _path_str = "volume.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.legendgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/__init__.py new file mode 100644 index 0000000..3802eba --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/__init__.py @@ -0,0 +1,13 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._x import X + from ._y import Y + from ._z import Z +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [], ["._x.X", "._y.Y", "._z.Z"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_x.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_x.py new file mode 100644 index 0000000..b77e2c4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_x.py @@ -0,0 +1,177 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class X(_BaseTraceHierarchyType): + _parent_path_str = "volume.slices" + _path_str = "volume.slices.x" + _valid_props = {"fill", "locations", "locationssrc", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def locations(self): + """ + 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. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def show(self): + """ + Determines whether or not slice planes about the x dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the x + dimension are drawn. + """ + + def __init__( + self, + arg=None, + fill=None, + locations=None, + locationssrc=None, + show=None, + **kwargs, + ): + """ + Construct a new X object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.slices.X` + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the x + dimension are drawn. + + Returns + ------- + X + """ + super().__init__("x") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.slices.X +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.slices.X`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_y.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_y.py new file mode 100644 index 0000000..feb3622 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_y.py @@ -0,0 +1,177 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Y(_BaseTraceHierarchyType): + _parent_path_str = "volume.slices" + _path_str = "volume.slices.y" + _valid_props = {"fill", "locations", "locationssrc", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def locations(self): + """ + 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. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def show(self): + """ + Determines whether or not slice planes about the y dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the y + dimension are drawn. + """ + + def __init__( + self, + arg=None, + fill=None, + locations=None, + locationssrc=None, + show=None, + **kwargs, + ): + """ + Construct a new Y object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.slices.Y` + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the y + dimension are drawn. + + Returns + ------- + Y + """ + super().__init__("y") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.slices.Y +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.slices.Y`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_z.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_z.py new file mode 100644 index 0000000..4b37d9d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/volume/slices/_z.py @@ -0,0 +1,177 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Z(_BaseTraceHierarchyType): + _parent_path_str = "volume.slices" + _path_str = "volume.slices.z" + _valid_props = {"fill", "locations", "locationssrc", "show"} + + @property + def fill(self): + """ + 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. + + The 'fill' property is a number and may be specified as: + - An int or float in the interval [0, 1] + + Returns + ------- + int|float + """ + return self["fill"] + + @fill.setter + def fill(self, val): + self["fill"] = val + + @property + def locations(self): + """ + 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. + + The 'locations' property is an array that may be specified as a tuple, + list, numpy array, or pandas Series + + Returns + ------- + numpy.ndarray + """ + return self["locations"] + + @locations.setter + def locations(self, val): + self["locations"] = val + + @property + def locationssrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `locations`. + + The 'locationssrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["locationssrc"] + + @locationssrc.setter + def locationssrc(self, val): + self["locationssrc"] = val + + @property + def show(self): + """ + Determines whether or not slice planes about the z dimension + are drawn. + + The 'show' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["show"] + + @show.setter + def show(self, val): + self["show"] = val + + @property + def _prop_descriptions(self): + return """\ + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the z + dimension are drawn. + """ + + def __init__( + self, + arg=None, + fill=None, + locations=None, + locationssrc=None, + show=None, + **kwargs, + ): + """ + Construct a new Z object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.volume.slices.Z` + fill + 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. + locations + 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. + locationssrc + Sets the source reference on Chart Studio Cloud for + `locations`. + show + Determines whether or not slice planes about the z + dimension are drawn. + + Returns + ------- + Z + """ + super().__init__("z") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.volume.slices.Z +constructor must be a dict or +an instance of :class:`plotly.graph_objs.volume.slices.Z`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("fill", arg, fill) + self._set_property("locations", arg, locations) + self._set_property("locationssrc", arg, locationssrc) + self._set_property("show", arg, show) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/__init__.py new file mode 100644 index 0000000..e6bb5e4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/__init__.py @@ -0,0 +1,46 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._connector import Connector + from ._decreasing import Decreasing + from ._hoverlabel import Hoverlabel + from ._increasing import Increasing + from ._insidetextfont import Insidetextfont + from ._legendgrouptitle import Legendgrouptitle + from ._outsidetextfont import Outsidetextfont + from ._stream import Stream + from ._textfont import Textfont + from ._totals import Totals + from . import connector + from . import decreasing + from . import hoverlabel + from . import increasing + from . import legendgrouptitle + from . import totals +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, + [ + ".connector", + ".decreasing", + ".hoverlabel", + ".increasing", + ".legendgrouptitle", + ".totals", + ], + [ + "._connector.Connector", + "._decreasing.Decreasing", + "._hoverlabel.Hoverlabel", + "._increasing.Increasing", + "._insidetextfont.Insidetextfont", + "._legendgrouptitle.Legendgrouptitle", + "._outsidetextfont.Outsidetextfont", + "._stream.Stream", + "._textfont.Textfont", + "._totals.Totals", + ], + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_connector.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_connector.py new file mode 100644 index 0000000..e76bd9d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_connector.py @@ -0,0 +1,127 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Connector(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.connector" + _valid_props = {"line", "mode", "visible"} + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.connector.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.waterfall.connector.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def mode(self): + """ + Sets the shape of connector lines. + + The 'mode' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['spanning', 'between'] + + Returns + ------- + Any + """ + return self["mode"] + + @mode.setter + def mode(self, val): + self["mode"] = val + + @property + def visible(self): + """ + Determines if connector lines are drawn. + + The 'visible' property must be specified as a bool + (either True, or False) + + Returns + ------- + bool + """ + return self["visible"] + + @visible.setter + def visible(self, val): + self["visible"] = val + + @property + def _prop_descriptions(self): + return """\ + line + :class:`plotly.graph_objects.waterfall.connector.Line` + instance or dict with compatible properties + mode + Sets the shape of connector lines. + visible + Determines if connector lines are drawn. + """ + + def __init__(self, arg=None, line=None, mode=None, visible=None, **kwargs): + """ + Construct a new Connector object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Connector` + line + :class:`plotly.graph_objects.waterfall.connector.Line` + instance or dict with compatible properties + mode + Sets the shape of connector lines. + visible + Determines if connector lines are drawn. + + Returns + ------- + Connector + """ + super().__init__("connector") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Connector +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Connector`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("line", arg, line) + self._set_property("mode", arg, mode) + self._set_property("visible", arg, visible) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_decreasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_decreasing.py new file mode 100644 index 0000000..b472b42 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_decreasing.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Decreasing(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.decreasing" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.decreasing.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.waterfall.decreasing.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.waterfall.decreasing.Marke + r` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Decreasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Decreasing` + marker + :class:`plotly.graph_objects.waterfall.decreasing.Marke + r` instance or dict with compatible properties + + Returns + ------- + Decreasing + """ + super().__init__("decreasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Decreasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Decreasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_hoverlabel.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_hoverlabel.py new file mode 100644 index 0000000..8d7176b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_hoverlabel.py @@ -0,0 +1,338 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Hoverlabel(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.hoverlabel" + _valid_props = { + "align", + "alignsrc", + "bgcolor", + "bgcolorsrc", + "bordercolor", + "bordercolorsrc", + "font", + "namelength", + "namelengthsrc", + } + + @property + def align(self): + """ + 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 + + The 'align' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['left', 'right', 'auto'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["align"] + + @align.setter + def align(self, val): + self["align"] = val + + @property + def alignsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `align`. + + The 'alignsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["alignsrc"] + + @alignsrc.setter + def alignsrc(self, val): + self["alignsrc"] = val + + @property + def bgcolor(self): + """ + Sets the background color of the hover labels for this trace + + The 'bgcolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bgcolor"] + + @bgcolor.setter + def bgcolor(self, val): + self["bgcolor"] = val + + @property + def bgcolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `bgcolor`. + + The 'bgcolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bgcolorsrc"] + + @bgcolorsrc.setter + def bgcolorsrc(self, val): + self["bgcolorsrc"] = val + + @property + def bordercolor(self): + """ + Sets the border color of the hover labels for this trace. + + The 'bordercolor' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["bordercolor"] + + @bordercolor.setter + def bordercolor(self, val): + self["bordercolor"] = val + + @property + def bordercolorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + + The 'bordercolorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["bordercolorsrc"] + + @bordercolorsrc.setter + def bordercolorsrc(self, val): + self["bordercolorsrc"] = val + + @property + def font(self): + """ + Sets the font used in hover labels. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.hoverlabel.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.waterfall.hoverlabel.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def namelength(self): + """ + 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. + + The 'namelength' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [-1, 9223372036854775807] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["namelength"] + + @namelength.setter + def namelength(self, val): + self["namelength"] = val + + @property + def namelengthsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `namelength`. + + The 'namelengthsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["namelengthsrc"] + + @namelengthsrc.setter + def namelengthsrc(self, val): + self["namelengthsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + """ + + def __init__( + self, + arg=None, + align=None, + alignsrc=None, + bgcolor=None, + bgcolorsrc=None, + bordercolor=None, + bordercolorsrc=None, + font=None, + namelength=None, + namelengthsrc=None, + **kwargs, + ): + """ + Construct a new Hoverlabel object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Hoverlabel` + align + 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 + alignsrc + Sets the source reference on Chart Studio Cloud for + `align`. + bgcolor + Sets the background color of the hover labels for this + trace + bgcolorsrc + Sets the source reference on Chart Studio Cloud for + `bgcolor`. + bordercolor + Sets the border color of the hover labels for this + trace. + bordercolorsrc + Sets the source reference on Chart Studio Cloud for + `bordercolor`. + font + Sets the font used in hover labels. + namelength + 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. + namelengthsrc + Sets the source reference on Chart Studio Cloud for + `namelength`. + + Returns + ------- + Hoverlabel + """ + super().__init__("hoverlabel") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Hoverlabel +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Hoverlabel`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("align", arg, align) + self._set_property("alignsrc", arg, alignsrc) + self._set_property("bgcolor", arg, bgcolor) + self._set_property("bgcolorsrc", arg, bgcolorsrc) + self._set_property("bordercolor", arg, bordercolor) + self._set_property("bordercolorsrc", arg, bordercolorsrc) + self._set_property("font", arg, font) + self._set_property("namelength", arg, namelength) + self._set_property("namelengthsrc", arg, namelengthsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_increasing.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_increasing.py new file mode 100644 index 0000000..1a2d447 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_increasing.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Increasing(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.increasing" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.increasing.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.waterfall.increasing.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.waterfall.increasing.Marke + r` instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Increasing object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Increasing` + marker + :class:`plotly.graph_objects.waterfall.increasing.Marke + r` instance or dict with compatible properties + + Returns + ------- + Increasing + """ + super().__init__("increasing") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Increasing +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Increasing`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_insidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_insidetextfont.py new file mode 100644 index 0000000..a316c5f --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_insidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Insidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.insidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Insidetextfont object + + Sets the font used for `text` lying inside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Insidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Insidetextfont + """ + super().__init__("insidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Insidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Insidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_legendgrouptitle.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_legendgrouptitle.py new file mode 100644 index 0000000..9b29501 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_legendgrouptitle.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Legendgrouptitle(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.legendgrouptitle" + _valid_props = {"font", "text"} + + @property + def font(self): + """ + Sets this legend group's title font. + + The 'font' property is an instance of Font + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.legendgrouptitle.Font` + - A dict of string/value properties that will be passed + to the Font constructor + + Returns + ------- + plotly.graph_objs.waterfall.legendgrouptitle.Font + """ + return self["font"] + + @font.setter + def font(self, val): + self["font"] = val + + @property + def text(self): + """ + Sets the title of the legend group. + + The 'text' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["text"] + + @text.setter + def text(self, val): + self["text"] = val + + @property + def _prop_descriptions(self): + return """\ + font + Sets this legend group's title font. + text + Sets the title of the legend group. + """ + + def __init__(self, arg=None, font=None, text=None, **kwargs): + """ + Construct a new Legendgrouptitle object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Legendgrouptitle` + font + Sets this legend group's title font. + text + Sets the title of the legend group. + + Returns + ------- + Legendgrouptitle + """ + super().__init__("legendgrouptitle") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Legendgrouptitle +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Legendgrouptitle`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("font", arg, font) + self._set_property("text", arg, text) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_outsidetextfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_outsidetextfont.py new file mode 100644 index 0000000..8e1371b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_outsidetextfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Outsidetextfont(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.outsidetextfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Outsidetextfont object + + Sets the font used for `text` lying outside the bar. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Outsidetextfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Outsidetextfont + """ + super().__init__("outsidetextfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Outsidetextfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Outsidetextfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_stream.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_stream.py new file mode 100644 index 0000000..488e44d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_stream.py @@ -0,0 +1,114 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Stream(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.stream" + _valid_props = {"maxpoints", "token"} + + @property + def maxpoints(self): + """ + 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. + + The 'maxpoints' property is a number and may be specified as: + - An int or float in the interval [0, 10000] + + Returns + ------- + int|float + """ + return self["maxpoints"] + + @maxpoints.setter + def maxpoints(self, val): + self["maxpoints"] = val + + @property + def token(self): + """ + The stream id number links a data trace on a plot with a + stream. See https://chart-studio.plotly.com/settings for more + details. + + The 'token' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["token"] + + @token.setter + def token(self, val): + self["token"] = val + + @property + def _prop_descriptions(self): + return """\ + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + """ + + def __init__(self, arg=None, maxpoints=None, token=None, **kwargs): + """ + Construct a new Stream object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Stream` + maxpoints + 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. + token + The stream id number links a data trace on a plot with + a stream. See https://chart-studio.plotly.com/settings + for more details. + + Returns + ------- + Stream + """ + super().__init__("stream") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Stream +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Stream`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("maxpoints", arg, maxpoints) + self._set_property("token", arg, token) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_textfont.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_textfont.py new file mode 100644 index 0000000..5f6640e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_textfont.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Textfont(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.textfont" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Textfont object + + Sets the font used for `text`. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Textfont` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Textfont + """ + super().__init__("textfont") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Textfont +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Textfont`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_totals.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_totals.py new file mode 100644 index 0000000..d7f4431 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/_totals.py @@ -0,0 +1,80 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Totals(_BaseTraceHierarchyType): + _parent_path_str = "waterfall" + _path_str = "waterfall.totals" + _valid_props = {"marker"} + + @property + def marker(self): + """ + The 'marker' property is an instance of Marker + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.totals.Marker` + - A dict of string/value properties that will be passed + to the Marker constructor + + Returns + ------- + plotly.graph_objs.waterfall.totals.Marker + """ + return self["marker"] + + @marker.setter + def marker(self, val): + self["marker"] = val + + @property + def _prop_descriptions(self): + return """\ + marker + :class:`plotly.graph_objects.waterfall.totals.Marker` + instance or dict with compatible properties + """ + + def __init__(self, arg=None, marker=None, **kwargs): + """ + Construct a new Totals object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.Totals` + marker + :class:`plotly.graph_objects.waterfall.totals.Marker` + instance or dict with compatible properties + + Returns + ------- + Totals + """ + super().__init__("totals") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.Totals +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.Totals`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("marker", arg, marker) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/_line.py new file mode 100644 index 0000000..299b5ea --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/connector/_line.py @@ -0,0 +1,139 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.connector" + _path_str = "waterfall.connector.line" + _valid_props = {"color", "dash", "width"} + + @property + def color(self): + """ + Sets the line color. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def dash(self): + """ + 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"). + + The 'dash' property is an enumeration that may be specified as: + - One of the following dash styles: + ['solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot'] + - A string containing a dash length list in pixels or percentages + (e.g. '5px 10px 2px 2px', '5, 10, 2, 2', '10% 20% 40%', etc.) + + Returns + ------- + str + """ + return self["dash"] + + @dash.setter + def dash(self, val): + self["dash"] = val + + @property + def width(self): + """ + Sets the line width (in px). + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + """ + + def __init__(self, arg=None, color=None, dash=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.connector.Line` + color + Sets the line color. + dash + 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"). + width + Sets the line width (in px). + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.connector.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.connector.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("dash", arg, dash) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/__init__.py new file mode 100644 index 0000000..3ef756b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from . import marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".marker"], ["._marker.Marker"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/_marker.py new file mode 100644 index 0000000..a8f49ee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/_marker.py @@ -0,0 +1,107 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.decreasing" + _path_str = "waterfall.decreasing.marker" + _valid_props = {"color", "line"} + + @property + def color(self): + """ + Sets the marker color of all decreasing values. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.decreasing.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.waterfall.decreasing.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of all decreasing values. + line + :class:`plotly.graph_objects.waterfall.decreasing.marke + r.Line` instance or dict with compatible properties + """ + + def __init__(self, arg=None, color=None, line=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.decreasing.Marker` + color + Sets the marker color of all decreasing values. + line + :class:`plotly.graph_objects.waterfall.decreasing.marke + r.Line` instance or dict with compatible properties + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.decreasing.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.decreasing.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/_line.py new file mode 100644 index 0000000..746fdb4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/decreasing/marker/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.decreasing.marker" + _path_str = "waterfall.decreasing.marker.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the line color of all decreasing values. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the line width of all decreasing values. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color of all decreasing values. + width + Sets the line width of all decreasing values. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.waterfall.decr + easing.marker.Line` + color + Sets the line color of all decreasing values. + width + Sets the line width of all decreasing values. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.decreasing.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.decreasing.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/_font.py new file mode 100644 index 0000000..025c5dc --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/hoverlabel/_font.py @@ -0,0 +1,587 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.hoverlabel" + _path_str = "waterfall.hoverlabel.font" + _valid_props = { + "color", + "colorsrc", + "family", + "familysrc", + "lineposition", + "linepositionsrc", + "shadow", + "shadowsrc", + "size", + "sizesrc", + "style", + "stylesrc", + "textcase", + "textcasesrc", + "variant", + "variantsrc", + "weight", + "weightsrc", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + - A list or array of any of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def colorsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `color`. + + The 'colorsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["colorsrc"] + + @colorsrc.setter + def colorsrc(self, val): + self["colorsrc"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def familysrc(self): + """ + Sets the source reference on Chart Studio Cloud for `family`. + + The 'familysrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["familysrc"] + + @familysrc.setter + def familysrc(self, val): + self["familysrc"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + - A list or array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def linepositionsrc(self): + """ + Sets the source reference on Chart Studio Cloud for + `lineposition`. + + The 'linepositionsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["linepositionsrc"] + + @linepositionsrc.setter + def linepositionsrc(self, val): + self["linepositionsrc"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + str|numpy.ndarray + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def shadowsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `shadow`. + + The 'shadowsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["shadowsrc"] + + @shadowsrc.setter + def shadowsrc(self, val): + self["shadowsrc"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|float|numpy.ndarray + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def sizesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `size`. + + The 'sizesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["sizesrc"] + + @sizesrc.setter + def sizesrc(self, val): + self["sizesrc"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def stylesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `style`. + + The 'stylesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["stylesrc"] + + @stylesrc.setter + def stylesrc(self, val): + self["stylesrc"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def textcasesrc(self): + """ + Sets the source reference on Chart Studio Cloud for `textcase`. + + The 'textcasesrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["textcasesrc"] + + @textcasesrc.setter + def textcasesrc(self, val): + self["textcasesrc"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + Any|numpy.ndarray + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def variantsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `variant`. + + The 'variantsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["variantsrc"] + + @variantsrc.setter + def variantsrc(self, val): + self["variantsrc"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + - A tuple, list, or one-dimensional numpy array of the above + + Returns + ------- + int|numpy.ndarray + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def weightsrc(self): + """ + Sets the source reference on Chart Studio Cloud for `weight`. + + The 'weightsrc' property must be specified as a string or + as a plotly.grid_objs.Column object + + Returns + ------- + str + """ + return self["weightsrc"] + + @weightsrc.setter + def weightsrc(self, val): + self["weightsrc"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + """ + + def __init__( + self, + arg=None, + color=None, + colorsrc=None, + family=None, + familysrc=None, + lineposition=None, + linepositionsrc=None, + shadow=None, + shadowsrc=None, + size=None, + sizesrc=None, + style=None, + stylesrc=None, + textcase=None, + textcasesrc=None, + variant=None, + variantsrc=None, + weight=None, + weightsrc=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets the font used in hover labels. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.hoverlabel.Font` + color + + colorsrc + Sets the source reference on Chart Studio Cloud for + `color`. + family + 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. + familysrc + Sets the source reference on Chart Studio Cloud for + `family`. + lineposition + 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. + linepositionsrc + Sets the source reference on Chart Studio Cloud for + `lineposition`. + shadow + 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. + shadowsrc + Sets the source reference on Chart Studio Cloud for + `shadow`. + size + + sizesrc + Sets the source reference on Chart Studio Cloud for + `size`. + style + Sets whether a font should be styled with a normal or + italic face from its family. + stylesrc + Sets the source reference on Chart Studio Cloud for + `style`. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + textcasesrc + Sets the source reference on Chart Studio Cloud for + `textcase`. + variant + Sets the variant of the font. + variantsrc + Sets the source reference on Chart Studio Cloud for + `variant`. + weight + Sets the weight (or boldness) of the font. + weightsrc + Sets the source reference on Chart Studio Cloud for + `weight`. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.hoverlabel.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.hoverlabel.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("colorsrc", arg, colorsrc) + self._set_property("family", arg, family) + self._set_property("familysrc", arg, familysrc) + self._set_property("lineposition", arg, lineposition) + self._set_property("linepositionsrc", arg, linepositionsrc) + self._set_property("shadow", arg, shadow) + self._set_property("shadowsrc", arg, shadowsrc) + self._set_property("size", arg, size) + self._set_property("sizesrc", arg, sizesrc) + self._set_property("style", arg, style) + self._set_property("stylesrc", arg, stylesrc) + self._set_property("textcase", arg, textcase) + self._set_property("textcasesrc", arg, textcasesrc) + self._set_property("variant", arg, variant) + self._set_property("variantsrc", arg, variantsrc) + self._set_property("weight", arg, weight) + self._set_property("weightsrc", arg, weightsrc) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/__init__.py new file mode 100644 index 0000000..3ef756b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from . import marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".marker"], ["._marker.Marker"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/_marker.py new file mode 100644 index 0000000..3a77dee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/_marker.py @@ -0,0 +1,107 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.increasing" + _path_str = "waterfall.increasing.marker" + _valid_props = {"color", "line"} + + @property + def color(self): + """ + Sets the marker color of all increasing values. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.increasing.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.waterfall.increasing.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of all increasing values. + line + :class:`plotly.graph_objects.waterfall.increasing.marke + r.Line` instance or dict with compatible properties + """ + + def __init__(self, arg=None, color=None, line=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.increasing.Marker` + color + Sets the marker color of all increasing values. + line + :class:`plotly.graph_objects.waterfall.increasing.marke + r.Line` instance or dict with compatible properties + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.increasing.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.increasing.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/_line.py new file mode 100644 index 0000000..5f5b464 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/increasing/marker/_line.py @@ -0,0 +1,104 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.increasing.marker" + _path_str = "waterfall.increasing.marker.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the line color of all increasing values. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the line width of all increasing values. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color of all increasing values. + width + Sets the line width of all increasing values. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.waterfall.incr + easing.marker.Line` + color + Sets the line color of all increasing values. + width + Sets the line width of all increasing values. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.increasing.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.increasing.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py new file mode 100644 index 0000000..56f600d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._font import Font +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._font.Font"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/_font.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/_font.py new file mode 100644 index 0000000..6e8055c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/legendgrouptitle/_font.py @@ -0,0 +1,334 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Font(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.legendgrouptitle" + _path_str = "waterfall.legendgrouptitle.font" + _valid_props = { + "color", + "family", + "lineposition", + "shadow", + "size", + "style", + "textcase", + "variant", + "weight", + } + + @property + def color(self): + """ + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def family(self): + """ + 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. + + The 'family' property is a string and must be specified as: + - A non-empty string + + Returns + ------- + str + """ + return self["family"] + + @family.setter + def family(self, val): + self["family"] = val + + @property + def lineposition(self): + """ + 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. + + The 'lineposition' property is a flaglist and may be specified + as a string containing: + - Any combination of ['under', 'over', 'through'] joined with '+' characters + (e.g. 'under+over') + OR exactly one of ['none'] (e.g. 'none') + + Returns + ------- + Any + """ + return self["lineposition"] + + @lineposition.setter + def lineposition(self, val): + self["lineposition"] = val + + @property + def shadow(self): + """ + 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. + + The 'shadow' property is a string and must be specified as: + - A string + - A number that will be converted to a string + + Returns + ------- + str + """ + return self["shadow"] + + @shadow.setter + def shadow(self, val): + self["shadow"] = val + + @property + def size(self): + """ + The 'size' property is a number and may be specified as: + - An int or float in the interval [1, inf] + + Returns + ------- + int|float + """ + return self["size"] + + @size.setter + def size(self, val): + self["size"] = val + + @property + def style(self): + """ + Sets whether a font should be styled with a normal or italic + face from its family. + + The 'style' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'italic'] + + Returns + ------- + Any + """ + return self["style"] + + @style.setter + def style(self, val): + self["style"] = val + + @property + def textcase(self): + """ + Sets capitalization of text. It can be used to make text appear + in all-uppercase or all-lowercase, or with each word + capitalized. + + The 'textcase' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'word caps', 'upper', 'lower'] + + Returns + ------- + Any + """ + return self["textcase"] + + @textcase.setter + def textcase(self, val): + self["textcase"] = val + + @property + def variant(self): + """ + Sets the variant of the font. + + The 'variant' property is an enumeration that may be specified as: + - One of the following enumeration values: + ['normal', 'small-caps', 'all-small-caps', + 'all-petite-caps', 'petite-caps', 'unicase'] + + Returns + ------- + Any + """ + return self["variant"] + + @variant.setter + def variant(self, val): + self["variant"] = val + + @property + def weight(self): + """ + Sets the weight (or boldness) of the font. + + The 'weight' property is a integer and may be specified as: + - An int (or float that will be cast to an int) + in the interval [1, 1000] + OR exactly one of ['normal', 'bold'] (e.g. 'bold') + + Returns + ------- + int + """ + return self["weight"] + + @weight.setter + def weight(self, val): + self["weight"] = val + + @property + def _prop_descriptions(self): + return """\ + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + """ + + def __init__( + self, + arg=None, + color=None, + family=None, + lineposition=None, + shadow=None, + size=None, + style=None, + textcase=None, + variant=None, + weight=None, + **kwargs, + ): + """ + Construct a new Font object + + Sets this legend group's title font. + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of :class:`plotly.graph_objs.waterfall.lege + ndgrouptitle.Font` + color + + family + 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. + lineposition + 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. + shadow + 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. + size + + style + Sets whether a font should be styled with a normal or + italic face from its family. + textcase + Sets capitalization of text. It can be used to make + text appear in all-uppercase or all-lowercase, or with + each word capitalized. + variant + Sets the variant of the font. + weight + Sets the weight (or boldness) of the font. + + Returns + ------- + Font + """ + super().__init__("font") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.legendgrouptitle.Font +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.legendgrouptitle.Font`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("family", arg, family) + self._set_property("lineposition", arg, lineposition) + self._set_property("shadow", arg, shadow) + self._set_property("size", arg, size) + self._set_property("style", arg, style) + self._set_property("textcase", arg, textcase) + self._set_property("variant", arg, variant) + self._set_property("weight", arg, weight) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/__init__.py new file mode 100644 index 0000000..3ef756b --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/__init__.py @@ -0,0 +1,12 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._marker import Marker + from . import marker +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import( + __name__, [".marker"], ["._marker.Marker"] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/_marker.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/_marker.py new file mode 100644 index 0000000..5cc16b8 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/_marker.py @@ -0,0 +1,110 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Marker(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.totals" + _path_str = "waterfall.totals.marker" + _valid_props = {"color", "line"} + + @property + def color(self): + """ + Sets the marker color of all intermediate sums and total + values. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def line(self): + """ + The 'line' property is an instance of Line + that may be specified as: + - An instance of :class:`plotly.graph_objs.waterfall.totals.marker.Line` + - A dict of string/value properties that will be passed + to the Line constructor + + Returns + ------- + plotly.graph_objs.waterfall.totals.marker.Line + """ + return self["line"] + + @line.setter + def line(self, val): + self["line"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the marker color of all intermediate sums and + total values. + line + :class:`plotly.graph_objects.waterfall.totals.marker.Li + ne` instance or dict with compatible properties + """ + + def __init__(self, arg=None, color=None, line=None, **kwargs): + """ + Construct a new Marker object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.totals.Marker` + color + Sets the marker color of all intermediate sums and + total values. + line + :class:`plotly.graph_objects.waterfall.totals.marker.Li + ne` instance or dict with compatible properties + + Returns + ------- + Marker + """ + super().__init__("marker") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.totals.Marker +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.totals.Marker`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("line", arg, line) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/__init__.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/__init__.py new file mode 100644 index 0000000..33e42c0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/__init__.py @@ -0,0 +1,9 @@ +import sys +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._line import Line +else: + from _plotly_utils.importers import relative_import + + __all__, __getattr__, __dir__ = relative_import(__name__, [], ["._line.Line"]) diff --git a/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/_line.py b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/_line.py new file mode 100644 index 0000000..8c1c81d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/graph_objs/waterfall/totals/marker/_line.py @@ -0,0 +1,108 @@ +# --- THIS FILE IS AUTO-GENERATED --- +# Modifications will be overwitten the next time code generation run. + +from plotly.basedatatypes import BaseTraceHierarchyType as _BaseTraceHierarchyType +import copy as _copy + + +class Line(_BaseTraceHierarchyType): + _parent_path_str = "waterfall.totals.marker" + _path_str = "waterfall.totals.marker.line" + _valid_props = {"color", "width"} + + @property + def color(self): + """ + Sets the line color of all intermediate sums and total values. + + The 'color' property is a color and may be specified as: + - A hex string (e.g. '#ff0000') + - An rgb/rgba string (e.g. 'rgb(255,0,0)') + - An hsl/hsla string (e.g. 'hsl(0,100%,50%)') + - An hsv/hsva string (e.g. 'hsv(0,100%,100%)') + - A named CSS color: see https://plotly.com/python/css-colors/ for a list + + Returns + ------- + str + """ + return self["color"] + + @color.setter + def color(self, val): + self["color"] = val + + @property + def width(self): + """ + Sets the line width of all intermediate sums and total values. + + The 'width' property is a number and may be specified as: + - An int or float in the interval [0, inf] + + Returns + ------- + int|float + """ + return self["width"] + + @width.setter + def width(self, val): + self["width"] = val + + @property + def _prop_descriptions(self): + return """\ + color + Sets the line color of all intermediate sums and total + values. + width + Sets the line width of all intermediate sums and total + values. + """ + + def __init__(self, arg=None, color=None, width=None, **kwargs): + """ + Construct a new Line object + + Parameters + ---------- + arg + dict of properties compatible with this constructor or + an instance of + :class:`plotly.graph_objs.waterfall.totals.marker.Line` + color + Sets the line color of all intermediate sums and total + values. + width + Sets the line width of all intermediate sums and total + values. + + Returns + ------- + Line + """ + super().__init__("line") + if "_parent" in kwargs: + self._parent = kwargs["_parent"] + return + + if arg is None: + arg = {} + elif isinstance(arg, self.__class__): + arg = arg.to_plotly_json() + elif isinstance(arg, dict): + arg = _copy.copy(arg) + else: + raise ValueError("""\ +The first argument to the plotly.graph_objs.waterfall.totals.marker.Line +constructor must be a dict or +an instance of :class:`plotly.graph_objs.waterfall.totals.marker.Line`""") + + self._skip_invalid = kwargs.pop("skip_invalid", False) + self._validate = kwargs.pop("_validate", True) + + self._set_property("color", arg, color) + self._set_property("width", arg, width) + self._process_kwargs(**dict(arg, **kwargs)) + self._skip_invalid = False diff --git a/venv/lib/python3.8/site-packages/plotly/io/__init__.py b/venv/lib/python3.8/site-packages/plotly/io/__init__.py new file mode 100644 index 0000000..87f9c3a --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/__init__.py @@ -0,0 +1,68 @@ +# ruff: noqa: F401 + +from _plotly_utils.importers import relative_import +from typing import TYPE_CHECKING + +if TYPE_CHECKING: + from ._kaleido import ( + to_image, + write_image, + write_images, + full_figure_for_development, + ) + from . import orca, kaleido + from . import json + from ._json import to_json, from_json, read_json, write_json + from ._templates import templates, to_templated + from ._html import to_html, write_html + from ._renderers import renderers, show + from . import base_renderers + from ._kaleido import defaults + + __all__ = [ + "to_image", + "write_image", + "write_images", + "orca", + "json", + "to_json", + "from_json", + "read_json", + "write_json", + "templates", + "to_templated", + "to_html", + "write_html", + "renderers", + "show", + "base_renderers", + "full_figure_for_development", + "defaults", + ] +else: + __all__, __getattr__, __dir__ = relative_import( + __name__, + [".orca", ".kaleido", ".json", ".base_renderers"], + [ + "._kaleido.to_image", + "._kaleido.write_image", + "._kaleido.write_images", + "._kaleido.full_figure_for_development", + "._json.to_json", + "._json.from_json", + "._json.read_json", + "._json.write_json", + "._templates.templates", + "._templates.to_templated", + "._html.to_html", + "._html.write_html", + "._renderers.renderers", + "._renderers.show", + "._kaleido.defaults", + ], + ) + + # Set default template (for < 3.7 this is done in ploty/__init__.py) + from plotly.io import templates + + templates._default = "plotly" diff --git a/venv/lib/python3.8/site-packages/plotly/io/_base_renderers.py b/venv/lib/python3.8/site-packages/plotly/io/_base_renderers.py new file mode 100644 index 0000000..b413aee --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_base_renderers.py @@ -0,0 +1,846 @@ +import base64 +import json +import webbrowser +import inspect +import os +from os.path import isdir + +from plotly import optional_imports +from plotly.io import to_json, to_image, write_image, write_html +from plotly.io._utils import plotly_cdn_url +from plotly.offline.offline import _get_jconfig, get_plotlyjs +from plotly.tools import return_figure_from_figure_or_data + +ipython_display = optional_imports.get_module("IPython.display") +IPython = optional_imports.get_module("IPython") + +try: + from http.server import BaseHTTPRequestHandler, HTTPServer +except ImportError: + # Python 2.7 + from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer + + +class BaseRenderer(object): + """ + Base class for all renderers + """ + + def activate(self): + pass + + def __repr__(self): + try: + init_sig = inspect.signature(self.__init__) + init_args = list(init_sig.parameters.keys()) + except AttributeError: + # Python 2.7 + argspec = inspect.getargspec(self.__init__) + init_args = [a for a in argspec.args if a != "self"] + + return "{cls}({attrs})\n{doc}".format( + cls=self.__class__.__name__, + attrs=", ".join("{}={!r}".format(k, self.__dict__[k]) for k in init_args), + doc=self.__doc__, + ) + + def __hash__(self): + # Constructor args fully define uniqueness + return hash(repr(self)) + + +class MimetypeRenderer(BaseRenderer): + """ + Base class for all mime type renderers + """ + + def to_mimebundle(self, fig_dict): + raise NotImplementedError() + + +class JsonRenderer(MimetypeRenderer): + """ + Renderer to display figures as JSON hierarchies. This renderer is + compatible with JupyterLab and VSCode. + + mime type: 'application/json' + """ + + def to_mimebundle(self, fig_dict): + value = json.loads(to_json(fig_dict, validate=False, remove_uids=False)) + return {"application/json": value} + + +# Plotly mimetype +class PlotlyRenderer(MimetypeRenderer): + """ + Renderer to display figures using the plotly mime type. This renderer is + compatible with VSCode and nteract. + + mime type: 'application/vnd.plotly.v1+json' + """ + + def __init__(self, config=None): + self.config = dict(config) if config else {} + + def to_mimebundle(self, fig_dict): + config = _get_jconfig(self.config) + if config: + fig_dict["config"] = config + + json_compatible_fig_dict = json.loads( + to_json(fig_dict, validate=False, remove_uids=False) + ) + + return {"application/vnd.plotly.v1+json": json_compatible_fig_dict} + + +# Static Image +class ImageRenderer(MimetypeRenderer): + """ + Base class for all static image renderers + """ + + def __init__( + self, + mime_type, + b64_encode=False, + format=None, + width=None, + height=None, + scale=None, + engine="auto", + ): + self.mime_type = mime_type + self.b64_encode = b64_encode + self.format = format + self.width = width + self.height = height + self.scale = scale + self.engine = engine + + def to_mimebundle(self, fig_dict): + image_bytes = to_image( + fig_dict, + format=self.format, + width=self.width, + height=self.height, + scale=self.scale, + validate=False, + engine=self.engine, + ) + + if self.b64_encode: + image_str = base64.b64encode(image_bytes).decode("utf8") + else: + image_str = image_bytes.decode("utf8") + + return {self.mime_type: image_str} + + +class PngRenderer(ImageRenderer): + """ + Renderer to display figures as static PNG images. This renderer requires + either the kaleido package or the orca command-line utility and is broadly + compatible across IPython environments (classic Jupyter Notebook, JupyterLab, + QtConsole, VSCode, PyCharm, etc) and nbconvert targets (HTML, PDF, etc.). + + mime type: 'image/png' + """ + + def __init__(self, width=None, height=None, scale=None, engine="auto"): + super(PngRenderer, self).__init__( + mime_type="image/png", + b64_encode=True, + format="png", + width=width, + height=height, + scale=scale, + engine=engine, + ) + + +class SvgRenderer(ImageRenderer): + """ + Renderer to display figures as static SVG images. This renderer requires + either the kaleido package or the orca command-line utility and is broadly + compatible across IPython environments (classic Jupyter Notebook, JupyterLab, + QtConsole, VSCode, PyCharm, etc) and nbconvert targets (HTML, PDF, etc.). + + mime type: 'image/svg+xml' + """ + + def __init__(self, width=None, height=None, scale=None, engine="auto"): + super(SvgRenderer, self).__init__( + mime_type="image/svg+xml", + b64_encode=False, + format="svg", + width=width, + height=height, + scale=scale, + engine=engine, + ) + + +class JpegRenderer(ImageRenderer): + """ + Renderer to display figures as static JPEG images. This renderer requires + either the kaleido package or the orca command-line utility and is broadly + compatible across IPython environments (classic Jupyter Notebook, JupyterLab, + QtConsole, VSCode, PyCharm, etc) and nbconvert targets (HTML, PDF, etc.). + + mime type: 'image/jpeg' + """ + + def __init__(self, width=None, height=None, scale=None, engine="auto"): + super(JpegRenderer, self).__init__( + mime_type="image/jpeg", + b64_encode=True, + format="jpg", + width=width, + height=height, + scale=scale, + engine=engine, + ) + + +class PdfRenderer(ImageRenderer): + """ + Renderer to display figures as static PDF images. This renderer requires + either the kaleido package or the orca command-line utility and is compatible + with JupyterLab and the LaTeX-based nbconvert export to PDF. + + mime type: 'application/pdf' + """ + + def __init__(self, width=None, height=None, scale=None, engine="auto"): + super(PdfRenderer, self).__init__( + mime_type="application/pdf", + b64_encode=True, + format="pdf", + width=width, + height=height, + scale=scale, + engine=engine, + ) + + +# HTML +# Build script to set global PlotlyConfig object. This must execute before +# plotly.js is loaded. +_window_plotly_config = """\ +window.PlotlyConfig = {MathJaxConfig: 'local'};""" + +_mathjax_config = """\ +if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: "STIX-Web"}});}""" + + +class HtmlRenderer(MimetypeRenderer): + """ + Base class for all HTML mime type renderers + + mime type: 'text/html' + """ + + def __init__( + self, + connected=False, + full_html=False, + global_init=False, + config=None, + auto_play=False, + post_script=None, + animation_opts=None, + include_plotlyjs=True, + ): + self.config = dict(config) if config else {} + self.auto_play = auto_play + self.connected = connected + self.global_init = global_init + self.full_html = full_html + self.animation_opts = animation_opts + self.post_script = post_script + self.include_plotlyjs = "cdn" if self.connected else include_plotlyjs + + def activate(self): + if self.global_init: + if not ipython_display: + raise ValueError( + "The {cls} class requires ipython but it is not installed".format( + cls=self.__class__.__name__ + ) + ) + + if self.connected: + script = """\ + + + """.format( + win_config=_window_plotly_config, + mathjax_config=_mathjax_config, + plotly_cdn=plotly_cdn_url().rstrip(".js"), + ) + + else: + # If not connected then we embed a copy of the plotly.js + # library in the notebook + script = """\ + + + """.format( + script=get_plotlyjs(), + win_config=_window_plotly_config, + mathjax_config=_mathjax_config, + ) + + ipython_display.display_html(script, raw=True) + + def to_mimebundle(self, fig_dict): + from plotly.io import to_html + + include_mathjax = "cdn" + + # build post script + post_script = [ + """ +var gd = document.getElementById('{plot_id}'); +var x = new MutationObserver(function (mutations, observer) {{ + var display = window.getComputedStyle(gd).display; + if (!display || display === 'none') {{ + console.log([gd, 'removed!']); + Plotly.purge(gd); + observer.disconnect(); + }} +}}); + +// Listen for the removal of the full notebook cells +var notebookContainer = gd.closest('#notebook-container'); +if (notebookContainer) {{ + x.observe(notebookContainer, {childList: true}); +}} + +// Listen for the clearing of the current output cell +var outputEl = gd.closest('.output'); +if (outputEl) {{ + x.observe(outputEl, {childList: true}); +}} +""" + ] + + # Add user defined post script + if self.post_script: + if not isinstance(self.post_script, (list, tuple)): + post_script.append(self.post_script) + else: + post_script.extend(self.post_script) + + html = to_html( + fig_dict, + config=self.config, + auto_play=self.auto_play, + include_plotlyjs=self.include_plotlyjs, + include_mathjax=include_mathjax, + post_script=post_script, + full_html=self.full_html, + animation_opts=self.animation_opts, + default_width="100%", + default_height=525, + validate=False, + ) + + return {"text/html": html} + + +class NotebookRenderer(HtmlRenderer): + """ + Renderer to display interactive figures in the classic Jupyter Notebook. + This renderer is also useful for notebooks that will be converted to + HTML using nbconvert/nbviewer as it will produce standalone HTML files + that include interactive figures. + + This renderer automatically performs global notebook initialization when + activated. + + mime type: 'text/html' + """ + + def __init__( + self, + connected=False, + config=None, + auto_play=False, + post_script=None, + animation_opts=None, + include_plotlyjs=False, + ): + super(NotebookRenderer, self).__init__( + connected=connected, + full_html=False, + global_init=True, + config=config, + auto_play=auto_play, + post_script=post_script, + animation_opts=animation_opts, + include_plotlyjs=include_plotlyjs, + ) + + +class KaggleRenderer(HtmlRenderer): + """ + Renderer to display interactive figures in Kaggle Notebooks. + + Same as NotebookRenderer but with connected=True so that the plotly.js + bundle is loaded from a CDN rather than being embedded in the notebook. + + This renderer is enabled by default when running in a Kaggle notebook. + + mime type: 'text/html' + """ + + def __init__( + self, config=None, auto_play=False, post_script=None, animation_opts=None + ): + super(KaggleRenderer, self).__init__( + connected=True, + full_html=False, + global_init=True, + config=config, + auto_play=auto_play, + post_script=post_script, + animation_opts=animation_opts, + include_plotlyjs=False, + ) + + +class AzureRenderer(HtmlRenderer): + """ + Renderer to display interactive figures in Azure Notebooks. + + Same as NotebookRenderer but with connected=True so that the plotly.js + bundle is loaded from a CDN rather than being embedded in the notebook. + + This renderer is enabled by default when running in an Azure notebook. + + mime type: 'text/html' + """ + + def __init__( + self, config=None, auto_play=False, post_script=None, animation_opts=None + ): + super(AzureRenderer, self).__init__( + connected=True, + full_html=False, + global_init=True, + config=config, + auto_play=auto_play, + post_script=post_script, + animation_opts=animation_opts, + include_plotlyjs=False, + ) + + +class ColabRenderer(HtmlRenderer): + """ + Renderer to display interactive figures in Google Colab Notebooks. + + This renderer is enabled by default when running in a Colab notebook. + + mime type: 'text/html' + """ + + def __init__( + self, config=None, auto_play=False, post_script=None, animation_opts=None + ): + super(ColabRenderer, self).__init__( + connected=True, + full_html=True, + global_init=False, + config=config, + auto_play=auto_play, + post_script=post_script, + animation_opts=animation_opts, + ) + + +class IFrameRenderer(MimetypeRenderer): + """ + Renderer to display interactive figures using an IFrame. HTML + representations of Figures are saved to an `iframe_figures/` directory and + iframe HTML elements that reference these files are inserted into the + notebook. + + With this approach, neither plotly.js nor the figure data are embedded in + the notebook, so this is a good choice for notebooks that contain so many + large figures that basic operations (like saving and opening) become + very slow. + + Notebooks using this renderer will display properly when exported to HTML + as long as the `iframe_figures/` directory is placed in the same directory + as the exported html file. + + Note that the HTML files in `iframe_figures/` are numbered according to + the IPython cell execution count and so they will start being overwritten + each time the kernel is restarted. This directory may be deleted whenever + the kernel is restarted and it will be automatically recreated. + + mime type: 'text/html' + """ + + def __init__( + self, + config=None, + auto_play=False, + post_script=None, + animation_opts=None, + include_plotlyjs=True, + html_directory="iframe_figures", + ): + self.config = config + self.auto_play = auto_play + self.post_script = post_script + self.animation_opts = animation_opts + self.include_plotlyjs = include_plotlyjs + self.html_directory = html_directory + + def to_mimebundle(self, fig_dict): + from plotly.io import write_html + + # Make iframe size slightly larger than figure size to avoid + # having iframe have its own scroll bar. + iframe_buffer = 20 + layout = fig_dict.get("layout", {}) + + if layout.get("width", False): + iframe_width = str(layout["width"] + iframe_buffer) + "px" + else: + iframe_width = "100%" + + if layout.get("height", False): + iframe_height = layout["height"] + iframe_buffer + else: + iframe_height = str(525 + iframe_buffer) + "px" + + # Build filename using ipython cell number + filename = self.build_filename() + + # Make directory for + try: + os.makedirs(self.html_directory) + except OSError: + if not isdir(self.html_directory): + raise + + write_html( + fig_dict, + filename, + config=self.config, + auto_play=self.auto_play, + include_plotlyjs=self.include_plotlyjs, + include_mathjax="cdn", + auto_open=False, + post_script=self.post_script, + animation_opts=self.animation_opts, + default_width="100%", + default_height=525, + validate=False, + ) + + # Build IFrame + iframe_html = """\ + +""".format(width=iframe_width, height=iframe_height, src=self.build_url(filename)) + + return {"text/html": iframe_html} + + def build_filename(self): + ip = IPython.get_ipython() if IPython else None + try: + cell_number = list(ip.history_manager.get_tail(1))[0][1] + 1 if ip else 0 + except Exception: + cell_number = 0 + return "{dirname}/figure_{cell_number}.html".format( + dirname=self.html_directory, cell_number=cell_number + ) + + def build_url(self, filename): + return filename + + +class CoCalcRenderer(IFrameRenderer): + _render_count = 0 + + def build_filename(self): + filename = "{dirname}/figure_{render_count}.html".format( + dirname=self.html_directory, render_count=CoCalcRenderer._render_count + ) + + CoCalcRenderer._render_count += 1 + return filename + + def build_url(self, filename): + return "{filename}?fullscreen=kiosk".format(filename=filename) + + +class ExternalRenderer(BaseRenderer): + """ + Base class for external renderers. ExternalRenderer subclasses + do not display figures inline in a notebook environment, but render + figures by some external means (e.g. a separate browser tab). + + Unlike MimetypeRenderer subclasses, ExternalRenderer subclasses are not + invoked when a figure is asked to display itself in the notebook. + Instead, they are invoked when the plotly.io.show function is called + on a figure. + """ + + def render(self, fig): + raise NotImplementedError() + + +def open_html_in_browser(html, using=None, new=0, autoraise=True): + """ + Display html in a web browser without creating a temp file. + + Instantiates a trivial http server and uses the webbrowser module to + open a URL to retrieve html from that server. + + Parameters + ---------- + html: str + HTML string to display + using, new, autoraise: + See docstrings in webbrowser.get and webbrowser.open + """ + if isinstance(html, str): + html = html.encode("utf8") + + browser = None + + if using is None: + browser = webbrowser.get(None) + else: + if not isinstance(using, tuple): + using = (using,) + for browser_key in using: + try: + browser = webbrowser.get(browser_key) + if browser is not None: + break + except webbrowser.Error: + pass + + if browser is None: + raise ValueError("Can't locate a browser with key in " + str(using)) + + class OneShotRequestHandler(BaseHTTPRequestHandler): + def do_GET(self): + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + + bufferSize = 1024 * 1024 + for i in range(0, len(html), bufferSize): + self.wfile.write(html[i : i + bufferSize]) + + def log_message(self, format, *args): + # Silence stderr logging + pass + + server = HTTPServer(("127.0.0.1", 0), OneShotRequestHandler) + browser.open( + "http://127.0.0.1:%s" % server.server_port, new=new, autoraise=autoraise + ) + + server.handle_request() + + +class BrowserRenderer(ExternalRenderer): + """ + Renderer to display interactive figures in an external web browser. + This renderer will open a new browser window or tab when the + plotly.io.show function is called on a figure. + + This renderer has no ipython/jupyter dependencies and is a good choice + for use in environments that do not support the inline display of + interactive figures. + + mime type: 'text/html' + """ + + def __init__( + self, + config=None, + auto_play=False, + using=None, + new=0, + autoraise=True, + post_script=None, + animation_opts=None, + ): + self.config = config + self.auto_play = auto_play + self.using = using + self.new = new + self.autoraise = autoraise + self.post_script = post_script + self.animation_opts = animation_opts + + def render(self, fig_dict): + from plotly.io import to_html + + html = to_html( + fig_dict, + config=self.config, + auto_play=self.auto_play, + include_plotlyjs=True, + include_mathjax="cdn", + post_script=self.post_script, + full_html=True, + animation_opts=self.animation_opts, + default_width="100%", + default_height="100%", + validate=False, + ) + open_html_in_browser(html, self.using, self.new, self.autoraise) + + +class DatabricksRenderer(ExternalRenderer): + def __init__( + self, + config=None, + auto_play=False, + post_script=None, + animation_opts=None, + include_plotlyjs="cdn", + ): + self.config = config + self.auto_play = auto_play + self.post_script = post_script + self.animation_opts = animation_opts + self.include_plotlyjs = include_plotlyjs + self._displayHTML = None + + @property + def displayHTML(self): + import inspect + + if self._displayHTML is None: + for frame in inspect.getouterframes(inspect.currentframe()): + global_names = set(frame.frame.f_globals) + # Check for displayHTML plus a few others to reduce chance of a false + # hit. + if all(v in global_names for v in ["displayHTML", "display", "spark"]): + self._displayHTML = frame.frame.f_globals["displayHTML"] + break + + if self._displayHTML is None: + raise EnvironmentError( + """ +Unable to detect the Databricks displayHTML function. The 'databricks' renderer is only +supported when called from within the Databricks notebook environment.""" + ) + + return self._displayHTML + + def render(self, fig_dict): + from plotly.io import to_html + + html = to_html( + fig_dict, + config=self.config, + auto_play=self.auto_play, + include_plotlyjs=self.include_plotlyjs, + include_mathjax="cdn", + post_script=self.post_script, + full_html=True, + animation_opts=self.animation_opts, + default_width="100%", + default_height="100%", + validate=False, + ) + + # displayHTML is a Databricks notebook built-in function + self.displayHTML(html) + + +class SphinxGalleryHtmlRenderer(HtmlRenderer): + def __init__( + self, + connected=True, + config=None, + auto_play=False, + post_script=None, + animation_opts=None, + ): + super(SphinxGalleryHtmlRenderer, self).__init__( + connected=connected, + full_html=False, + global_init=False, + config=config, + auto_play=auto_play, + post_script=post_script, + animation_opts=animation_opts, + ) + + def to_mimebundle(self, fig_dict): + from plotly.io import to_html + + if self.connected: + include_plotlyjs = "cdn" + include_mathjax = "cdn" + else: + include_plotlyjs = True + include_mathjax = "cdn" + + html = to_html( + fig_dict, + config=self.config, + auto_play=self.auto_play, + include_plotlyjs=include_plotlyjs, + include_mathjax=include_mathjax, + full_html=self.full_html, + animation_opts=self.animation_opts, + default_width="100%", + default_height=525, + validate=False, + ) + + return {"text/html": html} + + +class SphinxGalleryOrcaRenderer(ExternalRenderer): + def render(self, fig_dict): + stack = inspect.stack() + # Name of script from which plot function was called is retrieved + try: + filename = stack[3].filename # let's hope this is robust... + except Exception: # python 2 + filename = stack[3][1] + filename_root, _ = os.path.splitext(filename) + filename_html = filename_root + ".html" + filename_png = filename_root + ".png" + figure = return_figure_from_figure_or_data(fig_dict, True) + _ = write_html(fig_dict, file=filename_html, include_plotlyjs="cdn") + try: + write_image(figure, filename_png) + except (ValueError, ImportError): + raise ImportError( + "orca and psutil are required to use the `sphinx-gallery-orca` renderer. " + "See https://plotly.com/python/static-image-export/ for instructions on " + "how to install orca. Alternatively, you can use the `sphinx-gallery` " + "renderer (note that png thumbnails can only be generated with " + "the `sphinx-gallery-orca` renderer)." + ) diff --git a/venv/lib/python3.8/site-packages/plotly/io/_defaults.py b/venv/lib/python3.8/site-packages/plotly/io/_defaults.py new file mode 100644 index 0000000..c36530c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_defaults.py @@ -0,0 +1,19 @@ +# Default settings for image generation + + +class _Defaults(object): + """ + Class to store default settings for image generation. + """ + + def __init__(self): + self.default_format = "png" + self.default_width = 700 + self.default_height = 500 + self.default_scale = 1 + self.mathjax = None + self.topojson = None + self.plotlyjs = None + + +defaults = _Defaults() diff --git a/venv/lib/python3.8/site-packages/plotly/io/_html.py b/venv/lib/python3.8/site-packages/plotly/io/_html.py new file mode 100644 index 0000000..3e7b89c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_html.py @@ -0,0 +1,517 @@ +import uuid +from pathlib import Path +import webbrowser +import hashlib +import base64 + +from _plotly_utils.optional_imports import get_module +from plotly.io._utils import validate_coerce_fig_to_dict, plotly_cdn_url +from plotly.offline.offline import _get_jconfig, get_plotlyjs + +_json = get_module("json") + + +def _generate_sri_hash(content): + """Generate SHA256 hash for SRI (Subresource Integrity)""" + if isinstance(content, str): + content = content.encode("utf-8") + sha256_hash = hashlib.sha256(content).digest() + return "sha256-" + base64.b64encode(sha256_hash).decode("utf-8") + + +# Build script to set global PlotlyConfig object. This must execute before +# plotly.js is loaded. +_window_plotly_config = """\ +""" + +_mathjax_config = """\ +""" + + +def to_html( + fig, + config=None, + auto_play=True, + include_plotlyjs=True, + include_mathjax=False, + post_script=None, + full_html=True, + animation_opts=None, + default_width="100%", + default_height="100%", + validate=True, + div_id=None, +): + """ + Convert a figure to an HTML string representation. + + Parameters + ---------- + fig: + Figure object or dict representing a figure + config: dict or None (default None) + Plotly.js figure config options + auto_play: bool (default=True) + Whether to automatically start the animation sequence on page load + if the figure contains frames. Has no effect if the figure does not + contain frames. + include_plotlyjs: bool or string (default True) + Specifies how the plotly.js library is included/loaded in the output + div string. + + If True, a script tag containing the plotly.js source code (~3MB) + is included in the output. HTML files generated with this option are + fully self-contained and can be used offline. + + If 'cdn', a script tag that references the plotly.js CDN is included + in the output. The url used is versioned to match the bundled plotly.js. + HTML files generated with this option are about 3MB smaller than those + generated with include_plotlyjs=True, but they require an active + internet connection in order to load the plotly.js library. + + If 'directory', a script tag is included that references an external + plotly.min.js bundle that is assumed to reside in the same + directory as the HTML file. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point + the resulting HTML file to an alternative CDN or local bundle. + + If False, no script tag referencing plotly.js is included. This is + useful when the resulting div string will be placed inside an HTML + document that already loads plotly.js. This option is not advised + when full_html=True as it will result in a non-functional html file. + include_mathjax: bool or string (default False) + Specifies how the MathJax.js library is included in the output html + div string. MathJax is required in order to display labels + with LaTeX typesetting. + + If False, no script tag referencing MathJax.js will be included in the + output. + + If 'cdn', a script tag that references a MathJax CDN location will be + included in the output. HTML div strings generated with this option + will be able to display LaTeX typesetting as long as internet access + is available. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point the + resulting HTML div string to an alternative CDN. + post_script: str or list or None (default None) + JavaScript snippet(s) to be included in the resulting div just after + plot creation. The string(s) may include '{plot_id}' placeholders + that will then be replaced by the `id` of the div element that the + plotly.js figure is associated with. One application for this script + is to install custom plotly.js event handlers. + full_html: bool (default True) + If True, produce a string containing a complete HTML document + starting with an tag. If False, produce a string containing + a single
element. + animation_opts: dict or None (default None) + dict of custom animation parameters to be passed to the function + Plotly.animate in Plotly.js. See + https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js + for available options. Has no effect if the figure does not contain + frames, or auto_play is False. + default_width, default_height: number or str (default '100%') + The default figure width/height to use if the provided figure does not + specify its own layout.width/layout.height property. May be + specified in pixels as an integer (e.g. 500), or as a css width style + string (e.g. '500px', '100%'). + validate: bool (default True) + True if the figure should be validated before being converted to + JSON, False otherwise. + div_id: str (default None) + If provided, this is the value of the id attribute of the div tag. If None, the + id attribute is a UUID. + + Returns + ------- + str + Representation of figure as an HTML div string + """ + from plotly.io.json import to_json_plotly + + # ## Validate figure ## + fig_dict = validate_coerce_fig_to_dict(fig, validate) + + # ## Generate div id ## + plotdivid = div_id or str(uuid.uuid4()) + + # ## Serialize figure ## + jdata = to_json_plotly(fig_dict.get("data", [])) + jlayout = to_json_plotly(fig_dict.get("layout", {})) + + if fig_dict.get("frames", None): + jframes = to_json_plotly(fig_dict.get("frames", [])) + else: + jframes = None + + # ## Serialize figure config ## + config = _get_jconfig(config) + + # Set responsive + config.setdefault("responsive", True) + + # Get div width/height + layout_dict = fig_dict.get("layout", {}) + template_dict = fig_dict.get("layout", {}).get("template", {}).get("layout", {}) + + div_width = layout_dict.get("width", template_dict.get("width", default_width)) + div_height = layout_dict.get("height", template_dict.get("height", default_height)) + + # Add 'px' suffix to numeric widths + try: + float(div_width) + except (ValueError, TypeError): + pass + else: + div_width = str(div_width) + "px" + + try: + float(div_height) + except (ValueError, TypeError): + pass + else: + div_height = str(div_height) + "px" + + # ## Get platform URL ## + if config.get("showLink", False) or config.get("showSendToCloud", False): + # Figure is going to include a Chart Studio link or send-to-cloud button, + # So we need to configure the PLOTLYENV.BASE_URL property + base_url_line = """ + window.PLOTLYENV.BASE_URL='{plotly_platform_url}';\ +""".format(plotly_platform_url=config.get("plotlyServerURL", "https://plot.ly")) + else: + # Figure is not going to include a Chart Studio link or send-to-cloud button, + # In this case we don't want https://plot.ly to show up anywhere in the HTML + # output + config.pop("plotlyServerURL", None) + config.pop("linkText", None) + config.pop("showLink", None) + base_url_line = "" + + # ## Build script body ## + # This is the part that actually calls Plotly.js + + # build post script snippet(s) + then_post_script = "" + if post_script: + if not isinstance(post_script, (list, tuple)): + post_script = [post_script] + for ps in post_script: + then_post_script += """.then(function(){{ + {post_script} + }})""".format(post_script=ps.replace("{plot_id}", plotdivid)) + + then_addframes = "" + then_animate = "" + if jframes: + then_addframes = """.then(function(){{ + Plotly.addFrames('{id}', {frames}); + }})""".format(id=plotdivid, frames=jframes) + + if auto_play: + if animation_opts: + animation_opts_arg = ", " + _json.dumps(animation_opts) + else: + animation_opts_arg = "" + then_animate = """.then(function(){{ + Plotly.animate('{id}', null{animation_opts}); + }})""".format(id=plotdivid, animation_opts=animation_opts_arg) + + # Serialize config dict to JSON + jconfig = _json.dumps(config) + + script = """\ + if (document.getElementById("{id}")) {{\ + Plotly.newPlot(\ + "{id}",\ + {data},\ + {layout},\ + {config}\ + ){then_addframes}{then_animate}{then_post_script}\ + }}""".format( + id=plotdivid, + data=jdata, + layout=jlayout, + config=jconfig, + then_addframes=then_addframes, + then_animate=then_animate, + then_post_script=then_post_script, + ) + + # ## Handle loading/initializing plotly.js ## + include_plotlyjs_orig = include_plotlyjs + if isinstance(include_plotlyjs, str): + include_plotlyjs = include_plotlyjs.lower() + + # Init and load + load_plotlyjs = "" + + if include_plotlyjs == "cdn": + # Generate SRI hash from the bundled plotly.js content + plotlyjs_content = get_plotlyjs() + sri_hash = _generate_sri_hash(plotlyjs_content) + + load_plotlyjs = """\ + {win_config} + \ + """.format( + win_config=_window_plotly_config, + cdn_url=plotly_cdn_url(), + integrity=sri_hash, + ) + + elif include_plotlyjs == "directory": + load_plotlyjs = """\ + {win_config} + \ + """.format(win_config=_window_plotly_config) + + elif isinstance(include_plotlyjs, str) and include_plotlyjs.endswith(".js"): + load_plotlyjs = """\ + {win_config} + \ + """.format(win_config=_window_plotly_config, url=include_plotlyjs_orig) + + elif include_plotlyjs: + load_plotlyjs = """\ + {win_config} + \ + """.format(win_config=_window_plotly_config, plotlyjs=get_plotlyjs()) + + # ## Handle loading/initializing MathJax ## + include_mathjax_orig = include_mathjax + if isinstance(include_mathjax, str): + include_mathjax = include_mathjax.lower() + + mathjax_template = """\ + """ + + if include_mathjax == "cdn": + mathjax_script = ( + mathjax_template.format( + url=("https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js") + ) + + _mathjax_config + ) + + elif isinstance(include_mathjax, str) and include_mathjax.endswith(".js"): + mathjax_script = ( + mathjax_template.format(url=include_mathjax_orig) + _mathjax_config + ) + elif not include_mathjax: + mathjax_script = "" + else: + raise ValueError( + """\ +Invalid value of type {typ} received as the include_mathjax argument + Received value: {val} + +include_mathjax may be specified as False, 'cdn', or a string ending with '.js' + """.format(typ=type(include_mathjax), val=repr(include_mathjax)) + ) + + plotly_html_div = """\ +
\ + {mathjax_script}\ + {load_plotlyjs}\ +
\ + \ +
""".format( + mathjax_script=mathjax_script, + load_plotlyjs=load_plotlyjs, + id=plotdivid, + width=div_width, + height=div_height, + base_url_line=base_url_line, + script=script, + ).strip() + + if full_html: + return """\ + + + + {div} + +""".format(div=plotly_html_div) + else: + return plotly_html_div + + +def write_html( + fig, + file, + config=None, + auto_play=True, + include_plotlyjs=True, + include_mathjax=False, + post_script=None, + full_html=True, + animation_opts=None, + validate=True, + default_width="100%", + default_height="100%", + auto_open=False, + div_id=None, +): + """ + Write a figure to an HTML file representation + + Parameters + ---------- + fig: + Figure object or dict representing a figure + file: str or writeable + A string representing a local file path or a writeable object + (e.g. a pathlib.Path object or an open file descriptor) + config: dict or None (default None) + Plotly.js figure config options + auto_play: bool (default=True) + Whether to automatically start the animation sequence on page load + if the figure contains frames. Has no effect if the figure does not + contain frames. + include_plotlyjs: bool or string (default True) + Specifies how the plotly.js library is included/loaded in the output + div string. + + If True, a script tag containing the plotly.js source code (~3MB) + is included in the output. HTML files generated with this option are + fully self-contained and can be used offline. + + If 'cdn', a script tag that references the plotly.js CDN is included + in the output. The url used is versioned to match the bundled plotly.js. + HTML files generated with this option are about 3MB smaller than those + generated with include_plotlyjs=True, but they require an active + internet connection in order to load the plotly.js library. + + If 'directory', a script tag is included that references an external + plotly.min.js bundle that is assumed to reside in the same + directory as the HTML file. If `file` is a string to a local file + path and `full_html` is True, then the plotly.min.js bundle is copied + into the directory of the resulting HTML file. If a file named + plotly.min.js already exists in the output directory then this file + is left unmodified and no copy is performed. HTML files generated + with this option can be used offline, but they require a copy of + the plotly.min.js bundle in the same directory. This option is + useful when many figures will be saved as HTML files in the same + directory because the plotly.js source code will be included only + once per output directory, rather than once per output file. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point + the resulting HTML file to an alternative CDN or local bundle. + + If False, no script tag referencing plotly.js is included. This is + useful when the resulting div string will be placed inside an HTML + document that already loads plotly.js. This option is not advised + when full_html=True as it will result in a non-functional html file. + + include_mathjax: bool or string (default False) + Specifies how the MathJax.js library is included in the output html + div string. MathJax is required in order to display labels + with LaTeX typesetting. + + If False, no script tag referencing MathJax.js will be included in the + output. + + If 'cdn', a script tag that references a MathJax CDN location will be + included in the output. HTML div strings generated with this option + will be able to display LaTeX typesetting as long as internet access + is available. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point the + resulting HTML div string to an alternative CDN. + post_script: str or list or None (default None) + JavaScript snippet(s) to be included in the resulting div just after + plot creation. The string(s) may include '{plot_id}' placeholders + that will then be replaced by the `id` of the div element that the + plotly.js figure is associated with. One application for this script + is to install custom plotly.js event handlers. + full_html: bool (default True) + If True, produce a string containing a complete HTML document + starting with an tag. If False, produce a string containing + a single
element. + animation_opts: dict or None (default None) + dict of custom animation parameters to be passed to the function + Plotly.animate in Plotly.js. See + https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js + for available options. Has no effect if the figure does not contain + frames, or auto_play is False. + default_width, default_height: number or str (default '100%') + The default figure width/height to use if the provided figure does not + specify its own layout.width/layout.height property. May be + specified in pixels as an integer (e.g. 500), or as a css width style + string (e.g. '500px', '100%'). + validate: bool (default True) + True if the figure should be validated before being converted to + JSON, False otherwise. + auto_open: bool (default True) + If True, open the saved file in a web browser after saving. + This argument only applies if `full_html` is True. + div_id: str (default None) + If provided, this is the value of the id attribute of the div tag. If None, the + id attribute is a UUID. + + Returns + ------- + None + """ + + # Build HTML string + html_str = to_html( + fig, + config=config, + auto_play=auto_play, + include_plotlyjs=include_plotlyjs, + include_mathjax=include_mathjax, + post_script=post_script, + full_html=full_html, + animation_opts=animation_opts, + default_width=default_width, + default_height=default_height, + validate=validate, + div_id=div_id, + ) + + # Check if file is a string + if isinstance(file, str): + # Use the standard pathlib constructor to make a pathlib object. + path = Path(file) + elif isinstance(file, Path): # PurePath is the most general pathlib object. + # `file` is already a pathlib object. + path = file + else: + # We could not make a pathlib object out of file. Either `file` is an open file + # descriptor with a `write()` method or it's an invalid object. + path = None + + # Write HTML string + if path is not None: + # To use a different file encoding, pass a file descriptor + path.write_text(html_str, "utf-8") + else: + file.write(html_str) + + # Check if we should copy plotly.min.js to output directory + if path is not None and full_html and include_plotlyjs == "directory": + bundle_path = path.parent / "plotly.min.js" + + if not bundle_path.exists(): + bundle_path.write_text(get_plotlyjs(), encoding="utf-8") + + # Handle auto_open + if path is not None and full_html and auto_open: + url = path.absolute().as_uri() + webbrowser.open(url) diff --git a/venv/lib/python3.8/site-packages/plotly/io/_json.py b/venv/lib/python3.8/site-packages/plotly/io/_json.py new file mode 100644 index 0000000..e4324d1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_json.py @@ -0,0 +1,594 @@ +import json +import decimal +import datetime +import warnings +from pathlib import Path + +from plotly.io._utils import validate_coerce_fig_to_dict, validate_coerce_output_type +from _plotly_utils.optional_imports import get_module +from _plotly_utils.basevalidators import ImageUriValidator + + +# Orca configuration class +# ------------------------ +class JsonConfig(object): + _valid_engines = ("json", "orjson", "auto") + + def __init__(self): + self._default_engine = "auto" + + @property + def default_engine(self): + return self._default_engine + + @default_engine.setter + def default_engine(self, val): + if val not in JsonConfig._valid_engines: + raise ValueError( + "Supported JSON engines include {valid}\n Received {val}".format( + valid=JsonConfig._valid_engines, val=val + ) + ) + + if val == "orjson": + self.validate_orjson() + + self._default_engine = val + + @classmethod + def validate_orjson(cls): + orjson = get_module("orjson") + if orjson is None: + raise ValueError("The orjson engine requires the orjson package") + + +config = JsonConfig() + + +def coerce_to_strict(const): + """ + This is used to ultimately *encode* into strict JSON, see `encode` + + """ + # before python 2.7, 'true', 'false', 'null', were include here. + if const in ("Infinity", "-Infinity", "NaN"): + return None + else: + return const + + +_swap_json = ( + ("<", "\\u003c"), + (">", "\\u003e"), + ("/", "\\u002f"), +) +_swap_orjson = _swap_json + ( + ("\u2028", "\\u2028"), + ("\u2029", "\\u2029"), +) + + +def _safe(json_str, _swap): + out = json_str + for unsafe_char, safe_char in _swap: + if unsafe_char in out: + out = out.replace(unsafe_char, safe_char) + return out + + +def to_json_plotly(plotly_object, pretty=False, engine=None): + """ + Convert a plotly/Dash object to a JSON string representation + + Parameters + ---------- + plotly_object: + A plotly/Dash object represented as a dict, graph_object, or Dash component + + pretty: bool (default False) + True if JSON representation should be pretty-printed, False if + representation should be as compact as possible. + + engine: str (default None) + The JSON encoding engine to use. One of: + - "json" for an engine based on the built-in Python json module + - "orjson" for a faster engine that requires the orjson package + - "auto" for the "orjson" engine if available, otherwise "json" + If not specified, the default engine is set to the current value of + plotly.io.json.config.default_engine. + + Returns + ------- + str + Representation of input object as a JSON string + + See Also + -------- + to_json : Convert a plotly Figure to JSON with validation + """ + orjson = get_module("orjson", should_load=True) + + # Determine json engine + if engine is None: + engine = config.default_engine + + if engine == "auto": + if orjson is not None: + engine = "orjson" + else: + engine = "json" + elif engine not in ["orjson", "json"]: + raise ValueError("Invalid json engine: %s" % engine) + + modules = { + "sage_all": get_module("sage.all", should_load=False), + "np": get_module("numpy", should_load=False), + "pd": get_module("pandas", should_load=False), + "image": get_module("PIL.Image", should_load=False), + } + + # Dump to a JSON string and return + # -------------------------------- + if engine == "json": + opts = {} + if pretty: + opts["indent"] = 2 + else: + # Remove all whitespace + opts["separators"] = (",", ":") + + from _plotly_utils.utils import PlotlyJSONEncoder + + return _safe( + json.dumps(plotly_object, cls=PlotlyJSONEncoder, **opts), _swap_json + ) + elif engine == "orjson": + JsonConfig.validate_orjson() + opts = orjson.OPT_NON_STR_KEYS | orjson.OPT_SERIALIZE_NUMPY + + if pretty: + opts |= orjson.OPT_INDENT_2 + + # Plotly + try: + plotly_object = plotly_object.to_plotly_json() + except AttributeError: + pass + + # Try without cleaning + try: + return _safe( + orjson.dumps(plotly_object, option=opts).decode("utf8"), _swap_orjson + ) + except TypeError: + pass + + cleaned = clean_to_json_compatible( + plotly_object, + numpy_allowed=True, + datetime_allowed=True, + modules=modules, + ) + return _safe(orjson.dumps(cleaned, option=opts).decode("utf8"), _swap_orjson) + + +def to_json(fig, validate=True, pretty=False, remove_uids=True, engine=None): + """ + Convert a figure to a JSON string representation + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + validate: bool (default True) + True if the figure should be validated before being converted to + JSON, False otherwise. + + pretty: bool (default False) + True if JSON representation should be pretty-printed, False if + representation should be as compact as possible. + + remove_uids: bool (default True) + True if trace UIDs should be omitted from the JSON representation + + engine: str (default None) + The JSON encoding engine to use. One of: + - "json" for an engine based on the built-in Python json module + - "orjson" for a faster engine that requires the orjson package + - "auto" for the "orjson" engine if available, otherwise "json" + If not specified, the default engine is set to the current value of + plotly.io.json.config.default_engine. + + Returns + ------- + str + Representation of figure as a JSON string + + See Also + -------- + to_json_plotly : Convert an arbitrary plotly graph_object or Dash component to JSON + """ + # Validate figure + # --------------- + fig_dict = validate_coerce_fig_to_dict(fig, validate) + + # Remove trace uid + # ---------------- + if remove_uids: + for trace in fig_dict.get("data", []): + trace.pop("uid", None) + + return to_json_plotly(fig_dict, pretty=pretty, engine=engine) + + +def write_json(fig, file, validate=True, pretty=False, remove_uids=True, engine=None): + """ + Convert a figure to JSON and write it to a file or writeable + object + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + file: str or writeable + A string representing a local file path or a writeable object + (e.g. a pathlib.Path object or an open file descriptor) + + pretty: bool (default False) + True if JSON representation should be pretty-printed, False if + representation should be as compact as possible. + + remove_uids: bool (default True) + True if trace UIDs should be omitted from the JSON representation + + engine: str (default None) + The JSON encoding engine to use. One of: + - "json" for an engine based on the built-in Python json module + - "orjson" for a faster engine that requires the orjson package + - "auto" for the "orjson" engine if available, otherwise "json" + If not specified, the default engine is set to the current value of + plotly.io.json.config.default_engine. + Returns + ------- + None + """ + + # Get JSON string + # --------------- + # Pass through validate argument and let to_json handle validation logic + json_str = to_json( + fig, validate=validate, pretty=pretty, remove_uids=remove_uids, engine=engine + ) + + # Try to cast `file` as a pathlib object `path`. + # ---------------------------------------------- + if isinstance(file, str): + # Use the standard Path constructor to make a pathlib object. + path = Path(file) + elif isinstance(file, Path): + # `file` is already a Path object. + path = file + else: + # We could not make a Path object out of file. Either `file` is an open file + # descriptor with a `write()` method or it's an invalid object. + path = None + + # Open file + # --------- + if path is None: + # We previously failed to make sense of `file` as a pathlib object. + # Attempt to write to `file` as an open file descriptor. + try: + file.write(json_str) + return + except AttributeError: + pass + raise ValueError( + """ +The 'file' argument '{file}' is not a string, pathlib.Path object, or file descriptor. +""".format(file=file) + ) + else: + # We previously succeeded in interpreting `file` as a pathlib object. + # Now we can use `write_bytes()`. + path.write_text(json_str) + + +def from_json_plotly(value, engine=None): + """ + Parse JSON string using the specified JSON engine + + Parameters + ---------- + value: str or bytes + A JSON string or bytes object + + engine: str (default None) + The JSON decoding engine to use. One of: + - if "json", parse JSON using built in json module + - if "orjson", parse using the faster orjson module, requires the orjson + package + - if "auto" use orjson module if available, otherwise use the json module + + If not specified, the default engine is set to the current value of + plotly.io.json.config.default_engine. + + Returns + ------- + dict + + See Also + -------- + from_json_plotly : Parse JSON with plotly conventions into a dict + """ + orjson = get_module("orjson", should_load=True) + + # Validate value + # -------------- + if not isinstance(value, (str, bytes)): + raise ValueError( + """ +from_json_plotly requires a string or bytes argument but received value of type {typ} + Received value: {value}""".format(typ=type(value), value=value) + ) + + # Determine json engine + if engine is None: + engine = config.default_engine + + if engine == "auto": + if orjson is not None: + engine = "orjson" + else: + engine = "json" + elif engine not in ["orjson", "json"]: + raise ValueError("Invalid json engine: %s" % engine) + + if engine == "orjson": + JsonConfig.validate_orjson() + # orjson handles bytes input natively + value_dict = orjson.loads(value) + else: + # decode bytes to str for built-in json module + if isinstance(value, bytes): + value = value.decode("utf-8") + value_dict = json.loads(value) + + return value_dict + + +def from_json(value, output_type="Figure", skip_invalid=False, engine=None): + """ + Construct a figure from a JSON string + + Parameters + ---------- + value: str or bytes + String or bytes object containing the JSON representation of a figure + + output_type: type or str (default 'Figure') + The output figure type or type name. + One of: graph_objs.Figure, 'Figure', graph_objs.FigureWidget, 'FigureWidget' + + skip_invalid: bool (default False) + False if invalid figure properties should result in an exception. + True if invalid figure properties should be silently ignored. + + engine: str (default None) + The JSON decoding engine to use. One of: + - if "json", parse JSON using built in json module + - if "orjson", parse using the faster orjson module, requires the orjson + package + - if "auto" use orjson module if available, otherwise use the json module + + If not specified, the default engine is set to the current value of + plotly.io.json.config.default_engine. + + Raises + ------ + ValueError + if value is not a string, or if skip_invalid=False and value contains + invalid figure properties + + Returns + ------- + Figure or FigureWidget + """ + + # Decode JSON + # ----------- + fig_dict = from_json_plotly(value, engine=engine) + + # Validate coerce output type + # --------------------------- + cls = validate_coerce_output_type(output_type) + + # Create and return figure + # ------------------------ + fig = cls(fig_dict, skip_invalid=skip_invalid) + return fig + + +def read_json(file, output_type="Figure", skip_invalid=False, engine=None): + """ + Construct a figure from the JSON contents of a local file or readable + Python object + + Parameters + ---------- + file: str or readable + A string containing the path to a local file or a read-able Python + object (e.g. a pathlib.Path object or an open file descriptor) + + output_type: type or str (default 'Figure') + The output figure type or type name. + One of: graph_objs.Figure, 'Figure', graph_objs.FigureWidget, 'FigureWidget' + + skip_invalid: bool (default False) + False if invalid figure properties should result in an exception. + True if invalid figure properties should be silently ignored. + + engine: str (default None) + The JSON decoding engine to use. One of: + - if "json", parse JSON using built in json module + - if "orjson", parse using the faster orjson module, requires the orjson + package + - if "auto" use orjson module if available, otherwise use the json module + + If not specified, the default engine is set to the current value of + plotly.io.json.config.default_engine. + + Returns + ------- + Figure or FigureWidget + """ + + # Try to cast `file` as a pathlib object `path`. + if isinstance(file, str): + # Use the standard Path constructor to make a pathlib object. + path = Path(file) + elif isinstance(file, Path): + # `file` is already a Path object. + path = file + else: + # We could not make a Path object out of file. Either `file` is an open file + # descriptor with a `write()` method or it's an invalid object. + path = None + + # Read file contents into JSON string + # ----------------------------------- + if path is not None: + json_str = path.read_text() + else: + json_str = file.read() + + # Construct and return figure + # --------------------------- + return from_json( + json_str, skip_invalid=skip_invalid, output_type=output_type, engine=engine + ) + + +def clean_to_json_compatible(obj, **kwargs): + # Try handling value as a scalar value that we have a conversion for. + # Return immediately if we know we've hit a primitive value + + # Bail out fast for simple scalar types + if isinstance(obj, (int, float, str)): + return obj + + if isinstance(obj, dict): + return {k: clean_to_json_compatible(v, **kwargs) for k, v in obj.items()} + elif isinstance(obj, (list, tuple)): + if obj: + # Must process list recursively even though it may be slow + return [clean_to_json_compatible(v, **kwargs) for v in obj] + + # unpack kwargs + numpy_allowed = kwargs.get("numpy_allowed", False) + datetime_allowed = kwargs.get("datetime_allowed", False) + + modules = kwargs.get("modules", {}) + sage_all = modules["sage_all"] + np = modules["np"] + pd = modules["pd"] + image = modules["image"] + + # Sage + if sage_all is not None: + if obj in sage_all.RR: + return float(obj) + elif obj in sage_all.ZZ: + return int(obj) + + # numpy + if np is not None: + if obj is np.ma.core.masked: + return float("nan") + elif isinstance(obj, np.ndarray): + if numpy_allowed and obj.dtype.kind in ("b", "i", "u", "f"): + return np.ascontiguousarray(obj) + elif obj.dtype.kind == "M": + # datetime64 array + return np.datetime_as_string(obj).tolist() + elif obj.dtype.kind == "U": + return obj.tolist() + elif obj.dtype.kind == "O": + # Treat object array as a lists, continue processing + obj = obj.tolist() + elif isinstance(obj, np.datetime64): + return str(obj) + + # pandas + if pd is not None: + if obj is pd.NaT or obj is pd.NA: + return None + elif isinstance(obj, (pd.Series, pd.DatetimeIndex)): + if numpy_allowed and obj.dtype.kind in ("b", "i", "u", "f"): + return np.ascontiguousarray(obj.values) + elif obj.dtype.kind == "M": + if isinstance(obj, pd.Series): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", FutureWarning) + # Series.dt.to_pydatetime will return Index[object] + # https://github.com/pandas-dev/pandas/pull/52459 + dt_values = np.array(obj.dt.to_pydatetime()).tolist() + else: # DatetimeIndex + dt_values = obj.to_pydatetime().tolist() + + if not datetime_allowed: + # Note: We don't need to handle dropping timezones here because + # numpy's datetime64 doesn't support them and pandas's tz_localize + # above drops them. + for i in range(len(dt_values)): + dt_values[i] = dt_values[i].isoformat() + + return dt_values + + # datetime and date + try: + # Need to drop timezone for scalar datetimes. Don't need to convert + # to string since engine can do that + obj = obj.to_pydatetime() + except (TypeError, AttributeError): + pass + + if not datetime_allowed: + try: + return obj.isoformat() + except (TypeError, AttributeError): + pass + elif isinstance(obj, datetime.datetime): + return obj + + # Try .tolist() convertible, do not recurse inside + try: + return obj.tolist() + except AttributeError: + pass + + # Do best we can with decimal + if isinstance(obj, decimal.Decimal): + return float(obj) + + # PIL + if image is not None and isinstance(obj, image.Image): + return ImageUriValidator.pil_image_to_uri(obj) + + # Plotly + try: + obj = obj.to_plotly_json() + except AttributeError: + pass + + # Recurse into lists and dictionaries + if isinstance(obj, dict): + return {k: clean_to_json_compatible(v, **kwargs) for k, v in obj.items()} + elif isinstance(obj, (list, tuple)): + if obj: + # Must process list recursively even though it may be slow + return [clean_to_json_compatible(v, **kwargs) for v in obj] + + return obj diff --git a/venv/lib/python3.8/site-packages/plotly/io/_kaleido.py b/venv/lib/python3.8/site-packages/plotly/io/_kaleido.py new file mode 100644 index 0000000..6775c33 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_kaleido.py @@ -0,0 +1,872 @@ +import os +import json +from pathlib import Path +from typing import Union, List +import importlib.metadata as importlib_metadata +from packaging.version import Version +import warnings + +import plotly +from plotly.io._utils import validate_coerce_fig_to_dict, broadcast_args_to_dicts +from plotly.io._defaults import defaults + +ENGINE_SUPPORT_TIMELINE = "September 2025" +ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS = True + +PLOTLY_GET_CHROME_ERROR_MSG = """ + +Kaleido requires Google Chrome to be installed. + +Either download and install Chrome yourself following Google's instructions for your operating system, +or install it from your terminal by running: + + $ plotly_get_chrome + +""" + +KALEIDO_DEPRECATION_MSG = f""" +Support for Kaleido versions less than 1.0.0 is deprecated and will be removed after {ENGINE_SUPPORT_TIMELINE}. +Please upgrade Kaleido to version 1.0.0 or greater (`pip install 'kaleido>=1.0.0'` or `pip install 'plotly[kaleido]'`). +""" +ORCA_DEPRECATION_MSG = f""" +Support for the Orca engine is deprecated and will be removed after {ENGINE_SUPPORT_TIMELINE}. +Please install Kaleido (`pip install 'kaleido>=1.0.0'` or `pip install 'plotly[kaleido]'`) to use the Kaleido engine. +""" +ENGINE_PARAM_DEPRECATION_MSG = f""" +Support for the 'engine' argument is deprecated and will be removed after {ENGINE_SUPPORT_TIMELINE}. +Kaleido will be the only supported engine at that time. +""" + +_KALEIDO_AVAILABLE = None +_KALEIDO_MAJOR = None + + +def kaleido_scope_default_warning_func(x): + return f""" +Use of plotly.io.kaleido.scope.{x} is deprecated and support will be removed after {ENGINE_SUPPORT_TIMELINE}. +Please use plotly.io.defaults.{x} instead. +""" + + +def bad_attribute_error_msg_func(x): + return f""" +Attribute plotly.io.defaults.{x} is not valid. +Also, use of plotly.io.kaleido.scope.* is deprecated and support will be removed after {ENGINE_SUPPORT_TIMELINE}. +Please use plotly.io.defaults.* instead. +""" + + +def kaleido_available() -> bool: + """ + Returns True if any version of Kaleido is installed, otherwise False. + """ + global _KALEIDO_AVAILABLE + global _KALEIDO_MAJOR + if _KALEIDO_AVAILABLE is not None: + return _KALEIDO_AVAILABLE + try: + import kaleido # noqa: F401 + + _KALEIDO_AVAILABLE = True + except ImportError: + _KALEIDO_AVAILABLE = False + return _KALEIDO_AVAILABLE + + +def kaleido_major() -> int: + """ + Returns the major version number of Kaleido if it is installed, + otherwise raises a ValueError. + """ + global _KALEIDO_MAJOR + if _KALEIDO_MAJOR is not None: + return _KALEIDO_MAJOR + if not kaleido_available(): + raise ValueError("Kaleido is not installed.") + else: + _KALEIDO_MAJOR = Version(importlib_metadata.version("kaleido")).major + return _KALEIDO_MAJOR + + +try: + if kaleido_available() and kaleido_major() < 1: + # Kaleido v0 + import kaleido + from kaleido.scopes.plotly import PlotlyScope + + # Show a deprecation warning if the old method of setting defaults is used + class PlotlyScopeWrapper(PlotlyScope): + def __setattr__(self, name, value): + if name in defaults.__dict__: + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn( + kaleido_scope_default_warning_func(name), + DeprecationWarning, + stacklevel=2, + ) + super().__setattr__(name, value) + + def __getattr__(self, name): + if hasattr(defaults, name): + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn( + kaleido_scope_default_warning_func(name), + DeprecationWarning, + stacklevel=2, + ) + return super().__getattr__(name) + + # Ensure the new method of setting defaults is backwards compatible with Kaleido v0 + # DefaultsBackwardsCompatible sets the attributes on `scope` object at the same time + # as they are set on the `defaults` object + class DefaultsBackwardsCompatible(defaults.__class__): + def __init__(self, scope): + self._scope = scope + super().__init__() + + def __setattr__(self, name, value): + if not name == "_scope": + if ( + hasattr(self._scope, name) + and getattr(self._scope, name) != value + ): + setattr(self._scope, name, value) + super().__setattr__(name, value) + + scope = PlotlyScopeWrapper() + defaults = DefaultsBackwardsCompatible(scope) + # Compute absolute path to the 'plotly/package_data/' directory + root_dir = os.path.dirname(os.path.abspath(plotly.__file__)) + package_dir = os.path.join(root_dir, "package_data") + scope.plotlyjs = os.path.join(package_dir, "plotly.min.js") + if scope.mathjax is None: + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", message=r".*scope\.mathjax.*", category=DeprecationWarning + ) + scope.mathjax = ( + "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" + ) + else: + # Kaleido v1 + import kaleido + + # Show a deprecation warning if the old method of setting defaults is used + class DefaultsWrapper: + def __getattr__(self, name): + if hasattr(defaults, name): + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn( + kaleido_scope_default_warning_func(name), + DeprecationWarning, + stacklevel=2, + ) + return getattr(defaults, name) + else: + raise AttributeError(bad_attribute_error_msg_func(name)) + + def __setattr__(self, name, value): + if hasattr(defaults, name): + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn( + kaleido_scope_default_warning_func(name), + DeprecationWarning, + stacklevel=2, + ) + setattr(defaults, name, value) + else: + raise AttributeError(bad_attribute_error_msg_func(name)) + + scope = DefaultsWrapper() + +except ImportError: + PlotlyScope = None + scope = None + + +def as_path_object(file: Union[str, Path]) -> Union[Path, None]: + """ + Cast the `file` argument, which may be either a string or a Path object, + to a Path object. + If `file` is neither a string nor a Path object, None will be returned. + """ + if isinstance(file, str): + # Use the standard Path constructor to make a pathlib object. + path = Path(file) + elif isinstance(file, Path): + # `file` is already a Path object. + path = file + else: + # We could not make a Path object out of file. Either `file` is an open file + # descriptor with a `write()` method or it's an invalid object. + path = None + return path + + +def infer_format(path: Union[Path, None], format: Union[str, None]) -> Union[str, None]: + if path is not None and format is None: + ext = path.suffix + if ext: + format = ext.lstrip(".") + else: + raise ValueError( + f""" +Cannot infer image type from output path '{path}'. +Please specify the type using the format parameter, or add a file extension. +For example: + + >>> import plotly.io as pio + >>> pio.write_image(fig, file_path, format='png') +""" + ) + return format + + +def to_image( + fig: Union[dict, plotly.graph_objects.Figure], + format: Union[str, None] = None, + width: Union[int, None] = None, + height: Union[int, None] = None, + scale: Union[int, float, None] = None, + validate: bool = True, + # Deprecated + engine: Union[str, None] = None, +) -> bytes: + """ + Convert a figure to a static image bytes string + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + format: str or None + The desired image format. One of + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (deprecated) (Requires the poppler library to be installed and on the PATH) + + If not specified, will default to: + - `plotly.io.defaults.default_format` if engine is "kaleido" + - `plotly.io.orca.config.default_format` if engine is "orca" (deprecated) + + width: int or None + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_width` if engine is "kaleido" + - `plotly.io.orca.config.default_width` if engine is "orca" (deprecated) + + height: int or None + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_height` if engine is "kaleido" + - `plotly.io.orca.config.default_height` if engine is "orca" (deprecated) + + scale: int or float or None + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + If not specified, will default to: + - `plotly.io.defaults.default_scale` if engine is "kaleido" + - `plotly.io.orca.config.default_scale` if engine is "orca" (deprecated) + + validate: bool + True if the figure should be validated before being converted to + an image, False otherwise. + + engine (deprecated): str + Image export engine to use. This parameter is deprecated and Orca engine support will be + dropped in the next major Plotly version. Until then, the following values are supported: + - "kaleido": Use Kaleido for image export + - "orca": Use Orca for image export + - "auto" (default): Use Kaleido if installed, otherwise use Orca + + Returns + ------- + bytes + The image data + """ + + # Handle engine + if engine is not None: + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn( + ENGINE_PARAM_DEPRECATION_MSG, DeprecationWarning, stacklevel=2 + ) + else: + engine = "auto" + + if engine == "auto": + if kaleido_available(): + # Default to kaleido if available + engine = "kaleido" + else: + # See if orca is available + from ._orca import validate_executable + + try: + validate_executable() + engine = "orca" + except Exception: + # If orca not configured properly, make sure we display the error + # message advising the installation of kaleido + engine = "kaleido" + + if engine == "orca": + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn(ORCA_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + # Fall back to legacy orca image export path + from ._orca import to_image as to_image_orca + + return to_image_orca( + fig, + format=format, + width=width, + height=height, + scale=scale, + validate=validate, + ) + elif engine != "kaleido": + raise ValueError(f"Invalid image export engine specified: {repr(engine)}") + + # Raise informative error message if Kaleido is not installed + if not kaleido_available(): + raise ValueError( + """ +Image export using the "kaleido" engine requires the Kaleido package, +which can be installed using pip: + + $ pip install --upgrade kaleido +""" + ) + + # Convert figure to dict (and validate if requested) + fig_dict = validate_coerce_fig_to_dict(fig, validate) + + # Request image bytes + if kaleido_major() > 0: + # Kaleido v1 + # Check if trying to export to EPS format, which is not supported in Kaleido v1 + if format == "eps": + raise ValueError( + f""" +EPS export is not supported by Kaleido v1. Please use SVG or PDF instead. +You can also downgrade to Kaleido v0, but support for Kaleido v0 will be removed after {ENGINE_SUPPORT_TIMELINE}. +To downgrade to Kaleido v0, run: + $ pip install 'kaleido<1.0.0' +""" + ) + from kaleido.errors import ChromeNotFoundError + + try: + kopts = {} + if defaults.plotlyjs: + kopts["plotlyjs"] = defaults.plotlyjs + if defaults.mathjax: + kopts["mathjax"] = defaults.mathjax + + # TODO: Refactor to make it possible to use a shared Kaleido instance here + img_bytes = kaleido.calc_fig_sync( + fig_dict, + opts=dict( + format=format or defaults.default_format, + width=width or defaults.default_width, + height=height or defaults.default_height, + scale=scale or defaults.default_scale, + ), + topojson=defaults.topojson, + kopts=kopts, + ) + except ChromeNotFoundError: + raise RuntimeError(PLOTLY_GET_CHROME_ERROR_MSG) + + else: + # Kaleido v0 + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn(KALEIDO_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + img_bytes = scope.transform( + fig_dict, format=format, width=width, height=height, scale=scale + ) + + return img_bytes + + +def write_image( + fig: Union[dict, plotly.graph_objects.Figure], + file: Union[str, Path], + format: Union[str, None] = None, + scale: Union[int, float, None] = None, + width: Union[int, None] = None, + height: Union[int, None] = None, + validate: bool = True, + # Deprecated + engine: Union[str, None] = "auto", +): + """ + Convert a figure to a static image and write it to a file or writeable + object + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + file: str or writeable + A string representing a local file path or a writeable object + (e.g. a pathlib.Path object or an open file descriptor) + + format: str or None + The desired image format. One of + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (deprecated) (Requires the poppler library to be installed and on the PATH) + + If not specified and `file` is a string then this will default to the + file extension. If not specified and `file` is not a string then this + will default to: + - `plotly.io.defaults.default_format` if engine is "kaleido" + - `plotly.io.orca.config.default_format` if engine is "orca" (deprecated) + + width: int or None + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_width` if engine is "kaleido" + - `plotly.io.orca.config.default_width` if engine is "orca" (deprecated) + + height: int or None + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + If not specified, will default to: + - `plotly.io.defaults.default_height` if engine is "kaleido" + - `plotly.io.orca.config.default_height` if engine is "orca" (deprecated) + + scale: int or float or None + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + If not specified, will default to: + - `plotly.io.defaults.default_scale` if engine is "kaleido" + - `plotly.io.orca.config.default_scale` if engine is "orca" (deprecated) + + validate: bool + True if the figure should be validated before being converted to + an image, False otherwise. + + engine (deprecated): str + Image export engine to use. This parameter is deprecated and Orca engine support will be + dropped in the next major Plotly version. Until then, the following values are supported: + - "kaleido": Use Kaleido for image export + - "orca": Use Orca for image export + - "auto" (default): Use Kaleido if installed, otherwise use Orca + + Returns + ------- + None + """ + # Show Kaleido deprecation warning if needed + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + if ( + engine in {None, "auto", "kaleido"} + and kaleido_available() + and kaleido_major() < 1 + ): + warnings.warn(KALEIDO_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + if engine == "orca": + warnings.warn(ORCA_DEPRECATION_MSG, DeprecationWarning, stacklevel=2) + if engine not in {None, "auto"}: + warnings.warn( + ENGINE_PARAM_DEPRECATION_MSG, DeprecationWarning, stacklevel=2 + ) + + # Try to cast `file` as a pathlib object `path`. + path = as_path_object(file) + + # Infer image format if not specified + format = infer_format(path, format) + + # Request image + # Do this first so we don't create a file if image conversion fails + img_data = to_image( + fig, + format=format, + scale=scale, + width=width, + height=height, + validate=validate, + engine=engine, + ) + + # Open file + if path is None: + # We previously failed to make sense of `file` as a pathlib object. + # Attempt to write to `file` as an open file descriptor. + try: + file.write(img_data) + return + except AttributeError: + pass + raise ValueError( + f""" +The 'file' argument '{file}' is not a string, pathlib.Path object, or file descriptor. +""" + ) + else: + # We previously succeeded in interpreting `file` as a pathlib object. + # Now we can use `write_bytes()`. + path.write_bytes(img_data) + + +def write_images( + fig: Union[ + List[Union[dict, plotly.graph_objects.Figure]], + Union[dict, plotly.graph_objects.Figure], + ], + file: Union[List[Union[str, Path]], Union[str, Path]], + format: Union[List[Union[str, None]], Union[str, None]] = None, + scale: Union[List[Union[int, float, None]], Union[int, float, None]] = None, + width: Union[List[Union[int, None]], Union[int, None]] = None, + height: Union[List[Union[int, None]], Union[int, None]] = None, + validate: Union[List[bool], bool] = True, +) -> None: + """ + Write multiple images to files or writeable objects. This is much faster than + calling write_image() multiple times. This function can only be used with the Kaleido + engine, v1.0.0 or greater. + + This function accepts the same arguments as write_image() (minus the `engine` argument), + except that any of the arguments may be either a single value or an iterable of values. + If multiple arguments are iterable, they must all have the same length. + + Parameters + ---------- + fig: + List of figure objects or dicts representing a figure. + Also accepts a single figure or dict representing a figure. + + file: str, pathlib.Path, or list of (str or pathlib.Path) + List of str or pathlib.Path objects representing local file paths to write to. + Can also be a single str or pathlib.Path object if fig argument is + a single figure or dict representing a figure. + + format: str, None, or list of (str or None) + The image format to use for exported images. + Supported formats are: + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + + Use a list to specify formats for each figure or dict in the list + provided to the `fig` argument. + Specify format as a `str` to apply the same format to all exported images. + If not specified, and the corresponding `file` argument has a file extension, then `format` will default to the + file extension. Otherwise, will default to `plotly.io.defaults.default_format`. + + width: int, None, or list of (int or None) + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + Use a list to specify widths for each figure or dict in the list + provided to the `fig` argument. + Specify width as an `int` to apply the same width to all exported images. + If not specified, will default to `plotly.io.defaults.default_width`. + + height: int, None, or list of (int or None) + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + Use a list to specify heights for each figure or dict in the list + provided to the `fig` argument. + Specify height as an `int` to apply the same height to all exported images. + If not specified, will default to `plotly.io.defaults.default_height`. + + scale: int, float, None, or list of (int, float, or None) + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + Use a list to specify scale for each figure or dict in the list + provided to the `fig` argument. + Specify scale as an `int` or `float` to apply the same scale to all exported images. + If not specified, will default to `plotly.io.defaults.default_scale`. + + validate: bool or list of bool + True if the figure should be validated before being converted to + an image, False otherwise. + + Use a list to specify validation setting for each figure in the list + provided to the `fig` argument. + Specify validate as a boolean to apply the same validation setting to all figures. + + Returns + ------- + None + """ + + # Raise informative error message if Kaleido v1 is not installed + if not kaleido_available(): + raise ValueError( + """ +The `write_images()` function requires the Kaleido package, +which can be installed using pip: + + $ pip install --upgrade kaleido +""" + ) + elif kaleido_major() < 1: + raise ValueError( + f""" +You have Kaleido version {Version(importlib_metadata.version("kaleido"))} installed. +The `write_images()` function requires the Kaleido package version 1.0.0 or greater, +which can be installed using pip: + + $ pip install 'kaleido>=1.0.0' +""" + ) + + # Broadcast arguments into correct format for passing to Kaleido + arg_dicts = broadcast_args_to_dicts( + fig=fig, + file=file, + format=format, + scale=scale, + width=width, + height=height, + validate=validate, + ) + + # For each dict: + # - convert figures to dicts (and validate if requested) + # - try to cast `file` as a Path object + for d in arg_dicts: + d["fig"] = validate_coerce_fig_to_dict(d["fig"], d["validate"]) + d["file"] = as_path_object(d["file"]) + + # Reshape arg_dicts into correct format for passing to Kaleido + # We call infer_format() here rather than above so that the `file` argument + # has already been cast to a Path object. + # Also insert defaults for any missing arguments as needed + kaleido_specs = [ + dict( + fig=d["fig"], + path=d["file"], + opts=dict( + format=infer_format(d["file"], d["format"]) or defaults.default_format, + width=d["width"] or defaults.default_width, + height=d["height"] or defaults.default_height, + scale=d["scale"] or defaults.default_scale, + ), + topojson=defaults.topojson, + ) + for d in arg_dicts + ] + + from kaleido.errors import ChromeNotFoundError + + try: + kopts = {} + if defaults.plotlyjs: + kopts["plotlyjs"] = defaults.plotlyjs + if defaults.mathjax: + kopts["mathjax"] = defaults.mathjax + kaleido.write_fig_from_object_sync( + kaleido_specs, + kopts=kopts, + ) + except ChromeNotFoundError: + raise RuntimeError(PLOTLY_GET_CHROME_ERROR_MSG) + + +def full_figure_for_development( + fig: Union[dict, plotly.graph_objects.Figure], + warn: bool = True, + as_dict: bool = False, +) -> Union[plotly.graph_objects.Figure, dict]: + """ + Compute default values for all attributes not specified in the input figure and + returns the output as a "full" figure. This function calls Plotly.js via Kaleido + to populate unspecified attributes. This function is intended for interactive use + during development to learn more about how Plotly.js computes default values and is + not generally necessary or recommended for production use. + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + warn: bool + If False, suppress warnings about not using this in production. + + as_dict: bool + If True, output is a dict with some keys that go.Figure can't parse. + If False, output is a go.Figure with unparseable keys skipped. + + Returns + ------- + plotly.graph_objects.Figure or dict + The full figure + """ + + # Raise informative error message if Kaleido is not installed + if not kaleido_available(): + raise ValueError( + """ +Full figure generation requires the Kaleido package, +which can be installed using pip: + + $ pip install --upgrade kaleido +""" + ) + + if warn: + warnings.warn( + "full_figure_for_development is not recommended or necessary for " + "production use in most circumstances. \n" + "To suppress this warning, set warn=False" + ) + + if kaleido_available() and kaleido_major() > 0: + # Kaleido v1 + bytes = kaleido.calc_fig_sync( + fig, + opts=dict(format="json"), + ) + fig = json.loads(bytes.decode("utf-8")) + else: + # Kaleido v0 + if ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS: + warnings.warn( + f"Support for Kaleido versions less than 1.0.0 is deprecated and will be removed after {ENGINE_SUPPORT_TIMELINE}. " + + "Please upgrade Kaleido to version 1.0.0 or greater (`pip install 'kaleido>=1.0.0'`).", + DeprecationWarning, + ) + fig = json.loads(scope.transform(fig, format="json").decode("utf-8")) + + if as_dict: + return fig + else: + import plotly.graph_objects as go + + return go.Figure(fig, skip_invalid=True) + + +def get_chrome() -> None: + """ + Install Google Chrome for Kaleido (Required for Plotly image export). + This function can be run from the command line using the command `plotly_get_chrome` + defined in pyproject.toml + """ + + usage = """ +Usage: plotly_get_chrome [-y] [--path PATH] + +Installs Google Chrome for Plotly image export. + +Options: + -y Skip confirmation prompt + --path PATH Specify the path to install Chrome. Must be a path to an existing directory. + --help Show this message and exit. +""" + + if not kaleido_available() or kaleido_major() < 1: + raise ValueError( + """ +This command requires Kaleido v1.0.0 or greater. +Install it using `pip install 'kaleido>=1.0.0'` or `pip install 'plotly[kaleido]'`." +""" + ) + + # Handle command line arguments + import sys + + cli_args = sys.argv + + # Handle "-y" flag + cli_yes = "-y" in cli_args + if cli_yes: + cli_args.remove("-y") + + # Handle "--path" flag + chrome_install_path = None + user_specified_path = False + if "--path" in cli_args: + path_index = cli_args.index("--path") + 1 + if path_index < len(cli_args): + chrome_install_path = cli_args[path_index] + cli_args.remove("--path") + cli_args.remove(chrome_install_path) + chrome_install_path = Path(chrome_install_path) + user_specified_path = True + else: + from choreographer.cli.defaults import default_download_path + + chrome_install_path = default_download_path + + # If install path was chosen by user, make sure there is an existing directory + # located at chrome_install_path; otherwise fail + if user_specified_path: + if not chrome_install_path.exists(): + raise ValueError( + f""" +The specified install path '{chrome_install_path}' does not exist. +Please specify a path to an existing directory using the --path argument, +or omit the --path argument to use the default download path. +""" + ) + # Make sure the path is a directory + if not chrome_install_path.is_dir(): + raise ValueError( + f""" +The specified install path '{chrome_install_path}' already exists but is not a directory. +Please specify a path to an existing directory using the --path argument, +or omit the --path argument to use the default download path. +""" + ) + + # If any arguments remain, command syntax was incorrect -- print usage and exit + if len(cli_args) > 1: + print(usage) + sys.exit(1) + + if not cli_yes: + print( + f""" +Plotly will install a copy of Google Chrome to be used for generating static images of plots. +Chrome will be installed at: {chrome_install_path}""" + ) + response = input("Do you want to proceed? [y/n] ") + if not response or response[0].lower() != "y": + print("Cancelled") + return + print("Installing Chrome for Plotly...") + exe_path = kaleido.get_chrome_sync(path=chrome_install_path) + print("Chrome installed successfully.") + print(f"The Chrome executable is now located at: {exe_path}") + + +__all__ = ["to_image", "write_image", "scope", "full_figure_for_development"] diff --git a/venv/lib/python3.8/site-packages/plotly/io/_orca.py b/venv/lib/python3.8/site-packages/plotly/io/_orca.py new file mode 100644 index 0000000..2984210 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_orca.py @@ -0,0 +1,1670 @@ +import atexit +import functools +import json +import os +import random +import socket +import subprocess +import sys +import threading +import time +import warnings +from contextlib import contextmanager +from copy import copy +from pathlib import Path +from shutil import which + +import plotly +from plotly.files import PLOTLY_DIR, ensure_writable_plotly_dir +from plotly.io._utils import validate_coerce_fig_to_dict +from plotly.optional_imports import get_module + +psutil = get_module("psutil") + +# Valid image format constants +# ---------------------------- +valid_formats = ("png", "jpeg", "webp", "svg", "pdf", "eps") +format_conversions = {fmt: fmt for fmt in valid_formats} +format_conversions.update({"jpg": "jpeg"}) + + +# Utility functions +# ----------------- +def raise_format_value_error(val): + raise ValueError( + """ +Invalid value of type {typ} receive as an image format specification. + Received value: {v} + +An image format must be specified as one of the following string values: + {valid_formats}""".format( + typ=type(val), v=val, valid_formats=sorted(format_conversions.keys()) + ) + ) + + +def validate_coerce_format(fmt): + """ + Validate / coerce a user specified image format, and raise an informative + exception if format is invalid. + + Parameters + ---------- + fmt + A value that may or may not be a valid image format string. + + Returns + ------- + str or None + A valid image format string as supported by orca. This may not + be identical to the input image designation. For example, + the resulting string will always be lower case and 'jpg' is + converted to 'jpeg'. + + If the input format value is None, then no exception is raised and + None is returned. + + Raises + ------ + ValueError + if the input `fmt` cannot be interpreted as a valid image format. + """ + + # Let None pass through + if fmt is None: + return None + + # Check format type + if not isinstance(fmt, str) or not fmt: + raise_format_value_error(fmt) + + # Make lower case + fmt = fmt.lower() + + # Remove leading period, if any. + # For example '.png' is accepted and converted to 'png' + if fmt[0] == ".": + fmt = fmt[1:] + + # Check string value + if fmt not in format_conversions: + raise_format_value_error(fmt) + + # Return converted string specification + return format_conversions[fmt] + + +def find_open_port(): + """ + Use the socket module to find an open port. + + Returns + ------- + int + An open port + """ + s = socket.socket() + s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + s.bind(("", 0)) + _, port = s.getsockname() + s.close() + + return port + + +def retry(min_wait=5, max_wait=10, max_delay=60000): + def decorator(func): + @functools.wraps(func) + def wrapper(*args, **kwargs): + start_time = time.time() + + while True: + try: + return func(*args, **kwargs) + except Exception as e: + elapsed_time = time.time() - start_time + if elapsed_time * 1000 >= max_delay: + raise TimeoutError( + f"Retry limit of {max_delay} milliseconds reached." + ) from e + + wait_time = random.uniform(min_wait, max_wait) + print(f"Retrying in {wait_time:.2f} seconds due to {e}...") + time.sleep(wait_time) + + return wrapper + + return decorator + + +# Orca configuration class +# ------------------------ +class OrcaConfig(object): + """ + Singleton object containing the current user defined configuration + properties for orca. + + These parameters may optionally be saved to the user's ~/.plotly + directory using the `save` method, in which case they are automatically + restored in future sessions. + """ + + def __init__(self): + # Initialize properties dict + self._props = {} + + # Compute absolute path to the 'plotly/package_data/' directory + root_dir = os.path.dirname(os.path.abspath(plotly.__file__)) + self.package_dir = os.path.join(root_dir, "package_data") + + # Load pre-existing configuration + self.reload(warn=False) + + # Compute constants + plotlyjs = os.path.join(self.package_dir, "plotly.min.js") + self._constants = { + "plotlyjs": plotlyjs, + "config_file": os.path.join(PLOTLY_DIR, ".orca"), + } + + def restore_defaults(self, reset_server=True): + """ + Reset all orca configuration properties to their default values + """ + self._props = {} + + if reset_server: + # Server must restart before setting is active + reset_status() + + def update(self, d={}, **kwargs): + """ + Update one or more properties from a dict or from input keyword + arguments. + + Parameters + ---------- + d: dict + Dictionary from property names to new property values. + + kwargs + Named argument value pairs where the name is a configuration + property name and the value is the new property value. + + Returns + ------- + None + + Examples + -------- + Update configuration properties using a dictionary + + >>> import plotly.io as pio + >>> pio.orca.config.update({'timeout': 30, 'default_format': 'svg'}) + + Update configuration properties using keyword arguments + + >>> pio.orca.config.update(timeout=30, default_format='svg'}) + """ + # Combine d and kwargs + if not isinstance(d, dict): + raise ValueError( + """ +The first argument to update must be a dict, \ +but received value of type {typ}l + Received value: {val}""".format(typ=type(d), val=d) + ) + + updates = copy(d) + updates.update(kwargs) + + # Validate keys + for k in updates: + if k not in self._props: + raise ValueError("Invalid property name: {k}".format(k=k)) + + # Apply keys + for k, v in updates.items(): + setattr(self, k, v) + + def reload(self, warn=True): + """ + Reload orca settings from ~/.plotly/.orca, if any. + + Note: Settings are loaded automatically when plotly is imported. + This method is only needed if the setting are changed by some outside + process (e.g. a text editor) during an interactive session. + + Parameters + ---------- + warn: bool + If True, raise informative warnings if settings cannot be restored. + If False, do not raise warnings if setting cannot be restored. + + Returns + ------- + None + """ + if os.path.exists(self.config_file): + # ### Load file into a string ### + try: + with open(self.config_file, "r") as f: + orca_str = f.read() + except Exception: + if warn: + warnings.warn( + """\ +Unable to read orca configuration file at {path}""".format(path=self.config_file) + ) + return + + # ### Parse as JSON ### + try: + orca_props = json.loads(orca_str) + except ValueError: + if warn: + warnings.warn( + """\ +Orca configuration file at {path} is not valid JSON""".format(path=self.config_file) + ) + return + + # ### Update _props ### + for k, v in orca_props.items(): + self._props[k] = v + + elif warn: + warnings.warn( + """\ +Orca configuration file at {path} not found""".format(path=self.config_file) + ) + + def save(self): + """ + Attempt to save current settings to disk, so that they are + automatically restored for future sessions. + + This operation requires write access to the path returned by + in the `config_file` property. + + Returns + ------- + None + """ + if ensure_writable_plotly_dir(): + with open(self.config_file, "w") as f: + json.dump(self._props, f, indent=4) + else: + warnings.warn( + """\ +Failed to write orca configuration file at '{path}'""".format(path=self.config_file) + ) + + @property + def server_url(self): + """ + The server URL to use for an external orca server, or None if orca + should be managed locally + + Overrides executable, port, timeout, mathjax, topojson, + and mapbox_access_token + + Returns + ------- + str or None + """ + return self._props.get("server_url", None) + + @server_url.setter + def server_url(self, val): + if val is None: + self._props.pop("server_url", None) + return + if not isinstance(val, str): + raise ValueError( + """ +The server_url property must be a string, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + + if not val.startswith("http://") and not val.startswith("https://"): + val = "http://" + val + + shutdown_server() + self.executable = None + self.port = None + self.timeout = None + self.mathjax = None + self.topojson = None + self.mapbox_access_token = None + self._props["server_url"] = val + + @property + def port(self): + """ + The specific port to use to communicate with the orca server, or + None if the port is to be chosen automatically. + + If an orca server is active, the port in use is stored in the + plotly.io.orca.status.port property. + + Returns + ------- + int or None + """ + return self._props.get("port", None) + + @port.setter + def port(self, val): + if val is None: + self._props.pop("port", None) + return + if not isinstance(val, int): + raise ValueError( + """ +The port property must be an integer, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + + self._props["port"] = val + + @property + def executable(self): + """ + The name or full path of the orca executable. + + - If a name (e.g. 'orca'), then it should be the name of an orca + executable on the PATH. The directories on the PATH can be + displayed by running the following command: + + >>> import os + >>> print(os.environ.get('PATH').replace(os.pathsep, os.linesep)) + + - If a full path (e.g. '/path/to/orca'), then + it should be the full path to an orca executable. In this case + the executable does not need to reside on the PATH. + + If an orca server has been validated, then the full path to the + validated orca executable is stored in the + plotly.io.orca.status.executable property. + + Returns + ------- + str + """ + executable_list = self._props.get("executable_list", ["orca"]) + if executable_list is None: + return None + else: + return " ".join(executable_list) + + @executable.setter + def executable(self, val): + if val is None: + self._props.pop("executable", None) + else: + if not isinstance(val, str): + raise ValueError( + """ +The executable property must be a string, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + if isinstance(val, str): + val = [val] + self._props["executable_list"] = val + + # Server and validation must restart before setting is active + reset_status() + + @property + def timeout(self): + """ + The number of seconds of inactivity required before the orca server + is shut down. + + For example, if timeout is set to 20, then the orca + server will shutdown once is has not been used for at least + 20 seconds. If timeout is set to None, then the server will not be + automatically shut down due to inactivity. + + Regardless of the value of timeout, a running orca server may be + manually shut down like this: + + >>> import plotly.io as pio + >>> pio.orca.shutdown_server() + + Returns + ------- + int or float or None + """ + return self._props.get("timeout", None) + + @timeout.setter + def timeout(self, val): + if val is None: + self._props.pop("timeout", None) + else: + if not isinstance(val, (int, float)): + raise ValueError( + """ +The timeout property must be a number, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["timeout"] = val + + # Server must restart before setting is active + shutdown_server() + + @property + def default_width(self): + """ + The default width to use on image export. This value is only + applied if no width value is supplied to the plotly.io + to_image or write_image functions. + + Returns + ------- + int or None + """ + return self._props.get("default_width", None) + + @default_width.setter + def default_width(self, val): + if val is None: + self._props.pop("default_width", None) + return + if not isinstance(val, int): + raise ValueError( + """ +The default_width property must be an int, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["default_width"] = val + + @property + def default_height(self): + """ + The default height to use on image export. This value is only + applied if no height value is supplied to the plotly.io + to_image or write_image functions. + + Returns + ------- + int or None + """ + return self._props.get("default_height", None) + + @default_height.setter + def default_height(self, val): + if val is None: + self._props.pop("default_height", None) + return + if not isinstance(val, int): + raise ValueError( + """ +The default_height property must be an int, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["default_height"] = val + + @property + def default_format(self): + """ + The default image format to use on image export. + + Valid image formats strings are: + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (Requires the poppler library to be installed) + + This value is only applied if no format value is supplied to the + plotly.io to_image or write_image functions. + + Returns + ------- + str or None + """ + return self._props.get("default_format", "png") + + @default_format.setter + def default_format(self, val): + if val is None: + self._props.pop("default_format", None) + return + + val = validate_coerce_format(val) + self._props["default_format"] = val + + @property + def default_scale(self): + """ + The default image scaling factor to use on image export. + This value is only applied if no scale value is supplied to the + plotly.io to_image or write_image functions. + + Returns + ------- + int or None + """ + return self._props.get("default_scale", 1) + + @default_scale.setter + def default_scale(self, val): + if val is None: + self._props.pop("default_scale", None) + return + if not isinstance(val, (int, float)): + raise ValueError( + """ +The default_scale property must be a number, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["default_scale"] = val + + @property + def topojson(self): + """ + Path to the topojson files needed to render choropleth traces. + + If None, topojson files from the plot.ly CDN are used. + + Returns + ------- + str + """ + return self._props.get("topojson", None) + + @topojson.setter + def topojson(self, val): + if val is None: + self._props.pop("topojson", None) + else: + if not isinstance(val, str): + raise ValueError( + """ +The topojson property must be a string, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["topojson"] = val + + # Server must restart before setting is active + shutdown_server() + + @property + def mathjax(self): + """ + Path to the MathJax bundle needed to render LaTeX characters + + Returns + ------- + str + """ + return self._props.get( + "mathjax", + "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js", + ) + + @mathjax.setter + def mathjax(self, val): + if val is None: + self._props.pop("mathjax", None) + else: + if not isinstance(val, str): + raise ValueError( + """ +The mathjax property must be a string, but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["mathjax"] = val + + # Server must restart before setting is active + shutdown_server() + + @property + def mapbox_access_token(self): + """ + Mapbox access token required to render mapbox traces. + + Returns + ------- + str + """ + return self._props.get("mapbox_access_token", None) + + @mapbox_access_token.setter + def mapbox_access_token(self, val): + if val is None: + self._props.pop("mapbox_access_token", None) + else: + if not isinstance(val, str): + raise ValueError( + """ +The mapbox_access_token property must be a string, \ +but received value of type {typ}. + Received value: {val}""".format(typ=type(val), val=val) + ) + self._props["mapbox_access_token"] = val + + # Server must restart before setting is active + shutdown_server() + + @property + def use_xvfb(self): + dflt = "auto" + return self._props.get("use_xvfb", dflt) + + @use_xvfb.setter + def use_xvfb(self, val): + valid_vals = [True, False, "auto"] + if val is None: + self._props.pop("use_xvfb", None) + else: + if val not in valid_vals: + raise ValueError( + """ +The use_xvfb property must be one of {valid_vals} + Received value of type {typ}: {val}""".format( + valid_vals=valid_vals, typ=type(val), val=repr(val) + ) + ) + + self._props["use_xvfb"] = val + + # Server and validation must restart before setting is active + reset_status() + + @property + def plotlyjs(self): + """ + The plotly.js bundle being used for image rendering. + + Returns + ------- + str + """ + return self._constants.get("plotlyjs", None) + + @property + def config_file(self): + """ + Path to orca configuration file + + Using the `plotly.io.config.save()` method will save the current + configuration settings to this file. Settings in this file are + restored at the beginning of each sessions. + + Returns + ------- + str + """ + return os.path.join(PLOTLY_DIR, ".orca") + + def __repr__(self): + """ + Display a nice representation of the current orca configuration. + """ + return """\ +orca configuration +------------------ + server_url: {server_url} + executable: {executable} + port: {port} + timeout: {timeout} + default_width: {default_width} + default_height: {default_height} + default_scale: {default_scale} + default_format: {default_format} + mathjax: {mathjax} + topojson: {topojson} + mapbox_access_token: {mapbox_access_token} + use_xvfb: {use_xvfb} + +constants +--------- + plotlyjs: {plotlyjs} + config_file: {config_file} + +""".format( + server_url=self.server_url, + port=self.port, + executable=self.executable, + timeout=self.timeout, + default_width=self.default_width, + default_height=self.default_height, + default_scale=self.default_scale, + default_format=self.default_format, + mathjax=self.mathjax, + topojson=self.topojson, + mapbox_access_token=self.mapbox_access_token, + plotlyjs=self.plotlyjs, + config_file=self.config_file, + use_xvfb=self.use_xvfb, + ) + + +# Make config a singleton object +# ------------------------------ +config = OrcaConfig() +del OrcaConfig + + +# Orca status class +# ------------------------ +class OrcaStatus(object): + """ + Class to store information about the current status of the orca server. + """ + + _props = { + "state": "unvalidated", # or 'validated' or 'running' + "executable_list": None, + "version": None, + "pid": None, + "port": None, + "command": None, + } + + @property + def state(self): + """ + A string representing the state of the orca server process + + One of: + - unvalidated: The orca executable has not yet been searched for or + tested to make sure its valid. + - validated: The orca executable has been located and tested for + validity, but it is not running. + - running: The orca server process is currently running. + """ + return self._props["state"] + + @property + def executable(self): + """ + If the `state` property is 'validated' or 'running', this property + contains the full path to the orca executable. + + This path can be specified explicitly by setting the `executable` + property of the `plotly.io.orca.config` object. + + This property will be None if the `state` is 'unvalidated'. + """ + executable_list = self._props["executable_list"] + if executable_list is None: + return None + else: + return " ".join(executable_list) + + @property + def version(self): + """ + If the `state` property is 'validated' or 'running', this property + contains the version of the validated orca executable. + + This property will be None if the `state` is 'unvalidated'. + """ + return self._props["version"] + + @property + def pid(self): + """ + The process id of the orca server process, if any. This property + will be None if the `state` is not 'running'. + """ + return self._props["pid"] + + @property + def port(self): + """ + The port number that the orca server process is listening to, if any. + This property will be None if the `state` is not 'running'. + + This port can be specified explicitly by setting the `port` + property of the `plotly.io.orca.config` object. + """ + return self._props["port"] + + @property + def command(self): + """ + The command arguments used to launch the running orca server, if any. + This property will be None if the `state` is not 'running'. + """ + return self._props["command"] + + def __repr__(self): + """ + Display a nice representation of the current orca server status. + """ + return """\ +orca status +----------- + state: {state} + executable: {executable} + version: {version} + port: {port} + pid: {pid} + command: {command} + +""".format( + executable=self.executable, + version=self.version, + port=self.port, + pid=self.pid, + state=self.state, + command=self.command, + ) + + +# Make status a singleton object +# ------------------------------ +status = OrcaStatus() +del OrcaStatus + + +@contextmanager +def orca_env(): + """ + Context manager to clear and restore environment variables that are + problematic for orca to function properly + + NODE_OPTIONS: When this variable is set, orca >> plotly.io.orca.config.executable = '/path/to/orca' + +After updating this executable property, try the export operation again. +If it is successful then you may want to save this configuration so that it +will be applied automatically in future sessions. You can do this as follows: + + >>> plotly.io.orca.config.save() + +If you're still having trouble, feel free to ask for help on the forums at +https://community.plot.ly/c/api/python +""" + + # Try to find an executable + # ------------------------- + # Search for executable name or path in config.executable + executable = which(config.executable) + path = os.environ.get("PATH", os.defpath) + formatted_path = path.replace(os.pathsep, "\n ") + + if executable is None: + raise ValueError( + """ +The orca executable is required to export figures as static images, +but it could not be found on the system path. + +Searched for executable '{executable}' on the following path: + {formatted_path} + +{instructions}""".format( + executable=config.executable, + formatted_path=formatted_path, + instructions=install_location_instructions, + ) + ) + + # Check if we should run with Xvfb + # -------------------------------- + xvfb_args = [ + "--auto-servernum", + "--server-args", + "-screen 0 640x480x24 +extension RANDR +extension GLX", + executable, + ] + + if config.use_xvfb: + # Use xvfb + xvfb_run_executable = which("xvfb-run") + if not xvfb_run_executable: + raise ValueError( + """ +The plotly.io.orca.config.use_xvfb property is set to True, but the +xvfb-run executable could not be found on the system path. + +Searched for the executable 'xvfb-run' on the following path: + {formatted_path}""".format(formatted_path=formatted_path) + ) + + executable_list = [xvfb_run_executable] + xvfb_args + elif ( + config.use_xvfb == "auto" + and sys.platform.startswith("linux") + and not os.environ.get("DISPLAY") + and which("xvfb-run") + ): + # use_xvfb is 'auto', we're on linux without a display server, + # and xvfb-run is available. Use it. + xvfb_run_executable = which("xvfb-run") + executable_list = [xvfb_run_executable] + xvfb_args + else: + # Do not use xvfb + executable_list = [executable] + + # Run executable with --help and see if it's our orca + # --------------------------------------------------- + invalid_executable_msg = """ +The orca executable is required in order to export figures as static images, +but the executable that was found at '{executable}' +does not seem to be a valid plotly orca executable. Please refer to the end of +this message for details on what went wrong. + +{instructions}""".format( + executable=executable, instructions=install_location_instructions + ) + + # ### Run with Popen so we get access to stdout and stderr + with orca_env(): + p = subprocess.Popen( + executable_list + ["--help"], stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) + + help_result, help_error = p.communicate() + + if p.returncode != 0: + err_msg = ( + invalid_executable_msg + + """ +Here is the error that was returned by the command + $ {executable} --help + +[Return code: {returncode}] +{err_msg} +""".format( + executable=" ".join(executable_list), + err_msg=help_error.decode("utf-8"), + returncode=p.returncode, + ) + ) + + # Check for Linux without X installed. + if sys.platform.startswith("linux") and not os.environ.get("DISPLAY"): + err_msg += """\ +Note: When used on Linux, orca requires an X11 display server, but none was +detected. Please install Xvfb and configure plotly.py to run orca using Xvfb +as follows: + + >>> import plotly.io as pio + >>> pio.orca.config.use_xvfb = True + +You can save this configuration for use in future sessions as follows: + + >>> pio.orca.config.save() + +See https://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml +for more info on Xvfb +""" + raise ValueError(err_msg) + + if not help_result: + raise ValueError( + invalid_executable_msg + + """ +The error encountered is that no output was returned by the command + $ {executable} --help +""".format(executable=" ".join(executable_list)) + ) + + if "Plotly's image-exporting utilities" not in help_result.decode("utf-8"): + raise ValueError( + invalid_executable_msg + + """ +The error encountered is that unexpected output was returned by the command + $ {executable} --help + +{help_result} +""".format(executable=" ".join(executable_list), help_result=help_result) + ) + + # Get orca version + # ---------------- + # ### Run with Popen so we get access to stdout and stderr + with orca_env(): + p = subprocess.Popen( + executable_list + ["--version"], + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + + version_result, version_error = p.communicate() + + if p.returncode != 0: + raise ValueError( + invalid_executable_msg + + """ +An error occurred while trying to get the version of the orca executable. +Here is the command that plotly.py ran to request the version + $ {executable} --version + +This command returned the following error: + +[Return code: {returncode}] +{err_msg} + """.format( + executable=" ".join(executable_list), + err_msg=version_error.decode("utf-8"), + returncode=p.returncode, + ) + ) + + if not version_result: + raise ValueError( + invalid_executable_msg + + """ +The error encountered is that no version was reported by the orca executable. +Here is the command that plotly.py ran to request the version: + + $ {executable} --version +""".format(executable=" ".join(executable_list)) + ) + else: + version_result = version_result.decode() + + status._props["executable_list"] = executable_list + status._props["version"] = version_result.strip() + status._props["state"] = "validated" + + +def reset_status(): + """ + Shutdown the running orca server, if any, and reset the orca status + to unvalidated. + + This command is only needed if the desired orca executable is changed + during an interactive session. + + Returns + ------- + None + """ + shutdown_server() + status._props["executable_list"] = None + status._props["version"] = None + status._props["state"] = "unvalidated" + + +# Initialze process control variables +# ----------------------------------- +orca_lock = threading.Lock() +orca_state = {"proc": None, "shutdown_timer": None} + + +# Shutdown +# -------- +# The @atexit.register annotation ensures that the shutdown function is +# is run when the Python process is terminated +@atexit.register +def cleanup(): + shutdown_server() + + +def shutdown_server(): + """ + Shutdown the running orca server process, if any + + Returns + ------- + None + """ + # Use double-check locking to make sure the properties of orca_state + # are updated consistently across threads. + if orca_state["proc"] is not None: + with orca_lock: + if orca_state["proc"] is not None: + # We use psutil to kill all child processes of the main orca + # process. This prevents any zombie processes from being + # left over, and it saves us from needing to write + # OS-specific process management code here. + + parent = psutil.Process(orca_state["proc"].pid) + for child in parent.children(recursive=True): + try: + child.terminate() + except Exception: + # We tried, move on + pass + + try: + # Kill parent process + orca_state["proc"].terminate() + + # Wait for the process to shutdown + orca_state["proc"].wait() + except Exception: + # We tried, move on + pass + + # Update our internal process management state + orca_state["proc"] = None + + if orca_state["shutdown_timer"] is not None: + orca_state["shutdown_timer"].cancel() + orca_state["shutdown_timer"] = None + + orca_state["port"] = None + + # Update orca.status so the user has an accurate view + # of the state of the orca server + status._props["state"] = "validated" + status._props["pid"] = None + status._props["port"] = None + status._props["command"] = None + + +# Launch or get server +def ensure_server(): + """ + Start an orca server if none is running. If a server is already running, + then reset the timeout countdown + + Returns + ------- + None + """ + + # Validate psutil + if psutil is None: + raise ValueError( + """\ +Image generation requires the psutil package. + +Install using pip: + $ pip install psutil + +Install using conda: + $ conda install psutil +""" + ) + + # Validate requests + if not get_module("requests"): + raise ValueError( + """\ +Image generation requires the requests package. + +Install using pip: + $ pip install requests + +Install using conda: + $ conda install requests +""" + ) + + if not config.server_url: + # Validate orca executable only if server_url is not provided + if status.state == "unvalidated": + validate_executable() + # Acquire lock to make sure that we keep the properties of orca_state + # consistent across threads + with orca_lock: + # Cancel the current shutdown timer, if any + if orca_state["shutdown_timer"] is not None: + orca_state["shutdown_timer"].cancel() + + # Start a new server process if none is active + if orca_state["proc"] is None: + # Determine server port + if config.port is None: + orca_state["port"] = find_open_port() + else: + orca_state["port"] = config.port + + # Build orca command list + cmd_list = status._props["executable_list"] + [ + "serve", + "-p", + str(orca_state["port"]), + "--plotly", + config.plotlyjs, + "--graph-only", + ] + + if config.topojson: + cmd_list.extend(["--topojson", config.topojson]) + + if config.mathjax: + cmd_list.extend(["--mathjax", config.mathjax]) + + if config.mapbox_access_token: + cmd_list.extend( + ["--mapbox-access-token", config.mapbox_access_token] + ) + + # Create subprocess that launches the orca server on the + # specified port. + DEVNULL = open(os.devnull, "wb") + with orca_env(): + stderr = DEVNULL if "CI" in os.environ else None # fix for CI + orca_state["proc"] = subprocess.Popen( + cmd_list, stdout=DEVNULL, stderr=stderr + ) + + # Update orca.status so the user has an accurate view + # of the state of the orca server + status._props["state"] = "running" + status._props["pid"] = orca_state["proc"].pid + status._props["port"] = orca_state["port"] + status._props["command"] = cmd_list + + # Create new shutdown timer if a timeout was specified + if config.timeout is not None: + t = threading.Timer(config.timeout, shutdown_server) + # Make it a daemon thread so that exit won't wait for timer to + # complete + t.daemon = True + t.start() + orca_state["shutdown_timer"] = t + + +@retry(min_wait=5, max_wait=10, max_delay=60000) +def request_image_with_retrying(**kwargs): + """ + Helper method to perform an image request to a running orca server process + with retrying logic. + """ + from requests import post + from plotly.io.json import to_json_plotly + + if config.server_url: + server_url = config.server_url + else: + server_url = "http://{hostname}:{port}".format( + hostname="localhost", port=orca_state["port"] + ) + + request_params = {k: v for k, v in kwargs.items() if v is not None} + json_str = to_json_plotly(request_params) + response = post(server_url + "/", data=json_str) + + if response.status_code == 522: + # On "522: client socket timeout", return server and keep trying + shutdown_server() + ensure_server() + raise OSError("522: client socket timeout") + + return response + + +def to_image(fig, format=None, width=None, height=None, scale=None, validate=True): + """ + Convert a figure to a static image bytes string + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + format: str or None + The desired image format. One of + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (Requires the poppler library to be installed) + + If not specified, will default to `plotly.io.config.default_format` + + width: int or None + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + If not specified, will default to `plotly.io.config.default_width` + + height: int or None + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + If not specified, will default to `plotly.io.config.default_height` + + scale: int or float or None + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + If not specified, will default to `plotly.io.config.default_scale` + + validate: bool + True if the figure should be validated before being converted to + an image, False otherwise. + + Returns + ------- + bytes + The image data + """ + # Make sure orca sever is running + # ------------------------------- + ensure_server() + + # Handle defaults + # --------------- + # Apply configuration defaults to unspecified arguments + if format is None: + format = config.default_format + + format = validate_coerce_format(format) + + if scale is None: + scale = config.default_scale + + if width is None: + width = config.default_width + + if height is None: + height = config.default_height + + # Validate figure + # --------------- + fig_dict = validate_coerce_fig_to_dict(fig, validate) + + # Request image from server + # ------------------------- + try: + response = request_image_with_retrying( + figure=fig_dict, format=format, scale=scale, width=width, height=height + ) + except OSError: + # Get current status string + status_str = repr(status) + + if config.server_url: + raise ValueError( + """ +Plotly.py was unable to communicate with the orca server at {server_url} + +Please check that the server is running and accessible. +""".format(server_url=config.server_url) + ) + + else: + # Check if the orca server process exists + pid_exists = psutil.pid_exists(status.pid) + + # Raise error message based on whether the server process existed + if pid_exists: + raise ValueError( + """ +For some reason plotly.py was unable to communicate with the +local orca server process, even though the server process seems to be running. + +Please review the process and connection information below: + +{info} +""".format(info=status_str) + ) + else: + # Reset the status so that if the user tries again, we'll try to + # start the server again + reset_status() + raise ValueError( + """ +For some reason the orca server process is no longer running. + +Please review the process and connection information below: + +{info} +plotly.py will attempt to start the local server process again the next time +an image export operation is performed. +""".format(info=status_str) + ) + + # Check response + # -------------- + if response.status_code == 200: + # All good + return response.content + else: + # ### Something went wrong ### + err_message = """ +The image request was rejected by the orca conversion utility +with the following error: + {status}: {msg} +""".format(status=response.status_code, msg=response.content.decode("utf-8")) + + # ### Try to be helpful ### + # Status codes from /src/component/plotly-graph/constants.js in the + # orca code base. + # statusMsg: { + # 400: 'invalid or malformed request syntax', + # 522: client socket timeout + # 525: 'plotly.js error', + # 526: 'plotly.js version 1.11.0 or up required', + # 530: 'image conversion error' + # } + if response.status_code == 400 and isinstance(fig, dict) and not validate: + err_message += """ +Try setting the `validate` argument to True to check for errors in the +figure specification""" + elif response.status_code == 525: + any_mapbox = any( + [ + trace.get("type", None) == "scattermapbox" + for trace in fig_dict.get("data", []) + ] + ) + if any_mapbox and config.mapbox_access_token is None: + err_message += """ +Exporting scattermapbox traces requires a mapbox access token. +Create a token in your mapbox account and then set it using: + +>>> plotly.io.orca.config.mapbox_access_token = 'pk.abc...' + +If you would like this token to be applied automatically in +future sessions, then save your orca configuration as follows: + +>>> plotly.io.orca.config.save() +""" + elif response.status_code == 530 and format == "eps": + err_message += """ +Exporting to EPS format requires the poppler library. You can install +poppler on MacOS or Linux with: + + $ conda install poppler + +Or, you can install it on MacOS using homebrew with: + + $ brew install poppler + +Or, you can install it on Linux using your distribution's package manager to +install the 'poppler-utils' package. + +Unfortunately, we don't yet know of an easy way to install poppler on Windows. +""" + raise ValueError(err_message) + + +def write_image( + fig, file, format=None, scale=None, width=None, height=None, validate=True +): + """ + Convert a figure to a static image and write it to a file or writeable + object + + Parameters + ---------- + fig: + Figure object or dict representing a figure + + file: str or writeable + A string representing a local file path or a writeable object + (e.g. a pathlib.Path object or an open file descriptor) + + format: str or None + The desired image format. One of + - 'png' + - 'jpg' or 'jpeg' + - 'webp' + - 'svg' + - 'pdf' + - 'eps' (Requires the poppler library to be installed) + + If not specified and `file` is a string then this will default to the + file extension. If not specified and `file` is not a string then this + will default to `plotly.io.config.default_format` + + width: int or None + The width of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the width of the exported image + in physical pixels. + + If not specified, will default to `plotly.io.config.default_width` + + height: int or None + The height of the exported image in layout pixels. If the `scale` + property is 1.0, this will also be the height of the exported image + in physical pixels. + + If not specified, will default to `plotly.io.config.default_height` + + scale: int or float or None + The scale factor to use when exporting the figure. A scale factor + larger than 1.0 will increase the image resolution with respect + to the figure's layout pixel dimensions. Whereas as scale factor of + less than 1.0 will decrease the image resolution. + + If not specified, will default to `plotly.io.config.default_scale` + + validate: bool + True if the figure should be validated before being converted to + an image, False otherwise. + + Returns + ------- + None + """ + + # Try to cast `file` as a pathlib object `path`. + # ---------------------------------------------- + if isinstance(file, str): + # Use the standard Path constructor to make a pathlib object. + path = Path(file) + elif isinstance(file, Path): + # `file` is already a Path object. + path = file + else: + # We could not make a Path object out of file. Either `file` is an open file + # descriptor with a `write()` method or it's an invalid object. + path = None + + # Infer format if not specified + # ----------------------------- + if path is not None and format is None: + ext = path.suffix + if ext: + format = ext.lstrip(".") + else: + raise ValueError( + """ +Cannot infer image type from output path '{file}'. +Please add a file extension or specify the type using the format parameter. +For example: + + >>> import plotly.io as pio + >>> pio.write_image(fig, file_path, format='png') +""".format(file=file) + ) + + # Request image + # ------------- + # Do this first so we don't create a file if image conversion fails + img_data = to_image( + fig, format=format, scale=scale, width=width, height=height, validate=validate + ) + + # Open file + # --------- + if path is None: + # We previously failed to make sense of `file` as a pathlib object. + # Attempt to write to `file` as an open file descriptor. + try: + file.write(img_data) + return + except AttributeError: + pass + raise ValueError( + """ +The 'file' argument '{file}' is not a string, pathlib.Path object, or file descriptor. +""".format(file=file) + ) + else: + # We previously succeeded in interpreting `file` as a pathlib object. + # Now we can use `write_bytes()`. + path.write_bytes(img_data) diff --git a/venv/lib/python3.8/site-packages/plotly/io/_renderers.py b/venv/lib/python3.8/site-packages/plotly/io/_renderers.py new file mode 100644 index 0000000..9ddd1db --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_renderers.py @@ -0,0 +1,567 @@ +import textwrap +from copy import copy +import os +from packaging.version import Version +import warnings + +from plotly import optional_imports + +from plotly.io._base_renderers import ( + MimetypeRenderer, + ExternalRenderer, + PlotlyRenderer, + NotebookRenderer, + KaggleRenderer, + AzureRenderer, + ColabRenderer, + JsonRenderer, + PngRenderer, + JpegRenderer, + SvgRenderer, + PdfRenderer, + BrowserRenderer, + IFrameRenderer, + SphinxGalleryHtmlRenderer, + SphinxGalleryOrcaRenderer, + CoCalcRenderer, + DatabricksRenderer, +) +from plotly.io._utils import validate_coerce_fig_to_dict + +ipython = optional_imports.get_module("IPython") +ipython_display = optional_imports.get_module("IPython.display") +nbformat = optional_imports.get_module("nbformat") + + +def display_jupyter_version_warnings(): + parent_process = None + try: + psutil = optional_imports.get_module("psutil") + if psutil is not None: + parent_process = psutil.Process().parent().cmdline()[-1] + except Exception: + pass + + if parent_process is None: + return + elif "jupyter-notebook" in parent_process: + jupyter_notebook = optional_imports.get_module("notebook") + if jupyter_notebook is not None and jupyter_notebook.__version__ < "7": + # Add warning about upgrading notebook + warnings.warn( + f"Plotly version >= 6 requires Jupyter Notebook >= 7 but you have {jupyter_notebook.__version__} installed.\n To upgrade Jupyter Notebook, please run `pip install notebook --upgrade`." + ) + elif "jupyter-lab" in parent_process: + jupyter_lab = optional_imports.get_module("jupyterlab") + if jupyter_lab is not None and jupyter_lab.__version__ < "3": + # Add warning about upgrading jupyterlab + warnings.warn( + f"Plotly version >= 6 requires JupyterLab >= 3 but you have {jupyter_lab.__version__} installed. To upgrade JupyterLab, please run `pip install jupyterlab --upgrade`." + ) + + +# Renderer configuration class +# ----------------------------- +class RenderersConfig(object): + """ + Singleton object containing the current renderer configurations + """ + + def __init__(self): + self._renderers = {} + self._default_name = None + self._default_renderers = [] + self._render_on_display = False + self._to_activate = [] + + # ### Magic methods ### + # Make this act as a dict of renderers + def __len__(self): + return len(self._renderers) + + def __contains__(self, item): + return item in self._renderers + + def __iter__(self): + return iter(self._renderers) + + def __getitem__(self, item): + renderer = self._renderers[item] + return renderer + + def __setitem__(self, key, value): + if not isinstance(value, (MimetypeRenderer, ExternalRenderer)): + raise ValueError( + """\ +Renderer must be a subclass of MimetypeRenderer or ExternalRenderer. + Received value with type: {typ}""".format(typ=type(value)) + ) + + self._renderers[key] = value + + def __delitem__(self, key): + # Remove template + del self._renderers[key] + + # Check if we need to remove it as the default + if self._default == key: + self._default = None + + def keys(self): + return self._renderers.keys() + + def items(self): + return self._renderers.items() + + def update(self, d={}, **kwargs): + """ + Update one or more renderers from a dict or from input keyword + arguments. + + Parameters + ---------- + d: dict + Dictionary from renderer names to new renderer objects. + + kwargs + Named argument value pairs where the name is a renderer name + and the value is a new renderer object + """ + for k, v in dict(d, **kwargs).items(): + self[k] = v + + # ### Properties ### + @property + def default(self): + """ + The default renderer, or None if no there is no default + + If not None, the default renderer is used to render + figures when the `plotly.io.show` function is called on a Figure. + + If `plotly.io.renderers.render_on_display` is True, then the default + renderer will also be used to display Figures automatically when + displayed in the Jupyter Notebook + + Multiple renderers may be registered by separating their names with + '+' characters. For example, to specify rendering compatible with + the classic Jupyter Notebook, JupyterLab, and PDF export: + + >>> import plotly.io as pio + >>> pio.renderers.default = 'notebook+jupyterlab+pdf' + + The names of available renderers may be retrieved with: + + >>> import plotly.io as pio + >>> list(pio.renderers) + + Returns + ------- + str + """ + return self._default_name + + @default.setter + def default(self, value): + # Handle None + if not value: + # _default_name should always be a string so we can do + # pio.renderers.default.split('+') + self._default_name = "" + self._default_renderers = [] + return + + # Store defaults name and list of renderer(s) + renderer_names = self._validate_coerce_renderers(value) + self._default_name = value + self._default_renderers = [self[name] for name in renderer_names] + + # Register renderers for activation before their next use + self._to_activate = list(self._default_renderers) + + @property + def render_on_display(self): + """ + If True, the default mimetype renderers will be used to render + figures when they are displayed in an IPython context. + + Returns + ------- + bool + """ + return self._render_on_display + + @render_on_display.setter + def render_on_display(self, val): + self._render_on_display = bool(val) + + def _activate_pending_renderers(self, cls=object): + """ + Activate all renderers that are waiting in the _to_activate list + + Parameters + ---------- + cls + Only activate renders that are subclasses of this class + """ + to_activate_with_cls = [ + r for r in self._to_activate if cls and isinstance(r, cls) + ] + + while to_activate_with_cls: + # Activate renderers from left to right so that right-most + # renderers take precedence + renderer = to_activate_with_cls.pop(0) + renderer.activate() + + self._to_activate = [ + r for r in self._to_activate if not (cls and isinstance(r, cls)) + ] + + def _validate_coerce_renderers(self, renderers_string): + """ + Input a string and validate that it contains the names of one or more + valid renderers separated on '+' characters. If valid, return + a list of the renderer names + + Parameters + ---------- + renderers_string: str + + Returns + ------- + list of str + """ + # Validate value + if not isinstance(renderers_string, str): + raise ValueError("Renderer must be specified as a string") + + renderer_names = renderers_string.split("+") + invalid = [name for name in renderer_names if name not in self] + if invalid: + raise ValueError( + """ +Invalid named renderer(s) received: {}""".format(str(invalid)) + ) + + return renderer_names + + def __repr__(self): + return """\ +Renderers configuration +----------------------- + Default renderer: {default} + Available renderers: +{available} +""".format(default=repr(self.default), available=self._available_renderers_str()) + + def _available_renderers_str(self): + """ + Return nicely wrapped string representation of all + available renderer names + """ + available = "\n".join( + textwrap.wrap( + repr(list(self)), + width=79 - 8, + initial_indent=" " * 8, + subsequent_indent=" " * 9, + ) + ) + return available + + def _build_mime_bundle(self, fig_dict, renderers_string=None, **kwargs): + """ + Build a mime bundle dict containing a kev/value pair for each + MimetypeRenderer specified in either the default renderer string, + or in the supplied renderers_string argument. + + Note that this method skips any renderers that are not subclasses + of MimetypeRenderer. + + Parameters + ---------- + fig_dict: dict + Figure dictionary + renderers_string: str or None (default None) + Renderer string to process rather than the current default + renderer string + + Returns + ------- + dict + """ + if renderers_string: + renderer_names = self._validate_coerce_renderers(renderers_string) + renderers_list = [self[name] for name in renderer_names] + + # Activate these non-default renderers + for renderer in renderers_list: + if isinstance(renderer, MimetypeRenderer): + renderer.activate() + else: + # Activate any pending default renderers + self._activate_pending_renderers(cls=MimetypeRenderer) + renderers_list = self._default_renderers + + bundle = {} + for renderer in renderers_list: + if isinstance(renderer, MimetypeRenderer): + renderer = copy(renderer) + for k, v in kwargs.items(): + if hasattr(renderer, k): + setattr(renderer, k, v) + + bundle.update(renderer.to_mimebundle(fig_dict)) + + return bundle + + def _perform_external_rendering(self, fig_dict, renderers_string=None, **kwargs): + """ + Perform external rendering for each ExternalRenderer specified + in either the default renderer string, or in the supplied + renderers_string argument. + + Note that this method skips any renderers that are not subclasses + of ExternalRenderer. + + Parameters + ---------- + fig_dict: dict + Figure dictionary + renderers_string: str or None (default None) + Renderer string to process rather than the current default + renderer string + + Returns + ------- + None + """ + if renderers_string: + renderer_names = self._validate_coerce_renderers(renderers_string) + renderers_list = [self[name] for name in renderer_names] + + # Activate these non-default renderers + for renderer in renderers_list: + if isinstance(renderer, ExternalRenderer): + renderer.activate() + else: + self._activate_pending_renderers(cls=ExternalRenderer) + renderers_list = self._default_renderers + + for renderer in renderers_list: + if isinstance(renderer, ExternalRenderer): + renderer = copy(renderer) + for k, v in kwargs.items(): + if hasattr(renderer, k): + setattr(renderer, k, v) + + renderer.render(fig_dict) + + +# Make renderers a singleton object +# --------------------------------- +renderers = RenderersConfig() +del RenderersConfig + + +# Show +def show(fig, renderer=None, validate=True, **kwargs): + """ + Show a figure using either the default renderer(s) or the renderer(s) + specified by the renderer argument + + Parameters + ---------- + fig: dict of Figure + The Figure object or figure dict to display + + renderer: str or None (default None) + A string containing the names of one or more registered renderers + (separated by '+' characters) or None. If None, then the default + renderers specified in plotly.io.renderers.default are used. + + validate: bool (default True) + True if the figure should be validated before being shown, + False otherwise. + + width: int or float + An integer or float that determines the number of pixels wide the + plot is. The default is set in plotly.js. + + height: int or float + An integer or float specifying the height of the plot in pixels. + The default is set in plotly.js. + + config: dict + A dict of parameters to configure the figure. The defaults are set + in plotly.js. + + Returns + ------- + None + """ + fig_dict = validate_coerce_fig_to_dict(fig, validate) + + # Mimetype renderers + bundle = renderers._build_mime_bundle(fig_dict, renderers_string=renderer, **kwargs) + if bundle: + if not ipython_display: + raise ValueError( + "Mime type rendering requires ipython but it is not installed" + ) + + if not nbformat or Version(nbformat.__version__) < Version("4.2.0"): + raise ValueError( + "Mime type rendering requires nbformat>=4.2.0 but it is not installed" + ) + + display_jupyter_version_warnings() + + ipython_display.display(bundle, raw=True) + + # external renderers + renderers._perform_external_rendering(fig_dict, renderers_string=renderer, **kwargs) + + +# Register renderers +# ------------------ + +# Plotly mime type +plotly_renderer = PlotlyRenderer() +renderers["plotly_mimetype"] = plotly_renderer +renderers["jupyterlab"] = plotly_renderer +renderers["nteract"] = plotly_renderer +renderers["vscode"] = plotly_renderer + +# HTML-based +config = {} +renderers["notebook"] = NotebookRenderer(config=config) +renderers["notebook_connected"] = NotebookRenderer(config=config, connected=True) +renderers["kaggle"] = KaggleRenderer(config=config) +renderers["azure"] = AzureRenderer(config=config) +renderers["colab"] = ColabRenderer(config=config) +renderers["cocalc"] = CoCalcRenderer() +renderers["databricks"] = DatabricksRenderer() + +# JSON +renderers["json"] = JsonRenderer() + +# Static Image +renderers["png"] = PngRenderer() +jpeg_renderer = JpegRenderer() +renderers["jpeg"] = jpeg_renderer +renderers["jpg"] = jpeg_renderer +renderers["svg"] = SvgRenderer() +renderers["pdf"] = PdfRenderer() + +# External +renderers["browser"] = BrowserRenderer(config=config) +renderers["firefox"] = BrowserRenderer(config=config, using=("firefox")) +renderers["chrome"] = BrowserRenderer(config=config, using=("chrome", "google-chrome")) +renderers["chromium"] = BrowserRenderer( + config=config, using=("chromium", "chromium-browser") +) +renderers["iframe"] = IFrameRenderer(config=config, include_plotlyjs=True) +renderers["iframe_connected"] = IFrameRenderer(config=config, include_plotlyjs="cdn") +renderers["sphinx_gallery"] = SphinxGalleryHtmlRenderer() +renderers["sphinx_gallery_png"] = SphinxGalleryOrcaRenderer() + +# Set default renderer +# -------------------- +# Version 4 renderer configuration +default_renderer = None + +# Handle the PLOTLY_RENDERER environment variable +env_renderer = os.environ.get("PLOTLY_RENDERER", None) +if env_renderer: + try: + renderers._validate_coerce_renderers(env_renderer) + except ValueError: + raise ValueError( + """ +Invalid named renderer(s) specified in the 'PLOTLY_RENDERER' +environment variable: {env_renderer}""".format(env_renderer=env_renderer) + ) + + default_renderer = env_renderer +elif ipython: + # Try to detect environment so that we can enable a useful + # default renderer + if not default_renderer: + try: + import google.colab # noqa: F401 + + default_renderer = "colab" + except ImportError: + pass + + # Check if we're running in a Kaggle notebook + if not default_renderer and os.path.exists("/kaggle/input"): + default_renderer = "kaggle" + + # Check if we're running in an Azure Notebook + if not default_renderer and "AZURE_NOTEBOOKS_HOST" in os.environ: + default_renderer = "azure" + + # Check if we're running in VSCode + if not default_renderer and "VSCODE_PID" in os.environ: + default_renderer = "vscode" + + # Check if we're running in nteract + if not default_renderer and "NTERACT_EXE" in os.environ: + default_renderer = "nteract" + + # Check if we're running in CoCalc + if not default_renderer and "COCALC_PROJECT_ID" in os.environ: + default_renderer = "cocalc" + + if not default_renderer and "DATABRICKS_RUNTIME_VERSION" in os.environ: + default_renderer = "databricks" + + # Check if we're running in spyder and orca is installed + if not default_renderer and "SPYDER_ARGS" in os.environ: + try: + from plotly.io.orca import validate_executable + + validate_executable() + default_renderer = "svg" + except ValueError: + # orca not found + pass + + # Check if we're running in ipython terminal + ipython_info = ipython.get_ipython() + shell = ipython_info.__class__.__name__ + if not default_renderer and (shell == "TerminalInteractiveShell"): + default_renderer = "browser" + + # Check if we're running in a Jupyter notebook or JupyterLab + if ( + not default_renderer + and (shell == "ZMQInteractiveShell") + and (type(ipython_info).__module__.startswith("ipykernel.")) + ): + default_renderer = "plotly_mimetype" + + # Fallback to renderer combination that will work automatically + # in the jupyter notebook, jupyterlab, nteract, vscode, and + # nbconvert HTML export. + if not default_renderer: + default_renderer = "plotly_mimetype+notebook" +else: + # If ipython isn't available, try to display figures in the default + # browser + try: + import webbrowser + + webbrowser.get() + default_renderer = "browser" + except Exception: + # Many things could have gone wrong + # There could not be a webbrowser Python module, + # or the module may be a dumb placeholder + pass + +renderers.render_on_display = True +renderers.default = default_renderer diff --git a/venv/lib/python3.8/site-packages/plotly/io/_sg_scraper.py b/venv/lib/python3.8/site-packages/plotly/io/_sg_scraper.py new file mode 100644 index 0000000..af15b7d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_sg_scraper.py @@ -0,0 +1,100 @@ +# This module defines an image scraper for sphinx-gallery +# https://sphinx-gallery.github.io/ +# which can be used by projects using plotly in their documentation. +from glob import glob +import os +import shutil + +import plotly + +plotly.io.renderers.default = "sphinx_gallery_png" + + +def plotly_sg_scraper(block, block_vars, gallery_conf, **kwargs): + """Scrape Plotly figures for galleries of examples using + sphinx-gallery. + + Examples should use ``plotly.io.show()`` to display the figure with + the custom sphinx_gallery renderer. + + Since the sphinx_gallery renderer generates both html and static png + files, we simply crawl these files and give them the appropriate path. + + Parameters + ---------- + block : tuple + A tuple containing the (label, content, line_number) of the block. + block_vars : dict + Dict of block variables. + gallery_conf : dict + Contains the configuration of Sphinx-Gallery + **kwargs : dict + Additional keyword arguments to pass to + :meth:`~matplotlib.figure.Figure.savefig`, e.g. ``format='svg'``. + The ``format`` kwarg in particular is used to set the file extension + of the output file (currently only 'png' and 'svg' are supported). + + Returns + ------- + rst : str + The ReSTructuredText that will be rendered to HTML containing + the images. + + Notes + ----- + Add this function to the image scrapers + """ + examples_dir = os.path.dirname(block_vars["src_file"]) + pngs = sorted(glob(os.path.join(examples_dir, "*.png"))) + htmls = sorted(glob(os.path.join(examples_dir, "*.html"))) + image_path_iterator = block_vars["image_path_iterator"] + image_names = list() + seen = set() + for html, png in zip(htmls, pngs): + if png not in seen: + seen |= set(png) + this_image_path_png = next(image_path_iterator) + this_image_path_html = os.path.splitext(this_image_path_png)[0] + ".html" + image_names.append(this_image_path_html) + shutil.move(png, this_image_path_png) + shutil.move(html, this_image_path_html) + # Use the `figure_rst` helper function to generate rST for image files + return figure_rst(image_names, gallery_conf["src_dir"]) + + +def figure_rst(figure_list, sources_dir): + """Generate RST for a list of PNG filenames. + + Depending on whether we have one or more figures, we use a + single rst call to 'image' or a horizontal list. + + Parameters + ---------- + figure_list : list + List of strings of the figures' absolute paths. + sources_dir : str + absolute path of Sphinx documentation sources + + Returns + ------- + images_rst : str + rst code to embed the images in the document + """ + + figure_paths = [ + os.path.relpath(figure_path, sources_dir).replace(os.sep, "/").lstrip("/") + for figure_path in figure_list + ] + images_rst = "" + if not figure_paths: + return images_rst + figure_name = figure_paths[0] + figure_path = os.path.join("images", os.path.basename(figure_name)) + images_rst = SINGLE_HTML % figure_path + return images_rst + + +SINGLE_HTML = """ +.. raw:: html + :file: %s +""" diff --git a/venv/lib/python3.8/site-packages/plotly/io/_templates.py b/venv/lib/python3.8/site-packages/plotly/io/_templates.py new file mode 100644 index 0000000..160ee7c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_templates.py @@ -0,0 +1,492 @@ +import textwrap +import pkgutil + +import copy +import os +import json +from functools import reduce + +try: + from math import gcd +except ImportError: + # Python 2 + from fractions import gcd + +# Create Lazy sentinal object to indicate that a template should be loaded +# on-demand from package_data +Lazy = object() + + +# Templates configuration class +# ----------------------------- +class TemplatesConfig(object): + """ + Singleton object containing the current figure templates (aka themes) + """ + + def __init__(self): + # Initialize properties dict + self._templates = {} + + # Initialize built-in templates + default_templates = [ + "ggplot2", + "seaborn", + "simple_white", + "plotly", + "plotly_white", + "plotly_dark", + "presentation", + "xgridoff", + "ygridoff", + "gridon", + "none", + ] + + for template_name in default_templates: + self._templates[template_name] = Lazy + + self._validator = None + self._default = None + + # ### Magic methods ### + # Make this act as a dict of templates + def __len__(self): + return len(self._templates) + + def __contains__(self, item): + return item in self._templates + + def __iter__(self): + return iter(self._templates) + + def __getitem__(self, item): + if isinstance(item, str): + template_names = item.split("+") + else: + template_names = [item] + + templates = [] + for template_name in template_names: + template = self._templates[template_name] + if template is Lazy: + from plotly.graph_objs.layout import Template + + if template_name == "none": + # "none" is a special built-in named template that applied no defaults + template = Template(data_scatter=[{}]) + self._templates[template_name] = template + else: + # Load template from package data + path = os.path.join( + "package_data", "templates", template_name + ".json" + ) + template_str = pkgutil.get_data("plotly", path).decode("utf-8") + template_dict = json.loads(template_str) + template = Template(template_dict, _validate=False) + + self._templates[template_name] = template + templates.append(self._templates[template_name]) + + return self.merge_templates(*templates) + + def __setitem__(self, key, value): + self._templates[key] = self._validate(value) + + def __delitem__(self, key): + # Remove template + del self._templates[key] + + # Check if we need to remove it as the default + if self._default == key: + self._default = None + + def _validate(self, value): + if not self._validator: + from plotly.validator_cache import ValidatorCache + + self._validator = ValidatorCache.get_validator("layout", "template") + + return self._validator.validate_coerce(value) + + def keys(self): + return self._templates.keys() + + def items(self): + return self._templates.items() + + def update(self, d={}, **kwargs): + """ + Update one or more templates from a dict or from input keyword + arguments. + + Parameters + ---------- + d: dict + Dictionary from template names to new template values. + + kwargs + Named argument value pairs where the name is a template name + and the value is a new template value. + """ + for k, v in dict(d, **kwargs).items(): + self[k] = v + + # ### Properties ### + @property + def default(self): + """ + The name of the default template, or None if no there is no default + + If not None, the default template is automatically applied to all + figures during figure construction if no explicit template is + specified. + + The names of available templates may be retrieved with: + + >>> import plotly.io as pio + >>> list(pio.templates) + + Returns + ------- + str + """ + return self._default + + @default.setter + def default(self, value): + # Validate value + # Could be a Template object, the key of a registered template, + # Or a string containing the names of multiple templates joined on + # '+' characters + self._validate(value) + self._default = value + + def __repr__(self): + return """\ +Templates configuration +----------------------- + Default template: {default} + Available templates: +{available} +""".format(default=repr(self.default), available=self._available_templates_str()) + + def _available_templates_str(self): + """ + Return nicely wrapped string representation of all + available template names + """ + available = "\n".join( + textwrap.wrap( + repr(list(self)), + width=79 - 8, + initial_indent=" " * 8, + subsequent_indent=" " * 9, + ) + ) + return available + + def merge_templates(self, *args): + """ + Merge a collection of templates into a single combined template. + Templates are process from left to right so if multiple templates + specify the same propery, the right-most template will take + precedence. + + Parameters + ---------- + args: list of Template + Zero or more template objects (or dicts with compatible properties) + + Returns + ------- + template: + A combined template object + + Examples + -------- + + >>> pio.templates.merge_templates( + ... go.layout.Template(layout={'font': {'size': 20}}), + ... go.layout.Template(data={'scatter': [{'mode': 'markers'}]}), + ... go.layout.Template(layout={'font': {'family': 'Courier'}})) + layout.Template({ + 'data': {'scatter': [{'mode': 'markers', 'type': 'scatter'}]}, + 'layout': {'font': {'family': 'Courier', 'size': 20}} + }) + """ + if args: + return reduce(self._merge_2_templates, args) + else: + from plotly.graph_objs.layout import Template + + return Template() + + def _merge_2_templates(self, template1, template2): + """ + Helper function for merge_templates that merges exactly two templates + + Parameters + ---------- + template1: Template + template2: Template + + Returns + ------- + Template: + merged template + """ + # Validate/copy input templates + result = self._validate(template1) + other = self._validate(template2) + + # Cycle traces + for trace_type in result.data: + result_traces = result.data[trace_type] + other_traces = other.data[trace_type] + + if result_traces and other_traces: + lcm = ( + len(result_traces) + * len(other_traces) + // gcd(len(result_traces), len(other_traces)) + ) + + # Cycle result traces + result.data[trace_type] = result_traces * (lcm // len(result_traces)) + + # Cycle other traces + other.data[trace_type] = other_traces * (lcm // len(other_traces)) + + # Perform update + result.update(other) + + return result + + +# Make config a singleton object +# ------------------------------ +templates = TemplatesConfig() +del TemplatesConfig + + +# Template utilities +# ------------------ +def walk_push_to_template(fig_obj, template_obj, skip): + """ + Move style properties from fig_obj to template_obj. + + Parameters + ---------- + fig_obj: plotly.basedatatypes.BasePlotlyType + template_obj: plotly.basedatatypes.BasePlotlyType + skip: set of str + Set of names of properties to skip + """ + from _plotly_utils.basevalidators import ( + CompoundValidator, + CompoundArrayValidator, + is_array, + ) + + for prop in list(fig_obj._props): + if prop == "template" or prop in skip: + # Avoid infinite recursion + continue + + fig_val = fig_obj[prop] + template_val = template_obj[prop] + + validator = fig_obj._get_validator(prop) + + if isinstance(validator, CompoundValidator): + walk_push_to_template(fig_val, template_val, skip) + if not fig_val._props: + # Check if we can remove prop itself + fig_obj[prop] = None + elif isinstance(validator, CompoundArrayValidator) and fig_val: + template_elements = list(template_val) + template_element_names = [el.name for el in template_elements] + template_propdefaults = template_obj[prop[:-1] + "defaults"] + + for fig_el in fig_val: + element_name = fig_el.name + if element_name: + # No properties are skipped inside a named array element + skip = set() + if fig_el.name in template_element_names: + item_index = template_element_names.index(fig_el.name) + template_el = template_elements[item_index] + walk_push_to_template(fig_el, template_el, skip) + else: + template_el = fig_el.__class__() + walk_push_to_template(fig_el, template_el, skip) + template_elements.append(template_el) + template_element_names.append(fig_el.name) + + # Restore element name + # since it was pushed to template above + fig_el.name = element_name + else: + walk_push_to_template(fig_el, template_propdefaults, skip) + + template_obj[prop] = template_elements + + elif not validator.array_ok or not is_array(fig_val): + # Move property value from figure to template + template_obj[prop] = fig_val + try: + fig_obj[prop] = None + except ValueError: + # Property cannot be set to None, move on. + pass + + +def to_templated(fig, skip=("title", "text")): + """ + Return a copy of a figure where all styling properties have been moved + into the figure's template. The template property of the resulting figure + may then be used to set the default styling of other figures. + + Parameters + ---------- + fig + Figure object or dict representing a figure + skip + A collection of names of properties to skip when moving properties to + the template. Defaults to ('title', 'text') so that the text + of figure titles, axis titles, and annotations does not become part of + the template + + Examples + -------- + Imports + + >>> import plotly.graph_objs as go + >>> import plotly.io as pio + + Construct a figure with large courier text + + >>> fig = go.Figure(layout={'title': 'Figure Title', + ... 'font': {'size': 20, 'family': 'Courier'}, + ... 'template':"none"}) + >>> fig # doctest: +NORMALIZE_WHITESPACE + Figure({ + 'data': [], + 'layout': {'font': {'family': 'Courier', 'size': 20}, + 'template': '...', 'title': {'text': 'Figure Title'}} + }) + + Convert to a figure with a template. Note how the 'font' properties have + been moved into the template property. + + >>> templated_fig = pio.to_templated(fig) + >>> templated_fig.layout.template + layout.Template({ + 'layout': {'font': {'family': 'Courier', 'size': 20}} + }) + >>> templated_fig + Figure({ + 'data': [], 'layout': {'template': '...', 'title': {'text': 'Figure Title'}} + }) + + + Next create a new figure with this template + + >>> fig2 = go.Figure(layout={ + ... 'title': 'Figure 2 Title', + ... 'template': templated_fig.layout.template}) + >>> fig2.layout.template + layout.Template({ + 'layout': {'font': {'family': 'Courier', 'size': 20}} + }) + + The default font in fig2 will now be size 20 Courier. + + Next, register as a named template... + + >>> pio.templates['large_courier'] = templated_fig.layout.template + + and specify this template by name when constructing a figure. + + >>> go.Figure(layout={ + ... 'title': 'Figure 3 Title', + ... 'template': 'large_courier'}) # doctest: +ELLIPSIS + Figure(...) + + Finally, set this as the default template to be applied to all new figures + + >>> pio.templates.default = 'large_courier' + >>> fig = go.Figure(layout={'title': 'Figure 4 Title'}) + >>> fig.layout.template + layout.Template({ + 'layout': {'font': {'family': 'Courier', 'size': 20}} + }) + + Returns + ------- + go.Figure + """ + + # process fig + from plotly.basedatatypes import BaseFigure + from plotly.graph_objs import Figure + + if not isinstance(fig, BaseFigure): + fig = Figure(fig) + + # Process skip + if not skip: + skip = set() + else: + skip = set(skip) + + # Always skip uids + skip.add("uid") + + # Initialize templated figure with deep copy of input figure + templated_fig = copy.deepcopy(fig) + + # Handle layout + walk_push_to_template( + templated_fig.layout, templated_fig.layout.template.layout, skip=skip + ) + + # Handle traces + trace_type_indexes = {} + for trace in list(templated_fig.data): + template_index = trace_type_indexes.get(trace.type, 0) + + # Extend template traces if necessary + template_traces = list(templated_fig.layout.template.data[trace.type]) + while len(template_traces) <= template_index: + # Append empty trace + template_traces.append(trace.__class__()) + + # Get corresponding template trace + template_trace = template_traces[template_index] + + # Perform push properties to template + walk_push_to_template(trace, template_trace, skip=skip) + + # Update template traces in templated_fig + templated_fig.layout.template.data[trace.type] = template_traces + + # Update trace_type_indexes + trace_type_indexes[trace.type] = template_index + 1 + + # Remove useless trace arrays + any_non_empty = False + for trace_type in templated_fig.layout.template.data: + traces = templated_fig.layout.template.data[trace_type] + is_empty = [trace.to_plotly_json() == {"type": trace_type} for trace in traces] + if all(is_empty): + templated_fig.layout.template.data[trace_type] = None + else: + any_non_empty = True + + # Check if we can remove the data altogether key + if not any_non_empty: + templated_fig.layout.template.data = None + + return templated_fig diff --git a/venv/lib/python3.8/site-packages/plotly/io/_utils.py b/venv/lib/python3.8/site-packages/plotly/io/_utils.py new file mode 100644 index 0000000..4d27e03 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/_utils.py @@ -0,0 +1,93 @@ +from typing import List + +import plotly +import plotly.graph_objs as go +from plotly.offline import get_plotlyjs_version + + +def validate_coerce_fig_to_dict(fig, validate): + from plotly.basedatatypes import BaseFigure + + if isinstance(fig, BaseFigure): + fig_dict = fig.to_dict() + elif isinstance(fig, dict): + if validate: + # This will raise an exception if fig is not a valid plotly figure + fig_dict = plotly.graph_objs.Figure(fig).to_plotly_json() + else: + fig_dict = fig + elif hasattr(fig, "to_plotly_json"): + fig_dict = fig.to_plotly_json() + else: + raise ValueError( + """ +The fig parameter must be a dict or Figure. + Received value of type {typ}: {v}""".format(typ=type(fig), v=fig) + ) + return fig_dict + + +def validate_coerce_output_type(output_type): + if output_type == "Figure" or output_type == go.Figure: + cls = go.Figure + elif output_type == "FigureWidget" or ( + hasattr(go, "FigureWidget") and output_type == go.FigureWidget + ): + cls = go.FigureWidget + else: + raise ValueError( + """ +Invalid output type: {output_type} + Must be one of: 'Figure', 'FigureWidget'""" + ) + return cls + + +def broadcast_args_to_dicts(**kwargs: dict) -> List[dict]: + """ + Given one or more keyword arguments which may be either a single value or a list of values, + return a list of keyword dictionaries by broadcasting the single valuesacross all the dicts. + If more than one item in the input is a list, all lists must be the same length. + + Parameters + ---------- + **kwargs: dict + The keyword arguments + + Returns + ------- + list of dicts + A list of dictionaries + + Raises + ------ + ValueError + If any of the input lists are not the same length + """ + # Check that all list arguments have the same length, + # and find out what that length is + # If there are no list arguments, length is 1 + list_lengths = [len(v) for v in tuple(kwargs.values()) if isinstance(v, list)] + if list_lengths and len(set(list_lengths)) > 1: + raise ValueError("All list arguments must have the same length.") + list_length = list_lengths[0] if list_lengths else 1 + + # Expand all arguments to lists of the same length + expanded_kwargs = { + k: [v] * list_length if not isinstance(v, list) else v + for k, v in kwargs.items() + } + # Reshape into a list of dictionaries + # Each dictionary represents the keyword arguments for a single function call + list_of_kwargs = [ + {k: v[i] for k, v in expanded_kwargs.items()} for i in range(list_length) + ] + + return list_of_kwargs + + +def plotly_cdn_url(cdn_ver=get_plotlyjs_version()): + """Return a valid plotly CDN url.""" + return "https://cdn.plot.ly/plotly-{cdn_ver}.min.js".format( + cdn_ver=cdn_ver, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/io/base_renderers.py b/venv/lib/python3.8/site-packages/plotly/io/base_renderers.py new file mode 100644 index 0000000..78c1d86 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/base_renderers.py @@ -0,0 +1,17 @@ +# ruff: noqa: F401 +from ._base_renderers import ( + MimetypeRenderer, + PlotlyRenderer, + JsonRenderer, + ImageRenderer, + PngRenderer, + SvgRenderer, + PdfRenderer, + JpegRenderer, + HtmlRenderer, + ColabRenderer, + KaggleRenderer, + NotebookRenderer, + ExternalRenderer, + BrowserRenderer, +) diff --git a/venv/lib/python3.8/site-packages/plotly/io/json.py b/venv/lib/python3.8/site-packages/plotly/io/json.py new file mode 100644 index 0000000..86c320d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/json.py @@ -0,0 +1,10 @@ +# ruff: noqa: F401 +from ._json import ( + to_json, + write_json, + from_json, + read_json, + config, + to_json_plotly, + from_json_plotly, +) diff --git a/venv/lib/python3.8/site-packages/plotly/io/kaleido.py b/venv/lib/python3.8/site-packages/plotly/io/kaleido.py new file mode 100644 index 0000000..c086ea3 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/kaleido.py @@ -0,0 +1,12 @@ +# ruff: noqa: F401 +from ._kaleido import ( + to_image, + write_image, + scope, + kaleido_available, + kaleido_major, + ENABLE_KALEIDO_V0_DEPRECATION_WARNINGS, + KALEIDO_DEPRECATION_MSG, + ORCA_DEPRECATION_MSG, + ENGINE_PARAM_DEPRECATION_MSG, +) diff --git a/venv/lib/python3.8/site-packages/plotly/io/orca.py b/venv/lib/python3.8/site-packages/plotly/io/orca.py new file mode 100644 index 0000000..4fd5c19 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/io/orca.py @@ -0,0 +1,9 @@ +# ruff: noqa: F401 +from ._orca import ( + ensure_server, + shutdown_server, + validate_executable, + reset_status, + config, + status, +) diff --git a/venv/lib/python3.8/site-packages/plotly/labextension/static/340.2a23c8275d47a2531dae.js b/venv/lib/python3.8/site-packages/plotly/labextension/static/340.2a23c8275d47a2531dae.js new file mode 100644 index 0000000..d763c07 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/labextension/static/340.2a23c8275d47a2531dae.js @@ -0,0 +1,2 @@ +/*! For license information please see 340.2a23c8275d47a2531dae.js.LICENSE.txt */ +(self.webpackChunkjupyterlab_plotly=self.webpackChunkjupyterlab_plotly||[]).push([[340],{340:(t,e,r)=>{"use strict";r.r(e),r.d(e,{MIME_TYPE:()=>Ht,RenderedPlotly:()=>Gt,default:()=>Zt,rendererFactory:()=>Wt});var n,i,a,o,s,l,c=r(606),u=Object.create,h=Object.defineProperty,p=Object.getOwnPropertyDescriptor,f=Object.getOwnPropertyNames,d=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,g=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),y=(t,e,r)=>(r=null!=t?u(d(t)):{},((t,e,r,n)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let r of f(e))!m.call(t,r)&&undefined!==r&&h(t,r,{get:()=>e[r],enumerable:!(n=p(e,r))||n.enumerable});return t})(!e&&t&&t.__esModule?r:h(r,"default",{value:t,enumerable:!0}),t)),v=g(((t,e)=>{var n,i;n=t,i=function(t){function e(t,e){let r=0;for(let n of t)if(!1===e(n,r++))return!1;return!0}var r;t.ArrayExt=void 0,function(t){function e(t,e,r=0,n=-1){let i,a=t.length;if(0===a)return-1;r=r<0?Math.max(0,r+a):Math.min(r,a-1),i=(n=n<0?Math.max(0,n+a):Math.min(n,a-1))=r)return;let n=t[e];for(let n=e+1;n0;){let n=s>>1,i=o+n;r(t[i],e)<0?(o=i+1,s-=n+1):s=n}return o},t.upperBound=function(t,e,r,n=0,i=-1){let a=t.length;if(0===a)return 0;let o=n=n<0?Math.max(0,n+a):Math.min(n,a-1),s=(i=i<0?Math.max(0,i+a):Math.min(i,a-1))-n+1;for(;s>0;){let n=s>>1,i=o+n;r(t[i],e)>0?s=n:(o=i+1,s-=n+1)}return o},t.shallowEqual=function(t,e,r){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0,i=t.length;n=o&&(r=i<0?o-1:o),void 0===n?n=i<0?-1:o:n<0?n=Math.max(n+o,i<0?-1:0):n>=o&&(n=i<0?o-1:o),a=i<0&&n>=r||i>0&&r>=n?0:i<0?Math.floor((n-r+1)/i+1):Math.floor((n-r-1)/i+1);let s=[];for(let e=0;e=(n=n<0?Math.max(0,n+i):Math.min(n,i-1)))return;let o=n-r+1;if(e>0?e%=o:e<0&&(e=(e%o+o)%o),0===e)return;let s=r+e;a(t,r,s-1),a(t,s,n),a(t,r,n)},t.fill=function(t,e,r=0,n=-1){let i,a=t.length;if(0!==a){r=r<0?Math.max(0,r+a):Math.min(r,a-1),i=(n=n<0?Math.max(0,n+a):Math.min(n,a-1))e;--r)t[r]=t[r-1];t[e]=r},t.removeAt=o,t.removeFirstOf=function(t,r,n=0,i=-1){let a=e(t,r,n,i);return-1!==a&&o(t,a),a},t.removeLastOf=function(t,e,n=-1,i=0){let a=r(t,e,n,i);return-1!==a&&o(t,a),a},t.removeAllOf=function(t,e,r=0,n=-1){let i=t.length;if(0===i)return 0;r=r<0?Math.max(0,r+i):Math.min(r,i-1),n=n<0?Math.max(0,n+i):Math.min(n,i-1);let a=0;for(let o=0;o=r&&o<=n&&t[o]===e||n=r)&&t[o]===e?a++:a>0&&(t[o-a]=t[o]);return a>0&&(t.length=i-a),a},t.removeFirstWhere=function(t,e,r=0,i=-1){let a,s=n(t,e,r,i);return-1!==s&&(a=o(t,s)),{index:s,value:a}},t.removeLastWhere=function(t,e,r=-1,n=0){let a,s=i(t,e,r,n);return-1!==s&&(a=o(t,s)),{index:s,value:a}},t.removeAllWhere=function(t,e,r=0,n=-1){let i=t.length;if(0===i)return 0;r=r<0?Math.max(0,r+i):Math.min(r,i-1),n=n<0?Math.max(0,n+i):Math.min(n,i-1);let a=0;for(let o=0;o=r&&o<=n&&e(t[o],o)||n=r)&&e(t[o],o)?a++:a>0&&(t[o-a]=t[o]);return a>0&&(t.length=i-a),a}}(t.ArrayExt||(t.ArrayExt={})),(r||(r={})).rangeLength=function(t,e,r){return 0===r?1/0:t>e&&r>0||te?1:0}}(t.StringExt||(t.StringExt={})),t.chain=function*(...t){for(let e of t)yield*e},t.each=function(t,e){let r=0;for(let n of t)if(!1===e(n,r++))return},t.empty=function*(){},t.enumerate=function*(t,e=0){for(let r of t)yield[e++,r]},t.every=e,t.filter=function*(t,e){let r=0;for(let n of t)e(n,r++)&&(yield n)},t.find=function(t,e){let r=0;for(let n of t)if(e(n,r++))return n},t.findIndex=function(t,e){let r=0;for(let n of t)if(e(n,r++))return r-1;return-1},t.map=function*(t,e){let r=0;for(let n of t)yield e(n,r++)},t.max=function(t,e){let r;for(let n of t)void 0!==r?e(n,r)>0&&(r=n):r=n;return r},t.min=function(t,e){let r;for(let n of t)void 0!==r?e(n,r)<0&&(r=n):r=n;return r},t.minmax=function(t,e){let r,n,i=!0;for(let a of t)i?(r=a,n=a,i=!1):e(a,r)<0?r=a:e(a,n)>0&&(n=a);return i?void 0:[r,n]},t.once=function*(t){yield t},t.range=function*(t,e,n){void 0===e?(e=t,t=0,n=1):void 0===n&&(n=1);let i=r.rangeLength(t,e,n);for(let e=0;e-1;e--)yield t[e]},t.some=function(t,e){let r=0;for(let n of t)if(e(n,r++))return!0;return!1},t.stride=function*(t,e){let r=0;for(let n of t)r++%e==0&&(yield n)},t.take=function*(t,e){if(e<1)return;let r,n=t[Symbol.iterator]();for(;0t[Symbol.iterator]())),n=r.map((t=>t.next()));for(;e(n,(t=>!t.done));n=r.map((t=>t.next())))yield n.map((t=>t.value))}},"object"==typeof t&&typeof e<"u"?i(t):"function"==typeof define&&r.amdO?define(["exports"],i):i((n=typeof globalThis<"u"?globalThis:n||self).lumino_algorithm={})})),x=g(((t,e)=>{var n,i;n=t,i=function(t,e){var r;function n(t){let e=0;for(let r=0,n=t.length;r>>0),t[r]=255&e,e>>>=8}t.JSONExt=void 0,function(t){function e(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t}function r(t){return Array.isArray(t)}t.emptyObject=Object.freeze({}),t.emptyArray=Object.freeze([]),t.isPrimitive=e,t.isArray=r,t.isObject=function(t){return!e(t)&&!r(t)},t.deepEqual=function t(n,i){if(n===i)return!0;if(e(n)||e(i))return!1;let a=r(n),o=r(i);return a===o&&(a&&o?function(e,r){if(e===r)return!0;if(e.length!==r.length)return!1;for(let n=0,i=e.length;n{if(n===t.provides)return!0;let o=r.get(n);if(!o)return!1;let s=e.get(o),l=[...s.requires,...s.optional];return 0!==l.length&&(a.push(o),!!l.some(i)||(a.pop(),!1))};if(!t.provides||0===n.length)return;let a=[t.id];if(n.some(i))throw new ReferenceError(`Cycle detected: ${a.join(" -> ")}.`)},t.findDependents=function(t,r,n){let i=new Array,a=t=>{let e=r.get(t),a=[...e.requires,...e.optional];i.push(...a.reduce(((e,r)=>{let i=n.get(r);return i&&e.push([t,i]),e}),[]))};for(let t of r.keys())a(t);let o=i.filter((e=>e[1]===t)),s=0;for(;o.length>s;){let t=o.length,e=new Set(o.map((t=>t[0])));for(let t of e)i.filter((e=>e[1]===t)).forEach((t=>{o.includes(t)||o.push(t)}));s=t}let l=e.topologicSort(o),c=l.findIndex((e=>e===t));return-1===c?[t]:l.slice(0,c+1)},t.collectStartupPlugins=function(t,e){let r=new Set;for(let e of t.keys())!0===t.get(e).autoStart&&r.add(e);if(e.startPlugins)for(let t of e.startPlugins)r.add(t);if(e.ignorePlugins)for(let t of e.ignorePlugins)r.delete(t);return Array.from(r)}}(r||(r={})),t.Random=void 0,(t.Random||(t.Random={})).getRandomValues=(()=>{let t=typeof window<"u"&&(window.crypto||window.msCrypto)||null;return t&&"function"==typeof t.getRandomValues?function(e){return t.getRandomValues(e)}:n})(),t.UUID=void 0,(t.UUID||(t.UUID={})).uuid4=function(t){let e=new Uint8Array(16),r=new Array(256);for(let t=0;t<16;++t)r[t]="0"+t.toString(16);for(let t=16;t<256;++t)r[t]=t.toString(16);return function(){return t(e),e[6]=64|15&e[6],e[8]=128|63&e[8],r[e[0]]+r[e[1]]+r[e[2]]+r[e[3]]+"-"+r[e[4]]+r[e[5]]+"-"+r[e[6]]+r[e[7]]+"-"+r[e[8]]+r[e[9]]+"-"+r[e[10]]+r[e[11]]+r[e[12]]+r[e[13]]+r[e[14]]+r[e[15]]}}(t.Random.getRandomValues),t.MimeData=class{constructor(){this._types=[],this._values=[]}types(){return this._types.slice()}hasData(t){return-1!==this._types.indexOf(t)}getData(t){let e=this._types.indexOf(t);return-1!==e?this._values[e]:void 0}setData(t,e){this.clearData(t),this._types.push(t),this._values.push(e)}clearData(t){let e=this._types.indexOf(t);-1!==e&&(this._types.splice(e,1),this._values.splice(e,1))}clear(){this._types.length=0,this._values.length=0}},t.PluginRegistry=class{constructor(t={}){this._application=null,this._validatePlugin=()=>!0,this._plugins=new Map,this._services=new Map,t.validatePlugin&&(console.info("Plugins may be rejected by the custom validation plugin method."),this._validatePlugin=t.validatePlugin)}get application(){return this._application}set application(t){if(null!==this._application)throw Error("PluginRegistry.application is already set. It cannot be overridden.");this._application=t}get deferredPlugins(){return Array.from(this._plugins).filter((([t,e])=>"defer"===e.autoStart)).map((([t,e])=>t))}getPluginDescription(t){var e,r;return null!==(r=null===(e=this._plugins.get(t))||void 0===e?void 0:e.description)&&void 0!==r?r:""}hasPlugin(t){return this._plugins.has(t)}isPluginActivated(t){var e,r;return null!==(r=null===(e=this._plugins.get(t))||void 0===e?void 0:e.activated)&&void 0!==r&&r}listPlugins(){return Array.from(this._plugins.keys())}registerPlugin(t){if(this._plugins.has(t.id))throw new TypeError(`Plugin '${t.id}' is already registered.`);if(!this._validatePlugin(t))throw new Error(`Plugin '${t.id}' is not valid.`);let e=r.createPluginData(t);r.ensureNoCycle(e,this._plugins,this._services),e.provides&&this._services.set(e.provides,e.id),this._plugins.set(e.id,e)}registerPlugins(t){for(let e of t)this.registerPlugin(e)}deregisterPlugin(t,e){let r=this._plugins.get(t);if(r){if(r.activated&&!e)throw new Error(`Plugin '${t}' is still active.`);this._plugins.delete(t)}}async activatePlugin(t){let e=this._plugins.get(t);if(!e)throw new ReferenceError(`Plugin '${t}' is not registered.`);if(e.activated)return;if(e.promise)return e.promise;let r=e.requires.map((t=>this.resolveRequiredService(t))),n=e.optional.map((t=>this.resolveOptionalService(t)));return e.promise=Promise.all([...r,...n]).then((t=>e.activate.apply(void 0,[this.application,...t]))).then((t=>{e.service=t,e.activated=!0,e.promise=null})).catch((t=>{throw e.promise=null,t})),e.promise}async activatePlugins(t,e={}){switch(t){case"defer":{let t=this.deferredPlugins.filter((t=>this._plugins.get(t).autoStart)).map((t=>this.activatePlugin(t)));await Promise.all(t);break}case"startUp":{let t=r.collectStartupPlugins(this._plugins,e).map((async t=>{try{return await this.activatePlugin(t)}catch(e){console.error(`Plugin '${t}' failed to activate.`,e)}}));await Promise.all(t);break}}}async deactivatePlugin(t){let e=this._plugins.get(t);if(!e)throw new ReferenceError(`Plugin '${t}' is not registered.`);if(!e.activated)return[];if(!e.deactivate)throw new TypeError(`Plugin '${t}'#deactivate() method missing`);let n=r.findDependents(t,this._plugins,this._services),i=n.map((t=>this._plugins.get(t)));for(let e of i)if(!e.deactivate)throw new TypeError(`Plugin ${e.id}#deactivate() method missing (depends on ${t})`);for(let t of i){let e=[...t.requires,...t.optional].map((t=>{let e=this._services.get(t);return e?this._plugins.get(e).service:null}));await t.deactivate(this.application,...e),t.service=null,t.activated=!1}return n.pop(),n}async resolveRequiredService(t){let e=this._services.get(t);if(!e)throw new TypeError(`No provider for: ${t.name}.`);let r=this._plugins.get(e);return r.activated||await this.activatePlugin(e),r.service}async resolveOptionalService(t){let e=this._services.get(t);if(!e)return null;let r=this._plugins.get(e);if(!r.activated)try{await this.activatePlugin(e)}catch(t){return console.error(t),null}return r.service}},t.PromiseDelegate=class{constructor(){this.promise=new Promise(((t,e)=>{this._resolve=t,this._reject=e}))}resolve(t){(0,this._resolve)(t)}reject(t){(0,this._reject)(t)}},t.Token=class{constructor(t,e){this.name=t,this.description=e??"",this._tokenStructuralPropertyT=null}}},"object"==typeof t&&typeof e<"u"?i(t,v()):"function"==typeof define&&r.amdO?define(["exports","@lumino/algorithm"],i):i((n=typeof globalThis<"u"?globalThis:n||self).lumino_coreutils={},n.lumino_algorithm)})),_=g(((t,e)=>{var r,n;r=typeof self<"u"?self:t,n=()=>{var t=(()=>{var t=Object.create,e=Object.defineProperty,r=Object.defineProperties,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyDescriptors,a=Object.getOwnPropertyNames,o=Object.getOwnPropertySymbols,s=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty,u=Object.prototype.propertyIsEnumerable,h=(t,r,n)=>r in t?e(t,r,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[r]=n,p=(t,e)=>function(){return t&&(e=(0,t[a(t)[0]])(t=0)),e},f=(t,e)=>function(){return e||(0,t[a(t)[0]])((e={exports:{}}).exports,e),e.exports},d=(t,r)=>{for(var n in r)e(t,n,{get:r[n],enumerable:!0})},m=(t,r,i,o)=>{if(r&&"object"==typeof r||"function"==typeof r)for(let s of a(r))!l.call(t,s)&&s!==i&&e(t,s,{get:()=>r[s],enumerable:!(o=n(r,s))||o.enumerable});return t},g=t=>m(e({},"__esModule",{value:!0}),t),y=f({"src/version.js"(t){t.version="3.0.1"}}),v=f({"node_modules/native-promise-only/lib/npo.src.js"(t,e){var r,n;r="Promise",(n=typeof window<"u"?window:t)[r]=n[r]||function(){var t,e,r,n=Object.prototype.toString,i=typeof setImmediate<"u"?function(t){return setImmediate(t)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(t,e,r,n){return Object.defineProperty(t,e,{value:r,writable:!0,configurable:!1!==n})}}catch{t=function(t,e,r){return t[e]=r,t}}function a(t,n){r.add(t,n),e||(e=i(r.drain))}function o(t){var e,r=typeof t;return null!=t&&("object"==r||"function"==r)&&(e=t.then),"function"==typeof e&&e}function s(){for(var t=0;t0&&a(s,r))}catch(t){u.call(new p(r),t)}}}function u(t){var e=this;e.triggered||(e.triggered=!0,e.def&&(e=e.def),e.msg=t,e.state=2,e.chain.length>0&&a(s,e))}function h(t,e,r,n){for(var i=0;ie?1:t>=e?0:NaN}function f(t){return null===t?NaN:+t}function d(t){return!isNaN(t)}function m(t){return{left:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(arguments.length<3&&(n=0),arguments.length<4&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}t.ascending=p,t.descending=function(t,e){return et?1:e>=t?0:NaN},t.min=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++in&&(r=n)}else{for(;++i=n){r=n;break}for(;++in&&(r=n)}return r},t.max=function(t,e){var r,n,i=-1,a=t.length;if(1===arguments.length){for(;++i=n){r=n;break}for(;++ir&&(r=n)}else{for(;++i=n){r=n;break}for(;++ir&&(r=n)}return r},t.extent=function(t,e){var r,n,i,a=-1,o=t.length;if(1===arguments.length){for(;++a=n){r=i=n;break}for(;++an&&(r=n),i=n){r=i=n;break}for(;++an&&(r=n),i1)return o/(l-1)},t.deviation=function(){var e=t.variance.apply(this,arguments);return e&&Math.sqrt(e)};var g=m(p);function y(t){return t.length}t.bisectLeft=g.left,t.bisect=t.bisectRight=g.right,t.bisector=function(t){return m(1===t.length?function(e,r){return p(t(e),r)}:t)},t.shuffle=function(t,e,r){(a=arguments.length)<3&&(r=t.length,a<2&&(e=0));for(var n,i,a=r-e;a;)i=Math.random()*a--|0,n=t[a+e],t[a+e]=t[i+e],t[i+e]=n;return t},t.permute=function(t,e){for(var r=e.length,n=new Array(r);r--;)n[r]=t[e[r]];return n},t.pairs=function(t){for(var e=0,r=t.length-1,n=t[0],i=new Array(r<0?0:r);e=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r};var v=Math.abs;function x(t,e){for(var r in e)Object.defineProperty(t.prototype,r,{value:e[r],enumerable:!1})}function _(){this._=Object.create(null)}function b(t){return"__proto__"==(t+="")||"\0"===t[0]?"\0"+t:t}function w(t){return"\0"===(t+="")[0]?t.slice(1):t}function T(t){return b(t)in this._}function A(t){return(t=b(t))in this._&&delete this._[t]}function k(){var t=[];for(var e in this._)t.push(w(e));return t}function M(){var t=0;for(var e in this._)++t;return t}function S(){for(var t in this._)return!1;return!0}function E(){this._=Object.create(null)}function C(t){return t}function I(t,e,r){return function(){var n=r.apply(e,arguments);return n===e?t:n}}function L(t,e){if(e in t)return e;e=e.charAt(0).toUpperCase()+e.slice(1);for(var r=0,n=P.length;re;)i.push(n/a);else for(;(n=t+r*++o)=i.length)return r?r.call(n,a):e?a.sort(e):a;for(var l,c,u,h,p=-1,f=a.length,d=i[s++],m=new _;++p=i.length)return t;var r=[],n=a[e++];return t.forEach((function(t,n){r.push({key:t,values:s(n,e)})})),n?r.sort((function(t,e){return n(t.key,e.key)})):r}return n.map=function(t,e){return o(e,t,0)},n.entries=function(e){return s(o(t.map,e,0),0)},n.key=function(t){return i.push(t),n},n.sortKeys=function(t){return a[i.length-1]=t,n},n.sortValues=function(t){return e=t,n},n.rollup=function(t){return r=t,n},n},t.set=function(t){var e=new E;if(t)for(var r=0,n=t.length;r=0&&(n=t.slice(r+1),t=t.slice(0,r)),t)return arguments.length<2?this[t].on(n):this[t].on(n,e);if(2===arguments.length){if(null==e)for(t in this)this.hasOwnProperty(t)&&this[t].on(n,null);return this}},t.event=null,t.requote=function(t){return t.replace(j,"\\$&")};var j=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,N={}.__proto__?function(t,e){t.__proto__=e}:function(t,e){for(var r in e)t[r]=e[r]};function U(t){return N(t,G),t}var V=function(t,e){return e.querySelector(t)},q=function(t,e){return e.querySelectorAll(t)},H=function(t,e){var r=t.matches||t[L(t,"matchesSelector")];return(H=function(t,e){return r.call(t,e)})(t,e)};"function"==typeof Sizzle&&(V=function(t,e){return Sizzle(t,e)[0]||null},q=Sizzle,H=Sizzle.matchesSelector),t.selection=function(){return t.select(i.documentElement)};var G=t.selection.prototype=[];function W(t){return"function"==typeof t?t:function(){return V(t,this)}}function Z(t){return"function"==typeof t?t:function(){return q(t,this)}}G.select=function(t){var e,r,n,i,a=[];t=W(t);for(var o=-1,s=this.length;++o=0&&"xmlns"!==(r=t.slice(0,e))&&(t=t.slice(e+1)),X.hasOwnProperty(r)?{space:X[r],local:t}:t}},G.attr=function(e,r){if(arguments.length<2){if("string"==typeof e){var n=this.node();return(e=t.ns.qualify(e)).local?n.getAttributeNS(e.space,e.local):n.getAttribute(e)}for(r in e)this.each($(r,e[r]));return this}return this.each($(e,r))},G.classed=function(t,e){if(arguments.length<2){if("string"==typeof t){var r=this.node(),n=(t=Q(t)).length,i=-1;if(e=r.classList){for(;++i=0;)(r=n[i])&&(a&&a!==r.nextSibling&&a.parentNode.insertBefore(r,a),a=r);return this},G.sort=function(t){t=lt.apply(this,arguments);for(var e=-1,r=this.length;++e0&&(e=e.slice(0,o));var l=ft.get(e);function c(){var t=this[a];t&&(this.removeEventListener(e,t,t.$),delete this[a])}return l&&(e=l,s=mt),o?r?function(){var t=s(r,n(arguments));c.call(this),this.addEventListener(e,this[a]=t,t.$=i),t._=r}:c:r?z:function(){var r,n=new RegExp("^__on([^.]+)"+t.requote(e)+"$");for(var i in this)if(r=i.match(n)){var a=this[i];this.removeEventListener(r[1],a,a.$),delete this[i]}}}t.selection.enter=ut,t.selection.enter.prototype=ht,ht.append=G.append,ht.empty=G.empty,ht.node=G.node,ht.call=G.call,ht.size=G.size,ht.select=function(t){for(var e,r,n,i,a,o=[],s=-1,l=this.length;++s=e&&(e=i+1);!(o=s[e])&&++e1?Mt:t<-1?-Mt:Math.asin(t)}function Lt(t){return((t=Math.exp(t))+1/t)/2}var Pt=Math.SQRT2;t.interpolateZoom=function(t,e){var r,n,i=t[0],a=t[1],o=t[2],s=e[0],l=e[1],c=e[2],u=s-i,h=l-a,p=u*u+h*h;if(p<1e-12)n=Math.log(c/o)/Pt,r=function(t){return[i+t*u,a+t*h,o*Math.exp(Pt*t*n)]};else{var f=Math.sqrt(p),d=(c*c-o*o+4*p)/(2*o*2*f),m=(c*c-o*o-4*p)/(2*c*2*f),g=Math.log(Math.sqrt(d*d+1)-d),y=Math.log(Math.sqrt(m*m+1)-m);n=(y-g)/Pt,r=function(t){var e=t*n,r=Lt(g),s=o/(2*f)*(r*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(Pt*e+g)-function(t){return((t=Math.exp(t))-1/t)/2}(g));return[i+s*u,a+s*h,o*r/Lt(Pt*e+g)]}}return r.duration=1e3*n,r},t.behavior.zoom=function(){var e,r,n,a,s,l,c,u,h,p={x:0,y:0,k:1},f=[960,500],d=Ot,m=250,g=0,y="mousedown.zoom",v="mousemove.zoom",x="mouseup.zoom",_="touchstart.zoom",b=B(w,"zoomstart","zoom","zoomend");function w(t){t.on(y,L).on(Dt+".zoom",z).on("dblclick.zoom",D).on(_,P)}function T(t){return[(t[0]-p.x)/p.k,(t[1]-p.y)/p.k]}function A(t){p.k=Math.max(d[0],Math.min(d[1],t))}function k(t,e){e=function(t){return[t[0]*p.k+p.x,t[1]*p.k+p.y]}(e),p.x+=t[0]-e[0],p.y+=t[1]-e[1]}function M(e,n,i,a){e.__chart__={x:p.x,y:p.y,k:p.k},A(Math.pow(2,a)),k(r=n,i),e=t.select(e),m>0&&(e=e.transition().duration(m)),e.call(w.event)}function S(){c&&c.domain(l.range().map((function(t){return(t-p.x)/p.k})).map(l.invert)),h&&h.domain(u.range().map((function(t){return(t-p.y)/p.k})).map(u.invert))}function E(t){g++||t({type:"zoomstart"})}function C(t){S(),t({type:"zoom",scale:p.k,translate:[p.x,p.y]})}function I(t){--g||(t({type:"zoomend"}),r=null)}function L(){var e=this,r=b.of(e,arguments),n=0,i=t.select(o(e)).on(v,(function(){n=1,k(t.mouse(e),a),C(r)})).on(x,(function(){i.on(v,null).on(x,null),s(n),I(r)})),a=T(t.mouse(e)),s=vt(e);Wi.call(e),E(r)}function P(){var e,r=this,n=b.of(r,arguments),i={},a=0,o=".zoom-"+t.event.changedTouches[0].identifier,l="touchmove"+o,c="touchend"+o,u=[],h=t.select(r),f=vt(r);function d(){var n=t.touches(r);return e=p.k,n.forEach((function(t){t.identifier in i&&(i[t.identifier]=T(t))})),n}function m(){var e=t.event.target;t.select(e).on(l,g).on(c,v),u.push(e);for(var n=t.event.changedTouches,o=0,h=n.length;o1){y=f[0];var x=f[1],_=y[0]-x[0],b=y[1]-x[1];a=_*_+b*b}}function g(){var o,l,c,u,h=t.touches(r);Wi.call(r);for(var p=0,f=h.length;p360?t-=360:t<0&&(t+=360),t<60?n+(i-n)*t/60:t<180?i:t<240?n+(i-n)*(240-t)/60:n}(t))}return t=isNaN(t)?0:(t%=360)<0?t+360:t,e=isNaN(e)||e<0?0:e>1?1:e,n=2*(r=r<0?0:r>1?1:r)-(i=r<=.5?r*(1+e):r+e-r*e),new Qt(a(t+120),a(t),a(t-120))}function Nt(e,r,n){return this instanceof Nt?(this.h=+e,this.c=+r,void(this.l=+n)):arguments.length<2?e instanceof Nt?new Nt(e.h,e.c,e.l):function(t,e,r){return t>0?new Nt(Math.atan2(r,e)*Et,Math.sqrt(e*e+r*r),t):new Nt(NaN,NaN,t)}(e instanceof qt?e.l:(e=oe((e=t.rgb(e)).r,e.g,e.b)).l,e.a,e.b):new Nt(e,r,n)}Bt.brighter=function(t){return t=Math.pow(.7,arguments.length?t:1),new Ft(this.h,this.s,this.l/t)},Bt.darker=function(t){return t=Math.pow(.7,arguments.length?t:1),new Ft(this.h,this.s,t*this.l)},Bt.rgb=function(){return jt(this.h,this.s,this.l)},t.hcl=Nt;var Ut=Nt.prototype=new Rt;function Vt(t,e,r){return isNaN(t)&&(t=0),isNaN(e)&&(e=0),new qt(r,Math.cos(t*=St)*e,Math.sin(t)*e)}function qt(t,e,r){return this instanceof qt?(this.l=+t,this.a=+e,void(this.b=+r)):arguments.length<2?t instanceof qt?new qt(t.l,t.a,t.b):t instanceof Nt?Vt(t.h,t.c,t.l):oe((t=Qt(t)).r,t.g,t.b):new qt(t,e,r)}Ut.brighter=function(t){return new Nt(this.h,this.c,Math.min(100,this.l+Ht*(arguments.length?t:1)))},Ut.darker=function(t){return new Nt(this.h,this.c,Math.max(0,this.l-Ht*(arguments.length?t:1)))},Ut.rgb=function(){return Vt(this.h,this.c,this.l).rgb()},t.lab=qt;var Ht=18,Gt=.95047,Wt=1,Zt=1.08883,Yt=qt.prototype=new Rt;function Xt(t,e,r){var n=(t+16)/116,i=n+e/500,a=n-r/200;return new Qt(Jt(3.2404542*(i=$t(i)*Gt)-1.5371385*(n=$t(n)*Wt)-.4985314*(a=$t(a)*Zt)),Jt(-.969266*i+1.8760108*n+.041556*a),Jt(.0556434*i-.2040259*n+1.0572252*a))}function $t(t){return t>.206893034?t*t*t:(t-4/29)/7.787037}function Kt(t){return t>.008856?Math.pow(t,1/3):7.787037*t+4/29}function Jt(t){return Math.round(255*(t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055))}function Qt(t,e,r){return this instanceof Qt?(this.r=~~t,this.g=~~e,void(this.b=~~r)):arguments.length<2?t instanceof Qt?new Qt(t.r,t.g,t.b):ie(""+t,Qt,jt):new Qt(t,e,r)}function te(t){return new Qt(t>>16,t>>8&255,255&t)}function ee(t){return te(t)+""}Yt.brighter=function(t){return new qt(Math.min(100,this.l+Ht*(arguments.length?t:1)),this.a,this.b)},Yt.darker=function(t){return new qt(Math.max(0,this.l-Ht*(arguments.length?t:1)),this.a,this.b)},Yt.rgb=function(){return Xt(this.l,this.a,this.b)},t.rgb=Qt;var re=Qt.prototype=new Rt;function ne(t){return t<16?"0"+Math.max(0,t).toString(16):Math.min(255,t).toString(16)}function ie(t,e,r){var n,i,a,o=0,s=0,l=0;if(n=/([a-z]+)\((.*)\)/.exec(t=t.toLowerCase()))switch(i=n[2].split(","),n[1]){case"hsl":return r(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return e(le(i[0]),le(i[1]),le(i[2]))}return(a=ce.get(t))?e(a.r,a.g,a.b):(null!=t&&"#"===t.charAt(0)&&!isNaN(a=parseInt(t.slice(1),16))&&(4===t.length?(o=(3840&a)>>4,o|=o>>4,s=240&a,s|=s>>4,l=15&a,l|=l<<4):7===t.length&&(o=(16711680&a)>>16,s=(65280&a)>>8,l=255&a)),e(o,s,l))}function ae(t,e,r){var n,i,a=Math.min(t/=255,e/=255,r/=255),o=Math.max(t,e,r),s=o-a,l=(o+a)/2;return s?(i=l<.5?s/(o+a):s/(2-o-a),n=t==o?(e-r)/s+(e0&&l<1?0:n),new Ft(n,i,l)}function oe(t,e,r){var n=Kt((.4124564*(t=se(t))+.3575761*(e=se(e))+.1804375*(r=se(r)))/Gt),i=Kt((.2126729*t+.7151522*e+.072175*r)/Wt);return qt(116*i-16,500*(n-i),200*(i-Kt((.0193339*t+.119192*e+.9503041*r)/Zt)))}function se(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function le(t){var e=parseFloat(t);return"%"===t.charAt(t.length-1)?Math.round(2.55*e):e}re.brighter=function(t){t=Math.pow(.7,arguments.length?t:1);var e=this.r,r=this.g,n=this.b,i=30;return e||r||n?(e&&e=200&&e<300||304===e){try{t=i.call(o,c)}catch(t){return void s.error.call(o,t)}s.load.call(o,t)}else s.error.call(o,c)}return self.XDomainRequest&&!("withCredentials"in c)&&/^(http(s)?:)?\/\//.test(e)&&(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=h:c.onreadystatechange=function(){c.readyState>3&&h()},c.onprogress=function(e){var r=t.event;t.event=e;try{s.progress.call(o,c)}finally{t.event=r}},o.header=function(t,e){return t=(t+"").toLowerCase(),arguments.length<2?l[t]:(null==e?delete l[t]:l[t]=e+"",o)},o.mimeType=function(t){return arguments.length?(r=null==t?null:t+"",o):r},o.responseType=function(t){return arguments.length?(u=t,o):u},o.response=function(t){return i=t,o},["get","post"].forEach((function(t){o[t]=function(){return o.send.apply(o,[t].concat(n(arguments)))}})),o.send=function(t,n,i){if(2===arguments.length&&"function"==typeof n&&(i=n,n=null),c.open(t,e,!0),null!=r&&!("accept"in l)&&(l.accept=r+",*/*"),c.setRequestHeader)for(var a in l)c.setRequestHeader(a,l[a]);return null!=r&&c.overrideMimeType&&c.overrideMimeType(r),null!=u&&(c.responseType=u),null!=i&&o.on("error",i).on("load",(function(t){i(null,t)})),s.beforesend.call(o,c),c.send(n??null),o},o.abort=function(){return c.abort(),o},t.rebind(o,s,"on"),null==a?o:o.get(function(t){return 1===t.length?function(e,r){t(null==e?r:null)}:t}(a))}ce.forEach((function(t,e){ce.set(t,te(e))})),t.functor=ue,t.xhr=he(C),t.dsv=function(t,e){var r=new RegExp('["'+t+"\n]"),n=t.charCodeAt(0);function i(t,r,n){arguments.length<3&&(n=r,r=null);var i=pe(t,e,null==r?a:o(r),n);return i.row=function(t){return arguments.length?i.response(null==(r=t)?a:o(t)):r},i}function a(t){return i.parse(t.responseText)}function o(t){return function(e){return i.parse(e.responseText,t)}}function s(e){return e.map(l).join(t)}function l(t){return r.test(t)?'"'+t.replace(/\"/g,'""')+'"':t}return i.parse=function(t,e){var r;return i.parseRows(t,(function(t,n){if(r)return r(t,n-1);var i=function(e){for(var r={},n=t.length,i=0;i=l)return o;if(i)return i=!1,a;var e=c;if(34===t.charCodeAt(e)){for(var r=e;r++24?(isFinite(e)&&(clearTimeout(ge),ge=setTimeout(xe,e)),me=0):(me=1,ye(xe))}function _e(){for(var t=Date.now(),e=fe;e;)t>=e.t&&e.c(t-e.t)&&(e.c=null),e=e.n;return t}function be(){for(var t,e=fe,r=1/0;e;)e.c?(e.t1&&Ct(t[r[n-2]],t[r[n-1]],t[i])<=0;)--n;r[n++]=i}return r.slice(0,n)}function ke(t,e){return t[0]-e[0]||t[1]-e[1]}t.timer=function(){ve.apply(this,arguments)},t.timer.flush=function(){_e(),be()},t.round=function(t,e){return e?Math.round(t*(e=Math.pow(10,e)))/e:Math.round(t)},t.geom={},t.geom.hull=function(t){var e=we,r=Te;if(arguments.length)return n(t);function n(t){if(t.length<3)return[];var n,i=ue(e),a=ue(r),o=t.length,s=[],l=[];for(n=0;n=0;--n)f.push(t[s[c[n]][2]]);for(n=+h;nwt)s=s.L;else{if(!((i=a-qe(s,o))>wt)){n>-wt?(e=s.P,r=s):i>-wt?(e=s,r=s.N):e=r=s;break}if(!s.R){e=s;break}s=s.R}var l=Be(t);if(Pe.insert(e,l),e||r){if(e===r)return Ye(e),r=Be(e.site),Pe.insert(l,r),l.edge=r.edge=Ke(e.site,l.site),Ze(e),void Ze(r);if(!r)return void(l.edge=Ke(e.site,l.site));Ye(e),Ye(r);var c=e.site,u=c.x,h=c.y,p=t.x-u,f=t.y-h,d=r.site,m=d.x-u,g=d.y-h,y=2*(p*g-f*m),v=p*p+f*f,x=m*m+g*g,_={x:(g*v-f*x)/y+u,y:(p*x-m*v)/y+h};Qe(r.edge,c,d,_),l.edge=Ke(c,t,null,_),r.edge=Ke(t,d,null,_),Ze(e),Ze(r)}}function Ve(t,e){var r=t.site,n=r.x,i=r.y,a=i-e;if(!a)return n;var o=t.P;if(!o)return-1/0;var s=(r=o.site).x,l=r.y,c=l-e;if(!c)return s;var u=s-n,h=1/a-1/c,p=u/c;return h?(-p+Math.sqrt(p*p-2*h*(u*u/(-2*c)-l+c/2+i-a/2)))/h+n:(n+s)/2}function qe(t,e){var r=t.N;if(r)return Ve(r,e);var n=t.site;return n.y===e?n.x:1/0}function He(t){this.site=t,this.edges=[]}function Ge(t,e){return e.angle-t.angle}function We(){rr(this),this.x=this.y=this.arc=this.site=this.cy=null}function Ze(t){var e=t.P,r=t.N;if(e&&r){var n=e.site,i=t.site,a=r.site;if(n!==a){var o=i.x,s=i.y,l=n.x-o,c=n.y-s,u=a.x-o,h=2*(l*(g=a.y-s)-c*u);if(!(h>=-1e-12)){var p=l*l+c*c,f=u*u+g*g,d=(g*p-c*f)/h,m=(l*f-u*p)/h,g=m+s,y=Re.pop()||new We;y.arc=t,y.site=i,y.x=d+o,y.y=g+Math.sqrt(d*d+m*m),y.cy=g,t.circle=y;for(var v=null,x=De._;x;)if(y.y=s)return;if(p>d){if(a){if(a.y>=c)return}else a={x:g,y:l};r={x:g,y:c}}else{if(a){if(a.y1)if(p>d){if(a){if(a.y>=c)return}else a={x:(l-i)/n,y:l};r={x:(c-i)/n,y:c}}else{if(a){if(a.y=s)return}else a={x:o,y:n*o+i};r={x:s,y:n*s+i}}else{if(a){if(a.x0)){if(a/=p,p<0){if(a0){if(a>h)return;a>u&&(u=a)}if(a=r-l,p||!(a<0)){if(a/=p,p<0){if(a>h)return;a>u&&(u=a)}else if(p>0){if(a0)){if(a/=f,f<0){if(a0){if(a>h)return;a>u&&(u=a)}if(a=n-c,f||!(a<0)){if(a/=f,f<0){if(a>h)return;a>u&&(u=a)}else if(f>0){if(a0&&(i.a={x:l+u*p,y:c+u*f}),h<1&&(i.b={x:l+h*p,y:c+h*f}),i}}}}}}(t[0][0],t[0][1],t[1][0],t[1][1]),i=r.length;i--;)(!Xe(e=r[i],t)||!n(e)||v(e.a.x-e.b.x)wt||v(i-r)>wt)&&(s.splice(o,0,new tr(Je(a.site,u,v(n-h)wt?{x:h,y:v(e-h)wt?{x:v(r-d)wt?{x:p,y:v(e-p)wt?{x:v(r-f)=r&&c.x<=i&&c.y>=n&&c.y<=o?[[r,o],[i,o],[i,n],[r,n]]:[]).point=t[s]})),e}function s(t){return t.map((function(t,e){return{x:Math.round(n(t,e)/wt)*wt,y:Math.round(i(t,e)/wt)*wt,i:e}}))}return o.links=function(t){return or(s(t)).edges.filter((function(t){return t.l&&t.r})).map((function(e){return{source:t[e.l.i],target:t[e.r.i]}}))},o.triangles=function(t){var e=[];return or(s(t)).cells.forEach((function(r,n){for(var i,a=r.site,o=r.edges.sort(Ge),s=-1,l=o.length,c=o[l-1].edge,u=c.l===a?c.r:c.l;++sa&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:mr(r,n)})),a=vr.lastIndex;return am&&(m=l.x),l.y>g&&(g=l.y),c.push(l.x),u.push(l.y);else for(h=0;hm&&(m=_),b>g&&(g=b),c.push(_),u.push(b)}var w=m-f,T=g-d;function A(t,e,r,n,i,a,o,s){if(!isNaN(r)&&!isNaN(n))if(t.leaf){var l=t.x,c=t.y;if(null!=l)if(v(l-r)+v(c-n)<.01)k(t,e,r,n,i,a,o,s);else{var u=t.point;t.x=t.y=t.point=null,k(t,u,l,c,i,a,o,s),k(t,e,r,n,i,a,o,s)}else t.x=r,t.y=n,t.point=e}else k(t,e,r,n,i,a,o,s)}function k(t,e,r,n,i,a,o,s){var l=.5*(i+o),c=.5*(a+s),u=r>=l,h=n>=c,p=h<<1|u;t.leaf=!1,u?i=l:o=l,h?a=c:s=c,A(t=t.nodes[p]||(t.nodes[p]={leaf:!0,nodes:[],point:null,x:null,y:null}),e,r,n,i,a,o,s)}w>T?g=d+w:m=f+T;var M={leaf:!0,nodes:[],point:null,x:null,y:null,add:function(t){A(M,t,+y(t,++h),+x(t,h),f,d,m,g)},visit:function(t){pr(t,M,f,d,m,g)},find:function(t){return function(t,e,r,n,i,a,o){var s,l=1/0;return function t(c,u,h,p,f){if(!(u>a||h>o||p=b)<<1|e>=_,T=w+4;w=0&&!(n=t.interpolators[i](e,r)););return n}function _r(t,e){var r,n=[],i=[],a=t.length,o=e.length,s=Math.min(t.length,e.length);for(r=0;r=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}function Cr(t){return 1-Math.cos(t*Mt)}function Ir(t){return Math.pow(2,10*(t-1))}function Lr(t){return 1-Math.sqrt(1-t*t)}function Pr(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375}function zr(t,e){return e-=t,function(r){return Math.round(t+e*r)}}function Dr(t){var e=[t.a,t.b],r=[t.c,t.d],n=Rr(e),i=Or(e,r),a=Rr(function(t,e,r){return t[0]+=r*e[0],t[1]+=r*e[1],t}(r,e,-i))||0;e[0]*r[1]=0?t.slice(0,e):t,i=e>=0?t.slice(e+1):"in";return n=wr.get(n)||br,function(t){return function(e){return e<=0?0:e>=1?1:t(e)}}((i=Tr.get(i)||C)(n.apply(null,r.call(arguments,1))))},t.interpolateHcl=function(e,r){e=t.hcl(e),r=t.hcl(r);var n=e.h,i=e.c,a=e.l,o=r.h-n,s=r.c-i,l=r.l-a;return isNaN(s)&&(s=0,i=isNaN(i)?r.c:i),isNaN(o)?(o=0,n=isNaN(n)?r.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return Vt(n+o*t,i+s*t,a+l*t)+""}},t.interpolateHsl=function(e,r){e=t.hsl(e),r=t.hsl(r);var n=e.h,i=e.s,a=e.l,o=r.h-n,s=r.s-i,l=r.l-a;return isNaN(s)&&(s=0,i=isNaN(i)?r.s:i),isNaN(o)?(o=0,n=isNaN(n)?r.h:n):o>180?o-=360:o<-180&&(o+=360),function(t){return jt(n+o*t,i+s*t,a+l*t)+""}},t.interpolateLab=function(e,r){e=t.lab(e),r=t.lab(r);var n=e.l,i=e.a,a=e.b,o=r.l-n,s=r.a-i,l=r.b-a;return function(t){return Xt(n+o*t,i+s*t,a+l*t)+""}},t.interpolateRound=zr,t.transform=function(e){var r=i.createElementNS(t.ns.prefix.svg,"g");return(t.transform=function(t){if(null!=t){r.setAttribute("transform",t);var e=r.transform.baseVal.consolidate()}return new Dr(e?e.matrix:Fr)})(e)},Dr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var Fr={a:1,b:0,c:0,d:1,e:0,f:0};function Br(t){return t.length?t.pop()+",":""}function jr(e,r){var n=[],i=[];return e=t.transform(e),r=t.transform(r),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push("translate(",null,",",null,")");n.push({i:i-4,x:mr(t[0],e[0])},{i:i-2,x:mr(t[1],e[1])})}else(e[0]||e[1])&&r.push("translate("+e+")")}(e.translate,r.translate,n,i),function(t,e,r,n){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),n.push({i:r.push(Br(r)+"rotate(",null,")")-2,x:mr(t,e)})):e&&r.push(Br(r)+"rotate("+e+")")}(e.rotate,r.rotate,n,i),function(t,e,r,n){t!==e?n.push({i:r.push(Br(r)+"skewX(",null,")")-2,x:mr(t,e)}):e&&r.push(Br(r)+"skewX("+e+")")}(e.skew,r.skew,n,i),function(t,e,r,n){if(t[0]!==e[0]||t[1]!==e[1]){var i=r.push(Br(r)+"scale(",null,",",null,")");n.push({i:i-4,x:mr(t[0],e[0])},{i:i-2,x:mr(t[1],e[1])})}else(1!==e[0]||1!==e[1])&&r.push(Br(r)+"scale("+e+")")}(e.scale,r.scale,n,i),e=r=null,function(t){for(var e,r=-1,a=i.length;++r0?n=t:(e.c=null,e.t=NaN,e=null,l.end({type:"end",alpha:n=0})):t>0&&(l.start({type:"start",alpha:n=t}),e=ve(s.tick)),s):n},s.start=function(){var t,e,r,n=y.length,l=v.length,u=c[0],d=c[1];for(t=0;t=0;)r.push(i[n])}function tn(t,e){for(var r=[t],n=[];null!=(t=r.pop());)if(n.push(t),(a=t.children)&&(i=a.length))for(var i,a,o=-1;++o=0;)o.push(u=c[l]),u.parent=a,u.depth=a.depth+1;r&&(a.value=0),a.children=c}else r&&(a.value=+r.call(n,a,a.depth)||0),delete a.children;return tn(i,(function(e){var n,i;t&&(n=e.children)&&n.sort(t),r&&(i=e.parent)&&(i.value+=e.value)})),s}return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(Qr(t,(function(t){t.children&&(t.value=0)})),tn(t,(function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)}))),t},n},t.layout.partition=function(){var e=t.layout.hierarchy(),r=[1,1];function n(t,e,r,i){var a=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,a&&(o=a.length)){var o,s,l,c=-1;for(r=t.value?r/t.value:0;++cs&&(s=n),o.push(n)}for(r=0;ri&&(n=r,i=e);return n}function mn(t){return t.reduce(gn,0)}function gn(t,e){return t+e[1]}function yn(t,e){return vn(t,Math.ceil(Math.log(e.length)/Math.LN2+1))}function vn(t,e){for(var r=-1,n=+t[0],i=(t[1]-n)/e,a=[];++r<=e;)a[r]=i*r+n;return a}function xn(e){return[t.min(e),t.max(e)]}function _n(t,e){return t.value-e.value}function bn(t,e){var r=t._pack_next;t._pack_next=e,e._pack_prev=t,e._pack_next=r,r._pack_prev=e}function wn(t,e){t._pack_next=e,e._pack_prev=t}function Tn(t,e){var r=e.x-t.x,n=e.y-t.y,i=t.r+e.r;return.999*i*i>r*r+n*n}function An(t){if((e=t.children)&&(l=e.length)){var e,r,n,i,a,o,s,l,c=1/0,u=-1/0,h=1/0,p=-1/0;if(e.forEach(kn),(r=e[0]).x=-r.r,r.y=0,x(r),l>1&&((n=e[1]).x=n.r,n.y=0,x(n),l>2))for(En(r,n,i=e[2]),x(i),bn(r,i),r._pack_prev=i,bn(i,n),n=r._pack_next,a=3;a0)for(o=-1;++o=h[0]&&l<=h[1]&&((s=c[t.bisect(p,l,1,d)-1]).y+=m,s.push(a[o]));return c}return a.value=function(t){return arguments.length?(r=t,a):r},a.range=function(t){return arguments.length?(n=ue(t),a):n},a.bins=function(t){return arguments.length?(i="number"==typeof t?function(e){return vn(e,t)}:ue(t),a):i},a.frequency=function(t){return arguments.length?(e=!!t,a):e},a},t.layout.pack=function(){var e,r=t.layout.hierarchy().sort(_n),n=0,i=[1,1];function a(t,a){var o=r.call(this,t,a),s=o[0],l=i[0],c=i[1],u=null==e?Math.sqrt:"function"==typeof e?e:function(){return e};if(s.x=s.y=0,tn(s,(function(t){t.r=+u(t.value)})),tn(s,An),n){var h=n*(e?1:Math.max(2*s.r/l,2*s.r/c))/2;tn(s,(function(t){t.r+=h})),tn(s,An),tn(s,(function(t){t.r-=h}))}return Sn(s,l/2,c/2,e?1:1/Math.max(2*s.r/l,2*s.r/c)),o}return a.size=function(t){return arguments.length?(i=t,a):i},a.radius=function(t){return arguments.length?(e=null==t||"function"==typeof t?t:+t,a):e},a.padding=function(t){return arguments.length?(n=+t,a):n},Jr(a,r)},t.layout.tree=function(){var e=t.layout.hierarchy().sort(null).value(null),r=Cn,n=[1,1],i=null;function a(t,a){var c=e.call(this,t,a),u=c[0],h=function(t){for(var e,r={A:null,children:[t]},n=[r];null!=(e=n.pop());)for(var i,a=e.children,o=0,s=a.length;of.x&&(f=t),t.depth>d.depth&&(d=t)}));var m=r(p,f)/2-p.x,g=n[0]/(f.x+r(f,p)/2+m),y=n[1]/(d.depth||1);Qr(u,(function(t){t.x=(t.x+m)*g,t.y=t.depth*y}))}return c}function o(t){var e=t.children,n=t.parent.children,i=t.i?n[t.i-1]:null;if(e.length){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(t);var a=(e[0].z+e[e.length-1].z)/2;i?(t.z=i.z+r(t._,i._),t.m=t.z-a):t.z=a}else i&&(t.z=i.z+r(t._,i._));t.parent.A=function(t,e,n){if(e){for(var i,a=t,o=t,s=e,l=a.parent.children[0],c=a.m,u=o.m,h=s.m,p=l.m;s=Ln(s),a=In(a),s&&a;)l=In(l),(o=Ln(o)).a=t,(i=s.z+h-a.z-c+r(s._,a._))>0&&(Pn(zn(s,t,n),t,i),c+=i,u+=i),h+=s.m,c+=a.m,p+=l.m,u+=o.m;s&&!Ln(o)&&(o.t=s,o.m+=h-u),a&&!In(l)&&(l.t=a,l.m+=c-p,n=t)}return n}(t,i,t.parent.A||n[0])}function s(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function l(t){t.x*=n[0],t.y=t.depth*n[1]}return a.separation=function(t){return arguments.length?(r=t,a):r},a.size=function(t){return arguments.length?(i=null==(n=t)?l:null,a):i?null:n},a.nodeSize=function(t){return arguments.length?(i=null==(n=t)?null:l,a):i?n:null},Jr(a,e)},t.layout.cluster=function(){var e=t.layout.hierarchy().sort(null).value(null),r=Cn,n=[1,1],i=!1;function a(a,o){var s,l=e.call(this,a,o),c=l[0],u=0;tn(c,(function(e){var n=e.children;n&&n.length?(e.x=function(t){return t.reduce((function(t,e){return t+e.x}),0)/t.length}(n),e.y=function(e){return 1+t.max(e,(function(t){return t.y}))}(n)):(e.x=s?u+=r(e,s):0,e.y=0,s=e)}));var h=Dn(c),p=On(c),f=h.x-r(h,p)/2,d=p.x+r(p,h)/2;return tn(c,i?function(t){t.x=(t.x-c.x)*n[0],t.y=(c.y-t.y)*n[1]}:function(t){t.x=(t.x-f)/(d-f)*n[0],t.y=(1-(c.y?t.y/c.y:1))*n[1]}),l}return a.separation=function(t){return arguments.length?(r=t,a):r},a.size=function(t){return arguments.length?(i=null==(n=t),a):i?null:n},a.nodeSize=function(t){return arguments.length?(i=null!=(n=t),a):i?n:null},Jr(a,e)},t.layout.treemap=function(){var e,r=t.layout.hierarchy(),n=Math.round,i=[1,1],a=null,o=Rn,s=!1,l="squarify",c=.5*(1+Math.sqrt(5));function u(t,e){for(var r,n,i=-1,a=t.length;++i0;)s.push(r=c[i-1]),s.area+=r.area,"squarify"!==l||(n=f(s,m))<=p?(c.pop(),p=n):(s.area-=s.pop().area,d(s,m,a,!1),m=Math.min(a.dx,a.dy),s.length=s.area=0,p=1/0);s.length&&(d(s,m,a,!0),s.length=s.area=0),e.forEach(h)}}function p(t){var e=t.children;if(e&&e.length){var r,n=o(t),i=e.slice(),a=[];for(u(i,n.dx*n.dy/t.value),a.area=0;r=i.pop();)a.push(r),a.area+=r.area,null!=r.z&&(d(a,r.z?n.dx:n.dy,n,!i.length),a.length=a.area=0);e.forEach(p)}}function f(t,e){for(var r,n=t.area,i=0,a=1/0,o=-1,s=t.length;++oi&&(i=r));return e*=e,(n*=n)?Math.max(e*i*c/n,n/(e*a*c)):1/0}function d(t,e,r,i){var a,o=-1,s=t.length,l=r.x,c=r.y,u=e?n(t.area/e):0;if(e==r.dx){for((i||u>r.dy)&&(u=r.dy);++or.dx)&&(u=r.dx);++o1);return t+e*r*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var e=t.random.normal.apply(t,arguments);return function(){return Math.exp(e())}},bates:function(e){var r=t.random.irwinHall(e);return function(){return r()/e}},irwinHall:function(t){return function(){for(var e=0,r=0;r2?Hn:Nn,l=n?Ur:Nr;return i=o(t,e,l,r),a=o(e,t,l,xr),s}function s(t){return i(t)}return s.invert=function(t){return a(t)},s.domain=function(e){return arguments.length?(t=e.map(Number),o()):t},s.range=function(t){return arguments.length?(e=t,o()):e},s.rangeRound=function(t){return s.range(t).interpolate(zr)},s.clamp=function(t){return arguments.length?(n=t,o()):n},s.interpolate=function(t){return arguments.length?(r=t,o()):r},s.ticks=function(e){return Xn(t,e)},s.tickFormat=function(e,r){return d3_scale_linearTickFormat(t,e,r)},s.nice=function(e){return Zn(t,e),o()},s.copy=function(){return Gn(t,e,r,n)},o()}function Wn(e,r){return t.rebind(e,r,"range","rangeRound","interpolate","clamp")}function Zn(t,e){return Un(t,Vn(Yn(t,e)[2])),Un(t,Vn(Yn(t,e)[2])),t}function Yn(t,e){null==e&&(e=10);var r=Bn(t),n=r[1]-r[0],i=Math.pow(10,Math.floor(Math.log(n/e)/Math.LN10)),a=e/n*i;return a<=.15?i*=10:a<=.35?i*=5:a<=.75&&(i*=2),r[0]=Math.ceil(r[0]/i)*i,r[1]=Math.floor(r[1]/i)*i+.5*i,r[2]=i,r}function Xn(e,r){return t.range.apply(t,Yn(e,r))}function $n(t,e,r,n){function i(t){return(r?Math.log(t<0?0:t):-Math.log(t>0?0:-t))/Math.log(e)}function a(t){return r?Math.pow(e,t):-Math.pow(e,-t)}function o(e){return t(i(e))}return o.invert=function(e){return a(t.invert(e))},o.domain=function(e){return arguments.length?(r=e[0]>=0,t.domain((n=e.map(Number)).map(i)),o):n},o.base=function(r){return arguments.length?(e=+r,t.domain(n.map(i)),o):e},o.nice=function(){var e=Un(n.map(i),r?Math:Kn);return t.domain(e),n=e.map(a),o},o.ticks=function(){var t=Bn(n),o=[],s=t[0],l=t[1],c=Math.floor(i(s)),u=Math.ceil(i(l)),h=e%1?2:e;if(isFinite(u-c)){if(r){for(;c0;p--)o.push(a(c)*p);for(c=0;o[c]l;u--);o=o.slice(c,u)}return o},o.copy=function(){return $n(t.copy(),e,r,n)},Wn(o,t)}t.scale.linear=function(){return Gn([0,1],[0,1],xr,!1)},t.scale.log=function(){return $n(t.scale.linear().domain([0,1]),10,!0,[1,10])};var Kn={floor:function(t){return-Math.ceil(-t)},ceil:function(t){return-Math.floor(-t)}};function Jn(t,e,r){var n=Qn(e),i=Qn(1/e);function a(e){return t(n(e))}return a.invert=function(e){return i(t.invert(e))},a.domain=function(e){return arguments.length?(t.domain((r=e.map(Number)).map(n)),a):r},a.ticks=function(t){return Xn(r,t)},a.tickFormat=function(t,e){return d3_scale_linearTickFormat(r,t,e)},a.nice=function(t){return a.domain(Zn(r,t))},a.exponent=function(o){return arguments.length?(n=Qn(e=o),i=Qn(1/e),t.domain(r.map(n)),a):e},a.copy=function(){return Jn(t.copy(),e,r)},Wn(a,t)}function Qn(t){return function(e){return e<0?-Math.pow(-e,t):Math.pow(e,t)}}function ti(e,r){var n,i,a;function o(t){return i[((n.get(t)||("range"===r.t?n.set(t,e.push(t)):NaN))-1)%i.length]}function s(r,n){return t.range(e.length).map((function(t){return r+n*t}))}return o.domain=function(t){if(!arguments.length)return e;e=[],n=new _;for(var i,a=-1,s=t.length;++a0?n[t-1]:e[0],th?0:1;if(c=kt)return l(c,f)+(s?l(s,1-f):"")+"Z";var d,m,g,y,v,x,_,b,w,T,A,k,M=0,S=0,E=[];if((y=(+o.apply(this,arguments)||0)/2)&&(g=n===ui?Math.sqrt(s*s+c*c):+n.apply(this,arguments),f||(S*=-1),c&&(S=It(g/c*Math.sin(y))),s&&(M=It(g/s*Math.sin(y)))),c){v=c*Math.cos(u+S),x=c*Math.sin(u+S),_=c*Math.cos(h-S),b=c*Math.sin(h-S);var C=Math.abs(h-u-2*S)<=Tt?0:1;if(S&&gi(v,x,_,b)===f^C){var I=(u+h)/2;v=c*Math.cos(I),x=c*Math.sin(I),_=b=null}}else v=x=0;if(s){w=s*Math.cos(h-M),T=s*Math.sin(h-M),A=s*Math.cos(u+M),k=s*Math.sin(u+M);var L=Math.abs(u-h+2*M)<=Tt?0:1;if(M&&gi(w,T,A,k)===1-f^L){var P=(u+h)/2;w=s*Math.cos(P),T=s*Math.sin(P),A=k=null}}else w=T=0;if(p>wt&&(d=Math.min(Math.abs(c-s)/2,+r.apply(this,arguments)))>.001){m=s0?0:1}function yi(t,e,r,n,i){var a=t[0]-e[0],o=t[1]-e[1],s=(i?n:-n)/Math.sqrt(a*a+o*o),l=s*o,c=-s*a,u=t[0]+l,h=t[1]+c,p=e[0]+l,f=e[1]+c,d=(u+p)/2,m=(h+f)/2,g=p-u,y=f-h,v=g*g+y*y,x=r-n,_=u*f-p*h,b=(y<0?-1:1)*Math.sqrt(Math.max(0,x*x*v-_*_)),w=(_*y-g*b)/v,T=(-_*g-y*b)/v,A=(_*y+g*b)/v,k=(-_*g+y*b)/v,M=w-d,S=T-m,E=A-d,C=k-m;return M*M+S*S>E*E+C*C&&(w=A,T=k),[[w-l,T-c],[w*r/x,T*r/x]]}function vi(){return!0}function xi(t){var e=we,r=Te,n=vi,i=bi,a=i.key,o=.7;function s(a){var s,l=[],c=[],u=-1,h=a.length,p=ue(e),f=ue(r);function d(){l.push("M",i(t(c),o))}for(;++u1&&i.push("H",n[0]),i.join("")},"step-before":Ti,"step-after":Ai,basis:Si,"basis-open":function(t){if(t.length<4)return bi(t);for(var e,r=[],n=-1,i=t.length,a=[0],o=[0];++n<3;)e=t[n],a.push(e[0]),o.push(e[1]);for(r.push(Ei(Li,a)+","+Ei(Li,o)),--n;++n9&&(i=3*e/Math.sqrt(i),o[s]=i*r,o[s+1]=i*n);for(s=-1;++s<=l;)i=(t[Math.min(l,s+1)][0]-t[Math.max(0,s-1)][0])/(6*(1+o[s]*o[s])),a.push([i||0,o[s]*i||0]);return a}(t))}});function bi(t){return t.length>1?t.join("L"):t+"Z"}function wi(t){return t.join("L")+"Z"}function Ti(t){for(var e=0,r=t.length,n=t[0],i=[n[0],",",n[1]];++e1){s=e[1],a=t[l],l++,n+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(a[0]-s[0])+","+(a[1]-s[1])+","+a[0]+","+a[1];for(var c=2;cTt)+",1 "+e}function l(t,e,r,n){return"Q 0,0 "+n}return a.radius=function(t){return arguments.length?(r=ue(t),a):r},a.source=function(e){return arguments.length?(t=ue(e),a):t},a.target=function(t){return arguments.length?(e=ue(t),a):e},a.startAngle=function(t){return arguments.length?(n=ue(t),a):n},a.endAngle=function(t){return arguments.length?(i=ue(t),a):i},a},t.svg.diagonal=function(){var t=Ri,e=Fi,r=ji;function n(n,i){var a=t.call(this,n,i),o=e.call(this,n,i),s=(a.y+o.y)/2,l=[a,{x:a.x,y:s},{x:o.x,y:s},o];return"M"+(l=l.map(r))[0]+"C"+l[1]+" "+l[2]+" "+l[3]}return n.source=function(e){return arguments.length?(t=ue(e),n):t},n.target=function(t){return arguments.length?(e=ue(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},t.svg.diagonal.radial=function(){var e=t.svg.diagonal(),r=ji,n=e.projection;return e.projection=function(t){return arguments.length?n(function(t){return function(){var e=t.apply(this,arguments),r=e[0],n=e[1]-Mt;return[r*Math.cos(n),r*Math.sin(n)]}}(r=t)):r},e},t.svg.symbol=function(){var t=Ui,e=Ni;function r(r,n){return(qi.get(t.call(this,r,n))||Vi)(e.call(this,r,n))}return r.type=function(e){return arguments.length?(t=ue(e),r):t},r.size=function(t){return arguments.length?(e=ue(t),r):e},r};var qi=t.map({circle:Vi,cross:function(t){var e=Math.sqrt(t/5)/2;return"M"+-3*e+","+-e+"H"+-e+"V"+-3*e+"H"+e+"V"+-e+"H"+3*e+"V"+e+"H"+e+"V"+3*e+"H"+-e+"V"+e+"H"+-3*e+"Z"},diamond:function(t){var e=Math.sqrt(t/(2*Gi)),r=e*Gi;return"M0,"+-e+"L"+r+",0 0,"+e+" "+-r+",0Z"},square:function(t){var e=Math.sqrt(t)/2;return"M"+-e+","+-e+"L"+e+","+-e+" "+e+","+e+" "+-e+","+e+"Z"},"triangle-down":function(t){var e=Math.sqrt(t/Hi),r=e*Hi/2;return"M0,"+r+"L"+e+","+-r+" "+-e+","+-r+"Z"},"triangle-up":function(t){var e=Math.sqrt(t/Hi),r=e*Hi/2;return"M0,"+-r+"L"+e+","+r+" "+-e+","+r+"Z"}});t.svg.symbolTypes=qi.keys();var Hi=Math.sqrt(3),Gi=Math.tan(30*St);G.transition=function(t){for(var e,r,n=Xi||++Ji,i=ea(t),a=[],o=$i||{time:Date.now(),ease:Er,delay:0,duration:250},s=-1,l=this.length;++s0;)c[--p].call(t,o);if(a>=1)return h.event&&h.event.end.call(t,t.__data__,e),--u.count?delete u[n]:delete t[r],1}h||(a=i.time,o=ve((function(t){var e=h.delay;if(o.t=e+a,e<=t)return p(t-e);o.c=p}),0,a),h=u[n]={tween:new _,time:a,timer:o,delay:i.delay,duration:i.duration,ease:i.ease,index:e},i=null,++u.count)}Ki.call=G.call,Ki.empty=G.empty,Ki.node=G.node,Ki.size=G.size,t.transition=function(e,r){return e&&e.transition?Xi?e.transition(r):e:t.selection().transition(e)},t.transition.prototype=Ki,Ki.select=function(t){var e,r,n,i=this.id,a=this.namespace,o=[];t=W(t);for(var s=-1,l=this.length;++srect,.s>rect").attr("width",s[1]-s[0])}function m(t){t.select(".extent").attr("y",l[0]),t.selectAll(".extent,.e>rect,.w>rect").attr("height",l[1]-l[0])}function g(){var h,g,y=this,v=t.select(t.event.target),x=n.of(y,arguments),_=t.select(y),b=v.datum(),w=!/^(n|s)$/.test(b)&&i,T=!/^(e|w)$/.test(b)&&a,A=v.classed("extent"),k=vt(y),M=t.mouse(y),S=t.select(o(y)).on("keydown.brush",(function(){32==t.event.keyCode&&(A||(h=null,M[0]-=s[1],M[1]-=l[1],A=2),R())})).on("keyup.brush",(function(){32==t.event.keyCode&&2==A&&(M[0]+=s[1],M[1]+=l[1],A=0,R())}));if(t.event.changedTouches?S.on("touchmove.brush",I).on("touchend.brush",P):S.on("mousemove.brush",I).on("mouseup.brush",P),_.interrupt().selectAll("*").interrupt(),A)M[0]=s[0]-M[0],M[1]=l[0]-M[1];else if(b){var E=+/w$/.test(b),C=+/^n/.test(b);g=[s[1-E]-M[0],l[1-C]-M[1]],M[0]=s[E],M[1]=l[C]}else t.event.altKey&&(h=M.slice());function I(){var e=t.mouse(y),r=!1;g&&(e[0]+=g[0],e[1]+=g[1]),A||(t.event.altKey?(h||(h=[(s[0]+s[1])/2,(l[0]+l[1])/2]),M[0]=s[+(e[0]0))return o;do{o.push(a=new Date(+e)),i(e,n),t(e)}while(a=r)for(;t(r),!e(r);)r.setTime(r-1)}),(function(t,r){if(t>=t)if(r<0)for(;++r<=0;)for(;i(t,-1),!e(t););else for(;--r>=0;)for(;i(t,1),!e(t););}))},a&&(s.count=function(n,i){return e.setTime(+n),r.setTime(+i),t(e),t(r),Math.floor(a(e,r))},s.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?s.filter(o?function(e){return o(e)%t==0}:function(e){return s.count(0,e)%t==0}):s:null}),s}var i=n((function(){}),(function(t,e){t.setTime(+t+e)}),(function(t,e){return e-t}));i.every=function(t){return t=Math.floor(t),isFinite(t)&&t>0?t>1?n((function(e){e.setTime(Math.floor(e/t)*t)}),(function(e,r){e.setTime(+e+r*t)}),(function(e,r){return(r-e)/t})):i:null};var a=i.range,o=1e3,s=6e4,l=36e5,c=864e5,u=6048e5,h=n((function(t){t.setTime(t-t.getMilliseconds())}),(function(t,e){t.setTime(+t+e*o)}),(function(t,e){return(e-t)/o}),(function(t){return t.getUTCSeconds()})),p=h.range,f=n((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*o)}),(function(t,e){t.setTime(+t+e*s)}),(function(t,e){return(e-t)/s}),(function(t){return t.getMinutes()})),d=f.range,m=n((function(t){t.setTime(t-t.getMilliseconds()-t.getSeconds()*o-t.getMinutes()*s)}),(function(t,e){t.setTime(+t+e*l)}),(function(t,e){return(e-t)/l}),(function(t){return t.getHours()})),g=m.range,y=n((function(t){t.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*s)/c}),(function(t){return t.getDate()-1})),v=y.range;function x(t){return n((function(e){e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),(function(t,e){t.setDate(t.getDate()+7*e)}),(function(t,e){return(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*s)/u}))}var _=x(0),b=x(1),w=x(2),T=x(3),A=x(4),k=x(5),M=x(6),S=_.range,E=b.range,C=w.range,I=T.range,L=A.range,P=k.range,z=M.range,D=n((function(t){t.setDate(1),t.setHours(0,0,0,0)}),(function(t,e){t.setMonth(t.getMonth()+e)}),(function(t,e){return e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())}),(function(t){return t.getMonth()})),O=D.range,R=n((function(t){t.setMonth(0,1),t.setHours(0,0,0,0)}),(function(t,e){t.setFullYear(t.getFullYear()+e)}),(function(t,e){return e.getFullYear()-t.getFullYear()}),(function(t){return t.getFullYear()}));R.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),(function(e,r){e.setFullYear(e.getFullYear()+r*t)})):null};var F=R.range,B=n((function(t){t.setUTCSeconds(0,0)}),(function(t,e){t.setTime(+t+e*s)}),(function(t,e){return(e-t)/s}),(function(t){return t.getUTCMinutes()})),j=B.range,N=n((function(t){t.setUTCMinutes(0,0,0)}),(function(t,e){t.setTime(+t+e*l)}),(function(t,e){return(e-t)/l}),(function(t){return t.getUTCHours()})),U=N.range,V=n((function(t){t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+e)}),(function(t,e){return(e-t)/c}),(function(t){return t.getUTCDate()-1})),q=V.range;function H(t){return n((function(e){e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCDate(t.getUTCDate()+7*e)}),(function(t,e){return(e-t)/u}))}var G=H(0),W=H(1),Z=H(2),Y=H(3),X=H(4),$=H(5),K=H(6),J=G.range,Q=W.range,tt=Z.range,et=Y.range,rt=X.range,nt=$.range,it=K.range,at=n((function(t){t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCMonth(t.getUTCMonth()+e)}),(function(t,e){return e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())}),(function(t){return t.getUTCMonth()})),ot=at.range,st=n((function(t){t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),(function(t,e){t.setUTCFullYear(t.getUTCFullYear()+e)}),(function(t,e){return e.getUTCFullYear()-t.getUTCFullYear()}),(function(t){return t.getUTCFullYear()}));st.every=function(t){return isFinite(t=Math.floor(t))&&t>0?n((function(e){e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),(function(e,r){e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null};var lt=st.range;t.timeDay=y,t.timeDays=v,t.timeFriday=k,t.timeFridays=P,t.timeHour=m,t.timeHours=g,t.timeInterval=n,t.timeMillisecond=i,t.timeMilliseconds=a,t.timeMinute=f,t.timeMinutes=d,t.timeMonday=b,t.timeMondays=E,t.timeMonth=D,t.timeMonths=O,t.timeSaturday=M,t.timeSaturdays=z,t.timeSecond=h,t.timeSeconds=p,t.timeSunday=_,t.timeSundays=S,t.timeThursday=A,t.timeThursdays=L,t.timeTuesday=w,t.timeTuesdays=C,t.timeWednesday=T,t.timeWednesdays=I,t.timeWeek=_,t.timeWeeks=S,t.timeYear=R,t.timeYears=F,t.utcDay=V,t.utcDays=q,t.utcFriday=$,t.utcFridays=nt,t.utcHour=N,t.utcHours=U,t.utcMillisecond=i,t.utcMilliseconds=a,t.utcMinute=B,t.utcMinutes=j,t.utcMonday=W,t.utcMondays=Q,t.utcMonth=at,t.utcMonths=ot,t.utcSaturday=K,t.utcSaturdays=it,t.utcSecond=h,t.utcSeconds=p,t.utcSunday=G,t.utcSundays=J,t.utcThursday=X,t.utcThursdays=rt,t.utcTuesday=Z,t.utcTuesdays=tt,t.utcWednesday=Y,t.utcWednesdays=et,t.utcWeek=G,t.utcWeeks=J,t.utcYear=st,t.utcYears=lt,Object.defineProperty(t,"__esModule",{value:!0})},n("object"==typeof t&&typeof e<"u"?t:(r=r||self).d3=r.d3||{})}}),b=f({"node_modules/d3-time-format/dist/d3-time-format.js"(t,e){var r,n;r=t,n=function(t,e){function r(t){if(0<=t.y&&t.y<100){var e=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return e.setFullYear(t.y),e}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function n(t){if(0<=t.y&&t.y<100){var e=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return e.setUTCFullYear(t.y),e}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function i(t,e,r){return{y:t,m:e,d:r,H:0,M:0,S:0,L:0}}function a(t){var a=t.dateTime,o=t.date,l=t.time,c=t.periods,u=t.days,h=t.shortDays,p=t.months,vt=t.shortMonths,xt=f(c),_t=d(c),bt=f(u),wt=d(u),Tt=f(h),At=d(h),kt=f(p),Mt=d(p),St=f(vt),Et=d(vt),Ct={a:function(t){return h[t.getDay()]},A:function(t){return u[t.getDay()]},b:function(t){return vt[t.getMonth()]},B:function(t){return p[t.getMonth()]},c:null,d:O,e:O,f:N,H:R,I:F,j:B,L:j,m:U,M:V,p:function(t){return c[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:gt,s:yt,S:q,u:H,U:G,V:W,w:Z,W:Y,x:null,X:null,y:X,Y:$,Z:K,"%":mt},It={a:function(t){return h[t.getUTCDay()]},A:function(t){return u[t.getUTCDay()]},b:function(t){return vt[t.getUTCMonth()]},B:function(t){return p[t.getUTCMonth()]},c:null,d:J,e:J,f:nt,H:Q,I:tt,j:et,L:rt,m:it,M:at,p:function(t){return c[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:gt,s:yt,S:ot,u:st,U:lt,V:ct,w:ut,W:ht,x:null,X:null,y:pt,Y:ft,Z:dt,"%":mt},Lt={a:function(t,e,r){var n=Tt.exec(e.slice(r));return n?(t.w=At[n[0].toLowerCase()],r+n[0].length):-1},A:function(t,e,r){var n=bt.exec(e.slice(r));return n?(t.w=wt[n[0].toLowerCase()],r+n[0].length):-1},b:function(t,e,r){var n=St.exec(e.slice(r));return n?(t.m=Et[n[0].toLowerCase()],r+n[0].length):-1},B:function(t,e,r){var n=kt.exec(e.slice(r));return n?(t.m=Mt[n[0].toLowerCase()],r+n[0].length):-1},c:function(t,e,r){return Dt(t,a,e,r)},d:k,e:k,f:L,H:S,I:S,j:M,L:I,m:A,M:E,p:function(t,e,r){var n=xt.exec(e.slice(r));return n?(t.p=_t[n[0].toLowerCase()],r+n[0].length):-1},q:T,Q:z,s:D,S:C,u:g,U:y,V:v,w:m,W:x,x:function(t,e,r){return Dt(t,o,e,r)},X:function(t,e,r){return Dt(t,l,e,r)},y:b,Y:_,Z:w,"%":P};function Pt(t,e){return function(r){var n,i,a,o=[],l=-1,c=0,u=t.length;for(r instanceof Date||(r=new Date(+r));++l53)return null;"w"in c||(c.w=1),"Z"in c?(l=(s=n(i(c.y,0,1))).getUTCDay(),s=l>4||0===l?e.utcMonday.ceil(s):e.utcMonday(s),s=e.utcDay.offset(s,7*(c.V-1)),c.y=s.getUTCFullYear(),c.m=s.getUTCMonth(),c.d=s.getUTCDate()+(c.w+6)%7):(l=(s=r(i(c.y,0,1))).getDay(),s=l>4||0===l?e.timeMonday.ceil(s):e.timeMonday(s),s=e.timeDay.offset(s,7*(c.V-1)),c.y=s.getFullYear(),c.m=s.getMonth(),c.d=s.getDate()+(c.w+6)%7)}else("W"in c||"U"in c)&&("w"in c||(c.w="u"in c?c.u%7:"W"in c?1:0),l="Z"in c?n(i(c.y,0,1)).getUTCDay():r(i(c.y,0,1)).getDay(),c.m=0,c.d="W"in c?(c.w+6)%7+7*c.W-(l+5)%7:c.w+7*c.U-(l+6)%7);return"Z"in c?(c.H+=c.Z/100|0,c.M+=c.Z%100,n(c)):r(c)}}function Dt(t,e,r,n){for(var i,a,o=0,l=e.length,c=r.length;o=c)return-1;if(37===(i=e.charCodeAt(o++))){if(i=e.charAt(o++),!(a=Lt[i in s?e.charAt(o++):i])||(n=a(t,r,n))<0)return-1}else if(i!=r.charCodeAt(n++))return-1}return n}return Ct.x=Pt(o,Ct),Ct.X=Pt(l,Ct),Ct.c=Pt(a,Ct),It.x=Pt(o,It),It.X=Pt(l,It),It.c=Pt(a,It),{format:function(t){var e=Pt(t+="",Ct);return e.toString=function(){return t},e},parse:function(t){var e=zt(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=Pt(t+="",It);return e.toString=function(){return t},e},utcParse:function(t){var e=zt(t+="",!0);return e.toString=function(){return t},e}}}var o,s={"-":"",_:" ",0:"0"},l=/^\s*\d+/,c=/^%/,u=/[\\^$*+?|[\]().{}]/g;function h(t,e,r){var n=t<0?"-":"",i=(n?-t:t)+"",a=i.length;return n+(a68?1900:2e3),r+n[0].length):-1}function w(t,e,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return n?(t.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function T(t,e,r){var n=l.exec(e.slice(r,r+1));return n?(t.q=3*n[0]-3,r+n[0].length):-1}function A(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.m=n[0]-1,r+n[0].length):-1}function k(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.d=+n[0],r+n[0].length):-1}function M(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.m=0,t.d=+n[0],r+n[0].length):-1}function S(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.H=+n[0],r+n[0].length):-1}function E(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.M=+n[0],r+n[0].length):-1}function C(t,e,r){var n=l.exec(e.slice(r,r+2));return n?(t.S=+n[0],r+n[0].length):-1}function I(t,e,r){var n=l.exec(e.slice(r,r+3));return n?(t.L=+n[0],r+n[0].length):-1}function L(t,e,r){var n=l.exec(e.slice(r,r+6));return n?(t.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function P(t,e,r){var n=c.exec(e.slice(r,r+1));return n?r+n[0].length:-1}function z(t,e,r){var n=l.exec(e.slice(r));return n?(t.Q=+n[0],r+n[0].length):-1}function D(t,e,r){var n=l.exec(e.slice(r));return n?(t.s=+n[0],r+n[0].length):-1}function O(t,e){return h(t.getDate(),e,2)}function R(t,e){return h(t.getHours(),e,2)}function F(t,e){return h(t.getHours()%12||12,e,2)}function B(t,r){return h(1+e.timeDay.count(e.timeYear(t),t),r,3)}function j(t,e){return h(t.getMilliseconds(),e,3)}function N(t,e){return j(t,e)+"000"}function U(t,e){return h(t.getMonth()+1,e,2)}function V(t,e){return h(t.getMinutes(),e,2)}function q(t,e){return h(t.getSeconds(),e,2)}function H(t){var e=t.getDay();return 0===e?7:e}function G(t,r){return h(e.timeSunday.count(e.timeYear(t)-1,t),r,2)}function W(t,r){var n=t.getDay();return t=n>=4||0===n?e.timeThursday(t):e.timeThursday.ceil(t),h(e.timeThursday.count(e.timeYear(t),t)+(4===e.timeYear(t).getDay()),r,2)}function Z(t){return t.getDay()}function Y(t,r){return h(e.timeMonday.count(e.timeYear(t)-1,t),r,2)}function X(t,e){return h(t.getFullYear()%100,e,2)}function $(t,e){return h(t.getFullYear()%1e4,e,4)}function K(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+h(e/60|0,"0",2)+h(e%60,"0",2)}function J(t,e){return h(t.getUTCDate(),e,2)}function Q(t,e){return h(t.getUTCHours(),e,2)}function tt(t,e){return h(t.getUTCHours()%12||12,e,2)}function et(t,r){return h(1+e.utcDay.count(e.utcYear(t),t),r,3)}function rt(t,e){return h(t.getUTCMilliseconds(),e,3)}function nt(t,e){return rt(t,e)+"000"}function it(t,e){return h(t.getUTCMonth()+1,e,2)}function at(t,e){return h(t.getUTCMinutes(),e,2)}function ot(t,e){return h(t.getUTCSeconds(),e,2)}function st(t){var e=t.getUTCDay();return 0===e?7:e}function lt(t,r){return h(e.utcSunday.count(e.utcYear(t)-1,t),r,2)}function ct(t,r){var n=t.getUTCDay();return t=n>=4||0===n?e.utcThursday(t):e.utcThursday.ceil(t),h(e.utcThursday.count(e.utcYear(t),t)+(4===e.utcYear(t).getUTCDay()),r,2)}function ut(t){return t.getUTCDay()}function ht(t,r){return h(e.utcMonday.count(e.utcYear(t)-1,t),r,2)}function pt(t,e){return h(t.getUTCFullYear()%100,e,2)}function ft(t,e){return h(t.getUTCFullYear()%1e4,e,4)}function dt(){return"+0000"}function mt(){return"%"}function gt(t){return+t}function yt(t){return Math.floor(+t/1e3)}function vt(e){return o=a(e),t.timeFormat=o.format,t.timeParse=o.parse,t.utcFormat=o.utcFormat,t.utcParse=o.utcParse,o}vt({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});var xt="%Y-%m-%dT%H:%M:%S.%LZ",_t=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(xt),bt=+new Date("2000-01-01T00:00:00.000Z")?function(t){var e=new Date(t);return isNaN(e)?null:e}:t.utcParse(xt);t.isoFormat=_t,t.isoParse=bt,t.timeFormatDefaultLocale=vt,t.timeFormatLocale=a,Object.defineProperty(t,"__esModule",{value:!0})},"object"==typeof t&&typeof e<"u"?n(t,_()):n((r=r||self).d3=r.d3||{},r.d3)}}),w=f({"node_modules/d3-format/dist/d3-format.js"(t,e){var r,n;r=t,n=function(t){function e(t,e){if((r=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var r,n=t.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+t.slice(r+1)]}function r(t){return(t=e(Math.abs(t)))?t[1]:NaN}var n,i=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function a(t){if(!(e=i.exec(t)))throw new Error("invalid format: "+t);var e;return new o({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function o(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function s(t,r){var n=e(t,r);if(!n)return t+"";var i=n[0],a=n[1];return a<0?"0."+new Array(-a).join("0")+i:i.length>a+1?i.slice(0,a+1)+"."+i.slice(a+1):i+new Array(a-i.length+2).join("0")}a.prototype=o.prototype,o.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var l={"%":function(t,e){return(100*t).toFixed(e)},b:function(t){return Math.round(t).toString(2)},c:function(t){return t+""},d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:function(t,e){return t.toExponential(e)},f:function(t,e){return t.toFixed(e)},g:function(t,e){return t.toPrecision(e)},o:function(t){return Math.round(t).toString(8)},p:function(t,e){return s(100*t,e)},r:s,s:function(t,r){var i=e(t,r);if(!i)return t+"";var a=i[0],o=i[1],s=o-(n=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,l=a.length;return s===l?a:s>l?a+new Array(s-l+1).join("0"):s>0?a.slice(0,s)+"."+a.slice(s):"0."+new Array(1-s).join("0")+e(t,Math.max(0,r+s-1))[0]},X:function(t){return Math.round(t).toString(16).toUpperCase()},x:function(t){return Math.round(t).toString(16)}};function c(t){return t}var u,h=Array.prototype.map,p=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function f(t){var e=void 0===t.grouping||void 0===t.thousands?c:function(t,e){return function(r,n){for(var i=r.length,a=[],o=0,s=t[0],l=0;i>0&&s>0&&(l+s+1>n&&(s=Math.max(1,n-l)),a.push(r.substring(i-=s,i+s)),!((l+=s+1)>n));)s=t[o=(o+1)%t.length];return a.reverse().join(e)}}(h.call(t.grouping,Number),t.thousands+""),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?c:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(h.call(t.numerals,String)),f=void 0===t.percent?"%":t.percent+"",d=void 0===t.minus?"-":t.minus+"",m=void 0===t.nan?"NaN":t.nan+"";function g(t){var r=(t=a(t)).fill,c=t.align,h=t.sign,g=t.symbol,y=t.zero,v=t.width,x=t.comma,_=t.precision,b=t.trim,w=t.type;"n"===w?(x=!0,w="g"):l[w]||(void 0===_&&(_=12),b=!0,w="g"),(y||"0"===r&&"="===c)&&(y=!0,r="0",c="=");var T="$"===g?i:"#"===g&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",A="$"===g?o:/[%p]/.test(w)?f:"",k=l[w],M=/[defgprs%]/.test(w);function S(t){var i,a,o,l=T,f=A;if("c"===w)f=k(t)+f,t="";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?m:k(Math.abs(t),_),b&&(t=function(t){t:for(var e,r=t.length,n=1,i=-1;n0&&(i=0)}return i>0?t.slice(0,i)+t.slice(e+1):t}(t)),g&&0==+t&&"+"!==h&&(g=!1),l=(g?"("===h?h:d:"-"===h||"("===h?"":h)+l,f=("s"===w?p[8+n/3]:"")+f+(g&&"("===h?")":""),M)for(i=-1,a=t.length;++i(o=t.charCodeAt(i))||o>57){f=(46===o?s+t.slice(i+1):t.slice(i))+f,t=t.slice(0,i);break}}x&&!y&&(t=e(t,1/0));var S=l.length+t.length+f.length,E=S>1)+l+t+f+E.slice(S);break;default:t=E+l+t+f}return u(t)}return _=void 0===_?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_)),S.toString=function(){return t+""},S}return{format:g,formatPrefix:function(t,e){var n=g(((t=a(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(r(e)/3))),o=Math.pow(10,-i),s=p[8+i/3];return function(t){return n(o*t)+s}}}}function d(e){return u=f(e),t.format=u.format,t.formatPrefix=u.formatPrefix,u}d({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"}),t.FormatSpecifier=o,t.formatDefaultLocale=d,t.formatLocale=f,t.formatSpecifier=a,t.precisionFixed=function(t){return Math.max(0,-r(Math.abs(t)))},t.precisionPrefix=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(r(e)/3)))-r(Math.abs(t)))},t.precisionRound=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,r(e)-r(t))+1},Object.defineProperty(t,"__esModule",{value:!0})},n("object"==typeof t&&typeof e<"u"?t:(r=typeof globalThis<"u"?globalThis:r||self).d3=r.d3||{})}}),T=f({"node_modules/is-string-blank/index.js"(t,e){e.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}}}),A=f({"node_modules/fast-isnumeric/index.js"(t,e){var r=T();e.exports=function(t){var e=typeof t;if("string"===e){var n=t;if(0==(t=+t)&&r(n))return!1}else if("number"!==e)return!1;return t-t<1}}}),k=f({"src/constants/numerical.js"(t,e){e.exports={BADNUM:void 0,FP_SAFE:1e-4*Number.MAX_VALUE,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:2440587.5,ALMOST_EQUAL:.999999,LOG_CLIP:10,MINUS_SIGN:"−"}}}),M=f({"node_modules/base64-arraybuffer/dist/base64-arraybuffer.umd.js"(t,e){var r,n;r=t,n=function(t){for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=typeof Uint8Array>"u"?[]:new Uint8Array(256),n=0;n<64;n++)r[e.charCodeAt(n)]=n;t.decode=function(t){var e,n,i,a,o,s=.75*t.length,l=t.length,c=0;"="===t[t.length-1]&&(s--,"="===t[t.length-2]&&s--);var u=new ArrayBuffer(s),h=new Uint8Array(u);for(e=0;e>4,h[c++]=(15&i)<<4|a>>2,h[c++]=(3&a)<<6|63&o;return u},t.encode=function(t){var r,n=new Uint8Array(t),i=n.length,a="";for(r=0;r>2],a+=e[(3&n[r])<<4|n[r+1]>>4],a+=e[(15&n[r+1])<<2|n[r+2]>>6],a+=e[63&n[r+2]];return i%3==2?a=a.substring(0,a.length-1)+"=":i%3==1&&(a=a.substring(0,a.length-2)+"=="),a},Object.defineProperty(t,"__esModule",{value:!0})},n("object"==typeof t&&typeof e<"u"?t:(r=typeof globalThis<"u"?globalThis:r||self)["base64-arraybuffer"]={})}}),S=f({"src/lib/is_plain_object.js"(t,e){e.exports=function(t){return window&&window.process&&window.process.versions?"[object Object]"===Object.prototype.toString.call(t):"[object Object]"===Object.prototype.toString.call(t)&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}}}),E=f({"src/lib/array.js"(t){var e=M().decode,r=S(),n=Array.isArray,i=ArrayBuffer,a=DataView;function o(t){return i.isView(t)&&!(t instanceof a)}function s(t){return n(t)||o(t)}t.isTypedArray=o,t.isArrayOrTypedArray=s,t.isArray1D=function(t){return!s(t[0])},t.ensureArray=function(t,e){return n(t)||(t=[]),t.length=e,t};var l={u1c:typeof Uint8ClampedArray>"u"?void 0:Uint8ClampedArray,i1:typeof Int8Array>"u"?void 0:Int8Array,u1:typeof Uint8Array>"u"?void 0:Uint8Array,i2:typeof Int16Array>"u"?void 0:Int16Array,u2:typeof Uint16Array>"u"?void 0:Uint16Array,i4:typeof Int32Array>"u"?void 0:Int32Array,u4:typeof Uint32Array>"u"?void 0:Uint32Array,f4:typeof Float32Array>"u"?void 0:Float32Array,f8:typeof Float64Array>"u"?void 0:Float64Array};function c(t){return t.constructor===ArrayBuffer}function u(t,e,r){if(s(t)){if(s(t[0])){for(var n=r,i=0;i2)return c[e]=2|c[e],p.set(t,null);if(h){for(o=e;o0)return Math.log(t)/Math.LN10;var n=Math.log(Math.min(e[0],e[1]))/Math.LN10;return r(n)||(n=Math.log(Math.max(e[0],e[1]))/Math.LN10-6),n}}}),z=f({"src/lib/relink_private.js"(t,e){var r=E().isArrayOrTypedArray,n=S();e.exports=function t(e,i){for(var a in i){var o=i[a],s=e[a];if(s!==o)if("_"===a.charAt(0)||"function"==typeof o){if(a in e)continue;e[a]=o}else if(r(o)&&r(s)&&n(o[0])){if("customdata"===a||"ids"===a)continue;for(var l=Math.min(o.length,s.length),c=0;ce/2?t-Math.round(t/e)*e:t}}}}),O=f({"node_modules/tinycolor2/tinycolor.js"(t,e){!function(t){var r=/^\s+/,n=/\s+$/,i=0,a=t.round,o=t.min,s=t.max,l=t.random;function c(e,l){if(l=l||{},(e=e||"")instanceof c)return e;if(!(this instanceof c))return new c(e,l);var u=function(e){var i={r:0,g:0,b:0},a=1,l=null,c=null,u=null,h=!1,p=!1;return"string"==typeof e&&(e=function(t){t=t.replace(r,"").replace(n,"").toLowerCase();var e,i=!1;if(S[t])t=S[t],i=!0;else if("transparent"==t)return{r:0,g:0,b:0,a:0,format:"name"};return(e=N.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=N.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=N.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=N.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=N.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=N.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=N.hex8.exec(t))?{r:P(e[1]),g:P(e[2]),b:P(e[3]),a:R(e[4]),format:i?"name":"hex8"}:(e=N.hex6.exec(t))?{r:P(e[1]),g:P(e[2]),b:P(e[3]),format:i?"name":"hex"}:(e=N.hex4.exec(t))?{r:P(e[1]+""+e[1]),g:P(e[2]+""+e[2]),b:P(e[3]+""+e[3]),a:R(e[4]+""+e[4]),format:i?"name":"hex8"}:!!(e=N.hex3.exec(t))&&{r:P(e[1]+""+e[1]),g:P(e[2]+""+e[2]),b:P(e[3]+""+e[3]),format:i?"name":"hex"}}(e)),"object"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(i=function(t,e,r){return{r:255*I(t,255),g:255*I(e,255),b:255*I(r,255)}}(e.r,e.g,e.b),h=!0,p="%"===String(e.r).substr(-1)?"prgb":"rgb"):U(e.h)&&U(e.s)&&U(e.v)?(l=D(e.s),c=D(e.v),i=function(e,r,n){e=6*I(e,360),r=I(r,100),n=I(n,100);var i=t.floor(e),a=e-i,o=n*(1-r),s=n*(1-a*r),l=n*(1-(1-a)*r),c=i%6;return{r:255*[n,s,o,o,l,n][c],g:255*[l,n,n,s,o,o][c],b:255*[o,o,l,n,n,s][c]}}(e.h,l,c),h=!0,p="hsv"):U(e.h)&&U(e.s)&&U(e.l)&&(l=D(e.s),u=D(e.l),i=function(t,e,r){var n,i,a;function o(t,e,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t}if(t=I(t,360),e=I(e,100),r=I(r,100),0===e)n=i=a=r;else{var s=r<.5?r*(1+e):r+e-r*e,l=2*r-s;n=o(l,s,t+1/3),i=o(l,s,t),a=o(l,s,t-1/3)}return{r:255*n,g:255*i,b:255*a}}(e.h,l,u),h=!0,p="hsl"),e.hasOwnProperty("a")&&(a=e.a)),a=C(a),{ok:h,format:e.format||p,r:o(255,s(i.r,0)),g:o(255,s(i.g,0)),b:o(255,s(i.b,0)),a}}(e);this._originalInput=e,this._r=u.r,this._g=u.g,this._b=u.b,this._a=u.a,this._roundA=a(100*this._a)/100,this._format=l.format||u.format,this._gradientType=l.gradientType,this._r<1&&(this._r=a(this._r)),this._g<1&&(this._g=a(this._g)),this._b<1&&(this._b=a(this._b)),this._ok=u.ok,this._tc_id=i++}function u(t,e,r){t=I(t,255),e=I(e,255),r=I(r,255);var n,i,a=s(t,e,r),l=o(t,e,r),c=(a+l)/2;if(a==l)n=i=0;else{var u=a-l;switch(i=c>.5?u/(2-a-l):u/(a+l),a){case t:n=(e-r)/u+(e>1)+720)%360;--e;)n.h=(n.h+i)%360,a.push(c(n));return a}function M(t,e){e=e||6;for(var r=c(t).toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/e;e--;)o.push(c({h:n,s:i,v:a})),a=(a+s)%1;return o}c.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},getLuminance:function(){var e,r,n,i=this.toRgb();return e=i.r/255,r=i.g/255,n=i.b/255,.2126*(e<=.03928?e/12.92:t.pow((e+.055)/1.055,2.4))+.7152*(r<=.03928?r/12.92:t.pow((r+.055)/1.055,2.4))+.0722*(n<=.03928?n/12.92:t.pow((n+.055)/1.055,2.4))},setAlpha:function(t){return this._a=C(t),this._roundA=a(100*this._a)/100,this},toHsv:function(){var t=h(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=h(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.v);return 1==this._a?"hsv("+e+", "+r+"%, "+n+"%)":"hsva("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHsl:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=u(this._r,this._g,this._b),e=a(360*t.h),r=a(100*t.s),n=a(100*t.l);return 1==this._a?"hsl("+e+", "+r+"%, "+n+"%)":"hsla("+e+", "+r+"%, "+n+"%, "+this._roundA+")"},toHex:function(t){return p(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(t){return function(t,e,r,n,i){var o=[z(a(t).toString(16)),z(a(e).toString(16)),z(a(r).toString(16)),z(O(n))];return i&&o[0].charAt(0)==o[0].charAt(1)&&o[1].charAt(0)==o[1].charAt(1)&&o[2].charAt(0)==o[2].charAt(1)&&o[3].charAt(0)==o[3].charAt(1)?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join("")}(this._r,this._g,this._b,this._a,t)},toHex8String:function(t){return"#"+this.toHex8(t)},toRgb:function(){return{r:a(this._r),g:a(this._g),b:a(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+a(this._r)+", "+a(this._g)+", "+a(this._b)+")":"rgba("+a(this._r)+", "+a(this._g)+", "+a(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:a(100*I(this._r,255))+"%",g:a(100*I(this._g,255))+"%",b:a(100*I(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+a(100*I(this._r,255))+"%, "+a(100*I(this._g,255))+"%, "+a(100*I(this._b,255))+"%)":"rgba("+a(100*I(this._r,255))+"%, "+a(100*I(this._g,255))+"%, "+a(100*I(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(E[p(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e="#"+f(this._r,this._g,this._b,this._a),r=e,n=this._gradientType?"GradientType = 1, ":"";if(t){var i=c(t);r="#"+f(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+n+"startColorstr="+e+",endColorstr="+r+")"},toString:function(t){var e=!!t;t=t||this._format;var r=!1,n=this._a<1&&this._a>=0;return e||!n||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"hex4"!==t&&"hex8"!==t&&"name"!==t?("rgb"===t&&(r=this.toRgbString()),"prgb"===t&&(r=this.toPercentageRgbString()),("hex"===t||"hex6"===t)&&(r=this.toHexString()),"hex3"===t&&(r=this.toHexString(!0)),"hex4"===t&&(r=this.toHex8String(!0)),"hex8"===t&&(r=this.toHex8String()),"name"===t&&(r=this.toName()),"hsl"===t&&(r=this.toHslString()),"hsv"===t&&(r=this.toHsvString()),r||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},clone:function(){return c(this.toString())},_applyModification:function(t,e){var r=t.apply(null,[this].concat([].slice.call(e)));return this._r=r._r,this._g=r._g,this._b=r._b,this.setAlpha(r._a),this},lighten:function(){return this._applyModification(y,arguments)},brighten:function(){return this._applyModification(v,arguments)},darken:function(){return this._applyModification(x,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(m,arguments)},greyscale:function(){return this._applyModification(g,arguments)},spin:function(){return this._applyModification(_,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(k,arguments)},complement:function(){return this._applyCombination(b,arguments)},monochromatic:function(){return this._applyCombination(M,arguments)},splitcomplement:function(){return this._applyCombination(A,arguments)},triad:function(){return this._applyCombination(w,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},c.fromRatio=function(t,e){if("object"==typeof t){var r={};for(var n in t)t.hasOwnProperty(n)&&(r[n]="a"===n?t[n]:D(t[n]));t=r}return c(t,e)},c.equals=function(t,e){return!(!t||!e)&&c(t).toRgbString()==c(e).toRgbString()},c.random=function(){return c.fromRatio({r:l(),g:l(),b:l()})},c.mix=function(t,e,r){r=0===r?0:r||50;var n=c(t).toRgb(),i=c(e).toRgb(),a=r/100;return c({r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a})},c.readability=function(e,r){var n=c(e),i=c(r);return(t.max(n.getLuminance(),i.getLuminance())+.05)/(t.min(n.getLuminance(),i.getLuminance())+.05)},c.isReadable=function(t,e,r){var n,i,a=c.readability(t,e);switch(i=!1,n=function(t){var e,r;return"AA"!==(e=((t=t||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==e&&(e="AA"),"small"!==(r=(t.size||"small").toLowerCase())&&"large"!==r&&(r="small"),{level:e,size:r}}(r),n.level+n.size){case"AAsmall":case"AAAlarge":i=a>=4.5;break;case"AAlarge":i=a>=3;break;case"AAAsmall":i=a>=7}return i},c.mostReadable=function(t,e,r){var n,i,a,o,s=null,l=0;i=(r=r||{}).includeFallbackColors,a=r.level,o=r.size;for(var u=0;ul&&(l=n,s=c(e[u]));return c.isReadable(t,s,{level:a,size:o})||!i?s:(r.includeFallbackColors=!1,c.mostReadable(t,["#fff","#000"],r))};var S=c.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},E=c.hexNames=function(t){var e={};for(var r in t)t.hasOwnProperty(r)&&(e[t[r]]=r);return e}(S);function C(t){return t=parseFloat(t),(isNaN(t)||t<0||t>1)&&(t=1),t}function I(e,r){(function(t){return"string"==typeof t&&-1!=t.indexOf(".")&&1===parseFloat(t)})(e)&&(e="100%");var n=function(t){return"string"==typeof t&&-1!=t.indexOf("%")}(e);return e=o(r,s(0,parseFloat(e))),n&&(e=parseInt(e*r,10)/100),t.abs(e-r)<1e-6?1:e%r/parseFloat(r)}function L(t){return o(1,s(0,t))}function P(t){return parseInt(t,16)}function z(t){return 1==t.length?"0"+t:""+t}function D(t){return t<=1&&(t=100*t+"%"),t}function O(e){return t.round(255*parseFloat(e)).toString(16)}function R(t){return P(t)/255}var F,B,j,N=(B="[\\s|\\(]+("+(F="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+F+")[,|\\s]+("+F+")\\s*\\)?",j="[\\s|\\(]+("+F+")[,|\\s]+("+F+")[,|\\s]+("+F+")[,|\\s]+("+F+")\\s*\\)?",{CSS_UNIT:new RegExp(F),rgb:new RegExp("rgb"+B),rgba:new RegExp("rgba"+j),hsl:new RegExp("hsl"+B),hsla:new RegExp("hsla"+j),hsv:new RegExp("hsv"+B),hsva:new RegExp("hsva"+j),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(t){return!!N.CSS_UNIT.exec(t)}typeof e<"u"&&e.exports?e.exports=c:window.tinycolor=c}(Math)}}),R=f({"src/lib/extend.js"(t){var e=S(),r=Array.isArray;function n(t,i,a,o){var s,l,c,u,h,p,f,d=t[0],m=t.length;if(2===m&&r(d)&&r(t[1])&&0===d.length){if(f=function(t,e){var r,n;for(r=0;r=0)))return t;if(3===o)i[o]>1&&(i[o]=1);else if(i[o]>=1)return t}var s=Math.round(255*i[0])+", "+Math.round(255*i[1])+", "+Math.round(255*i[2]);return a?"rgba("+s+", "+i[3]+")":"rgb("+s+")"}a.tinyRGB=function(t){var e=t.toRgb();return"rgb("+Math.round(e.r)+", "+Math.round(e.g)+", "+Math.round(e.b)+")"},a.rgb=function(t){return a.tinyRGB(r(t))},a.opacity=function(t){return t?r(t).getAlpha():0},a.addOpacity=function(t,e){var n=r(t).toRgb();return"rgba("+Math.round(n.r)+", "+Math.round(n.g)+", "+Math.round(n.b)+", "+e+")"},a.combine=function(t,e){var n=r(t).toRgb();if(1===n.a)return r(t).toRgbString();var i=r(e||l).toRgb(),a=1===i.a?i:{r:255*(1-i.a)+i.r*i.a,g:255*(1-i.a)+i.g*i.a,b:255*(1-i.a)+i.b*i.a},o={r:a.r*(1-n.a)+n.r*n.a,g:a.g*(1-n.a)+n.g*n.a,b:a.b*(1-n.a)+n.b*n.a};return r(o).toRgbString()},a.interpolate=function(t,e,n){var i=r(t).toRgb(),a=r(e).toRgb(),o={r:n*i.r+(1-n)*a.r,g:n*i.g+(1-n)*a.g,b:n*i.b+(1-n)*a.b};return r(o).toRgbString()},a.contrast=function(t,e,n){var i=r(t);return 1!==i.getAlpha()&&(i=r(a.combine(t,l))),(i.isDark()?e?i.lighten(e):l:n?i.darken(n):s).toString()},a.stroke=function(t,e){var n=r(e);t.style({stroke:a.tinyRGB(n),"stroke-opacity":n.getAlpha()})},a.fill=function(t,e){var n=r(e);t.style({fill:a.tinyRGB(n),"fill-opacity":n.getAlpha()})},a.clean=function(t){if(t&&"object"==typeof t){var e,r,n,o,s=Object.keys(t);for(e=0;ei.max?r.set(n):r.set(+t)}},integer:{coerceFunction:function(t,r,n,i){-1===(i.extras||[]).indexOf(t)?(p(t)&&(t=f(t)),t%1||!e(t)||void 0!==i.min&&ti.max?r.set(n):r.set(+t)):r.set(t)}},string:{coerceFunction:function(t,e,r,n){if("string"!=typeof t){var i="number"==typeof t;!0!==n.strict&&i?e.set(String(t)):e.set(r)}else n.noBlank&&!t?e.set(r):e.set(t)}},color:{coerceFunction:function(t,e,n){p(t)&&(t=f(t)),r(t).isValid()?e.set(t):e.set(n)}},colorlist:{coerceFunction:function(t,e,n){Array.isArray(t)&&t.length&&t.every((function(t){return r(t).isValid()}))?e.set(t):e.set(n)}},colorscale:{coerceFunction:function(t,e,r){e.set(a.get(t,r))}},angle:{coerceFunction:function(t,r,n){p(t)&&(t=f(t)),"auto"===t?r.set("auto"):e(t)?r.set(u(+t,360)):r.set(n)}},subplotid:{coerceFunction:function(t,e,r,n){var i=n.regex||c(r);"string"==typeof t&&i.test(t)?e.set(t):e.set(r)},validateFunction:function(t,e){var r=e.dflt;return t===r||"string"==typeof t&&!!c(r).test(t)}},flaglist:{coerceFunction:function(t,e,r,n){if(-1===(n.extras||[]).indexOf(t))if("string"==typeof t){for(var i=t.split("+"),a=0;a/g),l=0;l1){var e=["LOG:"];for(t=0;t1){var i=[];for(t=0;t"),"long")}},i.warn=function(){var t;if(r.logging>0){var e=["WARN:"];for(t=0;t0){var i=[];for(t=0;t"),"stick")}},i.error=function(){var t;if(r.logging>0){var e=["ERROR:"];for(t=0;t0){var i=[];for(t=0;t"),"stick")}}}}),K=f({"src/lib/noop.js"(t,e){e.exports=function(){}}}),J=f({"src/lib/push_unique.js"(t,e){e.exports=function(t,e){if(e instanceof RegExp){for(var r=e.toString(),n=0;n0){for(var n=[],i=0;i=e&&n<=r?n:l}if("string"!=typeof n&&"number"!=typeof n)return l;n=String(n);var _=x(i),b=n.charAt(0);_&&("G"===b||"g"===b)&&(n=n.substr(1),i="");var w=_&&"chinese"===i.substr(0,7),T=n.match(w?y:g);if(!T)return l;var A=T[1],k=T[3]||"1",M=Number(T[5]||1),S=Number(T[7]||0),E=Number(T[9]||0),C=Number(T[11]||0);if(_){if(2===A.length)return l;var I;A=Number(A);try{var L=d.getComponentMethod("calendars","getCal")(i);if(w){var P="i"===k.charAt(k.length-1);k=parseInt(k,10),I=L.newDate(A,L.toMonthIndex(A,k,P),M)}else I=L.newDate(A,Number(k),M)}catch{return l}return I?(I.toJD()-f)*c+S*u+E*h+C*p:l}A=2===A.length?(Number(A)+2e3-v)%100+v:Number(A),k-=1;var z=new Date(Date.UTC(2e3,k,M,S,E));return z.setUTCFullYear(A),z.getUTCMonth()!==k||z.getUTCDate()!==M?l:z.getTime()+C*p},e=t.MIN_MS=t.dateTime2ms("-9999"),r=t.MAX_MS=t.dateTime2ms("9999-12-31 23:59:59.9999"),t.isDateTime=function(e,r){return t.dateTime2ms(e,r)!==l};var w=90*c,T=3*u,M=5*h;function S(t,e,r,n,i){if((e||r||n||i)&&(t+=" "+_(e,2)+":"+_(r,2),(n||i)&&(t+=":"+_(n,2),i))){for(var a=4;i%10==0;)a-=1,i/=10;t+="."+_(i,a)}return t}t.ms2DateTime=function(t,n,i){if("number"!=typeof t||!(t>=e&&t<=r))return l;n||(n=0);var a,s,g,y,v,_,b=Math.floor(10*o(t+.05,1)),A=Math.round(t-b/10);if(x(i)){var k=Math.floor(A/c)+f,E=Math.floor(o(t,c));try{a=d.getComponentMethod("calendars","getCal")(i).fromJD(k).formatDate("yyyy-mm-dd")}catch{a=m("G%Y-%m-%d")(new Date(A))}if("-"===a.charAt(0))for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;s=n=e+c&&t<=r-c))return l;var i=Math.floor(10*o(t+.05,1)),a=new Date(Math.round(t-i/10));return S(n("%Y-%m-%d")(a),a.getHours(),a.getMinutes(),a.getSeconds(),10*a.getUTCMilliseconds()+i)},t.cleanDate=function(e,r,n){if(e===l)return r;if(t.isJSDate(e)||"number"==typeof e&&isFinite(e)){if(x(n))return a.error("JS Dates and milliseconds are incompatible with world calendars",e),r;if(!(e=t.ms2DateTimeLocal(+e))&&void 0!==r)return r}else if(!t.isDateTime(e,n))return a.error("unrecognized date",e),r;return e};var E=/%\d?f/g,C=/%h/g,I={1:"1",2:"1",3:"2",4:"2"};function L(t,e,r,n){t=t.replace(E,(function(t){var r=Math.min(+t.charAt(1)||6,6);return(e/1e3%1+2).toFixed(r).substr(2).replace(/0+$/,"")||"0"}));var i=new Date(Math.floor(e+.05));if(t=t.replace(C,(function(){return I[r("%q")(i)]})),x(n))try{t=d.getComponentMethod("calendars","worldCalFmt")(t,e,n)}catch{return"Invalid"}return r(t)(i)}var P=[59,59.9,59.99,59.999,59.9999];t.formatDate=function(t,e,r,n,a,s){if(a=x(a)&&a,!e)if("y"===r)e=s.year;else if("m"===r)e=s.month;else{if("d"!==r)return function(t,e){var r=o(t+.05,c),n=_(Math.floor(r/u),2)+":"+_(o(Math.floor(r/h),60),2);if("M"!==e){i(e)||(e=0);var a=(100+Math.min(o(t/p,60),P[e])).toFixed(e).substr(1);e>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}(t,r)+"\n"+L(s.dayMonthYear,t,n,a);e=s.dayMonth+"\n"+s.year}return L(e,t,n,a)};var z=3*c;t.incrementMonth=function(t,e,r){r=x(r)&&r;var n=o(t,c);if(t=Math.round(t-n),r)try{var i=Math.round(t/c)+f,s=d.getComponentMethod("calendars","getCal")(r),l=s.fromJD(i);return e%12?s.add(l,e,"m"):s.add(l,e/12,"y"),(l.toJD()-f)*c+n}catch{a.error("invalid ms "+t+" in calendar "+r)}var u=new Date(t+z);return u.setUTCMonth(u.getUTCMonth()+e)+n-z},t.findExactDates=function(t,e){for(var r,n,a=0,o=0,s=0,l=0,u=x(e)&&d.getComponentMethod("calendars","getCal")(e),h=0;he}function c(t,e){return t>=e}t.findBin=function(t,n,i){if(e(n.start))return i?Math.ceil((t-n.start)/n.size-a)-1:Math.floor((t-n.start)/n.size+a);var u,h,p=0,f=n.length,d=0,m=f>1?(n[f-1]-n[0])/(f-1):1;for(h=m>=0?i?o:s:i?c:l,t+=m*a*(i?-1:1)*(m>=0?1:-1);p90&&r.log("Long binary search..."),p-1},t.sorterAsc=function(t,e){return t-e},t.sorterDes=function(t,e){return e-t},t.distinctVals=function(e){var r,n=e.slice();for(n.sort(t.sorterAsc),r=n.length-1;r>-1&&n[r]===i;r--);for(var a,o=n[r]-n[0]||1,s=o/(r||1)/1e4,l=[],c=0;c<=r;c++){var u=n[c],h=u-a;void 0===a?(l.push(u),a=u):h>s&&(o=Math.min(o,h),l.push(u),a=u)}return{vals:l,minDiff:o}},t.roundUp=function(t,e,r){for(var n,i=0,a=e.length-1,o=0,s=r?0:1,l=r?1:0,c=r?Math.ceil:Math.floor;i0&&(n=1),r&&n)return t.sort(e)}return n?t:t.reverse()},t.findIndexOfMin=function(t,e){e=e||n;for(var r,i=1/0,a=0;aa.length)&&(o=a.length),e(i)||(i=!1),r(a[0])){for(l=new Array(o),s=0;st.length-1)return t[t.length-1];var n=r%1;return n*t[Math.ceil(r)]+(1-n)*t[Math.floor(r)]}}}),Xt=f({"src/lib/angles.js"(t,e){var r=D(),n=r.mod,i=r.modHalf,a=Math.PI,o=2*a;function s(t){return Math.abs(t[1]-t[0])>o-1e-14}function l(t,e){return i(e-t,o)}function c(t,e){if(s(e))return!0;var r,i;e[0](i=n(i,o))&&(i+=o);var a=n(t,o),l=a+o;return a>=r&&a<=i||l>=r&&l<=i}function u(t,e,r,n,i,l,c){i=i||0,l=l||0;var u,h,p,f,d,m=s([r,n]);function g(t,e){return[t*Math.cos(e)+i,l-t*Math.sin(e)]}m?(u=0,h=a,p=o):r=i&&t<=a);var i,a},pathArc:function(t,e,r,n,i){return u(null,t,e,r,n,i,0)},pathSector:function(t,e,r,n,i){return u(null,t,e,r,n,i,1)},pathAnnulus:function(t,e,r,n,i,a){return u(t,e,r,n,i,a,1)}}}}),$t=f({"src/lib/anchor_utils.js"(t){t.isLeftAnchor=function(t){return"left"===t.xanchor||"auto"===t.xanchor&&t.x<=1/3},t.isCenterAnchor=function(t){return"center"===t.xanchor||"auto"===t.xanchor&&t.x>1/3&&t.x<2/3},t.isRightAnchor=function(t){return"right"===t.xanchor||"auto"===t.xanchor&&t.x>=2/3},t.isTopAnchor=function(t){return"top"===t.yanchor||"auto"===t.yanchor&&t.y>=2/3},t.isMiddleAnchor=function(t){return"middle"===t.yanchor||"auto"===t.yanchor&&t.y>1/3&&t.y<2/3},t.isBottomAnchor=function(t){return"bottom"===t.yanchor||"auto"===t.yanchor&&t.y<=1/3}}}),Kt=f({"src/lib/geometry2d.js"(t){var e,r,n,i=D().mod;function a(t,e,r,n,i,a,o,s){var l=r-t,c=i-t,u=o-i,h=n-e,p=a-e,f=s-a,d=l*f-u*h;if(0===d)return null;var m=(c*f-u*p)/d,g=(c*h-l*p)/d;return g<0||g>1||m<0||m>1?null:{x:t+l*m,y:e+h*m}}function o(t,e,r,n,i){var a=n*t+i*e;if(a<0)return n*n+i*i;if(a>r){var o=n-t,s=i-e;return o*o+s*s}var l=n*e-i*t;return l*l/r}t.segmentsIntersect=a,t.segmentDistance=function(t,e,r,n,i,s,l,c){if(a(t,e,r,n,i,s,l,c))return 0;var u=r-t,h=n-e,p=l-i,f=c-s,d=u*u+h*h,m=p*p+f*f,g=Math.min(o(u,h,d,i-t,s-e),o(u,h,d,l-t,c-e),o(p,f,m,t-i,e-s),o(p,f,m,r-i,n-s));return Math.sqrt(g)},t.getTextLocation=function(t,a,o,s){if((t!==r||s!==n)&&(e={},r=t,n=s),e[o])return e[o];var l=t.getPointAtLength(i(o-s/2,a)),c=t.getPointAtLength(i(o+s/2,a)),u=Math.atan((c.y-l.y)/(c.x-l.x)),h=t.getPointAtLength(i(o,a)),p={x:(4*h.x+l.x+c.x)/6,y:(4*h.y+l.y+c.y)/6,theta:u};return e[o]=p,p},t.clearLocationCache=function(){r=null},t.getVisibleSegment=function(t,e,r){var n,i,a=e.left,o=e.right,s=e.top,l=e.bottom,c=0,u=t.getTotalLength(),h=u;function p(e){var r=t.getPointAtLength(e);0===e?n=r:e===u&&(i=r);var c=r.xo?r.x-o:0,h=r.yl?r.y-l:0;return Math.sqrt(c*c+h*h)}for(var f=p(c);f;){if((c+=f+r)>h)return;f=p(c)}for(f=p(h);f;){if(c>(h-=f+r))return;f=p(h)}return{min:c,max:h,len:h-c,total:u,isClosed:0===c&&h===u&&Math.abs(n.x-i.x)<.1&&Math.abs(n.y-i.y)<.1}},t.findPointOnPath=function(t,e,r,n){for(var i,a,o,s=(n=n||{}).pathLength||t.getTotalLength(),l=n.tolerance||.001,c=n.iterationLimit||30,u=t.getPointAtLength(0)[r]>t.getPointAtLength(s)[r]?-1:1,h=0,p=0,f=s;h0?f=i:p=i,h++}return a}}}),Jt=f({"src/lib/throttle.js"(t){var e={};function r(t){t&&null!==t.timer&&(clearTimeout(t.timer),t.timer=null)}t.throttle=function(t,n,i){var a=e[t],o=Date.now();if(!a){for(var s in e)e[s].tsa.ts+n?l():a.timer=setTimeout((function(){l(),a.timer=null}),n)},t.done=function(t){var r=e[t];return r&&r.timer?new Promise((function(t){var e=r.onDone;r.onDone=function(){e&&e(),t(),r.onDone=null}})):Promise.resolve()},t.clear=function(n){if(n)r(e[n]),delete e[n];else for(var i in e)t.clear(i)}}}),Qt=f({"src/lib/clear_responsive.js"(t,e){e.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener("resize",t._responsiveChartHandler),delete t._responsiveChartHandler)}}}),te=f({"node_modules/is-mobile/index.js"(t,e){e.exports=a,e.exports.isMobile=a,e.exports.default=a;var r=/(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,n=/CrOS/,i=/android|ipad|playbook|silk/i;function a(t){t||(t={});let e=t.ua;if(!e&&typeof navigator<"u"&&(e=navigator.userAgent),e&&e.headers&&"string"==typeof e.headers["user-agent"]&&(e=e.headers["user-agent"]),"string"!=typeof e)return!1;let a=r.test(e)&&!n.test(e)||!!t.tablet&&i.test(e);return!a&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==e.indexOf("Macintosh")&&-1!==e.indexOf("Safari")&&(a=!0),a}}}),ee=f({"src/lib/preserve_drawing_buffer.js"(t,e){var r=A(),n=te();e.exports=function(t){var e,i;if(t&&t.hasOwnProperty("userAgent")?e=t.userAgent:(typeof navigator<"u"&&(i=navigator.userAgent),i&&i.headers&&"string"==typeof i.headers["user-agent"]&&(i=i.headers["user-agent"]),e=i),"string"!=typeof e)return!0;var a=n({ua:{headers:{"user-agent":e}},tablet:!0,featureDetect:!1});if(!a)for(var o=e.split(" "),s=1;s-1;l--){var c=o[l];if("Version/"===c.substr(0,8)){var u=c.substr(8).split(".")[0];if(r(u)&&(u=+u),u>=13)return!0}}return a}}}),re=f({"src/lib/make_trace_groups.js"(t,e){var r=x();e.exports=function(t,e,n){var i=t.selectAll("g."+n.replace(/\s/g,".")).data(e,(function(t){return t[0].trace.uid}));i.exit().remove(),i.enter().append("g").attr("class",n),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each((function(t){t[0][a]=r.select(this)})),i}}}),ne=f({"src/lib/localize.js"(t,e){var r=qt();e.exports=function(t,e){for(var n=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[n]||{}).dictionary;if(s){var l=s[e];if(l)return l}a=r.localeRegistry}var c=n.split("-")[0];if(c===n)break;n=c}return e}}}),ie=f({"src/lib/filter_unique.js"(t,e){e.exports=function(t){for(var e={},r=[],n=0,i=0;i1?(r*t+r*e)/r:t+e,i=String(n).length;if(i>16){var a=String(e).length;if(i>=String(t).length+a){var o=parseFloat(n).toPrecision(12);-1===o.indexOf("e+")&&(n=+o)}}return n}}}),se=f({"src/lib/clean_number.js"(t,e){var r=A(),n=k().BADNUM,i=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;e.exports=function(t){return"string"==typeof t&&(t=t.replace(i,"")),r(t)?Number(t):n}}}),le=f({"src/lib/index.js"(t,e){var r=x(),n=b().utcFormat,i=w().format,a=A(),o=k(),s=o.FP_SAFE,l=-s,c=o.BADNUM,u=e.exports={};u.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:"0.f"===t?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var h={};u.warnBadFormat=function(t){var e=String(t);h[e]||(h[e]=1,u.warn('encountered bad format: "'+e+'"'))},u.noFormat=function(t){return String(t)},u.numberFormat=function(t){var e;try{e=i(u.adjustFormat(t))}catch{return u.warnBadFormat(t),u.noFormat}return e},u.nestedProperty=C(),u.keyedContainer=I(),u.relativeAttr=L(),u.isPlainObject=S(),u.toLogRange=P(),u.relinkPrivateKeys=z();var p=E();u.isArrayBuffer=p.isArrayBuffer,u.isTypedArray=p.isTypedArray,u.isArrayOrTypedArray=p.isArrayOrTypedArray,u.isArray1D=p.isArray1D,u.ensureArray=p.ensureArray,u.concat=p.concat,u.maxRowLength=p.maxRowLength,u.minRowLength=p.minRowLength;var f=D();u.mod=f.mod,u.modHalf=f.modHalf;var d=Z();u.valObjectMeta=d.valObjectMeta,u.coerce=d.coerce,u.coerce2=d.coerce2,u.coerceFont=d.coerceFont,u.coercePattern=d.coercePattern,u.coerceHoverinfo=d.coerceHoverinfo,u.coerceSelectionMarkerOpacity=d.coerceSelectionMarkerOpacity,u.validate=d.validate;var m=Ht();u.dateTime2ms=m.dateTime2ms,u.isDateTime=m.isDateTime,u.ms2DateTime=m.ms2DateTime,u.ms2DateTimeLocal=m.ms2DateTimeLocal,u.cleanDate=m.cleanDate,u.isJSDate=m.isJSDate,u.formatDate=m.formatDate,u.incrementMonth=m.incrementMonth,u.dateTick0=m.dateTick0,u.dfltRange=m.dfltRange,u.findExactDates=m.findExactDates,u.MIN_MS=m.MIN_MS,u.MAX_MS=m.MAX_MS;var g=Wt();u.findBin=g.findBin,u.sorterAsc=g.sorterAsc,u.sorterDes=g.sorterDes,u.distinctVals=g.distinctVals,u.roundUp=g.roundUp,u.sort=g.sort,u.findIndexOfMin=g.findIndexOfMin,u.sortObjectKeys=Zt();var y=Yt();u.aggNums=y.aggNums,u.len=y.len,u.mean=y.mean,u.geometricMean=y.geometricMean,u.median=y.median,u.midRange=y.midRange,u.variance=y.variance,u.stdev=y.stdev,u.interp=y.interp;var v=Ct();u.init2dArray=v.init2dArray,u.transposeRagged=v.transposeRagged,u.dot=v.dot,u.translationMatrix=v.translationMatrix,u.rotationMatrix=v.rotationMatrix,u.rotationXYMatrix=v.rotationXYMatrix,u.apply3DTransform=v.apply3DTransform,u.apply2DTransform=v.apply2DTransform,u.apply2DTransform2=v.apply2DTransform2,u.convertCssMatrix=v.convertCssMatrix,u.inverseTransformMatrix=v.inverseTransformMatrix;var _=Xt();u.deg2rad=_.deg2rad,u.rad2deg=_.rad2deg,u.angleDelta=_.angleDelta,u.angleDist=_.angleDist,u.isFullCircle=_.isFullCircle,u.isAngleInsideSector=_.isAngleInsideSector,u.isPtInsideSector=_.isPtInsideSector,u.pathArc=_.pathArc,u.pathSector=_.pathSector,u.pathAnnulus=_.pathAnnulus;var T=$t();u.isLeftAnchor=T.isLeftAnchor,u.isCenterAnchor=T.isCenterAnchor,u.isRightAnchor=T.isRightAnchor,u.isTopAnchor=T.isTopAnchor,u.isMiddleAnchor=T.isMiddleAnchor,u.isBottomAnchor=T.isBottomAnchor;var M=Kt();u.segmentsIntersect=M.segmentsIntersect,u.segmentDistance=M.segmentDistance,u.getTextLocation=M.getTextLocation,u.clearLocationCache=M.clearLocationCache,u.getVisibleSegment=M.getVisibleSegment,u.findPointOnPath=M.findPointOnPath;var O=R();u.extendFlat=O.extendFlat,u.extendDeep=O.extendDeep,u.extendDeepAll=O.extendDeepAll,u.extendDeepNoArrays=O.extendDeepNoArrays;var F=$();u.log=F.log,u.warn=F.warn,u.error=F.error;var B=W();u.counterRegex=B.counter;var j=Jt();u.throttle=j.throttle,u.throttleDone=j.done,u.clearThrottle=j.clear;var N=It();function U(t){var e={};for(var r in t)for(var n=t[r],i=0;is||t=e)&&a(t)&&t>=0&&t%1==0},u.noop=K(),u.identity=Gt(),u.repeat=function(t,e){for(var r=new Array(e),n=0;nr?Math.max(r,Math.min(e,t)):Math.max(e,Math.min(r,t))},u.bBoxIntersect=function(t,e,r){return r=r||0,t.left<=e.right+r&&e.left<=t.right+r&&t.top<=e.bottom+r&&e.top<=t.bottom+r},u.simpleMap=function(t,e,r,n,i){for(var a=t.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(u.warn("randstr failed uniqueness"),l):t(e,r,n,(i||0)+1):l},u.OptionControl=function(t,e){t||(t={}),e||(e="opt");var r={optionList:[],_newoption:function(n){n[e]=t,r[n.name]=n,r.optionList.push(n)}};return r["_"+e]=t,r},u.smooth=function(t,e){if((e=Math.round(e)||0)<2)return t;var r,n,i,a,o=t.length,s=2*o,l=2*e-1,c=new Array(l),u=new Array(o);for(r=0;r=s&&(i-=s*Math.floor(i/s)),i<0?i=-1-i:i>=o&&(i=s-1-i),a+=t[i]*c[n];u[r]=a}return u},u.syncOrAsync=function(t,e,r){var n;function i(){return u.syncOrAsync(t,e,r)}for(;t.length;)if((n=(0,t.splice(0,1)[0])(e))&&n.then)return n.then(i);return r&&r(e)},u.stripTrailingSlash=function(t){return"/"===t.substr(-1)?t.substr(0,t.length-1):t},u.noneOrAll=function(t,e,r){if(t){var n,i=!1,a=!0;for(n=0;n0?e:0}))},u.fillArray=function(t,e,r,n){if(n=n||u.identity,u.isArrayOrTypedArray(t))for(var i=0;i1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l},u.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var tt=/^\w*$/;u.templateString=function(t,e){var r={};return t.replace(u.TEMPLATE_STRING_REGEX,(function(t,n){var i;return tt.test(n)?i=e[n]:(r[n]=r[n]||u.nestedProperty(e,n).get,i=r[n](!0)),void 0!==i?i:""}))};var et={max:10,count:0,name:"hovertemplate"};u.hovertemplateString=function(){return ot.apply(et,arguments)};var rt={max:10,count:0,name:"texttemplate"};u.texttemplateString=function(){return ot.apply(rt,arguments)};var nt=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/,it={max:10,count:0,name:"texttemplate",parseMultDiv:!0};u.texttemplateStringForShapes=function(){return ot.apply(it,arguments)};var at=/^[:|\|]/;function ot(t,e,r){var i=this,a=arguments;return e||(e={}),t.replace(u.TEMPLATE_STRING_REGEX,(function(t,o,s){var l="_xother"===o||"_yother"===o,c="_xother_"===o||"_yother_"===o,h="xother_"===o||"yother_"===o,p="xother"===o||"yother"===o||l||h||c,f=o;(l||c)&&(f=f.substring(1)),(h||c)&&(f=f.substring(0,f.length-1));var d,m,g,y=null,v=null;if(i.parseMultDiv){var x=function(t){var e=t.match(nt);return e?{key:e[1],op:e[2],number:Number(e[3])}:{key:t,op:null,number:null}}(f);f=x.key,y=x.op,v=x.number}if(p){if(void 0===(d=e[f]))return""}else for(g=3;g=48&&o<=57,c=s>=48&&s<=57;if(l&&(n=10*n+o-48),c&&(i=10*i+s-48),!l||!c){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var st=2e9;u.seedPseudoRandom=function(){st=2e9},u.pseudoRandom=function(){var t=st;return st=(69069*st+1)%4294967296,Math.abs(st-t)<429496729?u.pseudoRandom():st/4294967296},u.fillText=function(t,e,r){var n=Array.isArray(r)?function(t){r.push(t)}:function(t){r.text=t},i=u.extractOption(t,e,"htx","hovertext");if(u.isValidTextValue(i))return n(i);var a=u.extractOption(t,e,"tx","text");return u.isValidTextValue(a)?n(a):void 0},u.isValidTextValue=function(t){return t||0===t},u.formatPercent=function(t,e){e=e||0;for(var r=(Math.round(100*t*Math.pow(10,e))*Math.pow(.1,e)).toFixed(e)+"%",n=0;n1&&(c=1):c=0,u.strTranslate(i-c*(r+o),a-c*(n+s))+u.strScale(c)+(l?"rotate("+l+(e?"":" "+r+" "+n)+")":"")},u.setTransormAndDisplay=function(t,e){t.attr("transform",u.getTextTransform(e)),t.style("display",e.scale?null:"none")},u.ensureUniformFontSize=function(t,e){var r=u.extendFlat({},e);return r.size=Math.max(e.size,t._fullLayout.uniformtext.minsize||0),r},u.join2=function(t,e,r){var n=t.length;return n>1?t.slice(0,-1).join(e)+r+t[n-1]:t.join(e)},u.bigFont=function(t){return Math.round(1.2*t)};var lt=u.getFirefoxVersion(),ct=null!==lt&<<86;u.getPositionFromD3Event=function(){return ct?[r.event.layerX,r.event.layerY]:[r.event.offsetX,r.event.offsetY]}}}),ce=f({"build/plotcss.js"(){var t,e,r=le(),n={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(e in n)t=e.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),r.addStyleRule(t,n[e])}}),ue=f({"node_modules/is-browser/client.js"(t,e){e.exports=!0}}),he=f({"node_modules/has-hover/index.js"(t,e){var r,n=ue();r="function"==typeof window.matchMedia?!window.matchMedia("(hover: none)").matches:n,e.exports=r}}),pe=f({"node_modules/events/events.js"(t,e){var r,n="object"==typeof Reflect?Reflect:null,i=n&&"function"==typeof n.apply?n.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};r=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var a=Number.isNaN||function(t){return t!=t};function o(){o.init.call(this)}e.exports=o,e.exports.once=function(t,e){return new Promise((function(r,n){function i(r){t.removeListener(e,a),n(r)}function a(){"function"==typeof t.removeListener&&t.removeListener("error",i),r([].slice.call(arguments))}g(t,e,a,{once:!0}),"error"!==e&&function(t,e){"function"==typeof t.on&&g(t,"error",e,{once:!0})}(t,i)}))},o.EventEmitter=o,o.prototype._events=void 0,o.prototype._eventsCount=0,o.prototype._maxListeners=void 0;var s=10;function l(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function c(t){return void 0===t._maxListeners?o.defaultMaxListeners:t._maxListeners}function u(t,e,r,n){var i,a,o;if(l(r),void 0===(a=t._events)?(a=t._events=Object.create(null),t._eventsCount=0):(void 0!==a.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),a=t._events),o=a[e]),void 0===o)o=a[e]=r,++t._eventsCount;else if("function"==typeof o?o=a[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(i=c(t))>0&&o.length>i&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=t,s.type=e,s.count=o.length,function(t){console&&console.warn&&console.warn(t)}(s)}return t}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function p(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=h.bind(n);return i.listener=r,n.wrapFn=i,i}function f(t,e,r){var n=t._events;if(void 0===n)return[];var i=n[e];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(o=e[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(void 0===l)return!1;if("function"==typeof l)i(l,this,e);else{var c=l.length,u=m(l,c);for(r=0;r=0;a--)if(r[a]===e||r[a].listener===e){o=r[a].listener,i=a;break}if(i<0)return this;0===i?r.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},o.prototype.listeners=function(t){return f(this,t,!0)},o.prototype.rawListeners=function(t){return f(this,t,!1)},o.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},o.prototype.listenerCount=d,o.prototype.eventNames=function(){return this._eventsCount>0?r(this._events):[]}}}),fe=f({"src/lib/events.js"(t,e){var r=pe().EventEmitter,n={init:function(t){if(t._ev instanceof r)return t;var e=new r,n=new r;return t._ev=e,t._internalEv=n,t.on=e.on.bind(e),t.once=e.once.bind(e),t.removeListener=e.removeListener.bind(e),t.removeAllListeners=e.removeAllListeners.bind(e),t._internalOn=n.on.bind(n),t._internalOnce=n.once.bind(n),t._removeInternalListener=n.removeListener.bind(n),t._removeAllInternalListeners=n.removeAllListeners.bind(n),t.emit=function(t,r){e.emit(t,r),n.emit(t,r)},t},triggerHandler:function(t,e,r){var n=t._ev;if(n){var i=n._events[e];if(i){var a;for(i=Array.isArray(i)?i:[i],a=0;an.queueLength&&(t.undoQueue.queue.shift(),t.undoQueue.index--))},startSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!0,t.undoQueue.beginSequence=!0},stopSequence:function(t){t.undoQueue=t.undoQueue||{index:0,queue:[],sequence:!1},t.undoQueue.sequence=!1,t.undoQueue.beginSequence=!1},undo:function(t){var e,r;if(!(void 0===t.undoQueue||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=t.undoQueue.queue.length)){for(e=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,r=0;r=a.length)return!1;if(2===t.dimensions){if(r++,e.length===r)return t;var o=e[r];if(!x(o))return!1;t=a[i][o]}else t=a[i]}else t=a}}return t}function x(t){return t===Math.round(t)&&t>=0}function _(){var t,r,n={};for(t in c(n,i),e.subplotsRegistry)if((r=e.subplotsRegistry[t]).layoutAttributes)if(Array.isArray(r.attr))for(var a=0;a=a&&(i._input||{})._templateitemname;s&&(o=a);var l,c=r+"["+o+"]";function u(){l={},s&&(l[c]={},l[c][n]=s)}function h(t,r){s?e.nestedProperty(l[c],t).set(r):l[c+"."+t]=r}function p(){var t=l;return u(),t}return u(),{modifyBase:function(t,e){l[t]=e},modifyItem:h,getUpdateObj:p,applyUpdate:function(r,n){r&&h(r,n);var i=p();for(var a in i)e.nestedProperty(t,a).set(i[a])}}}}}),ve=f({"src/plots/cartesian/constants.js"(t,e){var r=W().counter;e.exports={idRegex:{x:r("x","( domain)?"),y:r("y","( domain)?")},attrRegex:r("[xy]axis"),xAxisMatch:r("xaxis"),yAxisMatch:r("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}}}),xe=f({"src/plots/cartesian/axis_ids.js"(t){var e=qt(),r=ve();function n(t,e){if(e&&e.length)for(var r=0;rn?1:-1:+(t.substr(1)||1)-+(e.substr(1)||1)},t.ref2id=function(t){return!!/^[xyz]/.test(t)&&t.split(" ")[0]},t.isLinked=function(t,e){return n(e,t._axisMatchGroups)||n(e,t._axisConstraintGroups)}}}),_e=f({"src/components/shapes/handle_outline.js"(t,e){e.exports={clearOutlineControllers:function(t){var e=t._fullLayout._zoomlayer;e&&e.selectAll(".outline-controllers").remove()},clearOutline:function(t){var e=t._fullLayout._zoomlayer;e&&e.selectAll(".select-outline").remove(),t._fullLayout._outlining=!1}}}}),be=f({"src/traces/scatter/layout_attributes.js"(t,e){e.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}}}),we=f({"src/plots/get_data.js"(t){var e=qt();ve().SUBPLOT_PATTERN,t.getSubplotCalcData=function(t,r,n){var i=e.subplotsRegistry[r];if(!i)return[];for(var a=i.attr,o=[],s=0;s0?".":"")+a;r.isPlainObject(s)?o(s,e,l,i+1):e(l,a,s)}}))}t.manageCommandObserver=function(e,i,a,o){var s={},l=!0;i&&i._commandObserver&&(s=i._commandObserver),s.cache||(s.cache={}),s.lookupTable={};var c=t.hasSimpleAPICommandBindings(e,a,s.lookupTable);if(i&&i._commandObserver){if(c)return s;if(i._commandObserver.remove)return i._commandObserver.remove(),i._commandObserver=null,s}if(c){n(e,c,s.cache),s.check=function(){if(l){var t=n(e,c,s.cache);return t.changed&&o&&void 0!==s.lookupTable[t.value]&&(s.disable(),Promise.resolve(o({value:t.value,type:c.type,prop:c.prop,traces:c.traces,index:s.lookupTable[t.value]})).then(s.enable,s.enable)),t.changed}};for(var u=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],h=0;h=e.width-20?(a["text-anchor"]="start",a.x=5):(a["text-anchor"]="end",a.x=e._paper.attr("width")-7),n.attr(a);var o=n.select(".js-link-to-tool"),s=n.select(".js-link-spacer"),l=n.select(".js-sourcelinks");t._context.showSources&&t._context.showSources(t),t._context.showLink&&function(t,e){e.text("");var r=e.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(t._context.linkText+" »");if(t._context.sendData)r.on("click",(function(){S.sendDataToCloud(t)}));else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}(t,o),s.text(o.text()&&l.text()?" - ":"")}},S.sendDataToCloud=function(t){var e=(window.PLOTLYENV||{}).BASE_URL||t._context.plotlyServerURL;if(e){t.emit("plotly_beforeexport");var n=r.select(t).append("div").attr("id","hiddenform").style("display","none"),i=n.append("form").attr({action:e+"/external",method:"post",target:"_blank"});return i.append("input").attr({type:"text",name:"data"}).node().value=S.graphJson(t,!1,"keepdata"),i.node().submit(),n.remove(),t.emit("plotly_afterexport"),!1}};var C=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],I=["year","month","dayMonth","dayMonthYear"];function L(t,e){var r=t._context.locale;r||(r="en-US");var n=!1,i={};function a(t){for(var r=!0,a=0;a1&&z.length>1){for(s.getComponentMethod("grid","sizeDefaults")(c,l),o=0;o15&&z.length>15&&0===l.shapes.length&&0===l.images.length,S.linkSubplots(p,l,h,a),S.cleanPlot(p,l,h,a);var j=!(!a._has||!a._has("cartesian")),N=!(!l._has||!l._has("cartesian"));j&&!N?a._bgLayer.remove():N&&!j&&(l._shouldCreateBgLayer=!0),a._zoomlayer&&!t._dragging&&d({_fullLayout:a}),function(t,e){var r,n=[];e.meta&&(r=e._meta={meta:e.meta,layout:{meta:e.meta}});for(var i=0;i0){var h=1-2*s;n=Math.round(h*n),i=Math.round(h*i)}}var p=S.layoutAttributes.width.min,f=S.layoutAttributes.height.min;n1,m=!e.height&&Math.abs(r.height-i)>1;(m||d)&&(d&&(r.width=n),m&&(r.height=i)),t._initialAutoSize||(t._initialAutoSize={width:n,height:i}),S.sanitizeMargins(r)},S.supplyLayoutModuleDefaults=function(t,e,r,n){var i,a,o,l=s.componentsRegistry,c=e._basePlotModules,h=s.subplotsRegistry.cartesian;for(i in l)(o=l[i]).includeBasePlot&&o.includeBasePlot(t,e);for(var p in c.length||c.push(h),e._has("cartesian")&&(s.getComponentMethod("grid","contentDefaults")(t,e),h.finalizeSubplots(t,e)),e._subplots)e._subplots[p].sort(u.subplotSort);for(a=0;a1&&(r.l/=y,r.r/=y)}if(f){var v=(r.t+r.b)/f;v>1&&(r.t/=v,r.b/=v)}var x=void 0!==r.xl?r.xl:r.x,_=void 0!==r.xr?r.xr:r.x,b=void 0!==r.yt?r.yt:r.y,w=void 0!==r.yb?r.yb:r.y;d[e]={l:{val:x,size:r.l+g},r:{val:_,size:r.r+g},b:{val:w,size:r.b+g},t:{val:b,size:r.t+g}},m[e]=1}else delete d[e],delete m[e];if(!n._replotting)return S.doAutoMargin(t)}},S.doAutoMargin=function(t){var e=t._fullLayout,r=e.width,n=e.height;e._size||(e._size={}),D(e);var i=e._size,o=e.margin,l={t:0,b:0,l:0,r:0},c=u.extendFlat({},i),h=o.l,p=o.r,d=o.t,m=o.b,g=e._pushmargin,y=e._pushmarginIds,v=e.minreducedwidth,x=e.minreducedheight;if(!1!==o.autoexpand){for(var _ in g)y[_]||delete g[_];var b=t._fullLayout._reservedMargin;for(var w in b)for(var T in b[w]){var A=b[w][T];l[T]=Math.max(l[T],A)}for(var k in g.base={l:{val:0,size:h},r:{val:1,size:p},t:{val:1,size:d},b:{val:0,size:m}},l){var M=0;for(var E in g)"base"!==E&&a(g[E][k].size)&&(M=g[E][k].size>M?g[E][k].size:M);var C=Math.max(0,o[k]-M);l[k]=Math.max(0,l[k]-C)}for(var I in g){var L=g[I].l||{},P=g[I].b||{},z=L.val,O=L.size,R=P.val,F=P.size,B=r-l.r-l.l,j=n-l.t-l.b;for(var N in g){if(a(O)&&g[N].r){var U=g[N].r.val,V=g[N].r.size;if(U>z){var q=(O*U+(V-B)*z)/(U-z),H=(V*(1-z)+(O-B)*(1-U))/(U-z);q+H>h+p&&(h=q,p=H)}}if(a(F)&&g[N].t){var G=g[N].t.val,W=g[N].t.size;if(G>R){var Z=(F*G+(W-j)*R)/(G-R),Y=(W*(1-R)+(F-j)*(1-G))/(G-R);Z+Y>m+d&&(m=Z,d=Y)}}}}}var X=u.constrain(r-o.l-o.r,2,v),$=u.constrain(n-o.t-o.b,2,x),K=Math.max(0,r-X),J=Math.max(0,n-$);if(K){var Q=(h+p)/K;Q>1&&(h/=Q,p/=Q)}if(J){var tt=(m+d)/J;tt>1&&(m/=tt,d/=tt)}if(i.l=Math.round(h)+l.l,i.r=Math.round(p)+l.r,i.t=Math.round(d)+l.t,i.b=Math.round(m)+l.b,i.p=Math.round(o.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!e._replotting&&(S.didMarginChange(c,i)||function(t){if("_redrawFromAutoMarginCount"in t._fullLayout)return!1;var e=f.list(t,"",!0);for(var r in e)if(e[r].autoshift||e[r].shift)return!0;return!1}(t))){"_redrawFromAutoMarginCount"in e?e._redrawFromAutoMarginCount++:e._redrawFromAutoMarginCount=1;var et=3*(1+Object.keys(y).length);if(e._redrawFromAutoMarginCount0&&(t._transitioningWithDuration=!0),t._transitionData._interruptCallbacks.push((function(){n=!0})),r.redraw&&t._transitionData._interruptCallbacks.push((function(){return s.call("redraw",t)})),t._transitionData._interruptCallbacks.push((function(){t.emit("plotly_transitioninterrupted",[])}));var a=0,o=0;function l(){return a++,function(){o++,!n&&o===a&&function(e){t._transitionData&&(function(t){if(t)for(;t.length;)t.shift()}(t._transitionData._interruptCallbacks),Promise.resolve().then((function(){if(r.redraw)return s.call("redraw",t)})).then((function(){t._transitioning=!1,t._transitioningWithDuration=!1,t.emit("plotly_transitioned",[])})).then(e))}(i)}}r.runFn(l),setTimeout(l())}))}],a=u.syncOrAsync(i,t);return(!a||!a.then)&&(a=Promise.resolve()),a.then((function(){return t}))}S.didMarginChange=function(t,e){for(var r=0;r1)return!0}return!1},S.graphJson=function(t,e,r,n,i,a){(i&&e&&!t._fullData||i&&!e&&!t._fullLayout)&&S.supplyDefaults(t);var s=i?t._fullData:t.data,l=i?t._fullLayout:t.layout,c=(t._transitionData||{})._frames;function h(t,e){if("function"==typeof t)return e?"_function_":null;if(u.isPlainObject(t)){var n,i={};return Object.keys(t).sort().forEach((function(a){if(-1===["_","["].indexOf(a.charAt(0))){if("function"==typeof t[a])return void(e&&(i[a]="_function"));if("keepdata"===r){if("src"===a.substr(a.length-3))return}else if("keepstream"===r){if("string"==typeof(n=t[a+"src"])&&n.indexOf(":")>0&&!u.isPlainObject(t.stream))return}else if("keepall"!==r&&"string"==typeof(n=t[a+"src"])&&n.indexOf(":")>0)return;i[a]=h(t[a],e)}})),i}var a=Array.isArray(t),s=u.isTypedArray(t);if((a||s)&&t.dtype&&t.shape){var l=t.bdata;return h({dtype:t.dtype,shape:t.shape,bdata:u.isArrayBuffer(l)?o.encode(l):l},e)}return a?t.map((function(t){return h(t,e)})):s?u.simpleMap(t,u.identity):u.isJSDate(t)?u.ms2DateTimeLocal(+t):t}var p={data:(s||[]).map((function(t){var r=h(t);return e&&delete r.fit,r}))};if(!e&&(p.layout=h(l),i)){var f=l._size;p.layout.computed={margin:{b:f.b,l:f.l,r:f.r,t:f.t}}}return c&&(p.frames=h(c)),a&&(p.config=h(t._context,!0)),"object"===n?p:JSON.stringify(p)},S.modifyFrames=function(t,e){var r,n,i,a=t._transitionData._frames,o=t._transitionData._frameHash;for(r=0;r=0;a--)if(s[a].enabled){r._indexToPoints=s[a]._indexToPoints;break}n&&n.calc&&(o=n.calc(t,r))}(!Array.isArray(o)||!o[0])&&(o=[{x:p,y:p}]),o[0].t||(o[0].t={}),o[0].trace=r,d[e]=o}}for(j(o,c,h),i=0;il||m>c)&&(o.style("overflow","hidden"),f=(p=o.node().getBoundingClientRect()).width,m=p.height);var g=+d.attr("x"),y=+d.attr("y"),v=-(i||d.node().getBoundingClientRect().height)/4;if("y"===P[0])s.attr({transform:"rotate("+[-90,g,y]+")"+n(-f/2,v-m/2)});else if("l"===P[0])y=v-m/2;else if("a"===P[0]&&0!==P.indexOf("atitle"))g=0,y=v;else{var x=d.attr("text-anchor");g-=f*("middle"===x?.5:"end"===x?1:0),y=y+v-m/2}o.attr({x:g,y}),M&&M.call(d,s),t(s)}))}))):z(),d}function z(){L.empty()||(P=d.attr("class")+"-math",L.select("svg."+P).remove()),d.text("").style("white-space","pre");var n=function(t,n){n=n.replace(m," ");var o,s=!1,l=[],c=-1;function d(){c++;var r=document.createElementNS(i.svg,"tspan");e.select(r).attr({class:"line",dy:c*a+"em"}),t.appendChild(r),o=r;var n=l;if(l=[{node:r}],n.length>1)for(var s=1;s doesnt match end tag <"+t+">. Pretending it did match.",n),o=l[l.length-1].node}else r.log("Ignoring unexpected end tag .",n)}v.test(n)?d():(o=t,l=[{node:t}]);for(var I=n.split(g),L=0;L|>|>)/g,c=[["$","$"],["\\(","\\)"]],u={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},h={sub:"0.3em",sup:"-0.6em"},p={sub:"-0.21em",sup:"0.42em"},f="​",d=["http:","https:","mailto:","",void 0,":"],m=t.NEWLINES=/(\r\n?|\n)/g,g=/(<[^<>]*>)/,y=/<(\/?)([^ >]*)(\s+(.*))?>/i,v=//i;t.BR_TAG_ALL=//gi;var _=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,b=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,w=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,T=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function A(t,e){if(!t)return null;var r=t.match(e),n=r&&(r[3]||r[4]);return n&&E(n)}var k=/(^|;)\s*color:/;t.plainText=function(t,e){for(var r=void 0!==(e=e||{}).len&&-1!==e.len?e.len:1/0,n=void 0!==e.allowedTags?e.allowedTags:["br"],i=t.split(g),a=[],o="",s=0,l=0;l3?a.push(c.substr(0,f-3)+"..."):a.push(c.substr(0,f));break}o=""}}return a.join("")};var M={mu:"μ",amp:"&",lt:"<",gt:">",nbsp:" ",times:"×",plusmn:"±",deg:"°"},S=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function E(t){return t.replace(S,(function(t,e){var r;return r="#"===e.charAt(0)?function(t){if(!(t>1114111)){var e=String.fromCodePoint;if(e)return e(t);var r=String.fromCharCode;return t<=65535?r(t):r(55232+(t>>10),t%1024+56320)}}("x"===e.charAt(1)?parseInt(e.substr(2),16):parseInt(e.substr(1),10)):M[e],r||t}))}function C(t){var e=encodeURI(decodeURI(t)),r=document.createElement("a"),n=document.createElement("a");r.href=t,n.href=e;var i=r.protocol,a=n.protocol;return-1!==d.indexOf(i)&&-1!==d.indexOf(a)?e:""}function I(t,e,n){var i,a,o,s=n.horizontalAlign,l=n.verticalAlign||"top",c=t.node().getBoundingClientRect(),u=e.node().getBoundingClientRect();return a="bottom"===l?function(){return c.bottom-i.height}:"middle"===l?function(){return c.top+(c.height-i.height)/2}:function(){return c.top},o="right"===s?function(){return c.right-i.width}:"center"===s?function(){return c.left+(c.width-i.width)/2}:function(){return c.left},function(){i=this.node().getBoundingClientRect();var t=o()-u.left,e=a()-u.top,s=n.gd||{};if(n.gd){s._fullLayout._calcInverseTransform(s);var l=r.apply3DTransform(s._fullLayout._invTransform)(t,e);t=l[0],e=l[1]}return this.style({top:e+"px",left:t+"px","z-index":1e3}),this}}t.convertEntities=E,t.sanitizeHTML=function(t){t=t.replace(m," ");for(var r=document.createElement("p"),n=r,i=[],a=t.split(g),o=0;o=0;n--,i++){var a=t[n];r[i]=[1-a[0],a[1]]}return r}function f(t,e){e=e||{};for(var a=t.domain,s=t.range,l=s.length,c=new Array(l),u=0;um-f?f=m-(d-m):d-m=0?s.colorscale.sequential:s.colorscale.sequentialminus,h._sync("colorscale",o))}}}),Ze=f({"src/components/colorscale/index.js"(t,e){var r=V(),n=Ee();e.exports={moduleType:"component",name:"colorscale",attributes:Pe(),layoutAttributes:ze(),supplyLayoutDefaults:He(),handleDefaults:qe(),crossTraceDefaults:Ge(),calc:We(),scales:r.scales,defaultScale:r.defaultScale,getScale:r.get,isValidScale:r.isValid,hasColorscale:n.hasColorscale,extractOpts:n.extractOpts,extractScale:n.extractScale,flipScale:n.flipScale,makeColorScaleFunc:n.makeColorScaleFunc,makeColorScaleFuncFromTrace:n.makeColorScaleFuncFromTrace}}}),Ye=f({"src/traces/scatter/subtypes.js"(t,e){var r=le(),n=E().isTypedArraySpec;e.exports={hasLines:function(t){return t.visible&&t.mode&&-1!==t.mode.indexOf("lines")},hasMarkers:function(t){return t.visible&&(t.mode&&-1!==t.mode.indexOf("markers")||"splom"===t.type)},hasText:function(t){return t.visible&&t.mode&&-1!==t.mode.indexOf("text")},isBubble:function(t){var e=t.marker;return r.isPlainObject(e)&&(r.isArrayOrTypedArray(e.size)||n(e.size))}}}}),Xe=f({"src/traces/scatter/make_bubble_size_func.js"(t,e){var r=A();e.exports=function(t,e){e||(e=2);var n=t.marker,i=n.sizeref||1,a=n.sizemin||0,o="area"===n.sizemode?function(t){return Math.sqrt(t/i)}:function(t){return t/i};return function(t){var n=o(t/e);return r(n)&&n>0?Math.max(n,a):0}}}}),$e=f({"src/components/fx/helpers.js"(t){var e=le();t.getSubplot=function(t){return t.subplot||t.xaxis+t.yaxis||t.geo},t.isTraceInSubplots=function(e,r){if("splom"===e.type){for(var n=e.xaxes||[],i=e.yaxes||[],a=0;a=0&&r.index2&&(e.push([n].concat(a.splice(0,2))),o="l",n="m"==n?"l":"L");;){if(a.length==r[o])return a.unshift(n),e.push(a);if(a.length=200?"M0,0.5L0.5,0L0,-0.5L-0.5,0Z":"")}v.symbolNumber=function(t){if(a(t))t=+t;else if("string"==typeof t){var e=0;t.indexOf("-open")>0&&(e=100,t=t.replace("-open","")),t.indexOf("-dot")>0&&(e+=200,t=t.replace("-dot","")),(t=v.symbolNames.indexOf(t))>=0&&(t+=e)}return t%100>=k||t>=400?0:Math.floor(Math.max(t,0))};var S=i("~f"),E={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};function C(t,e,i,a,s,c,u,h,p,f){var d,m=s.length;"linear"===a?d={node:"linearGradient",attrs:{x1:u.x,y1:u.y,x2:h.x,y2:h.y,gradientUnits:p?"userSpaceOnUse":"objectBoundingBox"},reversed:f}:"radial"===a&&(d={node:"radialGradient",reversed:f});for(var g=new Array(m),y=0;y=0&&void 0===t.i&&(t.i=o.i),e.style("opacity",i.selectedOpacityFn?i.selectedOpacityFn(t):void 0===t.mo?s.opacity:t.mo),i.ms2mrc){var u;u="various"===t.ms||"various"===s.size?3:i.ms2mrc(t.ms),t.mrc=u,i.selectedSizeFn&&(u=t.mrc=i.selectedSizeFn(t));var h=v.symbolNumber(t.mx||s.symbol)||0;t.om=h%200>=100;var p=st(t,r),f=$(t,r);e.attr("d",M(h,u,p,f))}var d,m,g,y=!1;if(t.so)g=c.outlierwidth,m=c.outliercolor,d=s.outliercolor;else{var x=(c||{}).width;g=(t.mlw+1||x+1||(t.trace?(t.trace.marker.line||{}).width:0)+1)-1||0,m="mlc"in t?t.mlcc=i.lineScale(t.mlc):n.isArrayOrTypedArray(c.color)?l.defaultLine:c.color,n.isArrayOrTypedArray(s.color)&&(d=l.defaultLine,y=!0),d="mc"in t?t.mcc=i.markerScale(t.mc):s.color||s.colors||"rgba(0,0,0,0)",i.selectedColorFn&&(d=i.selectedColorFn(t))}if(t.om)e.call(l.stroke,d).style({"stroke-width":(g||1)+"px",fill:"none"});else{e.style("stroke-width",(t.isBlank?0:g)+"px");var _=s.gradient,b=t.mgt;b?y=!0:b=_&&_.type,n.isArrayOrTypedArray(b)&&(b=b[0],E[b]||(b=0));var w=s.pattern,T=w&&v.getPatternAttr(w.shape,t.i,"");if(b&&"none"!==b){var A=t.mgc;A?y=!0:A=_.color;var k=r.uid;y&&(k+="-"+t.i),v.gradient(e,a,k,b,[[0,A],[1,d]],"fill")}else if(T){var S=!1,C=w.fgcolor;!C&&o&&o.color&&(C=o.color,S=!0);var I=v.getPatternAttr(C,t.i,o&&o.color||null),L=v.getPatternAttr(w.bgcolor,t.i,null),P=w.fgopacity,z=v.getPatternAttr(w.size,t.i,8),D=v.getPatternAttr(w.solidity,t.i,.3);S=S||t.mcc||n.isArrayOrTypedArray(w.shape)||n.isArrayOrTypedArray(w.bgcolor)||n.isArrayOrTypedArray(w.fgcolor)||n.isArrayOrTypedArray(w.size)||n.isArrayOrTypedArray(w.solidity);var O=r.uid;S&&(O+="-"+t.i),v.pattern(e,"point",a,O,T,z,D,t.mcc,w.fillmode,L,I,P)}else n.isArrayOrTypedArray(d)?l.fill(e,d[t.i]):l.fill(e,d);g&&l.stroke(e,m)}},v.makePointStyleFns=function(t){var e={},r=t.marker;return e.markerScale=v.tryColorscale(r,""),e.lineScale=v.tryColorscale(r,"line"),s.traceIs(t,"symbols")&&(e.ms2mrc=m.isBubble(t)?g(t):function(){return(r.size||6)/2}),t.selectedpoints&&n.extendFlat(e,v.makeSelectedPointStyleFns(t)),e},v.makeSelectedPointStyleFns=function(t){var e={},r=t.selected||{},i=t.unselected||{},a=t.marker||{},o=r.marker||{},l=i.marker||{},c=a.opacity,u=o.opacity,h=l.opacity,p=void 0!==u,f=void 0!==h;(n.isArrayOrTypedArray(c)||p||f)&&(e.selectedOpacityFn=function(t){var e=void 0===t.mo?a.opacity:t.mo;return t.selected?p?u:e:f?h:d*e});var m=a.color,g=o.color,y=l.color;(g||y)&&(e.selectedColorFn=function(t){var e=t.mcc||m;return t.selected?g||e:y||e});var v=a.size,x=o.size,_=l.size,b=void 0!==x,w=void 0!==_;return s.traceIs(t,"symbols")&&(b||w)&&(e.selectedSizeFn=function(t){var e=t.mrc||v/2;return t.selected?b?x/2:e:w?_/2:e}),e},v.makeSelectedTextStyleFns=function(t){var e={},r=t.selected||{},n=t.unselected||{},i=t.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,c=a.color,u=o.color;return e.selectedTextColorFn=function(t){var e=t.tc||s;return t.selected?c||e:u||(c?e:l.addOpacity(e,d))},e},v.selectedPointStyle=function(t,e){if(t.size()&&e.selectedpoints){var n=v.makeSelectedPointStyleFns(e),i=e.marker||{},a=[];n.selectedOpacityFn&&a.push((function(t,e){t.style("opacity",n.selectedOpacityFn(e))})),n.selectedColorFn&&a.push((function(t,e){l.fill(t,n.selectedColorFn(e))})),n.selectedSizeFn&&a.push((function(t,r){var a=r.mx||i.symbol||0,o=n.selectedSizeFn(r);t.attr("d",M(v.symbolNumber(a),o,st(r,e),$(r,e))),r.mrc2=o})),a.length&&t.each((function(t){for(var e=r.select(this),n=0;n0?r:0}function R(t,e,r){return r&&(t=V(t)),e?B(t[1]):F(t[0])}function F(t){var e=r.round(t,2);return I=e,e}function B(t){var e=r.round(t,2);return L=e,e}function j(t,e,r,n){var i=t[0]-e[0],a=t[1]-e[1],o=r[0]-e[0],s=r[1]-e[1],l=Math.pow(i*i+a*a,.25),c=Math.pow(o*o+s*s,.25),u=(c*c*i-l*l*o)*n,h=(c*c*a-l*l*s)*n,p=3*c*(l+c),f=3*l*(l+c);return[[F(e[0]+(p&&u/p)),B(e[1]+(p&&h/p))],[F(e[0]-(f&&u/f)),B(e[1]-(f&&h/f))]]}v.textPointStyle=function(t,e,i){if(t.size()){var a;if(e.selectedpoints){var o=v.makeSelectedTextStyleFns(e);a=o.selectedTextColorFn}var s=e.texttemplate,l=i._fullLayout;t.each((function(t){var o=r.select(this),c=s?n.extractOption(t,e,"txt","texttemplate"):n.extractOption(t,e,"tx","text");if(c||0===c){if(s){var u=e._module.formatLabels,p=u?u(t,e,l):{},f={};y(f,e,t.i);var d=e._meta||{};c=n.texttemplateString(c,p,l._d3locale,f,t,d)}var m=t.tp||e.textposition,g=D(t,e),x=a?a(t):t.tc||e.textfont.color;o.call(v.font,{family:t.tf||e.textfont.family,weight:t.tw||e.textfont.weight,style:t.ty||e.textfont.style,variant:t.tv||e.textfont.variant,textcase:t.tC||e.textfont.textcase,lineposition:t.tE||e.textfont.lineposition,shadow:t.tS||e.textfont.shadow,size:g,color:x}).text(c).call(h.convertToTspans,i).call(z,m,g,t.mrc)}else o.remove()}))}},v.selectedTextStyle=function(t,e){if(t.size()&&e.selectedpoints){var n=v.makeSelectedTextStyleFns(e);t.each((function(t){var i=r.select(this),a=n.selectedTextColorFn(t),o=t.tp||e.textposition,c=D(t,e);l.fill(i,a);var u=s.traceIs(e,"bar-like");z(i,o,c,t.mrc2||t.mrc,u)}))}},v.smoothopen=function(t,e){if(t.length<3)return"M"+t.join("L");var r,n="M"+t[0],i=[];for(r=1;r=c||w>=h&&w<=c)&&(T<=p&&T>=u||T>=p&&T<=u)&&(t=[w,T])}return t}v.steps=function(t){var e=N[t]||U;return function(t){for(var r="M"+F(t[0][0])+","+B(t[0][1]),n=t.length,i=1;i=1e4&&(v.savedBBoxes={},q=0),i&&(v.savedBBoxes[i]=g),q++,n.extendFlat({},g)},v.setClipUrl=function(t,e,r){t.attr("clip-path",Z(e,r))},v.getTranslate=function(t){var e=(t[t.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,(function(t,e,r){return[e,r].join(" ")})).split(" ");return{x:+e[0]||0,y:+e[1]||0}},v.setTranslate=function(t,e,r){var n=t.attr?"attr":"getAttribute",i=t.attr?"attr":"setAttribute",a=t[n]("transform")||"";return e=e||0,r=r||0,a=a.replace(/(\btranslate\(.*?\);?)/,"").trim(),a=(a+=u(e,r)).trim(),t[i]("transform",a),a},v.getScale=function(t){var e=(t[t.attr?"attr":"getAttribute"]("transform")||"").replace(/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,(function(t,e,r){return[e,r].join(" ")})).split(" ");return{x:+e[0]||1,y:+e[1]||1}},v.setScale=function(t,e,r){var n=t.attr?"attr":"getAttribute",i=t.attr?"attr":"setAttribute",a=t[n]("transform")||"";return e=e||1,r=r||1,a=a.replace(/(\bscale\(.*?\);?)/,"").trim(),a=(a+="scale("+e+","+r+")").trim(),t[i]("transform",a),a};var Y=/\s*sc.*/;v.setPointGroupScale=function(t,e,r){if(e=e||1,r=r||1,t){var n=1===e&&1===r?"":"scale("+e+","+r+")";t.each((function(){var t=(this.getAttribute("transform")||"").replace(Y,"");t=(t+=n).trim(),this.setAttribute("transform",t)}))}};var X=/translate\([^)]*\)\s*$/;function $(t,e){var r;return t&&(r=t.mf),void 0===r&&(r=e.marker&&e.marker.standoff||0),e._geo||e._xA?r:-r}v.setTextPointsScale=function(t,e,n){t&&t.each((function(){var t,i=r.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(X);t=1===e&&1===n?[]:[u(o,s),"scale("+e+","+n+")",u(-o,-s)],l&&t.push(l),i.attr("transform",t.join(""))}}))},v.getMarkerStandoff=$;var K,J,Q,tt,et,rt,nt=Math.atan2,it=Math.cos,at=Math.sin;function ot(t,e){var r=e[0],n=e[1];return[r*it(t)-n*at(t),r*at(t)+n*it(t)]}function st(t,e){var r=t.ma;void 0===r&&(!(r=e.marker.angle)||n.isArrayOrTypedArray(r))&&(r=0);var i,o,s=e.marker.angleref;if("previous"===s||"north"===s){if(e._geo){var l=e._geo.project(t.lonlat);i=l[0],o=l[1]}else{var c=e._xA,u=e._yA;if(!c||!u)return 90;i=c.c2p(t.x),o=u.c2p(t.y)}if(e._geo){var h,p=t.lonlat[0],f=t.lonlat[1],d=e._geo.project([p,f+1e-5]),m=e._geo.project([p+1e-5,f]),g=nt(m[1]-o,m[0]-i),y=nt(d[1]-o,d[0]-i);if("north"===s)h=r/180*Math.PI;else if("previous"===s){var v=p/180*Math.PI,x=f/180*Math.PI,_=K/180*Math.PI,b=J/180*Math.PI,w=_-v,T=it(b)*at(w),A=at(b)*it(x)-it(b)*at(x)*it(w);h=-nt(T,A)-Math.PI,K=p,J=f}var k=ot(g,[it(h),0]),M=ot(y,[at(h),0]);r=nt(k[1]+M[1],k[0]+M[0])/Math.PI*180,"previous"===s&&(rt!==e.uid||t.i!==et+1)&&(r=null)}if("previous"===s&&!e._geo)if(rt===e.uid&&t.i===et+1&&a(i)&&a(o)){var S=i-Q,E=o-tt,C=e.line&&e.line.shape||"",I=C.slice(C.length-1);"h"===I&&(E=0),"v"===I&&(S=0),r+=nt(E,S)/Math.PI*180+90}else r=null}return Q=i,tt=o,et=t.i,rt=e.uid,r}v.getMarkerAngle=st}}),tr=f({"src/components/titles/index.js"(t,e){var r=x(),n=A(),i=Ae(),a=qt(),o=le(),s=o.strTranslate,l=Qe(),c=H(),u=Se(),h=G(),p=Me().OPPOSITE_SIDE,f=/ [XY][0-9]* /;e.exports={draw:function(t,e,d){var m,g=t._fullLayout,y=d.propContainer,v=d.propName,x=d.placeholder,_=d.traceIndex,b=d.avoid||{},w=d.attributes,T=d.transform,A=d.containerGroup,k=1,M=y.title,S=(M&&M.text?M.text:"").trim(),E=!1,C=M&&M.font?M.font:{},I=C.family,L=C.size,P=C.color,z=C.weight,D=C.style,O=C.variant,R=C.textcase,F=C.lineposition,B=C.shadow,j=!!d.subtitlePropName,N=d.subtitlePlaceholder,U=(y.title||{}).subtitle||{text:"",font:{}},V=U.text.trim(),q=!1,H=1,G=U.font,W=G.family,Z=G.size,Y=G.color,X=G.weight,$=G.style,K=G.variant,J=G.textcase,Q=G.lineposition,tt=G.shadow;"title.text"===v?m="titleText":-1!==v.indexOf("axis")?m="axisTitleText":v.indexOf(!0)&&(m="colorbarTitleText");var et=t._context.edits[m];function rt(t,e){return void 0!==t&&void 0!==e&&t.replace(f," % ")===e.replace(f," % ")}""===S?k=0:rt(S,x)&&(et||(S=""),k=.2,E=!0),j&&(""===V?H=0:rt(V,N)&&(et||(V=""),H=.2,q=!0)),d._meta?S=o.templateString(S,d._meta):g._meta&&(S=o.templateString(S,g._meta));var nt,it=S||V||et;A||(A=o.ensureSingle(g._infolayer,"g","g-"+e),nt=g._hColorbarMoveTitle);var at=A.selectAll("text."+e).data(it?[0]:[]);at.enter().append("text"),at.text(S).attr("class",e),at.exit().remove();var ot=null,st=e+"-subtitle",lt=V||et;if(j&<&&((ot=A.selectAll("text."+st).data(lt?[0]:[])).enter().append("text"),ot.text(V).attr("class",st),ot.exit().remove()),!it)return A;function ct(t,e){o.syncOrAsync([ut,ht],{title:t,subtitle:e})}function ut(n){var a,h=n.title,p=n.subtitle;if(!T&&nt&&(T={}),T?(a="",T.rotate&&(a+="rotate("+[T.rotate,w.x,w.y]+")"),(T.offset||nt)&&(a+=s(0,(T.offset||0)-(nt||0)))):a=null,h.attr("transform",a),h.style("opacity",k*c.opacity(P)).call(l.font,{color:c.rgb(P),size:r.round(L,2),family:I,weight:z,style:D,variant:O,textcase:R,shadow:B,lineposition:F}).attr(w).call(u.convertToTspans,t,(function(t){if(t){var e=r.select(t.node().parentNode).select("."+st);if(!e.empty()){var n=t.node().getBBox();if(n.height){var i=n.y+n.height+1.6*Z;e.attr("y",i)}}}})),p){var f=A.select("."+e+"-math-group"),d=h.node().getBBox(),m=f.node()?f.node().getBBox():void 0,g=m?m.y+m.height+1.6*Z:d.y+d.height+1.6*Z,y=o.extendFlat({},w,{y:g});p.attr("transform",a),p.style("opacity",H*c.opacity(Y)).call(l.font,{color:c.rgb(Y),size:r.round(Z,2),family:W,weight:X,style:$,variant:K,textcase:J,shadow:tt,lineposition:Q}).attr(y).call(u.convertToTspans,t)}return i.previousPromises(t)}function ht(e){var i=e.title,a=r.select(i.node().parentNode);if(b&&b.selection&&b.side&&S){a.attr("transform",null);var c=p[b.side],u="left"===b.side||"top"===b.side?-1:1,h=n(b.pad)?b.pad:2,f=l.bBox(a.node()),d={t:0,b:0,l:0,r:0},m=t._fullLayout._reservedMargin;for(var v in m)for(var x in m[v]){var _=m[v][x];d[x]=Math.max(d[x],_)}var w={left:d.l,top:d.t,right:g.width-d.r,bottom:g.height-d.b},T=b.maxShift||u*(w[b.side]-f[b.side]),A=0;if(T<0)A=T;else{var k=b.offsetLeft||0,M=b.offsetTop||0;f.left-=k,f.right-=k,f.top-=M,f.bottom-=M,b.selection.each((function(){var t=l.bBox(this);o.bBoxIntersect(f,t,h)&&(A=Math.max(A,u*(t[b.side]-f[c])+h))})),A=Math.min(T,A),y._titleScoot=Math.abs(A)}if(A>0||T<0){var E={left:[-A,0],right:[A,0],top:[0,-A],bottom:[0,A]}[b.side];a.attr("transform",s(E[0],E[1]))}}}function pt(t,e){t.text(e).on("mouseover.opacity",(function(){r.select(this).transition().duration(h.SHOW_PLACEHOLDER).style("opacity",1)})).on("mouseout.opacity",(function(){r.select(this).transition().duration(h.HIDE_PLACEHOLDER).style("opacity",0)}))}if(at.call(ct,ot),et&&(S?at.on(".opacity",null):(pt(at,x),E=!0),at.call(u.makeEditable,{gd:t}).on("edit",(function(e){void 0!==_?a.call("_guiRestyle",t,v,e,_):a.call("_guiRelayout",t,v,e)})).on("cancel",(function(){this.text(this.attr("data-unformatted")).call(ct)})).on("input",(function(t){this.text(t||" ").call(u.positionText,w.x,w.y)})),j)){if(j&&!S){var ft=at.node().getBBox(),dt=ft.y+ft.height+1.6*Z;ot.attr("y",dt)}V?ot.on(".opacity",null):(pt(ot,N),q=!0),ot.call(u.makeEditable,{gd:t}).on("edit",(function(e){a.call("_guiRelayout",t,"title.subtitle.text",e)})).on("cancel",(function(){this.text(this.attr("data-unformatted")).call(ct)})).on("input",(function(t){this.text(t||" ").call(u.positionText,ot.attr("x"),ot.attr("y"))}))}return at.classed("js-placeholder",E),ot&&ot.classed("js-placeholder",q),A},SUBTITLE_PADDING_EM:1.6,SUBTITLE_PADDING_MATHJAX_EM:1.6}}}),er=f({"src/plots/cartesian/set_convert.js"(t,e){var r=x(),n=b().utcFormat,i=le(),a=i.numberFormat,o=A(),s=i.cleanNumber,l=i.ms2DateTime,c=i.dateTime2ms,u=i.ensureNumber,h=i.isArrayOrTypedArray,p=k(),f=p.FP_SAFE,d=p.BADNUM,m=p.LOG_CLIP,g=p.ONEWEEK,y=p.ONEDAY,v=p.ONEHOUR,_=p.ONEMIN,w=p.ONESEC,T=xe(),M=ve(),S=M.HOUR_PATTERN,E=M.WEEKDAY_PATTERN;function C(t){return Math.pow(10,t)}function I(t){return null!=t}e.exports=function(t,e){e=e||{};var p=t._id||"x",x=p.charAt(0);function b(e,r){if(e>0)return Math.log(e)/Math.LN10;if(e<=0&&r&&t.range&&2===t.range.length){var n=t.range[0],i=t.range[1];return.5*(n+i-2*m*Math.abs(n-i))}return d}function A(e,r,n,a){if((a||{}).msUTC&&o(e))return+e;var s=c(e,n||t.calendar);if(s===d){if(!o(e))return d;e=+e;var l=Math.floor(10*i.mod(e+.05,1)),u=Math.round(e-l/10);s=c(new Date(u))+l/10}return s}function k(e,r,n){return l(e,r,n||t.calendar)}function L(e){return t._categories[Math.round(e)]}function P(e){if(I(e)){if(void 0===t._categoriesMap&&(t._categoriesMap={}),void 0!==t._categoriesMap[e])return t._categoriesMap[e];t._categories.push("number"==typeof e?String(e):e);var r=t._categories.length-1;return t._categoriesMap[e]=r,r}return d}function z(e){if(t._categoriesMap)return t._categoriesMap[e]}function D(t){var e=z(t);return void 0!==e?e:o(t)?+t:void 0}function O(t){return o(t)?+t:z(t)}function R(t,e,n){return r.round(n+e*t,2)}function F(t,e,r){return(t-r)/e}var B=function(e){return o(e)?R(e,t._m,t._b):d},j=function(e){return F(e,t._m,t._b)};if(t.rangebreaks){var N="y"===x;B=function(e){if(!o(e))return d;var r=t._rangebreaks.length;if(!r)return R(e,t._m,t._b);var n=N;t.range[0]>t.range[1]&&(n=!n);for(var i=n?-1:1,a=i*e,s=0,l=0;lu)){s=a<(c+u)/2?l:l+1;break}s=l+1}var h=t._B[s]||0;return isFinite(h)?R(e,t._m2,h):0},j=function(e){var r=t._rangebreaks.length;if(!r)return F(e,t._m,t._b);for(var n=0,i=0;it._rangebreaks[i].pmax&&(n=i+1);return F(e,t._m2,t._B[n])}}t.c2l="log"===t.type?b:u,t.l2c="log"===t.type?C:u,t.l2p=B,t.p2l=j,t.c2p="log"===t.type?function(t,e){return B(b(t,e))}:B,t.p2c="log"===t.type?function(t){return C(j(t))}:j,-1!==["linear","-"].indexOf(t.type)?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=s,t.c2d=t.c2r=t.l2d=t.l2r=u,t.d2p=t.r2p=function(e){return t.l2p(s(e))},t.p2d=t.p2r=j,t.cleanPos=u):"log"===t.type?(t.d2r=t.d2l=function(t,e){return b(s(t),e)},t.r2d=t.r2c=function(t){return C(s(t))},t.d2c=t.r2l=s,t.c2d=t.l2r=u,t.c2r=b,t.l2d=C,t.d2p=function(e,r){return t.l2p(t.d2r(e,r))},t.p2d=function(t){return C(j(t))},t.r2p=function(e){return t.l2p(s(e))},t.p2r=j,t.cleanPos=u):"date"===t.type?(t.d2r=t.r2d=i.identity,t.d2c=t.r2c=t.d2l=t.r2l=A,t.c2d=t.c2r=t.l2d=t.l2r=k,t.d2p=t.r2p=function(e,r,n){return t.l2p(A(e,0,n))},t.p2d=t.p2r=function(t,e,r){return k(j(t),e,r)},t.cleanPos=function(e){return i.cleanDate(e,d,t.calendar)}):"category"===t.type?(t.d2c=t.d2l=P,t.r2d=t.c2d=t.l2d=L,t.d2r=t.d2l_noadd=D,t.r2c=function(e){var r=O(e);return void 0!==r?r:t.fraction2r(.5)},t.l2r=t.c2r=u,t.r2l=O,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return L(j(t))},t.r2p=t.d2p,t.p2r=j,t.cleanPos=function(t){return"string"==typeof t&&""!==t?t:u(t)}):"multicategory"===t.type&&(t.r2d=t.c2d=t.l2d=L,t.d2r=t.d2l_noadd=D,t.r2c=function(e){var r=D(e);return void 0!==r?r:t.fraction2r(.5)},t.r2c_just_indices=z,t.l2r=t.c2r=u,t.r2l=D,t.d2p=function(e){return t.l2p(t.r2c(e))},t.p2d=function(t){return L(j(t))},t.r2p=t.d2p,t.p2r=j,t.cleanPos=function(t){return Array.isArray(t)||"string"==typeof t&&""!==t?t:u(t)},t.setupMultiCategory=function(r){var n,a,o=t._traceIndices,s=t._matchGroup;if(s&&0===t._categories.length)for(var l in s)if(l!==p){var c=e[T.id2name(l)];o=o.concat(c._traceIndices)}var u=[[0,{}],[0,{}]],f=[];for(n=0;nl[1]&&(a[s?0:1]=n),a[0]===a[1]){var c=t.l2r(r),u=t.l2r(n);if(void 0!==r){var h=c+1;void 0!==n&&(h=Math.min(h,u)),a[s?1:0]=h}if(void 0!==n){var p=u+1;void 0!==r&&(p=Math.max(p,c)),a[s?0:1]=p}}}},t.cleanRange=function(e,r){t._cleanRange(e,r),t.limitRange(e)},t._cleanRange=function(e,r){r||(r={}),e||(e="range");var n,a,s=i.nestedProperty(t,e).get();if(a=(a="date"===t.type?i.dfltRange(t.calendar):"y"===x?M.DFLTRANGEY:"realaxis"===t._name?[0,1]:r.dfltRange||M.DFLTRANGEX).slice(),("tozero"===t.rangemode||"nonnegative"===t.rangemode)&&(a[0]=0),s&&2===s.length){var l=null===s[0],c=null===s[1];for("date"===t.type&&!t.autorange&&(s[0]=i.cleanDate(s[0],d,t.calendar),s[1]=i.cleanDate(s[1],d,t.calendar)),n=0;n<2;n++)if("date"===t.type){if(!i.isDateTime(s[n],t.calendar)){t[e]=a;break}if(t.r2l(s[0])===t.r2l(s[1])){var u=i.constrain(t.r2l(s[0]),i.MIN_MS+1e3,i.MAX_MS-1e3);s[0]=t.l2r(u-1e3),s[1]=t.l2r(u+1e3);break}}else{if(!o(s[n])){if(l||c||!o(s[1-n])){t[e]=a;break}s[n]=s[1-n]*(n?10:.1)}if(s[n]<-f?s[n]=-f:s[n]>f&&(s[n]=f),s[0]===s[1]){var h=Math.max(1,Math.abs(1e-6*s[0]));s[0]-=h,s[1]+=h}}}else i.nestedProperty(t,e).set(a)},t.setScale=function(r){var n=e._size;if(t.overlaying){var i=T.getFromId({_fullLayout:e},t.overlaying);t.domain=i.domain}var a=r&&t._r?"_r":"range",o=t.calendar;t.cleanRange(a);var s,l,c=t.r2l(t[a][0],o),u=t.r2l(t[a][1],o),h="y"===x;if(h?(t._offset=n.t+(1-t.domain[1])*n.h,t._length=n.h*(t.domain[1]-t.domain[0]),t._m=t._length/(c-u),t._b=-t._m*u):(t._offset=n.l+t.domain[0]*n.w,t._length=n.w*(t.domain[1]-t.domain[0]),t._m=t._length/(u-c),t._b=-t._m*c),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks&&(t._rangebreaks=t.locateBreaks(Math.min(c,u),Math.max(c,u)),t._rangebreaks.length)){for(s=0;su&&(p=!p),p&&t._rangebreaks.reverse();var f=p?-1:1;for(t._m2=f*t._length/(Math.abs(u-c)-t._lBreaks),t._B.push(-t._m2*(h?u:c)),s=0;sa&&(a+=7,oa&&(a+=24,o=n&&o=n&&e=s.min&&(ts.max&&(s.max=n),a=!1)}a&&c.push({min:t,max:n})}};for(n=0;n2*s}(p,e))return"date";var y="strict"!==n.autotypenumbers;return function(t,e){for(var r=t.length,n=u(r),a=0,o=0,c={},h=0;h2*a}(p,y)?"category":function(t,e){for(var r=t.length,n=0;n0&&((k=I-s(_)-l(b))>L?M/k>P&&(w=_,A=b,P=M/k):M/I>P&&(w={val:_.val,nopad:1},A={val:b.val,nopad:1},P=M/I));if(m===g){var z=m-1,D=m+1;if(E)if(0===m)a=[0,1];else{var O=(m>0?h:u).reduce((function(t,e){return Math.max(t,l(e))}),0),R=m/(1-Math.min(.5,O/I));a=m>0?[0,R]:[R,0]}else a=C?[Math.max(0,z),Math.max(1,D)]:[z,D]}else E?(w.val>=0&&(w={val:0,nopad:1}),A.val<=0&&(A={val:0,nopad:1})):C&&(w.val-P*s(w)<0&&(w={val:0,nopad:1}),A.val<=0&&(A={val:1,nopad:1})),P=(A.val-w.val-p(e,_.val,b.val))/(I-s(w)-l(A)),a=[w.val-P*s(w),A.val+P*l(A)];return a=T(a,e),e.limitRange&&e.limitRange(),v&&a.reverse(),i.simpleMap(a,e.l2r||Number)}function p(t,e,r){var n=0;if(t.rangebreaks)for(var i=t.locateBreaks(e,r),a=0;a=r&&(c.extrapad||!o)){s=!1;break}i(e,c.val)&&c.pad<=r&&(o||!c.extrapad)&&(t.splice(l,1),l--)}if(s){var u=a&&0===e;t.push({val:e,pad:u?0:r,extrapad:!u&&o})}}function v(t){return n(t)&&Math.abs(t)=e}function w(t,e,r){return void 0===e||void 0===r||(e=t.d2l(e))=c&&(o=c,r=c),s<=c&&(s=c,n=c)}}return r=function(t,e){var r=e.autorangeoptions;return r&&void 0!==r.minallowed&&w(e,r.minallowed,r.maxallowed)?r.minallowed:r&&void 0!==r.clipmin&&w(e,r.clipmin,r.clipmax)?Math.max(t,e.d2l(r.clipmin)):t}(r,e),n=function(t,e){var r=e.autorangeoptions;return r&&void 0!==r.maxallowed&&w(e,r.minallowed,r.maxallowed)?r.maxallowed:r&&void 0!==r.clipmax&&w(e,r.clipmin,r.clipmax)?Math.min(t,e.d2l(r.clipmax)):t}(n,e),[r,n]}e.exports={applyAutorangeOptions:T,getAutoRange:h,makePadFn:f,doAutoRange:function(t,e,r){if(e.setScale(),e.autorange){e.range=r?r.slice():h(t,e),e._r=e.range.slice(),e._rl=i.simpleMap(e._r,e.r2l);var n=e._input,a={};a[e._attr+".range"]=e.range,a[e._attr+".autorange"]=e.autorange,o.call("_storeDirectGUIEdit",t.layout,t._fullLayout._preGUI,a),n.range=e.range.slice(),n.autorange=e.autorange}var s=e._anchorAxis;if(s&&s.rangeslider){var l=s.rangeslider[e._name];l&&"auto"===l.rangemode&&(l.range=h(t,e)),s._input.rangeslider[e._name]=i.extendFlat({},l)}},findExtremes:function(t,e,r){r||(r={}),t._m||t.setScale();var i,o,s,l,c,u,h,p,f,d=[],y=[],x=e.length,_=r.padded||!1,b=r.tozero&&("linear"===t.type||"-"===t.type),w="log"===t.type,T=!1,A=r.vpadLinearized||!1;function k(t){if(Array.isArray(t))return T=!0,function(e){return Math.max(Number(t[e]||0),0)};var e=Math.max(Number(t||0),0);return function(){return e}}var M=k((t._m>0?r.ppadplus:r.ppadminus)||r.ppad||0),S=k((t._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),E=k(r.vpadplus||r.vpad),C=k(r.vpadminus||r.vpad);if(!T){if(p=1/0,f=-1/0,w)for(i=0;i0&&(p=o),o>f&&o-a&&(p=o),o>f&&o=P;i--)L(i);return{min:d,max:y,opts:r}},concatExtremes:d}}}),ir=f({"src/plots/cartesian/axes.js"(t,e){var r=x(),n=A(),i=Ae(),a=qt(),o=le(),s=o.strTranslate,l=Se(),c=tr(),u=H(),h=Qe(),p=Ie(),f=Oe(),d=k(),m=d.ONEMAXYEAR,g=d.ONEAVGYEAR,y=d.ONEMINYEAR,v=d.ONEMAXQUARTER,_=d.ONEAVGQUARTER,b=d.ONEMINQUARTER,w=d.ONEMAXMONTH,T=d.ONEAVGMONTH,M=d.ONEMINMONTH,S=d.ONEWEEK,E=d.ONEDAY,C=E/2,I=d.ONEHOUR,L=d.ONEMIN,P=d.ONESEC,z=d.ONEMILLI,D=d.ONEMICROSEC,O=d.MINUS_SIGN,R=d.BADNUM,F={K:"zeroline"},B={K:"gridline",L:"path"},j={K:"minor-gridline",L:"path"},N={K:"tick",L:"path"},U={K:"tick",L:"text"},V={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},q=Me(),G=q.MID_SHIFT,W=q.CAP_SHIFT,Z=q.LINE_SPACING,Y=q.OPPOSITE_SIDE,X=e.exports={};X.setConvert=er();var $=rr(),K=xe(),J=K.idSort,Q=K.isLinked;X.id2name=K.id2name,X.name2id=K.name2id,X.cleanId=K.cleanId,X.list=K.list,X.listIds=K.listIds,X.getFromId=K.getFromId,X.getFromTrace=K.getFromTrace;var tt=nr();function et(t){var e=1e-4*(t[1]-t[0]);return[t[0]-e,t[1]+e]}X.getAutoRange=tt.getAutoRange,X.findExtremes=tt.findExtremes,X.coerceRef=function(t,e,r,n,i,a){var s=n.charAt(n.length-1),l=r._fullLayout._subplots[s+"axis"],c=n+"ref",u={};return i||(i=l[0]||("string"==typeof a?a:a[0])),a||(a=i),l=l.concat(l.map((function(t){return t+" domain"}))),u[c]={valType:"enumerated",values:l.concat(a?"string"==typeof a?[a]:a:[]),dflt:i},o.coerce(t,e,u,c)},X.getRefType=function(t){return void 0===t?t:"paper"===t?"paper":"pixel"===t?"pixel":/( domain)$/.test(t)?"domain":"range"},X.coercePosition=function(t,e,r,n,i,a){var s,l;if("range"!==X.getRefType(n))s=o.ensureNumber,l=r(i,a);else{var c=X.getFromId(e,n);l=r(i,a=c.fraction2r(a)),s=c.cleanPos}t[i]=s(l)},X.cleanPosition=function(t,e,r){return("paper"===r||"pixel"===r?o.ensureNumber:X.getFromId(e,r).cleanPos)(t)},X.redrawComponents=function(t,e){e=e||X.listIds(t);var r=t._fullLayout;function n(n,i,o,s){for(var l=a.getComponentMethod(n,i),c={},u=0;un&&p2e-6||((r-t._forceTick0)/t._minDtick%1+1.000001)%1>2e-6)&&(t._minDtick=0)):t._minDtick=0},X.saveRangeInitial=function(t,e){for(var r=X.list(t,"",!0),n=!1,i=0;i.3*p||u(i)||u(a))){var f=r.dtick/2;t+=t+f.8){var s=Number(r.substr(1));a.exactYears>.8&&s%12==0?t=X.tickIncrement(t,"M6","reverse")+1.5*E:a.exactMonths>.8?t=X.tickIncrement(t,"M1","reverse")+15.5*E:t-=C;var l=X.tickIncrement(t,r);if(l<=n)return l}return t}(v,t,y,c,a)),g=v;g<=u;)g=X.tickIncrement(g,y,!1,a);return{start:e.c2r(v,0,a),end:e.c2r(g,0,a),size:y,_dataSpan:u-c}},X.prepMinorTicks=function(t,e,r){if(!e.minor.dtick){delete t.dtick;var i,a=e.dtick&&n(e._tmin);if(a){var s=X.tickIncrement(e._tmin,e.dtick,!0);i=[e._tmin,.99*s+.01*e._tmin]}else{var l=o.simpleMap(e.range,e.r2l);i=[l[0],.8*l[0]+.2*l[1]]}if(t.range=o.simpleMap(i,e.l2r),t._isMinor=!0,X.prepTicks(t,r),a){var c=n(e.dtick),u=n(t.dtick),h=c?e.dtick:+e.dtick.substring(1),p=u?t.dtick:+t.dtick.substring(1);c&&u?at(h,p)?h===2*S&&p===2*E&&(t.dtick=S):h===2*S&&p===3*E?t.dtick=S:h!==S||(e._input.minor||{}).nticks?ot(h/p,2.5)?t.dtick=h/2:t.dtick=h:t.dtick=E:"M"===String(e.dtick).charAt(0)?u?t.dtick="M1":at(h,p)?h>=12&&2===p&&(t.dtick="M3"):t.dtick=e.dtick:"L"===String(t.dtick).charAt(0)?"L"===String(e.dtick).charAt(0)?at(h,p)||(t.dtick=ot(h/p,2.5)?e.dtick/2:e.dtick):t.dtick="D1":"D2"===t.dtick&&+e.dtick>1&&(t.dtick=1)}t.range=e.range}void 0===e.minor._tick0Init&&(t.tick0=e.tick0)},X.prepTicks=function(t,e){var r=o.simpleMap(t.range,t.r2l,void 0,void 0,e);if("auto"===t.tickmode||!t.dtick){var i,a=t.nticks;a||("category"===t.type||"multicategory"===t.type?(i=t.tickfont?o.bigFont(t.tickfont.size||12):15,a=t._length/i):(i="y"===t._id.charAt(0)?40:80,a=o.constrain(t._length/i,4,9)+1),"radialaxis"===t._name&&(a*=2)),t.minor&&"array"!==t.minor.tickmode||"array"===t.tickmode&&(a*=100),t._roughDTick=Math.abs(r[1]-r[0])/a,X.autoTicks(t,t._roughDTick),t._minDtick>0&&t.dtick<2*t._minDtick&&(t.dtick=t._minDtick,t.tick0=t.l2r(t._forceTick0))}"period"===t.ticklabelmode&&function(t){var e;function r(){return!(n(t.dtick)||"M"!==t.dtick.charAt(0))}var i=r(),a=X.getTickFormat(t);if(a){var o=t._dtickInit!==t.dtick;/%[fLQsSMX]/.test(a)||(/%[HI]/.test(a)?(e=I,o&&!i&&t.dtickt.range[1],c=!t.ticklabelindex||o.isArrayOrTypedArray(t.ticklabelindex)?t.ticklabelindex:[t.ticklabelindex],u=o.simpleMap(t.range,t.r2l,void 0,void 0,e),h=u[1]=(B?0:1);j--){var N=!j;j?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var U=j?t:o.extendFlat({},t,t.minor);if(N?X.prepMinorTicks(U,t,e):X.prepTicks(U,e),"array"!==U.tickmode)if("sync"!==U.tickmode){var V=et(u),q=V[0],H=V[1],G=n(U.dtick),W="log"===r&&!(G||"L"===U.dtick.charAt(0)),Z=X.tickFirst(U,e);if(j){if(t._tmin=Z,Z=H:J<=H;J=X.tickIncrement(J,Q,h,i)){if(j&&Y++,U.rangebreaks&&!h){if(J=f)break}if(k.length>d||J===K)break;K=J;var tt={value:J};j?(W&&J!==(0|J)&&(tt.simpleLabel=!0),a>1&&Y%a&&(tt.skipLabel=!0),k.push(tt)):(tt.minor=!0,O.push(tt))}}else k=[],x=ct(t);else j?(k=[],x=ut(t,!N)):(O=[],A=ut(t,!N))}var rt;if(!O||O.length<2?c=!1:function(t,e){return/%f/.test(e)?t>=D:/%L/.test(e)?t>=z:/%[SX]/.test(e)?t>=P:/%M/.test(e)?t>=L:/%[HI]/.test(e)?t>=I:/%p/.test(e)?t>=C:/%[Aadejuwx]/.test(e)?t>=E:/%[UVW]/.test(e)?t>=S:/%[Bbm]/.test(e)?t>=M:/%[q]/.test(e)?t>=b:!/%[Yy]/.test(e)||t>=y}((O[1].value-O[0].value)*(l?-1:1),t.tickformat)||(c=!1),c){var nt=k.concat(O);s&&k.length&&(nt=nt.slice(1)),(nt=nt.sort((function(t,e){return t.value-e.value})).filter((function(t,e,r){return 0===e||t.value!==r[e-1].value}))).map((function(t,e){return void 0!==t.minor||t.skipLabel?null:e})).filter((function(t){return null!==t})).forEach((function(t){c.map((function(e){var r=t+e;r>=0&&r0?(a=n-1,o=n):(a=n,o=n);var s,l=t[a].value,c=t[o].value,u=Math.abs(c-l),h=r||u,p=0;h>=y?p=u>=y&&u<=m?u:g:r===_&&h>=b?p=u>=b&&u<=v?u:_:h>=M?p=u>=M&&u<=w?u:T:r===S&&h>=S?p=S:h>=E?p=E:r===C&&h>=C?p=C:r===I&&h>=I&&(p=I),p>=u&&(p=u,s=!0);var f=i+p;if(e.rangebreaks&&p>0){for(var d=0,x=0;x<84;x++){var A=(x+.5)/84;e.maskBreaks(i*(1-A)+A*f)!==R&&d++}(p*=d/84)||(t[n].drop=!0),s&&u>S&&(p=u)}(p>0||0===n)&&(t[n].periodX=i+p/2)}}(F,t,t._definedDelta),t.rangebreaks){var ft="y"===t._id.charAt(0),dt=1;"auto"===t.tickmode&&(dt=t.tickfont?t.tickfont.size:12);var mt=NaN;for(rt=k.length-1;rt>-1;rt--)if(k[rt].drop)k.splice(rt,1);else{k[rt].value=jt(k[rt].value,t);var gt=t.c2p(k[rt].value);(ft?mt>gt-dt:mtf||nf&&(r.periodX=f),n10||"01-01"!==i.substr(5)?t._tickround="d":t._tickround=+e.substr(1)%12==0?"y":"m";else if(e>=E&&a<=10||e>=15*E)t._tickround="d";else if(e>=L&&a<=16||e>=I)t._tickround="M";else if(e>=P&&a<=19||e>=L)t._tickround="S";else{var o=t.l2r(r+e).replace(/^-/,"").length;t._tickround=Math.max(a,o)-20,t._tickround<0&&(t._tickround=4)}}else if(n(e)||"L"===e.charAt(0)){var s=t.range.map(t.r2d||Number);n(e)||(e=Number(e.substr(1))),t._tickround=2-Math.floor(Math.log(e)/Math.LN10+.01);var l=Math.max(Math.abs(s[0]),Math.abs(s[1])),c=Math.floor(Math.log(l)/Math.LN10+.01),u=void 0===t.minexponent?3:t.minexponent;Math.abs(c)>u&&(wt(t.exponentformat)&&!Tt(c)?t._tickexponent=3*Math.round((c-1)/3):t._tickexponent=c)}else t._tickround=null}function _t(t,e,r){var n=t.tickfont||{};return{x:e,dx:0,dy:0,text:r||"",fontSize:n.size,font:n.family,fontWeight:n.weight,fontStyle:n.style,fontVariant:n.variant,fontTextcase:n.textcase,fontLineposition:n.lineposition,fontShadow:n.shadow,fontColor:n.color}}X.autoTicks=function(t,e,r){var i;function a(t){return Math.pow(t,Math.floor(Math.log(e)/Math.LN10))}if("date"===t.type){t.tick0=o.dateTick0(t.calendar,0);var s=2*e;if(s>g)e/=g,i=a(10),t.dtick="M"+12*vt(e,i,ht);else if(s>T)e/=T,t.dtick="M"+vt(e,1,pt);else if(s>E){if(t.dtick=vt(e,E,t._hasDayOfWeekBreaks?[1,2,7,14]:dt),!r){var l=X.getTickFormat(t),c="period"===t.ticklabelmode;c&&(t._rawTick0=t.tick0),/%[uVW]/.test(l)?t.tick0=o.dateTick0(t.calendar,2):t.tick0=o.dateTick0(t.calendar,1),c&&(t._dowTick0=t.tick0)}}else s>I?t.dtick=vt(e,I,pt):s>L?t.dtick=vt(e,L,ft):s>P?t.dtick=vt(e,P,ft):(i=a(10),t.dtick=vt(e,i,ht))}else if("log"===t.type){t.tick0=0;var u=o.simpleMap(t.range,t.r2l);if(t._isMinor&&(e*=1.5),e>.7)t.dtick=Math.ceil(e);else if(Math.abs(u[1]-u[0])<1){var h=1.5*Math.abs((u[1]-u[0])/e);e=Math.abs(Math.pow(10,u[1])-Math.pow(10,u[0]))/h,i=a(10),t.dtick="L"+vt(e,i,ht)}else t.dtick=e>.3?"D2":"D1"}else"category"===t.type||"multicategory"===t.type?(t.tick0=0,t.dtick=Math.ceil(Math.max(e,1))):Bt(t)?(t.tick0=0,i=1,t.dtick=vt(e,i,yt)):(t.tick0=0,i=a(10),t.dtick=vt(e,i,ht));if(0===t.dtick&&(t.dtick=1),!n(t.dtick)&&"string"!=typeof t.dtick){var p=t.dtick;throw t.dtick=1,"ax.dtick error: "+String(p)}},X.tickIncrement=function(t,e,i,a){var s=i?-1:1;if(n(e))return o.increment(t,s*e);var l=e.charAt(0),c=s*Number(e.substr(1));if("M"===l)return o.incrementMonth(t,c,a);if("L"===l)return Math.log(Math.pow(10,t)+c)/Math.LN10;if("D"===l){var u="D2"===e?gt:mt,h=t+.01*s,p=o.roundUp(o.mod(h,1),u,i);return Math.floor(h)+Math.log(r.round(Math.pow(10,p),1))/Math.LN10}throw"unrecognized dtick "+String(e)},X.tickFirst=function(t,e){var i=t.r2l||Number,a=o.simpleMap(t.range,i,void 0,void 0,e),s=a[1]=0&&r<=t._length?e:null};if(l&&o.isArrayOrTypedArray(t.ticktext)){var f=o.simpleMap(t.range,t.r2l),d=(Math.abs(f[1]-f[0])-(t._lBreaks||0))/1e4;for(a=0;a ")}else t._prevDateHead=l,c+="
"+l;e.text=c}(t,s,r,c):"log"===u?function(t,e,r,i,a){var s=t.dtick,l=e.x,c=t.tickformat,u="string"==typeof s&&s.charAt(0);if("never"===a&&(a=""),i&&"L"!==u&&(s="L3",u="L"),c||"L"===u)e.text=At(Math.pow(10,l),t,a,i);else if(n(s)||"D"===u&&o.mod(l+.01,1)<.1){var h=Math.round(l),p=Math.abs(h),f=t.exponentformat;"power"===f||wt(f)&&Tt(h)?(e.text=0===h?1:1===h?"10":"10"+(h>1?"":O)+p+"",e.fontSize*=1.25):("e"===f||"E"===f)&&p>2?e.text="1"+f+(h>0?"+":O)+p:(e.text=At(Math.pow(10,l),t,"","fakehover"),"D1"===s&&"y"===t._id.charAt(0)&&(e.dy-=e.fontSize/6))}else{if("D"!==u)throw"unrecognized dtick "+String(s);e.text=String(Math.round(Math.pow(10,o.mod(l,1)))),e.fontSize*=.75}if("D1"===t.dtick){var d=String(e.text).charAt(0);("0"===d||"1"===d)&&("y"===t._id.charAt(0)?e.dx-=e.fontSize/4:(e.dy+=e.fontSize/2,e.dx+=(t.range[1]>t.range[0]?1:-1)*e.fontSize*(l<0?.5:.25)))}}(t,s,0,c,g):"category"===u?function(t,e){var r=t._categories[Math.round(e.x)];void 0===r&&(r=""),e.text=String(r)}(t,s):"multicategory"===u?function(t,e,r){var n=Math.round(e.x),i=t._categories[n]||[],a=void 0===i[1]?"":String(i[1]),o=void 0===i[0]?"":String(i[0]);r?e.text=o+" - "+a:(e.text=a,e.text2=o)}(t,s,r):Bt(t)?function(t,e,r,n,i){if("radians"!==t.thetaunit||r)e.text=At(e.x,t,i,n);else{var a=e.x/180;if(0===a)e.text="0";else{var s=function(t){function e(t,e){return Math.abs(t-e)<=1e-6}var r=function(t){for(var r=1;!e(Math.round(t*r)/r,t);)r*=10;return r}(t),n=t*r,i=Math.abs(function t(r,n){return e(n,0)?r:t(n,r%n)}(n,r));return[Math.round(n/i),Math.round(r/i)]}(a);if(s[1]>=100)e.text=At(o.deg2rad(e.x),t,i,n);else{var l=e.x<0;1===s[1]?1===s[0]?e.text="π":e.text=s[0]+"π":e.text=["",s[0],"","⁄","",s[1],"","π"].join(""),l&&(e.text=O+e.text)}}}}(t,s,r,c,g):function(t,e,r,n,i){"never"===i?i="":"all"===t.showexponent&&Math.abs(e.x/t.dtick)<1e-6&&(i="hide"),e.text=At(e.x,t,i,n)}(t,s,0,c,g),i||(t.tickprefix&&!m(t.showtickprefix)&&(s.text=t.tickprefix+s.text),t.ticksuffix&&!m(t.showticksuffix)&&(s.text+=t.ticksuffix)),t.labelalias&&t.labelalias.hasOwnProperty(s.text)){var y=t.labelalias[s.text];"string"==typeof y&&(s.text=y)}return("boundaries"===t.tickson||t.showdividers)&&(s.xbnd=[p(s.x-.5),p(s.x+t.dtick-.5)]),s},X.hoverLabelText=function(t,e,r){r&&(t=o.extendFlat({},t,{hoverformat:r}));var n=o.isArrayOrTypedArray(e)?e[0]:e,i=o.isArrayOrTypedArray(e)?e[1]:void 0;if(void 0!==i&&i!==n)return X.hoverLabelText(t,n,r)+" - "+X.hoverLabelText(t,i,r);var a="log"===t.type&&n<=0,s=X.tickText(t,t.c2l(a?-n:n),"hover").text;return a?0===n?"0":O+s:s};var bt=["f","p","n","μ","m","","k","M","G","T"];function wt(t){return"SI"===t||"B"===t}function Tt(t){return t>14||t<-15}function At(t,e,r,i){var a=t<0,s=e._tickround,l=r||e.exponentformat||"B",c=e._tickexponent,u=X.getTickFormat(e),h=e.separatethousands;if(i){var p={exponentformat:l,minexponent:e.minexponent,dtick:"none"===e.showexponent?e.dtick:n(t)&&Math.abs(t)||1,range:"none"===e.showexponent?e.range.map(e.r2d):[0,t||1]};xt(p),s=(Number(p._tickround)||0)+4,c=p._tickexponent,e.hoverformat&&(u=e.hoverformat)}if(u)return e._numFormat(u)(t).replace(/-/g,O);var f,d=Math.pow(10,-s)/2;if("none"===l&&(c=0),(t=Math.abs(t))"+f+"":"B"===l&&9===c?t+="B":wt(l)&&(t+=bt[c/3+5])),a?O+t:t}function kt(t,e){if(t){var r=Object.keys(V).reduce((function(t,r){return-1!==e.indexOf(r)&&V[r].forEach((function(e){t[e]=1})),t}),{});Object.keys(t).forEach((function(e){r[e]||(1===e.length?t[e]=0:delete t[e])}))}}function Mt(t,e){for(var r=[],n={},i=0;i1&&r=i.min&&t=0,a=u(t,e[1])<=0;return(r||i)&&(n||a)}if(t.tickformatstops&&t.tickformatstops.length>0)switch(t.type){case"date":case"linear":for(e=0;e=o(i)))){r=n;break}break;case"log":for(e=0;e=0&&i.unshift(i.splice(n,1).shift())}}));var s={false:{left:0,right:0}};return o.syncOrAsync(i.map((function(e){return function(){if(e){var n=X.getFromId(t,e);r||(r={}),r.axShifts=s,r.overlayingShiftedAx=a;var i=X.drawOne(t,n,r);return n._shiftPusher&&Vt(n,n._fullDepth||0,s,!0),n._r=n.range.slice(),n._rl=o.simpleMap(n._r,n.r2l),i}}})))},X.drawOne=function(t,e,r){var n,s,p,f=(r=r||{}).axShifts||{},d=r.overlayingShiftedAx||[];e.setScale();var m=t._fullLayout,g=e._id,y=g.charAt(0),v=X.counterLetter(g),x=m._plots[e._mainSubplot];if(x){if(e._shiftPusher=e.autoshift||-1!==d.indexOf(e._id)||-1!==d.indexOf(e.overlaying),e._shiftPusher&"free"===e.anchor){var _=e.linewidth/2||0;"inside"===e.ticks&&(_+=e.ticklen),Vt(e,_,f,!0),Vt(e,e.shift||0,f,!1)}(!0!==r.skipTitle||void 0===e._shift)&&(e._shift=function(t,e){return t.autoshift?e[t.overlaying][t.side]:t.shift||0}(e,f));var b=x[y+"axislayer"],w=e._mainLinePosition,T=w+=e._shift,A=e._mainMirrorPosition,k=e._vals=X.calcTicks(e),M=[e.mirror,T,A].join("_");for(n=0;n0?r.bottom-u:0,h))));var p=0,f=0;if(e._shiftPusher&&(p=Math.max(h,r.height>0?"l"===l?u-r.left:r.right-u:0),e.title.text!==m._dfltTitle[y]&&(f=(e._titleStandoff||0)+(e._titleScoot||0),"l"===l&&(f+=Ct(e))),e._fullDepth=Math.max(p,f)),e.automargin){n={x:0,y:0,r:0,l:0,t:0,b:0};var d=[0,1],g="number"==typeof e._shift?e._shift:0;if("x"===y){if("b"===l?n[l]=e._depth:(n[l]=e._depth=Math.max(r.width>0?u-r.top:0,h),d.reverse()),r.width>0){var x=r.right-(e._offset+e._length);x>0&&(n.xr=1,n.r=x);var _=e._offset-r.left;_>0&&(n.xl=0,n.l=_)}}else if("l"===l?(e._depth=Math.max(r.height>0?u-r.left:0,h),n[l]=e._depth-g):(e._depth=Math.max(r.height>0?r.right-u:0,h),n[l]=e._depth+g,d.reverse()),r.height>0){var b=r.bottom-(e._offset+e._length);b>0&&(n.yb=0,n.b=b);var w=e._offset-r.top;w>0&&(n.yt=1,n.t=w)}n[v]="free"===e.anchor?e.position:e._anchorAxis.domain[d[0]],e.title.text!==m._dfltTitle[y]&&(n[l]+=Ct(e)+(e.title.standoff||0)),e.mirror&&"free"!==e.anchor&&((o={x:0,y:0,r:0,l:0,t:0,b:0})[c]=e.linewidth,e.mirror&&!0!==e.mirror&&(o[c]+=h),!0===e.mirror||"ticks"===e.mirror?o[v]=e._anchorAxis.domain[d[1]]:("all"===e.mirror||"allticks"===e.mirror)&&(o[v]=[e._counterDomainMin,e._counterDomainMax][d[1]]))}ht&&(s=a.getComponentMethod("rangeslider","autoMarginOpts")(t,e)),"string"==typeof e.automargin&&(kt(n,e.automargin),kt(o,e.automargin)),i.autoMargin(t,Pt(e),n),i.autoMargin(t,zt(e),o),i.autoMargin(t,Dt(e),s)})),o.syncOrAsync(ct)}}function pt(t){var r=g+(t||"tick");return S[r]||(S[r]=function(t,e,r){var n,i,a,o;if(t._selections[e].size())n=1/0,i=-1/0,a=1/0,o=-1/0,t._selections[e].each((function(){var t=Lt(this),e=h.bBox(t.node().parentNode);n=Math.min(n,e.top),i=Math.max(i,e.bottom),a=Math.min(a,e.left),o=Math.max(o,e.right)}));else{var s=X.makeLabelFns(t,r);n=i=s.yFn({dx:0,dy:0,fontSize:0}),a=o=s.xFn({dx:0,dy:0,fontSize:0})}return{top:n,bottom:i,left:a,right:o,height:i-n,width:o-a}}(e,r,T)),S[r]}},X.getTickSigns=function(t,e){var r=t._id.charAt(0),n={x:"top",y:"right"}[r],i=t.side===n?1:-1,a=[-1,1,i,-i];return"inside"!==(e?(t.minor||{}).ticks:t.ticks)==("x"===r)&&(a=a.map((function(t){return-t}))),t.side&&a.push({l:-1,t:-1,r:1,b:1}[t.side.charAt(0)]),a},X.makeTransTickFn=function(t){return"x"===t._id.charAt(0)?function(e){return s(t._offset+t.l2p(e.x),0)}:function(e){return s(0,t._offset+t.l2p(e.x))}},X.makeTransTickLabelFn=function(t){var e=function(t){var e=t.ticklabelposition||"",r=function(t){return-1!==e.indexOf(t)},n=r("top"),i=r("left"),a=r("right"),o=r("bottom"),s=r("inside"),l=o||i||n||a;if(!l&&!s)return[0,0];var c=t.side,u=l?(t.tickwidth||0)/2:0,h=3,p=t.tickfont?t.tickfont.size:12;return(o||n)&&(u+=p*W,h+=(t.linewidth||0)/2),(i||a)&&(u+=(t.linewidth||0)/2,h+=3),s&&"top"===c&&(h-=p*(1-W)),(i||n)&&(u=-u),("bottom"===c||"right"===c)&&(h=-h),[l?u:0,s?h:0]}(t),r=t.ticklabelshift||0,n=t.ticklabelstandoff||0,i=e[0],a=e[1],o=t.range[0]>t.range[1],l=t.ticklabelposition&&-1!==t.ticklabelposition.indexOf("inside"),c=!l;if(r&&(r*=o?-1:1),n){var u=t.side;n*=l&&("top"===u||"left"===u)||c&&("bottom"===u||"right"===u)?1:-1}return"x"===t._id.charAt(0)?function(e){return s(i+t._offset+t.l2p(St(e))+r,a+n)}:function(e){return s(a+n,i+t._offset+t.l2p(St(e))+r)}},X.makeTickPath=function(t,e,r,n){n||(n={});var i=n.minor;if(i&&!t.minor)return"";var a=void 0!==n.len?n.len:i?t.minor.ticklen:t.ticklen,o=t._id.charAt(0),s=(t.linewidth||1)/2;return"x"===o?"M0,"+(e+s*r)+"v"+a*r:"M"+(e+s*r)+",0h"+a*r},X.makeLabelFns=function(t,e,r){var i=t.ticklabelposition||"",a=function(t){return-1!==i.indexOf(t)},s=a("top"),l=a("left"),c=a("right"),u=a("bottom")||l||s||c,h=a("inside"),p="inside"===i&&"inside"===t.ticks||!h&&"outside"===t.ticks&&"boundaries"!==t.tickson,f=0,d=0,m=p?t.ticklen:0;if(h?m*=-1:u&&(m=0),p&&(f+=m,r)){var g=o.deg2rad(r);f=m*Math.cos(g)+1,d=m*Math.sin(g)}t.showticklabels&&(p||t.showline)&&(f+=.2*t.tickfont.size);var y,v,x,_,b,w={labelStandoff:f+=(t.linewidth||1)/2*(h?-1:1),labelShift:d},T=0,A=t.side,k=t._id.charAt(0),M=t.tickangle;if("x"===k)_=(b=!h&&"bottom"===A||h&&"top"===A)?1:-1,h&&(_*=-1),y=d*_,v=e+f*_,x=b?1:-.2,90===Math.abs(M)&&(h?x+=G:x=-90===M&&"bottom"===A?W:90===M&&"top"===A?G:.5,T=G/2*(M/90)),w.xFn=function(t){return t.dx+y+T*t.fontSize},w.yFn=function(t){return t.dy+v+t.fontSize*x},w.anchorFn=function(t,e){if(u){if(l)return"end";if(c)return"start"}return n(e)&&0!==e&&180!==e?e*_<0!==h?"end":"start":"middle"},w.heightFn=function(e,r,n){return r<-60||r>60?-.5*n:"top"===t.side!==h?-n:0};else if("y"===k){if(_=(b=!h&&"left"===A||h&&"right"===A)?1:-1,h&&(_*=-1),y=f,v=d*_,x=0,!h&&90===Math.abs(M)&&(x=-90===M&&"left"===A||90===M&&"right"===A?W:.5),h){var S=n(M)?+M:0;if(0!==S){var E=o.deg2rad(S);T=Math.abs(Math.sin(E))*W*_,x=0}}w.xFn=function(t){return t.dx+e-(y+t.fontSize*x)*_+T*t.fontSize},w.yFn=function(t){return t.dy+v+t.fontSize*G},w.anchorFn=function(t,e){return n(e)&&90===Math.abs(e)?"middle":b?"end":"start"},w.heightFn=function(e,r,n){return"right"===t.side&&(r*=-1),r<-30?-n:r<30?-.5*n:0}}return w},X.drawTicks=function(t,e,n){n=n||{};var i=e._id+"tick",a=[].concat(e.minor&&e.minor.ticks?n.vals.filter((function(t){return t.minor&&!t.noTick})):[]).concat(e.ticks?n.vals.filter((function(t){return!t.minor&&!t.noTick})):[]),o=n.layer.selectAll("path."+i).data(a,Et);o.exit().remove(),o.enter().append("path").classed(i,1).classed("ticks",1).classed("crisp",!1!==n.crisp).each((function(t){return u.stroke(r.select(this),t.minor?e.minor.tickcolor:e.tickcolor)})).style("stroke-width",(function(r){return h.crispRound(t,r.minor?e.minor.tickwidth:e.tickwidth,1)+"px"})).attr("d",n.path).style("display",null),Ut(e,[N]),o.attr("transform",n.transFn)},X.drawGrid=function(t,e,n){if(n=n||{},"sync"!==e.tickmode){var i=e._id+"grid",a=e.minor&&e.minor.showgrid,o=a?n.vals.filter((function(t){return t.minor})):[],s=e.showgrid?n.vals.filter((function(t){return!t.minor})):[],l=n.counterAxis;if(l&&X.shouldShowZeroLine(t,e,l))for(var c="array"===e.tickmode,p=0;p=0;y--){var v=y?m:g;if(v){var x=v.selectAll("path."+i).data(y?s:o,Et);x.exit().remove(),x.enter().append("path").classed(i,1).classed("crisp",!1!==n.crisp),x.attr("transform",n.transFn).attr("d",n.path).each((function(t){return u.stroke(r.select(this),t.minor?e.minor.gridcolor:e.gridcolor||"#ddd")})).style("stroke-dasharray",(function(t){return h.dashStyle(t.minor?e.minor.griddash:e.griddash,t.minor?e.minor.gridwidth:e.gridwidth)})).style("stroke-width",(function(t){return(t.minor?d:e._gw)+"px"})).style("display",null),"function"==typeof n.path&&x.attr("d",n.path)}}Ut(e,[B,j])}},X.drawZeroLine=function(t,e,r){r=r||r;var n=e._id+"zl",i=X.shouldShowZeroLine(t,e,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:e._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",!1!==r.crisp).each((function(){r.layer.selectAll("path").sort((function(t,e){return J(t.id,e.id)}))})),a.attr("transform",r.transFn).attr("d",r.path).call(u.stroke,e.zerolinecolor||u.defaultLine).style("stroke-width",h.crispRound(t,e.zerolinewidth,e._gw||1)+"px").style("display",null),Ut(e,[F])},X.drawLabels=function(t,e,i){i=i||{};var a=t._fullLayout,c=e._id,u=i.cls||c+"tick",p=i.vals.filter((function(t){return t.text})),f=i.labelFns,d=i.secondary?0:e.tickangle,m=(e._prevTickAngles||{})[u],g=i.layer.selectAll("g."+u).data(e.showticklabels?p:[],Et),y=[];function v(t,a){t.each((function(t){var o=r.select(this),c=o.select(".text-math-group"),u=f.anchorFn(t,a),p=i.transFn.call(o.node(),t)+(n(a)&&0!=+a?" rotate("+a+","+f.xFn(t)+","+(f.yFn(t)-t.fontSize/2)+")":""),d=l.lineCount(o),m=Z*t.fontSize,g=f.heightFn(t,n(a)?+a:0,(d-1)*m);if(g&&(p+=s(0,g)),c.empty()){var y=o.select("text");y.attr({transform:p,"text-anchor":u}),y.style("opacity",1),e._adjustTickLabelsOverflow&&e._adjustTickLabelsOverflow()}else{var v=h.bBox(c.node()).width*{end:-.5,start:.5}[u];c.attr("transform",p+s(v,0))}}))}g.enter().append("g").classed(u,1).append("text").attr("text-anchor","middle").each((function(e){var n=r.select(this),i=t._promises.length;n.call(l.positionText,f.xFn(e),f.yFn(e)).call(h.font,{family:e.font,size:e.fontSize,color:e.fontColor,weight:e.fontWeight,style:e.fontStyle,variant:e.fontVariant,textcase:e.fontTextcase,lineposition:e.fontLineposition,shadow:e.fontShadow}).text(e.text).call(l.convertToTspans,t),t._promises[i]?y.push(t._promises.pop().then((function(){v(n,d)}))):v(n,d)})),Ut(e,[U]),g.exit().remove(),i.repositionOnUpdate&&g.each((function(t){r.select(this).select("text").call(l.positionText,f.xFn(t),f.yFn(t))})),e._adjustTickLabelsOverflow=function(){var n=e.ticklabeloverflow;if(n&&"allow"!==n){var i=-1!==n.indexOf("hide"),s="x"===e._id.charAt(0),l=0,c=s?t._fullLayout.width:t._fullLayout.height;if(-1!==n.indexOf("domain")){var u=o.simpleMap(e.range,e.r2l);l=e.l2p(u[0])+e._offset,c=e.l2p(u[1])+e._offset}var p=Math.min(l,c),f=Math.max(l,c),d=e.side,m=1/0,y=-1/0;for(var v in g.each((function(t){var n=r.select(this);if(n.select(".text-math-group").empty()){var a=h.bBox(n.node()),o=0;s?(a.right>f||a.leftf||a.top+(e.tickangle?0:t.fontSize/4)e["_visibleLabelMin_"+n._id]?l.style("display","none"):"tick"===t.K&&!i&&l.style("display",null)}))}))}))}))},v(g,m+1?m:d);var x=null;e._selections&&(e._selections[u]=g);var _=[function(){return y.length&&Promise.all(y)}];e.automargin&&a._redrawFromAutoMarginCount&&90===m?(x=m,_.push((function(){v(g,m)}))):_.push((function(){if(v(g,d),p.length&&e.autotickangles&&("log"!==e.type||"D"!==String(e.dtick).charAt(0))){x=e.autotickangles[0];var t,r=0,n=[],a=1;g.each((function(t){r=Math.max(r,t.fontSize);var i=e.l2p(t.x),o=Lt(this),s=h.bBox(o.node());a=Math.max(a,l.lineCount(o)),n.push({top:0,bottom:10,height:10,left:i-s.width/2,right:i+s.width/2+2,width:s.width+2})}));var s=("boundaries"===e.tickson||e.showdividers)&&!i.secondary,c=p.length,u=Math.abs((p[c-1].x-p[0].x)*e._m)/(c-1),f=s?u/2:u,m=s?e.ticklen:1.25*r*a,y=f/Math.sqrt(Math.pow(f,2)+Math.pow(m,2)),_=e.autotickangles.map((function(t){return t*Math.PI/180})),b=_.find((function(t){return Math.abs(Math.cos(t))<=y}));void 0===b&&(b=_.reduce((function(t,e){return Math.abs(Math.cos(t))O*D&&(L=D,E[S]=C[S]=P[S])}var R=Math.abs(L-I);R-A>0?A*=1+A/(R-=A):A=0,"y"!==e._id.charAt(0)&&(A=-A),E[M]=w.p2r(w.r2p(C[M])+k*A),"min"===w.autorange||"max reversed"===w.autorange?(E[0]=null,w._rangeInitial0=void 0,w._rangeInitial1=void 0):("max"===w.autorange||"min reversed"===w.autorange)&&(E[1]=null,w._rangeInitial0=void 0,w._rangeInitial1=void 0),a._insideTickLabelsUpdaterange[w._name+".range"]=E}var V=o.syncOrAsync(_);return V&&V.then&&t._promises.push(V),V},X.getPxPosition=function(t,e){var r,n=t._fullLayout._size,i=e._id.charAt(0),a=e.side;return"free"!==e.anchor?r=e._anchorAxis:"x"===i?r={_offset:n.t+(1-(e.position||0))*n.h,_length:0}:"y"===i&&(r={_offset:n.l+(e.position||0)*n.w+e._shift,_length:0}),"top"===a||"left"===a?r._offset:"bottom"===a||"right"===a?r._offset+r._length:void 0},X.shouldShowZeroLine=function(t,e,r){var n=o.simpleMap(e.range,e.r2l);return n[0]*n[1]<=0&&e.zeroline&&("linear"===e.type||"-"===e.type)&&!(e.rangebreaks&&e.maskBreaks(0)===R)&&(It(e,0)||!function(t,e,r,n){var i=r._mainAxis;if(i){var a=t._fullLayout,o=e._id.charAt(0),s=X.counterLetter(e._id),l=e._offset+(Math.abs(n[0])1)for(n=1;n4/3-s?o:s}}}),ur=f({"src/components/dragelement/cursor.js"(t,e){var r=le(),n=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];e.exports=function(t,e,i,a){return t="left"===i?0:"center"===i?1:"right"===i?2:r.constrain(Math.floor(3*t),0,2),e="bottom"===a?0:"middle"===a?1:"top"===a?2:r.constrain(Math.floor(3*e),0,2),n[e][t]}}}),hr=f({"src/components/dragelement/unhover.js"(t,e){var r=fe(),n=Jt(),i=It().getGraphDiv,a=B(),o=e.exports={};o.wrapped=function(t,e,r){(t=i(t))._fullLayout&&n.clear(t._fullLayout._uid+a.HOVERID),o.raw(t,e,r)},o.raw=function(t,e){var n=t._fullLayout,i=t._hoverdata;e||(e={}),(!e.target||t._dragged||!1!==r.triggerHandler(t,"plotly_beforehover",e))&&(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,e.target&&i&&t.emit("plotly_unhover",{event:e,points:i}))}}}),pr=f({"src/components/dragelement/index.js"(t,e){var r=sr(),n=he(),i=lr(),a=le().removeElement,o=ve(),s=e.exports={};s.align=cr(),s.getCursor=ur();var l=hr();function c(){var t=document.createElement("div");t.className="dragcover";var e=t.style;return e.position="fixed",e.left=0,e.right=0,e.top=0,e.bottom=0,e.zIndex=999999999,e.background="none",document.body.appendChild(t),t}function u(t){return r(t.changedTouches?t.changedTouches[0]:t,document.body)}s.unhover=l.wrapped,s.unhoverRaw=l.raw,s.init=function(t){var e,r,l,h,p,f,d,m,g=t.gd,y=1,v=g._context.doubleClickDelay,x=t.element;g._mouseDownTime||(g._mouseDownTime=0),x.style.pointerEvents="all",x.onmousedown=b,i?(x._ontouchstart&&x.removeEventListener("touchstart",x._ontouchstart),x._ontouchstart=b,x.addEventListener("touchstart",b,{passive:!1})):x.ontouchstart=b;var _=t.clampFn||function(t,e,r){return Math.abs(t)"u"&&typeof i.clientY>"u"&&(i.clientX=e,i.clientY=r),(l=(new Date).getTime())-g._mouseDownTimev&&(y=Math.max(y-1,1)),g._dragged?t.doneFn&&t.doneFn():(f.target===d?r=f:(r={target:d,srcElement:d,toElement:d},Object.keys(f).concat(Object.keys(f.__proto__)).forEach((t=>{var e=f[t];!r[t]&&"function"!=typeof e&&(r[t]=e)}))),t.clickFn&&t.clickFn(y,r),m||d.dispatchEvent(new MouseEvent("click",e))),g._dragging=!1,g._dragged=!1):g._dragged=!1}},s.coverSlip=c}}),fr=f({"src/lib/setcursor.js"(t,e){e.exports=function(t,e){(t.attr("class")||"").split(" ").forEach((function(e){0===e.indexOf("cursor-")&&t.classed(e,!1)})),e&&t.classed("cursor-"+e,!0)}}}),dr=f({"src/lib/override_cursor.js"(t,e){var r=fr(),n="data-savedcursor";e.exports=function(t,e){var i=t.attr(n);if(e){if(!i){for(var a=(t.attr("class")||"").split(" "),o=0;o("legend"===t?1:0));if(!1===M&&(c[t]=void 0),(!1!==M||h.uirevision)&&(f("uirevision",c.uirevision),!1!==M)){f("borderwidth");var S,E,C,I="h"===f("orientation"),L="paper"===f("yref"),P="paper"===f("xref"),z="left";if(I?(S=0,r.getComponentMethod("rangeslider","isVisible")(e.xaxis)?L?(E=1.1,C="bottom"):(E=1,C="top"):L?(E=-.1,C="top"):(E=0,C="bottom")):(E=1,C="auto",P?S=1.02:(S=1,z="right")),n.coerce(h,p,{x:{valType:"number",editType:"legend",min:P?-2:0,max:P?3:1,dflt:S}},"x"),n.coerce(h,p,{y:{valType:"number",editType:"legend",min:L?-2:0,max:L?3:1,dflt:E}},"y"),f("traceorder",b),l.isGrouped(c[t])&&f("tracegroupgap"),f("entrywidth"),f("entrywidthmode"),f("indentation"),f("itemsizing"),f("itemwidth"),f("itemclick"),f("itemdoubleclick"),f("groupclick"),f("xanchor",z),f("yanchor",C),f("valign"),n.noneOrAll(h,p,["x","y"]),f("title.text")){f("title.side",I?"left":"top");var D=n.extendFlat({},d,{size:n.bigFont(d.size)});n.coerceFont(f,"title.font",D)}}}}e.exports=function(t,e,r){var i,a=r.slice(),o=e.shapes;if(o)for(i=0;iS&&(M=S)}A[a][0]._groupMinRank=M,A[a][0]._preGroupSort=a}var E=function(t,e){return t.trace.legendrank-e.trace.legendrank||t._preSort-e._preSort};for(A.forEach((function(t,e){t[0]._preGroupSort=e})),A.sort((function(t,e){return t[0]._groupMinRank-e[0]._groupMinRank||t[0]._preGroupSort-e[0]._preGroupSort})),a=0;ar?r:t}e.exports=function(t,e,g){var y=e._fullLayout;g||(g=y.legend);var v="constant"===g.itemsizing,x=g.itemwidth,_=(x+2*p.itemGap)/2,b=a(_,0),w=function(t,e,r,n){var i;if(t+1)i=t;else{if(!(e&&e.width>0))return 0;i=e.width}return v?n:Math.min(i,r)};function T(t,i,a){var c=t[0].trace,u=c.marker||{},h=u.line||{},p=u.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",f=a?c.visible&&c.type===a:n.traceIs(c,"bar"),d=r.select(i).select("g.legendpoints").selectAll("path.legend"+a).data(f?[t]:[]);d.enter().append("path").classed("legend"+a,!0).attr("d",p).attr("transform",b),d.exit().remove(),d.each((function(t){var n=r.select(this),i=t[0],a=w(i.mlw,u.line,5,2);n.style("stroke-width",a+"px");var p=i.mcc;if(!g._inHover&&"mc"in i){var f=l(u),d=f.mid;void 0===d&&(d=(f.max+f.min)/2),p=o.tryColorscale(u,"")(d)}var y=p||i.mc||u.color,v=u.pattern,x=v&&o.getPatternAttr(v.shape,0,"");if(x){var _=o.getPatternAttr(v.bgcolor,0,null),b=o.getPatternAttr(v.fgcolor,0,null),T=v.fgopacity,A=m(v.size,8,10),k=m(v.solidity,.5,1),M="legend-"+c.uid;n.call(o.pattern,"legend",e,M,x,A,k,p,v.fillmode,_,b,T)}else n.call(s.fill,y);a&&s.stroke(n,i.mlc||h.color)}))}function A(t,a,o){var s=t[0],l=s.trace,c=o?l.visible&&l.type===o:n.traceIs(l,o),p=r.select(a).select("g.legendpoints").selectAll("path.legend"+o).data(c?[t]:[]);if(p.enter().append("path").classed("legend"+o,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",b),p.exit().remove(),p.size()){var f=l.marker||{},d=w(h(f.line.width,s.pts),f.line,5,2),m="pieLike",g=i.minExtend(l,{marker:{line:{width:d}}},m),y=i.minExtend(s,{trace:g},m);u(p,y,g,e)}}t.each((function(t){var e=r.select(this),n=i.ensureSingle(e,"g","layers");n.style("opacity",t[0].trace.opacity);var o=g.indentation,s=g.valign,l=t[0].lineHeight,c=t[0].height;if("middle"===s&&0===o||!l||!c)n.attr("transform",null);else{var u={top:1,bottom:-1}[s]*(.5*(l-c+3))||0,h=g.indentation;n.attr("transform",a(h,u))}n.selectAll("g.legendfill").data([t]).enter().append("g").classed("legendfill",!0),n.selectAll("g.legendlines").data([t]).enter().append("g").classed("legendlines",!0);var p=n.selectAll("g.legendsymbols").data([t]);p.enter().append("g").classed("legendsymbols",!0),p.selectAll("g.legendpoints").data([t]).enter().append("g").classed("legendpoints",!0)})).each((function(t){var n,a=t[0].trace,c=[];if(a.visible)switch(a.type){case"histogram2d":case"heatmap":c=[["M-15,-2V4H15V-2Z"]],n=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":c=[["M-6,-6V6H6V-6Z"]],n=!0;break;case"densitymapbox":case"densitymap":c=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],n="radial";break;case"cone":c=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],n=!1;break;case"streamtube":c=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],n=!1;break;case"surface":c=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],n=!0;break;case"mesh3d":c=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],n=!1;break;case"volume":c=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],n=!0;break;case"isosurface":c=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],n=!1}var u=r.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(c);u.enter().append("path").classed("legend3dandfriends",!0).attr("transform",b).style("stroke-miterlimit",1),u.exit().remove(),u.each((function(t,c){var u,h=r.select(this),p=l(a),d=p.colorscale,m=p.reversescale;if(d){if(!n){var g=d.length;u=0===c?d[m?g-1:0][1]:1===c?d[m?0:g-1][1]:d[Math.floor((g-1)/2)][1]}}else{var y=a.vertexcolor||a.facecolor||a.color;u=i.isArrayOrTypedArray(y)?y[c]||y[0]:y}h.attr("d",t[0]),u?h.call(s.fill,u):h.call((function(t){if(t.size()){var r="legendfill-"+a.uid;o.gradient(t,e,r,f(m,"radial"===n),d,"fill")}}))}))})).each((function(t){var e=t[0].trace,n="waterfall"===e.type;if(t[0]._distinct&&n){var i=t[0].trace[t[0].dir].marker;return t[0].mc=i.color,t[0].mlw=i.line.width,t[0].mlc=i.line.color,T(t,this,"waterfall")}var a=[];e.visible&&n&&(a=t[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var o=r.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(a);o.enter().append("path").classed("legendwaterfall",!0).attr("transform",b).style("stroke-miterlimit",1),o.exit().remove(),o.each((function(t){var n=r.select(this),i=e[t[0]].marker,a=w(void 0,i.line,5,2);n.attr("d",t[1]).style("stroke-width",a+"px").call(s.fill,i.color),a&&n.call(s.stroke,i.line.color)}))})).each((function(t){T(t,this,"funnel")})).each((function(t){T(t,this)})).each((function(t){var a=t[0].trace,l=r.select(this).select("g.legendpoints").selectAll("path.legendbox").data(a.visible&&n.traceIs(a,"box-violin")?[t]:[]);l.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",b),l.exit().remove(),l.each((function(){var t=r.select(this);if("all"!==a.boxpoints&&"all"!==a.points||0!==s.opacity(a.fillcolor)||0!==s.opacity((a.line||{}).color)){var n=w(void 0,a.line,5,2);t.style("stroke-width",n+"px").call(s.fill,a.fillcolor),n&&s.stroke(t,a.line.color)}else{var c=i.minExtend(a,{marker:{size:v?12:i.constrain(a.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});l.call(o.pointStyle,c,e)}}))})).each((function(t){A(t,this,"funnelarea")})).each((function(t){A(t,this,"pie")})).each((function(t){var n,a,s=d(t),u=s.showFill,h=s.showLine,p=s.showGradientLine,m=s.showGradientFill,g=s.anyFill,y=s.anyLine,v=t[0],_=v.trace,b=l(_),T=b.colorscale,A=b.reversescale,k=c.hasMarkers(_)||!g?"M5,0":y?"M5,-2":"M5,-3",M=r.select(this),S=M.select(".legendfill").selectAll("path").data(u||m?[t]:[]);if(S.enter().append("path").classed("js-fill",!0),S.exit().remove(),S.attr("d",k+"h"+x+"v6h-"+x+"z").call((function(t){if(t.size())if(u)o.fillGroupStyle(t,e,!0);else{var r="legendfill-"+_.uid;o.gradient(t,e,r,f(A),T,"fill")}})),h||p){var E=w(void 0,_.line,10,5);a=i.minExtend(_,{line:{width:E}}),n=[i.minExtend(v,{trace:a})]}var C=M.select(".legendlines").selectAll("path").data(h||p?[n]:[]);C.enter().append("path").classed("js-line",!0),C.exit().remove(),C.attr("d",k+(p?"l"+x+",0.0001":"h"+x)).call(h?o.lineGroupStyle:function(t){if(t.size()){var r="legendline-"+_.uid;o.lineGroupStyle(t),o.gradient(t,e,r,f(A),T,"stroke")}})})).each((function(t){var n,a,s=d(t),l=s.anyFill,u=s.anyLine,h=s.showLine,p=s.showMarker,f=t[0],m=f.trace,g=!p&&!u&&!l&&c.hasText(m);function y(t,e,r,n){var a=i.nestedProperty(m,t).get(),o=i.isArrayOrTypedArray(a)&&e?e(a):a;if(v&&o&&void 0!==n&&(o=n),r){if(or[1])return r[1]}return o}function x(t){return f._distinct&&f.index&&t[f.index]?t[f.index]:t[0]}if(p||g||h){var _={},w={};if(p){_.mc=y("marker.color",x),_.mx=y("marker.symbol",x),_.mo=y("marker.opacity",i.mean,[.2,1]),_.mlc=y("marker.line.color",x),_.mlw=y("marker.line.width",i.mean,[0,5],2),w.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var T=y("marker.size",i.mean,[2,16],12);_.ms=T,w.marker.size=T}h&&(w.line={width:y("line.width",x,[0,10],5)}),g&&(_.tx="Aa",_.tp=y("textposition",x),_.ts=10,_.tc=y("textfont.color",x),_.tf=y("textfont.family",x),_.tw=y("textfont.weight",x),_.ty=y("textfont.style",x),_.tv=y("textfont.variant",x),_.tC=y("textfont.textcase",x),_.tE=y("textfont.lineposition",x),_.tS=y("textfont.shadow",x)),n=[i.minExtend(f,_)],(a=i.minExtend(m,w)).selectedpoints=null,a.texttemplate=null}var A=r.select(this).select("g.legendpoints"),k=A.selectAll("path.scatterpts").data(p?n:[]);k.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",b),k.exit().remove(),k.call(o.pointStyle,a,e),p&&(n[0].mrc=3);var M=A.selectAll("g.pointtext").data(g?n:[]);M.enter().append("g").classed("pointtext",!0).append("text").attr("transform",b),M.exit().remove(),M.selectAll("text").call(o.textPointStyle,a,e)})).each((function(t){var e=t[0].trace,n=r.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(e.visible&&"candlestick"===e.type?[t,t]:[]);n.enter().append("path").classed("legendcandle",!0).attr("d",(function(t,e){return e?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"})).attr("transform",b).style("stroke-miterlimit",1),n.exit().remove(),n.each((function(t,n){var i=r.select(this),a=e[n?"increasing":"decreasing"],o=w(void 0,a.line,5,2);i.style("stroke-width",o+"px").call(s.fill,a.fillcolor),o&&s.stroke(i,a.line.color)}))})).each((function(t){var e=t[0].trace,n=r.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(e.visible&&"ohlc"===e.type?[t,t]:[]);n.enter().append("path").classed("legendohlc",!0).attr("d",(function(t,e){return e?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"})).attr("transform",b).style("stroke-miterlimit",1),n.exit().remove(),n.each((function(t,n){var i=r.select(this),a=e[n?"increasing":"decreasing"],l=w(void 0,a.line,5,2);i.style("fill","none").call(o.dashLine,a.line.dash,l),l&&s.stroke(i,a.line.color)}))}))}}}),kr=f({"src/components/legend/draw.js"(t,e){var r=x(),n=le(),i=Ae(),a=qt(),o=fe(),s=pr(),l=Qe(),c=H(),u=Se(),h=vr(),p=xr(),f=Me(),d=f.LINE_SPACING,m=f.FROM_TL,g=f.FROM_BR,y=_r(),v=Ar(),_=gr(),b=/^legend[0-9]*$/;function w(t,e){var o,h,f=e||{},x=t._fullLayout,b=L(f),w=f._inHover;if(w?(h=f.layer,o="hover"):(h=x._infolayer,o=b),h){var M;if(o+=x._uid,t._legendMouseDownTime||(t._legendMouseDownTime=0),w){if(!f.entries)return;M=y(f.entries,f)}else{for(var P=(t.calcdata||[]).slice(),z=x.shapes,D=0;D1)}var F=x.hiddenlabels||[];if(!(w||x.showlegend&&M.length))return h.selectAll("."+b).remove(),x._topdefs.select("#"+o).remove(),i.autoMargin(t,b);var B=n.ensureSingle(h,"g",b,(function(t){w||t.attr("pointer-events","all")})),j=n.ensureSingleById(x._topdefs,"clipPath",o,(function(t){t.append("rect")})),N=n.ensureSingle(B,"rect","bg",(function(t){t.attr("shape-rendering","crispEdges")}));N.call(c.stroke,f.bordercolor).call(c.fill,f.bgcolor).style("stroke-width",f.borderwidth+"px");var U,V=n.ensureSingle(B,"g","scrollbox"),q=f.title;f._titleWidth=0,f._titleHeight=0,q.text?((U=n.ensureSingle(V,"text",b+"titletext")).attr("text-anchor","start").call(l.font,q.font).text(q.text),E(U,V,t,f,1)):V.selectAll("."+b+"titletext").remove();var H=n.ensureSingle(B,"rect","scrollbar",(function(t){t.attr(p.scrollBarEnterAttrs).call(c.fill,p.scrollBarColor)})),G=V.selectAll("g.groups").data(M);G.enter().append("g").attr("class","groups"),G.exit().remove();var W=G.selectAll("g.traces").data(n.identity);W.enter().append("g").attr("class","traces"),W.exit().remove(),W.style("opacity",(function(t){var e=t[0].trace;return a.traceIs(e,"pie-like")?-1!==F.indexOf(t[0].label)?.5:1:"legendonly"===e.visible?.5:1})).each((function(){r.select(this).call(k,t,f)})).call(v,t,f).each((function(){w||r.select(this).call(S,t,b)})),n.syncOrAsync([i.previousPromises,function(){return function(t,e,n,i){var a=t._fullLayout,o=L(i);i||(i=a[o]);var s=a._size,c=_.isVertical(i),u=_.isGrouped(i),h="fraction"===i.entrywidthmode,f=i.borderwidth,d=2*f,m=p.itemGap,g=i.indentation+i.itemwidth+2*m,y=2*(f+m),v=I(i),x=i.y<0||0===i.y&&"top"===v,b=i.y>1||1===i.y&&"bottom"===v,w=i.tracegroupgap,A={};i._maxHeight=Math.max(x||b?a.height/2:s.h,30);var k=0;i._width=0,i._height=0;var M=function(t){var e=0,r=0,n=t.title.side;return n&&(-1!==n.indexOf("left")&&(e=t._titleWidth),-1!==n.indexOf("top")&&(r=t._titleHeight)),[e,r]}(i);if(c)n.each((function(t){var e=t[0].height;l.setTranslate(this,f+M[0],f+M[1]+i._height+e/2+m),i._height+=e,i._width=Math.max(i._width,t[0].width)})),k=g+i._width,i._width+=m+g+d,i._height+=y,u&&(e.each((function(t,e){l.setTranslate(this,0,e*i.tracegroupgap)})),i._height+=(i._lgroupsLength-1)*i.tracegroupgap);else{var S=C(i),E=i.x<0||0===i.x&&"right"===S,P=i.x>1||1===i.x&&"left"===S,z=b||x,D=a.width/2;i._maxWidth=Math.max(E?z&&"left"===S?s.l+s.w:D:P?z&&"right"===S?s.r+s.w:D:s.w,2*g);var O=0,R=0;n.each((function(t){var e=T(t,i,g);O=Math.max(O,e),R+=e})),k=null;var F=0;if(u){var B=0,j=0,N=0;e.each((function(){var t=0,e=0;r.select(this).selectAll("g.traces").each((function(r){var n=T(r,i,g),a=r[0].height;l.setTranslate(this,M[0],M[1]+f+m+a/2+e),e+=a,t=Math.max(t,n),A[r[0].trace.legendgroup]=t}));var n=t+m;j>0&&n+f+j>i._maxWidth?(F=Math.max(F,j),j=0,N+=B+w,B=e):B=Math.max(B,e),l.setTranslate(this,j,N),j+=n})),i._width=Math.max(F,j)+f,i._height=N+B+y}else{var U=n.size(),V=R+d+(U-1)*m=i._maxWidth&&(F=Math.max(F,W),H=0,G+=q,i._height+=q,q=0),l.setTranslate(this,M[0]+f+H,M[1]+f+G+e/2+m),W=H+r+m,H+=n,q=Math.max(q,e)})),V?(i._width=H+d,i._height=q+y):(i._width=Math.max(F,W)+d,i._height+=q+y)}}i._width=Math.ceil(Math.max(i._width+M[0],i._titleWidth+2*(f+p.titlePad))),i._height=Math.ceil(Math.max(i._height+M[1],i._titleHeight+2*(f+p.itemGap))),i._effHeight=Math.min(i._height,i._maxHeight);var Z=t._context.edits,Y=Z.legendText||Z.legendPosition;n.each((function(t){var e=r.select(this).select("."+o+"toggle"),n=t[0].height,a=t[0].trace.legendgroup,s=T(t,i,g);u&&""!==a&&(s=A[a]);var p=Y?g:k||s;!c&&!h&&(p+=m/2),l.setRect(e,0,-n/2,p,n)}))}(t,G,W,f)},function(){var e,c,y,v,_=x._size,T=f.borderwidth,k="paper"===f.xref,M="paper"===f.yref;if(q.text&&function(t,e,r){if("top center"===e.title.side||"top right"===e.title.side){var n=e.title.font.size*d,i=0,a=t.node(),o=l.bBox(a).width;"top center"===e.title.side?i=.5*(e._width-2*r-2*p.titlePad-o):"top right"===e.title.side&&(i=e._width-2*r-2*p.titlePad-o),u.positionText(t,r+p.titlePad+i,r+n)}}(U,f,T),!w){var S,E;S=k?_.l+_.w*f.x-m[C(f)]*f._width:x.width*f.x-m[C(f)]*f._width,E=M?_.t+_.h*(1-f.y)-m[I(f)]*f._effHeight:x.height*(1-f.y)-m[I(f)]*f._effHeight;var L=function(t,e,r,n){var a=t._fullLayout,o=a[e],s=C(o),l=I(o),c="paper"===o.xref,u="paper"===o.yref;t._fullLayout._reservedMargin[e]={};var h=o.y<.5?"b":"t",p=o.x<.5?"l":"r",f={r:a.width-r,l:r+o._width,b:a.height-n,t:n+o._effHeight};if(c&&u)return i.autoMargin(t,e,{x:o.x,y:o.y,l:o._width*m[s],r:o._width*g[s],b:o._effHeight*g[l],t:o._effHeight*m[l]});c?t._fullLayout._reservedMargin[e][h]=f[h]:u||"v"===o.orientation?t._fullLayout._reservedMargin[e][p]=f[p]:t._fullLayout._reservedMargin[e][h]=f[h]}(t,b,S,E);if(L)return;if(x.margin.autoexpand){var P=S,z=E;S=k?n.constrain(S,0,x.width-f._width):P,E=M?n.constrain(E,0,x.height-f._effHeight):z,S!==P&&n.log("Constrain "+b+".x to make legend fit inside graph"),E!==z&&n.log("Constrain "+b+".y to make legend fit inside graph")}l.setTranslate(B,S,E)}if(H.on(".drag",null),B.on("wheel",null),w||f._height<=f._maxHeight||t._context.staticPlot){var D=f._effHeight;w&&(D=f._height),N.attr({width:f._width-T,height:D-T,x:T/2,y:T/2}),l.setTranslate(V,0,0),j.select("rect").attr({width:f._width-2*T,height:D-2*T,x:T,y:T}),l.setClipUrl(V,o,t),l.setRect(H,0,0,0,0),delete f._scrollY}else{var O=Math.max(p.scrollBarMinHeight,f._effHeight*f._effHeight/f._height),R=f._effHeight-O-2*p.scrollBarMargin,F=f._height-f._effHeight,G=R/F,W=Math.min(f._scrollY||0,F);N.attr({width:f._width-2*T+p.scrollBarWidth+p.scrollBarMargin,height:f._effHeight-T,x:T/2,y:T/2}),j.select("rect").attr({width:f._width-2*T+p.scrollBarWidth+p.scrollBarMargin,height:f._effHeight-2*T,x:T,y:T+W}),l.setClipUrl(V,o,t),J(W,O,G),B.on("wheel",(function(){J(W=n.constrain(f._scrollY+r.event.deltaY/R*F,0,F),O,G),0!==W&&W!==F&&r.event.preventDefault()}));var Z,Y,X,$=r.behavior.drag().on("dragstart",(function(){var t=r.event.sourceEvent;Z="touchstart"===t.type?t.changedTouches[0].clientY:t.clientY,X=W})).on("drag",(function(){var t=r.event.sourceEvent;2===t.buttons||t.ctrlKey||(Y="touchmove"===t.type?t.changedTouches[0].clientY:t.clientY,W=function(t,e,r){var i=(r-e)/G+t;return n.constrain(i,0,F)}(X,Z,Y),J(W,O,G))}));H.call($);var K=r.behavior.drag().on("dragstart",(function(){var t=r.event.sourceEvent;"touchstart"===t.type&&(Z=t.changedTouches[0].clientY,X=W)})).on("drag",(function(){var t=r.event.sourceEvent;"touchmove"===t.type&&(Y=t.changedTouches[0].clientY,W=function(t,e,r){var i=(e-r)/G+t;return n.constrain(i,0,F)}(X,Z,Y),J(W,O,G))}));V.call(K)}function J(e,r,n){f._scrollY=t._fullLayout[b]._scrollY=e,l.setTranslate(V,0,-e),l.setRect(H,f._width,p.scrollBarMargin+e*n,p.scrollBarWidth,r),j.select("rect").attr("y",T+e)}t._context.edits.legendPosition&&(B.classed("cursor-move",!0),s.init({element:B.node(),gd:t,prepFn:function(t){if(t.target!==H.node()){var e=l.getTranslate(B);y=e.x,v=e.y}},moveFn:function(t,r){if(void 0!==y&&void 0!==v){var n=y+t,i=v+r;l.setTranslate(B,n,i),e=s.align(n,f._width,_.l,_.l+_.w,f.xanchor),c=s.align(i+f._height,-f._height,_.t+_.h,_.t,f.yanchor)}},doneFn:function(){if(void 0!==e&&void 0!==c){var r={};r[b+".x"]=e,r[b+".y"]=c,a.call("_guiRelayout",t,r)}},clickFn:function(e,r){var n=h.selectAll("g.traces").filter((function(){var t=this.getBoundingClientRect();return r.clientX>=t.left&&r.clientX<=t.right&&r.clientY>=t.top&&r.clientY<=t.bottom}));n.size()>0&&A(t,B,n,e,r)}}))}],t)}}function T(t,e,r){var n=t[0],i=n.width,a=e.entrywidthmode,o=n.trace.legendwidth||e.entrywidth;return"fraction"===a?e._maxWidth*o:r+(o||i)}function A(t,e,r,n,i){var s=r.data()[0][0].trace,l={event:i,node:r.node(),curveNumber:s.index,expandedIndex:s.index,data:t.data,layout:t.layout,frames:t._transitionData._frames,config:t._context,fullData:t._fullData,fullLayout:t._fullLayout};s._group&&(l.group=s._group),a.traceIs(s,"pie-like")&&(l.label=r.datum()[0].label);var c=o.triggerHandler(t,"plotly_legendclick",l);if(1===n){if(!1===c)return;e._clickTimeout=setTimeout((function(){t._fullLayout&&h(r,t,n)}),t._context.doubleClickDelay)}else 2===n&&(e._clickTimeout&&clearTimeout(e._clickTimeout),t._legendMouseDownTime=0,!1!==o.triggerHandler(t,"plotly_legenddoubleclick",l)&&!1!==c&&h(r,t,n))}function k(t,e,r){var i,o,s=L(r),c=t.data()[0][0],h=c.trace,f=a.traceIs(h,"pie-like"),d=!r._inHover&&e._context.edits.legendText&&!f,m=r._maxNameLength;c.groupTitle?(i=c.groupTitle.text,o=c.groupTitle.font):(o=r.font,r.entries?i=c.text:(i=f?c.label:h.name,h._meta&&(i=n.templateString(i,h._meta))));var g=n.ensureSingle(t,"text",s+"text");g.attr("text-anchor","start").call(l.font,o).text(d?M(i,m):i);var y=r.indentation+r.itemwidth+2*p.itemGap;u.positionText(g,y,0),d?g.call(u.makeEditable,{gd:e,text:i}).call(E,t,e,r).on("edit",(function(n){this.text(M(n,m)).call(E,t,e,r);var i=c.trace._fullInput||{},o={};return o.name=n,i._isShape?a.call("_guiRelayout",e,"shapes["+h.index+"].name",o.name):a.call("_guiRestyle",e,o,h.index)})):E(g,t,e,r)}function M(t,e){var r=Math.max(4,e);if(t&&t.trim().length>=r/2)return t;for(var n=r-(t=t||"").length;n>0;n--)t+=" ";return t}function S(t,e,i){var a,o=e._context.doubleClickDelay,s=1,l=n.ensureSingle(t,"rect",i+"toggle",(function(t){e._context.staticPlot||t.style("cursor","pointer").attr("pointer-events","all"),t.call(c.fill,"rgba(0,0,0,0)")}));e._context.staticPlot||(l.on("mousedown",(function(){(a=(new Date).getTime())-e._legendMouseDownTimeo&&(s=Math.max(s-1,1)),A(e,n,t,s,r.event)}})))}function E(t,e,r,n,i){n._inHover&&t.attr("data-notex",!0),u.convertToTspans(t,r,(function(){!function(t,e,r,n){var i=t.data()[0][0];if(r._inHover||!i||i.trace.showlegend){var a=t.select("g[class*=math-group]"),o=a.node(),s=L(r);r||(r=e._fullLayout[s]);var c,h,f=r.borderwidth,m=(1===n?r.title.font:i.groupTitle?i.groupTitle.font:r.font).size*d;if(o){var g=l.bBox(o);c=g.height,h=g.width,1===n?l.setTranslate(a,f,f+.75*c):l.setTranslate(a,0,.25*c)}else{var y="."+s+(1===n?"title":"")+"text",v=t.select(y),x=u.lineCount(v),_=v.node();if(c=m*x,h=_?l.bBox(_).width:0,1===n)"left"===r.title.side&&(h+=2*p.itemGap),u.positionText(v,f+p.titlePad,f+m);else{var b=2*p.itemGap+r.indentation+r.itemwidth;i.groupTitle&&(b=p.itemGap,h-=r.indentation+r.itemwidth),u.positionText(v,b,-m*((x-1)/2-.3))}}1===n?(r._titleWidth=h,r._titleHeight=c):(i.lineHeight=m,i.height=Math.max(c,16)+3,i.width=h)}else t.remove()}(e,r,n,i)}))}function C(t){return n.isRightAnchor(t)?"right":n.isCenterAnchor(t)?"center":"left"}function I(t){return n.isBottomAnchor(t)?"bottom":n.isMiddleAnchor(t)?"middle":"top"}function L(t){return t._id||"legend"}e.exports=function(t,e){if(e)w(t,e);else{var n=t._fullLayout,i=n._legends;n._infolayer.selectAll('[class^="legend"]').each((function(){var t=r.select(this),e=t.attr("class").split(" ")[0];e.match(b)&&-1===i.indexOf(e)&&t.remove()}));for(var a=0;a$[0]._length||bt<0||bt>K[0]._length)return f.unhoverRaw(t,n)}else _t="xpx"in n?n.xpx:$[0]._length/2,bt="ypx"in n?n.ypx:K[0]._length/2;if(n.pointerX=_t+$[0]._offset,n.pointerY=bt+K[0]._offset,nt="xval"in n?y.flat(_,n.xval):y.p2c($,_t),it="yval"in n?y.flat(_,n.yval):y.p2c(K,bt),!r(nt[0])||!r(it[0]))return i.warn("Fx.hover failed",n,t),f.unhoverRaw(t,n)}var kt=1/0;function Mt(e,a){for(ot=0;otmt&&(gt.splice(0,mt),kt=gt[0].distance),M&&0!==rt&&0===gt.length){dt.distance=rt,dt.index=!1;var u=lt._module.hoverPoints(dt,pt,ft,"closest",{hoverLayer:b._hoverlayer});if(u&&(u=u.filter((function(t){return t.spikeDistance<=rt}))),u&&u.length){var h,f=u.filter((function(t){return t.xa.showspikes&&"hovered data"!==t.xa.spikesnap}));if(f.length){var d=f[0];r(d.x0)&&r(d.y0)&&(h=Et(d),(!vt.vLinePoint||vt.vLinePoint.spikeDistance>h.spikeDistance)&&(vt.vLinePoint=h))}var m=u.filter((function(t){return t.ya.showspikes&&"hovered data"!==t.ya.spikesnap}));if(m.length){var g=m[0];r(g.x0)&&r(g.y0)&&(h=Et(g),(!vt.hLinePoint||vt.hLinePoint.spikeDistance>h.spikeDistance)&&(vt.hLinePoint=h))}}}}}function St(t,e,r){for(var n,i=null,a=1/0,o=0;o0&&Math.abs(t.distance)jt-1;Nt--)Ht(gt[Nt]);gt=Ut,Pt()}var Gt=t._hoverdata,Wt=[],Zt=Z(t),Yt=Y(t);for(at=0;at1||gt.length>1)||"closest"===S&&xt&>.length>1,se=p.combine(b.plot_bgcolor||p.background,b.paper_bgcolor),le=R(gt,{gd:t,hovermode:S,rotateLabels:oe,bgColor:se,container:b._hoverlayer,outerContainer:b._paper.node(),commonLabelOpts:b.hoverlabel,hoverdistance:b.hoverdistance}),ce=le.hoverLabels;if(y.isUnifiedHover(S)||(function(t,e,r,n){var i,a,o,s,l,c,u,h=e?"xa":"ya",p=e?"ya":"xa",f=0,d=1,m=t.size(),g=new Array(m),y=0,v=n.minX,x=n.maxX,_=n.minY,b=n.maxY,w=function(t){return t*r._invScaleX},T=function(t){return t*r._invScaleY};function A(t){var e=t[0],r=t[t.length-1];if(a=e.pmin-e.pos-e.dp+e.size,o=r.pos+r.dp+r.size-e.pmax,a>.01){for(l=t.length-1;l>=0;l--)t[l].dp+=a;i=!1}if(!(o<.01)){if(a<-.01){for(l=t.length-1;l>=0;l--)t[l].dp-=o;i=!1}if(i){var n=0;for(s=0;se.pmax&&n++;for(s=t.length-1;s>=0&&!(n<=0);s--)(c=t[s]).pos>e.pmax-1&&(c.del=!0,n--);for(s=0;s=0;l--)t[l].dp-=o;for(s=t.length-1;s>=0&&!(n<=0);s--)(c=t[s]).pos+c.dp+c.size>e.pmax&&(c.del=!0,n--)}}}for(t.each((function(t){var n=t[h],i=t[p],a="x"===n._id.charAt(0),o=n.range;0===y&&o&&o[0]>o[1]!==a&&(d=-1);var s=0,l=a?r.width:r.height;if("x"===r.hovermode||"y"===r.hovermode){var c,u,f=j(t,e),m=t.anchor,A="end"===m?-1:1;if("middle"===m)u=(c=t.crossPos+(a?T(f.y-t.by/2):w(t.bx/2+t.tx2width/2)))+(a?T(t.by):w(t.bx));else if(a)u=(c=t.crossPos+T(E+f.y)-T(t.by/2-E))+T(t.by);else{var M=w(A*E+f.x),S=M+w(A*t.bx);c=t.crossPos+Math.min(M,S),u=t.crossPos+Math.max(M,S)}a?void 0!==_&&void 0!==b&&Math.min(u,b)-Math.max(c,_)>1&&("left"===i.side?(s=i._mainLinePosition,l=r.width):l=i._mainLinePosition):void 0!==v&&void 0!==x&&Math.min(u,x)-Math.max(c,v)>1&&("top"===i.side?(s=i._mainLinePosition,l=r.height):l=i._mainLinePosition)}g[y++]=[{datum:t,traceIndex:t.trace.index,dp:0,pos:t.pos,posref:t.posref,size:t.by*(a?k:1)/2,pmin:s,pmax:l}]})),g.sort((function(t,e){return t[0].posref-e[0].posref||d*(e[0].traceIndex-t[0].traceIndex)}));!i&&f<=m;){for(f++,i=!0,s=0;s.01){for(l=S.length-1;l>=0;l--)S[l].dp+=a;for(M.push.apply(M,S),g.splice(s+1,1),u=0,l=M.length-1;l>=0;l--)u+=M[l].dp;for(o=u/M.length,l=M.length-1;l>=0;l--)M[l].dp-=o;i=!1}else s++}g.forEach(A)}for(s=g.length-1;s>=0;s--){var L=g[s];for(l=L.length-1;l>=0;l--){var P=L[l],z=P.datum;z.offset=P.dp,z.del=P.del}}}(ce,oe,b,le.commonLabelBoundingBox),N(ce,oe,b._invScaleX,b._invScaleY)),c&&c.tagName){var ue=g.getComponentMethod("annotations","hasClickToShow")(t,Wt);u(e.select(c),ue?"pointer":"")}!c||s||!function(t,e,r){if(!r||r.length!==t._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=t._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}(t,0,Gt)||(Gt&&t.emit("plotly_unhover",{event:n,points:Gt}),t.emit("plotly_hover",{event:n,points:t._hoverdata,xaxes:$,yaxes:K,xvals:nt,yvals:it}))}(t,n,o,s,c)}))},t.loneHover=function(t,r){var n=!0;Array.isArray(t)||(n=!1,t=[t]);var i=r.gd,a=Z(i),o=Y(i),s=!1,l=R(t.map((function(t){var e=t._x0||t.x0||t.x||0,n=t._x1||t.x1||t.x||0,s=t._y0||t.y0||t.y||0,l=t._y1||t.y1||t.y||0,c=t.eventData;if(c){var u=Math.min(e,n),h=Math.max(e,n),f=Math.min(s,l),d=Math.max(s,l),m=t.trace;if(g.traceIs(m,"gl3d")){var y=i._fullLayout[m.scene]._scene.container,v=y.offsetLeft,x=y.offsetTop;u+=v,h+=v,f+=x,d+=x}c.bbox={x0:u+o,x1:h+o,y0:f+a,y1:d+a},r.inOut_bbox&&r.inOut_bbox.push(c.bbox)}else c=!1;return{color:t.color||p.defaultLine,x0:t.x0||t.x||0,x1:t.x1||t.x||0,y0:t.y0||t.y||0,y1:t.y1||t.y||0,xLabel:t.xLabel,yLabel:t.yLabel,zLabel:t.zLabel,text:t.text,name:t.name,idealAlign:t.idealAlign,borderColor:t.borderColor,fontFamily:t.fontFamily,fontSize:t.fontSize,fontColor:t.fontColor,fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontVariant:t.fontVariant,nameLength:t.nameLength,textAlign:t.textAlign,trace:t.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:t.hovertemplate||!1,hovertemplateLabels:t.hovertemplateLabels||!1,eventData:c}})),{gd:i,hovermode:"closest",rotateLabels:s,bgColor:r.bgColor||p.background,container:e.select(r.container),outerContainer:r.outerContainer||r.container}).hoverLabels,c=0,u=0;return l.sort((function(t,e){return t.y0-e.y0})).each((function(t,e){var n=t.y0-t.by/2;t.offset=n-5([\s\S]*)<\/extra>/;function R(t,r){var n=r.gd,a=n._fullLayout,l=r.hovermode,u=r.rotateLabels,f=r.bgColor,d=r.container,m=r.outerContainer,x=r.commonLabelOpts||{};if(0===t.length)return[[]];var T=r.fontFamily||v.HOVERFONT,A=r.fontSize||v.HOVERFONTSIZE,k=r.fontWeight||a.font.weight,M=r.fontStyle||a.font.style,S=r.fontVariant||a.font.variant,I=r.fontTextcase||a.font.textcase,L=r.fontLineposition||a.font.lineposition,P=r.fontShadow||a.font.shadow,D=t[0],O=D.xa,R=D.ya,B=l.charAt(0),j=B+"Label",N=D[j];if(void 0===N&&"multicategory"===O.type)for(var U=0;Ua.width-w&&(z=a.width-w),r.attr("d","M"+(y-z)+",0L"+(y-z+E)+","+b+E+"H"+w+"v"+b+(2*C+_.height)+"H"+-w+"V"+b+E+"H"+(y-z-E)+"Z"),y=z,Q.minX=y-w,Q.maxX=y+w,"top"===O.side?(Q.minY=v-(2*C+_.height),Q.maxY=v-C):(Q.minY=v+C,Q.maxY=v+(2*C+_.height))}else{var F,B,j;"right"===R.side?(F="start",B=1,j="",y=O._offset+O._length):(F="end",B=-1,j="-",y=O._offset),v=R._offset+(D.y0+D.y1)/2,s.attr("text-anchor",F),r.attr("d","M0,0L"+j+E+","+E+"V"+(C+_.height/2)+"h"+j+(2*C+_.width)+"V-"+(C+_.height/2)+"H"+j+E+"V-"+E+"Z"),Q.minY=v-(C+_.height/2),Q.maxY=v+(C+_.height/2),"right"===R.side?(Q.minX=y+E,Q.maxX=y+E+(2*C+_.width)):(Q.minX=y-E-(2*C+_.width),Q.maxX=y-E);var U,V=_.height/2,H=q-_.top-V,G="clip"+a._uid+"commonlabel"+R._id;if(y<_.width+2*C+E){U="M-"+(E+C)+"-"+V+"h-"+(_.width-C)+"V"+V+"h"+(_.width-C)+"Z";var W=_.width-y+C;c.positionText(s,W,H),"end"===F&&s.selectAll("tspan").each((function(){var t=e.select(this),r=h.tester.append("text").text(t.text()).call(h.font,g),i=X(n,r.node());Math.round(i.width)=0?dt:mt+vt=0?mt:Mt+vt=0?pt:ft+xt=0?ft:St+xt=0,"top"!==t.idealAlign&&K||!J?K?(j+=V/2,t.anchor="start"):t.anchor="middle":(j-=V/2,t.anchor="end"),t.crossPos=j;else{if(t.pos=j,K=B+U/2+Q<=H,J=B-U/2-Q>=0,"left"!==t.idealAlign&&K||!J)if(K)B+=U/2,t.anchor="start";else{t.anchor="middle";var tt=Q/2,et=B+tt-H,rt=B-tt;et>0&&(B-=et),rt<0&&(B+=-rt)}else B-=U/2,t.anchor="end";t.crossPos=B}b.attr("text-anchor",t.anchor),D&&z.attr("text-anchor",t.anchor),r.attr("transform",o(B,j)+(u?s(w):""))})),{hoverLabels:Et,commonLabelBoundingBox:Q}}function F(t,e,r,n,a,o){var s="",l="";void 0!==t.nameOverride&&(t.name=t.nameOverride),t.name&&(t.trace._meta&&(t.name=i.templateString(t.name,t.trace._meta)),s=G(t.name,t.nameLength));var c=r.charAt(0),u="x"===c?"y":"x";void 0!==t.zLabel?(void 0!==t.xLabel&&(l+="x: "+t.xLabel+"
"),void 0!==t.yLabel&&(l+="y: "+t.yLabel+"
"),"choropleth"!==t.trace.type&&"choroplethmapbox"!==t.trace.type&&"choroplethmap"!==t.trace.type&&(l+=(l?"z: ":"")+t.zLabel)):e&&t[c+"Label"]===a?l=t[u+"Label"]||"":void 0===t.xLabel?void 0!==t.yLabel&&"scattercarpet"!==t.trace.type&&(l=t.yLabel):l=void 0===t.yLabel?t.xLabel:"("+t.xLabel+", "+t.yLabel+")",(t.text||0===t.text)&&!Array.isArray(t.text)&&(l+=(l?"
":"")+t.text),void 0!==t.extraText&&(l+=(l?"
":"")+t.extraText),o&&""===l&&!t.hovertemplate&&(""===s&&o.remove(),l=s);var h=t.hovertemplate||!1;if(h){var p=t.hovertemplateLabels||t;t[c+"Label"]!==a&&(p[c+"other"]=p[c+"Val"],p[c+"otherLabel"]=p[c+"Label"]),l=(l=i.hovertemplateString(h,p,n._d3locale,t.eventData[0]||{},t.trace._meta)).replace(D,(function(e,r){return s=G(r,t.nameLength),""}))}return[l,s]}function j(t,e){var r=0,n=t.offset;return e&&(n*=-S,r=t.offset*M),{x:r,y:n}}function N(t,r,n,i){var a=function(t){return t*n},o=function(t){return t*i};t.each((function(t){var n=e.select(this);if(t.del)return n.remove();var i=n.select("text.nums"),s=t.anchor,l="end"===s?-1:1,u=function(t){var e={start:1,end:-1,middle:0}[t.anchor],r=e*(E+C),n=r+e*(t.txwidth+C);return"middle"===t.anchor&&(r-=t.tx2width/2,n+=t.txwidth/2+C),{alignShift:e,textShiftX:r,text2ShiftX:n}}(t),p=j(t,r),f=p.x,d=p.y,m="middle"===s;n.select("path").attr("d",m?"M-"+a(t.bx/2+t.tx2width/2)+","+o(d-t.by/2)+"h"+a(t.bx)+"v"+o(t.by)+"h-"+a(t.bx)+"Z":"M0,0L"+a(l*E+f)+","+o(E+d)+"v"+o(t.by/2-E)+"h"+a(l*t.bx)+"v-"+o(t.by)+"H"+a(l*E+f)+"V"+o(d-E)+"Z");var g=f+u.textShiftX,y=d+t.ty0-t.by/2+C,v=t.textAlign||"auto";"auto"!==v&&("left"===v&&"start"!==s?(i.attr("text-anchor","start"),g=m?-t.bx/2-t.tx2width/2+C:-t.bx-C):"right"===v&&"end"!==s&&(i.attr("text-anchor","end"),g=m?t.bx/2-t.tx2width/2-C:t.bx+C)),i.call(c.positionText,a(g),o(y)),t.tx2width&&(n.select("text.name").call(c.positionText,a(u.text2ShiftX+u.alignShift*C+f),o(d+t.ty0-t.by/2+C)),n.select("rect").call(h.setRect,a(u.text2ShiftX+(u.alignShift-1)*t.tx2width/2+f),o(d-t.by/2-1),a(t.tx2width),o(t.by+2)))}))}function U(t,e){var n=t.index,a=t.trace||{},o=t.cd[0],s=t.cd[n]||{};function l(t){return t||r(t)&&0===t}var c=Array.isArray(n)?function(t,e){var r=i.castOption(o,n,t);return l(r)?r:i.extractOption({},a,"",e)}:function(t,e){return i.extractOption(s,a,t,e)};function u(e,r,n){var i=c(r,n);l(i)&&(t[e]=i)}if(u("hoverinfo","hi","hoverinfo"),u("bgcolor","hbg","hoverlabel.bgcolor"),u("borderColor","hbc","hoverlabel.bordercolor"),u("fontFamily","htf","hoverlabel.font.family"),u("fontSize","hts","hoverlabel.font.size"),u("fontColor","htc","hoverlabel.font.color"),u("fontWeight","htw","hoverlabel.font.weight"),u("fontStyle","hty","hoverlabel.font.style"),u("fontVariant","htv","hoverlabel.font.variant"),u("nameLength","hnl","hoverlabel.namelength"),u("textAlign","hta","hoverlabel.align"),t.posref="y"===e||"closest"===e&&"h"===a.orientation?t.xa._offset+(t.x0+t.x1)/2:t.ya._offset+(t.y0+t.y1)/2,t.x0=i.constrain(t.x0,0,t.xa._length),t.x1=i.constrain(t.x1,0,t.xa._length),t.y0=i.constrain(t.y0,0,t.ya._length),t.y1=i.constrain(t.y1,0,t.ya._length),void 0!==t.xLabelVal&&(t.xLabel="xLabel"in t?t.xLabel:d.hoverLabelText(t.xa,t.xLabelVal,a.xhoverformat),t.xVal=t.xa.c2d(t.xLabelVal)),void 0!==t.yLabelVal&&(t.yLabel="yLabel"in t?t.yLabel:d.hoverLabelText(t.ya,t.yLabelVal,a.yhoverformat),t.yVal=t.ya.c2d(t.yLabelVal)),void 0!==t.zLabelVal&&void 0===t.zLabel&&(t.zLabel=String(t.zLabelVal)),!(isNaN(t.xerr)||"log"===t.xa.type&&t.xerr<=0)){var h=d.tickText(t.xa,t.xa.c2l(t.xerr),"hover").text;void 0!==t.xerrneg?t.xLabel+=" +"+h+" / -"+d.tickText(t.xa,t.xa.c2l(t.xerrneg),"hover").text:t.xLabel+=" ± "+h,"x"===e&&(t.distance+=1)}if(!(isNaN(t.yerr)||"log"===t.ya.type&&t.yerr<=0)){var p=d.tickText(t.ya,t.ya.c2l(t.yerr),"hover").text;void 0!==t.yerrneg?t.yLabel+=" +"+p+" / -"+d.tickText(t.ya,t.ya.c2l(t.yerrneg),"hover").text:t.yLabel+=" ± "+p,"y"===e&&(t.distance+=1)}var f=t.hoverinfo||t.trace.hoverinfo;return f&&"all"!==f&&(-1===(f=Array.isArray(f)?f:f.split("+")).indexOf("x")&&(t.xLabel=void 0),-1===f.indexOf("y")&&(t.yLabel=void 0),-1===f.indexOf("z")&&(t.zLabel=void 0),-1===f.indexOf("text")&&(t.text=void 0),-1===f.indexOf("name")&&(t.name=void 0)),t}function V(t,e,r){var i,a,o=r.container,s=r.fullLayout,l=s._size,c=r.event,u=!!e.hLinePoint,f=!!e.vLinePoint;if(o.selectAll(".spikeline").remove(),f||u){var m=p.combine(s.plot_bgcolor,s.paper_bgcolor);if(u){var g,y,v=e.hLinePoint;i=v&&v.xa,"cursor"===(a=v&&v.ya).spikesnap?(g=c.pointerX,y=c.pointerY):(g=i._offset+v.x,y=a._offset+v.y);var x,_,b=n.readability(v.color,m)<1.5?p.contrast(m):v.color,w=a.spikemode,T=a.spikethickness,A=a.spikecolor||b,k=d.getPxPosition(t,a);if(-1!==w.indexOf("toaxis")||-1!==w.indexOf("across")){if(-1!==w.indexOf("toaxis")&&(x=k,_=g),-1!==w.indexOf("across")){var M=a._counterDomainMin,S=a._counterDomainMax;"free"===a.anchor&&(M=Math.min(M,a.position),S=Math.max(S,a.position)),x=l.l+M*l.w,_=l.l+S*l.w}o.insert("line",":first-child").attr({x1:x,x2:_,y1:y,y2:y,"stroke-width":T,stroke:A,"stroke-dasharray":h.dashStyle(a.spikedash,T)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:x,x2:_,y1:y,y2:y,"stroke-width":T+2,stroke:m}).classed("spikeline",!0).classed("crisp",!0)}-1!==w.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:k+("right"!==a.side?T:-T),cy:y,r:T,fill:A}).classed("spikeline",!0)}if(f){var E,C,I=e.vLinePoint;i=I&&I.xa,a=I&&I.ya,"cursor"===i.spikesnap?(E=c.pointerX,C=c.pointerY):(E=i._offset+I.x,C=a._offset+I.y);var L,P,z=n.readability(I.color,m)<1.5?p.contrast(m):I.color,D=i.spikemode,O=i.spikethickness,R=i.spikecolor||z,F=d.getPxPosition(t,i);if(-1!==D.indexOf("toaxis")||-1!==D.indexOf("across")){if(-1!==D.indexOf("toaxis")&&(L=F,P=C),-1!==D.indexOf("across")){var B=i._counterDomainMin,j=i._counterDomainMax;"free"===i.anchor&&(B=Math.min(B,i.position),j=Math.max(j,i.position)),L=l.t+(1-j)*l.h,P=l.t+(1-B)*l.h}o.insert("line",":first-child").attr({x1:E,x2:E,y1:L,y2:P,"stroke-width":O,stroke:R,"stroke-dasharray":h.dashStyle(i.spikedash,O)}).classed("spikeline",!0).classed("crisp",!0),o.insert("line",":first-child").attr({x1:E,x2:E,y1:L,y2:P,"stroke-width":O+2,stroke:m}).classed("spikeline",!0).classed("crisp",!0)}-1!==D.indexOf("marker")&&o.insert("circle",":first-child").attr({cx:E,cy:F-("top"!==i.side?O:-O),r:O,fill:R}).classed("spikeline",!0)}}}function q(t,e){return!e||e.vLinePoint!==t._spikepoints.vLinePoint||e.hLinePoint!==t._spikepoints.hLinePoint}function G(t,e){return c.plainText(t||"",{len:e,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function W(t,e,r){var n=e[t+"a"],i=e[t+"Val"],a=e.cd[0];if("category"===n.type||"multicategory"===n.type)i=n._categoriesMap[i];else if("date"===n.type){var o=e.trace[t+"periodalignment"];if(o){var s=e.cd[e.index],l=s[t+"Start"];void 0===l&&(l=s[t]);var c=s[t+"End"];void 0===c&&(c=s[t]);var u=c-l;"end"===o?i+=u:"middle"===o&&(i+=u/2)}i=n.d2c(i)}return a&&a.t&&a.t.posLetter===n._id&&("group"===r.boxmode||"group"===r.violinmode)&&(i+=a.t.dPos),i}function Z(t){return t.offsetTop+t.clientTop}function Y(t){return t.offsetLeft+t.clientLeft}function X(t,e){var r=t._fullLayout,n=e.getBoundingClientRect(),a=n.left,o=n.top,s=a+n.width,l=o+n.height,c=i.apply3DTransform(r._invTransform)(a,o),u=i.apply3DTransform(r._invTransform)(s,l),h=c[0],p=c[1],f=u[0],d=u[1];return{x:h,y:p,width:f-h,height:d-p,top:Math.min(p,d),left:Math.min(h,f),right:Math.max(h,f),bottom:Math.max(p,d)}}}}),Sr=f({"src/components/fx/hoverlabel_defaults.js"(t,e){var r=le(),n=H(),i=$e().isUnifiedHover;e.exports=function(t,e,a,o){o=o||{};var s=e.legend;function l(t){o.font[t]||(o.font[t]=s?e.legend.font[t]:e.font[t])}e&&i(e.hovermode)&&(o.font||(o.font={}),l("size"),l("family"),l("color"),l("weight"),l("style"),l("variant"),s?(o.bgcolor||(o.bgcolor=n.combine(e.legend.bgcolor,e.paper_bgcolor)),o.bordercolor||(o.bordercolor=e.legend.bordercolor)):o.bgcolor||(o.bgcolor=e.paper_bgcolor)),a("hoverlabel.bgcolor",o.bgcolor),a("hoverlabel.bordercolor",o.bordercolor),a("hoverlabel.namelength",o.namelength),r.coerceFont(a,"hoverlabel.font",o.font),a("hoverlabel.align",o.align)}}}),Er=f({"src/components/fx/layout_global_defaults.js"(t,e){var r=le(),n=Sr(),i=j();e.exports=function(t,e){n(t,e,(function(n,a){return r.coerce(t,e,i,n,a)}))}}}),Cr=f({"src/components/fx/defaults.js"(t,e){var r=le(),n=N(),i=Sr();e.exports=function(t,e,a,o){var s=r.extendFlat({},o.hoverlabel);e.hovertemplate&&(s.namelength=-1),i(t,e,(function(i,a){return r.coerce(t,e,n,i,a)}),s)}}}),Ir=f({"src/components/fx/hovermode_defaults.js"(t,e){var r=le(),n=j();e.exports=function(t,e){function i(i,a){return void 0!==e[i]?e[i]:r.coerce(t,e,n,i,a)}return i("clickmode"),i("hoversubplots"),i("hovermode")}}}),Lr=f({"src/components/fx/layout_defaults.js"(t,e){var r=le(),n=j(),i=Ir(),a=Sr();e.exports=function(t,e){function o(i,a){return r.coerce(t,e,n,i,a)}i(t,e)&&(o("hoverdistance"),o("spikedistance")),"select"===o("dragmode")&&o("selectdirection");var s=e._has("mapbox"),l=e._has("map"),c=e._has("geo"),u=e._basePlotModules.length;"zoom"===e.dragmode&&((s||l||c)&&1===u||(s||l)&&c&&2===u)&&(e.dragmode="pan"),a(t,e,o),r.coerceFont(o,"hoverlabel.grouptitlefont",e.hoverlabel.font)}}}),Pr=f({"src/components/fx/calc.js"(t,e){var r=le(),n=qt();function i(t,e,n,i){i=i||r.identity,Array.isArray(t)&&(e[0][n]=i(t))}e.exports=function(t){var e=t.calcdata,a=t._fullLayout;function o(t){return function(e){return r.coerceHoverinfo({hoverinfo:e},{_module:t._module},a)}}for(var s=0;s"," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}}}),Br=f({"src/components/shapes/draw_newshape/constants.js"(t,e){e.exports={CIRCLE_SIDES:32,i000:0,i090:8,i180:16,i270:24,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}}}),jr=f({"src/components/selections/helpers.js"(t,e){var r=le().strTranslate;function n(t,e){switch(t.type){case"log":return t.p2d(e);case"date":return t.p2r(e,0,t.calendar);default:return t.p2r(e)}}e.exports={p2r:n,r2p:function(t,e){switch(t.type){case"log":return t.d2p(e);case"date":return t.r2p(e,0,t.calendar);default:return t.r2p(e)}},axValue:function(t){var e="y"===t._id.charAt(0)?1:0;return function(r){return n(t,r[e])}},getTransform:function(t){return r(t.xaxis._offset,t.yaxis._offset)}}}}),Nr=f({"src/components/shapes/draw_newshape/helpers.js"(t){var e=Ke(),r=Br(),n=r.CIRCLE_SIDES,i=r.SQRT2,a=jr(),o=a.p2r,s=a.r2p,l=[0,3,4,5,6,1,2],c=[0,3,4,1,2];function u(t,e){return Math.abs(t-e)<=1e-6}function h(t,e){var r=e[1]-t[1],n=e[2]-t[2];return Math.sqrt(r*r+n*n)}t.writePaths=function(t){var e=t.length;if(!e)return"M0,0Z";for(var r="",n=0;n0&&uf&&(t="X"),t}));return a>f&&(d=d.replace(/[\s,]*X.*/,""),r.log("Ignoring extra params in segment "+t)),u+d}))}(o,l,u);if("pixel"===o.xsizemode){var k=l(o.xanchor);h=k+o.x0+b,p=k+o.x1+w}else h=l(o.x0)+b,p=l(o.x1)+w;if("pixel"===o.ysizemode){var M=u(o.yanchor);f=M-o.y0+T,d=M-o.y1+A}else f=u(o.y0)+T,d=u(o.y1)+A;if("line"===m)return"M"+h+","+f+"L"+p+","+d;if("rect"===m)return"M"+h+","+f+"H"+p+"V"+d+"H"+h+"Z";var S=(h+p)/2,E=(f+d)/2,C=Math.abs(S-h),I=Math.abs(E-f),L="A"+C+","+I,P=S+C+","+E;return"M"+P+L+" 0 1,1 "+S+","+(E-I)+L+" 0 0,1 "+P+"Z"}}}),Gr=f({"src/components/shapes/display_labels.js"(t,e){var r=le(),n=ir(),i=Se(),a=Qe(),o=Nr().readPaths,s=Hr(),l=s.getPathString,c=Rt(),u=Me().FROM_TL;e.exports=function(t,e,h,p){if(p.selectAll(".shape-label").remove(),h.label.text||h.label.texttemplate){var f;if(h.label.texttemplate){var d={};if("path"!==h.type){var m=n.getFromId(t,h.xref),g=n.getFromId(t,h.yref);for(var y in c){var v=c[y](h,m,g);void 0!==v&&(d[y]=v)}}f=r.texttemplateStringForShapes(h.label.texttemplate,{},t._fullLayout._d3locale,d)}else f=h.label.text;var x,_,b,w,T={"data-index":e},A=h.label.font,k=p.append("g").attr(T).classed("shape-label",!0).append("text").attr({"data-notex":1}).classed("shape-label-text",!0).text(f);if(h.path){var M=l(t,h),S=o(M,t);x=1/0,b=1/0,_=-1/0,w=-1/0;for(var E=0;E=t?e-n:n-e,-180/Math.PI*Math.atan2(i,a)}(x,b,_,w):0),k.call((function(e){return e.call(a.font,A).attr({}),i.convertToTspans(e,t),e}));var G=function(t,e,r,n,i,a,o){var s,l,c,h,p=i.label.textposition,f=i.label.textangle,d=i.label.padding,m=i.type,g=Math.PI/180*a,y=Math.sin(g),v=Math.cos(g),x=i.label.xanchor,_=i.label.yanchor;if("line"===m){"start"===p?(s=t,l=e):"end"===p?(s=r,l=n):(s=(t+r)/2,l=(e+n)/2),"auto"===x&&(x="start"===p?"auto"===f?r>t?"left":rt?"right":rt?"right":rt?"left":r1&&(2!==t.length||"Z"!==t[1][0])&&(0===I&&(t[0][0]="M"),e[C]=t,k(),M())}}()}}function V(t,r){(function(t,r){if(e.length)for(var n=0;nb?(M=v,I="y0",S=b,L="y1"):(M=b,I="y1",S=v,L="y0"),rt(r),at(c,o),function(t,e,r){var n=e.xref,i=e.yref,o=a.getFromId(r,n),s=a.getFromId(r,i),l="";"paper"!==n&&!o.autorange&&(l+=n),"paper"!==i&&!s.autorange&&(l+=i),h.setClipUrl(t,l?"clip"+r._fullLayout._uid+l:null,r)}(e,o,t),et.moveFn="move"===O?nt:it,et.altKey=r.altKey)},doneFn:function(){_(t)||(d(e),ot(c),T(e,t,o),n.call("_guiRelayout",t,u.getUpdateObj()))},clickFn:function(){_(t)||ot(c)}};function rt(r){if(_(t))O=null;else if(B)O="path"===r.target.tagName?"move":"start-point"===r.target.attributes["data-line-point"].value?"resize-over-start-point":"resize-over-end-point";else{var n=et.element.getBoundingClientRect(),i=n.right-n.left,a=n.bottom-n.top,o=r.clientX-n.left,s=r.clientY-n.top,l=!j&&i>10&&a>10&&!r.shiftKey?f.getCursor(o/i,1-s/a):"move";d(e,l),O=l.split("-")[0]}}function nt(r,n){if("path"===o.type){var i=function(t){return t},a=i,u=i;R?N("xanchor",o.xanchor=J(w+r)):(a=function(t){return J($(t)+r)},V&&"date"===V.type&&(a=g.encodeDate(a))),F?N("yanchor",o.yanchor=Q(k+n)):(u=function(t){return Q(K(t)+n)},H&&"date"===H.type&&(u=g.encodeDate(u))),N("path",o.path=A(D,a,u))}else R?N("xanchor",o.xanchor=J(w+r)):(N("x0",o.x0=J(p+r)),N("x1",o.x1=J(x+r))),F?N("yanchor",o.yanchor=Q(k+n)):(N("y0",o.y0=Q(v+n)),N("y1",o.y1=Q(b+n)));e.attr("d",y(t,o)),at(c,o),l(t,s,o,U)}function it(r,n){if(j){var i=function(t){return t},a=i,u=i;R?N("xanchor",o.xanchor=J(w+r)):(a=function(t){return J($(t)+r)},V&&"date"===V.type&&(a=g.encodeDate(a))),F?N("yanchor",o.yanchor=Q(k+n)):(u=function(t){return Q(K(t)+n)},H&&"date"===H.type&&(u=g.encodeDate(u))),N("path",o.path=A(D,a,u))}else if(B){if("resize-over-start-point"===O){var h=p+r,f=F?v-n:v+n;N("x0",o.x0=R?h:J(h)),N("y0",o.y0=F?f:Q(f))}else if("resize-over-end-point"===O){var d=x+r,m=F?b-n:b+n;N("x1",o.x1=R?d:J(d)),N("y1",o.y1=F?m:Q(m))}}else{var _=function(t){return-1!==O.indexOf(t)},T=_("n"),q=_("s"),G=_("w"),W=_("e"),Z=T?M+n:M,Y=q?S+n:S,X=G?E+r:E,tt=W?C+r:C;F&&(T&&(Z=M-n),q&&(Y=S-n)),(!F&&Y-Z>10||F&&Z-Y>10)&&(N(I,o[I]=F?Z:Q(Z)),N(L,o[L]=F?Y:Q(Y))),tt-X>10&&(N(P,o[P]=R?X:J(X)),N(z,o[z]=R?tt:J(tt)))}e.attr("d",y(t,o)),at(c,o),l(t,s,o,U)}function at(t,e){(R||F)&&function(){var r="path"!==e.type,n=t.selectAll(".visual-cue").data([0]);n.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":1}).classed("visual-cue",!0);var a=$(R?e.xanchor:i.midRange(r?[e.x0,e.x1]:g.extractPathCoords(e.path,m.paramIsX))),o=K(F?e.yanchor:i.midRange(r?[e.y0,e.y1]:g.extractPathCoords(e.path,m.paramIsY)));if(a=g.roundPositionForSharpStrokeRendering(a,1),o=g.roundPositionForSharpStrokeRendering(o,1),R&&F){var s="M"+(a-1-1)+","+(o-1-1)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";n.attr("d",s)}else if(R){var l="M"+(a-1-1)+","+(o-9-1)+"v18 h2 v-18 Z";n.attr("d",l)}else{var c="M"+(a-9-1)+","+(o-1-1)+"h18 v2 h-18 Z";n.attr("d",c)}}()}function ot(t){t.selectAll(".visual-cue").remove()}f.init(et),tt.node().onmousemove=rt}(t,F,x,e,c,O):!0===x.editable&&F.style("pointer-events",z||u.opacity(C)*E<=.5?"stroke":"all");F.node().addEventListener("click",(function(){return function(t,e){if(b(t)){var r=+e.node().getAttribute("data-index");if(r>=0){if(r===t._fullLayout._activeShapeIndex)return void k(t);t._fullLayout._activeShapeIndex=r,t._fullLayout._deactivateShape=k,v(t)}}}(t,F)}))}x._input&&!0===x.visible&&("above"===x.layer?M(t._fullLayout._shapeUpperLayer):"paper"===x.xref||"paper"===x.yref?M(t._fullLayout._shapeLowerLayer):"between"===x.layer?M(w.shapelayerBetween):w._hadPlotinfo?M((w.mainplotinfo||w).shapelayer):M(t._fullLayout._shapeLowerLayer))}function T(t,e,r){var n=(r.xref+r.yref).replace(/paper/g,"").replace(/[xyz][1-9]* *domain/g,"");h.setClipUrl(t,n?"clip"+e._fullLayout._uid+n:null,e)}function A(t,e,r){return t.replace(m.segmentRE,(function(t){var n=0,i=t.charAt(0),a=m.paramIsX[i],o=m.paramIsY[i],s=m.numParams[i];return i+t.substr(1).replace(m.paramRE,(function(t){return n>=s||(a[n]?t=e(t):o[n]&&(t=r(t)),n++),t}))}))}function k(t){b(t)&&t._fullLayout._activeShapeIndex>=0&&(c(t),delete t._fullLayout._activeShapeIndex,v(t))}e.exports={draw:v,drawOne:w,eraseActiveShape:function(t){if(b(t)){c(t);var e=t._fullLayout._activeShapeIndex,r=(t.layout||{}).shapes||[];if(e1?(P=["toggleHover"],z=["resetViews"]):y?(L=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],z=["resetGeo"]):g?(P=["hoverClosest3d"],z=["resetCameraDefault3d","resetCameraLastSave3d"]):b?(L=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],z=["resetViewMapbox"]):w?(L=["zoomInMap","zoomOutMap"],P=["toggleHover"],z=["resetViewMap"]):v?P=["hoverClosestPie"]:k?(P=["hoverClosestCartesian","hoverCompareCartesian"],z=["resetViewSankey"]):P=["toggleHover"],m&&P.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(function(t){for(var e=0;en?i.substr(n):a.substr(r))+o:i+a+t*e:o}function d(t,e){for(var r=e._size,n=r.h/r.w,i={},a=Object.keys(t),o=0;os*x)||T)for(i=0;iz&&FL&&(L=F);p/=(L-I)/(2*P),I=c.l2r(I),L=c.l2r(L),c.range=c._input.range=S=t[1]||i[1]<=t[0])&&a[0]e[0])return!0}return!1}function b(r){var a,o,c,f,d,m,g=r._fullLayout,y=g._size,x=y.p,b=h.list(r,"",!0);if(g._paperdiv.style({width:r._context.responsive&&g.autosize&&!r._context._hasZeroWidth&&!r.layout.width?"100%":g.width+"px",height:r._context.responsive&&g.autosize&&!r._context._hasZeroHeight&&!r.layout.height?"100%":g.height+"px"}).selectAll(".main-svg").call(l.setSize,g.width,g.height),r._context.setBackground(r,g.paper_bgcolor),t.drawMainTitle(r),u.manage(r),!g._has("cartesian"))return n.previousPromises(r);function T(t,e,r){var n=t._lw/2;return"x"===t._id.charAt(0)?e?"top"===r?e._offset-x-n:e._offset+e._length+x+n:y.t+y.h*(1-(t.position||0))+n%1:e?"right"===r?e._offset+e._length+x+n:e._offset-x-n:y.l+y.w*(t.position||0)+n%1}for(a=0;a.5?"t":"b",o=t._fullLayout.margin[a],s=0;return"paper"===e.yref?s=r+e.pad.t+e.pad.b:"container"===e.yref&&(s=function(t,e,r,n,i){var a=0;return"middle"===r&&(a+=i/2),"t"===t?("top"===r&&(a+=i),a+=n-e*n):("bottom"===r&&(a+=i),a+=e*n),a}(a,n,i,t._fullLayout.height,r)+e.pad.t+e.pad.b),s>o?s:0}(t,r,m);if(g>0){(function(t,e,r,a){var o="title.automargin",s=t._fullLayout.title,l=s.y>.5?"t":"b",c={x:s.x,y:s.y,t:0,b:0},u={};"paper"===s.yref&&function(t,e,r,n,a){var o="paper"===e.yref?t._fullLayout._size.h:t._fullLayout.height,s=i.isTopAnchor(e)?n:n-a,l="b"===r?o-s:s;return!(i.isTopAnchor(e)&&"t"===r||i.isBottomAnchor(e)&&"b"===r)&&l=0;A--){var k=i.append("path").attr(g).style("opacity",A?.1:y).call(a.stroke,x).call(a.fill,v).call(o.dashLine,A?"solid":b,A?4+_:_);if(f(k,t,p),w){var M=s(t.layout,"selections",p);k.style({cursor:"move"});var S={element:k.node(),plotinfo:m,gd:t,editHelpers:M,isActiveSelection:!0},E=r(l,t);n(E,k,S)}else k.style("pointer-events",A?"all":"none");T[A]=k}var C=T[0];T[1].node().addEventListener("click",(function(){return function(t,e){if(h(t)){var r=+e.node().getAttribute("data-index");if(r>=0){if(r===t._fullLayout._activeSelectionIndex)return void d(t);t._fullLayout._activeSelectionIndex=r,t._fullLayout._deactivateSelection=d,u(t)}}}(t,C)}))}(t._fullLayout._selectionLayer)}function f(t,e,r){var n=r.xref+r.yref;o.setClipUrl(t,"clip"+e._fullLayout._uid+n,e)}function d(t){h(t)&&t._fullLayout._activeSelectionIndex>=0&&(i(t),delete t._fullLayout._activeSelectionIndex,u(t))}e.exports={draw:u,drawOne:p,activateLastSelection:function(t){if(h(t)){var e=t._fullLayout.selections.length-1;t._fullLayout._activeSelectionIndex=e,t._fullLayout._deactivateSelection=d,u(t)}}}}}),on=f({"node_modules/polybooljs/lib/build-log.js"(t,e){e.exports=function(){var t,e=0,r=!1;function n(e,r){return t.list.push({type:e,data:r?JSON.parse(JSON.stringify(r)):void 0}),t}return t={list:[],segmentId:function(){return e++},checkIntersection:function(t,e){return n("check",{seg1:t,seg2:e})},segmentChop:function(t,e){return n("div_seg",{seg:t,pt:e}),n("chop",{seg:t,pt:e})},statusRemove:function(t){return n("pop_seg",{seg:t})},segmentUpdate:function(t){return n("seg_update",{seg:t})},segmentNew:function(t,e){return n("new_seg",{seg:t,primary:e})},segmentRemove:function(t){return n("rem_seg",{seg:t})},tempStatus:function(t,e,r){return n("temp_status",{seg:t,above:e,below:r})},rewind:function(t){return n("rewind",{seg:t})},status:function(t,e,r){return n("status",{seg:t,above:e,below:r})},vert:function(e){return e===r?t:(r=e,n("vert",{x:e}))},log:function(t){return"string"!=typeof t&&(t=JSON.stringify(t,!1," ")),n("log",{txt:t})},reset:function(){return n("reset")},selected:function(t){return n("selected",{segs:t})},chainStart:function(t){return n("chain_start",{seg:t})},chainRemoveHead:function(t,e){return n("chain_rem_head",{index:t,pt:e})},chainRemoveTail:function(t,e){return n("chain_rem_tail",{index:t,pt:e})},chainNew:function(t,e){return n("chain_new",{pt1:t,pt2:e})},chainMatch:function(t){return n("chain_match",{index:t})},chainClose:function(t){return n("chain_close",{index:t})},chainAddHead:function(t,e){return n("chain_add_head",{index:t,pt:e})},chainAddTail:function(t,e){return n("chain_add_tail",{index:t,pt:e})},chainConnect:function(t,e){return n("chain_con",{index1:t,index2:e})},chainReverse:function(t){return n("chain_rev",{index:t})},chainJoin:function(t,e){return n("chain_join",{index1:t,index2:e})},done:function(){return n("done")}}}}}),sn=f({"node_modules/polybooljs/lib/epsilon.js"(t,e){e.exports=function(t){"number"!=typeof t&&(t=1e-10);var e={epsilon:function(e){return"number"==typeof e&&(t=e),t},pointAboveOrOnLine:function(e,r,n){var i=r[0],a=r[1],o=n[0],s=n[1],l=e[0];return(o-i)*(e[1]-a)-(s-a)*(l-i)>=-t},pointBetween:function(e,r,n){var i=e[1]-r[1],a=n[0]-r[0],o=e[0]-r[0],s=n[1]-r[1],l=o*a+i*s;return!(l-t)},pointsSameX:function(e,r){return Math.abs(e[0]-r[0])t!=o-i>t&&(a-c)*(i-u)/(o-u)+c-n>t&&(s=!s),a=c,o=u}return s}};return e}}}),ln=f({"node_modules/polybooljs/lib/linked-list.js"(t,e){e.exports={create:function(){var t={root:{root:!0,next:null},exists:function(e){return!(null===e||e===t.root)},isEmpty:function(){return null===t.root.next},getHead:function(){return t.root.next},insertBefore:function(e,r){for(var n=t.root,i=t.root.next;null!==i;){if(r(i))return e.prev=i.prev,e.next=i,i.prev.next=e,void(i.prev=e);n=i,i=i.next}n.next=e,e.prev=n,e.next=null},findTransition:function(e){for(var r=t.root,n=t.root.next;null!==n&&!e(n);)r=n,n=n.next;return{before:r===t.root?null:r,after:n,insert:function(t){return t.prev=r,t.next=n,r.next=t,null!==n&&(n.prev=t),t}}}};return t},node:function(t){return t.prev=null,t.next=null,t.remove=function(){t.prev.next=t.next,t.next&&(t.next.prev=t.prev),t.prev=null,t.next=null},t}}}}),cn=f({"node_modules/polybooljs/lib/intersecter.js"(t,e){var r=ln();e.exports=function(t,e,n){function i(t,e){return{id:n?n.segmentId():-1,start:t,end:e,myFill:{above:null,below:null},otherFill:null}}function a(t,e,r){return{id:n?n.segmentId():-1,start:t,end:e,myFill:{above:r.myFill.above,below:r.myFill.below},otherFill:null}}var o=r.create();function s(t,r){o.insertBefore(t,(function(n){var i=function(t,r,n,i,a,o){var s=e.pointsCompare(r,a);return 0!==s?s:e.pointsSame(n,o)?0:t!==i?t?1:-1:e.pointAboveOrOnLine(n,i?a:o,i?o:a)?1:-1}(t.isStart,t.pt,r,n.isStart,n.pt,n.other.pt);return i<0}))}function l(t,e){var n=function(t,e){var n=r.node({isStart:!0,pt:t.start,seg:t,primary:e,other:null,status:null});return s(n,t.end),n}(t,e);return function(t,e,n){var i=r.node({isStart:!1,pt:e.end,seg:e,primary:n,other:t,status:null});t.other=i,s(i,t.pt)}(n,t,e),n}function c(t,e){var r=a(e,t.seg.end,t.seg);return function(t,e){n&&n.segmentChop(t.seg,e),t.other.remove(),t.seg.end=e,t.other.pt=e,s(t.other,t.pt)}(t,e),l(r,t.primary)}function u(i,a){var s=r.create();function l(t){return s.findTransition((function(r){var n=function(t,r){var n=t.seg.start,i=t.seg.end,a=r.seg.start,o=r.seg.end;return e.pointsCollinear(n,a,o)?e.pointsCollinear(i,a,o)||e.pointAboveOrOnLine(i,a,o)?1:-1:e.pointAboveOrOnLine(n,a,o)?1:-1}(t,r.ev);return n>0}))}function u(t,r){var i=t.seg,a=r.seg,o=i.start,s=i.end,l=a.start,u=a.end;n&&n.checkIntersection(i,a);var h=e.linesIntersect(o,s,l,u);if(!1===h){if(!e.pointsCollinear(o,s,l)||e.pointsSame(o,u)||e.pointsSame(s,l))return!1;var p=e.pointsSame(o,l),f=e.pointsSame(s,u);if(p&&f)return r;var d=!p&&e.pointBetween(o,l,u),m=!f&&e.pointBetween(s,l,u);if(p)return m?c(r,s):c(t,u),r;d&&(f||(m?c(r,s):c(t,u)),c(r,o))}else 0===h.alongA&&(-1===h.alongB?c(t,l):0===h.alongB?c(t,h.pt):1===h.alongB&&c(t,u)),0===h.alongB&&(-1===h.alongA?c(r,o):0===h.alongA?c(r,h.pt):1===h.alongA&&c(r,s));return!1}for(var h=[];!o.isEmpty();){var p=o.getHead();if(n&&n.vert(p.pt[0]),p.isStart){let e=function(){if(d){var t=u(p,d);if(t)return t}return!!m&&u(p,m)};n&&n.segmentNew(p.seg,p.primary);var f=l(p),d=f.before?f.before.ev:null,m=f.after?f.after.ev:null;n&&n.tempStatus(p.seg,!!d&&d.seg,!!m&&m.seg);var g,y=e();if(y&&(t?(g=null===p.seg.myFill.below||p.seg.myFill.above!==p.seg.myFill.below)&&(y.seg.myFill.above=!y.seg.myFill.above):y.seg.otherFill=p.seg.myFill,n&&n.segmentUpdate(y.seg),p.other.remove(),p.remove()),o.getHead()!==p){n&&n.rewind(p.seg);continue}if(t)g=null===p.seg.myFill.below||p.seg.myFill.above!==p.seg.myFill.below,p.seg.myFill.below=m?m.seg.myFill.above:i,p.seg.myFill.above=g?!p.seg.myFill.below:p.seg.myFill.below;else if(null===p.seg.otherFill){var v;v=m?p.primary===m.primary?m.seg.otherFill.above:m.seg.myFill.above:p.primary?a:i,p.seg.otherFill={above:v,below:v}}n&&n.status(p.seg,!!d&&d.seg,!!m&&m.seg),p.other.status=f.insert(r.node({ev:p}))}else{var x=p.status;if(null===x)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(s.exists(x.prev)&&s.exists(x.next)&&u(x.prev.ev,x.next.ev),n&&n.statusRemove(x.ev.seg),x.remove(),!p.primary){var _=p.seg.myFill;p.seg.myFill=p.seg.otherFill,p.seg.otherFill=_}h.push(p.seg)}o.getHead().remove()}return n&&n.done(),h}return t?{addRegion:function(t){for(var r,n=t[t.length-1],a=0;aa!=f>a&&i<(p-u)*(a-h)/(f-h)+u&&(o=!o)}return o}}}),mn=f({"src/lib/polygon.js"(t,e){var r=Ct().dot,n=k().BADNUM,i=e.exports={};i.tester=function(t){var e,r=t.slice(),i=r[0][0],a=i,o=r[0][1],s=o;for((r[r.length-1][0]!==r[0][0]||r[r.length-1][1]!==r[0][1])&&r.push(r[0]),e=1;ea||c===n||cs||e&&l(t))}:function(t,e){var l=t[0],c=t[1];if(l===n||la||c===n||cs)return!1;var u,h,p,f,d,m=r.length,g=r[0][0],y=r[0][1],v=0;for(u=1;uMath.max(h,g)||c>Math.max(p,y)))if(cu||Math.abs(r(o,p))>i)return!0;return!1},i.filter=function(t,e){var r=[t[0]],n=0,a=0;function o(o){t.push(o);var s=r.length,l=n;r.splice(a+1);for(var c=l+1;c1&&o(t.pop()),{addPt:o,raw:t,filtered:r}}}}),gn=f({"src/components/selections/constants.js"(t,e){e.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}}}),yn=f({"src/components/selections/select.js"(t,e){var r=fn(),n=dn(),i=qt(),a=Qe().dashStyle,o=H(),s=Dr(),l=$e().makeEventData,c=Or(),u=c.freeMode,h=c.rectMode,p=c.drawMode,f=c.openMode,d=c.selectMode,m=Hr(),g=qr(),y=Wr(),v=_e().clearOutline,x=Nr(),_=x.handleEllipse,b=x.readPaths,w=Ur().newShapes,T=Vr(),A=an().activateLastSelection,k=le(),M=k.sorterAsc,S=mn(),E=Jt(),C=xe().getFromId,I=Rr(),L=nn().redrawReglTraces,P=gn(),z=P.MINSELECT,D=S.filter,O=S.tester,R=jr(),F=R.p2r,B=R.axValue,j=R.getTransform;function N(t){return void 0!==t.subplot}function U(t,e,r,n,i,a,o){var s,l,c,u,h,p,d,m,g,v=e._hoverdata,x=e._fullLayout.clickmode.indexOf("event")>-1,_=[];if(function(t){return t&&Array.isArray(t)&&!0!==t[0].hoverOnBox}(v)){W(t,e,a);var b=function(t,e){var r,n,i=t[0],a=-1,o=[];for(n=0;n0?function(t,e){var r,n,i,a=[];for(i=0;i0&&a.push(r);if(1===a.length&&a[0]===e.searchInfo&&(n=e.searchInfo.cd[0].trace).selectedpoints.length===e.pointNumbers.length){for(i=0;i1||(n+=e.selectedpoints.length)>1))return!1;return 1===n}(s)&&(p=K(b))){for(o&&o.remove(),g=0;g=0})(a)&&a._fullLayout._deactivateShape(a),function(t){return t._fullLayout._activeSelectionIndex>=0}(a)&&a._fullLayout._deactivateSelection(a);var o=a._fullLayout._zoomlayer,s=p(r),l=d(r);if(s||l){var c,u,h=o.selectAll(".select-outline-"+n.id);h&&a._fullLayout._outlining&&(s&&(c=w(h,t)),c&&i.call("_guiRelayout",a,{shapes:c}),l&&!N(t)&&(u=T(h,t)),u&&(a._fullLayout._noEmitSelectedAtStart=!0,i.call("_guiRelayout",a,{selections:u}).then((function(){e&&A(a)}))),a._fullLayout._outlining=!1)}n.selection={},n.selection.selectionDefs=t.selectionDefs=[],n.selection.mergedPolygons=t.mergedPolygons=[]}function Y(t){return t._id}function X(t,e,r,n){if(!t.calcdata)return[];var i,a,o,s=[],l=e.map(Y),c=r.map(Y);for(o=0;o0?n[0]:r;return!!e.selectedpoints&&e.selectedpoints.indexOf(i)>-1}function J(t,e,r){var n,a;for(n=0;n-1&&e;if(!a&&e){var et=ot(t,!0);if(et.length){var nt=et[0].xref,ft=et[0].yref;if(nt&&ft){var dt=ct(et);ut([C(t,nt,"x"),C(t,ft,"y")])(Q,dt)}}t._fullLayout._noEmitSelectedAtStart?t._fullLayout._noEmitSelectedAtStart=!1:tt&&ht(t,Q),f._reselect=!1}if(!a&&f._deselect){var mt=f._deselect;(function(t,e,r){for(var n=0;n=0)A._fullLayout._deactivateShape(A);else if(!x){var r=M.clickmode;E.done(Mt).then((function(){if(E.clear(Mt),2===t){for(_t.remove(),K=0;K-1&&U(e,A,n.xaxes,n.yaxes,n.subplot,n,_t),"event"===r&&ht(A,void 0);s.click(A,e,L.id)})).catch(k.error)}},n.doneFn=function(){At.remove(),E.done(Mt).then((function(){E.clear(Mt),!S&&$&&n.selectionDefs&&($.subtract=xt,n.selectionDefs.push($),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,Y)),(S||x)&&Z(n,S),n.doneFnCompleted&&n.doneFnCompleted(St),b&&ht(A,at)})).catch(k.error)}},clearOutline:v,clearSelectionsCache:Z,selectOnClick:U}}}),vn=f({"src/components/annotations/arrow_paths.js"(t,e){e.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]}}),xn=f({"src/constants/axis_placeable_objects.js"(t,e){e.exports={axisRefDescription:function(t,e,r){return["If set to a",t,"axis id (e.g. *"+t+"* or","*"+t+"2*), the `"+t+"` position refers to a",t,"coordinate. If set to *paper*, the `"+t+"`","position refers to the distance from the",e,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",e,"("+r+"). If set to a",t,"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",e,"of the domain of that axis: e.g.,","*"+t+"2 domain* refers to the domain of the second",t," axis and a",t,"position of 0.5 refers to the","point between the",e,"and the",r,"of the domain of the","second",t,"axis."].join(" ")}}}}),_n=f({"src/components/annotations/attributes.js"(t,e){var r=vn(),n=F(),i=ve(),a=ye().templatedArray;xn(),e.exports=a("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:n({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:r.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:r.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",i.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",i.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",i.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:n({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc"})}}),bn=f({"src/traces/scatter/constants.js"(t,e){e.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}}}),wn=f({"src/traces/scatter/fillcolor_attribute.js"(t,e){e.exports=function(t){return{valType:"color",editType:"style",anim:!0}}}}),Tn=f({"src/traces/scatter/attributes.js"(t,e){var r=Ce().axisHoverFormat,n=Ot().texttemplateAttrs,i=Ot().hovertemplateAttrs,a=Pe(),o=F(),s=zt().dash,l=zt().pattern,c=Qe(),u=bn(),h=R().extendFlat,p=wn();e.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},x0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dx:{valType:"number",dflt:1,editType:"calc",anim:!0},y:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},y0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dy:{valType:"number",dflt:1,editType:"calc",anim:!0},xperiod:{valType:"any",dflt:0,editType:"calc"},yperiod:{valType:"any",dflt:0,editType:"calc"},xperiod0:{valType:"any",editType:"calc"},yperiod0:{valType:"any",editType:"calc"},xperiodalignment:{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"},yperiodalignment:{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"},xhoverformat:r("x"),yhoverformat:r("y"),offsetgroup:{valType:"string",dflt:"",editType:"calc"},alignmentgroup:{valType:"string",dflt:"",editType:"calc"},stackgroup:{valType:"string",dflt:"",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc"},groupnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},stackgaps:{valType:"enumerated",values:["infer zero","interpolate"],dflt:"infer zero",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},texttemplate:n({},{}),hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"],editType:"calc"},hoveron:{valType:"flaglist",flags:["points","fills"],editType:"style"},hovertemplate:i({},{keys:u.eventDataKeys}),line:{color:{valType:"color",editType:"style",anim:!0},width:{valType:"number",min:0,dflt:2,editType:"style",anim:!0},shape:{valType:"enumerated",values:["linear","spline","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},smoothing:{valType:"number",min:0,max:1.3,dflt:1,editType:"plot"},dash:h({},s,{editType:"style"}),backoff:{valType:"number",min:0,dflt:"auto",arrayOk:!0,editType:"plot"},simplify:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},cliponaxis:{valType:"boolean",dflt:!0,editType:"plot"},fill:{valType:"enumerated",values:["none","tozeroy","tozerox","tonexty","tonextx","toself","tonext"],editType:"calc"},fillcolor:p(!0),fillgradient:h({type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],dflt:"none",editType:"calc"},start:{valType:"number",editType:"calc"},stop:{valType:"number",editType:"calc"},colorscale:{valType:"colorscale",editType:"style"},editType:"calc"}),fillpattern:l,marker:h({symbol:{valType:"enumerated",values:c.symbolList,dflt:"circle",arrayOk:!0,editType:"style"},opacity:{valType:"number",min:0,max:1,arrayOk:!0,editType:"style",anim:!0},angle:{valType:"angle",dflt:0,arrayOk:!0,editType:"plot",anim:!1},angleref:{valType:"enumerated",values:["previous","up"],dflt:"up",editType:"plot",anim:!1},standoff:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"plot",anim:!0},size:{valType:"number",min:0,dflt:6,arrayOk:!0,editType:"calc",anim:!0},maxdisplayed:{valType:"number",min:0,dflt:0,editType:"plot"},sizeref:{valType:"number",dflt:1,editType:"calc"},sizemin:{valType:"number",min:0,dflt:0,editType:"calc"},sizemode:{valType:"enumerated",values:["diameter","area"],dflt:"diameter",editType:"calc"},line:h({width:{valType:"number",min:0,arrayOk:!0,editType:"style",anim:!0},editType:"calc"},a("marker.line",{anim:!0})),gradient:{type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],arrayOk:!0,dflt:"none",editType:"calc"},color:{valType:"color",arrayOk:!0,editType:"calc"},editType:"calc"},editType:"calc"},a("marker",{anim:!0})),selected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},unselected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},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",arrayOk:!0,editType:"calc"},textfont:o({editType:"calc",colorEditType:"style",arrayOk:!0}),zorder:{valType:"integer",dflt:0,editType:"plot"}}}}),An=f({"src/components/selections/attributes.js"(t,e){var r=_n(),n=Tn().line,i=zt().dash,a=R().extendFlat,o=Pt().overrideAll,s=ye().templatedArray;xn(),e.exports=o(s("selection",{type:{valType:"enumerated",values:["rect","path"]},xref:a({},r.xref,{}),yref:a({},r.yref,{}),x0:{valType:"any"},x1:{valType:"any"},y0:{valType:"any"},y1:{valType:"any"},path:{valType:"string",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:.7,editType:"arraydraw"},line:{color:n.color,width:a({},n.width,{min:1,dflt:1}),dash:a({},i,{dflt:"dot"})}}),"arraydraw","from-root")}}),kn=f({"src/components/selections/defaults.js"(t,e){var r=le(),n=ir(),i=je(),a=An(),o=Hr();function s(t,e,i){function s(n,i){return r.coerce(t,e,a,n,i)}var l=s("path"),c="path"!==s("type",l?"path":"rect");c&&delete e.path,s("opacity"),s("line.color"),s("line.width"),s("line.dash");for(var u=["x","y"],h=0;h<2;h++){var p,f,d,m=u[h],g={_fullLayout:i},y=n.coerceRef(t,e,g,m);if((p=n.getFromId(g,y))._selectionIndices.push(e._index),d=o.rangeToShapePosition(p),f=o.shapePositionToRange(p),c){var v=m+"0",x=m+"1",_=t[v],b=t[x];t[v]=f(t[v],!0),t[x]=f(t[x],!0),n.coercePosition(e,g,s,y,v),n.coercePosition(e,g,s,y,x);var w=e[v],T=e[x];void 0!==w&&void 0!==T&&(e[v]=d(w),e[x]=d(T),t[v]=_,t[x]=b)}}c&&r.noneOrAll(t,e,["x0","x1","y0","y1"])}e.exports=function(t,e){i(t,e,{name:"selections",handleItemDefaults:s});for(var r=e.selections,n=0;n=0?Math.min(t,.9):1/(1/Math.max(t,-.3)+3.222))}function N(t,e,r,n,i){return t.append("path").attr("class","zoombox").style({fill:e>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",l(r,n)).attr("d",i+"Z")}function U(t,e,r){return t.append("path").attr("class","zoombox-corners").style({fill:u.background,stroke:u.defaultLine,"stroke-width":1,opacity:0}).attr("transform",l(e,r)).attr("d","M0,0Z")}function V(t,e,r,n,i,a){t.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),q(t,e,i,a)}function q(t,e,r,n){r||(t.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),e.transition().style("opacity",1).duration(200))}function G(t){r.select(t).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function W(t){P&&t.data&&t._context.showTips&&(n.notifier(n._(t,"Double-click to zoom back out"),"long"),P=!1)}function Z(t){var e=Math.floor(Math.min(t.b-t.t,t.r-t.l,L)/2);return"M"+(t.l-3.5)+","+(t.t-.5+e)+"h3v"+-e+"h"+e+"v-3h-"+(e+3)+"ZM"+(t.r+3.5)+","+(t.t-.5+e)+"h-3v"+-e+"h"+-e+"v-3h"+(e+3)+"ZM"+(t.r+3.5)+","+(t.b+.5-e)+"h-3v"+e+"h"+-e+"v3h"+(e+3)+"ZM"+(t.l-3.5)+","+(t.b+.5-e)+"h3v"+e+"h"+e+"v3h-"+(e+3)+"Z"}function Y(t,e,r,i,a){for(var o,s,l,c,u=!1,h={},p={},f=(a||{}).xaHash,d=(a||{}).yaHash,m=0;m=0)o._fullLayout._deactivateShape(o);else{var l=o._fullLayout.clickmode;if(G(o),2===n&&!yt&&function(){if(!t._transitioningWithDuration){var e=t._context.doubleClick,r=[];it&&(r=r.concat(H)),at&&(r=r.concat(K)),nt.xaxes&&(r=r.concat(nt.xaxes)),nt.yaxes&&(r=r.concat(nt.yaxes));var n,i,a={};if("reset+autosize"===e)for(e="autosize",i=0;i-1&&S(a,o,H,K,e.id,Lt),l.indexOf("event")>-1&&p.click(o,a,e.id);else if(1===n&&yt){var u=g?z:P,h="s"===g||"w"===x?0:1,f=u._name+".range["+h+"]",d=function(t,e){var r,n=t.range[e],a=Math.abs(n-t.range[1-e]);return"date"===t.type?n:"log"===t.type?(r=Math.ceil(Math.max(0,-Math.log(a)/Math.LN10))+3,i("."+r+"g")(Math.pow(10,n))):(r=Math.floor(Math.log(Math.abs(n))/Math.LN10)-Math.floor(Math.log(a)/Math.LN10)+4,i("."+String(r)+"g")(n))}(u,h),m="left",y="middle";if(u.fixedrange)return;g?(y="n"===g?"top":"bottom","right"===u.side&&(m="right")):"e"===x&&(m="right"),o._context.showAxisRangeEntryBoxes&&r.select(_t).call(c.makeEditable,{gd:o,immediate:!0,background:o._fullLayout.paper_bgcolor,text:String(d),fill:u.tickfont?u.tickfont.color:"#444",horizontalAlign:m,verticalAlign:y}).on("edit",(function(t){var e=u.d2r(t);void 0!==e&&s.call("_guiRelayout",o,f,e)}))}}}function Dt(e,r){if(t._transitioningWithDuration)return!1;var n=Math.max(0,Math.min(tt,ft*e+bt)),i=Math.max(0,Math.min(et,dt*r+wt)),a=Math.abs(n-bt),o=Math.abs(i-wt);function s(){St="",Tt.r=Tt.l,Tt.t=Tt.b,Ct.attr("d","M0,0Z")}if(Tt.l=Math.min(bt,n),Tt.r=Math.max(bt,n),Tt.t=Math.min(wt,i),Tt.b=Math.max(wt,i),rt.isSubplotConstrained)a>L||o>L?(St="xy",a/tt>o/et?(o=a*et/tt,wt>i?Tt.t=wt-o:Tt.b=wt+o):(a=o*tt/et,bt>n?Tt.l=bt-a:Tt.r=bt+a),Ct.attr("d",Z(Tt))):s();else if(nt.isSubplotConstrained)if(a>L||o>L){St="xy";var l=Math.min(Tt.l/tt,(et-Tt.b)/et),c=Math.max(Tt.r/tt,(et-Tt.t)/et);Tt.l=l*tt,Tt.r=c*tt,Tt.b=(1-l)*et,Tt.t=(1-c)*et,Ct.attr("d",Z(Tt))}else s();else!at||o0){var u;if(nt.isSubplotConstrained||!it&&1===at.length){for(u=0;u1&&(void 0!==a.maxallowed&&st===(a.range[0]1&&(void 0!==o.maxallowed&<===(o.range[0]1&&n.warn("Full array edits are incompatible with other edits",h);var v=l[""][""];if(s(v))e.set(null);else{if(!Array.isArray(v))return n.warn("Unrecognized full array edit value",h,v),!0;e.set(v)}return!m&&(p(g,y),f(t),!0)}var x,_,b,w,T,A,k,M,S=Object.keys(l).map(Number).sort(i),E=e.get(),C=E||[],I=u(y,h).get(),L=[],P=-1,z=C.length;for(x=0;xC.length-(k?0:1))n.warn("index out of range",h,b);else if(void 0!==A)T.length>1&&n.warn("Insertion & removal are incompatible with edits to the same index.",h,b),s(A)?L.push(b):k?("add"===A&&(A={}),C.splice(b,0,A),I&&I.splice(b,0,{})):n.warn("Unrecognized full object edit value",h,b,A),-1===P&&(P=b);else for(_=0;_=0;x--)C.splice(L[x],1),I&&I.splice(L[x],1);if(C.length?E||e.set(C):e.set(null),m)return!1;if(p(g,y),d!==r){var D;if(-1===P)D=S;else{for(z=Math.max(C.length,z),D=[],x=0;x=P);x++)D.push(b);for(x=P;x0&&n.log("Clearing previous rejected promises from queue."),t._promises=[]},t.cleanLayout=function(e){var r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var a=(i.subplotsRegistry.cartesian||{}).attrRegex,l=((i.subplotsRegistry.polar||{}).attrRegex,(i.subplotsRegistry.ternary||{}).attrRegex,(i.subplotsRegistry.gl3d||{}).attrRegex,Object.keys(e));for(r=0;r3?(x.x=1.02,x.xanchor="left"):x.x<-2&&(x.x=-.02,x.xanchor="right"),x.y>3?(x.y=1.02,x.yanchor="bottom"):x.y<-2&&(x.y=-.02,x.yanchor="top")),"rotate"===e.dragmode&&(e.dragmode="orbit"),o.clean(e),e.template&&e.template.layout&&t.cleanLayout(e.template.layout),e},t.cleanData=function(e){for(var a=0;a0)return t.substr(0,e)}t.hasParent=function(t,e){for(var r=g(e);r;){if(r in t)return!0;r=g(r)}return!1};var y=["x","y","z"];t.clearAxisTypes=function(t,e,r){for(var i=0;i=t.data.length||i<-t.data.length)throw new Error(r+" must be valid indices for gd.data.");if(e.indexOf(i,n+1)>-1||i>=0&&e.indexOf(-t.data.length+i)>-1||i<0&&e.indexOf(t.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function D(t,e,r){if(!Array.isArray(t.data))throw new Error("gd.data must be an array.");if(typeof e>"u")throw new Error("currentIndices is a required argument.");if(Array.isArray(e)||(e=[e]),z(t,e,"currentIndices"),typeof r<"u"&&!Array.isArray(r)&&(r=[r]),typeof r<"u"&&z(t,r,"newIndices"),typeof r<"u"&&e.length!==r.length)throw new Error("current and new indices must be of equal length.")}function O(t,e,n,o,s){!function(t,e,r,n){var a=i.isPlainObject(n);if(!Array.isArray(t.data))throw new Error("gd.data must be an array");if(!i.isPlainObject(e))throw new Error("update must be a key:value object");if(typeof r>"u")throw new Error("indices must be an integer or array of integers");for(var o in z(t,r,"indices"),e){if(!Array.isArray(e[o])||e[o].length!==r.length)throw new Error("attribute "+o+" must be an array of length equal to indices array length");if(a&&(!(o in n)||!Array.isArray(n[o])||n[o].length!==e[o].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}}(t,e,n,o);for(var l=function(t,e,n,o){var s,l,c,u,h,p=i.isPlainObject(o),f=[];for(var d in Array.isArray(n)||(n=[n]),n=P(n,t.data.length-1),e)for(var m=0;m0&&"string"!=typeof z.parts[O];)O--;var R=z.parts[O],F=z.parts[O-1]+"."+R,N=z.parts.slice(0,O).join("."),U=a(t.layout,N).get(),V=a(u,N).get(),q=z.get();if(void 0!==D){A[P]=D,S[P]="reverse"===R?D:B(q);var H=c.getLayoutValObject(u,z.parts);if(H&&H.impliedEdits&&null!==D)for(var G in H.impliedEdits)E(i.relativeAttr(P,G),H.impliedEdits[G]);if(-1!==["width","height"].indexOf(P))if(D){E("autosize",null);var Y="height"===P?"width":"height";E(Y,u[Y])}else u[P]=t._initialAutoSize[P];else if("autosize"===P)E("width",D?null:u.width),E("height",D?null:u.height);else if(F.match(W))L(F),a(u,N+"._inputRange").set(null);else if(F.match(Z)){L(F),a(u,N+"._inputRange").set(null);var $=a(u,N).get();$._inputDomain&&($._input.domain=$._inputDomain.slice())}else F.match(X)&&a(u,N+"._inputDomain").set(null);if("type"===R){C=U;var J="linear"===V.type&&"log"===D,Q="log"===V.type&&"linear"===D;if(J||Q){if(C&&C.range)if(V.autorange)J&&(C.range=C.range[1]>C.range[0]?[1,2]:[2,1]);else{var tt=C.range[0],et=C.range[1];J?(tt<=0&&et<=0&&E(N+".autorange",!0),tt<=0?tt=et/1e6:et<=0&&(et=tt/1e6),E(N+".range[0]",Math.log(tt)/Math.LN10),E(N+".range[1]",Math.log(et)/Math.LN10)):(E(N+".range[0]",Math.pow(10,tt)),E(N+".range[1]",Math.pow(10,et)))}else E(N+".autorange",!0);Array.isArray(u._subplots.polar)&&u._subplots.polar.length&&u[z.parts[0]]&&"radialaxis"===z.parts[1]&&delete u[z.parts[0]]._subplot.viewInitial["radialaxis.range"],l.getComponentMethod("annotations","convertCoords")(t,V,D,E),l.getComponentMethod("images","convertCoords")(t,V,D,E)}else E(N+".autorange",!0),E(N+".range",null);a(u,N+"._inputRange").set(null)}else if(R.match(M)){var rt=a(u,P).get(),nt=(D||{}).type;(!nt||"-"===nt)&&(nt="linear"),l.getComponentMethod("annotations","convertCoords")(t,rt,nt,E),l.getComponentMethod("images","convertCoords")(t,rt,nt,E)}var it=b.containerArrayMatch(P);if(it){r=it.array,n=it.index;var at=it.property,ot=H||{editType:"calc"};""!==n&&""===at&&(b.isAddVal(D)?S[P]=null:b.isRemoveVal(D)?S[P]=(a(s,r).get()||[])[n]:i.warn("unrecognized full object value",e)),k.update(T,ot),y[r]||(y[r]={});var st=y[r][n];st||(st=y[r][n]={}),st[at]=D,delete e[P]}else"reverse"===R?(U.range?U.range.reverse():(E(N+".autorange",!0),U.range=[1,0]),V.autorange?T.calc=!0:T.plot=!0):("dragmode"===P&&(!1===D&&!1!==q||!1!==D&&!1===q)||u._has("scatter-like")&&u._has("regl")&&"dragmode"===P&&("lasso"===D||"select"===D)&&"lasso"!==q&&"select"!==q?T.plot=!0:H?k.update(T,H):T.calc=!0,z.set(D))}}for(r in y)b.applyContainerArrayChanges(t,f(s,r),y[r],T,f)||(T.plot=!0);for(var lt in I){var ct=(C=h.getFromId(t,lt))&&C._constraintGroup;if(ct)for(var ut in T.calc=!0,ct)I[ut]||(h.getFromId(t,ut)._constraintShrinkable=!0)}(K(t)||e.height||e.width)&&(T.plot=!0);var ht=u.shapes;for(n=0;n1;)if(n.pop(),void 0!==(r=a(e,n.join(".")+".uirevision").get()))return r;return e.uirevision}function it(t,e){for(var r=0;r=a.length?a[0]:a[t]:a}function l(t){return Array.isArray(o)?t>=o.length?o[0]:o[t]:o}function c(t,e){var r=0;return function(){if(t&&++r===e)return t()}}return void 0===n._frameWaitingCnt&&(n._frameWaitingCnt=0),new Promise((function(o,h){var p=0;function f(t){return Array.isArray(a)?p>=a.length?t.transitionOpts=a[p]:t.transitionOpts=a[0]:t.transitionOpts=a,p++,t}var d,m,g=[],y=null==e,v=Array.isArray(e);if(y||v||!i.isPlainObject(e)){if(y||-1!==["string","number"].indexOf(typeof e))for(d=0;d0&&bb)&&T.push(m);g=T}}g.length>0?function(e){if(0!==e.length){for(var i=0;in._timeToNext&&function(){n._currentFrame&&n._currentFrame.onComplete&&n._currentFrame.onComplete();var e=n._currentFrame=n._frameQueue.shift();if(e){var r=e.name?e.name.toString():null;t._fullLayout._currentFrame=r,n._lastFrameAt=Date.now(),n._timeToNext=e.frameOpts.duration,u.transition(t,e.frame.data,e.frame.layout,w.coerceTraceIndices(t,e.frame.traces),e.frameOpts,e.transitionOpts).then((function(){e.onComplete&&e.onComplete()})),t.emit("plotly_animatingframe",{name:r,frame:e.frame,animation:{frame:e.frameOpts,transition:e.transitionOpts}})}else t.emit("plotly_animated"),window.cancelAnimationFrame(n._animationRaf),n._animationRaf=null}()};e()}()}}(g):(t.emit("plotly_animated"),o())}))},t.addFrames=function(t,e,r){if(t=i.getGraphDiv(t),null==e)return Promise.resolve();if(!i.isPlotDiv(t))throw new Error("This element is not a Plotly plot: "+t+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var n,a,o,l,c=t._transitionData._frames,h=t._transitionData._frameHash;if(!Array.isArray(e))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+e);var p=c.length+2*e.length,f=[],d={};for(n=e.length-1;n>=0;n--)if(i.isPlainObject(e[n])){var m=e[n].name,g=(h[m]||d[m]||{}).name,y=e[n].name,v=h[g]||d[g];g&&y&&"number"==typeof y&&v&&S<5&&(S++,i.warn('addFrames: overwriting frame "'+(h[g]||d[g]).name+'" with a frame whose name of type "number" also equates to "'+g+'". This is valid but may potentially lead to unexpected behavior since all plotly.js frame names are stored internally as strings.'),5===S&&i.warn("addFrames: This API call has yielded too many of these warnings. For the rest of this call, further warnings about numeric frame names will be suppressed.")),d[m]={name:m},f.push({frame:u.supplyFrameDefaults(e[n]),index:r&&void 0!==r[n]&&null!==r[n]?r[n]:p+n})}f.sort((function(t,e){return t.index>e.index?-1:t.index=0;n--){if("number"==typeof(a=f[n].frame).name&&i.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!a.name)for(;h[a.name="frame "+t._transitionData._counter++];);if(h[a.name]){for(o=0;o=0;r--)n=e[r],o.push({type:"delete",index:n}),l.unshift({type:"insert",index:n,value:a[n]});var c=u.modifyFrames,h=u.modifyFrames,p=[t,l],f=[t,o];return s&&s.add(t,c,p,h,f),u.modifyFrames(t,o)},t.addTraces=function e(r,n,a){r=i.getGraphDiv(r);var o,l,c=[],u=t.deleteTraces,h=e,p=[r,c],f=[r,n];for(function(t,e,r){var n,i;if(!Array.isArray(t.data))throw new Error("gd.data must be an array.");if(typeof e>"u")throw new Error("traces must be defined.");for(Array.isArray(e)||(e=[e]),n=0;n"u")return l=t.redraw(r),s.add(r,u,p,h,f),l;Array.isArray(a)||(a=[a]);try{D(r,c,a)}catch(t){throw r.data.splice(r.data.length-n.length,n.length),t}return s.startSequence(r),s.add(r,u,p,h,f),l=t.moveTraces(r,c,a),s.stopSequence(r),l},t.deleteTraces=function e(r,n){r=i.getGraphDiv(r);var a,o,l=[],c=t.addTraces,u=e,h=[r,l,n],p=[r,n];if(typeof n>"u")throw new Error("indices must be an integer or array of integers.");for(Array.isArray(n)||(n=[n]),z(r,n,"indices"),(n=P(n,r.data.length-1)).sort(i.sorterDes),a=0;a=0&&r"u")for(a=[],o=0;o=0&&r")?"":e.html(t).text()}));return e.remove(),n}(_),(_=_.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")).replace(s,"'")}}}),Fn=f({"src/snapshot/svgtoimg.js"(t,e){var r=le(),n=pe().EventEmitter,i=On();e.exports=function(t){var e=t.emitter||new n,a=new Promise((function(n,a){var o,s,l=window.Image,c=t.svg,u=t.format||"png",h=t.canvas,p=t.scale||1,f=t.width||300,d=t.height||150,m=p*f,g=p*d,y=h.getContext("2d",{willReadFrequently:!0}),v=new l;"svg"===u||r.isSafari()?s=i.encodeSVG(c):(o=i.createBlob(c,"svg"),s=i.createObjectURL(o)),h.width=m,h.height=g,v.onload=function(){var r;switch(o=null,i.revokeObjectURL(s),"svg"!==u&&y.drawImage(v,0,0,m,g),u){case"jpeg":r=h.toDataURL("image/jpeg");break;case"png":r=h.toDataURL("image/png");break;case"webp":r=h.toDataURL("image/webp");break;case"svg":r=s;break;default:var l="Image format is not jpeg, png, svg or webp.";if(a(new Error(l)),!t.promise)return e.emit("error",l)}n(r),t.promise||e.emit("success",r)},v.onerror=function(r){if(o=null,i.revokeObjectURL(s),a(r),!t.promise)return e.emit("error",r)},v.src=s}));return t.promise?a:e}}}),Bn=f({"src/plot_api/to_image.js"(t,e){var r=A(),n=Dn(),i=Ae(),a=le(),o=On(),s=Rn(),l=Fn(),c=y().version,u={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};e.exports=function(t,e){var h,p,f,d;function m(t){return!(t in e)||a.validate(e[t],u[t])}if(e=e||{},a.isPlainObject(t)?(h=t.data||[],p=t.layout||{},f=t.config||{},d={}):(t=a.getGraphDiv(t),h=a.extendDeep([],t.data),p=a.extendDeep({},t.layout),f=t._context,d=t._fullLayout||{}),!m("width")&&null!==e.width||!m("height")&&null!==e.height)throw new Error("Height and width should be pixel values.");if(!m("format"))throw new Error("Export format is not "+a.join2(u.format.values,", "," or ")+".");var g={};function y(t,r){return a.coerce(e,g,u,t,r)}var v=y("format"),x=y("width"),_=y("height"),b=y("scale"),w=y("setBackground"),T=y("imageDataOnly"),A=document.createElement("div");A.style.position="absolute",A.style.left="-5000px",document.body.appendChild(A);var k=a.extendFlat({},p);x?k.width=x:null===e.width&&r(d.width)&&(k.width=d.width),_?k.height=_:null===e.height&&r(d.height)&&(k.height=d.height);var M=a.extendFlat({},f,{_exportedPlot:!0,staticPlot:!0,setBackground:w}),S=o.getRedrawFunc(A);function E(){return new Promise((function(t){setTimeout(t,o.getDelay(A._fullLayout))}))}function C(){return new Promise((function(t,e){var r=s(A,v,b),u=A._fullLayout.width,h=A._fullLayout.height;function p(){n.purge(A),document.body.removeChild(A)}if("full-json"===v){var f=i.graphJson(A,!1,"keepdata","object",!0,!0);return f.version=c,f=JSON.stringify(f),p(),t(T?f:o.encodeJSON(f))}if(p(),"svg"===v)return t(T?r:o.encodeSVG(r));var d=document.createElement("canvas");d.id=a.randstr(),l({format:v,width:u,height:h,scale:b,canvas:d,svg:r,promise:!0}).then(t).catch(e)}))}return new Promise((function(t,e){n.newPlot(A,h,k,M).then(S).then(E).then(C).then((function(e){t(function(t){return T?t.replace(o.IMAGE_URL_PREFIX,""):t}(e))})).catch((function(t){e(t)}))}))}}}),jn=f({"src/plot_api/validate.js"(t,e){var r=le(),n=Ae(),i=ge(),a=Y().dfltConfig,o=r.isPlainObject,s=Array.isArray,l=r.isArrayOrTypedArray;function c(t,e,n,i,a,u){u=u||[];for(var h=Object.keys(t),m=0;mx.length&&i.push(p("unused",a,y.concat(x.length)));var k,M,S,E,C,I=x.length,L=Array.isArray(A);if(L&&(I=Math.min(I,A.length)),2===_.dimensions)for(M=0;Mx[M].length&&i.push(p("unused",a,y.concat(M,x[M].length)));var P=x[M].length;for(k=0;k<(L?Math.min(P,A[M].length):P);k++)S=L?A[M][k]:A,E=v[M][k],C=x[M][k],r.validate(E,S)?C!==E&&C!==+E&&i.push(p("dynamic",a,y.concat(M,k),E,C)):i.push(p("value",a,y.concat(M,k),E))}else i.push(p("array",a,y.concat(M),v[M]));else for(M=0;M1&&f.push(p("object","layout"))),n.supplyDefaults(d);for(var m=d._fullData,g=l.length,y=0;yT?h.push({code:"unused",traceType:v,templateCount:w,dataCount:T}):T>w&&h.push({code:"reused",traceType:v,templateCount:w,dataCount:T})}}else h.push({code:"data"});if(function t(e,n){for(var i in e)if("_"!==i.charAt(0)){var a=e[i],o=f(e,i,n);r(a)?(Array.isArray(e)&&!1===a._template&&a.templateitemname&&h.push({code:"missing",path:o,templateitemname:a.templateitemname}),t(a,o)):Array.isArray(a)&&d(a)&&t(a,o)}}({data:g,layout:p},""),h.length)return h.map(m)}}}),qn=f({"src/plot_api/index.js"(t){var e=Dn();t._doPlot=e._doPlot,t.newPlot=e.newPlot,t.restyle=e.restyle,t.relayout=e.relayout,t.redraw=e.redraw,t.update=e.update,t._guiRestyle=e._guiRestyle,t._guiRelayout=e._guiRelayout,t._guiUpdate=e._guiUpdate,t._storeDirectGUIEdit=e._storeDirectGUIEdit,t.react=e.react,t.extendTraces=e.extendTraces,t.prependTraces=e.prependTraces,t.addTraces=e.addTraces,t.deleteTraces=e.deleteTraces,t.moveTraces=e.moveTraces,t.purge=e.purge,t.addFrames=e.addFrames,t.deleteFrames=e.deleteFrames,t.animate=e.animate,t.setPlotConfig=e.setPlotConfig;var r=It().getGraphDiv,n=Zr().eraseActiveShape;t.deleteActiveShape=function(t){return n(r(t))},t.toImage=Bn(),t.validate=jn(),t.downloadImage=Un();var i=Vn();t.makeTemplate=i.makeTemplate,t.validateTemplate=i.validateTemplate}}),Hn=f({"src/traces/scatter/xy_defaults.js"(t,e){var r=le(),n=qt();e.exports=function(t,e,i,a){var o,s=a("x"),l=a("y");if(n.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y"],i),s){var c=r.minRowLength(s);l?o=Math.min(c,r.minRowLength(l)):(o=c,a("y0"),a("dy"))}else{if(!l)return 0;o=r.minRowLength(l),a("x0"),a("dx")}return e._length=o,o}}}),Gn=f({"src/traces/scatter/period_defaults.js"(t,e){var r=le().dateTick0,n=k().ONEWEEK;function i(t,e){return r(e,t%n==0?1:0)}e.exports=function(t,e,r,n,a){if(a||(a={x:!0,y:!0}),a.x){var o=n("xperiod");o&&(n("xperiod0",i(o,e.xcalendar)),n("xperiodalignment"))}if(a.y){var s=n("yperiod");s&&(n("yperiod0",i(s,e.ycalendar)),n("yperiodalignment"))}}}}),Wn=f({"src/traces/scatter/stack_defaults.js"(t,e){var r=["orientation","groupnorm","stackgaps"];e.exports=function(t,e,n,i){var a=n._scatterStackOpts,o=i("stackgroup");if(o){var s=e.xaxis+e.yaxis,l=a[s];l||(l=a[s]={});var c=l[o],u=!1;c?c.traces.push(e):(c=l[o]={traceIndices:[],traces:[e]},u=!0);for(var h={orientation:e.x&&!e.y?"h":"v"},p=0;p=0;p--){var f=t[p];if("scatter"===f.type&&f.xaxis===u.xaxis&&f.yaxis===u.yaxis){f.opacity=void 0;break}}}}}}}),ei=f({"src/traces/scatter/layout_defaults.js"(t,e){var r=le(),n=be();e.exports=function(t,e){var i,a="group"===e.barmode;"group"===e.scattermode&&(i=a?e.bargap:.2,r.coerce(t,e,n,"scattergap",i))}}}),ri=f({"src/plots/cartesian/align_period.js"(t,e){var r=A(),n=le(),i=n.dateTime2ms,a=n.incrementMonth,o=k().ONEAVGMONTH;e.exports=function(t,e,n,s){if("date"!==e.type)return{vals:s};var l=t[n+"periodalignment"];if(!l)return{vals:s};var c,u=t[n+"period"];if(r(u)){if((u=+u)<=0)return{vals:s}}else if("string"==typeof u&&"M"===u.charAt(0)){var h=+u.substring(1);if(!(h>0&&Math.round(h)===h))return{vals:s};c=h}for(var p=e.calendar,f="start"===l,d="end"===l,m=t[n+"period0"],g=i(m,p)||0,y=[],v=[],x=[],_=s.length,b=0;b<_;b++){var w,T,A,k=s[b];if(c){for(w=Math.round((k-g)/(c*o)),A=a(g,c*w,p);A>k;)A=a(A,-c,p);for(;A<=k;)A=a(A,c,p);T=a(A,-c,p)}else{for(A=g+(w=Math.round((k-g)/u))*u;A>k;)A-=u;for(;A<=k;)A+=u;T=A-u}y[b]=f?T:d?A:(T+A)/2,v[b]=T,x[b]=A}return{vals:y,starts:v,ends:x}}}}),ni=f({"src/traces/scatter/colorscale_calc.js"(t,e){var r=Ee().hasColorscale,n=We(),i=Ye();e.exports=function(t,e){i.hasLines(e)&&r(e,"line")&&n(t,e,{vals:e.line.color,containerStr:"line",cLetter:"c"}),i.hasMarkers(e)&&(r(e,"marker")&&n(t,e,{vals:e.marker.color,containerStr:"marker",cLetter:"c"}),r(e,"marker.line")&&n(t,e,{vals:e.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}}}),ii=f({"src/traces/scatter/arrays_to_calcdata.js"(t,e){var r=le();e.exports=function(t,e){for(var n=0;nd&&I[y].gap;)y--;for(x=I[y].s,g=I.length-1;g>y;g--)I[g].s=x;for(;dh+c||!r(u))}for(var f=0;fS[h]&&h0?o:s)/(I._m*z*(I._m>0?o:s)))),a*=1e3}if(l===i){if(P&&(l=I.c2p(n.y,!0)),l===i)return!1;l*=1e3}return[a,l]}function Y(t,e,r,n){var i=r-t,a=n-e,o=.5-t,s=.5-e,l=i*i+a*a,c=i*o+a*s;if(c>0&&cot||t[1]lt)return[u(t[0],at,ot),u(t[1],st,lt)]}function ht(t,e){if(t[0]===e[0]&&(t[0]===at||t[0]===ot)||t[1]===e[1]&&(t[1]===st||t[1]===lt))return!0}function pt(t,e,r){return function(n,i){var a=ut(n),o=ut(i),s=[];if(a&&o&&ht(a,o))return s;a&&s.push(a),o&&s.push(o);var c=2*l.constrain((n[t]+i[t])/2,e,r)-((a||n)[t]+(o||i)[t]);return c&&((a&&o?c>0==a[t]>o[t]?a:o:a||o)[t]+=c),s}}function ft(t){var e=t[0],r=t[1],n=e===G[W-1][0],i=r===G[W-1][1];if(!n||!i)if(W>1){var a=e===G[W-2][0],o=r===G[W-2][1];n&&(e===at||e===ot)&&a?o?W--:G[W-1]=t:i&&(r===st||r===lt)&&o?a?W--:G[W-1]=t:G[W++]=t}else G[W++]=t}function dt(t){G[W-1][0]!==t[0]&&G[W-1][1]!==t[1]&&ft([Q,tt]),ft(t),et=null,Q=tt=0}"linear"===j||"spline"===j?nt=function(t,e){for(var r=[],n=0,i=0;i<4;i++){var a=ct[i],o=c(t[0],t[1],e[0],e[1],a[0],a[1],a[2],a[3]);o&&(!n||Math.abs(o.x-r[0][0])>1||Math.abs(o.y-r[0][1])>1)&&(o=[o.x,o.y],n&&$(o,t)<$(r[0],t)?r.unshift(o):r.push(o),n++)}return r}:"hv"===j||"vh"===j?nt=function(t,e){var r=[],n=ut(t),i=ut(e);return n&&i&&ht(n,i)||(n&&r.push(n),i&&r.push(i)),r}:"hvh"===j?nt=pt(0,at,ot):"vhv"===j&&(nt=pt(1,st,lt));var mt=l.isArrayOrTypedArray(R);function gt(e){if(e&&O&&(e.i=n,e.d=t,e.trace=E,e.marker=mt?R[e.i]:R,e.backoff=O),M=e[0]/z,S=e[1]/D,K=e[0]ot?ot:0,J=e[1]lt?lt:0,K||J){if(W)if(et){var r=nt(et,e);r.length>1&&(dt(r[0]),G[W++]=r[1])}else rt=nt(G[W-1],e)[0],G[W++]=rt;else G[W++]=[K||e[0],J||e[1]];var i=G[W-1];K&&J&&(i[0]!==K||i[1]!==J)?(et&&(Q!==K&&tt!==J?ft(Q&&tt?function(t,e){var r=e[0]-t[0],n=(e[1]-t[1])/r;return(t[1]*e[0]-e[1]*t[0])/r>0?[n>0?at:ot,lt]:[n>0?ot:at,st]}(et,e):[Q||K,tt||J]):Q&&tt&&ft([Q,tt])),ft([K,J])):Q-K&&tt-J&&ft([K||Q,J||tt]),et=e,Q=K,tt=J}else et&&dt(nt(et,e)[0]),G[W++]=e}for(n=0;nX(m,yt))break;p=m,(w=v[0]*y[0]+v[1]*y[1])>_?(_=w,f=m,g=!1):w=t.length||!m)break;gt(m),a=m}}else gt(f)}et&&ft([Q||et[0],tt||et[1]]),V.push(G.slice(0,W))}var vt=j.slice(j.length-1);if(O&&"h"!==vt&&"v"!==vt){for(var xt=!1,_t=-1,bt=[],wt=0;wt=0?l=f:(l=f=p,p++),l=u[0]&&t.x<=u[1]&&t.y>=h[0]&&t.y<=h[1]})),m=Math.ceil(d.length/f),g=0;o.forEach((function(t,r){var n=t[0].trace;l.hasMarkers(n)&&n.marker.maxdisplayed>0&&r0;function x(t){return v?t.transition():t}var _=u.xaxis,b=u.yaxis,w=p[0].trace,T=w.line,A=r.select(d),k=a(A,"g","errorbars"),M=a(A,"g","lines"),S=a(A,"g","points"),E=a(A,"g","text");if(n.getComponentMethod("errorbars","plot")(t,k,u,m),!0===w.visible){x(A).style("opacity",w.opacity);var C,I,L,P,z=w.fill.charAt(w.fill.length-1);"x"!==z&&"y"!==z&&(z=""),"y"===z?(L=1,P=b.c2p(0,!0)):"x"===z&&(L=0,P=_.c2p(0,!0)),p[0][u.isRangePlot?"nodeRangePlot3":"node3"]=A;var D="",O=[],R=w._prevtrace,F=null,B=null;R&&(D=R._prevRevpath||"",I=R._nextFill,O=R._ownPolygons,F=R._fillsegments,B=R._fillElement);var j,N,U,V,q,H,G,W,Z="",Y="",X=[];w._polygons=[];var $=[],K=[],J=i.noop;if(C=w._ownFill,l.hasLines(w)||"none"!==w.fill){I&&I.datum(p),-1!==["hv","vh","hvh","vhv"].indexOf(T.shape)?(U=s.steps(T.shape),V=s.steps(T.shape.split("").reverse().join(""))):U=V="spline"===T.shape?function(t){var e=t[t.length-1];return t.length>1&&t[0][0]===e[0]&&t[0][1]===e[1]?s.smoothclosed(t.slice(1),T.smoothing):s.smoothopen(t,T.smoothing)}:function(t){return"M"+t.join("L")},q=function(t){return V(t.reverse())},K=c(p,{xaxis:_,yaxis:b,trace:w,connectGaps:w.connectgaps,baseTolerance:Math.max(T.width||1,3)/4,shape:T.shape,backoff:T.backoff,simplify:T.simplify,fill:w.fill}),$=new Array(K.length);var Q=0;for(g=0;g0,g=u(t,e,n);(h=i.selectAll("g.trace").data(g,(function(t){return t[0].trace.uid}))).enter().append("g").attr("class",(function(t){return"trace scatter trace"+t[0].trace.uid})).style("stroke-miterlimit",2),h.order(),function(t,e,n){e.each((function(e){var i=a(r.select(this),"g","fills");s.setClipUrl(i,n.layerClipId,t);var l=e[0].trace,c=[];l._ownfill&&c.push("_ownFill"),l._nexttrace&&c.push("_nextFill");var u=i.selectAll("g").data(c,o);u.enter().append("g"),u.exit().each((function(t){l[t]=null})).remove(),u.order().each((function(t){l[t]=a(r.select(this),"path","js-fill")}))}))}(t,h,e),m?(c&&(f=c()),r.transition().duration(l.duration).ease(l.easing).each("end",(function(){f&&f()})).each("interrupt",(function(){f&&f()})).each((function(){i.selectAll("g.trace").each((function(r,n){p(t,n,e,r,g,this,l)}))}))):h.each((function(r,n){p(t,n,e,r,g,this,l)})),d&&h.exit().remove(),i.selectAll("path:not([d])").remove()}}}),fi=f({"src/traces/scatter/marker_colorbar.js"(t,e){e.exports={container:"marker",min:"cmin",max:"cmax"}}}),di=f({"src/traces/scatter/format_labels.js"(t,e){var r=ir();e.exports=function(t,e,n){var i={},a={_fullLayout:n},o=r.getFromTrace(a,e,"x"),s=r.getFromTrace(a,e,"y"),l=t.orig_x;void 0===l&&(l=t.x);var c=t.orig_y;return void 0===c&&(c=t.y),i.xLabel=r.tickText(o,o.c2l(l),!0).text,i.yLabel=r.tickText(s,s.c2l(c),!0).text,i}}}),mi=f({"src/traces/scatter/style.js"(t,e){var r=x(),n=Qe(),i=qt();function a(t,e,r){n.pointStyle(t.selectAll("path.point"),e,r)}function o(t,e,r){n.textPointStyle(t.selectAll("text"),e,r)}e.exports={style:function(t){var e=r.select(t).selectAll("g.trace.scatter");e.style("opacity",(function(t){return t[0].trace.opacity})),e.selectAll("g.points").each((function(e){a(r.select(this),e.trace||e[0].trace,t)})),e.selectAll("g.text").each((function(e){o(r.select(this),e.trace||e[0].trace,t)})),e.selectAll("g.trace path.js-line").call(n.lineGroupStyle),e.selectAll("g.trace path.js-fill").call(n.fillGroupStyle,t,!1),i.getComponentMethod("errorbars","style")(e)},stylePoints:a,styleText:o,styleOnSelect:function(t,e,r){var i=e[0].trace;i.selectedpoints?(n.selectedPointStyle(r.selectAll("path.point"),i),n.selectedTextStyle(r.selectAll("text"),i)):(a(r,i,t),o(r,i,t))}}}}),gi=f({"src/traces/scatter/get_trace_color.js"(t,e){var r=H(),n=Ye();e.exports=function(t,e){var i,a;if("lines"===t.mode)return(i=t.line.color)&&r.opacity(i)?i:t.fillcolor;if("none"===t.mode)return t.fill?t.fillcolor:"";var o=e.mcc||(t.marker||{}).color,s=e.mlcc||((t.marker||{}).line||{}).color;return(a=o&&r.opacity(o)?o:s&&r.opacity(s)&&(e.mlw||((t.marker||{}).line||{}).width)?s:"")?r.opacity(a)<.3?r.addOpacity(a,.3):a:(i=(t.line||{}).color)&&r.opacity(i)&&n.hasLines(t)&&t.line.width?i:t.fillcolor}}}),yi=f({"src/traces/scatter/hover.js"(t,e){var r=le(),n=Dr(),i=qt(),a=gi(),o=H(),s=r.fillText;e.exports=function(t,e,l,c){var u=t.cd,h=u[0].trace,p=t.xa,f=t.ya,d=p.c2p(e),m=f.c2p(l),g=[d,m],y=h.hoveron||"",v=-1!==h.mode.indexOf("markers")?3:.5,x=!!h.xperiodalignment,_=!!h.yperiodalignment;if(-1!==y.indexOf("points")){var b=function(t){var e=Math.max(v,t.mrc||0),r=p.c2p(t.x)-d,n=f.c2p(t.y)-m;return Math.max(Math.sqrt(r*r+n*n)-e,1-v/e)},w=n.getDistanceFunction(c,(function(t){if(x){var e=p.c2p(t.xStart),r=p.c2p(t.xEnd);return d>=Math.min(e,r)&&d<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(p.c2p(t.x)-d);return a=Math.min(e,r)&&m<=Math.max(e,r)?0:1/0}var n=Math.max(3,t.mrc||0),i=1-1/n,a=Math.abs(f.c2p(t.y)-m);return ar!=(c=i[n][1])>=r&&(o=i[n-1][0],s=i[n][0],c-l&&(a=o+(s-o)*(r-l)/(c-l),h=Math.min(h,a),d=Math.max(d,a)));return{x0:h=Math.max(h,0),x1:d=Math.min(d,p._length),y0:r,y1:r}}(h._polygons);null===P&&(P={x0:g[0],x1:g[0],y0:g[1],y1:g[1]});var z=o.defaultLine;return o.opacity(h.fillcolor)?z=h.fillcolor:o.opacity((h.line||{}).color)&&(z=h.line.color),r.extendFlat(t,{distance:t.maxHoverDistance,x0:P.x0,x1:P.x1,y0:P.y0,y1:P.y1,color:z,hovertemplate:!1}),delete t.index,h.text&&!r.isArrayOrTypedArray(h.text)?t.text=String(h.text):t.text=h.name,[t]}}}}),vi=f({"src/traces/scatter/select.js"(t,e){var r=Ye();e.exports=function(t,e){var n,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[],h=s[0].trace;if(!r.hasMarkers(h)&&!r.hasText(h))return[];if(!1===e)for(n=0;n0&&(i["_"+r+"axes"]||{})[e])return i;if((i[r+"axis"]||r)===e){if(a(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}(e,s,l);if(c){if("histogram"===c.type&&l==={v:"y",h:"x"}[c.orientation||"v"])return void(t.type="linear");var u=l+"calendar",h=c[u],p={noMultiCategory:!r(c,"cartesian")||r(c,"noMultiCategory")};if("box"===c.type&&c._hasPreCompStats&&l==={h:"x",v:"y"}[c.orientation||"v"]&&(p.noMultiCategory=!0),p.autotypenumbers=t.autotypenumbers,a(c,l)){var f=i(c),d=[];for(o=0;o0||r(o);s&&(a="array");var l,c=n("categoryorder",a);"array"===c&&(l=n("categoryarray")),!s&&"array"===c&&(c=e.categoryorder="trace"),"trace"===c?e._initialCategories=[]:"array"===c?e._initialCategories=l.slice():(l=function(t,e){var r,n,i,a=e.dataAttr||t._id.charAt(0),o={};if(e.axData)r=e.axData;else for(r=[],n=0;n=2){var l,c,u="";if(2===o.length)for(l=0;l<2;l++)if(c=_(o[l])){u=g;break}var h=a("pattern",u);if(h===g)for(l=0;l<2;l++)(c=_(o[l]))&&(e.bounds[l]=o[l]=c-1);if(h)for(l=0;l<2;l++)switch(c=o[l],h){case g:if(!r(c))return void(e.enabled=!1);if((c=+c)!==Math.floor(c)||c<0||c>=7)return void(e.enabled=!1);e.bounds[l]=o[l]=c;break;case y:if(!r(c))return void(e.enabled=!1);if((c=+c)<0||c>24)return void(e.enabled=!1);e.bounds[l]=o[l]=c}if(!1===n.autorange){var p=n.range;if(p[0]p[1])return void(e.enabled=!1)}else if(o[0]>p[0]&&o[1]_[1]-1/4096&&(e.domain=s),n.noneOrAll(t.domain,e.domain,s),"sync"===e.tickmode&&(e.tickmode="auto")}return i("layer"),e}}}),ki=f({"src/plots/cartesian/layout_defaults.js"(t,e){var r=le(),n=H(),i=$e().isUnifiedHover,a=Ir(),o=ye(),s=Nt(),l=Ie(),c=_i(),u=Ti(),h=rn(),p=Ai(),f=xe(),d=f.id2name,m=f.name2id,g=ve().AX_ID_PATTERN,y=qt(),v=y.traceIs,x=y.getComponentMethod;function _(t,e,r){Array.isArray(t[e])?t[e].push(r):t[e]=[r]}e.exports=function(t,e,y){var b,w,T=e.autotypenumbers,A={},k={},M={},S={},E={},C={},I={},L={},P={},z={};for(b=0;bs.duration?(function(){for(var r={},i=0;i rect").call(a.setTranslate,0,0).call(a.setScale,1,1),t.plot.call(a.setTranslate,e._offset,r._offset).call(a.setScale,1,1);var n=t.plot.selectAll(".scatterlayer .trace");n.selectAll(".point").call(a.setPointGroupScale,1,1),n.selectAll(".textpoint").call(a.setTextPointsScale,1,1),n.call(a.hideOutsideRangePoints,t)}function g(e,r){var n=e.plotinfo,s=n.xaxis,l=n.yaxis,c=s._length,u=l._length,h=!!e.xr1,p=!!e.yr1,f=[];if(h){var d=i.simpleMap(e.xr0,s.r2l),m=i.simpleMap(e.xr1,s.r2l),g=d[1]-d[0],y=m[1]-m[0];f[0]=(d[0]*(1-r)+r*m[0]-d[0])/(d[1]-d[0])*c,f[2]=c*(1-r+r*y/g),s.range[0]=s.l2r(d[0]*(1-r)+r*m[0]),s.range[1]=s.l2r(d[1]*(1-r)+r*m[1])}else f[0]=0,f[2]=c;if(p){var v=i.simpleMap(e.yr0,l.r2l),x=i.simpleMap(e.yr1,l.r2l),_=v[1]-v[0],b=x[1]-x[0];f[1]=(v[1]*(1-r)+r*x[1]-v[1])/(v[0]-v[1])*u,f[3]=u*(1-r+r*b/_),l.range[0]=s.l2r(v[0]*(1-r)+r*x[0]),l.range[1]=l.l2r(v[1]*(1-r)+r*x[1])}else f[1]=0,f[3]=u;o.drawOne(t,s,{skipTitle:!0}),o.drawOne(t,l,{skipTitle:!0}),o.redrawComponents(t,[s._id,l._id]);var w=h?c/f[2]:1,T=p?u/f[3]:1,A=h?f[0]:0,k=p?f[1]:0,M=h?f[0]/f[2]*c:0,S=p?f[1]/f[3]*u:0,E=s._offset-M,C=l._offset-S;n.clipRect.call(a.setTranslate,A,k).call(a.setScale,1/w,1/T),n.plot.call(a.setTranslate,E,C).call(a.setScale,w,T),a.setPointGroupScale(n.zoomScalePts,1/w,1/T),a.setTextPointsScale(n.zoomScaleTxt,1/w,1/T)}o.redrawComponents(t)}}}),Si=f({"src/plots/cartesian/index.js"(t){var e=x(),r=qt(),n=le(),i=Ae(),a=Qe(),o=we().getModuleCalcData,s=xe(),l=ve(),c=ke(),u=n.ensureSingle;function h(t,e,r){return n.ensureSingle(t,e,r,(function(t){t.datum(r)}))}var p=l.zindexSeparator;function f(t,n,i,s,c){for(var u,h,p,f=l.traceLayerClasses,d=t._fullLayout,m=d._zindices,g=d._modules,y=[],v=[],x=0;x1,m=e.mainplotinfo;if(!e.mainplot||d)if(f)e.xlines=u(n,"path","xlines-above"),e.ylines=u(n,"path","ylines-above"),e.xaxislayer=u(n,"g","xaxislayer-above"),e.yaxislayer=u(n,"g","yaxislayer-above");else{if(!a){var g=u(n,"g","layer-subplot");e.shapelayer=u(g,"g","shapelayer"),e.imagelayer=u(g,"g","imagelayer"),m&&d?(e.minorGridlayer=m.minorGridlayer,e.gridlayer=m.gridlayer,e.zerolinelayer=m.zerolinelayer):(e.minorGridlayer=u(n,"g","minor-gridlayer"),e.gridlayer=u(n,"g","gridlayer"),e.zerolinelayer=u(n,"g","zerolinelayer"));var y=u(n,"g","layer-between");e.shapelayerBetween=u(y,"g","shapelayer"),e.imagelayerBetween=u(y,"g","imagelayer"),u(n,"path","xlines-below"),u(n,"path","ylines-below"),e.overlinesBelow=u(n,"g","overlines-below"),u(n,"g","xaxislayer-below"),u(n,"g","yaxislayer-below"),e.overaxesBelow=u(n,"g","overaxes-below")}e.overplot=u(n,"g","overplot"),e.plot=u(e.overplot,"g",i),a||(e.xlines=u(n,"path","xlines-above"),e.ylines=u(n,"path","ylines-above"),e.overlinesAbove=u(n,"g","overlines-above"),u(n,"g","xaxislayer-above"),u(n,"g","yaxislayer-above"),e.overaxesAbove=u(n,"g","overaxes-above"),e.xlines=n.select(".xlines-"+o),e.ylines=n.select(".ylines-"+c),e.xaxislayer=n.select(".xaxislayer-"+o),e.yaxislayer=n.select(".yaxislayer-"+c))}else{var v=m.plotgroup,x=i+"-x",_=i+"-y";e.minorGridlayer=m.minorGridlayer,e.gridlayer=m.gridlayer,e.zerolinelayer=m.zerolinelayer,u(m.overlinesBelow,"path",x),u(m.overlinesBelow,"path",_),u(m.overaxesBelow,"g",x),u(m.overaxesBelow,"g",_),e.plot=u(m.overplot,"g",i),u(m.overlinesAbove,"path",x),u(m.overlinesAbove,"path",_),u(m.overaxesAbove,"g",x),u(m.overaxesAbove,"g",_),e.xlines=v.select(".overlines-"+o).select("."+x),e.ylines=v.select(".overlines-"+c).select("."+_),e.xaxislayer=v.select(".overaxes-"+o).select("."+x),e.yaxislayer=v.select(".overaxes-"+c).select("."+_)}a||(f||(h(e.minorGridlayer,"g",e.xaxis._id),h(e.minorGridlayer,"g",e.yaxis._id),e.minorGridlayer.selectAll("g").map((function(t){return t[0]})).sort(s.idSort),h(e.gridlayer,"g",e.xaxis._id),h(e.gridlayer,"g",e.yaxis._id),e.gridlayer.selectAll("g").map((function(t){return t[0]})).sort(s.idSort)),e.xlines.style("fill","none").classed("crisp",!0),e.ylines.style("fill","none").classed("crisp",!0))}function m(t,r){if(t){var n={};for(var i in t.each((function(t){var i=t[0];e.select(this).remove(),g(i,r),n[i]=!0})),r._plots)for(var a=r._plots[i].overlays||[],o=0;o0){var g=m.id;if(-1!==g.indexOf(p))continue;g+=p+(u+1),m=n.extendFlat({},m,{id:g,plot:o._cartesianlayer.selectAll(".subplot").select("."+g)})}for(var y,v=[],x=0;x1&&(w+=p+b),_.push(n+w),r=0;r=0,x=e.indexOf("end")>=0,_=d.backoff*g+a.standoff,b=m.backoff*y+a.startstandoff;if("line"===f.nodeName){c={x:+t.attr("x1"),y:+t.attr("y1")},u={x:+t.attr("x2"),y:+t.attr("y2")};var w=c.x-u.x,T=c.y-u.y;if(p=(h=Math.atan2(T,w))+Math.PI,_&&b&&_+b>Math.sqrt(w*w+T*T))return void D();if(_){if(_*_>w*w+T*T)return void D();var A=_*Math.cos(h),k=_*Math.sin(h);u.x+=A,u.y+=k,t.attr({x2:u.x,y2:u.y})}if(b){if(b*b>w*w+T*T)return void D();var M=b*Math.cos(h),S=b*Math.sin(h);c.x-=M,c.y-=S,t.attr({x1:c.x,y1:c.y})}}else if("path"===f.nodeName){var E=f.getTotalLength(),C="";if(E<_+b)return void D();var I=f.getPointAtLength(0),L=f.getPointAtLength(.1);h=Math.atan2(I.y-L.y,I.x-L.x),c=f.getPointAtLength(Math.min(b,E)),C="0px,"+b+"px,";var P=f.getPointAtLength(E),z=f.getPointAtLength(E-.1);p=Math.atan2(P.y-z.y,P.x-z.x),u=f.getPointAtLength(Math.max(0,E-_)),C+=E-(C?b+_:_)+"px,"+E+"px",t.style("stroke-dasharray",C)}function D(){t.style("stroke-dasharray","0px,100px")}function O(e,i,c,u){e.path&&(e.noRotate&&(c=0),r.select(f.parentNode).append("path").attr({class:t.attr("class"),d:e.path,transform:l(i.x,i.y)+s(180*c/Math.PI)+o(u)}).style({fill:n.rgb(a.arrowcolor),"stroke-width":0}))}v&&O(m,c,h,y),x&&O(d,u,p,g)}}}),Ii=f({"src/components/annotations/draw.js"(t,e){var r=x(),n=qt(),i=Ae(),a=le(),o=a.strTranslate,s=ir(),l=H(),c=Qe(),u=Dr(),h=Se(),p=fr(),f=pr(),d=ye().arrayEditor,m=Ci();function g(t,e){var r=t._fullLayout.annotations[e]||{},n=s.getFromId(t,r.xref),i=s.getFromId(t,r.yref);n&&n.setScale(),i&&i.setScale(),v(t,r,e,!1,n,i)}function y(t,e,r,n,i){var a=i[r],o=i[r+"ref"],l=-1!==r.indexOf("y"),c="domain"===s.getRefType(o),u=l?n.h:n.w;return t?c?a+(l?-e:e)/t._length:t.p2r(t.r2p(a)+e):a+(l?-e:e)/u}function v(t,e,i,g,v,x){var _,b,w=t._fullLayout,T=t._fullLayout._size,A=t._context.edits;g?(_="annotation-"+g,b=g+".annotations"):(_="annotation",b="annotations");var k=d(t.layout,b,e),M=k.modifyBase,S=k.modifyItem,E=k.getUpdateObj;w._infolayer.selectAll("."+_+'[data-index="'+i+'"]').remove();var C="clip"+w._uid+"_ann"+i;if(e._input&&!1!==e.visible){var I={x:{},y:{}},L=+e.textangle||0,P=w._infolayer.append("g").classed(_,!0).attr("data-index",String(i)).style("opacity",e.opacity),z=P.append("g").classed("annotation-text-g",!0),D=A[e.showarrow?"annotationTail":"annotationPosition"],O=e.captureevents||A.annotationText||D,R=z.append("g").style("pointer-events",O?"all":null).call(p,"pointer").on("click",(function(){t._dragging=!1,t.emit("plotly_clickannotation",W(r.event))}));e.hovertext&&R.on("mouseover",(function(){var r=e.hoverlabel,n=r.font,i=this.getBoundingClientRect(),a=t.getBoundingClientRect();u.loneHover({x0:i.left-a.left,x1:i.right-a.left,y:(i.top+i.bottom)/2-a.top,text:e.hovertext,color:r.bgcolor,borderColor:r.bordercolor,fontFamily:n.family,fontSize:n.size,fontColor:n.color,fontWeight:n.weight,fontStyle:n.style,fontVariant:n.variant,fontShadow:n.fontShadow,fontLineposition:n.fontLineposition,fontTextcase:n.fontTextcase},{container:w._hoverlayer.node(),outerContainer:w._paper.node(),gd:t})})).on("mouseout",(function(){u.loneUnhover(w._hoverlayer.node())}));var F=e.borderwidth,B=e.borderpad,j=F+B,N=R.append("rect").attr("class","bg").style("stroke-width",F+"px").call(l.stroke,e.bordercolor).call(l.fill,e.bgcolor),U=e.width||e.height,V=w._topclips.selectAll("#"+C).data(U?[0]:[]);V.enter().append("clipPath").classed("annclip",!0).attr("id",C).append("rect"),V.exit().remove();var q=e.font,H=w._meta?a.templateString(e.text,w._meta):e.text,G=R.append("text").classed("annotation-text",!0).text(H);A.annotationText?G.call(h.makeEditable,{delegate:R,gd:t}).call(Z).on("edit",(function(r){e.text=r,this.call(Z),S("text",r),v&&v.autorange&&M(v._name+".autorange",!0),x&&x.autorange&&M(x._name+".autorange",!0),n.call("_guiRelayout",t,E())})):G.call(Z)}else r.selectAll("#"+C).remove();function W(t){var r={index:i,annotation:e._input,fullAnnotation:e,event:t};return g&&(r.subplotId=g),r}function Z(r){return r.call(c.font,q).attr({"text-anchor":{left:"start",right:"end"}[e.align]||"middle"}),h.convertToTspans(r,t,Y),r}function Y(){var r=G.selectAll("a");1===r.size()&&r.text()===G.text()&&R.insert("a",":first-child").attr({"xlink:xlink:href":r.attr("xlink:href"),"xlink:xlink:show":r.attr("xlink:show")}).style({cursor:"pointer"}).node().appendChild(N.node());var i=R.select(".annotation-text-math-group"),u=!i.empty(),d=c.bBox((u?i:G).node()),_=d.width,b=d.height,k=e.width||_,O=e.height||b,B=Math.round(k+2*j),q=Math.round(O+2*j);function H(t,e){return"auto"===e&&(e=t<1/3?"left":t>2/3?"right":"center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[e]}for(var Z=!1,Y=["x","y"],X=0;X1)&&(nt===rt?((ft=it.r2fraction(e["a"+et]))<0||ft>1)&&(Z=!0):Z=!0),$=it._offset+it.r2p(e[et]),Q=.5}else{var dt="domain"===pt;"x"===et?(J=e[et],$=dt?it._offset+it._length*J:$=T.l+T.w*J):(J=1-e[et],$=dt?it._offset+it._length*J:$=T.t+T.h*J),Q=e.showarrow?.5:J}if(e.showarrow){ht.head=$;var mt=e["a"+et];if(tt=ot*H(.5,e.xanchor)-st*H(.5,e.yanchor),nt===rt){var gt=s.getRefType(nt);"domain"===gt?("y"===et&&(mt=1-mt),ht.tail=it._offset+it._length*mt):"paper"===gt?"y"===et?(mt=1-mt,ht.tail=T.t+T.h*mt):ht.tail=T.l+T.w*mt:ht.tail=it._offset+it.r2p(mt),K=tt}else ht.tail=$+mt,K=tt+mt;ht.text=ht.tail+tt;var yt=w["x"===et?"width":"height"];if("paper"===rt&&(ht.head=a.constrain(ht.head,1,yt-1)),"pixel"===nt){var vt=-Math.max(ht.tail-3,ht.text),xt=Math.min(ht.tail+3,ht.text)-yt;vt>0?(ht.tail+=vt,ht.text+=vt):xt>0&&(ht.tail-=xt,ht.text-=xt)}ht.tail+=ut,ht.head+=ut}else K=tt=lt*H(Q,ct),ht.text=$+tt;ht.text+=ut,tt+=ut,K+=ut,e["_"+et+"padplus"]=lt/2+K,e["_"+et+"padminus"]=lt/2-K,e["_"+et+"size"]=lt,e["_"+et+"shift"]=tt}if(Z)R.remove();else{var _t=0,bt=0;if("left"!==e.align&&(_t=(k-_)*("center"===e.align?.5:1)),"top"!==e.valign&&(bt=(O-b)*("middle"===e.valign?.5:1)),u)i.select("svg").attr({x:j+_t-1,y:j+bt}).call(c.setClipUrl,U?C:null,t);else{var wt=j+bt-d.top,Tt=j+_t-d.left;G.call(h.positionText,Tt,wt).call(c.setClipUrl,U?C:null,t)}V.select("rect").call(c.setRect,j,j,k,O),N.call(c.setRect,F/2,F/2,B-F,q-F),R.call(c.setTranslate,Math.round(I.x.text-B/2),Math.round(I.y.text-q/2)),z.attr({transform:"rotate("+L+","+I.x.text+","+I.y.text+")"});var At,kt=function(r,i){P.selectAll(".annotation-arrow-g").remove();var s=I.x.head,u=I.y.head,h=I.x.tail+r,p=I.y.tail+i,d=I.x.text+r,_=I.y.text+i,b=a.rotationXYMatrix(L,d,_),w=a.apply2DTransform(b),k=a.apply2DTransform2(b),C=+N.attr("width"),D=+N.attr("height"),O=d-.5*C,F=O+C,B=_-.5*D,j=B+D,U=[[O,B,O,j],[O,j,F,j],[F,j,F,B],[F,B,O,B]].map(k);if(!U.reduce((function(t,e){return t^!!a.segmentsIntersect(s,u,s+1e6,u+1e6,e[0],e[1],e[2],e[3])}),!1)){U.forEach((function(t){var e=a.segmentsIntersect(h,p,s,u,t[0],t[1],t[2],t[3]);e&&(h=e.x,p=e.y)}));var V=e.arrowwidth,q=e.arrowcolor,H=e.arrowside,G=P.append("g").style({opacity:l.opacity(q)}).classed("annotation-arrow-g",!0),W=G.append("path").attr("d","M"+h+","+p+"L"+s+","+u).style("stroke-width",V+"px").call(l.stroke,l.rgb(q));if(m(W,H,e),A.annotationPosition&&W.node().parentNode&&!g){var Z=s,Y=u;if(e.standoff){var X=Math.sqrt(Math.pow(s-h,2)+Math.pow(u-p,2));Z+=e.standoff*(h-s)/X,Y+=e.standoff*(p-u)/X}var $,K,J=G.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(h-Z)+","+(p-Y),transform:o(Z,Y)}).style("stroke-width",V+6+"px").call(l.stroke,"rgba(0,0,0,0)").call(l.fill,"rgba(0,0,0,0)");f.init({element:J.node(),gd:t,prepFn:function(){var t=c.getTranslate(R);$=t.x,K=t.y,v&&v.autorange&&M(v._name+".autorange",!0),x&&x.autorange&&M(x._name+".autorange",!0)},moveFn:function(t,r){var n=w($,K),i=n[0]+t,a=n[1]+r;R.call(c.setTranslate,i,a),S("x",y(v,t,"x",T,e)),S("y",y(x,r,"y",T,e)),e.axref===e.xref&&S("ax",y(v,t,"ax",T,e)),e.ayref===e.yref&&S("ay",y(x,r,"ay",T,e)),G.attr("transform",o(t,r)),z.attr({transform:"rotate("+L+","+i+","+a+")"})},doneFn:function(){n.call("_guiRelayout",t,E());var e=document.querySelector(".js-notes-box-panel");e&&e.redraw(e.selectedObj)}})}}};e.showarrow&&kt(0,0),D&&f.init({element:R.node(),gd:t,prepFn:function(){At=z.attr("transform")},moveFn:function(t,r){var n="pointer";if(e.showarrow)e.axref===e.xref?S("ax",y(v,t,"ax",T,e)):S("ax",e.ax+t),e.ayref===e.yref?S("ay",y(x,r,"ay",T.w,e)):S("ay",e.ay+r),kt(t,r);else{if(g)return;var i,a;if(v)i=y(v,t,"x",T,e);else{var s=e._xsize/T.w,l=e.x+(e._xshift-e.xshift)/T.w-s/2;i=f.align(l+t/T.w,s,0,1,e.xanchor)}if(x)a=y(x,r,"y",T,e);else{var c=e._ysize/T.h,u=e.y-(e._yshift+e.yshift)/T.h-c/2;a=f.align(u-r/T.h,c,0,1,e.yanchor)}S("x",i),S("y",a),(!v||!x)&&(n=f.getCursor(v?.5:i,x?.5:a,e.xanchor,e.yanchor))}z.attr({transform:o(t,r)+At}),p(R,n)},clickFn:function(r,n){e.captureevents&&t.emit("plotly_clickannotation",W(n))},doneFn:function(){p(R),n.call("_guiRelayout",t,E());var e=document.querySelector(".js-notes-box-panel");e&&e.redraw(e.selectedObj)}})}}}e.exports={draw:function(t){var e=t._fullLayout;e._infolayer.selectAll(".annotation").remove();for(var r=0;r0||r.explicitOff.length>0},onClick:function(t,e){var o,s,l=a(t,e),c=l.on,u=l.off.concat(l.explicitOff),h={},p=t._fullLayout.annotations;if(c.length||u.length){for(o=0;o1){c=!0;break}}c?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+s+'"]').remove():(l._pdata=n(t.glplot.cameraParams,[e.xaxis.r2l(l.x)*a[0],e.yaxis.r2l(l.y)*a[1],e.zaxis.r2l(l.z)*a[2]]),r(t.graphDiv,l,s,t.id,l._xa,l._ya))}}}}),Vi=f({"src/components/annotations3d/index.js"(t,e){var r=qt(),n=le();e.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:Fi()}}},layoutAttributes:Fi(),handleDefaults:Bi(),includeBasePlot:function(t,e){var i=r.subplotsRegistry.gl3d;if(i)for(var a=i.attrRegex,o=Object.keys(t),s=0;s0?p+c:c;return{ppad:c,ppadplus:u?d:m,ppadminus:u?m:d}}return{ppad:c}}function l(t,e,r){var n,o,s="x"===t._id.charAt(0)?"x":"y",l="category"===t.type||"multicategory"===t.type,c=0,u=0,h=l?t.r2c:t.d2c;if("scaled"===e[s+"sizemode"]?(n=e[s+"0"],o=e[s+"1"],l&&(c=e[s+"0shift"],u=e[s+"1shift"])):(n=e[s+"anchor"],o=e[s+"anchor"]),void 0!==n)return[h(n)+c,h(o)+u];if(e.path){var p,f,d,m,g=1/0,y=-1/0,v=e.path.match(i.segmentRE);for("date"===t.type&&(h=a.decodeDate(h)),p=0;py&&(y=m));if(y>=g)return[g,y]}}e.exports=function(t){var e,a=t._fullLayout,c=r.filterVisible(a.shapes);if(c.length&&t._fullData.length)for(var u=0;u0)&&(o("active"),o("direction"),o("type"),o("showactive"),o("x"),o("y"),r.noneOrAll(t,e,["x","y"]),o("xanchor"),o("yanchor"),o("pad.t"),o("pad.r"),o("pad.b"),o("pad.l"),r.coerceFont(o,"font",a.font),o("bgcolor",a.paper_bgcolor),o("bordercolor"),o("borderwidth"))}function l(t,e){function n(n,i){return r.coerce(t,e,o,n,i)}n("visible","skip"===t.method||Array.isArray(t.args))&&(n("method"),n("args"),n("args2"),n("label"),n("execute"))}e.exports=function(t,e){n(t,e,{name:a,handleItemDefaults:s})}}}),ra=f({"src/components/updatemenus/scrollbox.js"(t,e){e.exports=o;var r=x(),n=H(),i=Qe(),a=le();function o(t,e,r){this.gd=t,this.container=e,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}o.barWidth=2,o.barLength=20,o.barRadius=2,o.barPad=1,o.barColor="#808BA4",o.prototype.enable=function(t,e,a){var s=this.gd._fullLayout,l=s.width,c=s.height;this.position=t;var u,h,p,f,d=this.position.l,m=this.position.w,g=this.position.t,y=this.position.h,v=this.position.direction,x="down"===v,_="left"===v,b="up"===v,w=m,T=y;!x&&!_&&!("right"===v)&&!b&&(this.position.direction="down",x=!0),x||b?(h=(u=d)+w,x?(p=g,T=(f=Math.min(p+T,c))-p):T=(f=g+T)-(p=Math.max(f-T,0))):(f=(p=g)+T,_?w=(h=d+w)-(u=Math.max(h-w,0)):(u=d,w=(h=Math.min(u+w,l))-u)),this._box={l:u,t:p,w,h:T};var A=m>w,k=o.barLength+2*o.barPad,M=o.barWidth+2*o.barPad,S=d,E=g+y;E+M>c&&(E=c-M);var C=this.container.selectAll("rect.scrollbar-horizontal").data(A?[0]:[]);C.exit().on(".drag",null).remove(),C.enter().append("rect").classed("scrollbar-horizontal",!0).call(n.fill,o.barColor),A?(this.hbar=C.attr({rx:o.barRadius,ry:o.barRadius,x:S,y:E,width:k,height:M}),this._hbarXMin=S+k/2,this._hbarTranslateMax=w-k):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var I=y>T,L=o.barWidth+2*o.barPad,P=o.barLength+2*o.barPad,z=d+m,D=g;z+L>l&&(z=l-L);var O=this.container.selectAll("rect.scrollbar-vertical").data(I?[0]:[]);O.exit().on(".drag",null).remove(),O.enter().append("rect").classed("scrollbar-vertical",!0).call(n.fill,o.barColor),I?(this.vbar=O.attr({rx:o.barRadius,ry:o.barRadius,x:z,y:D,width:L,height:P}),this._vbarYMin=D+P/2,this._vbarTranslateMax=T-P):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var R=this.id,F=u-.5,B=I?h+L+.5:h+.5,j=p-.5,N=A?f+M+.5:f+.5,U=s._topdefs.selectAll("#"+R).data(A||I?[0]:[]);if(U.exit().remove(),U.enter().append("clipPath").attr("id",R).append("rect"),A||I?(this._clipRect=U.select("rect").attr({x:Math.floor(F),y:Math.floor(j),width:Math.ceil(B)-Math.floor(F),height:Math.ceil(N)-Math.floor(j)}),this.container.call(i.setClipUrl,R,this.gd),this.bg.attr({x:d,y:g,width:m,height:y})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(i.setClipUrl,null),delete this._clipRect),A||I){var V=r.behavior.drag().on("dragstart",(function(){r.event.sourceEvent.preventDefault()})).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(V);var q=r.behavior.drag().on("dragstart",(function(){r.event.sourceEvent.preventDefault(),r.event.sourceEvent.stopPropagation()})).on("drag",this._onBarDrag.bind(this));A&&this.hbar.on(".drag",null).call(q),I&&this.vbar.on(".drag",null).call(q)}this.setTranslate(e,a)},o.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(i.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},o.prototype._onBoxDrag=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t-=r.event.dx),this.vbar&&(e-=r.event.dy),this.setTranslate(t,e)},o.prototype._onBoxWheel=function(){var t=this.translateX,e=this.translateY;this.hbar&&(t+=r.event.deltaY),this.vbar&&(e+=r.event.deltaY),this.setTranslate(t,e)},o.prototype._onBarDrag=function(){var t=this.translateX,e=this.translateY;if(this.hbar){var n=t+this._hbarXMin,i=n+this._hbarTranslateMax;t=(a.constrain(r.event.x,n,i)-n)/(i-n)*(this.position.w-this._box.w)}if(this.vbar){var o=e+this._vbarYMin,s=o+this._vbarTranslateMax;e=(a.constrain(r.event.y,o,s)-o)/(s-o)*(this.position.h-this._box.h)}this.setTranslate(t,e)},o.prototype.setTranslate=function(t,e){var r=this.position.w-this._box.w,n=this.position.h-this._box.h;if(t=a.constrain(t||0,0,r),e=a.constrain(e||0,0,n),this.translateX=t,this.translateY=e,this.container.call(i.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-e),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+e-.5)}),this.hbar){var o=t/r;this.hbar.call(i.setTranslate,t+o*this._hbarTranslateMax,e)}if(this.vbar){var s=e/n;this.vbar.call(i.setTranslate,t,e+s*this._vbarTranslateMax)}}}}),na=f({"src/components/updatemenus/draw.js"(t,e){var r=x(),n=Ae(),i=H(),a=Qe(),o=le(),s=Se(),l=ye().arrayEditor,c=Me().LINE_SPACING,u=Qi(),h=ra();function p(t){return t._index}function f(t,e){return+t.attr(u.menuIndexAttrName)===e._index}function d(t,e,r,n,i,a,o,s){e.active=o,l(t.layout,u.name,e).applyUpdate("active",o),"buttons"===e.type?g(t,n,null,null,e):"dropdown"===e.type&&(i.attr(u.menuIndexAttrName,"-1"),m(t,n,i,a,e),s||g(t,n,i,a,e))}function m(t,e,r,n,i){var s=o.ensureSingle(e,"g",u.headerClassName,(function(t){t.style("pointer-events","all")})),l=i._dims,c=i.active,h=i.buttons[c]||u.blankHeaderOpts,p={y:i.pad.t,yPad:0,x:i.pad.l,xPad:0,index:0},d={width:l.headerWidth,height:l.headerHeight};s.call(y,i,h,t).call(M,i,p,d),o.ensureSingle(e,"text",u.headerArrowClassName,(function(t){t.attr("text-anchor","end").call(a.font,i.font).text(u.arrowSymbol[i.direction])})).attr({x:l.headerWidth-u.arrowOffsetX+i.pad.l,y:l.headerHeight/2+u.textOffsetY+i.pad.t}),s.on("click",(function(){r.call(S,String(f(r,i)?-1:i._index)),g(t,e,r,n,i)})),s.on("mouseover",(function(){s.call(w)})),s.on("mouseout",(function(){s.call(T,i)})),a.setTranslate(e,l.lx,l.ly)}function g(t,e,i,a,s){i||(i=e).attr("pointer-events","all");var l=function(t){return-1==+t.attr(u.menuIndexAttrName)}(i)&&"buttons"!==s.type?[]:s.buttons,c="dropdown"===s.type?u.dropdownButtonClassName:u.buttonClassName,h=i.selectAll("g."+c).data(o.filterVisible(l)),p=h.enter().append("g").classed(c,!0),f=h.exit();"dropdown"===s.type?(p.attr("opacity","0").transition().attr("opacity","1"),f.transition().attr("opacity","0").remove()):f.remove();var m=0,g=0,v=s._dims,x=-1!==["up","down"].indexOf(s.direction);"dropdown"===s.type&&(x?g=v.headerHeight+u.gapButtonHeader:m=v.headerWidth+u.gapButtonHeader),"dropdown"===s.type&&"up"===s.direction&&(g=-u.gapButtonHeader+u.gapButton-v.openHeight),"dropdown"===s.type&&"left"===s.direction&&(m=-u.gapButtonHeader+u.gapButton-v.openWidth);var _={x:v.lx+m+s.pad.l,y:v.ly+g+s.pad.t,yPad:u.gapButton,xPad:u.gapButton,index:0},A={l:_.x+s.borderwidth,t:_.y+s.borderwidth};h.each((function(o,l){var c=r.select(this);c.call(y,s,o,t).call(M,s,_),c.on("click",(function(){r.event.defaultPrevented||(o.execute&&(o.args2&&s.active===l?(d(t,s,0,e,i,a,-1),n.executeAPICommand(t,o.method,o.args2)):(d(t,s,0,e,i,a,l),n.executeAPICommand(t,o.method,o.args))),t.emit("plotly_buttonclicked",{menu:s,button:o,active:s.active}))})),c.on("mouseover",(function(){c.call(w)})),c.on("mouseout",(function(){c.call(T,s),h.call(b,s)}))})),h.call(b,s),x?(A.w=Math.max(v.openWidth,v.headerWidth),A.h=_.y-A.t):(A.w=_.x-A.l,A.h=Math.max(v.openHeight,v.headerHeight)),A.direction=s.direction,a&&(h.size()?function(t,e,r,n,i,a){var o,s,l,c=i.direction,h="up"===c||"down"===c,p=i._dims,f=i.active;if(h)for(s=0,l=0;l0?[0]:[]);if(s.enter().append("g").classed(u.containerClassName,!0).style("cursor","pointer"),s.exit().each((function(){r.select(this).selectAll("g."+u.headerGroupClassName).each(a)})).remove(),0!==i.length){var l=s.selectAll("g."+u.headerGroupClassName).data(i,p);l.enter().append("g").classed(u.headerGroupClassName,!0);for(var c=o.ensureSingle(s,"g",u.dropdownButtonGroupClassName,(function(t){t.style("pointer-events","all")})),y=0;y0&&(l=l.transition().duration(e.transition.duration).ease(e.transition.easing)),l.attr("transform",s(o-.5*u.gripWidth,e._dims.currentValueTotalHeight))}}function E(t,e){var r=t._dims;return r.inputAreaStart+u.stepInset+(r.inputAreaLength-2*u.stepInset)*Math.min(1,Math.max(0,e))}function C(t,e){var r=t._dims;return Math.min(1,Math.max(0,(e-u.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*u.stepInset-2*r.inputAreaStart)))}function I(t,e,r){var n=r._dims,s=o.ensureSingle(t,"rect",u.railTouchRectClass,(function(n){n.call(k,e,t,r).style("pointer-events","all")}));s.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,u.tickOffset+r.ticklen+n.labelHeight)}).call(i.fill,r.bgcolor).attr("opacity",0),a.setTranslate(s,0,n.currentValueTotalHeight)}function L(t,e){var r=e._dims,n=r.inputAreaLength-2*u.railInset,s=o.ensureSingle(t,"rect",u.railRectClass);s.attr({width:n,height:u.railWidth,rx:u.railRadius,ry:u.railRadius,"shape-rendering":"crispEdges"}).call(i.stroke,e.bordercolor).call(i.fill,e.bgcolor).style("stroke-width",e.borderwidth+"px"),a.setTranslate(s,u.railInset,.5*(r.inputAreaWidth-u.railWidth)+r.currentValueTotalHeight)}e.exports=function(t){var e=t._context.staticPlot,i=t._fullLayout,o=function(t,e){for(var r=t[u.name],n=[],i=0;i0?[0]:[]);function l(e){e._commandObserver&&(e._commandObserver.remove(),delete e._commandObserver),n.autoMargin(t,m(e))}if(s.enter().append("g").classed(u.containerClassName,!0).style("cursor",e?null:"ew-resize"),s.exit().each((function(){r.select(this).selectAll("g."+u.groupClassName).each(l)})).remove(),0!==o.length){var c=s.selectAll("g."+u.groupClassName).data(o,g);c.enter().append("g").classed(u.groupClassName,!0),c.exit().each(l).remove();for(var h=0;h0?t.touches[0].clientX:0}function g(t,e,r,n){var i=a.ensureSingle(t,"rect",d.bgClassName,(function(t){t.attr({x:0,y:0,"shape-rendering":"crispEdges"})})),c=n.borderwidth%2==0?n.borderwidth:n.borderwidth-1,u=-n._offsetShift,h=s.crispRound(e,n.borderwidth);i.attr({width:n._width+c,height:n._height+c,transform:o(u,u),"stroke-width":h}).call(l.stroke,n.bordercolor).call(l.fill,n.bgcolor)}function y(t,e,r,n){var i=e._fullLayout;a.ensureSingleById(i._topdefs,"clipPath",n._clipId,(function(t){t.append("rect").attr({x:0,y:0})})).select("rect").attr({width:n._width,height:n._height})}function v(t,e,n,o){var l,c=e.calcdata,p=t.selectAll("g."+d.rangePlotClassName).data(n._subplotsWith,a.identity);p.enter().append("g").attr("class",(function(t){return d.rangePlotClassName+" "+t})).call(s.setClipUrl,o._clipId,e),p.order(),p.exit().remove(),p.each((function(t,a){var s=r.select(this),p=0===a,f=h.getFromId(e,t,"y"),d=f._name,m=o[d],g={data:[],layout:{xaxis:{type:n.type,domain:[0,1],range:o.range.slice(),calendar:n.calendar},width:o._width,height:o._height,margin:{t:0,b:0,l:0,r:0}},_context:e._context};n.rangebreaks&&(g.layout.xaxis.rangebreaks=n.rangebreaks),g.layout[d]={type:f.type,domain:[0,1],range:"match"!==m.rangemode?m.range.slice():f.range.slice(),calendar:f.calendar},f.rangebreaks&&(g.layout[d].rangebreaks=f.rangebreaks),i.supplyDefaults(g);var y=g._fullLayout.xaxis,v=g._fullLayout[d];y.clearCalc(),y.setScale(),v.clearCalc(),v.setScale();var x={id:t,plotgroup:s,xaxis:y,yaxis:v,isRangePlot:!0};p?l=x:(x.mainplot="xy",x.mainplotinfo=l),u.rangePlot(e,x,function(t,e){for(var r=[],n=0;n=n.max)e=B[r+1];else if(t=n.pmax)e=B[r+1];else if(ti._length||v+b<0)return;u=y+b,p=v+b;break;case l:if(_="col-resize",y+b>i._length)return;u=y+b,p=v;break;case c:if(_="col-resize",v+b<0)return;u=y,p=v+b;break;default:_="ew-resize",u=g,p=g+b}if(p0)){var m=function(t,e,r){for(var n=r.filter((function(r){return e[r].anchor===t._id})),i=0,a=0;a1){p||f||d||"independent"===A("pattern")&&(p=!0),g._hasSubplotGrid=p;var x,_,b="top to bottom"===A("roworder"),w=p?.2:.1,T=p?.3:.1;m&&e._splomGridDflt&&(x=e._splomGridDflt.xside,_=e._splomGridDflt.yside),g._domains={x:c("x",A,w,x,v),y:c("y",A,T,_,y,b)}}else delete e.grid}function A(t,e){return r.coerce(n,g,s,t,e)}},contentDefaults:function(t,e){var r=e.grid;if(r&&r._domains){var n,i,a,o,s,c,h,p=t.grid||{},f=e._subplots,d=r._hasSubplotGrid,m=r.rows,g=r.columns,y="independent"===r.pattern,v=r._axisMap={};if(d){var x=p.subplots||[];c=r.subplots=new Array(m);var _=1;for(n=0;n0,h=t._context.staticPlot;e.each((function(e){var p,f=e[0].trace,d=f.error_x||{},m=f.error_y||{};f.ids&&(p=function(t){return t.id});var g=a.hasMarkers(f)&&f.marker.maxdisplayed>0;!m.visible&&!d.visible&&(e=[]);var y=r.select(this).selectAll("g.errorbar").data(e,p);if(y.exit().remove(),e.length){d.visible||y.selectAll("path.xerror").remove(),m.visible||y.selectAll("path.yerror").remove(),y.style("opacity",1);var v=y.enter().append("g").classed("errorbar",!0);u&&v.style("opacity",0).transition().duration(s.duration).style("opacity",1),i.setClipUrl(y,o.layerClipId,t),y.each((function(t){var e=r.select(this),i=function(t,e,r){var i={x:e.c2p(t.x),y:r.c2p(t.y)};return void 0!==t.yh&&(i.yh=r.c2p(t.yh),i.ys=r.c2p(t.ys),n(i.ys)||(i.noYS=!0,i.ys=r.c2p(t.ys,!0))),void 0!==t.xh&&(i.xh=e.c2p(t.xh),i.xs=e.c2p(t.xs),n(i.xs)||(i.noXS=!0,i.xs=e.c2p(t.xs,!0))),i}(t,l,c);if(!g||t.vis){var a,o=e.select("path.yerror");if(m.visible&&n(i.x)&&n(i.yh)&&n(i.ys)){var p=m.width;a="M"+(i.x-p)+","+i.yh+"h"+2*p+"m-"+p+",0V"+i.ys,i.noYS||(a+="m-"+p+",0h"+2*p),o.size()?u&&(o=o.transition().duration(s.duration).ease(s.easing)):o=e.append("path").style("vector-effect",h?"none":"non-scaling-stroke").classed("yerror",!0),o.attr("d",a)}else o.remove();var f=e.select("path.xerror");if(d.visible&&n(i.y)&&n(i.xh)&&n(i.xs)){var y=(d.copy_ystyle?m:d).width;a="M"+i.xh+","+(i.y-y)+"v"+2*y+"m0,-"+y+"H"+i.xs,i.noXS||(a+="m0,-"+y+"v"+2*y),f.size()?u&&(f=f.transition().duration(s.duration).ease(s.easing)):f=e.append("path").style("vector-effect",h?"none":"non-scaling-stroke").classed("xerror",!0),f.attr("d",a)}else f.remove()}}))}}))}}}),La=f({"src/components/errorbars/style.js"(t,e){var r=x(),n=H();e.exports=function(t){t.each((function(t){var e=t[0].trace,i=e.error_y||{},a=e.error_x||{},o=r.select(this);o.selectAll("path.yerror").style("stroke-width",i.thickness+"px").call(n.stroke,i.color),a.copy_ystyle&&(a=i),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(n.stroke,a.color)}))}}}),Pa=f({"src/components/errorbars/index.js"(t,e){var r=le(),n=Pt().overrideAll,i=Ma(),a={error_x:r.extendFlat({},i),error_y:r.extendFlat({},i)};delete a.error_x.copy_zstyle,delete a.error_y.copy_zstyle,delete a.error_y.copy_ystyle;var o={error_x:r.extendFlat({},i),error_y:r.extendFlat({},i),error_z:r.extendFlat({},i)};delete o.error_x.copy_ystyle,delete o.error_y.copy_ystyle,delete o.error_z.copy_ystyle,delete o.error_z.copy_zstyle,e.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:a,bar:a,histogram:a,scatter3d:n(o,"calc","nested"),scattergl:n(a,"calc","nested")}},supplyDefaults:Sa(),calc:Ca(),makeComputeError:Ea(),plot:Ia(),style:La(),hoverInfo:function(t,e,r){(e.error_y||{}).visible&&(r.yerr=t.yh-t.y,e.error_y.symmetric||(r.yerrneg=t.y-t.ys)),(e.error_x||{}).visible&&(r.xerr=t.xh-t.x,e.error_x.symmetric||(r.xerrneg=t.x-t.xs))}}}}),za=f({"src/components/colorbar/constants.js"(t,e){e.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}}}),Da=f({"src/components/colorbar/draw.js"(t,e){var r=x(),n=O(),i=Ae(),a=qt(),o=ir(),s=pr(),l=le(),c=l.strTranslate,u=R().extendFlat,h=fr(),p=Qe(),f=H(),d=tr(),m=Se(),g=Ee().flipScale,y=Ti(),v=Ai(),_=Ie(),b=Me(),w=b.LINE_SPACING,T=b.FROM_TL,A=b.FROM_BR,k=za().cn;e.exports={draw:function(t){var e=t._fullLayout._infolayer.selectAll("g."+k.colorbar).data(function(t){var e,r,n,i,a=t._fullLayout,o=t.calcdata,s=[];function l(t){return u(t,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function c(){"function"==typeof i.calc?i.calc(t,n,e):(e._fillgradient=r.reversescale?g(r.colorscale):r.colorscale,e._zrange=[r[i.min],r[i.max]])}for(var h=0;h0?n>=l:n<=l));i++)n>u&&n0?n>=l:n<=l));i++)n>r[0]&&n1){var ft=Math.pow(10,Math.floor(Math.log(pt)/Math.LN10));ut*=ft*l.roundUp(pt/ft,[2,5,10]),(Math.abs(W.start)/W.size+1e-6)%1<2e-6&&(lt.tick0=0)}lt.dtick=ut}lt.domain=s?[ot+P/B.h,ot+Q-P/B.h]:[ot+L/B.w,ot+Q-L/B.w],lt.setScale(),t.attr("transform",c(Math.round(B.l),Math.round(B.t)));var dt,mt=t.select("."+k.cbtitleunshift).attr("transform",c(-Math.round(B.l),-Math.round(B.t))),gt=lt.ticklabelposition,yt=lt.title.font.size,vt=t.select("."+k.cbaxis),xt=0,_t=0;function bt(r,n){var i={propContainer:lt,propName:e._propPrefix+"title",traceIndex:e._traceIndex,_meta:e._meta,placeholder:F._dfltTitle.colorbar,containerGroup:t.select("."+k.cbtitle)},o="h"===r.charAt(0)?r.substr(1):"h"+r;t.selectAll("."+o+",."+o+"-math-group").remove(),d.draw(a,r,u(i,n||{}))}return l.syncOrAsync([i.previousPromises,function(){var t,e;(s&&ct||!s&&!ct)&&("top"===V&&(t=L+B.l+tt*z,e=P+B.t+et*(1-ot-Q)+3+.75*yt),"bottom"===V&&(t=L+B.l+tt*z,e=P+B.t+et*(1-ot)-3-.25*yt),"right"===V&&(e=P+B.t+et*D+3+.75*yt,t=L+B.l+tt*ot),bt(lt._id+"title",{attributes:{x:t,y:e,"text-anchor":s?"start":"middle"}}))},function(){if(!s&&!ct||s&&ct){var i,u=t.select("."+k.cbtitle),h=u.select("text"),f=[-M/2,M/2],d=u.select(".h"+lt._id+"title-math-group").node(),g=15.6;if(h.node()&&(g=parseInt(h.node().style.fontSize,10)*w),d?(i=p.bBox(d),_t=i.width,(xt=i.height)>g&&(f[1]-=(xt-g)/2)):h.node()&&!h.classed(k.jsPlaceholder)&&(i=p.bBox(h.node()),_t=i.width,xt=i.height),s){if(xt){if(xt+=5,"top"===V)lt.domain[1]-=xt/B.h,f[1]*=-1;else{lt.domain[0]+=xt/B.h;var y=m.lineCount(h);f[1]+=(1-y)*g}u.attr("transform",c(f[0],f[1])),lt.setScale()}}else _t&&("right"===V&&(lt.domain[0]+=(_t+yt/2)/B.w),u.attr("transform",c(f[0],f[1])),lt.setScale())}t.selectAll("."+k.cbfills+",."+k.cblines).attr("transform",s?c(0,Math.round(B.h*(1-lt.domain[1]))):c(Math.round(B.w*lt.domain[0]),0)),vt.attr("transform",s?c(0,Math.round(-B.t)):c(Math.round(-B.l),0));var v=t.select("."+k.cbfills).selectAll("rect."+k.cbfill).attr("style","").data(Y);v.enter().append("rect").classed(k.cbfill,!0).attr("style",""),v.exit().remove();var x=q.map(lt.c2p).map(Math.round).sort((function(t,e){return t-e}));v.each((function(t,i){var o=[0===i?q[0]:(Y[i]+Y[i-1])/2,i===Y.length-1?q[1]:(Y[i]+Y[i+1])/2].map(lt.c2p).map(Math.round);s&&(o[1]=l.constrain(o[1]+(o[1]>o[0])?1:-1,x[0],x[1]));var c=r.select(this).attr(s?"x":"y",rt).attr(s?"y":"x",r.min(o)).attr(s?"width":"height",Math.max($,2)).attr(s?"height":"width",Math.max(r.max(o)-r.min(o),2));if(e._fillgradient)p.gradient(c,a,e._id,s?"vertical":"horizontalreversed",e._fillgradient,"fill");else{var u=G(t).replace("e-","");c.attr("fill",n(u).toHexString())}}));var _=t.select("."+k.cblines).selectAll("path."+k.cbline).data(N.color&&N.width?X:[]);_.enter().append("path").classed(k.cbline,!0),_.exit().remove(),_.each((function(t){var e=rt,n=Math.round(lt.c2p(t))+N.width/2%1;r.select(this).attr("d","M"+(s?e+","+n:n+","+e)+(s?"h":"v")+$).call(p.lineGroupStyle,N.width,H(t),N.dash)})),vt.selectAll("g."+lt._id+"tick,path").remove();var b=rt+$+(M||0)/2-("outside"===e.ticks?1:0),T=o.calcTicks(lt),A=o.getTickSigns(lt)[2];return o.drawTicks(a,lt,{vals:"inside"===lt.ticks?o.clipEnds(lt,T):T,layer:vt,path:o.makeTickPath(lt,b,A),transFn:o.makeTransTickFn(lt)}),o.drawLabels(a,lt,{vals:T,layer:vt,transFn:o.makeTransTickLabelFn(lt),labelFns:o.makeLabelFns(lt,b)})},function(){if(s&&!ct||!s&&ct){var t,n,i=lt.position||0,o=lt._offset+lt._length/2;if("right"===V)n=o,t=B.l+tt*i+10+yt*(lt.showticklabels?1:.5);else if(t=o,"bottom"===V&&(n=B.t+et*i+10+(-1===gt.indexOf("inside")?lt.tickfont.size:0)+("intside"!==lt.ticks&&e.ticklen||0)),"top"===V){var l=U.text.split("
").length;n=B.t+et*i+10-$-w*yt*l}bt((s?"h":"v")+lt._id+"title",{avoid:{selection:r.select(a).selectAll("g."+lt._id+"tick"),side:V,offsetTop:s?0:B.t,offsetLeft:s?B.l:0,maxShift:s?F.width:F.height},attributes:{x:t,y:n,"text-anchor":"middle"},transform:{rotate:s?-90:0,offset:0}})}},i.previousPromises,function(){var r,o=$+M/2;-1===gt.indexOf("inside")&&(r=p.bBox(vt.node()),o+=s?r.width:r.height),dt=mt.select("text");var l=0,u=s&&"top"===V,d=!s&&"right"===V,m=0;if(dt.node()&&!dt.classed(k.jsPlaceholder)){var y,v=mt.select(".h"+lt._id+"title-math-group").node();v&&(s&&ct||!s&&!ct)?(l=(r=p.bBox(v)).width,y=r.height):(l=(r=p.bBox(mt.node())).right-B.l-(s?rt:st),y=r.bottom-B.t-(s?st:rt),!s&&"top"===V&&(o+=r.height,m=r.height)),d&&(dt.attr("transform",c(l/2+yt/2,0)),l*=2),o=Math.max(o,s?l:y)}var _=2*(s?L:P)+o+S+M/2,w=0;!s&&U.text&&"bottom"===I&&D<=0&&(_+=w=_/2,m+=w),F._hColorbarMoveTitle=w,F._hColorbarMoveCBTitle=m;var j=S+M,N=(s?rt:st)-j/2-(s?L:0),q=(s?st:rt)-(s?J:P+m-w);t.select("."+k.cbbg).attr("x",N).attr("y",q).attr(s?"width":"height",Math.max(_-w,2)).attr(s?"height":"width",Math.max(J+j,2)).call(f.fill,E).call(f.stroke,e.bordercolor).style("stroke-width",S);var H=d?Math.max(l-10,0):0;t.selectAll("."+k.cboutline).attr("x",(s?rt:st+L)+H).attr("y",(s?st+P-J:rt)+(u?xt:0)).attr(s?"width":"height",Math.max($,2)).attr(s?"height":"width",Math.max(J-(s?2*P+xt:2*L+H),2)).call(f.stroke,e.outlinecolor).style({fill:"none","stroke-width":M});var G=s?nt*_:0,W=s?0:(1-it)*_-m;if(G=R?B.l-G:-G,W=O?B.t-W:-W,t.attr("transform",c(G,W)),!s&&(S||n(E).getAlpha()&&!n.equals(F.paper_bgcolor,E))){var Z=vt.selectAll("text"),Y=Z[0].length,X=t.select("."+k.cbbg).node(),K=p.bBox(X),Q=p.getTranslate(t);Z.each((function(t,e){var r=Y-1;if(0===e||e===r){var n,i=p.bBox(this),a=p.getTranslate(this);if(e===r){var o=i.right+a.x;(n=K.right+Q.x+st-S-2+z-o)>0&&(n=0)}else if(0===e){var s=i.left+a.x;(n=K.left+Q.x+st+S+2-s)<0&&(n=0)}n&&(Y<3?this.setAttribute("transform","translate("+n+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}}))}var tt={},et=T[C],at=A[C],ot=T[I],ut=A[I],ht=_-$;s?("pixels"===g?(tt.y=D,tt.t=J*ot,tt.b=J*ut):(tt.t=tt.b=0,tt.yt=D+h*ot,tt.yb=D-h*ut),"pixels"===b?(tt.x=z,tt.l=_*et,tt.r=_*at):(tt.l=ht*et,tt.r=ht*at,tt.xl=z-x*et,tt.xr=z+x*at)):("pixels"===g?(tt.x=z,tt.l=J*et,tt.r=J*at):(tt.l=tt.r=0,tt.xl=z+h*et,tt.xr=z-h*at),"pixels"===b?(tt.y=1-D,tt.t=_*ot,tt.b=_*ut):(tt.t=ht*ot,tt.b=ht*ut,tt.yt=D-x*ot,tt.yb=D+x*ut));var pt=e.y<.5?"b":"t",ft=e.x<.5?"l":"r";a._fullLayout._reservedMargin[e._id]={};var _t={r:F.width-N-G,l:N+tt.r,b:F.height-q-W,t:q+tt.b};R&&O?i.autoMargin(a,e._id,tt):R?a._fullLayout._reservedMargin[e._id][pt]=_t[pt]:O||s?a._fullLayout._reservedMargin[e._id][ft]=_t[ft]:a._fullLayout._reservedMargin[e._id][pt]=_t[pt]}],a)}(g,e,t);x&&x.then&&(t._promises||[]).push(x),t._context.edits.colorbarPosition&&function(t,e,r){var n,i,o,l="v"===e.orientation,u=r._fullLayout._size;s.init({element:t.node(),gd:r,prepFn:function(){n=t.attr("transform"),h(t)},moveFn:function(r,a){t.attr("transform",n+c(r,a)),i=s.align((l?e._uFrac:e._vFrac)+r/u.w,l?e._thickFrac:e._lenFrac,0,1,e.xanchor),o=s.align((l?e._vFrac:1-e._uFrac)-a/u.h,l?e._lenFrac:e._thickFrac,0,1,e.yanchor);var p=s.getCursor(i,o,e.xanchor,e.yanchor);h(t,p)},doneFn:function(){if(h(t),void 0!==i&&void 0!==o){var n={};n[e._propPrefix+"x"]=i,n[e._propPrefix+"y"]=o,void 0!==e._traceIndex?a.call("_guiRestyle",r,n,e._traceIndex):a.call("_guiRelayout",r,n)}}})}(g,e,t)})),e.exit().each((function(e){i.autoMargin(t,e._id)})).remove(),e.order()}}}}),Oa=f({"src/components/colorbar/index.js"(t,e){e.exports={moduleType:"component",name:"colorbar",attributes:Le(),supplyDefaults:Ve(),draw:Da().draw,hasColorbar:De()}}}),Ra=f({"src/components/legend/index.js"(t,e){e.exports={moduleType:"component",name:"legend",layoutAttributes:mr(),supplyLayoutDefaults:yr(),draw:kr(),style:Ar()}}}),Fa=f({"src/locale-en.js"(t,e){e.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}}}),Ba=f({"src/locale-en-us.js"(t,e){e.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}}}),ja=f({"src/snapshot/cloneplot.js"(t,e){var r=qt(),n=le(),i=n.extendFlat,a=n.extendDeep;function o(t){var e;switch(t){case"themes__thumb":e={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":e={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:e={}}return e}e.exports=function(t,e){var n,s,l=t.data,c=t.layout,u=a([],l),h=a({},c,o(e.tileClass)),p=t._context||{};if(e.width&&(h.width=e.width),e.height&&(h.height=e.height),"thumbnail"===e.tileClass||"themes__thumb"===e.tileClass){h.annotations=[];var f=Object.keys(h);for(n=0;n-1&&(h[f[n]].title={text:""});for(n=0;n=0)return t}else if("string"==typeof t&&"%"===(t=t.trim()).slice(-1)&&r(t.slice(0,-1))&&(t=+t.slice(0,-1))>=0)return t+"%"}function f(t,e,r,i,a,o){var s=!1!==(o=o||{}).moduleHasSelected,l=!1!==o.moduleHasUnselected,c=!1!==o.moduleHasConstrain,u=!1!==o.moduleHasCliponaxis,p=!1!==o.moduleHasTextangle,f=!1!==o.moduleHasInsideanchor,d=!!o.hasPathbar,m=Array.isArray(a)||"auto"===a,g=m||"inside"===a,y=m||"outside"===a;if(g||y){var v=h(i,"textfont",r.font),x=n.extendFlat({},v),_=!(t.textfont&&t.textfont.color);if(_&&delete x.color,h(i,"insidetextfont",x),d){var b=n.extendFlat({},v);_&&delete b.color,h(i,"pathbar.textfont",b)}y&&h(i,"outsidetextfont",v),s&&i("selected.textfont.color"),l&&i("unselected.textfont.color"),c&&i("constraintext"),u&&i("cliponaxis"),p&&i("textangle"),i("texttemplate")}g&&f&&i("insidetextanchor")}e.exports={supplyDefaults:function(t,e,r,c){function h(r,i){return n.coerce(t,e,u,r,i)}if(o(t,e,c,h)){s(t,e,c,h),h("xhoverformat"),h("yhoverformat"),h("zorder"),h("orientation",e.x&&!e.y?"h":"v"),h("base"),h("offset"),h("width"),h("text"),h("hovertext"),h("hovertemplate");var p=h("textposition");f(t,0,c,h,p,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),l(t,e,h,r,c);var d=(e.marker.line||{}).color,m=a.getComponentMethod("errorbars","supplyDefaults");m(t,e,d||i.defaultLine,{axis:"y"}),m(t,e,d||i.defaultLine,{axis:"x",inherit:"y"}),n.coerceSelectionMarkerOpacity(e,h)}else e.visible=!1},crossTraceDefaults:function(t,e){var r,i;function a(t,e){return n.coerce(i._input,i,u,t,e)}for(var o=0;o0&&!p[y]&&(h=!0),p[y]=!0),g.visible&&"histogram"===g.type&&"category"!==n.getFromId({_fullLayout:e},g["v"===g.orientation?"xaxis":"yaxis"]).type&&(u=!0)}}if(c){"overlay"!==f&&l("barnorm"),l("bargap",u&&!h?0:.2),l("bargroupgap");var v=l("barcornerradius");e.barcornerradius=o(v)}else delete e.barmode}}}),$a=f({"src/traces/bar/arrays_to_calcdata.js"(t,e){var r=le();e.exports=function(t,e){for(var n=0;na))return r}return void 0!==n?n:t.dflt},t.coerceColor=function(t,e,n){return r(e).isValid()?e:void 0!==n?n:t.dflt},t.coerceEnumerated=function(t,e,r){return t.coerceNumber&&(e=+e),-1!==t.values.indexOf(e)?e:void 0!==r?r:t.dflt},t.getValue=function(t,e){var r;return n(t)?e1||0===i.bargap&&0===i.bargroupgap&&!t[0].trace.marker.line.width)&&r.select(this).attr("shape-rendering","crispEdges")})),e.selectAll("g.points").each((function(e){f(r.select(this),e[0].trace,t)})),o.getComponentMethod("errorbars","style")(e)},styleTextPoints:d,styleOnSelect:function(t,e,n){var s=e[0].trace;s.selectedpoints?function(t,e,n){i.selectedPointStyle(t.selectAll("path"),e),function(t,e,n){t.each((function(t){var o,s=r.select(this);if(t.selected){o=a.ensureUniformFontSize(n,m(s,t,e,n));var l=e.selected.textfont&&e.selected.textfont.color;l&&(o.color=l),i.font(s,o)}else i.selectedTextStyle(s,e)}))}(t.selectAll("text"),e,n)}(n,s,t):(f(n,s,t),o.getComponentMethod("errorbars","style")(n))},getInsideTextFont:y,getOutsideTextFont:v,getBarColor:b,resizeText:s}}}),eo=f({"src/traces/bar/plot.js"(t,e){var r=x(),n=A(),i=le(),a=Se(),o=H(),s=Qe(),l=qt(),c=ir().tickText,u=Ja(),h=u.recordMinTextSize,p=u.clearMinTextSize,f=to(),d=Qa(),m=Ha(),g=Ga(),y=g.text,v=g.textposition,_=$e().appendArrayPointValue,b=m.TEXTPAD;function w(t){return t.id}function T(t){return(t>0)-(t<0)}function k(t,e){return t0}function E(t,e,r,n,i){return!(t<0||e<0)&&(r<=t&&n<=e||r<=e&&n<=t||(i?t>=r*(e/n):e>=n*(t/r)))}function C(t){return"auto"===t?0:t}function I(t,e){var r=Math.PI/180*e,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:t.width*i+t.height*n,y:t.width*n+t.height*i}}function L(t,e,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,c=a.anchor,u="end"===c,h="start"===c,p=((a.leftToRight||0)+1)/2,f=1-p,d=a.hasB,m=a.r,g=a.overhead,y=i.width,v=i.height,x=Math.abs(e-t),_=Math.abs(n-r),w=x>2*b&&_>2*b?b:0;x-=2*w,_-=2*w;var T=C(l);"auto"===l&&!(y<=x&&v<=_)&&(y>x||v>_)&&(!(y>_||v>x)||yb){var E=function(t,e,r,n,i,a,o,s,l){var c,u,h,p,f=Math.max(0,Math.abs(e-t)-2*b),d=Math.max(0,Math.abs(n-r)-2*b),m=a-b,g=o?m-Math.sqrt(m*m-(m-o)*(m-o)):m,y=l?2*m:s?m-o:2*g,v=l?2*m:s?2*g:m-o;return i.y/i.x>=d/(f-y)?p=d/i.y:i.y/i.x<=(d-v)/f?p=f/i.x:!l&&s?(c=i.x*i.x+i.y*i.y/4,h=(f-m)*(f-m)+(d/2-m)*(d/2-m)-m*m,p=(-(u=-2*i.x*(f-m)-i.y*(d/2-m))+Math.sqrt(u*u-4*c*h))/(2*c)):l?(c=(i.x*i.x+i.y*i.y)/4,h=(f/2-m)*(f/2-m)+(d/2-m)*(d/2-m)-m*m,p=(-(u=-i.x*(f/2-m)-i.y*(d/2-m))+Math.sqrt(u*u-4*c*h))/(2*c)):(c=i.x*i.x/4+i.y*i.y,h=(f/2-m)*(f/2-m)+(d-m)*(d-m)-m*m,p=(-(u=-i.x*(f/2-m)-2*i.y*(d-m))+Math.sqrt(u*u-4*c*h))/(2*c)),{scale:p=Math.min(1,p),pad:s?Math.max(0,m-Math.sqrt(Math.max(0,m*m-(m-(d-i.y*p)/2)*(m-(d-i.y*p)/2)))-o):Math.max(0,m-Math.sqrt(Math.max(0,m*m-(m-(f-i.x*p)/2)*(m-(f-i.x*p)/2)))-o)}}(t,e,r,n,S,m,g,o,d);A=E.scale,M=E.pad}else A=1,s&&(A=Math.min(1,x/S.x,_/S.y)),M=0;var L=i.left*f+i.right*p,P=(i.top+i.bottom)/2,z=(t+b)*f+(e-b)*p,D=(r+n)/2,O=0,R=0;if(h||u){var F=(o?S.x:S.y)/2;m&&(u||d)&&(w+=M);var B=o?k(t,e):k(r,n);o?h?(z=t+B*w,O=-B*F):(z=e-B*w,O=B*F):h?(D=r+B*w,R=-B*F):(D=n-B*w,R=B*F)}return{textX:L,textY:P,targetX:z,targetY:D,anchorX:O,anchorY:R,scale:A,rotate:T}}e.exports={plot:function(t,e,u,m,g,x){var A=e.xaxis,P=e.yaxis,z=t._fullLayout,D=t._context.staticPlot;g||(g={mode:z.barmode,norm:z.barmode,gap:z.bargap,groupgap:z.bargroupgap},p("bar",z));var O=i.makeTraceGroups(m,u,"trace bars").each((function(l){var u=r.select(this),p=l[0].trace,m=l[0].t,O="waterfall"===p.type,R="funnel"===p.type,F="histogram"===p.type,B="bar"===p.type,j=B||R,N=0;O&&p.connector.visible&&"between"===p.connector.mode&&(N=p.connector.line.width/2);var U="h"===p.orientation,V=S(g),q=i.ensureSingle(u,"g","points"),H=function(t){if(t.ids)return w}(p),G=q.selectAll("g.point").data(i.identity,H);G.enter().append("g").classed("point",!0),G.exit().remove(),G.each((function(u,w){var S,O,R=r.select(this),q=function(t,e,r,n){var i=[],a=[],o=n?e:r,s=n?r:e;return i[0]=o.c2p(t.s0,!0),a[0]=s.c2p(t.p0,!0),i[1]=o.c2p(t.s1,!0),a[1]=s.c2p(t.p1,!0),n?[i,a]:[a,i]}(u,A,P,U),H=q[0][0],G=q[0][1],W=q[1][0],Z=q[1][1],Y=0==(U?G-H:Z-W);if(Y&&j&&d.getLineWidth(p,u)&&(Y=!1),Y||(Y=!(n(H)&&n(G)&&n(W)&&n(Z))),u.isBlank=Y,Y&&(U?G=H:Z=W),N&&!Y&&(U?(H-=k(H,G)*N,G+=k(H,G)*N):(W-=k(W,Z)*N,Z+=k(W,Z)*N)),"waterfall"===p.type){if(!Y){var X=p[u.dir].marker;S=X.line.width,O=X.color}}else S=d.getLineWidth(p,u),O=u.mc||p.marker.color;function $(t){var e=r.round(S/2%1,2);return 0===g.gap&&0===g.groupgap?r.round(Math.round(t)-e,2):t}var K=o.opacity(O)<1||S>.01?$:function(t,e,r){return r&&t===e?t:Math.abs(t-e)>=2?$(t):t>e?Math.ceil(t):Math.floor(t)};t._context.staticPlot||(H=K(H,G,U),G=K(G,H,U),W=K(W,Z,!U),Z=K(Z,W,!U));var J,Q=U?A.c2p:P.c2p;J=u.s0>0?u._sMax:u.s0<0?u._sMin:u.s1>0?u._sMax:u._sMin;var tt,et,rt=B||F?function(t,e){if(!t)return 0;var r,n=Math.abs(U?Z-W:G-H),i=Math.abs(U?G-H:Z-W),a=K(Math.abs(Q(J,!0)-Q(0,!0))),o=u.hasB?Math.min(n/2,i/2):Math.min(n/2,a);return r="%"===e?n*(Math.min(50,t)/100):t,K(Math.max(Math.min(r,o),0))}(m.cornerradiusvalue,m.cornerradiusform):0,nt="M"+H+","+W+"V"+Z+"H"+G+"V"+W+"Z",it=0;if(rt&&u.s){var at=0===T(u.s0)||T(u.s)===T(u.s0)?u.s1:u.s0;if((it=K(u.hasB?0:Math.abs(Q(J,!0)-Q(at,!0))))0?Math.sqrt(it*(2*rt-it)):0,ht=ot>0?Math.max:Math.min;tt="M"+H+","+W+"V"+(Z-ct*st)+"H"+ht(G-(rt-it)*ot,H)+"A "+rt+","+rt+" 0 0 "+lt+" "+G+","+(Z-rt*st-ut)+"V"+(W+rt*st+ut)+"A "+rt+","+rt+" 0 0 "+lt+" "+ht(G-(rt-it)*ot,H)+","+(W+ct*st)+"Z"}else if(u.hasB)tt="M"+(H+rt*ot)+","+W+"A "+rt+","+rt+" 0 0 "+lt+" "+H+","+(W+rt*st)+"V"+(Z-rt*st)+"A "+rt+","+rt+" 0 0 "+lt+" "+(H+rt*ot)+","+Z+"H"+(G-rt*ot)+"A "+rt+","+rt+" 0 0 "+lt+" "+G+","+(Z-rt*st)+"V"+(W+rt*st)+"A "+rt+","+rt+" 0 0 "+lt+" "+(G-rt*ot)+","+W+"Z";else{var pt=(et=Math.abs(Z-W)+it)0?Math.sqrt(it*(2*rt-it)):0,dt=st>0?Math.max:Math.min;tt="M"+(H+pt*ot)+","+W+"V"+dt(Z-(rt-it)*st,W)+"A "+rt+","+rt+" 0 0 "+lt+" "+(H+rt*ot-ft)+","+Z+"H"+(G-rt*ot+ft)+"A "+rt+","+rt+" 0 0 "+lt+" "+(G-pt*ot)+","+dt(Z-(rt-it)*st,W)+"V"+W+"Z"}}else tt=nt}else tt=nt;var mt=M(i.ensureSingle(R,"path"),z,g,x);if(mt.style("vector-effect",D?"none":"non-scaling-stroke").attr("d",isNaN((G-H)*(Z-W))||Y&&t._context.staticPlot?"M0,0Z":tt).call(s.setClipUrl,e.layerClipId,t),!z.uniformtext.mode&&V){var gt=s.makePointStyleFns(p);s.singlePointStyle(u,mt,p,gt,t)}(function(t,e,r,n,o,l,u,p,m,g,x,w,T){var A,S=e.xaxis,P=e.yaxis,z=t._fullLayout;function D(e,r,n){return i.ensureSingle(e,"text").text(r).attr({class:"bartext bartext-"+A,"text-anchor":"middle","data-notex":1}).call(s.font,n).call(a.convertToTspans,t)}var O=n[0].trace,R="h"===O.orientation,F=function(t,e,r,n,a){var o,s=e[0].trace;return o=s.texttemplate?function(t,e,r,n,a){var o=e[0].trace,s=i.castOption(o,r,"texttemplate");if(!s)return"";var l,u,h,p,f="histogram"===o.type,d="waterfall"===o.type,m="funnel"===o.type,g="h"===o.orientation;function y(t){return c(p,p.c2l(t),!0).text}g?(l="y",u=a,h="x",p=n):(l="x",u=n,h="y",p=a);var v=e[r],x={};x.label=v.p,x.labelLabel=x[l+"Label"]=function(t){return c(u,u.c2l(t),!0).text}(v.p);var b=i.castOption(o,v.i,"text");(0===b||b)&&(x.text=b),x.value=v.s,x.valueLabel=x[h+"Label"]=y(v.s);var w={};_(w,o,v.i),(f||void 0===w.x)&&(w.x=g?x.value:x.label),(f||void 0===w.y)&&(w.y=g?x.label:x.value),(f||void 0===w.xLabel)&&(w.xLabel=g?x.valueLabel:x.labelLabel),(f||void 0===w.yLabel)&&(w.yLabel=g?x.labelLabel:x.valueLabel),d&&(x.delta=+v.rawS||v.s,x.deltaLabel=y(x.delta),x.final=v.v,x.finalLabel=y(x.final),x.initial=x.final-x.delta,x.initialLabel=y(x.initial)),m&&(x.value=v.s,x.valueLabel=y(x.value),x.percentInitial=v.begR,x.percentInitialLabel=i.formatPercent(v.begR),x.percentPrevious=v.difR,x.percentPreviousLabel=i.formatPercent(v.difR),x.percentTotal=v.sumR,x.percenTotalLabel=i.formatPercent(v.sumR));var T=i.castOption(o,v.i,"customdata");return T&&(x.customdata=T),i.texttemplateString(s,x,t._d3locale,w,x,o._meta||{})}(t,e,r,n,a):s.textinfo?function(t,e,r,n){var a=t[0].trace,o="h"===a.orientation,s="waterfall"===a.type,l="funnel"===a.type;function u(t){return c(o?r:n,+t,!0).text}var h,p=a.textinfo,f=t[e],d=p.split("+"),m=[],g=function(t){return-1!==d.indexOf(t)};if(g("label")&&m.push(function(t){return c(o?n:r,t,!0).text}(t[e].p)),g("text")&&(0===(h=i.castOption(a,f.i,"text"))||h)&&m.push(h),s){var y=+f.rawS||f.s,v=f.v,x=v-y;g("initial")&&m.push(u(x)),g("delta")&&m.push(u(y)),g("final")&&m.push(u(v))}if(l){g("value")&&m.push(u(f.s));var _=0;g("percent initial")&&_++,g("percent previous")&&_++,g("percent total")&&_++;var b=_>1;g("percent initial")&&(h=i.formatPercent(f.begR),b&&(h+=" of initial"),m.push(h)),g("percent previous")&&(h=i.formatPercent(f.difR),b&&(h+=" of previous"),m.push(h)),g("percent total")&&(h=i.formatPercent(f.sumR),b&&(h+=" of total"),m.push(h))}return m.join("
")}(e,r,n,a):d.getValue(s.text,r),d.coerceString(y,o)}(z,n,o,S,P);A=function(t,e){var r=d.getValue(t.textposition,e);return d.coerceEnumerated(v,r)}(O,o);var B="stack"===w.mode||"relative"===w.mode,j=n[o],N=!B||j._outmost,U=j.hasB,V=g&&g-x>b;if(F&&"none"!==A&&(!j.isBlank&&l!==u&&p!==m||"auto"!==A&&"inside"!==A)){var q=z.font,H=f.getBarColor(n[o],O),G=f.getInsideTextFont(O,o,q,H),W=f.getOutsideTextFont(O,o,q),Z=O.insidetextanchor||"end",Y=r.datum();R?"log"===S.type&&Y.s0<=0&&(l=S.range[0]0&&J>0;it=V?U?E(rt-2*g,nt,K,J,R)||E(rt,nt-2*g,K,J,R):R?E(rt-(g-x),nt,K,J,R)||E(rt,nt-2*(g-x),K,J,R):E(rt,nt-(g-x),K,J,R)||E(rt-2*(g-x),nt,K,J,R):E(rt,nt,K,J,R),at&&it?A="inside":(A="outside",X.remove(),X=null)}else A="inside";if(!X){var ot=(X=D(r,F,Q=i.ensureUniformFontSize(t,"outside"===A?W:G))).attr("transform");if(X.attr("transform",""),K=($=s.bBox(X.node())).width,J=$.height,X.attr("transform",ot),K<=0||J<=0)return void X.remove()}var st,lt=O.textangle;"outside"===A?st=function(t,e,r,n,i,a){var o,s=!!a.isHorizontal,l=!!a.constrained,c=a.angle||0,u=i.width,h=i.height,p=Math.abs(e-t),f=Math.abs(n-r);o=s?f>2*b?b:0:p>2*b?b:0;var d=1;l&&(d=s?Math.min(1,f/h):Math.min(1,p/u));var m=C(c),g=I(i,m),y=(s?g.x:g.y)/2,v=(i.left+i.right)/2,x=(i.top+i.bottom)/2,_=(t+e)/2,w=(r+n)/2,T=0,A=0,M=s?k(e,t):k(r,n);return s?(_=e-M*o,T=M*y):(w=n+M*o,A=-M*y),{textX:v,textY:x,targetX:_,targetY:w,anchorX:T,anchorY:A,scale:d,rotate:m}}(l,u,p,m,$,{isHorizontal:R,constrained:"both"===O.constraintext||"outside"===O.constraintext,angle:lt}):st=L(l,u,p,m,$,{isHorizontal:R,constrained:"both"===O.constraintext||"inside"===O.constraintext,angle:lt,anchor:Z,hasB:U,r:g,overhead:x}),st.fontSize=Q.size,h("histogram"===O.type?"bar":O.type,st,z),j.transform=st;var ct=M(X,z,w,T);i.setTransormAndDisplay(ct,st)}else r.select("text").remove()})(t,e,R,l,w,H,G,W,Z,rt,it,g,x),e.layerClipId&&s.hideOutsideRangePoint(u,R.select("text"),A,P,p.xcalendar,p.ycalendar)}));var W=!1===p.cliponaxis;s.setClipUrl(u,W?null:e.layerClipId,t)}));l.getComponentMethod("errorbars","plot")(t,O,e,g)},toMoveInsideBar:L}}}),ro=f({"src/traces/bar/hover.js"(t,e){var r=Dr(),n=qt(),i=H(),a=le().fillText,o=Qa().getLineWidth,s=ir().hoverLabelText,l=k().BADNUM;function c(t,e,n,i,o){var c,u,h,p,f,d,m,g=t.cd,y=g[0].trace,v=g[0].t,x="closest"===i,_="waterfall"===y.type,b=t.maxHoverDistance,w=t.maxSpikeDistance;"h"===y.orientation?(c=n,u=e,h="y",p="x",f=D,d=P):(c=e,u=n,h="x",p="y",d=D,f=P);var T=y[h+"period"],A=x||T;function k(t){return S(t,-1)}function M(t){return S(t,1)}function S(t,e){var r=t.w;return t[h]+e*r/2}function E(t){return t[h+"End"]-t[h+"Start"]}var C=x?k:T?function(t){return t.p-E(t)/2}:function(t){return Math.min(k(t),t.p-v.bardelta/2)},I=x?M:T?function(t){return t.p+E(t)/2}:function(t){return Math.max(M(t),t.p+v.bardelta/2)};function L(t,e,n){return o.finiteRange&&(n=0),r.inbox(t-c,e-c,n+Math.min(1,Math.abs(e-t)/m)-1)}function P(t){return L(C(t),I(t),b)}function z(t){var e=t[p];if(_){var r=Math.abs(t.rawS)||0;u>0?e+=r:u<0&&(e-=r)}return e}function D(t){var e=u,n=t.b,i=z(t);return r.inbox(n-e,i-e,b+(i-e)/(i-n)-1)}var O=t[h+"a"],R=t[p+"a"];m=Math.abs(O.r2c(O.range[1])-O.r2c(O.range[0]));var F,B,j,N,U=r.getDistanceFunction(i,f,d,(function(t){return(f(t)+d(t))/2}));if(r.getClosest(g,U,t),!1!==t.index&&g[t.index].p!==l){A||(C=function(t){return Math.min(k(t),t.p-v.bargroupwidth/2)},I=function(t){return Math.max(M(t),t.p+v.bargroupwidth/2)});var V=g[t.index],q=y.base?V.b+V.s:V.s;t[p+"0"]=t[p+"1"]=R.c2p(V[p],!0),t[p+"LabelVal"]=q;var H=v.extents[v.extents.round(V.p)];t[h+"0"]=O.c2p(x?C(V):H[0],!0),t[h+"1"]=O.c2p(x?I(V):H[1],!0);var G=void 0!==V.orig_p;return t[h+"LabelVal"]=G?V.orig_p:V.p,t.labelLabel=s(O,t[h+"LabelVal"],y[h+"hoverformat"]),t.valueLabel=s(R,t[p+"LabelVal"],y[p+"hoverformat"]),t.baseLabel=s(R,V.b,y[p+"hoverformat"]),t.spikeDistance=(B=u,j=(F=V).b,N=z(F),(r.inbox(j-B,N-B,w+(N-B)/(N-j)-1)+function(t){return L(k(t),M(t),w)}(V))/2),t[h+"Spike"]=O.c2p(V.p,!0),a(V,y,t),t.hovertemplate=y.hovertemplate,t}}function u(t,e){var r=e.mcc||t.marker.color,n=e.mlcc||t.marker.line.color,a=o(t,e);return i.opacity(r)?r:i.opacity(n)&&a?n:void 0}e.exports={hoverPoints:function(t,e,r,i,a){var o=c(t,e,r,i,a);if(o){var s=o.cd,l=s[0].trace,h=s[o.index];return o.color=u(l,h),n.getComponentMethod("errorbars","hoverInfo")(h,l,o),[o]}},hoverOnBars:c,getTraceColor:u}}}),no=f({"src/traces/bar/event_data.js"(t,e){e.exports=function(t,e,r){return t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),"h"===r.orientation?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}}}),io=f({"src/traces/bar/select.js"(t,e){function r(t,e,r,n,i){var a=e.c2p(n?t.s0:t.p0,!0),o=e.c2p(n?t.s1:t.p1,!0),s=r.c2p(n?t.p0:t.s0,!0),l=r.c2p(n?t.p1:t.s1,!0);return i?[(a+o)/2,(s+l)/2]:n?[o,(s+l)/2]:[(a+o)/2,l]}e.exports=function(t,e){var n,i=t.cd,a=t.xaxis,o=t.yaxis,s=i[0].trace,l="funnel"===s.type,c="h"===s.orientation,u=[];if(!1===e)for(n=0;n0?(g="v",y=x>0?Math.min(b,_):Math.min(_)):x>0?(g="h",y=Math.min(b)):y=0;if(y){e._length=y;var S=i("orientation",g);e._hasPreCompStats?"v"===S&&0===x?(i("x0",0),i("dx",1)):"h"===S&&0===v&&(i("y0",0),i("dy",1)):"v"===S&&0===x?i("x0"):"h"===S&&0===v&&i("y0"),n.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y"],a)}else e.visible=!1}function u(t,e,n,i){var a=i.prefix,o=r.coerce2(t,e,l,"marker.outliercolor"),s=n("marker.line.outliercolor"),c="outliers";e._hasPreCompStats?c="all":(o||s)&&(c="suspectedoutliers");var u=n(a+"points",c);u?(n("jitter","all"===u?.3:0),n("pointpos","all"===u?-1.5:0),n("marker.symbol"),n("marker.opacity"),n("marker.size"),n("marker.angle"),n("marker.color",e.line.color),n("marker.line.color"),n("marker.line.width"),"suspectedoutliers"===u&&(n("marker.line.outliercolor",e.marker.color),n("marker.line.outlierwidth")),n("selected.marker.color"),n("unselected.marker.color"),n("selected.marker.size"),n("unselected.marker.size"),n("text"),n("hovertext")):delete e.marker;var h=n("hoveron");("all"===h||-1!==h.indexOf("points"))&&n("hovertemplate"),r.coerceSelectionMarkerOpacity(e,n)}e.exports={supplyDefaults:function(t,e,n,o){function s(n,i){return r.coerce(t,e,l,n,i)}if(c(t,e,s,o),!1!==e.visible){a(t,e,o,s),s("xhoverformat"),s("yhoverformat");var h=e._hasPreCompStats;h&&(s("lowerfence"),s("upperfence")),s("line.color",(t.marker||{}).color||n),s("line.width"),s("fillcolor",i.addOpacity(e.line.color,.5));var p=!1;if(h){var f=s("mean"),d=s("sd");f&&f.length&&(p=!0,d&&d.length&&(p="sd"))}s("whiskerwidth");var m,g=s("sizemode");"quartiles"===g&&(m=s("boxmean",p)),s("showwhiskers","quartiles"===g),("sd"===g||"sd"===m)&&s("sdmultiple"),s("width"),s("quartilemethod");var y=!1;if(h){var v=s("notchspan");v&&v.length&&(y=!0)}else r.validate(t.notchwidth,l.notchwidth)&&(y=!0);s("notched",y)&&s("notchwidth"),u(t,e,s,{prefix:"box"}),s("zorder")}},crossTraceDefaults:function(t,e){var n,i;function a(t){return r.coerce(i._input,i,l,t)}for(var s=0;sE.uf};if(e._hasPreCompStats){var U=e[x],V=function(t){return v.d2c((e[t]||[])[l])},q=1/0,H=-1/0;for(l=0;l=E.q1&&E.q3>=E.med){var W=V("lowerfence");E.lf=W!==o&&W<=E.q1?W:p(E,I,L);var Z=V("upperfence");E.uf=Z!==o&&Z>=E.q3?Z:f(E,I,L);var Y=V("mean");E.mean=Y!==o?Y:L?a.mean(I,L):(E.q1+E.q3)/2;var X=V("sd");E.sd=Y!==o&&X>=0?X:L?a.stdev(I,L,E.mean):E.q3-E.q1,E.lo=d(E),E.uo=m(E);var $=V("notchspan");$=$!==o&&$>0?$:g(E,L),E.ln=E.med-$,E.un=E.med+$;var K=E.lf,J=E.uf;e.boxpoints&&I.length&&(K=Math.min(K,I[0]),J=Math.max(J,I[L-1])),e.notched&&(K=Math.min(K,E.ln),J=Math.max(J,E.un)),E.min=K,E.max=J}else{var Q;a.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+E.q1,"median = "+E.med,"q3 = "+E.q3].join("\n")),Q=E.med!==o?E.med:E.q1!==o?E.q3!==o?(E.q1+E.q3)/2:E.q1:E.q3!==o?E.q3:0,E.med=Q,E.q1=E.q3=Q,E.lf=E.uf=Q,E.mean=E.sd=Q,E.ln=E.un=Q,E.min=E.max=Q}q=Math.min(q,E.min),H=Math.max(H,E.max),E.pts2=C.filter(N),M.push(E)}}e._extremes[v._id]=n.findExtremes(v,[q,H],{padded:!0})}else{var tt=v.makeCalcdata(e,x),et=function(t,e){for(var r=t.length,n=new Array(r+1),i=0;i=0&&it0){var ut,ht;(E={}).pos=E[b]=B[l],C=E.pts=nt[l].sort(u),L=(I=E[x]=C.map(h)).length,E.min=I[0],E.max=I[L-1],E.mean=a.mean(I,L),E.sd=a.stdev(I,L,E.mean)*e.sdmultiple,E.med=a.interp(I,.5),L%2&&(lt||ct)?(lt?(ut=I.slice(0,L/2),ht=I.slice(L/2+1)):ct&&(ut=I.slice(0,L/2+1),ht=I.slice(L/2)),E.q1=a.interp(ut,.5),E.q3=a.interp(ht,.5)):(E.q1=a.interp(I,.25),E.q3=a.interp(I,.75)),E.lf=p(E,I,L),E.uf=f(E,I,L),E.lo=d(E),E.uo=m(E);var pt=g(E,L);E.ln=E.med-pt,E.un=E.med+pt,at=Math.min(at,E.ln),ot=Math.max(ot,E.un),E.pts2=C.filter(N),M.push(E)}e.notched&&a.isTypedArray(tt)&&(tt=Array.from(tt)),e._extremes[v._id]=n.findExtremes(v,e.notched?tt.concat([at,ot]):tt,{padded:!0})}return function(t,e){if(a.isArrayOrTypedArray(e.selectedpoints))for(var r=0;r0?(M[0].t={num:T[S],dPos:j,posLetter:b,valLetter:x,labels:{med:s(t,"median:"),min:s(t,"min:"),q1:s(t,"q1:"),q3:s(t,"q3:"),max:s(t,"max:"),mean:"sd"===e.boxmean||"sd"===e.sizemode?s(t,"mean ± σ:").replace("σ",1===e.sdmultiple?"σ":e.sdmultiple+"σ"):s(t,"mean:"),lf:s(t,"lower fence:"),uf:s(t,"upper fence:")}},T[S]++,M):[{t:{empty:!0}}]};var l={text:"tx",hovertext:"htx"};function c(t,e,r){for(var n in l)a.isArrayOrTypedArray(e[n])&&(Array.isArray(r)?a.isArrayOrTypedArray(e[n][r[0]])&&(t[l[n]]=e[n][r[0]][r[1]]):t[l[n]]=e[n][r])}function u(t,e){return t.v-e.v}function h(t){return t.v}function p(t,e,r){return 0===r?t.q1:Math.min(t.q1,e[Math.min(a.findBin(2.5*t.q1-1.5*t.q3,e,!0)+1,r-1)])}function f(t,e,r){return 0===r?t.q3:Math.max(t.q3,e[Math.max(a.findBin(2.5*t.q3-1.5*t.q1,e),0)])}function d(t){return 4*t.q1-3*t.q3}function m(t){return 4*t.q3-3*t.q1}function g(t,e){return 0===e?0:1.57*(t.q3-t.q1)/Math.sqrt(e)}}}),po=f({"src/traces/box/cross_trace_calc.js"(t,e){var r=ir(),n=le(),i=rn().getAxisGroup,a=["v","h"];function o(t,e,a,o){var s,l,c,u=e.calcdata,h=e._fullLayout,p=o._id,f=p.charAt(0),d=[],m=0;for(s=0;s1,_=1-h[t+"gap"],b=1-h[t+"groupgap"];for(s=0;s0){var H=M.pointpos,G=M.jitter,W=M.marker.size/2,Z=0;H+G>=0&&((Z=V*(H+G))>D?(q=!0,N=W,B=Z):Z>R&&(N=W,B=D)),Z<=D&&(B=D);var Y=0;H-G<=0&&((Y=-V*(H-G))>O?(q=!0,U=W,j=Y):Y>F&&(U=W,j=O)),Y<=O&&(j=O)}else B=D,j=O;var X=new Array(c.length);for(l=0;lt.lo&&(x.so=!0)}return a}));p.enter().append("path").classed("point",!0),p.exit().remove(),p.call(i.translatePoints,o,s)}function s(t,e,i,a){var o,s,l=e.val,c=e.pos,u=!!c.rangebreaks,h=a.bPos,p=a.bPosPxOffset||0,f=i.boxmean||(i.meanline||{}).visible;Array.isArray(a.bdPos)?(o=a.bdPos[0],s=a.bdPos[1]):(o=a.bdPos,s=a.bdPos);var d=t.selectAll("path.mean").data("box"===i.type&&i.boxmean||"violin"===i.type&&i.box.visible&&i.meanline.visible?n.identity:[]);d.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),d.exit().remove(),d.each((function(t){var e=c.c2l(t.pos+h,!0),n=c.l2p(e-o)+p,a=c.l2p(e+s)+p,d=u?(n+a)/2:c.l2p(e)+p,m=l.c2p(t.mean,!0),g=l.c2p(t.mean-t.sd,!0),y=l.c2p(t.mean+t.sd,!0);"h"===i.orientation?r.select(this).attr("d","M"+m+","+n+"V"+a+("sd"===f?"m0,0L"+g+","+d+"L"+m+","+n+"L"+y+","+d+"Z":"")):r.select(this).attr("d","M"+n+","+m+"H"+a+("sd"===f?"m0,0L"+d+","+g+"L"+n+","+m+"L"+d+","+y+"Z":""))}))}e.exports={plot:function(t,e,i,l){var c=t._context.staticPlot,u=e.xaxis,h=e.yaxis;n.makeTraceGroups(l,i,"trace boxes").each((function(t){var e,n,i=r.select(this),l=t[0],p=l.t,f=l.trace;p.wdPos=p.bdPos*f.whiskerwidth,!0!==f.visible||p.empty?i.remove():("h"===f.orientation?(e=h,n=u):(e=u,n=h),a(i,{pos:e,val:n},f,p,c),o(i,{x:u,y:h},f,p),s(i,{pos:e,val:n},f,p))}))},plotBoxAndWhiskers:a,plotPoints:o,plotBoxMean:s}}}),mo=f({"src/traces/box/style.js"(t,e){var r=x(),n=H(),i=Qe();e.exports={style:function(t,e,a){var o=a||r.select(t).selectAll("g.trace.boxes");o.style("opacity",(function(t){return t[0].trace.opacity})),o.each((function(e){var a=r.select(this),o=e[0].trace,s=o.line.width;function l(t,e,r,i){t.style("stroke-width",e+"px").call(n.stroke,r).call(n.fill,i)}var c=a.selectAll("path.box");if("candlestick"===o.type)c.each((function(t){if(!t.empty){var e=r.select(this),n=o[t.dir];l(e,n.line.width,n.line.color,n.fillcolor),e.style("opacity",o.selectedpoints&&!t.selected?.3:1)}}));else{l(c,s,o.line.color,o.fillcolor),a.selectAll("path.mean").style({"stroke-width":s,"stroke-dasharray":2*s+"px,"+s+"px"}).call(n.stroke,o.line.color);var u=a.selectAll("path.point");i.pointStyle(u,o,t)}}))},styleOnSelect:function(t,e,r){var n=e[0].trace,a=r.selectAll("path.point");n.selectedpoints?i.selectedPointStyle(a,n):i.pointStyle(a,n,t)}}}}),go=f({"src/traces/box/hover.js"(t,e){var r=ir(),n=le(),i=Dr(),a=H(),o=n.fillText;function s(t,e,o,s){var l,c,u,h,p,f,d,m,g,y,v,x,_,b,w=t.cd,T=t.xa,A=t.ya,k=w[0].trace,M=w[0].t,S="violin"===k.type,E=M.bdPos,C=M.wHover,I=function(t){return u.c2l(t.pos)+M.bPos-u.c2l(f)};S&&"both"!==k.side?("positive"===k.side&&(g=function(t){var e=I(t);return i.inbox(e,e+C,y)},x=E,_=0),"negative"===k.side&&(g=function(t){var e=I(t);return i.inbox(e-C,e,y)},x=0,_=E)):(g=function(t){var e=I(t);return i.inbox(e-C,e+C,y)},x=_=E),b=S?function(t){return i.inbox(t.span[0]-p,t.span[1]-p,y)}:function(t){return i.inbox(t.min-p,t.max-p,y)},"h"===k.orientation?(p=e,f=o,d=b,m=g,l="y",u=A,c="x",h=T):(p=o,f=e,d=g,m=b,l="x",u=T,c="y",h=A);var L=Math.min(1,E/Math.abs(u.r2c(u.range[1])-u.r2c(u.range[0])));function P(t){return(d(t)+m(t))/2}y=t.maxHoverDistance-L,v=t.maxSpikeDistance-L;var z=i.getDistanceFunction(s,d,m,P);if(i.getClosest(w,z,t),!1===t.index)return[];var D=w[t.index],O=k.line.color,R=(k.marker||{}).color;a.opacity(O)&&k.line.width?t.color=O:a.opacity(R)&&k.boxpoints?t.color=R:t.color=k.fillcolor,t[l+"0"]=u.c2p(D.pos+M.bPos-_,!0),t[l+"1"]=u.c2p(D.pos+M.bPos+x,!0),t[l+"LabelVal"]=void 0!==D.orig_p?D.orig_p:D.pos;var F=l+"Spike";t.spikeDistance=P(D)*v/y,t[F]=u.c2p(D.pos,!0);var B=k.boxmean||"sd"===k.sizemode||(k.meanline||{}).visible,j=k.boxpoints||k.points,N=j&&B?["max","uf","q3","med","mean","q1","lf","min"]:j&&!B?["max","uf","q3","med","q1","lf","min"]:!j&&B?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],U=h.range[1]0&&(a=!0);for(var l=0;la){var o=a-n[t];return n[t]=a,o}}return 0},max:function(t,e,n,i){var a=i[e];if(r(a)){if(a=Number(a),!r(n[t]))return n[t]=a,a;if(n[t]l?t>a?t>1.1*n?n:t>1.1*i?i:a:t>o?o:t>s?s:l:Math.pow(10,Math.floor(Math.log(t)/Math.LN10))}function p(t,e,r,i,o,s){if(i&&t>a){var l=f(e,o,s),c=f(r,o,s),u=t===n?0:1;return l[u]!==c[u]}return Math.floor(r/t)-Math.floor(e/t)>.1}function f(t,e,r){var i=e.c2d(t,n,r).split("-");return""===i[0]&&(i.unshift(),i[0]="-"+i[0]),i}e.exports=function(t,e,r,i,o){var s,l,h=-1.1*e,p=-.1*e,f=t-p,d=r[0],m=r[1],g=Math.min(u(d+p,d+f,i,o),u(m+p,m+f,i,o)),y=Math.min(u(d+h,d+p,i,o),u(m+h,m+p,i,o));if(g>y&&ya){var v=s===n?1:6,x=s===n?"M12":"M1";return function(e,r){var a=i.c2d(e,n,o),s=a.indexOf("-",v);s>0&&(a=a.substr(0,s));var u=i.d2c(a,0,o);if(u"u"){if(l)return[L,d,!0];L=function(t,e,r,i,a){var o,s,l,c=t._fullLayout,u=function(t,e){for(var r=e.xaxis,n=e.yaxis,i=e.orientation,a=[],o=t._fullData,s=0;so.r2l(B)&&(N=a.tickIncrement(N,_.size,!0,f)),D.start=o.l2r(N),F||n.nestedProperty(e,y+".start").set(D.start)}var U=_.end,V=o.r2l(z.end),q=void 0!==V;if((_.endFound||q)&&V!==o.r2l(U)){var H=q?V:n.aggNums(Math.max,null,d);D.end=o.l2r(H),q||n.nestedProperty(e,y+".start").set(D.end)}var G="autobin"+s;return!1===e._input[G]&&(e._input[y]=n.extendFlat({},e[y]||{}),delete e._input[G],delete e[G]),[D,d]}e.exports={calc:function(t,e){var i,p,f,d,m=[],g=[],y="h"===e.orientation,v=a.getFromId(t,y?e.yaxis:e.xaxis),x=y?"y":"x",_={x:"y",y:"x"}[x],b=e[x+"calendar"],w=e.cumulative,T=h(t,e,v,x),A=T[0],k=T[1],M="string"==typeof A.size,S=[],E=M?S:A,C=[],I=[],L=[],P=0,z=e.histnorm,D=e.histfunc,O=-1!==z.indexOf("density");w.enabled&&O&&(z=z.replace(/ ?density$/,""),O=!1);var R,F="max"===D||"min"===D?null:0,B=s.count,j=l[z],N=!1,U=function(t){return v.r2c(t,0,b)};for(n.isArrayOrTypedArray(e[_])&&"count"!==D&&(R=e[_],N="avg"===D,B=s[D]),i=U(A.start),f=U(A.end)+(i-a.tickIncrement(i,A.size,!1,b))/1e6;i=0&&d=0;n--)s(n);else if("increasing"===e){for(n=1;n=0;n--)t[n]+=t[n+1];"exclude"===r&&(t.push(0),t.shift())}}(g,w.direction,w.currentbin);var K=Math.min(m.length,g.length),J=[],Q=0,tt=K-1;for(i=0;i=Q;i--)if(g[i]){tt=i;break}for(i=Q;i<=tt;i++)if(r(m[i])&&r(g[i])){var et={p:m[i],s:g[i],b:0};w.enabled||(et.pts=L[i],W?et.ph0=et.ph1=L[i].length?k[L[i][0]]:m[i]:(e._computePh=!0,et.ph0=H(S[i]),et.ph1=H(S[i+1],!0))),J.push(et)}return 1===J.length&&(J[0].width1=a.tickIncrement(J[0].p,A.size,!1,b)-J[0].p),o(J,e),n.isArrayOrTypedArray(e.selectedpoints)&&n.tagSelected(J,e,X),J},calcAllAutoBins:h}}}),Lo=f({"src/traces/histogram2d/calc.js"(t,e){var r=le(),n=ir(),i=Mo(),a=So(),o=Eo(),s=Co(),l=Io().calcAllAutoBins;function c(t,e,r,n){var i,a=new Array(t);if(n)for(i=0;iS&&T.splice(S,T.length-S),M.length>S&&M.splice(S,M.length-S);var E=[],C=[],I=[],L="string"==typeof w.size,P="string"==typeof k.size,z=[],D=[],O=L?z:w,R=P?D:k,F=0,B=[],j=[],N=e.histnorm,U=e.histfunc,V=-1!==N.indexOf("density"),q="max"===U||"min"===U?null:0,H=i.count,G=a[N],W=!1,Z=[],Y=[],X="z"in e?e.z:"marker"in e&&Array.isArray(e.marker.color)?e.marker.color:"";X&&"count"!==U&&(W="avg"===U,H=i[U]);var $=w.size,K=x(w.start),J=x(w.end)+(K-n.tickIncrement(K,$,!1,y))/1e6;for(s=K;s=0&&f=0&&dm&&(y=Math.max(y,Math.abs(t[a][o]-d)/(g-m))))}return y}e.exports=function(t,e){var n,a,o=1;for(i(t,e),n=0;n.01;n++)o=i(t,e,(a=o,.5-.25*Math.min(1,.5*a)));return o>.01&&r.log("interp2d didn't converge quickly",o),t}}}),Oo=f({"src/traces/heatmap/find_empties.js"(t,e){var r=le().maxRowLength;e.exports=function(t){var e,n,i,a,o,s,l,c,u=[],h={},p=[],f=t[0],d=[],m=[0,0,0],g=r(t);for(n=0;n=0;o--)(s=((h[[(n=(a=p[o])[0])-1,i=a[1]]]||m)[2]+(h[[n+1,i]]||m)[2]+(h[[n,i-1]]||m)[2]+(h[[n,i+1]]||m)[2])/20)&&(l[a]=[n,i,s],p.splice(o,1),c=!0);if(!c)throw"findEmpties iterated with no new neighbors";for(a in l)h[a]=l[a],u.push(l[a])}return u.sort((function(t,e){return e[2]-t[2]}))}}}),Ro=f({"src/traces/heatmap/make_bound_array.js"(t,e){var r=qt(),n=le().isArrayOrTypedArray;e.exports=function(t,e,i,a,o,s){var l,c,u,h=[],p=r.traceIs(t,"contour"),f=r.traceIs(t,"histogram");if(n(e)&&e.length>1&&!f&&"category"!==s.type){var d=e.length;if(!(d<=o))return p?e.slice(0,o):e.slice(0,o+1);if(p)h=Array.from(e).slice(0,o);else if(1===o)h="log"===s.type?[.5*e[0],2*e[0]]:[e[0]-.5,e[0]+.5];else if("log"===s.type){for(h=[Math.pow(e[0],1.5)/Math.pow(e[1],.5)],u=1;u1){var e=(t[t.length-1]-t[0])/(t.length-1),r=Math.abs(e/100);for(A=0;Ar)return!1}return!0}(M.rangebreaks||S.rangebreaks)&&(T=function(t,e,r){for(var n=[],i=-1,a=0;a0;)A=k.c2p(j[I]),I--;for(A0;)C=M.c2p(N[I]),I--;C=k._length||A<=0||E>=M._length||C<=0)return z.selectAll("image").data([]).exit().remove(),void _(z);"fast"===X?(K=W,J=G):(K=Q,J=tt);var et=document.createElement("canvas");et.width=K,et.height=J;var rt,nt,it=et.getContext("2d",{willReadFrequently:!0}),at=p(O,{noNumericCheck:!0,returnArray:!0});"fast"===X?(rt=Z?function(t){return W-1-t}:s.identity,nt=Y?function(t){return G-1-t}:s.identity):(rt=function(t){return s.constrain(Math.round(k.c2p(j[t])-x),0,Q)},nt=function(t){return s.constrain(Math.round(M.c2p(N[t])-E),0,tt)});var ot,st,lt,ct,ut=nt(0),ht=[ut,ut],pt=Z?0:1,ft=Y?0:1,dt=0,mt=0,gt=0,yt=0;function vt(t,e){if(void 0!==t){var r=at(t);return r[0]=Math.round(r[0]),r[1]=Math.round(r[1]),r[2]=Math.round(r[2]),dt+=e,mt+=r[0]*e,gt+=r[1]*e,yt+=r[2]*e,r}return[0,0,0,0]}function xt(t,e,r,n){var i=t[r.bin0];if(void 0===i)return vt(void 0,1);var a,o=t[r.bin1],s=e[r.bin0],l=e[r.bin1],c=o-i||0,u=s-i||0;return a=void 0===o?void 0===l?0:void 0===s?2*(l-i):2*(2*l-s-i)/3:void 0===l?void 0===s?0:2*(2*i-o-s)/3:void 0===s?2*(2*l-o-i)/3:l+i-o-s,vt(i+r.frac*c+n.frac*(u+r.frac*a))}if("default"!==X){var _t,bt=0;try{_t=new Uint8Array(K*J*4)}catch{_t=new Array(K*J*4)}if("smooth"===X){var wt,Tt,At,kt=U||j,Mt=V||N,St=new Array(kt.length),Et=new Array(Mt.length),Ct=new Array(Q),It=U?w:b,Lt=V?w:b;for(I=0;IXt||Xt>M._length))for(L=Gt;LKt||Kt>k._length)){var Jt=c({x:$t,y:Yt},O,t._fullLayout);Jt.x=$t,Jt.y=Yt;var Qt=D.z[I][L];void 0===Qt?(Jt.z="",Jt.zLabel=""):(Jt.z=Qt,Jt.zLabel=o.tickText(Ut,Qt,"hover").text);var te=D.text&&D.text[I]&&D.text[I][L];(void 0===te||!1===te)&&(te=""),Jt.text=te;var ee=s.texttemplateString(jt,Jt,t._fullLayout._d3locale,Jt,O._meta||{});if(ee){var re=ee.split("
"),ne=re.length,ie=0;for(P=0;P=b[0].length||f<0||f>b.length)return}else{if(r.inbox(e-x[0],e-x[x.length-1],0)>0||r.inbox(s-_[0],s-_[_.length-1],0)>0)return;if(d){var E;for(M=[2*x[0]-x[1]],E=1;E=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}}}),ls=f({"src/traces/contour/attributes.js"(t,e){var r=bo(),n=Tn(),i=Ce(),a=i.axisHoverFormat,o=i.descriptionOnlyNumbers,s=Pe(),l=zt().dash,c=F(),u=R().extendFlat,h=ss(),p=h.COMPARISON_OPS2,f=h.INTERVAL_OPS,d=n.line;e.exports=u({z:r.z,x:r.x,x0:r.x0,dx:r.dx,y:r.y,y0:r.y0,dy:r.dy,xperiod:r.xperiod,yperiod:r.yperiod,xperiod0:n.xperiod0,yperiod0:n.yperiod0,xperiodalignment:r.xperiodalignment,yperiodalignment:r.yperiodalignment,text:r.text,hovertext:r.hovertext,transpose:r.transpose,xtype:r.xtype,ytype:r.ytype,xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z",1),hovertemplate:r.hovertemplate,texttemplate:u({},r.texttemplate,{}),textfont:u({},r.textfont,{}),hoverongaps:r.hoverongaps,connectgaps:u({},r.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:c({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:o("contour label")},operation:{valType:"enumerated",values:[].concat(p).concat(f),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:u({},d.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:l,smoothing:u({},d.smoothing,{}),editType:"plot"},zorder:n.zorder},s("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))}}),cs=f({"src/traces/histogram2dcontour/attributes.js"(t,e){var r=es(),n=ls(),i=Pe(),a=Ce().axisHoverFormat,o=R().extendFlat;e.exports=o({x:r.x,y:r.y,z:r.z,marker:r.marker,histnorm:r.histnorm,histfunc:r.histfunc,nbinsx:r.nbinsx,xbins:r.xbins,nbinsy:r.nbinsy,ybins:r.ybins,autobinx:r.autobinx,autobiny:r.autobiny,bingroup:r.bingroup,xbingroup:r.xbingroup,ybingroup:r.ybingroup,autocontour:n.autocontour,ncontours:n.ncontours,contours:n.contours,line:{color:n.line.color,width:o({},n.line.width,{dflt:.5}),dash:n.line.dash,smoothing:n.line.smoothing,editType:"plot"},xhoverformat:a("x"),yhoverformat:a("y"),zhoverformat:a("z",1),hovertemplate:r.hovertemplate,texttemplate:n.texttemplate,textfont:n.textfont},i("",{cLetter:"z",editTypeOverride:"calc"}))}}),us=f({"src/traces/contour/contours_defaults.js"(t,e){e.exports=function(t,e,r,n){var i=n("contours.start"),a=n("contours.end"),o=!1===i||!1===a,s=r("contours.size");((o?e.autocontour=!0:r("autocontour",!1))||!s)&&r("ncontours")}}}),hs=f({"src/traces/contour/label_defaults.js"(t,e){var r=le();e.exports=function(t,e,n,i){if(i||(i={}),t("contours.showlabels")){var a=e.font;r.coerceFont(t,"contours.labelfont",a,{overrideDflt:{color:n}}),t("contours.labelformat")}!1!==i.hasHover&&t("zhoverformat")}}}),ps=f({"src/traces/contour/style_defaults.js"(t,e){var r=qe(),n=hs();e.exports=function(t,e,i,a,o){var s,l=i("contours.coloring"),c="";"fill"===l&&(s=i("contours.showlines")),!1!==s&&("lines"!==l&&(c=i("line.color","#000")),i("line.width",.5),i("line.dash")),"none"!==l&&(!0!==t.showlegend&&(e.showlegend=!1),e._dfltShowLegend=!1,r(t,e,a,i,{prefix:"",cLetter:"z"})),i("line.smoothing"),n(i,a,c,o)}}}),fs=f({"src/traces/histogram2dcontour/defaults.js"(t,e){var r=le(),n=rs(),i=us(),a=ps(),o=To(),s=cs();e.exports=function(t,e,l,c){function u(n,i){return r.coerce(t,e,s,n,i)}n(t,e,u,c),!1!==e.visible&&(i(t,e,u,(function(n){return r.coerce2(t,e,s,n)})),a(t,e,u,c),u("xhoverformat"),u("yhoverformat"),u("hovertemplate"),e.contours&&"heatmap"===e.contours.coloring&&o(u,c))}}}),ds=f({"src/traces/contour/set_contours.js"(t,e){var r=ir(),n=le();function i(t,e,n){var i={type:"linear",range:[t,e]};return r.autoTicks(i,(e-t)/(n||15)),i}e.exports=function(t,e){var a=t.contours;if(t.autocontour){var o=t.zmin,s=t.zmax;(t.zauto||void 0===o)&&(o=n.aggNums(Math.min,null,e)),(t.zauto||void 0===s)&&(s=n.aggNums(Math.max,null,e));var l=i(o,s,t.ncontours);a.size=l.dtick,a.start=r.tickFirst(l),l.range.reverse(),a.end=r.tickFirst(l),a.start===o&&(a.start+=a.size),a.end===s&&(a.end-=a.size),a.start>a.end&&(a.start=a.end=(a.start+a.end)/2),t._input.contours||(t._input.contours={}),n.extendFlat(t._input.contours,{start:a.start,end:a.end,size:a.size}),t._input.autocontour=!0}else if("constraint"!==a.type){var c,u=a.start,h=a.end,p=t._input.contours;u>h&&(a.start=p.start=h,h=a.end=p.end=u,u=a.start),a.size>0||(c=u===h?1:i(u,h,t.ncontours).dtick,p.size=a.size=c)}}}}),ms=f({"src/traces/contour/end_plus.js"(t,e){e.exports=function(t){return t.end+t.size/1e6}}}),gs=f({"src/traces/contour/calc.js"(t,e){var r=Ze(),n=Fo(),i=ds(),a=ms();e.exports=function(t,e){var o=n(t,e),s=o[0].z;i(e,s);var l,c=e.contours,u=r.extractOpts(e);if("heatmap"===c.coloring&&u.auto&&!1===e.autocontour){var h=c.start,p=a(c),f=c.size||1,d=Math.floor((p-h)/f)+1;isFinite(f)||(f=1,d=1);var m=h-f/2;l=[m,m+d*f]}else l=s;return r.calc(t,e,{vals:l,cLetter:"z"}),o}}}),ys=f({"src/traces/contour/constants.js"(t,e){e.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}}}),vs=f({"src/traces/contour/make_crossings.js"(t,e){var r=ys();function n(t,e){var r=(e[0][0]>t?0:1)+(e[0][1]>t?0:2)+(e[1][1]>t?0:4)+(e[1][0]>t?0:8);return 5===r||10===r?t>(e[0][0]+e[0][1]+e[1][0]+e[1][1])/4?5===r?713:1114:5===r?104:208:15===r?0:r}e.exports=function(t){var e,i,a,o,s,l,c,u,h,p=t[0].z,f=p.length,d=p[0].length,m=2===f||2===d;for(i=0;i20&&e?208===t||1114===t?i=0===r[0]?1:-1:a=0===r[1]?1:-1:-1!==n.BOTTOMSTART.indexOf(t)?a=1:-1!==n.LEFTSTART.indexOf(t)?i=1:-1!==n.TOPSTART.indexOf(t)?a=-1:i=-1,[i,a]}(p,o,e),d=[s(t,e,[-f[0],-f[1]])],m=t.z.length,g=t.z[0].length,y=e.slice(),v=f.slice();for(u=0;u<1e4;u++){if(p>20?(p=n.CHOOSESADDLE[p][(f[0]||f[1])<0?0:1],t.crossings[h]=n.SADDLEREMAINDER[p]):delete t.crossings[h],!(f=n.NEWDELTA[p])){r.log("Found bad marching index:",p,e,t.level);break}d.push(s(t,e,f)),e[0]+=f[0],e[1]+=f[1],h=e.join(","),i(d[d.length-1],d[d.length-2],l,c)&&d.pop();var x=f[0]&&(e[0]<0||e[0]>g-2)||f[1]&&(e[1]<0||e[1]>m-2);if(e[0]===y[0]&&e[1]===y[1]&&f[0]===v[0]&&f[1]===v[1]||o&&x)break;p=t.crossings[h]}1e4===u&&r.log("Infinite loop in contour?");var _,b,w,T,A,k,M,S,E,C,I,L=i(d[0],d[d.length-1],l,c),P=0,z=.2*t.smoothing,D=[],O=0;for(u=1;u=O;u--)if((_=D[u])=O&&_+D[b]S&&E--,t.edgepaths[E]=I.concat(d,C));break}j||(t.edgepaths[S]=d.concat(C))}for(S=0;S":o(">"),"<":o("<"),"=":o("=")}}}),bs=f({"src/traces/contour/empty_pathinfo.js"(t,e){var r=le(),n=_s(),i=ms();e.exports=function(t,e,a){for(var o="constraint"===t.type?n[t._operation](t.value):t,s=o.size,l=[],c=i(o),u=a.trace._carpetTrace,h=u?{xaxis:u.aaxis,yaxis:u.baxis,x:a.a,y:a.b}:{xaxis:e.xaxis,yaxis:e.yaxis,x:a.x,y:a.y},p=o.start;p1e3){r.warn("Too many contours, clipping at 1000",t);break}return l}}}),ws=f({"src/traces/contour/convert_to_constraints.js"(t,e){var r=le();function n(t){return r.extendFlat({},t,{edgepaths:r.extendDeep([],t.edgepaths),paths:r.extendDeep([],t.paths),starts:r.extendDeep([],t.starts)})}e.exports=function(t,e){var i,a,o,s=function(t){return t.reverse()},l=function(t){return t};switch(e){case"=":case"<":return t;case">":for(1!==t.length&&r.warn("Contour data invalid for the specified inequality operation."),a=t[0],i=0;io.level||o.starts.length&&a===o.level)}break;case"constraint":if(n.prefixBoundary=!1,n.edgepaths.length)return;var s=n.x.length,l=n.y.length,c=-1/0,u=1/0;for(r=0;r":f>c&&(n.prefixBoundary=!0);break;case"<":(fc||n.starts.length&&p===u)&&(n.prefixBoundary=!0);break;case"][":h=Math.min(f[0],f[1]),p=Math.max(f[0],f[1]),hc&&(n.prefixBoundary=!0)}}}}}),As=f({"src/traces/contour/plot.js"(t){var e=x(),r=le(),n=Qe(),i=Ze(),a=Se(),o=ir(),s=er(),l=No(),c=vs(),u=xs(),h=bs(),p=ws(),f=Ts(),d=ys(),m=d.LABELOPTIMIZER;function g(t,e){var i,a,o,s,l,c,u,h="",p=0,f=t.edgepaths.map((function(t,e){return e})),d=!0;function m(t){return Math.abs(t[1]-e[2][1])<.01}function g(t){return Math.abs(t[0]-e[0][0])<.01}function y(t){return Math.abs(t[0]-e[2][0])<.01}for(;f.length;){for(c=n.smoothopen(t.edgepaths[p],t.smoothing),h+=d?c:c.replace(/^M/,"L"),f.splice(f.indexOf(p),1),i=t.edgepaths[p][t.edgepaths[p].length-1],s=-1,o=0;o<4;o++){if(!i){r.log("Missing end?",p,t);break}for(u=i,Math.abs(u[1]-e[0][1])<.01&&!y(i)?a=e[1]:g(i)?a=e[0]:m(i)?a=e[3]:y(i)&&(a=e[2]),l=0;l=0&&(a=v,s=l):Math.abs(i[1]-a[1])<.01?Math.abs(i[1]-v[1])<.01&&(v[0]-i[0])*(a[0]-v[0])>=0&&(a=v,s=l):r.log("endpt to newendpt is not vert. or horz.",i,a,v)}if(i=a,s>=0)break;h+="L"+a}if(s===t.edgepaths.length){r.log("unclosed perimeter path");break}p=s,(d=-1===f.indexOf(p))&&(p=f[0],h+="Z")}for(p=0;pi.center?i.right-s:s-i.left)/(u+Math.abs(Math.sin(c)*o)),f=(l>i.middle?i.bottom-l:l-i.top)/(Math.abs(h)+Math.cos(c)*o);if(p<1||f<1)return 1/0;var d=m.EDGECOST*(1/(p-1)+1/(f-1));d+=m.ANGLECOST*c*c;for(var g=s-u,y=l-h,v=s+u,x=l+h,_=0;_2*m.MAXCOST)break;f&&(s/=2),l=(o=c-s/2)+1.5*s}if(p<=m.MAXCOST)return u},t.addLabelData=function(t,e,r,n){var i=e.fontSize,a=e.width+i/3,o=Math.max(0,e.height-i/3),s=t.x,l=t.y,c=t.theta,u=Math.sin(c),h=Math.cos(c),p=function(t,e){return[s+t*h-e*u,l+t*u+e*h]},f=[p(-a/2,-o/2),p(-a/2,o/2),p(a/2,o/2),p(a/2,-o/2)];r.push({text:e.text,x:s,y:l,dy:e.dy,theta:c,level:e.level,width:a,height:o}),n.push(f)},t.drawLabels=function(t,n,i,o,s){var l=t.selectAll("text").data(n,(function(t){return t.text+","+t.x+","+t.y+","+t.theta}));if(l.exit().remove(),l.enter().append("text").attr({"data-notex":1,"text-anchor":"middle"}).each((function(t){var r=t.x+Math.sin(t.theta)*t.dy,n=t.y-Math.cos(t.theta)*t.dy;e.select(this).text(t.text).attr({x:r,y:n,transform:"rotate("+180*t.theta/Math.PI+" "+r+" "+n+")"}).call(a.convertToTspans,i)})),s){for(var c="",u=0;u=v)&&(a<=y&&(a=y),o>=v&&(o=v),l=Math.floor((o-a)/s)+1,c=0),p=0;py&&(m.unshift(y),g.unshift(g[0])),m[m.length-1]2?e.value=e.value.slice(2):0===e.length?e.value=[0,1]:e.length<2?(n=parseFloat(e.value[0]),e.value=[n,n+1]):e.value=[parseFloat(e.value[0]),parseFloat(e.value[1])]:r(e.value)&&(n=parseFloat(e.value),e.value=[n,n+1])):(t("contours.value",0),r(e.value)||(l(e.value)?e.value=parseFloat(e.value[0]):e.value=0))}(i,g),"="===y?f=g.showlines=!0:(f=i("contours.showlines"),m=i("fillcolor",a((t.line||{}).color||h,.5))),f&&(d=i("line.color",m&&o(m)?a(e.fillcolor,1):h),i("line.width",2),i("line.dash")),i("line.smoothing"),n(i,s,d,p)}}}),Ps=f({"src/traces/contour/defaults.js"(t,e){var r=le(),n=wo(),i=Gn(),a=Ls(),o=us(),s=ps(),l=To(),c=ls();e.exports=function(t,e,u,h){function p(n,i){return r.coerce(t,e,c,n,i)}if(n(t,e,p,h)){i(t,e,h,p),p("xhoverformat"),p("yhoverformat"),p("text"),p("hovertext"),p("hoverongaps"),p("hovertemplate");var f="constraint"===p("contours.type");p("connectgaps",r.isArray1D(e.z)),f?a(t,e,p,h,u):(o(t,e,p,(function(n){return r.coerce2(t,e,c,n)})),s(t,e,p,h)),e.contours&&"heatmap"===e.contours.coloring&&l(p,h),p("zorder")}else e.visible=!1}}}),zs=f({"src/traces/contour/index.js"(t,e){e.exports={attributes:ls(),supplyDefaults:Ps(),calc:gs(),plot:As().plot,style:Ms(),colorbar:Ss(),hoverPoints:Es(),moduleType:"trace",name:"contour",basePlotModule:Si(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}}}),Ds=f({"lib/contour.js"(t,e){e.exports=zs()}}),Os=f({"src/traces/scatterternary/attributes.js"(t,e){var r=Ot().hovertemplateAttrs,n=Ot().texttemplateAttrs,i=wn(),a=Tn(),o=U(),s=Pe(),l=zt().dash,c=R().extendFlat,u=a.marker,h=a.line,p=u.line;e.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:c({},a.mode,{dflt:"markers"}),text:c({},a.text,{}),texttemplate:n({editType:"plot"},{keys:["a","b","c","text"]}),hovertext:c({},a.hovertext,{}),line:{color:h.color,width:h.width,dash:l,backoff:h.backoff,shape:c({},h.shape,{values:["linear","spline"]}),smoothing:h.smoothing,editType:"calc"},connectgaps:a.connectgaps,cliponaxis:a.cliponaxis,fill:c({},a.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:i(),marker:c({symbol:u.symbol,opacity:u.opacity,angle:u.angle,angleref:u.angleref,standoff:u.standoff,maxdisplayed:u.maxdisplayed,size:u.size,sizeref:u.sizeref,sizemin:u.sizemin,sizemode:u.sizemode,line:c({width:p.width,editType:"calc"},s("marker.line")),gradient:u.gradient,editType:"calc"},s("marker")),textfont:a.textfont,textposition:a.textposition,selected:a.selected,unselected:a.unselected,hoverinfo:c({},o.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:a.hoveron,hovertemplate:r()}}}),Rs=f({"src/traces/scatterternary/defaults.js"(t,e){var r=le(),n=bn(),i=Ye(),a=Zn(),o=Yn(),s=Xn(),l=$n(),c=Kn(),u=Os();e.exports=function(t,e,h,p){function f(n,i){return r.coerce(t,e,u,n,i)}var d,m=f("a"),g=f("b"),y=f("c");if(m?(d=m.length,g?(d=Math.min(d,g.length),y&&(d=Math.min(d,y.length))):d=y?Math.min(d,y.length):0):g&&y&&(d=Math.min(g.length,y.length)),d){e._length=d,f("sum"),f("text"),f("hovertext"),"fills"!==e.hoveron&&f("hovertemplate"),f("mode",d"),o.hovertemplate=p.hovertemplate,a}function x(t,e){y.push(t._hovertitle+": "+e)}}}}),Us=f({"src/traces/scatterternary/event_data.js"(t,e){e.exports=function(t,e,r,n,i){if(e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),n[i]){var a=n[i];t.a=a.a,t.b=a.b,t.c=a.c}else t.a=e.a,t.b=e.b,t.c=e.c;return t}}}),Vs=f({"src/plots/ternary/ternary.js"(t,e){var r=x(),n=O(),i=qt(),a=le(),o=a.strTranslate,s=a._,l=H(),c=Qe(),u=er(),h=R().extendFlat,p=Ae(),f=ir(),d=pr(),m=Dr(),g=Or(),y=g.freeMode,v=g.rectMode,_=tr(),b=En().prepSelect,w=En().selectOnClick,T=En().clearOutline,A=En().clearSelectionsCache,k=ve();function M(t,e){this.id=t.id,this.graphDiv=t.graphDiv,this.init(e),this.makeFramework(e),this.updateFx(e),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}e.exports=M;var S=M.prototype;S.init=function(t){this.container=t._ternarylayer,this.defs=t._defs,this.layoutId=t._uid,this.traceHash={},this.layers={}},S.plot=function(t,e){var r=this,n=e[r.id],i=e._size;r._hasClipOnAxisFalse=!1;for(var a=0;aE*_?i=(a=_)*E:a=(i=x)/E,s=y*i/x,p=v*a/_,r=e.l+e.w*m-i/2,n=e.t+e.h*(1-g)-a/2,f.x0=r,f.y0=n,f.w=i,f.h=a,f.sum=b,f.xaxis={type:"linear",range:[w+2*A-b,b-w-2*T],domain:[m-s/2,m+s/2],_id:"x"},u(f.xaxis,f.graphDiv._fullLayout),f.xaxis.setScale(),f.xaxis.isPtWithinRange=function(t){return t.a>=f.aaxis.range[0]&&t.a<=f.aaxis.range[1]&&t.b>=f.baxis.range[1]&&t.b<=f.baxis.range[0]&&t.c>=f.caxis.range[1]&&t.c<=f.caxis.range[0]},f.yaxis={type:"linear",range:[w,b-T-A],domain:[g-p/2,g+p/2],_id:"y"},u(f.yaxis,f.graphDiv._fullLayout),f.yaxis.setScale(),f.yaxis.isPtWithinRange=function(){return!0};var k=f.yaxis.domain[0],M=f.aaxis=h({},t.aaxis,{range:[w,b-T-A],side:"left",tickangle:(+t.aaxis.tickangle||0)-30,domain:[k,k+p*E],anchor:"free",position:0,_id:"y",_length:i});u(M,f.graphDiv._fullLayout),M.setScale();var S=f.baxis=h({},t.baxis,{range:[b-w-A,T],side:"bottom",domain:f.xaxis.domain,anchor:"free",position:0,_id:"x",_length:i});u(S,f.graphDiv._fullLayout),S.setScale();var C=f.caxis=h({},t.caxis,{range:[b-w-T,A],side:"right",tickangle:(+t.caxis.tickangle||0)+30,domain:[k,k+p*E],anchor:"free",position:0,_id:"y",_length:i});u(C,f.graphDiv._fullLayout),C.setScale();var I="M"+r+","+(n+a)+"h"+i+"l-"+i/2+",-"+a+"Z";f.clipDef.select("path").attr("d",I),f.layers.plotbg.select("path").attr("d",I);var L="M0,"+a+"h"+i+"l-"+i/2+",-"+a+"Z";f.clipDefRelative.select("path").attr("d",L);var P=o(r,n);f.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),f.clipDefRelative.select("path").attr("transform",null);var z=o(r-S._offset,n+a);f.layers.baxis.attr("transform",z),f.layers.bgrid.attr("transform",z);var D=o(r+i/2,n)+"rotate(30)"+o(0,-M._offset);f.layers.aaxis.attr("transform",D),f.layers.agrid.attr("transform",D);var O=o(r+i/2,n)+"rotate(-30)"+o(0,-C._offset);f.layers.caxis.attr("transform",O),f.layers.cgrid.attr("transform",O),f.drawAxes(!0),f.layers.aline.select("path").attr("d",M.showline?"M"+r+","+(n+a)+"l"+i/2+",-"+a:"M0,0").call(l.stroke,M.linecolor||"#000").style("stroke-width",(M.linewidth||0)+"px"),f.layers.bline.select("path").attr("d",S.showline?"M"+r+","+(n+a)+"h"+i:"M0,0").call(l.stroke,S.linecolor||"#000").style("stroke-width",(S.linewidth||0)+"px"),f.layers.cline.select("path").attr("d",C.showline?"M"+(r+i/2)+","+n+"l"+i/2+","+a:"M0,0").call(l.stroke,C.linecolor||"#000").style("stroke-width",(C.linewidth||0)+"px"),f.graphDiv._context.staticPlot||f.initInteractions(),c.setClipUrl(f.layers.frontplot,f._hasClipOnAxisFalse?null:f.clipId,f.graphDiv)},S.drawAxes=function(t){var e=this,r=e.graphDiv,n=e.id.substr(7)+"title",i=e.layers,a=e.aaxis,o=e.baxis,l=e.caxis;if(e.drawAx(a),e.drawAx(o),e.drawAx(l),t){var c=Math.max(a.showticklabels?a.tickfont.size/2:0,(l.showticklabels?.75*l.tickfont.size:0)+("outside"===l.ticks?.87*l.ticklen:0)),u=(o.showticklabels?o.tickfont.size:0)+("outside"===o.ticks?o.ticklen:0)+3;i["a-title"]=_.draw(r,"a"+n,{propContainer:a,propName:e.id+".aaxis.title",placeholder:s(r,"Click to enter Component A title"),attributes:{x:e.x0+e.w/2,y:e.y0-a.title.font.size/3-c,"text-anchor":"middle"}}),i["b-title"]=_.draw(r,"b"+n,{propContainer:o,propName:e.id+".baxis.title",placeholder:s(r,"Click to enter Component B title"),attributes:{x:e.x0-u,y:e.y0+e.h+.83*o.title.font.size+u,"text-anchor":"middle"}}),i["c-title"]=_.draw(r,"c"+n,{propContainer:l,propName:e.id+".caxis.title",placeholder:s(r,"Click to enter Component C title"),attributes:{x:e.x0+e.w+u,y:e.y0+e.h+.83*l.title.font.size+u,"text-anchor":"middle"}})}},S.drawAx=function(t){var e=this,r=e.graphDiv,n=t._name,i=n.charAt(0),o=t._id,s=e.layers[n],l=i+"tickLayout",c=function(t){return t.ticks+String(t.ticklen)+String(t.showticklabels)}(t);e[l]!==c&&(s.selectAll("."+o+"tick").remove(),e[l]=c),t.setScale();var u=f.calcTicks(t),h=f.clipEnds(t,u),p=f.makeTransTickFn(t),d=f.getTickSigns(t)[2],m=a.deg2rad(30),g=d*(t.linewidth||1)/2,y=d*t.ticklen,v=e.w,x=e.h,_="b"===i?"M0,"+g+"l"+Math.sin(m)*y+","+Math.cos(m)*y:"M"+g+",0l"+Math.cos(m)*y+","+-Math.sin(m)*y,b={a:"M0,0l"+x+",-"+v/2,b:"M0,0l-"+v/2+",-"+x,c:"M0,0l-"+x+","+v/2}[i];f.drawTicks(r,t,{vals:"inside"===t.ticks?h:u,layer:s,path:_,transFn:p,crisp:!1}),f.drawGrid(r,t,{vals:h,layer:e.layers[i+"grid"],path:b,transFn:p,crisp:!1}),f.drawLabels(r,t,{vals:u,layer:s,transFn:p,labelFns:f.makeLabelFns(t,0,30)})};var C=k.MINZOOM/2+.87,I="m-0.87,.5h"+C+"v3h-"+(C+5.2)+"l"+(C/2+2.6)+",-"+(.87*C+4.5)+"l2.6,1.5l-"+C/2+","+.87*C+"Z",L="m0.87,.5h-"+C+"v3h"+(C+5.2)+"l-"+(C/2+2.6)+",-"+(.87*C+4.5)+"l-2.6,1.5l"+C/2+","+.87*C+"Z",P="m0,1l"+C/2+","+.87*C+"l2.6,-1.5l-"+(C/2+2.6)+",-"+(.87*C+4.5)+"l-"+(C/2+2.6)+","+(.87*C+4.5)+"l2.6,1.5l"+C/2+",-"+.87*C+"Z",z=!0;function D(t){r.select(t).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}S.clearOutline=function(){A(this.dragOptions),T(this.dragOptions.gd)},S.initInteractions=function(){var t,e,r,u,h,p,f,g,x,_,T,A,M=this,S=M.layers.plotbg.select("path").node(),C=M.graphDiv,O=C._fullLayout._zoomlayer;function R(t){var e={};return e[M.id+".aaxis.min"]=t.a,e[M.id+".baxis.min"]=t.b,e[M.id+".caxis.min"]=t.c,e}function F(t,e){var r=C._fullLayout.clickmode;D(C),2===t&&(C.emit("plotly_doubleclick",null),i.call("_guiRelayout",C,R({a:0,b:0,c:0}))),r.indexOf("select")>-1&&1===t&&w(e,C,[M.xaxis],[M.yaxis],M.id,M.dragOptions),r.indexOf("event")>-1&&m.click(C,e,M.id)}function B(t,e){return 1-e/M.h}function j(t,e){return 1-(t+(M.h-e)/Math.sqrt(3))/M.w}function N(t,e){return(t-(M.h-e)/Math.sqrt(3))/M.w}function U(n,i){var a=r+n*t,o=u+i*e,s=Math.max(0,Math.min(1,B(0,u),B(0,o))),l=Math.max(0,Math.min(1,j(r,u),j(a,o))),c=Math.max(0,Math.min(1,N(r,u),N(a,o))),d=(s/2+c)*M.w,m=(1-s/2-l)*M.w,y=(d+m)/2,v=m-d,b=(1-s)*M.h,w=b-v/E;v.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),A.transition().style("opacity",1).duration(200),_=!0),C.emit("plotly_relayouting",R(f))}function V(){D(C),f!==h&&(i.call("_guiRelayout",C,R(f)),z&&C.data&&C._context.showTips&&(a.notifier(s(C,"Double-click to zoom back out"),"long"),z=!1))}function q(t,e){var r=t/M.xaxis._m,n=e/M.yaxis._m,i=[(f={a:h.a-n,b:h.b+(r+n)/2,c:h.c-(r-n)/2}).a,f.b,f.c].sort(a.sorterAsc),s=i.indexOf(f.a),l=i.indexOf(f.b),u=i.indexOf(f.c);i[0]<0&&(i[1]+i[0]/2<0?(i[2]+=i[0]+i[1],i[0]=i[1]=0):(i[2]+=i[0]/2,i[1]+=i[0]/2,i[0]=0),f={a:i[s],b:i[l],c:i[u]},e=(h.a-f.a)*M.yaxis._m,t=(h.c-f.c-h.b+f.b)*M.xaxis._m);var p=o(M.x0+t,M.y0+e);M.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",p);var d=o(-t,-e);M.clipDefRelative.select("path").attr("transform",d),M.aaxis.range=[f.a,M.sum-f.b-f.c],M.baxis.range=[M.sum-f.a-f.c,f.b],M.caxis.range=[M.sum-f.a-f.b,f.c],M.drawAxes(!1),M._hasClipOnAxisFalse&&M.plotContainer.select(".scatterlayer").selectAll(".trace").call(c.hideOutsideRangePoints,M),C.emit("plotly_relayouting",R(f))}function H(){i.call("_guiRelayout",C,R(f))}this.dragOptions={element:S,gd:C,plotinfo:{id:M.id,domain:C._fullLayout[M.id].domain,xaxis:M.xaxis,yaxis:M.yaxis},subplot:M.id,prepFn:function(i,s,c){M.dragOptions.xaxes=[M.xaxis],M.dragOptions.yaxes=[M.yaxis],t=C._fullLayout._invScaleX,e=C._fullLayout._invScaleY;var d=M.dragOptions.dragmode=C._fullLayout.dragmode;y(d)?M.dragOptions.minDrag=1:M.dragOptions.minDrag=void 0,"zoom"===d?(M.dragOptions.moveFn=U,M.dragOptions.clickFn=F,M.dragOptions.doneFn=V,function(t,e,i){var s=S.getBoundingClientRect();r=e-s.left,u=i-s.top,C._fullLayout._calcInverseTransform(C);var c=C._fullLayout._invTransform,d=a.apply3DTransform(c)(r,u);r=d[0],u=d[1],h={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},f=h,p=M.aaxis.range[1]-h.a,g=n(M.graphDiv._fullLayout[M.id].bgcolor).getLuminance(),x="M0,"+M.h+"L"+M.w/2+", 0L"+M.w+","+M.h+"Z",_=!1,T=O.append("path").attr("class","zoombox").attr("transform",o(M.x0,M.y0)).style({fill:g>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",x),A=O.append("path").attr("class","zoombox-corners").attr("transform",o(M.x0,M.y0)).style({fill:l.background,stroke:l.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),M.clearOutline(C)}(0,s,c)):"pan"===d?(M.dragOptions.moveFn=q,M.dragOptions.clickFn=F,M.dragOptions.doneFn=H,h={a:M.aaxis.range[0],b:M.baxis.range[1],c:M.caxis.range[1]},f=h,M.clearOutline(C)):(v(d)||y(d))&&b(i,s,c,M.dragOptions,d)}},S.onmousemove=function(t){m.hover(C,t,M.id),C._fullLayout._lasthover=S,C._fullLayout._hoversubplot=M.id},S.onmouseout=function(t){C._dragging||d.unhover(C,t)},d.init(this.dragOptions)}}}),qs=f({"src/plots/ternary/layout_attributes.js"(t,e){var r=q(),n=Aa().attributes,i=Ie(),a=Pt().overrideAll,o=R().extendFlat,s={title:{text:i.title.text,font:i.title.font},color:i.color,tickmode:i.minor.tickmode,nticks:o({},i.nticks,{dflt:6,min:1}),tick0:i.tick0,dtick:i.dtick,tickvals:i.tickvals,ticktext:i.ticktext,ticks:i.ticks,ticklen:i.ticklen,tickwidth:i.tickwidth,tickcolor:i.tickcolor,ticklabelstep:i.ticklabelstep,showticklabels:i.showticklabels,labelalias:i.labelalias,showtickprefix:i.showtickprefix,tickprefix:i.tickprefix,showticksuffix:i.showticksuffix,ticksuffix:i.ticksuffix,showexponent:i.showexponent,exponentformat:i.exponentformat,minexponent:i.minexponent,separatethousands:i.separatethousands,tickfont:i.tickfont,tickangle:i.tickangle,tickformat:i.tickformat,tickformatstops:i.tickformatstops,hoverformat:i.hoverformat,showline:o({},i.showline,{dflt:!0}),linecolor:i.linecolor,linewidth:i.linewidth,showgrid:o({},i.showgrid,{dflt:!0}),gridcolor:i.gridcolor,gridwidth:i.gridwidth,griddash:i.griddash,layer:i.layer,min:{valType:"number",dflt:0,min:0}},l=e.exports=a({domain:n({name:"ternary"}),bgcolor:{valType:"color",dflt:r.background},sum:{valType:"number",dflt:1,min:0},aaxis:s,baxis:s,caxis:s},"plot","from-root");l.uirevision={valType:"any",editType:"none"},l.aaxis.uirevision=l.baxis.uirevision=l.caxis.uirevision={valType:"any",editType:"none"}}}),Hs=f({"src/plots/subplot_defaults.js"(t,e){var r=le(),n=ye(),i=Aa().defaults;e.exports=function(t,e,a,o){var s,l,c=o.type,u=o.attributes,h=o.handleDefaults,p=o.partition||"x",f=e._subplots[c],d=f.length,m=d&&f[0].replace(/\d+$/,"");function g(t,e){return r.coerce(s,l,u,t,e)}for(var y=0;y=s&&(f.min=0,m.min=0,g.min=0,t.aaxis&&delete t.aaxis.min,t.baxis&&delete t.baxis.min,t.caxis&&delete t.caxis.min)}function d(t,e,r,n){var a=h[e._name];function p(r,n){return i.coerce(t,e,a,r,n)}p("uirevision",n.uirevision),e.type="linear";var f=p("color"),d=f!==a.color.dflt?f:r.font.color,m=e._name.charAt(0).toUpperCase(),g="Component "+m,y=p("title.text",g);e._hovertitle=y===g?y:m,i.coerceFont(p,"title.font",r.font,{overrideDflt:{size:i.bigFont(r.font.size),color:d}}),p("min"),c(t,e,p,"linear"),s(t,e,p,"linear"),o(t,e,p,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),l(t,e,p,{outerTicks:!0}),p("showticklabels")&&(i.coerceFont(p,"tickfont",r.font,{overrideDflt:{color:d}}),p("tickangle"),p("tickformat")),u(t,e,p,{dfltColor:f,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:a}),p("hoverformat"),p("layer")}e.exports=function(t,e,r){a(t,e,r,{type:"ternary",attributes:h,handleDefaults:f,font:e.font,paper_bgcolor:e.paper_bgcolor})}}}),Ws=f({"src/plots/ternary/index.js"(t){var e=Vs(),r=we().getSubplotCalcData,n=le().counterRegex,i="ternary";t.name=i;var a=t.attr="subplot";t.idRoot=i,t.idRegex=t.attrRegex=n(i),(t.attributes={})[a]={valType:"subplotid",dflt:"ternary",editType:"calc"},t.layoutAttributes=qs(),t.supplyLayoutDefaults=Gs(),t.plot=function(t){for(var n=t._fullLayout,a=t.calcdata,o=n._subplots[i],s=0;s0){var _,b,w,T,A,k=t.xa,M=t.ya;"h"===d.orientation?(A=e,_="y",w=M,b="x",T=k):(A=s,_="x",w=k,b="y",T=M);var S=f[t.index];if(A>=S.span[0]&&A<=S.span[1]){var E=n.extendFlat({},t),C=T.c2p(A,!0),I=o.getKdeValue(S,d,A),L=o.getPositionOnKdePath(S,d,C),P=w._offset,z=w._length;E[_+"0"]=L[0],E[_+"1"]=L[1],E[b+"0"]=E[b+"1"]=C,E[b+"Label"]=b+": "+i.hoverLabelText(T,A,d[b+"hoverformat"])+", "+f[0].t.labels.kde+" "+I.toFixed(3);for(var D=0,O=0;O path").each((function(t){if(!t.isBlank){var e=s.marker;r.select(this).call(i.fill,t.mc||e.color).call(i.stroke,t.mlc||e.line.color).call(n.dashLine,e.line.dash,t.mlw||e.line.width).style("opacity",s.selectedpoints&&!t.selected?a:1)}})),l(o,s,t),o.selectAll(".regions").each((function(){r.select(this).selectAll("path").style("stroke-width",0).call(i.fill,s.connector.fillcolor)})),o.selectAll(".lines").each((function(){var t=s.connector.line;n.lineGroupStyle(r.select(this).selectAll("path"),t.width,t.color,t.dash)}))}))}}}}),vl=f({"src/traces/funnel/hover.js"(t,e){var r=H().opacity,n=ro().hoverOnBars,i=le().formatPercent;e.exports=function(t,e,a,o,s){var l=n(t,e,a,o,s);if(l){var c=l.cd,u=c[0].trace,h="h"===u.orientation,p=c[l.index];l[(h?"x":"y")+"LabelVal"]=p.s,l.percentInitial=p.begR,l.percentInitialLabel=i(p.begR,1),l.percentPrevious=p.difR,l.percentPreviousLabel=i(p.difR,1),l.percentTotal=p.sumR,l.percentTotalLabel=i(p.sumR,1);var f=p.hi||u.hoverinfo,d=[];if(f&&"none"!==f&&"skip"!==f){var m="all"===f,g=f.split("+"),y=function(t){return m||-1!==g.indexOf(t)};y("percent initial")&&d.push(l.percentInitialLabel+" of initial"),y("percent previous")&&d.push(l.percentPreviousLabel+" of previous"),y("percent total")&&d.push(l.percentTotalLabel+" of total")}return l.extraText=d.join("
"),l.color=function(t,e){var n=t.marker,i=e.mc||n.color,a=e.mlc||n.line.color,o=e.mlw||n.line.width;return r(i)?i:r(a)&&o?a:void 0}(u,p),[l]}}}}),xl=f({"src/traces/funnel/event_data.js"(t,e){e.exports=function(t,e){return t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,"percentInitial"in e&&(t.percentInitial=e.percentInitial),"percentPrevious"in e&&(t.percentPrevious=e.percentPrevious),"percentTotal"in e&&(t.percentTotal=e.percentTotal),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),t}}}),_l=f({"src/traces/funnel/index.js"(t,e){e.exports={attributes:ll(),layoutAttributes:cl(),supplyDefaults:ul().supplyDefaults,crossTraceDefaults:ul().crossTraceDefaults,supplyLayoutDefaults:hl(),calc:fl(),crossTraceCalc:dl(),plot:ml(),style:yl().style,hoverPoints:vl(),eventData:xl(),selectPoints:io(),moduleType:"trace",name:"funnel",basePlotModule:Si(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}}}),bl=f({"lib/funnel.js"(t,e){e.exports=_l()}}),wl=f({"src/traces/waterfall/constants.js"(t,e){e.exports={eventDataKeys:["initial","delta","final"]}}}),Tl=f({"src/traces/waterfall/attributes.js"(t,e){var r=Ga(),n=Tn().line,i=U(),a=Ce().axisHoverFormat,o=Ot().hovertemplateAttrs,s=Ot().texttemplateAttrs,l=wl(),c=R().extendFlat,u=H();function h(t){return{marker:{color:c({},r.marker.color,{arrayOk:!1,editType:"style"}),line:{color:c({},r.marker.line.color,{arrayOk:!1,editType:"style"}),width:c({},r.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}e.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:r.x,x0:r.x0,dx:r.dx,y:r.y,y0:r.y0,dy:r.dy,xperiod:r.xperiod,yperiod:r.yperiod,xperiod0:r.xperiod0,yperiod0:r.yperiod0,xperiodalignment:r.xperiodalignment,yperiodalignment:r.yperiodalignment,xhoverformat:a("x"),yhoverformat:a("y"),hovertext:r.hovertext,hovertemplate:o({},{keys:l.eventDataKeys}),hoverinfo:c({},i.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:s({editType:"plot"},{keys:l.eventDataKeys.concat(["label"])}),text:r.text,textposition:r.textposition,insidetextanchor:r.insidetextanchor,textangle:r.textangle,textfont:r.textfont,insidetextfont:r.insidetextfont,outsidetextfont:r.outsidetextfont,constraintext:r.constraintext,cliponaxis:r.cliponaxis,orientation:r.orientation,offset:r.offset,width:r.width,increasing:h(),decreasing:h(),totals:h(),connector:{line:{color:c({},n.color,{dflt:u.defaultLine}),width:c({},n.width,{editType:"plot"}),dash:n.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:r.offsetgroup,alignmentgroup:r.alignmentgroup,zorder:r.zorder}}}),Al=f({"src/traces/waterfall/layout_attributes.js"(t,e){e.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}}}),kl=f({"src/constants/delta.js"(t,e){e.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"▲"},DECREASING:{COLOR:"#FF4136",SYMBOL:"▼"}}}}),Ml=f({"src/traces/waterfall/defaults.js"(t,e){var r=le(),n=Qn(),i=Ya().handleText,a=Hn(),o=Gn(),s=Tl(),l=H(),c=kl(),u=c.INCREASING.COLOR,h=c.DECREASING.COLOR;function p(t,e,r){t(e+".marker.color",r),t(e+".marker.line.color",l.defaultLine),t(e+".marker.line.width")}e.exports={supplyDefaults:function(t,e,n,l){function c(n,i){return r.coerce(t,e,s,n,i)}if(a(t,e,l,c)){o(t,e,l,c),c("xhoverformat"),c("yhoverformat"),c("measure"),c("orientation",e.x&&!e.y?"h":"v"),c("base"),c("offset"),c("width"),c("text"),c("hovertext"),c("hovertemplate");var f=c("textposition");i(t,e,l,c,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),"none"!==e.textposition&&(c("texttemplate"),e.texttemplate||c("textinfo")),p(c,"increasing",u),p(c,"decreasing",h),p(c,"totals","#4499FF"),c("connector.visible")&&(c("connector.mode"),c("connector.line.width")&&(c("connector.line.color"),c("connector.line.dash"))),c("zorder")}else e.visible=!1},crossTraceDefaults:function(t,e){var i,a;function o(t){return r.coerce(a._input,a,s,t)}if("group"===e.waterfallmode)for(var l=0;l0&&(g+=p?"M"+h[0]+","+d[1]+"V"+d[0]:"M"+h[1]+","+d[0]+"H"+h[0]),"between"!==f&&(o.isSum||s path").each((function(t){if(!t.isBlank){var e=s[t.dir].marker;r.select(this).call(i.fill,e.color).call(i.stroke,e.line.color).call(n.dashLine,e.line.dash,e.line.width).style("opacity",s.selectedpoints&&!t.selected?a:1)}})),l(o,s,t),o.selectAll(".lines").each((function(){var t=s.connector.line;n.lineGroupStyle(r.select(this).selectAll("path"),t.width,t.color,t.dash)}))}))}}}}),Pl=f({"src/traces/waterfall/hover.js"(t,e){var r=ir().hoverLabelText,n=H().opacity,i=ro().hoverOnBars,a=kl(),o=a.INCREASING.SYMBOL,s=a.DECREASING.SYMBOL;e.exports=function(t,e,a,l,c){var u=i(t,e,a,l,c);if(u){var h=u.cd,p=h[0].trace,f="h"===p.orientation,d=f?"x":"y",m=f?t.xa:t.ya,g=h[u.index],y=g.isSum?g.b+g.s:g.rawS;u.initial=g.b+g.s-y,u.delta=y,u.final=u.initial+u.delta;var v=A(Math.abs(u.delta));u.deltaLabel=y<0?"("+v+")":v,u.finalLabel=A(u.final),u.initialLabel=A(u.initial);var x=g.hi||p.hoverinfo,_=[];if(x&&"none"!==x&&"skip"!==x){var b="all"===x,w=x.split("+"),T=function(t){return b||-1!==w.indexOf(t)};g.isSum||(T("final")&&(f?!T("x"):!T("y"))&&_.push(u.finalLabel),T("delta")&&(y<0?_.push(u.deltaLabel+" "+s):_.push(u.deltaLabel+" "+o)),T("initial")&&_.push("Initial: "+u.initialLabel))}return _.length&&(u.extraText=_.join("
")),u.color=function(t,e){var r=t[e.dir].marker,i=r.color,a=r.line.color,o=r.line.width;return n(i)?i:n(a)&&o?a:void 0}(p,g),[u]}function A(t){return r(m,t,p[d+"hoverformat"])}}}}),zl=f({"src/traces/waterfall/event_data.js"(t,e){e.exports=function(t,e){return t.x="xVal"in e?e.xVal:e.x,t.y="yVal"in e?e.yVal:e.y,"initial"in e&&(t.initial=e.initial),"delta"in e&&(t.delta=e.delta),"final"in e&&(t.final=e.final),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),t}}}),Dl=f({"src/traces/waterfall/index.js"(t,e){e.exports={attributes:Tl(),layoutAttributes:Al(),supplyDefaults:Ml().supplyDefaults,crossTraceDefaults:Ml().crossTraceDefaults,supplyLayoutDefaults:Sl(),calc:El(),crossTraceCalc:Cl(),plot:Il(),style:Ll().style,hoverPoints:Pl(),eventData:zl(),selectPoints:io(),moduleType:"trace",name:"waterfall",basePlotModule:Si(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}}}),Ol=f({"lib/waterfall.js"(t,e){e.exports=Dl()}}),Rl=f({"src/traces/image/constants.js"(t,e){e.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(t){return t.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(t){return t.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(t){return t.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(t){var e=t.slice(0,3);return e[1]=e[1]+"%",e[2]=e[2]+"%",e},suffix:["°","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(t){var e=t.slice(0,4);return e[1]=e[1]+"%",e[2]=e[2]+"%",e},suffix:["°","%","%",""]}}}}}),Fl=f({"src/traces/image/attributes.js"(t,e){var r,n,i=U(),a=Tn().zorder,o=Ot().hovertemplateAttrs,s=R().extendFlat,l=Rl().colormodel,c=["rgb","rgba","rgba256","hsl","hsla"],u=[],h=[];for(n=0;n0?s-4:s;for(r=0;r>16&255,c[u++]=e>>8&255,c[u++]=255&e;return 2===l&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,c[u++]=255&e),1===l&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,c[u++]=e>>8&255,c[u++]=255&e),c},t.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a=[],o=16383,s=0,c=n-i;sc?c:s+o));return 1===i?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")};var e,r=[],n=[],i=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(e=0;e<64;++e)r[e]=a[e],n[a.charCodeAt(e)]=e;function o(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function s(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function l(t,e,r){for(var n,i=[],a=e;a>1,u=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-u)-1,f>>=-u,u+=s;u>0;a=256*a+t[e+h],h+=p,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+h],h+=p,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=c}return(f?-1:1)*o*Math.pow(2,a-n)},t.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(e*l-1)*Math.pow(2,i),o+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=d,s/=256,i-=8);for(o=o<0;t[r+f]=255&o,f+=d,o/=256,c-=8);t[r+f-d]|=128*m}}}),ql=f({"node_modules/buffer/index.js"(t){var e=Ul(),r=Vl(),n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=o,t.SlowBuffer=function(t){return+t!=t&&(t=0),o.alloc(+t)},t.INSPECT_MAX_BYTES=50;var i=2147483647;function a(t){if(t>i)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,o.prototype),e}function o(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return c(t)}return s(t,e,r)}function s(t,e,r){if("string"==typeof t)return function(t,e){if(("string"!=typeof e||""===e)&&(e="utf8"),!o.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=0|f(t,e),n=a(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(Z(t,Uint8Array)){let e=new Uint8Array(t);return h(e.buffer,e.byteOffset,e.byteLength)}return u(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(Z(t,ArrayBuffer)||t&&Z(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Z(t,SharedArrayBuffer)||t&&Z(t.buffer,SharedArrayBuffer)))return h(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');let n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return o.from(n,e,r);let i=function(t){if(o.isBuffer(t)){let e=0|p(t.length),r=a(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||Y(t.length)?a(0):u(t):"Buffer"===t.type&&Array.isArray(t.data)?u(t.data):void 0}(t);if(i)return i;if(typeof Symbol<"u"&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return o.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function l(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function c(t){return l(t),a(t<0?0:0|p(t))}function u(t){let e=t.length<0?0:0|p(t.length),r=a(e);for(let n=0;n=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|t}function f(t,e){if(o.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||Z(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return H(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return G(t).length;default:if(i)return n?-1:H(t).length;e=(""+e).toLowerCase(),i=!0}}function d(t,e,r){let n=!1;if((void 0===e||e<0)&&(e=0),e>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return E(this,e,r);case"utf8":case"utf-8":return A(this,e,r);case"ascii":return M(this,e,r);case"latin1":case"binary":return S(this,e,r);case"base64":return T(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function m(t,e,r){let n=t[e];t[e]=t[r],t[r]=n}function g(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),Y(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=o.from(e,n)),o.isBuffer(e))return 0===e.length?-1:y(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):y(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function y(t,e,r,n,i){let a,o=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){let n=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){let r=!0;for(let n=0;ni&&(n=i):n=i;let a,o=e.length;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function T(t,r,n){return 0===r&&n===t.length?e.fromByteArray(t):e.fromByteArray(t.slice(r,n))}function A(t,e,r){r=Math.min(t.length,r);let n=[],i=e;for(;i239?4:e>223?3:e>191?2:1;if(i+o<=r){let r,n,s,l;switch(o){case 1:e<128&&(a=e);break;case 2:r=t[i+1],128==(192&r)&&(l=(31&e)<<6|63&r,l>127&&(a=l));break;case 3:r=t[i+1],n=t[i+2],128==(192&r)&&128==(192&n)&&(l=(15&e)<<12|(63&r)<<6|63&n,l>2047&&(l<55296||l>57343)&&(a=l));break;case 4:r=t[i+1],n=t[i+2],s=t[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(l=(15&e)<<18|(63&r)<<12|(63&n)<<6|63&s,l>65535&&l<1114112&&(a=l))}}null===a?(a=65533,o=1):a>65535&&(a-=65536,n.push(a>>>10&1023|55296),a=56320|1023&a),n.push(a),i+=o}return function(t){let e=t.length;if(e<=k)return String.fromCharCode.apply(String,t);let r="",n=0;for(;nn.length?(o.isBuffer(e)||(e=o.from(e)),e.copy(n,i)):Uint8Array.prototype.set.call(n,e,i);else{if(!o.isBuffer(e))throw new TypeError('"list" argument must be an Array of Buffers');e.copy(n,i)}i+=e.length}return n},o.byteLength=f,o.prototype._isBuffer=!0,o.prototype.swap16=function(){let t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let e=0;er&&(e+=" ... "),""},n&&(o.prototype[n]=o.prototype.inspect),o.prototype.compare=function(t,e,r,n,i){if(Z(t,Uint8Array)&&(t=o.from(t,t.offset,t.byteLength)),!o.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;let a=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),l=Math.min(a,s),c=this.slice(n,i),u=t.slice(e,r);for(let t=0;t>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}let i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return v(this,t,e,r);case"utf8":case"utf-8":return x(this,t,e,r);case"ascii":case"latin1":case"binary":return _(this,t,e,r);case"base64":return b(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function M(t,e,r){let n="";r=Math.min(t.length,r);for(let i=e;in)&&(r=n);let i="";for(let n=e;nr)throw new RangeError("Trying to access beyond buffer length")}function L(t,e,r,n,i,a){if(!o.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function P(t,e,r,n,i){N(e,n,i,t,r,7);let a=Number(e&BigInt(4294967295));t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,r}function z(t,e,r,n,i){N(e,n,i,t,r,7);let a=Number(e&BigInt(4294967295));t[r+7]=a,a>>=8,t[r+6]=a,a>>=8,t[r+5]=a,a>>=8,t[r+4]=a;let o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o>>=8,t[r+2]=o,o>>=8,t[r+1]=o,o>>=8,t[r]=o,r+8}function D(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function O(t,e,n,i,a){return e=+e,n>>>=0,a||D(t,0,n,4),r.write(t,e,n,i,23,4),n+4}function R(t,e,n,i,a){return e=+e,n>>>=0,a||D(t,0,n,8),r.write(t,e,n,i,52,8),n+8}o.prototype.slice=function(t,e){let r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||I(t,e,this.length);let n=this[t],i=1,a=0;for(;++a>>=0,e>>>=0,r||I(t,e,this.length);let n=this[t+--e],i=1;for(;e>0&&(i*=256);)n+=this[t+--e]*i;return n},o.prototype.readUint8=o.prototype.readUInt8=function(t,e){return t>>>=0,e||I(t,1,this.length),this[t]},o.prototype.readUint16LE=o.prototype.readUInt16LE=function(t,e){return t>>>=0,e||I(t,2,this.length),this[t]|this[t+1]<<8},o.prototype.readUint16BE=o.prototype.readUInt16BE=function(t,e){return t>>>=0,e||I(t,2,this.length),this[t]<<8|this[t+1]},o.prototype.readUint32LE=o.prototype.readUInt32LE=function(t,e){return t>>>=0,e||I(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},o.prototype.readUint32BE=o.prototype.readUInt32BE=function(t,e){return t>>>=0,e||I(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},o.prototype.readBigUInt64LE=$((function(t){U(t>>>=0,"offset");let e=this[t],r=this[t+7];(void 0===e||void 0===r)&&V(t,this.length-8);let n=e+256*this[++t]+65536*this[++t]+this[++t]*2**24,i=this[++t]+256*this[++t]+65536*this[++t]+r*2**24;return BigInt(n)+(BigInt(i)<>>=0,"offset");let e=this[t],r=this[t+7];(void 0===e||void 0===r)&&V(t,this.length-8);let n=e*2**24+65536*this[++t]+256*this[++t]+this[++t],i=this[++t]*2**24+65536*this[++t]+256*this[++t]+r;return(BigInt(n)<>>=0,e>>>=0,r||I(t,e,this.length);let n=this[t],i=1,a=0;for(;++a=i&&(n-=Math.pow(2,8*e)),n},o.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||I(t,e,this.length);let n=e,i=1,a=this[t+--n];for(;n>0&&(i*=256);)a+=this[t+--n]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*e)),a},o.prototype.readInt8=function(t,e){return t>>>=0,e||I(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},o.prototype.readInt16LE=function(t,e){t>>>=0,e||I(t,2,this.length);let r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt16BE=function(t,e){t>>>=0,e||I(t,2,this.length);let r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},o.prototype.readInt32LE=function(t,e){return t>>>=0,e||I(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},o.prototype.readInt32BE=function(t,e){return t>>>=0,e||I(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},o.prototype.readBigInt64LE=$((function(t){U(t>>>=0,"offset");let e=this[t],r=this[t+7];(void 0===e||void 0===r)&&V(t,this.length-8);let n=this[t+4]+256*this[t+5]+65536*this[t+6]+(r<<24);return(BigInt(n)<>>=0,"offset");let e=this[t],r=this[t+7];(void 0===e||void 0===r)&&V(t,this.length-8);let n=(e<<24)+65536*this[++t]+256*this[++t]+this[++t];return(BigInt(n)<>>=0,e||I(t,4,this.length),r.read(this,t,!0,23,4)},o.prototype.readFloatBE=function(t,e){return t>>>=0,e||I(t,4,this.length),r.read(this,t,!1,23,4)},o.prototype.readDoubleLE=function(t,e){return t>>>=0,e||I(t,8,this.length),r.read(this,t,!0,52,8)},o.prototype.readDoubleBE=function(t,e){return t>>>=0,e||I(t,8,this.length),r.read(this,t,!1,52,8)},o.prototype.writeUintLE=o.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||L(this,t,e,r,Math.pow(2,8*r)-1,0);let i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n||L(this,t,e,r,Math.pow(2,8*r)-1,0);let i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},o.prototype.writeUint8=o.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,255,0),this[e]=255&t,e+1},o.prototype.writeUint16LE=o.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeUint16BE=o.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeUint32LE=o.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},o.prototype.writeUint32BE=o.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigUInt64LE=$((function(t,e=0){return P(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeBigUInt64BE=$((function(t,e=0){return z(this,t,e,BigInt(0),BigInt("0xffffffffffffffff"))})),o.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){let n=Math.pow(2,8*r-1);L(this,t,e,r,n-1,-n)}let i=0,a=1,o=0;for(this[e]=255&t;++i>>=0,!n){let n=Math.pow(2,8*r-1);L(this,t,e,r,n-1,-n)}let i=r-1,a=1,o=0;for(this[e+i]=255&t;--i>=0&&(a*=256);)t<0&&0===o&&0!==this[e+i+1]&&(o=1),this[e+i]=(t/a|0)-o&255;return e+r},o.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},o.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},o.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},o.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},o.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||L(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},o.prototype.writeBigInt64LE=$((function(t,e=0){return P(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeBigInt64BE=$((function(t,e=0){return z(this,t,e,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),o.prototype.writeFloatLE=function(t,e,r){return O(this,t,e,!0,r)},o.prototype.writeFloatBE=function(t,e,r){return O(this,t,e,!1,r)},o.prototype.writeDoubleLE=function(t,e,r){return R(this,t,e,!0,r)},o.prototype.writeDoubleBE=function(t,e,r){return R(this,t,e,!1,r)},o.prototype.copy=function(t,e,r,n){if(!o.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),!n&&0!==n&&(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(i=e;i=n+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function N(t,e,r,n,i,a){if(t>r||t3?0===e||e===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(a+1)}${i}`:`>= -(2${i} ** ${8*(a+1)-1}${i}) and < 2 ** ${8*(a+1)-1}${i}`:`>= ${e}${i} and <= ${r}${i}`,new F.ERR_OUT_OF_RANGE("value",n,t)}!function(t,e,r){U(e,"offset"),(void 0===t[e]||void 0===t[e+r])&&V(e,t.length-(r+1))}(n,i,a)}function U(t,e){if("number"!=typeof t)throw new F.ERR_INVALID_ARG_TYPE(e,"number",t)}function V(t,e,r){throw Math.floor(t)!==t?(U(t,r),new F.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new F.ERR_BUFFER_OUT_OF_BOUNDS:new F.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}B("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),B("ERR_INVALID_ARG_TYPE",(function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`}),TypeError),B("ERR_OUT_OF_RANGE",(function(t,e,r){let n=`The value of "${t}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=j(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=j(i)),i+="n"),n+=` It must be ${e}. Received ${i}`,n}),RangeError);var q=/[^+/0-9A-Za-z-_]/g;function H(t,e){e=e||1/0;let r,n=t.length,i=null,a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function G(t){return e.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(q,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function W(t,e,r,n){let i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function Z(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function Y(t){return t!=t}var X=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let n=16*r;for(let i=0;i<16;++i)e[n+i]=t[r]+t[i]}return e}();function $(t){return typeof BigInt>"u"?K:t}function K(){throw new Error("BigInt not supported")}}}),Hl=f({"node_modules/has-symbols/shams.js"(t,e){e.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e||"[object Symbol]"!==Object.prototype.toString.call(e)||"[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(e in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length||"function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var n=Object.getOwnPropertySymbols(t);if(1!==n.length||n[0]!==e||!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}}}),Gl=f({"node_modules/has-tostringtag/shams.js"(t,e){var r=Hl();e.exports=function(){return r()&&!!Symbol.toStringTag}}}),Wl=f({"node_modules/es-errors/index.js"(t,e){e.exports=Error}}),Zl=f({"node_modules/es-errors/eval.js"(t,e){e.exports=EvalError}}),Yl=f({"node_modules/es-errors/range.js"(t,e){e.exports=RangeError}}),Xl=f({"node_modules/es-errors/ref.js"(t,e){e.exports=ReferenceError}}),$l=f({"node_modules/es-errors/syntax.js"(t,e){e.exports=SyntaxError}}),Kl=f({"node_modules/es-errors/type.js"(t,e){e.exports=TypeError}}),Jl=f({"node_modules/es-errors/uri.js"(t,e){e.exports=URIError}}),Ql=f({"node_modules/has-symbols/index.js"(t,e){var r=typeof Symbol<"u"&&Symbol,n=Hl();e.exports=function(){return"function"==typeof r&&"function"==typeof Symbol&&"symbol"==typeof r("foo")&&"symbol"==typeof Symbol("bar")&&n()}}}),tc=f({"node_modules/has-proto/index.js"(t,e){var r={foo:{}},n=Object;e.exports=function(){return{__proto__:r}.foo===r.foo&&!({__proto__:null}instanceof n)}}}),ec=f({"node_modules/function-bind/implementation.js"(t,e){var r=Object.prototype.toString,n=Math.max,i=function(t,e){for(var r=[],n=0;n"u"||!y?r:y(Uint8Array),_={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?r:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?r:ArrayBuffer,"%ArrayIteratorPrototype%":m&&y?y([][Symbol.iterator]()):r,"%AsyncFromSyncIteratorPrototype%":r,"%AsyncFunction%":v,"%AsyncGenerator%":v,"%AsyncGeneratorFunction%":v,"%AsyncIteratorPrototype%":v,"%Atomics%":typeof Atomics>"u"?r:Atomics,"%BigInt%":typeof BigInt>"u"?r:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?r:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?r:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?r:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":n,"%eval%":eval,"%EvalError%":i,"%Float32Array%":typeof Float32Array>"u"?r:Float32Array,"%Float64Array%":typeof Float64Array>"u"?r:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?r:FinalizationRegistry,"%Function%":u,"%GeneratorFunction%":v,"%Int8Array%":typeof Int8Array>"u"?r:Int8Array,"%Int16Array%":typeof Int16Array>"u"?r:Int16Array,"%Int32Array%":typeof Int32Array>"u"?r:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":m&&y?y(y([][Symbol.iterator]())):r,"%JSON%":"object"==typeof JSON?JSON:r,"%Map%":typeof Map>"u"?r:Map,"%MapIteratorPrototype%":typeof Map>"u"||!m||!y?r:y((new Map)[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?r:Promise,"%Proxy%":typeof Proxy>"u"?r:Proxy,"%RangeError%":a,"%ReferenceError%":o,"%Reflect%":typeof Reflect>"u"?r:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?r:Set,"%SetIteratorPrototype%":typeof Set>"u"||!m||!y?r:y((new Set)[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?r:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":m&&y?y(""[Symbol.iterator]()):r,"%Symbol%":m?Symbol:r,"%SyntaxError%":s,"%ThrowTypeError%":d,"%TypedArray%":x,"%TypeError%":l,"%Uint8Array%":typeof Uint8Array>"u"?r:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?r:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?r:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?r:Uint32Array,"%URIError%":c,"%WeakMap%":typeof WeakMap>"u"?r:WeakMap,"%WeakRef%":typeof WeakRef>"u"?r:WeakRef,"%WeakSet%":typeof WeakSet>"u"?r:WeakSet};if(y)try{null.error}catch(t){b=y(y(t)),_["%Error.prototype%"]=b}var b,w=function t(e){var r;if("%AsyncFunction%"===e)r=h("async function () {}");else if("%GeneratorFunction%"===e)r=h("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=h("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var i=t("%AsyncGenerator%");i&&y&&(r=y(i.prototype))}return _[e]=r,r},T={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},A=rc(),k=nc(),M=A.call(Function.call,Array.prototype.concat),S=A.call(Function.apply,Array.prototype.splice),E=A.call(Function.call,String.prototype.replace),C=A.call(Function.call,String.prototype.slice),I=A.call(Function.call,RegExp.prototype.exec),L=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,P=/\\(\\)?/g,z=function(t,e){var r,n=t;if(k(T,n)&&(n="%"+(r=T[n])[0]+"%"),k(_,n)){var i=_[n];if(i===v&&(i=w(n)),typeof i>"u"&&!e)throw new l("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:i}}throw new s("intrinsic "+t+" does not exist!")};e.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new l("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new l('"allowMissing" argument must be a boolean');if(null===I(/^%?[^%]*%?$/,t))throw new s("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=C(t,0,1),r=C(t,-1);if("%"===e&&"%"!==r)throw new s("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new s("invalid intrinsic syntax, expected opening `%`");var n=[];return E(t,L,(function(t,e,r,i){n[n.length]=r?E(i,P,"$1"):e||t})),n}(t),n=r.length>0?r[0]:"",i=z("%"+n+"%",e),a=i.name,o=i.value,c=!1,u=i.alias;u&&(n=u[0],S(r,M([0,1],u)));for(var h=1,f=!0;h=r.length){var y=p(o,d);o=(f=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:o[d]}else f=k(o,d),o=o[d];f&&!c&&(_[a]=o)}}return o}}}),ac=f({"node_modules/es-define-property/index.js"(t,e){var r=ic()("%Object.defineProperty%",!0)||!1;if(r)try{r({},"a",{value:1})}catch{r=!1}e.exports=r}}),oc=f({"node_modules/gopd/index.js"(t,e){var r=ic()("%Object.getOwnPropertyDescriptor%",!0);if(r)try{r([],"length")}catch{r=null}e.exports=r}}),sc=f({"node_modules/define-data-property/index.js"(t,e){var r=ac(),n=$l(),i=Kl(),a=oc();e.exports=function(t,e,o){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new i("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var s=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,u=arguments.length>6&&arguments[6],h=!!a&&a(t,e);if(r)r(t,e,{configurable:null===c&&h?h.configurable:!c,enumerable:null===s&&h?h.enumerable:!s,value:o,writable:null===l&&h?h.writable:!l});else{if(!u&&(s||l||c))throw new n("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=o}}}}),lc=f({"node_modules/has-property-descriptors/index.js"(t,e){var r=ac(),n=function(){return!!r};n.hasArrayLengthDefineBug=function(){if(!r)return null;try{return 1!==r([],"length",{value:1}).length}catch{return!0}},e.exports=n}}),cc=f({"node_modules/set-function-length/index.js"(t,e){var r=ic(),n=sc(),i=lc()(),a=oc(),o=Kl(),s=r("%Math.floor%");e.exports=function(t,e){if("function"!=typeof t)throw new o("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||s(e)!==e)throw new o("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],l=!0,c=!0;if("length"in t&&a){var u=a(t,"length");u&&!u.configurable&&(l=!1),u&&!u.writable&&(c=!1)}return(l||c||!r)&&(i?n(t,"length",e,!0,!0):n(t,"length",e)),t}}}),uc=f({"node_modules/call-bind/index.js"(t,e){var r=rc(),n=ic(),i=cc(),a=Kl(),o=n("%Function.prototype.apply%"),s=n("%Function.prototype.call%"),l=n("%Reflect.apply%",!0)||r.call(s,o),c=ac(),u=n("%Math.max%");e.exports=function(t){if("function"!=typeof t)throw new a("a function is required");var e=l(r,s,arguments);return i(e,1+u(0,t.length-(arguments.length-1)),!0)};var h=function(){return l(r,o,arguments)};c?c(e.exports,"apply",{value:h}):e.exports.apply=h}}),hc=f({"node_modules/call-bind/callBound.js"(t,e){var r=ic(),n=uc(),i=n(r("String.prototype.indexOf"));e.exports=function(t,e){var a=r(t,!!e);return"function"==typeof a&&i(t,".prototype.")>-1?n(a):a}}}),pc=f({"node_modules/is-arguments/index.js"(t,e){var r=Gl()(),n=hc()("Object.prototype.toString"),i=function(t){return!(r&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===n(t)},a=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==n(t)&&"[object Function]"===n(t.callee)},o=function(){return i(arguments)}();i.isLegacyArguments=a,e.exports=o?i:a}}),fc=f({"node_modules/is-generator-function/index.js"(t,e){var r,n=Object.prototype.toString,i=Function.prototype.toString,a=/^\s*(?:function)?\*/,o=Gl()(),s=Object.getPrototypeOf;e.exports=function(t){if("function"!=typeof t)return!1;if(a.test(i.call(t)))return!0;if(!o)return"[object GeneratorFunction]"===n.call(t);if(!s)return!1;if(typeof r>"u"){var e=function(){if(!o)return!1;try{return Function("return function*() {}")()}catch{}}();r=!!e&&s(e)}return s(t)===r}}}),dc=f({"node_modules/is-callable/index.js"(t,e){var r,n,i=Function.prototype.toString,a="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof a&&"function"==typeof Object.defineProperty)try{r=Object.defineProperty({},"length",{get:function(){throw n}}),n={},a((function(){throw 42}),null,r)}catch(t){t!==n&&(a=null)}else a=null;var o,s=/^\s*class\b/,l=function(t){try{var e=i.call(t);return s.test(e)}catch{return!1}},c=function(t){try{return!l(t)&&(i.call(t),!0)}catch{return!1}},u=Object.prototype.toString,h="function"==typeof Symbol&&!!Symbol.toStringTag,p=!(0 in[,]),f=function(){return!1};"object"==typeof document&&(o=document.all,u.call(o)===u.call(document.all)&&(f=function(t){if((p||!t)&&(typeof t>"u"||"object"==typeof t))try{var e=u.call(t);return("[object HTMLAllCollection]"===e||"[object HTML document.all class]"===e||"[object HTMLCollection]"===e||"[object Object]"===e)&&null==t("")}catch{}return!1})),e.exports=a?function(t){if(f(t))return!0;if(!t||"function"!=typeof t&&"object"!=typeof t)return!1;try{a(t,null,r)}catch(t){if(t!==n)return!1}return!l(t)&&c(t)}:function(t){if(f(t))return!0;if(!t||"function"!=typeof t&&"object"!=typeof t)return!1;if(h)return c(t);if(l(t))return!1;var e=u.call(t);return!("[object Function]"!==e&&"[object GeneratorFunction]"!==e&&!/^\[object HTML/.test(e))&&c(t)}}}),mc=f({"node_modules/for-each/index.js"(t,e){var r=dc(),n=Object.prototype.toString,i=Object.prototype.hasOwnProperty;e.exports=function(t,e,a){if(!r(e))throw new TypeError("iterator must be a function");var o;arguments.length>=3&&(o=a),"[object Array]"===n.call(t)?function(t,e,r){for(var n=0,a=t.length;n"u"?window:globalThis;e.exports=function(){for(var t=[],e=0;e"u"?window:globalThis,u=n(),h=a("String.prototype.slice"),p=Object.getPrototypeOf,f=a("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1?e:"Object"===e&&function(t){var e=!1;return r(d,(function(r,n){if(!e)try{r(t),e=h(n,1)}catch{}})),e}(t)}return o?function(t){var e=!1;return r(d,(function(r,n){if(!e)try{"$"+r(t)===n&&(e=h(n,1))}catch{}})),e}(t):null}}}),vc=f({"node_modules/is-typed-array/index.js"(t,e){var r=mc(),n=gc(),i=hc(),a=i("Object.prototype.toString"),o=Gl()(),s=oc(),l=typeof globalThis>"u"?window:globalThis,c=n(),u=i("Array.prototype.indexOf",!0)||function(t,e){for(var r=0;r-1}return!!s&&function(t){var e=!1;return r(p,(function(r,n){if(!e)try{e=r.call(t)===n}catch{}})),e}(t)}}}),xc=f({"node_modules/util/support/types.js"(t){var e=pc(),r=fc(),n=yc(),i=vc();function a(t){return t.call.bind(t)}var o,s,l=typeof BigInt<"u",c=typeof Symbol<"u",u=a(Object.prototype.toString),h=a(Number.prototype.valueOf),p=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);function d(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch{return!1}}function m(t){return"[object Map]"===u(t)}function g(t){return"[object Set]"===u(t)}function y(t){return"[object WeakMap]"===u(t)}function v(t){return"[object WeakSet]"===u(t)}function x(t){return"[object ArrayBuffer]"===u(t)}function _(t){return!(typeof ArrayBuffer>"u")&&(x.working?x(t):t instanceof ArrayBuffer)}function b(t){return"[object DataView]"===u(t)}function w(t){return!(typeof DataView>"u")&&(b.working?b(t):t instanceof DataView)}l&&(o=a(BigInt.prototype.valueOf)),c&&(s=a(Symbol.prototype.valueOf)),t.isArgumentsObject=e,t.isGeneratorFunction=r,t.isTypedArray=i,t.isPromise=function(t){return typeof Promise<"u"&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},t.isArrayBufferView=function(t){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(t):i(t)||w(t)},t.isUint8Array=function(t){return"Uint8Array"===n(t)},t.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===n(t)},t.isUint16Array=function(t){return"Uint16Array"===n(t)},t.isUint32Array=function(t){return"Uint32Array"===n(t)},t.isInt8Array=function(t){return"Int8Array"===n(t)},t.isInt16Array=function(t){return"Int16Array"===n(t)},t.isInt32Array=function(t){return"Int32Array"===n(t)},t.isFloat32Array=function(t){return"Float32Array"===n(t)},t.isFloat64Array=function(t){return"Float64Array"===n(t)},t.isBigInt64Array=function(t){return"BigInt64Array"===n(t)},t.isBigUint64Array=function(t){return"BigUint64Array"===n(t)},m.working=typeof Map<"u"&&m(new Map),t.isMap=function(t){return!(typeof Map>"u")&&(m.working?m(t):t instanceof Map)},g.working=typeof Set<"u"&&g(new Set),t.isSet=function(t){return!(typeof Set>"u")&&(g.working?g(t):t instanceof Set)},y.working=typeof WeakMap<"u"&&y(new WeakMap),t.isWeakMap=function(t){return!(typeof WeakMap>"u")&&(y.working?y(t):t instanceof WeakMap)},v.working=typeof WeakSet<"u"&&v(new WeakSet),t.isWeakSet=function(t){return v(t)},x.working=typeof ArrayBuffer<"u"&&x(new ArrayBuffer),t.isArrayBuffer=_,b.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&b(new DataView(new ArrayBuffer(1),0,1)),t.isDataView=w;var T=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function A(t){return"[object SharedArrayBuffer]"===u(t)}function k(t){return!(typeof T>"u")&&(typeof A.working>"u"&&(A.working=A(new T)),A.working?A(t):t instanceof T)}function M(t){return d(t,h)}function S(t){return d(t,p)}function E(t){return d(t,f)}function C(t){return l&&d(t,o)}function I(t){return c&&d(t,s)}t.isSharedArrayBuffer=k,t.isAsyncFunction=function(t){return"[object AsyncFunction]"===u(t)},t.isMapIterator=function(t){return"[object Map Iterator]"===u(t)},t.isSetIterator=function(t){return"[object Set Iterator]"===u(t)},t.isGeneratorObject=function(t){return"[object Generator]"===u(t)},t.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===u(t)},t.isNumberObject=M,t.isStringObject=S,t.isBooleanObject=E,t.isBigIntObject=C,t.isSymbolObject=I,t.isBoxedPrimitive=function(t){return M(t)||S(t)||E(t)||C(t)||I(t)},t.isAnyArrayBuffer=function(t){return typeof Uint8Array<"u"&&(_(t)||k(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach((function(e){Object.defineProperty(t,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})}))}}),_c=f({"node_modules/util/support/isBufferBrowser.js"(t,e){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}}}),bc=f({"(disabled):node_modules/util/util.js"(t){var e=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=a)return t;switch(t){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch{return"[Circular]"}default:return t}})),l=i[n];n"u")return function(){return t.deprecate(e,r).apply(this,arguments)};var n=!1;return function(){if(!n){if(c.throwDeprecation)throw new Error(r);c.traceDeprecation?console.trace(r):console.error(r),n=!0}return e.apply(this,arguments)}};var n,i={},a=/^$/;function o(e,r){var n={seen:[],stylize:l};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),d(r)?n.showHidden=r:r&&t._extend(n,r),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=s),u(n,e,n.depth)}function s(t,e){var r=o.styles[e];return r?"["+o.colors[r][0]+"m"+t+"["+o.colors[r][1]+"m":t}function l(t,e){return t}function u(e,r,n){if(e.customInspect&&r&&T(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return y(i)||(i=u(e,i,n)),i}var a=function(t,e){if(v(e))return t.stylize("undefined","undefined");if(y(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return g(e)?t.stylize(""+e,"number"):d(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(e,r);if(a)return a;var o=Object.keys(r),s=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),w(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return h(r);if(0===o.length){if(T(r)){var l=r.name?": "+r.name:"";return e.stylize("[Function"+l+"]","special")}if(x(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return e.stylize(Date.prototype.toString.call(r),"date");if(w(r))return h(r)}var c,_="",A=!1,k=["{","}"];return f(r)&&(A=!0,k=["[","]"]),T(r)&&(_=" [Function"+(r.name?": "+r.name:"")+"]"),x(r)&&(_=" "+RegExp.prototype.toString.call(r)),b(r)&&(_=" "+Date.prototype.toUTCString.call(r)),w(r)&&(_=" "+h(r)),0!==o.length||A&&0!=r.length?n<0?x(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),c=A?function(t,e,r,n,i){for(var a=[],o=0,s=e.length;o60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(c,_,k)):k[0]+_+k[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),S(n,i)||(o="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=m(r)?u(t,l.value,null):u(t,l.value,r-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map((function(t){return" "+t})).join("\n").slice(2):"\n"+s.split("\n").map((function(t){return" "+t})).join("\n")):s=t.stylize("[Circular]","special")),v(o)){if(a&&i.match(/^\d+$/))return s;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function f(t){return Array.isArray(t)}function d(t){return"boolean"==typeof t}function m(t){return null===t}function g(t){return"number"==typeof t}function y(t){return"string"==typeof t}function v(t){return void 0===t}function x(t){return _(t)&&"[object RegExp]"===A(t)}function _(t){return"object"==typeof t&&null!==t}function b(t){return _(t)&&"[object Date]"===A(t)}function w(t){return _(t)&&("[object Error]"===A(t)||t instanceof Error)}function T(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function k(t){return t<10?"0"+t.toString(10):t.toString(10)}n=(n="false").replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),a=new RegExp("^"+n+"$","i"),t.debuglog=function(e){if(e=e.toUpperCase(),!i[e])if(a.test(e)){var r=c.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.types=xc(),t.isArray=f,t.isBoolean=d,t.isNull=m,t.isNullOrUndefined=function(t){return null==t},t.isNumber=g,t.isString=y,t.isSymbol=function(t){return"symbol"==typeof t},t.isUndefined=v,t.isRegExp=x,t.types.isRegExp=x,t.isObject=_,t.isDate=b,t.types.isDate=b,t.isError=w,t.types.isNativeError=w,t.isFunction=T,t.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||typeof t>"u"},t.isBuffer=_c();var M=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function S(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.log=function(){var e,r;console.log("%s - %s",(r=[k((e=new Date).getHours()),k(e.getMinutes()),k(e.getSeconds())].join(":"),[e.getDate(),M[e.getMonth()],r].join(" ")),t.format.apply(t,arguments))},t.inherits=jl(),t._extend=function(t,e){if(!e||!_(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var E=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;function C(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}t.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(E&&t[E]){var r;if("function"!=typeof(r=t[E]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,E,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var e,r,n=new Promise((function(t,n){e=t,r=n})),i=[],a=0;a0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return a.alloc(0);for(var e=a.allocUnsafe(t>>>0),r=this.head,n=0;r;)l(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return ti.length?i.length:t;if(a===i.length?n+=i:n+=i.slice(0,t),0==(t-=a)){a===i.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=i.slice(a));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=a.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var i=r.data,o=t>i.length?i.length:t;if(i.copy(e,e.length-t,0,o),0==(t-=o)){o===i.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=i.slice(o));break}++n}return this.length-=n,e}},{key:s,value:function(t,e){return o(this,function(t){for(var e=1;e2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}n("ERR_INVALID_OPT_VALUE",(function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(t,e,r){var n,a;if("string"==typeof e&&function(t,e){return t.substr(0,4)===e}(e,"not ")?(n="must not be",e=e.replace(/^not /,"")):n="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))a="The ".concat(t," ").concat(n," ").concat(i(e,"type"));else{var o=function(t,e,r){return"number"!=typeof r&&(r=0),!(r+1>t.length)&&-1!==t.indexOf(".",r)}(t)?"property":"argument";a='The "'.concat(t,'" ').concat(o," ").concat(n," ").concat(i(e,"type"))}return a+". Received type ".concat(typeof r)}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(t){return"The "+t+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(t){return"Cannot call "+t+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(t){return"Unknown encoding: "+t}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.codes=r}}),kc=f({"node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js"(t,e){var r=Ac().codes.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(t,e,n,i){var a=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,i,n);if(null!=a){if(!isFinite(a)||Math.floor(a)!==a||a<0)throw new r(i?n:"highWaterMark",a);return Math.floor(a)}return t.objectMode?16:16384}}}}),Mc=f({"node_modules/util-deprecate/browser.js"(t,e){function r(t){try{if(!window.localStorage)return!1}catch{return!1}var e=window.localStorage[t];return null!=e&&"true"===String(e).toLowerCase()}e.exports=function(t,e){if(r("noDeprecation"))return t;var n=!1;return function(){if(!n){if(r("throwDeprecation"))throw new Error(e);r("traceDeprecation")?console.trace(e):console.warn(e),n=!0}return t.apply(this,arguments)}}}}),Sc=f({"node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js"(t,e){function r(t){var e=this;this.next=null,this.entry=null,this.finish=function(){!function(t,e){var r=t.entry;for(t.entry=null;r;){var n=r.callback;e.pendingcb--,n(undefined),r=r.next}e.corkedRequestsFree.next=t}(e,t)}}var n;e.exports=A,A.WritableState=T;var i,a={deprecate:Mc()},o=Nl(),s=ql().Buffer,l=window.Uint8Array||function(){},u=Tc(),h=kc().getHighWaterMark,p=Ac().codes,f=p.ERR_INVALID_ARG_TYPE,d=p.ERR_METHOD_NOT_IMPLEMENTED,m=p.ERR_MULTIPLE_CALLBACK,g=p.ERR_STREAM_CANNOT_PIPE,y=p.ERR_STREAM_DESTROYED,v=p.ERR_STREAM_NULL_VALUES,x=p.ERR_STREAM_WRITE_AFTER_END,_=p.ERR_UNKNOWN_ENCODING,b=u.errorOrDestroy;function w(){}function T(t,e,i){n=n||Ec(),t=t||{},"boolean"!=typeof i&&(i=e instanceof n),this.objectMode=!!t.objectMode,i&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=h(this,t,"writableHighWaterMark",i),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var a=!1===t.decodeStrings;this.decodeStrings=!a,this.defaultEncoding=t.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(t){!function(t,e){var r=t._writableState,n=r.sync,i=r.writecb;if("function"!=typeof i)throw new m;if(function(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}(r),e)!function(t,e,r,n,i){--e.pendingcb,r?(c.nextTick(i,n),c.nextTick(I,t,e),t._writableState.errorEmitted=!0,b(t,n)):(i(n),t._writableState.errorEmitted=!0,b(t,n),I(t,e))}(t,r,n,e,i);else{var a=E(r)||t.destroyed;!a&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&S(t,r),n?c.nextTick(M,t,r,a,i):M(t,r,a,i)}}(e,t)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==t.emitClose,this.autoDestroy=!!t.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new r(this)}function A(t){var e=this instanceof(n=n||Ec());if(!e&&!i.call(A,this))return new A(t);this._writableState=new T(t,this,e),this.writable=!0,t&&("function"==typeof t.write&&(this._write=t.write),"function"==typeof t.writev&&(this._writev=t.writev),"function"==typeof t.destroy&&(this._destroy=t.destroy),"function"==typeof t.final&&(this._final=t.final)),o.call(this)}function k(t,e,r,n,i,a,o){e.writelen=n,e.writecb=o,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new y("write")):r?t._writev(i,e.onwrite):t._write(i,a,e.onwrite),e.sync=!1}function M(t,e,r,n){r||function(t,e){0===e.length&&e.needDrain&&(e.needDrain=!1,t.emit("drain"))}(t,e),e.pendingcb--,n(),I(t,e)}function S(t,e){e.bufferProcessing=!0;var n=e.bufferedRequest;if(t._writev&&n&&n.next){var i=e.bufferedRequestCount,a=new Array(i),o=e.corkedRequestsFree;o.entry=n;for(var s=0,l=!0;n;)a[s]=n,n.isBuf||(l=!1),n=n.next,s+=1;a.allBuffers=l,k(t,e,!0,e.length,a,"",o.finish),e.pendingcb++,e.lastBufferedRequest=null,o.next?(e.corkedRequestsFree=o.next,o.next=null):e.corkedRequestsFree=new r(e),e.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,u=n.encoding,h=n.callback;if(k(t,e,!1,e.objectMode?1:c.length,c,u,h),n=n.next,e.bufferedRequestCount--,e.writing)break}null===n&&(e.lastBufferedRequest=null)}e.bufferedRequest=n,e.bufferProcessing=!1}function E(t){return t.ending&&0===t.length&&null===t.bufferedRequest&&!t.finished&&!t.writing}function C(t,e){t._final((function(r){e.pendingcb--,r&&b(t,r),e.prefinished=!0,t.emit("prefinish"),I(t,e)}))}function I(t,e){var r=E(e);if(r&&(function(t,e){!e.prefinished&&!e.finalCalled&&("function"!=typeof t._final||e.destroyed?(e.prefinished=!0,t.emit("prefinish")):(e.pendingcb++,e.finalCalled=!0,c.nextTick(C,t,e)))}(t,e),0===e.pendingcb&&(e.finished=!0,t.emit("finish"),e.autoDestroy))){var n=t._readableState;(!n||n.autoDestroy&&n.endEmitted)&&t.destroy()}return r}jl()(A,o),T.prototype.getBuffer=function(){for(var t=this.bufferedRequest,e=[];t;)e.push(t),t=t.next;return e},function(){try{Object.defineProperty(T.prototype,"buffer",{get:a.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(i=Function.prototype[Symbol.hasInstance],Object.defineProperty(A,Symbol.hasInstance,{value:function(t){return!!i.call(this,t)||this===A&&t&&t._writableState instanceof T}})):i=function(t){return t instanceof this},A.prototype.pipe=function(){b(this,new g)},A.prototype.write=function(t,e,r){var n=this._writableState,i=!1,a=!n.objectMode&&function(t){return s.isBuffer(t)||t instanceof l}(t);return a&&!s.isBuffer(t)&&(t=function(t){return s.from(t)}(t)),"function"==typeof e&&(r=e,e=null),a?e="buffer":e||(e=n.defaultEncoding),"function"!=typeof r&&(r=w),n.ending?function(t,e){var r=new x;b(t,r),c.nextTick(e,r)}(this,r):(a||function(t,e,r,n){var i;return null===r?i=new v:"string"!=typeof r&&!e.objectMode&&(i=new f("chunk",["string","Buffer"],r)),!i||(b(t,i),c.nextTick(n,i),!1)}(this,n,t,r))&&(n.pendingcb++,i=function(t,e,r,n,i,a){if(!r){var o=function(t,e,r){return!t.objectMode&&!1!==t.decodeStrings&&"string"==typeof e&&(e=s.from(e,r)),e}(e,n,i);n!==o&&(r=!0,i="buffer",n=o)}var l=e.objectMode?1:n.length;e.length+=l;var c=e.length-1))throw new _(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(A.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(A.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),A.prototype._write=function(t,e,r){r(new d("_write()"))},A.prototype._writev=null,A.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,I(t,e),r&&(e.finished?c.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(A.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(A.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),A.prototype.destroy=u.destroy,A.prototype._undestroy=u.undestroy,A.prototype._destroy=function(t,e){e(t)}}}),Ec=f({"node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js"(t,e){var r=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};e.exports=l;var n,i,a,o=Dc(),s=Sc();for(jl()(l,o),n=r(s.prototype),a=0;a>5==6?2:t>>4==14?3:t>>3==30?4:t>>6==2?-1:-2}function a(t){var e=this.lastTotal-this.lastNeed,r=function(t,e){if(128!=(192&e[0]))return t.lastNeed=0,"�";if(t.lastNeed>1&&e.length>1){if(128!=(192&e[1]))return t.lastNeed=1,"�";if(t.lastNeed>2&&e.length>2&&128!=(192&e[2]))return t.lastNeed=2,"�"}}(this,t);return void 0!==r?r:this.lastNeed<=t.length?(t.copy(this.lastChar,e,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(t.copy(this.lastChar,e,0,t.length),void(this.lastNeed-=t.length))}function o(t,e){if((t.length-e)%2==0){var r=t.toString("utf16le",e);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString("utf16le",e,t.length-1)}function s(t){var e=t&&t.length?this.write(t):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return e+this.lastChar.toString("utf16le",0,r)}return e}function l(t,e){var r=(t.length-e)%3;return 0===r?t.toString("base64",e):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=t[t.length-1]:(this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1]),t.toString("base64",e,t.length-r))}function c(t){var e=t&&t.length?this.write(t):"";return this.lastNeed?e+this.lastChar.toString("base64",0,3-this.lastNeed):e}function u(t){return t.toString(this.encoding)}function h(t){return t&&t.length?this.write(t):""}t.StringDecoder=n,n.prototype.write=function(t){if(0===t.length)return"";var e,r;if(this.lastNeed){if(void 0===(e=this.fillLast(t)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0?(a>0&&(t.lastNeed=a-1),a):--n=0?(a>0&&(t.lastNeed=a-2),a):--n=0?(a>0&&(2===a?a=0:t.lastNeed=a-3),a):0}(this,t,e);if(!this.lastNeed)return t.toString("utf8",e);this.lastTotal=r;var n=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,n),t.toString("utf8",e,n)},n.prototype.fillLast=function(t){if(this.lastNeed<=t.length)return t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);t.copy(this.lastChar,this.lastTotal-this.lastNeed,0,t.length),this.lastNeed-=t.length}}}),Lc=f({"node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(t,e){var r=Ac().codes.ERR_STREAM_PREMATURE_CLOSE;function n(){}e.exports=function t(e,i,a){if("function"==typeof i)return t(e,null,i);i||(i={}),a=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),i=0;i0)if("string"!=typeof e&&!c.objectMode&&Object.getPrototypeOf(e)!==o.prototype&&(e=function(t){return o.from(t)}(e)),i)c.endEmitted?b(t,new _):M(t,c,e,!0);else if(c.ended)b(t,new v);else{if(c.destroyed)return!1;c.reading=!1,c.decoder&&!r?(e=c.decoder.write(e),c.objectMode||0!==e.length?M(t,c,e,!1):L(t,c)):M(t,c,e,!1)}else i||(c.reading=!1,L(t,c));return!c.ended&&(c.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=S?t=S:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function C(t){var e=t._readableState;n("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(n("emitReadable",e.flowing),e.emittedReadable=!0,c.nextTick(I,t))}function I(t){var e=t._readableState;n("emitReadable_",e.destroyed,e.length,e.ended),!e.destroyed&&(e.length||e.ended)&&(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,R(t)}function L(t,e){e.readingMore||(e.readingMore=!0,c.nextTick(P,t,e))}function P(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function D(t){n("readable nexttick read 0"),t.read(0)}function O(t,e){n("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),R(t),e.flowing&&!e.reading&&t.read(0)}function R(t){var e=t._readableState;for(n("flow",e.flowing);e.flowing&&null!==t.read(););}function F(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function B(t){var e=t._readableState;n("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,c.nextTick(j,e,t))}function j(t,e){if(n("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function N(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return n("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?B(this):C(this),null;if(0===(t=E(t,e))&&e.ended)return 0===e.length&&B(this),null;var i,a=e.needReadable;return n("need readable",a),(0===e.length||e.length-t0?F(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&B(this)),null!==i&&this.emit("data",i),i},A.prototype._read=function(t){b(this,new x("_read()"))},A.prototype.pipe=function(t,e){var r=this,a=this._readableState;switch(a.pipesCount){case 0:a.pipes=t;break;case 1:a.pipes=[a.pipes,t];break;default:a.pipes.push(t)}a.pipesCount+=1,n("pipe count=%d opts=%j",a.pipesCount,e);var o=e&&!1===e.end||t===c.stdout||t===c.stderr?m:s;function s(){n("onend"),t.end()}a.endEmitted?c.nextTick(o):r.once("end",o),t.on("unpipe",(function e(i,o){n("onunpipe"),i===r&&o&&!1===o.hasUnpiped&&(o.hasUnpiped=!0,n("cleanup"),t.removeListener("close",f),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",p),t.removeListener("unpipe",e),r.removeListener("end",s),r.removeListener("end",m),r.removeListener("data",h),u=!0,a.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&l())}));var l=function(t){return function(){var e=t._readableState;n("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&i(t,"data")&&(e.flowing=!0,R(t))}}(r);t.on("drain",l);var u=!1;function h(e){n("ondata");var i=t.write(e);n("dest.write",i),!1===i&&((1===a.pipesCount&&a.pipes===t||a.pipesCount>1&&-1!==N(a.pipes,t))&&!u&&(n("false write response, pause",a.awaitDrain),a.awaitDrain++),r.pause())}function p(e){n("onerror",e),m(),t.removeListener("error",p),0===i(t,"error")&&b(t,e)}function f(){t.removeListener("finish",d),m()}function d(){n("onfinish"),t.removeListener("close",f),m()}function m(){n("unpipe"),r.unpipe(t)}return r.on("data",h),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",p),t.once("close",f),t.once("finish",d),t.emit("pipe",r),a.flowing||(n("pipe resume"),r.resume()),t},A.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,i=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var a=0;a0,!1!==i.flowing&&this.resume()):"readable"===t&&!i.endEmitted&&!i.readableListening&&(i.readableListening=i.needReadable=!0,i.flowing=!1,i.emittedReadable=!1,n("on readable",i.length,i.reading),i.length?C(this):i.reading||c.nextTick(D,this)),r},A.prototype.addListener=A.prototype.on,A.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&c.nextTick(z,this),r},A.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return("readable"===t||void 0===t)&&c.nextTick(z,this),e},A.prototype.resume=function(){var t=this._readableState;return t.flowing||(n("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,c.nextTick(O,t,e))}(this,t)),t.paused=!1,this},A.prototype.pause=function(){return n("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(n("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},A.prototype.wrap=function(t){var e=this,r=this._readableState,i=!1;for(var a in t.on("end",(function(){if(n("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)})),t.on("data",(function(a){n("wrapped data"),r.decoder&&(a=r.decoder.write(a)),r.objectMode&&null==a||!(r.objectMode||a&&a.length)||e.push(a)||(i=!0,t.pause())})),t)void 0===this[a]&&"function"==typeof t[a]&&(this[a]=function(e){return function(){return t[e].apply(t,arguments)}}(a));for(var o=0;o0,(function(t){u||(u=t),t&&h.forEach(s),!i&&(h.forEach(s),c(u))}))}));return e.reduce(l)}}}),Bc=f({"node_modules/stream-browserify/index.js"(t,e){e.exports=n;var r=pe().EventEmitter;function n(){r.call(this)}jl()(n,r),n.Readable=Dc(),n.Writable=Sc(),n.Duplex=Ec(),n.Transform=Oc(),n.PassThrough=Rc(),n.finished=Lc(),n.pipeline=Fc(),n.Stream=n,n.prototype.pipe=function(t,e){var n=this;function i(e){t.writable&&!1===t.write(e)&&n.pause&&n.pause()}function a(){n.readable&&n.resume&&n.resume()}n.on("data",i),t.on("drain",a),!t._isStdio&&(!e||!1!==e.end)&&(n.on("end",s),n.on("close",l));var o=!1;function s(){o||(o=!0,t.end())}function l(){o||(o=!0,"function"==typeof t.destroy&&t.destroy())}function c(t){if(u(),0===r.listenerCount(this,"error"))throw t}function u(){n.removeListener("data",i),t.removeListener("drain",a),n.removeListener("end",s),n.removeListener("close",l),n.removeListener("error",c),t.removeListener("error",c),n.removeListener("end",u),n.removeListener("close",u),t.removeListener("close",u)}return n.on("error",c),t.on("error",c),n.on("end",u),n.on("close",u),t.on("close",u),t.emit("pipe",n),t}}}),jc=f({"node_modules/util/util.js"(t){var e=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=a)return t;switch(t){case"%s":return String(i[n++]);case"%d":return Number(i[n++]);case"%j":try{return JSON.stringify(i[n++])}catch{return"[Circular]"}default:return t}})),l=i[n];n"u")return function(){return t.deprecate(e,r).apply(this,arguments)};var n=!1;return function(){if(!n){if(c.throwDeprecation)throw new Error(r);c.traceDeprecation?console.trace(r):console.error(r),n=!0}return e.apply(this,arguments)}};var n,i={},a=/^$/;function o(e,r){var n={seen:[],stylize:l};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),d(r)?n.showHidden=r:r&&t._extend(n,r),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=s),u(n,e,n.depth)}function s(t,e){var r=o.styles[e];return r?"["+o.colors[r][0]+"m"+t+"["+o.colors[r][1]+"m":t}function l(t,e){return t}function u(e,r,n){if(e.customInspect&&r&&T(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return y(i)||(i=u(e,i,n)),i}var a=function(t,e){if(v(e))return t.stylize("undefined","undefined");if(y(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return g(e)?t.stylize(""+e,"number"):d(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(e,r);if(a)return a;var o=Object.keys(r),s=function(t){var e={};return t.forEach((function(t,r){e[t]=!0})),e}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(r)),w(r)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return h(r);if(0===o.length){if(T(r)){var l=r.name?": "+r.name:"";return e.stylize("[Function"+l+"]","special")}if(x(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(b(r))return e.stylize(Date.prototype.toString.call(r),"date");if(w(r))return h(r)}var c,_="",A=!1,k=["{","}"];return f(r)&&(A=!0,k=["[","]"]),T(r)&&(_=" [Function"+(r.name?": "+r.name:"")+"]"),x(r)&&(_=" "+RegExp.prototype.toString.call(r)),b(r)&&(_=" "+Date.prototype.toUTCString.call(r)),w(r)&&(_=" "+h(r)),0!==o.length||A&&0!=r.length?n<0?x(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),c=A?function(t,e,r,n,i){for(var a=[],o=0,s=e.length;o60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(c,_,k)):k[0]+_+k[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i,a){var o,s,l;if((l=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?s=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(s=t.stylize("[Setter]","special")),S(n,i)||(o="["+i+"]"),s||(t.seen.indexOf(l.value)<0?(s=m(r)?u(t,l.value,null):u(t,l.value,r-1)).indexOf("\n")>-1&&(s=a?s.split("\n").map((function(t){return" "+t})).join("\n").slice(2):"\n"+s.split("\n").map((function(t){return" "+t})).join("\n")):s=t.stylize("[Circular]","special")),v(o)){if(a&&i.match(/^\d+$/))return s;(o=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function f(t){return Array.isArray(t)}function d(t){return"boolean"==typeof t}function m(t){return null===t}function g(t){return"number"==typeof t}function y(t){return"string"==typeof t}function v(t){return void 0===t}function x(t){return _(t)&&"[object RegExp]"===A(t)}function _(t){return"object"==typeof t&&null!==t}function b(t){return _(t)&&"[object Date]"===A(t)}function w(t){return _(t)&&("[object Error]"===A(t)||t instanceof Error)}function T(t){return"function"==typeof t}function A(t){return Object.prototype.toString.call(t)}function k(t){return t<10?"0"+t.toString(10):t.toString(10)}n=(n="false").replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),a=new RegExp("^"+n+"$","i"),t.debuglog=function(e){if(e=e.toUpperCase(),!i[e])if(a.test(e)){var r=c.pid;i[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else i[e]=function(){};return i[e]},t.inspect=o,o.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},o.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.types=xc(),t.isArray=f,t.isBoolean=d,t.isNull=m,t.isNullOrUndefined=function(t){return null==t},t.isNumber=g,t.isString=y,t.isSymbol=function(t){return"symbol"==typeof t},t.isUndefined=v,t.isRegExp=x,t.types.isRegExp=x,t.isObject=_,t.isDate=b,t.types.isDate=b,t.isError=w,t.types.isNativeError=w,t.isFunction=T,t.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||typeof t>"u"},t.isBuffer=_c();var M=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function S(t,e){return Object.prototype.hasOwnProperty.call(t,e)}t.log=function(){var e,r;console.log("%s - %s",(r=[k((e=new Date).getHours()),k(e.getMinutes()),k(e.getSeconds())].join(":"),[e.getDate(),M[e.getMonth()],r].join(" ")),t.format.apply(t,arguments))},t.inherits=jl(),t._extend=function(t,e){if(!e||!_(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var E=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;function C(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}t.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(E&&t[E]){var r;if("function"!=typeof(r=t[E]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,E,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var e,r,n=new Promise((function(t,n){e=t,r=n})),i=[],a=0;a"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch{return!1}}();return function(){var n,a=i(t);if(e){var o=i(this).constructor;n=Reflect.construct(a,arguments,o)}else n=a.apply(this,arguments);return function(t,e){if(e&&("object"===r(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,n)}}(s);function s(r,n,i){var a;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,s),a=o.call(this,function(t,r,n){return"string"==typeof e?e:e(t,r,n)}(r,n,i)),a.code=t,a}return function(t){return Object.defineProperty(t,"prototype",{writable:!1}),t}(s)}(a);s[t]=o}function c(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map((function(t){return String(t)})),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}l("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),l("ERR_INVALID_ARG_TYPE",(function(t,e,n){var i,o;if(void 0===a&&(a=nu()),a("string"==typeof t,"'name' must be a string"),"string"==typeof e&&function(t,e){return t.substr(0,4)===e}(e,"not ")?(i="must not be",e=e.replace(/^not /,"")):i="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))o="The ".concat(t," ").concat(i," ").concat(c(e,"type"));else{var s=function(t,e,r){return"number"!=typeof r&&(r=0),!(r+1>t.length)&&-1!==t.indexOf(".",r)}(t)?"property":"argument";o='The "'.concat(t,'" ').concat(s," ").concat(i," ").concat(c(e,"type"))}return o+". Received type ".concat(r(n))}),TypeError),l("ERR_INVALID_ARG_VALUE",(function(t,e){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"is invalid";void 0===o&&(o=jc());var n=o.inspect(e);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(t,"' ").concat(r,". Received ").concat(n)}),TypeError,RangeError),l("ERR_INVALID_RETURN_VALUE",(function(t,e,n){var i;return i=n&&n.constructor&&n.constructor.name?"instance of ".concat(n.constructor.name):"type ".concat(r(n)),"Expected ".concat(t,' to be returned from the "').concat(e,'"')+" function but got ".concat(i,".")}),TypeError),l("ERR_MISSING_ARGS",(function(){for(var t=arguments.length,e=new Array(t),r=0;r0,"At least one arg needs to be specified");var n="The ",i=e.length;switch(e=e.map((function(t){return'"'.concat(t,'"')})),i){case 1:n+="".concat(e[0]," argument");break;case 2:n+="".concat(e[0]," and ").concat(e[1]," arguments");break;default:n+=e.slice(0,i-1).join(", "),n+=", and ".concat(e[i-1]," arguments")}return"".concat(n," must be specified")}),TypeError),e.exports.codes=s}}),Uc=f({"node_modules/assert/build/internal/assert/assertion_error.js"(t,e){function r(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function n(t){for(var e=1;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch{return!1}}function f(t,e){return(f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(t,e)}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t){return(m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var g=jc().inspect,y=Nc().codes.ERR_INVALID_ARG_TYPE;function v(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}var x="",_="",b="",w="",T={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"};function A(t){var e=Object.keys(t),r=Object.create(Object.getPrototypeOf(t));return e.forEach((function(e){r[e]=t[e]})),Object.defineProperty(r,"message",{value:t.message}),r}function k(t){return g(t,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}var M=function(t,e){!function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&f(t,e)}(i,t);var r=function(t){var e=p();return function(){var r,n=d(t);if(e){var i=d(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return s(this,r)}}(i);function i(t){var e;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),"object"!==m(t)||null===t)throw new y("options","Object",t);var n=t.message,a=t.operator,o=t.stackStartFn,u=t.actual,h=t.expected,p=Error.stackTraceLimit;if(Error.stackTraceLimit=0,null!=n)e=r.call(this,String(n));else if(c.stderr&&c.stderr.isTTY&&(c.stderr&&c.stderr.getColorDepth&&1!==c.stderr.getColorDepth()?(x="",_="",w="",b=""):(x="",_="",w="",b="")),"object"===m(u)&&null!==u&&"object"===m(h)&&null!==h&&"stack"in u&&u instanceof Error&&"stack"in h&&h instanceof Error&&(u=A(u),h=A(h)),"deepStrictEqual"===a||"strictEqual"===a)e=r.call(this,function(t,e,r){var n="",i="",a=0,o="",s=!1,l=k(t),u=l.split("\n"),h=k(e).split("\n"),p=0,f="";if("strictEqual"===r&&"object"===m(t)&&"object"===m(e)&&null!==t&&null!==e&&(r="strictEqualObject"),1===u.length&&1===h.length&&u[0]!==h[0]){var d=u[0].length+h[0].length;if(d<=10){if(!("object"===m(t)&&null!==t||"object"===m(e)&&null!==e||0===t&&0===e))return"".concat(T[r],"\n\n")+"".concat(u[0]," !== ").concat(h[0],"\n")}else if("strictEqualObject"!==r&&d<(c.stderr&&c.stderr.isTTY?c.stderr.columns:80)){for(;u[0][p]===h[0][p];)p++;p>2&&(f="\n ".concat(function(t,e){if(e=Math.floor(e),0==t.length||0==e)return"";var r=t.length*e;for(e=Math.floor(Math.log(e)/Math.log(2));e;)t+=t,e--;return t+t.substring(0,r-t.length)}(" ",p),"^"),p=0)}}for(var g=u[u.length-1],y=h[h.length-1];g===y&&(p++<2?o="\n ".concat(g).concat(o):n=g,u.pop(),h.pop(),0!==u.length&&0!==h.length);)g=u[u.length-1],y=h[h.length-1];var A=Math.max(u.length,h.length);if(0===A){var M=l.split("\n");if(M.length>30)for(M[26]="".concat(x,"...").concat(w);M.length>27;)M.pop();return"".concat(T.notIdentical,"\n\n").concat(M.join("\n"),"\n")}p>3&&(o="\n".concat(x,"...").concat(w).concat(o),s=!0),""!==n&&(o="\n ".concat(n).concat(o),n="");var S=0,E=T[r]+"\n".concat(_,"+ actual").concat(w," ").concat(b,"- expected").concat(w),C=" ".concat(x,"...").concat(w," Lines skipped");for(p=0;p1&&p>2&&(I>4?(i+="\n".concat(x,"...").concat(w),s=!0):I>3&&(i+="\n ".concat(h[p-2]),S++),i+="\n ".concat(h[p-1]),S++),a=p,n+="\n".concat(b,"-").concat(w," ").concat(h[p]),S++;else if(h.length1&&p>2&&(I>4?(i+="\n".concat(x,"...").concat(w),s=!0):I>3&&(i+="\n ".concat(u[p-2]),S++),i+="\n ".concat(u[p-1]),S++),a=p,i+="\n".concat(_,"+").concat(w," ").concat(u[p]),S++;else{var L=h[p],P=u[p],z=P!==L&&(!v(P,",")||P.slice(0,-1)!==L);z&&v(L,",")&&L.slice(0,-1)===P&&(z=!1,P+=","),z?(I>1&&p>2&&(I>4?(i+="\n".concat(x,"...").concat(w),s=!0):I>3&&(i+="\n ".concat(u[p-2]),S++),i+="\n ".concat(u[p-1]),S++),a=p,i+="\n".concat(_,"+").concat(w," ").concat(P),n+="\n".concat(b,"-").concat(w," ").concat(L),S+=2):(i+=n,n="",(1===I||0===p)&&(i+="\n ".concat(P),S++))}if(S>20&&p30)for(d[26]="".concat(x,"...").concat(w);d.length>27;)d.pop();e=1===d.length?r.call(this,"".concat(f," ").concat(d[0])):r.call(this,"".concat(f,"\n\n").concat(d.join("\n"),"\n"))}else{var g=k(u),M="",S=T[a];"notDeepEqual"===a||"notEqual"===a?(g="".concat(T[a],"\n\n").concat(g)).length>1024&&(g="".concat(g.slice(0,1021),"...")):(M="".concat(k(h)),g.length>512&&(g="".concat(g.slice(0,509),"...")),M.length>512&&(M="".concat(M.slice(0,509),"...")),"deepEqual"===a||"equal"===a?g="".concat(S,"\n\n").concat(g,"\n\nshould equal\n\n"):M=" ".concat(a," ").concat(M)),e=r.call(this,"".concat(g).concat(M))}return Error.stackTraceLimit=p,e.generatedMessage=!n,Object.defineProperty(l(e),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),e.code="ERR_ASSERTION",e.actual=u,e.expected=h,e.operator=a,Error.captureStackTrace&&Error.captureStackTrace(l(e),o),e.stack,e.name="AssertionError",s(e)}return function(t,e){e&&a(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1})}(i,[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:e,value:function(t,e){return g(this,n(n({},e),{},{customInspect:!1,depth:0}))}}]),i}(u(Error),g.custom);e.exports=M}}),Vc=f({"node_modules/object-keys/isArguments.js"(t,e){var r=Object.prototype.toString;e.exports=function(t){var e=r.call(t),n="[object Arguments]"===e;return n||(n="[object Array]"!==e&&null!==t&&"object"==typeof t&&"number"==typeof t.length&&t.length>=0&&"[object Function]"===r.call(t.callee)),n}}}),qc=f({"node_modules/object-keys/implementation.js"(t,e){var r,n,i,a,o,s,l,c,u,h,p,f;Object.keys||(n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,a=Vc(),o=Object.prototype.propertyIsEnumerable,s=!o.call({toString:null},"toString"),l=o.call((function(){}),"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],u=function(t){var e=t.constructor;return e&&e.prototype===t},h={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},p=function(){if(typeof window>"u")return!1;for(var t in window)try{if(!h["$"+t]&&n.call(window,t)&&null!==window[t]&&"object"==typeof window[t])try{u(window[t])}catch{return!0}}catch{return!0}return!1}(),f=function(t){if(typeof window>"u"||!p)return u(t);try{return u(t)}catch{return!1}},r=function(t){var e=null!==t&&"object"==typeof t,r="[object Function]"===i.call(t),o=a(t),u=e&&"[object String]"===i.call(t),h=[];if(!e&&!r&&!o)throw new TypeError("Object.keys called on a non-object");var p=l&&r;if(u&&t.length>0&&!n.call(t,0))for(var d=0;d0)for(var m=0;m2?arguments[2]:{},o=r(e);n&&(o=a.call(o,Object.getOwnPropertySymbols(e)));for(var s=0;st.length)&&(e=t.length);for(var r=0,n=new Array(e);r10)return!0;for(var e=0;e57)return!0}return 10===t.length&&t>=Math.pow(2,32)}function P(t){return Object.keys(t).filter(L).concat(c(t).filter(Object.prototype.propertyIsEnumerable.bind(t)))}function z(t,e){if(t===e)return 0;for(var r=t.length,n=e.length,i=0,a=Math.min(r,n);i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i0)return function(t){if(!((t=String(t)).length>100)){var e=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(t);if(e){var o=parseFloat(e[1]);switch((e[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*o;case"days":case"day":case"d":return o*a;case"hours":case"hour":case"hrs":case"hr":case"h":return o*i;case"minutes":case"minute":case"mins":case"min":case"m":return o*n;case"seconds":case"second":case"secs":case"sec":case"s":return o*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return o;default:return}}}}(t);if("number"===s&&!1===isNaN(t))return e.long?function(t){return o(t,a,"day")||o(t,i,"hour")||o(t,n,"minute")||o(t,r,"second")||t+" ms"}(t):function(t){return t>=a?Math.round(t/a)+"d":t>=i?Math.round(t/i)+"h":t>=n?Math.round(t/n)+"m":t>=r?Math.round(t/r)+"s":t+"ms"}(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))}}}),au=f({"node_modules/stream-parser/node_modules/debug/src/debug.js"(t,e){var r;function n(e){function n(){if(n.enabled){var e=n,i=+new Date,a=i-(r||i);e.diff=a,e.prev=r,e.curr=i,r=i;for(var o=new Array(arguments.length),s=0;s=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=typeof chrome<"u"&&typeof chrome.storage<"u"?chrome.storage.local:function(){try{return window.localStorage}catch{}}(),t.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],t.formatters.j=function(t){try{return JSON.stringify(t)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}},t.enable(r())}}),su=f({"node_modules/stream-parser/index.js"(t,e){var r=nu(),n=ou()("stream-parser");function i(t){n("initializing parser stream"),t._parserBytesLeft=0,t._parserBuffers=[],t._parserBuffered=0,t._parserState=-1,t._parserCallback=null,"function"==typeof t.push&&(t._parserOutput=t.push.bind(t)),t._parserInit=!0}function a(t,e){r(!this._parserCallback,'there is already a "callback" set!'),r(isFinite(t)&&t>0,'can only buffer a finite number of bytes > 0, got "'+t+'"'),this._parserInit||i(this),n("buffering %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=0}function o(t,e){r(!this._parserCallback,'there is already a "callback" set!'),r(t>0,'can only skip > 0 bytes, got "'+t+'"'),this._parserInit||i(this),n("skipping %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=1}function s(t,e){r(!this._parserCallback,'There is already a "callback" set!'),r(t>0,'can only pass through > 0 bytes, got "'+t+'"'),this._parserInit||i(this),n("passing through %o bytes",t),this._parserBytesLeft=t,this._parserCallback=e,this._parserState=2}function l(t,e,r){this._parserInit||i(this),n("write(%o bytes)",t.length),"function"==typeof e&&(r=e),h(this,t,null,r)}function c(t,e,r){this._parserInit||i(this),n("transform(%o bytes)",t.length),"function"!=typeof e&&(e=this._parserOutput),h(this,t,e,r)}function u(t,e,r,i){if(t._parserBytesLeft-=e.length,n("%o bytes left for stream piece",t._parserBytesLeft),0===t._parserState?(t._parserBuffers.push(e),t._parserBuffered+=e.length):2===t._parserState&&r(e),0!==t._parserBytesLeft)return i;var a=t._parserCallback;if(a&&0===t._parserState&&t._parserBuffers.length>1&&(e=Buffer.concat(t._parserBuffers,t._parserBuffered)),0!==t._parserState&&(e=null),t._parserCallback=null,t._parserBuffered=0,t._parserState=-1,t._parserBuffers.splice(0),a){var o=[];e&&o.push(e),r&&o.push(r);var s=a.length>o.length;s&&o.push(p(i));var l=a.apply(t,o);if(!s||i===l)return i}}e.exports=function(t){var e=t&&"function"==typeof t._transform,r=t&&"function"==typeof t._write;if(!e&&!r)throw new Error("must pass a Writable or Transform stream in");n("extending Parser into stream"),t._bytes=a,t._skipBytes=o,e&&(t._passthrough=s),e?t._transform=c:t._write=l};var h=p((function t(e,r,n,i){return e._parserBytesLeft<=0?i(new Error("got data but not currently parsing anything")):r.length<=e._parserBytesLeft?function(){return u(e,r,n,i)}:function(){var a=r.slice(0,e._parserBytesLeft);return u(e,a,n,(function(o){return o?i(o):r.length>a.length?function(){return t(e,r.slice(a.length),n,i)}:void 0}))}}));function p(t){return function(){for(var e=t.apply(this,arguments);"function"==typeof e;)e=e();return e}}}}),lu=f({"node_modules/probe-image-size/lib/common.js"(t){var e=Bc().Transform,r=su();function n(){e.call(this,{readableObjectMode:!0})}function i(t,e,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack||"",this.name=this.constructor.name,this.message=t,e&&(this.code=e),r&&(this.statusCode=r)}n.prototype=Object.create(e.prototype),n.prototype.constructor=n,r(n.prototype),t.ParserStream=n,t.sliceEq=function(t,e,r){for(var n=e,i=0;i>4&15,i=15&t[4],a=t[5]>>4&15,s=r(t,6),l=8,c=0;ce.width||t.width===e.width&&t.height>e.height?t:e})),r=t.reduce((function(t,e){return t.height>e.height||t.height===e.height&&t.width>e.width?t:e}));return e.width>r.height||e.width===r.height&&e.height>r.width?e:r}(e.sizes),n=1;e.transforms.forEach((function(t){var e={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},r={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if("imir"===t.type&&(n=0===t.value?r[n]:e[n=e[n=r[n]]]),"irot"===t.type)for(var i=0;i0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,t)}},i.prototype.read_uint16=function(t){var e=this.input;if(t+2>e.length)throw r("unexpected EOF","EBADDATA");return this.big_endian?256*e[t]+e[t+1]:e[t]+256*e[t+1]},i.prototype.read_uint32=function(t){var e=this.input;if(t+4>e.length)throw r("unexpected EOF","EBADDATA");return this.big_endian?16777216*e[t]+65536*e[t+1]+256*e[t+2]+e[t+3]:e[t]+256*e[t+1]+65536*e[t+2]+16777216*e[t+3]},i.prototype.is_subifd_link=function(t,e){return 0===t&&34665===e||0===t&&34853===e||34665===t&&40965===e},i.prototype.exif_format_length=function(t){switch(t){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},i.prototype.exif_format_read=function(t,e){var r;switch(t){case 1:case 2:return this.input[e];case 6:return(r=this.input[e])|33554430*(128&r);case 3:return this.read_uint16(e);case 8:return(r=this.read_uint16(e))|131070*(32768&r);case 4:return this.read_uint32(e);case 9:return 0|this.read_uint32(e);default:return null}},i.prototype.scan_ifd=function(t,e,i){var a=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw r("unexpected EOF","EBADDATA");for(var d=[],m=p,g=0;g0&&(this.ifds_to_read.push({id:s,offset:d[0]}),f=!0),!1===i({is_big_endian:this.big_endian,ifd:t,tag:s,format:l,count:c,entry_offset:e+this.start,data_length:h,data_offset:p+this.start,value:d,is_subifd_link:f}))return void(this.aborted=!0);e+=12}0===t&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},e.exports.ExifParser=i,e.exports.get_orientation=function(t){var e=0;try{return new i(t,0,t.length).each((function(t){if(0===t.ifd&&274===t.tag&&Array.isArray(t.value))return e=t.value[0],!1})),e}catch{return-1}}}}),hu=f({"node_modules/probe-image-size/lib/parse_sync/avif.js"(t,e){var r=lu().str2arr,n=lu().sliceEq,i=lu().readUInt32BE,a=cu(),o=uu(),s=r("ftyp");e.exports=function(t){if(n(t,4,s)){var e=a.unbox(t,0);if(e){var r=a.getMimeType(e.data);if(r){for(var l,c=e.end;;){var u=a.unbox(t,c);if(!u)break;if(c=u.end,"mdat"===u.boxtype)return;if("meta"===u.boxtype){l=u.data;break}}if(l){var h=a.readSizeFromMeta(l);if(h){var p={width:h.width,height:h.height,type:r.type,mime:r.mime,wUnits:"px",hUnits:"px"};if(h.variants.length>1&&(p.variants=h.variants),h.orientation&&(p.orientation=h.orientation),h.exif_location&&h.exif_location.offset+h.exif_location.length<=t.length){var f=i(t,h.exif_location.offset),d=t.slice(h.exif_location.offset+f+4,h.exif_location.offset+h.exif_location.length),m=o.get_orientation(d);m>0&&(p.orientation=m)}return p}}}}}}}}),pu=f({"node_modules/probe-image-size/lib/parse_sync/bmp.js"(t,e){var r=lu().str2arr,n=lu().sliceEq,i=lu().readUInt16LE,a=r("BM");e.exports=function(t){if(!(t.length<26)&&n(t,0,a))return{width:i(t,18),height:i(t,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}}}),fu=f({"node_modules/probe-image-size/lib/parse_sync/gif.js"(t,e){var r=lu().str2arr,n=lu().sliceEq,i=lu().readUInt16LE,a=r("GIF87a"),o=r("GIF89a");e.exports=function(t){if(!(t.length<10)&&(n(t,0,a)||n(t,0,o)))return{width:i(t,6),height:i(t,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}}}),du=f({"node_modules/probe-image-size/lib/parse_sync/ico.js"(t,e){var r=lu().readUInt16LE;e.exports=function(t){var e=r(t,0),n=r(t,2),i=r(t,4);if(0===e&&1===n&&i){for(var a=[],o={width:0,height:0},s=0;so.width||c>o.height)&&(o=u)}return{width:o.width,height:o.height,variants:a,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}}}),mu=f({"node_modules/probe-image-size/lib/parse_sync/jpeg.js"(t,e){var r=lu().readUInt16BE,n=lu().str2arr,i=lu().sliceEq,a=uu(),o=n("Exif\0\0");e.exports=function(t){if(!(t.length<2)&&255===t[0]&&216===t[1]&&255===t[2])for(var e=2;;){for(;;){if(t.length-e<2)return;if(255===t[e++])break}for(var n,s=t[e++];255===s;)s=t[e++];if(208<=s&&s<=217||1===s)n=0;else{if(!(192<=s&&s<=254))return;if(t.length-e<2)return;n=r(t,e)-2,e+=2}if(217===s||218===s)return;var l;if(225===s&&n>=10&&i(t,e,o)&&(l=a.get_orientation(t.slice(e+6,e+n))),n>=5&&192<=s&&s<=207&&196!==s&&200!==s&&204!==s){if(t.length-e0&&(c.orientation=l),c}e+=n}}}}),gu=f({"node_modules/probe-image-size/lib/parse_sync/png.js"(t,e){var r=lu().str2arr,n=lu().sliceEq,i=lu().readUInt32BE,a=r("‰PNG\r\n\n"),o=r("IHDR");e.exports=function(t){if(!(t.length<24)&&n(t,0,a)&&n(t,12,o))return{width:i(t,16),height:i(t,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}}}),yu=f({"node_modules/probe-image-size/lib/parse_sync/psd.js"(t,e){var r=lu().str2arr,n=lu().sliceEq,i=lu().readUInt32BE,a=r("8BPS\0");e.exports=function(t){if(!(t.length<22)&&n(t,0,a))return{width:i(t,18),height:i(t,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}}}),vu=f({"node_modules/probe-image-size/lib/parse_sync/svg.js"(t,e){function r(t){return 32===t||9===t||13===t||10===t}function n(t){return"number"==typeof t&&isFinite(t)&&t>0}var i=/<[-_.:a-zA-Z0-9][^>]*>/,a=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,o=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,s=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,l=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,c=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function u(t){return c.test(t)?t.match(c)[0]:"px"}e.exports=function(t){if(function(t){var e=0,n=t.length;for(239===t[0]&&187===t[1]&&191===t[2]&&(e=3);e>14&16383),type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function h(t,e){return{width:1+(t[e+6]<<16|t[e+5]<<8|t[e+4]),height:1+(t[e+9]<t.length)){for(;e+8=10?r=r||c(t,e+8):"VP8L"===f&&d>=9?r=r||u(t,e+8):"VP8X"===f&&d>=10?r=r||h(t,e+8):"EXIF"===f&&(i=o.get_orientation(t.slice(e+8,e+8+d)),e=1/0),e+=8+d}else e++;if(r)return i>0&&(r.orientation=i),r}}}}}),bu=f({"node_modules/probe-image-size/lib/parsers_sync.js"(t,e){e.exports={avif:hu(),bmp:pu(),gif:fu(),ico:du(),jpeg:mu(),png:gu(),psd:yu(),svg:vu(),tiff:xu(),webp:_u()}}}),wu=f({"node_modules/probe-image-size/sync.js"(t,e){var r=bu();e.exports=function(t){return function(t){for(var e=Object.keys(r),n=0;n0;)g=h.c2p(w+_*M),_--;for(_=0;void 0===v&&_0;)x=p.c2p(T+_*S),_--;if(gz[0];if(D||O){var R=m+E/2,F=v+C/2;L+="transform:"+i(R+"px",F+"px")+"scale("+(D?-1:1)+","+(O?-1:1)+")"+i(-R+"px",-F+"px")+";"}}I.attr("style",L);var B=new Promise((function(t){if(u._hasZ)t();else if(u._hasSource)if(u._canvas&&u._canvas.el.width===A&&u._canvas.el.height===k&&u._canvas.source===u.source)t();else{var e=document.createElement("canvas");e.width=A,e.height=k;var r=e.getContext("2d",{willReadFrequently:!0});u._image=u._image||new Image;var n=u._image;n.onload=function(){r.drawImage(n,0,0),u._canvas={el:e,source:u.source},t()},n.setAttribute("src",u.source)}})).then((function(){var t;if(u._hasZ)t=j((function(t,e){var r=b[e][t];return n.isTypedArray(r)&&(r=Array.from(r)),r})).toDataURL("image/png");else if(u._hasSource)if(d)t=u.source;else{var e=u._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(0,0,A,k).data;t=j((function(t,r){var n=4*(r*A+t);return[e[n],e[n+1],e[n+2],e[n+3]]})).toDataURL("image/png")}I.attr({"xlink:href":t,height:C,width:E,x:m,y:v})}));t._promises.push(B)}function j(t){var e=document.createElement("canvas");e.width=E,e.height=C;var r,i=e.getContext("2d",{willReadFrequently:!0}),a=function(t){return n.constrain(Math.round(h.c2p(w+t*M)-m),0,E)},s=function(t){return n.constrain(Math.round(p.c2p(T+t*S)-v),0,C)},l=o.colormodel[u.colormodel],f=l.colormodel||u.colormodel,d=l.fmt;for(_=0;_0||r.inbox(o-s.y0,o-(s.y0+s.h*l.dy),0)>0)){var h,p=Math.floor((e-s.x0)/l.dx),f=Math.floor(Math.abs(o-s.y0)/l.dy);if(l._hasZ?h=s.z[f][p]:l._hasSource&&(h=l._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(p,f,1,1).data),h){var d,m=s.hi||l.hoverinfo;if(m){var g=m.split("+");-1!==g.indexOf("all")&&(g=["color"]),-1!==g.indexOf("color")&&(d=!0)}var y,v=a.colormodel[l.colormodel],x=v.colormodel||l.colormodel,_=x.length,b=l._scaler(h),w=v.suffix,T=[];(l.hovertemplate||d)&&(T.push("["+[b[0]+w[0],b[1]+w[1],b[2]+w[2]].join(", ")),4===_&&T.push(", "+b[3]+w[3]),T.push("]"),T=T.join(""),t.extraText=x.toUpperCase()+": "+T),i(l.hovertext)&&i(l.hovertext[f])?y=l.hovertext[f][p]:i(l.text)&&i(l.text[f])&&(y=l.text[f][p]);var A=u.c2p(s.y0+(f+.5)*l.dy),k=s.x0+(p+.5)*l.dx,M=s.y0+(f+.5)*l.dy,S="["+h.slice(0,l.colormodel.length).join(", ")+"]";return[n.extendFlat(t,{index:[f,p],x0:c.c2p(s.x0+p*l.dx),x1:c.c2p(s.x0+(p+1)*l.dx),y0:A,y1:A,color:b,xVal:k,xLabelVal:k,yVal:M,yLabelVal:M,zLabelVal:S,text:y,hovertemplateLabels:{zLabel:S,colorLabel:T,"color[0]Label":b[0]+w[0],"color[1]Label":b[1]+w[1],"color[2]Label":b[2]+w[2],"color[3]Label":b[3]+w[3]}})]}}}}}),Eu=f({"src/traces/image/event_data.js"(t,e){e.exports=function(t,e){return"xVal"in e&&(t.x=e.xVal),"yVal"in e&&(t.y=e.yVal),e.xa&&(t.xaxis=e.xa),e.ya&&(t.yaxis=e.ya),t.color=e.color,t.colormodel=e.trace.colormodel,t.z||(t.z=e.color),t}}}),Cu=f({"src/traces/image/index.js"(t,e){e.exports={attributes:Fl(),supplyDefaults:Bl(),calc:Au(),plot:ku(),style:Mu(),hoverPoints:Su(),eventData:Eu(),moduleType:"trace",name:"image",basePlotModule:Si(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}}}),Iu=f({"lib/image.js"(t,e){e.exports=Cu()}}),Lu=f({"src/traces/pie/attributes.js"(t,e){var r=U(),n=Aa().attributes,i=F(),a=q(),o=Ot().hovertemplateAttrs,s=Ot().texttemplateAttrs,l=R().extendFlat,c=zt().pattern,u=i({editType:"plot",arrayOk:!0,colorEditType:"plot"});e.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:a.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:c,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:l({},r.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:o({},{keys:["label","color","value","percent","text"]}),texttemplate:s({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:l({},u,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:l({},u,{}),outsidetextfont:l({},u,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:l({},u,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:n({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}}}),Pu=f({"src/traces/pie/defaults.js"(t,e){var r=A(),n=le(),i=Lu(),a=Aa().defaults,o=Ya().handleText,s=le().coercePattern;function l(t,e){var i=n.isArrayOrTypedArray(t),a=n.isArrayOrTypedArray(e),o=Math.min(i?t.length:1/0,a?e.length:1/0);if(isFinite(o)||(o=0),o&&a){for(var s,l=0;l0){s=!0;break}}s||(o=0)}return{hasLabels:i,hasValues:a,len:o}}function c(t,e,r,n,i){n("marker.line.width")&&n("marker.line.color",i?void 0:r.paper_bgcolor);var a=n("marker.colors");s(n,"marker.pattern",a),t.marker&&!e.marker.pattern.fgcolor&&(e.marker.pattern.fgcolor=t.marker.colors),e.marker.pattern.bgcolor||(e.marker.pattern.bgcolor=r.paper_bgcolor)}e.exports={handleLabelsAndValues:l,handleMarkerDefaults:c,supplyDefaults:function(t,e,r,s){function u(r,a){return n.coerce(t,e,i,r,a)}var h=l(u("labels"),u("values")),p=h.len;if(e._hasLabels=h.hasLabels,e._hasValues=h.hasValues,!e._hasLabels&&e._hasValues&&(u("label0"),u("dlabel")),p){e._length=p,c(t,e,s,u,!0),u("scalegroup");var f,d=u("text"),m=u("texttemplate");if(m||(f=u("textinfo",n.isArrayOrTypedArray(d)?"text+percent":"percent")),u("hovertext"),u("hovertemplate"),m||f&&"none"!==f){var g=u("textposition");o(t,e,s,u,g,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),(Array.isArray(g)||"auto"===g||"outside"===g)&&u("automargin"),("inside"===g||"auto"===g||Array.isArray(g))&&u("insidetextorientation")}else"none"===f&&u("textposition","none");a(e,s,u);var y=u("hole");if(u("title.text")){var v=u("title.position",y?"middle center":"top center");!y&&"middle center"===v&&(e.title.position="top center"),n.coerceFont(u,"title.font",s.font)}u("sort"),u("direction"),u("rotation"),u("pull")}else e.visible=!1}}}}),zu=f({"src/traces/pie/layout_attributes.js"(t,e){e.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),Du=f({"src/traces/pie/layout_defaults.js"(t,e){var r=le(),n=zu();e.exports=function(t,e){function i(i,a){return r.coerce(t,e,n,i,a)}i("hiddenlabels"),i("piecolorway",e.colorway),i("extendpiecolors")}}}),Ou=f({"src/traces/pie/calc.js"(t,e){var r=A(),n=O(),i=H(),a={};function o(t){return function(e,r){return!(!e||(e=n(e),!e.isValid()))&&(e=i.addOpacity(e,e.getAlpha()),t[r]||(t[r]=e),e)}}function s(t,e){var r,i=JSON.stringify(t),a=e[i];if(!a){for(a=t.slice(),r=0;r=0})),("funnelarea"===e.type?y:e.sort)&&a.sort((function(t,e){return e.v-t.v})),a[0]&&(a[0].vTotal=g),a},crossTraceCalc:function(t,e){var r=(e||{}).type;r||(r="pie");var n=t._fullLayout,i=t.calcdata,o=n[r+"colorway"],l=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(o=s(o,a));for(var c=0,u=0;u"),name:h.hovertemplate||-1!==p.indexOf("name")?h.name:void 0,idealAlign:t.pxmid[0]<0?"left":"right",color:m.castOption(b.bgcolor,t.pts)||t.color,borderColor:m.castOption(b.bordercolor,t.pts),fontFamily:m.castOption(w.family,t.pts),fontSize:m.castOption(w.size,t.pts),fontColor:m.castOption(w.color,t.pts),nameLength:m.castOption(b.namelength,t.pts),textAlign:m.castOption(b.align,t.pts),hovertemplate:m.castOption(h.hovertemplate,t.pts),hovertemplateLabels:t,eventData:[g(t,h)]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:e,inOut_bbox:T}),t.bbox=T[0],c._hasHoverLabel=!0}c._hasHoverEvent=!0,e.emit("plotly_hover",{points:[g(t,h)],event:r.event})}})),t.on("mouseout",(function(t){var n=e._fullLayout,a=e._fullData[c.index],o=r.select(this).datum();c._hasHoverEvent&&(t.originalEvent=r.event,e.emit("plotly_unhover",{points:[g(o,a)],event:r.event}),c._hasHoverEvent=!1),c._hasHoverLabel&&(i.loneUnhover(n._hoverlayer.node()),c._hasHoverLabel=!1)})),t.on("click",(function(t){var n=e._fullLayout,a=e._fullData[c.index];e._dragging||!1===n.hovermode||(e._hoverdata=[g(t,a)],i.click(e,r.event))}))}function _(t,e,r){var n=m.castOption(t.insidetextfont.color,e.pts);!n&&t._input.textfont&&(n=m.castOption(t._input.textfont.color,e.pts));var i=m.castOption(t.insidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,o=m.castOption(t.insidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size,s=m.castOption(t.insidetextfont.weight,e.pts)||m.castOption(t.textfont.weight,e.pts)||r.weight,l=m.castOption(t.insidetextfont.style,e.pts)||m.castOption(t.textfont.style,e.pts)||r.style,c=m.castOption(t.insidetextfont.variant,e.pts)||m.castOption(t.textfont.variant,e.pts)||r.variant,u=m.castOption(t.insidetextfont.textcase,e.pts)||m.castOption(t.textfont.textcase,e.pts)||r.textcase,h=m.castOption(t.insidetextfont.lineposition,e.pts)||m.castOption(t.textfont.lineposition,e.pts)||r.lineposition,p=m.castOption(t.insidetextfont.shadow,e.pts)||m.castOption(t.textfont.shadow,e.pts)||r.shadow;return{color:n||a.contrast(e.color),family:i,size:o,weight:s,style:l,variant:c,textcase:u,lineposition:h,shadow:p}}function b(t,e){for(var r,n,i=0;ie&&e>n||r=-4;g-=2)y(Math.PI*g,"tan");for(g=4;g>=-4;g-=2)y(Math.PI*(g+1),"tan")}if(h||f){for(g=4;g>=-4;g-=2)y(Math.PI*(g+1.5),"rad");for(g=4;g>=-4;g-=2)y(Math.PI*(g+.5),"rad")}}if(s||d||h){var v=Math.sqrt(t.width*t.width+t.height*t.height);if((a={scale:i*n*2/v,rCenter:1-i,rotate:0}).textPosAngle=(e.startangle+e.stopangle)/2,a.scale>=1)return a;m.push(a)}(d||f)&&((a=T(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,m.push(a)),(d||p)&&((a=A(t,n,o,l,c)).textPosAngle=(e.startangle+e.stopangle)/2,m.push(a));for(var x=0,_=0,b=0;b=1)break}return m[x]}function T(t,e,r,n,i){e=Math.max(0,e-2*d);var a=t.width/t.height,o=S(a,n,e,r);return{scale:2*o/t.height,rCenter:k(a,o/e),rotate:M(i)}}function A(t,e,r,n,i){e=Math.max(0,e-2*d);var a=t.height/t.width,o=S(a,n,e,r);return{scale:2*o/t.width,rCenter:k(a,o/e),rotate:M(i+Math.PI/2)}}function k(t,e){return Math.cos(e)-t*e}function M(t){return(180/Math.PI*t+720)%180-90}function S(t,e,r,n){var i=t+1/(2*Math.tan(e));return r*Math.min(1/(Math.sqrt(i*i+.5)+i),n/(Math.sqrt(t*t+n/2)+t))}function E(t,e){return t.v!==e.vTotal||e.trace.hole?Math.min(1/(1+1/Math.sin(t.halfangle)),t.ring/2):1}function C(t,e){var r=e.pxmid[0],n=e.pxmid[1],i=t.width/2,a=t.height/2;return r<0&&(i*=-1),n<0&&(a*=-1),{scale:1,rCenter:1,rotate:0,x:i+Math.abs(a)*(i>0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function I(t,e){var r,n,i,a=t.trace,o={x:t.cx,y:t.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=P(a),-1!==a.title.position.indexOf("top")?(o.y-=(1+i)*t.r,s.ty-=t.titleBox.height):-1!==a.title.position.indexOf("bottom")&&(o.y+=(1+i)*t.r);var l=function(t,e){return t/(void 0===e?1:e)}(t.r,t.trace.aspectratio),c=e.w*(a.domain.x[1]-a.domain.x[0])/2;return-1!==a.title.position.indexOf("left")?(c+=l,o.x-=(1+i)*l,s.tx+=t.titleBox.width/2):-1!==a.title.position.indexOf("center")?c*=2:-1!==a.title.position.indexOf("right")&&(c+=l,o.x+=(1+i)*l,s.tx-=t.titleBox.width/2),r=c/t.titleBox.width,n=L(t,e)/t.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function L(t,e){var r=t.trace,n=e.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(t.titleBox.height,n/2)}function P(t){var e,r=t.pull;if(!r)return 0;if(s.isArrayOrTypedArray(r))for(r=0,e=0;er&&(r=t.pull[e]);return r}function z(t,e){for(var r=[],n=0;n1?u=(c=r.r)/i.aspectratio:c=(u=r.r)*i.aspectratio,l=(c*=(1+i.baseratio)/2)*u}o=Math.min(o,l/r.vTotal)}for(n=0;n")}if(o){var _=s.castOption(a,e.i,"texttemplate");if(_){var b={label:(n=e).label,value:n.v,valueLabel:m.formatPieValue(n.v,i.separators),percent:n.v/r.vTotal,percentLabel:m.formatPiePercent(n.v/r.vTotal,i.separators),color:n.color,text:n.text,customdata:s.castOption(a,n.i,"customdata")},w=m.getFirstFilled(a.text,e.pts);(y(w)||""===w)&&(b.text=w),e.text=s.texttemplateString(_,b,t._fullLayout._d3locale,b,a._meta||{})}else e.text=""}}function R(t,e){var r=t.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(e.left+e.right)/2,o=(e.top+e.bottom)/2;t.textX=a*n-o*i,t.textY=a*i+o*n,t.noCenter=!0}e.exports={plot:function(t,e){var i=t._context.staticPlot,h=t._fullLayout,d=h._size;f("pie",h),b(e,t),z(e,d);var g=s.makeTraceGroups(h._pielayer,e,"trace").each((function(e){var f=r.select(this),g=e[0],y=g.trace;(function(t){var e,r,n,i=t[0],a=i.r,o=i.trace,s=m.getRotationAngle(o.rotation),l=2*Math.PI/i.vTotal,c="px0",u="px1";if("counterclockwise"===o.direction){for(e=0;ei.vTotal/2?1:0,r.halfangle=Math.PI*Math.min(r.v/i.vTotal,.5),r.ring=1-o.hole,r.rInscribed=E(r,i))})(e),f.attr("stroke-linejoin","round"),f.each((function(){var x=r.select(this).selectAll("g.slice").data(e);x.enter().append("g").classed("slice",!0),x.exit().remove();var b=[[[],[]],[[],[]]],T=!1;x.each((function(n,a){if(n.hidden)r.select(this).selectAll("path,g").remove();else{n.pointNumber=n.i,n.curveNumber=y.index,b[n.pxmid[1]<0?0:1][n.pxmid[0]<0?0:1].push(n);var l=g.cx,c=g.cy,f=r.select(this),d=f.selectAll("path.surface").data([n]);if(d.enter().append("path").classed("surface",!0).style({"pointer-events":i?"none":"all"}),f.call(v,t,e),y.pull){var x=+m.castOption(y.pull,n.pts)||0;x>0&&(l+=x*n.pxmid[0],c+=x*n.pxmid[1])}n.cxFinal=l,n.cyFinal=c;var A=y.hole;if(n.v===g.vTotal){var k="M"+(l+n.px0[0])+","+(c+n.px0[1])+L(n.px0,n.pxmid,!0,1)+L(n.pxmid,n.px0,!0,1)+"Z";A?d.attr("d","M"+(l+A*n.px0[0])+","+(c+A*n.px0[1])+L(n.px0,n.pxmid,!1,A)+L(n.pxmid,n.px0,!1,A)+"Z"+k):d.attr("d",k)}else{var M=L(n.px0,n.px1,!0,1);if(A){var S=1-A;d.attr("d","M"+(l+A*n.px1[0])+","+(c+A*n.px1[1])+L(n.px1,n.px0,!1,A)+"l"+S*n.px0[0]+","+S*n.px0[1]+M+"Z")}else d.attr("d","M"+l+","+c+"l"+n.px0[0]+","+n.px0[1]+M+"Z")}O(t,n,g);var E=m.castOption(y.textposition,n.pts),I=f.selectAll("g.slicetext").data(n.text&&"none"!==E?[0]:[]);I.enter().append("g").classed("slicetext",!0),I.exit().remove(),I.each((function(){var i=s.ensureSingle(r.select(this),"text","",(function(t){t.attr("data-notex",1)})),f=s.ensureUniformFontSize(t,"outside"===E?function(t,e,r){return{color:m.castOption(t.outsidetextfont.color,e.pts)||m.castOption(t.textfont.color,e.pts)||r.color,family:m.castOption(t.outsidetextfont.family,e.pts)||m.castOption(t.textfont.family,e.pts)||r.family,size:m.castOption(t.outsidetextfont.size,e.pts)||m.castOption(t.textfont.size,e.pts)||r.size,weight:m.castOption(t.outsidetextfont.weight,e.pts)||m.castOption(t.textfont.weight,e.pts)||r.weight,style:m.castOption(t.outsidetextfont.style,e.pts)||m.castOption(t.textfont.style,e.pts)||r.style,variant:m.castOption(t.outsidetextfont.variant,e.pts)||m.castOption(t.textfont.variant,e.pts)||r.variant,textcase:m.castOption(t.outsidetextfont.textcase,e.pts)||m.castOption(t.textfont.textcase,e.pts)||r.textcase,lineposition:m.castOption(t.outsidetextfont.lineposition,e.pts)||m.castOption(t.textfont.lineposition,e.pts)||r.lineposition,shadow:m.castOption(t.outsidetextfont.shadow,e.pts)||m.castOption(t.textfont.shadow,e.pts)||r.shadow}}(y,n,h.font):_(y,n,h.font));i.text(n.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(o.font,f).call(u.convertToTspans,t);var d,v=o.bBox(i.node());if("outside"===E)d=C(v,n);else if(d=w(v,n,g),"auto"===E&&d.scale<1){var x=s.ensureUniformFontSize(t,y.outsidetextfont);i.call(o.font,x),d=C(v=o.bBox(i.node()),n)}var b=d.textPosAngle,A=void 0===b?n.pxmid:D(g.r,b);if(d.targetX=l+A[0]*d.rCenter+(d.x||0),d.targetY=c+A[1]*d.rCenter+(d.y||0),R(d,v),d.outside){var k=d.targetY;n.yLabelMin=k-v.height/2,n.yLabelMid=k,n.yLabelMax=k+v.height/2,n.labelExtraX=0,n.labelExtraY=0,T=!0}d.fontSize=f.size,p(y.type,d,h),e[a].transform=d,s.setTransormAndDisplay(i,d)}))}function L(t,e,r,i){var a=i*(e[0]-t[0]),o=i*(e[1]-t[1]);return"a"+i*g.r+","+i*g.r+" 0 "+n.largeArc+(r?" 1 ":" 0 ")+a+","+o}}));var A=r.select(this).selectAll("g.titletext").data(y.title.text?[0]:[]);if(A.enter().append("g").classed("titletext",!0),A.exit().remove(),A.each((function(){var e,n=s.ensureSingle(r.select(this),"text","",(function(t){t.attr("data-notex",1)})),i=y.title.text;y._meta&&(i=s.templateString(i,y._meta)),n.text(i).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(o.font,y.title.font).call(u.convertToTspans,t),e="middle center"===y.title.position?function(t){var e=Math.sqrt(t.titleBox.width*t.titleBox.width+t.titleBox.height*t.titleBox.height);return{x:t.cx,y:t.cy,scale:t.trace.hole*t.r*2/e,tx:0,ty:-t.titleBox.height/2+t.trace.title.font.size}}(g):I(g,d),n.attr("transform",c(e.x,e.y)+l(Math.min(1,e.scale))+c(e.tx,e.ty))})),T&&function(t,e){var r,n,i,a,o,l,c,u,h,p,f,d,g;function y(t,e){return t.pxmid[1]-e.pxmid[1]}function v(t,e){return e.pxmid[1]-t.pxmid[1]}function x(t,r){r||(r={});var i,u,h,f,d=r.labelExtraY+(n?r.yLabelMax:r.yLabelMin),g=n?t.yLabelMin:t.yLabelMax,y=n?t.yLabelMax:t.yLabelMin,v=t.cyFinal+o(t.px0[1],t.px1[1]),x=d-g;if(x*c>0&&(t.labelExtraY=x),s.isArrayOrTypedArray(e.pull))for(u=0;u=(m.castOption(e.pull,h.pts)||0))&&((t.pxmid[1]-h.pxmid[1])*c>0?(x=h.cyFinal+o(h.px0[1],h.px1[1])-g-t.labelExtraY)*c>0&&(t.labelExtraY+=x):(y+t.labelExtraY-v)*c>0&&(i=3*l*Math.abs(u-p.indexOf(t)),(f=h.cxFinal+a(h.px0[0],h.px1[0])+i-(t.cxFinal+t.pxmid[0])-t.labelExtraX)*l>0&&(t.labelExtraX+=f)))}for(n=0;n<2;n++)for(i=n?y:v,o=n?Math.max:Math.min,c=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,l=r?1:-1,(u=t[n][r]).sort(i),h=t[1-n][r],p=h.concat(u),d=[],f=0;fMath.abs(h)?l+="l"+h*t.pxmid[0]/t.pxmid[1]+","+h+"H"+(o+t.labelExtraX+c):l+="l"+t.labelExtraX+","+u+"v"+(h-u)+"h"+c}else l+="V"+(t.yLabelMid+t.labelExtraY)+"h"+c;s.ensureSingle(n,"path","textline").call(a.stroke,e.outsidetextfont.color).attr({"stroke-width":Math.min(2,e.outsidetextfont.size/8),d:l,fill:"none"})}else n.select("path.textline").remove()}))}(x,y),T&&y.automargin){var k=o.bBox(f.node()),M=y.domain,S=d.w*(M.x[1]-M.x[0]),E=d.h*(M.y[1]-M.y[0]),L=(.5*S-g.r)/d.w,P=(.5*E-g.r)/d.h;n.autoMargin(t,"pie."+y.uid+".automargin",{xl:M.x[0]-L,xr:M.x[1]+L,yb:M.y[0]-P,yt:M.y[1]+P,l:Math.max(g.cx-g.r-k.left,0),r:Math.max(k.right-(g.cx+g.r),0),b:Math.max(k.bottom-(g.cy+g.r),0),t:Math.max(g.cy-g.r-k.top,0),pad:5})}}))}));setTimeout((function(){g.selectAll("tspan").each((function(){var t=r.select(this);t.attr("dy")&&t.attr("dy",t.attr("dy"))}))}),0)},formatSliceLabel:O,transformInsideText:w,determineInsideTextFont:_,positionTitleOutside:I,prerenderTitles:b,layoutAreas:z,attachFxHandlers:v,computeTransform:R}}}),Bu=f({"src/traces/pie/style.js"(t,e){var r=x(),n=Tr(),i=Ja().resizeText;e.exports=function(t){var e=t._fullLayout._pielayer.selectAll(".trace");i(t,e,"pie"),e.each((function(e){var i=e[0].trace,a=r.select(this);a.style({opacity:i.opacity}),a.selectAll("path.surface").each((function(e){r.select(this).call(n,e,i,t)}))}))}}}),ju=f({"src/traces/pie/base_plot.js"(t){var e=Ae();t.name="pie",t.plot=function(r,n,i,a){e.plotBasePlot(t.name,r,n,i,a)},t.clean=function(r,n,i,a){e.cleanBasePlot(t.name,r,n,i,a)}}}),Nu=f({"src/traces/pie/index.js"(t,e){e.exports={attributes:Lu(),supplyDefaults:Pu().supplyDefaults,supplyLayoutDefaults:Du(),layoutAttributes:zu(),calc:Ou().calc,crossTraceCalc:Ou().crossTraceCalc,plot:Fu().plot,style:Bu(),styleOne:Tr(),moduleType:"trace",name:"pie",basePlotModule:ju(),categories:["pie-like","pie","showLegend"],meta:{}}}}),Uu=f({"lib/pie.js"(t,e){e.exports=Nu()}}),Vu=f({"src/traces/sunburst/base_plot.js"(t){var e=Ae();t.name="sunburst",t.plot=function(r,n,i,a){e.plotBasePlot(t.name,r,n,i,a)},t.clean=function(r,n,i,a){e.cleanBasePlot(t.name,r,n,i,a)}}}),qu=f({"src/traces/sunburst/constants.js"(t,e){e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}}}),Hu=f({"src/traces/sunburst/attributes.js"(t,e){var r=U(),n=Ot().hovertemplateAttrs,i=Ot().texttemplateAttrs,a=Pe(),o=Aa().attributes,s=Lu(),l=qu(),c=R().extendFlat,u=zt().pattern;e.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:c({colors:{valType:"data_array",editType:"calc"},line:{color:c({},s.marker.line.color,{dflt:null}),width:c({},s.marker.line.width,{dflt:1}),editType:"calc"},pattern:u,editType:"calc"},a("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:s.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:i({editType:"plot"},{keys:l.eventDataKeys.concat(["label","value"])}),hovertext:s.hovertext,hoverinfo:c({},r.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:n({},{keys:l.eventDataKeys}),textfont:s.textfont,insidetextorientation:s.insidetextorientation,insidetextfont:s.insidetextfont,outsidetextfont:c({},s.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:s.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:o({name:"sunburst",trace:!0,editType:"calc"})}}}),Gu=f({"src/traces/sunburst/layout_attributes.js"(t,e){e.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),Wu=f({"src/traces/sunburst/defaults.js"(t,e){var r=le(),n=Hu(),i=Aa().defaults,a=Ya().handleText,o=Pu().handleMarkerDefaults,s=Ze(),l=s.hasColorscale,c=s.handleDefaults;e.exports=function(t,e,s,u){function h(i,a){return r.coerce(t,e,n,i,a)}var p=h("labels"),f=h("parents");if(p&&p.length&&f&&f.length){var d=h("values");d&&d.length?h("branchvalues"):h("count"),h("level"),h("maxdepth"),o(t,e,u,h);var m=e._hasColorscale=l(t,"marker","colors")||(t.marker||{}).coloraxis;m&&c(t,e,u,h,{prefix:"marker.",cLetter:"c"}),h("leaf.opacity",m?1:.7);var g=h("text");h("texttemplate"),e.texttemplate||h("textinfo",r.isArrayOrTypedArray(g)?"text+label":"label"),h("hovertext"),h("hovertemplate"),a(t,e,u,h,"auto",{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h("insidetextorientation"),h("sort"),h("rotation"),h("root.color"),i(e,u,h),e._length=null}else e.visible=!1}}}),Zu=f({"src/traces/sunburst/layout_defaults.js"(t,e){var r=le(),n=Gu();e.exports=function(t,e){function i(i,a){return r.coerce(t,e,n,i,a)}i("sunburstcolorway",e.colorway),i("extendsunburstcolors")}}}),Yu=f({"node_modules/d3-hierarchy/dist/d3-hierarchy.js"(t,e){var r,n;r=t,n=function(t){function e(t,e){return t.parent===e.parent?1:2}function r(t,e){return t+e.x}function n(t,e){return Math.max(t,e.y)}function i(t){var e=0,r=t.children,n=r&&r.length;if(n)for(;--n>=0;)e+=r[n].value;else e=1;t.value=e}function a(t,e){var r,n,i,a,s,u=new c(t),h=+t.value&&(u.value=t.value),p=[u];for(null==e&&(e=o);r=p.pop();)if(h&&(r.value=+r.data.value),(i=e(r.data))&&(s=i.length))for(r.children=new Array(s),a=s-1;a>=0;--a)p.push(n=r.children[a]=new c(i[a])),n.parent=r,n.depth=r.depth+1;return u.eachBefore(l)}function o(t){return t.children}function s(t){t.data=t.data.data}function l(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function c(t){this.data=t,this.depth=this.height=0,this.parent=null}c.prototype=a.prototype={constructor:c,count:function(){return this.eachAfter(i)},each:function(t){var e,r,n,i,a=this,o=[a];do{for(e=o.reverse(),o=[];a=e.pop();)if(t(a),r=a.children)for(n=0,i=r.length;n=0;--r)i.push(e[r]);return this},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,n=e.children,i=n&&n.length;--i>=0;)r+=n[i].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),n=e.ancestors(),i=null;for(t=r.pop(),e=n.pop();t===e;)i=t,t=r.pop(),e=n.pop();return i}(e,t),n=[e];e!==r;)e=e.parent,n.push(e);for(var i=n.length;t!==r;)n.splice(i,0,t),t=t.parent;return n},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){var t=[];return this.each((function(e){t.push(e)})),t},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return a(this).eachBefore(s)}};var u=Array.prototype.slice;function h(t){for(var e,r,n=0,i=(t=function(t){for(var e,r,n=t.length;n;)r=Math.random()*n--|0,e=t[n],t[n]=t[r],t[r]=e;return t}(u.call(t))).length,a=[];n0&&r*r>n*n+i*i}function m(t,e){for(var r=0;r(o*=o)?(n=(c+o-i)/(2*c),a=Math.sqrt(Math.max(0,o/c-n*n)),r.x=t.x-n*s-a*l,r.y=t.y-n*l+a*s):(n=(c+i-o)/(2*c),a=Math.sqrt(Math.max(0,i/c-n*n)),r.x=e.x+n*s-a*l,r.y=e.y+n*l+a*s)):(r.x=e.x+r.r,r.y=e.y)}function _(t,e){var r=t.r+e.r-1e-6,n=e.x-t.x,i=e.y-t.y;return r>0&&r*r>n*n+i*i}function b(t){var e=t._,r=t.next._,n=e.r+r.r,i=(e.x*r.r+r.x*e.r)/n,a=(e.y*r.r+r.y*e.r)/n;return i*i+a*a}function w(t){this._=t,this.next=null,this.previous=null}function T(t){if(!(i=t.length))return 0;var e,r,n,i,a,o,s,l,c,u,p;if((e=t[0]).x=0,e.y=0,!(i>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(i>2))return e.r+r.r;x(r,e,n=t[2]),e=new w(e),r=new w(r),n=new w(n),e.next=n.previous=r,r.next=e.previous=n,n.next=r.previous=e;t:for(s=3;sp&&(p=s),g=u*u*m,(f=Math.max(p/g,g/h))>d){u-=s;break}d=f}y.push(o={value:u,dice:l1?e:1)},r}(H),Z=function t(e){function r(t,r,n,i,a){if((o=t._squarify)&&o.ratio===e)for(var o,s,l,c,u,h=-1,p=o.length,f=t.value;++h1?e:1)},r}(H);t.cluster=function(){var t=e,i=1,a=1,o=!1;function s(e){var s,l=0;e.eachAfter((function(e){var i=e.children;i?(e.x=function(t){return t.reduce(r,0)/t.length}(i),e.y=function(t){return 1+t.reduce(n,0)}(i)):(e.x=s?l+=t(e,s):0,e.y=0,s=e)}));var c=function(t){for(var e;e=t.children;)t=e[0];return t}(e),u=function(t){for(var e;e=t.children;)t=e[e.length-1];return t}(e),h=c.x-t(c,u)/2,p=u.x+t(u,c)/2;return e.eachAfter(o?function(t){t.x=(t.x-e.x)*i,t.y=(e.y-t.y)*a}:function(t){t.x=(t.x-h)/(p-h)*i,t.y=(1-(e.y?t.y/e.y:1))*a})}return s.separation=function(e){return arguments.length?(t=e,s):t},s.size=function(t){return arguments.length?(o=!1,i=+t[0],a=+t[1],s):o?null:[i,a]},s.nodeSize=function(t){return arguments.length?(o=!0,i=+t[0],a=+t[1],s):o?[i,a]:null},s},t.hierarchy=a,t.pack=function(){var t=null,e=1,r=1,n=k;function i(i){return i.x=e/2,i.y=r/2,t?i.eachBefore(E(t)).eachAfter(C(n,.5)).eachBefore(I(1)):i.eachBefore(E(S)).eachAfter(C(k,1)).eachAfter(C(n,i.r/Math.min(e,r))).eachBefore(I(Math.min(e,r)/(2*i.r))),i}return i.radius=function(e){return arguments.length?(t=function(t){return null==t?null:A(t)}(e),i):t},i.size=function(t){return arguments.length?(e=+t[0],r=+t[1],i):[e,r]},i.padding=function(t){return arguments.length?(n="function"==typeof t?t:M(+t),i):n},i},t.packEnclose=h,t.packSiblings=function(t){return T(t),t},t.partition=function(){var t=1,e=1,r=0,n=!1;function i(i){var a=i.height+1;return i.x0=i.y0=r,i.x1=t,i.y1=e/a,i.eachBefore(function(t,e){return function(n){n.children&&P(n,n.x0,t*(n.depth+1)/e,n.x1,t*(n.depth+2)/e);var i=n.x0,a=n.y0,o=n.x1-r,s=n.y1-r;o0)throw new Error("cycle");return a}return r.id=function(e){return arguments.length?(t=A(e),r):t},r.parentId=function(t){return arguments.length?(e=A(t),r):e},r},t.tree=function(){var t=F,e=1,r=1,n=null;function i(i){var l=function(t){for(var e,r,n,i,a,o=new V(t,0),s=[o];e=s.pop();)if(n=e._.children)for(e.children=new Array(a=n.length),i=a-1;i>=0;--i)s.push(r=e.children[i]=new V(n[i],i)),r.parent=e;return(o.parent=new V(null,0)).children=[o],o}(i);if(l.eachAfter(a),l.parent.m=-l.z,l.eachBefore(o),n)i.eachBefore(s);else{var c=i,u=i,h=i;i.eachBefore((function(t){t.xu.x&&(u=t),t.depth>h.depth&&(h=t)}));var p=c===u?1:t(c,u)/2,f=p-c.x,d=e/(u.x+p+f),m=r/(h.depth||1);i.eachBefore((function(t){t.x=(t.x+f)*d,t.y=t.depth*m}))}return i}function a(e){var r=e.children,n=e.parent.children,i=e.i?n[e.i-1]:null;if(r){!function(t){for(var e,r=0,n=0,i=t.children,a=i.length;--a>=0;)(e=i[a]).z+=r,e.m+=r,r+=e.s+(n+=e.c)}(e);var a=(r[0].z+r[r.length-1].z)/2;i?(e.z=i.z+t(e._,i._),e.m=e.z-a):e.z=a}else i&&(e.z=i.z+t(e._,i._));e.parent.A=function(e,r,n){if(r){for(var i,a=e,o=e,s=r,l=a.parent.children[0],c=a.m,u=o.m,h=s.m,p=l.m;s=j(s),a=B(a),s&&a;)l=B(l),(o=j(o)).a=e,(i=s.z+h-a.z-c+t(s._,a._))>0&&(N(U(s,e,n),e,i),c+=i,u+=i),h+=s.m,c+=a.m,p+=l.m,u+=o.m;s&&!j(o)&&(o.t=s,o.m+=h-u),a&&!B(l)&&(l.t=a,l.m+=c-p,n=e)}return n}(e,i,e.parent.A||n[0])}function o(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function s(t){t.x*=e,t.y=t.depth*r}return i.separation=function(e){return arguments.length?(t=e,i):t},i.size=function(t){return arguments.length?(n=!1,e=+t[0],r=+t[1],i):n?null:[e,r]},i.nodeSize=function(t){return arguments.length?(n=!0,e=+t[0],r=+t[1],i):n?[e,r]:null},i},t.treemap=function(){var t=W,e=!1,r=1,n=1,i=[0],a=k,o=k,s=k,l=k,c=k;function u(t){return t.x0=t.y0=0,t.x1=r,t.y1=n,t.eachBefore(h),i=[0],e&&t.eachBefore(L),t}function h(e){var r=i[e.depth],n=e.x0+r,u=e.y0+r,h=e.x1-r,p=e.y1-r;h=r-1){var u=s[e];return u.x0=i,u.y0=a,u.x1=o,void(u.y1=l)}for(var h=c[e],p=n/2+h,f=e+1,d=r-1;f>>1;c[m]l-a){var v=(i*y+o*g)/n;t(e,f,g,i,a,v,l),t(f,r,y,v,a,o,l)}else{var x=(a*y+l*g)/n;t(e,f,g,i,a,o,x),t(f,r,y,i,x,o,l)}}(0,l,t.value,e,r,n,i)},t.treemapDice=P,t.treemapResquarify=Z,t.treemapSlice=q,t.treemapSliceDice=function(t,e,r,n,i){(1&t.depth?q:P)(t,e,r,n,i)},t.treemapSquarify=W,Object.defineProperty(t,"__esModule",{value:!0})},n("object"==typeof t&&typeof e<"u"?t:(r=r||self).d3=r.d3||{})}}),Xu=f({"src/traces/sunburst/calc.js"(t){var e=Yu(),r=A(),n=le(),i=Ze().makeColorScaleFuncFromTrace,a=Ou().makePullColorFn,o=Ou().generateExtendedColors,s=Ze().calc,l=k().ALMOST_EQUAL,c={},u={},h={};function p(t,e,r){var n=0,i=t.children;if(i){for(var a=i.length,o=0;o=0};v?(c=Math.min(y.length,_.length),u=function(t){return M(y[t])&&S(t)},h=function(t){return String(y[t])}):(c=Math.min(x.length,_.length),u=function(t){return M(x[t])&&S(t)},h=function(t){return String(x[t])}),w&&(c=Math.min(c,b.length));for(var E=0;E1){for(var P=n.randstr(),z=0;z>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?oh(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?oh(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Ch.exec(t))?new ch(e[1],e[2],e[3],1):(e=Ih.exec(t))?new ch(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Lh.exec(t))?oh(e[1],e[2],e[3],e[4]):(e=Ph.exec(t))?oh(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=zh.exec(t))?gh(e[1],e[2]/100,e[3]/100,1):(e=Dh.exec(t))?gh(e[1],e[2]/100,e[3]/100,e[4]):Oh.hasOwnProperty(t)?ah(Oh[t]):"transparent"===t?new ch(NaN,NaN,NaN,0):null}function ah(t){return new ch(t>>16&255,t>>8&255,255&t,1)}function oh(t,e,r,n){return n<=0&&(t=e=r=NaN),new ch(t,e,r,n)}function sh(t){return t instanceof Qu||(t=ih(t)),t?new ch((t=t.rgb()).r,t.g,t.b,t.opacity):new ch}function lh(t,e,r,n){return 1===arguments.length?sh(t):new ch(t,e,r,n??1)}function ch(t,e,r,n){this.r=+t,this.g=+e,this.b=+r,this.opacity=+n}function uh(){return`#${mh(this.r)}${mh(this.g)}${mh(this.b)}`}function hh(){return`#${mh(this.r)}${mh(this.g)}${mh(this.b)}${mh(255*(isNaN(this.opacity)?1:this.opacity))}`}function ph(){let t=fh(this.opacity);return`${1===t?"rgb(":"rgba("}${dh(this.r)}, ${dh(this.g)}, ${dh(this.b)}${1===t?")":`, ${t})`}`}function fh(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function dh(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function mh(t){return((t=dh(t))<16?"0":"")+t.toString(16)}function gh(t,e,r,n){return n<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new xh(t,e,r,n)}function yh(t){if(t instanceof xh)return new xh(t.h,t.s,t.l,t.opacity);if(t instanceof Qu||(t=ih(t)),!t)return new xh;if(t instanceof xh)return t;var e=(t=t.rgb()).r/255,r=t.g/255,n=t.b/255,i=Math.min(e,r,n),a=Math.max(e,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(o=e===a?(r-n)/s+6*(r0&&l<1?0:o,new xh(o,s,l,t.opacity)}function vh(t,e,r,n){return 1===arguments.length?yh(t):new xh(t,e,r,n??1)}function xh(t,e,r,n){this.h=+t,this.s=+e,this.l=+r,this.opacity=+n}function _h(t){return(t=(t||0)%360)<0?t+360:t}function bh(t){return Math.max(0,Math.min(1,t||0))}function wh(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}var Th,Ah,kh,Mh,Sh,Eh,Ch,Ih,Lh,Ph,zh,Dh,Oh,Rh,Fh,Bh=p({"node_modules/d3-color/src/color.js"(){Ju(),Ah=1/(Th=.7),kh="\\s*([+-]?\\d+)\\s*",Mh="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Sh="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Eh=/^#([0-9a-f]{3,8})$/,Ch=new RegExp(`^rgb\\(${kh},${kh},${kh}\\)$`),Ih=new RegExp(`^rgb\\(${Sh},${Sh},${Sh}\\)$`),Lh=new RegExp(`^rgba\\(${kh},${kh},${kh},${Mh}\\)$`),Ph=new RegExp(`^rgba\\(${Sh},${Sh},${Sh},${Mh}\\)$`),zh=new RegExp(`^hsl\\(${Mh},${Sh},${Sh}\\)$`),Dh=new RegExp(`^hsla\\(${Mh},${Sh},${Sh},${Mh}\\)$`),Oh={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$u(Qu,ih,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:th,formatHex:th,formatHex8:eh,formatHsl:rh,formatRgb:nh,toString:nh}),$u(ch,lh,Ku(Qu,{brighter(t){return t=null==t?Ah:Math.pow(Ah,t),new ch(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Th:Math.pow(Th,t),new ch(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ch(dh(this.r),dh(this.g),dh(this.b),fh(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:uh,formatHex:uh,formatHex8:hh,formatRgb:ph,toString:ph})),$u(xh,vh,Ku(Qu,{brighter(t){return t=null==t?Ah:Math.pow(Ah,t),new xh(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Th:Math.pow(Th,t),new xh(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*e,i=2*r-n;return new ch(wh(t>=240?t-240:t+120,i,n),wh(t,i,n),wh(t<120?t+240:t-120,i,n),this.opacity)},clamp(){return new xh(_h(this.h),bh(this.s),bh(this.l),fh(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let t=fh(this.opacity);return`${1===t?"hsl(":"hsla("}${_h(this.h)}, ${100*bh(this.s)}%, ${100*bh(this.l)}%${1===t?")":`, ${t})`}`}}))}}),jh=p({"node_modules/d3-color/src/math.js"(){Rh=Math.PI/180,Fh=180/Math.PI}});function Nh(t){if(t instanceof Vh)return new Vh(t.l,t.a,t.b,t.opacity);if(t instanceof Yh)return Xh(t);t instanceof ch||(t=sh(t));var e,r,n=Wh(t.r),i=Wh(t.g),a=Wh(t.b),o=qh((.2225045*n+.7168786*i+.0606169*a)/Kh);return n===i&&i===a?e=r=o:(e=qh((.4360747*n+.3850649*i+.1430804*a)/$h),r=qh((.0139322*n+.0971045*i+.7141733*a)/Jh)),new Vh(116*o-16,500*(e-o),200*(o-r),t.opacity)}function Uh(t,e,r,n){return 1===arguments.length?Nh(t):new Vh(t,e,r,n??1)}function Vh(t,e,r,n){this.l=+t,this.a=+e,this.b=+r,this.opacity=+n}function qh(t){return t>rp?Math.pow(t,.3333333333333333):t/ep+Qh}function Hh(t){return t>tp?t*t*t:ep*(t-Qh)}function Gh(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,.4166666666666667)-.055)}function Wh(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Zh(t,e,r,n){return 1===arguments.length?function(t){if(t instanceof Yh)return new Yh(t.h,t.c,t.l,t.opacity);if(t instanceof Vh||(t=Nh(t)),0===t.a&&0===t.b)return new Yh(NaN,0=1?(r=1,e-1):Math.floor(r*e),i=t[n],a=t[n+1],o=n>0?t[n-1]:2*i-a,s=n()=>t}});function wp(t,e){return function(r){return t+r*e}}function Tp(t,e){var r=e-t;return r?wp(t,r>180||r<-180?r-360*Math.round(r/360):r):xp(isNaN(t)?e:t)}function Ap(t,e){var r=e-t;return r?wp(t,r):xp(isNaN(t)?e:t)}var kp=p({"node_modules/d3-interpolate/src/color.js"(){bp()}});function Mp(t){return function(e){var r,n,i=e.length,a=new Array(i),o=new Array(i),s=new Array(i);for(r=0;ra&&(i=e.slice(a,i),s[o]?s[o]+=i:s[++o]=i),(r=r[0])===(n=n[0])?s[o]?s[o]+=n:s[++o]=n:(s[++o]=null,l.push({i:o,x:jp(r,n)})),a=Gp.lastIndex;return a180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(i(r)+"rotate(",null,n)-2,x:jp(t,e)})):e&&r.push(i(r)+"rotate("+e+n)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(i(r)+"skewX(",null,n)-2,x:jp(t,e)}):e&&r.push(i(r)+"skewX("+e+n)}(a.skewX,o.skewX,s,l),function(t,e,r,n,a,o){if(t!==r||e!==n){var s=a.push(i(a)+"scale(",null,",",null,")");o.push({i:s-4,x:jp(t,r)},{i:s-2,x:jp(e,n)})}else(1!==r||1!==n)&&a.push(i(a)+"scale("+r+","+n+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,n=l.length;++rZp,interpolateArray:()=>Dp,interpolateBasis:()=>gp,interpolateBasisClosed:()=>vp,interpolateCubehelix:()=>Ef,interpolateCubehelixLong:()=>Cf,interpolateDate:()=>Fp,interpolateDiscrete:()=>Xp,interpolateHcl:()=>Af,interpolateHclLong:()=>kf,interpolateHsl:()=>vf,interpolateHslLong:()=>xf,interpolateHue:()=>Kp,interpolateLab:()=>bf,interpolateNumber:()=>jp,interpolateNumberArray:()=>Lp,interpolateObject:()=>Up,interpolateRgb:()=>Sp,interpolateRgbBasis:()=>Ep,interpolateRgbBasisClosed:()=>Cp,interpolateRound:()=>Qp,interpolateString:()=>qp,interpolateTransformCss:()=>hf,interpolateTransformSvg:()=>pf,interpolateZoom:()=>mf,piecewise:()=>Lf,quantize:()=>zf});var Rf=p({"node_modules/d3-interpolate/src/index.js"(){Yp(),Rp(),yp(),_p(),Bp(),$p(),Jp(),Np(),zp(),Vp(),tf(),Wp(),ff(),gf(),Ip(),_f(),wf(),Mf(),If(),Pf(),Df()}}),Ff=f({"src/traces/sunburst/fill_one.js"(t,e){var r=Qe(),n=H();e.exports=function(t,e,i,a,o){var s=e.data.data,l=s.i,c=o||s.color;if(l>=0){e.i=s.i;var u=i.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=c,e.color=c):(u.color=c,e.color=c),r.pointStyle(t,i,a,e)}else n.fill(t,c)}}}),Bf=f({"src/traces/sunburst/style.js"(t,e){var r=x(),n=H(),i=le(),a=Ja().resizeText,o=Ff();function s(t,e,r,a){var s=e.data.data,l=!e.children,c=s.i,u=i.castOption(r,c,"marker.line.color")||n.defaultLine,h=i.castOption(r,c,"marker.line.width")||0;t.call(o,e,r,a).style("stroke-width",h).call(n.stroke,u).style("opacity",l?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._sunburstlayer.selectAll(".trace");a(t,e,"sunburst"),e.each((function(e){var n=r.select(this),i=e[0].trace;n.style("opacity",i.opacity),n.selectAll("path.surface").each((function(e){r.select(this).call(s,e,i,t)}))}))},styleOne:s}}}),jf=f({"src/traces/sunburst/helpers.js"(t){var e=le(),r=H(),n=fr(),i=br();function a(t){return t.data.data.pid}t.findEntryWithLevel=function(e,r){var n;return r&&e.eachAfter((function(e){if(t.getPtId(e)===r)return n=e.copy()})),n||e},t.findEntryWithChild=function(e,r){var n;return e.eachAfter((function(e){for(var i=e.children||[],a=0;a0)},t.getMaxDepth=function(t){return t.maxdepth>=0?t.maxdepth:1/0},t.isHeader=function(e,r){return!(t.isLeaf(e)||e.depth===r._maxDepth-1)},t.getParent=function(e,r){return t.findEntryWithLevel(e,a(r))},t.listPath=function(e,r){var n=e.parent;if(!n)return[];var i=r?[n.data[r]]:[n];return t.listPath(n,r).concat(i)},t.getPath=function(e){return t.listPath(e,"label").join("/")+"/"},t.formatValue=i.formatPieValue,t.formatPercent=function(t,r){var n=e.formatPercent(t,0);return"0%"===n&&(n=i.formatPiePercent(t,r)),n}}}),Nf=f({"src/traces/sunburst/fx.js"(t,e){var r=x(),n=qt(),i=$e().appendArrayPointValue,a=Dr(),o=le(),s=fe(),l=jf(),c=br().formatPieValue;function u(t,e,r){for(var n=t.data.data,a={curveNumber:e.index,pointNumber:n.i,data:e._input,fullData:e},o=0;o"),name:k||z("name")?v.name:void 0,color:A("hoverlabel.bgcolor")||x.color,borderColor:A("hoverlabel.bordercolor"),fontFamily:A("hoverlabel.font.family"),fontSize:A("hoverlabel.font.size"),fontColor:A("hoverlabel.font.color"),fontWeight:A("hoverlabel.font.weight"),fontStyle:A("hoverlabel.font.style"),fontVariant:A("hoverlabel.font.variant"),nameLength:A("hoverlabel.namelength"),textAlign:A("hoverlabel.align"),hovertemplate:k,hovertemplateLabels:I,eventData:h};g&&(F.x0=E-n.rInscribed*n.rpx1,F.x1=E+n.rInscribed*n.rpx1,F.idealAlign=n.pxmid[0]<0?"left":"right"),y&&(F.x=E,F.idealAlign=E<0?"left":"right");var B=[];a.loneHover(F,{container:s._hoverlayer.node(),outerContainer:s._paper.node(),gd:i,inOut_bbox:B}),h[0].bbox=B[0],d._hasHoverLabel=!0}if(y){var j=t.select("path.surface");p.styleOne(j,n,v,i,{hovered:!0})}d._hasHoverEvent=!0,i.emit("plotly_hover",{points:h||[u(n,v,p.eventDataKeys)],event:r.event})}})),t.on("mouseout",(function(e){var n=i._fullLayout,o=i._fullData[d.index],s=r.select(this).datum();if(d._hasHoverEvent&&(e.originalEvent=r.event,i.emit("plotly_unhover",{points:[u(s,o,p.eventDataKeys)],event:r.event}),d._hasHoverEvent=!1),d._hasHoverLabel&&(a.loneUnhover(n._hoverlayer.node()),d._hasHoverLabel=!1),y){var l=t.select("path.surface");p.styleOne(l,s,o,i,{hovered:!1})}})),t.on("click",(function(t){var e=i._fullLayout,o=i._fullData[d.index],c=g&&(l.isHierarchyRoot(t)||l.isLeaf(t)),h=l.getPtId(t),f=l.isEntry(t)?l.findEntryWithChild(m,h):l.findEntryWithLevel(m,h),y=l.getPtId(f),v={points:[u(t,o,p.eventDataKeys)],event:r.event};c||(v.nextLevel=y);var x=s.triggerHandler(i,"plotly_"+d.type+"click",v);if(!1!==x&&e.hovermode&&(i._hoverdata=[u(t,o,p.eventDataKeys)],a.click(i,r.event)),!c&&!1!==x&&!i._dragging&&!i._transitioning){n.call("_storeDirectGUIEdit",o,e._tracePreGUI[o.uid],{level:o.level});var _={data:[{level:y}],traces:[d.index]},b={frame:{redraw:!1,duration:p.transitionTime},transition:{duration:p.transitionTime,easing:p.transitionEasing},mode:"immediate",fromcurrent:!0};a.loneUnhover(e._hoverlayer.node()),n.call("animate",i,_,b)}}))}}}),Uf=f({"src/traces/sunburst/plot.js"(t){var e=x(),r=Yu(),n=(Rf(),g(Of)).interpolate,i=Qe(),a=le(),o=Se(),s=Ja(),l=s.recordMinTextSize,c=s.clearMinTextSize,u=Fu(),h=br().getRotationAngle,p=u.computeTransform,f=u.transformInsideText,d=Bf().styleOne,m=to().resizeText,y=Nf(),v=qu(),_=jf();function b(s,c,u,m){var g=s._context.staticPlot,x=s._fullLayout,b=!x.uniformtext.mode&&_.hasTransition(m),T=e.select(u).selectAll("g.slice"),A=c[0],k=A.trace,M=A.hierarchy,S=_.findEntryWithLevel(M,k.level),E=_.getMaxDepth(k),C=x._size,I=k.domain,L=C.w*(I.x[1]-I.x[0]),P=C.h*(I.y[1]-I.y[0]),z=.5*Math.min(L,P),D=A.cx=C.l+C.w*(I.x[1]+I.x[0])/2,O=A.cy=C.t+C.h*(1-I.y[0])-P/2;if(!S)return T.remove();var R=null,F={};b&&T.each((function(t){F[_.getPtId(t)]={rpx0:t.rpx0,rpx1:t.rpx1,x0:t.x0,x1:t.x1,transform:t.transform},!R&&_.isEntry(t)&&(R=t)}));var B=function(t){return r.partition().size([2*Math.PI,t.height+1])(t)}(S).descendants(),j=S.height+1,N=0,U=E;A.hasMultipleRoots&&_.isHierarchyRoot(S)&&(B=B.slice(1),j-=1,N=1,U+=1),B=B.filter((function(t){return t.y1<=U}));var V=h(k.rotation);V&&B.forEach((function(t){t.x0+=V,t.x1+=V}));var q=Math.min(j,E),H=function(t){return(t-N)/q*z},G=function(t,e){return[t*Math.cos(e),-t*Math.sin(e)]},W=function(t){return a.pathAnnulus(t.rpx0,t.rpx1,t.x0,t.x1,D,O)},Z=function(t){return D+w(t)[0]*(t.transform.rCenter||0)+(t.transform.x||0)},Y=function(t){return O+w(t)[1]*(t.transform.rCenter||0)+(t.transform.y||0)};(T=T.data(B,_.getPtId)).enter().append("g").classed("slice",!0),b?T.exit().transition().each((function(){var t=e.select(this);t.select("path.surface").transition().attrTween("d",(function(t){var e=function(t){var e,r=_.getPtId(t),i=F[r],a=F[_.getPtId(S)];if(a){var o=(t.x1>a.x1?2*Math.PI:0)+V;e=t.rpx1X?2*Math.PI:0)+V;e={x0:o,x1:o}}else e={rpx0:z,rpx1:z},a.extendFlat(e,J(t));else e={rpx0:0,rpx1:0};else e={x0:V,x1:V};return n(e,i)}(t);return function(t){return W(e(t))}})):h.attr("d",W),u.call(y,S,s,c,{eventDataKeys:v.eventDataKeys,transitionTime:v.CLICK_TRANSITION_TIME,transitionEasing:v.CLICK_TRANSITION_EASING}).call(_.setSliceCursor,s,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:s._transitioning}),h.call(d,r,k,s);var m=a.ensureSingle(u,"g","slicetext"),w=a.ensureSingle(m,"text","",(function(t){t.attr("data-notex",1)})),T=a.ensureUniformFontSize(s,_.determineTextFont(k,r,x.font));w.text(t.formatSliceLabel(r,S,k,c,x)).classed("slicetext",!0).attr("text-anchor","middle").call(i.font,T).call(o.convertToTspans,s);var M=i.bBox(w.node());r.transform=f(M,r,A),r.transform.targetX=Z(r),r.transform.targetY=Y(r);var E=function(t,e){var r=t.transform;return p(r,e),r.fontSize=T.size,l(k.type,r,x),a.getTextTransform(r)};b?w.transition().attrTween("transform",(function(t){var e=function(t){var e,r=F[_.getPtId(t)],i=t.transform;if(r)e=r;else if(e={rpx1:t.rpx1,transform:{textPosAngle:i.textPosAngle,scale:0,rotate:i.rotate,rCenter:i.rCenter,x:i.x,y:i.y}},R)if(t.parent)if(X){var o=t.x1>X?2*Math.PI:0;e.x0=e.x1=o}else a.extendFlat(e,J(t));else e.x0=e.x1=V;else e.x0=e.x1=V;var s=n(e.transform.textPosAngle,t.transform.textPosAngle),c=n(e.rpx1,t.rpx1),u=n(e.x0,t.x0),h=n(e.x1,t.x1),p=n(e.transform.scale,i.scale),f=n(e.transform.rotate,i.rotate),d=0===i.rCenter?3:0===e.transform.rCenter?1/3:1,m=n(e.transform.rCenter,i.rCenter);return function(t){var e=c(t),r=u(t),n=h(t),a=function(t){return m(Math.pow(t,d))}(t),o={pxmid:G(e,(r+n)/2),rpx1:e,transform:{textPosAngle:s(t),rCenter:a,x:i.x,y:i.y}};return l(k.type,i,x),{transform:{targetX:Z(o),targetY:Y(o),scale:p(t),rotate:f(t),rCenter:a}}}}(t);return function(t){return E(e(t),M)}})):w.attr("transform",E(r,M))}))}function w(t){return function(t,e){return[t*Math.sin(e),-t*Math.cos(e)]}(t.rpx1,t.transform.textPosAngle)}t.plot=function(t,r,n,i){var a,o,s=t._fullLayout,l=s._sunburstlayer,u=!n,h=!s.uniformtext.mode&&_.hasTransition(n);c("sunburst",s),(a=l.selectAll("g.trace.sunburst").data(r,(function(t){return t[0].trace.uid}))).enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),a.order(),h?(i&&(o=i()),e.transition().duration(n.duration).ease(n.easing).each("end",(function(){o&&o()})).each("interrupt",(function(){o&&o()})).each((function(){l.selectAll("g.trace").each((function(e){b(t,e,this,n)}))}))):(a.each((function(e){b(t,e,this,n)})),s.uniformtext.mode&&m(t,s._sunburstlayer.selectAll(".trace"),"sunburst")),u&&a.exit().remove()},t.formatSliceLabel=function(t,e,r,n,i){var o=r.texttemplate,s=r.textinfo;if(!(o||s&&"none"!==s))return"";var l=i.separators,c=n[0],u=t.data.data,h=c.hierarchy,p=_.isHierarchyRoot(t),f=_.getParent(h,t),d=_.getValue(t);if(!o){var m,g=s.split("+"),y=function(t){return-1!==g.indexOf(t)},v=[];if(y("label")&&u.label&&v.push(u.label),u.hasOwnProperty("v")&&y("value")&&v.push(_.formatValue(u.v,l)),!p){y("current path")&&v.push(_.getPath(t.data));var x=0;y("percent parent")&&x++,y("percent entry")&&x++,y("percent root")&&x++;var b=x>1;if(x){var w,T=function(t){m=_.formatPercent(w,l),b&&(m+=" of "+t),v.push(m)};y("percent parent")&&!p&&(w=d/_.getValue(f),T("parent")),y("percent entry")&&(w=d/_.getValue(e),T("entry")),y("percent root")&&(w=d/_.getValue(h),T("root"))}}return y("text")&&(m=a.castOption(r,u.i,"text"),a.isValidTextValue(m)&&v.push(m)),v.join("
")}var A=a.castOption(r,u.i,"texttemplate");if(!A)return"";var k={};u.label&&(k.label=u.label),u.hasOwnProperty("v")&&(k.value=u.v,k.valueLabel=_.formatValue(u.v,l)),k.currentPath=_.getPath(t.data),p||(k.percentParent=d/_.getValue(f),k.percentParentLabel=_.formatPercent(k.percentParent,l),k.parent=_.getPtLabel(f)),k.percentEntry=d/_.getValue(e),k.percentEntryLabel=_.formatPercent(k.percentEntry,l),k.entry=_.getPtLabel(e),k.percentRoot=d/_.getValue(h),k.percentRootLabel=_.formatPercent(k.percentRoot,l),k.root=_.getPtLabel(h),u.hasOwnProperty("color")&&(k.color=u.color);var M=a.castOption(r,u.i,"text");return(a.isValidTextValue(M)||""===M)&&(k.text=M),k.customdata=a.castOption(r,u.i,"customdata"),a.texttemplateString(A,k,i._d3locale,k,r._meta||{})}}}),Vf=f({"src/traces/sunburst/index.js"(t,e){e.exports={moduleType:"trace",name:"sunburst",basePlotModule:Vu(),categories:[],animatable:!0,attributes:Hu(),layoutAttributes:Gu(),supplyDefaults:Wu(),supplyLayoutDefaults:Zu(),calc:Xu().calc,crossTraceCalc:Xu().crossTraceCalc,plot:Uf().plot,style:Bf().style,colorbar:fi(),meta:{}}}}),qf=f({"lib/sunburst.js"(t,e){e.exports=Vf()}}),Hf=f({"src/traces/treemap/base_plot.js"(t){var e=Ae();t.name="treemap",t.plot=function(r,n,i,a){e.plotBasePlot(t.name,r,n,i,a)},t.clean=function(r,n,i,a){e.cleanBasePlot(t.name,r,n,i,a)}}}),Gf=f({"src/traces/treemap/constants.js"(t,e){e.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}}}),Wf=f({"src/traces/treemap/attributes.js"(t,e){var r=Ot().hovertemplateAttrs,n=Ot().texttemplateAttrs,i=Pe(),a=Aa().attributes,o=Lu(),s=Hu(),l=Gf(),c=R().extendFlat,u=zt().pattern;e.exports={labels:s.labels,parents:s.parents,values:s.values,branchvalues:s.branchvalues,count:s.count,level:s.level,maxdepth:s.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:c({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:s.marker.colors,pattern:u,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:s.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},i("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:c({},o.textfont,{}),editType:"calc"},text:o.text,textinfo:s.textinfo,texttemplate:n({editType:"plot"},{keys:l.eventDataKeys.concat(["label","value"])}),hovertext:o.hovertext,hoverinfo:s.hoverinfo,hovertemplate:r({},{keys:l.eventDataKeys}),textfont:o.textfont,insidetextfont:o.insidetextfont,outsidetextfont:c({},o.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:o.sort,root:s.root,domain:a({name:"treemap",trace:!0,editType:"calc"})}}}),Zf=f({"src/traces/treemap/layout_attributes.js"(t,e){e.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),Yf=f({"src/traces/treemap/defaults.js"(t,e){var r=le(),n=Wf(),i=H(),a=Aa().defaults,o=Ya().handleText,s=Ha().TEXTPAD,l=Pu().handleMarkerDefaults,c=Ze(),u=c.hasColorscale,h=c.handleDefaults;e.exports=function(t,e,c,p){function f(i,a){return r.coerce(t,e,n,i,a)}var d=f("labels"),m=f("parents");if(d&&d.length&&m&&m.length){var g=f("values");g&&g.length?f("branchvalues"):f("count"),f("level"),f("maxdepth"),"squarify"===f("tiling.packing")&&f("tiling.squarifyratio"),f("tiling.flip"),f("tiling.pad");var y=f("text");f("texttemplate"),e.texttemplate||f("textinfo",r.isArrayOrTypedArray(y)?"text+label":"label"),f("hovertext"),f("hovertemplate");var v=f("pathbar.visible");o(t,e,p,f,"auto",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),f("textposition");var x=-1!==e.textposition.indexOf("bottom");l(t,e,p,f),(e._hasColorscale=u(t,"marker","colors")||(t.marker||{}).coloraxis)?h(t,e,p,f,{prefix:"marker.",cLetter:"c"}):f("marker.depthfade",!(e.marker.colors||[]).length);var _=2*e.textfont.size;f("marker.pad.t",x?_/4:_),f("marker.pad.l",_/4),f("marker.pad.r",_/4),f("marker.pad.b",x?_:_/4),f("marker.cornerradius"),e._hovered={marker:{line:{width:2,color:i.contrast(p.paper_bgcolor)}}},v&&(f("pathbar.thickness",e.pathbar.textfont.size+2*s),f("pathbar.side"),f("pathbar.edgeshape")),f("sort"),f("root.color"),a(e,p,f),e._length=null}else e.visible=!1}}}),Xf=f({"src/traces/treemap/layout_defaults.js"(t,e){var r=le(),n=Zf();e.exports=function(t,e){function i(i,a){return r.coerce(t,e,n,i,a)}i("treemapcolorway",e.colorway),i("extendtreemapcolors")}}}),$f=f({"src/traces/treemap/calc.js"(t){var e=Xu();t.calc=function(t,r){return e.calc(t,r)},t.crossTraceCalc=function(t){return e._runCrossTraceCalc("treemap",t)}}}),Kf=f({"src/traces/treemap/flip_tree.js"(t,e){e.exports=function t(e,r,n){var i;n.swapXY&&(i=e.x0,e.x0=e.y0,e.y0=i,i=e.x1,e.x1=e.y1,e.y1=i),n.flipX&&(i=e.x0,e.x0=r[0]-e.x1,e.x1=r[0]-i),n.flipY&&(i=e.y0,e.y0=r[1]-e.y1,e.y1=r[1]-i);var a=e.children;if(a)for(var o=0;o0)for(var b=0;b").join(" ")||"";var m=n.ensureSingle(f,"g","slicetext"),A=n.ensureSingle(m,"text","",(function(t){t.attr("data-notex",1)})),I=n.ensureUniformFontSize(t,c.determineTextFont(L,o,C.font,{onPathbar:!0}));A.text(o._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(i.font,I).call(a.convertToTspans,t),o.textBB=i.bBox(A.node()),o.transform=b(o,{fontSize:I.size,onPathbar:!0}),o.transform.fontSize=I.size,T?A.transition().attrTween("transform",(function(t){var e=M(t,h,S,[g,y]);return function(t){return w(e(t))}})):A.attr("transform",w(o))}))}}}),ed=f({"src/traces/treemap/plot_one.js"(t,e){var r=x(),n=(Rf(),g(Of)).interpolate,i=jf(),a=le(),o=Ha().TEXTPAD,s=eo().toMoveInsideBar,l=Ja().recordMinTextSize,c=Gf(),u=td();function h(t){return i.isHierarchyRoot(t)?"":i.getPtId(t)}e.exports=function(t,e,p,f,d){var m=t._fullLayout,g=e[0],y=g.trace,v="icicle"===y.type,x=g.hierarchy,_=i.findEntryWithLevel(x,y.level),b=r.select(p),w=b.selectAll("g.pathbar"),T=b.selectAll("g.slice");if(!_)return w.remove(),void T.remove();var A=i.isHierarchyRoot(_),k=!m.uniformtext.mode&&i.hasTransition(f),M=i.getMaxDepth(y),S=m._size,E=y.domain,C=S.w*(E.x[1]-E.x[0]),I=S.h*(E.y[1]-E.y[0]),L=C,P=y.pathbar.thickness,z=y.marker.line.width+c.gapWithPathbar,D=y.pathbar.visible?y.pathbar.side.indexOf("bottom")>-1?I+z:-(P+z):0,O={x0:L,x1:L,y0:D,y1:D+P},R=function(t,e,r){var n=y.tiling.pad,i=function(t){return t-n<=e.x0},a=function(t){return t+n>=e.x1},o=function(t){return t-n<=e.y0},s=function(t){return t+n>=e.y1};return t.x0===e.x0&&t.x1===e.x1&&t.y0===e.y0&&t.y1===e.y1?{x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1}:{x0:i(t.x0-n)?0:a(t.x0-n)?r[0]:t.x0,x1:i(t.x1+n)?0:a(t.x1+n)?r[0]:t.x1,y0:o(t.y0-n)?0:s(t.y0-n)?r[1]:t.y0,y1:o(t.y1+n)?0:s(t.y1+n)?r[1]:t.y1}},F=null,B={},j={},N=null,U=function(t,e){return e?B[h(t)]:j[h(t)]};g.hasMultipleRoots&&A&&M++,y._maxDepth=M,y._backgroundColor=m.paper_bgcolor,y._entryDepth=_.data.depth,y._atRootLevel=A;var V=-C/2+S.l+S.w*(E.x[1]+E.x[0])/2,q=-I/2+S.t+S.h*(1-(E.y[1]+E.y[0])/2),H=function(t){return V+t},G=function(t){return q+t},W=G(0),Z=H(0),Y=function(t){return Z+t},X=function(t){return W+t};function $(t,e){return t+","+e}var K=Y(0),J=function(t){t.x=Math.max(K,t.x)},Q=y.pathbar.edgeshape,tt=y[v?"tiling":"marker"].pad,et=function(t){return-1!==y.textposition.indexOf(t)},rt=et("top"),nt=et("left"),it=et("right"),at=et("bottom"),ot=function(t,e){var r=t.x0,n=t.x1,i=t.y0,a=t.y1,c=t.textBB,u=rt||e.isHeader&&!at?"start":at?"end":"middle",h=et("right"),p=et("left")||e.onPathbar?-1:h?1:0;if(e.isHeader){if((r+=(v?tt:tt.l)-o)>=(n-=(v?tt:tt.r)-o)){var f=(r+n)/2;r=f,n=f}var d;at?i<(d=a-(v?tt:tt.b))&&d"===Q?(l.x-=a,c.x-=a,u.x-=a,h.x-=a):"/"===Q?(u.x-=a,h.x-=a,o.x-=a/2,s.x-=a/2):"\\"===Q?(l.x-=a,c.x-=a,o.x-=a/2,s.x-=a/2):"<"===Q&&(o.x-=a,s.x-=a),J(l),J(h),J(o),J(c),J(u),J(s),"M"+$(l.x,l.y)+"L"+$(c.x,c.y)+"L"+$(s.x,s.y)+"L"+$(u.x,u.y)+"L"+$(h.x,h.y)+"L"+$(o.x,o.y)+"Z"},toMoveInsideSlice:ot,makeUpdateSliceInterpolator:lt,makeUpdateTextInterpolator:ct,handleSlicesExit:ut,hasTransition:k,strTransform:ht}):w.remove()}}}),rd=f({"src/traces/treemap/draw.js"(t,e){var r=x(),n=jf(),i=Ja().clearMinTextSize,a=to().resizeText,o=ed();e.exports=function(t,e,s,l,c){var u,h,p=c.type,f=c.drawDescendants,d=t._fullLayout,m=d["_"+p+"layer"],g=!s;i(p,d),(u=m.selectAll("g.trace."+p).data(e,(function(t){return t[0].trace.uid}))).enter().append("g").classed("trace",!0).classed(p,!0),u.order(),!d.uniformtext.mode&&n.hasTransition(s)?(l&&(h=l()),r.transition().duration(s.duration).ease(s.easing).each("end",(function(){h&&h()})).each("interrupt",(function(){h&&h()})).each((function(){m.selectAll("g.trace").each((function(e){o(t,e,this,s,f)}))}))):(u.each((function(e){o(t,e,this,s,f)})),d.uniformtext.mode&&a(t,m.selectAll(".trace"),p)),g&&u.exit().remove()}}}),nd=f({"src/traces/treemap/draw_descendants.js"(t,e){var r=x(),n=le(),i=Qe(),a=Se(),o=Jf(),s=Qf().styleOne,l=Gf(),c=jf(),u=Nf(),h=Uf().formatSliceLabel,p=!1;e.exports=function(t,e,f,d,m){var g=m.width,y=m.height,v=m.viewX,x=m.viewY,_=m.pathSlice,b=m.toMoveInsideSlice,w=m.strTransform,T=m.hasTransition,A=m.handleSlicesExit,k=m.makeUpdateSliceInterpolator,M=m.makeUpdateTextInterpolator,S=m.prevEntry,E=t._context.staticPlot,C=t._fullLayout,I=e[0].trace,L=-1!==I.textposition.indexOf("left"),P=-1!==I.textposition.indexOf("right"),z=-1!==I.textposition.indexOf("bottom"),D=!z&&!I.marker.pad.t||z&&!I.marker.pad.b,O=o(f,[g,y],{packing:I.tiling.packing,squarifyratio:I.tiling.squarifyratio,flipX:I.tiling.flip.indexOf("x")>-1,flipY:I.tiling.flip.indexOf("y")>-1,pad:{inner:I.tiling.pad,top:I.marker.pad.t,left:I.marker.pad.l,right:I.marker.pad.r,bottom:I.marker.pad.b}}).descendants(),R=1/0,F=-1/0;O.forEach((function(t){var e=t.depth;e>=I._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(R=Math.min(R,e),F=Math.max(F,e))})),d=d.data(O,c.getPtId),I._maxVisibleLayers=isFinite(F)?F-R+1:0,d.enter().append("g").classed("slice",!0),A(d,p,{},[g,y],_),d.order();var B=null;if(T&&S){var j=c.getPtId(S);d.each((function(t){null===B&&c.getPtId(t)===j&&(B={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var N=function(){return B||{x0:0,x1:g,y0:0,y1:y}},U=d;return T&&(U=U.transition().each("end",(function(){var e=r.select(this);c.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),U.each((function(o){var d=c.isHeader(o,I);o._x0=v(o.x0),o._x1=v(o.x1),o._y0=x(o.y0),o._y1=x(o.y1),o._hoverX=v(o.x1-I.marker.pad.r),o._hoverY=x(z?o.y1-I.marker.pad.b/2:o.y0+I.marker.pad.t/2);var m=r.select(this),A=n.ensureSingle(m,"path","surface",(function(t){t.style("pointer-events",E?"none":"all")}));T?A.transition().attrTween("d",(function(t){var e=k(t,p,N(),[g,y]);return function(t){return _(e(t))}})):A.attr("d",_),m.call(u,f,t,e,{styleOne:s,eventDataKeys:l.eventDataKeys,transitionTime:l.CLICK_TRANSITION_TIME,transitionEasing:l.CLICK_TRANSITION_EASING}).call(c.setSliceCursor,t,{isTransitioning:t._transitioning}),A.call(s,o,I,t,{hovered:!1}),o.x0===o.x1||o.y0===o.y1?o._text="":o._text=d?D?"":c.getPtLabel(o)||"":h(o,f,I,e,C)||"";var S=n.ensureSingle(m,"g","slicetext"),O=n.ensureSingle(S,"text","",(function(t){t.attr("data-notex",1)})),R=n.ensureUniformFontSize(t,c.determineTextFont(I,o,C.font)),F=o._text||" ",B=d&&-1===F.indexOf("
");O.text(F).classed("slicetext",!0).attr("text-anchor",P?"end":L||B?"start":"middle").call(i.font,R).call(a.convertToTspans,t),o.textBB=i.bBox(O.node()),o.transform=b(o,{fontSize:R.size,isHeader:d}),o.transform.fontSize=R.size,T?O.transition().attrTween("transform",(function(t){var e=M(t,p,N(),[g,y]);return function(t){return w(e(t))}})):O.attr("transform",w(o))})),B}}}),id=f({"src/traces/treemap/plot.js"(t,e){var r=rd(),n=nd();e.exports=function(t,e,i,a){return r(t,e,i,a,{type:"treemap",drawDescendants:n})}}}),ad=f({"src/traces/treemap/index.js"(t,e){e.exports={moduleType:"trace",name:"treemap",basePlotModule:Hf(),categories:[],animatable:!0,attributes:Wf(),layoutAttributes:Zf(),supplyDefaults:Yf(),supplyLayoutDefaults:Xf(),calc:$f().calc,crossTraceCalc:$f().crossTraceCalc,plot:id(),style:Qf().style,colorbar:fi(),meta:{}}}}),od=f({"lib/treemap.js"(t,e){e.exports=ad()}}),sd=f({"src/traces/icicle/base_plot.js"(t){var e=Ae();t.name="icicle",t.plot=function(r,n,i,a){e.plotBasePlot(t.name,r,n,i,a)},t.clean=function(r,n,i,a){e.cleanBasePlot(t.name,r,n,i,a)}}}),ld=f({"src/traces/icicle/attributes.js"(t,e){var r=Ot().hovertemplateAttrs,n=Ot().texttemplateAttrs,i=Pe(),a=Aa().attributes,o=Lu(),s=Hu(),l=Wf(),c=Gf(),u=R().extendFlat,h=zt().pattern;e.exports={labels:s.labels,parents:s.parents,values:s.values,branchvalues:s.branchvalues,count:s.count,level:s.level,maxdepth:s.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:l.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:u({colors:s.marker.colors,line:s.marker.line,pattern:h,editType:"calc"},i("marker",{colorAttr:"colors",anim:!1})),leaf:s.leaf,pathbar:l.pathbar,text:o.text,textinfo:s.textinfo,texttemplate:n({editType:"plot"},{keys:c.eventDataKeys.concat(["label","value"])}),hovertext:o.hovertext,hoverinfo:s.hoverinfo,hovertemplate:r({},{keys:c.eventDataKeys}),textfont:o.textfont,insidetextfont:o.insidetextfont,outsidetextfont:l.outsidetextfont,textposition:l.textposition,sort:o.sort,root:s.root,domain:a({name:"icicle",trace:!0,editType:"calc"})}}}),cd=f({"src/traces/icicle/layout_attributes.js"(t,e){e.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),ud=f({"src/traces/icicle/defaults.js"(t,e){var r=le(),n=ld(),i=H(),a=Aa().defaults,o=Ya().handleText,s=Ha().TEXTPAD,l=Pu().handleMarkerDefaults,c=Ze(),u=c.hasColorscale,h=c.handleDefaults;e.exports=function(t,e,c,p){function f(i,a){return r.coerce(t,e,n,i,a)}var d=f("labels"),m=f("parents");if(d&&d.length&&m&&m.length){var g=f("values");g&&g.length?f("branchvalues"):f("count"),f("level"),f("maxdepth"),f("tiling.orientation"),f("tiling.flip"),f("tiling.pad");var y=f("text");f("texttemplate"),e.texttemplate||f("textinfo",r.isArrayOrTypedArray(y)?"text+label":"label"),f("hovertext"),f("hovertemplate");var v=f("pathbar.visible");o(t,e,p,f,"auto",{hasPathbar:v,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),f("textposition"),l(t,e,p,f);var x=e._hasColorscale=u(t,"marker","colors")||(t.marker||{}).coloraxis;x&&h(t,e,p,f,{prefix:"marker.",cLetter:"c"}),f("leaf.opacity",x?1:.7),e._hovered={marker:{line:{width:2,color:i.contrast(p.paper_bgcolor)}}},v&&(f("pathbar.thickness",e.pathbar.textfont.size+2*s),f("pathbar.side"),f("pathbar.edgeshape")),f("sort"),f("root.color"),a(e,p,f),e._length=null}else e.visible=!1}}}),hd=f({"src/traces/icicle/layout_defaults.js"(t,e){var r=le(),n=cd();e.exports=function(t,e){function i(i,a){return r.coerce(t,e,n,i,a)}i("iciclecolorway",e.colorway),i("extendiciclecolors")}}}),pd=f({"src/traces/icicle/calc.js"(t){var e=Xu();t.calc=function(t,r){return e.calc(t,r)},t.crossTraceCalc=function(t){return e._runCrossTraceCalc("icicle",t)}}}),fd=f({"src/traces/icicle/partition.js"(t,e){var r=Yu(),n=Kf();e.exports=function(t,e,i){var a=i.flipX,o=i.flipY,s="h"===i.orientation,l=i.maxDepth,c=e[0],u=e[1];l&&(c=(t.height+1)*e[0]/Math.min(t.height+1,l),u=(t.height+1)*e[1]/Math.min(t.height+1,l));var h=r.partition().padding(i.pad.inner).size(s?[e[1],c]:[e[0],u])(t);return(s||a||o)&&n(h,e,{swapXY:s,flipX:a,flipY:o}),h}}}),dd=f({"src/traces/icicle/style.js"(t,e){var r=x(),n=H(),i=le(),a=Ja().resizeText,o=Ff();function s(t,e,r,a){var s=e.data.data,l=!e.children,c=s.i,u=i.castOption(r,c,"marker.line.color")||n.defaultLine,h=i.castOption(r,c,"marker.line.width")||0;t.call(o,e,r,a).style("stroke-width",h).call(n.stroke,u).style("opacity",l?r.leaf.opacity:null)}e.exports={style:function(t){var e=t._fullLayout._iciclelayer.selectAll(".trace");a(t,e,"icicle"),e.each((function(e){var n=r.select(this),i=e[0].trace;n.style("opacity",i.opacity),n.selectAll("path.surface").each((function(e){r.select(this).call(s,e,i,t)}))}))},styleOne:s}}}),md=f({"src/traces/icicle/draw_descendants.js"(t,e){var r=x(),n=le(),i=Qe(),a=Se(),o=fd(),s=dd().styleOne,l=Gf(),c=jf(),u=Nf(),h=Uf().formatSliceLabel,p=!1;e.exports=function(t,e,f,d,m){var g=m.width,y=m.height,v=m.viewX,x=m.viewY,_=m.pathSlice,b=m.toMoveInsideSlice,w=m.strTransform,T=m.hasTransition,A=m.handleSlicesExit,k=m.makeUpdateSliceInterpolator,M=m.makeUpdateTextInterpolator,S=m.prevEntry,E=t._context.staticPlot,C=t._fullLayout,I=e[0].trace,L=-1!==I.textposition.indexOf("left"),P=-1!==I.textposition.indexOf("right"),z=-1!==I.textposition.indexOf("bottom"),D=o(f,[g,y],{flipX:I.tiling.flip.indexOf("x")>-1,flipY:I.tiling.flip.indexOf("y")>-1,orientation:I.tiling.orientation,pad:{inner:I.tiling.pad},maxDepth:I._maxDepth}).descendants(),O=1/0,R=-1/0;D.forEach((function(t){var e=t.depth;e>=I._maxDepth?(t.x0=t.x1=(t.x0+t.x1)/2,t.y0=t.y1=(t.y0+t.y1)/2):(O=Math.min(O,e),R=Math.max(R,e))})),d=d.data(D,c.getPtId),I._maxVisibleLayers=isFinite(R)?R-O+1:0,d.enter().append("g").classed("slice",!0),A(d,p,{},[g,y],_),d.order();var F=null;if(T&&S){var B=c.getPtId(S);d.each((function(t){null===F&&c.getPtId(t)===B&&(F={x0:t.x0,x1:t.x1,y0:t.y0,y1:t.y1})}))}var j=function(){return F||{x0:0,x1:g,y0:0,y1:y}},N=d;return T&&(N=N.transition().each("end",(function(){var e=r.select(this);c.setSliceCursor(e,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})}))),N.each((function(o){o._x0=v(o.x0),o._x1=v(o.x1),o._y0=x(o.y0),o._y1=x(o.y1),o._hoverX=v(o.x1-I.tiling.pad),o._hoverY=x(z?o.y1-I.tiling.pad/2:o.y0+I.tiling.pad/2);var d=r.select(this),m=n.ensureSingle(d,"path","surface",(function(t){t.style("pointer-events",E?"none":"all")}));T?m.transition().attrTween("d",(function(t){var e=k(t,p,j(),[g,y],{orientation:I.tiling.orientation,flipX:I.tiling.flip.indexOf("x")>-1,flipY:I.tiling.flip.indexOf("y")>-1});return function(t){return _(e(t))}})):m.attr("d",_),d.call(u,f,t,e,{styleOne:s,eventDataKeys:l.eventDataKeys,transitionTime:l.CLICK_TRANSITION_TIME,transitionEasing:l.CLICK_TRANSITION_EASING}).call(c.setSliceCursor,t,{isTransitioning:t._transitioning}),m.call(s,o,I,t,{hovered:!1}),o.x0===o.x1||o.y0===o.y1?o._text="":o._text=h(o,f,I,e,C)||"";var A=n.ensureSingle(d,"g","slicetext"),S=n.ensureSingle(A,"text","",(function(t){t.attr("data-notex",1)})),D=n.ensureUniformFontSize(t,c.determineTextFont(I,o,C.font));S.text(o._text||" ").classed("slicetext",!0).attr("text-anchor",P?"end":L?"start":"middle").call(i.font,D).call(a.convertToTspans,t),o.textBB=i.bBox(S.node()),o.transform=b(o,{fontSize:D.size}),o.transform.fontSize=D.size,T?S.transition().attrTween("transform",(function(t){var e=M(t,p,j(),[g,y]);return function(t){return w(e(t))}})):S.attr("transform",w(o))})),F}}}),gd=f({"src/traces/icicle/plot.js"(t,e){var r=rd(),n=md();e.exports=function(t,e,i,a){return r(t,e,i,a,{type:"icicle",drawDescendants:n})}}}),yd=f({"src/traces/icicle/index.js"(t,e){e.exports={moduleType:"trace",name:"icicle",basePlotModule:sd(),categories:[],animatable:!0,attributes:ld(),layoutAttributes:cd(),supplyDefaults:ud(),supplyLayoutDefaults:hd(),calc:pd().calc,crossTraceCalc:pd().crossTraceCalc,plot:gd(),style:dd().style,colorbar:fi(),meta:{}}}}),vd=f({"lib/icicle.js"(t,e){e.exports=yd()}}),xd=f({"src/traces/funnelarea/base_plot.js"(t){var e=Ae();t.name="funnelarea",t.plot=function(r,n,i,a){e.plotBasePlot(t.name,r,n,i,a)},t.clean=function(r,n,i,a){e.cleanBasePlot(t.name,r,n,i,a)}}}),_d=f({"src/traces/funnelarea/attributes.js"(t,e){var r=Lu(),n=U(),i=Aa().attributes,a=Ot().hovertemplateAttrs,o=Ot().texttemplateAttrs,s=R().extendFlat;e.exports={labels:r.labels,label0:r.label0,dlabel:r.dlabel,values:r.values,marker:{colors:r.marker.colors,line:{color:s({},r.marker.line.color,{dflt:null}),width:s({},r.marker.line.width,{dflt:1}),editType:"calc"},pattern:r.marker.pattern,editType:"calc"},text:r.text,hovertext:r.hovertext,scalegroup:s({},r.scalegroup,{}),textinfo:s({},r.textinfo,{flags:["label","text","value","percent"]}),texttemplate:o({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:s({},n.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:a({},{keys:["label","color","value","text","percent"]}),textposition:s({},r.textposition,{values:["inside","none"],dflt:"inside"}),textfont:r.textfont,insidetextfont:r.insidetextfont,title:{text:r.title.text,font:r.title.font,position:s({},r.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:i({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}}}),bd=f({"src/traces/funnelarea/layout_attributes.js"(t,e){var r=zu().hiddenlabels;e.exports={hiddenlabels:r,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),wd=f({"src/traces/funnelarea/defaults.js"(t,e){var r=le(),n=_d(),i=Aa().defaults,a=Ya().handleText,o=Pu().handleLabelsAndValues,s=Pu().handleMarkerDefaults;e.exports=function(t,e,l,c){function u(i,a){return r.coerce(t,e,n,i,a)}var h=u("labels"),p=u("values"),f=o(h,p),d=f.len;if(e._hasLabels=f.hasLabels,e._hasValues=f.hasValues,!e._hasLabels&&e._hasValues&&(u("label0"),u("dlabel")),d){e._length=d,s(t,e,c,u),u("scalegroup");var m,g=u("text"),y=u("texttemplate");if(y||(m=u("textinfo",Array.isArray(g)?"text+percent":"percent")),u("hovertext"),u("hovertemplate"),y||m&&"none"!==m){var v=u("textposition");a(t,e,c,u,v,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else"none"===m&&u("textposition","none");i(e,c,u),u("title.text")&&(u("title.position"),r.coerceFont(u,"title.font",c.font)),u("aspectratio"),u("baseratio")}else e.visible=!1}}}),Td=f({"src/traces/funnelarea/layout_defaults.js"(t,e){var r=le(),n=bd();e.exports=function(t,e){function i(i,a){return r.coerce(t,e,n,i,a)}i("hiddenlabels"),i("funnelareacolorway",e.colorway),i("extendfunnelareacolors")}}}),Ad=f({"src/traces/funnelarea/calc.js"(t,e){var r=Ou();e.exports={calc:function(t,e){return r.calc(t,e)},crossTraceCalc:function(t){r.crossTraceCalc(t,{type:"funnelarea"})}}}}),kd=f({"src/traces/funnelarea/plot.js"(t,e){var r=x(),n=Qe(),i=le(),a=i.strScale,o=i.strTranslate,s=Se(),l=eo().toMoveInsideBar,c=Ja(),u=c.recordMinTextSize,h=c.clearMinTextSize,p=br(),f=Fu(),d=f.attachFxHandlers,m=f.determineInsideTextFont,g=f.layoutAreas,y=f.prerenderTitles,v=f.positionTitleOutside,_=f.formatSliceLabel;function b(t,e){return"l"+(e[0]-t[0])+","+(e[1]-t[1])}function w(t,e){return[.5*(t[0]+e[0]),.5*(t[1]+e[1])]}e.exports=function(t,e){var c=t._context.staticPlot,f=t._fullLayout;h("funnelarea",f),y(e,t),g(e,f._size),i.makeTraceGroups(f._funnelarealayer,e,"trace").each((function(e){var h=r.select(this),g=e[0],y=g.trace;(function(t){if(t.length){var e=t[0],r=e.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a,o,s,l=Math.pow(i,2),c=e.vTotal,u=c,h=c*l/(1-l)/c,p=[];for(p.push(S()),o=t.length-1;o>-1;o--)if(!(s=t[o]).hidden){var f=s.v/u;h+=f,p.push(S())}var d=1/0,m=-1/0;for(o=0;o-1;o--)if(!(s=t[o]).hidden){var k=p[A+=1][0],M=p[A][1];s.TL=[-k,M],s.TR=[k,M],s.BL=b,s.BR=T,s.pxmid=w(s.TR,s.BR),b=s.TL,T=s.TR}}function S(){var t=function(){var t=Math.sqrt(h);return{x:t,y:-t}}();return[t.x,t.y]}})(e),h.each((function(){var h=r.select(this).selectAll("g.slice").data(e);h.enter().append("g").classed("slice",!0),h.exit().remove(),h.each((function(a,o){if(a.hidden)r.select(this).selectAll("path,g").remove();else{a.pointNumber=a.i,a.curveNumber=y.index;var h=g.cx,v=g.cy,x=r.select(this),w=x.selectAll("path.surface").data([a]);w.enter().append("path").classed("surface",!0).style({"pointer-events":c?"none":"all"}),x.call(d,t,e);var T="M"+(h+a.TR[0])+","+(v+a.TR[1])+b(a.TR,a.BR)+b(a.BR,a.BL)+b(a.BL,a.TL)+"Z";w.attr("d",T),_(t,a,g);var A=p.castOption(y.textposition,a.pts),k=x.selectAll("g.slicetext").data(a.text&&"none"!==A?[0]:[]);k.enter().append("g").classed("slicetext",!0),k.exit().remove(),k.each((function(){var c=i.ensureSingle(r.select(this),"text","",(function(t){t.attr("data-notex",1)})),p=i.ensureUniformFontSize(t,m(y,a,f.font));c.text(a.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(n.font,p).call(s.convertToTspans,t);var d,g,x,_=n.bBox(c.node()),b=Math.min(a.BL[1],a.BR[1])+v,w=Math.max(a.TL[1],a.TR[1])+v;g=Math.max(a.TL[0],a.BL[0])+h,x=Math.min(a.TR[0],a.BR[0])+h,(d=l(g,x,b,w,_,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"})).fontSize=p.size,u(y.type,d,f),e[o].transform=d,i.setTransormAndDisplay(c,d)}))}}));var x=r.select(this).selectAll("g.titletext").data(y.title.text?[0]:[]);x.enter().append("g").classed("titletext",!0),x.exit().remove(),x.each((function(){var e=i.ensureSingle(r.select(this),"text","",(function(t){t.attr("data-notex",1)})),l=y.title.text;y._meta&&(l=i.templateString(l,y._meta)),e.text(l).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(n.font,y.title.font).call(s.convertToTspans,t);var c=v(g,f._size);e.attr("transform",o(c.x,c.y)+a(Math.min(1,c.scale))+o(c.tx,c.ty))}))}))}))}}}),Md=f({"src/traces/funnelarea/style.js"(t,e){var r=x(),n=Tr(),i=Ja().resizeText;e.exports=function(t){var e=t._fullLayout._funnelarealayer.selectAll(".trace");i(t,e,"funnelarea"),e.each((function(e){var i=e[0].trace,a=r.select(this);a.style({opacity:i.opacity}),a.selectAll("path.surface").each((function(e){r.select(this).call(n,e,i,t)}))}))}}}),Sd=f({"src/traces/funnelarea/index.js"(t,e){e.exports={moduleType:"trace",name:"funnelarea",basePlotModule:xd(),categories:["pie-like","funnelarea","showLegend"],attributes:_d(),layoutAttributes:bd(),supplyDefaults:wd(),supplyLayoutDefaults:Td(),calc:Ad().calc,crossTraceCalc:Ad().crossTraceCalc,plot:kd(),style:Md(),styleOne:Tr(),meta:{}}}}),Ed=f({"lib/funnelarea.js"(t,e){e.exports=Sd()}}),Cd=f({"stackgl_modules/index.js"(t,e){!function(){var t={1964:function(t,e,r){t.exports={alpha_shape:r(3502),convex_hull:r(7352),delaunay_triangulate:r(7642),gl_cone3d:r(6405),gl_error3d:r(9165),gl_line3d:r(5714),gl_mesh3d:r(7201),gl_plot3d:r(4100),gl_scatter3d:r(8418),gl_streamtube3d:r(7815),gl_surface3d:r(9499),ndarray:r(9618),ndarray_linear_interpolate:r(4317)}},4793:function(t,e,r){function n(t,e){for(var r=0;rp)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,d.prototype),e}function d(t,e,r){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return y(t)}return m(t,e,r)}function m(t,e,r){if("string"==typeof t)return function(t,e){if(("string"!=typeof e||""===e)&&(e="utf8"),!d.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var r=0|b(t,e),n=f(r),i=n.write(t,e);return i!==r&&(n=n.slice(0,i)),n}(t,e);if(ArrayBuffer.isView(t))return function(t){if(et(t,Uint8Array)){var e=new Uint8Array(t);return x(e.buffer,e.byteOffset,e.byteLength)}return v(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(t));if(et(t,ArrayBuffer)||t&&et(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(et(t,SharedArrayBuffer)||t&&et(t.buffer,SharedArrayBuffer)))return x(t,e,r);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var n=t.valueOf&&t.valueOf();if(null!=n&&n!==t)return d.from(n,e,r);var i=function(t){if(d.isBuffer(t)){var e=0|_(t.length),r=f(e);return 0===r.length||t.copy(r,0,0,e),r}return void 0!==t.length?"number"!=typeof t.length||rt(t.length)?f(0):v(t):"Buffer"===t.type&&Array.isArray(t.data)?v(t.data):void 0}(t);if(i)return i;if(typeof Symbol<"u"&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return d.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+l(t))}function g(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function y(t){return g(t),f(t<0?0:0|_(t))}function v(t){for(var e=t.length<0?0:0|_(t.length),r=f(e),n=0;n=p)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+p.toString(16)+" bytes");return 0|t}function b(t,e){if(d.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||et(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+l(t));var r=t.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var i=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return J(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Q(t).length;default:if(i)return n?-1:J(t).length;e=(""+e).toLowerCase(),i=!0}}function w(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0)||(r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return P(this,e,r);case"ascii":return D(this,e,r);case"latin1":case"binary":return O(this,e,r);case"base64":return L(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return F(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function T(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function A(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),rt(r=+r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=d.from(e,n)),d.isBuffer(e))return 0===e.length?-1:k(t,e,r,n,i);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):k(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function k(t,e,r,n,i){var a,o=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;o=2,s/=2,l/=2,r/=2}function c(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(i){var u=-1;for(a=r;as&&(r=s-l),a=r;a>=0;a--){for(var h=!0,p=0;pi&&(n=i):n=i;var a,o=e.length;for(n>o/2&&(n=o/2),a=0;a>8,i=r%256,a.push(i),a.push(n);return a}(e,t.length-r),t,r,n)}function L(t,e,r){return 0===e&&r===t.length?c.fromByteArray(t):c.fromByteArray(t.slice(e,r))}function P(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:a>223?3:a>191?2:1;if(i+s<=r){var l=void 0,c=void 0,u=void 0,h=void 0;switch(s){case 1:a<128&&(o=a);break;case 2:128==(192&(l=t[i+1]))&&(h=(31&a)<<6|63&l)>127&&(o=h);break;case 3:l=t[i+1],c=t[i+2],128==(192&l)&&128==(192&c)&&(h=(15&a)<<12|(63&l)<<6|63&c)>2047&&(h<55296||h>57343)&&(o=h);break;case 4:l=t[i+1],c=t[i+2],u=t[i+3],128==(192&l)&&128==(192&c)&&128==(192&u)&&(h=(15&a)<<18|(63&l)<<12|(63&c)<<6|63&u)>65535&&h<1114112&&(o=h)}}null===o?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=s}return function(t){var e=t.length;if(e<=z)return String.fromCharCode.apply(String,t);for(var r="",n=0;nn.length?(d.isBuffer(a)||(a=d.from(a)),a.copy(n,i)):Uint8Array.prototype.set.call(n,a,i);else{if(!d.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,i)}i+=a.length}return n},d.byteLength=b,d.prototype._isBuffer=!0,d.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;er&&(t+=" ... "),""},h&&(d.prototype[h]=d.prototype.inspect),d.prototype.compare=function(t,e,r,n,i){if(et(t,Uint8Array)&&(t=d.from(t,t.offset,t.byteLength)),!d.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+l(t));if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(e>>>=0),s=Math.min(a,o),c=this.slice(n,i),u=t.slice(e,r),h=0;h>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-e;if((void 0===r||r>i)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return M(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":case"latin1":case"binary":return E(this,t,e,r);case"base64":return C(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,e,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},d.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var z=4096;function D(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",a=e;ar)throw new RangeError("Trying to access beyond buffer length")}function j(t,e,r,n,i,a){if(!d.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function N(t,e,r,n,i){Y(e,n,i,t,r,7);var a=Number(e&BigInt(4294967295));t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a,a>>=8,t[r++]=a;var o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,o>>=8,t[r++]=o,r}function U(t,e,r,n,i){Y(e,n,i,t,r,7);var a=Number(e&BigInt(4294967295));t[r+7]=a,a>>=8,t[r+6]=a,a>>=8,t[r+5]=a,a>>=8,t[r+4]=a;var o=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=o,o>>=8,t[r+2]=o,o>>=8,t[r+1]=o,o>>=8,t[r]=o,r+8}function V(t,e,r,n,i,a){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function q(t,e,r,n,i){return e=+e,r>>>=0,i||V(t,0,r,4),u.write(t,e,r,n,23,4),r+4}function H(t,e,r,n,i){return e=+e,r>>>=0,i||V(t,0,r,8),u.write(t,e,r,n,52,8),r+8}d.prototype.slice=function(t,e){var r=this.length;(t=~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),(e=void 0===e?r:~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),e>>=0,e>>>=0,r||B(t,e,this.length);for(var n=this[t],i=1,a=0;++a>>=0,e>>>=0,r||B(t,e,this.length);for(var n=this[t+--e],i=1;e>0&&(i*=256);)n+=this[t+--e]*i;return n},d.prototype.readUint8=d.prototype.readUInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),this[t]},d.prototype.readUint16LE=d.prototype.readUInt16LE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]|this[t+1]<<8},d.prototype.readUint16BE=d.prototype.readUInt16BE=function(t,e){return t>>>=0,e||B(t,2,this.length),this[t]<<8|this[t+1]},d.prototype.readUint32LE=d.prototype.readUInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},d.prototype.readUint32BE=d.prototype.readUInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},d.prototype.readBigUInt64LE=it((function(t){X(t>>>=0,"offset");var e=this[t],r=this[t+7];(void 0===e||void 0===r)&&$(t,this.length-8);var n=e+this[++t]*Math.pow(2,8)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,24),i=this[++t]+this[++t]*Math.pow(2,8)+this[++t]*Math.pow(2,16)+r*Math.pow(2,24);return BigInt(n)+(BigInt(i)<>>=0,"offset");var e=this[t],r=this[t+7];(void 0===e||void 0===r)&&$(t,this.length-8);var n=e*Math.pow(2,24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+this[++t],i=this[++t]*Math.pow(2,24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+r;return(BigInt(n)<>>=0,e>>>=0,r||B(t,e,this.length);for(var n=this[t],i=1,a=0;++a=(i*=128)&&(n-=Math.pow(2,8*e)),n},d.prototype.readIntBE=function(t,e,r){t>>>=0,e>>>=0,r||B(t,e,this.length);for(var n=e,i=1,a=this[t+--n];n>0&&(i*=256);)a+=this[t+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*e)),a},d.prototype.readInt8=function(t,e){return t>>>=0,e||B(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},d.prototype.readInt16LE=function(t,e){t>>>=0,e||B(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt16BE=function(t,e){t>>>=0,e||B(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},d.prototype.readInt32LE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},d.prototype.readInt32BE=function(t,e){return t>>>=0,e||B(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},d.prototype.readBigInt64LE=it((function(t){X(t>>>=0,"offset");var e=this[t],r=this[t+7];(void 0===e||void 0===r)&&$(t,this.length-8);var n=this[t+4]+this[t+5]*Math.pow(2,8)+this[t+6]*Math.pow(2,16)+(r<<24);return(BigInt(n)<>>=0,"offset");var e=this[t],r=this[t+7];(void 0===e||void 0===r)&&$(t,this.length-8);var n=(e<<24)+this[++t]*Math.pow(2,16)+this[++t]*Math.pow(2,8)+this[++t];return(BigInt(n)<>>=0,e||B(t,4,this.length),u.read(this,t,!0,23,4)},d.prototype.readFloatBE=function(t,e){return t>>>=0,e||B(t,4,this.length),u.read(this,t,!1,23,4)},d.prototype.readDoubleLE=function(t,e){return t>>>=0,e||B(t,8,this.length),u.read(this,t,!0,52,8)},d.prototype.readDoubleBE=function(t,e){return t>>>=0,e||B(t,8,this.length),u.read(this,t,!1,52,8)},d.prototype.writeUintLE=d.prototype.writeUIntLE=function(t,e,r,n){t=+t,e>>>=0,r>>>=0,n||j(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[e]=255&t;++a>>=0,r>>>=0,n||j(this,t,e,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[e+i]=255&t;--i>=0&&(a*=256);)this[e+i]=t/a&255;return e+r},d.prototype.writeUint8=d.prototype.writeUInt8=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,1,255,0),this[e]=255&t,e+1},d.prototype.writeUint16LE=d.prototype.writeUInt16LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},d.prototype.writeUint16BE=d.prototype.writeUInt16BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},d.prototype.writeUint32LE=d.prototype.writeUInt32LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},d.prototype.writeUint32BE=d.prototype.writeUInt32BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},d.prototype.writeBigUInt64LE=it((function(t){return N(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))})),d.prototype.writeBigUInt64BE=it((function(t){return U(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,BigInt(0),BigInt("0xffffffffffffffff"))})),d.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e>>>=0,!n){var i=Math.pow(2,8*r-1);j(this,t,e,r,i-1,-i)}var a=0,o=1,s=0;for(this[e]=255&t;++a>>=0,!n){var i=Math.pow(2,8*r-1);j(this,t,e,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[e+a]=255&t;--a>=0&&(o*=256);)t<0&&0===s&&0!==this[e+a+1]&&(s=1),this[e+a]=(t/o|0)-s&255;return e+r},d.prototype.writeInt8=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},d.prototype.writeInt16LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},d.prototype.writeInt16BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},d.prototype.writeInt32LE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},d.prototype.writeInt32BE=function(t,e,r){return t=+t,e>>>=0,r||j(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},d.prototype.writeBigInt64LE=it((function(t){return N(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),d.prototype.writeBigInt64BE=it((function(t){return U(this,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),d.prototype.writeFloatLE=function(t,e,r){return q(this,t,e,!0,r)},d.prototype.writeFloatBE=function(t,e,r){return q(this,t,e,!1,r)},d.prototype.writeDoubleLE=function(t,e,r){return H(this,t,e,!0,r)},d.prototype.writeDoubleBE=function(t,e,r){return H(this,t,e,!1,r)},d.prototype.copy=function(t,e,r,n){if(!d.isBuffer(t))throw new TypeError("argument should be a Buffer");if(r||(r=0),!n&&0!==n&&(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(a=e;a=n+4;r-=3)e="_".concat(t.slice(r-3,r)).concat(e);return"".concat(t.slice(0,r)).concat(e)}function Y(t,e,r,n,i,a){if(t>r||t3?0===e||e===BigInt(0)?">= 0".concat(s," and < 2").concat(s," ** ").concat(8*(a+1)).concat(s):">= -(2".concat(s," ** ").concat(8*(a+1)-1).concat(s,") and < 2 ** ")+"".concat(8*(a+1)-1).concat(s):">= ".concat(e).concat(s," and <= ").concat(r).concat(s),new G.ERR_OUT_OF_RANGE("value",o,t)}!function(t,e,r){X(e,"offset"),(void 0===t[e]||void 0===t[e+r])&&$(e,t.length-(r+1))}(n,i,a)}function X(t,e){if("number"!=typeof t)throw new G.ERR_INVALID_ARG_TYPE(e,"number",t)}function $(t,e,r){throw Math.floor(t)!==t?(X(t,r),new G.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new G.ERR_BUFFER_OUT_OF_BOUNDS:new G.ERR_OUT_OF_RANGE(r||"offset",">= ".concat(r?1:0," and <= ").concat(e),t)}W("ERR_BUFFER_OUT_OF_BOUNDS",(function(t){return t?"".concat(t," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"}),RangeError),W("ERR_INVALID_ARG_TYPE",(function(t,e){return'The "'.concat(t,'" argument must be of type number. Received type ').concat(l(e))}),TypeError),W("ERR_OUT_OF_RANGE",(function(t,e,r){var n='The value of "'.concat(t,'" is out of range.'),i=r;return Number.isInteger(r)&&Math.abs(r)>Math.pow(2,32)?i=Z(String(r)):"bigint"==typeof r&&(i=String(r),(r>Math.pow(BigInt(2),BigInt(32))||r<-Math.pow(BigInt(2),BigInt(32)))&&(i=Z(i)),i+="n"),n+" It must be ".concat(e,". Received ").concat(i)}),RangeError);var K=/[^+/0-9A-Za-z-_]/g;function J(t,e){e=e||1/0;for(var r,n=t.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(e-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;a.push(r)}else if(r<2048){if((e-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function Q(t){return c.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(K,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function tt(t,e,r,n){var i;for(i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}function et(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function rt(t){return t!=t}var nt=function(){for(var t="0123456789abcdef",e=new Array(256),r=0;r<16;++r)for(var n=16*r,i=0;i<16;++i)e[n+i]=t[r]+t[i];return e}();function it(t){return typeof BigInt>"u"?at:t}function at(){throw new Error("BigInt not supported")}},9216:function(t){t.exports=i,t.exports.isMobile=i,t.exports.default=i;var e=/(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,r=/CrOS/,n=/android|ipad|playbook|silk/i;function i(t){t||(t={});var i=t.ua;if(!i&&typeof navigator<"u"&&(i=navigator.userAgent),i&&i.headers&&"string"==typeof i.headers["user-agent"]&&(i=i.headers["user-agent"]),"string"!=typeof i)return!1;var a=e.test(i)&&!r.test(i)||!!t.tablet&&n.test(i);return!a&&t.tablet&&t.featureDetect&&navigator&&navigator.maxTouchPoints>1&&-1!==i.indexOf("Macintosh")&&-1!==i.indexOf("Safari")&&(a=!0),a}},6296:function(t,e,r){t.exports=function(t){var e=(t=t||{}).eye||[0,0,1],r=t.center||[0,0,0],s=t.up||[0,1,0],l=t.distanceLimits||[0,1/0],c=t.mode||"turntable",u=n(),h=i(),p=a();return u.setDistanceLimits(l[0],l[1]),u.lookAt(0,e,r,s),h.setDistanceLimits(l[0],l[1]),h.lookAt(0,e,r,s),p.setDistanceLimits(l[0],l[1]),p.lookAt(0,e,r,s),new o({turntable:u,orbit:h,matrix:p},c)};var n=r(7261),i=r(9977),a=r(1811);function o(t,e){this._controllerNames=Object.keys(t),this._controllerList=this._controllerNames.map((function(e){return t[e]})),this._mode=e,this._active=t[e],this._active||(this._mode="turntable",this._active=t.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var s=o.prototype;s.flush=function(t){for(var e=this._controllerList,r=0;r"u"?r(1538):WeakMap,i=r(2762),a=r(8116),o=new n;t.exports=function(t){var e=o.get(t),r=e&&(e._triangleBuffer.handle||e._triangleBuffer.buffer);if(!r||!t.isBuffer(r)){var n=i(t,new Float32Array([-1,-1,-1,4,4,-1]));(e=a(t,[{buffer:n,type:t.FLOAT,size:2}]))._triangleBuffer=n,o.set(t,e)}e.bind(),t.drawArrays(t.TRIANGLES,0,3),e.unbind()}},1085:function(t,e,r){var n=r(1371);t.exports=function(t,e,r){e="number"==typeof e?e:1,r=r||": ";var i=t.split(/\r?\n/),a=String(i.length+e-1).length;return i.map((function(t,i){var o=i+e,s=String(o).length;return n(o,a-s)+r+t})).join("\n")}},3952:function(t,e,r){t.exports=function(t){var e=t.length;if(0===e)return[];if(1===e)return[0];for(var r=t[0].length,n=[t[0]],a=[0],o=1;o0?o-4:o;for(r=0;r>16&255,c[u++]=e>>8&255,c[u++]=255&e;return 2===l&&(e=n[t.charCodeAt(r)]<<2|n[t.charCodeAt(r+1)]>>4,c[u++]=255&e),1===l&&(e=n[t.charCodeAt(r)]<<10|n[t.charCodeAt(r+1)]<<4|n[t.charCodeAt(r+2)]>>2,c[u++]=e>>8&255,c[u++]=255&e),c},e.fromByteArray=function(t){for(var e,n=t.length,i=n%3,a=[],o=16383,s=0,l=n-i;sl?l:s+o));return 1===i?(e=t[n-1],a.push(r[e>>2]+r[e<<4&63]+"==")):2===i&&(e=(t[n-2]<<8)+t[n-1],a.push(r[e>>10]+r[e>>4&63]+r[e<<2&63]+"=")),a.join("")};for(var r=[],n=[],i=typeof Uint8Array<"u"?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)r[o]=a[o],n[a.charCodeAt(o)]=o;function s(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function l(t){return r[t>>18&63]+r[t>>12&63]+r[t>>6&63]+r[63&t]}function c(t,e,r){for(var n,i=[],a=e;a0?c=c.ushln(h):h<0&&(u=u.ushln(-h)),s(c,u)}},6330:function(t,e,r){var n=r(1533);t.exports=function(t){return Array.isArray(t)&&2===t.length&&n(t[0])&&n(t[1])}},5716:function(t,e,r){var n=r(6859);t.exports=function(t){return t.cmp(new n(0))}},1369:function(t,e,r){var n=r(5716);t.exports=function(t){var e=t.length,r=t.words,i=0;if(1===e)i=r[0];else if(2===e)i=r[0]+67108864*r[1];else for(var a=0;a20?52:r+32}},1533:function(t,e,r){r(6859),t.exports=function(t){return t&&"object"==typeof t&&!!t.words}},2651:function(t,e,r){var n=r(6859),i=r(2361);t.exports=function(t){var e=i.exponent(t);return e<52?new n(t):new n(t*Math.pow(2,52-e)).ushln(e-52)}},869:function(t,e,r){var n=r(2651),i=r(5716);t.exports=function(t,e){var r=i(t),a=i(e);if(0===r)return[n(0),n(1)];if(0===a)return[n(0),n(0)];a<0&&(t=t.neg(),e=e.neg());var o=t.gcd(e);return o.cmpn(1)?[t.div(o),e.div(o)]:[t,e]}},6768:function(t,e,r){var n=r(6859);t.exports=function(t){return new n(t)}},6504:function(t,e,r){var n=r(869);t.exports=function(t,e){return n(t[0].mul(e[0]),t[1].mul(e[1]))}},7721:function(t,e,r){var n=r(5716);t.exports=function(t){return n(t[0])*n(t[1])}},5572:function(t,e,r){var n=r(869);t.exports=function(t,e){return n(t[0].mul(e[1]).sub(t[1].mul(e[0])),t[1].mul(e[1]))}},946:function(t,e,r){var n=r(1369),i=r(4025);t.exports=function(t){var e=t[0],r=t[1];if(0===e.cmpn(0))return 0;var a=e.abs().divmod(r.abs()),o=a.div,s=n(o),l=a.mod,c=e.negative!==r.negative?-1:1;if(0===l.cmpn(0))return c*s;if(s){var u=i(s)+4;return c*(s+(p=n(l.ushln(u).divRound(r)))*Math.pow(2,-u))}var h=r.bitLength()-l.bitLength()+53,p=n(l.ushln(h).divRound(r));return h<1023?c*p*Math.pow(2,-h):c*(p*=Math.pow(2,-1023))*Math.pow(2,1023-h)}},2478:function(t){function e(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>=0?(a=o,i=o-1):n=o+1}return a}function r(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>0?(a=o,i=o-1):n=o+1}return a}function n(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<0?(a=o,n=o+1):i=o-1}return a}function i(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<=0?(a=o,n=o+1):i=o-1}return a}function a(t,e,r,n,i){for(;n<=i;){var a=n+i>>>1,o=t[a],s=void 0!==r?r(o,e):o-e;if(0===s)return a;s<=0?n=a+1:i=a-1}return-1}function o(t,e,r,n,i,a){return"function"==typeof r?a(t,e,r,void 0===n?0:0|n,void 0===i?t.length-1:0|i):a(t,e,void 0,void 0===r?0:0|r,void 0===n?t.length-1:0|n)}t.exports={ge:function(t,r,n,i,a){return o(t,r,n,i,a,e)},gt:function(t,e,n,i,a){return o(t,e,n,i,a,r)},lt:function(t,e,r,i,a){return o(t,e,r,i,a,n)},le:function(t,e,r,n,a){return o(t,e,r,n,a,i)},eq:function(t,e,r,n,i){return o(t,e,r,n,i,a)}}},8828:function(t,e){function r(t){var e=32;return(t&=-t)&&e--,65535&t&&(e-=16),16711935&t&&(e-=8),252645135&t&&(e-=4),858993459&t&&(e-=2),1431655765&t&&(e-=1),e}e.INT_BITS=32,e.INT_MAX=2147483647,e.INT_MIN=-1<<31,e.sign=function(t){return(t>0)-(t<0)},e.abs=function(t){var e=t>>31;return(t^e)-e},e.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},e.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},e.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},e.countTrailingZeros=r,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,1+((t|=t>>>8)|t>>>16)},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var n=new Array(256);(function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|n[t>>>16&255]<<8|n[t>>>24&255]},e.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},e.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},e.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},e.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},e.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>r(t)+1}},6859:function(t,e,r){!function(t,e){function n(t,e){if(!t)throw new Error(e||"Assertion failed")}function i(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}function a(t,e,r){if(a.isBN(t))return t;this.negative=0,this.words=null,this.length=0,this.red=null,null!==t&&(("le"===e||"be"===e)&&(r=e,e=10),this._init(t||0,e||10,r||"be"))}var o;"object"==typeof t?t.exports=a:e.BN=a,a.BN=a,a.wordSize=26;try{o=typeof window<"u"&&typeof window.Buffer<"u"?window.Buffer:r(7790).Buffer}catch{}function s(t,e){var r=t.charCodeAt(e);return r>=65&&r<=70?r-55:r>=97&&r<=102?r-87:r-48&15}function l(t,e,r){var n=s(t,r);return r-1>=e&&(n|=s(t,r-1)<<4),n}function c(t,e,r,n){for(var i=0,a=Math.min(t.length,r),o=e;o=49?s-49+10:s>=17?s-17+10:s}return i}a.isBN=function(t){return t instanceof a||null!==t&&"object"==typeof t&&t.constructor.wordSize===a.wordSize&&Array.isArray(t.words)},a.max=function(t,e){return t.cmp(e)>0?t:e},a.min=function(t,e){return t.cmp(e)<0?t:e},a.prototype._init=function(t,e,r){if("number"==typeof t)return this._initNumber(t,e,r);if("object"==typeof t)return this._initArray(t,e,r);"hex"===e&&(e=16),n(e===(0|e)&&e>=2&&e<=36);var i=0;"-"===(t=t.toString().replace(/\s+/g,""))[0]&&(i++,this.negative=1),i=0;i-=3)o=t[i]|t[i-1]<<8|t[i-2]<<16,this.words[a]|=o<>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);else if("le"===r)for(i=0,a=0;i>>26-s&67108863,(s+=24)>=26&&(s-=26,a++);return this.strip()},a.prototype._parseHex=function(t,e,r){this.length=Math.ceil((t.length-e)/6),this.words=new Array(this.length);for(var n=0;n=e;n-=2)i=l(t,e,n)<=18?(a-=18,o+=1,this.words[o]|=i>>>26):a+=8;else for(n=(t.length-e)%2==0?e+1:e;n=18?(a-=18,o+=1,this.words[o]|=i>>>26):a+=8;this.strip()},a.prototype._parseBase=function(t,e,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=e)n++;n--,i=i/e|0;for(var a=t.length-r,o=a%n,s=Math.min(a,a-o)+r,l=0,u=r;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},a.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},a.prototype.inspect=function(){return(this.red?""};var u=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],h=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],p=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function f(t,e,r){r.negative=e.negative^t.negative;var n=t.length+e.length|0;r.length=n,n=n-1|0;var i=0|t.words[0],a=0|e.words[0],o=i*a,s=67108863&o,l=o/67108864|0;r.words[0]=s;for(var c=1;c>>26,h=67108863&l,p=Math.min(c,e.length-1),f=Math.max(0,c-t.length+1);f<=p;f++){var d=c-f|0;u+=(o=(i=0|t.words[d])*(a=0|e.words[f])+h)/67108864|0,h=67108863&o}r.words[c]=0|h,l=0|u}return 0!==l?r.words[c]=0|l:r.length--,r.strip()}a.prototype.toString=function(t,e){var r;if(e=0|e||1,16===(t=t||10)||"hex"===t){r="";for(var i=0,a=0,o=0;o>>24-i&16777215)||o!==this.length-1?u[6-l.length]+l+r:l+r,(i+=2)>=26&&(i-=26,o--)}for(0!==a&&(r=a.toString(16)+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(t===(0|t)&&t>=2&&t<=36){var c=h[t],f=p[t];r="";var d=this.clone();for(d.negative=0;!d.isZero();){var m=d.modn(f).toString(t);r=(d=d.idivn(f)).isZero()?m+r:u[c-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%e!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},a.prototype.toNumber=function(){var t=this.words[0];return 2===this.length?t+=67108864*this.words[1]:3===this.length&&1===this.words[2]?t+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-t:t},a.prototype.toJSON=function(){return this.toString(16)},a.prototype.toBuffer=function(t,e){return n(typeof o<"u"),this.toArrayLike(o,t,e)},a.prototype.toArray=function(t,e){return this.toArrayLike(Array,t,e)},a.prototype.toArrayLike=function(t,e,r){var i=this.byteLength(),a=r||Math.max(1,i);n(i<=a,"byte array longer than desired length"),n(a>0,"Requested array length <= 0"),this.strip();var o,s,l="le"===e,c=new t(a),u=this.clone();if(l){for(s=0;!u.isZero();s++)o=u.andln(255),u.iushrn(8),c[s]=o;for(;s=4096&&(r+=13,e>>>=13),e>=64&&(r+=7,e>>>=7),e>=8&&(r+=4,e>>>=4),e>=2&&(r+=2,e>>>=2),r+e},a.prototype._zeroBits=function(t){if(0===t)return 26;var e=t,r=0;return 8191&e||(r+=13,e>>>=13),127&e||(r+=7,e>>>=7),15&e||(r+=4,e>>>=4),3&e||(r+=2,e>>>=2),1&e||r++,r},a.prototype.bitLength=function(){var t=this.words[this.length-1],e=this._countBits(t);return 26*(this.length-1)+e},a.prototype.zeroBits=function(){if(this.isZero())return 0;for(var t=0,e=0;et.length?this.clone().ior(t):t.clone().ior(this)},a.prototype.uor=function(t){return this.length>t.length?this.clone().iuor(t):t.clone().iuor(this)},a.prototype.iuand=function(t){var e;e=this.length>t.length?t:this;for(var r=0;rt.length?this.clone().iand(t):t.clone().iand(this)},a.prototype.uand=function(t){return this.length>t.length?this.clone().iuand(t):t.clone().iuand(this)},a.prototype.iuxor=function(t){var e,r;this.length>t.length?(e=this,r=t):(e=t,r=this);for(var n=0;nt.length?this.clone().ixor(t):t.clone().ixor(this)},a.prototype.uxor=function(t){return this.length>t.length?this.clone().iuxor(t):t.clone().iuxor(this)},a.prototype.inotn=function(t){n("number"==typeof t&&t>=0);var e=0|Math.ceil(t/26),r=t%26;this._expand(e),r>0&&e--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},a.prototype.notn=function(t){return this.clone().inotn(t)},a.prototype.setn=function(t,e){n("number"==typeof t&&t>=0);var r=t/26|0,i=t%26;return this._expand(r+1),this.words[r]=e?this.words[r]|1<t.length?(r=this,n=t):(r=t,n=this);for(var i=0,a=0;a>>26;for(;0!==i&&a>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;at.length?this.clone().iadd(t):t.clone().iadd(this)},a.prototype.isub=function(t){if(0!==t.negative){t.negative=0;var e=this.iadd(t);return t.negative=1,e._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(t),this.negative=1,this._normSign();var r,n,i=this.cmp(t);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=t):(r=t,n=this);for(var a=0,o=0;o>26,this.words[o]=67108863&e;for(;0!==a&&o>26,this.words[o]=67108863&e;if(0===a&&o>>13,f=0|o[1],d=8191&f,m=f>>>13,g=0|o[2],y=8191&g,v=g>>>13,x=0|o[3],_=8191&x,b=x>>>13,w=0|o[4],T=8191&w,A=w>>>13,k=0|o[5],M=8191&k,S=k>>>13,E=0|o[6],C=8191&E,I=E>>>13,L=0|o[7],P=8191&L,z=L>>>13,D=0|o[8],O=8191&D,R=D>>>13,F=0|o[9],B=8191&F,j=F>>>13,N=0|s[0],U=8191&N,V=N>>>13,q=0|s[1],H=8191&q,G=q>>>13,W=0|s[2],Z=8191&W,Y=W>>>13,X=0|s[3],$=8191&X,K=X>>>13,J=0|s[4],Q=8191&J,tt=J>>>13,et=0|s[5],rt=8191&et,nt=et>>>13,it=0|s[6],at=8191&it,ot=it>>>13,st=0|s[7],lt=8191&st,ct=st>>>13,ut=0|s[8],ht=8191&ut,pt=ut>>>13,ft=0|s[9],dt=8191&ft,mt=ft>>>13;r.negative=t.negative^e.negative,r.length=19;var gt=(c+(n=Math.imul(h,U))|0)+((8191&(i=(i=Math.imul(h,V))+Math.imul(p,U)|0))<<13)|0;c=((a=Math.imul(p,V))+(i>>>13)|0)+(gt>>>26)|0,gt&=67108863,n=Math.imul(d,U),i=(i=Math.imul(d,V))+Math.imul(m,U)|0,a=Math.imul(m,V);var yt=(c+(n=n+Math.imul(h,H)|0)|0)+((8191&(i=(i=i+Math.imul(h,G)|0)+Math.imul(p,H)|0))<<13)|0;c=((a=a+Math.imul(p,G)|0)+(i>>>13)|0)+(yt>>>26)|0,yt&=67108863,n=Math.imul(y,U),i=(i=Math.imul(y,V))+Math.imul(v,U)|0,a=Math.imul(v,V),n=n+Math.imul(d,H)|0,i=(i=i+Math.imul(d,G)|0)+Math.imul(m,H)|0,a=a+Math.imul(m,G)|0;var vt=(c+(n=n+Math.imul(h,Z)|0)|0)+((8191&(i=(i=i+Math.imul(h,Y)|0)+Math.imul(p,Z)|0))<<13)|0;c=((a=a+Math.imul(p,Y)|0)+(i>>>13)|0)+(vt>>>26)|0,vt&=67108863,n=Math.imul(_,U),i=(i=Math.imul(_,V))+Math.imul(b,U)|0,a=Math.imul(b,V),n=n+Math.imul(y,H)|0,i=(i=i+Math.imul(y,G)|0)+Math.imul(v,H)|0,a=a+Math.imul(v,G)|0,n=n+Math.imul(d,Z)|0,i=(i=i+Math.imul(d,Y)|0)+Math.imul(m,Z)|0,a=a+Math.imul(m,Y)|0;var xt=(c+(n=n+Math.imul(h,$)|0)|0)+((8191&(i=(i=i+Math.imul(h,K)|0)+Math.imul(p,$)|0))<<13)|0;c=((a=a+Math.imul(p,K)|0)+(i>>>13)|0)+(xt>>>26)|0,xt&=67108863,n=Math.imul(T,U),i=(i=Math.imul(T,V))+Math.imul(A,U)|0,a=Math.imul(A,V),n=n+Math.imul(_,H)|0,i=(i=i+Math.imul(_,G)|0)+Math.imul(b,H)|0,a=a+Math.imul(b,G)|0,n=n+Math.imul(y,Z)|0,i=(i=i+Math.imul(y,Y)|0)+Math.imul(v,Z)|0,a=a+Math.imul(v,Y)|0,n=n+Math.imul(d,$)|0,i=(i=i+Math.imul(d,K)|0)+Math.imul(m,$)|0,a=a+Math.imul(m,K)|0;var _t=(c+(n=n+Math.imul(h,Q)|0)|0)+((8191&(i=(i=i+Math.imul(h,tt)|0)+Math.imul(p,Q)|0))<<13)|0;c=((a=a+Math.imul(p,tt)|0)+(i>>>13)|0)+(_t>>>26)|0,_t&=67108863,n=Math.imul(M,U),i=(i=Math.imul(M,V))+Math.imul(S,U)|0,a=Math.imul(S,V),n=n+Math.imul(T,H)|0,i=(i=i+Math.imul(T,G)|0)+Math.imul(A,H)|0,a=a+Math.imul(A,G)|0,n=n+Math.imul(_,Z)|0,i=(i=i+Math.imul(_,Y)|0)+Math.imul(b,Z)|0,a=a+Math.imul(b,Y)|0,n=n+Math.imul(y,$)|0,i=(i=i+Math.imul(y,K)|0)+Math.imul(v,$)|0,a=a+Math.imul(v,K)|0,n=n+Math.imul(d,Q)|0,i=(i=i+Math.imul(d,tt)|0)+Math.imul(m,Q)|0,a=a+Math.imul(m,tt)|0;var bt=(c+(n=n+Math.imul(h,rt)|0)|0)+((8191&(i=(i=i+Math.imul(h,nt)|0)+Math.imul(p,rt)|0))<<13)|0;c=((a=a+Math.imul(p,nt)|0)+(i>>>13)|0)+(bt>>>26)|0,bt&=67108863,n=Math.imul(C,U),i=(i=Math.imul(C,V))+Math.imul(I,U)|0,a=Math.imul(I,V),n=n+Math.imul(M,H)|0,i=(i=i+Math.imul(M,G)|0)+Math.imul(S,H)|0,a=a+Math.imul(S,G)|0,n=n+Math.imul(T,Z)|0,i=(i=i+Math.imul(T,Y)|0)+Math.imul(A,Z)|0,a=a+Math.imul(A,Y)|0,n=n+Math.imul(_,$)|0,i=(i=i+Math.imul(_,K)|0)+Math.imul(b,$)|0,a=a+Math.imul(b,K)|0,n=n+Math.imul(y,Q)|0,i=(i=i+Math.imul(y,tt)|0)+Math.imul(v,Q)|0,a=a+Math.imul(v,tt)|0,n=n+Math.imul(d,rt)|0,i=(i=i+Math.imul(d,nt)|0)+Math.imul(m,rt)|0,a=a+Math.imul(m,nt)|0;var wt=(c+(n=n+Math.imul(h,at)|0)|0)+((8191&(i=(i=i+Math.imul(h,ot)|0)+Math.imul(p,at)|0))<<13)|0;c=((a=a+Math.imul(p,ot)|0)+(i>>>13)|0)+(wt>>>26)|0,wt&=67108863,n=Math.imul(P,U),i=(i=Math.imul(P,V))+Math.imul(z,U)|0,a=Math.imul(z,V),n=n+Math.imul(C,H)|0,i=(i=i+Math.imul(C,G)|0)+Math.imul(I,H)|0,a=a+Math.imul(I,G)|0,n=n+Math.imul(M,Z)|0,i=(i=i+Math.imul(M,Y)|0)+Math.imul(S,Z)|0,a=a+Math.imul(S,Y)|0,n=n+Math.imul(T,$)|0,i=(i=i+Math.imul(T,K)|0)+Math.imul(A,$)|0,a=a+Math.imul(A,K)|0,n=n+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,tt)|0)+Math.imul(b,Q)|0,a=a+Math.imul(b,tt)|0,n=n+Math.imul(y,rt)|0,i=(i=i+Math.imul(y,nt)|0)+Math.imul(v,rt)|0,a=a+Math.imul(v,nt)|0,n=n+Math.imul(d,at)|0,i=(i=i+Math.imul(d,ot)|0)+Math.imul(m,at)|0,a=a+Math.imul(m,ot)|0;var Tt=(c+(n=n+Math.imul(h,lt)|0)|0)+((8191&(i=(i=i+Math.imul(h,ct)|0)+Math.imul(p,lt)|0))<<13)|0;c=((a=a+Math.imul(p,ct)|0)+(i>>>13)|0)+(Tt>>>26)|0,Tt&=67108863,n=Math.imul(O,U),i=(i=Math.imul(O,V))+Math.imul(R,U)|0,a=Math.imul(R,V),n=n+Math.imul(P,H)|0,i=(i=i+Math.imul(P,G)|0)+Math.imul(z,H)|0,a=a+Math.imul(z,G)|0,n=n+Math.imul(C,Z)|0,i=(i=i+Math.imul(C,Y)|0)+Math.imul(I,Z)|0,a=a+Math.imul(I,Y)|0,n=n+Math.imul(M,$)|0,i=(i=i+Math.imul(M,K)|0)+Math.imul(S,$)|0,a=a+Math.imul(S,K)|0,n=n+Math.imul(T,Q)|0,i=(i=i+Math.imul(T,tt)|0)+Math.imul(A,Q)|0,a=a+Math.imul(A,tt)|0,n=n+Math.imul(_,rt)|0,i=(i=i+Math.imul(_,nt)|0)+Math.imul(b,rt)|0,a=a+Math.imul(b,nt)|0,n=n+Math.imul(y,at)|0,i=(i=i+Math.imul(y,ot)|0)+Math.imul(v,at)|0,a=a+Math.imul(v,ot)|0,n=n+Math.imul(d,lt)|0,i=(i=i+Math.imul(d,ct)|0)+Math.imul(m,lt)|0,a=a+Math.imul(m,ct)|0;var At=(c+(n=n+Math.imul(h,ht)|0)|0)+((8191&(i=(i=i+Math.imul(h,pt)|0)+Math.imul(p,ht)|0))<<13)|0;c=((a=a+Math.imul(p,pt)|0)+(i>>>13)|0)+(At>>>26)|0,At&=67108863,n=Math.imul(B,U),i=(i=Math.imul(B,V))+Math.imul(j,U)|0,a=Math.imul(j,V),n=n+Math.imul(O,H)|0,i=(i=i+Math.imul(O,G)|0)+Math.imul(R,H)|0,a=a+Math.imul(R,G)|0,n=n+Math.imul(P,Z)|0,i=(i=i+Math.imul(P,Y)|0)+Math.imul(z,Z)|0,a=a+Math.imul(z,Y)|0,n=n+Math.imul(C,$)|0,i=(i=i+Math.imul(C,K)|0)+Math.imul(I,$)|0,a=a+Math.imul(I,K)|0,n=n+Math.imul(M,Q)|0,i=(i=i+Math.imul(M,tt)|0)+Math.imul(S,Q)|0,a=a+Math.imul(S,tt)|0,n=n+Math.imul(T,rt)|0,i=(i=i+Math.imul(T,nt)|0)+Math.imul(A,rt)|0,a=a+Math.imul(A,nt)|0,n=n+Math.imul(_,at)|0,i=(i=i+Math.imul(_,ot)|0)+Math.imul(b,at)|0,a=a+Math.imul(b,ot)|0,n=n+Math.imul(y,lt)|0,i=(i=i+Math.imul(y,ct)|0)+Math.imul(v,lt)|0,a=a+Math.imul(v,ct)|0,n=n+Math.imul(d,ht)|0,i=(i=i+Math.imul(d,pt)|0)+Math.imul(m,ht)|0,a=a+Math.imul(m,pt)|0;var kt=(c+(n=n+Math.imul(h,dt)|0)|0)+((8191&(i=(i=i+Math.imul(h,mt)|0)+Math.imul(p,dt)|0))<<13)|0;c=((a=a+Math.imul(p,mt)|0)+(i>>>13)|0)+(kt>>>26)|0,kt&=67108863,n=Math.imul(B,H),i=(i=Math.imul(B,G))+Math.imul(j,H)|0,a=Math.imul(j,G),n=n+Math.imul(O,Z)|0,i=(i=i+Math.imul(O,Y)|0)+Math.imul(R,Z)|0,a=a+Math.imul(R,Y)|0,n=n+Math.imul(P,$)|0,i=(i=i+Math.imul(P,K)|0)+Math.imul(z,$)|0,a=a+Math.imul(z,K)|0,n=n+Math.imul(C,Q)|0,i=(i=i+Math.imul(C,tt)|0)+Math.imul(I,Q)|0,a=a+Math.imul(I,tt)|0,n=n+Math.imul(M,rt)|0,i=(i=i+Math.imul(M,nt)|0)+Math.imul(S,rt)|0,a=a+Math.imul(S,nt)|0,n=n+Math.imul(T,at)|0,i=(i=i+Math.imul(T,ot)|0)+Math.imul(A,at)|0,a=a+Math.imul(A,ot)|0,n=n+Math.imul(_,lt)|0,i=(i=i+Math.imul(_,ct)|0)+Math.imul(b,lt)|0,a=a+Math.imul(b,ct)|0,n=n+Math.imul(y,ht)|0,i=(i=i+Math.imul(y,pt)|0)+Math.imul(v,ht)|0,a=a+Math.imul(v,pt)|0;var Mt=(c+(n=n+Math.imul(d,dt)|0)|0)+((8191&(i=(i=i+Math.imul(d,mt)|0)+Math.imul(m,dt)|0))<<13)|0;c=((a=a+Math.imul(m,mt)|0)+(i>>>13)|0)+(Mt>>>26)|0,Mt&=67108863,n=Math.imul(B,Z),i=(i=Math.imul(B,Y))+Math.imul(j,Z)|0,a=Math.imul(j,Y),n=n+Math.imul(O,$)|0,i=(i=i+Math.imul(O,K)|0)+Math.imul(R,$)|0,a=a+Math.imul(R,K)|0,n=n+Math.imul(P,Q)|0,i=(i=i+Math.imul(P,tt)|0)+Math.imul(z,Q)|0,a=a+Math.imul(z,tt)|0,n=n+Math.imul(C,rt)|0,i=(i=i+Math.imul(C,nt)|0)+Math.imul(I,rt)|0,a=a+Math.imul(I,nt)|0,n=n+Math.imul(M,at)|0,i=(i=i+Math.imul(M,ot)|0)+Math.imul(S,at)|0,a=a+Math.imul(S,ot)|0,n=n+Math.imul(T,lt)|0,i=(i=i+Math.imul(T,ct)|0)+Math.imul(A,lt)|0,a=a+Math.imul(A,ct)|0,n=n+Math.imul(_,ht)|0,i=(i=i+Math.imul(_,pt)|0)+Math.imul(b,ht)|0,a=a+Math.imul(b,pt)|0;var St=(c+(n=n+Math.imul(y,dt)|0)|0)+((8191&(i=(i=i+Math.imul(y,mt)|0)+Math.imul(v,dt)|0))<<13)|0;c=((a=a+Math.imul(v,mt)|0)+(i>>>13)|0)+(St>>>26)|0,St&=67108863,n=Math.imul(B,$),i=(i=Math.imul(B,K))+Math.imul(j,$)|0,a=Math.imul(j,K),n=n+Math.imul(O,Q)|0,i=(i=i+Math.imul(O,tt)|0)+Math.imul(R,Q)|0,a=a+Math.imul(R,tt)|0,n=n+Math.imul(P,rt)|0,i=(i=i+Math.imul(P,nt)|0)+Math.imul(z,rt)|0,a=a+Math.imul(z,nt)|0,n=n+Math.imul(C,at)|0,i=(i=i+Math.imul(C,ot)|0)+Math.imul(I,at)|0,a=a+Math.imul(I,ot)|0,n=n+Math.imul(M,lt)|0,i=(i=i+Math.imul(M,ct)|0)+Math.imul(S,lt)|0,a=a+Math.imul(S,ct)|0,n=n+Math.imul(T,ht)|0,i=(i=i+Math.imul(T,pt)|0)+Math.imul(A,ht)|0,a=a+Math.imul(A,pt)|0;var Et=(c+(n=n+Math.imul(_,dt)|0)|0)+((8191&(i=(i=i+Math.imul(_,mt)|0)+Math.imul(b,dt)|0))<<13)|0;c=((a=a+Math.imul(b,mt)|0)+(i>>>13)|0)+(Et>>>26)|0,Et&=67108863,n=Math.imul(B,Q),i=(i=Math.imul(B,tt))+Math.imul(j,Q)|0,a=Math.imul(j,tt),n=n+Math.imul(O,rt)|0,i=(i=i+Math.imul(O,nt)|0)+Math.imul(R,rt)|0,a=a+Math.imul(R,nt)|0,n=n+Math.imul(P,at)|0,i=(i=i+Math.imul(P,ot)|0)+Math.imul(z,at)|0,a=a+Math.imul(z,ot)|0,n=n+Math.imul(C,lt)|0,i=(i=i+Math.imul(C,ct)|0)+Math.imul(I,lt)|0,a=a+Math.imul(I,ct)|0,n=n+Math.imul(M,ht)|0,i=(i=i+Math.imul(M,pt)|0)+Math.imul(S,ht)|0,a=a+Math.imul(S,pt)|0;var Ct=(c+(n=n+Math.imul(T,dt)|0)|0)+((8191&(i=(i=i+Math.imul(T,mt)|0)+Math.imul(A,dt)|0))<<13)|0;c=((a=a+Math.imul(A,mt)|0)+(i>>>13)|0)+(Ct>>>26)|0,Ct&=67108863,n=Math.imul(B,rt),i=(i=Math.imul(B,nt))+Math.imul(j,rt)|0,a=Math.imul(j,nt),n=n+Math.imul(O,at)|0,i=(i=i+Math.imul(O,ot)|0)+Math.imul(R,at)|0,a=a+Math.imul(R,ot)|0,n=n+Math.imul(P,lt)|0,i=(i=i+Math.imul(P,ct)|0)+Math.imul(z,lt)|0,a=a+Math.imul(z,ct)|0,n=n+Math.imul(C,ht)|0,i=(i=i+Math.imul(C,pt)|0)+Math.imul(I,ht)|0,a=a+Math.imul(I,pt)|0;var It=(c+(n=n+Math.imul(M,dt)|0)|0)+((8191&(i=(i=i+Math.imul(M,mt)|0)+Math.imul(S,dt)|0))<<13)|0;c=((a=a+Math.imul(S,mt)|0)+(i>>>13)|0)+(It>>>26)|0,It&=67108863,n=Math.imul(B,at),i=(i=Math.imul(B,ot))+Math.imul(j,at)|0,a=Math.imul(j,ot),n=n+Math.imul(O,lt)|0,i=(i=i+Math.imul(O,ct)|0)+Math.imul(R,lt)|0,a=a+Math.imul(R,ct)|0,n=n+Math.imul(P,ht)|0,i=(i=i+Math.imul(P,pt)|0)+Math.imul(z,ht)|0,a=a+Math.imul(z,pt)|0;var Lt=(c+(n=n+Math.imul(C,dt)|0)|0)+((8191&(i=(i=i+Math.imul(C,mt)|0)+Math.imul(I,dt)|0))<<13)|0;c=((a=a+Math.imul(I,mt)|0)+(i>>>13)|0)+(Lt>>>26)|0,Lt&=67108863,n=Math.imul(B,lt),i=(i=Math.imul(B,ct))+Math.imul(j,lt)|0,a=Math.imul(j,ct),n=n+Math.imul(O,ht)|0,i=(i=i+Math.imul(O,pt)|0)+Math.imul(R,ht)|0,a=a+Math.imul(R,pt)|0;var Pt=(c+(n=n+Math.imul(P,dt)|0)|0)+((8191&(i=(i=i+Math.imul(P,mt)|0)+Math.imul(z,dt)|0))<<13)|0;c=((a=a+Math.imul(z,mt)|0)+(i>>>13)|0)+(Pt>>>26)|0,Pt&=67108863,n=Math.imul(B,ht),i=(i=Math.imul(B,pt))+Math.imul(j,ht)|0,a=Math.imul(j,pt);var zt=(c+(n=n+Math.imul(O,dt)|0)|0)+((8191&(i=(i=i+Math.imul(O,mt)|0)+Math.imul(R,dt)|0))<<13)|0;c=((a=a+Math.imul(R,mt)|0)+(i>>>13)|0)+(zt>>>26)|0,zt&=67108863;var Dt=(c+(n=Math.imul(B,dt))|0)+((8191&(i=(i=Math.imul(B,mt))+Math.imul(j,dt)|0))<<13)|0;return c=((a=Math.imul(j,mt))+(i>>>13)|0)+(Dt>>>26)|0,Dt&=67108863,l[0]=gt,l[1]=yt,l[2]=vt,l[3]=xt,l[4]=_t,l[5]=bt,l[6]=wt,l[7]=Tt,l[8]=At,l[9]=kt,l[10]=Mt,l[11]=St,l[12]=Et,l[13]=Ct,l[14]=It,l[15]=Lt,l[16]=Pt,l[17]=zt,l[18]=Dt,0!==c&&(l[19]=c,r.length++),r};function m(t,e,r){return(new g).mulp(t,e,r)}function g(t,e){this.x=t,this.y=e}Math.imul||(d=f),a.prototype.mulTo=function(t,e){var r,n=this.length+t.length;return r=10===this.length&&10===t.length?d(this,t,e):n<63?f(this,t,e):n<1024?function(t,e,r){r.negative=e.negative^t.negative,r.length=t.length+e.length;for(var n=0,i=0,a=0;a>>26)|0)>>>26,o&=67108863}r.words[a]=s,n=o,o=i}return 0!==n?r.words[a]=n:r.length--,r.strip()}(this,t,e):m(this,t,e),r},g.prototype.makeRBT=function(t){for(var e=new Array(t),r=a.prototype._countBits(t)-1,n=0;n>=1;return n},g.prototype.permute=function(t,e,r,n,i,a){for(var o=0;o>>=1)i++;return 1<>>=13,r[2*o+1]=8191&a,a>>>=13;for(o=2*e;o>=26,e+=i/67108864|0,e+=a>>>26,this.words[r]=67108863&a}return 0!==e&&(this.words[r]=e,this.length++),this},a.prototype.muln=function(t){return this.clone().imuln(t)},a.prototype.sqr=function(){return this.mul(this)},a.prototype.isqr=function(){return this.imul(this.clone())},a.prototype.pow=function(t){var e=function(t){for(var e=new Array(t.bitLength()),r=0;r>>i}return e}(t);if(0===e.length)return new a(1);for(var r=this,n=0;n=0);var e,r=t%26,i=(t-r)/26,a=67108863>>>26-r<<26-r;if(0!==r){var o=0;for(e=0;e>>26-r}o&&(this.words[e]=o,this.length++)}if(0!==i){for(e=this.length-1;e>=0;e--)this.words[e+i]=this.words[e];for(e=0;e=0),i=e?(e-e%26)/26:0;var a=t%26,o=Math.min((t-a)/26,this.length),s=67108863^67108863>>>a<o)for(this.length-=o,c=0;c=0&&(0!==u||c>=i);c--){var h=0|this.words[c];this.words[c]=u<<26-a|h>>>a,u=h&s}return l&&0!==u&&(l.words[l.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},a.prototype.ishrn=function(t,e,r){return n(0===this.negative),this.iushrn(t,e,r)},a.prototype.shln=function(t){return this.clone().ishln(t)},a.prototype.ushln=function(t){return this.clone().iushln(t)},a.prototype.shrn=function(t){return this.clone().ishrn(t)},a.prototype.ushrn=function(t){return this.clone().iushrn(t)},a.prototype.testn=function(t){n("number"==typeof t&&t>=0);var e=t%26,r=(t-e)/26,i=1<=0);var e=t%26,r=(t-e)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==e&&r++,this.length=Math.min(r,this.length),0!==e){var i=67108863^67108863>>>e<=67108864;e++)this.words[e]-=67108864,e===this.length-1?this.words[e+1]=1:this.words[e+1]++;return this.length=Math.max(this.length,e+1),this},a.prototype.isubn=function(t){if(n("number"==typeof t),n(t<67108864),t<0)return this.iaddn(-t);if(0!==this.negative)return this.negative=0,this.iaddn(t),this.negative=1,this;if(this.words[0]-=t,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var e=0;e>26)-(l/67108864|0),this.words[i+r]=67108863&o}for(;i>26,this.words[i+r]=67108863&o;if(0===s)return this.strip();for(n(-1===s),s=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},a.prototype._wordDiv=function(t,e){var r=(this.length,t.length),n=this.clone(),i=t,o=0|i.words[i.length-1];0!=(r=26-this._countBits(o))&&(i=i.ushln(r),n.iushln(r),o=0|i.words[i.length-1]);var s,l=n.length-i.length;if("mod"!==e){(s=new a(null)).length=l+1,s.words=new Array(s.length);for(var c=0;c=0;h--){var p=67108864*(0|n.words[i.length+h])+(0|n.words[i.length+h-1]);for(p=Math.min(p/o|0,67108863),n._ishlnsubmul(i,p,h);0!==n.negative;)p--,n.negative=0,n._ishlnsubmul(i,1,h),n.isZero()||(n.negative^=1);s&&(s.words[h]=p)}return s&&s.strip(),n.strip(),"div"!==e&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},a.prototype.divmod=function(t,e,r){return n(!t.isZero()),this.isZero()?{div:new a(0),mod:new a(0)}:0!==this.negative&&0===t.negative?(s=this.neg().divmod(t,e),"mod"!==e&&(i=s.div.neg()),"div"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.iadd(t)),{div:i,mod:o}):0===this.negative&&0!==t.negative?(s=this.divmod(t.neg(),e),"mod"!==e&&(i=s.div.neg()),{div:i,mod:s.mod}):this.negative&t.negative?(s=this.neg().divmod(t.neg(),e),"div"!==e&&(o=s.mod.neg(),r&&0!==o.negative&&o.isub(t)),{div:s.div,mod:o}):t.length>this.length||this.cmp(t)<0?{div:new a(0),mod:this}:1===t.length?"div"===e?{div:this.divn(t.words[0]),mod:null}:"mod"===e?{div:null,mod:new a(this.modn(t.words[0]))}:{div:this.divn(t.words[0]),mod:new a(this.modn(t.words[0]))}:this._wordDiv(t,e);var i,o,s},a.prototype.div=function(t){return this.divmod(t,"div",!1).div},a.prototype.mod=function(t){return this.divmod(t,"mod",!1).mod},a.prototype.umod=function(t){return this.divmod(t,"mod",!0).mod},a.prototype.divRound=function(t){var e=this.divmod(t);if(e.mod.isZero())return e.div;var r=0!==e.div.negative?e.mod.isub(t):e.mod,n=t.ushrn(1),i=t.andln(1),a=r.cmp(n);return a<0||1===i&&0===a?e.div:0!==e.div.negative?e.div.isubn(1):e.div.iaddn(1)},a.prototype.modn=function(t){n(t<=67108863);for(var e=(1<<26)%t,r=0,i=this.length-1;i>=0;i--)r=(e*r+(0|this.words[i]))%t;return r},a.prototype.idivn=function(t){n(t<=67108863);for(var e=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*e;this.words[r]=i/t|0,e=i%t}return this.strip()},a.prototype.divn=function(t){return this.clone().idivn(t)},a.prototype.egcd=function(t){n(0===t.negative),n(!t.isZero());var e=this,r=t.clone();e=0!==e.negative?e.umod(t):e.clone();for(var i=new a(1),o=new a(0),s=new a(0),l=new a(1),c=0;e.isEven()&&r.isEven();)e.iushrn(1),r.iushrn(1),++c;for(var u=r.clone(),h=e.clone();!e.isZero();){for(var p=0,f=1;!(e.words[0]&f)&&p<26;++p,f<<=1);if(p>0)for(e.iushrn(p);p-- >0;)(i.isOdd()||o.isOdd())&&(i.iadd(u),o.isub(h)),i.iushrn(1),o.iushrn(1);for(var d=0,m=1;!(r.words[0]&m)&&d<26;++d,m<<=1);if(d>0)for(r.iushrn(d);d-- >0;)(s.isOdd()||l.isOdd())&&(s.iadd(u),l.isub(h)),s.iushrn(1),l.iushrn(1);e.cmp(r)>=0?(e.isub(r),i.isub(s),o.isub(l)):(r.isub(e),s.isub(i),l.isub(o))}return{a:s,b:l,gcd:r.iushln(c)}},a.prototype._invmp=function(t){n(0===t.negative),n(!t.isZero());var e,r=this,i=t.clone();r=0!==r.negative?r.umod(t):r.clone();for(var o=new a(1),s=new a(0),l=i.clone();r.cmpn(1)>0&&i.cmpn(1)>0;){for(var c=0,u=1;!(r.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(r.iushrn(c);c-- >0;)o.isOdd()&&o.iadd(l),o.iushrn(1);for(var h=0,p=1;!(i.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(i.iushrn(h);h-- >0;)s.isOdd()&&s.iadd(l),s.iushrn(1);r.cmp(i)>=0?(r.isub(i),o.isub(s)):(i.isub(r),s.isub(o))}return(e=0===r.cmpn(1)?o:s).cmpn(0)<0&&e.iadd(t),e},a.prototype.gcd=function(t){if(this.isZero())return t.abs();if(t.isZero())return this.abs();var e=this.clone(),r=t.clone();e.negative=0,r.negative=0;for(var n=0;e.isEven()&&r.isEven();n++)e.iushrn(1),r.iushrn(1);for(;;){for(;e.isEven();)e.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=e.cmp(r);if(i<0){var a=e;e=r,r=a}else if(0===i||0===r.cmpn(1))break;e.isub(r)}return r.iushln(n)},a.prototype.invm=function(t){return this.egcd(t).a.umod(t)},a.prototype.isEven=function(){return!(1&this.words[0])},a.prototype.isOdd=function(){return!(1&~this.words[0])},a.prototype.andln=function(t){return this.words[0]&t},a.prototype.bincn=function(t){n("number"==typeof t);var e=t%26,r=(t-e)/26,i=1<>>26,s&=67108863,this.words[o]=s}return 0!==a&&(this.words[o]=a,this.length++),this},a.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},a.prototype.cmpn=function(t){var e,r=t<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)e=1;else{r&&(t=-t),n(t<=67108863,"Number is too big");var i=0|this.words[0];e=i===t?0:it.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|t.words[r];if(n!==i){ni&&(e=1);break}}return e},a.prototype.gtn=function(t){return 1===this.cmpn(t)},a.prototype.gt=function(t){return 1===this.cmp(t)},a.prototype.gten=function(t){return this.cmpn(t)>=0},a.prototype.gte=function(t){return this.cmp(t)>=0},a.prototype.ltn=function(t){return-1===this.cmpn(t)},a.prototype.lt=function(t){return-1===this.cmp(t)},a.prototype.lten=function(t){return this.cmpn(t)<=0},a.prototype.lte=function(t){return this.cmp(t)<=0},a.prototype.eqn=function(t){return 0===this.cmpn(t)},a.prototype.eq=function(t){return 0===this.cmp(t)},a.red=function(t){return new T(t)},a.prototype.toRed=function(t){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),t.convertTo(this)._forceRed(t)},a.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},a.prototype._forceRed=function(t){return this.red=t,this},a.prototype.forceRed=function(t){return n(!this.red,"Already a number in reduction context"),this._forceRed(t)},a.prototype.redAdd=function(t){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,t)},a.prototype.redIAdd=function(t){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,t)},a.prototype.redSub=function(t){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,t)},a.prototype.redISub=function(t){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,t)},a.prototype.redShl=function(t){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,t)},a.prototype.redMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.mul(this,t)},a.prototype.redIMul=function(t){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,t),this.red.imul(this,t)},a.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},a.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},a.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},a.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},a.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},a.prototype.redPow=function(t){return n(this.red&&!t.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,t)};var y={k256:null,p224:null,p192:null,p25519:null};function v(t,e){this.name=t,this.p=new a(e,16),this.n=this.p.bitLength(),this.k=new a(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function x(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function _(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function b(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function T(t){if("string"==typeof t){var e=a._prime(t);this.m=e.p,this.prime=e}else n(t.gtn(1),"modulus must be greater than 1"),this.m=t,this.prime=null}function A(t){T.call(this,t),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new a(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var t=new a(null);return t.words=new Array(Math.ceil(this.n/13)),t},v.prototype.ireduce=function(t){var e,r=t;do{this.split(r,this.tmp),e=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(e>this.n);var n=e0?r.isub(this.p):void 0!==r.strip?r.strip():r._strip(),r},v.prototype.split=function(t,e){t.iushrn(this.n,0,e)},v.prototype.imulK=function(t){return t.imul(this.k)},i(x,v),x.prototype.split=function(t,e){for(var r=4194303,n=Math.min(t.length,9),i=0;i>>22,a=o}a>>>=22,t.words[i-10]=a,0===a&&t.length>10?t.length-=10:t.length-=9},x.prototype.imulK=function(t){t.words[t.length]=0,t.words[t.length+1]=0,t.length+=2;for(var e=0,r=0;r>>=26,t.words[r]=i,e=n}return 0!==e&&(t.words[t.length++]=e),t},a._prime=function(t){if(y[t])return y[t];var e;if("k256"===t)e=new x;else if("p224"===t)e=new _;else if("p192"===t)e=new b;else{if("p25519"!==t)throw new Error("Unknown prime "+t);e=new w}return y[t]=e,e},T.prototype._verify1=function(t){n(0===t.negative,"red works only with positives"),n(t.red,"red works only with red numbers")},T.prototype._verify2=function(t,e){n(!(t.negative|e.negative),"red works only with positives"),n(t.red&&t.red===e.red,"red works only with red numbers")},T.prototype.imod=function(t){return this.prime?this.prime.ireduce(t)._forceRed(this):t.umod(this.m)._forceRed(this)},T.prototype.neg=function(t){return t.isZero()?t.clone():this.m.sub(t)._forceRed(this)},T.prototype.add=function(t,e){this._verify2(t,e);var r=t.add(e);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},T.prototype.iadd=function(t,e){this._verify2(t,e);var r=t.iadd(e);return r.cmp(this.m)>=0&&r.isub(this.m),r},T.prototype.sub=function(t,e){this._verify2(t,e);var r=t.sub(e);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},T.prototype.isub=function(t,e){this._verify2(t,e);var r=t.isub(e);return r.cmpn(0)<0&&r.iadd(this.m),r},T.prototype.shl=function(t,e){return this._verify1(t),this.imod(t.ushln(e))},T.prototype.imul=function(t,e){return this._verify2(t,e),this.imod(t.imul(e))},T.prototype.mul=function(t,e){return this._verify2(t,e),this.imod(t.mul(e))},T.prototype.isqr=function(t){return this.imul(t,t.clone())},T.prototype.sqr=function(t){return this.mul(t,t)},T.prototype.sqrt=function(t){if(t.isZero())return t.clone();var e=this.m.andln(3);if(n(e%2==1),3===e){var r=this.m.add(new a(1)).iushrn(2);return this.pow(t,r)}for(var i=this.m.subn(1),o=0;!i.isZero()&&0===i.andln(1);)o++,i.iushrn(1);n(!i.isZero());var s=new a(1).toRed(this),l=s.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new a(2*u*u).toRed(this);0!==this.pow(u,c).cmp(l);)u.redIAdd(l);for(var h=this.pow(u,i),p=this.pow(t,i.addn(1).iushrn(1)),f=this.pow(t,i),d=o;0!==f.cmp(s);){for(var m=f,g=0;0!==m.cmp(s);g++)m=m.redSqr();n(g=0;n--){for(var c=e.words[n],u=l-1;u>=0;u--){var h=c>>u&1;i!==r[0]&&(i=this.sqr(i)),0!==h||0!==o?(o<<=1,o|=h,(4==++s||0===n&&0===u)&&(i=this.mul(i,r[o]),s=0,o=0)):s=0}l=26}return i},T.prototype.convertTo=function(t){var e=t.umod(this.m);return e===t?e.clone():e},T.prototype.convertFrom=function(t){var e=t.clone();return e.red=null,e},a.mont=function(t){return new A(t)},i(A,T),A.prototype.convertTo=function(t){return this.imod(t.ushln(this.shift))},A.prototype.convertFrom=function(t){var e=this.imod(t.mul(this.rinv));return e.red=null,e},A.prototype.imul=function(t,e){if(t.isZero()||e.isZero())return t.words[0]=0,t.length=1,t;var r=t.imul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),a=i;return i.cmp(this.m)>=0?a=i.isub(this.m):i.cmpn(0)<0&&(a=i.iadd(this.m)),a._forceRed(this)},A.prototype.mul=function(t,e){if(t.isZero()||e.isZero())return new a(0)._forceRed(this);var r=t.mul(e),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},A.prototype.invm=function(t){return this.imod(t._invmp(this.m).mul(this.r2))._forceRed(this)}}(t=r.nmd(t),this)},6204:function(t){t.exports=function(t){var e,r,n,i=t.length,a=0;for(e=0;e>>1;if(!(u<=0)){var h,p=i.mallocDouble(2*u*s),f=i.mallocInt32(s);if((s=l(t,u,p,f))>0){if(1===u&&n)a.init(s),h=a.sweepComplete(u,r,0,s,p,f,0,s,p,f);else{var d=i.mallocDouble(2*u*c),m=i.mallocInt32(c);(c=l(e,u,d,m))>0&&(a.init(s+c),h=1===u?a.sweepBipartite(u,r,0,s,p,f,0,c,d,m):o(u,r,n,s,p,f,c,d,m),i.free(d),i.free(m))}i.free(p),i.free(f)}return h}}}function u(t,e){n.push([t,e])}},2455:function(t,e){function r(t){return t?function(t,e,r,n,i,a,o,s,l,c,u){return i-n>l-s?function(t,e,r,n,i,a,o,s,l,c,u){for(var h=2*t,p=n,f=h*n;pc-l?n?function(t,e,r,n,i,a,o,s,l,c,u){for(var h=2*t,p=n,f=h*n;p0;){var D=(P-=1)*_,O=w[D],R=w[D+1],F=w[D+2],B=w[D+3],j=w[D+4],N=w[D+5],U=P*b,V=T[U],q=T[U+1],H=1&N,G=!!(16&N),W=u,Z=S,Y=C,X=I;if(H&&(W=C,Z=I,Y=u,X=S),!(2&N&&(F=g(t,O,R,F,W,Z,q),R>=F)||4&N&&(R=y(t,O,R,F,W,Z,V),R>=F))){var $=F-R,K=j-B;if(G){if(t*$*($+K)=p0)&&!(p1>=hi)"),m=u("lo===p0"),g=u("lo>>1,p=2*t,f=h,d=s[p*h+e];c=x?(f=v,d=x):y>=b?(f=g,d=y):(f=_,d=b):x>=b?(f=v,d=x):b>=y?(f=g,d=y):(f=_,d=b);for(var w=p*(u-1),T=p*f,A=0;Ar&&i[h+e]>c;--u,h-=o){for(var p=h,f=h+o,d=0;dp;++p,l+=s)if(i[l+h]===o)if(u===p)u+=1,c+=s;else{for(var f=0;s>f;++f){var d=i[l+f];i[l+f]=i[c],i[c++]=d}var m=a[p];a[p]=a[u],a[u++]=m}return u},"lop;++p,l+=s)if(i[l+h]f;++f){var d=i[l+f];i[l+f]=i[c],i[c++]=d}var m=a[p];a[p]=a[u],a[u++]=m}return u},"lo<=p0":function(t,e,r,n,i,a,o){for(var s=2*t,l=s*r,c=l,u=r,h=t+e,p=r;n>p;++p,l+=s)if(i[l+h]<=o)if(u===p)u+=1,c+=s;else{for(var f=0;s>f;++f){var d=i[l+f];i[l+f]=i[c],i[c++]=d}var m=a[p];a[p]=a[u],a[u++]=m}return u},"hi<=p0":function(t,e,r,n,i,a,o){for(var s=2*t,l=s*r,c=l,u=r,h=t+e,p=r;n>p;++p,l+=s)if(i[l+h]<=o)if(u===p)u+=1,c+=s;else{for(var f=0;s>f;++f){var d=i[l+f];i[l+f]=i[c],i[c++]=d}var m=a[p];a[p]=a[u],a[u++]=m}return u},"lof;++f,l+=s){var d=i[l+h],m=i[l+p];if(dg;++g){var y=i[l+g];i[l+g]=i[c],i[c++]=y}var v=a[f];a[f]=a[u],a[u++]=v}}return u},"lo<=p0&&p0<=hi":function(t,e,r,n,i,a,o){for(var s=2*t,l=s*r,c=l,u=r,h=e,p=t+e,f=r;n>f;++f,l+=s){var d=i[l+h],m=i[l+p];if(d<=o&&o<=m)if(u===f)u+=1,c+=s;else{for(var g=0;s>g;++g){var y=i[l+g];i[l+g]=i[c],i[c++]=y}var v=a[f];a[f]=a[u],a[u++]=v}}return u},"!(lo>=p0)&&!(p1>=hi)":function(t,e,r,n,i,a,o,s){for(var l=2*t,c=l*r,u=c,h=r,p=e,f=t+e,d=r;n>d;++d,c+=l){var m=i[c+p],g=i[c+f];if(!(m>=o||s>=g))if(h===d)h+=1,u+=l;else{for(var y=0;l>y;++y){var v=i[c+y];i[c+y]=i[u],i[u++]=v}var x=a[d];a[d]=a[h],a[h++]=x}}return h}}},4192:function(t){t.exports=function(t,n){n<=4*e?r(0,n-1,t):c(0,n-1,t)};var e=32;function r(t,e,r){for(var n=2*(t+1),i=t+1;i<=e;++i){for(var a=r[n++],o=r[n++],s=i,l=n-2;s-- >t;){var c=r[l-2],u=r[l-1];if(cr[e+1])}function l(t,e,r,n){var i=n[t*=2];return i>1,g=m-p,y=m+p,v=f,x=g,_=m,b=y,w=d,T=t+1,A=u-1,k=0;s(v,x,h)&&(k=v,v=x,x=k),s(b,w,h)&&(k=b,b=w,w=k),s(v,_,h)&&(k=v,v=_,_=k),s(x,_,h)&&(k=x,x=_,_=k),s(v,b,h)&&(k=v,v=b,b=k),s(_,b,h)&&(k=_,_=b,b=k),s(x,w,h)&&(k=x,x=w,w=k),s(x,_,h)&&(k=x,x=_,_=k),s(b,w,h)&&(k=b,b=w,w=k);for(var M=h[2*x],S=h[2*x+1],E=h[2*b],C=h[2*b+1],I=2*v,L=2*_,P=2*w,z=2*f,D=2*m,O=2*d,R=0;R<2;++R){var F=h[I+R],B=h[L+R],j=h[P+R];h[z+R]=F,h[D+R]=B,h[O+R]=j}i(g,t,h),i(y,u,h);for(var N=T;N<=A;++N)if(l(N,M,S,h))N!==T&&n(N,T,h),++T;else if(!l(N,E,C,h))for(;;){if(l(A,E,C,h)){l(A,M,S,h)?(a(N,T,A,h),++T,--A):(n(N,A,h),--A);break}if(--A>>1;a(d,S);var E=0,C=0;for(T=0;T=o)m(u,h,C--,I=I-o|0);else if(I>=0)m(l,c,E--,I);else if(I<=-o){I=-I-o|0;for(var L=0;L>>1;a(d,E);var C=0,I=0,L=0;for(A=0;A>1==d[2*A+3]>>1&&(z=2,A+=1),P<0){for(var D=-(P>>1)-1,O=0;O>1)-1,0===z?m(l,c,C--,D):1===z?m(u,h,I--,D):2===z&&m(p,f,L--,D)}},scanBipartite:function(t,e,r,n,i,s,u,h,p,f,y,v){var x=0,_=2*t,b=e,w=e+t,T=1,A=1;n?A=o:T=o;for(var k=i;k>>1;a(d,C);var I=0;for(k=0;k=o?(P=!n,M-=o):(P=!!n,M-=1),P)g(l,c,I++,M);else{var z=v[M],D=_*M,O=y[D+e+1],R=y[D+e+1+t];t:for(var F=0;F>>1;a(d,T);var A=0;for(x=0;x=o)l[A++]=_-o;else{var M=f[_-=1],S=g*_,E=p[S+e+1],C=p[S+e+1+t];t:for(var I=0;I=0;--I)if(l[I]===_){for(D=I+1;D0;){for(var f=r.pop(),d=(u=-1,h=-1,l=o[s=r.pop()],1);d=0||(e.flip(s,f),i(t,e,r,u,s,h),i(t,e,r,s,h,u),i(t,e,r,h,f,u),i(t,e,r,f,u,h))}}},5023:function(t,e,r){var n,i=r(2478);function a(t,e,r,n,i,a,o){this.cells=t,this.neighbor=e,this.flags=n,this.constraint=r,this.active=i,this.next=a,this.boundary=o}function o(t,e){return t[0]-e[0]||t[1]-e[1]||t[2]-e[2]}t.exports=function(t,e,r){var n=function(t,e){for(var r=t.cells(),n=r.length,i=0;i0||l.length>0;){for(;s.length>0;){var f=s.pop();if(c[f]!==-i){c[f]=i,u[f];for(var d=0;d<3;++d){var m=p[3*f+d];m>=0&&0===c[m]&&(h[3*f+d]?l.push(m):(s.push(m),c[m]=i))}}}var g=l;l=s,s=g,l.length=0,i=-i}var y=function(t,e,r){for(var n=0,i=0;i1&&i(r[p[f-2]],r[p[f-1]],a)>0;)t.push([p[f-1],p[f-2],o]),f-=1;p.length=f,p.push(o);var d=h.upperIds;for(f=d.length;f>1&&i(r[d[f-2]],r[d[f-1]],a)<0;)t.push([d[f-2],d[f-1],o]),f-=1;d.length=f,d.push(o)}}function u(t,e){return(t.a[0]d[0]&&i.push(new o(d,f,2,l),new o(f,d,1,l))}i.sort(s);for(var m=i[0].a[0]-(1+Math.abs(i[0].a[0]))*Math.pow(2,-52),g=[new a([m,1],[m,0],-1,[],[],[],[])],y=[],v=(l=0,i.length);l=0}}(),a.removeTriangle=function(t,e,r){var n=this.stars;o(n[t],e,r),o(n[e],r,t),o(n[r],t,e)},a.addTriangle=function(t,e,r){var n=this.stars;n[t].push(e,r),n[e].push(r,t),n[r].push(t,e)},a.opposite=function(t,e){for(var r=this.stars[e],n=1,i=r.length;ne[2]?1:0)}function y(t,e,r){if(0!==t.length){if(e)for(var n=0;n=0;--a){var x=e[u=(S=n[a])[0]],_=x[0],b=x[1],w=t[_],T=t[b];if((w[0]-T[0]||w[1]-T[1])<0){var A=_;_=b,b=A}x[0]=_;var k,M=x[1]=S[1];for(i&&(k=x[2]);a>0&&n[a-1][0]===u;){var S,E=(S=n[--a])[1];i?e.push([M,E,k]):e.push([M,E]),M=E}i?e.push([M,b,k]):e.push([M,b])}return p}(t,e,p,m,r),v=d(t,g);return y(e,v,r),!!v||p.length>0||m.length>0}},3637:function(t,e,r){t.exports=function(t,e,r,n){var a=s(e,t),h=s(n,r),p=u(a,h);if(0===o(p))return null;var f=u(h,s(t,r)),d=i(f,p),m=c(a,d);return l(t,m)};var n=r(6504),i=r(8697),a=r(5572),o=r(7721),s=r(544),l=r(2653),c=r(8987);function u(t,e){return a(n(t[0],e[1]),n(t[1],e[0]))}},3642:function(t){t.exports={jet:[{index:0,rgb:[0,0,131]},{index:.125,rgb:[0,60,170]},{index:.375,rgb:[5,255,255]},{index:.625,rgb:[255,255,0]},{index:.875,rgb:[250,0,0]},{index:1,rgb:[128,0,0]}],hsv:[{index:0,rgb:[255,0,0]},{index:.169,rgb:[253,255,2]},{index:.173,rgb:[247,255,2]},{index:.337,rgb:[0,252,4]},{index:.341,rgb:[0,252,10]},{index:.506,rgb:[1,249,255]},{index:.671,rgb:[2,0,253]},{index:.675,rgb:[8,0,253]},{index:.839,rgb:[255,0,251]},{index:.843,rgb:[255,0,245]},{index:1,rgb:[255,0,6]}],hot:[{index:0,rgb:[0,0,0]},{index:.3,rgb:[230,0,0]},{index:.6,rgb:[255,210,0]},{index:1,rgb:[255,255,255]}],spring:[{index:0,rgb:[255,0,255]},{index:1,rgb:[255,255,0]}],summer:[{index:0,rgb:[0,128,102]},{index:1,rgb:[255,255,102]}],autumn:[{index:0,rgb:[255,0,0]},{index:1,rgb:[255,255,0]}],winter:[{index:0,rgb:[0,0,255]},{index:1,rgb:[0,255,128]}],bone:[{index:0,rgb:[0,0,0]},{index:.376,rgb:[84,84,116]},{index:.753,rgb:[169,200,200]},{index:1,rgb:[255,255,255]}],copper:[{index:0,rgb:[0,0,0]},{index:.804,rgb:[255,160,102]},{index:1,rgb:[255,199,127]}],greys:[{index:0,rgb:[0,0,0]},{index:1,rgb:[255,255,255]}],yignbu:[{index:0,rgb:[8,29,88]},{index:.125,rgb:[37,52,148]},{index:.25,rgb:[34,94,168]},{index:.375,rgb:[29,145,192]},{index:.5,rgb:[65,182,196]},{index:.625,rgb:[127,205,187]},{index:.75,rgb:[199,233,180]},{index:.875,rgb:[237,248,217]},{index:1,rgb:[255,255,217]}],greens:[{index:0,rgb:[0,68,27]},{index:.125,rgb:[0,109,44]},{index:.25,rgb:[35,139,69]},{index:.375,rgb:[65,171,93]},{index:.5,rgb:[116,196,118]},{index:.625,rgb:[161,217,155]},{index:.75,rgb:[199,233,192]},{index:.875,rgb:[229,245,224]},{index:1,rgb:[247,252,245]}],yiorrd:[{index:0,rgb:[128,0,38]},{index:.125,rgb:[189,0,38]},{index:.25,rgb:[227,26,28]},{index:.375,rgb:[252,78,42]},{index:.5,rgb:[253,141,60]},{index:.625,rgb:[254,178,76]},{index:.75,rgb:[254,217,118]},{index:.875,rgb:[255,237,160]},{index:1,rgb:[255,255,204]}],bluered:[{index:0,rgb:[0,0,255]},{index:1,rgb:[255,0,0]}],rdbu:[{index:0,rgb:[5,10,172]},{index:.35,rgb:[106,137,247]},{index:.5,rgb:[190,190,190]},{index:.6,rgb:[220,170,132]},{index:.7,rgb:[230,145,90]},{index:1,rgb:[178,10,28]}],picnic:[{index:0,rgb:[0,0,255]},{index:.1,rgb:[51,153,255]},{index:.2,rgb:[102,204,255]},{index:.3,rgb:[153,204,255]},{index:.4,rgb:[204,204,255]},{index:.5,rgb:[255,255,255]},{index:.6,rgb:[255,204,255]},{index:.7,rgb:[255,153,255]},{index:.8,rgb:[255,102,204]},{index:.9,rgb:[255,102,102]},{index:1,rgb:[255,0,0]}],rainbow:[{index:0,rgb:[150,0,90]},{index:.125,rgb:[0,0,200]},{index:.25,rgb:[0,25,255]},{index:.375,rgb:[0,152,255]},{index:.5,rgb:[44,255,150]},{index:.625,rgb:[151,255,0]},{index:.75,rgb:[255,234,0]},{index:.875,rgb:[255,111,0]},{index:1,rgb:[255,0,0]}],portland:[{index:0,rgb:[12,51,131]},{index:.25,rgb:[10,136,186]},{index:.5,rgb:[242,211,56]},{index:.75,rgb:[242,143,56]},{index:1,rgb:[217,30,30]}],blackbody:[{index:0,rgb:[0,0,0]},{index:.2,rgb:[230,0,0]},{index:.4,rgb:[230,210,0]},{index:.7,rgb:[255,255,255]},{index:1,rgb:[160,200,255]}],earth:[{index:0,rgb:[0,0,130]},{index:.1,rgb:[0,180,180]},{index:.2,rgb:[40,210,40]},{index:.4,rgb:[230,230,50]},{index:.6,rgb:[120,70,20]},{index:1,rgb:[255,255,255]}],electric:[{index:0,rgb:[0,0,0]},{index:.15,rgb:[30,0,100]},{index:.4,rgb:[120,0,100]},{index:.6,rgb:[160,90,0]},{index:.8,rgb:[230,200,0]},{index:1,rgb:[255,250,220]}],alpha:[{index:0,rgb:[255,255,255,0]},{index:1,rgb:[255,255,255,1]}],viridis:[{index:0,rgb:[68,1,84]},{index:.13,rgb:[71,44,122]},{index:.25,rgb:[59,81,139]},{index:.38,rgb:[44,113,142]},{index:.5,rgb:[33,144,141]},{index:.63,rgb:[39,173,129]},{index:.75,rgb:[92,200,99]},{index:.88,rgb:[170,220,50]},{index:1,rgb:[253,231,37]}],inferno:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[31,12,72]},{index:.25,rgb:[85,15,109]},{index:.38,rgb:[136,34,106]},{index:.5,rgb:[186,54,85]},{index:.63,rgb:[227,89,51]},{index:.75,rgb:[249,140,10]},{index:.88,rgb:[249,201,50]},{index:1,rgb:[252,255,164]}],magma:[{index:0,rgb:[0,0,4]},{index:.13,rgb:[28,16,68]},{index:.25,rgb:[79,18,123]},{index:.38,rgb:[129,37,129]},{index:.5,rgb:[181,54,122]},{index:.63,rgb:[229,80,100]},{index:.75,rgb:[251,135,97]},{index:.88,rgb:[254,194,135]},{index:1,rgb:[252,253,191]}],plasma:[{index:0,rgb:[13,8,135]},{index:.13,rgb:[75,3,161]},{index:.25,rgb:[125,3,168]},{index:.38,rgb:[168,34,150]},{index:.5,rgb:[203,70,121]},{index:.63,rgb:[229,107,93]},{index:.75,rgb:[248,148,65]},{index:.88,rgb:[253,195,40]},{index:1,rgb:[240,249,33]}],warm:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[172,0,187]},{index:.25,rgb:[219,0,170]},{index:.38,rgb:[255,0,130]},{index:.5,rgb:[255,63,74]},{index:.63,rgb:[255,123,0]},{index:.75,rgb:[234,176,0]},{index:.88,rgb:[190,228,0]},{index:1,rgb:[147,255,0]}],cool:[{index:0,rgb:[125,0,179]},{index:.13,rgb:[116,0,218]},{index:.25,rgb:[98,74,237]},{index:.38,rgb:[68,146,231]},{index:.5,rgb:[0,204,197]},{index:.63,rgb:[0,247,146]},{index:.75,rgb:[0,255,88]},{index:.88,rgb:[40,255,8]},{index:1,rgb:[147,255,0]}],"rainbow-soft":[{index:0,rgb:[125,0,179]},{index:.1,rgb:[199,0,180]},{index:.2,rgb:[255,0,121]},{index:.3,rgb:[255,108,0]},{index:.4,rgb:[222,194,0]},{index:.5,rgb:[150,255,0]},{index:.6,rgb:[0,255,55]},{index:.7,rgb:[0,246,150]},{index:.8,rgb:[50,167,222]},{index:.9,rgb:[103,51,235]},{index:1,rgb:[124,0,186]}],bathymetry:[{index:0,rgb:[40,26,44]},{index:.13,rgb:[59,49,90]},{index:.25,rgb:[64,76,139]},{index:.38,rgb:[63,110,151]},{index:.5,rgb:[72,142,158]},{index:.63,rgb:[85,174,163]},{index:.75,rgb:[120,206,163]},{index:.88,rgb:[187,230,172]},{index:1,rgb:[253,254,204]}],cdom:[{index:0,rgb:[47,15,62]},{index:.13,rgb:[87,23,86]},{index:.25,rgb:[130,28,99]},{index:.38,rgb:[171,41,96]},{index:.5,rgb:[206,67,86]},{index:.63,rgb:[230,106,84]},{index:.75,rgb:[242,149,103]},{index:.88,rgb:[249,193,135]},{index:1,rgb:[254,237,176]}],chlorophyll:[{index:0,rgb:[18,36,20]},{index:.13,rgb:[25,63,41]},{index:.25,rgb:[24,91,59]},{index:.38,rgb:[13,119,72]},{index:.5,rgb:[18,148,80]},{index:.63,rgb:[80,173,89]},{index:.75,rgb:[132,196,122]},{index:.88,rgb:[175,221,162]},{index:1,rgb:[215,249,208]}],density:[{index:0,rgb:[54,14,36]},{index:.13,rgb:[89,23,80]},{index:.25,rgb:[110,45,132]},{index:.38,rgb:[120,77,178]},{index:.5,rgb:[120,113,213]},{index:.63,rgb:[115,151,228]},{index:.75,rgb:[134,185,227]},{index:.88,rgb:[177,214,227]},{index:1,rgb:[230,241,241]}],"freesurface-blue":[{index:0,rgb:[30,4,110]},{index:.13,rgb:[47,14,176]},{index:.25,rgb:[41,45,236]},{index:.38,rgb:[25,99,212]},{index:.5,rgb:[68,131,200]},{index:.63,rgb:[114,156,197]},{index:.75,rgb:[157,181,203]},{index:.88,rgb:[200,208,216]},{index:1,rgb:[241,237,236]}],"freesurface-red":[{index:0,rgb:[60,9,18]},{index:.13,rgb:[100,17,27]},{index:.25,rgb:[142,20,29]},{index:.38,rgb:[177,43,27]},{index:.5,rgb:[192,87,63]},{index:.63,rgb:[205,125,105]},{index:.75,rgb:[216,162,148]},{index:.88,rgb:[227,199,193]},{index:1,rgb:[241,237,236]}],oxygen:[{index:0,rgb:[64,5,5]},{index:.13,rgb:[106,6,15]},{index:.25,rgb:[144,26,7]},{index:.38,rgb:[168,64,3]},{index:.5,rgb:[188,100,4]},{index:.63,rgb:[206,136,11]},{index:.75,rgb:[220,174,25]},{index:.88,rgb:[231,215,44]},{index:1,rgb:[248,254,105]}],par:[{index:0,rgb:[51,20,24]},{index:.13,rgb:[90,32,35]},{index:.25,rgb:[129,44,34]},{index:.38,rgb:[159,68,25]},{index:.5,rgb:[182,99,19]},{index:.63,rgb:[199,134,22]},{index:.75,rgb:[212,171,35]},{index:.88,rgb:[221,210,54]},{index:1,rgb:[225,253,75]}],phase:[{index:0,rgb:[145,105,18]},{index:.13,rgb:[184,71,38]},{index:.25,rgb:[186,58,115]},{index:.38,rgb:[160,71,185]},{index:.5,rgb:[110,97,218]},{index:.63,rgb:[50,123,164]},{index:.75,rgb:[31,131,110]},{index:.88,rgb:[77,129,34]},{index:1,rgb:[145,105,18]}],salinity:[{index:0,rgb:[42,24,108]},{index:.13,rgb:[33,50,162]},{index:.25,rgb:[15,90,145]},{index:.38,rgb:[40,118,137]},{index:.5,rgb:[59,146,135]},{index:.63,rgb:[79,175,126]},{index:.75,rgb:[120,203,104]},{index:.88,rgb:[193,221,100]},{index:1,rgb:[253,239,154]}],temperature:[{index:0,rgb:[4,35,51]},{index:.13,rgb:[23,51,122]},{index:.25,rgb:[85,59,157]},{index:.38,rgb:[129,79,143]},{index:.5,rgb:[175,95,130]},{index:.63,rgb:[222,112,101]},{index:.75,rgb:[249,146,66]},{index:.88,rgb:[249,196,65]},{index:1,rgb:[232,250,91]}],turbidity:[{index:0,rgb:[34,31,27]},{index:.13,rgb:[65,50,41]},{index:.25,rgb:[98,69,52]},{index:.38,rgb:[131,89,57]},{index:.5,rgb:[161,112,59]},{index:.63,rgb:[185,140,66]},{index:.75,rgb:[202,174,88]},{index:.88,rgb:[216,209,126]},{index:1,rgb:[233,246,171]}],"velocity-blue":[{index:0,rgb:[17,32,64]},{index:.13,rgb:[35,52,116]},{index:.25,rgb:[29,81,156]},{index:.38,rgb:[31,113,162]},{index:.5,rgb:[50,144,169]},{index:.63,rgb:[87,173,176]},{index:.75,rgb:[149,196,189]},{index:.88,rgb:[203,221,211]},{index:1,rgb:[254,251,230]}],"velocity-green":[{index:0,rgb:[23,35,19]},{index:.13,rgb:[24,64,38]},{index:.25,rgb:[11,95,45]},{index:.38,rgb:[39,123,35]},{index:.5,rgb:[95,146,12]},{index:.63,rgb:[152,165,18]},{index:.75,rgb:[201,186,69]},{index:.88,rgb:[233,216,137]},{index:1,rgb:[255,253,205]}],cubehelix:[{index:0,rgb:[0,0,0]},{index:.07,rgb:[22,5,59]},{index:.13,rgb:[60,4,105]},{index:.2,rgb:[109,1,135]},{index:.27,rgb:[161,0,147]},{index:.33,rgb:[210,2,142]},{index:.4,rgb:[251,11,123]},{index:.47,rgb:[255,29,97]},{index:.53,rgb:[255,54,69]},{index:.6,rgb:[255,85,46]},{index:.67,rgb:[255,120,34]},{index:.73,rgb:[255,157,37]},{index:.8,rgb:[241,191,57]},{index:.87,rgb:[224,220,93]},{index:.93,rgb:[218,241,142]},{index:1,rgb:[227,253,198]}]}},6729:function(t,e,r){var n=r(3642),i=r(395);function a(t){return[t[0]/255,t[1]/255,t[2]/255,t[3]]}function o(t){for(var e,r="#",n=0;n<3;++n)r+=("00"+(e=(e=t[n]).toString(16))).substr(e.length);return r}function s(t){return"rgba("+t.join(",")+")"}t.exports=function(t){var e,r,l,c,u,h,p,f,d,m;if(t||(t={}),f=(t.nshades||72)-1,p=t.format||"hex",(h=t.colormap)||(h="jet"),"string"==typeof h){if(h=h.toLowerCase(),!n[h])throw Error(h+" not a supported colorscale");u=n[h]}else{if(!Array.isArray(h))throw Error("unsupported colormap option",h);u=h.slice()}if(u.length>f+1)throw new Error(h+" map requires nshades to be at least size "+u.length);d=Array.isArray(t.alpha)?2!==t.alpha.length?[1,1]:t.alpha.slice():"number"==typeof t.alpha?[t.alpha,t.alpha]:[1,1],e=u.map((function(t){return Math.round(t.index*f)})),d[0]=Math.min(Math.max(d[0],0),1),d[1]=Math.min(Math.max(d[1],0),1);var g=u.map((function(t,e){var r=u[e].index,n=u[e].rgb.slice();return 4===n.length&&n[3]>=0&&n[3]<=1||(n[3]=d[0]+(d[1]-d[0])*r),n})),y=[];for(m=0;m0||l(t,e,a)?-1:1:0===s?c>0||l(t,e,r)?1:-1:i(c-s)}var h=n(t,e,r);return h>0?o>0&&n(t,e,a)>0?1:-1:h<0?o>0||n(t,e,a)>0?1:-1:n(t,e,a)>0||l(t,e,r)?1:-1};var n=r(3250),i=r(8572),a=r(9362),o=r(5382),s=r(8210);function l(t,e,r){var n=a(t[0],-e[0]),i=a(t[1],-e[1]),l=a(r[0],-e[0]),c=a(r[1],-e[1]),u=s(o(n,l),o(i,c));return u[u.length-1]>=0}},8572:function(t){t.exports=function(t){return t<0?-1:t>0?1:0}},8507:function(t){t.exports=function(t,n){var i=t.length,a=t.length-n.length;if(a)return a;switch(i){case 0:return 0;case 1:return t[0]-n[0];case 2:return t[0]+t[1]-n[0]-n[1]||e(t[0],t[1])-e(n[0],n[1]);case 3:var o=t[0]+t[1],s=n[0]+n[1];if(a=o+t[2]-(s+n[2]))return a;var l=e(t[0],t[1]),c=e(n[0],n[1]);return e(l,t[2])-e(c,n[2])||e(l+t[2],o)-e(c+n[2],s);case 4:var u=t[0],h=t[1],p=t[2],f=t[3],d=n[0],m=n[1],g=n[2],y=n[3];return u+h+p+f-(d+m+g+y)||e(u,h,p,f)-e(d,m,g,y,d)||e(u+h,u+p,u+f,h+p,h+f,p+f)-e(d+m,d+g,d+y,m+g,m+y,g+y)||e(u+h+p,u+h+f,u+p+f,h+p+f)-e(d+m+g,d+m+y,d+g+y,m+g+y);default:for(var v=t.slice().sort(r),x=n.slice().sort(r),_=0;_t[r][0]&&(r=n);return er?[[r],[e]]:[[e]]}},4750:function(t,e,r){t.exports=function(t){var e=n(t),r=e.length;if(r<=2)return[];for(var i=new Array(r),a=e[r-1],o=0;o=e[l]&&(s+=1);a[o]=s}}return t}(n(a,!0),r)}};var n=r(8954),i=r(3952)},4769:function(t){t.exports=function(t,e,r,n,i,a){var o=i-1,s=i*i,l=o*o,c=(1+2*i)*l,u=i*l,h=s*(3-2*i),p=s*o;if(t.length){a||(a=new Array(t.length));for(var f=t.length-1;f>=0;--f)a[f]=c*t[f]+u*e[f]+h*r[f]+p*n[f];return a}return c*t+u*e+h*r+p*n},t.exports.derivative=function(t,e,r,n,i,a){var o=6*i*i-6*i,s=3*i*i-4*i+1,l=-6*i*i+6*i,c=3*i*i-2*i;if(t.length){a||(a=new Array(t.length));for(var u=t.length-1;u>=0;--u)a[u]=o*t[u]+s*e[u]+l*r[u]+c*n[u];return a}return o*t+s*e+l*r[u]+c*n}},7642:function(t,e,r){var n=r(8954),i=r(1682);function a(t,e){this.point=t,this.index=e}function o(t,e){for(var r=t.point,n=e.point,i=r.length,a=0;a=2)return!1;t[r]=n}return!0})):b.filter((function(t){for(var e=0;e<=s;++e){var r=y[t[e]];if(r<0)return!1;t[e]=r}return!0})),1&s)for(u=0;u>>31},t.exports.exponent=function(e){return(t.exports.hi(e)<<1>>>21)-1023},t.exports.fraction=function(e){var r=t.exports.lo(e),n=t.exports.hi(e),i=1048575&n;return 2146435072&n&&(i+=1048576),[r,i]},t.exports.denormalized=function(e){return!(2146435072&t.exports.hi(e))}},1338:function(t){function e(t,r,n){var i=0|t[n];if(i<=0)return[];var a,o=new Array(i);if(n===t.length-1)for(a=0;a"u"&&(r=0),typeof t){case"number":if(t>0)return function(t,e){var r,n;for(r=new Array(t),n=0;n=r-1){p=l.length-1;var d=t-e[r-1];for(f=0;f=r-1)for(var u=s.length-1,h=(e[r-1],0);h=0;--r)if(t[--e])return!1;return!0},s.jump=function(t){var e=this.lastT(),r=this.dimension;if(!(t0;--h)n.push(a(l[h-1],c[h-1],arguments[h])),i.push(0)}},s.push=function(t){var e=this.lastT(),r=this.dimension;if(!(t1e-6?1/s:0;this._time.push(t);for(var p=r;p>0;--p){var f=a(c[p-1],u[p-1],arguments[p]);n.push(f),i.push((f-n[o++])*h)}}},s.set=function(t){var e=this.dimension;if(!(t0;--l)r.push(a(o[l-1],s[l-1],arguments[l])),n.push(0)}},s.move=function(t){var e=this.lastT(),r=this.dimension;if(!(t<=e||arguments.length!==r+1)){var n=this._state,i=this._velocity,o=n.length-this.dimension,s=this.bounds,l=s[0],c=s[1],u=t-e,h=u>1e-6?1/u:0;this._time.push(t);for(var p=r;p>0;--p){var f=arguments[p];n.push(a(l[p-1],c[p-1],n[o++]+f)),i.push(f*h)}}},s.idle=function(t){var e=this.lastT();if(!(t=0;--h)n.push(a(l[h],c[h],n[o]+u*i[o])),i.push(0),o+=1}}},3840:function(t){function e(t,e,r,n,i,a){this._color=t,this.key=e,this.value=r,this.left=n,this.right=i,this._count=a}function r(t){return new e(t._color,t.key,t.value,t.left,t.right,t._count)}function n(t,r){return new e(t,r.key,r.value,r.left,r.right,r._count)}function i(t){t._count=1+(t.left?t.left._count:0)+(t.right?t.right._count:0)}function a(t,e){this._compare=t,this.root=e}t.exports=function(t){return new a(t||f,null)};var o=a.prototype;function s(t,e){var r;return e.left&&(r=s(t,e.left))?r:(r=t(e.key,e.value))||(e.right?s(t,e.right):void 0)}function l(t,e,r,n){if(e(t,n.key)<=0){var i;if(n.left&&(i=l(t,e,r,n.left)))return i;if(i=r(n.key,n.value))return i}if(n.right)return l(t,e,r,n.right)}function c(t,e,r,n,i){var a,o=r(t,i.key),s=r(e,i.key);return o<=0&&(i.left&&(a=c(t,e,r,n,i.left))||s>0&&(a=n(i.key,i.value)))?a:s>0&&i.right?c(t,e,r,n,i.right):void 0}function u(t,e){this.tree=t,this._stack=e}Object.defineProperty(o,"keys",{get:function(){var t=[];return this.forEach((function(e,r){t.push(e)})),t}}),Object.defineProperty(o,"values",{get:function(){var t=[];return this.forEach((function(e,r){t.push(r)})),t}}),Object.defineProperty(o,"length",{get:function(){return this.root?this.root._count:0}}),o.insert=function(t,r){for(var o=this._compare,s=this.root,l=[],c=[];s;){var u=o(t,s.key);l.push(s),c.push(u),s=u<=0?s.left:s.right}l.push(new e(0,t,r,null,null,1));for(var h=l.length-2;h>=0;--h)s=l[h],c[h]<=0?l[h]=new e(s._color,s.key,s.value,l[h+1],s.right,s._count+1):l[h]=new e(s._color,s.key,s.value,s.left,l[h+1],s._count+1);for(h=l.length-1;h>1;--h){var p=l[h-1];if(s=l[h],1===p._color||1===s._color)break;var f=l[h-2];if(f.left===p)if(p.left===s){if(!(d=f.right)||0!==d._color){f._color=0,f.left=p.right,p._color=1,p.right=f,l[h-2]=p,l[h-1]=s,i(f),i(p),h>=3&&((m=l[h-3]).left===f?m.left=p:m.right=p);break}p._color=1,f.right=n(1,d),f._color=0,h-=1}else{if(!(d=f.right)||0!==d._color){p.right=s.left,f._color=0,f.left=s.right,s._color=1,s.left=p,s.right=f,l[h-2]=s,l[h-1]=p,i(f),i(p),i(s),h>=3&&((m=l[h-3]).left===f?m.left=s:m.right=s);break}p._color=1,f.right=n(1,d),f._color=0,h-=1}else if(p.right===s){if(!(d=f.left)||0!==d._color){f._color=0,f.right=p.left,p._color=1,p.left=f,l[h-2]=p,l[h-1]=s,i(f),i(p),h>=3&&((m=l[h-3]).right===f?m.right=p:m.left=p);break}p._color=1,f.left=n(1,d),f._color=0,h-=1}else{var d;if(!(d=f.left)||0!==d._color){var m;p.left=s.right,f._color=0,f.right=s.left,s._color=1,s.right=p,s.left=f,l[h-2]=s,l[h-1]=p,i(f),i(p),i(s),h>=3&&((m=l[h-3]).right===f?m.right=s:m.left=s);break}p._color=1,f.left=n(1,d),f._color=0,h-=1}}return l[0]._color=1,new a(o,l[0])},o.forEach=function(t,e,r){if(this.root)switch(arguments.length){case 1:return s(t,this.root);case 2:return l(e,this._compare,t,this.root);case 3:return this._compare(e,r)>=0?void 0:c(e,r,this._compare,t,this.root)}},Object.defineProperty(o,"begin",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.left;return new u(this,t)}}),Object.defineProperty(o,"end",{get:function(){for(var t=[],e=this.root;e;)t.push(e),e=e.right;return new u(this,t)}}),o.at=function(t){if(t<0)return new u(this,[]);for(var e=this.root,r=[];;){if(r.push(e),e.left){if(t=e.right._count)break;e=e.right}return new u(this,[])},o.ge=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<=0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new u(this,n)},o.gt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a<0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new u(this,n)},o.lt=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>0&&(i=n.length),r=a<=0?r.left:r.right}return n.length=i,new u(this,n)},o.le=function(t){for(var e=this._compare,r=this.root,n=[],i=0;r;){var a=e(t,r.key);n.push(r),a>=0&&(i=n.length),r=a<0?r.left:r.right}return n.length=i,new u(this,n)},o.find=function(t){for(var e=this._compare,r=this.root,n=[];r;){var i=e(t,r.key);if(n.push(r),0===i)return new u(this,n);r=i<=0?r.left:r.right}return new u(this,[])},o.remove=function(t){var e=this.find(t);return e?e.remove():this},o.get=function(t){for(var e=this._compare,r=this.root;r;){var n=e(t,r.key);if(0===n)return r.value;r=n<=0?r.left:r.right}};var h=u.prototype;function p(t,e){t.key=e.key,t.value=e.value,t.left=e.left,t.right=e.right,t._color=e._color,t._count=e._count}function f(t,e){return te?1:0}Object.defineProperty(h,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(h,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),h.clone=function(){return new u(this.tree,this._stack.slice())},h.remove=function(){var t=this._stack;if(0===t.length)return this.tree;var o=new Array(t.length),s=t[t.length-1];o[o.length-1]=new e(s._color,s.key,s.value,s.left,s.right,s._count);for(var l=t.length-2;l>=0;--l)(s=t[l]).left===t[l+1]?o[l]=new e(s._color,s.key,s.value,o[l+1],s.right,s._count):o[l]=new e(s._color,s.key,s.value,s.left,o[l+1],s._count);if((s=o[o.length-1]).left&&s.right){var c=o.length;for(s=s.left;s.right;)o.push(s),s=s.right;var u=o[c-1];for(o.push(new e(s._color,u.key,u.value,s.left,s.right,s._count)),o[c-1].key=s.key,o[c-1].value=s.value,l=o.length-2;l>=c;--l)s=o[l],o[l]=new e(s._color,s.key,s.value,s.left,o[l+1],s._count);o[c-1].left=o[c]}if(0===(s=o[o.length-1])._color){var h=o[o.length-2];for(h.left===s?h.left=null:h.right===s&&(h.right=null),o.pop(),l=0;l=0;--l){if(e=t[l],0===l)return void(e._color=1);if((a=t[l-1]).left===e){if((o=a.right).right&&0===o.right._color)return s=(o=a.right=r(o)).right=r(o.right),a.right=o.left,o.left=a,o.right=s,o._color=a._color,e._color=1,a._color=1,s._color=1,i(a),i(o),l>1&&((c=t[l-2]).left===a?c.left=o:c.right=o),void(t[l-1]=o);if(o.left&&0===o.left._color)return s=(o=a.right=r(o)).left=r(o.left),a.right=s.left,o.left=s.right,s.left=a,s.right=o,s._color=a._color,a._color=1,o._color=1,e._color=1,i(a),i(o),i(s),l>1&&((c=t[l-2]).left===a?c.left=s:c.right=s),void(t[l-1]=s);if(1===o._color){if(0===a._color)return a._color=1,void(a.right=n(0,o));a.right=n(0,o);continue}o=r(o),a.right=o.left,o.left=a,o._color=a._color,a._color=0,i(a),i(o),l>1&&((c=t[l-2]).left===a?c.left=o:c.right=o),t[l-1]=o,t[l]=a,l+11&&((c=t[l-2]).right===a?c.right=o:c.left=o),void(t[l-1]=o);if(o.right&&0===o.right._color)return s=(o=a.left=r(o)).right=r(o.right),a.left=s.right,o.right=s.left,s.right=a,s.left=o,s._color=a._color,a._color=1,o._color=1,e._color=1,i(a),i(o),i(s),l>1&&((c=t[l-2]).right===a?c.right=s:c.left=s),void(t[l-1]=s);if(1===o._color){if(0===a._color)return a._color=1,void(a.left=n(0,o));a.left=n(0,o);continue}var c;o=r(o),a.left=o.right,o.right=a,o._color=a._color,a._color=0,i(a),i(o),l>1&&((c=t[l-2]).right===a?c.right=o:c.left=o),t[l-1]=o,t[l]=a,l+10)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(h,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(h,"index",{get:function(){var t=0,e=this._stack;if(0===e.length){var r=this.tree.root;return r?r._count:0}e[e.length-1].left&&(t=e[e.length-1].left._count);for(var n=e.length-2;n>=0;--n)e[n+1]===e[n].right&&(++t,e[n].left&&(t+=e[n].left._count));return t},enumerable:!0}),h.next=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.right)for(e=e.right;e;)t.push(e),e=e.left;else for(t.pop();t.length>0&&t[t.length-1].right===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(h,"hasNext",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].right)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].left===t[e])return!0;return!1}}),h.update=function(t){var r=this._stack;if(0===r.length)throw new Error("Can't update empty node!");var n=new Array(r.length),i=r[r.length-1];n[n.length-1]=new e(i._color,i.key,t,i.left,i.right,i._count);for(var o=r.length-2;o>=0;--o)(i=r[o]).left===r[o+1]?n[o]=new e(i._color,i.key,i.value,n[o+1],i.right,i._count):n[o]=new e(i._color,i.key,i.value,i.left,n[o+1],i._count);return new a(this.tree._compare,n[0])},h.prev=function(){var t=this._stack;if(0!==t.length){var e=t[t.length-1];if(e.left)for(e=e.left;e;)t.push(e),e=e.right;else for(t.pop();t.length>0&&t[t.length-1].left===e;)e=t[t.length-1],t.pop()}},Object.defineProperty(h,"hasPrev",{get:function(){var t=this._stack;if(0===t.length)return!1;if(t[t.length-1].left)return!0;for(var e=t.length-1;e>0;--e)if(t[e-1].right===t[e])return!0;return!1}})},3837:function(t,e,r){t.exports=function(t,e){var r=new f(t);return r.update(e),r};var n=r(4935),i=r(501),a=r(5304),o=r(6429),s=r(6444),l=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),c=ArrayBuffer,u=DataView;function h(t){return Array.isArray(t)||function(t){return c.isView(t)&&!(t instanceof u)}(t)}function p(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function f(t){this.gl=t,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=a(t)}var d=f.prototype;function m(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}d.update=function(t){function e(e,r,n){if(n in t){var i,a=t[n],o=this[n];(e?h(a)&&h(a[0]):h(a))?this[n]=i=[r(a[0]),r(a[1]),r(a[2])]:this[n]=i=[r(a),r(a),r(a)];for(var s=0;s<3;++s)if(i[s]!==o[s])return!0}return!1}t=t||{};var r,a=e.bind(this,!1,Number),o=e.bind(this,!1,Boolean),l=e.bind(this,!1,String),c=e.bind(this,!0,(function(t){if(h(t)){if(3===t.length)return[+t[0],+t[1],+t[2],1];if(4===t.length)return[+t[0],+t[1],+t[2],+t[3]]}return[0,0,0,1]})),u=!1,p=!1;if("bounds"in t)for(var f=t.bounds,d=0;d<2;++d)for(var m=0;m<3;++m)f[d][m]!==this.bounds[d][m]&&(p=!0),this.bounds[d][m]=f[d][m];if("ticks"in t)for(r=t.ticks,u=!0,this.autoTicks=!1,d=0;d<3;++d)this.tickSpacing[d]=0;else a("tickSpacing")&&(this.autoTicks=!0,p=!0);if(this._firstInit&&("ticks"in t||"tickSpacing"in t||(this.autoTicks=!0),p=!0,u=!0,this._firstInit=!1),p&&this.autoTicks&&(r=s.create(this.bounds,this.tickSpacing),u=!0),u){for(d=0;d<3;++d)r[d].sort((function(t,e){return t.x-e.x}));s.equal(r,this.ticks)?u=!1:this.ticks=r}o("tickEnable"),l("tickFont")&&(u=!0),l("tickFontStyle")&&(u=!0),l("tickFontWeight")&&(u=!0),l("tickFontVariant")&&(u=!0),a("tickSize"),a("tickAngle"),a("tickPad"),c("tickColor");var g=l("labels");l("labelFont")&&(g=!0),l("labelFontStyle")&&(g=!0),l("labelFontWeight")&&(g=!0),l("labelFontVariant")&&(g=!0),o("labelEnable"),a("labelSize"),a("labelPad"),c("labelColor"),o("lineEnable"),o("lineMirror"),a("lineWidth"),c("lineColor"),o("lineTickEnable"),o("lineTickMirror"),a("lineTickLength"),a("lineTickWidth"),c("lineTickColor"),o("gridEnable"),a("gridWidth"),c("gridColor"),o("zeroEnable"),c("zeroLineColor"),a("zeroLineWidth"),o("backgroundEnable"),c("backgroundColor");var y=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],v=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(g||u)&&this._text.update(this.bounds,this.labels,y,this.ticks,v):this._text=n(this.gl,this.bounds,this.labels,y,this.ticks,v),this._lines&&u&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=i(this.gl,this.bounds,this.ticks))};var g=[new m,new m,new m];function y(t,e,r,n,i){for(var a=t.primalOffset,o=t.primalMinor,s=t.mirrorOffset,l=t.mirrorMinor,c=n[e],u=0;u<3;++u)if(e!==u){var h=a,p=s,f=o,d=l;c&1<0?(f[u]=-1,d[u]=0):(f[u]=0,d[u]=1)}}var v=[0,0,0],x={model:l,view:l,projection:l,_ortho:!1};d.isOpaque=function(){return!0},d.isTransparent=function(){return!1},d.drawTransparent=function(t){};var _=[0,0,0],b=[0,0,0],w=[0,0,0];d.draw=function(t){t=t||x;for(var e=this.gl,r=t.model||l,n=t.view||l,i=t.projection||l,a=this.bounds,s=t._ortho||!1,c=o(r,n,i,a,s),u=c.cubeEdges,h=c.axis,f=n[12],d=n[13],m=n[14],T=n[15],A=(s?2:1)*this.pixelRatio*(i[3]*f+i[7]*d+i[11]*m+i[15]*T)/e.drawingBufferHeight,k=0;k<3;++k)this.lastCubeProps.cubeEdges[k]=u[k],this.lastCubeProps.axis[k]=h[k];var M=g;for(k=0;k<3;++k)y(g[k],k,this.bounds,u,h);e=this.gl;var S,E,C,I,L,P,z,D,O,R,F,B,j=v;for(k=0;k<3;++k)this.backgroundEnable[k]?j[k]=h[k]:j[k]=0;for(this._background.draw(r,n,i,a,j,this.backgroundColor),this._lines.bind(r,n,i,this),k=0;k<3;++k){var N=[0,0,0];h[k]>0?N[k]=a[1][k]:N[k]=a[0][k];for(var U=0;U<2;++U){var V=(k+1+U)%3,q=(k+1+(1^U))%3;this.gridEnable[V]&&this._lines.drawGrid(V,q,this.bounds,N,this.gridColor[V],this.gridWidth[V]*this.pixelRatio)}for(U=0;U<2;++U)V=(k+1+U)%3,q=(k+1+(1^U))%3,this.zeroEnable[q]&&Math.min(a[0][q],a[1][q])<=0&&Math.max(a[0][q],a[1][q])>=0&&this._lines.drawZero(V,q,this.bounds,N,this.zeroLineColor[q],this.zeroLineWidth[q]*this.pixelRatio)}for(k=0;k<3;++k){this.lineEnable[k]&&this._lines.drawAxisLine(k,this.bounds,M[k].primalOffset,this.lineColor[k],this.lineWidth[k]*this.pixelRatio),this.lineMirror[k]&&this._lines.drawAxisLine(k,this.bounds,M[k].mirrorOffset,this.lineColor[k],this.lineWidth[k]*this.pixelRatio);var H=p(_,M[k].primalMinor),G=p(b,M[k].mirrorMinor),W=this.lineTickLength;for(U=0;U<3;++U){var Z=A/r[5*U];H[U]*=W[U]*Z,G[U]*=W[U]*Z}this.lineTickEnable[k]&&this._lines.drawAxisTicks(k,M[k].primalOffset,H,this.lineTickColor[k],this.lineTickWidth[k]*this.pixelRatio),this.lineTickMirror[k]&&this._lines.drawAxisTicks(k,M[k].mirrorOffset,G,this.lineTickColor[k],this.lineTickWidth[k]*this.pixelRatio)}function Y(t){(C=[0,0,0])[t]=1}for(this._lines.unbind(),this._text.bind(r,n,i,this.pixelRatio),k=0;k<3;++k){var X=M[k].primalMinor,$=M[k].mirrorMinor,K=p(w,M[k].primalOffset);for(U=0;U<3;++U)this.lineTickEnable[k]&&(K[U]+=A*X[U]*Math.max(this.lineTickLength[U],0)/r[5*U]);var J=[0,0,0];if(J[k]=1,this.tickEnable[k]){for(-3600===this.tickAngle[k]?(this.tickAngle[k]=0,this.tickAlign[k]="auto"):this.tickAlign[k]=-1,E=1,"auto"===(S=[this.tickAlign[k],.5,E])[0]?S[0]=0:S[0]=parseInt(""+S[0]),C=[0,0,0],P=$,void 0,void 0,void 0,void 0,void 0,void 0,D=((I=k)+2)%3,O=(L=X)[z=(I+1)%3],R=L[D],F=P[z],B=P[D],O>0&&B>0||O>0&&B<0||O<0&&B>0||O<0&&B<0?Y(z):(R>0&&F>0||R>0&&F<0||R<0&&F>0||R<0&&F<0)&&Y(D),U=0;U<3;++U)K[U]+=A*X[U]*this.tickPad[U]/r[5*U];this._text.drawTicks(k,this.tickSize[k],this.tickAngle[k],K,this.tickColor[k],J,C,S)}if(this.labelEnable[k]){for(E=0,C=[0,0,0],this.labels[k].length>4&&(Y(k),E=1),"auto"===(S=[this.labelAlign[k],.5,E])[0]?S[0]=0:S[0]=parseInt(""+S[0]),U=0;U<3;++U)K[U]+=A*X[U]*this.labelPad[U]/r[5*U];K[k]+=.5*(a[0][k]+a[1][k]),this._text.drawLabel(k,this.labelSize[k],this.labelAngle[k],K,this.labelColor[k],[0,0,0],C,S)}}this._text.unbind()},d.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null}},5304:function(t,e,r){t.exports=function(t){for(var e=[],r=[],s=0,l=0;l<3;++l)for(var c=(l+1)%3,u=(l+2)%3,h=[0,0,0],p=[0,0,0],f=-1;f<=1;f+=2){r.push(s,s+2,s+1,s+1,s+2,s+3),h[l]=f,p[l]=f;for(var d=-1;d<=1;d+=2){h[c]=d;for(var m=-1;m<=1;m+=2)h[u]=m,e.push(h[0],h[1],h[2],p[0],p[1],p[2]),s+=1}var g=c;c=u,u=g}var y=n(t,new Float32Array(e)),v=n(t,new Uint16Array(r),t.ELEMENT_ARRAY_BUFFER),x=i(t,[{buffer:y,type:t.FLOAT,size:3,offset:0,stride:24},{buffer:y,type:t.FLOAT,size:3,offset:12,stride:24}],v),_=a(t);return _.attributes.position.location=0,_.attributes.normal.location=1,new o(t,y,x,_)};var n=r(2762),i=r(8116),a=r(1879).bg;function o(t,e,r,n){this.gl=t,this.buffer=e,this.vao=r,this.shader=n}var s=o.prototype;s.draw=function(t,e,r,n,i,a){for(var o=!1,s=0;s<3;++s)o=o||i[s];if(o){var l=this.gl;l.enable(l.POLYGON_OFFSET_FILL),l.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:t,view:e,projection:r,bounds:n,enable:i,colors:a},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),l.disable(l.POLYGON_OFFSET_FILL)}},s.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()}},6429:function(t,e,r){t.exports=function(t,e,r,a,f){i(s,e,t),i(s,r,s);for(var v=0,x=0;x<2;++x){u[2]=a[x][2];for(var _=0;_<2;++_){u[1]=a[_][1];for(var b=0;b<2;++b)u[0]=a[b][0],p(l[v],u,s),v+=1}}var w=-1;for(x=0;x<8;++x){for(var T=l[x][3],A=0;A<3;++A)c[x][A]=l[x][A]/T;f&&(c[x][2]*=-1),T<0&&(w<0||c[x][2]E&&(w|=1<E&&(w|=1<c[x][1])&&(R=x);var F=-1;for(x=0;x<3;++x)(j=R^1<c[B][0]&&(B=j))}var N=m;N[0]=N[1]=N[2]=0,N[n.log2(F^R)]=R&F,N[n.log2(R^B)]=R&B;var U=7^B;U===w||U===O?(U=7^F,N[n.log2(B^U)]=U&B):N[n.log2(F^U)]=U&F;var V=g,q=w;for(k=0;k<3;++k)V[k]=q&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ?\n b - PI :\n b;\n}\n\nfloat look_horizontal_or_vertical(float a, float ratio) {\n // ratio controls the ratio between being horizontal to (vertical + horizontal)\n // if ratio is set to 0.5 then it is 50%, 50%.\n // when using a higher ratio e.g. 0.75 the result would\n // likely be more horizontal than vertical.\n\n float b = positive_angle(a);\n\n return\n (b < ( ratio) * HALF_PI) ? 0.0 :\n (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI :\n (b < (2.0 + ratio) * HALF_PI) ? 0.0 :\n (b < (4.0 - ratio) * HALF_PI) ? HALF_PI :\n 0.0;\n}\n\nfloat roundTo(float a, float b) {\n return float(b * floor((a + 0.5 * b) / b));\n}\n\nfloat look_round_n_directions(float a, int n) {\n float b = positive_angle(a);\n float div = TWO_PI / float(n);\n float c = roundTo(b, div);\n return look_upwards(c);\n}\n\nfloat applyAlignOption(float rawAngle, float delta) {\n return\n (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions\n (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical\n (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis\n (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards\n (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal\n rawAngle; // otherwise return back raw input angle\n}\n\nbool isAxisTitle = (axis.x == 0.0) &&\n (axis.y == 0.0) &&\n (axis.z == 0.0);\n\nvoid main() {\n //Compute world offset\n float axisDistance = position.z;\n vec3 dataPosition = axisDistance * axis + offset;\n\n float beta = angle; // i.e. user defined attributes for each tick\n\n float axisAngle;\n float clipAngle;\n float flip;\n\n if (enableAlign) {\n axisAngle = (isAxisTitle) ? HALF_PI :\n computeViewAngle(dataPosition, dataPosition + axis);\n clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir);\n\n axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0;\n clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0;\n\n flip = (dot(vec2(cos(axisAngle), sin(axisAngle)),\n vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0;\n\n beta += applyAlignOption(clipAngle, flip * PI);\n }\n\n //Compute plane offset\n vec2 planeCoord = position.xy * pixelScale;\n\n mat2 planeXform = scale * mat2(\n cos(beta), sin(beta),\n -sin(beta), cos(beta)\n );\n\n vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution;\n\n //Compute clip position\n vec3 clipPosition = project(dataPosition);\n\n //Apply text offset in clip coordinates\n clipPosition += vec3(viewOffset, 0.0);\n\n //Done\n gl_Position = vec4(clipPosition, 1.0);\n}\n"]),l=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 color;\nvoid main() {\n gl_FragColor = color;\n}"]);e.Q=function(t){return i(t,s,l,null,[{name:"position",type:"vec3"}])};var c=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec3 normal;\n\nuniform mat4 model, view, projection;\nuniform vec3 enable;\nuniform vec3 bounds[2];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n\n vec3 signAxis = sign(bounds[1] - bounds[0]);\n\n vec3 realNormal = signAxis * normal;\n\n if(dot(realNormal, enable) > 0.0) {\n vec3 minRange = min(bounds[0], bounds[1]);\n vec3 maxRange = max(bounds[0], bounds[1]);\n vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0));\n gl_Position = projection * (view * (model * vec4(nPosition, 1.0)));\n } else {\n gl_Position = vec4(0,0,0,0);\n }\n\n colorChannel = abs(realNormal);\n}\n"]),u=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform vec4 colors[3];\n\nvarying vec3 colorChannel;\n\nvoid main() {\n gl_FragColor = colorChannel.x * colors[0] +\n colorChannel.y * colors[1] +\n colorChannel.z * colors[2];\n}"]);e.bg=function(t){return i(t,c,u,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},4935:function(t,e,r){t.exports=function(t,e,r,a,s,l){var c=n(t),h=i(t,[{buffer:c,size:3}]),p=o(t);p.attributes.position.location=0;var f=new u(t,p,c,h);return f.update(e,r,a,s,l),f};var n=r(2762),i=r(8116),a=r(4359),o=r(1879).Q,s=window||c.global||{},l=s.__TEXT_CACHE||{};function u(t,e,r,n){this.gl=t,this.shader=e,this.buffer=r,this.vao=n,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}s.__TEXT_CACHE={};var h=u.prototype,p=[0,0];h.bind=function(t,e,r,n){this.vao.bind(),this.shader.bind();var i=this.shader.uniforms;i.model=t,i.view=e,i.projection=r,i.pixelScale=n,p[0]=this.gl.drawingBufferWidth,p[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=p},h.unbind=function(){this.vao.unbind()},h.update=function(t,e,r,n,i){var o=[];function s(t,e,r,n,i,s){var c=[r.style,r.weight,r.variant,r.family].join("_"),u=l[c];u||(u=l[c]={});var h=u[e];h||(h=u[e]=function(t,e){try{return a(t,e)}catch(e){return console.warn('error vectorizing text:"'+t+'" error:',e),{cells:[],positions:[]}}}(e,{triangles:!0,font:r.family,fontStyle:r.style,fontWeight:r.weight,fontVariant:r.variant,textAlign:"center",textBaseline:"middle",lineSpacing:i,styletags:s}));for(var p=(n||12)/12,f=h.positions,d=h.cells,m=0,g=d.length;m=0;--v){var x=f[y[v]];o.push(p*x[0],-p*x[1],t)}}for(var c=[0,0,0],u=[0,0,0],h=[0,0,0],p=[0,0,0],f={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},d=0;d<3;++d){h[d]=o.length/3|0,s(.5*(t[0][d]+t[1][d]),e[d],r[d],12,1.25,f),p[d]=(o.length/3|0)-h[d],c[d]=o.length/3|0;for(var m=0;m=0&&(i=r.length-n-1);var a=Math.pow(10,i),o=Math.round(t*e*a),s=o+"";if(s.indexOf("e")>=0)return s;var l=o/a,c=o%a;o<0?(l=0|-Math.ceil(l),c=0|-c):(l=0|Math.floor(l),c|=0);var u=""+l;if(o<0&&(u="-"+u),i){for(var h=""+c;h.length=t[0][i];--o)a.push({x:o*e[i],text:r(e[i],o)});n.push(a)}return n},e.equal=function(t,e){for(var r=0;r<3;++r){if(t[r].length!==e[r].length)return!1;for(var n=0;nr)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return t.bufferSubData(e,a,i),r}function u(t,e){for(var r=n.malloc(t.length,e),i=t.length,a=0;a=0;--n){if(e[n]!==r)return!1;r*=t[n]}return!0}(t.shape,t.stride))0===t.offset&&t.data.length===t.shape[0]?this.length=c(this.gl,this.type,this.length,this.usage,t.data,e):this.length=c(this.gl,this.type,this.length,this.usage,t.data.subarray(t.offset,t.shape[0]),e);else{var s=n.malloc(t.size,r),l=a(s,t.shape);i.assign(l,t),this.length=c(this.gl,this.type,this.length,this.usage,e<0?s:s.subarray(0,t.size),e),n.free(s)}}else if(Array.isArray(t)){var h;h=this.type===this.gl.ELEMENT_ARRAY_BUFFER?u(t,"uint16"):u(t,"float32"),this.length=c(this.gl,this.type,this.length,this.usage,e<0?h:h.subarray(0,t.length),e),n.free(h)}else if("object"==typeof t&&"number"==typeof t.length)this.length=c(this.gl,this.type,this.length,this.usage,t,e);else{if("number"!=typeof t&&void 0!==t)throw new Error("gl-buffer: Invalid data type");if(e>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");(t|=0)<=0&&(t=1),this.gl.bufferData(this.type,0|t,this.usage),this.length=t}},t.exports=function(t,e,r,n){if(r=r||t.ARRAY_BUFFER,n=n||t.DYNAMIC_DRAW,r!==t.ARRAY_BUFFER&&r!==t.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(n!==t.DYNAMIC_DRAW&&n!==t.STATIC_DRAW&&n!==t.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var i=t.createBuffer(),a=new s(t,r,i,0,n);return a.update(e),a}},6405:function(t,e,r){var n=r(2931);t.exports=function(t,e){var r=t.positions,i=t.vectors,a={positions:[],vertexIntensity:[],vertexIntensityBounds:t.vertexIntensityBounds,vectors:[],cells:[],coneOffset:t.coneOffset,colormap:t.colormap};if(0===t.positions.length)return e&&(e[0]=[0,0,0],e[1]=[0,0,0]),a;for(var o=0,s=1/0,l=-1/0,c=1/0,u=-1/0,h=1/0,p=-1/0,f=null,d=null,m=[],g=1/0,y=!1,v="raw"===t.coneSizemode,x=0;xo&&(o=n.length(b)),x&&!v){var w=2*n.distance(f,_)/(n.length(d)+n.length(b));w?(g=Math.min(g,w),y=!1):y=!0}y||(f=_,d=b),m.push(b)}var T=[s,c,h],A=[l,u,p];e&&(e[0]=T,e[1]=A),0===o&&(o=1);var k=1/o;isFinite(g)||(g=1),a.vectorScale=g;var M=t.coneSize||(v?1:.5);t.absoluteConeSize&&(M=t.absoluteConeSize*k),a.coneScale=M,x=0;for(var S=0;x=1},f.isTransparent=function(){return this.opacity<1},f.pickSlots=1,f.setPickBase=function(t){this.pickId=t},f.update=function(t){t=t||{};var e=this.gl;this.dirty=!0,"lightPosition"in t&&(this.lightPosition=t.lightPosition),"opacity"in t&&(this.opacity=t.opacity),"ambient"in t&&(this.ambientLight=t.ambient),"diffuse"in t&&(this.diffuseLight=t.diffuse),"specular"in t&&(this.specularLight=t.specular),"roughness"in t&&(this.roughness=t.roughness),"fresnel"in t&&(this.fresnel=t.fresnel),void 0!==t.tubeScale&&(this.tubeScale=t.tubeScale),void 0!==t.vectorScale&&(this.vectorScale=t.vectorScale),void 0!==t.coneScale&&(this.coneScale=t.coneScale),void 0!==t.coneOffset&&(this.coneOffset=t.coneOffset),t.colormap&&(this.texture.shape=[256,256],this.texture.minFilter=e.LINEAR_MIPMAP_LINEAR,this.texture.magFilter=e.LINEAR,this.texture.setPixels(function(t){for(var e=u({colormap:t,nshades:256,format:"rgba"}),r=new Uint8Array(1024),n=0;n<256;++n){for(var i=e[n],a=0;a<3;++a)r[4*n+a]=i[a];r[4*n+3]=255*i[3]}return c(r,[256,256,4],[4,0,1])}(t.colormap)),this.texture.generateMipmap());var r=t.cells,n=t.positions,i=t.vectors;if(n&&r&&i){var a=[],o=[],s=[],l=[],h=[];this.cells=r,this.positions=n,this.vectors=i;var p=t.meshColor||[1,1,1,1],f=t.vertexIntensity,d=1/0,m=-1/0;if(f)if(t.vertexIntensityBounds)d=+t.vertexIntensityBounds[0],m=+t.vertexIntensityBounds[1];else for(var g=0;g0){var m=this.triShader;m.bind(),m.uniforms=c,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()}},f.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||h,n=t.view||h,i=t.projection||h,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s={model:r,view:n,projection:i,clipBounds:a,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},l=this.pickShader;l.bind(),l.uniforms=s,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind())},f.pick=function(t){if(!t||t.id!==this.pickId)return null;var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions[r[1]].slice(0,3),i={position:n,dataCoordinate:n,index:Math.floor(r[1]/48)};return"cone"===this.traceType?i.index=Math.floor(r[1]/48):"streamtube"===this.traceType&&(i.intensity=this.intensity[r[1]],i.velocity=this.vectors[r[1]].slice(0,3),i.divergence=this.vectors[r[1]][3],i.index=e),i},f.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()},t.exports=function(t,e,r){var s=r.shaders;1===arguments.length&&(t=(e=t).gl);var l=function(t,e){var r=n(t,e.meshShader.vertex,e.meshShader.fragment,null,e.meshShader.attributes);return r.attributes.position.location=0,r.attributes.color.location=2,r.attributes.uv.location=3,r.attributes.vector.location=4,r}(t,s),u=function(t,e){var r=n(t,e.pickShader.vertex,e.pickShader.fragment,null,e.pickShader.attributes);return r.attributes.position.location=0,r.attributes.id.location=1,r.attributes.vector.location=4,r}(t,s),h=o(t,c(new Uint8Array([255,255,255,255]),[1,1,4]));h.generateMipmap(),h.minFilter=t.LINEAR_MIPMAP_LINEAR,h.magFilter=t.LINEAR;var f=i(t),d=i(t),m=i(t),g=i(t),y=i(t),v=new p(t,h,l,u,f,d,y,m,g,a(t,[{buffer:f,type:t.FLOAT,size:4},{buffer:y,type:t.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:m,type:t.FLOAT,size:4},{buffer:g,type:t.FLOAT,size:2},{buffer:d,type:t.FLOAT,size:4}]),r.traceType||"cone");return v.update(e),v}},614:function(t,e,r){var n=r(3236),i=n(["precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the cone vertex and normal at the given index.\n//\n// The returned vertex is for a cone with its top at origin and height of 1.0,\n// pointing in the direction of the vector attribute.\n//\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\n// These vertices are used to make up the triangles of the cone by the following:\n// segment + 0 top vertex\n// segment + 1 perimeter vertex a+1\n// segment + 2 perimeter vertex a\n// segment + 3 center base vertex\n// segment + 4 perimeter vertex a\n// segment + 5 perimeter vertex a+1\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\n// To go from index to segment, floor(index / 6)\n// To go from segment to angle, 2*pi * (segment/segmentCount)\n// To go from index to segment index, index - (segment*6)\n//\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\n\n const float segmentCount = 8.0;\n\n float index = rawIndex - floor(rawIndex /\n (segmentCount * 6.0)) *\n (segmentCount * 6.0);\n\n float segment = floor(0.001 + index/6.0);\n float segmentIndex = index - (segment*6.0);\n\n normal = -normalize(d);\n\n if (segmentIndex > 2.99 && segmentIndex < 3.01) {\n return mix(vec3(0.0), -d, coneOffset);\n }\n\n float nextAngle = (\n (segmentIndex > 0.99 && segmentIndex < 1.01) ||\n (segmentIndex > 4.99 && segmentIndex < 5.01)\n ) ? 1.0 : 0.0;\n float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\n\n vec3 v1 = mix(d, vec3(0.0), coneOffset);\n vec3 v2 = v1 - d;\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d)*0.25;\n vec3 y = v * sin(angle) * length(d)*0.25;\n vec3 v3 = v2 + x + y;\n if (segmentIndex < 3.0) {\n vec3 tx = u * sin(angle);\n vec3 ty = v * -cos(angle);\n vec3 tangent = tx + ty;\n normal = normalize(cross(v3 - v1, tangent));\n }\n\n if (segmentIndex == 0.0) {\n return mix(d, vec3(0.0), coneOffset);\n }\n return v3;\n}\n\nattribute vec3 vector;\nattribute vec4 color, position;\nattribute vec2 uv;\n\nuniform float vectorScale, coneScale, coneOffset;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 eyePosition, lightPosition;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n // Scale the vector magnitude to stay constant with\n // model & view changes.\n vec3 normal;\n vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal);\n vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * conePosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n // vec4 m_position = model * vec4(conePosition, 1.0);\n vec4 t_position = view * conePosition;\n gl_Position = projection * t_position;\n\n f_color = color;\n f_data = conePosition.xyz;\n f_position = position.xyz;\n f_uv = uv;\n}\n"]),a=n(["#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform sampler2D texture;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * opacity;\n}\n"]),o=n(["precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the cone vertex and normal at the given index.\n//\n// The returned vertex is for a cone with its top at origin and height of 1.0,\n// pointing in the direction of the vector attribute.\n//\n// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices.\n// These vertices are used to make up the triangles of the cone by the following:\n// segment + 0 top vertex\n// segment + 1 perimeter vertex a+1\n// segment + 2 perimeter vertex a\n// segment + 3 center base vertex\n// segment + 4 perimeter vertex a\n// segment + 5 perimeter vertex a+1\n// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment.\n// To go from index to segment, floor(index / 6)\n// To go from segment to angle, 2*pi * (segment/segmentCount)\n// To go from index to segment index, index - (segment*6)\n//\nvec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) {\n\n const float segmentCount = 8.0;\n\n float index = rawIndex - floor(rawIndex /\n (segmentCount * 6.0)) *\n (segmentCount * 6.0);\n\n float segment = floor(0.001 + index/6.0);\n float segmentIndex = index - (segment*6.0);\n\n normal = -normalize(d);\n\n if (segmentIndex > 2.99 && segmentIndex < 3.01) {\n return mix(vec3(0.0), -d, coneOffset);\n }\n\n float nextAngle = (\n (segmentIndex > 0.99 && segmentIndex < 1.01) ||\n (segmentIndex > 4.99 && segmentIndex < 5.01)\n ) ? 1.0 : 0.0;\n float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount);\n\n vec3 v1 = mix(d, vec3(0.0), coneOffset);\n vec3 v2 = v1 - d;\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d)*0.25;\n vec3 y = v * sin(angle) * length(d)*0.25;\n vec3 v3 = v2 + x + y;\n if (segmentIndex < 3.0) {\n vec3 tx = u * sin(angle);\n vec3 ty = v * -cos(angle);\n vec3 tangent = tx + ty;\n normal = normalize(cross(v3 - v1, tangent));\n }\n\n if (segmentIndex == 0.0) {\n return mix(d, vec3(0.0), coneOffset);\n }\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform float vectorScale, coneScale, coneOffset;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n vec3 normal;\n vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal);\n vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n gl_Position = projection * (view * conePosition);\n f_id = id;\n f_position = position.xyz;\n}\n"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]);e.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},e.pickShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(t){t.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(t,e,r){var n=r(737);t.exports=function(t){return n[t]}},9165:function(t,e,r){t.exports=function(t){var e=t.gl,r=n(e),o=i(e,[{buffer:r,type:e.FLOAT,size:3,offset:0,stride:40},{buffer:r,type:e.FLOAT,size:4,offset:12,stride:40},{buffer:r,type:e.FLOAT,size:3,offset:28,stride:40}]),l=a(e);l.attributes.position.location=0,l.attributes.color.location=1,l.attributes.offset.location=2;var c=new s(e,r,o,l);return c.update(t),c};var n=r(2762),i=r(8116),a=r(3436),o=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function s(t,e,r,n){this.gl=t,this.shader=n,this.buffer=e,this.vao=r,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var l=s.prototype;function c(t,e){for(var r=0;r<3;++r)t[0][r]=Math.min(t[0][r],e[r]),t[1][r]=Math.max(t[1][r],e[r])}l.isOpaque=function(){return!this.hasAlpha},l.isTransparent=function(){return this.hasAlpha},l.drawTransparent=l.draw=function(t){var e=this.gl,r=this.shader.uniforms;this.shader.bind();var n=r.view=t.view||o,i=r.projection=t.projection||o;r.model=t.model||o,r.clipBounds=this.clipBounds,r.opacity=this.opacity;var a=n[12],s=n[13],l=n[14],c=n[15],u=(t._ortho?2:1)*this.pixelRatio*(i[3]*a+i[7]*s+i[11]*l+i[15]*c)/e.drawingBufferHeight;this.vao.bind();for(var h=0;h<3;++h)e.lineWidth(this.lineWidth[h]*this.pixelRatio),r.capSize=this.capSize[h]*u,this.lineCount[h]&&e.drawArrays(e.LINES,this.lineOffset[h],this.lineCount[h]);this.vao.unbind()};var u=function(){for(var t=new Array(3),e=0;e<3;++e){for(var r=[],n=1;n<=2;++n)for(var i=-1;i<=1;i+=2){var a=[0,0,0];a[(n+e)%3]=i,r.push(a)}t[e]=r}return t}();function h(t,e,r,n){for(var i=u[n],a=0;a0&&((f=u.slice())[s]+=d[1][s],i.push(u[0],u[1],u[2],m[0],m[1],m[2],m[3],0,0,0,f[0],f[1],f[2],m[0],m[1],m[2],m[3],0,0,0),c(this.bounds,f),o+=2+h(i,f,m,s)))}this.lineCount[s]=o-this.lineOffset[s]}this.buffer.update(i)}},l.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()}},3436:function(t,e,r){var n=r(3236),i=r(9405),a=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, offset;\nattribute vec4 color;\nuniform mat4 model, view, projection;\nuniform float capSize;\nvarying vec4 fragColor;\nvarying vec3 fragPosition;\n\nvoid main() {\n vec4 worldPosition = model * vec4(position, 1.0);\n worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0);\n gl_Position = projection * (view * worldPosition);\n fragColor = color;\n fragPosition = position;\n}"]),o=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float opacity;\nvarying vec3 fragPosition;\nvarying vec4 fragColor;\n\nvoid main() {\n if (\n outOfRange(clipBounds[0], clipBounds[1], fragPosition) ||\n fragColor.a * opacity == 0.\n ) discard;\n\n gl_FragColor = opacity * fragColor;\n}"]);t.exports=function(t){return i(t,a,o,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(t,e,r){var n=r(7766);t.exports=function(t,e,r,n){i||(i=t.FRAMEBUFFER_UNSUPPORTED,a=t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT,o=t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS,s=t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT);var c=t.getExtension("WEBGL_draw_buffers");if(!l&&c&&function(t,e){var r=t.getParameter(e.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(r+1);for(var n=0;n<=r;++n){for(var i=new Array(r),a=0;au||r<0||r>u)throw new Error("gl-fbo: Parameters are too large for FBO");var h=1;if("color"in(n=n||{})){if((h=Math.max(0|n.color,0))<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(h>1){if(!c)throw new Error("gl-fbo: Multiple draw buffer extension not supported");if(h>t.getParameter(c.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+h+" draw buffers")}}var p=t.UNSIGNED_BYTE,f=t.getExtension("OES_texture_float");if(n.float&&h>0){if(!f)throw new Error("gl-fbo: Context does not support floating point textures");p=t.FLOAT}else n.preferFloat&&h>0&&f&&(p=t.FLOAT);var m=!0;"depth"in n&&(m=!!n.depth);var g=!1;return"stencil"in n&&(g=!!n.stencil),new d(t,e,r,p,h,m,g,c)};var i,a,o,s,l=null;function c(t){return[t.getParameter(t.FRAMEBUFFER_BINDING),t.getParameter(t.RENDERBUFFER_BINDING),t.getParameter(t.TEXTURE_BINDING_2D)]}function u(t,e){t.bindFramebuffer(t.FRAMEBUFFER,e[0]),t.bindRenderbuffer(t.RENDERBUFFER,e[1]),t.bindTexture(t.TEXTURE_2D,e[2])}function h(t){switch(t){case i:throw new Error("gl-fbo: Framebuffer unsupported");case a:throw new Error("gl-fbo: Framebuffer incomplete attachment");case o:throw new Error("gl-fbo: Framebuffer incomplete dimensions");case s:throw new Error("gl-fbo: Framebuffer incomplete missing attachment");default:throw new Error("gl-fbo: Framebuffer failed for unspecified reason")}}function p(t,e,r,i,a,o){if(!i)return null;var s=n(t,e,r,a,i);return s.magFilter=t.NEAREST,s.minFilter=t.NEAREST,s.mipSamples=1,s.bind(),t.framebufferTexture2D(t.FRAMEBUFFER,o,t.TEXTURE_2D,s.handle,0),s}function f(t,e,r,n,i){var a=t.createRenderbuffer();return t.bindRenderbuffer(t.RENDERBUFFER,a),t.renderbufferStorage(t.RENDERBUFFER,n,e,r),t.framebufferRenderbuffer(t.FRAMEBUFFER,i,t.RENDERBUFFER,a),a}function d(t,e,r,n,i,a,o,s){this.gl=t,this._shape=[0|e,0|r],this._destroyed=!1,this._ext=s,this.color=new Array(i);for(var d=0;d1&&s.drawBuffersWEBGL(l[o]);var v=r.getExtension("WEBGL_depth_texture");v?d?t.depth=p(r,i,a,v.UNSIGNED_INT_24_8_WEBGL,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):m&&(t.depth=p(r,i,a,r.UNSIGNED_SHORT,r.DEPTH_COMPONENT,r.DEPTH_ATTACHMENT)):m&&d?t._depth_rb=f(r,i,a,r.DEPTH_STENCIL,r.DEPTH_STENCIL_ATTACHMENT):m?t._depth_rb=f(r,i,a,r.DEPTH_COMPONENT16,r.DEPTH_ATTACHMENT):d&&(t._depth_rb=f(r,i,a,r.STENCIL_INDEX,r.STENCIL_ATTACHMENT));var x=r.checkFramebufferStatus(r.FRAMEBUFFER);if(x!==r.FRAMEBUFFER_COMPLETE){for(t._destroyed=!0,r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteFramebuffer(t.handle),t.handle=null,t.depth&&(t.depth.dispose(),t.depth=null),t._depth_rb&&(r.deleteRenderbuffer(t._depth_rb),t._depth_rb=null),y=0;yi||r<0||r>i)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");t._shape[0]=e,t._shape[1]=r;for(var a=c(n),o=0;o max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform sampler2D dashTexture;\nuniform float dashScale;\nuniform float opacity;\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if (\n outOfRange(clipBounds[0], clipBounds[1], worldPosition) ||\n fragColor.a * opacity == 0.\n ) discard;\n\n float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r;\n if(dashWeight < 0.5) {\n discard;\n }\n gl_FragColor = fragColor * opacity;\n}\n"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\n#define FLOAT_MAX 1.70141184e38\n#define FLOAT_MIN 1.17549435e-38\n\n// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl\nvec4 packFloat(float v) {\n float av = abs(v);\n\n //Handle special cases\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(127.0, 128.0, 0.0, 0.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(255.0, 128.0, 0.0, 0.0) / 255.0;\n }\n\n vec4 c = vec4(0,0,0,0);\n\n //Compute exponent and mantissa\n float e = floor(log2(av));\n float m = av * pow(2.0, -e) - 1.0;\n\n //Unpack mantissa\n c[1] = floor(128.0 * m);\n m -= c[1] / 128.0;\n c[2] = floor(32768.0 * m);\n m -= c[2] / 32768.0;\n c[3] = floor(8388608.0 * m);\n\n //Unpack exponent\n float ebias = e + 127.0;\n c[0] = floor(ebias / 2.0);\n ebias -= c[0] * 2.0;\n c[1] += floor(ebias) * 128.0;\n\n //Unpack sign bit\n c[0] += 128.0 * step(0.0, -v);\n\n //Scale back to range\n return c / 255.0;\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform float pickId;\nuniform vec3 clipBounds[2];\n\nvarying vec3 worldPosition;\nvarying float pixelArcLength;\nvarying vec4 fragColor;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard;\n\n gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz);\n}"]),l=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];e.createShader=function(t){return i(t,a,o,null,l)},e.createPickShader=function(t){return i(t,a,s,null,l)}},5714:function(t,e,r){t.exports=function(t){var e=t.gl||t.scene&&t.scene.gl,r=h(e);r.attributes.position.location=0,r.attributes.nextPosition.location=1,r.attributes.arcLength.location=2,r.attributes.lineWidth.location=3,r.attributes.color.location=4;var o=p(e);o.attributes.position.location=0,o.attributes.nextPosition.location=1,o.attributes.arcLength.location=2,o.attributes.lineWidth.location=3,o.attributes.color.location=4;for(var s=n(e),l=i(e,[{buffer:s,size:3,offset:0,stride:48},{buffer:s,size:3,offset:12,stride:48},{buffer:s,size:1,offset:24,stride:48},{buffer:s,size:1,offset:28,stride:48},{buffer:s,size:4,offset:32,stride:48}]),u=c(new Array(1024),[256,1,4]),f=0;f<1024;++f)u.data[f]=255;var d=a(e,u);d.wrap=e.REPEAT;var m=new y(e,r,o,s,l,d);return m.update(t),m};var n=r(2762),i=r(8116),a=r(7766),o=new Uint8Array(4),s=new Float32Array(o.buffer),l=r(2478),c=r(9618),u=r(7319),h=u.createShader,p=u.createPickShader,f=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function d(t,e){for(var r=0,n=0;n<3;++n){var i=t[n]-e[n];r+=i*i}return Math.sqrt(r)}function m(t){for(var e=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],r=0;r<3;++r)e[0][r]=Math.max(t[0][r],e[0][r]),e[1][r]=Math.min(t[1][r],e[1][r]);return e}function g(t,e,r,n){this.arcLength=t,this.position=e,this.index=r,this.dataCoordinate=n}function y(t,e,r,n,i,a){this.gl=t,this.shader=e,this.pickShader=r,this.buffer=n,this.vao=i,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=a,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var v=y.prototype;v.isTransparent=function(){return this.hasAlpha},v.isOpaque=function(){return!this.hasAlpha},v.pickSlots=1,v.setPickBase=function(t){this.pickId=t},v.drawTransparent=v.draw=function(t){if(this.vertexCount){var e=this.gl,r=this.shader,n=this.vao;r.bind(),r.uniforms={model:t.model||f,view:t.view||f,projection:t.projection||f,clipBounds:m(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()}},v.drawPick=function(t){if(this.vertexCount){var e=this.gl,r=this.pickShader,n=this.vao;r.bind(),r.uniforms={model:t.model||f,view:t.view||f,projection:t.projection||f,pickId:this.pickId,clipBounds:m(this.clipBounds),screenShape:[e.drawingBufferWidth,e.drawingBufferHeight],pixelRatio:this.pixelRatio},n.bind(),n.draw(e.TRIANGLE_STRIP,this.vertexCount),n.unbind()}},v.update=function(t){var e,r;this.dirty=!0;var n=!!t.connectGaps;"dashScale"in t&&(this.dashScale=t.dashScale),this.hasAlpha=!1,"opacity"in t&&(this.opacity=+t.opacity,this.opacity<1&&(this.hasAlpha=!0));var i=[],a=[],o=[],s=0,u=0,h=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],p=t.position||t.positions;if(p){var f=t.color||t.colors||[0,0,0,1],m=t.lineWidth||1,g=!1;t:for(e=1;e0){for(var w=0;w<24;++w)i.push(i[i.length-12]);u+=2,g=!0}continue t}h[0][r]=Math.min(h[0][r],_[r],b[r]),h[1][r]=Math.max(h[1][r],_[r],b[r])}Array.isArray(f[0])?(y=f.length>e-1?f[e-1]:f.length>0?f[f.length-1]:[0,0,0,1],v=f.length>e?f[e]:f.length>0?f[f.length-1]:[0,0,0,1]):y=v=f,3===y.length&&(y=[y[0],y[1],y[2],1]),3===v.length&&(v=[v[0],v[1],v[2],1]),!this.hasAlpha&&y[3]<1&&(this.hasAlpha=!0),x=Array.isArray(m)?m.length>e-1?m[e-1]:m.length>0?m[m.length-1]:[0,0,0,1]:m;var T=s;if(s+=d(_,b),g){for(r=0;r<2;++r)i.push(_[0],_[1],_[2],b[0],b[1],b[2],T,x,y[0],y[1],y[2],y[3]);u+=2,g=!1}i.push(_[0],_[1],_[2],b[0],b[1],b[2],T,x,y[0],y[1],y[2],y[3],_[0],_[1],_[2],b[0],b[1],b[2],T,-x,y[0],y[1],y[2],y[3],b[0],b[1],b[2],_[0],_[1],_[2],s,-x,v[0],v[1],v[2],v[3],b[0],b[1],b[2],_[0],_[1],_[2],s,x,v[0],v[1],v[2],v[3]),u+=4}}if(this.buffer.update(i),a.push(s),o.push(p[p.length-1].slice()),this.bounds=h,this.vertexCount=u,this.points=o,this.arcLength=a,"dashes"in t){var A=t.dashes.slice();for(A.unshift(0),e=1;e1.0001)return null;y+=g[h]}return Math.abs(y-1)>.001?null:[p,s(t,g),g]}},840:function(t,e,r){var n=r(3236),i=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position, normal;\nattribute vec4 color;\nattribute vec2 uv;\n\nuniform mat4 model\n , view\n , projection\n , inverseModel;\nuniform vec3 eyePosition\n , lightPosition;\n\nvarying vec3 f_normal\n , f_lightDirection\n , f_eyeDirection\n , f_data;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvec4 project(vec3 p) {\n return projection * (view * (model * vec4(p, 1.0)));\n}\n\nvoid main() {\n gl_Position = project(position);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * vec4(position , 1.0);\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n f_color = color;\n f_data = position;\n f_uv = uv;\n}\n"]),a=n(["#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\n//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness\n , fresnel\n , kambient\n , kdiffuse\n , kspecular;\nuniform sampler2D texture;\n\nvarying vec3 f_normal\n , f_lightDirection\n , f_eyeDirection\n , f_data;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (f_color.a == 0.0 ||\n outOfRange(clipBounds[0], clipBounds[1], f_data)\n ) discard;\n\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d\n\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * f_color.a;\n}\n"]),o=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 uv;\n\nuniform mat4 model, view, projection;\n\nvarying vec4 f_color;\nvarying vec3 f_data;\nvarying vec2 f_uv;\n\nvoid main() {\n gl_Position = projection * (view * (model * vec4(position, 1.0)));\n f_color = color;\n f_data = position;\n f_uv = uv;\n}"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform sampler2D texture;\nuniform float opacity;\n\nvarying vec4 f_color;\nvarying vec3 f_data;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard;\n\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}"]),l=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 uv;\nattribute float pointSize;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0);\n } else {\n gl_Position = projection * (view * (model * vec4(position, 1.0)));\n }\n gl_PointSize = pointSize;\n f_color = color;\n f_uv = uv;\n}"]),c=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform sampler2D texture;\nuniform float opacity;\n\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5);\n if(dot(pointR, pointR) > 0.25) {\n discard;\n }\n gl_FragColor = f_color * texture2D(texture, f_uv) * opacity;\n}"]),u=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n gl_Position = projection * (view * (model * vec4(position, 1.0)));\n f_id = id;\n f_position = position;\n}"]),h=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]),p=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute float pointSize;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\n } else {\n gl_Position = projection * (view * (model * vec4(position, 1.0)));\n gl_PointSize = pointSize;\n }\n f_id = id;\n f_position = position;\n}"]),f=n(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec3 position;\n\nuniform mat4 model, view, projection;\n\nvoid main() {\n gl_Position = projection * (view * (model * vec4(position, 1.0)));\n}"]),d=n(["precision highp float;\n#define GLSLIFY 1\n\nuniform vec3 contourColor;\n\nvoid main() {\n gl_FragColor = vec4(contourColor, 1.0);\n}\n"]);e.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},e.wireShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},e.pointShader={vertex:l,fragment:c,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},e.pickShader={vertex:u,fragment:h,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},e.pointPickShader={vertex:p,fragment:h,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},e.contourShader={vertex:f,fragment:d,attributes:[{name:"position",type:"vec3"}]}},7201:function(t,e,r){var n=r(9405),i=r(2762),a=r(8116),o=r(7766),s=r(8406),l=r(6760),c=r(7608),u=r(9618),h=r(6729),p=r(7765),f=r(1888),d=r(840),m=r(7626),g=d.meshShader,y=d.wireShader,v=d.pointShader,x=d.pickShader,_=d.pointPickShader,b=d.contourShader,w=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function T(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,T,A,k,M,S){this.gl=t,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=e,this.dirty=!0,this.triShader=r,this.lineShader=n,this.pointShader=i,this.pickShader=a,this.pointPickShader=o,this.contourShader=s,this.trianglePositions=l,this.triangleColors=u,this.triangleNormals=p,this.triangleUVs=h,this.triangleIds=c,this.triangleVAO=f,this.triangleCount=0,this.lineWidth=1,this.edgePositions=d,this.edgeColors=g,this.edgeUVs=y,this.edgeIds=m,this.edgeVAO=v,this.edgeCount=0,this.pointPositions=x,this.pointColors=b,this.pointUVs=T,this.pointSizes=A,this.pointIds=_,this.pointVAO=k,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=M,this.contourVAO=S,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=w,this._view=w,this._projection=w,this._resolution=[1,1]}var A=T.prototype;function k(t,e){if(!e||!e.length)return 1;for(var r=0;rt&&r>0){var n=(e[r][0]-t)/(e[r][0]-e[r-1][0]);return e[r][1]*(1-n)+n*e[r-1][1]}}return 1}A.isOpaque=function(){return!this.hasAlpha},A.isTransparent=function(){return this.hasAlpha},A.pickSlots=1,A.setPickBase=function(t){this.pickId=t},A.highlight=function(t){if(t&&this.contourEnable){for(var e=p(this.cells,this.intensity,t.intensity),r=e.cells,n=e.vertexIds,i=e.vertexWeights,a=r.length,o=f.mallocFloat32(6*a),s=0,l=0;l0&&((u=this.triShader).bind(),u.uniforms=s,this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&this.lineWidth>0&&((u=this.lineShader).bind(),u.uniforms=s,this.edgeVAO.bind(),e.lineWidth(this.lineWidth*this.pixelRatio),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((u=this.pointShader).bind(),u.uniforms=s,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind()),this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0&&((u=this.contourShader).bind(),u.uniforms=s,this.contourVAO.bind(),e.drawArrays(e.LINES,0,this.contourCount),this.contourVAO.unbind())},A.drawPick=function(t){t=t||{};for(var e=this.gl,r=t.model||w,n=t.view||w,i=t.projection||w,a=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],o=0;o<3;++o)a[0][o]=Math.max(a[0][o],this.clipBounds[0][o]),a[1][o]=Math.min(a[1][o],this.clipBounds[1][o]);this._model=[].slice.call(r),this._view=[].slice.call(n),this._projection=[].slice.call(i),this._resolution=[e.drawingBufferWidth,e.drawingBufferHeight];var s,l={model:r,view:n,projection:i,clipBounds:a,pickId:this.pickId/255};(s=this.pickShader).bind(),s.uniforms=l,this.triangleCount>0&&(this.triangleVAO.bind(),e.drawArrays(e.TRIANGLES,0,3*this.triangleCount),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),e.lineWidth(this.lineWidth*this.pixelRatio),e.drawArrays(e.LINES,0,2*this.edgeCount),this.edgeVAO.unbind()),this.pointCount>0&&((s=this.pointPickShader).bind(),s.uniforms=l,this.pointVAO.bind(),e.drawArrays(e.POINTS,0,this.pointCount),this.pointVAO.unbind())},A.pick=function(t){if(!t||t.id!==this.pickId)return null;for(var e=t.value[0]+256*t.value[1]+65536*t.value[2],r=this.cells[e],n=this.positions,i=new Array(r.length),a=0;aMath.abs(e))c.rotate(a,0,0,-t*r*Math.PI*d.rotateSpeed/window.innerWidth);else if(!d._ortho){var o=-d.zoomSpeed*i*e/window.innerHeight*(a-c.lastT())/20;c.pan(a,0,0,h*(Math.exp(o)-1))}}}),!0)},d.enableMouseListeners(),d};var n=r(3025),i=r(6296),a=r(351),o=r(8512),s=r(24),l=r(7520)},799:function(t,e,r){var n=r(3236),i=r(9405),a=n(["precision mediump float;\n#define GLSLIFY 1\nattribute vec2 position;\nvarying vec2 uv;\nvoid main() {\n uv = position;\n gl_Position = vec4(position, 0, 1);\n}"]),o=n(["precision mediump float;\n#define GLSLIFY 1\n\nuniform sampler2D accumBuffer;\nvarying vec2 uv;\n\nvoid main() {\n vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0));\n gl_FragColor = min(vec4(1,1,1,1), accum);\n}"]);t.exports=function(t){return i(t,a,o,null,[{name:"position",type:"vec2"}])}},4100:function(t,e,r){var n=r(4437),i=r(3837),a=r(5445),o=r(4449),s=r(3589),l=r(2260),c=r(7169),u=r(351),h=r(4772),p=r(4040),f=r(799),d=r(9216)({tablet:!0,featureDetect:!0});function m(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function g(t){var e=Math.round(Math.log(Math.abs(t))/Math.log(10));if(e<0){var r=Math.round(Math.pow(10,-e));return Math.ceil(t*r)/r}return e>0?(r=Math.round(Math.pow(10,e)),Math.ceil(t/r)*r):Math.ceil(t)}function y(t){return"boolean"!=typeof t||t}t.exports={createScene:function(t){(t=t||{}).camera=t.camera||{};var e=t.canvas;e||(e=document.createElement("canvas"),t.container?t.container.appendChild(e):document.body.appendChild(e));var r=t.gl;if(r||(t.glOptions&&(d=!!t.glOptions.preserveDrawingBuffer),r=function(t,e){var r=null;try{(r=t.getContext("webgl",e))||(r=t.getContext("experimental-webgl",e))}catch{return null}return r}(e,t.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:d})),!r)throw new Error("webgl not supported");var v=t.bounds||[[-10,-10,-10],[10,10,10]],x=new m,_=l(r,r.drawingBufferWidth,r.drawingBufferHeight,{preferFloat:!d}),b=f(r),w=t.cameraObject&&!0===t.cameraObject._ortho||t.camera.projection&&"orthographic"===t.camera.projection.type||!1,T={eye:t.camera.eye||[2,0,0],center:t.camera.center||[0,0,0],up:t.camera.up||[0,1,0],zoomMin:t.camera.zoomMax||.1,zoomMax:t.camera.zoomMin||100,mode:t.camera.mode||"turntable",_ortho:w},A=t.axes||{},k=i(r,A);k.enable=!A.disable;var M=t.spikes||{},S=o(r,M),E=[],C=[],I=[],L=[],P=!0,z=!0,D={view:null,projection:new Array(16),model:new Array(16),_ortho:!1},O=(z=!0,[r.drawingBufferWidth,r.drawingBufferHeight]),R=t.cameraObject||n(e,T),F={gl:r,contextLost:!1,pixelRatio:t.pixelRatio||1,canvas:e,selection:x,camera:R,axes:k,axesPixels:null,spikes:S,bounds:v,objects:E,shape:O,aspect:t.aspectRatio||[1,1,1],pickRadius:t.pickRadius||10,zNear:t.zNear||.01,zFar:t.zFar||1e3,fovy:t.fovy||Math.PI/4,clearColor:t.clearColor||[0,0,0,0],autoResize:y(t.autoResize),autoBounds:y(t.autoBounds),autoScale:!!t.autoScale,autoCenter:y(t.autoCenter),clipToBounds:y(t.clipToBounds),snapToData:!!t.snapToData,onselect:t.onselect||null,onrender:t.onrender||null,onclick:t.onclick||null,cameraParams:D,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(t){this.aspect[0]=t.x,this.aspect[1]=t.y,this.aspect[2]=t.z,z=!0},setBounds:function(t,e){this.bounds[0][t]=e.min,this.bounds[1][t]=e.max},setClearColor:function(t){this.clearColor=t},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},B=[r.drawingBufferWidth/F.pixelRatio|0,r.drawingBufferHeight/F.pixelRatio|0];function j(){if(!F._stopped&&F.autoResize){var t=e.parentNode,r=1,n=1;t&&t!==document.body?(r=t.clientWidth,n=t.clientHeight):(r=window.innerWidth,n=window.innerHeight);var i=0|Math.ceil(r*F.pixelRatio),a=0|Math.ceil(n*F.pixelRatio);if(i!==e.width||a!==e.height){e.width=i,e.height=a;var o=e.style;o.position=o.position||"absolute",o.left="0px",o.top="0px",o.width=r+"px",o.height=n+"px",P=!0}}}function N(){for(var t=E.length,e=L.length,n=0;n0&&0===I[e-1];)I.pop(),L.pop().dispose()}function U(){if(F.contextLost)return!0;r.isContextLost()&&(F.contextLost=!0,F.mouseListener.enabled=!1,F.selection.object=null,F.oncontextloss&&F.oncontextloss())}F.autoResize&&j(),window.addEventListener("resize",j),F.update=function(t){F._stopped||(t=t||{},P=!0,z=!0)},F.add=function(t){F._stopped||(t.axes=k,E.push(t),C.push(-1),P=!0,z=!0,N())},F.remove=function(t){if(!F._stopped){var e=E.indexOf(t);e<0||(E.splice(e,1),C.pop(),P=!0,z=!0,N())}},F.dispose=function(){if(!F._stopped&&(F._stopped=!0,window.removeEventListener("resize",j),e.removeEventListener("webglcontextlost",U),F.mouseListener.enabled=!1,!F.contextLost)){k.dispose(),S.dispose();for(var t=0;tx.distance)continue;for(var c=0;c1e-6?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,l=Math.sin(n*i)/o):(s=1-n,l=n),t[0]=s*c+l*f,t[1]=s*u+l*d,t[2]=s*h+l*m,t[3]=s*p+l*g,t}},5964:function(t){t.exports=function(t){return t||0===t?t.toString():""}},9366:function(t,e,r){var n=r(4359);t.exports=function(t,e,r){var a=[e.style,e.weight,e.variant,e.family].join("_"),o=i[a];if(o||(o=i[a]={}),t in o)return o[t];var s={textAlign:"center",textBaseline:"middle",lineHeight:1,font:e.family,fontStyle:e.style,fontWeight:e.weight,fontVariant:e.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},triangles:!0},l=n(t,s);s.triangles=!1;var c,u,h=n(t,s);if(r&&1!==r){for(c=0;c max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform vec4 highlightId;\nuniform float highlightScale;\nuniform mat4 model, view, projection;\nuniform vec3 clipBounds[2];\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float scale = 1.0;\n if(distance(highlightId, id) < 0.0001) {\n scale = highlightScale;\n }\n\n vec4 worldPosition = model * vec4(position, 1);\n vec4 viewPosition = view * worldPosition;\n viewPosition = viewPosition / viewPosition.w;\n vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0));\n\n gl_Position = clipPosition;\n interpColor = color;\n pickId = id;\n dataCoordinate = position;\n }\n}"]),o=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform vec2 screenSize;\nuniform vec3 clipBounds[2];\nuniform float highlightScale, pixelRatio;\nuniform vec4 highlightId;\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float scale = pixelRatio;\n if(distance(highlightId.bgr, id.bgr) < 0.001) {\n scale *= highlightScale;\n }\n\n vec4 worldPosition = model * vec4(position, 1.0);\n vec4 viewPosition = view * worldPosition;\n vec4 clipPosition = projection * viewPosition;\n clipPosition /= clipPosition.w;\n\n gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0);\n interpColor = color;\n pickId = id;\n dataCoordinate = position;\n }\n}"]),s=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nattribute vec3 position;\nattribute vec4 color;\nattribute vec2 glyph;\nattribute vec4 id;\n\nuniform float highlightScale;\nuniform vec4 highlightId;\nuniform vec3 axes[2];\nuniform mat4 model, view, projection;\nuniform vec2 screenSize;\nuniform vec3 clipBounds[2];\nuniform float scale, pixelRatio;\n\nvarying vec4 interpColor;\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], position)) {\n\n gl_Position = vec4(0,0,0,0);\n } else {\n float lscale = pixelRatio * scale;\n if(distance(highlightId, id) < 0.0001) {\n lscale *= highlightScale;\n }\n\n vec4 clipCenter = projection * (view * (model * vec4(position, 1)));\n vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y;\n vec4 clipPosition = projection * (view * (model * vec4(dataPosition, 1)));\n\n gl_Position = clipPosition;\n interpColor = color;\n pickId = id;\n dataCoordinate = dataPosition;\n }\n}\n"]),l=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 fragClipBounds[2];\nuniform float opacity;\n\nvarying vec4 interpColor;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (\n outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) ||\n interpColor.a * opacity == 0.\n ) discard;\n gl_FragColor = interpColor * opacity;\n}\n"]),c=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 fragClipBounds[2];\nuniform float pickGroup;\n\nvarying vec4 pickId;\nvarying vec3 dataCoordinate;\n\nvoid main() {\n if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard;\n\n gl_FragColor = vec4(pickGroup, pickId.bgr);\n}"]),u=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],h={vertex:a,fragment:l,attributes:u},p={vertex:o,fragment:l,attributes:u},f={vertex:s,fragment:l,attributes:u},d={vertex:a,fragment:c,attributes:u},m={vertex:o,fragment:c,attributes:u},g={vertex:s,fragment:c,attributes:u};function y(t,e){var r=n(t,e),i=r.attributes;return i.position.location=0,i.color.location=1,i.glyph.location=2,i.id.location=3,r}e.createPerspective=function(t){return y(t,h)},e.createOrtho=function(t){return y(t,p)},e.createProject=function(t){return y(t,f)},e.createPickPerspective=function(t){return y(t,d)},e.createPickOrtho=function(t){return y(t,m)},e.createPickProject=function(t){return y(t,g)}},8418:function(t,e,r){var n=r(5219),i=r(2762),a=r(8116),o=r(1888),s=r(6760),l=r(1283),c=r(9366),u=r(5964),h=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],p=ArrayBuffer,f=DataView;function d(t){return Array.isArray(t)||function(t){return p.isView(t)&&!(t instanceof f)}(t)}function m(t,e){var r=t[0],n=t[1],i=t[2],a=t[3];return t[0]=e[0]*r+e[4]*n+e[8]*i+e[12]*a,t[1]=e[1]*r+e[5]*n+e[9]*i+e[13]*a,t[2]=e[2]*r+e[6]*n+e[10]*i+e[14]*a,t[3]=e[3]*r+e[7]*n+e[11]*i+e[15]*a,t}function g(t,e,r,n){return m(n,n),m(n,n),m(n,n)}function y(t,e){this.index=t,this.dataCoordinate=this.position=e}function v(t){return!0===t||t>1?1:t}function x(t,e,r,n,i,a,o,s,l,c,u,h){this.gl=t,this.pixelRatio=1,this.shader=e,this.orthoShader=r,this.projectShader=n,this.pointBuffer=i,this.colorBuffer=a,this.glyphBuffer=o,this.idBuffer=s,this.vao=l,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=c,this.pickOrthoShader=u,this.pickProjectShader=h,this.points=[],this._selectResult=new y(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}t.exports=function(t){var e=t.gl,r=l.createPerspective(e),n=l.createOrtho(e),o=l.createProject(e),s=l.createPickPerspective(e),c=l.createPickOrtho(e),u=l.createPickProject(e),h=i(e),p=i(e),f=i(e),d=i(e),m=new x(e,r,n,o,h,p,f,d,a(e,[{buffer:h,size:3,type:e.FLOAT},{buffer:p,size:4,type:e.FLOAT},{buffer:f,size:2,type:e.FLOAT},{buffer:d,size:4,type:e.UNSIGNED_BYTE,normalized:!0}]),s,c,u);return m.update(t),m};var _=x.prototype;_.pickSlots=1,_.setPickBase=function(t){this.pickId=t},_.isTransparent=function(){if(this.hasAlpha)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&this.projectHasAlpha)return!0;return!1},_.isOpaque=function(){if(!this.hasAlpha)return!0;for(var t=0;t<3;++t)if(this.axesProject[t]&&!this.projectHasAlpha)return!0;return!1};var b=[0,0],w=[0,0,0],T=[0,0,0],A=[0,0,0,1],k=[0,0,0,1],M=h.slice(),S=[0,0,0],E=[[0,0,0],[0,0,0]];function C(t){return t[0]=t[1]=t[2]=0,t}function I(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=1,t}function L(t,e,r,n){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[r]=n,t}var P=[[-1e8,-1e8,-1e8],[1e8,1e8,1e8]];function z(t,e,r,n,i,a,o){var l=r.gl;if((a===r.projectHasAlpha||o)&&function(t,e,r,n){var i,a=e.axesProject,o=e.gl,l=t.uniforms,c=r.model||h,u=r.view||h,p=r.projection||h,f=e.axesBounds,d=function(t){for(var e=E,r=0;r<2;++r)for(var n=0;n<3;++n)e[r][n]=Math.max(Math.min(t[r][n],1e8),-1e8);return e}(e.clipBounds);i=e.axes&&e.axes.lastCubeProps?e.axes.lastCubeProps.axis:[1,1,1],b[0]=2/o.drawingBufferWidth,b[1]=2/o.drawingBufferHeight,t.bind(),l.view=u,l.projection=p,l.screenSize=b,l.highlightId=e.highlightId,l.highlightScale=e.highlightScale,l.clipBounds=d,l.pickGroup=e.pickId/255,l.pixelRatio=n;for(var m=0;m<3;++m)if(a[m]){l.scale=e.projectScale[m],l.opacity=e.projectOpacity[m];for(var y=M,v=0;v<16;++v)y[v]=0;for(v=0;v<4;++v)y[5*v]=1;y[5*m]=0,i[m]<0?y[12+m]=f[0][m]:y[12+m]=f[1][m],s(y,c,y),l.model=y;var x=(m+1)%3,_=(m+2)%3,P=C(w),z=C(T);P[x]=1,z[_]=1;var D=g(0,0,0,I(A,P)),O=g(0,0,0,I(k,z));if(Math.abs(D[1])>Math.abs(O[1])){var R=D;D=O,O=R,R=P,P=z,z=R;var F=x;x=_,_=F}D[0]<0&&(P[x]=-1),O[1]>0&&(z[_]=-1);var B=0,j=0;for(v=0;v<4;++v)B+=Math.pow(c[4*x+v],2),j+=Math.pow(c[4*_+v],2);P[x]/=Math.sqrt(B),z[_]/=Math.sqrt(j),l.axes[0]=P,l.axes[1]=z,l.fragClipBounds[0]=L(S,d[0],m,-1e8),l.fragClipBounds[1]=L(S,d[1],m,1e8),e.vao.bind(),e.vao.draw(o.TRIANGLES,e.vertexCount),e.lineWidth>0&&(o.lineWidth(e.lineWidth*n),e.vao.draw(o.LINES,e.lineVertexCount,e.vertexCount)),e.vao.unbind()}}(e,r,n,i),a===r.hasAlpha||o){t.bind();var c=t.uniforms;c.model=n.model||h,c.view=n.view||h,c.projection=n.projection||h,b[0]=2/l.drawingBufferWidth,b[1]=2/l.drawingBufferHeight,c.screenSize=b,c.highlightId=r.highlightId,c.highlightScale=r.highlightScale,c.fragClipBounds=P,c.clipBounds=r.axes.bounds,c.opacity=r.opacity,c.pickGroup=r.pickId/255,c.pixelRatio=i,r.vao.bind(),r.vao.draw(l.TRIANGLES,r.vertexCount),r.lineWidth>0&&(l.lineWidth(r.lineWidth*i),r.vao.draw(l.LINES,r.lineVertexCount,r.vertexCount)),r.vao.unbind()}}function D(t,e,r,i){var a;a=d(t)?e=this.pointCount||e<0)return null;var r=this.points[e],n=this._selectResult;n.index=e;for(var i=0;i<3;++i)n.position[i]=n.dataCoordinate[i]=r[i];return n},_.highlight=function(t){if(t){var e=t.index,r=255&e,n=e>>8&255,i=e>>16&255;this.highlightId=[r/255,n/255,i/255,0]}else this.highlightId=[1,1,1,1]},_.update=function(t){if("perspective"in(t=t||{})&&(this.useOrtho=!t.perspective),"orthographic"in t&&(this.useOrtho=!!t.orthographic),"lineWidth"in t&&(this.lineWidth=t.lineWidth),"project"in t)if(d(t.project))this.axesProject=t.project;else{var e=!!t.project;this.axesProject=[e,e,e]}if("projectScale"in t)if(d(t.projectScale))this.projectScale=t.projectScale.slice();else{var r=+t.projectScale;this.projectScale=[r,r,r]}if(this.projectHasAlpha=!1,"projectOpacity"in t){d(t.projectOpacity)?this.projectOpacity=t.projectOpacity.slice():(r=+t.projectOpacity,this.projectOpacity=[r,r,r]);for(var n=0;n<3;++n)this.projectOpacity[n]=v(this.projectOpacity[n]),this.projectOpacity[n]<1&&(this.projectHasAlpha=!0)}this.hasAlpha=!1,"opacity"in t&&(this.opacity=v(t.opacity),this.opacity<1&&(this.hasAlpha=!0)),this.dirty=!0;var i,a,s=t.position,l={family:t.font||"normal",style:t.fontStyle||"normal",weight:t.fontWeight||"normal",variant:t.fontVariant||"normal"},c=t.alignment||[0,0];if(2===c.length)i=c[0],a=c[1];else for(i=[],a=[],n=0;n0){var z=0,O=_,R=[0,0,0,1],F=[0,0,0,1],B=d(f)&&d(f[0]),j=d(y)&&d(y[0]);t:for(n=0;n0?1-S[0][0]:Z<0?1+S[1][0]:1,Y*=Y>0?1-S[0][1]:Y<0?1+S[1][1]:1],$=k.cells||[],K=k.positions||[];for(A=0;A<$.length;++A)for(var J=$[A],Q=0;Q<3;++Q){for(var tt=0;tt<3;++tt)C[3*z+tt]=T[tt];for(tt=0;tt<4;++tt)I[4*z+tt]=R[tt];P[z]=x;var et=K[J[Q]];L[2*z]=q*(G*et[0]-W*et[1]+X[0]),L[2*z+1]=q*(W*et[0]+G*et[1]+X[1]),z+=1}for($=M.edges,K=M.positions,A=0;A<$.length;++A)for(J=$[A],Q=0;Q<2;++Q){for(tt=0;tt<3;++tt)C[3*O+tt]=T[tt];for(tt=0;tt<4;++tt)I[4*O+tt]=F[tt];P[O]=x,et=K[J[Q]],L[2*O]=q*(G*et[0]-W*et[1]+X[0]),L[2*O+1]=q*(W*et[0]+G*et[1]+X[1]),O+=1}}}this.bounds=[u,h],this.points=s,this.pointCount=s.length,this.vertexCount=_,this.lineVertexCount=b,this.pointBuffer.update(C),this.colorBuffer.update(I),this.glyphBuffer.update(L),this.idBuffer.update(P),o.free(C),o.free(I),o.free(L),o.free(P)},_.dispose=function(){this.shader.dispose(),this.orthoShader.dispose(),this.pickPerspectiveShader.dispose(),this.pickOrthoShader.dispose(),this.vao.dispose(),this.pointBuffer.dispose(),this.colorBuffer.dispose(),this.glyphBuffer.dispose(),this.idBuffer.dispose()}},3589:function(t,e,r){t.exports=function(t,e){var r=e[0],a=e[1];return new l(t,n(t,r,a,{}),i.mallocUint8(r*a*4))};var n=r(2260),i=r(1888),a=r(9618),o=r(8828).nextPow2;function s(t,e,r,n,i){this.coord=[t,e],this.id=r,this.value=n,this.distance=i}function l(t,e,r){this.gl=t,this.fbo=e,this.buffer=r,this._readTimeout=null;var n=this;this._readCallback=function(){n.gl&&(e.bind(),t.readPixels(0,0,e.shape[0],e.shape[1],t.RGBA,t.UNSIGNED_BYTE,n.buffer),n._readTimeout=null)}}var c=l.prototype;Object.defineProperty(c,"shape",{get:function(){return this.gl?this.fbo.shape.slice():[0,0]},set:function(t){if(this.gl){this.fbo.shape=t;var e=this.fbo.shape[0],r=this.fbo.shape[1];if(r*e*4>this.buffer.length){i.free(this.buffer);for(var n=this.buffer=i.mallocUint8(o(r*e*4)),a=0;ar)for(t=r;te)for(t=e;t=0){for(var T=0|w.type.charAt(w.type.length-1),A=new Array(T),k=0;k=0;)M+=1;b[v]=M}var S=new Array(r.length);function E(){p.program=o.program(f,p._vref,p._fref,_,b);for(var t=0;t=0){if((d=p.charCodeAt(p.length-1)-48)<2||d>4)throw new n("","Invalid data type for attribute "+h+": "+p);s(t,e,f[0],i,d,a,h)}else{if(!(p.indexOf("mat")>=0))throw new n("","Unknown data type for attribute "+h+": "+p);var d;if((d=p.charCodeAt(p.length-1)-48)<2||d>4)throw new n("","Invalid data type for attribute "+h+": "+p);l(t,e,f,i,d,a,h)}}}return a};var n=r(8866);function i(t,e,r,n,i,a){this._gl=t,this._wrapper=e,this._index=r,this._locations=n,this._dimension=i,this._constFunc=a}var a=i.prototype;a.pointer=function(t,e,r,n){var i=this,a=i._gl,o=i._locations[i._index];a.vertexAttribPointer(o,i._dimension,t||a.FLOAT,!!e,r||0,n||0),a.enableVertexAttribArray(o)},a.set=function(t,e,r,n){return this._constFunc(this._locations[this._index],t,e,r,n)},Object.defineProperty(a,"location",{get:function(){return this._locations[this._index]},set:function(t){return t!==this._locations[this._index]&&(this._locations[this._index]=0|t,this._wrapper.program=null),0|t}});var o=[function(t,e,r){return void 0===r.length?t.vertexAttrib1f(e,r):t.vertexAttrib1fv(e,r)},function(t,e,r,n){return void 0===r.length?t.vertexAttrib2f(e,r,n):t.vertexAttrib2fv(e,r)},function(t,e,r,n,i){return void 0===r.length?t.vertexAttrib3f(e,r,n,i):t.vertexAttrib3fv(e,r)},function(t,e,r,n,i,a){return void 0===r.length?t.vertexAttrib4f(e,r,n,i,a):t.vertexAttrib4fv(e,r)}];function s(t,e,r,n,a,s,l){var c=o[a],u=new i(t,e,r,n,a,c);Object.defineProperty(s,l,{set:function(e){return t.disableVertexAttribArray(n[r]),c(t,n[r],e),e},get:function(){return u},enumerable:!0})}function l(t,e,r,n,i,a,o){for(var l=new Array(i),c=new Array(i),u=0;u4)throw new i("","Invalid uniform dimension type for matrix "+name+": "+v);t["uniformMatrix"+y+"fv"](s[h],!1,p);break}throw new i("","Unknown uniform data type for "+name+": "+v)}if((y=v.charCodeAt(v.length-1)-48)<2||y>4)throw new i("","Invalid data type");switch(v.charAt(0)){case"b":case"i":t["uniform"+y+"iv"](s[h],p);break;case"v":t["uniform"+y+"fv"](s[h],p);break;default:throw new i("","Unrecognized data type for vector "+name+": "+v)}}}}}}function u(t,e){if("object"!=typeof e)return[[t,e]];var r=[];for(var n in e){var i=e[n],a=t;parseInt(n)+""===n?a+="["+n+"]":a+="."+n,"object"==typeof i?r.push.apply(r,u(a,i)):r.push([a,i])}return r}function h(t,e,n){if("object"==typeof n){var u=p(n);Object.defineProperty(t,e,{get:a(u),set:c(n),enumerable:!0,configurable:!1})}else s[n]?Object.defineProperty(t,e,{get:l(n),set:c(n),enumerable:!0,configurable:!1}):t[e]=function(t){switch(t){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":case"float":return 0;default:var e=t.indexOf("vec");if(0<=e&&e<=1&&t.length===4+e){if((r=t.charCodeAt(t.length-1)-48)<2||r>4)throw new i("","Invalid data type");return"b"===t.charAt(0)?o(r,!1):o(r,0)}if(0===t.indexOf("mat")&&4===t.length){var r;if((r=t.charCodeAt(t.length-1)-48)<2||r>4)throw new i("","Invalid uniform dimension type for matrix "+name+": "+t);return o(r*r,0)}throw new i("","Unknown uniform data type for "+name+": "+t)}}(r[n].type)}function p(t){var e;if(Array.isArray(t)){e=new Array(t.length);for(var r=0;r1){s[0]in a||(a[s[0]]=[]),a=a[s[0]];for(var l=1;l1)for(var l=0;l"u"?r(606):WeakMap),o=0;function s(t,e,r,n,i,a,o){this.id=t,this.src=e,this.type=r,this.shader=n,this.count=a,this.programs=[],this.cache=o}function l(t){this.gl=t,this.shaders=[{},{}],this.programs={}}s.prototype.dispose=function(){if(0==--this.count){for(var t=this.cache,e=t.gl,r=this.programs,n=0,i=r.length;n 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the tube vertex and normal at the given index.\n//\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\n//\n// Each tube segment is made up of a ring of vertices.\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\n// The indexes of tube segments run from 0 to 8.\n//\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\n float segmentCount = 8.0;\n\n float angle = 2.0 * 3.14159 * (index / segmentCount);\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d);\n vec3 y = v * sin(angle) * length(d);\n vec3 v3 = x + y;\n\n normal = normalize(v3);\n\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 color, position;\nattribute vec2 uv;\n\nuniform float vectorScale, tubeScale;\nuniform mat4 model, view, projection, inverseModel;\nuniform vec3 eyePosition, lightPosition;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n // Scale the vector magnitude to stay constant with\n // model & view changes.\n vec3 normal;\n vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\n vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n //Lighting geometry parameters\n vec4 cameraCoordinate = view * tubePosition;\n cameraCoordinate.xyz /= cameraCoordinate.w;\n f_lightDirection = lightPosition - cameraCoordinate.xyz;\n f_eyeDirection = eyePosition - cameraCoordinate.xyz;\n f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz);\n\n // vec4 m_position = model * vec4(tubePosition, 1.0);\n vec4 t_position = view * tubePosition;\n gl_Position = projection * t_position;\n\n f_color = color;\n f_data = tubePosition.xyz;\n f_position = position.xyz;\n f_uv = uv;\n}\n"]),a=n(["#extension GL_OES_standard_derivatives : enable\n\nprecision highp float;\n#define GLSLIFY 1\n\nfloat beckmannDistribution(float x, float roughness) {\n float NdotH = max(x, 0.0001);\n float cos2Alpha = NdotH * NdotH;\n float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha;\n float roughness2 = roughness * roughness;\n float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha;\n return exp(tan2Alpha / roughness2) / denom;\n}\n\nfloat cookTorranceSpecular(\n vec3 lightDirection,\n vec3 viewDirection,\n vec3 surfaceNormal,\n float roughness,\n float fresnel) {\n\n float VdotN = max(dot(viewDirection, surfaceNormal), 0.0);\n float LdotN = max(dot(lightDirection, surfaceNormal), 0.0);\n\n //Half angle vector\n vec3 H = normalize(lightDirection + viewDirection);\n\n //Geometric term\n float NdotH = max(dot(surfaceNormal, H), 0.0);\n float VdotH = max(dot(viewDirection, H), 0.000001);\n float LdotH = max(dot(lightDirection, H), 0.000001);\n float G1 = (2.0 * NdotH * VdotN) / VdotH;\n float G2 = (2.0 * NdotH * LdotN) / LdotH;\n float G = min(1.0, min(G1, G2));\n \n //Distribution term\n float D = beckmannDistribution(NdotH, roughness);\n\n //Fresnel term\n float F = pow(1.0 - VdotN, fresnel);\n\n //Multiply terms and done\n return G * F * D / max(3.14159265 * VdotN, 0.000001);\n}\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform sampler2D texture;\n\nvarying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position;\nvarying vec4 f_color;\nvarying vec2 f_uv;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n vec3 N = normalize(f_normal);\n vec3 L = normalize(f_lightDirection);\n vec3 V = normalize(f_eyeDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel)));\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n vec4 surfaceColor = f_color * texture2D(texture, f_uv);\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = litColor * opacity;\n}\n"]),o=n(["precision highp float;\n\nprecision highp float;\n#define GLSLIFY 1\n\nvec3 getOrthogonalVector(vec3 v) {\n // Return up-vector for only-z vector.\n // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0).\n // From the above if-statement we have ||a|| > 0 U ||b|| > 0.\n // Assign z = 0, x = -b, y = a:\n // a*-b + b*a + c*0 = -ba + ba + 0 = 0\n if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) {\n return normalize(vec3(-v.y, v.x, 0.0));\n } else {\n return normalize(vec3(0.0, v.z, -v.y));\n }\n}\n\n// Calculate the tube vertex and normal at the given index.\n//\n// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d.\n//\n// Each tube segment is made up of a ring of vertices.\n// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array.\n// The indexes of tube segments run from 0 to 8.\n//\nvec3 getTubePosition(vec3 d, float index, out vec3 normal) {\n float segmentCount = 8.0;\n\n float angle = 2.0 * 3.14159 * (index / segmentCount);\n\n vec3 u = getOrthogonalVector(d);\n vec3 v = normalize(cross(u, d));\n\n vec3 x = u * cos(angle) * length(d);\n vec3 y = v * sin(angle) * length(d);\n vec3 v3 = x + y;\n\n normal = normalize(v3);\n\n return v3;\n}\n\nattribute vec4 vector;\nattribute vec4 position;\nattribute vec4 id;\n\nuniform mat4 model, view, projection;\nuniform float tubeScale;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n vec3 normal;\n vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal);\n vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0);\n\n gl_Position = projection * (view * tubePosition);\n f_id = id;\n f_position = position.xyz;\n}\n"]),s=n(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying vec3 f_position;\nvarying vec4 f_id;\n\nvoid main() {\n if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard;\n\n gl_FragColor = vec4(pickId, f_id.xyz);\n}"]);e.meshShader={vertex:i,fragment:a,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},e.pickShader={vertex:o,fragment:s,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7815:function(t,e,r){var n=r(2931),i=r(9970),a=["xyz","xzy","yxz","yzx","zxy","zyx"],o=function(t,e){var r,n=t.length;for(r=0;re)return r-1}return r},s=function(t,e,r){return tr?r:t},l=function(t){var e=1/0;t.sort((function(t,e){return t-e}));for(var r=t.length,n=1;nh-1||v>p-1||x>f-1)return n.create();var _,b,w,T,A,k,M=a[0][d],S=a[0][y],E=a[1][m],C=a[1][v],I=a[2][g],L=(l-M)/(S-M),P=(c-E)/(C-E),z=(u-I)/(a[2][x]-I);switch(isFinite(L)||(L=.5),isFinite(P)||(P=.5),isFinite(z)||(z=.5),r.reversedX&&(d=h-1-d,y=h-1-y),r.reversedY&&(m=p-1-m,v=p-1-v),r.reversedZ&&(g=f-1-g,x=f-1-x),r.filled){case 5:A=g,k=x,w=m*f,T=v*f,_=d*f*p,b=y*f*p;break;case 4:A=g,k=x,_=d*f,b=y*f,w=m*f*h,T=v*f*h;break;case 3:w=m,T=v,A=g*p,k=x*p,_=d*p*f,b=y*p*f;break;case 2:w=m,T=v,_=d*p,b=y*p,A=g*p*h,k=x*p*h;break;case 1:_=d,b=y,A=g*h,k=x*h,w=m*h*f,T=v*h*f;break;default:_=d,b=y,w=m*h,T=v*h,A=g*h*p,k=x*h*p}var D=i[_+w+A],O=i[_+w+k],R=i[_+T+A],F=i[_+T+k],B=i[b+w+A],j=i[b+w+k],N=i[b+T+A],U=i[b+T+k],V=n.create(),q=n.create(),H=n.create(),G=n.create();n.lerp(V,D,B,L),n.lerp(q,O,j,L),n.lerp(H,R,N,L),n.lerp(G,F,U,L);var W=n.create(),Z=n.create();n.lerp(W,V,H,P),n.lerp(Z,q,G,P);var Y=n.create();return n.lerp(Y,W,Z,z),Y}(e,t,f)},x=t.getDivergence||function(t,e){var r=n.create(),i=1e-4;n.add(r,t,[i,0,0]);var a=v(r);n.subtract(a,a,e),n.scale(a,a,1/i),n.add(r,t,[0,i,0]);var o=v(r);n.subtract(o,o,e),n.scale(o,o,1/i),n.add(r,t,[0,0,i]);var s=v(r);return n.subtract(s,s,e),n.scale(s,s,1/i),n.add(r,a,o),n.add(r,r,s),r},_=[],b=e[0][0],w=e[0][1],T=e[0][2],A=e[1][0],k=e[1][1],M=e[1][2],S=10*n.distance(e[0],e[1])/c,E=S*S,C=1,I=0,L=r.length;L>1&&(C=function(t){for(var e=[],r=[],n=[],i={},a={},o={},s=t.length,c=0;cI&&(I=N),B.push(N),_.push({points:D,velocities:O,divergences:B});for(var U=0;U<100*c&&D.lengthA||gk||yM));){U++;var V=n.clone(R),q=n.squaredLength(V);if(0===q)break;q>E&&n.scale(V,V,S/Math.sqrt(q)),n.add(V,V,z),R=v(V),n.squaredDistance(F,V)-E>-1e-4*E&&(D.push(V),F=V,O.push(R),j=x(V,R),N=n.length(j),isFinite(N)&&N>I&&(I=N),B.push(N)),z=V}}var H=function(t,e,r,a){for(var o=0,s=0;s0)for(T=0;T<8;T++){var A=(T+1)%8;c.push(p[T],f[T],f[A],f[A],p[A],p[T]),h.push(v,y,y,y,v,v),d.push(m,g,g,g,m,m);var k=c.length;u.push([k-6,k-5,k-4],[k-3,k-2,k-1])}var M=p;p=f,f=M;var S=v;v=y,y=S;var E=m;m=g,g=E}return{positions:c,cells:u,vectors:h,vertexIntensity:d}}(t,r,a,o)})),h=[],p=[],f=[],d=[];for(s=0;s max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec3 lowerBound, upperBound;\nuniform float contourTint;\nuniform vec4 contourColor;\nuniform sampler2D colormap;\nuniform vec3 clipBounds[2];\nuniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity;\nuniform float vertexColor;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n if (\n kill > 0.0 ||\n vColor.a == 0.0 ||\n outOfRange(clipBounds[0], clipBounds[1], worldCoordinate)\n ) discard;\n\n vec3 N = normalize(surfaceNormal);\n vec3 V = normalize(eyeDirection);\n vec3 L = normalize(lightDirection);\n\n if(gl_FrontFacing) {\n N = -N;\n }\n\n float specular = max(beckmannSpecular(L, V, N, roughness), 0.);\n float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0);\n\n //decide how to interpolate color — in vertex or in fragment\n vec4 surfaceColor =\n step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) +\n step(.5, vertexColor) * vColor;\n\n vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0);\n\n gl_FragColor = mix(litColor, contourColor, contourTint) * opacity;\n}\n"]),s=i(["precision highp float;\n#define GLSLIFY 1\n\nattribute vec4 uv;\nattribute float f;\n\nuniform vec3 objectOffset;\nuniform mat3 permutation;\nuniform mat4 model, view, projection;\nuniform float height, zOffset;\nuniform sampler2D colormap;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 lightDirection, eyeDirection, surfaceNormal;\nvarying vec4 vColor;\n\nvoid main() {\n vec3 dataCoordinate = permutation * vec3(uv.xy, height);\n worldCoordinate = objectOffset + dataCoordinate;\n mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0));\n vec4 worldPosition = (model * objectOffsetTranslation) * vec4(dataCoordinate, 1.0);\n\n vec4 clipPosition = projection * (view * worldPosition);\n clipPosition.z += zOffset;\n\n gl_Position = clipPosition;\n value = f + objectOffset.z;\n kill = -1.0;\n planeCoordinate = uv.zw;\n\n vColor = texture2D(colormap, vec2(value, value));\n\n //Don't do lighting for contours\n surfaceNormal = vec3(1,0,0);\n eyeDirection = vec3(0,1,0);\n lightDirection = vec3(0,0,1);\n}\n"]),l=i(["precision highp float;\n#define GLSLIFY 1\n\nbool outOfRange(float a, float b, float p) {\n return ((p > max(a, b)) || \n (p < min(a, b)));\n}\n\nbool outOfRange(vec2 a, vec2 b, vec2 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y));\n}\n\nbool outOfRange(vec3 a, vec3 b, vec3 p) {\n return (outOfRange(a.x, b.x, p.x) ||\n outOfRange(a.y, b.y, p.y) ||\n outOfRange(a.z, b.z, p.z));\n}\n\nbool outOfRange(vec4 a, vec4 b, vec4 p) {\n return outOfRange(a.xyz, b.xyz, p.xyz);\n}\n\nuniform vec2 shape;\nuniform vec3 clipBounds[2];\nuniform float pickId;\n\nvarying float value, kill;\nvarying vec3 worldCoordinate;\nvarying vec2 planeCoordinate;\nvarying vec3 surfaceNormal;\n\nvec2 splitFloat(float v) {\n float vh = 255.0 * v;\n float upper = floor(vh);\n float lower = fract(vh);\n return vec2(upper / 255.0, floor(lower * 16.0) / 16.0);\n}\n\nvoid main() {\n if ((kill > 0.0) ||\n (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard;\n\n vec2 ux = splitFloat(planeCoordinate.x / shape.x);\n vec2 uy = splitFloat(planeCoordinate.y / shape.y);\n gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0));\n}\n"]);e.createShader=function(t){var e=n(t,a,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},e.createPickShader=function(t){var e=n(t,a,l,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e.attributes.normal.location=2,e},e.createContourShader=function(t){var e=n(t,s,o,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e},e.createPickContourShader=function(t){var e=n(t,s,l,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return e.attributes.uv.location=0,e.attributes.f.location=1,e}},9499:function(t,e,r){t.exports=function(t){var e=t.gl,r=v(e),n=_(e),s=x(e),l=b(e),c=i(e),u=a(e,[{buffer:c,size:4,stride:w,offset:0},{buffer:c,size:3,stride:w,offset:16},{buffer:c,size:3,stride:w,offset:28}]),h=i(e),p=a(e,[{buffer:h,size:4,stride:20,offset:0},{buffer:h,size:1,stride:20,offset:16}]),f=i(e),d=a(e,[{buffer:f,size:2,type:e.FLOAT}]),m=o(e,1,S,e.RGBA,e.UNSIGNED_BYTE);m.minFilter=e.LINEAR,m.magFilter=e.LINEAR;var g=new E(e,[0,0],[[0,0,0],[0,0,0]],r,n,c,u,m,s,l,h,p,f,d,[0,0,0]),y={levels:[[],[],[]]};for(var T in t)y[T]=t[T];return y.colormap=y.colormap||"jet",g.update(y),g};var n=r(8828),i=r(2762),a=r(8116),o=r(7766),s=r(1888),l=r(6729),c=r(5298),u=r(9994),h=r(9618),p=r(3711),f=r(6760),d=r(7608),m=r(2478),g=r(6199),y=r(990),v=y.createShader,x=y.createContourShader,_=y.createPickShader,b=y.createPickContourShader,w=40,T=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],k=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];function M(t,e,r,n,i){this.position=t,this.index=e,this.uv=r,this.level=n,this.dataCoordinate=i}!function(){for(var t=0;t<3;++t){var e=k[t],r=(t+2)%3;e[(t+1)%3+0]=1,e[r+3]=1,e[t+6]=1}}();var S=256;function E(t,e,r,n,i,a,o,l,c,u,p,f,d,m,g){this.gl=t,this.shape=e,this.bounds=r,this.objectOffset=g,this.intensityBounds=[],this._shader=n,this._pickShader=i,this._coordinateBuffer=a,this._vao=o,this._colorMap=l,this._contourShader=c,this._contourPickShader=u,this._contourBuffer=p,this._contourVAO=f,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new M([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=d,this._dynamicVAO=m,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[h(s.mallocFloat(1024),[0,0]),h(s.mallocFloat(1024),[0,0]),h(s.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var C=E.prototype;C.genColormap=function(t,e){var r=!1,n=u([l({colormap:t,nshades:S,format:"rgba"}).map((function(t,n){var i=e?function(t,e){if(!e||!e.length)return 1;for(var r=0;rt&&r>0){var n=(e[r][0]-t)/(e[r][0]-e[r-1][0]);return e[r][1]*(1-n)+n*e[r-1][1]}}return 1}(n/255,e):t[3];return i<1&&(r=!0),[t[0],t[1],t[2],255*i]}))]);return c.divseq(n,255),this.hasAlphaScale=r,n},C.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},C.isOpaque=function(){return!this.isTransparent()},C.pickSlots=1,C.setPickBase=function(t){this.pickId=t};var I=[0,0,0],L={showSurface:!1,showContour:!1,projections:[T.slice(),T.slice(),T.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function P(t,e){var r,n,i,a=e.axes&&e.axes.lastCubeProps.axis||I,o=e.showSurface,s=e.showContour;for(r=0;r<3;++r)for(o=o||e.surfaceProject[r],n=0;n<3;++n)s=s||e.contourProject[r][n];for(r=0;r<3;++r){var l=L.projections[r];for(n=0;n<16;++n)l[n]=0;for(n=0;n<4;++n)l[5*n]=1;l[5*r]=0,l[12+r]=e.axesBounds[+(a[r]>0)][r],f(l,t.model,l);var c=L.clipBounds[r];for(i=0;i<2;++i)for(n=0;n<3;++n)c[i][n]=t.clipBounds[i][n];c[0][r]=-1e8,c[1][r]=1e8}return L.showSurface=o,L.showContour=s,L}var z={model:T,view:T,projection:T,inverseModel:T.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},D=T.slice(),O=[1,0,0,0,1,0,0,0,1];function R(t,e){t=t||{};var r=this.gl;r.disable(r.CULL_FACE),this._colorMap.bind(0);var n=z;n.model=t.model||T,n.view=t.view||T,n.projection=t.projection||T,n.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],n.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],n.objectOffset=this.objectOffset,n.contourColor=this.contourColor[0],n.inverseModel=d(n.inverseModel,n.model);for(var i=0;i<2;++i)for(var a=n.clipBounds[i],o=0;o<3;++o)a[o]=Math.min(Math.max(this.clipBounds[i][o],-1e8),1e8);n.kambient=this.ambientLight,n.kdiffuse=this.diffuseLight,n.kspecular=this.specularLight,n.roughness=this.roughness,n.fresnel=this.fresnel,n.opacity=this.opacity,n.height=0,n.permutation=O,n.vertexColor=this.vertexColor;var s=D;for(f(s,n.view,n.model),f(s,n.projection,s),d(s,s),i=0;i<3;++i)n.eyePosition[i]=s[12+i]/s[15];var l=s[15];for(i=0;i<3;++i)l+=this.lightPosition[i]*s[4*i+3];for(i=0;i<3;++i){var c=s[12+i];for(o=0;o<3;++o)c+=s[4*o+i]*this.lightPosition[o];n.lightPosition[i]=c/l}var u=P(n,this);if(u.showSurface){for(this._shader.bind(),this._shader.uniforms=n,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(r.TRIANGLES,this._vertexCount),i=0;i<3;++i)!this.surfaceProject[i]||!this.vertexCount||(this._shader.uniforms.model=u.projections[i],this._shader.uniforms.clipBounds=u.clipBounds[i],this._vao.draw(r.TRIANGLES,this._vertexCount));this._vao.unbind()}if(u.showContour){var h=this._contourShader;n.kambient=1,n.kdiffuse=0,n.kspecular=0,n.opacity=1,h.bind(),h.uniforms=n;var p=this._contourVAO;for(p.bind(),i=0;i<3;++i)for(h.uniforms.permutation=k[i],r.lineWidth(this.contourWidth[i]*this.pixelRatio),o=0;o>4)/16)/255,i=Math.floor(n),a=n-i,o=e[1]*(t.value[1]+(15&t.value[2])/16)/255,s=Math.floor(o),l=o-s;i+=1,s+=1;var c=r.position;c[0]=c[1]=c[2]=0;for(var u=0;u<2;++u)for(var h=u?a:1-a,p=0;p<2;++p)for(var f=i+u,d=s+p,g=h*(p?l:1-l),y=0;y<3;++y)c[y]+=this._field[y].get(f,d)*g;for(var v=this._pickResult.level,x=0;x<3;++x)if(v[x]=m.le(this.contourLevels[x],c[x]),v[x]<0)this.contourLevels[x].length>0&&(v[x]=0);else if(v[x]Math.abs(b-c[x])&&(v[x]+=1)}for(r.index[0]=a<.5?i:i+1,r.index[1]=l<.5?s:s+1,r.uv[0]=n/e[0],r.uv[1]=o/e[1],y=0;y<3;++y)r.dataCoordinate[y]=this._field[y].get(r.index[0],r.index[1]);return r},C.padField=function(t,e){var r=e.shape.slice(),n=t.shape.slice();c.assign(t.lo(1,1).hi(r[0],r[1]),e),c.assign(t.lo(1).hi(r[0],1),e.hi(r[0],1)),c.assign(t.lo(1,n[1]-1).hi(r[0],1),e.lo(0,r[1]-1).hi(r[0],1)),c.assign(t.lo(0,1).hi(1,r[1]),e.hi(1)),c.assign(t.lo(n[0]-1,1).hi(1,r[1]),e.lo(r[0]-1)),t.set(0,0,e.get(0,0)),t.set(0,n[1]-1,e.get(0,r[1]-1)),t.set(n[0]-1,0,e.get(r[0]-1,0)),t.set(n[0]-1,n[1]-1,e.get(r[0]-1,r[1]-1))},C.update=function(t){t=t||{},this.objectOffset=t.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in t&&(this.contourWidth=B(t.contourWidth,Number)),"showContour"in t&&(this.showContour=B(t.showContour,Boolean)),"showSurface"in t&&(this.showSurface=!!t.showSurface),"contourTint"in t&&(this.contourTint=B(t.contourTint,Boolean)),"contourColor"in t&&(this.contourColor=N(t.contourColor)),"contourProject"in t&&(this.contourProject=B(t.contourProject,(function(t){return B(t,Boolean)}))),"surfaceProject"in t&&(this.surfaceProject=t.surfaceProject),"dynamicColor"in t&&(this.dynamicColor=N(t.dynamicColor)),"dynamicTint"in t&&(this.dynamicTint=B(t.dynamicTint,Number)),"dynamicWidth"in t&&(this.dynamicWidth=B(t.dynamicWidth,Number)),"opacity"in t&&(this.opacity=t.opacity),"opacityscale"in t&&(this.opacityscale=t.opacityscale),"colorBounds"in t&&(this.colorBounds=t.colorBounds),"vertexColor"in t&&(this.vertexColor=t.vertexColor?1:0),"colormap"in t&&this._colorMap.setPixels(this.genColormap(t.colormap,this.opacityscale));var e=t.field||t.coords&&t.coords[2]||null,r=!1;if(e||(e=this._field[2].shape[0]||this._field[2].shape[2]?this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):this._field[2].hi(0,0)),"field"in t||"coords"in t){var i=(e.shape[0]+2)*(e.shape[1]+2);i>this._field[2].data.length&&(s.freeFloat(this._field[2].data),this._field[2].data=s.mallocFloat(n.nextPow2(i))),this._field[2]=h(this._field[2].data,[e.shape[0]+2,e.shape[1]+2]),this.padField(this._field[2],e),this.shape=e.shape.slice();for(var a=this.shape,o=0;o<2;++o)this._field[2].size>this._field[o].data.length&&(s.freeFloat(this._field[o].data),this._field[o].data=s.mallocFloat(this._field[2].size)),this._field[o]=h(this._field[o].data,[a[0]+2,a[1]+2]);if(t.coords){var l=t.coords;if(!Array.isArray(l)||3!==l.length)throw new Error("gl-surface: invalid coordinates for x/y");for(o=0;o<2;++o){var c=l[o];for(y=0;y<2;++y)if(c.shape[y]!==a[y])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[o],c)}}else if(t.ticks){var u=t.ticks;if(!Array.isArray(u)||2!==u.length)throw new Error("gl-surface: invalid ticks");for(o=0;o<2;++o){var f=u[o];if((Array.isArray(f)||f.length)&&(f=h(f)),f.shape[0]!==a[o])throw new Error("gl-surface: invalid tick length");var d=h(f.data,a);d.stride[o]=f.stride[0],d.stride[1^o]=0,this.padField(this._field[o],d)}}else{for(o=0;o<2;++o){var m=[0,0];m[o]=1,this._field[o]=h(this._field[o].data,[a[0]+2,a[1]+2],m,0)}this._field[0].set(0,0,0);for(var y=0;y0){for(var xt=0;xt<5;++xt)J.pop();U-=1}continue t}J.push(nt[0],nt[1],ot[0],ot[1],nt[2]),U+=1}}rt.push(U)}this._contourOffsets[Q]=et,this._contourCounts[Q]=rt}var _t=s.mallocFloat(J.length);for(o=0;os||o[1]<0||o[1]>s)throw new Error("gl-texture2d: Invalid texture size");var l=d(o,e.stride.slice()),c=0;"float32"===r?c=t.FLOAT:"float64"===r?(c=t.FLOAT,l=!1,r="float32"):"uint8"===r?c=t.UNSIGNED_BYTE:(c=t.UNSIGNED_BYTE,l=!1,r="uint8");var h=0;if(2===o.length)h=t.LUMINANCE,o=[o[0],o[1],1],e=n(e.data,o,[e.stride[0],e.stride[1],1],e.offset);else{if(3!==o.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===o[2])h=t.ALPHA;else if(2===o[2])h=t.LUMINANCE_ALPHA;else if(3===o[2])h=t.RGB;else{if(4!==o[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");h=t.RGBA}}c===t.FLOAT&&!t.getExtension("OES_texture_float")&&(c=t.UNSIGNED_BYTE,l=!1);var f,g,y=e.size;if(l)f=0===e.offset&&e.data.length===y?e.data:e.data.subarray(e.offset,e.offset+y);else{var v=[o[2],o[2]*o[0],1];g=a.malloc(y,r);var x=n(g,o,v,0);"float32"!==r&&"float64"!==r||c!==t.UNSIGNED_BYTE?i.assign(x,e):u(x,e),f=g.subarray(0,y)}var _=m(t);return t.texImage2D(t.TEXTURE_2D,0,h,o[0],o[1],0,h,c,f),l||a.free(g),new p(t,_,o[0],o[1],h,c)}(t,e)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")};var o=null,s=null,l=null;function c(t){return typeof HTMLCanvasElement<"u"&&t instanceof HTMLCanvasElement||typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement||typeof HTMLVideoElement<"u"&&t instanceof HTMLVideoElement||typeof ImageData<"u"&&t instanceof ImageData}var u=function(t,e){i.muls(t,e,255)};function h(t,e,r){var n=t.gl,i=n.getParameter(n.MAX_TEXTURE_SIZE);if(e<0||e>i||r<0||r>i)throw new Error("gl-texture2d: Invalid texture size");return t._shape=[e,r],t.bind(),n.texImage2D(n.TEXTURE_2D,0,t.format,e,r,0,t.format,t.type,null),t._mipLevels=[0],t}function p(t,e,r,n,i,a){this.gl=t,this.handle=e,this.format=i,this.type=a,this._shape=[r,n],this._mipLevels=[0],this._magFilter=t.NEAREST,this._minFilter=t.NEAREST,this._wrapS=t.CLAMP_TO_EDGE,this._wrapT=t.CLAMP_TO_EDGE,this._anisoSamples=1;var o=this,s=[this._wrapS,this._wrapT];Object.defineProperties(s,[{get:function(){return o._wrapS},set:function(t){return o.wrapS=t}},{get:function(){return o._wrapT},set:function(t){return o.wrapT=t}}]),this._wrapVector=s;var l=[this._shape[0],this._shape[1]];Object.defineProperties(l,[{get:function(){return o._shape[0]},set:function(t){return o.width=t}},{get:function(){return o._shape[1]},set:function(t){return o.height=t}}]),this._shapeVector=l}var f=p.prototype;function d(t,e){return 3===t.length?1===e[2]&&e[1]===t[0]*t[2]&&e[0]===t[2]:1===e[0]&&e[1]===t[0]}function m(t){var e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),e}function g(t,e,r,n,i){var a=t.getParameter(t.MAX_TEXTURE_SIZE);if(e<0||e>a||r<0||r>a)throw new Error("gl-texture2d: Invalid texture shape");if(i===t.FLOAT&&!t.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var o=m(t);return t.texImage2D(t.TEXTURE_2D,0,n,e,r,0,n,i,null),new p(t,o,e,r,n,i)}Object.defineProperties(f,{minFilter:{get:function(){return this._minFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension("OES_texture_float_linear")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,t),this._minFilter=t}},magFilter:{get:function(){return this._magFilter},set:function(t){this.bind();var e=this.gl;if(this.type===e.FLOAT&&o.indexOf(t)>=0&&(e.getExtension("OES_texture_float_linear")||(t=e.NEAREST)),s.indexOf(t)<0)throw new Error("gl-texture2d: Unknown filter mode "+t);return e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,t),this._magFilter=t}},mipSamples:{get:function(){return this._anisoSamples},set:function(t){var e=this._anisoSamples;if(this._anisoSamples=0|Math.max(t,1),e!==this._anisoSamples){var r=this.gl.getExtension("EXT_texture_filter_anisotropic");r&&this.gl.texParameterf(this.gl.TEXTURE_2D,r.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,t),this._wrapS=t}},wrapT:{get:function(){return this._wrapT},set:function(t){if(this.bind(),l.indexOf(t)<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,t),this._wrapT=t}},wrap:{get:function(){return this._wrapVector},set:function(t){if(Array.isArray(t)||(t=[t,t]),2!==t.length)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var e=0;e<2;++e)if(l.indexOf(t[e])<0)throw new Error("gl-texture2d: Unknown wrap mode "+t);this._wrapS=t[0],this._wrapT=t[1];var r=this.gl;return this.bind(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,this._wrapS),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,this._wrapT),t}},shape:{get:function(){return this._shapeVector},set:function(t){if(Array.isArray(t)){if(2!==t.length)throw new Error("gl-texture2d: Invalid texture shape")}else t=[0|t,0|t];return h(this,0|t[0],0|t[1]),[0|t[0],0|t[1]]}},width:{get:function(){return this._shape[0]},set:function(t){return h(this,t|=0,this._shape[1]),t}},height:{get:function(){return this._shape[1]},set:function(t){return t|=0,h(this,this._shape[0],t),t}}}),f.bind=function(t){var e=this.gl;return void 0!==t&&e.activeTexture(e.TEXTURE0+(0|t)),e.bindTexture(e.TEXTURE_2D,this.handle),void 0!==t?0|t:e.getParameter(e.ACTIVE_TEXTURE)-e.TEXTURE0},f.dispose=function(){this.gl.deleteTexture(this.handle)},f.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var t=Math.min(this._shape[0],this._shape[1]),e=0;t>0;++e,t>>>=1)this._mipLevels.indexOf(e)<0&&this._mipLevels.push(e)},f.setPixels=function(t,e,r,o){var s=this.gl;this.bind(),Array.isArray(e)?(o=r,r=0|e[1],e=0|e[0]):(e=e||0,r=r||0),o=o||0;var l=c(t)?t:t.raw;if(l)this._mipLevels.indexOf(o)<0?(s.texImage2D(s.TEXTURE_2D,0,this.format,this.format,this.type,l),this._mipLevels.push(o)):s.texSubImage2D(s.TEXTURE_2D,o,e,r,this.format,this.type,l);else{if(!(t.shape&&t.stride&&t.data))throw new Error("gl-texture2d: Unsupported data type");if(t.shape.length<2||e+t.shape[1]>this._shape[1]>>>o||r+t.shape[0]>this._shape[0]>>>o||e<0||r<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");!function(t,e,r,o,s,l,c,h){var p=h.dtype,f=h.shape.slice();if(f.length<2||f.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var m=0,g=0,y=d(f,h.stride.slice());if("float32"===p?m=t.FLOAT:"float64"===p?(m=t.FLOAT,y=!1,p="float32"):"uint8"===p?m=t.UNSIGNED_BYTE:(m=t.UNSIGNED_BYTE,y=!1,p="uint8"),2===f.length)g=t.LUMINANCE,f=[f[0],f[1],1],h=n(h.data,f,[h.stride[0],h.stride[1],1],h.offset);else{if(3!==f.length)throw new Error("gl-texture2d: Invalid shape for texture");if(1===f[2])g=t.ALPHA;else if(2===f[2])g=t.LUMINANCE_ALPHA;else if(3===f[2])g=t.RGB;else{if(4!==f[2])throw new Error("gl-texture2d: Invalid shape for pixel coords");g=t.RGBA}f[2]}if((g===t.LUMINANCE||g===t.ALPHA)&&(s===t.LUMINANCE||s===t.ALPHA)&&(g=s),g!==s)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var v=h.size,x=c.indexOf(o)<0;if(x&&c.push(o),m===l&&y)0===h.offset&&h.data.length===v?x?t.texImage2D(t.TEXTURE_2D,o,s,f[0],f[1],0,s,l,h.data):t.texSubImage2D(t.TEXTURE_2D,o,e,r,f[0],f[1],s,l,h.data):x?t.texImage2D(t.TEXTURE_2D,o,s,f[0],f[1],0,s,l,h.data.subarray(h.offset,h.offset+v)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,f[0],f[1],s,l,h.data.subarray(h.offset,h.offset+v));else{var _;_=l===t.FLOAT?a.mallocFloat32(v):a.mallocUint8(v);var b=n(_,f,[f[2],f[2]*f[0],1]);m===t.FLOAT&&l===t.UNSIGNED_BYTE?u(b,h):i.assign(b,h),x?t.texImage2D(t.TEXTURE_2D,o,s,f[0],f[1],0,s,l,_.subarray(0,v)):t.texSubImage2D(t.TEXTURE_2D,o,e,r,f[0],f[1],s,l,_.subarray(0,v)),l===t.FLOAT?a.freeFloat32(_):a.freeUint8(_)}}(s,e,r,o,this.format,this.type,this._mipLevels,t)}}},1433:function(t){t.exports=function(t,e,r){e?e.bind():t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null);var n=0|t.getParameter(t.MAX_VERTEX_ATTRIBS);if(r){if(r.length>n)throw new Error("gl-vao: Too many vertex attributes");for(var i=0;i1?0:Math.acos(s)};var n=r(2825),i=r(3536),a=r(244)},9226:function(t){t.exports=function(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}},3126:function(t){t.exports=function(t){var e=new Float32Array(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}},3990:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}},1091:function(t){t.exports=function(){var t=new Float32Array(3);return t[0]=0,t[1]=0,t[2]=0,t}},5911:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t}},5455:function(t,e,r){t.exports=r(7056)},7056:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(r*r+n*n+i*i)}},4008:function(t,e,r){t.exports=r(6690)},6690:function(t){t.exports=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}},244:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}},2613:function(t){t.exports=1e-6},9922:function(t,e,r){t.exports=function(t,e){var r=t[0],i=t[1],a=t[2],o=e[0],s=e[1],l=e[2];return Math.abs(r-o)<=n*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=n*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-l)<=n*Math.max(1,Math.abs(a),Math.abs(l))};var n=r(2613)},9265:function(t){t.exports=function(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}},2681:function(t){t.exports=function(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}},5137:function(t,e,r){t.exports=function(t,e,r,i,a,o){var s,l;for(e||(e=3),r||(r=0),l=i?Math.min(i*e+r,t.length):t.length,s=r;s0&&(a=1/Math.sqrt(a),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a),t}},7636:function(t){t.exports=function(t,e){e=e||1;var r=2*Math.random()*Math.PI,n=2*Math.random()-1,i=Math.sqrt(1-n*n)*e;return t[0]=Math.cos(r)*i,t[1]=Math.sin(r)*i,t[2]=n*e,t}},6894:function(t){t.exports=function(t,e,r,n){var i=r[1],a=r[2],o=e[1]-i,s=e[2]-a,l=Math.sin(n),c=Math.cos(n);return t[0]=e[0],t[1]=i+o*c-s*l,t[2]=a+o*l+s*c,t}},109:function(t){t.exports=function(t,e,r,n){var i=r[0],a=r[2],o=e[0]-i,s=e[2]-a,l=Math.sin(n),c=Math.cos(n);return t[0]=i+s*l+o*c,t[1]=e[1],t[2]=a+s*c-o*l,t}},8692:function(t){t.exports=function(t,e,r,n){var i=r[0],a=r[1],o=e[0]-i,s=e[1]-a,l=Math.sin(n),c=Math.cos(n);return t[0]=i+o*c-s*l,t[1]=a+o*l+s*c,t[2]=e[2],t}},2447:function(t){t.exports=function(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}},6621:function(t){t.exports=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}},8489:function(t){t.exports=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}},1463:function(t){t.exports=function(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}},6141:function(t,e,r){t.exports=r(2953)},5486:function(t,e,r){t.exports=r(3066)},2953:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}},3066:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}},2229:function(t,e,r){t.exports=r(6843)},6843:function(t){t.exports=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}},492:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t}},5673:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[3]*n+r[7]*i+r[11]*a+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*i+r[8]*a+r[12])/o,t[1]=(r[1]*n+r[5]*i+r[9]*a+r[13])/o,t[2]=(r[2]*n+r[6]*i+r[10]*a+r[14])/o,t}},264:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2],c=r[3],u=c*n+s*a-l*i,h=c*i+l*n-o*a,p=c*a+o*i-s*n,f=-o*n-s*i-l*a;return t[0]=u*c+f*-o+h*-l-p*-s,t[1]=h*c+f*-s+p*-o-u*-l,t[2]=p*c+f*-l+u*-s-h*-o,t}},4361:function(t){t.exports=function(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}},2335:function(t){t.exports=function(t){var e=new Float32Array(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}},2933:function(t){t.exports=function(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}},7536:function(t){t.exports=function(){var t=new Float32Array(4);return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}},4691:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return Math.sqrt(r*r+n*n+i*i+a*a)}},1373:function(t){t.exports=function(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}},3750:function(t){t.exports=function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}},3390:function(t){t.exports=function(t,e,r,n){var i=new Float32Array(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i}},9970:function(t,e,r){t.exports={create:r(7536),clone:r(2335),fromValues:r(3390),copy:r(2933),set:r(4578),add:r(4361),subtract:r(6860),multiply:r(3576),divide:r(1373),min:r(2334),max:r(160),scale:r(9288),scaleAndAdd:r(4844),distance:r(4691),squaredDistance:r(7960),length:r(6808),squaredLength:r(483),negate:r(1498),inverse:r(4494),normalize:r(5177),dot:r(3750),lerp:r(2573),random:r(9131),transformMat4:r(5352),transformQuat:r(4041)}},4494:function(t){t.exports=function(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}},6808:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3];return Math.sqrt(e*e+r*r+n*n+i*i)}},2573:function(t){t.exports=function(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t[3]=s+n*(r[3]-s),t}},160:function(t){t.exports=function(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}},2334:function(t){t.exports=function(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}},3576:function(t){t.exports=function(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}},1498:function(t){t.exports=function(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}},5177:function(t){t.exports=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o),t}},9131:function(t,e,r){var n=r(5177),i=r(9288);t.exports=function(t,e){return e=e||1,t[0]=Math.random(),t[1]=Math.random(),t[2]=Math.random(),t[3]=Math.random(),n(t,t),i(t,t,e),t}},9288:function(t){t.exports=function(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}},4844:function(t){t.exports=function(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t}},4578:function(t){t.exports=function(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}},7960:function(t){t.exports=function(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return r*r+n*n+i*i+a*a}},483:function(t){t.exports=function(t){var e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}},6860:function(t){t.exports=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}},5352:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}},4041:function(t){t.exports=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2],c=r[3],u=c*n+s*a-l*i,h=c*i+l*n-o*a,p=c*a+o*i-s*n,f=-o*n-s*i-l*a;return t[0]=u*c+f*-o+h*-l-p*-s,t[1]=h*c+f*-s+p*-o-u*-l,t[2]=p*c+f*-l+u*-s-h*-o,t[3]=e[3],t}},1848:function(t,e,r){var n=r(4905),i=r(6468);t.exports=function(t){for(var e=Array.isArray(t)?t:n(t),r=0;r0)continue;r=t.slice(0,1).join("")}return j(r),L+=r.length,(S=S.slice(r.length)).length}}function q(){if(/[^\d\w_]/.test(e)){var t=S.join("");return M=B[t]?v:F[t]?y:g,j(S.join("")),M=l,A}return S.push(e),r=e,A+1}};var n=r(620),i=r(7827),a=r(6852),o=r(7932),s=r(3508),l=999,c=9999,u=0,h=1,p=2,f=3,d=4,m=5,g=6,y=7,v=8,x=9,_=10,b=11,w=["block-comment","line-comment","preprocessor","operator","integer","float","ident","builtin","keyword","whitespace","eof","integer"]},3508:function(t,e,r){var n=r(6852);n=n.slice().filter((function(t){return!/^(gl\_|texture)/.test(t)})),t.exports=n.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(t){t.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(t,e,r){var n=r(620);t.exports=n.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(t){t.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(t){t.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(t,e,r){var n=r(5874);t.exports=function(t,e){var r=n(e),i=[];return(i=i.concat(r(t))).concat(r(null))}},3236:function(t){t.exports=function(t){"string"==typeof t&&(t=[t]);for(var e=[].slice.call(arguments,1),r=[],n=0;n>1,u=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-u)-1,f>>=-u,u+=s;u>0;a=256*a+t[e+h],h+=p,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+h],h+=p,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=c}return(f?-1:1)*o*Math.pow(2,a-n)},e.write=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(e*l-1)*Math.pow(2,i),o+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=d,s/=256,i-=8);for(o=o<0;t[r+f]=255&o,f+=d,o/=256,c-=8);t[r+f-d]|=128*m}},8954:function(t,e,r){t.exports=function(t,e){var r=t.length;if(0===r)throw new Error("Must have at least d+1 points");var i=t[0].length;if(r<=i)throw new Error("Must input at least d+1 points");var o=t.slice(0,i+1),s=n.apply(void 0,o);if(0===s)throw new Error("Input not in general position");for(var l=new Array(i+1),u=0;u<=i;++u)l[u]=u;s<0&&(l[0]=1,l[1]=0);var h=new a(l,new Array(i+1),!1),p=h.adjacent,f=new Array(i+2);for(u=0;u<=i;++u){for(var d=l.slice(),m=0;m<=i;++m)m===u&&(d[m]=-1);var g=d[0];d[0]=d[1],d[1]=g;var y=new a(d,new Array(i+1),!0);p[u]=y,f[u]=y}for(f[i+1]=h,u=0;u<=i;++u){d=p[u].vertices;var v=p[u].adjacent;for(m=0;m<=i;++m){var x=d[m];if(x<0)v[m]=h;else for(var _=0;_<=i;++_)p[_].vertices.indexOf(x)<0&&(v[m]=p[_])}}var b=new c(i,o,f),w=!!e;for(u=i+1;u0;)for(var s=(t=o.pop()).adjacent,l=0;l<=r;++l){var c=s[l];if(c.boundary&&!(c.lastVisited<=-n)){for(var u=c.vertices,h=0;h<=r;++h){var p=u[h];i[h]=p<0?e:a[p]}var f=this.orient();if(f>0)return c;c.lastVisited=-n,0===f&&o.push(c)}}return null},u.walk=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,a=this.tuple,o=e?this.interior.length*Math.random()|0:this.interior.length-1,s=this.interior[o];t:for(;!s.boundary;){for(var l=s.vertices,c=s.adjacent,u=0;u<=n;++u)a[u]=i[l[u]];for(s.lastVisited=r,u=0;u<=n;++u){var h=c[u];if(!(h.lastVisited>=r)){var p=a[u];a[u]=t;var f=this.orient();if(a[u]=p,f<0){s=h;continue t}h.boundary?h.lastVisited=-r:h.lastVisited=r}}return}return s},u.addPeaks=function(t,e){var r=this.vertices.length-1,n=this.dimension,i=this.vertices,l=this.tuple,c=this.interior,u=this.simplices,h=[e];e.lastVisited=r,e.vertices[e.vertices.indexOf(-1)]=r,e.boundary=!1,c.push(e);for(var p=[];h.length>0;){var f=(e=h.pop()).vertices,d=e.adjacent,m=f.indexOf(r);if(!(m<0))for(var g=0;g<=n;++g)if(g!==m){var y=d[g];if(y.boundary&&!(y.lastVisited>=r)){var v=y.vertices;if(y.lastVisited!==-r){for(var x=0,_=0;_<=n;++_)v[_]<0?(x=_,l[_]=t):l[_]=i[v[_]];if(this.orient()>0){v[x]=r,y.boundary=!1,c.push(y),h.push(y),y.lastVisited=r;continue}y.lastVisited=-r}var b=y.adjacent,w=f.slice(),T=d.slice(),A=new a(w,T,!0);u.push(A);var k=b.indexOf(e);if(!(k<0))for(b[k]=A,T[m]=y,w[g]=-1,T[g]=e,d[g]=A,A.flip(),_=0;_<=n;++_){var M=w[_];if(!(M<0||M===r)){for(var S=new Array(n-1),E=0,C=0;C<=n;++C){var I=w[C];I<0||C===_||(S[E++]=I)}p.push(new o(S,A,_))}}}}}for(p.sort(s),g=0;g+1=0?o[l++]=s[u]:c=1&u;if(c===(1&t)){var h=o[0];o[0]=o[1],o[1]=h}e.push(o)}}return e}},3352:function(t,e,r){var n=r(2478);function i(t,e,r,n,i){this.mid=t,this.left=e,this.right=r,this.leftPoints=n,this.rightPoints=i,this.count=(e?e.count:0)+(r?r.count:0)+n.length}t.exports=function(t){return t&&0!==t.length?new y(g(t)):new y(null)};var a=i.prototype;function o(t,e){t.mid=e.mid,t.left=e.left,t.right=e.right,t.leftPoints=e.leftPoints,t.rightPoints=e.rightPoints,t.count=e.count}function s(t,e){var r=g(e);t.mid=r.mid,t.left=r.left,t.right=r.right,t.leftPoints=r.leftPoints,t.rightPoints=r.rightPoints,t.count=r.count}function l(t,e){var r=t.intervals([]);r.push(e),s(t,r)}function c(t,e){var r=t.intervals([]),n=r.indexOf(e);return n<0?0:(r.splice(n,1),s(t,r),1)}function u(t,e,r){for(var n=0;n=0&&t[n][1]>=e;--n){var i=r(t[n]);if(i)return i}}function p(t,e){for(var r=0;r>1],a=[],o=[],s=[];for(r=0;r3*(e+1)?l(this,t):this.left.insert(t):this.left=g([t]);else if(t[0]>this.mid)this.right?4*(this.right.count+1)>3*(e+1)?l(this,t):this.right.insert(t):this.right=g([t]);else{var r=n.ge(this.leftPoints,t,d),i=n.ge(this.rightPoints,t,m);this.leftPoints.splice(r,0,t),this.rightPoints.splice(i,0,t)}},a.remove=function(t){var e=this.count-this.leftPoints;if(t[1]3*(e-1)?c(this,t):2===(s=this.left.remove(t))?(this.left=null,this.count-=1,1):(1===s&&(this.count-=1),s):0;if(t[0]>this.mid)return this.right?4*(this.left?this.left.count:0)>3*(e-1)?c(this,t):2===(s=this.right.remove(t))?(this.right=null,this.count-=1,1):(1===s&&(this.count-=1),s):0;if(1===this.count)return this.leftPoints[0]===t?2:0;if(1===this.leftPoints.length&&this.leftPoints[0]===t){if(this.left&&this.right){for(var r=this,i=this.left;i.right;)r=i,i=i.right;if(r===this)i.right=this.right;else{var a=this.left,s=this.right;r.count-=i.count,r.right=i.left,i.left=a,i.right=s}o(this,i),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?o(this,this.left):o(this,this.right);return 1}for(a=n.ge(this.leftPoints,t,d);athis.mid?this.right&&(r=this.right.queryPoint(t,e))?r:h(this.rightPoints,t,e):p(this.leftPoints,e);var r},a.queryInterval=function(t,e,r){var n;return tthis.mid&&this.right&&(n=this.right.queryInterval(t,e,r))?n:ethis.mid?h(this.rightPoints,t,r):p(this.leftPoints,r)};var v=y.prototype;v.insert=function(t){this.root?this.root.insert(t):this.root=new i(t[0],null,null,[t],[t])},v.remove=function(t){if(this.root){var e=this.root.remove(t);return 2===e&&(this.root=null),0!==e}return!1},v.queryPoint=function(t,e){if(this.root)return this.root.queryPoint(t,e)},v.queryInterval=function(t,e,r){if(t<=e&&this.root)return this.root.queryInterval(t,e,r)},Object.defineProperty(v,"count",{get:function(){return this.root?this.root.count:0}}),Object.defineProperty(v,"intervals",{get:function(){return this.root?this.root.intervals([]):[]}})},9507:function(t){t.exports=!0},7163:function(t){function e(t){return!!t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}t.exports=function(t){return null!=t&&(e(t)||function(t){return"function"==typeof t.readFloatLE&&"function"==typeof t.slice&&e(t.slice(0,0))}(t)||!!t._isBuffer)}},5219:function(t){t.exports=function(t){for(var e,r=t.length,n=0;n13)&&32!==e&&133!==e&&160!==e&&5760!==e&&6158!==e&&(e<8192||e>8205)&&8232!==e&&8233!==e&&8239!==e&&8287!==e&&8288!==e&&12288!==e&&65279!==e)return!1;return!0}},395:function(t){t.exports=function(t,e,r){return t*(1-r)+e*r}},2652:function(t,e,r){var n=r(4335),i=r(6864),a=r(1903),o=r(9921),s=r(7608),l=r(5665),c={length:r(1387),normalize:r(3536),dot:r(244),cross:r(5911)},u=i(),h=i(),p=[0,0,0,0],f=[[0,0,0],[0,0,0],[0,0,0]],d=[0,0,0];function m(t,e,r,n,i){t[0]=e[0]*n+r[0]*i,t[1]=e[1]*n+r[1]*i,t[2]=e[2]*n+r[2]*i}t.exports=function(t,e,r,i,g,y){if(e||(e=[0,0,0]),r||(r=[0,0,0]),i||(i=[0,0,0]),g||(g=[0,0,0,1]),y||(y=[0,0,0,1]),!n(u,t)||(a(h,u),h[3]=0,h[7]=0,h[11]=0,h[15]=1,Math.abs(o(h)<1e-8)))return!1;var v=u[3],x=u[7],_=u[11],b=u[12],w=u[13],T=u[14],A=u[15];if(0!==v||0!==x||0!==_){if(p[0]=v,p[1]=x,p[2]=_,p[3]=A,!s(h,h))return!1;l(h,h),function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o}(g,p,h)}else g[0]=g[1]=g[2]=0,g[3]=1;if(e[0]=b,e[1]=w,e[2]=T,function(t,e){t[0][0]=e[0],t[0][1]=e[1],t[0][2]=e[2],t[1][0]=e[4],t[1][1]=e[5],t[1][2]=e[6],t[2][0]=e[8],t[2][1]=e[9],t[2][2]=e[10]}(f,u),r[0]=c.length(f[0]),c.normalize(f[0],f[0]),i[0]=c.dot(f[0],f[1]),m(f[1],f[1],f[0],1,-i[0]),r[1]=c.length(f[1]),c.normalize(f[1],f[1]),i[0]/=r[1],i[1]=c.dot(f[0],f[2]),m(f[2],f[2],f[0],1,-i[1]),i[2]=c.dot(f[1],f[2]),m(f[2],f[2],f[1],1,-i[2]),r[2]=c.length(f[2]),c.normalize(f[2],f[2]),i[1]/=r[2],i[2]/=r[2],c.cross(d,f[1],f[2]),c.dot(f[0],d)<0)for(var k=0;k<3;k++)r[k]*=-1,f[k][0]*=-1,f[k][1]*=-1,f[k][2]*=-1;return y[0]=.5*Math.sqrt(Math.max(1+f[0][0]-f[1][1]-f[2][2],0)),y[1]=.5*Math.sqrt(Math.max(1-f[0][0]+f[1][1]-f[2][2],0)),y[2]=.5*Math.sqrt(Math.max(1-f[0][0]-f[1][1]+f[2][2],0)),y[3]=.5*Math.sqrt(Math.max(1+f[0][0]+f[1][1]+f[2][2],0)),f[2][1]>f[1][2]&&(y[0]=-y[0]),f[0][2]>f[2][0]&&(y[1]=-y[1]),f[1][0]>f[0][1]&&(y[2]=-y[2]),!0}},4335:function(t){t.exports=function(t,e){var r=e[15];if(0===r)return!1;for(var n=1/r,i=0;i<16;i++)t[i]=e[i]*n;return!0}},7442:function(t,e,r){var n=r(6658),i=r(7182),a=r(2652),o=r(9921),s=r(8648),l=h(),c=h(),u=h();function h(){return{translate:p(),scale:p(1),skew:p(),perspective:[0,0,0,1],quaternion:[0,0,0,1]}}function p(t){return[t||0,t||0,t||0]}t.exports=function(t,e,r,h){if(0===o(e)||0===o(r))return!1;var p=a(e,l.translate,l.scale,l.skew,l.perspective,l.quaternion),f=a(r,c.translate,c.scale,c.skew,c.perspective,c.quaternion);return!(!p||!f||(n(u.translate,l.translate,c.translate,h),n(u.skew,l.skew,c.skew,h),n(u.scale,l.scale,c.scale,h),n(u.perspective,l.perspective,c.perspective,h),s(u.quaternion,l.quaternion,c.quaternion,h),i(t,u.translate,u.scale,u.skew,u.perspective,u.quaternion),0))}},7182:function(t,e,r){var n={identity:r(7894),translate:r(7656),multiply:r(6760),create:r(6864),scale:r(2504),fromRotationTranslation:r(6743)},i=(n.create(),n.create());t.exports=function(t,e,r,a,o,s){return n.identity(t),n.fromRotationTranslation(t,s,e),t[3]=o[0],t[7]=o[1],t[11]=o[2],t[15]=o[3],n.identity(i),0!==a[2]&&(i[9]=a[2],n.multiply(t,t,i)),0!==a[1]&&(i[9]=0,i[8]=a[1],n.multiply(t,t,i)),0!==a[0]&&(i[8]=0,i[4]=a[0],n.multiply(t,t,i)),n.scale(t,t,r),t}},1811:function(t,e,r){var n=r(2478),i=r(7442),a=r(7608),o=r(5567),s=r(2408),l=r(7089),c=r(6582),u=r(7656),h=(r(2504),r(3536)),p=[0,0,0];function f(t){this._components=t.slice(),this._time=[0],this.prevMatrix=t.slice(),this.nextMatrix=t.slice(),this.computedMatrix=t.slice(),this.computedInverse=t.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}t.exports=function(t){return new f((t=t||{}).matrix||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])};var d=f.prototype;d.recalcMatrix=function(t){var e=this._time,r=n.le(e,t),o=this.computedMatrix;if(!(r<0)){var s=this._components;if(r===e.length-1)for(var l=16*r,c=0;c<16;++c)o[c]=s[l++];else{var u=e[r+1]-e[r],p=(l=16*r,this.prevMatrix),f=!0;for(c=0;c<16;++c)p[c]=s[l++];var d=this.nextMatrix;for(c=0;c<16;++c)d[c]=s[l++],f=f&&p[c]===d[c];if(u<1e-6||f)for(c=0;c<16;++c)o[c]=p[c];else i(o,p,d,(t-e[r])/u)}var m=this.computedUp;m[0]=o[1],m[1]=o[5],m[2]=o[9],h(m,m);var g=this.computedInverse;a(g,o);var y=this.computedEye,v=g[15];y[0]=g[12]/v,y[1]=g[13]/v,y[2]=g[14]/v;var x=this.computedCenter,_=Math.exp(this.computedRadius[0]);for(c=0;c<3;++c)x[c]=y[c]-o[2+4*c]*_}},d.idle=function(t){if(!(t1&&n(t[o[u-2]],t[o[u-1]],c)<=0;)u-=1,o.pop();for(o.push(l),u=s.length;u>1&&n(t[s[u-2]],t[s[u-1]],c)>=0;)u-=1,s.pop();s.push(l)}r=new Array(s.length+o.length-2);for(var h=0,p=(i=0,o.length);i0;--f)r[h++]=s[f];return r};var n=r(3250)[3]},351:function(t,e,r){t.exports=function(t,e){e||(e=t,t=window);var r=0,i=0,a=0,o={shift:!1,alt:!1,control:!1,meta:!1},s=!1;function l(t){var e=!1;return"altKey"in t&&(e=e||t.altKey!==o.alt,o.alt=!!t.altKey),"shiftKey"in t&&(e=e||t.shiftKey!==o.shift,o.shift=!!t.shiftKey),"ctrlKey"in t&&(e=e||t.ctrlKey!==o.control,o.control=!!t.ctrlKey),"metaKey"in t&&(e=e||t.metaKey!==o.meta,o.meta=!!t.metaKey),e}function c(t,s){var c=n.x(s),u=n.y(s);"buttons"in s&&(t=0|s.buttons),(t!==r||c!==i||u!==a||l(s))&&(r=0|t,i=c||0,a=u||0,e&&e(r,i,a,o))}function u(t){c(0,t)}function h(){(r||i||a||o.shift||o.alt||o.meta||o.control)&&(i=a=0,r=0,o.shift=o.alt=o.control=o.meta=!1,e&&e(0,0,0,o))}function p(t){l(t)&&e&&e(r,i,a,o)}function f(t){0===n.buttons(t)?c(0,t):c(r,t)}function d(t){c(r|n.buttons(t),t)}function m(t){c(r&~n.buttons(t),t)}function g(){s||(s=!0,t.addEventListener("mousemove",f),t.addEventListener("mousedown",d),t.addEventListener("mouseup",m),t.addEventListener("mouseleave",u),t.addEventListener("mouseenter",u),t.addEventListener("mouseout",u),t.addEventListener("mouseover",u),t.addEventListener("blur",h),t.addEventListener("keyup",p),t.addEventListener("keydown",p),t.addEventListener("keypress",p),t!==window&&(window.addEventListener("blur",h),window.addEventListener("keyup",p),window.addEventListener("keydown",p),window.addEventListener("keypress",p)))}g();var y={element:t};return Object.defineProperties(y,{enabled:{get:function(){return s},set:function(e){e?g():s&&(s=!1,t.removeEventListener("mousemove",f),t.removeEventListener("mousedown",d),t.removeEventListener("mouseup",m),t.removeEventListener("mouseleave",u),t.removeEventListener("mouseenter",u),t.removeEventListener("mouseout",u),t.removeEventListener("mouseover",u),t.removeEventListener("blur",h),t.removeEventListener("keyup",p),t.removeEventListener("keydown",p),t.removeEventListener("keypress",p),t!==window&&(window.removeEventListener("blur",h),window.removeEventListener("keyup",p),window.removeEventListener("keydown",p),window.removeEventListener("keypress",p)))},enumerable:!0},buttons:{get:function(){return r},enumerable:!0},x:{get:function(){return i},enumerable:!0},y:{get:function(){return a},enumerable:!0},mods:{get:function(){return o},enumerable:!0}}),y};var n=r(4687)},24:function(t){var e={left:0,top:0};t.exports=function(t,r,n){r=r||t.currentTarget||t.srcElement,Array.isArray(n)||(n=[0,0]);var i=t.clientX||0,a=t.clientY||0,o=function(t){return t===window||t===document||t===document.body?e:t.getBoundingClientRect()}(r);return n[0]=i-o.left,n[1]=a-o.top,n}},4687:function(t,e){function r(t){return t.target||t.srcElement||window}e.buttons=function(t){if("object"==typeof t){if("buttons"in t)return t.buttons;if("which"in t){if(2===(e=t.which))return 4;if(3===e)return 2;if(e>0)return 1<=0)return 1< 0"),"function"!=typeof t.vertex&&e("Must specify vertex creation function"),"function"!=typeof t.cell&&e("Must specify cell creation function"),"function"!=typeof t.phase&&e("Must specify phase function");for(var o=t.getters||[],s=new Array(a),l=0;l=0?s[l]=!0:s[l]=!1;return function(t,e,r,a,o,s){var l=[s,o].join(",");return(0,i[l])(t,e,r,n.mallocUint32,n.freeUint32)}(t.vertex,t.cell,t.phase,0,r,s)};var i={"false,0,1":function(t,e,r,n,i){return function(a,o,s,l){var c,u=0|a.shape[0],h=0|a.shape[1],p=a.data,f=0|a.offset,d=0|a.stride[0],m=0|a.stride[1],g=f,y=0|-d,v=0,x=0|-m,_=0,b=-d-m|0,w=0,T=0|d,A=m-d*u|0,k=0,M=0,S=0,E=2*u|0,C=n(E),I=n(E),L=0,P=0,z=-1,D=-1,O=0,R=0|-u,F=0|u,B=0,j=-u-1|0,N=u-1|0,U=0,V=0,q=0;for(k=0;k0){if(M=1,C[L++]=r(p[g],o,s,l),g+=T,u>0)for(k=1,c=p[g],P=C[L]=r(c,o,s,l),O=C[L+z],B=C[L+R],U=C[L+j],(P!==O||P!==B||P!==U)&&(v=p[g+y],_=p[g+x],w=p[g+b],t(k,M,c,v,_,w,P,O,B,U,o,s,l),V=I[L]=S++),L+=1,g+=T,k=2;k0)for(k=1,c=p[g],P=C[L]=r(c,o,s,l),O=C[L+z],B=C[L+R],U=C[L+j],(P!==O||P!==B||P!==U)&&(v=p[g+y],_=p[g+x],w=p[g+b],t(k,M,c,v,_,w,P,O,B,U,o,s,l),V=I[L]=S++,U!==B&&e(I[L+R],V,_,w,B,U,o,s,l)),L+=1,g+=T,k=2;k0){if(k=1,C[L++]=r(p[g],o,s,l),g+=T,h>0)for(M=1,c=p[g],P=C[L]=r(c,o,s,l),B=C[L+R],O=C[L+z],U=C[L+j],(P!==B||P!==O||P!==U)&&(v=p[g+y],_=p[g+x],w=p[g+b],t(k,M,c,v,_,w,P,B,O,U,o,s,l),V=I[L]=S++),L+=1,g+=T,M=2;M0)for(M=1,c=p[g],P=C[L]=r(c,o,s,l),B=C[L+R],O=C[L+z],U=C[L+j],(P!==B||P!==O||P!==U)&&(v=p[g+y],_=p[g+x],w=p[g+b],t(k,M,c,v,_,w,P,B,O,U,o,s,l),V=I[L]=S++,U!==B&&e(I[L+R],V,w,v,U,B,o,s,l)),L+=1,g+=T,M=2;M2&&a[1]>2&&n(i.pick(-1,-1).lo(1,1).hi(a[0]-2,a[1]-2),t.pick(-1,-1,0).lo(1,1).hi(a[0]-2,a[1]-2),t.pick(-1,-1,1).lo(1,1).hi(a[0]-2,a[1]-2)),a[1]>2&&(r(i.pick(0,-1).lo(1).hi(a[1]-2),t.pick(0,-1,1).lo(1).hi(a[1]-2)),e(t.pick(0,-1,0).lo(1).hi(a[1]-2))),a[1]>2&&(r(i.pick(a[0]-1,-1).lo(1).hi(a[1]-2),t.pick(a[0]-1,-1,1).lo(1).hi(a[1]-2)),e(t.pick(a[0]-1,-1,0).lo(1).hi(a[1]-2))),a[0]>2&&(r(i.pick(-1,0).lo(1).hi(a[0]-2),t.pick(-1,0,0).lo(1).hi(a[0]-2)),e(t.pick(-1,0,1).lo(1).hi(a[0]-2))),a[0]>2&&(r(i.pick(-1,a[1]-1).lo(1).hi(a[0]-2),t.pick(-1,a[1]-1,0).lo(1).hi(a[0]-2)),e(t.pick(-1,a[1]-1,1).lo(1).hi(a[0]-2))),t.set(0,0,0,0),t.set(0,0,1,0),t.set(a[0]-1,0,0,0),t.set(a[0]-1,0,1,0),t.set(0,a[1]-1,0,0),t.set(0,a[1]-1,1,0),t.set(a[0]-1,a[1]-1,0,0),t.set(a[0]-1,a[1]-1,1,0),t}}t.exports=function(t,e,r){if(Array.isArray(r)||(r=n(e.dimension,"string"==typeof r?r:"clamp")),0===e.size)return t;if(0===e.dimension)return t.set(0),t;var i=function(t){var e=t.join();if(a=u[e])return a;for(var r=t.length,n=[h,p],i=1;i<=r;++i)n.push(f(i));var a=d.apply(void 0,n);return u[e]=a,a}(r);return i(t,e)}},4317:function(t){function e(t,e){var r=Math.floor(e),n=e-r,i=0<=r&&r0;){x<64?(l=x,x=0):(l=64,x-=64);for(var _=0|t[1];_>0;){_<64?(c=_,_=0):(c=64,_-=64),n=y+x*h+_*p,o=v+x*d+_*m;var b=0,w=0,T=0,A=f,k=h-u*f,M=p-l*h,S=g,E=d-u*g,C=m-l*d;for(T=0;T0;){m<64?(l=m,m=0):(l=64,m-=64);for(var g=0|t[0];g>0;){g<64?(s=g,g=0):(s=64,g-=64),n=f+m*u+g*c,o=d+m*p+g*h;var y=0,v=0,x=u,_=c-l*u,b=p,w=h-l*p;for(v=0;v0;){v<64?(c=v,v=0):(c=64,v-=64);for(var x=0|t[0];x>0;){x<64?(s=x,x=0):(s=64,x-=64);for(var _=0|t[1];_>0;){_<64?(l=_,_=0):(l=64,_-=64),n=g+v*p+x*u+_*h,o=y+v*m+x*f+_*d;var b=0,w=0,T=0,A=p,k=u-c*p,M=h-s*u,S=m,E=f-c*m,C=d-s*f;for(T=0;Tr;){y=0,v=m-o;e:for(g=0;g_)break e;v+=h,y+=p}for(y=m,v=m-o,g=0;g>1,H=q-N,G=q+N,W=U,Z=H,Y=q,X=G,$=V,K=i+1,J=a-1,Q=!0,tt=0,et=0,rt=0,nt=h,it=e(nt),at=e(nt);k=l*W,M=l*Z,j=s;t:for(A=0;A0){g=W,W=Z,Z=g;break t}if(rt<0)break t;j+=f}k=l*X,M=l*$,j=s;t:for(A=0;A0){g=X,X=$,$=g;break t}if(rt<0)break t;j+=f}k=l*W,M=l*Y,j=s;t:for(A=0;A0){g=W,W=Y,Y=g;break t}if(rt<0)break t;j+=f}k=l*Z,M=l*Y,j=s;t:for(A=0;A0){g=Z,Z=Y,Y=g;break t}if(rt<0)break t;j+=f}k=l*W,M=l*X,j=s;t:for(A=0;A0){g=W,W=X,X=g;break t}if(rt<0)break t;j+=f}k=l*Y,M=l*X,j=s;t:for(A=0;A0){g=Y,Y=X,X=g;break t}if(rt<0)break t;j+=f}k=l*Z,M=l*$,j=s;t:for(A=0;A0){g=Z,Z=$,$=g;break t}if(rt<0)break t;j+=f}k=l*Z,M=l*Y,j=s;t:for(A=0;A0){g=Z,Z=Y,Y=g;break t}if(rt<0)break t;j+=f}k=l*X,M=l*$,j=s;t:for(A=0;A0){g=X,X=$,$=g;break t}if(rt<0)break t;j+=f}for(k=l*W,M=l*Z,S=l*Y,E=l*X,C=l*$,I=l*U,L=l*q,P=l*V,B=0,j=s,A=0;A0)){if(rt<0){for(k=l*_,M=l*K,S=l*J,j=s,A=0;A0)for(;;){for(b=s+J*l,B=0,A=0;A0)){for(b=s+J*l,B=0,A=0;AV){t:for(;;){for(b=s+K*l,B=0,j=s,A=0;A1&&n?s(r,n[0],n[1]):s(r)}(t,e,l);return n(l,c)}},446:function(t,e,r){var n=r(7640),i={};t.exports=function(t){var e=t.order,r=t.dtype,a=[e,r].join(":"),o=i[a];return o||(i[a]=o=n(e,r)),o(t),t}},9618:function(t,e,r){var n=r(7163),i=typeof Float64Array<"u";function a(t,e){return t[0]-e[0]}function o(){var t,e=this.stride,r=new Array(e.length);for(t=0;t=0&&(e+=a*(r=0|t),i-=r),new n(this.data,i,a,e)},i.step=function(t){var e=this.shape[0],r=this.stride[0],i=this.offset,a=0,o=Math.ceil;return"number"==typeof t&&((a=0|t)<0?(i+=r*(e-1),e=o(-e/a)):e=o(e/a),r*=a),new n(this.data,e,r,i)},i.transpose=function(t){t=void 0===t?0:0|t;var e=this.shape,r=this.stride;return new n(this.data,e[t],r[t],this.offset)},i.pick=function(t){var r=[],n=[],i=this.offset;return"number"==typeof t&&t>=0?i=i+this.stride[0]*t|0:(r.push(this.shape[0]),n.push(this.stride[0])),(0,e[r.length+1])(this.data,r,n,i)},function(t,e,r,i){return new n(t,e[0],r[0],i)}},2:function(t,e,r){function n(t,e,r,n,i,a){this.data=t,this.shape=[e,r],this.stride=[n,i],this.offset=0|a}var i=n.prototype;return i.dtype=t,i.dimension=2,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(i,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),i.set=function(e,r,n){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r,n):this.data[this.offset+this.stride[0]*e+this.stride[1]*r]=n},i.get=function(e,r){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r):this.data[this.offset+this.stride[0]*e+this.stride[1]*r]},i.index=function(t,e){return this.offset+this.stride[0]*t+this.stride[1]*e},i.hi=function(t,e){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,this.stride[0],this.stride[1],this.offset)},i.lo=function(t,e){var r=this.offset,i=0,a=this.shape[0],o=this.shape[1],s=this.stride[0],l=this.stride[1];return"number"==typeof t&&t>=0&&(r+=s*(i=0|t),a-=i),"number"==typeof e&&e>=0&&(r+=l*(i=0|e),o-=i),new n(this.data,a,o,s,l,r)},i.step=function(t,e){var r=this.shape[0],i=this.shape[1],a=this.stride[0],o=this.stride[1],s=this.offset,l=0,c=Math.ceil;return"number"==typeof t&&((l=0|t)<0?(s+=a*(r-1),r=c(-r/l)):r=c(r/l),a*=l),"number"==typeof e&&((l=0|e)<0?(s+=o*(i-1),i=c(-i/l)):i=c(i/l),o*=l),new n(this.data,r,i,a,o,s)},i.transpose=function(t,e){t=void 0===t?0:0|t,e=void 0===e?1:0|e;var r=this.shape,i=this.stride;return new n(this.data,r[t],r[e],i[t],i[e],this.offset)},i.pick=function(t,r){var n=[],i=[],a=this.offset;return"number"==typeof t&&t>=0?a=a+this.stride[0]*t|0:(n.push(this.shape[0]),i.push(this.stride[0])),"number"==typeof r&&r>=0?a=a+this.stride[1]*r|0:(n.push(this.shape[1]),i.push(this.stride[1])),(0,e[n.length+1])(this.data,n,i,a)},function(t,e,r,i){return new n(t,e[0],e[1],r[0],r[1],i)}},3:function(t,e,r){function n(t,e,r,n,i,a,o,s){this.data=t,this.shape=[e,r,n],this.stride=[i,a,o],this.offset=0|s}var i=n.prototype;return i.dtype=t,i.dimension=3,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(i,"order",{get:function(){var t=Math.abs(this.stride[0]),e=Math.abs(this.stride[1]),r=Math.abs(this.stride[2]);return t>e?e>r?[2,1,0]:t>r?[1,2,0]:[1,0,2]:t>r?[2,0,1]:r>e?[0,1,2]:[0,2,1]}}),i.set=function(e,r,n,i){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n,i):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n]=i},i.get=function(e,r,n){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n]},i.index=function(t,e,r){return this.offset+this.stride[0]*t+this.stride[1]*e+this.stride[2]*r},i.hi=function(t,e,r){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,"number"!=typeof r||r<0?this.shape[2]:0|r,this.stride[0],this.stride[1],this.stride[2],this.offset)},i.lo=function(t,e,r){var i=this.offset,a=0,o=this.shape[0],s=this.shape[1],l=this.shape[2],c=this.stride[0],u=this.stride[1],h=this.stride[2];return"number"==typeof t&&t>=0&&(i+=c*(a=0|t),o-=a),"number"==typeof e&&e>=0&&(i+=u*(a=0|e),s-=a),"number"==typeof r&&r>=0&&(i+=h*(a=0|r),l-=a),new n(this.data,o,s,l,c,u,h,i)},i.step=function(t,e,r){var i=this.shape[0],a=this.shape[1],o=this.shape[2],s=this.stride[0],l=this.stride[1],c=this.stride[2],u=this.offset,h=0,p=Math.ceil;return"number"==typeof t&&((h=0|t)<0?(u+=s*(i-1),i=p(-i/h)):i=p(i/h),s*=h),"number"==typeof e&&((h=0|e)<0?(u+=l*(a-1),a=p(-a/h)):a=p(a/h),l*=h),"number"==typeof r&&((h=0|r)<0?(u+=c*(o-1),o=p(-o/h)):o=p(o/h),c*=h),new n(this.data,i,a,o,s,l,c,u)},i.transpose=function(t,e,r){t=void 0===t?0:0|t,e=void 0===e?1:0|e,r=void 0===r?2:0|r;var i=this.shape,a=this.stride;return new n(this.data,i[t],i[e],i[r],a[t],a[e],a[r],this.offset)},i.pick=function(t,r,n){var i=[],a=[],o=this.offset;return"number"==typeof t&&t>=0?o=o+this.stride[0]*t|0:(i.push(this.shape[0]),a.push(this.stride[0])),"number"==typeof r&&r>=0?o=o+this.stride[1]*r|0:(i.push(this.shape[1]),a.push(this.stride[1])),"number"==typeof n&&n>=0?o=o+this.stride[2]*n|0:(i.push(this.shape[2]),a.push(this.stride[2])),(0,e[i.length+1])(this.data,i,a,o)},function(t,e,r,i){return new n(t,e[0],e[1],e[2],r[0],r[1],r[2],i)}},4:function(t,e,r){function n(t,e,r,n,i,a,o,s,l,c){this.data=t,this.shape=[e,r,n,i],this.stride=[a,o,s,l],this.offset=0|c}var i=n.prototype;return i.dtype=t,i.dimension=4,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(i,"order",{get:r}),i.set=function(e,r,n,i,a){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i,a):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i]=a},i.get=function(e,r,n,i){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i]},i.index=function(t,e,r,n){return this.offset+this.stride[0]*t+this.stride[1]*e+this.stride[2]*r+this.stride[3]*n},i.hi=function(t,e,r,i){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,"number"!=typeof r||r<0?this.shape[2]:0|r,"number"!=typeof i||i<0?this.shape[3]:0|i,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},i.lo=function(t,e,r,i){var a=this.offset,o=0,s=this.shape[0],l=this.shape[1],c=this.shape[2],u=this.shape[3],h=this.stride[0],p=this.stride[1],f=this.stride[2],d=this.stride[3];return"number"==typeof t&&t>=0&&(a+=h*(o=0|t),s-=o),"number"==typeof e&&e>=0&&(a+=p*(o=0|e),l-=o),"number"==typeof r&&r>=0&&(a+=f*(o=0|r),c-=o),"number"==typeof i&&i>=0&&(a+=d*(o=0|i),u-=o),new n(this.data,s,l,c,u,h,p,f,d,a)},i.step=function(t,e,r,i){var a=this.shape[0],o=this.shape[1],s=this.shape[2],l=this.shape[3],c=this.stride[0],u=this.stride[1],h=this.stride[2],p=this.stride[3],f=this.offset,d=0,m=Math.ceil;return"number"==typeof t&&((d=0|t)<0?(f+=c*(a-1),a=m(-a/d)):a=m(a/d),c*=d),"number"==typeof e&&((d=0|e)<0?(f+=u*(o-1),o=m(-o/d)):o=m(o/d),u*=d),"number"==typeof r&&((d=0|r)<0?(f+=h*(s-1),s=m(-s/d)):s=m(s/d),h*=d),"number"==typeof i&&((d=0|i)<0?(f+=p*(l-1),l=m(-l/d)):l=m(l/d),p*=d),new n(this.data,a,o,s,l,c,u,h,p,f)},i.transpose=function(t,e,r,i){t=void 0===t?0:0|t,e=void 0===e?1:0|e,r=void 0===r?2:0|r,i=void 0===i?3:0|i;var a=this.shape,o=this.stride;return new n(this.data,a[t],a[e],a[r],a[i],o[t],o[e],o[r],o[i],this.offset)},i.pick=function(t,r,n,i){var a=[],o=[],s=this.offset;return"number"==typeof t&&t>=0?s=s+this.stride[0]*t|0:(a.push(this.shape[0]),o.push(this.stride[0])),"number"==typeof r&&r>=0?s=s+this.stride[1]*r|0:(a.push(this.shape[1]),o.push(this.stride[1])),"number"==typeof n&&n>=0?s=s+this.stride[2]*n|0:(a.push(this.shape[2]),o.push(this.stride[2])),"number"==typeof i&&i>=0?s=s+this.stride[3]*i|0:(a.push(this.shape[3]),o.push(this.stride[3])),(0,e[a.length+1])(this.data,a,o,s)},function(t,e,r,i){return new n(t,e[0],e[1],e[2],e[3],r[0],r[1],r[2],r[3],i)}},5:function(t,e,r){function n(t,e,r,n,i,a,o,s,l,c,u,h){this.data=t,this.shape=[e,r,n,i,a],this.stride=[o,s,l,c,u],this.offset=0|h}var i=n.prototype;return i.dtype=t,i.dimension=5,Object.defineProperty(i,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(i,"order",{get:r}),i.set=function(e,r,n,i,a,o){return"generic"===t?this.data.set(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a,o):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a]=o},i.get=function(e,r,n,i,a){return"generic"===t?this.data.get(this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a):this.data[this.offset+this.stride[0]*e+this.stride[1]*r+this.stride[2]*n+this.stride[3]*i+this.stride[4]*a]},i.index=function(t,e,r,n,i){return this.offset+this.stride[0]*t+this.stride[1]*e+this.stride[2]*r+this.stride[3]*n+this.stride[4]*i},i.hi=function(t,e,r,i,a){return new n(this.data,"number"!=typeof t||t<0?this.shape[0]:0|t,"number"!=typeof e||e<0?this.shape[1]:0|e,"number"!=typeof r||r<0?this.shape[2]:0|r,"number"!=typeof i||i<0?this.shape[3]:0|i,"number"!=typeof a||a<0?this.shape[4]:0|a,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},i.lo=function(t,e,r,i,a){var o=this.offset,s=0,l=this.shape[0],c=this.shape[1],u=this.shape[2],h=this.shape[3],p=this.shape[4],f=this.stride[0],d=this.stride[1],m=this.stride[2],g=this.stride[3],y=this.stride[4];return"number"==typeof t&&t>=0&&(o+=f*(s=0|t),l-=s),"number"==typeof e&&e>=0&&(o+=d*(s=0|e),c-=s),"number"==typeof r&&r>=0&&(o+=m*(s=0|r),u-=s),"number"==typeof i&&i>=0&&(o+=g*(s=0|i),h-=s),"number"==typeof a&&a>=0&&(o+=y*(s=0|a),p-=s),new n(this.data,l,c,u,h,p,f,d,m,g,y,o)},i.step=function(t,e,r,i,a){var o=this.shape[0],s=this.shape[1],l=this.shape[2],c=this.shape[3],u=this.shape[4],h=this.stride[0],p=this.stride[1],f=this.stride[2],d=this.stride[3],m=this.stride[4],g=this.offset,y=0,v=Math.ceil;return"number"==typeof t&&((y=0|t)<0?(g+=h*(o-1),o=v(-o/y)):o=v(o/y),h*=y),"number"==typeof e&&((y=0|e)<0?(g+=p*(s-1),s=v(-s/y)):s=v(s/y),p*=y),"number"==typeof r&&((y=0|r)<0?(g+=f*(l-1),l=v(-l/y)):l=v(l/y),f*=y),"number"==typeof i&&((y=0|i)<0?(g+=d*(c-1),c=v(-c/y)):c=v(c/y),d*=y),"number"==typeof a&&((y=0|a)<0?(g+=m*(u-1),u=v(-u/y)):u=v(u/y),m*=y),new n(this.data,o,s,l,c,u,h,p,f,d,m,g)},i.transpose=function(t,e,r,i,a){t=void 0===t?0:0|t,e=void 0===e?1:0|e,r=void 0===r?2:0|r,i=void 0===i?3:0|i,a=void 0===a?4:0|a;var o=this.shape,s=this.stride;return new n(this.data,o[t],o[e],o[r],o[i],o[a],s[t],s[e],s[r],s[i],s[a],this.offset)},i.pick=function(t,r,n,i,a){var o=[],s=[],l=this.offset;return"number"==typeof t&&t>=0?l=l+this.stride[0]*t|0:(o.push(this.shape[0]),s.push(this.stride[0])),"number"==typeof r&&r>=0?l=l+this.stride[1]*r|0:(o.push(this.shape[1]),s.push(this.stride[1])),"number"==typeof n&&n>=0?l=l+this.stride[2]*n|0:(o.push(this.shape[2]),s.push(this.stride[2])),"number"==typeof i&&i>=0?l=l+this.stride[3]*i|0:(o.push(this.shape[3]),s.push(this.stride[3])),"number"==typeof a&&a>=0?l=l+this.stride[4]*a|0:(o.push(this.shape[4]),s.push(this.stride[4])),(0,e[o.length+1])(this.data,o,s,l)},function(t,e,r,i){return new n(t,e[0],e[1],e[2],e[3],e[4],r[0],r[1],r[2],r[3],r[4],i)}}};function l(t,e){var r=-1===e?"T":String(e),n=s[r];return-1===e?n(t):0===e?n(t,c[t][0]):n(t,c[t],o)}var c={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};t.exports=function(t,e,r,a){if(void 0===t)return(0,c.array[0])([]);"number"==typeof t&&(t=[t]),void 0===e&&(e=[t.length]);var o=e.length;if(void 0===r){r=new Array(o);for(var s=o-1,u=1;s>=0;--s)r[s]=u,u*=e[s]}if(void 0===a)for(a=0,s=0;s>>0;t.exports=function(t,e){if(isNaN(t)||isNaN(e))return NaN;if(t===e)return t;if(0===t)return e<0?-i:i;var r=n.hi(t),o=n.lo(t);return e>t==t>0?o===a?(r+=1,o=0):o+=1:0===o?(o=a,r-=1):o-=1,n.pack(o,r)}},8406:function(t,e){e.vertexNormals=function(t,e,r){for(var n=e.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;oa){var _=i[c],b=1/Math.sqrt(g*v);for(x=0;x<3;++x){var w=(x+1)%3,T=(x+2)%3;_[x]+=b*(y[w]*m[T]-y[T]*m[w])}}}for(o=0;oa)for(b=1/Math.sqrt(A),x=0;x<3;++x)_[x]*=b;else for(x=0;x<3;++x)_[x]=0}return i},e.faceNormals=function(t,e,r){for(var n=t.length,i=new Array(n),a=void 0===r?1e-6:r,o=0;oa?1/Math.sqrt(f):0,c=0;c<3;++c)p[c]*=f;i[o]=p}return i}},4081:function(t){t.exports=function(t,e,r,n,i,a,o,s,l,c){var u=e+a+c;if(h>0){var h=Math.sqrt(u+1);t[0]=.5*(o-l)/h,t[1]=.5*(s-n)/h,t[2]=.5*(r-a)/h,t[3]=.5*h}else{var p=Math.max(e,a,c);h=Math.sqrt(2*p-u+1),e>=p?(t[0]=.5*h,t[1]=.5*(i+r)/h,t[2]=.5*(s+n)/h,t[3]=.5*(o-l)/h):a>=p?(t[0]=.5*(r+i)/h,t[1]=.5*h,t[2]=.5*(l+o)/h,t[3]=.5*(s-n)/h):(t[0]=.5*(n+s)/h,t[1]=.5*(o+l)/h,t[2]=.5*h,t[3]=.5*(r-i)/h)}return t}},9977:function(t,e,r){t.exports=function(t){var e=(t=t||{}).center||[0,0,0],r=t.rotation||[0,0,0,1],n=t.radius||1;e=[].slice.call(e,0,3),u(r=[].slice.call(r,0,4),r);var i=new h(r,e,Math.log(n));return i.setDistanceLimits(t.zoomMin,t.zoomMax),("eye"in t||"up"in t)&&i.lookAt(0,t.eye,t.center,t.up),i};var n=r(9215),i=r(6582),a=r(7399),o=r(7608),s=r(4081);function l(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function c(t,e,r,n){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2)+Math.pow(n,2))}function u(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=c(r,n,i,a);o>1e-6?(t[0]=r/o,t[1]=n/o,t[2]=i/o,t[3]=a/o):(t[0]=t[1]=t[2]=0,t[3]=1)}function h(t,e,r){this.radius=n([r]),this.center=n(e),this.rotation=n(t),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var p=h.prototype;p.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},p.recalcMatrix=function(t){this.radius.curve(t),this.center.curve(t),this.rotation.curve(t);var e=this.computedRotation;u(e,e);var r=this.computedMatrix;a(r,e);var n=this.computedCenter,i=this.computedEye,o=this.computedUp,s=Math.exp(this.computedRadius[0]);i[0]=n[0]+s*r[2],i[1]=n[1]+s*r[6],i[2]=n[2]+s*r[10],o[0]=r[1],o[1]=r[5],o[2]=r[9];for(var l=0;l<3;++l){for(var c=0,h=0;h<3;++h)c+=r[l+4*h]*i[h];r[12+l]=-c}},p.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r},p.idle=function(t){this.center.idle(t),this.radius.idle(t),this.rotation.idle(t)},p.flush=function(t){this.center.flush(t),this.radius.flush(t),this.rotation.flush(t)},p.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=i[1],o=i[5],s=i[9],c=l(a,o,s);a/=c,o/=c,s/=c;var u=i[0],h=i[4],p=i[8],f=u*a+h*o+p*s,d=l(u-=a*f,h-=o*f,p-=s*f);u/=d,h/=d,p/=d;var m=i[2],g=i[6],y=i[10],v=m*a+g*o+y*s,x=m*u+g*h+y*p,_=l(m-=v*a+x*u,g-=v*o+x*h,y-=v*s+x*p);m/=_,g/=_,y/=_;var b=u*e+a*r,w=h*e+o*r,T=p*e+s*r;this.center.move(t,b,w,T);var A=Math.exp(this.computedRadius[0]);A=Math.max(1e-4,A+n),this.radius.set(t,Math.log(A))},p.rotate=function(t,e,r,n){this.recalcMatrix(t),e=e||0,r=r||0;var i=this.computedMatrix,a=i[0],o=i[4],s=i[8],u=i[1],h=i[5],p=i[9],f=i[2],d=i[6],m=i[10],g=e*a+r*u,y=e*o+r*h,v=e*s+r*p,x=-(d*v-m*y),_=-(m*g-f*v),b=-(f*y-d*g),w=Math.sqrt(Math.max(0,1-Math.pow(x,2)-Math.pow(_,2)-Math.pow(b,2))),T=c(x,_,b,w);T>1e-6?(x/=T,_/=T,b/=T,w/=T):(x=_=b=0,w=1);var A=this.computedRotation,k=A[0],M=A[1],S=A[2],E=A[3],C=k*w+E*x+M*b-S*_,I=M*w+E*_+S*x-k*b,L=S*w+E*b+k*_-M*x,P=E*w-k*x-M*_-S*b;if(n){x=f,_=d,b=m;var z=Math.sin(n)/l(x,_,b);x*=z,_*=z,b*=z,P=P*(w=Math.cos(e))-(C=C*w+P*x+I*b-L*_)*x-(I=I*w+P*_+L*x-C*b)*_-(L=L*w+P*b+C*_-I*x)*b}var D=c(C,I,L,P);D>1e-6?(C/=D,I/=D,L/=D,P/=D):(C=I=L=0,P=1),this.rotation.set(t,C,I,L,P)},p.lookAt=function(t,e,r,n){this.recalcMatrix(t),r=r||this.computedCenter,e=e||this.computedEye,n=n||this.computedUp;var a=this.computedMatrix;i(a,e,r,n);var o=this.computedRotation;s(o,a[0],a[1],a[2],a[4],a[5],a[6],a[8],a[9],a[10]),u(o,o),this.rotation.set(t,o[0],o[1],o[2],o[3]);for(var l=0,c=0;c<3;++c)l+=Math.pow(r[c]-e[c],2);this.radius.set(t,.5*Math.log(Math.max(l,1e-6))),this.center.set(t,r[0],r[1],r[2])},p.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},p.setMatrix=function(t,e){var r=this.computedRotation;s(r,e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]),u(r,r),this.rotation.set(t,r[0],r[1],r[2],r[3]);var n=this.computedMatrix;o(n,e);var i=n[15];if(Math.abs(i)>1e-6){var a=n[12]/i,l=n[13]/i,c=n[14]/i;this.recalcMatrix(t);var h=Math.exp(this.computedRadius[0]);this.center.set(t,a-n[2]*h,l-n[6]*h,c-n[10]*h),this.radius.idle(t)}else this.center.idle(t),this.radius.idle(t)},p.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},p.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},p.getDistanceLimits=function(t){var e=this.radius.bounds;return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},p.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},p.fromJSON=function(t){var e=this.lastT(),r=t.center;r&&this.center.set(e,r[0],r[1],r[2]);var n=t.rotation;n&&this.rotation.set(e,n[0],n[1],n[2],n[3]);var i=t.distance;i&&i>0&&this.radius.set(e,Math.log(i)),this.setDistanceLimits(t.zoomMin,t.zoomMax)}},1371:function(t,e,r){var n=r(3233);t.exports=function(t,e,r){return n(r=typeof r<"u"?r+"":" ",e)+t}},3202:function(t){t.exports=function(t,e){e||(e=[0,""]),t=String(t);var r=parseFloat(t,10);return e[0]=r,e[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",e}},3088:function(t,e,r){t.exports=function(t,e){for(var r=0|e.length,i=t.length,a=[new Array(r),new Array(r)],o=0;o0){o=a[c][r][0],l=c;break}s=o[1^l];for(var h=0;h<2;++h)for(var p=a[h][r],f=0;f0&&(o=d,s=m,l=h)}return i||o&&u(o,l),s}function p(t,r){var i=a[r][t][0],o=[t];u(i,r);for(var s=i[1^r];;){for(;s!==t;)o.push(s),s=h(o[o.length-2],s,!1);if(a[0][t].length+a[1][t].length===0)break;var l=o[o.length-1],c=t,p=o[1],f=h(l,c,!0);if(n(e[l],e[c],e[p],e[f])<0)break;o.push(t),s=h(l,c)}return o}for(o=0;o0;){a[0][o].length;var m=p(o,f);(l=m)[1]===l[l.length-1]?d.push.apply(d,m):(d.length>0&&c.push(d),d=m)}d.length>0&&c.push(d)}return c};var n=r(3140)},5609:function(t,e,r){t.exports=function(t,e){for(var r=n(t,e.length),i=new Array(e.length),a=new Array(e.length),o=[],s=0;s0;){i[f=o.pop()]=!1;var c=r[f];for(s=0;s0}))).length,g=new Array(m),y=new Array(m);for(f=0;f0;){var B=R.pop(),j=E[B];l(j,(function(t,e){return t-e}));var N,U=j.length,V=F[B];for(0===V&&(N=[q=d[B]]),f=0;f=0||(F[H]=1^V,R.push(H),0!==V)||O(q=d[H])||(q.reverse(),N.push(q))}0===V&&r.push(N)}return r};var n=r(3134),i=r(3088),a=r(5085),o=r(5250),s=r(8210),l=r(1682),c=r(5609);function u(t,e){for(var r=new Array(t),n=0;n0&&e[i]===r[0]))return 1;a=t[i-1]}for(var s=1;a;){var l=a.key,c=n(r,l[0],l[1]);if(l[0][0]0))return 0;s=-1,a=a.right}else if(c>0)a=a.left;else{if(!(c<0))return 0;s=1,a=a.right}}return s}}(g.slabs,g.coordinates);return 0===a.length?y:function(t,e){return function(r){return t(r[0],r[1])?0:e(r)}}(l(a),y)};var n=r(3250)[3],i=r(4209),a=r(3352),o=r(2478);function s(){return!0}function l(t){for(var e={},r=0;r=c?(A=1,v=c+2*p+d):v=p*(A=-p/c)+d):(A=0,f>=0?(k=0,v=d):-f>=h?(k=1,v=h+2*f+d):v=f*(k=-f/h)+d);else if(k<0)k=0,p>=0?(A=0,v=d):-p>=c?(A=1,v=c+2*p+d):v=p*(A=-p/c)+d;else{var M=1/T;v=(A*=M)*(c*A+u*(k*=M)+2*p)+k*(u*A+h*k+2*f)+d}else A<0?(_=h+f)>(x=u+p)?(b=_-x)>=(w=c-2*u+h)?(A=1,k=0,v=c+2*p+d):v=(A=b/w)*(c*A+u*(k=1-A)+2*p)+k*(u*A+h*k+2*f)+d:(A=0,_<=0?(k=1,v=h+2*f+d):f>=0?(k=0,v=d):v=f*(k=-f/h)+d):k<0?(_=c+p)>(x=u+f)?(b=_-x)>=(w=c-2*u+h)?(k=1,A=0,v=h+2*f+d):v=(A=1-(k=b/w))*(c*A+u*k+2*p)+k*(u*A+h*k+2*f)+d:(k=0,_<=0?(A=1,v=c+2*p+d):p>=0?(A=0,v=d):v=p*(A=-p/c)+d):(b=h+f-u-p)<=0?(A=0,k=1,v=h+2*f+d):b>=(w=c-2*u+h)?(A=1,k=0,v=c+2*p+d):v=(A=b/w)*(c*A+u*(k=1-A)+2*p)+k*(u*A+h*k+2*f)+d;var S=1-A-k;for(l=0;l0){var c=t[r-1];if(0===n(s,c)&&a(c)!==l){r-=1;continue}}t[r++]=s}}return t.length=r,t}},3233:function(t){var e,r="";t.exports=function(t,n){if("string"!=typeof t)throw new TypeError("expected a string");if(1===n)return t;if(2===n)return t+t;var i=t.length*n;if(e!==t||typeof e>"u")e=t,r="";else if(r.length>=i)return r.substr(0,i);for(;i>r.length&&n>1;)1&n&&(r+=t),n>>=1,t+=t;return r=(r+=t).substr(0,i)}},3025:function(t,e,r){t.exports=r.g.performance&&r.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(t){t.exports=function(t){for(var e=t.length,r=t[t.length-1],n=e,i=e-2;i>=0;--i){var a=r;(l=(s=t[i])-((r=a+s)-a))&&(t[--n]=r,r=l)}var o=0;for(i=n;i0){if(a<=0)return o;n=i+a}else{if(!(i<0))return o;if(a>=0)return o;n=-(i+a)}var s=l*n;return o>=s||o<=-s?o:d(t,e,r)},function(t,e,r,n){var i=t[0]-n[0],a=e[0]-n[0],o=r[0]-n[0],s=t[1]-n[1],l=e[1]-n[1],u=r[1]-n[1],h=t[2]-n[2],p=e[2]-n[2],f=r[2]-n[2],d=a*u,g=o*l,y=o*s,v=i*u,x=i*l,_=a*s,b=h*(d-g)+p*(y-v)+f*(x-_),w=(Math.abs(d)+Math.abs(g))*Math.abs(h)+(Math.abs(y)+Math.abs(v))*Math.abs(p)+(Math.abs(x)+Math.abs(_))*Math.abs(f),T=c*w;return b>T||-b>T?b:m(t,e,r,n)}];function y(t){var e=g[t.length];return e||(e=g[t.length]=f(t.length)),e.apply(void 0,t)}function v(t,e,r,n,i,a,o){return function(e,r,s,l,c){switch(arguments.length){case 0:case 1:return 0;case 2:return n(e,r);case 3:return i(e,r,s);case 4:return a(e,r,s,l);case 5:return o(e,r,s,l,c)}for(var u=new Array(arguments.length),h=0;h0&&o>0||a<0&&o<0)return!1;var s=n(r,t,e),l=n(i,t,e);return!(s>0&&l>0||s<0&&l<0)&&(0!==a||0!==o||0!==s||0!==l||function(t,e,r,n){for(var i=0;i<2;++i){var a=t[i],o=e[i],s=Math.min(a,o),l=Math.max(a,o),c=r[i],u=n[i],h=Math.min(c,u);if(Math.max(c,u)=n?(i=h,(l+=1)=n?(i=h,(l+=1)"u"&&(s=function(t){for(var e=t.length,r=0,n=0;n>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a>1,c=e[2*l+1];if(c===a)return l;a0)-(t<0)},e.abs=function(t){var e=t>>31;return(t^e)-e},e.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},e.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},e.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},e.countTrailingZeros=r,e.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,1+((t|=t>>>8)|t>>>16)},e.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},e.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var n=new Array(256);(function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|n[t>>>16&255]<<8|n[t>>>24&255]},e.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},e.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},e.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},e.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},e.nextCombination=function(t){var e=t|t-1;return e+1|(~e&-~e)-1>>>r(t)+1}},2014:function(t,e,r){var n=r(3105),i=r(4623);function a(t,e){var r=t.length,n=t.length-e.length,i=Math.min;if(n)return n;switch(r){case 0:return 0;case 1:return t[0]-e[0];case 2:return(s=t[0]+t[1]-e[0]-e[1])||i(t[0],t[1])-i(e[0],e[1]);case 3:var a=t[0]+t[1],o=e[0]+e[1];if(s=a+t[2]-(o+e[2]))return s;var s,l=i(t[0],t[1]),c=i(e[0],e[1]);return(s=i(l,t[2])-i(c,e[2]))||i(l+t[2],a)-i(c+e[2],o);default:var u=t.slice(0);u.sort();var h=e.slice(0);h.sort();for(var p=0;p>1,s=a(t[o],e);s<=0?(0===s&&(i=o),r=o+1):s>0&&(n=o-1)}return i}function u(t,e){for(var r=new Array(t.length),i=0,o=r.length;i=t.length||0!==a(t[g],s)););}return r}function h(t,e){if(e<0)return[];for(var r=[],i=(1<>>u&1&&c.push(i[u]);e.push(c)}return s(e)},e.skeleton=h,e.boundary=function(t){for(var e=[],r=0,n=t.length;r>1:(t>>1)-1}function x(t){for(var e=y(t);;){var r=e,n=2*t+1,i=2*(t+1),a=t;if(n0;){var r=v(t);if(!(r>=0&&e0){var t=A[0];return g(0,M-1),M-=1,x(0),t}return-1}function w(t,e){var r=A[t];return c[r]===e?t:(c[r]=-1/0,_(t),b(),c[r]=e,_((M+=1)-1))}function T(t){if(!u[t]){u[t]=!0;var e=s[t],r=l[t];s[r]>=0&&(s[r]=e),l[e]>=0&&(l[e]=r),k[e]>=0&&w(k[e],m(e)),k[r]>=0&&w(k[r],m(r))}}var A=[],k=new Array(a);for(h=0;h>1;h>=0;--h)x(h);for(;;){var S=b();if(S<0||c[S]>r)break;T(S)}var E=[];for(h=0;h=0&&r>=0&&e!==r){var n=k[e],i=k[r];n!==i&&I.push([n,i])}})),i.unique(i.normalize(I)),{positions:E,edges:I}};var n=r(3250),i=r(2014)},1303:function(t,e,r){t.exports=function(t,e){var r,a,o,s;if(e[0][0]e[1][0]))return i(e,t);r=e[1],a=e[0]}if(t[0][0]t[1][0]))return-i(t,e);o=t[1],s=t[0]}var l=n(r,a,s),c=n(r,a,o);if(l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;if(l=n(s,o,a),c=n(s,o,r),l<0){if(c<=0)return l}else if(l>0){if(c>=0)return l}else if(c)return c;return a[0]-s[0]};var n=r(3250);function i(t,e){var r,i,a,o;if(e[0][0]e[1][0])){var s=Math.min(t[0][1],t[1][1]),l=Math.max(t[0][1],t[1][1]),c=Math.min(e[0][1],e[1][1]),u=Math.max(e[0][1],e[1][1]);return lu?s-u:l-u}r=e[1],i=e[0]}t[0][1]0)if(e[0]!==o[1][0])r=t,t=t.right;else{if(l=c(t.right,e))return l;t=t.left}else{if(e[0]!==o[1][0])return t;var l;if(l=c(t.right,e))return l;t=t.left}}return r}function u(t,e,r,n){this.y=t,this.index=e,this.start=r,this.closed=n}function h(t,e,r,n){this.x=t,this.segment=e,this.create=r,this.index=n}s.prototype.castUp=function(t){var e=n.le(this.coordinates,t[0]);if(e<0)return-1;this.slabs[e];var r=c(this.slabs[e],t),i=-1;if(r&&(i=r.value),this.coordinates[e]===t[0]){var s=null;if(r&&(s=r.key),e>0){var u=c(this.slabs[e-1],t);u&&(s?o(u.key,s)>0&&(s=u.key,i=u.value):(i=u.value,s=u.key))}var h=this.horizontal[e];if(h.length>0){var p=n.ge(h,t[1],l);if(p=h.length)return i;f=h[p]}}if(f.start)if(s){var d=a(s[0],s[1],[t[0],f.y]);s[0][0]>s[1][0]&&(d=-d),d>0&&(i=f.index)}else i=f.index;else f.y!==t[1]&&(i=f.index)}}}return i}},5202:function(t,e,r){var n=r(1944),i=r(8210);function a(t,e){var r=i(n(t,e),[e[e.length-1]]);return r[r.length-1]}function o(t,e,r,n){var i=-e/(n-e);i<0?i=0:i>1&&(i=1);for(var a=1-i,o=t.length,s=new Array(o),l=0;l0||i>0&&u<0){var h=o(s,u,l,i);r.push(h),n.push(h.slice())}u<0?n.push(l.slice()):u>0?r.push(l.slice()):(r.push(l.slice()),n.push(l.slice())),i=u}return{positive:r,negative:n}},t.exports.positive=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c>=0&&r.push(s.slice()),n=c}return r},t.exports.negative=function(t,e){for(var r=[],n=a(t[t.length-1],e),i=t[t.length-1],s=t[0],l=0;l0||n>0&&c<0)&&r.push(o(i,c,s,n)),c<=0&&r.push(s.slice()),n=c}return r}},3387:function(t,e,r){var n;!function(){var i={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function a(t){return function(t,e){var r,n,o,s,l,c,u,h,p,f=1,d=t.length,m="";for(n=0;n=0),s.type){case"b":r=parseInt(r,10).toString(2);break;case"c":r=String.fromCharCode(parseInt(r,10));break;case"d":case"i":r=parseInt(r,10);break;case"j":r=JSON.stringify(r,null,s.width?parseInt(s.width):0);break;case"e":r=s.precision?parseFloat(r).toExponential(s.precision):parseFloat(r).toExponential();break;case"f":r=s.precision?parseFloat(r).toFixed(s.precision):parseFloat(r);break;case"g":r=s.precision?String(Number(r.toPrecision(s.precision))):parseFloat(r);break;case"o":r=(parseInt(r,10)>>>0).toString(8);break;case"s":r=String(r),r=s.precision?r.substring(0,s.precision):r;break;case"t":r=String(!!r),r=s.precision?r.substring(0,s.precision):r;break;case"T":r=Object.prototype.toString.call(r).slice(8,-1).toLowerCase(),r=s.precision?r.substring(0,s.precision):r;break;case"u":r=parseInt(r,10)>>>0;break;case"v":r=r.valueOf(),r=s.precision?r.substring(0,s.precision):r;break;case"x":r=(parseInt(r,10)>>>0).toString(16);break;case"X":r=(parseInt(r,10)>>>0).toString(16).toUpperCase()}i.json.test(s.type)?m+=r:(!i.number.test(s.type)||h&&!s.sign?p="":(p=h?"+":"-",r=r.toString().replace(i.sign,"")),c=s.pad_char?"0"===s.pad_char?"0":s.pad_char.charAt(1):" ",u=s.width-(p+r).length,l=s.width&&u>0?c.repeat(u):"",m+=s.align?p+r+l:"0"===c?p+l+r:l+p+r)}return m}(function(t){if(s[t])return s[t];for(var e,r=t,n=[],a=0;r;){if(null!==(e=i.text.exec(r)))n.push(e[0]);else if(null!==(e=i.modulo.exec(r)))n.push("%");else{if(null===(e=i.placeholder.exec(r)))throw new SyntaxError("[sprintf] unexpected placeholder");if(e[2]){a|=1;var o=[],l=e[2],c=[];if(null===(c=i.key.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(o.push(c[1]);""!==(l=l.substring(c[0].length));)if(null!==(c=i.key_access.exec(l)))o.push(c[1]);else{if(null===(c=i.index_access.exec(l)))throw new SyntaxError("[sprintf] failed to parse named argument key");o.push(c[1])}e[2]=o}else a|=2;if(3===a)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");n.push({placeholder:e[0],param_no:e[1],keys:e[2],sign:e[3],pad_char:e[4],align:e[5],width:e[6],precision:e[7],type:e[8]})}r=r.substring(e[0].length)}return s[t]=n}(t),arguments)}function o(t,e){return a.apply(null,[t].concat(e||[]))}var s=Object.create(null);e.sprintf=a,e.vsprintf=o,typeof window<"u"&&(window.sprintf=a,window.vsprintf=o,void 0!==(n=function(){return{sprintf:a,vsprintf:o}}.call(e,r,e,t))&&(t.exports=n))}()},3711:function(t,e,r){t.exports=function(t,e){if(t.dimension<=0)return{positions:[],cells:[]};if(1===t.dimension)return function(t,e){for(var r=i(t,e),n=r.length,a=new Array(n),o=new Array(n),s=0;sn|0},vertex:function(t,e,r,n,i,a,o,s,l,c,u,h,p){var f=(0|o)+(s<<1)+(l<<2)+(c<<3)|0;if(0!==f&&15!==f)switch(f){case 0:case 15:u.push([t-.5,e-.5]);break;case 1:u.push([t-.25-.25*(n+r-2*p)/(r-n),e-.25-.25*(i+r-2*p)/(r-i)]);break;case 2:u.push([t-.75-.25*(-n-r+2*p)/(n-r),e-.25-.25*(a+n-2*p)/(n-a)]);break;case 3:u.push([t-.5,e-.5-.5*(i+r+a+n-4*p)/(r-i+n-a)]);break;case 4:u.push([t-.25-.25*(a+i-2*p)/(i-a),e-.75-.25*(-i-r+2*p)/(i-r)]);break;case 5:u.push([t-.5-.5*(n+r+a+i-4*p)/(r-n+i-a),e-.5]);break;case 6:u.push([t-.5-.25*(-n-r+a+i)/(n-r+i-a),e-.5-.25*(-i-r+a+n)/(i-r+n-a)]);break;case 7:u.push([t-.75-.25*(a+i-2*p)/(i-a),e-.75-.25*(a+n-2*p)/(n-a)]);break;case 8:u.push([t-.75-.25*(-a-i+2*p)/(a-i),e-.75-.25*(-a-n+2*p)/(a-n)]);break;case 9:u.push([t-.5-.25*(n+r+-a-i)/(r-n+a-i),e-.5-.25*(i+r+-a-n)/(r-i+a-n)]);break;case 10:u.push([t-.5-.5*(-n-r-a-i+4*p)/(n-r+a-i),e-.5]);break;case 11:u.push([t-.25-.25*(-a-i+2*p)/(a-i),e-.75-.25*(i+r-2*p)/(r-i)]);break;case 12:u.push([t-.5,e-.5-.5*(-i-r-a-n+4*p)/(i-r+a-n)]);break;case 13:u.push([t-.75-.25*(n+r-2*p)/(r-n),e-.25-.25*(-a-n+2*p)/(a-n)]);break;case 14:u.push([t-.25-.25*(-n-r+2*p)/(n-r),e-.25-.25*(-i-r+2*p)/(i-r)])}},cell:function(t,e,r,n,i,a,o,s,l){i?s.push([t,e]):s.push([e,t])}});return function(t,e){var r=[],i=[];return n(t,r,i,e),{positions:r,cells:i}}}},o={}},665:function(t,e,r){var n=r(3202);t.exports=o;var i=96;function a(t,e){var r=n(getComputedStyle(t).getPropertyValue(e));return r[0]*o(r[1],t)}function o(t,e){switch(e=e||document.body,t=(t||"px").trim().toLowerCase(),(e===window||e===document)&&(e=document.body),t){case"%":return e.clientHeight/100;case"ch":case"ex":return function(t,e){var r=document.createElement("div");r.style["font-size"]="128"+t,e.appendChild(r);var n=a(r,"font-size")/128;return e.removeChild(r),n}(t,e);case"em":return a(e,"font-size");case"rem":return a(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return i;case"cm":return i/2.54;case"mm":return i/25.4;case"pt":return i/72;case"pc":return i/6}return 1}},7261:function(t,e,r){t.exports=function(t){var e=(t=t||{}).center||[0,0,0],r=t.up||[0,1,0],n=t.right||h(r),i=t.radius||1,a=t.theta||0,u=t.phi||0;if(e=[].slice.call(e,0,3),r=[].slice.call(r,0,3),s(r,r),n=[].slice.call(n,0,3),s(n,n),"eye"in t){var f=t.eye,d=[f[0]-e[0],f[1]-e[1],f[2]-e[2]];o(n,d,r),c(n[0],n[1],n[2])<1e-6?n=h(r):s(n,n),i=c(d[0],d[1],d[2]);var m=l(r,d)/i,g=l(n,d)/i;u=Math.acos(m),a=Math.acos(g)}return i=Math.log(i),new p(t.zoomMin,t.zoomMax,e,r,n,i,a,u)};var n=r(9215),i=r(7608),a=r(6079),o=r(5911),s=r(3536),l=r(244);function c(t,e,r){return Math.sqrt(Math.pow(t,2)+Math.pow(e,2)+Math.pow(r,2))}function u(t){return Math.min(1,Math.max(-1,t))}function h(t){var e=Math.abs(t[0]),r=Math.abs(t[1]),n=Math.abs(t[2]),i=[0,0,0];e>Math.max(r,n)?i[2]=1:r>Math.max(e,n)?i[0]=1:i[1]=1;for(var a=0,o=0,l=0;l<3;++l)a+=t[l]*t[l],o+=i[l]*t[l];for(l=0;l<3;++l)i[l]-=o/a*t[l];return s(i,i),i}function p(t,e,r,i,a,o,s,l){this.center=n(r),this.up=n(i),this.right=n(a),this.radius=n([o]),this.angle=n([s,l]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(t,e),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var c=0;c<16;++c)this.computedMatrix[c]=.5;this.recalcMatrix(0)}var f=p.prototype;f.setDistanceLimits=function(t,e){t=t>0?Math.log(t):-1/0,e=e>0?Math.log(e):1/0,e=Math.max(e,t),this.radius.bounds[0][0]=t,this.radius.bounds[1][0]=e},f.getDistanceLimits=function(t){var e=this.radius.bounds[0];return t?(t[0]=Math.exp(e[0][0]),t[1]=Math.exp(e[1][0]),t):[Math.exp(e[0][0]),Math.exp(e[1][0])]},f.recalcMatrix=function(t){this.center.curve(t),this.up.curve(t),this.right.curve(t),this.radius.curve(t),this.angle.curve(t);for(var e=this.computedUp,r=this.computedRight,n=0,i=0,a=0;a<3;++a)i+=e[a]*r[a],n+=e[a]*e[a];var l=Math.sqrt(n),u=0;for(a=0;a<3;++a)r[a]-=e[a]*i/n,u+=r[a]*r[a],e[a]/=l;var h=Math.sqrt(u);for(a=0;a<3;++a)r[a]/=h;var p=this.computedToward;o(p,e,r),s(p,p);var f=Math.exp(this.computedRadius[0]),d=this.computedAngle[0],m=this.computedAngle[1],g=Math.cos(d),y=Math.sin(d),v=Math.cos(m),x=Math.sin(m),_=this.computedCenter,b=g*v,w=y*v,T=x,A=-g*x,k=-y*x,M=v,S=this.computedEye,E=this.computedMatrix;for(a=0;a<3;++a){var C=b*r[a]+w*p[a]+T*e[a];E[4*a+1]=A*r[a]+k*p[a]+M*e[a],E[4*a+2]=C,E[4*a+3]=0}var I=E[1],L=E[5],P=E[9],z=E[2],D=E[6],O=E[10],R=L*O-P*D,F=P*z-I*O,B=I*D-L*z,j=c(R,F,B);for(R/=j,F/=j,B/=j,E[0]=R,E[4]=F,E[8]=B,a=0;a<3;++a)S[a]=_[a]+E[2+4*a]*f;for(a=0;a<3;++a){u=0;for(var N=0;N<3;++N)u+=E[a+4*N]*S[N];E[12+a]=-u}E[15]=1},f.getMatrix=function(t,e){this.recalcMatrix(t);var r=this.computedMatrix;if(e){for(var n=0;n<16;++n)e[n]=r[n];return e}return r};var d=[0,0,0];f.rotate=function(t,e,r,n){if(this.angle.move(t,e,r),n){this.recalcMatrix(t);var i=this.computedMatrix;d[0]=i[2],d[1]=i[6],d[2]=i[10];for(var o=this.computedUp,s=this.computedRight,l=this.computedToward,c=0;c<3;++c)i[4*c]=o[c],i[4*c+1]=s[c],i[4*c+2]=l[c];for(a(i,i,n,d),c=0;c<3;++c)o[c]=i[4*c],s[c]=i[4*c+1];this.up.set(t,o[0],o[1],o[2]),this.right.set(t,s[0],s[1],s[2])}},f.pan=function(t,e,r,n){e=e||0,r=r||0,n=n||0,this.recalcMatrix(t);var i=this.computedMatrix,a=(Math.exp(this.computedRadius[0]),i[1]),o=i[5],s=i[9],l=c(a,o,s);a/=l,o/=l,s/=l;var u=i[0],h=i[4],p=i[8],f=u*a+h*o+p*s,d=c(u-=a*f,h-=o*f,p-=s*f),m=(u/=d)*e+a*r,g=(h/=d)*e+o*r,y=(p/=d)*e+s*r;this.center.move(t,m,g,y);var v=Math.exp(this.computedRadius[0]);v=Math.max(1e-4,v+n),this.radius.set(t,Math.log(v))},f.translate=function(t,e,r,n){this.center.move(t,e||0,r||0,n||0)},f.setMatrix=function(t,e,r,n){var a=1;"number"==typeof r&&(a=0|r),(a<0||a>3)&&(a=1);var o=(a+2)%3;e||(this.recalcMatrix(t),e=this.computedMatrix);var s=e[a],l=e[a+4],h=e[a+8];if(n){var p=Math.abs(s),f=Math.abs(l),d=Math.abs(h),m=Math.max(p,f,d);p===m?(s=s<0?-1:1,l=h=0):d===m?(h=h<0?-1:1,s=l=0):(l=l<0?-1:1,s=h=0)}else{var g=c(s,l,h);s/=g,l/=g,h/=g}var y,v,x=e[o],_=e[o+4],b=e[o+8],w=x*s+_*l+b*h,T=c(x-=s*w,_-=l*w,b-=h*w),A=l*(b/=T)-h*(_/=T),k=h*(x/=T)-s*b,M=s*_-l*x,S=c(A,k,M);if(A/=S,k/=S,M/=S,this.center.jump(t,H,G,W),this.radius.idle(t),this.up.jump(t,s,l,h),this.right.jump(t,x,_,b),2===a){var E=e[1],C=e[5],I=e[9],L=E*x+C*_+I*b,P=E*A+C*k+I*M;y=R<0?-Math.PI/2:Math.PI/2,v=Math.atan2(P,L)}else{var z=e[2],D=e[6],O=e[10],R=z*s+D*l+O*h,F=z*x+D*_+O*b,B=z*A+D*k+O*M;y=Math.asin(u(R)),v=Math.atan2(B,F)}this.angle.jump(t,v,y),this.recalcMatrix(t);var j=e[2],N=e[6],U=e[10],V=this.computedMatrix;i(V,e);var q=V[15],H=V[12]/q,G=V[13]/q,W=V[14]/q,Z=Math.exp(this.computedRadius[0]);this.center.jump(t,H-j*Z,G-N*Z,W-U*Z)},f.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},f.idle=function(t){this.center.idle(t),this.up.idle(t),this.right.idle(t),this.radius.idle(t),this.angle.idle(t)},f.flush=function(t){this.center.flush(t),this.up.flush(t),this.right.flush(t),this.radius.flush(t),this.angle.flush(t)},f.setDistance=function(t,e){e>0&&this.radius.set(t,Math.log(e))},f.lookAt=function(t,e,r,n){this.recalcMatrix(t),e=e||this.computedEye,r=r||this.computedCenter;var i=(n=n||this.computedUp)[0],a=n[1],o=n[2],s=c(i,a,o);if(!(s<1e-6)){i/=s,a/=s,o/=s;var l=e[0]-r[0],h=e[1]-r[1],p=e[2]-r[2],f=c(l,h,p);if(!(f<1e-6)){l/=f,h/=f,p/=f;var d=this.computedRight,m=d[0],g=d[1],y=d[2],v=i*m+a*g+o*y,x=c(m-=v*i,g-=v*a,y-=v*o);if(!(x<.01&&(m=a*p-o*h,g=o*l-i*p,y=i*h-a*l,x=c(m,g,y),x<1e-6))){m/=x,g/=x,y/=x,this.up.set(t,i,a,o),this.right.set(t,m,g,y),this.center.set(t,r[0],r[1],r[2]),this.radius.set(t,Math.log(f));var _=a*y-o*g,b=o*m-i*y,w=i*g-a*m,T=c(_,b,w),A=i*l+a*h+o*p,k=m*l+g*h+y*p,M=(_/=T)*l+(b/=T)*h+(w/=T)*p,S=Math.asin(u(A)),E=Math.atan2(M,k),C=this.angle._state,I=C[C.length-1],L=C[C.length-2];I%=2*Math.PI;var P=Math.abs(I+2*Math.PI-E),z=Math.abs(I-E),D=Math.abs(I-2*Math.PI-E);P0?r.pop():new ArrayBuffer(t)}function d(t){return new Uint8Array(f(t),0,t)}function m(t){return new Uint16Array(f(2*t),0,t)}function g(t){return new Uint32Array(f(4*t),0,t)}function y(t){return new Int8Array(f(t),0,t)}function v(t){return new Int16Array(f(2*t),0,t)}function x(t){return new Int32Array(f(4*t),0,t)}function _(t){return new Float32Array(f(4*t),0,t)}function b(t){return new Float64Array(f(8*t),0,t)}function w(t){return o?new Uint8ClampedArray(f(t),0,t):d(t)}function T(t){return s?new BigUint64Array(f(8*t),0,t):null}function A(t){return l?new BigInt64Array(f(8*t),0,t):null}function k(t){return new DataView(f(t),0,t)}function M(t){t=n.nextPow2(t);var e=n.log2(t),r=h[e];return r.length>0?r.pop():new a(t)}e.free=function(t){if(a.isBuffer(t))h[n.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var e=t.length||t.byteLength,r=0|n.log2(e);u[r].push(t)}},e.freeUint8=e.freeUint16=e.freeUint32=e.freeBigUint64=e.freeInt8=e.freeInt16=e.freeInt32=e.freeBigInt64=e.freeFloat32=e.freeFloat=e.freeFloat64=e.freeDouble=e.freeUint8Clamped=e.freeDataView=function(t){p(t.buffer)},e.freeArrayBuffer=p,e.freeBuffer=function(t){h[n.log2(t.length)].push(t)},e.malloc=function(t,e){if(void 0===e||"arraybuffer"===e)return f(t);switch(e){case"uint8":return d(t);case"uint16":return m(t);case"uint32":return g(t);case"int8":return y(t);case"int16":return v(t);case"int32":return x(t);case"float":case"float32":return _(t);case"double":case"float64":return b(t);case"uint8_clamped":return w(t);case"bigint64":return A(t);case"biguint64":return T(t);case"buffer":return M(t);case"data":case"dataview":return k(t);default:return null}return null},e.mallocArrayBuffer=f,e.mallocUint8=d,e.mallocUint16=m,e.mallocUint32=g,e.mallocInt8=y,e.mallocInt16=v,e.mallocInt32=x,e.mallocFloat32=e.mallocFloat=_,e.mallocFloat64=e.mallocDouble=b,e.mallocUint8Clamped=w,e.mallocBigUint64=T,e.mallocBigInt64=A,e.mallocDataView=k,e.mallocBuffer=M,e.clearCache=function(){for(var t=0;t<32;++t)c.UINT8[t].length=0,c.UINT16[t].length=0,c.UINT32[t].length=0,c.INT8[t].length=0,c.INT16[t].length=0,c.INT32[t].length=0,c.FLOAT[t].length=0,c.DOUBLE[t].length=0,c.BIGUINT64[t].length=0,c.BIGINT64[t].length=0,c.UINT8C[t].length=0,u[t].length=0,h[t].length=0}},1755:function(t){function e(t){this.roots=new Array(t),this.ranks=new Array(t);for(var e=0;e0&&(a=n.size),n.lineSpacing&&n.lineSpacing>0&&(o=n.lineSpacing),n.styletags&&n.styletags.breaklines&&(s.breaklines=!!n.styletags.breaklines),n.styletags&&n.styletags.bolds&&(s.bolds=!!n.styletags.bolds),n.styletags&&n.styletags.italics&&(s.italics=!!n.styletags.italics),n.styletags&&n.styletags.subscripts&&(s.subscripts=!!n.styletags.subscripts),n.styletags&&n.styletags.superscripts&&(s.superscripts=!!n.styletags.superscripts)),r.font=[n.fontStyle,n.fontVariant,n.fontWeight,a+"px",n.font].filter((function(t){return t})).join(" "),r.textAlign="start",r.textBaseline="alphabetic",r.direction="ltr",b(function(t,e,r,n,a,o){r=r.replace(/\n/g,""),r=!0===o.breaklines?r.replace(/\/g,"\n"):r.replace(/\/g," ");var s="",l=[];for(I=0;I-1?parseInt(t[1+i]):0,l=a>-1?parseInt(r[1+a]):0;s!==l&&(n=n.replace(F(),"?px "),z*=Math.pow(.75,l-s),n=n.replace("?px ",F())),P+=.25*A*(l-s)}if(!0===o.superscripts){var c=t.indexOf(d),h=r.indexOf(d),f=c>-1?parseInt(t[1+c]):0,m=h>-1?parseInt(r[1+h]):0;f!==m&&(n=n.replace(F(),"?px "),z*=Math.pow(.75,m-f),n=n.replace("?px ",F())),P-=.25*A*(m-f)}if(!0===o.bolds){var g=t.indexOf(u)>-1,v=r.indexOf(u)>-1;!g&&v&&(n=x?n.replace("italic ","italic bold "):"bold "+n),g&&!v&&(n=n.replace("bold ",""))}if(!0===o.italics){var x=t.indexOf(p)>-1,_=r.indexOf(p)>-1;!x&&_&&(n="italic "+n),x&&!_&&(n=n.replace("italic ",""))}e.font=n}for(C=0;C",a="",o=i.length,s=a.length,l=e[0]===d||e[0]===y,c=0,u=-s;c>-1&&!(-1===(c=r.indexOf(i,c))||(u=r.indexOf(a,c+o),-1===u)||u<=c);){for(var h=c;h=u)n[h]=null,r=r.substr(0,h)+" "+r.substr(h+1);else if(null!==n[h]){var p=n[h].indexOf(e[0]);-1===p?n[h]+=e:l&&(n[h]=n[h].substr(0,p+1)+(1+parseInt(n[h][p+1]))+n[h].substr(p+2))}var f=c+o,m=r.substr(f,u-f).indexOf(i);c=-1!==m?m:u+s}return n}function _(t,e,r,i){var c=function(t,e){var r=n(t,128);return e?a(r.cells,r.positions,.25):{edges:r.cells,positions:r.positions}}(t,i),u=function(t,e,r){for(var n=e.textAlign||"start",i=e.textBaseline||"alphabetic",a=[1<<30,1<<30],o=[0,0],s=t.length,l=0;l=0?e[a]:i}))},has___:{value:x((function(e){var n=v(e);return n?r in n:t.indexOf(e)>=0}))},set___:{value:x((function(n,i){var a,o=v(n);return o?o[r]=i:(a=t.indexOf(n))>=0?e[a]=i:(a=t.length,e[a]=i,t[a]=n),this}))},delete___:{value:x((function(n){var i,a,o=v(n);return o?r in o&&delete o[r]:!((i=t.indexOf(n))<0||(a=t.length-1,t[i]=void 0,e[i]=e[a],t[i]=t[a],t.length=a,e.length=a,0))}))}})};m.prototype=Object.create(Object.prototype,{get:{value:function(t,e){return this.get___(t,e)},writable:!0,configurable:!0},has:{value:function(t){return this.has___(t)},writable:!0,configurable:!0},set:{value:function(t,e){return this.set___(t,e)},writable:!0,configurable:!0},delete:{value:function(t){return this.delete___(t)},writable:!0,configurable:!0}}),"function"==typeof r?function(){function n(){this instanceof m||_();var t,n=new r,i=void 0,a=!1;return t=e?function(t,e){return n.set(t,e),n.has(t)||(i||(i=new m),i.set(t,e)),this}:function(t,e){if(a)try{n.set(t,e)}catch{i||(i=new m),i.set___(t,e)}else n.set(t,e);return this},Object.create(m.prototype,{get___:{value:x((function(t,e){return i?n.has(t)?n.get(t):i.get___(t,e):n.get(t,e)}))},has___:{value:x((function(t){return n.has(t)||!!i&&i.has___(t)}))},set___:{value:x(t)},delete___:{value:x((function(t){var e=!!n.delete(t);return i&&i.delete___(t)||e}))},permitHostObjects___:{value:x((function(t){if(t!==g)throw new Error("bogus call to permitHostObjects___");a=!0}))}})}e&&typeof Proxy<"u"&&(Proxy=void 0),n.prototype=m.prototype,t.exports=n,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy<"u"&&(Proxy=void 0),t.exports=m)}function g(t){t.permitHostObjects___&&t.permitHostObjects___(g)}function y(t){return!(t.substr(0,8)==l&&"___"===t.substr(t.length-3))}function v(t){if(t!==Object(t))throw new TypeError("Not an object: "+t);var e=t[c];if(e&&e.key===t)return e;if(s(t)){e={key:t};try{return o(t,c,{value:e,writable:!1,enumerable:!1,configurable:!1}),e}catch{return}}}function x(t){return t.prototype=null,Object.freeze(t)}function _(){!f&&typeof console<"u"&&(f=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}}()},236:function(t,e,r){var n=r(8284);t.exports=function(){var t={};return function(e){if(("object"!=typeof e||null===e)&&"function"!=typeof e)throw new Error("Weakmap-shim: Key must be object");var r=e.valueOf(t);return r&&r.identity===t?r:n(e,t)}}},8284:function(t){t.exports=function(t,e){var r={identity:e},n=t.valueOf;return Object.defineProperty(t,"valueOf",{value:function(t){return t!==e?n.apply(this,arguments):r},writable:!0}),r}},606:function(t,e,r){var n=r(236);t.exports=function(){var t=n();return{get:function(e,r){var n=t(e);return n.hasOwnProperty("value")?n.value:r},set:function(e,r){return t(e).value=r,this},has:function(e){return"value"in t(e)},delete:function(e){return delete t(e).value}}}},3349:function(t){var e,r,n=function(){return function(t,e,r,n,i,a){var o=t[0],s=r[0],l=[0],c=s;n|=0;var u=0,h=s;for(u=0;u=0!=f>=0&&i.push(l[0]+.5+.5*(p+f)/(p-f)),n+=h,++l[0]}}};t.exports=(e=n.bind(void 0,{funcName:"zeroCrossings"}),r={},function(t,n,i){var a=t.dtype,o=t.order,s=[a,o.join()].join(),l=r[s];return l||(r[s]=l=e([a,o])),l(t.shape.slice(0),t.data,t.stride,0|t.offset,n,i)})},781:function(t,e,r){t.exports=function(t,e){var r=[];return e=+e||0,n(t.hi(t.shape[0]-1),r,e),r};var n=r(3349)},7790:function(){}},r={};function n(e){var i=r[e];if(void 0!==i)return i.exports;var a=r[e]={id:e,loaded:!1,exports:{}};return t[e].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch{if("object"==typeof window)return window}}(),n.nmd=function(t){return t.paths=[],t.children||(t.children=[]),t};var i=n(1964);e.exports=i}()}}),Id=f({"node_modules/color-name/index.js"(t,e){e.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}}),Ld=f({"node_modules/color-normalize/node_modules/color-parse/index.js"(t,e){var r=Id();e.exports=function(t){var e,i,a=[],o=1;if("string"==typeof t)if(t=t.toLowerCase(),r[t])a=r[t].slice(),i="rgb";else if("transparent"===t)o=0,i="rgb",a=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(t)){var s=t.slice(1);o=1,(u=s.length)<=4?(a=[parseInt(s[0]+s[0],16),parseInt(s[1]+s[1],16),parseInt(s[2]+s[2],16)],4===u&&(o=parseInt(s[3]+s[3],16)/255)):(a=[parseInt(s[0]+s[1],16),parseInt(s[2]+s[3],16),parseInt(s[4]+s[5],16)],8===u&&(o=parseInt(s[6]+s[7],16)/255)),a[0]||(a[0]=0),a[1]||(a[1]=0),a[2]||(a[2]=0),i="rgb"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(t)){var l=e[1],c="rgb"===l;i=s=l.replace(/a$/,"");var u="cmyk"===s?4:"gray"===s?1:3;a=e[2].trim().split(/\s*[,\/]\s*|\s+/).map((function(t,e){if(/%$/.test(t))return e===u?parseFloat(t)/100:"rgb"===s?255*parseFloat(t)/100:parseFloat(t);if("h"===s[e]){if(/deg$/.test(t))return parseFloat(t);if(void 0!==n[t])return n[t]}return parseFloat(t)})),l===s&&a.push(1),o=c||void 0===a[u]?1:a[u],a=a.slice(0,u)}else t.length>10&&/[0-9](?:\s|\/)/.test(t)&&(a=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),i=t.match(/([a-z])/gi).join("").toLowerCase());else isNaN(t)?Array.isArray(t)||t.length?(a=[t[0],t[1],t[2]],i="rgb",o=4===t.length?t[3]:1):t instanceof Object&&(null!=t.r||null!=t.red||null!=t.R?(i="rgb",a=[t.r||t.red||t.R||0,t.g||t.green||t.G||0,t.b||t.blue||t.B||0]):(i="hsl",a=[t.h||t.hue||t.H||0,t.s||t.saturation||t.S||0,t.l||t.lightness||t.L||t.b||t.brightness]),o=t.a||t.alpha||t.opacity||1,null!=t.opacity&&(o/=100)):(i="rgb",a=[t>>>16,(65280&t)>>>8,255&t]);return{space:i,values:a,alpha:o}};var n={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}}),Pd=f({"node_modules/color-normalize/node_modules/color-rgba/index.js"(t,e){var r=Ld();e.exports=function(t){Array.isArray(t)&&t.raw&&(t=String.raw.apply(null,arguments));var e,n=r(t);if(!n.space)return[];var i=[0,0,0],a="h"===n.space[0]?[360,100,100]:[255,255,255];return(e=Array(3))[0]=Math.min(Math.max(n.values[0],i[0]),a[0]),e[1]=Math.min(Math.max(n.values[1],i[1]),a[1]),e[2]=Math.min(Math.max(n.values[2],i[2]),a[2]),"h"===n.space[0]&&(e=function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,c=0;if(0===s)return[a=255*l,a,a];for(e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];c<3;)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c++]=255*a;return i}(e)),e.push(Math.min(Math.max(n.alpha,0),1)),e}}}),zd=f({"node_modules/clamp/index.js"(t,e){e.exports=function(t,e,r){return er?r:t:te?e:t}}}),Dd=f({"node_modules/dtype/index.js"(t,e){e.exports=function(t){switch(t){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}}}),Od=f({"node_modules/color-normalize/index.js"(t,e){var r=Pd(),n=zd(),i=Dd();e.exports=function(t,e){("float"===e||!e)&&(e="array"),"uint"===e&&(e="uint8"),"uint_clamped"===e&&(e="uint8_clamped");var a,o=new(i(e))(4),s="uint8"!==e&&"uint8_clamped"!==e;return(!t.length||"string"==typeof t)&&((t=r(t))[0]/=255,t[1]/=255,t[2]/=255),(a=t)instanceof Uint8Array||a instanceof Uint8ClampedArray||Array.isArray(a)&&(a[0]>1||0===a[0])&&(a[1]>1||0===a[1])&&(a[2]>1||0===a[2])&&(!a[3]||a[3]>1)?(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=null!=t[3]?t[3]:255,s&&(o[0]/=255,o[1]/=255,o[2]/=255,o[3]/=255),o):(s?(o[0]=t[0],o[1]=t[1],o[2]=t[2],o[3]=null!=t[3]?t[3]:1):(o[0]=n(Math.floor(255*t[0]),0,255),o[1]=n(Math.floor(255*t[1]),0,255),o[2]=n(Math.floor(255*t[2]),0,255),o[3]=null==t[3]?255:n(Math.floor(255*t[3]),0,255)),o)}}}),Rd=f({"src/lib/str2rgbarray.js"(t,e){var r=Od();e.exports=function(t){return t?r(t):[0,0,0,1]}}}),Fd=f({"src/lib/gl_format_color.js"(t,e){var r=A(),n=O(),i=Od(),a=Ze(),o=q().defaultLine,s=E().isArrayOrTypedArray,l=i(o);function c(t,e){var r=t;return r[3]*=e,r}function u(t){if(r(t))return l;var e=i(t);return e.length?e:l}function h(t){return r(t)?t:1}e.exports={formatColor:function(t,e,r){var n=t.color;n&&n._inputArray&&(n=n._inputArray);var o,p,f,d,m,g=s(n),y=s(e),v=a.extractOpts(t),x=[];if(o=void 0!==v.colorscale?a.makeColorScaleFuncFromTrace(t):u,p=g?function(t,e){return void 0===t[e]?l:i(o(t[e]))}:u,f=y?function(t,e){return void 0===t[e]?1:h(t[e])}:h,g||y)for(var _=0;_0){var p=i.c2l(u);i._lowerLogErrorBound||(i._lowerLogErrorBound=p),i._lowerErrorBound=Math.min(i._lowerLogErrorBound,p)}}else o[s]=[-l[0]*n,l[1]*n]}return o}e.exports=function(t,e,r){var i=[n(t.x,t.error_x,e[0],r.xaxis),n(t.y,t.error_y,e[1],r.yaxis),n(t.z,t.error_z,e[2],r.zaxis)],a=function(t){for(var e=0;e-1?-1:t.indexOf("right")>-1?1:0}function x(t){return null==t?0:t.indexOf("top")>-1?-1:t.indexOf("bottom")>-1?1:0}function _(t,e){return e(4*t)}function b(t){return p[t]}function w(t,e,r,n,i){var a=null;if(s.isArrayOrTypedArray(t)){a=[];for(var o=0;o=0){var E=function(t,e,r){var n,i=(r+1)%3,a=(r+2)%3,s=[],l=[];for(n=0;n=0&&h("surfacecolor",f||d);for(var m=["x","y","z"],g=0;g<3;++g){var y="projection."+m[g];h(y+".show")&&(h(y+".opacity"),h(y+".scale"))}var v=r.getComponentMethod("errorbars","supplyDefaults");v(t,e,f||d||c,{axis:"z"}),v(t,e,f||d||c,{axis:"y",inherit:"z"}),v(t,e,f||d||c,{axis:"x",inherit:"z"})}else e.visible=!1}}}),Hd=f({"src/traces/scatter3d/calc.js"(t,e){var r=ii(),n=ni();e.exports=function(t,e){var i=[{x:!1,y:!1,trace:e,t:{}}];return r(i,e),n(t,e),i}}}),Gd=f({"node_modules/get-canvas-context/index.js"(t,e){e.exports=function(t,e){if("string"!=typeof t)throw new TypeError("must specify type string");if(e=e||{},typeof document>"u"&&!e.canvas)return null;var r=e.canvas||document.createElement("canvas");"number"==typeof e.width&&(r.width=e.width),"number"==typeof e.height&&(r.height=e.height);var n,i=e;try{var a=[t];0===t.indexOf("webgl")&&a.push("experimental-"+t);for(var o=0;o/g," "));l[c]=f,u.tickmode=h}}for(e.ticks=l,c=0;c<3;++c)for(a[c]=.5*(t.glplot.bounds[0][c]+t.glplot.bounds[1][c]),d=0;d<2;++d)e.bounds[d][c]=t.glplot.bounds[d][c];t.contourLevels=function(t){for(var e=new Array(3),r=0;r<3;++r){for(var n=t[r],i=new Array(n.length),a=0;ar.deltaY?1.1:.9090909090909091,a=t.glplot.getAspectratio();t.glplot.setAspectratio({x:n*a.x,y:n*a.y,z:n*a.z})}i(t)}}),!!l&&{passive:!1}),t.glplot.canvas.addEventListener("mousemove",(function(){if(!1!==t.fullSceneLayout.dragmode&&0!==t.camera.mouseListener.buttons){var e=n();t.graphDiv.emit("plotly_relayouting",e)}})),t.staticMode||t.glplot.canvas.addEventListener("webglcontextlost",(function(r){e&&e.emit&&e.emit("plotly_webglcontextlost",{event:r,layer:t.id})}),!1)),t.glplot.oncontextloss=function(){t.recoverContext()},t.glplot.onrender=function(){t.render()},!0},T.render=function(){var t,e=this,r=e.graphDiv,n=e.svgContainer,i=e.container.getBoundingClientRect();r._fullLayout._calcInverseTransform(r);var a=r._fullLayout._invScaleX,o=r._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),x(e),e.glplot.axes.update(e.axesOptions);for(var c=Object.keys(e.traces),h=null,d=e.glplot.selection,m=0;m")):"isosurface"===t.type||"volume"===t.type?(T.valueLabel=p.hoverLabelText(e._mockAxis,e._mockAxis.d2l(d.traceCoordinate[3]),t.valuehoverformat),E.push("value: "+T.valueLabel),d.textLabel&&E.push(d.textLabel),S=E.join("
")):S=d.textLabel;var C={x:d.traceCoordinate[0],y:d.traceCoordinate[1],z:d.traceCoordinate[2],data:_._input,fullData:_,curveNumber:_.index,pointNumber:w};f.appendArrayPointValue(C,_,w),t._module.eventData&&(C=_._module.eventData(C,d,_,{},w));var I={points:[C]};if(e.fullSceneLayout.hovermode){var L=[];f.loneHover({trace:_,x:(.5+.5*v[0]/v[3])*s,y:(.5-.5*v[1]/v[3])*l,xLabel:T.xLabel,yLabel:T.yLabel,zLabel:T.zLabel,text:S,name:h.name,color:f.castHoverOption(_,w,"bgcolor")||h.color,borderColor:f.castHoverOption(_,w,"bordercolor"),fontFamily:f.castHoverOption(_,w,"font.family"),fontSize:f.castHoverOption(_,w,"font.size"),fontColor:f.castHoverOption(_,w,"font.color"),nameLength:f.castHoverOption(_,w,"namelength"),textAlign:f.castHoverOption(_,w,"align"),hovertemplate:u.castOption(_,w,"hovertemplate"),hovertemplateLabels:u.extendFlat({},C,T),eventData:[C]},{container:n,gd:r,inOut_bbox:L}),C.bbox=L[0]}d.distance<5&&(d.buttons||b)?r.emit("plotly_click",I):r.emit("plotly_hover",I),this.oldEventData=I}else f.loneUnhover(n),this.oldEventData&&r.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)},T.recoverContext=function(){var t=this;t.glplot.dispose();var e=function(){t.glplot.gl.isContextLost()?requestAnimationFrame(e):t.initializeGLPlot()?t.plot.apply(t,t.plotArgs):u.error("Catastrophic and unrecoverable WebGL error. Context lost.")};requestAnimationFrame(e)};var k=["xaxis","yaxis","zaxis"];function M(t,e,r){for(var n=t.fullSceneLayout,i=0;i<3;i++){var a=k[i],o=a.charAt(0),s=n[a],l=e[o],c=e[o+"calendar"],h=e["_"+o+"length"];if(u.isArrayOrTypedArray(l))for(var p,f=0;f<(h||l.length);f++)if(u.isArrayOrTypedArray(l[f]))for(var d=0;dg[1][o])g[0][o]=-1,g[1][o]=1;else{var L=g[1][o]-g[0][o];g[0][o]-=L/32,g[1][o]+=L/32}if(x=[g[0][o],g[1][o]],x=_(x,l),g[0][o]=x[0],g[1][o]=x[1],l.isReversed()){var P=g[0][o];g[0][o]=g[1][o],g[1][o]=P}}else x=l.range,g[0][o]=l.r2l(x[0]),g[1][o]=l.r2l(x[1]);g[0][o]===g[1][o]&&(g[0][o]-=1,g[1][o]+=1),y[o]=g[1][o]-g[0][o],l.range=[g[0][o],g[1][o]],l.limitRange(),n.glplot.setBounds(o,{min:l.range[0]*f[o],max:l.range[1]*f[o]})}var z,D=u.aspectmode;if("cube"===D)z=[1,1,1];else if("manual"===D){var O=u.aspectratio;z=[O.x,O.y,O.z]}else{if("auto"!==D&&"data"!==D)throw new Error("scene.js aspectRatio was not one of the enumerated types");var R=[1,1,1];for(o=0;o<3;++o){var F=v[c=(l=u[k[o]]).type];R[o]=Math.pow(F.acc,1/F.count)/f[o]}z="data"===D||Math.max.apply(null,R)/Math.min.apply(null,R)<=4?R:[1,1,1]}u.aspectratio.x=h.aspectratio.x=z[0],u.aspectratio.y=h.aspectratio.y=z[1],u.aspectratio.z=h.aspectratio.z=z[2],n.glplot.setAspectratio(u.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:u.aspectratio.x,y:u.aspectratio.y,z:u.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=u.aspectmode);var B=u.domain||null,j=e._size||null;if(B&&j){var N=n.container.style;N.position="absolute",N.left=j.l+B.x[0]*j.w+"px",N.top=j.t+(1-B.y[1])*j.h+"px",N.width=j.w*(B.x[1]-B.x[0])+"px",N.height=j.h*(B.y[1]-B.y[0])+"px"}n.glplot.redraw()}},T.destroy=function(){var t=this;t.glplot&&(t.camera.mouseListener.enabled=!1,t.container.removeEventListener("wheel",t.camera.wheelListener),t.camera=null,t.glplot.dispose(),t.container.parentNode.removeChild(t.container),t.glplot=null)},T.getCamera=function(){var t=this;return t.camera.view.recalcMatrix(t.camera.view.lastT()),function(t){return{up:{x:t.up[0],y:t.up[1],z:t.up[2]},center:{x:t.center[0],y:t.center[1],z:t.center[2]},eye:{x:t.eye[0],y:t.eye[1],z:t.eye[2]},projection:{type:!0===t._ortho?"orthographic":"perspective"}}}(t.camera)},T.setViewport=function(t){var e=this,r=t.camera;e.camera.lookAt.apply(this,function(t){return[[t.eye.x,t.eye.y,t.eye.z],[t.center.x,t.center.y,t.center.z],[t.up.x,t.up.y,t.up.z]]}(r)),e.glplot.setAspectratio(t.aspectratio),"orthographic"===r.projection.type!==e.camera._ortho&&(e.glplot.redraw(),e.glplot.clearRGBA(),e.glplot.dispose(),e.initializeGLPlot())},T.isCameraChanged=function(t){var e,r,n,i,a,o,s=this.getCamera(),l=u.nestedProperty(t,this.id+".camera").get(),c=!1;if(void 0===l)c=!0;else{for(var h=0;h<3;h++)for(var p=0;p<3;p++)if(e=s,i=p,void 0,void 0,o=["x","y","z"],!(r=l)[(a=["up","center","eye"])[n=h]]||e[a[n]][o[i]]!==r[a[n]][o[i]]){c=!0;break}(!l.projection||s.projection&&s.projection.type!==l.projection.type)&&(c=!0)}return c},T.isAspectChanged=function(t){var e=this.glplot.getAspectratio(),r=u.nestedProperty(t,this.id+".aspectratio").get();return void 0===r||r.x!==e.x||r.y!==e.y||r.z!==e.z},T.saveLayout=function(t){var e,r,n,i,a,o,s=this,l=s.fullLayout,h=s.isCameraChanged(t),p=s.isAspectChanged(t),f=h||p;if(f){var d={};h&&(e=s.getCamera(),n=(r=u.nestedProperty(t,s.id+".camera")).get(),d[s.id+".camera"]=n),p&&(i=s.glplot.getAspectratio(),o=(a=u.nestedProperty(t,s.id+".aspectratio")).get(),d[s.id+".aspectratio"]=o),c.call("_storeDirectGUIEdit",t,l._preGUI,d),h&&(r.set(e),u.nestedProperty(l,s.id+".camera").set(e)),p&&(a.set(i),u.nestedProperty(l,s.id+".aspectratio").set(i),s.glplot.redraw())}return f},T.updateFx=function(t,e){var r=this,n=r.camera;if(n)if("orbit"===t)n.mode="orbit",n.keyBindingMode="rotate";else if("turntable"===t){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,h=o.up.z;if(h/Math.sqrt(s*s+l*l+h*h)<.999){var p=r.id+".camera.up",f={x:0,y:0,z:1},d={};d[p]=f;var m=i.layout;c.call("_storeDirectGUIEdit",m,a._preGUI,d),o.up=f,u.nestedProperty(m,p).set(f)}}else n.keyBindingMode=t;r.fullSceneLayout.hovermode=e},T.toImage=function(t){var e=this;t||(t="png"),e.staticMode&&e.container.appendChild(r),e.glplot.redraw();var n=e.glplot.gl,i=n.drawingBufferWidth,a=n.drawingBufferHeight;n.bindFramebuffer(n.FRAMEBUFFER,null);var o=new Uint8Array(i*a*4);n.readPixels(0,0,i,a,n.RGBA,n.UNSIGNED_BYTE,o),function(t,e,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)t[a+l]=Math.min(s*t[a+l],255)}}(o,i,a);var s=document.createElement("canvas");s.width=i,s.height=a;var l,c=s.getContext("2d",{willReadFrequently:!0}),u=c.createImageData(i,a);switch(u.data.set(o),c.putImageData(u,0,0),t){case"jpeg":l=s.toDataURL("image/jpeg");break;case"webp":l=s.toDataURL("image/webp");break;default:l=s.toDataURL("image/png")}return e.staticMode&&e.container.removeChild(r),l},T.setConvert=function(){for(var t=0;t<3;t++){var e=this.fullSceneLayout[k[t]];p.setConvert(e,this.fullLayout),e.setScale=u.noop}},T.make4thDimension=function(){var t=this,e=t.graphDiv._fullLayout;t._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},p.setConvert(t._mockAxis,e)},e.exports=w}}),Jd=f({"src/plots/gl3d/layout/attributes.js"(t,e){e.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}}}),Qd=f({"src/plots/gl3d/layout/axis_attributes.js"(t,e){var r=H(),n=Ie(),i=R().extendFlat,a=Pt().overrideAll;e.exports=a({visible:n.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:r.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:n.color,categoryorder:n.categoryorder,categoryarray:n.categoryarray,title:{text:n.title.text,font:n.title.font},type:i({},n.type,{values:["-","linear","log","date","category"]}),autotypenumbers:n.autotypenumbers,autorange:n.autorange,autorangeoptions:{minallowed:n.autorangeoptions.minallowed,maxallowed:n.autorangeoptions.maxallowed,clipmin:n.autorangeoptions.clipmin,clipmax:n.autorangeoptions.clipmax,include:n.autorangeoptions.include,editType:"plot"},rangemode:n.rangemode,minallowed:n.minallowed,maxallowed:n.maxallowed,range:i({},n.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:n.minor.tickmode,nticks:n.nticks,tick0:n.tick0,dtick:n.dtick,tickvals:n.tickvals,ticktext:n.ticktext,ticks:n.ticks,mirror:n.mirror,ticklen:n.ticklen,tickwidth:n.tickwidth,tickcolor:n.tickcolor,showticklabels:n.showticklabels,labelalias:n.labelalias,tickfont:n.tickfont,tickangle:n.tickangle,tickprefix:n.tickprefix,showtickprefix:n.showtickprefix,ticksuffix:n.ticksuffix,showticksuffix:n.showticksuffix,showexponent:n.showexponent,exponentformat:n.exponentformat,minexponent:n.minexponent,separatethousands:n.separatethousands,tickformat:n.tickformat,tickformatstops:n.tickformatstops,hoverformat:n.hoverformat,showline:n.showline,linecolor:n.linecolor,linewidth:n.linewidth,showgrid:n.showgrid,gridcolor:i({},n.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:n.gridwidth,zeroline:n.zeroline,zerolinecolor:n.zerolinecolor,zerolinewidth:n.zerolinewidth},"plot","from-root")}}),tm=f({"src/plots/gl3d/layout/layout_attributes.js"(t,e){var r=Qd(),n=Aa().attributes,i=R().extendFlat,a=le().counterRegex;function o(t,e,r){return{x:{valType:"number",dflt:t,editType:"camera"},y:{valType:"number",dflt:e,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}e.exports={_arrayAttrRegexps:[a("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:i(o(0,0,1),{}),center:i(o(0,0,0),{}),eye:i(o(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:n({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:r,yaxis:r,zaxis:r,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}}}),em=f({"src/plots/gl3d/layout/axis_defaults.js"(t,e){var r=O().mix,n=le(),i=ye(),a=Qd(),o=_i(),s=Ti(),l=["xaxis","yaxis","zaxis"],c=13600/187;e.exports=function(t,e,u){var h,p;function f(t,e){return n.coerce(h,p,a,t,e)}for(var d=0;d.999)&&(g="turntable")}else g="turntable";r("dragmode",g),r("hovermode",a.getDfltFromLayout("hovermode"))}e.exports=function(t,e,n){var i=e._basePlotModules.length>1;a(t,e,n,{type:c,attributes:s,handleDefaults:u,fullLayout:e,font:e.font,fullData:n,getDfltFromLayout:function(e){if(!i&&r.validate(t[e],s[e]))return t[e]},autotypenumbersDflt:e.autotypenumbers,paper_bgcolor:e.paper_bgcolor,calendar:e.calendar})}}}),nm=f({"src/plots/gl3d/index.js"(t){var e=Pt().overrideAll,r=j(),n=Kd(),i=we().getSubplotData,a=le(),o=ke(),s="gl3d",l="scene";t.name=s,t.attr=l,t.idRoot=l,t.idRegex=t.attrRegex=a.counterRegex("scene"),t.attributes=Jd(),t.layoutAttributes=tm(),t.baseLayoutAttrOverrides=e({hoverlabel:r.hoverlabel},"plot","nested"),t.supplyLayoutDefaults=rm(),t.plot=function(t){for(var e=t._fullLayout,r=t._fullData,a=e._subplots[s],o=0;o0){r=f[n];break}return r}function y(t,e){if(!(t<1||e<1)){for(var r=m(t),n=m(e),i=1,a=0;a_;)r--,r/=g(r),++r1?n:1},p.refineCoords=function(t){for(var e=this.dataScaleX,r=this.dataScaleY,i=t[0].shape[0],a=t[0].shape[1],o=0|Math.floor(t[0].shape[0]*e+1),s=0|Math.floor(t[0].shape[1]*r+1),l=1+i+1,c=1+a+1,u=n(new Float32Array(l*c),[l,c]),h=[1/e,0,0,0,1/r,0,0,0,1],p=0;p0&&null!==this.contourStart[t]&&null!==this.contourEnd[t]&&this.contourEnd[t]>this.contourStart[t]))for(i[t]=!0,e=this.contourStart[t];ev&&(this.minValues[m]=v),this.maxValues[m]l&&(e.isomin=null,e.isomax=null);var c=o("x"),u=o("y"),h=o("z"),p=o("value");c&&c.length&&u&&u.length&&h&&h.length&&p&&p.length?(n.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y","z"],i),o("valuehoverformat"),["x","y","z"].forEach((function(t){o(t+"hoverformat");var e="caps."+t;o(e+".show")&&o(e+".fill");var r="slices."+t;o(r+".show")&&(o(r+".fill"),o(r+".locations"))})),o("spaceframe.show")&&o("spaceframe.fill"),o("surface.show")&&(o("surface.count"),o("surface.fill"),o("surface.pattern")),o("contour.show")&&(o("contour.color"),o("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach((function(t){o(t)})),a(t,e,i,o,{prefix:"",cLetter:"c"}),e._length=null):e.visible=!1}e.exports={supplyDefaults:function(t,e,n,a){o(t,e,0,a,(function(n,a){return r.coerce(t,e,i,n,a)}))},supplyIsoDefaults:o}}}),mm=f({"src/traces/streamtube/calc.js"(t,e){var r=le(),n=We();function i(t){var e,n,i,o,s,l,c,u,h,p,f,d,m=t._x,g=t._y,y=t._z,v=t._len,x=-1/0,_=1/0,b=-1/0,w=1/0,T=-1/0,A=1/0,k="";for(v&&(c=m[0],h=g[0],f=y[0]),v>1&&(u=m[v-1],p=g[v-1],d=y[v-1]),e=0;eu?"-":"+")+"x")).replace("y",(h>p?"-":"+")+"y")).replace("z",(f>d?"-":"+")+"z");var C=function(){v=0,M=[],S=[],E=[]};(!v||v0;r--){var n=Math.min(e[r],e[r-1]),i=Math.max(e[r],e[r-1]);if(i>n&&n-1}function F(t,e){return null===t?e:t}function B(t,e,r){I();var n=[e],i=[r];if(s>=1)n=[e],i=[r];else if(s>0){var a=function(t,e){var r=t[0],n=t[1],i=t[2],a=function(t,e,r){for(var n=[],i=0;i-1?r[c]:C(u,h,p);l[c]=d>-1?d:P(u,h,p,F(t,f))}z(l[0],l[1],l[2])}}function j(t,e,r,n){var i=t[3];in&&(i=n);for(var a=(t[3]-i)/(t[3]-e[3]+1e-9),o=[],s=0;s<4;s++)o[s]=(1-a)*t[s]+a*e[s];return o}function N(t,e,r){return t>=e&&t<=r}function U(t){var e=.001*(E-S);return t>=S-e&&t<=E+e}function V(e){for(var r=[],n=0;n<4;n++){var i=e[n];r.push([t._x[i],t._y[i],t._z[i],t._value[i]])}return r}function q(t,e,r,n,i,a){a||(a=1),r=[-1,-1,-1];var o=!1,s=[N(e[0][3],n,i),N(e[1][3],n,i),N(e[2][3],n,i)];if(!s[0]&&!s[1]&&!s[2])return!1;var l=function(t,e,r){return U(e[0][3])&&U(e[1][3])&&U(e[2][3])?(B(t,e,r),!0):a<3&&q(t,e,r,S,E,++a)};if(s[0]&&s[1]&&s[2])return l(t,e,r)||o;var c=!1;return[[0,1,2],[2,0,1],[1,2,0]].forEach((function(a){if(s[a[0]]&&s[a[1]]&&!s[a[2]]){var u=e[a[0]],h=e[a[1]],p=e[a[2]],f=j(p,u,n,i),d=j(p,h,n,i);o=l(t,[d,f,u],[-1,-1,r[a[0]]])||o,o=l(t,[u,h,d],[r[a[0]],r[a[1]],-1])||o,c=!0}})),c||[[0,1,2],[1,2,0],[2,0,1]].forEach((function(a){if(s[a[0]]&&!s[a[1]]&&!s[a[2]]){var u=e[a[0]],h=e[a[1]],p=e[a[2]],f=j(h,u,n,i),d=j(p,u,n,i);o=l(t,[d,f,u],[-1,-1,r[a[0]]])||o,c=!0}})),o}function H(t,e,r,n){var i=!1,a=V(e),o=[N(a[0][3],r,n),N(a[1][3],r,n),N(a[2][3],r,n),N(a[3][3],r,n)];if(!(o[0]||o[1]||o[2]||o[3]))return i;if(o[0]&&o[1]&&o[2]&&o[3])return m&&(i=function(t,e,r){var n=function(n,i,a){B(t,[e[n],e[i],e[a]],[r[n],r[i],r[a]])};n(0,1,2),n(3,0,1),n(2,3,0),n(1,2,3)}(t,a,e)||i),i;var s=!1;return[[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],h=a[l[2]],p=a[l[3]];if(m)i=B(t,[c,u,h],[e[l[0]],e[l[1]],e[l[2]]])||i;else{var f=j(p,c,r,n),d=j(p,u,r,n),g=j(p,h,r,n);i=B(null,[f,d,g],[-1,-1,-1])||i}s=!0}})),s||([[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2],[0,2,3,1],[1,3,2,0]].forEach((function(l){if(o[l[0]]&&o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],h=a[l[2]],p=a[l[3]],f=j(h,c,r,n),d=j(h,u,r,n),g=j(p,u,r,n),y=j(p,c,r,n);m?(i=B(t,[c,y,f],[e[l[0]],-1,-1])||i,i=B(t,[u,d,g],[e[l[1]],-1,-1])||i):i=function(t,e,r){var n=function(t,n,i){B(null,[e[t],e[n],e[i]],[r[t],r[n],r[i]])};n(0,1,2),n(2,3,0)}(0,[f,d,g,y],[-1,-1,-1,-1])||i,s=!0}})),s)||[[0,1,2,3],[1,2,3,0],[2,3,0,1],[3,0,1,2]].forEach((function(l){if(o[l[0]]&&!o[l[1]]&&!o[l[2]]&&!o[l[3]]){var c=a[l[0]],u=a[l[1]],h=a[l[2]],p=a[l[3]],f=j(u,c,r,n),d=j(h,c,r,n),g=j(p,c,r,n);m?(i=B(t,[c,f,d],[e[l[0]],-1,-1])||i,i=B(t,[c,d,g],[e[l[0]],-1,-1])||i,i=B(t,[c,g,f],[e[l[0]],-1,-1])||i):i=B(null,[f,d,g],[-1,-1,-1])||i,s=!0}})),i}function G(t,e,r,n,i,a,o,s,l,c,u){var h=!1;return d&&(R(t,"A")&&(h=H(null,[e,r,n,a],c,u)||h),R(t,"B")&&(h=H(null,[r,n,i,l],c,u)||h),R(t,"C")&&(h=H(null,[r,a,o,l],c,u)||h),R(t,"D")&&(h=H(null,[n,a,s,l],c,u)||h),R(t,"E")&&(h=H(null,[r,n,a,l],c,u)||h)),m&&(h=H(t,[r,n,a,l],c,u)||h),h}function W(t,e,r,n,i,a,o,s){return[!0===s[0]||q(t,V([e,r,n]),[e,r,n],a,o),!0===s[1]||q(t,V([n,i,e]),[n,i,e],a,o)]}function Z(t,e,r,n,i,a,o,s,l){return s?W(t,e,r,i,n,a,o,l):W(t,r,i,n,e,a,o,l)}function Y(t,e,r,n,i,a,o){var s,l,c,u,h=!1,p=function(){h=q(t,[s,l,c],[-1,-1,-1],i,a)||h,h=q(t,[c,u,s],[-1,-1,-1],i,a)||h},f=o[0],d=o[1],m=o[2];return f&&(s=D(V([A(e,r-0,n-0)])[0],V([A(e-1,r-0,n-0)])[0],f),l=D(V([A(e,r-0,n-1)])[0],V([A(e-1,r-0,n-1)])[0],f),c=D(V([A(e,r-1,n-1)])[0],V([A(e-1,r-1,n-1)])[0],f),u=D(V([A(e,r-1,n-0)])[0],V([A(e-1,r-1,n-0)])[0],f),p()),d&&(s=D(V([A(e-0,r,n-0)])[0],V([A(e-0,r-1,n-0)])[0],d),l=D(V([A(e-0,r,n-1)])[0],V([A(e-0,r-1,n-1)])[0],d),c=D(V([A(e-1,r,n-1)])[0],V([A(e-1,r-1,n-1)])[0],d),u=D(V([A(e-1,r,n-0)])[0],V([A(e-1,r-1,n-0)])[0],d),p()),m&&(s=D(V([A(e-0,r-0,n)])[0],V([A(e-0,r-0,n-1)])[0],m),l=D(V([A(e-0,r-1,n)])[0],V([A(e-0,r-1,n-1)])[0],m),c=D(V([A(e-1,r-1,n)])[0],V([A(e-1,r-1,n-1)])[0],m),u=D(V([A(e-1,r-0,n)])[0],V([A(e-1,r-0,n-1)])[0],m),p()),h}function X(t,e,r,n,i,a,o,s,l,c,u,h){var p=t;return h?(d&&"even"===t&&(p=null),G(p,e,r,n,i,a,o,s,l,c,u)):(d&&"odd"===t&&(p=null),G(p,l,s,o,a,i,n,r,e,c,u))}function $(t,e,r,n,i){for(var a=[],o=0,s=0;sMath.abs(T-M)?[k,T]:[T,M];tt(r,C[0],C[1])}}var I=[[Math.min(S,M),Math.max(S,M)],[Math.min(k,E),Math.max(k,E)]];["x","y","z"].forEach((function(r){for(var n=[],i=0;i0&&(h.push(d.id),"x"===r?p.push([d.distRatio,0,0]):"y"===r?p.push([0,d.distRatio,0]):p.push([0,0,d.distRatio]))}else u=it(1,"x"===r?_-1:"y"===r?b-1:w-1);h.length>0&&(n[a]="x"===r?et(e,h,o,s,p,n[a]):"y"===r?rt(e,h,o,s,p,n[a]):nt(e,h,o,s,p,n[a]),a++),u.length>0&&(n[a]="x"===r?$(e,u,o,s,n[a]):"y"===r?K(e,u,o,s,n[a]):J(e,u,o,s,n[a]),a++)}var m=t.caps[r];m.show&&m.fill&&(O(m.fill),n[a]="x"===r?$(e,[0,_-1],o,s,n[a]):"y"===r?K(e,[0,b-1],o,s,n[a]):J(e,[0,w-1],o,s,n[a]),a++)}})),0===g&&L(),t._meshX=n,t._meshY=i,t._meshZ=a,t._meshIntensity=o,t._Xs=y,t._Ys=v,t._Zs=x}(),t}e.exports={findNearestOnAxis:l,generateIsoMeshes:p,createIsosurfaceTrace:function(t,e){var n=t.glplot.gl,i=r({gl:n}),a=new c(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}}}),xm=f({"src/traces/isosurface/index.js"(t,e){e.exports={attributes:fm(),supplyDefaults:dm().supplyDefaults,calc:gm(),colorbar:{min:"cmin",max:"cmax"},plot:vm().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:nm(),categories:["gl3d","showLegend"],meta:{}}}}),_m=f({"lib/isosurface.js"(t,e){e.exports=xm()}}),bm=f({"src/traces/volume/attributes.js"(t,e){var r=Pe(),n=fm(),i=om(),a=U(),o=R().extendFlat,s=Pt().overrideAll,l=e.exports=s(o({x:n.x,y:n.y,z:n.z,value:n.value,isomin:n.isomin,isomax:n.isomax,surface:n.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:n.slices,caps:n.caps,text:n.text,hovertext:n.hovertext,xhoverformat:n.xhoverformat,yhoverformat:n.yhoverformat,zhoverformat:n.zhoverformat,valuehoverformat:n.valuehoverformat,hovertemplate:n.hovertemplate},r("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:n.colorbar,opacity:n.opacity,opacityscale:i.opacityscale,lightposition:n.lightposition,lighting:n.lighting,flatshading:n.flatshading,contour:n.contour,hoverinfo:o({},a.hoverinfo),showlegend:o({},a.showlegend,{dflt:!1})}),"calc","nested");l.x.editType=l.y.editType=l.z.editType=l.value.editType="calc+clearAxisTypes"}}),wm=f({"src/traces/volume/defaults.js"(t,e){var r=le(),n=bm(),i=dm().supplyIsoDefaults,a=sm().opacityscaleDefaults;e.exports=function(t,e,o,s){function l(i,a){return r.coerce(t,e,n,i,a)}i(t,e,o,s,l),a(t,e,s,l)}}}),Tm=f({"src/traces/volume/convert.js"(t,e){var r=Cd().gl_mesh3d,n=Fd().parseColorScale,i=le().isArrayOrTypedArray,a=Rd(),o=Ze().extractOpts,s=ym(),l=vm().findNearestOnAxis,c=vm().generateIsoMeshes;function u(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name="",this.data=null,this.showContour=!1}var h=u.prototype;h.handlePick=function(t){if(t.object===this.mesh){var e=t.data.index,r=this.data._meshX[e],n=this.data._meshY[e],a=this.data._meshZ[e],o=this.data._Ys.length,s=this.data._Zs.length,c=l(r,this.data._Xs).id,u=l(n,this.data._Ys).id,h=l(a,this.data._Zs).id,p=t.index=h+s*u+s*o*c;t.traceCoordinate=[this.data._meshX[p],this.data._meshY[p],this.data._meshZ[p],this.data._value[p]];var f=this.data.hovertext||this.data.text;return i(f)&&void 0!==f[p]?t.textLabel=f[p]:f&&(t.textLabel=f),!0}},h.update=function(t){var e=this.scene,r=e.fullSceneLayout;function i(t,e,r,n){return e.map((function(e){return t.d2l(e,0,n)*r}))}this.data=c(t);var l={positions:s(i(r.xaxis,t._meshX,e.dataScale[0],t.xcalendar),i(r.yaxis,t._meshY,e.dataScale[1],t.ycalendar),i(r.zaxis,t._meshZ,e.dataScale[2],t.zcalendar)),cells:s(t._meshI,t._meshJ,t._meshK),lightPosition:[t.lightposition.x,t.lightposition.y,t.lightposition.z],ambient:t.lighting.ambient,diffuse:t.lighting.diffuse,specular:t.lighting.specular,roughness:t.lighting.roughness,fresnel:t.lighting.fresnel,vertexNormalsEpsilon:t.lighting.vertexnormalsepsilon,faceNormalsEpsilon:t.lighting.facenormalsepsilon,opacity:t.opacity,opacityscale:t.opacityscale,contourEnable:t.contour.show,contourColor:a(t.contour.color).slice(0,3),contourWidth:t.contour.width,useFacetNormals:t.flatshading},u=o(t);l.vertexIntensity=t._meshIntensity,l.vertexIntensityBounds=[u.min,u.max],l.colormap=n(t),this.mesh.update(l)},h.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()},e.exports=function(t,e){var n=t.glplot.gl,i=r({gl:n}),a=new u(t,i,e.uid);return i._trace=a,a.update(e),t.glplot.add(i),a}}}),Am=f({"src/traces/volume/index.js"(t,e){e.exports={attributes:bm(),supplyDefaults:wm(),calc:gm(),colorbar:{min:"cmin",max:"cmax"},plot:Tm(),moduleType:"trace",name:"volume",basePlotModule:nm(),categories:["gl3d","showLegend"],meta:{}}}}),km=f({"lib/volume.js"(t,e){e.exports=Am()}}),Mm=f({"src/traces/mesh3d/defaults.js"(t,e){var r=qt(),n=le(),i=qe(),a=pm();e.exports=function(t,e,o,s){function l(r,i){return n.coerce(t,e,a,r,i)}function c(t){var e=t.map((function(t){var e=l(t);return e&&n.isArrayOrTypedArray(e)?e:null}));return e.every((function(t){return t&&t.length===e[0].length}))&&e}c(["x","y","z"])?(c(["i","j","k"]),(!e.i||e.j&&e.k)&&(!e.j||e.k&&e.i)&&(!e.k||e.i&&e.j)?(r.getComponentMethod("calendars","handleTraceDefaults")(t,e,["x","y","z"],s),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach((function(t){l(t)})),l("contour.show")&&(l("contour.color"),l("contour.width")),"intensity"in t?(l("intensity"),l("intensitymode"),i(t,e,s,l,{prefix:"",cLetter:"c"})):(e.showscale=!1,"facecolor"in t?l("facecolor"):"vertexcolor"in t?l("vertexcolor"):l("color",o)),l("text"),l("hovertext"),l("hovertemplate"),l("xhoverformat"),l("yhoverformat"),l("zhoverformat"),e._length=null):e.visible=!1):e.visible=!1}}}),Sm=f({"src/traces/mesh3d/calc.js"(t,e){var r=We();e.exports=function(t,e){e.intensity&&r(t,e,{vals:e.intensity,containerStr:"",cLetter:"c"})}}}),Em=f({"src/traces/mesh3d/convert.js"(t,e){var r=Cd().gl_mesh3d,n=Cd().delaunay_triangulate,i=Cd().alpha_shape,a=Cd().convex_hull,o=Fd().parseColorScale,s=le().isArrayOrTypedArray,l=Rd(),c=Ze().extractOpts,u=ym();function h(t,e,r){this.scene=t,this.uid=r,this.mesh=e,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var p=h.prototype;function f(t){for(var e=[],r=t.length,n=0;n=e-.5)return!1;return!0}p.handlePick=function(t){if(t.object===this.mesh){var e=t.index=t.data.index;t.data._cellCenter?t.traceCoordinate=t.data.dataCoordinate:t.traceCoordinate=[this.data.x[e],this.data.y[e],this.data.z[e]];var r=this.data.hovertext||this.data.text;return s(r)&&void 0!==r[e]?t.textLabel=r[e]:r&&(t.textLabel=r),!0}},p.update=function(t){var e=this.scene,r=e.fullSceneLayout;this.data=t;var s,h=t.x.length,p=u(d(r.xaxis,t.x,e.dataScale[0],t.xcalendar),d(r.yaxis,t.y,e.dataScale[1],t.ycalendar),d(r.zaxis,t.z,e.dataScale[2],t.zcalendar));if(t.i&&t.j&&t.k){if(t.i.length!==t.j.length||t.j.length!==t.k.length||!g(t.i,h)||!g(t.j,h)||!g(t.k,h))return;s=u(m(t.i),m(t.j),m(t.k))}else s=0===t.alphahull?a(p):t.alphahull>0?i(t.alphahull,p):function(t,e){for(var r=["x","y","z"].indexOf(t),i=[],a=e.length,o=0;o2?t.slice(1,e-1):2===e?[(t[0]+t[1])/2]:t}function p(t){var e=t.length;return 1===e?[.5,.5]:[t[1]-t[0],t[e-1]-t[e-2]]}function f(t,e){var n=t.fullSceneLayout,c=t.dataScale,u=e._len,f={};function d(t,e){var r=n[e],a=c[l[e]];return i.simpleMap(t,(function(t){return r.d2l(t)*a}))}if(f.vectors=s(d(e._u,"xaxis"),d(e._v,"yaxis"),d(e._w,"zaxis"),u),!u)return{positions:[],cells:[]};var m=d(e._Xs,"xaxis"),g=d(e._Ys,"yaxis"),y=d(e._Zs,"zaxis");if(f.meshgrid=[m,g,y],f.gridFill=e._gridFill,e._slen)f.startingPositions=s(d(e._startsX,"xaxis"),d(e._startsY,"yaxis"),d(e._startsZ,"zaxis"));else{for(var v=g[0],x=h(m),_=h(y),b=new Array(x.length*_.length),w=0,T=0;To&&(o=t[0]),t[1]s&&(s=t[1])}function c(t){switch(t.type){case"GeometryCollection":t.geometries.forEach(c);break;case"Point":l(t.coordinates);break;case"MultiPoint":t.coordinates.forEach(l)}}for(e in t.arcs.forEach((function(t){for(var e,r=-1,l=t.length;++ro&&(o=e[0]),e[1]s&&(s=e[1])})),t.objects)c(t.objects[e]);return[i,a,o,s]}function i(t,e){var r=e.id,n=e.bbox,i=null==e.properties?{}:e.properties,o=a(t,e);return null==r&&null==n?{type:"Feature",properties:i,geometry:o}:null==n?{type:"Feature",id:r,properties:i,geometry:o}:{type:"Feature",id:r,bbox:n,properties:i,geometry:o}}function a(t,e){var n=r(t.transform),i=t.arcs;function a(t,e){e.length&&e.pop();for(var r=i[t<0?~t:t],a=0,o=r.length;a1)n=function(t,e,r){var n,i=[],a=[];function o(t){var e=t<0?~t:t;(a[e]||(a[e]=[])).push({i:t,g:n})}function s(t){t.forEach(o)}function l(t){t.forEach(s)}return function t(e){switch(n=e,e.type){case"GeometryCollection":e.geometries.forEach(t);break;case"LineString":s(e.arcs);break;case"MultiLineString":case"Polygon":l(e.arcs);break;case"MultiPolygon":!function(t){t.forEach(l)}(e.arcs)}}(e),a.forEach(null==r?function(t){i.push(t[0].i)}:function(t){r(t[0].g,t[t.length-1].g)&&i.push(t[0].i)}),i}(0,e,r);else for(i=0,n=new Array(a=t.arcs.length);i1)for(var a,s,c=1,u=l(i[0]);cu&&(s=i[0],i[0]=i[c],i[c]=s,u=a);return i})).filter((function(t){return t.length>0}))}}function c(t,e){for(var r=0,n=t.length;r>>1;t[i]=2))throw new Error("n must be ≥2");var r,i=(l=t.bbox||n(t))[0],a=l[1],o=l[2],s=l[3];e={scale:[o-i?(o-i)/(r-1):1,s-a?(s-a)/(r-1):1],translate:[i,a]}}var l,c,h=u(e),p=t.objects,f={};function d(t){return h(t)}function m(t){var e;switch(t.type){case"GeometryCollection":e={type:"GeometryCollection",geometries:t.geometries.map(m)};break;case"Point":e={type:"Point",coordinates:d(t.coordinates)};break;case"MultiPoint":e={type:"MultiPoint",coordinates:t.coordinates.map(d)};break;default:return t}return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),null!=t.properties&&(e.properties=t.properties),e}for(c in p)f[c]=m(p[c]);return{type:"Topology",bbox:l,transform:e,objects:f,arcs:t.arcs.map((function(t){var e,r=0,n=1,i=t.length,a=new Array(i);for(a[0]=h(t[0],0);++r0&&(n.push(i),i=[])}return i.length>0&&n.push(i),n},t.makeLine=function(t){return 1===t.length?{type:"LineString",coordinates:t[0]}:{type:"MultiLineString",coordinates:t}},t.makePolygon=function(t){if(1===t.length)return{type:"Polygon",coordinates:t};for(var e=new Array(t.length),r=0;r0?t>180?t-360:t:t<-180?t+360:t},t.bearingToAzimuth=function(t){let e=t%360;return e<0&&(e+=360),e},t.convertArea=function(t,e="meters",r="kilometers"){if(!(t>=0))throw new Error("area must be a positive number");let i=n[e];if(!i)throw new Error("invalid original units");let a=n[r];if(!a)throw new Error("invalid final units");return t/i*a},t.convertLength=function(t,e="kilometers",r="kilometers"){if(!(t>=0))throw new Error("length must be a positive number");return p(f(t,e),r)},t.degreesToRadians=function(t){return t%360*Math.PI/180},t.earthRadius=e,t.factors=r,t.feature=i,t.featureCollection=l,t.geometry=function(t,e,r={}){switch(t){case"Point":return a(e).geometry;case"LineString":return s(e).geometry;case"Polygon":return o(e).geometry;case"MultiPoint":return u(e).geometry;case"MultiLineString":return c(e).geometry;case"MultiPolygon":return h(e).geometry;default:throw new Error(t+" is invalid")}},t.geometryCollection=function(t,e,r={}){return i({type:"GeometryCollection",geometries:t},e,r)},t.isNumber=m,t.isObject=function(t){return null!==t&&"object"==typeof t&&!Array.isArray(t)},t.lengthToDegrees=function(t,e){return d(f(t,e))},t.lengthToRadians=f,t.lineString=s,t.lineStrings=function(t,e,r={}){return l(t.map((t=>s(t,e))),r)},t.multiLineString=c,t.multiPoint=u,t.multiPolygon=h,t.point=a,t.points=function(t,e,r={}){return l(t.map((t=>a(t,e))),r)},t.polygon=o,t.polygons=function(t,e,r={}){return l(t.map((t=>o(t,e))),r)},t.radiansToDegrees=d,t.radiansToLength=p,t.round=function(t,e=0){if(e&&!(e>=0))throw new Error("precision must be a positive number");let r=Math.pow(10,e||0);return Math.round(t*r)/r},t.validateBBox=function(t){if(!t)throw new Error("bbox is required");if(!Array.isArray(t))throw new Error("bbox must be an Array");if(4!==t.length&&6!==t.length)throw new Error("bbox must be an Array of 4 or 6 numbers");t.forEach((t=>{if(!m(t))throw new Error("bbox must only contain numbers")}))},t.validateId=function(t){if(!t)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof t))throw new Error("id must be a number or a string")}}}),Jm=f({"node_modules/@turf/meta/dist/cjs/index.cjs"(t){Object.defineProperty(t,"__esModule",{value:!0});var e=Km();function r(t,e,n){if(null!==t)for(var i,a,o,s,l,c,u,h,p=0,f=0,d=t.type,m="FeatureCollection"===d,g="Feature"===d,y=m?t.features.length:1,v=0;vc||f>u||d>h)return l=r,c=i,u=f,h=d,void(o=0);var m=e.lineString.call(void 0,[l,r],t.properties);if(!1===n(m,i,a,d,o))return!1;o++,l=r})))return!1}}}))}function l(t,r){if(!t)throw new Error("geojson is required");o(t,(function(t,n,i){if(null!==t.geometry){var a=t.geometry.type,o=t.geometry.coordinates;switch(a){case"LineString":if(!1===r(t,n,i,0,0))return!1;break;case"Polygon":for(var s=0;st+function(t){let e,r=0;switch(t.type){case"Polygon":return i(t.coordinates);case"MultiPolygon":for(e=0;e0){e+=Math.abs(s(t[0]));for(let r=1;r=e?(n+2)%e:n+2],l=i[0]*o,c=a[1]*o;r+=(s[0]*o-l)*Math.sin(c),n++}return r*a}var l=n;t.area=n,t.default=l}}),tg=f({"node_modules/@turf/centroid/dist/cjs/index.cjs"(t){Object.defineProperty(t,"__esModule",{value:!0});var e=Km(),r=Jm();function n(t,n={}){let i=0,a=0,o=0;return r.coordEach.call(void 0,t,(function(t){i+=t[0],a+=t[1],o++}),!0),e.point.call(void 0,[i/o,a/o],n.properties)}var i=n;t.centroid=n,t.default=i}}),eg=f({"node_modules/@turf/bbox/dist/cjs/index.cjs"(t){Object.defineProperty(t,"__esModule",{value:!0});var e=Jm();function r(t,r={}){if(null!=t.bbox&&!0!==r.recompute)return t.bbox;let n=[1/0,1/0,-1/0,-1/0];return e.coordEach.call(void 0,t,(t=>{n[0]>t[0]&&(n[0]=t[0]),n[1]>t[1]&&(n[1]=t[1]),n[2]0&&t[e+1][0]<0)return e;return null}switch(e="RUS"===s||"FJI"===s?function(t){var e;if(null===c(t))e=t;else for(e=new Array(t.length),i=0;ie?r[n++]=[t[i][0]+360,t[i][1]]:i===e?(r[n++]=t[i],r[n++]=[t[i][0],-90]):r[n++]=t[i];var a=h.tester(r);a.pts.pop(),l.push(a)}:function(t){l.push(h.tester(t))},a.type){case"MultiPolygon":for(r=0;r0?h.properties.ct=function(t){var e,r=t.geometry;if("MultiPolygon"===r.type)for(var n=r.coordinates,o=0,s=0;so&&(o=c,e=l)}else e=r;return a(e).geometry.coordinates}(h):h.properties.ct=[NaN,NaN],n.fIn=t,n.fOut=h,s.push(h)}else l.log(["Location",n.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete o[r]}switch(r.type){case"FeatureCollection":var p=r.features;for(n=0;n100?(clearInterval(a),n("Unexpected error while fetching from "+t)):void i++}),50)}))}for(var o=0;o")}function f(t){return t+"°"}}(c,m,t,l[0].t.labels),t.hovertemplate=c.hovertemplate,[t]}}}}),og=f({"src/traces/scattergeo/event_data.js"(t,e){e.exports=function(t,e,r,n,i){t.lon=e.lon,t.lat=e.lat,t.location=e.loc?e.loc:null;var a=n[i];return a.fIn&&a.fIn.properties&&(t.properties=a.fIn.properties),t}}}),sg=f({"src/traces/scattergeo/select.js"(t,e){var r=Ye(),n=k().BADNUM;e.exports=function(t,e){var i,a,o,s,l,c=t.cd,u=t.xaxis,h=t.yaxis,p=[],f=c[0].trace;if(!r.hasMarkers(f)&&!r.hasText(f))return[];if(!1===e)for(l=0;le?1:t>=e?0:NaN}function r(t){return 1===t.length&&(t=function(t){return function(r,n){return e(t(r),n)}}(t)),{left:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)<0?n=a+1:i=a}return n},right:function(e,r,n,i){for(null==n&&(n=0),null==i&&(i=e.length);n>>1;t(e[a],r)>0?i=a:n=a+1}return n}}}var n=r(e),i=n.right,a=n.left;function o(t,e){return[t,e]}function s(t){return null===t?NaN:+t}function l(t,e){var r,n,i=t.length,a=0,o=-1,l=0,c=0;if(null==e)for(;++o1)return c/(a-1)}function c(t,e){var r=l(t,e);return r&&Math.sqrt(r)}function u(t,e){var r,n,i,a=t.length,o=-1;if(null==e){for(;++o=r)for(n=i=r;++or&&(n=r),i=r)for(n=i=r;++or&&(n=r),i=0?(a>=y?10:a>=v?5:a>=x?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(a>=y?10:a>=v?5:a>=x?2:1)}function b(t,e,r){var n=Math.abs(e-t)/Math.max(0,r),i=Math.pow(10,Math.floor(Math.log(n)/Math.LN10)),a=n/i;return a>=y?i*=10:a>=v?i*=5:a>=x&&(i*=2),e=1)return+r(t[n-1],n-1,t);var n,i=(n-1)*e,a=Math.floor(i),o=+r(t[a],a,t);return o+(+r(t[a+1],a+1,t)-o)*(i-a)}}function A(t,e){var r,n,i=t.length,a=-1;if(null==e){for(;++a=r)for(n=r;++ar&&(n=r)}else for(;++a=r)for(n=r;++ar&&(n=r);return n}function k(t){if(!(i=t.length))return[];for(var e=-1,r=A(t,M),n=new Array(r);++et?1:e>=t?0:NaN},t.deviation=c,t.extent=u,t.histogram=function(){var t=m,e=u,r=w;function n(n){var a,o,s=n.length,l=new Array(s);for(a=0;ah;)p.pop(),--f;var d,m=new Array(f+1);for(a=0;a<=f;++a)(d=m[a]=[]).x0=a>0?p[a-1]:u,d.x1=a=r)for(n=r;++an&&(n=r)}else for(;++a=r)for(n=r;++an&&(n=r);return n},t.mean=function(t,e){var r,n=t.length,i=n,a=-1,o=0;if(null==e)for(;++a=0;)for(e=(n=t[i]).length;--e>=0;)r[--o]=n[e];return r},t.min=A,t.pairs=function(t,e){null==e&&(e=o);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r0)return[t];if((n=e0)for(t=Math.ceil(t/o),e=Math.floor(e/o),a=new Array(i=Math.ceil(e-t+1));++s0?1:t<0?-1:0},A=Math.sqrt,k=Math.tan;function M(t){return t>1?0:t<-1?l:Math.acos(t)}function S(t){return t>1?c:t<-1?-c:Math.asin(t)}function E(t){return(t=w(t/2))*t}function C(){}function I(t,e){t&&P.hasOwnProperty(t.type)&&P[t.type](t,e)}var L={Feature:function(t,e){I(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n=0?1:-1,i=n*r,a=y(e=(e*=f)/2+u),o=w(e),s=N*o,l=j*a+s*y(i),c=s*n*w(i);U.add(g(c,l)),B=t,j=a,N=o}function Y(t){return[g(t[1],t[0]),S(t[2])]}function X(t){var e=t[0],r=t[1],n=y(r);return[n*y(e),n*w(e),w(r)]}function $(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function K(t,e){return[t[1]*e[2]-t[2]*e[1],t[2]*e[0]-t[0]*e[2],t[0]*e[1]-t[1]*e[0]]}function J(t,e){t[0]+=e[0],t[1]+=e[1],t[2]+=e[2]}function Q(t,e){return[t[0]*e,t[1]*e,t[2]*e]}function tt(t){var e=A(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=e,t[1]/=e,t[2]/=e}var et,rt,nt,it,at,ot,st,lt,ct,ut,ht=r(),pt={point:ft,lineStart:mt,lineEnd:gt,polygonStart:function(){pt.point=yt,pt.lineStart=vt,pt.lineEnd=xt,ht.reset(),q.polygonStart()},polygonEnd:function(){q.polygonEnd(),pt.point=ft,pt.lineStart=mt,pt.lineEnd=gt,U<0?(et=-(nt=180),rt=-(it=90)):ht>o?it=90:ht<-o&&(rt=-90),ut[0]=et,ut[1]=nt},sphere:function(){et=-(nt=180),rt=-(it=90)}};function ft(t,e){ct.push(ut=[et=t,nt=t]),eit&&(it=e)}function dt(t,e){var r=X([t*f,e*f]);if(lt){var n=K(lt,r),i=K([n[1],-n[0],0],n);tt(i),i=Y(i);var a,o=t-at,s=o>0?1:-1,l=i[0]*p*s,c=d(o)>180;c^(s*atit&&(it=a):c^(s*at<(l=(l+360)%360-180)&&lit&&(it=e)),c?t_t(et,nt)&&(nt=t):_t(t,nt)>_t(et,nt)&&(et=t):nt>=et?(tnt&&(nt=t)):t>at?_t(et,t)>_t(et,nt)&&(nt=t):_t(t,nt)>_t(et,nt)&&(et=t)}else ct.push(ut=[et=t,nt=t]);eit&&(it=e),lt=r,at=t}function mt(){pt.point=dt}function gt(){ut[0]=et,ut[1]=nt,pt.point=ft,lt=null}function yt(t,e){if(lt){var r=t-at;ht.add(d(r)>180?r+(r>0?360:-360):r)}else ot=t,st=e;q.point(t,e),dt(t,e)}function vt(){q.lineStart()}function xt(){yt(ot,st),q.lineEnd(),d(ht)>o&&(et=-(nt=180)),ut[0]=et,ut[1]=nt,lt=null}function _t(t,e){return(e-=t)<0?e+360:e}function bt(t,e){return t[0]-e[0]}function wt(t,e){return t[0]<=t[1]?t[0]<=e&&e<=t[1]:el?t+Math.round(-t/h)*h:t,e]}function Qt(t,e,r){return(t%=h)?e||r?Kt(ee(t),re(e,r)):ee(t):e||r?re(e,r):Jt}function te(t){return function(e,r){return[(e+=t)>l?e-h:e<-l?e+h:e,r]}}function ee(t){var e=te(t);return e.invert=te(-t),e}function re(t,e){var r=y(t),n=w(t),i=y(e),a=w(e);function o(t,e){var o=y(e),s=y(t)*o,l=w(t)*o,c=w(e),u=c*r+s*n;return[g(l*i-u*a,s*r-c*n),S(u*i+l*a)]}return o.invert=function(t,e){var o=y(e),s=y(t)*o,l=w(t)*o,c=w(e),u=c*i-l*a;return[g(l*i+c*a,s*r+u*n),S(u*r-s*n)]},o}function ne(t){function e(e){return(e=t(e[0]*f,e[1]*f))[0]*=p,e[1]*=p,e}return t=Qt(t[0]*f,t[1]*f,t.length>2?t[2]*f:0),e.invert=function(e){return(e=t.invert(e[0]*f,e[1]*f))[0]*=p,e[1]*=p,e},e}function ie(t,e,r,n,i,a){if(r){var o=y(e),s=w(e),l=n*r;null==i?(i=e+n*h,a=e-l/2):(i=ae(o,i),a=ae(o,a),(n>0?ia)&&(i+=n*h));for(var c,u=i;n>0?u>a:u1&&e.push(e.pop().concat(e.shift()))},result:function(){var r=e;return e=[],t=null,r}}}function se(t,e){return d(t[0]-e[0])=0;--a)i.point((h=u[a])[0],h[1]);else n(f.x,f.p.x,-1,i);f=f.p}u=(f=f.o).z,d=!d}while(!f.v);i.lineEnd()}}}function ue(t){if(e=t.length){for(var e,r,n=0,i=t[0];++n=0?1:-1,D=z*P,O=D>l,R=T*I;if(he.add(g(R*z*w(D),A*L+R*y(D))),s+=O?P+z*h:P,O^_>=r^E>=r){var F=K(X(x),X(M));tt(F);var B=K(a,F);tt(B);var j=(O^P>=0?-1:1)*S(B[2]);(n>j||n===j&&(F[0]||F[1]))&&(p+=O^P>=0?1:-1)}}return(s<-o||s0){for(p||(a.polygonStart(),p=!0),a.lineStart(),t=0;t1&&2&i&&c.push(c.pop().concat(c.shift())),s.push(c.filter(me))}}return f}}function me(t){return t.length>1}function ge(t,e){return((t=t.x)[0]<0?t[1]-c-o:c-t[1])-((e=e.x)[0]<0?e[1]-c-o:c-e[1])}var ye=de((function(){return!0}),(function(t){var e,r=NaN,n=NaN,i=NaN;return{lineStart:function(){t.lineStart(),e=1},point:function(a,s){var u=a>0?l:-l,h=d(a-r);d(h-l)0?c:-c),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),t.point(a,n),e=0):i!==u&&h>=l&&(d(r-i)o?m((w(e)*(a=y(n))*w(r)-w(n)*(i=y(e))*w(t))/(i*a*s)):(e+n)/2}(r,n,a,s),t.point(i,n),t.lineEnd(),t.lineStart(),t.point(u,n),e=0),t.point(r=a,n=s),i=u},lineEnd:function(){t.lineEnd(),r=n=NaN},clean:function(){return 2-e}}}),(function(t,e,r,n){var i;if(null==t)i=r*c,n.point(-l,i),n.point(0,i),n.point(l,i),n.point(l,0),n.point(l,-i),n.point(0,-i),n.point(-l,-i),n.point(-l,0),n.point(-l,i);else if(d(t[0]-e[0])>o){var a=t[0]0,i=d(e)>o;function a(t,r){return y(t)*y(r)>e}function s(t,r,n){var i=[1,0,0],a=K(X(t),X(r)),s=$(a,a),c=a[0],u=s-c*c;if(!u)return!n&&t;var h=e*s/u,p=-e*c/u,f=K(i,a),m=Q(i,h);J(m,Q(a,p));var g=f,y=$(m,g),v=$(g,g),x=y*y-v*($(m,m)-1);if(!(x<0)){var _=A(x),b=Q(g,(-y-_)/v);if(J(b,m),b=Y(b),!n)return b;var w,T=t[0],k=r[0],M=t[1],S=r[1];k0^b[1]<(d(b[0]-T)l^(T<=b[0]&&b[0]<=k)){var I=Q(g,(-y+_)/v);return J(I,m),[b,Y(I)]}}}function c(e,r){var i=n?t:l-t,a=0;return e<-i?a|=1:e>i&&(a|=2),r<-i?a|=4:r>i&&(a|=8),a}return de(a,(function(t){var e,r,o,u,h;return{lineStart:function(){u=o=!1,h=1},point:function(p,f){var d,m=[p,f],g=a(p,f),y=n?g?0:c(p,f):g?c(p+(p<0?l:-l),f):0;if(!e&&(u=o=g)&&t.lineStart(),g!==o&&(!(d=s(e,m))||se(e,d)||se(m,d))&&(m[2]=1),g!==o)h=0,g?(t.lineStart(),d=s(m,e),t.point(d[0],d[1])):(d=s(e,m),t.point(d[0],d[1],2),t.lineEnd()),e=d;else if(i&&e&&n^g){var v;!(y&r)&&(v=s(m,e,!0))&&(h=0,n?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}g&&(!e||!se(e,m))&&t.point(m[0],m[1]),e=m,o=g,r=y},lineEnd:function(){o&&t.lineEnd(),e=null},clean:function(){return h|(u&&o)<<1}}}),(function(e,n,i,a){ie(a,t,r,i,e,n)}),n?[0,-t]:[-l,t-l])}var xe=1e9,_e=-xe;function be(t,r,n,i){function a(e,a){return t<=e&&e<=n&&r<=a&&a<=i}function s(e,a,o,s){var c=0,h=0;if(null==e||(c=l(e,o))!==(h=l(a,o))||u(e,a)<0^o>0)do{s.point(0===c||3===c?t:n,c>1?i:r)}while((c=(c+o+4)%4)!==h);else s.point(a[0],a[1])}function l(e,i){return d(e[0]-t)0?0:3:d(e[0]-n)0?2:1:d(e[1]-r)0?1:0:i>0?3:2}function c(t,e){return u(t.x,e.x)}function u(t,e){var r=l(t,1),n=l(e,1);return r!==n?r-n:0===r?e[1]-t[1]:1===r?t[0]-e[0]:2===r?t[1]-e[1]:e[0]-t[0]}return function(o){var l,u,h,p,f,d,m,g,y,v,x,_=o,b=oe(),w={point:T,lineStart:function(){w.point=A,u&&u.push(h=[]),v=!0,y=!1,m=g=NaN},lineEnd:function(){l&&(A(p,f),d&&y&&b.rejoin(),l.push(b.result())),w.point=T,y&&_.lineEnd()},polygonStart:function(){_=b,l=[],u=[],x=!0},polygonEnd:function(){var r=function(){for(var e=0,r=0,n=u.length;ri&&(p-a)*(i-o)>(f-o)*(t-a)&&++e:f<=i&&(p-a)*(i-o)<(f-o)*(t-a)&&--e;return e}(),n=x&&r,a=(l=e.merge(l)).length;(n||a)&&(o.polygonStart(),n&&(o.lineStart(),s(null,null,1,o),o.lineEnd()),a&&ce(l,c,r,s,o),o.polygonEnd()),_=o,l=u=h=null}};function T(t,e){a(t,e)&&_.point(t,e)}function A(e,o){var s=a(e,o);if(u&&h.push([e,o]),v)p=e,f=o,d=s,v=!1,s&&(_.lineStart(),_.point(e,o));else if(s&&y)_.point(e,o);else{var l=[m=Math.max(_e,Math.min(xe,m)),g=Math.max(_e,Math.min(xe,g))],c=[e=Math.max(_e,Math.min(xe,e)),o=Math.max(_e,Math.min(xe,o))];!function(t,e,r,n,i,a){var o,s=t[0],l=t[1],c=0,u=1,h=e[0]-s,p=e[1]-l;if(o=r-s,h||!(o>0)){if(o/=h,h<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=i-s,h||!(o<0)){if(o/=h,h<0){if(o>u)return;o>c&&(c=o)}else if(h>0){if(o0)){if(o/=p,p<0){if(o0){if(o>u)return;o>c&&(c=o)}if(o=a-l,p||!(o<0)){if(o/=p,p<0){if(o>u)return;o>c&&(c=o)}else if(p>0){if(o0&&(t[0]=s+c*h,t[1]=l+c*p),u<1&&(e[0]=s+u*h,e[1]=l+u*p),!0}}}}}(l,c,t,r,n,i)?s&&(_.lineStart(),_.point(e,o),x=!1):(y||(_.lineStart(),_.point(l[0],l[1])),_.point(c[0],c[1]),s||_.lineEnd(),x=!1)}m=e,g=o,y=s}return w}}var we,Te,Ae,ke=r(),Me={sphere:C,point:C,lineStart:function(){Me.point=Ee,Me.lineEnd=Se},lineEnd:C,polygonStart:C,polygonEnd:C};function Se(){Me.point=Me.lineEnd=C}function Ee(t,e){we=t*=f,Te=w(e*=f),Ae=y(e),Me.point=Ce}function Ce(t,e){t*=f;var r=w(e*=f),n=y(e),i=d(t-we),a=y(i),o=n*w(i),s=Ae*r-Te*n*a,l=Te*r+Ae*n*a;ke.add(g(A(o*o+s*s),l)),we=t,Te=r,Ae=n}function Ie(t){return ke.reset(),O(t,Me),+ke}var Le=[null,null],Pe={type:"LineString",coordinates:Le};function ze(t,e){return Le[0]=t,Le[1]=e,Ie(Pe)}var De={Feature:function(t,e){return Re(t.geometry,e)},FeatureCollection:function(t,e){for(var r=t.features,n=-1,i=r.length;++n0&&(i=ze(t[a],t[a-1]))>0&&r<=i&&n<=i&&(r+n-i)*(1-Math.pow((r-n)/i,2))o})).map(u)).concat(e.range(v(s/g)*g,a,g).filter((function(t){return d(t%x)>o})).map(h))}return b.lines=function(){return w().map((function(t){return{type:"LineString",coordinates:t}}))},b.outline=function(){return{type:"Polygon",coordinates:[p(i).concat(f(l).slice(1),p(n).reverse().slice(1),f(c).reverse().slice(1))]}},b.extent=function(t){return arguments.length?b.extentMajor(t).extentMinor(t):b.extentMinor()},b.extentMajor=function(t){return arguments.length?(i=+t[0][0],n=+t[1][0],c=+t[0][1],l=+t[1][1],i>n&&(t=i,i=n,n=t),c>l&&(t=c,c=l,l=t),b.precision(_)):[[i,c],[n,l]]},b.extentMinor=function(e){return arguments.length?(r=+e[0][0],t=+e[1][0],s=+e[0][1],a=+e[1][1],r>t&&(e=r,r=t,t=e),s>a&&(e=s,s=a,a=e),b.precision(_)):[[r,s],[t,a]]},b.step=function(t){return arguments.length?b.stepMajor(t).stepMinor(t):b.stepMinor()},b.stepMajor=function(t){return arguments.length?(y=+t[0],x=+t[1],b):[y,x]},b.stepMinor=function(t){return arguments.length?(m=+t[0],g=+t[1],b):[m,g]},b.precision=function(e){return arguments.length?(_=+e,u=Ve(s,a,90),h=qe(r,t,_),p=Ve(c,l,90),f=qe(i,n,_),b):_},b.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Ge(t){return t}var We,Ze,Ye,Xe,$e=r(),Ke=r(),Je={point:C,lineStart:C,lineEnd:C,polygonStart:function(){Je.lineStart=Qe,Je.lineEnd=rr},polygonEnd:function(){Je.lineStart=Je.lineEnd=Je.point=C,$e.add(d(Ke)),Ke.reset()},result:function(){var t=$e/2;return $e.reset(),t}};function Qe(){Je.point=tr}function tr(t,e){Je.point=er,We=Ye=t,Ze=Xe=e}function er(t,e){Ke.add(Xe*t-Ye*e),Ye=t,Xe=e}function rr(){er(We,Ze)}var nr,ir,ar,or,sr=1/0,lr=sr,cr=-sr,ur=cr,hr={point:function(t,e){tcr&&(cr=t),eur&&(ur=e)},lineStart:C,lineEnd:C,polygonStart:C,polygonEnd:C,result:function(){var t=[[sr,lr],[cr,ur]];return cr=ur=-(lr=sr=1/0),t}},pr=0,fr=0,dr=0,mr=0,gr=0,yr=0,vr=0,xr=0,_r=0,br={point:wr,lineStart:Tr,lineEnd:Mr,polygonStart:function(){br.lineStart=Sr,br.lineEnd=Er},polygonEnd:function(){br.point=wr,br.lineStart=Tr,br.lineEnd=Mr},result:function(){var t=_r?[vr/_r,xr/_r]:yr?[mr/yr,gr/yr]:dr?[pr/dr,fr/dr]:[NaN,NaN];return pr=fr=dr=mr=gr=yr=vr=xr=_r=0,t}};function wr(t,e){pr+=t,fr+=e,++dr}function Tr(){br.point=Ar}function Ar(t,e){br.point=kr,wr(ar=t,or=e)}function kr(t,e){var r=t-ar,n=e-or,i=A(r*r+n*n);mr+=i*(ar+t)/2,gr+=i*(or+e)/2,yr+=i,wr(ar=t,or=e)}function Mr(){br.point=wr}function Sr(){br.point=Cr}function Er(){Ir(nr,ir)}function Cr(t,e){br.point=Ir,wr(nr=ar=t,ir=or=e)}function Ir(t,e){var r=t-ar,n=e-or,i=A(r*r+n*n);mr+=i*(ar+t)/2,gr+=i*(or+e)/2,yr+=i,vr+=(i=or*t-ar*e)*(ar+t),xr+=i*(or+e),_r+=3*i,wr(ar=t,or=e)}function Lr(t){this._context=t}Lr.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._context.moveTo(t,e),this._point=1;break;case 1:this._context.lineTo(t,e);break;default:this._context.moveTo(t+this._radius,e),this._context.arc(t,e,this._radius,0,h)}},result:C};var Pr,zr,Dr,Or,Rr,Fr=r(),Br={point:C,lineStart:function(){Br.point=jr},lineEnd:function(){Pr&&Nr(zr,Dr),Br.point=C},polygonStart:function(){Pr=!0},polygonEnd:function(){Pr=null},result:function(){var t=+Fr;return Fr.reset(),t}};function jr(t,e){Br.point=Nr,zr=Or=t,Dr=Rr=e}function Nr(t,e){Or-=t,Rr-=e,Fr.add(A(Or*Or+Rr*Rr)),Or=t,Rr=e}function Ur(){this._string=[]}function Vr(t){return"m0,"+t+"a"+t+","+t+" 0 1,1 0,"+-2*t+"a"+t+","+t+" 0 1,1 0,"+2*t+"z"}function qr(t){return function(e){var r=new Hr;for(var n in t)r[n]=t[n];return r.stream=e,r}}function Hr(){}function Gr(t,e,r){var n=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=n&&t.clipExtent(null),O(r,t.stream(hr)),e(hr.result()),null!=n&&t.clipExtent(n),t}function Wr(t,e,r){return Gr(t,(function(r){var n=e[1][0]-e[0][0],i=e[1][1]-e[0][1],a=Math.min(n/(r[1][0]-r[0][0]),i/(r[1][1]-r[0][1])),o=+e[0][0]+(n-a*(r[1][0]+r[0][0]))/2,s=+e[0][1]+(i-a*(r[1][1]+r[0][1]))/2;t.scale(150*a).translate([o,s])}),r)}function Zr(t,e,r){return Wr(t,[[0,0],e],r)}function Yr(t,e,r){return Gr(t,(function(r){var n=+e,i=n/(r[1][0]-r[0][0]),a=(n-i*(r[1][0]+r[0][0]))/2,o=-i*r[0][1];t.scale(150*i).translate([a,o])}),r)}function Xr(t,e,r){return Gr(t,(function(r){var n=+e,i=n/(r[1][1]-r[0][1]),a=-i*r[0][0],o=(n-i*(r[1][1]+r[0][1]))/2;t.scale(150*i).translate([a,o])}),r)}Ur.prototype={_radius:4.5,_circle:Vr(4.5),pointRadius:function(t){return(t=+t)!==this._radius&&(this._radius=t,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._string.push("Z"),this._point=NaN},point:function(t,e){switch(this._point){case 0:this._string.push("M",t,",",e),this._point=1;break;case 1:this._string.push("L",t,",",e);break;default:null==this._circle&&(this._circle=Vr(this._radius)),this._string.push("M",t,",",e,this._circle)}},result:function(){if(this._string.length){var t=this._string.join("");return this._string=[],t}return null}},Hr.prototype={constructor:Hr,point:function(t,e){this.stream.point(t,e)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var $r=y(30*f);function Kr(t,e){return+e?function(t,e){function r(n,i,a,s,l,c,u,h,p,f,m,y,v,x){var _=u-n,b=h-i,w=_*_+b*b;if(w>4*e&&v--){var T=s+f,k=l+m,M=c+y,E=A(T*T+k*k+M*M),C=S(M/=E),I=d(d(M)-1)e||d((_*D+b*O)/w-.5)>.3||s*f+l*m+c*y<$r)&&(r(n,i,a,s,l,c,P,z,I,T/=E,k/=E,M,v,x),x.point(P,z),r(P,z,I,T,k,M,u,h,p,f,m,y,v,x))}}return function(e){var n,i,a,o,s,l,c,u,h,p,f,d,m={point:g,lineStart:y,lineEnd:x,polygonStart:function(){e.polygonStart(),m.lineStart=_},polygonEnd:function(){e.polygonEnd(),m.lineStart=y}};function g(r,n){r=t(r,n),e.point(r[0],r[1])}function y(){u=NaN,m.point=v,e.lineStart()}function v(n,i){var a=X([n,i]),o=t(n,i);r(u,h,c,p,f,d,u=o[0],h=o[1],c=n,p=a[0],f=a[1],d=a[2],16,e),e.point(u,h)}function x(){m.point=g,e.lineEnd()}function _(){y(),m.point=b,m.lineEnd=w}function b(t,e){v(n=t,e),i=u,a=h,o=p,s=f,l=d,m.point=v}function w(){r(u,h,c,p,f,d,i,a,n,o,s,l,16,e),m.lineEnd=x,x()}return m}}(t,e):function(t){return qr({point:function(e,r){e=t(e,r),this.stream.point(e[0],e[1])}})}(t)}var Jr=qr({point:function(t,e){this.stream.point(t*f,e*f)}});function Qr(t,e,r,n,i){function a(a,o){return[e+t*(a*=n),r-t*(o*=i)]}return a.invert=function(a,o){return[(a-e)/t*n,(r-o)/t*i]},a}function tn(t,e,r,n,i,a){var o=y(a),s=w(a),l=o*t,c=s*t,u=o/t,h=s/t,p=(s*r-o*e)/t,f=(s*e+o*r)/t;function d(t,a){return[l*(t*=n)-c*(a*=i)+e,r-c*t-l*a]}return d.invert=function(t,e){return[n*(u*t-h*e+p),i*(f-h*t-u*e)]},d}function en(t){return rn((function(){return t}))()}function rn(t){var e,r,n,i,a,o,s,l,c,u,h=150,d=480,m=250,g=0,y=0,v=0,x=0,_=0,b=0,w=1,T=1,k=null,M=ye,S=null,E=Ge,C=.5;function I(t){return l(t[0]*f,t[1]*f)}function L(t){return(t=l.invert(t[0],t[1]))&&[t[0]*p,t[1]*p]}function P(){var t=tn(h,0,0,w,T,b).apply(null,e(g,y)),n=(b?tn:Qr)(h,d-t[0],m-t[1],w,T,b);return r=Qt(v,x,_),s=Kt(e,n),l=Kt(r,s),o=Kr(s,C),z()}function z(){return c=u=null,I}return I.stream=function(t){return c&&u===t?c:c=Jr(function(t){return qr({point:function(e,r){var n=t(e,r);return this.stream.point(n[0],n[1])}})}(r)(M(o(E(u=t)))))},I.preclip=function(t){return arguments.length?(M=t,k=void 0,z()):M},I.postclip=function(t){return arguments.length?(E=t,S=n=i=a=null,z()):E},I.clipAngle=function(t){return arguments.length?(M=+t?ve(k=t*f):(k=null,ye),z()):k*p},I.clipExtent=function(t){return arguments.length?(E=null==t?(S=n=i=a=null,Ge):be(S=+t[0][0],n=+t[0][1],i=+t[1][0],a=+t[1][1]),z()):null==S?null:[[S,n],[i,a]]},I.scale=function(t){return arguments.length?(h=+t,P()):h},I.translate=function(t){return arguments.length?(d=+t[0],m=+t[1],P()):[d,m]},I.center=function(t){return arguments.length?(g=t[0]%360*f,y=t[1]%360*f,P()):[g*p,y*p]},I.rotate=function(t){return arguments.length?(v=t[0]%360*f,x=t[1]%360*f,_=t.length>2?t[2]%360*f:0,P()):[v*p,x*p,_*p]},I.angle=function(t){return arguments.length?(b=t%360*f,P()):b*p},I.reflectX=function(t){return arguments.length?(w=t?-1:1,P()):w<0},I.reflectY=function(t){return arguments.length?(T=t?-1:1,P()):T<0},I.precision=function(t){return arguments.length?(o=Kr(s,C=t*t),z()):A(C)},I.fitExtent=function(t,e){return Wr(I,t,e)},I.fitSize=function(t,e){return Zr(I,t,e)},I.fitWidth=function(t,e){return Yr(I,t,e)},I.fitHeight=function(t,e){return Xr(I,t,e)},function(){return e=t.apply(this,arguments),I.invert=e.invert&&L,P()}}function nn(t){var e=0,r=l/3,n=rn(t),i=n(e,r);return i.parallels=function(t){return arguments.length?n(e=t[0]*f,r=t[1]*f):[e*p,r*p]},i}function an(t,e){var r=w(t),n=(r+w(e))/2;if(d(n)0?e<-c+o&&(e=-c+o):e>c-o&&(e=c-o);var r=i/b(dn(e),n);return[r*w(n*t),i-r*y(n*t)]}return a.invert=function(t,e){var r=i-e,a=T(n)*A(t*t+r*r),o=g(t,d(r))*T(r);return r*n<0&&(o-=l*T(t)*T(r)),[o/n,2*m(b(i/a,1/n))-c]},a}function gn(t,e){return[t,e]}function yn(t,e){var r=y(t),n=t===e?w(t):(r-y(e))/(e-t),i=r/n+t;if(d(n)o&&--i>0);return[t/(.8707+(a=n*n)*(a*(a*a*a*(.003971-.001529*a)-.013791)-.131979)),n]},Mn.invert=cn(S),Sn.invert=cn((function(t){return 2*m(t)})),En.invert=function(t,e){return[-e,2*m(x(t))-c]},t.geoAlbers=sn,t.geoAlbersUsa=function(){var t,e,r,n,i,a,s=sn(),l=on().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=on().rotate([157,0]).center([-3,19.9]).parallels([8,18]),u={point:function(t,e){a=[t,e]}};function h(t){var e=t[0],o=t[1];return a=null,r.point(e,o),a||(n.point(e,o),a)||(i.point(e,o),a)}function p(){return t=e=null,h}return h.invert=function(t){var e=s.scale(),r=s.translate(),n=(t[0]-r[0])/e,i=(t[1]-r[1])/e;return(i>=.12&&i<.234&&n>=-.425&&n<-.214?l:i>=.166&&i<.234&&n>=-.214&&n<-.115?c:s).invert(t)},h.stream=function(r){return t&&e===r?t:t=function(t){var e=t.length;return{point:function(r,n){for(var i=-1;++i_t(n[0],n[1])&&(n[1]=i[1]),_t(i[0],n[1])>_t(n[0],n[1])&&(n[0]=i[0])):a.push(n=i);for(o=-1/0,e=0,n=a[r=a.length-1];e<=r;n=i,++e)i=a[e],(s=_t(n[1],i[0]))>o&&(o=s,et=i[0],nt=n[1])}return ct=ut=null,et===1/0||rt===1/0?[[NaN,NaN],[NaN,NaN]]:[[et,rt],[nt,it]]},t.geoCentroid=function(t){Tt=At=kt=Mt=St=Et=Ct=It=Lt=Pt=zt=0,O(t,jt);var e=Lt,r=Pt,n=zt,i=e*e+r*r+n*n;return i2?t[2]+90:90]):[(t=r())[0],t[1],t[2]-90]},r([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=En,Object.defineProperty(t,"__esModule",{value:!0})},"object"==typeof t&&typeof e<"u"?n(t,lg()):n((r=r||self).d3=r.d3||{},r.d3)}}),ug=f({"node_modules/d3-geo-projection/dist/d3-geo-projection.js"(t,e){var r,n;r=t,n=function(t,e,r){var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,c=Math.log,u=Math.max,h=Math.min,p=Math.pow,f=Math.round,d=Math.sign||function(t){return t>0?1:t<0?-1:0},m=Math.sin,g=Math.tan,y=1e-6,v=1e-12,x=Math.PI,_=x/2,b=x/4,w=Math.SQRT1_2,T=I(2),A=I(x),k=2*x,M=180/x,S=x/180;function E(t){return t>1?_:t<-1?-_:Math.asin(t)}function C(t){return t>1?0:t<-1?x:Math.acos(t)}function I(t){return t>0?Math.sqrt(t):0}function L(t){return(s(t)-s(-t))/2}function P(t){return(s(t)+s(-t))/2}function z(t){var e=g(t/2),r=2*c(o(t/2))/(e*e);function i(t,e){var n=o(t),i=o(e),a=m(e),s=i*n,l=-((1-s?c((1+s)/2)/(1-s):-.5)+r/(1+s));return[l*i*m(t),l*a]}return i.invert=function(e,i){var s,l=I(e*e+i*i),u=-t/2,h=50;if(!l)return[0,0];do{var p=u/2,f=o(p),d=m(p),g=d/f,v=-c(n(f));u-=s=(2/g*v-r*g-l)/(-v/(d*d)+1-r/(2*f*f))*(f<0?.7:1)}while(n(s)>y&&--h>0);var x=m(u);return[a(e*x,l*o(u)),E(i*x/l)]},i}function D(t,e){var r=o(e),n=function(t){return t?t/Math.sin(t):1}(C(r*o(t/=2)));return[2*r*m(t)*n,m(e)*n]}function O(t){var e=m(t),r=o(t),i=t>=0?1:-1,s=g(i*t),l=(1+e-r)/2;function c(t,n){var c=o(n),u=o(t/=2);return[(1+c)*m(t),(i*n>-a(u,s)-.001?0:10*-i)+l+m(n)*r-(1+c)*e*u]}return c.invert=function(t,c){var u=0,h=0,p=50;do{var f=o(u),d=m(u),g=o(h),v=m(h),x=1+g,_=x*d-t,b=l+v*r-x*e*f-c,w=x*f/2,T=-d*v,A=e*x*d/2,k=r*g+e*f*v,M=T*A-k*w,S=(b*T-_*k)/M/2,E=(_*A-b*w)/M;n(E)>2&&(E/=2),u-=S,h-=E}while((n(S)>y||n(E)>y)&&--p>0);return i*h>-a(o(u),s)-.001?[2*u,h]:null},c}function R(t,e){var r=g(e/2),n=I(1-r*r),i=1+n*o(t/=2),a=m(t)*n/i,s=r/i,l=a*a,c=s*s;return[4/3*a*(3+l-3*c),4/3*s*(3+3*l-c)]}D.invert=function(t,e){if(!(t*t+4*e*e>x*x+y)){var r=t,i=e,a=25;do{var s,l=m(r),c=m(r/2),u=o(r/2),h=m(i),p=o(i),f=m(2*i),d=h*h,g=p*p,v=c*c,_=1-g*u*u,b=_?C(p*u)*I(s=1/_):s=0,w=2*b*p*c-t,T=b*h-e,A=s*(g*v+b*p*u*d),k=s*(.5*l*f-2*b*h*c),M=.25*s*(f*c-b*h*g*l),S=s*(d*u+b*v*p),E=k*M-S*A;if(!E)break;var L=(T*k-w*S)/E,P=(w*M-T*A)/E;r-=L,i-=P}while((n(L)>y||n(P)>y)&&--a>0);return[r,i]}},R.invert=function(t,e){if(e*=3/8,!(t*=3/8)&&n(e)>1)return null;var r=1+t*t+e*e,i=I((r-I(r*r-4*e*e))/2),s=E(i)/3,l=i?function(t){return c(t+I(t*t-1))}(n(e/i))/3:function(t){return c(t+I(t*t+1))}(n(t))/3,u=o(s),h=P(l),p=h*h-u*u;return[2*d(t)*a(L(l)*u,.25-p),2*d(e)*a(h*m(s),.25+p)]};var F=I(8),B=c(1+T);function j(t,e){var r=n(e);return r_){var l=a(s[1],s[0]),c=I(s[0]*s[0]+s[1]*s[1]),u=r*f((l-_)/r)+_,h=a(m(l-=u),2-o(l));l=u+E(x/c*m(h))-h,s[0]=c*o(l),s[1]=c*m(l)}return s}return s.invert=function(t,n){var s=I(t*t+n*n);if(s>_){var l=a(n,t),c=r*f((l-_)/r)+_,u=l>c?-1:1,h=s*o(c-l),p=1/g(u*C((h-x)/I(x*(x-2*h)+s*s)));l=c+2*i((p+u*I(p*p-3))/3),t=s*o(l),n=s*m(l)}return e.geoAzimuthalEquidistantRaw.invert(t,n)},s}function U(t,r){if(arguments.length<2&&(r=t),1===r)return e.geoAzimuthalEqualAreaRaw;if(r===1/0)return V;function n(n,i){var a=e.geoAzimuthalEqualAreaRaw(n/r,i);return a[0]*=t,a}return n.invert=function(n,i){var a=e.geoAzimuthalEqualAreaRaw.invert(n/t,i);return a[0]*=r,a},n}function V(t,e){return[t*o(e)/o(e/=2),2*m(e)]}function q(t,e,r){var i,a,o,s=100;r=void 0===r?0:+r,e=+e;do{(a=t(r))===(o=t(r+y))&&(o=a+y),r-=i=-1*y*(a-e)/(a-o)}while(s-- >0&&n(i)>y);return s<0?NaN:r}function H(t,e,r){return void 0===e&&(e=40),void 0===r&&(r=v),function(i,a,o,s){var l,c,u;o=void 0===o?0:+o,s=void 0===s?0:+s;for(var h=0;hl)o-=c/=2,s-=u/=2;else{l=m;var g=(o>0?-1:1)*r,y=(s>0?-1:1)*r,v=t(o+g,s),x=t(o,s+y),_=(v[0]-p[0])/g,b=(v[1]-p[1])/g,w=(x[0]-p[0])/y,T=(x[1]-p[1])/y,A=T*_-b*w,k=(n(A)<.5?.5:1)/A;if(o+=c=(d*w-f*T)*k,s+=u=(f*b-d*_)*k,n(c)0&&(i[1]*=1+a/1.5*i[0]*i[0]),i}return e.invert=H(e),e}function W(t,e){var r,i=t*m(e),a=30;do{e-=r=(e+m(e)-i)/(1+o(e))}while(n(r)>y&&--a>0);return e/2}function Z(t,e,r){function n(n,i){return[t*n*o(i=W(r,i)),e*m(i)]}return n.invert=function(n,i){return i=E(i/e),[n/(t*o(i)),E((2*i+m(2*i))/r)]},n}j.invert=function(t,e){if((a=n(e))v&&--u>0);return[t/(o(l)*(F-1/m(l))),d(e)*l]},V.invert=function(t,e){var r=2*E(e/2);return[t*o(r/2)/o(r),r]};var Y=Z(T/_,T,x),X=2.00276,$=1.11072;function K(t,e){var r=W(x,e);return[X*t/(1/o(e)+$/o(r)),(e+T*m(r))/X]}function J(t){var r=0,n=e.geoProjectionMutator(t),i=n(r);return i.parallel=function(t){return arguments.length?n(r=t*S):r*M},i}function Q(t,e){return[t*o(e),e]}function tt(t){if(!t)return Q;var e=1/g(t);function r(r,n){var i=e+t-n,a=i&&r*o(n)/i;return[i*m(a),e-i*o(a)]}return r.invert=function(r,n){var i=I(r*r+(n=e-n)*n),s=e+t-i;return[i/o(s)*a(r,n),s]},r}function et(t){function e(e,r){var n=_-r,i=n&&e*t*m(n)/n;return[n*m(i)/t,_-n*o(i)]}return e.invert=function(e,r){var n=e*t,i=_-r,o=I(n*n+i*i),s=a(n,i);return[(o?o/m(o):1)*s/t,_-o]},e}K.invert=function(t,e){var r,i,a=X*e,s=e<0?-b:b,l=25;do{i=a-T*m(s),s-=r=(m(2*s)+2*s-x*m(i))/(2*o(2*s)+2+x*o(i)*T*o(s))}while(n(r)>y&&--l>0);return i=a-T*m(s),[t*(1/o(i)+$/o(s))/X,i]},Q.invert=function(t,e){return[t/o(e),e]};var rt=Z(1,4/x,x);function nt(t,e,r,i,s,l){var c,u=o(l);if(n(t)>1||n(l)>1)c=C(r*s+e*i*u);else{var h=m(t/2),p=m(l/2);c=2*E(I(h*h+e*i*p*p))}return n(c)>y?[c,a(i*m(l),e*s-r*i*u)]:[0,0]}function it(t,e,r){return C((t*t+e*e-r*r)/(2*t*e))}function at(t){return t-2*x*l((t+x)/(2*x))}function ot(t,e,r){for(var n,i=[[t[0],t[1],m(t[1]),o(t[1])],[e[0],e[1],m(e[1]),o(e[1])],[r[0],r[1],m(r[1]),o(r[1])]],a=i[2],s=0;s<3;++s,a=n)n=i[s],a.v=nt(n[1]-a[1],a[3],a[2],n[3],n[2],n[0]-a[0]),a.point=[0,0];var l=it(i[0].v[0],i[2].v[0],i[1].v[0]),c=it(i[0].v[0],i[1].v[0],i[2].v[0]),u=x-l;i[2].point[1]=0,i[0].point[0]=-(i[1].point[0]=i[0].v[0]/2);var h=[i[2].point[0]=i[0].point[0]+i[2].v[0]*o(l),2*(i[0].point[1]=i[1].point[1]=i[2].v[0]*m(l))];return function(t,e){var r,n=m(e),a=o(e),s=new Array(3);for(r=0;r<3;++r){var l=i[r];if(s[r]=nt(e-l[1],l[3],l[2],a,n,t-l[0]),!s[r][0])return l.point;s[r][1]=at(s[r][1]-l.v[1])}var p=h.slice();for(r=0;r<3;++r){var f=2==r?0:r+1,d=it(i[r].v[0],s[r][0],s[f][0]);s[r][1]<0&&(d=-d),r?1==r?(d=c-d,p[0]-=s[r][0]*o(d),p[1]-=s[r][0]*m(d)):(d=u-d,p[0]+=s[r][0]*o(d),p[1]+=s[r][0]*m(d)):(p[0]+=s[r][0]*o(d),p[1]-=s[r][0]*m(d))}return p[0]/=3,p[1]/=3,p}}function st(t){return t[0]*=S,t[1]*=S,t}function lt(t,r,n){var i=e.geoCentroid({type:"MultiPoint",coordinates:[t,r,n]}),a=[-i[0],-i[1]],o=e.geoRotation(a),s=ot(st(o(t)),st(o(r)),st(o(n)));s.invert=H(s);var l=e.geoProjection(s).rotate(a),c=l.center;return delete l.rotate,l.center=function(t){return arguments.length?c(o(t)):o.invert(c())},l.clipAngle(90)}function ct(t,e){var r=I(1-m(e));return[2/A*t*r,A*(1-r)]}function ut(t){var e=g(t);function r(t,r){return[t,(t?t/m(t):1)*(m(r)*o(t)-e*o(r))]}return r.invert=e?function(t,r){t&&(r*=m(t)/t);var n=o(t);return[t,2*a(I(n*n+e*e-r*r)-n,e-r)]}:function(t,e){return[t,E(t?e*g(t)/t:e)]},r}ct.invert=function(t,e){var r=(r=e/A-1)*r;return[r>0?t*I(x/r)/2:0,E(1-r)]};var ht=I(3);function pt(t,e){return[ht*t*(2*o(2*e/3)-1)/A,ht*A*m(e/3)]}function ft(t){var e=o(t);function r(t,r){return[t*e,m(r)/e]}return r.invert=function(t,r){return[t/e,E(r*e)]},r}function dt(t){var e=o(t);function r(t,r){return[t*e,(1+e)*g(r/2)]}return r.invert=function(t,r){return[t/e,2*i(r/(1+e))]},r}function mt(t,e){var r=I(8/(3*x));return[r*t*(1-n(e)/x),r*e]}function gt(t,e){var r=I(4-3*m(n(e)));return[2/I(6*x)*t*r,d(e)*I(2*x/3)*(2-r)]}function yt(t,e){var r=I(x*(4+x));return[2/r*t*(1+I(1-4*e*e/(x*x))),4/r*e]}function vt(t,e){var r=(2+_)*m(e);e/=2;for(var i=0,a=1/0;i<10&&n(a)>y;i++){var s=o(e);e-=a=(e+m(e)*(s+2)-r)/(2*s*(1+s))}return[2/I(x*(4+x))*t*(1+o(e)),2*I(x/(4+x))*m(e)]}function xt(t,e){return[t*(1+o(e))/I(2+x),2*e/I(2+x)]}function _t(t,e){for(var r=(1+_)*m(e),i=0,a=1/0;i<10&&n(a)>y;i++)e-=a=(e+m(e)-r)/(1+o(e));return r=I(2+x),[t*(1+o(e))/r,2*e/r]}pt.invert=function(t,e){var r=3*E(e/(ht*A));return[A*t/(ht*(2*o(2*r/3)-1)),r]},mt.invert=function(t,e){var r=I(8/(3*x)),i=e/r;return[t/(r*(1-n(i)/x)),i]},gt.invert=function(t,e){var r=2-n(e)/I(2*x/3);return[t*I(6*x)/(2*r),d(e)*E((4-r*r)/3)]},yt.invert=function(t,e){var r=I(x*(4+x))/2;return[t*r/(1+I(1-e*e*(4+x)/(4*x))),e*r/2]},vt.invert=function(t,e){var r=e*I((4+x)/x)/2,n=E(r),i=o(n);return[t/(2/I(x*(4+x))*(1+i)),E((n+r*(i+2))/(2+_))]},xt.invert=function(t,e){var r=I(2+x),n=e*r/2;return[r*t/(1+o(n)),n]},_t.invert=function(t,e){var r=1+_,n=I(r/2);return[2*t*n/(1+o(e*=n)),E((e+m(e))/r)]};var bt=3+2*T;function wt(t,e){var r=m(t/=2),n=o(t),a=I(o(e)),s=o(e/=2),l=m(e)/(s+T*n*a),u=I(2/(1+l*l)),h=I((T*s+(n+r)*a)/(T*s+(n-r)*a));return[bt*(u*(h-1/h)-2*c(h)),bt*(u*l*(h+1/h)-2*i(l))]}wt.invert=function(t,e){if(!(r=R.invert(t/1.2,1.065*e)))return null;var r,a=r[0],s=r[1],l=20;t/=bt,e/=bt;do{var p=a/2,f=s/2,d=m(p),g=o(p),v=m(f),x=o(f),b=o(s),A=I(b),k=v/(x+T*g*A),M=k*k,S=I(2/(1+M)),E=(T*x+(g+d)*A)/(T*x+(g-d)*A),C=I(E),L=C-1/C,P=C+1/C,z=S*L-2*c(C)-t,D=S*k*P-2*i(k)-e,O=v&&w*A*d*M/v,F=(T*g*x+A)/(2*(x+T*g*A)*(x+T*g*A)*A),B=-.5*k*S*S*S,j=B*O,N=B*F,U=(U=2*x+T*A*(g-d))*U*C,V=(T*g*x*A+b)/U,q=-T*d*v/(A*U),H=L*j-2*V/C+S*(V+V/E),G=L*N-2*q/C+S*(q+q/E),W=k*P*j-2*O/(1+M)+S*P*O+S*k*(V-V/E),Z=k*P*N-2*F/(1+M)+S*P*F+S*k*(q-q/E),Y=G*W-Z*H;if(!Y)break;var X=(D*G-z*Z)/Y,$=(z*W-D*H)/Y;a-=X,s=u(-_,h(_,s-$))}while((n(X)>y||n($)>y)&&--l>0);return n(n(s)-_)s){var d=I(p),g=a(h,u),v=i*f(g/i),b=g-v,w=t*o(b),T=(t*m(b)-b*m(w))/(_-w),A=It(b,T),k=(x-t)/Lt(A,w,x);u=d;var M,S=50;do{u-=M=(t+Lt(A,w,u)*k-d)/(A(u)*k)}while(n(M)>y&&--S>0);h=b*m(u),u<_&&(h-=T*(u-_));var E=m(v),C=o(v);c[0]=u*C-h*E,c[1]=u*E+h*C}return c}return l.invert=function(r,l){var c=r*r+l*l;if(c>s){var u=I(c),h=a(l,r),p=i*f(h/i),d=h-p;r=u*o(d),l=u*m(d);for(var g=r-_,y=m(r),b=l/y,w=r<_?1/0:0,T=10;;){var A=t*m(b),k=t*o(b),M=m(k),S=_-k,E=(A-b*M)/S,C=It(b,E);if(n(w)y||n(f)>y)&&--v>0);return[d,g]},u}At.invert=function(t,e){var r=e/(1+Tt);return[t&&t/(Tt*I(1-r*r)),2*i(r)]},kt.invert=function(t,e){var r=i(e/A),n=o(r),a=2*r;return[t*A/2/(o(a)*n*n),a]};var zt=Pt(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555),Dt=Pt(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742),Ot=Pt(5/6*x,-.62636,-.0344,0,1.3493,-.05524,0,.045);function Rt(t,e){var r=t*t,n=e*e;return[t*(1-.162388*n)*(.87-952426e-9*r*r),e*(1+n/12)]}Rt.invert=function(t,e){var r,i=t,a=e,o=50;do{var s=a*a;a-=r=(a*(1+s/12)-e)/(1+s/4)}while(n(r)>y&&--o>0);o=50,t/=1-.162388*s;do{var l=(l=i*i)*l;i-=r=(i*(.87-952426e-9*l)-t)/(.87-.00476213*l)}while(n(r)>y&&--o>0);return[i,a]};var Ft=Pt(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Bt(t){var e=t(_,0)[0]-t(-_,0)[0];function r(r,n){var i=r>0?-.5:.5,a=t(r+i*x,n);return a[0]-=i*e,a}return t.invert&&(r.invert=function(r,n){var i=r>0?-.5:.5,a=t.invert(r+i*e,n),o=a[0]-i*x;return o<-x?o+=2*x:o>x&&(o-=2*x),a[0]=o,a}),r}function jt(t,e){var r=d(t),i=d(e),s=o(e),l=o(t)*s,c=m(t)*s,u=m(i*e);t=n(a(c,u)),e=E(l),n(t-_)>y&&(t%=_);var h=function(t,e){if(e===_)return[0,0];var r,i,a=m(e),s=a*a,l=s*s,c=1+l,u=1+3*l,h=1-l,p=E(1/I(c)),f=h+s*c*p,d=(1-a)/f,g=I(d),v=d*c,b=I(v),w=g*h;if(0===t)return[0,-(w+s*b)];var T,A=o(e),k=1/A,M=2*a*A,S=(-f*A-(1-a)*((-3*s+p*u)*M))/(f*f),C=-k*M,L=-k*(s*c*S+d*u*M),P=-2*k*(h*(.5*S/g)-2*s*g*M),z=4*t/x;if(t>.222*x||e.175*x){if(r=(w+s*I(v*(1+l)-w*w))/(1+l),t>x/4)return[r,r];var D=r,O=.5*r;r=.5*(O+D),i=50;do{var R=r*(P+C*I(v-r*r))+L*E(r/b)-z;if(!R)break;R<0?O=r:D=r,r=.5*(O+D)}while(n(D-O)>y&&--i>0)}else{r=y,i=25;do{var F=r*r,B=I(v-F),j=P+C*B,N=r*j+L*E(r/b)-z;r-=T=B?N/(j+(L-C*F)/B):0}while(n(T)>y&&--i>0)}return[r,-w-s*I(v-r*r)]}(t>x/4?_-t:t,e);return t>x/4&&(u=h[0],h[0]=-h[1],h[1]=-u),h[0]*=r,h[1]*=-i,h}function Nt(t,e){var r,a,l,c,u;if(e=1-y)return r=(1-e)/4,a=P(t),c=function(t){return((t=s(2*t))-1)/(t+1)}(t),l=1/a,[c+r*((u=a*L(t))-t)/(a*a),l-r*c*l*(u-t),l+r*c*l*(u+t),2*i(s(t))-_+r*(u-t)/a];var h=[1,0,0,0,0,0,0,0,0],p=[I(e),0,0,0,0,0,0,0,0],f=0;for(a=I(1-e),u=1;n(p[f]/h[f])>y&&f<8;)r=h[f++],p[f]=(r-a)/2,h[f]=(r+a)/2,a=I(r*a),u*=2;l=u*h[f]*t;do{l=(E(c=p[f]*m(a=l)/h[f])+l)/2}while(--f);return[m(l),c=o(l),c/o(l-a),l]}function Ut(t,e){if(!e)return t;if(1===e)return c(g(t/2+b));for(var r=1,a=I(1-e),o=I(e),s=0;n(o)>y;s++){if(t%x){var l=i(a*g(t)/r);l<0&&(l+=x),t+=l+~~(t/x)*x}else t+=t;o=(r+a)/2,a=I(r*a),o=((r=o)-a)/2}return t/(p(2,s)*r)}function Vt(t,e){var r=(T-1)/(T+1),l=I(1-r*r),u=Ut(_,l*l),h=c(g(x/4+n(e)/2)),p=s(-1*h)/I(r),f=function(t,e){var r=t*t,n=e+1,i=1-r-e*e;return[.5*((t>=0?_:-_)-a(i,2*t)),-.25*c(i*i+4*r)+.5*c(n*n+r)]}(p*o(-1*t),p*m(-1*t)),y=function(t,e,r){var a=n(t),o=L(n(e));if(a){var s=1/m(a),l=1/(g(a)*g(a)),c=-(l+r*(o*o*s*s)-1+r),u=(-c+I(c*c-(r-1)*l*4))/2;return[Ut(i(1/I(u)),r)*d(t),Ut(i(I((u/l-1)/r)),1-r)*d(e)]}return[0,Ut(i(o),1-r)*d(e)]}(f[0],f[1],l*l);return[-y[1],(e>=0?1:-1)*(.5*u-y[0])]}function qt(t){var e=m(t),r=o(t),i=Ht(t);function s(t,a){var s=i(t,a);t=s[0],a=s[1];var l=m(a),c=o(a),u=o(t),h=C(e*l+r*c*u),p=m(h),f=n(p)>y?h/p:1;return[f*r*m(t),(n(t)>_?f:-f)*(e*c-r*l*u)]}return i.invert=Ht(-t),s.invert=function(t,r){var n=I(t*t+r*r),s=-m(n),l=o(n),c=n*l,u=-r*s,h=n*e,p=I(c*c+u*u-h*h),f=a(c*h+u*p,u*h-c*p),d=(n>_?-1:1)*a(t*s,n*o(f)*l+r*m(f)*s);return i.invert(d,f)},s}function Ht(t){var e=m(t),r=o(t);return function(t,n){var i=o(n),s=o(t)*i,l=m(t)*i,c=m(n);return[a(l,s*r-c*e),E(c*r+s*e)]}}jt.invert=function(t,e){n(t)>1&&(t=2*d(t)-t),n(e)>1&&(e=2*d(e)-e);var r=d(t),i=d(e),s=-r*t,l=-i*e,c=l/s<1,u=function(t,e){for(var r=0,i=1,a=.5,s=50;;){var l=a*a,c=I(a),u=E(1/I(1+l)),h=1-l+a*(1+l)*u,p=(1-c)/h,f=I(p),d=p*(1+l),m=f*(1-l),g=I(d-t*t),y=e+m+a*g;if(n(i-r)0?r=a:i=a,a=.5*(r+i)}if(!s)return null;var _=E(c),b=o(_),w=1/b,T=2*c*b,A=(-h*b-(1-c)*((-3*a+u*(1+3*l))*T))/(h*h);return[x/4*(t*(-2*w*(.5*A/f*(1-l)-2*a*f*T)+-w*T*g)+-w*(a*(1+l)*A+p*(1+3*l)*T)*E(t/I(d))),_]}(c?l:s,c?s:l),h=u[0],p=u[1],f=o(p);return c&&(h=-_-h),[r*(a(m(h)*f,-m(p))+x),i*E(o(h)*f)]},Vt.invert=function(t,e){var r=(T-1)/(T+1),n=I(1-r*r),o=function(t,e,r){var n,i,a;return t?(n=Nt(t,r),e?(a=(i=Nt(e,1-r))[1]*i[1]+r*n[0]*n[0]*i[0]*i[0],[[n[0]*i[2]/a,n[1]*n[2]*i[0]*i[1]/a],[n[1]*i[1]/a,-n[0]*n[2]*i[0]*i[2]/a],[n[2]*i[1]*i[2]/a,-r*n[0]*n[1]*i[0]/a]]):[[n[0],0],[n[1],0],[n[2],0]]):[[0,(i=Nt(e,1-r))[0]/i[1]],[1/i[1],0],[i[2]/i[1],0]]}(.5*Ut(_,n*n)-e,-t,n*n),l=function(t,e){var r=e[0]*e[0]+e[1]*e[1];return[(t[0]*e[0]+t[1]*e[1])/r,(t[1]*e[0]-t[0]*e[1])/r]}(o[0],o[1]);return[a(l[1],l[0])/-1,2*i(s(-.5*c(r*l[0]*l[0]+r*l[1]*l[1])))-_]};var Gt=E(1-1/3)*M,Wt=ft(0);function Zt(t){var e=Gt*S,r=ct(x,e)[0]-ct(-x,e)[0],i=Wt(0,e)[1],a=ct(0,e)[1],o=A-a,s=k/t,c=4/k,p=i+o*o*4/k;function f(f,d){var m,g=n(d);if(g>e){var y=h(t-1,u(0,l((f+x)/s)));(m=ct(f+=x*(t-1)/t-y*s,g))[0]=m[0]*k/r-k*(t-1)/(2*t)+y*k/t,m[1]=i+4*(m[1]-a)*o/k,d<0&&(m[1]=-m[1])}else m=Wt(f,d);return m[0]*=c,m[1]/=p,m}return f.invert=function(e,f){e/=c;var d=n(f*=p);if(d>i){var m=h(t-1,u(0,l((e+x)/s)));e=(e+x*(t-1)/t-m*s)*r/k;var g=ct.invert(e,.25*(d-i)*k/o+a);return g[0]-=x*(t-1)/t-m*s,f<0&&(g[1]=-g[1]),g}return Wt.invert(e,f)},f}function Yt(t,e){return[t,1&e?90-y:Gt]}function Xt(t,e){return[t,1&e?-90+y:-Gt]}function $t(t){return[t[0]*(1-y),t[1]]}function Kt(t){var e,r=1+t,i=E(m(1/r)),s=2*I(x/(e=x+4*i*r)),l=.5*s*(r+I(t*(2+t))),c=t*t,u=r*r;function h(h,p){var f,d,g=1-m(p);if(g&&g<2){var y,b=_-p,w=25;do{var T=m(b),A=o(b),k=i+a(T,r-A),M=1+u-2*r*A;b-=y=(b-c*i-r*T+M*k-.5*g*e)/(2*r*T*k)}while(n(y)>v&&--w>0);f=s*I(M),d=h*k/x}else f=s*(t+g),d=h*i/x;return[f*m(d),l-f*o(d)]}return h.invert=function(t,n){var o=t*t+(n-=l)*n,h=(1+u-o/(s*s))/(2*r),p=C(h),f=m(p),d=i+a(f,r-h);return[E(t/I(o))*x/d,E(1-2*(p-c*i-r*f+(1+u-2*r*h)*d)/e)]},h}var Jt=.7109889596207567,Qt=.0528035274542;function te(t,e){return e>-Jt?((t=Y(t,e))[1]+=Qt,t):Q(t,e)}function ee(t,e){return n(e)>Jt?((t=Y(t,e))[1]-=e>0?Qt:-Qt,t):Q(t,e)}function re(t,e,r,n){var i=I(4*x/(2*r+(1+t-e/2)*m(2*r)+(t+e)/2*m(4*r)+e/2*m(6*r))),a=I(n*m(r)*I((1+t*o(2*r)+e*o(4*r))/(1+t+e))),s=r*c(1);function l(r){return I(1+t*o(2*r)+e*o(4*r))}function c(n){var i=n*r;return(2*i+(1+t-e/2)*m(2*i)+(t+e)/2*m(4*i)+e/2*m(6*i))/r}function u(t){return l(t)*m(t)}var h=function(t,e){var n=r*q(c,s*m(e)/r,e/x);isNaN(n)&&(n=r*d(e));var u=i*l(n);return[u*a*t/x*o(n),u/a*m(n)]};return h.invert=function(t,e){var n=q(u,e*a/i);return[t*x/(o(n)*i*a*l(n)),E(r*c(n/r)/s)]},0===r&&(i=I(n/x),(h=function(t,e){return[t*i,m(e)/i]}).invert=function(t,e){return[t/i,E(e*i)]}),h}function ne(t,e,r,n,i,a,o,s,l,c,u){if(u.nanEncountered)return NaN;var h,p,f,d,m,g,y,v,x,_;if(p=t(e+.25*(h=r-e)),f=t(r-.25*h),isNaN(p))u.nanEncountered=!0;else{if(!isNaN(f))return _=((g=(d=h*(n+4*p+i)/12)+(m=h*(i+4*f+a)/12))-o)/15,c>l?(u.maxDepthCount++,g+_):Math.abs(_)t?r=n:e=n,n=e+r>>1}while(n>e);var i=c[n+1]-c[n];return i&&(i=(t-c[n+1])/i),(n+1+i)/s}var f=2*h(1)/x*o/r,g=function(t,e){var r=h(n(m(e))),a=i(r)*t;return r/=f,[a,e>=0?r:-r]};return g.invert=function(t,e){var r;return n(e*=f)<1&&(r=d(e)*E(a(n(e))*o)),[t/i(n(e)),r]},g}function oe(t,e){return n(t[0]-e[0])a[o][2][0];++o);var l=t(e-a[o][1][0],r);return l[0]+=t(a[o][1][0],i*r>i*a[o][0][1]?a[o][0][1]:r)[0],l}i?s.invert=i(s):t.invert&&(s.invert=function(e,r){for(var i=o[+(r<0)],a=n[+(r<0)],l=0,c=i.length;l=0;--l)n=(e=t[1][l])[0][0],i=e[0][1],a=e[1][1],o=e[2][0],s=e[2][1],c.push(se([[o-y,s-y],[o-y,a+y],[n+y,a+y],[n+y,i-y]],30));return{type:"Polygon",coordinates:[r.merge(c)]}}(e),n=e.map((function(t){return t.map((function(t){return[[t[0][0]*S,t[0][1]*S],[t[1][0]*S,t[1][1]*S],[t[2][0]*S,t[2][1]*S]]}))})),o=n.map((function(e){return e.map((function(e){var r,n=t(e[0][0],e[0][1])[0],i=t(e[2][0],e[2][1])[0],a=t(e[1][0],e[0][1])[1],o=t(e[1][0],e[1][1])[1];return a>o&&(r=a,a=o,o=r),[[n,a],[i,o]]}))})),l):n.map((function(t){return t.map((function(t){return[[t[0][0]*M,t[0][1]*M],[t[1][0]*M,t[1][1]*M],[t[2][0]*M,t[2][1]*M]]}))}))},null!=n&&l.lobes(n),l}te.invert=function(t,e){return e>-Jt?Y.invert(t,e-Qt):Q.invert(t,e)},ee.invert=function(t,e){return n(e)>Jt?Y.invert(t,e+(e>0?Qt:-Qt)):Q.invert(t,e)};var ce=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]],ue=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]],he=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]],pe=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]],fe=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]],de=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function me(t,e){return[3/k*t*I(x*x/3-e*e),e]}function ge(t){function e(e,r){if(n(n(r)-_)2)return null;var o=(e/=2)*e,s=(r/=2)*r,l=2*r/(1+o+s);return l=p((1+l)/(1-l),1/t),[a(2*e,1-o-s)/t,E((l-1)/(l+1))]},e}me.invert=function(t,e){return[k/3*t/I(x*x/3-e*e),e]};var ye=x/T;function ve(t,e){return[t*(1+I(o(e)))/2,e/(o(e/2)*o(t/6))]}function xe(t,e){var r=t*t,n=e*e;return[t*(.975534+n*(-.0143059*r-.119161+-.0547009*n)),e*(1.00384+r*(.0802894+-.02855*n+199025e-9*r)+n*(.0998909+-.0491032*n))]}function _e(t,e){return[m(t)/o(e),g(e)*o(t)]}function be(t){var e=o(t),r=g(b+t/2);function i(i,a){var o=a-t,s=n(o)=0;)p=(h=t[u])[0]+l*(i=p)-c*f,f=h[1]+l*f+c*i;return[p=l*(i=p)-c*f,f=l*f+c*i]}return r.invert=function(r,s){var l=20,c=r,u=s;do{for(var h,p=e,f=t[p],d=f[0],g=f[1],v=0,x=0;--p>=0;)v=d+c*(h=v)-u*x,x=g+c*x+u*h,d=(f=t[p])[0]+c*(h=d)-u*g,g=f[1]+c*g+u*h;var _,b,w=(v=d+c*(h=v)-u*x)*v+(x=g+c*x+u*h)*x;c-=_=((d=c*(h=d)-u*g-r)*v+(g=c*g+u*h-s)*x)/w,u-=b=(g*v-d*x)/w}while(n(_)+n(b)>y*y&&--l>0);if(l){var T=I(c*c+u*u),A=2*i(.5*T),k=m(A);return[a(c*k,T*o(A)),T?E(u*k/T):0]}},r}ve.invert=function(t,e){var r=n(t),i=n(e),a=y,s=_;iy||n(_)>y)&&--a>0);return a&&[r,i]},_e.invert=function(t,e){var r=t*t,n=e*e+1,i=r+n,a=t?w*I((i-I(i*i-4*r))/r):1/I(n);return[E(t*a),d(e)*C(a)]},we.invert=function(t,e){return[t,2.5*i(s(.8*e))-.625*x]};var Ae=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],ke=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Me=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Se=[[.9245,0],[0,0],[.01943,0]],Ee=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Ce(t,r){var n=e.geoProjection(Te(t)).rotate(r).clipAngle(90),i=e.geoRotation(r),a=n.center;return delete n.rotate,n.center=function(t){return arguments.length?a(i(t)):i.invert(a())},n}var Ie=I(6),Le=I(7);function Pe(t,e){var r=E(7*m(e)/(3*Ie));return[Ie*t*(2*o(2*r/3)-1)/Le,9*m(r/3)/Le]}function ze(t,e){for(var r,i=(1+w)*m(e),a=e,s=0;s<25&&(a-=r=(m(a/2)+m(a)-i)/(.5*o(a/2)+o(a)),!(n(r)v&&--l>0);return[t/(.84719-.13063*(i=s*s)+(o=i*(a=i*i))*o*(.05494*i-.04515-.02326*a+.00331*o)),s]},Re.invert=function(t,e){for(var r=e/2,i=0,a=1/0;i<10&&n(a)>y;++i){var s=o(e/2);e-=a=(e-g(e/2)-r)/(1-.5/(s*s))}return[2*t/(1+o(e)),e]};var Fe=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function Be(t,e){var r=m(e),i=o(e),a=d(t);if(0===t||n(e)===_)return[0,e];if(0===e)return[t,0];if(n(t)===_)return[t*i,_*r];var s=x/(2*t)-2*t/x,l=2*e/x,c=(1-l*l)/(r-l),u=s*s,h=c*c,p=1+u/h,f=1+h/u,g=(s*r/c-s/2)/p,y=(h*r/u+c/2)/f,v=y*y-(h*r*r/u+c*r-1)/f;return[_*(g+I(g*g+i*i/p)*a),_*(y+I(v<0?0:v)*d(-e*s)*a)]}Be.invert=function(t,e){var r=(t/=_)*t,n=r+(e/=_)*e,i=x*x;return[t?(n-1+I((1-n)*(1-n)+4*r))/(2*t)*_:0,q((function(t){return n*(x*m(t)-2*t)*x+4*t*t*(e-m(t))+2*x*t-i*e}),0)]};var je=1.0148,Ne=.23185,Ue=-.14499,Ve=.02406,qe=je,He=5*Ne,Ge=7*Ue,We=1.790857183;function Ze(t,e){var r=e*e;return[t,e*(je+r*r*(Ne+r*(Ue+Ve*r)))]}function Ye(t,e){if(n(e)=0;)if(n=e[s],r[0]===n[0]&&r[1]===n[1]){if(a)return[a,r];a=r}}}(e.face,r.face),i=function(t,e){var r=$e(t[1],t[0]),n=$e(e[1],e[0]),i=function(t,e){return a(t[0]*e[1]-t[1]*e[0],t[0]*e[0]+t[1]*e[1])}(r,n),s=Ke(r)/Ke(n);return Xe([1,0,t[0][0],0,1,t[0][1]],Xe([s,0,0,0,s,0],Xe([o(i),m(i),0,-m(i),o(i),0],[1,0,-e[0][0],0,1,-e[0][1]])))}(n.map(r.project),n.map(e.project));e.transform=r.transform?Xe(r.transform,i):i;for(var s=r.edges,l=0,c=s.length;lWe?e=We:e<-We&&(e=-We);var r,i=e;do{var a=i*i;i-=r=(i*(je+a*a*(Ne+a*(Ue+Ve*a)))-e)/(qe+a*a*(He+a*(Ge+.21654*a)))}while(n(r)>y);return[t,i]},Ye.invert=function(t,e){if(n(e)y&&--s>0);return l=g(a),[(n(e)n^f>n&&r<(p-c)*(n-u)/(f-u)+c&&(i=!i)}return i}(t[0],r))return t.push(e),!0}))||t.push([e])})),mr=[],t.length?t.length>1?{type:"MultiPolygon",coordinates:t}:{type:"Polygon",coordinates:t[0]}:null}};function xr(t){var r=t(_,0)[0]-t(-_,0)[0];function i(e,i){var a=n(e)<_,o=t(a?e:e>0?e-x:e+x,i),s=(o[0]-o[1])*w,l=(o[0]+o[1])*w;if(a)return[s,l];var c=r*w,u=s>0^l>0?-1:1;return[u*s-d(l)*c,u*l-d(s)*c]}return t.invert&&(i.invert=function(e,i){var a=(e+i)*w,o=(i-e)*w,s=n(a)<.5*r&&n(o)<.5*r;if(!s){var l=r*w,c=a>0^o>0?-1:1,u=-c*e+(o>0?1:-1)*l,h=-c*i+(a>0?1:-1)*l;a=(-u-h)*w,o=(u-h)*w}var p=t.invert(a,o);return s||(p[0]+=a>0?x:-x),p}),e.geoProjection(i).rotate([-90,-90,45]).clipAngle(179.999)}function _r(){return xr(Vt).scale(111.48)}function br(t){var e=m(t);function r(r,n){var a=e?g(r*e/2)/e:r/2;if(!n)return[2*a,-t];var s=2*i(a*m(n)),l=1/g(n);return[m(s)*l,n+(1-o(s))*l-t]}return r.invert=function(r,a){if(n(a+=t)y&&--u>0);var d=r*(h=g(c)),v=g(n(a)0?_:-_)*(p+o*(d-c)/2+o*o*(d-2*p+c)/2)]}function Ar(t,e){var r=function(t){function e(e,r){var n=o(r),i=(t-1)/(t-n*o(e));return[i*n*m(e),i*m(r)]}return e.invert=function(e,r){var n=e*e+r*r,i=I(n),o=(t-I(1-n*(t+1)/(t-1)))/((t-1)/i+i/(t-1));return[a(e*o,i*I(1-o*o)),i?E(r*o/i):0]},e}(t);if(!e)return r;var n=o(e),i=m(e);function s(e,a){var o=r(e,a),s=o[1],l=s*i/(t-1)+n;return[o[0]*n/l,s/l]}return s.invert=function(e,a){var o=(t-1)/(t-1-a*i);return r.invert(o*e,o*a*n)},s}wr.forEach((function(t){t[1]*=1.0144})),Tr.invert=function(t,e){var r=e/_,i=90*r,a=h(18,n(i/5)),o=u(0,l(a));do{var s=wr[o][1],c=wr[o+1][1],p=wr[h(19,o+2)][1],f=p-s,d=p-2*c+s,m=2*(n(r)-c)/f,g=d/f,y=m*(1-g*m*(1-2*g*m));if(y>=0||1===o){i=(e>=0?5:-5)*(y+a);var x,b=50;do{y=(a=h(18,n(i)/5))-(o=l(a)),s=wr[o][1],c=wr[o+1][1],p=wr[h(19,o+2)][1],i-=(x=(e>=0?_:-_)*(c+y*(p-s)/2+y*y*(p-2*c+s)/2)-e)*M}while(n(x)>v&&--b>0);break}}while(--o>=0);var w=wr[o][0],T=wr[o+1][0],A=wr[h(19,o+2)][0];return[t/(T+y*(A-w)/2+y*y*(A-2*T+w)/2),i*S]};var kr=1e-4,Mr=-180,Sr=Mr+kr,Er=180-kr,Cr=-90+kr,Ir=90-kr;function Lr(t){return t.length>0}function Pr(t){return Math.floor(1e4*t)/1e4}function zr(t){return-90===t||90===t?[0,t]:[Mr,Pr(t)]}function Dr(t){var e=t[0],r=t[1],n=!1;return e<=Sr?(e=Mr,n=!0):e>=Er&&(e=180,n=!0),r<=Cr?(r=-90,n=!0):r>=Ir&&(r=90,n=!0),n?[e,r]:t}function Or(t){return t.map(Dr)}function Rr(t,e,r){for(var n=0,i=t.length;n=Er||u<=Cr||u>=Ir){a[o]=Dr(l);for(var h=o+1;hSr&&fCr&&d=s)break;r.push({index:-1,polygon:e,ring:a=a.slice(h-1)}),a[0]=zr(a[0][1]),o=-1,s=a.length}}}}function Fr(t){var e,r,n,i,a,o,s=t.length,l={},c={};for(e=0;e0?x-l:l)*M],u=e.geoProjection(t(s)).rotate(c),h=e.geoRotation(c),p=u.center;return delete u.rotate,u.center=function(t){return arguments.length?p(h(t)):h.invert(p())},u.clipAngle(90)}function Vr(t){var r=o(t);function n(t,n){var i=e.geoGnomonicRaw(t,n);return i[0]*=r,i}return n.invert=function(t,n){return e.geoGnomonicRaw.invert(t/r,n)},n}function qr(t,e){return Ur(Vr,t,e)}function Hr(t){if(!(t*=2))return e.geoAzimuthalEquidistantRaw;var r=-t/2,n=-r,i=t*t,s=g(n),l=.5/m(n);function c(e,a){var s=C(o(a)*o(e-r)),l=C(o(a)*o(e-n));return[((s*=s)-(l*=l))/(2*t),(a<0?-1:1)*I(4*i*l-(i-s+l)*(i-s+l))/(2*t)]}return c.invert=function(t,e){var i,c,u=e*e,h=o(I(u+(i=t+r)*i)),p=o(I(u+(i=t+n)*i));return[a(c=h-p,i=(h+p)*s),(e<0?-1:1)*C(I(i*i+c*c)*l)]},c}function Gr(t,e){return Ur(Hr,t,e)}function Wr(t,e){if(n(e)y&&--l>0);return[d(t)*(I(a*a+4)+a)*x/4,_*s]};var Jr=4*x+3*I(3),Qr=2*I(2*x*I(3)/Jr),tn=Z(Qr*I(3)/x,Qr,Jr/6);function en(t,e){return[t*I(1-3*e*e/(x*x)),e]}function rn(t,e){var r=o(e),n=o(t)*r,i=1-n,s=o(t=a(m(t)*r,-m(e))),l=m(t);return[l*(r=I(1-n*n))-s*i,-s*r-l*i]}function nn(t,e){var r=D(t,e);return[(r[0]+t/_)/2,(r[1]+e)/2]}en.invert=function(t,e){return[t/I(1-3*e*e/(x*x)),e]},rn.invert=function(t,e){var r=(t*t+e*e)/-2,n=I(-r*(2+r)),i=e*r+t*n,o=t*r-e*n,s=I(o*o+i*i);return[a(n*i,s*(1+r)),s?-E(n*o/s):0]},nn.invert=function(t,e){var r=t,i=e,a=25;do{var s,l=o(i),c=m(i),u=m(2*i),h=c*c,p=l*l,f=m(r),d=o(r/2),g=m(r/2),v=g*g,x=1-p*d*d,b=x?C(l*d)*I(s=1/x):s=0,w=.5*(2*b*l*g+r/_)-t,T=.5*(b*c+i)-e,A=.5*s*(p*v+b*l*d*h)+.5/_,k=s*(f*u/4-b*c*g),M=.125*s*(u*g-b*c*p*f),S=.5*s*(h*d+b*v*l)+.5,E=k*M-S*A,L=(T*k-w*S)/E,P=(w*M-T*A)/E;r-=L,i-=P}while((n(L)>y||n(P)>y)&&--a>0);return[r,i]},t.geoNaturalEarth=e.geoNaturalEarth1,t.geoNaturalEarthRaw=e.geoNaturalEarth1Raw,t.geoAiry=function(){var t=_,r=e.geoProjectionMutator(z),n=r(t);return n.radius=function(e){return arguments.length?r(t=e*S):t*M},n.scale(179.976).clipAngle(147)},t.geoAiryRaw=z,t.geoAitoff=function(){return e.geoProjection(D).scale(152.63)},t.geoAitoffRaw=D,t.geoArmadillo=function(){var t=20*S,r=t>=0?1:-1,n=g(r*t),i=e.geoProjectionMutator(O),s=i(t),l=s.stream;return s.parallel=function(e){return arguments.length?(n=g((r=(t=e*S)>=0?1:-1)*t),i(t)):t*M},s.stream=function(e){var i=s.rotate(),c=l(e),u=(s.rotate([0,0]),l(e)),h=s.precision();return s.rotate(i),c.sphere=function(){u.polygonStart(),u.lineStart();for(var e=-180*r;r*e<180;e+=90*r)u.point(e,90*r);if(t)for(;r*(e-=3*r*h)>=-180;)u.point(e,r*-a(o(e*S/2),n)*M);u.lineEnd(),u.polygonEnd()},c},s.scale(218.695).center([0,28.0974])},t.geoArmadilloRaw=O,t.geoAugust=function(){return e.geoProjection(R).scale(66.1603)},t.geoAugustRaw=R,t.geoBaker=function(){return e.geoProjection(j).scale(112.314)},t.geoBakerRaw=j,t.geoBerghaus=function(){var t=5,r=e.geoProjectionMutator(N),n=r(t),i=n.stream,s=.01,l=-o(s*S),c=m(s*S);return n.lobes=function(e){return arguments.length?r(t=+e):t},n.stream=function(e){var r=n.rotate(),u=i(e),h=(n.rotate([0,0]),i(e));return n.rotate(r),u.sphere=function(){h.polygonStart(),h.lineStart();for(var e=0,r=360/t,n=2*x/t,i=90-180/t,u=_;e=0;)t.point((e=r[i])[0],e[1]);t.lineEnd(),t.polygonEnd()},t},n.scale(79.4187).parallel(45).clipAngle(179.999)},t.geoHammerRetroazimuthalRaw=qt,t.geoHealpix=function(){var t=4,n=e.geoProjectionMutator(Zt),i=n(t),a=i.stream;return i.lobes=function(e){return arguments.length?n(t=+e):t},i.stream=function(n){var o=i.rotate(),s=a(n),l=(i.rotate([0,0]),a(n));return i.rotate(o),s.sphere=function(){e.geoStream(function(t){var e=[].concat(r.range(-180,180+t/2,t).map(Yt),r.range(180,-180-t/2,-t).map(Xt));return{type:"Polygon",coordinates:[180===t?e.map($t):e]}}(180/t),l)},s},i.scale(239.75)},t.geoHealpixRaw=Zt,t.geoHill=function(){var t=1,r=e.geoProjectionMutator(Kt),n=r(t);return n.ratio=function(e){return arguments.length?r(t=+e):t},n.scale(167.774).center([0,18.67])},t.geoHillRaw=Kt,t.geoHomolosine=function(){return e.geoProjection(ee).scale(152.63)},t.geoHomolosineRaw=ee,t.geoHufnagel=function(){var t=1,r=0,n=45*S,i=2,a=e.geoProjectionMutator(re),o=a(t,r,n,i);return o.a=function(e){return arguments.length?a(t=+e,r,n,i):t},o.b=function(e){return arguments.length?a(t,r=+e,n,i):r},o.psiMax=function(e){return arguments.length?a(t,r,n=+e*S,i):n*M},o.ratio=function(e){return arguments.length?a(t,r,n,i=+e):i},o.scale(180.739)},t.geoHufnagelRaw=re,t.geoHyperelliptical=function(){var t=0,r=2.5,n=1.183136,i=e.geoProjectionMutator(ae),a=i(t,r,n);return a.alpha=function(e){return arguments.length?i(t=+e,r,n):t},a.k=function(e){return arguments.length?i(t,r=+e,n):r},a.gamma=function(e){return arguments.length?i(t,r,n=+e):n},a.scale(152.63)},t.geoHyperellipticalRaw=ae,t.geoInterrupt=le,t.geoInterruptedBoggs=function(){return le(K,ce).scale(160.857)},t.geoInterruptedHomolosine=function(){return le(ee,ue).scale(152.63)},t.geoInterruptedMollweide=function(){return le(Y,he).scale(169.529)},t.geoInterruptedMollweideHemispheres=function(){return le(Y,pe).scale(169.529).rotate([20,0])},t.geoInterruptedSinuMollweide=function(){return le(te,fe,H).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoInterruptedSinusoidal=function(){return le(Q,de).scale(152.63).rotate([-20,0])},t.geoKavrayskiy7=function(){return e.geoProjection(me).scale(158.837)},t.geoKavrayskiy7Raw=me,t.geoLagrange=function(){var t=.5,r=e.geoProjectionMutator(ge),n=r(t);return n.spacing=function(e){return arguments.length?r(t=+e):t},n.scale(124.75)},t.geoLagrangeRaw=ge,t.geoLarrivee=function(){return e.geoProjection(ve).scale(97.2672)},t.geoLarriveeRaw=ve,t.geoLaskowski=function(){return e.geoProjection(xe).scale(139.98)},t.geoLaskowskiRaw=xe,t.geoLittrow=function(){return e.geoProjection(_e).scale(144.049).clipAngle(89.999)},t.geoLittrowRaw=_e,t.geoLoximuthal=function(){return J(be).parallel(40).scale(158.837)},t.geoLoximuthalRaw=be,t.geoMiller=function(){return e.geoProjection(we).scale(108.318)},t.geoMillerRaw=we,t.geoModifiedStereographic=Ce,t.geoModifiedStereographicRaw=Te,t.geoModifiedStereographicAlaska=function(){return Ce(Ae,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)},t.geoModifiedStereographicGs48=function(){return Ce(ke,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])},t.geoModifiedStereographicGs50=function(){return Ce(Me,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])},t.geoModifiedStereographicMiller=function(){return Ce(Se,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)},t.geoModifiedStereographicLee=function(){return Ce(Ee,[165,10]).scale(250).clipAngle(130).center([-165,-10])},t.geoMollweide=function(){return e.geoProjection(Y).scale(169.529)},t.geoMollweideRaw=Y,t.geoMtFlatPolarParabolic=function(){return e.geoProjection(Pe).scale(164.859)},t.geoMtFlatPolarParabolicRaw=Pe,t.geoMtFlatPolarQuartic=function(){return e.geoProjection(ze).scale(188.209)},t.geoMtFlatPolarQuarticRaw=ze,t.geoMtFlatPolarSinusoidal=function(){return e.geoProjection(De).scale(166.518)},t.geoMtFlatPolarSinusoidalRaw=De,t.geoNaturalEarth2=function(){return e.geoProjection(Oe).scale(175.295)},t.geoNaturalEarth2Raw=Oe,t.geoNellHammer=function(){return e.geoProjection(Re).scale(152.63)},t.geoNellHammerRaw=Re,t.geoInterruptedQuarticAuthalic=function(){return le(U(1/0),Fe).rotate([20,0]).scale(152.63)},t.geoNicolosi=function(){return e.geoProjection(Be).scale(127.267)},t.geoNicolosiRaw=Be,t.geoPatterson=function(){return e.geoProjection(Ze).scale(139.319)},t.geoPattersonRaw=Ze,t.geoPolyconic=function(){return e.geoProjection(Ye).scale(103.74)},t.geoPolyconicRaw=Ye,t.geoPolyhedral=Je,t.geoPolyhedralButterfly=function(t){t=t||function(t){var r=e.geoCentroid({type:"MultiPoint",coordinates:t});return e.geoGnomonic().scale(1).translate([0,0]).rotate([-r[0],-r[1]])};var r=nr.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Je(r[0],(function(t,e){return r[t<-x/2?e<0?6:4:t<0?e<0?2:0:t0?[-r[0],0]:[180-r[0],180])};var r=nr.map((function(e){return{face:e,project:t(e)}}));return[-1,0,0,1,0,1,4,5].forEach((function(t,e){var n=r[t];n&&(n.children||(n.children=[])).push(r[e])})),Je(r[0],(function(t,e){return r[t<-x/2?e<0?6:4:t<0?e<0?2:0:t2||a[0]!=e[0]||a[1]!=e[1])&&(n.push(a),e=a)}return 1===n.length&&t.length>1&&n.push(r(t[t.length-1])),n}function a(t){return t.map(i)}function o(t){if(null==t)return t;var e;switch(t.type){case"GeometryCollection":e={type:"GeometryCollection",geometries:t.geometries.map(o)};break;case"Point":e={type:"Point",coordinates:r(t.coordinates)};break;case"MultiPoint":e={type:t.type,coordinates:n(t.coordinates)};break;case"LineString":e={type:t.type,coordinates:i(t.coordinates)};break;case"MultiLineString":case"Polygon":e={type:t.type,coordinates:a(t.coordinates)};break;case"MultiPolygon":e={type:"MultiPolygon",coordinates:t.coordinates.map(a)};break;default:return t}return null!=t.bbox&&(e.bbox=t.bbox),e}function s(t){var e={type:"Feature",properties:t.properties,geometry:o(t.geometry)};return null!=t.id&&(e.id=t.id),null!=t.bbox&&(e.bbox=t.bbox),e}if(null!=t)switch(t.type){case"Feature":return s(t);case"FeatureCollection":var l={type:"FeatureCollection",features:t.features.map(s)};return null!=t.bbox&&(l.bbox=t.bbox),l;default:return o(t)}return t},t.geoQuincuncial=xr,t.geoRectangularPolyconic=function(){return J(br).scale(131.215)},t.geoRectangularPolyconicRaw=br,t.geoRobinson=function(){return e.geoProjection(Tr).scale(152.63)},t.geoRobinsonRaw=Tr,t.geoSatellite=function(){var t=2,r=0,n=e.geoProjectionMutator(Ar),i=n(t,r);return i.distance=function(e){return arguments.length?n(t=+e,r):t},i.tilt=function(e){return arguments.length?n(t,r=e*S):r*M},i.scale(432.147).clipAngle(C(1/t)*M-1e-6)},t.geoSatelliteRaw=Ar,t.geoSinuMollweide=function(){return e.geoProjection(te).rotate([-20,-55]).scale(164.263).center([0,-5.4036])},t.geoSinuMollweideRaw=te,t.geoSinusoidal=function(){return e.geoProjection(Q).scale(152.63)},t.geoSinusoidalRaw=Q,t.geoStitch=function(t){if(null==t)return t;switch(t.type){case"Feature":return Br(t);case"FeatureCollection":var e={type:"FeatureCollection",features:t.features.map(Br)};return null!=t.bbox&&(e.bbox=t.bbox),e;default:return jr(t)}},t.geoTimes=function(){return e.geoProjection(Nr).scale(146.153)},t.geoTimesRaw=Nr,t.geoTwoPointAzimuthal=qr,t.geoTwoPointAzimuthalRaw=Vr,t.geoTwoPointAzimuthalUsa=function(){return qr([-158,21.5],[-77,39]).clipAngle(60).scale(400)},t.geoTwoPointEquidistant=Gr,t.geoTwoPointEquidistantRaw=Hr,t.geoTwoPointEquidistantUsa=function(){return Gr([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)},t.geoVanDerGrinten=function(){return e.geoProjection(Wr).scale(79.4183)},t.geoVanDerGrintenRaw=Wr,t.geoVanDerGrinten2=function(){return e.geoProjection(Zr).scale(79.4183)},t.geoVanDerGrinten2Raw=Zr,t.geoVanDerGrinten3=function(){return e.geoProjection(Yr).scale(79.4183)},t.geoVanDerGrinten3Raw=Yr,t.geoVanDerGrinten4=function(){return e.geoProjection(Xr).scale(127.16)},t.geoVanDerGrinten4Raw=Xr,t.geoWagner=Kr,t.geoWagner7=function(){return Kr().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)},t.geoWagnerRaw=$r,t.geoWagner4=function(){return e.geoProjection(tn).scale(176.84)},t.geoWagner4Raw=tn,t.geoWagner6=function(){return e.geoProjection(en).scale(152.63)},t.geoWagner6Raw=en,t.geoWiechel=function(){return e.geoProjection(rn).rotate([0,-90,45]).scale(124.75).clipAngle(179.999)},t.geoWiechelRaw=rn,t.geoWinkel3=function(){return e.geoProjection(nn).scale(158.837)},t.geoWinkel3Raw=nn,Object.defineProperty(t,"__esModule",{value:!0})},"object"==typeof t&&typeof e<"u"?n(t,cg(),lg()):n(r.d3=r.d3||{},r.d3,r.d3)}}),hg=f({"src/plots/geo/zoom.js"(t,e){var r=x(),n=le(),i=qt(),a=Math.PI/180,o=180/Math.PI,s={cursor:"pointer"},l={cursor:"auto"};function c(t,e){return r.behavior.zoom().translate(e.translate()).scale(e.scale())}function u(t,e,r){var a=t.id,o=t.graphDiv,s=o.layout,l=s[a],c=o._fullLayout,u=c[a],h={},p={};function f(t,e){h[a+"."+t]=n.nestedProperty(l,t).get(),i.call("_storeDirectGUIEdit",s,c._preGUI,h);var r=n.nestedProperty(u,t);r.get()!==e&&(r.set(e),n.nestedProperty(l,t).set(e),p[a+"."+t]=e)}r(f),f("projection.scale",e.scale()/t.fitScale),f("fitbounds",!1),o.emit("plotly_relayout",p)}function h(t,e){var n=c(0,e);function i(r){var n=e.invert(t.midPt);r("center.lon",n[0]),r("center.lat",n[1])}return n.on("zoomstart",(function(){r.select(this).style(s)})).on("zoom",(function(){e.scale(r.event.scale).translate(r.event.translate),t.render(!0);var n=e.invert(t.midPt);t.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":e.scale()/t.fitScale,"geo.center.lon":n[0],"geo.center.lat":n[1]})})).on("zoomend",(function(){r.select(this).style(l),u(t,e,i)})),n}function p(t,e){var n,i,a,o,h,p,f,d,m,g=c(0,e);function y(t){return e.invert(t)}function v(r){var n=e.rotate(),i=e.invert(t.midPt);r("projection.rotation.lon",-n[0]),r("center.lon",i[0]),r("center.lat",i[1])}return g.on("zoomstart",(function(){r.select(this).style(s),n=r.mouse(this),i=e.rotate(),a=e.translate(),o=i,h=y(n)})).on("zoom",(function(){if(p=r.mouse(this),function(t){var r=y(t);if(!r)return!0;var n=e(r);return Math.abs(n[0]-t[0])>2||Math.abs(n[1]-t[1])>2}(n))return g.scale(e.scale()),void g.translate(e.translate());e.scale(r.event.scale),e.translate([a[0],r.event.translate[1]]),h?y(p)&&(d=y(p),f=[o[0]+(d[0]-h[0]),i[1],i[2]],e.rotate(f),o=f):h=y(n=p),m=!0,t.render(!0);var s=e.rotate(),l=e.invert(t.midPt);t.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":e.scale()/t.fitScale,"geo.center.lon":l[0],"geo.center.lat":l[1],"geo.projection.rotation.lon":-s[0]})})).on("zoomend",(function(){r.select(this).style(l),m&&u(t,e,v)})),g}function f(t,e){var n,i={r:e.rotate(),k:e.scale()},h=c(0,e),p=function(t){for(var e=0,n=arguments.length,i=[];++ed?(a=(h>0?90:-90)-f,i=0):(a=Math.asin(h/d)*o-f,i=Math.sqrt(d*d-h*h));var g=180-a-2*f,v=(Math.atan2(p,u)-Math.atan2(c,i))*o,x=(Math.atan2(p,u)-Math.atan2(c,-i))*o;return m(r[0],r[1],a,v)<=m(r[0],r[1],g,x)?[a,v,r[2]]:[g,x,r[2]]}(f,n,c);(!isFinite(g[0])||!isFinite(g[1])||!isFinite(g[2]))&&(g=c),e.rotate(g),c=g}}else n=d(e,t=a);!function(t){t({type:"zoom"})}(p.of(this,arguments))})),function(t){f++||t({type:"zoomstart"})}(p.of(this,arguments))})).on("zoomend",(function(){var n;r.select(this).style(l),g.call(h,"zoom",null),n=p.of(this,arguments),--f||n({type:"zoomend"}),u(t,e,x)})).on("zoom.redraw",(function(){t.render(!0);var r=e.rotate();t.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":e.scale()/t.fitScale,"geo.projection.rotation.lon":-r[0],"geo.projection.rotation.lat":-r[1]})})),r.rebind(h,p,"on")}function d(t,e){var r=t.invert(e);return r&&isFinite(r[0])&&isFinite(r[1])&&function(t){var e=t[0]*a,r=t[1]*a,n=Math.cos(r);return[n*Math.cos(e),n*Math.sin(e),Math.sin(r)]}(r)}function m(t,e,r,n){var i=g(r-t),a=g(n-e);return Math.sqrt(i*i+a*a)}function g(t){return(t%360+540)%360-180}function y(t,e,r){var n=r*a,i=t.slice(),o=0===e?1:0,s=2===e?1:2,l=Math.cos(n),c=Math.sin(n);return i[o]=t[o]*l-t[s]*c,i[s]=t[s]*l+t[o]*c,i}function v(t,e){for(var r=0,n=0,i=t.length;n0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}e.exports=function(t){return new M(t)},S.plot=function(t,e,r,n){var i=this;if(n)return i.update(t,e,!0);i._geoCalcData=t,i._fullLayout=e;var a=e[this.id],o=[],s=!1;for(var l in w.layerNameToAdjective)if("frame"!==l&&a["show"+l]){s=!0;break}for(var c=!1,u=0;u0&&o._module.calcGeoJSON(a,e)}if(!r){if(this.updateProjection(t,e))return;(!this.viewInitial||this.scope!==n.scope)&&this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(e,n),this.updateDims(e,n),this.updateFx(e,n),f.generalUpdatePerTraceModule(this.graphDiv,this,t,n);var s=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=s.selectAll(".point"),this.dataPoints.text=s.selectAll("text"),this.dataPaths.line=s.selectAll(".js-line");var l=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=l.selectAll("path"),this._render()},S.updateProjection=function(t,e){var r=this.graphDiv,s=e[this.id],c=e._size,u=s.domain,h=s.projection,p=s.lonaxis,f=s.lataxis,d=p._ax,g=f._ax,y=this.projection=function(t){var e=t.projection,r=e.type,s=w.projNames[r];s="geo"+l.titleCase(s);for(var c=(n[s]||o[s])(),u=t._isSatellite?180*Math.acos(1/e.distance)/Math.PI:t._isClipped?w.lonaxisSpan[r]/2:null,h=["center","rotate","parallels","clipExtent"],p=function(t){return t?c:[]},f=0;fu*Math.PI/180}return!1},c.getPath=function(){return i().projection(c)},c.getBounds=function(t){return c.getPath().bounds(t)},c.precision(w.precision),t._isSatellite&&c.tilt(e.tilt).distance(e.distance),u&&c.clipAngle(u-w.clipPad),c}(s),v=[[c.l+c.w*u.x[0],c.t+c.h*(1-u.y[1])],[c.l+c.w*u.x[1],c.t+c.h*(1-u.y[0])]],x=s.center||{},_=h.rotation||{},b=p.range||[],T=f.range||[];if(s.fitbounds){d._length=v[1][0]-v[0][0],g._length=v[1][1]-v[0][1],d.range=m(r,d),g.range=m(r,g);var A=(d.range[0]+d.range[1])/2,k=(g.range[0]+g.range[1])/2;if(s._isScoped)x={lon:A,lat:k};else if(s._isClipped){x={lon:A,lat:k},_={lon:A,lat:k,roll:_.roll};var M=h.type,S=w.lonaxisSpan[M]/2||180,C=w.lataxisSpan[M]/2||90;b=[A-S,A+S],T=[k-C,k+C]}else x={lon:A,lat:k},_={lon:A,lat:_.lat,roll:_.roll}}y.center([x.lon-_.lon,x.lat-_.lat]).rotate([-_.lon,-_.lat,_.roll]).parallels(h.parallels);var I=E(b,T);y.fitExtent(v,I);var L=this.bounds=y.getBounds(I),P=this.fitScale=y.scale(),z=y.translate();if(s.fitbounds){var D=y.getBounds(E(d.range,g.range)),O=Math.min((L[1][0]-L[0][0])/(D[1][0]-D[0][0]),(L[1][1]-L[0][1])/(D[1][1]-D[0][1]));isFinite(O)?y.scale(O*P):l.warn("Something went wrong during"+this.id+"fitbounds computations.")}else y.scale(h.scale*P);var R=this.midPt=[(L[0][0]+L[1][0])/2,(L[0][1]+L[1][1])/2];if(y.translate([z[0]+(R[0]-z[0]),z[1]+(R[1]-z[1])]).clipExtent(L),s._isAlbersUsa){var F=y([x.lon,x.lat]),B=y.translate();y.translate([B[0]-(F[0]-B[0]),B[1]-(F[1]-B[1])])}},S.updateBaseLayers=function(t,e){var n=this,i=n.topojson,a=n.layers,o=n.basePaths;function s(t){return"lonaxis"===t||"lataxis"===t}function l(t){return!!w.lineLayers[t]}function c(t){return!!w.fillLayers[t]}var p=(this.hasChoropleth?w.layersForChoropleth:w.layers).filter((function(t){return l(t)||c(t)?e["show"+t]:!s(t)||e[t].showgrid})),f=n.framework.selectAll(".layer").data(p,String);f.exit().each((function(t){delete a[t],delete o[t],r.select(this).remove()})),f.enter().append("g").attr("class",(function(t){return"layer "+t})).each((function(t){var e=a[t]=r.select(this);"bg"===t?n.bgRect=e.append("rect").style("pointer-events","all"):s(t)?o[t]=e.append("path").style("fill","none"):"backplot"===t?e.append("g").classed("choroplethlayer",!0):"frontplot"===t?e.append("g").classed("scatterlayer",!0):l(t)?o[t]=e.append("path").style("fill","none").style("stroke-miterlimit",2):c(t)&&(o[t]=e.append("path").style("stroke","none"))})),f.order(),f.each((function(r){var n=o[r],a=w.layerNameToAdjective[r];"frame"===r?n.datum(w.sphereSVG):l(r)||c(r)?n.datum(k(i,i.objects[r])):s(r)&&n.datum(function(t,e,r){var n,i,a,o=e[t],s=w.scopeDefaults[e.scope];"lonaxis"===t?(n=s.lonaxisRange,i=s.lataxisRange,a=function(t,e){return[t,e]}):"lataxis"===t&&(n=s.lataxisRange,i=s.lonaxisRange,a=function(t,e){return[e,t]});var l={type:"linear",range:[n[0],n[1]-1e-6],tick0:o.tick0,dtick:o.dtick};d.setConvert(l,r);var c=d.calcTicks(l);!e.isScoped&&"lonaxis"===t&&c.pop();for(var u=c.length,h=new Array(u),p=0;p-1&&_(r.event,i,[n.xaxis],[n.yaxis],n.id,u),c.indexOf("event")>-1&&p.click(i,r.event))}))}function h(t){return n.projection.invert([t[0]+n.xaxis._offset,t[1]+n.yaxis._offset])}},S.makeFramework=function(){var t=this,e=t.graphDiv,n=e._fullLayout,i="clip"+n._uid+t.id;t.clipDef=n._clips.append("clipPath").attr("id",i),t.clipRect=t.clipDef.append("rect"),t.framework=r.select(t.container).append("g").attr("class","geo "+t.id).call(h.setClipUrl,i,e),t.project=function(e){var r=t.projection(e);return r?[r[0]-t.xaxis._offset,r[1]-t.yaxis._offset]:[null,null]},t.xaxis={_id:"x",c2p:function(e){return t.project(e)[0]}},t.yaxis={_id:"y",c2p:function(e){return t.project(e)[1]}},t.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},d.setConvert(t.mockAxis,n)},S.saveViewInitial=function(t){var e,r=t.center||{},n=t.projection,i=n.rotation||{};this.viewInitial={fitbounds:t.fitbounds,"projection.scale":n.scale},e=t._isScoped?{"center.lon":r.lon,"center.lat":r.lat}:t._isClipped?{"projection.rotation.lon":i.lon,"projection.rotation.lat":i.lat}:{"center.lon":r.lon,"center.lat":r.lat,"projection.rotation.lon":i.lon},l.extendFlat(this.viewInitial,e)},S.render=function(t){this._hasMarkerAngles&&t?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()},S._render=function(){var t,e=this.projection,r=e.getPath();function n(t){var r=e(t.lonlat);return r?c(r[0],r[1]):null}function i(t){return e.isLonLatOverEdges(t.lonlat)?"none":null}for(t in this.basePaths)this.basePaths[t].attr("d",r);for(t in this.dataPaths)this.dataPaths[t].attr("d",(function(t){return r(t.geojson)}));for(t in this.dataPoints)this.dataPoints[t].attr("display",i).attr("transform",n)}}}),fg=f({"src/plots/geo/layout_attributes.js"(t,e){var r=q(),n=Aa().attributes,i=zt().dash,a=Wm(),o=Pt().overrideAll,s=Zt(),l={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:r.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:i};(e.exports=o({domain:n({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:s(a.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:s(a.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:r.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:a.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:a.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:a.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:a.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:r.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:r.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:r.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:r.background},lonaxis:l,lataxis:l},"plot","from-root")).uirevision={valType:"any",editType:"none"}}}),dg=f({"src/plots/geo/layout_defaults.js"(t,e){var r=le(),n=Hs(),i=we().getSubplotData,a=Wm(),o=fg(),s=a.axesNames;function l(t,e,n,o){var l=i(o.fullData,"geo",o.id).map((function(t){return t.index})),c=n("resolution"),u=n("scope"),h=a.scopeDefaults[u],p=n("projection.type",h.projType),f=e._isAlbersUsa="albers usa"===p;f&&(u=e.scope="usa");var d=e._isScoped="world"!==u,m=e._isSatellite="satellite"===p,g=e._isConic=-1!==p.indexOf("conic")||"albers"===p,y=e._isClipped=!!a.lonaxisSpan[p];if(!1===t.visible){var v=r.extendDeep({},e._template);v.showcoastlines=!1,v.showcountries=!1,v.showframe=!1,v.showlakes=!1,v.showland=!1,v.showocean=!1,v.showrivers=!1,v.showsubunits=!1,v.lonaxis&&(v.lonaxis.showgrid=!1),v.lataxis&&(v.lataxis.showgrid=!1),e._template=v}for(var x=n("visible"),_=0;_0&&L<0&&(L+=360);var P,z,D,O=(I+L)/2;if(!f){var R=d?h.projRotate:[O,0,0];P=n("projection.rotation.lon",R[0]),n("projection.rotation.lat",R[1]),n("projection.rotation.roll",R[2]),n("showcoastlines",!d&&x)&&(n("coastlinecolor"),n("coastlinewidth")),n("showocean",!!x&&void 0)&&n("oceancolor")}f?(z=-96.6,D=38.7):(z=d?O:P,D=(C[0]+C[1])/2),n("center.lon",z),n("center.lat",D),m&&(n("projection.tilt"),n("projection.distance")),g&&n("projection.parallels",h.projParallels||[0,60]),n("projection.scale"),n("showland",!!x&&void 0)&&n("landcolor"),n("showlakes",!!x&&void 0)&&n("lakecolor"),n("showrivers",!!x&&void 0)&&(n("rivercolor"),n("riverwidth")),n("showcountries",d&&"usa"!==u&&x)&&(n("countrycolor"),n("countrywidth")),("usa"===u||"north america"===u&&50===c)&&(n("showsubunits",x),n("subunitcolor"),n("subunitwidth")),d||n("showframe",x)&&(n("framecolor"),n("framewidth")),n("bgcolor"),n("fitbounds")&&(delete e.projection.scale,d?(delete e.center.lon,delete e.center.lat):y?(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon,delete e.projection.rotation.lat,delete e.lonaxis.range,delete e.lataxis.range):(delete e.center.lon,delete e.center.lat,delete e.projection.rotation.lon))}e.exports=function(t,e,r){n(t,e,r,{type:"geo",attributes:o,handleDefaults:l,fullData:r,partition:"y"})}}}),mg=f({"src/plots/geo/index.js"(t,e){var r=we().getSubplotCalcData,n=le().counterRegex,i=pg(),a="geo",o=n(a),s={};s[a]={valType:"subplotid",dflt:a,editType:"calc"},e.exports={attr:a,name:a,idRoot:a,idRegex:o,attrRegex:o,attributes:s,layoutAttributes:fg(),supplyLayoutDefaults:dg(),plot:function(t){for(var e=t._fullLayout,n=t.calcdata,o=e._subplots[a],s=0;s")}}(t,h,o),[t]}}}),Ag=f({"src/traces/choropleth/event_data.js"(t,e){e.exports=function(t,e,r,n,i){t.location=e.location,t.z=e.z;var a=n[i];return a.fIn&&a.fIn.properties&&(t.properties=a.fIn.properties),t.ct=a.ct,t}}}),kg=f({"src/traces/choropleth/select.js"(t,e){e.exports=function(t,e){var r,n,i,a,o,s=t.cd,l=t.xaxis,c=t.yaxis,u=[];if(!1===e)for(r=0;r=Math.min(P,z)&&f<=Math.max(P,z)?0:1/0}if(k=Math.min(D,O)&&d<=Math.max(D,O)?0:1/0}E=Math.sqrt(k*k+M*M),b=i[A]}}}else for(A=i.length-1;A>-1;A--)w=h[_=i[A]],T=p[_],k=c.c2p(w)-f,M=u.c2p(T)-d,(S=Math.sqrt(k*k+M*M))100},t.isDotSymbol=function(t){return"string"==typeof t?e.DOT_RE.test(t):t>200}}}),Pg=f({"src/traces/scattergl/defaults.js"(t,e){var r=le(),n=qt(),i=Lg(),a=Ig(),o=bn(),s=Ye(),l=Hn(),c=Gn(),u=Zn(),h=Yn(),p=Kn(),f=$n();e.exports=function(t,e,d,m){function g(n,i){return r.coerce(t,e,a,n,i)}var y=!!t.marker&&i.isOpenSymbol(t.marker.symbol),v=s.isBubble(t),x=l(t,e,m,g);if(x){c(t,e,m,g),g("xhoverformat"),g("yhoverformat");var _=x>>1,s=t[o];(void 0!==r?r(s,e):s-e)>=0?(a=o,i=o-1):n=o+1}return a}function n(t,e,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)>0?(a=o,i=o-1):n=o+1}return a}function i(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<0?(a=o,n=o+1):i=o-1}return a}function a(t,e,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=t[o];(void 0!==r?r(s,e):s-e)<=0?(a=o,n=o+1):i=o-1}return a}function o(t,e,r,n,i){for(;n<=i;){var a=n+i>>>1,o=t[a],s=void 0!==r?r(o,e):o-e;if(0===s)return a;s<=0?n=a+1:i=a-1}return-1}function s(t,e,r,n,i,a){return"function"==typeof r?a(t,e,r,void 0===n?0:0|n,void 0===i?t.length-1:0|i):a(t,e,void 0,void 0===r?0:0|r,void 0===n?t.length-1:0|n)}e.exports={ge:function(t,e,n,i,a){return s(t,e,n,i,a,r)},gt:function(t,e,r,i,a){return s(t,e,r,i,a,n)},lt:function(t,e,r,n,a){return s(t,e,r,n,a,i)},le:function(t,e,r,n,i){return s(t,e,r,n,i,a)},eq:function(t,e,r,n,i){return s(t,e,r,n,i,o)}}}}),Og=f({"node_modules/pick-by-alias/index.js"(t,e){e.exports=function(t,e,r){var i,a,o={};if("string"==typeof e&&(e=n(e)),Array.isArray(e)){var s={};for(a=0;a1&&(t=arguments),"string"==typeof t?t=t.split(/\s/).map(parseFloat):"number"==typeof t&&(t=[t]),t.length&&"number"==typeof t[0]?e=1===t.length?{width:t[0],height:t[0],x:0,y:0}:2===t.length?{width:t[0],height:t[1],x:0,y:0}:{x:t[0],y:t[1],width:t[2]-t[0]||0,height:t[3]-t[1]||0}:t&&(e={x:(t=r(t,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"})).left||0,y:t.top||0},null==t.width?t.right?e.width=t.right-e.x:e.width=0:e.width=t.width,null==t.height?t.bottom?e.height=t.bottom-e.y:e.height=0:e.height=t.height),e}}}),Fg=f({"node_modules/array-bounds/index.js"(t,e){e.exports=function(t,e){if(!t||null==t.length)throw Error("Argument should be an array");e=null==e?1:Math.floor(e);for(var r=Array(2*e),n=0;ni&&(i=t[o]),t[o]>>1;e.dtype||(e.dtype="array"),"string"==typeof e.dtype?d=new(u(e.dtype))(g):e.dtype&&(d=e.dtype,Array.isArray(d)&&(d.length=g));for(let t=0;tn||s>1073741824){for(let t=0;tr+i||b>n+i||T=k||o===s)return;let c=y[a];void 0===s&&(s=c.length);for(let e=o;e=l&&n<=d&&i>=u&&i<=m&&M.push(r)}let h=v[a],p=h[4*o+0],f=h[4*o+1],x=h[4*o+2],_=h[4*o+3],w=function(t,e){let r=null,n=0;for(;null===r;)if(r=t[4*e+n],n++,n>t.length)return null;return r}(h,o+1),S=.5*i,E=a+1;e(r,n,S,E,p,f||x||_||w),e(r,n+S,S,E,f,x||_||w),e(r+S,n,S,E,x,_||w),e(r+S,n+S,S,E,_,w)}(0,0,1,0,0,1),M},d;function w(t,e,r){let n=1,i=.5,a=.5,o=.5;for(let s=0;s1&&(i=1),i<-1&&(i=-1),(t*n-e*r<0?-1:1)*Math.acos(i)};t.default=function(t){var e=t.px,o=t.py,s=t.cx,l=t.cy,c=t.rx,u=t.ry,h=t.xAxisRotation,p=void 0===h?0:h,f=t.largeArcFlag,d=void 0===f?0:f,m=t.sweepFlag,g=void 0===m?0:m,y=[];if(0===c||0===u)return[];var v=Math.sin(p*r/360),x=Math.cos(p*r/360),_=x*(e-s)/2+v*(o-l)/2,b=-v*(e-s)/2+x*(o-l)/2;if(0===_&&0===b)return[];c=Math.abs(c),u=Math.abs(u);var w=Math.pow(_,2)/Math.pow(c,2)+Math.pow(b,2)/Math.pow(u,2);w>1&&(c*=Math.sqrt(w),u*=Math.sqrt(w));var T=function(t,e,n,i,o,s,l,c,u,h,p,f){var d=Math.pow(o,2),m=Math.pow(s,2),g=Math.pow(p,2),y=Math.pow(f,2),v=d*m-d*y-m*g;v<0&&(v=0),v/=d*y+m*g;var x=(v=Math.sqrt(v)*(l===c?-1:1))*o/s*f,_=v*-s/o*p,b=h*x-u*_+(t+n)/2,w=u*x+h*_+(e+i)/2,T=(p-x)/o,A=(f-_)/s,k=(-p-x)/o,M=(-f-_)/s,S=a(1,0,T,A),E=a(T,A,k,M);return 0===c&&E>0&&(E-=r),1===c&&E<0&&(E+=r),[b,w,S,E]}(e,o,s,l,c,u,d,g,v,x,_,b),A=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!e||r.length!==e);n=!0);}catch(t){i=!0,a=t}finally{try{!n&&s.return&&s.return()}finally{if(i)throw a}}return r}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}(T,4),k=A[0],M=A[1],S=A[2],E=A[3],C=Math.abs(E)/(r/4);Math.abs(1-C)<1e-7&&(C=1);var I=Math.max(Math.ceil(C),1);E/=I;for(var L=0;L4?(o=g[g.length-4],s=g[g.length-3]):(o=p,s=f),a.push(g)}return a};var r=Gg();function n(t,e,r,n){return["C",t,e,r,n,r,n]}function i(t,e,r,n,i,a){return["C",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}}}),Zg=f({"node_modules/is-svg-path/index.js"(t,e){e.exports=function(t){return"string"==typeof t&&(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}}}),Yg=f({"node_modules/svg-path-bounds/index.js"(t,e){var r=Ke(),n=Hg(),i=Wg(),a=Zg(),o=nu();e.exports=function(t){if(Array.isArray(t)&&1===t.length&&"string"==typeof t[0]&&(t=t[0]),"string"==typeof t&&(o(a(t),"String is not an SVG path."),t=r(t)),o(Array.isArray(t),"Argument should be a string or an array of path segments."),t=n(t),!(t=i(t)).length)return[0,0,0,0];for(var e=[1/0,1/0,-1/0,-1/0],s=0,l=t.length;se[2]&&(e[2]=c[u+0]),c[u+1]>e[3]&&(e[3]=c[u+1]);return e}}}),Xg=f({"node_modules/normalize-svg-path/index.js"(t,e){var r=Math.PI,n=l(120);function i(t,e,r,n){return["C",t,e,r,n,r,n]}function a(t,e,r,n,i,a){return["C",t/3+2/3*r,e/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function o(t,e,i,a,l,c,u,h,p,f){if(f)T=f[0],A=f[1],b=f[2],w=f[3];else{var d=s(t,e,-l);t=d.x,e=d.y;var m=(t-(h=(d=s(h,p,-l)).x))/2,g=(e-(p=d.y))/2,y=m*m/(i*i)+g*g/(a*a);y>1&&(i*=y=Math.sqrt(y),a*=y);var v=i*i,x=a*a,_=(c==u?-1:1)*Math.sqrt(Math.abs((v*x-v*g*g-x*m*m)/(v*g*g+x*m*m)));_==1/0&&(_=1);var b=_*i*g/a+(t+h)/2,w=_*-a*m/i+(e+p)/2,T=Math.asin(((e-w)/a).toFixed(9)),A=Math.asin(((p-w)/a).toFixed(9));(T=tA&&(T-=2*r),!u&&A>T&&(A-=2*r)}if(Math.abs(A-T)>n){var k=A,M=h,S=p;A=T+n*(u&&A>T?1:-1);var E=o(h=b+i*Math.cos(A),p=w+a*Math.sin(A),i,a,l,0,u,M,S,[A,k,b,w])}var C=Math.tan((A-T)/4),I=4/3*i*C,L=4/3*a*C,P=[2*t-(t+I*Math.sin(T)),2*e-(e-L*Math.cos(T)),h+I*Math.sin(A),p-L*Math.cos(A),h,p];if(f)return P;E&&(P=P.concat(E));for(var z=0;z7&&(r.push(y.splice(0,7)),y.unshift("C"));break;case"S":var x=f,_=d;("C"==e||"S"==e)&&(x+=x-n,_+=_-s),y=["C",x,_,y[1],y[2],y[3],y[4]];break;case"T":"Q"==e||"T"==e?(h=2*f-h,p=2*d-p):(h=f,p=d),y=a(f,d,h,p,y[1],y[2]);break;case"Q":h=y[1],p=y[2],y=a(f,d,y[1],y[2],y[3],y[4]);break;case"L":y=i(f,d,y[1],y[2]);break;case"H":y=i(f,d,y[1],d);break;case"V":y=i(f,d,f,y[1]);break;case"Z":y=i(f,d,c,u)}e=v,f=y[y.length-2],d=y[y.length-1],y.length>4?(n=y[y.length-4],s=y[y.length-3]):(n=f,s=d),r.push(y)}return r}}}),$g=f({"node_modules/draw-svg-path/index.js"(t,e){var r=Hg(),n=Xg(),i={M:"moveTo",C:"bezierCurveTo"};e.exports=function(t,e){t.beginPath(),n(r(e)).forEach((function(e){var r=e[0],n=e.slice(1);t[i[r]].apply(t,n)})),t.closePath()}}}),Kg=f({"node_modules/bitmap-sdf/index.js"(t,e){var r=zd();e.exports=function(t,e){e||(e={});var a,o,s,l,c,u,h,p,f,d,m,g=null==e.cutoff?.25:e.cutoff,y=null==e.radius?8:e.radius,v=e.channel||0;if(ArrayBuffer.isView(t)||Array.isArray(t)){if(!e.width||!e.height)throw Error("For raw data width and height should be provided by options");a=e.width,o=e.height,l=t,u=e.stride?e.stride:Math.floor(t.length/a/o)}else window.HTMLCanvasElement&&t instanceof window.HTMLCanvasElement?(h=(p=t).getContext("2d"),a=p.width,o=p.height,l=(f=h.getImageData(0,0,a,o)).data,u=4):window.CanvasRenderingContext2D&&t instanceof window.CanvasRenderingContext2D?(h=t,a=(p=t.canvas).width,o=p.height,l=(f=h.getImageData(0,0,a,o)).data,u=4):window.ImageData&&t instanceof window.ImageData&&(f=t,a=t.width,o=t.height,l=f.data,u=4);if(s=Math.max(a,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(c=l,l=Array(a*o),d=0,m=c.length;d0?"white":"black",c.lineWidth=Math.abs(f)),c.translate(.5*u,.5*h),c.scale(g,g),function(){if(null!=r)return r;var t=document.createElement("canvas").getContext("2d");if(t.canvas.width=t.canvas.height=1,!window.Path2D)return r=!1;var e=new Path2D("M0,0h1v1h-1v-1Z");t.fillStyle="black",t.fill(e);var n=t.getImageData(0,0,1,1);return r=n&&n.data&&255===n.data[3]}()){var y=new Path2D(t);c.fill(y),f&&c.stroke(y)}else{var v=i(t);a(c,v),c.fill(),f&&c.stroke()}return c.setTransform(1,0,0,1,0,0),s(c,{cutoff:null!=e.cutoff?e.cutoff:.5,radius:null!=e.radius?e.radius:.5*p})}}}),Qg=f({"src/traces/scattergl/convert.js"(t,e){var r=A(),n=Jg(),i=Od(),a=qt(),o=le(),s=o.isArrayOrTypedArray,l=Qe(),c=xe(),u=Fd().formatColor,h=Ye(),p=Xe(),f=Lg(),d=Cg(),m=G().DESELECTDIM,g={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},y=$e().appendArrayPointValue;function v(t,e){var n,i=t._fullLayout,a=e._length,l=e.textfont,c=e.textposition,u=s(c)?c:[c],h=l.color,p=l.size,f=l.family,d=l.weight,m=l.style,g=l.variant,v={},_=t._context.plotGlPixelRatio,b=e.texttemplate;if(b){v.text=[];var w=i._d3locale,T=Array.isArray(b),A=T?Math.min(b.length,a):a,k=T?function(t){return b[t]}:function(){return b};for(n=0;n500?"bold":"normal":t}function _(t,e){var r,n,a=e._length,o=e.marker,l={},c=s(o.symbol),h=s(o.angle),d=s(o.color),m=s(o.line.color),g=s(o.opacity),y=s(o.size),v=s(o.line.width);if(c||(n=f.isOpenSymbol(o.symbol)),c||d||m||g||h){l.symbols=new Array(a),l.angles=new Array(a),l.colors=new Array(a),l.borderColors=new Array(a);var x=o.symbol,_=o.angle,b=u(o,o.opacity,a),w=u(o.line,o.opacity,a);if(!s(w[0])){var T=w;for(w=Array(a),r=0;rd.TOO_MANY_POINTS||h.hasMarkers(e)?"rect":"round";if(c&&e.connectgaps){var p=n[0],f=n[1];for(i=0;i1?c[i]:c[0]:c,m=s(u)?u.length>1?u[i]:u[0]:u,y=g[d],v=g[m],x=p?p/.8+1:0,_=-v*x-.5*v;o.offset[i]=[y*x/f,_/f]}}return o}}}}),ty=f({"src/traces/scattergl/scene_update.js"(t,e){var r=le();e.exports=function(t,e){var n=e._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return e._scene||((n=e._scene={}).init=function(){r.extendFlat(n,a,i)},n.init(),n.update=function(t){var e=r.repeat(t,n.count);if(n.fill2d&&n.fill2d.update(e),n.scatter2d&&n.scatter2d.update(e),n.line2d&&n.line2d.update(e),n.error2d&&n.error2d.update(e.concat(e)),n.select2d&&n.select2d.update(e),n.glText)for(var i=0;i=m,w=2*_,T={},A=y.makeCalcdata(e,"x"),k=v.makeCalcdata(e,"y"),M=o(e,y,"x",A),S=o(e,v,"y",k),E=M.vals,C=S.vals;e._x=E,e._y=C,e.xperiodalignment&&(e._origX=A,e._xStarts=M.starts,e._xEnds=M.ends),e.yperiodalignment&&(e._origY=k,e._yStarts=S.starts,e._yEnds=S.ends);var I=new Array(w),L=new Array(_);for(a=0;a<_;a++)I[2*a]=E[a]===d?NaN:E[a],I[2*a+1]=C[a]===d?NaN:C[a],L[a]=a;if("log"===y.type)for(a=0;a1&&n.extendFlat(s.line,p.linePositions(t,r,i)),s.errorX||s.errorY){var l=p.errorBarPositions(t,r,i,a,o);s.errorX&&n.extendFlat(s.errorX,l.x),s.errorY&&n.extendFlat(s.errorY,l.y)}return s.text&&(n.extendFlat(s.text,{positions:i},p.textPosition(t,r,s.text,s.marker)),n.extendFlat(s.textSel,{positions:i},p.textPosition(t,r,s.text,s.markerSel)),n.extendFlat(s.textUnsel,{positions:i},p.textPosition(t,r,s.text,s.markerUnsel))),s}(t,0,e,I,E,C),D=f(t,x);return u(s,e),b?z.marker&&(P=z.marker.sizeAvg||Math.max(z.marker.size,3)):P=l(e,_),c(t,e,y,v,E,C,P),z.errorX&&g(e,y,z.errorX),z.errorY&&g(e,v,z.errorY),z.fill&&!D.fill2d&&(D.fill2d=!0),z.marker&&!D.scatter2d&&(D.scatter2d=!0),z.line&&!D.line2d&&(D.line2d=!0),(z.errorX||z.errorY)&&!D.error2d&&(D.error2d=!0),z.text&&!D.glText&&(D.glText=!0),z.marker&&(z.marker.snap=_),D.lineOptions.push(z.line),D.errorXOptions.push(z.errorX),D.errorYOptions.push(z.errorY),D.fillOptions.push(z.fill),D.markerOptions.push(z.marker),D.markerSelectedOptions.push(z.markerSel),D.markerUnselectedOptions.push(z.markerUnsel),D.textOptions.push(z.text),D.textSelectedOptions.push(z.textSel),D.textUnselectedOptions.push(z.textUnsel),D.selectBatch.push([]),D.unselectBatch.push([]),T._scene=D,T.index=D.count,T.x=E,T.y=C,T.positions=I,D.count++,[{x:!1,y:!1,t:T,trace:e}]}}}),ry=f({"src/traces/scattergl/edit_style.js"(t,e){var r=le(),n=H(),i=G().DESELECTDIM;e.exports={styleTextSelection:function(t){var e,a,o=t[0],s=o.trace,l=o.t,c=l._scene,u=l.index,h=c.selectBatch[u],p=c.unselectBatch[u],f=c.textOptions[u],d=c.textSelectedOptions[u]||{},m=c.textUnselectedOptions[u]||{},g=r.extendFlat({},f);if(h.length||p.length){var y=d.color,v=m.color,x=f.color,_=r.isArrayOrTypedArray(x);for(g.color=new Array(s._length),e=0;e>>24,n=(16711680&t)>>>16,i=(65280&t)>>>8,a=255&t;return!1===e?[r,n,i,a]:[r/255,n/255,i/255,a/255]}}}),oy=f({"node_modules/object-assign/index.js"(t,e){var r=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(t){n[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch{return!1}}()?Object.assign:function(t,e){for(var a,o,s=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),l=1;lt.length)&&(e=t.length);for(var r=0,n=new Array(e);r 1.0 + delta) {\n\t\tdiscard;\n\t}\n\n\talpha -= smoothstep(1.0 - delta, 1.0 + delta, radius);\n\n\tfloat borderRadius = fragBorderRadius;\n\tfloat ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius);\n\tvec4 color = mix(fragColor, fragBorderColor, ratio);\n\tcolor.a *= alpha * opacity;\n\tgl_FragColor = color;\n}\n"]),c.vert=h(["precision highp float;\n#define GLSLIFY 1\n\nattribute float x, y, xFract, yFract;\nattribute float size, borderSize;\nattribute vec4 colorId, borderColorId;\nattribute float isActive;\n\n// `invariant` effectively turns off optimizations for the position.\n// We need this because -fast-math on M1 Macs is re-ordering\n// floating point operations in a way that causes floating point\n// precision limits to put points in the wrong locations.\ninvariant gl_Position;\n\nuniform bool constPointSize;\nuniform float pixelRatio;\nuniform vec2 paletteSize, scale, scaleFract, translate, translateFract;\nuniform sampler2D paletteTexture;\n\nconst float maxSize = 100.;\n\nvarying vec4 fragColor, fragBorderColor;\nvarying float fragBorderRadius, fragWidth;\n\nfloat pointSizeScale = (constPointSize) ? 2. : pixelRatio;\n\nbool isDirect = (paletteSize.x < 1.);\n\nvec4 getColor(vec4 id) {\n return isDirect ? id / 255. : texture2D(paletteTexture,\n vec2(\n (id.x + .5) / paletteSize.x,\n (id.y + .5) / paletteSize.y\n )\n );\n}\n\nvoid main() {\n // ignore inactive points\n if (isActive == 0.) return;\n\n vec2 position = vec2(x, y);\n vec2 positionFract = vec2(xFract, yFract);\n\n vec4 color = getColor(colorId);\n vec4 borderColor = getColor(borderColorId);\n\n float size = size * maxSize / 255.;\n float borderSize = borderSize * maxSize / 255.;\n\n gl_PointSize = (size + borderSize) * pointSizeScale;\n\n vec2 pos = (position + translate) * scale\n + (positionFract + translateFract) * scale\n + (position + translate) * scaleFract\n + (positionFract + translateFract) * scaleFract;\n\n gl_Position = vec4(pos * 2. - 1., 0., 1.);\n\n fragBorderRadius = 1. - 2. * borderSize / (size + borderSize);\n fragColor = color;\n fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor;\n fragWidth = 1. / gl_PointSize;\n}\n"]),m&&(c.frag=c.frag.replace("smoothstep","smoothStep"),l.frag=l.frag.replace("smoothstep","smoothStep")),this.drawCircle=t(c)}x.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},x.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},x.prototype.draw=function(){for(var t=this,e=arguments.length,r=new Array(e),n=0;nn)?e.tree=c(t,{bounds:h}):n&&n.length&&(e.tree=n),e.tree){var p={primitive:"points",usage:"static",data:e.tree,type:"uint32"};e.elements?e.elements(p):e.elements=o.elements(p)}var f=g.float32(t);return i({data:f,usage:"dynamic"}),a({data:g.fract32(t,f),usage:"dynamic"}),l({data:new Uint8Array(u),type:"uint8",usage:"stream"}),t}},{marker:function(e,r,n){var i=r.activation;if(i.forEach((function(t){return t&&t.destroy&&t.destroy()})),i.length=0,e&&"number"!=typeof e[0]){for(var a=[],s=0,l=Math.min(e.length,r.count);s=0)return a;if(t instanceof Uint8Array||t instanceof Uint8ClampedArray)e=t;else{e=new Uint8Array(t.length);for(var o=0,s=t.length;o4*n&&(this.tooManyColors=!0),this.updatePalette(r),1===i.length?i[0]:i},x.prototype.updatePalette=function(t){if(!this.tooManyColors){var e=this.maxColors,r=this.paletteTexture,n=Math.ceil(.25*t.length/e);if(n>1)for(var i=.25*(t=t.slice()).length%e;i80*r){i=s=t[0],o=l=t[1];for(var x=r;xs&&(s=c),p>l&&(l=p);f=0!==(f=Math.max(s-i,l-o))?32767/f:0}return a(y,v,r,i,o,f,0),v}function n(t,e,r,n,i){var a,o;if(i===S(t,e,r,n)>0)for(a=e;a=e;a-=n)o=A(a,t[a],t[a+1],o);return o&&v(o,o.next)&&(k(o),o=o.next),o}function i(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!v(n,n.next)&&0!==y(n.prev,n,n.next))n=n.next;else{if(k(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function a(t,e,r,n,u,h,p){if(t){!p&&h&&function(t,e,r,n){var i=t;do{0===i.z&&(i.z=f(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,u,h);for(var d,m,g=t;t.prev!==t.next;)if(d=t.prev,m=t.next,h?s(t,n,u,h):o(t))e.push(d.i/r|0),e.push(t.i/r|0),e.push(m.i/r|0),k(t),t=m.next,g=m.next;else if((t=m)===g){p?1===p?a(t=l(i(t),e,r),e,r,n,u,h,2):2===p&&c(t,e,r,n,u,h):a(i(t),e,r,n,u,h,1);break}}}function o(t){var e=t.prev,r=t,n=t.next;if(y(e,r,n)>=0)return!1;for(var i=e.x,a=r.x,o=n.x,s=e.y,l=r.y,c=n.y,u=ia?i>o?i:o:a>o?a:o,f=s>l?s>c?s:c:l>c?l:c,d=n.next;d!==e;){if(d.x>=u&&d.x<=p&&d.y>=h&&d.y<=f&&m(i,s,a,l,o,c,d.x,d.y)&&y(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function s(t,e,r,n){var i=t.prev,a=t,o=t.next;if(y(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,c=o.x,u=i.y,h=a.y,p=o.y,d=sl?s>c?s:c:l>c?l:c,x=u>h?u>p?u:p:h>p?h:p,_=f(d,g,e,r,n),b=f(v,x,e,r,n),w=t.prevZ,T=t.nextZ;w&&w.z>=_&&T&&T.z<=b;){if(w.x>=d&&w.x<=v&&w.y>=g&&w.y<=x&&w!==i&&w!==o&&m(s,u,l,h,c,p,w.x,w.y)&&y(w.prev,w,w.next)>=0||(w=w.prevZ,T.x>=d&&T.x<=v&&T.y>=g&&T.y<=x&&T!==i&&T!==o&&m(s,u,l,h,c,p,T.x,T.y)&&y(T.prev,T,T.next)>=0))return!1;T=T.nextZ}for(;w&&w.z>=_;){if(w.x>=d&&w.x<=v&&w.y>=g&&w.y<=x&&w!==i&&w!==o&&m(s,u,l,h,c,p,w.x,w.y)&&y(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;T&&T.z<=b;){if(T.x>=d&&T.x<=v&&T.y>=g&&T.y<=x&&T!==i&&T!==o&&m(s,u,l,h,c,p,T.x,T.y)&&y(T.prev,T,T.next)>=0)return!1;T=T.nextZ}return!0}function l(t,e,r){var n=t;do{var a=n.prev,o=n.next.next;!v(a,o)&&x(a,n,n.next,o)&&w(a,o)&&w(o,a)&&(e.push(a.i/r|0),e.push(n.i/r|0),e.push(o.i/r|0),k(n),k(n.next),n=t=o),n=n.next}while(n!==t);return i(n)}function c(t,e,r,n,o,s){var l=t;do{for(var c=l.next.next;c!==l.prev;){if(l.i!==c.i&&g(l,c)){var u=T(l,c);return l=i(l,l.next),u=i(u,u.next),a(l,e,r,n,o,s,0),void a(u,e,r,n,o,s,0)}c=c.next}l=l.next}while(l!==t)}function u(t,e){return t.x-e.x}function h(t,e){var r=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o&&(o=s,r=n.x=n.x&&n.x>=u&&i!==n.x&&m(ar.x||n.x===r.x&&p(r,n)))&&(r=n,f=l)),n=n.next}while(n!==c);return r}(t,e);if(!r)return e;var n=T(r,t);return i(n,n.next),i(r,r.next)}function p(t,e){return y(t.prev,t,e.prev)<0&&y(e.next,t,t.next)<0}function f(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function d(t){var e=t,r=t;do{(e.x=(t-o)*(a-s)&&(t-o)*(n-s)>=(r-o)*(e-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function g(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&x(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(w(t,e)&&w(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(y(t.prev,t,e.prev)||y(t,e.prev,e))||v(t,e)&&y(t.prev,t,t.next)>0&&y(e.prev,e,e.next)>0)}function y(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function v(t,e){return t.x===e.x&&t.y===e.y}function x(t,e,r,n){var i=b(y(t,e,r)),a=b(y(t,e,n)),o=b(y(r,n,t)),s=b(y(r,n,e));return!!(i!==a&&o!==s||0===i&&_(t,r,e)||0===a&&_(t,n,e)||0===o&&_(r,t,n)||0===s&&_(r,e,n))}function _(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function b(t){return t>0?1:t<0?-1:0}function w(t,e){return y(t.prev,t,t.next)<0?y(t,e,t.next)>=0&&y(t,t.prev,e)>=0:y(t,e,t.prev)<0||y(t,t.next,e)<0}function T(t,e){var r=new M(t.i,t.x,t.y),n=new M(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function A(t,e,r,n){var i=new M(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function k(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function M(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function S(t,e,r,n){for(var i=0,a=e,o=r-n;a0&&(n+=t[i-1].length,r.holes.push(n))}return r}}}),fy=f({"node_modules/array-normalize/index.js"(t,e){var r=Fg();e.exports=function(t,e,n){if(!t||null==t.length)throw Error("Argument should be an array");null==e&&(e=1),null==n&&(n=r(t,e));for(var i=0;i-1}}}),jy=f({"node_modules/es5-ext/string/#/contains/index.js"(t,e){e.exports=Fy()()?String.prototype.contains:By()}}),Ny=f({"node_modules/d/index.js"(t,e){var r=ky(),n=Cy(),i=Oy(),a=Ry(),o=jy(),s=e.exports=function(t,e){var n,s,l,c,u;return arguments.length<2||"string"!=typeof t?(c=e,e=t,t=null):c=arguments[2],r(t)?(n=o.call(t,"c"),s=o.call(t,"e"),l=o.call(t,"w")):(n=l=!0,s=!1),u={value:e,configurable:n,enumerable:s,writable:l},c?i(a(c),u):u};s.gs=function(t,e,s){var l,c,u,h;return"string"!=typeof t?(u=s,s=e,e=t,t=null):u=arguments[3],r(e)?n(e)?r(s)?n(s)||(u=s,s=void 0):s=void 0:(u=e,e=s=void 0):e=void 0,r(t)?(l=o.call(t,"c"),c=o.call(t,"e")):(l=!0,c=!1),h={get:e,set:s,configurable:l,enumerable:c},u?i(a(u),h):h}}}),Uy=f({"node_modules/es5-ext/function/is-arguments.js"(t,e){var r=Object.prototype.toString,n=r.call(function(){return arguments}());e.exports=function(t){return r.call(t)===n}}}),Vy=f({"node_modules/es5-ext/string/is-string.js"(t,e){var r=Object.prototype.toString,n=r.call("");e.exports=function(t){return"string"==typeof t||t&&"object"==typeof t&&(t instanceof String||r.call(t)===n)||!1}}}),qy=f({"node_modules/ext/global-this/is-implemented.js"(t,e){e.exports=function(){return!("object"!=typeof globalThis||!globalThis)&&globalThis.Array===Array}}}),Hy=f({"node_modules/ext/global-this/implementation.js"(t,e){var r=function(){if("object"==typeof self&&self)return self;if("object"==typeof window&&window)return window;throw new Error("Unable to resolve global `this`")};e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch{return r()}try{return __global__||r()}finally{delete Object.prototype.__global__}}()}}),Gy=f({"node_modules/ext/global-this/index.js"(t,e){e.exports=qy()()?globalThis:Hy()}}),Wy=f({"node_modules/es6-symbol/is-implemented.js"(t,e){var r=Gy(),n={object:!0,symbol:!0};e.exports=function(){var t,e=r.Symbol;if("function"!=typeof e)return!1;t=e("test symbol");try{String(t)}catch{return!1}return!(!n[typeof e.iterator]||!n[typeof e.toPrimitive]||!n[typeof e.toStringTag])}}}),Zy=f({"node_modules/es6-symbol/is-symbol.js"(t,e){e.exports=function(t){return!(!t||"symbol"!=typeof t&&(!t.constructor||"Symbol"!==t.constructor.name||"Symbol"!==t[t.constructor.toStringTag]))}}}),Yy=f({"node_modules/es6-symbol/validate-symbol.js"(t,e){var r=Zy();e.exports=function(t){if(!r(t))throw new TypeError(t+" is not a symbol");return t}}}),Xy=f({"node_modules/es6-symbol/lib/private/generate-name.js"(t,e){var r=Ny(),n=Object.create,i=Object.defineProperty,a=Object.prototype,o=n(null);e.exports=function(t){for(var e,n,s=0;o[t+(s||"")];)++s;return o[t+=s||""]=!0,i(a,e="@@"+t,r.gs(null,(function(t){n||(n=!0,i(this,e,r(t)),n=!1)}))),e}}}),$y=f({"node_modules/es6-symbol/lib/private/setup/standard-symbols.js"(t,e){var r=Ny(),n=Gy().Symbol;e.exports=function(t){return Object.defineProperties(t,{hasInstance:r("",n&&n.hasInstance||t("hasInstance")),isConcatSpreadable:r("",n&&n.isConcatSpreadable||t("isConcatSpreadable")),iterator:r("",n&&n.iterator||t("iterator")),match:r("",n&&n.match||t("match")),replace:r("",n&&n.replace||t("replace")),search:r("",n&&n.search||t("search")),species:r("",n&&n.species||t("species")),split:r("",n&&n.split||t("split")),toPrimitive:r("",n&&n.toPrimitive||t("toPrimitive")),toStringTag:r("",n&&n.toStringTag||t("toStringTag")),unscopables:r("",n&&n.unscopables||t("unscopables"))})}}}),Ky=f({"node_modules/es6-symbol/lib/private/setup/symbol-registry.js"(t,e){var r=Ny(),n=Yy(),i=Object.create(null);e.exports=function(t){return Object.defineProperties(t,{for:r((function(e){return i[e]?i[e]:i[e]=t(String(e))})),keyFor:r((function(t){var e;for(e in n(t),i)if(i[e]===t)return e}))})}}}),Jy=f({"node_modules/es6-symbol/polyfill.js"(t,e){var r,n,i,a=Ny(),o=Yy(),s=Gy().Symbol,l=Xy(),c=$y(),u=Ky(),h=Object.create,p=Object.defineProperties,f=Object.defineProperty;if("function"==typeof s)try{String(s()),i=!0}catch{}else s=null;n=function(t){if(this instanceof n)throw new TypeError("Symbol is not a constructor");return r(t)},e.exports=r=function t(e){var r;if(this instanceof t)throw new TypeError("Symbol is not a constructor");return i?s(e):(r=h(n.prototype),e=void 0===e?"":String(e),p(r,{__description__:a("",e),__name__:a("",l(e))}))},c(r),u(r),p(n.prototype,{constructor:a(r),toString:a("",(function(){return this.__name__}))}),p(r.prototype,{toString:a((function(){return"Symbol ("+o(this).__description__+")"})),valueOf:a((function(){return o(this)}))}),f(r.prototype,r.toPrimitive,a("",(function(){var t=o(this);return"symbol"==typeof t?t:t.toString()}))),f(r.prototype,r.toStringTag,a("c","Symbol")),f(n.prototype,r.toStringTag,a("c",r.prototype[r.toStringTag])),f(n.prototype,r.toPrimitive,a("c",r.prototype[r.toPrimitive]))}}),Qy=f({"node_modules/es6-symbol/index.js"(t,e){e.exports=Wy()()?Gy().Symbol:Jy()}}),tv=f({"node_modules/es5-ext/array/#/clear.js"(t,e){var r=xy();e.exports=function(){return r(this).length=0,this}}}),ev=f({"node_modules/es5-ext/object/valid-callable.js"(t,e){e.exports=function(t){if("function"!=typeof t)throw new TypeError(t+" is not a function");return t}}}),rv=f({"node_modules/type/string/coerce.js"(t,e){var r=ky(),n=My(),i=Object.prototype.toString;e.exports=function(t){if(!r(t))return null;if(n(t)){var e=t.toString;if("function"!=typeof e||e===i)return null}try{return""+t}catch{return null}}}}),nv=f({"node_modules/type/lib/safe-to-string.js"(t,e){e.exports=function(t){try{return t.toString()}catch{try{return String(t)}catch{return null}}}}}),iv=f({"node_modules/type/lib/to-short-string.js"(t,e){var r=nv(),n=/[\n\r\u2028\u2029]/g;e.exports=function(t){var e=r(t);return null===e?"":(e.length>100&&(e=e.slice(0,99)+"…"),e=e.replace(n,(function(t){switch(t){case"\n":return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}})))}}}),av=f({"node_modules/type/lib/resolve-exception.js"(t,e){var r=ky(),n=My(),i=rv(),a=iv(),o=function(t,e){return t.replace("%v",a(e))};e.exports=function(t,e,a){if(!n(a))throw new TypeError(o(e,t));if(!r(t)){if("default"in a)return a.default;if(a.isOptional)return null}var s=i(a.errorMessage);throw r(s)||(s=e),new TypeError(o(s,t))}}}),ov=f({"node_modules/type/value/ensure.js"(t,e){var r=av(),n=ky();e.exports=function(t){return n(t)?t:r(t,"Cannot use %v",arguments[1])}}}),sv=f({"node_modules/type/plain-function/ensure.js"(t,e){var r=av(),n=Cy();e.exports=function(t){return n(t)?t:r(t,"%v is not a plain function",arguments[1])}}}),lv=f({"node_modules/es5-ext/array/from/is-implemented.js"(t,e){e.exports=function(){var t,e,r=Array.from;return"function"==typeof r&&!(!(e=r(t=["raz","dwa"]))||e===t||"dwa"!==e[1])}}}),cv=f({"node_modules/es5-ext/function/is-function.js"(t,e){var r=Object.prototype.toString,n=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);e.exports=function(t){return"function"==typeof t&&n(r.call(t))}}}),uv=f({"node_modules/es5-ext/math/sign/is-implemented.js"(t,e){e.exports=function(){var t=Math.sign;return"function"==typeof t&&1===t(10)&&-1===t(-20)}}}),hv=f({"node_modules/es5-ext/math/sign/shim.js"(t,e){e.exports=function(t){return t=Number(t),isNaN(t)||0===t?t:t>0?1:-1}}}),pv=f({"node_modules/es5-ext/math/sign/index.js"(t,e){e.exports=uv()()?Math.sign:hv()}}),fv=f({"node_modules/es5-ext/number/to-integer.js"(t,e){var r=pv(),n=Math.abs,i=Math.floor;e.exports=function(t){return isNaN(t)?0:0!==(t=Number(t))&&isFinite(t)?r(t)*i(n(t)):t}}}),dv=f({"node_modules/es5-ext/number/to-pos-integer.js"(t,e){var r=fv(),n=Math.max;e.exports=function(t){return n(0,r(t))}}}),mv=f({"node_modules/es5-ext/array/from/shim.js"(t,e){var r=Qy().iterator,n=Uy(),i=cv(),a=dv(),o=ev(),s=xy(),l=gy(),c=Vy(),u=Array.isArray,h=Function.prototype.call,p={configurable:!0,enumerable:!0,writable:!0,value:null},f=Object.defineProperty;e.exports=function(t){var e,d,m,g,y,v,x,_,b,w,T=arguments[1],A=arguments[2];if(t=Object(s(t)),l(T)&&o(T),this&&this!==Array&&i(this))e=this;else{if(!T){if(n(t))return 1!==(y=t.length)?Array.apply(null,t):((g=new Array(1))[0]=t[0],g);if(u(t)){for(g=new Array(y=t.length),d=0;d=55296&&v<=56319&&(w+=t[++d]),w=T?h.call(T,A,w,m):w,e?(p.value=w,f(g,m,p)):g[m]=w,++m;y=m}if(void 0===y)for(y=a(t.length),e&&(g=new e(y)),d=0;d=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__)return void u(this,"__redo__",s("c",[t]));this.__redo__.forEach((function(e,r){e>=t&&(this.__redo__[r]=++e)}),this),this.__redo__.push(t)}})),_onDelete:s((function(t){var e;t>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(-1!==(e=this.__redo__.indexOf(t))&&this.__redo__.splice(e,1),this.__redo__.forEach((function(e,r){e>t&&(this.__redo__[r]=--e)}),this)))})),_onClear:s((function(){this.__redo__&&n.call(this.__redo__),this.__nextIndex__=0}))}))),u(r.prototype,c.iterator,s((function(){return this})))}}),Tv=f({"node_modules/es6-iterator/array.js"(t,e){var r,n=wy(),i=jy(),a=Ny(),o=Qy(),s=wv(),l=Object.defineProperty;r=e.exports=function(t,e){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");s.call(this,t),e=e?i.call(e,"key+value")?"key+value":i.call(e,"key")?"key":"value":"value",l(this,"__kind__",a("",e))},n&&n(r,s),delete r.prototype.constructor,r.prototype=Object.create(s.prototype,{_resolve:a((function(t){return"value"===this.__kind__?this.__list__[t]:"key+value"===this.__kind__?[t,this.__list__[t]]:t}))}),l(r.prototype,o.toStringTag,a("c","Array Iterator"))}}),Av=f({"node_modules/es6-iterator/string.js"(t,e){var r,n=wy(),i=Ny(),a=Qy(),o=wv(),s=Object.defineProperty;r=e.exports=function(t){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");t=String(t),o.call(this,t),s(this,"__length__",i("",t.length))},n&&n(r,o),delete r.prototype.constructor,r.prototype=Object.create(o.prototype,{_next:i((function(){if(this.__list__){if(this.__nextIndex__=55296&&e<=56319?r+this.__list__[this.__nextIndex__++]:r}))}),s(r.prototype,a.toStringTag,i("c","String Iterator"))}}),kv=f({"node_modules/es6-iterator/is-iterable.js"(t,e){var r=Uy(),n=gy(),i=Vy(),a=Qy().iterator,o=Array.isArray;e.exports=function(t){return!(!n(t)||!(o(t)||i(t)||r(t))&&"function"!=typeof t[a])}}}),Mv=f({"node_modules/es6-iterator/valid-iterable.js"(t,e){var r=kv();e.exports=function(t){if(!r(t))throw new TypeError(t+" is not iterable");return t}}}),Sv=f({"node_modules/es6-iterator/get.js"(t,e){var r=Uy(),n=Vy(),i=Tv(),a=Av(),o=Mv(),s=Qy().iterator;e.exports=function(t){return"function"==typeof o(t)[s]?t[s]():r(t)?new i(t):n(t)?new a(t):new i(t)}}}),Ev=f({"node_modules/es6-iterator/for-of.js"(t,e){var r=Uy(),n=ev(),i=Vy(),a=Sv(),o=Array.isArray,s=Function.prototype.call,l=Array.prototype.some;e.exports=function(t,e){var c,u,h,p,f,d,m,g,y=arguments[2];if(o(t)||r(t)?c="array":i(t)?c="string":t=a(t),n(e),h=function(){p=!0},"array"!==c)if("string"!==c)for(u=t.next();!u.done;){if(s.call(e,y,u.value,h),p)return;u=t.next()}else for(d=t.length,f=0;f=55296&&g<=56319&&(m+=t[++f]),s.call(e,y,m,h),!p);++f);else l.call(t,(function(t){return s.call(e,y,t,h),p}))}}}),Cv=f({"node_modules/es6-weak-map/is-native-implemented.js"(t,e){e.exports="function"==typeof WeakMap&&"[object WeakMap]"===Object.prototype.toString.call(new WeakMap)}}),Iv=f({"node_modules/es6-weak-map/polyfill.js"(t,e){var r,n=gy(),i=wy(),a=Ty(),o=xy(),s=Ay(),l=Ny(),c=Sv(),u=Ev(),h=Qy().toStringTag,p=Cv(),f=Array.isArray,d=Object.defineProperty,m=Object.prototype.hasOwnProperty,g=Object.getPrototypeOf;e.exports=r=function(){var t,e=arguments[0];if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");return t=p&&i&&WeakMap!==r?i(new WeakMap,g(this)):this,n(e)&&(f(e)||(e=c(e))),d(t,"__weakMapData__",l("c","$weakMap$"+s())),e&&u(e,(function(e){o(e),t.set(e[0],e[1])})),t},p&&(i&&i(r,WeakMap),r.prototype=Object.create(WeakMap.prototype,{constructor:l(r)})),Object.defineProperties(r.prototype,{delete:l((function(t){return!!m.call(a(t),this.__weakMapData__)&&(delete t[this.__weakMapData__],!0)})),get:l((function(t){if(m.call(a(t),this.__weakMapData__))return t[this.__weakMapData__]})),has:l((function(t){return m.call(a(t),this.__weakMapData__)})),set:l((function(t,e){return d(a(t),this.__weakMapData__,l("c",e)),this})),toString:l((function(){return"[object WeakMap]"}))}),d(r.prototype,h,l("c","WeakMap"))}}),Lv=f({"node_modules/es6-weak-map/index.js"(t,e){e.exports=dy()()?WeakMap:Iv()}}),Pv=f({"node_modules/array-find-index/index.js"(t,e){e.exports=function(t,e,r){if("function"==typeof Array.prototype.findIndex)return t.findIndex(e,r);if("function"!=typeof e)throw new TypeError("predicate must be a function");var n=Object(t),i=n.length;if(0===i)return-1;for(var a=0;a"round"===e.join?2:1,miterLimit:t.prop("miterLimit"),scale:t.prop("scale"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),translate:t.prop("translate"),thickness:t.prop("thickness"),dashTexture:t.prop("dashTexture"),opacity:t.prop("opacity"),pixelRatio:t.context("pixelRatio"),id:t.prop("id"),dashLength:t.prop("dashLength"),viewport:(t,e)=>[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight],depth:t.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(t,e)=>!e.overlay},stencil:{enable:!1},scissor:{enable:!0,box:t.prop("viewport")},viewport:t.prop("viewport")},a=t(i({vert:"\nprecision highp float;\n\nattribute vec2 aCoord, bCoord, aCoordFract, bCoordFract;\nattribute vec4 color;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) {\n\t// the order is important\n\treturn position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n}\n\nvoid main() {\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineOffset = lineTop * 2. - 1.;\n\n\tvec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract);\n\ttangent = normalize(diff * scale * viewport.zw);\n\tvec2 normal = vec2(-tangent.y, tangent.x);\n\n\tvec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart\n\t\t+ project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd\n\n\t\t+ thickness * normal * .5 * lineOffset / viewport.zw;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n}\n",frag:"\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\n\nvoid main() {\n\tfloat alpha = 1.;\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n",attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:t.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:t.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:t.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},n));try{e=t(i({cull:{enable:!0,face:"back"},vert:"\nprecision highp float;\n\nattribute vec2 aCoord, bCoord, nextCoord, prevCoord;\nattribute vec4 aColor, bColor;\nattribute float lineEnd, lineTop;\n\nuniform vec2 scale, translate;\nuniform float thickness, pixelRatio, id, depth;\nuniform vec4 viewport;\nuniform float miterLimit, miterMode;\n\nvarying vec4 fragColor;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 tangent;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nconst float REVERSE_THRESHOLD = -.875;\nconst float MIN_DIFF = 1e-6;\n\n// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead\n// TODO: precalculate dot products, normalize things beforehead etc.\n// TODO: refactor to rectangular algorithm\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nbool isNaN( float val ){\n return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true;\n}\n\nvoid main() {\n\tvec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord;\n\n vec2 adjustedScale;\n adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x;\n adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y;\n\n vec2 scaleRatio = adjustedScale * viewport.zw;\n\tvec2 normalWidth = thickness / scaleRatio;\n\n\tfloat lineStart = 1. - lineEnd;\n\tfloat lineBot = 1. - lineTop;\n\n\tfragColor = (lineStart * aColor + lineEnd * bColor) / 255.;\n\n\tif (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return;\n\n\tif (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord);\n\tif (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord);\n\n\n\tvec2 prevDiff = aCoord - prevCoord;\n\tvec2 currDiff = bCoord - aCoord;\n\tvec2 nextDiff = nextCoord - bCoord;\n\n\tvec2 prevTangent = normalize(prevDiff * scaleRatio);\n\tvec2 currTangent = normalize(currDiff * scaleRatio);\n\tvec2 nextTangent = normalize(nextDiff * scaleRatio);\n\n\tvec2 prevNormal = vec2(-prevTangent.y, prevTangent.x);\n\tvec2 currNormal = vec2(-currTangent.y, currTangent.x);\n\tvec2 nextNormal = vec2(-nextTangent.y, nextTangent.x);\n\n\tvec2 startJoinDirection = normalize(prevTangent - currTangent);\n\tvec2 endJoinDirection = normalize(currTangent - nextTangent);\n\n\t// collapsed/unidirectional segment cases\n\t// FIXME: there should be more elegant solution\n\tvec2 prevTanDiff = abs(prevTangent - currTangent);\n\tvec2 nextTanDiff = abs(nextTangent - currTangent);\n\tif (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) {\n\t\tstartJoinDirection = currNormal;\n\t}\n\tif (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) {\n\t\tendJoinDirection = currNormal;\n\t}\n\tif (aCoord == bCoord) {\n\t\tendJoinDirection = startJoinDirection;\n\t\tcurrNormal = prevNormal;\n\t\tcurrTangent = prevTangent;\n\t}\n\n\ttangent = currTangent;\n\n\t//calculate join shifts relative to normals\n\tfloat startJoinShift = dot(currNormal, startJoinDirection);\n\tfloat endJoinShift = dot(currNormal, endJoinDirection);\n\n\tfloat startMiterRatio = abs(1. / startJoinShift);\n\tfloat endMiterRatio = abs(1. / endJoinShift);\n\n\tvec2 startJoin = startJoinDirection * startMiterRatio;\n\tvec2 endJoin = endJoinDirection * endMiterRatio;\n\n\tvec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin;\n\tstartTopJoin = sign(startJoinShift) * startJoin * .5;\n\tstartBotJoin = -startTopJoin;\n\n\tendTopJoin = sign(endJoinShift) * endJoin * .5;\n\tendBotJoin = -endTopJoin;\n\n\tvec2 aTopCoord = aCoord + normalWidth * startTopJoin;\n\tvec2 bTopCoord = bCoord + normalWidth * endTopJoin;\n\tvec2 aBotCoord = aCoord + normalWidth * startBotJoin;\n\tvec2 bBotCoord = bCoord + normalWidth * endBotJoin;\n\n\t//miter anti-clipping\n\tfloat baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x)));\n\tfloat abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x)));\n\n\t//prevent close to reverse direction switch\n\tbool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal);\n\tbool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal);\n\n\tif (prevReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.);\n\t\taBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\taTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) {\n\t\t//handle miter clipping\n\t\tbTopCoord -= normalWidth * endTopJoin;\n\t\tbTopCoord += normalize(endTopJoin * normalWidth) * baClipping;\n\t}\n\n\tif (nextReverse) {\n\t\t//make join rectangular\n\t\tvec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5;\n\t\tfloat normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.);\n\t\tbBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5;\n\t\tbTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5;\n\t}\n\telse if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) {\n\t\t//handle miter clipping\n\t\taBotCoord -= normalWidth * startBotJoin;\n\t\taBotCoord += normalize(startBotJoin * normalWidth) * abClipping;\n\t}\n\n\tvec2 aTopPosition = (aTopCoord) * adjustedScale + translate;\n\tvec2 aBotPosition = (aBotCoord) * adjustedScale + translate;\n\n\tvec2 bTopPosition = (bTopCoord) * adjustedScale + translate;\n\tvec2 bBotPosition = (bBotCoord) * adjustedScale + translate;\n\n\t//position is normalized 0..1 coord on the screen\n\tvec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd;\n\n\tstartCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\tendCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tenableStartMiter = step(dot(currTangent, prevTangent), .5);\n\tenableEndMiter = step(dot(currTangent, nextTangent), .5);\n\n\t//bevel miter cutoffs\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n\n\t//round miter cutoffs\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tvec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5;\n\t\t\tstartCutoff = vec4(aCoord, aCoord);\n\t\t\tstartCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio;\n\t\t\tstartCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tstartCutoff += viewport.xyxy;\n\t\t\tstartCutoff += startMiterWidth.xyxy;\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tvec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5;\n\t\t\tendCutoff = vec4(bCoord, bCoord);\n\t\t\tendCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio;\n\t\t\tendCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw;\n\t\t\tendCutoff += viewport.xyxy;\n\t\t\tendCutoff += endMiterWidth.xyxy;\n\t\t}\n\t}\n}\n",frag:"\nprecision highp float;\n\nuniform float dashLength, pixelRatio, thickness, opacity, id, miterMode;\nuniform sampler2D dashTexture;\n\nvarying vec4 fragColor;\nvarying vec2 tangent;\nvarying vec4 startCutoff, endCutoff;\nvarying vec2 startCoord, endCoord;\nvarying float enableStartMiter, enableEndMiter;\n\nfloat distToLine(vec2 p, vec2 a, vec2 b) {\n\tvec2 diff = b - a;\n\tvec2 perp = normalize(vec2(-diff.y, diff.x));\n\treturn dot(p - a, perp);\n}\n\nvoid main() {\n\tfloat alpha = 1., distToStart, distToEnd;\n\tfloat cutoff = thickness * .5;\n\n\t//bevel miter\n\tif (miterMode == 1.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToStart + 1., 0.), 1.);\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < -1.) {\n\t\t\t\tdiscard;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\talpha *= min(max(distToEnd + 1., 0.), 1.);\n\t\t}\n\t}\n\n\t// round miter\n\telse if (miterMode == 2.) {\n\t\tif (enableStartMiter == 1.) {\n\t\t\tdistToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw);\n\t\t\tif (distToStart < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - startCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\n\t\tif (enableEndMiter == 1.) {\n\t\t\tdistToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw);\n\t\t\tif (distToEnd < 0.) {\n\t\t\t\tfloat radius = length(gl_FragCoord.xy - endCoord);\n\n\t\t\t\tif(radius > cutoff + .5) {\n\t\t\t\t\tdiscard;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\talpha -= smoothstep(cutoff - .5, cutoff + .5, radius);\n\t\t\t}\n\t\t}\n\t}\n\n\tfloat t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25;\n\tfloat dash = texture2D(dashTexture, vec2(t, .5)).r;\n\n\tgl_FragColor = fragColor;\n\tgl_FragColor.a *= alpha * opacity * dash;\n}\n",attributes:{lineEnd:{buffer:r,divisor:0,stride:8,offset:0},lineTop:{buffer:r,divisor:0,stride:8,offset:4},aColor:{buffer:t.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:t.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:t.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},n))}catch{e=a}return{fill:t({primitive:"triangle",elements:(t,e)=>e.triangles,offset:0,vert:"\nprecision highp float;\n\nattribute vec2 position, positionFract;\n\nuniform vec4 color;\nuniform vec2 scale, scaleFract, translate, translateFract;\nuniform float pixelRatio, id;\nuniform vec4 viewport;\nuniform float opacity;\n\nvarying vec4 fragColor;\n\nconst float MAX_LINES = 256.;\n\nvoid main() {\n\tfloat depth = (MAX_LINES - 4. - id) / (MAX_LINES);\n\n\tvec2 position = position * scale + translate\n + positionFract * scale + translateFract\n + position * scaleFract\n + positionFract * scaleFract;\n\n\tgl_Position = vec4(position * 2.0 - 1.0, depth, 1);\n\n\tfragColor = color / 255.;\n\tfragColor.a *= opacity;\n}\n",frag:"\nprecision highp float;\nvarying vec4 fragColor;\n\nvoid main() {\n\tgl_FragColor = fragColor;\n}\n",uniforms:{scale:t.prop("scale"),color:t.prop("fill"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),translate:t.prop("translate"),opacity:t.prop("opacity"),pixelRatio:t.context("pixelRatio"),id:t.prop("id"),viewport:(t,e)=>[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]},attributes:{position:{buffer:t.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:t.prop("positionFractBuffer"),stride:8,offset:8}},blend:n.blend,depth:{enable:!1},scissor:n.scissor,stencil:n.stencil,viewport:n.viewport}),rect:a,miter:e}},d.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},d.prototype.render=function(...t){t.length&&this.update(...t),this.draw()},d.prototype.draw=function(...t){return(t.length?t:this.passes).forEach(((t,e)=>{if(t&&Array.isArray(t))return this.draw(...t);"number"==typeof t&&(t=this.passes[t]),t&&t.count>1&&t.opacity&&(this.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&this.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>d.precisionThreshold||t.scale[1]*t.viewport.height>d.precisionThreshold||"rect"===t.join||!t.join&&(t.thickness<=2||t.count>=d.maxPoints)?this.shaders.rect(t):this.shaders.miter(t)))})),this},d.prototype.update=function(t){if(!t)return;null!=t.length?"number"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);let{regl:e,gl:h}=this;if(t.forEach(((t,m)=>{let g=this.passes[m];if(void 0!==t){if(null===t)return void(this.passes[m]=null);if("number"==typeof t[0]&&(t={positions:t}),t=a(t,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),g||(this.passes[m]=g={id:m,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:e.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:e.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:e.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:e.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},t=i({},d.defaults,t)),null!=t.thickness&&(g.thickness=parseFloat(t.thickness)),null!=t.opacity&&(g.opacity=parseFloat(t.opacity)),null!=t.miterLimit&&(g.miterLimit=parseFloat(t.miterLimit)),null!=t.overlay&&(g.overlay=!!t.overlay,mt-e)),e=[],i=0,a=null!=g.hole?g.hole[0]:null;if(null!=a){let e=f(t,(t=>t>=a));t=t.slice(0,e),t.push(a)}for(let n=0;ne-a+(t[n]-i))),c=s(o,l);c=c.map((e=>e+i+(e+i{t.colorBuffer.destroy(),t.positionBuffer.destroy(),t.dashTexture.destroy()})),this.passes.length=0,this}}}),Dv=f({"node_modules/regl-error2d/index.js"(t,e){var r=Fg(),n=Od(),i=ly(),a=Og(),o=oy(),s=jg(),{float32:l,fract32:c}=uy();e.exports=function(t,e){if("function"==typeof t?(e||(e={}),e.regl=t):e=t,e.length&&(e.positions=e),!(t=e.regl).hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let h,p,f,d,m,g,y=t._gl,v={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},x=[];return d=t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),p=t.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),f=t.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),m=t.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),g=t.buffer({usage:"static",type:"float",data:u}),T(e),h=t({vert:"\n\t\tprecision highp float;\n\n\t\tattribute vec2 position, positionFract;\n\t\tattribute vec4 error;\n\t\tattribute vec4 color;\n\n\t\tattribute vec2 direction, lineOffset, capOffset;\n\n\t\tuniform vec4 viewport;\n\t\tuniform float lineWidth, capSize;\n\t\tuniform vec2 scale, scaleFract, translate, translateFract;\n\n\t\tvarying vec4 fragColor;\n\n\t\tvoid main() {\n\t\t\tfragColor = color / 255.;\n\n\t\t\tvec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset;\n\n\t\t\tvec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw;\n\n\t\t\tvec2 position = position + dxy;\n\n\t\t\tvec2 pos = (position + translate) * scale\n\t\t\t\t+ (positionFract + translateFract) * scale\n\t\t\t\t+ (position + translate) * scaleFract\n\t\t\t\t+ (positionFract + translateFract) * scaleFract;\n\n\t\t\tpos += pixelOffset / viewport.zw;\n\n\t\t\tgl_Position = vec4(pos * 2. - 1., 0, 1);\n\t\t}\n\t\t",frag:"\n\t\tprecision highp float;\n\n\t\tvarying vec4 fragColor;\n\n\t\tuniform float opacity;\n\n\t\tvoid main() {\n\t\t\tgl_FragColor = fragColor;\n\t\t\tgl_FragColor.a *= opacity;\n\t\t}\n\t\t",uniforms:{range:t.prop("range"),lineWidth:t.prop("lineWidth"),capSize:t.prop("capSize"),opacity:t.prop("opacity"),scale:t.prop("scale"),translate:t.prop("translate"),scaleFract:t.prop("scaleFract"),translateFract:t.prop("translateFract"),viewport:(t,e)=>[e.viewport.x,e.viewport.y,t.viewportWidth,t.viewportHeight]},attributes:{color:{buffer:d,offset:(t,e)=>4*e.offset,divisor:1},position:{buffer:p,offset:(t,e)=>8*e.offset,divisor:1},positionFract:{buffer:f,offset:(t,e)=>8*e.offset,divisor:1},error:{buffer:m,offset:(t,e)=>16*e.offset,divisor:1},direction:{buffer:g,stride:24,offset:0},lineOffset:{buffer:g,stride:24,offset:8},capOffset:{buffer:g,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:t.prop("viewport")},viewport:t.prop("viewport"),stencil:!1,instances:t.prop("count"),count:u.length}),o(_,{update:T,draw:b,destroy:A,regl:t,gl:y,canvas:y.canvas,groups:x}),_;function _(t){t?T(t):null===t&&A(),b()}function b(e){if("number"==typeof e)return w(e);e&&!Array.isArray(e)&&(e=[e]),t._refresh(),x.forEach(((t,r)=>{if(t){if(e&&(e[r]?t.draw=!0:t.draw=!1),!t.draw)return void(t.draw=!0);w(r)}}))}function w(t){"number"==typeof t&&(t=x[t]),null!=t&&t&&t.count&&t.color&&t.opacity&&t.positions&&t.positions.length>1&&(t.scaleRatio=[t.scale[0]*t.viewport.width,t.scale[1]*t.viewport.height],h(t),t.after&&t.after(t))}function T(t){if(!t)return;null!=t.length?"number"==typeof t[0]&&(t=[{positions:t}]):Array.isArray(t)||(t=[t]);let e=0,u=0;if(_.groups=x=t.map(((t,l)=>{let h=x[l];return t?("function"==typeof t?t={after:t}:"number"==typeof t[0]&&(t={positions:t}),t=a(t,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),h||(x[l]=h={id:l,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},t=o({},v,t)),i(h,t,[{lineWidth:t=>.5*+t,capSize:t=>.5*+t,opacity:parseFloat,errors:t=>(t=s(t),u+=t.length,t),positions:(t,n)=>(t=s(t,"float64"),n.count=Math.floor(t.length/2),n.bounds=r(t,2),n.offset=e,e+=n.count,t)},{color:(t,e)=>{let r=e.count;if(t||(t="transparent"),!Array.isArray(t)||"number"==typeof t[0]){let e=t;t=Array(r);for(let n=0;n{let n=e.bounds;return t||(t=n),e.scale=[1/(t[2]-t[0]),1/(t[3]-t[1])],e.translate=[-t[0],-t[1]],e.scaleFract=c(e.scale),e.translateFract=c(e.translate),t},viewport:t=>{let e;return Array.isArray(t)?e={x:t[0],y:t[1],width:t[2]-t[0],height:t[3]-t[1]}:t?(e={x:t.x||t.left||0,y:t.y||t.top||0},t.right?e.width=t.right-e.x:e.width=t.w||t.width||0,t.bottom?e.height=t.bottom-e.y:e.height=t.h||t.height||0):e={x:0,y:0,width:y.drawingBufferWidth,height:y.drawingBufferHeight},e}}]),h):h})),e||u){let t=x.reduce(((t,e,r)=>t+(e?e.count:0)),0),e=new Float64Array(2*t),r=new Uint8Array(4*t),n=new Float32Array(4*t);x.forEach(((t,i)=>{if(!t)return;let{positions:a,count:o,offset:s,color:l,errors:c}=t;o&&(r.set(l,4*s),n.set(c,4*s),e.set(a,2*s))}));var h=l(e);p(h);var g=c(e,h);f(g),d(r),m(n)}}function A(){p.destroy(),f.destroy(),d.destroy(),m.destroy(),g.destroy()}};var u=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]]}}),Ov=f({"node_modules/unquote/index.js"(t,e){var r=/[\'\"]/;e.exports=function(t){return t?(r.test(t.charAt(0))&&(t=t.substr(1)),r.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}}}),Rv=f({"node_modules/css-global-keywords/index.json"(){}}),Fv=f({"node_modules/css-system-font-keywords/index.json"(){}}),Bv=f({"node_modules/css-font-weight-keywords/index.json"(){}}),jv=f({"node_modules/css-font-style-keywords/index.json"(){}}),Nv=f({"node_modules/css-font-stretch-keywords/index.json"(){}}),Uv=f({"node_modules/parenthesis/index.js"(t,e){function r(t,e){if("string"!=typeof t)return[t];var r=[t];"string"==typeof e||Array.isArray(e)?e={brackets:e}:e||(e={});var n=e.brackets?Array.isArray(e.brackets)?e.brackets:[e.brackets]:["{}","[]","()"],i=e.escape||"___",a=!!e.flat;n.forEach((function(t){var e=new RegExp(["\\",t[0],"[^\\",t[0],"\\",t[1],"]*\\",t[1]].join("")),n=[];function a(e,a,o){var s=r.push(e.slice(t[0].length,-t[1].length))-1;return n.push(s),i+s+i}r.forEach((function(t,n){for(var i,o=0;t!=i;)if(i=t,t=t.replace(e,a),o++>1e4)throw Error("References have circular dependency. Please, check them.");r[n]=t})),n=n.reverse(),r=r.map((function(e){return n.forEach((function(r){e=e.replace(new RegExp("(\\"+i+r+"\\"+i+")","g"),t[0]+"$1"+t[1])})),e}))}));var o=new RegExp("\\"+i+"([0-9]+)\\"+i);return a?r:function t(e,r,n){for(var i,a=[],s=0;i=o.exec(e);){if(s++>1e4)throw Error("Circular references in parenthesis");a.push(e.slice(0,i.index)),a.push(t(r[i[1]],r)),e=e.slice(i.index+i[0].length)}return a.push(e),a}(r[0],r)}function n(t,e){if(e&&e.flat){var r,n=e&&e.escape||"___",i=t[0];if(!i)return"";for(var a=new RegExp("\\"+n+"([0-9]+)\\"+n),o=0;i!=r;){if(o++>1e4)throw Error("Circular references in "+t);r=i,i=i.replace(a,s)}return i}return t.reduce((function t(e,r){return Array.isArray(r)&&(r=r.reduce(t,"")),e+r}),"");function s(e,r){if(null==t[r])throw Error("Reference "+r+"is undefined");return t[r]}}function i(t,e){return Array.isArray(t)?n(t,e):r(t,e)}i.parse=r,i.stringify=n,e.exports=i}}),Vv=f({"node_modules/string-split-by/index.js"(t,e){var r=Uv();e.exports=function(t,e,n){if(null==t)throw Error("First argument should be a string");if(null==e)throw Error("Separator should be a string or a RegExp");n?("string"==typeof n||Array.isArray(n))&&(n={ignore:n}):n={},null==n.escape&&(n.escape=!0),null==n.ignore?n.ignore=["[]","()","{}","<>",'""',"''","``","“”","«»"]:("string"==typeof n.ignore&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map((function(t){return 1===t.length&&(t+=t),t})));var i=r.parse(t,{flat:!0,brackets:n.ignore}),a=i[0].split(e);if(n.escape){for(var o=[],s=0;s1&&e===r&&('"'===e||"'"===e))return['"'+n(t.substr(1,t.length-2))+'"'];var a=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(t);if(a)return i(t.substr(0,a.index)).concat(i(a[1])).concat(i(t.substr(a.index+a[0].length)));var o=t.split(".");if(1===o.length)return['"'+n(t)+'"'];for(var s=[],l=0;l65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1}function f(){var t=h(8,(function(){return[]}));function e(e){var r=function(t){for(var e=16;e<=1<<28;e*=16)if(t<=e)return e;return 0}(e),n=t[p(r)>>2];return n.length>0?n.pop():new ArrayBuffer(r)}function r(e){t[p(e.byteLength)>>2].push(e)}return{alloc:e,free:r,allocType:function(t,r){var n=null;switch(t){case 5120:n=new Int8Array(e(r),0,r);break;case 5121:n=new Uint8Array(e(r),0,r);break;case 5122:n=new Int16Array(e(2*r),0,r);break;case 5123:n=new Uint16Array(e(2*r),0,r);break;case 5124:n=new Int32Array(e(4*r),0,r);break;case 5125:n=new Uint32Array(e(4*r),0,r);break;case 5126:n=new Float32Array(e(4*r),0,r);break;default:return null}return n.length!==r?n.subarray(0,r):n},freeType:function(t){r(t.buffer)}}}var d=f();d.zero=f();var m=3553,g=6408,y=5126,v=36160,x=function(t){return t instanceof Uint8Array||t instanceof Uint16Array||t instanceof Uint32Array||t instanceof Int8Array||t instanceof Int16Array||t instanceof Int32Array||t instanceof Float32Array||t instanceof Float64Array||t instanceof Uint8ClampedArray};function _(t){return!!t&&"object"==typeof t&&Array.isArray(t.shape)&&Array.isArray(t.stride)&&"number"==typeof t.offset&&t.shape.length===t.stride.length&&(Array.isArray(t.data)||x(t.data))}var b=function(t){return Object.keys(t).map((function(e){return t[e]}))},w=function(t){for(var e=[],r=t;r.length;r=r[0])e.push(r.length);return e},T=function(t,e,r,n){var i=1;if(e.length)for(var a=0;a>>31<<15,a=(n<<1>>>24)-127,o=n>>13&1023;if(a<-24)e[r]=i;else if(a<-14){var s=-14-a;e[r]=i+(o+1024>>s)}else e[r]=a>15?i+31744:i+(a+15<<10)+o}return e}function G(t){return Array.isArray(t)||x(t)}var W=3553,Z=34067,Y=34069,X=6408,$=6406,K=6407,J=6409,Q=6410,tt=32855,et=6402,rt=34041,nt=35904,it=35906,at=36193,ot=33776,st=33777,lt=33778,ct=5121,ut=5123,ht=5125,pt=5126,ft=33071,dt=9728,mt=9984,gt=9987,yt=4352,vt=33984,xt=[mt,9986,9985,gt],_t=[0,J,Q,K,X],bt={};function wt(t){return"[object "+t+"]"}bt[J]=bt[$]=bt[et]=1,bt[rt]=bt[Q]=2,bt[K]=bt[nt]=3,bt[X]=bt[it]=4;var Tt=wt("HTMLCanvasElement"),At=wt("OffscreenCanvas"),kt=wt("CanvasRenderingContext2D"),Mt=wt("ImageBitmap"),St=wt("HTMLImageElement"),Et=wt("HTMLVideoElement"),Ct=Object.keys(M).concat([Tt,At,kt,Mt,St,Et]),It=[];It[ct]=1,It[pt]=4,It[at]=2,It[ut]=2,It[ht]=4;var Lt=[];function Pt(t){return Array.isArray(t)&&(0===t.length||"number"==typeof t[0])}function zt(t){return!!Array.isArray(t)&&!(0===t.length||!G(t[0]))}function Dt(t){return Object.prototype.toString.call(t)}function Ot(t){return Dt(t)===Tt}function Rt(t){return Dt(t)===At}function Ft(t){if(!t)return!1;var e=Dt(t);return Ct.indexOf(e)>=0||Pt(t)||zt(t)||_(t)}function Bt(t){return 0|M[Object.prototype.toString.call(t)]}function jt(t,e){return d.allocType(t.type===at?pt:t.type,e)}function Nt(t,e){t.type===at?(t.data=H(e),d.freeType(e)):t.data=e}function Ut(t,e,r,n,i,a){var o;if(o=typeof Lt[t]<"u"?Lt[t]:bt[t]*It[e],a&&(o*=6),i){for(var s=0,l=r;l>=1;)s+=o*l*l,l/=2;return s}return o*r*n}Lt[32854]=2,Lt[tt]=2,Lt[36194]=2,Lt[rt]=4,Lt[ot]=.5,Lt[st]=.5,Lt[lt]=1,Lt[33779]=1,Lt[35986]=.5,Lt[35987]=1,Lt[34798]=1,Lt[35840]=.5,Lt[35841]=.25,Lt[35842]=.5,Lt[35843]=.25,Lt[36196]=.5;var Vt=36161,qt=32854,Ht=[];function Gt(t,e,r){return Ht[t]*e*r}Ht[qt]=2,Ht[32855]=2,Ht[36194]=2,Ht[33189]=2,Ht[36168]=1,Ht[34041]=4,Ht[35907]=4,Ht[34836]=16,Ht[34842]=8,Ht[34843]=6;var Wt=36160,Zt=36161,Yt=3553,Xt=[];Xt[6408]=4,Xt[6407]=3;var $t=[];$t[5121]=1,$t[5126]=4,$t[36193]=2;var Kt=34963;function Jt(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=5126,this.offset=0,this.stride=0,this.divisor=0}function Qt(t){return function(t){for(var e,r="0123456789abcdef",n="",i=0;i>>4&15)+r.charAt(15&e);return n}(function(t){return function(t){for(var e="",r=0;r<32*t.length;r+=8)e+=String.fromCharCode(t[r>>5]>>>24-r%32&255);return e}(function(t,e){var r,n,i,a,o,s,l,c,u,h,p,f,d=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),m=new Array(64);for(t[e>>5]|=128<<24-e%32,t[15+(e+64>>9<<4)]=e,u=0;u>2),r=0;r>5]|=(255&t.charCodeAt(r/8))<<24-r%32;return e}(t),8*t.length))}(function(t){for(var e,r,n="",i=-1;++i>>6&31,128|63&e):e<=65535?n+=String.fromCharCode(224|e>>>12&15,128|e>>>6&63,128|63&e):e<=2097151&&(n+=String.fromCharCode(240|e>>>18&7,128|e>>>12&63,128|e>>>6&63,128|63&e));return n}(t)))}function te(t,e){return t>>>e|t<<32-e}function ee(t,e){return t>>>e}function re(t,e,r){return t&e^~t&r}function ne(t,e,r){return t&e^t&r^e&r}function ie(t){return te(t,2)^te(t,13)^te(t,22)}function ae(t){return te(t,6)^te(t,11)^te(t,25)}function oe(t){return te(t,7)^te(t,18)^ee(t,3)}function se(t){return te(t,17)^te(t,19)^ee(t,10)}var le=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function ce(t,e){var r=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(r>>16)<<16|65535&r}function ue(t){return Array.prototype.slice.call(t)}function he(t){return ue(t).join("")}var pe="xyzw".split(""),fe="dither",de="blend.enable",me="blend.color",ge="blend.equation",ye="blend.func",ve="depth.enable",xe="depth.func",_e="depth.range",be="depth.mask",we="colorMask",Te="cull.enable",Ae="cull.face",ke="frontFace",Me="lineWidth",Se="polygonOffset.enable",Ee="polygonOffset.offset",Ce="sample.alpha",Ie="sample.enable",Le="sample.coverage",Pe="stencil.enable",ze="stencil.mask",De="stencil.func",Oe="stencil.opFront",Re="stencil.opBack",Fe="scissor.enable",Be="scissor.box",je="viewport",Ne="profile",Ue="framebuffer",Ve="vert",qe="frag",He="elements",Ge="primitive",We="count",Ze="offset",Ye="instances",Xe="vao",$e="Width",Ke="Height",Je=Ue+$e,Qe=Ue+Ke,tr=je+$e,er=je+Ke,rr="drawingBuffer",nr=rr+$e,ir=rr+Ke,ar=[ye,ge,De,Oe,Re,Le,je,Be,Ee],or=34962,sr=34963,lr=35664,cr=35665,ur=35666,hr=35667,pr=35668,fr=35669,dr=35671,mr=35672,gr=35673,yr=35674,vr=35675,xr=35676,_r=35678,br=35680,wr=1028,Tr=1029,Ar=2305,kr=7680,Mr={0:0,1:1,zero:0,one:1,"src color":768,"one minus src color":769,"src alpha":770,"one minus src alpha":771,"dst color":774,"one minus dst color":775,"dst alpha":772,"one minus dst alpha":773,"constant color":32769,"one minus constant color":32770,"constant alpha":32771,"one minus constant alpha":32772,"src alpha saturate":776},Sr={never:512,less:513,"<":513,equal:514,"=":514,"==":514,"===":514,lequal:515,"<=":515,greater:516,">":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Er={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Cr={cw:2304,ccw:Ar};function Ir(t){return Array.isArray(t)||x(t)||_(t)}function Lr(t){return t.sort((function(t,e){return t===je?-1:e===je?1:t=1,n>=2,e)}if(4===r){var i=t.data;return new Pr(i.thisDep,i.contextDep,i.propDep,e)}if(5===r)return new Pr(!1,!1,!1,e);if(6===r){for(var a=!1,o=!1,s=!1,l=0;l=1&&(o=!0),u>=2&&(s=!0)}else 4===c.type&&(a=a||c.data.thisDep,o=o||c.data.contextDep,s=s||c.data.propDep)}return new Pr(a,o,s,e)}return new Pr(3===r,2===r,1===r,e)}var Rr=new Pr(!1,!1,!1,(function(){}));function Fr(e,r,n,i,a,s,l,c,u,p,f,d,m,g,y,v){var x=p.Record,_={add:32774,subtract:32778,"reverse subtract":32779};n.ext_blend_minmax&&(_.min=32775,_.max=32776);var b=n.angle_instanced_arrays,w=n.webgl_draw_buffers,T=n.oes_vertex_array_object,A={dirty:!0,profile:v.profile},k={},M=[],E={},C={};function I(t){return t.replace(".","_")}function L(t,e,r){var n=I(t);M.push(t),k[n]=A[n]=!!r,E[n]=e}function P(t,e,r){var n=I(t);M.push(t),Array.isArray(r)?(A[n]=r.slice(),k[n]=r.slice()):A[n]=k[n]=r,C[n]=e}function z(t){return!!isNaN(t)}L(fe,3024),L(de,3042),P(me,"blendColor",[0,0,0,0]),P(ge,"blendEquationSeparate",[32774,32774]),P(ye,"blendFuncSeparate",[1,0,1,0]),L(ve,2929,!0),P(xe,"depthFunc",513),P(_e,"depthRange",[0,1]),P(be,"depthMask",!0),P(we,we,[!0,!0,!0,!0]),L(Te,2884),P(Ae,"cullFace",Tr),P(ke,ke,Ar),P(Me,Me,1),L(Se,32823),P(Ee,"polygonOffset",[0,0]),L(Ce,32926),L(Ie,32928),P(Le,"sampleCoverage",[1,!1]),L(Pe,2960),P(ze,"stencilMask",-1),P(De,"stencilFunc",[519,0,-1]),P(Oe,"stencilOpSeparate",[wr,kr,kr,kr]),P(Re,"stencilOpSeparate",[Tr,kr,kr,kr]),L(Fe,3089),P(Be,"scissor",[0,0,e.drawingBufferWidth,e.drawingBufferHeight]),P(je,je,[0,0,e.drawingBufferWidth,e.drawingBufferHeight]);var D={gl:e,context:m,strings:r,next:k,current:A,draw:d,elements:s,buffer:a,shader:f,attributes:p.state,vao:p,uniforms:u,framebuffer:c,extensions:n,timer:g,isBufferArgs:Ir},O={primTypes:F,compareFuncs:Sr,blendFuncs:Mr,blendEquations:_,stencilOps:Er,glTypes:S,orientationType:Cr};w&&(O.backBuffer=[Tr],O.drawBuffer=h(i.maxDrawbuffers,(function(t){return 0===t?[0]:h(t,(function(t){return 36064+t}))})));var R=0;function B(){var e=function(e){var r=e&&e.cache,n=0,i=[],a=[],o=[];function s(){var e=[],r=[];return t((function(){e.push.apply(e,ue(arguments))}),{def:function(){var t="v"+n++;return r.push(t),arguments.length>0&&(e.push(t,"="),e.push.apply(e,ue(arguments)),e.push(";")),t},toString:function(){return he([r.length>0?"var "+r.join(",")+";":"",he(e)])}})}function l(){var e=s(),r=s(),n=e.toString,i=r.toString;function a(t,n){r(t,n,"=",e.def(t,n),";")}return t((function(){e.apply(e,ue(arguments))}),{def:e.def,entry:e,exit:r,save:a,set:function(t,r,n){a(t,r),e(t,r,"=",n,";")},toString:function(){return n()+i()}})}var c=s(),u={};return{global:c,link:function(t,e){var r=e&&e.stable;if(!r)for(var s=0;s"u"?"Date.now()":"performance.now()"}function d(t){t(a=e.def(),"=",f(),";"),"string"==typeof i?t(c,".count+=",i,";"):t(c,".count++;"),g&&(n?t(o=e.def(),"=",h,".getNumPendingQueries();"):t(h,".beginQuery(",c,");"))}function m(t){t(c,".cpuTime+=",f(),"-",a,";"),g&&(n?t(h,".pushScopeStats(",o,",",h,".getNumPendingQueries(),",c,");"):t(h,".endQuery();"))}function y(t){var r=e.def(u,".profile");e(u,".profile=",t,";"),e.exit(u,".profile=",r,";")}if(p){if(zr(p))return void(p.enable?(d(e),m(e.exit),y("true")):y("false"));y(s=p.append(t,e))}else s=e.def(u,".profile");var v=t.block();d(v),e("if(",s,"){",v,"}");var x=t.block();m(x),e.exit("if(",s,"){",x,"}")}function W(t,e,r,n,i){var a=t.shared;n.forEach((function(n){var o,s=n.name,l=r.attributes[s];if(l){if(!i(l))return;o=l.append(t,e)}else{if(!i(Rr))return;var c=t.scopeAttrib(s);o={},Object.keys(new x).forEach((function(t){o[t]=e.def(c,".",t)}))}!function(r,n,i){var o=a.gl,s=e.def(r,".location"),l=e.def(a.attributes,"[",s,"]"),c=i.state,u=i.buffer,h=[i.x,i.y,i.z,i.w],p=["buffer","normalized","offset","stride"];function f(){e("if(!",l,".buffer){",o,".enableVertexAttribArray(",s,");}");var r,a=i.type;if(r=i.size?e.def(i.size,"||",n):n,e("if(",l,".type!==",a,"||",l,".size!==",r,"||",p.map((function(t){return l+"."+t+"!=="+i[t]})).join("||"),"){",o,".bindBuffer(",or,",",u,".buffer);",o,".vertexAttribPointer(",[s,r,a,i.normalized,i.stride,i.offset],");",l,".type=",a,";",l,".size=",r,";",p.map((function(t){return l+"."+t+"="+i[t]+";"})).join(""),"}"),b){var c=i.divisor;e("if(",l,".divisor!==",c,"){",t.instancing,".vertexAttribDivisorANGLE(",[s,c],");",l,".divisor=",c,";}")}}function d(){e("if(",l,".buffer){",o,".disableVertexAttribArray(",s,");",l,".buffer=null;","}if(",pe.map((function(t,e){return l+"."+t+"!=="+h[e]})).join("||"),"){",o,".vertexAttrib4f(",s,",",h,");",pe.map((function(t,e){return l+"."+t+"="+h[e]+";"})).join(""),"}")}1===c?f():2===c?d():(e("if(",c,"===",1,"){"),f(),e("}else{"),d(),e("}"))}(t.link(n),function(t){switch(t){case lr:case hr:case dr:return 2;case cr:case pr:case mr:return 3;case ur:case fr:case gr:return 4;default:return 1}}(n.info.type),o)}))}function Z(t,e,n,i,a,o){for(var s,l=t.shared,c=l.gl,u=0;u1){for(var M=[],S=[],E=0;E>1)",f],");")}function e(){r(d,".drawArraysInstancedANGLE(",[m,g,y,f],");")}h&&"null"!==h?x?t():(r("if(",h,"){"),t(),r("}else{"),e(),r("}")):e()}function w(){function t(){r(l+".drawElements("+[m,y,v,g+"<<(("+v+"-5121)>>1)"]+");")}function e(){r(l+".drawArrays("+[m,g,y]+");")}h&&"null"!==h?x?t():(r("if(",h,"){"),t(),r("}else{"),e(),r("}")):e()}b&&("number"!=typeof f||f>=0)?"string"==typeof f?(r("if(",f,">0){"),_(),r("}else if(",f,"<0){"),w(),r("}")):_():w()}function X(t,e,r,n,i){var a=B(),o=a.proc("body",i);return b&&(a.instancing=o.def(a.shared.extensions,".angle_instanced_arrays")),t(a,o,r,n),a.compile().body}function $(t,e,r,n){q(t,e),r.useVAO?r.drawVAO?e(t.shared.vao,".setVAO(",r.drawVAO.append(t,e),");"):e(t.shared.vao,".setVAO(",t.shared.vao,".targetVAO);"):(e(t.shared.vao,".setVAO(null);"),W(t,e,r,n.attributes,(function(){return!0}))),Z(t,e,r,n.uniforms,(function(){return!0}),!1),Y(t,e,e,r)}function K(t,e,r,n){function i(){return!0}t.batchId="a1",q(t,e),W(t,e,r,n.attributes,i),Z(t,e,r,n.uniforms,i,!1),Y(t,e,e,r)}function J(t,e,r,n){q(t,e);var i=r.contextDep,a=e.def(),o=e.def();t.shared.props=o,t.batchId=a;var s=t.scope(),l=t.scope();function c(t){return t.contextDep&&i||t.propDep}function u(t){return!c(t)}if(e(s.entry,"for(",a,"=0;",a,"<","a1",";++",a,"){",o,"=","a0","[",a,"];",l,"}",s.exit),r.needsContext&&j(t,l,r.context),r.needsFramebuffer&&N(t,l,r.framebuffer),V(t,l,r.state,c),r.profile&&c(r.profile)&&H(t,l,r,!1,!0),n)r.useVAO?r.drawVAO?c(r.drawVAO)?l(t.shared.vao,".setVAO(",r.drawVAO.append(t,l),");"):s(t.shared.vao,".setVAO(",r.drawVAO.append(t,s),");"):s(t.shared.vao,".setVAO(",t.shared.vao,".targetVAO);"):(s(t.shared.vao,".setVAO(null);"),W(t,s,r,n.attributes,u),W(t,l,r,n.attributes,c)),Z(t,s,r,n.uniforms,u,!1),Z(t,l,r,n.uniforms,c,!0),Y(t,s,l,r);else{var h=t.global.def("{}"),p=r.shader.progVar.append(t,l),f=l.def(p,".id"),d=l.def(h,"[",f,"]");l(t.shared.gl,".useProgram(",p,".program);","if(!",d,"){",d,"=",h,"[",f,"]=",t.link((function(t){return X(K,0,r,t,2)})),"(",p,");}",d,".call(this,a0[",a,"],",a,");")}}function Q(t,e,r){var n=e.static[r];if(n&&function(t){if("object"==typeof t&&!G(t)){for(var e=Object.keys(t),r=0;r0)return null;var n=e.static,i=Object.keys(n);if(i.length>0&&"number"==typeof n[i[0]]){for(var a=[],o=0;o0,w={framebuffer:u,draw:m,shader:y,state:g,dirty:b,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(w.profile=function(t){var e,r=t.static,n=t.dynamic;if(Ne in r){var i=!!r[Ne];(e=Dr((function(t,e){return i}))).enable=i}else if(Ne in n){var a=n[Ne];e=Or(a,(function(t,e){return t.invoke(e,a)}))}return e}(t),w.uniforms=function(t){var e=t.static,r=t.dynamic,n={};return Object.keys(e).forEach((function(t){var r,i=e[t];if("number"==typeof i||"boolean"==typeof i)r=Dr((function(){return i}));else if("function"==typeof i){var a=i._reglType;"texture2d"===a||"textureCube"===a?r=Dr((function(t){return t.link(i)})):("framebuffer"===a||"framebufferCube"===a)&&(r=Dr((function(t){return t.link(i.color[0])})))}else G(i)&&(r=Dr((function(t){return t.global.def("[",h(i.length,(function(t){return i[t]})),"]")})));r.value=i,n[t]=r})),Object.keys(r).forEach((function(t){var e=r[t];n[t]=Or(e,(function(t,r){return t.invoke(r,e)}))})),n}(i),w.drawVAO=w.scopeVAO=m.vao,!w.drawVAO&&y.program&&!l&&n.angle_instanced_arrays&&m.static.elements){var T=!0,A=y.program.attributes.map((function(t){var r=e.static[t];return T=T&&!!r,r}));if(T&&A.length>0){var k=p.getVAO(p.createVAO({attributes:A,elements:m.static.elements}));w.drawVAO=new Pr(null,null,null,(function(t,e){return t.link(k)})),w.useVAO=!0}}return l?w.useVAO=!0:w.attributes=function(t){var e=t.static,n=t.dynamic,i={};return Object.keys(e).forEach((function(t){var n=e[t],o=r.id(t),s=new x;if(Ir(n))s.state=1,s.buffer=a.getBuffer(a.create(n,or,!1,!0)),s.type=0;else{var l=a.getBuffer(n);if(l)s.state=1,s.buffer=l,s.type=0;else if("constant"in n){var c=n.constant;s.buffer="null",s.state=2,"number"==typeof c?s.x=c:pe.forEach((function(t,e){e"+e+"?"+n+".constant["+e+"]:0;"})).join(""),"}}else{","if(",o,"(",n,".buffer)){",u,"=",s,".createStream(",or,",",n,".buffer);","}else{",u,"=",s,".getBuffer(",n,".buffer);","}",h,'="type" in ',n,"?",a.glTypes,"[",n,".type]:",u,".dtype;",l.normalized,"=!!",n,".normalized;"),p("size"),p("offset"),p("stride"),p("divisor"),r("}}"),r.exit("if(",l.isStream,"){",s,".destroyStream(",u,");","}"),l}))})),i}(e),w.context=function(t){var e=t.static,r=t.dynamic,n={};return Object.keys(e).forEach((function(t){var r=e[t];n[t]=Dr((function(t,e){return"number"==typeof r||"boolean"==typeof r?""+r:t.link(r)}))})),Object.keys(r).forEach((function(t){var e=r[t];n[t]=Or(e,(function(t,r){return t.invoke(r,e)}))})),n}(o),w}(e,i,o,l);return m.shader.program&&(m.shader.program.attributes.sort((function(t,e){return t.name0&&r(t.shared.current,".dirty=true;"),t.shared.vao&&r(t.shared.vao,".setVAO(null);")}(d,m),function(t,e){var n=t.proc("scope",3);t.batchId="a2";var i=t.shared,a=i.current;if(j(t,n,e.context),e.framebuffer&&e.framebuffer.append(t,n),Lr(Object.keys(e.state)).forEach((function(r){var a=e.state[r],o=a.append(t,n);G(o)?o.forEach((function(e,i){z(e)?n.set(t.next[r],"["+i+"]",e):n.set(t.next[r],"["+i+"]",t.link(e,{stable:!0}))})):zr(a)?n.set(i.next,"."+r,t.link(o,{stable:!0})):n.set(i.next,"."+r,o)})),H(t,n,e,!0,!0),[He,Ze,We,Ye,Ge].forEach((function(r){var a=e.draw[r];if(a){var o=a.append(t,n);z(o)?n.set(i.draw,"."+r,o):n.set(i.draw,"."+r,t.link(o),{stable:!0})}})),Object.keys(e.uniforms).forEach((function(a){var o=e.uniforms[a].append(t,n);Array.isArray(o)&&(o="["+o.map((function(e){return z(e)?e:t.link(e,{stable:!0})}))+"]"),n.set(i.uniforms,"["+t.link(r.id(a),{stable:!0})+"]",o)})),Object.keys(e.attributes).forEach((function(r){var i=e.attributes[r].append(t,n),a=t.scopeAttrib(r);Object.keys(new x).forEach((function(t){n.set(a,"."+t,i[t])}))})),e.scopeVAO){var o=e.scopeVAO.append(t,n);z(o)?n.set(i.vao,".targetVAO",o):n.set(i.vao,".targetVAO",t.link(o,{stable:!0}))}function s(r){var a=e.shader[r];if(a){var o=a.append(t,n);z(o)?n.set(i.shader,"."+r,o):n.set(i.shader,"."+r,t.link(o,{stable:!0}))}}s(Ve),s(qe),Object.keys(e.state).length>0&&(n(a,".dirty=true;"),n.exit(a,".dirty=true;")),n("a1(",t.shared.context,",a0,",t.batchId,");")}(d,m),function(t,e){var r=t.proc("batch",2);t.batchId="0",q(t,r);var n=!1,i=!0;Object.keys(e.context).forEach((function(t){n=n||e.context[t].propDep})),n||(j(t,r,e.context),i=!1);var a=e.framebuffer,o=!1;function s(t){return t.contextDep&&n||t.propDep}a?(a.propDep?n=o=!0:a.contextDep&&n&&(o=!0),o||N(t,r,a)):N(t,r,null),e.state.viewport&&e.state.viewport.propDep&&(n=!0),U(t,r,e),V(t,r,e.state,(function(t){return!s(t)})),(!e.profile||!s(e.profile))&&H(t,r,e,!1,"a1"),e.contextDep=n,e.needsContext=i,e.needsFramebuffer=o;var l=e.shader.progVar;if(l.contextDep&&n||l.propDep)J(t,r,e,null);else{var c=l.append(t,r);if(r(t.shared.gl,".useProgram(",c,".program);"),e.shader.program)J(t,r,e,e.shader.program);else{r(t.shared.vao,".setVAO(null);");var u=t.global.def("{}"),h=r.def(c,".id"),p=r.def(u,"[",h,"]");r(t.cond(p).then(p,".call(this,a0,a1);").else(p,"=",u,"[",h,"]=",t.link((function(t){return X(J,0,e,t,2)})),"(",c,");",p,".call(this,a0,a1);"))}}Object.keys(e.state).length>0&&r(t.shared.current,".dirty=true;"),t.shared.vao&&r(t.shared.vao,".setVAO(null);")}(d,m),t(d.compile(),{destroy:function(){m.shader.program.destroy()}})}}}var Br="webglcontextlost",jr="webglcontextrestored";function Nr(t,e){for(var r=0;r"u"?1:window.devicePixelRatio,f=!1,d={},m=function(t){},g=function(){};if("string"==typeof o?r=document.querySelector(o):"object"==typeof o&&(function(t){return"string"==typeof t.nodeName&&"function"==typeof t.appendChild&&"function"==typeof t.getBoundingClientRect}(o)?r=o:function(t){return"function"==typeof t.drawArrays||"function"==typeof t.drawElements}(o)?i=(a=o).canvas:("gl"in o?a=o.gl:"canvas"in o?i=u(o.canvas):"container"in o&&(n=u(o.container)),"attributes"in o&&(s=o.attributes),"extensions"in o&&(l=c(o.extensions)),"optionalExtensions"in o&&(h=c(o.optionalExtensions)),"onDone"in o&&(m=o.onDone),"profile"in o&&(f=!!o.profile),"pixelRatio"in o&&(p=+o.pixelRatio),"cachedCode"in o&&(d=o.cachedCode))),r&&("canvas"===r.nodeName.toLowerCase()?i=r:n=r),!a){if(!i){var y=function(e,r,n){var i,a=document.createElement("canvas");function o(){var t=window.innerWidth,r=window.innerHeight;if(e!==document.body){var i=a.getBoundingClientRect();t=i.right-i.left,r=i.bottom-i.top}a.width=n*t,a.height=n*r}return t(a.style,{border:0,margin:0,padding:0,top:0,left:0,width:"100%",height:"100%"}),e.appendChild(a),e===document.body&&(a.style.position="absolute",t(e.style,{margin:0,padding:0})),e!==document.body&&"function"==typeof ResizeObserver?(i=new ResizeObserver((function(){setTimeout(o)}))).observe(e):window.addEventListener("resize",o,!1),o(),{canvas:a,onDestroy:function(){i?i.disconnect():window.removeEventListener("resize",o),e.removeChild(a)}}}(n||document.body,0,p);if(!y)return null;i=y.canvas,g=y.onDestroy}void 0===s.premultipliedAlpha&&(s.premultipliedAlpha=!0),a=function(t,e){function r(r){try{return t.getContext(r,e)}catch{return null}}return r("webgl")||r("experimental-webgl")||r("webgl-experimental")}(i,s)}return a?{gl:a,canvas:i,container:n,extensions:l,optionalExtensions:h,pixelRatio:p,profile:f,cachedCode:d,onDone:m,onDestroy:g}:(g(),m("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}(e);if(!r)return null;var n=r.gl,i=n.getContextAttributes(),a=(n.isContextLost(),function(t,e){var r={};function n(e){var n,i=e.toLowerCase();try{n=r[i]=t.getExtension(i)}catch{}return!!n}for(var i=0;i0)if(Array.isArray(e[0])){o=I(e);for(var c=1,u=1;u0)if("number"==typeof t[0]){var i=d.allocType(h.dtype,t.length);O(i,t),f(i,n),d.freeType(i)}else if(Array.isArray(t[0])||x(t[0])){r=I(t);var a=C(t,r,h.dtype);f(a,n),d.freeType(a)}}else if(_(t)){r=t.shape;var o=t.stride,s=0,l=0,c=0,u=0;1===r.length?(s=r[0],l=1,c=o[0],u=0):2===r.length&&(s=r[0],l=r[1],c=o[0],u=o[1]);var m=Array.isArray(t.data)?h.dtype:D(t.data),g=d.allocType(m,s*l);R(g,t.data,s,l,c,u,t.offset),f(g,n),d.freeType(g)}return p},r.profile&&(p.stats=h.stats),p.destroy=function(){c(h)},p},createStream:function(t,e){var r=o.pop();return r||(r=new a(t)),r.bind(),l(r,e,35040,0,1,!1),r},destroyStream:function(t){o.push(t)},clear:function(){b(i).forEach(c),o.forEach(c)},getBuffer:function(t){return t&&t._buffer instanceof a?t._buffer:null},restore:function(){b(i).forEach((function(e){e.buffer=t.createBuffer(),t.bindBuffer(e.type,e.buffer),t.bufferData(e.type,e.persistentData||e.byteLength,e.usage)}))},_initBuffer:l}}(n,p,r),It=function(t,e,r,n){var i={},a=0,o={uint8:B,uint16:j};function s(t){this.id=a++,i[this.id]=this,this.buffer=t,this.primType=4,this.vertCount=0,this.type=0}e.oes_element_index_uint&&(o.uint32=N),s.prototype.bind=function(){this.buffer.bind()};var l=[];function c(n,i,a,o,s,l,c){var u;if(n.buffer.bind(),i){var h=c;!c&&(!x(i)||_(i)&&!x(i.data))&&(h=e.oes_element_index_uint?N:j),r._initBuffer(n.buffer,i,a,h,3)}else t.bufferData(U,l,a),n.buffer.dtype=u||B,n.buffer.usage=a,n.buffer.dimension=3,n.buffer.byteLength=l;if(u=c,!c){switch(n.buffer.dtype){case B:case 5120:u=B;break;case j:case 5122:u=j;break;case N:case 5124:u=N}n.buffer.dtype=u}n.type=u;var p=s;p<0&&(p=n.buffer.byteLength,u===j?p>>=1:u===N&&(p>>=2)),n.vertCount=p;var f=o;if(o<0){f=4;var d=n.buffer.dimension;1===d&&(f=0),2===d&&(f=1),3===d&&(f=4)}n.primType=f}function u(t){n.elementsCount--,delete i[t.id],t.buffer.destroy(),t.buffer=null}return{create:function(t,e){var i=r.create(null,U,!0),a=new s(i._buffer);function l(t){if(t)if("number"==typeof t)i(t),a.primType=4,a.vertCount=0|t,a.type=B;else{var e=null,r=35044,n=-1,s=-1,u=0,h=0;Array.isArray(t)||x(t)||_(t)?e=t:("data"in t&&(e=t.data),"usage"in t&&(r=E[t.usage]),"primitive"in t&&(n=F[t.primitive]),"count"in t&&(s=0|t.count),"type"in t&&(h=o[t.type]),"length"in t?u=0|t.length:(u=s,h===j||5122===h?u*=2:(h===N||5124===h)&&(u*=4))),c(a,e,r,n,s,u,h)}else i(),a.primType=4,a.vertCount=0,a.type=B;return l}return n.elementsCount++,l(t),l._reglType="elements",l._elements=a,l.subdata=function(t,e){return i.subdata(t,e),l},l.destroy=function(){u(a)},l},createStream:function(t){var e=l.pop();return e||(e=new s(r.create(null,U,!0,!1)._buffer)),c(e,t,35040,-1,-1,0,0),e},destroyStream:function(t){l.push(t)},getElements:function(t){return"function"==typeof t&&t._elements instanceof s?t._elements:null},clear:function(){b(i).forEach(u)}}}(n,A,Ct,p),Lt=function(t,e,r,n,i,a,o){for(var s=r.maxAttributes,l=new Array(s),c=0;c=f.byteLength?u.subdata(f):(u.destroy(),e.buffers[c]=null)),e.buffers[c]||(u=e.buffers[c]=i.create(h,34962,!1,!0)),p.buffer=i.getBuffer(u),p.size=0|p.buffer.dimension,p.normalized=!1,p.type=p.buffer.dtype,p.offset=0,p.stride=0,p.divisor=0,p.state=1,s[c]=1):i.getBuffer(h)?(p.buffer=i.getBuffer(h),p.size=0|p.buffer.dimension,p.normalized=!1,p.type=p.buffer.dtype,p.offset=0,p.stride=0,p.divisor=0,p.state=1):i.getBuffer(h.buffer)?(p.buffer=i.getBuffer(h.buffer),p.size=0|(+h.size||p.buffer.dimension),p.normalized=!!h.normalized||!1,p.type="type"in h?S[h.type]:p.buffer.dtype,p.offset=0|(h.offset||0),p.stride=0|(h.stride||0),p.divisor=0|(h.divisor||0),p.state=1):"x"in h&&(p.x=+h.x||0,p.y=+h.y||0,p.z=+h.z||0,p.w=+h.w||0,p.state=2)}for(var d=0;d1)for(var y=0;yt&&(t=e.stats.uniformsCount)})),t},n.getMaxAttributesCount=function(){var t=0;return h.forEach((function(e){e.stats.attributesCount>t&&(t=e.stats.attributesCount)})),t}),{clear:function(){var t=e.deleteShader.bind(e);b(a).forEach(t),a={},b(o).forEach(t),o={},h.forEach((function(t){e.deleteProgram(t.program)})),h.length=0,u={},n.shaderCount=0},program:function(r,i,s,l){var c=u[i];c||(c=u[i]={});var p=c[r];if(p&&(p.refCount++,!l))return p;var m=new f(i,r);return n.shaderCount++,d(m,0,l),p||(c[r]=m),h.push(m),t(m,{destroy:function(){if(m.refCount--,m.refCount<=0){e.deleteProgram(m.program);var t=h.indexOf(m);h.splice(t,1),n.shaderCount--}c[m.vertId].refCount<=0&&(e.deleteShader(o[m.vertId]),delete o[m.vertId],delete u[m.fragId][m.vertId]),Object.keys(u[m.fragId]).length||(e.deleteShader(a[m.fragId]),delete a[m.fragId],delete u[m.fragId])}})},restore:function(){a={},o={};for(var t=0;t=0&&(m[t]=e)}));var v=Object.keys(m);n.textureFormats=v;var A=[];Object.keys(m).forEach((function(t){var e=m[t];A[e]=t}));var k=[];Object.keys(f).forEach((function(t){var e=f[t];k[e]=t}));var M=[];Object.keys(u).forEach((function(t){M[u[t]]=t}));var S=[];Object.keys(h).forEach((function(t){var e=h[t];S[e]=t}));var E=[];Object.keys(c).forEach((function(t){E[c[t]]=t}));var C=v.reduce((function(t,e){var n=m[e];return n===J||n===$||n===J||n===Q||n===et||n===rt||r.ext_srgb&&(n===nt||n===it)?t[n]=n:n===tt||e.indexOf("rgba")>=0?t[n]=X:t[n]=K,t}),{});function I(){this.internalformat=X,this.format=X,this.type=ct,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=37444,this.width=0,this.height=0,this.channels=0}function L(t,e){t.internalformat=e.internalformat,t.format=e.format,t.type=e.type,t.compressed=e.compressed,t.premultiplyAlpha=e.premultiplyAlpha,t.flipY=e.flipY,t.unpackAlignment=e.unpackAlignment,t.colorSpace=e.colorSpace,t.width=e.width,t.height=e.height,t.channels=e.channels}function P(t,e){if("object"==typeof e&&e){if("premultiplyAlpha"in e&&(t.premultiplyAlpha=e.premultiplyAlpha),"flipY"in e&&(t.flipY=e.flipY),"alignment"in e&&(t.unpackAlignment=e.alignment),"colorSpace"in e&&(t.colorSpace=p[e.colorSpace]),"type"in e){var r=e.type;t.type=f[r]}var n=t.width,i=t.height,a=t.channels,o=!1;"shape"in e?(n=e.shape[0],i=e.shape[1],3===e.shape.length&&(a=e.shape[2],o=!0)):("radius"in e&&(n=i=e.radius),"width"in e&&(n=e.width),"height"in e&&(i=e.height),"channels"in e&&(a=e.channels,o=!0)),t.width=0|n,t.height=0|i,t.channels=0|a;var s=!1;if("format"in e){var l=e.format,c=t.internalformat=m[l];t.format=C[c],l in f&&("type"in e||(t.type=f[l])),l in g&&(t.compressed=!0),s=!0}!o&&s?t.channels=bt[t.format]:o&&!s&&t.channels!==_t[t.format]&&(t.format=t.internalformat=_t[t.channels])}}function z(t){e.pixelStorei(37440,t.flipY),e.pixelStorei(37441,t.premultiplyAlpha),e.pixelStorei(37443,t.colorSpace),e.pixelStorei(3317,t.unpackAlignment)}function D(){I.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function O(t,e){var r=null;if(Ft(e)?r=e:e&&(P(t,e),"x"in e&&(t.xOffset=0|e.x),"y"in e&&(t.yOffset=0|e.y),Ft(e.data)&&(r=e.data)),e.copy){var n=a.viewportWidth,i=a.viewportHeight;t.width=t.width||n-t.xOffset,t.height=t.height||i-t.yOffset,t.needsCopy=!0}else if(r){if(x(r))t.channels=t.channels||4,t.data=r,!("type"in e)&&t.type===ct&&(t.type=Bt(r));else if(Pt(r))t.channels=t.channels||4,function(t,e){var r=e.length;switch(t.type){case ct:case ut:case ht:case pt:var n=d.allocType(t.type,r);n.set(e),t.data=n;break;case at:t.data=H(e)}}(t,r),t.alignment=1,t.needsFree=!0;else if(_(r)){var o=r.data;!Array.isArray(o)&&t.type===ct&&(t.type=Bt(o));var s,l,c,u,h,p,f=r.shape,m=r.stride;3===f.length?(c=f[2],p=m[2]):(c=1,p=1),s=f[0],l=f[1],u=m[0],h=m[1],t.alignment=1,t.width=s,t.height=l,t.channels=c,t.format=t.internalformat=_t[c],t.needsFree=!0,function(t,e,r,n,i,a){for(var o=t.width,s=t.height,l=t.channels,c=jt(t,o*s*l),u=0,h=0;h>=i,r.height>>=i,O(r,n[i]),t.mipmask|=1<=0&&!("faces"in e)&&(t.genMipmaps=!0)}if("mag"in e){var n=e.mag;t.magFilter=u[n]}var i=t.wrapS,a=t.wrapT;if("wrap"in e){var o=e.wrap;"string"==typeof o?i=a=c[o]:Array.isArray(o)&&(i=c[o[0]],a=c[o[1]])}else{if("wrapS"in e){var s=e.wrapS;i=c[s]}if("wrapT"in e){var p=e.wrapT;a=c[p]}}if(t.wrapS=i,t.wrapT=a,"anisotropic"in e&&(e.anisotropic,t.anisotropic=e.anisotropic),"mipmap"in e){var f=!1;switch(typeof e.mipmap){case"string":t.mipmapHint=l[e.mipmap],t.genMipmaps=!0,f=!0;break;case"boolean":f=t.genMipmaps=e.mipmap;break;case"object":t.genMipmaps=!1,f=!0}f&&!("min"in e)&&(t.minFilter=mt)}}function Vt(t,n){e.texParameteri(n,10241,t.minFilter),e.texParameteri(n,10240,t.magFilter),e.texParameteri(n,10242,t.wrapS),e.texParameteri(n,10243,t.wrapT),r.ext_texture_filter_anisotropic&&e.texParameteri(n,34046,t.anisotropic),t.genMipmaps&&(e.hint(33170,t.mipmapHint),e.generateMipmap(n))}var qt=0,Ht={},Gt=n.maxTextureUnits,Wt=Array(Gt).map((function(){return null}));function Zt(t){I.call(this),this.mipmask=0,this.internalformat=X,this.id=qt++,this.refCount=1,this.target=t,this.texture=e.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new It,s.profile&&(this.stats={size:0})}function Yt(t){e.activeTexture(vt),e.bindTexture(t.target,t.texture)}function Xt(){var t=Wt[0];t?e.bindTexture(t.target,t.texture):e.bindTexture(W,null)}function $t(t){var r=t.texture,n=t.unit,i=t.target;n>=0&&(e.activeTexture(vt+n),e.bindTexture(i,null),Wt[n]=null),e.deleteTexture(r),t.texture=null,t.params=null,t.pixels=null,t.refCount=0,delete Ht[t.id],o.textureCount--}return t(Zt.prototype,{bind:function(){var t=this;t.bindCount+=1;var r=t.unit;if(r<0){for(var n=0;n0)continue;i.unit=-1}Wt[n]=t,r=n;break}s.profile&&o.maxTextureUnits>l)-o,c.height=c.height||(n.height>>l)-s,Yt(n),F(c,W,o,s,l),Xt(),N(c),i},i.resize=function(t,r){var a=0|t,o=0|r||a;if(a===n.width&&o===n.height)return i;i.width=n.width=a,i.height=n.height=o,Yt(n);for(var l=0;n.mipmask>>l;++l){var c=a>>l,u=o>>l;if(!c||!u)break;e.texImage2D(W,l,n.format,c,u,0,n.format,n.type,null)}return Xt(),s.profile&&(n.stats.size=Ut(n.internalformat,n.type,a,o,!1,!1)),i},i._reglType="texture2d",i._texture=n,s.profile&&(i.stats=n.stats),i.destroy=function(){n.decRef()},i},createCube:function(t,r,n,i,a,l){var c=new Zt(Z);Ht[c.id]=c,o.cubeCount++;var u=new Array(6);function h(t,e,r,n,i,a){var o,l=c.texInfo;for(It.call(l),o=0;o<6;++o)u[o]=At();if("number"!=typeof t&&t){if("object"==typeof t)if(e)q(u[0],t),q(u[1],e),q(u[2],r),q(u[3],n),q(u[4],i),q(u[5],a);else if(Lt(l,t),P(c,t),"faces"in t){var p=t.faces;for(o=0;o<6;++o)L(u[o],c),q(u[o],p[o])}else for(o=0;o<6;++o)q(u[o],t)}else{var f=0|t||1;for(o=0;o<6;++o)V(u[o],f,f)}for(L(c,u[0]),l.genMipmaps?c.mipmask=(u[0].width<<1)-1:c.mipmask=u[0].mipmask,c.internalformat=u[0].internalformat,h.width=u[0].width,h.height=u[0].height,Yt(c),o=0;o<6;++o)wt(u[o],Y+o);for(Vt(l,Z),Xt(),s.profile&&(c.stats.size=Ut(c.internalformat,c.type,h.width,h.height,l.genMipmaps,!0)),h.format=A[c.internalformat],h.type=k[c.type],h.mag=M[l.magFilter],h.min=S[l.minFilter],h.wrapS=E[l.wrapS],h.wrapT=E[l.wrapT],o=0;o<6;++o)Ct(u[o]);return h}return h(t,r,n,i,a,l),h.subimage=function(t,e,r,n,i){var a=0|r,o=0|n,s=0|i,l=j();return L(l,c),l.width=0,l.height=0,O(l,e),l.width=l.width||(c.width>>s)-a,l.height=l.height||(c.height>>s)-o,Yt(c),F(l,Y+t,a,o,s),Xt(),N(l),h},h.resize=function(t){var r=0|t;if(r!==c.width){h.width=c.width=r,h.height=c.height=r,Yt(c);for(var n=0;n<6;++n)for(var i=0;c.mipmask>>i;++i)e.texImage2D(Y+n,i,c.format,r>>i,r>>i,0,c.format,c.type,null);return Xt(),s.profile&&(c.stats.size=Ut(c.internalformat,c.type,h.width,h.height,!1,!0)),h}},h._reglType="textureCube",h._texture=c,s.profile&&(h.stats=c.stats),h.destroy=function(){c.decRef()},h},clear:function(){for(var t=0;t>r,t.height>>r,0,t.internalformat,t.type,null);else for(var n=0;n<6;++n)e.texImage2D(Y+n,r,t.internalformat,t.width>>r,t.height>>r,0,t.internalformat,t.type,null);Vt(t.texInfo,t.target)}))},refresh:function(){for(var t=0;t=0?p=!0:c.indexOf(d)>=0&&(p=!1))),("depthTexture"in M||"depthStencilTexture"in M)&&(A=!(!M.depthTexture&&!M.depthStencilTexture)),"depth"in M&&("boolean"==typeof M.depth?s=M.depth:(_=M.depth,u=!1)),"stencil"in M&&("boolean"==typeof M.stencil?u=M.stencil:(b=M.stencil,s=!1)),"depthStencil"in M&&("boolean"==typeof M.depthStencil?s=u=M.depthStencil:(w=M.depthStencil,s=!1,u=!1))}else a=o=1;var E=null,C=null,I=null,L=null;if(Array.isArray(h))E=h.map(m);else if(h)E=[m(h)];else for(E=new Array(x),r=0;r0&&(s.depth=r[0].depth,s.stencil=r[0].stencil,s.depthStencil=r[0].depthStencil),r[a]?r[a](s):r[a]=M(s)}return t(n,{width:l,height:l,color:o})}return n(e),t(n,{faces:r,resize:function(t){var e,i=0|t;if(i===n.width)return n;var a=n.color;for(e=0;e=0;--t){var e=oe[t];e&&e(wt,null,0)}n.flush(),k&&k.update()}function pe(){!ue&&oe.length>0&&(ue=s.next(he))}function fe(){ue&&(s.cancel(he),ue=null)}function de(t){t.preventDefault(),fe(),se.forEach((function(t){t()}))}function me(t){n.getError(),a.restore(),Ht.restore(),Ct.restore(),Qt.restore(),te.restore(),ee.restore(),Lt.restore(),k&&k.restore(),re.procs.refresh(),pe(),le.forEach((function(t){t()}))}function ge(e){function r(t,e){var r={},n={};return Object.keys(t).forEach((function(i){var a=t[i];if(o.isDynamic(a))n[i]=o.unbox(a,i);else{if(e&&Array.isArray(a))for(var s=0;s0)return h.call(this,function(t){for(;f.length=0},read:ne,destroy:function(){oe.length=0,fe(),ae&&(ae.removeEventListener(Br,de),ae.removeEventListener(jr,me)),Ht.clear(),ee.clear(),te.clear(),Lt.clear(),Qt.clear(),It.clear(),Ct.clear(),k&&k.clear(),ce.forEach((function(t){t()}))},_gl:n,_refresh:we,poll:function(){be(),k&&k.update()},now:Te,stats:p,getCachedCode:function(){return f},preloadCachedCode:function(t){Object.entries(t).forEach((function(t){f[t[0]]=t[1]}))}});return r.onDone(null,Ae),Ae}},"object"==typeof t&&typeof e<"u"?e.exports=n():r.createREGL=n()}}),Xv=f({"node_modules/gl-util/context.js"(t,e){var r=Og();function n(t){if(t.container)if(t.container==document.body)document.body.style.width||(t.canvas.width=t.width||t.pixelRatio*window.innerWidth),document.body.style.height||(t.canvas.height=t.height||t.pixelRatio*window.innerHeight);else{var e=t.container.getBoundingClientRect();t.canvas.width=t.width||e.right-e.left,t.canvas.height=t.height||e.bottom-e.top}}function i(t){return"function"==typeof t.getContext&&"width"in t&&"height"in t}function a(){var t=document.createElement("canvas");return t.style.position="absolute",t.style.top=0,t.style.left=0,t}e.exports=function(t){if(t?"string"==typeof t&&(t={container:t}):t={},(t=i(t)||"string"==typeof(e=t).nodeName&&"function"==typeof e.appendChild&&"function"==typeof e.getBoundingClientRect?{container:t}:function(t){return"function"==typeof t.drawArrays||"function"==typeof t.drawElements}(t)?{gl:t}:r(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0)).pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;var e;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if("string"==typeof t.container){var o=document.querySelector(t.container);if(!o)throw Error("Element "+t.container+" is not found");t.container=o}i(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=a(),t.container.appendChild(t.canvas),n(t))}else if(!t.canvas){if(!(typeof document<"u"))throw Error("Not DOM environment. Use headless-gl.");t.container=document.body||document.documentElement,t.canvas=a(),t.container.appendChild(t.canvas),n(t)}return t.gl||["webgl","experimental-webgl","webgl-experimental"].some((function(e){try{t.gl=t.canvas.getContext(e,t.attrs)}catch{}return t.gl})),t.gl}}}),$v=f({"node_modules/font-atlas/index.js"(t,e){var r=Wv(),n=[32,126];e.exports=function(t){var e=(t=t||{}).shape?t.shape:t.canvas?[t.canvas.width,t.canvas.height]:[512,512],i=t.canvas||document.createElement("canvas"),a=t.font,o="number"==typeof t.step?[t.step,t.step]:t.step||[32,32],s=t.chars||n;if(a&&"string"!=typeof a&&(a=r(a)),Array.isArray(s)){if(2===s.length&&"number"==typeof s[0]&&"number"==typeof s[1]){for(var l=[],c=s[0],u=0;c<=s[1];c++)l[u++]=String.fromCharCode(c);s=l}}else s=String(s).split("");e=e.slice(),i.width=e[0],i.height=e[1];var h=i.getContext("2d");h.fillStyle="#000",h.fillRect(0,0,i.width,i.height),h.font=a,h.textAlign="center",h.textBaseline="middle",h.fillStyle="#fff";var p=o[0]/2,f=o[1]/2;for(c=0;ce[0]-o[0]/2&&(p=o[0]/2,f+=o[1]);return i}}}),Kv=f({"node_modules/bit-twiddle/twiddle.js"(t){function e(t){var e=32;return(t&=-t)&&e--,65535&t&&(e-=16),16711935&t&&(e-=8),252645135&t&&(e-=4),858993459&t&&(e-=2),1431655765&t&&(e-=1),e}t.INT_BITS=32,t.INT_MAX=2147483647,t.INT_MIN=-1<<31,t.sign=function(t){return(t>0)-(t<0)},t.abs=function(t){var e=t>>31;return(t^e)-e},t.min=function(t,e){return e^(t^e)&-(t65535)<<4,e|=r=((t>>>=e)>255)<<3,e|=r=((t>>>=r)>15)<<2,(e|=r=((t>>>=r)>3)<<1)|(t>>>=r)>>1},t.log10=function(t){return t>=1e9?9:t>=1e8?8:t>=1e7?7:t>=1e6?6:t>=1e5?5:t>=1e4?4:t>=1e3?3:t>=100?2:t>=10?1:0},t.popCount=function(t){return 16843009*((t=(858993459&(t-=t>>>1&1431655765))+(t>>>2&858993459))+(t>>>4)&252645135)>>>24},t.countTrailingZeros=e,t.nextPow2=function(t){return t+=0===t,--t,t|=t>>>1,t|=t>>>2,t|=t>>>4,1+((t|=t>>>8)|t>>>16)},t.prevPow2=function(t){return t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,(t|=t>>>16)-(t>>>1)},t.parity=function(t){return t^=t>>>16,t^=t>>>8,t^=t>>>4,27030>>>(t&=15)&1};var r=new Array(256);(function(t){for(var e=0;e<256;++e){var r=e,n=e,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=1&r,--i;t[e]=n<>>8&255]<<16|r[t>>>16&255]<<8|r[t>>>24&255]},t.interleave2=function(t,e){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t&=65535)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e&=65535)|e<<8))|e<<4))|e<<2))|e<<1))<<1},t.deinterleave2=function(t,e){return(t=65535&((t=16711935&((t=252645135&((t=858993459&((t=t>>>e&1431655765)|t>>>1))|t>>>2))|t>>>4))|t>>>16))<<16>>16},t.interleave3=function(t,e,r){return t=1227133513&((t=3272356035&((t=251719695&((t=4278190335&((t&=1023)|t<<16))|t<<8))|t<<4))|t<<2),(t|=(e=1227133513&((e=3272356035&((e=251719695&((e=4278190335&((e&=1023)|e<<16))|e<<8))|e<<4))|e<<2))<<1)|(r=1227133513&((r=3272356035&((r=251719695&((r=4278190335&((r&=1023)|r<<16))|r<<8))|r<<4))|r<<2))<<2},t.deinterleave3=function(t,e){return(t=1023&((t=4278190335&((t=251719695&((t=3272356035&((t=t>>>e&1227133513)|t>>>2))|t>>>4))|t>>>8))|t>>>16))<<22>>22},t.nextCombination=function(t){var r=t|t-1;return r+1|(~r&-~r)-1>>>e(t)+1}}}),Jv=f({"node_modules/dup/dup.js"(t,e){function r(t,e,n){var i=0|t[n];if(i<=0)return[];var a,o=new Array(i);if(n===t.length-1)for(a=0;a"u"&&(e=0),typeof t){case"number":if(t>0)return function(t,e){var r,n;for(r=new Array(t),n=0;n0?n.pop():new ArrayBuffer(t)}function p(t){return new Uint8Array(h(t),0,t)}function f(t){return new Uint16Array(h(2*t),0,t)}function d(t){return new Uint32Array(h(4*t),0,t)}function m(t){return new Int8Array(h(t),0,t)}function g(t){return new Int16Array(h(2*t),0,t)}function y(t){return new Int32Array(h(4*t),0,t)}function v(t){return new Float32Array(h(4*t),0,t)}function x(t){return new Float64Array(h(8*t),0,t)}function _(t){return i?new Uint8ClampedArray(h(t),0,t):p(t)}function b(t){return a?new BigUint64Array(h(8*t),0,t):null}function w(t){return o?new BigInt64Array(h(8*t),0,t):null}function T(t){return new DataView(h(t),0,t)}function A(t){t=e.nextPow2(t);var r=e.log2(t),i=c[r];return i.length>0?i.pop():new n(t)}t.free=function(t){if(n.isBuffer(t))c[e.log2(t.length)].push(t);else{if("[object ArrayBuffer]"!==Object.prototype.toString.call(t)&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,i=0|e.log2(r);l[i].push(t)}},t.freeUint8=t.freeUint16=t.freeUint32=t.freeBigUint64=t.freeInt8=t.freeInt16=t.freeInt32=t.freeBigInt64=t.freeFloat32=t.freeFloat=t.freeFloat64=t.freeDouble=t.freeUint8Clamped=t.freeDataView=function(t){u(t.buffer)},t.freeArrayBuffer=u,t.freeBuffer=function(t){c[e.log2(t.length)].push(t)},t.malloc=function(t,e){if(void 0===e||"arraybuffer"===e)return h(t);switch(e){case"uint8":return p(t);case"uint16":return f(t);case"uint32":return d(t);case"int8":return m(t);case"int16":return g(t);case"int32":return y(t);case"float":case"float32":return v(t);case"double":case"float64":return x(t);case"uint8_clamped":return _(t);case"bigint64":return w(t);case"biguint64":return b(t);case"buffer":return A(t);case"data":case"dataview":return T(t);default:return null}return null},t.mallocArrayBuffer=h,t.mallocUint8=p,t.mallocUint16=f,t.mallocUint32=d,t.mallocInt8=m,t.mallocInt16=g,t.mallocInt32=y,t.mallocFloat32=t.mallocFloat=v,t.mallocFloat64=t.mallocDouble=x,t.mallocUint8Clamped=_,t.mallocBigUint64=b,t.mallocBigInt64=w,t.mallocDataView=T,t.mallocBuffer=A,t.clearCache=function(){for(var t=0;t<32;++t)s.UINT8[t].length=0,s.UINT16[t].length=0,s.UINT32[t].length=0,s.INT8[t].length=0,s.INT16[t].length=0,s.INT32[t].length=0,s.FLOAT[t].length=0,s.DOUBLE[t].length=0,s.BIGUINT64[t].length=0,s.BIGINT64[t].length=0,s.UINT8C[t].length=0,l[t].length=0,c[t].length=0}}}),tx=f({"node_modules/is-plain-obj/index.js"(t,e){var r=Object.prototype.toString;e.exports=function(t){var e;return"[object Object]"===r.call(t)&&(null===(e=Object.getPrototypeOf(t))||e===Object.getPrototypeOf({}))}}}),ex=f({"node_modules/parse-unit/index.js"(t,e){e.exports=function(t,e){e||(e=[0,""]),t=String(t);var r=parseFloat(t,10);return e[0]=r,e[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",e}}}),rx=f({"node_modules/to-px/topx.js"(t,e){var r=ex();function n(t,e){var n=r(getComputedStyle(t).getPropertyValue(e));return n[0]*i(n[1],t)}function i(t,e){switch(e=e||document.body,t=(t||"px").trim().toLowerCase(),(e===window||e===document)&&(e=document.body),t){case"%":return e.clientHeight/100;case"ch":case"ex":return function(t,e){var r=document.createElement("div");r.style["font-size"]="128"+t,e.appendChild(r);var i=n(r,"font-size")/128;return e.removeChild(r),i}(t,e);case"em":return n(e,"font-size");case"rem":return n(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return 96;case"cm":return 96/2.54;case"mm":return 96/25.4;case"pt":return 96/72;case"pc":return 16}return 1}e.exports=i}}),nx=f({"node_modules/detect-kerning/index.js"(t,e){e.exports=i;var r=(i.canvas=document.createElement("canvas")).getContext("2d"),n=a([32,126]);function i(t,e){Array.isArray(t)&&(t=t.join(", "));var i,o={},s=16,l=.05;e&&(2===e.length&&"number"==typeof e[0]?i=a(e):Array.isArray(e)?i=e:(e.o?i=a(e.o):e.pairs&&(i=e.pairs),e.fontSize&&(s=e.fontSize),null!=e.threshold&&(l=e.threshold))),i||(i=n),r.font=s+"px "+t;for(var c=0;cs*l){var f=(p-h)/s;o[u]=1e3*f}}return o}function a(t){for(var e=[],r=t[0];r<=t[1];r++)for(var n=String.fromCharCode(r),i=t[0];i0;n-=4)if(0!==r[n])return Math.floor(.25*(n-3)/e)}e.exports=r,r.canvas=document.createElement("canvas"),r.cache={}}}),ax=f({"node_modules/gl-text/dist.js"(t,e){var r=Zv(),n=Og(),i=Yv(),a=Xv(),o=Lv(),s=Od(),l=$v(),c=Qv(),u=Rg(),h=tx(),p=ex(),f=rx(),d=nx(),m=oy(),g=ix(),y=jg(),v=Kv().nextPow2,x=new o,_=!1;document.body&&((b=document.body.appendChild(document.createElement("div"))).style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(b).fontStretch&&(_=!0),document.body.removeChild(b));var b,w=function(t){var e;"function"==typeof(e=t)&&e._gl&&e.prop&&e.texture&&e.buffer?(t={regl:t},this.gl=t.regl._gl):this.gl=a(t),this.shader=x.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||i({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),x.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(h(t)?t:{})};w.prototype.createShader=function(){var t=this.regl,e=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(t,e){return[e.atlas.width,e.atlas.height]},atlasDim:function(t,e){return[e.atlas.cols,e.atlas.rows]},atlas:function(t,e){return e.atlas.texture},charStep:function(t,e){return e.atlas.step},em:function(t,e){return e.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:"\n\t\t\tprecision highp float;\n\t\t\tattribute float width, charOffset, char;\n\t\t\tattribute vec2 position;\n\t\t\tuniform float fontSize, charStep, em, align, baseline;\n\t\t\tuniform vec4 viewport;\n\t\t\tuniform vec4 color;\n\t\t\tuniform vec2 atlasSize, atlasDim, scale, translate, positionOffset;\n\t\t\tvarying vec2 charCoord, charId;\n\t\t\tvarying float charWidth;\n\t\t\tvarying vec4 fontColor;\n\t\t\tvoid main () {\n\t\t\t\tvec2 offset = floor(em * (vec2(align + charOffset, baseline)\n\t\t\t\t\t+ vec2(positionOffset.x, -positionOffset.y)))\n\t\t\t\t\t/ (viewport.zw * scale.xy);\n\n\t\t\t\tvec2 position = (position + translate) * scale;\n\t\t\t\tposition += offset * scale;\n\n\t\t\t\tcharCoord = position * viewport.zw + viewport.xy;\n\n\t\t\t\tgl_Position = vec4(position * 2. - 1., 0, 1);\n\n\t\t\t\tgl_PointSize = charStep;\n\n\t\t\t\tcharId.x = mod(char, atlasDim.x);\n\t\t\t\tcharId.y = floor(char / atlasDim.x);\n\n\t\t\t\tcharWidth = width * em;\n\n\t\t\t\tfontColor = color / 255.;\n\t\t\t}",frag:"\n\t\t\tprecision highp float;\n\t\t\tuniform float fontSize, charStep, opacity;\n\t\t\tuniform vec2 atlasSize;\n\t\t\tuniform vec4 viewport;\n\t\t\tuniform sampler2D atlas;\n\t\t\tvarying vec4 fontColor;\n\t\t\tvarying vec2 charCoord, charId;\n\t\t\tvarying float charWidth;\n\n\t\t\tfloat lightness(vec4 color) {\n\t\t\t\treturn color.r * 0.299 + color.g * 0.587 + color.b * 0.114;\n\t\t\t}\n\n\t\t\tvoid main () {\n\t\t\t\tvec2 uv = gl_FragCoord.xy - charCoord + charStep * .5;\n\t\t\t\tfloat halfCharStep = floor(charStep * .5 + .5);\n\n\t\t\t\t// invert y and shift by 1px (FF expecially needs that)\n\t\t\t\tuv.y = charStep - uv.y;\n\n\t\t\t\t// ignore points outside of character bounding box\n\t\t\t\tfloat halfCharWidth = ceil(charWidth * .5);\n\t\t\t\tif (floor(uv.x) > halfCharStep + halfCharWidth ||\n\t\t\t\t\tfloor(uv.x) < halfCharStep - halfCharWidth) return;\n\n\t\t\t\tuv += charId * charStep;\n\t\t\t\tuv = uv / atlasSize;\n\n\t\t\t\tvec4 color = fontColor;\n\t\t\t\tvec4 mask = texture2D(atlas, uv);\n\n\t\t\t\tfloat maskY = lightness(mask);\n\t\t\t\t// float colorY = lightness(color);\n\t\t\t\tcolor.a *= maskY;\n\t\t\t\tcolor.a *= opacity;\n\n\t\t\t\t// color.a += .1;\n\n\t\t\t\t// antialiasing, see yiq color space y-channel formula\n\t\t\t\t// color.rgb += (1. - color.rgb) * (1. - mask.rgb);\n\n\t\t\t\tgl_FragColor = color;\n\t\t\t}"});return{regl:t,draw:e,atlas:{}}},w.prototype.update=function(t){var e=this;if("string"==typeof t)t={text:t};else if(!t)return;null!=(t=n(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0)).opacity&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map((function(t){return parseFloat(t)})):this.opacity=parseFloat(t.opacity)),null!=t.viewport&&(this.viewport=u(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null==this.viewport&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),null!=t.kerning&&(this.kerning=t.kerning),null!=t.offset&&("number"==typeof t.offset&&(t.offset=[t.offset,0]),this.positionOffset=y(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!t.font&&(t.font=w.baseFontSize+"px sans-serif");var i,a=!1,o=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach((function(t,n){if("string"==typeof t)try{t=r.parse(t)}catch{t=r.parse(w.baseFontSize+"px "+t)}else{var i=t.style,s=t.weight,l=t.stretch,c=t.variant;t=r.parse(r.stringify(t)),i&&(t.style=i),s&&(t.weight=s),l&&(t.stretch=l),c&&(t.variant=c)}var u=r.stringify({size:w.baseFontSize,family:t.family,stretch:_?t.stretch:void 0,variant:t.variant,weight:t.weight,style:t.style}),h=p(t.size),d=Math.round(h[0]*f(h[1]));if(d!==e.fontSize[n]&&(o=!0,e.fontSize[n]=d),!(e.font[n]&&u==e.font[n].baseString||(a=!0,e.font[n]=w.fonts[u],e.font[n]))){var m=t.family.join(", "),y=[t.style];t.style!=t.variant&&y.push(t.variant),t.variant!=t.weight&&y.push(t.weight),_&&t.weight!=t.stretch&&y.push(t.stretch),e.font[n]={baseString:u,family:m,weight:t.weight,stretch:t.stretch,style:t.style,variant:t.variant,width:{},kerning:{},metrics:g(m,{origin:"top",fontSize:w.baseFontSize,fontStyle:y.join(" ")})},w.fonts[u]=e.font[n]}})),(a||o)&&this.font.forEach((function(n,i){var a=r.stringify({size:e.fontSize[i],family:n.family,stretch:_?n.stretch:void 0,variant:n.variant,weight:n.weight,style:n.style});if(e.fontAtlas[i]=e.shader.atlas[a],!e.fontAtlas[i]){var o=n.metrics;e.shader.atlas[a]=e.fontAtlas[i]={fontString:a,step:2*Math.ceil(e.fontSize[i]*o.bottom*.5),em:e.fontSize[i],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:e.regl.texture()}}null==t.text&&(t.text=e.text)})),"string"==typeof t.text&&t.position&&t.position.length>2){for(var h=Array(.5*t.position.length),x=0;x2){for(var T=!t.position[0].length,A=c.mallocFloat(2*this.count),k=0,M=0;k1?e.align[r]:e.align[0]:e.align;if("number"==typeof n)return n;switch(n){case"right":case"end":return-t;case"center":case"centre":case"middle":return.5*-t}return 0}))),null==this.baseline&&null==t.baseline&&(t.baseline=0),null!=t.baseline&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map((function(t,r){var n=(e.font[r]||e.font[0]).metrics,i=0;return i+=.5*n.bottom,-1*(i+="number"==typeof t?t-n.baseline:-n[t])}))),null!=t.color)if(t.color||(t.color="transparent"),"string"!=typeof t.color&&isNaN(t.color)){var H;if("number"==typeof t.color[0]&&t.color.length>this.counts.length){var G=t.color.length;H=c.mallocUint8(G);for(var W=(t.color.subarray||t.color.slice).bind(t.color),Z=0;Z4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2){var $=Math.max(.5*this.position.length||0,.25*this.color.length||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,.5*this.positionOffset.length||0);this.batch=Array($);for(var K=0;K1?this.counts[K]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[K]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(4*K,4*K+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[K]:this.opacity,baseline:null!=this.baselineOffset[K]?this.baselineOffset[K]:this.baselineOffset[0],align:this.align?null!=this.alignOffset[K]?this.alignOffset[K]:this.alignOffset[0]:0,atlas:this.fontAtlas[K]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(2*K,2*K+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]},w.prototype.destroy=function(){},w.prototype.kerning=!0,w.prototype.position={constant:new Float32Array(2)},w.prototype.translate=null,w.prototype.scale=null,w.prototype.font=null,w.prototype.text="",w.prototype.positionOffset=[0,0],w.prototype.opacity=1,w.prototype.color=new Uint8Array([0,0,0,255]),w.prototype.alignOffset=[0,0],w.maxAtlasSize=1024,w.atlasCanvas=document.createElement("canvas"),w.atlasContext=w.atlasCanvas.getContext("2d",{alpha:!1}),w.baseFontSize=64,w.fonts={},e.exports=w}}),ox=f({"src/lib/prepare_regl.js"(t,e){var r=Zd(),n=Yv();e.exports=function(t,e,i){var a=t._fullLayout,o=!0;return a._glcanvas.each((function(r){if(r.regl)r.regl.preloadCachedCode(i);else if(!r.pick||a._has("parcoords")){try{r.regl=n({canvas:this,attributes:{antialias:!r.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||window.devicePixelRatio,extensions:e||[],cachedCode:i||{}})}catch{o=!1}r.regl||(o=!1),o&&this.addEventListener("webglcontextlost",(function(e){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:e,layer:r.key})}),!1)}})),o||r({container:a._glcontainer.node()}),o}}}),sx=f({"src/traces/scattergl/plot.js"(t,e){var r=hy(),n=zv(),i=Dv(),a=ax(),o=le(),s=Or().selectMode,l=ox(),c=Ye(),u=hi(),h=ry().styleTextSelection,p={};function f(t,e,r,n){var i=t._size,a=t.width*n,o=t.height*n,s=i.l*n,l=i.b*n,c=i.r*n,u=i.t*n,h=i.w*n,p=i.h*n;return[s+e.domain[0]*h,l+r.domain[0]*p,a-c-(1-e.domain[1])*h,o-u-(1-r.domain[1])*p]}(e.exports=function(t,e,d){if(d.length){var m,g,y=t._fullLayout,v=e._scene,x=e.xaxis,_=e.yaxis;if(v){if(!l(t,["ANGLE_instanced_arrays","OES_element_index_uint"],p))return void v.init();var b=v.count,w=y._glcanvas.data()[0].regl;if(u(t,e,d),v.dirty){if((v.line2d||v.error2d)&&!(v.scatter2d||v.fill2d||v.glText)&&w.clear({}),!0===v.error2d&&(v.error2d=i(w)),!0===v.line2d&&(v.line2d=n(w)),!0===v.scatter2d&&(v.scatter2d=r(w)),!0===v.fill2d&&(v.fill2d=n(w)),!0===v.glText)for(v.glText=new Array(b),m=0;mv.glText.length){var T=b-v.glText.length;for(m=0;mr&&(isNaN(e[n])||isNaN(e[n+1]));)n-=2;t.positions=e.slice(r,n+2)}return t})),v.line2d.update(v.lineOptions)),v.error2d){var k=(v.errorXOptions||[]).concat(v.errorYOptions||[]);v.error2d.update(k)}v.scatter2d&&v.scatter2d.update(v.markerOptions),v.fillOrder=o.repeat(null,b),v.fill2d&&(v.fillOptions=v.fillOptions.map((function(t,e){var r=d[e];if(t&&r&&r[0]&&r[0].trace){var n,i,a=r[0],o=a.trace,s=a.t,l=v.lineOptions[e],c=[];o._ownfill&&c.push(e),o._nexttrace&&c.push(e+1),c.length&&(v.fillOrder[e]=c);var u,h,p=[],f=l&&l.positions||s.positions;if("tozeroy"===o.fill){for(u=0;uu&&isNaN(f[h+1]);)h-=2;0!==f[u+1]&&(p=[f[u],0]),p=p.concat(f.slice(u,h+2)),0!==f[h+1]&&(p=p.concat([f[h],0]))}else if("tozerox"===o.fill){for(u=0;uu&&isNaN(f[h]);)h-=2;0!==f[u]&&(p=[0,f[u+1]]),p=p.concat(f.slice(u,h+2)),0!==f[h]&&(p=p.concat([0,f[h+1]]))}else if("toself"===o.fill||"tonext"===o.fill){for(p=[],n=0,t.splitNull=!0,i=0;i-1;for(m=0;ma&&l||ih?_.sizeAvg||Math.max(_.size,3):i(e,x),f=0;f2?(n=h[0],a=h[2],i=h[1],o=h[3]):h.length?(n=i=h[0],a=o=h[1]):(n=h.x,i=h.y,a=h.x+h.width,o=h.y+h.height),p.length>2?(s=p[0],c=p[2],l=p[1],u=p[3]):p.length?(s=l=p[0],c=u=p[1]):(s=p.x,l=p.y,c=p.x+p.width,u=p.y+p.height),[s,i,c,o]}function p(t){if("number"==typeof t)return[t,t,t,t];if(2===t.length)return[t[0],t[1],t[0],t[1]];{let e=s(t);return[e.x,e.y,e.x+e.width,e.y+e.height]}}e.exports=c,c.prototype.render=function(...t){return t.length&&this.update(...t),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?null==this.planned&&(this.planned=a((()=>{this.draw(),this.dirty=!0,this.planned=null}))):(this.draw(),this.dirty=!0,a((()=>{this.dirty=!1}))),this)},c.prototype.update=function(...t){if(!t.length)return;for(let e=0;ee||!c.lower&&t{e[a+r]=n}))}this.scatter.draw(...e)}else this.scatter.draw();return this},c.prototype.destroy=function(){return this.traces.forEach((t=>{t.buffer&&t.buffer.destroy&&t.buffer.destroy()})),this.traces=null,this.passes=null,this.scatter.destroy(),this}}}),xx=f({"src/traces/splom/plot.js"(t,e){var r=vx(),n=le(),i=xe(),a=Or().selectMode;function o(t,e){var o,s,l,c,u,h=t._fullLayout,p=h._size,f=e.trace,d=e.t,m=h._splomScenes[f.uid],g=m.matrixOptions,y=g.cdata,v=h._glcanvas.data()[0].regl,x=h.dragmode;if(0!==y.length){g.lower=f.showupperhalf,g.upper=f.showlowerhalf,g.diagonal=f.diagonal.visible;var _=f._visibleDims,b=y.length,w=m.viewOpts={};for(w.ranges=new Array(b),w.domains=new Array(b),u=0;u<_.length;u++){l=_[u];var T=w.ranges[u]=new Array(4),A=w.domains[u]=new Array(4);(o=i.getFromId(t,f._diag[l][0]))&&(T[0]=o._rl[0],T[2]=o._rl[1],A[0]=o.domain[0],A[2]=o.domain[1]),(s=i.getFromId(t,f._diag[l][1]))&&(T[1]=s._rl[0],T[3]=s._rl[1],A[1]=s.domain[0],A[3]=s.domain[1])}var k=t._context.plotGlPixelRatio,M=p.l*k,S=p.b*k,E=p.w*k,C=p.h*k;w.viewport=[M,S,E+M,C+S],!0===m.matrix&&(m.matrix=r(v));var I=h.clickmode.indexOf("select")>-1,L=!0;if(a(x)||f.selectedpoints||I){var P=f._length;if(f.selectedpoints){m.selectBatch=f.selectedpoints;var z=f.selectedpoints,D={};for(l=0;l=e[r][0]&&t<=e[r][1])return!0;return!1}(r,n))return r;var i=t?-1:1,a=0,o=e.length-1;if(i<0){var s=a;a=o,o=s}for(var l=e[a],u=l,p=a;i*pe){p=n;break}}if(a=u,isNaN(a)&&(a=isNaN(h)||isNaN(p)?isNaN(h)?p:h:e-c[h][1]t[1]+n||e=.9*t[1]+.1*t[0]?"n":e<=.9*t[0]+.1*t[1]?"s":"ns"}(d,e);m&&(o.interval=l[a],o.intervalPix=d,o.region=m)}}if(t.ordinal&&!o.region){var y=t.unitTickvals,v=t.unitToPaddedPx.invert(e);for(n=0;n=x[0]&&v<=x[1]){o.clickableOrdinalRange=x;break}}}return o}function w(t,e){n.event.sourceEvent.stopPropagation();var i=e.height-n.mouse(t)[1]-2*r.verticalPadding,a=e.brush.svgBrush;a.wasDragged=!0,a._dragging=!0,a.grabbingBar?a.newExtent=[i-a.grabPoint,i+a.barLength-a.grabPoint].map(e.unitToPaddedPx.invert):a.newExtent=[a.startExtent,e.unitToPaddedPx.invert(i)].sort(o),e.brush.filterSpecified=!0,a.extent=a.stayingIntervals.concat([a.newExtent]),a.brushCallback(e),_(t.parentNode)}function T(t,e){var i=b(e,e.height-n.mouse(t)[1]-2*r.verticalPadding),a="crosshair";i.clickableOrdinalRange?a="pointer":i.region&&(a=i.region+"-resize"),n.select(document.body).style("cursor",a)}function A(t){t.on("mousemove",(function(t){n.event.preventDefault(),t.parent.inBrushDrag||T(this,t)})).on("mouseleave",(function(t){t.parent.inBrushDrag||y()})).call(n.behavior.drag().on("dragstart",(function(t){!function(t,e){n.event.sourceEvent.stopPropagation();var i=e.height-n.mouse(t)[1]-2*r.verticalPadding,a=e.unitToPaddedPx.invert(i),o=e.brush,s=b(e,i),l=s.interval,c=o.svgBrush;if(c.wasDragged=!1,c.grabbingBar="ns"===s.region,c.grabbingBar){var u=l.map(e.unitToPaddedPx);c.grabPoint=i-u[0]-r.verticalPadding,c.barLength=u[1]-u[0]}c.clickableOrdinalRange=s.clickableOrdinalRange,c.stayingIntervals=e.multiselect&&o.filterSpecified?o.filter.getConsolidated():[],l&&(c.stayingIntervals=c.stayingIntervals.filter((function(t){return t[0]!==l[0]&&t[1]!==l[1]}))),c.startExtent=s.region?l["s"===s.region?1:0]:a,e.parent.inBrushDrag=!0,c.brushStartCallback()}(this,t)})).on("drag",(function(t){w(this,t)})).on("dragend",(function(t){!function(t,e){var r=e.brush,i=r.filter,a=r.svgBrush;a._dragging||(T(t,e),w(t,e),e.brush.svgBrush.wasDragged=!1),a._dragging=!1,n.event.sourceEvent.stopPropagation();var o=a.grabbingBar;if(a.grabbingBar=!1,a.grabLocation=void 0,e.parent.inBrushDrag=!1,y(),!a.wasDragged)return a.wasDragged=void 0,a.clickableOrdinalRange?r.filterSpecified&&e.multiselect?a.extent.push(a.clickableOrdinalRange):(a.extent=[a.clickableOrdinalRange],r.filterSpecified=!0):o?(a.extent=a.stayingIntervals,0===a.extent.length&&M(r)):M(r),a.brushCallback(e),_(t.parentNode),void a.brushEndCallback(r.filterSpecified?i.getConsolidated():[]);var s=function(){i.set(i.getConsolidated())};if(e.ordinal){var l=e.unitTickvals;l[l.length-1]a.newExtent[0];a.extent=a.stayingIntervals.concat(c?[a.newExtent]:[]),a.extent.length||M(r),a.brushCallback(e),c?_(t.parentNode,s):(s(),_(t.parentNode))}else s();a.brushEndCallback(r.filterSpecified?i.getConsolidated():[])}(this,t)})))}function k(t,e){return t[0]-e[0]}function M(t){t.filterSpecified=!1,t.svgBrush.extent=[[-1/0,1/0]]}function S(t){return function(e){var r=e.brush,n=function(t){return t.svgBrush.extent.map((function(t){return t.slice()}))}(r),i=n.slice();r.filter.set(i),t()}}function E(t){for(var e,r=t.slice(),n=[],i=r.shift();i;){for(e=i.slice();(i=r.shift())&&i[0]<=e[1];)e[1]=Math.max(e[1],i[1]);n.push(e)}return 1===n.length&&n[0][0]>n[0][1]&&(n=[]),n}e.exports={makeBrush:function(t,e,r,n,i,a){var s=function(){var t,e,r=[];return{set:function(n){1===(r=n.map((function(t){return t.slice().sort(o)})).sort(k)).length&&r[0][0]===-1/0&&r[0][1]===1/0&&(r=[[0,-1]]),t=E(r),e=r.reduce((function(t,e){return[Math.min(t[0],e[0]),Math.max(t[1],e[1])]}),[1/0,-1/0])},get:function(){return r.slice()},getConsolidated:function(){return t},getBounds:function(){return e}}}();return s.set(r),{filter:s,filterSpecified:e,svgBrush:{extent:[],brushStartCallback:n,brushCallback:S(i),brushEndCallback:a}}},ensureAxisBrush:function(t,e,n){var o=t.selectAll("."+r.cn.axisBrush).data(a,i);o.enter().append("g").classed(r.cn.axisBrush,!0),function(t,e,n){var i=n._context.staticPlot,o=t.selectAll(".background").data(a);o.enter().append("rect").classed("background",!0).call(f).call(d).style("pointer-events",i?"none":"auto").attr("transform",s(0,r.verticalPadding)),o.call(A).attr("height",(function(t){return t.height-r.verticalPadding}));var l=t.selectAll(".highlight-shadow").data(a);l.enter().append("line").classed("highlight-shadow",!0).attr("x",-r.bar.width/2).attr("stroke-width",r.bar.width+r.bar.strokeWidth).attr("stroke",e).attr("opacity",r.bar.strokeOpacity).attr("stroke-linecap","butt"),l.attr("y1",(function(t){return t.height})).call(v);var c=t.selectAll(".highlight").data(a);c.enter().append("line").classed("highlight",!0).attr("x",-r.bar.width/2).attr("stroke-width",r.bar.width-r.bar.strokeWidth).attr("stroke",r.bar.fillColor).attr("opacity",r.bar.fillOpacity).attr("stroke-linecap","butt"),c.attr("y1",(function(t){return t.height})).call(v)}(o,e,n)},cleanRanges:function(t,e){if(Array.isArray(t[0])?(t=t.map((function(t){return t.sort(o)})),t=e.multiselect?E(t.sort(k)):[t[0]]):t=[t.sort(o)],e.tickvals){var r=e.tickvals.slice().sort(o);if(!(t=t.map((function(t){var e=[p(0,r,t[0],[]),p(1,r,t[1],[])];if(e[1]>e[0])return e})).filter((function(t){return t}))).length)return}return t.length>1?t:t[0]}}}}),Px=f({"src/traces/parcoords/defaults.js"(t,e){var r=le(),n=Ee().hasColorscale,i=qe(),a=Aa().defaults,o=je(),s=ir(),l=Ex(),c=Lx(),u=Cx().maxDimensionCount,h=hx();function p(t,e,n,i){function a(n,i){return r.coerce(t,e,l.dimensions,n,i)}var o=a("values"),u=a("visible");if(o&&o.length||(u=e.visible=!1),u){a("label"),a("tickvals"),a("ticktext"),a("tickformat");var h=a("range");e._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:h},s.setConvert(e._ax,i.layout),a("multiselect");var p=a("constraintrange");p&&(e.constraintrange=c.cleanRanges(p,e))}}e.exports=function(t,e,s,c){function f(n,i){return r.coerce(t,e,l,n,i)}var d=t.dimensions;Array.isArray(d)&&d.length>u&&(r.log("parcoords traces support up to "+u+" dimensions at the moment"),d.splice(u));var m=o(t,e,{name:"dimensions",layout:c,handleItemDefaults:p}),g=function(t,e,a,o,s){var l=s("line.color",a);if(n(t,"line")&&r.isArrayOrTypedArray(l)){if(l.length)return s("line.colorscale"),i(t,e,o,s,{prefix:"line.",cLetter:"c"}),l.length;e.line.color=a}return 1/0}(t,e,s,c,f);a(e,c,f),(!Array.isArray(m)||!m.length)&&(e.visible=!1),h(e,m,"values",g);var y=r.extendFlat({},c.font,{size:Math.round(c.font.size/1.2)});r.coerceFont(f,"labelfont",y),r.coerceFont(f,"tickfont",y,{autoShadowDflt:!0}),r.coerceFont(f,"rangefont",y),f("labelangle"),f("labelside"),f("unselected.line.color"),f("unselected.line.opacity")}}}),zx=f({"src/traces/parcoords/calc.js"(t,e){var r=le().isArrayOrTypedArray,n=Ze(),i=Ix().wrap;e.exports=function(t,e){var a,o;return n.hasColorscale(e,"line")&&r(e.line.color)?(a=e.line.color,o=n.extractOpts(e.line).colorscale,n.calc(t,e,{vals:a,containerStr:"line",cLetter:"c"})):(a=function(t){for(var e=new Array(t),r=0;r>>16,(65280&t)>>>8,255&t],alpha:1};if("number"==typeof t)return{space:"rgb",values:[t>>>16,(65280&t)>>>8,255&t],alpha:1};if(t=String(t).toLowerCase(),Ox.default[t])a=Ox.default[t].slice(),i="rgb";else if("transparent"===t)o=0,i="rgb",a=[0,0,0];else if("#"===t[0]){var s=t.slice(1),l=s.length;o=1,l<=4?(a=[parseInt(s[0]+s[0],16),parseInt(s[1]+s[1],16),parseInt(s[2]+s[2],16)],4===l&&(o=parseInt(s[3]+s[3],16)/255)):(a=[parseInt(s[0]+s[1],16),parseInt(s[2]+s[3],16),parseInt(s[4]+s[5],16)],8===l&&(o=parseInt(s[6]+s[7],16)/255)),a[0]||(a[0]=0),a[1]||(a[1]=0),a[2]||(a[2]=0),i="rgb"}else if(n=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(t)){var c=n[1],u="cmyk"===(i=c.replace(/a$/,""))?4:"gray"===i?1:3;a=n[2].trim().split(/\s*[,\/]\s*|\s+/),"color"===i&&(i=a.shift()),o=(a=a.map((function(t,e){if("%"===t[t.length-1])return t=parseFloat(t)/100,3===e?t:"rgb"===i?255*t:"h"===i[0]||"l"===i[0]&&!e?100*t:"lab"===i?125*t:"lch"===i?e<2?150*t:360*t:"o"!==i[0]||e?"oklab"===i?.4*t:"oklch"===i?e<2?.4*t:360*t:t:t;if("h"===i[e]||2===e&&"h"===i[i.length-1]){if(void 0!==Fx[t])return Fx[t];if(t.endsWith("deg"))return parseFloat(t);if(t.endsWith("turn"))return 360*parseFloat(t);if(t.endsWith("grad"))return 360*parseFloat(t)/400;if(t.endsWith("rad"))return 180*parseFloat(t)/Math.PI}return"none"===t?0:parseFloat(t)}))).length>u?a.pop():1}else/[0-9](?:\s|\/|,)/.test(t)&&(a=t.match(/([0-9]+)/g).map((function(t){return parseFloat(t)})),i=(null==(r=null==(e=t.match(/([a-z])/gi))?void 0:e.join(""))?void 0:r.toLowerCase())||"rgb");return{space:i,values:a,alpha:o}}var Ox,Rx,Fx,Bx,jx,Nx=p({"node_modules/color-parse/index.js"(){var r,n;n=null!=(r=Id())?t(s(r)):{},Ox=m(e(n,"default",{value:r,enumerable:!0}),r),Rx=Dx,Fx={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}}),Ux=p({"node_modules/color-space/rgb.js"(){Bx={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}}}),Vx=p({"node_modules/color-space/hsl.js"(){Ux(),jx={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(t){var e,r,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,c=0;if(0===s)return[a=255*l,a,a];for(e=2*l-(r=l<.5?l*(1+s):l+s-l*s),i=[0,0,0];c<3;)(n=o+1/3*-(c-1))<0?n++:n>1&&n--,a=6*n<1?e+6*(r-e)*n:2*n<1?r:3*n<2?e+(r-e)*(2/3-n)*6:e,i[c++]=255*a;return i}},Bx.hsl=function(t){var e,r,n=t[0]/255,i=t[1]/255,a=t[2]/255,o=Math.min(n,i,a),s=Math.max(n,i,a),l=s-o;return s===o?e=0:n===s?e=(i-a)/l:i===s?e=2+(a-n)/l:a===s&&(e=4+(n-i)/l),(e=Math.min(60*e,360))<0&&(e+=360),r=(o+s)/2,[e,100*(s===o?0:r<=.5?l/(s+o):l/(2-s-o)),100*r]}}}),qx={};function Hx(t){Array.isArray(t)&&t.raw&&(t=String.raw(...arguments)),t instanceof Number&&(t=+t);var e,r=Rx(t);if(!r.space)return[];let n="h"===r.space[0]?jx.min:Bx.min,i="h"===r.space[0]?jx.max:Bx.max;return(e=Array(3))[0]=Math.min(Math.max(r.values[0],n[0]),i[0]),e[1]=Math.min(Math.max(r.values[1],n[1]),i[1]),e[2]=Math.min(Math.max(r.values[2],n[2]),i[2]),"h"===r.space[0]&&(e=jx.rgb(e)),e.push(Math.min(Math.max(r.alpha,0),1)),e}d(qx,{default:()=>Hx});var Gx=p({"node_modules/color-rgba/index.js"(){Nx(),Ux(),Vx()}}),Wx=f({"src/traces/parcoords/helpers.js"(t){var e=le().isTypedArray;t.convertTypedArray=function(t){return e(t)?Array.prototype.slice.call(t):t},t.isOrdinal=function(t){return!!t.tickvals},t.isVisible=function(t){return t.visible||!("visible"in t)}}}),Zx=f({"src/traces/parcoords/lines.js"(t,e){var r=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join("\n"),n=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join("\n"),i=Cx().maxDimensionCount,a=le(),o=1e-6,s=2048,l=new Uint8Array(4),c=new Uint8Array(4),u={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function h(t,e,r,n,i){var a=t._gl;a.enable(a.SCISSOR_TEST),a.scissor(e,r,n,i),t.clear({color:[0,0,0,0],depth:1})}function p(t,e,r,n,i,a){var o=a.key;r.drawCompleted||(function(t){t.read({x:0,y:0,width:1,height:1,data:l})}(t),r.drawCompleted=!0),function s(l){var c=Math.min(n,i-l*n);0===l&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],h(t,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),!r.clearOnly&&(a.count=2*c,a.offset=2*l*n,e(a),l*n+c>>8*e)%256/255}function g(t,e,r){for(var n=new Array(8*e),i=0,a=0;au&&(u=t[n].dim1.canvasX,a=n);0===l&&h(k,0,0,o.canvasWidth,o.canvasHeight);var f=function(t){var e,r,n,i=[[],[]];for(n=0;n<64;n++){var a=!t&&ns._length&&(M=M.slice(0,s._length));var C,L=s.tickvals;function P(t,e){return{val:t,text:C[e]}}function z(t,e){return t.val-e.val}if(i(L)&&L.length){n.isTypedArray(L)&&(L=Array.from(L)),C=s.ticktext,i(C)&&C.length?C.length>L.length?C=C.slice(0,L.length):L.length>C.length&&(L=L.slice(0,C.length)):C=L.map(a(s.tickformat));for(var D=1;D=n||l>=i)return;var c=t.lineLayer.readPixel(s,i-1-l),u=0!==c[3],h=u?c[2]+256*(c[1]+256*c[0]):null,p={x:s,y:l,clientX:e.clientX,clientY:e.clientY,dataIndex:t.model.key,curveNumber:h};h!==C&&(u?a.hover(p):a.unhover&&a.unhover(p),C=h)}})),E.style("opacity",(function(t){return t.pick?0:1})),f.style("background","rgba(255, 255, 255, 0)");var B=f.selectAll("."+_.cn.parcoords).data(S,d);B.exit().remove(),B.enter().append("g").classed(_.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),B.attr("transform",(function(t){return c(t.model.translateX,t.model.translateY)}));var j=B.selectAll("."+_.cn.parcoordsControlView).data(m,d);j.enter().append("g").classed(_.cn.parcoordsControlView,!0),j.attr("transform",(function(t){return c(t.model.pad.l,t.model.pad.t)}));var N=j.selectAll("."+_.cn.yAxis).data((function(t){return t.dimensions}),d);N.enter().append("g").classed(_.cn.yAxis,!0),j.each((function(t){O(N,t,x)})),E.each((function(t){if(t.viewModel){!t.lineLayer||a?t.lineLayer=w(this,t):t.lineLayer.update(t),(t.key||0===t.key)&&(t.viewModel[t.key]=t.lineLayer);var e=!t.context||a;t.lineLayer.render(t.viewModel.panels,e)}})),N.attr("transform",(function(t){return c(t.xScale(t.xIndex),0)})),N.call(r.behavior.drag().origin((function(t){return t})).on("drag",(function(t){var e=t.parent;k.linePickActive(!1),t.x=Math.max(-_.overdrag,Math.min(t.model.width+_.overdrag,r.event.x)),t.canvasX=t.x*t.model.canvasPixelRatio,N.sort((function(t,e){return t.x-e.x})).each((function(e,r){e.xIndex=r,e.x=t===e?e.x:e.xScale(e.xIndex),e.canvasX=e.x*e.model.canvasPixelRatio})),O(N,e,x),N.filter((function(e){return 0!==Math.abs(t.xIndex-e.xIndex)})).attr("transform",(function(t){return c(t.xScale(t.xIndex),0)})),r.select(this).attr("transform",c(t.x,0)),N.each((function(r,n,i){i===t.parent.key&&(e.dimensions[n]=r)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!I(e)),e.focusLayer.render&&e.focusLayer.render(e.panels)})).on("dragend",(function(t){var e=t.parent;t.x=t.xScale(t.xIndex),t.canvasX=t.x*t.model.canvasPixelRatio,O(N,e,x),r.select(this).attr("transform",(function(t){return c(t.x,0)})),e.contextLayer&&e.contextLayer.render(e.panels,!1,!I(e)),e.focusLayer&&e.focusLayer.render(e.panels),e.pickLayer&&e.pickLayer.render(e.panels,!0),k.linePickActive(!0),a&&a.axesMoved&&a.axesMoved(e.key,e.dimensions.map((function(t){return t.crossfilterDimensionIndex})))}))),N.exit().remove();var U=N.selectAll("."+_.cn.axisOverlays).data(m,d);U.enter().append("g").classed(_.cn.axisOverlays,!0),U.selectAll("."+_.cn.axis).remove();var V=U.selectAll("."+_.cn.axis).data(m,d);V.enter().append("g").classed(_.cn.axis,!0),V.each((function(t){var e=t.model.height/t.model.tickDistance,n=t.domainScale,i=n.domain();r.select(this).call(r.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(e,t.tickFormat).tickValues(t.ordinal?i:null).tickFormat((function(e){return v.isOrdinal(t)?e:R(t.model.dimensions[t.visibleIndex],e)})).scale(n)),h.font(V.selectAll("text"),t.model.tickFont)})),V.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),V.selectAll("text").style("cursor","default");var q=U.selectAll("."+_.cn.axisHeading).data(m,d);q.enter().append("g").classed(_.cn.axisHeading,!0);var H=q.selectAll("."+_.cn.axisTitle).data(m,d);H.enter().append("text").classed(_.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",o?"none":"auto"),H.text((function(t){return t.label})).each((function(e){var n=r.select(this);h.font(n,e.model.labelFont),u.convertToTspans(n,t)})).attr("transform",(function(t){var e=D(t.model.labelAngle,t.model.labelSide),r=_.axisTitleOffset;return(e.dir>0?"":c(0,2*r+t.model.height))+l(e.degrees)+c(-r*e.dx,-r*e.dy)})).attr("text-anchor",(function(t){var e=D(t.model.labelAngle,t.model.labelSide);return 2*Math.abs(e.dx)>Math.abs(e.dy)?e.dir*e.dx<0?"start":"end":"middle"}));var G=U.selectAll("."+_.cn.axisExtent).data(m,d);G.enter().append("g").classed(_.cn.axisExtent,!0);var W=G.selectAll("."+_.cn.axisExtentTop).data(m,d);W.enter().append("g").classed(_.cn.axisExtentTop,!0),W.attr("transform",c(0,-_.axisExtentOffset));var Z=W.selectAll("."+_.cn.axisExtentTopText).data(m,d);Z.enter().append("text").classed(_.cn.axisExtentTopText,!0).call(z),Z.text((function(t){return F(t,!0)})).each((function(t){h.font(r.select(this),t.model.rangeFont)}));var Y=G.selectAll("."+_.cn.axisExtentBottom).data(m,d);Y.enter().append("g").classed(_.cn.axisExtentBottom,!0),Y.attr("transform",(function(t){return c(0,t.model.height+_.axisExtentOffset)}));var X=Y.selectAll("."+_.cn.axisExtentBottomText).data(m,d);X.enter().append("text").classed(_.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(z),X.text((function(t){return F(t,!1)})).each((function(t){h.font(r.select(this),t.model.rangeFont)})),b.ensureAxisBrush(U,T,t)}}}),Xx=f({"src/traces/parcoords/plot.js"(t,e){var r=Yx(),n=ox(),i=Wx().isVisible,a={};function o(t,e,r){var n=e.indexOf(r),i=t.indexOf(n);return-1===i&&(i+=e.length),i}(e.exports=function(t,e){var s=t._fullLayout;if(n(t,[],a)){var l={},c={},u={},h={},p=s._size;e.forEach((function(e,r){var n=e[0].trace;u[r]=n.index;var i=h[r]=n.index;l[r]=t.data[i].dimensions,c[r]=t.data[i].dimensions.slice()})),r(t,e,{width:p.w,height:p.h,margin:{t:p.t,r:p.r,b:p.b,l:p.l}},{filterChanged:function(e,r,n){var i=c[e][r],a=n.map((function(t){return t.slice()})),o="dimensions["+r+"].constraintrange",l=s._tracePreGUI[t._fullData[u[e]]._fullInput.uid];if(void 0===l[o]){var p=i.constraintrange;l[o]=p||null}var f=t._fullData[u[e]].dimensions[r];a.length?(1===a.length&&(a=a[0]),i.constraintrange=a,f.constraintrange=a.slice(),a=[a]):(delete i.constraintrange,delete f.constraintrange,a=null);var d={};d[o]=a,t.emit("plotly_restyle",[d,[h[e]]])},hover:function(e){t.emit("plotly_hover",e)},unhover:function(e){t.emit("plotly_unhover",e)},axesMoved:function(e,r){var n=function(t,e){return function(r,n){return o(t,e,r)-o(t,e,n)}}(r,c[e].filter(i));l[e].sort(n),c[e].filter((function(t){return!i(t)})).sort((function(t){return c[e].indexOf(t)})).forEach((function(t){l[e].splice(l[e].indexOf(t),1),l[e].splice(c[e].indexOf(t),0,t)})),t.emit("plotly_restyle",[{dimensions:[l[e]]},[h[e]]])}})}}).reglPrecompiled=a}}),$x=f({"src/traces/parcoords/base_plot.js"(t){var e=x(),r=we().getModuleCalcData,n=Xx(),i=ke();t.name="parcoords",t.plot=function(t){var e=r(t.calcdata,"parcoords")[0];e.length&&n(t,e)},t.clean=function(t,e,r,n){var i=n._has&&n._has("parcoords"),a=e._has&&e._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())},t.toSVG=function(t){var r=t._fullLayout._glimages,n=e.select(t).selectAll(".svg-container");n.filter((function(t,e){return e===n.size()-1})).selectAll(".gl-canvas-context, .gl-canvas-focus").each((function(){var t=this,e=t.toDataURL("image/png");r.append("svg:image").attr({xmlns:i.svg,"xlink:href":e,preserveAspectRatio:"none",x:0,y:0,width:t.style.width,height:t.style.height})})),window.setTimeout((function(){e.selectAll("#filterBarPattern").attr("id","filterBarPattern")}),60)}}}),Kx=f({"src/traces/parcoords/base_index.js"(t,e){e.exports={attributes:Ex(),supplyDefaults:Px(),calc:zx(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:$x(),categories:["gl","regl","noOpacity","noHover"],meta:{}}}}),Jx=f({"src/traces/parcoords/index.js"(t,e){var r=Kx();r.plot=Xx(),e.exports=r}}),Qx=f({"lib/parcoords.js"(t,e){e.exports=Jx()}}),t_=f({"src/traces/parcats/attributes.js"(t,e){var r=R().extendFlat,n=U(),i=F(),a=Pe(),o=Ot().hovertemplateAttrs,s=Aa().attributes,l=r({editType:"calc"},a("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:o({editType:"plot",arrayOk:!1},{keys:["count","probability"]})});e.exports={domain:s({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:r({},n.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:o({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:i({editType:"calc"}),tickfont:i({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:l,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}}}),e_=f({"src/traces/parcats/defaults.js"(t,e){var r=le(),n=Ee().hasColorscale,i=qe(),a=Aa().defaults,o=je(),s=t_(),l=hx(),c=E().isTypedArraySpec;function u(t,e){function n(n,i){return r.coerce(t,e,s.dimensions,n,i)}var i=n("values"),a=n("visible");if(i&&i.length||(a=e.visible=!1),a){n("label"),n("displayindex",e._index);var o,l=t.categoryarray,u=r.isArrayOrTypedArray(l)&&l.length>0||c(l);u&&(o="array");var h=n("categoryorder",o);"array"===h?(n("categoryarray"),n("ticktext")):(delete t.categoryarray,delete t.ticktext),!u&&"array"===h&&(e.categoryorder="trace")}}e.exports=function(t,e,c,h){function p(n,i){return r.coerce(t,e,s,n,i)}var f=o(t,e,{name:"dimensions",handleItemDefaults:u}),d=function(t,e,a,o,s){s("line.shape"),s("line.hovertemplate");var l=s("line.color",o.colorway[0]);if(n(t,"line")&&r.isArrayOrTypedArray(l)){if(l.length)return s("line.colorscale"),i(t,e,o,s,{prefix:"line.",cLetter:"c"}),l.length;e.line.color=a}return 1/0}(t,e,c,h,p);a(e,h,p),(!Array.isArray(f)||!f.length)&&(e.visible=!1),l(e,f,"values",d),p("hoveron"),p("hovertemplate"),p("arrangement"),p("bundlecolors"),p("sortpaths"),p("counts");var m=h.font;r.coerceFont(p,"labelfont",m,{overrideDflt:{size:Math.round(m.size)}}),r.coerceFont(p,"tickfont",m,{autoShadowDflt:!0,overrideDflt:{size:Math.round(m.size/1.2)}})}}}),r_=f({"src/traces/parcats/calc.js"(t,e){var r=Ix().wrap,n=Ee().hasColorscale,i=We(),a=ie(),o=Qe(),s=le(),l=A();function c(t,e,r,n){return{dimensionInd:t,categoryInd:e,categoryValue:r,displayInd:e,categoryLabel:n,valueInds:[],count:0,dragY:null}}function u(t,e,r){t.valueInds.push(e),t.count+=r}function h(t,e,r){return{categoryInds:t,color:e,rawColor:r,valueInds:[],count:0}}function p(t,e,r){t.valueInds.push(e),t.count+=r}e.exports=function(t,e){var f=s.filterVisible(e.dimensions);if(0===f.length)return[];var d,m,g,y=f.map((function(t){var e;if("trace"===t.categoryorder)e=null;else if("array"===t.categoryorder)e=t.categoryarray;else{e=a(t.values);for(var r=!0,n=0;n=t.length||void 0!==e[t[r]])return!1;e[t[r]]=!0}return!0}(r))for(e=0;ee.model.rawColor?1:t.model.rawColor"),C=r.mouse(h)[0];a.loneHover({trace:p,x:x-d.left+m.left,y:b-d.top+m.top,text:E,color:t.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:w,idealAlign:C1&&p.displayInd===h.dimensions.length-1?(i=c.left,a="left"):(i=c.left+c.width,a="right");var m=u.model.count,g=u.model.categoryLabel,y=m/u.parcatsViewModel.model.count,v={countLabel:m,categoryLabel:g,probabilityLabel:y.toFixed(3)},x=[];-1!==u.parcatsViewModel.hoverinfoItems.indexOf("count")&&x.push(["Count:",v.countLabel].join(" ")),-1!==u.parcatsViewModel.hoverinfoItems.indexOf("probability")&&x.push(["P("+v.categoryLabel+"):",v.probabilityLabel].join(" "));var _=x.join("
");return{trace:f,x:o*(i-e.left),y:s*(d-e.top),text:_,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:a,hovertemplate:f.hovertemplate,hovertemplateLabels:v,eventData:[{data:f._input,fullData:f,count:m,category:g,probability:y}]}}function I(t){if(!t.parcatsViewModel.dragDimension&&-1===t.parcatsViewModel.hoverinfoItems.indexOf("skip")){if(r.mouse(this)[1]<-1)return;var e,n=t.parcatsViewModel.graphDiv,i=n._fullLayout,s=i._paperdiv.node().getBoundingClientRect(),l=t.parcatsViewModel.hoveron,u=this;"color"===l?(function(t){var e=r.select(t).datum(),n=M(e);T(n),n.each((function(){o.raiseToTop(this)})),r.select(t.parentNode).selectAll("rect.bandrect").filter((function(t){return t.color===e.color})).each((function(){o.raiseToTop(this),function(t){t.attr("stroke","black").attr("stroke-width",1.5)}(r.select(this))}))}(u),E(u,"plotly_hover",r.event)):(function(t){r.select(t.parentNode).selectAll("rect.bandrect").each((function(t){var e=M(t);T(e),e.each((function(){o.raiseToTop(this)}))})),function(t){t.select("rect.catrect").attr("stroke","black").attr("stroke-width",2.5)}(r.select(t.parentNode))}(u),S(u,"plotly_hover",r.event)),-1===t.parcatsViewModel.hoverinfoItems.indexOf("none")&&("category"===l?e=C(n,s,u):"color"===l?e=function(t,e,n){t._fullLayout._calcInverseTransform(t);var i,a,o=t._fullLayout._invScaleX,s=t._fullLayout._invScaleY,l=n.getBoundingClientRect(),u=r.select(n).datum(),h=u.categoryViewModel,p=h.parcatsViewModel,f=p.model.dimensions[h.model.dimensionInd],d=p.trace,m=l.y+l.height/2;p.dimensions.length>1&&f.displayInd===p.dimensions.length-1?(i=l.left,a="left"):(i=l.left+l.width,a="right");var g=h.model.categoryLabel,y=u.parcatsViewModel.model.count,v=0;u.categoryViewModel.bands.forEach((function(t){t.color===u.color&&(v+=t.count)}));var x=h.model.count,_=0;p.pathSelection.each((function(t){t.model.color===u.color&&(_+=t.model.count)}));var b=v/y,w=v/_,T=v/x,A={countLabel:v,categoryLabel:g,probabilityLabel:b.toFixed(3)},k=[];-1!==h.parcatsViewModel.hoverinfoItems.indexOf("count")&&k.push(["Count:",A.countLabel].join(" ")),-1!==h.parcatsViewModel.hoverinfoItems.indexOf("probability")&&(k.push("P(color ∩ "+g+"): "+A.probabilityLabel),k.push("P("+g+" | color): "+w.toFixed(3)),k.push("P(color | "+g+"): "+T.toFixed(3)));var M=k.join("
"),S=c.mostReadable(u.color,["black","white"]);return{trace:d,x:o*(i-e.left),y:s*(m-e.top),text:M,color:u.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:S,fontSize:10,idealAlign:a,hovertemplate:d.hovertemplate,hovertemplateLabels:A,eventData:[{data:d._input,fullData:d,category:g,count:y,probability:b,categorycount:x,colorcount:_,bandcolorcount:v}]}}(n,s,u):"dimension"===l&&(e=function(t,e,n){var i=[];return r.select(n.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each((function(){i.push(C(t,e,this))})),i}(n,s,u)),e&&a.loneHover(e,{container:i._hoverlayer.node(),outerContainer:i._paper.node(),gd:n}))}}function L(t){var e=t.parcatsViewModel;e.dragDimension||(w(e.pathSelection),A(e.dimensionSelection.selectAll("g.category")),k(e.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),a.loneUnhover(e.graphDiv._fullLayout._hoverlayer.node()),e.pathSelection.sort(d),-1!==e.hoverinfoItems.indexOf("skip"))||("color"===t.parcatsViewModel.hoveron?E(this,"plotly_unhover",r.event):S(this,"plotly_unhover",r.event))}function P(t){"fixed"!==t.parcatsViewModel.arrangement&&(t.dragDimensionDisplayInd=t.model.displayInd,t.initialDragDimensionDisplayInds=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),t.dragHasMoved=!1,t.dragCategoryDisplayInd=null,r.select(this).selectAll("g.category").select("rect.catrect").each((function(e){var n=r.mouse(this)[0],i=r.mouse(this)[1];-2<=n&&n<=e.width+2&&-2<=i&&i<=e.height+2&&(t.dragCategoryDisplayInd=e.model.displayInd,t.initialDragCategoryDisplayInds=t.model.categories.map((function(t){return t.displayInd})),e.model.dragY=e.y,o.raiseToTop(this.parentNode),r.select(this.parentNode).selectAll("rect.bandrect").each((function(e){e.yh.y+h.height/2&&(o.model.displayInd=h.model.displayInd,h.model.displayInd=l),t.dragCategoryDisplayInd=o.model.displayInd}if(null===t.dragCategoryDisplayInd||"freeform"===t.parcatsViewModel.arrangement){a.model.dragX=r.event.x;var p=t.parcatsViewModel.dimensions[n],f=t.parcatsViewModel.dimensions[i];void 0!==p&&a.model.dragXf.x&&(a.model.displayInd=f.model.displayInd,f.model.displayInd=t.dragDimensionDisplayInd),t.dragDimensionDisplayInd=a.model.displayInd}V(t.parcatsViewModel),U(t.parcatsViewModel),B(t.parcatsViewModel),F(t.parcatsViewModel)}}function D(t){if("fixed"!==t.parcatsViewModel.arrangement&&null!==t.dragDimensionDisplayInd){r.select(this).selectAll("text").attr("font-weight","normal");var e={},n=R(t.parcatsViewModel),a=t.parcatsViewModel.model.dimensions.map((function(t){return t.displayInd})),o=t.initialDragDimensionDisplayInds.some((function(t,e){return t!==a[e]}));o&&a.forEach((function(r,n){var i=t.parcatsViewModel.model.dimensions[n].containerInd;e["dimensions["+i+"].displayindex"]=r}));var s=!1;if(null!==t.dragCategoryDisplayInd){var l=t.model.categories.map((function(t){return t.displayInd}));if(s=t.initialDragCategoryDisplayInds.some((function(t,e){return t!==l[e]}))){var c=t.model.categories.slice().sort((function(t,e){return t.displayInd-e.displayInd})),u=c.map((function(t){return t.categoryValue})),h=c.map((function(t){return t.categoryLabel}));e["dimensions["+t.model.containerInd+"].categoryarray"]=[u],e["dimensions["+t.model.containerInd+"].ticktext"]=[h],e["dimensions["+t.model.containerInd+"].categoryorder"]="array"}}-1===t.parcatsViewModel.hoverinfoItems.indexOf("skip")&&!t.dragHasMoved&&t.potentialClickBand&&("color"===t.parcatsViewModel.hoveron?E(t.potentialClickBand,"plotly_click",r.event.sourceEvent):S(t.potentialClickBand,"plotly_click",r.event.sourceEvent)),t.model.dragX=null,null!==t.dragCategoryDisplayInd&&(t.parcatsViewModel.dimensions[t.dragDimensionDisplayInd].categories[t.dragCategoryDisplayInd].model.dragY=null,t.dragCategoryDisplayInd=null),t.dragDimensionDisplayInd=null,t.parcatsViewModel.dragDimension=null,t.dragHasMoved=null,t.potentialClickBand=null,V(t.parcatsViewModel),U(t.parcatsViewModel),r.transition().duration(300).ease("cubic-in-out").each((function(){B(t.parcatsViewModel,!0),F(t.parcatsViewModel,!0)})).each("end",(function(){(o||s)&&i.restyle(t.parcatsViewModel.graphDiv,e,[n])}))}}function R(t){for(var e,r=t.graphDiv._fullData,n=0;n=0;s--)u+="C"+c[s]+","+(e[s+1]+i)+" "+l[s]+","+(e[s]+i)+" "+(t[s]+r[s])+","+(e[s]+i),u+="l-"+r[s]+",0 ";return u+"Z"}function U(t){var e=t.dimensions,r=t.model,n=e.map((function(t){return t.categories.map((function(t){return t.y}))})),i=t.model.dimensions.map((function(t){return t.categories.map((function(t){return t.displayInd}))})),a=t.model.dimensions.map((function(t){return t.displayInd})),o=t.dimensions.map((function(t){return t.model.dimensionInd})),s=e.map((function(t){return t.x})),l=e.map((function(t){return t.width})),c=[];for(var u in r.paths)r.paths.hasOwnProperty(u)&&c.push(r.paths[u]);function h(t){var e=t.categoryInds.map((function(t,e){return i[e][t]}));return o.map((function(t){return e[t]}))}c.sort((function(e,r){var n=h(e),i=h(r);return"backward"===t.sortpaths&&(n.reverse(),i.reverse()),n.push(e.valueInds[0]),i.push(r.valueInds[0]),t.bundlecolors&&(n.unshift(e.rawColor),i.unshift(r.rawColor)),ni?1:0}));for(var p=new Array(c.length),f=e[0].model.count,d=e[0].categories.map((function(t){return t.height})).reduce((function(t,e){return t+e})),m=0;m0?d*(v.count/f):0;for(var x=new Array(n.length),_=0;_1?(t.width-80-16)/(n-1):0)*i;var a,o,s,l,c,u=[],h=t.model.maxCats,p=e.categories.length,f=e.count,d=t.height-8*(h-1),m=8*(h-p)/2,g=e.categories.map((function(t){return{displayInd:t.displayInd,categoryInd:t.categoryInd}}));for(g.sort((function(t,e){return t.displayInd-e.displayInd})),c=0;c0?o.count/f*d:0,s={key:o.valueInds[0],model:o,width:16,height:a,y:null!==o.dragY?o.dragY:m,bands:[],parcatsViewModel:t},m=m+a+8,u.push(s);return{key:e.dimensionInd,x:null!==e.dragX?e.dragX:r,y:0,width:16,model:e,categories:u,parcatsViewModel:t,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}e.exports=function(t,e,r,n){h(r,t,n,e)}}}),i_=f({"src/traces/parcats/plot.js"(t,e){var r=n_();e.exports=function(t,e,n,i){var a=t._fullLayout,o=a._paper,s=a._size;r(t,o,e,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},n,i)}}}),a_=f({"src/traces/parcats/base_plot.js"(t){var e=we().getModuleCalcData,r=i_(),n="parcats";t.name=n,t.plot=function(t,i,a,o){var s=e(t.calcdata,n);if(s.length){var l=s[0];r(t,l,a,o)}},t.clean=function(t,e,r,n){var i=n._has&&n._has("parcats"),a=e._has&&e._has("parcats");i&&!a&&n._paperdiv.selectAll(".parcats").remove()}}}),o_=f({"src/traces/parcats/index.js"(t,e){e.exports={attributes:t_(),supplyDefaults:e_(),calc:r_(),plot:i_(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:a_(),categories:["noOpacity"],meta:{}}}}),s_=f({"lib/parcats.js"(t,e){e.exports=o_()}}),l_=f({"src/plots/mapbox/constants.js"(t,e){var r=Zt(),n="1.13.4",i='© OpenStreetMap contributors',a=['© Carto',i].join(" "),o=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),s={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:i,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},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}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:a,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},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":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:a,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},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":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:o,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},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":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:o,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},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":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},l=r(s);e.exports={requiredVersion:n,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:s,styleValuesNonMapbox:l,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+n+"."].join("\n"),noAccessTokenErrorMsg:["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' });","More info here: https://www.mapbox.com/help/define-access-token/"].join("\n"),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",l.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join("\n"),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join("\n"),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"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",path1:"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",path2:"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",polygon:"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"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","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-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","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","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\')'}}}}),c_=f({"src/plots/mapbox/layout_attributes.js"(t,e){var r=le(),n=H().defaultLine,i=Aa().attributes,a=F(),o=Tn().textposition,s=Pt().overrideAll,l=ye().templatedArray,c=l_(),u=a({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});u.family.dflt="Open Sans Regular, Arial Unicode MS Regular",(e.exports=s({_arrayAttrRegexps:[r.counterRegex("mapbox",".layers",!0)],domain:i({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:c.styleValuesMapbox.concat(c.styleValuesNonMapbox),dflt:c.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:l("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:n},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:n}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:u,textposition:r.extendFlat({},o,{arrayOk:!1})}})},"plot","from-root")).uirevision={valType:"any",editType:"none"}}}),u_=f({"src/traces/scattermapbox/attributes.js"(t,e){var r=Ot().hovertemplateAttrs,n=Ot().texttemplateAttrs,i=wn(),a=Vm(),o=Tn(),s=c_(),l=U(),c=Pe(),u=R().extendFlat,h=Pt().overrideAll,p=c_(),f=a.line,d=a.marker;e.exports=h({lon:a.lon,lat:a.lat,cluster:{enabled:{valType:"boolean"},maxzoom:u({},p.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:u({},d.opacity,{dflt:1})},mode:u({},o.mode,{dflt:"markers"}),text:u({},o.text,{}),texttemplate:n({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:u({},o.hovertext,{}),line:{color:f.color,width:f.width},connectgaps:o.connectgaps,marker:u({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:d.opacity,size:d.size,sizeref:d.sizeref,sizemin:d.sizemin,sizemode:d.sizemode},c("marker")),fill:a.fill,fillcolor:i(),textfont:s.layers.symbol.textfont,textposition:s.layers.symbol.textposition,below:{valType:"string"},selected:{marker:o.selected.marker},unselected:{marker:o.unselected.marker},hoverinfo:u({},l.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:r()},"calc","nested")}}),h_=f({"src/traces/scattermapbox/constants.js"(t,e){var r=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];e.exports={isSupportedFont:function(t){return-1!==r.indexOf(t)}}}}),p_=f({"src/traces/scattermapbox/defaults.js"(t,e){var r=le(),n=Ye(),i=Zn(),a=Yn(),o=$n(),s=Kn(),l=u_(),c=h_().isSupportedFont;e.exports=function(t,e,u,h){function p(n,i){return r.coerce(t,e,l,n,i)}function f(n,i){return r.coerce2(t,e,l,n,i)}var d=function(t,e,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return e._length=a,a}(0,e,p);if(d){if(p("text"),p("texttemplate"),p("hovertext"),p("hovertemplate"),p("mode"),p("below"),n.hasMarkers(e)){i(t,e,u,h,p,{noLine:!0,noAngle:!0}),p("marker.allowoverlap"),p("marker.angle");var m=e.marker;"circle"!==m.symbol&&(r.isArrayOrTypedArray(m.size)&&(m.size=m.size[0]),r.isArrayOrTypedArray(m.color)&&(m.color=m.color[0]))}n.hasLines(e)&&(a(t,e,u,h,p,{noDash:!0}),p("connectgaps"));var g=f("cluster.maxzoom"),y=f("cluster.step"),v=f("cluster.color",e.marker&&e.marker.color||u),x=f("cluster.size"),_=f("cluster.opacity");if(p("cluster.enabled",!1!==g||!1!==y||!1!==v||!1!==x||!1!==_)||n.hasText(e)){var b=h.font.family;o(t,e,h,p,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:c(b)?b:"Open Sans Regular",weight:h.font.weight,style:h.font.style,size:h.font.size,color:h.font.color}})}p("fill"),"none"!==e.fill&&s(t,e,u,p),r.coerceSelectionMarkerOpacity(e,p)}else e.visible=!1}}}),f_=f({"src/traces/scattermapbox/format_labels.js"(t,e){var r=ir();e.exports=function(t,e,n){var i={},a=n[e.subplot]._subplot.mockAxis,o=t.lonlat;return i.lonLabel=r.tickText(a,a.c2l(o[0]),!0).text,i.latLabel=r.tickText(a,a.c2l(o[1]),!0).text,i}}}),d_=f({"src/plots/mapbox/convert_text_opts.js"(t,e){var r=le();e.exports=function(t,e){var n=t.split(" "),i=n[0],a=n[1],o=r.isArrayOrTypedArray(e)?r.mean(e):e,s=.5+o/100,l=1.5+o/100,c=["",""],u=[0,0];switch(i){case"top":c[0]="top",u[1]=-l;break;case"bottom":c[0]="bottom",u[1]=l}switch(a){case"left":c[1]="right",u[0]=-s;break;case"right":c[1]="left",u[0]=s}return{anchor:c[0]&&c[1]?c.join("-"):c[0]?c[0]:c[1]?c[1]:"center",offset:u}}}}),m_=f({"src/traces/scattermapbox/convert.js"(t,e){var r=A(),n=le(),i=k().BADNUM,a=Xm(),o=Ze(),s=Qe(),l=Xe(),c=Ye(),u=h_().isSupportedFont,h=d_(),p=$e().appendArrayPointValue,f=Se().NEWLINES,d=Se().BR_TAG_ALL;function m(t){return{type:t,geojson:a.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function g(t,e){return n.isArrayOrTypedArray(t)?e?function(e){return r(t[e])?+t[e]:0}:function(e){return t[e]}:t?function(){return t}:y}function y(){return""}function v(t){return t[0]===i}function x(t,e){var r;if(n.isArrayOrTypedArray(t)&&n.isArrayOrTypedArray(e)){r=["step",["get","point_count"],t[0]];for(var i=1;i850?" Black":i>750?" Extra Bold":i>650?" Bold":i>550?" Semi Bold":i>450?" Medium":i>350?" Regular":i>250?" Light":i>150?" Extra Light":" Thin"):"Open Sans"===a.slice(0,2).join(" ")?(s="Open Sans",s+=i>750?" Extrabold":i>650?" Bold":i>550?" Semibold":i>350?" Regular":" Light"):"Klokantech Noto Sans"===a.slice(0,3).join(" ")&&(s="Klokantech Noto Sans","CJK"===a[3]&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),"Open Sans Regular Italic"===s?s="Open Sans Italic":"Open Sans Regular Bold"===s?s="Open Sans Bold":"Open Sans Regular Bold Italic"===s?s="Open Sans Bold Italic":"Klokantech Noto Sans Regular Italic"===s&&(s="Klokantech Noto Sans Italic"),u(s)||(s=r),s.split(", ")}e.exports=function(t,e){var i,u=e[0].trace,b=!0===u.visible&&0!==u._length,w="none"!==u.fill,T=c.hasLines(u),A=c.hasMarkers(u),k=c.hasText(u),M=A&&"circle"===u.marker.symbol,S=A&&"circle"!==u.marker.symbol,E=u.cluster&&u.cluster.enabled,C=m("fill"),I=m("line"),L=m("circle"),P=m("symbol"),z={fill:C,line:I,circle:L,symbol:P};if(!b)return z;if((w||T)&&(i=a.calcTraceToLineCoords(e)),w&&(C.geojson=a.makePolygon(i),C.layout.visibility="visible",n.extendFlat(C.paint,{"fill-color":u.fillcolor})),T&&(I.geojson=a.makeLine(i),I.layout.visibility="visible",n.extendFlat(I.paint,{"line-width":u.line.width,"line-color":u.line.color,"line-opacity":u.opacity})),M){var D=function(t){var e,i,a,c,u=t[0].trace,h=u.marker,p=u.selectedpoints,f=n.isArrayOrTypedArray(h.color),d=n.isArrayOrTypedArray(h.size),m=n.isArrayOrTypedArray(h.opacity);function g(t){return u.opacity*t}f&&(i=o.hasColorscale(u,"marker")?o.makeColorScaleFuncFromTrace(h):n.identity),d&&(a=l(u)),m&&(c=function(t){return g(r(t)?+n.constrain(t,0,1):0)});var y,x=[];for(e=0;e=0;r--){var n=e[r];i.removeLayer(u.layerIds[n])}t||i.removeSource(u.sourceIds.circle)}(t):function(t){for(var e=a.nonCluster,r=e.length-1;r>=0;r--){var n=e[r];i.removeLayer(u.layerIds[n]),t||i.removeSource(u.sourceIds[n])}}(t)}function p(t){l?function(t){t||u.addSource("circle",o.circle,e.cluster);for(var r=a.cluster,n=0;n=0;r--){var n=e[r];t.removeLayer(this.layerIds[n]),t.removeSource(this.sourceIds[n])}},e.exports=function(t,e){var r,i,s,l=e[0].trace,c=l.cluster&&l.cluster.enabled,u=!0!==l.visible,h=new o(t,l.uid,c,u),p=n(t.gd,e),f=h.below=t.belowLookup["trace-"+l.uid];if(c)for(h.addSource("circle",p.circle,l.cluster),r=0;r")}function u(t){return t+"°"}}e.exports={hoverPoints:function(t,e,a){var c=t.cd,u=c[0].trace,h=t.xa,p=t.ya,f=t.subplot,d=[],m=s+u.uid+"-circle",g=u.cluster&&u.cluster.enabled;if(g){var y=f.map.queryRenderedFeatures(null,{layers:[m]});d=y.map((function(t){return t.id}))}var v=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),x=e-v;if(r.getClosest(c,(function(t){var e=t.lonlat;if(e[0]===o||g&&-1===d.indexOf(t.i+1))return 1/0;var r=n.modHalf(e[0],360),i=e[1],s=f.project([r,i]),l=s.x-h.c2p([x,i]),c=s.y-p.c2p([r,a]),u=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-u,1-3/u)}),t),!1!==t.index){var _=c[t.index],b=_.lonlat,w=[n.modHalf(b[0],360)+v,b[1]],T=h.c2p(w),A=p.c2p(w),k=_.mrc||1;t.x0=T-k,t.x1=T+k,t.y0=A-k,t.y1=A+k;var M={};M[u.subplot]={_subplot:f};var S=u._module.formatLabels(_,u,M);return t.lonLabel=S.lonLabel,t.latLabel=S.latLabel,t.color=i(u,_),t.extraText=l(u,_,c[0].t.labels),t.hovertemplate=u.hovertemplate,[t]}},getExtraText:l}}}),v_=f({"src/traces/scattermapbox/event_data.js"(t,e){e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t}}}),x_=f({"src/traces/scattermapbox/select.js"(t,e){var r=le(),n=Ye(),i=k().BADNUM;e.exports=function(t,e){var a,o=t.cd,s=t.xaxis,l=t.yaxis,c=[],u=o[0].trace;if(!n.hasMarkers(u))return[];if(!1===e)for(a=0;a"u"&&(e=1e-6),i=t,o=0;o<8;o++){if(a=this.sampleCurveX(i)-t,Math.abs(a)(n=1))return n;for(;ra?r=i:n=i,i=.5*(n-r)+r}return i},i.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var a=o;function o(t,e){this.x=t,this.y=e}o.prototype={clone:function(){return new o(this.x,this.y)},add:function(t){return this.clone()._add(t)},sub:function(t){return this.clone()._sub(t)},multByPoint:function(t){return this.clone()._multByPoint(t)},divByPoint:function(t){return this.clone()._divByPoint(t)},mult:function(t){return this.clone()._mult(t)},div:function(t){return this.clone()._div(t)},rotate:function(t){return this.clone()._rotate(t)},rotateAround:function(t,e){return this.clone()._rotateAround(t,e)},matMult:function(t){return this.clone()._matMult(t)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(t){return this.x===t.x&&this.y===t.y},dist:function(t){return Math.sqrt(this.distSqr(t))},distSqr:function(t){var e=t.x-this.x,r=t.y-this.y;return e*e+r*r},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(t){return Math.atan2(this.y-t.y,this.x-t.x)},angleWith:function(t){return this.angleWithSep(t.x,t.y)},angleWithSep:function(t,e){return Math.atan2(this.x*e-this.y*t,this.x*t+this.y*e)},_matMult:function(t){var e=t[0]*this.x+t[1]*this.y,r=t[2]*this.x+t[3]*this.y;return this.x=e,this.y=r,this},_add:function(t){return this.x+=t.x,this.y+=t.y,this},_sub:function(t){return this.x-=t.x,this.y-=t.y,this},_mult:function(t){return this.x*=t,this.y*=t,this},_div:function(t){return this.x/=t,this.y/=t,this},_multByPoint:function(t){return this.x*=t.x,this.y*=t.y,this},_divByPoint:function(t){return this.x/=t.x,this.y/=t.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var t=this.y;return this.y=this.x,this.x=-t,this},_rotate:function(t){var e=Math.cos(t),r=Math.sin(t),n=e*this.x-r*this.y,i=r*this.x+e*this.y;return this.x=n,this.y=i,this},_rotateAround:function(t,e){var r=Math.cos(t),n=Math.sin(t),i=e.x+r*(this.x-e.x)-n*(this.y-e.y),a=e.y+n*(this.x-e.x)+r*(this.y-e.y);return this.x=i,this.y=a,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},o.convert=function(t){return t instanceof o?t:Array.isArray(t)?new o(t[0],t[1]):t};var s=typeof self<"u"?self:{},l=Math.pow(2,53)-1;function c(t,e,r,i){var a=new n(t,e,r,i);return function(t){return a.solve(t)}}var u=c(.25,.1,.25,1);function h(t,e,r){return Math.min(r,Math.max(e,t))}function p(t,e,r){var n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function f(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n>e/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,t)}()}function y(t){return!!t&&/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)}function v(t,e){t.forEach((function(t){e[t]&&(e[t]=e[t].bind(e))}))}function x(t,e){return-1!==t.indexOf(e,t.length-e.length)}function _(t,e,r){var n={};for(var i in t)n[i]=e.call(r||this,t[i],i,t);return n}function b(t,e,r){var n={};for(var i in t)e.call(r||this,t[i],i,t)&&(n[i]=t[i]);return n}function w(t){return Array.isArray(t)?t.map(w):"object"==typeof t&&t?_(t,w):t}var T={};function A(t){T[t]||(typeof console<"u"&&console.warn(t),T[t]=!0)}function k(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function M(t){for(var e=0,r=0,n=t.length,i=n-1,a=void 0,o=void 0;r@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(function(t,r,n,i){var a=n||i;return e[r]=!a||a.toLowerCase(),""})),e["max-age"]){var r=parseInt(e["max-age"],10);isNaN(r)?delete e["max-age"]:e["max-age"]=r}return e}var C=null;function I(t){if(null==C){var e=t.navigator?t.navigator.userAgent:null;C=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return C}function L(t){try{var e=s[t];return e.setItem("_mapbox_test_",1),e.removeItem("_mapbox_test_"),!0}catch{return!1}}var P,z,D,O,R=s.performance&&s.performance.now?s.performance.now.bind(s.performance):Date.now.bind(Date),F=s.requestAnimationFrame||s.mozRequestAnimationFrame||s.webkitRequestAnimationFrame||s.msRequestAnimationFrame,B=s.cancelAnimationFrame||s.mozCancelAnimationFrame||s.webkitCancelAnimationFrame||s.msCancelAnimationFrame,j={now:R,frame:function(t){var e=F(t);return{cancel:function(){return B(e)}}},getImageData:function(t,e){void 0===e&&(e=0);var r=s.document.createElement("canvas"),n=r.getContext("2d");if(!n)throw new Error("failed to create canvas 2d context");return r.width=t.width,r.height=t.height,n.drawImage(t,0,0,t.width,t.height),n.getImageData(-e,-e,t.width+2*e,t.height+2*e)},resolveURL:function(t){return P||(P=s.document.createElement("a")),P.href=t,P.href},hardwareConcurrency:s.navigator&&s.navigator.hardwareConcurrency||4,get devicePixelRatio(){return s.devicePixelRatio},get prefersReducedMotion(){return!!s.matchMedia&&(null==z&&(z=s.matchMedia("(prefers-reduced-motion: reduce)")),z.matches)}},N={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?0===this.API_URL.indexOf("https://api.mapbox.cn")?"https://events.mapbox.cn/events/v2":0===this.API_URL.indexOf("https://api.mapbox.com")?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},U={supported:!1,testSupport:function(t){V||!O||(q?H(t):D=t)}},V=!1,q=!1;function H(t){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);try{if(t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,O),t.isContextLost())return;U.supported=!0}catch{}t.deleteTexture(e),V=!0}s.document&&((O=s.document.createElement("img")).onload=function(){D&&H(D),D=null,q=!0},O.onerror=function(){V=!0,D=null},O.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");var G="01",W=function(t,e){this._transformRequestFn=t,this._customAccessToken=e,this._createSkuToken()};function Z(t){return 0===t.indexOf("mapbox:")}W.prototype._createSkuToken=function(){var t=function(){for(var t="",e=0;e<10;e++)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[Math.floor(62*Math.random())];return{token:["1",G,t].join(""),tokenExpiresAt:Date.now()+432e5}}();this._skuToken=t.token,this._skuTokenExpiresAt=t.tokenExpiresAt},W.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},W.prototype.transformRequest=function(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}},W.prototype.normalizeStyleURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/styles/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},W.prototype.normalizeGlyphsURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/fonts/v1"+r.path,this._makeAPIURL(r,this._customAccessToken||e)},W.prototype.normalizeSourceURL=function(t,e){if(!Z(t))return t;var r=K(t);return r.path="/v4/"+r.authority+".json",r.params.push("secure"),this._makeAPIURL(r,this._customAccessToken||e)},W.prototype.normalizeSpriteURL=function(t,e,r,n){var i=K(t);return Z(t)?(i.path="/styles/v1"+i.path+"/sprite"+e+r,this._makeAPIURL(i,this._customAccessToken||n)):(i.path+=""+e+r,J(i))},W.prototype.normalizeTileURL=function(t,e){if(this._isSkuTokenExpired()&&this._createSkuToken(),t&&!Z(t))return t;var r=K(t),n=j.devicePixelRatio>=2||512===e?"@2x":"",i=U.supported?".webp":"$1";r.path=r.path.replace(/(\.(png|jpg)\d*)(?=$)/,""+n+i),r.path=r.path.replace(/^.+\/v4\//,"/"),r.path="/v4"+r.path;var a=this._customAccessToken||function(t){for(var e=0,r=t;e=0&&t.params.splice(i,1)}if("/"!==n.path&&(t.path=""+n.path+t.path),!N.REQUIRE_ACCESS_TOKEN)return J(t);if(!(e=e||N.ACCESS_TOKEN))throw new Error("An API access token is required to use Mapbox GL. "+r);if("s"===e[0])throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+r);return t.params=t.params.filter((function(t){return-1===t.indexOf("access_token")})),t.params.push("access_token="+e),J(t)};var Y=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function X(t){return Y.test(t)}var $=/^(\w+):\/\/([^/?]*)(\/[^?]+)?\??(.+)?/;function K(t){var e=t.match($);if(!e)throw new Error("Unable to parse URL object");return{protocol:e[1],authority:e[2],path:e[3]||"/",params:e[4]?e[4].split("&"):[]}}function J(t){var e=t.params.length?"?"+t.params.join("&"):"";return t.protocol+"://"+t.authority+t.path+e}var Q="mapbox.eventData";function tt(t){if(!t)return null;var e=t.split(".");if(!e||3!==e.length)return null;try{var r=JSON.parse(function(t){return decodeURIComponent(s.atob(t).split("").map((function(t){return"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)})).join(""))}(e[1]));return r}catch{return null}}var et=function(t){this.type=t,this.anonId=null,this.eventData={},this.queue=[],this.pendingRequest=null};et.prototype.getStorageKey=function(t){var e,r=tt(N.ACCESS_TOKEN),n="";return r&&r.u?(e=r.u,n=s.btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(function(t,e){return String.fromCharCode(+("0x"+e))})))):n=N.ACCESS_TOKEN||"",t?Q+"."+t+":"+n:Q+":"+n},et.prototype.fetchEventData=function(){var t=L("localStorage"),e=this.getStorageKey(),r=this.getStorageKey("uuid");if(t)try{var n=s.localStorage.getItem(e);n&&(this.eventData=JSON.parse(n));var i=s.localStorage.getItem(r);i&&(this.anonId=i)}catch{A("Unable to read from LocalStorage")}},et.prototype.saveEventData=function(){var t=L("localStorage"),e=this.getStorageKey(),r=this.getStorageKey("uuid");if(t)try{s.localStorage.setItem(r,this.anonId),Object.keys(this.eventData).length>=1&&s.localStorage.setItem(e,JSON.stringify(this.eventData))}catch{A("Unable to write to LocalStorage")}},et.prototype.processRequests=function(t){},et.prototype.postEvent=function(t,e,n,i){var a=this;if(N.EVENTS_URL){var o=K(N.EVENTS_URL);o.params.push("access_token="+(i||N.ACCESS_TOKEN||""));var s={event:this.type,created:new Date(t).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:r,skuId:G,userId:this.anonId},l=e?f(s,e):s,c={url:J(o),headers:{"Content-Type":"text/plain"},body:JSON.stringify([l])};this.pendingRequest=At(c,(function(t){a.pendingRequest=null,n(t),a.saveEventData(),a.processRequests(i)}))}},et.prototype.queueRequest=function(t,e){this.queue.push(t),this.processRequests(e)};var rt,nt,it=function(t){function e(){t.call(this,"map.load"),this.success={},this.skuToken=""}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postMapLoadEvent=function(t,e,r,n){this.skuToken=r,(N.EVENTS_URL&&n||N.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return Z(t)||X(t)})))&&this.queueRequest({id:e,timestamp:Date.now()},n)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){var r=this.queue.shift(),n=r.id,i=r.timestamp;n&&this.success[n]||(this.anonId||this.fetchEventData(),y(this.anonId)||(this.anonId=g()),this.postEvent(i,{skuToken:this.skuToken},(function(t){t||n&&(e.success[n]=!0)}),t))}},e}(et),at=function(t){function e(e){t.call(this,"appUserTurnstile"),this._customAccessToken=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.postTurnstileEvent=function(t,e){N.EVENTS_URL&&N.ACCESS_TOKEN&&Array.isArray(t)&&t.some((function(t){return Z(t)||X(t)}))&&this.queueRequest(Date.now(),e)},e.prototype.processRequests=function(t){var e=this;if(!this.pendingRequest&&0!==this.queue.length){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var r=tt(N.ACCESS_TOKEN),n=r?r.u:N.ACCESS_TOKEN,i=n!==this.eventData.tokenU;y(this.anonId)||(this.anonId=g(),i=!0);var a=this.queue.shift();if(this.eventData.lastSuccess){var o=new Date(this.eventData.lastSuccess),s=new Date(a),l=(a-this.eventData.lastSuccess)/864e5;i=i||l>=1||l<-1||o.getDate()!==s.getDate()}else i=!0;if(!i)return this.processRequests();this.postEvent(a,{"enabled.telemetry":!1},(function(t){t||(e.eventData.lastSuccess=a,e.eventData.tokenU=n)}),t)}},e}(et),ot=new at,st=ot.postTurnstileEvent.bind(ot),lt=new it,ct=lt.postMapLoadEvent.bind(lt),ut="mapbox-tiles",ht=500,pt=50;function ft(){s.caches&&!rt&&(rt=s.caches.open(ut))}function dt(t){var e=t.indexOf("?");return e<0?t:t.slice(0,e)}var mt,gt=1/0;function yt(){return null==mt&&(mt=s.OffscreenCanvas&&new s.OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof s.createImageBitmap),mt}var vt={Unknown:"Unknown",Style:"Style",Source:"Source",Tile:"Tile",Glyphs:"Glyphs",SpriteImage:"SpriteImage",SpriteJSON:"SpriteJSON",Image:"Image"};"function"==typeof Object.freeze&&Object.freeze(vt);var xt=function(t){function e(e,r,n){401===r&&X(n)&&(e+=": you may have provided an invalid Mapbox access token. See https://www.mapbox.com/api-documentation/#access-tokens-and-token-scopes"),t.call(this,e),this.status=r,this.url=n,this.name=this.constructor.name,this.message=e}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.toString=function(){return this.name+": "+this.message+" ("+this.status+"): "+this.url},e}(Error),_t=S()?function(){return self.worker&&self.worker.referrer}:function(){return("blob:"===s.location.protocol?s.parent:s).location.href};function bt(t,e){var r=new s.AbortController,n=new s.Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,referrer:_t(),signal:r.signal}),i=!1,a=!1,o=function(t){return t.indexOf("sku=")>0&&X(t)}(n.url);"json"===t.type&&n.headers.set("Accept","application/json");var l=function(r,i,l){if(!a){if(r&&"SecurityError"!==r.message&&A(r),i&&l)return c(i);var u=Date.now();s.fetch(n).then((function(r){if(r.ok){var n=o?r.clone():null;return c(r,n,u)}return e(new xt(r.statusText,r.status,t.url))})).catch((function(t){20!==t.code&&e(new Error(t.message))}))}},c=function(r,o,l){("arrayBuffer"===t.type?r.arrayBuffer():"json"===t.type?r.json():r.text()).then((function(t){a||(o&&l&&function(t,e,r){if(ft(),rt){var n={status:e.status,statusText:e.statusText,headers:new s.Headers};e.headers.forEach((function(t,e){return n.headers.set(e,t)}));var i=E(e.headers.get("Cache-Control")||"");i["no-store"]||(i["max-age"]&&n.headers.set("Expires",new Date(r+1e3*i["max-age"]).toUTCString()),new Date(n.headers.get("Expires")).getTime()-r<42e4||function(t,e){if(void 0===nt)try{new Response(new ReadableStream),nt=!0}catch{nt=!1}nt?e(t.body):t.blob().then(e)}(e,(function(e){var r=new s.Response(e,n);ft(),rt&&rt.then((function(e){return e.put(dt(t.url),r)})).catch((function(t){return A(t.message)}))})))}}(n,o,l),i=!0,e(null,t,r.headers.get("Cache-Control"),r.headers.get("Expires")))})).catch((function(t){a||e(new Error(t.message))}))};return o?function(t,e){if(ft(),!rt)return e(null);var r=dt(t.url);rt.then((function(t){t.match(r).then((function(n){var i=function(t){if(!t)return!1;var e=new Date(t.headers.get("Expires")||0),r=E(t.headers.get("Cache-Control")||"");return e>Date.now()&&!r["no-cache"]}(n);t.delete(r),i&&t.put(r,n.clone()),e(null,n,i)})).catch(e)})).catch(e)}(n,l):l(null,null),{cancel:function(){a=!0,i||r.abort()}}}var wt=function(t,e){if(!function(t){return/^file:/.test(t)||/^file:/.test(_t())&&!/^\w+:/.test(t)}(t.url)){if(s.fetch&&s.Request&&s.AbortController&&s.Request.prototype.hasOwnProperty("signal"))return bt(t,e);if(S()&&self.worker&&self.worker.actor)return self.worker.actor.send("getResource",t,e,void 0,!0)}return function(t,e){var r=new s.XMLHttpRequest;for(var n in r.open(t.method||"GET",t.url,!0),"arrayBuffer"===t.type&&(r.responseType="arraybuffer"),t.headers)r.setRequestHeader(n,t.headers[n]);return"json"===t.type&&(r.responseType="text",r.setRequestHeader("Accept","application/json")),r.withCredentials="include"===t.credentials,r.onerror=function(){e(new Error(r.statusText))},r.onload=function(){if((r.status>=200&&r.status<300||0===r.status)&&null!==r.response){var n=r.response;if("json"===t.type)try{n=JSON.parse(r.response)}catch(t){return e(t)}e(null,n,r.getResponseHeader("Cache-Control"),r.getResponseHeader("Expires"))}else e(new xt(r.statusText,r.status,t.url))},r.send(t.body),{cancel:function(){return r.abort()}}}(t,e)},Tt=function(t,e){return wt(f(t,{type:"arrayBuffer"}),e)},At=function(t,e){return wt(f(t,{method:"POST"}),e)};function kt(t){var e=s.document.createElement("a");return e.href=t,e.protocol===s.document.location.protocol&&e.host===s.document.location.host}var Mt,St,Et="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";Mt=[],St=0;var Ct=function(t,e){if(U.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),St>=N.MAX_PARALLEL_IMAGE_REQUESTS){var r={requestParameters:t,callback:e,cancelled:!1,cancel:function(){this.cancelled=!0}};return Mt.push(r),r}St++;var n=!1,i=function(){if(!n)for(n=!0,St--;Mt.length&&St0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)},Dt.prototype.setEventedParent=function(t,e){return this._eventedParent=t,this._eventedParentData=e,this};var Ot={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}},Rt=function(t,e,r,n){this.message=(t?t+": ":"")+r,n&&(this.identifier=n),null!=e&&e.__line__&&(this.line=e.__line__)};function Ft(t){var e=t.key,r=t.value;return r?[new Rt(e,r,"constants have been deprecated as of v8")]:[]}function Bt(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];for(var n=0,i=e;n":"value"===t.itemType.kind?"array":"array<"+e+">"}return t.kind}var ee=[qt,Ht,Gt,Wt,Zt,Kt,Yt,Qt(Xt),Jt];function re(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!re(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(var r=0,n=ee;r255?255:t}function i(t){return t<0?0:t>1?1:t}function a(t){return"%"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function o(t){return"%"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,"").toLowerCase();if(i in r)return r[i].slice();if("#"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf("("),c=i.indexOf(")");if(-1!==l&&c+1===i.length){var u=i.substr(0,l),h=i.substr(l+1,c-(l+1)).split(","),p=1;switch(u){case"rgba":if(4!==h.length)return null;p=o(h.pop());case"rgb":return 3!==h.length?null:[a(h[0]),a(h[1]),a(h[2]),p];case"hsla":if(4!==h.length)return null;p=o(h.pop());case"hsl":if(3!==h.length)return null;var f=(parseFloat(h[0])%360+360)%360/360,d=o(h[1]),m=o(h[2]),g=m<=.5?m*(d+1):m+d-m*d,y=2*m-g;return[n(255*s(y,g,f+1/3)),n(255*s(y,g,f)),n(255*s(y,g,f-1/3)),p];default:return null}}return null}}catch{}})).parseCSSColor,oe=function(t,e,r,n){void 0===n&&(n=1),this.r=t,this.g=e,this.b=r,this.a=n};oe.parse=function(t){if(t){if(t instanceof oe)return t;if("string"==typeof t){var e=ae(t);if(e)return new oe(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3])}}},oe.prototype.toString=function(){var t=this.toArray(),e=t[0],r=t[1],n=t[2],i=t[3];return"rgba("+Math.round(e)+","+Math.round(r)+","+Math.round(n)+","+i+")"},oe.prototype.toArray=function(){var t=this,e=t.r,r=t.g,n=t.b,i=t.a;return 0===i?[0,0,0,0]:[255*e/i,255*r/i,255*n/i,i]},oe.black=new oe(0,0,0,1),oe.white=new oe(1,1,1,1),oe.transparent=new oe(0,0,0,0),oe.red=new oe(1,0,0,1);var se=function(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};se.prototype.compare=function(t,e){return this.collator.compare(t,e)},se.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var le=function(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i},ce=function(t){this.sections=t};ce.fromString=function(t){return new ce([new le(t,null,null,null,null)])},ce.prototype.isEmpty=function(){return 0===this.sections.length||!this.sections.some((function(t){return 0!==t.text.length||t.image&&0!==t.image.name.length}))},ce.factory=function(t){return t instanceof ce?t:ce.fromString(t)},ce.prototype.toString=function(){return 0===this.sections.length?"":this.sections.map((function(t){return t.text})).join("")},ce.prototype.serialize=function(){for(var t=["format"],e=0,r=this.sections;e=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?typeof n>"u"||"number"==typeof n&&n>=0&&n<=1?null:"Invalid rgba value ["+[t,e,r,n].join(", ")+"]: 'a' must be between 0 and 1.":"Invalid rgba value ["+("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}function pe(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof oe)return!0;if(t instanceof se)return!0;if(t instanceof ce)return!0;if(t instanceof ue)return!0;if(Array.isArray(t)){for(var e=0,r=t;e2){var s=t[1];if("string"!=typeof s||!(s in ye)||"object"===s)return e.error('The item type argument of "array" must be one of string, number, boolean',1);a=ye[s],n++}else a=Xt;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);o=t[2],n++}r=Qt(a,o)}else r=ye[i];for(var l=[];n1)&&e.push(n)}}return e.concat(this.args.map((function(t){return t.serialize()})))};var xe=function(t){this.type=Kt,this.sections=t};xe.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");for(var n=[],i=!1,a=1;a<=t.length-1;++a){var o=t[a];if(i&&"object"==typeof o&&!Array.isArray(o)){i=!1;var s=null;if(o["font-scale"]&&!(s=e.parse(o["font-scale"],1,Ht)))return null;var l=null;if(o["text-font"]&&!(l=e.parse(o["text-font"],1,Qt(Gt))))return null;var c=null;if(o["text-color"]&&!(c=e.parse(o["text-color"],1,Zt)))return null;var u=n[n.length-1];u.scale=s,u.font=l,u.textColor=c}else{var h=e.parse(t[a],1,Xt);if(!h)return null;var p=h.type.kind;if("string"!==p&&"value"!==p&&"null"!==p&&"resolvedImage"!==p)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:h,scale:null,font:null,textColor:null})}}return new xe(n)},xe.prototype.evaluate=function(t){return new ce(this.sections.map((function(e){var r=e.content.evaluate(t);return fe(r)===Jt?new le("",r,null,null,null):new le(de(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)})))},xe.prototype.eachChild=function(t){for(var e=0,r=this.sections;e-1),r},_e.prototype.eachChild=function(t){t(this.input)},_e.prototype.outputDefined=function(){return!1},_e.prototype.serialize=function(){return["image",this.input.serialize()]};var be={"to-boolean":Wt,"to-color":Zt,"to-number":Ht,"to-string":Gt},we=function(t,e){this.type=t,this.args=e};we.parse=function(t,e){if(t.length<2)return e.error("Expected at least one argument.");var r=t[0];if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");for(var n=be[r],i=[],a=1;a4?"Invalid rbga value "+JSON.stringify(e)+": expected an array containing either three or four numeric values.":he(e[0],e[1],e[2],e[3])))return new oe(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new ge(r||"Could not parse color from value '"+("string"==typeof e?e:String(JSON.stringify(e)))+"'")}if("number"===this.type.kind){for(var o=null,s=0,l=this.args;s=e[2]||t[1]<=e[1]||t[3]>=e[3])}function Ie(t,e){var r=function(t){return(180+t)/360}(t[0]),n=function(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}(t[1]),i=Math.pow(2,e.z);return[Math.round(r*i*Se),Math.round(n*i*Se)]}function Le(t,e,r){var n=t[0]-e[0],i=t[1]-e[1],a=t[0]-r[0],o=t[1]-r[1];return n*o-a*i==0&&n*a<=0&&i*o<=0}function Pe(t,e,r){return e[1]>t[1]!=r[1]>t[1]&&t[0]<(r[0]-e[0])*(t[1]-e[1])/(r[1]-e[1])+e[0]}function ze(t,e){for(var r=!1,n=0,i=e.length;n0&&h<0||u<0&&h>0}function Re(t,e,r,n){var i=[e[0]-t[0],e[1]-t[1]];return 0!==function(t,e){return t[0]*e[1]-t[1]*e[0]}([n[0]-r[0],n[1]-r[1]],i)&&!(!Oe(t,e,r,n)||!Oe(r,n,t,e))}function Fe(t,e,r){for(var n=0,i=r;nr[2]){var i=.5*n,a=t[0]-r[0]>i?-n:r[0]-t[0]>i?n:0;0===a&&(a=t[0]-r[2]>i?-n:r[2]-t[0]>i?n:0),t[0]+=a}Ee(e,t)}function qe(t,e,r,n){for(var i=Math.pow(2,n.z)*Se,a=[n.x*Se,n.y*Se],o=[],s=0,l=t;s=0)return!1;var r=!0;return t.eachChild((function(t){r&&!Ye(t,e)&&(r=!1)})),r}Ge.parse=function(t,e){if(2!==t.length)return e.error("'within' expression requires exactly one argument, but found "+(t.length-1)+" instead.");if(pe(t[1])){var r=t[1];if("FeatureCollection"===r.type)for(var n=0;ne))throw new ge("Input is not a number.");o=s-1}return 0}$e.prototype.parse=function(t,e,r,n,i){return void 0===i&&(i={}),e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)},$e.prototype._parse=function(t,e){function r(t,e,r){return"assert"===r?new ve(e,[t]):"coerce"===r?new we(e,[t]):t}if((null===t||"string"==typeof t||"boolean"==typeof t||"number"==typeof t)&&(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var n=t[0];if("string"!=typeof n)return this.error("Expression name must be a string, but found "+typeof n+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var i=this.registry[n];if(i){var a=i.parse(t,this);if(!a)return null;if(this.expectedType){var o=this.expectedType,s=a.type;if("string"!==o.kind&&"number"!==o.kind&&"boolean"!==o.kind&&"object"!==o.kind&&"array"!==o.kind||"value"!==s.kind)if("color"!==o.kind&&"formatted"!==o.kind&&"resolvedImage"!==o.kind||"value"!==s.kind&&"string"!==s.kind){if(this.checkSubtype(o,s))return null}else a=r(a,o,e.typeAnnotation||"coerce");else a=r(a,o,e.typeAnnotation||"assert")}if(!(a instanceof me)&&"resolvedImage"!==a.type.kind&&Ke(a)){var l=new Ae;try{a=new me(a.type,a.evaluate(l))}catch(t){return this.error(t.message),null}}return a}return this.error('Unknown expression "'+n+'". If you wanted a literal array, use ["literal", [...]].',0)}return typeof t>"u"?this.error("'undefined' value invalid. Use null instead."):"object"==typeof t?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof t+" instead.")},$e.prototype.concat=function(t,e,r){var n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new $e(this.registry,n,e||null,i,this.errors)},$e.prototype.error=function(t){for(var e=[],r=arguments.length-1;r-- >0;)e[r]=arguments[r+1];var n=""+this.key+e.map((function(t){return"["+t+"]"})).join("");this.errors.push(new Ut(n,t))},$e.prototype.checkSubtype=function(t,e){var r=re(t,e);return r&&this.error(r),r};var Qe=function(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(var n=0,i=r;n=o)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',l);var u=e.parse(s,c,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new Qe(i,r,n)},Qe.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Je(e,n)].evaluate(t)},Qe.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t};var er=Object.freeze({__proto__:null,number:tr,color:function(t,e,r){return new oe(tr(t.r,e.r,r),tr(t.g,e.g,r),tr(t.b,e.b,r),tr(t.a,e.a,r))},array:function(t,e,r){return t.map((function(t,n){return tr(t,e[n],r)}))}}),rr=.95047,nr=1.08883,ir=4/29,ar=6/29,or=3*ar*ar,sr=ar*ar*ar,lr=Math.PI/180,cr=180/Math.PI;function ur(t){return t>sr?Math.pow(t,1/3):t/or+ir}function hr(t){return t>ar?t*t*t:or*(t-ir)}function pr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function fr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function dr(t){var e=fr(t.r),r=fr(t.g),n=fr(t.b),i=ur((.4124564*e+.3575761*r+.1804375*n)/rr),a=ur((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*a-16,a:500*(i-a),b:200*(a-ur((.0193339*e+.119192*r+.9503041*n)/nr)),alpha:t.a}}function mr(t){var e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*hr(e),r=rr*hr(r),n=nr*hr(n),new oe(pr(3.2404542*r-1.5371385*e-.4985314*n),pr(-.969266*r+1.8760108*e+.041556*n),pr(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function gr(t,e,r){var n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}var yr={forward:dr,reverse:mr,interpolate:function(t,e,r){return{l:tr(t.l,e.l,r),a:tr(t.a,e.a,r),b:tr(t.b,e.b,r),alpha:tr(t.alpha,e.alpha,r)}}},vr={forward:function(t){var e=dr(t),r=e.l,n=e.a,i=e.b,a=Math.atan2(i,n)*cr;return{h:a<0?a+360:a,c:Math.sqrt(n*n+i*i),l:r,alpha:t.a}},reverse:function(t){var e=t.h*lr,r=t.c;return mr({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:gr(t.h,e.h,r),c:tr(t.c,e.c,r),l:tr(t.l,e.l,r),alpha:tr(t.alpha,e.alpha,r)}}},xr=Object.freeze({__proto__:null,lab:yr,hcl:vr}),_r=function(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(var a=0,o=i;a1})))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:s}}if(t.length-1<4)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(!(i=e.parse(i,2,Ht)))return null;var l=[],c=null;"interpolate-hcl"===r||"interpolate-lab"===r?c=Zt:e.expectedType&&"value"!==e.expectedType.kind&&(c=e.expectedType);for(var u=0;u=h)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',f);var m=e.parse(p,d,c);if(!m)return null;c=c||m.type,l.push([h,m])}return"number"===c.kind||"color"===c.kind||"array"===c.kind&&"number"===c.itemType.kind&&"number"==typeof c.N?new _r(c,r,n,i,l):e.error("Type "+te(c)+" is not interpolatable.")},_r.prototype.evaluate=function(t){var e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);var n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);var i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);var a=Je(e,n),o=e[a],s=e[a+1],l=_r.interpolationFactor(this.interpolation,n,o,s),c=r[a].evaluate(t),u=r[a+1].evaluate(t);return"interpolate"===this.operator?er[this.type.kind.toLowerCase()](c,u,l):"interpolate-hcl"===this.operator?vr.reverse(vr.interpolate(vr.forward(c),vr.forward(u),l)):yr.reverse(yr.interpolate(yr.forward(c),yr.forward(u),l))},_r.prototype.eachChild=function(t){t(this.input);for(var e=0,r=this.outputs;e=r.length)throw new ge("Array index out of bounds: "+e+" > "+(r.length-1)+".");if(e!==Math.floor(e))throw new ge("Array index must be an integer, but found "+e+" instead.");return r[e]},Ar.prototype.eachChild=function(t){t(this.index),t(this.input)},Ar.prototype.outputDefined=function(){return!1},Ar.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var kr=function(t,e){this.type=Wt,this.needle=t,this.haystack=e};kr.parse=function(t,e){if(3!==t.length)return e.error("Expected 2 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Xt),n=e.parse(t[2],2,Xt);return r&&n?ne(r.type,[Wt,Gt,Ht,qt,Xt])?new kr(r,n):e.error("Expected first argument to be of type boolean, string, number or null, but found "+te(r.type)+" instead"):null},kr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!ie(e,["boolean","string","number","null"]))throw new ge("Expected first argument to be of type boolean, string, number or null, but found "+te(fe(e))+" instead.");if(!ie(r,["string","array"]))throw new ge("Expected second argument to be of type array or string, but found "+te(fe(r))+" instead.");return r.indexOf(e)>=0},kr.prototype.eachChild=function(t){t(this.needle),t(this.haystack)},kr.prototype.outputDefined=function(){return!0},kr.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var Mr=function(t,e,r){this.type=Ht,this.needle=t,this.haystack=e,this.fromIndex=r};Mr.parse=function(t,e){if(t.length<=2||t.length>=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Xt),n=e.parse(t[2],2,Xt);if(!r||!n)return null;if(!ne(r.type,[Wt,Gt,Ht,qt,Xt]))return e.error("Expected first argument to be of type boolean, string, number or null, but found "+te(r.type)+" instead");if(4===t.length){var i=e.parse(t[3],3,Ht);return i?new Mr(r,n,i):null}return new Mr(r,n)},Mr.prototype.evaluate=function(t){var e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!ie(e,["boolean","string","number","null"]))throw new ge("Expected first argument to be of type boolean, string, number or null, but found "+te(fe(e))+" instead.");if(!ie(r,["string","array"]))throw new ge("Expected second argument to be of type array or string, but found "+te(fe(r))+" instead.");if(this.fromIndex){var n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)},Mr.prototype.eachChild=function(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)},Mr.prototype.outputDefined=function(){return!1},Mr.prototype.serialize=function(){if(null!=this.fromIndex&&void 0!==this.fromIndex){var t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var Sr=function(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a};Sr.parse=function(t,e){if(t.length<5)return e.error("Expected at least 4 arguments, but found only "+(t.length-1)+".");if(t.length%2!=1)return e.error("Expected an even number of arguments.");var r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);for(var i={},a=[],o=2;oNumber.MAX_SAFE_INTEGER)return c.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if("number"==typeof p&&Math.floor(p)!==p)return c.error("Numeric branch labels must be integer values.");if(r){if(c.checkSubtype(r,fe(p)))return null}else r=fe(p);if(typeof i[String(p)]<"u")return c.error("Branch labels must be unique.");i[String(p)]=a.length}var f=e.parse(l,o,n);if(!f)return null;n=n||f.type,a.push(f)}var d=e.parse(t[1],1,Xt);if(!d)return null;var m=e.parse(t[t.length-1],t.length-1,n);return!m||"value"!==d.type.kind&&e.concat(1).checkSubtype(r,d.type)?null:new Sr(r,n,d,i,a,m)},Sr.prototype.evaluate=function(t){var e=this.input.evaluate(t);return(fe(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)},Sr.prototype.eachChild=function(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)},Sr.prototype.outputDefined=function(){return this.outputs.every((function(t){return t.outputDefined()}))&&this.otherwise.outputDefined()},Sr.prototype.serialize=function(){for(var t=this,e=["match",this.input.serialize()],r=[],n={},i=0,a=Object.keys(this.cases).sort();i=5)return e.error("Expected 3 or 4 arguments, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1,Xt),n=e.parse(t[2],2,Ht);if(!r||!n)return null;if(!ne(r.type,[Qt(Xt),Gt,Xt]))return e.error("Expected first argument to be of type array or string, but found "+te(r.type)+" instead");if(4===t.length){var i=e.parse(t[3],3,Ht);return i?new Cr(r.type,r,n,i):null}return new Cr(r.type,r,n)},Cr.prototype.evaluate=function(t){var e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!ie(e,["string","array"]))throw new ge("Expected first argument to be of type array or string, but found "+te(fe(e))+" instead.");if(this.endIndex){var n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)},Cr.prototype.eachChild=function(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)},Cr.prototype.outputDefined=function(){return!1},Cr.prototype.serialize=function(){if(null!=this.endIndex&&void 0!==this.endIndex){var t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};var zr=Pr("==",(function(t,e,r){return e===r}),Lr),Dr=Pr("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!Lr(0,e,r,n)})),Or=Pr("<",(function(t,e,r){return e",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Fr=Pr("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Br=Pr(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0})),jr=function(t,e,r,n,i){this.type=Gt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i};jr.parse=function(t,e){if(3!==t.length)return e.error("Expected two arguments.");var r=e.parse(t[1],1,Ht);if(!r)return null;var n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");var i=null;if(n.locale&&!(i=e.parse(n.locale,1,Gt)))return null;var a=null;if(n.currency&&!(a=e.parse(n.currency,1,Gt)))return null;var o=null;if(n["min-fraction-digits"]&&!(o=e.parse(n["min-fraction-digits"],1,Ht)))return null;var s=null;return n["max-fraction-digits"]&&!(s=e.parse(n["max-fraction-digits"],1,Ht))?null:new jr(r,i,a,o,s)},jr.prototype.evaluate=function(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))},jr.prototype.eachChild=function(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)},jr.prototype.outputDefined=function(){return!1},jr.prototype.serialize=function(){var t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]};var Nr=function(t){this.type=Ht,this.input=t};Nr.parse=function(t,e){if(2!==t.length)return e.error("Expected 1 argument, but found "+(t.length-1)+" instead.");var r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error("Expected argument of type string or array, but found "+te(r.type)+" instead."):new Nr(r):null},Nr.prototype.evaluate=function(t){var e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new ge("Expected value to be of type string or array, but found "+te(fe(e))+" instead.")},Nr.prototype.eachChild=function(t){t(this.input)},Nr.prototype.outputDefined=function(){return!1},Nr.prototype.serialize=function(){var t=["length"];return this.eachChild((function(e){t.push(e.serialize())})),t};var Ur={"==":zr,"!=":Dr,">":Rr,"<":Or,">=":Br,"<=":Fr,array:ve,at:Ar,boolean:ve,case:Er,coalesce:wr,collator:Me,format:xe,image:_e,in:kr,"index-of":Mr,interpolate:_r,"interpolate-hcl":_r,"interpolate-lab":_r,length:Nr,let:Tr,literal:me,match:Sr,number:ve,"number-format":jr,object:ve,slice:Cr,step:Qe,string:ve,"to-boolean":we,"to-color":we,"to-number":we,"to-string":we,var:Xe,within:Ge};function Vr(t,e){var r=e[0],n=e[1],i=e[2],a=e[3];r=r.evaluate(t),n=n.evaluate(t),i=i.evaluate(t);var o=a?a.evaluate(t):1,s=he(r,n,i,o);if(s)throw new ge(s);return new oe(r/255*o,n/255*o,i/255*o,o)}function qr(t,e){return t in e}function Hr(t,e){var r=e[t];return typeof r>"u"?null:r}function Gr(t){return{type:t}}function Wr(t){return{result:"success",value:t}}function Zr(t){return{result:"error",value:t}}function Yr(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Xr(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function $r(t){return!!t.expression&&t.expression.interpolated}function Kr(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Jr(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function Qr(t){return t}function tn(t,e){var r,n,i,a="color"===e.type,o=t.stops&&"object"==typeof t.stops[0][0],s=o||void 0!==t.property,l=o||!s,c=t.type||($r(e)?"exponential":"interval");if(a&&((t=Bt({},t)).stops&&(t.stops=t.stops.map((function(t){return[t[0],oe.parse(t[1])]}))),t.default?t.default=oe.parse(t.default):t.default=oe.parse(e.default)),t.colorSpace&&"rgb"!==t.colorSpace&&!xr[t.colorSpace])throw new Error("Unknown color space: "+t.colorSpace);if("exponential"===c)r=an;else if("interval"===c)r=nn;else if("categorical"===c){r=rn,n=Object.create(null);for(var u=0,h=t.stops;u=t.stops[n-1][0])return t.stops[n-1][1];var i=Je(t.stops.map((function(t){return t[0]})),r);return t.stops[i][1]}function an(t,e,r){var n=void 0!==t.base?t.base:1;if("number"!==Kr(r))return en(t.default,e.default);var i=t.stops.length;if(1===i||r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];var a=Je(t.stops.map((function(t){return t[0]})),r),o=function(t,e,r,n){var i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=er[e.type]||Qr;if(t.colorSpace&&"rgb"!==t.colorSpace){var u=xr[t.colorSpace];c=function(t,e){return u.reverse(u.interpolate(u.forward(t),u.forward(e),o))}}return"function"==typeof s.evaluate?{evaluate:function(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var r=s.evaluate.apply(void 0,t),n=l.evaluate.apply(void 0,t);if(void 0!==r&&void 0!==n)return c(r,n,o)}}:c(s,l,o)}function on(t,e,r){return"color"===e.type?r=oe.parse(r):"formatted"===e.type?r=ce.fromString(r.toString()):"resolvedImage"===e.type?r=ue.fromString(r.toString()):Kr(r)!==e.type&&("enum"!==e.type||!e.values[r])&&(r=void 0),en(r,t.default,e.default)}ke.register(Ur,{error:[{kind:"error"},[Gt],function(t,e){var r=e[0];throw new ge(r.evaluate(t))}],typeof:[Gt,[Xt],function(t,e){return te(fe(e[0].evaluate(t)))}],"to-rgba":[Qt(Ht,4),[Zt],function(t,e){return e[0].evaluate(t).toArray()}],rgb:[Zt,[Ht,Ht,Ht],Vr],rgba:[Zt,[Ht,Ht,Ht,Ht],Vr],has:{type:Wt,overloads:[[[Gt],function(t,e){return qr(e[0].evaluate(t),t.properties())}],[[Gt,Yt],function(t,e){var r=e[0],n=e[1];return qr(r.evaluate(t),n.evaluate(t))}]]},get:{type:Xt,overloads:[[[Gt],function(t,e){return Hr(e[0].evaluate(t),t.properties())}],[[Gt,Yt],function(t,e){var r=e[0],n=e[1];return Hr(r.evaluate(t),n.evaluate(t))}]]},"feature-state":[Xt,[Gt],function(t,e){return Hr(e[0].evaluate(t),t.featureState||{})}],properties:[Yt,[],function(t){return t.properties()}],"geometry-type":[Gt,[],function(t){return t.geometryType()}],id:[Xt,[],function(t){return t.id()}],zoom:[Ht,[],function(t){return t.globals.zoom}],"heatmap-density":[Ht,[],function(t){return t.globals.heatmapDensity||0}],"line-progress":[Ht,[],function(t){return t.globals.lineProgress||0}],accumulated:[Xt,[],function(t){return void 0===t.globals.accumulated?null:t.globals.accumulated}],"+":[Ht,Gr(Ht),function(t,e){for(var r=0,n=0,i=e;n":[Wt,[Gt,Xt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>a}],"filter-id->":[Wt,[Xt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>i}],"filter-<=":[Wt,[Gt,Xt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i<=a}],"filter-id-<=":[Wt,[Xt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n<=i}],"filter->=":[Wt,[Gt,Xt],function(t,e){var r=e[0],n=e[1],i=t.properties()[r.value],a=n.value;return typeof i==typeof a&&i>=a}],"filter-id->=":[Wt,[Xt],function(t,e){var r=e[0],n=t.id(),i=r.value;return typeof n==typeof i&&n>=i}],"filter-has":[Wt,[Xt],function(t,e){return e[0].value in t.properties()}],"filter-has-id":[Wt,[],function(t){return null!==t.id()&&void 0!==t.id()}],"filter-type-in":[Wt,[Qt(Gt)],function(t,e){return e[0].value.indexOf(t.geometryType())>=0}],"filter-id-in":[Wt,[Qt(Xt)],function(t,e){return e[0].value.indexOf(t.id())>=0}],"filter-in-small":[Wt,[Gt,Qt(Xt)],function(t,e){var r=e[0];return e[1].value.indexOf(t.properties()[r.value])>=0}],"filter-in-large":[Wt,[Gt,Qt(Xt)],function(t,e){var r=e[0],n=e[1];return function(t,e,r,n){for(;r<=n;){var i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[r.value],n.value,0,n.value.length-1)}],all:{type:Wt,overloads:[[[Wt,Wt],function(t,e){var r=e[0],n=e[1];return r.evaluate(t)&&n.evaluate(t)}],[Gr(Wt),function(t,e){for(var r=0,n=e;r0&&"string"==typeof t[0]&&t[0]in Ur}function cn(t,e){var r=new $e(Ur,[],e?function(t){var e={color:Zt,string:Gt,number:Ht,enum:Gt,boolean:Wt,formatted:Kt,resolvedImage:Jt};return"array"===t.type?Qt(e[t.value]||Xt,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return n?Wr(new sn(n,e)):Zr(r.errors)}sn.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)},sn.prototype.evaluate=function(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{var o=this.expression.evaluate(this._evaluator);if(null==o||"number"==typeof o&&o!=o)return this._defaultValue;if(this._enumValues&&!(o in this._enumValues))throw new ge("Expected value to be one of "+Object.keys(this._enumValues).map((function(t){return JSON.stringify(t)})).join(", ")+", but found "+JSON.stringify(o)+" instead.");return o}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,typeof console<"u"&&console.warn(t.message)),this._defaultValue}};var un=function(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Ze(e.expression)};un.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},un.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)};var hn=function(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Ze(e.expression),this.interpolationType=n};function pn(t,e){if("error"===(t=cn(t,e)).result)return t;var r=t.value.expression,n=We(r);if(!n&&!Yr(e))return Zr([new Ut("","data expressions not supported")]);var i=Ye(r,["zoom"]);if(!i&&!Xr(e))return Zr([new Ut("","zoom expressions not supported")]);var a=dn(r);if(!a&&!i)return Zr([new Ut("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(a instanceof Ut)return Zr([a]);if(a instanceof _r&&!$r(e))return Zr([new Ut("",'"interpolate" expressions cannot be used with this property')]);if(!a)return Wr(new un(n?"constant":"source",t.value));var o=a instanceof _r?a.interpolation:void 0;return Wr(new hn(n?"camera":"composite",t.value,a.labels,o))}hn.prototype.evaluateWithoutErrorHandling=function(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)},hn.prototype.evaluate=function(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)},hn.prototype.interpolationFactor=function(t,e,r){return this.interpolationType?_r.interpolationFactor(this.interpolationType,t,e,r):0};var fn=function(t,e){this._parameters=t,this._specification=e,Bt(this,tn(this._parameters,this._specification))};function dn(t){var e=null;if(t instanceof Tr)e=dn(t.result);else if(t instanceof wr)for(var r=0,n=t.args;rn.maximum?[new Rt(e,r,r+" is greater than the maximum value "+n.maximum)]:[]}function vn(t){var e,r,n,i=t.valueSpec,a=jt(t.value.type),o={},s="categorical"!==a&&void 0===t.value.property,l=!s,c="array"===Kr(t.value.stops)&&"array"===Kr(t.value.stops[0])&&"object"===Kr(t.value.stops[0][0]),u=mn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===a)return[new Rt(t.key,t.value,'identity function may not have a "stops" property')];var e=[],r=t.value;return e=e.concat(gn({key:t.key,value:r,valueSpec:t.valueSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===Kr(r)&&0===r.length&&e.push(new Rt(t.key,r,"array must have at least one stop")),e},default:function(t){return Vn({key:t.key,value:t.value,valueSpec:i,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===a&&s&&u.push(new Rt(t.key,t.value,'missing required property "property"')),"identity"!==a&&!t.value.stops&&u.push(new Rt(t.key,t.value,'missing required property "stops"')),"exponential"===a&&t.valueSpec.expression&&!$r(t.valueSpec)&&u.push(new Rt(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!Yr(t.valueSpec)?u.push(new Rt(t.key,t.value,"property functions not supported")):s&&!Xr(t.valueSpec)&&u.push(new Rt(t.key,t.value,"zoom functions not supported"))),("categorical"===a||c)&&void 0===t.value.property&&u.push(new Rt(t.key,t.value,'"property" property is required')),u;function h(t){var e=[],a=t.value,s=t.key;if("array"!==Kr(a))return[new Rt(s,a,"array expected, "+Kr(a)+" found")];if(2!==a.length)return[new Rt(s,a,"array length 2 expected, length "+a.length+" found")];if(c){if("object"!==Kr(a[0]))return[new Rt(s,a,"object expected, "+Kr(a[0])+" found")];if(void 0===a[0].zoom)return[new Rt(s,a,"object stop key must have zoom")];if(void 0===a[0].value)return[new Rt(s,a,"object stop key must have value")];if(n&&n>jt(a[0].zoom))return[new Rt(s,a[0].zoom,"stop zoom values must appear in ascending order")];jt(a[0].zoom)!==n&&(n=jt(a[0].zoom),r=void 0,o={}),e=e.concat(mn({key:s+"[0]",value:a[0],valueSpec:{zoom:{}},style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:yn,value:p}}))}else e=e.concat(p({key:s+"[0]",value:a[0],valueSpec:{},style:t.style,styleSpec:t.styleSpec},a));return ln(Nt(a[1]))?e.concat([new Rt(s+"[1]",a[1],"expressions are not allowed in function stops.")]):e.concat(Vn({key:s+"[1]",value:a[1],valueSpec:i,style:t.style,styleSpec:t.styleSpec}))}function p(t,n){var s=Kr(t.value),l=jt(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new Rt(t.key,c,s+" stop domain type must match previous stop domain type "+e)]}else e=s;if("number"!==s&&"string"!==s&&"boolean"!==s)return[new Rt(t.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==s&&"categorical"!==a){var u="number expected, "+s+" found";return Yr(i)&&void 0===a&&(u+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new Rt(t.key,c,u)]}return"categorical"!==a||"number"!==s||isFinite(l)&&Math.floor(l)===l?"categorical"!==a&&"number"===s&&void 0!==r&&l=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(var e=0,r=t.slice(1);ee?1:0}function kn(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(var e=1;e"===e||"<="===e||">="===e?Sn(t[1],t[2],e):"any"===e?function(t){return["any"].concat(t.map(Mn))}(t.slice(1)):"all"===e?["all"].concat(t.slice(1).map(Mn)):"none"===e?["all"].concat(t.slice(1).map(Mn).map(In)):"in"===e?En(t[1],t.slice(2)):"!in"===e?In(En(t[1],t.slice(2))):"has"===e?Cn(t[1]):"!has"===e?In(Cn(t[1])):"within"!==e||t}function Sn(t,e,r){switch(t){case"$type":return["filter-type-"+r,e];case"$id":return["filter-id-"+r,e];default:return["filter-"+r,t,e]}}function En(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((function(t){return typeof t!=typeof e[0]}))?["filter-in-large",t,["literal",e.sort(An)]]:["filter-in-small",t,["literal",e]]}}function Cn(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function In(t){return["!",t]}function Ln(t){return bn(Nt(t.value))?xn(Bt({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Pn(t)}function Pn(t){var e=t.value,r=t.key;if("array"!==Kr(e))return[new Rt(r,e,"array expected, "+Kr(e)+" found")];var n,i=t.styleSpec,a=[];if(e.length<1)return[new Rt(r,e,"filter array must have at least 1 element")];switch(a=a.concat(_n({key:r+"[0]",value:e[0],valueSpec:i.filter_operator,style:t.style,styleSpec:t.styleSpec})),jt(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&"$type"===jt(e[1])&&a.push(new Rt(r,e,'"$type" cannot be use with operator "'+e[0]+'"'));case"==":case"!=":3!==e.length&&a.push(new Rt(r,e,'filter array for operator "'+e[0]+'" must have 3 elements'));case"in":case"!in":e.length>=2&&"string"!==(n=Kr(e[1]))&&a.push(new Rt(r+"[1]",e[1],"string expected, "+n+" found"));for(var o=2;o=u[f+0]&&n>=u[f+1])?(o[p]=!0,a.push(c[p])):o[p]=!1}}},ti.prototype._forEachCell=function(t,e,r,n,i,a,o,s){for(var l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),h=this._convertToCellCoord(n),p=l;p<=u;p++)for(var f=c;f<=h;f++){var d=this.d*f+p;if((!s||s(this._convertFromCellCoord(p),this._convertFromCellCoord(f),this._convertFromCellCoord(p+1),this._convertFromCellCoord(f+1)))&&i.call(this,t,e,r,n,d,a,o,s))return}},ti.prototype._convertFromCellCoord=function(t){return(t-this.padding)/this.scale},ti.prototype._convertToCellCoord=function(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))},ti.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var t=this.cells,e=Qn+this.cells.length+1+1,r=0,n=0;n=0)){var h=t[u];c[u]=ni[l].shallow.indexOf(u)>=0?h:li(h,e)}t instanceof Error&&(c.message=t.message)}if(c.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==l&&(c.$name=l),c}throw new Error("can't serialize object of type "+typeof t)}function ci(t){if(null==t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||t instanceof Boolean||t instanceof Number||t instanceof String||t instanceof Date||t instanceof RegExp||oi(t)||si(t)||ArrayBuffer.isView(t)||t instanceof ei)return t;if(Array.isArray(t))return t.map(ci);if("object"==typeof t){var e=t.$name||"Object",r=ni[e].klass;if(!r)throw new Error("can't deserialize unregistered class "+e);if(r.deserialize)return r.deserialize(t);for(var n=Object.create(r.prototype),i=0,a=Object.keys(t);i=0?s:ci(s)}}return n}throw new Error("can't deserialize object of type "+typeof t)}var ui=function(){this.first=!0};ui.prototype.update=function(t,e){var r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoom=128&&t<=255},Arabic:function(t){return t>=1536&&t<=1791},"Arabic Supplement":function(t){return t>=1872&&t<=1919},"Arabic Extended-A":function(t){return t>=2208&&t<=2303},"Hangul Jamo":function(t){return t>=4352&&t<=4607},"Unified Canadian Aboriginal Syllabics":function(t){return t>=5120&&t<=5759},Khmer:function(t){return t>=6016&&t<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(t){return t>=6320&&t<=6399},"General Punctuation":function(t){return t>=8192&&t<=8303},"Letterlike Symbols":function(t){return t>=8448&&t<=8527},"Number Forms":function(t){return t>=8528&&t<=8591},"Miscellaneous Technical":function(t){return t>=8960&&t<=9215},"Control Pictures":function(t){return t>=9216&&t<=9279},"Optical Character Recognition":function(t){return t>=9280&&t<=9311},"Enclosed Alphanumerics":function(t){return t>=9312&&t<=9471},"Geometric Shapes":function(t){return t>=9632&&t<=9727},"Miscellaneous Symbols":function(t){return t>=9728&&t<=9983},"Miscellaneous Symbols and Arrows":function(t){return t>=11008&&t<=11263},"CJK Radicals Supplement":function(t){return t>=11904&&t<=12031},"Kangxi Radicals":function(t){return t>=12032&&t<=12255},"Ideographic Description Characters":function(t){return t>=12272&&t<=12287},"CJK Symbols and Punctuation":function(t){return t>=12288&&t<=12351},Hiragana:function(t){return t>=12352&&t<=12447},Katakana:function(t){return t>=12448&&t<=12543},Bopomofo:function(t){return t>=12544&&t<=12591},"Hangul Compatibility Jamo":function(t){return t>=12592&&t<=12687},Kanbun:function(t){return t>=12688&&t<=12703},"Bopomofo Extended":function(t){return t>=12704&&t<=12735},"CJK Strokes":function(t){return t>=12736&&t<=12783},"Katakana Phonetic Extensions":function(t){return t>=12784&&t<=12799},"Enclosed CJK Letters and Months":function(t){return t>=12800&&t<=13055},"CJK Compatibility":function(t){return t>=13056&&t<=13311},"CJK Unified Ideographs Extension A":function(t){return t>=13312&&t<=19903},"Yijing Hexagram Symbols":function(t){return t>=19904&&t<=19967},"CJK Unified Ideographs":function(t){return t>=19968&&t<=40959},"Yi Syllables":function(t){return t>=40960&&t<=42127},"Yi Radicals":function(t){return t>=42128&&t<=42191},"Hangul Jamo Extended-A":function(t){return t>=43360&&t<=43391},"Hangul Syllables":function(t){return t>=44032&&t<=55215},"Hangul Jamo Extended-B":function(t){return t>=55216&&t<=55295},"Private Use Area":function(t){return t>=57344&&t<=63743},"CJK Compatibility Ideographs":function(t){return t>=63744&&t<=64255},"Arabic Presentation Forms-A":function(t){return t>=64336&&t<=65023},"Vertical Forms":function(t){return t>=65040&&t<=65055},"CJK Compatibility Forms":function(t){return t>=65072&&t<=65103},"Small Form Variants":function(t){return t>=65104&&t<=65135},"Arabic Presentation Forms-B":function(t){return t>=65136&&t<=65279},"Halfwidth and Fullwidth Forms":function(t){return t>=65280&&t<=65519}};function pi(t){for(var e=0,r=t;e=65097&&t<=65103)||hi["CJK Compatibility Ideographs"](t)||hi["CJK Compatibility"](t)||hi["CJK Radicals Supplement"](t)||hi["CJK Strokes"](t)||hi["CJK Symbols and Punctuation"](t)&&!(t>=12296&&t<=12305)&&!(t>=12308&&t<=12319)&&12336!==t||hi["CJK Unified Ideographs Extension A"](t)||hi["CJK Unified Ideographs"](t)||hi["Enclosed CJK Letters and Months"](t)||hi["Hangul Compatibility Jamo"](t)||hi["Hangul Jamo Extended-A"](t)||hi["Hangul Jamo Extended-B"](t)||hi["Hangul Jamo"](t)||hi["Hangul Syllables"](t)||hi.Hiragana(t)||hi["Ideographic Description Characters"](t)||hi.Kanbun(t)||hi["Kangxi Radicals"](t)||hi["Katakana Phonetic Extensions"](t)||hi.Katakana(t)&&12540!==t||!(!hi["Halfwidth and Fullwidth Forms"](t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!hi["Small Form Variants"](t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||hi["Unified Canadian Aboriginal Syllabics"](t)||hi["Unified Canadian Aboriginal Syllabics Extended"](t)||hi["Vertical Forms"](t)||hi["Yijing Hexagram Symbols"](t)||hi["Yi Syllables"](t)||hi["Yi Radicals"](t))}function gi(t){return!(mi(t)||function(t){return!!(hi["Latin-1 Supplement"](t)&&(167===t||169===t||174===t||177===t||188===t||189===t||190===t||215===t||247===t)||hi["General Punctuation"](t)&&(8214===t||8224===t||8225===t||8240===t||8241===t||8251===t||8252===t||8258===t||8263===t||8264===t||8265===t||8273===t)||hi["Letterlike Symbols"](t)||hi["Number Forms"](t)||hi["Miscellaneous Technical"](t)&&(t>=8960&&t<=8967||t>=8972&&t<=8991||t>=8996&&t<=9e3||9003===t||t>=9085&&t<=9114||t>=9150&&t<=9165||9167===t||t>=9169&&t<=9179||t>=9186&&t<=9215)||hi["Control Pictures"](t)&&9251!==t||hi["Optical Character Recognition"](t)||hi["Enclosed Alphanumerics"](t)||hi["Geometric Shapes"](t)||hi["Miscellaneous Symbols"](t)&&!(t>=9754&&t<=9759)||hi["Miscellaneous Symbols and Arrows"](t)&&(t>=11026&&t<=11055||t>=11088&&t<=11097||t>=11192&&t<=11243)||hi["CJK Symbols and Punctuation"](t)||hi.Katakana(t)||hi["Private Use Area"](t)||hi["CJK Compatibility Forms"](t)||hi["Small Form Variants"](t)||hi["Halfwidth and Fullwidth Forms"](t)||8734===t||8756===t||8757===t||t>=9984&&t<=10087||t>=10102&&t<=10131||65532===t||65533===t)}(t))}function yi(t){return hi.Arabic(t)||hi["Arabic Supplement"](t)||hi["Arabic Extended-A"](t)||hi["Arabic Presentation Forms-A"](t)||hi["Arabic Presentation Forms-B"](t)}function vi(t){return t>=1424&&t<=2303||hi["Arabic Presentation Forms-A"](t)||hi["Arabic Presentation Forms-B"](t)}function xi(t,e){return!(!e&&vi(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||hi.Khmer(t))}function _i(t){for(var e=0,r=t;e-1&&(ki="error"),Ai&&Ai(t)};function Ei(){Ci.fire(new Pt("pluginStateChange",{pluginStatus:ki,pluginURL:Mi}))}var Ci=new Dt,Ii=function(){return ki},Li=function(){if(ki!==bi||!Mi)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");ki=wi,Ei(),Mi&&Tt({url:Mi},(function(t){t?Si(t):(ki=Ti,Ei())}))},Pi={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return ki===Ti||null!=Pi.applyArabicShaping},isLoading:function(){return ki===wi},setState:function(t){ki=t.pluginStatus,Mi=t.pluginURL},isParsed:function(){return null!=Pi.applyArabicShaping&&null!=Pi.processBidirectionalText&&null!=Pi.processStyledBidirectionalText},getPluginURL:function(){return Mi}},zi=function(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new ui,this.transition={})};zi.prototype.isSupportedScript=function(t){return function(t,e){for(var r=0,n=t;rthis.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}};var Di=function(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(Jr(t))return new fn(t,e);if(ln(t)){var r=pn(t,e);if("error"===r.result)throw new Error(r.value.map((function(t){return t.key+": "+t.message})).join(", "));return r.value}var n=t;return"string"==typeof t&&"color"===e.type&&(n=oe.parse(t)),{kind:"constant",evaluate:function(){return n}}}(void 0===e?t.specification.default:e,t.specification)};Di.prototype.isDataDriven=function(){return"source"===this.expression.kind||"composite"===this.expression.kind},Di.prototype.possiblyEvaluate=function(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)};var Oi=function(t){this.property=t,this.value=new Di(t,void 0)};Oi.prototype.transitioned=function(t,e){return new Fi(this.property,this.value,e,f({},t.transition,this.transition),t.now)},Oi.prototype.untransitioned=function(){return new Fi(this.property,this.value,null,{},0)};var Ri=function(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)};Ri.prototype.getValue=function(t){return w(this._values[t].value.value)},Ri.prototype.setValue=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Oi(this._values[t].property)),this._values[t].value=new Di(this._values[t].property,null===e?void 0:w(e))},Ri.prototype.getTransition=function(t){return w(this._values[t].transition)},Ri.prototype.setTransition=function(t,e){this._values.hasOwnProperty(t)||(this._values[t]=new Oi(this._values[t].property)),this._values[t].transition=w(e)||void 0},Ri.prototype.serialize=function(){for(var t={},e=0,r=Object.keys(this._values);ethis.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;var e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}return i};var Bi=function(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)};Bi.prototype.possiblyEvaluate=function(t,e,r){for(var n=new Ui(this._properties),i=0,a=Object.keys(this._values);in.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},e.prototype.interpolate=function(t){return t},e}(qi),Gi=function(t){this.specification=t};Gi.prototype.possiblyEvaluate=function(t,e,r,n){if(void 0!==t.value){if("constant"===t.expression.kind){var i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new zi(Math.floor(e.zoom-1),e)),t.expression.evaluate(new zi(Math.floor(e.zoom),e)),t.expression.evaluate(new zi(Math.floor(e.zoom+1),e)),e)}},Gi.prototype._calculate=function(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}},Gi.prototype.interpolate=function(t){return t};var Wi=function(t){this.specification=t};Wi.prototype.possiblyEvaluate=function(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)},Wi.prototype.interpolate=function(){return!1};var Zi=function(t){for(var e in this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[],t){var r=t[e];r.specification.overridable&&this.overridableProperties.push(e);var n=this.defaultPropertyValues[e]=new Di(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new Oi(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}};ii("DataDrivenProperty",qi),ii("DataConstantProperty",Vi),ii("CrossFadedDataDrivenProperty",Hi),ii("CrossFadedProperty",Gi),ii("ColorRampProperty",Wi);var Yi="-transition",Xi=function(t){function e(e,r){if(t.call(this),this.id=e.id,this.type=e.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},"custom"!==e.type&&(this.metadata=e.metadata,this.minzoom=e.minzoom,this.maxzoom=e.maxzoom,"background"!==e.type&&(this.source=e.source,this.sourceLayer=e["source-layer"],this.filter=e.filter),r.layout&&(this._unevaluatedLayout=new ji(r.layout)),r.paint)){for(var n in this._transitionablePaint=new Ri(r.paint),e.paint)this.setPaintProperty(n,e.paint[n],{validate:!1});for(var i in e.layout)this.setLayoutProperty(i,e.layout[i],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Ui(r.paint)}}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},e.prototype.getLayoutProperty=function(t){return"visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)},e.prototype.setLayoutProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n="layers."+this.id+".layout."+t;if(this._validate($n,n,t,e,r))return}"visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e},e.prototype.getPaintProperty=function(t){return x(t,Yi)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)},e.prototype.setPaintProperty=function(t,e,r){if(void 0===r&&(r={}),null!=e){var n="layers."+this.id+".paint."+t;if(this._validate(Xn,n,t,e,r))return!1}if(x(t,Yi))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;var i=this._transitionablePaint._values[t],a="cross-faded-data-driven"===i.property.specification["property-type"],o=i.value.isDataDriven(),s=i.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);var l=this._transitionablePaint._values[t].value;return l.isDataDriven()||o||a||this._handleOverridablePaintPropertyUpdate(t,s,l)},e.prototype._handleSpecialPaintPropertyUpdate=function(t){},e.prototype._handleOverridablePaintPropertyUpdate=function(t,e,r){return!1},e.prototype.isHidden=function(t){return!!(this.minzoom&&t=this.maxzoom)||"none"===this.visibility},e.prototype.updateTransitions=function(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)},e.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},e.prototype.recalculate=function(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)},e.prototype.serialize=function(){var t={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),b(t,(function(t,e){return!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)}))},e.prototype._validate=function(t,e,r,n,i){return void 0===i&&(i={}),(!i||!1!==i.validate)&&Kn(this,t.call(Zn,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:Ot,style:{glyphs:!0,sprite:!0}}))},e.prototype.is3D=function(){return!1},e.prototype.isTileClipped=function(){return!1},e.prototype.hasOffscreenPass=function(){return!1},e.prototype.resize=function(){},e.prototype.isStateDependent=function(){for(var t in this.paint._values){var e=this.paint.get(t);if(e instanceof Ni&&Yr(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return!0}return!1},e}(Dt),$i={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Ki=function(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Ji=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};function Qi(t,e){void 0===e&&(e=1);var r=0,n=0;return{members:t.map((function(t){var i=function(t){return $i[t].BYTES_PER_ELEMENT}(t.type),a=r=ta(r,Math.max(e,i)),o=t.components||1;return n=Math.max(n,i),r+=i*o,{name:t.name,type:t.type,components:o,offset:a}})),size:ta(r,Math.max(n,e)),alignment:e}}function ta(t,e){return Math.ceil(t/e)*e}Ji.serialize=function(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}},Ji.deserialize=function(t){var e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e},Ji.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Ji.prototype.clear=function(){this.length=0},Ji.prototype.resize=function(t){this.reserve(t),this.length=t},Ji.prototype.reserve=function(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}},Ji.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};var ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t},e}(Ji);ea.prototype.bytesPerElement=4,ii("StructArrayLayout2i4",ea);var ra=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t},e}(Ji);ra.prototype.bytesPerElement=8,ii("StructArrayLayout4i8",ra);var na=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Ji);na.prototype.bytesPerElement=12,ii("StructArrayLayout2i4i12",na);var ia=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t},e}(Ji);ia.prototype.bytesPerElement=8,ii("StructArrayLayout2i4ub8",ia);var aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t},e}(Ji);aa.prototype.bytesPerElement=8,ii("StructArrayLayout2f8",aa);var oa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c){var u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u){var h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=a,this.uint16[h+5]=o,this.uint16[h+6]=s,this.uint16[h+7]=l,this.uint16[h+8]=c,this.uint16[h+9]=u,t},e}(Ji);oa.prototype.bytesPerElement=20,ii("StructArrayLayout10ui20",oa);var sa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,h){var p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,a,o,s,l,c,u,h)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,h,p){var f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.int16[f+8]=c,this.int16[f+9]=u,this.int16[f+10]=h,this.int16[f+11]=p,t},e}(Ji);sa.prototype.bytesPerElement=24,ii("StructArrayLayout4i4ui4i24",sa);var la=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t},e}(Ji);la.prototype.bytesPerElement=12,ii("StructArrayLayout3f12",la);var ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint32[r+0]=e,t},e}(Ji);ca.prototype.bytesPerElement=4,ii("StructArrayLayout1ul4",ca);var ua=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l){var c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c){var u=10*t,h=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[h+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t},e}(Ji);ua.prototype.bytesPerElement=20,ii("StructArrayLayout6i1ul2ui20",ua);var ha=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a){var o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)},e.prototype.emplace=function(t,e,r,n,i,a,o){var s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t},e}(Ji);ha.prototype.bytesPerElement=12,ii("StructArrayLayout2i2i2i12",ha);var pa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i){var a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)},e.prototype.emplace=function(t,e,r,n,i,a){var o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t},e}(Ji);pa.prototype.bytesPerElement=16,ii("StructArrayLayout2f1f2i16",pa);var fa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=12*t,o=3*t;return this.uint8[a+0]=e,this.uint8[a+1]=r,this.float32[o+1]=n,this.float32[o+2]=i,t},e}(Ji);fa.prototype.bytesPerElement=12,ii("StructArrayLayout2ub2f12",fa);var da=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t},e}(Ji);da.prototype.bytesPerElement=6,ii("StructArrayLayout3ui6",da);var ma=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g){var y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y){var v=24*t,x=12*t,_=48*t;return this.int16[v+0]=e,this.int16[v+1]=r,this.uint16[v+2]=n,this.uint16[v+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[v+10]=l,this.uint16[v+11]=c,this.uint16[v+12]=u,this.float32[x+7]=h,this.float32[x+8]=p,this.uint8[_+36]=f,this.uint8[_+37]=d,this.uint8[_+38]=m,this.uint32[x+10]=g,this.int16[v+22]=y,t},e}(Ji);ma.prototype.bytesPerElement=48,ii("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ma);var ga=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k,M,S){var E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k,M,S)},e.prototype.emplace=function(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k,M,S,E){var C=34*t,I=17*t;return this.int16[C+0]=e,this.int16[C+1]=r,this.int16[C+2]=n,this.int16[C+3]=i,this.int16[C+4]=a,this.int16[C+5]=o,this.int16[C+6]=s,this.int16[C+7]=l,this.uint16[C+8]=c,this.uint16[C+9]=u,this.uint16[C+10]=h,this.uint16[C+11]=p,this.uint16[C+12]=f,this.uint16[C+13]=d,this.uint16[C+14]=m,this.uint16[C+15]=g,this.uint16[C+16]=y,this.uint16[C+17]=v,this.uint16[C+18]=x,this.uint16[C+19]=_,this.uint16[C+20]=b,this.uint16[C+21]=w,this.uint16[C+22]=T,this.uint32[I+12]=A,this.float32[I+13]=k,this.float32[I+14]=M,this.float32[I+15]=S,this.float32[I+16]=E,t},e}(Ji);ga.prototype.bytesPerElement=68,ii("StructArrayLayout8i15ui1ul4f68",ga);var ya=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.float32[r+0]=e,t},e}(Ji);ya.prototype.bytesPerElement=4,ii("StructArrayLayout1f4",ya);var va=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t},e}(Ji);va.prototype.bytesPerElement=6,ii("StructArrayLayout3i6",va);var xa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r){var n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)},e.prototype.emplace=function(t,e,r,n){var i=2*t,a=4*t;return this.uint32[i+0]=e,this.uint16[a+2]=r,this.uint16[a+3]=n,t},e}(Ji);xa.prototype.bytesPerElement=8,ii("StructArrayLayout1ul2ui8",xa);var _a=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e){var r=this.length;return this.resize(r+1),this.emplace(r,t,e)},e.prototype.emplace=function(t,e,r){var n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t},e}(Ji);_a.prototype.bytesPerElement=4,ii("StructArrayLayout2ui4",_a);var ba=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t){var e=this.length;return this.resize(e+1),this.emplace(e,t)},e.prototype.emplace=function(t,e){var r=1*t;return this.uint16[r+0]=e,t},e}(Ji);ba.prototype.bytesPerElement=2,ii("StructArrayLayout1ui2",ba);var wa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},e.prototype.emplaceBack=function(t,e,r,n){var i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)},e.prototype.emplace=function(t,e,r,n,i){var a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t},e}(Ji);wa.prototype.bytesPerElement=16,ii("StructArrayLayout4f16",wa);var Ta=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return r.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},r.x1.get=function(){return this._structArray.int16[this._pos2+2]},r.y1.get=function(){return this._structArray.int16[this._pos2+3]},r.x2.get=function(){return this._structArray.int16[this._pos2+4]},r.y2.get=function(){return this._structArray.int16[this._pos2+5]},r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.anchorPoint.get=function(){return new a(this.anchorPointX,this.anchorPointY)},Object.defineProperties(e.prototype,r),e}(Ki);Ta.prototype.size=20;var Aa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Ta(this,t)},e}(ua);ii("CollisionBoxArray",Aa);var ka=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},r.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},r.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},r.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},r.segment.get=function(){return this._structArray.uint16[this._pos2+10]},r.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},r.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},r.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},r.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},r.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},r.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},r.placedOrientation.set=function(t){this._structArray.uint8[this._pos1+37]=t},r.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},r.hidden.set=function(t){this._structArray.uint8[this._pos1+38]=t},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+10]=t},r.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(e.prototype,r),e}(Ki);ka.prototype.size=48;var Ma=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new ka(this,t)},e}(ma);ii("PlacedSymbolArray",Ma);var Sa=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return r.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},r.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},r.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},r.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},r.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},r.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},r.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},r.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},r.key.get=function(){return this._structArray.uint16[this._pos2+8]},r.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},r.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},r.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},r.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},r.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},r.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},r.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},r.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},r.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},r.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},r.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},r.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},r.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},r.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},r.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},r.crossTileID.set=function(t){this._structArray.uint32[this._pos4+12]=t},r.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},r.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},r.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},r.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(e.prototype,r),e}(Ki);Sa.prototype.size=68;var Ea=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new Sa(this,t)},e}(ga);ii("SymbolInstanceArray",Ea);var Ca=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getoffsetX=function(t){return this.float32[1*t+0]},e}(ya);ii("GlyphOffsetArray",Ca);var Ia=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.getx=function(t){return this.int16[3*t+0]},e.prototype.gety=function(t){return this.int16[3*t+1]},e.prototype.gettileUnitDistanceFromAnchor=function(t){return this.int16[3*t+2]},e}(va);ii("SymbolLineVertexArray",Ia);var La=function(t){function e(){t.apply(this,arguments)}t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e;var r={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return r.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},r.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},r.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(e.prototype,r),e}(Ki);La.prototype.size=8;var Pa=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.get=function(t){return new La(this,t)},e}(xa);ii("FeatureIndexArray",Pa);var za=Qi([{name:"a_pos",components:2,type:"Int16"}],4).members,Da=function(t){void 0===t&&(t=[]),this.segments=t};function Oa(t,e){return 256*(t=h(Math.floor(t),0,255))+h(Math.floor(e),0,255)}Da.prototype.prepareSegment=function(t,e,r,n){var i=this.segments[this.segments.length-1];return t>Da.MAX_VERTEX_ARRAY_LENGTH&&A("Max vertices per segment is "+Da.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+t),(!i||i.vertexLength+t>Da.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i},Da.prototype.get=function(){return this.segments},Da.prototype.destroy=function(){for(var t=0,e=this.segments;t>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0}})),Ba=e((function(t){t.exports=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0}})),ja=Fa,Na=Fa,Ua=Ba;ja.murmur3=Na,ja.murmur2=Ua;var Va=function(){this.ids=[],this.positions=[],this.indexed=!1};Va.prototype.add=function(t,e,r,n){this.ids.push(Ha(t)),this.positions.push(e,r,n)},Va.prototype.getPositions=function(t){for(var e=Ha(t),r=0,n=this.ids.length-1;r>1;this.ids[i]>=e?n=i:r=i+1}for(var a=[];this.ids[r]===e;){var o=this.positions[3*r],s=this.positions[3*r+1],l=this.positions[3*r+2];a.push({index:o,start:s,end:l}),r++}return a},Va.serialize=function(t,e){var r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Ga(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}},Va.deserialize=function(t){var e=new Va;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e};var qa=Math.pow(2,53)-1;function Ha(t){var e=+t;return!isNaN(e)&&e<=qa?e:ja(String(t))}function Ga(t,e,r,n){for(;r>1],a=r-1,o=n+1;;){do{a++}while(t[a]i);if(a>=o)break;Wa(t,a,o),Wa(e,3*a,3*o),Wa(e,3*a+1,3*o+1),Wa(e,3*a+2,3*o+2)}o-ro.x+1||lo.y+1)&&A("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return r}function yo(t,e){return{type:t.type,id:t.id,properties:t.properties,geometry:e?go(t):[]}}function vo(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}var xo=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new ea,this.indexArray=new da,this.segments=new Da,this.programConfigurations=new co(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function _o(t,e){for(var r=0;r1){if(Ao(t,e))return!0;for(var n=0;n1?t.distSqr(r):t.distSqr(r.sub(e)._mult(i)._add(e))}function Eo(t,e){for(var r,n,i,a=!1,o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a);return a}function Co(t,e){for(var r=!1,n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function Io(t,e,r){var n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;var a=k(t,e,r[0]);return a!==k(t,e,r[1])||a!==k(t,e,r[2])||a!==k(t,e,r[3])}function Lo(t,e,r){var n=e.paint.get(t).value;return"constant"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function Po(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function zo(t,e,r,n,i){if(!e[0]&&!e[1])return t;var o=a.convert(e)._mult(i);"viewport"===r&&o._rotate(-n);for(var s=[],l=0;l=po||u<0||u>=po)){var h=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),p=h.vertexLength;vo(this.layoutVertexArray,c,u,-1,-1),vo(this.layoutVertexArray,c,u,1,-1),vo(this.layoutVertexArray,c,u,1,1),vo(this.layoutVertexArray,c,u,-1,1),this.indexArray.emplaceBack(p,p+1,p+2),this.indexArray.emplaceBack(p,p+3,p+2),h.vertexLength+=4,h.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)},ii("CircleBucket",xo,{omit:["layers"]});var Do=new Zi({"circle-sort-key":new qi(Ot.layout_circle["circle-sort-key"])}),Oo={paint:new Zi({"circle-radius":new qi(Ot.paint_circle["circle-radius"]),"circle-color":new qi(Ot.paint_circle["circle-color"]),"circle-blur":new qi(Ot.paint_circle["circle-blur"]),"circle-opacity":new qi(Ot.paint_circle["circle-opacity"]),"circle-translate":new Vi(Ot.paint_circle["circle-translate"]),"circle-translate-anchor":new Vi(Ot.paint_circle["circle-translate-anchor"]),"circle-pitch-scale":new Vi(Ot.paint_circle["circle-pitch-scale"]),"circle-pitch-alignment":new Vi(Ot.paint_circle["circle-pitch-alignment"]),"circle-stroke-width":new qi(Ot.paint_circle["circle-stroke-width"]),"circle-stroke-color":new qi(Ot.paint_circle["circle-stroke-color"]),"circle-stroke-opacity":new qi(Ot.paint_circle["circle-stroke-opacity"])}),layout:Do},Ro=typeof Float32Array<"u"?Float32Array:Array;function Fo(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Bo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],h=e[8],p=e[9],f=e[10],d=e[11],m=e[12],g=e[13],y=e[14],v=e[15],x=r[0],_=r[1],b=r[2],w=r[3];return t[0]=x*n+_*s+b*h+w*m,t[1]=x*i+_*l+b*p+w*g,t[2]=x*a+_*c+b*f+w*y,t[3]=x*o+_*u+b*d+w*v,x=r[4],_=r[5],b=r[6],w=r[7],t[4]=x*n+_*s+b*h+w*m,t[5]=x*i+_*l+b*p+w*g,t[6]=x*a+_*c+b*f+w*y,t[7]=x*o+_*u+b*d+w*v,x=r[8],_=r[9],b=r[10],w=r[11],t[8]=x*n+_*s+b*h+w*m,t[9]=x*i+_*l+b*p+w*g,t[10]=x*a+_*c+b*f+w*y,t[11]=x*o+_*u+b*d+w*v,x=r[12],_=r[13],b=r[14],w=r[15],t[12]=x*n+_*s+b*h+w*m,t[13]=x*i+_*l+b*p+w*g,t[14]=x*a+_*c+b*f+w*y,t[15]=x*o+_*u+b*d+w*v,t}Math.hypot||(Math.hypot=function(){for(var t=arguments,e=0,r=arguments.length;r--;)e+=t[r]*t[r];return Math.sqrt(e)});var jo,No=Bo;function Uo(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}jo=new Ro(3),Ro!=Float32Array&&(jo[0]=0,jo[1]=0,jo[2]=0),function(){var t=new Ro(4);Ro!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0)}();var Vo=(function(){var t=new Ro(2);Ro!=Float32Array&&(t[0]=0,t[1]=0)}(),function(t){function e(e){t.call(this,e,Oo)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.createBucket=function(t){return new xo(t)},e.prototype.queryRadius=function(t){var e=t;return Lo("circle-radius",this,e)+Lo("circle-stroke-width",this,e)+Po(this.paint.get("circle-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,a,o,s){for(var l=zo(t,this.paint.get("circle-translate"),this.paint.get("circle-translate-anchor"),a.angle,o),c=this.paint.get("circle-radius").evaluate(e,r)+this.paint.get("circle-stroke-width").evaluate(e,r),u="map"===this.paint.get("circle-pitch-alignment"),h=u?l:function(t,e){return t.map((function(t){return qo(t,e)}))}(l,s),p=u?c*o:c,f=0,d=n;ft.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError("out of range source coordinates for image copy");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError("out of range destination coordinates for image copy");for(var o=t.data,s=e.data,l=0;l80*r){n=a=t[0],i=o=t[1];for(var d=r;da&&(a=s),l>o&&(o=l);c=0!==(c=Math.max(a-n,o-i))?1/c:0}return ss(p,f,r,n,i,c),f}function as(t,e,r,n,i){var a,o;if(i===Cs(t,e,r,n)>0)for(a=e;a=e;a-=n)o=Ms(a,t[a],t[a+1],o);return o&&_s(o,o.next)&&(Ss(o),o=o.next),o}function os(t,e){if(!t)return t;e||(e=t);var r,n=t;do{if(r=!1,n.steiner||!_s(n,n.next)&&0!==xs(n.prev,n,n.next))n=n.next;else{if(Ss(n),(n=e=n.prev)===n.next)break;r=!0}}while(r||n!==e);return e}function ss(t,e,r,n,i,a,o){if(t){!o&&a&&function(t,e,r,n){var i=t;do{null===i.z&&(i.z=ms(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){var e,r,n,i,a,o,s,l,c=1;do{for(r=t,t=null,a=null,o=0;r;){for(o++,n=r,s=0,e=0;e0||l>0&&n;)0!==s&&(0===l||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:t=i,i.prevZ=a,a=i;r=n}a.nextZ=null,c*=2}while(o>1)}(i)}(t,n,i,a);for(var s,l,c=t;t.prev!==t.next;)if(s=t.prev,l=t.next,a?cs(t,n,i,a):ls(t))e.push(s.i/r),e.push(t.i/r),e.push(l.i/r),Ss(t),t=l.next,c=l.next;else if((t=l)===c){o?1===o?ss(t=us(os(t),e,r),e,r,n,i,a,2):2===o&&hs(t,e,r,n,i,a):ss(os(t),e,r,n,i,a,1);break}}}function ls(t){var e=t.prev,r=t,n=t.next;if(xs(e,r,n)>=0)return!1;for(var i=t.next.next;i!==t.prev;){if(ys(e.x,e.y,r.x,r.y,n.x,n.y,i.x,i.y)&&xs(i.prev,i,i.next)>=0)return!1;i=i.next}return!0}function cs(t,e,r,n){var i=t.prev,a=t,o=t.next;if(xs(i,a,o)>=0)return!1;for(var s=i.xa.x?i.x>o.x?i.x:o.x:a.x>o.x?a.x:o.x,u=i.y>a.y?i.y>o.y?i.y:o.y:a.y>o.y?a.y:o.y,h=ms(s,l,e,r,n),p=ms(c,u,e,r,n),f=t.prevZ,d=t.nextZ;f&&f.z>=h&&d&&d.z<=p;){if(f!==t.prev&&f!==t.next&&ys(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&xs(f.prev,f,f.next)>=0||(f=f.prevZ,d!==t.prev&&d!==t.next&&ys(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&xs(d.prev,d,d.next)>=0))return!1;d=d.nextZ}for(;f&&f.z>=h;){if(f!==t.prev&&f!==t.next&&ys(i.x,i.y,a.x,a.y,o.x,o.y,f.x,f.y)&&xs(f.prev,f,f.next)>=0)return!1;f=f.prevZ}for(;d&&d.z<=p;){if(d!==t.prev&&d!==t.next&&ys(i.x,i.y,a.x,a.y,o.x,o.y,d.x,d.y)&&xs(d.prev,d,d.next)>=0)return!1;d=d.nextZ}return!0}function us(t,e,r){var n=t;do{var i=n.prev,a=n.next.next;!_s(i,a)&&bs(i,n,n.next,a)&&As(i,a)&&As(a,i)&&(e.push(i.i/r),e.push(n.i/r),e.push(a.i/r),Ss(n),Ss(n.next),n=t=a),n=n.next}while(n!==t);return os(n)}function hs(t,e,r,n,i,a){var o=t;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&vs(o,s)){var l=ks(o,s);return o=os(o,o.next),l=os(l,l.next),ss(o,e,r,n,i,a),void ss(l,e,r,n,i,a)}s=s.next}o=o.next}while(o!==t)}function ps(t,e){return t.x-e.x}function fs(t,e){if(e=function(t,e){var r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){var s=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(s<=i&&s>o){if(o=s,s===i){if(a===n.y)return n;if(a===n.next.y)return n.next}r=n.x=n.x&&n.x>=u&&i!==n.x&&ys(ar.x||n.x===r.x&&ds(r,n)))&&(r=n,p=l)),n=n.next}while(n!==c);return r}(t,e),e){var r=ks(e,t);os(e,e.next),os(r,r.next)}}function ds(t,e){return xs(t.prev,t,e.prev)<0&&xs(e.next,t,t.next)<0}function ms(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-r)*i)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*i)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function gs(t){var e=t,r=t;do{(e.x=0&&(t-o)*(n-s)-(r-o)*(e-s)>=0&&(r-o)*(a-s)-(i-o)*(n-s)>=0}function vs(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){var r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&bs(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(As(t,e)&&As(e,t)&&function(t,e){var r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(xs(t.prev,t,e.prev)||xs(t,e.prev,e))||_s(t,e)&&xs(t.prev,t,t.next)>0&&xs(e.prev,e,e.next)>0)}function xs(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function _s(t,e){return t.x===e.x&&t.y===e.y}function bs(t,e,r,n){var i=Ts(xs(t,e,r)),a=Ts(xs(t,e,n)),o=Ts(xs(r,n,t)),s=Ts(xs(r,n,e));return!!(i!==a&&o!==s||0===i&&ws(t,r,e)||0===a&&ws(t,n,e)||0===o&&ws(r,t,n)||0===s&&ws(r,e,n))}function ws(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function Ts(t){return t>0?1:t<0?-1:0}function As(t,e){return xs(t.prev,t,t.next)<0?xs(t,e,t.next)>=0&&xs(t,t.prev,e)>=0:xs(t,e,t.prev)<0||xs(t,t.next,e)<0}function ks(t,e){var r=new Es(t.i,t.x,t.y),n=new Es(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function Ms(t,e,r,n){var i=new Es(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function Ss(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function Es(t,e,r){this.i=t,this.x=e,this.y=r,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function Cs(t,e,r,n){for(var i=0,a=e,o=r-n;ar;){if(n-r>600){var a=n-r+1,o=e-r+1,s=Math.log(a),l=.5*Math.exp(2*s/3),c=.5*Math.sqrt(s*l*(a-l)/a)*(o-a/2<0?-1:1);Ls(t,e,Math.max(r,Math.floor(e-o*l/a+c)),Math.min(n,Math.floor(e+(a-o)*l/a+c)),i)}var u=t[e],h=r,p=n;for(Ps(t,r,e),i(t[n],u)>0&&Ps(t,r,n);h0;)p--}0===i(t[r],u)?Ps(t,r,p):Ps(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1)}}function Ps(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function zs(t,e){return te?1:0}function Ds(t,e){var r=t.length;if(r<=1)return[t];for(var n,i,a=[],o=0;o1)for(var l=0;l0&&(n+=t[i-1].length,r.holes.push(n))}return r},rs.default=ns;var Bs=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new ea,this.indexArray=new da,this.indexArray2=new _a,this.programConfigurations=new co(t.layers,t.zoom),this.segments=new Da,this.segments2=new Da,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};Bs.prototype.populate=function(t,e,r){this.hasPattern=Rs("fill",this.layers,e);for(var n=this.layers[0].layout.get("fill-sort-key"),i=[],a=0,o=t;a>3}if(i--,1===n||2===n)o+=t.readSVarint(),s+=t.readSVarint(),1===n&&(e&&l.push(e),e=[]),e.push(new a(o,s));else{if(7!==n)throw new Error("unknown command "+n);e&&e.push(e[0].clone())}}return e&&l.push(e),l},Hs.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error("unknown command "+r)}return[o,l,s,c]},Hs.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=Hs.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}Ys.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new qs(this._pbf,e,this.extent,this._keys,this._values)};function $s(t,e,r){if(3===t){var n=new Zs(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}var Ks={VectorTile:function(t,e){this.layers=t.readFields($s,{},e)},VectorTileFeature:qs,VectorTileLayer:Zs},Js=Ks.VectorTileFeature.types,Qs=Math.pow(2,13);function tl(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*Qs)+o,i*Qs*2,a*Qs*2,Math.round(s))}var el=function(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((function(t){return t.id})),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new na,this.indexArray=new da,this.programConfigurations=new co(t.layers,t.zoom),this.segments=new Da,this.stateDependentLayerIds=this.layers.filter((function(t){return t.isStateDependent()})).map((function(t){return t.id}))};function rl(t,e){return t.x===e.x&&(t.x<0||t.x>po)||t.y===e.y&&(t.y<0||t.y>po)}function nl(t){return t.every((function(t){return t.x<0}))||t.every((function(t){return t.x>po}))||t.every((function(t){return t.y<0}))||t.every((function(t){return t.y>po}))}el.prototype.populate=function(t,e,r){this.features=[],this.hasPattern=Rs("fill-extrusion",this.layers,e);for(var n=0,i=t;n=1){var v=d[g-1];if(!rl(y,v)){h.vertexLength+4>Da.MAX_VERTEX_ARRAY_LENGTH&&(h=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var x=y.sub(v)._perp()._unit(),_=v.dist(y);m+_>32768&&(m=0),tl(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,0,m),tl(this.layoutVertexArray,y.x,y.y,x.x,x.y,0,1,m),m+=_,tl(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,0,m),tl(this.layoutVertexArray,v.x,v.y,x.x,x.y,0,1,m);var b=h.vertexLength;this.indexArray.emplaceBack(b,b+2,b+1),this.indexArray.emplaceBack(b+1,b+2,b+3),h.vertexLength+=4,h.primitiveLength+=2}}}}if(h.vertexLength+l>Da.MAX_VERTEX_ARRAY_LENGTH&&(h=this.segments.prepareSegment(l,this.layoutVertexArray,this.indexArray)),"Polygon"===Js[t.type]){for(var w=[],T=[],A=h.vertexLength,k=0,M=s;k=2&&t[l-1].equals(t[l-2]);)l--;for(var c=0;c0;if(T&&y>c){var k=u.dist(f);if(k>2*h){var M=u.sub(u.sub(f)._mult(h/k)._round());this.updateDistance(f,M),this.addCurrentVertex(M,m,0,0,p),f=M}}var S=f&&d,E=S?r:s?"butt":n;if(S&&"round"===E&&(bi&&(E="bevel"),"bevel"===E&&(b>2&&(E="flipbevel"),b100)v=g.mult(-1);else{var C=b*m.add(g).mag()/m.sub(g).mag();v._perp()._mult(C*(A?-1:1))}this.addCurrentVertex(u,v,0,0,p),this.addCurrentVertex(u,v.mult(-1),0,0,p)}else if("bevel"===E||"fakeround"===E){var I=-Math.sqrt(b*b-1),L=A?I:0,P=A?0:I;if(f&&this.addCurrentVertex(u,m,L,P,p),"fakeround"===E)for(var z=Math.round(180*w/Math.PI/20),D=1;D2*h){var N=u.add(d.sub(u)._mult(h/j)._round());this.updateDistance(u,N),this.addCurrentVertex(N,g,0,0,p),u=N}}}}},fl.prototype.addCurrentVertex=function(t,e,r,n,i,a){void 0===a&&(a=!1);var o=e.x+e.y*r,s=e.y-e.x*r,l=-e.x+e.y*n,c=-e.y-e.x*n;this.addHalfVertex(t,o,s,a,!1,r,i),this.addHalfVertex(t,l,c,a,!0,-n,i),this.distance>pl/2&&0===this.totalDistance&&(this.distance=0,this.addCurrentVertex(t,e,r,n,i,a))},fl.prototype.addHalfVertex=function(t,e,r,n,i,a,o){var s=t.x,l=t.y,c=.5*(this.lineClips?this.scaledDistance*(pl-1):this.scaledDistance);if(this.layoutVertexArray.emplaceBack((s<<1)+(n?1:0),(l<<1)+(i?1:0),Math.round(63*e)+128,Math.round(63*r)+128,1+(0===a?0:a<0?-1:1)|(63&c)<<2,c>>6),this.lineClips){var u=(this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start);this.layoutVertexArray2.emplaceBack(u,this.lineClipsArray.length)}var h=o.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,h),o.primitiveLength++),i?this.e2=h:this.e1=h},fl.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},fl.prototype.updateDistance=function(t,e){this.distance+=t.dist(e),this.updateScaledDistance()},ii("LineBucket",fl,{omit:["layers","patternFeatures"]});var dl=new Zi({"line-cap":new Vi(Ot.layout_line["line-cap"]),"line-join":new qi(Ot.layout_line["line-join"]),"line-miter-limit":new Vi(Ot.layout_line["line-miter-limit"]),"line-round-limit":new Vi(Ot.layout_line["line-round-limit"]),"line-sort-key":new qi(Ot.layout_line["line-sort-key"])}),ml={paint:new Zi({"line-opacity":new qi(Ot.paint_line["line-opacity"]),"line-color":new qi(Ot.paint_line["line-color"]),"line-translate":new Vi(Ot.paint_line["line-translate"]),"line-translate-anchor":new Vi(Ot.paint_line["line-translate-anchor"]),"line-width":new qi(Ot.paint_line["line-width"]),"line-gap-width":new qi(Ot.paint_line["line-gap-width"]),"line-offset":new qi(Ot.paint_line["line-offset"]),"line-blur":new qi(Ot.paint_line["line-blur"]),"line-dasharray":new Gi(Ot.paint_line["line-dasharray"]),"line-pattern":new Hi(Ot.paint_line["line-pattern"]),"line-gradient":new Wi(Ot.paint_line["line-gradient"])}),layout:dl},gl=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.possiblyEvaluate=function(e,r){return r=new zi(Math.floor(r.zoom),{now:r.now,fadeDuration:r.fadeDuration,zoomHistory:r.zoomHistory,transition:r.transition}),t.prototype.possiblyEvaluate.call(this,e,r)},e.prototype.evaluate=function(e,r,n,i){return r=f({},r,{zoom:Math.floor(r.zoom)}),t.prototype.evaluate.call(this,e,r,n,i)},e}(qi),yl=new gl(ml.paint.properties["line-width"].specification);yl.useIntegerZoom=!0;var vl=function(t){function e(e){t.call(this,e,ml),this.gradientVersion=0}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype._handleSpecialPaintPropertyUpdate=function(t){if("line-gradient"===t){var e=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=e._styleExpression.expression instanceof Qe,this.gradientVersion=(this.gradientVersion+1)%l}},e.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},e.prototype.recalculate=function(e,r){t.prototype.recalculate.call(this,e,r),this.paint._values["line-floorwidth"]=yl.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,e)},e.prototype.createBucket=function(t){return new fl(t)},e.prototype.queryRadius=function(t){var e=t,r=xl(Lo("line-width",this,e),Lo("line-gap-width",this,e)),n=Lo("line-offset",this,e);return r/2+Math.abs(n)+Po(this.paint.get("line-translate"))},e.prototype.queryIntersectsFeature=function(t,e,r,n,i,o,s){var l=zo(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),o.angle,s),c=s/2*xl(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),u=this.paint.get("line-offset").evaluate(e,r);return u&&(n=function(t,e){for(var r=[],n=new a(0,0),i=0;i=3)for(var a=0;a0?e+2*t:t}var _l=Qi([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),bl=Qi([{name:"a_projected_pos",components:3,type:"Float32"}],4),wl=(Qi([{name:"a_fade_opacity",components:1,type:"Uint32"}],4),Qi([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"}])),Tl=(Qi([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]),Qi([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4)),Al=Qi([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function kl(t,e,r){return t.sections.forEach((function(t){t.text=function(t,e,r){var n=e.layout.get("text-transform").evaluate(r,{});return"uppercase"===n?t=t.toLocaleUpperCase():"lowercase"===n&&(t=t.toLocaleLowerCase()),Pi.applyArabicShaping&&(t=Pi.applyArabicShaping(t)),t}(t.text,e,r)})),t}Qi([{name:"triangle",components:3,type:"Uint16"}]),Qi([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Qi([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",components:2,name:"textOffset"},{type:"Float32",name:"collisionCircleDiameter"}]),Qi([{type:"Float32",name:"offsetX"}]),Qi([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]);var Ml={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"},Sl=24,El=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-u)-1,f>>=-u,u+=s;u>0;a=256*a+t[e+h],h+=p,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+h],h+=p,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=c}return(f?-1:1)*o*Math.pow(2,a-n)},Cl=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(e*l-1)*Math.pow(2,i),o+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=d,s/=256,i-=8);for(o=o<0;t[r+f]=255&o,f+=d,o/=256,c-=8);t[r+f-d]|=128*m},Il=Ll;function Ll(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}Ll.Varint=0,Ll.Fixed64=1,Ll.Bytes=2,Ll.Fixed32=5;var Pl=4294967296,zl=1/Pl,Dl=typeof TextDecoder>"u"?null:new TextDecoder("utf8");function Ol(t){return t.type===Ll.Bytes?t.readVarint()+t.pos:t.pos+1}function Rl(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function Fl(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function Yl(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}function Xl(t,e,r){1===t&&r.readMessage($l,e)}function $l(t,e,r){if(3===t){var n=r.readMessage(Kl,{}),i=n.id,a=n.bitmap,o=n.width,s=n.height,l=n.left,c=n.top,u=n.advance;e.push({id:i,bitmap:new Yo({width:o+6,height:s+6},a),metrics:{width:o,height:s,left:l,top:c,advance:u}})}}function Kl(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function Jl(t){for(var e=0,r=0,n=0,i=t;n=0;p--){var f=o[p];if(!(h.w>f.w||h.h>f.h)){if(h.x=f.x,h.y=f.y,l=Math.max(l,h.y+h.h),s=Math.max(s,h.x+h.w),h.w===f.w&&h.h===f.h){var d=o.pop();p>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Wl(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Yl(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Wl(this.buf,this.pos)+Wl(this.buf,this.pos+4)*Pl;return this.pos+=8,t},readSFixed64:function(){var t=Wl(this.buf,this.pos)+Yl(this.buf,this.pos+4)*Pl;return this.pos+=8,t},readFloat:function(){var t=El(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=El(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128||(e|=(127&(r=n[this.pos++]))<<7,r<128)||(e|=(127&(r=n[this.pos++]))<<14,r<128)||(e|=(127&(r=n[this.pos++]))<<21,r<128)?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128||(n|=(127&(i=a[r.pos++]))<<3,i<128)||(n|=(127&(i=a[r.pos++]))<<10,i<128)||(n|=(127&(i=a[r.pos++]))<<17,i<128)||(n|=(127&(i=a[r.pos++]))<<24,i<128)||(n|=(1&(i=a[r.pos++]))<<31,i<128))return function(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this)},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&Dl?function(t,e,r){return Dl.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){for(var n="",i=e;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(a=t[i+1],o=t[i+2],128==(192&a)&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(a=t[i+1],o=t[i+2],s=t[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==Ll.Bytes)return t.push(this.readVarint(e));var r=Ol(this);for(t=t||[];this.pos127;);else if(e===Ll.Bytes)this.pos=this.readVarint()+this.pos;else if(e===Ll.Fixed32)this.pos+=4;else{if(e!==Ll.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),!(t<=127)&&(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),!(t<=127)&&(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),!(t<=127)&&(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(!!t)},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&Rl(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),Cl(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),Cl(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&Rl(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,Ll.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Fl,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Bl,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Ul,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,jl,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Nl,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Vl,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,ql,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,Hl,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Gl,e)},writeBytesField:function(t,e){this.writeTag(t,Ll.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,Ll.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,Ll.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,Ll.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,Ll.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,Ll.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,Ll.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,Ll.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,Ll.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,Ll.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,!!e)}};var Ql=function(t,e){var r=e.pixelRatio,n=e.version,i=e.stretchX,a=e.stretchY,o=e.content;this.paddedRect=t,this.pixelRatio=r,this.stretchX=i,this.stretchY=a,this.content=o,this.version=n},tc={tl:{configurable:!0},br:{configurable:!0},tlbr:{configurable:!0},displaySize:{configurable:!0}};tc.tl.get=function(){return[this.paddedRect.x+1,this.paddedRect.y+1]},tc.br.get=function(){return[this.paddedRect.x+this.paddedRect.w-1,this.paddedRect.y+this.paddedRect.h-1]},tc.tlbr.get=function(){return this.tl.concat(this.br)},tc.displaySize.get=function(){return[(this.paddedRect.w-2)/this.pixelRatio,(this.paddedRect.h-2)/this.pixelRatio]},Object.defineProperties(Ql.prototype,tc);var ec=function(t,e){var r={},n={};this.haveRenderCallbacks=[];var i=[];this.addImages(t,r,i),this.addImages(e,n,i);var a=Jl(i),o=a.w,s=a.h,l=new Xo({width:o||1,height:s||1});for(var c in t){var u=t[c],h=r[c].paddedRect;Xo.copy(u.data,l,{x:0,y:0},{x:h.x+1,y:h.y+1},u.data)}for(var p in e){var f=e[p],d=n[p].paddedRect,m=d.x+1,g=d.y+1,y=f.data.width,v=f.data.height;Xo.copy(f.data,l,{x:0,y:0},{x:m,y:g},f.data),Xo.copy(f.data,l,{x:0,y:v-1},{x:m,y:g-1},{width:y,height:1}),Xo.copy(f.data,l,{x:0,y:0},{x:m,y:g+v},{width:y,height:1}),Xo.copy(f.data,l,{x:y-1,y:0},{x:m-1,y:g},{width:1,height:v}),Xo.copy(f.data,l,{x:0,y:0},{x:m+y,y:g},{width:1,height:v})}this.image=l,this.iconPositions=r,this.patternPositions=n};ec.prototype.addImages=function(t,e,r){for(var n in t){var i=t[n],a={x:0,y:0,w:i.data.width+2,h:i.data.height+2};r.push(a),e[n]=new Ql(a,i),i.hasRenderCallback&&this.haveRenderCallbacks.push(n)}},ec.prototype.patchUpdatedImages=function(t,e){for(var r in t.dispatchRenderCallbacks(this.haveRenderCallbacks),t.updatedImages)this.patchUpdatedImage(this.iconPositions[r],t.getImage(r),e),this.patchUpdatedImage(this.patternPositions[r],t.getImage(r),e)},ec.prototype.patchUpdatedImage=function(t,e,r){if(t&&e&&t.version!==e.version){t.version=e.version;var n=t.tl,i=n[0],a=n[1];r.update(e.data,void 0,{x:i,y:a})}},ii("ImagePosition",Ql),ii("ImageAtlas",ec);var rc={horizontal:1,vertical:2,horizontalOnly:3},nc=-17,ic=function(){this.scale=1,this.fontStack="",this.imageName=null};ic.forText=function(t,e){var r=new ic;return r.scale=t||1,r.fontStack=e,r},ic.forImage=function(t){var e=new ic;return e.imageName=t,e};var ac=function(){this.text="",this.sectionIndex=[],this.sections=[],this.imageSectionID=null};function oc(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m){var g=ac.fromFeature(t,i);h===rc.vertical&&g.verticalizePunctuation();var y,v=Pi.processBidirectionalText,x=Pi.processStyledBidirectionalText;if(v&&1===g.sections.length){y=[];for(var _=0,b=v(g.toString(),dc(g,c,a,e,n,f,d));_0&&B>k&&(k=B)}else{var j=r[S.fontStack],N=j&&j[C];if(N&&N.rect)P=N.rect,L=N.metrics;else{var U=e[S.fontStack],V=U&&U[C];if(!V)continue;L=V.metrics}I=(b-S.scale)*Sl}O?(t.verticalizable=!0,A.push({glyph:C,imageName:z,x:p,y:f+I,vertical:O,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:L,rect:P}),p+=D*S.scale+c):(A.push({glyph:C,imageName:z,x:p,y:f+I,vertical:O,scale:S.scale,fontStack:S.fontStack,sectionIndex:E,metrics:L,rect:P}),p+=L.advance*S.scale+c)}if(0!==A.length){var q=p-c;d=Math.max(q,d),gc(A,0,A.length-1,g,k)}p=0;var H=a*b+k;T.lineOffset=Math.max(k,w),f+=H,m=Math.max(H,m),++y}else f+=a,++y}var G=f-nc,W=mc(o),Z=W.horizontalAlign,Y=W.verticalAlign;(function(t,e,r,n,i,a,o,s,l){var c,u=(e-r)*i;c=a!==o?-s*n-nc:(-n*l+.5)*o;for(var h=0,p=t;h=0&&n>=t&&sc[this.text.charCodeAt(n)];n--)r--;this.text=this.text.substring(t,r),this.sectionIndex=this.sectionIndex.slice(t,r)},ac.prototype.substring=function(t,e){var r=new ac;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r},ac.prototype.toString=function(){return this.text},ac.prototype.getMaxScale=function(){var t=this;return this.sectionIndex.reduce((function(e,r){return Math.max(e,t.sections[r].scale)}),0)},ac.prototype.addTextSection=function(t,e){this.text+=t.text,this.sections.push(ic.forText(t.scale,t.fontStack||e));for(var r=this.sections.length-1,n=0;n=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)};var sc={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},lc={};function cc(t,e,r,n,i,a){if(e.imageName){var o=n[e.imageName];return o?o.displaySize[0]*e.scale*Sl/a+i:0}var s=r[e.fontStack],l=s&&s[t];return l?l.metrics.advance*e.scale+i:0}function uc(t,e,r,n){var i=Math.pow(t-e,2);return n?t=0,u=0,h=0;h-r/2;){if(--o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;for(var l=[],c=0;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=h.dist(p)}return!0}function kc(t){for(var e=0,r=0;rc){var d=(c-l)/f,m=tr(h.x,p.x,d),g=tr(h.y,p.y,d),y=new vc(m,g,p.angleTo(h),u);return y._round(),!o||Ac(t,y,s,o,e)?y:void 0}l+=f}}function Cc(t,e,r,n,i,a,o,s,l){var c=Mc(n,a,o),u=Sc(n,i),h=u*o,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h=0&&_=0&&b=0&&p+c<=u){var w=new vc(_,b,v,d);w._round(),(!n||Ac(t,w,a,n,i))&&f.push(w)}}h+=y}return!s&&!f.length&&!o&&(f=Ic(t,h/2,r,n,i,a,o,!0,l)),f}function Lc(t,e,r,n,i){for(var o=[],s=0;s=n&&p.x>=n)&&(h.x>=n?h=new a(n,h.y+(p.y-h.y)*((n-h.x)/(p.x-h.x)))._round():p.x>=n&&(p=new a(n,h.y+(p.y-h.y)*((n-h.x)/(p.x-h.x)))._round()),!(h.y>=i&&p.y>=i)&&(h.y>=i?h=new a(h.x+(p.x-h.x)*((i-h.y)/(p.y-h.y)),i)._round():p.y>=i&&(p=new a(h.x+(p.x-h.x)*((i-h.y)/(p.y-h.y)),i)._round()),(!c||!h.equals(c[c.length-1]))&&(c=[h],o.push(c)),c.push(p)))))}return o}function Pc(t,e,r,n){var i=[],o=t.image,s=o.pixelRatio,l=o.paddedRect.w-2,c=o.paddedRect.h-2,u=t.right-t.left,h=t.bottom-t.top,p=o.stretchX||[[0,l]],f=o.stretchY||[[0,c]],d=function(t,e){return t+e[1]-e[0]},m=p.reduce(d,0),g=f.reduce(d,0),y=l-m,v=c-g,x=0,_=m,b=0,w=g,T=0,A=y,k=0,M=v;if(o.content&&n){var S=o.content;x=zc(p,0,S[0]),b=zc(f,0,S[1]),_=zc(p,S[0],S[2]),w=zc(f,S[1],S[3]),T=S[0]-x,k=S[1]-b,A=S[2]-S[0]-_,M=S[3]-S[1]-w}var E=function(n,i,l,c){var p=Oc(n.stretch-x,_,u,t.left),f=Rc(n.fixed-T,A,n.stretch,m),d=Oc(i.stretch-b,w,h,t.top),y=Rc(i.fixed-k,M,i.stretch,g),v=Oc(l.stretch-x,_,u,t.left),S=Rc(l.fixed-T,A,l.stretch,m),E=Oc(c.stretch-b,w,h,t.top),C=Rc(c.fixed-k,M,c.stretch,g),I=new a(p,d),L=new a(v,d),P=new a(v,E),z=new a(p,E),D=new a(f/s,y/s),O=new a(S/s,C/s),R=e*Math.PI/180;if(R){var F=Math.sin(R),B=Math.cos(R),j=[B,-F,F,B];I._matMult(j),L._matMult(j),z._matMult(j),P._matMult(j)}var N=n.stretch+n.fixed,U=l.stretch+l.fixed,V=i.stretch+i.fixed,q=c.stretch+c.fixed;return{tl:I,tr:L,bl:z,br:P,tex:{x:o.paddedRect.x+1+N,y:o.paddedRect.y+1+V,w:U-N,h:q-V},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:D,pixelOffsetBR:O,minFontScaleX:A/s/u,minFontScaleY:M/s/h,isSDF:r}};if(n&&(o.stretchX||o.stretchY))for(var C=Dc(p,y,m),I=Dc(f,v,g),L=0;L0&&(d=Math.max(10,d),this.circleDiameter=d)}else{var m=o.top*s-l,g=o.bottom*s+l,y=o.left*s-l,v=o.right*s+l,x=o.collisionPadding;if(x&&(y-=x[0]*s,m-=x[1]*s,v+=x[2]*s,g+=x[3]*s),u){var _=new a(y,m),b=new a(v,m),w=new a(y,g),T=new a(v,g),A=u*Math.PI/180;_._rotate(A),b._rotate(A),w._rotate(A),T._rotate(A),y=Math.min(_.x,b.x,w.x,T.x),v=Math.max(_.x,b.x,w.x,T.x),m=Math.min(_.y,b.y,w.y,T.y),g=Math.max(_.y,b.y,w.y,T.y)}t.emplaceBack(e.x,e.y,y,m,v,g,r,n,i)}this.boxEndIndex=t.length},Bc=function(t,e){if(void 0===t&&(t=[]),void 0===e&&(e=jc),this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function jc(t,e){return te?1:0}function Nc(t,e,r){void 0===e&&(e=1),void 0===r&&(r=!1);for(var n=1/0,i=1/0,o=-1/0,s=-1/0,l=t[0],c=0;co)&&(o=u.x),(!c||u.y>s)&&(s=u.y)}var h=o-n,p=s-i,f=Math.min(h,p),d=f/2,m=new Bc([],Uc);if(0===f)return new a(n,i);for(var g=n;gv.d||!v.d)&&(v=_,r&&console.log("found best %d after %d probes",Math.round(1e4*_.d)/1e4,x)),!(_.max-v.d<=e)&&(d=_.h/2,m.push(new Vc(_.p.x-d,_.p.y-d,d,t)),m.push(new Vc(_.p.x+d,_.p.y-d,d,t)),m.push(new Vc(_.p.x-d,_.p.y+d,d,t)),m.push(new Vc(_.p.x+d,_.p.y+d,d,t)),x+=4)}return r&&(console.log("num probes: "+x),console.log("best distance: "+v.d)),v.p}function Uc(t,e){return e.max-t.max}function Vc(t,e,r,n){this.p=new a(t,e),this.h=r,this.d=function(t,e){for(var r=!1,n=1/0,i=0;it.y!=u.y>t.y&&t.x<(u.x-c.x)*(t.y-c.y)/(u.y-c.y)+c.x&&(r=!r),n=Math.min(n,So(t,c,u))}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}Bc.prototype.push=function(t){this.data.push(t),this.length++,this._up(this.length-1)},Bc.prototype.pop=function(){if(0!==this.length){var t=this.data[0],e=this.data.pop();return this.length--,this.length>0&&(this.data[0]=e,this._down(0)),t}},Bc.prototype.peek=function(){return this.data[0]},Bc.prototype._up=function(t){for(var e=this.data,r=this.compare,n=e[t];t>0;){var i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n},Bc.prototype._down=function(t){for(var e=this.data,r=this.compare,n=this.length>>1,i=e[t];t=0)break;e[t]=o,t=a}e[t]=i};var qc=Number.POSITIVE_INFINITY;function Hc(t,e){return e[1]!==qc?function(t,e,r){var n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":i=r-7;break;case"bottom-right":case"bottom-left":case"bottom":i=7-r}switch(t){case"top-right":case"bottom-right":case"right":n=-e;break;case"top-left":case"bottom-left":case"left":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){var r=0,n=0;e<0&&(e=0);var i=e/Math.sqrt(2);switch(t){case"top-right":case"top-left":n=i-7;break;case"bottom-right":case"bottom-left":n=7-i;break;case"bottom":n=7-e;break;case"top":n=e-7}switch(t){case"top-right":case"bottom-right":r=-i;break;case"top-left":case"bottom-left":r=i;break;case"left":r=e;break;case"right":r=-e}return[r,n]}(t,e[0])}function Gc(t){switch(t){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}var Wc=255,Zc=32640;function Yc(t,e,r,n,i,o,s,l,c,u,h,p,f,d,m){var g=function(t,e,r,n,i,o,s,l){for(var c=n.layout.get("text-rotate").evaluate(o,{})*Math.PI/180,u=[],h=0,p=e.positionedLines;hZc&&A(t.layerIds[0]+': Value for "text-size" is >= '+Wc+'. Reduce your "text-size".'):"composite"===y.kind&&((v=[xc*d.compositeTextSizes[0].evaluate(s,{},m),xc*d.compositeTextSizes[1].evaluate(s,{},m)])[0]>Zc||v[1]>Zc)&&A(t.layerIds[0]+': Value for "text-size" is >= '+Wc+'. Reduce your "text-size".'),t.addSymbols(t.text,g,v,l,o,s,u,e,c.lineStartIndex,c.lineLength,f,m);for(var x=0,_=h;x<_.length;x+=1)p[_[x]]=t.text.placedSymbolArray.length-1;return 4*g.length}function Xc(t){for(var e in t)return t[e];return null}function $c(t,e,r,n){var i=t.compareText;if(e in i){for(var a=i[e],o=a.length-1;o>=0;o--)if(n.dist(a[o])0)&&("constant"!==a.value.kind||a.value.value.length>0),c="constant"!==s.value.kind||!!s.value.value||Object.keys(s.parameters).length>0,u=i.get("symbol-sort-key");if(this.features=[],l||c){for(var h=e.iconDependencies,p=e.glyphDependencies,f=e.availableImages,d=new zi(this.zoom),m=0,g=t;m=0;for(var z=0,D=A.sections;z=0;s--)a[s]={x:e[s].x,y:e[s].y,tileUnitDistanceFromAnchor:i},s>0&&(i+=e[s-1].dist(e[s]));for(var l=0;l0},iu.prototype.hasIconData=function(){return this.icon.segments.get().length>0},iu.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},iu.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},iu.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},iu.prototype.addIndicesForPlacedSymbol=function(t,e){for(var r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs,i=r.vertexStartIndex;i1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var r=0,n=this.symbolInstanceIndexes;r=0&&n.indexOf(t)===r&&e.addIndicesForPlacedSymbol(e.text,t)})),a.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,a.verticalPlacedTextSymbolIndex),a.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.placedIconSymbolIndex),a.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,a.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},ii("SymbolBucket",iu,{omit:["layers","collisionBoxArray","features","compareText"]}),iu.MAX_GLYPHS=65535,iu.addDynamicAttributes=tu;var au=new Zi({"symbol-placement":new Vi(Ot.layout_symbol["symbol-placement"]),"symbol-spacing":new Vi(Ot.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Vi(Ot.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new qi(Ot.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Vi(Ot.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Vi(Ot.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new Vi(Ot.layout_symbol["icon-ignore-placement"]),"icon-optional":new Vi(Ot.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Vi(Ot.layout_symbol["icon-rotation-alignment"]),"icon-size":new qi(Ot.layout_symbol["icon-size"]),"icon-text-fit":new Vi(Ot.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Vi(Ot.layout_symbol["icon-text-fit-padding"]),"icon-image":new qi(Ot.layout_symbol["icon-image"]),"icon-rotate":new qi(Ot.layout_symbol["icon-rotate"]),"icon-padding":new Vi(Ot.layout_symbol["icon-padding"]),"icon-keep-upright":new Vi(Ot.layout_symbol["icon-keep-upright"]),"icon-offset":new qi(Ot.layout_symbol["icon-offset"]),"icon-anchor":new qi(Ot.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Vi(Ot.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Vi(Ot.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Vi(Ot.layout_symbol["text-rotation-alignment"]),"text-field":new qi(Ot.layout_symbol["text-field"]),"text-font":new qi(Ot.layout_symbol["text-font"]),"text-size":new qi(Ot.layout_symbol["text-size"]),"text-max-width":new qi(Ot.layout_symbol["text-max-width"]),"text-line-height":new Vi(Ot.layout_symbol["text-line-height"]),"text-letter-spacing":new qi(Ot.layout_symbol["text-letter-spacing"]),"text-justify":new qi(Ot.layout_symbol["text-justify"]),"text-radial-offset":new qi(Ot.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Vi(Ot.layout_symbol["text-variable-anchor"]),"text-anchor":new qi(Ot.layout_symbol["text-anchor"]),"text-max-angle":new Vi(Ot.layout_symbol["text-max-angle"]),"text-writing-mode":new Vi(Ot.layout_symbol["text-writing-mode"]),"text-rotate":new qi(Ot.layout_symbol["text-rotate"]),"text-padding":new Vi(Ot.layout_symbol["text-padding"]),"text-keep-upright":new Vi(Ot.layout_symbol["text-keep-upright"]),"text-transform":new qi(Ot.layout_symbol["text-transform"]),"text-offset":new qi(Ot.layout_symbol["text-offset"]),"text-allow-overlap":new Vi(Ot.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new Vi(Ot.layout_symbol["text-ignore-placement"]),"text-optional":new Vi(Ot.layout_symbol["text-optional"])}),ou=new Zi({"icon-opacity":new qi(Ot.paint_symbol["icon-opacity"]),"icon-color":new qi(Ot.paint_symbol["icon-color"]),"icon-halo-color":new qi(Ot.paint_symbol["icon-halo-color"]),"icon-halo-width":new qi(Ot.paint_symbol["icon-halo-width"]),"icon-halo-blur":new qi(Ot.paint_symbol["icon-halo-blur"]),"icon-translate":new Vi(Ot.paint_symbol["icon-translate"]),"icon-translate-anchor":new Vi(Ot.paint_symbol["icon-translate-anchor"]),"text-opacity":new qi(Ot.paint_symbol["text-opacity"]),"text-color":new qi(Ot.paint_symbol["text-color"],{runtimeType:Zt,getOverride:function(t){return t.textColor},hasOverride:function(t){return!!t.textColor}}),"text-halo-color":new qi(Ot.paint_symbol["text-halo-color"]),"text-halo-width":new qi(Ot.paint_symbol["text-halo-width"]),"text-halo-blur":new qi(Ot.paint_symbol["text-halo-blur"]),"text-translate":new Vi(Ot.paint_symbol["text-translate"]),"text-translate-anchor":new Vi(Ot.paint_symbol["text-translate-anchor"])}),su={paint:ou,layout:au},lu=function(t){this.type=t.property.overrides?t.property.overrides.runtimeType:qt,this.defaultValue=t};lu.prototype.evaluate=function(t){if(t.formattedSection){var e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default},lu.prototype.eachChild=function(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)},lu.prototype.outputDefined=function(){return!1},lu.prototype.serialize=function(){return null},ii("FormatSectionOverride",lu,{omit:["defaultValue"]});var cu=function(t){function e(e){t.call(this,e,su)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.recalculate=function(e,r){if(t.prototype.recalculate.call(this,e,r),"auto"===this.layout.get("icon-rotation-alignment")&&("point"!==this.layout.get("symbol-placement")?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),"auto"===this.layout.get("text-rotation-alignment")&&("point"!==this.layout.get("symbol-placement")?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){var n=this.layout.get("text-writing-mode");if(n){for(var i=[],a=0,o=n;a",targetMapId:n,sourceMapId:a.mapId})}}},Tu.prototype.receive=function(t){var e=t.data,r=e.id;if(r&&(!e.targetMapId||this.mapId===e.targetMapId))if(""===e.type){delete this.tasks[r];var n=this.cancelCallbacks[r];delete this.cancelCallbacks[r],n&&n()}else S()||e.mustQueue?(this.tasks[r]=e,this.taskQueue.push(r),this.invoker.trigger()):this.processTask(r,e)},Tu.prototype.process=function(){if(this.taskQueue.length){var t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length&&this.invoker.trigger(),e&&this.processTask(t,e)}},Tu.prototype.processTask=function(t,e){var r=this;if(""===e.type){var n=this.callbacks[t];delete this.callbacks[t],n&&(e.error?n(ci(e.error)):n(null,ci(e.data)))}else{var i=!1,a=I(this.globalScope)?void 0:[],o=e.hasCallback?function(e,n){i=!0,delete r.cancelCallbacks[t],r.target.postMessage({id:t,type:"",sourceMapId:r.mapId,error:e?li(e):null,data:li(n,a)},a)}:function(t){i=!0},s=null,l=ci(e.data);if(this.parent[e.type])s=this.parent[e.type](e.sourceMapId,l,o);else if(this.parent.getWorkerSource){var c=e.type.split(".");s=this.parent.getWorkerSource(e.sourceMapId,c[0],l.source)[c[1]](l,o)}else o(new Error("Could not find function "+e.type));!i&&s&&s.cancel&&(this.cancelCallbacks[t]=s.cancel)}},Tu.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};var ku=function(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1]))};ku.prototype.setNorthEast=function(t){return this._ne=t instanceof Su?new Su(t.lng,t.lat):Su.convert(t),this},ku.prototype.setSouthWest=function(t){return this._sw=t instanceof Su?new Su(t.lng,t.lat):Su.convert(t),this},ku.prototype.extend=function(t){var e,r,n=this._sw,i=this._ne;if(t instanceof Su)e=t,r=t;else{if(!(t instanceof ku)){if(Array.isArray(t)){if(4===t.length||t.every(Array.isArray)){var a=t;return this.extend(ku.convert(a))}var o=t;return this.extend(Su.convert(o))}return this}if(e=t._sw,r=t._ne,!e||!r)return this}return n||i?(n.lng=Math.min(e.lng,n.lng),n.lat=Math.min(e.lat,n.lat),i.lng=Math.max(r.lng,i.lng),i.lat=Math.max(r.lat,i.lat)):(this._sw=new Su(e.lng,e.lat),this._ne=new Su(r.lng,r.lat)),this},ku.prototype.getCenter=function(){return new Su((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},ku.prototype.getSouthWest=function(){return this._sw},ku.prototype.getNorthEast=function(){return this._ne},ku.prototype.getNorthWest=function(){return new Su(this.getWest(),this.getNorth())},ku.prototype.getSouthEast=function(){return new Su(this.getEast(),this.getSouth())},ku.prototype.getWest=function(){return this._sw.lng},ku.prototype.getSouth=function(){return this._sw.lat},ku.prototype.getEast=function(){return this._ne.lng},ku.prototype.getNorth=function(){return this._ne.lat},ku.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},ku.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},ku.prototype.isEmpty=function(){return!(this._sw&&this._ne)},ku.prototype.contains=function(t){var e=Su.convert(t),r=e.lng,n=e.lat,i=this._sw.lat<=n&&n<=this._ne.lat,a=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(a=this._sw.lng>=r&&r>=this._ne.lng),i&&a},ku.convert=function(t){return!t||t instanceof ku?t:new ku(t)};var Mu=6371008.8,Su=function(t,e){if(isNaN(t)||isNaN(e))throw new Error("Invalid LngLat object: ("+t+", "+e+")");if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};Su.prototype.wrap=function(){return new Su(p(this.lng,-180,180),this.lat)},Su.prototype.toArray=function(){return[this.lng,this.lat]},Su.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},Su.prototype.distanceTo=function(t){var e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return Mu*Math.acos(Math.min(i,1))},Su.prototype.toBounds=function(t){void 0===t&&(t=0);var e=360*t/40075017,r=e/Math.cos(Math.PI/180*this.lat);return new ku(new Su(this.lng-r,this.lat-e),new Su(this.lng+r,this.lat+e))},Su.convert=function(t){if(t instanceof Su)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Su(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new Su(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var Eu=2*Math.PI*Mu;function Cu(t){return Eu*Math.cos(t*Math.PI/180)}function Iu(t){return(180+t)/360}function Lu(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Pu(t,e){return t/Cu(e)}function zu(t){var e=180-360*t;return 360/Math.PI*Math.atan(Math.exp(e*Math.PI/180))-90}var Du=function(t,e,r){void 0===r&&(r=0),this.x=+t,this.y=+e,this.z=+r};Du.fromLngLat=function(t,e){void 0===e&&(e=0);var r=Su.convert(t);return new Du(Iu(r.lng),Lu(r.lat),Pu(e,r.lat))},Du.prototype.toLngLat=function(){return new Su(function(t){return 360*t-180}(this.x),zu(this.y))},Du.prototype.toAltitude=function(){return function(t,e){return t*Cu(zu(e))}(this.z,this.y)},Du.prototype.meterInMercatorCoordinateUnits=function(){return 1/Eu*function(t){return 1/Math.cos(t*Math.PI/180)}(zu(this.y))};var Ou=function(t,e,r){this.z=t,this.x=e,this.y=r,this.key=Bu(0,t,t,e,r)};Ou.prototype.equals=function(t){return this.z===t.z&&this.x===t.x&&this.y===t.y},Ou.prototype.url=function(t,e){var r=function(t,e,r){var n=Au(256*t,256*(e=Math.pow(2,r)-e-1),r),i=Au(256*(t+1),256*(e+1),r);return n[0]+","+n[1]+","+i[0]+","+i[1]}(this.x,this.y,this.z),n=function(t,e,r){for(var n,i="",a=t;a>0;a--)i+=(e&(n=1<this.canonical.z?new Fu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Fu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)},Fu.prototype.calculateScaledKey=function(t,e){var r=this.canonical.z-t;return t>this.canonical.z?Bu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Bu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)},Fu.prototype.isChildOf=function(t){if(t.wrap!==this.wrap)return!1;var e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e},Fu.prototype.children=function(t){if(this.overscaledZ>=t)return[new Fu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new Fu(e,this.wrap,e,r,n),new Fu(e,this.wrap,e,r+1,n),new Fu(e,this.wrap,e,r,n+1),new Fu(e,this.wrap,e,r+1,n+1)]},Fu.prototype.isLessThan=function(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.y=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(e+1)*this.stride+(t+1)},ju.prototype._unpackMapbox=function(t,e,r){return(256*t*256+256*e+r)/10-1e4},ju.prototype._unpackTerrarium=function(t,e,r){return 256*t+e+r/256-32768},ju.prototype.getPixels=function(){return new Xo({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},ju.prototype.backfillBorder=function(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");var n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}for(var s=-e*this.dim,l=-r*this.dim,c=a;c=0&&u[3]>=0&&s.insert(o,u[0],u[1],u[2],u[3])}},Hu.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Ks.VectorTile(new Il(this.rawTileData)).layers,this.sourceLayerCoder=new Nu(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Hu.prototype.query=function(t,e,r,n){var i=this;this.loadVTLayers();for(var o=t.params||{},s=po/t.tileSize/t.scale,l=Tn(o.filter),c=t.queryGeometry,u=t.queryPadding*s,h=Wu(c),p=this.grid.query(h.minX-u,h.minY-u,h.maxX+u,h.maxY+u),f=Wu(t.cameraQueryGeometry),d=this.grid3D.query(f.minX-u,f.minY-u,f.maxX+u,f.maxY+u,(function(e,r,n,i){return function(t,e,r,n,i){for(var o=0,s=t;o=l.x&&i>=l.y)return!0}var c=[new a(e,r),new a(e,i),new a(n,i),new a(n,r)];if(t.length>2)for(var u=0,h=c;u=0)return!0;return!1}(a,h)){var p=this.sourceLayerCoder.decode(r),d=this.vtLayers[p].feature(n);if(i.needGeometry){var m=yo(d,!0);if(!i.filter(new zi(this.tileID.overscaledZ),m,this.tileID.canonical))return}else if(!i.filter(new zi(this.tileID.overscaledZ),d))return;for(var g=this.getId(d,p),y=0;yn)i=!1;else if(e)if(this.expirationTimept&&(t.getActor().send("enforceCacheSizeLimit",ht),gt=0)},t.clamp=h,t.clearTileCache=function(t){var e=s.caches.delete(ut);t&&e.catch(t).then((function(){return t()}))},t.clipLine=Lc,t.clone=function(t){var e=new Ro(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.clone$1=w,t.clone$2=function(t){var e=new Ro(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e},t.collisionCircleLayout=Al,t.config=N,t.create=function(){var t=new Ro(16);return Ro!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.create$1=function(){var t=new Ro(9);return Ro!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t},t.create$2=function(){var t=new Ro(4);return Ro!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t},t.createCommonjsModule=e,t.createExpression=cn,t.createLayout=Qi,t.createStyleLayer=function(t){return"custom"===t.type?new du(t):new mu[t.type](t)},t.cross=function(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],l=r[2];return t[0]=i*l-a*s,t[1]=a*o-n*l,t[2]=n*s-i*o,t},t.deepEqual=function t(e,r){if(Array.isArray(e)){if(!Array.isArray(r)||e.length!==r.length)return!1;for(var n=0;n0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t},t.number=tr,t.offscreenCanvasSupported=yt,t.ortho=function(t,e,r,n,i,a,o){var s=1/(e-r),l=1/(n-i),c=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*l,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*l,t[14]=(o+a)*c,t[15]=1,t},t.parseGlyphPBF=function(t){return new Il(t).readFields(Xl,[])},t.pbf=Il,t.performSymbolLayout=function(t,e,r,n,i,a,o){t.createArrays();var s=512*t.overscaling;t.tilePixelRatio=po/s,t.compareText={},t.iconsNeedLinear=!1;var l=t.layers[0].layout,c=t.layers[0]._unevaluatedLayout._values,u={};if("composite"===t.textSizeData.kind){var h=t.textSizeData,p=h.minZoom,f=h.maxZoom;u.compositeTextSizes=[c["text-size"].possiblyEvaluate(new zi(p),o),c["text-size"].possiblyEvaluate(new zi(f),o)]}if("composite"===t.iconSizeData.kind){var d=t.iconSizeData,m=d.minZoom,g=d.maxZoom;u.compositeIconSizes=[c["icon-size"].possiblyEvaluate(new zi(m),o),c["icon-size"].possiblyEvaluate(new zi(g),o)]}u.layoutTextSize=c["text-size"].possiblyEvaluate(new zi(t.zoom+1),o),u.layoutIconSize=c["icon-size"].possiblyEvaluate(new zi(t.zoom+1),o),u.textMaxSize=c["text-size"].possiblyEvaluate(new zi(18));for(var y=l.get("text-line-height")*Sl,v="map"===l.get("text-rotation-alignment")&&"point"!==l.get("symbol-placement"),x=l.get("text-keep-upright"),_=l.get("text-size"),b=function(){var a=T[w],s=l.get("text-font").evaluate(a,{},o).join(","),c=_.evaluate(a,{},o),h=u.layoutTextSize.evaluate(a,{},o),p=u.layoutIconSize.evaluate(a,{},o),f={horizontal:{},vertical:void 0},d=a.text,m=[0,0];if(d){var g=d.toString(),b=l.get("text-letter-spacing").evaluate(a,{},o)*Sl,k=function(t){for(var e=0,r=t;e=po||h.y<0||h.y>=po||function(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,k){var M,S,E,C,I,L=t.addToLineVertexArray(e,r),P=0,z=0,D=0,O=0,R=-1,F=-1,B={},j=ja(""),N=0,U=0;if(void 0===s._unevaluatedLayout.getValue("text-radial-offset")?(N=(M=s.layout.get("text-offset").evaluate(_,{},T).map((function(t){return t*Sl})))[0],U=M[1]):(N=s.layout.get("text-radial-offset").evaluate(_,{},T)*Sl,U=qc),t.allowVerticalPlacement&&n.vertical){var V=s.layout.get("text-rotate").evaluate(_,{},T)+90,q=n.vertical;C=new Fc(l,e,c,u,h,q,p,f,d,V),o&&(I=new Fc(l,e,c,u,h,o,g,y,d,V))}if(i){var H=s.layout.get("icon-rotate").evaluate(_,{}),G="none"!==s.layout.get("icon-text-fit"),W=Pc(i,H,w,G),Z=o?Pc(o,H,w,G):void 0;E=new Fc(l,e,c,u,h,i,g,y,!1,H),P=4*W.length;var Y=t.iconSizeData,X=null;"source"===Y.kind?(X=[xc*s.layout.get("icon-size").evaluate(_,{})])[0]>Zc&&A(t.layerIds[0]+': Value for "icon-size" is >= '+Wc+'. Reduce your "icon-size".'):"composite"===Y.kind&&((X=[xc*b.compositeIconSizes[0].evaluate(_,{},T),xc*b.compositeIconSizes[1].evaluate(_,{},T)])[0]>Zc||X[1]>Zc)&&A(t.layerIds[0]+': Value for "icon-size" is >= '+Wc+'. Reduce your "icon-size".'),t.addSymbols(t.icon,W,X,x,v,_,!1,e,L.lineStartIndex,L.lineLength,-1,T),R=t.icon.placedSymbolArray.length-1,Z&&(z=4*Z.length,t.addSymbols(t.icon,Z,X,x,v,_,rc.vertical,e,L.lineStartIndex,L.lineLength,-1,T),F=t.icon.placedSymbolArray.length-1)}for(var $ in n.horizontal){var K=n.horizontal[$];if(!S){j=ja(K.text);var J=s.layout.get("text-rotate").evaluate(_,{},T);S=new Fc(l,e,c,u,h,K,p,f,d,J)}var Q=1===K.positionedLines.length;if(D+=Yc(t,e,K,a,s,d,_,m,L,n.vertical?rc.horizontal:rc.horizontalOnly,Q?Object.keys(n.horizontal):[$],B,R,b,T),Q)break}n.vertical&&(O+=Yc(t,e,n.vertical,a,s,d,_,m,L,rc.vertical,["vertical"],B,F,b,T));var tt=S?S.boxStartIndex:t.collisionBoxArray.length,et=S?S.boxEndIndex:t.collisionBoxArray.length,rt=C?C.boxStartIndex:t.collisionBoxArray.length,nt=C?C.boxEndIndex:t.collisionBoxArray.length,it=E?E.boxStartIndex:t.collisionBoxArray.length,at=E?E.boxEndIndex:t.collisionBoxArray.length,ot=I?I.boxStartIndex:t.collisionBoxArray.length,st=I?I.boxEndIndex:t.collisionBoxArray.length,lt=-1,ct=function(t,e){return t&&t.circleDiameter?Math.max(t.circleDiameter,e):e};lt=ct(S,lt),lt=ct(C,lt),lt=ct(E,lt);var ut=(lt=ct(I,lt))>-1?1:0;ut&&(lt*=k/Sl),t.glyphOffsetArray.length>=iu.MAX_GLYPHS&&A("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==_.sortKey&&t.addToSortKeyRanges(t.symbolInstances.length,_.sortKey),t.symbolInstances.emplaceBack(e.x,e.y,B.right>=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,j,tt,et,rt,nt,it,at,ot,st,c,D,O,P,z,ut,0,p,N,U,lt)}(t,h,s,r,n,i,p,t.layers[0],t.collisionBoxArray,e.index,e.sourceLayerIndex,t.index,y,b,k,l,x,w,M,d,e,a,c,u,o)};if("line"===S)for(var L=0,P=Lc(e.geometry,0,0,po,po);L1){var N=Ec(j,T,r.vertical||m,n,24,v);N&&I(j,N)}}else if("Polygon"===e.type)for(var U=0,V=Ds(e.geometry,0);U=A.maxzoom||"none"===A.visibility||(o(T,this.zoom,n),(h[A.id]=A.createBucket({index:u.bucketLayerIDs.length,layers:T,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:g,sourceID:this.source})).populate(y,p,this.tileID.canonical),u.bucketLayerIDs.push(T.map((function(t){return t.id}))))}}}var k,M,S,E,C=t.mapObject(p.glyphDependencies,(function(t){return Object.keys(t).map(Number)}));Object.keys(C).length?a.send("getGlyphs",{uid:this.uid,stacks:C},(function(t,e){k||(k=t,M=e,P.call(l))})):M={};var I=Object.keys(p.iconDependencies);I.length?a.send("getImages",{icons:I,source:this.source,tileID:this.tileID,type:"icons"},(function(t,e){k||(k=t,S=e,P.call(l))})):S={};var L=Object.keys(p.patternDependencies);function P(){if(k)return s(k);if(M&&S&&E){var e=new i(M),r=new t.ImageAtlas(S,E);for(var a in h){var l=h[a];l instanceof t.SymbolBucket?(o(l.layers,this.zoom,n),t.performSymbolLayout(l,M,e.positions,S,r.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):l.hasPattern&&(l instanceof t.LineBucket||l instanceof t.FillBucket||l instanceof t.FillExtrusionBucket)&&(o(l.layers,this.zoom,n),l.addFeatures(p,this.tileID.canonical,r.patternPositions))}this.status="done",s(null,{buckets:t.values(h).filter((function(t){return!t.isEmpty()})),featureIndex:u,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:e.image,imageAtlas:r,glyphMap:this.returnDependencies?M:null,iconMap:this.returnDependencies?S:null,glyphPositions:this.returnDependencies?e.positions:null})}}L.length?a.send("getImages",{icons:L,source:this.source,tileID:this.tileID,type:"patterns"},(function(t,e){k||(k=t,E=e,P.call(l))})):E={},P.call(this)};var l=function(t,e,r,n){this.actor=t,this.layerIndex=e,this.availableImages=r,this.loadVectorData=n||s,this.loading={},this.loaded={}};l.prototype.loadTile=function(e,r){var n=this,i=e.uid;this.loading||(this.loading={});var o=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.RequestPerformance(e.request),s=this.loading[i]=new a(e);s.abort=this.loadVectorData(e,(function(e,a){if(delete n.loading[i],e||!a)return s.status="done",n.loaded[i]=s,r(e);var l=a.rawData,c={};a.expires&&(c.expires=a.expires),a.cacheControl&&(c.cacheControl=a.cacheControl);var u={};if(o){var h=o.finish();h&&(u.resourceTiming=JSON.parse(JSON.stringify(h)))}s.vectorTile=a.vectorTile,s.parse(a.vectorTile,n.layerIndex,n.availableImages,n.actor,(function(e,n){if(e||!n)return r(e);r(null,t.extend({rawTileData:l.slice(0)},n,c,u))})),n.loaded=n.loaded||{},n.loaded[i]=s}))},l.prototype.reloadTile=function(t,e){var r=this,n=this.loaded,i=t.uid,a=this;if(n&&n[i]){var o=n[i];o.showCollisionBoxes=t.showCollisionBoxes;var s=function(t,n){var i=o.reloadCallback;i&&(delete o.reloadCallback,o.parse(o.vectorTile,a.layerIndex,r.availableImages,a.actor,i)),e(t,n)};"parsing"===o.status?o.reloadCallback=s:"done"===o.status&&(o.vectorTile?o.parse(o.vectorTile,this.layerIndex,this.availableImages,this.actor,s):s())}},l.prototype.abortTile=function(t,e){var r=this.loading,n=t.uid;r&&r[n]&&r[n].abort&&(r[n].abort(),delete r[n]),e()},l.prototype.removeTile=function(t,e){var r=this.loaded,n=t.uid;r&&r[n]&&delete r[n],e()};var c=t.window.ImageBitmap,u=function(){this.loaded={}};u.prototype.loadTile=function(e,r){var n=e.uid,i=e.encoding,a=e.rawImageData,o=c&&a instanceof c?this.getImageData(a):a,s=new t.DEMData(n,o,i);this.loaded=this.loaded||{},this.loaded[n]=s,r(null,s)},u.prototype.getImageData=function(e){(!this.offscreenCanvas||!this.offscreenCanvasContext)&&(this.offscreenCanvas=new OffscreenCanvas(e.width,e.height),this.offscreenCanvasContext=this.offscreenCanvas.getContext("2d")),this.offscreenCanvas.width=e.width,this.offscreenCanvas.height=e.height,this.offscreenCanvasContext.drawImage(e,0,0,e.width,e.height);var r=this.offscreenCanvasContext.getImageData(-1,-1,e.width+2,e.height+2);return this.offscreenCanvasContext.clearRect(0,0,this.offscreenCanvas.width,this.offscreenCanvas.height),new t.RGBAImage({width:r.width,height:r.height},r.data)},u.prototype.removeTile=function(t){var e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]};var h=function t(e,r){var n,i=e&&e.type;if("FeatureCollection"===i)for(n=0;n=0!=!!e&&t.reverse()}var d=t.vectorTile.VectorTileFeature.prototype.toGeoJSON,m=function(e){this._feature=e,this.extent=t.EXTENT,this.type=e.type,this.properties=e.tags,"id"in e&&!isNaN(e.id)&&(this.id=parseInt(e.id,10))};m.prototype.loadGeometry=function(){if(1===this._feature.type){for(var e=[],r=0,n=this._feature.geometry;r"u"&&(n.push(s),l=n.length-1,a[s]=l),e.writeVarint(l);var c=r.properties[s],u=typeof c;"string"!==u&&"boolean"!==u&&"number"!==u&&(c=JSON.stringify(c));var h=u+":"+c,p=o[h];typeof p>"u"&&(i.push(c),p=i.length-1,o[h]=p),e.writeVarint(p)}}function E(t,e){return(e<<3)+(7&t)}function C(t){return t<<1^t>>31}function I(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;s>1;z(t,e,o,n,i,a%2),P(t,e,r,n,o-1,a+1),P(t,e,r,o+1,i,a+1)}}function z(t,e,r,n,i,a){for(;i>n;){if(i-n>600){var o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1);z(t,e,r,Math.max(n,Math.floor(r-s*c/o+u)),Math.min(i,Math.floor(r+(o-s)*c/o+u)),a)}var h=e[2*r+a],p=n,f=i;for(D(t,e,n,r),e[2*i+a]>h&&D(t,e,n,i);ph;)f--}e[2*n+a]===h?D(t,e,n,f):D(t,e,++f,i),f<=r&&(n=f+1),r<=f&&(i=f-1)}}function D(t,e,r,n){O(t,r,n),O(e,2*r,2*n),O(e,2*r+1,2*n+1)}function O(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function R(t,e,r,n){var i=t-r,a=e-n;return i*i+a*a}b.fromVectorTileJs=w,b.fromGeojsonVt=function(t,e){e=e||{};var r={};for(var n in t)r[n]=new v(t[n].features,e),r[n].name=n,r[n].version=e.version,r[n].extent=e.extent;return A({layers:r})},b.GeoJSONWrapper=T;var F=function(t){return t[0]},B=function(t){return t[1]},j=function(t,e,r,n,i){void 0===e&&(e=F),void 0===r&&(r=B),void 0===n&&(n=64),void 0===i&&(i=Float64Array),this.nodeSize=n,this.points=t;for(var a=t.length<65536?Uint16Array:Uint32Array,o=this.ids=new a(t.length),s=this.coords=new i(2*t.length),l=0;l=r&&s<=i&&l>=n&&l<=a&&u.push(t[d]);else{var m=Math.floor((f+p)/2);s=e[2*m],l=e[2*m+1],s>=r&&s<=i&&l>=n&&l<=a&&u.push(t[m]);var g=(h+1)%2;(0===h?r<=s:n<=l)&&(c.push(f),c.push(m-1),c.push(g)),(0===h?i>=s:a>=l)&&(c.push(m+1),c.push(p),c.push(g))}}return u}(this.ids,this.coords,t,e,r,n,this.nodeSize)},j.prototype.within=function(t,e,r){return function(t,e,r,n,i,a){for(var o=[0,t.length-1,0],s=[],l=i*i;o.length;){var c=o.pop(),u=o.pop(),h=o.pop();if(u-h<=a)for(var p=h;p<=u;p++)R(e[2*p],e[2*p+1],r,n)<=l&&s.push(t[p]);else{var f=Math.floor((h+u)/2),d=e[2*f],m=e[2*f+1];R(d,m,r,n)<=l&&s.push(t[f]);var g=(c+1)%2;(0===c?r-i<=d:n-i<=m)&&(o.push(h),o.push(f-1),o.push(g)),(0===c?r+i>=d:n+i>=m)&&(o.push(f+1),o.push(u),o.push(g))}}return s}(this.ids,this.coords,t,e,r,this.nodeSize)};var N={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:function(t){return t}},U=function(t){this.options=$(Object.create(N),t),this.trees=new Array(this.options.maxZoom+1)};function V(t,e,r,n,i){return{x:t,y:e,zoom:1/0,id:r,parentId:-1,numPoints:n,properties:i}}function q(t,e){var r=t.geometry.coordinates,n=r[0],i=r[1];return{x:W(n),y:Z(i),zoom:1/0,index:e,parentId:-1}}function H(t){return{type:"Feature",id:t.id,properties:G(t),geometry:{type:"Point",coordinates:[Y(t.x),X(t.y)]}}}function G(t){var e=t.numPoints,r=e>=1e4?Math.round(e/1e3)+"k":e>=1e3?Math.round(e/100)/10+"k":e;return $($({},t.properties),{cluster:!0,cluster_id:t.id,point_count:e,point_count_abbreviated:r})}function W(t){return t/360+.5}function Z(t){var e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function Y(t){return 360*(t-.5)}function X(t){var e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function $(t,e){for(var r in e)t[r]=e[r];return t}function K(t){return t.x}function J(t){return t.y}function Q(t,e,r,n){for(var i,a=n,o=r-e>>1,s=r-e,l=t[e],c=t[e+1],u=t[r],h=t[r+1],p=e+3;pa)i=p,a=f;else if(f===a){var d=Math.abs(p-o);dn&&(i-e>3&&Q(t,e,i,n),t[i+2]=a,r-i>3&&Q(t,i,r,n))}function tt(t,e,r,n,i,a){var o=i-r,s=a-n;if(0!==o||0!==s){var l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return(o=t-r)*o+(s=e-n)*s}function et(t,e,r,n){var i={id:typeof t>"u"?null:t,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return function(t){var e=t.geometry,r=t.type;if("Point"===r||"MultiPoint"===r||"LineString"===r)rt(t,e);else if("Polygon"===r||"MultiLineString"===r)for(var n=0;n0&&(o+=n?(i*c-l*a)/2:Math.sqrt(Math.pow(l-i,2)+Math.pow(c-a,2))),i=l,a=c}var u=e.length-3;e[2]=1,Q(e,0,u,r),e[u+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function ot(t,e,r,n){for(var i=0;i1?1:r}function ct(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;for(var l=[],c=0;c=r&&d=n)){var m=[];if("Point"===p||"MultiPoint"===p)ut(h,m,r,n,i);else if("LineString"===p)ht(h,m,r,n,i,!1,s.lineMetrics);else if("MultiLineString"===p)ft(h,m,r,n,i,!1);else if("Polygon"===p)ft(h,m,r,n,i,!0);else if("MultiPolygon"===p)for(var g=0;g=r&&o<=n&&(e.push(t[a]),e.push(t[a+1]),e.push(t[a+2]))}}function ht(t,e,r,n,i,a,o){for(var s,l,c=pt(t),u=0===i?mt:gt,h=t.start,p=0;pr&&(l=u(c,f,d,g,y,r),o&&(c.start=h+s*l)):v>n?x=r&&(l=u(c,f,d,g,y,r),_=!0),x>n&&v<=n&&(l=u(c,f,d,g,y,n),_=!0),!a&&_&&(o&&(c.end=h+s*l),e.push(c),c=pt(t)),o&&(h+=s)}var b=t.length-3;f=t[b],d=t[b+1],m=t[b+2],(v=0===i?f:d)>=r&&v<=n&&dt(c,f,d,m),b=c.length-3,a&&b>=3&&(c[b]!==c[0]||c[b+1]!==c[1])&&dt(c,c[0],c[1],c[2]),c.length&&e.push(c)}function pt(t){var e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function ft(t,e,r,n,i,a){for(var o=0;oo.maxX&&(o.maxX=u),h>o.maxY&&(o.maxY=h)}return o}function wt(t,e,r,n){var i=e.geometry,a=e.type,o=[];if("Point"===a||"MultiPoint"===a)for(var s=0;s0&&e.size<(i?o:n))r.numPoints+=e.length/3;else{for(var s=[],l=0;lo)&&(r.numSimplified++,s.push(e[l]),s.push(e[l+1])),r.numPoints++;i&&function(t,e){for(var r=0,n=0,i=t.length,a=i-2;n0===e)for(n=0,i=t.length;n24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");var n=function(t,e){var r=[];if("FeatureCollection"===t.type)for(var n=0;n=n;c--){var u=+Date.now();s=this._cluster(s,c),this.trees[c]=new j(s,K,J,a,Float32Array),r&&console.log("z%d: %d clusters in %dms",c,s.length,+Date.now()-u)}return r&&console.timeEnd("total time"),this},U.prototype.getClusters=function(t,e){var r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){var o=this.getClusters([r,n,180,a],e),s=this.getClusters([-180,n,i,a],e);return o.concat(s)}for(var l=this.trees[this._limitZoom(e)],c=[],u=0,h=l.range(W(r),Z(a),W(i),Z(n));ue&&(d+=v.numPoints||1)}if(d>=s){for(var x=u.x*f,_=u.y*f,b=o&&f>1?this._map(u,!0):null,w=(c<<5)+(e+1)+this.points.length,T=0,A=p;T1)for(var E=0,C=p;E>5},U.prototype._getOriginZoom=function(t){return(t-this.points.length)%32},U.prototype._map=function(t,e){if(t.numPoints)return e?$({},t.properties):t.properties;var r=this.points[t.index].properties,n=this.options.map(r);return e&&n===r?$({},n):n},At.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},At.prototype.splitTile=function(t,e,r,n,i,a,o){for(var s=[t,e,r,n],l=this.options,c=l.debug;s.length;){n=s.pop(),r=s.pop(),e=s.pop(),t=s.pop();var u=1<1&&console.time("creation"),p=this.tiles[h]=bt(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,n,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd("creation"));var f="z"+e;this.stats[f]=(this.stats[f]||0)+1,this.total++}if(p.source=t,i){if(e===l.maxZoom||e===i)continue;var d=1<1&&console.time("clipping");var m,g,y,v,x,_,b=.5*l.buffer/l.extent,w=.5-b,T=.5+b,A=1+b;m=g=y=v=null,x=ct(t,u,r-b,r+T,0,p.minX,p.maxX,l),_=ct(t,u,r+w,r+A,0,p.minX,p.maxX,l),t=null,x&&(m=ct(x,u,n-b,n+T,1,p.minY,p.maxY,l),g=ct(x,u,n+w,n+A,1,p.minY,p.maxY,l),x=null),_&&(y=ct(_,u,n-b,n+T,1,p.minY,p.maxY,l),v=ct(_,u,n+w,n+A,1,p.minY,p.maxY,l),_=null),c>1&&console.timeEnd("clipping"),s.push(m||[],e+1,2*r,2*n),s.push(g||[],e+1,2*r,2*n+1),s.push(y||[],e+1,2*r+1,2*n),s.push(v||[],e+1,2*r+1,2*n+1)}}},At.prototype.getTile=function(t,e,r){var n=this.options,i=n.extent,a=n.debug;if(t<0||t>24)return null;var o=1<1&&console.log("drilling down to z%d-%d-%d",t,e,r);for(var l,c=t,u=e,h=r;!l&&c>0;)c--,u=Math.floor(u/2),h=Math.floor(h/2),l=this.tiles[kt(c,u,h)];return l&&l.source?(a>1&&console.log("found parent tile z%d-%d-%d",c,u,h),a>1&&console.time("drilling down"),this.splitTile(l.source,c,u,h,t,e,r),a>1&&console.timeEnd("drilling down"),this.tiles[s]?xt(this.tiles[s],i):null):null};var St=function(e){function r(t,r,n,i){e.call(this,t,r,n,Mt),i&&(this.loadGeoJSON=i)}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.loadData=function(t,e){this._pendingCallback&&this._pendingCallback(null,{abandoned:!0}),this._pendingCallback=e,this._pendingLoadDataParams=t,this._state&&"Idle"!==this._state?this._state="NeedsLoadData":(this._state="Coalescing",this._loadData())},r.prototype._loadData=function(){var e=this;if(this._pendingCallback&&this._pendingLoadDataParams){var r=this._pendingCallback,n=this._pendingLoadDataParams;delete this._pendingCallback,delete this._pendingLoadDataParams;var i=!!(n&&n.request&&n.request.collectResourceTiming)&&new t.RequestPerformance(n.request);this.loadGeoJSON(n,(function(a,o){if(a||!o)return r(a);if("object"!=typeof o)return r(new Error("Input data given to '"+n.source+"' is not a valid GeoJSON object."));h(o,!0);try{if(n.filter){var s=t.createExpression(n.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===s.result)throw new Error(s.value.map((function(t){return t.key+": "+t.message})).join(", "));var l=o.features.filter((function(t){return s.value.evaluate({zoom:0},t)}));o={type:"FeatureCollection",features:l}}e._geoJSONIndex=n.cluster?new U(function(e){var r=e.superclusterOptions,n=e.clusterProperties;if(!n||!r)return r;for(var i={},a={},o={accumulated:null,zoom:0},s={properties:null},l=Object.keys(n),c=0,u=l;c=0?0:e.button},r.remove=function(t){t.parentNode&&t.parentNode.removeChild(t)};var p=function(e){function r(){e.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.RGBAImage({width:1,height:1}),this.dirty=!0}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.isLoaded=function(){return this.loaded},r.prototype.setLoaded=function(t){if(this.loaded!==t&&(this.loaded=t,t)){for(var e=0,r=this.requestors;e=0?1.2:1))}function y(t,e,r,n,i,a,o){for(var s=0;s65535)e(new Error("glyphs > 65535 not supported"));else if(a.ranges[s])e(null,{stack:r,id:i,glyph:o});else{var l=a.requests[s];l||(l=a.requests[s]=[],x.loadGlyphRange(r,s,n.url,n.requestManager,(function(t,e){if(e){for(var r in e)n._doesCharSupportLocalGlyph(+r)||(a.glyphs[+r]=e[+r]);a.ranges[s]=!0}for(var i=0,o=l;i1&&(l=t[++s]);var u=Math.abs(c-l.left),h=Math.abs(c-l.right),p=Math.min(u,h),f=void 0,d=i/r*(n+1);if(l.isDash){var m=n-Math.abs(d);f=Math.sqrt(p*p+m*m)}else f=n-Math.sqrt(p*p+d*d);this.data[o+c]=Math.max(0,Math.min(255,f+128))}},T.prototype.addRegularDash=function(t){for(var e=t.length-1;e>=0;--e){var r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}var i=t[0],a=t[t.length-1];i.isDash===a.isDash&&(i.left=a.left-this.width,a.right=i.right+this.width);for(var o=this.width*this.nextRow,s=0,l=t[s],c=0;c1&&(l=t[++s]);var u=Math.abs(c-l.left),h=Math.abs(c-l.right),p=Math.min(u,h),f=l.isDash?p:-p;this.data[o+c]=Math.max(0,Math.min(255,f+128))}},T.prototype.addDash=function(e,r){var n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return t.warnOnce("LineAtlas out of space"),null;for(var a=0,o=0;o=n&&e.x=i&&e.y0&&(l[new t.OverscaledTileID(e.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,e.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new t.OverscaledTileID(e.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&(n.resourceTiming=e._resourceTiming,e._resourceTiming=[]),e.fire(new t.Event("data",n))}}))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setData=function(e){var r=this;return this._data=e,this.fire(new t.Event("dataloading",{dataType:"source"})),this._updateWorkerData((function(e){if(e)r.fire(new t.ErrorEvent(e));else{var n={dataType:"source",sourceDataType:"content"};r._collectResourceTiming&&r._resourceTiming&&r._resourceTiming.length>0&&(n.resourceTiming=r._resourceTiming,r._resourceTiming=[]),r.fire(new t.Event("data",n))}})),this},r.prototype.getClusterExpansionZoom=function(t,e){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:t,source:this.id},e),this},r.prototype.getClusterChildren=function(t,e){return this.actor.send("geojson.getClusterChildren",{clusterId:t,source:this.id},e),this},r.prototype.getClusterLeaves=function(t,e,r,n){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:t,limit:e,offset:r},n),this},r.prototype._updateWorkerData=function(e){var r=this;this._loaded=!1;var n=t.extend({},this.workerOptions),i=this._data;"string"==typeof i?(n.request=this.map._requestManager.transformRequest(t.browser.resolveURL(i),t.ResourceType.Source),n.request.collectResourceTiming=this._collectResourceTiming):n.data=JSON.stringify(i),this.actor.send(this.type+".loadData",n,(function(t,i){r._removed||i&&i.abandoned||(r._loaded=!0,i&&i.resourceTiming&&i.resourceTiming[r.id]&&(r._resourceTiming=i.resourceTiming[r.id].slice(0)),r.actor.send(r.type+".coalesce",{source:n.source},null),e(t))}))},r.prototype.loaded=function(){return this._loaded},r.prototype.loadTile=function(e,r){var n=this,i=e.actor?"reloadTile":"loadTile";e.actor=this.actor;var a={type:this.type,uid:e.uid,tileID:e.tileID,zoom:e.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:t.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};e.request=this.actor.send(i,a,(function(t,a){return delete e.request,e.unloadVectorData(),e.aborted?r(null):t?r(t):(e.loadVectorData(a,n.map.painter,"reloadTile"===i),r(null))}))},r.prototype.abortTile=function(t){t.request&&(t.request.cancel(),delete t.request),t.aborted=!0},r.prototype.unloadTile=function(t){t.unloadVectorData(),this.actor.send("removeTile",{uid:t.uid,type:this.type,source:this.id})},r.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},r.prototype.serialize=function(){return t.extend({},this._options,{type:this.type,data:this._data})},r.prototype.hasTransition=function(){return!1},r}(t.Evented),L=t.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),P=function(e){function r(t,r,n,i){e.call(this),this.id=t,this.dispatcher=n,this.coordinates=r.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(i),this.options=r}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(e,r){var n=this;this._loaded=!1,this.fire(new t.Event("dataloading",{dataType:"source"})),this.url=this.options.url,t.getImage(this.map._requestManager.transformRequest(this.url,t.ResourceType.Image),(function(i,a){n._loaded=!0,i?n.fire(new t.ErrorEvent(i)):a&&(n.image=a,e&&(n.coordinates=e),r&&r(),n._finishLoading())}))},r.prototype.loaded=function(){return this._loaded},r.prototype.updateImage=function(t){var e=this;return this.image&&t.url?(this.options.url=t.url,this.load(t.coordinates,(function(){e.texture=null})),this):this},r.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.Event("data",{dataType:"source",sourceDataType:"metadata"})))},r.prototype.onAdd=function(t){this.map=t,this.load()},r.prototype.setCoordinates=function(e){var r=this;this.coordinates=e;var n=e.map(t.MercatorCoordinate.fromLngLat);this.tileID=function(e){for(var r=1/0,n=1/0,i=-1/0,a=-1/0,o=0,s=e;or.end(0)?this.fire(new t.ErrorEvent(new t.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+r.start(0)+" and "+r.end(0)+"-second mark."))):this.video.currentTime=e}},r.prototype.getVideo=function(){return this.video},r.prototype.onAdd=function(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},r.prototype.prepare=function(){if(!(0===Object.keys(this.tiles).length||this.video.readyState<2)){var e=this.map.painter.context,r=e.gl;for(var n in this.boundsBuffer||(this.boundsBuffer=e.createVertexBuffer(this._boundsArray,L.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new t.Texture(e,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE)),this.tiles){var i=this.tiles[n];"loaded"!==i.state&&(i.state="loaded",i.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this.video&&!this.video.paused},r}(P),D=function(e){function r(r,n,i,a){e.call(this,r,n,i,a),n.coordinates?(!Array.isArray(n.coordinates)||4!==n.coordinates.length||n.coordinates.some((function(t){return!Array.isArray(t)||2!==t.length||t.some((function(t){return"number"!=typeof t}))})))&&this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "coordinates"'))),n.animate&&"boolean"!=typeof n.animate&&this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'optional "animate" property must be a boolean value'))),n.canvas?"string"!=typeof n.canvas&&!(n.canvas instanceof t.window.HTMLCanvasElement)&&this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.ErrorEvent(new t.ValidationError("sources."+r,null,'missing required property "canvas"'))),this.options=n,this.animate=void 0===n.animate||n.animate}return e&&(r.__proto__=e),r.prototype=Object.create(e&&e.prototype),r.prototype.constructor=r,r.prototype.load=function(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof t.window.HTMLCanvasElement?this.options.canvas:t.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())},r.prototype.getCanvas=function(){return this.canvas},r.prototype.onAdd=function(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()},r.prototype.onRemove=function(){this.pause()},r.prototype.prepare=function(){var e=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,e=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,e=!0),!this._hasInvalidDimensions()&&0!==Object.keys(this.tiles).length){var r=this.map.painter.context,n=r.gl;for(var i in this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,L.members)),this.boundsSegments||(this.boundsSegments=t.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(e||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new t.Texture(r,this.canvas,n.RGBA,{premultiply:!0}),this.tiles){var a=this.tiles[i];"loaded"!==a.state&&(a.state="loaded",a.texture=this.texture)}}},r.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},r.prototype.hasTransition=function(){return this._playing},r.prototype._hasInvalidDimensions=function(){for(var t=0,e=[this.canvas.width,this.canvas.height];tthis.max){var o=this._getAndRemoveByKey(this.order[0]);o&&this.onRemove(o)}return this},j.prototype.has=function(t){return t.wrapped().key in this.data},j.prototype.getAndRemove=function(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null},j.prototype._getAndRemoveByKey=function(t){var e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value},j.prototype.getByKey=function(t){var e=this.data[t];return e?e[0].value:null},j.prototype.get=function(t){return this.has(t)?this.data[t.wrapped().key][0].value:null},j.prototype.remove=function(t,e){if(!this.has(t))return this;var r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this},j.prototype.setMaxSize=function(t){for(this.max=t;this.order.length>this.max;){var e=this._getAndRemoveByKey(this.order[0]);e&&this.onRemove(e)}return this},j.prototype.filter=function(t){var e=[];for(var r in this.data)for(var n=0,i=this.data[r];n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}},r.prototype.getTile=function(t){return this.getTileByID(t.key)},r.prototype.getTileByID=function(t){return this._tiles[t]},r.prototype._retainLoadedChildren=function(t,e,r,n){for(var i in this._tiles){var a=this._tiles[i];if(!(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)){for(var o=a.tileID;a&&a.tileID.overscaledZ>e+1;){var s=a.tileID.scaledTo(a.tileID.overscaledZ-1);(a=this._tiles[s.key])&&a.hasData()&&(o=s)}for(var l=o;l.overscaledZ>e;)if(t[(l=l.scaledTo(l.overscaledZ-1)).key]){n[o.key]=o;break}}}},r.prototype.findLoadedParent=function(t,e){if(t.key in this._loadedParentTiles){var r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(var n=t.overscaledZ-1;n>=e;n--){var i=t.scaledTo(n),a=this._getLoadedTile(i);if(a)return a}},r.prototype._getLoadedTile=function(t){var e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)},r.prototype.updateCacheSize=function(t){var e=(Math.ceil(t.width/this._source.tileSize)+1)*(Math.ceil(t.height/this._source.tileSize)+1),r=Math.floor(5*e),n="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,r):r;this._cache.setMaxSize(n)},r.prototype.handleWrapJump=function(t){var e=(t-(void 0===this._prevLng?t:this._prevLng))/360,r=Math.round(e);if(this._prevLng=t,r){var n={};for(var i in this._tiles){var a=this._tiles[i];a.tileID=a.tileID.unwrapTo(a.tileID.wrap+r),n[a.tileID.key]=a}for(var o in this._tiles=n,this._timers)clearTimeout(this._timers[o]),delete this._timers[o];for(var s in this._tiles){var l=this._tiles[s];this._setTileReloadTimer(s,l)}}},r.prototype.update=function(e){var n=this;if(this.transform=e,this._sourceLoaded&&!this._paused){var i;this.updateCacheSize(e),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used?this._source.tileID?i=e.getVisibleUnwrappedCoordinates(this._source.tileID).map((function(e){return new t.OverscaledTileID(e.canonical.z,e.wrap,e.canonical.z,e.canonical.x,e.canonical.y)})):(i=e.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(i=i.filter((function(t){return n._source.hasTile(t)})))):i=[];var a=e.coveringZoomLevel(this._source),o=Math.max(a-r.maxOverzooming,this._source.minzoom),s=Math.max(a+r.maxUnderzooming,this._source.minzoom),l=this._updateRetainedTiles(i,a);if(zt(this._source.type)){for(var c={},u={},h=0,p=Object.keys(l);hthis._source.maxzoom){var g=d.children(this._source.maxzoom)[0],y=this.getTile(g);if(y&&y.hasData()){n[g.key]=g;continue}}else{var v=d.children(this._source.maxzoom);if(n[v[0].key]&&n[v[1].key]&&n[v[2].key]&&n[v[3].key])continue}for(var x=m.wasRequested(),_=d.overscaledZ-1;_>=a;--_){var b=d.scaledTo(_);if(i[b.key]||(i[b.key]=!0,!(m=this.getTile(b))&&x&&(m=this._addTile(b)),m&&(n[b.key]=b,x=m.wasRequested(),m.hasData())))break}}}return n},r.prototype._updateLoadedParentTileCache=function(){for(var t in this._loadedParentTiles={},this._tiles){for(var e=[],r=void 0,n=this._tiles[t].tileID;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){r=this._loadedParentTiles[n.key];break}e.push(n.key);var i=n.scaledTo(n.overscaledZ-1);if(r=this._getLoadedTile(i))break;n=i}for(var a=0,o=e;a0)&&(e.hasData()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))},r.prototype.clearTiles=function(){for(var t in this._shouldReloadOnResume=!1,this._paused=!1,this._tiles)this._removeTile(t);this._cache.reset()},r.prototype.tilesIn=function(e,r,n){var i=this,a=[],o=this.transform;if(!o)return a;for(var s=n?o.getCameraQueryGeometry(e):e,l=e.map((function(t){return o.pointCoordinate(t)})),c=s.map((function(t){return o.pointCoordinate(t)})),u=this.getIds(),h=1/0,p=1/0,f=-1/0,d=-1/0,m=0,g=c;m=0&&y[1].y+g>=0){var v=l.map((function(t){return s.getTilePoint(t)})),x=c.map((function(t){return s.getTilePoint(t)}));a.push({tile:n,tileID:s,queryGeometry:v,cameraQueryGeometry:x,scale:m})}}},x=0;x=t.browser.now())return!0}return!1},r.prototype.setFeatureState=function(t,e,r){t=t||"_geojsonTileLayer",this._state.updateState(t,e,r)},r.prototype.removeFeatureState=function(t,e,r){t=t||"_geojsonTileLayer",this._state.removeFeatureState(t,e,r)},r.prototype.getFeatureState=function(t,e){return t=t||"_geojsonTileLayer",this._state.getState(t,e)},r.prototype.setDependencies=function(t,e,r){var n=this._tiles[t];n&&n.setDependencies(e,r)},r.prototype.reloadTilesForDependencies=function(t,e){for(var r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,"reloading");this._cache.filter((function(r){return!r.hasDependency(t,e)}))},r}(t.Evented);function Pt(t,e){var r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function zt(t){return"raster"===t||"image"===t||"video"===t}function Dt(){return new t.window.Worker(na.workerUrl)}Lt.maxOverzooming=10,Lt.maxUnderzooming=3;var Ot="mapboxgl_preloaded_worker_pool",Rt=function(){this.active={}};Rt.prototype.acquire=function(t){if(!this.workers)for(this.workers=[];this.workers.length0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))};var Kt=function(t,e,r){var n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(var a=0;a=-e[0]&&r<=e[0]&&n>=-e[1]&&n<=e[1]}function ne(e,r,n,i,a,o,s,l){var c=i?e.textSizeData:e.iconSizeData,u=t.evaluateSizeForZoom(c,n.transform.zoom),h=[256/n.width*2+1,256/n.height*2+1],p=i?e.text.dynamicLayoutVertexArray:e.icon.dynamicLayoutVertexArray;p.clear();for(var f=e.lineVertexArray,d=i?e.text.placedSymbolArray:e.icon.placedSymbolArray,m=n.transform.width/n.transform.height,g=!1,y=0;yMath.abs(n.x-r.x)*i?{useVertical:!0}:(e===t.WritingMode.vertical?r.yn.x)?{needsFlipping:!0}:null}function oe(e,r,n,i,a,o,s,l,c,u,h,p,f,d){var m,g=r/24,y=e.lineOffsetX*g,v=e.lineOffsetY*g;if(e.numGlyphs>1){var x=e.glyphStartIndex+e.numGlyphs,_=e.lineStartIndex,b=e.lineStartIndex+e.lineLength,w=ie(g,l,y,v,n,h,p,e,c,o,f);if(!w)return{notEnoughRoom:!0};var T=te(w.first.point,s).point,A=te(w.last.point,s).point;if(i&&!n){var k=ae(e.writingMode,T,A,d);if(k)return k}m=[w.first];for(var M=e.glyphStartIndex+1;M0?I.point:se(p,C,S,1,a),P=ae(e.writingMode,S,L,d);if(P)return P}var z=le(g*l.getoffsetX(e.glyphStartIndex),y,v,n,h,p,e.segment,e.lineStartIndex,e.lineStartIndex+e.lineLength,c,o,f);if(!z)return{notEnoughRoom:!0};m=[z]}for(var D=0,O=m;D0?1:-1,m=0;i&&(d*=-1,m=Math.PI),d<0&&(m+=Math.PI);for(var g=d>0?l+s:l+s+1,y=a,v=a,x=0,_=0,b=Math.abs(f),w=[];x+_<=b;){if((g+=d)=c)return null;if(v=y,w.push(y),void 0===(y=p[g])){var T=new t.Point(u.getx(g),u.gety(g)),A=te(T,h);if(A.signedDistanceFromCamera>0)y=p[g]=A.point;else{var k=g-d;y=se(0===x?o:new t.Point(u.getx(k),u.gety(k)),T,v,b-x+1,h)}}x+=_,_=v.dist(y)}var M=(b-x)/_,S=y.sub(v),E=S.mult(M)._add(v);E._add(S._unit()._perp()._mult(n*d));var C=m+Math.atan2(y.y-v.y,y.x-v.x);return w.push(E),{point:E,angle:C,path:w}}Kt.prototype.keysLength=function(){return this.boxKeys.length+this.circleKeys.length},Kt.prototype.insert=function(t,e,r,n,i){this._forEachCell(e,r,n,i,this._insertBoxCell,this.boxUid++),this.boxKeys.push(t),this.bboxes.push(e),this.bboxes.push(r),this.bboxes.push(n),this.bboxes.push(i)},Kt.prototype.insertCircle=function(t,e,r,n){this._forEachCell(e-n,r-n,e+n,r+n,this._insertCircleCell,this.circleUid++),this.circleKeys.push(t),this.circles.push(e),this.circles.push(r),this.circles.push(n)},Kt.prototype._insertBoxCell=function(t,e,r,n,i,a){this.boxCells[i].push(a)},Kt.prototype._insertCircleCell=function(t,e,r,n,i,a){this.circleCells[i].push(a)},Kt.prototype._query=function(t,e,r,n,i,a){if(r<0||t>this.width||n<0||e>this.height)return!i&&[];var o=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return!0;for(var s=0;s0:o},Kt.prototype._queryCircle=function(t,e,r,n,i){var a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!n&&[];var c=[],u={hitTest:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}};return this._forEachCell(a,s,o,l,this._queryCellCircle,c,u,i),n?c.length>0:c},Kt.prototype.query=function(t,e,r,n,i){return this._query(t,e,r,n,!1,i)},Kt.prototype.hitTest=function(t,e,r,n,i){return this._query(t,e,r,n,!0,i)},Kt.prototype.hitTestCircle=function(t,e,r,n){return this._queryCircle(t,e,r,!0,n)},Kt.prototype._queryCell=function(t,e,r,n,i,a,o,s){var l=o.seenUids,c=this.boxCells[i];if(null!==c)for(var u=this.bboxes,h=0,p=c;h=u[d+0]&&n>=u[d+1]&&(!s||s(this.boxKeys[f]))){if(o.hitTest)return a.push(!0),!0;a.push({key:this.boxKeys[f],x1:u[d],y1:u[d+1],x2:u[d+2],y2:u[d+3]})}}}var m=this.circleCells[i];if(null!==m)for(var g=this.circles,y=0,v=m;yo*o+s*s},Kt.prototype._circleAndRectCollide=function(t,e,r,n,i,a,o){var s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;var c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;var h=l-s,p=u-c;return h*h+p*p<=r*r};var ce=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ue(t,e){for(var r=0;r=1;L--)I.push(E.path[L]);for(var P=1;P0){for(var R=I[0].clone(),F=I[0].clone(),B=1;B=k.x&&F.x<=M.x&&R.y>=k.y&&F.y<=M.y?[I]:F.xM.x||F.yM.y?[]:t.clipLine([I],k.x,k.y,M.x,M.y)}for(var j=0,N=O;j=this.screenRightBoundary||nthis.screenBottomBoundary},fe.prototype.isInsideGrid=function(t,e,r,n){return r>=0&&t=0&&e0?(this.prevPlacement&&this.prevPlacement.variableOffsets[h.crossTileID]&&this.prevPlacement.placements[h.crossTileID]&&this.prevPlacement.placements[h.crossTileID].text&&(m=this.prevPlacement.variableOffsets[h.crossTileID].anchor),this.variableOffsets[h.crossTileID]={textOffset:g,width:r,height:n,anchor:t,textBoxScale:i,prevAnchor:m},this.markUsedJustification(p,t,h,f),p.allowVerticalPlacement&&(this.markUsedOrientation(p,f,h),this.placedOrientations[h.crossTileID]=f),{shift:y,placedGlyphBoxes:v}):void 0},Te.prototype.placeLayerBucketPart=function(e,r,n){var i=this,a=e.parameters,o=a.bucket,s=a.layout,l=a.posMatrix,c=a.textLabelPlaneMatrix,u=a.labelToScreenMatrix,h=a.textPixelRatio,p=a.holdingForFade,f=a.collisionBoxArray,d=a.partiallyEvaluatedTextSize,m=a.collisionGroup,g=s.get("text-optional"),y=s.get("icon-optional"),v=s.get("text-allow-overlap"),x=s.get("icon-allow-overlap"),_="map"===s.get("text-rotation-alignment"),b="map"===s.get("text-pitch-alignment"),w="none"!==s.get("icon-text-fit"),T="viewport-y"===s.get("symbol-z-order"),A=v&&(x||!o.hasIconData()||y),k=x&&(v||!o.hasTextData()||g);!o.collisionArrays&&f&&o.deserializeCollisionBoxes(f);var M=function(e,a){if(!r[e.crossTileID]){if(p)return void(i.placements[e.crossTileID]=new ye(!1,!1,!1));var f,T=!1,M=!1,S=!0,E=null,C={box:null,offscreen:null},I={box:null,offscreen:null},L=null,P=null,z=0,D=0,O=0;a.textFeatureIndex?z=a.textFeatureIndex:e.useRuntimeCollisionCircles&&(z=e.featureIndex),a.verticalTextFeatureIndex&&(D=a.verticalTextFeatureIndex);var R=a.textBox;if(R){var F=function(r){var n=t.WritingMode.horizontal;if(o.allowVerticalPlacement&&!r&&i.prevPlacement){var a=i.prevPlacement.placedOrientations[e.crossTileID];a&&(i.placedOrientations[e.crossTileID]=a,n=a,i.markUsedOrientation(o,n,e))}return n},B=function(r,n){if(o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&a.verticalTextBox)for(var i=0,s=o.writingModes;i0&&(j=j.filter((function(t){return t!==N.anchor}))).unshift(N.anchor)}var U=function(t,r,n){for(var a=t.x2-t.x1,s=t.y2-t.y1,c=e.textBoxScale,u=w&&!x?r:null,p={box:[],offscreen:!1},f=v?2*j.length:j.length,d=0;d=j.length,A=i.attemptAnchorPlacement(g,t,a,s,c,_,b,h,l,m,y,e,o,n,u);if(A&&(p=A.placedGlyphBoxes)&&p.box&&p.box.length){T=!0,E=A.shift;break}}return p};B((function(){return U(R,a.iconBox,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox,n=C&&C.box&&C.box.length;return o.allowVerticalPlacement&&!n&&e.numVerticalGlyphVertices>0&&r?U(r,a.verticalIconBox,t.WritingMode.vertical):{box:null,offscreen:null}})),C&&(T=C.box,S=C.offscreen);var V=F(C&&C.box);if(!T&&i.prevPlacement){var q=i.prevPlacement.variableOffsets[e.crossTileID];q&&(i.variableOffsets[e.crossTileID]=q,i.markUsedJustification(o,q.anchor,e,V))}}else{var H=function(t,r){var n=i.collisionIndex.placeCollisionBox(t,v,h,l,m.predicate);return n&&n.box&&n.box.length&&(i.markUsedOrientation(o,r,e),i.placedOrientations[e.crossTileID]=r),n};B((function(){return H(R,t.WritingMode.horizontal)}),(function(){var r=a.verticalTextBox;return o.allowVerticalPlacement&&e.numVerticalGlyphVertices>0&&r?H(r,t.WritingMode.vertical):{box:null,offscreen:null}})),F(C&&C.box&&C.box.length)}}if(T=(f=C)&&f.box&&f.box.length>0,S=f&&f.offscreen,e.useRuntimeCollisionCircles){var G=o.text.placedSymbolArray.get(e.centerJustifiedTextSymbolIndex),W=t.evaluateSizeForFeature(o.textSizeData,d,G),Z=s.get("text-padding"),Y=e.collisionCircleDiameter;L=i.collisionIndex.placeCollisionCircles(v,G,o.lineVertexArray,o.glyphOffsetArray,W,l,c,u,n,b,m.predicate,Y,Z),T=v||L.circles.length>0&&!L.collisionDetected,S=S&&L.offscreen}if(a.iconFeatureIndex&&(O=a.iconFeatureIndex),a.iconBox){var X=function(t){var e=w&&E?we(t,E.x,E.y,_,b,i.transform.angle):t;return i.collisionIndex.placeCollisionBox(e,x,h,l,m.predicate)};M=I&&I.box&&I.box.length&&a.verticalIconBox?(P=X(a.verticalIconBox)).box.length>0:(P=X(a.iconBox)).box.length>0,S=S&&P.offscreen}var $=g||0===e.numHorizontalGlyphVertices&&0===e.numVerticalGlyphVertices,K=y||0===e.numIconVertices;if($||K?K?$||(M=M&&T):T=M&&T:M=T=M&&T,T&&f&&f.box&&(I&&I.box&&D?i.collisionIndex.insertCollisionBox(f.box,s.get("text-ignore-placement"),o.bucketInstanceId,D,m.ID):i.collisionIndex.insertCollisionBox(f.box,s.get("text-ignore-placement"),o.bucketInstanceId,z,m.ID)),M&&P&&i.collisionIndex.insertCollisionBox(P.box,s.get("icon-ignore-placement"),o.bucketInstanceId,O,m.ID),L&&(T&&i.collisionIndex.insertCollisionCircles(L.circles,s.get("text-ignore-placement"),o.bucketInstanceId,z,m.ID),n)){var J=o.bucketInstanceId,Q=i.collisionCircleArrays[J];void 0===Q&&(Q=i.collisionCircleArrays[J]=new ve);for(var tt=0;tt=0;--E){var C=S[E];M(o.symbolInstances.get(C),o.collisionArrays[C])}else for(var I=e.symbolInstanceStart;I=0&&(e.text.placedSymbolArray.get(c).crossTileID=a>=0&&c!==a?0:n.crossTileID)}},Te.prototype.markUsedOrientation=function(e,r,n){for(var i=r===t.WritingMode.horizontal||r===t.WritingMode.horizontalOnly?r:0,a=r===t.WritingMode.vertical?r:0,o=0,s=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];o0||l>0,x=a.numIconVertices>0,_=i.placedOrientations[a.crossTileID],b=_===t.WritingMode.vertical,w=_===t.WritingMode.horizontal||_===t.WritingMode.horizontalOnly;if(v){var T=Pe(y.text),A=b?ze:T;d(e.text,s,A);var k=w?ze:T;d(e.text,l,k);var M=y.text.isHidden();[a.rightJustifiedTextSymbolIndex,a.centerJustifiedTextSymbolIndex,a.leftJustifiedTextSymbolIndex].forEach((function(t){t>=0&&(e.text.placedSymbolArray.get(t).hidden=M||b?1:0)})),a.verticalPlacedTextSymbolIndex>=0&&(e.text.placedSymbolArray.get(a.verticalPlacedTextSymbolIndex).hidden=M||w?1:0);var S=i.variableOffsets[a.crossTileID];S&&i.markUsedJustification(e,S.anchor,a,_);var E=i.placedOrientations[a.crossTileID];E&&(i.markUsedJustification(e,"left",a,E),i.markUsedOrientation(e,E,a))}if(x){var C=Pe(y.icon),I=!(p&&a.verticalPlacedIconSymbolIndex&&b);if(a.placedIconSymbolIndex>=0){var L=I?C:ze;d(e.icon,a.numIconVertices,L),e.icon.placedSymbolArray.get(a.placedIconSymbolIndex).hidden=y.icon.isHidden()}if(a.verticalPlacedIconSymbolIndex>=0){var P=I?ze:C;d(e.icon,a.numVerticalIconVertices,P),e.icon.placedSymbolArray.get(a.verticalPlacedIconSymbolIndex).hidden=y.icon.isHidden()}}if(e.hasIconCollisionBoxData()||e.hasTextCollisionBoxData()){var z=e.collisionArrays[n];if(z){var D=new t.Point(0,0);if(z.textBox||z.verticalTextBox){var O=!0;if(c){var R=i.variableOffsets[m];R?(D=be(R.anchor,R.width,R.height,R.textOffset,R.textBoxScale),u&&D._rotate(h?i.transform.angle:-i.transform.angle)):O=!1}z.textBox&&Ae(e.textCollisionBox.collisionVertexArray,y.text.placed,!O||b,D.x,D.y),z.verticalTextBox&&Ae(e.textCollisionBox.collisionVertexArray,y.text.placed,!O||w,D.x,D.y)}var F=!(w||!z.verticalIconBox);z.iconBox&&Ae(e.iconCollisionBox.collisionVertexArray,y.icon.placed,F,p?D.x:0,p?D.y:0),z.verticalIconBox&&Ae(e.iconCollisionBox.collisionVertexArray,y.icon.placed,!F,p?D.x:0,p?D.y:0)}}},g=0;gt},Te.prototype.setStale=function(){this.stale=!0};var ke=Math.pow(2,25),Me=Math.pow(2,24),Se=Math.pow(2,17),Ee=Math.pow(2,16),Ce=Math.pow(2,9),Ie=Math.pow(2,8),Le=Math.pow(2,1);function Pe(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;var e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*ke+e*Me+r*Se+e*Ee+r*Ce+e*Ie+r*Le+e}var ze=0,De=function(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&void 0!==t.layout.get("symbol-sort-key").constantOr(1),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};De.prototype.continuePlacement=function(t,e,r,n,i){for(var a=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var s=r[e[this._currentPlacementIndex]],l=this.placement.collisionIndex.transform.zoom;if("symbol"===s.type&&(!s.minzoom||s.minzoom<=l)&&(!s.maxzoom||s.maxzoom>l)){if(this._inProgressLayer||(this._inProgressLayer=new De(s)),this._inProgressLayer.continuePlacement(n[s.source],this.placement,this._showCollisionBoxes,s,o))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Oe.prototype.commit=function(t){return this.placement.commit(t),this.placement};var Re=512/t.EXTENT/2,Fe=function(t,e,r){this.tileID=t,this.indexedSymbolInstances={},this.bucketInstanceId=r;for(var n=0;nt.overscaledZ)for(var s in o){var l=o[s];l.tileID.isChildOf(t)&&l.findMatches(e.symbolInstances,t,i)}else{var c=o[t.scaledTo(Number(a)).key];c&&c.findMatches(e.symbolInstances,t,i)}}for(var u=0;u1?"@2x":"",l=t.getJSON(r.transformRequest(r.normalizeSpriteURL(e,s,".json"),t.ResourceType.SpriteJSON),(function(t,e){l=null,o||(o=t,i=e,u())})),c=t.getImage(r.transformRequest(r.normalizeSpriteURL(e,s,".png"),t.ResourceType.SpriteImage),(function(t,e){c=null,o||(o=t,a=e,u())}));function u(){if(o)n(o);else if(i&&a){var e=t.browser.getImageData(a),r={};for(var s in i){var l=i[s],c=l.width,u=l.height,h=l.x,p=l.y,f=l.sdf,d=l.pixelRatio,m=l.stretchX,g=l.stretchY,y=l.content,v=new t.RGBAImage({width:c,height:u});t.RGBAImage.copy(e,v,{x:h,y:p},{x:0,y:0},{width:c,height:u}),r[s]={data:v,pixelRatio:d,sdf:f,stretchX:m,stretchY:g,content:y}}n(null,r)}}return{cancel:function(){l&&(l.cancel(),l=null),c&&(c.cancel(),c=null)}}}(e,this.map._requestManager,(function(e,n){if(r._spriteRequest=null,e)r.fire(new t.ErrorEvent(e));else if(n)for(var i in n)r.imageManager.addImage(i,n[i]);r.imageManager.setLoaded(!0),r._availableImages=r.imageManager.listImages(),r.dispatcher.broadcast("setImages",r._availableImages),r.fire(new t.Event("data",{dataType:"style"}))}))},r.prototype._validateLayer=function(e){var r=this.sourceCaches[e.source];if(r){var n=e.sourceLayer;if(n){var i=r.getSource();("geojson"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new t.ErrorEvent(new Error('Source layer "'+n+'" does not exist on source "'+i.id+'" as specified by style layer "'+e.id+'"')))}}},r.prototype.loaded=function(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(var t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()},r.prototype._serializeLayers=function(t){for(var e=[],r=0,n=t;r0)throw new Error("Unimplemented: "+i.map((function(t){return t.command})).join(", ")+".");return n.forEach((function(t){"setTransition"!==t.command&&r[t.command].apply(r,t.args)})),this.stylesheet=e,!0},r.prototype.addImage=function(e,r){if(this.getImage(e))return this.fire(new t.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(e,r),this._afterImageUpdated(e)},r.prototype.updateImage=function(t,e){this.imageManager.updateImage(t,e)},r.prototype.getImage=function(t){return this.imageManager.getImage(t)},r.prototype.removeImage=function(e){if(!this.getImage(e))return this.fire(new t.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(e),this._afterImageUpdated(e)},r.prototype._afterImageUpdated=function(e){this._availableImages=this.imageManager.listImages(),this._changedImages[e]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new t.Event("data",{dataType:"style"}))},r.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},r.prototype.addSource=function(e,r,n){var i=this;if(void 0===n&&(n={}),this._checkLoaded(),void 0!==this.sourceCaches[e])throw new Error("There is already a source with this ID");if(!r.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys(r).join(", ")+".");if(!(["vector","raster","geojson","video","image"].indexOf(r.type)>=0&&this._validate(t.validateStyle.source,"sources."+e,r,null,n))){this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);var a=this.sourceCaches[e]=new Lt(e,r,this.dispatcher);a.style=this,a.setEventedParent(this,(function(){return{isSourceLoaded:i.loaded(),source:a.serialize(),sourceId:e}})),a.onAdd(this.map),this._changed=!0}},r.prototype.removeSource=function(e){if(this._checkLoaded(),void 0===this.sourceCaches[e])throw new Error("There is no source with this ID");for(var r in this._layers)if(this._layers[r].source===e)return this.fire(new t.ErrorEvent(new Error('Source "'+e+'" cannot be removed while layer "'+r+'" is using it.')));var n=this.sourceCaches[e];delete this.sourceCaches[e],delete this._updatedSources[e],n.fire(new t.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:e})),n.setEventedParent(null),n.clearTiles(),n.onRemove&&n.onRemove(this.map),this._changed=!0},r.prototype.setGeoJSONSourceData=function(t,e){this._checkLoaded(),this.sourceCaches[t].getSource().setData(e),this._changed=!0},r.prototype.getSource=function(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()},r.prototype.addLayer=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=e.id;if(this.getLayer(i))this.fire(new t.ErrorEvent(new Error('Layer with id "'+i+'" already exists on this map')));else{var a;if("custom"===e.type){if(Ue(this,t.validateCustomStyleLayer(e)))return;a=t.createStyleLayer(e)}else{if("object"==typeof e.source&&(this.addSource(i,e.source),e=t.clone$1(e),e=t.extend(e,{source:i})),this._validate(t.validateStyle.layer,"layers."+i,e,{arrayIndex:-1},n))return;a=t.createStyleLayer(e),this._validateLayer(a),a.setEventedParent(this,{layer:{id:i}}),this._serializedLayers[a.id]=a.serialize()}var o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.')));else{if(this._order.splice(o,0,i),this._layerOrderChanged=!0,this._layers[i]=a,this._removedLayers[i]&&a.source&&"custom"!==a.type){var s=this._removedLayers[i];delete this._removedLayers[i],s.type!==a.type?this._updatedSources[a.source]="clear":(this._updatedSources[a.source]="reload",this.sourceCaches[a.source].pause())}this._updateLayer(a),a.onAdd&&a.onAdd(this.map)}}},r.prototype.moveLayer=function(e,r){if(this._checkLoaded(),this._changed=!0,this._layers[e]){if(e!==r){var n=this._order.indexOf(e);this._order.splice(n,1);var i=r?this._order.indexOf(r):this._order.length;if(r&&-1===i)return void this.fire(new t.ErrorEvent(new Error('Layer with id "'+r+'" does not exist on this map.')));this._order.splice(i,0,e),this._layerOrderChanged=!0}}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be moved.")))},r.prototype.removeLayer=function(e){this._checkLoaded();var r=this._layers[e];if(r){r.setEventedParent(null);var n=this._order.indexOf(e);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[e]=r,delete this._layers[e],delete this._serializedLayers[e],delete this._updatedLayers[e],delete this._updatedPaintProps[e],r.onRemove&&r.onRemove(this.map)}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be removed.")))},r.prototype.getLayer=function(t){return this._layers[t]},r.prototype.hasLayer=function(t){return t in this._layers},r.prototype.setLayerZoomRange=function(e,r,n){this._checkLoaded();var i=this.getLayer(e);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot have zoom extent.")))},r.prototype.setFilter=function(e,r,n){void 0===n&&(n={}),this._checkLoaded();var i=this.getLayer(e);if(i){if(!t.deepEqual(i.filter,r)){if(null==r)return i.filter=void 0,void this._updateLayer(i);this._validate(t.validateStyle.filter,"layers."+i.id+".filter",r,null,n)||(i.filter=t.clone$1(r),this._updateLayer(i))}}else this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be filtered.")))},r.prototype.getFilter=function(e){return t.clone$1(this.getLayer(e).filter)},r.prototype.setLayoutProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getLayoutProperty=function(e,r){var n=this.getLayer(e);if(n)return n.getLayoutProperty(r);this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style.")))},r.prototype.setPaintProperty=function(e,r,n,i){void 0===i&&(i={}),this._checkLoaded();var a=this.getLayer(e);a?t.deepEqual(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[e]=!0):this.fire(new t.ErrorEvent(new Error("The layer '"+e+"' does not exist in the map's style and cannot be styled.")))},r.prototype.getPaintProperty=function(t,e){return this.getLayer(t).getPaintProperty(e)},r.prototype.setFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=e.sourceLayer,a=this.sourceCaches[n];if(void 0!==a){var o=a.getSource().type;"geojson"===o&&i?this.fire(new t.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==o||i?(void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),a.setFeatureState(i,e.id,r)):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+n+"' does not exist in the map's style.")))},r.prototype.removeFeatureState=function(e,r){this._checkLoaded();var n=e.source,i=this.sourceCaches[n];if(void 0!==i){var a=i.getSource().type,o="vector"===a?e.sourceLayer:void 0;"vector"!==a||o?r&&"string"!=typeof e.id&&"number"!=typeof e.id?this.fire(new t.ErrorEvent(new Error("A feature id is required to remove its specific state property."))):i.removeFeatureState(o,e.id,r):this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+n+"' does not exist in the map's style.")))},r.prototype.getFeatureState=function(e){this._checkLoaded();var r=e.source,n=e.sourceLayer,i=this.sourceCaches[r];if(void 0!==i){if("vector"!==i.getSource().type||n)return void 0===e.id&&this.fire(new t.ErrorEvent(new Error("The feature id parameter must be provided."))),i.getFeatureState(n,e.id);this.fire(new t.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")))}else this.fire(new t.ErrorEvent(new Error("The source '"+r+"' does not exist in the map's style.")))},r.prototype.getTransition=function(){return t.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},r.prototype.serialize=function(){return t.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:t.mapObject(this.sourceCaches,(function(t){return t.serialize()})),layers:this._serializeLayers(this._order)},(function(t){return void 0!==t}))},r.prototype._updateLayer=function(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._changed=!0},r.prototype._flattenAndSortRenderedFeatures=function(t){for(var e=this,r=function(t){return"fill-extrusion"===e._layers[t].type},n={},i=[],a=this._order.length-1;a>=0;a--){var o=this._order[a];if(r(o)){n[o]=a;for(var s=0,l=t;s=0;d--){var m=this._order[d];if(r(m))for(var g=i.length-1;g>=0;g--){var y=i[g].feature;if(n[y.layer.id] 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_pos;attribute vec2 a_anchor_pos;attribute vec2 a_extrude;attribute vec2 a_placed;attribute vec2 a_shift;uniform mat4 u_matrix;uniform vec2 u_extrude_scale;uniform float u_camera_to_center_distance;varying float v_placed;varying float v_notUsed;void main() {vec4 projectedPoint=u_matrix*vec4(a_anchor_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);gl_Position=u_matrix*vec4(a_pos,0.0,1.0);gl_Position.xy+=(a_extrude+a_shift)*u_extrude_scale*gl_Position.w*collision_perspective_ratio;v_placed=a_placed.x;v_notUsed=a_placed.y;}"),er=xr("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),rr=xr("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,0,1);}"),nr=xr("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}"),ir=xr("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),ar=xr("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),or=xr("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),sr=xr("varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),lr=xr("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),cr=xr("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),ur=xr("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),hr=xr("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),pr=xr("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}"),fr=xr("uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),dr=xr("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}"),mr=xr("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),gr=xr("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}"),yr=xr("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),vr=xr("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}");function xr(t,e){var r=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,n=e.match(/attribute ([\w]+) ([\w]+)/g),i=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),a=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=a?a.concat(i):i,s={};return{fragmentSource:t=t.replace(r,(function(t,e,r,n,i){return s[i]=!0,"define"===e?"\n#ifndef HAS_UNIFORM_u_"+i+"\nvarying "+r+" "+n+" "+i+";\n#else\nuniform "+r+" "+n+" u_"+i+";\n#endif\n":"\n#ifdef HAS_UNIFORM_u_"+i+"\n "+r+" "+n+" "+i+" = u_"+i+";\n#endif\n"})),vertexSource:e=e.replace(r,(function(t,e,r,n,i){var a="float"===n?"vec2":"vec4",o=i.match(/color/)?"color":a;return s[i]?"define"===e?"\n#ifndef HAS_UNIFORM_u_"+i+"\nuniform lowp float u_"+i+"_t;\nattribute "+r+" "+a+" a_"+i+";\nvarying "+r+" "+n+" "+i+";\n#else\nuniform "+r+" "+n+" u_"+i+";\n#endif\n":"vec4"===o?"\n#ifndef HAS_UNIFORM_u_"+i+"\n "+i+" = a_"+i+";\n#else\n "+r+" "+n+" "+i+" = u_"+i+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+i+"\n "+i+" = unpack_mix_"+o+"(a_"+i+", u_"+i+"_t);\n#else\n "+r+" "+n+" "+i+" = u_"+i+";\n#endif\n":"define"===e?"\n#ifndef HAS_UNIFORM_u_"+i+"\nuniform lowp float u_"+i+"_t;\nattribute "+r+" "+a+" a_"+i+";\n#else\nuniform "+r+" "+n+" u_"+i+";\n#endif\n":"vec4"===o?"\n#ifndef HAS_UNIFORM_u_"+i+"\n "+r+" "+n+" "+i+" = a_"+i+";\n#else\n "+r+" "+n+" "+i+" = u_"+i+";\n#endif\n":"\n#ifndef HAS_UNIFORM_u_"+i+"\n "+r+" "+n+" "+i+" = unpack_mix_"+o+"(a_"+i+", u_"+i+"_t);\n#else\n "+r+" "+n+" "+i+" = u_"+i+";\n#endif\n"})),staticAttributes:n,staticUniforms:o}}var _r=Object.freeze({__proto__:null,prelude:Ze,background:Ye,backgroundPattern:Xe,circle:$e,clippingMask:Ke,heatmap:Je,heatmapTexture:Qe,collisionBox:tr,collisionCircle:er,debug:rr,fill:nr,fillOutline:ir,fillOutlinePattern:ar,fillPattern:or,fillExtrusion:sr,fillExtrusionPattern:lr,hillshadePrepare:cr,hillshade:ur,line:hr,lineGradient:pr,linePattern:fr,lineSDF:dr,raster:mr,symbolIcon:gr,symbolSDF:yr,symbolTextAndIcon:vr}),br=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};function wr(t){for(var e=[],r=0;r>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}Tr.prototype.draw=function(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m){var g,y=t.gl;if(!this.failedToCreate){for(var v in t.program.set(this.program),t.setDepthMode(r),t.setStencilMode(n),t.setColorMode(i),t.setCullFace(a),this.fixedUniforms)this.fixedUniforms[v].set(o[v]);f&&f.setUniforms(t,this.binderUniforms,h,{zoom:p});for(var x=(g={},g[y.LINES]=2,g[y.TRIANGLES]=3,g[y.LINE_STRIP]=1,g)[e],_=0,b=u.get();_0?1/(1-t):1+t}function Zr(t){return t>0?1-1/(1.001-t):-t}var Yr,Xr=function(t,e,r,n,i,a,o,s,l,c){var u=i.transform;return{u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:u.cameraToCenterDistance,u_pitch:u.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:u.width/u.height,u_fade_change:i.options.fadeDuration?i.symbolFadeChange:1,u_matrix:a,u_label_plane_matrix:o,u_coord_matrix:s,u_is_text:+l,u_pitch_with_map:+n,u_texsize:c,u_texture:0}},$r=function(e,r,n,i,a,o,s,l,c,u,h){var p=a.transform;return t.extend(Xr(e,r,n,i,a,o,s,l,c,u),{u_gamma_scale:i?Math.cos(p._pitch)*p.cameraToCenterDistance:1,u_device_pixel_ratio:t.browser.devicePixelRatio,u_is_halo:+h})},Kr=function(e,r,n,i,a,o,s,l,c,u){return t.extend($r(e,r,n,i,a,o,s,l,!0,c,!0),{u_texsize_icon:u,u_texture_icon:1})},Jr=function(t,e,r){return{u_matrix:t,u_opacity:e,u_color:r}},Qr=function(e,r,n,i,a,o){return t.extend(function(t,e,r,n){var i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),o=r.imageManager.getPixelSize(),s=o.width,l=o.height,c=Math.pow(2,n.tileID.overscaledZ),u=n.tileSize*Math.pow(2,r.transform.tileZoom)/c,h=u*(n.tileID.canonical.x+n.tileID.wrap*c),p=u*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[s,l],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/de(n,1,r.transform.tileZoom),u_pixel_coord_upper:[h>>16,p>>16],u_pixel_coord_lower:[65535&h,65535&p]}}(i,o,n,a),{u_matrix:e,u_opacity:r})},tn={fillExtrusion:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fillExtrusionPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_lightpos:new t.Uniform3f(e,r.u_lightpos),u_lightintensity:new t.Uniform1f(e,r.u_lightintensity),u_lightcolor:new t.Uniform3f(e,r.u_lightcolor),u_vertical_gradient:new t.Uniform1f(e,r.u_vertical_gradient),u_height_factor:new t.Uniform1f(e,r.u_height_factor),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade),u_opacity:new t.Uniform1f(e,r.u_opacity)}},fill:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},fillPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},fillOutline:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world)}},fillOutlinePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_texsize:new t.Uniform2f(e,r.u_texsize),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},circle:function(e,r){return{u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_scale_with_map:new t.Uniform1i(e,r.u_scale_with_map),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},collisionBox:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pixels_to_tile_units:new t.Uniform1f(e,r.u_pixels_to_tile_units),u_extrude_scale:new t.Uniform2f(e,r.u_extrude_scale),u_overscale_factor:new t.Uniform1f(e,r.u_overscale_factor)}},collisionCircle:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_inv_matrix:new t.UniformMatrix4f(e,r.u_inv_matrix),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_viewport_size:new t.Uniform2f(e,r.u_viewport_size)}},debug:function(e,r){return{u_color:new t.UniformColor(e,r.u_color),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_overlay:new t.Uniform1i(e,r.u_overlay),u_overlay_scale:new t.Uniform1f(e,r.u_overlay_scale)}},clippingMask:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmap:function(e,r){return{u_extrude_scale:new t.Uniform1f(e,r.u_extrude_scale),u_intensity:new t.Uniform1f(e,r.u_intensity),u_matrix:new t.UniformMatrix4f(e,r.u_matrix)}},heatmapTexture:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_world:new t.Uniform2f(e,r.u_world),u_image:new t.Uniform1i(e,r.u_image),u_color_ramp:new t.Uniform1i(e,r.u_color_ramp),u_opacity:new t.Uniform1f(e,r.u_opacity)}},hillshade:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_latrange:new t.Uniform2f(e,r.u_latrange),u_light:new t.Uniform2f(e,r.u_light),u_shadow:new t.UniformColor(e,r.u_shadow),u_highlight:new t.UniformColor(e,r.u_highlight),u_accent:new t.UniformColor(e,r.u_accent)}},hillshadePrepare:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_image:new t.Uniform1i(e,r.u_image),u_dimension:new t.Uniform2f(e,r.u_dimension),u_zoom:new t.Uniform1f(e,r.u_zoom),u_unpack:new t.Uniform4f(e,r.u_unpack)}},line:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels)}},lineGradient:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_image:new t.Uniform1i(e,r.u_image),u_image_height:new t.Uniform1f(e,r.u_image_height)}},linePattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_texsize:new t.Uniform2f(e,r.u_texsize),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_image:new t.Uniform1i(e,r.u_image),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_scale:new t.Uniform3f(e,r.u_scale),u_fade:new t.Uniform1f(e,r.u_fade)}},lineSDF:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_ratio:new t.Uniform1f(e,r.u_ratio),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_units_to_pixels:new t.Uniform2f(e,r.u_units_to_pixels),u_patternscale_a:new t.Uniform2f(e,r.u_patternscale_a),u_patternscale_b:new t.Uniform2f(e,r.u_patternscale_b),u_sdfgamma:new t.Uniform1f(e,r.u_sdfgamma),u_image:new t.Uniform1i(e,r.u_image),u_tex_y_a:new t.Uniform1f(e,r.u_tex_y_a),u_tex_y_b:new t.Uniform1f(e,r.u_tex_y_b),u_mix:new t.Uniform1f(e,r.u_mix)}},raster:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_tl_parent:new t.Uniform2f(e,r.u_tl_parent),u_scale_parent:new t.Uniform1f(e,r.u_scale_parent),u_buffer_scale:new t.Uniform1f(e,r.u_buffer_scale),u_fade_t:new t.Uniform1f(e,r.u_fade_t),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image0:new t.Uniform1i(e,r.u_image0),u_image1:new t.Uniform1i(e,r.u_image1),u_brightness_low:new t.Uniform1f(e,r.u_brightness_low),u_brightness_high:new t.Uniform1f(e,r.u_brightness_high),u_saturation_factor:new t.Uniform1f(e,r.u_saturation_factor),u_contrast_factor:new t.Uniform1f(e,r.u_contrast_factor),u_spin_weights:new t.Uniform3f(e,r.u_spin_weights)}},symbolIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture)}},symbolSDF:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texture:new t.Uniform1i(e,r.u_texture),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},symbolTextAndIcon:function(e,r){return{u_is_size_zoom_constant:new t.Uniform1i(e,r.u_is_size_zoom_constant),u_is_size_feature_constant:new t.Uniform1i(e,r.u_is_size_feature_constant),u_size_t:new t.Uniform1f(e,r.u_size_t),u_size:new t.Uniform1f(e,r.u_size),u_camera_to_center_distance:new t.Uniform1f(e,r.u_camera_to_center_distance),u_pitch:new t.Uniform1f(e,r.u_pitch),u_rotate_symbol:new t.Uniform1i(e,r.u_rotate_symbol),u_aspect_ratio:new t.Uniform1f(e,r.u_aspect_ratio),u_fade_change:new t.Uniform1f(e,r.u_fade_change),u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_label_plane_matrix:new t.UniformMatrix4f(e,r.u_label_plane_matrix),u_coord_matrix:new t.UniformMatrix4f(e,r.u_coord_matrix),u_is_text:new t.Uniform1i(e,r.u_is_text),u_pitch_with_map:new t.Uniform1i(e,r.u_pitch_with_map),u_texsize:new t.Uniform2f(e,r.u_texsize),u_texsize_icon:new t.Uniform2f(e,r.u_texsize_icon),u_texture:new t.Uniform1i(e,r.u_texture),u_texture_icon:new t.Uniform1i(e,r.u_texture_icon),u_gamma_scale:new t.Uniform1f(e,r.u_gamma_scale),u_device_pixel_ratio:new t.Uniform1f(e,r.u_device_pixel_ratio),u_is_halo:new t.Uniform1i(e,r.u_is_halo)}},background:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_color:new t.UniformColor(e,r.u_color)}},backgroundPattern:function(e,r){return{u_matrix:new t.UniformMatrix4f(e,r.u_matrix),u_opacity:new t.Uniform1f(e,r.u_opacity),u_image:new t.Uniform1i(e,r.u_image),u_pattern_tl_a:new t.Uniform2f(e,r.u_pattern_tl_a),u_pattern_br_a:new t.Uniform2f(e,r.u_pattern_br_a),u_pattern_tl_b:new t.Uniform2f(e,r.u_pattern_tl_b),u_pattern_br_b:new t.Uniform2f(e,r.u_pattern_br_b),u_texsize:new t.Uniform2f(e,r.u_texsize),u_mix:new t.Uniform1f(e,r.u_mix),u_pattern_size_a:new t.Uniform2f(e,r.u_pattern_size_a),u_pattern_size_b:new t.Uniform2f(e,r.u_pattern_size_b),u_scale_a:new t.Uniform1f(e,r.u_scale_a),u_scale_b:new t.Uniform1f(e,r.u_scale_b),u_pixel_coord_upper:new t.Uniform2f(e,r.u_pixel_coord_upper),u_pixel_coord_lower:new t.Uniform2f(e,r.u_pixel_coord_lower),u_tile_units_to_pixels:new t.Uniform1f(e,r.u_tile_units_to_pixels)}}};function en(e,r,n,i,a,o,s){for(var l=e.context,c=l.gl,u=e.useProgram("collisionBox"),h=[],p=0,f=0,d=0;d0){var b=t.create(),w=v;t.mul(b,y.placementInvProjMatrix,e.transform.glCoordMatrix),t.mul(b,b,y.placementViewportMatrix),h.push({circleArray:_,circleOffset:f,transform:w,invTransform:b}),f=p+=_.length/4}x&&u.draw(l,c.LINES,kt.disabled,St.disabled,e.colorModeForRenderPass(),Ct.disabled,Pr(v,e.transform,g),n.id,x.layoutVertexBuffer,x.indexBuffer,x.segments,null,e.transform.zoom,null,null,x.collisionVertexBuffer)}}if(s&&h.length){var T=e.useProgram("collisionCircle"),A=new t.StructArrayLayout2f1f2i16;A.resize(4*p),A._trim();for(var k=0,M=0,S=h;M=0&&(m[y.associatedIconIndex]={shiftedAnchor:S,angle:E})}else ue(y.numGlyphs,f)}if(h){d.clear();for(var I=e.icon.placedSymbolArray,L=0;L0){var s=t.browser.now(),l=(s-e.timeAdded)/o,c=r?(s-r.timeAdded)/o:-1,u=n.getSource(),h=a.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),p=!r||Math.abs(r.tileID.overscaledZ-h)>Math.abs(e.tileID.overscaledZ-h),f=p&&e.refreshedUponExpiration?1:t.clamp(p?l:1-c,0,1);return e.refreshedUponExpiration&&l>=1&&(e.refreshedUponExpiration=!1),r?{opacity:1,mix:1-f}:{opacity:f,mix:0}}return{opacity:1,mix:0}}var dn=new t.Color(1,0,0,1),mn=new t.Color(0,1,0,1),gn=new t.Color(0,0,1,1),yn=new t.Color(1,0,1,1),vn=new t.Color(0,1,1,1);function xn(t,e,r,n){bn(t,0,e+r/2,t.transform.width,r,n)}function _n(t,e,r,n){bn(t,e-r/2,0,r,t.transform.height,n)}function bn(e,r,n,i,a,o){var s=e.context,l=s.gl;l.enable(l.SCISSOR_TEST),l.scissor(r*t.browser.devicePixelRatio,n*t.browser.devicePixelRatio,i*t.browser.devicePixelRatio,a*t.browser.devicePixelRatio),s.clear({color:o}),l.disable(l.SCISSOR_TEST)}function wn(e,r,n){var i=e.context,a=i.gl,o=n.posMatrix,s=e.useProgram("debug"),l=kt.disabled,c=St.disabled,u=e.colorModeForRenderPass(),h="$debug";i.activeTexture.set(a.TEXTURE0),e.emptyTexture.bind(a.LINEAR,a.CLAMP_TO_EDGE),s.draw(i,a.LINE_STRIP,l,c,u,Ct.disabled,Dr(o,t.Color.red),h,e.debugBuffer,e.tileBorderIndexBuffer,e.debugSegments);var p=r.getTileByID(n.key).latestRawTileData,f=p&&p.byteLength||0,d=Math.floor(f/1024),m=r.getTile(n).tileSize,g=512/Math.min(m,512)*(n.overscaledZ/e.transform.zoom)*.5,y=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(y+=" => "+n.overscaledZ),function(t,e){t.initDebugOverlayCanvas();var r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext("2d");i.clearRect(0,0,r.width,r.height),i.shadowColor="white",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle="white",i.textBaseline="top",i.font="bold 36px Open Sans, sans-serif",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(e,y+" "+d+"kb"),s.draw(i,a.TRIANGLES,l,c,Et.alphaBlended,Ct.disabled,Dr(o,t.Color.transparent,g),h,e.debugBuffer,e.quadTriangleIndexBuffer,e.debugSegments)}var Tn={symbol:function(e,r,n,i,a){if("translucent"===e.renderPass){var o=St.disabled,s=e.colorModeForRenderPass();n.layout.get("text-variable-anchor")&&function(e,r,n,i,a,o,s){for(var l=r.transform,c="map"===a,u="map"===o,h=0,p=e;h256&&this.clearStencil(),r.setColorMode(Et.disabled),r.setDepthMode(kt.disabled);var i=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var a=0,o=e;a256&&this.clearStencil();var t=this.nextStencilID++,e=this.context.gl;return new St({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)},An.prototype.stencilModeForClipping=function(t){var e=this.context.gl;return new St({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)},An.prototype.stencilConfigForOverlap=function(t){var e,r=this.context.gl,n=t.sort((function(t,e){return e.overscaledZ-t.overscaledZ})),i=n[n.length-1].overscaledZ,a=n[0].overscaledZ-i+1;if(a>1){this.currentStencilSource=void 0,this.nextStencilID+a>256&&this.clearStencil();for(var o={},s=0;s=0;this.currentLayer--){var w=this.style._layers[i[this.currentLayer]],T=a[w.source],A=u[w.source];this._renderTileClippingMasks(w,A),this.renderLayer(this,T,w,A)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer0?e.pop():null},An.prototype.isPatternMissing=function(t){if(!t)return!1;if(!t.from||!t.to)return!0;var e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r},An.prototype.useProgram=function(t,e){this.cache=this.cache||{};var r=""+t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[r]||(this.cache[r]=new Tr(this.context,t,_r[t],e,tn[t],this._showOverdrawInspector)),this.cache[r]},An.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},An.prototype.setBaseState=function(){var t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)},An.prototype.initDebugOverlayCanvas=function(){if(null==this.debugOverlayCanvas){this.debugOverlayCanvas=t.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var e=this.context.gl;this.debugOverlayTexture=new t.Texture(this.context,this.debugOverlayCanvas,e.RGBA)}},An.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var kn=function(t,e){this.points=t,this.planes=e};kn.fromInvProjectionMatrix=function(e,r,n){var i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((function(r){return t.transformMat4([],r,e)})).map((function(e){return t.scale$1([],e,1/e[3]/r*i)})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((function(e){var r=t.sub([],a[e[0]],a[e[1]]),n=t.sub([],a[e[2]],a[e[1]]),i=t.normalize([],t.cross([],r,n)),o=-t.dot(i,a[e[1]]);return i.concat(o)}));return new kn(a,o)};var Mn=function(e,r){this.min=e,this.max=r,this.center=t.scale$2([],t.add([],this.min,this.max),.5)};Mn.prototype.quadrant=function(e){for(var r=[e%2==0,e<2],n=t.clone$2(this.min),i=t.clone$2(this.max),a=0;a=0;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(var l=0;l<3;l++){for(var c=Number.MAX_VALUE,u=-Number.MAX_VALUE,h=0;hthis.max[l]-this.min[l])return 0}return 1};var Sn=function(t,e,r,n){if(void 0===t&&(t=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===n&&(n=0),isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=r,this.right=n};Sn.prototype.interpolate=function(e,r,n){return null!=r.top&&null!=e.top&&(this.top=t.number(e.top,r.top,n)),null!=r.bottom&&null!=e.bottom&&(this.bottom=t.number(e.bottom,r.bottom,n)),null!=r.left&&null!=e.left&&(this.left=t.number(e.left,r.left,n)),null!=r.right&&null!=e.right&&(this.right=t.number(e.right,r.right,n)),this},Sn.prototype.getCenter=function(e,r){var n=t.clamp((this.left+e-this.right)/2,0,e),i=t.clamp((this.top+r-this.bottom)/2,0,r);return new t.Point(n,i)},Sn.prototype.equals=function(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right},Sn.prototype.clone=function(){return new Sn(this.top,this.bottom,this.left,this.right)},Sn.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var En=function(e,r,n,i,a){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=void 0===a||a,this._minZoom=e||0,this._maxZoom=r||22,this._minPitch=n??0,this._maxPitch=i??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Sn,this._posMatrixCache={},this._alignedPosMatrixCache={}},Cn={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};En.prototype.clone=function(){var t=new En(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.tileSize=this.tileSize,t.latRange=this.latRange,t.width=this.width,t.height=this.height,t._center=this._center,t.zoom=this.zoom,t.angle=this.angle,t._fov=this._fov,t._pitch=this._pitch,t._unmodified=this._unmodified,t._edgeInsets=this._edgeInsets.clone(),t._calcMatrices(),t},Cn.minZoom.get=function(){return this._minZoom},Cn.minZoom.set=function(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))},Cn.maxZoom.get=function(){return this._maxZoom},Cn.maxZoom.set=function(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))},Cn.minPitch.get=function(){return this._minPitch},Cn.minPitch.set=function(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))},Cn.maxPitch.get=function(){return this._maxPitch},Cn.maxPitch.set=function(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))},Cn.renderWorldCopies.get=function(){return this._renderWorldCopies},Cn.renderWorldCopies.set=function(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t},Cn.worldSize.get=function(){return this.tileSize*this.scale},Cn.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Cn.size.get=function(){return new t.Point(this.width,this.height)},Cn.bearing.get=function(){return-this.angle/Math.PI*180},Cn.bearing.set=function(e){var r=-t.wrap(e,-180,180)*Math.PI/180;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=t.create$2(),t.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Cn.pitch.get=function(){return this._pitch/Math.PI*180},Cn.pitch.set=function(e){var r=t.clamp(e,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())},Cn.fov.get=function(){return this._fov/Math.PI*180},Cn.fov.set=function(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())},Cn.zoom.get=function(){return this._zoom},Cn.zoom.set=function(t){var e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.scale=this.zoomScale(e),this.tileZoom=Math.floor(e),this.zoomFraction=e-this.tileZoom,this._constrain(),this._calcMatrices())},Cn.center.get=function(){return this._center},Cn.center.set=function(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())},Cn.padding.get=function(){return this._edgeInsets.toJSON()},Cn.padding.set=function(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())},Cn.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},En.prototype.isPaddingEqual=function(t){return this._edgeInsets.equals(t)},En.prototype.interpolatePadding=function(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()},En.prototype.coveringZoomLevel=function(t){var e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)},En.prototype.getVisibleUnwrappedCoordinates=function(e){var r=[new t.UnwrappedTileID(0,e)];if(this._renderWorldCopies)for(var n=this.pointCoordinate(new t.Point(0,0)),i=this.pointCoordinate(new t.Point(this.width,0)),a=this.pointCoordinate(new t.Point(this.width,this.height)),o=this.pointCoordinate(new t.Point(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=s-1;c<=l+1;c++)0!==c&&r.push(new t.UnwrappedTileID(c,e));return r},En.prototype.coveringTiles=function(e){var r=this.coveringZoomLevel(e),n=r;if(void 0!==e.minzoom&&re.maxzoom&&(r=e.maxzoom);var i=t.MercatorCoordinate.fromLngLat(this.center),a=Math.pow(2,r),o=[a*i.x,a*i.y,0],s=kn.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,r),l=e.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(l=r);var c=function(t){return{aabb:new Mn([t*a,0,0],[(t+1)*a,a,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}},u=[],h=[],p=r,f=e.reparseOverscaled?n:r;if(this._renderWorldCopies)for(var d=1;d<=3;d++)u.push(c(-d)),u.push(c(d));for(u.push(c(0));u.length>0;){var m=u.pop(),g=m.x,y=m.y,v=m.fullyVisible;if(!v){var x=m.aabb.intersects(s);if(0===x)continue;v=2===x}var _=m.aabb.distanceX(o),b=m.aabb.distanceY(o),w=Math.max(Math.abs(_),Math.abs(b)),T=3+(1<T&&m.zoom>=l)h.push({tileID:new t.OverscaledTileID(m.zoom===p?f:m.zoom,m.wrap,m.zoom,g,y),distanceSq:t.sqrLen([o[0]-.5-g,o[1]-.5-y])});else for(var A=0;A<4;A++){var k=(g<<1)+A%2,M=(y<<1)+(A>>1);u.push({aabb:m.aabb.quadrant(A),zoom:m.zoom+1,x:k,y:M,wrap:m.wrap,fullyVisible:v})}}return h.sort((function(t,e){return t.distanceSq-e.distanceSq})).map((function(t){return t.tileID}))},En.prototype.resize=function(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()},Cn.unmodified.get=function(){return this._unmodified},En.prototype.zoomScale=function(t){return Math.pow(2,t)},En.prototype.scaleZoom=function(t){return Math.log(t)/Math.LN2},En.prototype.project=function(e){var r=t.clamp(e.lat,-this.maxValidLatitude,this.maxValidLatitude);return new t.Point(t.mercatorXfromLng(e.lng)*this.worldSize,t.mercatorYfromLat(r)*this.worldSize)},En.prototype.unproject=function(e){return new t.MercatorCoordinate(e.x/this.worldSize,e.y/this.worldSize).toLngLat()},Cn.point.get=function(){return this.project(this.center)},En.prototype.setLocationAtPoint=function(e,r){var n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(e),o=new t.MercatorCoordinate(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())},En.prototype.locationPoint=function(t){return this.coordinatePoint(this.locationCoordinate(t))},En.prototype.pointLocation=function(t){return this.coordinateLocation(this.pointCoordinate(t))},En.prototype.locationCoordinate=function(e){return t.MercatorCoordinate.fromLngLat(e)},En.prototype.coordinateLocation=function(t){return t.toLngLat()},En.prototype.pointCoordinate=function(e){var r=[e.x,e.y,0,1],n=[e.x,e.y,1,1];t.transformMat4(r,r,this.pixelMatrixInverse),t.transformMat4(n,n,this.pixelMatrixInverse);var i=r[3],a=n[3],o=r[0]/i,s=n[0]/a,l=r[1]/i,c=n[1]/a,u=r[2]/i,h=n[2]/a,p=u===h?0:(0-u)/(h-u);return new t.MercatorCoordinate(t.number(o,s,p)/this.worldSize,t.number(l,c,p)/this.worldSize)},En.prototype.coordinatePoint=function(e){var r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix),new t.Point(r[0]/r[3],r[1]/r[3])},En.prototype.getBounds=function(){return(new t.LngLatBounds).extend(this.pointLocation(new t.Point(0,0))).extend(this.pointLocation(new t.Point(this.width,0))).extend(this.pointLocation(new t.Point(this.width,this.height))).extend(this.pointLocation(new t.Point(0,this.height)))},En.prototype.getMaxBounds=function(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new t.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null},En.prototype.setMaxBounds=function(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},En.prototype.calculatePosMatrix=function(e,r){void 0===r&&(r=!1);var n=e.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];var a=e.canonical,o=this.worldSize/this.zoomScale(a.z),s=a.x+Math.pow(2,a.z)*e.wrap,l=t.identity(new Float64Array(16));return t.translate(l,l,[s*o,a.y*o,0]),t.scale(l,l,[o/t.EXTENT,o/t.EXTENT,1]),t.multiply(l,r?this.alignedProjMatrix:this.projMatrix,l),i[n]=new Float32Array(l),i[n]},En.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},En.prototype._constrain=function(){if(this.center&&this.width&&this.height&&!this._constraining){this._constraining=!0;var e,r,n,i,a=-90,o=90,s=-180,l=180,c=this.size,u=this._unmodified;if(this.latRange){var h=this.latRange;a=t.mercatorYfromLat(h[1])*this.worldSize,e=(o=t.mercatorYfromLat(h[0])*this.worldSize)-ao&&(i=o-g)}if(this.lngRange){var y=f.x,v=c.x/2;y-vl&&(n=l-v)}(void 0!==n||void 0!==i)&&(this.center=this.unproject(new t.Point(void 0!==n?n:f.x,void 0!==i?i:f.y))),this._unmodified=u,this._constraining=!1}},En.prototype._calcMatrices=function(){if(this.height){var e=this._fov/2,r=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(e)*this.height;var n=Math.PI/2+this._pitch,i=this._fov*(.5+r.y/this.height),a=Math.sin(i)*this.cameraToCenterDistance/Math.sin(t.clamp(Math.PI-n-i,.01,Math.PI-.01)),o=this.point,s=o.x,l=o.y,c=1.01*(Math.cos(Math.PI/2-this._pitch)*a+this.cameraToCenterDistance),u=this.height/50,h=new Float64Array(16);t.perspective(h,this._fov,this.width/this.height,u,c),h[8]=2*-r.x/this.width,h[9]=2*r.y/this.height,t.scale(h,h,[1,-1,1]),t.translate(h,h,[0,0,-this.cameraToCenterDistance]),t.rotateX(h,h,this._pitch),t.rotateZ(h,h,this.angle),t.translate(h,h,[-s,-l,0]),this.mercatorMatrix=t.scale([],h,[this.worldSize,this.worldSize,this.worldSize]),t.scale(h,h,[1,1,t.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=h,this.invProjMatrix=t.invert([],this.projMatrix);var p=this.width%2/2,f=this.height%2/2,d=Math.cos(this.angle),m=Math.sin(this.angle),g=s-Math.round(s)+d*p+m*f,y=l-Math.round(l)+d*f+m*p,v=new Float64Array(h);if(t.translate(v,v,[g>.5?g-1:g,y>.5?y-1:y,0]),this.alignedProjMatrix=v,h=t.create(),t.scale(h,h,[this.width/2,-this.height/2,1]),t.translate(h,h,[1,-1,0]),this.labelPlaneMatrix=h,h=t.create(),t.scale(h,h,[1,-1,1]),t.translate(h,h,[-1,-1,0]),t.scale(h,h,[2/this.width,2/this.height,1]),this.glCoordMatrix=h,this.pixelMatrix=t.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),!(h=t.invert(new Float64Array(16),this.pixelMatrix)))throw new Error("failed to invert matrix");this.pixelMatrixInverse=h,this._posMatrixCache={},this._alignedPosMatrixCache={}}},En.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var e=this.pointCoordinate(new t.Point(0,0)),r=[e.x*this.worldSize,e.y*this.worldSize,0,1];return t.transformMat4(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance},En.prototype.getCameraPoint=function(){var e=this._pitch,r=Math.tan(e)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.Point(0,r))},En.prototype.getCameraQueryGeometry=function(e){var r=this.getCameraPoint();if(1===e.length)return[e[0],r];for(var n=r.x,i=r.y,a=r.x,o=r.y,s=0,l=e;s=3&&!t.some((function(t){return isNaN(t)}))){var e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},In.prototype._updateHashUnthrottled=function(){var e=t.window.location.href.replace(/(#.+)?$/,this.getHashString());try{t.window.history.replaceState(t.window.history.state,null,e)}catch{}};var Ln={linearity:.3,easing:t.bezier(0,0,.3,1)},Pn=t.extend({deceleration:2500,maxSpeed:1400},Ln),zn=t.extend({deceleration:20,maxSpeed:1400},Ln),Dn=t.extend({deceleration:1e3,maxSpeed:360},Ln),On=t.extend({deceleration:1e3,maxSpeed:90},Ln),Rn=function(t){this._map=t,this.clear()};function Fn(t,e){(!t.duration||t.duration0&&r-e[0].time>160;)e.shift()},Rn.prototype._onMoveEnd=function(e){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var r={zoom:0,bearing:0,pitch:0,pan:new t.Point(0,0),pinchAround:void 0,around:void 0},n=0,i=this._inertiaBuffer;n=this._clickTolerance||this._map.fire(new jn(t.type,this._map,t))},Vn.prototype.dblclick=function(t){return this._firePreventable(new jn(t.type,this._map,t))},Vn.prototype.mouseover=function(t){this._map.fire(new jn(t.type,this._map,t))},Vn.prototype.mouseout=function(t){this._map.fire(new jn(t.type,this._map,t))},Vn.prototype.touchstart=function(t){return this._firePreventable(new Nn(t.type,this._map,t))},Vn.prototype.touchmove=function(t){this._map.fire(new Nn(t.type,this._map,t))},Vn.prototype.touchend=function(t){this._map.fire(new Nn(t.type,this._map,t))},Vn.prototype.touchcancel=function(t){this._map.fire(new Nn(t.type,this._map,t))},Vn.prototype._firePreventable=function(t){if(this._map.fire(t),t.defaultPrevented)return{}},Vn.prototype.isEnabled=function(){return!0},Vn.prototype.isActive=function(){return!1},Vn.prototype.enable=function(){},Vn.prototype.disable=function(){};var qn=function(t){this._map=t};qn.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},qn.prototype.mousemove=function(t){this._map.fire(new jn(t.type,this._map,t))},qn.prototype.mousedown=function(){this._delayContextMenu=!0},qn.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new jn("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},qn.prototype.contextmenu=function(t){this._delayContextMenu?this._contextMenuEvent=t:this._map.fire(new jn(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()},qn.prototype.isEnabled=function(){return!0},qn.prototype.isActive=function(){return!1},qn.prototype.enable=function(){},qn.prototype.disable=function(){};var Hn=function(t,e){this._map=t,this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1};function Gn(t,e){for(var r={},n=0;nthis.numTouches)&&(this.aborted=!0),!this.aborted&&(void 0===this.startTime&&(this.startTime=e.timeStamp),n.length===this.numTouches&&(this.centroid=function(e){for(var r=new t.Point(0,0),n=0,i=e;n30)&&(this.aborted=!0)}}},Wn.prototype.touchend=function(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){var n=!this.aborted&&this.centroid;if(this.reset(),n)return n}};var Zn=function(t){this.singleTap=new Wn(t),this.numTaps=t.numTaps,this.reset()};Zn.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},Zn.prototype.touchstart=function(t,e,r){this.singleTap.touchstart(t,e,r)},Zn.prototype.touchmove=function(t,e,r){this.singleTap.touchmove(t,e,r)},Zn.prototype.touchend=function(t,e,r){var n=this.singleTap.touchend(t,e,r);if(n){var i=t.timeStamp-this.lastTime<500,a=!this.lastTap||this.lastTap.dist(n)<30;if((!i||!a)&&this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}};var Yn=function(){this._zoomIn=new Zn({numTouches:1,numTaps:2}),this._zoomOut=new Zn({numTouches:2,numTaps:1}),this.reset()};Yn.prototype.reset=function(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()},Yn.prototype.touchstart=function(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)},Yn.prototype.touchmove=function(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)},Yn.prototype.touchend=function(t,e,r){var n=this,i=this._zoomIn.touchend(t,e,r),a=this._zoomOut.touchend(t,e,r);return i?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()+1,around:e.unproject(i)},{originalEvent:t})}}):a?(this._active=!0,t.preventDefault(),setTimeout((function(){return n.reset()}),0),{cameraAnimation:function(e){return e.easeTo({duration:300,zoom:e.getZoom()-1,around:e.unproject(a)},{originalEvent:t})}}):void 0},Yn.prototype.touchcancel=function(){this.reset()},Yn.prototype.enable=function(){this._enabled=!0},Yn.prototype.disable=function(){this._enabled=!1,this.reset()},Yn.prototype.isEnabled=function(){return this._enabled},Yn.prototype.isActive=function(){return this._active};var Xn={0:1,2:2},$n=function(t){this.reset(),this._clickTolerance=t.clickTolerance||1};$n.prototype.reset=function(){this._active=!1,this._moved=!1,delete this._lastPoint,delete this._eventButton},$n.prototype._correctButton=function(t,e){return!1},$n.prototype._move=function(t,e){return{}},$n.prototype.mousedown=function(t,e){if(!this._lastPoint){var n=r.mouseButton(t);this._correctButton(t,n)&&(this._lastPoint=e,this._eventButton=n)}},$n.prototype.mousemoveWindow=function(t,e){var r=this._lastPoint;if(r){if(t.preventDefault(),function(t,e){var r=Xn[e];return void 0===t.buttons||(t.buttons&r)!==r}(t,this._eventButton))return void this.reset();if(this._moved||!(e.dist(r)0&&(this._active=!0);var i=Gn(n,r),a=new t.Point(0,0),o=new t.Point(0,0),s=0;for(var l in i){var c=i[l],u=this._touches[l];u&&(a._add(c),o._add(c.sub(u)),s++,i[l]=c)}if(this._touches=i,!(sMath.abs(t.x)}var li=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.reset=function(){t.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},e.prototype._start=function(t){this._lastPoints=t,si(t[0].sub(t[1]))&&(this._valid=!1)},e.prototype._move=function(t,e,r){var n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid)return this._lastPoints=t,this._active=!0,{pitchDelta:(n.y+i.y)/2*-.5}},e.prototype.gestureBeginsVertically=function(t,e,r){if(void 0!==this._valid)return this._valid;var n=t.mag()>=2,i=e.mag()>=2;if(n||i){if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;var a=t.y>0==e.y>0;return si(t)&&si(e)&&a}},e}(ei),ci={panStep:100,bearingStep:15,pitchStep:10},ui=function(){var t=ci;this._panStep=t.panStep,this._bearingStep=t.bearingStep,this._pitchStep=t.pitchStep,this._rotationDisabled=!1};function hi(t){return t*(2-t)}ui.prototype.reset=function(){this._active=!1},ui.prototype.keydown=function(t){var e=this;if(!(t.altKey||t.ctrlKey||t.metaKey)){var r=0,n=0,i=0,a=0,o=0;switch(t.keyCode){case 61:case 107:case 171:case 187:r=1;break;case 189:case 109:case 173:r=-1;break;case 37:t.shiftKey?n=-1:(t.preventDefault(),a=-1);break;case 39:t.shiftKey?n=1:(t.preventDefault(),a=1);break;case 38:t.shiftKey?i=1:(t.preventDefault(),o=-1);break;case 40:t.shiftKey?i=-1:(t.preventDefault(),o=1);break;default:return}return this._rotationDisabled&&(n=0,i=0),{cameraAnimation:function(s){var l=s.getZoom();s.easeTo({duration:300,easeId:"keyboardHandler",easing:hi,zoom:r?Math.round(l)+r*(t.shiftKey?2:1):l,bearing:s.getBearing()+n*e._bearingStep,pitch:s.getPitch()+i*e._pitchStep,offset:[-a*e._panStep,-o*e._panStep],center:s.getCenter()},{originalEvent:t})}}}},ui.prototype.enable=function(){this._enabled=!0},ui.prototype.disable=function(){this._enabled=!1,this.reset()},ui.prototype.isEnabled=function(){return this._enabled},ui.prototype.isActive=function(){return this._active},ui.prototype.disableRotation=function(){this._rotationDisabled=!0},ui.prototype.enableRotation=function(){this._rotationDisabled=!1};var pi=4.000244140625,fi=1/450,di=function(e,r){this._map=e,this._el=e.getCanvasContainer(),this._handler=r,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=fi,t.bindAll(["_onTimeout"],this)};di.prototype.setZoomRate=function(t){this._defaultZoomRate=t},di.prototype.setWheelZoomRate=function(t){this._wheelZoomRate=t},di.prototype.isEnabled=function(){return!!this._enabled},di.prototype.isActive=function(){return!!this._active||void 0!==this._finishTimeout},di.prototype.isZooming=function(){return!!this._zooming},di.prototype.enable=function(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=t&&"center"===t.around)},di.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},di.prototype.wheel=function(e){if(this.isEnabled()){var r=e.deltaMode===t.window.WheelEvent.DOM_DELTA_LINE?40*e.deltaY:e.deltaY,n=t.browser.now(),i=n-(this._lastWheelEventTime||0);this._lastWheelEventTime=n,0!==r&&r%pi==0?this._type="wheel":0!==r&&Math.abs(r)<4?this._type="trackpad":i>400?(this._type=null,this._lastValue=r,this._timeout=setTimeout(this._onTimeout,40,e)):this._type||(this._type=Math.abs(i*r)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,r+=this._lastValue)),e.shiftKey&&r&&(r/=4),this._type&&(this._lastWheelEvent=e,this._delta-=r,this._active||this._start(e)),e.preventDefault()}},di.prototype._onTimeout=function(t){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)},di.prototype._start=function(e){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var n=r.mousePos(this._el,e);this._around=t.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(n)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},di.prototype.renderFrame=function(){var e=this;if(this._frameId&&(this._frameId=null,this.isActive())){var r=this._map.transform;if(0!==this._delta){var n="wheel"===this._type&&Math.abs(this._delta)>pi?this._wheelZoomRate:this._defaultZoomRate,i=2/(1+Math.exp(-Math.abs(this._delta*n)));this._delta<0&&0!==i&&(i=1/i);var a="number"==typeof this._targetZoom?r.zoomScale(this._targetZoom):r.scale;this._targetZoom=Math.min(r.maxZoom,Math.max(r.minZoom,r.scaleZoom(a*i))),"wheel"===this._type&&(this._startZoom=r.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var o,s="number"==typeof this._targetZoom?this._targetZoom:r.zoom,l=this._startZoom,c=this._easing,u=!1;if("wheel"===this._type&&l&&c){var h=Math.min((t.browser.now()-this._lastWheelEventTime)/200,1),p=c(h);o=t.number(l,s,p),h<1?this._frameId||(this._frameId=!0):u=!0}else o=s,u=!0;return this._active=!0,u&&(this._active=!1,this._finishTimeout=setTimeout((function(){e._zooming=!1,e._handler._triggerRenderFrame(),delete e._targetZoom,delete e._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!u,zoomDelta:o-r.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},di.prototype._smoothOutEasing=function(e){var r=t.ease;if(this._prevEase){var n=this._prevEase,i=(t.browser.now()-n.start)/n.duration,a=n.easing(i+.01)-n.easing(i),o=.27/Math.sqrt(a*a+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=t.bezier(o,s,.25,1)}return this._prevEase={start:t.browser.now(),duration:e,easing:r},r},di.prototype.reset=function(){this._active=!1};var mi=function(t,e){this._clickZoom=t,this._tapZoom=e};mi.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},mi.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},mi.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},mi.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var gi=function(){this.reset()};gi.prototype.reset=function(){this._active=!1},gi.prototype.dblclick=function(t,e){return t.preventDefault(),{cameraAnimation:function(r){r.easeTo({duration:300,zoom:r.getZoom()+(t.shiftKey?-1:1),around:r.unproject(e)},{originalEvent:t})}}},gi.prototype.enable=function(){this._enabled=!0},gi.prototype.disable=function(){this._enabled=!1,this.reset()},gi.prototype.isEnabled=function(){return this._enabled},gi.prototype.isActive=function(){return this._active};var yi=function(){this._tap=new Zn({numTouches:1,numTaps:1}),this.reset()};yi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},yi.prototype.touchstart=function(t,e,r){this._swipePoint||(this._tapTime&&t.timeStamp-this._tapTime>500&&this.reset(),this._tapTime?r.length>0&&(this._swipePoint=e[0],this._swipeTouch=r[0].identifier):this._tap.touchstart(t,e,r))},yi.prototype.touchmove=function(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;var n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)},yi.prototype.touchend=function(t,e,r){this._tapTime?this._swipePoint&&0===r.length&&this.reset():this._tap.touchend(t,e,r)&&(this._tapTime=t.timeStamp)},yi.prototype.touchcancel=function(){this.reset()},yi.prototype.enable=function(){this._enabled=!0},yi.prototype.disable=function(){this._enabled=!1,this.reset()},yi.prototype.isEnabled=function(){return this._enabled},yi.prototype.isActive=function(){return this._active};var vi=function(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r};vi.prototype.enable=function(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},vi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},vi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},vi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var xi=function(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r};xi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},xi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},xi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},xi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var _i=function(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0};_i.prototype.enable=function(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},_i.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},_i.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},_i.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},_i.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},_i.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var bi=function(t){return t.zoom||t.drag||t.pitch||t.rotate},wi=function(t){function e(){t.apply(this,arguments)}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e}(t.Event);function Ti(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}var Ai=function(e,n){this._map=e,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Rn(e),this._bearingSnap=n.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(n),t.bindAll(["handleEvent","handleWindowEvent"],this);var i=this._el;this._listeners=[[i,"touchstart",{passive:!0}],[i,"touchmove",{passive:!1}],[i,"touchend",void 0],[i,"touchcancel",void 0],[i,"mousedown",void 0],[i,"mousemove",void 0],[i,"mouseup",void 0],[t.window.document,"mousemove",{capture:!0}],[t.window.document,"mouseup",void 0],[i,"mouseover",void 0],[i,"mouseout",void 0],[i,"dblclick",void 0],[i,"click",void 0],[i,"keydown",{capture:!1}],[i,"keyup",void 0],[i,"wheel",{passive:!1}],[i,"contextmenu",void 0],[t.window,"blur",void 0]];for(var a=0,o=this._listeners;aa?Math.min(2,b):Math.max(.5,b),w=Math.pow(g,1-e),T=i.unproject(x.add(_.mult(e*w)).mult(m));i.setLocationAtPoint(i.renderWorldCopies?T.wrap():T,d)}n._fireMoveEvents(r)}),(function(t){n._afterEase(r,t)}),e),this},r.prototype._prepareEase=function(e,r,n){void 0===n&&(n={}),this._moving=!0,!r&&!n.moving&&this.fire(new t.Event("movestart",e)),this._zooming&&!n.zooming&&this.fire(new t.Event("zoomstart",e)),this._rotating&&!n.rotating&&this.fire(new t.Event("rotatestart",e)),this._pitching&&!n.pitching&&this.fire(new t.Event("pitchstart",e))},r.prototype._fireMoveEvents=function(e){this.fire(new t.Event("move",e)),this._zooming&&this.fire(new t.Event("zoom",e)),this._rotating&&this.fire(new t.Event("rotate",e)),this._pitching&&this.fire(new t.Event("pitch",e))},r.prototype._afterEase=function(e,r){if(!this._easeId||!r||this._easeId!==r){delete this._easeId;var n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new t.Event("zoomend",e)),i&&this.fire(new t.Event("rotateend",e)),a&&this.fire(new t.Event("pitchend",e)),this.fire(new t.Event("moveend",e))}},r.prototype.flyTo=function(e,r){var n=this;if(!e.essential&&t.browser.prefersReducedMotion){var i=t.pick(e,["center","zoom","bearing","pitch","around"]);return this.jumpTo(i,r)}this.stop(),e=t.extend({offset:[0,0],speed:1.2,curve:1.42,easing:t.ease},e);var a=this.transform,o=this.getZoom(),s=this.getBearing(),l=this.getPitch(),c=this.getPadding(),u="zoom"in e?t.clamp(+e.zoom,a.minZoom,a.maxZoom):o,h="bearing"in e?this._normalizeBearing(e.bearing,s):s,p="pitch"in e?+e.pitch:l,f="padding"in e?e.padding:a.padding,d=a.zoomScale(u-o),m=t.Point.convert(e.offset),g=a.centerPoint.add(m),y=a.pointLocation(g),v=t.LngLat.convert(e.center||y);this._normalizeCenter(v);var x=a.project(y),_=a.project(v).sub(x),b=e.curve,w=Math.max(a.width,a.height),T=w/d,A=_.mag();if("minZoom"in e){var k=t.clamp(Math.min(e.minZoom,o,u),a.minZoom,a.maxZoom),M=w/a.zoomScale(k-o);b=Math.sqrt(M/A*2)}var S=b*b;function E(t){var e=(T*T-w*w+(t?-1:1)*S*S*A*A)/(2*(t?T:w)*S*A);return Math.log(Math.sqrt(e*e+1)-e)}function C(t){return(Math.exp(t)-Math.exp(-t))/2}function I(t){return(Math.exp(t)+Math.exp(-t))/2}var L=E(0),P=function(t){return I(L)/I(L+b*t)},z=function(t){return w*((I(L)*function(t){return C(t)/I(t)}(L+b*t)-C(L))/S)/A},D=(E(1)-L)/b;if(Math.abs(A)<1e-6||!isFinite(D)){if(Math.abs(w-T)<1e-6)return this.easeTo(e,r);var O=Te.maxDuration&&(e.duration=0),this._zooming=!0,this._rotating=s!==h,this._pitching=p!==l,this._padding=!a.isPaddingEqual(f),this._prepareEase(r,!1),this._ease((function(e){var i=e*D,d=1/P(i);a.zoom=1===e?u:o+a.scaleZoom(d),n._rotating&&(a.bearing=t.number(s,h,e)),n._pitching&&(a.pitch=t.number(l,p,e)),n._padding&&(a.interpolatePadding(c,f,e),g=a.centerPoint.add(m));var y=1===e?v:a.unproject(x.add(_.mult(z(i))).mult(d));a.setLocationAtPoint(a.renderWorldCopies?y.wrap():y,g),n._fireMoveEvents(r)}),(function(){return n._afterEase(r)}),e),this},r.prototype.isEasing=function(){return!!this._easeFrameId},r.prototype.stop=function(){return this._stop()},r.prototype._stop=function(t,e){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var r=this._onEaseEnd;delete this._onEaseEnd,r.call(this,e)}if(!t){var n=this.handlers;n&&n.stop(!1)}return this},r.prototype._ease=function(e,r,n){!1===n.animate||0===n.duration?(e(1),r()):(this._easeStart=t.browser.now(),this._easeOptions=n,this._onEaseFrame=e,this._onEaseEnd=r,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},r.prototype._renderFrameCallback=function(){var e=Math.min((t.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(e)),e<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},r.prototype._normalizeBearing=function(e,r){e=t.wrap(e,-180,180);var n=Math.abs(e-r);return Math.abs(e-360-r)180?-360:r<-180?360:0}},r}(t.Evented),Mi=function(e){void 0===e&&(e={}),this.options=e,t.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};Mi.prototype.getDefaultPosition=function(){return"bottom-right"},Mi.prototype.onAdd=function(t){var e=this.options&&this.options.compact;return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=r.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=r.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),e&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),void 0===e&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Mi.prototype.onRemove=function(){r.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Mi.prototype._setElementTitle=function(t,e){var r=this._map._getUIString("AttributionControl."+e);t.title=r,t.setAttribute("aria-label",r)},Mi.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},Mi.prototype._updateEditLink=function(){var e=this._editLink;e||(e=this._editLink=this._container.querySelector(".mapbox-improve-map"));var r=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||t.config.ACCESS_TOKEN}];if(e){var n=r.reduce((function(t,e,n){return e.value&&(t+=e.key+"="+e.value+(n=0)return!1;return!0}))).join(" | ");o!==this._attribHTML&&(this._attribHTML=o,t.length?(this._innerContainer.innerHTML=o,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Mi.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var Si=function(){t.bindAll(["_updateLogo"],this),t.bindAll(["_updateCompact"],this)};Si.prototype.onAdd=function(t){this._map=t,this._container=r.create("div","mapboxgl-ctrl");var e=r.create("a","mapboxgl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://www.mapbox.com/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},Si.prototype.onRemove=function(){r.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},Si.prototype.getDefaultPosition=function(){return"bottom-left"},Si.prototype._updateLogo=function(t){(!t||"metadata"===t.sourceDataType)&&(this._container.style.display=this._logoRequired()?"block":"none")},Si.prototype._logoRequired=function(){if(this._map.style){var t=this._map.style.sourceCaches;for(var e in t)if(t[e].getSource().mapbox_logo)return!0;return!1}},Si.prototype._updateCompact=function(){var t=this._container.children;if(t.length){var e=t[0];this._map.getCanvasContainer().offsetWidth<250?e.classList.add("mapboxgl-compact"):e.classList.remove("mapboxgl-compact")}};var Ei=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};Ei.prototype.add=function(t){var e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e},Ei.prototype.remove=function(t){for(var e=this._currentlyRunning,r=0,n=e?this._queue.concat(e):this._queue;re.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=e.minPitch&&null!=e.maxPitch&&e.minPitch>e.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=e.minPitch&&e.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=e.maxPitch&&e.maxPitch>60)throw new Error("maxPitch must be less than or equal to 60");var i=new En(e.minZoom,e.maxZoom,e.minPitch,e.maxPitch,e.renderWorldCopies);if(n.call(this,i,e),this._interactive=e.interactive,this._maxTileCacheSize=e.maxTileCacheSize,this._failIfMajorPerformanceCaveat=e.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=e.preserveDrawingBuffer,this._antialias=e.antialias,this._trackResize=e.trackResize,this._bearingSnap=e.bearingSnap,this._refreshExpiredTiles=e.refreshExpiredTiles,this._fadeDuration=e.fadeDuration,this._crossSourceCollisions=e.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=e.collectResourceTiming,this._renderTaskQueue=new Ei,this._controls=[],this._mapId=t.uniqueId(),this._locale=t.extend({},Ci,e.locale),this._clickTolerance=e.clickTolerance,this._requestManager=new t.RequestManager(e.transformRequest,e.accessToken),"string"==typeof e.container){if(this._container=t.window.document.getElementById(e.container),!this._container)throw new Error("Container '"+e.container+"' not found.")}else{if(!(e.container instanceof Li))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=e.container}if(e.maxBounds&&this.setMaxBounds(e.maxBounds),t.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),void 0===this.painter)throw new Error("Failed to initialize WebGL.");this.on("move",(function(){return r._update(!1)})),this.on("moveend",(function(){return r._update(!1)})),this.on("zoom",(function(){return r._update(!0)})),typeof t.window<"u"&&(t.window.addEventListener("online",this._onWindowOnline,!1),t.window.addEventListener("resize",this._onWindowResize,!1),t.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new Ai(this,e);var a="string"==typeof e.hash&&e.hash||void 0;this._hash=e.hash&&new In(a).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:e.center,zoom:e.zoom,bearing:e.bearing,pitch:e.pitch}),e.bounds&&(this.resize(),this.fitBounds(e.bounds,t.extend({},e.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=e.localIdeographFontFamily,e.style&&this.setStyle(e.style,{localIdeographFontFamily:e.localIdeographFontFamily}),e.attributionControl&&this.addControl(new Mi({customAttribution:e.customAttribution})),this.addControl(new Si,e.logoPosition),this.on("style.load",(function(){r.transform.unmodified&&r.jumpTo(r.style.stylesheet)})),this.on("data",(function(e){r._update("style"===e.dataType),r.fire(new t.Event(e.dataType+"data",e))})),this.on("dataloading",(function(e){r.fire(new t.Event(e.dataType+"dataloading",e))}))}n&&(i.__proto__=n),i.prototype=Object.create(n&&n.prototype),i.prototype.constructor=i;var a={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return i.prototype._getMapId=function(){return this._mapId},i.prototype.addControl=function(e,r){if(void 0===r&&(r=e.getDefaultPosition?e.getDefaultPosition():"top-right"),!e||!e.onAdd)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var n=e.onAdd(this);this._controls.push(e);var i=this._controlPositions[r];return-1!==r.indexOf("bottom")?i.insertBefore(n,i.firstChild):i.appendChild(n),this},i.prototype.removeControl=function(e){if(!e||!e.onRemove)return this.fire(new t.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var r=this._controls.indexOf(e);return r>-1&&this._controls.splice(r,1),e.onRemove(this),this},i.prototype.hasControl=function(t){return this._controls.indexOf(t)>-1},i.prototype.resize=function(e){var r=this._containerDimensions(),n=r[0],i=r[1];this._resizeCanvas(n,i),this.transform.resize(n,i),this.painter.resize(n,i);var a=!this._moving;return a&&(this.stop(),this.fire(new t.Event("movestart",e)).fire(new t.Event("move",e))),this.fire(new t.Event("resize",e)),a&&this.fire(new t.Event("moveend",e)),this},i.prototype.getBounds=function(){return this.transform.getBounds()},i.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},i.prototype.setMaxBounds=function(e){return this.transform.setMaxBounds(t.LngLatBounds.convert(e)),this._update()},i.prototype.setMinZoom=function(t){if((t=t??-2)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")},i.prototype.getMaxZoom=function(){return this.transform.maxZoom},i.prototype.setMinPitch=function(t){if((t=t??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()60)throw new Error("maxPitch must be less than or equal to 60");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")},i.prototype.getMaxPitch=function(){return this.transform.maxPitch},i.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},i.prototype.setRenderWorldCopies=function(t){return this.transform.renderWorldCopies=t,this._update()},i.prototype.project=function(e){return this.transform.locationPoint(t.LngLat.convert(e))},i.prototype.unproject=function(e){return this.transform.pointLocation(t.Point.convert(e))},i.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},i.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},i.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},i.prototype._createDelegatedListener=function(t,e,r){var n,i=this;if("mouseenter"===t||"mouseover"===t){var a=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){var o=i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[];o.length?a||(a=!0,r.call(i,new jn(t,i,n.originalEvent,{features:o}))):a=!1},mouseout:function(){a=!1}}}}if("mouseleave"===t||"mouseout"===t){var o=!1;return{layer:e,listener:r,delegates:{mousemove:function(n){(i.getLayer(e)?i.queryRenderedFeatures(n.point,{layers:[e]}):[]).length?o=!0:o&&(o=!1,r.call(i,new jn(t,i,n.originalEvent)))},mouseout:function(e){o&&(o=!1,r.call(i,new jn(t,i,e.originalEvent)))}}}}return{layer:e,listener:r,delegates:(n={},n[t]=function(t){var n=i.getLayer(e)?i.queryRenderedFeatures(t.point,{layers:[e]}):[];n.length&&(t.features=n,r.call(i,t),delete t.features)},n)}},i.prototype.on=function(t,e,r){if(void 0===r)return n.prototype.on.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(i),i.delegates)this.on(a,i.delegates[a]);return this},i.prototype.once=function(t,e,r){if(void 0===r)return n.prototype.once.call(this,t,e);var i=this._createDelegatedListener(t,e,r);for(var a in i.delegates)this.once(a,i.delegates[a]);return this},i.prototype.off=function(t,e,r){var i=this;return void 0===r?n.prototype.off.call(this,t,e):(this._delegatedListeners&&this._delegatedListeners[t]&&function(n){for(var a=n[t],o=0;o180;){var s=n.locationPoint(e);if(s.x>=0&&s.y>=0&&s.x<=n.width&&s.y<=n.height)break;e.lng>n.center.lng?e.lng-=360:e.lng+=360}return e}Bi.prototype.down=function(t,e){this.mouseRotate.mousedown(t,e),this.mousePitch&&this.mousePitch.mousedown(t,e),r.disableDrag()},Bi.prototype.move=function(t,e){var r=this.map,n=this.mouseRotate.mousemoveWindow(t,e);if(n&&n.bearingDelta&&r.setBearing(r.getBearing()+n.bearingDelta),this.mousePitch){var i=this.mousePitch.mousemoveWindow(t,e);i&&i.pitchDelta&&r.setPitch(r.getPitch()+i.pitchDelta)}},Bi.prototype.off=function(){var t=this.element;r.removeEventListener(t,"mousedown",this.mousedown),r.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),r.removeEventListener(t,"touchmove",this.touchmove),r.removeEventListener(t,"touchend",this.touchend),r.removeEventListener(t,"touchcancel",this.reset),this.offTemp()},Bi.prototype.offTemp=function(){r.enableDrag(),r.removeEventListener(t.window,"mousemove",this.mousemove),r.removeEventListener(t.window,"mouseup",this.mouseup)},Bi.prototype.mousedown=function(e){this.down(t.extend({},e,{ctrlKey:!0,preventDefault:function(){return e.preventDefault()}}),r.mousePos(this.element,e)),r.addEventListener(t.window,"mousemove",this.mousemove),r.addEventListener(t.window,"mouseup",this.mouseup)},Bi.prototype.mousemove=function(t){this.move(t,r.mousePos(this.element,t))},Bi.prototype.mouseup=function(t){this.mouseRotate.mouseupWindow(t),this.mousePitch&&this.mousePitch.mouseupWindow(t),this.offTemp()},Bi.prototype.touchstart=function(t){1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.down({type:"mousedown",button:0,ctrlKey:!0,preventDefault:function(){return t.preventDefault()}},this._startPos))},Bi.prototype.touchmove=function(t){1!==t.targetTouches.length?this.reset():(this._lastPos=r.touchPos(this.element,t.targetTouches)[0],this.move({preventDefault:function(){return t.preventDefault()}},this._lastPos))},Bi.prototype.touchend=function(t){0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos)=r}this._isDragging&&(this._pos=e.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new t.Event("dragstart"))),this.fire(new t.Event("drag")))},n.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new t.Event("dragend")),this._state="inactive"},n.prototype._addDragHandler=function(t){this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},n.prototype.setDraggable=function(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},n.prototype.isDraggable=function(){return this._draggable},n.prototype.setRotation=function(t){return this._rotation=t||0,this._update(),this},n.prototype.getRotation=function(){return this._rotation},n.prototype.setRotationAlignment=function(t){return this._rotationAlignment=t||"auto",this._update(),this},n.prototype.getRotationAlignment=function(){return this._rotationAlignment},n.prototype.setPitchAlignment=function(t){return this._pitchAlignment=t&&"auto"!==t?t:this._rotationAlignment,this._update(),this},n.prototype.getPitchAlignment=function(){return this._pitchAlignment},n}(t.Evented),Hi={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},Gi=0,Wi=!1,Zi=function(e){function n(r){e.call(this),this.options=t.extend({},Hi,r),t.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.onAdd=function(e){return this._map=e,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),function(e){void 0!==Vi?e(Vi):void 0!==t.window.navigator.permissions?t.window.navigator.permissions.query({name:"geolocation"}).then((function(t){Vi="denied"!==t.state,e(Vi)})):(Vi=!!t.window.navigator.geolocation,e(Vi))}(this._setupUI),this._container},n.prototype.onRemove=function(){void 0!==this._geolocationWatchID&&(t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),r.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Gi=0,Wi=!1},n.prototype._isOutOfMapMaxBounds=function(t){var e=this._map.getMaxBounds(),r=t.coords;return e&&(r.longitudee.getEast()||r.latitudee.getNorth())},n.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting")}},n.prototype._onSuccess=function(e){if(this._map){if(this._isOutOfMapMaxBounds(e))return this._setErrorState(),this.fire(new t.Event("outofmaxbounds",e)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=e,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background")}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(e),(!this.options.trackUserLocation||"ACTIVE_LOCK"===this._watchState)&&this._updateCamera(e),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("geolocate",e)),this._finish()}},n.prototype._updateCamera=function(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude),n=e.coords.accuracy,i=this._map.getBearing(),a=t.extend({bearing:i},this.options.fitBoundsOptions);this._map.fitBounds(r.toBounds(n),a,{geolocateSource:!0})},n.prototype._updateMarker=function(e){if(e){var r=new t.LngLat(e.coords.longitude,e.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=e.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},n.prototype._updateCircleRadius=function(){var t=this._map._container.clientHeight/2,e=this._map.unproject([0,t]),r=this._map.unproject([1,t]),n=e.distanceTo(r),i=Math.ceil(2*this._accuracy/n);this._circleElement.style.width=i+"px",this._circleElement.style.height=i+"px"},n.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},n.prototype._onError=function(e){if(this._map){if(this.options.trackUserLocation)if(1===e.code){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var r=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=r,this._geolocateButton.setAttribute("aria-label",r),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===e.code&&Wi)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new t.Event("error",e)),this._finish()}},n.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},n.prototype._setupUI=function(e){var n=this;if(this._container.addEventListener("contextmenu",(function(t){return t.preventDefault()})),this._geolocateButton=r.create("button","mapboxgl-ctrl-geolocate",this._container),r.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",!1===e){t.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var i=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=i,this._geolocateButton.setAttribute("aria-label",i)}else{var a=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=a,this._geolocateButton.setAttribute("aria-label",a)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=r.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new qi(this._dotElement),this._circleElement=r.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new qi({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(function(e){var r=e.originalEvent&&"resize"===e.originalEvent.type;!e.geolocateSource&&"ACTIVE_LOCK"===n._watchState&&!r&&(n._watchState="BACKGROUND",n._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),n._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),n.fire(new t.Event("trackuserlocationend")))}))},n.prototype.trigger=function(){if(!this._setup)return t.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Gi--,Wi=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new t.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.Event("trackuserlocationstart"))}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error")}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){var e;this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),++Gi>1?(e={maximumAge:6e5,timeout:0},Wi=!0):(e=this.options.positionOptions,Wi=!1),this._geolocationWatchID=t.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,e)}}else t.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},n.prototype._clearWatch=function(){t.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},n}(t.Evented),Yi={maxWidth:100,unit:"metric"},Xi=function(e){this.options=t.extend({},Yi,e),t.bindAll(["_onMove","setUnit"],this)};function $i(t,e,r){var n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&"imperial"===r.unit){var l=3.2808*s;l>5280?Ki(e,n,l/5280,t._getUIString("ScaleControl.Miles")):Ki(e,n,l,t._getUIString("ScaleControl.Feet"))}else r&&"nautical"===r.unit?Ki(e,n,s/1852,t._getUIString("ScaleControl.NauticalMiles")):s>=1e3?Ki(e,n,s/1e3,t._getUIString("ScaleControl.Kilometers")):Ki(e,n,s,t._getUIString("ScaleControl.Meters"))}function Ki(t,e,r,n){var i=function(t){var e=Math.pow(10,(""+Math.floor(t)).length-1),r=t/e;return r=r>=10?10:r>=5?5:r>=3?3:r>=2?2:r>=1?1:function(t){var e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(r),e*r}(r),a=i/r;t.style.width=e*a+"px",t.innerHTML=i+" "+n}Xi.prototype.getDefaultPosition=function(){return"bottom-left"},Xi.prototype._onMove=function(){$i(this._map,this._container,this.options)},Xi.prototype.onAdd=function(t){return this._map=t,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Xi.prototype.onRemove=function(){r.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Xi.prototype.setUnit=function(t){this.options.unit=t,$i(this._map,this._container,this.options)};var Ji=function(e){this._fullscreen=!1,e&&e.container&&(e.container instanceof t.window.HTMLElement?this._container=e.container:t.warnOnce("Full screen control 'container' must be a DOM element.")),t.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in t.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in t.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in t.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in t.window.document&&(this._fullscreenchange="MSFullscreenChange")};Ji.prototype.onAdd=function(e){return this._map=e,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",t.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Ji.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,t.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Ji.prototype._checkFullscreenSupport=function(){return!!(t.window.document.fullscreenEnabled||t.window.document.mozFullScreenEnabled||t.window.document.msFullscreenEnabled||t.window.document.webkitFullscreenEnabled)},Ji.prototype._setupUI=function(){var e=this._fullscreenButton=r.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);r.create("span","mapboxgl-ctrl-icon",e).setAttribute("aria-hidden",!0),e.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),t.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Ji.prototype._updateTitle=function(){var t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t},Ji.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Ji.prototype._isFullscreen=function(){return this._fullscreen},Ji.prototype._changeIcon=function(){(t.window.document.fullscreenElement||t.window.document.mozFullScreenElement||t.window.document.webkitFullscreenElement||t.window.document.msFullscreenElement)===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Ji.prototype._onClickFullscreen=function(){this._isFullscreen()?t.window.document.exitFullscreen?t.window.document.exitFullscreen():t.window.document.mozCancelFullScreen?t.window.document.mozCancelFullScreen():t.window.document.msExitFullscreen?t.window.document.msExitFullscreen():t.window.document.webkitCancelFullScreen&&t.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Qi={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},ta=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),ea=function(e){function n(r){e.call(this),this.options=t.extend(Object.create(Qi),r),t.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return e&&(n.__proto__=e),n.prototype=Object.create(e&&e.prototype),n.prototype.constructor=n,n.prototype.addTo=function(e){return this._map&&this.remove(),this._map=e,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new t.Event("open")),this},n.prototype.isOpen=function(){return!!this._map},n.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new t.Event("close")),this},n.prototype.getLngLat=function(){return this._lngLat},n.prototype.setLngLat=function(e){return this._lngLat=t.LngLat.convert(e),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},n.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},n.prototype.getElement=function(){return this._container},n.prototype.setText=function(e){return this.setDOMContent(t.window.document.createTextNode(e))},n.prototype.setHTML=function(e){var r,n=t.window.document.createDocumentFragment(),i=t.window.document.createElement("body");for(i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return this.setDOMContent(n)},n.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},n.prototype.setMaxWidth=function(t){return this.options.maxWidth=t,this._update(),this},n.prototype.setDOMContent=function(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=r.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this},n.prototype.addClassName=function(t){this._container&&this._container.classList.add(t)},n.prototype.removeClassName=function(t){this._container&&this._container.classList.remove(t)},n.prototype.setOffset=function(t){return this.options.offset=t,this._update(),this},n.prototype.toggleClassName=function(t){if(this._container)return this._container.classList.toggle(t)},n.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=r.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},n.prototype._onMouseUp=function(t){this._update(t.point)},n.prototype._onMouseMove=function(t){this._update(t.point)},n.prototype._onDrag=function(t){this._update(t.point)},n.prototype._update=function(t){var e=this,n=this._lngLat||this._trackPointer;if(this._map&&n&&this._content&&(this._container||(this._container=r.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=r.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach((function(t){return e._container.classList.add(t)})),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=ji(this._lngLat,this._pos,this._map.transform)),!this._trackPointer||t)){var i=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat),a=this.options.anchor,o=ra(this.options.offset);if(!a){var s,l=this._container.offsetWidth,c=this._container.offsetHeight;s=i.y+o.bottom.ythis._map.transform.height-c?["bottom"]:[],i.xthis._map.transform.width-l/2&&s.push("right"),a=0===s.length?"bottom":s.join("-")}var u=i.add(o[a]).round();r.setTransform(this._container,Ni[a]+" translate("+u.x+"px,"+u.y+"px)"),Ui(this._container,a,"popup")}},n.prototype._focusFirstElement=function(){if(this.options.focusAfterOpen&&this._container){var t=this._container.querySelector(ta);t&&t.focus()}},n.prototype._onClose=function(){this.remove()},n}(t.Evented);function ra(e){if(e){if("number"==typeof e){var r=Math.round(Math.sqrt(.5*Math.pow(e,2)));return{center:new t.Point(0,0),top:new t.Point(0,e),"top-left":new t.Point(r,r),"top-right":new t.Point(-r,r),bottom:new t.Point(0,-e),"bottom-left":new t.Point(r,-r),"bottom-right":new t.Point(-r,-r),left:new t.Point(e,0),right:new t.Point(-e,0)}}if(e instanceof t.Point||Array.isArray(e)){var n=t.Point.convert(e);return{center:n,top:n,"top-left":n,"top-right":n,bottom:n,"bottom-left":n,"bottom-right":n,left:n,right:n}}return{center:t.Point.convert(e.center||[0,0]),top:t.Point.convert(e.top||[0,0]),"top-left":t.Point.convert(e["top-left"]||[0,0]),"top-right":t.Point.convert(e["top-right"]||[0,0]),bottom:t.Point.convert(e.bottom||[0,0]),"bottom-left":t.Point.convert(e["bottom-left"]||[0,0]),"bottom-right":t.Point.convert(e["bottom-right"]||[0,0]),left:t.Point.convert(e.left||[0,0]),right:t.Point.convert(e.right||[0,0])}}return ra(new t.Point(0,0))}var na={version:t.version,supported:e,setRTLTextPlugin:t.setRTLTextPlugin,getRTLTextPluginStatus:t.getRTLTextPluginStatus,Map:Di,NavigationControl:Fi,GeolocateControl:Zi,AttributionControl:Mi,ScaleControl:Xi,FullscreenControl:Ji,Popup:ea,Marker:qi,Style:Ge,LngLat:t.LngLat,LngLatBounds:t.LngLatBounds,Point:t.Point,MercatorCoordinate:t.MercatorCoordinate,Evented:t.Evented,config:t.config,prewarm:function(){jt().acquire(Ot)},clearPrewarmedResources:function(){var t=Ft;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(Ot),Ft=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},get accessToken(){return t.config.ACCESS_TOKEN},set accessToken(e){t.config.ACCESS_TOKEN=e},get baseApiUrl(){return t.config.API_URL},set baseApiUrl(e){t.config.API_URL=e},get workerCount(){return Rt.workerCount},set workerCount(t){Rt.workerCount=t},get maxParallelImageRequests(){return t.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(e){t.config.MAX_PARALLEL_IMAGE_REQUESTS=e},clearStorage:function(e){t.clearTileCache(e)},workerUrl:""};return na})),r},"object"==typeof t&&typeof e<"u"?e.exports=n():(r=r||self).mapboxgl=n()}}),b_=f({"src/plots/mapbox/layers.js"(t,e){var r=le(),n=Se().sanitizeHTML,i=d_(),a=l_();function o(t,e){this.subplot=t,this.uid=t.uid+"-"+e,this.index=e,this.idSource="source-"+this.uid,this.idLayer=a.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var s=o.prototype;function l(t){if(!t.visible)return!1;var e=t.source;if(Array.isArray(e)&&e.length>0){for(var n=0;n0}function c(t){var e={},n={};switch(t.type){case"circle":r.extendFlat(n,{"circle-radius":t.circle.radius,"circle-color":t.color,"circle-opacity":t.opacity});break;case"line":r.extendFlat(n,{"line-width":t.line.width,"line-color":t.color,"line-opacity":t.opacity,"line-dasharray":t.line.dash});break;case"fill":r.extendFlat(n,{"fill-color":t.color,"fill-outline-color":t.fill.outlinecolor,"fill-opacity":t.opacity});break;case"symbol":var a=t.symbol,o=i(a.textposition,a.iconsize);r.extendFlat(e,{"icon-image":a.icon+"-15","icon-size":a.iconsize/10,"text-field":a.text,"text-size":a.textfont.size,"text-anchor":o.anchor,"text-offset":o.offset,"symbol-placement":a.placement}),r.extendFlat(n,{"icon-color":t.color,"text-color":a.textfont.color,"text-opacity":t.opacity});break;case"raster":r.extendFlat(n,{"raster-fade-duration":0,"raster-opacity":t.opacity})}return{layout:e,paint:n}}s.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=l(t)},s.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&"image"===this.sourceType&&"image"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},s.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},s.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},s.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},s.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapboxLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},s.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,l(t)){var r=function(t){var e,r=t.sourcetype,i=t.source,a={type:r};return"geojson"===r?e="data":"vector"===r?e="string"==typeof i?"url":"tiles":"raster"===r?(e="tiles",a.tileSize=256):"image"===r&&(e="url",a.coordinates=t.coordinates),a[e]=i,t.sourceattribution&&(a.attribution=n(t.sourceattribution)),a}(t);e.addSource(this.idSource,r)}},s.findFollowingMapboxLayerId=function(t){if("traces"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&m(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf("event")>-1&&l.click(n,e.originalEvent)}}},x.updateFx=function(t){var e=this,r=e.map,i=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=function(t,r){r.isRect?(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]:(t.lassoPoints={})[e.id]=r.map(c)};var l=e.dragOptions;e.dragOptions=n.extendDeep(l||{},{dragmode:t.dragmode,element:e.div,gd:i,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off("click",e.onClickInPanHandler),h(o)||u(o)?(r.dragPan.disable(),r.on("zoomstart",e.clearOutline),e.dragOptions.prepFn=function(t,r,n){p(t,r,n,e.dragOptions,o)},s.init(e.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",e.clearOutline),e.div.onmousedown=null,e.div.ontouchstart=null,e.div.removeEventListener("touchstart",e.div._ontouchstart),e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on("click",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},x.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+"px",n.height=r.h*(e.y[1]-e.y[0])+"px",n.left=r.l+e.x[0]*r.w+"px",n.top=r.t+(1-e.y[1])*r.h+"px",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},x.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;e1&&r.warn(p.multipleTokensErrorMsg),i[0]):(a.length&&r.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}(t,o);e.accessToken=s;for(var l=0;lw/2){var T=v.split("|").join("
");_.text(T).attr("data-unformatted",T).call(c.convertToTspans,t),b=l.bBox(_.node())}_.attr("transform",n(-3,8-b.height)),x.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var A=1;b.width+6>w&&(A=w/(b.width+6));var k=[a.l+a.w*d.x[1],a.t+a.h*(1-d.y[0])];x.attr("transform",n(k[0],k[1])+i(A))}},t.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots[h],n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var n=e[0].trace,i=new a(t,n.uid),o=i.sourceId,s=r(e),l=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(o,{type:"geojson",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}}}),L_=f({"src/traces/choroplethmapbox/index.js"(t,e){["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" "),e.exports={attributes:S_(),supplyDefaults:E_(),colorbar:Uo(),calc:_g(),plot:I_(),hoverPoints:Tg(),eventData:Ag(),selectPoints:kg(),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.updateOnSelect(e)},getBelow:function(t,e){for(var r=e.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if("string"==typeof i&&0===i.indexOf("water"))for(var a=n+1;a0?+f[u]:0),h.push({type:"Feature",geometry:{type:"Point",coordinates:y},properties:v})}}var _=a.extractOpts(e),b=_.reversescale?a.flipScale(_.colorscale):_.colorscale,w=b[0][1],T=["interpolate",["linear"],["heatmap-density"],0,i.opacity(w)<1?w:i.addOpacity(w,0)];for(u=1;u=0;r--)t.removeLayer(e[r][1])},a.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var n=e[0].trace,a=new i(t,n.uid),o=a.sourceId,s=r(e),l=a.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(o,{type:"geojson",data:s.geojson}),a._addLayers(s,l),a}}}),B_=f({"src/traces/densitymapbox/hover.js"(t,e){var r=ir(),n=y_().hoverPoints,i=y_().getExtraText;e.exports=function(t,e,a){var o=n(t,e,a);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,"z"in u){var h=s.subplot.mockAxis;s.z=u.z,s.zLabel=r.tickText(h,h.c2l(u.z),"hover").text}return s.extraText=i(c,u,l[0].t.labels),[s]}}}}),j_=f({"src/traces/densitymapbox/event_data.js"(t,e){e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}}}),N_=f({"src/traces/densitymapbox/index.js"(t,e){["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" "),e.exports={attributes:z_(),supplyDefaults:D_(),colorbar:Uo(),formatLabels:f_(),calc:O_(),plot:F_(),hoverPoints:B_(),eventData:j_(),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;nESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","taxiway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"aeroway-runway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","runway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}\n{name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-ocean",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["==","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-other",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["!in","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":{stops:[[0,10],[6,14]]},"text-field":"{name:latin}\n{name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2,visibility:"visible"},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"poi-level-3",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["==","$type","Point"],[">=","rank",25]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\n{name:nonlatin}","text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-2",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\n{name:nonlatin}","text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:14,filter:["all",["==","$type","Point"],["<=","rank",14],["has","name"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\n{name:nonlatin}","text-offset":[0,.6],"text-size":11,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"rgba(191, 228, 172, 1)","text-halo-width":1,"text-halo-color":"rgba(30, 29, 29, 1)"}},{id:"poi-railway",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:13,filter:["all",["==","$type","Point"],["has","name"],["==","class","railway"],["==","subclass","station"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":"{name:latin}\n{name:nonlatin}","text-offset":[0,.6],"text-size":12,"text-max-width":9,"icon-optional":!1,"icon-ignore-placement":!1,"icon-allow-overlap":!1,"text-ignore-placement":!1,"text-allow-overlap":!1,"text-optional":!0},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"road_oneway",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"road_oneway_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",-1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":-90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==","class","path"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-color":"#f8f4f0","text-color":"hsl(30, 23%, 62%)","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["==","$type","LineString"],["in","class","minor","service","track"]],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["in","class","primary","secondary","tertiary","trunk"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-shield",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["!in","network","us-interstate","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"road_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-opacity":1,"text-color":"rgba(20, 19, 19, 1)","text-halo-color":"rgba(230, 221, 221, 0)","text-halo-width":2,"icon-color":"rgba(183, 18, 18, 1)","icon-opacity":.3,"icon-halo-color":"rgba(183, 55, 55, 0)"}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-interstate"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[7,"point"],[7,"line"],[8,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"highway-shield-us-other",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"place-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:12,filter:["!in","class","city","town","village","country","continent"],layout:{"text-letter-spacing":.1,"text-size":{base:1.2,stops:[[12,10],[15,14]]},"text-font":["Noto Sans Bold"],"text-field":"{name:latin}\n{name:nonlatin}","text-transform":"uppercase","text-max-width":9,visibility:"visible"},paint:{"text-color":"rgba(255,255,255,1)","text-halo-width":1.2,"text-halo-color":"rgba(57, 28, 28, 1)"}},{id:"place-village",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:10,filter:["==","class","village"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,12],[15,16]]},"text-field":"{name:latin}\n{name:nonlatin}","text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{id:"place-town",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["==","class","town"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,14],[15,24]]},"text-field":"{name:latin}\n{name:nonlatin}","text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{id:"place-city",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["!=","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":"{name:latin}\n{name:nonlatin}","text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-city-capital",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":"{name:latin}\n{name:nonlatin}","text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}}}),q_=f({"src/plots/map/styles/arcgis-sat.js"(t,e){e.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}}}),H_=f({"src/plots/map/constants.js"(t,e){var r=Zt(),n=V_(),i="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",a="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",o="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",s={basic:o,streets:o,outdoors:o,light:i,dark:a,satellite:q_(),"satellite-streets":n,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:'© OpenStreetMap contributors',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}],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}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":i,"carto-darkmatter":a,"carto-voyager":o,"carto-positron-nolabels":"https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json","carto-darkmatter-nolabels":"https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json","carto-voyager-nolabels":"https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json"},l=r(s);e.exports={styleValueDflt:"basic",stylesMap:s,styleValuesMap:l,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",l.join(", "),"or use a tile service."].join("\n"),mapOnErrorMsg:"Map error."}}}),G_=f({"src/plots/map/layout_attributes.js"(t,e){var r=le(),n=H().defaultLine,i=Aa().attributes,a=F(),o=Tn().textposition,s=Pt().overrideAll,l=ye().templatedArray,c=H_(),u=a({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});u.family.dflt="Open Sans Regular, Arial Unicode MS Regular",(e.exports=s({_arrayAttrRegexps:[r.counterRegex("map",".layers",!0)],domain:i({name:"map"}),style:{valType:"any",values:c.styleValuesMap,dflt:c.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:l("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:n},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:n}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:u,textposition:r.extendFlat({},o,{arrayOk:!1})}})},"plot","from-root")).uirevision={valType:"any",editType:"none"}}}),W_=f({"src/traces/scattermap/attributes.js"(t,e){var r=Ot().hovertemplateAttrs,n=Ot().texttemplateAttrs,i=wn(),a=Vm(),o=Tn(),s=G_(),l=U(),c=Pe(),u=R().extendFlat,h=Pt().overrideAll,p=G_(),f=a.line,d=a.marker;e.exports=h({lon:a.lon,lat:a.lat,cluster:{enabled:{valType:"boolean"},maxzoom:u({},p.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:u({},d.opacity,{dflt:1})},mode:u({},o.mode,{dflt:"markers"}),text:u({},o.text,{}),texttemplate:n({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:u({},o.hovertext,{}),line:{color:f.color,width:f.width},connectgaps:o.connectgaps,marker:u({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:d.opacity,size:d.size,sizeref:d.sizeref,sizemin:d.sizemin,sizemode:d.sizemode},c("marker")),fill:a.fill,fillcolor:i(),textfont:s.layers.symbol.textfont,textposition:s.layers.symbol.textposition,below:{valType:"string"},selected:{marker:o.selected.marker},unselected:{marker:o.unselected.marker},hoverinfo:u({},l.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:r()},"calc","nested")}}),Z_=f({"src/traces/scattermap/constants.js"(t,e){var r=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];e.exports={isSupportedFont:function(t){return-1!==r.indexOf(t)}}}}),Y_=f({"src/traces/scattermap/defaults.js"(t,e){var r=le(),n=Ye(),i=Zn(),a=Yn(),o=$n(),s=Kn(),l=W_(),c=Z_().isSupportedFont;e.exports=function(t,e,u,h){function p(n,i){return r.coerce(t,e,l,n,i)}function f(n,i){return r.coerce2(t,e,l,n,i)}var d=function(t,e,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return e._length=a,a}(0,e,p);if(d){if(p("text"),p("texttemplate"),p("hovertext"),p("hovertemplate"),p("mode"),p("below"),n.hasMarkers(e)){i(t,e,u,h,p,{noLine:!0,noAngle:!0}),p("marker.allowoverlap"),p("marker.angle");var m=e.marker;"circle"!==m.symbol&&(r.isArrayOrTypedArray(m.size)&&(m.size=m.size[0]),r.isArrayOrTypedArray(m.color)&&(m.color=m.color[0]))}n.hasLines(e)&&(a(t,e,u,h,p,{noDash:!0}),p("connectgaps"));var g=f("cluster.maxzoom"),y=f("cluster.step"),v=f("cluster.color",e.marker&&e.marker.color||u),x=f("cluster.size"),_=f("cluster.opacity");if(p("cluster.enabled",!1!==g||!1!==y||!1!==v||!1!==x||!1!==_)||n.hasText(e)){var b=h.font.family;o(t,e,h,p,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:c(b)?b:"Open Sans Regular",weight:h.font.weight,style:h.font.style,size:h.font.size,color:h.font.color}})}p("fill"),"none"!==e.fill&&s(t,e,u,p),r.coerceSelectionMarkerOpacity(e,p)}else e.visible=!1}}}),X_=f({"src/traces/scattermap/format_labels.js"(t,e){var r=ir();e.exports=function(t,e,n){var i={},a=n[e.subplot]._subplot.mockAxis,o=t.lonlat;return i.lonLabel=r.tickText(a,a.c2l(o[0]),!0).text,i.latLabel=r.tickText(a,a.c2l(o[1]),!0).text,i}}}),$_=f({"src/plots/map/convert_text_opts.js"(t,e){var r=le();e.exports=function(t,e){var n=t.split(" "),i=n[0],a=n[1],o=r.isArrayOrTypedArray(e)?r.mean(e):e,s=.5+o/100,l=1.5+o/100,c=["",""],u=[0,0];switch(i){case"top":c[0]="top",u[1]=-l;break;case"bottom":c[0]="bottom",u[1]=l}switch(a){case"left":c[1]="right",u[0]=-s;break;case"right":c[1]="left",u[0]=s}return{anchor:c[0]&&c[1]?c.join("-"):c[0]?c[0]:c[1]?c[1]:"center",offset:u}}}}),K_=f({"src/traces/scattermap/convert.js"(t,e){var r=A(),n=le(),i=k().BADNUM,a=Xm(),o=Ze(),s=Qe(),l=Xe(),c=Ye(),u=Z_().isSupportedFont,h=$_(),p=$e().appendArrayPointValue,f=Se().NEWLINES,d=Se().BR_TAG_ALL;function m(t){return{type:t,geojson:a.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function g(t,e){return n.isArrayOrTypedArray(t)?e?function(e){return r(t[e])?+t[e]:0}:function(e){return t[e]}:t?function(){return t}:y}function y(){return""}function v(t){return t[0]===i}function x(t,e){var r;if(n.isArrayOrTypedArray(t)&&n.isArrayOrTypedArray(e)){r=["step",["get","point_count"],t[0]];for(var i=1;i850?" Black":i>750?" Extra Bold":i>650?" Bold":i>550?" Semi Bold":i>450?" Medium":i>350?" Regular":i>250?" Light":i>150?" Extra Light":" Thin"):"Open Sans"===a.slice(0,2).join(" ")?(s="Open Sans",s+=i>750?" Extrabold":i>650?" Bold":i>550?" Semibold":i>350?" Regular":" Light"):"Klokantech Noto Sans"===a.slice(0,3).join(" ")&&(s="Klokantech Noto Sans","CJK"===a[3]&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),"Open Sans Regular Italic"===s?s="Open Sans Italic":"Open Sans Regular Bold"===s?s="Open Sans Bold":"Open Sans Regular Bold Italic"===s?s="Open Sans Bold Italic":"Klokantech Noto Sans Regular Italic"===s&&(s="Klokantech Noto Sans Italic"),u(s)||(s=r),s.split(", ")}e.exports=function(t,e){var i,u=e[0].trace,b=!0===u.visible&&0!==u._length,w="none"!==u.fill,T=c.hasLines(u),A=c.hasMarkers(u),k=c.hasText(u),M=A&&"circle"===u.marker.symbol,S=A&&"circle"!==u.marker.symbol,E=u.cluster&&u.cluster.enabled,C=m("fill"),I=m("line"),L=m("circle"),P=m("symbol"),z={fill:C,line:I,circle:L,symbol:P};if(!b)return z;if((w||T)&&(i=a.calcTraceToLineCoords(e)),w&&(C.geojson=a.makePolygon(i),C.layout.visibility="visible",n.extendFlat(C.paint,{"fill-color":u.fillcolor})),T&&(I.geojson=a.makeLine(i),I.layout.visibility="visible",n.extendFlat(I.paint,{"line-width":u.line.width,"line-color":u.line.color,"line-opacity":u.opacity})),M){var D=function(t){var e,i,a,c,u=t[0].trace,h=u.marker,p=u.selectedpoints,f=n.isArrayOrTypedArray(h.color),d=n.isArrayOrTypedArray(h.size),m=n.isArrayOrTypedArray(h.opacity);function g(t){return u.opacity*t}f&&(i=o.hasColorscale(u,"marker")?o.makeColorScaleFuncFromTrace(h):n.identity),d&&(a=l(u)),m&&(c=function(t){return g(r(t)?+n.constrain(t,0,1):0)});var y,x=[];for(e=0;e=0;r--){var n=e[r];i.removeLayer(u.layerIds[n])}t||i.removeSource(u.sourceIds.circle)}(t):function(t){for(var e=a.nonCluster,r=e.length-1;r>=0;r--){var n=e[r];i.removeLayer(u.layerIds[n]),t||i.removeSource(u.sourceIds[n])}}(t)}function p(t){l?function(t){t||u.addSource("circle",o.circle,e.cluster);for(var r=a.cluster,n=0;n=0;r--){var n=e[r];t.removeLayer(this.layerIds[n]),t.removeSource(this.sourceIds[n])}},e.exports=function(t,e){var r,i,s,l=e[0].trace,c=l.cluster&&l.cluster.enabled,u=!0!==l.visible,h=new o(t,l.uid,c,u),p=n(t.gd,e),f=h.below=t.belowLookup["trace-"+l.uid];if(c)for(h.addSource("circle",p.circle,l.cluster),r=0;r")}function u(t){return t+"°"}}e.exports={hoverPoints:function(t,e,a){var c=t.cd,u=c[0].trace,h=t.xa,p=t.ya,f=t.subplot,d=[],m=s+u.uid+"-circle",g=u.cluster&&u.cluster.enabled;if(g){var y=f.map.queryRenderedFeatures(null,{layers:[m]});d=y.map((function(t){return t.id}))}var v=360*(e>=0?Math.floor((e+180)/360):Math.ceil((e-180)/360)),x=e-v;if(r.getClosest(c,(function(t){var e=t.lonlat;if(e[0]===o||g&&-1===d.indexOf(t.i+1))return 1/0;var r=n.modHalf(e[0],360),i=e[1],s=f.project([r,i]),l=s.x-h.c2p([x,i]),c=s.y-p.c2p([r,a]),u=Math.max(3,t.mrc||0);return Math.max(Math.sqrt(l*l+c*c)-u,1-3/u)}),t),!1!==t.index){var _=c[t.index],b=_.lonlat,w=[n.modHalf(b[0],360)+v,b[1]],T=h.c2p(w),A=p.c2p(w),k=_.mrc||1;t.x0=T-k,t.x1=T+k,t.y0=A-k,t.y1=A+k;var M={};M[u.subplot]={_subplot:f};var S=u._module.formatLabels(_,u,M);return t.lonLabel=S.lonLabel,t.latLabel=S.latLabel,t.color=i(u,_),t.extraText=l(u,_,c[0].t.labels),t.hovertemplate=u.hovertemplate,[t]}},getExtraText:l}}}),tb=f({"src/traces/scattermap/event_data.js"(t,e){e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t}}}),eb=f({"src/traces/scattermap/select.js"(t,e){var r=le(),n=Ye(),i=k().BADNUM;e.exports=function(t,e){var a,o=t.cd,s=t.xaxis,l=t.yaxis,c=[],u=o[0].trace;if(!n.hasMarkers(u))return[];if(!1===e)for(a=0;a1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)i?o=r:s=r,r=.5*(s-o)+o;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var d=n(p);let m,g;function y(){return null==m&&(m=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&"function"==typeof createImageBitmap),m}function v(){if(null==g&&(g=!1,y())){let t=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(t){for(let e=0;e<25;e++){let r=4*e;t.fillStyle=`rgb(${r},${r+1},${r+2})`,t.fillRect(e%5,Math.floor(e/5),1,1)}let e=t.getImageData(0,0,5,5).data;for(let t=0;t<100;t++)if(t%4!=3&&e[t]!==t){g=!0;break}}}return g||!1}function x(t,e,r,n){let i=new d(t,e,r,n);return t=>i.solve(t)}let _=x(.25,.1,.25,1);function b(t,e,r){return Math.min(r,Math.max(e,t))}function w(t,e,r){let n=r-e,i=((t-e)%n+n)%n+e;return i===e?r:i}function T(t,...e){for(let r of e)for(let e in r)t[e]=r[e];return t}let A=1;function k(t,e,r){let n={};for(let r in t)n[r]=e.call(this,t[r],r,t);return n}function M(t,e,r){let n={};for(let r in t)e.call(this,t[r],r,t)&&(n[r]=t[r]);return n}function S(t){return Array.isArray(t)?t.map(S):"object"==typeof t&&t?k(t,S):t}let E={};function C(t){E[t]||(typeof console<"u"&&console.warn(t),E[t]=!0)}function I(t,e,r){return(r.y-t.y)*(e.x-t.x)>(e.y-t.y)*(r.x-t.x)}function L(t){return typeof WorkerGlobalScope<"u"&&void 0!==t&&t instanceof WorkerGlobalScope}let P=null;function z(t){return typeof ImageBitmap<"u"&&t instanceof ImageBitmap}let D="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function O(t,r,n,i,a){return e(this,void 0,void 0,(function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");let e=new VideoFrame(t,{timestamp:0});try{let o=e?.format;if(!o||!o.startsWith("BGR")&&!o.startsWith("RGB"))throw new Error(`Unrecognized format ${o}`);let s=o.startsWith("BGR"),l=new Uint8ClampedArray(i*a*4);if(yield e.copyTo(l,function(t,e,r,n,i){let a=4*Math.max(-e,0),o=(Math.max(0,r)-r)*n*4+a,s=4*n,l=Math.max(0,e),c=Math.max(0,r);return{rect:{x:l,y:c,width:Math.min(t.width,e+n)-l,height:Math.min(t.height,r+i)-c},layout:[{offset:o,stride:s}]}}(t,r,n,i,a)),s)for(let t=0;tL(self)?self.worker&&self.worker.referrer:("blob:"===window.location.protocol?window.parent:window).location.href,G=function(t,r){if(/:\/\//.test(t.url)&&!/^https?:|^file:/.test(t.url)){let e=U(t.url);if(e)return e(t,r);if(L(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:t,targetMapId:V},r)}if(!(/^file:/.test(n=t.url)||/^file:/.test(H())&&!/^\w+:/.test(n))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(t,r){return e(this,void 0,void 0,(function*(){let e=new Request(t.url,{method:t.method||"GET",body:t.body,credentials:t.credentials,headers:t.headers,cache:t.cache,referrer:H(),signal:r.signal});"json"!==t.type||e.headers.has("Accept")||e.headers.set("Accept","application/json");let n,i=yield fetch(e);if(!i.ok){let e=yield i.blob();throw new q(i.status,i.statusText,t.url,e)}n="arrayBuffer"===t.type||"image"===t.type?i.arrayBuffer():"json"===t.type?i.json():i.text();let a=yield n;if(r.signal.aborted)throw j();return{data:a,cacheControl:i.headers.get("Cache-Control"),expires:i.headers.get("Expires")}}))}(t,r);if(L(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:t,mustQueue:!0,targetMapId:V},r)}var n,i,a;return i=t,a=r,new Promise(((t,e)=>{var r;let n=new XMLHttpRequest;n.open(i.method||"GET",i.url,!0),"arrayBuffer"!==i.type&&"image"!==i.type||(n.responseType="arraybuffer");for(let t in i.headers)n.setRequestHeader(t,i.headers[t]);"json"===i.type&&(n.responseType="text",!(null===(r=i.headers)||void 0===r)&&r.Accept||n.setRequestHeader("Accept","application/json")),n.withCredentials="include"===i.credentials,n.onerror=()=>{e(new Error(n.statusText))},n.onload=()=>{if(!a.signal.aborted)if((n.status>=200&&n.status<300||0===n.status)&&null!==n.response){let r=n.response;if("json"===i.type)try{r=JSON.parse(n.response)}catch(t){return void e(t)}t({data:r,cacheControl:n.getResponseHeader("Cache-Control"),expires:n.getResponseHeader("Expires")})}else{let t=new Blob([n.response],{type:n.getResponseHeader("Content-Type")});e(new q(n.status,n.statusText,i.url,t))}},a.signal.addEventListener("abort",(()=>{n.abort(),e(j())})),n.send(i.body)}))};function W(t){if(!t||t.indexOf("://")<=0||0===t.indexOf("data:image/")||0===t.indexOf("blob:"))return!0;let e=new URL(t),r=window.location;return e.protocol===r.protocol&&e.host===r.host}function Z(t,e,r){r[t]&&-1!==r[t].indexOf(e)||(r[t]=r[t]||[],r[t].push(e))}function Y(t,e,r){if(r&&r[t]){let n=r[t].indexOf(e);-1!==n&&r[t].splice(n,1)}}class X{constructor(t,e={}){T(this,e),this.type=t}}class $ extends X{constructor(t,e={}){super("error",T({error:t},e))}}class K{on(t,e){return this._listeners=this._listeners||{},Z(t,e,this._listeners),this}off(t,e){return Y(t,e,this._listeners),Y(t,e,this._oneTimeListeners),this}once(t,e){return e?(this._oneTimeListeners=this._oneTimeListeners||{},Z(t,e,this._oneTimeListeners),this):new Promise((e=>this.once(t,e)))}fire(t,e){"string"==typeof t&&(t=new X(t,e||{}));let r=t.type;if(this.listens(r)){t.target=this;let e=this._listeners&&this._listeners[r]?this._listeners[r].slice():[];for(let r of e)r.call(this,t);let n=this._oneTimeListeners&&this._oneTimeListeners[r]?this._oneTimeListeners[r].slice():[];for(let e of n)Y(r,e,this._oneTimeListeners),e.call(this,t);let i=this._eventedParent;i&&(T(t,"function"==typeof this._eventedParentData?this._eventedParentData():this._eventedParentData),i.fire(t))}else t instanceof $&&console.error(t.error);return this}listens(t){return this._listeners&&this._listeners[t]&&this._listeners[t].length>0||this._oneTimeListeners&&this._oneTimeListeners[t]&&this._oneTimeListeners[t].length>0||this._eventedParent&&this._eventedParent.listens(t)}setEventedParent(t,e){return this._eventedParent=t,this._eventedParentData=e,this}}var J={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let Q=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function tt(t,e){let r={};for(let e in t)"ref"!==e&&(r[e]=t[e]);return Q.forEach((t=>{t in e&&(r[t]=e[t])})),r}function et(t,e){if(Array.isArray(t)){if(!Array.isArray(e)||t.length!==e.length)return!1;for(let r=0;r`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}let Et=[dt,mt,gt,yt,vt,wt,xt,Mt(_t),Tt,At,kt];function Ct(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!Ct(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(let t of Et)if(!Ct(t,e))return null}return`Expected ${St(t)} but found ${St(e)} instead.`}function It(t,e){return e.some((e=>e.kind===t.kind))}function Lt(t,e){return e.some((e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t))}function Pt(t,e){return"array"===t.kind&&"array"===e.kind?t.itemType.kind===e.itemType.kind&&"number"==typeof t.N:t.kind===e.kind}let zt=.96422,Dt=.82521,Ot=4/29,Rt=6/29,Ft=3*Rt*Rt,Bt=Rt*Rt*Rt,jt=Math.PI/180,Nt=180/Math.PI;function Ut(t){return(t%=360)<0&&(t+=360),t}function Vt([t,e,r,n]){let i,a,o=Ht((.2225045*(t=qt(t))+.7168786*(e=qt(e))+.0606169*(r=qt(r)))/1);t===e&&e===r?i=a=o:(i=Ht((.4360747*t+.3850649*e+.1430804*r)/zt),a=Ht((.0139322*t+.0971045*e+.7141733*r)/Dt));let s=116*o-16;return[s<0?0:s,500*(i-o),200*(o-a),n]}function qt(t){return t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ht(t){return t>Bt?Math.pow(t,1/3):t/Ft+Ot}function Gt([t,e,r,n]){let i=(t+16)/116,a=isNaN(e)?i:i+e/500,o=isNaN(r)?i:i-r/200;return i=1*Zt(i),a=zt*Zt(a),o=Dt*Zt(o),[Wt(3.1338561*a-1.6168667*i-.4906146*o),Wt(-.9787684*a+1.9161415*i+.033454*o),Wt(.0719453*a-.2289914*i+1.4052427*o),n]}function Wt(t){return(t=t<=.00304?12.92*t:1.055*Math.pow(t,1/2.4)-.055)<0?0:t>1?1:t}function Zt(t){return t>Rt?t*t*t:Ft*(t-Ot)}function Yt(t){return parseInt(t.padEnd(2,t),16)/255}function Xt(t,e){return $t(e?t/100:t,0,1)}function $t(t,e,r){return Math.min(Math.max(e,t),r)}function Kt(t){return!t.some(Number.isNaN)}let Jt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Qt{constructor(t,e,r,n=1,i=!0){this.r=t,this.g=e,this.b=r,this.a=n,i||(this.r*=n,this.g*=n,this.b*=n,n||this.overwriteGetter("rgb",[t,e,r,n]))}static parse(t){if(t instanceof Qt)return t;if("string"!=typeof t)return;let e=function(t){if("transparent"===(t=t.toLowerCase().trim()))return[0,0,0,0];let e=Jt[t];if(e){let[t,r,n]=e;return[t/255,r/255,n/255,1]}if(t.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(t)){let e=t.length<6?1:2,r=1;return[Yt(t.slice(r,r+=e)),Yt(t.slice(r,r+=e)),Yt(t.slice(r,r+=e)),Yt(t.slice(r,r+e)||"ff")]}if(t.startsWith("rgb")){let e=t.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(e){let[t,r,n,i,a,o,s,l,c,u,h,p]=e,f=[i||" ",s||" ",u].join("");if(" "===f||" /"===f||",,"===f||",,,"===f){let t=[n,o,c].join(""),e="%%%"===t?100:""===t?255:0;if(e){let t=[$t(+r/e,0,1),$t(+a/e,0,1),$t(+l/e,0,1),h?Xt(+h,p):1];if(Kt(t))return t}}return}}let r=t.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(r){let[t,e,n,i,a,o,s,l,c]=r,u=[n||" ",a||" ",s].join("");if(" "===u||" /"===u||",,"===u||",,,"===u){let t=[+e,$t(+i,0,100),$t(+o,0,100),l?Xt(+l,c):1];if(Kt(t))return function([t,e,r,n]){function i(n){let i=(n+t/30)%12,a=e*Math.min(r,1-r);return r-a*Math.max(-1,Math.min(i-3,9-i,1))}return t=Ut(t),e/=100,r/=100,[i(0),i(8),i(4),n]}(t)}}}(t);return e?new Qt(...e,!1):void 0}get rgb(){let{r:t,g:e,b:r,a:n}=this,i=n||1/0;return this.overwriteGetter("rgb",[t/i,e/i,r/i,n])}get hcl(){return this.overwriteGetter("hcl",function(t){let[e,r,n,i]=Vt(t),a=Math.sqrt(r*r+n*n);return[Math.round(1e4*a)?Ut(Math.atan2(n,r)*Nt):NaN,a,e,i]}(this.rgb))}get lab(){return this.overwriteGetter("lab",Vt(this.rgb))}overwriteGetter(t,e){return Object.defineProperty(this,t,{value:e}),e}toString(){let[t,e,r,n]=this.rgb;return`rgba(${[t,e,r].map((t=>Math.round(255*t))).join(",")},${n})`}}Qt.black=new Qt(0,0,0,1),Qt.white=new Qt(1,1,1,1),Qt.transparent=new Qt(0,0,0,0),Qt.red=new Qt(1,0,0,1);class te{constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class ee{constructor(t,e,r,n,i){this.text=t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i}}class re{constructor(t){this.sections=t}static fromString(t){return new re([new ee(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some((t=>0!==t.text.length||t.image&&0!==t.image.name.length))}static factory(t){return t instanceof re?t:re.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map((t=>t.text)).join("")}}class ne{constructor(t){this.values=t.slice()}static parse(t){if(t instanceof ne)return t;if("number"==typeof t)return new ne([t,t,t,t]);if(Array.isArray(t)&&!(t.length<1||t.length>4)){for(let e of t)if("number"!=typeof e)return;switch(t.length){case 1:t=[t[0],t[0],t[0],t[0]];break;case 2:t=[t[0],t[1],t[0],t[1]];break;case 3:t=[t[0],t[1],t[2],t[1]]}return new ne(t)}}toString(){return JSON.stringify(this.values)}}let ie=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class ae{constructor(t){this.values=t.slice()}static parse(t){if(t instanceof ae)return t;if(Array.isArray(t)&&!(t.length<1)&&t.length%2==0){for(let e=0;e=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255?void 0===n||"number"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function le(t){if(null===t||"string"==typeof t||"boolean"==typeof t||"number"==typeof t||t instanceof Qt||t instanceof te||t instanceof re||t instanceof ne||t instanceof ae||t instanceof oe)return!0;if(Array.isArray(t)){for(let e of t)if(!le(e))return!1;return!0}if("object"==typeof t){for(let e in t)if(!le(t[e]))return!1;return!0}return!1}function ce(t){if(null===t)return dt;if("string"==typeof t)return gt;if("boolean"==typeof t)return yt;if("number"==typeof t)return mt;if(t instanceof Qt)return vt;if(t instanceof te)return bt;if(t instanceof re)return wt;if(t instanceof ne)return Tt;if(t instanceof ae)return kt;if(t instanceof oe)return At;if(Array.isArray(t)){let e,r=t.length;for(let r of t){let t=ce(r);if(e){if(e===t)continue;e=_t;break}e=t}return Mt(e||_t,r)}return xt}function ue(t){let e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof Qt||t instanceof re||t instanceof ne||t instanceof ae||t instanceof oe?t.toString():JSON.stringify(t)}class he{constructor(t,e){this.type=t,this.value=e}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!le(t[1]))return e.error("invalid value");let r=t[1],n=ce(r),i=e.expectedType;return"array"!==n.kind||0!==n.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(n=i),new he(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class pe{constructor(t){this.name="ExpressionEvaluationError",this.message=t}toJSON(){return this.message}}let fe={string:gt,number:mt,boolean:yt,object:xt};class de{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r,n=1,i=t[0];if("array"===i){let i,a;if(t.length>2){let r=t[1];if("string"!=typeof r||!(r in fe)||"object"===r)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=fe[r],n++}else i=_t;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);a=t[2],n++}r=Mt(i,a)}else{if(!fe[i])throw new Error(`Types doesn't contain name = ${i}`);r=fe[i]}let a=[];for(;nt.outputDefined()))}}let me={"to-boolean":yt,"to-color":vt,"to-number":mt,"to-string":gt};class ge{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r=t[0];if(!me[r])throw new Error(`Can't parse ${r} as it is not part of the known types`);if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");let n=me[r],i=[];for(let r=1;r4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:se(e[0],e[1],e[2],e[3]),!r))return new Qt(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new pe(r||`Could not parse color from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"padding":{let e;for(let r of this.args){e=r.evaluate(t);let n=ne.parse(e);if(n)return n}throw new pe(`Could not parse padding from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"variableAnchorOffsetCollection":{let e;for(let r of this.args){e=r.evaluate(t);let n=ae.parse(e);if(n)return n}throw new pe(`Could not parse variableAnchorOffsetCollection from value '${"string"==typeof e?e:JSON.stringify(e)}'`)}case"number":{let e=null;for(let r of this.args){if(e=r.evaluate(t),null===e)return 0;let n=Number(e);if(!isNaN(n))return n}throw new pe(`Could not convert ${JSON.stringify(e)} to number.`)}case"formatted":return re.fromString(ue(this.args[0].evaluate(t)));case"resolvedImage":return oe.fromString(ue(this.args[0].evaluate(t)));default:return ue(this.args[0].evaluate(t))}}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every((t=>t.outputDefined()))}}let ye=["Unknown","Point","LineString","Polygon"];class ve{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?ye[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=Qt.parse(t)),e}}class xe{constructor(t,e,r=[],n,i=new ft,a=[]){this.registry=t,this.path=r,this.key=r.map((t=>`[${t}]`)).join(""),this.scope=i,this.errors=a,this.expectedType=n,this._isConstant=e}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return"assert"===r?new de(e,[t]):"coerce"===r?new ge(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let n=t[0];if("string"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){let t=this.expectedType,i=n.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind)if("color"!==t.kind&&"formatted"!==t.kind&&"resolvedImage"!==t.kind||"value"!==i.kind&&"string"!==i.kind)if("padding"!==t.kind||"value"!==i.kind&&"number"!==i.kind&&"array"!==i.kind)if("variableAnchorOffsetCollection"!==t.kind||"value"!==i.kind&&"array"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"assert")}if(!(n instanceof he)&&"resolvedImage"!==n.type.kind&&this._isConstant(n)){let t=new ve;try{n=new he(n.type,n.evaluate(t))}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(void 0===t?"'undefined' value invalid. Use null instead.":"object"==typeof t?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){let n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new xe(this.registry,this._isConstant,n,e||null,i,this.errors)}error(t,...e){let r=`${this.key}${e.map((t=>`[${t}]`)).join("")}`;this.errors.push(new pt(r,t))}checkSubtype(t,e){let r=Ct(t,e);return r&&this.error(r),r}}class _e{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(let e of this.bindings)t(e[1]);t(this.result)}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);let r=[];for(let n=1;n=r.length)throw new pe(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new pe(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input)}outputDefined(){return!1}}class Te{constructor(t,e){this.type=yt,this.needle=t,this.haystack=e}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);let r=e.parse(t[1],1,_t),n=e.parse(t[2],2,_t);return r&&n?It(r.type,[yt,gt,mt,dt,_t])?new Te(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`):null}evaluate(t){let e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!r)return!1;if(!Lt(e,["boolean","string","number","null"]))throw new pe(`Expected first argument to be of type boolean, string, number or null, but found ${St(ce(e))} instead.`);if(!Lt(r,["string","array"]))throw new pe(`Expected second argument to be of type array or string, but found ${St(ce(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack)}outputDefined(){return!0}}class Ae{constructor(t,e,r){this.type=mt,this.needle=t,this.haystack=e,this.fromIndex=r}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);let r=e.parse(t[1],1,_t),n=e.parse(t[2],2,_t);if(!r||!n)return null;if(!It(r.type,[yt,gt,mt,dt,_t]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${St(r.type)} instead`);if(4===t.length){let i=e.parse(t[3],3,mt);return i?new Ae(r,n,i):null}return new Ae(r,n)}evaluate(t){let e,r=this.needle.evaluate(t),n=this.haystack.evaluate(t);if(!Lt(r,["boolean","string","number","null"]))throw new pe(`Expected first argument to be of type boolean, string, number or null, but found ${St(ce(r))} instead.`);if(this.fromIndex&&(e=this.fromIndex.evaluate(t)),Lt(n,["string"])){let t=n.indexOf(r,e);return-1===t?-1:[...n.slice(0,t)].length}if(Lt(n,["array"]))return n.indexOf(r,e);throw new pe(`Expected second argument to be of type array or string, but found ${St(ce(n))} instead.`)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)}outputDefined(){return!1}}class ke{constructor(t,e,r,n,i,a){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=a}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error("Expected an even number of arguments.");let r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);let i={},a=[];for(let o=2;oNumber.MAX_SAFE_INTEGER)return c.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return c.error("Numeric branch labels must be integer values.");if(r){if(c.checkSubtype(r,ce(t)))return null}else r=ce(t);if(void 0!==i[String(t)])return c.error("Branch labels must be unique.");i[String(t)]=a.length}let u=e.parse(l,o,n);if(!u)return null;n=n||u.type,a.push(u)}let o=e.parse(t[1],1,_t);if(!o)return null;let s=e.parse(t[t.length-1],t.length-1,n);return s?"value"!==o.type.kind&&e.concat(1).checkSubtype(r,o.type)?null:new ke(r,n,o,i,a,s):null}evaluate(t){let e=this.input.evaluate(t);return(ce(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)}outputDefined(){return this.outputs.every((t=>t.outputDefined()))&&this.otherwise.outputDefined()}}class Me{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);let n=[];for(let i=1;ie.outputDefined()))&&this.otherwise.outputDefined()}}class Se{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);let r=e.parse(t[1],1,_t),n=e.parse(t[2],2,mt);if(!r||!n)return null;if(!It(r.type,[Mt(_t),gt,_t]))return e.error(`Expected first argument to be of type array or string, but found ${St(r.type)} instead`);if(4===t.length){let i=e.parse(t[3],3,mt);return i?new Se(r.type,r,n,i):null}return new Se(r.type,r,n)}evaluate(t){let e,r=this.input.evaluate(t),n=this.beginIndex.evaluate(t);if(this.endIndex&&(e=this.endIndex.evaluate(t)),Lt(r,["string"]))return[...r].slice(n,e).join("");if(Lt(r,["array"]))return r.slice(n,e);throw new pe(`Expected first argument to be of type array or string, but found ${St(ce(r))} instead.`)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)}outputDefined(){return!1}}function Ee(t,e){let r,n,i=t.length-1,a=0,o=i,s=0;for(;a<=o;)if(s=Math.floor((a+o)/2),r=t[s],n=t[s+1],r<=e){if(s===i||ee))throw new pe("Input is not a number.");o=s-1}return 0}class Ce{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(let[t,e]of r)this.labels.push(t),this.outputs.push(e)}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");let r=e.parse(t[1],1,mt);if(!r)return null;let n=[],i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r=a)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',s);let c=e.parse(o,l,i);if(!c)return null;i=i||c.type,n.push([a,c])}return new Ce(i,r,n)}evaluate(t){let e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);let n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);let i=e.length;return n>=e[i-1]?r[i-1].evaluate(t):r[Ee(e,n)].evaluate(t)}eachChild(t){t(this.input);for(let e of this.outputs)t(e)}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}var Ie=Le;function Le(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=e,this.p2x=r,this.p2y=n}Le.prototype={sampleCurveX:function(t){return((this.ax*t+this.bx)*t+this.cx)*t},sampleCurveY:function(t){return((this.ay*t+this.by)*t+this.cy)*t},sampleCurveDerivativeX:function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},solveCurveX:function(t,e){if(void 0===e&&(e=1e-6),t<0)return 0;if(t>1)return 1;for(var r=t,n=0;n<8;n++){var i=this.sampleCurveX(r)-t;if(Math.abs(i)i?o=r:s=r,r=.5*(s-o)+o;return r},solve:function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))}};var Pe,ze=(Pe=Ie)&&Pe.__esModule&&Object.prototype.hasOwnProperty.call(Pe,"default")?Pe.default:Pe;function De(t,e,r){return t+r*(e-t)}function Oe(t,e,r){return t.map(((t,n)=>De(t,e[n],r)))}let Re={number:De,color:function(t,e,r,n="rgb"){switch(n){case"rgb":{let[n,i,a,o]=Oe(t.rgb,e.rgb,r);return new Qt(n,i,a,o,!1)}case"hcl":{let n,i,[a,o,s,l]=t.hcl,[c,u,h,p]=e.hcl;if(isNaN(a)||isNaN(c))isNaN(a)?isNaN(c)?n=NaN:(n=c,1!==s&&0!==s||(i=u)):(n=a,1!==h&&0!==h||(i=o));else{let t=c-a;c>a&&t>180?t-=360:c180&&(t+=360),n=a+r*t}let[f,d,m,g]=function([t,e,r,n]){return t=isNaN(t)?0:t*jt,Gt([r,Math.cos(t)*e,Math.sin(t)*e,n])}([n,i??De(o,u,r),De(s,h,r),De(l,p,r)]);return new Qt(f,d,m,g,!1)}case"lab":{let[n,i,a,o]=Gt(Oe(t.lab,e.lab,r));return new Qt(n,i,a,o,!1)}}},array:Oe,padding:function(t,e,r){return new ne(Oe(t.values,e.values,r))},variableAnchorOffsetCollection:function(t,e,r){let n=t.values,i=e.values;if(n.length!==i.length)throw new pe(`Cannot interpolate values of different length. from: ${t.toString()}, to: ${e.toString()}`);let a=[];for(let t=0;t"number"!=typeof t||t<0||t>1)))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:t}}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(i=e.parse(i,2,mt),!i)return null;let o=[],s=null;"interpolate-hcl"===r||"interpolate-lab"===r?s=vt:e.expectedType&&"value"!==e.expectedType.kind&&(s=e.expectedType);for(let t=0;t=r)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);let c=e.parse(n,l,s);if(!c)return null;s=s||c.type,o.push([r,c])}return Pt(s,mt)||Pt(s,vt)||Pt(s,Tt)||Pt(s,kt)||Pt(s,Mt(mt))?new Fe(s,r,n,i,o):e.error(`Type ${St(s)} is not interpolatable.`)}evaluate(t){let e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);let n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);let i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);let a=Ee(e,n),o=Fe.interpolationFactor(this.interpolation,n,e[a],e[a+1]),s=r[a].evaluate(t),l=r[a+1].evaluate(t);switch(this.operator){case"interpolate":return Re[this.type.kind](s,l,o);case"interpolate-hcl":return Re.color(s,l,o,"hcl");case"interpolate-lab":return Re.color(s,l,o,"lab")}}eachChild(t){t(this.input);for(let e of this.outputs)t(e)}outputDefined(){return this.outputs.every((t=>t.outputDefined()))}}function Be(t,e,r,n){let i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}class je{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expectected at least one argument.");let r=null,n=e.expectedType;n&&"value"!==n.kind&&(r=n);let i=[];for(let n of t.slice(1)){let t=e.parse(n,1+i.length,r,void 0,{typeAnnotation:"omit"});if(!t)return null;r=r||t.type,i.push(t)}if(!r)throw new Error("No output type");let a=n&&i.some((t=>Ct(n,t.type)));return new je(a?_t:r,i)}evaluate(t){let e,r=null,n=0;for(let i of this.args)if(n++,r=i.evaluate(t),r&&r instanceof oe&&!r.available&&(e||(e=r.name),r=null,n===this.args.length&&(r=e)),null!==r)break;return r}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every((t=>t.outputDefined()))}}function Ne(t,e){return"=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function Ue(t,e,r,n){return 0===n.compare(e,r)}function Ve(t,e,r){let n="=="!==t&&"!="!==t;return class i{constructor(t,e,r){this.type=yt,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");let r=t[0],a=e.parse(t[1],1,_t);if(!a)return null;if(!Ne(r,a.type))return e.concat(1).error(`"${r}" comparisons are not supported for type '${St(a.type)}'.`);let o=e.parse(t[2],2,_t);if(!o)return null;if(!Ne(r,o.type))return e.concat(2).error(`"${r}" comparisons are not supported for type '${St(o.type)}'.`);if(a.type.kind!==o.type.kind&&"value"!==a.type.kind&&"value"!==o.type.kind)return e.error(`Cannot compare types '${St(a.type)}' and '${St(o.type)}'.`);n&&("value"===a.type.kind&&"value"!==o.type.kind?a=new de(o.type,[a]):"value"!==a.type.kind&&"value"===o.type.kind&&(o=new de(a.type,[o])));let s=null;if(4===t.length){if("string"!==a.type.kind&&"string"!==o.type.kind&&"value"!==a.type.kind&&"value"!==o.type.kind)return e.error("Cannot use collator to compare non-string types.");if(s=e.parse(t[3],3,bt),!s)return null}return new i(a,o,s)}evaluate(i){let a=this.lhs.evaluate(i),o=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){let e=ce(a),r=ce(o);if(e.kind!==r.kind||"string"!==e.kind&&"number"!==e.kind)throw new pe(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){let t=ce(a),r=ce(o);if("string"!==t.kind||"string"!==r.kind)return e(i,a,o)}return this.collator?r(i,a,o,this.collator.evaluate(i)):e(i,a,o)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator)}outputDefined(){return!0}}}let qe=Ve("==",(function(t,e,r){return e===r}),Ue),He=Ve("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!Ue(0,e,r,n)})),Ge=Ve("<",(function(t,e,r){return e",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Ze=Ve("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Ye=Ve(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class Xe{constructor(t,e,r){this.type=bt,this.locale=r,this.caseSensitive=t,this.diacriticSensitive=e}static parse(t,e){if(2!==t.length)return e.error("Expected one argument.");let r=t[1];if("object"!=typeof r||Array.isArray(r))return e.error("Collator options argument must be an object.");let n=e.parse(void 0!==r["case-sensitive"]&&r["case-sensitive"],1,yt);if(!n)return null;let i=e.parse(void 0!==r["diacritic-sensitive"]&&r["diacritic-sensitive"],1,yt);if(!i)return null;let a=null;return r.locale&&(a=e.parse(r.locale,1,gt),!a)?null:new Xe(n,i,a)}evaluate(t){return new te(this.caseSensitive.evaluate(t),this.diacriticSensitive.evaluate(t),this.locale?this.locale.evaluate(t):null)}eachChild(t){t(this.caseSensitive),t(this.diacriticSensitive),this.locale&&t(this.locale)}outputDefined(){return!1}}class $e{constructor(t,e,r,n,i){this.type=gt,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");let r=e.parse(t[1],1,mt);if(!r)return null;let n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");let i=null;if(n.locale&&(i=e.parse(n.locale,1,gt),!i))return null;let a=null;if(n.currency&&(a=e.parse(n.currency,1,gt),!a))return null;let o=null;if(n["min-fraction-digits"]&&(o=e.parse(n["min-fraction-digits"],1,mt),!o))return null;let s=null;return n["max-fraction-digits"]&&(s=e.parse(n["max-fraction-digits"],1,mt),!s)?null:new $e(r,i,a,o,s)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)}outputDefined(){return!1}}class Ke{constructor(t){this.type=wt,this.sections=t}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");let n=[],i=!1;for(let r=1;r<=t.length-1;++r){let a=t[r];if(i&&"object"==typeof a&&!Array.isArray(a)){i=!1;let t=null;if(a["font-scale"]&&(t=e.parse(a["font-scale"],1,mt),!t))return null;let r=null;if(a["text-font"]&&(r=e.parse(a["text-font"],1,Mt(gt)),!r))return null;let o=null;if(a["text-color"]&&(o=e.parse(a["text-color"],1,vt),!o))return null;let s=n[n.length-1];s.scale=t,s.font=r,s.textColor=o}else{let a=e.parse(t[r],1,_t);if(!a)return null;let o=a.type.kind;if("string"!==o&&"value"!==o&&"null"!==o&&"resolvedImage"!==o)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:a,scale:null,font:null,textColor:null})}}return new Ke(n)}evaluate(t){return new re(this.sections.map((e=>{let r=e.content.evaluate(t);return ce(r)===At?new ee("",r,null,null,null):new ee(ue(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)})))}eachChild(t){for(let e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor)}outputDefined(){return!1}}class Je{constructor(t){this.type=At,this.input=t}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");let r=e.parse(t[1],1,gt);return r?new Je(r):e.error("No image name provided.")}evaluate(t){let e=this.input.evaluate(t),r=oe.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input)}outputDefined(){return!1}}class Qe{constructor(t){this.type=mt,this.input=t}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);let r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${St(r.type)} instead.`):new Qe(r):null}evaluate(t){let e=this.input.evaluate(t);if("string"==typeof e)return[...e].length;if(Array.isArray(e))return e.length;throw new pe(`Expected value to be of type string or array, but found ${St(ce(e))} instead.`)}eachChild(t){t(this.input)}outputDefined(){return!1}}let tr=8192;function er(t,e){let r=(180+t[0])/360,n=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t[1]*Math.PI/360)))/360,i=Math.pow(2,e.z);return[Math.round(r*i*tr),Math.round(n*i*tr)]}function rr(t,e){let r=Math.pow(2,e.z);return[(i=(t[0]/tr+e.x)/r,360*i-180),(n=(t[1]/tr+e.y)/r,360/Math.PI*Math.atan(Math.exp((180-360*n)*Math.PI/180))-90)];var n,i}function nr(t,e){t[0]=Math.min(t[0],e[0]),t[1]=Math.min(t[1],e[1]),t[2]=Math.max(t[2],e[0]),t[3]=Math.max(t[3],e[1])}function ir(t,e){return!(t[0]<=e[0]||t[2]>=e[2]||t[1]<=e[1]||t[3]>=e[3])}function ar(t,e,r){let n=t[0]-e[0],i=t[1]-e[1],a=t[0]-r[0],o=t[1]-r[1];return n*o-a*i==0&&n*a<=0&&i*o<=0}function or(t,e,r,n){return(i=[n[0]-r[0],n[1]-r[1]])[0]*(a=[e[0]-t[0],e[1]-t[1]])[1]-i[1]*a[0]!=0&&!(!pr(t,e,r,n)||!pr(r,n,t,e));var i,a}function sr(t,e,r){for(let n of r)for(let r=0;r(i=t)[1]!=(o=s[e+1])[1]>i[1]&&i[0]<(o[0]-a[0])*(i[1]-a[1])/(o[1]-a[1])+a[0]&&(n=!n)}var i,a,o;return n}function cr(t,e){for(let r of e)if(lr(t,r))return!0;return!1}function ur(t,e){for(let r of t)if(!lr(r,e))return!1;for(let r=0;r0&&s<0||o<0&&s>0}function fr(t,e,r){let n=[];for(let i=0;ir[2]){let e=.5*n,i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i}nr(e,t)}function gr(t,e,r,n){let i=Math.pow(2,n.z)*tr,a=[n.x*tr,n.y*tr],o=[];for(let n of t)for(let t of n){let n=[t.x+a[0],t.y+a[1]];mr(n,e,r,i),o.push(n)}return o}function yr(t,e,r,n){let i=Math.pow(2,n.z)*tr,a=[n.x*tr,n.y*tr],o=[];for(let r of t){let t=[];for(let n of r){let r=[n.x+a[0],n.y+a[1]];nr(e,r),t.push(r)}o.push(t)}if(e[2]-e[0]<=i/2){(s=e)[0]=s[1]=1/0,s[2]=s[3]=-1/0;for(let t of o)for(let n of t)mr(n,e,r,i)}var s;return o}class vr{constructor(t,e){this.type=yt,this.geojson=t,this.geometries=e}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(le(t[1])){let e=t[1];if("FeatureCollection"===e.type){let t=[];for(let r of e.features){let{type:e,coordinates:n}=r.geometry;"Polygon"===e&&t.push(n),"MultiPolygon"===e&&t.push(...n)}if(t.length)return new vr(e,{type:"MultiPolygon",coordinates:t})}else if("Feature"===e.type){let t=e.geometry.type;if("Polygon"===t||"MultiPolygon"===t)return new vr(e,e.geometry)}else if("Polygon"===e.type||"MultiPolygon"===e.type)return new vr(e,e)}return e.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){let r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){let a=fr(e.coordinates,n,i),o=gr(t.geometry(),r,n,i);if(!ir(r,n))return!1;for(let t of o)if(!lr(t,a))return!1}if("MultiPolygon"===e.type){let a=dr(e.coordinates,n,i),o=gr(t.geometry(),r,n,i);if(!ir(r,n))return!1;for(let t of o)if(!cr(t,a))return!1}return!0}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){let r=[1/0,1/0,-1/0,-1/0],n=[1/0,1/0,-1/0,-1/0],i=t.canonicalID();if("Polygon"===e.type){let a=fr(e.coordinates,n,i),o=yr(t.geometry(),r,n,i);if(!ir(r,n))return!1;for(let t of o)if(!ur(t,a))return!1}if("MultiPolygon"===e.type){let a=dr(e.coordinates,n,i),o=yr(t.geometry(),r,n,i);if(!ir(r,n))return!1;for(let t of o)if(!hr(t,a))return!1}return!0}(t,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let xr=class{constructor(t=[],e=(t,e)=>te?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(0===this.length)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,n=e[t];for(;t>0;){let i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n}_down(t){let{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t=0)break;e[t]=e[n],t=n}e[t]=i}};function _r(t,e,r,n,i){br(t,e,r,n||t.length-1,i||Tr)}function br(t,e,r,n,i){for(;n>r;){if(n-r>600){var a=n-r+1,o=e-r+1,s=Math.log(a),l=.5*Math.exp(2*s/3),c=.5*Math.sqrt(s*l*(a-l)/a)*(o-a/2<0?-1:1);br(t,e,Math.max(r,Math.floor(e-o*l/a+c)),Math.min(n,Math.floor(e+(a-o)*l/a+c)),i)}var u=t[e],h=r,p=n;for(wr(t,r,e),i(t[n],u)>0&&wr(t,r,n);h0;)p--}0===i(t[r],u)?wr(t,r,p):wr(t,++p,n),p<=e&&(r=p+1),e<=p&&(n=p-1)}}function wr(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function Tr(t,e){return te?1:0}function Ar(t,e){if(t.length<=1)return[t];let r,n,i=[];for(let e of t){let t=Mr(e);0!==t&&(e.area=Math.abs(t),void 0===n&&(n=t<0),n===t<0?(r&&i.push(r),r=[e]):r.push(e))}if(r&&i.push(r),e>1)for(let t=0;t1?(l=t[s+1][0],c=t[s+1][1]):p>0&&(l+=u/this.kx*p,c+=h/this.ky*p)),u=this.wrap(e[0]-l)*this.kx,h=(e[1]-c)*this.ky;let f=u*u+h*h;f180;)t-=360;return t}}function Lr(t,e){return e[0]-t[0]}function Pr(t){return t[1]-t[0]+1}function zr(t,e){return t[1]>=t[0]&&t[1]t[1])return[null,null];let r=Pr(t);if(e){if(2===r)return[t,null];let e=Math.floor(r/2);return[[t[0],t[0]+e],[t[0]+e,t[1]]]}if(1===r)return[t,null];let n=Math.floor(r/2)-1;return[[t[0],t[0]+n],[t[0]+n+1,t[1]]]}function Or(t,e){if(!zr(e,t.length))return[1/0,1/0,-1/0,-1/0];let r=[1/0,1/0,-1/0,-1/0];for(let n=e[0];n<=e[1];++n)nr(r,t[n]);return r}function Rr(t){let e=[1/0,1/0,-1/0,-1/0];for(let r of t)for(let t of r)nr(e,t);return e}function Fr(t){return t[0]!==-1/0&&t[1]!==-1/0&&t[2]!==1/0&&t[3]!==1/0}function Br(t,e,r){if(!Fr(t)||!Fr(e))return NaN;let n=0,i=0;return t[2]e[2]&&(n=t[0]-e[2]),t[1]>e[3]&&(i=t[1]-e[3]),t[3]=n)return n;if(ir(i,a)){if(Gr(t,e))return 0}else if(Gr(e,t))return 0;let o=1/0;for(let n of t)for(let t=0,i=n.length,a=i-1;t0;){let i=o.pop();if(i[0]>=a)continue;let l=i[1],c=e?50:100;if(Pr(l)<=c){if(!zr(l,t.length))return NaN;if(e){let e=Hr(t,l,r,n);if(isNaN(e)||0===e)return e;a=Math.min(a,e)}else for(let e=l[0];e<=l[1];++e){let i=qr(t[e],r,n);if(a=Math.min(a,i),0===a)return 0}}else{let r=Dr(l,e);Zr(o,a,n,t,s,r[0]),Zr(o,a,n,t,s,r[1])}}return a}function $r(t,e,r,n,i,a=1/0){let o=Math.min(a,i.distance(t[0],r[0]));if(0===o)return o;let s=new xr([[0,[0,t.length-1],[0,r.length-1]]],Lr);for(;s.length>0;){let a=s.pop();if(a[0]>=o)continue;let l=a[1],c=a[2],u=e?50:100,h=n?50:100;if(Pr(l)<=u&&Pr(c)<=h){if(!zr(l,t.length)&&zr(c,r.length))return NaN;let a;if(e&&n)a=Ur(t,l,r,c,i),o=Math.min(o,a);else if(e&&!n){let e=t.slice(l[0],l[1]+1);for(let t=c[0];t<=c[1];++t)if(a=jr(r[t],e,i),o=Math.min(o,a),0===o)return o}else if(!e&&n){let e=r.slice(c[0],c[1]+1);for(let r=l[0];r<=l[1];++r)if(a=jr(t[r],e,i),o=Math.min(o,a),0===o)return o}else a=Vr(t,l,r,c,i),o=Math.min(o,a)}else{let a=Dr(l,e),u=Dr(c,n);Yr(s,o,i,t,r,a[0],u[0]),Yr(s,o,i,t,r,a[0],u[1]),Yr(s,o,i,t,r,a[1],u[0]),Yr(s,o,i,t,r,a[1],u[1])}}return o}function Kr(t){return"MultiPolygon"===t.type?t.coordinates.map((t=>({type:"Polygon",coordinates:t}))):"MultiLineString"===t.type?t.coordinates.map((t=>({type:"LineString",coordinates:t}))):"MultiPoint"===t.type?t.coordinates.map((t=>({type:"Point",coordinates:t}))):[t]}class Jr{constructor(t,e){this.type=mt,this.geojson=t,this.geometries=e}static parse(t,e){if(2!==t.length)return e.error(`'distance' expression requires exactly one argument, but found ${t.length-1} instead.`);if(le(t[1])){let e=t[1];if("FeatureCollection"===e.type)return new Jr(e,e.features.map((t=>Kr(t.geometry))).flat());if("Feature"===e.type)return new Jr(e,Kr(e.geometry));if("type"in e&&"coordinates"in e)return new Jr(e,Kr(e))}return e.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(t){if(null!=t.geometry()&&null!=t.canonicalID()){if("Point"===t.geometryType())return function(t,e){let r=t.geometry(),n=r.flat().map((e=>rr([e.x,e.y],t.canonical)));if(0===r.length)return NaN;let i=new Ir(n[0][1]),a=1/0;for(let t of e){switch(t.type){case"Point":a=Math.min(a,$r(n,!1,[t.coordinates],!1,i,a));break;case"LineString":a=Math.min(a,$r(n,!1,t.coordinates,!0,i,a));break;case"Polygon":a=Math.min(a,Xr(n,!1,t.coordinates,i,a))}if(0===a)return a}return a}(t,this.geometries);if("LineString"===t.geometryType())return function(t,e){let r=t.geometry(),n=r.flat().map((e=>rr([e.x,e.y],t.canonical)));if(0===r.length)return NaN;let i=new Ir(n[0][1]),a=1/0;for(let t of e){switch(t.type){case"Point":a=Math.min(a,$r(n,!0,[t.coordinates],!1,i,a));break;case"LineString":a=Math.min(a,$r(n,!0,t.coordinates,!0,i,a));break;case"Polygon":a=Math.min(a,Xr(n,!0,t.coordinates,i,a))}if(0===a)return a}return a}(t,this.geometries);if("Polygon"===t.geometryType())return function(t,e){let r=t.geometry();if(0===r.length||0===r[0].length)return NaN;let n=Ar(r,0).map((e=>e.map((e=>e.map((e=>rr([e.x,e.y],t.canonical))))))),i=new Ir(n[0][0][0][1]),a=1/0;for(let t of e)for(let e of n){switch(t.type){case"Point":a=Math.min(a,Xr([t.coordinates],!1,e,i,a));break;case"LineString":a=Math.min(a,Xr(t.coordinates,!0,e,i,a));break;case"Polygon":a=Math.min(a,Wr(e,t.coordinates,i,a))}if(0===a)return a}return a}(t,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let Qr={"==":qe,"!=":He,">":We,"<":Ge,">=":Ye,"<=":Ze,array:de,at:we,boolean:de,case:Me,coalesce:je,collator:Xe,format:Ke,image:Je,in:Te,"index-of":Ae,interpolate:Fe,"interpolate-hcl":Fe,"interpolate-lab":Fe,length:Qe,let:_e,literal:he,match:ke,number:de,"number-format":$e,object:de,slice:Se,step:Ce,string:de,"to-boolean":ge,"to-color":ge,"to-number":ge,"to-string":ge,var:be,within:vr,distance:Jr};class tn{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t)}outputDefined(){return!1}static parse(t,e){let r=t[0],n=tn.definitions[r];if(!n)return e.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);let i=Array.isArray(n)?n[0]:n.type,a=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,o=a.filter((([e])=>!Array.isArray(e)||e.length===t.length-1)),s=null;for(let[n,a]of o){s=new xe(e.registry,on,e.path,null,e.scope);let o=[],l=!1;for(let e=1;e{return e=t,Array.isArray(e)?`(${e.map(St).join(", ")})`:`(${St(e.type)}...)`;var e})).join(" | "),n=[];for(let r=1;r{r=e?r&&on(t):r&&t instanceof he})),!!r&&sn(t)&&cn(t,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function sn(t){if(t instanceof tn&&("get"===t.name&&1===t.args.length||"feature-state"===t.name||"has"===t.name&&1===t.args.length||"properties"===t.name||"geometry-type"===t.name||"id"===t.name||/^filter-/.test(t.name))||t instanceof vr||t instanceof Jr)return!1;let e=!0;return t.eachChild((t=>{e&&!sn(t)&&(e=!1)})),e}function ln(t){if(t instanceof tn&&"feature-state"===t.name)return!1;let e=!0;return t.eachChild((t=>{e&&!ln(t)&&(e=!1)})),e}function cn(t,e){if(t instanceof tn&&e.indexOf(t.name)>=0)return!1;let r=!0;return t.eachChild((t=>{r&&!cn(t,e)&&(r=!1)})),r}function un(t){return{result:"success",value:t}}function hn(t){return{result:"error",value:t}}function pn(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function fn(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function dn(t){return!!t.expression&&t.expression.interpolated}function mn(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function gn(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function yn(t){return t}function vn(t,e){let r="color"===e.type,n=t.stops&&"object"==typeof t.stops[0][0],i=n||!(n||void 0!==t.property),a=t.type||(dn(e)?"exponential":"interval");if(r||"padding"===e.type){let n=r?Qt.parse:ne.parse;(t=ht({},t)).stops&&(t.stops=t.stops.map((t=>[t[0],n(t[1])]))),t.default=n(t.default?t.default:e.default)}if(t.colorSpace&&"rgb"!==(o=t.colorSpace)&&"hcl"!==o&&"lab"!==o)throw new Error(`Unknown color space: "${t.colorSpace}"`);var o;let s,l,c;if("exponential"===a)s=wn;else if("interval"===a)s=bn;else if("categorical"===a){s=_n,l=Object.create(null);for(let e of t.stops)l[e[0]]=e[1];c=typeof t.stops[0][0]}else{if("identity"!==a)throw new Error(`Unknown function type "${a}"`);s=Tn}if(n){let r={},n=[];for(let e=0;et[0])),evaluate:({zoom:r},n)=>wn({stops:i,base:t.base},e,r).evaluate(r,n)}}if(i){let r="exponential"===a?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return{kind:"camera",interpolationType:r,interpolationFactor:Fe.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map((t=>t[0])),evaluate:({zoom:r})=>s(t,e,r,l,c)}}return{kind:"source",evaluate(r,n){let i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?xn(t.default,e.default):s(t,e,i,l,c)}}}function xn(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function _n(t,e,r,n,i){return xn(typeof r===i?n[r]:void 0,t.default,e.default)}function bn(t,e,r){if("number"!==mn(r))return xn(t.default,e.default);let n=t.stops.length;if(1===n||r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];let i=Ee(t.stops.map((t=>t[0])),r);return t.stops[i][1]}function wn(t,e,r){let n=void 0!==t.base?t.base:1;if("number"!==mn(r))return xn(t.default,e.default);let i=t.stops.length;if(1===i||r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];let a=Ee(t.stops.map((t=>t[0])),r),o=function(t,e,r,n){let i=n-r,a=t-r;return 0===i?0:1===e?a/i:(Math.pow(e,a)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[a][0],t.stops[a+1][0]),s=t.stops[a][1],l=t.stops[a+1][1],c=Re[e.type]||yn;return"function"==typeof s.evaluate?{evaluate(...e){let r=s.evaluate.apply(void 0,e),n=l.evaluate.apply(void 0,e);if(void 0!==r&&void 0!==n)return c(r,n,o,t.colorSpace)}}:c(s,l,o,t.colorSpace)}function Tn(t,e,r){switch(e.type){case"color":r=Qt.parse(r);break;case"formatted":r=re.fromString(r.toString());break;case"resolvedImage":r=oe.fromString(r.toString());break;case"padding":r=ne.parse(r);break;default:mn(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0)}return xn(r,t.default,e.default)}tn.register(Qr,{error:[{kind:"error"},[gt],(t,[e])=>{throw new pe(e.evaluate(t))}],typeof:[gt,[_t],(t,[e])=>St(ce(e.evaluate(t)))],"to-rgba":[Mt(mt,4),[vt],(t,[e])=>{let[r,n,i,a]=e.evaluate(t).rgb;return[255*r,255*n,255*i,a]}],rgb:[vt,[mt,mt,mt],en],rgba:[vt,[mt,mt,mt,mt],en],has:{type:yt,overloads:[[[gt],(t,[e])=>rn(e.evaluate(t),t.properties())],[[gt,xt],(t,[e,r])=>rn(e.evaluate(t),r.evaluate(t))]]},get:{type:_t,overloads:[[[gt],(t,[e])=>nn(e.evaluate(t),t.properties())],[[gt,xt],(t,[e,r])=>nn(e.evaluate(t),r.evaluate(t))]]},"feature-state":[_t,[gt],(t,[e])=>nn(e.evaluate(t),t.featureState||{})],properties:[xt,[],t=>t.properties()],"geometry-type":[gt,[],t=>t.geometryType()],id:[_t,[],t=>t.id()],zoom:[mt,[],t=>t.globals.zoom],"heatmap-density":[mt,[],t=>t.globals.heatmapDensity||0],"line-progress":[mt,[],t=>t.globals.lineProgress||0],accumulated:[_t,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[mt,an(mt),(t,e)=>{let r=0;for(let n of e)r+=n.evaluate(t);return r}],"*":[mt,an(mt),(t,e)=>{let r=1;for(let n of e)r*=n.evaluate(t);return r}],"-":{type:mt,overloads:[[[mt,mt],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[mt],(t,[e])=>-e.evaluate(t)]]},"/":[mt,[mt,mt],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],"%":[mt,[mt,mt],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[mt,[],()=>Math.LN2],pi:[mt,[],()=>Math.PI],e:[mt,[],()=>Math.E],"^":[mt,[mt,mt],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[mt,[mt],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[mt,[mt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[mt,[mt],(t,[e])=>Math.log(e.evaluate(t))],log2:[mt,[mt],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[mt,[mt],(t,[e])=>Math.sin(e.evaluate(t))],cos:[mt,[mt],(t,[e])=>Math.cos(e.evaluate(t))],tan:[mt,[mt],(t,[e])=>Math.tan(e.evaluate(t))],asin:[mt,[mt],(t,[e])=>Math.asin(e.evaluate(t))],acos:[mt,[mt],(t,[e])=>Math.acos(e.evaluate(t))],atan:[mt,[mt],(t,[e])=>Math.atan(e.evaluate(t))],min:[mt,an(mt),(t,e)=>Math.min(...e.map((e=>e.evaluate(t))))],max:[mt,an(mt),(t,e)=>Math.max(...e.map((e=>e.evaluate(t))))],abs:[mt,[mt],(t,[e])=>Math.abs(e.evaluate(t))],round:[mt,[mt],(t,[e])=>{let r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[mt,[mt],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[mt,[mt],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[yt,[gt,_t],(t,[e,r])=>t.properties()[e.value]===r.value],"filter-id-==":[yt,[_t],(t,[e])=>t.id()===e.value],"filter-type-==":[yt,[gt],(t,[e])=>t.geometryType()===e.value],"filter-<":[yt,[gt,_t],(t,[e,r])=>{let n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n{let r=t.id(),n=e.value;return typeof r==typeof n&&r":[yt,[gt,_t],(t,[e,r])=>{let n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],"filter-id->":[yt,[_t],(t,[e])=>{let r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],"filter-<=":[yt,[gt,_t],(t,[e,r])=>{let n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],"filter-id-<=":[yt,[_t],(t,[e])=>{let r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],"filter->=":[yt,[gt,_t],(t,[e,r])=>{let n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],"filter-id->=":[yt,[_t],(t,[e])=>{let r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],"filter-has":[yt,[_t],(t,[e])=>e.value in t.properties()],"filter-has-id":[yt,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[yt,[Mt(gt)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[yt,[Mt(_t)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[yt,[gt,Mt(_t)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[yt,[gt,Mt(_t)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){let i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:yt,overloads:[[[yt,yt],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[an(yt),(t,e)=>{for(let r of e)if(!r.evaluate(t))return!1;return!0}]]},any:{type:yt,overloads:[[[yt,yt],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[an(yt),(t,e)=>{for(let r of e)if(r.evaluate(t))return!0;return!1}]]},"!":[yt,[yt],(t,[e])=>!e.evaluate(t)],"is-supported-script":[yt,[gt],(t,[e])=>{let r=t.globals&&t.globals.isSupportedScript;return!r||r(e.evaluate(t))}],upcase:[gt,[gt],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[gt,[gt],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[gt,an(_t),(t,e)=>e.map((e=>ue(e.evaluate(t)))).join("")],"resolved-locale":[gt,[bt],(t,[e])=>e.evaluate(t).resolvedLocale()]});class An{constructor(t,e){var r;this.expression=t,this._warningHistory={},this._evaluator=new ve,this._defaultValue=e?"color"===(r=e).type&&gn(r.default)?new Qt(0,0,0,0):"color"===r.type?Qt.parse(r.default)||null:"padding"===r.type?ne.parse(r.default)||null:"variableAnchorOffsetCollection"===r.type?ae.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=e&&"enum"===e.type?e.values:null}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,a){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=a||null;try{let t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new pe(`Expected value to be one of ${Object.keys(this._enumValues).map((t=>JSON.stringify(t))).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,typeof console<"u"&&console.warn(t.message)),this._defaultValue}}}function kn(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in Qr}function Mn(t,e){let r=new xe(Qr,on,[],e?function(t){let e={color:vt,string:gt,number:mt,enum:gt,boolean:yt,formatted:wt,padding:Tt,resolvedImage:At,variableAnchorOffsetCollection:kt};return"array"===t.type?Mt(e[t.value]||_t,t.length):e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return n?un(new An(n,e)):hn(r.errors)}class Sn{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!ln(e.expression)}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}}class En{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!ln(e.expression),this.interpolationType=n}evaluateWithoutErrorHandling(t,e,r,n,i,a){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,a)}evaluate(t,e,r,n,i,a){return this._styleExpression.evaluate(t,e,r,n,i,a)}interpolationFactor(t,e,r){return this.interpolationType?Fe.interpolationFactor(this.interpolationType,t,e,r):0}}function Cn(t,e){let r=Mn(t,e);if("error"===r.result)return r;let n=r.value.expression,i=sn(n);if(!i&&!pn(e))return hn([new pt("","data expressions not supported")]);let a=cn(n,["zoom"]);if(!a&&!fn(e))return hn([new pt("","zoom expressions not supported")]);let o=Ln(n);return o||a?o instanceof pt?hn([o]):o instanceof Fe&&!dn(e)?hn([new pt("",'"interpolate" expressions cannot be used with this property')]):un(o?new En(i?"camera":"composite",r.value,o.labels,o instanceof Fe?o.interpolation:void 0):new Sn(i?"constant":"source",r.value)):hn([new pt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class In{constructor(t,e){this._parameters=t,this._specification=e,ht(this,vn(this._parameters,this._specification))}static deserialize(t){return new In(t._parameters,t._specification)}static serialize(t){return{_parameters:t._parameters,_specification:t._specification}}}function Ln(t){let e=null;if(t instanceof _e)e=Ln(t.result);else if(t instanceof je){for(let r of t.args)if(e=Ln(r),e)break}else(t instanceof Ce||t instanceof Fe)&&t.input instanceof tn&&"zoom"===t.input.name&&(e=t);return e instanceof pt||t.eachChild((t=>{let r=Ln(t);r instanceof pt?e=r:!e&&r?e=new pt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&r&&e!==r&&(e=new pt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))})),e}function Pn(t){if(!0===t||!1===t)return!0;if(!Array.isArray(t)||0===t.length)return!1;switch(t[0]){case"has":return t.length>=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(let e of t.slice(1))if(!Pn(e)&&"boolean"!=typeof e)return!1;return!0;default:return!0}}let zn={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Dn(t){if(null==t)return{filter:()=>!0,needGeometry:!1};Pn(t)||(t=Fn(t));let e=Mn(t,zn);if("error"===e.result)throw new Error(e.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return{filter:(t,r,n)=>e.value.evaluate(t,r,{},n),needGeometry:Rn(t)}}function On(t,e){return te?1:0}function Rn(t){if(!Array.isArray(t))return!1;if("within"===t[0]||"distance"===t[0])return!0;for(let e=1;e"===e||"<="===e||">="===e?Bn(t[1],t[2],e):"any"===e?(r=t.slice(1),["any"].concat(r.map(Fn))):"all"===e?["all"].concat(t.slice(1).map(Fn)):"none"===e?["all"].concat(t.slice(1).map(Fn).map(Un)):"in"===e?jn(t[1],t.slice(2)):"!in"===e?Un(jn(t[1],t.slice(2))):"has"===e?Nn(t[1]):"!has"!==e||Un(Nn(t[1]));var r}function Bn(t,e,r){switch(t){case"$type":return[`filter-type-${r}`,e];case"$id":return[`filter-id-${r}`,e];default:return[`filter-${r}`,t,e]}}function jn(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some((t=>typeof t!=typeof e[0]))?["filter-in-large",t,["literal",e.sort(On)]]:["filter-in-small",t,["literal",e]]}}function Nn(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function Un(t){return["!",t]}function Vn(t){let e=typeof t;if("number"===e||"boolean"===e||"string"===e||null==t)return JSON.stringify(t);if(Array.isArray(t)){let e="[";for(let r of t)e+=`${Vn(r)},`;return`${e}]`}let r=Object.keys(t).sort(),n="{";for(let e=0;en.maximum?[new ut(e,r,`${r} is greater than the maximum value ${n.maximum}`)]:[]}function $n(t){let e,r,n,i=t.valueSpec,a=Gn(t.value.type),o={},s="categorical"!==a&&void 0===t.value.property,l=!s,c="array"===mn(t.value.stops)&&"array"===mn(t.value.stops[0])&&"object"===mn(t.value.stops[0][0]),u=Zn({key:t.key,value:t.value,valueSpec:t.styleSpec.function,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{stops:function(t){if("identity"===a)return[new ut(t.key,t.value,'identity function may not have a "stops" property')];let e=[],r=t.value;return e=e.concat(Yn({key:t.key,value:r,valueSpec:t.valueSpec,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,arrayElementValidator:h})),"array"===mn(r)&&0===r.length&&e.push(new ut(t.key,r,"array must have at least one stop")),e},default:function(t){return t.validateSpec({key:t.key,value:t.value,valueSpec:i,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec})}}});return"identity"===a&&s&&u.push(new ut(t.key,t.value,'missing required property "property"')),"identity"===a||t.value.stops||u.push(new ut(t.key,t.value,'missing required property "stops"')),"exponential"===a&&t.valueSpec.expression&&!dn(t.valueSpec)&&u.push(new ut(t.key,t.value,"exponential functions not supported")),t.styleSpec.$version>=8&&(l&&!pn(t.valueSpec)?u.push(new ut(t.key,t.value,"property functions not supported")):s&&!fn(t.valueSpec)&&u.push(new ut(t.key,t.value,"zoom functions not supported"))),"categorical"!==a&&!c||void 0!==t.value.property||u.push(new ut(t.key,t.value,'"property" property is required')),u;function h(t){let e=[],a=t.value,s=t.key;if("array"!==mn(a))return[new ut(s,a,`array expected, ${mn(a)} found`)];if(2!==a.length)return[new ut(s,a,`array length 2 expected, length ${a.length} found`)];if(c){if("object"!==mn(a[0]))return[new ut(s,a,`object expected, ${mn(a[0])} found`)];if(void 0===a[0].zoom)return[new ut(s,a,"object stop key must have zoom")];if(void 0===a[0].value)return[new ut(s,a,"object stop key must have value")];if(n&&n>Gn(a[0].zoom))return[new ut(s,a[0].zoom,"stop zoom values must appear in ascending order")];Gn(a[0].zoom)!==n&&(n=Gn(a[0].zoom),r=void 0,o={}),e=e.concat(Zn({key:`${s}[0]`,value:a[0],valueSpec:{zoom:{}},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec,objectElementValidators:{zoom:Xn,value:p}}))}else e=e.concat(p({key:`${s}[0]`,value:a[0],valueSpec:{},validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec},a));return kn(Wn(a[1]))?e.concat([new ut(`${s}[1]`,a[1],"expressions are not allowed in function stops.")]):e.concat(t.validateSpec({key:`${s}[1]`,value:a[1],valueSpec:i,validateSpec:t.validateSpec,style:t.style,styleSpec:t.styleSpec}))}function p(t,n){let s=mn(t.value),l=Gn(t.value),c=null!==t.value?t.value:n;if(e){if(s!==e)return[new ut(t.key,c,`${s} stop domain type must match previous stop domain type ${e}`)]}else e=s;if("number"!==s&&"string"!==s&&"boolean"!==s)return[new ut(t.key,c,"stop domain value must be a number, string, or boolean")];if("number"!==s&&"categorical"!==a){let e=`number expected, ${s} found`;return pn(i)&&void 0===a&&(e+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new ut(t.key,c,e)]}return"categorical"!==a||"number"!==s||isFinite(l)&&Math.floor(l)===l?"categorical"!==a&&"number"===s&&void 0!==r&&lnew ut(`${t.key}${e.key}`,t.value,e.message)));let r=e.value.expression||e.value._styleExpression.expression;if("property"===t.expressionContext&&"text-font"===t.propertyKey&&!r.outputDefined())return[new ut(t.key,t.value,`Invalid data expression for "${t.propertyKey}". Output values must be contained as literals within the expression.`)];if("property"===t.expressionContext&&"layout"===t.propertyType&&!ln(r))return[new ut(t.key,t.value,'"feature-state" data expressions are not supported with layout properties.')];if("filter"===t.expressionContext&&!ln(r))return[new ut(t.key,t.value,'"feature-state" data expressions are not supported with filters.')];if(t.expressionContext&&0===t.expressionContext.indexOf("cluster")){if(!cn(r,["zoom","feature-state"]))return[new ut(t.key,t.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if("cluster-initial"===t.expressionContext&&!sn(r))return[new ut(t.key,t.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function Jn(t){let e=t.key,r=t.value,n=t.valueSpec,i=[];return Array.isArray(n.values)?-1===n.values.indexOf(Gn(r))&&i.push(new ut(e,r,`expected one of [${n.values.join(", ")}], ${JSON.stringify(r)} found`)):-1===Object.keys(n.values).indexOf(Gn(r))&&i.push(new ut(e,r,`expected one of [${Object.keys(n.values).join(", ")}], ${JSON.stringify(r)} found`)),i}function Qn(t){return Pn(Wn(t.value))?Kn(ht({},t,{expressionContext:"filter",valueSpec:{value:"boolean"}})):ti(t)}function ti(t){let e=t.value,r=t.key;if("array"!==mn(e))return[new ut(r,e,`array expected, ${mn(e)} found`)];let n,i=t.styleSpec,a=[];if(e.length<1)return[new ut(r,e,"filter array must have at least 1 element")];switch(a=a.concat(Jn({key:`${r}[0]`,value:e[0],valueSpec:i.filter_operator,style:t.style,styleSpec:t.styleSpec})),Gn(e[0])){case"<":case"<=":case">":case">=":e.length>=2&&"$type"===Gn(e[1])&&a.push(new ut(r,e,`"$type" cannot be use with operator "${e[0]}"`));case"==":case"!=":3!==e.length&&a.push(new ut(r,e,`filter array for operator "${e[0]}" must have 3 elements`));case"in":case"!in":e.length>=2&&(n=mn(e[1]),"string"!==n&&a.push(new ut(`${r}[1]`,e[1],`string expected, ${n} found`)));for(let o=2;o{t in r&&e.push(new ut(n,r[t],`"${t}" is prohibited for ref layers`))})),i.layers.forEach((e=>{Gn(e.id)===s&&(t=e)})),t?t.ref?e.push(new ut(n,r.ref,"ref cannot reference another ref layer")):o=Gn(t.type):e.push(new ut(n,r.ref,`ref layer "${s}" not found`))}else if("background"!==o)if(r.source){let t=i.sources&&i.sources[r.source],a=t&&Gn(t.type);t?"vector"===a&&"raster"===o?e.push(new ut(n,r.source,`layer "${r.id}" requires a raster source`)):"raster-dem"!==a&&"hillshade"===o?e.push(new ut(n,r.source,`layer "${r.id}" requires a raster-dem source`)):"raster"===a&&"raster"!==o?e.push(new ut(n,r.source,`layer "${r.id}" requires a vector source`)):"vector"!==a||r["source-layer"]?"raster-dem"===a&&"hillshade"!==o?e.push(new ut(n,r.source,"raster-dem source can only be used with layer type 'hillshade'.")):"line"!==o||!r.paint||!r.paint["line-gradient"]||"geojson"===a&&t.lineMetrics||e.push(new ut(n,r,`layer "${r.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):e.push(new ut(n,r,`layer "${r.id}" must specify a "source-layer"`)):e.push(new ut(n,r.source,`source "${r.source}" not found`))}else e.push(new ut(n,r,'missing required property "source"'));return e=e.concat(Zn({key:n,value:r,valueSpec:a.layer,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":()=>[],type:()=>t.validateSpec({key:`${n}.type`,value:r.type,valueSpec:a.layer.type,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,object:r,objectKey:"type"}),filter:Qn,layout:t=>Zn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>ni(ht({layerType:o},t))}}),paint:t=>Zn({layer:r,key:t.key,value:t.value,style:t.style,styleSpec:t.styleSpec,validateSpec:t.validateSpec,objectElementValidators:{"*":t=>ri(ht({layerType:o},t))}})}})),e}function ai(t){let e=t.value,r=t.key,n=mn(e);return"string"!==n?[new ut(r,e,`string expected, ${n} found`)]:[]}let oi={promoteId:function({key:t,value:e}){if("string"===mn(e))return ai({key:t,value:e});{let r=[];for(let n in e)r.push(...ai({key:`${t}.${n}`,value:e[n]}));return r}}};function si(t){let e=t.value,r=t.key,n=t.styleSpec,i=t.style,a=t.validateSpec;if(!e.type)return[new ut(r,e,'"type" is required')];let o,s=Gn(e.type);switch(s){case"vector":case"raster":return o=Zn({key:r,value:e,valueSpec:n[`source_${s.replace("-","_")}`],style:t.style,styleSpec:n,objectElementValidators:oi,validateSpec:a}),o;case"raster-dem":return o=function(t){var e;let r=null!==(e=t.sourceName)&&void 0!==e?e:"",n=t.value,i=t.styleSpec,a=i.source_raster_dem,o=t.style,s=[],l=mn(n);if(void 0===n)return s;if("object"!==l)return s.push(new ut("source_raster_dem",n,`object expected, ${l} found`)),s;let c="custom"===Gn(n.encoding),u=["redFactor","greenFactor","blueFactor","baseShift"],h=t.value.encoding?`"${t.value.encoding}"`:"Default";for(let e in n)!c&&u.includes(e)?s.push(new ut(e,n[e],`In "${r}": "${e}" is only valid when "encoding" is set to "custom". ${h} encoding found`)):a[e]?s=s.concat(t.validateSpec({key:e,value:n[e],valueSpec:a[e],validateSpec:t.validateSpec,style:o,styleSpec:i})):s.push(new ut(e,n[e],`unknown property "${e}"`));return s}({sourceName:r,value:e,style:t.style,styleSpec:n,validateSpec:a}),o;case"geojson":if(o=Zn({key:r,value:e,valueSpec:n.source_geojson,style:i,styleSpec:n,validateSpec:a,objectElementValidators:oi}),e.cluster)for(let t in e.clusterProperties){let[n,i]=e.clusterProperties[t],s="string"==typeof n?[n,["accumulated"],["get",t]]:n;o.push(...Kn({key:`${r}.${t}.map`,value:i,validateSpec:a,expressionContext:"cluster-map"})),o.push(...Kn({key:`${r}.${t}.reduce`,value:s,validateSpec:a,expressionContext:"cluster-reduce"}))}return o;case"video":return Zn({key:r,value:e,valueSpec:n.source_video,style:i,validateSpec:a,styleSpec:n});case"image":return Zn({key:r,value:e,valueSpec:n.source_image,style:i,validateSpec:a,styleSpec:n});case"canvas":return[new ut(r,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return Jn({key:`${r}.type`,value:e.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:i,validateSpec:a,styleSpec:n})}}function li(t){let e=t.value,r=t.styleSpec,n=r.light,i=t.style,a=[],o=mn(e);if(void 0===e)return a;if("object"!==o)return a=a.concat([new ut("light",e,`object expected, ${o} found`)]),a;for(let o in e){let s=o.match(/^(.*)-transition$/);a=a.concat(s&&n[s[1]]&&n[s[1]].transition?t.validateSpec({key:o,value:e[o],valueSpec:r.transition,validateSpec:t.validateSpec,style:i,styleSpec:r}):n[o]?t.validateSpec({key:o,value:e[o],valueSpec:n[o],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ut(o,e[o],`unknown property "${o}"`)])}return a}function ci(t){let e=t.value,r=t.styleSpec,n=r.sky,i=t.style,a=mn(e);if(void 0===e)return[];if("object"!==a)return[new ut("sky",e,`object expected, ${a} found`)];let o=[];for(let a in e)o=o.concat(n[a]?t.validateSpec({key:a,value:e[a],valueSpec:n[a],style:i,styleSpec:r}):[new ut(a,e[a],`unknown property "${a}"`)]);return o}function ui(t){let e=t.value,r=t.styleSpec,n=r.terrain,i=t.style,a=[],o=mn(e);if(void 0===e)return a;if("object"!==o)return a=a.concat([new ut("terrain",e,`object expected, ${o} found`)]),a;for(let o in e)a=a.concat(n[o]?t.validateSpec({key:o,value:e[o],valueSpec:n[o],validateSpec:t.validateSpec,style:i,styleSpec:r}):[new ut(o,e[o],`unknown property "${o}"`)]);return a}function hi(t){let e=[],r=t.value,n=t.key;if(Array.isArray(r)){let i=[],a=[];for(let o in r)r[o].id&&i.includes(r[o].id)&&e.push(new ut(n,r,`all the sprites' ids must be unique, but ${r[o].id} is duplicated`)),i.push(r[o].id),r[o].url&&a.includes(r[o].url)&&e.push(new ut(n,r,`all the sprites' URLs must be unique, but ${r[o].url} is duplicated`)),a.push(r[o].url),e=e.concat(Zn({key:`${n}[${o}]`,value:r[o],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:t.validateSpec}));return e}return ai({key:n,value:r})}let pi={"*":()=>[],array:Yn,boolean:function(t){let e=t.value,r=t.key,n=mn(e);return"boolean"!==n?[new ut(r,e,`boolean expected, ${n} found`)]:[]},number:Xn,color:function(t){let e=t.key,r=t.value,n=mn(r);return"string"!==n?[new ut(e,r,`color expected, ${n} found`)]:Qt.parse(String(r))?[]:[new ut(e,r,`color expected, "${r}" found`)]},constants:Hn,enum:Jn,filter:Qn,function:$n,layer:ii,object:Zn,source:si,light:li,sky:ci,terrain:ui,projection:function(t){let e=t.value,r=t.styleSpec,n=r.projection,i=t.style,a=mn(e);if(void 0===e)return[];if("object"!==a)return[new ut("projection",e,`object expected, ${a} found`)];let o=[];for(let a in e)o=o.concat(n[a]?t.validateSpec({key:a,value:e[a],valueSpec:n[a],style:i,styleSpec:r}):[new ut(a,e[a],`unknown property "${a}"`)]);return o},string:ai,formatted:function(t){return 0===ai(t).length?[]:Kn(t)},resolvedImage:function(t){return 0===ai(t).length?[]:Kn(t)},padding:function(t){let e=t.key,r=t.value;if("array"===mn(r)){if(r.length<1||r.length>4)return[new ut(e,r,`padding requires 1 to 4 values; ${r.length} values found`)];let n={type:"number"},i=[];for(let a=0;a[]}})),t.constants&&(r=r.concat(Hn({key:"constants",value:t.constants,style:t,styleSpec:e,validateSpec:fi}))),yi(r)}function gi(t){return function(e){return t(((t,e)=>r(t,i(e)))(((t,e)=>{for(var r in e||(e={}))l.call(e,r)&&h(t,r,e[r]);if(o)for(var r of o(e))u.call(e,r)&&h(t,r,e[r]);return t})({},e),{validateSpec:fi}))}}function yi(t){return[].concat(t).sort(((t,e)=>t.line-e.line))}function vi(t){return function(...e){return yi(t.apply(this,e))}}mi.source=vi(gi(si)),mi.sprite=vi(gi(hi)),mi.glyphs=vi(gi(di)),mi.light=vi(gi(li)),mi.sky=vi(gi(ci)),mi.terrain=vi(gi(ui)),mi.layer=vi(gi(ii)),mi.filter=vi(gi(Qn)),mi.paintProperty=vi(gi(ri)),mi.layoutProperty=vi(gi(ni));let xi=mi,_i=xi.light,bi=xi.sky,wi=xi.paintProperty,Ti=xi.layoutProperty;function Ai(t,e){let r=!1;if(e&&e.length)for(let n of e)t.fire(new $(new Error(n.message))),r=!0;return r}class ki{constructor(t,e,r){let n=this.cells=[];if(t instanceof ArrayBuffer){this.arrayBuffer=t;let i=new Int32Array(this.arrayBuffer);t=i[0],this.d=(e=i[1])+2*(r=i[2]);for(let t=0;t=c[l+0]&&n>=c[l+1])?(o[h]=!0,a.push(i[h])):o[h]=!1}}}}_forEachCell(t,e,r,n,i,a,o,s){let l=this._convertToCellCoord(t),c=this._convertToCellCoord(e),u=this._convertToCellCoord(r),h=this._convertToCellCoord(n);for(let p=l;p<=u;p++)for(let l=c;l<=h;l++){let c=this.d*l+p;if((!s||s(this._convertFromCellCoord(p),this._convertFromCellCoord(l),this._convertFromCellCoord(p+1),this._convertFromCellCoord(l+1)))&&i.call(this,t,e,r,n,c,a,o,s))return}}_convertFromCellCoord(t){return(t-this.padding)/this.scale}_convertToCellCoord(t){return Math.max(0,Math.min(this.d-1,Math.floor(t*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let t=this.cells,e=3+this.cells.length+1+1,r=0;for(let t=0;t=0)continue;let a=t[n];i[n]=Mi[r].shallow.indexOf(n)>=0?a:Li(a,e)}t instanceof Error&&(i.message=t.message)}if(i.$name)throw new Error("$name property is reserved for worker serialization logic.");return"Object"!==r&&(i.$name=r),i}function Pi(t){if(Ii(t))return t;if(Array.isArray(t))return t.map(Pi);if("object"!=typeof t)throw new Error("can't deserialize object of type "+typeof t);let e=Ci(t)||"Object";if(!Mi[e])throw new Error(`can't deserialize unregistered class ${e}`);let{klass:r}=Mi[e];if(!r)throw new Error(`can't deserialize unregistered class ${e}`);if(r.deserialize)return r.deserialize(t);let n=Object.create(r.prototype);for(let r of Object.keys(t)){if("$name"===r)continue;let i=t[r];n[r]=Mi[e].shallow.indexOf(r)>=0?i:Pi(i)}return n}class zi{constructor(){this.first=!0}update(t,e){let r=Math.floor(t);return this.first?(this.first=!1,this.lastIntegerZoom=r,this.lastIntegerZoomTime=0,this.lastZoom=t,this.lastFloorZoom=r,!0):(this.lastFloorZoom>r?(this.lastIntegerZoom=r+1,this.lastIntegerZoomTime=e):this.lastFloorZoomt>=12272&&t<=12287,Oi=t=>t>=12288&&t<=12351,Ri=t=>t>=12448&&t<=12543,Fi=t=>t>=12736&&t<=12783,Bi=t=>t>=12800&&t<=13055,ji=t=>t>=13056&&t<=13311,Ni=t=>t>=65040&&t<=65055,Ui=t=>t>=65072&&t<=65103,Vi=t=>t>=65104&&t<=65135,qi=t=>t>=65280&&t<=65519;function Hi(t){for(let e of t)if($i(e.charCodeAt(0)))return!0;return!1}function Gi(t){for(let e of t)if(!Yi(e.charCodeAt(0)))return!1;return!0}function Wi(t){let e=t.map((t=>{try{return new RegExp(`\\p{sc=${t}}`,"u").source}catch{return null}})).filter((t=>t));return new RegExp(e.join("|"),"u")}let Zi=Wi(["Arab","Dupl","Mong","Ougr","Syrc"]);function Yi(t){return!Zi.test(String.fromCodePoint(t))}let Xi=Wi(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function $i(t){return!(746!==t&&747!==t&&(t<4352||!(Ui(t)&&!(t>=65097&&t<=65103)||ji(t)||Fi(t)||!(!Oi(t)||t>=12296&&t<=12305||t>=12308&&t<=12319||12336===t)||Bi(t)||Di(t)||(t=>t>=12688&&t<=12703)(t)||Ri(t)&&12540!==t||!(!qi(t)||65288===t||65289===t||65293===t||t>=65306&&t<=65310||65339===t||65341===t||65343===t||t>=65371&&t<=65503||65507===t||t>=65512&&t<=65519)||!(!Vi(t)||t>=65112&&t<=65118||t>=65123&&t<=65126)||Ni(t)||(t=>t>=19904&&t<=19967)(t)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(t))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(t))||Xi.test(String.fromCodePoint(t)))))}function Ki(t){return!($i(t)||(e=t,(t=>t>=128&&t<=255)(e)&&(167===e||169===e||174===e||177===e||188===e||189===e||190===e||215===e||247===e)||(t=>t>=8192&&t<=8303)(e)&&(8214===e||8224===e||8225===e||8240===e||8241===e||8251===e||8252===e||8258===e||8263===e||8264===e||8265===e||8273===e)||(t=>t>=8448&&t<=8527)(e)||(t=>t>=8528&&t<=8591)(e)||(t=>t>=8960&&t<=9215)(e)&&(e>=8960&&e<=8967||e>=8972&&e<=8991||e>=8996&&e<=9e3||9003===e||e>=9085&&e<=9114||e>=9150&&e<=9165||9167===e||e>=9169&&e<=9179||e>=9186&&e<=9215)||(t=>t>=9216&&t<=9279)(e)&&9251!==e||(t=>t>=9280&&t<=9311)(e)||(t=>t>=9312&&t<=9471)(e)||(t=>t>=9632&&t<=9727)(e)||(t=>t>=9728&&t<=9983)(e)&&!(e>=9754&&e<=9759)||(t=>t>=11008&&t<=11263)(e)&&(e>=11026&&e<=11055||e>=11088&&e<=11097||e>=11192&&e<=11243)||Oi(e)||Ri(e)||(t=>t>=57344&&t<=63743)(e)||Ui(e)||Vi(e)||qi(e)||8734===e||8756===e||8757===e||e>=9984&&e<=10087||e>=10102&&e<=10131||65532===e||65533===e));var e}let Ji=Wi(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Qi(t){return Ji.test(String.fromCodePoint(t))}function ta(t,e){return!(!e&&Qi(t)||t>=2304&&t<=3583||t>=3840&&t<=4255||(t=>t>=6016&&t<=6143)(t))}function ea(t){for(let e of t)if(Qi(e.charCodeAt(0)))return!0;return!1}let ra=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(t){this.pluginStatus=t.pluginStatus,this.pluginURL=t.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(t){this.applyArabicShaping=t.applyArabicShaping,this.processBidirectionalText=t.processBidirectionalText,this.processStyledBidirectionalText=t.processStyledBidirectionalText}isParsed(){return null!=this.applyArabicShaping&&null!=this.processBidirectionalText&&null!=this.processStyledBidirectionalText}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class na{constructor(t,e){this.zoom=t,e?(this.now=e.now,this.fadeDuration=e.fadeDuration,this.zoomHistory=e.zoomHistory,this.transition=e.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new zi,this.transition={})}isSupportedScript(t){return function(t,e){for(let r of t)if(!ta(r.charCodeAt(0),e))return!1;return!0}(t,"loaded"===ra.getRTLTextPluginStatus())}crossFadingFactor(){return 0===this.fadeDuration?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let t=this.zoom,e=t-Math.floor(t),r=this.crossFadingFactor();return t>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:e+(1-e)*r}:{fromScale:.5,toScale:1,t:1-(1-r)*e}}}class ia{constructor(t,e){this.property=t,this.value=e,this.expression=function(t,e){if(gn(t))return new In(t,e);if(kn(t)){let r=Cn(t,e);if("error"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(", "));return r.value}{let r=t;return"color"===e.type&&"string"==typeof t?r=Qt.parse(t):"padding"!==e.type||"number"!=typeof t&&!Array.isArray(t)?"variableAnchorOffsetCollection"===e.type&&Array.isArray(t)&&(r=ae.parse(t)):r=ne.parse(t),{kind:"constant",evaluate:()=>r}}}(void 0===e?t.specification.default:e,t.specification)}isDataDriven(){return"source"===this.expression.kind||"composite"===this.expression.kind}possiblyEvaluate(t,e,r){return this.property.possiblyEvaluate(this,t,e,r)}}class aa{constructor(t){this.property=t,this.value=new ia(t,void 0)}transitioned(t,e){return new sa(this.property,this.value,e,T({},t.transition,this.transition),t.now)}untransitioned(){return new sa(this.property,this.value,null,{},0)}}class oa{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitionablePropertyValues)}getValue(t){return S(this._values[t].value.value)}setValue(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new aa(this._values[t].property)),this._values[t].value=new ia(this._values[t].property,null===e?void 0:S(e))}getTransition(t){return S(this._values[t].transition)}setTransition(t,e){Object.prototype.hasOwnProperty.call(this._values,t)||(this._values[t]=new aa(this._values[t].property)),this._values[t].transition=S(e)||void 0}serialize(){let t={};for(let e of Object.keys(this._values)){let r=this.getValue(e);void 0!==r&&(t[e]=r);let n=this.getTransition(e);void 0!==n&&(t[`${e}-transition`]=n)}return t}transitioned(t,e){let r=new la(this._properties);for(let n of Object.keys(this._values))r._values[n]=this._values[n].transitioned(t,e._values[n]);return r}untransitioned(){let t=new la(this._properties);for(let e of Object.keys(this._values))t._values[e]=this._values[e].untransitioned();return t}}class sa{constructor(t,e,r,n,i){this.property=t,this.value=e,this.begin=i+n.delay||0,this.end=this.begin+n.duration||0,t.specification.transition&&(n.delay||n.duration)&&(this.prior=r)}possiblyEvaluate(t,e,r){let n=t.now||0,i=this.value.possiblyEvaluate(t,e,r),a=this.prior;if(a){if(n>this.end)return this.prior=null,i;if(this.value.isDataDriven())return this.prior=null,i;if(n=1)return 1;let e=t*t,r=e*t;return 4*(t<.5?r:3*(t-e)+r-.75)}(o))}}return i}}class la{constructor(t){this._properties=t,this._values=Object.create(t.defaultTransitioningPropertyValues)}possiblyEvaluate(t,e,r){let n=new ha(this._properties);for(let i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}hasTransition(){for(let t of Object.keys(this._values))if(this._values[t].prior)return!0;return!1}}class ca{constructor(t){this._properties=t,this._values=Object.create(t.defaultPropertyValues)}hasValue(t){return void 0!==this._values[t].value}getValue(t){return S(this._values[t].value)}setValue(t,e){this._values[t]=new ia(this._values[t].property,null===e?void 0:S(e))}serialize(){let t={};for(let e of Object.keys(this._values)){let r=this.getValue(e);void 0!==r&&(t[e]=r)}return t}possiblyEvaluate(t,e,r){let n=new ha(this._properties);for(let i of Object.keys(this._values))n._values[i]=this._values[i].possiblyEvaluate(t,e,r);return n}}class ua{constructor(t,e,r){this.property=t,this.value=e,this.parameters=r}isConstant(){return"constant"===this.value.kind}constantOr(t){return"constant"===this.value.kind?this.value.value:t}evaluate(t,e,r,n){return this.property.evaluate(this.value,this.parameters,t,e,r,n)}}class ha{constructor(t){this._properties=t,this._values=Object.create(t.defaultPossiblyEvaluatedValues)}get(t){return this._values[t]}}class pa{constructor(t){this.specification=t}possiblyEvaluate(t,e){if(t.isDataDriven())throw new Error("Value should not be data driven");return t.expression.evaluate(e)}interpolate(t,e,r){let n=Re[this.specification.type];return n?n(t,e,r):t}}class fa{constructor(t,e){this.specification=t,this.overrides=e}possiblyEvaluate(t,e,r,n){return new ua(this,"constant"===t.expression.kind||"camera"===t.expression.kind?{kind:"constant",value:t.expression.evaluate(e,null,{},r,n)}:t.expression,e)}interpolate(t,e,r){if("constant"!==t.value.kind||"constant"!==e.value.kind)return t;if(void 0===t.value.value||void 0===e.value.value)return new ua(this,{kind:"constant",value:void 0},t.parameters);let n=Re[this.specification.type];if(n){let i=n(t.value.value,e.value.value,r);return new ua(this,{kind:"constant",value:i},t.parameters)}return t}evaluate(t,e,r,n,i,a){return"constant"===t.kind?t.value:t.evaluate(e,r,n,i,a)}}class da extends fa{possiblyEvaluate(t,e,r,n){if(void 0===t.value)return new ua(this,{kind:"constant",value:void 0},e);if("constant"===t.expression.kind){let i=t.expression.evaluate(e,null,{},r,n),a="resolvedImage"===t.property.specification.type&&"string"!=typeof i?i.name:i,o=this._calculate(a,a,a,e);return new ua(this,{kind:"constant",value:o},e)}if("camera"===t.expression.kind){let r=this._calculate(t.expression.evaluate({zoom:e.zoom-1}),t.expression.evaluate({zoom:e.zoom}),t.expression.evaluate({zoom:e.zoom+1}),e);return new ua(this,{kind:"constant",value:r},e)}return new ua(this,t.expression,e)}evaluate(t,e,r,n,i,a){if("source"===t.kind){let o=t.evaluate(e,r,n,i,a);return this._calculate(o,o,o,e)}return"composite"===t.kind?this._calculate(t.evaluate({zoom:Math.floor(e.zoom)-1},r,n),t.evaluate({zoom:Math.floor(e.zoom)},r,n),t.evaluate({zoom:Math.floor(e.zoom)+1},r,n),e):t.value}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class ma{constructor(t){this.specification=t}possiblyEvaluate(t,e,r,n){if(void 0!==t.value){if("constant"===t.expression.kind){let i=t.expression.evaluate(e,null,{},r,n);return this._calculate(i,i,i,e)}return this._calculate(t.expression.evaluate(new na(Math.floor(e.zoom-1),e)),t.expression.evaluate(new na(Math.floor(e.zoom),e)),t.expression.evaluate(new na(Math.floor(e.zoom+1),e)),e)}}_calculate(t,e,r,n){return n.zoom>n.zoomHistory.lastIntegerZoom?{from:t,to:e}:{from:r,to:e}}interpolate(t){return t}}class ga{constructor(t){this.specification=t}possiblyEvaluate(t,e,r,n){return!!t.expression.evaluate(e,null,{},r,n)}interpolate(){return!1}}class ya{constructor(t){this.properties=t,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let e in t){let r=t[e];r.specification.overridable&&this.overridableProperties.push(e);let n=this.defaultPropertyValues[e]=new ia(r,void 0),i=this.defaultTransitionablePropertyValues[e]=new aa(r);this.defaultTransitioningPropertyValues[e]=i.untransitioned(),this.defaultPossiblyEvaluatedValues[e]=n.possiblyEvaluate({})}}}Si("DataDrivenProperty",fa),Si("DataConstantProperty",pa),Si("CrossFadedDataDrivenProperty",da),Si("CrossFadedProperty",ma),Si("ColorRampProperty",ga);let va="-transition";class xa extends K{constructor(t,e){if(super(),this.id=t.id,this.type=t.type,this._featureFilter={filter:()=>!0,needGeometry:!1},"custom"!==t.type&&(this.metadata=t.metadata,this.minzoom=t.minzoom,this.maxzoom=t.maxzoom,"background"!==t.type&&(this.source=t.source,this.sourceLayer=t["source-layer"],this.filter=t.filter),e.layout&&(this._unevaluatedLayout=new ca(e.layout)),e.paint)){this._transitionablePaint=new oa(e.paint);for(let e in t.paint)this.setPaintProperty(e,t.paint[e],{validate:!1});for(let e in t.layout)this.setLayoutProperty(e,t.layout[e],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new ha(e.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(t){return"visibility"===t?this.visibility:this._unevaluatedLayout.getValue(t)}setLayoutProperty(t,e,r={}){null!=e&&this._validate(Ti,`layers.${this.id}.layout.${t}`,t,e,r)||("visibility"!==t?this._unevaluatedLayout.setValue(t,e):this.visibility=e)}getPaintProperty(t){return t.endsWith(va)?this._transitionablePaint.getTransition(t.slice(0,-11)):this._transitionablePaint.getValue(t)}setPaintProperty(t,e,r={}){if(null!=e&&this._validate(wi,`layers.${this.id}.paint.${t}`,t,e,r))return!1;if(t.endsWith(va))return this._transitionablePaint.setTransition(t.slice(0,-11),e||void 0),!1;{let r=this._transitionablePaint._values[t],n="cross-faded-data-driven"===r.property.specification["property-type"],i=r.value.isDataDriven(),a=r.value;this._transitionablePaint.setValue(t,e),this._handleSpecialPaintPropertyUpdate(t);let o=this._transitionablePaint._values[t].value;return o.isDataDriven()||i||n||this._handleOverridablePaintPropertyUpdate(t,a,o)}}_handleSpecialPaintPropertyUpdate(t){}_handleOverridablePaintPropertyUpdate(t,e,r){return!1}isHidden(t){return!!(this.minzoom&&t=this.maxzoom)||"none"===this.visibility}updateTransitions(t){this._transitioningPaint=this._transitionablePaint.transitioned(t,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(t,e){t.getCrossfadeParameters&&(this._crossfadeParameters=t.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(t,void 0,e)),this.paint=this._transitioningPaint.possiblyEvaluate(t,void 0,e)}serialize(){let t={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(t.layout=t.layout||{},t.layout.visibility=this.visibility),M(t,((t,e)=>!(void 0===t||"layout"===e&&!Object.keys(t).length||"paint"===e&&!Object.keys(t).length)))}_validate(t,e,r,n,i={}){return(!i||!1!==i.validate)&&Ai(this,t.call(xi,{key:e,layerType:this.type,objectKey:r,value:n,styleSpec:J,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let t in this.paint._values){let e=this.paint.get(t);if(e instanceof ua&&pn(e.property.specification)&&("source"===e.value.kind||"composite"===e.value.kind)&&e.value.isStateDependent)return!0}return!1}}let _a={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ba{constructor(t,e){this._structArray=t,this._pos1=e*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class wa{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(t,e){return t._trim(),e&&(t.isTransferred=!0,e.push(t.arrayBuffer)),{length:t.length,arrayBuffer:t.arrayBuffer}}static deserialize(t){let e=Object.create(this.prototype);return e.arrayBuffer=t.arrayBuffer,e.length=t.length,e.capacity=t.arrayBuffer.byteLength/e.bytesPerElement,e._refreshViews(),e}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(t){this.reserve(t),this.length=t}reserve(t){if(t>this.capacity){this.capacity=Math.max(t,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let e=this.uint8;this._refreshViews(),e&&this.uint8.set(e)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function Ta(t,e=1){let r=0,n=0;return{members:t.map((t=>{let i=_a[t.type].BYTES_PER_ELEMENT,a=r=Aa(r,Math.max(e,i)),o=t.components||1;return n=Math.max(n,i),r+=i*o,{name:t.name,type:t.type,components:o,offset:a}})),size:Aa(r,Math.max(n,e)),alignment:e}}function Aa(t,e){return Math.ceil(t/e)*e}class ka extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e){let r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){let n=2*t;return this.int16[n+0]=e,this.int16[n+1]=r,t}}ka.prototype.bytesPerElement=4,Si("StructArrayLayout2i4",ka);class Ma extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r){let n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){let i=3*t;return this.int16[i+0]=e,this.int16[i+1]=r,this.int16[i+2]=n,t}}Ma.prototype.bytesPerElement=6,Si("StructArrayLayout3i6",Ma);class Sa extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r,n){let i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){let a=4*t;return this.int16[a+0]=e,this.int16[a+1]=r,this.int16[a+2]=n,this.int16[a+3]=i,t}}Sa.prototype.bytesPerElement=8,Si("StructArrayLayout4i8",Sa);class Ea extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,o){let s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t}}Ea.prototype.bytesPerElement=12,Si("StructArrayLayout2i4i12",Ea);class Ca extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,o){let s=4*t,l=8*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.uint8[l+4]=n,this.uint8[l+5]=i,this.uint8[l+6]=a,this.uint8[l+7]=o,t}}Ca.prototype.bytesPerElement=8,Si("StructArrayLayout2i4ub8",Ca);class Ia extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,e){let r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){let n=2*t;return this.float32[n+0]=e,this.float32[n+1]=r,t}}Ia.prototype.bytesPerElement=8,Si("StructArrayLayout2f8",Ia);class La extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a,o,s,l,c){let u=this.length;return this.resize(u+1),this.emplace(u,t,e,r,n,i,a,o,s,l,c)}emplace(t,e,r,n,i,a,o,s,l,c,u){let h=10*t;return this.uint16[h+0]=e,this.uint16[h+1]=r,this.uint16[h+2]=n,this.uint16[h+3]=i,this.uint16[h+4]=a,this.uint16[h+5]=o,this.uint16[h+6]=s,this.uint16[h+7]=l,this.uint16[h+8]=c,this.uint16[h+9]=u,t}}La.prototype.bytesPerElement=20,Si("StructArrayLayout10ui20",La);class Pa extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a,o,s,l,c,u,h){let p=this.length;return this.resize(p+1),this.emplace(p,t,e,r,n,i,a,o,s,l,c,u,h)}emplace(t,e,r,n,i,a,o,s,l,c,u,h,p){let f=12*t;return this.int16[f+0]=e,this.int16[f+1]=r,this.int16[f+2]=n,this.int16[f+3]=i,this.uint16[f+4]=a,this.uint16[f+5]=o,this.uint16[f+6]=s,this.uint16[f+7]=l,this.int16[f+8]=c,this.int16[f+9]=u,this.int16[f+10]=h,this.int16[f+11]=p,t}}Pa.prototype.bytesPerElement=24,Si("StructArrayLayout4i4ui4i24",Pa);class za extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,e,r){let n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){let i=3*t;return this.float32[i+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}za.prototype.bytesPerElement=12,Si("StructArrayLayout3f12",za);class Da extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(t){let e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint32[1*t+0]=e,t}}Da.prototype.bytesPerElement=4,Si("StructArrayLayout1ul4",Da);class Oa extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a,o,s,l){let c=this.length;return this.resize(c+1),this.emplace(c,t,e,r,n,i,a,o,s,l)}emplace(t,e,r,n,i,a,o,s,l,c){let u=10*t,h=5*t;return this.int16[u+0]=e,this.int16[u+1]=r,this.int16[u+2]=n,this.int16[u+3]=i,this.int16[u+4]=a,this.int16[u+5]=o,this.uint32[h+3]=s,this.uint16[u+8]=l,this.uint16[u+9]=c,t}}Oa.prototype.bytesPerElement=20,Si("StructArrayLayout6i1ul2ui20",Oa);class Ra extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,o){let s=6*t;return this.int16[s+0]=e,this.int16[s+1]=r,this.int16[s+2]=n,this.int16[s+3]=i,this.int16[s+4]=a,this.int16[s+5]=o,t}}Ra.prototype.bytesPerElement=12,Si("StructArrayLayout2i2i2i12",Ra);class Fa extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i){let a=this.length;return this.resize(a+1),this.emplace(a,t,e,r,n,i)}emplace(t,e,r,n,i,a){let o=4*t,s=8*t;return this.float32[o+0]=e,this.float32[o+1]=r,this.float32[o+2]=n,this.int16[s+6]=i,this.int16[s+7]=a,t}}Fa.prototype.bytesPerElement=16,Si("StructArrayLayout2f1f2i16",Fa);class Ba extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a){let o=this.length;return this.resize(o+1),this.emplace(o,t,e,r,n,i,a)}emplace(t,e,r,n,i,a,o){let s=16*t,l=4*t,c=8*t;return this.uint8[s+0]=e,this.uint8[s+1]=r,this.float32[l+1]=n,this.float32[l+2]=i,this.int16[c+6]=a,this.int16[c+7]=o,t}}Ba.prototype.bytesPerElement=16,Si("StructArrayLayout2ub2f2i16",Ba);class ja extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,e,r){let n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){let i=3*t;return this.uint16[i+0]=e,this.uint16[i+1]=r,this.uint16[i+2]=n,t}}ja.prototype.bytesPerElement=6,Si("StructArrayLayout3ui6",ja);class Na extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g){let y=this.length;return this.resize(y+1),this.emplace(y,t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g)}emplace(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y){let v=24*t,x=12*t,_=48*t;return this.int16[v+0]=e,this.int16[v+1]=r,this.uint16[v+2]=n,this.uint16[v+3]=i,this.uint32[x+2]=a,this.uint32[x+3]=o,this.uint32[x+4]=s,this.uint16[v+10]=l,this.uint16[v+11]=c,this.uint16[v+12]=u,this.float32[x+7]=h,this.float32[x+8]=p,this.uint8[_+36]=f,this.uint8[_+37]=d,this.uint8[_+38]=m,this.uint32[x+10]=g,this.int16[v+22]=y,t}}Na.prototype.bytesPerElement=48,Si("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Na);class Ua extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k,M,S){let E=this.length;return this.resize(E+1),this.emplace(E,t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k,M,S)}emplace(t,e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k,M,S,E){let C=32*t,I=16*t;return this.int16[C+0]=e,this.int16[C+1]=r,this.int16[C+2]=n,this.int16[C+3]=i,this.int16[C+4]=a,this.int16[C+5]=o,this.int16[C+6]=s,this.int16[C+7]=l,this.uint16[C+8]=c,this.uint16[C+9]=u,this.uint16[C+10]=h,this.uint16[C+11]=p,this.uint16[C+12]=f,this.uint16[C+13]=d,this.uint16[C+14]=m,this.uint16[C+15]=g,this.uint16[C+16]=y,this.uint16[C+17]=v,this.uint16[C+18]=x,this.uint16[C+19]=_,this.uint16[C+20]=b,this.uint16[C+21]=w,this.uint16[C+22]=T,this.uint32[I+12]=A,this.float32[I+13]=k,this.float32[I+14]=M,this.uint16[C+30]=S,this.uint16[C+31]=E,t}}Ua.prototype.bytesPerElement=64,Si("StructArrayLayout8i15ui1ul2f2ui64",Ua);class Va extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t){let e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.float32[1*t+0]=e,t}}Va.prototype.bytesPerElement=4,Si("StructArrayLayout1f4",Va);class qa extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,e,r){let n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){let i=3*t;return this.uint16[6*t+0]=e,this.float32[i+1]=r,this.float32[i+2]=n,t}}qa.prototype.bytesPerElement=12,Si("StructArrayLayout1ui2f12",qa);class Ha extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,e,r){let n=this.length;return this.resize(n+1),this.emplace(n,t,e,r)}emplace(t,e,r,n){let i=4*t;return this.uint32[2*t+0]=e,this.uint16[i+2]=r,this.uint16[i+3]=n,t}}Ha.prototype.bytesPerElement=8,Si("StructArrayLayout1ul2ui8",Ha);class Ga extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t,e){let r=this.length;return this.resize(r+1),this.emplace(r,t,e)}emplace(t,e,r){let n=2*t;return this.uint16[n+0]=e,this.uint16[n+1]=r,t}}Ga.prototype.bytesPerElement=4,Si("StructArrayLayout2ui4",Ga);class Wa extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(t){let e=this.length;return this.resize(e+1),this.emplace(e,t)}emplace(t,e){return this.uint16[1*t+0]=e,t}}Wa.prototype.bytesPerElement=2,Si("StructArrayLayout1ui2",Wa);class Za extends wa{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(t,e,r,n){let i=this.length;return this.resize(i+1),this.emplace(i,t,e,r,n)}emplace(t,e,r,n,i){let a=4*t;return this.float32[a+0]=e,this.float32[a+1]=r,this.float32[a+2]=n,this.float32[a+3]=i,t}}Za.prototype.bytesPerElement=16,Si("StructArrayLayout4f16",Za);class Ya extends ba{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new c(this.anchorPointX,this.anchorPointY)}}Ya.prototype.size=20;class Xa extends Oa{get(t){return new Ya(this,t)}}Si("CollisionBoxArray",Xa);class $a extends ba{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(t){this._structArray.uint8[this._pos1+37]=t}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(t){this._structArray.uint8[this._pos1+38]=t}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(t){this._structArray.uint32[this._pos4+10]=t}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}$a.prototype.size=48;class Ka extends Na{get(t){return new $a(this,t)}}Si("PlacedSymbolArray",Ka);class Ja extends ba{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(t){this._structArray.uint32[this._pos4+12]=t}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Ja.prototype.size=64;class Qa extends Ua{get(t){return new Ja(this,t)}}Si("SymbolInstanceArray",Qa);class to extends Va{getoffsetX(t){return this.float32[1*t+0]}}Si("GlyphOffsetArray",to);class eo extends Ma{getx(t){return this.int16[3*t+0]}gety(t){return this.int16[3*t+1]}gettileUnitDistanceFromAnchor(t){return this.int16[3*t+2]}}Si("SymbolLineVertexArray",eo);class ro extends ba{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}ro.prototype.size=12;class no extends qa{get(t){return new ro(this,t)}}Si("TextAnchorOffsetArray",no);class io extends ba{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}io.prototype.size=8;class ao extends Ha{get(t){return new io(this,t)}}Si("FeatureIndexArray",ao);class oo extends ka{}class so extends ka{}class lo extends ka{}class co extends Ea{}class uo extends Ca{}class ho extends Ia{}class po extends La{}class fo extends Pa{}class mo extends za{}class go extends Da{}class yo extends Ra{}class vo extends Ba{}class xo extends ja{}class _o extends Ga{}let bo=Ta([{name:"a_pos",components:2,type:"Int16"}],4),{members:wo}=bo;class To{constructor(t=[]){this.segments=t}prepareSegment(t,e,r,n){let i=this.segments[this.segments.length-1];return t>To.MAX_VERTEX_ARRAY_LENGTH&&C(`Max vertices per segment is ${To.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${t}`),(!i||i.vertexLength+t>To.MAX_VERTEX_ARRAY_LENGTH||i.sortKey!==n)&&(i={vertexOffset:e.length,primitiveOffset:r.length,vertexLength:0,primitiveLength:0},void 0!==n&&(i.sortKey=n),this.segments.push(i)),i}get(){return this.segments}destroy(){for(let t of this.segments)for(let e in t.vaos)t.vaos[e].destroy()}static simpleSegment(t,e,r,n){return new To([{vertexOffset:t,primitiveOffset:e,vertexLength:r,primitiveLength:n,vaos:{},sortKey:0}])}}function Ao(t,e){return 256*(t=b(Math.floor(t),0,255))+b(Math.floor(e),0,255)}To.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,Si("SegmentVector",To);let ko=Ta([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var Mo={exports:{}},So=function(t,e){var r,n,i,a,o,s,l,c;for(n=t.length-(r=3&t.length),i=e,o=3432918353,s=461845907,c=0;c>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295)<<13|i>>>19))+((5*(i>>>16)&65535)<<16)&4294967295))+((58964+(a>>>16)&65535)<<16);switch(l=0,r){case 3:l^=(255&t.charCodeAt(c+2))<<16;case 2:l^=(255&t.charCodeAt(c+1))<<8;case 1:i^=l=(65535&(l=(l=(65535&(l^=255&t.charCodeAt(c)))*o+(((l>>>16)*o&65535)<<16)&4294967295)<<15|l>>>17))*s+(((l>>>16)*s&65535)<<16)&4294967295}return i^=t.length,i=2246822507*(65535&(i^=i>>>16))+((2246822507*(i>>>16)&65535)<<16)&4294967295,i=3266489909*(65535&(i^=i>>>13))+((3266489909*(i>>>16)&65535)<<16)&4294967295,(i^=i>>>16)>>>0},Eo=function(t,e){for(var r,n=t.length,i=e^n,a=0;n>=4;)r=1540483477*(65535&(r=255&t.charCodeAt(a)|(255&t.charCodeAt(++a))<<8|(255&t.charCodeAt(++a))<<16|(255&t.charCodeAt(++a))<<24))+((1540483477*(r>>>16)&65535)<<16),i=1540483477*(65535&i)+((1540483477*(i>>>16)&65535)<<16)^(r=1540483477*(65535&(r^=r>>>24))+((1540483477*(r>>>16)&65535)<<16)),n-=4,++a;switch(n){case 3:i^=(255&t.charCodeAt(a+2))<<16;case 2:i^=(255&t.charCodeAt(a+1))<<8;case 1:i=1540483477*(65535&(i^=255&t.charCodeAt(a)))+((1540483477*(i>>>16)&65535)<<16)}return i=1540483477*(65535&(i^=i>>>13))+((1540483477*(i>>>16)&65535)<<16),(i^=i>>>15)>>>0};Mo.exports=So,Mo.exports.murmur3=So,Mo.exports.murmur2=Eo;var Co=n(Mo.exports);class Io{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(t,e,r,n){this.ids.push(Lo(t)),this.positions.push(e,r,n)}getPositions(t){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let e=Lo(t),r=0,n=this.ids.length-1;for(;r>1;this.ids[t]>=e?n=t:r=t+1}let i=[];for(;this.ids[r]===e;)i.push({index:this.positions[3*r],start:this.positions[3*r+1],end:this.positions[3*r+2]}),r++;return i}static serialize(t,e){let r=new Float64Array(t.ids),n=new Uint32Array(t.positions);return Po(r,n,0,r.length-1),e&&e.push(r.buffer,n.buffer),{ids:r,positions:n}}static deserialize(t){let e=new Io;return e.ids=t.ids,e.positions=t.positions,e.indexed=!0,e}}function Lo(t){let e=+t;return!isNaN(e)&&e<=Number.MAX_SAFE_INTEGER?e:Co(String(t))}function Po(t,e,r,n){for(;r>1],a=r-1,o=n+1;for(;;){do{a++}while(t[a]i);if(a>=o)break;zo(t,a,o),zo(e,3*a,3*o),zo(e,3*a+1,3*o+1),zo(e,3*a+2,3*o+2)}o-r`u_${t}`)),this.type=r}setUniform(t,e,r){t.set(r.constantOr(this.value))}getBinding(t,e,r){return"color"===this.type?new Fo(t,e):new Oo(t,e)}}class Uo{constructor(t,e){this.uniformNames=e.map((t=>`u_${t}`)),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(t,e){this.pixelRatioFrom=e.pixelRatio,this.pixelRatioTo=t.pixelRatio,this.patternFrom=e.tlbr,this.patternTo=t.tlbr}setUniform(t,e,r,n){let i="u_pattern_to"===n?this.patternTo:"u_pattern_from"===n?this.patternFrom:"u_pixel_ratio_to"===n?this.pixelRatioTo:"u_pixel_ratio_from"===n?this.pixelRatioFrom:null;i&&t.set(i)}getBinding(t,e,r){return"u_pattern"===r.substr(0,9)?new Ro(t,e):new Oo(t,e)}}class Vo{constructor(t,e,r,n){this.expression=t,this.type=r,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===r?2:1,offset:0}))),this.paintVertexArray=new n}populatePaintArray(t,e,r,n,i){let a=this.paintVertexArray.length,o=this.expression.evaluate(new na(0),e,{},n,[],i);this.paintVertexArray.resize(t),this._setPaintValue(a,t,o)}updatePaintArray(t,e,r,n){let i=this.expression.evaluate({zoom:0},r,n);this._setPaintValue(t,e,i)}_setPaintValue(t,e,r){if("color"===this.type){let n=jo(r);for(let r=t;r`u_${t}_t`)),this.type=r,this.useIntegerZoom=n,this.zoom=i,this.maxValue=0,this.paintVertexAttributes=e.map((t=>({name:`a_${t}`,type:"Float32",components:"color"===r?4:2,offset:0}))),this.paintVertexArray=new a}populatePaintArray(t,e,r,n,i){let a=this.expression.evaluate(new na(this.zoom),e,{},n,[],i),o=this.expression.evaluate(new na(this.zoom+1),e,{},n,[],i),s=this.paintVertexArray.length;this.paintVertexArray.resize(t),this._setPaintValue(s,t,a,o)}updatePaintArray(t,e,r,n){let i=this.expression.evaluate({zoom:this.zoom},r,n),a=this.expression.evaluate({zoom:this.zoom+1},r,n);this._setPaintValue(t,e,i,a)}_setPaintValue(t,e,r,n){if("color"===this.type){let i=jo(r),a=jo(n);for(let r=t;r`#define HAS_UNIFORM_${t}`)))}return t}getBinderAttributes(){let t=[];for(let e in this.binders){let r=this.binders[e];if(r instanceof Vo||r instanceof qo)for(let e=0;e!0){this.programConfigurations={};for(let n of t)this.programConfigurations[n.id]=new Go(n,e,r);this.needsUpload=!1,this._featureMap=new Io,this._bufferOffset=0}populatePaintArrays(t,e,r,n,i,a){for(let r in this.programConfigurations)this.programConfigurations[r].populatePaintArrays(t,e,n,i,a);void 0!==e.id&&this._featureMap.add(e.id,r,this._bufferOffset,t),this._bufferOffset=t,this.needsUpload=!0}updatePaintArrays(t,e,r,n){for(let i of r)this.needsUpload=this.programConfigurations[i.id].updatePaintArrays(t,this._featureMap,e,i,n)||this.needsUpload}get(t){return this.programConfigurations[t]}upload(t){if(this.needsUpload){for(let e in this.programConfigurations)this.programConfigurations[e].upload(t);this.needsUpload=!1}}destroy(){for(let t in this.programConfigurations)this.programConfigurations[t].destroy()}}function Zo(t,e){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[t]||[t.replace(`${e}-`,"").replace(/-/g,"_")]}function Yo(t,e,r){let n={color:{source:Ia,composite:Za},number:{source:Va,composite:Ia}},i={"line-pattern":{source:po,composite:po},"fill-pattern":{source:po,composite:po},"fill-extrusion-pattern":{source:po,composite:po}}[t];return i&&i[r]||n[e][r]}Si("ConstantBinder",No),Si("CrossFadedConstantBinder",Uo),Si("SourceExpressionBinder",Vo),Si("CrossFadedCompositeBinder",Ho),Si("CompositeExpressionBinder",qo),Si("ProgramConfiguration",Go,{omit:["_buffers"]}),Si("ProgramConfigurationSet",Wo);let Xo,$o,Ko=8192,Jo=Math.pow(2,14)-1,Qo=-Jo-1;function ts(t){let e=Ko/t.extent,r=t.loadGeometry();for(let t=0;tr.x+1||ar.y+1)&&C("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return r}function es(t,e){return{type:t.type,id:t.id,properties:t.properties,geometry:e?ts(t):[]}}function rs(t,e,r,n,i){t.emplaceBack(2*e+(n+1)/2,2*r+(i+1)/2)}class ns{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new so,this.indexArray=new xo,this.segments=new To,this.programConfigurations=new Wo(t.layers,t.zoom),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id))}populate(t,e,r){let n=this.layers[0],i=[],a=null,o=!1;"circle"===n.type&&(a=n.layout.get("circle-sort-key"),o=!a.isConstant());for(let{feature:e,id:n,index:s,sourceLayerIndex:l}of t){let t=this.layers[0]._featureFilter.needGeometry,c=es(e,t);if(!this.layers[0]._featureFilter.filter(new na(this.zoom),c,r))continue;let u=o?a.evaluate(c,{},r):void 0,h={id:n,properties:e.properties,type:e.type,sourceLayerIndex:l,index:s,geometry:t?c.geometry:ts(e),patterns:{},sortKey:u};i.push(h)}o&&i.sort(((t,e)=>t.sortKey-e.sortKey));for(let n of i){let{geometry:i,index:a,sourceLayerIndex:o}=n,s=t[a].feature;this.addFeature(n,i,a,r),e.featureIndex.insert(s,i,a,o,this.index)}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,wo),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(t,e,r,n){for(let r of e)for(let e of r){let r=e.x,n=e.y;if(r<0||r>=Ko||n<0||n>=Ko)continue;let i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,t.sortKey),a=i.vertexLength;rs(this.layoutVertexArray,r,n,-1,-1),rs(this.layoutVertexArray,r,n,1,-1),rs(this.layoutVertexArray,r,n,1,1),rs(this.layoutVertexArray,r,n,-1,1),this.indexArray.emplaceBack(a,a+1,a+2),this.indexArray.emplaceBack(a,a+3,a+2),i.vertexLength+=4,i.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,{},n)}}function is(t,e){for(let r=0;r1){if(ls(t,e))return!0;for(let n=0;n1?r:r.sub(e)._mult(i)._add(e))}function ps(t,e){let r,n,i,a=!1;for(let o=0;oe.y!=i.y>e.y&&e.x<(i.x-n.x)*(e.y-n.y)/(i.y-n.y)+n.x&&(a=!a)}return a}function fs(t,e){let r=!1;for(let n=0,i=t.length-1;ne.y!=o.y>e.y&&e.x<(o.x-a.x)*(e.y-a.y)/(o.y-a.y)+a.x&&(r=!r)}return r}function ds(t,e,r){let n=r[0],i=r[2];if(t.xi.x&&e.x>i.x||t.yi.y&&e.y>i.y)return!1;let a=I(t,e,r[0]);return a!==I(t,e,r[1])||a!==I(t,e,r[2])||a!==I(t,e,r[3])}function ms(t,e,r){let n=e.paint.get(t).value;return"constant"===n.kind?n.value:r.programConfigurations.get(e.id).getMaxValue(t)}function gs(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function ys(t,e,r,n,i){if(!e[0]&&!e[1])return t;let a=c.convert(e)._mult(i);"viewport"===r&&a._rotate(-n);let o=[];for(let e=0;eSs(t,f)))),p=u?c*o:c;var f;for(let t of n)for(let e of t){let t=u?e:Ss(e,s),r=p,n=ks([],[e.x,e.y,0,1],s);if("viewport"===this.paint.get("circle-pitch-scale")&&"map"===this.paint.get("circle-pitch-alignment")?r*=n[3]/a.cameraToCenterDistance:"map"===this.paint.get("circle-pitch-scale")&&"viewport"===this.paint.get("circle-pitch-alignment")&&(r*=a.cameraToCenterDistance/n[3]),as(h,t,r))return!0}return!1}}function Ss(t,e){let r=ks([],[t.x,t.y,0,1],e);return new c(r[0]/r[3],r[1]/r[3])}class Es extends ns{}let Cs;Si("HeatmapBucket",Es,{omit:["layers"]});var Is={get paint(){return Cs=Cs||new ya({"heatmap-radius":new fa(J.paint_heatmap["heatmap-radius"]),"heatmap-weight":new fa(J.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new pa(J.paint_heatmap["heatmap-intensity"]),"heatmap-color":new ga(J.paint_heatmap["heatmap-color"]),"heatmap-opacity":new pa(J.paint_heatmap["heatmap-opacity"])})}};function Ls(t,{width:e,height:r},n,i){if(i){if(i instanceof Uint8ClampedArray)i=new Uint8Array(i.buffer);else if(i.length!==e*r*n)throw new RangeError(`mismatched image size. expected: ${i.length} but got: ${e*r*n}`)}else i=new Uint8Array(e*r*n);return t.width=e,t.height=r,t.data=i,t}function Ps(t,{width:e,height:r},n){if(e===t.width&&r===t.height)return;let i=Ls({},{width:e,height:r},n);zs(t,i,{x:0,y:0},{x:0,y:0},{width:Math.min(t.width,e),height:Math.min(t.height,r)},n),t.width=e,t.height=r,t.data=i.data}function zs(t,e,r,n,i,a){if(0===i.width||0===i.height)return e;if(i.width>t.width||i.height>t.height||r.x>t.width-i.width||r.y>t.height-i.height)throw new RangeError("out of range source coordinates for image copy");if(i.width>e.width||i.height>e.height||n.x>e.width-i.width||n.y>e.height-i.height)throw new RangeError("out of range destination coordinates for image copy");let o=t.data,s=e.data;if(o===s)throw new Error("srcData equals dstData, so image is already copied");for(let l=0;l{e[t.evaluationKey]=a;let o=t.expression.evaluate(e);i.data[r+n+0]=Math.floor(255*o.r/o.a),i.data[r+n+1]=Math.floor(255*o.g/o.a),i.data[r+n+2]=Math.floor(255*o.b/o.a),i.data[r+n+3]=Math.floor(255*o.a)};if(t.clips)for(let e=0,i=0;e80*r){n=1/0,i=1/0;let e=-1/0,o=-1/0;for(let a=r;ae&&(e=r),s>o&&(o=s)}a=Math.max(e-n,o-i),a=0!==a?32767/a:0}return Xs(l,c,r,n,i,a,0),c}function Zs(t,e,r,n,i){let a;if(i===function(t,e,r,n){let i=0;for(let a=e,o=r-n;a0)for(let i=e;i=e;i-=n)a=dl(i/n|0,t[i],t[i+1],a);return a&&ll(a,a.next)&&(ml(a),a=a.next),a}function Ys(t,e){if(!t)return t;e||(e=t);let r,n=t;do{if(r=!1,n.steiner||!ll(n,n.next)&&0!==sl(n.prev,n,n.next))n=n.next;else{if(ml(n),n=e=n.prev,n===n.next)break;r=!0}}while(r||n!==e);return e}function Xs(t,e,r,n,i,a,o){if(!t)return;!o&&a&&function(t,e,r,n){let i=t;do{0===i.z&&(i.z=nl(i.x,i.y,e,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next}while(i!==t);i.prevZ.nextZ=null,i.prevZ=null,function(t){let e,r=1;do{let n,i=t;t=null;let a=null;for(e=0;i;){e++;let o=i,s=0;for(let t=0;t0||l>0&&o;)0!==s&&(0===l||!o||i.z<=o.z)?(n=i,i=i.nextZ,s--):(n=o,o=o.nextZ,l--),a?a.nextZ=n:t=n,n.prevZ=a,a=n;i=o}a.nextZ=null,r*=2}while(e>1)}(i)}(t,n,i,a);let s=t;for(;t.prev!==t.next;){let l=t.prev,c=t.next;if(a?Ks(t,n,i,a):$s(t))e.push(l.i,t.i,c.i),ml(t),t=c.next,s=c.next;else if((t=c)===s){o?1===o?Xs(t=Js(Ys(t),e),e,r,n,i,a,2):2===o&&Qs(t,e,r,n,i,a):Xs(Ys(t),e,r,n,i,a,1);break}}}function $s(t){let e=t.prev,r=t,n=t.next;if(sl(e,r,n)>=0)return!1;let i=e.x,a=r.x,o=n.x,s=e.y,l=r.y,c=n.y,u=ia?i>o?i:o:a>o?a:o,f=s>l?s>c?s:c:l>c?l:c,d=n.next;for(;d!==e;){if(d.x>=u&&d.x<=p&&d.y>=h&&d.y<=f&&al(i,s,a,l,o,c,d.x,d.y)&&sl(d.prev,d,d.next)>=0)return!1;d=d.next}return!0}function Ks(t,e,r,n){let i=t.prev,a=t,o=t.next;if(sl(i,a,o)>=0)return!1;let s=i.x,l=a.x,c=o.x,u=i.y,h=a.y,p=o.y,f=sl?s>c?s:c:l>c?l:c,g=u>h?u>p?u:p:h>p?h:p,y=nl(f,d,e,r,n),v=nl(m,g,e,r,n),x=t.prevZ,_=t.nextZ;for(;x&&x.z>=y&&_&&_.z<=v;){if(x.x>=f&&x.x<=m&&x.y>=d&&x.y<=g&&x!==i&&x!==o&&al(s,u,l,h,c,p,x.x,x.y)&&sl(x.prev,x,x.next)>=0||(x=x.prevZ,_.x>=f&&_.x<=m&&_.y>=d&&_.y<=g&&_!==i&&_!==o&&al(s,u,l,h,c,p,_.x,_.y)&&sl(_.prev,_,_.next)>=0))return!1;_=_.nextZ}for(;x&&x.z>=y;){if(x.x>=f&&x.x<=m&&x.y>=d&&x.y<=g&&x!==i&&x!==o&&al(s,u,l,h,c,p,x.x,x.y)&&sl(x.prev,x,x.next)>=0)return!1;x=x.prevZ}for(;_&&_.z<=v;){if(_.x>=f&&_.x<=m&&_.y>=d&&_.y<=g&&_!==i&&_!==o&&al(s,u,l,h,c,p,_.x,_.y)&&sl(_.prev,_,_.next)>=0)return!1;_=_.nextZ}return!0}function Js(t,e){let r=t;do{let n=r.prev,i=r.next.next;!ll(n,i)&&cl(n,r,r.next,i)&&pl(n,i)&&pl(i,n)&&(e.push(n.i,r.i,i.i),ml(r),ml(r.next),r=t=i),r=r.next}while(r!==t);return Ys(r)}function Qs(t,e,r,n,i,a){let o=t;do{let t=o.next.next;for(;t!==o.prev;){if(o.i!==t.i&&ol(o,t)){let s=fl(o,t);return o=Ys(o,o.next),s=Ys(s,s.next),Xs(o,e,r,n,i,a,0),void Xs(s,e,r,n,i,a,0)}t=t.next}o=o.next}while(o!==t)}function tl(t,e){return t.x-e.x}function el(t,e){let r=function(t,e){let r,n=e,i=t.x,a=t.y,o=-1/0;do{if(a<=n.y&&a>=n.next.y&&n.next.y!==n.y){let t=n.x+(a-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(t<=i&&t>o&&(o=t,r=n.x=n.x&&n.x>=l&&i!==n.x&&al(ar.x||n.x===r.x&&rl(r,n)))&&(r=n,u=e)}n=n.next}while(n!==s);return r}(t,e);if(!r)return e;let n=fl(r,t);return Ys(n,n.next),Ys(r,r.next)}function rl(t,e){return sl(t.prev,t,e.prev)<0&&sl(e.next,t,t.next)<0}function nl(t,e,r,n,i){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*i|0)|t<<8))|t<<4))|t<<2))|t<<1))|(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*i|0)|e<<8))|e<<4))|e<<2))|e<<1))<<1}function il(t){let e=t,r=t;do{(e.x=(t-o)*(a-s)&&(t-o)*(n-s)>=(r-o)*(e-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function ol(t,e){return t.next.i!==e.i&&t.prev.i!==e.i&&!function(t,e){let r=t;do{if(r.i!==t.i&&r.next.i!==t.i&&r.i!==e.i&&r.next.i!==e.i&&cl(r,r.next,t,e))return!0;r=r.next}while(r!==t);return!1}(t,e)&&(pl(t,e)&&pl(e,t)&&function(t,e){let r=t,n=!1,i=(t.x+e.x)/2,a=(t.y+e.y)/2;do{r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next}while(r!==t);return n}(t,e)&&(sl(t.prev,t,e.prev)||sl(t,e.prev,e))||ll(t,e)&&sl(t.prev,t,t.next)>0&&sl(e.prev,e,e.next)>0)}function sl(t,e,r){return(e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y)}function ll(t,e){return t.x===e.x&&t.y===e.y}function cl(t,e,r,n){let i=hl(sl(t,e,r)),a=hl(sl(t,e,n)),o=hl(sl(r,n,t)),s=hl(sl(r,n,e));return i!==a&&o!==s||!(0!==i||!ul(t,r,e))||!(0!==a||!ul(t,n,e))||!(0!==o||!ul(r,t,n))||!(0!==s||!ul(r,e,n))}function ul(t,e,r){return e.x<=Math.max(t.x,r.x)&&e.x>=Math.min(t.x,r.x)&&e.y<=Math.max(t.y,r.y)&&e.y>=Math.min(t.y,r.y)}function hl(t){return t>0?1:t<0?-1:0}function pl(t,e){return sl(t.prev,t,t.next)<0?sl(t,e,t.next)>=0&&sl(t,t.prev,e)>=0:sl(t,e,t.prev)<0||sl(t,t.next,e)<0}function fl(t,e){let r=gl(t.i,t.x,t.y),n=gl(e.i,e.x,e.y),i=t.next,a=e.prev;return t.next=e,e.prev=t,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function dl(t,e,r,n){let i=gl(t,e,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function ml(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function gl(t,e,r){return{i:t,x:e,y:r,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function yl(t,e,r){let n=r.patternDependencies,i=!1;for(let r of e){let e=r.paint.get(`${t}-pattern`);e.isConstant()||(i=!0);let a=e.constantOr(null);a&&(i=!0,n[a.to]=!0,n[a.from]=!0)}return i}function vl(t,e,r,n,i){let a=i.patternDependencies;for(let o of e){let e=o.paint.get(`${t}-pattern`).value;if("constant"!==e.kind){let t=e.evaluate({zoom:n-1},r,{},i.availableImages),s=e.evaluate({zoom:n},r,{},i.availableImages),l=e.evaluate({zoom:n+1},r,{},i.availableImages);t=t&&t.name?t.name:t,s=s&&s.name?s.name:s,l=l&&l.name?l.name:l,a[t]=!0,a[s]=!0,a[l]=!0,r.patterns[o.id]={min:t,mid:s,max:l}}}return r}class xl{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new lo,this.indexArray=new xo,this.indexArray2=new _o,this.programConfigurations=new Wo(t.layers,t.zoom),this.segments=new To,this.segments2=new To,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id))}populate(t,e,r){this.hasPattern=yl("fill",this.layers,e);let n=this.layers[0].layout.get("fill-sort-key"),i=!n.isConstant(),a=[];for(let{feature:o,id:s,index:l,sourceLayerIndex:c}of t){let t=this.layers[0]._featureFilter.needGeometry,u=es(o,t);if(!this.layers[0]._featureFilter.filter(new na(this.zoom),u,r))continue;let h=i?n.evaluate(u,{},r,e.availableImages):void 0,p={id:s,properties:o.properties,type:o.type,sourceLayerIndex:c,index:l,geometry:t?u.geometry:ts(o),patterns:{},sortKey:h};a.push(p)}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(let n of a){let{geometry:i,index:a,sourceLayerIndex:o}=n;if(this.hasPattern){let t=vl("fill",this.layers,n,this.zoom,e);this.patternFeatures.push(t)}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,o,this.index)}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)}addFeatures(t,e,r){for(let t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Gs),this.indexBuffer=t.createIndexBuffer(this.indexArray),this.indexBuffer2=t.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(t,e,r,n,i){for(let t of Ar(e,500)){let e=0;for(let r of t)e+=r.length;let r=this.segments.prepareSegment(e,this.layoutVertexArray,this.indexArray),n=r.vertexLength,i=[],a=[];for(let e of t){if(0===e.length)continue;e!==t[0]&&a.push(i.length/2);let r=this.segments2.prepareSegment(e.length,this.layoutVertexArray,this.indexArray2),n=r.vertexLength;this.layoutVertexArray.emplaceBack(e[0].x,e[0].y),this.indexArray2.emplaceBack(n+e.length-1,n),i.push(e[0].x),i.push(e[0].y);for(let t=1;t>3}if(i--,1===n||2===n)a+=t.readSVarint(),o+=t.readSVarint(),1===n&&(e&&s.push(e),e=[]),e.push(new Ml(a,o));else{if(7!==n)throw new Error("unknown command "+n);e&&e.push(e[0].clone())}}return e&&s.push(e),s},El.prototype.bbox=function(){var t=this._pbf;t.pos=this._geometry;for(var e=t.readVarint()+t.pos,r=1,n=0,i=0,a=0,o=1/0,s=-1/0,l=1/0,c=-1/0;t.pos>3}if(n--,1===r||2===r)(i+=t.readSVarint())s&&(s=i),(a+=t.readSVarint())c&&(c=a);else if(7!==r)throw new Error("unknown command "+r)}return[o,l,s,c]},El.prototype.toGeoJSON=function(t,e,r){var n,i,a=this.extent*Math.pow(2,r),o=this.extent*t,s=this.extent*e,l=this.loadGeometry(),c=El.types[this.type];function u(t){for(var e=0;e>3;e=1===n?t.readString():2===n?t.readFloat():3===n?t.readDouble():4===n?t.readVarint64():5===n?t.readVarint():6===n?t.readSVarint():7===n?t.readBoolean():null}return e}(r))}zl.prototype.feature=function(t){if(t<0||t>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[t];var e=this._pbf.readVarint()+this._pbf.pos;return new Ll(this._pbf,e,this.extent,this._keys,this._values)};var Ol=Pl;function Rl(t,e,r){if(3===t){var n=new Ol(r,r.readVarint()+r.pos);n.length&&(e[n.name]=n)}}kl.VectorTile=function(t,e){this.layers=t.readFields(Rl,{},e)},kl.VectorTileFeature=Sl,kl.VectorTileLayer=Pl;let Fl,Bl=kl.VectorTileFeature.types,jl=Math.pow(2,13);function Nl(t,e,r,n,i,a,o,s){t.emplaceBack(e,r,2*Math.floor(n*jl)+o,i*jl*2,a*jl*2,Math.round(s))}class Ul{constructor(t){this.zoom=t.zoom,this.overscaling=t.overscaling,this.layers=t.layers,this.layerIds=this.layers.map((t=>t.id)),this.index=t.index,this.hasPattern=!1,this.layoutVertexArray=new co,this.centroidVertexArray=new oo,this.indexArray=new xo,this.programConfigurations=new Wo(t.layers,t.zoom),this.segments=new To,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id))}populate(t,e,r){this.features=[],this.hasPattern=yl("fill-extrusion",this.layers,e);for(let{feature:n,id:i,index:a,sourceLayerIndex:o}of t){let t=this.layers[0]._featureFilter.needGeometry,s=es(n,t);if(!this.layers[0]._featureFilter.filter(new na(this.zoom),s,r))continue;let l={id:i,sourceLayerIndex:o,index:a,geometry:t?s.geometry:ts(n),properties:n.properties,type:n.type,patterns:{}};this.hasPattern?this.features.push(vl("fill-extrusion",this.layers,l,this.zoom,e)):this.addFeature(l,l.geometry,a,r,{}),e.featureIndex.insert(n,l.geometry,a,o,this.index,!0)}}addFeatures(t,e,r){for(let t of this.features){let{geometry:n}=t;this.addFeature(t,n,t.index,e,r)}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)}isEmpty(){return 0===this.layoutVertexArray.length&&0===this.centroidVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Al),this.centroidVertexBuffer=t.createVertexBuffer(this.centroidVertexArray,Tl.members,!0),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(t,e,r,n,i){for(let r of Ar(e,500)){let e={x:0,y:0,vertexCount:0},n=0;for(let t of r)n+=t.length;let i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let t of r){if(0===t.length||ql(t))continue;let r=0;for(let n=0;n=1){let o=t[n-1];if(!Vl(a,o)){i.vertexLength+4>To.MAX_VERTEX_ARRAY_LENGTH&&(i=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let t=a.sub(o)._perp()._unit(),n=o.dist(a);r+n>32768&&(r=0),Nl(this.layoutVertexArray,a.x,a.y,t.x,t.y,0,0,r),Nl(this.layoutVertexArray,a.x,a.y,t.x,t.y,0,1,r),e.x+=2*a.x,e.y+=2*a.y,e.vertexCount+=2,r+=n,Nl(this.layoutVertexArray,o.x,o.y,t.x,t.y,0,0,r),Nl(this.layoutVertexArray,o.x,o.y,t.x,t.y,0,1,r),e.x+=2*o.x,e.y+=2*o.y,e.vertexCount+=2;let s=i.vertexLength;this.indexArray.emplaceBack(s,s+2,s+1),this.indexArray.emplaceBack(s+1,s+2,s+3),i.vertexLength+=4,i.primitiveLength+=2}}}}if(i.vertexLength+n>To.MAX_VERTEX_ARRAY_LENGTH&&(i=this.segments.prepareSegment(n,this.layoutVertexArray,this.indexArray)),"Polygon"!==Bl[t.type])continue;let a=[],o=[],s=i.vertexLength;for(let t of r)if(0!==t.length){t!==r[0]&&o.push(a.length/2);for(let r=0;rKo)||t.y===e.y&&(t.y<0||t.y>Ko)}function ql(t){return t.every((t=>t.x<0))||t.every((t=>t.x>Ko))||t.every((t=>t.y<0))||t.every((t=>t.y>Ko))}Si("FillExtrusionBucket",Ul,{omit:["layers","features"]});var Hl={get paint(){return Fl=Fl||new ya({"fill-extrusion-opacity":new pa(J["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new fa(J["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new pa(J["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new pa(J["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new da(J["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new fa(J["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new fa(J["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new pa(J["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Gl extends xa{constructor(t){super(t,Hl)}createBucket(t){return new Ul(t)}queryRadius(){return gs(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(t,e,r,n,i,a,o,s){let l=ys(t,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),a.angle,o),u=this.paint.get("fill-extrusion-height").evaluate(e,r),h=this.paint.get("fill-extrusion-base").evaluate(e,r),p=function(t,e){let r=[];for(let n of t){let t=[n.x,n.y,0,1];ks(t,t,e),r.push(new c(t[0]/t[3],t[1]/t[3]))}return r}(l,s),f=function(t,e,r,n){let i=[],a=[],o=n[8]*e,s=n[9]*e,l=n[10]*e,u=n[11]*e,h=n[8]*r,p=n[9]*r,f=n[10]*r,d=n[11]*r;for(let e of t){let t=[],r=[];for(let i of e){let e=i.x,a=i.y,m=n[0]*e+n[4]*a+n[12],g=n[1]*e+n[5]*a+n[13],y=n[2]*e+n[6]*a+n[14],v=n[3]*e+n[7]*a+n[15],x=y+l,_=v+u,b=m+h,w=g+p,T=y+f,A=v+d,k=new c((m+o)/_,(g+s)/_);k.z=x/_,t.push(k);let M=new c(b/A,w/A);M.z=T/A,r.push(M)}i.push(t),a.push(r)}return[i,a]}(n,h,u,s);return function(t,e,r){let n=1/0;os(r,e)&&(n=Zl(r,e[0]));for(let i=0;it.id)),this.index=t.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach((t=>{this.gradients[t.id]={}})),this.layoutVertexArray=new uo,this.layoutVertexArray2=new ho,this.indexArray=new xo,this.programConfigurations=new Wo(t.layers,t.zoom),this.segments=new To,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id))}populate(t,e,r){this.hasPattern=yl("line",this.layers,e);let n=this.layers[0].layout.get("line-sort-key"),i=!n.isConstant(),a=[];for(let{feature:e,id:o,index:s,sourceLayerIndex:l}of t){let t=this.layers[0]._featureFilter.needGeometry,c=es(e,t);if(!this.layers[0]._featureFilter.filter(new na(this.zoom),c,r))continue;let u=i?n.evaluate(c,{},r):void 0,h={id:o,properties:e.properties,type:e.type,sourceLayerIndex:l,index:s,geometry:t?c.geometry:ts(e),patterns:{},sortKey:u};a.push(h)}i&&a.sort(((t,e)=>t.sortKey-e.sortKey));for(let n of a){let{geometry:i,index:a,sourceLayerIndex:o}=n;if(this.hasPattern){let t=vl("line",this.layers,n,this.zoom,e);this.patternFeatures.push(t)}else this.addFeature(n,i,a,r,{});e.featureIndex.insert(t[a].feature,i,a,o,this.index)}}update(t,e,r){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(t,e,this.stateDependentLayers,r)}addFeatures(t,e,r){for(let t of this.patternFeatures)this.addFeature(t,t.geometry,t.index,e,r)}isEmpty(){return 0===this.layoutVertexArray.length}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(t){this.uploaded||(0!==this.layoutVertexArray2.length&&(this.layoutVertexBuffer2=t.createVertexBuffer(this.layoutVertexArray2,Ql)),this.layoutVertexBuffer=t.createVertexBuffer(this.layoutVertexArray,Kl),this.indexBuffer=t.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(t),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(t){if(t.properties&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(t.properties,"mapbox_clip_end"))return{start:+t.properties.mapbox_clip_start,end:+t.properties.mapbox_clip_end}}addFeature(t,e,r,n,i){let a=this.layers[0].layout,o=a.get("line-join").evaluate(t,{}),s=a.get("line-cap"),l=a.get("line-miter-limit"),c=a.get("line-round-limit");this.lineClips=this.lineFeatureClips(t);for(let r of e)this.addLine(r,t,o,s,l,c);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,t,r,i,n)}addLine(t,e,r,n,i,a){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let e=0;e=2&&t[s-1].equals(t[s-2]);)s--;let l=0;for(;l0;if(b&&e>l){let t=c.dist(u);if(t>2*d){let e=c.sub(c.sub(u)._mult(d/t)._round());this.updateDistance(u,e),this.addCurrentVertex(e,p,0,0,m),u=e}}let T=u&&h,A=T?r:o?"butt":n;if(T&&"round"===A&&(xi&&(A="bevel"),"bevel"===A&&(x>2&&(A="flipbevel"),x100)g=f.mult(-1);else{let t=x*p.add(f).mag()/p.sub(f).mag();g._perp()._mult(t*(w?-1:1))}this.addCurrentVertex(c,g,0,0,m),this.addCurrentVertex(c,g.mult(-1),0,0,m)}else if("bevel"===A||"fakeround"===A){let t=-Math.sqrt(x*x-1),e=w?t:0,r=w?0:t;if(u&&this.addCurrentVertex(c,p,e,r,m),"fakeround"===A){let t=Math.round(180*_/Math.PI/20);for(let e=1;e2*d){let e=c.add(h.sub(c)._mult(d/t)._round());this.updateDistance(c,e),this.addCurrentVertex(e,f,0,0,m),c=e}}}}addCurrentVertex(t,e,r,n,i,a=!1){let o=e.y*n-e.x,s=-e.y-e.x*n;this.addHalfVertex(t,e.x+e.y*r,e.y-e.x*r,a,!1,r,i),this.addHalfVertex(t,o,s,a,!0,-n,i),this.distance>rc/2&&0===this.totalDistance&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(t,e,r,n,i,a))}addHalfVertex({x:t,y:e},r,n,i,a,o,s){let l=.5*(this.lineClips?this.scaledDistance*(rc-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((t<<1)+(i?1:0),(e<<1)+(a?1:0),Math.round(63*r)+128,Math.round(63*n)+128,1+(0===o?0:o<0?-1:1)|(63&l)<<2,l>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let c=s.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,c),s.primitiveLength++),a?this.e2=c:this.e1=c}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(t,e){this.distance+=t.dist(e),this.updateScaledDistance()}}Si("LineBucket",nc,{omit:["layers","patternFeatures"]});var ic={get paint(){return Xl=Xl||new ya({"line-opacity":new fa(J.paint_line["line-opacity"]),"line-color":new fa(J.paint_line["line-color"]),"line-translate":new pa(J.paint_line["line-translate"]),"line-translate-anchor":new pa(J.paint_line["line-translate-anchor"]),"line-width":new fa(J.paint_line["line-width"]),"line-gap-width":new fa(J.paint_line["line-gap-width"]),"line-offset":new fa(J.paint_line["line-offset"]),"line-blur":new fa(J.paint_line["line-blur"]),"line-dasharray":new ma(J.paint_line["line-dasharray"]),"line-pattern":new da(J.paint_line["line-pattern"]),"line-gradient":new ga(J.paint_line["line-gradient"])})},get layout(){return Yl=Yl||new ya({"line-cap":new pa(J.layout_line["line-cap"]),"line-join":new fa(J.layout_line["line-join"]),"line-miter-limit":new pa(J.layout_line["line-miter-limit"]),"line-round-limit":new pa(J.layout_line["line-round-limit"]),"line-sort-key":new fa(J.layout_line["line-sort-key"])})}};class ac extends fa{possiblyEvaluate(t,e){return e=new na(Math.floor(e.zoom),{now:e.now,fadeDuration:e.fadeDuration,zoomHistory:e.zoomHistory,transition:e.transition}),super.possiblyEvaluate(t,e)}evaluate(t,e,r,n){return e=T({},e,{zoom:Math.floor(e.zoom)}),super.evaluate(t,e,r,n)}}let oc;class sc extends xa{constructor(t){super(t,ic),this.gradientVersion=0,oc||(oc=new ac(ic.paint.properties["line-width"].specification),oc.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(t){if("line-gradient"===t){let t=this.gradientExpression();this.stepInterpolant=!(void 0===t._styleExpression)&&t._styleExpression.expression instanceof Ce,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(t,e){super.recalculate(t,e),this.paint._values["line-floorwidth"]=oc.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,t)}createBucket(t){return new nc(t)}queryRadius(t){let e=t,r=lc(ms("line-width",this,e),ms("line-gap-width",this,e)),n=ms("line-offset",this,e);return r/2+Math.abs(n)+gs(this.paint.get("line-translate"))}queryIntersectsFeature(t,e,r,n,i,a,o){let s=ys(t,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),a.angle,o),l=o/2*lc(this.paint.get("line-width").evaluate(e,r),this.paint.get("line-gap-width").evaluate(e,r)),u=this.paint.get("line-offset").evaluate(e,r);return u&&(n=function(t,e){let r=[];for(let n=0;n=3)for(let e=0;e0?e+2*t:t}let cc=Ta([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),uc=Ta([{name:"a_projected_pos",components:3,type:"Float32"}],4);Ta([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let hc=Ta([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);Ta([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let pc=Ta([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),fc=Ta([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function dc(t,e,r){return t.sections.forEach((t=>{t.text=function(t,e,r){let n=e.layout.get("text-transform").evaluate(r,{});return"uppercase"===n?t=t.toLocaleUpperCase():"lowercase"===n&&(t=t.toLocaleLowerCase()),ra.applyArabicShaping&&(t=ra.applyArabicShaping(t)),t}(t.text,e,r)})),t}Ta([{name:"triangle",components:3,type:"Uint16"}]),Ta([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),Ta([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),Ta([{type:"Float32",name:"offsetX"}]),Ta([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),Ta([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let mc={"!":"︕","#":"#",$:"$","%":"%","&":"&","(":"︵",")":"︶","*":"*","+":"+",",":"︐","-":"︲",".":"・","/":"/",":":"︓",";":"︔","<":"︿","=":"=",">":"﹀","?":"︖","@":"@","[":"﹇","\\":"\","]":"﹈","^":"^",_:"︳","`":"`","{":"︷","|":"―","}":"︸","~":"~","¢":"¢","£":"£","¥":"¥","¦":"¦","¬":"¬","¯":" ̄","–":"︲","—":"︱","‘":"﹃","’":"﹄","“":"﹁","”":"﹂","…":"︙","‧":"・","₩":"₩","、":"︑","。":"︒","〈":"︿","〉":"﹀","《":"︽","》":"︾","「":"﹁","」":"﹂","『":"﹃","』":"﹄","【":"︻","】":"︼","〔":"︹","〕":"︺","〖":"︗","〗":"︘","!":"︕","(":"︵",")":"︶",",":"︐","-":"︲",".":"・",":":"︓",";":"︔","<":"︿",">":"﹀","?":"︖","[":"﹇","]":"﹈","_":"︳","{":"︷","|":"―","}":"︸","⦅":"︵","⦆":"︶","。":"︒","「":"﹁","」":"﹂"};var gc=24,yc=_c,vc=function(t,e,r,n,i){var a,o,s=8*i-n-1,l=(1<>1,u=-7,h=r?i-1:0,p=r?-1:1,f=t[e+h];for(h+=p,a=f&(1<<-u)-1,f>>=-u,u+=s;u>0;a=256*a+t[e+h],h+=p,u-=8);for(o=a&(1<<-u)-1,a>>=-u,u+=n;u>0;o=256*o+t[e+h],h+=p,u-=8);if(0===a)a=1-c;else{if(a===l)return o?NaN:1/0*(f?-1:1);o+=Math.pow(2,n),a-=c}return(f?-1:1)*o*Math.pow(2,a-n)},xc=function(t,e,r,n,i,a){var o,s,l,c=8*a-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=n?0:a-1,d=n?1:-1,m=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,o=u):(o=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-o))<1&&(o--,l*=2),(e+=o+h>=1?p/l:p*Math.pow(2,1-h))*l>=2&&(o++,l/=2),o+h>=u?(s=0,o=u):o+h>=1?(s=(e*l-1)*Math.pow(2,i),o+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),o=0));i>=8;t[r+f]=255&s,f+=d,s/=256,i-=8);for(o=o<0;t[r+f]=255&o,f+=d,o/=256,c-=8);t[r+f-d]|=128*m};function _c(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}_c.Varint=0,_c.Fixed64=1,_c.Bytes=2,_c.Fixed32=5;var bc=4294967296,wc=1/bc,Tc=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function Ac(t){return t.type===_c.Bytes?t.readVarint()+t.pos:t.pos+1}function kc(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function Mc(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function Fc(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}_c.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,a=this.pos;this.type=7&n,t(i,e,this),this.pos===a&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=Oc(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=Fc(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=Oc(this.buf,this.pos)+Oc(this.buf,this.pos+4)*bc;return this.pos+=8,t},readSFixed64:function(){var t=Oc(this.buf,this.pos)+Fc(this.buf,this.pos+4)*bc;return this.pos+=8,t},readFloat:function(){var t=vc(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=vc(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,a=r.buf;if(n=(112&(i=a[r.pos++]))>>4,i<128||(n|=(127&(i=a[r.pos++]))<<3,i<128)||(n|=(127&(i=a[r.pos++]))<<10,i<128)||(n|=(127&(i=a[r.pos++]))<<17,i<128)||(n|=(127&(i=a[r.pos++]))<<24,i<128)||(n|=(1&(i=a[r.pos++]))<<31,i<128))return function(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var t,e,r,n=this.readVarint()+this.pos,i=this.pos;return this.pos=n,n-i>=12&&Tc?(t=this.buf,e=i,r=n,Tc.decode(t.subarray(e,r))):function(t,e,r){for(var n="",i=e;i239?4:l>223?3:l>191?2:1;if(i+u>r)break;1===u?l<128&&(c=l):2===u?128==(192&(a=t[i+1]))&&(c=(31&l)<<6|63&a)<=127&&(c=null):3===u?(o=t[i+2],128==(192&(a=t[i+1]))&&128==(192&o)&&((c=(15&l)<<12|(63&a)<<6|63&o)<=2047||c>=55296&&c<=57343)&&(c=null)):4===u&&(o=t[i+2],s=t[i+3],128==(192&(a=t[i+1]))&&128==(192&o)&&128==(192&s)&&((c=(15&l)<<18|(63&a)<<12|(63&o)<<6|63&s)<=65535||c>=1114112)&&(c=null)),null===c?(c=65533,u=1):c>65535&&(c-=65536,n+=String.fromCharCode(c>>>10&1023|55296),c=56320|1023&c),n+=String.fromCharCode(c),i+=u}return n}(this.buf,i,n)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==_c.Bytes)return t.push(this.readVarint(e));var r=Ac(this);for(t=t||[];this.pos127;);else if(e===_c.Bytes)this.pos=this.readVarint()+this.pos;else if(e===_c.Fixed32)this.pos+=4;else{if(e!==_c.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n,i,a;if(t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0)),t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),i=r,(a=e).buf[a.pos++]=127&i|128,i>>>=7,a.buf[a.pos++]=127&i|128,i>>>=7,a.buf[a.pos++]=127&i|128,i>>>=7,a.buf[a.pos++]=127&i|128,a.buf[a.pos]=127&(i>>>=7),function(t,e){var r=(7&t)<<4;e.buf[e.pos++]|=r|((t>>>=3)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),t&&(e.buf[e.pos++]=127&t)))))}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(!!t)},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,a=0;a55295&&n<57344){if(!i){n>56319||a+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&kc(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),xc(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),xc(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&kc(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,_c.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,Mc,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,Sc,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,Ic,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,Ec,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,Cc,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,Lc,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,Pc,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,zc,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,Dc,e)},writeBytesField:function(t,e){this.writeTag(t,_c.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,_c.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,_c.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,_c.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,_c.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,_c.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,_c.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,_c.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,_c.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,_c.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,!!e)}};var Bc,jc=n(yc);function Nc(t,e,r){1===t&&r.readMessage(Uc,e)}function Uc(t,e,r){if(3===t){let{id:t,bitmap:n,width:i,height:a,left:o,top:s,advance:l}=r.readMessage(Vc,{});e.push({id:t,bitmap:new Ds({width:i+6,height:a+6},n),metrics:{width:i,height:a,left:o,top:s,advance:l}})}}function Vc(t,e,r){1===t?e.id=r.readVarint():2===t?e.bitmap=r.readBytes():3===t?e.width=r.readVarint():4===t?e.height=r.readVarint():5===t?e.left=r.readSVarint():6===t?e.top=r.readSVarint():7===t&&(e.advance=r.readVarint())}function qc(t){let e=0,r=0;for(let n of t)e+=n.w*n.h,r=Math.max(r,n.w);t.sort(((t,e)=>e.h-t.h));let n=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(e/.95)),r),h:1/0}],i=0,a=0;for(let e of t)for(let t=n.length-1;t>=0;t--){let r=n[t];if(!(e.w>r.w||e.h>r.h)){if(e.x=r.x,e.y=r.y,a=Math.max(a,e.y+e.h),i=Math.max(i,e.x+e.w),e.w===r.w&&e.h===r.h){let e=n.pop();t=0&&r>=t&&$c[this.text.charCodeAt(r)];r--)e--;this.text=this.text.substring(t,e),this.sectionIndex=this.sectionIndex.slice(t,e)}substring(t,e){let r=new Yc;return r.text=this.text.substring(t,e),r.sectionIndex=this.sectionIndex.slice(t,e),r.sections=this.sections,r}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce(((t,e)=>Math.max(t,this.sections[e].scale)),0)}addTextSection(t,e){this.text+=t.text,this.sections.push(Zc.forText(t.scale,t.fontStack||e));let r=this.sections.length-1;for(let e=0;e=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Xc(e,r,n,i,a,o,s,l,c,u,h,p,f,d,m){let g,y=Yc.fromFeature(e,a);p===t.ah.vertical&&y.verticalizePunctuation();let{processBidirectionalText:v,processStyledBidirectionalText:x}=ra;if(v&&1===y.sections.length){g=[];let t=v(y.toString(),iu(y,u,o,r,i,d));for(let e of t){let t=new Yc;t.text=e,t.sections=y.sections;for(let r=0;r0&&n>w&&(w=n)}else{let t=n[m.fontStack],e=t&&t[y];if(e&&e.rect)T=e.rect,_=e.metrics;else{let t=r[m.fontStack],e=t&&t[y];if(!e)continue;_=e.metrics}v=(a-m.scale)*gc}M?(e.verticalizable=!0,b.push({glyph:y,imageName:A,x:f,y:d+v,vertical:M,scale:m.scale,fontStack:m.fontStack,sectionIndex:g,metrics:_,rect:T}),f+=k*m.scale+u):(b.push({glyph:y,imageName:A,x:f,y:d+v,vertical:M,scale:m.scale,fontStack:m.fontStack,sectionIndex:g,metrics:_,rect:T}),f+=_.advance*m.scale+u)}0!==b.length&&(m=Math.max(f-u,m),ou(b,0,b.length-1,y,w)),f=0;let T=o*a+w;_.lineOffset=Math.max(w,l),d+=T,g=Math.max(T,g),++v}var x;let _=d-Wc,{horizontalAlign:b,verticalAlign:w}=au(s);(function(t,e,r,n,i,a,o,s,l){let c=(e-r)*i,u=0;u=a!==o?-s*n-Wc:(-n*l+.5)*o;for(let e of t)for(let t of e.positionedGlyphs)t.x+=c,t.y+=u})(e.positionedLines,y,b,w,m,g,o,_,a.length),e.top+=-w*_,e.bottom=e.top+_,e.left+=-b*m,e.right=e.left+m}(b,r,n,i,g,s,l,c,p,u,f,m),!function(t){for(let e of t)if(0!==e.positionedGlyphs.length)return!1;return!0}(_)&&b}let $c={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},Kc={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},Jc={40:!0};function Qc(t,e,r,n,i,a){if(e.imageName){let t=n[e.imageName];return t?t.displaySize[0]*e.scale*gc/a+i:0}{let n=r[e.fontStack],a=n&&n[t];return a?a.metrics.advance*e.scale+i:0}}function tu(t,e,r,n){let i=Math.pow(t-e,2);return n?t=0,c=0;for(let r=0;rc){let t=Math.ceil(a/c);i*=t/o,o=t}return{x1:n,y1:i,x2:n+a,y2:i+o}}function cu(t,e,r,n,i,a){let o,s=t.image;if(s.content){let t=s.content,e=s.pixelRatio||1;o=[t[0]/e,t[1]/e,s.displaySize[0]-t[2]/e,s.displaySize[1]-t[3]/e]}let l,c,u,h,p=e.left*a,f=e.right*a;"width"===r||"both"===r?(h=i[0]+p-n[3],c=i[0]+f+n[1]):(h=i[0]+(p+f-s.displaySize[0])/2,c=h+s.displaySize[0]);let d=e.top*a,m=e.bottom*a;return"height"===r||"both"===r?(l=i[1]+d-n[0],u=i[1]+m+n[2]):(l=i[1]+(d+m-s.displaySize[1])/2,u=l+s.displaySize[1]),{image:s,top:l,right:c,bottom:u,left:h,collisionPadding:o}}let uu=128,hu=32640;function pu(t,e){let{expression:r}=e;if("constant"===r.kind)return{kind:"constant",layoutSize:r.evaluate(new na(t+1))};if("source"===r.kind)return{kind:"source"};{let{zoomStops:e,interpolationType:n}=r,i=0;for(;it.id)),this.index=e.index,this.pixelRatio=e.pixelRatio,this.sourceLayerIndex=e.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=bs([]),this.placementViewportMatrix=bs([]);let r=this.layers[0]._unevaluatedLayout._values;this.textSizeData=pu(this.zoom,r["text-size"]),this.iconSizeData=pu(this.zoom,r["icon-size"]);let n=this.layers[0].layout,i=n.get("symbol-sort-key"),a=n.get("symbol-z-order");this.canOverlap="never"!==fu(n,"text-overlap","text-allow-overlap")||"never"!==fu(n,"icon-overlap","icon-allow-overlap")||n.get("text-ignore-placement")||n.get("icon-ignore-placement"),this.sortFeaturesByKey="viewport-y"!==a&&!i.isConstant(),this.sortFeaturesByY=("viewport-y"===a||"auto"===a&&!this.sortFeaturesByKey)&&this.canOverlap,"point"===n.get("symbol-placement")&&(this.writingModes=n.get("text-writing-mode").map((e=>t.ah[e]))),this.stateDependentLayerIds=this.layers.filter((t=>t.isStateDependent())).map((t=>t.id)),this.sourceID=e.sourceID}createArrays(){this.text=new bu(new Wo(this.layers,this.zoom,(t=>/^text/.test(t)))),this.icon=new bu(new Wo(this.layers,this.zoom,(t=>/^icon/.test(t)))),this.glyphOffsetArray=new to,this.lineVertexArray=new eo,this.symbolInstances=new Qa,this.textAnchorOffsets=new no}calculateGlyphDependencies(t,e,r,n,i){for(let a=0;a0)&&("constant"!==o.value.kind||o.value.value.length>0),u="constant"!==l.value.kind||!!l.value.value||Object.keys(l.parameters).length>0,h=a.get("symbol-sort-key");if(this.features=[],!c&&!u)return;let p=r.iconDependencies,f=r.glyphDependencies,d=r.availableImages,m=new na(this.zoom);for(let{feature:r,id:s,index:l,sourceLayerIndex:g}of e){let e,y,v=i._featureFilter.needGeometry,x=es(r,v);if(!i._featureFilter.filter(m,x,n))continue;if(v||(x.geometry=ts(r)),c){let t=i.getValueAndResolveTokens("text-field",x,n,d),r=re.factory(t),a=this.hasRTLText=this.hasRTLText||_u(r);(!a||"unavailable"===ra.getRTLTextPluginStatus()||a&&ra.isParsed())&&(e=dc(r,i,x))}if(u){let t=i.getValueAndResolveTokens("icon-image",x,n,d);y=t instanceof oe?t:oe.fromString(t)}if(!e&&!y)continue;let _=this.sortFeaturesByKey?h.evaluate(x,{},n):void 0;if(this.features.push({id:s,text:e,icon:y,index:l,sourceLayerIndex:g,geometry:x.geometry,properties:r.properties,type:gu[r.type],sortKey:_}),y&&(p[y.name]=!0),e){let r=o.evaluate(x,{},n).join(","),i="viewport"!==a.get("text-rotation-alignment")&&"point"!==a.get("symbol-placement");this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(t.ah.vertical)>=0;for(let t of e.sections)if(t.image)p[t.image.name]=!0;else{let n=Hi(e.toString()),a=t.fontStack||r,o=f[a]=f[a]||{};this.calculateGlyphDependencies(t.text,o,i,this.allowVerticalPlacement,n)}}}"line"===a.get("symbol-placement")&&(this.features=function(t){let e={},r={},n=[],i=0;function a(e){n.push(t[e]),i++}function o(t,e,i){let a=r[t];return delete r[t],r[e]=a,n[a].geometry[0].pop(),n[a].geometry[0]=n[a].geometry[0].concat(i[0]),a}function s(t,r,i){let a=e[r];return delete e[r],e[t]=a,n[a].geometry[0].shift(),n[a].geometry[0]=i[0].concat(n[a].geometry[0]),a}function l(t,e,r){let n=r?e[0][e[0].length-1]:e[0][0];return`${t}:${n.x}:${n.y}`}for(let c=0;ct.geometry))}(this.features)),this.sortFeaturesByKey&&this.features.sort(((t,e)=>t.sortKey-e.sortKey))}update(t,e,r){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(t,e,this.layers,r),this.icon.programConfigurations.updatePaintArrays(t,e,this.layers,r))}isEmpty(){return 0===this.symbolInstances.length&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(t){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(t),this.iconCollisionBox.upload(t)),this.text.upload(t,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(t,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(t,e){let r=this.lineVertexArray.length;if(void 0!==t.segment){let r=t.dist(e[t.segment+1]),n=t.dist(e[t.segment]),i={};for(let n=t.segment+1;n=0;r--)i[r]={x:e[r].x,y:e[r].y,tileUnitDistanceFromAnchor:n},r>0&&(n+=e[r-1].dist(e[r]));for(let t=0;t0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(t,e){let r=t.placedSymbolArray.get(e),n=r.vertexStartIndex+4*r.numGlyphs;for(let e=r.vertexStartIndex;en[t]-n[e]||i[e]-i[t])),a}addToSortKeyRanges(t,e){let r=this.sortKeyRanges[this.sortKeyRanges.length-1];r&&r.sortKey===e?r.symbolInstanceEnd=t+1:this.sortKeyRanges.push({sortKey:e,symbolInstanceStart:t,symbolInstanceEnd:t+1})}sortFeatures(t){if(this.sortFeaturesByY&&this.sortedAngle!==t&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(t),this.sortedAngle=t,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let t of this.symbolInstanceIndexes){let e=this.symbolInstances.get(t);this.featureSortOrder.push(e.featureIndex),[e.rightJustifiedTextSymbolIndex,e.centerJustifiedTextSymbolIndex,e.leftJustifiedTextSymbolIndex].forEach(((t,e,r)=>{t>=0&&r.indexOf(t)===e&&this.addIndicesForPlacedSymbol(this.text,t)})),e.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,e.verticalPlacedTextSymbolIndex),e.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.placedIconSymbolIndex),e.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,e.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}Si("SymbolBucket",Tu,{omit:["layers","collisionBoxArray","features","compareText"]}),Tu.MAX_GLYPHS=65535,Tu.addDynamicAttributes=xu;var Au={get paint(){return mu=mu||new ya({"icon-opacity":new fa(J.paint_symbol["icon-opacity"]),"icon-color":new fa(J.paint_symbol["icon-color"]),"icon-halo-color":new fa(J.paint_symbol["icon-halo-color"]),"icon-halo-width":new fa(J.paint_symbol["icon-halo-width"]),"icon-halo-blur":new fa(J.paint_symbol["icon-halo-blur"]),"icon-translate":new pa(J.paint_symbol["icon-translate"]),"icon-translate-anchor":new pa(J.paint_symbol["icon-translate-anchor"]),"text-opacity":new fa(J.paint_symbol["text-opacity"]),"text-color":new fa(J.paint_symbol["text-color"],{runtimeType:vt,getOverride:t=>t.textColor,hasOverride:t=>!!t.textColor}),"text-halo-color":new fa(J.paint_symbol["text-halo-color"]),"text-halo-width":new fa(J.paint_symbol["text-halo-width"]),"text-halo-blur":new fa(J.paint_symbol["text-halo-blur"]),"text-translate":new pa(J.paint_symbol["text-translate"]),"text-translate-anchor":new pa(J.paint_symbol["text-translate-anchor"])})},get layout(){return du=du||new ya({"symbol-placement":new pa(J.layout_symbol["symbol-placement"]),"symbol-spacing":new pa(J.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new pa(J.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new fa(J.layout_symbol["symbol-sort-key"]),"symbol-z-order":new pa(J.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new pa(J.layout_symbol["icon-allow-overlap"]),"icon-overlap":new pa(J.layout_symbol["icon-overlap"]),"icon-ignore-placement":new pa(J.layout_symbol["icon-ignore-placement"]),"icon-optional":new pa(J.layout_symbol["icon-optional"]),"icon-rotation-alignment":new pa(J.layout_symbol["icon-rotation-alignment"]),"icon-size":new fa(J.layout_symbol["icon-size"]),"icon-text-fit":new pa(J.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new pa(J.layout_symbol["icon-text-fit-padding"]),"icon-image":new fa(J.layout_symbol["icon-image"]),"icon-rotate":new fa(J.layout_symbol["icon-rotate"]),"icon-padding":new fa(J.layout_symbol["icon-padding"]),"icon-keep-upright":new pa(J.layout_symbol["icon-keep-upright"]),"icon-offset":new fa(J.layout_symbol["icon-offset"]),"icon-anchor":new fa(J.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new pa(J.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new pa(J.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new pa(J.layout_symbol["text-rotation-alignment"]),"text-field":new fa(J.layout_symbol["text-field"]),"text-font":new fa(J.layout_symbol["text-font"]),"text-size":new fa(J.layout_symbol["text-size"]),"text-max-width":new fa(J.layout_symbol["text-max-width"]),"text-line-height":new pa(J.layout_symbol["text-line-height"]),"text-letter-spacing":new fa(J.layout_symbol["text-letter-spacing"]),"text-justify":new fa(J.layout_symbol["text-justify"]),"text-radial-offset":new fa(J.layout_symbol["text-radial-offset"]),"text-variable-anchor":new pa(J.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new fa(J.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new fa(J.layout_symbol["text-anchor"]),"text-max-angle":new pa(J.layout_symbol["text-max-angle"]),"text-writing-mode":new pa(J.layout_symbol["text-writing-mode"]),"text-rotate":new fa(J.layout_symbol["text-rotate"]),"text-padding":new pa(J.layout_symbol["text-padding"]),"text-keep-upright":new pa(J.layout_symbol["text-keep-upright"]),"text-transform":new fa(J.layout_symbol["text-transform"]),"text-offset":new fa(J.layout_symbol["text-offset"]),"text-allow-overlap":new pa(J.layout_symbol["text-allow-overlap"]),"text-overlap":new pa(J.layout_symbol["text-overlap"]),"text-ignore-placement":new pa(J.layout_symbol["text-ignore-placement"]),"text-optional":new pa(J.layout_symbol["text-optional"])})}};class ku{constructor(t){if(void 0===t.property.overrides)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=t.property.overrides?t.property.overrides.runtimeType:dt,this.defaultValue=t}evaluate(t){if(t.formattedSection){let e=this.defaultValue.property.overrides;if(e&&e.hasOverride(t.formattedSection))return e.getOverride(t.formattedSection)}return t.feature&&t.featureState?this.defaultValue.evaluate(t.feature,t.featureState):this.defaultValue.property.specification.default}eachChild(t){this.defaultValue.isConstant()||t(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}Si("FormatSectionOverride",ku,{omit:["defaultValue"]});class Mu extends xa{constructor(t){super(t,Au)}recalculate(t,e){if(super.recalculate(t,e),"auto"===this.layout.get("icon-rotation-alignment")&&(this.layout._values["icon-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-rotation-alignment")&&(this.layout._values["text-rotation-alignment"]="point"!==this.layout.get("symbol-placement")?"map":"viewport"),"auto"===this.layout.get("text-pitch-alignment")&&(this.layout._values["text-pitch-alignment"]="map"===this.layout.get("text-rotation-alignment")?"map":"viewport"),"auto"===this.layout.get("icon-pitch-alignment")&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),"point"===this.layout.get("symbol-placement")){let t=this.layout.get("text-writing-mode");if(t){let e=[];for(let r of t)e.indexOf(r)<0&&e.push(r);this.layout._values["text-writing-mode"]=e}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(t,e,r,n){let i=this.layout.get(t).evaluate(e,{},r,n),a=this._unevaluatedLayout._values[t];return a.isDataDriven()||kn(a.value)||!i?i:(o=e.properties,i.replace(/{([^{}]+)}/g,((t,e)=>o&&e in o?String(o[e]):"")));var o}createBucket(t){return new Tu(t)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let t of Au.paint.overridableProperties){if(!Mu.hasPaintOverride(this.layout,t))continue;let e=this.paint.get(t),r=new ku(e),n=new An(r,e.property.specification),i=null;i="constant"===e.value.kind||"source"===e.value.kind?new Sn("source",n):new En("composite",n,e.value.zoomStops),this.paint._values[t]=new ua(e.property,i,e.parameters)}}_handleOverridablePaintPropertyUpdate(t,e,r){return!(!this.layout||e.isDataDriven()||r.isDataDriven())&&Mu.hasPaintOverride(this.layout,t)}static hasPaintOverride(t,e){let r=t.get("text-field"),n=Au.paint.properties[e],i=!1,a=t=>{for(let e of t)if(n.overrides&&n.overrides.hasOverride(e))return void(i=!0)};if("constant"===r.value.kind&&r.value.value instanceof re)a(r.value.value.sections);else if("source"===r.value.kind){let t=e=>{i||(e instanceof he&&ce(e.value)===wt?a(e.value.sections):e instanceof Ke?a(e.sections):e.eachChild(t))},e=r.value;e._styleExpression&&t(e._styleExpression.expression)}return i}}let Su;var Eu={get paint(){return Su=Su||new ya({"background-color":new pa(J.paint_background["background-color"]),"background-pattern":new ma(J.paint_background["background-pattern"]),"background-opacity":new pa(J.paint_background["background-opacity"])})}};class Cu extends xa{constructor(t){super(t,Eu)}}let Iu;var Lu={get paint(){return Iu=Iu||new ya({"raster-opacity":new pa(J.paint_raster["raster-opacity"]),"raster-hue-rotate":new pa(J.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new pa(J.paint_raster["raster-brightness-min"]),"raster-brightness-max":new pa(J.paint_raster["raster-brightness-max"]),"raster-saturation":new pa(J.paint_raster["raster-saturation"]),"raster-contrast":new pa(J.paint_raster["raster-contrast"]),"raster-resampling":new pa(J.paint_raster["raster-resampling"]),"raster-fade-duration":new pa(J.paint_raster["raster-fade-duration"])})}};class Pu extends xa{constructor(t){super(t,Lu)}}class zu extends xa{constructor(t){super(t,{}),this.onAdd=t=>{this.implementation.onAdd&&this.implementation.onAdd(t,t.painter.context.gl)},this.onRemove=t=>{this.implementation.onRemove&&this.implementation.onRemove(t,t.painter.context.gl)},this.implementation=t}is3D(){return"3d"===this.implementation.renderingMode}hasOffscreenPass(){return void 0!==this.implementation.prerender}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class Du{constructor(t){this._methodToThrottle=t,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout((()=>{this._triggered=!1,this._methodToThrottle()}),0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let Ou=6371008.8;class Ru{constructor(t,e){if(isNaN(t)||isNaN(e))throw new Error(`Invalid LngLat object: (${t}, ${e})`);if(this.lng=+t,this.lat=+e,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Ru(w(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(t){let e=Math.PI/180,r=this.lat*e,n=t.lat*e,i=Math.sin(r)*Math.sin(n)+Math.cos(r)*Math.cos(n)*Math.cos((t.lng-this.lng)*e);return Ou*Math.acos(Math.min(i,1))}static convert(t){if(t instanceof Ru)return t;if(Array.isArray(t)&&(2===t.length||3===t.length))return new Ru(Number(t[0]),Number(t[1]));if(!Array.isArray(t)&&"object"==typeof t&&null!==t)return new Ru(Number("lng"in t?t.lng:t.lon),Number(t.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let Fu=2*Math.PI*Ou;function Bu(t){return Fu*Math.cos(t*Math.PI/180)}function ju(t){return(180+t)/360}function Nu(t){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+t*Math.PI/360)))/360}function Uu(t,e){return t/Bu(e)}function Vu(t){return 360/Math.PI*Math.atan(Math.exp((180-360*t)*Math.PI/180))-90}class qu{constructor(t,e,r=0){this.x=+t,this.y=+e,this.z=+r}static fromLngLat(t,e=0){let r=Ru.convert(t);return new qu(ju(r.lng),Nu(r.lat),Uu(e,r.lat))}toLngLat(){return new Ru(360*this.x-180,Vu(this.y))}toAltitude(){return this.z*Bu(Vu(this.y))}meterInMercatorCoordinateUnits(){return 1/Fu*(t=Vu(this.y),1/Math.cos(t*Math.PI/180));var t}}function Hu(t,e,r){var n=2*Math.PI*6378137/256/Math.pow(2,r);return[t*n-2*Math.PI*6378137/2,e*n-2*Math.PI*6378137/2]}class Gu{constructor(t,e,r){if(i=e,a=r,(n=t)<0||n>25||a<0||a>=Math.pow(2,n)||i<0||i>=Math.pow(2,n))throw new Error(`x=${e}, y=${r}, z=${t} outside of bounds. 0<=x<${Math.pow(2,t)}, 0<=y<${Math.pow(2,t)} 0<=z<=25 `);var n,i,a;this.z=t,this.x=e,this.y=r,this.key=Yu(0,t,t,e,r)}equals(t){return this.z===t.z&&this.x===t.x&&this.y===t.y}url(t,e,r){let n=(a=this.y,o=this.z,s=Hu(256*(i=this.x),256*(a=Math.pow(2,o)-a-1),o),l=Hu(256*(i+1),256*(a+1),o),s[0]+","+s[1]+","+l[0]+","+l[1]);var i,a,o,s,l;let c=function(t,e,r){let n,i="";for(let a=t;a>0;a--)n=1<1?"@2x":"").replace(/{quadkey}/g,c).replace(/{bbox-epsg-3857}/g,n)}isChildOf(t){let e=this.z-t.z;return e>0&&t.x===this.x>>e&&t.y===this.y>>e}getTilePoint(t){let e=Math.pow(2,this.z);return new c((t.x*e-this.x)*Ko,(t.y*e-this.y)*Ko)}toString(){return`${this.z}/${this.x}/${this.y}`}}class Wu{constructor(t,e){this.wrap=t,this.canonical=e,this.key=Yu(t,e.z,e.z,e.x,e.y)}}class Zu{constructor(t,e,r,n,i){if(t= z; overscaledZ = ${t}; z = ${r}`);this.overscaledZ=t,this.wrap=e,this.canonical=new Gu(r,+n,+i),this.key=Yu(e,t,r,n,i)}clone(){return new Zu(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(t){return this.overscaledZ===t.overscaledZ&&this.wrap===t.wrap&&this.canonical.equals(t.canonical)}scaledTo(t){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);let e=this.canonical.z-t;return t>this.canonical.z?new Zu(t,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Zu(t,this.wrap,t,this.canonical.x>>e,this.canonical.y>>e)}calculateScaledKey(t,e){if(t>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${t}; overscaledZ = ${this.overscaledZ}`);let r=this.canonical.z-t;return t>this.canonical.z?Yu(this.wrap*+e,t,this.canonical.z,this.canonical.x,this.canonical.y):Yu(this.wrap*+e,t,t,this.canonical.x>>r,this.canonical.y>>r)}isChildOf(t){if(t.wrap!==this.wrap)return!1;let e=this.canonical.z-t.canonical.z;return 0===t.overscaledZ||t.overscaledZ>e&&t.canonical.y===this.canonical.y>>e}children(t){if(this.overscaledZ>=t)return[new Zu(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let e=this.canonical.z+1,r=2*this.canonical.x,n=2*this.canonical.y;return[new Zu(e,this.wrap,e,r,n),new Zu(e,this.wrap,e,r+1,n),new Zu(e,this.wrap,e,r,n+1),new Zu(e,this.wrap,e,r+1,n+1)]}isLessThan(t){return this.wrapt.wrap)&&(this.overscaledZt.overscaledZ)&&(this.canonical.xt.canonical.x)&&this.canonical.ythis.max&&(this.max=r),r=this.dim+1||e<-1||e>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(e+1)*this.stride+(t+1)}unpack(t,e,r){return t*this.redFactor+e*this.greenFactor+r*this.blueFactor-this.baseShift}getPixels(){return new Os({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(t,e,r){if(this.dim!==t.dim)throw new Error("dem dimension mismatch");let n=e*this.dim,i=e*this.dim+this.dim,a=r*this.dim,o=r*this.dim+this.dim;switch(e){case-1:n=i-1;break;case 1:i=n+1}switch(r){case-1:a=o-1;break;case 1:o=a+1}let s=-e*this.dim,l=-r*this.dim;for(let e=a;e=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${t} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[t]}}class Ku{constructor(t,e,r,n,i){this.type="Feature",this._vectorTileFeature=t,t._z=e,t._x=r,t._y=n,this.properties=t.properties,this.id=i}get geometry(){return void 0===this._geometry&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(t){this._geometry=t}toJSON(){let t={geometry:this.geometry};for(let e in this)"_geometry"!==e&&"_vectorTileFeature"!==e&&(t[e]=this[e]);return t}}class Ju{constructor(t,e){this.tileID=t,this.x=t.canonical.x,this.y=t.canonical.y,this.z=t.canonical.z,this.grid=new ki(Ko,16,0),this.grid3D=new ki(Ko,16,0),this.featureIndexArray=new ao,this.promoteId=e}insert(t,e,r,n,i,a){let o=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(r,n,i);let s=a?this.grid3D:this.grid;for(let t=0;t=0&&n[3]>=0&&s.insert(o,n[0],n[1],n[2],n[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new kl.VectorTile(new jc(this.rawTileData)).layers,this.sourceLayerCoder=new $u(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(t,e,r,n){this.loadVTLayers();let i=t.params||{},a=Ko/t.tileSize/t.scale,o=Dn(i.filter),s=t.queryGeometry,l=t.queryPadding*a,u=th(s),h=this.grid.query(u.minX-l,u.minY-l,u.maxX+l,u.maxY+l),p=th(t.cameraQueryGeometry),f=this.grid3D.query(p.minX-l,p.minY-l,p.maxX+l,p.maxY+l,((e,r,n,i)=>function(t,e,r,n,i){for(let a of t)if(e<=a.x&&r<=a.y&&n>=a.x&&i>=a.y)return!0;let a=[new c(e,r),new c(e,i),new c(n,i),new c(n,r)];if(t.length>2)for(let e of a)if(fs(t,e))return!0;for(let e=0;e(p||(p=ts(e)),r.queryIntersectsFeature(s,e,n,p,this.z,t.transform,a,t.pixelPosMatrix))))}return m}loadMatchingFeature(t,e,r,n,i,a,o,s,l,c,u){let h=this.bucketLayerIDs[e];if(a&&!function(t,e){for(let r=0;r=0)return!0;return!1}(a,h))return;let p=this.sourceLayerCoder.decode(r),f=this.vtLayers[p].feature(n);if(i.needGeometry){let t=es(f,!0);if(!i.filter(new na(this.tileID.overscaledZ),t,this.tileID.canonical))return}else if(!i.filter(new na(this.tileID.overscaledZ),f))return;let d=this.getId(f,p);for(let e=0;e{let o=e instanceof ha?e.get(a):null;return o&&o.evaluate?o.evaluate(r,n,i):o}))}function th(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(let a of t)e=Math.min(e,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x),i=Math.max(i,a.y);return{minX:e,minY:r,maxX:n,maxY:i}}function eh(t,e){return e-t}function rh(t,e,r,n,i){let a=[];for(let o=0;o=n&&u.x>=n||(o.x>=n?o=new c(n,o.y+(n-o.x)/(u.x-o.x)*(u.y-o.y))._round():u.x>=n&&(u=new c(n,o.y+(n-o.x)/(u.x-o.x)*(u.y-o.y))._round()),o.y>=i&&u.y>=i||(o.y>=i?o=new c(o.x+(i-o.y)/(u.y-o.y)*(u.x-o.x),i)._round():u.y>=i&&(u=new c(o.x+(i-o.y)/(u.y-o.y)*(u.x-o.x),i)._round()),s&&o.equals(s[s.length-1])||(s=[o],a.push(s)),s.push(u)))))}}return a}Si("FeatureIndex",Ju,{omit:["rawTileData","sourceLayerCoder"]});class nh extends c{constructor(t,e,r,n){super(t,e),this.angle=r,void 0!==n&&(this.segment=n)}clone(){return new nh(this.x,this.y,this.angle,this.segment)}}function ih(t,e,r,n,i){if(void 0===e.segment||0===r)return!0;let a=e,o=e.segment+1,s=0;for(;s>-r/2;){if(o--,o<0)return!1;s-=t[o].dist(a),a=t[o]}s+=t[o].dist(t[o+1]),o++;let l=[],c=0;for(;sn;)c-=l.shift().angleDelta;if(c>i)return!1;o++,s+=e.dist(r)}return!0}function ah(t){let e=0;for(let r=0;rc){let u=(c-l)/a,h=Re.number(n.x,i.x,u),p=Re.number(n.y,i.y,u),f=new nh(h,p,i.angleTo(n),r);return f._round(),!o||ih(t,f,s,o,e)?f:void 0}l+=a}}function ch(t,e,r,n,i,a,o,s,l){let c=oh(n,a,o),u=sh(n,i),h=u*o,p=0===t[0].x||t[0].x===l||0===t[0].y||t[0].y===l;return e-h=0&&y=0&&v=0&&p+c<=u){let r=new nh(y,v,m,e);r._round(),n&&!ih(t,r,a,n,i)||f.push(r)}}h+=d}return s||f.length||o||(f=uh(t,h/2,r,n,i,a,o,!0,l)),f}function hh(t,e,r,n){let i=[],a=t.image,o=a.pixelRatio,s=a.paddedRect.w-2,l=a.paddedRect.h-2,u={x1:t.left,y1:t.top,x2:t.right,y2:t.bottom},h=a.stretchX||[[0,s]],p=a.stretchY||[[0,l]],f=(t,e)=>t+e[1]-e[0],d=h.reduce(f,0),m=p.reduce(f,0),g=s-d,y=l-m,v=0,x=d,_=0,b=m,w=0,T=g,A=0,k=y;if(a.content&&n){let e=a.content,r=e[2]-e[0],n=e[3]-e[1];(a.textFitWidth||a.textFitHeight)&&(u=lu(t)),v=ph(h,0,e[0]),_=ph(p,0,e[1]),x=ph(h,e[0],e[2]),b=ph(p,e[1],e[3]),w=e[0]-v,A=e[1]-_,T=r-x,k=n-b}let M=u.x1,S=u.y1,E=u.x2-M,C=u.y2-S,I=(t,n,i,s)=>{let l=dh(t.stretch-v,x,E,M),u=mh(t.fixed-w,T,t.stretch,d),h=dh(n.stretch-_,b,C,S),p=mh(n.fixed-A,k,n.stretch,m),f=dh(i.stretch-v,x,E,M),g=mh(i.fixed-w,T,i.stretch,d),y=dh(s.stretch-_,b,C,S),I=mh(s.fixed-A,k,s.stretch,m),L=new c(l,h),P=new c(f,h),z=new c(f,y),D=new c(l,y),O=new c(u/o,p/o),R=new c(g/o,I/o),F=e*Math.PI/180;if(F){let t=Math.sin(F),e=Math.cos(F),r=[e,-t,t,e];L._matMult(r),P._matMult(r),D._matMult(r),z._matMult(r)}let B=t.stretch+t.fixed,j=n.stretch+n.fixed;return{tl:L,tr:P,bl:D,br:z,tex:{x:a.paddedRect.x+1+B,y:a.paddedRect.y+1+j,w:i.stretch+i.fixed-B,h:s.stretch+s.fixed-j},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:O,pixelOffsetBR:R,minFontScaleX:T/o/E,minFontScaleY:k/o/C,isSDF:r}};if(n&&(a.stretchX||a.stretchY)){let t=fh(h,g,d),e=fh(p,y,m);for(let r=0;r0&&(n=Math.max(10,n),this.circleDiameter=n)}else{let l=null!==(h=a.image)&&void 0!==h&&h.content&&(a.image.textFitWidth||a.image.textFitHeight)?lu(a):{x1:a.left,y1:a.top,x2:a.right,y2:a.bottom};l.y1=l.y1*o-s[0],l.y2=l.y2*o+s[2],l.x1=l.x1*o-s[3],l.x2=l.x2*o+s[1];let p=a.collisionPadding;if(p&&(l.x1-=p[0]*o,l.y1-=p[1]*o,l.x2+=p[2]*o,l.y2+=p[3]*o),u){let t=new c(l.x1,l.y1),e=new c(l.x2,l.y1),r=new c(l.x1,l.y2),n=new c(l.x2,l.y2),i=u*Math.PI/180;t._rotate(i),e._rotate(i),r._rotate(i),n._rotate(i),l.x1=Math.min(t.x,e.x,r.x,n.x),l.x2=Math.max(t.x,e.x,r.x,n.x),l.y1=Math.min(t.y,e.y,r.y,n.y),l.y2=Math.max(t.y,e.y,r.y,n.y)}t.emplaceBack(e.x,e.y,l.x1,l.y1,l.x2,l.y2,r,n,i)}this.boxEndIndex=t.length}}class yh{constructor(t=[],e=(t,e)=>te?1:0){if(this.data=t,this.length=this.data.length,this.compare=e,this.length>0)for(let t=(this.length>>1)-1;t>=0;t--)this._down(t)}push(t){this.data.push(t),this._up(this.length++)}pop(){if(0===this.length)return;let t=this.data[0],e=this.data.pop();return--this.length>0&&(this.data[0]=e,this._down(0)),t}peek(){return this.data[0]}_up(t){let{data:e,compare:r}=this,n=e[t];for(;t>0;){let i=t-1>>1,a=e[i];if(r(n,a)>=0)break;e[t]=a,t=i}e[t]=n}_down(t){let{data:e,compare:r}=this,n=this.length>>1,i=e[t];for(;t=0)break;e[t]=e[n],t=n}e[t]=i}}function vh(t,e=1,r=!1){let n=1/0,i=1/0,a=-1/0,o=-1/0,s=t[0];for(let t=0;ta)&&(a=e.x),(!t||e.y>o)&&(o=e.y)}let l=Math.min(a-n,o-i),u=l/2,h=new yh([],xh);if(0===l)return new c(n,i);for(let e=n;ep.d||!p.d)&&(p=n,r&&console.log("found best %d after %d probes",Math.round(1e4*n.d)/1e4,f)),n.max-p.d<=e||(u=n.h/2,h.push(new _h(n.p.x-u,n.p.y-u,u,t)),h.push(new _h(n.p.x+u,n.p.y-u,u,t)),h.push(new _h(n.p.x-u,n.p.y+u,u,t)),h.push(new _h(n.p.x+u,n.p.y+u,u,t)),f+=4)}return r&&(console.log(`num probes: ${f}`),console.log(`best distance: ${p.d}`)),p.p}function xh(t,e){return e.max-t.max}function _h(t,e,r,n){this.p=new c(t,e),this.h=r,this.d=function(t,e){let r=!1,n=1/0;for(let i=0;it.y!=s.y>t.y&&t.x<(s.x-i.x)*(t.y-i.y)/(s.y-i.y)+i.x&&(r=!r),n=Math.min(n,hs(t,i,s))}}return(r?1:-1)*Math.sqrt(n)}(this.p,n),this.max=this.d+this.h*Math.SQRT2}var bh;t.aq=void 0,(bh=t.aq||(t.aq={}))[bh.center=1]="center",bh[bh.left=2]="left",bh[bh.right=3]="right",bh[bh.top=4]="top",bh[bh.bottom=5]="bottom",bh[bh["top-left"]=6]="top-left",bh[bh["top-right"]=7]="top-right",bh[bh["bottom-left"]=8]="bottom-left",bh[bh["bottom-right"]=9]="bottom-right";let wh=Number.POSITIVE_INFINITY;function Th(t,e){return e[1]!==wh?function(t,e,r){let n=0,i=0;switch(e=Math.abs(e),r=Math.abs(r),t){case"top-right":case"top-left":case"top":i=r-7;break;case"bottom-right":case"bottom-left":case"bottom":i=7-r}switch(t){case"top-right":case"bottom-right":case"right":n=-e;break;case"top-left":case"bottom-left":case"left":n=e}return[n,i]}(t,e[0],e[1]):function(t,e){let r=0,n=0;e<0&&(e=0);let i=e/Math.SQRT2;switch(t){case"top-right":case"top-left":n=i-7;break;case"bottom-right":case"bottom-left":n=7-i;break;case"bottom":n=7-e;break;case"top":n=e-7}switch(t){case"top-right":case"bottom-right":r=-i;break;case"top-left":case"bottom-left":r=i;break;case"left":r=e;break;case"right":r=-e}return[r,n]}(t,e[0])}function Ah(t,e,r){var n;let i=t.layout,a=null===(n=i.get("text-variable-anchor-offset"))||void 0===n?void 0:n.evaluate(e,{},r);if(a){let t=a.values,e=[];for(let r=0;rt*gc));n.startsWith("top")?i[1]-=7:n.startsWith("bottom")&&(i[1]+=7),e[r+1]=i}return new ae(e)}let o=i.get("text-variable-anchor");if(o){let n;n=void 0!==t._unevaluatedLayout.getValue("text-radial-offset")?[i.get("text-radial-offset").evaluate(e,{},r)*gc,wh]:i.get("text-offset").evaluate(e,{},r).map((t=>t*gc));let a=[];for(let t of o)a.push(t,Th(t,n));return new ae(a)}return null}function kh(t){switch(t){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function Mh(e,r,n,i,a,o,s,l,c,u,h){let p=o.textMaxSize.evaluate(r,{});void 0===p&&(p=s);let f,d=e.layers[0].layout,m=d.get("icon-offset").evaluate(r,{},h),g=Eh(n.horizontal),y=s/24,v=e.tilePixelRatio*y,x=e.tilePixelRatio*p/24,_=e.tilePixelRatio*l,b=e.tilePixelRatio*d.get("symbol-spacing"),w=d.get("text-padding")*e.tilePixelRatio,T=function(t,e,r,n=1){let i=t.get("icon-padding").evaluate(e,{},r),a=i&&i.values;return[a[0]*n,a[1]*n,a[2]*n,a[3]*n]}(d,r,h,e.tilePixelRatio),A=d.get("text-max-angle")/180*Math.PI,k="viewport"!==d.get("text-rotation-alignment")&&"point"!==d.get("symbol-placement"),M="map"===d.get("icon-rotation-alignment")&&"point"!==d.get("symbol-placement"),S=d.get("symbol-placement"),E=b/2,I=d.get("icon-text-fit");i&&"none"!==I&&(e.allowVerticalPlacement&&n.vertical&&(f=cu(i,n.vertical,I,d.get("icon-text-fit-padding"),m,y)),g&&(i=cu(i,g,I,d.get("icon-text-fit-padding"),m,y)));let L=(l,p)=>{p.x<0||p.x>=Ko||p.y<0||p.y>=Ko||function(e,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x,_,b,w,T,A,k){let M,S,E,I,L=e.addToLineVertexArray(r,n),P=0,z=0,D=0,O=0,R=-1,F=-1,B={},j=Co("");if(e.allowVerticalPlacement&&i.vertical){let t=l.layout.get("text-rotate").evaluate(b,{},A)+90;E=new gh(c,r,u,h,p,i.vertical,f,d,m,t),s&&(I=new gh(c,r,u,h,p,s,y,v,m,t))}if(a){let n=l.layout.get("icon-rotate").evaluate(b,{}),i="none"!==l.layout.get("icon-text-fit"),o=hh(a,n,T,i),f=s?hh(s,n,T,i):void 0;S=new gh(c,r,u,h,p,a,y,v,!1,n),P=4*o.length;let d=e.iconSizeData,m=null;"source"===d.kind?(m=[uu*l.layout.get("icon-size").evaluate(b,{})],m[0]>hu&&C(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)):"composite"===d.kind&&(m=[uu*w.compositeIconSizes[0].evaluate(b,{},A),uu*w.compositeIconSizes[1].evaluate(b,{},A)],(m[0]>hu||m[1]>hu)&&C(`${e.layerIds[0]}: Value for "icon-size" is >= 255. Reduce your "icon-size".`)),e.addSymbols(e.icon,o,m,_,x,b,t.ah.none,r,L.lineStartIndex,L.lineLength,-1,A),R=e.icon.placedSymbolArray.length-1,f&&(z=4*f.length,e.addSymbols(e.icon,f,m,_,x,b,t.ah.vertical,r,L.lineStartIndex,L.lineLength,-1,A),F=e.icon.placedSymbolArray.length-1)}let N=Object.keys(i.horizontal);for(let n of N){let a=i.horizontal[n];if(!M){j=Co(a.text);let t=l.layout.get("text-rotate").evaluate(b,{},A);M=new gh(c,r,u,h,p,a,f,d,m,t)}let s=1===a.positionedLines.length;if(D+=Sh(e,r,a,o,l,m,b,g,L,i.vertical?t.ah.horizontal:t.ah.horizontalOnly,s?N:[n],B,R,w,A),s)break}i.vertical&&(O+=Sh(e,r,i.vertical,o,l,m,b,g,L,t.ah.vertical,["vertical"],B,F,w,A));let U=M?M.boxStartIndex:e.collisionBoxArray.length,V=M?M.boxEndIndex:e.collisionBoxArray.length,q=E?E.boxStartIndex:e.collisionBoxArray.length,H=E?E.boxEndIndex:e.collisionBoxArray.length,G=S?S.boxStartIndex:e.collisionBoxArray.length,W=S?S.boxEndIndex:e.collisionBoxArray.length,Z=I?I.boxStartIndex:e.collisionBoxArray.length,Y=I?I.boxEndIndex:e.collisionBoxArray.length,X=-1,$=(t,e)=>t&&t.circleDiameter?Math.max(t.circleDiameter,e):e;X=$(M,X),X=$(E,X),X=$(S,X),X=$(I,X);let K=X>-1?1:0;K&&(X*=k/gc),e.glyphOffsetArray.length>=Tu.MAX_GLYPHS&&C("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),void 0!==b.sortKey&&e.addToSortKeyRanges(e.symbolInstances.length,b.sortKey);let J=Ah(l,b,A),[Q,tt]=function(e,r){let n=e.length,i=r?.values;if(i?.length>0)for(let r=0;r=0?B.right:-1,B.center>=0?B.center:-1,B.left>=0?B.left:-1,B.vertical||-1,R,F,j,U,V,q,H,G,W,Z,Y,u,D,O,P,z,K,0,f,X,Q,tt)}(e,p,l,n,i,a,f,e.layers[0],e.collisionBoxArray,r.index,r.sourceLayerIndex,e.index,v,[w,w,w,w],k,c,_,T,M,m,r,o,u,h,s)};if("line"===S)for(let t of rh(r.geometry,0,0,Ko,Ko)){let r=ch(t,b,A,n.vertical||g,i,24,x,e.overscaling,Ko);for(let n of r)g&&Ch(e,g.text,E,n)||L(t,n)}else if("line-center"===S){for(let t of r.geometry)if(t.length>1){let e=lh(t,A,n.vertical||g,i,24,x);e&&L(t,e)}}else if("Polygon"===r.type)for(let t of Ar(r.geometry,0)){let e=vh(t,16);L(t[0],new nh(e.x,e.y,0))}else if("LineString"===r.type)for(let t of r.geometry)L(t,new nh(t[0].x,t[0].y,0));else if("Point"===r.type)for(let t of r.geometry)for(let e of t)L([e],new nh(e.x,e.y,0))}function Sh(t,e,r,n,i,a,o,s,l,u,h,p,f,d,m){let g=function(t,e,r,n,i,a,o,s){let l=n.layout.get("text-rotate").evaluate(a,{})*Math.PI/180,u=[];for(let t of e.positionedLines)for(let n of t.positionedGlyphs){if(!n.rect)continue;let a=n.rect||{},h=4,p=!0,f=1,d=0,m=(i||s)&&n.vertical,g=n.metrics.advance*n.scale/2;if(s&&e.verticalizable&&(d=t.lineOffset/2-(n.imageName?-(gc-n.metrics.width*n.scale)/2:(n.scale-1)*gc)),n.imageName){let t=o[n.imageName];p=t.sdf,f=t.pixelRatio,h=1/f}let y=i?[n.x+g,n.y]:[0,0],v=i?[0,0]:[n.x+g+r[0],n.y+r[1]-d],x=[0,0];m&&(x=v,v=[0,0]);let _=n.metrics.isDoubleResolution?2:1,b=(n.metrics.left-h)*n.scale-g+v[0],w=(-n.metrics.top-h)*n.scale+v[1],T=b+a.w/_*n.scale/f,A=w+a.h/_*n.scale/f,k=new c(b,w),M=new c(T,w),S=new c(b,A),E=new c(T,A);if(m){let t=new c(-g,g-Wc),e=-Math.PI/2,r=12-g,i=new c(22-r,-(n.imageName?r:0)),a=new c(...x);k._rotateAround(e,t)._add(i)._add(a),M._rotateAround(e,t)._add(i)._add(a),S._rotateAround(e,t)._add(i)._add(a),E._rotateAround(e,t)._add(i)._add(a)}if(l){let t=Math.sin(l),e=Math.cos(l),r=[e,-t,t,e];k._matMult(r),M._matMult(r),S._matMult(r),E._matMult(r)}let C=new c(0,0),I=new c(0,0);u.push({tl:k,tr:M,bl:S,br:E,tex:a,writingMode:e.writingMode,glyphOffset:y,sectionIndex:n.sectionIndex,isSDF:p,pixelOffsetTL:C,pixelOffsetBR:I,minFontScaleX:0,minFontScaleY:0})}return u}(0,r,s,i,a,o,n,t.allowVerticalPlacement),y=t.textSizeData,v=null;"source"===y.kind?(v=[uu*i.layout.get("text-size").evaluate(o,{})],v[0]>hu&&C(`${t.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)):"composite"===y.kind&&(v=[uu*d.compositeTextSizes[0].evaluate(o,{},m),uu*d.compositeTextSizes[1].evaluate(o,{},m)],(v[0]>hu||v[1]>hu)&&C(`${t.layerIds[0]}: Value for "text-size" is >= 255. Reduce your "text-size".`)),t.addSymbols(t.text,g,v,s,a,o,u,e,l.lineStartIndex,l.lineLength,f,m);for(let e of h)p[e]=t.text.placedSymbolArray.length-1;return 4*g.length}function Eh(t){for(let e in t)return t[e];return null}function Ch(t,e,r,n){let i=t.compareText;if(e in i){let t=i[e];for(let e=t.length-1;e>=0;e--)if(n.dist(t[e])>4;if(1!==n)throw new Error(`Got v${n} data when expected v1.`);let i=Ih[15&r];if(!i)throw new Error("Unrecognized array type.");let[a]=new Uint16Array(t,2,1),[o]=new Uint32Array(t,4,1);return new Lh(o,a,i,t)}constructor(t,e=64,r=Float64Array,n){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=r,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let i=Ih.indexOf(this.ArrayType),a=2*t*this.ArrayType.BYTES_PER_ELEMENT,o=t*this.IndexArrayType.BYTES_PER_ELEMENT,s=(8-o%8)%8;if(i<0)throw new Error(`Unexpected typed array class: ${r}.`);n&&n instanceof ArrayBuffer?(this.data=n,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+o+s,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+a+o+s),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+o+s,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+i]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)}add(t,e){let r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=t,this.coords[this._pos++]=e,r}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return Ph(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,r,n){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:i,coords:a,nodeSize:o}=this,s=[0,i.length-1,0],l=[];for(;s.length;){let c=s.pop()||0,u=s.pop()||0,h=s.pop()||0;if(u-h<=o){for(let o=h;o<=u;o++){let s=a[2*o],c=a[2*o+1];s>=t&&s<=r&&c>=e&&c<=n&&l.push(i[o])}continue}let p=h+u>>1,f=a[2*p],d=a[2*p+1];f>=t&&f<=r&&d>=e&&d<=n&&l.push(i[p]),(0===c?t<=f:e<=d)&&(s.push(h),s.push(p-1),s.push(1-c)),(0===c?r>=f:n>=d)&&(s.push(p+1),s.push(u),s.push(1-c))}return l}within(t,e,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:n,coords:i,nodeSize:a}=this,o=[0,n.length-1,0],s=[],l=r*r;for(;o.length;){let c=o.pop()||0,u=o.pop()||0,h=o.pop()||0;if(u-h<=a){for(let r=h;r<=u;r++)Rh(i[2*r],i[2*r+1],t,e)<=l&&s.push(n[r]);continue}let p=h+u>>1,f=i[2*p],d=i[2*p+1];Rh(f,d,t,e)<=l&&s.push(n[p]),(0===c?t-r<=f:e-r<=d)&&(o.push(h),o.push(p-1),o.push(1-c)),(0===c?t+r>=f:e+r>=d)&&(o.push(p+1),o.push(u),o.push(1-c))}return s}}function Ph(t,e,r,n,i,a){if(i-n<=r)return;let o=n+i>>1;zh(t,e,o,n,i,a),Ph(t,e,r,n,o-1,1-a),Ph(t,e,r,o+1,i,1-a)}function zh(t,e,r,n,i,a){for(;i>n;){if(i-n>600){let o=i-n+1,s=r-n+1,l=Math.log(o),c=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*c*(o-c)/o)*(s-o/2<0?-1:1);zh(t,e,r,Math.max(n,Math.floor(r-s*c/o+u)),Math.min(i,Math.floor(r+(o-s)*c/o+u)),a)}let o=e[2*r+a],s=n,l=i;for(Dh(t,e,n,r),e[2*i+a]>o&&Dh(t,e,n,i);so;)l--}e[2*n+a]===o?Dh(t,e,n,l):(l++,Dh(t,e,l,i)),l<=r&&(n=l+1),r<=l&&(i=l-1)}}function Dh(t,e,r,n){Oh(t,r,n),Oh(e,2*r,2*n),Oh(e,2*r+1,2*n+1)}function Oh(t,e,r){let n=t[e];t[e]=t[r],t[r]=n}function Rh(t,e,r,n){let i=t-r,a=e-n;return i*i+a*a}var Fh;t.bg=void 0,(Fh=t.bg||(t.bg={})).create="create",Fh.load="load",Fh.fullLoad="fullLoad";let Bh=null,jh=[],Nh=1e3/60,Uh="loadTime",Vh="fullLoadTime",qh={mark(t){performance.mark(t)},frame(t){let e=t;null!=Bh&&jh.push(e-Bh),Bh=e},clearMetrics(){Bh=null,jh=[],performance.clearMeasures(Uh),performance.clearMeasures(Vh);for(let e in t.bg)performance.clearMarks(t.bg[e])},getPerformanceMetrics(){performance.measure(Uh,t.bg.create,t.bg.load),performance.measure(Vh,t.bg.create,t.bg.fullLoad);let e=performance.getEntriesByName(Uh)[0].duration,r=performance.getEntriesByName(Vh)[0].duration,n=jh.length,i=1/(jh.reduce(((t,e)=>t+e),0)/n/1e3),a=jh.filter((t=>t>Nh)).reduce(((t,e)=>t+(e-Nh)/Nh),0);return{loadTime:e,fullLoadTime:r,fps:i,percentDroppedFrames:a/(n+a)*100,totalFrames:n}}};t.$=class extends Sa{},t.A=_s,t.B=bi,t.C=function(t){if(null==P){let e=t.navigator?t.navigator.userAgent:null;P=!!t.safari||!(!e||!(/\b(iPad|iPhone|iPod)\b/.test(e)||e.match("Safari")&&!e.match("Chrome")))}return P},t.D=pa,t.E=K,t.F=class{constructor(t,e){var r,n,i;this.target=t,this.mapId=e,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new Du((()=>this.process())),this.subscription=(r=this.target,n="message",i=t=>this.receive(t),r.addEventListener(n,i,!1),{unsubscribe:()=>{r.removeEventListener(n,i,!1)}}),this.globalScope=L(self)?t:window}registerMessageHandler(t,e){this.messageHandlers[t]=e}sendAsync(t,e){return new Promise(((r,n)=>{let i=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[i]={resolve:r,reject:n},e&&e.signal.addEventListener("abort",(()=>{delete this.resolveRejects[i];let e={id:i,type:"",origin:location.origin,targetMapId:t.targetMapId,sourceMapId:this.mapId};this.target.postMessage(e)}),{once:!0});let a=[],o=Object.assign(Object.assign({},t),{id:i,sourceMapId:this.mapId,origin:location.origin,data:Li(t.data,a)});this.target.postMessage(o,{transfer:a})}))}receive(t){let e=t.data,r=e.id;if(!("file://"!==e.origin&&"file://"!==location.origin&&"resource://android"!==e.origin&&"resource://android"!==location.origin&&e.origin!==location.origin||e.targetMapId&&this.mapId!==e.targetMapId)){if(""===e.type){delete this.tasks[r];let t=this.abortControllers[r];return delete this.abortControllers[r],void(t&&t.abort())}if(L(self)||e.mustQueue)return this.tasks[r]=e,this.taskQueue.push(r),void this.invoker.trigger();this.processTask(r,e)}}process(){if(0===this.taskQueue.length)return;let t=this.taskQueue.shift(),e=this.tasks[t];delete this.tasks[t],this.taskQueue.length>0&&this.invoker.trigger(),e&&this.processTask(t,e)}processTask(t,r){return e(this,void 0,void 0,(function*(){if(""===r.type){let e=this.resolveRejects[t];return delete this.resolveRejects[t],e?void(r.error?e.reject(Pi(r.error)):e.resolve(Pi(r.data))):void 0}if(!this.messageHandlers[r.type])return void this.completeTask(t,new Error(`Could not find a registered handler for ${r.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let e=Pi(r.data),n=new AbortController;this.abortControllers[t]=n;try{let i=yield this.messageHandlers[r.type](r.sourceMapId,e,n);this.completeTask(t,null,i)}catch(e){this.completeTask(t,e)}}))}completeTask(t,e,r){let n=[];delete this.abortControllers[t];let i={id:t,type:"",sourceMapId:this.mapId,origin:location.origin,error:e?Li(e):null,data:Li(r,n)};this.target.postMessage(i,{transfer:n})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},t.G=V,t.H=function(){var t=new _s(16);return _s!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t},t.I=Hc,t.J=function(t,e,r){var n,i,a,o,s,l,c,u,h,p,f,d,m=r[0],g=r[1],y=r[2];return e===t?(t[12]=e[0]*m+e[4]*g+e[8]*y+e[12],t[13]=e[1]*m+e[5]*g+e[9]*y+e[13],t[14]=e[2]*m+e[6]*g+e[10]*y+e[14],t[15]=e[3]*m+e[7]*g+e[11]*y+e[15]):(i=e[1],a=e[2],o=e[3],s=e[4],l=e[5],c=e[6],u=e[7],h=e[8],p=e[9],f=e[10],d=e[11],t[0]=n=e[0],t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=c,t[7]=u,t[8]=h,t[9]=p,t[10]=f,t[11]=d,t[12]=n*m+s*g+h*y+e[12],t[13]=i*m+l*g+p*y+e[13],t[14]=a*m+c*g+f*y+e[14],t[15]=o*m+u*g+d*y+e[15]),t},t.K=function(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t},t.L=ws,t.M=function(t,e){let r={};for(let n=0;n{let e=window.document.createElement("video");return e.muted=!0,new Promise((r=>{e.onloadstart=()=>{r(e)};for(let r of t){let t=window.document.createElement("source");W(r)||(e.crossOrigin="Anonymous"),t.src=r,e.appendChild(t)}}))},t.a4=function(){return A++},t.a5=Xa,t.a6=Tu,t.a7=Dn,t.a8=es,t.a9=Ku,t.aA=function(t){if("custom"===t.type)return new zu(t);switch(t.type){case"background":return new Cu(t);case"circle":return new Ms(t);case"fill":return new bl(t);case"fill-extrusion":return new Gl(t);case"heatmap":return new js(t);case"hillshade":return new Us(t);case"line":return new sc(t);case"raster":return new Pu(t);case"symbol":return new Mu(t)}},t.aB=S,t.aC=function(t,e){if(!t)return[{command:"setStyle",args:[e]}];let r=[];try{if(!et(t.version,e.version))return[{command:"setStyle",args:[e]}];et(t.center,e.center)||r.push({command:"setCenter",args:[e.center]}),et(t.zoom,e.zoom)||r.push({command:"setZoom",args:[e.zoom]}),et(t.bearing,e.bearing)||r.push({command:"setBearing",args:[e.bearing]}),et(t.pitch,e.pitch)||r.push({command:"setPitch",args:[e.pitch]}),et(t.sprite,e.sprite)||r.push({command:"setSprite",args:[e.sprite]}),et(t.glyphs,e.glyphs)||r.push({command:"setGlyphs",args:[e.glyphs]}),et(t.transition,e.transition)||r.push({command:"setTransition",args:[e.transition]}),et(t.light,e.light)||r.push({command:"setLight",args:[e.light]}),et(t.terrain,e.terrain)||r.push({command:"setTerrain",args:[e.terrain]}),et(t.sky,e.sky)||r.push({command:"setSky",args:[e.sky]}),et(t.projection,e.projection)||r.push({command:"setProjection",args:[e.projection]});let n={},i=[];!function(t,e,r,n){let i;for(i in e=e||{},t=t||{})Object.prototype.hasOwnProperty.call(t,i)&&(Object.prototype.hasOwnProperty.call(e,i)||it(i,r,n));for(i in e)Object.prototype.hasOwnProperty.call(e,i)&&(Object.prototype.hasOwnProperty.call(t,i)?et(t[i],e[i])||("geojson"===t[i].type&&"geojson"===e[i].type&&ot(t,e,i)?rt(r,{command:"setGeoJSONSourceData",args:[i,e[i].data]}):at(i,e,r,n)):nt(i,e,r))}(t.sources,e.sources,i,n);let a=[];t.layers&&t.layers.forEach((t=>{"source"in t&&n[t.source]?r.push({command:"removeLayer",args:[t.id]}):a.push(t)})),r=r.concat(i),function(t,e,r){e=e||[];let n,i,a,o,s,l=(t=t||[]).map(lt),c=e.map(lt),u=t.reduce(ct,{}),h=e.reduce(ct,{}),p=l.slice(),f=Object.create(null);for(let t=0,e=0;t@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,((t,r,n,i)=>{let a=n||i;return e[r]=!a||a.toLowerCase(),""})),e["max-age"]){let t=parseInt(e["max-age"],10);isNaN(t)?delete e["max-age"]:e["max-age"]=t}return e},t.ab=function(t,e){let r=[];for(let n in t)n in e||r.push(n);return r},t.ac=b,t.ad=function(t,e,r){var n=Math.sin(r),i=Math.cos(r),a=e[0],o=e[1],s=e[2],l=e[3],c=e[4],u=e[5],h=e[6],p=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=a*i+c*n,t[1]=o*i+u*n,t[2]=s*i+h*n,t[3]=l*i+p*n,t[4]=c*i-a*n,t[5]=u*i-o*n,t[6]=h*i-s*n,t[7]=p*i-l*n,t},t.ae=function(t){var e=new _s(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e},t.af=ks,t.ag=function(t,e){let r=0,n=0;if("constant"===t.kind)n=t.layoutSize;else if("source"!==t.kind){let{interpolationType:i,minZoom:a,maxZoom:o}=t,s=i?b(Fe.interpolationFactor(i,e,a,o),0,1):0;"camera"===t.kind?n=Re.number(t.minSize,t.maxSize,s):r=s}return{uSizeT:r,uSize:n}},t.ai=function(t,{uSize:e,uSizeT:r},{lowerSize:n,upperSize:i}){return"source"===t.kind?n/uu:"composite"===t.kind?Re.number(n/uu,i/uu,r):e},t.aj=xu,t.ak=function(t,e,r,n){let i=e.y-t.y,a=e.x-t.x,o=n.y-r.y,s=n.x-r.x,l=o*a-s*i;if(0===l)return null;let u=(s*(t.y-r.y)-o*(t.x-r.x))/l;return new c(t.x+u*a,t.y+u*i)},t.al=rh,t.am=is,t.an=bs,t.ao=function(t){let e=1/0,r=1/0,n=-1/0,i=-1/0;for(let a of t)e=Math.min(e,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x),i=Math.max(i,a.y);return[e,r,n,i]},t.ap=gc,t.ar=fu,t.as=function(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],l=e[6],c=e[7],u=e[8],h=e[9],p=e[10],f=e[11],d=e[12],m=e[13],g=e[14],y=e[15],v=r*s-n*o,x=r*l-i*o,_=r*c-a*o,b=n*l-i*s,w=n*c-a*s,T=i*c-a*l,A=u*m-h*d,k=u*g-p*d,M=u*y-f*d,S=h*g-p*m,E=h*y-f*m,C=p*y-f*g,I=v*C-x*E+_*S+b*M-w*k+T*A;return I?(t[0]=(s*C-l*E+c*S)*(I=1/I),t[1]=(i*E-n*C-a*S)*I,t[2]=(m*T-g*w+y*b)*I,t[3]=(p*w-h*T-f*b)*I,t[4]=(l*M-o*C-c*k)*I,t[5]=(r*C-i*M+a*k)*I,t[6]=(g*_-d*T-y*x)*I,t[7]=(u*T-p*_+f*x)*I,t[8]=(o*E-s*M+c*A)*I,t[9]=(n*M-r*E-a*A)*I,t[10]=(d*w-m*_+y*v)*I,t[11]=(h*_-u*w-f*v)*I,t[12]=(s*k-o*S-l*A)*I,t[13]=(r*S-n*k+i*A)*I,t[14]=(m*x-d*b-g*v)*I,t[15]=(u*b-h*x+p*v)*I,t):null},t.at=kh,t.au=au,t.av=Lh,t.aw=function(){let t={},e=J.$version;for(let r in J.$root){let n=J.$root[r];if(n.required){let i=null;i="version"===r?e:"array"===n.type?[]:{},null!=i&&(t[r]=i)}}return t},t.ax=zi,t.ay=H,t.az=function(t){t=t.slice();let e=Object.create(null);for(let r=0;r25||n<0||n>=1||r<0||r>=1)},t.bc=function(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},t.bd=class extends Ma{},t.be=Ou,t.bf=qh,t.bh=q,t.bi=function(t,e){N.REGISTERED_PROTOCOLS[t]=e},t.bj=function(t){delete N.REGISTERED_PROTOCOLS[t]},t.bk=function(t,e){let r={};for(let n=0;nt*gc))}let x=s?"center":n.get("text-justify").evaluate(i,{},e.canonical),_="point"===n.get("symbol-placement")?n.get("text-max-width").evaluate(i,{},e.canonical)*gc:1/0,b=()=>{e.bucket.allowVerticalPlacement&&Hi(a)&&(m.vertical=Xc(g,e.glyphMap,e.glyphPositions,e.imagePositions,h,_,o,d,"left",u,y,t.ah.vertical,!0,f,p))};if(!s&&v){let r=new Set;if("auto"===x)for(let t=0;te(void 0,void 0,void 0,(function*(){if(0===t.byteLength)return createImageBitmap(new ImageData(1,1));let e=new Blob([new Uint8Array(t)],{type:"image/png"});try{return createImageBitmap(e)}catch(t){throw new Error(`Could not load image because of ${t.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}})),t.e=T,t.f=t=>new Promise(((e,r)=>{let n=new Image;n.onload=()=>{e(n),URL.revokeObjectURL(n.src),n.onload=null,window.requestAnimationFrame((()=>{n.src=D}))},n.onerror=()=>r(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let i=new Blob([new Uint8Array(t)],{type:"image/png"});n.src=t.byteLength?URL.createObjectURL(i):D})),t.g=U,t.h=(t,e)=>G(T(t,{type:"json"}),e),t.i=L,t.j=$,t.k=X,t.l=(t,e)=>G(T(t,{type:"arrayBuffer"}),e),t.m=G,t.n=function(t){return new jc(t).readFields(Nc,[])},t.o=Ds,t.p=qc,t.q=ya,t.r=_i,t.s=W,t.t=Ai,t.u=xi,t.v=J,t.w=C,t.x=function([t,e,r]){return e+=90,e*=Math.PI/180,r*=Math.PI/180,{x:t*Math.cos(e)*Math.sin(r),y:t*Math.sin(e)*Math.sin(r),z:t*Math.cos(r)}},t.y=Re,t.z=na})),n("worker",0,(function(t){class e{constructor(t){this.keyCache={},t&&this.replace(t)}replace(t){this._layerConfigs={},this._layers={},this.update(t,[])}update(e,r){for(let r of e){this._layerConfigs[r.id]=r;let e=this._layers[r.id]=t.aA(r);e._featureFilter=t.a7(e.filter),this.keyCache[r.id]&&delete this.keyCache[r.id]}for(let t of r)delete this.keyCache[t],delete this._layerConfigs[t],delete this._layers[t];this.familiesBySource={};let n=t.bk(Object.values(this._layerConfigs),this.keyCache);for(let t of n){let e=t.map((t=>this._layers[t.id])),r=e[0];if("none"===r.visibility)continue;let n=r.source||"",i=this.familiesBySource[n];i||(i=this.familiesBySource[n]={});let a=r.sourceLayer||"_geojsonTileLayer",o=i[a];o||(o=i[a]=[]),o.push(e)}}}class r{constructor(e){let r={},n=[];for(let t in e){let i=e[t],a=r[t]={};for(let t in i){let e=i[+t];if(!e||0===e.bitmap.width||0===e.bitmap.height)continue;let r={x:0,y:0,w:e.bitmap.width+2,h:e.bitmap.height+2};n.push(r),a[t]={rect:r,metrics:e.metrics}}}let{w:i,h:a}=t.p(n),o=new t.o({width:i||1,height:a||1});for(let n in e){let i=e[n];for(let e in i){let a=i[+e];if(!a||0===a.bitmap.width||0===a.bitmap.height)continue;let s=r[n][e].rect;t.o.copy(a.bitmap,o,{x:0,y:0},{x:s.x+1,y:s.y+1},a.bitmap)}}this.image=o,this.positions=r}}t.bl("GlyphAtlas",r);class n{constructor(e){this.tileID=new t.S(e.tileID.overscaledZ,e.tileID.wrap,e.tileID.canonical.z,e.tileID.canonical.x,e.tileID.canonical.y),this.uid=e.uid,this.zoom=e.zoom,this.pixelRatio=e.pixelRatio,this.tileSize=e.tileSize,this.source=e.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=e.showCollisionBoxes,this.collectResourceTiming=!!e.collectResourceTiming,this.returnDependencies=!!e.returnDependencies,this.promoteId=e.promoteId,this.inFlightDependencies=[]}parse(e,n,a,o){return t._(this,void 0,void 0,(function*(){this.status="parsing",this.data=e,this.collisionBoxArray=new t.a5;let s=new t.bm(Object.keys(e.layers).sort()),l=new t.bn(this.tileID,this.promoteId);l.bucketLayerIDs=[];let c={},u={featureIndex:l,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:a},h=n.familiesBySource[this.source];for(let r in h){let n=e.layers[r];if(!n)continue;1===n.version&&t.w(`Vector tile source "${this.source}" layer "${r}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let o=s.encode(r),p=[];for(let t=0;t=r.maxzoom||"none"!==r.visibility&&(i(e,this.zoom,a),(c[r.id]=r.createBucket({index:l.bucketLayerIDs.length,layers:e,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:o,sourceID:this.source})).populate(p,u,this.tileID.canonical),l.bucketLayerIDs.push(e.map((t=>t.id))))}}let p=t.aF(u.glyphDependencies,(t=>Object.keys(t).map(Number)));this.inFlightDependencies.forEach((t=>t?.abort())),this.inFlightDependencies=[];let f=Promise.resolve({});if(Object.keys(p).length){let t=new AbortController;this.inFlightDependencies.push(t),f=o.sendAsync({type:"GG",data:{stacks:p,source:this.source,tileID:this.tileID,type:"glyphs"}},t)}let d=Object.keys(u.iconDependencies),m=Promise.resolve({});if(d.length){let t=new AbortController;this.inFlightDependencies.push(t),m=o.sendAsync({type:"GI",data:{icons:d,source:this.source,tileID:this.tileID,type:"icons"}},t)}let g=Object.keys(u.patternDependencies),y=Promise.resolve({});if(g.length){let t=new AbortController;this.inFlightDependencies.push(t),y=o.sendAsync({type:"GI",data:{icons:g,source:this.source,tileID:this.tileID,type:"patterns"}},t)}let[v,x,_]=yield Promise.all([f,m,y]),b=new r(v),w=new t.bo(x,_);for(let e in c){let r=c[e];r instanceof t.a6?(i(r.layers,this.zoom,a),t.bp({bucket:r,glyphMap:v,glyphPositions:b.positions,imageMap:x,imagePositions:w.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):r.hasPattern&&(r instanceof t.bq||r instanceof t.br||r instanceof t.bs)&&(i(r.layers,this.zoom,a),r.addFeatures(u,this.tileID.canonical,w.patternPositions))}return this.status="done",{buckets:Object.values(c).filter((t=>!t.isEmpty())),featureIndex:l,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:b.image,imageAtlas:w,glyphMap:this.returnDependencies?v:null,iconMap:this.returnDependencies?x:null,glyphPositions:this.returnDependencies?b.positions:null}}))}}function i(e,r,n){let i=new t.z(r);for(let t of e)t.recalculate(i,n)}class a{constructor(t,e,r){this.actor=t,this.layerIndex=e,this.availableImages=r,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(e,r){return t._(this,void 0,void 0,(function*(){let n=yield t.l(e.request,r);try{return{vectorTile:new t.bt.VectorTile(new t.bu(n.data)),rawData:n.data,cacheControl:n.cacheControl,expires:n.expires}}catch(t){let r=new Uint8Array(n.data),i=`Unable to parse the tile at ${e.request.url}, `;throw i+=31===r[0]&&139===r[1]?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${t.message}`,new Error(i)}}))}loadTile(e){return t._(this,void 0,void 0,(function*(){let r=e.uid,i=!!(e&&e.request&&e.request.collectResourceTiming)&&new t.bv(e.request),a=new n(e);this.loading[r]=a;let o=new AbortController;a.abort=o;try{let n=yield this.loadVectorTile(e,o);if(delete this.loading[r],!n)return null;let s=n.rawData,l={};n.expires&&(l.expires=n.expires),n.cacheControl&&(l.cacheControl=n.cacheControl);let c={};if(i){let t=i.finish();t&&(c.resourceTiming=JSON.parse(JSON.stringify(t)))}a.vectorTile=n.vectorTile;let u=a.parse(n.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[r]=a,this.fetching[r]={rawTileData:s,cacheControl:l,resourceTiming:c};try{let e=yield u;return t.e({rawTileData:s.slice(0)},e,l,c)}finally{delete this.fetching[r]}}catch(t){throw delete this.loading[r],a.status="done",this.loaded[r]=a,t}}))}reloadTile(e){return t._(this,void 0,void 0,(function*(){let r=e.uid;if(!this.loaded||!this.loaded[r])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let n=this.loaded[r];if(n.showCollisionBoxes=e.showCollisionBoxes,"parsing"===n.status){let e,i=yield n.parse(n.vectorTile,this.layerIndex,this.availableImages,this.actor);if(this.fetching[r]){let{rawTileData:n,cacheControl:a,resourceTiming:o}=this.fetching[r];delete this.fetching[r],e=t.e({rawTileData:n.slice(0)},i,a,o)}else e=i;return e}if("done"===n.status&&n.vectorTile)return n.parse(n.vectorTile,this.layerIndex,this.availableImages,this.actor)}))}abortTile(e){return t._(this,void 0,void 0,(function*(){let t=this.loading,r=e.uid;t&&t[r]&&t[r].abort&&(t[r].abort.abort(),delete t[r])}))}removeTile(e){return t._(this,void 0,void 0,(function*(){this.loaded&&this.loaded[e.uid]&&delete this.loaded[e.uid]}))}}class o{constructor(){this.loaded={}}loadTile(e){return t._(this,void 0,void 0,(function*(){let{uid:r,encoding:n,rawImageData:i,redFactor:a,greenFactor:o,blueFactor:s,baseShift:l}=e,c=i.width+2,u=i.height+2,h=t.b(i)?new t.R({width:c,height:u},yield t.bw(i,-1,-1,c,u)):i,p=new t.bx(r,h,n,a,o,s,l);return this.loaded=this.loaded||{},this.loaded[r]=p,p}))}removeTile(t){let e=this.loaded,r=t.uid;e&&e[r]&&delete e[r]}}function s(t,e){if(0!==t.length){l(t[0],e);for(var r=1;r=Math.abs(s)?r-l+s:s-l+r,r=l}r+n>=0!=!!e&&t.reverse()}var c=t.by((function t(e,r){var n,i=e&&e.type;if("FeatureCollection"===i)for(n=0;n>31}function k(t,e){for(var r=t.loadGeometry(),n=t.type,i=0,a=0,o=r.length,s=0;st},C=Math.fround||(I=new Float32Array(1),t=>(I[0]=+t,I[0]));var I;class L{constructor(t){this.options=Object.assign(Object.create(E),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(t){let{log:e,minZoom:r,maxZoom:n}=this.options;e&&console.time("total time");let i=`prepare ${t.length} points`;e&&console.time(i),this.points=t;let a=[];for(let e=0;e=r;t--){let r=+Date.now();o=this.trees[t]=this._createTree(this._cluster(o,t)),e&&console.log("z%d: %d clusters in %dms",t,o.numItems,+Date.now()-r)}return e&&console.timeEnd("total time"),this}getClusters(t,e){let r=((t[0]+180)%360+360)%360-180,n=Math.max(-90,Math.min(90,t[1])),i=180===t[2]?180:((t[2]+180)%360+360)%360-180,a=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,i=180;else if(r>i){let t=this.getClusters([r,n,180,a],e),o=this.getClusters([-180,n,i,a],e);return t.concat(o)}let o=this.trees[this._limitZoom(e)],s=o.range(D(r),O(a),D(i),O(n)),l=o.data,c=[];for(let t of s){let e=this.stride*t;c.push(l[e+5]>1?P(l,e,this.clusterProps):this.points[l[e+3]])}return c}getChildren(t){let e=this._getOriginId(t),r=this._getOriginZoom(t),n="No cluster with the specified id.",i=this.trees[r];if(!i)throw new Error(n);let a=i.data;if(e*this.stride>=a.length)throw new Error(n);let o=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=i.within(a[e*this.stride],a[e*this.stride+1],o),l=[];for(let e of s){let r=e*this.stride;a[r+4]===t&&l.push(a[r+5]>1?P(a,r,this.clusterProps):this.points[a[r+3]])}if(0===l.length)throw new Error(n);return l}getLeaves(t,e,r){let n=[];return this._appendLeaves(n,t,e=e||10,r=r||0,0),n}getTile(t,e,r){let n=this.trees[this._limitZoom(t)],i=Math.pow(2,t),{extent:a,radius:o}=this.options,s=o/a,l=(r-s)/i,c=(r+1+s)/i,u={features:[]};return this._addTileFeatures(n.range((e-s)/i,l,(e+1+s)/i,c),n.data,e,r,i,u),0===e&&this._addTileFeatures(n.range(1-s/i,l,1,c),n.data,i,r,i,u),e===i-1&&this._addTileFeatures(n.range(0,l,s/i,c),n.data,-1,r,i,u),u.features.length?u:null}getClusterExpansionZoom(t){let e=this._getOriginZoom(t)-1;for(;e<=this.options.maxZoom;){let r=this.getChildren(t);if(e++,1!==r.length)break;t=r[0].properties.cluster_id}return e}_appendLeaves(t,e,r,n,i){let a=this.getChildren(e);for(let e of a){let a=e.properties;if(a&&a.cluster?i+a.point_count<=n?i+=a.point_count:i=this._appendLeaves(t,a.cluster_id,r,n,i):i1;if(u)t=z(e,c,this.clusterProps),s=e[c],l=e[c+1];else{let r=this.points[e[c+3]];t=r.properties;let[n,i]=r.geometry.coordinates;s=D(n),l=O(i)}let h,p={type:1,geometry:[[Math.round(this.options.extent*(s*i-r)),Math.round(this.options.extent*(l*i-n))]],tags:t};h=u||this.options.generateId?e[c+3]:this.points[e[c+3]].id,void 0!==h&&(p.id=h),a.features.push(p)}}_limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}_cluster(t,e){let{radius:r,extent:n,reduce:i,minPoints:a}=this.options,o=r/(n*Math.pow(2,e)),s=t.data,l=[],c=this.stride;for(let r=0;re&&(f+=s[r+5])}if(f>p&&f>=a){let t,a=n*p,o=u*p,d=-1,m=(r/c<<5)+(e+1)+this.points.length;for(let n of h){let l=n*c;if(s[l+2]<=e)continue;s[l+2]=e;let u=s[l+5];a+=s[l]*u,o+=s[l+1]*u,s[l+4]=m,i&&(t||(t=this._map(s,r,!0),d=this.clusterProps.length,this.clusterProps.push(t)),i(t,this._map(s,l)))}s[r+4]=m,l.push(a/f,o/f,1/0,m,-1,f),i&&l.push(d)}else{for(let t=0;t1)for(let t of h){let r=t*c;if(!(s[r+2]<=e)){s[r+2]=e;for(let t=0;t>5}_getOriginZoom(t){return(t-this.points.length)%32}_map(t,e,r){if(t[e+5]>1){let n=this.clusterProps[t[e+6]];return r?Object.assign({},n):n}let n=this.points[t[e+3]].properties,i=this.options.map(n);return r&&i===n?Object.assign({},i):i}}function P(t,e,r){return{type:"Feature",id:t[e+3],properties:z(t,e,r),geometry:{type:"Point",coordinates:[(n=t[e],360*(n-.5)),R(t[e+1])]}};var n}function z(t,e,r){let n=t[e+5],i=n>=1e4?`${Math.round(n/1e3)}k`:n>=1e3?Math.round(n/100)/10+"k":n,a=t[e+6],o=-1===a?{}:Object.assign({},r[a]);return Object.assign(o,{cluster:!0,cluster_id:t[e+3],point_count:n,point_count_abbreviated:i})}function D(t){return t/360+.5}function O(t){let e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function R(t){let e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}function F(t,e,r,n){let i,a=n,o=e+(r-e>>1),s=r-e,l=t[e],c=t[e+1],u=t[r],h=t[r+1];for(let n=e+3;na)i=n,a=e;else if(e===a){let t=Math.abs(n-o);tn&&(i-e>3&&F(t,e,i,n),t[i+2]=a,r-i>3&&F(t,i,r,n))}function B(t,e,r,n,i,a){let o=i-r,s=a-n;if(0!==o||0!==s){let l=((t-r)*o+(e-n)*s)/(o*o+s*s);l>1?(r=i,n=a):l>0&&(r+=o*l,n+=s*l)}return o=t-r,s=e-n,o*o+s*s}function j(t,e,r,n){let i={id:t??null,type:e,geometry:r,tags:n,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if("Point"===e||"MultiPoint"===e||"LineString"===e)N(i,r);else if("Polygon"===e)N(i,r[0]);else if("MultiLineString"===e)for(let t of r)N(i,t);else if("MultiPolygon"===e)for(let t of r)N(i,t[0]);return i}function N(t,e){for(let r=0;r0&&(o+=n?(i*l-s*a)/2:Math.sqrt(Math.pow(s-i,2)+Math.pow(l-a,2))),i=s,a=l}let s=e.length-3;e[2]=1,F(e,0,s,r),e[s+2]=1,e.size=Math.abs(o),e.start=0,e.end=e.size}function H(t,e,r,n){for(let i=0;i1?1:r}function Z(t,e,r,n,i,a,o,s){if(n/=e,a>=(r/=e)&&o=n)return null;let l=[];for(let e of t){let t=e.geometry,a=e.type,o=0===i?e.minX:e.minY,c=0===i?e.maxX:e.maxY;if(o>=r&&c=n)continue;let u=[];if("Point"===a||"MultiPoint"===a)Y(t,u,r,n,i);else if("LineString"===a)X(t,u,r,n,i,!1,s.lineMetrics);else if("MultiLineString"===a)K(t,u,r,n,i,!1);else if("Polygon"===a)K(t,u,r,n,i,!0);else if("MultiPolygon"===a)for(let e of t){let t=[];K(e,t,r,n,i,!0),t.length&&u.push(t)}if(u.length){if(s.lineMetrics&&"LineString"===a){for(let t of u)l.push(j(e.id,a,t,e.tags));continue}"LineString"!==a&&"MultiLineString"!==a||(1===u.length?(a="LineString",u=u[0]):a="MultiLineString"),"Point"!==a&&"MultiPoint"!==a||(a=3===u.length?"Point":"MultiPoint"),l.push(j(e.id,a,u,e.tags))}}return l.length?l:null}function Y(t,e,r,n,i){for(let a=0;a=r&&o<=n&&J(e,t[a],t[a+1],t[a+2])}}function X(t,e,r,n,i,a,o){let s,l,c=$(t),u=0===i?Q:tt,h=t.start;for(let p=0;pr&&(l=u(c,f,d,g,y,r),o&&(c.start=h+s*l)):v>n?x=r&&(l=u(c,f,d,g,y,r),_=!0),x>n&&v<=n&&(l=u(c,f,d,g,y,n),_=!0),!a&&_&&(o&&(c.end=h+s*l),e.push(c),c=$(t)),o&&(h+=s)}let p=t.length-3,f=t[p],d=t[p+1],m=0===i?f:d;m>=r&&m<=n&&J(c,f,d,t[p+2]),p=c.length-3,a&&p>=3&&(c[p]!==c[0]||c[p+1]!==c[1])&&J(c,c[0],c[1],c[2]),c.length&&e.push(c)}function $(t){let e=[];return e.size=t.size,e.start=t.start,e.end=t.end,e}function K(t,e,r,n,i,a){for(let o of t)X(o,e,r,n,i,a,!1)}function J(t,e,r,n){t.push(e,r,n)}function Q(t,e,r,n,i,a){let o=(a-e)/(n-e);return J(t,a,r+(i-r)*o,1),o}function tt(t,e,r,n,i,a){let o=(a-r)/(i-r);return J(t,e+(n-e)*o,a,1),o}function et(t,e){let r=[];for(let n=0;n0&&e.size<(i?o:n))return void(r.numPoints+=e.length/3);let s=[];for(let t=0;to)&&(r.numSimplified++,s.push(e[t],e[t+1])),r.numPoints++;i&&function(t,e){let r=0;for(let e=0,n=t.length,i=n-2;e0===e)for(let e=0,r=t.length;e24)throw new Error("maxZoom should be in the 0-24 range");if(e.promoteId&&e.generateId)throw new Error("promoteId and generateId cannot be used together.");let n=function(t,e){let r=[];if("FeatureCollection"===t.type)for(let n=0;n1&&console.time("creation"),p=this.tiles[h]=at(t,e,r,n,l),this.tileCoords.push({z:e,x:r,y:n}),c)){c>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",e,r,n,p.numFeatures,p.numPoints,p.numSimplified),console.timeEnd("creation"));let t=`z${e}`;this.stats[t]=(this.stats[t]||0)+1,this.total++}if(p.source=t,null==i){if(e===l.indexMaxZoom||p.numPoints<=l.indexMaxPoints)continue}else{if(e===l.maxZoom||e===i)continue;if(null!=i){let t=i-e;if(r!==a>>t||n!==o>>t)continue}}if(p.source=null,0===t.length)continue;c>1&&console.time("clipping");let f=.5*l.buffer/l.extent,d=.5-f,m=.5+f,g=1+f,y=null,v=null,x=null,_=null,b=Z(t,u,r-f,r+m,0,p.minX,p.maxX,l),w=Z(t,u,r+d,r+g,0,p.minX,p.maxX,l);t=null,b&&(y=Z(b,u,n-f,n+m,1,p.minY,p.maxY,l),v=Z(b,u,n+d,n+g,1,p.minY,p.maxY,l),b=null),w&&(x=Z(w,u,n-f,n+m,1,p.minY,p.maxY,l),_=Z(w,u,n+d,n+g,1,p.minY,p.maxY,l),w=null),c>1&&console.timeEnd("clipping"),s.push(y||[],e+1,2*r,2*n),s.push(v||[],e+1,2*r,2*n+1),s.push(x||[],e+1,2*r+1,2*n),s.push(_||[],e+1,2*r+1,2*n+1)}}getTile(t,e,r){t=+t,e=+e,r=+r;let n=this.options,{extent:i,debug:a}=n;if(t<0||t>24)return null;let o=1<1&&console.log("drilling down to z%d-%d-%d",t,e,r);let l,c=t,u=e,h=r;for(;!l&&c>0;)c--,u>>=1,h>>=1,l=this.tiles[ut(c,u,h)];return l&&l.source?(a>1&&(console.log("found parent tile z%d-%d-%d",c,u,h),console.time("drilling down")),this.splitTile(l.source,c,u,h,t,e,r),a>1&&console.timeEnd("drilling down"),this.tiles[s]?nt(this.tiles[s],i):null):null}}function ut(t,e,r){return 32*((1<{o.properties=t;let e={};for(let t of s)e[t]=n[t].evaluate(a,o);return e},e.reduce=(t,e)=>{o.properties=e;for(let e of s)a.accumulated=t[e],t[e]=i[e].evaluate(a,o)},e}(e)).load((yield this._pendingData).features):(i=yield this._pendingData,new ct(i,e.geojsonVtOptions)),this.loaded={};let r={};if(n){let t=n.finish();t&&(r.resourceTiming={},r.resourceTiming[e.source]=JSON.parse(JSON.stringify(t)))}return r}catch(e){if(delete this._pendingRequest,t.bB(e))return{abandoned:!0};throw e}var i}))}getData(){return t._(this,void 0,void 0,(function*(){return this._pendingData}))}reloadTile(t){let e=this.loaded;return e&&e[t.uid]?super.reloadTile(t):this.loadTile(t)}loadAndProcessGeoJSON(e,r){return t._(this,void 0,void 0,(function*(){let n=yield this.loadGeoJSON(e,r);if(delete this._pendingRequest,"object"!=typeof n)throw new Error(`Input data given to '${e.source}' is not a valid GeoJSON object.`);if(c(n,!0),e.filter){let r=t.bC(e.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if("error"===r.result)throw new Error(r.value.map((t=>`${t.key}: ${t.message}`)).join(", "));n={type:"FeatureCollection",features:n.features.filter((t=>r.value.evaluate({zoom:0},t)))}}return n}))}loadGeoJSON(e,r){return t._(this,void 0,void 0,(function*(){let{promoteId:n}=e;if(e.request){let i=yield t.h(e.request,r);return this._dataUpdateable=pt(i.data,n)?ft(i.data,n):void 0,i.data}if("string"==typeof e.data)try{let t=JSON.parse(e.data);return this._dataUpdateable=pt(t,n)?ft(t,n):void 0,t}catch{throw new Error(`Input data given to '${e.source}' is not a valid GeoJSON object.`)}if(!e.dataDiff)throw new Error(`Input data given to '${e.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${e.source}`);return function(t,e,r){var n,i,a,o;if(e.removeAll&&t.clear(),e.remove)for(let r of e.remove)t.delete(r);if(e.add)for(let n of e.add){let e=ht(n,r);null!=e&&t.set(e,n)}if(e.update)for(let r of e.update){let e=t.get(r.id);if(null==e)continue;let s=!r.removeAllProperties&&((null===(n=r.removeProperties)||void 0===n?void 0:n.length)>0||(null===(i=r.addOrUpdateProperties)||void 0===i?void 0:i.length)>0);if((r.newGeometry||r.removeAllProperties||s)&&(e=Object.assign({},e),t.set(r.id,e),s&&(e.properties=Object.assign({},e.properties))),r.newGeometry&&(e.geometry=r.newGeometry),r.removeAllProperties)e.properties={};else if((null===(a=r.removeProperties)||void 0===a?void 0:a.length)>0)for(let t of r.removeProperties)Object.prototype.hasOwnProperty.call(e.properties,t)&&delete e.properties[t];if((null===(o=r.addOrUpdateProperties)||void 0===o?void 0:o.length)>0)for(let{key:t,value:n}of r.addOrUpdateProperties)e.properties[t]=n}}(this._dataUpdateable,e.dataDiff,n),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}}))}removeSource(e){return t._(this,void 0,void 0,(function*(){this._pendingRequest&&this._pendingRequest.abort()}))}getClusterExpansionZoom(t){return this._geoJSONIndex.getClusterExpansionZoom(t.clusterId)}getClusterChildren(t){return this._geoJSONIndex.getChildren(t.clusterId)}getClusterLeaves(t){return this._geoJSONIndex.getLeaves(t.clusterId,t.limit,t.offset)}}class mt{constructor(e){this.self=e,this.actor=new t.F(e),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(t,e)=>{if(this.externalWorkerSourceTypes[t])throw new Error(`Worker source with name "${t}" already registered.`);this.externalWorkerSourceTypes[t]=e},this.self.addProtocol=t.bi,this.self.removeProtocol=t.bj,this.self.registerRTLTextPlugin=e=>{if(t.bD.isParsed())throw new Error("RTL text plugin already registered.");t.bD.setMethods(e)},this.actor.registerMessageHandler("LDT",((t,e)=>this._getDEMWorkerSource(t,e.source).loadTile(e))),this.actor.registerMessageHandler("RDT",((e,r)=>t._(this,void 0,void 0,(function*(){this._getDEMWorkerSource(e,r.source).removeTile(r)})))),this.actor.registerMessageHandler("GCEZ",((e,r)=>t._(this,void 0,void 0,(function*(){return this._getWorkerSource(e,r.type,r.source).getClusterExpansionZoom(r)})))),this.actor.registerMessageHandler("GCC",((e,r)=>t._(this,void 0,void 0,(function*(){return this._getWorkerSource(e,r.type,r.source).getClusterChildren(r)})))),this.actor.registerMessageHandler("GCL",((e,r)=>t._(this,void 0,void 0,(function*(){return this._getWorkerSource(e,r.type,r.source).getClusterLeaves(r)})))),this.actor.registerMessageHandler("LD",((t,e)=>this._getWorkerSource(t,e.type,e.source).loadData(e))),this.actor.registerMessageHandler("GD",((t,e)=>this._getWorkerSource(t,e.type,e.source).getData())),this.actor.registerMessageHandler("LT",((t,e)=>this._getWorkerSource(t,e.type,e.source).loadTile(e))),this.actor.registerMessageHandler("RT",((t,e)=>this._getWorkerSource(t,e.type,e.source).reloadTile(e))),this.actor.registerMessageHandler("AT",((t,e)=>this._getWorkerSource(t,e.type,e.source).abortTile(e))),this.actor.registerMessageHandler("RMT",((t,e)=>this._getWorkerSource(t,e.type,e.source).removeTile(e))),this.actor.registerMessageHandler("RS",((e,r)=>t._(this,void 0,void 0,(function*(){if(!this.workerSources[e]||!this.workerSources[e][r.type]||!this.workerSources[e][r.type][r.source])return;let t=this.workerSources[e][r.type][r.source];delete this.workerSources[e][r.type][r.source],void 0!==t.removeSource&&t.removeSource(r)})))),this.actor.registerMessageHandler("RM",(e=>t._(this,void 0,void 0,(function*(){delete this.layerIndexes[e],delete this.availableImages[e],delete this.workerSources[e],delete this.demWorkerSources[e]})))),this.actor.registerMessageHandler("SR",((e,r)=>t._(this,void 0,void 0,(function*(){this.referrer=r})))),this.actor.registerMessageHandler("SRPS",((t,e)=>this._syncRTLPluginState(t,e))),this.actor.registerMessageHandler("IS",((e,r)=>t._(this,void 0,void 0,(function*(){this.self.importScripts(r)})))),this.actor.registerMessageHandler("SI",((t,e)=>this._setImages(t,e))),this.actor.registerMessageHandler("UL",((e,r)=>t._(this,void 0,void 0,(function*(){this._getLayerIndex(e).update(r.layers,r.removedIds)})))),this.actor.registerMessageHandler("SL",((e,r)=>t._(this,void 0,void 0,(function*(){this._getLayerIndex(e).replace(r)}))))}_setImages(e,r){return t._(this,void 0,void 0,(function*(){this.availableImages[e]=r;for(let t in this.workerSources[e]){let n=this.workerSources[e][t];for(let t in n)n[t].availableImages=r}}))}_syncRTLPluginState(e,r){return t._(this,void 0,void 0,(function*(){if(t.bD.isParsed())return t.bD.getState();if("loading"!==r.pluginStatus)return t.bD.setState(r),r;let e=r.pluginURL;if(this.self.importScripts(e),t.bD.isParsed()){let r={pluginStatus:"loaded",pluginURL:e};return t.bD.setState(r),r}throw t.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${e}`)}))}_getAvailableImages(t){let e=this.availableImages[t];return e||(e=[]),e}_getLayerIndex(t){let r=this.layerIndexes[t];return r||(r=this.layerIndexes[t]=new e),r}_getWorkerSource(t,e,r){if(this.workerSources[t]||(this.workerSources[t]={}),this.workerSources[t][e]||(this.workerSources[t][e]={}),!this.workerSources[t][e][r]){let n={sendAsync:(e,r)=>(e.targetMapId=t,this.actor.sendAsync(e,r))};switch(e){case"vector":this.workerSources[t][e][r]=new a(n,this._getLayerIndex(t),this._getAvailableImages(t));break;case"geojson":this.workerSources[t][e][r]=new dt(n,this._getLayerIndex(t),this._getAvailableImages(t));break;default:this.workerSources[t][e][r]=new this.externalWorkerSourceTypes[e](n,this._getLayerIndex(t),this._getAvailableImages(t))}}return this.workerSources[t][e][r]}_getDEMWorkerSource(t,e){return this.demWorkerSources[t]||(this.demWorkerSources[t]={}),this.demWorkerSources[t][e]||(this.demWorkerSources[t][e]=new o),this.demWorkerSources[t][e]}}return t.i(self)&&(self.worker=new mt(self)),mt})),n("index",0,(function(t,e){var r="4.7.1";let n,i,a={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:t=>new Promise(((r,n)=>{let i=requestAnimationFrame(r);t.signal.addEventListener("abort",(()=>{cancelAnimationFrame(i),n(e.c())}))})),getImageData(t,e=0){return this.getImageCanvasContext(t).getImageData(-e,-e,t.width+2*e,t.height+2*e)},getImageCanvasContext(t){let e=window.document.createElement("canvas"),r=e.getContext("2d",{willReadFrequently:!0});if(!r)throw new Error("failed to create canvas 2d context");return e.width=t.width,e.height=t.height,r.drawImage(t,0,0,t.width,t.height),r},resolveURL:t=>(n||(n=document.createElement("a")),n.href=t,n.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(null==i&&(i=matchMedia("(prefers-reduced-motion: reduce)")),i.matches)}};class o{static testProp(t){if(!o.docStyle)return t[0];for(let e=0;e{window.removeEventListener("click",o.suppressClickInternal,!0)}),0)}static getScale(t){let e=t.getBoundingClientRect();return{x:e.width/t.offsetWidth||1,y:e.height/t.offsetHeight||1,boundingClientRect:e}}static getPoint(t,r,n){let i=r.boundingClientRect;return new e.P((n.clientX-i.left)/r.x-t.clientLeft,(n.clientY-i.top)/r.y-t.clientTop)}static mousePos(t,e){let r=o.getScale(t);return o.getPoint(t,r,e)}static touchPos(t,e){let r=[],n=o.getScale(t);for(let i=0;i{s&&p(s),s=null,h=!0},l.onerror=()=>{u=!0,s=null},l.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(t){let r,n,i,a;t.resetRequestQueue=()=>{r=[],n=0,i=0,a={}},t.addThrottleControl=t=>{let e=i++;return a[e]=t,e},t.removeThrottleControl=t=>{delete a[t],s()},t.getImage=(t,n,i=!0)=>new Promise(((a,o)=>{c.supported&&(t.headers||(t.headers={}),t.headers.accept="image/webp,*/*"),e.e(t,{type:"image"}),r.push({abortController:n,requestParameters:t,supportImageRefresh:i,state:"queued",onError:t=>{o(t)},onSuccess:t=>{a(t)}}),s()}));let o=t=>e._(this,void 0,void 0,(function*(){t.state="running";let{requestParameters:r,supportImageRefresh:i,onError:a,onSuccess:o,abortController:c}=t,u=!1===i&&!e.i(self)&&!e.g(r.url)&&(!r.headers||Object.keys(r.headers).reduce(((t,e)=>t&&"accept"===e),!0));n++;let h=u?l(r,c):e.m(r,c);try{let r=yield h;delete t.abortController,t.state="completed",r.data instanceof HTMLImageElement||e.b(r.data)?o(r):r.data&&o({data:yield(p=r.data,"function"==typeof createImageBitmap?e.d(p):e.f(p)),cacheControl:r.cacheControl,expires:r.expires})}catch(e){delete t.abortController,a(e)}finally{n--,s()}var p})),s=()=>{let t=(()=>{for(let t of Object.keys(a))if(a[t]())return!0;return!1})()?e.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:e.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let e=n;e0;e++){let t=r.shift();t.abortController.signal.aborted?e--:o(t)}},l=(t,r)=>new Promise(((n,i)=>{let a=new Image,o=t.url,s=t.credentials;s&&"include"===s?a.crossOrigin="use-credentials":(s&&"same-origin"===s||!e.s(o))&&(a.crossOrigin="anonymous"),r.signal.addEventListener("abort",(()=>{a.src="",i(e.c())})),a.fetchPriority="high",a.onload=()=>{a.onerror=a.onload=null,n({data:a})},a.onerror=()=>{a.onerror=a.onload=null,r.signal.aborted||i(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},a.src=o}))}(f||(f={})),f.resetRequestQueue();class d{constructor(t){this._transformRequestFn=t}transformRequest(t,e){return this._transformRequestFn&&this._transformRequestFn(t,e)||{url:t}}setTransformRequest(t){this._transformRequestFn=t}}function m(t){var r=new e.A(3);return r[0]=t[0],r[1]=t[1],r[2]=t[2],r}var g,y=function(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t};g=new e.A(3),e.A!=Float32Array&&(g[0]=0,g[1]=0,g[2]=0);var v,x=function(t){var e=t[0],r=t[1];return e*e+r*r};function _(t){let e=[];if("string"==typeof t)e.push({id:"default",url:t});else if(t&&t.length>0){let r=[];for(let{id:n,url:i}of t){let t=`${n}${i}`;-1===r.indexOf(t)&&(r.push(t),e.push({id:n,url:i}))}}return e}function b(t,e,r){let n=t.split("?");return n[0]+=`${e}${r}`,n.join("?")}v=new e.A(2),e.A!=Float32Array&&(v[0]=0,v[1]=0);class w{constructor(t,e,r,n){this.context=t,this.format=r,this.texture=t.gl.createTexture(),this.update(e,n)}update(t,r,n){let{width:i,height:a}=t,o=!(this.size&&this.size[0]===i&&this.size[1]===a||n),{context:s}=this,{gl:l}=s;if(this.useMipmap=!(!r||!r.useMipmap),l.bindTexture(l.TEXTURE_2D,this.texture),s.pixelStoreUnpackFlipY.set(!1),s.pixelStoreUnpack.set(1),s.pixelStoreUnpackPremultiplyAlpha.set(this.format===l.RGBA&&(!r||!1!==r.premultiply)),o)this.size=[i,a],t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||e.b(t)?l.texImage2D(l.TEXTURE_2D,0,this.format,this.format,l.UNSIGNED_BYTE,t):l.texImage2D(l.TEXTURE_2D,0,this.format,i,a,0,this.format,l.UNSIGNED_BYTE,t.data);else{let{x:r,y:o}=n||{x:0,y:0};t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement||t instanceof ImageData||e.b(t)?l.texSubImage2D(l.TEXTURE_2D,0,r,o,l.RGBA,l.UNSIGNED_BYTE,t):l.texSubImage2D(l.TEXTURE_2D,0,r,o,i,a,l.RGBA,l.UNSIGNED_BYTE,t.data)}this.useMipmap&&this.isSizePowerOfTwo()&&l.generateMipmap(l.TEXTURE_2D)}bind(t,e,r){let{context:n}=this,{gl:i}=n;i.bindTexture(i.TEXTURE_2D,this.texture),r!==i.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(r=i.LINEAR),t!==this.filter&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MAG_FILTER,t),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_MIN_FILTER,r||t),this.filter=t),e!==this.wrap&&(i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_S,e),i.texParameteri(i.TEXTURE_2D,i.TEXTURE_WRAP_T,e),this.wrap=e)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:t}=this.context;t.deleteTexture(this.texture),this.texture=null}}function T(t){let{userImage:e}=t;return!!(e&&e.render&&e.render())&&(t.data.replace(new Uint8Array(e.data.buffer)),!0)}class A extends e.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(t){if(this.loaded!==t&&(this.loaded=t,t)){for(let{ids:t,promiseResolve:e}of this.requestors)e(this._getImagesForIds(t));this.requestors=[]}}getImage(t){let r=this.images[t];if(r&&!r.data&&r.spriteData){let t=r.spriteData;r.data=new e.R({width:t.width,height:t.height},t.context.getImageData(t.x,t.y,t.width,t.height).data),r.spriteData=null}return r}addImage(t,e){if(this.images[t])throw new Error(`Image id ${t} already exist, use updateImage instead`);this._validate(t,e)&&(this.images[t]=e)}_validate(t,r){let n=!0,i=r.data||r.spriteData;return this._validateStretch(r.stretchX,i&&i.width)||(this.fire(new e.j(new Error(`Image "${t}" has invalid "stretchX" value`))),n=!1),this._validateStretch(r.stretchY,i&&i.height)||(this.fire(new e.j(new Error(`Image "${t}" has invalid "stretchY" value`))),n=!1),this._validateContent(r.content,r)||(this.fire(new e.j(new Error(`Image "${t}" has invalid "content" value`))),n=!1),n}_validateStretch(t,e){if(!t)return!0;let r=0;for(let n of t){if(n[0]{let n=!0;if(!this.isLoaded())for(let e of t)this.images[e]||(n=!1);this.isLoaded()||n?e(this._getImagesForIds(t)):this.requestors.push({ids:t,promiseResolve:e})}))}_getImagesForIds(t){let r={};for(let n of t){let t=this.getImage(n);t||(this.fire(new e.k("styleimagemissing",{id:n})),t=this.getImage(n)),t?r[n]={data:t.data.clone(),pixelRatio:t.pixelRatio,sdf:t.sdf,version:t.version,stretchX:t.stretchX,stretchY:t.stretchY,content:t.content,textFitWidth:t.textFitWidth,textFitHeight:t.textFitHeight,hasRenderCallback:!(!t.userImage||!t.userImage.render)}:e.w(`Image "${n}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return r}getPixelSize(){let{width:t,height:e}=this.atlasImage;return{width:t,height:e}}getPattern(t){let r=this.patterns[t],n=this.getImage(t);if(!n)return null;if(r&&r.position.version===n.version)return r.position;if(r)r.position.version=n.version;else{let r={w:n.data.width+2,h:n.data.height+2,x:0,y:0},i=new e.I(r,n);this.patterns[t]={bin:r,position:i}}return this._updatePatternAtlas(),this.patterns[t].position}bind(t){let e=t.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new w(t,this.atlasImage,e.RGBA),this.atlasTexture.bind(e.LINEAR,e.CLAMP_TO_EDGE)}_updatePatternAtlas(){let t=[];for(let e in this.patterns)t.push(this.patterns[e].bin);let{w:r,h:n}=e.p(t),i=this.atlasImage;i.resize({width:r||1,height:n||1});for(let t in this.patterns){let{bin:r}=this.patterns[t],n=r.x+1,a=r.y+1,o=this.getImage(t).data,s=o.width,l=o.height;e.R.copy(o,i,{x:0,y:0},{x:n,y:a},{width:s,height:l}),e.R.copy(o,i,{x:0,y:l-1},{x:n,y:a-1},{width:s,height:1}),e.R.copy(o,i,{x:0,y:0},{x:n,y:a+l},{width:s,height:1}),e.R.copy(o,i,{x:s-1,y:0},{x:n-1,y:a},{width:1,height:l}),e.R.copy(o,i,{x:0,y:0},{x:n+s,y:a},{width:1,height:l})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(t){for(let r of t){if(this.callbackDispatchedThisFrame[r])continue;this.callbackDispatchedThisFrame[r]=!0;let t=this.getImage(r);t||e.w(`Image with ID: "${r}" was not found`),T(t)&&this.updateImage(r,t)}}}let k,M=1e20;function S(t,e,r,n,i,a,o,s,l){for(let c=e;c-1);l++,a[l]=s,o[l]=c,o[l+1]=M}for(let s=0,l=0;s65535)throw new Error("glyphs > 65535 not supported");if(e.ranges[i])return{stack:t,id:r,glyph:n};if(!this.url)throw new Error("glyphsUrl is not set");if(!e.requests[i]){let r=C.loadGlyphRange(t,i,this.url,this.requestManager);e.requests[i]=r}let a=yield e.requests[i];for(let t in a)this._doesCharSupportLocalGlyph(+t)||(e.glyphs[+t]=a[+t]);return e.ranges[i]=!0,{stack:t,id:r,glyph:a[r]||null}}))}_doesCharSupportLocalGlyph(t){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(t))}_tinySDF(t,r,n){let i=this.localIdeographFontFamily;if(!i||!this._doesCharSupportLocalGlyph(n))return;let a=t.tinySDF;if(!a){let e="400";/bold/i.test(r)?e="900":/medium/i.test(r)?e="500":/light/i.test(r)&&(e="200"),a=t.tinySDF=new C.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:i,fontWeight:e})}let o=a.draw(String.fromCharCode(n));return{id:n,bitmap:new e.o({width:o.width||60,height:o.height||60},o.data),metrics:{width:o.glyphWidth/2||24,height:o.glyphHeight/2||24,left:o.glyphLeft/2+.5||0,top:o.glyphTop/2-27.5||-8,advance:o.glyphAdvance/2||24,isDoubleResolution:!0}}}}C.loadGlyphRange=function(t,r,n,i){return e._(this,void 0,void 0,(function*(){let a=256*r,o=a+255,s=i.transformRequest(n.replace("{fontstack}",t).replace("{range}",`${a}-${o}`),"Glyphs"),l=yield e.l(s,new AbortController);if(!l||!l.data)throw new Error(`Could not load glyph range. range: ${r}, ${a}-${o}`);let c={};for(let t of e.n(l.data))c[t.id]=t;return c}))},C.TinySDF=class{constructor({fontSize:t=24,buffer:e=3,radius:r=8,cutoff:n=.25,fontFamily:i="sans-serif",fontWeight:a="normal",fontStyle:o="normal"}={}){this.buffer=e,this.cutoff=n,this.radius=r;let s=this.size=t+4*e,l=this._createCanvas(s),c=this.ctx=l.getContext("2d",{willReadFrequently:!0});c.font=`${o} ${a} ${t}px ${i}`,c.textBaseline="alphabetic",c.textAlign="left",c.fillStyle="black",this.gridOuter=new Float64Array(s*s),this.gridInner=new Float64Array(s*s),this.f=new Float64Array(s),this.z=new Float64Array(s+1),this.v=new Uint16Array(s)}_createCanvas(t){let e=document.createElement("canvas");return e.width=e.height=t,e}draw(t){let{width:e,actualBoundingBoxAscent:r,actualBoundingBoxDescent:n,actualBoundingBoxLeft:i,actualBoundingBoxRight:a}=this.ctx.measureText(t),o=Math.ceil(r),s=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(a-i))),l=Math.min(this.size-this.buffer,o+Math.ceil(n)),c=s+2*this.buffer,u=l+2*this.buffer,h=Math.max(c*u,0),p=new Uint8ClampedArray(h),f={data:p,width:c,height:u,glyphWidth:s,glyphHeight:l,glyphTop:o,glyphLeft:0,glyphAdvance:e};if(0===s||0===l)return f;let{ctx:d,buffer:m,gridInner:g,gridOuter:y}=this;d.clearRect(m,m,s,l),d.fillText(t,m,m+o);let v=d.getImageData(m,m,s,l);y.fill(M,0,h),g.fill(0,0,h);for(let t=0;t0?t*t:0,g[n]=t<0?t*t:0}}S(y,0,0,c,u,c,this.f,this.v,this.z),S(g,m,m,s,l,c,this.f,this.v,this.z);for(let t=0;t1&&(o=t[++a]);let l,c=Math.abs(s-o.left),u=Math.abs(s-o.right),h=Math.min(c,u),p=e/r*(n+1);if(o.isDash){let t=n-Math.abs(p);l=Math.sqrt(h*h+t*t)}else l=n-Math.sqrt(h*h+p*p);this.data[i+s]=Math.max(0,Math.min(255,l+128))}}}addRegularDash(t){for(let e=t.length-1;e>=0;--e){let r=t[e],n=t[e+1];r.zeroLength?t.splice(e,1):n&&n.isDash===r.isDash&&(n.left=r.left,t.splice(e,1))}let e=t[0],r=t[t.length-1];e.isDash===r.isDash&&(e.left=r.left-this.width,r.right=e.right+this.width);let n=this.width*this.nextRow,i=0,a=t[i];for(let e=0;e1&&(a=t[++i]);let r=Math.abs(e-a.left),o=Math.abs(e-a.right),s=Math.min(r,o);this.data[n+e]=Math.max(0,Math.min(255,(a.isDash?s:-s)+128))}}addDash(t,r){let n=r?7:0,i=2*n+1;if(this.nextRow+i>this.height)return e.w("LineAtlas out of space"),null;let a=0;for(let e=0;e{t.terminate()})),this.workers=null)}isPreloaded(){return!!this.active[O]}numActive(){return Object.keys(this.active).length}}let F,B,j=Math.floor(a.hardwareConcurrency/2);function N(){return F||(F=new R),F}R.workerCount=e.C(globalThis)?Math.max(Math.min(j,3),1):1;class U{constructor(t,r){this.workerPool=t,this.actors=[],this.currentActor=0,this.id=r;let n=this.workerPool.acquire(r);for(let t=0;t{t.remove()})),this.actors=[],t&&this.workerPool.release(this.id)}registerMessageHandler(t,e){for(let r of this.actors)r.registerMessageHandler(t,e)}}function V(){return B||(B=new U(N(),e.G),B.registerMessageHandler("GR",((t,r,n)=>e.m(r,n)))),B}function q(t,r){let n=e.H();return e.J(n,n,[1,1,0]),e.K(n,n,[.5*t.width,.5*t.height,1]),e.L(n,n,t.calculatePosMatrix(r.toUnwrapped()))}function H(t,e,r,n,i,a){let o=function(t,e,r){if(t)for(let n of t){let t=e[n];if(t&&t.source===r&&"fill-extrusion"===t.type)return!0}else for(let t in e){let n=e[t];if(n.source===r&&"fill-extrusion"===n.type)return!0}return!1}(i&&i.layers,e,t.id),s=a.maxPitchScaleFactor(),l=t.tilesIn(n,s,o);l.sort(G);let c=[];for(let n of l)c.push({wrappedTileID:n.tileID.wrapped().key,queryResults:n.tile.queryRenderedFeatures(e,r,t._state,n.queryGeometry,n.cameraQueryGeometry,n.scale,i,a,s,q(t.transform,n.tileID))});let u=function(t){let e={},r={};for(let n of t){let t=n.queryResults,i=n.wrappedTileID,a=r[i]=r[i]||{};for(let r in t){let n=t[r],i=a[r]=a[r]||{},o=e[r]=e[r]||[];for(let t of n)i[t.featureIndex]||(i[t.featureIndex]=!0,o.push(t))}}return e}(c);for(let e in u)u[e].forEach((e=>{let r=e.feature,n=t.getFeatureState(r.layer["source-layer"],r.id);r.source=r.layer.source,r.layer["source-layer"]&&(r.sourceLayer=r.layer["source-layer"]),r.state=n}));return u}function G(t,e){let r=t.tileID,n=e.tileID;return r.overscaledZ-n.overscaledZ||r.canonical.y-n.canonical.y||r.wrap-n.wrap||r.canonical.x-n.canonical.x}function W(t,r,n){return e._(this,void 0,void 0,(function*(){let i=t;if(t.url?i=(yield e.h(r.transformRequest(t.url,"Source"),n)).data:yield a.frameAsync(n),!i)return null;let o=e.M(e.e(i,t),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in i&&i.vector_layers&&(o.vectorLayerIds=i.vector_layers.map((t=>t.id))),o}))}class Z{constructor(t,e){t&&(e?this.setSouthWest(t).setNorthEast(e):Array.isArray(t)&&(4===t.length?this.setSouthWest([t[0],t[1]]).setNorthEast([t[2],t[3]]):this.setSouthWest(t[0]).setNorthEast(t[1])))}setNorthEast(t){return this._ne=t instanceof e.N?new e.N(t.lng,t.lat):e.N.convert(t),this}setSouthWest(t){return this._sw=t instanceof e.N?new e.N(t.lng,t.lat):e.N.convert(t),this}extend(t){let r,n,i=this._sw,a=this._ne;if(t instanceof e.N)r=t,n=t;else{if(!(t instanceof Z))return Array.isArray(t)?4===t.length||t.every(Array.isArray)?this.extend(Z.convert(t)):this.extend(e.N.convert(t)):t&&("lng"in t||"lon"in t)&&"lat"in t?this.extend(e.N.convert(t)):this;if(r=t._sw,n=t._ne,!r||!n)return this}return i||a?(i.lng=Math.min(r.lng,i.lng),i.lat=Math.min(r.lat,i.lat),a.lng=Math.max(n.lng,a.lng),a.lat=Math.max(n.lat,a.lat)):(this._sw=new e.N(r.lng,r.lat),this._ne=new e.N(n.lng,n.lat)),this}getCenter(){return new e.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new e.N(this.getWest(),this.getNorth())}getSouthEast(){return new e.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(t){let{lng:r,lat:n}=e.N.convert(t),i=this._sw.lng<=r&&r<=this._ne.lng;return this._sw.lng>this._ne.lng&&(i=this._sw.lng>=r&&r>=this._ne.lng),this._sw.lat<=n&&n<=this._ne.lat&&i}static convert(t){return t instanceof Z?t:t&&new Z(t)}static fromLngLat(t,r=0){let n=360*r/40075017,i=n/Math.cos(Math.PI/180*t.lat);return new Z(new e.N(t.lng-i,t.lat-n),new e.N(t.lng+i,t.lat+n))}adjustAntiMeridian(){let t=new e.N(this._sw.lng,this._sw.lat),r=new e.N(this._ne.lng,this._ne.lat);return new Z(t,t.lng>r.lng?new e.N(r.lng+360,r.lat):r)}}class Y{constructor(t,e,r){this.bounds=Z.convert(this.validateBounds(t)),this.minzoom=e||0,this.maxzoom=r||24}validateBounds(t){return Array.isArray(t)&&4===t.length?[Math.max(-180,t[0]),Math.max(-90,t[1]),Math.min(180,t[2]),Math.min(90,t[3])]:[-180,-90,180,90]}contains(t){let r=Math.pow(2,t.z),n=Math.floor(e.O(this.bounds.getWest())*r),i=Math.floor(e.Q(this.bounds.getNorth())*r),a=Math.ceil(e.O(this.bounds.getEast())*r),o=Math.ceil(e.Q(this.bounds.getSouth())*r);return t.x>=n&&t.x=i&&t.y{this._options.tiles=t})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t})),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return e.e({},this._options)}loadTile(t){return e._(this,void 0,void 0,(function*(){let e=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),r={request:this.map._requestManager.transformRequest(e,"Tile"),uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,tileSize:this.tileSize*t.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};r.request.collectResourceTiming=this._collectResourceTiming;let n="RT";if(t.actor&&"expired"!==t.state){if("loading"===t.state)return new Promise(((e,r)=>{t.reloadPromise={resolve:e,reject:r}}))}else t.actor=this.dispatcher.getActor(),n="LT";t.abortController=new AbortController;try{let e=yield t.actor.sendAsync({type:n,data:r},t.abortController);if(delete t.abortController,t.aborted)return;this._afterTileLoadWorkerResponse(t,e)}catch(e){if(delete t.abortController,t.aborted)return;if(e&&404!==e.status)throw e;this._afterTileLoadWorkerResponse(t,null)}}))}_afterTileLoadWorkerResponse(t,e){if(e&&e.resourceTiming&&(t.resourceTiming=e.resourceTiming),e&&this.map._refreshExpiredTiles&&t.setExpiryData(e),t.loadVectorData(e,this.map.painter),t.reloadPromise){let e=t.reloadPromise;t.reloadPromise=null,this.loadTile(t).then(e.resolve).catch(e.reject)}}abortTile(t){return e._(this,void 0,void 0,(function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.actor&&(yield t.actor.sendAsync({type:"AT",data:{uid:t.uid,type:this.type,source:this.id}}))}))}unloadTile(t){return e._(this,void 0,void 0,(function*(){t.unloadVectorData(),t.actor&&(yield t.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}}))}))}hasTransition(){return!1}}class $ extends e.E{constructor(t,r,n,i){super(),this.id=t,this.dispatcher=n,this.setEventedParent(i),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=e.e({type:"raster"},r),e.e(this,e.M(r,["url","scheme","tileSize"]))}load(){return e._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new e.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let t=yield W(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,t&&(e.e(this,t),t.bounds&&(this.tileBounds=new Y(t.bounds,this.minzoom,this.maxzoom)),this.fire(new e.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new e.k("data",{dataType:"source",sourceDataType:"content"})))}catch(t){this._tileJSONRequest=null,this.fire(new e.j(t))}}))}loaded(){return this._loaded}onAdd(t){this.map=t,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(t){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),t(),this.load()}setTiles(t){return this.setSourceProperty((()=>{this._options.tiles=t})),this}setUrl(t){return this.setSourceProperty((()=>{this.url=t,this._options.url=t})),this}serialize(){return e.e({},this._options)}hasTile(t){return!this.tileBounds||this.tileBounds.contains(t.canonical)}loadTile(t){return e._(this,void 0,void 0,(function*(){let e=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);t.abortController=new AbortController;try{let r=yield f.getImage(this.map._requestManager.transformRequest(e,"Tile"),t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(r&&r.data){this.map._refreshExpiredTiles&&r.cacheControl&&r.expires&&t.setExpiryData({cacheControl:r.cacheControl,expires:r.expires});let e=this.map.painter.context,n=e.gl,i=r.data;t.texture=this.map.painter.getTileTexture(i.width),t.texture?t.texture.update(i,{useMipmap:!0}):(t.texture=new w(e,i,n.RGBA,{useMipmap:!0}),t.texture.bind(n.LINEAR,n.CLAMP_TO_EDGE,n.LINEAR_MIPMAP_NEAREST)),t.state="loaded"}}catch(e){if(delete t.abortController,t.aborted)t.state="unloaded";else if(e)throw t.state="errored",e}}))}abortTile(t){return e._(this,void 0,void 0,(function*(){t.abortController&&(t.abortController.abort(),delete t.abortController)}))}unloadTile(t){return e._(this,void 0,void 0,(function*(){t.texture&&this.map.painter.saveTileTexture(t.texture)}))}hasTransition(){return!1}}class K extends ${constructor(t,r,n,i){super(t,r,n,i),this.type="raster-dem",this.maxzoom=22,this._options=e.e({type:"raster-dem"},r),this.encoding=r.encoding||"mapbox",this.redFactor=r.redFactor,this.greenFactor=r.greenFactor,this.blueFactor=r.blueFactor,this.baseShift=r.baseShift}loadTile(t){return e._(this,void 0,void 0,(function*(){let r=t.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),n=this.map._requestManager.transformRequest(r,"Tile");t.neighboringTiles=this._getNeighboringTiles(t.tileID),t.abortController=new AbortController;try{let r=yield f.getImage(n,t.abortController,this.map._refreshExpiredTiles);if(delete t.abortController,t.aborted)return void(t.state="unloaded");if(r&&r.data){let n=r.data;this.map._refreshExpiredTiles&&r.cacheControl&&r.expires&&t.setExpiryData({cacheControl:r.cacheControl,expires:r.expires});let i=e.b(n)&&e.U()?n:yield this.readImageNow(n),a={type:this.type,uid:t.uid,source:this.id,rawImageData:i,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!t.actor||"expired"===t.state){t.actor=this.dispatcher.getActor();let e=yield t.actor.sendAsync({type:"LDT",data:a});t.dem=e,t.needsHillshadePrepare=!0,t.needsTerrainPrepare=!0,t.state="loaded"}}}catch(e){if(delete t.abortController,t.aborted)t.state="unloaded";else if(e)throw t.state="errored",e}}))}readImageNow(t){return e._(this,void 0,void 0,(function*(){if(typeof VideoFrame<"u"&&e.V()){let r=t.width+2,n=t.height+2;try{return new e.R({width:r,height:n},yield e.W(t,-1,-1,r,n))}catch{}}return a.getImageData(t,1)}))}_getNeighboringTiles(t){let r=t.canonical,n=Math.pow(2,r.z),i=(r.x-1+n)%n,a=0===r.x?t.wrap-1:t.wrap,o=(r.x+1+n)%n,s=r.x+1===n?t.wrap+1:t.wrap,l={};return l[new e.S(t.overscaledZ,a,r.z,i,r.y).key]={backfilled:!1},l[new e.S(t.overscaledZ,s,r.z,o,r.y).key]={backfilled:!1},r.y>0&&(l[new e.S(t.overscaledZ,a,r.z,i,r.y-1).key]={backfilled:!1},l[new e.S(t.overscaledZ,t.wrap,r.z,r.x,r.y-1).key]={backfilled:!1},l[new e.S(t.overscaledZ,s,r.z,o,r.y-1).key]={backfilled:!1}),r.y+10&&e.e(i,{resourceTiming:n}),this.fire(new e.k("data",Object.assign(Object.assign({},i),{sourceDataType:"metadata"}))),this.fire(new e.k("data",Object.assign(Object.assign({},i),{sourceDataType:"content"})))}catch(t){if(this._pendingLoads--,this._removed)return void this.fire(new e.k("dataabort",{dataType:"source"}));this.fire(new e.j(t))}}))}loaded(){return 0===this._pendingLoads}loadTile(t){return e._(this,void 0,void 0,(function*(){let e=t.actor?"RT":"LT";t.actor=this.actor;let r={type:this.type,uid:t.uid,tileID:t.tileID,zoom:t.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};t.abortController=new AbortController;let n=yield this.actor.sendAsync({type:e,data:r},t.abortController);delete t.abortController,t.unloadVectorData(),t.aborted||t.loadVectorData(n,this.map.painter,"RT"===e)}))}abortTile(t){return e._(this,void 0,void 0,(function*(){t.abortController&&(t.abortController.abort(),delete t.abortController),t.aborted=!0}))}unloadTile(t){return e._(this,void 0,void 0,(function*(){t.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:t.uid,type:this.type,source:this.id}})}))}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return e.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var Q=e.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class tt extends e.E{constructor(t,e,r,n){super(),this.id=t,this.dispatcher=r,this.coordinates=e.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(n),this.options=e}load(t){return e._(this,void 0,void 0,(function*(){this._loaded=!1,this.fire(new e.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let e=yield f.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,e&&e.data&&(this.image=e.data,t&&(this.coordinates=t),this._finishLoading())}catch(t){this._request=null,this._loaded=!0,this.fire(new e.j(t))}}))}loaded(){return this._loaded}updateImage(t){return t.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=t.url,this.load(t.coordinates).finally((()=>{this.texture=null})),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(t){this.map=t,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(t){this.coordinates=t;let r=t.map(e.Z.fromLngLat);this.tileID=function(t){let r=1/0,n=1/0,i=-1/0,a=-1/0;for(let e of t)r=Math.min(r,e.x),n=Math.min(n,e.y),i=Math.max(i,e.x),a=Math.max(a,e.y);let o=Math.max(i-r,a-n),s=Math.max(0,Math.floor(-Math.log(o)/Math.LN2)),l=Math.pow(2,s);return new e.a1(s,Math.floor((r+i)/2*l),Math.floor((n+a)/2*l))}(r),this.minzoom=this.maxzoom=this.tileID.z;let n=r.map((t=>this.tileID.getTilePoint(t)._round()));return this._boundsArray=new e.$,this._boundsArray.emplaceBack(n[0].x,n[0].y,0,0),this._boundsArray.emplaceBack(n[1].x,n[1].y,e.X,0),this._boundsArray.emplaceBack(n[3].x,n[3].y,0,e.X),this._boundsArray.emplaceBack(n[2].x,n[2].y,e.X,e.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new e.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(0===Object.keys(this.tiles).length||!this.image)return;let t=this.map.painter.context,r=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,Q.members)),this.boundsSegments||(this.boundsSegments=e.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new w(t,this.image,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE));let n=!1;for(let t in this.tiles){let e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,n=!0)}n&&this.fire(new e.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(t){return e._(this,void 0,void 0,(function*(){this.tileID&&this.tileID.equals(t.tileID.canonical)?(this.tiles[String(t.tileID.wrap)]=t,t.buckets={}):t.state="errored"}))}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class et extends tt{constructor(t,e,r,n){super(t,e,r,n),this.roundZoom=!0,this.type="video",this.options=e}load(){return e._(this,void 0,void 0,(function*(){this._loaded=!1;let t=this.options;this.urls=[];for(let e of t.urls)this.urls.push(this.map._requestManager.transformRequest(e,"Source").url);try{let t=yield e.a3(this.urls);if(this._loaded=!0,!t)return;this.video=t,this.video.loop=!0,this.video.addEventListener("playing",(()=>{this.map.triggerRepaint()})),this.map&&this.video.play(),this._finishLoading()}catch(t){this.fire(new e.j(t))}}))}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(t){if(this.video){let r=this.video.seekable;tr.end(0)?this.fire(new e.j(new e.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${r.start(0)} and ${r.end(0)}-second mark.`))):this.video.currentTime=t}}getVideo(){return this.video}onAdd(t){this.map||(this.map=t,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(0===Object.keys(this.tiles).length||this.video.readyState<2)return;let t=this.map.painter.context,r=t.gl;this.boundsBuffer||(this.boundsBuffer=t.createVertexBuffer(this._boundsArray,Q.members)),this.boundsSegments||(this.boundsSegments=e.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE),r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,this.video)):(this.texture=new w(t,this.video,r.RGBA),this.texture.bind(r.LINEAR,r.CLAMP_TO_EDGE));let n=!1;for(let t in this.tiles){let e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,n=!0)}n&&this.fire(new e.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class rt extends tt{constructor(t,r,n,i){super(t,r,n,i),r.coordinates?Array.isArray(r.coordinates)&&4===r.coordinates.length&&!r.coordinates.some((t=>!Array.isArray(t)||2!==t.length||t.some((t=>"number"!=typeof t))))||this.fire(new e.j(new e.a2(`sources.${t}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.j(new e.a2(`sources.${t}`,null,'missing required property "coordinates"'))),r.animate&&"boolean"!=typeof r.animate&&this.fire(new e.j(new e.a2(`sources.${t}`,null,'optional "animate" property must be a boolean value'))),r.canvas?"string"==typeof r.canvas||r.canvas instanceof HTMLCanvasElement||this.fire(new e.j(new e.a2(`sources.${t}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.j(new e.a2(`sources.${t}`,null,'missing required property "canvas"'))),this.options=r,this.animate=void 0===r.animate||r.animate}load(){return e._(this,void 0,void 0,(function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new e.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())}))}getCanvas(){return this.canvas}onAdd(t){this.map=t,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let t=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,t=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,t=!0),this._hasInvalidDimensions()||0===Object.keys(this.tiles).length)return;let r=this.map.painter.context,n=r.gl;this.boundsBuffer||(this.boundsBuffer=r.createVertexBuffer(this._boundsArray,Q.members)),this.boundsSegments||(this.boundsSegments=e.a0.simpleSegment(0,0,4,2)),this.texture?(t||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new w(r,this.canvas,n.RGBA,{premultiply:!0});let i=!1;for(let t in this.tiles){let e=this.tiles[t];"loaded"!==e.state&&(e.state="loaded",e.texture=this.texture,i=!0)}i&&this.fire(new e.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let t of[this.canvas.width,this.canvas.height])if(isNaN(t)||t<=0)return!0;return!1}}let nt={},it=t=>{switch(t){case"geojson":return J;case"image":return tt;case"raster":return $;case"raster-dem":return K;case"vector":return X;case"video":return et;case"canvas":return rt}return nt[t]},at="RTLPluginLoaded";class ot extends e.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=V()}_syncState(t){return this.status=t,this.dispatcher.broadcast("SRPS",{pluginStatus:t,pluginURL:this.url}).catch((t=>{throw this.status="error",t}))}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(t){return e._(this,arguments,void 0,(function*(t,e=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=a.resolveURL(t),!this.url)throw new Error(`requested url ${t} is invalid`);if("unavailable"===this.status){if(!e)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if("requested"===this.status)return this._requestImport()}))}_requestImport(){return e._(this,void 0,void 0,(function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new e.k(at))}))}lazyLoad(){"unavailable"===this.status?this.status="requested":"deferred"===this.status&&this._requestImport()}}let st=null;function lt(){return st||(st=new ot),st}class ct{constructor(t,r){this.timeAdded=0,this.fadeEndTime=0,this.tileID=t,this.uid=e.a4(),this.uses=0,this.tileSize=r,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(t){let e=t+this.timeAdded;ee.getLayer(t))).filter(Boolean);if(0!==t.length){n.layers=t,n.stateDependentLayerIds&&(n.stateDependentLayers=n.stateDependentLayerIds.map((e=>t.filter((t=>t.id===e))[0])));for(let e of t)r[e.id]=n}}return r}(t.buckets,r.style),this.hasSymbolBuckets=!1;for(let t in this.buckets){let r=this.buckets[t];if(r instanceof e.a6){if(this.hasSymbolBuckets=!0,!n)break;r.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let t in this.buckets){let r=this.buckets[t];if(r instanceof e.a6&&r.hasRTLText){this.hasRTLText=!0,lt().lazyLoad();break}}this.queryPadding=0;for(let t in this.buckets){let e=this.buckets[t];this.queryPadding=Math.max(this.queryPadding,r.style.getLayer(t).queryRadius(e))}t.imageAtlas&&(this.imageAtlas=t.imageAtlas),t.glyphAtlasImage&&(this.glyphAtlasImage=t.glyphAtlasImage)}else this.collisionBoxArray=new e.a5}unloadVectorData(){for(let t in this.buckets)this.buckets[t].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(t){return this.buckets[t.id]}upload(t){for(let e in this.buckets){let r=this.buckets[e];r.uploadPending()&&r.upload(t)}let e=t.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new w(t,this.imageAtlas.image,e.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new w(t,this.glyphAtlasImage,e.ALPHA),this.glyphAtlasImage=null)}prepare(t){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(t,this.imageAtlasTexture)}queryRenderedFeatures(t,e,r,n,i,a,o,s,l,c){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:n,cameraQueryGeometry:i,scale:a,tileSize:this.tileSize,pixelPosMatrix:c,transform:s,params:o,queryPadding:this.queryPadding*l},t,e,r):{}}querySourceFeatures(t,r){let n=this.latestFeatureIndex;if(!n||!n.rawTileData)return;let i=n.loadVTLayers(),a=r&&r.sourceLayer?r.sourceLayer:"",o=i._geojsonTileLayer||i[a];if(!o)return;let s=e.a7(r&&r.filter),{z:l,x:c,y:u}=this.tileID.canonical,h={z:l,x:c,y:u};for(let r=0;rt)e=!1;else if(r)if(this.expirationTime{this.remove(t,i)}),r)),this.data[n].push(i),this.order.push(n),this.order.length>this.max){let t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t)}return this}has(t){return t.wrapped().key in this.data}getAndRemove(t){return this.has(t)?this._getAndRemoveByKey(t.wrapped().key):null}_getAndRemoveByKey(t){let e=this.data[t].shift();return e.timeout&&clearTimeout(e.timeout),0===this.data[t].length&&delete this.data[t],this.order.splice(this.order.indexOf(t),1),e.value}getByKey(t){let e=this.data[t];return e?e[0].value:null}get(t){return this.has(t)?this.data[t.wrapped().key][0].value:null}remove(t,e){if(!this.has(t))return this;let r=t.wrapped().key,n=void 0===e?0:this.data[r].indexOf(e),i=this.data[r][n];return this.data[r].splice(n,1),i.timeout&&clearTimeout(i.timeout),0===this.data[r].length&&delete this.data[r],this.onRemove(i.value),this.order.splice(this.order.indexOf(r),1),this}setMaxSize(t){for(this.max=t;this.order.length>this.max;){let t=this._getAndRemoveByKey(this.order[0]);t&&this.onRemove(t)}return this}filter(t){let e=[];for(let r in this.data)for(let n of this.data[r])t(n.value)||e.push(n);for(let t of e)this.remove(t.value.tileID,t)}}class ht{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(t,r,n){let i=String(r);if(this.stateChanges[t]=this.stateChanges[t]||{},this.stateChanges[t][i]=this.stateChanges[t][i]||{},e.e(this.stateChanges[t][i],n),null===this.deletedStates[t]){this.deletedStates[t]={};for(let e in this.state[t])e!==i&&(this.deletedStates[t][e]=null)}else if(this.deletedStates[t]&&null===this.deletedStates[t][i]){this.deletedStates[t][i]={};for(let e in this.state[t][i])n[e]||(this.deletedStates[t][i][e]=null)}else for(let e in n)this.deletedStates[t]&&this.deletedStates[t][i]&&null===this.deletedStates[t][i][e]&&delete this.deletedStates[t][i][e]}removeFeatureState(t,e,r){if(null===this.deletedStates[t])return;let n=String(e);if(this.deletedStates[t]=this.deletedStates[t]||{},r&&void 0!==e)null!==this.deletedStates[t][n]&&(this.deletedStates[t][n]=this.deletedStates[t][n]||{},this.deletedStates[t][n][r]=null);else if(void 0!==e)if(this.stateChanges[t]&&this.stateChanges[t][n])for(r in this.deletedStates[t][n]={},this.stateChanges[t][n])this.deletedStates[t][n][r]=null;else this.deletedStates[t][n]=null;else this.deletedStates[t]=null}getState(t,r){let n=String(r),i=e.e({},(this.state[t]||{})[n],(this.stateChanges[t]||{})[n]);if(null===this.deletedStates[t])return{};if(this.deletedStates[t]){let e=this.deletedStates[t][r];if(null===e)return{};for(let t in e)delete i[t]}return i}initializeTileState(t,e){t.setFeatureState(this.state,e)}coalesceChanges(t,r){let n={};for(let t in this.stateChanges){this.state[t]=this.state[t]||{};let r={};for(let n in this.stateChanges[t])this.state[t][n]||(this.state[t][n]={}),e.e(this.state[t][n],this.stateChanges[t][n]),r[n]=this.state[t][n];n[t]=r}for(let t in this.deletedStates){this.state[t]=this.state[t]||{};let r={};if(null===this.deletedStates[t])for(let e in this.state[t])r[e]={},this.state[t][e]={};else for(let e in this.deletedStates[t]){if(null===this.deletedStates[t][e])this.state[t][e]={};else for(let r of Object.keys(this.deletedStates[t][e]))delete this.state[t][e][r];r[e]=this.state[t][e]}n[t]=n[t]||{},e.e(n[t],r)}if(this.stateChanges={},this.deletedStates={},0!==Object.keys(n).length)for(let e in t)t[e].setFeatureState(n,r)}}class pt extends e.E{constructor(t,e,r){super(),this.id=t,this.dispatcher=r,this.on("data",(t=>this._dataHandler(t))),this.on("dataloading",(()=>{this._sourceErrored=!1})),this.on("error",(()=>{this._sourceErrored=this._source.loaded()})),this._source=((t,e,r,n)=>{let i=new(it(e.type))(t,e,r,n);if(i.id!==t)throw new Error(`Expected Source id to be ${t} instead of ${i.id}`);return i})(t,e,r,this),this._tiles={},this._cache=new ut(0,(t=>this._unloadTile(t))),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new ht,this._didEmitContent=!1,this._updated=!1}onAdd(t){this.map=t,this._maxTileCacheSize=t?t._maxTileCacheSize:null,this._maxTileCacheZoomLevels=t?t._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(t)}onRemove(t){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(t)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(void 0===this.used&&void 0===this.usedForTerrain||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let t in this._tiles){let e=this._tiles[t];if("loaded"!==e.state&&"errored"!==e.state)return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let t=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,t&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(t,r,n){return e._(this,void 0,void 0,(function*(){try{yield this._source.loadTile(t),this._tileLoaded(t,r,n)}catch(r){t.state="errored",404!==r.status?this._source.fire(new e.j(r,{tile:t})):this.update(this.transform,this.terrain)}}))}_unloadTile(t){this._source.unloadTile&&this._source.unloadTile(t)}_abortTile(t){this._source.abortTile&&this._source.abortTile(t),this._source.fire(new e.k("dataabort",{tile:t,coord:t.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(t){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let e in this._tiles){let r=this._tiles[e];r.upload(t),r.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map((t=>t.tileID)).sort(ft).map((t=>t.key))}getRenderableIds(t){let r=[];for(let e in this._tiles)this._isIdRenderable(e,t)&&r.push(this._tiles[e]);return t?r.sort(((t,r)=>{let n=t.tileID,i=r.tileID,a=new e.P(n.canonical.x,n.canonical.y)._rotate(this.transform.angle),o=new e.P(i.canonical.x,i.canonical.y)._rotate(this.transform.angle);return n.overscaledZ-i.overscaledZ||o.y-a.y||o.x-a.x})).map((t=>t.tileID.key)):r.map((t=>t.tileID)).sort(ft).map((t=>t.key))}hasRenderableParent(t){let e=this.findLoadedParent(t,0);return!!e&&this._isIdRenderable(e.tileID.key)}_isIdRenderable(t,e){return this._tiles[t]&&this._tiles[t].hasData()&&!this._coveredTiles[t]&&(e||!this._tiles[t].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let t in this._tiles)"errored"!==this._tiles[t].state&&this._reloadTile(t,"reloading")}}_reloadTile(t,r){return e._(this,void 0,void 0,(function*(){let e=this._tiles[t];e&&("loading"!==e.state&&(e.state=r),yield this._loadTile(e,t,r))}))}_tileLoaded(t,r,n){t.timeAdded=a.now(),"expired"===n&&(t.refreshedUponExpiration=!0),this._setTileReloadTimer(r,t),"raster-dem"===this.getSource().type&&t.dem&&this._backfillDEM(t),this._state.initializeTileState(t,this.map?this.map.painter:null),t.aborted||this._source.fire(new e.k("data",{dataType:"source",tile:t,coord:t.tileID}))}_backfillDEM(t){let e=this.getRenderableIds();for(let n=0;n1||(Math.abs(r)>1&&(1===Math.abs(r+i)?r+=i:1===Math.abs(r-i)&&(r-=i)),e.dem&&t.dem&&(t.dem.backfillBorder(e.dem,r,n),t.neighboringTiles&&t.neighboringTiles[a]&&(t.neighboringTiles[a].backfilled=!0)))}}getTile(t){return this.getTileByID(t.key)}getTileByID(t){return this._tiles[t]}_retainLoadedChildren(t,e,r,n){for(let i in this._tiles){let a=this._tiles[i];if(n[i]||!a.hasData()||a.tileID.overscaledZ<=e||a.tileID.overscaledZ>r)continue;let o=a.tileID;for(;a&&a.tileID.overscaledZ>e+1;){let t=a.tileID.scaledTo(a.tileID.overscaledZ-1);a=this._tiles[t.key],a&&a.hasData()&&(o=t)}let s=o;for(;s.overscaledZ>e;)if(s=s.scaledTo(s.overscaledZ-1),t[s.key]){n[o.key]=o;break}}}findLoadedParent(t,e){if(t.key in this._loadedParentTiles){let r=this._loadedParentTiles[t.key];return r&&r.tileID.overscaledZ>=e?r:null}for(let r=t.overscaledZ-1;r>=e;r--){let e=t.scaledTo(r),n=this._getLoadedTile(e);if(n)return n}}findLoadedSibling(t){return this._getLoadedTile(t)}_getLoadedTile(t){let e=this._tiles[t.key];return e&&e.hasData()?e:this._cache.getByKey(t.wrapped().key)}updateCacheSize(t){let r=Math.ceil(t.width/this._source.tileSize)+1,n=Math.ceil(t.height/this._source.tileSize)+1,i=Math.floor(r*n*(null===this._maxTileCacheZoomLevels?e.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),a="number"==typeof this._maxTileCacheSize?Math.min(this._maxTileCacheSize,i):i;this._cache.setMaxSize(a)}handleWrapJump(t){let e=Math.round((t-(void 0===this._prevLng?t:this._prevLng))/360);if(this._prevLng=t,e){let t={};for(let r in this._tiles){let n=this._tiles[r];n.tileID=n.tileID.unwrapTo(n.tileID.wrap+e),t[n.tileID.key]=n}this._tiles=t;for(let t in this._timers)clearTimeout(this._timers[t]),delete this._timers[t];for(let t in this._tiles)this._setTileReloadTimer(t,this._tiles[t])}}_updateCoveredAndRetainedTiles(t,e,r,n,i,o){let s={},l={},c=Object.keys(t),u=a.now();for(let r of c){let n=t[r],i=this._tiles[r];if(!i||0!==i.fadeEndTime&&i.fadeEndTime<=u)continue;let a=this.findLoadedParent(n,e),o=this.findLoadedSibling(n),c=a||o||null;c&&(this._addTile(c.tileID),s[c.tileID.key]=c.tileID),l[r]=n}this._retainLoadedChildren(l,n,r,t);for(let e in s)t[e]||(this._coveredTiles[e]=!0,t[e]=s[e]);if(o){let e={},r={};for(let t of i)this._tiles[t.key].hasData()?e[t.key]=t:r[t.key]=t;for(let n in r){let i=r[n].children(this._source.maxzoom);this._tiles[i[0].key]&&this._tiles[i[1].key]&&this._tiles[i[2].key]&&this._tiles[i[3].key]&&(e[i[0].key]=t[i[0].key]=i[0],e[i[1].key]=t[i[1].key]=i[1],e[i[2].key]=t[i[2].key]=i[2],e[i[3].key]=t[i[3].key]=i[3],delete r[n])}for(let n in r){let i=r[n],a=this.findLoadedParent(i,this._source.minzoom),o=this.findLoadedSibling(i),s=a||o||null;if(s){e[s.tileID.key]=t[s.tileID.key]=s.tileID;for(let t in e)e[t].isChildOf(s.tileID)&&delete e[t]}}for(let t in this._tiles)e[t]||(this._coveredTiles[t]=!0)}}update(t,r){if(!this._sourceLoaded||this._paused)return;let n;this.transform=t,this.terrain=r,this.updateCacheSize(t),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?n=t.getVisibleUnwrappedCoordinates(this._source.tileID).map((t=>new e.S(t.canonical.z,t.wrap,t.canonical.z,t.canonical.x,t.canonical.y))):(n=t.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:r}),this._source.hasTile&&(n=n.filter((t=>this._source.hasTile(t))))):n=[];let i=t.coveringZoomLevel(this._source),a=Math.max(i-pt.maxOverzooming,this._source.minzoom),o=Math.max(i+pt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let t={};for(let e of n)if(e.canonical.z>this._source.minzoom){let r=e.scaledTo(e.canonical.z-1);t[r.key]=r;let n=e.scaledTo(Math.max(this._source.minzoom,Math.min(e.canonical.z,5)));t[n.key]=n}n=n.concat(Object.values(t))}let s=0===n.length&&!this._updated&&this._didEmitContent;this._updated=!0,s&&this.fire(new e.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let l=this._updateRetainedTiles(n,i);dt(this._source.type)&&this._updateCoveredAndRetainedTiles(l,a,o,i,n,r);for(let t in l)this._tiles[t].clearFadeHold();let c=e.ab(this._tiles,l);for(let t of c){let e=this._tiles[t];e.hasSymbolBuckets&&!e.holdingForFade()?e.setHoldDuration(this.map._fadeDuration):e.hasSymbolBuckets&&!e.symbolFadeFinished()||this._removeTile(t)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let t in this._tiles)this._tiles[t].holdingForFade()&&this._removeTile(t)}_updateRetainedTiles(t,e){var r;let n={},i={},a=Math.max(e-pt.maxOverzooming,this._source.minzoom),o=Math.max(e+pt.maxUnderzooming,this._source.minzoom),s={};for(let r of t){let t=this._addTile(r);n[r.key]=r,t.hasData()||ethis._source.maxzoom){let t=o.children(this._source.maxzoom)[0],e=this.getTile(t);if(e&&e.hasData()){n[t.key]=t;continue}}else{let t=o.children(this._source.maxzoom);if(n[t[0].key]&&n[t[1].key]&&n[t[2].key]&&n[t[3].key])continue}let s=t.wasRequested();for(let e=o.overscaledZ-1;e>=a;--e){let a=o.scaledTo(e);if(i[a.key])break;if(i[a.key]=!0,t=this.getTile(a),!t&&s&&(t=this._addTile(a)),t){let e=t.hasData();if((e||!(null!==(r=this.map)&&void 0!==r&&r.cancelPendingTileRequestsWhileZooming)||s)&&(n[a.key]=a),s=t.wasRequested(),e)break}}}return n}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let t in this._tiles){let e,r=[],n=this._tiles[t].tileID;for(;n.overscaledZ>0;){if(n.key in this._loadedParentTiles){e=this._loadedParentTiles[n.key];break}r.push(n.key);let t=n.scaledTo(n.overscaledZ-1);if(e=this._getLoadedTile(t),e)break;n=t}for(let t of r)this._loadedParentTiles[t]=e}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let t in this._tiles){let e=this._tiles[t].tileID,r=this._getLoadedTile(e);this._loadedSiblingTiles[e.key]=r}}_addTile(t){let r=this._tiles[t.key];if(r)return r;r=this._cache.getAndRemove(t),r&&(this._setTileReloadTimer(t.key,r),r.tileID=t,this._state.initializeTileState(r,this.map?this.map.painter:null),this._cacheTimers[t.key]&&(clearTimeout(this._cacheTimers[t.key]),delete this._cacheTimers[t.key],this._setTileReloadTimer(t.key,r)));let n=r;return r||(r=new ct(t,this._source.tileSize*t.overscaleFactor()),this._loadTile(r,t.key,r.state)),r.uses++,this._tiles[t.key]=r,n||this._source.fire(new e.k("dataloading",{tile:r,coord:r.tileID,dataType:"source"})),r}_setTileReloadTimer(t,e){t in this._timers&&(clearTimeout(this._timers[t]),delete this._timers[t]);let r=e.getExpiryTimeout();r&&(this._timers[t]=setTimeout((()=>{this._reloadTile(t,"expired"),delete this._timers[t]}),r))}_removeTile(t){let e=this._tiles[t];e&&(e.uses--,delete this._tiles[t],this._timers[t]&&(clearTimeout(this._timers[t]),delete this._timers[t]),e.uses>0||(e.hasData()&&"reloading"!==e.state?this._cache.add(e.tileID,e,e.getExpiryTimeout()):(e.aborted=!0,this._abortTile(e),this._unloadTile(e))))}_dataHandler(t){let e=t.sourceDataType;"source"===t.dataType&&"metadata"===e&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&"source"===t.dataType&&"content"===e&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let t in this._tiles)this._removeTile(t);this._cache.reset()}tilesIn(t,r,n){let i=[],a=this.transform;if(!a)return i;let o=n?a.getCameraQueryGeometry(t):t,s=t.map((t=>a.pointCoordinate(t,this.terrain))),l=o.map((t=>a.pointCoordinate(t,this.terrain))),c=this.getIds(),u=1/0,h=1/0,p=-1/0,f=-1/0;for(let t of l)u=Math.min(u,t.x),h=Math.min(h,t.y),p=Math.max(p,t.x),f=Math.max(f,t.y);for(let t=0;t=0&&g[1].y+m>=0){let t=s.map((t=>o.getTilePoint(t))),e=l.map((t=>o.getTilePoint(t)));i.push({tile:n,tileID:o,queryGeometry:t,cameraQueryGeometry:e,scale:d})}}return i}getVisibleCoordinates(t){let e=this.getRenderableIds(t).map((t=>this._tiles[t].tileID));for(let t of e)t.posMatrix=this.transform.calculatePosMatrix(t.toUnwrapped());return e}hasTransition(){if(this._source.hasTransition())return!0;if(dt(this._source.type)){let t=a.now();for(let e in this._tiles)if(this._tiles[e].fadeEndTime>=t)return!0}return!1}setFeatureState(t,e,r){this._state.updateState(t=t||"_geojsonTileLayer",e,r)}removeFeatureState(t,e,r){this._state.removeFeatureState(t=t||"_geojsonTileLayer",e,r)}getFeatureState(t,e){return this._state.getState(t=t||"_geojsonTileLayer",e)}setDependencies(t,e,r){let n=this._tiles[t];n&&n.setDependencies(e,r)}reloadTilesForDependencies(t,e){for(let r in this._tiles)this._tiles[r].hasDependency(t,e)&&this._reloadTile(r,"reloading");this._cache.filter((r=>!r.hasDependency(t,e)))}}function ft(t,e){let r=Math.abs(2*t.wrap)-+(t.wrap<0),n=Math.abs(2*e.wrap)-+(e.wrap<0);return t.overscaledZ-e.overscaledZ||n-r||e.canonical.y-t.canonical.y||e.canonical.x-t.canonical.x}function dt(t){return"raster"===t||"image"===t||"video"===t}pt.maxOverzooming=10,pt.maxUnderzooming=3;class mt{constructor(t,e){this.reset(t,e)}reset(t,e){this.points=t||[],this._distances=[0];for(let t=1;t0?(i-o)/s:0;return this.points[a].mult(1-l).add(this.points[r].mult(l))}}function gt(t,e){let r=!0;return"always"===t||"never"!==t&&"never"!==e||(r=!1),r}class yt{constructor(t,e,r){let n=this.boxCells=[],i=this.circleCells=[];this.xCellCount=Math.ceil(t/r),this.yCellCount=Math.ceil(e/r);for(let t=0;tthis.width||n<0||e>this.height)return[];let s=[];if(t<=0&&e<=0&&this.width<=r&&this.height<=n){if(i)return[{key:null,x1:t,y1:e,x2:r,y2:n}];for(let t=0;t0}hitTestCircle(t,e,r,n,i){let a=t-r,o=t+r,s=e-r,l=e+r;if(o<0||a>this.width||l<0||s>this.height)return!1;let c=[];return this._forEachCell(a,s,o,l,this._queryCellCircle,c,{hitTest:!0,overlapMode:n,circle:{x:t,y:e,radius:r},seenUids:{box:{},circle:{}}},i),c.length>0}_queryCell(t,e,r,n,i,a,o,s){let{seenUids:l,hitTest:c,overlapMode:u}=o,h=this.boxCells[i];if(null!==h){let i=this.bboxes;for(let o of h)if(!l.box[o]){l.box[o]=!0;let h=4*o,p=this.boxKeys[o];if(t<=i[h+2]&&e<=i[h+3]&&r>=i[h+0]&&n>=i[h+1]&&(!s||s(p))&&(!c||!gt(u,p.overlapMode))&&(a.push({key:p,x1:i[h],y1:i[h+1],x2:i[h+2],y2:i[h+3]}),c))return!0}}let p=this.circleCells[i];if(null!==p){let i=this.circles;for(let o of p)if(!l.circle[o]){l.circle[o]=!0;let h=3*o,p=this.circleKeys[o];if(this._circleAndRectCollide(i[h],i[h+1],i[h+2],t,e,r,n)&&(!s||s(p))&&(!c||!gt(u,p.overlapMode))){let t=i[h],e=i[h+1],r=i[h+2];if(a.push({key:p,x1:t-r,y1:e-r,x2:t+r,y2:e+r}),c)return!0}}}return!1}_queryCellCircle(t,e,r,n,i,a,o,s){let{circle:l,seenUids:c,overlapMode:u}=o,h=this.boxCells[i];if(null!==h){let t=this.bboxes;for(let e of h)if(!c.box[e]){c.box[e]=!0;let r=4*e,n=this.boxKeys[e];if(this._circleAndRectCollide(l.x,l.y,l.radius,t[r+0],t[r+1],t[r+2],t[r+3])&&(!s||s(n))&&!gt(u,n.overlapMode))return a.push(!0),!0}}let p=this.circleCells[i];if(null!==p){let t=this.circles;for(let e of p)if(!c.circle[e]){c.circle[e]=!0;let r=3*e,n=this.circleKeys[e];if(this._circlesCollide(t[r],t[r+1],t[r+2],l.x,l.y,l.radius)&&(!s||s(n))&&!gt(u,n.overlapMode))return a.push(!0),!0}}}_forEachCell(t,e,r,n,i,a,o,s){let l=this._convertToXCellCoord(t),c=this._convertToYCellCoord(e),u=this._convertToXCellCoord(r),h=this._convertToYCellCoord(n);for(let p=l;p<=u;p++)for(let l=c;l<=h;l++)if(i.call(this,t,e,r,n,this.xCellCount*l+p,a,o,s))return}_convertToXCellCoord(t){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(t*this.xScale)))}_convertToYCellCoord(t){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(t*this.yScale)))}_circlesCollide(t,e,r,n,i,a){let o=n-t,s=i-e,l=r+a;return l*l>o*o+s*s}_circleAndRectCollide(t,e,r,n,i,a,o){let s=(a-n)/2,l=Math.abs(t-(n+s));if(l>s+r)return!1;let c=(o-i)/2,u=Math.abs(e-(i+c));if(u>c+r)return!1;if(l<=s||u<=c)return!0;let h=l-s,p=u-c;return h*h+p*p<=r*r}}function vt(t,r,n,i,a){let o=e.H();return r?(e.K(o,o,[1/a,1/a,1]),n||e.ad(o,o,i.angle)):e.L(o,i.labelPlaneMatrix,t),o}function xt(t,r,n,i,a){if(r){let r=e.ae(t);return e.K(r,r,[a,a,1]),n||e.ad(r,r,-i.angle),r}return i.glCoordMatrix}function _t(t,r,n,i){let a;i?(a=[t,r,i(t,r),1],e.af(a,a,n)):(a=[t,r,0,1],Ot(a,a,n));let o=a[3];return{point:new e.P(a[0]/o,a[1]/o),signedDistanceFromCamera:o,isOccluded:!1}}function bt(t,e){return.5+t/e*.5}function wt(t,e){return t.x>=-e[0]&&t.x<=e[0]&&t.y>=-e[1]&&t.y<=e[1]}function Tt(t,r,n,i,a,o,s,l,c,u,h,p,f,d,m){let g=i?t.textSizeData:t.iconSizeData,y=e.ag(g,n.transform.zoom),v=[256/n.width*2+1,256/n.height*2+1],x=i?t.text.dynamicLayoutVertexArray:t.icon.dynamicLayoutVertexArray;x.clear();let _=t.lineVertexArray,b=i?t.text.placedSymbolArray:t.icon.placedSymbolArray,w=n.transform.width/n.transform.height,T=!1;for(let i=0;iMath.abs(n.x-r.x)*i?{useVertical:!0}:(t===e.ah.vertical?r.yn.x)?{needsFlipping:!0}:null}function Mt(t,r,n,i,a,o,s,l,c,u,h){let p,f=n/24,d=r.lineOffsetX*f,m=r.lineOffsetY*f;if(r.numGlyphs>1){let e=r.glyphStartIndex+r.numGlyphs,n=r.lineStartIndex,o=r.lineStartIndex+r.lineLength,c=At(f,l,d,m,i,r,h,t);if(!c)return{notEnoughRoom:!0};let g=_t(c.first.point.x,c.first.point.y,s,t.getElevation).point,y=_t(c.last.point.x,c.last.point.y,s,t.getElevation).point;if(a&&!i){let t=kt(r.writingMode,g,y,u);if(t)return t}p=[c.first];for(let a=r.glyphStartIndex+1;a0?s.point:St(t.tileAnchorPoint,a,n,1,o,t),c=kt(r.writingMode,n,l,u);if(c)return c}let n=Pt(f*l.getoffsetX(r.glyphStartIndex),d,m,i,r.segment,r.lineStartIndex,r.lineStartIndex+r.lineLength,t,h);if(!n||t.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};p=[n]}for(let t of p)e.aj(c,t.point,t.angle);return{}}function St(t,e,r,n,i,a){let o=t.add(t.sub(e)._unit()),s=void 0!==i?_t(o.x,o.y,i,a.getElevation).point:Ct(o.x,o.y,a).point,l=r.sub(s);return r.add(l._mult(n/l.mag()))}function Et(t,r,n){let i=r.projectionCache;if(i.projections[t])return i.projections[t];let a=new e.P(r.lineVertexArray.getx(t),r.lineVertexArray.gety(t)),o=Ct(a.x,a.y,r);if(o.signedDistanceFromCamera>0)return i.projections[t]=o.point,i.anyProjectionOccluded=i.anyProjectionOccluded||o.isOccluded,o.point;let s=t-n.direction;return St(0===n.distanceFromAnchor?r.tileAnchorPoint:new e.P(r.lineVertexArray.getx(s),r.lineVertexArray.gety(s)),a,n.previousVertex,n.absOffsetX-n.distanceFromAnchor+1,void 0,r)}function Ct(t,e,r){let n,i=t+r.translation[0],a=e+r.translation[1];return!r.pitchWithMap&&r.projection.useSpecialProjectionForSymbols?(n=r.projection.projectTileCoordinates(i,a,r.unwrappedTileID,r.getElevation),n.point.x=(.5*n.point.x+.5)*r.width,n.point.y=(.5*-n.point.y+.5)*r.height):(n=_t(i,a,r.labelPlaneMatrix,r.getElevation),n.isOccluded=!1),n}function It(t,e,r){return t._unit()._perp()._mult(e*r)}function Lt(t,r,n,i,a,o,s,l,c){if(l.projectionCache.offsets[t])return l.projectionCache.offsets[t];let u=n.add(r);if(t+c.direction=a)return l.projectionCache.offsets[t]=u,u;let h=Et(t+c.direction,l,c),p=It(h.sub(n),s,c.direction),f=n.add(p),d=h.add(p);return l.projectionCache.offsets[t]=e.ak(o,u,f,d)||u,l.projectionCache.offsets[t]}function Pt(t,e,r,n,i,a,o,s,l){let c=n?t-e:t+e,u=c>0?1:-1,h=0;n&&(u*=-1,h=Math.PI),u<0&&(h+=Math.PI);let p,f=u>0?a+i:a+i+1;s.projectionCache.cachedAnchorPoint?p=s.projectionCache.cachedAnchorPoint:(p=Ct(s.tileAnchorPoint.x,s.tileAnchorPoint.y,s).point,s.projectionCache.cachedAnchorPoint=p);let d,m,g,y=p,v=p,x=0,_=0,b=Math.abs(c),w=[];for(;x+_<=b;){if(f+=u,f=o)return null;x+=_,v=y,m=d;let t={absOffsetX:b,direction:u,distanceFromAnchor:x,previousVertex:v};if(y=Et(f,s,t),0===r)w.push(v),g=y.sub(v);else{let e,n=y.sub(v);e=0===n.mag()?It(Et(f+u,s,t).sub(y),r,u):It(n,r,u),m||(m=v.add(e)),d=Lt(f,e,y,a,o,m,r,s,t),w.push(m),g=d.sub(m)}_=g.mag()}let T=g._mult((b-x)/_)._add(m||v),A=h+Math.atan2(y.y-v.y,y.x-v.x);return w.push(T),{point:T,angle:l?A:0,path:w}}let zt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Dt(t,e){for(let r=0;r=1;t--)l.push(o.path[t]);for(let t=1;tt.signedDistanceFromCamera<=0))?[]:t.map((t=>t.point))}let m=[];if(l.length>0){let t=l[0].clone(),r=l[0].clone();for(let e=1;e=n.x&&r.x<=i.x&&t.y>=n.y&&r.y<=i.y?[l]:r.xi.x||r.yi.y?[]:e.al([l],n.x,n.y,i.x,i.y)}for(let e of m){a.reset(e,.25*r);let n=0;n=a.length<=.5*r?1:Math.ceil(a.paddedLength/h)+1;for(let e=0;e_t(t.x,t.y,r,e.getElevation)))}queryRenderedSymbols(t){if(0===t.length||0===this.grid.keysLength()&&0===this.ignoredGrid.keysLength())return{};let r=[],n=1/0,i=1/0,a=-1/0,o=-1/0;for(let s of t){let t=new e.P(s.x+Rt,s.y+Rt);n=Math.min(n,t.x),i=Math.min(i,t.y),a=Math.max(a,t.x),o=Math.max(o,t.y),r.push(t)}let s=this.grid.query(n,i,a,o).concat(this.ignoredGrid.query(n,i,a,o)),l={},c={};for(let t of s){let n=t.key;if(void 0===l[n.bucketInstanceId]&&(l[n.bucketInstanceId]={}),l[n.bucketInstanceId][n.featureIndex])continue;let i=[new e.P(t.x1,t.y1),new e.P(t.x2,t.y1),new e.P(t.x2,t.y2),new e.P(t.x1,t.y2)];e.am(r,i)&&(l[n.bucketInstanceId][n.featureIndex]=!0,void 0===c[n.bucketInstanceId]&&(c[n.bucketInstanceId]=[]),c[n.bucketInstanceId].push(n.featureIndex))}return c}insertCollisionBox(t,e,r,n,i,a){(r?this.ignoredGrid:this.grid).insert({bucketInstanceId:n,featureIndex:i,collisionGroupID:a,overlapMode:e},t[0],t[1],t[2],t[3])}insertCollisionCircles(t,e,r,n,i,a){let o=r?this.ignoredGrid:this.grid,s={bucketInstanceId:n,featureIndex:i,collisionGroupID:a,overlapMode:e};for(let e=0;e=this.screenRightBoundary||nthis.screenBottomBoundary}isInsideGrid(t,e,r,n){return r>=0&&t=0&&ethis.projectAndGetPerspectiveRatio(n,t.x,t.y,i,c)));A=t.some((t=>!t.isOccluded)),T=t.map((t=>t.point))}else A=!0;return{box:e.ao(T),allPointsOccluded:!A}}}function Bt(t,r,n){return r*(e.X/(t.tileSize*Math.pow(2,n-t.tileID.overscaledZ)))}class jt{constructor(t,e,r,n){this.opacity=t?Math.max(0,Math.min(1,t.opacity+(t.placed?e:-e))):n&&r?1:0,this.placed=r}isHidden(){return 0===this.opacity&&!this.placed}}class Nt{constructor(t,e,r,n,i){this.text=new jt(t?t.text:null,e,r,i),this.icon=new jt(t?t.icon:null,e,n,i)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Ut{constructor(t,e,r){this.text=t,this.icon=e,this.skipFade=r}}class Vt{constructor(){this.invProjMatrix=e.H(),this.viewportMatrix=e.H(),this.circles=[]}}class qt{constructor(t,e,r,n,i){this.bucketInstanceId=t,this.featureIndex=e,this.sourceLayerIndex=r,this.bucketIndex=n,this.tileID=i}}class Ht{constructor(t){this.crossSourceCollisions=t,this.maxGroupID=0,this.collisionGroups={}}get(t){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[t]){let e=++this.maxGroupID;this.collisionGroups[t]={ID:e,predicate:t=>t.collisionGroupID===e}}return this.collisionGroups[t]}}function Gt(t,r,n,i,a){let{horizontalAlign:o,verticalAlign:s}=e.au(t);return new e.P(-(o-.5)*r+i[0]*a,-(s-.5)*n+i[1]*a)}class Wt{constructor(t,e,r,n,i,a){this.transform=t.clone(),this.terrain=r,this.collisionIndex=new Ft(this.transform,e),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=n,this.retainedQueryData={},this.collisionGroups=new Ht(i),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=a,a&&(a.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(t){let e=this.terrain;return e?(r,n)=>e.getElevation(t,r,n):null}getBucketParts(t,r,n,i){let a=n.getBucket(r),o=n.latestFeatureIndex;if(!a||!o||r.id!==a.layerIds[0])return;let s=n.collisionBoxArray,l=a.layers[0].layout,c=a.layers[0].paint,u=Math.pow(2,this.transform.zoom-n.tileID.overscaledZ),h=n.tileSize/e.X,p=n.tileID.toUnwrapped(),f=this.transform.calculatePosMatrix(p),d="map"===l.get("text-pitch-alignment"),m="map"===l.get("text-rotation-alignment"),g=Bt(n,1,this.transform.zoom),y=this.collisionIndex.mapProjection.translatePosition(this.transform,n,c.get("text-translate"),c.get("text-translate-anchor")),v=this.collisionIndex.mapProjection.translatePosition(this.transform,n,c.get("icon-translate"),c.get("icon-translate-anchor")),x=vt(f,d,m,this.transform,g),_=null;if(d){let t=xt(f,d,m,this.transform,g);_=e.L([],this.transform.labelPlaneMatrix,t)}this.retainedQueryData[a.bucketInstanceId]=new qt(a.bucketInstanceId,o,a.sourceLayerIndex,a.index,n.tileID);let b={bucket:a,layout:l,translationText:y,translationIcon:v,posMatrix:f,unwrappedTileID:p,textLabelPlaneMatrix:x,labelToScreenMatrix:_,scale:u,textPixelRatio:h,holdingForFade:n.holdingForFade(),collisionBoxArray:s,partiallyEvaluatedTextSize:e.ag(a.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(a.sourceID)};if(i)for(let e of a.sortKeyRanges){let{sortKey:r,symbolInstanceStart:n,symbolInstanceEnd:i}=e;t.push({sortKey:r,symbolInstanceStart:n,symbolInstanceEnd:i,parameters:b})}else t.push({symbolInstanceStart:0,symbolInstanceEnd:a.symbolInstances.length,parameters:b})}attemptAnchorPlacement(t,r,n,i,a,o,s,l,c,u,h,p,f,d,m,g,y,v,x){let _=e.aq[t.textAnchor],b=[t.textOffset0,t.textOffset1],w=Gt(_,n,i,b,a),T=this.collisionIndex.placeCollisionBox(r,p,l,c,u,s,o,g,h.predicate,x,w);if((!v||this.collisionIndex.placeCollisionBox(v,p,l,c,u,s,o,y,h.predicate,x,w).placeable)&&T.placeable){let t;if(this.prevPlacement&&this.prevPlacement.variableOffsets[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID]&&this.prevPlacement.placements[f.crossTileID].text&&(t=this.prevPlacement.variableOffsets[f.crossTileID].anchor),0===f.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[f.crossTileID]={textOffset:b,width:n,height:i,anchor:_,textBoxScale:a,prevAnchor:t},this.markUsedJustification(d,_,f,m),d.allowVerticalPlacement&&(this.markUsedOrientation(d,m,f),this.placedOrientations[f.crossTileID]=m),{shift:w,placedGlyphBoxes:T}}}placeLayerBucketPart(t,r,n){let{bucket:i,layout:a,translationText:o,translationIcon:s,posMatrix:l,unwrappedTileID:c,textLabelPlaneMatrix:u,labelToScreenMatrix:h,textPixelRatio:p,holdingForFade:f,collisionBoxArray:d,partiallyEvaluatedTextSize:m,collisionGroup:g}=t.parameters,y=a.get("text-optional"),v=a.get("icon-optional"),x=e.ar(a,"text-overlap","text-allow-overlap"),_="always"===x,b=e.ar(a,"icon-overlap","icon-allow-overlap"),w="always"===b,T="map"===a.get("text-rotation-alignment"),A="map"===a.get("text-pitch-alignment"),k="none"!==a.get("icon-text-fit"),M="viewport-y"===a.get("symbol-z-order"),S=_&&(w||!i.hasIconData()||v),E=w&&(_||!i.hasTextData()||y);!i.collisionArrays&&d&&i.deserializeCollisionBoxes(d);let C=this._getTerrainElevationFunc(this.retainedQueryData[i.bucketInstanceId].tileID),I=(t,d,w)=>{var M,I;if(r[t.crossTileID])return;if(f)return void(this.placements[t.crossTileID]=new Ut(!1,!1,!1));let L=!1,P=!1,z=!0,D=null,O={box:null,placeable:!1,offscreen:null},R={box:null,placeable:!1,offscreen:null},F=null,B=null,j=null,N=0,U=0,V=0;d.textFeatureIndex?N=d.textFeatureIndex:t.useRuntimeCollisionCircles&&(N=t.featureIndex),d.verticalTextFeatureIndex&&(U=d.verticalTextFeatureIndex);let q=d.textBox;if(q){let r=r=>{let n=e.ah.horizontal;if(i.allowVerticalPlacement&&!r&&this.prevPlacement){let e=this.prevPlacement.placedOrientations[t.crossTileID];e&&(this.placedOrientations[t.crossTileID]=e,n=e,this.markUsedOrientation(i,n,t))}return n},a=(r,n)=>{if(i.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&d.verticalTextBox){for(let t of i.writingModes)if(t===e.ah.vertical?(O=n(),R=O):O=r(),O&&O.placeable)break}else O=r()},u=t.textAnchorOffsetStartIndex,h=t.textAnchorOffsetEndIndex;if(h===u){let n=(e,r)=>{let n=this.collisionIndex.placeCollisionBox(e,x,p,l,c,A,T,o,g.predicate,C);return n&&n.placeable&&(this.markUsedOrientation(i,r,t),this.placedOrientations[t.crossTileID]=r),n};a((()=>n(q,e.ah.horizontal)),(()=>{let r=d.verticalTextBox;return i.allowVerticalPlacement&&t.numVerticalGlyphVertices>0&&r?n(r,e.ah.vertical):{box:null,offscreen:null}})),r(O&&O.placeable)}else{let f=e.aq[null===(I=null===(M=this.prevPlacement)||void 0===M?void 0:M.variableOffsets[t.crossTileID])||void 0===I?void 0:I.anchor],m=(r,a,d)=>{let m=r.x2-r.x1,y=r.y2-r.y1,v=t.textBoxScale,_=k&&"never"===b?a:null,w=null,M="never"===x?1:2,S="never";f&&M++;for(let e=0;em(q,d.iconBox,e.ah.horizontal)),(()=>{let r=d.verticalTextBox;return i.allowVerticalPlacement&&(!O||!O.placeable)&&t.numVerticalGlyphVertices>0&&r?m(r,d.verticalIconBox,e.ah.vertical):{box:null,occluded:!0,offscreen:null}})),O&&(L=O.placeable,z=O.offscreen);let y=r(O&&O.placeable);if(!L&&this.prevPlacement){let e=this.prevPlacement.variableOffsets[t.crossTileID];e&&(this.variableOffsets[t.crossTileID]=e,this.markUsedJustification(i,e.anchor,t,y))}}}if(F=O,L=F&&F.placeable,z=F&&F.offscreen,t.useRuntimeCollisionCircles){let r=i.text.placedSymbolArray.get(t.centerJustifiedTextSymbolIndex),s=e.ai(i.textSizeData,m,r),p=a.get("text-padding");B=this.collisionIndex.placeCollisionCircles(x,r,i.lineVertexArray,i.glyphOffsetArray,s,l,c,u,h,n,A,g.predicate,t.collisionCircleDiameter,p,o,C),B.circles.length&&B.collisionDetected&&!n&&e.w("Collisions detected, but collision boxes are not shown"),L=_||B.circles.length>0&&!B.collisionDetected,z=z&&B.offscreen}if(d.iconFeatureIndex&&(V=d.iconFeatureIndex),d.iconBox){let t=t=>this.collisionIndex.placeCollisionBox(t,b,p,l,c,A,T,s,g.predicate,C,k&&D?D:void 0);R&&R.placeable&&d.verticalIconBox?(j=t(d.verticalIconBox),P=j.placeable):(j=t(d.iconBox),P=j.placeable),z=z&&j.offscreen}let H=y||0===t.numHorizontalGlyphVertices&&0===t.numVerticalGlyphVertices,G=v||0===t.numIconVertices;H||G?G?H||(P=P&&L):L=P&&L:P=L=P&&L;let W=P&&j.placeable;if(L&&F.placeable&&this.collisionIndex.insertCollisionBox(F.box,x,a.get("text-ignore-placement"),i.bucketInstanceId,R&&R.placeable&&U?U:N,g.ID),W&&this.collisionIndex.insertCollisionBox(j.box,b,a.get("icon-ignore-placement"),i.bucketInstanceId,V,g.ID),B&&L&&this.collisionIndex.insertCollisionCircles(B.circles,x,a.get("text-ignore-placement"),i.bucketInstanceId,N,g.ID),n&&this.storeCollisionData(i.bucketInstanceId,w,d,F,j,B),0===t.crossTileID)throw new Error("symbolInstance.crossTileID can't be 0");if(0===i.bucketInstanceId)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[t.crossTileID]=new Ut(L||S,P||E,z||i.justReloaded),r[t.crossTileID]=!0};if(M){if(0!==t.symbolInstanceStart)throw new Error("bucket.bucketInstanceId should be 0");let e=i.getSortedSymbolIndexes(this.transform.angle);for(let t=e.length-1;t>=0;--t){let r=e[t];I(i.symbolInstances.get(r),i.collisionArrays[r],r)}}else for(let e=t.symbolInstanceStart;e=0&&(t.text.placedSymbolArray.get(e).crossTileID=a>=0&&e!==a?0:n.crossTileID)}markUsedOrientation(t,r,n){let i=r===e.ah.horizontal||r===e.ah.horizontalOnly?r:0,a=r===e.ah.vertical?r:0,o=[n.leftJustifiedTextSymbolIndex,n.centerJustifiedTextSymbolIndex,n.rightJustifiedTextSymbolIndex];for(let e of o)t.text.placedSymbolArray.get(e).placedOrientation=i;n.verticalPlacedTextSymbolIndex&&(t.text.placedSymbolArray.get(n.verticalPlacedTextSymbolIndex).placedOrientation=a)}commit(t){this.commitTime=t,this.zoomAtLastRecencyCheck=this.transform.zoom;let e=this.prevPlacement,r=!1;this.prevZoomAdjustment=e?e.zoomAdjustment(this.transform.zoom):0;let n=e?e.symbolFadeChange(t):1,i=e?e.opacities:{},a=e?e.variableOffsets:{},o=e?e.placedOrientations:{};for(let t in this.placements){let e=this.placements[t],a=i[t];a?(this.opacities[t]=new Nt(a,n,e.text,e.icon),r=r||e.text!==a.text.placed||e.icon!==a.icon.placed):(this.opacities[t]=new Nt(null,n,e.text,e.icon,e.skipFade),r=r||e.text||e.icon)}for(let t in i){let e=i[t];if(!this.opacities[t]){let i=new Nt(e,n,!1,!1);i.isHidden()||(this.opacities[t]=i,r=r||e.text.placed||e.icon.placed)}}for(let t in a)this.variableOffsets[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.variableOffsets[t]=a[t]);for(let t in o)this.placedOrientations[t]||!this.opacities[t]||this.opacities[t].isHidden()||(this.placedOrientations[t]=o[t]);if(e&&void 0===e.lastPlacementChangeTime)throw new Error("Last placement time for previous placement is not defined");r?this.lastPlacementChangeTime=t:"number"!=typeof this.lastPlacementChangeTime&&(this.lastPlacementChangeTime=e?e.lastPlacementChangeTime:t)}updateLayerOpacities(t,e){let r={};for(let n of e){let e=n.getBucket(t);e&&n.latestFeatureIndex&&t.id===e.layerIds[0]&&this.updateBucketOpacities(e,n.tileID,r,n.collisionBoxArray)}}updateBucketOpacities(t,r,n,i){t.hasTextData()&&(t.text.opacityVertexArray.clear(),t.text.hasVisibleVertices=!1),t.hasIconData()&&(t.icon.opacityVertexArray.clear(),t.icon.hasVisibleVertices=!1),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexArray.clear(),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexArray.clear();let a=t.layers[0],o=a.layout,s=new Nt(null,0,!1,!1,!0),l=o.get("text-allow-overlap"),c=o.get("icon-allow-overlap"),u=a._unevaluatedLayout.hasValue("text-variable-anchor")||a._unevaluatedLayout.hasValue("text-variable-anchor-offset"),h="map"===o.get("text-rotation-alignment"),p="map"===o.get("text-pitch-alignment"),f="none"!==o.get("icon-text-fit"),d=new Nt(null,0,l&&(c||!t.hasIconData()||o.get("icon-optional")),c&&(l||!t.hasTextData()||o.get("text-optional")),!0);!t.collisionArrays&&i&&(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData())&&t.deserializeCollisionBoxes(i);let m=(t,e,r)=>{for(let n=0;n0,v=this.placedOrientations[i.crossTileID],x=v===e.ah.vertical,_=v===e.ah.horizontal||v===e.ah.horizontalOnly;if(a>0||o>0){let e=ee(c.text);m(t.text,a,x?re:e),m(t.text,o,_?re:e);let r=c.text.isHidden();[i.rightJustifiedTextSymbolIndex,i.centerJustifiedTextSymbolIndex,i.leftJustifiedTextSymbolIndex].forEach((e=>{e>=0&&(t.text.placedSymbolArray.get(e).hidden=r||x?1:0)})),i.verticalPlacedTextSymbolIndex>=0&&(t.text.placedSymbolArray.get(i.verticalPlacedTextSymbolIndex).hidden=r||_?1:0);let n=this.variableOffsets[i.crossTileID];n&&this.markUsedJustification(t,n.anchor,i,v);let s=this.placedOrientations[i.crossTileID];s&&(this.markUsedJustification(t,"left",i,s),this.markUsedOrientation(t,s,i))}if(y){let e=ee(c.icon),r=!(f&&i.verticalPlacedIconSymbolIndex&&x);i.placedIconSymbolIndex>=0&&(m(t.icon,i.numIconVertices,r?e:re),t.icon.placedSymbolArray.get(i.placedIconSymbolIndex).hidden=c.icon.isHidden()),i.verticalPlacedIconSymbolIndex>=0&&(m(t.icon,i.numVerticalIconVertices,r?re:e),t.icon.placedSymbolArray.get(i.verticalPlacedIconSymbolIndex).hidden=c.icon.isHidden())}let b=g&&g.has(r)?g.get(r):{text:null,icon:null};if(t.hasIconCollisionBoxData()||t.hasTextCollisionBoxData()){let n=t.collisionArrays[r];if(n){let r=new e.P(0,0);if(n.textBox||n.verticalTextBox){let e=!0;if(u){let t=this.variableOffsets[l];t?(r=Gt(t.anchor,t.width,t.height,t.textOffset,t.textBoxScale),h&&r._rotate(p?this.transform.angle:-this.transform.angle)):e=!1}if(n.textBox||n.verticalTextBox){let i;n.textBox&&(i=x),n.verticalTextBox&&(i=_),Zt(t.textCollisionBox.collisionVertexArray,c.text.placed,!e||i,b.text,r.x,r.y)}}if(n.iconBox||n.verticalIconBox){let e,i=!(_||!n.verticalIconBox);n.iconBox&&(e=i),n.verticalIconBox&&(e=!i),Zt(t.iconCollisionBox.collisionVertexArray,c.icon.placed,e,b.icon,f?r.x:0,f?r.y:0)}}}}if(t.sortFeatures(this.transform.angle),this.retainedQueryData[t.bucketInstanceId]&&(this.retainedQueryData[t.bucketInstanceId].featureSortOrder=t.featureSortOrder),t.hasTextData()&&t.text.opacityVertexBuffer&&t.text.opacityVertexBuffer.updateData(t.text.opacityVertexArray),t.hasIconData()&&t.icon.opacityVertexBuffer&&t.icon.opacityVertexBuffer.updateData(t.icon.opacityVertexArray),t.hasIconCollisionBoxData()&&t.iconCollisionBox.collisionVertexBuffer&&t.iconCollisionBox.collisionVertexBuffer.updateData(t.iconCollisionBox.collisionVertexArray),t.hasTextCollisionBoxData()&&t.textCollisionBox.collisionVertexBuffer&&t.textCollisionBox.collisionVertexBuffer.updateData(t.textCollisionBox.collisionVertexArray),t.text.opacityVertexArray.length!==t.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${t.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${t.text.layoutVertexArray.length}) / 4`);if(t.icon.opacityVertexArray.length!==t.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${t.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${t.icon.layoutVertexArray.length}) / 4`);if(t.bucketInstanceId in this.collisionCircleArrays){let e=this.collisionCircleArrays[t.bucketInstanceId];t.placementInvProjMatrix=e.invProjMatrix,t.placementViewportMatrix=e.viewportMatrix,t.collisionCircleArray=e.circles,delete this.collisionCircleArrays[t.bucketInstanceId]}}symbolFadeChange(t){return 0===this.fadeDuration?1:(t-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(t){return Math.max(0,(this.transform.zoom-t)/1.5)}hasTransitions(t){return this.stale||t-this.lastPlacementChangeTimet}setStale(){this.stale=!0}}function Zt(t,e,r,n,i,a){n&&0!==n.length||(n=[0,0,0,0]);let o=n[0]-Rt,s=n[1]-Rt,l=n[2]-Rt,c=n[3]-Rt;t.emplaceBack(e?1:0,r?1:0,i||0,a||0,o,s),t.emplaceBack(e?1:0,r?1:0,i||0,a||0,l,s),t.emplaceBack(e?1:0,r?1:0,i||0,a||0,l,c),t.emplaceBack(e?1:0,r?1:0,i||0,a||0,o,c)}let Yt=Math.pow(2,25),Xt=Math.pow(2,24),$t=Math.pow(2,17),Kt=Math.pow(2,16),Jt=Math.pow(2,9),Qt=Math.pow(2,8),te=Math.pow(2,1);function ee(t){if(0===t.opacity&&!t.placed)return 0;if(1===t.opacity&&t.placed)return 4294967295;let e=t.placed?1:0,r=Math.floor(127*t.opacity);return r*Yt+e*Xt+r*$t+e*Kt+r*Jt+e*Qt+r*te+e}let re=0;function ne(){return{isOccluded:(t,e,r)=>!1,getPitchedTextCorrection:(t,e,r)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(t,e,r,n){throw new Error("Not implemented.")},translatePosition:(t,e,r,n)=>function(t,e,r,n,i=!1){if(!r[0]&&!r[1])return[0,0];let a=i?"map"===n?t.angle:0:"viewport"===n?-t.angle:0;if(a){let t=Math.sin(a),e=Math.cos(a);r=[r[0]*e-r[1]*t,r[0]*t+r[1]*e]}return[i?r[0]:Bt(e,r[0],t.zoom),i?r[1]:Bt(e,r[1],t.zoom)]}(t,e,r,n),getCircleRadiusCorrection:t=>1}}class ie{constructor(t){this._sortAcrossTiles="viewport-y"!==t.layout.get("symbol-z-order")&&!t.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(t,e,r,n,i){let a=this._bucketParts;for(;this._currentTileIndext.sortKey-e.sortKey)));this._currentPartIndex!this._forceFullPlacement&&a.now()-n>2;for(;this._currentPlacementIndex>=0;){let n=e[t[this._currentPlacementIndex]],a=this.placement.collisionIndex.transform.zoom;if("symbol"===n.type&&(!n.minzoom||n.minzoom<=a)&&(!n.maxzoom||n.maxzoom>a)){if(this._inProgressLayer||(this._inProgressLayer=new ie(n)),this._inProgressLayer.continuePlacement(r[n.source],this.placement,this._showCollisionBoxes,n,i))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(t){return this.placement.commit(t),this.placement}}let oe=512/e.X/2;class se{constructor(t,r,n){this.tileID=t,this.bucketInstanceId=n,this._symbolsByKey={};let i=new Map;for(let t=0;t({x:Math.floor(t.anchorX*oe),y:Math.floor(t.anchorY*oe)}))),crossTileIDs:r.map((t=>t.crossTileID))};if(n.positions.length>128){let t=new e.av(n.positions.length,16,Uint16Array);for(let{x:e,y:r}of n.positions)t.add(e,r);t.finish(),delete n.positions,n.index=t}this._symbolsByKey[t]=n}}getScaledCoordinates(t,r){let{x:n,y:i,z:a}=this.tileID.canonical,{x:o,y:s,z:l}=r.canonical,c=oe/Math.pow(2,l-a),u=(s*e.X+t.anchorY)*c,h=i*e.X*oe;return{x:Math.floor((o*e.X+t.anchorX)*c-n*e.X*oe),y:Math.floor(u-h)}}findMatches(t,e,r){let n=this.tileID.canonical.zt))}}class le{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class ce{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(t){let e=Math.round((t-this.lng)/360);if(0!==e)for(let t in this.indexes){let r=this.indexes[t],n={};for(let t in r){let i=r[t];i.tileID=i.tileID.unwrapTo(i.tileID.wrap+e),n[i.tileID.key]=i}this.indexes[t]=n}this.lng=t}addBucket(t,e,r){if(this.indexes[t.overscaledZ]&&this.indexes[t.overscaledZ][t.key]){if(this.indexes[t.overscaledZ][t.key].bucketInstanceId===e.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(t.overscaledZ,this.indexes[t.overscaledZ][t.key])}for(let t=0;tt.overscaledZ)for(let r in i){let a=i[r];a.tileID.isChildOf(t)&&a.findMatches(e.symbolInstances,t,n)}else{let a=i[t.scaledTo(Number(r)).key];a&&a.findMatches(e.symbolInstances,t,n)}}for(let t=0;t{e[t]=!0}));for(let t in this.layerIndexes)e[t]||delete this.layerIndexes[t]}}let he=(t,r)=>e.t(t,r&&r.filter((t=>"source.canvas"!==t.identifier))),pe=e.aw();class fe extends e.E{constructor(t,r={}){super(),this._rtlPluginLoaded=()=>{for(let t in this.sourceCaches){let e=this.sourceCaches[t].getSource().type;"vector"!==e&&"geojson"!==e||this.sourceCaches[t].reload()}},this.map=t,this.dispatcher=new U(N(),t._getMapId()),this.dispatcher.registerMessageHandler("GG",((t,e)=>this.getGlyphs(t,e))),this.dispatcher.registerMessageHandler("GI",((t,e)=>this.getImages(t,e))),this.imageManager=new A,this.imageManager.setEventedParent(this),this.glyphManager=new C(t._requestManager,r.localIdeographFontFamily),this.lineAtlas=new D(256,512),this.crossTileSymbolIndex=new ue,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new e.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",e.ay()),lt().on(at,this._rtlPluginLoaded),this.on("data",(t=>{if("source"!==t.dataType||"metadata"!==t.sourceDataType)return;let e=this.sourceCaches[t.sourceId];if(!e)return;let r=e.getSource();if(r&&r.vectorLayerIds)for(let t in this._layers){let e=this._layers[t];e.source===r.id&&this._validateLayer(e)}}))}loadURL(t,r={},n){this.fire(new e.k("dataloading",{dataType:"style"})),r.validate="boolean"!=typeof r.validate||r.validate;let i=this.map._requestManager.transformRequest(t,"Style");this._loadStyleRequest=new AbortController;let a=this._loadStyleRequest;e.h(i,this._loadStyleRequest).then((t=>{this._loadStyleRequest=null,this._load(t.data,r,n)})).catch((t=>{this._loadStyleRequest=null,t&&!a.signal.aborted&&this.fire(new e.j(t))}))}loadJSON(t,r={},n){this.fire(new e.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,a.frameAsync(this._frameRequest).then((()=>{this._frameRequest=null,r.validate=!1!==r.validate,this._load(t,r,n)})).catch((()=>{}))}loadEmpty(){this.fire(new e.k("dataloading",{dataType:"style"})),this._load(pe,{validate:!1})}_load(t,r,n){var i;let a=r.transformStyle?r.transformStyle(n,t):t;if(!r.validate||!he(this,e.u(a))){this._loaded=!0,this.stylesheet=a;for(let t in a.sources)this.addSource(t,a.sources[t],{validate:!1});a.sprite?this._loadSprite(a.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(a.glyphs),this._createLayers(),this.light=new L(this.stylesheet.light),this.sky=new z(this.stylesheet.sky),this.map.setTerrain(null!==(i=this.stylesheet.terrain)&&void 0!==i?i:null),this.fire(new e.k("data",{dataType:"style"})),this.fire(new e.k("style.load"))}}_createLayers(){let t=e.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",t),this._order=t.map((t=>t.id)),this._layers={},this._serializedLayers=null;for(let r of t){let t=e.aA(r);t.setEventedParent(this,{layer:{id:r.id}}),this._layers[r.id]=t}}_loadSprite(t,r=!1,n=void 0){let i;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(t,r,n,i){return e._(this,void 0,void 0,(function*(){let o=_(t),s=n>1?"@2x":"",l={},c={};for(let{id:t,url:n}of o){let a=r.transformRequest(b(n,s,".json"),"SpriteJSON");l[t]=e.h(a,i);let o=r.transformRequest(b(n,s,".png"),"SpriteImage");c[t]=f.getImage(o,i)}return yield Promise.all([...Object.values(l),...Object.values(c)]),function(t,r){return e._(this,void 0,void 0,(function*(){let e={};for(let n in t){e[n]={};let i=a.getImageCanvasContext((yield r[n]).data),o=(yield t[n]).data;for(let t in o){let{width:r,height:a,x:s,y:l,sdf:c,pixelRatio:u,stretchX:h,stretchY:p,content:f,textFitWidth:d,textFitHeight:m}=o[t];e[n][t]={data:null,pixelRatio:u,sdf:c,stretchX:h,stretchY:p,content:f,textFitWidth:d,textFitHeight:m,spriteData:{width:r,height:a,x:s,y:l,context:i}}}}return e}))}(l,c)}))}(t,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then((t=>{if(this._spriteRequest=null,t)for(let e in t){this._spritesImagesIds[e]=[];let n=this._spritesImagesIds[e]?this._spritesImagesIds[e].filter((e=>!(e in t))):[];for(let t of n)this.imageManager.removeImage(t),this._changedImages[t]=!0;for(let n in t[e]){let i="default"===e?n:`${e}:${n}`;this._spritesImagesIds[e].push(i),i in this.imageManager.images?this.imageManager.updateImage(i,t[e][n],!1):this.imageManager.addImage(i,t[e][n]),r&&(this._changedImages[i]=!0)}}})).catch((t=>{this._spriteRequest=null,i=t,this.fire(new e.j(i))})).finally((()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),r&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new e.k("data",{dataType:"style"})),n&&n(i)}))}_unloadSprite(){for(let t of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(t),this._changedImages[t]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new e.k("data",{dataType:"style"}))}_validateLayer(t){let r=this.sourceCaches[t.source];if(!r)return;let n=t.sourceLayer;if(!n)return;let i=r.getSource();("geojson"===i.type||i.vectorLayerIds&&-1===i.vectorLayerIds.indexOf(n))&&this.fire(new e.j(new Error(`Source layer "${n}" does not exist on source "${i.id}" as specified by style layer "${t.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let t in this.sourceCaches)if(!this.sourceCaches[t].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(t,r=!1){let n=this._serializedAllLayers();if(!t||0===t.length)return Object.values(r?e.aB(n):n);let i=[];for(let a of t)if(n[a]){let t=r?e.aB(n[a]):n[a];i.push(t)}return i}_serializedAllLayers(){let t=this._serializedLayers;if(t)return t;t=this._serializedLayers={};let e=Object.keys(this._layers);for(let r of e){let e=this._layers[r];"custom"!==e.type&&(t[r]=e.serialize())}return t}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let t in this.sourceCaches)if(this.sourceCaches[t].hasTransition())return!0;for(let t in this._layers)if(this._layers[t].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(t){if(!this._loaded)return;let r=this._changed;if(r){let e=Object.keys(this._updatedLayers),r=Object.keys(this._removedLayers);(e.length||r.length)&&this._updateWorkerLayers(e,r);for(let t in this._updatedSources){let e=this._updatedSources[t];if("reload"===e)this._reloadSource(t);else{if("clear"!==e)throw new Error(`Invalid action ${e}`);this._clearSource(t)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let e in this._updatedPaintProps)this._layers[e].updateTransitions(t);this.light.updateTransitions(t),this.sky.updateTransitions(t),this._resetUpdates()}let n={};for(let t in this.sourceCaches){let e=this.sourceCaches[t];n[t]=e.used,e.used=!1}for(let e of this._order){let r=this._layers[e];r.recalculate(t,this._availableImages),!r.isHidden(t.zoom)&&r.source&&(this.sourceCaches[r.source].used=!0)}for(let t in n){let r=this.sourceCaches[t];!!n[t]!=!!r.used&&r.fire(new e.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:t}))}this.light.recalculate(t),this.sky.recalculate(t),this.z=t.zoom,r&&this.fire(new e.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let t=Object.keys(this._changedImages);if(t.length){for(let e in this.sourceCaches)this.sourceCaches[e].reloadTilesForDependencies(["icons","patterns"],t);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let t in this.sourceCaches)this.sourceCaches[t].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(t,e){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(t,!1),removedIds:e})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(t,r={}){var n;this._checkLoaded();let i=this.serialize();if(t=r.transformStyle?r.transformStyle(i,t):t,(null===(n=r.validate)||void 0===n||n)&&he(this,e.u(t)))return!1;(t=e.aB(t)).layers=e.az(t.layers);let a=e.aC(i,t),o=this._getOperationsToPerform(a);if(o.unimplemented.length>0)throw new Error(`Unimplemented: ${o.unimplemented.join(", ")}.`);if(0===o.operations.length)return!1;for(let t of o.operations)t();return this.stylesheet=t,this._serializedLayers=null,!0}_getOperationsToPerform(t){let e=[],r=[];for(let n of t)switch(n.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":e.push((()=>this.addLayer.apply(this,n.args)));break;case"removeLayer":e.push((()=>this.removeLayer.apply(this,n.args)));break;case"setPaintProperty":e.push((()=>this.setPaintProperty.apply(this,n.args)));break;case"setLayoutProperty":e.push((()=>this.setLayoutProperty.apply(this,n.args)));break;case"setFilter":e.push((()=>this.setFilter.apply(this,n.args)));break;case"addSource":e.push((()=>this.addSource.apply(this,n.args)));break;case"removeSource":e.push((()=>this.removeSource.apply(this,n.args)));break;case"setLayerZoomRange":e.push((()=>this.setLayerZoomRange.apply(this,n.args)));break;case"setLight":e.push((()=>this.setLight.apply(this,n.args)));break;case"setGeoJSONSourceData":e.push((()=>this.setGeoJSONSourceData.apply(this,n.args)));break;case"setGlyphs":e.push((()=>this.setGlyphs.apply(this,n.args)));break;case"setSprite":e.push((()=>this.setSprite.apply(this,n.args)));break;case"setSky":e.push((()=>this.setSky.apply(this,n.args)));break;case"setTerrain":e.push((()=>this.map.setTerrain.apply(this,n.args)));break;case"setTransition":e.push((()=>{}));break;default:r.push(n.command)}return{operations:e,unimplemented:r}}addImage(t,r){if(this.getImage(t))return this.fire(new e.j(new Error(`An image named "${t}" already exists.`)));this.imageManager.addImage(t,r),this._afterImageUpdated(t)}updateImage(t,e){this.imageManager.updateImage(t,e)}getImage(t){return this.imageManager.getImage(t)}removeImage(t){if(!this.getImage(t))return this.fire(new e.j(new Error(`An image named "${t}" does not exist.`)));this.imageManager.removeImage(t),this._afterImageUpdated(t)}_afterImageUpdated(t){this._availableImages=this.imageManager.listImages(),this._changedImages[t]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new e.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(t,r,n={}){if(this._checkLoaded(),void 0!==this.sourceCaches[t])throw new Error(`Source "${t}" already exists.`);if(!r.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(r).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(r.type)>=0&&this._validate(e.u.source,`sources.${t}`,r,null,n))return;this.map&&this.map._collectResourceTiming&&(r.collectResourceTiming=!0);let i=this.sourceCaches[t]=new pt(t,r,this.dispatcher);i.style=this,i.setEventedParent(this,(()=>({isSourceLoaded:i.loaded(),source:i.serialize(),sourceId:t}))),i.onAdd(this.map),this._changed=!0}removeSource(t){if(this._checkLoaded(),void 0===this.sourceCaches[t])throw new Error("There is no source with this ID");for(let r in this._layers)if(this._layers[r].source===t)return this.fire(new e.j(new Error(`Source "${t}" cannot be removed while layer "${r}" is using it.`)));let r=this.sourceCaches[t];delete this.sourceCaches[t],delete this._updatedSources[t],r.fire(new e.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:t})),r.setEventedParent(null),r.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(t,e){if(this._checkLoaded(),void 0===this.sourceCaches[t])throw new Error(`There is no source with this ID=${t}`);let r=this.sourceCaches[t].getSource();if("geojson"!==r.type)throw new Error(`geojsonSource.type is ${r.type}, which is !== 'geojson`);r.setData(e),this._changed=!0}getSource(t){return this.sourceCaches[t]&&this.sourceCaches[t].getSource()}addLayer(t,r,n={}){this._checkLoaded();let i,a=t.id;if(this.getLayer(a))return void this.fire(new e.j(new Error(`Layer "${a}" already exists on this map.`)));if("custom"===t.type){if(he(this,e.aD(t)))return;i=e.aA(t)}else{if("source"in t&&"object"==typeof t.source&&(this.addSource(a,t.source),t=e.aB(t),t=e.e(t,{source:a})),this._validate(e.u.layer,`layers.${a}`,t,{arrayIndex:-1},n))return;i=e.aA(t),this._validateLayer(i),i.setEventedParent(this,{layer:{id:a}})}let o=r?this._order.indexOf(r):this._order.length;if(r&&-1===o)this.fire(new e.j(new Error(`Cannot add layer "${a}" before non-existing layer "${r}".`)));else{if(this._order.splice(o,0,a),this._layerOrderChanged=!0,this._layers[a]=i,this._removedLayers[a]&&i.source&&"custom"!==i.type){let t=this._removedLayers[a];delete this._removedLayers[a],t.type!==i.type?this._updatedSources[i.source]="clear":(this._updatedSources[i.source]="reload",this.sourceCaches[i.source].pause())}this._updateLayer(i),i.onAdd&&i.onAdd(this.map)}}moveLayer(t,r){if(this._checkLoaded(),this._changed=!0,!this._layers[t])return void this.fire(new e.j(new Error(`The layer '${t}' does not exist in the map's style and cannot be moved.`)));if(t===r)return;let n=this._order.indexOf(t);this._order.splice(n,1);let i=r?this._order.indexOf(r):this._order.length;r&&-1===i?this.fire(new e.j(new Error(`Cannot move layer "${t}" before non-existing layer "${r}".`))):(this._order.splice(i,0,t),this._layerOrderChanged=!0)}removeLayer(t){this._checkLoaded();let r=this._layers[t];if(!r)return void this.fire(new e.j(new Error(`Cannot remove non-existing layer "${t}".`)));r.setEventedParent(null);let n=this._order.indexOf(t);this._order.splice(n,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[t]=r,delete this._layers[t],this._serializedLayers&&delete this._serializedLayers[t],delete this._updatedLayers[t],delete this._updatedPaintProps[t],r.onRemove&&r.onRemove(this.map)}getLayer(t){return this._layers[t]}getLayersOrder(){return[...this._order]}hasLayer(t){return t in this._layers}setLayerZoomRange(t,r,n){this._checkLoaded();let i=this.getLayer(t);i?i.minzoom===r&&i.maxzoom===n||(null!=r&&(i.minzoom=r),null!=n&&(i.maxzoom=n),this._updateLayer(i)):this.fire(new e.j(new Error(`Cannot set the zoom range of non-existing layer "${t}".`)))}setFilter(t,r,n={}){this._checkLoaded();let i=this.getLayer(t);if(i){if(!e.aE(i.filter,r))return null==r?(i.filter=void 0,void this._updateLayer(i)):void(this._validate(e.u.filter,`layers.${i.id}.filter`,r,null,n)||(i.filter=e.aB(r),this._updateLayer(i)))}else this.fire(new e.j(new Error(`Cannot filter non-existing layer "${t}".`)))}getFilter(t){return e.aB(this.getLayer(t).filter)}setLayoutProperty(t,r,n,i={}){this._checkLoaded();let a=this.getLayer(t);a?e.aE(a.getLayoutProperty(r),n)||(a.setLayoutProperty(r,n,i),this._updateLayer(a)):this.fire(new e.j(new Error(`Cannot style non-existing layer "${t}".`)))}getLayoutProperty(t,r){let n=this.getLayer(t);if(n)return n.getLayoutProperty(r);this.fire(new e.j(new Error(`Cannot get style of non-existing layer "${t}".`)))}setPaintProperty(t,r,n,i={}){this._checkLoaded();let a=this.getLayer(t);a?e.aE(a.getPaintProperty(r),n)||(a.setPaintProperty(r,n,i)&&this._updateLayer(a),this._changed=!0,this._updatedPaintProps[t]=!0,this._serializedLayers=null):this.fire(new e.j(new Error(`Cannot style non-existing layer "${t}".`)))}getPaintProperty(t,e){return this.getLayer(t).getPaintProperty(e)}setFeatureState(t,r){this._checkLoaded();let n=t.source,i=t.sourceLayer,a=this.sourceCaches[n];if(void 0===a)return void this.fire(new e.j(new Error(`The source '${n}' does not exist in the map's style.`)));let o=a.getSource().type;"geojson"===o&&i?this.fire(new e.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):"vector"!==o||i?(void 0===t.id&&this.fire(new e.j(new Error("The feature id parameter must be provided."))),a.setFeatureState(i,t.id,r)):this.fire(new e.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(t,r){this._checkLoaded();let n=t.source,i=this.sourceCaches[n];if(void 0===i)return void this.fire(new e.j(new Error(`The source '${n}' does not exist in the map's style.`)));let a=i.getSource().type,o="vector"===a?t.sourceLayer:void 0;"vector"!==a||o?r&&"string"!=typeof t.id&&"number"!=typeof t.id?this.fire(new e.j(new Error("A feature id is required to remove its specific state property."))):i.removeFeatureState(o,t.id,r):this.fire(new e.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(t){this._checkLoaded();let r=t.source,n=t.sourceLayer,i=this.sourceCaches[r];if(void 0!==i)return"vector"!==i.getSource().type||n?(void 0===t.id&&this.fire(new e.j(new Error("The feature id parameter must be provided."))),i.getFeatureState(n,t.id)):void this.fire(new e.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new e.j(new Error(`The source '${r}' does not exist in the map's style.`)))}getTransition(){return e.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let t=e.aF(this.sourceCaches,(t=>t.serialize())),r=this._serializeByIds(this._order,!0),n=this.map.getTerrain()||void 0,i=this.stylesheet;return e.aG({version:i.version,name:i.name,metadata:i.metadata,light:i.light,sky:i.sky,center:i.center,zoom:i.zoom,bearing:i.bearing,pitch:i.pitch,sprite:i.sprite,glyphs:i.glyphs,transition:i.transition,sources:t,layers:r,terrain:n},(t=>void 0!==t))}_updateLayer(t){this._updatedLayers[t.id]=!0,t.source&&!this._updatedSources[t.source]&&"raster"!==this.sourceCaches[t.source].getSource().type&&(this._updatedSources[t.source]="reload",this.sourceCaches[t.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(t){let e=t=>"fill-extrusion"===this._layers[t].type,r={},n=[];for(let i=this._order.length-1;i>=0;i--){let a=this._order[i];if(e(a)){r[a]=i;for(let e of t){let t=e[a];if(t)for(let e of t)n.push(e)}}}n.sort(((t,e)=>e.intersectionZ-t.intersectionZ));let i=[];for(let a=this._order.length-1;a>=0;a--){let o=this._order[a];if(e(o))for(let t=n.length-1;t>=0;t--){let e=n[t].feature;if(r[e.layer.id]{let n=r.featureSortOrder;if(n){let r=n.indexOf(t.featureIndex);return n.indexOf(e.featureIndex)-r}return e.featureIndex-t.featureIndex}));for(let t of i)e.push(t)}}for(let e in s)s[e].forEach((n=>{let i=n.feature,a=r[t[e].source].getFeatureState(i.layer["source-layer"],i.id);i.source=i.layer.source,i.layer["source-layer"]&&(i.sourceLayer=i.layer["source-layer"]),i.state=a}));return s}(this._layers,o,this.sourceCaches,t,r,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(a)}querySourceFeatures(t,r){r&&r.filter&&this._validate(e.u.filter,"querySourceFeatures.filter",r.filter,null,r);let n=this.sourceCaches[t];return n?function(t,e){let r=t.getRenderableIds().map((e=>t.getTileByID(e))),n=[],i={};for(let t=0;tt.getTileByID(e))).sort(((t,e)=>e.tileID.overscaledZ-t.tileID.overscaledZ||(t.tileID.isLessThan(e.tileID)?-1:1)))}let n=this.crossTileSymbolIndex.addLayer(r,l[r.source],t.center.lng);o=o||n}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((i=i||this._layerOrderChanged||0===r)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(a.now(),t.zoom))&&(this.pauseablePlacement=new ae(t,this.map.terrain,this._order,i,e,r,n,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,l),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(a.now()),s=!0),o&&this.pauseablePlacement.placement.setStale()),s||o)for(let t of this._order){let e=this._layers[t];"symbol"===e.type&&this.placement.updateLayerOpacities(e,l[e.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(a.now())}_releaseSymbolFadeTiles(){for(let t in this.sourceCaches)this.sourceCaches[t].releaseSymbolFadeTiles()}getImages(t,r){return e._(this,void 0,void 0,(function*(){let t=yield this.imageManager.getImages(r.icons);this._updateTilesForChangedImages();let e=this.sourceCaches[r.source];return e&&e.setDependencies(r.tileID.key,r.type,r.icons),t}))}getGlyphs(t,r){return e._(this,void 0,void 0,(function*(){let t=yield this.glyphManager.getGlyphs(r.stacks),e=this.sourceCaches[r.source];return e&&e.setDependencies(r.tileID.key,r.type,[""]),t}))}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(t,r={}){this._checkLoaded(),t&&this._validate(e.u.glyphs,"glyphs",t,null,r)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=t,this.glyphManager.entries={},this.glyphManager.setURL(t))}addSprite(t,r,n={},i){this._checkLoaded();let a=[{id:t,url:r}],o=[..._(this.stylesheet.sprite),...a];this._validate(e.u.sprite,"sprite",o,null,n)||(this.stylesheet.sprite=o,this._loadSprite(a,!0,i))}removeSprite(t){this._checkLoaded();let r=_(this.stylesheet.sprite);if(r.find((e=>e.id===t))){if(this._spritesImagesIds[t])for(let e of this._spritesImagesIds[t])this.imageManager.removeImage(e),this._changedImages[e]=!0;r.splice(r.findIndex((e=>e.id===t)),1),this.stylesheet.sprite=r.length>0?r:void 0,delete this._spritesImagesIds[t],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new e.k("data",{dataType:"style"}))}else this.fire(new e.j(new Error(`Sprite "${t}" doesn't exists on this map.`)))}getSprite(){return _(this.stylesheet.sprite)}setSprite(t,r={},n){this._checkLoaded(),t&&this._validate(e.u.sprite,"sprite",t,null,r)||(this.stylesheet.sprite=t,t?this._loadSprite(t,!0,n):(this._unloadSprite(),n&&n(null)))}}var de=e.Y([{name:"a_pos",type:"Int16",components:2}]);let me={prelude:ge("#ifdef GL_ES\nprecision mediump float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\n","#ifdef GL_ES\nprecision highp float;\n#else\n#if !defined(lowp)\n#define lowp\n#endif\n#if !defined(mediump)\n#define mediump\n#endif\n#if !defined(highp)\n#define highp\n#endif\n#endif\nvec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0\n);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;}\n#ifdef TERRAIN3D\nuniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth;\n#endif\nconst highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) {\n#ifdef TERRAIN3D\nhighp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0));\n#else\nreturn 1.0;\n#endif\n}float calculate_visibility(vec4 pos) {\n#ifdef TERRAIN3D\nvec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0;\n#else\nreturn 1.0;\n#endif\n}float ele(vec2 pos) {\n#ifdef TERRAIN3D\nvec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a;\n#else\nreturn 0.0;\n#endif\n}float get_elevation(vec2 pos) {\n#ifdef TERRAIN3D\nvec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration;\n#else\nreturn 0.0;\n#endif\n}"),background:ge("uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:ge("uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:ge("varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define mediump float radius\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define highp vec4 stroke_color\n#pragma mapbox: define mediump float stroke_width\n#pragma mapbox: define lowp float stroke_opacity\nvoid main(void) {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize mediump float radius\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize highp vec4 stroke_color\n#pragma mapbox: initialize mediump float stroke_width\n#pragma mapbox: initialize lowp float stroke_opacity\nvec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}"),clippingMask:ge("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:ge("uniform highp float u_intensity;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#define GAUSS_COEF 0.3989422804014327\nvoid main() {\n#pragma mapbox: initialize highp float weight\nfloat d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude;\n#pragma mapbox: define highp float weight\n#pragma mapbox: define mediump float radius\nconst highp float ZERO=1.0/255.0/16.0;\n#define GAUSS_COEF 0.3989422804014327\nvoid main(void) {\n#pragma mapbox: initialize highp float weight\n#pragma mapbox: initialize mediump float radius\nvec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,get_elevation(floor(a_pos*0.5)),1);gl_Position=u_matrix*pos;}"),heatmapTexture:ge("uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(0.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:ge("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:ge("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:ge("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:ge("#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_FragColor=color*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);}"),fillOutline:ge("varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos;\n#pragma mapbox: define highp vec4 outline_color\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 outline_color\n#pragma mapbox: initialize lowp float opacity\ngl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),fillOutlinePattern:ge("uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}"),fillPattern:ge("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}"),fillExtrusion:ge("varying vec4 v_color;void main() {gl_FragColor=v_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec4 v_color;\n#pragma mapbox: define highp float base\n#pragma mapbox: define highp float height\n#pragma mapbox: define highp vec4 color\nvoid main() {\n#pragma mapbox: initialize highp float base\n#pragma mapbox: initialize highp float height\n#pragma mapbox: initialize highp vec4 color\nvec3 normal=a_normal_ed.xyz;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}"),fillExtrusionPattern:ge("uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;\n#ifdef TERRAIN3D\nattribute vec2 a_centroid;\n#endif\nvarying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting;\n#pragma mapbox: define lowp float base\n#pragma mapbox: define lowp float height\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float base\n#pragma mapbox: initialize lowp float height\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;\n#ifdef TERRAIN3D\nfloat height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0);\n#else\nfloat height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0;\n#endif\nbase=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0\n? a_pos\n: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}"),hillshadePrepare:ge("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:ge("uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent;\n#define PI 3.141592653589793\nvoid main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:ge("uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),lineGradient:ge("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\nattribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_width2=vec2(outset,inset);}"),linePattern:ge("#ifdef GL_ES\nprecision highp float;\n#endif\nuniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\nvec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width;\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\n#pragma mapbox: define lowp vec4 pattern_from\n#pragma mapbox: define lowp vec4 pattern_to\n#pragma mapbox: define lowp float pixel_ratio_from\n#pragma mapbox: define lowp float pixel_ratio_to\nvoid main() {\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\n#pragma mapbox: initialize mediump vec4 pattern_from\n#pragma mapbox: initialize mediump vec4 pattern_to\n#pragma mapbox: initialize lowp float pixel_ratio_from\n#pragma mapbox: initialize lowp float pixel_ratio_to\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}"),lineSDF:ge("uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","\n#define scale 0.015873016\n#define LINE_DISTANCE_SCALE 2.0\nattribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale;\n#pragma mapbox: define highp vec4 color\n#pragma mapbox: define lowp float blur\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define mediump float gapwidth\n#pragma mapbox: define lowp float offset\n#pragma mapbox: define mediump float width\n#pragma mapbox: define lowp float floorwidth\nvoid main() {\n#pragma mapbox: initialize highp vec4 color\n#pragma mapbox: initialize lowp float blur\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize mediump float gapwidth\n#pragma mapbox: initialize lowp float offset\n#pragma mapbox: initialize mediump float width\n#pragma mapbox: initialize lowp float floorwidth\nfloat ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;\n#ifdef TERRAIN3D\nv_gamma_scale=1.0;\n#else\nfloat extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;\n#endif\nv_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}"),raster:ge("uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:ge("uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity;\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nlowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}\n#pragma mapbox: define lowp float opacity\nvoid main() {\n#pragma mapbox: initialize lowp float opacity\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}"),symbolSDF:ge("#define SDF_PX 8.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_data0;varying vec3 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}"),symbolTextAndIcon:ge("#define SDF_PX 8.0\n#define SDF 1.0\n#define ICON 0.0\nuniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1;\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nfloat fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha;\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\nreturn;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity);\n#ifdef OVERDRAW_INSPECTOR\ngl_FragColor=vec4(1.0);\n#endif\n}","attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec4 v_data0;varying vec4 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}\n#pragma mapbox: define highp vec4 fill_color\n#pragma mapbox: define highp vec4 halo_color\n#pragma mapbox: define lowp float opacity\n#pragma mapbox: define lowp float halo_width\n#pragma mapbox: define lowp float halo_blur\nvoid main() {\n#pragma mapbox: initialize highp vec4 fill_color\n#pragma mapbox: initialize highp vec4 halo_color\n#pragma mapbox: initialize lowp float opacity\n#pragma mapbox: initialize lowp float halo_width\n#pragma mapbox: initialize lowp float halo_blur\nvec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ?\ncamera_to_anchor_distance/u_camera_to_center_distance :\nu_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}"),terrain:ge("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:ge("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:ge("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:ge("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function ge(t,e){let r=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,n=e.match(/attribute ([\w]+) ([\w]+)/g),i=t.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),a=e.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),o=a?a.concat(i):i,s={};return{fragmentSource:t=t.replace(r,((t,e,r,n,i)=>(s[i]=!0,"define"===e?`\n#ifndef HAS_UNIFORM_u_${i}\nvarying ${r} ${n} ${i};\n#else\nuniform ${r} ${n} u_${i};\n#endif\n`:`\n#ifdef HAS_UNIFORM_u_${i}\n ${r} ${n} ${i} = u_${i};\n#endif\n`))),vertexSource:e=e.replace(r,((t,e,r,n,i)=>{let a="float"===n?"vec2":"vec4",o=i.match(/color/)?"color":a;return s[i]?"define"===e?`\n#ifndef HAS_UNIFORM_u_${i}\nuniform lowp float u_${i}_t;\nattribute ${r} ${a} a_${i};\nvarying ${r} ${n} ${i};\n#else\nuniform ${r} ${n} u_${i};\n#endif\n`:"vec4"===o?`\n#ifndef HAS_UNIFORM_u_${i}\n ${i} = a_${i};\n#else\n ${r} ${n} ${i} = u_${i};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${i}\n ${i} = unpack_mix_${o}(a_${i}, u_${i}_t);\n#else\n ${r} ${n} ${i} = u_${i};\n#endif\n`:"define"===e?`\n#ifndef HAS_UNIFORM_u_${i}\nuniform lowp float u_${i}_t;\nattribute ${r} ${a} a_${i};\n#else\nuniform ${r} ${n} u_${i};\n#endif\n`:"vec4"===o?`\n#ifndef HAS_UNIFORM_u_${i}\n ${r} ${n} ${i} = a_${i};\n#else\n ${r} ${n} ${i} = u_${i};\n#endif\n`:`\n#ifndef HAS_UNIFORM_u_${i}\n ${r} ${n} ${i} = unpack_mix_${o}(a_${i}, u_${i}_t);\n#else\n ${r} ${n} ${i} = u_${i};\n#endif\n`})),staticAttributes:n,staticUniforms:o}}class ye{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(t,e,r,n,i,a,o,s,l){this.context=t;let c=this.boundPaintVertexBuffers.length!==n.length;for(let t=0;!c&&t({u_matrix:t,u_texture:0,u_ele_delta:r,u_fog_matrix:n,u_fog_color:i?i.properties.get("fog-color"):e.aM.white,u_fog_ground_blend:i?i.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:i?i.calculateFogBlendOpacity(a):0,u_horizon_color:i?i.properties.get("horizon-color"):e.aM.white,u_horizon_fog_blend:i?i.properties.get("horizon-fog-blend"):1});function xe(t){let e=[];for(let r=0;r>16,s>>16],u_pixel_coord_lower:[65535&o,65535&s]}}let we=(t,r,n,i)=>{let a=r.style.light,o=a.properties.get("position"),s=[o.x,o.y,o.z],l=(c=new e.A(9),e.A!=Float32Array&&(c[1]=0,c[2]=0,c[3]=0,c[5]=0,c[6]=0,c[7]=0),c[0]=1,c[4]=1,c[8]=1,c);var c;"viewport"===a.properties.get("anchor")&&function(t,e){var r=Math.sin(e),n=Math.cos(e);t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1}(l,-r.transform.angle),function(t,e,r){var n=e[0],i=e[1],a=e[2];t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8]}(s,s,l);let u=a.properties.get("color");return{u_matrix:t,u_lightpos:s,u_lightintensity:a.properties.get("intensity"),u_lightcolor:[u.r,u.g,u.b],u_vertical_gradient:+n,u_opacity:i}},Te=(t,r,n,i,a,o,s)=>e.e(we(t,r,n,i),be(o,r,s),{u_height_factor:-Math.pow(2,a.overscaledZ)/s.tileSize/8}),Ae=t=>({u_matrix:t}),ke=(t,r,n,i)=>e.e(Ae(t),be(n,r,i)),Me=(t,e)=>({u_matrix:t,u_world:e}),Se=(t,r,n,i,a)=>e.e(ke(t,r,n,i),{u_world:a}),Ee=(t,e,r,n)=>{let i,a,o=t.transform;if("map"===n.paint.get("circle-pitch-alignment")){let t=Bt(r,1,o.zoom);i=!0,a=[t,t]}else i=!1,a=o.pixelsToGLUnits;return{u_camera_to_center_distance:o.cameraToCenterDistance,u_scale_with_map:+("map"===n.paint.get("circle-pitch-scale")),u_matrix:t.translatePosMatrix(e.posMatrix,r,n.paint.get("circle-translate"),n.paint.get("circle-translate-anchor")),u_pitch_with_map:+i,u_device_pixel_ratio:t.pixelRatio,u_extrude_scale:a}},Ce=(t,e,r)=>({u_matrix:t,u_inv_matrix:e,u_camera_to_center_distance:r.cameraToCenterDistance,u_viewport_size:[r.width,r.height]}),Ie=(t,e,r=1)=>({u_matrix:t,u_color:e,u_overlay:0,u_overlay_scale:r}),Le=t=>({u_matrix:t}),Pe=(t,e,r,n)=>({u_matrix:t,u_extrude_scale:Bt(e,1,r),u_intensity:n}),ze=(t,r,n,i)=>{let a=e.H();e.aP(a,0,t.width,t.height,0,0,1);let o=t.context.gl;return{u_matrix:a,u_world:[o.drawingBufferWidth,o.drawingBufferHeight],u_image:n,u_color_ramp:i,u_opacity:r.paint.get("heatmap-opacity")}};function De(t,r){let n=Math.pow(2,r.canonical.z),i=r.canonical.y;return[new e.Z(0,i/n).toLngLat().lat,new e.Z(0,(i+1)/n).toLngLat().lat]}let Oe=(t,e,r,n)=>{let i=t.transform;return{u_matrix:Ne(t,e,r,n),u_ratio:1/Bt(e,1,i.zoom),u_device_pixel_ratio:t.pixelRatio,u_units_to_pixels:[1/i.pixelsToGLUnits[0],1/i.pixelsToGLUnits[1]]}},Re=(t,r,n,i,a)=>e.e(Oe(t,r,n,a),{u_image:0,u_image_height:i}),Fe=(t,e,r,n,i)=>{let a=t.transform,o=je(e,a);return{u_matrix:Ne(t,e,r,i),u_texsize:e.imageAtlasTexture.size,u_ratio:1/Bt(e,1,a.zoom),u_device_pixel_ratio:t.pixelRatio,u_image:0,u_scale:[o,n.fromScale,n.toScale],u_fade:n.t,u_units_to_pixels:[1/a.pixelsToGLUnits[0],1/a.pixelsToGLUnits[1]]}},Be=(t,r,n,i,a,o)=>{let s=t.lineAtlas,l=je(r,t.transform),c="round"===n.layout.get("line-cap"),u=s.getDash(i.from,c),h=s.getDash(i.to,c),p=u.width*a.fromScale,f=h.width*a.toScale;return e.e(Oe(t,r,n,o),{u_patternscale_a:[l/p,-u.height/2],u_patternscale_b:[l/f,-h.height/2],u_sdfgamma:s.width/(256*Math.min(p,f)*t.pixelRatio)/2,u_image:0,u_tex_y_a:u.y,u_tex_y_b:h.y,u_mix:a.t})};function je(t,e){return 1/Bt(t,1,e.tileZoom)}function Ne(t,e,r,n){return t.translatePosMatrix(n?n.posMatrix:e.tileID.posMatrix,e,r.paint.get("line-translate"),r.paint.get("line-translate-anchor"))}let Ue=(t,e,r,n,i)=>{return{u_matrix:t,u_tl_parent:e,u_scale_parent:r,u_buffer_scale:1,u_fade_t:n.mix,u_opacity:n.opacity*i.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:i.paint.get("raster-brightness-min"),u_brightness_high:i.paint.get("raster-brightness-max"),u_saturation_factor:(o=i.paint.get("raster-saturation"),o>0?1-1/(1.001-o):-o),u_contrast_factor:(a=i.paint.get("raster-contrast"),a>0?1/(1-a):1+a),u_spin_weights:Ve(i.paint.get("raster-hue-rotate"))};var a,o};function Ve(t){t*=Math.PI/180;let e=Math.sin(t),r=Math.cos(t);return[(2*r+1)/3,(-Math.sqrt(3)*e-r+1)/3,(Math.sqrt(3)*e-r+1)/3]}let qe=(t,e,r,n,i,a,o,s,l,c,u,h,p,f)=>{let d=o.transform;return{u_is_size_zoom_constant:+("constant"===t||"source"===t),u_is_size_feature_constant:+("constant"===t||"camera"===t),u_size_t:e?e.uSizeT:0,u_size:e?e.uSize:0,u_camera_to_center_distance:d.cameraToCenterDistance,u_pitch:d.pitch/360*2*Math.PI,u_rotate_symbol:+r,u_aspect_ratio:d.width/d.height,u_fade_change:o.options.fadeDuration?o.symbolFadeChange:1,u_matrix:s,u_label_plane_matrix:l,u_coord_matrix:c,u_is_text:+h,u_pitch_with_map:+n,u_is_along_line:i,u_is_variable_anchor:a,u_texsize:p,u_texture:0,u_translation:u,u_pitched_scale:f}},He=(t,r,n,i,a,o,s,l,c,u,h,p,f,d,m)=>{let g=s.transform;return e.e(qe(t,r,n,i,a,o,s,l,c,u,h,p,f,m),{u_gamma_scale:i?Math.cos(g._pitch)*g.cameraToCenterDistance:1,u_device_pixel_ratio:s.pixelRatio,u_is_halo:+d})},Ge=(t,r,n,i,a,o,s,l,c,u,h,p,f,d)=>e.e(He(t,r,n,i,a,o,s,l,c,u,h,!0,p,!0,d),{u_texsize_icon:f,u_texture_icon:1}),We=(t,e,r)=>({u_matrix:t,u_opacity:e,u_color:r}),Ze=(t,r,n,i,a,o)=>e.e(function(t,e,r,n){let i=r.imageManager.getPattern(t.from.toString()),a=r.imageManager.getPattern(t.to.toString()),{width:o,height:s}=r.imageManager.getPixelSize(),l=Math.pow(2,n.tileID.overscaledZ),c=n.tileSize*Math.pow(2,r.transform.tileZoom)/l,u=c*(n.tileID.canonical.x+n.tileID.wrap*l),h=c*n.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:i.tl,u_pattern_br_a:i.br,u_pattern_tl_b:a.tl,u_pattern_br_b:a.br,u_texsize:[o,s],u_mix:e.t,u_pattern_size_a:i.displaySize,u_pattern_size_b:a.displaySize,u_scale_a:e.fromScale,u_scale_b:e.toScale,u_tile_units_to_pixels:1/Bt(n,1,r.transform.tileZoom),u_pixel_coord_upper:[u>>16,h>>16],u_pixel_coord_lower:[65535&u,65535&h]}}(i,o,n,a),{u_matrix:t,u_opacity:r}),Ye={fillExtrusion:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_lightpos:new e.aN(t,r.u_lightpos),u_lightintensity:new e.aI(t,r.u_lightintensity),u_lightcolor:new e.aN(t,r.u_lightcolor),u_vertical_gradient:new e.aI(t,r.u_vertical_gradient),u_opacity:new e.aI(t,r.u_opacity)}),fillExtrusionPattern:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_lightpos:new e.aN(t,r.u_lightpos),u_lightintensity:new e.aI(t,r.u_lightintensity),u_lightcolor:new e.aN(t,r.u_lightcolor),u_vertical_gradient:new e.aI(t,r.u_vertical_gradient),u_height_factor:new e.aI(t,r.u_height_factor),u_image:new e.aH(t,r.u_image),u_texsize:new e.aO(t,r.u_texsize),u_pixel_coord_upper:new e.aO(t,r.u_pixel_coord_upper),u_pixel_coord_lower:new e.aO(t,r.u_pixel_coord_lower),u_scale:new e.aN(t,r.u_scale),u_fade:new e.aI(t,r.u_fade),u_opacity:new e.aI(t,r.u_opacity)}),fill:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix)}),fillPattern:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_image:new e.aH(t,r.u_image),u_texsize:new e.aO(t,r.u_texsize),u_pixel_coord_upper:new e.aO(t,r.u_pixel_coord_upper),u_pixel_coord_lower:new e.aO(t,r.u_pixel_coord_lower),u_scale:new e.aN(t,r.u_scale),u_fade:new e.aI(t,r.u_fade)}),fillOutline:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_world:new e.aO(t,r.u_world)}),fillOutlinePattern:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_world:new e.aO(t,r.u_world),u_image:new e.aH(t,r.u_image),u_texsize:new e.aO(t,r.u_texsize),u_pixel_coord_upper:new e.aO(t,r.u_pixel_coord_upper),u_pixel_coord_lower:new e.aO(t,r.u_pixel_coord_lower),u_scale:new e.aN(t,r.u_scale),u_fade:new e.aI(t,r.u_fade)}),circle:(t,r)=>({u_camera_to_center_distance:new e.aI(t,r.u_camera_to_center_distance),u_scale_with_map:new e.aH(t,r.u_scale_with_map),u_pitch_with_map:new e.aH(t,r.u_pitch_with_map),u_extrude_scale:new e.aO(t,r.u_extrude_scale),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_matrix:new e.aJ(t,r.u_matrix)}),collisionBox:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_pixel_extrude_scale:new e.aO(t,r.u_pixel_extrude_scale)}),collisionCircle:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_inv_matrix:new e.aJ(t,r.u_inv_matrix),u_camera_to_center_distance:new e.aI(t,r.u_camera_to_center_distance),u_viewport_size:new e.aO(t,r.u_viewport_size)}),debug:(t,r)=>({u_color:new e.aL(t,r.u_color),u_matrix:new e.aJ(t,r.u_matrix),u_overlay:new e.aH(t,r.u_overlay),u_overlay_scale:new e.aI(t,r.u_overlay_scale)}),clippingMask:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix)}),heatmap:(t,r)=>({u_extrude_scale:new e.aI(t,r.u_extrude_scale),u_intensity:new e.aI(t,r.u_intensity),u_matrix:new e.aJ(t,r.u_matrix)}),heatmapTexture:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_world:new e.aO(t,r.u_world),u_image:new e.aH(t,r.u_image),u_color_ramp:new e.aH(t,r.u_color_ramp),u_opacity:new e.aI(t,r.u_opacity)}),hillshade:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_image:new e.aH(t,r.u_image),u_latrange:new e.aO(t,r.u_latrange),u_light:new e.aO(t,r.u_light),u_shadow:new e.aL(t,r.u_shadow),u_highlight:new e.aL(t,r.u_highlight),u_accent:new e.aL(t,r.u_accent)}),hillshadePrepare:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_image:new e.aH(t,r.u_image),u_dimension:new e.aO(t,r.u_dimension),u_zoom:new e.aI(t,r.u_zoom),u_unpack:new e.aK(t,r.u_unpack)}),line:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_ratio:new e.aI(t,r.u_ratio),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_units_to_pixels:new e.aO(t,r.u_units_to_pixels)}),lineGradient:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_ratio:new e.aI(t,r.u_ratio),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_units_to_pixels:new e.aO(t,r.u_units_to_pixels),u_image:new e.aH(t,r.u_image),u_image_height:new e.aI(t,r.u_image_height)}),linePattern:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_texsize:new e.aO(t,r.u_texsize),u_ratio:new e.aI(t,r.u_ratio),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_image:new e.aH(t,r.u_image),u_units_to_pixels:new e.aO(t,r.u_units_to_pixels),u_scale:new e.aN(t,r.u_scale),u_fade:new e.aI(t,r.u_fade)}),lineSDF:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_ratio:new e.aI(t,r.u_ratio),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_units_to_pixels:new e.aO(t,r.u_units_to_pixels),u_patternscale_a:new e.aO(t,r.u_patternscale_a),u_patternscale_b:new e.aO(t,r.u_patternscale_b),u_sdfgamma:new e.aI(t,r.u_sdfgamma),u_image:new e.aH(t,r.u_image),u_tex_y_a:new e.aI(t,r.u_tex_y_a),u_tex_y_b:new e.aI(t,r.u_tex_y_b),u_mix:new e.aI(t,r.u_mix)}),raster:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_tl_parent:new e.aO(t,r.u_tl_parent),u_scale_parent:new e.aI(t,r.u_scale_parent),u_buffer_scale:new e.aI(t,r.u_buffer_scale),u_fade_t:new e.aI(t,r.u_fade_t),u_opacity:new e.aI(t,r.u_opacity),u_image0:new e.aH(t,r.u_image0),u_image1:new e.aH(t,r.u_image1),u_brightness_low:new e.aI(t,r.u_brightness_low),u_brightness_high:new e.aI(t,r.u_brightness_high),u_saturation_factor:new e.aI(t,r.u_saturation_factor),u_contrast_factor:new e.aI(t,r.u_contrast_factor),u_spin_weights:new e.aN(t,r.u_spin_weights)}),symbolIcon:(t,r)=>({u_is_size_zoom_constant:new e.aH(t,r.u_is_size_zoom_constant),u_is_size_feature_constant:new e.aH(t,r.u_is_size_feature_constant),u_size_t:new e.aI(t,r.u_size_t),u_size:new e.aI(t,r.u_size),u_camera_to_center_distance:new e.aI(t,r.u_camera_to_center_distance),u_pitch:new e.aI(t,r.u_pitch),u_rotate_symbol:new e.aH(t,r.u_rotate_symbol),u_aspect_ratio:new e.aI(t,r.u_aspect_ratio),u_fade_change:new e.aI(t,r.u_fade_change),u_matrix:new e.aJ(t,r.u_matrix),u_label_plane_matrix:new e.aJ(t,r.u_label_plane_matrix),u_coord_matrix:new e.aJ(t,r.u_coord_matrix),u_is_text:new e.aH(t,r.u_is_text),u_pitch_with_map:new e.aH(t,r.u_pitch_with_map),u_is_along_line:new e.aH(t,r.u_is_along_line),u_is_variable_anchor:new e.aH(t,r.u_is_variable_anchor),u_texsize:new e.aO(t,r.u_texsize),u_texture:new e.aH(t,r.u_texture),u_translation:new e.aO(t,r.u_translation),u_pitched_scale:new e.aI(t,r.u_pitched_scale)}),symbolSDF:(t,r)=>({u_is_size_zoom_constant:new e.aH(t,r.u_is_size_zoom_constant),u_is_size_feature_constant:new e.aH(t,r.u_is_size_feature_constant),u_size_t:new e.aI(t,r.u_size_t),u_size:new e.aI(t,r.u_size),u_camera_to_center_distance:new e.aI(t,r.u_camera_to_center_distance),u_pitch:new e.aI(t,r.u_pitch),u_rotate_symbol:new e.aH(t,r.u_rotate_symbol),u_aspect_ratio:new e.aI(t,r.u_aspect_ratio),u_fade_change:new e.aI(t,r.u_fade_change),u_matrix:new e.aJ(t,r.u_matrix),u_label_plane_matrix:new e.aJ(t,r.u_label_plane_matrix),u_coord_matrix:new e.aJ(t,r.u_coord_matrix),u_is_text:new e.aH(t,r.u_is_text),u_pitch_with_map:new e.aH(t,r.u_pitch_with_map),u_is_along_line:new e.aH(t,r.u_is_along_line),u_is_variable_anchor:new e.aH(t,r.u_is_variable_anchor),u_texsize:new e.aO(t,r.u_texsize),u_texture:new e.aH(t,r.u_texture),u_gamma_scale:new e.aI(t,r.u_gamma_scale),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_is_halo:new e.aH(t,r.u_is_halo),u_translation:new e.aO(t,r.u_translation),u_pitched_scale:new e.aI(t,r.u_pitched_scale)}),symbolTextAndIcon:(t,r)=>({u_is_size_zoom_constant:new e.aH(t,r.u_is_size_zoom_constant),u_is_size_feature_constant:new e.aH(t,r.u_is_size_feature_constant),u_size_t:new e.aI(t,r.u_size_t),u_size:new e.aI(t,r.u_size),u_camera_to_center_distance:new e.aI(t,r.u_camera_to_center_distance),u_pitch:new e.aI(t,r.u_pitch),u_rotate_symbol:new e.aH(t,r.u_rotate_symbol),u_aspect_ratio:new e.aI(t,r.u_aspect_ratio),u_fade_change:new e.aI(t,r.u_fade_change),u_matrix:new e.aJ(t,r.u_matrix),u_label_plane_matrix:new e.aJ(t,r.u_label_plane_matrix),u_coord_matrix:new e.aJ(t,r.u_coord_matrix),u_is_text:new e.aH(t,r.u_is_text),u_pitch_with_map:new e.aH(t,r.u_pitch_with_map),u_is_along_line:new e.aH(t,r.u_is_along_line),u_is_variable_anchor:new e.aH(t,r.u_is_variable_anchor),u_texsize:new e.aO(t,r.u_texsize),u_texsize_icon:new e.aO(t,r.u_texsize_icon),u_texture:new e.aH(t,r.u_texture),u_texture_icon:new e.aH(t,r.u_texture_icon),u_gamma_scale:new e.aI(t,r.u_gamma_scale),u_device_pixel_ratio:new e.aI(t,r.u_device_pixel_ratio),u_is_halo:new e.aH(t,r.u_is_halo),u_translation:new e.aO(t,r.u_translation),u_pitched_scale:new e.aI(t,r.u_pitched_scale)}),background:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_opacity:new e.aI(t,r.u_opacity),u_color:new e.aL(t,r.u_color)}),backgroundPattern:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_opacity:new e.aI(t,r.u_opacity),u_image:new e.aH(t,r.u_image),u_pattern_tl_a:new e.aO(t,r.u_pattern_tl_a),u_pattern_br_a:new e.aO(t,r.u_pattern_br_a),u_pattern_tl_b:new e.aO(t,r.u_pattern_tl_b),u_pattern_br_b:new e.aO(t,r.u_pattern_br_b),u_texsize:new e.aO(t,r.u_texsize),u_mix:new e.aI(t,r.u_mix),u_pattern_size_a:new e.aO(t,r.u_pattern_size_a),u_pattern_size_b:new e.aO(t,r.u_pattern_size_b),u_scale_a:new e.aI(t,r.u_scale_a),u_scale_b:new e.aI(t,r.u_scale_b),u_pixel_coord_upper:new e.aO(t,r.u_pixel_coord_upper),u_pixel_coord_lower:new e.aO(t,r.u_pixel_coord_lower),u_tile_units_to_pixels:new e.aI(t,r.u_tile_units_to_pixels)}),terrain:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_texture:new e.aH(t,r.u_texture),u_ele_delta:new e.aI(t,r.u_ele_delta),u_fog_matrix:new e.aJ(t,r.u_fog_matrix),u_fog_color:new e.aL(t,r.u_fog_color),u_fog_ground_blend:new e.aI(t,r.u_fog_ground_blend),u_fog_ground_blend_opacity:new e.aI(t,r.u_fog_ground_blend_opacity),u_horizon_color:new e.aL(t,r.u_horizon_color),u_horizon_fog_blend:new e.aI(t,r.u_horizon_fog_blend)}),terrainDepth:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_ele_delta:new e.aI(t,r.u_ele_delta)}),terrainCoords:(t,r)=>({u_matrix:new e.aJ(t,r.u_matrix),u_texture:new e.aH(t,r.u_texture),u_terrain_coords_id:new e.aI(t,r.u_terrain_coords_id),u_ele_delta:new e.aI(t,r.u_ele_delta)}),sky:(t,r)=>({u_sky_color:new e.aL(t,r.u_sky_color),u_horizon_color:new e.aL(t,r.u_horizon_color),u_horizon:new e.aI(t,r.u_horizon),u_sky_horizon_blend:new e.aI(t,r.u_sky_horizon_blend)})};class Xe{constructor(t,e,r){this.context=t;let n=t.gl;this.buffer=n.createBuffer(),this.dynamicDraw=!!r,this.context.unbindVAO(),t.bindElementBuffer.set(this.buffer),n.bufferData(n.ELEMENT_ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?n.DYNAMIC_DRAW:n.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(t){let e=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),e.bufferSubData(e.ELEMENT_ARRAY_BUFFER,0,t.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let $e={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class Ke{constructor(t,e,r,n){this.length=e.length,this.attributes=r,this.itemSize=e.bytesPerElement,this.dynamicDraw=n,this.context=t;let i=t.gl;this.buffer=i.createBuffer(),t.bindVertexBuffer.set(this.buffer),i.bufferData(i.ARRAY_BUFFER,e.arrayBuffer,this.dynamicDraw?i.DYNAMIC_DRAW:i.STATIC_DRAW),this.dynamicDraw||delete e.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(t){if(t.length!==this.length)throw new Error(`Length of new data is ${t.length}, which doesn't match current length of ${this.length}`);let e=this.context.gl;this.bind(),e.bufferSubData(e.ARRAY_BUFFER,0,t.arrayBuffer)}enableAttributes(t,e){for(let r=0;r0){let r=e.H();e.aQ(r,m.placementInvProjMatrix,t.transform.glCoordMatrix),e.aQ(r,r,m.placementViewportMatrix),c.push({circleArray:y,circleOffset:h,transform:d.posMatrix,invTransform:r,coord:d}),u+=y.length/4,h=u}g&&l.draw(o,s.LINES,jr.disabled,Vr.disabled,t.colorModeForRenderPass(),qr.disabled,{u_matrix:d.posMatrix,u_pixel_extrude_scale:[1/(p=t.transform).width,1/p.height]},t.style.map.terrain&&t.style.map.terrain.getTerrainData(d),n.id,g.layoutVertexBuffer,g.indexBuffer,g.segments,null,t.transform.zoom,null,null,g.collisionVertexBuffer)}var p;if(!a||!c.length)return;let f=t.useProgram("collisionCircle"),d=new e.aR;d.resize(4*u),d._trim();let m=0;for(let t of c)for(let e=0;e=0&&(v[x.associatedIconIndex]={shiftedAnchor:I,angle:L})}else Dt(x.numGlyphs,g)}if(u){y.clear();let r=t.icon.placedSymbolArray;for(let t=0;tt.style.map.terrain.getElevation(l,e,r):null,r="map"===n.layout.get("text-rotation-alignment");Tt(c,l.posMatrix,t,a,N,V,v,u,r,g,l.toUnwrapped(),m.width,m.height,q,e)}let W,Z=l.posMatrix,Y=a&&k||G,X=x||Y?Gr:N,$=U,K=I&&0!==n.paint.get(a?"text-halo-width":"icon-halo-width").constantOr(1);W=I?c.iconsInText?Ge(L.kind,D,_,v,x,Y,t,Z,X,$,q,p,R,S):He(L.kind,D,_,v,x,Y,t,Z,X,$,q,a,p,!0,S):qe(L.kind,D,_,v,x,Y,t,Z,X,$,q,a,p,S);let J={program:z,buffers:h,uniformValues:W,atlasTexture:f,atlasTextureIcon:F,atlasInterpolation:A,atlasInterpolationIcon:E,isSDF:I,hasHalo:K};if(w&&c.canOverlap){T=!0;let t=h.segments.get();for(let r of t)M.push({segments:new e.a0([r]),sortKey:r.sortKey,state:J,terrainData:O})}else M.push({segments:h.segments,sortKey:0,state:J,terrainData:O})}T&&M.sort(((t,e)=>t.sortKey-e.sortKey));for(let e of M){let r=e.state;if(f.activeTexture.set(d.TEXTURE0),r.atlasTexture.bind(r.atlasInterpolation,d.CLAMP_TO_EDGE),r.atlasTextureIcon&&(f.activeTexture.set(d.TEXTURE1),r.atlasTextureIcon&&r.atlasTextureIcon.bind(r.atlasInterpolationIcon,d.CLAMP_TO_EDGE)),r.isSDF){let i=r.uniformValues;r.hasHalo&&(i.u_is_halo=1,Kr(r.buffers,e.segments,n,t,r.program,A,h,p,i,e.terrainData)),i.u_is_halo=0}Kr(r.buffers,e.segments,n,t,r.program,A,h,p,r.uniformValues,e.terrainData)}}function Kr(t,e,r,n,i,a,o,s,l,c){let u=n.context;i.draw(u,u.gl.TRIANGLES,a,o,s,qr.disabled,l,c,r.id,t.layoutVertexBuffer,t.indexBuffer,e,r.paint,n.transform.zoom,t.programConfigurations.get(r.id),t.dynamicLayoutVertexBuffer,t.opacityVertexBuffer)}function Jr(t,r,n,i){let a=t.context,o=a.gl,s=Vr.disabled,l=new Fr([o.ONE,o.ONE],e.aM.transparent,[!0,!0,!0,!0]),c=r.getBucket(n);if(!c)return;let u=i.key,h=n.heatmapFbos.get(u);h||(h=tn(a,r.tileSize,r.tileSize),n.heatmapFbos.set(u,h)),a.bindFramebuffer.set(h.framebuffer),a.viewport.set([0,0,r.tileSize,r.tileSize]),a.clear({color:e.aM.transparent});let p=c.programConfigurations.get(n.id),f=t.useProgram("heatmap",p),d=t.style.map.terrain.getTerrainData(i);f.draw(a,o.TRIANGLES,jr.disabled,s,l,qr.disabled,Pe(i.posMatrix,r,t.transform.zoom,n.paint.get("heatmap-intensity")),d,n.id,c.layoutVertexBuffer,c.indexBuffer,c.segments,n.paint,t.transform.zoom,p)}function Qr(t,e,r){let n=t.context,i=n.gl;n.setColorMode(t.colorModeForRenderPass());let a=en(n,e),o=r.key,s=e.heatmapFbos.get(o);s&&(n.activeTexture.set(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,s.colorAttachment.get()),n.activeTexture.set(i.TEXTURE1),a.bind(i.LINEAR,i.CLAMP_TO_EDGE),t.useProgram("heatmapTexture").draw(n,i.TRIANGLES,jr.disabled,Vr.disabled,t.colorModeForRenderPass(),qr.disabled,ze(t,e,0,1),null,e.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments,e.paint,t.transform.zoom),s.destroy(),e.heatmapFbos.delete(o))}function tn(t,e,r){var n,i;let a=t.gl,o=a.createTexture();a.bindTexture(a.TEXTURE_2D,o),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR),a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR);let s=null!==(n=t.HALF_FLOAT)&&void 0!==n?n:a.UNSIGNED_BYTE,l=null!==(i=t.RGBA16F)&&void 0!==i?i:a.RGBA;a.texImage2D(a.TEXTURE_2D,0,l,e,r,0,a.RGBA,s,null);let c=t.createFramebuffer(e,r,!1,!1);return c.colorAttachment.set(o),c}function en(t,e){return e.colorRampTexture||(e.colorRampTexture=new w(t,e.colorRamp,t.gl.RGBA)),e.colorRampTexture}function rn(t,e,r,n,i){if(!r||!n||!n.imageAtlas)return;let a=n.imageAtlas.patternPositions,o=a[r.to.toString()],s=a[r.from.toString()];if(!o&&s&&(o=s),!s&&o&&(s=o),!o||!s){let t=i.getPaintProperty(e);o=a[t],s=a[t]}o&&s&&t.setConstantPatternPositions(o,s)}function nn(t,e,r,n,i,a,o){let s,l,c,u,h,p=t.context.gl,f="fill-pattern",d=r.paint.get(f),m=d&&d.constantOr(1),g=r.getCrossfadeParameters();o?(l=m&&!r.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",s=p.LINES):(l=m?"fillPattern":"fill",s=p.TRIANGLES);let y=d.constantOr(null);for(let d of n){let n=e.getTile(d);if(m&&!n.patternsLoaded())continue;let v=n.getBucket(r);if(!v)continue;let x=v.programConfigurations.get(r.id),_=t.useProgram(l,x),b=t.style.map.terrain&&t.style.map.terrain.getTerrainData(d);m&&(t.context.activeTexture.set(p.TEXTURE0),n.imageAtlasTexture.bind(p.LINEAR,p.CLAMP_TO_EDGE),x.updatePaintBuffers(g)),rn(x,f,y,n,r);let w=b?d:null,T=t.translatePosMatrix(w?w.posMatrix:d.posMatrix,n,r.paint.get("fill-translate"),r.paint.get("fill-translate-anchor"));if(o){u=v.indexBuffer2,h=v.segments2;let e=[p.drawingBufferWidth,p.drawingBufferHeight];c="fillOutlinePattern"===l&&m?Se(T,t,g,n,e):Me(T,e)}else u=v.indexBuffer,h=v.segments,c=m?ke(T,t,g,n):Ae(T);_.draw(t.context,s,i,t.stencilModeForClipping(d),a,qr.disabled,c,b,r.id,v.layoutVertexBuffer,u,h,r.paint,t.transform.zoom,x)}}function an(t,e,r,n,i,a,o){let s=t.context,l=s.gl,c="fill-extrusion-pattern",u=r.paint.get(c),h=u.constantOr(1),p=r.getCrossfadeParameters(),f=r.paint.get("fill-extrusion-opacity"),d=u.constantOr(null);for(let u of n){let n=e.getTile(u),m=n.getBucket(r);if(!m)continue;let g=t.style.map.terrain&&t.style.map.terrain.getTerrainData(u),y=m.programConfigurations.get(r.id),v=t.useProgram(h?"fillExtrusionPattern":"fillExtrusion",y);h&&(t.context.activeTexture.set(l.TEXTURE0),n.imageAtlasTexture.bind(l.LINEAR,l.CLAMP_TO_EDGE),y.updatePaintBuffers(p)),rn(y,c,d,n,r);let x=t.translatePosMatrix(u.posMatrix,n,r.paint.get("fill-extrusion-translate"),r.paint.get("fill-extrusion-translate-anchor")),_=r.paint.get("fill-extrusion-vertical-gradient"),b=h?Te(x,t,_,f,u,p,n):we(x,t,_,f);v.draw(s,s.gl.TRIANGLES,i,a,o,qr.backCCW,b,g,r.id,m.layoutVertexBuffer,m.indexBuffer,m.segments,r.paint,t.transform.zoom,y,t.style.map.terrain&&m.centroidVertexBuffer)}}function on(t,e,r,n,i,a,o){let s=t.context,l=s.gl,c=r.fbo;if(!c)return;let u=t.useProgram("hillshade"),h=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);s.activeTexture.set(l.TEXTURE0),l.bindTexture(l.TEXTURE_2D,c.colorAttachment.get()),u.draw(s,l.TRIANGLES,i,a,o,qr.disabled,((t,e,r,n)=>{let i=r.paint.get("hillshade-shadow-color"),a=r.paint.get("hillshade-highlight-color"),o=r.paint.get("hillshade-accent-color"),s=r.paint.get("hillshade-illumination-direction")*(Math.PI/180);"viewport"===r.paint.get("hillshade-illumination-anchor")&&(s-=t.transform.angle);let l=!t.options.moving;return{u_matrix:n?n.posMatrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped(),l),u_image:0,u_latrange:De(0,e.tileID),u_light:[r.paint.get("hillshade-exaggeration"),s],u_shadow:i,u_highlight:a,u_accent:o}})(t,r,n,h?e:null),h,n.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments)}function sn(t,r,n,i,a,o){let s=t.context,l=s.gl,c=r.dem;if(c&&c.data){let u=c.dim,h=c.stride,p=c.getPixels();if(s.activeTexture.set(l.TEXTURE1),s.pixelStoreUnpackPremultiplyAlpha.set(!1),r.demTexture=r.demTexture||t.getTileTexture(h),r.demTexture){let t=r.demTexture;t.update(p,{premultiply:!1}),t.bind(l.NEAREST,l.CLAMP_TO_EDGE)}else r.demTexture=new w(s,p,l.RGBA,{premultiply:!1}),r.demTexture.bind(l.NEAREST,l.CLAMP_TO_EDGE);s.activeTexture.set(l.TEXTURE0);let f=r.fbo;if(!f){let t=new w(s,{width:u,height:u,data:null},l.RGBA);t.bind(l.LINEAR,l.CLAMP_TO_EDGE),f=r.fbo=s.createFramebuffer(u,u,!0,!1),f.colorAttachment.set(t.texture)}s.bindFramebuffer.set(f.framebuffer),s.viewport.set([0,0,u,u]),t.useProgram("hillshadePrepare").draw(s,l.TRIANGLES,i,a,o,qr.disabled,((t,r)=>{let n=r.stride,i=e.H();return e.aP(i,0,e.X,-e.X,0,0,1),e.J(i,i,[0,-e.X,0]),{u_matrix:i,u_image:1,u_dimension:[n,n],u_zoom:t.overscaledZ,u_unpack:r.getUnpackVector()}})(r.tileID,c),null,n.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments),r.needsHillshadePrepare=!1}}function ln(t,r,n,i,o,s){let l=i.paint.get("raster-fade-duration");if(!s&&l>0){let i=a.now(),s=(i-t.timeAdded)/l,c=r?(i-r.timeAdded)/l:-1,u=n.getSource(),h=o.coveringZoomLevel({tileSize:u.tileSize,roundZoom:u.roundZoom}),p=!r||Math.abs(r.tileID.overscaledZ-h)>Math.abs(t.tileID.overscaledZ-h),f=p&&t.refreshedUponExpiration?1:e.ac(p?s:1-c,0,1);return t.refreshedUponExpiration&&s>=1&&(t.refreshedUponExpiration=!1),r?{opacity:1,mix:1-f}:{opacity:f,mix:0}}return{opacity:1,mix:0}}let cn=new e.aM(1,0,0,1),un=new e.aM(0,1,0,1),hn=new e.aM(0,0,1,1),pn=new e.aM(1,0,1,1),fn=new e.aM(0,1,1,1);function dn(t,e,r,n){gn(t,0,e+r/2,t.transform.width,r,n)}function mn(t,e,r,n){gn(t,e-r/2,0,r,t.transform.height,n)}function gn(t,e,r,n,i,a){let o=t.context,s=o.gl;s.enable(s.SCISSOR_TEST),s.scissor(e*t.pixelRatio,r*t.pixelRatio,n*t.pixelRatio,i*t.pixelRatio),o.clear({color:a}),s.disable(s.SCISSOR_TEST)}function yn(t,r,n){let i=t.context,a=i.gl,o=n.posMatrix,s=t.useProgram("debug"),l=jr.disabled,c=Vr.disabled,u=t.colorModeForRenderPass(),h="$debug",p=t.style.map.terrain&&t.style.map.terrain.getTerrainData(n);i.activeTexture.set(a.TEXTURE0);let f=r.getTileByID(n.key).latestRawTileData,d=Math.floor((f&&f.byteLength||0)/1024),m=r.getTile(n).tileSize,g=512/Math.min(m,512)*(n.overscaledZ/t.transform.zoom)*.5,y=n.canonical.toString();n.overscaledZ!==n.canonical.z&&(y+=` => ${n.overscaledZ}`),function(t,e){t.initDebugOverlayCanvas();let r=t.debugOverlayCanvas,n=t.context.gl,i=t.debugOverlayCanvas.getContext("2d");i.clearRect(0,0,r.width,r.height),i.shadowColor="white",i.shadowBlur=2,i.lineWidth=1.5,i.strokeStyle="white",i.textBaseline="top",i.font="bold 36px Open Sans, sans-serif",i.fillText(e,5,5),i.strokeText(e,5,5),t.debugOverlayTexture.update(r),t.debugOverlayTexture.bind(n.LINEAR,n.CLAMP_TO_EDGE)}(t,`${y} ${d}kB`),s.draw(i,a.TRIANGLES,l,c,Fr.alphaBlended,qr.disabled,Ie(o,e.aM.transparent,g),null,h,t.debugBuffer,t.quadTriangleIndexBuffer,t.debugSegments),s.draw(i,a.LINE_STRIP,l,c,u,qr.disabled,Ie(o,e.aM.red),p,h,t.debugBuffer,t.tileBorderIndexBuffer,t.debugSegments)}function vn(t,e,r){let n=t.context,i=n.gl,a=t.colorModeForRenderPass(),o=new jr(i.LEQUAL,jr.ReadWrite,t.depthRangeFor3D),s=t.useProgram("terrain"),l=e.getTerrainMesh();n.bindFramebuffer.set(null),n.viewport.set([0,0,t.width,t.height]);for(let c of r){let r=t.renderToTexture.getTexture(c),u=e.getTerrainData(c.tileID);n.activeTexture.set(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,r.texture);let h=t.transform.calculatePosMatrix(c.tileID.toUnwrapped()),p=e.getMeshFrameDelta(t.transform.zoom),f=t.transform.calculateFogMatrix(c.tileID.toUnwrapped()),d=ve(h,p,f,t.style.sky,t.transform.pitch);s.draw(n,i.TRIANGLES,o,Vr.disabled,a,qr.backCCW,d,u,"terrain",l.vertexBuffer,l.indexBuffer,l.segments)}}class xn{constructor(t,e,r){this.vertexBuffer=t,this.indexBuffer=e,this.segments=r}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class _n{constructor(t,r){this.context=new Br(t),this.transform=r,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:e.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=pt.maxUnderzooming+pt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new ue}resize(t,e,r){if(this.width=Math.floor(t*r),this.height=Math.floor(e*r),this.pixelRatio=r,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let t of this.style._order)this.style._layers[t].resize()}setup(){let t=this.context,r=new e.aX;r.emplaceBack(0,0),r.emplaceBack(e.X,0),r.emplaceBack(0,e.X),r.emplaceBack(e.X,e.X),this.tileExtentBuffer=t.createVertexBuffer(r,de.members),this.tileExtentSegments=e.a0.simpleSegment(0,0,4,2);let n=new e.aX;n.emplaceBack(0,0),n.emplaceBack(e.X,0),n.emplaceBack(0,e.X),n.emplaceBack(e.X,e.X),this.debugBuffer=t.createVertexBuffer(n,de.members),this.debugSegments=e.a0.simpleSegment(0,0,4,5);let i=new e.$;i.emplaceBack(0,0,0,0),i.emplaceBack(e.X,0,e.X,0),i.emplaceBack(0,e.X,0,e.X),i.emplaceBack(e.X,e.X,e.X,e.X),this.rasterBoundsBuffer=t.createVertexBuffer(i,Q.members),this.rasterBoundsSegments=e.a0.simpleSegment(0,0,4,2);let a=new e.aX;a.emplaceBack(0,0),a.emplaceBack(1,0),a.emplaceBack(0,1),a.emplaceBack(1,1),this.viewportBuffer=t.createVertexBuffer(a,de.members),this.viewportSegments=e.a0.simpleSegment(0,0,4,2);let o=new e.aZ;o.emplaceBack(0),o.emplaceBack(1),o.emplaceBack(3),o.emplaceBack(2),o.emplaceBack(0),this.tileBorderIndexBuffer=t.createIndexBuffer(o);let s=new e.aY;s.emplaceBack(0,1,2),s.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=t.createIndexBuffer(s);let l=this.context.gl;this.stencilClearMode=new Vr({func:l.ALWAYS,mask:0},0,255,l.ZERO,l.ZERO,l.ZERO)}clearStencil(){let t=this.context,r=t.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let n=e.H();e.aP(n,0,this.width,this.height,0,0,1),e.K(n,n,[r.drawingBufferWidth,r.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(t,r.TRIANGLES,jr.disabled,this.stencilClearMode,Fr.disabled,qr.disabled,Le(n),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(t,e){if(this.currentStencilSource===t.source||!t.isTileClipped()||!e||!e.length)return;this.currentStencilSource=t.source;let r=this.context,n=r.gl;this.nextStencilID+e.length>256&&this.clearStencil(),r.setColorMode(Fr.disabled),r.setDepthMode(jr.disabled);let i=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let t of e){let e=this._tileClippingMaskIDs[t.key]=this.nextStencilID++,a=this.style.map.terrain&&this.style.map.terrain.getTerrainData(t);i.draw(r,n.TRIANGLES,jr.disabled,new Vr({func:n.ALWAYS,mask:0},e,255,n.KEEP,n.KEEP,n.REPLACE),Fr.disabled,qr.disabled,Le(t.posMatrix),a,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let t=this.nextStencilID++,e=this.context.gl;return new Vr({func:e.NOTEQUAL,mask:255},t,255,e.KEEP,e.KEEP,e.REPLACE)}stencilModeForClipping(t){let e=this.context.gl;return new Vr({func:e.EQUAL,mask:255},this._tileClippingMaskIDs[t.key],0,e.KEEP,e.KEEP,e.REPLACE)}stencilConfigForOverlap(t){let e=this.context.gl,r=t.sort(((t,e)=>e.overscaledZ-t.overscaledZ)),n=r[r.length-1].overscaledZ,i=r[0].overscaledZ-n+1;if(i>1){this.currentStencilSource=void 0,this.nextStencilID+i>256&&this.clearStencil();let t={};for(let r=0;r=0;this.currentLayer--){let t=this.style._layers[n[this.currentLayer]],e=i[t.source],r=o[t.source];this._renderTileClippingMasks(t,r),this.renderLayer(this,e,t,r)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerr.source&&!r.isHidden(e)?[t.sourceCaches[r.source]]:[])),i=n.filter((t=>"vector"===t.getSource().type)),a=n.filter((t=>"vector"!==t.getSource().type)),o=t=>{(!r||r.getSource().maxzoomo(t))),r||a.forEach((t=>o(t))),r}(this.style,this.transform.zoom);t&&function(t,e,r){for(let n=0;n0),i&&(e.b0(r,n),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(t,r){let n=t.context,i=n.gl,a=Fr.unblended,o=new jr(i.LEQUAL,jr.ReadWrite,[0,1]),s=r.getTerrainMesh(),l=r.sourceCache.getRenderableTiles(),c=t.useProgram("terrainDepth");n.bindFramebuffer.set(r.getFramebuffer("depth").framebuffer),n.viewport.set([0,0,t.width/devicePixelRatio,t.height/devicePixelRatio]),n.clear({color:e.aM.transparent,depth:1});for(let e of l){let l=r.getTerrainData(e.tileID),u={u_matrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped()),u_ele_delta:r.getMeshFrameDelta(t.transform.zoom)};c.draw(n,i.TRIANGLES,o,Vr.disabled,a,qr.backCCW,u,l,"terrain",s.vertexBuffer,s.indexBuffer,s.segments)}n.bindFramebuffer.set(null),n.viewport.set([0,0,t.width,t.height])}(this,this.style.map.terrain),function(t,r){let n=t.context,i=n.gl,a=Fr.unblended,o=new jr(i.LEQUAL,jr.ReadWrite,[0,1]),s=r.getTerrainMesh(),l=r.getCoordsTexture(),c=r.sourceCache.getRenderableTiles(),u=t.useProgram("terrainCoords");n.bindFramebuffer.set(r.getFramebuffer("coords").framebuffer),n.viewport.set([0,0,t.width/devicePixelRatio,t.height/devicePixelRatio]),n.clear({color:e.aM.transparent,depth:1}),r.coordsIndex=[];for(let e of c){let c=r.getTerrainData(e.tileID);n.activeTexture.set(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,l.texture);let h={u_matrix:t.transform.calculatePosMatrix(e.tileID.toUnwrapped()),u_terrain_coords_id:(255-r.coordsIndex.length)/255,u_texture:0,u_ele_delta:r.getMeshFrameDelta(t.transform.zoom)};u.draw(n,i.TRIANGLES,o,Vr.disabled,a,qr.backCCW,h,c,"terrain",s.vertexBuffer,s.indexBuffer,s.segments),r.coordsIndex.push(e.tileID.key)}n.bindFramebuffer.set(null),n.viewport.set([0,0,t.width,t.height])}(this,this.style.map.terrain))}renderLayer(t,r,n,i){if(!n.isHidden(this.transform.zoom)&&("background"===n.type||"custom"===n.type||(i||[]).length))switch(this.id=n.id,n.type){case"symbol":!function(t,r,n,i,a){if("translucent"!==t.renderPass)return;let o=Vr.disabled,s=t.colorModeForRenderPass();(n._unevaluatedLayout.hasValue("text-variable-anchor")||n._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(t,r,n,i,a,o,s,l,c){let u=r.transform,h=ne(),p="map"===a,f="map"===o;for(let a of t){let t=i.getTile(a),o=t.getBucket(n);if(!o||!o.text||!o.text.segments.get().length)continue;let d=e.ag(o.textSizeData,u.zoom),m=Bt(t,1,r.transform.zoom),g=vt(a.posMatrix,f,p,r.transform,m),y="none"!==n.layout.get("icon-text-fit")&&o.hasIconData();if(d){let e=Math.pow(2,u.zoom-t.tileID.overscaledZ),n=r.style.map.terrain?(t,e)=>r.style.map.terrain.getElevation(a,t,e):null,i=h.translatePosition(u,t,s,l);Yr(o,p,f,c,u,g,a.posMatrix,e,d,y,h,i,a.toUnwrapped(),n)}}}(i,t,n,r,n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),a),0!==n.paint.get("icon-opacity").constantOr(1)&&$r(t,r,n,i,!1,n.paint.get("icon-translate"),n.paint.get("icon-translate-anchor"),n.layout.get("icon-rotation-alignment"),n.layout.get("icon-pitch-alignment"),n.layout.get("icon-keep-upright"),o,s),0!==n.paint.get("text-opacity").constantOr(1)&&$r(t,r,n,i,!0,n.paint.get("text-translate"),n.paint.get("text-translate-anchor"),n.layout.get("text-rotation-alignment"),n.layout.get("text-pitch-alignment"),n.layout.get("text-keep-upright"),o,s),r.map.showCollisionBoxes&&(Hr(t,r,n,i,!0),Hr(t,r,n,i,!1))}(t,r,n,i,this.style.placement.variableOffsets);break;case"circle":!function(t,r,n,i){if("translucent"!==t.renderPass)return;let a=n.paint.get("circle-opacity"),o=n.paint.get("circle-stroke-width"),s=n.paint.get("circle-stroke-opacity"),l=!n.layout.get("circle-sort-key").isConstant();if(0===a.constantOr(1)&&(0===o.constantOr(1)||0===s.constantOr(1)))return;let c=t.context,u=c.gl,h=t.depthModeForSublayer(0,jr.ReadOnly),p=Vr.disabled,f=t.colorModeForRenderPass(),d=[];for(let a=0;at.sortKey-e.sortKey));for(let e of d){let{programConfiguration:r,program:i,layoutVertexBuffer:a,indexBuffer:o,uniformValues:s,terrainData:l}=e.state;i.draw(c,u.TRIANGLES,h,p,f,qr.disabled,s,l,n.id,a,o,e.segments,n.paint,t.transform.zoom,r)}}(t,r,n,i);break;case"heatmap":!function(t,r,n,i){if(0===n.paint.get("heatmap-opacity"))return;let a=t.context;if(t.style.map.terrain){for(let e of i){let i=r.getTile(e);r.hasRenderableParent(e)||("offscreen"===t.renderPass?Jr(t,i,n,e):"translucent"===t.renderPass&&Qr(t,n,e))}a.viewport.set([0,0,t.width,t.height])}else"offscreen"===t.renderPass?function(t,r,n,i){let a=t.context,o=a.gl,s=Vr.disabled,l=new Fr([o.ONE,o.ONE],e.aM.transparent,[!0,!0,!0,!0]);(function(t,r,n){let i=t.gl;t.activeTexture.set(i.TEXTURE1),t.viewport.set([0,0,r.width/4,r.height/4]);let a=n.heatmapFbos.get(e.aU);a?(i.bindTexture(i.TEXTURE_2D,a.colorAttachment.get()),t.bindFramebuffer.set(a.framebuffer)):(a=tn(t,r.width/4,r.height/4),n.heatmapFbos.set(e.aU,a))})(a,t,n),a.clear({color:e.aM.transparent});for(let e=0;e20&&a.texParameterf(a.TEXTURE_2D,i.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,i.extTextureFilterAnisotropicMax);let _=t.style.map.terrain&&t.style.map.terrain.getTerrainData(n),b=_?n:null,w=b?b.posMatrix:t.transform.calculatePosMatrix(n.toUnwrapped(),p),T=Ue(w,m||[0,0],d||1,v,r);o instanceof tt?s.draw(i,a.TRIANGLES,u,Vr.disabled,l,qr.disabled,T,_,r.id,o.boundsBuffer,t.quadTriangleIndexBuffer,o.boundsSegments):s.draw(i,a.TRIANGLES,u,c[n.overscaledZ],l,qr.disabled,T,_,r.id,t.rasterBoundsBuffer,t.quadTriangleIndexBuffer,t.rasterBoundsSegments)}}(t,r,n,i);break;case"background":!function(t,e,r,n){let i=r.paint.get("background-color"),a=r.paint.get("background-opacity");if(0===a)return;let o=t.context,s=o.gl,l=t.transform,c=l.tileSize,u=r.paint.get("background-pattern");if(t.isPatternMissing(u))return;let h=!u&&1===i.a&&1===a&&t.opaquePassEnabledForLayer()?"opaque":"translucent";if(t.renderPass!==h)return;let p=Vr.disabled,f=t.depthModeForSublayer(0,"opaque"===h?jr.ReadWrite:jr.ReadOnly),d=t.colorModeForRenderPass(),m=t.useProgram(u?"backgroundPattern":"background"),g=n||l.coveringTiles({tileSize:c,terrain:t.style.map.terrain});u&&(o.activeTexture.set(s.TEXTURE0),t.imageManager.bind(t.context));let y=r.getCrossfadeParameters();for(let e of g){let l=n?e.posMatrix:t.transform.calculatePosMatrix(e.toUnwrapped()),h=u?Ze(l,a,t,u,{tileID:e,tileSize:c},y):We(l,a,i),g=t.style.map.terrain&&t.style.map.terrain.getTerrainData(e);m.draw(o,s.TRIANGLES,f,p,d,qr.disabled,h,g,r.id,t.tileExtentBuffer,t.quadTriangleIndexBuffer,t.tileExtentSegments)}}(t,0,n,i);break;case"custom":!function(t,e,r){let n=t.context,i=r.implementation;if("offscreen"===t.renderPass){let e=i.prerender;e&&(t.setCustomLayerDefaults(),n.setColorMode(t.colorModeForRenderPass()),e.call(i,n.gl,t.transform.customLayerMatrix()),n.setDirty(),t.setBaseState())}else if("translucent"===t.renderPass){t.setCustomLayerDefaults(),n.setColorMode(t.colorModeForRenderPass()),n.setStencilMode(Vr.disabled);let e="3d"===i.renderingMode?new jr(t.context.gl.LEQUAL,jr.ReadWrite,t.depthRangeFor3D):t.depthModeForSublayer(0,jr.ReadOnly);n.setDepthMode(e),i.render(n.gl,t.transform.customLayerMatrix(),{farZ:t.transform.farZ,nearZ:t.transform.nearZ,fov:t.transform._fov,modelViewProjectionMatrix:t.transform.modelViewProjectionMatrix,projectionMatrix:t.transform.projectionMatrix}),n.setDirty(),t.setBaseState(),n.bindFramebuffer.set(null)}}(t,0,n)}}translatePosMatrix(t,r,n,i,a){if(!n[0]&&!n[1])return t;let o=a?"map"===i?this.transform.angle:0:"viewport"===i?-this.transform.angle:0;if(o){let t=Math.sin(o),e=Math.cos(o);n=[n[0]*e-n[1]*t,n[0]*t+n[1]*e]}let s=[a?n[0]:Bt(r,n[0],this.transform.zoom),a?n[1]:Bt(r,n[1],this.transform.zoom),0],l=new Float32Array(16);return e.J(l,t,s),l}saveTileTexture(t){let e=this._tileTextures[t.size[0]];e?e.push(t):this._tileTextures[t.size[0]]=[t]}getTileTexture(t){let e=this._tileTextures[t];return e&&e.length>0?e.pop():null}isPatternMissing(t){if(!t)return!1;if(!t.from||!t.to)return!0;let e=this.imageManager.getPattern(t.from.toString()),r=this.imageManager.getPattern(t.to.toString());return!e||!r}useProgram(t,e){this.cache=this.cache||{};let r=t+(e?e.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[r]||(this.cache[r]=new _e(this.context,me[t],e,Ye[t],this._showOverdrawInspector,this.style.map.terrain)),this.cache[r]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let t=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(t.FUNC_ADD)}initDebugOverlayCanvas(){null==this.debugOverlayCanvas&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new w(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:t,drawingBufferHeight:e}=this.context.gl;return this.width!==t||this.height!==e}}class bn{constructor(t,e){this.points=t,this.planes=e}static fromInvProjectionMatrix(t,r,n){let i=Math.pow(2,n),a=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map((n=>{let a=1/(n=e.af([],n,t))[3]/r*i;return e.b1(n,n,[a,a,1/n[3],a])})),o=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map((t=>{let e=function(t,e){var r=e[0],n=e[1],i=e[2],a=r*r+n*n+i*i;return a>0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t}([],(n=[],i=y([],a[t[0]],a[t[1]]),o=y([],a[t[2]],a[t[1]]),s=i[0],l=i[1],c=i[2],u=o[0],h=o[1],p=o[2],n[0]=l*p-c*h,n[1]=c*u-s*p,n[2]=s*h-l*u,n)),r=-((f=e)[0]*(d=a[t[1]])[0]+f[1]*d[1]+f[2]*d[2]);var n,i,o,s,l,c,u,h,p,f,d;return e.concat(r)}));return new bn(a,o)}}class wn{constructor(t,e){var r,n,i;this.min=t,this.max=e,this.center=function(t,e){return t[0]=.5*e[0],t[1]=.5*e[1],t[2]=.5*e[2],t}([],(r=[],n=this.min,i=this.max,r[0]=n[0]+i[0],r[1]=n[1]+i[1],r[2]=n[2]+i[2],r))}quadrant(t){let e=[t%2==0,t<2],r=m(this.min),n=m(this.max);for(let t=0;t=0&&o++;if(0===o)return 0;o!==r.length&&(n=!1)}if(n)return 2;for(let e=0;e<3;e++){let r=Number.MAX_VALUE,n=-Number.MAX_VALUE;for(let i=0;ithis.max[e]-this.min[e])return 0}return 1}}class Tn{constructor(t=0,e=0,r=0,n=0){if(isNaN(t)||t<0||isNaN(e)||e<0||isNaN(r)||r<0||isNaN(n)||n<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=t,this.bottom=e,this.left=r,this.right=n}interpolate(t,r,n){return null!=r.top&&null!=t.top&&(this.top=e.y.number(t.top,r.top,n)),null!=r.bottom&&null!=t.bottom&&(this.bottom=e.y.number(t.bottom,r.bottom,n)),null!=r.left&&null!=t.left&&(this.left=e.y.number(t.left,r.left,n)),null!=r.right&&null!=t.right&&(this.right=e.y.number(t.right,r.right,n)),this}getCenter(t,r){let n=e.ac((this.left+t-this.right)/2,0,t),i=e.ac((this.top+r-this.bottom)/2,0,r);return new e.P(n,i)}equals(t){return this.top===t.top&&this.bottom===t.bottom&&this.left===t.left&&this.right===t.right}clone(){return new Tn(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let An=85.051129;class kn{constructor(t,r,n,i,a){this.tileSize=512,this._renderWorldCopies=void 0===a||!!a,this._minZoom=t||0,this._maxZoom=r||22,this._minPitch=n??0,this._maxPitch=i??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new e.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Tn,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let t=new kn(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return t.apply(this),t}apply(t){this.tileSize=t.tileSize,this.latRange=t.latRange,this.lngRange=t.lngRange,this.width=t.width,this.height=t.height,this._center=t._center,this._elevation=t._elevation,this.minElevationForCurrentTile=t.minElevationForCurrentTile,this.zoom=t.zoom,this.angle=t.angle,this._fov=t._fov,this._pitch=t._pitch,this._unmodified=t._unmodified,this._edgeInsets=t._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(t){this._minZoom!==t&&(this._minZoom=t,this.zoom=Math.max(this.zoom,t))}get maxZoom(){return this._maxZoom}set maxZoom(t){this._maxZoom!==t&&(this._maxZoom=t,this.zoom=Math.min(this.zoom,t))}get minPitch(){return this._minPitch}set minPitch(t){this._minPitch!==t&&(this._minPitch=t,this.pitch=Math.max(this.pitch,t))}get maxPitch(){return this._maxPitch}set maxPitch(t){this._maxPitch!==t&&(this._maxPitch=t,this.pitch=Math.min(this.pitch,t))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(t){void 0===t?t=!0:null===t&&(t=!1),this._renderWorldCopies=t}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new e.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(t){let r=-e.b3(t,-180,180)*Math.PI/180;var n;this.angle!==r&&(this._unmodified=!1,this.angle=r,this._calcMatrices(),this.rotationMatrix=(n=new e.A(4),e.A!=Float32Array&&(n[1]=0,n[2]=0),n[0]=1,n[3]=1,n),function(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),l=Math.cos(r);t[0]=n*l+a*s,t[1]=i*l+o*s,t[2]=n*-s+a*l,t[3]=i*-s+o*l}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(t){let r=e.ac(t,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==r&&(this._unmodified=!1,this._pitch=r,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(t){t=Math.max(.01,Math.min(60,t)),this._fov!==t&&(this._unmodified=!1,this._fov=t/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(t){let e=Math.min(Math.max(t,this.minZoom),this.maxZoom);this._zoom!==e&&(this._unmodified=!1,this._zoom=e,this.tileZoom=Math.max(0,Math.floor(e)),this.scale=this.zoomScale(e),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(t){t.lat===this._center.lat&&t.lng===this._center.lng||(this._unmodified=!1,this._center=t,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(t){t!==this._elevation&&(this._elevation=t,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(t){this._edgeInsets.equals(t)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,t,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(t){return this._edgeInsets.equals(t)}interpolatePadding(t,e,r){this._unmodified=!1,this._edgeInsets.interpolate(t,e,r),this._constrain(),this._calcMatrices()}coveringZoomLevel(t){let e=(t.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/t.tileSize));return Math.max(0,e)}getVisibleUnwrappedCoordinates(t){let r=[new e.b4(0,t)];if(this._renderWorldCopies){let n=this.pointCoordinate(new e.P(0,0)),i=this.pointCoordinate(new e.P(this.width,0)),a=this.pointCoordinate(new e.P(this.width,this.height)),o=this.pointCoordinate(new e.P(0,this.height)),s=Math.floor(Math.min(n.x,i.x,a.x,o.x)),l=Math.floor(Math.max(n.x,i.x,a.x,o.x)),c=1;for(let n=s-c;n<=l+c;n++)0!==n&&r.push(new e.b4(n,t))}return r}coveringTiles(t){var r,n;let i=this.coveringZoomLevel(t),a=i;if(void 0!==t.minzoom&&it.maxzoom&&(i=t.maxzoom);let o=this.pointCoordinate(this.getCameraPoint()),s=e.Z.fromLngLat(this.center),l=Math.pow(2,i),c=[l*o.x,l*o.y,0],u=[l*s.x,l*s.y,0],h=bn.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,i),p=t.minzoom||0;!t.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(p=i);let f=t.terrain?2/Math.min(this.tileSize,t.tileSize)*this.tileSize:3,d=t=>({aabb:new wn([t*l,0,0],[(t+1)*l,l,0]),zoom:0,x:0,y:0,wrap:t,fullyVisible:!1}),m=[],g=[],y=i,v=t.reparseOverscaled?a:i;if(this._renderWorldCopies)for(let t=1;t<=3;t++)m.push(d(-t)),m.push(d(t));for(m.push(d(0));m.length>0;){let i=m.pop(),a=i.x,o=i.y,s=i.fullyVisible;if(!s){let t=i.aabb.intersects(h);if(0===t)continue;s=2===t}let l=t.terrain?c:u,d=i.aabb.distanceX(l),_=i.aabb.distanceY(l),b=Math.max(Math.abs(d),Math.abs(_));if(i.zoom===y||b>f+(1<=p){let t=y-i.zoom,r=c[0]-.5-(a<>1),h=i.zoom+1,p=i.aabb.quadrant(l);if(t.terrain){let a=new e.S(h,i.wrap,h,c,u),o=t.terrain.getMinMaxElevation(a),s=null!==(r=o.minElevation)&&void 0!==r?r:this.elevation,l=null!==(n=o.maxElevation)&&void 0!==n?n:this.elevation;p=new wn([p.min[0],p.min[1],s],[p.max[0],p.max[1],l])}m.push({aabb:p,zoom:h,x:c,y:u,wrap:i.wrap,fullyVisible:s})}}return g.sort(((t,e)=>t.distanceSq-e.distanceSq)).map((t=>t.tileID))}resize(t,e){this.width=t,this.height=e,this.pixelsToGLUnits=[2/t,-2/e],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(t){return Math.pow(2,t)}scaleZoom(t){return Math.log(t)/Math.LN2}project(t){let r=e.ac(t.lat,-85.051129,An);return new e.P(e.O(t.lng)*this.worldSize,e.Q(r)*this.worldSize)}unproject(t){return new e.Z(t.x/this.worldSize,t.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(t){let r=this.elevation,n=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,i=this.pointLocation(this.centerPoint,t),a=t.getElevationForLngLatZoom(i,this.tileZoom);if(!(this.elevation-a))return;let o=n+r-a,s=Math.cos(this._pitch)*this.cameraToCenterDistance/o/e.b5(1,i.lat),l=this.scaleZoom(s/this.tileSize);this._elevation=a,this._center=i,this.zoom=l}setLocationAtPoint(t,r){let n=this.pointCoordinate(r),i=this.pointCoordinate(this.centerPoint),a=this.locationCoordinate(t),o=new e.Z(a.x-(n.x-i.x),a.y-(n.y-i.y));this.center=this.coordinateLocation(o),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(t,e){return e?this.coordinatePoint(this.locationCoordinate(t),e.getElevationForLngLatZoom(t,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(t))}pointLocation(t,e){return this.coordinateLocation(this.pointCoordinate(t,e))}locationCoordinate(t){return e.Z.fromLngLat(t)}coordinateLocation(t){return t&&t.toLngLat()}pointCoordinate(t,r){if(r){let e=r.pointCoordinate(t);if(null!=e)return e}let n=[t.x,t.y,0,1],i=[t.x,t.y,1,1];e.af(n,n,this.pixelMatrixInverse),e.af(i,i,this.pixelMatrixInverse);let a=n[3],o=i[3],s=n[1]/a,l=i[1]/o,c=n[2]/a,u=i[2]/o,h=c===u?0:(0-c)/(u-c);return new e.Z(e.y.number(n[0]/a,i[0]/o,h)/this.worldSize,e.y.number(s,l,h)/this.worldSize)}coordinatePoint(t,r=0,n=this.pixelMatrix){let i=[t.x*this.worldSize,t.y*this.worldSize,r,1];return e.af(i,i,n),new e.P(i[0]/i[3],i[1]/i[3])}getBounds(){let t=Math.max(0,this.height/2-this.getHorizon());return(new Z).extend(this.pointLocation(new e.P(0,t))).extend(this.pointLocation(new e.P(this.width,t))).extend(this.pointLocation(new e.P(this.width,this.height))).extend(this.pointLocation(new e.P(0,this.height)))}getMaxBounds(){return this.latRange&&2===this.latRange.length&&this.lngRange&&2===this.lngRange.length?new Z([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(t){t?(this.lngRange=[t.getWest(),t.getEast()],this.latRange=[t.getSouth(),t.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,An])}calculateTileMatrix(t){let r=t.canonical,n=this.worldSize/this.zoomScale(r.z),i=r.x+Math.pow(2,r.z)*t.wrap,a=e.an(new Float64Array(16));return e.J(a,a,[i*n,r.y*n,0]),e.K(a,a,[n/e.X,n/e.X,1]),a}calculatePosMatrix(t,r=!1){let n=t.key,i=r?this._alignedPosMatrixCache:this._posMatrixCache;if(i[n])return i[n];let a=this.calculateTileMatrix(t);return e.L(a,r?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,a),i[n]=new Float32Array(a),i[n]}calculateFogMatrix(t){let r=t.key,n=this._fogMatrixCache;if(n[r])return n[r];let i=this.calculateTileMatrix(t);return e.L(i,this.fogMatrix,i),n[r]=new Float32Array(i),n[r]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(t,r){r=e.ac(+r,this.minZoom,this.maxZoom);let n={center:new e.N(t.lng,t.lat),zoom:r},i=this.lngRange;if(!this._renderWorldCopies&&null===i){let t=179.9999999999;i=[-t,t]}let a=this.tileSize*this.zoomScale(n.zoom),o=0,s=a,l=0,c=a,u=0,h=0,{x:p,y:f}=this.size;if(this.latRange){let t=this.latRange;o=e.Q(t[1])*a,s=e.Q(t[0])*a,s-os&&(m=s-t)}if(i){let t=(l+c)/2,r=g;this._renderWorldCopies&&(r=e.b3(g,t-a/2,t+a/2));let n=p/2;r-nc&&(d=c-n)}if(void 0!==d||void 0!==m){let t=new e.P(d??g,m??y);n.center=this.unproject.call({worldSize:a},t).wrap()}return n}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let t=this._unmodified,{center:e,zoom:r}=this.getConstrained(this.center,this.zoom);this.center=e,this.zoom=r,this._unmodified=t,this._constraining=!1}_calcMatrices(){if(!this.height)return;let t=this.centerOffset,r=this.point.x,n=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=e.b5(1,this.center.lat)*this.worldSize;let i=e.an(new Float64Array(16));e.K(i,i,[this.width/2,-this.height/2,1]),e.J(i,i,[1,-1,0]),this.labelPlaneMatrix=i,i=e.an(new Float64Array(16)),e.K(i,i,[1,-1,1]),e.J(i,i,[-1,-1,0]),e.K(i,i,[2/this.width,2/this.height,1]),this.glCoordMatrix=i;let a=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),o=Math.min(this.elevation,this.minElevationForCurrentTile),s=a-o*this._pixelPerMeter/Math.cos(this._pitch),l=o<0?s:a,c=Math.PI/2+this._pitch,u=this._fov*(.5+t.y/this.height),h=Math.sin(u)*l/Math.sin(e.ac(Math.PI-c-u,.01,Math.PI-.01)),p=this.getHorizon(),f=2*Math.atan(p/this.cameraToCenterDistance)*(.5+t.y/(2*p)),d=Math.sin(f)*l/Math.sin(e.ac(Math.PI-c-f,.01,Math.PI-.01)),m=Math.min(h,d);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*m+l),this.nearZ=this.height/50,i=new Float64Array(16),e.b6(i,this._fov,this.width/this.height,this.nearZ,this.farZ),i[8]=2*-t.x/this.width,i[9]=2*t.y/this.height,this.projectionMatrix=e.ae(i),e.K(i,i,[1,-1,1]),e.J(i,i,[0,0,-this.cameraToCenterDistance]),e.b7(i,i,this._pitch),e.ad(i,i,this.angle),e.J(i,i,[-r,-n,0]),this.mercatorMatrix=e.K([],i,[this.worldSize,this.worldSize,this.worldSize]),e.K(i,i,[1,1,this._pixelPerMeter]),this.pixelMatrix=e.L(new Float64Array(16),this.labelPlaneMatrix,i),e.J(i,i,[0,0,-this.elevation]),this.modelViewProjectionMatrix=i,this.invModelViewProjectionMatrix=e.as([],i),this.fogMatrix=new Float64Array(16),e.b6(this.fogMatrix,this._fov,this.width/this.height,a,this.farZ),this.fogMatrix[8]=2*-t.x/this.width,this.fogMatrix[9]=2*t.y/this.height,e.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),e.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),e.b7(this.fogMatrix,this.fogMatrix,this._pitch),e.ad(this.fogMatrix,this.fogMatrix,this.angle),e.J(this.fogMatrix,this.fogMatrix,[-r,-n,0]),e.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),e.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=e.L(new Float64Array(16),this.labelPlaneMatrix,i);let g=this.width%2/2,y=this.height%2/2,v=Math.cos(this.angle),x=Math.sin(this.angle),_=r-Math.round(r)+v*g+x*y,b=n-Math.round(n)+v*y+x*g,w=new Float64Array(i);if(e.J(w,w,[_>.5?_-1:_,b>.5?b-1:b,0]),this.alignedModelViewProjectionMatrix=w,i=e.as(new Float64Array(16),this.pixelMatrix),!i)throw new Error("failed to invert matrix");this.pixelMatrixInverse=i,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let t=this.pointCoordinate(new e.P(0,0)),r=[t.x*this.worldSize,t.y*this.worldSize,0,1];return e.af(r,r,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let t=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.P(0,t))}getCameraQueryGeometry(t){let r=this.getCameraPoint();if(1===t.length)return[t[0],r];{let n=r.x,i=r.y,a=r.x,o=r.y;for(let e of t)n=Math.min(n,e.x),i=Math.min(i,e.y),a=Math.max(a,e.x),o=Math.max(o,e.y);return[new e.P(n,i),new e.P(a,i),new e.P(a,o),new e.P(n,o),new e.P(n,i)]}}lngLatToCameraDepth(t,r){let n=this.locationCoordinate(t),i=[n.x*this.worldSize,n.y*this.worldSize,r,1];return e.af(i,i,this.modelViewProjectionMatrix),i[2]/i[3]}}function Mn(t,e){let r,n=!1,i=null,a=null,o=()=>{i=null,n&&(t.apply(a,r),i=setTimeout(o,e),n=!1)};return(...t)=>(n=!0,a=this,r=t,i||o(),i)}class Sn{constructor(t){this._getCurrentHash=()=>{let t=window.location.hash.replace("#","");if(this._hashName){let e;return t.split("&").map((t=>t.split("="))).forEach((t=>{t[0]===this._hashName&&(e=t)})),(e&&e[1]||"").split("/")}return t.split("/")},this._onHashChange=()=>{let t=this._getCurrentHash();if(t.length>=3&&!t.some((t=>isNaN(t)))){let e=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(t[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+t[2],+t[1]],zoom:+t[0],bearing:e,pitch:+(t[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let t=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,t)},this._removeHash=()=>{let t=this._getCurrentHash();if(0===t.length)return;let e=t.join("/"),r=e;r.split("&").length>0&&(r=r.split("&")[0]),this._hashName&&(r=`${this._hashName}=${e}`);let n=window.location.hash.replace(r,"");n.startsWith("#&")?n=n.slice(0,1)+n.slice(2):"#"===n&&(n="");let i=window.location.href.replace(/(#.+)?$/,n);i=i.replace("&&","&"),window.history.replaceState(window.history.state,null,i)},this._updateHash=Mn(this._updateHashUnthrottled,300),this._hashName=t&&encodeURIComponent(t)}addTo(t){return this._map=t,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(t){let e=this._map.getCenter(),r=Math.round(100*this._map.getZoom())/100,n=Math.ceil((r*Math.LN2+Math.log(512/360/.5))/Math.LN10),i=Math.pow(10,n),a=Math.round(e.lng*i)/i,o=Math.round(e.lat*i)/i,s=this._map.getBearing(),l=this._map.getPitch(),c="";if(c+=t?`/${a}/${o}/${r}`:`${r}/${o}/${a}`,(s||l)&&(c+="/"+Math.round(10*s)/10),l&&(c+=`/${Math.round(l)}`),this._hashName){let t=this._hashName,e=!1,r=window.location.hash.slice(1).split("&").map((r=>{let n=r.split("=")[0];return n===t?(e=!0,`${n}=${c}`):r})).filter((t=>t));return e||r.push(`${t}=${c}`),`#${r.join("&")}`}return`#${c}`}}let En={linearity:.3,easing:e.b8(0,0,.3,1)},Cn=e.e({deceleration:2500,maxSpeed:1400},En),In=e.e({deceleration:20,maxSpeed:1400},En),Ln=e.e({deceleration:1e3,maxSpeed:360},En),Pn=e.e({deceleration:1e3,maxSpeed:90},En);class zn{constructor(t){this._map=t,this.clear()}clear(){this._inertiaBuffer=[]}record(t){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:a.now(),settings:t})}_drainInertiaBuffer(){let t=this._inertiaBuffer,e=a.now();for(;t.length>0&&e-t[0].time>160;)t.shift()}_onMoveEnd(t){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let r={zoom:0,bearing:0,pitch:0,pan:new e.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:t}of this._inertiaBuffer)r.zoom+=t.zoomDelta||0,r.bearing+=t.bearingDelta||0,r.pitch+=t.pitchDelta||0,t.panDelta&&r.pan._add(t.panDelta),t.around&&(r.around=t.around),t.pinchAround&&(r.pinchAround=t.pinchAround);let n=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,i={};if(r.pan.mag()){let a=On(r.pan.mag(),n,e.e({},Cn,t||{}));i.offset=r.pan.mult(a.amount/r.pan.mag()),i.center=this._map.transform.center,Dn(i,a)}if(r.zoom){let t=On(r.zoom,n,In);i.zoom=this._map.transform.zoom+t.amount,Dn(i,t)}if(r.bearing){let t=On(r.bearing,n,Ln);i.bearing=this._map.transform.bearing+e.ac(t.amount,-179,179),Dn(i,t)}if(r.pitch){let t=On(r.pitch,n,Pn);i.pitch=this._map.transform.pitch+t.amount,Dn(i,t)}if(i.zoom||i.bearing){let t=void 0===r.pinchAround?r.around:r.pinchAround;i.around=t?this._map.unproject(t):this._map.getCenter()}return this.clear(),e.e(i,{noMoveStart:!0})}}function Dn(t,e){(!t.duration||t.durationr.unproject(t))),l=a.reduce(((t,e,r,n)=>t.add(e.div(n.length))),new e.P(0,0));super(t,{points:a,point:l,lngLats:s,lngLat:r.unproject(l),originalEvent:n}),this._defaultPrevented=!1}}class Bn extends e.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(t,e,r){super(t,{originalEvent:r}),this._defaultPrevented=!1}}class jn{constructor(t,e){this._map=t,this._clickTolerance=e.clickTolerance}reset(){delete this._mousedownPos}wheel(t){return this._firePreventable(new Bn(t.type,this._map,t))}mousedown(t,e){return this._mousedownPos=e,this._firePreventable(new Rn(t.type,this._map,t))}mouseup(t){this._map.fire(new Rn(t.type,this._map,t))}click(t,e){this._mousedownPos&&this._mousedownPos.dist(e)>=this._clickTolerance||this._map.fire(new Rn(t.type,this._map,t))}dblclick(t){return this._firePreventable(new Rn(t.type,this._map,t))}mouseover(t){this._map.fire(new Rn(t.type,this._map,t))}mouseout(t){this._map.fire(new Rn(t.type,this._map,t))}touchstart(t){return this._firePreventable(new Fn(t.type,this._map,t))}touchmove(t){this._map.fire(new Fn(t.type,this._map,t))}touchend(t){this._map.fire(new Fn(t.type,this._map,t))}touchcancel(t){this._map.fire(new Fn(t.type,this._map,t))}_firePreventable(t){if(this._map.fire(t),t.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Nn{constructor(t){this._map=t}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(t){this._map.fire(new Rn(t.type,this._map,t))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Rn("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(t){this._delayContextMenu?this._contextMenuEvent=t:this._ignoreContextMenu||this._map.fire(new Rn(t.type,this._map,t)),this._map.listens("contextmenu")&&t.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Un{constructor(t){this._map=t}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(t){return this.transform.pointLocation(e.P.convert(t),this._map.terrain)}}class Vn{constructor(t,e){this._map=t,this._tr=new Un(t),this._el=t.getCanvasContainer(),this._container=t.getContainer(),this._clickTolerance=e.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(t,e){this.isEnabled()&&t.shiftKey&&0===t.button&&(o.disableDrag(),this._startPos=this._lastPos=e,this._active=!0)}mousemoveWindow(t,e){if(!this._active)return;let r=e;if(this._lastPos.equals(r)||!this._box&&r.dist(this._startPos)t.fitScreenCoordinates(n,i,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",t)}keydown(t){this._active&&27===t.keyCode&&(this.reset(),this._fireEvent("boxzoomcancel",t))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(o.remove(this._box),this._box=null),o.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(t,r){return this._map.fire(new e.k(t,{originalEvent:r}))}}function qn(t,e){if(t.length!==e.length)throw new Error(`The number of touches and points are not equal - touches ${t.length}, points ${e.length}`);let r={};for(let n=0;nthis.numTouches)&&(this.aborted=!0),this.aborted||(void 0===this.startTime&&(this.startTime=t.timeStamp),n.length===this.numTouches&&(this.centroid=function(t){let r=new e.P(0,0);for(let e of t)r._add(e);return r.div(t.length)}(r),this.touches=qn(n,r)))}touchmove(t,e,r){if(this.aborted||!this.centroid)return;let n=qn(r,e);for(let t in this.touches){let e=n[t];(!e||e.dist(this.touches[t])>30)&&(this.aborted=!0)}}touchend(t,e,r){if((!this.centroid||t.timeStamp-this.startTime>500)&&(this.aborted=!0),0===r.length){let t=!this.aborted&&this.centroid;if(this.reset(),t)return t}}}class Gn{constructor(t){this.singleTap=new Hn(t),this.numTaps=t.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(t,e,r){this.singleTap.touchstart(t,e,r)}touchmove(t,e,r){this.singleTap.touchmove(t,e,r)}touchend(t,e,r){let n=this.singleTap.touchend(t,e,r);if(n){let e=t.timeStamp-this.lastTime<500,r=!this.lastTap||this.lastTap.dist(n)<30;if(e&&r||this.reset(),this.count++,this.lastTime=t.timeStamp,this.lastTap=n,this.count===this.numTaps)return this.reset(),n}}}class Wn{constructor(t){this._tr=new Un(t),this._zoomIn=new Gn({numTouches:1,numTaps:2}),this._zoomOut=new Gn({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(t,e,r){this._zoomIn.touchstart(t,e,r),this._zoomOut.touchstart(t,e,r)}touchmove(t,e,r){this._zoomIn.touchmove(t,e,r),this._zoomOut.touchmove(t,e,r)}touchend(t,e,r){let n=this._zoomIn.touchend(t,e,r),i=this._zoomOut.touchend(t,e,r),a=this._tr;return n?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:a.zoom+1,around:a.unproject(n)},{originalEvent:t})}):i?(this._active=!0,t.preventDefault(),setTimeout((()=>this.reset()),0),{cameraAnimation:e=>e.easeTo({duration:300,zoom:a.zoom-1,around:a.unproject(i)},{originalEvent:t})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Zn{constructor(t){this._enabled=!!t.enable,this._moveStateManager=t.moveStateManager,this._clickTolerance=t.clickTolerance||1,this._moveFunction=t.move,this._activateOnStart=!!t.activateOnStart,t.assignEvents(this),this.reset()}reset(t){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(t)}_move(...t){let e=this._moveFunction(...t);if(e.bearingDelta||e.pitchDelta||e.around||e.panDelta)return this._active=!0,e}dragStart(t,e){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(t)&&(this._moveStateManager.startMove(t),this._lastPoint=e.length?e[0]:e,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(t,e){if(!this.isEnabled())return;let r=this._lastPoint;if(!r)return;if(t.preventDefault(),!this._moveStateManager.isValidMoveEvent(t))return void this.reset(t);let n=e.length?e[0]:e;return!this._moved&&n.dist(r){t.mousedown=t.dragStart,t.mousemoveWindow=t.dragMove,t.mouseup=t.dragEnd,t.contextmenu=t=>{t.preventDefault()}},Jn=({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:r=.8})=>{let n=new Xn({checkCorrectEvent:t=>0===o.mouseButton(t)&&t.ctrlKey||2===o.mouseButton(t)});return new Zn({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*r}),moveStateManager:n,enable:t,assignEvents:Kn})},Qn=({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:r=-.5})=>{let n=new Xn({checkCorrectEvent:t=>0===o.mouseButton(t)&&t.ctrlKey||2===o.mouseButton(t)});return new Zn({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*r}),moveStateManager:n,enable:t,assignEvents:Kn})};class ti{constructor(t,e){this._clickTolerance=t.clickTolerance||1,this._map=e,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new e.P(0,0)}_shouldBePrevented(t){return t<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(t,e,r){return this._calculateTransform(t,e,r)}touchmove(t,e,r){if(this._active){if(!this._shouldBePrevented(r.length))return t.preventDefault(),this._calculateTransform(t,e,r);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",t)}}touchend(t,e,r){this._calculateTransform(t,e,r),this._active&&this._shouldBePrevented(r.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(t,r,n){n.length>0&&(this._active=!0);let i=qn(n,r),a=new e.P(0,0),o=new e.P(0,0),s=0;for(let t in i){let e=i[t],r=this._touches[t];r&&(a._add(e),o._add(e.sub(r)),s++,i[t]=e)}if(this._touches=i,this._shouldBePrevented(s)||!o.mag())return;let l=o.div(s);return this._sum._add(l),this._sum.mag()Math.abs(t.x)}class li extends ei{constructor(t){super(),this._currentTouchCount=0,this._map=t}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(t,e,r){super.touchstart(t,e,r),this._currentTouchCount=r.length}_start(t){this._lastPoints=t,si(t[0].sub(t[1]))&&(this._valid=!1)}_move(t,e,r){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let n=t[0].sub(this._lastPoints[0]),i=t[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(n,i,r.timeStamp),this._valid?(this._lastPoints=t,this._active=!0,{pitchDelta:(n.y+i.y)/2*-.5}):void 0}gestureBeginsVertically(t,e,r){if(void 0!==this._valid)return this._valid;let n=t.mag()>=2,i=e.mag()>=2;if(!n&&!i)return;if(!n||!i)return void 0===this._firstMove&&(this._firstMove=r),r-this._firstMove<100&&void 0;let a=t.y>0==e.y>0;return si(t)&&si(e)&&a}}let ci={panStep:100,bearingStep:15,pitchStep:10};class ui{constructor(t){this._tr=new Un(t);let e=ci;this._panStep=e.panStep,this._bearingStep=e.bearingStep,this._pitchStep=e.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(t){if(t.altKey||t.ctrlKey||t.metaKey)return;let e=0,r=0,n=0,i=0,a=0;switch(t.keyCode){case 61:case 107:case 171:case 187:e=1;break;case 189:case 109:case 173:e=-1;break;case 37:t.shiftKey?r=-1:(t.preventDefault(),i=-1);break;case 39:t.shiftKey?r=1:(t.preventDefault(),i=1);break;case 38:t.shiftKey?n=1:(t.preventDefault(),a=-1);break;case 40:t.shiftKey?n=-1:(t.preventDefault(),a=1);break;default:return}return this._rotationDisabled&&(r=0,n=0),{cameraAnimation:o=>{let s=this._tr;o.easeTo({duration:300,easeId:"keyboardHandler",easing:hi,zoom:e?Math.round(s.zoom)+e*(t.shiftKey?2:1):s.zoom,bearing:s.bearing+r*this._bearingStep,pitch:s.pitch+n*this._pitchStep,offset:[-i*this._panStep,-a*this._panStep],center:s.center},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function hi(t){return t*(2-t)}let pi=4.000244140625;class fi{constructor(t,e){this._onTimeout=t=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(t)},this._map=t,this._tr=new Un(t),this._triggerRenderFrame=e,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(t){this._defaultZoomRate=t}setWheelZoomRate(t){this._wheelZoomRate=t}isEnabled(){return!!this._enabled}isActive(){return!!this._active||void 0!==this._finishTimeout}isZooming(){return!!this._zooming}enable(t){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!t&&"center"===t.around)}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(t){return!!this._map.cooperativeGestures.isEnabled()&&!(t.ctrlKey||this._map.cooperativeGestures.isBypassed(t))}wheel(t){if(!this.isEnabled())return;if(this._shouldBePrevented(t))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",t);let e=t.deltaMode===WheelEvent.DOM_DELTA_LINE?40*t.deltaY:t.deltaY,r=a.now(),n=r-(this._lastWheelEventTime||0);this._lastWheelEventTime=r,0!==e&&e%pi==0?this._type="wheel":0!==e&&Math.abs(e)<4?this._type="trackpad":n>400?(this._type=null,this._lastValue=e,this._timeout=setTimeout(this._onTimeout,40,t)):this._type||(this._type=Math.abs(n*e)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,e+=this._lastValue)),t.shiftKey&&e&&(e/=4),this._type&&(this._lastWheelEvent=t,this._delta-=e,this._active||this._start(t)),t.preventDefault()}_start(t){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let r=o.mousePos(this._map.getCanvas(),t),n=this._tr;this._around=r.y>n.transform.height/2-n.transform.getHorizon()?e.N.convert(this._aroundCenter?n.center:n.unproject(r)):e.N.convert(n.center),this._aroundPoint=n.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let t=this._tr.transform;if(0!==this._delta){let e="wheel"===this._type&&Math.abs(this._delta)>pi?this._wheelZoomRate:this._defaultZoomRate,r=2/(1+Math.exp(-Math.abs(this._delta*e)));this._delta<0&&0!==r&&(r=1/r);let n="number"==typeof this._targetZoom?t.zoomScale(this._targetZoom):t.scale;this._targetZoom=Math.min(t.maxZoom,Math.max(t.minZoom,t.scaleZoom(n*r))),"wheel"===this._type&&(this._startZoom=t.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let r,n="number"==typeof this._targetZoom?this._targetZoom:t.zoom,i=this._startZoom,o=this._easing,s=!1,l=a.now()-this._lastWheelEventTime;if("wheel"===this._type&&i&&o&&l){let t=Math.min(l/200,1),a=o(t);r=e.y.number(i,n,a),t<1?this._frameId||(this._frameId=!0):s=!0}else r=n,s=!0;return this._active=!0,s&&(this._active=!1,this._finishTimeout=setTimeout((()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout}),200)),{noInertia:!0,needsRenderFrame:!s,zoomDelta:r-t.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(t){let r=e.b9;if(this._prevEase){let t=this._prevEase,n=(a.now()-t.start)/t.duration,i=t.easing(n+.01)-t.easing(n),o=.27/Math.sqrt(i*i+1e-4)*.01,s=Math.sqrt(.0729-o*o);r=e.b8(o,s,.25,1)}return this._prevEase={start:a.now(),duration:t,easing:r},r}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class di{constructor(t,e){this._clickZoom=t,this._tapZoom=e}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class mi{constructor(t){this._tr=new Un(t),this.reset()}reset(){this._active=!1}dblclick(t,e){return t.preventDefault(),{cameraAnimation:r=>{r.easeTo({duration:300,zoom:this._tr.zoom+(t.shiftKey?-1:1),around:this._tr.unproject(e)},{originalEvent:t})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class gi{constructor(){this._tap=new Gn({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(t,e,r){if(!this._swipePoint)if(this._tapTime){let n=e[0],i=t.timeStamp-this._tapTime<500,a=this._tapPoint.dist(n)<30;i&&a?r.length>0&&(this._swipePoint=n,this._swipeTouch=r[0].identifier):this.reset()}else this._tap.touchstart(t,e,r)}touchmove(t,e,r){if(this._tapTime){if(this._swipePoint){if(r[0].identifier!==this._swipeTouch)return;let n=e[0],i=n.y-this._swipePoint.y;return this._swipePoint=n,t.preventDefault(),this._active=!0,{zoomDelta:i/128}}}else this._tap.touchmove(t,e,r)}touchend(t,e,r){if(this._tapTime)this._swipePoint&&0===r.length&&this.reset();else{let n=this._tap.touchend(t,e,r);n&&(this._tapTime=t.timeStamp,this._tapPoint=n)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class yi{constructor(t,e,r){this._el=t,this._mousePan=e,this._touchPan=r}enable(t){this._inertiaOptions=t||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class vi{constructor(t,e,r){this._pitchWithRotate=t.pitchWithRotate,this._mouseRotate=e,this._mousePitch=r}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class xi{constructor(t,e,r,n){this._el=t,this._touchZoom=e,this._touchRotate=r,this._tapDragZoom=n,this._rotationDisabled=!1,this._enabled=!0}enable(t){this._touchZoom.enable(t),this._rotationDisabled||this._touchRotate.enable(t),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class _i{constructor(t,e){this._bypassKey=-1!==navigator.userAgent.indexOf("Mac")?"metaKey":"ctrlKey",this._map=t,this._options=e,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let t=this._map.getCanvasContainer();t.classList.add("maplibregl-cooperative-gestures"),this._container=o.create("div","maplibregl-cooperative-gesture-screen",t);let e=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");"metaKey"===this._bypassKey&&(e=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let r=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),n=document.createElement("div");n.className="maplibregl-desktop-message",n.textContent=e,this._container.appendChild(n);let i=document.createElement("div");i.className="maplibregl-mobile-message",i.textContent=r,this._container.appendChild(i),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(o.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(t){return t[this._bypassKey]}notifyGestureBlocked(t,r){this._enabled&&(this._map.fire(new e.k("cooperativegestureprevented",{gestureType:t,originalEvent:r})),this._container.classList.add("maplibregl-show"),setTimeout((()=>{this._container.classList.remove("maplibregl-show")}),100))}}let bi=t=>t.zoom||t.drag||t.pitch||t.rotate;class wi extends e.k{}function Ti(t){return t.panDelta&&t.panDelta.mag()||t.zoomDelta||t.bearingDelta||t.pitchDelta}class Ai{constructor(t,e){this.handleWindowEvent=t=>{this.handleEvent(t,`${t.type}Window`)},this.handleEvent=(t,e)=>{if("blur"===t.type)return void this.stop(!0);this._updatingCamera=!0;let r="renderFrame"===t.type?void 0:t,n={needsRenderFrame:!1},i={},a={},s=t.touches,l=s?this._getMapTouches(s):void 0,c=l?o.touchPos(this._map.getCanvas(),l):o.mousePos(this._map.getCanvas(),t);for(let{handlerName:o,handler:s,allowed:u}of this._handlers){if(!s.isEnabled())continue;let h;this._blockedByActive(a,u,o)?s.reset():s[e||t.type]&&(h=s[e||t.type](t,c,l),this.mergeHandlerResult(n,i,h,o,r),h&&h.needsRenderFrame&&this._triggerRenderFrame()),(h||s.isActive())&&(a[o]=s)}let u={};for(let t in this._previousActiveHandlers)a[t]||(u[t]=r);this._previousActiveHandlers=a,(Object.keys(u).length||Ti(n))&&(this._changes.push([n,i,u]),this._triggerRenderFrame()),(Object.keys(a).length||Ti(n))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:h}=n;h&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],h(this._map))},this._map=t,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new zn(t),this._bearingSnap=e.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(e);let r=this._el;this._listeners=[[r,"touchstart",{passive:!0}],[r,"touchmove",{passive:!1}],[r,"touchend",void 0],[r,"touchcancel",void 0],[r,"mousedown",void 0],[r,"mousemove",void 0],[r,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[r,"mouseover",void 0],[r,"mouseout",void 0],[r,"dblclick",void 0],[r,"click",void 0],[r,"keydown",{capture:!1}],[r,"keyup",void 0],[r,"wheel",{passive:!1}],[r,"contextmenu",void 0],[window,"blur",void 0]];for(let[t,e,r]of this._listeners)o.addEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,r)}destroy(){for(let[t,e,r]of this._listeners)o.removeEventListener(t,e,t===document?this.handleWindowEvent:this.handleEvent,r)}_addDefaultHandlers(t){let e=this._map,r=e.getCanvasContainer();this._add("mapEvent",new jn(e,t));let n=e.boxZoom=new Vn(e,t);this._add("boxZoom",n),t.interactive&&t.boxZoom&&n.enable();let i=e.cooperativeGestures=new _i(e,t.cooperativeGestures);this._add("cooperativeGestures",i),t.cooperativeGestures&&i.enable();let a=new Wn(e),s=new mi(e);e.doubleClickZoom=new di(s,a),this._add("tapZoom",a),this._add("clickZoom",s),t.interactive&&t.doubleClickZoom&&e.doubleClickZoom.enable();let l=new gi;this._add("tapDragZoom",l);let c=e.touchPitch=new li(e);this._add("touchPitch",c),t.interactive&&t.touchPitch&&e.touchPitch.enable(t.touchPitch);let u=Jn(t),h=Qn(t);e.dragRotate=new vi(t,u,h),this._add("mouseRotate",u,["mousePitch"]),this._add("mousePitch",h,["mouseRotate"]),t.interactive&&t.dragRotate&&e.dragRotate.enable();let p=(({enable:t,clickTolerance:e})=>{let r=new Xn({checkCorrectEvent:t=>0===o.mouseButton(t)&&!t.ctrlKey});return new Zn({clickTolerance:e,move:(t,e)=>({around:e,panDelta:e.sub(t)}),activateOnStart:!0,moveStateManager:r,enable:t,assignEvents:Kn})})(t),f=new ti(t,e);e.dragPan=new yi(r,p,f),this._add("mousePan",p),this._add("touchPan",f,["touchZoom","touchRotate"]),t.interactive&&t.dragPan&&e.dragPan.enable(t.dragPan);let d=new oi,m=new ii;e.touchZoomRotate=new xi(r,m,d,l),this._add("touchRotate",d,["touchPan","touchZoom"]),this._add("touchZoom",m,["touchPan","touchRotate"]),t.interactive&&t.touchZoomRotate&&e.touchZoomRotate.enable(t.touchZoomRotate);let g=e.scrollZoom=new fi(e,(()=>this._triggerRenderFrame()));this._add("scrollZoom",g,["mousePan"]),t.interactive&&t.scrollZoom&&e.scrollZoom.enable(t.scrollZoom);let y=e.keyboard=new ui(e);this._add("keyboard",y),t.interactive&&t.keyboard&&e.keyboard.enable(),this._add("blockableMapEvent",new Nn(e))}_add(t,e,r){this._handlers.push({handlerName:t,handler:e,allowed:r}),this._handlersById[t]=e}stop(t){if(!this._updatingCamera){for(let{handler:t}of this._handlers)t.reset();this._inertia.clear(),this._fireEvents({},{},t),this._changes=[]}}isActive(){for(let{handler:t}of this._handlers)if(t.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!bi(this._eventsInProgress)||this.isZooming()}_blockedByActive(t,e,r){for(let n in t)if(n!==r&&(!e||e.indexOf(n)<0))return!0;return!1}_getMapTouches(t){let e=[];for(let r of t)this._el.contains(r.target)&&e.push(r);return e}mergeHandlerResult(t,r,n,i,a){if(!n)return;e.e(t,n);let o={handlerName:i,originalEvent:n.originalEvent||a};void 0!==n.zoomDelta&&(r.zoom=o),void 0!==n.panDelta&&(r.drag=o),void 0!==n.pitchDelta&&(r.pitch=o),void 0!==n.bearingDelta&&(r.rotate=o)}_applyChanges(){let t={},r={},n={};for(let[i,a,o]of this._changes)i.panDelta&&(t.panDelta=(t.panDelta||new e.P(0,0))._add(i.panDelta)),i.zoomDelta&&(t.zoomDelta=(t.zoomDelta||0)+i.zoomDelta),i.bearingDelta&&(t.bearingDelta=(t.bearingDelta||0)+i.bearingDelta),i.pitchDelta&&(t.pitchDelta=(t.pitchDelta||0)+i.pitchDelta),void 0!==i.around&&(t.around=i.around),void 0!==i.pinchAround&&(t.pinchAround=i.pinchAround),i.noInertia&&(t.noInertia=i.noInertia),e.e(r,a),e.e(n,o);this._updateMapTransform(t,r,n),this._changes=[]}_updateMapTransform(t,e,r){let n=this._map,i=n._getTransformForUpdate(),a=n.terrain;if(!(Ti(t)||a&&this._terrainMovement))return this._fireEvents(e,r,!0);let{panDelta:o,zoomDelta:s,bearingDelta:l,pitchDelta:c,around:u,pinchAround:h}=t;void 0!==h&&(u=h),n._stop(!0),u=u||n.transform.centerPoint;let p=i.pointLocation(o?u.sub(o):u);l&&(i.bearing+=l),c&&(i.pitch+=c),s&&(i.zoom+=s),a?this._terrainMovement||!e.drag&&!e.zoom?e.drag&&this._terrainMovement?i.center=i.pointLocation(i.centerPoint.sub(o)):i.setLocationAtPoint(p,u):(this._terrainMovement=!0,this._map._elevationFreeze=!0,i.setLocationAtPoint(p,u)):i.setLocationAtPoint(p,u),n._applyUpdatedTransform(i),this._map._update(),t.noInertia||this._inertia.record(t),this._fireEvents(e,r,!0)}_fireEvents(t,r,n){let i=bi(this._eventsInProgress),o=bi(t),s={};for(let e in t){let{originalEvent:r}=t[e];this._eventsInProgress[e]||(s[`${e}start`]=r),this._eventsInProgress[e]=t[e]}!i&&o&&this._fireEvent("movestart",o.originalEvent);for(let t in s)this._fireEvent(t,s[t]);o&&this._fireEvent("move",o.originalEvent);for(let e in t){let{originalEvent:r}=t[e];this._fireEvent(e,r)}let l,c={};for(let t in this._eventsInProgress){let{handlerName:e,originalEvent:n}=this._eventsInProgress[t];this._handlersById[e].isActive()||(delete this._eventsInProgress[t],l=r[e]||n,c[`${t}end`]=l)}for(let t in c)this._fireEvent(t,c[t]);let u=bi(this._eventsInProgress),h=(i||o)&&!u;if(h&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let t=this._map._getTransformForUpdate();t.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(t)}if(n&&h){this._updatingCamera=!0;let t=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),r=t=>0!==t&&-this._bearingSnap{delete this._frameId,this.handleEvent(new wi("renderFrame",{timeStamp:t})),this._applyChanges()}))}_triggerRenderFrame(){void 0===this._frameId&&(this._frameId=this._requestFrame())}}class ki extends e.E{constructor(t,e){super(),this._renderFrameCallback=()=>{let t=Math.min((a.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(t)),t<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=t,this._bearingSnap=e.bearingSnap,this.on("moveend",(()=>{delete this._requestedCameraState}))}getCenter(){return new e.N(this.transform.center.lng,this.transform.center.lat)}setCenter(t,e){return this.jumpTo({center:t},e)}panBy(t,r,n){return t=e.P.convert(t).mult(-1),this.panTo(this.transform.center,e.e({offset:t},r),n)}panTo(t,r,n){return this.easeTo(e.e({center:t},r),n)}getZoom(){return this.transform.zoom}setZoom(t,e){return this.jumpTo({zoom:t},e),this}zoomTo(t,r,n){return this.easeTo(e.e({zoom:t},r),n)}zoomIn(t,e){return this.zoomTo(this.getZoom()+1,t,e),this}zoomOut(t,e){return this.zoomTo(this.getZoom()-1,t,e),this}getBearing(){return this.transform.bearing}setBearing(t,e){return this.jumpTo({bearing:t},e),this}getPadding(){return this.transform.padding}setPadding(t,e){return this.jumpTo({padding:t},e),this}rotateTo(t,r,n){return this.easeTo(e.e({bearing:t},r),n)}resetNorth(t,r){return this.rotateTo(0,e.e({duration:1e3},t),r),this}resetNorthPitch(t,r){return this.easeTo(e.e({bearing:0,pitch:0,duration:1e3},t),r),this}snapToNorth(t,e){return Math.abs(this.getBearing()){if(this._zooming&&(i.zoom=e.y.number(o,y,n)),this._rotating&&(i.bearing=e.y.number(s,u,n)),this._pitching&&(i.pitch=e.y.number(l,h,n)),this._padding&&(i.interpolatePadding(c,p,n),d=i.centerPoint.add(f)),this.terrain&&!t.freezeElevation&&this._updateElevation(n),v)i.setLocationAtPoint(v,x);else{let t=i.zoomScale(i.zoom-o),e=y>o?Math.min(2,w):Math.max(.5,w),r=Math.pow(e,1-n),a=i.unproject(_.add(b.mult(n*r)).mult(t));i.setLocationAtPoint(i.renderWorldCopies?a.wrap():a,d)}this._applyUpdatedTransform(i),this._fireMoveEvents(r)}),(e=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(r,e)}),t),this}_prepareEase(t,r,n={}){this._moving=!0,r||n.moving||this.fire(new e.k("movestart",t)),this._zooming&&!n.zooming&&this.fire(new e.k("zoomstart",t)),this._rotating&&!n.rotating&&this.fire(new e.k("rotatestart",t)),this._pitching&&!n.pitching&&this.fire(new e.k("pitchstart",t))}_prepareElevation(t){this._elevationCenter=t,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(t,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(t){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let r=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(t<1&&r!==this._elevationTarget){let e=this._elevationTarget-this._elevationStart;this._elevationStart+=t*(e-(r-(e*t+this._elevationStart))/(1-t)),this._elevationTarget=r}this.transform.elevation=e.y.number(this._elevationStart,this._elevationTarget,t)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(t){let e=t.getCameraPosition(),r=this.terrain.getElevationForLngLatZoom(e.lngLat,t.zoom);if(e.altitudethis._elevateCameraIfInsideTerrain(t))),this.transformCameraUpdate&&e.push((t=>this.transformCameraUpdate(t))),!e.length)return;let r=t.clone();for(let t of e){let e=r.clone(),{center:n,zoom:i,pitch:a,bearing:o,elevation:s}=t(e);n&&(e.center=n),void 0!==i&&(e.zoom=i),void 0!==a&&(e.pitch=a),void 0!==o&&(e.bearing=o),void 0!==s&&(e.elevation=s),r.apply(e)}this.transform.apply(r)}_fireMoveEvents(t){this.fire(new e.k("move",t)),this._zooming&&this.fire(new e.k("zoom",t)),this._rotating&&this.fire(new e.k("rotate",t)),this._pitching&&this.fire(new e.k("pitch",t))}_afterEase(t,r){if(this._easeId&&r&&this._easeId===r)return;delete this._easeId;let n=this._zooming,i=this._rotating,a=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,n&&this.fire(new e.k("zoomend",t)),i&&this.fire(new e.k("rotateend",t)),a&&this.fire(new e.k("pitchend",t)),this.fire(new e.k("moveend",t))}flyTo(t,r){var n;if(!t.essential&&a.prefersReducedMotion){let n=e.M(t,["center","zoom","bearing","pitch","around"]);return this.jumpTo(n,r)}this.stop(),t=e.e({offset:[0,0],speed:1.2,curve:1.42,easing:e.b9},t);let i=this._getTransformForUpdate(),o=i.zoom,s=i.bearing,l=i.pitch,c=i.padding,u="bearing"in t?this._normalizeBearing(t.bearing,s):s,h="pitch"in t?+t.pitch:l,p="padding"in t?t.padding:i.padding,f=e.P.convert(t.offset),d=i.centerPoint.add(f),m=i.pointLocation(d),{center:g,zoom:y}=i.getConstrained(e.N.convert(t.center||m),null!==(n=t.zoom)&&void 0!==n?n:o);this._normalizeCenter(g,i);let v=i.zoomScale(y-o),x=i.project(m),_=i.project(g).sub(x),b=t.curve,w=Math.max(i.width,i.height),T=w/v,A=_.mag();if("minZoom"in t){let r=e.ac(Math.min(t.minZoom,o,y),i.minZoom,i.maxZoom),n=w/i.zoomScale(r-o);b=Math.sqrt(n/A*2)}let k=b*b;function M(t){let e=(T*T-w*w+(t?-1:1)*k*k*A*A)/(2*(t?T:w)*k*A);return Math.log(Math.sqrt(e*e+1)-e)}function S(t){return(Math.exp(t)-Math.exp(-t))/2}function E(t){return(Math.exp(t)+Math.exp(-t))/2}let C=M(!1),I=function(t){return E(C)/E(C+b*t)},L=function(t){return w*((E(C)*(S(e=C+b*t)/E(e))-S(C))/k)/A;var e},P=(M(!0)-C)/b;if(Math.abs(A)<1e-6||!isFinite(P)){if(Math.abs(w-T)<1e-6)return this.easeTo(t,r);let e=T0,I=t=>Math.exp(e*b*t)}return t.duration="duration"in t?+t.duration:1e3*P/("screenSpeed"in t?+t.screenSpeed/b:+t.speed),t.maxDuration&&t.duration>t.maxDuration&&(t.duration=0),this._zooming=!0,this._rotating=s!==u,this._pitching=h!==l,this._padding=!i.isPaddingEqual(p),this._prepareEase(r,!1),this.terrain&&this._prepareElevation(g),this._ease((n=>{let a=n*P,m=1/I(a);i.zoom=1===n?y:o+i.scaleZoom(m),this._rotating&&(i.bearing=e.y.number(s,u,n)),this._pitching&&(i.pitch=e.y.number(l,h,n)),this._padding&&(i.interpolatePadding(c,p,n),d=i.centerPoint.add(f)),this.terrain&&!t.freezeElevation&&this._updateElevation(n);let v=1===n?g:i.unproject(x.add(_.mult(L(a))).mult(m));i.setLocationAtPoint(i.renderWorldCopies?v.wrap():v,d),this._applyUpdatedTransform(i),this._fireMoveEvents(r)}),(()=>{this.terrain&&t.freezeElevation&&this._finalizeElevation(),this._afterEase(r)}),t),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(t,e){var r;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let t=this._onEaseEnd;delete this._onEaseEnd,t.call(this,e)}return t||null===(r=this.handlers)||void 0===r||r.stop(!1),this}_ease(t,e,r){!1===r.animate||0===r.duration?(t(1),e()):(this._easeStart=a.now(),this._easeOptions=r,this._onEaseFrame=t,this._onEaseEnd=e,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(t,r){t=e.b3(t,-180,180);let n=Math.abs(t-r);return Math.abs(t-360-r)180?-360:r<-180?360:0}queryTerrainElevation(t){return this.terrain?this.terrain.getElevationForLngLatZoom(e.N.convert(t),this.transform.tileZoom)-this.transform.elevation:null}}let Mi={compact:!0,customAttribution:'MapLibre'};class Si{constructor(t=Mi){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=t=>{!t||"metadata"!==t.sourceDataType&&"visibility"!==t.sourceDataType&&"style"!==t.dataType&&"terrain"!==t.type||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1===this._compact?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=t}getDefaultPosition(){return"bottom-right"}onAdd(t){return this._map=t,this._compact=this.options.compact,this._container=o.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=o.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){o.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(t,e){let r=this._map._getUIString(`AttributionControl.${e}`);t.title=r,t.setAttribute("aria-label",r)}_updateAttributions(){if(!this._map.style)return;let t=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?t=t.concat(this.options.customAttribution.map((t=>"string"!=typeof t?"":t))):"string"==typeof this.options.customAttribution&&t.push(this.options.customAttribution)),this._map.style.stylesheet){let t=this._map.style.stylesheet;this.styleOwner=t.owner,this.styleId=t.id}let e=this._map.style.sourceCaches;for(let r in e){let n=e[r];if(n.used||n.usedForTerrain){let e=n.getSource();e.attribution&&t.indexOf(e.attribution)<0&&t.push(e.attribution)}}t=t.filter((t=>String(t).trim())),t.sort(((t,e)=>t.length-e.length)),t=t.filter(((e,r)=>{for(let n=r+1;n=0)return!1;return!0}));let r=t.join(" | ");r!==this._attribHTML&&(this._attribHTML=r,t.length?(this._innerContainer.innerHTML=r,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Ei{constructor(t={}){this._updateCompact=()=>{let t=this._container.children;if(t.length){let e=t[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?!1!==this._compact&&e.classList.add("maplibregl-compact"):e.classList.remove("maplibregl-compact")}},this.options=t}getDefaultPosition(){return"bottom-left"}onAdd(t){this._map=t,this._compact=this.options&&this.options.compact,this._container=o.create("div","maplibregl-ctrl");let e=o.create("a","maplibregl-ctrl-logo");return e.target="_blank",e.rel="noopener nofollow",e.href="https://maplibre.org/",e.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),e.setAttribute("rel","noopener nofollow"),this._container.appendChild(e),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){o.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class Ci{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(t){let e=++this._id;return this._queue.push({callback:t,id:e,cancelled:!1}),e}remove(t){let e=this._currentlyRunning,r=e?this._queue.concat(e):this._queue;for(let e of r)if(e.id===t)return void(e.cancelled=!0)}run(t=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let e=this._currentlyRunning=this._queue;this._queue=[];for(let r of e)if(!r.cancelled&&(r.callback(t),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Ii=e.Y([{name:"a_pos3d",type:"Int16",components:3}]);class Li extends e.E{constructor(t){super(),this.sourceCache=t,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,t.usedForTerrain=!0,t.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(t,r){this.sourceCache.update(t,r),this._renderableTilesKeys=[];let n={};for(let i of t.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:r}))n[i.key]=!0,this._renderableTilesKeys.push(i.key),this._tiles[i.key]||(i.posMatrix=new Float64Array(16),e.aP(i.posMatrix,0,e.X,0,e.X,0,1),this._tiles[i.key]=new ct(i,this.tileSize));for(let t in this._tiles)n[t]||delete this._tiles[t]}freeRtt(t){for(let e in this._tiles){let r=this._tiles[e];(!t||r.tileID.equals(t)||r.tileID.isChildOf(t)||t.isChildOf(r.tileID))&&(r.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map((t=>this.getTileByID(t)))}getTileByID(t){return this._tiles[t]}getTerrainCoords(t){let r={};for(let n of this._renderableTilesKeys){let i=this._tiles[n].tileID;if(i.canonical.equals(t.canonical)){let i=t.clone();i.posMatrix=new Float64Array(16),e.aP(i.posMatrix,0,e.X,0,e.X,0,1),r[n]=i}else if(i.canonical.isChildOf(t.canonical)){let a=t.clone();a.posMatrix=new Float64Array(16);let o=i.canonical.z-t.canonical.z,s=i.canonical.x-(i.canonical.x>>o<>o<>o;e.aP(a.posMatrix,0,c,0,c,0,1),e.J(a.posMatrix,a.posMatrix,[-s*c,-l*c,0]),r[n]=a}else if(t.canonical.isChildOf(i.canonical)){let a=t.clone();a.posMatrix=new Float64Array(16);let o=t.canonical.z-i.canonical.z,s=t.canonical.x-(t.canonical.x>>o<>o<>o;e.aP(a.posMatrix,0,e.X,0,e.X,0,1),e.J(a.posMatrix,a.posMatrix,[s*c,l*c,0]),e.K(a.posMatrix,a.posMatrix,[1/2**o,1/2**o,0]),r[n]=a}}return r}getSourceTile(t,e){let r=this.sourceCache._source,n=t.overscaledZ-this.deltaZoom;if(n>r.maxzoom&&(n=r.maxzoom),n=r.minzoom&&(!i||!i.dem);)i=this.sourceCache.getTileByID(t.scaledTo(n--).key);return i}tilesAfterTime(t=Date.now()){return Object.values(this._tiles).filter((e=>e.timeAdded>=t))}}class Pi{constructor(t,e,r){this.painter=t,this.sourceCache=new Li(e),this.options=r,this.exaggeration="number"==typeof r.exaggeration?r.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(t,r,n,i=e.X){var a;if(!(r>=0&&r=0&&nt.canonical.z&&(t.canonical.z>=n?i=t.canonical.z-n:e.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let a=t.canonical.x-(t.canonical.x>>i<>i<>8<<4|t>>8,r[e+3]=0;let n=new e.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(r.buffer)),i=new w(t,n,t.gl.RGBA,{premultiply:!1});return i.bind(t.gl.NEAREST,t.gl.CLAMP_TO_EDGE),this._coordsTexture=i,i}pointCoordinate(t){this.painter.maybeDrawDepthAndCoords(!0);let r=new Uint8Array(4),n=this.painter.context,i=n.gl,a=Math.round(t.x*this.painter.pixelRatio/devicePixelRatio),o=Math.round(t.y*this.painter.pixelRatio/devicePixelRatio),s=Math.round(this.painter.height/devicePixelRatio);n.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),i.readPixels(a,s-o-1,1,1,i.RGBA,i.UNSIGNED_BYTE,r),n.bindFramebuffer.set(null);let l=r[0]+(r[2]>>4<<8),c=r[1]+((15&r[2])<<8),u=this.coordsIndex[255-r[3]],h=u&&this.sourceCache.getTileByID(u);if(!h)return null;let p=this._coordsTextureSize,f=(1<t.id!==e)),this._recentlyUsed.push(t.id)}stampObject(t){t.stamp=++this._stamp}getOrCreateFreeObject(){for(let t of this._recentlyUsed)if(!this._objects[t].inUse)return this._objects[t];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let t=this._createObject(this._objects.length);return this._objects.push(t),t}freeObject(t){t.inUse=!1}freeAllObjects(){for(let t of this._objects)this.freeObject(t)}isFull(){return!(this._objects.length!t.inUse))}}let Di={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class Oi{constructor(t,e){this.painter=t,this.terrain=e,this.pool=new zi(t.context,30,e.sourceCache.tileSize*e.qualityFactor)}destruct(){this.pool.destruct()}getTexture(t){return this.pool.getObjectForId(t.rtt[this._stacks.length-1].id).texture}prepareForRender(t,e){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=t._order.filter((r=>!t._layers[r].isHidden(e))),this._coordsDescendingInv={};for(let e in t.sourceCaches){this._coordsDescendingInv[e]={};let r=t.sourceCaches[e].getVisibleCoordinates();for(let t of r){let r=this.terrain.sourceCache.getTerrainCoords(t);for(let t in r)this._coordsDescendingInv[e][t]||(this._coordsDescendingInv[e][t]=[]),this._coordsDescendingInv[e][t].push(r[t])}}this._coordsDescendingInvStr={};for(let e of t._order){let r=t._layers[e],n=r.source;if(Di[r.type]&&!this._coordsDescendingInvStr[n]){this._coordsDescendingInvStr[n]={};for(let t in this._coordsDescendingInv[n])this._coordsDescendingInvStr[n][t]=this._coordsDescendingInv[n][t].map((t=>t.key)).sort().join()}}for(let t of this._renderableTiles)for(let e in this._coordsDescendingInvStr){let r=this._coordsDescendingInvStr[e][t.tileID.key];r&&r!==t.rttCoords[e]&&(t.rtt=[])}}renderLayer(t){if(t.isHidden(this.painter.transform.zoom))return!1;let r=t.type,n=this.painter,i=this._renderableLayerIds[this._renderableLayerIds.length-1]===t.id;if(Di[r]&&(this._prevType&&Di[this._prevType]||this._stacks.push([]),this._prevType=r,this._stacks[this._stacks.length-1].push(t.id),!i))return!0;if(Di[this._prevType]||Di[r]&&i){this._prevType=r;let t=this._stacks.length-1,i=this._stacks[t]||[];for(let r of this._renderableTiles){if(this.pool.isFull()&&(vn(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(r),r.rtt[t]){let e=this.pool.getObjectForId(r.rtt[t].id);if(e.stamp===r.rtt[t].stamp){this.pool.useObject(e);continue}}let a=this.pool.getOrCreateFreeObject();this.pool.useObject(a),this.pool.stampObject(a),r.rtt[t]={id:a.id,stamp:a.stamp},n.context.bindFramebuffer.set(a.fbo.framebuffer),n.context.clear({color:e.aM.transparent,stencil:0}),n.currentStencilSource=void 0;for(let t=0;t{t.touchstart=t.dragStart,t.touchmoveWindow=t.dragMove,t.touchend=t.dragEnd},Ui={showCompass:!0,showZoom:!0,visualizePitch:!1};class Vi{constructor(t,r,n=!1){this.mousedown=t=>{this.startMouse(e.e({},t,{ctrlKey:!0,preventDefault:()=>t.preventDefault()}),o.mousePos(this.element,t)),o.addEventListener(window,"mousemove",this.mousemove),o.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=t=>{this.moveMouse(t,o.mousePos(this.element,t))},this.mouseup=t=>{this.mouseRotate.dragEnd(t),this.mousePitch&&this.mousePitch.dragEnd(t),this.offTemp()},this.touchstart=t=>{1!==t.targetTouches.length?this.reset():(this._startPos=this._lastPos=o.touchPos(this.element,t.targetTouches)[0],this.startTouch(t,this._startPos),o.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),o.addEventListener(window,"touchend",this.touchend))},this.touchmove=t=>{1!==t.targetTouches.length?this.reset():(this._lastPos=o.touchPos(this.element,t.targetTouches)[0],this.moveTouch(t,this._lastPos))},this.touchend=t=>{0===t.targetTouches.length&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let i=t.dragRotate._mouseRotate.getClickTolerance(),a=t.dragRotate._mousePitch.getClickTolerance();this.element=r,this.mouseRotate=Jn({clickTolerance:i,enable:!0}),this.touchRotate=(({enable:t,clickTolerance:e,bearingDegreesPerPixelMoved:r=.8})=>{let n=new $n;return new Zn({clickTolerance:e,move:(t,e)=>({bearingDelta:(e.x-t.x)*r}),moveStateManager:n,enable:t,assignEvents:Ni})})({clickTolerance:i,enable:!0}),this.map=t,n&&(this.mousePitch=Qn({clickTolerance:a,enable:!0}),this.touchPitch=(({enable:t,clickTolerance:e,pitchDegreesPerPixelMoved:r=-.5})=>{let n=new $n;return new Zn({clickTolerance:e,move:(t,e)=>({pitchDelta:(e.y-t.y)*r}),moveStateManager:n,enable:t,assignEvents:Ni})})({clickTolerance:a,enable:!0})),o.addEventListener(r,"mousedown",this.mousedown),o.addEventListener(r,"touchstart",this.touchstart,{passive:!1}),o.addEventListener(r,"touchcancel",this.reset)}startMouse(t,e){this.mouseRotate.dragStart(t,e),this.mousePitch&&this.mousePitch.dragStart(t,e),o.disableDrag()}startTouch(t,e){this.touchRotate.dragStart(t,e),this.touchPitch&&this.touchPitch.dragStart(t,e),o.disableDrag()}moveMouse(t,e){let r=this.map,{bearingDelta:n}=this.mouseRotate.dragMove(t,e)||{};if(n&&r.setBearing(r.getBearing()+n),this.mousePitch){let{pitchDelta:n}=this.mousePitch.dragMove(t,e)||{};n&&r.setPitch(r.getPitch()+n)}}moveTouch(t,e){let r=this.map,{bearingDelta:n}=this.touchRotate.dragMove(t,e)||{};if(n&&r.setBearing(r.getBearing()+n),this.touchPitch){let{pitchDelta:n}=this.touchPitch.dragMove(t,e)||{};n&&r.setPitch(r.getPitch()+n)}}off(){let t=this.element;o.removeEventListener(t,"mousedown",this.mousedown),o.removeEventListener(t,"touchstart",this.touchstart,{passive:!1}),o.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),o.removeEventListener(window,"touchend",this.touchend),o.removeEventListener(t,"touchcancel",this.reset),this.offTemp()}offTemp(){o.enableDrag(),o.removeEventListener(window,"mousemove",this.mousemove),o.removeEventListener(window,"mouseup",this.mouseup),o.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),o.removeEventListener(window,"touchend",this.touchend)}}function qi(t,r,n){let i=new e.N(t.lng,t.lat);if(t=new e.N(t.lng,t.lat),r){let i=new e.N(t.lng-360,t.lat),a=new e.N(t.lng+360,t.lat),o=n.locationPoint(t).distSqr(r);n.locationPoint(i).distSqr(r)180;){let e=n.locationPoint(t);if(e.x>=0&&e.y>=0&&e.x<=n.width&&e.y<=n.height)break;t.lng>n.center.lng?t.lng-=360:t.lng+=360}return t.lng!==i.lng&&n.locationPoint(t).y>n.height/2-n.getHorizon()?t:i}let Hi={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Gi(t,e,r){let n=t.classList;for(let t in Hi)n.remove(`maplibregl-${r}-anchor-${t}`);n.add(`maplibregl-${r}-anchor-${e}`)}class Wi extends e.E{constructor(t){if(super(),this._onKeyPress=t=>{let e=t.code,r=t.charCode||t.keyCode;"Space"!==e&&"Enter"!==e&&32!==r&&13!==r||this.togglePopup()},this._onMapClick=t=>{let e=t.originalEvent.target,r=this._element;this._popup&&(e===r||r.contains(e))&&this.togglePopup()},this._update=t=>{var e;if(!this._map)return;let r=this._map.loaded()&&!this._map.isMoving();("terrain"===t?.type||"render"===t?.type&&!r)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?qi(this._lngLat,this._flatPos,this._map.transform):null===(e=this._lngLat)||void 0===e?void 0:e.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let n="";"viewport"===this._rotationAlignment||"auto"===this._rotationAlignment?n=`rotateZ(${this._rotation}deg)`:"map"===this._rotationAlignment&&(n=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let i="";"viewport"===this._pitchAlignment||"auto"===this._pitchAlignment?i="rotateX(0deg)":"map"===this._pitchAlignment&&(i=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||t&&"moveend"!==t.type||(this._pos=this._pos.round()),o.setTransform(this._element,`${Hi[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${i} ${n}`),a.frameAsync(new AbortController).then((()=>{this._updateOpacity(t&&"moveend"===t.type)})).catch((()=>{}))},this._onMove=t=>{if(!this._isDragging){let e=this._clickTolerance||this._map._clickTolerance;this._isDragging=t.point.dist(this._pointerdownPos)>=e}this._isDragging&&(this._pos=t.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none","pending"===this._state&&(this._state="active",this.fire(new e.k("dragstart"))),this.fire(new e.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),"active"===this._state&&this.fire(new e.k("dragend")),this._state="inactive"},this._addDragHandler=t=>{this._element.contains(t.originalEvent.target)&&(t.preventDefault(),this._positionDelta=t.point.sub(this._pos).add(this._offset),this._pointerdownPos=t.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=t&&t.anchor||"center",this._color=t&&t.color||"#3FB1CE",this._scale=t&&t.scale||1,this._draggable=t&&t.draggable||!1,this._clickTolerance=t&&t.clickTolerance||0,this._subpixelPositioning=t&&t.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=t&&t.rotation||0,this._rotationAlignment=t&&t.rotationAlignment||"auto",this._pitchAlignment=t&&t.pitchAlignment&&"auto"!==t.pitchAlignment?t.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(t?.opacity,t?.opacityWhenCovered),t&&t.element)this._element=t.element,this._offset=e.P.convert(t&&t.offset||[0,0]);else{this._defaultMarker=!0,this._element=o.create("div");let r=o.createNS("http://www.w3.org/2000/svg","svg"),n=41,i=27;r.setAttributeNS(null,"display","block"),r.setAttributeNS(null,"height",`${n}px`),r.setAttributeNS(null,"width",`${i}px`),r.setAttributeNS(null,"viewBox",`0 0 ${i} ${n}`);let a=o.createNS("http://www.w3.org/2000/svg","g");a.setAttributeNS(null,"stroke","none"),a.setAttributeNS(null,"stroke-width","1"),a.setAttributeNS(null,"fill","none"),a.setAttributeNS(null,"fill-rule","evenodd");let s=o.createNS("http://www.w3.org/2000/svg","g");s.setAttributeNS(null,"fill-rule","nonzero");let l=o.createNS("http://www.w3.org/2000/svg","g");l.setAttributeNS(null,"transform","translate(3.0, 29.0)"),l.setAttributeNS(null,"fill","#000000");let c=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let t of c){let e=o.createNS("http://www.w3.org/2000/svg","ellipse");e.setAttributeNS(null,"opacity","0.04"),e.setAttributeNS(null,"cx","10.5"),e.setAttributeNS(null,"cy","5.80029008"),e.setAttributeNS(null,"rx",t.rx),e.setAttributeNS(null,"ry",t.ry),l.appendChild(e)}let u=o.createNS("http://www.w3.org/2000/svg","g");u.setAttributeNS(null,"fill",this._color);let h=o.createNS("http://www.w3.org/2000/svg","path");h.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),u.appendChild(h);let p=o.createNS("http://www.w3.org/2000/svg","g");p.setAttributeNS(null,"opacity","0.25"),p.setAttributeNS(null,"fill","#000000");let f=o.createNS("http://www.w3.org/2000/svg","path");f.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),p.appendChild(f);let d=o.createNS("http://www.w3.org/2000/svg","g");d.setAttributeNS(null,"transform","translate(6.0, 7.0)"),d.setAttributeNS(null,"fill","#FFFFFF");let m=o.createNS("http://www.w3.org/2000/svg","g");m.setAttributeNS(null,"transform","translate(8.0, 8.0)");let g=o.createNS("http://www.w3.org/2000/svg","circle");g.setAttributeNS(null,"fill","#000000"),g.setAttributeNS(null,"opacity","0.25"),g.setAttributeNS(null,"cx","5.5"),g.setAttributeNS(null,"cy","5.5"),g.setAttributeNS(null,"r","5.4999962");let y=o.createNS("http://www.w3.org/2000/svg","circle");y.setAttributeNS(null,"fill","#FFFFFF"),y.setAttributeNS(null,"cx","5.5"),y.setAttributeNS(null,"cy","5.5"),y.setAttributeNS(null,"r","5.4999962"),m.appendChild(g),m.appendChild(y),s.appendChild(l),s.appendChild(u),s.appendChild(p),s.appendChild(d),s.appendChild(m),r.appendChild(s),r.setAttributeNS(null,"height",n*this._scale+"px"),r.setAttributeNS(null,"width",i*this._scale+"px"),this._element.appendChild(r),this._offset=e.P.convert(t&&t.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",(t=>{t.preventDefault()})),this._element.addEventListener("mousedown",(t=>{t.preventDefault()})),Gi(this._element,this._anchor,"marker"),t&&t.className)for(let e of t.className.split(" "))this._element.classList.add(e);this._popup=null}addTo(t){return this.remove(),this._map=t,this._element.setAttribute("aria-label",t._getUIString("Marker.Title")),t.getCanvasContainer().appendChild(this._element),t.on("move",this._update),t.on("moveend",this._update),t.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),o.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.N.convert(t),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(t){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),t){if(!("offset"in t.options)){let e=Math.abs(13.5)/Math.SQRT2;t.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[e,-1*(24.6+e)],"bottom-right":[-e,-1*(24.6+e)],left:[13.5,-24.6],right:[-13.5,-24.6]}:this._offset}this._popup=t,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(t){return this._subpixelPositioning=t,this}getPopup(){return this._popup}togglePopup(){let t=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:t?(t.isOpen()?t.remove():(t.setLngLat(this._lngLat),t.addTo(this._map)),this):this}_updateOpacity(t=!1){var r,n;if(null===(r=this._map)||void 0===r||!r.terrain)return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(t)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout((()=>{this._opacityTimeout=null}),100)}let i=this._map,a=i.terrain.depthAtPoint(this._pos),o=i.terrain.getElevationForLngLatZoom(this._lngLat,i.transform.tileZoom);if(i.transform.lngLatToCameraDepth(this._lngLat,o)-a<.006)return void(this._element.style.opacity=this._opacity);let s=-this._offset.y/i.transform._pixelPerMeter,l=Math.sin(i.getPitch()*Math.PI/180)*s,c=i.terrain.depthAtPoint(new e.P(this._pos.x,this._pos.y-this._offset.y)),u=i.transform.lngLatToCameraDepth(this._lngLat,o+l)-c>.006;!(null===(n=this._popup)||void 0===n)&&n.isOpen()&&u&&this._popup.remove(),this._element.style.opacity=u?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(t){return this._offset=e.P.convert(t),this._update(),this}addClassName(t){this._element.classList.add(t)}removeClassName(t){this._element.classList.remove(t)}toggleClassName(t){return this._element.classList.toggle(t)}setDraggable(t){return this._draggable=!!t,this._map&&(t?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(t){return this._rotation=t||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(t){return this._rotationAlignment=t||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(t){return this._pitchAlignment=t&&"auto"!==t?t:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(t,e){return void 0===t&&void 0===e&&(this._opacity="1",this._opacityWhenCovered="0.2"),void 0!==t&&(this._opacity=t),void 0!==e&&(this._opacityWhenCovered=e),this._map&&this._updateOpacity(!0),this}}let Zi={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},Yi=0,Xi=!1,$i={maxWidth:100,unit:"metric"};function Ki(t,e,r){let n=r&&r.maxWidth||100,i=t._container.clientHeight/2,a=t.unproject([0,i]),o=t.unproject([n,i]),s=a.distanceTo(o);if(r&&"imperial"===r.unit){let r=3.2808*s;r>5280?Ji(e,n,r/5280,t._getUIString("ScaleControl.Miles")):Ji(e,n,r,t._getUIString("ScaleControl.Feet"))}else r&&"nautical"===r.unit?Ji(e,n,s/1852,t._getUIString("ScaleControl.NauticalMiles")):s>=1e3?Ji(e,n,s/1e3,t._getUIString("ScaleControl.Kilometers")):Ji(e,n,s,t._getUIString("ScaleControl.Meters"))}function Ji(t,e,r,n){let i=function(t){let e=Math.pow(10,`${Math.floor(t)}`.length-1),r=t/e;return r=r>=10?10:r>=5?5:r>=3?3:r>=2?2:r>=1?1:function(t){let e=Math.pow(10,Math.ceil(-Math.log(t)/Math.LN10));return Math.round(t*e)/e}(r),e*r}(r);t.style.width=e*(i/r)+"px",t.innerHTML=`${i} ${n}`}let Qi={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},ta=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function ea(t){if(t){if("number"==typeof t){let r=Math.round(Math.abs(t)/Math.SQRT2);return{center:new e.P(0,0),top:new e.P(0,t),"top-left":new e.P(r,r),"top-right":new e.P(-r,r),bottom:new e.P(0,-t),"bottom-left":new e.P(r,-r),"bottom-right":new e.P(-r,-r),left:new e.P(t,0),right:new e.P(-t,0)}}if(t instanceof e.P||Array.isArray(t)){let r=e.P.convert(t);return{center:r,top:r,"top-left":r,"top-right":r,bottom:r,"bottom-left":r,"bottom-right":r,left:r,right:r}}return{center:e.P.convert(t.center||[0,0]),top:e.P.convert(t.top||[0,0]),"top-left":e.P.convert(t["top-left"]||[0,0]),"top-right":e.P.convert(t["top-right"]||[0,0]),bottom:e.P.convert(t.bottom||[0,0]),"bottom-left":e.P.convert(t["bottom-left"]||[0,0]),"bottom-right":e.P.convert(t["bottom-right"]||[0,0]),left:e.P.convert(t.left||[0,0]),right:e.P.convert(t.right||[0,0])}}return ea(new e.P(0,0))}let ra=r;t.AJAXError=e.bh,t.Evented=e.E,t.LngLat=e.N,t.MercatorCoordinate=e.Z,t.Point=e.P,t.addProtocol=e.bi,t.config=e.a,t.removeProtocol=e.bj,t.AttributionControl=Si,t.BoxZoomHandler=Vn,t.CanvasSource=rt,t.CooperativeGesturesHandler=_i,t.DoubleClickZoomHandler=di,t.DragPanHandler=yi,t.DragRotateHandler=vi,t.EdgeInsets=Tn,t.FullscreenControl=class extends e.E{constructor(t={}){super(),this._onFullscreenChange=()=>{var t;let e=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;null!==(t=e?.shadowRoot)&&void 0!==t&&t.fullscreenElement;)e=e.shadowRoot.fullscreenElement;e===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,t&&t.container&&(t.container instanceof HTMLElement?this._container=t.container:e.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(t){return this._map=t,this._container||(this._container=this._map.getContainer()),this._controlContainer=o.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){o.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let t=this._fullscreenButton=o.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);o.create("span","maplibregl-ctrl-icon",t).setAttribute("aria-hidden","true"),t.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let t=this._getTitle();this._fullscreenButton.setAttribute("aria-label",t),this._fullscreenButton.title=t}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new e.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new e.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},t.GeoJSONSource=J,t.GeolocateControl=class extends e.E{constructor(t){super(),this._onSuccess=t=>{if(this._map){if(this._isOutOfMapMaxBounds(t))return this._setErrorState(),this.fire(new e.k("outofmaxbounds",t)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=t,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&"OFF"!==this._watchState&&this._updateMarker(t),this.options.trackUserLocation&&"ACTIVE_LOCK"!==this._watchState||this._updateCamera(t),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new e.k("geolocate",t)),this._finish()}},this._updateCamera=t=>{let r=new e.N(t.coords.longitude,t.coords.latitude),n=t.coords.accuracy,i=this._map.getBearing(),a=e.e({bearing:i},this.options.fitBoundsOptions),o=Z.fromLngLat(r,n);this._map.fitBounds(o,a,{geolocateSource:!0})},this._updateMarker=t=>{if(t){let r=new e.N(t.coords.longitude,t.coords.latitude);this._accuracyCircleMarker.setLngLat(r).addTo(this._map),this._userLocationDotMarker.setLngLat(r).addTo(this._map),this._accuracy=t.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=t=>{if(this._map){if(this.options.trackUserLocation)if(1===t.code){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t),void 0!==this._geolocationWatchID&&this._clearWatch()}else{if(3===t.code&&Xi)return;this._setErrorState()}"OFF"!==this._watchState&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new e.k("error",t)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this._geolocateButton=o.create("button","maplibregl-ctrl-geolocate",this._container),o.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=t=>{if(this._map){if(!1===t){e.w("Geolocation support is not available so the GeolocateControl will be disabled.");let t=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}else{let t=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=t,this._geolocateButton.setAttribute("aria-label",t)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new Wi({element:this._dotElement}),this._circleElement=o.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Wi({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",(()=>this.trigger())),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",(t=>{t.geolocateSource||"ACTIVE_LOCK"!==this._watchState||t.originalEvent&&"resize"===t.originalEvent.type||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new e.k("trackuserlocationend")),this.fire(new e.k("userlocationlostfocus")))}))}},this.options=e.e({},Zi,t)}onAdd(t){return this._map=t,this._container=o.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return e._(this,arguments,void 0,(function*(t=!1){if(void 0!==Ri&&!t)return Ri;if(void 0===window.navigator.permissions)return Ri=!!window.navigator.geolocation,Ri;try{Ri="denied"!==(yield window.navigator.permissions.query({name:"geolocation"})).state}catch{Ri=!!window.navigator.geolocation}return Ri}))}().then((t=>this._finishSetupUI(t))),this._container}onRemove(){void 0!==this._geolocationWatchID&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),o.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Yi=0,Xi=!1}_isOutOfMapMaxBounds(t){let e=this._map.getMaxBounds(),r=t.coords;return e&&(r.longitudee.getEast()||r.latitudee.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let t=this._map.getBounds(),e=t.getSouthEast(),r=t.getNorthEast(),n=e.distanceTo(r),i=Math.ceil(this._accuracy/(n/this._map._container.clientHeight)*2);this._circleElement.style.width=`${i}px`,this._circleElement.style.height=`${i}px`}trigger(){if(!this._setup)return e.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new e.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Yi--,Xi=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new e.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.k("trackuserlocationstart")),this.fire(new e.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if("OFF"===this._watchState&&void 0!==this._geolocationWatchID)this._clearWatch();else if(void 0===this._geolocationWatchID){let t;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Yi++,Yi>1?(t={maximumAge:6e5,timeout:0},Xi=!0):(t=this.options.positionOptions,Xi=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,t)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},t.Hash=Sn,t.ImageSource=tt,t.KeyboardHandler=ui,t.LngLatBounds=Z,t.LogoControl=Ei,t.Map=class extends ki{constructor(t){e.bf.mark(e.bg.create);let r=Object.assign(Object.assign({},ji),t);if(null!=r.minZoom&&null!=r.maxZoom&&r.minZoom>r.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(null!=r.minPitch&&null!=r.maxPitch&&r.minPitch>r.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(null!=r.minPitch&&r.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(null!=r.maxPitch&&r.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new kn(r.minZoom,r.maxZoom,r.minPitch,r.maxPitch,r.renderWorldCopies),{bearingSnap:r.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new Ci,this._controls=[],this._mapId=e.a4(),this._contextLost=t=>{t.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new e.k("webglcontextlost",{originalEvent:t}))},this._contextRestored=t=>{this._setupPainter(),this.resize(),this._update(),this.fire(new e.k("webglcontextrestored",{originalEvent:t}))},this._onMapScroll=t=>{if(t.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=r.interactive,this._maxTileCacheSize=r.maxTileCacheSize,this._maxTileCacheZoomLevels=r.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=!0===r.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=!0===r.preserveDrawingBuffer,this._antialias=!0===r.antialias,this._trackResize=!0===r.trackResize,this._bearingSnap=r.bearingSnap,this._refreshExpiredTiles=!0===r.refreshExpiredTiles,this._fadeDuration=r.fadeDuration,this._crossSourceCollisions=!0===r.crossSourceCollisions,this._collectResourceTiming=!0===r.collectResourceTiming,this._locale=Object.assign(Object.assign({},Fi),r.locale),this._clickTolerance=r.clickTolerance,this._overridePixelRatio=r.pixelRatio,this._maxCanvasSize=r.maxCanvasSize,this.transformCameraUpdate=r.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=!0===r.cancelPendingTileRequestsWhileZooming,this._imageQueueHandle=f.addThrottleControl((()=>this.isMoving())),this._requestManager=new d(r.transformRequest),"string"==typeof r.container){if(this._container=document.getElementById(r.container),!this._container)throw new Error(`Container '${r.container}' not found.`)}else{if(!(r.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=r.container}if(r.maxBounds&&this.setMaxBounds(r.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",(()=>this._update(!1))).on("moveend",(()=>this._update(!1))).on("zoom",(()=>this._update(!0))).on("terrain",(()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)})).once("idle",(()=>{this._idleTriggered=!0})),typeof window<"u"){addEventListener("online",this._onWindowOnline,!1);let t=!1,e=Mn((t=>{this._trackResize&&!this._removed&&(this.resize(t),this.redraw())}),50);this._resizeObserver=new ResizeObserver((r=>{t?e(r):t=!0})),this._resizeObserver.observe(this._container)}this.handlers=new Ai(this,r),this._hash=r.hash&&new Sn("string"==typeof r.hash&&r.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:r.center,zoom:r.zoom,bearing:r.bearing,pitch:r.pitch}),r.bounds&&(this.resize(),this.fitBounds(r.bounds,e.e({},r.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=r.localIdeographFontFamily,this._validateStyle=r.validateStyle,r.style&&this.setStyle(r.style,{localIdeographFontFamily:r.localIdeographFontFamily}),r.attributionControl&&this.addControl(new Si("boolean"==typeof r.attributionControl?void 0:r.attributionControl)),r.maplibreLogo&&this.addControl(new Ei,r.logoPosition),this.on("style.load",(()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)})),this.on("data",(t=>{this._update("style"===t.dataType),this.fire(new e.k(`${t.dataType}data`,t))})),this.on("dataloading",(t=>{this.fire(new e.k(`${t.dataType}dataloading`,t))})),this.on("dataabort",(t=>{this.fire(new e.k("sourcedataabort",t))}))}_getMapId(){return this._mapId}addControl(t,r){if(void 0===r&&(r=t.getDefaultPosition?t.getDefaultPosition():"top-right"),!t||!t.onAdd)return this.fire(new e.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let n=t.onAdd(this);this._controls.push(t);let i=this._controlPositions[r];return-1!==r.indexOf("bottom")?i.insertBefore(n,i.firstChild):i.appendChild(n),this}removeControl(t){if(!t||!t.onRemove)return this.fire(new e.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let r=this._controls.indexOf(t);return r>-1&&this._controls.splice(r,1),t.onRemove(this),this}hasControl(t){return this._controls.indexOf(t)>-1}calculateCameraOptionsFromTo(t,e,r,n){return null==n&&this.terrain&&(n=this.terrain.getElevationForLngLatZoom(r,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(t,e,r,n)}resize(t){var r;let n=this._containerDimensions(),i=n[0],a=n[1],o=this._getClampedPixelRatio(i,a);if(this._resizeCanvas(i,a,o),this.painter.resize(i,a,o),this.painter.overLimit()){let t=this.painter.context.gl;this._maxCanvasSize=[t.drawingBufferWidth,t.drawingBufferHeight];let e=this._getClampedPixelRatio(i,a);this._resizeCanvas(i,a,e),this.painter.resize(i,a,e)}this.transform.resize(i,a),null===(r=this._requestedCameraState)||void 0===r||r.resize(i,a);let s=!this._moving;return s&&(this.stop(),this.fire(new e.k("movestart",t)).fire(new e.k("move",t))),this.fire(new e.k("resize",t)),s&&this.fire(new e.k("moveend",t)),this}_getClampedPixelRatio(t,e){let{0:r,1:n}=this._maxCanvasSize,i=this.getPixelRatio(),a=t*i,o=e*i;return Math.min(a>r?r/a:1,o>n?n/o:1)*i}getPixelRatio(){var t;return null!==(t=this._overridePixelRatio)&&void 0!==t?t:devicePixelRatio}setPixelRatio(t){this._overridePixelRatio=t,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(t){return this.transform.setMaxBounds(Z.convert(t)),this._update()}setMinZoom(t){if((t=t??-2)>=-2&&t<=this.transform.maxZoom)return this.transform.minZoom=t,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=t,this._update(),this.getZoom()>t&&this.setZoom(t),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(t){if((t=t??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(t>=0&&t<=this.transform.maxPitch)return this.transform.minPitch=t,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(t>=this.transform.minPitch)return this.transform.maxPitch=t,this._update(),this.getPitch()>t&&this.setPitch(t),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(t){return this.transform.renderWorldCopies=t,this._update()}project(t){return this.transform.locationPoint(e.N.convert(t),this.style&&this.terrain)}unproject(t){return this.transform.pointLocation(e.P.convert(t),this.terrain)}isMoving(){var t;return this._moving||(null===(t=this.handlers)||void 0===t?void 0:t.isMoving())}isZooming(){var t;return this._zooming||(null===(t=this.handlers)||void 0===t?void 0:t.isZooming())}isRotating(){var t;return this._rotating||(null===(t=this.handlers)||void 0===t?void 0:t.isRotating())}_createDelegatedListener(t,e,r){if("mouseenter"===t||"mouseover"===t){let n=!1;return{layers:e,listener:r,delegates:{mousemove:i=>{let a=e.filter((t=>this.getLayer(t))),o=0!==a.length?this.queryRenderedFeatures(i.point,{layers:a}):[];o.length?n||(n=!0,r.call(this,new Rn(t,this,i.originalEvent,{features:o}))):n=!1},mouseout:()=>{n=!1}}}}if("mouseleave"===t||"mouseout"===t){let n=!1;return{layers:e,listener:r,delegates:{mousemove:i=>{let a=e.filter((t=>this.getLayer(t)));(0!==a.length?this.queryRenderedFeatures(i.point,{layers:a}):[]).length?n=!0:n&&(n=!1,r.call(this,new Rn(t,this,i.originalEvent)))},mouseout:e=>{n&&(n=!1,r.call(this,new Rn(t,this,e.originalEvent)))}}}}{let n=t=>{let n=e.filter((t=>this.getLayer(t))),i=0!==n.length?this.queryRenderedFeatures(t.point,{layers:n}):[];i.length&&(t.features=i,r.call(this,t),delete t.features)};return{layers:e,listener:r,delegates:{[t]:n}}}}_saveDelegatedListener(t,e){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[t]=this._delegatedListeners[t]||[],this._delegatedListeners[t].push(e)}_removeDelegatedListener(t,e,r){if(!this._delegatedListeners||!this._delegatedListeners[t])return;let n=this._delegatedListeners[t];for(let t=0;te.includes(t)))){for(let t in i.delegates)this.off(t,i.delegates[t]);return void n.splice(t,1)}}}on(t,e,r){if(void 0===r)return super.on(t,e);let n=this._createDelegatedListener(t,"string"==typeof e?[e]:e,r);this._saveDelegatedListener(t,n);for(let t in n.delegates)this.on(t,n.delegates[t]);return this}once(t,e,r){if(void 0===r)return super.once(t,e);let n="string"==typeof e?[e]:e,i=this._createDelegatedListener(t,n,r);for(let e in i.delegates){let a=i.delegates[e];i.delegates[e]=(...e)=>{this._removeDelegatedListener(t,n,r),a(...e)}}this._saveDelegatedListener(t,i);for(let t in i.delegates)this.once(t,i.delegates[t]);return this}off(t,e,r){return void 0===r?super.off(t,e):(this._removeDelegatedListener(t,"string"==typeof e?[e]:e,r),this)}queryRenderedFeatures(t,r){if(!this.style)return[];let n,i=t instanceof e.P||Array.isArray(t),a=i?t:[[0,0],[this.transform.width,this.transform.height]];if(r=r||(i?{}:t)||{},a instanceof e.P||"number"==typeof a[0])n=[e.P.convert(a)];else{let t=e.P.convert(a[0]),r=e.P.convert(a[1]);n=[t,new e.P(r.x,t.y),r,new e.P(t.x,r.y),t]}return this.style.queryRenderedFeatures(n,r,this.transform)}querySourceFeatures(t,e){return this.style.querySourceFeatures(t,e)}setStyle(t,r){return!1!==(r=e.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},r)).diff&&r.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&t?(this._diffStyle(t,r),this):(this._localIdeographFontFamily=r.localIdeographFontFamily,this._updateStyle(t,r))}setTransformRequest(t){return this._requestManager.setTransformRequest(t),this}_getUIString(t){let e=this._locale[t];if(null==e)throw new Error(`Missing UI string '${t}'`);return e}_updateStyle(t,e){if(e.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",(()=>this._updateStyle(t,e)));let r=this.style&&e.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!t)),t?(this.style=new fe(this,e||{}),this.style.setEventedParent(this,{style:this.style}),"string"==typeof t?this.style.loadURL(t,e,r):this.style.loadJSON(t,e,r),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new fe(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(t,r){if("string"==typeof t){let n=this._requestManager.transformRequest(t,"Style");e.h(n,new AbortController).then((t=>{this._updateDiff(t.data,r)})).catch((t=>{t&&this.fire(new e.j(t))}))}else"object"==typeof t&&this._updateDiff(t,r)}_updateDiff(t,r){try{this.style.setState(t,r)&&this._update(!0)}catch(n){e.w(`Unable to perform style diff: ${n.message||n.error||n}. Rebuilding the style from scratch.`),this._updateStyle(t,r)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():e.w("There is no style added to the map.")}addSource(t,e){return this._lazyInitEmptyStyle(),this.style.addSource(t,e),this._update(!0)}isSourceLoaded(t){let r=this.style&&this.style.sourceCaches[t];if(void 0!==r)return r.loaded();this.fire(new e.j(new Error(`There is no source with ID '${t}'`)))}setTerrain(t){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),t){let r=this.style.sourceCaches[t.source];if(!r)throw new Error(`cannot load terrain, because there exists no source with ID: ${t.source}`);null===this.terrain&&r.reload();for(let r in this.style._layers){let n=this.style._layers[r];"hillshade"===n.type&&n.source===t.source&&e.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Pi(this.painter,r,t),this.painter.renderToTexture=new Oi(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=e=>{"style"===e.dataType?this.terrain.sourceCache.freeRtt():"source"===e.dataType&&e.tile&&(e.sourceId!==t.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(e.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new e.k("terrain",{terrain:t})),this}getTerrain(){var t,e;return null!==(e=null===(t=this.terrain)||void 0===t?void 0:t.options)&&void 0!==e?e:null}areTilesLoaded(){let t=this.style&&this.style.sourceCaches;for(let e in t){let r=t[e]._tiles;for(let t in r){let e=r[t];if("loaded"!==e.state&&"errored"!==e.state)return!1}}return!0}removeSource(t){return this.style.removeSource(t),this._update(!0)}getSource(t){return this.style.getSource(t)}addImage(t,r,n={}){let{pixelRatio:i=1,sdf:o=!1,stretchX:s,stretchY:l,content:c,textFitWidth:u,textFitHeight:h}=n;if(this._lazyInitEmptyStyle(),!(r instanceof HTMLImageElement||e.b(r))){if(void 0===r.width||void 0===r.height)return this.fire(new e.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:n,height:a,data:p}=r,f=r;return this.style.addImage(t,{data:new e.R({width:n,height:a},new Uint8Array(p)),pixelRatio:i,stretchX:s,stretchY:l,content:c,textFitWidth:u,textFitHeight:h,sdf:o,version:0,userImage:f}),f.onAdd&&f.onAdd(this,t),this}}{let{width:n,height:p,data:f}=a.getImageData(r);this.style.addImage(t,{data:new e.R({width:n,height:p},f),pixelRatio:i,stretchX:s,stretchY:l,content:c,textFitWidth:u,textFitHeight:h,sdf:o,version:0})}}updateImage(t,r){let n=this.style.getImage(t);if(!n)return this.fire(new e.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let i=r instanceof HTMLImageElement||e.b(r)?a.getImageData(r):r,{width:o,height:s,data:l}=i;if(void 0===o||void 0===s)return this.fire(new e.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(o!==n.data.width||s!==n.data.height)return this.fire(new e.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let c=!(r instanceof HTMLImageElement||e.b(r));return n.data.replace(l,c),this.style.updateImage(t,n),this}getImage(t){return this.style.getImage(t)}hasImage(t){return t?!!this.style.getImage(t):(this.fire(new e.j(new Error("Missing required image id"))),!1)}removeImage(t){this.style.removeImage(t)}loadImage(t){return f.getImage(this._requestManager.transformRequest(t,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(t,e){return this._lazyInitEmptyStyle(),this.style.addLayer(t,e),this._update(!0)}moveLayer(t,e){return this.style.moveLayer(t,e),this._update(!0)}removeLayer(t){return this.style.removeLayer(t),this._update(!0)}getLayer(t){return this.style.getLayer(t)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(t,e,r){return this.style.setLayerZoomRange(t,e,r),this._update(!0)}setFilter(t,e,r={}){return this.style.setFilter(t,e,r),this._update(!0)}getFilter(t){return this.style.getFilter(t)}setPaintProperty(t,e,r,n={}){return this.style.setPaintProperty(t,e,r,n),this._update(!0)}getPaintProperty(t,e){return this.style.getPaintProperty(t,e)}setLayoutProperty(t,e,r,n={}){return this.style.setLayoutProperty(t,e,r,n),this._update(!0)}getLayoutProperty(t,e){return this.style.getLayoutProperty(t,e)}setGlyphs(t,e={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(t,e),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(t,e,r={}){return this._lazyInitEmptyStyle(),this.style.addSprite(t,e,r,(t=>{t||this._update(!0)})),this}removeSprite(t){return this._lazyInitEmptyStyle(),this.style.removeSprite(t),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(t,e={}){return this._lazyInitEmptyStyle(),this.style.setSprite(t,e,(t=>{t||this._update(!0)})),this}setLight(t,e={}){return this._lazyInitEmptyStyle(),this.style.setLight(t,e),this._update(!0)}getLight(){return this.style.getLight()}setSky(t){return this._lazyInitEmptyStyle(),this.style.setSky(t),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(t,e){return this.style.setFeatureState(t,e),this._update()}removeFeatureState(t,e){return this.style.removeFeatureState(t,e),this._update()}getFeatureState(t){return this.style.getFeatureState(t)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let t=0,e=0;return this._container&&(t=this._container.clientWidth||400,e=this._container.clientHeight||300),[t,e]}_setupContainer(){let t=this._container;t.classList.add("maplibregl-map");let e=this._canvasContainer=o.create("div","maplibregl-canvas-container",t);this._interactive&&e.classList.add("maplibregl-interactive"),this._canvas=o.create("canvas","maplibregl-canvas",e),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let r=this._containerDimensions(),n=this._getClampedPixelRatio(r[0],r[1]);this._resizeCanvas(r[0],r[1],n);let i=this._controlContainer=o.create("div","maplibregl-control-container",t),a=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach((t=>{a[t]=o.create("div",`maplibregl-ctrl-${t} `,i)})),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(t,e,r){this._canvas.width=Math.floor(r*t),this._canvas.height=Math.floor(r*e),this._canvas.style.width=`${t}px`,this._canvas.style.height=`${e}px`}_setupPainter(){let t={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},e=null;this._canvas.addEventListener("webglcontextcreationerror",(r=>{e={requestedAttributes:t},r&&(e.statusMessage=r.statusMessage,e.type=r.type)}),{once:!0});let r=this._canvas.getContext("webgl2",t)||this._canvas.getContext("webgl",t);if(!r){let t="Failed to initialize WebGL";throw e?(e.message=t,new Error(JSON.stringify(e))):new Error(t)}this.painter=new _n(r,this.transform),c.testSupport(r)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(t){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||t,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(t){return this._update(),this._renderTaskQueue.add(t)}_cancelRenderFrame(t){this._renderTaskQueue.remove(t)}_render(t){let r=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(t),this._removed)return;let n=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let t=this.transform.zoom,i=a.now();this.style.zoomHistory.update(t,i);let o=new e.z(t,{now:i,fadeDuration:r,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),s=o.crossFadingFactor();1===s&&s===this._crossFadingFactor||(n=!0,this._crossFadingFactor=s),this.style.update(o)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,r,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:r,showPadding:this.showPadding}),this.fire(new e.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,e.bf.mark(e.bg.load),this.fire(new e.k("load"))),this.style&&(this.style.hasTransitions()||n)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let i=this._sourcesDirty||this._styleDirty||this._placementDirty;return i||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new e.k("idle")),!this._loaded||this._fullyLoaded||i||(this._fullyLoaded=!0,e.bf.mark(e.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var t;this._hash&&this._hash.remove();for(let t of this._controls)t.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),f.removeThrottleControl(this._imageQueueHandle),null===(t=this._resizeObserver)||void 0===t||t.disconnect();let r=this.painter.context.gl.getExtension("WEBGL_lose_context");r?.loseContext&&r.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),o.remove(this._canvasContainer),o.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),e.bf.clearMetrics(),this._removed=!0,this.fire(new e.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,a.frameAsync(this._frameRequest).then((t=>{e.bf.frame(t),this._frameRequest=null,this._render(t)})).catch((()=>{})))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(t){this._showTileBoundaries!==t&&(this._showTileBoundaries=t,this._update())}get showPadding(){return!!this._showPadding}set showPadding(t){this._showPadding!==t&&(this._showPadding=t,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(t){this._showCollisionBoxes!==t&&(this._showCollisionBoxes=t,t?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(t){this._showOverdrawInspector!==t&&(this._showOverdrawInspector=t,this._update())}get repaint(){return!!this._repaint}set repaint(t){this._repaint!==t&&(this._repaint=t,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(t){this._vertices=t,this._update()}get version(){return Bi}getCameraTargetElevation(){return this.transform.elevation}},t.MapMouseEvent=Rn,t.MapTouchEvent=Fn,t.MapWheelEvent=Bn,t.Marker=Wi,t.NavigationControl=class{constructor(t){this._updateZoomButtons=()=>{let t=this._map.getZoom(),e=t===this._map.getMaxZoom(),r=t===this._map.getMinZoom();this._zoomInButton.disabled=e,this._zoomOutButton.disabled=r,this._zoomInButton.setAttribute("aria-disabled",e.toString()),this._zoomOutButton.setAttribute("aria-disabled",r.toString())},this._rotateCompassArrow=()=>{let t=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=t},this._setButtonTitle=(t,e)=>{let r=this._map._getUIString(`NavigationControl.${e}`);t.title=r,t.setAttribute("aria-label",r)},this.options=e.e({},Ui,t),this._container=o.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",(t=>t.preventDefault())),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",(t=>this._map.zoomIn({},{originalEvent:t}))),o.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",(t=>this._map.zoomOut({},{originalEvent:t}))),o.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",(t=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:t}):this._map.resetNorth({},{originalEvent:t})})),this._compassIcon=o.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(t){return this._map=t,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Vi(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){o.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(t,e){let r=o.create("button",t,this._container);return r.type="button",r.addEventListener("click",e),r}},t.Popup=class extends e.E{constructor(t){super(),this.remove=()=>(this._content&&o.remove(this._content),this._container&&(o.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new e.k("close"))),this),this._onMouseUp=t=>{this._update(t.point)},this._onMouseMove=t=>{this._update(t.point)},this._onDrag=t=>{this._update(t.point)},this._update=t=>{var e;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=o.create("div","maplibregl-popup",this._map.getContainer()),this._tip=o.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let t of this.options.className.split(" "))this._container.classList.add(t);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?qi(this._lngLat,this._flatPos,this._map.transform):null===(e=this._lngLat)||void 0===e?void 0:e.wrap(),this._trackPointer&&!t)return;let r=this._flatPos=this._pos=this._trackPointer&&t?t:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&t?t:this._map.transform.locationPoint(this._lngLat));let n=this.options.anchor,i=ea(this.options.offset);if(!n){let t,e=this._container.offsetWidth,a=this._container.offsetHeight;t=r.y+i.bottom.ythis._map.transform.height-a?["bottom"]:[],r.xthis._map.transform.width-e/2&&t.push("right"),n=0===t.length?"bottom":t.join("-")}let a=r.add(i[n]);this.options.subpixelPositioning||(a=a.round()),o.setTransform(this._container,`${Hi[n]} translate(${a.x}px,${a.y}px)`),Gi(this._container,n,"popup")},this._onClose=()=>{this.remove()},this.options=e.e(Object.create(Qi),t)}addTo(t){return this._map&&this.remove(),this._map=t,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new e.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(t){return this._lngLat=e.N.convert(t),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(t){return this.setDOMContent(document.createTextNode(t))}setHTML(t){let e,r=document.createDocumentFragment(),n=document.createElement("body");for(n.innerHTML=t;e=n.firstChild,e;)r.appendChild(e);return this.setDOMContent(r)}getMaxWidth(){var t;return null===(t=this._container)||void 0===t?void 0:t.style.maxWidth}setMaxWidth(t){return this.options.maxWidth=t,this._update(),this}setDOMContent(t){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=o.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(t),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(t){return this._container&&this._container.classList.add(t),this}removeClassName(t){return this._container&&this._container.classList.remove(t),this}setOffset(t){return this.options.offset=t,this._update(),this}toggleClassName(t){if(this._container)return this._container.classList.toggle(t)}setSubpixelPositioning(t){this.options.subpixelPositioning=t}_createCloseButton(){this.options.closeButton&&(this._closeButton=o.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let t=this._container.querySelector(ta);t&&t.focus()}},t.RasterDEMTileSource=K,t.RasterTileSource=$,t.ScaleControl=class{constructor(t){this._onMove=()=>{Ki(this._map,this._container,this.options)},this.setUnit=t=>{this.options.unit=t,Ki(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},$i),t)}getDefaultPosition(){return"bottom-left"}onAdd(t){return this._map=t,this._container=o.create("div","maplibregl-ctrl maplibregl-ctrl-scale",t.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){o.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},t.ScrollZoomHandler=fi,t.Style=fe,t.TerrainControl=class{constructor(t){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=t}onAdd(t){return this._map=t,this._container=o.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=o.create("button","maplibregl-ctrl-terrain",this._container),o.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){o.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},t.TwoFingersTouchPitchHandler=li,t.TwoFingersTouchRotateHandler=oi,t.TwoFingersTouchZoomHandler=ii,t.TwoFingersTouchZoomRotateHandler=xi,t.VectorTileSource=X,t.VideoSource=et,t.addSourceType=(t,r)=>e._(void 0,void 0,void 0,(function*(){if(it(t))throw new Error(`A source type called "${t}" already exists.`);var e;e=r,nt[t]=e})),t.clearPrewarmedResources=function(){let t=F;t&&(t.isPreloaded()&&1===t.numActive()?(t.release(O),F=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},t.getMaxParallelImageRequests=function(){return e.a.MAX_PARALLEL_IMAGE_REQUESTS},t.getRTLTextPluginStatus=function(){return lt().getRTLTextPluginStatus()},t.getVersion=function(){return ra},t.getWorkerCount=function(){return R.workerCount},t.getWorkerUrl=function(){return e.a.WORKER_URL},t.importScriptInWorkers=function(t){return V().broadcast("IS",t)},t.prewarm=function(){N().acquire(O)},t.setMaxParallelImageRequests=function(t){e.a.MAX_PARALLEL_IMAGE_REQUESTS=t},t.setRTLTextPlugin=function(t,e){return lt().setRTLTextPlugin(t,e)},t.setWorkerCount=function(t){R.workerCount=t},t.setWorkerUrl=function(t){e.a.WORKER_URL=t}})),t},"object"==typeof t&&typeof e<"u"?e.exports=a():(n=typeof globalThis<"u"?globalThis:n||self).maplibregl=a()}}),nb=f({"src/plots/map/layers.js"(t,e){var r=le(),n=Se().sanitizeHTML,i=$_(),a=H_();function o(t,e){this.subplot=t,this.uid=t.uid+"-"+e,this.index=e,this.idSource="source-"+this.uid,this.idLayer=a.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var s=o.prototype;function l(t){if(!t.visible)return!1;var e=t.source;if(Array.isArray(e)&&e.length>0){for(var n=0;n0}function c(t){var e={},n={};switch(t.type){case"circle":r.extendFlat(n,{"circle-radius":t.circle.radius,"circle-color":t.color,"circle-opacity":t.opacity});break;case"line":r.extendFlat(n,{"line-width":t.line.width,"line-color":t.color,"line-opacity":t.opacity,"line-dasharray":t.line.dash});break;case"fill":r.extendFlat(n,{"fill-color":t.color,"fill-outline-color":t.fill.outlinecolor,"fill-opacity":t.opacity});break;case"symbol":var a=t.symbol,o=i(a.textposition,a.iconsize);r.extendFlat(e,{"icon-image":a.icon+"-15","icon-size":a.iconsize/10,"text-field":a.text,"text-size":a.textfont.size,"text-anchor":o.anchor,"text-offset":o.offset,"symbol-placement":a.placement}),r.extendFlat(n,{"icon-color":t.color,"text-color":a.textfont.color,"text-opacity":t.opacity});break;case"raster":r.extendFlat(n,{"raster-fade-duration":0,"raster-opacity":t.opacity})}return{layout:e,paint:n}}s.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=l(t)},s.needsNewImage=function(t){return this.subplot.map.getSource(this.idSource)&&"image"===this.sourceType&&"image"===t.sourcetype&&(this.source!==t.source||JSON.stringify(this.coordinates)!==JSON.stringify(t.coordinates))},s.needsNewSource=function(t){return this.sourceType!==t.sourcetype||JSON.stringify(this.source)!==JSON.stringify(t.source)||this.layerType!==t.type},s.needsNewLayer=function(t){return this.layerType!==t.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},s.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},s.updateImage=function(t){this.subplot.map.getSource(this.idSource).updateImage({url:t.source,coordinates:t.coordinates});var e=this.findFollowingMapLayerId(this.lookupBelow());null!==e&&this.subplot.map.moveLayer(this.idLayer,e)},s.updateSource=function(t){var e=this.subplot.map;if(e.getSource(this.idSource)&&e.removeSource(this.idSource),this.sourceType=t.sourcetype,this.source=t.source,l(t)){var r=function(t){var e,r=t.sourcetype,i=t.source,a={type:r};return"geojson"===r?e="data":"vector"===r?e="string"==typeof i?"url":"tiles":"raster"===r?(e="tiles",a.tileSize=256):"image"===r&&(e="url",a.coordinates=t.coordinates),a[e]=i,t.sourceattribution&&(a.attribution=n(t.sourceattribution)),a}(t);e.addSource(this.idSource,r)}},s.findFollowingMapLayerId=function(t){if("traces"===t)for(var e=this.subplot.getMapLayers(),r=0;r1)for(r=0;r-1&&m(e.originalEvent,n,[r.xaxis],[r.yaxis],r.id,t),i.indexOf("event")>-1&&l.click(n,e.originalEvent)}}},x.updateFx=function(t){var e=this,r=e.map,i=e.gd;if(!e.isStatic){var a,o=t.dragmode;a=function(t,r){r.isRect?(t.range={})[e.id]=[c([r.xmin,r.ymin]),c([r.xmax,r.ymax])]:(t.lassoPoints={})[e.id]=r.map(c)};var l=e.dragOptions;e.dragOptions=n.extendDeep(l||{},{dragmode:t.dragmode,element:e.div,gd:i,plotinfo:{id:e.id,domain:t[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis,fillRangeItems:a},xaxes:[e.xaxis],yaxes:[e.yaxis],subplot:e.id}),r.off("click",e.onClickInPanHandler),h(o)||u(o)?(r.dragPan.disable(),r.on("zoomstart",e.clearOutline),e.dragOptions.prepFn=function(t,r,n){p(t,r,n,e.dragOptions,o)},s.init(e.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",e.clearOutline),e.div.onmousedown=null,e.div.ontouchstart=null,e.div.removeEventListener("touchstart",e.div._ontouchstart),e.onClickInPanHandler=e.onClickInPanFn(e.dragOptions),r.on("click",e.onClickInPanHandler))}function c(t){var r=e.map.unproject(t);return[r.lng,r.lat]}},x.updateFramework=function(t){var e=t[this.id].domain,r=t._size,n=this.div.style;n.width=r.w*(e.x[1]-e.x[0])+"px",n.height=r.h*(e.y[1]-e.y[0])+"px",n.left=r.l+e.x[0]*r.w+"px",n.top=r.t+(1-e.y[1])*r.h+"px",this.xaxis._offset=r.l+e.x[0]*r.w,this.xaxis._length=r.w*(e.x[1]-e.x[0]),this.yaxis._offset=r.t+(1-e.y[1])*r.h,this.yaxis._length=r.h*(e.y[1]-e.y[0])},x.updateLayers=function(t){var e,r=t[this.id].layers,n=this.layerList;if(r.length!==n.length){for(e=0;ex/2){var _=m.split("|").join("
");y.text(_).attr("data-unformatted",_).call(l.convertToTspans,t),v=s.bBox(y.node())}y.attr("transform",r(-3,8-v.height)),g.insert("rect",".static-attribution").attr({x:-v.width-6,y:-v.height-3,width:v.width+6,height:v.height+3,fill:"rgba(255, 255, 255, 0.75)"});var b=1;v.width+6>x&&(b=x/(v.width+6));var w=[c.l+c.w*f.x[1],c.t+c.h*(1-f.y[0])];g.attr("transform",r(w[0],w[1])+n(b))}},t.updateFx=function(t){for(var e=t._fullLayout,r=e._subplots[u],n=0;n=0;r--)t.removeLayer(e[r][1])},o.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var n=e[0].trace,i=new a(t,n.uid),o=i.sourceId,s=r(e),l=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(o,{type:"geojson",data:s.geojson}),i._addLayers(s,l),e[0].trace._glTrace=i,i}}}),fb=f({"src/traces/choroplethmap/index.js"(t,e){e.exports={attributes:cb(),supplyDefaults:ub(),colorbar:Uo(),calc:_g(),plot:pb(),hoverPoints:Tg(),eventData:Ag(),selectPoints:kg(),styleOnSelect:function(t,e){e&&e[0].trace._glTrace.updateOnSelect(e)},getBelow:function(t,e){for(var r=e.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if("string"==typeof i&&0===i.indexOf("water"))for(var a=n+1;a0?+f[u]:0),h.push({type:"Feature",geometry:{type:"Point",coordinates:y},properties:v})}}var _=a.extractOpts(e),b=_.reversescale?a.flipScale(_.colorscale):_.colorscale,w=b[0][1],T=["interpolate",["linear"],["heatmap-density"],0,i.opacity(w)<1?w:i.addOpacity(w,0)];for(u=1;u=0;r--)t.removeLayer(e[r][1])},a.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},e.exports=function(t,e){var n=e[0].trace,a=new i(t,n.uid),o=a.sourceId,s=r(e),l=a.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(o,{type:"geojson",data:s.geojson}),a._addLayers(s,l),a}}}),_b=f({"src/traces/densitymap/hover.js"(t,e){var r=ir(),n=Q_().hoverPoints,i=Q_().getExtraText;e.exports=function(t,e,a){var o=n(t,e,a);if(o){var s=o[0],l=s.cd,c=l[0].trace,u=l[s.index];if(delete s.color,"z"in u){var h=s.subplot.mockAxis;s.z=u.z,s.zLabel=r.tickText(h,h.c2l(u.z),"hover").text}return s.extraText=i(c,u,l[0].t.labels),[s]}}}}),bb=f({"src/traces/densitymap/event_data.js"(t,e){e.exports=function(t,e){return t.lon=e.lon,t.lat=e.lat,t.z=e.z,t}}}),wb=f({"src/traces/densitymap/index.js"(t,e){e.exports={attributes:mb(),supplyDefaults:gb(),colorbar:Uo(),formatLabels:X_(),calc:yb(),plot:xb(),hoverPoints:_b(),eventData:bb(),getBelow:function(t,e){for(var r=e.getMapLayers(),n=0;n0;){e=c[c.length-1];var f=t[e];if(a[e]=0&&s[e].push(o[m])}a[e]=d}else{if(n[e]===r[e]){var g=[],y=[],v=0;for(d=l.length-1;d>=0;--d){var x=l[d];if(i[x]=!1,g.push(x),y.push(s[x]),v+=s[x].length,o[x]=h.length,x===e){l.length=d;break}}h.push(g);var _=new Array(v);for(d=0;dx&&(x=l.source[e]),l.target[e]>x&&(x=l.target[e]);var _=x+1;t.node._count=_;var b,w=t.node.groups,T={};for(e=0;e0&&o(C,_)&&o(I,_)&&(!T.hasOwnProperty(C)||!T.hasOwnProperty(I)||T[C]!==T[I])){T.hasOwnProperty(I)&&(I=T[I]),T.hasOwnProperty(C)&&(C=T[C]),I=+I,f[C=+C]=f[I]=!0;var L="";l.label&&l.label[e]&&(L=l.label[e]);var P=null;L&&d.hasOwnProperty(L)&&(P=d[L]),c.push({pointNumber:e,label:L,color:u?l.color[e]:l.color,hovercolor:h?l.hovercolor[e]:l.hovercolor,customdata:p?l.customdata[e]:l.customdata,concentrationscale:P,source:C,target:I,value:+E}),S.source.push(C),S.target.push(I)}}var z=_+w.length,D=a(i.color),O=a(i.customdata),R=[];for(e=0;e_-1,childrenNodes:[],pointNumber:e,label:F,color:D?i.color[e]:i.color,customdata:O?i.customdata[e]:i.customdata})}var B=!1;return function(t,e,i){for(var a=n.init2dArray(t,0),o=0;o1}))}(z,S.source,S.target)&&(B=!0),{circular:B,links:c,nodes:R,groups:w,groupLookup:T}}(e);return i({circular:l.circular,_nodes:l.nodes,_links:l.links,_groups:l.groups,_groupLookup:l.groupLookup})}}}),Eb=f({"node_modules/d3-quadtree/dist/d3-quadtree.js"(t,e){var r,n;r=t,n=function(t){function e(t,e,r,n){if(isNaN(e)||isNaN(r))return t;var i,a,o,s,l,c,u,h,p,f=t._root,d={data:n},m=t._x0,g=t._y0,y=t._x1,v=t._y1;if(!f)return t._root=d,t;for(;f.length;)if((c=e>=(a=(m+y)/2))?m=a:y=a,(u=r>=(o=(g+v)/2))?g=o:v=o,i=f,!(f=f[h=u<<1|c]))return i[h]=d,t;if(s=+t._x.call(null,f.data),l=+t._y.call(null,f.data),e===s&&r===l)return d.next=f,i?i[h]=d:t._root=d,t;do{i=i?i[h]=new Array(4):t._root=new Array(4),(c=e>=(a=(m+y)/2))?m=a:y=a,(u=r>=(o=(g+v)/2))?g=o:v=o}while((h=u<<1|c)==(p=(l>=o)<<1|s>=a));return i[p]=f,i[h]=d,t}function r(t,e,r,n,i){this.node=t,this.x0=e,this.y0=r,this.x1=n,this.y1=i}function n(t){return t[0]}function i(t){return t[1]}function a(t,e,r){var a=new o(e??n,r??i,NaN,NaN,NaN,NaN);return null==t?a:a.addAll(t)}function o(t,e,r,n,i,a){this._x=t,this._y=e,this._x0=r,this._y0=n,this._x1=i,this._y1=a,this._root=void 0}function s(t){for(var e={data:t.data},r=e;t=t.next;)r=r.next={data:t.data};return e}var l=a.prototype=o.prototype;l.copy=function(){var t,e,r=new o(this._x,this._y,this._x0,this._y0,this._x1,this._y1),n=this._root;if(!n)return r;if(!n.length)return r._root=s(n),r;for(t=[{source:n,target:r._root=new Array(4)}];n=t.pop();)for(var i=0;i<4;++i)(e=n.source[i])&&(e.length?t.push({source:e,target:n.target[i]=new Array(4)}):n.target[i]=s(e));return r},l.add=function(t){var r=+this._x.call(null,t),n=+this._y.call(null,t);return e(this.cover(r,n),r,n,t)},l.addAll=function(t){var r,n,i,a,o=t.length,s=new Array(o),l=new Array(o),c=1/0,u=1/0,h=-1/0,p=-1/0;for(n=0;nh&&(h=i),ap&&(p=a));if(c>h||u>p)return this;for(this.cover(c,u).cover(h,p),n=0;nt||t>=i||n>e||e>=a;)switch(s=(ef||(o=c.y0)>d||(s=c.x1)=v)<<1|t>=y)&&(c=m[m.length-1],m[m.length-1]=m[m.length-1-u],m[m.length-1-u]=c)}else{var x=t-+this._x.call(null,g.data),_=e-+this._y.call(null,g.data),b=x*x+_*_;if(b=(s=(d+g)/2))?d=s:g=s,(u=o>=(l=(m+y)/2))?m=l:y=l,e=f,!(f=f[h=u<<1|c]))return this;if(!f.length)break;(e[h+1&3]||e[h+2&3]||e[h+3&3])&&(r=e,p=h)}for(;f.data!==t;)if(n=f,!(f=f.next))return this;return(i=f.next)&&delete f.next,n?(i?n.next=i:delete n.next,this):e?(i?e[h]=i:delete e[h],(f=e[0]||e[1]||e[2]||e[3])&&f===(e[3]||e[2]||e[1]||e[0])&&!f.length&&(r?r[p]=f:this._root=f),this):(this._root=i,this)},l.removeAll=function(t){for(var e=0,r=t.length;e=l.length)return null!=t&&r.sort(t),null!=e?e(r):r;for(var s,c,h,p=-1,f=r.length,d=l[i++],m=n(),g=a();++pl.length)return t;var n,i=c[r-1];return null!=e&&r>=l.length?n=t.entries():(n=[],t.each((function(t,e){n.push({key:e,values:h(t,r)})}))),null!=i?n.sort((function(t,e){return i(t.key,e.key)})):n}return r={object:function(t){return u(t,0,i,a)},map:function(t){return u(t,0,o,s)},entries:function(t){return h(u(t,0,o,s),0)},key:function(t){return l.push(t),r},sortKeys:function(t){return c[l.length-1]=t,r},sortValues:function(e){return t=e,r},rollup:function(t){return e=t,r}}},t.set=u,t.map=n,t.keys=function(t){var e=[];for(var r in t)e.push(r);return e},t.values=function(t){var e=[];for(var r in t)e.push(t[r]);return e},t.entries=function(t){var e=[];for(var r in t)e.push({key:r,value:t[r]});return e},Object.defineProperty(t,"__esModule",{value:!0})}("object"==typeof t&&typeof e<"u"?t:r.d3=r.d3||{})}}),Ib=f({"node_modules/d3-dispatch/dist/d3-dispatch.js"(t,e){var r,n;r=t,n=function(t){var e={value:function(){}};function r(){for(var t,e=0,r=arguments.length,i={};e=0&&(r=t.slice(n+1),t=t.slice(0,n)),t&&!e.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:r}}))}(t+"",n),s=-1,l=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++s0)for(var r,n,i=new Array(r),a=0;a=0&&r._call.call(null,t),r=r._next;--n}function g(){s=(o=c.now())+l,n=i=0;try{m()}finally{n=0,function(){for(var t,n,i=e,a=1/0;i;)i._call?(a>i._time&&(a=i._time),t=i,i=i._next):(n=i._next,i._next=null,i=t?t._next=n:e=n);r=t,v(a)}(),s=0}}function y(){var t=c.now(),e=t-o;e>1e3&&(l-=e,o=t)}function v(t){n||(i&&(i=clearTimeout(i)),t-s>24?(t<1/0&&(i=setTimeout(g,t-c.now()-l)),a&&(a=clearInterval(a))):(a||(o=c.now(),a=setInterval(y,1e3)),n=1,u(g)))}f.prototype=d.prototype={constructor:f,restart:function(t,n,i){if("function"!=typeof t)throw new TypeError("callback is not a function");i=(null==i?h():+i)+(null==n?0:+n),!this._next&&r!==this&&(r?r._next=this:e=this,r=this),this._call=t,this._time=i,v()},stop:function(){this._call&&(this._call=null,this._time=1/0,v())}},t.interval=function(t,e,r){var n=new f,i=e;return null==e?(n.restart(t,e,r),n):(e=+e,r=null==r?h():+r,n.restart((function a(o){o+=i,n.restart(a,i+=e,r),t(o)}),e,r),n)},t.now=h,t.timeout=function(t,e,r){var n=new f;return e=null==e?0:+e,n.restart((function(r){n.stop(),t(r+e)}),e,r),n},t.timer=d,t.timerFlush=m,Object.defineProperty(t,"__esModule",{value:!0})},n("object"==typeof t&&typeof e<"u"?t:(r=r||self).d3=r.d3||{})}}),Pb=f({"node_modules/d3-force/dist/d3-force.js"(t,e){var r,n;r=t,n=function(t,e,r,n,i){function a(t){return function(){return t}}function o(){return 1e-6*(Math.random()-.5)}function s(t){return t.x+t.vx}function l(t){return t.y+t.vy}function c(t){return t.index}function u(t,e){var r=t.get(e);if(!r)throw new Error("missing: "+e);return r}function h(t){return t.x}function p(t){return t.y}var f=Math.PI*(3-Math.sqrt(5));t.forceCenter=function(t,e){var r;function n(){var n,i,a=r.length,o=0,s=0;for(n=0;np+c||nf+c||au.index){var h=p-s.x-s.vx,g=f-s.y-s.vy,y=h*h+g*g;yt.r&&(t.r=t[e].r)}function p(){if(r){var e,i,a=r.length;for(n=new Array(a),e=0;e=c)){(t.data!==r||t.next)&&(0===h&&(d+=(h=o())*h),0===p&&(d+=(p=o())*p),d1?(null==r?u.remove(t):u.set(t,y(r)),e):u.get(t)},find:function(e,r,n){var i,a,o,s,l,c=0,u=t.length;for(null==n?n=1/0:n*=n,c=0;c1?(p.on(t,r),e):p.on(t)}}},t.forceX=function(t){var e,r,n,i=a(.1);function o(t){for(var i,a=0,o=e.length;an)if(Math.abs(p*c-u*h)>n&&o){var d=i-s,m=a-l,g=c*c+u*u,y=d*d+m*m,v=Math.sqrt(g),x=Math.sqrt(f),_=o*Math.tan((e-Math.acos((g+f-y)/(2*v*x)))/2),b=_/x,w=_/v;Math.abs(b-1)>n&&(this._+="L"+(t+b*h)+","+(r+b*p)),this._+="A"+o+","+o+",0,0,"+ +(p*d>h*m)+","+(this._x1=t+w*c)+","+(this._y1=r+w*u)}else this._+="L"+(this._x1=t)+","+(this._y1=r)},arc:function(t,a,o,s,l,c){t=+t,a=+a,c=!!c;var u=(o=+o)*Math.cos(s),h=o*Math.sin(s),p=t+u,f=a+h,d=1^c,m=c?s-l:l-s;if(o<0)throw new Error("negative radius: "+o);null===this._x1?this._+="M"+p+","+f:(Math.abs(this._x1-p)>n||Math.abs(this._y1-f)>n)&&(this._+="L"+p+","+f),o&&(m<0&&(m=m%r+r),m>i?this._+="A"+o+","+o+",0,1,"+d+","+(t-u)+","+(a-h)+"A"+o+","+o+",0,1,"+d+","+(this._x1=p)+","+(this._y1=f):m>n&&(this._+="A"+o+","+o+",0,"+ +(m>=e)+","+d+","+(this._x1=t+o*Math.cos(l))+","+(this._y1=a+o*Math.sin(l))))},rect:function(t,e,r,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+e)+"h"+ +r+"v"+ +n+"h"+-r+"Z"},toString:function(){return this._}},t.path=o,Object.defineProperty(t,"__esModule",{value:!0})},n("object"==typeof t&&typeof e<"u"?t:(r=r||self).d3=r.d3||{})}}),Db=f({"node_modules/d3-shape/dist/d3-shape.js"(t,e){var r,n;r=t,n=function(t,e){function r(t){return function(){return t}}var n=Math.abs,i=Math.atan2,a=Math.cos,o=Math.max,s=Math.min,l=Math.sin,c=Math.sqrt,u=1e-12,h=Math.PI,p=h/2,f=2*h;function d(t){return t>=1?p:t<=-1?-p:Math.asin(t)}function m(t){return t.innerRadius}function g(t){return t.outerRadius}function y(t){return t.startAngle}function v(t){return t.endAngle}function x(t){return t&&t.padAngle}function _(t,e,r,n,i,a,s){var l=t-r,u=e-n,h=(s?a:-a)/c(l*l+u*u),p=h*u,f=-h*l,d=t+p,m=e+f,g=r+p,y=n+f,v=(d+g)/2,x=(m+y)/2,_=g-d,b=y-m,w=_*_+b*b,T=i-a,A=d*y-g*m,k=(b<0?-1:1)*c(o(0,T*T*w-A*A)),M=(A*b-_*k)/w,S=(-A*_-b*k)/w,E=(A*b+_*k)/w,C=(-A*_+b*k)/w,I=M-v,L=S-x,P=E-v,z=C-x;return I*I+L*L>P*P+z*z&&(M=E,S=C),{cx:M,cy:S,x01:-p,y01:-f,x11:M*(i/T-1),y11:S*(i/T-1)}}function b(t){this._context=t}function w(t){return new b(t)}function T(t){return t[0]}function A(t){return t[1]}function k(){var t=T,n=A,i=r(!0),a=null,o=w,s=null;function l(r){var l,c,u,h=r.length,p=!1;for(null==a&&(s=o(u=e.path())),l=0;l<=h;++l)!(l=h;--p)c.point(y[p],v[p]);c.lineEnd(),c.areaEnd()}g&&(y[u]=+t(f,u,r),v[u]=+i(f,u,r),c.point(n?+n(f,u,r):y[u],a?+a(f,u,r):v[u]))}if(d)return c=null,d+""||null}function h(){return k().defined(o).curve(l).context(s)}return u.x=function(e){return arguments.length?(t="function"==typeof e?e:r(+e),n=null,u):t},u.x0=function(e){return arguments.length?(t="function"==typeof e?e:r(+e),u):t},u.x1=function(t){return arguments.length?(n=null==t?null:"function"==typeof t?t:r(+t),u):n},u.y=function(t){return arguments.length?(i="function"==typeof t?t:r(+t),a=null,u):i},u.y0=function(t){return arguments.length?(i="function"==typeof t?t:r(+t),u):i},u.y1=function(t){return arguments.length?(a=null==t?null:"function"==typeof t?t:r(+t),u):a},u.lineX0=u.lineY0=function(){return h().x(t).y(i)},u.lineY1=function(){return h().x(t).y(a)},u.lineX1=function(){return h().x(n).y(i)},u.defined=function(t){return arguments.length?(o="function"==typeof t?t:r(!!t),u):o},u.curve=function(t){return arguments.length?(l=t,null!=s&&(c=l(s)),u):l},u.context=function(t){return arguments.length?(null==t?s=c=null:c=l(s=t),u):s},u}function S(t,e){return et?1:e>=t?0:NaN}function E(t){return t}b.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}};var C=L(w);function I(t){this._curve=t}function L(t){function e(e){return new I(t(e))}return e._curve=t,e}function P(t){var e=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?e(L(t)):e()._curve},t}function z(){return P(k().curve(C))}function D(){var t=M().curve(C),e=t.curve,r=t.lineX0,n=t.lineX1,i=t.lineY0,a=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return P(r())},delete t.lineX0,t.lineEndAngle=function(){return P(n())},delete t.lineX1,t.lineInnerRadius=function(){return P(i())},delete t.lineY0,t.lineOuterRadius=function(){return P(a())},delete t.lineY1,t.curve=function(t){return arguments.length?e(L(t)):e()._curve},t}function O(t,e){return[(e=+e)*Math.cos(t-=Math.PI/2),e*Math.sin(t)]}I.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,e){this._curve.point(e*Math.sin(t),e*-Math.cos(t))}};var R=Array.prototype.slice;function F(t){return t.source}function B(t){return t.target}function j(t){var n=F,i=B,a=T,o=A,s=null;function l(){var r,l=R.call(arguments),c=n.apply(this,l),u=i.apply(this,l);if(s||(s=r=e.path()),t(s,+a.apply(this,(l[0]=c,l)),+o.apply(this,l),+a.apply(this,(l[0]=u,l)),+o.apply(this,l)),r)return s=null,r+""||null}return l.source=function(t){return arguments.length?(n=t,l):n},l.target=function(t){return arguments.length?(i=t,l):i},l.x=function(t){return arguments.length?(a="function"==typeof t?t:r(+t),l):a},l.y=function(t){return arguments.length?(o="function"==typeof t?t:r(+t),l):o},l.context=function(t){return arguments.length?(s=t??null,l):s},l}function N(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e=(e+n)/2,r,e,i,n,i)}function U(t,e,r,n,i){t.moveTo(e,r),t.bezierCurveTo(e,r=(r+i)/2,n,r,n,i)}function V(t,e,r,n,i){var a=O(e,r),o=O(e,r=(r+i)/2),s=O(n,r),l=O(n,i);t.moveTo(a[0],a[1]),t.bezierCurveTo(o[0],o[1],s[0],s[1],l[0],l[1])}var q={draw:function(t,e){var r=Math.sqrt(e/h);t.moveTo(r,0),t.arc(0,0,r,0,f)}},H={draw:function(t,e){var r=Math.sqrt(e/5)/2;t.moveTo(-3*r,-r),t.lineTo(-r,-r),t.lineTo(-r,-3*r),t.lineTo(r,-3*r),t.lineTo(r,-r),t.lineTo(3*r,-r),t.lineTo(3*r,r),t.lineTo(r,r),t.lineTo(r,3*r),t.lineTo(-r,3*r),t.lineTo(-r,r),t.lineTo(-3*r,r),t.closePath()}},G=Math.sqrt(1/3),W=2*G,Z={draw:function(t,e){var r=Math.sqrt(e/W),n=r*G;t.moveTo(0,-r),t.lineTo(n,0),t.lineTo(0,r),t.lineTo(-n,0),t.closePath()}},Y=Math.sin(h/10)/Math.sin(7*h/10),X=Math.sin(f/10)*Y,$=-Math.cos(f/10)*Y,K={draw:function(t,e){var r=Math.sqrt(.8908130915292852*e),n=X*r,i=$*r;t.moveTo(0,-r),t.lineTo(n,i);for(var a=1;a<5;++a){var o=f*a/5,s=Math.cos(o),l=Math.sin(o);t.lineTo(l*r,-s*r),t.lineTo(s*n-l*i,l*n+s*i)}t.closePath()}},J={draw:function(t,e){var r=Math.sqrt(e),n=-r/2;t.rect(n,n,r,r)}},Q=Math.sqrt(3),tt={draw:function(t,e){var r=-Math.sqrt(e/(3*Q));t.moveTo(0,2*r),t.lineTo(-Q*r,-r),t.lineTo(Q*r,-r),t.closePath()}},et=-.5,rt=Math.sqrt(3)/2,nt=1/Math.sqrt(12),it=3*(nt/2+1),at={draw:function(t,e){var r=Math.sqrt(e/it),n=r/2,i=r*nt,a=n,o=r*nt+r,s=-a,l=o;t.moveTo(n,i),t.lineTo(a,o),t.lineTo(s,l),t.lineTo(et*n-rt*i,rt*n+et*i),t.lineTo(et*a-rt*o,rt*a+et*o),t.lineTo(et*s-rt*l,rt*s+et*l),t.lineTo(et*n+rt*i,et*i-rt*n),t.lineTo(et*a+rt*o,et*o-rt*a),t.lineTo(et*s+rt*l,et*l-rt*s),t.closePath()}},ot=[q,H,Z,J,K,tt,at];function st(){}function lt(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function ct(t){this._context=t}function ut(t){this._context=t}function ht(t){this._context=t}function pt(t,e){this._basis=new ct(t),this._beta=e}ct.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:lt(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:lt(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ut.prototype={areaStart:st,areaEnd:st,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:lt(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},ht.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,n=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:lt(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},pt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var n,i=t[0],a=e[0],o=t[r]-i,s=e[r]-a,l=-1;++l<=r;)n=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(i+n*o),this._beta*e[l]+(1-this._beta)*(a+n*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};var ft=function t(e){function r(t){return 1===e?new ct(t):new pt(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function dt(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function mt(t,e){this._context=t,this._k=(1-e)/6}mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:dt(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:dt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var gt=function t(e){function r(t){return new mt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function yt(t,e){this._context=t,this._k=(1-e)/6}yt.prototype={areaStart:st,areaEnd:st,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:dt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var vt=function t(e){function r(t){return new yt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function xt(t,e){this._context=t,this._k=(1-e)/6}xt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:dt(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var _t=function t(e){function r(t){return new xt(t,e)}return r.tension=function(e){return t(+e)},r}(0);function bt(t,e,r){var n=t._x1,i=t._y1,a=t._x2,o=t._y2;if(t._l01_a>u){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);n=(n*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,i=(i*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>u){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/h,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(n,i,a,o,t._x2,t._y2)}function wt(t,e){this._context=t,this._alpha=e}wt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:bt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var Tt=function t(e){function r(t){return e?new wt(t,e):new mt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function At(t,e){this._context=t,this._alpha=e}At.prototype={areaStart:st,areaEnd:st,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:bt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var kt=function t(e){function r(t){return e?new At(t,e):new yt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Mt(t,e){this._context=t,this._alpha=e}Mt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,n=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+n*n,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:bt(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};var St=function t(e){function r(t){return e?new Mt(t,e):new xt(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Et(t){this._context=t}function Ct(t){return t<0?-1:1}function It(t,e,r){var n=t._x1-t._x0,i=e-t._x1,a=(t._y1-t._y0)/(n||i<0&&-0),o=(r-t._y1)/(i||n<0&&-0),s=(a*i+o*n)/(n+i);return(Ct(a)+Ct(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function Lt(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function Pt(t,e,r){var n=t._x0,i=t._y0,a=t._x1,o=t._y1,s=(a-n)/3;t._context.bezierCurveTo(n+s,i+s*e,a-s,o-s*r,a,o)}function zt(t){this._context=t}function Dt(t){this._context=new Ot(t)}function Ot(t){this._context=t}function Rt(t){this._context=t}function Ft(t){var e,r,n=t.length-1,i=new Array(n),a=new Array(n),o=new Array(n);for(i[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)i[e]=(o[e]-i[e+1])/a[e];for(a[n-1]=(t[n]+i[n-1])/2,e=0;e1)for(var r,n,i,a=1,o=t[e[0]],s=o.length;a=0;)r[e]=e;return r}function Ut(t,e){return t[e]}function Vt(t){var e=t.map(qt);return Nt(t).sort((function(t,r){return e[t]-e[r]}))}function qt(t){for(var e,r=-1,n=0,i=t.length,a=-1/0;++ra&&(a=e,n=r);return n}function Ht(t){var e=t.map(Gt);return Nt(t).sort((function(t,r){return e[t]-e[r]}))}function Gt(t){for(var e,r=0,n=-1,i=t.length;++n=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},t.arc=function(){var t=m,o=g,b=r(0),w=null,T=y,A=v,k=x,M=null;function S(){var r,m,g=+t.apply(this,arguments),y=+o.apply(this,arguments),v=T.apply(this,arguments)-p,x=A.apply(this,arguments)-p,S=n(x-v),E=x>v;if(M||(M=r=e.path()),yu)if(S>f-u)M.moveTo(y*a(v),y*l(v)),M.arc(0,0,y,v,x,!E),g>u&&(M.moveTo(g*a(x),g*l(x)),M.arc(0,0,g,x,v,E));else{var C,I,L=v,P=x,z=v,D=x,O=S,R=S,F=k.apply(this,arguments)/2,B=F>u&&(w?+w.apply(this,arguments):c(g*g+y*y)),j=s(n(y-g)/2,+b.apply(this,arguments)),N=j,U=j;if(B>u){var V=d(B/g*l(F)),q=d(B/y*l(F));(O-=2*V)>u?(z+=V*=E?1:-1,D-=V):(O=0,z=D=(v+x)/2),(R-=2*q)>u?(L+=q*=E?1:-1,P-=q):(R=0,L=P=(v+x)/2)}var H=y*a(L),G=y*l(L),W=g*a(D),Z=g*l(D);if(j>u){var Y,X=y*a(P),$=y*l(P),K=g*a(z),J=g*l(z);if(S1?0:t<-1?h:Math.acos(t)}((Q*et+tt*rt)/(c(Q*Q+tt*tt)*c(et*et+rt*rt)))/2),it=c(Y[0]*Y[0]+Y[1]*Y[1]);N=s(j,(g-it)/(nt-1)),U=s(j,(y-it)/(nt+1))}}R>u?U>u?(C=_(K,J,H,G,y,U,E),I=_(X,$,W,Z,y,U,E),M.moveTo(C.cx+C.x01,C.cy+C.y01),Uu&&O>u?N>u?(C=_(W,Z,X,$,g,-N,E),I=_(H,G,K,J,g,-N,E),M.lineTo(C.cx+C.x01,C.cy+C.y01),N0&&(d+=h);for(null!=e?m.sort((function(t,r){return e(g[t],g[r])})):null!=n&&m.sort((function(t,e){return n(r[t],r[e])})),s=0,c=d?(v-p*_)/d:0;s0?h*c:0)+_,g[l]={data:r[l],index:s,value:h,startAngle:y,endAngle:u,padAngle:x};return g}return s.value=function(e){return arguments.length?(t="function"==typeof e?e:r(+e),s):t},s.sortValues=function(t){return arguments.length?(e=t,n=null,s):e},s.sort=function(t){return arguments.length?(n=t,e=null,s):n},s.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:r(+t),s):i},s.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:r(+t),s):a},s.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:r(+t),s):o},s},t.pointRadial=O,t.radialArea=D,t.radialLine=z,t.stack=function(){var t=r([]),e=Nt,n=jt,i=Ut;function a(r){var a,o,s=t.apply(this,arguments),l=r.length,c=s.length,u=new Array(c);for(a=0;a0)for(var r,n,i,a,o,s,l=0,c=t[e[0]].length;l0?(n[0]=a,n[1]=a+=i):i<0?(n[1]=o,n[0]=o+=i):(n[0]=0,n[1]=i)},t.stackOffsetExpand=function(t,e){if((n=t.length)>0){for(var r,n,i,a=0,o=t[0].length;a0){for(var r,n=0,i=t[e[0]],a=i.length;n0&&(n=(r=t[e[0]]).length)>0){for(var r,n,i,a=0,o=1;oa&&(_=a);var o=e.min(i,(function(t){return(v-n-(t.length-1)*_)/e.sum(t,u)}));i.forEach((function(t){t.forEach((function(t,e){t.y1=(t.y0=e)+t.value*o}))})),t.links.forEach((function(t){t.width=t.value*o}))})(),d();for(var a=1,o=k;o>0;--o)l(a*=.99),d(),s(a),d();function s(t){i.forEach((function(r){r.forEach((function(r){if(r.targetLinks.length){var n=(e.sum(r.targetLinks,p)/e.sum(r.targetLinks,u)-h(r))*t;r.y0+=n,r.y1+=n}}))}))}function l(t){i.slice().reverse().forEach((function(r){r.forEach((function(r){if(r.sourceLinks.length){var n=(e.sum(r.sourceLinks,f)/e.sum(r.sourceLinks,u)-h(r))*t;r.y0+=n,r.y1+=n}}))}))}function d(){i.forEach((function(t){var e,r,i,a=n,o=t.length;for(t.sort(c),i=0;i0&&(e.y0+=r,e.y1+=r),a=e.y1+_;if((r=a-_-v)>0)for(a=e.y0-=r,e.y1-=r,i=o-2;i>=0;--i)(r=(e=t[i]).y1+_-a)>0&&(e.y0-=r,e.y1-=r),a=e.y0}))}}(a),E(a),a}function E(t){t.nodes.forEach((function(t){t.sourceLinks.sort(l),t.targetLinks.sort(s)})),t.nodes.forEach((function(t){var e=t.y0,r=e;t.sourceLinks.forEach((function(t){t.y0=e+t.width/2,e+=t.width})),t.targetLinks.forEach((function(t){t.y1=r+t.width/2,r+=t.width}))}))}return S.update=function(t){return E(t),t},S.nodeId=function(t){return arguments.length?(b="function"==typeof t?t:o(t),S):b},S.nodeAlign=function(t){return arguments.length?(w="function"==typeof t?t:o(t),S):w},S.nodeWidth=function(t){return arguments.length?(x=+t,S):x},S.nodePadding=function(t){return arguments.length?(_=+t,S):_},S.nodes=function(t){return arguments.length?(T="function"==typeof t?t:o(t),S):T},S.links=function(t){return arguments.length?(A="function"==typeof t?t:o(t),S):A},S.size=function(e){return arguments.length?(t=n=0,i=+e[0],v=+e[1],S):[i-t,v-n]},S.extent=function(e){return arguments.length?(t=+e[0][0],i=+e[1][0],n=+e[0][1],v=+e[1][1],S):[[t,n],[i,v]]},S.iterations=function(t){return arguments.length?(k=+t,S):k},S},t.sankeyCenter=function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?e.min(t.sourceLinks,i)-1:0},t.sankeyLeft=function(t){return t.depth},t.sankeyRight=function(t,e){return e-1-t.height},t.sankeyJustify=a,t.sankeyLinkHorizontal=function(){return n.linkHorizontal().source(v).target(x)},Object.defineProperty(t,"__esModule",{value:!0})},"object"==typeof t&&typeof e<"u"?n(t,lg(),Cb(),Db()):n(r.d3=r.d3||{},r.d3,r.d3,r.d3)}}),Rb=f({"node_modules/elementary-circuits-directed-graph/johnson.js"(t,e){var r=Mb();e.exports=function(t,e){var n,i=[],a=[],o=[],s={},l=[];function c(t){o[t]=!1,s.hasOwnProperty(t)&&Object.keys(s[t]).forEach((function(e){delete s[t][e],o[e]&&c(e)}))}function u(t){var e,r,i=!1;for(a.push(t),o[t]=!0,e=0;e=e}))}(e);for(var n,i=r(t).components.filter((function(t){return t.length>1})),a=1/0,o=0;oe.source.column)}function M(t,e){var r=0;t.sourceLinks.forEach((function(t){r=t.circular&&!W(t,e)?r+1:r}));var n=0;return t.targetLinks.forEach((function(t){n=t.circular&&!W(t,e)?n+1:n})),r+n}function S(t){var e=t.source.sourceLinks,r=0;e.forEach((function(t){r=t.circular?r+1:r}));var n=t.target.targetLinks,i=0;return n.forEach((function(t){i=t.circular?i+1:i})),!(r>1||i>1)}function E(t,e,r){return t.sort(I),t.forEach((function(n,i){var a=0;if(W(n,r)&&S(n))n.circularPathData.verticalBuffer=a+n.width/2;else{for(var o=0;oa?s:a}n.circularPathData.verticalBuffer=a+n.width/2}})),t}function C(t,r,i,a){var o=e.min(t.links,(function(t){return t.source.y0}));t.links.forEach((function(t){t.circular&&(t.circularPathData={})})),E(t.links.filter((function(t){return"top"==t.circularLinkType})),r,a),E(t.links.filter((function(t){return"bottom"==t.circularLinkType})),r,a),t.links.forEach((function(e){if(e.circular){if(e.circularPathData.arcRadius=e.width+w,e.circularPathData.leftNodeBuffer=5,e.circularPathData.rightNodeBuffer=5,e.circularPathData.sourceWidth=e.source.x1-e.source.x0,e.circularPathData.sourceX=e.source.x0+e.circularPathData.sourceWidth,e.circularPathData.targetX=e.target.x0,e.circularPathData.sourceY=e.y0,e.circularPathData.targetY=e.y1,W(e,a)&&S(e))e.circularPathData.leftSmallArcRadius=w+e.width/2,e.circularPathData.leftLargeArcRadius=w+e.width/2,e.circularPathData.rightSmallArcRadius=w+e.width/2,e.circularPathData.rightLargeArcRadius=w+e.width/2,"bottom"==e.circularLinkType?(e.circularPathData.verticalFullExtent=e.source.y1+b+e.circularPathData.verticalBuffer,e.circularPathData.verticalLeftInnerExtent=e.circularPathData.verticalFullExtent-e.circularPathData.leftLargeArcRadius,e.circularPathData.verticalRightInnerExtent=e.circularPathData.verticalFullExtent-e.circularPathData.rightLargeArcRadius):(e.circularPathData.verticalFullExtent=e.source.y0-b-e.circularPathData.verticalBuffer,e.circularPathData.verticalLeftInnerExtent=e.circularPathData.verticalFullExtent+e.circularPathData.leftLargeArcRadius,e.circularPathData.verticalRightInnerExtent=e.circularPathData.verticalFullExtent+e.circularPathData.rightLargeArcRadius);else{var s=e.source.column,l=e.circularLinkType,c=t.links.filter((function(t){return t.source.column==s&&t.circularLinkType==l}));"bottom"==e.circularLinkType?c.sort(P):c.sort(L);var u=0;c.forEach((function(t,n){t.circularLinkID==e.circularLinkID&&(e.circularPathData.leftSmallArcRadius=w+e.width/2+u,e.circularPathData.leftLargeArcRadius=w+e.width/2+n*r+u),u+=t.width})),s=e.target.column,c=t.links.filter((function(t){return t.target.column==s&&t.circularLinkType==l})),"bottom"==e.circularLinkType?c.sort(D):c.sort(z),u=0,c.forEach((function(t,n){t.circularLinkID==e.circularLinkID&&(e.circularPathData.rightSmallArcRadius=w+e.width/2+u,e.circularPathData.rightLargeArcRadius=w+e.width/2+n*r+u),u+=t.width})),"bottom"==e.circularLinkType?(e.circularPathData.verticalFullExtent=Math.max(i,e.source.y1,e.target.y1)+b+e.circularPathData.verticalBuffer,e.circularPathData.verticalLeftInnerExtent=e.circularPathData.verticalFullExtent-e.circularPathData.leftLargeArcRadius,e.circularPathData.verticalRightInnerExtent=e.circularPathData.verticalFullExtent-e.circularPathData.rightLargeArcRadius):(e.circularPathData.verticalFullExtent=o-b-e.circularPathData.verticalBuffer,e.circularPathData.verticalLeftInnerExtent=e.circularPathData.verticalFullExtent+e.circularPathData.leftLargeArcRadius,e.circularPathData.verticalRightInnerExtent=e.circularPathData.verticalFullExtent+e.circularPathData.rightLargeArcRadius)}e.circularPathData.leftInnerExtent=e.circularPathData.sourceX+e.circularPathData.leftNodeBuffer,e.circularPathData.rightInnerExtent=e.circularPathData.targetX-e.circularPathData.rightNodeBuffer,e.circularPathData.leftFullExtent=e.circularPathData.sourceX+e.circularPathData.leftLargeArcRadius+e.circularPathData.leftNodeBuffer,e.circularPathData.rightFullExtent=e.circularPathData.targetX-e.circularPathData.rightLargeArcRadius-e.circularPathData.rightNodeBuffer}if(e.circular)e.path=function(t){return"top"==t.circularLinkType?"M"+t.circularPathData.sourceX+" "+t.circularPathData.sourceY+" L"+t.circularPathData.leftInnerExtent+" "+t.circularPathData.sourceY+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftSmallArcRadius+" 0 0 0 "+t.circularPathData.leftFullExtent+" "+(t.circularPathData.sourceY-t.circularPathData.leftSmallArcRadius)+" L"+t.circularPathData.leftFullExtent+" "+t.circularPathData.verticalLeftInnerExtent+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftLargeArcRadius+" 0 0 0 "+t.circularPathData.leftInnerExtent+" "+t.circularPathData.verticalFullExtent+" L"+t.circularPathData.rightInnerExtent+" "+t.circularPathData.verticalFullExtent+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightLargeArcRadius+" 0 0 0 "+t.circularPathData.rightFullExtent+" "+t.circularPathData.verticalRightInnerExtent+" L"+t.circularPathData.rightFullExtent+" "+(t.circularPathData.targetY-t.circularPathData.rightSmallArcRadius)+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightSmallArcRadius+" 0 0 0 "+t.circularPathData.rightInnerExtent+" "+t.circularPathData.targetY+" L"+t.circularPathData.targetX+" "+t.circularPathData.targetY:"M"+t.circularPathData.sourceX+" "+t.circularPathData.sourceY+" L"+t.circularPathData.leftInnerExtent+" "+t.circularPathData.sourceY+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftSmallArcRadius+" 0 0 1 "+t.circularPathData.leftFullExtent+" "+(t.circularPathData.sourceY+t.circularPathData.leftSmallArcRadius)+" L"+t.circularPathData.leftFullExtent+" "+t.circularPathData.verticalLeftInnerExtent+" A"+t.circularPathData.leftLargeArcRadius+" "+t.circularPathData.leftLargeArcRadius+" 0 0 1 "+t.circularPathData.leftInnerExtent+" "+t.circularPathData.verticalFullExtent+" L"+t.circularPathData.rightInnerExtent+" "+t.circularPathData.verticalFullExtent+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightLargeArcRadius+" 0 0 1 "+t.circularPathData.rightFullExtent+" "+t.circularPathData.verticalRightInnerExtent+" L"+t.circularPathData.rightFullExtent+" "+(t.circularPathData.targetY+t.circularPathData.rightSmallArcRadius)+" A"+t.circularPathData.rightLargeArcRadius+" "+t.circularPathData.rightSmallArcRadius+" 0 0 1 "+t.circularPathData.rightInnerExtent+" "+t.circularPathData.targetY+" L"+t.circularPathData.targetX+" "+t.circularPathData.targetY}(e);else{var h=n.linkHorizontal().source((function(t){return[t.source.x0+(t.source.x1-t.source.x0),t.y0]})).target((function(t){return[t.target.x0,t.y1]}));e.path=h(e)}}))}function I(t,e){return O(t)==O(e)?"bottom"==t.circularLinkType?P(t,e):L(t,e):O(e)-O(t)}function L(t,e){return t.y0-e.y0}function P(t,e){return e.y0-t.y0}function z(t,e){return t.y1-e.y1}function D(t,e){return e.y1-t.y1}function O(t){return t.target.column-t.source.column}function R(t){return t.target.x0-t.source.x1}function F(t,e){var r=A(t),n=R(e)/Math.tan(r);return"up"==G(t)?t.y1+n:t.y1-n}function B(t,e){var r=A(t),n=R(e)/Math.tan(r);return"up"==G(t)?t.y1-n:t.y1+n}function j(t,e,r,n){t.links.forEach((function(i){if(!i.circular&&i.target.column-i.source.column>1){var a=i.source.column+1,o=i.target.column-1,s=1,l=o-a+1;for(s=1;a<=o;a++,s++)t.nodes.forEach((function(o){if(o.column==a){var c,u=s/(l+1),h=Math.pow(1-u,3),p=3*u*Math.pow(1-u,2),f=3*Math.pow(u,2)*(1-u),d=Math.pow(u,3),m=h*i.y0+p*i.y0+f*i.y1+d*i.y1,g=m-i.width/2,y=m+i.width/2;g>o.y0&&go.y0&&yo.y1)&&(c=y-o.y0+10,o=U(o,c,e,r),t.nodes.forEach((function(t){_(t,n)==_(o,n)||t.column!=o.column||t.y0o.y1&&U(t,c,e,r)})))}}))}}))}function N(t,e){return t.y0>e.y0&&t.y0e.y0&&t.y1e.y1}function U(t,e,r,n){return t.y0+e>=r&&t.y1+e<=n&&(t.y0=t.y0+e,t.y1=t.y1+e,t.targetLinks.forEach((function(t){t.y1=t.y1+e})),t.sourceLinks.forEach((function(t){t.y0=t.y0+e}))),t}function V(t,e,r,n){t.nodes.forEach((function(i){n&&i.y+(i.y1-i.y0)>e&&(i.y=i.y-(i.y+(i.y1-i.y0)-e));var a=t.links.filter((function(t){return _(t.source,r)==_(i,r)})),o=a.length;o>1&&a.sort((function(t,e){if(!t.circular&&!e.circular){if(t.target.column==e.target.column)return t.y1-e.y1;if(!H(t,e))return t.y1-e.y1;if(t.target.column>e.target.column){var r=B(e,t);return t.y1-r}if(e.target.column>t.target.column)return B(t,e)-e.y1}return t.circular&&!e.circular?"top"==t.circularLinkType?-1:1:e.circular&&!t.circular?"top"==e.circularLinkType?1:-1:t.circular&&e.circular?t.circularLinkType===e.circularLinkType&&"top"==t.circularLinkType?t.target.column===e.target.column?t.target.y1-e.target.y1:e.target.column-t.target.column:t.circularLinkType===e.circularLinkType&&"bottom"==t.circularLinkType?t.target.column===e.target.column?e.target.y1-t.target.y1:t.target.column-e.target.column:"top"==t.circularLinkType?-1:1:void 0}));var s=i.y0;a.forEach((function(t){t.y0=s+t.width/2,s+=t.width})),a.forEach((function(t,e){if("bottom"==t.circularLinkType){for(var r=e+1,n=0;r1&&n.sort((function(t,e){if(!t.circular&&!e.circular){if(t.source.column==e.source.column)return t.y0-e.y0;if(!H(t,e))return t.y0-e.y0;if(e.source.column0?"up":"down"}function W(t,e){return _(t.source,e)==_(t.target,e)}t.sankeyCircular=function(){var t,n,a=0,_=0,A=1,k=1,S=24,E=g,I=o,L=y,P=v,z=32,D=2,O=null;function R(){var o={nodes:L.apply(null,arguments),links:P.apply(null,arguments)};(function(t){t.nodes.forEach((function(t,e){t.index=e,t.sourceLinks=[],t.targetLinks=[]}));var e=r.map(t.nodes,E);t.links.forEach((function(t,r){t.index=r;var n=t.source,i=t.target;"object"!==(typeof n>"u"?"undefined":l(n))&&(n=t.source=x(e,n)),"object"!==(typeof i>"u"?"undefined":l(i))&&(i=t.target=x(e,i)),n.sourceLinks.push(t),i.targetLinks.push(t)}))})(o),function(t,e,r){var n=0;if(null===r){for(var a=[],o=0;o0?r+b+w:r,bottom:n=n>0?n+b+w:n,left:a=a>0?a+b+w:a,right:i=i>0?i+b+w:i}}(i),u=function(t,r){var n=e.max(t.nodes,(function(t){return t.column})),i=A-a,o=k-_,s=i/(i+r.right+r.left),l=o/(o+r.top+r.bottom);return a=a*s+r.left,A=0==r.right?A:A*s,_=_*l+r.top,k*=l,t.nodes.forEach((function(t){t.x0=a+t.column*((A-a-S)/n),t.x1=t.x0+S})),l}(i,c);s*=u,i.links.forEach((function(t){t.width=t.value*s})),l.forEach((function(t){var e=t.length;t.forEach((function(t,n){t.depth==l.length-1&&1==e||0==t.depth&&1==e?(t.y0=k/2-t.value*s,t.y1=t.y0+t.value*s):t.partOfCycle?0==M(t,r)?(t.y0=k/2+n,t.y1=t.y0+t.value*s):"top"==t.circularLinkType?(t.y0=_+n,t.y1=t.y0+t.value*s):(t.y0=k-t.value*s-n,t.y1=t.y0+t.value*s):0==c.top||0==c.bottom?(t.y0=(k-_)/e*n,t.y1=t.y0+t.value*s):(t.y0=(k-_)/2-e/2+n,t.y1=t.y0+t.value*s)}))}))})(s),y();for(var c=1,u=o;u>0;--u)g(c*=.99,s),y();function g(t,r){var n=l.length;l.forEach((function(i){var a=i.length,o=i[0].depth;i.forEach((function(i){var s;if((i.sourceLinks.length||i.targetLinks.length)&&!(i.partOfCycle&&M(i,r)>0))if(0==o&&1==a)s=i.y1-i.y0,i.y0=k/2-s/2,i.y1=k/2+s/2;else if(o==n-1&&1==a)s=i.y1-i.y0,i.y0=k/2-s/2,i.y1=k/2+s/2;else{var l=e.mean(i.sourceLinks,m),c=e.mean(i.targetLinks,d),u=((l&&c?(l+c)/2:l||c)-f(i))*t;i.y0+=u,i.y1+=u}}))}))}function y(){l.forEach((function(e){var r,n,i,a=_,o=e.length;for(e.sort(h),i=0;i0&&(r.y0+=n,r.y1+=n),a=r.y1+t;if((n=a-t-k)>0)for(a=r.y0-=n,r.y1-=n,i=o-2;i>=0;--i)(n=(r=e[i]).y1+t-a)>0&&(r.y0-=n,r.y1-=n),a=r.y0}))}}(o,z,E),F(o);for(var s=0;s<4;s++)V(o,k,E),q(o,0,E),j(o,_,k,E),V(o,k,E),q(o,0,E);return function(t,r,n){var i=t.nodes,a=t.links,o=!1,s=!1;if(a.forEach((function(t){"top"==t.circularLinkType?o=!0:"bottom"==t.circularLinkType&&(s=!0)})),0==o||0==s){var l=e.min(i,(function(t){return t.y0})),c=e.max(i,(function(t){return t.y1})),u=(n-r)/(c-l);i.forEach((function(t){var e=(t.y1-t.y0)*u;t.y0=(t.y0-l)*u,t.y1=t.y0+e})),a.forEach((function(t){t.y0=(t.y0-l)*u,t.y1=(t.y1-l)*u,t.width=t.width*u}))}}(o,_,k),C(o,D,k,E),o}function F(t){t.nodes.forEach((function(t){t.sourceLinks.sort(u),t.targetLinks.sort(c)})),t.nodes.forEach((function(t){var e=t.y0,r=e,n=t.y1,i=n;t.sourceLinks.forEach((function(t){t.circular?(t.y0=n-t.width/2,n-=t.width):(t.y0=e+t.width/2,e+=t.width)})),t.targetLinks.forEach((function(t){t.circular?(t.y1=i-t.width/2,i-=t.width):(t.y1=r+t.width/2,r+=t.width)}))}))}return R.nodeId=function(t){return arguments.length?(E="function"==typeof t?t:s(t),R):E},R.nodeAlign=function(t){return arguments.length?(I="function"==typeof t?t:s(t),R):I},R.nodeWidth=function(t){return arguments.length?(S=+t,R):S},R.nodePadding=function(e){return arguments.length?(t=+e,R):t},R.nodes=function(t){return arguments.length?(L="function"==typeof t?t:s(t),R):L},R.links=function(t){return arguments.length?(P="function"==typeof t?t:s(t),R):P},R.size=function(t){return arguments.length?(a=_=0,A=+t[0],k=+t[1],R):[A-a,k-_]},R.extent=function(t){return arguments.length?(a=+t[0][0],A=+t[1][0],_=+t[0][1],k=+t[1][1],R):[[a,_],[A,k]]},R.iterations=function(t){return arguments.length?(z=+t,R):z},R.circularLinkGap=function(t){return arguments.length?(D=+t,R):D},R.nodePaddingRatio=function(t){return arguments.length?(n=+t,R):n},R.sortNodes=function(t){return arguments.length?(O=t,R):O},R.update=function(t){return T(t,E),F(t),t.links.forEach((function(t){t.circular&&(t.circularLinkType=t.y0+t.y1o+d&&(a+=1,e=s.x0),o=s.x0,i[a]||(i[a]=[]),i[a].push(s),r=e-s.x0,s.x0+=r,s.x1+=r}return i})(x=k.nodes).forEach((function(t){var e,r,n,i=0,a=t.length;for(t.sort((function(t,e){return t.y0-e.y0})),n=0;n=i||(r=i-e.y0)>1e-6&&(e.y0+=r,e.y1+=r),i=e.y1+f}));n.update(k)}return{circular:b,key:r,trace:c,guid:h.randstr(),horizontal:p,width:g,height:y,nodePad:c.node.pad,nodeLineColor:c.node.line.color,nodeLineWidth:c.node.line.width,linkLineColor:c.link.line.color,linkLineWidth:c.link.line.width,linkArrowLength:c.link.arrowlen,valueFormat:c.valueformat,valueSuffix:c.valuesuffix,textFont:c.textfont,translateX:u.x[0]*t.width+t.margin.l,translateY:t.height-u.y[1]*t.height+t.margin.t,dragParallel:p?y:g,dragPerpendicular:p?g:y,arrangement:c.arrangement,sankey:n,graph:k,forceLayouts:{},interactionState:{dragInProgress:!1,hovered:!1}}}function M(t,e,r){var n=l(e.color),i=l(e.hovercolor),a=e.source.label+"|"+e.target.label+"__"+r;return e.trace=t.trace,e.curveNumber=t.trace.index,{circular:t.circular,key:a,traceId:t.key,pointNumber:e.pointNumber,link:e,tinyColorHue:c.tinyRGB(n),tinyColorAlpha:n.getAlpha(),tinyColorHoverHue:c.tinyRGB(i),tinyColorHoverAlpha:i.getAlpha(),linkPath:S,linkLineColor:t.linkLineColor,linkLineWidth:t.linkLineWidth,linkArrowLength:t.linkArrowLength,valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,parent:t,interactionState:t.interactionState,flow:e.flow}}function S(){return function(t){var e=t.linkArrowLength;if(t.link.circular)return function(t,e){var r="",n=t.width/2,i=t.circularPathData,a=i.sourceX+i.verticalBuffer0?" L "+i.targetX+" "+i.targetY:"")+"Z"):(r="M "+(i.targetX-e)+" "+(i.targetY-n)+" L "+(i.rightInnerExtent-e)+" "+(i.targetY-n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightSmallArcRadius+n)+" 0 0 0 "+(i.rightFullExtent-n-e)+" "+(i.targetY+i.rightSmallArcRadius)+" L "+(i.rightFullExtent-n-e)+" "+i.verticalRightInnerExtent,r+=a&&o?" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-n-e)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent+n-e-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:a?" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent-e-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.leftFullExtent+n+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-e)+" "+(i.verticalFullExtent+n)+" L "+i.leftInnerExtent+" "+(i.verticalFullExtent+n)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent,r+=" L "+(i.leftFullExtent+n)+" "+(i.sourceY+i.leftSmallArcRadius)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftSmallArcRadius+n)+" 0 0 0 "+i.leftInnerExtent+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY+n)+" L "+i.leftInnerExtent+" "+(i.sourceY+n)+" A "+(i.leftLargeArcRadius-n)+" "+(i.leftSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n)+" "+(i.sourceY+i.leftSmallArcRadius)+" L "+(i.leftFullExtent-n)+" "+i.verticalLeftInnerExtent,r+=a&&o?" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.rightFullExtent+n-e+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-e)+" "+i.verticalRightInnerExtent:a?" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent-e-n)+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightFullExtent+n-e)+" "+i.verticalRightInnerExtent:" A "+(i.leftLargeArcRadius-n)+" "+(i.leftLargeArcRadius-n)+" 0 0 1 "+i.leftInnerExtent+" "+(i.verticalFullExtent-n)+" L "+(i.rightInnerExtent-e)+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightLargeArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-e)+" "+i.verticalRightInnerExtent,r+=" L "+(i.rightFullExtent+n-e)+" "+(i.targetY+i.rightSmallArcRadius)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightInnerExtent-e)+" "+(i.targetY+n)+" L "+(i.targetX-e)+" "+(i.targetY+n)+(e>0?" L "+i.targetX+" "+i.targetY:"")+"Z"),r}(t.link,e);var r=Math.abs((t.link.target.x0-t.link.source.x1)/2);e>r&&(e=r);var i=t.link.source.x1,a=t.link.target.x0-e,o=n(i,a),s=o(.5),l=o(.5),c=t.link.y0-t.link.width/2,u=t.link.y0+t.link.width/2,h=t.link.y1-t.link.width/2,p=t.link.y1+t.link.width/2,f="M"+i+","+c,d="C"+s+","+c+" "+l+","+h+" "+a+","+h,m="C"+l+","+p+" "+s+","+u+" "+i+","+u,g=e>0?"L"+(a+e)+","+(h+t.link.width/2):"";return f+d+(g+="L"+a+","+p)+m+"Z"}}function E(t,e){var r=l(e.color),n=s.nodePadAcross,i=t.nodePad/2;e.dx=e.x1-e.x0,e.dy=e.y1-e.y0;var a=e.dx,o=Math.max(.5,e.dy),u="node_"+e.pointNumber;return e.group&&(u=h.randstr()),e.trace=t.trace,e.curveNumber=t.trace.index,{index:e.pointNumber,key:u,partOfGroup:e.partOfGroup||!1,group:e.group,traceId:t.key,trace:t.trace,node:e,nodePad:t.nodePad,nodeLineColor:t.nodeLineColor,nodeLineWidth:t.nodeLineWidth,textFont:t.textFont,size:t.horizontal?t.height:t.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:t.horizontal?e.dy/2+1:e.dx/2+1,left:1===e.originalLayer,sizeAcross:t.width,forceLayouts:t.forceLayouts,horizontal:t.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:c.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:t.valueFormat,valueSuffix:t.valueSuffix,sankey:t.sankey,graph:t.graph,arrangement:t.arrangement,uniqueNodeLabelPathId:[t.guid,t.key,u].join("_"),interactionState:t.interactionState,figure:t}}function C(t){t.attr("transform",(function(t){return p(t.node.x0.toFixed(3),t.node.y0.toFixed(3))}))}function I(t){t.call(C)}function L(t,e){t.call(I),e.attr("d",S())}function P(t){t.attr("width",(function(t){return t.node.x1-t.node.x0})).attr("height",(function(t){return t.visibleHeight}))}function z(t){return t.link.width>1||t.linkLineWidth>0}function D(t){return p(t.translateX,t.translateY)+(t.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function R(t,e,r){t.on(".basic",null).on("mouseover.basic",(function(t){!t.interactionState.dragInProgress&&!t.partOfGroup&&(r.hover(this,t,e),t.interactionState.hovered=[this,t])})).on("mousemove.basic",(function(t){!t.interactionState.dragInProgress&&!t.partOfGroup&&(r.follow(this,t),t.interactionState.hovered=[this,t])})).on("mouseout.basic",(function(t){!t.interactionState.dragInProgress&&!t.partOfGroup&&(r.unhover(this,t,e),t.interactionState.hovered=!1)})).on("click.basic",(function(t){t.interactionState.hovered&&(r.unhover(this,t,e),t.interactionState.hovered=!1),!t.interactionState.dragInProgress&&!t.partOfGroup&&r.select(this,t,e)}))}function F(t,e,n,a){var o=i.behavior.drag().origin((function(t){return{x:t.node.x0+t.visibleWidth/2,y:t.node.y0+t.visibleHeight/2}})).on("dragstart",(function(i){if("fixed"!==i.arrangement&&(h.ensureSingle(a._fullLayout._infolayer,"g","dragcover",(function(t){a._fullLayout._dragCover=t})),h.raiseToTop(this),i.interactionState.dragInProgress=i.node,j(i.node),i.interactionState.hovered&&(n.nodeEvents.unhover.apply(0,i.interactionState.hovered),i.interactionState.hovered=!1),"snap"===i.arrangement)){var o=i.traceId+"|"+i.key;i.forceLayouts[o]?i.forceLayouts[o].alpha(1):function(t,e,n){!function(t){for(var e=0;e0&&n.forceLayouts[e].alpha(0)}}(0,e,i,n)).stop()}(0,o,i),function(t,e,r,n,i){window.requestAnimationFrame((function a(){var o;for(o=0;o0)window.requestAnimationFrame(a);else{var l=r.node.originalX;r.node.x0=l-r.visibleWidth/2,r.node.x1=l+r.visibleWidth/2,B(r,i)}}))}(t,e,i,o,a)}})).on("drag",(function(r){if("fixed"!==r.arrangement){var n=i.event.x,a=i.event.y;"snap"===r.arrangement?(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2,r.node.y0=a-r.visibleHeight/2,r.node.y1=a+r.visibleHeight/2):("freeform"===r.arrangement&&(r.node.x0=n-r.visibleWidth/2,r.node.x1=n+r.visibleWidth/2),a=Math.max(0,Math.min(r.size-r.visibleHeight/2,a)),r.node.y0=a-r.visibleHeight/2,r.node.y1=a+r.visibleHeight/2),j(r.node),"snap"!==r.arrangement&&(r.sankey.update(r.graph),L(t.filter(N(r)),e))}})).on("dragend",(function(t){if("fixed"!==t.arrangement){t.interactionState.dragInProgress=!1;for(var e=0;e"),color:b(l,"bgcolor")||s.addOpacity(m.color,1),borderColor:b(l,"bordercolor"),fontFamily:b(l,"font.family"),fontSize:b(l,"font.size"),fontColor:b(l,"font.color"),fontWeight:b(l,"font.weight"),fontStyle:b(l,"font.style"),fontVariant:b(l,"font.variant"),fontTextcase:b(l,"font.textcase"),fontLineposition:b(l,"font.lineposition"),fontShadow:b(l,"font.shadow"),nameLength:b(l,"namelength"),textAlign:b(l,"align"),idealAlign:r.event.x"),color:b(s,"bgcolor")||a.tinyColorHue,borderColor:b(s,"bordercolor"),fontFamily:b(s,"font.family"),fontSize:b(s,"font.size"),fontColor:b(s,"font.color"),fontWeight:b(s,"font.weight"),fontStyle:b(s,"font.style"),fontVariant:b(s,"font.variant"),fontTextcase:b(s,"font.textcase"),fontLineposition:b(s,"font.lineposition"),fontShadow:b(s,"font.shadow"),nameLength:b(s,"namelength"),textAlign:b(s,"align"),idealAlign:"left",hovertemplate:s.hovertemplate,hovertemplateLabels:v,eventData:[a.node]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:t});p(w,.85),f(w)}}},unhover:function(e,i,a){!1!==t._fullLayout.hovermode&&(r.select(e).call(y,i,a),"skip"!==i.node.trace.node.hoverinfo&&(i.node.fullData=i.node.trace,t.emit("plotly_unhover",{event:r.event,points:[i.node]})),o.loneUnhover(n._hoverlayer.node()))},select:function(e,n,i){var a=n.node;a.originalEvent=r.event,t._hoverdata=[a],r.select(e).call(y,n,i),o.click(t,{target:!0})}}})}}}),Ub=f({"src/traces/sankey/base_plot.js"(t){var e=Pt().overrideAll,r=we().getModuleCalcData,n=Nb(),i=j(),a=fr(),o=pr(),s=En().prepSelect,l=le(),c=qt(),u="sankey";function h(t,e){var r=t._fullData[e],n=t._fullLayout,i=n.dragmode,u="pan"===n.dragmode?"move":"crosshair",h=r._bgRect;if(h&&"pan"!==i&&"zoom"!==i){a(h,u);var p={_id:"x",c2p:l.identity,_offset:r._sankey.translateX,_length:r._sankey.width},f={_id:"y",c2p:l.identity,_offset:r._sankey.translateY,_length:r._sankey.height},d={gd:t,element:h.node(),plotinfo:{id:e,xaxis:p,yaxis:f,fillRangeItems:l.noop},subplot:e,xaxes:[p],yaxes:[f],doneFnCompleted:function(r){var n,i=t._fullData[e],a=i.node.groups.slice(),o=[];function s(t){for(var e=i._sankey.graph.nodes,r=0;r0}function A(t){t.each((function(t){v.stroke(r.select(this),t.line.color)})).each((function(t){v.fill(r.select(this),t.color)})).style("stroke-width",(function(t){return t.line.width}))}function k(t,e,r){var n=t._fullLayout,i=a.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},e),o={type:"linear",_id:"x"+e._id},s={letter:"x",font:n.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function l(t,e){return a.coerce(i,o,y,t,e)}return d(i,o,l,s,n),m(i,o,l,s),o}function M(t,e,r){return[Math.min(e/t.width,r/t.height),t,e+"x"+r]}function S(t,e,n,i){var a=document.createElementNS("http://www.w3.org/2000/svg","text"),o=r.select(a);return o.text(t).attr("x",0).attr("y",0).attr("text-anchor",n).attr("data-unformatted",t).call(p.convertToTspans,i).call(u.font,e),u.bBox(o.node())}function E(t,e,r,n,i,o){var s="_cache"+e;t[s]&&t[s].key===i||(t[s]={key:i,value:r});var l=a.aggNums(o,null,[t[s].value,n],2);return t[s].value=l,l}e.exports=function(t,e,d,m){var g,y=t._fullLayout;T(d)&&m&&(g=m()),a.makeTraceGroups(y._indicatorlayer,e,"trace").each((function(e){var m,x,C,I,L,P=e[0].trace,z=r.select(this),D=P._hasGauge,O=P._isAngular,R=P._isBullet,F=P.domain,B={w:y._size.w*(F.x[1]-F.x[0]),h:y._size.h*(F.y[1]-F.y[0]),l:y._size.l+y._size.w*F.x[0],r:y._size.r+y._size.w*(1-F.x[1]),t:y._size.t+y._size.h*(1-F.y[1]),b:y._size.b+y._size.h*F.y[0]},j=B.l+B.w/2,N=B.t+B.h/2,U=Math.min(B.w/2,B.h),V=h.innerRadius*U,q=P.align||"center";if(x=N,D){if(O&&(m=j,x=N+U/2,C=function(t){return function(t,e){return[e/Math.sqrt(t.width/2*(t.width/2)+t.height*t.height),t,e]}(t,.9*V)}),R){var H=h.bulletPadding,G=1-h.bulletNumberDomainSize+H;m=B.l+(G+(1-G)*b[q])*B.w,C=function(t){return M(t,(h.bulletNumberDomainSize-H)*B.w,B.h)}}}else m=B.l+b[q]*B.w,C=function(t){return M(t,B.w,B.h)};!function(t,e,n,l){var c,h,d,m=n[0].trace,g=l.numbersX,y=l.numbersY,x=m.align||"center",A=_[x],M=l.transitionOpts,C=l.onComplete,I=a.ensureSingle(e,"g","numbers"),L=[];m._hasNumber&&L.push("number"),m._hasDelta&&(L.push("delta"),"left"===m.delta.position&&L.reverse());var P=I.selectAll("text").data(L);function z(e,r,n,i){if(!e.match("s")||n>=0==i>=0||r(n).slice(-1).match(w)||r(i).slice(-1).match(w))return r;var a=e.slice().replace("s","f").replace(/\d+/,(function(t){return parseInt(t)-1})),o=k(t,{tickformat:a});return function(t){return Math.abs(t)<1?f.tickText(o,t).text:r(t)}}P.enter().append("text"),P.attr("text-anchor",(function(){return A})).attr("class",(function(t){return t})).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),P.exit().remove();var D,O=m.mode+m.align;if(m._hasDelta&&(D=function(){var e=k(t,{tickformat:m.delta.valueformat},m._range);e.setScale(),f.prepTicks(e);var a=function(t){return f.tickText(e,t).text},o=m.delta.suffix,s=m.delta.prefix,l=function(t){return m.delta.relative?t.relativeDelta:t.delta},c=function(t,e){return 0===t||"number"!=typeof t||isNaN(t)?"-":(t>0?m.delta.increasing.symbol:m.delta.decreasing.symbol)+s+e(t)+o},d=function(t){return t.delta>=0?m.delta.increasing.color:m.delta.decreasing.color};void 0===m._deltaLastValue&&(m._deltaLastValue=l(n[0]));var g=I.select("text.delta");function y(){g.text(c(l(n[0]),a)).call(v.fill,d(n[0])).call(p.convertToTspans,t)}return g.call(u.font,m.delta.font).call(v.fill,d({delta:m._deltaLastValue})),T(M)?g.transition().duration(M.duration).ease(M.easing).tween("text",(function(){var t=r.select(this),e=l(n[0]),o=m._deltaLastValue,s=z(m.delta.valueformat,a,o,e),u=i(o,e);return m._deltaLastValue=e,function(e){t.text(c(u(e),s)),t.call(v.fill,d({delta:u(e)}))}})).each("end",(function(){y(),C&&C()})).each("interrupt",(function(){y(),C&&C()})):y(),h=S(c(l(n[0]),a),m.delta.font,A,t),g}(),O+=m.delta.position+m.delta.font.size+m.delta.font.family+m.delta.valueformat,O+=m.delta.increasing.symbol+m.delta.decreasing.symbol,d=h),m._hasNumber&&(function(){var e=k(t,{tickformat:m.number.valueformat},m._range);e.setScale(),f.prepTicks(e);var a=function(t){return f.tickText(e,t).text},o=m.number.suffix,s=m.number.prefix,l=I.select("text.number");function h(){var e="number"==typeof n[0].y?s+a(n[0].y)+o:"-";l.text(e).call(u.font,m.number.font).call(p.convertToTspans,t)}T(M)?l.transition().duration(M.duration).ease(M.easing).each("end",(function(){h(),C&&C()})).each("interrupt",(function(){h(),C&&C()})).attrTween("text",(function(){var t=r.select(this),e=i(n[0].lastY,n[0].y);m._lastValue=n[0].y;var l=z(m.number.valueformat,a,n[0].lastY,n[0].y);return function(r){t.text(s+l(e(r))+o)}})):h(),c=S(s+a(n[0].y)+o,m.number.font,A,t)}(),O+=m.number.font.size+m.number.font.family+m.number.valueformat+m.number.suffix+m.number.prefix,d=c),m._hasDelta&&m._hasNumber){var R,F,B=[(c.left+c.right)/2,(c.top+c.bottom)/2],j=[(h.left+h.right)/2,(h.top+h.bottom)/2],N=.75*m.delta.font.size;"left"===m.delta.position&&(R=E(m,"deltaPos",0,-1*(c.width*b[m.align]+h.width*(1-b[m.align])+N),O,Math.min),F=B[1]-j[1],d={width:c.width+h.width+N,height:Math.max(c.height,h.height),left:h.left+R,right:c.right,top:Math.min(c.top,h.top+F),bottom:Math.max(c.bottom,h.bottom+F)}),"right"===m.delta.position&&(R=E(m,"deltaPos",0,c.width*(1-b[m.align])+h.width*b[m.align]+N,O,Math.max),F=B[1]-j[1],d={width:c.width+h.width+N,height:Math.max(c.height,h.height),left:c.left,right:h.right+R,top:Math.min(c.top,h.top+F),bottom:Math.max(c.bottom,h.bottom+F)}),"bottom"===m.delta.position&&(R=null,F=h.height,d={width:Math.max(c.width,h.width),height:c.height+h.height,left:Math.min(c.left,h.left),right:Math.max(c.right,h.right),top:c.bottom-c.height,bottom:c.bottom+h.height}),"top"===m.delta.position&&(R=null,F=c.top,d={width:Math.max(c.width,h.width),height:c.height+h.height,left:Math.min(c.left,h.left),right:Math.max(c.right,h.right),top:c.bottom-c.height-h.height,bottom:c.bottom}),D.attr({dx:R,dy:F})}(m._hasNumber||m._hasDelta)&&I.attr("transform",(function(){var t=l.numbersScaler(d);O+=t[2];var e,r=E(m,"numbersScale",1,t[0],O,Math.min);m._scaleNumbers||(r=1),e=m._isAngular?y-r*d.bottom:y-r*(d.top+d.bottom)/2,m._numbersTop=r*d.top+e;var n=d[x];"center"===x&&(n=(d.left+d.right)/2);var i=g-r*n;return i=E(m,"numbersTranslate",0,i,O,Math.max),s(i,e)+o(r)}))}(t,z,e,{numbersX:m,numbersY:x,numbersScaler:C,transitionOpts:d,onComplete:g}),D&&(I={range:P.gauge.axis.range,color:P.gauge.bgcolor,line:{color:P.gauge.bordercolor,width:0},thickness:1},L={range:P.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:P.gauge.bordercolor,width:P.gauge.borderwidth},thickness:1});var W=z.selectAll("g.angular").data(O?e:[]);W.exit().remove();var Z=z.selectAll("g.angularaxis").data(O?e:[]);Z.exit().remove(),O&&function(t,e,i,a){var o,u,h,p,d=i[0].trace,m=a.size,g=a.radius,y=a.innerRadius,v=a.gaugeBg,x=a.gaugeOutline,_=[m.l+m.w/2,m.t+m.h/2+g/2],b=a.gauge,w=a.layer,M=a.transitionOpts,S=a.onComplete,E=Math.PI/2;function C(t){var e=d.gauge.axis.range[0],r=(t-e)/(d.gauge.axis.range[1]-e)*Math.PI-E;return r<-E?-E:r>E?E:r}function I(t){return r.svg.arc().innerRadius((y+g)/2-t/2*(g-y)).outerRadius((y+g)/2+t/2*(g-y)).startAngle(-E)}function L(t){t.attr("d",(function(t){return I(t.thickness).startAngle(C(t.range[0])).endAngle(C(t.range[1]))()}))}b.enter().append("g").classed("angular",!0),b.attr("transform",s(_[0],_[1])),w.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),w.selectAll("g.xangularaxistick,path,text").remove(),(o=k(t,d.gauge.axis)).type="linear",o.range=d.gauge.axis.range,o._id="xangularaxis",o.ticklabeloverflow="allow",o.setScale();var P=function(t){return(o.range[0]-t.x)/(o.range[1]-o.range[0])*Math.PI+Math.PI},z={},D=f.makeLabelFns(o,0).labelStandoff;z.xFn=function(t){var e=P(t);return Math.cos(e)*D},z.yFn=function(t){var e=P(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(D+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*c)},z.anchorFn=function(t){var e=P(t),r=Math.cos(e);return Math.abs(r)<.1?"middle":r>0?"start":"end"},z.heightFn=function(t,e,r){var n=P(t);return-.5*(1+Math.sin(n))*r};var O=function(t){return s(_[0]+g*Math.cos(t),_[1]-g*Math.sin(t))};h=function(t){return O(P(t))};if(u=f.calcTicks(o),p=f.getTickSigns(o)[2],o.visible){p="inside"===o.ticks?-1:1;var R=(o.linewidth||1)/2;f.drawTicks(t,o,{vals:u,layer:w,path:"M"+p*R+",0h"+p*o.ticklen,transFn:function(t){var e=P(t);return O(e)+"rotate("+-l(e)+")"}}),f.drawLabels(t,o,{vals:u,layer:w,transFn:h,labelFns:z})}var F=[v].concat(d.gauge.steps),B=b.selectAll("g.bg-arc").data(F);B.enter().append("g").classed("bg-arc",!0).append("path"),B.select("path").call(L).call(A),B.exit().remove();var j=I(d.gauge.bar.thickness),N=b.selectAll("g.value-arc").data([d.gauge.bar]);N.enter().append("g").classed("value-arc",!0).append("path");var U=N.select("path");T(M)?(U.transition().duration(M.duration).ease(M.easing).each("end",(function(){S&&S()})).each("interrupt",(function(){S&&S()})).attrTween("d",function(t,e,r){return function(){var i=n(e,r);return function(e){return t.endAngle(i(e))()}}}(j,C(i[0].lastY),C(i[0].y))),d._lastValue=i[0].y):U.attr("d","number"==typeof i[0].y?j.endAngle(C(i[0].y)):"M0,0Z"),U.call(A),N.exit().remove(),F=[];var V=d.gauge.threshold.value;(V||0===V)&&F.push({range:[V,V],color:d.gauge.threshold.color,line:{color:d.gauge.threshold.line.color,width:d.gauge.threshold.line.width},thickness:d.gauge.threshold.thickness});var q=b.selectAll("g.threshold-arc").data(F);q.enter().append("g").classed("threshold-arc",!0).append("path"),q.select("path").call(L).call(A),q.exit().remove();var H=b.selectAll("g.gauge-outline").data([x]);H.enter().append("g").classed("gauge-outline",!0).append("path"),H.select("path").call(L).call(A),H.exit().remove()}(t,0,e,{radius:U,innerRadius:V,gauge:W,layer:Z,size:B,gaugeBg:I,gaugeOutline:L,transitionOpts:d,onComplete:g});var Y=z.selectAll("g.bullet").data(R?e:[]);Y.exit().remove();var X=z.selectAll("g.bulletaxis").data(R?e:[]);X.exit().remove(),R&&function(t,e,r,n){var i,a,o,l,c,u=r[0].trace,p=n.gauge,d=n.layer,m=n.gaugeBg,g=n.gaugeOutline,y=n.size,x=u.domain,_=n.transitionOpts,b=n.onComplete;p.enter().append("g").classed("bullet",!0),p.attr("transform",s(y.l,y.t)),d.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),d.selectAll("g.xbulletaxistick,path,text").remove();var w=y.h,M=u.gauge.bar.thickness*w,S=x.x[0],E=x.x[0]+(x.x[1]-x.x[0])*(u._hasNumber||u._hasDelta?1-h.bulletNumberDomainSize:1);function C(t){t.attr("width",(function(t){return Math.max(0,i.c2p(t.range[1])-i.c2p(t.range[0]))})).attr("x",(function(t){return i.c2p(t.range[0])})).attr("y",(function(t){return.5*(1-t.thickness)*w})).attr("height",(function(t){return t.thickness*w}))}(i=k(t,u.gauge.axis))._id="xbulletaxis",i.domain=[S,E],i.setScale(),a=f.calcTicks(i),o=f.makeTransTickFn(i),l=f.getTickSigns(i)[2],c=y.t+y.h,i.visible&&(f.drawTicks(t,i,{vals:"inside"===i.ticks?f.clipEnds(i,a):a,layer:d,path:f.makeTickPath(i,c,l),transFn:o}),f.drawLabels(t,i,{vals:a,layer:d,transFn:o,labelFns:f.makeLabelFns(i,c)}));var I=[m].concat(u.gauge.steps),L=p.selectAll("g.bg-bullet").data(I);L.enter().append("g").classed("bg-bullet",!0).append("rect"),L.select("rect").call(C).call(A),L.exit().remove();var P=p.selectAll("g.value-bullet").data([u.gauge.bar]);P.enter().append("g").classed("value-bullet",!0).append("rect"),P.select("rect").attr("height",M).attr("y",(w-M)/2).call(A),T(_)?P.select("rect").transition().duration(_.duration).ease(_.easing).each("end",(function(){b&&b()})).each("interrupt",(function(){b&&b()})).attr("width",Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y)))):P.select("rect").attr("width","number"==typeof r[0].y?Math.max(0,i.c2p(Math.min(u.gauge.axis.range[1],r[0].y))):0),P.exit().remove();var z=r.filter((function(){return u.gauge.threshold.value||0===u.gauge.threshold.value})),D=p.selectAll("g.threshold-bullet").data(z);D.enter().append("g").classed("threshold-bullet",!0).append("line"),D.select("line").attr("x1",i.c2p(u.gauge.threshold.value)).attr("x2",i.c2p(u.gauge.threshold.value)).attr("y1",(1-u.gauge.threshold.thickness)/2*w).attr("y2",(1-(1-u.gauge.threshold.thickness)/2)*w).call(v.stroke,u.gauge.threshold.line.color).style("stroke-width",u.gauge.threshold.line.width),D.exit().remove();var O=p.selectAll("g.gauge-outline").data([g]);O.enter().append("g").classed("gauge-outline",!0).append("rect"),O.select("rect").call(C).call(A),O.exit().remove()}(t,0,e,{gauge:Y,layer:X,size:B,gaugeBg:I,gaugeOutline:L,transitionOpts:d,onComplete:g});var $=z.selectAll("text.title").data(e);$.exit().remove(),$.enter().append("text").classed("title",!0),$.attr("text-anchor",(function(){return R?_.right:_[P.title.align]})).text(P.title.text).call(u.font,P.title.font).call(p.convertToTspans,t),$.attr("transform",(function(){var t,e=B.l+B.w*b[P.title.align],r=h.titlePadding,n=u.bBox($.node());return D?(O&&(t=P.gauge.axis.visible?u.bBox(Z.node()).top-r-n.bottom:B.t+B.h/2-U/2-n.bottom-r),R&&(t=x-(n.top+n.bottom)/2,e=B.l-h.bulletPadding*B.w)):t=P._numbersTop-r-n.bottom,s(e,t)}))}))}}}),Kb=f({"src/traces/indicator/index.js"(t,e){e.exports={moduleType:"trace",name:"indicator",basePlotModule:Gb(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:Wb(),supplyDefaults:Yb().supplyDefaults,calc:Xb().calc,plot:$b(),meta:{}}}}),Jb=f({"lib/indicator.js"(t,e){e.exports=Kb()}}),Qb=f({"src/traces/table/attributes.js"(t,e){var r=_n(),n=R().extendFlat,i=Pt().overrideAll,a=F(),o=Aa().attributes,s=Ce().descriptionOnlyNumbers;e.exports=i({domain:o({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:s("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:n({},r.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:n({},a({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:s("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:n({},r.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:n({},a({arrayOk:!0}))}},"calc","from-root")}}),tw=f({"src/traces/table/defaults.js"(t,e){var r=le(),n=Qb(),i=Aa().defaults;e.exports=function(t,e,a,o){function s(i,a){return r.coerce(t,e,n,i,a)}i(e,o,s),s("columnwidth"),s("header.values"),s("header.format"),s("header.align"),s("header.prefix"),s("header.suffix"),s("header.height"),s("header.line.width"),s("header.line.color"),s("header.fill.color"),r.coerceFont(s,"header.font",o.font),function(t,e){for(var r=t.columnorder||[],n=t.header.values.length,i=r.slice(0,n),a=i.slice().sort((function(t,e){return t-e})),o=i.map((function(t){return a.indexOf(t)})),s=o.length;s",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}}}),nw=f({"src/traces/table/data_preparation_helper.js"(t,e){var r=rw(),n=R().extendFlat,i=A(),a=E().isTypedArray,o=E().isArrayOrTypedArray;function s(t){if(o(t)){for(var e=0,r=0;r=e||c===t.length-1)&&(n[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=c,o={firstRowIndex:null,lastRowIndex:null,rows:[]},i+=a,s=c+1,a=0);return n}e.exports=function(t,e){var a=c(e.cells.values),d=function(t){return t.slice(e.header.values.length,t.length)},m=c(e.header.values);m.length&&!m[0].length&&(m[0]=[""],m=c(m));var g=m.concat(d(a).map((function(){return u((m[0]||[""]).length)}))),y=e.domain,v=Math.floor(t._fullLayout._size.w*(y.x[1]-y.x[0])),x=Math.floor(t._fullLayout._size.h*(y.y[1]-y.y[0])),_=e.header.values.length?g[0].map((function(){return e.header.height})):[r.emptyHeaderHeight],b=a.length?a[0].map((function(){return e.cells.height})):[],w=_.reduce(l,0),T=f(b,x-w+r.uplift),A=p(f(_,w),[]),k=p(T,A),M={},S=e._fullInput.columnorder;o(S)&&(S=Array.from(S)),S=S.concat(d(a.map((function(t,e){return e}))));var E=g.map((function(t,r){var n=o(e.columnwidth)?e.columnwidth[Math.min(r,e.columnwidth.length-1)]:e.columnwidth;return i(n)?Number(n):1})),C=E.reduce(l,0);E=E.map((function(t){return t/C*v}));var I=Math.max(s(e.header.line.width),s(e.cells.line.width)),L={key:e.uid+t._context.staticPlot,translateX:y.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-y.y[1]),size:t._fullLayout._size,width:v,maxLineWidth:I,height:x,columnOrder:S,groupHeight:x,rowBlocks:k,headerRowBlocks:A,scrollY:0,cells:n({},e.cells,{values:a}),headerCells:n({},e.header,{values:g}),gdColumns:g.map((function(t){return t[0]})),gdColumnsOriginalOrder:g.map((function(t){return t[0]})),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:g.map((function(t,e){var r=M[t];return M[t]=(r||0)+1,{key:t+"__"+M[t],label:t,specIndex:e,xIndex:S[e],xScale:h,x:void 0,calcdata:void 0,columnWidth:E[e]}}))};return L.columns.forEach((function(t){t.calcdata=L,t.x=h(t)})),L}}}),iw=f({"src/traces/table/data_split_helpers.js"(t){var e=R().extendFlat;t.splitToPanels=function(t){var r=[0,0],n=e({},t,{key:"header",type:"header",page:0,prevPages:r,currentRepaint:[null,null],dragHandle:!0,values:t.calcdata.headerCells.values[t.specIndex],rowBlocks:t.calcdata.headerRowBlocks,calcdata:e({},t.calcdata,{cells:t.calcdata.headerCells})});return[e({},t,{key:"cells1",type:"cells",page:0,prevPages:r,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),e({},t,{key:"cells2",type:"cells",page:1,prevPages:r,currentRepaint:[null,null],dragHandle:!1,values:t.calcdata.cells.values[t.specIndex],rowBlocks:t.calcdata.rowBlocks}),n]},t.splitToCells=function(t){var e=function(t){var e=t.rowBlocks[t.page],r=e?e.rows[0].rowIndex:0;return[r,e?r+e.rows.length:0]}(t);return(t.values||[]).slice(e[0],e[1]).map((function(r,n){return{keyWithinBlock:n+("string"==typeof r&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():""),key:e[0]+n,column:t,calcdata:t.calcdata,page:t.page,rowBlocks:t.rowBlocks,value:r}}))}}}),aw=f({"src/traces/table/plot.js"(t,e){var r=rw(),n=x(),i=le(),a=i.numberFormat,o=Ix(),s=Qe(),l=Se(),c=le().raiseToTop,u=le().strTranslate,h=le().cancelTransition,p=nw(),f=iw(),d=H();function m(t){return Math.ceil(t.calcdata.maxLineWidth/2)}function g(t,e){return"clip"+t._fullLayout._uid+"_scrollAreaBottomClip_"+e.key}function y(t,e){return"clip"+t._fullLayout._uid+"_columnBoundaryClippath_"+e.calcdata.key+"_"+e.specIndex}function v(t){return[].concat.apply([],t.map((function(t){return t}))).map((function(t){return t.__data__}))}function _(t,e,i){var a=t.selectAll("."+r.cn.scrollbarKit).data(o.repeat,o.keyFun);a.enter().append("g").classed(r.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),a.each((function(t){var e=t.scrollbarState;e.totalHeight=function(t){var e=t.rowBlocks;return R(e,e.length-1)+(e.length?F(e[e.length-1],1/0):1)}(t),e.scrollableAreaHeight=t.groupHeight-E(t),e.currentlyVisibleHeight=Math.min(e.totalHeight,e.scrollableAreaHeight),e.ratio=e.currentlyVisibleHeight/e.totalHeight,e.barLength=Math.max(e.ratio*e.currentlyVisibleHeight,r.goldenRatio*r.scrollbarWidth),e.barWiggleRoom=e.currentlyVisibleHeight-e.barLength,e.wiggleRoom=Math.max(0,e.totalHeight-e.scrollableAreaHeight),e.topY=0===e.barWiggleRoom?0:t.scrollY/e.wiggleRoom*e.barWiggleRoom,e.bottomY=e.topY+e.barLength,e.dragMultiplier=e.wiggleRoom/e.barWiggleRoom})).attr("transform",(function(t){var e=t.width+r.scrollbarWidth/2+r.scrollbarOffset;return u(e,E(t))}));var s=a.selectAll("."+r.cn.scrollbar).data(o.repeat,o.keyFun);s.enter().append("g").classed(r.cn.scrollbar,!0);var l=s.selectAll("."+r.cn.scrollbarSlider).data(o.repeat,o.keyFun);l.enter().append("g").classed(r.cn.scrollbarSlider,!0),l.attr("transform",(function(t){return u(0,t.scrollbarState.topY||0)}));var c=l.selectAll("."+r.cn.scrollbarGlyph).data(o.repeat,o.keyFun);c.enter().append("line").classed(r.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",r.scrollbarWidth).attr("stroke-linecap","round").attr("y1",r.scrollbarWidth/2),c.attr("y2",(function(t){return t.scrollbarState.barLength-r.scrollbarWidth/2})).attr("stroke-opacity",(function(t){return t.columnDragInProgress||!t.scrollbarState.barWiggleRoom||i?0:.4})),c.transition().delay(0).duration(0),c.transition().delay(r.scrollbarHideDelay).duration(r.scrollbarHideDuration).attr("stroke-opacity",0);var h=s.selectAll("."+r.cn.scrollbarCaptureZone).data(o.repeat,o.keyFun);h.enter().append("line").classed(r.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",r.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",(function(r){var i=n.event.y,a=this.getBoundingClientRect(),o=r.scrollbarState,s=i-a.top,l=n.scale.linear().domain([0,o.scrollableAreaHeight]).range([0,o.totalHeight]).clamp(!0);o.topY<=s&&s<=o.bottomY||I(e,t,null,l(s-o.barLength/2))(r)})).call(n.behavior.drag().origin((function(t){return n.event.stopPropagation(),t.scrollbarState.scrollbarScrollInProgress=!0,t})).on("drag",I(e,t)).on("dragend",(function(){}))),h.attr("y2",(function(t){return t.scrollbarState.scrollableAreaHeight})),e._context.staticPlot&&(c.remove(),h.remove())}function b(t,e,i,a){var l=function(t){var e=t.selectAll("."+r.cn.columnCells).data(o.repeat,o.keyFun);return e.enter().append("g").classed(r.cn.columnCells,!0),e.exit().remove(),e}(i),c=function(t){var e=t.selectAll("."+r.cn.columnCell).data(f.splitToCells,(function(t){return t.keyWithinBlock}));return e.enter().append("g").classed(r.cn.columnCell,!0),e.exit().remove(),e}(l);!function(t){t.each((function(t,e){var r=t.calcdata.cells.font,n=t.column.specIndex,i={size:A(r.size,n,e),color:A(r.color,n,e),family:A(r.family,n,e),weight:A(r.weight,n,e),style:A(r.style,n,e),variant:A(r.variant,n,e),textcase:A(r.textcase,n,e),lineposition:A(r.lineposition,n,e),shadow:A(r.shadow,n,e)};t.rowNumber=t.key,t.align=A(t.calcdata.cells.align,n,e),t.cellBorderWidth=A(t.calcdata.cells.line.width,n,e),t.font=i}))}(c);var u=function(t){var e=t.selectAll("."+r.cn.cellRect).data(o.repeat,(function(t){return t.keyWithinBlock}));return e.enter().append("rect").classed(r.cn.cellRect,!0),e}(c);!function(t){t.attr("width",(function(t){return t.column.columnWidth})).attr("stroke-width",(function(t){return t.cellBorderWidth})).each((function(t){var e=n.select(this);d.stroke(e,A(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),d.fill(e,A(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))}))}(u);var h=function(t){var e=t.selectAll("."+r.cn.cellTextHolder).data(o.repeat,(function(t){return t.keyWithinBlock}));return e.enter().append("g").classed(r.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),e}(c),p=function(t){var e=t.selectAll("."+r.cn.cellText).data(o.repeat,(function(t){return t.keyWithinBlock}));return e.enter().append("text").classed(r.cn.cellText,!0).style("cursor",(function(){return"auto"})).on("mousedown",(function(){n.event.stopPropagation()})),e}(h);(function(t){t.each((function(t){s.font(n.select(this),t.font)}))})(p),w(p,e,a,t),O(c)}function w(t,e,i,o){t.text((function(t){var e=t.column.specIndex,n=t.rowNumber,i=t.value,o="string"==typeof i,s=o&&i.match(/
/i),l=!o||s;t.mayHaveMarkup=o&&i.match(/[<&>]/);var c=function(t){return"string"==typeof t&&t.match(r.latexCheck)}(i);t.latex=c;var u,h,p=c?"":A(t.calcdata.cells.prefix,e,n)||"",f=c?"":A(t.calcdata.cells.suffix,e,n)||"",d=c?null:A(t.calcdata.cells.format,e,n)||null,m=p+(d?a(d)(t.value):t.value)+f;if(t.wrappingNeeded=!t.wrapped&&!l&&!c&&(u=T(m)),t.cellHeightMayIncrease=s||c||t.mayHaveMarkup||(void 0===u?T(m):u),t.needsConvertToTspans=t.mayHaveMarkup||t.wrappingNeeded||t.latex,t.wrappingNeeded){var g=(" "===r.wrapSplitCharacter?m.replace(/i&&n.push(a),i+=l}return n}(i,l,s);1===c.length&&(c[0]===i.length-1?c.unshift(c[0]-1):c.push(c[0]+1)),c[0]%2&&c.reverse(),e.each((function(t,e){t.page=c[e],t.scrollY=l})),e.attr("transform",(function(t){var e=R(t.rowBlocks,t.page)-t.scrollY;return u(0,e)})),t&&(L(t,r,e,c,n.prevPages,n,0),L(t,r,e,c,n.prevPages,n,1),_(r,t))}}function I(t,e,i,a){return function(o){var s=o.calcdata?o.calcdata:o,l=e.filter((function(t){return s.key===t.key})),c=i||s.scrollbarState.dragMultiplier,u=s.scrollY;s.scrollY=void 0===a?s.scrollY+c*n.event.dy:a;var h=l.selectAll("."+r.cn.yColumn).selectAll("."+r.cn.columnBlock).filter(M);return C(t,h,l),s.scrollY===u}}function L(t,e,r,n,i,a,o){n[o]!==i[o]&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout((function(){var a=r.filter((function(t,e){return e===o&&n[e]!==i[e]}));b(t,e,a,r),i[o]=n[o]})))}function P(t,e,i,a){return function(){var o=n.select(e.parentNode);o.each((function(t){var e=t.fragments;o.selectAll("tspan.line").each((function(t,r){e[r].width=this.getComputedTextLength()}));var n,i,a=e[e.length-1].width,s=e.slice(0,-1),l=[],c=0,u=t.column.columnWidth-2*r.cellPad;for(t.value="";s.length;)c+(i=(n=s.shift()).width+a)>u&&(t.value+=l.join(r.wrapSpacer)+r.lineBreaker,l=[],c=0),l.push(n.text),c+=i;c&&(t.value+=l.join(r.wrapSpacer)),t.wrapped=!0})),o.selectAll("tspan.line").remove(),w(o.select("."+r.cn.cellText),i,t,a),n.select(e.parentNode.parentNode).call(O)}}function z(t,e,i,a,o){return function(){if(!o.settledY){var s=n.select(e.parentNode),l=j(o),c=o.key-l.firstRowIndex,h=l.rows[c].rowHeight,p=o.cellHeightMayIncrease?e.parentNode.getBoundingClientRect().height+2*r.cellPad:h,f=Math.max(p,h);f-l.rows[c].rowHeight&&(l.rows[c].rowHeight=f,t.selectAll("."+r.cn.columnCell).call(O),C(null,t.filter(M),0),_(i,a,!0)),s.attr("transform",(function(){var t=this,e=t.parentNode.getBoundingClientRect(),i=n.select(t.parentNode).select("."+r.cn.cellRect).node().getBoundingClientRect(),a=t.transform.baseVal.consolidate(),s=i.top-e.top+(a?a.matrix.f:r.cellPad);return u(D(o,n.select(t.parentNode).select("."+r.cn.cellTextHolder).node().getBoundingClientRect().width),s)})),o.settledY=!0}}}function D(t,e){switch(t.align){case"left":default:return r.cellPad;case"right":return t.column.columnWidth-(e||0)-r.cellPad;case"center":return(t.column.columnWidth-(e||0))/2}}function O(t){t.attr("transform",(function(t){var e=t.rowBlocks[0].auxiliaryBlocks.reduce((function(t,e){return t+F(e,1/0)}),0),r=F(j(t),t.key);return u(0,r+e)})).selectAll("."+r.cn.cellRect).attr("height",(function(t){return function(t,e){return t.rows[e-t.firstRowIndex]}(j(t),t.key).rowHeight}))}function R(t,e){for(var r=0,n=e-1;n>=0;n--)r+=B(t[n]);return r}function F(t,e){for(var r=0,n=0;ne.length&&(t=t.slice(0,e.length)):t=[],i=0;i90&&(f-=180,l=-l),{angle:f,flip:l,p:t.c2p(n,e,r),offsetMultplier:c}}}}),vw=f({"src/traces/carpet/plot.js"(t,e){var r=x(),n=Qe(),i=mw(),a=gw(),o=yw(),s=Se(),l=le(),c=l.strRotate,u=l.strTranslate,h=Me();function p(t,e,o,s,l,c,u){var h="const-"+l+"-lines",p=o.selectAll("."+h).data(c);p.enter().append("path").classed(h,!0).style("vector-effect",u?"none":"non-scaling-stroke"),p.each((function(o){var s=o,l=s.x,c=s.y,u=i([],l,t.c2p),h=i([],c,e.c2p),p="M"+a(u,h,s.smoothing);r.select(this).attr("d",p).style("stroke-width",s.width).style("stroke",s.color).style("stroke-dasharray",n.dashStyle(s.dash,s.width)).style("fill","none")})),p.exit().remove()}function f(t,e,i,a,l,h,p,f){var d=h.selectAll("text."+f).data(p);d.enter().append("text").classed(f,!0);var m=0,g={};return d.each((function(l,h){var p;if("auto"===l.axis.tickangle)p=o(a,e,i,l.xy,l.dxy);else{var f=(l.axis.tickangle+180)*Math.PI/180;p=o(a,e,i,l.xy,[Math.cos(f),Math.sin(f)])}h||(g={angle:p.angle,flip:p.flip});var d=(l.endAnchor?-1:1)*p.flip,y=r.select(this).attr({"text-anchor":d>0?"start":"end","data-notex":1}).call(n.font,l.font).text(l.text).call(s.convertToTspans,t),v=n.bBox(this);y.attr("transform",u(p.p[0],p.p[1])+c(p.angle)+u(l.axis.labelpadding*d,.3*v.height)),m=Math.max(m,v.width+l.axis.labelpadding)})),d.exit().remove(),g.maxExtent=m,g}e.exports=function(t,e,n,s){var c=t._context.staticPlot,u=e.xaxis,h=e.yaxis,d=t._fullLayout._clips;l.makeTraceGroups(s,n,"trace").each((function(e){var n=r.select(this),s=e[0],m=s.trace,y=m.aaxis,v=m.baxis,x=l.ensureSingle(n,"g","minorlayer"),_=l.ensureSingle(n,"g","majorlayer"),b=l.ensureSingle(n,"g","boundarylayer"),w=l.ensureSingle(n,"g","labellayer");n.style("opacity",m.opacity),p(u,h,_,0,"a",y._gridlines,!0),p(u,h,_,0,"b",v._gridlines,!0),p(u,h,x,0,"a",y._minorgridlines,!0),p(u,h,x,0,"b",v._minorgridlines,!0),p(u,h,b,0,"a-boundary",y._boundarylines,c),p(u,h,b,0,"b-boundary",v._boundarylines,c);var T=f(t,u,h,m,0,w,y._labels,"a-label"),A=f(t,u,h,m,0,w,v._labels,"b-label");(function(t,e,r,n,i,a,s,c){var u,h,p,f,d=l.aggNums(Math.min,null,r.a),m=l.aggNums(Math.max,null,r.a),y=l.aggNums(Math.min,null,r.b),v=l.aggNums(Math.max,null,r.b);u=.5*(d+m),h=y,p=r.ab2xy(u,h,!0),f=r.dxyda_rough(u,h),void 0===s.angle&&l.extendFlat(s,o(r,i,a,p,r.dxydb_rough(u,h))),g(t,e,r,0,p,f,r.aaxis,i,a,s,"a-title"),u=d,h=.5*(y+v),p=r.ab2xy(u,h,!0),f=r.dxydb_rough(u,h),void 0===c.angle&&l.extendFlat(c,o(r,i,a,p,r.dxyda_rough(u,h))),g(t,e,r,0,p,f,r.baxis,i,a,c,"b-title")})(t,w,m,0,u,h,T,A),function(t,e,r,n,o){var s,c,u,h,p=r.select("#"+t._clipPathId);p.size()||(p=r.append("clipPath").classed("carpetclip",!0));var f=l.ensureSingle(p,"path","carpetboundary"),d=e.clipsegments,m=[];for(h=0;h90&&v<270,_=r.select(this);_.text(p.title.text).call(s.convertToTspans,t),x&&(b=(-s.lineCount(_)+m)*d*a-b),_.attr("transform",u(e.p[0],e.p[1])+c(e.angle)+u(0,b)).attr("text-anchor","middle").call(n.font,p.title.font)})),_.exit().remove()}}}),xw=f({"src/traces/carpet/cheater_basis.js"(t,e){var r=le().isArrayOrTypedArray;e.exports=function(t,e,n){var i,a,o,s,l,c=[],u=r(t)?t.length:t,h=r(e)?e.length:e,p=r(t)?t:null,f=r(e)?e:null;p&&(o=(p.length-1)/(p[p.length-1]-p[0])/(u-1)),f&&(s=(f.length-1)/(f[f.length-1]-f[0])/(h-1));var d,m=1/0,g=-1/0;for(a=0;a=10)return null;for(var i=1/0,a=-1/0,o=t.length,s=0;s0&&(f=t.dxydi([],n-1,o,0,s),y.push(l[0]+f[0]/3),v.push(l[1]+f[1]/3),d=t.dxydi([],n-1,o,1,s),y.push(h[0]-d[0]/3),v.push(h[1]-d[1]/3)),y.push(h[0]),v.push(h[1]),l=h;else for(n=t.a2i(r),c=Math.floor(Math.max(0,Math.min(I-2,n))),u=n-c,x.length=I,x.crossLength=L,x.xy=function(e){return t.evalxy([],n,e)},x.dxy=function(e,r){return t.dxydj([],c,e,u,r)},a=0;a0&&(m=t.dxydj([],c,a-1,u,0),y.push(l[0]+m[0]/3),v.push(l[1]+m[1]/3),g=t.dxydj([],c,a-1,u,1),y.push(h[0]-g[0]/3),v.push(h[1]-g[1]/3)),y.push(h[0]),v.push(h[1]),l=h;return x.axisLetter=e,x.axis=_,x.crossAxis=k,x.value=r,x.constvar=i,x.index=p,x.x=y,x.y=v,x.smoothing=k.smoothing,x}function D(r){var n,a,o,s,l,c=[],u=[],h={};if(h.length=x.length,h.crossLength=A.length,"b"===e)for(o=Math.max(0,Math.min(L-2,r)),l=Math.min(1,Math.max(0,r-o)),h.xy=function(e){return t.evalxy([],e,r)},h.dxy=function(e,r){return t.dxydi([],e,o,r,l)},n=0;nx.length-1)&&b.push(n(D(o),{color:_.gridcolor,width:_.gridwidth,dash:_.griddash}));for(p=u;px.length-1||m<0||m>x.length-1))for(g=x[s],y=x[m],a=0;a<_.minorgridcount;a++)!((v=m-s)<=0)&&!((d=g+(y-g)*(a+1)/(_.minorgridcount+1)*(_.arraydtick/v))x[x.length-1])&&w.push(n(z(d),{color:_.minorgridcolor,width:_.minorgridwidth,dash:_.minorgriddash}));_.startline&&T.push(n(D(0),{color:_.startlinecolor,width:_.startlinewidth})),_.endline&&T.push(n(D(x.length-1),{color:_.endlinecolor,width:_.endlinewidth}))}else{for(l=5e-15,u=(c=[Math.floor((x[x.length-1]-_.tick0)/_.dtick*(1+l)),Math.ceil((x[0]-_.tick0)/_.dtick/(1+l))].sort((function(t,e){return t-e})))[0],h=c[1],p=u;p<=h;p++)f=_.tick0+_.dtick*p,b.push(n(z(f),{color:_.gridcolor,width:_.gridwidth,dash:_.griddash}));for(p=u-1;px[x.length-1])&&w.push(n(z(d),{color:_.minorgridcolor,width:_.minorgridwidth,dash:_.minorgriddash}));_.startline&&T.push(n(z(x[0]),{color:_.startlinecolor,width:_.startlinewidth})),_.endline&&T.push(n(z(x[x.length-1]),{color:_.endlinecolor,width:_.endlinewidth}))}}}}),ww=f({"src/traces/carpet/calc_labels.js"(t,e){var r=ir(),n=R().extendFlat;e.exports=function(t,e){var i,a,o,s=e._labels=[],l=e._gridlines;for(i=0;i=0;i--)a[u-i]=t[h][i],o[u-i]=e[h][i];for(s.push({x:a,y:o,bicubic:l}),i=h,a=[],o=[];i>=0;i--)a[h-i]=t[i][0],o[h-i]=e[i][0];return s.push({x:a,y:o,bicubic:c}),s}}}),Aw=f({"src/traces/carpet/smooth_fill_2d_array.js"(t,e){var r=le();e.exports=function(t,e,n){var i,a,o,s,l,c,u,h,p=[],f=[],d=t[0].length,m=t.length,g=0;for(i=0;i0&&void 0!==(c=t[l][s-1])&&(h++,u+=c),s0&&void 0!==(c=t[l-1][s])&&(h++,u+=c),l0&&a0&&i1e-5);return r.log("Smoother converged to",E,"after",C,"iterations"),t}}}),kw=f({"src/traces/carpet/constants.js"(t,e){e.exports={RELATIVE_CULL_TOLERANCE:1e-6}}}),Mw=f({"src/traces/carpet/catmull_rom.js"(t,e){e.exports=function(t,e,r,n){var i=t[0]-e[0],a=t[1]-e[1],o=r[0]-e[0],s=r[1]-e[1],l=Math.pow(i*i+a*a,.25),c=Math.pow(o*o+s*s,.25),u=(c*c*i-l*l*o)*n,h=(c*c*a-l*l*s)*n,p=c*(l+c)*3,f=l*(l+c)*3;return[[e[0]+(p&&u/p),e[1]+(p&&h/p)],[e[0]-(f&&u/f),e[1]-(f&&h/f)]]}}}),Sw=f({"src/traces/carpet/compute_control_points.js"(t,e){var r=Mw(),n=le().ensureArray;function i(t,e,r){var n=-.5*r[0]+1.5*e[0],i=-.5*r[1]+1.5*e[1];return[(2*n+t[0])/3,(2*i+t[1])/3]}e.exports=function(t,e,a,o,s,l){var c,u,h,p,f,d,m,g,y,v,x=a[0].length,_=a.length,b=s?3*x-2:x,w=l?3*_-2:_;for(t=n(t,w),e=n(e,w),h=0;hf&&tm&&ed||eg},t.setScale=function(){var e=t._x,r=t._y,n=i(t._xctrl,t._yctrl,e,r,h.smoothing,p.smoothing);t._xctrl=n[0],t._yctrl=n[1],t.evalxy=a([t._xctrl,t._yctrl],c,u,h.smoothing,p.smoothing),t.dxydi=o([t._xctrl,t._yctrl],h.smoothing,p.smoothing),t.dxydj=s([t._xctrl,t._yctrl],h.smoothing,p.smoothing)},t.i2a=function(t){var r=Math.max(0,Math.floor(t[0]),c-2),n=t[0]-r;return(1-n)*e[r]+n*e[r+1]},t.j2b=function(t){var e=Math.max(0,Math.floor(t[1]),c-2),r=t[1]-e;return(1-r)*l[e]+r*l[e+1]},t.ij2ab=function(e){return[t.i2a(e[0]),t.j2b(e[1])]},t.a2i=function(t){var r=Math.max(0,Math.min(n(t,e),c-2)),i=e[r],a=e[r+1];return Math.max(0,Math.min(c-1,r+(t-i)/(a-i)))},t.b2j=function(t){var e=Math.max(0,Math.min(n(t,l),u-2)),r=l[e],i=l[e+1];return Math.max(0,Math.min(u-1,e+(t-r)/(i-r)))},t.ab2ij=function(e){return[t.a2i(e[0]),t.b2j(e[1])]},t.i2c=function(e,r){return t.evalxy([],e,r)},t.ab2xy=function(r,n,i){if(!i&&(re[c-1]|nl[u-1]))return[!1,!1];var a=t.a2i(r),o=t.b2j(n),s=t.evalxy([],a,o);if(i){var h,p,f,d,m=0,g=0,y=[];re[c-1]?(h=c-2,p=1,m=(r-e[c-1])/(e[c-1]-e[c-2])):p=a-(h=Math.max(0,Math.min(c-2,Math.floor(a)))),nl[u-1]?(f=u-2,d=1,g=(n-l[u-1])/(l[u-1]-l[u-2])):d=o-(f=Math.max(0,Math.min(u-2,Math.floor(o)))),m&&(t.dxydi(y,h,f,p,d),s[0]+=y[0]*m,s[1]+=y[1]*m),g&&(t.dxydj(y,h,f,p,d),s[0]+=y[0]*g,s[1]+=y[1]*g)}return s},t.c2p=function(t,e,r){return[e.c2p(t[0]),r.c2p(t[1])]},t.p2x=function(t,e,r){return[e.p2c(t[0]),r.p2c(t[1])]},t.dadi=function(t){var r=Math.max(0,Math.min(e.length-2,t));return e[r+1]-e[r]},t.dbdj=function(t){var e=Math.max(0,Math.min(l.length-2,t));return l[e+1]-l[e]},t.dxyda=function(e,r,n,i){var a=t.dxydi(null,e,r,n,i),o=t.dadi(e,n);return[a[0]/o,a[1]/o]},t.dxydb=function(e,r,n,i){var a=t.dxydj(null,e,r,n,i),o=t.dbdj(r,i);return[a[0]/o,a[1]/o]},t.dxyda_rough=function(e,r,n){var i=y*(n||.1),a=t.ab2xy(e+i,r,!0),o=t.ab2xy(e-i,r,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dxydb_rough=function(e,r,n){var i=v*(n||.1),a=t.ab2xy(e,r+i,!0),o=t.ab2xy(e,r-i,!0);return[.5*(a[0]-o[0])/i,.5*(a[1]-o[1])/i]},t.dpdx=function(t){return t._m},t.dpdy=function(t){return t._m}}}}),Pw=f({"src/traces/carpet/calc.js"(t,e){var r=ir(),n=le().isArray1D,i=xw(),a=_w(),o=bw(),s=ww(),l=Tw(),c=zo(),u=Aw(),h=Po(),p=Lw();e.exports=function(t,e){var f=r.getFromId(t,e.xaxis),d=r.getFromId(t,e.yaxis),m=e.aaxis,g=e.baxis,y=e.x,v=e.y,x=[];y&&n(y)&&x.push("x"),v&&n(v)&&x.push("y"),x.length&&h(e,m,g,"a","b",x);var _=e._a=e._a||e.a,b=e._b=e._b||e.b;y=e._x||e.x,v=e._y||e.y;var w={};if(e._cheater){var T="index"===m.cheatertype?_.length:_,A="index"===g.cheatertype?b.length:b;y=i(T,A,e.cheaterslope)}e._x=y=c(y),e._y=v=c(v),u(y,_,b),u(v,_,b),p(e),e.setScale();var k=a(y),M=a(v),S=.5*(k[1]-k[0]),E=.5*(k[1]+k[0]),C=.5*(M[1]-M[0]),I=.5*(M[1]+M[0]),L=1.3;return k=[E-S*L,E+S*L],M=[I-C*L,I+C*L],e._extremes[f._id]=r.findExtremes(f,k,{padded:!0}),e._extremes[d._id]=r.findExtremes(d,M,{padded:!0}),o(e,"a","b"),o(e,"b","a"),s(e,m),s(e,g),w.clipsegments=l(e._xctrl,e._yctrl,m,g),w.x=y,w.y=v,w.a=_,w.b=b,[w]}}}),zw=f({"src/traces/carpet/index.js"(t,e){e.exports={attributes:uw(),supplyDefaults:dw(),plot:vw(),calc:Pw(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:Si(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}}}),Dw=f({"lib/carpet.js"(t,e){e.exports=zw()}}),Ow=f({"src/traces/scattercarpet/attributes.js"(t,e){var r=wn(),n=Tn(),i=U(),a=Ot().hovertemplateAttrs,o=Ot().texttemplateAttrs,s=Pe(),l=R().extendFlat,c=n.marker,u=n.line,h=c.line;e.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:l({},n.mode,{dflt:"markers"}),text:l({},n.text,{}),texttemplate:o({editType:"plot"},{keys:["a","b","text"]}),hovertext:l({},n.hovertext,{}),line:{color:u.color,width:u.width,dash:u.dash,backoff:u.backoff,shape:l({},u.shape,{values:["linear","spline"]}),smoothing:u.smoothing,editType:"calc"},connectgaps:n.connectgaps,fill:l({},n.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:r(),marker:l({symbol:c.symbol,opacity:c.opacity,maxdisplayed:c.maxdisplayed,angle:c.angle,angleref:c.angleref,standoff:c.standoff,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode,line:l({width:h.width,editType:"calc"},s("marker.line")),gradient:c.gradient,editType:"calc"},s("marker")),textfont:n.textfont,textposition:n.textposition,selected:n.selected,unselected:n.unselected,hoverinfo:l({},i.hoverinfo,{flags:["a","b","text","name"]}),hoveron:n.hoveron,hovertemplate:a(),zorder:n.zorder}}}),Rw=f({"src/traces/scattercarpet/defaults.js"(t,e){var r=le(),n=bn(),i=Ye(),a=Zn(),o=Yn(),s=Xn(),l=$n(),c=Kn(),u=Ow();e.exports=function(t,e,h,p){function f(n,i){return r.coerce(t,e,u,n,i)}f("carpet"),e.xaxis="x",e.yaxis="y";var d=f("a"),m=f("b"),g=Math.min(d.length,m.length);if(g){e._length=g,f("text"),f("texttemplate"),f("hovertext"),f("mode",g")}return o}function v(t,e){var r;r=t.labelprefix&&t.labelprefix.length>0?t.labelprefix.replace(/ = $/,""):t._hovertitle,g.push(r+": "+e.toFixed(3)+t.labelsuffix)}}}}),Vw=f({"src/traces/scattercarpet/event_data.js"(t,e){e.exports=function(t,e,r,n,i){var a=n[i];return t.a=a.a,t.b=a.b,t.y=a.y,t}}}),qw=f({"src/traces/scattercarpet/index.js"(t,e){e.exports={attributes:Ow(),supplyDefaults:Rw(),colorbar:fi(),formatLabels:Fw(),calc:jw(),plot:Nw(),style:mi().style,styleOnSelect:mi().styleOnSelect,hoverPoints:Uw(),selectPoints:vi(),eventData:Vw(),moduleType:"trace",name:"scattercarpet",basePlotModule:Si(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}}}),Hw=f({"lib/scattercarpet.js"(t,e){e.exports=qw()}}),Gw=f({"src/traces/contourcarpet/attributes.js"(t,e){var r=bo(),n=ls(),i=Pe(),a=R().extendFlat,o=n.contours;e.exports=a({carpet:{valType:"string",editType:"calc"},z:r.z,a:r.x,a0:r.x0,da:r.dx,b:r.y,b0:r.y0,db:r.dy,text:r.text,hovertext:r.hovertext,transpose:r.transpose,atype:r.xtype,btype:r.ytype,fillcolor:n.fillcolor,autocontour:n.autocontour,ncontours:n.ncontours,contours:{type:o.type,start:o.start,end:o.end,size:o.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:o.showlines,showlabels:o.showlabels,labelfont:o.labelfont,labelformat:o.labelformat,operation:o.operation,value:o.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:n.line.color,width:n.line.width,dash:n.line.dash,smoothing:n.line.smoothing,editType:"plot"},zorder:n.zorder},i("",{cLetter:"z",autoColorDflt:!1}))}}),Ww=f({"src/traces/contourcarpet/defaults.js"(t,e){var r=le(),n=wo(),i=Gw(),a=Ls(),o=us(),s=ps();e.exports=function(t,e,l,c){function u(n,a){return r.coerce(t,e,i,n,a)}if(u("carpet"),t.a&&t.b){if(!n(t,e,u,c,"a","b"))return void(e.visible=!1);u("text"),"constraint"===u("contours.type")?a(t,e,u,c,l,{hasHover:!1}):(o(t,e,u,(function(n){return r.coerce2(t,e,i,n)})),s(t,e,u,c,{hasHover:!1}))}else e._defaultColor=l,e._length=null;u("zorder")}}}),Zw=f({"src/traces/contourcarpet/calc.js"(t,e){var r=We(),n=le(),i=Po(),a=zo(),o=Do(),s=Oo(),l=Ro(),c=Ww(),u=Bw(),h=ds();e.exports=function(t,e){var p=e._carpetTrace=u(t,e);if(p&&p.visible&&"legendonly"!==p.visible){if(!e.a||!e.b){var f=t.data[p.index],d=t.data[e.index];d.a||(d.a=f.a),d.b||(d.b=f.b),c(d,e,e._defaultColor,t._fullLayout)}var m=function(t,e){var c,u,h,p,f,d,m,g=e._carpetTrace,y=g.aaxis,v=g.baxis;y._minDtick=0,v._minDtick=0,n.isArray1D(e.z)&&i(e,y,v,"a","b",["z"]),c=e._a=e._a||e.a,p=e._b=e._b||e.b,c=c?y.makeCalcdata(e,"_a"):[],p=p?v.makeCalcdata(e,"_b"):[],u=e.a0||0,h=e.da||1,f=e.b0||0,d=e.db||1,m=e._z=a(e._z||e.z,e.transpose),e._emptypoints=s(m),o(m,e._emptypoints);var x=n.maxRowLength(m),_="scaled"===e.xtype?"":c,b=l(e,_,u,h,x,y),w="scaled"===e.ytype?"":p,T={a:b,b:l(e,w,f,d,m.length,v),z:m};return"levels"===e.contours.type&&"none"!==e.contours.coloring&&r(t,e,{vals:m,containerStr:"",cLetter:"z"}),[T]}(t,e);return h(e,e._z),m}}}}),Yw=f({"src/traces/carpet/axis_aligned_line.js"(t,e){var r=le().isArrayOrTypedArray;e.exports=function(t,e,n,i){var a,o,s,l,c,u,h,p,f,d,m,g,y,v=r(n)?"a":"b",x=("a"===v?t.aaxis:t.baxis).smoothing,_="a"===v?t.a2i:t.b2j,b="a"===v?n:i,w="a"===v?i:n,T="a"===v?e.a.length:e.b.length,A="a"===v?e.b.length:e.a.length,k=Math.floor("a"===v?t.b2j(w):t.a2i(w)),M="a"===v?function(e){return t.evalxy([],e,k)}:function(e){return t.evalxy([],k,e)};x&&(s=Math.max(0,Math.min(A-2,k)),l=k-s,o="a"===v?function(e,r){return t.dxydi([],e,s,r,l)}:function(e,r){return t.dxydj([],s,e,l,r)});var S=_(b[0]),E=_(b[1]),C=S0?Math.floor:Math.ceil,P=C>0?Math.ceil:Math.floor,z=C>0?Math.min:Math.max,D=C>0?Math.max:Math.min,O=L(S+I),R=P(E-I),F=[[h=M(S)]];for(a=O;a*C=0;U--)B=M.clipsegments[U],j=n([],B.x,b.c2p),N=n([],B.y,w.c2p),j.reverse(),N.reverse(),V.push(i(j,N,B.bicubic));var q="M"+V.join("L")+"Z";(function(t,e,r,a,s,l){var c,u,h,p,f=o.ensureSingle(t,"g","contourbg").selectAll("path").data("fill"!==l||s?[]:[0]);f.enter().append("path"),f.exit().remove();var d=[];for(p=0;p=0&&(p=C,d=g):Math.abs(h[1]-p[1])=0&&(p=C,d=g):o.log("endpt to newendpt is not vert. or horz.",h,p,C)}if(d>=0)break;v+=S(h,p),h=p}if(d===e.edgepaths.length){o.log("unclosed perimeter path");break}u=d,(_=-1===x.indexOf(u))&&(u=x[0],v+=S(h,p)+"Z",h=null)}for(u=0;um&&(n.max=m),n.len=n.max-n.min}function x(t,e){var r,n=0,o=.1;return(Math.abs(t[0]-l)y):g=k>w,y=k;var M=c(w,T,A,k);M.pos=b,M.yc=(w+k)/2,M.i=_,M.dir=g?"increasing":"decreasing",M.x=M.pos,M.y=[A,T],v&&(M.orig_p=a[_]),d&&(M.tx=e.text[_]),m&&(M.htx=e.hovertext[_]),x.push(M)}else x.push({pos:b,empty:!0})}return e._extremes[l._id]=i.findExtremes(l,r.concat(p,h),{padded:!0}),x.length&&(x[0].t={labels:{open:n(t,"open:")+" ",high:n(t,"high:")+" ",low:n(t,"low:")+" ",close:n(t,"close:")+" "}}),x}e.exports={calc:function(t,e){var n=i.getFromId(t,e.xaxis),o=i.getFromId(t,e.yaxis),c=function(t,e,n){var i=n._minDiff;if(!i){var o,s=t._fullData,l=[];for(i=1/0,o=0;o"+u.labels[x]+r.hoverLabelText(s,_,l.yhoverformat):((v=n.extendFlat({},p)).y0=v.y1=b,v.yLabelVal=_,v.yLabel=u.labels[x]+r.hoverLabelText(s,_,l.yhoverformat),v.name="",h.push(v),g[_]=v)}return h}function h(t,e,n,i){var a=t.cd,s=t.ya,u=a[0].trace,h=a[0].t,p=c(t,e,n,i);if(!p)return[];var f=a[p.index],d=p.index=f.i,m=f.dir;function g(t){return h.labels[t]+r.hoverLabelText(s,u[t][d],u.yhoverformat)}var y=f.hi||u.hoverinfo,v=y.split("+"),x="all"===y,_=x||-1!==v.indexOf("y"),b=x||-1!==v.indexOf("text"),w=_?[g("open"),g("high"),g("low"),g("close")+" "+l[m]]:[];return b&&o(f,u,w),p.extraText=w.join("
"),p.y0=p.y1=s.c2p(f.yc,!0),[p]}e.exports={hoverPoints:function(t,e,r,n){return t.cd[0].trace.hoverlabel.split?u(t,e,r,n):h(t,e,r,n)},hoverSplit:u,hoverOnPoints:h}}}),aT=f({"src/traces/ohlc/select.js"(t,e){e.exports=function(t,e){var r,n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].t.bPos||0;if(!1===e)for(r=0;rn?function(t){return t<=0}:function(t){return t>=0};t.c2g=function(r){var n=t.c2l(r)-e;return(s(n)?n:0)+o},t.g2c=function(r){return t.l2c(r+e-o)},t.g2p=function(t){return t*a},t.c2p=function(e){return t.g2p(t.c2g(e))}}}(t,e);break;case"angularaxis":!function(t,e){var n=t.type;if("linear"===n){var o=t.d2c,s=t.c2d;t.d2c=function(t,e){return function(t,e){return"degrees"===e?i(t):t}(o(t),e)},t.c2d=function(t,e){return s(function(t,e){return"degrees"===e?a(t):t}(t,e))}}t.makeCalcdata=function(e,r){var n,i,a=e[r],o=e._length,s=function(r){return t.d2c(r,e.thetaunit)};if(a)for(n=new Array(o),i=0;i1e-10?t:0}function h(t,e,r){e=e||0,r=r||0;for(var n=t.length,i=new Array(n),a=0;a0?r:1/0})),a=r.mod(n+1,e.length);return[e[n],e[a]]},findIntersectionXY:l,findXYatLength:function(t,e,r,n){var i=-e*r,a=e*e+1,o=2*(e*i-r),s=i*i+r*r-t*t,l=Math.sqrt(o*o-4*a*s),c=(-o+l)/(2*a),u=(-o-l)/(2*a);return[[c,e*c+i+n],[u,e*u+i+n]]},clampTiny:u,pathPolygon:function(t,e,r,n,i,a){return"M"+h(c(t,e,r,n),i,a).join("L")},pathPolygonAnnulus:function(t,e,r,n,i,a,o){var s,l;t0?1:0}function n(t){var e=t[0],r=t[1];if(!isFinite(e)||!isFinite(r))return[1,0];var n=(e+1)*(e+1)+r*r;return[(e*e+r*r-1)/n,2*r/n]}function i(t,e){var r=e[0],n=e[1];return[r*t.radius+t.cx,-n*t.radius+t.cy]}function a(t,e){return e*t.radius}e.exports={smith:n,reactanceArc:function(t,e,r,o){var s=i(t,n([r,e])),l=s[0],c=s[1],u=i(t,n([o,e])),h=u[0],p=u[1];if(0===e)return["M"+l+","+c,"L"+h+","+p].join(" ");var f=a(t,1/Math.abs(e));return["M"+l+","+c,"A"+f+","+f+" 0 0,"+(e<0?1:0)+" "+h+","+p].join(" ")},resistanceArc:function(t,e,o,s){var l=a(t,1/(e+1)),c=i(t,n([e,o])),u=c[0],h=c[1],p=i(t,n([e,s])),f=p[0],d=p[1];if(r(o)!==r(s)){var m=i(t,n([e,0]));return["M"+u+","+h,"A"+l+","+l+" 0 0,"+(0=90||i>90&&a>=450?1:s<=0&&c<=0?0:Math.max(s,c),[i<=180&&a>=180||i>180&&a>=540?-1:o>=0&&l>=0?0:Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?-1:s>=0&&c>=0?0:Math.min(s,c),a>=360?1:o<=0&&l<=0?0:Math.max(o,l),e]}(d),b=_[2]-_[0],w=_[3]-_[1],T=f/p,A=Math.abs(w/b);T>A?(m=p,x=(f-(g=p*A))/i.h/2,y=[u[0],u[1]],v=[h[0]+x,h[1]-x]):(g=f,x=(p-(m=f/A))/i.w/2,y=[u[0]+x,u[1]-x],v=[h[0],h[1]]),r.xLength2=m,r.yLength2=g,r.xDomain2=y,r.yDomain2=v;var k,M=r.xOffset2=i.l+i.w*y[0],S=r.yOffset2=i.t+i.h*(1-v[1]),E=r.radius=m/b,C=r.innerRadius=r.getHole(e)*E,I=r.cx=M-E*_[0],L=r.cy=S+E*_[3],P=r.cxx=I-M,z=r.cyy=L-S,D=a.side;"counterclockwise"===D?(k=D,D="top"):"clockwise"===D&&(k=D,D="bottom"),r.radialAxis=r.mockAxis(t,e,a,{_id:"x",side:D,_trueSide:k,domain:[C/i.w,E/i.w]}),r.angularAxis=r.mockAxis(t,e,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(t,e),r.updateAngularAxis(t,e),r.updateRadialAxis(t,e),r.updateRadialAxisTitle(t,e),r.xaxis=r.mockCartesianAxis(t,e,{_id:"x",domain:y}),r.yaxis=r.mockCartesianAxis(t,e,{_id:"y",domain:v});var O=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",O).attr("transform",s(P,z)),n.frontplot.attr("transform",s(M,S)).call(c.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",O).attr("transform",s(I,L)).call(l.fill,e.bgcolor)},N.mockAxis=function(t,e,r,n){var i=a.extendFlat({},r,n);return f(i,e,t),i},N.mockCartesianAxis=function(t,e,r){var n=this,i=n.isSmith,o=r._id,s=a.extendFlat({type:"linear"},r);p(s,t);var l={x:[0,2],y:[1,3]};return s.setRange=function(){var t=n.sectorBBox,r=l[o],i=n.radialAxis._rl,a=(i[1]-i[0])/(1-n.getHole(e));s.range=[t[r[0]]*a,t[r[1]]*a]},s.isPtWithinRange="x"!==o||i?function(){return!0}:function(t){return n.isPtInside(t)},s.setRange(),s.setScale(),s},N.doAutoRange=function(t,e){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(e);d(n,i);var o=i.range;if(a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")],void 0!==i.minallowed){var s=i.r2l(i.minallowed);i._rl[0]>i._rl[1]?i._rl[1]=Math.max(i._rl[1],s):i._rl[0]=Math.max(i._rl[0],s)}if(void 0!==i.maxallowed){var l=i.r2l(i.maxallowed);i._rl[0]90&&m<=270&&(g.tickangle=180);var x=v?function(t){var e=z(r,I([t.x,0]));return s(e[0]-p,e[1]-f)}:function(t){return s(g.l2p(t.x)+u,0)},_=v?function(t){return P(r,t.x,-1/0,1/0)}:function(t){return r.pathArc(g.r2p(t.x)+u)},b=U(d);if(r.radialTickLayout!==b&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=b),y){g.setScale();var w=0,T=v?(g.tickvals||[]).filter((function(t){return t>=0})).map((function(t){return h.tickText(g,t,!0,!1)})):h.calcTicks(g),A=v?T:h.clipEnds(g,T),k=h.getTickSigns(g)[2];v&&(("top"===g.ticks&&"bottom"===g.side||"bottom"===g.ticks&&"top"===g.side)&&(k=-k),"top"===g.ticks&&"top"===g.side&&(w=-g.ticklen),"bottom"===g.ticks&&"bottom"===g.side&&(w=g.ticklen)),h.drawTicks(n,g,{vals:T,layer:i["radial-axis"],path:h.makeTickPath(g,0,k),transFn:x,crisp:!1}),h.drawGrid(n,g,{vals:A,layer:i["radial-grid"],path:_,transFn:a.noop,crisp:!1}),h.drawLabels(n,g,{vals:T,layer:i["radial-axis"],transFn:x,labelFns:h.makeLabelFns(g,w)})}var M=r.radialAxisAngle=r.vangles?B(V(F(d.angle),r.vangles)):d.angle,S=s(p,f),E=S+o(-M);q(i["radial-axis"],y&&(d.showticklabels||d.ticks),{transform:E}),q(i["radial-grid"],y&&d.showgrid,{transform:v?"":S}),q(i["radial-line"].select("line"),y&&d.showline,{x1:v?-c:u,y1:0,x2:c,y2:0,transform:E}).attr("stroke-width",d.linewidth).call(l.stroke,d.linecolor)},N.updateRadialAxisTitle=function(t,e,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(e),u=n.id+"title",h=0;if(l.title){var p=c.bBox(n.layers["radial-axis"].node()).height,f=l.title.font.size,d=l.side;h="top"===d?f:"counterclockwise"===d?-(p+.4*f):p+.8*f}var m=void 0!==r?r:n.radialAxisAngle,g=F(m),y=Math.cos(g),x=Math.sin(g),_=o+a/2*y+h*x,b=s-a/2*x+h*y;n.layers["radial-axis-title"]=v.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title",placeholder:D(i,"Click to enter radial axis title"),attributes:{x:_,y:b,"text-anchor":"middle"},transform:{rotate:-m}})}},N.updateAngularAxis=function(t,e){var r=this,n=r.gd,i=r.layers,c=r.radius,u=r.innerRadius,p=r.cx,f=r.cy,d=r.getAngular(e),m=r.angularAxis,g=r.isSmith;g||(r.fillViewInitialKey("angularaxis.rotation",d.rotation),m.setGeometry(),m.setScale());var y=g?function(t){var e=z(r,I([0,t.x]));return Math.atan2(e[0]-p,e[1]-f)-Math.PI/2}:function(t){return m.t2g(t.x)};"linear"===m.type&&"radians"===m.thetaunit&&(m.tick0=B(m.tick0),m.dtick=B(m.dtick));var v=function(t){return s(p+c*Math.cos(t),f-c*Math.sin(t))},x=g?function(t){var e=z(r,I([0,t.x]));return s(e[0],e[1])}:function(t){return v(y(t))},_=g?function(t){var e=z(r,I([0,t.x])),n=Math.atan2(e[0]-p,e[1]-f)-Math.PI/2;return s(e[0],e[1])+o(-B(n))}:function(t){var e=y(t);return v(e)+o(-B(e))},b=g?function(t){return L(r,t.x,0,1/0)}:function(t){var e=y(t),r=Math.cos(e),n=Math.sin(e);return"M"+[p+u*r,f-u*n]+"L"+[p+c*r,f-c*n]},w=h.makeLabelFns(m,0).labelStandoff,T={xFn:function(t){var e=y(t);return Math.cos(e)*w},yFn:function(t){var e=y(t),r=Math.sin(e)>0?.2:1;return-Math.sin(e)*(w+t.fontSize*r)+Math.abs(Math.cos(e))*(t.fontSize*M)},anchorFn:function(t){var e=y(t),r=Math.cos(e);return Math.abs(r)<.1?"middle":r>0?"start":"end"},heightFn:function(t,e,r){var n=y(t);return-.5*(1+Math.sin(n))*r}},A=U(d);r.angularTickLayout!==A&&(i["angular-axis"].selectAll("."+m._id+"tick").remove(),r.angularTickLayout=A);var k,S=g?[1/0].concat(m.tickvals||[]).map((function(t){return h.tickText(m,t,!0,!1)})):h.calcTicks(m);if(g&&(S[0].text="∞",S[0].fontSize*=1.75),"linear"===e.gridshape?(k=S.map(y),a.angleDelta(k[0],k[1])<0&&(k=k.slice().reverse())):k=null,r.vangles=k,"category"===m.type&&(S=S.filter((function(t){return a.isAngleInsideSector(y(t),r.sectorInRad)}))),m.visible){var E="inside"===m.ticks?-1:1,C=(m.linewidth||1)/2;h.drawTicks(n,m,{vals:S,layer:i["angular-axis"],path:"M"+E*C+",0h"+E*m.ticklen,transFn:_,crisp:!1}),h.drawGrid(n,m,{vals:S,layer:i["angular-grid"],path:b,transFn:a.noop,crisp:!1}),h.drawLabels(n,m,{vals:S,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:x,labelFns:T})}q(i["angular-line"].select("path"),d.showline,{d:r.pathSubplot(),transform:s(p,f)}).attr("stroke-width",d.linewidth).call(l.stroke,d.linecolor)},N.updateFx=function(t,e){this.gd._context.staticPlot||(!this.isSmith&&(this.updateAngularDrag(t),this.updateRadialDrag(t,e,0),this.updateRadialDrag(t,e,1)),this.updateHoverAndMainDrag(t))},N.updateHoverAndMainDrag=function(t){var e,o,l=this,c=l.isSmith,u=l.gd,h=l.layers,p=t._zoomlayer,f=S.MINZOOM,d=S.OFFEDGE,v=l.radius,x=l.innerRadius,T=l.cx,A=l.cy,k=l.cxx,M=l.cyy,C=l.sectorInRad,I=l.vangles,L=l.radialAxis,P=E.clampTiny,z=E.findXYatLength,D=E.findEnclosingVertexAngles,O=S.cornerHalfWidth,R=S.cornerLen/2,F=m.makeDragger(h,"path","maindrag",!1===t.dragmode?"none":"crosshair");r.select(F).attr("d",l.pathSubplot()).attr("transform",s(T,A)),F.onmousemove=function(t){y.hover(u,t,l.id),u._fullLayout._lasthover=F,u._fullLayout._hoversubplot=l.id},F.onmouseout=function(t){u._dragging||g.unhover(u,t)};var B,j,N,U,V,q,H,G,W,Z={element:F,gd:u,subplot:l.id,plotinfo:{id:l.id,xaxis:l.xaxis,yaxis:l.yaxis},xaxes:[l.xaxis],yaxes:[l.yaxis]};function Y(t,e){return Math.sqrt(t*t+e*e)}function X(t,e){return Y(t-k,e-M)}function $(t,e){return Math.atan2(M-e,t-k)}function K(t,e){return[t*Math.cos(e),t*Math.sin(-e)]}function J(t,e){if(0===t)return l.pathSector(2*O);var r=R/t,n=e-r,i=e+r,a=Math.max(0,Math.min(t,v)),o=a-O,s=a+O;return"M"+K(o,n)+"A"+[o,o]+" 0,0,0 "+K(o,i)+"L"+K(s,i)+"A"+[s,s]+" 0,0,1 "+K(s,n)+"Z"}function Q(t,e,r){if(0===t)return l.pathSector(2*O);var n,i,a=K(t,e),o=K(t,r),s=P((a[0]+o[0])/2),c=P((a[1]+o[1])/2);if(s&&c){var u=c/s,h=-1/u,p=z(O,u,s,c);n=z(R,h,p[0][0],p[0][1]),i=z(R,h,p[1][0],p[1][1])}else{var f,d;c?(f=R,d=O):(f=O,d=R),n=[[s-f,c-d],[s+f,c-d]],i=[[s-f,c+d],[s+f,c+d]]}return"M"+n.join("L")+"L"+i.reverse().join("L")+"Z"}function tt(t,e){return e=Math.max(Math.min(e,v),x),tf?(t-1&&1===t&&b(e,u,[l.xaxis],[l.yaxis],l.id,Z),r.indexOf("event")>-1&&y.click(u,e,l.id)}Z.prepFn=function(t,r,i){var s=u._fullLayout.dragmode,h=F.getBoundingClientRect();u._fullLayout._calcInverseTransform(u);var f=u._fullLayout._invTransform;e=u._fullLayout._invScaleX,o=u._fullLayout._invScaleY;var d=a.apply3DTransform(f)(r-h.left,i-h.top);if(B=d[0],j=d[1],I){var g=E.findPolygonOffset(v,C[0],C[1],I);B+=k+g[0],j+=M+g[1]}switch(s){case"zoom":Z.clickFn=st,c||(Z.moveFn=I?it:rt,Z.doneFn=at,function(){N=null,U=null,V=l.pathSubplot(),q=!1;var t=u._fullLayout[l.id];H=n(t.bgcolor).getLuminance(),(G=m.makeZoombox(p,H,T,A,V)).attr("fill-rule","evenodd"),W=m.makeCorners(p,T,A),w(u)}());break;case"select":case"lasso":_(t,r,i,Z,s)}},g.init(Z)},N.updateRadialDrag=function(t,e,n){var l=this,c=l.gd,u=l.layers,h=l.radius,p=l.innerRadius,f=l.cx,d=l.cy,y=l.radialAxis,v=S.radialDragBoxSize,x=v/2;if(y.visible){var _,b,T,M=F(l.radialAxisAngle),E=y._rl,C=E[0],I=E[1],L=E[n],P=.75*(E[1]-E[0])/(1-l.getHole(e))/h;n?(_=f+(h+x)*Math.cos(M),b=d-(h+x)*Math.sin(M),T="radialdrag"):(_=f+(p-x)*Math.cos(M),b=d-(p-x)*Math.sin(M),T="radialdrag-inner");var z,D,O,R=m.makeRectDragger(u,T,"crosshair",-x,-x,v,v),j={element:R,gd:c};!1===t.dragmode&&(j.dragmode=!1),q(r.select(R),y.visible&&p0==(n?O>C:O")}}e.exports={hoverPoints:function(t,e,i,a){var o=r(t,e,i,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,n(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:n}}}),ST=f({"src/traces/scatterpolar/index.js"(t,e){e.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:_T(),categories:["polar","symbols","showLegend","scatter-like"],attributes:bT(),supplyDefaults:wT().supplyDefaults,colorbar:fi(),formatLabels:TT(),calc:AT(),plot:kT(),style:mi().style,styleOnSelect:mi().styleOnSelect,hoverPoints:MT().hoverPoints,selectPoints:vi(),meta:{}}}}),ET=f({"lib/scatterpolar.js"(t,e){e.exports=ST()}}),CT=f({"src/traces/scatterpolargl/attributes.js"(t,e){var r=bT(),n=Ig(),i=Ot().texttemplateAttrs;e.exports={mode:r.mode,r:r.r,theta:r.theta,r0:r.r0,dr:r.dr,theta0:r.theta0,dtheta:r.dtheta,thetaunit:r.thetaunit,text:r.text,texttemplate:i({editType:"plot"},{keys:["r","theta","text"]}),hovertext:r.hovertext,hovertemplate:r.hovertemplate,line:{color:n.line.color,width:n.line.width,dash:n.line.dash,editType:"calc"},connectgaps:n.connectgaps,marker:n.marker,fill:n.fill,fillcolor:n.fillcolor,textposition:n.textposition,textfont:n.textfont,hoverinfo:r.hoverinfo,selected:r.selected,unselected:r.unselected}}}),IT=f({"src/traces/scatterpolargl/defaults.js"(t,e){var r=le(),n=Ye(),i=wT().handleRThetaDefaults,a=Zn(),o=Yn(),s=$n(),l=Kn(),c=bn().PTS_LINESONLY,u=CT();e.exports=function(t,e,h,p){function f(n,i){return r.coerce(t,e,u,n,i)}var d=i(t,e,p,f);d?(f("thetaunit"),f("mode",d=l&&(v.marker.cluster=d.tree),v.marker&&(v.markerSel.positions=v.markerUnsel.positions=v.marker.positions=b),v.line&&b.length>1&&s.extendFlat(v.line,o.linePositions(t,f,b)),v.text&&(s.extendFlat(v.text,{positions:b},o.textPosition(t,f,v.text,v.marker)),s.extendFlat(v.textSel,{positions:b},o.textPosition(t,f,v.text,v.markerSel)),s.extendFlat(v.textUnsel,{positions:b},o.textPosition(t,f,v.text,v.markerUnsel))),v.fill&&!p.fill2d&&(p.fill2d=!0),v.marker&&!p.scatter2d&&(p.scatter2d=!0),v.line&&!p.line2d&&(p.line2d=!0),v.text&&!p.glText&&(p.glText=!0),p.lineOptions.push(v.line),p.fillOptions.push(v.fill),p.markerOptions.push(v.marker),p.markerSelectedOptions.push(v.markerSel),p.markerUnselectedOptions.push(v.markerUnsel),p.textOptions.push(v.text),p.textSelectedOptions.push(v.textSel),p.textUnselectedOptions.push(v.textUnsel),p.selectBatch.push([]),p.unselectBatch.push([]),d.x=w,d.y=T,d.rawx=w,d.rawy=T,d.r=g,d.theta=y,d.positions=b,d._scene=p,d.index=p.count,p.count++}})),i(t,e,c)}},e.exports.reglPrecompiled={}}}),RT=f({"src/traces/scatterpolargl/index.js"(t,e){var r=DT();r.plot=OT(),e.exports=r}}),FT=f({"lib/scatterpolargl.js"(t,e){e.exports=RT()}}),BT=f({"src/traces/barpolar/attributes.js"(t,e){var r,n=Ot().hovertemplateAttrs,i=R().extendFlat,a=bT(),o=Ga();e.exports={r:a.r,theta:a.theta,r0:a.r0,dr:a.dr,theta0:a.theta0,dtheta:a.dtheta,thetaunit:a.thetaunit,base:i({},o.base,{}),offset:i({},o.offset,{}),width:i({},o.width,{}),text:i({},o.text,{}),hovertext:i({},o.hovertext,{}),marker:(r=i({},o.marker),delete r.cornerradius,r),hoverinfo:a.hoverinfo,hovertemplate:n(),selected:o.selected,unselected:o.unselected}}}),jT=f({"src/traces/barpolar/layout_attributes.js"(t,e){e.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}}}),NT=f({"src/traces/barpolar/defaults.js"(t,e){var r=le(),n=wT().handleRThetaDefaults,i=Za(),a=BT();e.exports=function(t,e,o,s){function l(n,i){return r.coerce(t,e,a,n,i)}n(t,e,s,l)?(l("thetaunit"),l("base"),l("offset"),l("width"),l("text"),l("hovertext"),l("hovertemplate"),i(t,e,l,o,s),r.coerceSelectionMarkerOpacity(e,l)):e.visible=!1}}}),UT=f({"src/traces/barpolar/layout_defaults.js"(t,e){var r=le(),n=jT();e.exports=function(t,e,i){var a,o={};function s(i,o){return r.coerce(t[a]||{},e[a],n,i,o)}for(var l=0;l0?(c=s,u=l):(c=l,u=s);var h=[o.findEnclosingVertexAngles(c,t.vangles)[0],(c+u)/2,o.findEnclosingVertexAngles(u,t.vangles)[1]];return o.pathPolygonAnnulus(n,a,c,u,h,e,r)}:function(t,n,a,o){return i.pathAnnulus(t,n,a,o,e,r)}}(e),d=e.layers.frontplot.select("g.barlayer");i.makeTraceGroups(d,s,"trace bars").each((function(){var o=r.select(this),s=i.ensureSingle(o,"g","points").selectAll("g.point").data(i.identity);s.enter().append("g").style("vector-effect",l?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),s.exit().remove(),s.each((function(t){var e,a=r.select(this),o=t.rp0=h.c2p(t.s0),s=t.rp1=h.c2p(t.s1),l=t.thetag0=p.c2g(t.p0),d=t.thetag1=p.c2g(t.p1);if(n(o)&&n(s)&&n(l)&&n(d)&&o!==s&&l!==d){var m=h.c2g(t.s1),g=(l+d)/2;t.ct=[c.c2p(m*Math.cos(g)),u.c2p(m*Math.sin(g))],e=f(o,s,l,d)}else e="M0,0Z";i.ensureSingle(a,"path").attr("d",e)})),a.setClipUrl(o,e._hasClipOnAxisFalse?e.clipIds.forTraces:null,t)}))}}}),HT=f({"src/traces/barpolar/hover.js"(t,e){var r=Dr(),n=le(),i=ro().getTraceColor,a=n.fillText,o=MT().makeHoverPointText,s=mT().isPtInsidePolygon;e.exports=function(t,e,l){var c=t.cd,u=c[0].trace,h=t.subplot,p=h.radialAxis,f=h.angularAxis,d=h.vangles,m=d?s:n.isPtInsideSector,g=t.maxHoverDistance,y=f._period||2*Math.PI,v=Math.abs(p.g2p(Math.sqrt(e*e+l*l))),x=Math.atan2(l,e);if(p.range[0]>p.range[1]&&(x+=Math.PI),r.getClosest(c,(function(t){return m(v,x,[t.rp0,t.rp1],[t.thetag0,t.thetag1],d)?g+Math.min(1,Math.abs(t.thetag1-t.thetag0)/y)-1+(t.rp1-v)/(t.rp1-t.rp0)-1:1/0}),t),!1!==t.index){var _=c[t.index];t.x0=t.x1=_.ct[0],t.y0=t.y1=_.ct[1];var b=n.extendFlat({},_,{r:_.s,theta:_.p});return a(_,u,t),o(b,u,h,t),t.hovertemplate=u.hovertemplate,t.color=i(u,_),t.xLabelVal=t.yLabelVal=void 0,_.s<0&&(t.idealAlign="left"),[t]}}}}),GT=f({"src/traces/barpolar/index.js"(t,e){e.exports={moduleType:"trace",name:"barpolar",basePlotModule:_T(),categories:["polar","bar","showLegend"],attributes:BT(),layoutAttributes:jT(),supplyDefaults:NT(),supplyLayoutDefaults:UT(),calc:VT().calc,crossTraceCalc:VT().crossTraceCalc,plot:qT(),colorbar:fi(),formatLabels:TT(),style:to().style,styleOnSelect:to().styleOnSelect,hoverPoints:HT(),selectPoints:io(),meta:{}}}}),WT=f({"lib/barpolar.js"(t,e){e.exports=GT()}}),ZT=f({"src/plots/smith/constants.js"(t,e){e.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}}}),YT=f({"src/plots/smith/layout_attributes.js"(t,e){var r=q(),n=Ie(),i=Aa().attributes,a=le().extendFlat,o=Pt().overrideAll,s=o({color:n.color,showline:a({},n.showline,{dflt:!0}),linecolor:n.linecolor,linewidth:n.linewidth,showgrid:a({},n.showgrid,{dflt:!0}),gridcolor:n.gridcolor,gridwidth:n.gridwidth,griddash:n.griddash},"plot","from-root"),l=o({ticklen:n.ticklen,tickwidth:a({},n.tickwidth,{dflt:2}),tickcolor:n.tickcolor,showticklabels:n.showticklabels,labelalias:n.labelalias,showtickprefix:n.showtickprefix,tickprefix:n.tickprefix,showticksuffix:n.showticksuffix,ticksuffix:n.ticksuffix,tickfont:n.tickfont,tickformat:n.tickformat,hoverformat:n.hoverformat,layer:n.layer},"plot","from-root"),c=a({visible:a({},n.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:a({},n.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},s,l),u=a({visible:a({},n.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:n.ticks,editType:"calc"},s,l);e.exports={domain:i({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:r.background},realaxis:c,imaginaryaxis:u,editType:"calc"}}}),XT=f({"src/plots/smith/layout_defaults.js"(t,e){var r,n,i,a=le(),o=H(),s=ye(),l=Hs(),c=we().getSubplotData,u=Ue(),h=Ne(),p=wi(),f=er(),d=YT(),m=ZT(),g=m.axisNames,y=(r=function(t){return a.isTypedArray(t)&&(t=Array.from(t)),t.slice().reverse().map((function(t){return-t})).concat([0]).concat(t)},n=String,i={},function(t){var e=n?n(t):t;if(e in i)return i[e];var a=r(t);return i[e]=a,a});function v(t,e,r,n){var i=r("bgcolor");n.bgColor=o.combine(i,n.paper_bgcolor);var l,v=c(n.fullData,m.name,n.id),x=n.layoutOut;function _(t,e){return r(l+"."+t,e)}for(var b=0;b")}}e.exports={hoverPoints:function(t,e,i,a){var o=r(t,e,i,a);if(o&&!1!==o[0].index){var s=o[0];if(void 0===s.index)return o;var l=t.subplot,c=s.cd[s.index],u=s.trace;if(l.isPtInside(c))return s.xLabelVal=void 0,s.yLabelVal=void 0,n(c,u,l,s),s.hovertemplate=u.hovertemplate,o}},makeHoverPointText:n}}}),nA=f({"src/traces/scattersmith/index.js"(t,e){e.exports={moduleType:"trace",name:"scattersmith",basePlotModule:$T(),categories:["smith","symbols","showLegend","scatter-like"],attributes:KT(),supplyDefaults:JT(),colorbar:fi(),formatLabels:QT(),calc:tA(),plot:eA(),style:mi().style,styleOnSelect:mi().styleOnSelect,hoverPoints:rA().hoverPoints,selectPoints:vi(),meta:{}}}}),iA=f({"lib/scattersmith.js"(t,e){e.exports=nA()}}),aA=f({"node_modules/world-calendars/dist/main.js"(t,e){var r=oy();function n(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}function i(t,e,r,n){if(this._calendar=t,this._year=e,this._month=r,this._day=n,0===this._calendar._validateLevel&&!this._calendar.isValid(this._year,this._month,this._day))throw(l.local.invalidDate||l.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function a(t,e){return"000000".substring(0,e-(t=""+t).length)+t}function o(){this.shortYearCutoff="+10"}function s(t){this.local=this.regionalOptions[t]||this.regionalOptions[""]}r(n.prototype,{instance:function(t,e){t=(t||"gregorian").toLowerCase(),e=e||"";var r=this._localCals[t+"-"+e];if(!r&&this.calendars[t]&&(r=new this.calendars[t](e),this._localCals[t+"-"+e]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,t);return r},newDate:function(t,e,r,n,i){return(n=(null!=t&&t.year?t.calendar():"string"==typeof n?this.instance(n,i):n)||this.instance()).newDate(t,e,r)},substituteDigits:function(t){return function(e){return(e+"").replace(/[0-9]/g,(function(e){return t[e]}))}},substituteChineseDigits:function(t,e){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(0===a?"":t[a]+e[i])+n,i++,r=Math.floor(r/10)}return 0===n.indexOf(t[1]+e[1])&&(n=n.substr(1)),n||t[0]}}}),r(i.prototype,{newDate:function(t,e,r){return this._calendar.newDate(t??this,e,r)},year:function(t){return 0===arguments.length?this._year:this.set(t,"y")},month:function(t){return 0===arguments.length?this._month:this.set(t,"m")},day:function(t){return 0===arguments.length?this._day:this.set(t,"d")},date:function(t,e,r){if(!this._calendar.isValid(t,e,r))throw(l.local.invalidDate||l.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=t,this._month=e,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(t,e){return this._calendar.add(this,t,e)},set:function(t,e){return this._calendar.set(this,t,e)},compareTo:function(t){if(this._calendar.name!==t._calendar.name)throw(l.local.differentCalendars||l.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,t._calendar.local.name);var e=this._year!==t._year?this._year-t._year:this._month!==t._month?this.monthOfYear()-t.monthOfYear():this._day-t._day;return 0===e?0:e<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(t){return this._calendar.fromJD(t)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(t){return this._calendar.fromJSDate(t)},toString:function(){return(this.year()<0?"-":"")+a(Math.abs(this.year()),4)+"-"+a(this.month(),2)+"-"+a(this.day(),2)}}),r(o.prototype,{_validateLevel:0,newDate:function(t,e,r){return null==t?this.today():(t.year&&(this._validate(t,e,r,l.local.invalidDate||l.regionalOptions[""].invalidDate),r=t.day(),e=t.month(),t=t.year()),new i(this,t,e,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(t){return this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear).year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear);return(e.year()<0?"-":"")+a(Math.abs(e.year()),4)},monthsInYear:function(t){return this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear),12},monthOfYear:function(t,e){var r=this._validate(t,e,this.minDay,l.local.invalidMonth||l.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(t,e){var r=(e+this.firstMonth-2*this.minMonth)%this.monthsInYear(t)+this.minMonth;return this._validate(t,r,this.minDay,l.local.invalidMonth||l.regionalOptions[""].invalidMonth),r},daysInYear:function(t){var e=this._validate(t,this.minMonth,this.minDay,l.local.invalidYear||l.regionalOptions[""].invalidYear);return this.leapYear(e)?366:365},dayOfYear:function(t,e,r){var n=this._validate(t,e,r,l.local.invalidDate||l.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(t,e,r){var n=this._validate(t,e,r,l.local.invalidDate||l.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(t,e,r){return this._validate(t,e,r,l.local.invalidDate||l.regionalOptions[""].invalidDate),{}},add:function(t,e,r){return this._validate(t,this.minMonth,this.minDay,l.local.invalidDate||l.regionalOptions[""].invalidDate),this._correctAdd(t,this._add(t,e,r),e,r)},_add:function(t,e,r){if(this._validateLevel++,"d"===r||"w"===r){var n=t.toJD()+e*("w"===r?this.daysInWeek():1),i=t.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=t.year()+("y"===r?e:0),o=t.monthOfYear()+("m"===r?e:0);i=t.day(),"y"===r?(t.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,t.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):"m"===r&&(function(t){for(;oe-1+t.minMonth;)a++,o-=e,e=t.monthsInYear(a)}(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var s=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,s}catch(t){throw this._validateLevel--,t}},_correctAdd:function(t,e,r,n){if(!(this.hasYearZero||"y"!==n&&"m"!==n||0!==e[0]&&t.year()>0==e[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;e=this._add(t,r*i[0]+a*i[1],i[2])}return t.date(e[0],e[1],e[2])},set:function(t,e,r){this._validate(t,this.minMonth,this.minDay,l.local.invalidDate||l.regionalOptions[""].invalidDate);var n="y"===r?e:t.year(),i="m"===r?e:t.month(),a="d"===r?e:t.day();return("y"===r||"m"===r)&&(a=Math.min(a,this.daysInMonth(n,i))),t.date(n,i,a)},isValid:function(t,e,r){this._validateLevel++;var n=this.hasYearZero||0!==t;if(n){var i=this.newDate(t,e,this.minDay);n=e>=this.minMonth&&e-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),c=i-(l>2.5?4716:4715);return c<=0&&c--,this.newDate(c,l,s)},toJSDate:function(t,e,r){var n=this._validate(t,e,r,l.local.invalidDate||l.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(t){return this.newDate(t.getFullYear(),t.getMonth()+1,t.getDate())}});var l=e.exports=new n;l.cdate=i,l.baseCalendar=o,l.calendars.gregorian=s}}),oA=f({"node_modules/world-calendars/dist/plus.js"(){var t=oy(),e=aA();t(e.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"}),e.local=e.regionalOptions[""],t(e.cdate.prototype,{formatDate:function(t,e){return"string"!=typeof t&&(e=t,t=""),this._calendar.formatDate(t||"",this,e)}}),t(e.baseCalendar.prototype,{UNIX_EPOCH:e.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:86400,TICKS_EPOCH:e.instance().jdEpoch,TICKS_PER_DAY:864e9,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(t,r,n){if("string"!=typeof t&&(n=r,r=t,t=""),!r)return"";if(r.calendar()!==this)throw e.local.invalidFormat||e.regionalOptions[""].invalidFormat;t=t||this.local.dateFormat;for(var i=(n=n||{}).dayNamesShort||this.local.dayNamesShort,a=n.dayNames||this.local.dayNames,o=n.monthNumbers||this.local.monthNumbers,s=n.monthNamesShort||this.local.monthNamesShort,l=n.monthNames||this.local.monthNames,c=(n.calculateWeek||this.local.calculateWeek,function(e,r){for(var n=1;v+n1}),u=function(t,e,r,n){var i=""+e;if(c(t,n))for(;i.length1},x=function(t,n){var i=v(t,n),a=[2,3,i?4:2,i?4:2,10,11,20]["oyYJ@!".indexOf(t)+1],o=new RegExp("^-?\\d{1,"+a+"}"),s=r.substring(k).match(o);if(!s)throw(e.local.missingNumberAt||e.regionalOptions[""].missingNumberAt).replace(/\{0\}/,k);return k+=s[0].length,parseInt(s[0],10)},_=this,b=function(){if("function"==typeof l){v("m");var t=l.call(_,r.substring(k));return k+=t.length,t}return x("m")},w=function(t,n,i,a){for(var o=v(t,a)?i:n,s=0;s-1){f=1,d=m;for(var E=this.daysInMonth(p,f);d>E;E=this.daysInMonth(p,f))f++,d-=E}return h>-1?this.fromJD(h):this.newDate(p,f,d)},determineDate:function(t,e,r,n,i){r&&"object"!=typeof r&&(i=n,n=r,r=null),"string"!=typeof n&&(i=n,n="");var a=this;return e=e?e.newDate():null,null==t?e:"string"==typeof t?function(t){try{return a.parseDate(n,t,i)}catch{}for(var e=((t=t.toLowerCase()).match(/^c/)&&r?r.newDate():null)||a.today(),o=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,s=o.exec(t);s;)e.add(parseInt(s[1],10),s[2]||"d"),s=o.exec(t);return e}(t):"number"==typeof t?isNaN(t)||t===1/0||t===-1/0?e:a.today().add(t,"d"):a.newDate(t)}})}}),sA=f({"node_modules/world-calendars/dist/calendars/chinese.js"(){var t=aA(),e=oy(),r=t.instance();function n(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}n.prototype=new t.baseCalendar,e(n.prototype,{name:"Chinese",jdEpoch:1721425.5,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(t,e){if("string"==typeof t){var r=t.match(a);return r?r[0]:""}var n=this._validateYear(t),i=t.month(),o=""+this.toChineseMonth(n,i);return e&&o.length<2&&(o="0"+o),this.isIntercalaryMonth(n,i)&&(o+="i"),o},monthNames:function(t){if("string"==typeof t){var e=t.match(o);return e?e[0]:""}var r=this._validateYear(t),n=t.month(),i=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"][this.toChineseMonth(r,n)-1];return this.isIntercalaryMonth(r,n)&&(i="闰"+i),i},monthNamesShort:function(t){if("string"==typeof t){var e=t.match(s);return e?e[0]:""}var r=this._validateYear(t),n=t.month(),i=["一","二","三","四","五","六","七","八","九","十","十一","十二"][this.toChineseMonth(r,n)-1];return this.isIntercalaryMonth(r,n)&&(i="闰"+i),i},parseMonth:function(t,e){t=this._validateYear(t);var r,n=parseInt(e);if(isNaN(n))"闰"===e[0]&&(r=!0,e=e.substring(1)),"月"===e[e.length-1]&&(e=e.substring(0,e.length-1)),n=1+["一","二","三","四","五","六","七","八","九","十","十一","十二"].indexOf(e);else{var i=e[e.length-1];r="i"===i||"I"===i}return this.toMonthIndex(t,n,r)},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(t,e){if(t.year&&(t=t.year()),"number"!=typeof t||t<1888||t>2111)throw e.replace(/\{0\}/,this.local.name);return t},toMonthIndex:function(e,r,n){var i=this.intercalaryMonth(e);if(n&&r!==i||r<1||r>12)throw t.local.invalidMonth.replace(/\{0\}/,this.local.name);return i?!n&&r<=i?r-1:r:r-1},toChineseMonth:function(e,r){e.year&&(r=(e=e.year()).month());var n=this.intercalaryMonth(e);if(r<0||r>(n?12:11))throw t.local.invalidMonth.replace(/\{0\}/,this.local.name);return n?r>13},isIntercalaryMonth:function(t,e){t.year&&(e=(t=t.year()).month());var r=this.intercalaryMonth(t);return!!r&&r===e},leapYear:function(t){return 0!==this.intercalaryMonth(t)},weekOfYear:function(e,n,i){var a,o=this._validateYear(e,t.local.invalidyear),s=c[o-c[0]],l=s>>9&4095,u=s>>5&15,h=31&s;(a=r.newDate(l,u,h)).add(4-(a.dayOfWeek()||7),"d");var p=this.toJD(e,n,i)-a.toJD();return 1+Math.floor(p/7)},monthsInYear:function(t){return this.leapYear(t)?13:12},daysInMonth:function(e,r){e.year&&(r=e.month(),e=e.year()),e=this._validateYear(e);var n=l[e-l[0]];if(r>(n>>13?12:11))throw t.local.invalidMonth.replace(/\{0\}/,this.local.name);return n&1<<12-r?30:29},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(e,n,i){var a=this._validate(e,s,i,t.local.invalidDate);e=this._validateYear(a.year()),n=a.month(),i=a.day();var o=this.isIntercalaryMonth(e,n),s=this.toChineseMonth(e,n),u=function(t,e,r,n){var i,a,o;if("object"==typeof t)a=t,i=e||{};else{var s;if(!("number"==typeof t&&t>=1888&&t<=2111))throw new Error("Lunar year outside range 1888-2111");if(!("number"==typeof e&&e>=1&&e<=12))throw new Error("Lunar month outside range 1 - 12");if(!("number"==typeof r&&r>=1&&r<=30))throw new Error("Lunar day outside range 1 - 30");"object"==typeof n?(s=!1,i=n):(s=!!n,i={}),a={year:t,month:e,day:r,isIntercalary:s}}o=a.day-1;var u,h=l[a.year-l[0]],p=h>>13;u=p&&(a.month>p||a.isIntercalary)?a.month:a.month-1;for(var f=0;f>9&4095,(d>>5&15)-1,(31&d)+o);return i.year=m.getFullYear(),i.month=1+m.getMonth(),i.day=m.getDate(),i}(e,s,i,o);return r.toJD(u.year,u.month,u.day)},fromJD:function(t){var e=r.fromJD(t),n=function(t,e,r){var n,i;if("object"==typeof t)n=t,i=e||{};else{if(!("number"==typeof t&&t>=1888&&t<=2111))throw new Error("Solar year outside range 1888-2111");if(!("number"==typeof e&&e>=1&&e<=12))throw new Error("Solar month outside range 1 - 12");if(!("number"==typeof r&&r>=1&&r<=31))throw new Error("Solar day outside range 1 - 31");n={year:t,month:e,day:r},i={}}var a=c[n.year-c[0]],o=n.year<<9|n.month<<5|n.day;i.year=o>=a?n.year:n.year-1,a=c[i.year-c[0]];var s,u=new Date(a>>9&4095,(a>>5&15)-1,31&a),h=new Date(n.year,n.month-1,n.day);s=Math.round((h-u)/864e5);var p,f=l[i.year-l[0]];for(p=0;p<13;p++){var d=f&1<<12-p?30:29;if(s>13;return!m||p=2&&n<=6},extraInfo:function(e,r,i){var a=this._validate(e,r,i,t.local.invalidDate);return{century:n[Math.floor((a.year()-1)/100)+1]||""}},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);return e=i.year()+(i.year()<0?1:0),r=i.month(),(n=i.day())+(r>1?16:0)+(r>2?32*(r-2):0)+400*(e-1)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t+.5)-Math.floor(this.jdEpoch)-1;var e=Math.floor(t/400)+1;t-=400*(e-1),t+=t>15?16:0;var r=Math.floor(t/32)+1,n=t-32*(r-1)+1;return this.newDate(e<=0?e-1:e,r,n)}});var n={20:"Fruitbat",21:"Anchovy"};t.calendars.discworld=r}}),uA=f({"node_modules/world-calendars/dist/calendars/ethiopian.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Ethiopian",jdEpoch:1724220.5,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var r=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return(e=r.year()+(r.year()<0?1:0))%4==3||e%4==-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,t.local.invalidYear||t.regionalOptions[""].invalidYear),13},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(13===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);return(e=i.year())<0&&e++,i.day()+30*(i.month()-1)+365*(e-1)+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(t){var e=Math.floor(t)+.5-this.jdEpoch,r=Math.floor((e-Math.floor((e+366)/1461))/365)+1;r<=0&&r--,e=Math.floor(t)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(e/30)+1,i=e-30*(n-1)+1;return this.newDate(r,n,i)}}),t.calendars.ethiopian=r}}),hA=f({"node_modules/world-calendars/dist/calendars/hebrew.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function n(t,e){return t-e*Math.floor(t/e)}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var r=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return this._leapYear(r.year())},_leapYear:function(t){return n(7*(t=t<0?t+1:t)+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,t.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){return e=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear).year(),this.toJD(-1===e?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,r){return e.year&&(r=e.month(),e=e.year()),this._validate(e,r,this.minDay,t.local.invalidMonth),12===r&&this.leapYear(e)||8===r&&5===n(this.daysInYear(e),10)?30:9===r&&3===n(this.daysInYear(e),10)?29:this.daysPerMonth[r-1]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},extraInfo:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);return{yearType:(this.leapYear(i)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(i)%10-3]}},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);e=i.year(),r=i.month(),n=i.day();var a=e<=0?e+1:e,o=this.jdEpoch+this._delay1(a)+this._delay2(a)+n+1;if(r<7){for(var s=7;s<=this.monthsInYear(e);s++)o+=this.daysInMonth(e,s);for(s=1;s=this.toJD(-1===e?1:e+1,7,1);)e++;for(var r=tthis.toJD(e,r,this.daysInMonth(e,r));)r++;var n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),t.calendars.hebrew=r}}),pA=f({"node_modules/world-calendars/dist/calendars/islamic.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Islamic",jdEpoch:1948439.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-khamīs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){return(11*this._validate(e,this.minMonth,this.minDay,t.local.invalidYear).year()+14)%30<11},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){return this.leapYear(t)?355:354},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(12===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);return e=i.year(),r=i.month(),e=e<=0?e+1:e,(n=i.day())+Math.ceil(29.5*(r-1))+354*(e-1)+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(t){t=Math.floor(t)+.5;var e=Math.floor((30*(t-this.jdEpoch)+10646)/10631);e=e<=0?e-1:e;var r=Math.min(12,Math.ceil((t-29-this.toJD(e,1,1))/29.5)+1),n=t-this.toJD(e,r,1)+1;return this.newDate(e,r,n)}}),t.calendars.islamic=r}}),fA=f({"node_modules/world-calendars/dist/calendars/julian.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Julian",jdEpoch:1721423.5,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var r=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return(e=r.year()<0?r.year()+1:r.year())%4==0},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(2===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);return e=i.year(),r=i.month(),n=i.day(),e<0&&e++,r<=2&&(e--,r+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(r+1))+n-1524.5},fromJD:function(t){var e=Math.floor(t+.5)+1524,r=Math.floor((e-122.1)/365.25),n=Math.floor(365.25*r),i=Math.floor((e-n)/30.6001),a=i-Math.floor(i<14?1:13),o=r-Math.floor(a>2?4716:4715),s=e-n-Math.floor(30.6001*i);return o<=0&&o--,this.newDate(o,a,s)}}),t.calendars.julian=r}}),dA=f({"node_modules/world-calendars/dist/calendars/mayan.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function n(t,e){return t-e*Math.floor(t/e)}function i(t,e){return n(t-1,e)+1}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,t.local.invalidYear),!1},formatYear:function(e){e=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear).year();var r=Math.floor(e/400);return e%=400,e+=e<0?400:0,r+"."+Math.floor(e/20)+"."+e%20},forYear:function(t){if((t=t.split(".")).length<3)throw"Invalid Mayan year";for(var e=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";e=20*e+n}return e},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,t.local.invalidYear),18},weekOfYear:function(e,r,n){return this._validate(e,r,n,t.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,t.local.invalidYear),360},daysInMonth:function(e,r){return this._validate(e,r,this.minDay,t.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,r,n){return this._validate(e,r,n,t.local.invalidDate).day()},weekDay:function(e,r,n){return this._validate(e,r,n,t.local.invalidDate),!0},extraInfo:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate).toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(t){var e=n(8+(t-=this.jdEpoch)+340,365);return[Math.floor(e/20)+1,n(e,20)]},_toTzolkin:function(t){return[i(20+(t-=this.jdEpoch),20),i(t+4,13)]},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);return i.day()+20*i.month()+360*i.year()+this.jdEpoch},fromJD:function(t){t=Math.floor(t)+.5-this.jdEpoch;var e=Math.floor(t/360);t%=360,t+=t<0?360:0;var r=Math.floor(t/20),n=t%20;return this.newDate(e,r,n)}}),t.calendars.mayan=r}}),mA=f({"node_modules/world-calendars/dist/calendars/nanakshahi.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}r.prototype=new t.baseCalendar;var n=t.instance("gregorian");e(r.prototype,{name:"Nanakshahi",jdEpoch:2257673.5,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var r=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear||t.regionalOptions[""].invalidYear);return n.leapYear(r.year()+(r.year()<1?1:0)+1469)},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(12===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(e,r,i){var a=this._validate(e,r,i,t.local.invalidMonth);(e=a.year())<0&&e++;for(var o=a.day(),s=1;s=this.toJD(e+1,1,1);)e++;for(var r=t-Math.floor(this.toJD(e,1,1)+.5)+1,n=1;r>this.daysInMonth(e,n);)r-=this.daysInMonth(e,n),n++;return this.newDate(e,n,r)}}),t.calendars.nanakshahi=r}}),gA=f({"node_modules/world-calendars/dist/calendars/nepali.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Nepali",jdEpoch:1700709.5,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(t){return this.daysInYear(t)!==this.daysPerYear},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){if(e=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear).year(),typeof this.NEPALI_CALENDAR_DATA[e]>"u")return this.daysPerYear;for(var r=0,n=this.minMonth;n<=12;n++)r+=this.NEPALI_CALENDAR_DATA[e][n];return r},daysInMonth:function(e,r){return e.year&&(r=e.month(),e=e.year()),this._validate(e,r,this.minDay,t.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[e]>"u"?this.daysPerMonth[r-1]:this.NEPALI_CALENDAR_DATA[e][r]},weekDay:function(t,e,r){return 6!==this.dayOfWeek(t,e,r)},toJD:function(e,r,n){var i=this._validate(e,r,n,t.local.invalidDate);e=i.year(),r=i.month(),n=i.day();var a=t.instance(),o=0,s=r,l=e;this._createMissingCalendarData(e);var c=e-(s>9||9===s&&n>=this.NEPALI_CALENDAR_DATA[l][0]?56:57);for(9!==r&&(o=n,s--);9!==s;)s<=0&&(s=12,l--),o+=this.NEPALI_CALENDAR_DATA[l][s],s--;return 9===r?(o+=n-this.NEPALI_CALENDAR_DATA[l][0])<0&&(o+=a.daysInYear(c)):o+=this.NEPALI_CALENDAR_DATA[l][9]-this.NEPALI_CALENDAR_DATA[l][0],a.newDate(c,1,1).add(o,"d").toJD()},fromJD:function(e){var r=t.instance().fromJD(e),n=r.year(),i=r.dayOfYear(),a=n+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)++o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var c=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,c)},_createMissingCalendarData:function(t){var e=this.daysPerMonth.slice(0);e.unshift(17);for(var r=t-1;r"u"&&(this.NEPALI_CALENDAR_DATA[r]=e)},NEPALI_CALENDAR_DATA:{1970:[18,31,31,32,31,31,31,30,29,30,29,30,30],1971:[18,31,31,32,31,32,30,30,29,30,29,30,30],1972:[17,31,32,31,32,31,30,30,30,29,29,30,30],1973:[19,30,32,31,32,31,30,30,30,29,30,29,31],1974:[19,31,31,32,30,31,31,30,29,30,29,30,30],1975:[18,31,31,32,32,30,31,30,29,30,29,30,30],1976:[17,31,32,31,32,31,30,30,30,29,29,30,31],1977:[18,31,32,31,32,31,31,29,30,29,30,29,31],1978:[18,31,31,32,31,31,31,30,29,30,29,30,30],1979:[18,31,31,32,32,31,30,30,29,30,29,30,30],1980:[17,31,32,31,32,31,30,30,30,29,29,30,31],1981:[18,31,31,31,32,31,31,29,30,30,29,30,30],1982:[18,31,31,32,31,31,31,30,29,30,29,30,30],1983:[18,31,31,32,32,31,30,30,29,30,29,30,30],1984:[17,31,32,31,32,31,30,30,30,29,29,30,31],1985:[18,31,31,31,32,31,31,29,30,30,29,30,30],1986:[18,31,31,32,31,31,31,30,29,30,29,30,30],1987:[18,31,32,31,32,31,30,30,29,30,29,30,30],1988:[17,31,32,31,32,31,30,30,30,29,29,30,31],1989:[18,31,31,31,32,31,31,30,29,30,29,30,30],1990:[18,31,31,32,31,31,31,30,29,30,29,30,30],1991:[18,31,32,31,32,31,30,30,29,30,29,30,30],1992:[17,31,32,31,32,31,30,30,30,29,30,29,31],1993:[18,31,31,31,32,31,31,30,29,30,29,30,30],1994:[18,31,31,32,31,31,31,30,29,30,29,30,30],1995:[17,31,32,31,32,31,30,30,30,29,29,30,30],1996:[17,31,32,31,32,31,30,30,30,29,30,29,31],1997:[18,31,31,32,31,31,31,30,29,30,29,30,30],1998:[18,31,31,32,31,31,31,30,29,30,29,30,30],1999:[17,31,32,31,32,31,30,30,30,29,29,30,31],2e3:[17,30,32,31,32,31,30,30,30,29,30,29,31],2001:[18,31,31,32,31,31,31,30,29,30,29,30,30],2002:[18,31,31,32,32,31,30,30,29,30,29,30,30],2003:[17,31,32,31,32,31,30,30,30,29,29,30,31],2004:[17,30,32,31,32,31,30,30,30,29,30,29,31],2005:[18,31,31,32,31,31,31,30,29,30,29,30,30],2006:[18,31,31,32,32,31,30,30,29,30,29,30,30],2007:[17,31,32,31,32,31,30,30,30,29,29,30,31],2008:[17,31,31,31,32,31,31,29,30,30,29,29,31],2009:[18,31,31,32,31,31,31,30,29,30,29,30,30],2010:[18,31,31,32,32,31,30,30,29,30,29,30,30],2011:[17,31,32,31,32,31,30,30,30,29,29,30,31],2012:[17,31,31,31,32,31,31,29,30,30,29,30,30],2013:[18,31,31,32,31,31,31,30,29,30,29,30,30],2014:[18,31,31,32,32,31,30,30,29,30,29,30,30],2015:[17,31,32,31,32,31,30,30,30,29,29,30,31],2016:[17,31,31,31,32,31,31,29,30,30,29,30,30],2017:[18,31,31,32,31,31,31,30,29,30,29,30,30],2018:[18,31,32,31,32,31,30,30,29,30,29,30,30],2019:[17,31,32,31,32,31,30,30,30,29,30,29,31],2020:[17,31,31,31,32,31,31,30,29,30,29,30,30],2021:[18,31,31,32,31,31,31,30,29,30,29,30,30],2022:[17,31,32,31,32,31,30,30,30,29,29,30,30],2023:[17,31,32,31,32,31,30,30,30,29,30,29,31],2024:[17,31,31,31,32,31,31,30,29,30,29,30,30],2025:[18,31,31,32,31,31,31,30,29,30,29,30,30],2026:[17,31,32,31,32,31,30,30,30,29,29,30,31],2027:[17,30,32,31,32,31,30,30,30,29,30,29,31],2028:[17,31,31,32,31,31,31,30,29,30,29,30,30],2029:[18,31,31,32,31,32,30,30,29,30,29,30,30],2030:[17,31,32,31,32,31,30,30,30,30,30,30,31],2031:[17,31,32,31,32,31,31,31,31,31,31,31,31],2032:[17,32,32,32,32,32,32,32,32,32,32,32,32],2033:[18,31,31,32,32,31,30,30,29,30,29,30,30],2034:[17,31,32,31,32,31,30,30,30,29,29,30,31],2035:[17,30,32,31,32,31,31,29,30,30,29,29,31],2036:[17,31,31,32,31,31,31,30,29,30,29,30,30],2037:[18,31,31,32,32,31,30,30,29,30,29,30,30],2038:[17,31,32,31,32,31,30,30,30,29,29,30,31],2039:[17,31,31,31,32,31,31,29,30,30,29,30,30],2040:[17,31,31,32,31,31,31,30,29,30,29,30,30],2041:[18,31,31,32,32,31,30,30,29,30,29,30,30],2042:[17,31,32,31,32,31,30,30,30,29,29,30,31],2043:[17,31,31,31,32,31,31,29,30,30,29,30,30],2044:[17,31,31,32,31,31,31,30,29,30,29,30,30],2045:[18,31,32,31,32,31,30,30,29,30,29,30,30],2046:[17,31,32,31,32,31,30,30,30,29,29,30,31],2047:[17,31,31,31,32,31,31,30,29,30,29,30,30],2048:[17,31,31,32,31,31,31,30,29,30,29,30,30],2049:[17,31,32,31,32,31,30,30,30,29,29,30,30],2050:[17,31,32,31,32,31,30,30,30,29,30,29,31],2051:[17,31,31,31,32,31,31,30,29,30,29,30,30],2052:[17,31,31,32,31,31,31,30,29,30,29,30,30],2053:[17,31,32,31,32,31,30,30,30,29,29,30,30],2054:[17,31,32,31,32,31,30,30,30,29,30,29,31],2055:[17,31,31,32,31,31,31,30,29,30,30,29,30],2056:[17,31,31,32,31,32,30,30,29,30,29,30,30],2057:[17,31,32,31,32,31,30,30,30,29,29,30,31],2058:[17,30,32,31,32,31,30,30,30,29,30,29,31],2059:[17,31,31,32,31,31,31,30,29,30,29,30,30],2060:[17,31,31,32,32,31,30,30,29,30,29,30,30],2061:[17,31,32,31,32,31,30,30,30,29,29,30,31],2062:[17,30,32,31,32,31,31,29,30,29,30,29,31],2063:[17,31,31,32,31,31,31,30,29,30,29,30,30],2064:[17,31,31,32,32,31,30,30,29,30,29,30,30],2065:[17,31,32,31,32,31,30,30,30,29,29,30,31],2066:[17,31,31,31,32,31,31,29,30,30,29,29,31],2067:[17,31,31,32,31,31,31,30,29,30,29,30,30],2068:[17,31,31,32,32,31,30,30,29,30,29,30,30],2069:[17,31,32,31,32,31,30,30,30,29,29,30,31],2070:[17,31,31,31,32,31,31,29,30,30,29,30,30],2071:[17,31,31,32,31,31,31,30,29,30,29,30,30],2072:[17,31,32,31,32,31,30,30,29,30,29,30,30],2073:[17,31,32,31,32,31,30,30,30,29,29,30,31],2074:[17,31,31,31,32,31,31,30,29,30,29,30,30],2075:[17,31,31,32,31,31,31,30,29,30,29,30,30],2076:[16,31,32,31,32,31,30,30,30,29,29,30,30],2077:[17,31,32,31,32,31,30,30,30,29,30,29,31],2078:[17,31,31,31,32,31,31,30,29,30,29,30,30],2079:[17,31,31,32,31,31,31,30,29,30,29,30,30],2080:[16,31,32,31,32,31,30,30,30,29,29,30,30],2081:[17,31,31,32,32,31,30,30,30,29,30,30,30],2082:[17,31,32,31,32,31,30,30,30,29,30,30,30],2083:[17,31,31,32,31,31,30,30,30,29,30,30,30],2084:[17,31,31,32,31,31,30,30,30,29,30,30,30],2085:[17,31,32,31,32,31,31,30,30,29,30,30,30],2086:[17,31,32,31,32,31,30,30,30,29,30,30,30],2087:[16,31,31,32,31,31,31,30,30,29,30,30,30],2088:[16,30,31,32,32,30,31,30,30,29,30,30,30],2089:[17,31,32,31,32,31,30,30,30,29,30,30,30],2090:[17,31,32,31,32,31,30,30,30,29,30,30,30],2091:[16,31,31,32,31,31,31,30,30,29,30,30,30],2092:[16,31,31,32,32,31,30,30,30,29,30,30,30],2093:[17,31,32,31,32,31,30,30,30,29,30,30,30],2094:[17,31,31,32,31,31,30,30,30,29,30,30,30],2095:[17,31,31,32,31,31,31,30,29,30,30,30,30],2096:[17,30,31,32,32,31,30,30,29,30,29,30,30],2097:[17,31,32,31,32,31,30,30,30,29,30,30,30],2098:[17,31,31,32,31,31,31,29,30,29,30,30,31],2099:[17,31,31,32,31,31,31,30,29,29,30,30,30],2100:[17,31,32,31,32,30,31,30,29,30,29,30,30]}}),t.calendars.nepali=r}}),yA=f({"node_modules/world-calendars/dist/calendars/persian.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}function n(t,e){return t-e*Math.floor(t/e)}r.prototype=new t.baseCalendar,e(r.prototype,{name:"Persian",jdEpoch:1948320.5,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Day","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Day","Bah","Esf"],dayNames:["Yekshambe","Doshambe","Seshambe","Chæharshambe","Panjshambe","Jom'e","Shambe"],dayNamesShort:["Yek","Do","Se","Chæ","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var r=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return 682*((r.year()-(r.year()>0?474:473))%2820+474+38)%2816<682},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-(n.dayOfWeek()+1)%7,"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(12===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(e,r,i){var a=this._validate(e,r,i,t.local.invalidDate);e=a.year(),r=a.month(),i=a.day();var o=e-(e>=0?474:473),s=474+n(o,2820);return i+(r<=7?31*(r-1):30*(r-1)+6)+Math.floor((682*s-110)/2816)+365*(s-1)+1029983*Math.floor(o/2820)+this.jdEpoch-1},fromJD:function(t){var e=(t=Math.floor(t)+.5)-this.toJD(475,1,1),r=Math.floor(e/1029983),i=n(e,1029983),a=2820;if(1029982!==i){var o=Math.floor(i/366),s=n(i,366);a=Math.floor((2134*o+2816*s+2815)/1028522)+o+1}var l=a+2820*r+474;l=l<=0?l-1:l;var c=t-this.toJD(l,1,1)+1,u=c<=186?Math.ceil(c/31):Math.ceil((c-6)/30),h=t-this.toJD(l,u,1)+1;return this.newDate(l,u,h)}}),t.calendars.persian=r,t.calendars.jalali=r}}),vA=f({"node_modules/world-calendars/dist/calendars/taiwan.js"(){var t=aA(),e=oy(),r=t.instance();function n(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}n.prototype=new t.baseCalendar,e(n.prototype,{name:"Taiwan",jdEpoch:2419402.5,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(e){var n=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return e=this._t2gYear(n.year()),r.leapYear(e)},weekOfYear:function(e,n,i){var a=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return e=this._t2gYear(a.year()),r.weekOfYear(e,a.month(),a.day())},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(2===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(e,n,i){var a=this._validate(e,n,i,t.local.invalidDate);return e=this._t2gYear(a.year()),r.toJD(e,a.month(),a.day())},fromJD:function(t){var e=r.fromJD(t),n=this._g2tYear(e.year());return this.newDate(n,e.month(),e.day())},_t2gYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)},_g2tYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)}}),t.calendars.taiwan=n}}),xA=f({"node_modules/world-calendars/dist/calendars/thai.js"(){var t=aA(),e=oy(),r=t.instance();function n(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}n.prototype=new t.baseCalendar,e(n.prototype,{name:"Thai",jdEpoch:1523098.5,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var n=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return e=this._t2gYear(n.year()),r.leapYear(e)},weekOfYear:function(e,n,i){var a=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return e=this._t2gYear(a.year()),r.weekOfYear(e,a.month(),a.day())},daysInMonth:function(e,r){var n=this._validate(e,r,this.minDay,t.local.invalidMonth);return this.daysPerMonth[n.month()-1]+(2===n.month()&&this.leapYear(n.year())?1:0)},weekDay:function(t,e,r){return(this.dayOfWeek(t,e,r)||7)<6},toJD:function(e,n,i){var a=this._validate(e,n,i,t.local.invalidDate);return e=this._t2gYear(a.year()),r.toJD(e,a.month(),a.day())},fromJD:function(t){var e=r.fromJD(t),n=this._g2tYear(e.year());return this.newDate(n,e.month(),e.day())},_t2gYear:function(t){return t-this.yearsOffset-(t>=1&&t<=this.yearsOffset?1:0)},_g2tYear:function(t){return t+this.yearsOffset+(t>=-this.yearsOffset&&t<=-1?1:0)}}),t.calendars.thai=n}}),_A=f({"node_modules/world-calendars/dist/calendars/ummalqura.js"(){var t=aA(),e=oy();function r(t){this.local=this.regionalOptions[t||""]||this.regionalOptions[""]}r.prototype=new t.baseCalendar,e(r.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thalāthā’","Yawm al-Arba‘ā’","Yawm al-Khamīs","Yawm al-Jum‘a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var r=this._validate(e,this.minMonth,this.minDay,t.local.invalidYear);return 355===this.daysInYear(r.year())},weekOfYear:function(t,e,r){var n=this.newDate(t,e,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(t){for(var e=0,r=1;r<=12;r++)e+=this.daysInMonth(t,r);return e},daysInMonth:function(e,r){for(var i=this._validate(e,r,this.minDay,t.local.invalidMonth).toJD()-24e5+.5,a=0,o=0;oi)return n[a]-n[a-1];a++}return 30},weekDay:function(t,e,r){return 5!==this.dayOfWeek(t,e,r)},toJD:function(e,r,i){var a=this._validate(e,r,i,t.local.invalidDate),o=12*(a.year()-1)+a.month()-15292;return a.day()+n[o-1]-1+24e5-.5},fromJD:function(t){for(var e=t-24e5+.5,r=0,i=0;ie);i++)r++;var a=r+15292,o=Math.floor((a-1)/12),s=o+1,l=a-12*o,c=e-n[r-1]+1;return this.newDate(s,l,c)},isValid:function(e,r,n){var i=t.baseCalendar.prototype.isValid.apply(this,arguments);return i&&(i=(e=null!=e.year?e.year:e)>=1276&&e<=1500),i},_validate:function(e,r,n,i){var a=t.baseCalendar.prototype._validate.apply(this,arguments);if(a.year<1276||a.year>1500)throw i.replace(/\{0\}/,this.local.name);return a}}),t.calendars.ummalqura=r;var n=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]}}),bA=f({"src/components/calendars/calendars.js"(t,e){e.exports=aA(),oA(),sA(),lA(),cA(),uA(),hA(),pA(),fA(),dA(),mA(),gA(),yA(),vA(),xA(),_A()}}),wA=f({"src/components/calendars/index.js"(t,e){var r=bA(),n=le(),i=k(),a=i.EPOCHJD,o=i.ONEDAY,s={valType:"enumerated",values:n.sortObjectKeys(r.calendars),editType:"calc",dflt:"gregorian"},l=function(t,e,r,i){var a={};return a[r]=s,n.coerce(t,e,a,r,i)},c="##",u={d:{0:"dd","-":"d"},e:{0:"d","-":"d"},a:{0:"D","-":"D"},A:{0:"DD","-":"DD"},j:{0:"oo","-":"o"},W:{0:"ww","-":"w"},m:{0:"mm","-":"m"},b:{0:"M","-":"M"},B:{0:"MM","-":"MM"},y:{0:"yy","-":"yy"},Y:{0:"yyyy","-":"yyyy"},U:c,w:c,c:{0:"D M d %X yyyy","-":"D M d %X yyyy"},x:{0:"mm/dd/yyyy","-":"mm/dd/yyyy"}},h={};function p(t){var e=h[t];return e||(h[t]=r.instance(t))}function f(t){return n.extendFlat({},s,{description:t})}function d(t){return"Sets the calendar system to use with `"+t+"` date data."}var m={xcalendar:f(d("x"))},g=n.extendFlat({},m,{ycalendar:f(d("y"))}),y=n.extendFlat({},g,{zcalendar:f(d("z"))}),v=f(["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`"].join(" "));e.exports={moduleType:"component",name:"calendars",schema:{traces:{scatter:g,bar:g,box:g,heatmap:g,contour:g,histogram:g,histogram2d:g,histogram2dcontour:g,scatter3d:y,surface:y,mesh3d:y,scattergl:g,ohlc:m,candlestick:m},layout:{calendar:f(["Sets the default calendar system to use for interpreting and","displaying dates throughout the plot."].join(" "))},subplots:{xaxis:{calendar:v},yaxis:{calendar:v},scene:{xaxis:{calendar:v},yaxis:{calendar:v},zaxis:{calendar:v}},polar:{radialaxis:{calendar:v}}}},layoutAttributes:s,handleDefaults:l,handleTraceDefaults:function(t,e,r,n){for(var i=0;i{n.preventDefault(),n.stopPropagation(),n.clipboardData.setData("text",t),e.removeEventListener("copy",r,!0)};e.addEventListener("copy",r,!0),document.execCommand("copy")},(l=i||(i={})).boxSizing=function(t){let e=window.getComputedStyle(t),r=parseFloat(e.borderTopWidth)||0,n=parseFloat(e.borderLeftWidth)||0,i=parseFloat(e.borderRightWidth)||0,a=parseFloat(e.borderBottomWidth)||0,o=parseFloat(e.paddingTop)||0,s=parseFloat(e.paddingLeft)||0,l=parseFloat(e.paddingRight)||0,c=parseFloat(e.paddingBottom)||0;return{borderTop:r,borderLeft:n,borderRight:i,borderBottom:a,paddingTop:o,paddingLeft:s,paddingRight:l,paddingBottom:c,horizontalSum:n+s+l+i,verticalSum:r+o+c+a}},l.sizeLimits=function(t){let e=window.getComputedStyle(t),r=parseFloat(e.minWidth)||0,n=parseFloat(e.minHeight)||0,i=parseFloat(e.maxWidth)||1/0,a=parseFloat(e.maxHeight)||1/0;return i=Math.max(r,i),a=Math.max(n,a),{minWidth:r,minHeight:n,maxWidth:i,maxHeight:a}},l.hitTest=function(t,e,r){let n=t.getBoundingClientRect();return e>=n.left&&e=n.top&&r=r.bottom)){if(n.topr.bottom&&n.height>=r.height)return void(t.scrollTop-=r.top-n.top);if(n.topr.height)return void(t.scrollTop-=r.bottom-n.bottom);if(n.bottom>r.bottom&&n.height{let t=Element.prototype;return t.matches||t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector||function(t){let e=this,r=e.ownerDocument?e.ownerDocument.querySelectorAll(t):[];return-1!==Array.prototype.indexOf.call(r,e)}})(),t.calculateSingle=function(t){let c=0,u=0,h=0;function p(e){let r=t.match(e);return null!==r&&(t=t.slice(r[0].length),!0)}for(t=(t=t.split(",",1)[0]).replace(l," $1 ");t.length>0;)if(p(e))c++;else if(p(r))u++;else if(p(n))u++;else if(p(a))h++;else if(p(o))u++;else if(p(i))h++;else if(!p(s))return 0;return c=Math.min(c,255),u=Math.min(u,255),h=Math.min(h,255),c<<16|u<<8|h};let e=/^#[^\s\+>~#\.\[:]+/,r=/^\.[^\s\+>~#\.\[:]+/,n=/^\[[^\]]+\]/,i=/^[^\s\+>~#\.\[:]+/,a=/^(::[^\s\+>~#\.\[:]+|:first-line|:first-letter|:before|:after)/,o=/^:[^\s\+>~#\.\[:]+/,s=/^[\s\+>~\*]+/,l=/:not\(([^\)]+)\)/g}(s||(s={}));var T,A=y(v()),k=class{constructor(){this._first=null,this._last=null,this._size=0}get isEmpty(){return 0===this._size}get size(){return this._size}get length(){return this._size}get first(){return this._first?this._first.value:void 0}get last(){return this._last?this._last.value:void 0}get firstNode(){return this._first}get lastNode(){return this._last}*[Symbol.iterator](){let t=this._first;for(;t;)yield t.value,t=t.next}*retro(){let t=this._last;for(;t;)yield t.value,t=t.prev}*nodes(){let t=this._first;for(;t;)yield t,t=t.next}*retroNodes(){let t=this._last;for(;t;)yield t,t=t.prev}assign(t){this.clear();for(let e of t)this.addLast(e)}push(t){this.addLast(t)}pop(){return this.removeLast()}shift(t){this.addFirst(t)}unshift(){return this.removeFirst()}addFirst(t){let e=new T.LinkedListNode(this,t);return this._first?(e.next=this._first,this._first.prev=e,this._first=e):(this._first=e,this._last=e),this._size++,e}addLast(t){let e=new T.LinkedListNode(this,t);return this._last?(e.prev=this._last,this._last.next=e,this._last=e):(this._first=e,this._last=e),this._size++,e}insertBefore(t,e){if(!e||e===this._first)return this.addFirst(t);if(!(e instanceof T.LinkedListNode)||e.list!==this)throw new Error("Reference node is not owned by the list.");let r=new T.LinkedListNode(this,t),n=e,i=n.prev;return r.next=n,r.prev=i,n.prev=r,i.next=r,this._size++,r}insertAfter(t,e){if(!e||e===this._last)return this.addLast(t);if(!(e instanceof T.LinkedListNode)||e.list!==this)throw new Error("Reference node is not owned by the list.");let r=new T.LinkedListNode(this,t),n=e,i=n.next;return r.next=i,r.prev=n,n.next=r,i.prev=r,this._size++,r}removeFirst(){let t=this._first;if(t)return t===this._last?(this._first=null,this._last=null):(this._first=t.next,this._first.prev=null),t.list=null,t.next=null,t.prev=null,this._size--,t.value}removeLast(){let t=this._last;if(t)return t===this._first?(this._first=null,this._last=null):(this._last=t.prev,this._last.next=null),t.list=null,t.next=null,t.prev=null,this._size--,t.value}removeNode(t){if(!(t instanceof T.LinkedListNode)||t.list!==this)throw new Error("Node is not owned by the list.");let e=t;e===this._first&&e===this._last?(this._first=null,this._last=null):e===this._first?(this._first=e.next,this._first.prev=null):e===this._last?(this._last=e.prev,this._last.next=null):(e.next.prev=e.prev,e.prev.next=e.next),e.list=null,e.next=null,e.prev=null,this._size--}clear(){let t=this._first;for(;t;){let e=t.next;t.list=null,t.prev=null,t.next=null,t=e}this._first=null,this._last=null,this._size=0}};!function(t){t.from=function(e){let r=new t;return r.assign(e),r}}(k||(k={})),function(t){t.LinkedListNode=class{constructor(t,e){this.list=null,this.next=null,this.prev=null,this.list=t,this.value=e}}}(T||(T={}));var M,S=class{constructor(t){this.type=t}get isConflatable(){return!1}conflate(t){return!1}},E=class extends S{get isConflatable(){return!0}conflate(t){return!0}};!function(t){let e=null,r=(n=Promise.resolve(),t=>{let e=!1;return n.then((()=>!e&&t())),()=>{e=!0}});var n;function i(t,e){let r=o.get(t);r&&0!==r.length?(0,A.every)((0,A.retro)(r),(r=>!r||function(t,e,r){let n=!0;try{n="function"==typeof t?t(e,r):t.messageHook(e,r)}catch(t){l(t)}return n}(r,t,e)))&&u(t,e):u(t,e)}t.sendMessage=i,t.postMessage=function(t,n){n.isConflatable&&(0,A.some)(a,(e=>!(e.handler!==t||!e.msg||e.msg.type!==n.type||!e.msg.isConflatable)&&e.msg.conflate(n)))||function(t,n){a.addLast({handler:t,msg:n}),null===e&&(e=r(h))}(t,n)},t.installMessageHook=function(t,e){let r=o.get(t);r&&-1!==r.indexOf(e)||(r?r.push(e):o.set(t,[e]))},t.removeMessageHook=function(t,e){let r=o.get(t);if(!r)return;let n=r.indexOf(e);-1!==n&&(r[n]=null,p(r))},t.clearData=function(t){let e=o.get(t);e&&e.length>0&&(A.ArrayExt.fill(e,null),p(e));for(let e of a)e.handler===t&&(e.handler=null,e.msg=null)},t.flush=function(){c||null===e||(e(),e=null,c=!0,h(),c=!1)},t.getExceptionHandler=function(){return l},t.setExceptionHandler=function(t){let e=l;return l=t,e};let a=new k,o=new WeakMap,s=new Set,l=t=>{console.error(t)},c=!1;function u(t,e){try{t.processMessage(e)}catch(t){l(t)}}function h(){if(e=null,a.isEmpty)return;let t={handler:null,msg:null};for(a.addLast(t);;){let e=a.removeFirst();if(e===t)return;e.handler&&e.msg&&i(e.handler,e.msg)}}function p(t){0===s.size&&r(f),s.add(t)}function f(){s.forEach(d),s.clear()}function d(t){A.ArrayExt.removeAllWhere(t,m)}function m(t){return null===t}}(M||(M={}));var C,I=class{constructor(t){this._pid=C.nextPID(),this.name=t.name,this._create=t.create,this._coerce=t.coerce||null,this._compare=t.compare||null,this._changed=t.changed||null}get(t){let e,r=C.ensureMap(t);return e=this._pid in r?r[this._pid]:r[this._pid]=this._createValue(t),e}set(t,e){let r,n=C.ensureMap(t);r=this._pid in n?n[this._pid]:n[this._pid]=this._createValue(t);let i=this._coerceValue(t,e);this._maybeNotify(t,r,n[this._pid]=i)}coerce(t){let e,r=C.ensureMap(t);e=this._pid in r?r[this._pid]:r[this._pid]=this._createValue(t);let n=this._coerceValue(t,e);this._maybeNotify(t,e,r[this._pid]=n)}_createValue(t){return(0,this._create)(t)}_coerceValue(t,e){let r=this._coerce;return r?r(t,e):e}_compareValue(t,e){let r=this._compare;return r?r(t,e):t===e}_maybeNotify(t,e,r){let n=this._changed;n&&!this._compareValue(e,r)&&n(t,e,r)}};!function(t){t.clearData=function(t){C.ownerData.delete(t)}}(I||(I={})),function(t){t.ownerData=new WeakMap,t.nextPID=(()=>{let t=0;return()=>`pid-${`${Math.random()}`.slice(2)}-${t++}`})(),t.ensureMap=function(e){let r=t.ownerData.get(e);return r||(r=Object.create(null),t.ownerData.set(e,r),r)}}(C||(C={}));var L,P=y(v()),z=(y(x()),class{constructor(t){this.sender=t}connect(t,e){return L.connect(this,t,e)}disconnect(t,e){return L.disconnect(this,t,e)}emit(t){L.emit(this,t)}});!function(t){t.disconnectBetween=function(t,e){L.disconnectBetween(t,e)},t.disconnectSender=function(t){L.disconnectSender(t)},t.disconnectReceiver=function(t){L.disconnectReceiver(t)},t.disconnectAll=function(t){L.disconnectAll(t)},t.clearData=function(t){L.disconnectAll(t)},t.getExceptionHandler=function(){return L.exceptionHandler},t.setExceptionHandler=function(t){let e=L.exceptionHandler;return L.exceptionHandler=t,e}}(z||(z={})),function(t){function e(t){let e=n.get(t);if(e&&0!==e.length){for(let t of e){if(!t.signal)continue;let e=t.thisArg||t.slot;t.signal=null,c(i.get(e))}c(e)}}function r(t){let e=i.get(t);if(e&&0!==e.length){for(let t of e){if(!t.signal)continue;let e=t.signal.sender;t.signal=null,c(n.get(e))}c(e)}}t.exceptionHandler=t=>{console.error(t)},t.connect=function(t,e,r){r=r||void 0;let a=n.get(t.sender);if(a||(a=[],n.set(t.sender,a)),s(a,t,e,r))return!1;let o=r||e,l=i.get(o);l||(l=[],i.set(o,l));let c={signal:t,slot:e,thisArg:r};return a.push(c),l.push(c),!0},t.disconnect=function(t,e,r){r=r||void 0;let a=n.get(t.sender);if(!a||0===a.length)return!1;let o=s(a,t,e,r);if(!o)return!1;let l=r||e,u=i.get(l);return o.signal=null,c(a),c(u),!0},t.disconnectBetween=function(t,e){let r=n.get(t);if(!r||0===r.length)return;let a=i.get(e);if(a&&0!==a.length){for(let e of a)e.signal&&e.signal.sender===t&&(e.signal=null);c(r),c(a)}},t.disconnectSender=e,t.disconnectReceiver=r,t.disconnectAll=function(t){e(t),r(t)},t.emit=function(t,e){let r=n.get(t.sender);if(r&&0!==r.length)for(let n=0,i=r.length;nt.signal===e&&t.slot===r&&t.thisArg===n))}function l(e,r){let{signal:n,slot:i,thisArg:a}=e;try{i.call(a,n.sender,r)}catch(e){t.exceptionHandler(e)}}function c(t){0===a.size&&o(u),a.add(t)}function u(){a.forEach(h),a.clear()}function h(t){P.ArrayExt.removeAllWhere(t,p)}function p(t){return null===t.signal}}(L||(L={}));var D=class{constructor(t){this._fn=t}get isDisposed(){return!this._fn}dispose(){if(!this._fn)return;let t=this._fn;this._fn=null,t()}},O=class{constructor(){this._isDisposed=!1,this._items=new Set}get isDisposed(){return this._isDisposed}dispose(){this._isDisposed||(this._isDisposed=!0,this._items.forEach((t=>{t.dispose()})),this._items.clear())}contains(t){return this._items.has(t)}add(t){this._items.add(t)}remove(t){this._items.delete(t)}clear(){this._items.clear()}};!function(t){t.from=function(e){let r=new t;for(let t of e)r.add(t);return r}}(O||(O={}));var R=class extends O{constructor(){super(...arguments),this._disposed=new z(this)}get disposed(){return this._disposed}dispose(){this.isDisposed||(super.dispose(),this._disposed.emit(void 0),z.clearData(this))}};!function(t){t.from=function(e){let r=new t;for(let t of e)r.add(t);return r}}(R||(R={}));var F,B=class t{constructor(t){this._onScrollFrame=()=>{if(!this._scrollTarget)return;let{element:t,edge:e,distance:r}=this._scrollTarget,n=F.SCROLL_EDGE_SIZE-r,i=Math.pow(n/F.SCROLL_EDGE_SIZE,2),a=Math.max(1,Math.round(i*F.SCROLL_EDGE_SIZE));switch(e){case"top":t.scrollTop-=a;break;case"left":t.scrollLeft-=a;break;case"right":t.scrollLeft+=a;break;case"bottom":t.scrollTop+=a}requestAnimationFrame(this._onScrollFrame)},this._disposed=!1,this._dropAction="none",this._override=null,this._currentTarget=null,this._currentElement=null,this._promise=null,this._scrollTarget=null,this._resolve=null,this.document=t.document||document,this.mimeData=t.mimeData,this.dragImage=t.dragImage||null,this.proposedAction=t.proposedAction||"copy",this.supportedActions=t.supportedActions||"all",this.source=t.source||null}dispose(){if(!this._disposed){if(this._disposed=!0,this._currentTarget){let t=new PointerEvent("pointerup",{bubbles:!0,cancelable:!0,clientX:-1,clientY:-1});F.dispatchDragLeave(this,this._currentTarget,null,t)}this._finalize("none")}}get isDisposed(){return this._disposed}start(t,e){if(this._disposed)return Promise.resolve("none");if(this._promise)return this._promise;this._addListeners(),this._attachDragImage(t,e),this._promise=new Promise((t=>{this._resolve=t}));let r=new PointerEvent("pointermove",{bubbles:!0,cancelable:!0,clientX:t,clientY:e});return document.dispatchEvent(r),this._promise}handleEvent(t){switch(t.type){case"pointermove":this._evtPointerMove(t);break;case"pointerup":this._evtPointerUp(t);break;case"keydown":this._evtKeyDown(t);break;default:t.preventDefault(),t.stopPropagation()}}moveDragImage(t,e){this.dragImage&&(this.dragImage.style.transform=`translate(${t}px, ${e}px)`)}_evtPointerMove(t){t.preventDefault(),t.stopPropagation(),this._updateCurrentTarget(t),this._updateDragScroll(t),this.moveDragImage(t.clientX,t.clientY)}_evtPointerUp(t){if(t.preventDefault(),t.stopPropagation(),0!==t.button)return;if(this._updateCurrentTarget(t),!this._currentTarget)return void this._finalize("none");if("none"===this._dropAction)return F.dispatchDragLeave(this,this._currentTarget,null,t),void this._finalize("none");let e=F.dispatchDrop(this,this._currentTarget,t);this._finalize(e)}_evtKeyDown(t){t.preventDefault(),t.stopPropagation(),27===t.keyCode&&this.dispose()}_addListeners(){document.addEventListener("pointerdown",this,!0),document.addEventListener("pointermove",this,!0),document.addEventListener("pointerup",this,!0),document.addEventListener("pointerenter",this,!0),document.addEventListener("pointerleave",this,!0),document.addEventListener("pointerover",this,!0),document.addEventListener("pointerout",this,!0),document.addEventListener("keydown",this,!0),document.addEventListener("keyup",this,!0),document.addEventListener("keypress",this,!0),document.addEventListener("contextmenu",this,!0)}_removeListeners(){document.removeEventListener("pointerdown",this,!0),document.removeEventListener("pointermove",this,!0),document.removeEventListener("pointerup",this,!0),document.removeEventListener("pointerenter",this,!0),document.removeEventListener("pointerleave",this,!0),document.removeEventListener("pointerover",this,!0),document.removeEventListener("pointerout",this,!0),document.removeEventListener("keydown",this,!0),document.removeEventListener("keyup",this,!0),document.removeEventListener("keypress",this,!0),document.removeEventListener("contextmenu",this,!0)}_updateDragScroll(t){let e=F.findScrollTarget(t);!this._scrollTarget&&!e||(this._scrollTarget||setTimeout(this._onScrollFrame,500),this._scrollTarget=e)}_updateCurrentTarget(t){let e=this._currentTarget,r=this._currentTarget,n=this._currentElement,i=F.findElementBehindBackdrop(t,this.document);this._currentElement=i,i!==n&&i!==r&&F.dispatchDragExit(this,r,i,t),i!==n&&i!==r&&(r=F.dispatchDragEnter(this,i,r,t)),r!==e&&(this._currentTarget=r,F.dispatchDragLeave(this,e,r,t));let a=F.dispatchDragOver(this,r,t);this._setDropAction(a)}_attachDragImage(t,e){if(!this.dragImage)return;this.dragImage.classList.add("lm-mod-drag-image");let r=this.dragImage.style;r.pointerEvents="none",r.position="fixed",r.transform=`translate(${t}px, ${e}px)`,(this.document instanceof Document?this.document.body:this.document.firstElementChild).appendChild(this.dragImage)}_detachDragImage(){if(!this.dragImage)return;let t=this.dragImage.parentNode;t&&t.removeChild(this.dragImage)}_setDropAction(e){if(e=F.validateAction(e,this.supportedActions),!this._override||this._dropAction!==e)switch(e){case"none":this._dropAction=e,this._override=t.overrideCursor("no-drop",this.document);break;case"copy":this._dropAction=e,this._override=t.overrideCursor("copy",this.document);break;case"link":this._dropAction=e,this._override=t.overrideCursor("alias",this.document);break;case"move":this._dropAction=e,this._override=t.overrideCursor("move",this.document)}}_finalize(t){let e=this._resolve;this._removeListeners(),this._detachDragImage(),this._override&&(this._override.dispose(),this._override=null),this.mimeData.clear(),this._disposed=!0,this._dropAction="none",this._currentTarget=null,this._currentElement=null,this._scrollTarget=null,this._promise=null,this._resolve=null,e&&e(t)}};!function(t){class e extends DragEvent{constructor(t,e){super(e.type,{bubbles:!0,cancelable:!0,altKey:t.altKey,button:t.button,clientX:t.clientX,clientY:t.clientY,ctrlKey:t.ctrlKey,detail:0,metaKey:t.metaKey,relatedTarget:e.related,screenX:t.screenX,screenY:t.screenY,shiftKey:t.shiftKey,view:window});let{drag:r}=e;this.dropAction="none",this.mimeData=r.mimeData,this.proposedAction=r.proposedAction,this.supportedActions=r.supportedActions,this.source=r.source}}t.Event=e,t.overrideCursor=function(t,e=document){return F.overrideCursor(t,e)}}(B||(B={})),function(t){function e(e,i=document){if(e){if(r&&e==r.event)return r.element;t.cursorBackdrop.style.zIndex="-1000";let n=i.elementFromPoint(e.clientX,e.clientY);return t.cursorBackdrop.style.zIndex="",r={event:e,element:n},n}{let e=t.cursorBackdrop.style.transform;if(n&&e===n.transform)return n.element;let r=t.cursorBackdrop.getBoundingClientRect();t.cursorBackdrop.style.zIndex="-1000";let a=i.elementFromPoint(r.left+r.width/2,r.top+r.height/2);return t.cursorBackdrop.style.zIndex="",n={transform:e,element:a},a}}t.SCROLL_EDGE_SIZE=20,t.validateAction=function(t,e){return i[t]&a[e]?t:"none"},t.findElementBehindBackdrop=e;let r=null,n=null;t.findScrollTarget=function(r){let n=r.clientX,i=r.clientY,a=e(r);for(;a;a=a.parentElement){if(!a.hasAttribute("data-lm-dragscroll"))continue;let e=0,r=0;a===document.body&&(e=window.pageXOffset,r=window.pageYOffset);let o=a.getBoundingClientRect(),s=o.top+r,l=o.left+e,c=l+o.width,u=s+o.height;if(n=c||i=u)continue;let h,p=n-l+1,f=i-s+1,d=c-n,m=u-i,g=Math.min(p,f,d,m);if(g>t.SCROLL_EDGE_SIZE)continue;switch(g){case m:h="bottom";break;case f:h="top";break;case d:h="right";break;case p:h="left";break;default:throw"unreachable"}let y,v=a.scrollWidth-a.clientWidth,x=a.scrollHeight-a.clientHeight;switch(h){case"top":y=x>0&&a.scrollTop>0;break;case"left":y=v>0&&a.scrollLeft>0;break;case"right":y=v>0&&a.scrollLeft0&&a.scrollTop{n===u&&t.cursorBackdrop.isConnected&&(document.removeEventListener("pointermove",o,!0),t.cursorBackdrop.removeEventListener("scroll",s,!0),i.removeChild(t.cursorBackdrop))}))};let c=500,u=0;t.cursorBackdrop=function(){let t=document.createElement("div");return t.classList.add("lm-cursor-backdrop"),t}()}(F||(F={}));var j=y(v()),N=y(x());function U(){return q.keyboardLayout}var V=class t{constructor(e,r,n=[]){this.name=e,this._codes=r,this._keys=t.extractKeys(r),this._modifierKeys=t.convertToKeySet(n)}keys(){return Object.keys(this._keys)}isValidKey(t){return t in this._keys}isModifierKey(t){return t in this._modifierKeys}keyForKeydownEvent(t){return this._codes[t.keyCode]||""}};!function(t){t.extractKeys=function(t){let e=Object.create(null);for(let r in t)e[t[r]]=!0;return e},t.convertToKeySet=function(t){let e=Object(null);for(let r=0,n=t.length;r{this._commands.delete(t),this._commandChanged.emit({id:t,type:"removed"})}))}notifyCommandChanged(t){if(void 0!==t&&!this._commands.has(t))throw new Error(`Command '${t}' is not registered.`);this._commandChanged.emit({id:t,type:t?"changed":"many-changed"})}describedBy(t,e=N.JSONExt.emptyObject){var r;let n=this._commands.get(t);return Promise.resolve(null!==(r=n?.describedBy.call(void 0,e))&&void 0!==r?r:{args:null})}label(t,e=N.JSONExt.emptyObject){var r;let n=this._commands.get(t);return null!==(r=n?.label.call(void 0,e))&&void 0!==r?r:""}mnemonic(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.mnemonic.call(void 0,e):-1}icon(t,e=N.JSONExt.emptyObject){var r;return null===(r=this._commands.get(t))||void 0===r?void 0:r.icon.call(void 0,e)}iconClass(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.iconClass.call(void 0,e):""}iconLabel(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.iconLabel.call(void 0,e):""}caption(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.caption.call(void 0,e):""}usage(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.usage.call(void 0,e):""}className(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.className.call(void 0,e):""}dataset(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return r?r.dataset.call(void 0,e):{}}isEnabled(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return!!r&&r.isEnabled.call(void 0,e)}isToggled(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return!!r&&r.isToggled.call(void 0,e)}isToggleable(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return!!r&&r.isToggleable}isVisible(t,e=N.JSONExt.emptyObject){let r=this._commands.get(t);return!!r&&r.isVisible.call(void 0,e)}execute(t,e=N.JSONExt.emptyObject){let r,n=this._commands.get(t);if(!n)return Promise.reject(new Error(`Command '${t}' not registered.`));try{r=n.execute.call(void 0,e)}catch(t){r=Promise.reject(t)}let i=Promise.resolve(r);return this._commandExecuted.emit({id:t,args:e,result:i}),i}addKeyBinding(t){let e=G.createKeyBinding(t);return this._keyBindings.push(e),this._keyBindingChanged.emit({binding:e,type:"added"}),new D((()=>{j.ArrayExt.removeFirstOf(this._keyBindings,e),this._keyBindingChanged.emit({binding:e,type:"removed"})}))}processKeydownEvent(e){if(e.defaultPrevented||this._replaying)return;let r=t.keystrokeForKeydownEvent(e);if(!r)return this._replayKeydownEvents(),void this._clearPendingState();if(t.isModifierKeyPressed(e)){let{exact:t}=G.matchKeyBinding(this._keyBindings,[r],e);return void(t?(e.preventDefault(),e.stopPropagation(),this._startModifierTimer(t)):this._clearModifierTimer())}this._keystrokes.push(r);let{exact:n,partial:i}=G.matchKeyBinding(this._keyBindings,this._keystrokes,e),a=0!==i.length;return n||a?((n?.preventDefault||i.some((t=>t.preventDefault)))&&(e.preventDefault(),e.stopPropagation()),this._keydownEvents.push(e),n&&!a?(this._executeKeyBinding(n),void this._clearPendingState()):(n&&(this._exactKeyMatch=n),void this._startTimer())):(this._replayKeydownEvents(),void this._clearPendingState())}holdKeyBindingExecution(t,e){this._holdKeyBindingPromises.set(t,e)}processKeyupEvent(t){this._clearModifierTimer()}_startModifierTimer(t){this._clearModifierTimer(),this._timerModifierID=window.setTimeout((()=>{this._executeKeyBinding(t)}),G.modifierkeyTimeOut)}_clearModifierTimer(){0!==this._timerModifierID&&(clearTimeout(this._timerModifierID),this._timerModifierID=0)}_startTimer(){this._clearTimer(),this._timerID=window.setTimeout((()=>{this._onPendingTimeout()}),G.CHORD_TIMEOUT)}_clearTimer(){0!==this._timerID&&(clearTimeout(this._timerID),this._timerID=0)}_replayKeydownEvents(){0!==this._keydownEvents.length&&(this._replaying=!0,this._keydownEvents.forEach(G.replayKeyEvent),this._replaying=!1)}async _executeKeyBinding(t){if(0!==this._holdKeyBindingPromises.size){let t=[...this._keydownEvents],e=(await Promise.race([Promise.all(t.map((async t=>{var e;return null!==(e=this._holdKeyBindingPromises.get(t))&&void 0!==e?e:Promise.resolve(!0)}))),new Promise((t=>{setTimeout((()=>t([!1])),G.KEYBINDING_HOLD_TIMEOUT)}))])).every(Boolean);if(this._holdKeyBindingPromises.clear(),!e)return}let{command:e,args:r}=t,n={_luminoEvent:{type:"keybinding",keys:t.keys},...r};if(this.hasCommand(e)&&this.isEnabled(e,n))await this.execute(e,n);else{let r=this.hasCommand(e)?"enabled":"registered",n=`Cannot execute key binding '${t.keys.join(", ")}':`,i=`command '${e}' is not ${r}.`;console.warn(`${n} ${i}`)}}_clearPendingState(){this._clearTimer(),this._clearModifierTimer(),this._exactKeyMatch=null,this._keystrokes.length=0,this._keydownEvents.length=0}_onPendingTimeout(){this._timerID=0,this._exactKeyMatch?this._executeKeyBinding(this._exactKeyMatch):this._replayKeydownEvents(),this._clearPendingState()}};!function(t){function e(t){let e="",r=!1,n=!1,i=!1,o=!1;for(let s of t.split(/\s+/))"Accel"===s?a.IS_MAC?n=!0:i=!0:"Alt"===s?r=!0:"Cmd"===s?n=!0:"Ctrl"===s?i=!0:"Shift"===s?o=!0:s.length>0&&(e=s);return{cmd:n,ctrl:i,alt:r,shift:o,key:e}}function r(t){let r="",n=e(t);return n.ctrl&&(r+="Ctrl "),n.alt&&(r+="Alt "),n.shift&&(r+="Shift "),n.cmd&&a.IS_MAC&&(r+="Cmd "),n.key?r+n.key:r.trim()}t.parseKeystroke=e,t.normalizeKeystroke=r,t.normalizeKeys=function(t){let e;return e=a.IS_WIN?t.winKeys||t.keys:a.IS_MAC?t.macKeys||t.keys:t.linuxKeys||t.keys,e.map(r)},t.formatKeystroke=function(t){return"string"==typeof t?r(t):t.map(r).join(", ");function r(t){let r=[],n=a.IS_MAC?" ":"+",i=e(t);return i.ctrl&&r.push("Ctrl"),i.alt&&r.push("Alt"),i.shift&&r.push("Shift"),a.IS_MAC&&i.cmd&&r.push("Cmd"),r.push(i.key),r.map(G.formatKey).join(n)}},t.isModifierKeyPressed=function(t){let e=U(),r=e.keyForKeydownEvent(t);return e.isModifierKey(r)},t.keystrokeForKeydownEvent=function(t){let e=U(),r=e.keyForKeydownEvent(t),n=[];return t.ctrlKey&&n.push("Ctrl"),t.altKey&&n.push("Alt"),t.shiftKey&&n.push("Shift"),t.metaKey&&a.IS_MAC&&n.push("Cmd"),e.isModifierKey(r)||n.push(r),n.join(" ")}}(W||(W={})),function(t){t.CHORD_TIMEOUT=1e3,t.KEYBINDING_HOLD_TIMEOUT=1e3,t.modifierkeyTimeOut=500,t.createCommand=function(t){return{execute:t.execute,describedBy:h("function"==typeof t.describedBy?t.describedBy:{args:null,...t.describedBy},(()=>({args:null}))),label:h(t.label,n),mnemonic:h(t.mnemonic,i),icon:h(t.icon,u),iconClass:h(t.iconClass,n),iconLabel:h(t.iconLabel,n),caption:h(t.caption,n),usage:h(t.usage,n),className:h(t.className,n),dataset:h(t.dataset,c),isEnabled:t.isEnabled||s,isToggled:t.isToggled||l,isToggleable:t.isToggleable||!!t.isToggled,isVisible:t.isVisible||s}},t.createKeyBinding=function(t){var e;return{keys:W.normalizeKeys(t),selector:p(t),command:t.command,args:t.args||N.JSONExt.emptyObject,preventDefault:null===(e=t.preventDefault)||void 0===e||e}},t.matchKeyBinding=function(t,e,r){let n=null,i=[],a=1/0,s=0;for(let l=0,c=t.length;la)continue;let p=o.calculateSpecificity(c.selector);(!n||h=s)&&(n=c,a=h,s=p)}return{exact:n,partial:i}},t.replayKeyEvent=function(t){t.target.dispatchEvent(function(t){let e=document.createEvent("Event"),r=t.bubbles||!0,n=t.cancelable||!0;return e.initEvent(t.type||"keydown",r,n),e.key=t.key||"",e.keyCode=t.keyCode||0,e.which=t.keyCode||0,e.ctrlKey=t.ctrlKey||!1,e.altKey=t.altKey||!1,e.shiftKey=t.shiftKey||!1,e.metaKey=t.metaKey||!1,e.view=t.view||window,e}(t))},t.formatKey=function(t){return a.IS_MAC?e.hasOwnProperty(t)?e[t]:t:r.hasOwnProperty(t)?r[t]:t};let e={Backspace:"⌫",Tab:"⇥",Enter:"⏎",Shift:"⇧",Ctrl:"⌃",Alt:"⌥",Escape:"⎋",PageUp:"⇞",PageDown:"⇟",End:"↘",Home:"↖",ArrowLeft:"←",ArrowUp:"↑",ArrowRight:"→",ArrowDown:"↓",Delete:"⌦",Cmd:"⌘"},r={Escape:"Esc",PageUp:"Page Up",PageDown:"Page Down",ArrowLeft:"Left",ArrowUp:"Up",ArrowRight:"Right",ArrowDown:"Down",Delete:"Del"},n=()=>"",i=()=>-1,s=()=>!0,l=()=>!1,c=()=>({}),u=()=>{};function h(t,e){return void 0===t?e:"function"==typeof t?t:()=>t}function p(t){if(-1!==t.selector.indexOf(","))throw new Error(`Selector cannot contain commas: ${t.selector}`);if(!o.isValid(t.selector))throw new Error(`Invalid selector: ${t.selector}`);return t.selector}function f(t,e){if(t.lengthe.length?2:1}function d(t,e){let r=e.target,n=e.currentTarget;for(let e=0;null!==r;r=r.parentElement,++e){if(r.hasAttribute("data-lm-suppress-shortcuts"))return-1;if(o.matches(r,t))return e;if(r===n)return-1}return-1}}(G||(G={}));var Z,Y,X=y(v()),$=class{constructor(t){this.type="text",this.content=t}},K=class{constructor(t,e,r,n){this.type="element",this.tag=t,this.attrs=e,this.children=r,this.renderer=n}};function J(t){let e,r={},n=[];for(let t=1,a=arguments.length;t=n;--a){let n=e[a],o=i?t.lastChild:t.childNodes[a];"text"===n.type||(n.renderer&&n.renderer.unrender?n.renderer.unrender(o,{attrs:n.attrs,children:n.children}):r(o,n.children,0,!1)),i&&t.removeChild(o)}}t.hostMap=new WeakMap,t.asContentArray=function(t){return t?t instanceof Array?t:[t]:[]},t.createDOMNode=e,t.updateContent=function t(n,a,o){if(a===o)return;let s=function(t,e){let r=t.firstChild,n=Object.create(null);for(let t of e)"element"===t.type&&t.attrs.key&&(n[t.attrs.key]={vNode:t,element:r}),r=r.nextSibling;return n}(n,a),l=a.slice(),c=n.firstChild,u=o.length;for(let r=0;r=l.length){e(o[r],n);continue}let a=l[r],u=o[r];if(a===u){c=c.nextSibling;continue}if("text"===a.type&&"text"===u.type){c.textContent!==u.content&&(c.textContent=u.content),c=c.nextSibling;continue}if("text"===a.type||"text"===u.type){X.ArrayExt.insert(l,r,u),e(u,n,c);continue}if(!a.renderer!=!u.renderer){X.ArrayExt.insert(l,r,u),e(u,n,c);continue}let h=u.attrs.key;if(h&&h in s){let t=s[h];t.vNode!==a&&(X.ArrayExt.move(l,l.indexOf(t.vNode,r+1),r),n.insertBefore(t.element,c),a=t.vNode,c=t.element)}if(a===u){c=c.nextSibling;continue}let p=a.attrs.key;p&&p!==h?(X.ArrayExt.insert(l,r,u),e(u,n,c)):a.tag===u.tag?(i(c,a.attrs,u.attrs),u.renderer?u.renderer.render(c,{attrs:u.attrs,children:u.children}):t(c,a.children,u.children),c=c.nextSibling):(X.ArrayExt.insert(l,r,u),e(u,n,c))}r(n,l,u,!0)};let n={key:!0,className:!0,htmlFor:!0,dataset:!0,style:!0};function i(t,e,r){if(e===r)return;let i;for(i in e)i in n||i in r||("on"===i.substr(0,2)?t[i]=null:t.removeAttribute(i));for(i in r)i in n||e[i]===r[i]||("on"===i.substr(0,2)?t[i]=r[i]:t.setAttribute(i,r[i]));e.className!==r.className&&(void 0!==r.className?t.setAttribute("class",r.className):t.removeAttribute("class")),e.htmlFor!==r.htmlFor&&(void 0!==r.htmlFor?t.setAttribute("for",r.htmlFor):t.removeAttribute("for")),e.dataset!==r.dataset&&function(t,e,r){for(let n in e)n in r||t.removeAttribute(`data-${n}`);for(let n in r)e[n]!==r[n]&&t.setAttribute(`data-${n}`,r[n])}(t,e.dataset||{},r.dataset||{}),e.style!==r.style&&function(t,e,r){let n,i=t.style;for(n in e)n in r||(i[n]="");for(n in r)e[n]!==r[n]&&(i[n]=r[n])}(t,e.style||{},r.style||{})}}(Y||(Y={}));var Q,tt=class{constructor(){this.sizeHint=0,this.minSize=0,this.maxSize=1/0,this.stretch=1,this.size=0,this.done=!1}};!function(t){t.calc=function(t,e){let r=t.length;if(0===r)return e;let n=0,i=0,a=0,o=0,s=0;for(let e=0;e0&&(o+=r.stretch,s++)}if(e===a)return 0;if(e<=n){for(let e=0;e=i){for(let e=0;e0&&n>l;){let e=n,i=o;for(let a=0;a0&&n>l;){let e=n/c;for(let i=0;i0&&n>l;){let e=n,i=o;for(let a=0;a=r.maxSize?(n-=r.maxSize-r.size,o-=r.stretch,r.size=r.maxSize,r.done=!0,c--,s--):(n-=l,r.size+=l)}}for(;c>0&&n>l;){let e=n/c;for(let i=0;i=r.maxSize?(n-=r.maxSize-r.size,r.size=r.maxSize,r.done=!0,c--):(n-=e,r.size+=e))}}}return 0},t.adjust=function(t,e,r){0===t.length||0===r||(r>0?function(t,e,r){let n=0;for(let r=0;r<=e;++r){let e=t[r];n+=e.maxSize-e.size}let i=0;for(let r=e+1,n=t.length;r=0&&a>0;--r){let e=t[r],n=e.maxSize-e.size;n>=a?(e.sizeHint=e.size+a,a=0):(e.sizeHint=e.size+n,a-=n)}let o=r;for(let r=e+1,n=t.length;r0;++r){let e=t[r],n=e.size-e.minSize;n>=o?(e.sizeHint=e.size-o,o=0):(e.sizeHint=e.size-n,o-=n)}}(t,e,r):function(t,e,r){let n=0;for(let r=e+1,i=t.length;r0;++r){let e=t[r],n=e.maxSize-e.size;n>=a?(e.sizeHint=e.size+a,a=0):(e.sizeHint=e.size+n,a-=n)}let o=r;for(let r=e;r>=0&&o>0;--r){let e=t[r],n=e.size-e.minSize;n>=o?(e.sizeHint=e.size-o,o=0):(e.sizeHint=e.size-n,o-=n)}}(t,e,-r))}}(Q||(Q={}));var et,rt=class{constructor(t){this._label="",this._caption="",this._mnemonic=-1,this._icon=void 0,this._iconClass="",this._iconLabel="",this._className="",this._closable=!1,this._changed=new z(this),this._isDisposed=!1,this.owner=t.owner,void 0!==t.label&&(this._label=t.label),void 0!==t.mnemonic&&(this._mnemonic=t.mnemonic),void 0!==t.icon&&(this._icon=t.icon),void 0!==t.iconClass&&(this._iconClass=t.iconClass),void 0!==t.iconLabel&&(this._iconLabel=t.iconLabel),void 0!==t.caption&&(this._caption=t.caption),void 0!==t.className&&(this._className=t.className),void 0!==t.closable&&(this._closable=t.closable),this._dataset=t.dataset||{}}get changed(){return this._changed}get label(){return this._label}set label(t){this._label!==t&&(this._label=t,this._changed.emit(void 0))}get mnemonic(){return this._mnemonic}set mnemonic(t){this._mnemonic!==t&&(this._mnemonic=t,this._changed.emit(void 0))}get icon(){return this._icon}set icon(t){this._icon!==t&&(this._icon=t,this._changed.emit(void 0))}get iconClass(){return this._iconClass}set iconClass(t){this._iconClass!==t&&(this._iconClass=t,this._changed.emit(void 0))}get iconLabel(){return this._iconLabel}set iconLabel(t){this._iconLabel!==t&&(this._iconLabel=t,this._changed.emit(void 0))}get caption(){return this._caption}set caption(t){this._caption!==t&&(this._caption=t,this._changed.emit(void 0))}get className(){return this._className}set className(t){this._className!==t&&(this._className=t,this._changed.emit(void 0))}get closable(){return this._closable}set closable(t){this._closable!==t&&(this._closable=t,this._changed.emit(void 0))}get dataset(){return this._dataset}set dataset(t){this._dataset!==t&&(this._dataset=t,this._changed.emit(void 0))}get isDisposed(){return this._isDisposed}dispose(){this.isDisposed||(this._isDisposed=!0,z.clearData(this))}},nt=class t{constructor(e={}){this._flags=0,this._layout=null,this._parent=null,this._disposed=new z(this),this._hiddenMode=t.HiddenMode.Display,this.node=et.createNode(e),this.addClass("lm-Widget")}dispose(){this.isDisposed||(this.setFlag(t.Flag.IsDisposed),this._disposed.emit(void 0),this.parent?this.parent=null:this.isAttached&&t.detach(this),this._layout&&(this._layout.dispose(),this._layout=null),this.title.dispose(),z.clearData(this),M.clearData(this),I.clearData(this))}get disposed(){return this._disposed}get isDisposed(){return this.testFlag(t.Flag.IsDisposed)}get isAttached(){return this.testFlag(t.Flag.IsAttached)}get isHidden(){return this.testFlag(t.Flag.IsHidden)}get isVisible(){return this.testFlag(t.Flag.IsVisible)}get title(){return et.titleProperty.get(this)}get id(){return this.node.id}set id(t){this.node.id=t}get dataset(){return this.node.dataset}get hiddenMode(){return this._hiddenMode}set hiddenMode(e){this._hiddenMode!==e&&(this.isHidden&&this._toggleHidden(!1),e==t.HiddenMode.Scale?this.node.style.willChange="transform":this.node.style.willChange="auto",this._hiddenMode=e,this.isHidden&&this._toggleHidden(!0))}get parent(){return this._parent}set parent(e){if(this._parent!==e){if(e&&this.contains(e))throw new Error("Invalid parent widget.");if(this._parent&&!this._parent.isDisposed){let e=new t.ChildMessage("child-removed",this);M.sendMessage(this._parent,e)}if(this._parent=e,this._parent&&!this._parent.isDisposed){let e=new t.ChildMessage("child-added",this);M.sendMessage(this._parent,e)}this.isDisposed||M.sendMessage(this,t.Msg.ParentChanged)}}get layout(){return this._layout}set layout(e){if(this._layout!==e){if(this.testFlag(t.Flag.DisallowLayout))throw new Error("Cannot set widget layout.");if(this._layout)throw new Error("Cannot change widget layout.");if(e.parent)throw new Error("Cannot change layout parent.");this._layout=e,e.parent=this}}*children(){this._layout&&(yield*this._layout)}contains(t){for(let e=t;e;e=e._parent)if(e===this)return!0;return!1}hasClass(t){return this.node.classList.contains(t)}addClass(t){this.node.classList.add(t)}removeClass(t){this.node.classList.remove(t)}toggleClass(t,e){return!0===e?(this.node.classList.add(t),!0):!1===e?(this.node.classList.remove(t),!1):this.node.classList.toggle(t)}update(){M.postMessage(this,t.Msg.UpdateRequest)}fit(){M.postMessage(this,t.Msg.FitRequest)}activate(){M.postMessage(this,t.Msg.ActivateRequest)}close(){M.sendMessage(this,t.Msg.CloseRequest)}show(){if(this.testFlag(t.Flag.IsHidden)&&(this.isAttached&&(!this.parent||this.parent.isVisible)&&M.sendMessage(this,t.Msg.BeforeShow),this.clearFlag(t.Flag.IsHidden),this._toggleHidden(!1),this.isAttached&&(!this.parent||this.parent.isVisible)&&M.sendMessage(this,t.Msg.AfterShow),this.parent)){let e=new t.ChildMessage("child-shown",this);M.sendMessage(this.parent,e)}}hide(){if(!this.testFlag(t.Flag.IsHidden)&&(this.isAttached&&(!this.parent||this.parent.isVisible)&&M.sendMessage(this,t.Msg.BeforeHide),this.setFlag(t.Flag.IsHidden),this._toggleHidden(!0),this.isAttached&&(!this.parent||this.parent.isVisible)&&M.sendMessage(this,t.Msg.AfterHide),this.parent)){let e=new t.ChildMessage("child-hidden",this);M.sendMessage(this.parent,e)}}setHidden(t){t?this.hide():this.show()}testFlag(t){return!!(this._flags&t)}setFlag(t){this._flags|=t}clearFlag(t){this._flags&=~t}processMessage(e){switch(e.type){case"resize":this.notifyLayout(e),this.onResize(e);break;case"update-request":this.notifyLayout(e),this.onUpdateRequest(e);break;case"fit-request":this.notifyLayout(e),this.onFitRequest(e);break;case"before-show":this.notifyLayout(e),this.onBeforeShow(e);break;case"after-show":this.setFlag(t.Flag.IsVisible),this.notifyLayout(e),this.onAfterShow(e);break;case"before-hide":this.notifyLayout(e),this.onBeforeHide(e);break;case"after-hide":this.clearFlag(t.Flag.IsVisible),this.notifyLayout(e),this.onAfterHide(e);break;case"before-attach":this.notifyLayout(e),this.onBeforeAttach(e);break;case"after-attach":!this.isHidden&&(!this.parent||this.parent.isVisible)&&this.setFlag(t.Flag.IsVisible),this.setFlag(t.Flag.IsAttached),this.notifyLayout(e),this.onAfterAttach(e);break;case"before-detach":this.notifyLayout(e),this.onBeforeDetach(e);break;case"after-detach":this.clearFlag(t.Flag.IsVisible),this.clearFlag(t.Flag.IsAttached),this.notifyLayout(e),this.onAfterDetach(e);break;case"activate-request":this.notifyLayout(e),this.onActivateRequest(e);break;case"close-request":this.notifyLayout(e),this.onCloseRequest(e);break;case"child-added":this.notifyLayout(e),this.onChildAdded(e);break;case"child-removed":this.notifyLayout(e),this.onChildRemoved(e);break;default:this.notifyLayout(e)}}notifyLayout(t){this._layout&&this._layout.processParentMessage(t)}onCloseRequest(e){this.parent?this.parent=null:this.isAttached&&t.detach(this)}onResize(t){}onUpdateRequest(t){}onFitRequest(t){}onActivateRequest(t){}onBeforeShow(t){}onAfterShow(t){}onBeforeHide(t){}onAfterHide(t){}onBeforeAttach(t){}onAfterAttach(t){}onBeforeDetach(t){}onAfterDetach(t){}onChildAdded(t){}onChildRemoved(t){}_toggleHidden(e){if(e)switch(this._hiddenMode){case t.HiddenMode.Display:this.addClass("lm-mod-hidden");break;case t.HiddenMode.Scale:this.node.style.transform="scale(0)",this.node.setAttribute("aria-hidden","true");break;case t.HiddenMode.ContentVisibility:this.node.style.contentVisibility="hidden",this.node.style.zIndex="-1"}else switch(this._hiddenMode){case t.HiddenMode.Display:this.removeClass("lm-mod-hidden");break;case t.HiddenMode.Scale:this.node.style.transform="",this.node.removeAttribute("aria-hidden");break;case t.HiddenMode.ContentVisibility:this.node.style.contentVisibility="",this.node.style.zIndex=""}}};!function(t){var e;(e=t.HiddenMode||(t.HiddenMode={}))[e.Display=0]="Display",e[e.Scale=1]="Scale",e[e.ContentVisibility=2]="ContentVisibility",function(t){t[t.IsDisposed=1]="IsDisposed",t[t.IsAttached=2]="IsAttached",t[t.IsHidden=4]="IsHidden",t[t.IsVisible=8]="IsVisible",t[t.DisallowLayout=16]="DisallowLayout"}(t.Flag||(t.Flag={})),function(t){t.BeforeShow=new S("before-show"),t.AfterShow=new S("after-show"),t.BeforeHide=new S("before-hide"),t.AfterHide=new S("after-hide"),t.BeforeAttach=new S("before-attach"),t.AfterAttach=new S("after-attach"),t.BeforeDetach=new S("before-detach"),t.AfterDetach=new S("after-detach"),t.ParentChanged=new S("parent-changed"),t.UpdateRequest=new E("update-request"),t.FitRequest=new E("fit-request"),t.ActivateRequest=new E("activate-request"),t.CloseRequest=new E("close-request")}(t.Msg||(t.Msg={})),t.ChildMessage=class extends S{constructor(t,e){super(t),this.child=e}};class r extends S{constructor(t,e){super("resize"),this.width=t,this.height=e}}t.ResizeMessage=r,function(t){t.UnknownSize=new t(-1,-1)}(r=t.ResizeMessage||(t.ResizeMessage={})),t.attach=function(e,r,n=null){if(e.parent)throw new Error("Cannot attach a child widget.");if(e.isAttached||e.node.isConnected)throw new Error("Widget is already attached.");if(!r.isConnected)throw new Error("Host is not attached.");M.sendMessage(e,t.Msg.BeforeAttach),r.insertBefore(e.node,n),M.sendMessage(e,t.Msg.AfterAttach)},t.detach=function(e){if(e.parent)throw new Error("Cannot detach a child widget.");if(!e.isAttached||!e.node.isConnected)throw new Error("Widget is not attached.");M.sendMessage(e,t.Msg.BeforeDetach),e.node.parentNode.removeChild(e.node),M.sendMessage(e,t.Msg.AfterDetach)}}(nt||(nt={})),function(t){t.titleProperty=new I({name:"title",create:t=>new rt({owner:t})}),t.createNode=function(t){return t.node||document.createElement(t.tag||"div")}}(et||(et={}));var it=class{constructor(t={}){this._disposed=!1,this._parent=null,this._fitPolicy=t.fitPolicy||"set-min-size"}dispose(){this._parent=null,this._disposed=!0,z.clearData(this),I.clearData(this)}get isDisposed(){return this._disposed}get parent(){return this._parent}set parent(t){if(this._parent!==t){if(this._parent)throw new Error("Cannot change parent widget.");if(t.layout!==this)throw new Error("Invalid parent widget.");this._parent=t,this.init()}}get fitPolicy(){return this._fitPolicy}set fitPolicy(t){if(this._fitPolicy!==t&&(this._fitPolicy=t,this._parent)){let t=this._parent.node.style;t.minWidth="",t.minHeight="",t.maxWidth="",t.maxHeight="",this._parent.fit()}}processParentMessage(t){switch(t.type){case"resize":this.onResize(t);break;case"update-request":this.onUpdateRequest(t);break;case"fit-request":this.onFitRequest(t);break;case"before-show":this.onBeforeShow(t);break;case"after-show":this.onAfterShow(t);break;case"before-hide":this.onBeforeHide(t);break;case"after-hide":this.onAfterHide(t);break;case"before-attach":this.onBeforeAttach(t);break;case"after-attach":this.onAfterAttach(t);break;case"before-detach":this.onBeforeDetach(t);break;case"after-detach":this.onAfterDetach(t);break;case"child-removed":this.onChildRemoved(t);break;case"child-shown":this.onChildShown(t);break;case"child-hidden":this.onChildHidden(t)}}init(){for(let t of this)t.parent=this.parent}onResize(t){for(let t of this)M.sendMessage(t,nt.ResizeMessage.UnknownSize)}onUpdateRequest(t){for(let t of this)M.sendMessage(t,nt.ResizeMessage.UnknownSize)}onBeforeAttach(t){for(let e of this)M.sendMessage(e,t)}onAfterAttach(t){for(let e of this)M.sendMessage(e,t)}onBeforeDetach(t){for(let e of this)M.sendMessage(e,t)}onAfterDetach(t){for(let e of this)M.sendMessage(e,t)}onBeforeShow(t){for(let e of this)e.isHidden||M.sendMessage(e,t)}onAfterShow(t){for(let e of this)e.isHidden||M.sendMessage(e,t)}onBeforeHide(t){for(let e of this)e.isHidden||M.sendMessage(e,t)}onAfterHide(t){for(let e of this)e.isHidden||M.sendMessage(e,t)}onChildRemoved(t){this.removeWidget(t.child)}onFitRequest(t){}onChildShown(t){}onChildHidden(t){}};!function(t){t.getHorizontalAlignment=function(t){return at.horizontalAlignmentProperty.get(t)},t.setHorizontalAlignment=function(t,e){at.horizontalAlignmentProperty.set(t,e)},t.getVerticalAlignment=function(t){return at.verticalAlignmentProperty.get(t)},t.setVerticalAlignment=function(t,e){at.verticalAlignmentProperty.set(t,e)}}(it||(it={}));var at,ot=class{constructor(t){this._top=NaN,this._left=NaN,this._width=NaN,this._height=NaN,this._minWidth=0,this._minHeight=0,this._maxWidth=1/0,this._maxHeight=1/0,this._disposed=!1,this.widget=t,this.widget.node.style.position="absolute",this.widget.node.style.contain="strict"}dispose(){if(this._disposed)return;this._disposed=!0;let t=this.widget.node.style;t.position="",t.top="",t.left="",t.width="",t.height="",t.contain=""}get minWidth(){return this._minWidth}get minHeight(){return this._minHeight}get maxWidth(){return this._maxWidth}get maxHeight(){return this._maxHeight}get isDisposed(){return this._disposed}get isHidden(){return this.widget.isHidden}get isVisible(){return this.widget.isVisible}get isAttached(){return this.widget.isAttached}fit(){let t=i.sizeLimits(this.widget.node);this._minWidth=t.minWidth,this._minHeight=t.minHeight,this._maxWidth=t.maxWidth,this._maxHeight=t.maxHeight}update(t,e,r,n){let i=Math.max(this._minWidth,Math.min(r,this._maxWidth)),a=Math.max(this._minHeight,Math.min(n,this._maxHeight));if(i"center",changed:e}),t.verticalAlignmentProperty=new I({name:"verticalAlignment",create:()=>"top",changed:e})}(at||(at={}));var st,lt=class extends it{constructor(){super(...arguments),this._widgets=[]}dispose(){for(;this._widgets.length>0;)this._widgets.pop().dispose();super.dispose()}get widgets(){return this._widgets}*[Symbol.iterator](){yield*this._widgets}addWidget(t){this.insertWidget(this._widgets.length,t)}insertWidget(t,e){e.parent=this.parent;let r=this._widgets.indexOf(e),n=Math.max(0,Math.min(t,this._widgets.length));if(-1===r)return b.ArrayExt.insert(this._widgets,n,e),void(this.parent&&this.attachWidget(n,e));n===this._widgets.length&&n--,r!==n&&(b.ArrayExt.move(this._widgets,r,n),this.parent&&this.moveWidget(r,n,e))}removeWidget(t){this.removeWidgetAt(this._widgets.indexOf(t))}removeWidgetAt(t){let e=b.ArrayExt.removeAt(this._widgets,t);e&&this.parent&&this.detachWidget(t,e)}init(){super.init();let t=0;for(let e of this)this.attachWidget(t++,e)}attachWidget(t,e){let r=this.parent.node.children[t];this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeAttach),this.parent.node.insertBefore(e.node,r),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterAttach)}moveWidget(t,e,r){this.parent.isAttached&&M.sendMessage(r,nt.Msg.BeforeDetach),this.parent.node.removeChild(r.node),this.parent.isAttached&&M.sendMessage(r,nt.Msg.AfterDetach);let n=this.parent.node.children[e];this.parent.isAttached&&M.sendMessage(r,nt.Msg.BeforeAttach),this.parent.node.insertBefore(r.node,n),this.parent.isAttached&&M.sendMessage(r,nt.Msg.AfterAttach)}detachWidget(t,e){this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeDetach),this.parent.node.removeChild(e.node),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterDetach)}};!function(t){t.clampDimension=function(t){return Math.max(0,Math.floor(t))}}(st||(st={}));var ct,ut=st,ht=class t extends lt{constructor(t){super(),this.widgetOffset=0,this._fixed=0,this._spacing=4,this._dirty=!1,this._hasNormedSizes=!1,this._sizers=[],this._items=[],this._handles=[],this._box=null,this._alignment="start",this._orientation="horizontal",this.renderer=t.renderer,void 0!==t.orientation&&(this._orientation=t.orientation),void 0!==t.alignment&&(this._alignment=t.alignment),void 0!==t.spacing&&(this._spacing=st.clampDimension(t.spacing))}dispose(){for(let t of this._items)t.dispose();this._box=null,this._items.length=0,this._sizers.length=0,this._handles.length=0,super.dispose()}get orientation(){return this._orientation}set orientation(t){this._orientation!==t&&(this._orientation=t,this.parent&&(this.parent.dataset.orientation=t,this.parent.fit()))}get alignment(){return this._alignment}set alignment(t){this._alignment!==t&&(this._alignment=t,this.parent&&(this.parent.dataset.alignment=t,this.parent.update()))}get spacing(){return this._spacing}set spacing(t){t=st.clampDimension(t),this._spacing!==t&&(this._spacing=t,this.parent&&this.parent.fit())}get handles(){return this._handles}absoluteSizes(){return this._sizers.map((t=>t.size))}relativeSizes(){return ct.normalize(this._sizers.map((t=>t.size)))}setRelativeSizes(t,e=!0){let r=this._sizers.length,n=t.slice(0,r);for(;n.length0&&(t.sizeHint=t.size);Q.adjust(this._sizers,t,r),this.parent&&this.parent.update()}}init(){this.parent.dataset.orientation=this.orientation,this.parent.dataset.alignment=this.alignment,super.init()}attachWidget(t,e){let r=new ot(e),n=ct.createHandle(this.renderer),i=ct.averageSize(this._sizers),a=ct.createSizer(i);b.ArrayExt.insert(this._items,t,r),b.ArrayExt.insert(this._sizers,t,a),b.ArrayExt.insert(this._handles,t,n),this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeAttach),this.parent.node.appendChild(e.node),this.parent.node.appendChild(n),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterAttach),this.parent.fit()}moveWidget(t,e,r){b.ArrayExt.move(this._items,t,e),b.ArrayExt.move(this._sizers,t,e),b.ArrayExt.move(this._handles,t,e),this.parent.fit()}detachWidget(t,e){let r=b.ArrayExt.removeAt(this._items,t),n=b.ArrayExt.removeAt(this._handles,t);b.ArrayExt.removeAt(this._sizers,t),this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeDetach),this.parent.node.removeChild(e.node),this.parent.node.removeChild(n),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterDetach),r.dispose(),this.parent.fit()}onBeforeShow(t){super.onBeforeShow(t),this.parent.update()}onBeforeAttach(t){super.onBeforeAttach(t),this.parent.fit()}onChildShown(t){this.parent.fit()}onChildHidden(t){this.parent.fit()}onResize(t){this.parent.isVisible&&this._update(t.width,t.height)}onUpdateRequest(t){this.parent.isVisible&&this._update(-1,-1)}onFitRequest(t){this.parent.isAttached&&this._fit()}updateItemPosition(t,e,r,n,i,a,o){let s=this._items[t];if(s.isHidden)return;let l=this._handles[t].style;e?(r+=this.widgetOffset,s.update(r,n,o,i),r+=o,l.top=`${n}px`,l.left=`${r}px`,l.width=`${this._spacing}px`,l.height=`${i}px`):(n+=this.widgetOffset,s.update(r,n,a,o),n+=o,l.top=`${n}px`,l.left=`${r}px`,l.width=`${a}px`,l.height=`${this._spacing}px`)}_fit(){let e=0,r=-1;for(let t=0,n=this._items.length;t0&&(i.sizeHint=i.size),r.isHidden?(i.minSize=0,i.maxSize=0):(r.fit(),i.stretch=t.getStretch(r.widget),n?(i.minSize=r.minWidth,i.maxSize=r.maxWidth,a+=r.minWidth,o=Math.max(o,r.minHeight)):(i.minSize=r.minHeight,i.maxSize=r.maxHeight,o+=r.minHeight,a=Math.max(a,r.minWidth)))}let s=this._box=i.boxSizing(this.parent.node);a+=s.horizontalSum,o+=s.verticalSum;let l=this.parent.node.style;l.minWidth=`${a}px`,l.minHeight=`${o}px`,this._dirty=!0,this.parent.parent&&M.sendMessage(this.parent.parent,nt.Msg.FitRequest),this._dirty&&M.sendMessage(this.parent,nt.Msg.UpdateRequest)}_update(t,e){this._dirty=!1;let r=0;for(let t=0,e=this._items.length;t0){let t;if(t=u?Math.max(0,o-this._fixed):Math.max(0,s-this._fixed),this._hasNormedSizes){for(let e of this._sizers)e.sizeHint*=t;this._hasNormedSizes=!1}let e=Q.calc(this._sizers,t);if(e>0)switch(this._alignment){case"start":break;case"center":l=0,c=e/2;break;case"end":l=0,c=e;break;case"justify":l=e/r,c=0;break;default:throw"unreachable"}}for(let t=0,e=this._items.length;t0,coerce:(t,e)=>Math.max(0,Math.floor(e)),changed:function(t){t.parent&&t.parent.layout instanceof ht&&t.parent.fit()}}),t.createSizer=function(t){let e=new tt;return e.sizeHint=Math.floor(t),e},t.createHandle=function(t){let e=t.createHandle();return e.style.position="absolute",e.style.contain="style",e},t.averageSize=function(t){return t.reduce(((t,e)=>t+e.size),0)/t.length||0},t.normalize=function(t){let e=t.length;if(0===e)return[];let r=t.reduce(((t,e)=>t+Math.abs(e)),0);return 0===r?t.map((t=>1/e)):t.map((t=>t/r))}}(ct||(ct={}));var pt,ft=class extends ht{constructor(t){super({...t,orientation:t.orientation||"vertical"}),this._titles=[],this.titleSpace=t.titleSpace||22}get titleSpace(){return this.widgetOffset}set titleSpace(t){t=ut.clampDimension(t),this.widgetOffset!==t&&(this.widgetOffset=t,this.parent&&this.parent.fit())}get titles(){return this._titles}dispose(){this.isDisposed||(this._titles.length=0,super.dispose())}updateTitle(t,e){let r=this._titles[t],n=r.classList.contains("lm-mod-expanded"),i=pt.createTitle(this.renderer,e.title,n);this._titles[t]=i,this.parent.node.replaceChild(i,r)}insertWidget(t,e){e.id||(e.id=`id-${w.UUID.uuid4()}`),super.insertWidget(t,e)}attachWidget(t,e){let r=pt.createTitle(this.renderer,e.title);b.ArrayExt.insert(this._titles,t,r),this.parent.node.appendChild(r),e.node.setAttribute("role","region"),e.node.setAttribute("aria-labelledby",r.id),super.attachWidget(t,e)}moveWidget(t,e,r){b.ArrayExt.move(this._titles,t,e),super.moveWidget(t,e,r)}detachWidget(t,e){let r=b.ArrayExt.removeAt(this._titles,t);this.parent.node.removeChild(r),super.detachWidget(t,e)}updateItemPosition(t,e,r,n,i,a,o){let s=this._titles[t].style;s.top=`${n}px`,s.left=`${r}px`,s.height=`${this.widgetOffset}px`,s.width=e?`${i}px`:`${a}px`,super.updateItemPosition(t,e,r,n,i,a,o)}};!function(t){t.createTitle=function(t,e,r=!0){let n=t.createSectionTitle(e);return n.style.position="absolute",n.style.contain="strict",n.setAttribute("aria-label",`${e.label} Section`),n.setAttribute("aria-expanded",r?"true":"false"),n.setAttribute("aria-controls",e.owner.id),r&&n.classList.add("lm-mod-expanded"),n}}(pt||(pt={}));var dt,mt=class extends nt{constructor(t={}){super(),this.addClass("lm-Panel"),this.layout=dt.createLayout(t)}get widgets(){return this.layout.widgets}addWidget(t){this.layout.addWidget(t)}insertWidget(t,e){this.layout.insertWidget(t,e)}};!function(t){t.createLayout=function(t){return t.layout||new lt}}(dt||(dt={}));var gt,yt=class extends mt{constructor(t={}){super({layout:gt.createLayout(t)}),this._handleMoved=new z(this),this._pressData=null,this.addClass("lm-SplitPanel")}dispose(){this._releaseMouse(),super.dispose()}get orientation(){return this.layout.orientation}set orientation(t){this.layout.orientation=t}get alignment(){return this.layout.alignment}set alignment(t){this.layout.alignment=t}get spacing(){return this.layout.spacing}set spacing(t){this.layout.spacing=t}get renderer(){return this.layout.renderer}get handleMoved(){return this._handleMoved}get handles(){return this.layout.handles}relativeSizes(){return this.layout.relativeSizes()}setRelativeSizes(t,e=!0){this.layout.setRelativeSizes(t,e)}handleEvent(t){switch(t.type){case"pointerdown":this._evtPointerDown(t);break;case"pointermove":this._evtPointerMove(t);break;case"pointerup":this._evtPointerUp(t);break;case"keydown":this._evtKeyDown(t);break;case"contextmenu":t.preventDefault(),t.stopPropagation()}}onBeforeAttach(t){this.node.addEventListener("pointerdown",this)}onAfterDetach(t){this.node.removeEventListener("pointerdown",this),this._releaseMouse()}onChildAdded(t){t.child.addClass("lm-SplitPanel-child"),this._releaseMouse()}onChildRemoved(t){t.child.removeClass("lm-SplitPanel-child"),this._releaseMouse()}_evtKeyDown(t){this._pressData&&(t.preventDefault(),t.stopPropagation()),27===t.keyCode&&this._releaseMouse()}_evtPointerDown(t){if(0!==t.button)return;let e=this.layout,r=b.ArrayExt.findFirstIndex(e.handles,(e=>e.contains(t.target)));if(-1===r)return;t.preventDefault(),t.stopPropagation(),document.addEventListener("pointerup",this,!0),document.addEventListener("pointermove",this,!0),document.addEventListener("keydown",this,!0),document.addEventListener("contextmenu",this,!0);let n,i=e.handles[r],a=i.getBoundingClientRect();n="horizontal"===e.orientation?t.clientX-a.left:t.clientY-a.top;let o=window.getComputedStyle(i),s=B.overrideCursor(o.cursor);this._pressData={index:r,delta:n,override:s}}_evtPointerMove(t){t.preventDefault(),t.stopPropagation();let e,r=this.layout,n=this.node.getBoundingClientRect();e="horizontal"===r.orientation?t.clientX-n.left-this._pressData.delta:t.clientY-n.top-this._pressData.delta,r.moveHandle(this._pressData.index,e)}_evtPointerUp(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this._releaseMouse())}_releaseMouse(){this._pressData&&(this._pressData.override.dispose(),this._pressData=null,this._handleMoved.emit(),document.removeEventListener("keydown",this,!0),document.removeEventListener("pointerup",this,!0),document.removeEventListener("pointermove",this,!0),document.removeEventListener("contextmenu",this,!0))}};!function(t){class e{createHandle(){let t=document.createElement("div");return t.className="lm-SplitPanel-handle",t}}t.Renderer=e,t.defaultRenderer=new e,t.getStretch=function(t){return ht.getStretch(t)},t.setStretch=function(t,e){ht.setStretch(t,e)}}(yt||(yt={})),function(t){t.createLayout=function(t){return t.layout||new ht({renderer:t.renderer||yt.defaultRenderer,orientation:t.orientation,alignment:t.alignment,spacing:t.spacing})}}(gt||(gt={}));var vt,xt=class extends yt{constructor(t={}){super({...t,layout:vt.createLayout(t)}),this._widgetSizesCache=new WeakMap,this._expansionToggled=new z(this),this.addClass("lm-AccordionPanel")}get renderer(){return this.layout.renderer}get titleSpace(){return this.layout.titleSpace}set titleSpace(t){this.layout.titleSpace=t}get titles(){return this.layout.titles}get expansionToggled(){return this._expansionToggled}addWidget(t){super.addWidget(t),t.title.changed.connect(this._onTitleChanged,this)}collapse(t){let e=this.layout.widgets[t];e&&!e.isHidden&&this._toggleExpansion(t)}expand(t){let e=this.layout.widgets[t];e&&e.isHidden&&this._toggleExpansion(t)}insertWidget(t,e){super.insertWidget(t,e),e.title.changed.connect(this._onTitleChanged,this)}handleEvent(t){switch(super.handleEvent(t),t.type){case"click":this._evtClick(t);break;case"keydown":this._eventKeyDown(t)}}onBeforeAttach(t){this.node.addEventListener("click",this),this.node.addEventListener("keydown",this),super.onBeforeAttach(t)}onAfterDetach(t){super.onAfterDetach(t),this.node.removeEventListener("click",this),this.node.removeEventListener("keydown",this)}_onTitleChanged(t){let e=b.ArrayExt.findFirstIndex(this.widgets,(e=>e.contains(t.owner)));e>=0&&(this.layout.updateTitle(e,t.owner),this.update())}_computeWidgetSize(t){let e=this.layout,r=e.widgets[t];if(!r)return;let n=r.isHidden,i=e.absoluteSizes(),a=(n?-1:1)*this.spacing,o=i.reduce(((t,e)=>t+e)),s=[...i];if(n){let e=this._widgetSizesCache.get(r);if(!e)return;s[t]+=e;let n=s.map((t=>t-e>0)).lastIndexOf(!0);-1===n?s.forEach(((r,n)=>{n!==t&&(s[n]-=i[n]/o*(e-a))})):s[n]-=e-a}else{let e=i[t];this._widgetSizesCache.set(r,e),s[t]=0;let n=s.map((t=>t>0)).lastIndexOf(!0);if(-1===n)return;s[n]=i[n]+e+a}return s.map((t=>t/(o+a)))}_evtClick(t){let e=t.target;if(e){let r=b.ArrayExt.findFirstIndex(this.titles,(t=>t.contains(e)));r>=0&&(t.preventDefault(),t.stopPropagation(),this._toggleExpansion(r))}}_eventKeyDown(t){if(t.defaultPrevented)return;let e=t.target,r=!1;if(e){let n=b.ArrayExt.findFirstIndex(this.titles,(t=>t.contains(e)));if(n>=0){let i=t.keyCode.toString();if(t.key.match(/Space|Enter/)||i.match(/13|32/))e.click(),r=!0;else if("horizontal"===this.orientation?t.key.match(/ArrowLeft|ArrowRight/)||i.match(/37|39/):t.key.match(/ArrowUp|ArrowDown/)||i.match(/38|40/)){let e=t.key.match(/ArrowLeft|ArrowUp/)||i.match(/37|38/)?-1:1,a=this.titles.length,o=(n+a+e)%a;this.titles[o].focus(),r=!0}else"End"===t.key||"35"===i?(this.titles[this.titles.length-1].focus(),r=!0):("Home"===t.key||"36"===i)&&(this.titles[0].focus(),r=!0)}r&&t.preventDefault()}}_toggleExpansion(t){let e=this.titles[t],r=this.layout.widgets[t],n=this._computeWidgetSize(t);n&&this.setRelativeSizes(n,!1),r.isHidden?(e.classList.add("lm-mod-expanded"),e.setAttribute("aria-expanded","true"),r.show()):(e.classList.remove("lm-mod-expanded"),e.setAttribute("aria-expanded","false"),r.hide()),this._expansionToggled.emit(t)}};!function(t){class e extends yt.Renderer{constructor(){super(),this.titleClassName="lm-AccordionPanel-title",this._titleID=0,this._titleKeys=new WeakMap,this._uuid=++e._nInstance}createCollapseIcon(t){return document.createElement("span")}createSectionTitle(t){let e=document.createElement("h3");e.setAttribute("tabindex","0"),e.id=this.createTitleKey(t),e.className=this.titleClassName;for(let r in t.dataset)e.dataset[r]=t.dataset[r];e.appendChild(this.createCollapseIcon(t)).className="lm-AccordionPanel-titleCollapser";let r=e.appendChild(document.createElement("span"));return r.className="lm-AccordionPanel-titleLabel",r.textContent=t.label,r.title=t.caption||t.label,e}createTitleKey(t){let e=this._titleKeys.get(t);return void 0===e&&(e=`title-key-${this._uuid}-${this._titleID++}`,this._titleKeys.set(t,e)),e}}e._nInstance=0,t.Renderer=e,t.defaultRenderer=new e}(xt||(xt={})),function(t){t.createLayout=function(t){return t.layout||new ft({renderer:t.renderer||xt.defaultRenderer,orientation:t.orientation,alignment:t.alignment,spacing:t.spacing,titleSpace:t.titleSpace})}}(vt||(vt={}));var _t,bt=class t extends lt{constructor(t={}){super(),this._fixed=0,this._spacing=4,this._dirty=!1,this._sizers=[],this._items=[],this._box=null,this._alignment="start",this._direction="top-to-bottom",void 0!==t.direction&&(this._direction=t.direction),void 0!==t.alignment&&(this._alignment=t.alignment),void 0!==t.spacing&&(this._spacing=ut.clampDimension(t.spacing))}dispose(){for(let t of this._items)t.dispose();this._box=null,this._items.length=0,this._sizers.length=0,super.dispose()}get direction(){return this._direction}set direction(t){this._direction!==t&&(this._direction=t,this.parent&&(this.parent.dataset.direction=t,this.parent.fit()))}get alignment(){return this._alignment}set alignment(t){this._alignment!==t&&(this._alignment=t,this.parent&&(this.parent.dataset.alignment=t,this.parent.update()))}get spacing(){return this._spacing}set spacing(t){t=ut.clampDimension(t),this._spacing!==t&&(this._spacing=t,this.parent&&this.parent.fit())}init(){this.parent.dataset.direction=this.direction,this.parent.dataset.alignment=this.alignment,super.init()}attachWidget(t,e){b.ArrayExt.insert(this._items,t,new ot(e)),b.ArrayExt.insert(this._sizers,t,new tt),this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeAttach),this.parent.node.appendChild(e.node),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterAttach),this.parent.fit()}moveWidget(t,e,r){b.ArrayExt.move(this._items,t,e),b.ArrayExt.move(this._sizers,t,e),this.parent.update()}detachWidget(t,e){let r=b.ArrayExt.removeAt(this._items,t);b.ArrayExt.removeAt(this._sizers,t),this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeDetach),this.parent.node.removeChild(e.node),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterDetach),r.dispose(),this.parent.fit()}onBeforeShow(t){super.onBeforeShow(t),this.parent.update()}onBeforeAttach(t){super.onBeforeAttach(t),this.parent.fit()}onChildShown(t){this.parent.fit()}onChildHidden(t){this.parent.fit()}onResize(t){this.parent.isVisible&&this._update(t.width,t.height)}onUpdateRequest(t){this.parent.isVisible&&this._update(-1,-1)}onFitRequest(t){this.parent.isAttached&&this._fit()}_fit(){let e=0;for(let t=0,r=this._items.length;t0)switch(this._alignment){case"start":break;case"center":c=0,u=n/2;break;case"end":c=0,u=n;break;case"justify":c=n/r,u=0;break;default:throw"unreachable"}for(let t=0,e=this._items.length;t0,coerce:(t,e)=>Math.max(0,Math.floor(e)),changed:e}),t.sizeBasisProperty=new I({name:"sizeBasis",create:()=>0,coerce:(t,e)=>Math.max(0,Math.floor(e)),changed:e}),t.isHorizontal=function(t){return"left-to-right"===t||"right-to-left"===t},t.clampSpacing=function(t){return Math.max(0,Math.floor(t))}}(_t||(_t={}));var wt,Tt=class extends mt{constructor(t={}){super({layout:wt.createLayout(t)}),this.addClass("lm-BoxPanel")}get direction(){return this.layout.direction}set direction(t){this.layout.direction=t}get alignment(){return this.layout.alignment}set alignment(t){this.layout.alignment=t}get spacing(){return this.layout.spacing}set spacing(t){this.layout.spacing=t}onChildAdded(t){t.child.addClass("lm-BoxPanel-child")}onChildRemoved(t){t.child.removeClass("lm-BoxPanel-child")}};!function(t){t.getStretch=function(t){return bt.getStretch(t)},t.setStretch=function(t,e){bt.setStretch(t,e)},t.getSizeBasis=function(t){return bt.getSizeBasis(t)},t.setSizeBasis=function(t,e){bt.setSizeBasis(t,e)}}(Tt||(Tt={})),function(t){t.createLayout=function(t){return t.layout||new bt(t)}}(wt||(wt={}));var At,kt=class t extends nt{constructor(e){super({node:At.createNode()}),this._activeIndex=-1,this._items=[],this._results=null,this.addClass("lm-CommandPalette"),this.setFlag(nt.Flag.DisallowLayout),this.commands=e.commands,this.renderer=e.renderer||t.defaultRenderer,this.commands.commandChanged.connect(this._onGenericChange,this),this.commands.keyBindingChanged.connect(this._onGenericChange,this)}dispose(){this._items.length=0,this._results=null,super.dispose()}get searchNode(){return this.node.getElementsByClassName("lm-CommandPalette-search")[0]}get inputNode(){return this.node.getElementsByClassName("lm-CommandPalette-input")[0]}get contentNode(){return this.node.getElementsByClassName("lm-CommandPalette-content")[0]}get items(){return this._items}addItem(t){let e=At.createItem(this.commands,t);return this._items.push(e),this.refresh(),e}addItems(t){let e=t.map((t=>At.createItem(this.commands,t)));return e.forEach((t=>this._items.push(t))),this.refresh(),e}removeItem(t){this.removeItemAt(this._items.indexOf(t))}removeItemAt(t){b.ArrayExt.removeAt(this._items,t)&&this.refresh()}clearItems(){0!==this._items.length&&(this._items.length=0,this.refresh())}refresh(){this._results=null,""!==this.inputNode.value?this.node.getElementsByClassName("lm-close-icon")[0].style.display="inherit":this.node.getElementsByClassName("lm-close-icon")[0].style.display="none",this.update()}handleEvent(t){switch(t.type){case"click":this._evtClick(t);break;case"keydown":this._evtKeyDown(t);break;case"input":this.refresh();break;case"focus":case"blur":this._toggleFocused()}}onBeforeAttach(t){this.node.addEventListener("click",this),this.node.addEventListener("keydown",this),this.node.addEventListener("input",this),this.node.addEventListener("focus",this,!0),this.node.addEventListener("blur",this,!0)}onAfterDetach(t){this.node.removeEventListener("click",this),this.node.removeEventListener("keydown",this),this.node.removeEventListener("input",this),this.node.removeEventListener("focus",this,!0),this.node.removeEventListener("blur",this,!0)}onAfterShow(t){this.update(),super.onAfterShow(t)}onActivateRequest(t){if(this.isAttached){let t=this.inputNode;t.focus(),t.select()}}onUpdateRequest(t){if(this.isHidden)return;let e=this.inputNode.value,r=this.contentNode,n=this._results;if(n||(n=this._results=At.search(this._items,e),this._activeIndex=e?b.ArrayExt.findFirstIndex(n,At.canActivate):-1),!e&&0===n.length)return void Z.render(null,r);if(e&&0===n.length){let t=this.renderer.renderEmptyMessage({query:e});return void Z.render(t,r)}let a=this.renderer,o=this._activeIndex,s=new Array(n.length);for(let t=0,e=n.length;t=n.length)r.scrollTop=0;else{let t=r.children[o];i.scrollIntoViewIfNeeded(r,t)}}_evtClick(t){if(0!==t.button)return;if(t.target.classList.contains("lm-close-icon"))return this.inputNode.value="",void this.refresh();let e=b.ArrayExt.findFirstIndex(this.contentNode.children,(e=>e.contains(t.target)));-1!==e&&(t.preventDefault(),t.stopPropagation(),this._execute(e))}_evtKeyDown(t){if(!(t.altKey||t.ctrlKey||t.metaKey||t.shiftKey))switch(t.keyCode){case 13:t.preventDefault(),t.stopPropagation(),this._execute(this._activeIndex);break;case 38:t.preventDefault(),t.stopPropagation(),this._activatePreviousItem();break;case 40:t.preventDefault(),t.stopPropagation(),this._activateNextItem()}}_activateNextItem(){if(!this._results||0===this._results.length)return;let t=this._activeIndex,e=this._results.length,r=tt-e)),c=a.slice(0,l),u=a.slice(l);for(let t=0,e=u.length;tr.command===t&&w.JSONExt.deepEqual(r.args,e)))||null}}}(At||(At={}));var Mt,St,Et=class t extends nt{constructor(e){super({node:Mt.createNode()}),this._childIndex=-1,this._activeIndex=-1,this._openTimerID=0,this._closeTimerID=0,this._items=[],this._childMenu=null,this._parentMenu=null,this._aboutToClose=new z(this),this._menuRequested=new z(this),this.addClass("lm-Menu"),this.setFlag(nt.Flag.DisallowLayout),this.commands=e.commands,this.renderer=e.renderer||t.defaultRenderer}dispose(){this.close(),this._items.length=0,super.dispose()}get aboutToClose(){return this._aboutToClose}get menuRequested(){return this._menuRequested}get parentMenu(){return this._parentMenu}get childMenu(){return this._childMenu}get rootMenu(){let t=this;for(;t._parentMenu;)t=t._parentMenu;return t}get leafMenu(){let t=this;for(;t._childMenu;)t=t._childMenu;return t}get contentNode(){return this.node.getElementsByClassName("lm-Menu-content")[0]}get activeItem(){return this._items[this._activeIndex]||null}set activeItem(t){this.activeIndex=t?this._items.indexOf(t):-1}get activeIndex(){return this._activeIndex}set activeIndex(t){(t<0||t>=this._items.length)&&(t=-1),-1!==t&&!Mt.canActivate(this._items[t])&&(t=-1),this._activeIndex!==t&&(this._activeIndex=t,this._activeIndex>=0&&this.contentNode.childNodes[this._activeIndex]&&this.contentNode.childNodes[this._activeIndex].focus(),this.update())}get items(){return this._items}activateNextItem(){let t=this._items.length,e=this._activeIndex,r=e{this.activeIndex=t}})}Z.render(a,this.contentNode)}onCloseRequest(t){this._cancelOpenTimer(),this._cancelCloseTimer(),this.activeIndex=-1;let e=this._childMenu;e&&(this._childIndex=-1,this._childMenu=null,e._parentMenu=null,e.close());let r=this._parentMenu;r&&(this._parentMenu=null,r._childIndex=-1,r._childMenu=null,r.activate()),this.isAttached&&this._aboutToClose.emit(void 0),super.onCloseRequest(t)}_evtKeyDown(t){t.preventDefault(),t.stopPropagation();let e=t.keyCode;if(13===e)return void this.triggerActiveItem();if(27===e)return void this.close();if(37===e)return void(this._parentMenu?this.close():this._menuRequested.emit("previous"));if(38===e)return void this.activatePreviousItem();if(39===e){let t=this.activeItem;return void(t&&"submenu"===t.type?this.triggerActiveItem():this.rootMenu._menuRequested.emit("next"))}if(40===e)return void this.activateNextItem();let r=U().keyForKeydownEvent(t);if(!r)return;let n=this._activeIndex+1,i=Mt.findMnemonic(this._items,r,n);-1===i.index||i.multiple?-1!==i.index?this.activeIndex=i.index:-1!==i.auto&&(this.activeIndex=i.auto):(this.activeIndex=i.index,this.triggerActiveItem())}_evtMouseUp(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this.triggerActiveItem())}_evtMouseMove(t){let e=b.ArrayExt.findFirstIndex(this.contentNode.children,(e=>i.hitTest(e,t.clientX,t.clientY)));if(e===this._activeIndex)return;if(this.activeIndex=e,e=this.activeIndex,e===this._childIndex)return this._cancelOpenTimer(),void this._cancelCloseTimer();-1!==this._childIndex&&this._startCloseTimer(),this._cancelOpenTimer();let r=this.activeItem;!r||"submenu"!==r.type||!r.submenu||this._startOpenTimer()}_evtMouseEnter(t){for(let t=this._parentMenu;t;t=t._parentMenu)t._cancelOpenTimer(),t._cancelCloseTimer(),t.activeIndex=t._childIndex}_evtMouseLeave(t){if(this._cancelOpenTimer(),!this._childMenu)return void(this.activeIndex=-1);let{clientX:e,clientY:r}=t;i.hitTest(this._childMenu.node,e,r)?this._cancelCloseTimer():(this.activeIndex=-1,this._startCloseTimer())}_evtMouseDown(t){this._parentMenu||(Mt.hitTestMenus(this,t.clientX,t.clientY)?(t.preventDefault(),t.stopPropagation()):this.close())}_openChildMenu(e=!1){let r=this.activeItem;if(!r||"submenu"!==r.type||!r.submenu)return void this._closeChildMenu();let n=r.submenu;if(n===this._childMenu)return;t.saveWindowData(),this._closeChildMenu(),this._childMenu=n,this._childIndex=this._activeIndex,n._parentMenu=this,M.sendMessage(this,nt.Msg.UpdateRequest);let i=this.contentNode.children[this._activeIndex];Mt.openSubmenu(n,i),e&&(n.activeIndex=-1,n.activateNextItem()),n.activate()}_closeChildMenu(){this._childMenu&&this._childMenu.close()}_startOpenTimer(){0===this._openTimerID&&(this._openTimerID=window.setTimeout((()=>{this._openTimerID=0,this._openChildMenu()}),Mt.TIMER_DELAY))}_startCloseTimer(){0===this._closeTimerID&&(this._closeTimerID=window.setTimeout((()=>{this._closeTimerID=0,this._closeChildMenu()}),Mt.TIMER_DELAY))}_cancelOpenTimer(){0!==this._openTimerID&&(clearTimeout(this._openTimerID),this._openTimerID=0)}_cancelCloseTimer(){0!==this._closeTimerID&&(clearTimeout(this._closeTimerID),this._closeTimerID=0)}static saveWindowData(){Mt.saveWindowData()}};!function(t){class e{renderItem(t){let e=this.createItemClass(t),r=this.createItemDataset(t),n=this.createItemARIA(t);return J.li({className:e,dataset:r,tabindex:"0",onfocus:t.onfocus,...n},this.renderIcon(t),this.renderLabel(t),this.renderShortcut(t),this.renderSubmenu(t))}renderIcon(t){let e=this.createIconClass(t);return J.div({className:e},t.item.icon,t.item.iconLabel)}renderLabel(t){let e=this.formatLabel(t);return J.div({className:"lm-Menu-itemLabel"},e)}renderShortcut(t){let e=this.formatShortcut(t);return J.div({className:"lm-Menu-itemShortcut"},e)}renderSubmenu(t){return J.div({className:"lm-Menu-itemSubmenuIcon"})}createItemClass(t){let e="lm-Menu-item";t.item.isEnabled||(e+=" lm-mod-disabled"),t.item.isToggled&&(e+=" lm-mod-toggled"),t.item.isVisible||(e+=" lm-mod-hidden"),t.active&&(e+=" lm-mod-active"),t.collapsed&&(e+=" lm-mod-collapsed");let r=t.item.className;return r&&(e+=` ${r}`),e}createItemDataset(t){let e,{type:r,command:n,dataset:i}=t.item;return e="command"===r?{...i,type:r,command:n}:{...i,type:r},e}createIconClass(t){let e="lm-Menu-itemIcon",r=t.item.iconClass;return r?`${e} ${r}`:e}createItemARIA(t){let e={};switch(t.item.type){case"separator":e.role="presentation";break;case"submenu":e["aria-haspopup"]="true",t.item.isEnabled||(e["aria-disabled"]="true");break;default:t.item.isEnabled||(e["aria-disabled"]="true"),e.role="menuitem"}return e}formatLabel(t){let{label:e,mnemonic:r}=t.item;if(r<0||r>=e.length)return e;let n=e.slice(0,r),i=e.slice(r+1),a=e[r];return[n,J.span({className:"lm-Menu-itemMnemonic"},a),i]}formatShortcut(t){let e=t.item.keyBinding;return e?W.formatKeystroke(e.keys):null}}t.Renderer=e,t.defaultRenderer=new e}(Et||(Et={})),function(t){t.TIMER_DELAY=300,t.SUBMENU_OVERLAP=3;let e=null,r=0;function n(){return r>0?(r--,e):o()}function a(t){return"separator"!==t.type&&t.isEnabled&&t.isVisible}function o(){return{pageXOffset:window.pageXOffset,pageYOffset:window.pageYOffset,clientWidth:document.documentElement.clientWidth,clientHeight:document.documentElement.clientHeight}}t.saveWindowData=function(){e=o(),r++},t.createNode=function(){let t=document.createElement("div"),e=document.createElement("ul");return e.className="lm-Menu-content",t.appendChild(e),e.setAttribute("role","menu"),t.tabIndex=0,t},t.canActivate=a,t.createItem=function(t,e){return new s(t.commands,e)},t.hitTestMenus=function(t,e,r){for(let n=t;n;n=n.childMenu)if(i.hitTest(n.node,e,r))return!0;return!1},t.computeCollapsed=function(t){let e=new Array(t.length);b.ArrayExt.fill(e,!1);let r=0,n=t.length;for(;r=0;--i){let r=t[i];if(r.isVisible){if("separator"!==r.type)break;e[i]=!0}}let a=!1;for(;++rc+h&&(e=c+h-g),!a&&r+y>u+p&&(r>u+p?r=u+p-y:r-=y),m.transform=`translate(${Math.max(0,e)}px, ${Math.max(0,r)}px`,m.opacity="1"},t.openSubmenu=function(e,r){let a=n(),o=a.pageXOffset,s=a.pageYOffset,l=a.clientWidth,c=a.clientHeight;M.sendMessage(e,nt.Msg.UpdateRequest);let u=c,h=e.node,p=h.style;p.opacity="0",p.maxHeight=`${u}px`,nt.attach(e,document.body);let{width:f,height:d}=h.getBoundingClientRect(),m=i.boxSizing(e.node),g=r.getBoundingClientRect(),y=g.right-t.SUBMENU_OVERLAP;y+f>o+l&&(y=g.left+t.SUBMENU_OVERLAP-f);let v=g.top-m.borderTop-m.paddingTop;v+d>s+c&&(v=g.bottom+m.borderBottom+m.paddingBottom-d),p.transform=`translate(${Math.max(0,y)}px, ${Math.max(0,v)}px`,p.opacity="1"},t.findMnemonic=function(t,e,r){let n=-1,i=-1,o=!1,s=e.toUpperCase();for(let e=0,l=t.length;e=0&&pr.command===t&&w.JSONExt.deepEqual(r.args,e)))||null}return null}}}(Mt||(Mt={})),function(t){function e(t,e){let r=t.rank,n=e.rank;return r!==n?r=this._titles.length)&&(t=-1),this._currentIndex===t)return;let e=this._currentIndex,r=this._titles[e]||null,n=t,i=this._titles[n]||null;this._currentIndex=n,this._previousTitle=r,this.update(),this._currentChanged.emit({previousIndex:e,previousTitle:r,currentIndex:n,currentTitle:i})}get name(){return this._name}set name(t){this._name=t,t?this.contentNode.setAttribute("aria-label",t):this.contentNode.removeAttribute("aria-label")}get orientation(){return this._orientation}set orientation(t){this._orientation!==t&&(this._releaseMouse(),this._orientation=t,this.dataset.orientation=t,this.contentNode.setAttribute("aria-orientation",t))}get addButtonEnabled(){return this._addButtonEnabled}set addButtonEnabled(t){this._addButtonEnabled!==t&&(this._addButtonEnabled=t,t?this.addButtonNode.classList.remove("lm-mod-hidden"):this.addButtonNode.classList.add("lm-mod-hidden"))}get titles(){return this._titles}get contentNode(){return this.node.getElementsByClassName("lm-TabBar-content")[0]}get addButtonNode(){return this.node.getElementsByClassName("lm-TabBar-addButton")[0]}addTab(t){return this.insertTab(this._titles.length,t)}insertTab(t,e){this._releaseMouse();let r=Ct.asTitle(e),n=this._titles.indexOf(r),i=Math.max(0,Math.min(t,this._titles.length));return-1===n?(b.ArrayExt.insert(this._titles,i,r),r.changed.connect(this._onTitleChanged,this),this.update(),this._adjustCurrentForInsert(i,r),r):(i===this._titles.length&&i--,n===i||(b.ArrayExt.move(this._titles,n,i),this.update(),this._adjustCurrentForMove(n,i)),r)}removeTab(t){this.removeTabAt(this._titles.indexOf(t))}removeTabAt(t){this._releaseMouse();let e=b.ArrayExt.removeAt(this._titles,t);e&&(e.changed.disconnect(this._onTitleChanged,this),e===this._previousTitle&&(this._previousTitle=null),this.update(),this._adjustCurrentForRemove(t,e))}clearTabs(){if(0===this._titles.length)return;this._releaseMouse();for(let t of this._titles)t.changed.disconnect(this._onTitleChanged,this);let t=this.currentIndex,e=this.currentTitle;this._currentIndex=-1,this._previousTitle=null,this._titles.length=0,this.update(),-1!==t&&this._currentChanged.emit({previousIndex:t,previousTitle:e,currentIndex:-1,currentTitle:null})}releaseMouse(){this._releaseMouse()}handleEvent(t){switch(t.type){case"pointerdown":this._evtPointerDown(t);break;case"pointermove":this._evtPointerMove(t);break;case"pointerup":this._evtPointerUp(t);break;case"dblclick":this._evtDblClick(t);break;case"keydown":t.eventPhase===Event.CAPTURING_PHASE?this._evtKeyDownCapturing(t):this._evtKeyDown(t);break;case"contextmenu":t.preventDefault(),t.stopPropagation()}}onBeforeAttach(t){this.node.addEventListener("pointerdown",this),this.node.addEventListener("dblclick",this),this.node.addEventListener("keydown",this)}onAfterDetach(t){this.node.removeEventListener("pointerdown",this),this.node.removeEventListener("dblclick",this),this.node.removeEventListener("keydown",this),this._releaseMouse()}onUpdateRequest(t){var e;let r=this._titles,n=this.renderer,i=this.currentTitle,a=new Array(r.length),o=null!==(e=this._getCurrentTabindex())&&void 0!==e?e:this._currentIndex>-1?this._currentIndex:0;for(let t=0,e=r.length;ti.hitTest(e,t.clientX,t.clientY)));if(-1===r)return;let n=this.titles[r],a=e[r].querySelector(".lm-TabBar-tabLabel");if(a&&a.contains(t.target)){let t=n.label||"",e=a.innerHTML;a.innerHTML="";let r=document.createElement("input");r.classList.add("lm-TabBar-tabInput"),r.value=t,a.appendChild(r);let i=()=>{r.removeEventListener("blur",i),a.innerHTML=e,this.node.addEventListener("keydown",this)};r.addEventListener("dblclick",(t=>t.stopPropagation())),r.addEventListener("blur",i),r.addEventListener("keydown",(t=>{"Enter"===t.key?(""!==r.value&&(n.label=n.caption=r.value),i()):"Escape"===t.key&&i()})),this.node.removeEventListener("keydown",this),r.select(),r.focus(),a.children.length>0&&a.children[0].focus()}}_evtKeyDownCapturing(t){t.eventPhase===Event.CAPTURING_PHASE&&(t.preventDefault(),t.stopPropagation(),"Escape"===t.key&&this._releaseMouse())}_evtKeyDown(t){var e,r,n;if("Tab"!==t.key&&t.eventPhase!==Event.CAPTURING_PHASE)if("Enter"===t.key||"Spacebar"===t.key||" "===t.key){let e=document.activeElement;if(this.addButtonEnabled&&this.addButtonNode.contains(e))t.preventDefault(),t.stopPropagation(),this._addRequested.emit();else{let r=b.ArrayExt.findFirstIndex(this.contentNode.children,(t=>t.contains(e)));r>=0&&(t.preventDefault(),t.stopPropagation(),this.currentIndex=r)}}else if(It.includes(t.key)){let i=[...this.contentNode.children];if(this.addButtonEnabled&&i.push(this.addButtonNode),i.length<=1)return;t.preventDefault(),t.stopPropagation();let a,o=i.indexOf(document.activeElement);-1===o&&(o=this._currentIndex),"ArrowRight"===t.key&&"horizontal"===this._orientation||"ArrowDown"===t.key&&"vertical"===this._orientation?a=null!==(e=i[o+1])&&void 0!==e?e:i[0]:"ArrowLeft"===t.key&&"horizontal"===this._orientation||"ArrowUp"===t.key&&"vertical"===this._orientation?a=null!==(r=i[o-1])&&void 0!==r?r:i[i.length-1]:"Home"===t.key?a=i[0]:"End"===t.key&&(a=i[i.length-1]),a&&(null===(n=i[o])||void 0===n||n.setAttribute("tabindex","-1"),a?.setAttribute("tabindex","0"),a.focus())}}_evtPointerDown(t){if(0!==t.button&&1!==t.button||this._dragData||t.target.classList.contains("lm-TabBar-tabInput"))return;let e=this.addButtonEnabled&&this.addButtonNode.contains(t.target),r=this.contentNode.children,n=b.ArrayExt.findFirstIndex(r,(e=>i.hitTest(e,t.clientX,t.clientY)));if(-1===n&&!e||(t.preventDefault(),t.stopPropagation(),this._dragData={tab:r[n],index:n,pressX:t.clientX,pressY:t.clientY,tabPos:-1,tabSize:-1,tabPressPos:-1,targetIndex:-1,tabLayout:null,contentRect:null,override:null,dragActive:!1,dragAborted:!1,detachRequested:!1},this.document.addEventListener("pointerup",this,!0),1===t.button||e))return;let a=r[n].querySelector(this.renderer.closeIconSelector);a&&a.contains(t.target)||(this.tabsMovable&&(this.document.addEventListener("pointermove",this,!0),this.document.addEventListener("keydown",this,!0),this.document.addEventListener("contextmenu",this,!0)),this.allowDeselect&&this.currentIndex===n?this.currentIndex=-1:this.currentIndex=n,-1!==this.currentIndex&&this._tabActivateRequested.emit({index:this.currentIndex,title:this.currentTitle}))}_evtPointerMove(t){let e=this._dragData;if(!e)return;t.preventDefault(),t.stopPropagation();let r=this.contentNode.children;if(e.dragActive||Ct.dragExceeded(e,t)){if(!e.dragActive){let t=e.tab.getBoundingClientRect();"horizontal"===this._orientation?(e.tabPos=e.tab.offsetLeft,e.tabSize=t.width,e.tabPressPos=e.pressX-t.left):(e.tabPos=e.tab.offsetTop,e.tabSize=t.height,e.tabPressPos=e.pressY-t.top),e.tabPressOffset={x:e.pressX-t.left,y:e.pressY-t.top},e.tabLayout=Ct.snapTabLayout(r,this._orientation),e.contentRect=this.contentNode.getBoundingClientRect(),e.override=B.overrideCursor("default"),e.tab.classList.add("lm-mod-dragging"),this.addClass("lm-mod-dragging"),e.dragActive=!0}if(!e.detachRequested&&Ct.detachExceeded(e,t)){e.detachRequested=!0;let n=e.index,i=t.clientX,a=t.clientY,o=r[n],s=this._titles[n];if(this._tabDetachRequested.emit({index:n,title:s,tab:o,clientX:i,clientY:a,offset:e.tabPressOffset}),e.dragAborted)return}Ct.layoutTabs(r,e,t,this._orientation)}}_evtPointerUp(t){if(0!==t.button&&1!==t.button)return;let e=this._dragData;if(!e)return;if(t.preventDefault(),t.stopPropagation(),this.document.removeEventListener("pointermove",this,!0),this.document.removeEventListener("pointerup",this,!0),this.document.removeEventListener("keydown",this,!0),this.document.removeEventListener("contextmenu",this,!0),!e.dragActive){if(this._dragData=null,this.addButtonEnabled&&this.addButtonNode.contains(t.target))return void this._addRequested.emit(void 0);let r=this.contentNode.children,n=b.ArrayExt.findFirstIndex(r,(e=>i.hitTest(e,t.clientX,t.clientY)));if(n!==e.index)return;let a=this._titles[n];if(!a.closable)return;if(1===t.button)return void this._tabCloseRequested.emit({index:n,title:a});let o=r[n].querySelector(this.renderer.closeIconSelector);return o&&o.contains(t.target)?void this._tabCloseRequested.emit({index:n,title:a}):void 0}if(0!==t.button)return;Ct.finalizeTabPosition(e,this._orientation),e.tab.classList.remove("lm-mod-dragging");let r=Ct.parseTransitionDuration(e.tab);setTimeout((()=>{if(e.dragAborted)return;this._dragData=null,Ct.resetTabPositions(this.contentNode.children,this._orientation),e.override.dispose(),this.removeClass("lm-mod-dragging");let t=e.index,r=e.targetIndex;-1===r||t===r||(b.ArrayExt.move(this._titles,t,r),this._adjustCurrentForMove(t,r),this._tabMoved.emit({fromIndex:t,toIndex:r,title:this._titles[r]}),M.sendMessage(this,nt.Msg.UpdateRequest))}),r)}_releaseMouse(){let t=this._dragData;t&&(this._dragData=null,this.document.removeEventListener("pointermove",this,!0),this.document.removeEventListener("pointerup",this,!0),this.document.removeEventListener("keydown",this,!0),this.document.removeEventListener("contextmenu",this,!0),t.dragAborted=!0,t.dragActive&&(Ct.resetTabPositions(this.contentNode.children,this._orientation),t.override.dispose(),t.tab.classList.remove("lm-mod-dragging"),this.removeClass("lm-mod-dragging")))}_adjustCurrentForInsert(t,e){let r=this.currentTitle,n=this._currentIndex,i=this.insertBehavior;if("select-tab"===i||"select-tab-if-needed"===i&&-1===n)return this._currentIndex=t,this._previousTitle=r,void this._currentChanged.emit({previousIndex:n,previousTitle:r,currentIndex:t,currentTitle:e});n>=t&&this._currentIndex++}_adjustCurrentForMove(t,e){this._currentIndex===t?this._currentIndex=e:this._currentIndex=e?this._currentIndex++:this._currentIndex>t&&this._currentIndex<=e&&this._currentIndex--}_adjustCurrentForRemove(t,e){let r=this._currentIndex,n=this.removeBehavior;if(r===t)return 0===this._titles.length?(this._currentIndex=-1,void this._currentChanged.emit({previousIndex:t,previousTitle:e,currentIndex:-1,currentTitle:null})):"select-tab-after"===n?(this._currentIndex=Math.min(t,this._titles.length-1),void this._currentChanged.emit({previousIndex:t,previousTitle:e,currentIndex:this._currentIndex,currentTitle:this.currentTitle})):"select-tab-before"===n?(this._currentIndex=Math.max(0,t-1),void this._currentChanged.emit({previousIndex:t,previousTitle:e,currentIndex:this._currentIndex,currentTitle:this.currentTitle})):"select-previous-tab"===n?(this._previousTitle?(this._currentIndex=this._titles.indexOf(this._previousTitle),this._previousTitle=null):this._currentIndex=Math.min(t,this._titles.length-1),void this._currentChanged.emit({previousIndex:t,previousTitle:e,currentIndex:this._currentIndex,currentTitle:this.currentTitle})):(this._currentIndex=-1,void this._currentChanged.emit({previousIndex:t,previousTitle:e,currentIndex:-1,currentTitle:null}));r>t&&this._currentIndex--}_onTitleChanged(t){this.update()}};!function(t){class e{constructor(){this.closeIconSelector=".lm-TabBar-tabCloseIcon",this._tabID=0,this._tabKeys=new WeakMap,this._uuid=++e._nInstance}renderTab(t){let e=t.title.caption,r=this.createTabKey(t),n=r,i=this.createTabStyle(t),a=this.createTabClass(t),o=this.createTabDataset(t),s=this.createTabARIA(t);return t.title.closable?J.li({id:n,key:r,className:a,title:e,style:i,dataset:o,...s},this.renderIcon(t),this.renderLabel(t),this.renderCloseIcon(t)):J.li({id:n,key:r,className:a,title:e,style:i,dataset:o,...s},this.renderIcon(t),this.renderLabel(t))}renderIcon(t){let{title:e}=t,r=this.createIconClass(t);return J.div({className:r},e.icon,e.iconLabel)}renderLabel(t){return J.div({className:"lm-TabBar-tabLabel"},t.title.label)}renderCloseIcon(t){return J.div({className:"lm-TabBar-tabCloseIcon"})}createTabKey(t){let e=this._tabKeys.get(t.title);return void 0===e&&(e=`tab-key-${this._uuid}-${this._tabID++}`,this._tabKeys.set(t.title,e)),e}createTabStyle(t){return{zIndex:`${t.zIndex}`}}createTabClass(t){let e="lm-TabBar-tab";return t.title.className&&(e+=` ${t.title.className}`),t.title.closable&&(e+=" lm-mod-closable"),t.current&&(e+=" lm-mod-current"),e}createTabDataset(t){return t.title.dataset}createTabARIA(t){var e;return{role:"tab","aria-selected":t.current.toString(),tabindex:`${null!==(e=t.tabIndex)&&void 0!==e?e:"-1"}`}}createIconClass(t){let e="lm-TabBar-tabIcon",r=t.title.iconClass;return r?`${e} ${r}`:e}}e._nInstance=0,t.Renderer=e,t.defaultRenderer=new e,t.addButtonSelector=".lm-TabBar-addButton"}(Lt||(Lt={})),function(t){t.DRAG_THRESHOLD=5,t.DETACH_THRESHOLD=20,t.createNode=function(){let t=document.createElement("div"),e=document.createElement("ul");e.setAttribute("role","tablist"),e.className="lm-TabBar-content",t.appendChild(e);let r=document.createElement("div");return r.className="lm-TabBar-addButton lm-mod-hidden",r.setAttribute("tabindex","-1"),r.setAttribute("role","button"),t.appendChild(r),t},t.asTitle=function(t){return t instanceof rt?t:new rt(t)},t.parseTransitionDuration=function(t){let e=window.getComputedStyle(t);return 1e3*(parseFloat(e.transitionDuration)||0)},t.snapTabLayout=function(t,e){let r=new Array(t.length);for(let n=0,i=t.length;n=t.DRAG_THRESHOLD||i>=t.DRAG_THRESHOLD},t.detachExceeded=function(e,r){let n=e.contentRect;return r.clientX=n.right+t.DETACH_THRESHOLD||r.clientY=n.bottom+t.DETACH_THRESHOLD},t.layoutTabs=function(t,e,r,n){let i,a,o,s;"horizontal"===n?(i=e.pressX,a=r.clientX-e.contentRect.left,o=r.clientX,s=e.contentRect.width):(i=e.pressY,a=r.clientY-e.contentRect.top,o=r.clientY,s=e.contentRect.height);let l=e.index,c=a-e.tabPressPos,u=c+e.tabSize;for(let r=0,a=t.length;r>1);if(re.index&&u>p)a=-e.tabSize-h.margin+"px",l=Math.max(l,r);else if(r===e.index){let t=o-i,r=s-(e.tabPos+e.tabSize);a=`${Math.max(-e.tabPos,Math.min(t,r))}px`}else a="";"horizontal"===n?t[r].style.left=a:t[r].style.top=a}e.targetIndex=l},t.finalizeTabPosition=function(t,e){let r,n;if(r="horizontal"===e?t.contentRect.width:t.contentRect.height,t.targetIndex===t.index)n=0;else if(t.targetIndex>t.index){let e=t.tabLayout[t.targetIndex];n=e.pos+e.size-t.tabSize-t.tabPos}else n=t.tabLayout[t.targetIndex].pos-t.tabPos;let i=r-(t.tabPos+t.tabSize),a=Math.max(-t.tabPos,Math.min(n,i));"horizontal"===e?t.tab.style.left=`${a}px`:t.tab.style.top=`${a}px`},t.resetTabPositions=function(t,e){for(let r of t)"horizontal"===e?r.style.left="":r.style.top=""}}(Ct||(Ct={}));var Pt,zt=class extends it{constructor(t){super(),this._spacing=4,this._dirty=!1,this._root=null,this._box=null,this._items=new Map,this.renderer=t.renderer,void 0!==t.spacing&&(this._spacing=ut.clampDimension(t.spacing)),this._document=t.document||document,this._hiddenMode=void 0!==t.hiddenMode?t.hiddenMode:nt.HiddenMode.Display}dispose(){let t=this[Symbol.iterator]();this._items.forEach((t=>{t.dispose()})),this._box=null,this._root=null,this._items.clear();for(let e of t)e.dispose();super.dispose()}get hiddenMode(){return this._hiddenMode}set hiddenMode(t){if(this._hiddenMode!==t){this._hiddenMode=t;for(let t of this.tabBars())if(t.titles.length>1)for(let e of t.titles)e.owner.hiddenMode=this._hiddenMode}}get spacing(){return this._spacing}set spacing(t){t=ut.clampDimension(t),this._spacing!==t&&(this._spacing=t,this.parent&&this.parent.fit())}get isEmpty(){return null===this._root}[Symbol.iterator](){return this._root?this._root.iterAllWidgets():(0,b.empty)()}widgets(){return this._root?this._root.iterUserWidgets():(0,b.empty)()}selectedWidgets(){return this._root?this._root.iterSelectedWidgets():(0,b.empty)()}tabBars(){return this._root?this._root.iterTabBars():(0,b.empty)()}handles(){return this._root?this._root.iterHandles():(0,b.empty)()}moveHandle(t,e,r){let n=t.classList.contains("lm-mod-hidden");if(!this._root||n)return;let i,a=this._root.findSplitNode(t);a&&(i="horizontal"===a.node.orientation?e-t.offsetLeft:r-t.offsetTop,0!==i&&(a.node.holdSizes(),Q.adjust(a.node.sizers,a.index,i),this.parent&&this.parent.update()))}saveLayout(){return this._root?(this._root.holdAllSizes(),{main:this._root.createConfig()}):{main:null}}restoreLayout(t){let e,r=new Set;e=t.main?Pt.normalizeAreaConfig(t.main,r):null;let n=this.widgets(),i=this.tabBars(),a=this.handles();this._root=null;for(let t of n)r.has(t)||(t.parent=null);for(let t of i)t.dispose();for(let t of a)t.parentNode&&t.parentNode.removeChild(t);for(let t of r)t.parent=this.parent;this._root=e?Pt.realizeAreaConfig(e,{createTabBar:t=>this._createTabBar(),createHandle:()=>this._createHandle()},this._document):null,this.parent&&(r.forEach((t=>{this.attachWidget(t)})),this.parent.fit())}addWidget(t,e={}){let r=e.ref||null,n=e.mode||"tab-after",i=null;if(this._root&&r&&(i=this._root.findTabNode(r)),r&&!i)throw new Error("Reference widget is not in the layout.");switch(t.parent=this.parent,n){case"tab-after":this._insertTab(t,r,i,!0);break;case"tab-before":this._insertTab(t,r,i,!1);break;case"split-top":this._insertSplit(t,r,i,"vertical",!1);break;case"split-left":this._insertSplit(t,r,i,"horizontal",!1);break;case"split-right":this._insertSplit(t,r,i,"horizontal",!0);break;case"split-bottom":this._insertSplit(t,r,i,"vertical",!0);break;case"merge-top":this._insertSplit(t,r,i,"vertical",!1,!0);break;case"merge-left":this._insertSplit(t,r,i,"horizontal",!1,!0);break;case"merge-right":this._insertSplit(t,r,i,"horizontal",!0,!0);break;case"merge-bottom":this._insertSplit(t,r,i,"vertical",!0,!0)}this.parent&&(this.attachWidget(t),this.parent.fit())}removeWidget(t){this._removeWidget(t),this.parent&&(this.detachWidget(t),this.parent.fit())}hitTestTabAreas(t,e){if(!this._root||!this.parent||!this.parent.isVisible)return null;this._box||(this._box=i.boxSizing(this.parent.node));let r=this.parent.node.getBoundingClientRect(),n=t-r.left-this._box.borderLeft,a=e-r.top-this._box.borderTop,o=this._root.hitTestTabNodes(n,a);if(!o)return null;let{tabBar:s,top:l,left:c,width:u,height:h}=o,p=this._box.borderLeft+this._box.borderRight,f=this._box.borderTop+this._box.borderBottom;return{tabBar:s,x:n,y:a,top:l,left:c,right:r.width-p-(c+u),bottom:r.height-f-(l+h),width:u,height:h}}init(){super.init();for(let t of this)this.attachWidget(t);for(let t of this.handles())this.parent.node.appendChild(t);this.parent.fit()}attachWidget(t){this.parent.node!==t.node.parentNode&&(this._items.set(t,new ot(t)),this.parent.isAttached&&M.sendMessage(t,nt.Msg.BeforeAttach),this.parent.node.appendChild(t.node),this.parent.isAttached&&M.sendMessage(t,nt.Msg.AfterAttach))}detachWidget(t){if(this.parent.node!==t.node.parentNode)return;this.parent.isAttached&&M.sendMessage(t,nt.Msg.BeforeDetach),this.parent.node.removeChild(t.node),this.parent.isAttached&&M.sendMessage(t,nt.Msg.AfterDetach);let e=this._items.get(t);e&&(this._items.delete(t),e.dispose())}onBeforeShow(t){super.onBeforeShow(t),this.parent.update()}onBeforeAttach(t){super.onBeforeAttach(t),this.parent.fit()}onChildShown(t){this.parent.fit()}onChildHidden(t){this.parent.fit()}onResize(t){this.parent.isVisible&&this._update(t.width,t.height)}onUpdateRequest(t){this.parent.isVisible&&this._update(-1,-1)}onFitRequest(t){this.parent.isAttached&&this._fit()}_removeWidget(t){if(!this._root)return;let e=this._root.findTabNode(t);if(!e)return;if(Pt.removeAria(t),e.tabBar.titles.length>1)return e.tabBar.removeTab(t.title),void(this._hiddenMode===nt.HiddenMode.Scale&&1==e.tabBar.titles.length&&(e.tabBar.titles[0].owner.hiddenMode=nt.HiddenMode.Display));if(e.tabBar.dispose(),this._root===e)return void(this._root=null);this._root.holdAllSizes();let r=e.parent;e.parent=null;let n=b.ArrayExt.removeFirstOf(r.children,e),i=b.ArrayExt.removeAt(r.handles,n);if(b.ArrayExt.removeAt(r.sizers,n),i.parentNode&&i.parentNode.removeChild(i),r.children.length>1)return void r.syncHandles();let a=r.parent;r.parent=null;let o=r.children[0],s=r.handles[0];if(r.children.length=0,r.handles.length=0,r.sizers.length=0,s.parentNode&&s.parentNode.removeChild(s),this._root===r)return o.parent=null,void(this._root=o);let l=a,c=l.children.indexOf(r);if(o instanceof Pt.TabLayoutNode)return o.parent=l,void(l.children[c]=o);let u=b.ArrayExt.removeAt(l.handles,c);b.ArrayExt.removeAt(l.children,c),b.ArrayExt.removeAt(l.sizers,c),u.parentNode&&u.parentNode.removeChild(u);for(let t=0,e=o.children.length;t=r.length)&&(n=0),{type:"tab-area",widgets:r,currentIndex:n}}(e,r):function(e,r){let n=e.orientation,i=[],a=[];for(let o=0,s=e.children.length;o{let l=i(n,r,a),c=e(t.sizes[s]),u=r.createHandle();o.children.push(l),o.handles.push(u),o.sizers.push(c),l.parent=o})),o.syncHandles(),o.normalizeSizes(),o}(a,o,s),l};class r{constructor(t){this.parent=null,this._top=0,this._left=0,this._width=0,this._height=0;let e=new tt,r=new tt;e.stretch=0,r.stretch=1,this.tabBar=t,this.sizers=[e,r]}get top(){return this._top}get left(){return this._left}get width(){return this._width}get height(){return this._height}*iterAllWidgets(){yield this.tabBar,yield*this.iterUserWidgets()}*iterUserWidgets(){for(let t of this.tabBar.titles)yield t.owner}*iterSelectedWidgets(){let t=this.tabBar.currentTitle;t&&(yield t.owner)}*iterTabBars(){yield this.tabBar}*iterHandles(){}findTabNode(t){return-1!==this.tabBar.titles.indexOf(t.title)?this:null}findSplitNode(t){return null}findFirstTabNode(){return this}hitTestTabNodes(t,e){return t=this._left+this._width||e=this._top+this._height?null:this}createConfig(){return{type:"tab-area",widgets:this.tabBar.titles.map((t=>t.owner)),currentIndex:this.tabBar.currentIndex}}holdAllSizes(){}fit(t,e){let r=0,n=0,i=e.get(this.tabBar),a=this.tabBar.currentTitle,o=a?e.get(a.owner):void 0,[s,l]=this.sizers;return i&&i.fit(),o&&o.fit(),i&&!i.isHidden?(r=Math.max(r,i.minWidth),n+=i.minHeight,s.minSize=i.minHeight,s.maxSize=i.maxHeight):(s.minSize=0,s.maxSize=0),o&&!o.isHidden?(r=Math.max(r,o.minWidth),n+=o.minHeight,l.minSize=o.minHeight,l.maxSize=1/0):(l.minSize=0,l.maxSize=1/0),{minWidth:r,minHeight:n,maxWidth:1/0,maxHeight:1/0}}update(t,e,r,n,i,a){this._top=e,this._left=t,this._width=r,this._height=n;let o=a.get(this.tabBar),s=this.tabBar.currentTitle,l=s?a.get(s.owner):void 0;if(Q.calc(this.sizers,n),o&&!o.isHidden){let n=this.sizers[0].size;o.update(t,e,r,n),e+=n}if(l&&!l.isHidden){let n=this.sizers[1].size;l.update(t,e,r,n)}}}t.TabLayoutNode=r;class n{constructor(t){this.parent=null,this.normalized=!1,this.children=[],this.sizers=[],this.handles=[],this.orientation=t}*iterAllWidgets(){for(let t of this.children)yield*t.iterAllWidgets()}*iterUserWidgets(){for(let t of this.children)yield*t.iterUserWidgets()}*iterSelectedWidgets(){for(let t of this.children)yield*t.iterSelectedWidgets()}*iterTabBars(){for(let t of this.children)yield*t.iterTabBars()}*iterHandles(){yield*this.handles;for(let t of this.children)yield*t.iterHandles()}findTabNode(t){for(let e=0,r=this.children.length;et.createConfig())),sizes:e}}syncHandles(){this.handles.forEach(((t,e)=>{t.setAttribute("data-orientation",this.orientation),e===this.handles.length-1?t.classList.add("lm-mod-hidden"):t.classList.remove("lm-mod-hidden")}))}holdSizes(){for(let t of this.sizers)t.sizeHint=t.size}holdAllSizes(){for(let t of this.children)t.holdAllSizes();this.holdSizes()}normalizeSizes(){let t=this.sizers.length;if(0===t)return;this.holdSizes();let e=this.sizers.reduce(((t,e)=>t+e.sizeHint),0);if(0===e)for(let e of this.sizers)e.size=e.sizeHint=1/t;else for(let t of this.sizers)t.size=t.sizeHint/=e;this.normalized=!0}createNormalizedSizes(){let t=this.sizers.length;if(0===t)return[];let e=this.sizers.map((t=>t.size)),r=e.reduce(((t,e)=>t+e),0);if(0===r)for(let r=e.length-1;r>-1;r--)e[r]=1/t;else for(let t=e.length-1;t>-1;t--)e[t]/=r;return e}fit(t,e){let r="horizontal"===this.orientation,n=Math.max(0,this.children.length-1)*t,i=r?n:0,a=r?0:n;for(let n=0,o=this.children.length;nthis._createTabBar(),createHandle:()=>this._createHandle()};this.layout=new zt({document:this._document,renderer:r,spacing:e.spacing,hiddenMode:e.hiddenMode}),this.overlay=e.overlay||new t.Overlay,this.node.appendChild(this.overlay.node)}dispose(){this._releaseMouse(),this.overlay.hide(0),this._drag&&this._drag.dispose(),super.dispose()}get hiddenMode(){return this.layout.hiddenMode}set hiddenMode(t){this.layout.hiddenMode=t}get layoutModified(){return this._layoutModified}get addRequested(){return this._addRequested}get renderer(){return this.layout.renderer}get spacing(){return this.layout.spacing}set spacing(t){this.layout.spacing=t}get mode(){return this._mode}set mode(t){if(this._mode===t)return;this._mode=t,this.dataset.mode=t;let e=this.layout;switch(t){case"multiple-document":for(let t of e.tabBars())t.show();break;case"single-document":e.restoreLayout(Dt.createSingleDocumentConfig(this));break;default:throw"unreachable"}M.postMessage(this,Dt.LayoutModified)}get tabsMovable(){return this._tabsMovable}set tabsMovable(t){this._tabsMovable=t;for(let e of this.tabBars())e.tabsMovable=t}get tabsConstrained(){return this._tabsConstrained}set tabsConstrained(t){this._tabsConstrained=t}get addButtonEnabled(){return this._addButtonEnabled}set addButtonEnabled(t){this._addButtonEnabled=t;for(let e of this.tabBars())e.addButtonEnabled=t}get isEmpty(){return this.layout.isEmpty}*widgets(){yield*this.layout.widgets()}*selectedWidgets(){yield*this.layout.selectedWidgets()}*tabBars(){yield*this.layout.tabBars()}*handles(){yield*this.layout.handles()}selectWidget(t){let e=(0,b.find)(this.tabBars(),(e=>-1!==e.titles.indexOf(t.title)));if(!e)throw new Error("Widget is not contained in the dock panel.");e.currentTitle=t.title}activateWidget(t){this.selectWidget(t),t.activate()}saveLayout(){return this.layout.saveLayout()}restoreLayout(t){this._mode="multiple-document",this.layout.restoreLayout(t),(a.IS_EDGE||a.IS_IE)&&M.flush(),M.postMessage(this,Dt.LayoutModified)}addWidget(t,e={}){"single-document"===this._mode?this.layout.addWidget(t):this.layout.addWidget(t,e),M.postMessage(this,Dt.LayoutModified)}processMessage(t){"layout-modified"===t.type?this._layoutModified.emit(void 0):super.processMessage(t)}handleEvent(t){switch(t.type){case"lm-dragenter":this._evtDragEnter(t);break;case"lm-dragleave":this._evtDragLeave(t);break;case"lm-dragover":this._evtDragOver(t);break;case"lm-drop":this._evtDrop(t);break;case"pointerdown":this._evtPointerDown(t);break;case"pointermove":this._evtPointerMove(t);break;case"pointerup":this._evtPointerUp(t);break;case"keydown":this._evtKeyDown(t);break;case"contextmenu":t.preventDefault(),t.stopPropagation()}}onBeforeAttach(t){this.node.addEventListener("lm-dragenter",this),this.node.addEventListener("lm-dragleave",this),this.node.addEventListener("lm-dragover",this),this.node.addEventListener("lm-drop",this),this.node.addEventListener("pointerdown",this)}onAfterDetach(t){this.node.removeEventListener("lm-dragenter",this),this.node.removeEventListener("lm-dragleave",this),this.node.removeEventListener("lm-dragover",this),this.node.removeEventListener("lm-drop",this),this.node.removeEventListener("pointerdown",this),this._releaseMouse()}onChildAdded(t){Dt.isGeneratedTabBarProperty.get(t.child)||t.child.addClass("lm-DockPanel-widget")}onChildRemoved(t){Dt.isGeneratedTabBarProperty.get(t.child)||(t.child.removeClass("lm-DockPanel-widget"),M.postMessage(this,Dt.LayoutModified))}_evtDragEnter(t){t.mimeData.hasData("application/vnd.lumino.widget-factory")&&(t.preventDefault(),t.stopPropagation())}_evtDragLeave(t){t.preventDefault(),(!this._tabsConstrained||t.source===this)&&(t.stopPropagation(),this.overlay.hide(1))}_evtDragOver(t){t.preventDefault(),this._tabsConstrained&&t.source!==this||"invalid"===this._showOverlay(t.clientX,t.clientY)?t.dropAction="none":(t.stopPropagation(),t.dropAction=t.proposedAction)}_evtDrop(t){if(t.preventDefault(),this.overlay.hide(0),"none"===t.proposedAction)return void(t.dropAction="none");let{clientX:e,clientY:r}=t,{zone:n,target:i}=Dt.findDropTarget(this,e,r,this._edges);if(this._tabsConstrained&&t.source!==this||"invalid"===n)return void(t.dropAction="none");let a=t.mimeData.getData("application/vnd.lumino.widget-factory");if("function"!=typeof a)return void(t.dropAction="none");let o=a();if(!(o instanceof nt))return void(t.dropAction="none");if(o.contains(this))return void(t.dropAction="none");let s=i?Dt.getDropRef(i.tabBar):null;switch(n){case"root-all":this.addWidget(o);break;case"root-top":this.addWidget(o,{mode:"split-top"});break;case"root-left":this.addWidget(o,{mode:"split-left"});break;case"root-right":this.addWidget(o,{mode:"split-right"});break;case"root-bottom":this.addWidget(o,{mode:"split-bottom"});break;case"widget-all":case"widget-tab":this.addWidget(o,{mode:"tab-after",ref:s});break;case"widget-top":this.addWidget(o,{mode:"split-top",ref:s});break;case"widget-left":this.addWidget(o,{mode:"split-left",ref:s});break;case"widget-right":this.addWidget(o,{mode:"split-right",ref:s});break;case"widget-bottom":this.addWidget(o,{mode:"split-bottom",ref:s});break;default:throw"unreachable"}t.dropAction=t.proposedAction,t.stopPropagation(),this.activateWidget(o)}_evtKeyDown(t){t.preventDefault(),t.stopPropagation(),27===t.keyCode&&(this._releaseMouse(),M.postMessage(this,Dt.LayoutModified))}_evtPointerDown(t){if(0!==t.button)return;let e=this.layout,r=t.target,n=(0,b.find)(e.handles(),(t=>t.contains(r)));if(!n)return;t.preventDefault(),t.stopPropagation(),this._document.addEventListener("keydown",this,!0),this._document.addEventListener("pointerup",this,!0),this._document.addEventListener("pointermove",this,!0),this._document.addEventListener("contextmenu",this,!0);let i=n.getBoundingClientRect(),a=t.clientX-i.left,o=t.clientY-i.top,s=window.getComputedStyle(n),l=B.overrideCursor(s.cursor,this._document);this._pressData={handle:n,deltaX:a,deltaY:o,override:l}}_evtPointerMove(t){if(!this._pressData)return;t.preventDefault(),t.stopPropagation();let e=this.node.getBoundingClientRect(),r=t.clientX-e.left-this._pressData.deltaX,n=t.clientY-e.top-this._pressData.deltaY;this.layout.moveHandle(this._pressData.handle,r,n)}_evtPointerUp(t){0===t.button&&(t.preventDefault(),t.stopPropagation(),this._releaseMouse(),M.postMessage(this,Dt.LayoutModified))}_releaseMouse(){this._pressData&&(this._pressData.override.dispose(),this._pressData=null,this._document.removeEventListener("keydown",this,!0),this._document.removeEventListener("pointerup",this,!0),this._document.removeEventListener("pointermove",this,!0),this._document.removeEventListener("contextmenu",this,!0))}_showOverlay(t,e){let{zone:r,target:n}=Dt.findDropTarget(this,t,e,this._edges);if("invalid"===r)return this.overlay.hide(100),r;let a,o,s,l,c=i.boxSizing(this.node),u=this.node.getBoundingClientRect();switch(r){case"root-all":a=c.paddingTop,o=c.paddingLeft,s=c.paddingRight,l=c.paddingBottom;break;case"root-top":a=c.paddingTop,o=c.paddingLeft,s=c.paddingRight,l=u.height*Dt.GOLDEN_RATIO;break;case"root-left":a=c.paddingTop,o=c.paddingLeft,s=u.width*Dt.GOLDEN_RATIO,l=c.paddingBottom;break;case"root-right":a=c.paddingTop,o=u.width*Dt.GOLDEN_RATIO,s=c.paddingRight,l=c.paddingBottom;break;case"root-bottom":a=u.height*Dt.GOLDEN_RATIO,o=c.paddingLeft,s=c.paddingRight,l=c.paddingBottom;break;case"widget-all":a=n.top,o=n.left,s=n.right,l=n.bottom;break;case"widget-top":a=n.top,o=n.left,s=n.right,l=n.bottom+n.height/2;break;case"widget-left":a=n.top,o=n.left,s=n.right+n.width/2,l=n.bottom;break;case"widget-right":a=n.top,o=n.left+n.width/2,s=n.right,l=n.bottom;break;case"widget-bottom":a=n.top+n.height/2,o=n.left,s=n.right,l=n.bottom;break;case"widget-tab":{let t=n.tabBar.node.getBoundingClientRect().height;a=n.top,o=n.left,s=n.right,l=n.bottom+n.height-t;break}default:throw"unreachable"}return this.overlay.show({top:a,left:o,right:s,bottom:l}),r}_createTabBar(){let t=this._renderer.createTabBar(this._document);return Dt.isGeneratedTabBarProperty.set(t,!0),"single-document"===this._mode&&t.hide(),t.tabsMovable=this._tabsMovable,t.allowDeselect=!1,t.addButtonEnabled=this._addButtonEnabled,t.removeBehavior="select-previous-tab",t.insertBehavior="select-tab-if-needed",t.tabMoved.connect(this._onTabMoved,this),t.currentChanged.connect(this._onCurrentChanged,this),t.tabCloseRequested.connect(this._onTabCloseRequested,this),t.tabDetachRequested.connect(this._onTabDetachRequested,this),t.tabActivateRequested.connect(this._onTabActivateRequested,this),t.addRequested.connect(this._onTabAddRequested,this),t}_createHandle(){return this._renderer.createHandle()}_onTabMoved(){M.postMessage(this,Dt.LayoutModified)}_onCurrentChanged(t,e){let{previousTitle:r,currentTitle:n}=e;r&&r.owner.hide(),n&&n.owner.show(),(a.IS_EDGE||a.IS_IE)&&M.flush(),M.postMessage(this,Dt.LayoutModified)}_onTabAddRequested(t){this._addRequested.emit(t)}_onTabActivateRequested(t,e){e.title.owner.activate()}_onTabCloseRequested(t,e){e.title.owner.close()}_onTabDetachRequested(t,e){if(this._drag)return;t.releaseMouse();let{title:r,tab:n,clientX:i,clientY:a,offset:o}=e,s=new w.MimeData;s.setData("application/vnd.lumino.widget-factory",(()=>r.owner));let l=n.cloneNode(!0);o&&(l.style.top=`-${o.y}px`,l.style.left=`-${o.x}px`),this._drag=new B({document:this._document,mimeData:s,dragImage:l,proposedAction:"move",supportedActions:"move",source:this}),n.classList.add("lm-mod-hidden"),this._drag.start(i,a).then((()=>{this._drag=null,n.classList.remove("lm-mod-hidden")}))}};!function(t){t.Overlay=class{constructor(){this._timer=-1,this._hidden=!0,this.node=document.createElement("div"),this.node.classList.add("lm-DockPanel-overlay"),this.node.classList.add("lm-mod-hidden"),this.node.style.position="absolute",this.node.style.contain="strict"}show(t){let e=this.node.style;e.top=`${t.top}px`,e.left=`${t.left}px`,e.right=`${t.right}px`,e.bottom=`${t.bottom}px`,clearTimeout(this._timer),this._timer=-1,this._hidden&&(this._hidden=!1,this.node.classList.remove("lm-mod-hidden"))}hide(t){if(!this._hidden){if(t<=0)return clearTimeout(this._timer),this._timer=-1,this._hidden=!0,void this.node.classList.add("lm-mod-hidden");-1===this._timer&&(this._timer=window.setTimeout((()=>{this._timer=-1,this._hidden=!0,this.node.classList.add("lm-mod-hidden")}),t))}}};class e{createTabBar(t){let e=new Lt({document:t});return e.addClass("lm-DockPanel-tabBar"),e}createHandle(){let t=document.createElement("div");return t.className="lm-DockPanel-handle",t}}t.Renderer=e,t.defaultRenderer=new e}(Ot||(Ot={})),function(t){t.GOLDEN_RATIO=.618,t.DEFAULT_EDGES={top:12,right:40,bottom:40,left:40},t.LayoutModified=new E("layout-modified"),t.isGeneratedTabBarProperty=new I({name:"isGeneratedTabBar",create:()=>!1}),t.createSingleDocumentConfig=function(t){if(t.isEmpty)return{main:null};let e=Array.from(t.widgets()),r=t.selectedWidgets().next().value,n=r?e.indexOf(r):-1;return{main:{type:"tab-area",widgets:e,currentIndex:n}}},t.findDropTarget=function(t,e,r,n){if(!i.hitTest(t.node,e,r))return{zone:"invalid",target:null};let a=t.layout;if(a.isEmpty)return{zone:"root-all",target:null};if("multiple-document"===t.mode){let i=t.node.getBoundingClientRect(),a=e-i.left+1,o=r-i.top+1,s=i.right-e,l=i.bottom-r;switch(Math.min(o,s,l,a)){case o:if(op&&c>p&&l>f&&u>f)return{zone:"widget-all",target:o};switch(s/=p,l/=f,c/=p,u/=f,Math.min(s,l,c,u)){case s:h="widget-left";break;case l:h="widget-top";break;case c:h="widget-right";break;case u:h="widget-bottom";break;default:throw"unreachable"}return{zone:h,target:o}},t.getDropRef=function(t){return 0===t.titles.length?null:t.currentTitle?t.currentTitle.owner:t.titles[t.titles.length-1].owner}}(Dt||(Dt={}));var Rt,Ft=class t extends it{constructor(t={}){super(t),this._dirty=!1,this._rowSpacing=4,this._columnSpacing=4,this._items=[],this._rowStarts=[],this._columnStarts=[],this._rowSizers=[new tt],this._columnSizers=[new tt],this._box=null,void 0!==t.rowCount&&Rt.reallocSizers(this._rowSizers,t.rowCount),void 0!==t.columnCount&&Rt.reallocSizers(this._columnSizers,t.columnCount),void 0!==t.rowSpacing&&(this._rowSpacing=Rt.clampValue(t.rowSpacing)),void 0!==t.columnSpacing&&(this._columnSpacing=Rt.clampValue(t.columnSpacing))}dispose(){for(let t of this._items){let e=t.widget;t.dispose(),e.dispose()}this._box=null,this._items.length=0,this._rowStarts.length=0,this._rowSizers.length=0,this._columnStarts.length=0,this._columnSizers.length=0,super.dispose()}get rowCount(){return this._rowSizers.length}set rowCount(t){t!==this.rowCount&&(Rt.reallocSizers(this._rowSizers,t),this.parent&&this.parent.fit())}get columnCount(){return this._columnSizers.length}set columnCount(t){t!==this.columnCount&&(Rt.reallocSizers(this._columnSizers,t),this.parent&&this.parent.fit())}get rowSpacing(){return this._rowSpacing}set rowSpacing(t){t=Rt.clampValue(t),this._rowSpacing!==t&&(this._rowSpacing=t,this.parent&&this.parent.fit())}get columnSpacing(){return this._columnSpacing}set columnSpacing(t){t=Rt.clampValue(t),this._columnSpacing!==t&&(this._columnSpacing=t,this.parent&&this.parent.fit())}rowStretch(t){let e=this._rowSizers[t];return e?e.stretch:-1}setRowStretch(t,e){let r=this._rowSizers[t];r&&(e=Rt.clampValue(e),r.stretch!==e&&(r.stretch=e,this.parent&&this.parent.update()))}columnStretch(t){let e=this._columnSizers[t];return e?e.stretch:-1}setColumnStretch(t,e){let r=this._columnSizers[t];r&&(e=Rt.clampValue(e),r.stretch!==e&&(r.stretch=e,this.parent&&this.parent.update()))}*[Symbol.iterator](){for(let t of this._items)yield t.widget}addWidget(t){-1===b.ArrayExt.findFirstIndex(this._items,(e=>e.widget===t))&&(this._items.push(new ot(t)),this.parent&&this.attachWidget(t))}removeWidget(t){let e=b.ArrayExt.findFirstIndex(this._items,(e=>e.widget===t));if(-1===e)return;let r=b.ArrayExt.removeAt(this._items,e);this.parent&&this.detachWidget(t),r.dispose()}init(){super.init();for(let t of this)this.attachWidget(t)}attachWidget(t){this.parent.isAttached&&M.sendMessage(t,nt.Msg.BeforeAttach),this.parent.node.appendChild(t.node),this.parent.isAttached&&M.sendMessage(t,nt.Msg.AfterAttach),this.parent.fit()}detachWidget(t){this.parent.isAttached&&M.sendMessage(t,nt.Msg.BeforeDetach),this.parent.node.removeChild(t.node),this.parent.isAttached&&M.sendMessage(t,nt.Msg.AfterDetach),this.parent.fit()}onBeforeShow(t){super.onBeforeShow(t),this.parent.update()}onBeforeAttach(t){super.onBeforeAttach(t),this.parent.fit()}onChildShown(t){this.parent.fit()}onChildHidden(t){this.parent.fit()}onResize(t){this.parent.isVisible&&this._update(t.width,t.height)}onUpdateRequest(t){this.parent.isVisible&&this._update(-1,-1)}onFitRequest(t){this.parent.isAttached&&this._fit()}_fit(){for(let t=0,e=this.rowCount;t!t.isHidden));for(let t=0,r=e.length;t({row:0,column:0,rowSpan:1,columnSpan:1}),changed:function(t){t.parent&&t.parent.layout instanceof Ft&&t.parent.fit()}}),t.normalizeConfig=function(t){return{row:Math.max(0,Math.floor(t.row||0)),column:Math.max(0,Math.floor(t.column||0)),rowSpan:Math.max(1,Math.floor(t.rowSpan||0)),columnSpan:Math.max(1,Math.floor(t.columnSpan||0))}},t.clampValue=function(t){return Math.max(0,Math.floor(t))},t.rowSpanCmp=function(e,r){let n=t.cellConfigProperty.get(e.widget),i=t.cellConfigProperty.get(r.widget);return n.rowSpan-i.rowSpan},t.columnSpanCmp=function(e,r){let n=t.cellConfigProperty.get(e.widget),i=t.cellConfigProperty.get(r.widget);return n.columnSpan-i.columnSpan},t.reallocSizers=function(t,e){for(e=Math.max(1,Math.floor(e));t.lengthe&&(t.length=e)},t.distributeMin=function(t,e,r,n){if(r=n)return;let a=(n-i)/(r-e+1);for(let n=e;n<=r;++n)t[n].minSize+=a}}(Rt||(Rt={}));var Bt,jt,Nt=class t extends nt{constructor(e={}){super({node:Bt.createNode()}),this._activeIndex=-1,this._tabFocusIndex=0,this._menus=[],this._childMenu=null,this._overflowMenu=null,this._menuItemSizes=[],this._overflowIndex=-1,this.addClass("lm-MenuBar"),this.setFlag(nt.Flag.DisallowLayout),this.renderer=e.renderer||t.defaultRenderer,this._forceItemsPosition=e.forceItemsPosition||{forceX:!0,forceY:!0},this._overflowMenuOptions=e.overflowMenuOptions||{isVisible:!0}}dispose(){this._closeChildMenu(),this._menus.length=0,super.dispose()}get childMenu(){return this._childMenu}get overflowIndex(){return this._overflowIndex}get overflowMenu(){return this._overflowMenu}get contentNode(){return this.node.getElementsByClassName("lm-MenuBar-content")[0]}get activeMenu(){return this._menus[this._activeIndex]||null}set activeMenu(t){this.activeIndex=t?this._menus.indexOf(t):-1}get activeIndex(){return this._activeIndex}set activeIndex(t){(t<0||t>=this._menus.length)&&(t=-1),t>-1&&0===this._menus[t].items.length&&(t=-1),this._activeIndex!==t&&(this._activeIndex=t,this.update())}get menus(){return this._menus}openActiveMenu(){-1!==this._activeIndex&&(this._openChildMenu(),this._childMenu&&(this._childMenu.activeIndex=-1,this._childMenu.activateNextItem()))}addMenu(t,e=!0){this.insertMenu(this._menus.length,t,e)}insertMenu(t,e,r=!0){this._closeChildMenu();let n=this._menus.indexOf(e),i=Math.max(0,Math.min(t,this._menus.length));if(-1===n)return b.ArrayExt.insert(this._menus,i,e),e.addClass("lm-MenuBar-menu"),e.aboutToClose.connect(this._onMenuAboutToClose,this),e.menuRequested.connect(this._onMenuMenuRequested,this),e.title.changed.connect(this._onTitleChanged,this),void(r&&this.update());i===this._menus.length&&i--,n!==i&&(b.ArrayExt.move(this._menus,n,i),r&&this.update())}removeMenu(t,e=!0){this.removeMenuAt(this._menus.indexOf(t),e)}removeMenuAt(t,e=!0){this._closeChildMenu();let r=b.ArrayExt.removeAt(this._menus,t);r&&(r.aboutToClose.disconnect(this._onMenuAboutToClose,this),r.menuRequested.disconnect(this._onMenuMenuRequested,this),r.title.changed.disconnect(this._onTitleChanged,this),r.removeClass("lm-MenuBar-menu"),e&&this.update())}clearMenus(){if(0!==this._menus.length){this._closeChildMenu();for(let t of this._menus)t.aboutToClose.disconnect(this._onMenuAboutToClose,this),t.menuRequested.disconnect(this._onMenuMenuRequested,this),t.title.changed.disconnect(this._onTitleChanged,this),t.removeClass("lm-MenuBar-menu");this._menus.length=0,this.update()}}handleEvent(t){switch(t.type){case"keydown":this._evtKeyDown(t);break;case"mousedown":this._evtMouseDown(t);break;case"mousemove":this._evtMouseMove(t);break;case"focusout":this._evtFocusOut(t);break;case"contextmenu":t.preventDefault(),t.stopPropagation()}}onBeforeAttach(t){this.node.addEventListener("keydown",this),this.node.addEventListener("mousedown",this),this.node.addEventListener("mousemove",this),this.node.addEventListener("focusout",this),this.node.addEventListener("contextmenu",this)}onAfterDetach(t){this.node.removeEventListener("keydown",this),this.node.removeEventListener("mousedown",this),this.node.removeEventListener("mousemove",this),this.node.removeEventListener("focusout",this),this.node.removeEventListener("contextmenu",this),this._closeChildMenu()}onActivateRequest(t){this.isAttached&&this._focusItemAt(0)}onResize(t){this.update(),super.onResize(t)}onUpdateRequest(t){var e;let r=this._menus,n=this.renderer,i=this._activeIndex,a=this._tabFocusIndex>=0&&this._tabFocusIndex-1?this._overflowIndex:r.length,s=0,l=!1;o=null!==this._overflowMenu?o-1:o;let c=new Array(o);for(let t=0;t{this._tabFocusIndex=t,this.activeIndex=t}}),s+=this._menuItemSizes[t],r[t].title.label===this._overflowMenuOptions.title&&(l=!0,o--);if(this._overflowMenuOptions.isVisible)if(this._overflowIndex>-1&&!l){if(null===this._overflowMenu){let t=null!==(e=this._overflowMenuOptions.title)&&void 0!==e?e:"...";this._overflowMenu=new Et({commands:new W}),this._overflowMenu.title.label=t,this._overflowMenu.title.mnemonic=0,this.addMenu(this._overflowMenu,!1)}for(let t=r.length-2;t>=o;t--){let e=this.menus[t];e.title.mnemonic=0,this._overflowMenu.insertItem(0,{type:"submenu",submenu:e}),this.removeMenu(e,!1)}c[o]=n.renderItem({title:this._overflowMenu.title,active:o===i&&0!==r[o].items.length,tabbable:o===a,disabled:0===r[o].items.length,onfocus:()=>{this._tabFocusIndex=o,this.activeIndex=o}}),o++}else if(null!==this._overflowMenu){let t=this._overflowMenu.items,e=this.node.offsetWidth,i=this._overflowMenu.items.length;for(let l=0;lthis._menuItemSizes[i]){let e=t[0].submenu;this._overflowMenu.removeItemAt(0),this.insertMenu(o,e,!1),c[o]=n.renderItem({title:e.title,active:!1,tabbable:o===a,disabled:0===r[o].items.length,onfocus:()=>{this._tabFocusIndex=o,this.activeIndex=o}}),o++}}0===this._overflowMenu.items.length&&(this.removeMenu(this._overflowMenu,!1),c.pop(),this._overflowMenu=null,this._overflowIndex=-1)}Z.render(c,this.contentNode),this._updateOverflowIndex()}_updateOverflowIndex(){if(!this._overflowMenuOptions.isVisible)return;let t=this.contentNode.childNodes,e=this.node.offsetWidth,r=0,n=-1,i=t.length;if(0==this._menuItemSizes.length)for(let a=0;ae&&-1===n&&(n=a)}else for(let t=0;te){n=t;break}this._overflowIndex=n}_evtKeyDown(t){let e=t.keyCode;if(9===e)return void(this.activeIndex=-1);if(t.preventDefault(),t.stopPropagation(),13===e||32===e||38===e||40===e){if(this.activeIndex=this._tabFocusIndex,this.activeIndex!==this._tabFocusIndex)return;return void this.openActiveMenu()}if(27===e)return this._closeChildMenu(),void this._focusItemAt(this.activeIndex);if(37===e||39===e){let t=37===e?-1:1,r=this._tabFocusIndex+t,n=this._menus.length;for(let e=0;ei.hitTest(e,t.clientX,t.clientY)));if(-1!==e){if(0===t.button)if(this._childMenu)this._closeChildMenu(),this.activeIndex=e;else{t.preventDefault();let r=this._positionForMenu(e);Et.saveWindowData(),this.activeIndex=e,this._openChildMenu(r)}}else this._closeChildMenu()}_evtMouseMove(t){let e=b.ArrayExt.findFirstIndex(this.contentNode.children,(e=>i.hitTest(e,t.clientX,t.clientY)));if(e===this._activeIndex||-1===e&&this._childMenu)return;let r=e>=0&&this._childMenu?this._positionForMenu(e):null;Et.saveWindowData(),this.activeIndex=e,r&&this._openChildMenu(r)}_positionForMenu(t){let e=this.contentNode.children[t],{left:r,bottom:n}=e.getBoundingClientRect();return{top:n,left:r}}_evtFocusOut(t){!this._childMenu&&!this.node.contains(t.relatedTarget)&&(this.activeIndex=-1)}_focusItemAt(t){let e=this.contentNode.childNodes[t];e&&e.focus()}_openChildMenu(t={}){let e=this.activeMenu;if(!e)return void this._closeChildMenu();let r=this._childMenu;if(r===e)return;this._childMenu=e,r?r.close():document.addEventListener("mousedown",this,!0),this._tabFocusIndex=this.activeIndex,M.sendMessage(this,nt.Msg.UpdateRequest);let{left:n,top:i}=t;(typeof n>"u"||typeof i>"u")&&({left:n,top:i}=this._positionForMenu(this._activeIndex)),r||this.addClass("lm-mod-active"),e.items.length>0&&e.open(n,i,this._forceItemsPosition)}_closeChildMenu(){if(!this._childMenu)return;this.removeClass("lm-mod-active"),document.removeEventListener("mousedown",this,!0);let t=this._childMenu;this._childMenu=null,t.close(),this.activeIndex=-1}_onMenuAboutToClose(t){t===this._childMenu&&(this.removeClass("lm-mod-active"),document.removeEventListener("mousedown",this,!0),this._childMenu=null,this.activeIndex=-1)}_onMenuMenuRequested(t,e){if(t!==this._childMenu)return;let r=this._activeIndex,n=this._menus.length;switch(e){case"next":this.activeIndex=r===n-1?0:r+1;break;case"previous":this.activeIndex=0===r?n-1:r-1}this.openActiveMenu()}_onTitleChanged(){this.update()}};!function(t){class e{renderItem(t){let e=this.createItemClass(t),r=this.createItemDataset(t),n=this.createItemARIA(t);return J.li({className:e,dataset:r,...t.disabled?{}:{tabindex:t.tabbable?"0":"-1"},onfocus:t.onfocus,...n},this.renderIcon(t),this.renderLabel(t))}renderIcon(t){let e=this.createIconClass(t);return J.div({className:e},t.title.icon,t.title.iconLabel)}renderLabel(t){let e=this.formatLabel(t);return J.div({className:"lm-MenuBar-itemLabel"},e)}createItemClass(t){let e="lm-MenuBar-item";return t.title.className&&(e+=` ${t.title.className}`),t.active&&!t.disabled&&(e+=" lm-mod-active"),e}createItemDataset(t){return t.title.dataset}createItemARIA(t){return{role:"menuitem","aria-haspopup":"true","aria-disabled":t.disabled?"true":"false"}}createIconClass(t){let e="lm-MenuBar-itemIcon",r=t.title.iconClass;return r?`${e} ${r}`:e}formatLabel(t){let{label:e,mnemonic:r}=t.title;if(r<0||r>=e.length)return e;let n=e.slice(0,r),i=e.slice(r+1),a=e[r];return[n,J.span({className:"lm-MenuBar-itemMnemonic"},a),i]}}t.Renderer=e,t.defaultRenderer=new e}(Nt||(Nt={})),function(t){t.createNode=function(){let t=document.createElement("div"),e=document.createElement("ul");return e.className="lm-MenuBar-content",t.appendChild(e),e.setAttribute("role","menubar"),t},t.findMnemonic=function(t,e,r){let n=-1,i=-1,a=!1,o=e.toUpperCase();for(let e=0,s=t.length;e=0&&u1&&this.widgets.forEach((t=>{t.hiddenMode=this._hiddenMode})))}dispose(){for(let t of this._items)t.dispose();this._box=null,this._items.length=0,super.dispose()}attachWidget(t,e){this._hiddenMode===nt.HiddenMode.Scale&&this._items.length>0?(1===this._items.length&&(this.widgets[0].hiddenMode=nt.HiddenMode.Scale),e.hiddenMode=nt.HiddenMode.Scale):e.hiddenMode=nt.HiddenMode.Display,b.ArrayExt.insert(this._items,t,new ot(e)),this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeAttach),this.parent.node.appendChild(e.node),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterAttach),this.parent.fit()}moveWidget(t,e,r){b.ArrayExt.move(this._items,t,e),this.parent.update()}detachWidget(t,e){let r=b.ArrayExt.removeAt(this._items,t);this.parent.isAttached&&M.sendMessage(e,nt.Msg.BeforeDetach),this.parent.node.removeChild(e.node),this.parent.isAttached&&M.sendMessage(e,nt.Msg.AfterDetach),r.widget.node.style.zIndex="",this._hiddenMode===nt.HiddenMode.Scale&&(e.hiddenMode=nt.HiddenMode.Display,1===this._items.length&&(this._items[0].widget.hiddenMode=nt.HiddenMode.Display)),r.dispose(),this.parent.fit()}onBeforeShow(t){super.onBeforeShow(t),this.parent.update()}onBeforeAttach(t){super.onBeforeAttach(t),this.parent.fit()}onChildShown(t){this.parent.fit()}onChildHidden(t){this.parent.fit()}onResize(t){this.parent.isVisible&&this._update(t.width,t.height)}onUpdateRequest(t){this.parent.isVisible&&this._update(-1,-1)}onFitRequest(t){this.parent.isAttached&&this._fit()}_fit(){let t=0,e=0;for(let r=0,n=this._items.length;r{this.createGraph(this._model)}))}renderModel(t){if(this.hasGraphElement())return Promise.resolve();this._model=t;let e=t.data["image/png"];return null!=e?(this.updateImage(e),Promise.resolve()):this.createGraph(t)}hasGraphElement(){return null!==this.node.querySelector(".plot-container")}updateImage(t){this.hideGraph(),this._img_el.src="data:image/png;base64,"+t,this.showImage()}hideGraph(){let t=this.node.querySelector(".plot-container");null!=t&&(t.style.display="none")}showGraph(){let t=this.node.querySelector(".plot-container");null!=t&&(t.style.display="block")}hideImage(){let t=this.node.querySelector(".plot-img");null!=t&&(t.style.display="none")}showImage(){let t=this.node.querySelector(".plot-img");null!=t&&(t.style.display="block")}createGraph(e){let{data:r,layout:n,frames:i,config:a}=e.data[this._mimeType];return n.height||(n.height=360),(async()=>(null===t.Plotly&&(t.Plotly=await Promise.resolve().then((()=>y(_()))),t._resolveLoadingPlotly()),t.loadingPlotly))().then((()=>t.Plotly.react(this.node,r,n,a))).then((r=>{this.showGraph(),this.hideImage(),this.update(),i&&t.Plotly.addFrames(this.node,i),this.node.offsetWidth>0&&this.node.offsetHeight>0&&t.Plotly.toImage(r,{format:"png",width:this.node.offsetWidth,height:this.node.offsetHeight}).then((t=>{let r=t.split(",")[1];e.data["image/png"]!==r&&e.setData({data:{...e.data,"image/png":r}})})),this.node.on("plotly_webglcontextlost",(()=>{let t=e.data["image/png"];if(null!=t)return this.updateImage(t),Promise.resolve()}))}))}onAfterShow(t){this.update()}onResize(t){this.update()}onUpdateRequest(e){t.Plotly&&this.isVisible&&this.hasGraphElement()&&t.Plotly.redraw(this.node).then((()=>{t.Plotly.Plots.resize(this.node)}))}static{this.Plotly=null}static{this.loadingPlotly=new Promise((e=>{t._resolveLoadingPlotly=e}))}},Wt={safe:!0,mimeTypes:[Ht],createRenderer:t=>new Gt(t)},Zt=[{id:"@jupyterlab/plotly-extension:factory",rendererFactory:Wt,rank:2,dataType:"json",fileTypes:[{name:"plotly",mimeTypes:[Ht],extensions:[".plotly",".plotly.json"],iconClass:"jp-MaterialIcon jp-PlotlyIcon"}],documentWidgetFactoryOptions:{name:"Plotly",primaryFileType:"plotly",fileTypes:["plotly","json"],defaultFor:["plotly"]}}]},606:t=>{var e,r,n=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function o(t){if(e===setTimeout)return setTimeout(t,0);if((e===i||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(r){try{return e.call(null,t,0)}catch(r){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:i}catch(t){e=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var s,l=[],c=!1,u=-1;function h(){c&&s&&(c=!1,s.length?l=s.concat(l):u=-1,l.length&&p())}function p(){if(!c){var t=o(h);c=!0;for(var e=l.length;e;){for(s=l,l=[];++u1)for(var r=1;r{"use strict";var e,r,t={987:(e,r,t)=>{var o={"./index":()=>t.e(340).then((()=>()=>t(340))),"./mimeExtension":()=>t.e(340).then((()=>()=>t(340)))},a=(e,r)=>(t.R=r,r=t.o(o,e)?o[e]():Promise.resolve().then((()=>{throw new Error('Module "'+e+'" does not exist in container.')})),t.R=void 0,r),n=(e,r)=>{if(t.S){var o="default",a=t.S[o];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[o]=e,t.I(o,r)}};t.d(r,{get:()=>a,init:()=>n})}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={exports:{}};return t[e](n,n.exports,a),n.exports}a.m=t,a.c=o,a.amdO={},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".2a23c8275d47a2531dae.js?v=2a23c8275d47a2531dae",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="jupyterlab-plotly:",a.l=(t,o,n,i)=>{if(e[t])e[t].push(o);else{var l,u;if(void 0!==n)for(var d=document.getElementsByTagName("script"),p=0;p{l.onerror=l.onload=null,clearTimeout(f);var a=e[t];if(delete e[t],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(o))),r)return r(o)},f=setTimeout(c.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=c.bind(null,l.onerror),l.onload=c.bind(null,l.onload),u&&document.head.appendChild(l)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{a.S={};var e={},r={};a.I=(t,o)=>{o||(o=[]);var n=r[t];if(n||(n=r[t]={}),!(o.indexOf(n)>=0)){if(o.push(n),e[t])return e[t];a.o(a.S,t)||(a.S[t]={});var i=a.S[t],l="jupyterlab-plotly",u=[];return"default"===t&&((e,r,t,o)=>{var n=i[e]=i[e]||{},u=n[r];(!u||!u.loaded&&(1!=!u.eager?o:l>u.from))&&(n[r]={get:()=>a.e(340).then((()=>()=>a(340))),from:l,eager:!1})})("jupyterlab-plotly","6.0.1"),e[t]=u.length?Promise.all(u).then((()=>e[t]=1)):1}}})(),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&(!e||!/^http(s?):/.test(e));)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={80:0};a.f.j=(r,t)=>{var o=a.o(e,r)?e[r]:void 0;if(0!==o)if(o)t.push(o[2]);else{var n=new Promise(((t,a)=>o=e[r]=[t,a]));t.push(o[2]=n);var i=a.p+a.u(r),l=new Error;a.l(i,(t=>{if(a.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var n=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+n+": "+i+")",l.name="ChunkLoadError",l.type=n,l.request=i,o[1](l)}}),"chunk-"+r,r)}};var r=(r,t)=>{var o,n,[i,l,u]=t,d=0;if(i.some((r=>0!==e[r]))){for(o in l)a.o(l,o)&&(a.m[o]=l[o]);u&&u(a)}for(r&&r(t);d"data", "after"->"screen". + styles: dictionary + A dictionary in which each value is a list of length N, containing + the style(s) for the paths. + mplobj : matplotlib object + the matplotlib plot element which generated this collection + """ + if offset_order == "before": + raise NotImplementedError("offset before transform") + + for tup in self._iter_path_collection(paths, path_transforms, offsets, styles): + (path, path_transform, offset, ec, lw, fc) = tup + vertices, pathcodes = path + path_transform = transforms.Affine2D(path_transform) + vertices = path_transform.transform(vertices) + # This is a hack: + if path_coordinates == "figure": + path_coordinates = "points" + style = { + "edgecolor": utils.export_color(ec), + "facecolor": utils.export_color(fc), + "edgewidth": lw, + "dasharray": "10,0", + "alpha": styles["alpha"], + "zorder": styles["zorder"], + } + self.draw_path( + data=vertices, + coordinates=path_coordinates, + pathcodes=pathcodes, + style=style, + offset=offset, + offset_coordinates=offset_coordinates, + mplobj=mplobj, + ) + + def draw_markers(self, data, coordinates, style, label, mplobj=None): + """ + Draw a set of markers. By default, this is done by repeatedly + calling draw_path(), but renderers should generally overload + this method to provide a more efficient implementation. + + In matplotlib, markers are created using the plt.plot() command. + + Parameters + ---------- + data : array_like + A shape (N, 2) array of datapoints. + coordinates : string + A string code, which should be either 'data' for data coordinates, + or 'figure' for figure (pixel) coordinates. + style : dictionary + a dictionary specifying the appearance of the markers. + mplobj : matplotlib object + the matplotlib plot element which generated this marker collection + """ + vertices, pathcodes = style["markerpath"] + pathstyle = dict( + (key, style[key]) + for key in ["alpha", "edgecolor", "facecolor", "zorder", "edgewidth"] + ) + pathstyle["dasharray"] = "10,0" + for vertex in data: + self.draw_path( + data=vertices, + coordinates="points", + pathcodes=pathcodes, + style=pathstyle, + offset=vertex, + offset_coordinates=coordinates, + mplobj=mplobj, + ) + + def draw_text( + self, text, position, coordinates, style, text_type=None, mplobj=None + ): + """ + Draw text on the image. + + Parameters + ---------- + text : string + The text to draw + position : tuple + The (x, y) position of the text + coordinates : string + A string code, which should be either 'data' for data coordinates, + or 'figure' for figure (pixel) coordinates. + style : dictionary + a dictionary specifying the appearance of the text. + text_type : string or None + if specified, a type of text such as "xlabel", "ylabel", "title" + mplobj : matplotlib object + the matplotlib plot element which generated this text + """ + raise NotImplementedError() + + def draw_path( + self, + data, + coordinates, + pathcodes, + style, + offset=None, + offset_coordinates="data", + mplobj=None, + ): + """ + Draw a path. + + In matplotlib, paths are created by filled regions, histograms, + contour plots, patches, etc. + + Parameters + ---------- + data : array_like + A shape (N, 2) array of datapoints. + coordinates : string + A string code, which should be either 'data' for data coordinates, + 'figure' for figure (pixel) coordinates, or "points" for raw + point coordinates (useful in conjunction with offsets, below). + pathcodes : list + A list of single-character SVG pathcodes associated with the data. + Path codes are one of ['M', 'm', 'L', 'l', 'Q', 'q', 'T', 't', + 'S', 's', 'C', 'c', 'Z', 'z'] + See the SVG specification for details. Note that some path codes + consume more than one datapoint (while 'Z' consumes none), so + in general, the length of the pathcodes list will not be the same + as that of the data array. + style : dictionary + a dictionary specifying the appearance of the line. + offset : list (optional) + the (x, y) offset of the path. If not given, no offset will + be used. + offset_coordinates : string (optional) + A string code, which should be either 'data' for data coordinates, + or 'figure' for figure (pixel) coordinates. + mplobj : matplotlib object + the matplotlib plot element which generated this path + """ + raise NotImplementedError() + + def draw_image(self, imdata, extent, coordinates, style, mplobj=None): + """ + Draw an image. + + Parameters + ---------- + imdata : string + base64 encoded png representation of the image + extent : list + the axes extent of the image: [xmin, xmax, ymin, ymax] + coordinates: string + A string code, which should be either 'data' for data coordinates, + or 'figure' for figure (pixel) coordinates. + style : dictionary + a dictionary specifying the appearance of the image + mplobj : matplotlib object + the matplotlib plot object which generated this image + """ + raise NotImplementedError() diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py new file mode 100644 index 0000000..de2ae40 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/fake_renderer.py @@ -0,0 +1,88 @@ +from .base import Renderer + + +class FakeRenderer(Renderer): + """ + Fake Renderer + + This is a fake renderer which simply outputs a text tree representing the + elements found in the plot(s). This is used in the unit tests for the + package. + + Below are the methods your renderer must implement. You are free to do + anything you wish within the renderer (i.e. build an XML or JSON + representation, call an external API, etc.) Here the renderer just + builds a simple string representation for testing purposes. + """ + + def __init__(self): + self.output = "" + + def open_figure(self, fig, props): + self.output += "opening figure\n" + + def close_figure(self, fig): + self.output += "closing figure\n" + + def open_axes(self, ax, props): + self.output += " opening axes\n" + + def close_axes(self, ax): + self.output += " closing axes\n" + + def open_legend(self, legend, props): + self.output += " opening legend\n" + + def close_legend(self, legend): + self.output += " closing legend\n" + + def draw_text( + self, text, position, coordinates, style, text_type=None, mplobj=None + ): + self.output += " draw text '{0}' {1}\n".format(text, text_type) + + def draw_path( + self, + data, + coordinates, + pathcodes, + style, + offset=None, + offset_coordinates="data", + mplobj=None, + ): + self.output += " draw path with {0} vertices\n".format(data.shape[0]) + + def draw_image(self, imdata, extent, coordinates, style, mplobj=None): + self.output += " draw image of size {0}\n".format(len(imdata)) + + +class FullFakeRenderer(FakeRenderer): + """ + Renderer with the full complement of methods. + + When the following are left undefined, they will be implemented via + other methods in the class. They can be defined explicitly for + more efficient or specialized use within the renderer implementation. + """ + + def draw_line(self, data, coordinates, style, label, mplobj=None): + self.output += " draw line with {0} points\n".format(data.shape[0]) + + def draw_markers(self, data, coordinates, style, label, mplobj=None): + self.output += " draw {0} markers\n".format(data.shape[0]) + + def draw_path_collection( + self, + paths, + path_coordinates, + path_transforms, + offsets, + offset_coordinates, + offset_order, + styles, + mplobj=None, + ): + self.output += " draw path collection with {0} offsets\n".format( + offsets.shape[0] + ) diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py new file mode 100644 index 0000000..eab02e1 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vega_renderer.py @@ -0,0 +1,155 @@ +import warnings +import json +import random +from .base import Renderer +from ..exporter import Exporter + + +class VegaRenderer(Renderer): + def open_figure(self, fig, props): + self.props = props + self.figwidth = int(props["figwidth"] * props["dpi"]) + self.figheight = int(props["figheight"] * props["dpi"]) + self.data = [] + self.scales = [] + self.axes = [] + self.marks = [] + + def open_axes(self, ax, props): + if len(self.axes) > 0: + warnings.warn("multiple axes not yet supported") + self.axes = [ + dict(type="x", scale="x", ticks=10), + dict(type="y", scale="y", ticks=10), + ] + self.scales = [ + dict( + name="x", + domain=props["xlim"], + type="linear", + range="width", + ), + dict( + name="y", + domain=props["ylim"], + type="linear", + range="height", + ), + ] + + def draw_line(self, data, coordinates, style, label, mplobj=None): + if coordinates != "data": + warnings.warn("Only data coordinates supported. Skipping this") + dataname = "table{0:03d}".format(len(self.data) + 1) + + # TODO: respect the other style settings + self.data.append( + {"name": dataname, "values": [dict(x=d[0], y=d[1]) for d in data]} + ) + self.marks.append( + { + "type": "line", + "from": {"data": dataname}, + "properties": { + "enter": { + "interpolate": {"value": "monotone"}, + "x": {"scale": "x", "field": "data.x"}, + "y": {"scale": "y", "field": "data.y"}, + "stroke": {"value": style["color"]}, + "strokeOpacity": {"value": style["alpha"]}, + "strokeWidth": {"value": style["linewidth"]}, + } + }, + } + ) + + def draw_markers(self, data, coordinates, style, label, mplobj=None): + if coordinates != "data": + warnings.warn("Only data coordinates supported. Skipping this") + dataname = "table{0:03d}".format(len(self.data) + 1) + + # TODO: respect the other style settings + self.data.append( + {"name": dataname, "values": [dict(x=d[0], y=d[1]) for d in data]} + ) + self.marks.append( + { + "type": "symbol", + "from": {"data": dataname}, + "properties": { + "enter": { + "interpolate": {"value": "monotone"}, + "x": {"scale": "x", "field": "data.x"}, + "y": {"scale": "y", "field": "data.y"}, + "fill": {"value": style["facecolor"]}, + "fillOpacity": {"value": style["alpha"]}, + "stroke": {"value": style["edgecolor"]}, + "strokeOpacity": {"value": style["alpha"]}, + "strokeWidth": {"value": style["edgewidth"]}, + } + }, + } + ) + + def draw_text( + self, text, position, coordinates, style, text_type=None, mplobj=None + ): + if text_type == "xlabel": + self.axes[0]["title"] = text + elif text_type == "ylabel": + self.axes[1]["title"] = text + + +class VegaHTML(object): + def __init__(self, renderer): + self.specification = dict( + width=renderer.figwidth, + height=renderer.figheight, + data=renderer.data, + scales=renderer.scales, + axes=renderer.axes, + marks=renderer.marks, + ) + + def html(self): + """Build the HTML representation for IPython.""" + id = random.randint(0, 2**16) + html = '
' % id + html += "\n" + return html + + def _repr_html_(self): + return self.html() + + +def fig_to_vega(fig, notebook=False): + """Convert a matplotlib figure to vega dictionary + + if notebook=True, then return an object which will display in a notebook + otherwise, return an HTML string. + """ + renderer = VegaRenderer() + Exporter(renderer).run(fig) + vega_html = VegaHTML(renderer) + if notebook: + return vega_html + else: + return vega_html.html() + + +VEGA_TEMPLATE = """ +( function() { + var _do_plot = function() { + if ( (typeof vg == 'undefined') && (typeof IPython != 'undefined')) { + $([IPython.events]).on("vega_loaded.vincent", _do_plot); + return; + } + vg.parse.spec(%s, function(chart) { + chart({el: "#vis%d"}).update(); + }); + }; + _do_plot(); +})(); +""" diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py new file mode 100644 index 0000000..36074f6 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/renderers/vincent_renderer.py @@ -0,0 +1,54 @@ +import warnings +from .base import Renderer +from ..exporter import Exporter + + +class VincentRenderer(Renderer): + def open_figure(self, fig, props): + self.chart = None + self.figwidth = int(props["figwidth"] * props["dpi"]) + self.figheight = int(props["figheight"] * props["dpi"]) + + def draw_line(self, data, coordinates, style, label, mplobj=None): + import vincent # only import if VincentRenderer is used + + if coordinates != "data": + warnings.warn("Only data coordinates supported. Skipping this") + linedata = {"x": data[:, 0], "y": data[:, 1]} + line = vincent.Line( + linedata, iter_idx="x", width=self.figwidth, height=self.figheight + ) + + # TODO: respect the other style settings + line.scales["color"].range = [style["color"]] + + if self.chart is None: + self.chart = line + else: + warnings.warn("Multiple plot elements not yet supported") + + def draw_markers(self, data, coordinates, style, label, mplobj=None): + import vincent # only import if VincentRenderer is used + + if coordinates != "data": + warnings.warn("Only data coordinates supported. Skipping this") + markerdata = {"x": data[:, 0], "y": data[:, 1]} + markers = vincent.Scatter( + markerdata, iter_idx="x", width=self.figwidth, height=self.figheight + ) + + # TODO: respect the other style settings + markers.scales["color"].range = [style["facecolor"]] + + if self.chart is None: + self.chart = markers + else: + warnings.warn("Multiple plot elements not yet supported") + + +def fig_to_vincent(fig): + """Convert a matplotlib figure to a vincent object""" + renderer = VincentRenderer() + exporter = Exporter(renderer) + exporter.run(fig) + return renderer.chart diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/__init__.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/__init__.py new file mode 100644 index 0000000..290cc21 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/__init__.py @@ -0,0 +1,3 @@ +import matplotlib + +matplotlib.use("Agg") diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_basic.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_basic.py new file mode 100644 index 0000000..3739e13 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_basic.py @@ -0,0 +1,257 @@ +import matplotlib +import numpy as np +import pytest +from packaging.version import Version + +from ..exporter import Exporter +from ..renderers import FakeRenderer, FullFakeRenderer +import matplotlib.pyplot as plt + + +def fake_renderer_output(fig, Renderer): + renderer = Renderer() + exporter = Exporter(renderer) + exporter.run(fig) + return renderer.output + + +def _assert_output_equal(text1, text2): + for line1, line2 in zip(text1.strip().split(), text2.strip().split()): + assert line1 == line2 + + +def test_lines(): + fig, ax = plt.subplots() + ax.plot(range(20), "-k") + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 20 vertices + closing axes + closing figure + """, + ) + + _assert_output_equal( + fake_renderer_output(fig, FullFakeRenderer), + """ + opening figure + opening axes + draw line with 20 points + closing axes + closing figure + """, + ) + + +def test_markers(): + fig, ax = plt.subplots() + ax.plot(range(2), "ok") + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 25 vertices + draw path with 25 vertices + closing axes + closing figure + """, + ) + + _assert_output_equal( + fake_renderer_output(fig, FullFakeRenderer), + """ + opening figure + opening axes + draw 2 markers + closing axes + closing figure + """, + ) + + +def test_path_collection(): + fig, ax = plt.subplots() + ax.scatter(range(3), range(3)) + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 25 vertices + draw path with 25 vertices + draw path with 25 vertices + closing axes + closing figure + """, + ) + + _assert_output_equal( + fake_renderer_output(fig, FullFakeRenderer), + """ + opening figure + opening axes + draw path collection with 3 offsets + closing axes + closing figure + """, + ) + + +def test_text(): + fig, ax = plt.subplots() + ax.set_xlabel("my x label") + ax.set_ylabel("my y label") + ax.set_title("my title") + ax.text(0.5, 0.5, "my text") + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw text 'my text' None + draw text 'my x label' xlabel + draw text 'my y label' ylabel + draw text 'my title' title + closing axes + closing figure + """, + ) + + +def test_path(): + fig, ax = plt.subplots() + ax.add_patch(plt.Circle((0, 0), 1)) + ax.add_patch(plt.Rectangle((0, 0), 1, 2)) + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 25 vertices + draw path with 4 vertices + closing axes + closing figure + """, + ) + + +def test_Figure(): + """if the fig is not associated with a canvas, FakeRenderer shall + not fail.""" + fig = plt.Figure() + ax = fig.add_subplot(111) + ax.add_patch(plt.Circle((0, 0), 1)) + ax.add_patch(plt.Rectangle((0, 0), 1, 2)) + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 25 vertices + draw path with 4 vertices + closing axes + closing figure + """, + ) + + +def test_multiaxes(): + fig, ax = plt.subplots(2) + ax[0].plot(range(4)) + ax[1].plot(range(10)) + + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 4 vertices + closing axes + opening axes + draw path with 10 vertices + closing axes + closing figure + """, + ) + + +def test_image(): + # Test fails for matplotlib 1.5+ because the size of the image + # generated by matplotlib has changed. + if Version(matplotlib.__version__) == Version("3.4.1"): + image_size = 432 + else: + pytest.skip("Test fails for older matplotlib") + np.random.seed(0) # image size depends on the seed + fig, ax = plt.subplots(figsize=(2, 2)) + ax.imshow(np.random.random((10, 10)), cmap=plt.cm.jet, interpolation="nearest") + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + f""" + opening figure + opening axes + draw image of size {image_size} + closing axes + closing figure + """, + ) + + +def test_legend(): + fig, ax = plt.subplots() + ax.plot([1, 2, 3], label="label") + ax.legend().set_visible(False) + _assert_output_equal( + fake_renderer_output(fig, FakeRenderer), + """ + opening figure + opening axes + draw path with 3 vertices + opening legend + closing legend + closing axes + closing figure + """, + ) + + +def test_legend_dots(): + fig, ax = plt.subplots() + ax.plot([1, 2, 3], label="label") + ax.plot([2, 2, 2], "o", label="dots") + ax.legend().set_visible(True) + # legend draws 1 line and 1 marker + # path around legend now has 13 vertices?? + _assert_output_equal( + fake_renderer_output(fig, FullFakeRenderer), + """ + opening figure + opening axes + draw line with 3 points + draw 3 markers + opening legend + draw line with 2 points + draw text 'label' None + draw 1 markers + draw text 'dots' None + draw path with 13 vertices + closing legend + closing axes + closing figure + """, + ) + + +def test_blended(): + fig, ax = plt.subplots() + ax.axvline(0) diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_utils.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_utils.py new file mode 100644 index 0000000..5659163 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tests/test_utils.py @@ -0,0 +1,40 @@ +from numpy.testing import assert_allclose, assert_equal +from . import plt +from .. import utils + + +def test_path_data(): + circle = plt.Circle((0, 0), 1) + vertices, codes = utils.SVG_path(circle.get_path()) + + assert_allclose(vertices.shape, (25, 2)) + assert_equal(codes, ["M", "C", "C", "C", "C", "C", "C", "C", "C", "Z"]) + + +def test_linestyle(): + linestyles = { + "solid": "none", + "-": "none", + "dashed": "5.550000000000001,2.4000000000000004", + "--": "5.550000000000001,2.4000000000000004", + "dotted": "1.5,2.4749999999999996", + ":": "1.5,2.4749999999999996", + "dashdot": "9.600000000000001,2.4000000000000004,1.5,2.4000000000000004", + "-.": "9.600000000000001,2.4000000000000004,1.5,2.4000000000000004", + "": None, + "None": None, + } + + for ls, result in linestyles.items(): + (line,) = plt.plot([1, 2, 3], linestyle=ls) + assert_equal(utils.get_dasharray(line), result) + + +def test_axis_w_fixed_formatter(): + positions, labels = [0, 1, 10], ["A", "B", "C"] + + plt.xticks(positions, labels) + props = utils.get_axis_properties(plt.gca().xaxis) + + assert_equal(props["tickvalues"], positions) + assert_equal(props["tickformat"], labels) diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tools.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tools.py new file mode 100644 index 0000000..f66fdfb --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/tools.py @@ -0,0 +1,55 @@ +""" +Tools for matplotlib plot exporting +""" + + +def ipynb_vega_init(): + """Initialize the IPython notebook display elements + + This function borrows heavily from the excellent vincent package: + http://github.com/wrobstory/vincent + """ + try: + from IPython.core.display import display, HTML + except ImportError: + print("IPython Notebook could not be loaded.") + + require_js = """ + if (window['d3'] === undefined) {{ + require.config({{ paths: {{d3: "http://d3js.org/d3.v3.min"}} }}); + require(["d3"], function(d3) {{ + window.d3 = d3; + {0} + }}); + }}; + if (window['topojson'] === undefined) {{ + require.config( + {{ paths: {{topojson: "http://d3js.org/topojson.v1.min"}} }} + ); + require(["topojson"], function(topojson) {{ + window.topojson = topojson; + }}); + }}; + """ + d3_geo_projection_js_url = "http://d3js.org/d3.geo.projection.v0.min.js" + d3_layout_cloud_js_url = "http://wrobstory.github.io/d3-cloud/d3.layout.cloud.js" + topojson_js_url = "http://d3js.org/topojson.v1.min.js" + vega_js_url = "http://trifacta.github.com/vega/vega.js" + + dep_libs = """$.getScript("%s", function() { + $.getScript("%s", function() { + $.getScript("%s", function() { + $.getScript("%s", function() { + $([IPython.events]).trigger("vega_loaded.vincent"); + }) + }) + }) + });""" % ( + d3_geo_projection_js_url, + d3_layout_cloud_js_url, + topojson_js_url, + vega_js_url, + ) + load_js = require_js.format(dep_libs) + html = "" + display(HTML(html)) diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/utils.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/utils.py new file mode 100644 index 0000000..646e11e --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mplexporter/utils.py @@ -0,0 +1,382 @@ +""" +Utility Routines for Working with Matplotlib Objects +==================================================== +""" + +import itertools +import io +import base64 + +import numpy as np + +import warnings + +import matplotlib +from matplotlib.colors import colorConverter +from matplotlib.path import Path +from matplotlib.markers import MarkerStyle +from matplotlib.transforms import Affine2D +from matplotlib import ticker + + +def export_color(color): + """Convert matplotlib color code to hex color or RGBA color""" + if color is None or colorConverter.to_rgba(color)[3] == 0: + return "none" + elif colorConverter.to_rgba(color)[3] == 1: + rgb = colorConverter.to_rgb(color) + return "#{0:02X}{1:02X}{2:02X}".format(*(int(255 * c) for c in rgb)) + else: + c = colorConverter.to_rgba(color) + return ( + "rgba(" + + ", ".join(str(int(np.round(val * 255))) for val in c[:3]) + + ", " + + str(c[3]) + + ")" + ) + + +def _many_to_one(input_dict): + """Convert a many-to-one mapping to a one-to-one mapping""" + return dict((key, val) for keys, val in input_dict.items() for key in keys) + + +LINESTYLES = _many_to_one( + { + ("solid", "-", (None, None)): "none", + ("dashed", "--"): "6,6", + ("dotted", ":"): "2,2", + ("dashdot", "-."): "4,4,2,4", + ("", " ", "None", "none"): None, + } +) + + +def get_dasharray(obj): + """Get an SVG dash array for the given matplotlib linestyle + + Parameters + ---------- + obj : matplotlib object + The matplotlib line or path object, which must have a get_linestyle() + method which returns a valid matplotlib line code + + Returns + ------- + dasharray : string + The HTML/SVG dasharray code associated with the object. + """ + if obj.__dict__.get("_dashSeq", None) is not None: + return ",".join(map(str, obj._dashSeq)) + else: + ls = obj.get_linestyle() + dasharray = LINESTYLES.get(ls, "not found") + if dasharray == "not found": + warnings.warn( + "line style '{0}' not understood: defaulting to solid line.".format(ls) + ) + dasharray = LINESTYLES["solid"] + return dasharray + + +PATH_DICT = { + Path.LINETO: "L", + Path.MOVETO: "M", + Path.CURVE3: "S", + Path.CURVE4: "C", + Path.CLOSEPOLY: "Z", +} + + +def SVG_path(path, transform=None, simplify=False): + """Construct the vertices and SVG codes for the path + + Parameters + ---------- + path : matplotlib.Path object + + transform : matplotlib transform (optional) + if specified, the path will be transformed before computing the output. + + Returns + ------- + vertices : array + The shape (M, 2) array of vertices of the Path. Note that some Path + codes require multiple vertices, so the length of these vertices may + be longer than the list of path codes. + path_codes : list + A length N list of single-character path codes, N <= M. Each code is + a single character, in ['L','M','S','C','Z']. See the standard SVG + path specification for a description of these. + """ + if transform is not None: + path = path.transformed(transform) + + vc_tuples = [ + (vertices if path_code != Path.CLOSEPOLY else [], PATH_DICT[path_code]) + for (vertices, path_code) in path.iter_segments(simplify=simplify) + ] + + if not vc_tuples: + # empty path is a special case + return np.zeros((0, 2)), [] + else: + vertices, codes = zip(*vc_tuples) + vertices = np.array(list(itertools.chain(*vertices))).reshape(-1, 2) + return vertices, list(codes) + + +def get_path_style(path, fill=True): + """Get the style dictionary for matplotlib path objects""" + style = {} + style["alpha"] = path.get_alpha() + if style["alpha"] is None: + style["alpha"] = 1 + style["edgecolor"] = export_color(path.get_edgecolor()) + if fill: + style["facecolor"] = export_color(path.get_facecolor()) + else: + style["facecolor"] = "none" + style["edgewidth"] = path.get_linewidth() + style["dasharray"] = get_dasharray(path) + style["zorder"] = path.get_zorder() + return style + + +def get_line_style(line): + """Get the style dictionary for matplotlib line objects""" + style = {} + style["alpha"] = line.get_alpha() + if style["alpha"] is None: + style["alpha"] = 1 + style["color"] = export_color(line.get_color()) + style["linewidth"] = line.get_linewidth() + style["dasharray"] = get_dasharray(line) + style["zorder"] = line.get_zorder() + style["drawstyle"] = line.get_drawstyle() + return style + + +def get_marker_style(line): + """Get the style dictionary for matplotlib marker objects""" + style = {} + style["alpha"] = line.get_alpha() + if style["alpha"] is None: + style["alpha"] = 1 + + style["facecolor"] = export_color(line.get_markerfacecolor()) + style["edgecolor"] = export_color(line.get_markeredgecolor()) + style["edgewidth"] = line.get_markeredgewidth() + + style["marker"] = line.get_marker() + markerstyle = MarkerStyle(line.get_marker()) + markersize = line.get_markersize() + markertransform = markerstyle.get_transform() + Affine2D().scale( + markersize, -markersize + ) + style["markerpath"] = SVG_path(markerstyle.get_path(), markertransform) + style["markersize"] = markersize + style["zorder"] = line.get_zorder() + return style + + +def get_text_style(text): + """Return the text style dict for a text instance""" + style = {} + style["alpha"] = text.get_alpha() + if style["alpha"] is None: + style["alpha"] = 1 + style["fontsize"] = text.get_size() + style["color"] = export_color(text.get_color()) + style["halign"] = text.get_horizontalalignment() # left, center, right + style["valign"] = text.get_verticalalignment() # baseline, center, top + style["malign"] = text._multialignment # text alignment when '\n' in text + style["rotation"] = text.get_rotation() + style["zorder"] = text.get_zorder() + return style + + +def get_axis_properties(axis): + """Return the property dictionary for a matplotlib.Axis instance""" + props = {} + label1On = axis._major_tick_kw.get("label1On", True) + + if isinstance(axis, matplotlib.axis.XAxis): + if label1On: + props["position"] = "bottom" + else: + props["position"] = "top" + elif isinstance(axis, matplotlib.axis.YAxis): + if label1On: + props["position"] = "left" + else: + props["position"] = "right" + else: + raise ValueError("{0} should be an Axis instance".format(axis)) + + # Use tick values if appropriate + locator = axis.get_major_locator() + props["nticks"] = len(locator()) + if isinstance(locator, ticker.FixedLocator): + props["tickvalues"] = list(locator()) + else: + props["tickvalues"] = None + + # Find tick formats + formatter = axis.get_major_formatter() + if isinstance(formatter, ticker.NullFormatter): + props["tickformat"] = "" + elif isinstance(formatter, ticker.FixedFormatter): + props["tickformat"] = list(formatter.seq) + elif isinstance(formatter, ticker.FuncFormatter): + props["tickformat"] = list(formatter.func.args[0].values()) + elif not any(label.get_visible() for label in axis.get_ticklabels()): + props["tickformat"] = "" + else: + props["tickformat"] = None + + # Get axis scale + props["scale"] = axis.get_scale() + + # Get major tick label size (assumes that's all we really care about!) + labels = axis.get_ticklabels() + if labels: + props["fontsize"] = labels[0].get_fontsize() + else: + props["fontsize"] = None + + # Get associated grid + props["grid"] = get_grid_style(axis) + + # get axis visibility + props["visible"] = axis.get_visible() + + return props + + +def get_grid_style(axis): + gridlines = axis.get_gridlines() + if axis._major_tick_kw["gridOn"] and len(gridlines) > 0: + color = export_color(gridlines[0].get_color()) + alpha = gridlines[0].get_alpha() + dasharray = get_dasharray(gridlines[0]) + return dict(gridOn=True, color=color, dasharray=dasharray, alpha=alpha) + else: + return {"gridOn": False} + + +def get_figure_properties(fig): + return { + "figwidth": fig.get_figwidth(), + "figheight": fig.get_figheight(), + "dpi": fig.dpi, + } + + +def get_axes_properties(ax): + props = { + "axesbg": export_color(ax.patch.get_facecolor()), + "axesbgalpha": ax.patch.get_alpha(), + "bounds": ax.get_position().bounds, + "dynamic": ax.get_navigate(), + "axison": ax.axison, + "frame_on": ax.get_frame_on(), + "patch_visible": ax.patch.get_visible(), + "axes": [get_axis_properties(ax.xaxis), get_axis_properties(ax.yaxis)], + } + + for axname in ["x", "y"]: + axis = getattr(ax, axname + "axis") + domain = getattr(ax, "get_{0}lim".format(axname))() + lim = domain + if isinstance(axis.converter, matplotlib.dates.DateConverter): + scale = "date" + try: + import pandas as pd + from pandas.tseries.converter import PeriodConverter + except ImportError: + pd = None + + if pd is not None and isinstance(axis.converter, PeriodConverter): + _dates = [pd.Period(ordinal=int(d), freq=axis.freq) for d in domain] + domain = [ + (d.year, d.month - 1, d.day, d.hour, d.minute, d.second, 0) + for d in _dates + ] + else: + domain = [ + ( + d.year, + d.month - 1, + d.day, + d.hour, + d.minute, + d.second, + d.microsecond * 1e-3, + ) + for d in matplotlib.dates.num2date(domain) + ] + else: + scale = axis.get_scale() + + if scale not in ["date", "linear", "log"]: + raise ValueError("Unknown axis scale: {0}".format(axis.get_scale())) + + props[axname + "scale"] = scale + props[axname + "lim"] = lim + props[axname + "domain"] = domain + + return props + + +def iter_all_children(obj, skipContainers=False): + """ + Returns an iterator over all childen and nested children using + obj's get_children() method + + if skipContainers is true, only childless objects are returned. + """ + if hasattr(obj, "get_children") and len(obj.get_children()) > 0: + for child in obj.get_children(): + if not skipContainers: + yield child + # could use `yield from` in python 3... + for grandchild in iter_all_children(child, skipContainers): + yield grandchild + else: + yield obj + + +def get_legend_properties(ax, legend): + handles, labels = ax.get_legend_handles_labels() + visible = legend.get_visible() + return {"handles": handles, "labels": labels, "visible": visible} + + +def image_to_base64(image): + """ + Convert a matplotlib image to a base64 png representation + + Parameters + ---------- + image : matplotlib image object + The image to be converted. + + Returns + ------- + image_base64 : string + The UTF8-encoded base64 string representation of the png image. + """ + ax = image.axes + binary_buffer = io.BytesIO() + + # image is saved in axes coordinates: we need to temporarily + # set the correct limits to get the correct image + lim = ax.axis() + ax.axis(image.get_extent()) + image.write_png(binary_buffer) + ax.axis(lim) + + binary_buffer.seek(0) + return base64.b64encode(binary_buffer.read()).decode("utf-8") diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/mpltools.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mpltools.py new file mode 100644 index 0000000..4268136 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/mpltools.py @@ -0,0 +1,610 @@ +""" +Tools + +A module for converting from mpl language to plotly language. + +""" + +import math + +import warnings +import matplotlib.dates + + +def check_bar_match(old_bar, new_bar): + """Check if two bars belong in the same collection (bar chart). + + Positional arguments: + old_bar -- a previously sorted bar dictionary. + new_bar -- a new bar dictionary that needs to be sorted. + + """ + tests = [] + tests += (new_bar["orientation"] == old_bar["orientation"],) + tests += (new_bar["facecolor"] == old_bar["facecolor"],) + if new_bar["orientation"] == "v": + new_width = new_bar["x1"] - new_bar["x0"] + old_width = old_bar["x1"] - old_bar["x0"] + tests += (new_width - old_width < 0.000001,) + tests += (new_bar["y0"] == old_bar["y0"],) + elif new_bar["orientation"] == "h": + new_height = new_bar["y1"] - new_bar["y0"] + old_height = old_bar["y1"] - old_bar["y0"] + tests += (new_height - old_height < 0.000001,) + tests += (new_bar["x0"] == old_bar["x0"],) + if all(tests): + return True + else: + return False + + +def check_corners(inner_obj, outer_obj): + inner_corners = inner_obj.get_window_extent().corners() + outer_corners = outer_obj.get_window_extent().corners() + if inner_corners[0][0] < outer_corners[0][0]: + return False + elif inner_corners[0][1] < outer_corners[0][1]: + return False + elif inner_corners[3][0] > outer_corners[3][0]: + return False + elif inner_corners[3][1] > outer_corners[3][1]: + return False + else: + return True + + +def convert_dash(mpl_dash): + """Convert mpl line symbol to plotly line symbol and return symbol.""" + if mpl_dash in DASH_MAP: + return DASH_MAP[mpl_dash] + else: + dash_array = mpl_dash.split(",") + + if len(dash_array) < 2: + return "solid" + + # Catch the exception where the off length is zero, in case + # matplotlib 'solid' changes from '10,0' to 'N,0' + if math.isclose(float(dash_array[1]), 0.0): + return "solid" + + # If we can't find the dash pattern in the map, convert it + # into custom values in px, e.g. '7,5' -> '7px,5px' + dashpx = ",".join([x + "px" for x in dash_array]) + + # TODO: rewrite the convert_dash code + # only strings 'solid', 'dashed', etc allowed + if dashpx == "7.4px,3.2px": + dashpx = "dashed" + elif dashpx == "12.8px,3.2px,2.0px,3.2px": + dashpx = "dashdot" + elif dashpx == "2.0px,3.3px": + dashpx = "dotted" + return dashpx + + +def convert_path(path): + code = tuple(path[1]) + if code in PATH_MAP: + return PATH_MAP[code] + else: + return None + + +def convert_symbol(mpl_symbol): + """Convert mpl marker symbol to plotly symbol and return symbol.""" + if isinstance(mpl_symbol, list): + symbol = list() + for s in mpl_symbol: + symbol += [convert_symbol(s)] + return symbol + elif mpl_symbol in SYMBOL_MAP: + return SYMBOL_MAP[mpl_symbol] + else: + return "circle" # default + + +def hex_to_rgb(value): + """ + Change a hex color to an rgb tuple + + :param (str|unicode) value: The hex string we want to convert. + :return: (int, int, int) The red, green, blue int-tuple. + + Example: + + '#FFFFFF' --> (255, 255, 255) + + """ + value = value.lstrip("#") + lv = len(value) + return tuple(int(value[i : i + lv // 3], 16) for i in range(0, lv, lv // 3)) + + +def merge_color_and_opacity(color, opacity): + """ + Merge hex color with an alpha (opacity) to get an rgba tuple. + + :param (str|unicode) color: A hex color string. + :param (float|int) opacity: A value [0, 1] for the 'a' in 'rgba'. + :return: (int, int, int, float) The rgba color and alpha tuple. + + """ + if color is None: # None can be used as a placeholder, just bail. + return None + + rgb_tup = hex_to_rgb(color) + if opacity is None: + return "rgb {}".format(rgb_tup) + + rgba_tup = rgb_tup + (opacity,) + return "rgba {}".format(rgba_tup) + + +def convert_va(mpl_va): + """Convert mpl vertical alignment word to equivalent HTML word. + + Text alignment specifiers from mpl differ very slightly from those used + in HTML. See the VA_MAP for more details. + + Positional arguments: + mpl_va -- vertical mpl text alignment spec. + + """ + if mpl_va in VA_MAP: + return VA_MAP[mpl_va] + else: + return None # let plotly figure it out! + + +def convert_x_domain(mpl_plot_bounds, mpl_max_x_bounds): + """Map x dimension of current plot to plotly's domain space. + + The bbox used to locate an axes object in mpl differs from the + method used to locate axes in plotly. The mpl version locates each + axes in the figure so that axes in a single-plot figure might have + the bounds, [0.125, 0.125, 0.775, 0.775] (x0, y0, width, height), + in mpl's figure coordinates. However, the axes all share one space in + plotly such that the domain will always be [0, 0, 1, 1] + (x0, y0, x1, y1). To convert between the two, the mpl figure bounds + need to be mapped to a [0, 1] domain for x and y. The margins set + upon opening a new figure will appropriately match the mpl margins. + + Optionally, setting margins=0 and simply copying the domains from + mpl to plotly would place axes appropriately. However, + this would throw off axis and title labeling. + + Positional arguments: + mpl_plot_bounds -- the (x0, y0, width, height) params for current ax ** + mpl_max_x_bounds -- overall (x0, x1) bounds for all axes ** + + ** these are all specified in mpl figure coordinates + + """ + mpl_x_dom = [mpl_plot_bounds[0], mpl_plot_bounds[0] + mpl_plot_bounds[2]] + plotting_width = mpl_max_x_bounds[1] - mpl_max_x_bounds[0] + x0 = (mpl_x_dom[0] - mpl_max_x_bounds[0]) / plotting_width + x1 = (mpl_x_dom[1] - mpl_max_x_bounds[0]) / plotting_width + return [x0, x1] + + +def convert_y_domain(mpl_plot_bounds, mpl_max_y_bounds): + """Map y dimension of current plot to plotly's domain space. + + The bbox used to locate an axes object in mpl differs from the + method used to locate axes in plotly. The mpl version locates each + axes in the figure so that axes in a single-plot figure might have + the bounds, [0.125, 0.125, 0.775, 0.775] (x0, y0, width, height), + in mpl's figure coordinates. However, the axes all share one space in + plotly such that the domain will always be [0, 0, 1, 1] + (x0, y0, x1, y1). To convert between the two, the mpl figure bounds + need to be mapped to a [0, 1] domain for x and y. The margins set + upon opening a new figure will appropriately match the mpl margins. + + Optionally, setting margins=0 and simply copying the domains from + mpl to plotly would place axes appropriately. However, + this would throw off axis and title labeling. + + Positional arguments: + mpl_plot_bounds -- the (x0, y0, width, height) params for current ax ** + mpl_max_y_bounds -- overall (y0, y1) bounds for all axes ** + + ** these are all specified in mpl figure coordinates + + """ + mpl_y_dom = [mpl_plot_bounds[1], mpl_plot_bounds[1] + mpl_plot_bounds[3]] + plotting_height = mpl_max_y_bounds[1] - mpl_max_y_bounds[0] + y0 = (mpl_y_dom[0] - mpl_max_y_bounds[0]) / plotting_height + y1 = (mpl_y_dom[1] - mpl_max_y_bounds[0]) / plotting_height + return [y0, y1] + + +def display_to_paper(x, y, layout): + """Convert mpl display coordinates to plotly paper coordinates. + + Plotly references object positions with an (x, y) coordinate pair in either + 'data' or 'paper' coordinates which reference actual data in a plot or + the entire plotly axes space where the bottom-left of the bottom-left + plot has the location (x, y) = (0, 0) and the top-right of the top-right + plot has the location (x, y) = (1, 1). Display coordinates in mpl reference + objects with an (x, y) pair in pixel coordinates, where the bottom-left + corner is at the location (x, y) = (0, 0) and the top-right corner is at + the location (x, y) = (figwidth*dpi, figheight*dpi). Here, figwidth and + figheight are in inches and dpi are the dots per inch resolution. + + """ + num_x = x - layout["margin"]["l"] + den_x = layout["width"] - (layout["margin"]["l"] + layout["margin"]["r"]) + num_y = y - layout["margin"]["b"] + den_y = layout["height"] - (layout["margin"]["b"] + layout["margin"]["t"]) + return num_x / den_x, num_y / den_y + + +def get_axes_bounds(fig): + """Return the entire axes space for figure. + + An axes object in mpl is specified by its relation to the figure where + (0,0) corresponds to the bottom-left part of the figure and (1,1) + corresponds to the top-right. Margins exist in matplotlib because axes + objects normally don't go to the edges of the figure. + + In plotly, the axes area (where all subplots go) is always specified with + the domain [0,1] for both x and y. This function finds the smallest box, + specified by two points, that all of the mpl axes objects fit into. This + box is then used to map mpl axes domains to plotly axes domains. + + """ + x_min, x_max, y_min, y_max = [], [], [], [] + for axes_obj in fig.get_axes(): + bounds = axes_obj.get_position().bounds + x_min.append(bounds[0]) + x_max.append(bounds[0] + bounds[2]) + y_min.append(bounds[1]) + y_max.append(bounds[1] + bounds[3]) + x_min, y_min, x_max, y_max = min(x_min), min(y_min), max(x_max), max(y_max) + return (x_min, x_max), (y_min, y_max) + + +def get_axis_mirror(main_spine, mirror_spine): + if main_spine and mirror_spine: + return "ticks" + elif main_spine and not mirror_spine: + return False + elif not main_spine and mirror_spine: + return False # can't handle this case yet! + else: + return False # nuttin'! + + +def get_bar_gap(bar_starts, bar_ends, tol=1e-10): + if len(bar_starts) == len(bar_ends) and len(bar_starts) > 1: + sides1 = bar_starts[1:] + sides2 = bar_ends[:-1] + gaps = [s2 - s1 for s2, s1 in zip(sides1, sides2)] + gap0 = gaps[0] + uniform = all([abs(gap0 - gap) < tol for gap in gaps]) + if uniform: + return gap0 + + +def convert_rgba_array(color_list): + clean_color_list = list() + for c in color_list: + clean_color_list += [ + dict(r=int(c[0] * 255), g=int(c[1] * 255), b=int(c[2] * 255), a=c[3]) + ] + plotly_colors = list() + for rgba in clean_color_list: + plotly_colors += ["rgba({r},{g},{b},{a})".format(**rgba)] + if len(plotly_colors) == 1: + return plotly_colors[0] + else: + return plotly_colors + + +def convert_path_array(path_array): + symbols = list() + for path in path_array: + symbols += [convert_path(path)] + if len(symbols) == 1: + return symbols[0] + else: + return symbols + + +def convert_linewidth_array(width_array): + if len(width_array) == 1: + return width_array[0] + else: + return width_array + + +def convert_size_array(size_array): + size = [math.sqrt(s) for s in size_array] + if len(size) == 1: + return size[0] + else: + return size + + +def get_markerstyle_from_collection(props): + markerstyle = dict( + alpha=None, + facecolor=convert_rgba_array(props["styles"]["facecolor"]), + marker=convert_path_array(props["paths"]), + edgewidth=convert_linewidth_array(props["styles"]["linewidth"]), + # markersize=convert_size_array(props['styles']['size']), # TODO! + markersize=convert_size_array(props["mplobj"].get_sizes()), + edgecolor=convert_rgba_array(props["styles"]["edgecolor"]), + ) + return markerstyle + + +def get_rect_xmin(data): + """Find minimum x value from four (x,y) vertices.""" + return min(data[0][0], data[1][0], data[2][0], data[3][0]) + + +def get_rect_xmax(data): + """Find maximum x value from four (x,y) vertices.""" + return max(data[0][0], data[1][0], data[2][0], data[3][0]) + + +def get_rect_ymin(data): + """Find minimum y value from four (x,y) vertices.""" + return min(data[0][1], data[1][1], data[2][1], data[3][1]) + + +def get_rect_ymax(data): + """Find maximum y value from four (x,y) vertices.""" + return max(data[0][1], data[1][1], data[2][1], data[3][1]) + + +def get_spine_visible(ax, spine_key): + """Return some spine parameters for the spine, `spine_key`.""" + spine = ax.spines[spine_key] + ax_frame_on = ax.get_frame_on() + position = spine._position or ("outward", 0.0) + if isinstance(position, str): + if position == "center": + position = ("axes", 0.5) + elif position == "zero": + position = ("data", 0) + position_type, amount = position + if position_type == "outward" and amount == 0: + spine_frame_like = True + else: + spine_frame_like = False + if not spine.get_visible(): + return False + elif not spine._edgecolor[-1]: # user's may have set edgecolor alpha==0 + return False + elif not ax_frame_on and spine_frame_like: + return False + elif ax_frame_on and spine_frame_like: + return True + elif not ax_frame_on and not spine_frame_like: + return True # we've already checked for that it's visible. + else: + return False # oh man, and i thought we exhausted the options... + + +def is_bar(bar_containers, **props): + """A test to decide whether a path is a bar from a vertical bar chart.""" + + # is this patch in a bar container? + for container in bar_containers: + if props["mplobj"] in container: + return True + return False + + +def make_bar(**props): + """Make an intermediate bar dictionary. + + This creates a bar dictionary which aids in the comparison of new bars to + old bars from other bar chart (patch) collections. This is not the + dictionary that needs to get passed to plotly as a data dictionary. That + happens in PlotlyRenderer in that class's draw_bar method. In other + words, this dictionary describes a SINGLE bar, whereas, plotly will + require a set of bars to be passed in a data dictionary. + + """ + return { + "bar": props["mplobj"], + "x0": get_rect_xmin(props["data"]), + "y0": get_rect_ymin(props["data"]), + "x1": get_rect_xmax(props["data"]), + "y1": get_rect_ymax(props["data"]), + "alpha": props["style"]["alpha"], + "edgecolor": props["style"]["edgecolor"], + "facecolor": props["style"]["facecolor"], + "edgewidth": props["style"]["edgewidth"], + "dasharray": props["style"]["dasharray"], + "zorder": props["style"]["zorder"], + } + + +def prep_ticks(ax, index, ax_type, props): + """Prepare axis obj belonging to axes obj. + + positional arguments: + ax - the mpl axes instance + index - the index of the axis in `props` + ax_type - 'x' or 'y' (for now) + props - an mplexporter poperties dictionary + + """ + axis_dict = dict() + if ax_type == "x": + axis = ax.get_xaxis() + elif ax_type == "y": + axis = ax.get_yaxis() + else: + return dict() # whoops! + + scale = props["axes"][index]["scale"] + if scale == "linear": + # get tick location information + try: + tickvalues = props["axes"][index]["tickvalues"] + tick0 = tickvalues[0] + dticks = [ + round(tickvalues[i] - tickvalues[i - 1], 12) + for i in range(1, len(tickvalues) - 1) + ] + if all([dticks[i] == dticks[i - 1] for i in range(1, len(dticks) - 1)]): + dtick = tickvalues[1] - tickvalues[0] + else: + warnings.warn( + "'linear' {0}-axis tick spacing not even, " + "ignoring mpl tick formatting.".format(ax_type) + ) + raise TypeError + except (IndexError, TypeError): + axis_dict["nticks"] = props["axes"][index]["nticks"] + else: + axis_dict["tick0"] = tick0 + axis_dict["dtick"] = dtick + axis_dict["tickmode"] = None + elif scale == "log": + try: + axis_dict["tick0"] = props["axes"][index]["tickvalues"][0] + axis_dict["dtick"] = ( + props["axes"][index]["tickvalues"][1] + - props["axes"][index]["tickvalues"][0] + ) + axis_dict["tickmode"] = None + except (IndexError, TypeError): + axis_dict = dict(nticks=props["axes"][index]["nticks"]) + base = axis.get_transform().base + if base == 10: + if ax_type == "x": + axis_dict["range"] = [ + math.log10(props["xlim"][0]), + math.log10(props["xlim"][1]), + ] + elif ax_type == "y": + axis_dict["range"] = [ + math.log10(props["ylim"][0]), + math.log10(props["ylim"][1]), + ] + else: + axis_dict = dict(range=None, type="linear") + warnings.warn( + "Converted non-base10 {0}-axis log scale to 'linear'".format(ax_type) + ) + else: + return dict() + # get tick label formatting information + formatter = axis.get_major_formatter().__class__.__name__ + if ax_type == "x" and "DateFormatter" in formatter: + axis_dict["type"] = "date" + try: + axis_dict["tick0"] = mpl_dates_to_datestrings(axis_dict["tick0"], formatter) + except KeyError: + pass + finally: + axis_dict.pop("dtick", None) + axis_dict.pop("tickmode", None) + axis_dict["range"] = mpl_dates_to_datestrings(props["xlim"], formatter) + + if formatter == "LogFormatterMathtext": + axis_dict["exponentformat"] = "e" + return axis_dict + + +def prep_xy_axis(ax, props, x_bounds, y_bounds): + xaxis = dict( + type=props["axes"][0]["scale"], + range=list(props["xlim"]), + showgrid=props["axes"][0]["grid"]["gridOn"], + domain=convert_x_domain(props["bounds"], x_bounds), + side=props["axes"][0]["position"], + tickfont=dict(size=props["axes"][0]["fontsize"]), + ) + xaxis.update(prep_ticks(ax, 0, "x", props)) + yaxis = dict( + type=props["axes"][1]["scale"], + range=list(props["ylim"]), + showgrid=props["axes"][1]["grid"]["gridOn"], + domain=convert_y_domain(props["bounds"], y_bounds), + side=props["axes"][1]["position"], + tickfont=dict(size=props["axes"][1]["fontsize"]), + ) + yaxis.update(prep_ticks(ax, 1, "y", props)) + return xaxis, yaxis + + +def mpl_dates_to_datestrings(dates, mpl_formatter): + """Convert matplotlib dates to iso-formatted-like time strings. + + Plotly's accepted format: "YYYY-MM-DD HH:MM:SS" (e.g., 2001-01-01 00:00:00) + + Info on mpl dates: http://matplotlib.org/api/dates_api.html + + """ + _dates = dates + + # this is a pandas datetime formatter, times show up in floating point days + # since the epoch (1970-01-01T00:00:00+00:00) + if mpl_formatter == "TimeSeries_DateFormatter": + try: + dates = matplotlib.dates.epoch2num([date * 24 * 60 * 60 for date in dates]) + dates = matplotlib.dates.num2date(dates) + except Exception: + return _dates + + # the rest of mpl dates are in floating point days since + # (0001-01-01T00:00:00+00:00) + 1. I.e., (0001-01-01T00:00:00+00:00) == 1.0 + # according to mpl --> try num2date(1) + else: + try: + dates = matplotlib.dates.num2date(dates) + except Exception: + return _dates + + time_stings = [ + " ".join(date.isoformat().split("+")[0].split("T")) for date in dates + ] + return time_stings + + +# dashed is dash in matplotlib +DASH_MAP = { + "10,0": "solid", + "6,6": "dash", + "2,2": "circle", + "4,4,2,4": "dashdot", + "none": "solid", + "7.4,3.2": "dash", +} + +PATH_MAP = { + ("M", "C", "C", "C", "C", "C", "C", "C", "C", "Z"): "o", + ("M", "L", "L", "L", "L", "L", "L", "L", "L", "L", "Z"): "*", + ("M", "L", "L", "L", "L", "L", "L", "L", "Z"): "8", + ("M", "L", "L", "L", "L", "L", "Z"): "h", + ("M", "L", "L", "L", "L", "Z"): "p", + ("M", "L", "M", "L", "M", "L"): "1", + ("M", "L", "L", "L", "Z"): "s", + ("M", "L", "M", "L"): "+", + ("M", "L", "L", "Z"): "^", + ("M", "L"): "|", +} + +SYMBOL_MAP = { + "o": "circle", + "v": "triangle-down", + "^": "triangle-up", + "<": "triangle-left", + ">": "triangle-right", + "s": "square", + "+": "cross", + "x": "x", + "*": "star", + "D": "diamond", + "d": "diamond", +} + +VA_MAP = {"center": "middle", "baseline": "bottom", "top": "top"} diff --git a/venv/lib/python3.8/site-packages/plotly/matplotlylib/renderer.py b/venv/lib/python3.8/site-packages/plotly/matplotlylib/renderer.py new file mode 100644 index 0000000..c95de52 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/matplotlylib/renderer.py @@ -0,0 +1,861 @@ +""" +Renderer Module + +This module defines the PlotlyRenderer class and a single function, +fig_to_plotly, which is intended to be the main way that user's will interact +with the matplotlylib package. + +""" + +import warnings + +import plotly.graph_objs as go +from plotly.matplotlylib.mplexporter import Renderer +from plotly.matplotlylib import mpltools + + +# Warning format +def warning_on_one_line(msg, category, filename, lineno, file=None, line=None): + return "%s:%s: %s:\n\n%s\n\n" % (filename, lineno, category.__name__, msg) + + +warnings.formatwarning = warning_on_one_line + + +class PlotlyRenderer(Renderer): + """A renderer class inheriting from base for rendering mpl plots in plotly. + + A renderer class to be used with an exporter for rendering matplotlib + plots in Plotly. This module defines the PlotlyRenderer class which handles + the creation of the JSON structures that get sent to plotly. + + All class attributes available are defined in __init__(). + + Basic Usage: + + # (mpl code) # + fig = gcf() + renderer = PlotlyRenderer(fig) + exporter = Exporter(renderer) + exporter.run(fig) # ... et voila + + """ + + def __init__(self): + """Initialize PlotlyRenderer obj. + + PlotlyRenderer obj is called on by an Exporter object to draw + matplotlib objects like figures, axes, text, etc. + + All class attributes are listed here in the __init__ method. + + """ + self.plotly_fig = go.Figure() + self.mpl_fig = None + self.current_mpl_ax = None + self.bar_containers = None + self.current_bars = [] + self.axis_ct = 0 + self.x_is_mpl_date = False + self.mpl_x_bounds = (0, 1) + self.mpl_y_bounds = (0, 1) + self.msg = "Initialized PlotlyRenderer\n" + + def open_figure(self, fig, props): + """Creates a new figure by beginning to fill out layout dict. + + The 'autosize' key is set to false so that the figure will mirror + sizes set by mpl. The 'hovermode' key controls what shows up when you + mouse around a figure in plotly, it's set to show the 'closest' point. + + Positional agurments: + fig -- a matplotlib.figure.Figure object. + props.keys(): [ + 'figwidth', + 'figheight', + 'dpi' + ] + + """ + self.msg += "Opening figure\n" + self.mpl_fig = fig + self.plotly_fig["layout"] = go.Layout( + width=int(props["figwidth"] * props["dpi"]), + height=int(props["figheight"] * props["dpi"]), + autosize=False, + hovermode="closest", + ) + self.mpl_x_bounds, self.mpl_y_bounds = mpltools.get_axes_bounds(fig) + margin = go.layout.Margin( + l=int(self.mpl_x_bounds[0] * self.plotly_fig["layout"]["width"]), + r=int((1 - self.mpl_x_bounds[1]) * self.plotly_fig["layout"]["width"]), + t=int((1 - self.mpl_y_bounds[1]) * self.plotly_fig["layout"]["height"]), + b=int(self.mpl_y_bounds[0] * self.plotly_fig["layout"]["height"]), + pad=0, + ) + self.plotly_fig["layout"]["margin"] = margin + + def close_figure(self, fig): + """Closes figure by cleaning up data and layout dictionaries. + + The PlotlyRenderer's job is to create an appropriate set of data and + layout dictionaries. When the figure is closed, some cleanup and + repair is necessary. This method removes inappropriate dictionary + entries, freeing up Plotly to use defaults and best judgements to + complete the entries. This method is called by an Exporter object. + + Positional arguments: + fig -- a matplotlib.figure.Figure object. + + """ + self.plotly_fig["layout"]["showlegend"] = False + self.msg += "Closing figure\n" + + def open_axes(self, ax, props): + """Setup a new axes object (subplot in plotly). + + Plotly stores information about subplots in different 'xaxis' and + 'yaxis' objects which are numbered. These are just dictionaries + included in the layout dictionary. This function takes information + from the Exporter, fills in appropriate dictionary entries, + and updates the layout dictionary. PlotlyRenderer keeps track of the + number of plots by incrementing the axis_ct attribute. + + Setting the proper plot domain in plotly is a bit tricky. Refer to + the documentation for mpltools.convert_x_domain and + mpltools.convert_y_domain. + + Positional arguments: + ax -- an mpl axes object. This will become a subplot in plotly. + props.keys() -- [ + 'axesbg', (background color for axes obj) + 'axesbgalpha', (alpha, or opacity for background) + 'bounds', ((x0, y0, width, height) for axes) + 'dynamic', (zoom/pan-able?) + 'axes', (list: [xaxis, yaxis]) + 'xscale', (log, linear, or date) + 'yscale', + 'xlim', (range limits for x) + 'ylim', + 'xdomain' (xdomain=xlim, unless it's a date) + 'ydomain' + ] + + """ + self.msg += " Opening axes\n" + self.current_mpl_ax = ax + self.bar_containers = [ + c + for c in ax.containers # empty is OK + if c.__class__.__name__ == "BarContainer" + ] + self.current_bars = [] + self.axis_ct += 1 + # set defaults in axes + xaxis = go.layout.XAxis( + anchor="y{0}".format(self.axis_ct), zeroline=False, ticks="inside" + ) + yaxis = go.layout.YAxis( + anchor="x{0}".format(self.axis_ct), zeroline=False, ticks="inside" + ) + # update defaults with things set in mpl + mpl_xaxis, mpl_yaxis = mpltools.prep_xy_axis( + ax=ax, props=props, x_bounds=self.mpl_x_bounds, y_bounds=self.mpl_y_bounds + ) + xaxis.update(mpl_xaxis) + yaxis.update(mpl_yaxis) + bottom_spine = mpltools.get_spine_visible(ax, "bottom") + top_spine = mpltools.get_spine_visible(ax, "top") + left_spine = mpltools.get_spine_visible(ax, "left") + right_spine = mpltools.get_spine_visible(ax, "right") + xaxis["mirror"] = mpltools.get_axis_mirror(bottom_spine, top_spine) + yaxis["mirror"] = mpltools.get_axis_mirror(left_spine, right_spine) + xaxis["showline"] = bottom_spine + yaxis["showline"] = top_spine + + # put axes in our figure + self.plotly_fig["layout"]["xaxis{0}".format(self.axis_ct)] = xaxis + self.plotly_fig["layout"]["yaxis{0}".format(self.axis_ct)] = yaxis + + # let all subsequent dates be handled properly if required + + if "type" in dir(xaxis) and xaxis["type"] == "date": + self.x_is_mpl_date = True + + def close_axes(self, ax): + """Close the axes object and clean up. + + Bars from bar charts are given to PlotlyRenderer one-by-one, + thus they need to be taken care of at the close of each axes object. + The self.current_bars variable should be empty unless a bar + chart has been created. + + Positional arguments: + ax -- an mpl axes object, not required at this time. + + """ + self.draw_bars(self.current_bars) + self.msg += " Closing axes\n" + self.x_is_mpl_date = False + + def draw_bars(self, bars): + # sort bars according to bar containers + mpl_traces = [] + for container in self.bar_containers: + mpl_traces.append( + [ + bar_props + for bar_props in self.current_bars + if bar_props["mplobj"] in container + ] + ) + for trace in mpl_traces: + self.draw_bar(trace) + + def draw_bar(self, coll): + """Draw a collection of similar patches as a bar chart. + + After bars are sorted, an appropriate data dictionary must be created + to tell plotly about this data. Just like draw_line or draw_markers, + draw_bar translates patch/path information into something plotly + understands. + + Positional arguments: + patch_coll -- a collection of patches to be drawn as a bar chart. + + """ + tol = 1e-10 + trace = [mpltools.make_bar(**bar_props) for bar_props in coll] + widths = [bar_props["x1"] - bar_props["x0"] for bar_props in trace] + heights = [bar_props["y1"] - bar_props["y0"] for bar_props in trace] + vertical = abs(sum(widths[0] - widths[iii] for iii in range(len(widths)))) < tol + horizontal = ( + abs(sum(heights[0] - heights[iii] for iii in range(len(heights)))) < tol + ) + if vertical and horizontal: + # Check for monotonic x. Can't both be true! + x_zeros = [bar_props["x0"] for bar_props in trace] + if all( + (x_zeros[iii + 1] > x_zeros[iii] for iii in range(len(x_zeros[:-1]))) + ): + orientation = "v" + else: + orientation = "h" + elif vertical: + orientation = "v" + else: + orientation = "h" + if orientation == "v": + self.msg += " Attempting to draw a vertical bar chart\n" + old_heights = [bar_props["y1"] for bar_props in trace] + for bar in trace: + bar["y0"], bar["y1"] = 0, bar["y1"] - bar["y0"] + new_heights = [bar_props["y1"] for bar_props in trace] + # check if we're stacked or not... + for old, new in zip(old_heights, new_heights): + if abs(old - new) > tol: + self.plotly_fig["layout"]["barmode"] = "stack" + self.plotly_fig["layout"]["hovermode"] = "x" + x = [bar["x0"] + (bar["x1"] - bar["x0"]) / 2 for bar in trace] + y = [bar["y1"] for bar in trace] + bar_gap = mpltools.get_bar_gap( + [bar["x0"] for bar in trace], [bar["x1"] for bar in trace] + ) + if self.x_is_mpl_date: + x = [bar["x0"] for bar in trace] + formatter = ( + self.current_mpl_ax.get_xaxis() + .get_major_formatter() + .__class__.__name__ + ) + x = mpltools.mpl_dates_to_datestrings(x, formatter) + else: + self.msg += " Attempting to draw a horizontal bar chart\n" + old_rights = [bar_props["x1"] for bar_props in trace] + for bar in trace: + bar["x0"], bar["x1"] = 0, bar["x1"] - bar["x0"] + new_rights = [bar_props["x1"] for bar_props in trace] + # check if we're stacked or not... + for old, new in zip(old_rights, new_rights): + if abs(old - new) > tol: + self.plotly_fig["layout"]["barmode"] = "stack" + self.plotly_fig["layout"]["hovermode"] = "y" + x = [bar["x1"] for bar in trace] + y = [bar["y0"] + (bar["y1"] - bar["y0"]) / 2 for bar in trace] + bar_gap = mpltools.get_bar_gap( + [bar["y0"] for bar in trace], [bar["y1"] for bar in trace] + ) + bar = go.Bar( + orientation=orientation, + x=x, + y=y, + xaxis="x{0}".format(self.axis_ct), + yaxis="y{0}".format(self.axis_ct), + opacity=trace[0]["alpha"], # TODO: get all alphas if array? + marker=go.bar.Marker( + color=trace[0]["facecolor"], # TODO: get all + line=dict(width=trace[0]["edgewidth"]), + ), + ) # TODO ditto + if len(bar["x"]) > 1: + self.msg += " Heck yeah, I drew that bar chart\n" + (self.plotly_fig.add_trace(bar),) + if bar_gap is not None: + self.plotly_fig["layout"]["bargap"] = bar_gap + else: + self.msg += " Bar chart not drawn\n" + warnings.warn( + "found box chart data with length <= 1, " + "assuming data redundancy, not plotting." + ) + + def draw_legend_shapes(self, mode, shape, **props): + """Create a shape that matches lines or markers in legends. + + Main issue is that path for circles do not render, so we have to use 'circle' + instead of 'path'. + """ + for single_mode in mode.split("+"): + x = props["data"][0][0] + y = props["data"][0][1] + if single_mode == "markers" and props.get("markerstyle"): + size = shape.pop("size", 6) + symbol = shape.pop("symbol") + # aligning to "center" + x0 = 0 + y0 = 0 + x1 = size + y1 = size + markerpath = props["markerstyle"].get("markerpath") + if markerpath is None and symbol != "circle": + self.msg += ( + "not sure how to handle this marker without a valid path\n" + ) + return + # marker path to SVG path conversion + path = " ".join( + [f"{a} {t[0]},{t[1]}" for a, t in zip(markerpath[1], markerpath[0])] + ) + + if symbol == "circle": + # symbols like . and o in matplotlib, use circle + # plotly also maps many other markers to circle, such as 1,8 and p + path = None + shape_type = "circle" + x0 = -size / 2 + y0 = size / 2 + x1 = size / 2 + y1 = size + size / 2 + else: + # triangles, star etc + shape_type = "path" + legend_shape = go.layout.Shape( + type=shape_type, + xref="paper", + yref="paper", + x0=x0, + y0=y0, + x1=x1, + y1=y1, + xsizemode="pixel", + ysizemode="pixel", + xanchor=x, + yanchor=y, + path=path, + **shape, + ) + + elif single_mode == "lines": + mode = "line" + x1 = props["data"][1][0] + y1 = props["data"][1][1] + + legend_shape = go.layout.Shape( + type=mode, + xref="paper", + yref="paper", + x0=x, + y0=y + 0.02, + x1=x1, + y1=y1 + 0.02, + **shape, + ) + else: + self.msg += "not sure how to handle this element\n" + return + self.plotly_fig.add_shape(legend_shape) + self.msg += " Heck yeah, I drew that shape\n" + + def draw_marked_line(self, **props): + """Create a data dict for a line obj. + + This will draw 'lines', 'markers', or 'lines+markers'. For legend elements, + this will use layout.shapes, so they can be positioned with paper refs. + + props.keys() -- [ + 'coordinates', ('data', 'axes', 'figure', or 'display') + 'data', (a list of xy pairs) + 'mplobj', (the matplotlib.lines.Line2D obj being rendered) + 'label', (the name of the Line2D obj being rendered) + 'linestyle', (linestyle dict, can be None, see below) + 'markerstyle', (markerstyle dict, can be None, see below) + ] + + props['linestyle'].keys() -- [ + 'alpha', (opacity of Line2D obj) + 'color', (color of the line if it exists, not the marker) + 'linewidth', + 'dasharray', (code for linestyle, see DASH_MAP in mpltools.py) + 'zorder', (viewing precedence when stacked with other objects) + ] + + props['markerstyle'].keys() -- [ + 'alpha', (opacity of Line2D obj) + 'marker', (the mpl marker symbol, see SYMBOL_MAP in mpltools.py) + 'facecolor', (color of the marker face) + 'edgecolor', (color of the marker edge) + 'edgewidth', (width of marker edge) + 'markerpath', (an SVG path for drawing the specified marker) + 'zorder', (viewing precedence when stacked with other objects) + ] + + """ + self.msg += " Attempting to draw a line " + line, marker, shape = {}, {}, {} + if props["linestyle"] and props["markerstyle"]: + self.msg += "... with both lines+markers\n" + mode = "lines+markers" + elif props["linestyle"]: + self.msg += "... with just lines\n" + mode = "lines" + elif props["markerstyle"]: + self.msg += "... with just markers\n" + mode = "markers" + if props["linestyle"]: + color = mpltools.merge_color_and_opacity( + props["linestyle"]["color"], props["linestyle"]["alpha"] + ) + + if props["coordinates"] == "data": + line = go.scatter.Line( + color=color, + width=props["linestyle"]["linewidth"], + dash=mpltools.convert_dash(props["linestyle"]["dasharray"]), + ) + else: + shape = dict( + line=dict( + color=color, + width=props["linestyle"]["linewidth"], + dash=mpltools.convert_dash(props["linestyle"]["dasharray"]), + ) + ) + if props["markerstyle"]: + if props["coordinates"] == "data": + marker = go.scatter.Marker( + opacity=props["markerstyle"]["alpha"], + color=props["markerstyle"]["facecolor"], + symbol=mpltools.convert_symbol(props["markerstyle"]["marker"]), + size=props["markerstyle"]["markersize"], + line=dict( + color=props["markerstyle"]["edgecolor"], + width=props["markerstyle"]["edgewidth"], + ), + ) + else: + shape = dict( + opacity=props["markerstyle"]["alpha"], + fillcolor=props["markerstyle"]["facecolor"], + symbol=mpltools.convert_symbol(props["markerstyle"]["marker"]), + size=props["markerstyle"]["markersize"], + line=dict( + color=props["markerstyle"]["edgecolor"], + width=props["markerstyle"]["edgewidth"], + ), + ) + if props["coordinates"] == "data": + marked_line = go.Scatter( + mode=mode, + name=( + str(props["label"]) + if isinstance(props["label"], str) + else props["label"] + ), + x=[xy_pair[0] for xy_pair in props["data"]], + y=[xy_pair[1] for xy_pair in props["data"]], + xaxis="x{0}".format(self.axis_ct), + yaxis="y{0}".format(self.axis_ct), + line=line, + marker=marker, + ) + if self.x_is_mpl_date: + formatter = ( + self.current_mpl_ax.get_xaxis() + .get_major_formatter() + .__class__.__name__ + ) + marked_line["x"] = mpltools.mpl_dates_to_datestrings( + marked_line["x"], formatter + ) + (self.plotly_fig.add_trace(marked_line),) + self.msg += " Heck yeah, I drew that line\n" + elif props["coordinates"] == "axes": + # dealing with legend graphical elements + self.draw_legend_shapes(mode=mode, shape=shape, **props) + else: + self.msg += " Line didn't have 'data' coordinates, not drawing\n" + warnings.warn( + "Bummer! Plotly can currently only draw Line2D " + "objects from matplotlib that are in 'data' " + "coordinates!" + ) + + def draw_image(self, **props): + """Draw image. + + Not implemented yet! + + """ + self.msg += " Attempting to draw image\n" + self.msg += " Not drawing image\n" + warnings.warn( + "Aw. Snap! You're gonna have to hold off on " + "the selfies for now. Plotly can't import " + "images from matplotlib yet!" + ) + + def draw_path_collection(self, **props): + """Add a path collection to data list as a scatter plot. + + Current implementation defaults such collections as scatter plots. + Matplotlib supports collections that have many of the same parameters + in common like color, size, path, etc. However, they needn't all be + the same. Plotly does not currently support such functionality and + therefore, the style for the first object is taken and used to define + the remaining paths in the collection. + + props.keys() -- [ + 'paths', (structure: [vertices, path_code]) + 'path_coordinates', ('data', 'axes', 'figure', or 'display') + 'path_transforms', (mpl transform, including Affine2D matrix) + 'offsets', (offset from axes, helpful if in 'data') + 'offset_coordinates', ('data', 'axes', 'figure', or 'display') + 'offset_order', + 'styles', (style dict, see below) + 'mplobj' (the collection obj being drawn) + ] + + props['styles'].keys() -- [ + 'linewidth', (one or more linewidths) + 'facecolor', (one or more facecolors for path) + 'edgecolor', (one or more edgecolors for path) + 'alpha', (one or more opacites for path) + 'zorder', (precedence when stacked) + ] + + """ + self.msg += " Attempting to draw a path collection\n" + if props["offset_coordinates"] == "data": + markerstyle = mpltools.get_markerstyle_from_collection(props) + scatter_props = { + "coordinates": "data", + "data": props["offsets"], + "label": None, + "markerstyle": markerstyle, + "linestyle": None, + } + self.msg += " Drawing path collection as markers\n" + self.draw_marked_line(**scatter_props) + else: + self.msg += " Path collection not linked to 'data', not drawing\n" + warnings.warn( + "Dang! That path collection is out of this " + "world. I totally don't know what to do with " + "it yet! Plotly can only import path " + "collections linked to 'data' coordinates" + ) + + def draw_path(self, **props): + """Draw path, currently only attempts to draw bar charts. + + This function attempts to sort a given path into a collection of + horizontal or vertical bar charts. Most of the actual code takes + place in functions from mpltools.py. + + props.keys() -- [ + 'data', (a list of verticies for the path) + 'coordinates', ('data', 'axes', 'figure', or 'display') + 'pathcodes', (code for the path, structure: ['M', 'L', 'Z', etc.]) + 'style', (style dict, see below) + 'mplobj' (the mpl path object) + ] + + props['style'].keys() -- [ + 'alpha', (opacity of path obj) + 'edgecolor', + 'facecolor', + 'edgewidth', + 'dasharray', (style for path's enclosing line) + 'zorder' (precedence of obj when stacked) + ] + + """ + self.msg += " Attempting to draw a path\n" + is_bar = mpltools.is_bar(self.current_mpl_ax.containers, **props) + if is_bar: + self.current_bars += [props] + else: + self.msg += " This path isn't a bar, not drawing\n" + warnings.warn( + "I found a path object that I don't think is part " + "of a bar chart. Ignoring." + ) + + def draw_text(self, **props): + """Create an annotation dict for a text obj. + + Currently, plotly uses either 'page' or 'data' to reference + annotation locations. These refer to 'display' and 'data', + respectively for the 'coordinates' key used in the Exporter. + Appropriate measures are taken to transform text locations to + reference one of these two options. + + props.keys() -- [ + 'text', (actual content string, not the text obj) + 'position', (an x, y pair, not an mpl Bbox) + 'coordinates', ('data', 'axes', 'figure', 'display') + 'text_type', ('title', 'xlabel', or 'ylabel') + 'style', (style dict, see below) + 'mplobj' (actual mpl text object) + ] + + props['style'].keys() -- [ + 'alpha', (opacity of text) + 'fontsize', (size in points of text) + 'color', (hex color) + 'halign', (horizontal alignment, 'left', 'center', or 'right') + 'valign', (vertical alignment, 'baseline', 'center', or 'top') + 'rotation', + 'zorder', (precedence of text when stacked with other objs) + ] + + """ + self.msg += " Attempting to draw an mpl text object\n" + if not mpltools.check_corners(props["mplobj"], self.mpl_fig): + warnings.warn( + "Looks like the annotation(s) you are trying \n" + "to draw lies/lay outside the given figure size.\n\n" + "Therefore, the resulting Plotly figure may not be \n" + "large enough to view the full text. To adjust \n" + "the size of the figure, use the 'width' and \n" + "'height' keys in the Layout object. Alternatively,\n" + "use the Margin object to adjust the figure's margins." + ) + align = props["mplobj"]._multialignment + if not align: + align = props["style"]["halign"] # mpl default + if "annotations" not in self.plotly_fig["layout"]: + self.plotly_fig["layout"]["annotations"] = [] + if props["text_type"] == "xlabel": + self.msg += " Text object is an xlabel\n" + self.draw_xlabel(**props) + elif props["text_type"] == "ylabel": + self.msg += " Text object is a ylabel\n" + self.draw_ylabel(**props) + elif props["text_type"] == "title": + self.msg += " Text object is a title\n" + self.draw_title(**props) + else: # just a regular text annotation... + self.msg += " Text object is a normal annotation\n" + if props["coordinates"] != "data": + self.msg += " Text object isn't linked to 'data' coordinates\n" + x_px, y_px = ( + props["mplobj"].get_transform().transform(props["position"]) + ) + x, y = mpltools.display_to_paper(x_px, y_px, self.plotly_fig["layout"]) + xref = "paper" + yref = "paper" + xanchor = props["style"]["halign"] # no difference here! + yanchor = mpltools.convert_va(props["style"]["valign"]) + else: + self.msg += " Text object is linked to 'data' coordinates\n" + x, y = props["position"] + axis_ct = self.axis_ct + xaxis = self.plotly_fig["layout"]["xaxis{0}".format(axis_ct)] + yaxis = self.plotly_fig["layout"]["yaxis{0}".format(axis_ct)] + if ( + xaxis["range"][0] < x < xaxis["range"][1] + and yaxis["range"][0] < y < yaxis["range"][1] + ): + xref = "x{0}".format(self.axis_ct) + yref = "y{0}".format(self.axis_ct) + else: + self.msg += ( + " Text object is outside " + "plotting area, making 'paper' reference.\n" + ) + x_px, y_px = ( + props["mplobj"].get_transform().transform(props["position"]) + ) + x, y = mpltools.display_to_paper( + x_px, y_px, self.plotly_fig["layout"] + ) + xref = "paper" + yref = "paper" + xanchor = props["style"]["halign"] # no difference here! + yanchor = mpltools.convert_va(props["style"]["valign"]) + annotation = go.layout.Annotation( + text=( + str(props["text"]) + if isinstance(props["text"], str) + else props["text"] + ), + opacity=props["style"]["alpha"], + x=x, + y=y, + xref=xref, + yref=yref, + align=align, + xanchor=xanchor, + yanchor=yanchor, + showarrow=False, # change this later? + font=go.layout.annotation.Font( + color=props["style"]["color"], size=props["style"]["fontsize"] + ), + ) + self.plotly_fig["layout"]["annotations"] += (annotation,) + self.msg += " Heck, yeah I drew that annotation\n" + + def draw_title(self, **props): + """Add a title to the current subplot in layout dictionary. + + If there exists more than a single plot in the figure, titles revert + to 'page'-referenced annotations. + + props.keys() -- [ + 'text', (actual content string, not the text obj) + 'position', (an x, y pair, not an mpl Bbox) + 'coordinates', ('data', 'axes', 'figure', 'display') + 'text_type', ('title', 'xlabel', or 'ylabel') + 'style', (style dict, see below) + 'mplobj' (actual mpl text object) + ] + + props['style'].keys() -- [ + 'alpha', (opacity of text) + 'fontsize', (size in points of text) + 'color', (hex color) + 'halign', (horizontal alignment, 'left', 'center', or 'right') + 'valign', (vertical alignment, 'baseline', 'center', or 'top') + 'rotation', + 'zorder', (precedence of text when stacked with other objs) + ] + + """ + self.msg += " Attempting to draw a title\n" + if len(self.mpl_fig.axes) > 1: + self.msg += " More than one subplot, adding title as annotation\n" + x_px, y_px = props["mplobj"].get_transform().transform(props["position"]) + x, y = mpltools.display_to_paper(x_px, y_px, self.plotly_fig["layout"]) + annotation = go.layout.Annotation( + text=props["text"], + font=go.layout.annotation.Font( + color=props["style"]["color"], size=props["style"]["fontsize"] + ), + xref="paper", + yref="paper", + x=x, + y=y, + xanchor="center", + yanchor="bottom", + showarrow=False, # no arrow for a title! + ) + self.plotly_fig["layout"]["annotations"] += (annotation,) + else: + self.msg += " Only one subplot found, adding as a plotly title\n" + self.plotly_fig["layout"]["title"] = props["text"] + title_font = dict( + size=props["style"]["fontsize"], color=props["style"]["color"] + ) + self.plotly_fig["layout"]["title_font"] = title_font + + def draw_xlabel(self, **props): + """Add an xaxis label to the current subplot in layout dictionary. + + props.keys() -- [ + 'text', (actual content string, not the text obj) + 'position', (an x, y pair, not an mpl Bbox) + 'coordinates', ('data', 'axes', 'figure', 'display') + 'text_type', ('title', 'xlabel', or 'ylabel') + 'style', (style dict, see below) + 'mplobj' (actual mpl text object) + ] + + props['style'].keys() -- [ + 'alpha', (opacity of text) + 'fontsize', (size in points of text) + 'color', (hex color) + 'halign', (horizontal alignment, 'left', 'center', or 'right') + 'valign', (vertical alignment, 'baseline', 'center', or 'top') + 'rotation', + 'zorder', (precedence of text when stacked with other objs) + ] + + """ + self.msg += " Adding xlabel\n" + axis_key = "xaxis{0}".format(self.axis_ct) + self.plotly_fig["layout"][axis_key]["title"] = str(props["text"]) + title_font = dict( + size=props["style"]["fontsize"], color=props["style"]["color"] + ) + self.plotly_fig["layout"][axis_key]["title_font"] = title_font + + def draw_ylabel(self, **props): + """Add a yaxis label to the current subplot in layout dictionary. + + props.keys() -- [ + 'text', (actual content string, not the text obj) + 'position', (an x, y pair, not an mpl Bbox) + 'coordinates', ('data', 'axes', 'figure', 'display') + 'text_type', ('title', 'xlabel', or 'ylabel') + 'style', (style dict, see below) + 'mplobj' (actual mpl text object) + ] + + props['style'].keys() -- [ + 'alpha', (opacity of text) + 'fontsize', (size in points of text) + 'color', (hex color) + 'halign', (horizontal alignment, 'left', 'center', or 'right') + 'valign', (vertical alignment, 'baseline', 'center', or 'top') + 'rotation', + 'zorder', (precedence of text when stacked with other objs) + ] + + """ + self.msg += " Adding ylabel\n" + axis_key = "yaxis{0}".format(self.axis_ct) + self.plotly_fig["layout"][axis_key]["title"] = props["text"] + title_font = dict( + size=props["style"]["fontsize"], color=props["style"]["color"] + ) + self.plotly_fig["layout"][axis_key]["title_font"] = title_font + + def resize(self): + """Revert figure layout to allow plotly to resize. + + By default, PlotlyRenderer tries its hardest to precisely mimic an + mpl figure. However, plotly is pretty good with aesthetics. By + running PlotlyRenderer.resize(), layout parameters are deleted. This + lets plotly choose them instead of mpl. + + """ + self.msg += "Resizing figure, deleting keys from layout\n" + for key in ["width", "height", "autosize", "margin"]: + try: + del self.plotly_fig["layout"][key] + except (KeyError, AttributeError): + pass + + def strip_style(self): + self.msg += "Stripping mpl style is no longer supported\n" diff --git a/venv/lib/python3.8/site-packages/plotly/missing_anywidget.py b/venv/lib/python3.8/site-packages/plotly/missing_anywidget.py new file mode 100644 index 0000000..73cca57 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/missing_anywidget.py @@ -0,0 +1,13 @@ +from .basedatatypes import BaseFigure + + +class FigureWidget(BaseFigure): + """ + FigureWidget stand-in for use when anywidget is not installed. The only purpose + of this class is to provide something to import as + `plotly.graph_objs.FigureWidget` when anywidget is not installed. This class + simply raises an informative error message when the constructor is called + """ + + def __init__(self, *args, **kwargs): + raise ImportError("Please install anywidget to use the FigureWidget class") diff --git a/venv/lib/python3.8/site-packages/plotly/offline/__init__.py b/venv/lib/python3.8/site-packages/plotly/offline/__init__.py new file mode 100644 index 0000000..6088af9 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/offline/__init__.py @@ -0,0 +1,18 @@ +# ruff: noqa: F401 +""" +offline +====== +This module provides offline functionality. +""" + +from .offline import ( + download_plotlyjs, + get_plotlyjs_version, + get_plotlyjs, + enable_mpl_offline, + init_notebook_mode, + iplot, + iplot_mpl, + plot, + plot_mpl, +) diff --git a/venv/lib/python3.8/site-packages/plotly/offline/_plotlyjs_version.py b/venv/lib/python3.8/site-packages/plotly/offline/_plotlyjs_version.py new file mode 100644 index 0000000..ec19413 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/offline/_plotlyjs_version.py @@ -0,0 +1,3 @@ +# DO NOT EDIT +# This file is generated by the updatebundle commands.py command +__plotlyjs_version__ = "3.0.1" diff --git a/venv/lib/python3.8/site-packages/plotly/offline/offline.py b/venv/lib/python3.8/site-packages/plotly/offline/offline.py new file mode 100644 index 0000000..bf94f03 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/offline/offline.py @@ -0,0 +1,834 @@ +"""Plotly Offline +A module to use Plotly's graphing library with Python +without connecting to a public or private plotly enterprise +server. +""" + +import os +import warnings +import pkgutil + +from plotly.optional_imports import get_module +from plotly import tools +from ._plotlyjs_version import __plotlyjs_version__ + + +__IMAGE_FORMATS = ["jpeg", "png", "webp", "svg"] + + +def download_plotlyjs(download_url): + warnings.warn( + """ + `download_plotlyjs` is deprecated and will be removed in the + next release. plotly.js is shipped with this module, it is no + longer necessary to download this bundle separately. + """, + DeprecationWarning, + ) + + +def get_plotlyjs_version(): + """ + Returns the version of plotly.js that is bundled with plotly.py. + + Returns + ------- + str + Plotly.js version string + """ + return __plotlyjs_version__ + + +def get_plotlyjs(): + """ + Return the contents of the minified plotly.js library as a string. + + This may be useful when building standalone HTML reports. + + Returns + ------- + str + Contents of the minified plotly.js library as a string + + Examples + -------- + Here is an example of creating a standalone HTML report that contains + two plotly figures, each in their own div. The include_plotlyjs argument + is set to False when creating the divs so that we don't include multiple + copies of the plotly.js library in the output. Instead, a single copy + of plotly.js is included in a script tag in the html head element. + + >>> import plotly.graph_objs as go + >>> from plotly.offline import plot, get_plotlyjs + >>> fig1 = go.Figure(data=[{'type': 'bar', 'y': [1, 3, 2]}], + ... layout={'height': 400}) + >>> fig2 = go.Figure(data=[{'type': 'scatter', 'y': [1, 3, 2]}], + ... layout={'height': 400}) + >>> div1 = plot(fig1, output_type='div', include_plotlyjs=False) + >>> div2 = plot(fig2, output_type='div', include_plotlyjs=False) + + >>> html = ''' + ... + ... + ... + ... + ... + ... {div1} + ... {div2} + ... + ... + ... '''.format(plotlyjs=get_plotlyjs(), div1=div1, div2=div2) + + >>> with open('multi_plot.html', 'w') as f: + ... f.write(html) # doctest: +SKIP + """ + path = os.path.join("package_data", "plotly.min.js") + plotlyjs = pkgutil.get_data("plotly", path).decode("utf-8") + return plotlyjs + + +def _build_resize_script(plotdivid, plotly_root="Plotly"): + resize_script = ( + '" + ).format(plotly_root=plotly_root, id=plotdivid) + return resize_script + + +def _build_mathjax_script(url): + return ''.format(url=url) + + +def _get_jconfig(config=None): + configkeys = ( + "staticPlot", + "plotlyServerURL", + "editable", + "edits", + "autosizable", + "responsive", + "queueLength", + "fillFrame", + "frameMargins", + "scrollZoom", + "doubleClick", + "showTips", + "showAxisDragHandles", + "showAxisRangeEntryBoxes", + "showLink", + "sendData", + "showSendToCloud", + "linkText", + "showSources", + "displayModeBar", + "modeBarButtonsToRemove", + "modeBarButtonsToAdd", + "modeBarButtons", + "toImageButtonOptions", + "displaylogo", + "watermark", + "plotGlPixelRatio", + "setBackground", + "topojsonURL", + "mapboxAccessToken", + "logging", + "globalTransforms", + "locale", + "locales", + "doubleClickDelay", + ) + + if config and isinstance(config, dict): + # Warn user on unrecognized config options. We make this a warning + # rather than an error since we don't have code generation logic in + # place yet to guarantee that the config options in plotly.py are up + # to date + bad_config = [k for k in config if k not in configkeys] + if bad_config: + warnings.warn( + """ +Unrecognized config options supplied: {bad_config}""".format(bad_config=bad_config) + ) + + clean_config = config + else: + clean_config = {} + + plotly_platform_url = tools.get_config_plotly_server_url() + + if not clean_config.get("plotlyServerURL", None): + clean_config["plotlyServerURL"] = plotly_platform_url + + if ( + plotly_platform_url != "https://plot.ly" + and clean_config.get("linkText", None) == "Export to plot.ly" + ): + link_domain = plotly_platform_url.replace("https://", "").replace("http://", "") + link_text = clean_config["linkText"].replace("plot.ly", link_domain) + clean_config["linkText"] = link_text + + return clean_config + + +# Build script to set global PlotlyConfig object. This must execute before +# plotly.js is loaded. +_window_plotly_config = """\ +""" + +_mathjax_config = """\ +""" + + +def get_image_download_script(caller): + """ + This function will return a script that will download an image of a Plotly + plot. + + Keyword Arguments: + caller ('plot', 'iplot') -- specifies which function made the call for the + download script. If `iplot`, then an extra condition is added into the + download script to ensure that download prompts aren't initiated on + page reloads. + """ + + if caller == "iplot": + check_start = "if(document.readyState == 'complete') {{" + check_end = "}}" + elif caller == "plot": + check_start = "" + check_end = "" + else: + raise ValueError("caller should only be one of `iplot` or `plot`") + + return ( + "function downloadimage(format, height, width," + " filename) {{" + "var p = document.getElementById('{{plot_id}}');" + "Plotly.downloadImage(p, {{format: format, height: height, " + "width: width, filename: filename}});}};" + + check_start + + "downloadimage('{format}', {height}, {width}, " + "'{filename}');" + check_end + ) + + +def build_save_image_post_script( + image, image_filename, image_height, image_width, caller +): + if image: + if image not in __IMAGE_FORMATS: + raise ValueError( + "The image parameter must be one of the following: {}".format( + __IMAGE_FORMATS + ) + ) + + script = get_image_download_script(caller) + post_script = script.format( + format=image, + width=image_width, + height=image_height, + filename=image_filename, + ) + else: + post_script = None + + return post_script + + +def init_notebook_mode(connected=False): + """ + Initialize plotly.js in the browser if it hasn't been loaded into the DOM + yet. This is an idempotent method and can and should be called from any + offline methods that require plotly.js to be loaded into the notebook dom. + + Keyword arguments: + + connected (default=False) -- If True, the plotly.js library will be loaded + from an online CDN. If False, the plotly.js library will be loaded locally + from the plotly python package + + Use `connected=True` if you want your notebooks to have smaller file sizes. + In the case where `connected=False`, the entirety of the plotly.js library + will be loaded into the notebook, which will result in a file-size increase + of a couple megabytes. Additionally, because the library will be downloaded + from the web, you and your viewers must be connected to the internet to be + able to view charts within this notebook. + + Use `connected=False` if you want you and your collaborators to be able to + create and view these charts regardless of the availability of an internet + connection. This is the default option since it is the most predictable. + Note that under this setting the library will be included inline inside + your notebook, resulting in much larger notebook sizes compared to the case + where `connected=True`. + """ + import plotly.io as pio + + ipython = get_module("IPython") + if not ipython: + raise ImportError("`iplot` can only run inside an IPython Notebook.") + + if connected: + pio.renderers.default = "plotly_mimetype+notebook_connected" + else: + pio.renderers.default = "plotly_mimetype+notebook" + + # Trigger immediate activation of notebook. This way the plotly.js + # library reference is available to the notebook immediately + pio.renderers._activate_pending_renderers() + + +def iplot( + figure_or_data, + show_link=False, + link_text="Export to plot.ly", + validate=True, + image=None, + filename="plot_image", + image_width=800, + image_height=600, + config=None, + auto_play=True, + animation_opts=None, +): + """ + Draw plotly graphs inside an IPython or Jupyter notebook + + figure_or_data -- a plotly.graph_objs.Figure or plotly.graph_objs.Data or + dict or list that describes a Plotly graph. + See https://plot.ly/python/ for examples of + graph descriptions. + + Keyword arguments: + show_link (default=False) -- display a link in the bottom-right corner of + of the chart that will export the chart to + Plotly Cloud or Plotly Enterprise + link_text (default='Export to plot.ly') -- the text of export link + validate (default=True) -- validate that all of the keys in the figure + are valid? omit if your version of plotly.js + has become outdated with your version of + graph_reference.json or if you need to include + extra, unnecessary keys in your figure. + image (default=None |'png' |'jpeg' |'svg' |'webp') -- This parameter sets + the format of the image to be downloaded, if we choose to download an + image. This parameter has a default value of None indicating that no + image should be downloaded. Please note: for higher resolution images + and more export options, consider using plotly.io.write_image. See + https://plot.ly/python/static-image-export/ for more details. + filename (default='plot') -- Sets the name of the file your image + will be saved to. The extension should not be included. + image_height (default=600) -- Specifies the height of the image in `px`. + image_width (default=800) -- Specifies the width of the image in `px`. + config (default=None) -- Plot view options dictionary. Keyword arguments + `show_link` and `link_text` set the associated options in this + dictionary if it doesn't contain them already. + auto_play (default=True) -- Whether to automatically start the animation + sequence on page load, if the figure contains frames. Has no effect if + the figure does not contain frames. + animation_opts (default=None) -- Dict of custom animation parameters that + are used for the automatically started animation on page load. This + dict is passed to the function Plotly.animate in Plotly.js. See + https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js + for available options. Has no effect if the figure + does not contain frames, or auto_play is False. + + Example: + ``` + from plotly.offline import init_notebook_mode, iplot + init_notebook_mode() + iplot([{'x': [1, 2, 3], 'y': [5, 2, 7]}]) + # We can also download an image of the plot by setting the image to the + format you want. e.g. `image='png'` + iplot([{'x': [1, 2, 3], 'y': [5, 2, 7]}], image='png') + ``` + + animation_opts Example: + ``` + from plotly.offline import iplot + figure = {'data': [{'x': [0, 1], 'y': [0, 1]}], + 'layout': {'xaxis': {'range': [0, 5], 'autorange': False}, + 'yaxis': {'range': [0, 5], 'autorange': False}, + 'title': 'Start Title'}, + 'frames': [{'data': [{'x': [1, 2], 'y': [1, 2]}]}, + {'data': [{'x': [1, 4], 'y': [1, 4]}]}, + {'data': [{'x': [3, 4], 'y': [3, 4]}], + 'layout': {'title': 'End Title'}}]} + iplot(figure, animation_opts={'frame': {'duration': 1}}) + ``` + """ + import plotly.io as pio + + ipython = get_module("IPython") + if not ipython: + raise ImportError("`iplot` can only run inside an IPython Notebook.") + + config = dict(config) if config else {} + config.setdefault("showLink", show_link) + config.setdefault("linkText", link_text) + + # Get figure + figure = tools.return_figure_from_figure_or_data(figure_or_data, validate) + + # Handle image request + post_script = build_save_image_post_script( + image, filename, image_height, image_width, "iplot" + ) + + # Show figure + pio.show( + figure, + validate=validate, + config=config, + auto_play=auto_play, + post_script=post_script, + animation_opts=animation_opts, + ) + + +def plot( + figure_or_data, + show_link=False, + link_text="Export to plot.ly", + validate=True, + output_type="file", + include_plotlyjs=True, + filename="temp-plot.html", + auto_open=True, + image=None, + image_filename="plot_image", + image_width=800, + image_height=600, + config=None, + include_mathjax=False, + auto_play=True, + animation_opts=None, +): + """Create a plotly graph locally as an HTML document or string. + + Example: + ``` + from plotly.offline import plot + import plotly.graph_objs as go + + plot([go.Scatter(x=[1, 2, 3], y=[3, 2, 6])], filename='my-graph.html') + # We can also download an image of the plot by setting the image parameter + # to the image format we want + plot([go.Scatter(x=[1, 2, 3], y=[3, 2, 6])], filename='my-graph.html', + image='jpeg') + ``` + More examples below. + + figure_or_data -- a plotly.graph_objs.Figure or plotly.graph_objs.Data or + dict or list that describes a Plotly graph. + See https://plot.ly/python/ for examples of + graph descriptions. + + Keyword arguments: + show_link (default=False) -- display a link in the bottom-right corner of + of the chart that will export the chart to Plotly Cloud or + Plotly Enterprise + link_text (default='Export to plot.ly') -- the text of export link + validate (default=True) -- validate that all of the keys in the figure + are valid? omit if your version of plotly.js has become outdated + with your version of graph_reference.json or if you need to include + extra, unnecessary keys in your figure. + output_type ('file' | 'div' - default 'file') -- if 'file', then + the graph is saved as a standalone HTML file and `plot` + returns None. + If 'div', then `plot` returns a string that just contains the + HTML
that contains the graph and the script to generate the + graph. + Use 'file' if you want to save and view a single graph at a time + in a standalone HTML file. + Use 'div' if you are embedding these graphs in an HTML file with + other graphs or HTML markup, like a HTML report or an website. + include_plotlyjs (True | False | 'cdn' | 'directory' | path - default=True) + Specifies how the plotly.js library is included in the output html + file or div string. + + If True, a script tag containing the plotly.js source code (~3MB) + is included in the output. HTML files generated with this option are + fully self-contained and can be used offline. + + If 'cdn', a script tag that references the plotly.js CDN is included + in the output. HTML files generated with this option are about 3MB + smaller than those generated with include_plotlyjs=True, but they + require an active internet connection in order to load the plotly.js + library. + + If 'directory', a script tag is included that references an external + plotly.min.js bundle that is assumed to reside in the same + directory as the HTML file. If output_type='file' then the + plotly.min.js bundle is copied into the directory of the resulting + HTML file. If a file named plotly.min.js already exists in the output + directory then this file is left unmodified and no copy is performed. + HTML files generated with this option can be used offline, but they + require a copy of the plotly.min.js bundle in the same directory. + This option is useful when many figures will be saved as HTML files in + the same directory because the plotly.js source code will be included + only once per output directory, rather than once per output file. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point + the resulting HTML file to an alternative CDN. + + If False, no script tag referencing plotly.js is included. This is + useful when output_type='div' and the resulting div string will be + placed inside an HTML document that already loads plotly.js. This + option is not advised when output_type='file' as it will result in + a non-functional html file. + filename (default='temp-plot.html') -- The local filename to save the + outputted chart to. If the filename already exists, it will be + overwritten. This argument only applies if `output_type` is 'file'. + auto_open (default=True) -- If True, open the saved file in a + web browser after saving. + This argument only applies if `output_type` is 'file'. + image (default=None |'png' |'jpeg' |'svg' |'webp') -- This parameter sets + the format of the image to be downloaded, if we choose to download an + image. This parameter has a default value of None indicating that no + image should be downloaded. Please note: for higher resolution images + and more export options, consider making requests to our image servers. + Type: `help(py.image)` for more details. + image_filename (default='plot_image') -- Sets the name of the file your + image will be saved to. The extension should not be included. + image_height (default=600) -- Specifies the height of the image in `px`. + image_width (default=800) -- Specifies the width of the image in `px`. + config (default=None) -- Plot view options dictionary. Keyword arguments + `show_link` and `link_text` set the associated options in this + dictionary if it doesn't contain them already. + include_mathjax (False | 'cdn' | path - default=False) -- + Specifies how the MathJax.js library is included in the output html + file or div string. MathJax is required in order to display labels + with LaTeX typesetting. + + If False, no script tag referencing MathJax.js will be included in the + output. HTML files generated with this option will not be able to + display LaTeX typesetting. + + If 'cdn', a script tag that references a MathJax CDN location will be + included in the output. HTML files generated with this option will be + able to display LaTeX typesetting as long as they have internet access. + + If a string that ends in '.js', a script tag is included that + references the specified path. This approach can be used to point the + resulting HTML file to an alternative CDN. + auto_play (default=True) -- Whether to automatically start the animation + sequence on page load if the figure contains frames. Has no effect if + the figure does not contain frames. + animation_opts (default=None) -- Dict of custom animation parameters that + are used for the automatically started animation on page load. This + dict is passed to the function Plotly.animate in Plotly.js. See + https://github.com/plotly/plotly.js/blob/master/src/plots/animation_attributes.js + for available options. Has no effect if the figure + does not contain frames, or auto_play is False. + + Example: + ``` + from plotly.offline import plot + figure = {'data': [{'x': [0, 1], 'y': [0, 1]}], + 'layout': {'xaxis': {'range': [0, 5], 'autorange': False}, + 'yaxis': {'range': [0, 5], 'autorange': False}, + 'title': 'Start Title'}, + 'frames': [{'data': [{'x': [1, 2], 'y': [1, 2]}]}, + {'data': [{'x': [1, 4], 'y': [1, 4]}]}, + {'data': [{'x': [3, 4], 'y': [3, 4]}], + 'layout': {'title': 'End Title'}}]} + plot(figure, animation_opts={'frame': {'duration': 1}}) + ``` + """ + import plotly.io as pio + + # Output type + if output_type not in ["div", "file"]: + raise ValueError( + "`output_type` argument must be 'div' or 'file'. " + "You supplied `" + output_type + "``" + ) + if not filename.endswith(".html") and output_type == "file": + warnings.warn( + "Your filename `" + filename + "` didn't end with .html. " + "Adding .html to the end of your file." + ) + filename += ".html" + + # Config + config = dict(config) if config else {} + config.setdefault("showLink", show_link) + config.setdefault("linkText", link_text) + + figure = tools.return_figure_from_figure_or_data(figure_or_data, validate) + width = figure.get("layout", {}).get("width", "100%") + height = figure.get("layout", {}).get("height", "100%") + + if width == "100%" or height == "100%": + config.setdefault("responsive", True) + + # Handle image request + post_script = build_save_image_post_script( + image, image_filename, image_height, image_width, "plot" + ) + + if output_type == "file": + pio.write_html( + figure, + filename, + config=config, + auto_play=auto_play, + include_plotlyjs=include_plotlyjs, + include_mathjax=include_mathjax, + post_script=post_script, + full_html=True, + validate=validate, + animation_opts=animation_opts, + auto_open=auto_open, + ) + return filename + else: + return pio.to_html( + figure, + config=config, + auto_play=auto_play, + include_plotlyjs=include_plotlyjs, + include_mathjax=include_mathjax, + post_script=post_script, + full_html=False, + validate=validate, + animation_opts=animation_opts, + ) + + +def plot_mpl( + mpl_fig, + resize=False, + strip_style=False, + verbose=False, + show_link=False, + link_text="Export to plot.ly", + validate=True, + output_type="file", + include_plotlyjs=True, + filename="temp-plot.html", + auto_open=True, + image=None, + image_filename="plot_image", + image_height=600, + image_width=800, +): + """ + Convert a matplotlib figure to a Plotly graph stored locally as HTML. + + For more information on converting matplotlib visualizations to plotly + graphs, call help(plotly.tools.mpl_to_plotly) + + For more information on creating plotly charts locally as an HTML document + or string, call help(plotly.offline.plot) + + mpl_fig -- a matplotlib figure object to convert to a plotly graph + + Keyword arguments: + resize (default=False) -- allow plotly to choose the figure size. + strip_style (default=False) -- allow plotly to choose style options. + verbose (default=False) -- print message. + show_link (default=False) -- display a link in the bottom-right corner of + of the chart that will export the chart to Plotly Cloud or + Plotly Enterprise + link_text (default='Export to plot.ly') -- the text of export link + validate (default=True) -- validate that all of the keys in the figure + are valid? omit if your version of plotly.js has become outdated + with your version of graph_reference.json or if you need to include + extra, unnecessary keys in your figure. + output_type ('file' | 'div' - default 'file') -- if 'file', then + the graph is saved as a standalone HTML file and `plot` + returns None. + If 'div', then `plot` returns a string that just contains the + HTML
that contains the graph and the script to generate the + graph. + Use 'file' if you want to save and view a single graph at a time + in a standalone HTML file. + Use 'div' if you are embedding these graphs in an HTML file with + other graphs or HTML markup, like a HTML report or an website. + include_plotlyjs (default=True) -- If True, include the plotly.js + source code in the output file or string. + Set as False if your HTML file already contains a copy of the plotly.js + library. + filename (default='temp-plot.html') -- The local filename to save the + outputted chart to. If the filename already exists, it will be + overwritten. This argument only applies if `output_type` is 'file'. + auto_open (default=True) -- If True, open the saved file in a + web browser after saving. + This argument only applies if `output_type` is 'file'. + image (default=None |'png' |'jpeg' |'svg' |'webp') -- This parameter sets + the format of the image to be downloaded, if we choose to download an + image. This parameter has a default value of None indicating that no + image should be downloaded. + image_filename (default='plot_image') -- Sets the name of the file your + image will be saved to. The extension should not be included. + image_height (default=600) -- Specifies the height of the image in `px`. + image_width (default=800) -- Specifies the width of the image in `px`. + + Example: + ``` + from plotly.offline import init_notebook_mode, plot_mpl + import matplotlib.pyplot as plt + + init_notebook_mode() + + fig = plt.figure() + x = [10, 15, 20, 25, 30] + y = [100, 250, 200, 150, 300] + plt.plot(x, y, "o") + + plot_mpl(fig) + # If you want to to download an image of the figure as well + plot_mpl(fig, image='png') + ``` + """ + plotly_plot = tools.mpl_to_plotly(mpl_fig, resize, strip_style, verbose) + return plot( + plotly_plot, + show_link, + link_text, + validate, + output_type, + include_plotlyjs, + filename, + auto_open, + image=image, + image_filename=image_filename, + image_height=image_height, + image_width=image_width, + ) + + +def iplot_mpl( + mpl_fig, + resize=False, + strip_style=False, + verbose=False, + show_link=False, + link_text="Export to plot.ly", + validate=True, + image=None, + image_filename="plot_image", + image_height=600, + image_width=800, +): + """ + Convert a matplotlib figure to a plotly graph and plot inside an IPython + notebook without connecting to an external server. + + To save the chart to Plotly Cloud or Plotly Enterprise, use + `plotly.plotly.plot_mpl`. + + For more information on converting matplotlib visualizations to plotly + graphs call `help(plotly.tools.mpl_to_plotly)` + + For more information on plotting plotly charts offline in an Ipython + notebook call `help(plotly.offline.iplot)` + + mpl_fig -- a matplotlib.figure to convert to a plotly graph + + Keyword arguments: + resize (default=False) -- allow plotly to choose the figure size. + strip_style (default=False) -- allow plotly to choose style options. + verbose (default=False) -- print message. + show_link (default=False) -- display a link in the bottom-right corner of + of the chart that will export the chart to + Plotly Cloud or Plotly Enterprise + link_text (default='Export to plot.ly') -- the text of export link + validate (default=True) -- validate that all of the keys in the figure + are valid? omit if your version of plotly.js + has become outdated with your version of + graph_reference.json or if you need to include + extra, unnecessary keys in your figure. + image (default=None |'png' |'jpeg' |'svg' |'webp') -- This parameter sets + the format of the image to be downloaded, if we choose to download an + image. This parameter has a default value of None indicating that no + image should be downloaded. + image_filename (default='plot_image') -- Sets the name of the file your + image will be saved to. The extension should not be included. + image_height (default=600) -- Specifies the height of the image in `px`. + image_width (default=800) -- Specifies the width of the image in `px`. + + Example: + ``` + from plotly.offline import init_notebook_mode, iplot_mpl + import matplotlib.pyplot as plt + + fig = plt.figure() + x = [10, 15, 20, 25, 30] + y = [100, 250, 200, 150, 300] + plt.plot(x, y, "o") + + init_notebook_mode() + iplot_mpl(fig) + # and if you want to download an image of the figure as well + iplot_mpl(fig, image='jpeg') + ``` + """ + plotly_plot = tools.mpl_to_plotly(mpl_fig, resize, strip_style, verbose) + return iplot( + plotly_plot, + show_link, + link_text, + validate, + image=image, + filename=image_filename, + image_height=image_height, + image_width=image_width, + ) + + +def enable_mpl_offline( + resize=False, + strip_style=False, + verbose=False, + show_link=False, + link_text="Export to plot.ly", + validate=True, +): + """ + Convert mpl plots to locally hosted HTML documents. + + This function should be used with the inline matplotlib backend + that ships with IPython that can be enabled with `%pylab inline` + or `%matplotlib inline`. This works by adding an HTML formatter + for Figure objects; the existing SVG/PNG formatters will remain + enabled. + + (idea taken from `mpld3._display.enable_notebook`) + + Example: + ``` + from plotly.offline import enable_mpl_offline + import matplotlib.pyplot as plt + + enable_mpl_offline() + + fig = plt.figure() + x = [10, 15, 20, 25, 30] + y = [100, 250, 200, 150, 300] + plt.plot(x, y, "o") + fig + ``` + """ + init_notebook_mode() + ipython = get_module("IPython") + matplotlib = get_module("matplotlib") + + ip = ipython.core.getipython.get_ipython() + formatter = ip.display_formatter.formatters["text/html"] + formatter.for_type( + matplotlib.figure.Figure, + lambda fig: iplot_mpl( + fig, resize, strip_style, verbose, show_link, link_text, validate + ), + ) diff --git a/venv/lib/python3.8/site-packages/plotly/optional_imports.py b/venv/lib/python3.8/site-packages/plotly/optional_imports.py new file mode 100644 index 0000000..6c72e7d --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/optional_imports.py @@ -0,0 +1 @@ +from _plotly_utils.optional_imports import get_module # noqa: F401 diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/carshare.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/carshare.csv.gz new file mode 100644 index 0000000..0586525 Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/carshare.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.csv.gz new file mode 100644 index 0000000..e97ee22 Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.geojson.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.geojson.gz new file mode 100644 index 0000000..3cb20e4 Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/election.geojson.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/experiment.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/experiment.csv.gz new file mode 100644 index 0000000..427e540 Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/experiment.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/gapminder.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/gapminder.csv.gz new file mode 100644 index 0000000..f673f5b Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/gapminder.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/iris.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/iris.csv.gz new file mode 100644 index 0000000..9cb357e Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/iris.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/medals.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/medals.csv.gz new file mode 100644 index 0000000..ae2e1dd Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/medals.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/stocks.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/stocks.csv.gz new file mode 100644 index 0000000..4f178a4 Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/stocks.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/tips.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/tips.csv.gz new file mode 100644 index 0000000..91996d3 Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/tips.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/datasets/wind.csv.gz b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/wind.csv.gz new file mode 100644 index 0000000..53d0b2d Binary files /dev/null and b/venv/lib/python3.8/site-packages/plotly/package_data/datasets/wind.csv.gz differ diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/plotly.min.js b/venv/lib/python3.8/site-packages/plotly/package_data/plotly.min.js new file mode 100644 index 0000000..56e81d4 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/package_data/plotly.min.js @@ -0,0 +1,3879 @@ +/** +* plotly.js v3.0.1 +* Copyright 2012-2025, Plotly, Inc. +* All rights reserved. +* Licensed under the MIT license +*/ +( + function(root, factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else { + root.moduleName = factory(); + } +} (typeof self !== "undefined" ? self : this, () => { +"use strict";var Plotly=(()=>{var VQe=Object.create;var MS=Object.defineProperty,HQe=Object.defineProperties,GQe=Object.getOwnPropertyDescriptor,jQe=Object.getOwnPropertyDescriptors,WQe=Object.getOwnPropertyNames,XQ=Object.getOwnPropertySymbols,ZQe=Object.getPrototypeOf,KQ=Object.prototype.hasOwnProperty,XQe=Object.prototype.propertyIsEnumerable;var YQ=(e,t,r)=>t in e?MS(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,JQ=(e,t)=>{for(var r in t||(t={}))KQ.call(t,r)&&YQ(e,r,t[r]);if(XQ)for(var r of XQ(t))XQe.call(t,r)&&YQ(e,r,t[r]);return e},$Q=(e,t)=>HQe(e,jQe(t));var Ll=(e,t)=>()=>(e&&(t=e(e=0)),t);var ye=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),QQ=(e,t)=>{for(var r in t)MS(e,r,{get:t[r],enumerable:!0})},eee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of WQe(t))!KQ.call(e,i)&&i!==r&&MS(e,i,{get:()=>t[i],enumerable:!(n=GQe(t,i))||n.enumerable});return e};var YQe=(e,t,r)=>(r=e!=null?VQe(ZQe(e)):{},eee(t||!e||!e.__esModule?MS(r,"default",{value:e,enumerable:!0}):r,e)),B1=e=>eee(MS({},"__esModule",{value:!0}),e);var e6=ye(tee=>{"use strict";tee.version="3.0.1"});var iee=ye((ree,t6)=>{(function(t,r,n){r[t]=r[t]||n(),typeof t6!="undefined"&&t6.exports&&(t6.exports=r[t])})("Promise",typeof window!="undefined"?window:ree,function(){"use strict";var t,r,n,i=Object.prototype.toString,a=typeof setImmediate!="undefined"?function(E){return setImmediate(E)}:setTimeout;try{Object.defineProperty({},"x",{}),t=function(E,k,A,L){return Object.defineProperty(E,k,{value:A,writable:!0,configurable:L!==!1})}}catch(p){t=function(k,A,L){return k[A]=L,k}}n=function(){var E,k,A;function L(_,C){this.fn=_,this.self=C,this.next=void 0}return{add:function(C,M){A=new L(C,M),k?k.next=A:E=A,k=A,A=void 0},drain:function(){var C=E;for(E=k=r=void 0;C;)C.fn.call(C.self),C=C.next}}}();function o(p,E){n.add(p,E),r||(r=a(n.drain))}function s(p){var E,k=typeof p;return p!=null&&(k=="object"||k=="function")&&(E=p.then),typeof E=="function"?E:!1}function l(){for(var p=0;p0&&o(l,k))}catch(A){f.call(new d(k),A)}}}function f(p){var E=this;E.triggered||(E.triggered=!0,E.def&&(E=E.def),E.msg=p,E.state=2,E.chain.length>0&&o(l,E))}function h(p,E,k,A){for(var L=0;L{(function(){var e={version:"3.8.2"},t=[].slice,r=function(Z){return t.call(Z)},n=self.document;function i(Z){return Z&&(Z.ownerDocument||Z.document||Z).documentElement}function a(Z){return Z&&(Z.ownerDocument&&Z.ownerDocument.defaultView||Z.document&&Z||Z.defaultView)}if(n)try{r(n.documentElement.childNodes)[0].nodeType}catch(Z){r=function(oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=oe[we];return Be}}if(Date.now||(Date.now=function(){return+new Date}),n)try{n.createElement("DIV").style.setProperty("opacity",0,"")}catch(Z){var o=this.Element.prototype,s=o.setAttribute,l=o.setAttributeNS,u=this.CSSStyleDeclaration.prototype,c=u.setProperty;o.setAttribute=function(oe,we){s.call(this,oe,we+"")},o.setAttributeNS=function(oe,we,Be){l.call(this,oe,we,Be+"")},u.setProperty=function(oe,we,Be){c.call(this,oe,we+"",Be)}}e.ascending=f;function f(Z,oe){return Zoe?1:Z>=oe?0:NaN}e.descending=function(Z,oe){return oeZ?1:oe>=Z?0:NaN},e.min=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we=We){Ue=We;break}for(;++weWe&&(Ue=We)}else{for(;++we=We){Ue=We;break}for(;++weWe&&(Ue=We)}return Ue},e.max=function(Z,oe){var we=-1,Be=Z.length,Ue,We;if(arguments.length===1){for(;++we=We){Ue=We;break}for(;++weUe&&(Ue=We)}else{for(;++we=We){Ue=We;break}for(;++weUe&&(Ue=We)}return Ue},e.extent=function(Z,oe){var we=-1,Be=Z.length,Ue,We,wt;if(arguments.length===1){for(;++we=We){Ue=wt=We;break}for(;++weWe&&(Ue=We),wt=We){Ue=wt=We;break}for(;++weWe&&(Ue=We),wt1)return wt/(zt-1)},e.deviation=function(){var Z=e.variance.apply(this,arguments);return Z&&Math.sqrt(Z)};function v(Z){return{left:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be>>1;Z(oe[We],we)<0?Be=We+1:Ue=We}return Be},right:function(oe,we,Be,Ue){for(arguments.length<3&&(Be=0),arguments.length<4&&(Ue=oe.length);Be>>1;Z(oe[We],we)>0?Ue=We:Be=We+1}return Be}}}var x=v(f);e.bisectLeft=x.left,e.bisect=e.bisectRight=x.right,e.bisector=function(Z){return v(Z.length===1?function(oe,we){return f(Z(oe),we)}:Z)},e.shuffle=function(Z,oe,we){(Be=arguments.length)<3&&(we=Z.length,Be<2&&(oe=0));for(var Be=we-oe,Ue,We;Be;)We=Math.random()*Be--|0,Ue=Z[Be+oe],Z[Be+oe]=Z[We+oe],Z[We+oe]=Ue;return Z},e.permute=function(Z,oe){for(var we=oe.length,Be=new Array(we);we--;)Be[we]=Z[oe[we]];return Be},e.pairs=function(Z){for(var oe=0,we=Z.length-1,Be,Ue=Z[0],We=new Array(we<0?0:we);oe=0;)for(wt=Z[oe],we=wt.length;--we>=0;)We[--Ue]=wt[we];return We};var p=Math.abs;e.range=function(Z,oe,we){if(arguments.length<3&&(we=1,arguments.length<2&&(oe=Z,Z=0)),(oe-Z)/we===1/0)throw new Error("infinite range");var Be=[],Ue=E(p(we)),We=-1,wt;if(Z*=Ue,oe*=Ue,we*=Ue,we<0)for(;(wt=Z+we*++We)>oe;)Be.push(wt/Ue);else for(;(wt=Z+we*++We)=oe.length)return Ue?Ue.call(Z,zt):Be?zt.sort(Be):zt;for(var lr=-1,Dr=zt.length,Ir=oe[or++],oi,ui,qr,Kr=new A,ii;++lr=oe.length)return tt;var or=[],lr=we[zt++];return tt.forEach(function(Dr,Ir){or.push({key:Dr,values:wt(Ir,zt)})}),lr?or.sort(function(Dr,Ir){return lr(Dr.key,Ir.key)}):or}return Z.map=function(tt,zt){return We(zt,tt,0)},Z.entries=function(tt){return wt(We(e.map,tt,0),0)},Z.key=function(tt){return oe.push(tt),Z},Z.sortKeys=function(tt){return we[oe.length-1]=tt,Z},Z.sortValues=function(tt){return Be=tt,Z},Z.rollup=function(tt){return Ue=tt,Z},Z},e.set=function(Z){var oe=new V;if(Z)for(var we=0,Be=Z.length;we=0&&(Be=Z.slice(we+1),Z=Z.slice(0,we)),Z)return arguments.length<2?this[Z].on(Be):this[Z].on(Be,oe);if(arguments.length===2){if(oe==null)for(Z in this)this.hasOwnProperty(Z)&&this[Z].on(Be,null);return this}};function ae(Z){var oe=[],we=new A;function Be(){for(var Ue=oe,We=-1,wt=Ue.length,tt;++We=0&&(we=Z.slice(0,oe))!=="xmlns"&&(Z=Z.slice(oe+1)),Ge.hasOwnProperty(we)?{space:Ge[we],local:Z}:Z}},Ce.attr=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node();return Z=e.ns.qualify(Z),Z.local?we.getAttributeNS(Z.space,Z.local):we.getAttribute(Z)}for(oe in Z)this.each(nt(oe,Z[oe]));return this}return this.each(nt(Z,oe))};function nt(Z,oe){Z=e.ns.qualify(Z);function we(){this.removeAttribute(Z)}function Be(){this.removeAttributeNS(Z.space,Z.local)}function Ue(){this.setAttribute(Z,oe)}function We(){this.setAttributeNS(Z.space,Z.local,oe)}function wt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttribute(Z):this.setAttribute(Z,zt)}function tt(){var zt=oe.apply(this,arguments);zt==null?this.removeAttributeNS(Z.space,Z.local):this.setAttributeNS(Z.space,Z.local,zt)}return oe==null?Z.local?Be:we:typeof oe=="function"?Z.local?tt:wt:Z.local?We:Ue}function ct(Z){return Z.trim().replace(/\s+/g," ")}Ce.classed=function(Z,oe){if(arguments.length<2){if(typeof Z=="string"){var we=this.node(),Be=(Z=rt(Z)).length,Ue=-1;if(oe=we.classList){for(;++Ue=0;)(We=we[Be])&&(Ue&&Ue!==We.nextSibling&&Ue.parentNode.insertBefore(We,Ue),Ue=We);return this},Ce.sort=function(Z){Z=xt.apply(this,arguments);for(var oe=-1,we=this.length;++oe=oe&&(oe=Ue+1);!(zt=wt[oe])&&++oe0&&(Z=Z.slice(0,Ue));var wt=Ht.get(Z);wt&&(Z=wt,We=fr);function tt(){var lr=this[Be];lr&&(this.removeEventListener(Z,lr,lr.$),delete this[Be])}function zt(){var lr=We(oe,r(arguments));tt.call(this),this.addEventListener(Z,this[Be]=lr,lr.$=we),lr._=oe}function or(){var lr=new RegExp("^__on([^.]+)"+e.requote(Z)+"$"),Dr;for(var Ir in this)if(Dr=Ir.match(lr)){var oi=this[Ir];this.removeEventListener(Dr[1],oi,oi.$),delete this[Ir]}}return Ue?oe?zt:tt:oe?W:or}var Ht=e.map({mouseenter:"mouseover",mouseleave:"mouseout"});n&&Ht.forEach(function(Z){"on"+Z in n&&Ht.remove(Z)});function $t(Z,oe){return function(we){var Be=e.event;e.event=we,oe[0]=this.__data__;try{Z.apply(this,oe)}finally{e.event=Be}}}function fr(Z,oe){var we=$t(Z,oe);return function(Be){var Ue=this,We=Be.relatedTarget;(!We||We!==Ue&&!(We.compareDocumentPosition(Ue)&8))&&we.call(Ue,Be)}}var _r,Br=0;function Or(Z){var oe=".dragsuppress-"+ ++Br,we="click"+oe,Be=e.select(a(Z)).on("touchmove"+oe,_e).on("dragstart"+oe,_e).on("selectstart"+oe,_e);if(_r==null&&(_r="onselectstart"in Z?!1:G(Z.style,"userSelect")),_r){var Ue=i(Z).style,We=Ue[_r];Ue[_r]="none"}return function(wt){if(Be.on(oe,null),_r&&(Ue[_r]=We),wt){var tt=function(){Be.on(we,null)};Be.on(we,function(){_e(),tt()},!0),setTimeout(tt,0)}}}e.mouse=function(Z){return ut(Z,Me())};var Nr=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function ut(Z,oe){oe.changedTouches&&(oe=oe.changedTouches[0]);var we=Z.ownerSVGElement||Z;if(we.createSVGPoint){var Be=we.createSVGPoint();if(Nr<0){var Ue=a(Z);if(Ue.scrollX||Ue.scrollY){we=e.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var We=we[0][0].getScreenCTM();Nr=!(We.f||We.e),we.remove()}}return Nr?(Be.x=oe.pageX,Be.y=oe.pageY):(Be.x=oe.clientX,Be.y=oe.clientY),Be=Be.matrixTransform(Z.getScreenCTM().inverse()),[Be.x,Be.y]}var wt=Z.getBoundingClientRect();return[oe.clientX-wt.left-Z.clientLeft,oe.clientY-wt.top-Z.clientTop]}e.touch=function(Z,oe,we){if(arguments.length<3&&(we=oe,oe=Me().changedTouches),oe){for(var Be=0,Ue=oe.length,We;Be0?1:Z<0?-1:0}function Vt(Z,oe,we){return(oe[0]-Z[0])*(we[1]-Z[1])-(oe[1]-Z[1])*(we[0]-Z[0])}function ar(Z){return Z>1?0:Z<-1?Xe:Math.acos(Z)}function Qr(Z){return Z>1?xe:Z<-1?-xe:Math.asin(Z)}function ai(Z){return((Z=Math.exp(Z))-1/Z)/2}function jr(Z){return((Z=Math.exp(Z))+1/Z)/2}function ri(Z){return((Z=Math.exp(2*Z))-1)/(Z+1)}function bi(Z){return(Z=Math.sin(Z/2))*Z}var nn=Math.SQRT2,Wi=2,Ni=4;e.interpolateZoom=function(Z,oe){var we=Z[0],Be=Z[1],Ue=Z[2],We=oe[0],wt=oe[1],tt=oe[2],zt=We-we,or=wt-Be,lr=zt*zt+or*or,Dr,Ir;if(lr0&&(pn=pn.transition().duration(wt)),pn.call(ci.event)}function ga(){Kr&&Kr.domain(qr.range().map(function(pn){return(pn-Z.x)/Z.k}).map(qr.invert)),vi&&vi.domain(ii.range().map(function(pn){return(pn-Z.y)/Z.k}).map(ii.invert))}function ya(pn){tt++||pn({type:"zoomstart"})}function so(pn){ga(),pn({type:"zoom",scale:Z.k,translate:[Z.x,Z.y]})}function wa(pn){--tt||(pn({type:"zoomend"}),we=null)}function io(){var pn=this,za=ui.of(pn,arguments),Lo=0,Fo=e.select(a(pn)).on(or,fu).on(lr,dl),js=Jr(e.mouse(pn)),xl=Or(pn);ea.call(pn),ya(za);function fu(){Lo=1,En(e.mouse(pn),js),so(za)}function dl(){Fo.on(or,null).on(lr,null),xl(Lo),wa(za)}}function Ss(){var pn=this,za=ui.of(pn,arguments),Lo={},Fo=0,js,xl=".zoom-"+e.event.changedTouches[0].identifier,fu="touchmove"+xl,dl="touchend"+xl,xc=[],At=e.select(pn),Er=Or(pn);wi(),ya(za),At.on(zt,null).on(Ir,wi);function Wr(){var Bi=e.touches(pn);return js=Z.k,Bi.forEach(function(cn){cn.identifier in Lo&&(Lo[cn.identifier]=Jr(cn))}),Bi}function wi(){var Bi=e.event.target;e.select(Bi).on(fu,Ui).on(dl,Oi),xc.push(Bi);for(var cn=e.event.changedTouches,On=0,Bn=cn.length;On1){var Rn=yn[0],Dn=yn[1],fn=Rn[0]-Dn[0],Ai=Rn[1]-Dn[1];Fo=fn*fn+Ai*Ai}}function Ui(){var Bi=e.touches(pn),cn,On,Bn,yn;ea.call(pn);for(var to=0,Rn=Bi.length;to1?1:oe,we=we<0?0:we>1?1:we,Ue=we<=.5?we*(1+oe):we+oe-we*oe,Be=2*we-Ue;function We(tt){return tt>360?tt-=360:tt<0&&(tt+=360),tt<60?Be+(Ue-Be)*tt/60:tt<180?Ue:tt<240?Be+(Ue-Be)*(240-tt)/60:Be}function wt(tt){return Math.round(We(tt)*255)}return new Fa(wt(Z+120),wt(Z),wt(Z-120))}e.hcl=Zt;function Zt(Z,oe,we){return this instanceof Zt?(this.h=+Z,this.c=+oe,void(this.l=+we)):arguments.length<2?Z instanceof Zt?new Zt(Z.h,Z.c,Z.l):Z instanceof Zr?Ki(Z.l,Z.a,Z.b):Ki((Z=xn((Z=e.rgb(Z)).r,Z.g,Z.b)).l,Z.a,Z.b):new Zt(Z,oe,we)}var yr=Zt.prototype=new Wn;yr.brighter=function(Z){return new Zt(this.h,this.c,Math.min(100,this.l+Vr*(arguments.length?Z:1)))},yr.darker=function(Z){return new Zt(this.h,this.c,Math.max(0,this.l-Vr*(arguments.length?Z:1)))},yr.rgb=function(){return Fr(this.h,this.c,this.l).rgb()};function Fr(Z,oe,we){return isNaN(Z)&&(Z=0),isNaN(oe)&&(oe=0),new Zr(we,Math.cos(Z*=Se)*oe,Math.sin(Z)*oe)}e.lab=Zr;function Zr(Z,oe,we){return this instanceof Zr?(this.l=+Z,this.a=+oe,void(this.b=+we)):arguments.length<2?Z instanceof Zr?new Zr(Z.l,Z.a,Z.b):Z instanceof Zt?Fr(Z.h,Z.c,Z.l):xn((Z=Fa(Z)).r,Z.g,Z.b):new Zr(Z,oe,we)}var Vr=18,gi=.95047,Si=1,Mi=1.08883,Pi=Zr.prototype=new Wn;Pi.brighter=function(Z){return new Zr(Math.min(100,this.l+Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.darker=function(Z){return new Zr(Math.max(0,this.l-Vr*(arguments.length?Z:1)),this.a,this.b)},Pi.rgb=function(){return Gi(this.l,this.a,this.b)};function Gi(Z,oe,we){var Be=(Z+16)/116,Ue=Be+oe/500,We=Be-we/200;return Ue=ka(Ue)*gi,Be=ka(Be)*Si,We=ka(We)*Mi,new Fa(la(3.2404542*Ue-1.5371385*Be-.4985314*We),la(-.969266*Ue+1.8760108*Be+.041556*We),la(.0556434*Ue-.2040259*Be+1.0572252*We))}function Ki(Z,oe,we){return Z>0?new Zt(Math.atan2(we,oe)*lt,Math.sqrt(oe*oe+we*we),Z):new Zt(NaN,NaN,Z)}function ka(Z){return Z>.206893034?Z*Z*Z:(Z-4/29)/7.787037}function jn(Z){return Z>.008856?Math.pow(Z,1/3):7.787037*Z+4/29}function la(Z){return Math.round(255*(Z<=.00304?12.92*Z:1.055*Math.pow(Z,1/2.4)-.055))}e.rgb=Fa;function Fa(Z,oe,we){return this instanceof Fa?(this.r=~~Z,this.g=~~oe,void(this.b=~~we)):arguments.length<2?Z instanceof Fa?new Fa(Z.r,Z.g,Z.b):Ha(""+Z,Fa,jt):new Fa(Z,oe,we)}function Ra(Z){return new Fa(Z>>16,Z>>8&255,Z&255)}function jo(Z){return Ra(Z)+""}var oa=Fa.prototype=new Wn;oa.brighter=function(Z){Z=Math.pow(.7,arguments.length?Z:1);var oe=this.r,we=this.g,Be=this.b,Ue=30;return!oe&&!we&&!Be?new Fa(Ue,Ue,Ue):(oe&&oe>4,Be=Be>>4|Be,Ue=zt&240,Ue=Ue>>4|Ue,We=zt&15,We=We<<4|We):Z.length===7&&(Be=(zt&16711680)>>16,Ue=(zt&65280)>>8,We=zt&255)),oe(Be,Ue,We))}function oo(Z,oe,we){var Be=Math.min(Z/=255,oe/=255,we/=255),Ue=Math.max(Z,oe,we),We=Ue-Be,wt,tt,zt=(Ue+Be)/2;return We?(tt=zt<.5?We/(Ue+Be):We/(2-Ue-Be),Z==Ue?wt=(oe-we)/We+(oe0&&zt<1?0:wt),new It(wt,tt,zt)}function xn(Z,oe,we){Z=_t(Z),oe=_t(oe),we=_t(we);var Be=jn((.4124564*Z+.3575761*oe+.1804375*we)/gi),Ue=jn((.2126729*Z+.7151522*oe+.072175*we)/Si),We=jn((.0193339*Z+.119192*oe+.9503041*we)/Mi);return Zr(116*Ue-16,500*(Be-Ue),200*(Ue-We))}function _t(Z){return(Z/=255)<=.04045?Z/12.92:Math.pow((Z+.055)/1.055,2.4)}function br(Z){var oe=parseFloat(Z);return Z.charAt(Z.length-1)==="%"?Math.round(oe*2.55):oe}var Hr=e.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Hr.forEach(function(Z,oe){Hr.set(Z,Ra(oe))});function ti(Z){return typeof Z=="function"?Z:function(){return Z}}e.functor=ti,e.xhr=zi(H);function zi(Z){return function(oe,we,Be){return arguments.length===2&&typeof we=="function"&&(Be=we,we=null),Yi(oe,we,Z,Be)}}function Yi(Z,oe,we,Be){var Ue={},We=e.dispatch("beforesend","progress","load","error"),wt={},tt=new XMLHttpRequest,zt=null;self.XDomainRequest&&!("withCredentials"in tt)&&/^(http(s)?:)?\/\//.test(Z)&&(tt=new XDomainRequest),"onload"in tt?tt.onload=tt.onerror=or:tt.onreadystatechange=function(){tt.readyState>3&&or()};function or(){var lr=tt.status,Dr;if(!lr&&hi(tt)||lr>=200&&lr<300||lr===304){try{Dr=we.call(Ue,tt)}catch(Ir){We.error.call(Ue,Ir);return}We.load.call(Ue,Dr)}else We.error.call(Ue,tt)}return tt.onprogress=function(lr){var Dr=e.event;e.event=lr;try{We.progress.call(Ue,tt)}finally{e.event=Dr}},Ue.header=function(lr,Dr){return lr=(lr+"").toLowerCase(),arguments.length<2?wt[lr]:(Dr==null?delete wt[lr]:wt[lr]=Dr+"",Ue)},Ue.mimeType=function(lr){return arguments.length?(oe=lr==null?null:lr+"",Ue):oe},Ue.responseType=function(lr){return arguments.length?(zt=lr,Ue):zt},Ue.response=function(lr){return we=lr,Ue},["get","post"].forEach(function(lr){Ue[lr]=function(){return Ue.send.apply(Ue,[lr].concat(r(arguments)))}}),Ue.send=function(lr,Dr,Ir){if(arguments.length===2&&typeof Dr=="function"&&(Ir=Dr,Dr=null),tt.open(lr,Z,!0),oe!=null&&!("accept"in wt)&&(wt.accept=oe+",*/*"),tt.setRequestHeader)for(var oi in wt)tt.setRequestHeader(oi,wt[oi]);return oe!=null&&tt.overrideMimeType&&tt.overrideMimeType(oe),zt!=null&&(tt.responseType=zt),Ir!=null&&Ue.on("error",Ir).on("load",function(ui){Ir(null,ui)}),We.beforesend.call(Ue,tt),tt.send(Dr==null?null:Dr),Ue},Ue.abort=function(){return tt.abort(),Ue},e.rebind(Ue,We,"on"),Be==null?Ue:Ue.get(an(Be))}function an(Z){return Z.length===1?function(oe,we){Z(oe==null?we:null)}:Z}function hi(Z){var oe=Z.responseType;return oe&&oe!=="text"?Z.response:Z.responseText}e.dsv=function(Z,oe){var we=new RegExp('["'+Z+` +]`),Be=Z.charCodeAt(0);function Ue(or,lr,Dr){arguments.length<3&&(Dr=lr,lr=null);var Ir=Yi(or,oe,lr==null?We:wt(lr),Dr);return Ir.row=function(oi){return arguments.length?Ir.response((lr=oi)==null?We:wt(oi)):lr},Ir}function We(or){return Ue.parse(or.responseText)}function wt(or){return function(lr){return Ue.parse(lr.responseText,or)}}Ue.parse=function(or,lr){var Dr;return Ue.parseRows(or,function(Ir,oi){if(Dr)return Dr(Ir,oi-1);var ui=function(qr){for(var Kr={},ii=Ir.length,vi=0;vi=ui)return Ir;if(vi)return vi=!1,Dr;var un=qr;if(or.charCodeAt(un)===34){for(var dn=un;dn++24?(isFinite(oe)&&(clearTimeout(Sa),Sa=setTimeout(ho,oe)),Fn=0):(Fn=1,go(ho))}e.timer.flush=function(){Mo(),xo()};function Mo(){for(var Z=Date.now(),oe=Ji;oe;)Z>=oe.t&&oe.c(Z-oe.t)&&(oe.c=null),oe=oe.n;return Z}function xo(){for(var Z,oe=Ji,we=1/0;oe;)oe.c?(oe.t=0;--tt)qr.push(Ue[or[Dr[tt]][2]]);for(tt=+oi;tt1&&Vt(Z[we[Be-2]],Z[we[Be-1]],Z[Ue])<=0;)--Be;we[Be++]=Ue}return we.slice(0,Be)}function Xs(Z,oe){return Z[0]-oe[0]||Z[1]-oe[1]}e.geom.polygon=function(Z){return ie(Z,wl),Z};var wl=e.geom.polygon.prototype=[];wl.area=function(){for(var Z=-1,oe=this.length,we,Be=this[oe-1],Ue=0;++ZYe)tt=tt.L;else if(wt=oe-vo(tt,we),wt>Ye){if(!tt.R){Be=tt;break}tt=tt.R}else{We>-Ye?(Be=tt.P,Ue=tt):wt>-Ye?(Be=tt,Ue=tt.N):Be=Ue=tt;break}var zt=ms(Z);if(Hs.insert(Be,zt),!(!Be&&!Ue)){if(Be===Ue){ko(Be),Ue=ms(Be.site),Hs.insert(zt,Ue),zt.edge=Ue.edge=cf(Be.site,zt.site),Zn(Be),Zn(Ue);return}if(!Ue){zt.edge=cf(Be.site,zt.site);return}ko(Be),ko(Ue);var or=Be.site,lr=or.x,Dr=or.y,Ir=Z.x-lr,oi=Z.y-Dr,ui=Ue.site,qr=ui.x-lr,Kr=ui.y-Dr,ii=2*(Ir*Kr-oi*qr),vi=Ir*Ir+oi*oi,ci=qr*qr+Kr*Kr,Jr={x:(Kr*vi-oi*ci)/ii+lr,y:(Ir*ci-qr*vi)/ii+Dr};Al(Ue.edge,or,ui,Jr),zt.edge=cf(or,Z,null,Jr),Ue.edge=cf(Z,ui,null,Jr),Zn(Be),Zn(Ue)}}function Rl(Z,oe){var we=Z.site,Be=we.x,Ue=we.y,We=Ue-oe;if(!We)return Be;var wt=Z.P;if(!wt)return-1/0;we=wt.site;var tt=we.x,zt=we.y,or=zt-oe;if(!or)return tt;var lr=tt-Be,Dr=1/We-1/or,Ir=lr/or;return Dr?(-Ir+Math.sqrt(Ir*Ir-2*Dr*(lr*lr/(-2*or)-zt+or/2+Ue-We/2)))/Dr+Be:(Be+tt)/2}function vo(Z,oe){var we=Z.N;if(we)return Rl(we,oe);var Be=Z.site;return Be.y===oe?Be.x:1/0}function Zl(Z){this.site=Z,this.edges=[]}Zl.prototype.prepare=function(){for(var Z=this.edges,oe=Z.length,we;oe--;)we=Z[oe].edge,(!we.b||!we.a)&&Z.splice(oe,1);return Z.sort(Xl),Z.length};function Ks(Z){for(var oe=Z[0][0],we=Z[1][0],Be=Z[0][1],Ue=Z[1][1],We,wt,tt,zt,or=Ys,lr=or.length,Dr,Ir,oi,ui,qr,Kr;lr--;)if(Dr=or[lr],!(!Dr||!Dr.prepare()))for(oi=Dr.edges,ui=oi.length,Ir=0;IrYe||p(zt-wt)>Ye)&&(oi.splice(Ir,0,new Hc(rh(Dr.site,Kr,p(tt-oe)Ye?{x:oe,y:p(We-oe)Ye?{x:p(wt-Ue)Ye?{x:we,y:p(We-we)Ye?{x:p(wt-Be)=-Ve)){var Ir=zt*zt+or*or,oi=lr*lr+Kr*Kr,ui=(Kr*Ir-or*oi)/Dr,qr=(zt*oi-lr*Ir)/Dr,Kr=qr+tt,ii=Hu.pop()||new Ec;ii.arc=Z,ii.site=Ue,ii.x=ui+wt,ii.y=Kr+Math.sqrt(ui*ui+qr*qr),ii.cy=Kr,Z.circle=ii;for(var vi=null,ci=Ql._;ci;)if(ii.y0)){if(qr/=oi,oi<0){if(qr0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=we-tt,!(!oi&&qr<0)){if(qr/=oi,oi<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(oi>0){if(qr0)){if(qr/=ui,ui<0){if(qr0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}if(qr=Be-zt,!(!ui&&qr<0)){if(qr/=ui,ui<0){if(qr>Ir)return;qr>Dr&&(Dr=qr)}else if(ui>0){if(qr0&&(Ue.a={x:tt+Dr*oi,y:zt+Dr*ui}),Ir<1&&(Ue.b={x:tt+Ir*oi,y:zt+Ir*ui}),Ue}}}}}}function Tl(Z){for(var oe=ml,we=Co(Z[0][0],Z[0][1],Z[1][0],Z[1][1]),Be=oe.length,Ue;Be--;)Ue=oe[Be],(!uf(Ue,Z)||!we(Ue)||p(Ue.a.x-Ue.b.x)=We)return;if(lr>Ir){if(!Be)Be={x:ui,y:wt};else if(Be.y>=tt)return;we={x:ui,y:tt}}else{if(!Be)Be={x:ui,y:tt};else if(Be.y1)if(lr>Ir){if(!Be)Be={x:(wt-ii)/Kr,y:wt};else if(Be.y>=tt)return;we={x:(tt-ii)/Kr,y:tt}}else{if(!Be)Be={x:(tt-ii)/Kr,y:tt};else if(Be.y=We)return;we={x:We,y:Kr*We+ii}}else{if(!Be)Be={x:We,y:Kr*We+ii};else if(Be.x=lr&&ii.x<=Ir&&ii.y>=Dr&&ii.y<=oi?[[lr,oi],[Ir,oi],[Ir,Dr],[lr,Dr]]:[];vi.point=zt[qr]}),or}function tt(zt){return zt.map(function(or,lr){return{x:Math.round(Be(or,lr)/Ye)*Ye,y:Math.round(Ue(or,lr)/Ye)*Ye,i:lr}})}return wt.links=function(zt){return Gc(tt(zt)).edges.filter(function(or){return or.l&&or.r}).map(function(or){return{source:zt[or.l.i],target:zt[or.r.i]}})},wt.triangles=function(zt){var or=[];return Gc(tt(zt)).cells.forEach(function(lr,Dr){for(var Ir=lr.site,oi=lr.edges.sort(Xl),ui=-1,qr=oi.length,Kr,ii,vi=oi[qr-1].edge,ci=vi.l===Ir?vi.r:vi.l;++uici&&(ci=lr.x),lr.y>Jr&&(Jr=lr.y),oi.push(lr.x),ui.push(lr.y);else for(qr=0;qrci&&(ci=un),dn>Jr&&(Jr=dn),oi.push(un),ui.push(dn)}var En=ci-ii,Nn=Jr-vi;En>Nn?Jr=vi+En:ci=ii+Nn;function ga(wa,io,Ss,_s,Ns,pn,za,Lo){if(!(isNaN(Ss)||isNaN(_s)))if(wa.leaf){var Fo=wa.x,js=wa.y;if(Fo!=null)if(p(Fo-Ss)+p(js-_s)<.01)ya(wa,io,Ss,_s,Ns,pn,za,Lo);else{var xl=wa.point;wa.x=wa.y=wa.point=null,ya(wa,xl,Fo,js,Ns,pn,za,Lo),ya(wa,io,Ss,_s,Ns,pn,za,Lo)}else wa.x=Ss,wa.y=_s,wa.point=io}else ya(wa,io,Ss,_s,Ns,pn,za,Lo)}function ya(wa,io,Ss,_s,Ns,pn,za,Lo){var Fo=(Ns+za)*.5,js=(pn+Lo)*.5,xl=Ss>=Fo,fu=_s>=js,dl=fu<<1|xl;wa.leaf=!1,wa=wa.nodes[dl]||(wa.nodes[dl]=Vl()),xl?Ns=Fo:za=Fo,fu?pn=js:Lo=js,ga(wa,io,Ss,_s,Ns,pn,za,Lo)}var so=Vl();if(so.add=function(wa){ga(so,wa,+Dr(wa,++qr),+Ir(wa,qr),ii,vi,ci,Jr)},so.visit=function(wa){Js(wa,so,ii,vi,ci,Jr)},so.find=function(wa){return hc(so,wa[0],wa[1],ii,vi,ci,Jr)},qr=-1,oe==null){for(;++qrWe||Ir>wt||oi=un,Nn=we>=dn,ga=Nn<<1|En,ya=ga+4;gawe&&(We=oe.slice(we,We),tt[wt]?tt[wt]+=We:tt[++wt]=We),(Be=Be[0])===(Ue=Ue[0])?tt[wt]?tt[wt]+=Ue:tt[++wt]=Ue:(tt[++wt]=null,zt.push({i:wt,x:$s(Be,Ue)})),we=dc.lastIndex;return we=0&&!(Be=e.interpolators[we](Z,oe)););return Be}e.interpolators=[function(Z,oe){var we=typeof oe;return(we==="string"?Hr.has(oe.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(oe)?Cc:hs:oe instanceof Wn?Cc:Array.isArray(oe)?ec:we==="object"&&isNaN(oe)?ws:$s)(Z,oe)}],e.interpolateArray=ec;function ec(Z,oe){var we=[],Be=[],Ue=Z.length,We=oe.length,wt=Math.min(Z.length,oe.length),tt;for(tt=0;tt=0?Z.slice(0,oe):Z,Be=oe>=0?Z.slice(oe+1):"in";return we=ov.get(we)||Ps,Be=wo.get(Be)||H,Od(Be(we.apply(null,t.call(arguments,1))))};function Od(Z){return function(oe){return oe<=0?0:oe>=1?1:Z(oe)}}function $o(Z){return function(oe){return 1-Z(1-oe)}}function Ja(Z){return function(oe){return .5*(oe<.5?Z(2*oe):2-Z(2-2*oe))}}function Ef(Z){return Z*Z}function tc(Z){return Z*Z*Z}function uu(Z){if(Z<=0)return 0;if(Z>=1)return 1;var oe=Z*Z,we=oe*Z;return 4*(Z<.5?we:3*(Z-oe)+we-.75)}function Mh(Z){return function(oe){return Math.pow(oe,Z)}}function jc(Z){return 1-Math.cos(Z*xe)}function kf(Z){return Math.pow(2,10*(Z-1))}function Ml(Z){return 1-Math.sqrt(1-Z*Z)}function Yh(Z,oe){var we;return arguments.length<2&&(oe=.45),arguments.length?we=oe/ht*Math.asin(1/Z):(Z=1,we=oe/4),function(Be){return 1+Z*Math.pow(2,-10*Be)*Math.sin((Be-we)*ht/oe)}}function Eh(Z){return Z||(Z=1.70158),function(oe){return oe*oe*((Z+1)*oe-Z)}}function nh(Z){return Z<1/2.75?7.5625*Z*Z:Z<2/2.75?7.5625*(Z-=1.5/2.75)*Z+.75:Z<2.5/2.75?7.5625*(Z-=2.25/2.75)*Z+.9375:7.5625*(Z-=2.625/2.75)*Z+.984375}e.interpolateHcl=hf;function hf(Z,oe){Z=e.hcl(Z),oe=e.hcl(oe);var we=Z.h,Be=Z.c,Ue=Z.l,We=oe.h-we,wt=oe.c-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.c:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return Fr(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateHsl=kh;function kh(Z,oe){Z=e.hsl(Z),oe=e.hsl(oe);var we=Z.h,Be=Z.s,Ue=Z.l,We=oe.h-we,wt=oe.s-Be,tt=oe.l-Ue;return isNaN(wt)&&(wt=0,Be=isNaN(Be)?oe.s:Be),isNaN(We)?(We=0,we=isNaN(we)?oe.h:we):We>180?We-=360:We<-180&&(We+=360),function(zt){return jt(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateLab=Kh;function Kh(Z,oe){Z=e.lab(Z),oe=e.lab(oe);var we=Z.l,Be=Z.a,Ue=Z.b,We=oe.l-we,wt=oe.a-Be,tt=oe.b-Ue;return function(zt){return Gi(we+We*zt,Be+wt*zt,Ue+tt*zt)+""}}e.interpolateRound=rc;function rc(Z,oe){return oe-=Z,function(we){return Math.round(Z+oe*we)}}e.transform=function(Z){var oe=n.createElementNS(e.ns.prefix.svg,"g");return(e.transform=function(we){if(we!=null){oe.setAttribute("transform",we);var Be=oe.transform.baseVal.consolidate()}return new ah(Be?Be.matrix:Nf)})(Z)};function ah(Z){var oe=[Z.a,Z.b],we=[Z.c,Z.d],Be=df(oe),Ue=Wc(oe,we),We=df(Cu(we,oe,-Ue))||0;oe[0]*we[1]180?oe+=360:oe-Z>180&&(Z+=360),Be.push({i:we.push(Zc(we)+"rotate(",null,")")-2,x:$s(Z,oe)})):oe&&we.push(Zc(we)+"rotate("+oe+")")}function Bd(Z,oe,we,Be){Z!==oe?Be.push({i:we.push(Zc(we)+"skewX(",null,")")-2,x:$s(Z,oe)}):oe&&we.push(Zc(we)+"skewX("+oe+")")}function Jh(Z,oe,we,Be){if(Z[0]!==oe[0]||Z[1]!==oe[1]){var Ue=we.push(Zc(we)+"scale(",null,",",null,")");Be.push({i:Ue-4,x:$s(Z[0],oe[0])},{i:Ue-2,x:$s(Z[1],oe[1])})}else(oe[0]!==1||oe[1]!==1)&&we.push(Zc(we)+"scale("+oe+")")}function Cf(Z,oe){var we=[],Be=[];return Z=e.transform(Z),oe=e.transform(oe),ds(Z.translate,oe.translate,we,Be),Ch(Z.rotate,oe.rotate,we,Be),Bd(Z.skew,oe.skew,we,Be),Jh(Z.scale,oe.scale,we,Be),Z=oe=null,function(Ue){for(var We=-1,wt=Be.length,tt;++We0?We=Jr:(we.c=null,we.t=NaN,we=null,oe.end({type:"end",alpha:We=0})):Jr>0&&(oe.start({type:"start",alpha:We=Jr}),we=Oo(Z.tick)),Z):We},Z.start=function(){var Jr,un=oi.length,dn=ui.length,En=Be[0],Nn=Be[1],ga,ya;for(Jr=0;Jr=0;)We.push(lr=or[zt]),lr.parent=tt,lr.depth=tt.depth+1;we&&(tt.value=0),tt.children=or}else we&&(tt.value=+we.call(Be,tt,tt.depth)||0),delete tt.children;return vc(Ue,function(Dr){var Ir,oi;Z&&(Ir=Dr.children)&&Ir.sort(Z),we&&(oi=Dr.parent)&&(oi.value+=Dr.value)}),wt}return Be.sort=function(Ue){return arguments.length?(Z=Ue,Be):Z},Be.children=function(Ue){return arguments.length?(oe=Ue,Be):oe},Be.value=function(Ue){return arguments.length?(we=Ue,Be):we},Be.revalue=function(Ue){return we&&(Pc(Ue,function(We){We.children&&(We.value=0)}),vc(Ue,function(We){var wt;We.children||(We.value=+we.call(Be,We,We.depth)||0),(wt=We.parent)&&(wt.value+=We.value)})),Ue},Be};function Gu(Z,oe){return e.rebind(Z,oe,"sort","children","value"),Z.nodes=Z,Z.links=Iu,Z}function Pc(Z,oe){for(var we=[Z];(Z=we.pop())!=null;)if(oe(Z),(Ue=Z.children)&&(Be=Ue.length))for(var Be,Ue;--Be>=0;)we.push(Ue[Be])}function vc(Z,oe){for(var we=[Z],Be=[];(Z=we.pop())!=null;)if(Be.push(Z),(wt=Z.children)&&(We=wt.length))for(var Ue=-1,We,wt;++UeUe&&(Ue=tt),Be.push(tt)}for(wt=0;wtBe&&(we=oe,Be=Ue);return we}function Is(Z){return Z.reduce(Pf,0)}function Pf(Z,oe){return Z+oe[1]}e.layout.histogram=function(){var Z=!0,oe=Number,we=Vf,Be=Ic;function Ue(We,Ir){for(var tt=[],zt=We.map(oe,this),or=we.call(this,zt,Ir),lr=Be.call(this,or,zt,Ir),Dr,Ir=-1,oi=zt.length,ui=lr.length-1,qr=Z?1:1/oi,Kr;++Ir0)for(Ir=-1;++Ir=or[0]&&Kr<=or[1]&&(Dr=tt[e.bisect(lr,Kr,1,ui)-1],Dr.y+=qr,Dr.push(We[Ir]));return tt}return Ue.value=function(We){return arguments.length?(oe=We,Ue):oe},Ue.range=function(We){return arguments.length?(we=ti(We),Ue):we},Ue.bins=function(We){return arguments.length?(Be=typeof We=="number"?function(wt){return ju(wt,We)}:ti(We),Ue):Be},Ue.frequency=function(We){return arguments.length?(Z=!!We,Ue):Z},Ue};function Ic(Z,oe){return ju(Z,Math.ceil(Math.log(oe.length)/Math.LN2+1))}function ju(Z,oe){for(var we=-1,Be=+Z[0],Ue=(Z[1]-Be)/oe,We=[];++we<=oe;)We[we]=Ue*we+Be;return We}function Vf(Z){return[e.min(Z),e.max(Z)]}e.layout.pack=function(){var Z=e.layout.hierarchy().sort(pc),oe=0,we=[1,1],Be;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or=we[0],lr=we[1],Dr=Be==null?Math.sqrt:typeof Be=="function"?Be:function(){return Be};if(zt.x=zt.y=0,vc(zt,function(oi){oi.r=+Dr(oi.value)}),vc(zt,Ih),oe){var Ir=oe*(Be?1:Math.max(2*zt.r/or,2*zt.r/lr))/2;vc(zt,function(oi){oi.r+=Ir}),vc(zt,Ih),vc(zt,function(oi){oi.r-=Ir})}return gc(zt,or/2,lr/2,Be?1:1/Math.max(2*zt.r/or,2*zt.r/lr)),tt}return Ue.size=function(We){return arguments.length?(we=We,Ue):we},Ue.radius=function(We){return arguments.length?(Be=We==null||typeof We=="function"?We:+We,Ue):Be},Ue.padding=function(We){return arguments.length?(oe=+We,Ue):oe},Gu(Ue,Z)};function pc(Z,oe){return Z.value-oe.value}function pf(Z,oe){var we=Z._pack_next;Z._pack_next=oe,oe._pack_prev=Z,oe._pack_next=we,we._pack_prev=oe}function Ph(Z,oe){Z._pack_next=oe,oe._pack_prev=Z}function Dl(Z,oe){var we=oe.x-Z.x,Be=oe.y-Z.y,Ue=Z.r+oe.r;return .999*Ue*Ue>we*we+Be*Be}function Ih(Z){if(!(oe=Z.children)||!(Ir=oe.length))return;var oe,we=1/0,Be=-1/0,Ue=1/0,We=-1/0,wt,tt,zt,or,lr,Dr,Ir;function oi(Jr){we=Math.min(Jr.x-Jr.r,we),Be=Math.max(Jr.x+Jr.r,Be),Ue=Math.min(Jr.y-Jr.r,Ue),We=Math.max(Jr.y+Jr.r,We)}if(oe.forEach(Wu),wt=oe[0],wt.x=-wt.r,wt.y=0,oi(wt),Ir>1&&(tt=oe[1],tt.x=tt.r,tt.y=0,oi(tt),Ir>2))for(zt=oe[2],hl(wt,tt,zt),oi(zt),pf(wt,zt),wt._pack_prev=zt,pf(zt,tt),tt=wt._pack_next,or=3;orKr.x&&(Kr=un),un.depth>ii.depth&&(ii=un)});var vi=oe(qr,Kr)/2-qr.x,ci=we[0]/(Kr.x+oe(Kr,qr)/2+vi),Jr=we[1]/(ii.depth||1);Pc(oi,function(un){un.x=(un.x+vi)*ci,un.y=un.depth*Jr})}return Ir}function We(lr){for(var Dr={A:null,children:[lr]},Ir=[Dr],oi;(oi=Ir.pop())!=null;)for(var ui=oi.children,qr,Kr=0,ii=ui.length;Kr0&&(nc(gt(qr,lr,Ir),lr,un),ii+=un,vi+=un),ci+=qr.m,ii+=oi.m,Jr+=Kr.m,vi+=ui.m;qr&&!Yc(ui)&&(ui.t=qr,ui.m+=ci-vi),oi&&!mc(Kr)&&(Kr.t=oi,Kr.m+=ii-Jr,Ir=lr)}return Ir}function or(lr){lr.x*=we[0],lr.y=lr.depth*we[1]}return Ue.separation=function(lr){return arguments.length?(oe=lr,Ue):oe},Ue.size=function(lr){return arguments.length?(Be=(we=lr)==null?or:null,Ue):Be?null:we},Ue.nodeSize=function(lr){return arguments.length?(Be=(we=lr)==null?null:or,Ue):Be?we:null},Gu(Ue,Z)};function iu(Z,oe){return Z.parent==oe.parent?1:2}function mc(Z){var oe=Z.children;return oe.length?oe[0]:Z.t}function Yc(Z){var oe=Z.children,we;return(we=oe.length)?oe[we-1]:Z.t}function nc(Z,oe,we){var Be=we/(oe.i-Z.i);oe.c-=Be,oe.s+=we,Z.c+=Be,oe.z+=we,oe.m+=we}function gf(Z){for(var oe=0,we=0,Be=Z.children,Ue=Be.length,We;--Ue>=0;)We=Be[Ue],We.z+=oe,We.m+=oe,oe+=We.s+(we+=We.c)}function gt(Z,oe,we){return Z.a.parent===oe.parent?Z.a:we}e.layout.cluster=function(){var Z=e.layout.hierarchy().sort(null).value(null),oe=iu,we=[1,1],Be=!1;function Ue(We,wt){var tt=Z.call(this,We,wt),zt=tt[0],or,lr=0;vc(zt,function(qr){var Kr=qr.children;Kr&&Kr.length?(qr.x=wr(Kr),qr.y=Bt(Kr)):(qr.x=or?lr+=oe(qr,or):0,qr.y=0,or=qr)});var Dr=vr(zt),Ir=Ur(zt),oi=Dr.x-oe(Dr,Ir)/2,ui=Ir.x+oe(Ir,Dr)/2;return vc(zt,Be?function(qr){qr.x=(qr.x-zt.x)*we[0],qr.y=(zt.y-qr.y)*we[1]}:function(qr){qr.x=(qr.x-oi)/(ui-oi)*we[0],qr.y=(1-(zt.y?qr.y/zt.y:1))*we[1]}),tt}return Ue.separation=function(We){return arguments.length?(oe=We,Ue):oe},Ue.size=function(We){return arguments.length?(Be=(we=We)==null,Ue):Be?null:we},Ue.nodeSize=function(We){return arguments.length?(Be=(we=We)!=null,Ue):Be?we:null},Gu(Ue,Z)};function Bt(Z){return 1+e.max(Z,function(oe){return oe.y})}function wr(Z){return Z.reduce(function(oe,we){return oe+we.x},0)/Z.length}function vr(Z){var oe=Z.children;return oe&&oe.length?vr(oe[0]):Z}function Ur(Z){var oe=Z.children,we;return oe&&(we=oe.length)?Ur(oe[we-1]):Z}e.layout.treemap=function(){var Z=e.layout.hierarchy(),oe=Math.round,we=[1,1],Be=null,Ue=fi,We=!1,wt,tt="squarify",zt=.5*(1+Math.sqrt(5));function or(qr,Kr){for(var ii=-1,vi=qr.length,ci,Jr;++ii0;)vi.push(Jr=ci[Nn-1]),vi.area+=Jr.area,tt!=="squarify"||(dn=Ir(vi,En))<=un?(ci.pop(),un=dn):(vi.area-=vi.pop().area,oi(vi,En,ii,!1),En=Math.min(ii.dx,ii.dy),vi.length=vi.area=0,un=1/0);vi.length&&(oi(vi,En,ii,!0),vi.length=vi.area=0),Kr.forEach(lr)}}function Dr(qr){var Kr=qr.children;if(Kr&&Kr.length){var ii=Ue(qr),vi=Kr.slice(),ci,Jr=[];for(or(vi,ii.dx*ii.dy/qr.value),Jr.area=0;ci=vi.pop();)Jr.push(ci),Jr.area+=ci.area,ci.z!=null&&(oi(Jr,ci.z?ii.dx:ii.dy,ii,!vi.length),Jr.length=Jr.area=0);Kr.forEach(Dr)}}function Ir(qr,Kr){for(var ii=qr.area,vi,ci=0,Jr=1/0,un=-1,dn=qr.length;++unci&&(ci=vi));return ii*=ii,Kr*=Kr,ii?Math.max(Kr*ci*zt/ii,ii/(Kr*Jr*zt)):1/0}function oi(qr,Kr,ii,vi){var ci=-1,Jr=qr.length,un=ii.x,dn=ii.y,En=Kr?oe(qr.area/Kr):0,Nn;if(Kr==ii.dx){for((vi||En>ii.dy)&&(En=ii.dy);++ciii.dx)&&(En=ii.dx);++ci1);return Z+oe*Be*Math.sqrt(-2*Math.log(We)/We)}},logNormal:function(){var Z=e.random.normal.apply(e,arguments);return function(){return Math.exp(Z())}},bates:function(Z){var oe=e.random.irwinHall(Z);return function(){return oe()/Z}},irwinHall:function(Z){return function(){for(var oe=0,we=0;we2?mi:hn,or=Be?Lu:pd;return Ue=zt(Z,oe,or,we),We=zt(oe,Z,or,Sl),tt}function tt(zt){return Ue(zt)}return tt.invert=function(zt){return We(zt)},tt.domain=function(zt){return arguments.length?(Z=zt.map(Number),wt()):Z},tt.range=function(zt){return arguments.length?(oe=zt,wt()):oe},tt.rangeRound=function(zt){return tt.range(zt).interpolate(rc)},tt.clamp=function(zt){return arguments.length?(Be=zt,wt()):Be},tt.interpolate=function(zt){return arguments.length?(we=zt,wt()):we},tt.ticks=function(zt){return qa(Z,zt)},tt.tickFormat=function(zt,or){return d3_scale_linearTickFormat(Z,zt,or)},tt.nice=function(zt){return Ta(Z,zt),wt()},tt.copy=function(){return Pn(Z,oe,we,Be)},wt()}function Ma(Z,oe){return e.rebind(Z,oe,"range","rangeRound","interpolate","clamp")}function Ta(Z,oe){return Ti(Z,qi(Ea(Z,oe)[2])),Ti(Z,qi(Ea(Z,oe)[2])),Z}function Ea(Z,oe){oe==null&&(oe=10);var we=Fi(Z),Be=we[1]-we[0],Ue=Math.pow(10,Math.floor(Math.log(Be/oe)/Math.LN10)),We=oe/Be*Ue;return We<=.15?Ue*=10:We<=.35?Ue*=5:We<=.75&&(Ue*=2),we[0]=Math.ceil(we[0]/Ue)*Ue,we[1]=Math.floor(we[1]/Ue)*Ue+Ue*.5,we[2]=Ue,we}function qa(Z,oe){return e.range.apply(e,Ea(Z,oe))}var Cn={s:1,g:1,p:1,r:1,e:1};function sn(Z){return-Math.floor(Math.log(Z)/Math.LN10+.01)}function Ua(Z,oe){var we=sn(oe[2]);return Z in Cn?Math.abs(we-sn(Math.max(p(oe[0]),p(oe[1]))))+ +(Z!=="e"):we-(Z==="%")*2}e.scale.log=function(){return mo(e.scale.linear().domain([0,1]),10,!0,[1,10])};function mo(Z,oe,we,Be){function Ue(tt){return(we?Math.log(tt<0?0:tt):-Math.log(tt>0?0:-tt))/Math.log(oe)}function We(tt){return we?Math.pow(oe,tt):-Math.pow(oe,-tt)}function wt(tt){return Z(Ue(tt))}return wt.invert=function(tt){return We(Z.invert(tt))},wt.domain=function(tt){return arguments.length?(we=tt[0]>=0,Z.domain((Be=tt.map(Number)).map(Ue)),wt):Be},wt.base=function(tt){return arguments.length?(oe=+tt,Z.domain(Be.map(Ue)),wt):oe},wt.nice=function(){var tt=Ti(Be.map(Ue),we?Math:Xo);return Z.domain(tt),Be=tt.map(We),wt},wt.ticks=function(){var tt=Fi(Be),zt=[],or=tt[0],lr=tt[1],Dr=Math.floor(Ue(or)),Ir=Math.ceil(Ue(lr)),oi=oe%1?2:oe;if(isFinite(Ir-Dr)){if(we){for(;Dr0;ui--)zt.push(We(Dr)*ui);for(Dr=0;zt[Dr]lr;Ir--);zt=zt.slice(Dr,Ir)}return zt},wt.copy=function(){return mo(Z.copy(),oe,we,Be)},Ma(wt,Z)}var Xo={floor:function(Z){return-Math.ceil(-Z)},ceil:function(Z){return-Math.floor(-Z)}};e.scale.pow=function(){return Ts(e.scale.linear(),1,[0,1])};function Ts(Z,oe,we){var Be=Qo(oe),Ue=Qo(1/oe);function We(wt){return Z(Be(wt))}return We.invert=function(wt){return Ue(Z.invert(wt))},We.domain=function(wt){return arguments.length?(Z.domain((we=wt.map(Number)).map(Be)),We):we},We.ticks=function(wt){return qa(we,wt)},We.tickFormat=function(wt,tt){return d3_scale_linearTickFormat(we,wt,tt)},We.nice=function(wt){return We.domain(Ta(we,wt))},We.exponent=function(wt){return arguments.length?(Be=Qo(oe=wt),Ue=Qo(1/oe),Z.domain(we.map(Be)),We):oe},We.copy=function(){return Ts(Z.copy(),oe,we)},Ma(We,Z)}function Qo(Z){return function(oe){return oe<0?-Math.pow(-oe,Z):Math.pow(oe,Z)}}e.scale.sqrt=function(){return e.scale.pow().exponent(.5)},e.scale.ordinal=function(){return ys([],{t:"range",a:[[]]})};function ys(Z,oe){var we,Be,Ue;function We(tt){return Be[((we.get(tt)||(oe.t==="range"?we.set(tt,Z.push(tt)):NaN))-1)%Be.length]}function wt(tt,zt){return e.range(Z.length).map(function(or){return tt+zt*or})}return We.domain=function(tt){if(!arguments.length)return Z;Z=[],we=new A;for(var zt=-1,or=tt.length,lr;++zt0?we[We-1]:Z[0],WeIr?0:1;if(lr=Le)return zt(lr,ui)+(or?zt(or,1-ui):"")+"Z";var qr,Kr,ii,vi,ci=0,Jr=0,un,dn,En,Nn,ga,ya,so,wa,io=[];if((vi=(+wt.apply(this,arguments)||0)/2)&&(ii=Be===Ru?Math.sqrt(or*or+lr*lr):+Be.apply(this,arguments),ui||(Jr*=-1),lr&&(Jr=Qr(ii/lr*Math.sin(vi))),or&&(ci=Qr(ii/or*Math.sin(vi)))),lr){un=lr*Math.cos(Dr+Jr),dn=lr*Math.sin(Dr+Jr),En=lr*Math.cos(Ir-Jr),Nn=lr*Math.sin(Ir-Jr);var Ss=Math.abs(Ir-Dr-2*Jr)<=Xe?0:1;if(Jr&&Dc(un,dn,En,Nn)===ui^Ss){var _s=(Dr+Ir)/2;un=lr*Math.cos(_s),dn=lr*Math.sin(_s),En=Nn=null}}else un=dn=0;if(or){ga=or*Math.cos(Ir-ci),ya=or*Math.sin(Ir-ci),so=or*Math.cos(Dr+ci),wa=or*Math.sin(Dr+ci);var Ns=Math.abs(Dr-Ir+2*ci)<=Xe?0:1;if(ci&&Dc(ga,ya,so,wa)===1-ui^Ns){var pn=(Dr+Ir)/2;ga=or*Math.cos(pn),ya=or*Math.sin(pn),so=wa=null}}else ga=ya=0;if(oi>Ye&&(qr=Math.min(Math.abs(lr-or)/2,+we.apply(this,arguments)))>.001){Kr=or0?0:1}function Da(Z,oe,we,Be,Ue){var We=Z[0]-oe[0],wt=Z[1]-oe[1],tt=(Ue?Be:-Be)/Math.sqrt(We*We+wt*wt),zt=tt*wt,or=-tt*We,lr=Z[0]+zt,Dr=Z[1]+or,Ir=oe[0]+zt,oi=oe[1]+or,ui=(lr+Ir)/2,qr=(Dr+oi)/2,Kr=Ir-lr,ii=oi-Dr,vi=Kr*Kr+ii*ii,ci=we-Be,Jr=lr*oi-Ir*Dr,un=(ii<0?-1:1)*Math.sqrt(Math.max(0,ci*ci*vi-Jr*Jr)),dn=(Jr*ii-Kr*un)/vi,En=(-Jr*Kr-ii*un)/vi,Nn=(Jr*ii+Kr*un)/vi,ga=(-Jr*Kr+ii*un)/vi,ya=dn-ui,so=En-qr,wa=Nn-ui,io=ga-qr;return ya*ya+so*so>wa*wa+io*io&&(dn=Nn,En=ga),[[dn-zt,En-or],[dn*we/ci,En*we/ci]]}function eo(){return!0}function Jc(Z){var oe=zs,we=ks,Be=eo,Ue=_c,We=Ue.key,wt=.7;function tt(zt){var or=[],lr=[],Dr=-1,Ir=zt.length,oi,ui=ti(oe),qr=ti(we);function Kr(){or.push("M",Ue(Z(lr),wt))}for(;++Dr1?Z.join("L"):Z+"Z"}function le(Z){return Z.join("L")+"Z"}function w(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe1&&Ue.push("H",Be[0]),Ue.join("")}function B(Z){for(var oe=0,we=Z.length,Be=Z[0],Ue=[Be[0],",",Be[1]];++oe1){tt=oe[1],We=Z[zt],zt++,Be+="C"+(Ue[0]+wt[0])+","+(Ue[1]+wt[1])+","+(We[0]-tt[0])+","+(We[1]-tt[1])+","+We[0]+","+We[1];for(var or=2;or9&&(We=we*3/Math.sqrt(We),wt[tt]=We*Be,wt[tt+1]=We*Ue));for(tt=-1;++tt<=zt;)We=(Z[Math.min(zt,tt+1)][0]-Z[Math.max(0,tt-1)][0])/(6*(1+wt[tt]*wt[tt])),oe.push([We||0,wt[tt]*We||0]);return oe}function Mt(Z){return Z.length<3?_c(Z):Z[0]+je(Z,et(Z))}e.svg.line.radial=function(){var Z=Jc(Dt);return Z.radius=Z.x,delete Z.x,Z.angle=Z.y,delete Z.y,Z};function Dt(Z){for(var oe,we=-1,Be=Z.length,Ue,We;++weXe)+",1 "+Dr}function or(lr,Dr,Ir,oi){return"Q 0,0 "+oi}return We.radius=function(lr){return arguments.length?(we=ti(lr),We):we},We.source=function(lr){return arguments.length?(Z=ti(lr),We):Z},We.target=function(lr){return arguments.length?(oe=ti(lr),We):oe},We.startAngle=function(lr){return arguments.length?(Be=ti(lr),We):Be},We.endAngle=function(lr){return arguments.length?(Ue=ti(lr),We):Ue},We};function Rr(Z){return Z.radius}e.svg.diagonal=function(){var Z=tr,oe=mr,we=zr;function Be(Ue,We){var wt=Z.call(this,Ue,We),tt=oe.call(this,Ue,We),zt=(wt.y+tt.y)/2,or=[wt,{x:wt.x,y:zt},{x:tt.x,y:zt},tt];return or=or.map(we),"M"+or[0]+"C"+or[1]+" "+or[2]+" "+or[3]}return Be.source=function(Ue){return arguments.length?(Z=ti(Ue),Be):Z},Be.target=function(Ue){return arguments.length?(oe=ti(Ue),Be):oe},Be.projection=function(Ue){return arguments.length?(we=Ue,Be):we},Be};function zr(Z){return[Z.x,Z.y]}e.svg.diagonal.radial=function(){var Z=e.svg.diagonal(),oe=zr,we=Z.projection;return Z.projection=function(Be){return arguments.length?we(Xr(oe=Be)):oe},Z};function Xr(Z){return function(){var oe=Z.apply(this,arguments),we=oe[0],Be=oe[1]-xe;return[we*Math.cos(Be),we*Math.sin(Be)]}}e.svg.symbol=function(){var Z=Li,oe=di;function we(Be,Ue){return(Qi.get(Z.call(this,Be,Ue))||Ci)(oe.call(this,Be,Ue))}return we.type=function(Be){return arguments.length?(Z=ti(Be),we):Z},we.size=function(Be){return arguments.length?(oe=ti(Be),we):oe},we};function di(){return 64}function Li(){return"circle"}function Ci(Z){var oe=Math.sqrt(Z/Xe);return"M0,"+oe+"A"+oe+","+oe+" 0 1,1 0,"+-oe+"A"+oe+","+oe+" 0 1,1 0,"+oe+"Z"}var Qi=e.map({circle:Ci,cross:function(Z){var oe=Math.sqrt(Z/5)/2;return"M"+-3*oe+","+-oe+"H"+-oe+"V"+-3*oe+"H"+oe+"V"+-oe+"H"+3*oe+"V"+oe+"H"+oe+"V"+3*oe+"H"+-oe+"V"+oe+"H"+-3*oe+"Z"},diamond:function(Z){var oe=Math.sqrt(Z/(2*pa)),we=oe*pa;return"M0,"+-oe+"L"+we+",0 0,"+oe+" "+-we+",0Z"},square:function(Z){var oe=Math.sqrt(Z)/2;return"M"+-oe+","+-oe+"L"+oe+","+-oe+" "+oe+","+oe+" "+-oe+","+oe+"Z"},"triangle-down":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+we+"L"+oe+","+-we+" "+-oe+","+-we+"Z"},"triangle-up":function(Z){var oe=Math.sqrt(Z/Mn),we=oe*Mn/2;return"M0,"+-we+"L"+oe+","+we+" "+-oe+","+we+"Z"}});e.svg.symbolTypes=Qi.keys();var Mn=Math.sqrt(3),pa=Math.tan(30*Se);Ce.transition=function(Z){for(var oe=Ro||++co,we=po(Z),Be=[],Ue,We,wt=Ds||{time:Date.now(),ease:uu,delay:0,duration:250},tt=-1,zt=this.length;++tt0;)Dr[--vi].call(Z,ii);if(Kr>=1)return wt.event&&wt.event.end.call(Z,Z.__data__,oe),--We.count?delete We[Be]:delete Z[we],1}wt||(tt=Ue.time,zt=Oo(Ir,0,tt),wt=We[Be]={tween:new A,time:tt,timer:zt,delay:Ue.delay,duration:Ue.duration,ease:Ue.ease,index:oe},Ue=null,++We.count)}e.svg.axis=function(){var Z=e.scale.linear(),oe=Hl,we=6,Be=6,Ue=3,We=[10],wt=null,tt;function zt(or){or.each(function(){var lr=e.select(this),Dr=this.__chart__||Z,Ir=this.__chart__=Z.copy(),oi=wt==null?Ir.ticks?Ir.ticks.apply(Ir,We):Ir.domain():wt,ui=tt==null?Ir.tickFormat?Ir.tickFormat.apply(Ir,We):H:tt,qr=lr.selectAll(".tick").data(oi,Ir),Kr=qr.enter().insert("g",".domain").attr("class","tick").style("opacity",Ye),ii=e.transition(qr.exit()).style("opacity",Ye).remove(),vi=e.transition(qr.order()).style("opacity",1),ci=Math.max(we,0)+Ue,Jr,un=Xi(Ir),dn=lr.selectAll(".domain").data([0]),En=(dn.enter().append("path").attr("class","domain"),e.transition(dn));Kr.append("line"),Kr.append("text");var Nn=Kr.select("line"),ga=vi.select("line"),ya=qr.select("text").text(ui),so=Kr.select("text"),wa=vi.select("text"),io=oe==="top"||oe==="left"?-1:1,Ss,_s,Ns,pn;if(oe==="bottom"||oe==="top"?(Jr=cu,Ss="x",Ns="y",_s="x2",pn="y2",ya.attr("dy",io<0?"0em":".71em").style("text-anchor","middle"),En.attr("d","M"+un[0]+","+io*Be+"V0H"+un[1]+"V"+io*Be)):(Jr=el,Ss="y",Ns="x",_s="y2",pn="x2",ya.attr("dy",".32em").style("text-anchor",io<0?"end":"start"),En.attr("d","M"+io*Be+","+un[0]+"H0V"+un[1]+"H"+io*Be)),Nn.attr(pn,io*we),so.attr(Ns,io*ci),ga.attr(_s,0).attr(pn,io*we),wa.attr(Ss,0).attr(Ns,io*ci),Ir.rangeBand){var za=Ir,Lo=za.rangeBand()/2;Dr=Ir=function(Fo){return za(Fo)+Lo}}else Dr.rangeBand?Dr=Ir:ii.call(Jr,Ir,Dr);Kr.call(Jr,Dr,Ir),vi.call(Jr,Ir,Ir)})}return zt.scale=function(or){return arguments.length?(Z=or,zt):Z},zt.orient=function(or){return arguments.length?(oe=or in Zu?or+"":Hl,zt):oe},zt.ticks=function(){return arguments.length?(We=r(arguments),zt):We},zt.tickValues=function(or){return arguments.length?(wt=or,zt):wt},zt.tickFormat=function(or){return arguments.length?(tt=or,zt):tt},zt.tickSize=function(or){var lr=arguments.length;return lr?(we=+or,Be=+arguments[lr-1],zt):we},zt.innerTickSize=function(or){return arguments.length?(we=+or,zt):we},zt.outerTickSize=function(or){return arguments.length?(Be=+or,zt):Be},zt.tickPadding=function(or){return arguments.length?(Ue=+or,zt):Ue},zt.tickSubdivide=function(){return arguments.length&&zt},zt};var Hl="bottom",Zu={top:1,right:1,bottom:1,left:1};function cu(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate("+(isFinite(Ue)?Ue:we(Be))+",0)"})}function el(Z,oe,we){Z.attr("transform",function(Be){var Ue=oe(Be);return"translate(0,"+(isFinite(Ue)?Ue:we(Be))+")"})}e.svg.brush=function(){var Z=ke(lr,"brushstart","brush","brushend"),oe=null,we=null,Be=[0,0],Ue=[0,0],We,wt,tt=!0,zt=!0,or=zc[0];function lr(qr){qr.each(function(){var Kr=e.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",ui).on("touchstart.brush",ui),ii=Kr.selectAll(".background").data([0]);ii.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),Kr.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var vi=Kr.selectAll(".resize").data(or,H);vi.exit().remove(),vi.enter().append("g").attr("class",function(dn){return"resize "+dn}).style("cursor",function(dn){return au[dn]}).append("rect").attr("x",function(dn){return/[ew]$/.test(dn)?-3:null}).attr("y",function(dn){return/^[ns]/.test(dn)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),vi.style("display",lr.empty()?"none":null);var ci=e.transition(Kr),Jr=e.transition(ii),un;oe&&(un=Xi(oe),Jr.attr("x",un[0]).attr("width",un[1]-un[0]),Ir(ci)),we&&(un=Xi(we),Jr.attr("y",un[0]).attr("height",un[1]-un[0]),oi(ci)),Dr(ci)})}lr.event=function(qr){qr.each(function(){var Kr=Z.of(this,arguments),ii={x:Be,y:Ue,i:We,j:wt},vi=this.__chart__||ii;this.__chart__=ii,Ro?e.select(this).transition().each("start.brush",function(){We=vi.i,wt=vi.j,Be=vi.x,Ue=vi.y,Kr({type:"brushstart"})}).tween("brush:brush",function(){var ci=ec(Be,ii.x),Jr=ec(Ue,ii.y);return We=wt=null,function(un){Be=ii.x=ci(un),Ue=ii.y=Jr(un),Kr({type:"brush",mode:"resize"})}}).each("end.brush",function(){We=ii.i,wt=ii.j,Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"})}):(Kr({type:"brushstart"}),Kr({type:"brush",mode:"resize"}),Kr({type:"brushend"}))})};function Dr(qr){qr.selectAll(".resize").attr("transform",function(Kr){return"translate("+Be[+/e$/.test(Kr)]+","+Ue[+/^s/.test(Kr)]+")"})}function Ir(qr){qr.select(".extent").attr("x",Be[0]),qr.selectAll(".extent,.n>rect,.s>rect").attr("width",Be[1]-Be[0])}function oi(qr){qr.select(".extent").attr("y",Ue[0]),qr.selectAll(".extent,.e>rect,.w>rect").attr("height",Ue[1]-Ue[0])}function ui(){var qr=this,Kr=e.select(e.event.target),ii=Z.of(qr,arguments),vi=e.select(qr),ci=Kr.datum(),Jr=!/^(n|s)$/.test(ci)&&oe,un=!/^(e|w)$/.test(ci)&&we,dn=Kr.classed("extent"),En=Or(qr),Nn,ga=e.mouse(qr),ya,so=e.select(a(qr)).on("keydown.brush",Ss).on("keyup.brush",_s);if(e.event.changedTouches?so.on("touchmove.brush",Ns).on("touchend.brush",za):so.on("mousemove.brush",Ns).on("mouseup.brush",za),vi.interrupt().selectAll("*").interrupt(),dn)ga[0]=Be[0]-ga[0],ga[1]=Ue[0]-ga[1];else if(ci){var wa=+/w$/.test(ci),io=+/^n/.test(ci);ya=[Be[1-wa]-ga[0],Ue[1-io]-ga[1]],ga[0]=Be[wa],ga[1]=Ue[io]}else e.event.altKey&&(Nn=ga.slice());vi.style("pointer-events","none").selectAll(".resize").style("display",null),e.select("body").style("cursor",Kr.style("cursor")),ii({type:"brushstart"}),Ns();function Ss(){e.event.keyCode==32&&(dn||(Nn=null,ga[0]-=Be[1],ga[1]-=Ue[1],dn=2),_e())}function _s(){e.event.keyCode==32&&dn==2&&(ga[0]+=Be[1],ga[1]+=Ue[1],dn=0,_e())}function Ns(){var Lo=e.mouse(qr),Fo=!1;ya&&(Lo[0]+=ya[0],Lo[1]+=ya[1]),dn||(e.event.altKey?(Nn||(Nn=[(Be[0]+Be[1])/2,(Ue[0]+Ue[1])/2]),ga[0]=Be[+(Lo[0]{(function(e,t){typeof i6=="object"&&typeof nee!="undefined"?t(i6):(e=e||self,t(e.d3=e.d3||{}))})(i6,function(e){"use strict";var t=new Date,r=new Date;function n(Ke,xt,bt,Lt){function St(Et){return Ke(Et=arguments.length===0?new Date:new Date(+Et)),Et}return St.floor=function(Et){return Ke(Et=new Date(+Et)),Et},St.ceil=function(Et){return Ke(Et=new Date(Et-1)),xt(Et,1),Ke(Et),Et},St.round=function(Et){var dt=St(Et),Ht=St.ceil(Et);return Et-dt0))return $t;do $t.push(fr=new Date(+Et)),xt(Et,Ht),Ke(Et);while(fr=dt)for(;Ke(dt),!Et(dt);)dt.setTime(dt-1)},function(dt,Ht){if(dt>=dt)if(Ht<0)for(;++Ht<=0;)for(;xt(dt,-1),!Et(dt););else for(;--Ht>=0;)for(;xt(dt,1),!Et(dt););})},bt&&(St.count=function(Et,dt){return t.setTime(+Et),r.setTime(+dt),Ke(t),Ke(r),Math.floor(bt(t,r))},St.every=function(Et){return Et=Math.floor(Et),!isFinite(Et)||!(Et>0)?null:Et>1?St.filter(Lt?function(dt){return Lt(dt)%Et===0}:function(dt){return St.count(0,dt)%Et===0}):St}),St}var i=n(function(){},function(Ke,xt){Ke.setTime(+Ke+xt)},function(Ke,xt){return xt-Ke});i.every=function(Ke){return Ke=Math.floor(Ke),!isFinite(Ke)||!(Ke>0)?null:Ke>1?n(function(xt){xt.setTime(Math.floor(xt/Ke)*Ke)},function(xt,bt){xt.setTime(+xt+bt*Ke)},function(xt,bt){return(bt-xt)/Ke}):i};var a=i.range,o=1e3,s=6e4,l=36e5,u=864e5,c=6048e5,f=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds())},function(Ke,xt){Ke.setTime(+Ke+xt*o)},function(Ke,xt){return(xt-Ke)/o},function(Ke){return Ke.getUTCSeconds()}),h=f.range,d=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getMinutes()}),v=d.range,x=n(function(Ke){Ke.setTime(Ke-Ke.getMilliseconds()-Ke.getSeconds()*o-Ke.getMinutes()*s)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getHours()}),b=x.range,p=n(function(Ke){Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setDate(Ke.getDate()+xt)},function(Ke,xt){return(xt-Ke-(xt.getTimezoneOffset()-Ke.getTimezoneOffset())*s)/u},function(Ke){return Ke.getDate()-1}),E=p.range;function k(Ke){return n(function(xt){xt.setDate(xt.getDate()-(xt.getDay()+7-Ke)%7),xt.setHours(0,0,0,0)},function(xt,bt){xt.setDate(xt.getDate()+bt*7)},function(xt,bt){return(bt-xt-(bt.getTimezoneOffset()-xt.getTimezoneOffset())*s)/c})}var A=k(0),L=k(1),_=k(2),C=k(3),M=k(4),g=k(5),P=k(6),T=A.range,F=L.range,q=_.range,V=C.range,H=M.range,X=g.range,G=P.range,N=n(function(Ke){Ke.setDate(1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setMonth(Ke.getMonth()+xt)},function(Ke,xt){return xt.getMonth()-Ke.getMonth()+(xt.getFullYear()-Ke.getFullYear())*12},function(Ke){return Ke.getMonth()}),W=N.range,re=n(function(Ke){Ke.setMonth(0,1),Ke.setHours(0,0,0,0)},function(Ke,xt){Ke.setFullYear(Ke.getFullYear()+xt)},function(Ke,xt){return xt.getFullYear()-Ke.getFullYear()},function(Ke){return Ke.getFullYear()});re.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setFullYear(Math.floor(xt.getFullYear()/Ke)*Ke),xt.setMonth(0,1),xt.setHours(0,0,0,0)},function(xt,bt){xt.setFullYear(xt.getFullYear()+bt*Ke)})};var ae=re.range,_e=n(function(Ke){Ke.setUTCSeconds(0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*s)},function(Ke,xt){return(xt-Ke)/s},function(Ke){return Ke.getUTCMinutes()}),Me=_e.range,ke=n(function(Ke){Ke.setUTCMinutes(0,0,0)},function(Ke,xt){Ke.setTime(+Ke+xt*l)},function(Ke,xt){return(xt-Ke)/l},function(Ke){return Ke.getUTCHours()}),ge=ke.range,ie=n(function(Ke){Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCDate(Ke.getUTCDate()+xt)},function(Ke,xt){return(xt-Ke)/u},function(Ke){return Ke.getUTCDate()-1}),Te=ie.range;function Ee(Ke){return n(function(xt){xt.setUTCDate(xt.getUTCDate()-(xt.getUTCDay()+7-Ke)%7),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCDate(xt.getUTCDate()+bt*7)},function(xt,bt){return(bt-xt)/c})}var Ae=Ee(0),ze=Ee(1),Ce=Ee(2),me=Ee(3),Re=Ee(4),ce=Ee(5),Ge=Ee(6),nt=Ae.range,ct=ze.range,qt=Ce.range,rt=me.range,ot=Re.range,Rt=ce.range,kt=Ge.range,Ct=n(function(Ke){Ke.setUTCDate(1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCMonth(Ke.getUTCMonth()+xt)},function(Ke,xt){return xt.getUTCMonth()-Ke.getUTCMonth()+(xt.getUTCFullYear()-Ke.getUTCFullYear())*12},function(Ke){return Ke.getUTCMonth()}),Yt=Ct.range,xr=n(function(Ke){Ke.setUTCMonth(0,1),Ke.setUTCHours(0,0,0,0)},function(Ke,xt){Ke.setUTCFullYear(Ke.getUTCFullYear()+xt)},function(Ke,xt){return xt.getUTCFullYear()-Ke.getUTCFullYear()},function(Ke){return Ke.getUTCFullYear()});xr.every=function(Ke){return!isFinite(Ke=Math.floor(Ke))||!(Ke>0)?null:n(function(xt){xt.setUTCFullYear(Math.floor(xt.getUTCFullYear()/Ke)*Ke),xt.setUTCMonth(0,1),xt.setUTCHours(0,0,0,0)},function(xt,bt){xt.setUTCFullYear(xt.getUTCFullYear()+bt*Ke)})};var er=xr.range;e.timeDay=p,e.timeDays=E,e.timeFriday=g,e.timeFridays=X,e.timeHour=x,e.timeHours=b,e.timeInterval=n,e.timeMillisecond=i,e.timeMilliseconds=a,e.timeMinute=d,e.timeMinutes=v,e.timeMonday=L,e.timeMondays=F,e.timeMonth=N,e.timeMonths=W,e.timeSaturday=P,e.timeSaturdays=G,e.timeSecond=f,e.timeSeconds=h,e.timeSunday=A,e.timeSundays=T,e.timeThursday=M,e.timeThursdays=H,e.timeTuesday=_,e.timeTuesdays=q,e.timeWednesday=C,e.timeWednesdays=V,e.timeWeek=A,e.timeWeeks=T,e.timeYear=re,e.timeYears=ae,e.utcDay=ie,e.utcDays=Te,e.utcFriday=ce,e.utcFridays=Rt,e.utcHour=ke,e.utcHours=ge,e.utcMillisecond=i,e.utcMilliseconds=a,e.utcMinute=_e,e.utcMinutes=Me,e.utcMonday=ze,e.utcMondays=ct,e.utcMonth=Ct,e.utcMonths=Yt,e.utcSaturday=Ge,e.utcSaturdays=kt,e.utcSecond=f,e.utcSeconds=h,e.utcSunday=Ae,e.utcSundays=nt,e.utcThursday=Re,e.utcThursdays=ot,e.utcTuesday=Ce,e.utcTuesdays=qt,e.utcWednesday=me,e.utcWednesdays=rt,e.utcWeek=Ae,e.utcWeeks=nt,e.utcYear=xr,e.utcYears=er,Object.defineProperty(e,"__esModule",{value:!0})})});var e3=ye((n6,aee)=>{(function(e,t){typeof n6=="object"&&typeof aee!="undefined"?t(n6,dq()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(n6,function(e,t){"use strict";function r(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L);return Ye.setFullYear(Ne.y),Ye}return new Date(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L)}function n(Ne){if(0<=Ne.y&&Ne.y<100){var Ye=new Date(Date.UTC(-1,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L));return Ye.setUTCFullYear(Ne.y),Ye}return new Date(Date.UTC(Ne.y,Ne.m,Ne.d,Ne.H,Ne.M,Ne.S,Ne.L))}function i(Ne,Ye,Ve){return{y:Ne,m:Ye,d:Ve,H:0,M:0,S:0,L:0}}function a(Ne){var Ye=Ne.dateTime,Ve=Ne.date,Xe=Ne.time,ht=Ne.periods,Le=Ne.days,xe=Ne.shortDays,Se=Ne.months,lt=Ne.shortMonths,Gt=h(ht),Vt=d(ht),ar=h(Le),Qr=d(Le),ai=h(xe),jr=d(xe),ri=h(Se),bi=d(Se),nn=h(lt),Wi=d(lt),Ni={a:Si,A:Mi,b:Pi,B:Gi,c:null,d:N,e:N,f:Me,H:W,I:re,j:ae,L:_e,m:ke,M:ge,p:Ki,q:ka,Q:dt,s:Ht,S:ie,u:Te,U:Ee,V:Ae,w:ze,W:Ce,x:null,X:null,y:me,Y:Re,Z:ce,"%":Et},_n={a:jn,A:la,b:Fa,B:Ra,c:null,d:Ge,e:Ge,f:ot,H:nt,I:ct,j:qt,L:rt,m:Rt,M:kt,p:jo,q:oa,Q:dt,s:Ht,S:Ct,u:Yt,U:xr,V:er,w:Ke,W:xt,x:null,X:null,y:bt,Y:Lt,Z:St,"%":Et},$i={a:jt,A:Zt,b:yr,B:Fr,c:Zr,d:M,e:M,f:V,H:P,I:P,j:g,L:q,m:C,M:T,p:ft,q:_,Q:X,s:G,S:F,u:x,U:b,V:p,w:v,W:E,x:Vr,X:gi,y:A,Y:k,Z:L,"%":H};Ni.x=zn(Ve,Ni),Ni.X=zn(Xe,Ni),Ni.c=zn(Ye,Ni),_n.x=zn(Ve,_n),_n.X=zn(Xe,_n),_n.c=zn(Ye,_n);function zn(Sn,Ha){return function(oo){var xn=[],_t=-1,br=0,Hr=Sn.length,ti,zi,Yi;for(oo instanceof Date||(oo=new Date(+oo));++_t53)return null;"w"in xn||(xn.w=1),"Z"in xn?(br=n(i(xn.y,0,1)),Hr=br.getUTCDay(),br=Hr>4||Hr===0?t.utcMonday.ceil(br):t.utcMonday(br),br=t.utcDay.offset(br,(xn.V-1)*7),xn.y=br.getUTCFullYear(),xn.m=br.getUTCMonth(),xn.d=br.getUTCDate()+(xn.w+6)%7):(br=r(i(xn.y,0,1)),Hr=br.getDay(),br=Hr>4||Hr===0?t.timeMonday.ceil(br):t.timeMonday(br),br=t.timeDay.offset(br,(xn.V-1)*7),xn.y=br.getFullYear(),xn.m=br.getMonth(),xn.d=br.getDate()+(xn.w+6)%7)}else("W"in xn||"U"in xn)&&("w"in xn||(xn.w="u"in xn?xn.u%7:"W"in xn?1:0),Hr="Z"in xn?n(i(xn.y,0,1)).getUTCDay():r(i(xn.y,0,1)).getDay(),xn.m=0,xn.d="W"in xn?(xn.w+6)%7+xn.W*7-(Hr+5)%7:xn.w+xn.U*7-(Hr+6)%7);return"Z"in xn?(xn.H+=xn.Z/100|0,xn.M+=xn.Z%100,n(xn)):r(xn)}}function It(Sn,Ha,oo,xn){for(var _t=0,br=Ha.length,Hr=oo.length,ti,zi;_t=Hr)return-1;if(ti=Ha.charCodeAt(_t++),ti===37){if(ti=Ha.charAt(_t++),zi=$i[ti in o?Ha.charAt(_t++):ti],!zi||(xn=zi(Sn,oo,xn))<0)return-1}else if(ti!=oo.charCodeAt(xn++))return-1}return xn}function ft(Sn,Ha,oo){var xn=Gt.exec(Ha.slice(oo));return xn?(Sn.p=Vt[xn[0].toLowerCase()],oo+xn[0].length):-1}function jt(Sn,Ha,oo){var xn=ai.exec(Ha.slice(oo));return xn?(Sn.w=jr[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zt(Sn,Ha,oo){var xn=ar.exec(Ha.slice(oo));return xn?(Sn.w=Qr[xn[0].toLowerCase()],oo+xn[0].length):-1}function yr(Sn,Ha,oo){var xn=nn.exec(Ha.slice(oo));return xn?(Sn.m=Wi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Fr(Sn,Ha,oo){var xn=ri.exec(Ha.slice(oo));return xn?(Sn.m=bi[xn[0].toLowerCase()],oo+xn[0].length):-1}function Zr(Sn,Ha,oo){return It(Sn,Ye,Ha,oo)}function Vr(Sn,Ha,oo){return It(Sn,Ve,Ha,oo)}function gi(Sn,Ha,oo){return It(Sn,Xe,Ha,oo)}function Si(Sn){return xe[Sn.getDay()]}function Mi(Sn){return Le[Sn.getDay()]}function Pi(Sn){return lt[Sn.getMonth()]}function Gi(Sn){return Se[Sn.getMonth()]}function Ki(Sn){return ht[+(Sn.getHours()>=12)]}function ka(Sn){return 1+~~(Sn.getMonth()/3)}function jn(Sn){return xe[Sn.getUTCDay()]}function la(Sn){return Le[Sn.getUTCDay()]}function Fa(Sn){return lt[Sn.getUTCMonth()]}function Ra(Sn){return Se[Sn.getUTCMonth()]}function jo(Sn){return ht[+(Sn.getUTCHours()>=12)]}function oa(Sn){return 1+~~(Sn.getUTCMonth()/3)}return{format:function(Sn){var Ha=zn(Sn+="",Ni);return Ha.toString=function(){return Sn},Ha},parse:function(Sn){var Ha=Wn(Sn+="",!1);return Ha.toString=function(){return Sn},Ha},utcFormat:function(Sn){var Ha=zn(Sn+="",_n);return Ha.toString=function(){return Sn},Ha},utcParse:function(Sn){var Ha=Wn(Sn+="",!0);return Ha.toString=function(){return Sn},Ha}}}var o={"-":"",_:" ",0:"0"},s=/^\s*\d+/,l=/^%/,u=/[\\^$*+?|[\]().{}]/g;function c(Ne,Ye,Ve){var Xe=Ne<0?"-":"",ht=(Xe?-Ne:Ne)+"",Le=ht.length;return Xe+(Le68?1900:2e3),Ve+Xe[0].length):-1}function L(Ne,Ye,Ve){var Xe=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.Z=Xe[1]?0:-(Xe[2]+(Xe[3]||"00")),Ve+Xe[0].length):-1}function _(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+1));return Xe?(Ne.q=Xe[0]*3-3,Ve+Xe[0].length):-1}function C(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.m=Xe[0]-1,Ve+Xe[0].length):-1}function M(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.d=+Xe[0],Ve+Xe[0].length):-1}function g(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.m=0,Ne.d=+Xe[0],Ve+Xe[0].length):-1}function P(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.H=+Xe[0],Ve+Xe[0].length):-1}function T(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.M=+Xe[0],Ve+Xe[0].length):-1}function F(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+2));return Xe?(Ne.S=+Xe[0],Ve+Xe[0].length):-1}function q(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+3));return Xe?(Ne.L=+Xe[0],Ve+Xe[0].length):-1}function V(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve,Ve+6));return Xe?(Ne.L=Math.floor(Xe[0]/1e3),Ve+Xe[0].length):-1}function H(Ne,Ye,Ve){var Xe=l.exec(Ye.slice(Ve,Ve+1));return Xe?Ve+Xe[0].length:-1}function X(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.Q=+Xe[0],Ve+Xe[0].length):-1}function G(Ne,Ye,Ve){var Xe=s.exec(Ye.slice(Ve));return Xe?(Ne.s=+Xe[0],Ve+Xe[0].length):-1}function N(Ne,Ye){return c(Ne.getDate(),Ye,2)}function W(Ne,Ye){return c(Ne.getHours(),Ye,2)}function re(Ne,Ye){return c(Ne.getHours()%12||12,Ye,2)}function ae(Ne,Ye){return c(1+t.timeDay.count(t.timeYear(Ne),Ne),Ye,3)}function _e(Ne,Ye){return c(Ne.getMilliseconds(),Ye,3)}function Me(Ne,Ye){return _e(Ne,Ye)+"000"}function ke(Ne,Ye){return c(Ne.getMonth()+1,Ye,2)}function ge(Ne,Ye){return c(Ne.getMinutes(),Ye,2)}function ie(Ne,Ye){return c(Ne.getSeconds(),Ye,2)}function Te(Ne){var Ye=Ne.getDay();return Ye===0?7:Ye}function Ee(Ne,Ye){return c(t.timeSunday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function Ae(Ne,Ye){var Ve=Ne.getDay();return Ne=Ve>=4||Ve===0?t.timeThursday(Ne):t.timeThursday.ceil(Ne),c(t.timeThursday.count(t.timeYear(Ne),Ne)+(t.timeYear(Ne).getDay()===4),Ye,2)}function ze(Ne){return Ne.getDay()}function Ce(Ne,Ye){return c(t.timeMonday.count(t.timeYear(Ne)-1,Ne),Ye,2)}function me(Ne,Ye){return c(Ne.getFullYear()%100,Ye,2)}function Re(Ne,Ye){return c(Ne.getFullYear()%1e4,Ye,4)}function ce(Ne){var Ye=Ne.getTimezoneOffset();return(Ye>0?"-":(Ye*=-1,"+"))+c(Ye/60|0,"0",2)+c(Ye%60,"0",2)}function Ge(Ne,Ye){return c(Ne.getUTCDate(),Ye,2)}function nt(Ne,Ye){return c(Ne.getUTCHours(),Ye,2)}function ct(Ne,Ye){return c(Ne.getUTCHours()%12||12,Ye,2)}function qt(Ne,Ye){return c(1+t.utcDay.count(t.utcYear(Ne),Ne),Ye,3)}function rt(Ne,Ye){return c(Ne.getUTCMilliseconds(),Ye,3)}function ot(Ne,Ye){return rt(Ne,Ye)+"000"}function Rt(Ne,Ye){return c(Ne.getUTCMonth()+1,Ye,2)}function kt(Ne,Ye){return c(Ne.getUTCMinutes(),Ye,2)}function Ct(Ne,Ye){return c(Ne.getUTCSeconds(),Ye,2)}function Yt(Ne){var Ye=Ne.getUTCDay();return Ye===0?7:Ye}function xr(Ne,Ye){return c(t.utcSunday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function er(Ne,Ye){var Ve=Ne.getUTCDay();return Ne=Ve>=4||Ve===0?t.utcThursday(Ne):t.utcThursday.ceil(Ne),c(t.utcThursday.count(t.utcYear(Ne),Ne)+(t.utcYear(Ne).getUTCDay()===4),Ye,2)}function Ke(Ne){return Ne.getUTCDay()}function xt(Ne,Ye){return c(t.utcMonday.count(t.utcYear(Ne)-1,Ne),Ye,2)}function bt(Ne,Ye){return c(Ne.getUTCFullYear()%100,Ye,2)}function Lt(Ne,Ye){return c(Ne.getUTCFullYear()%1e4,Ye,4)}function St(){return"+0000"}function Et(){return"%"}function dt(Ne){return+Ne}function Ht(Ne){return Math.floor(+Ne/1e3)}var $t;fr({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function fr(Ne){return $t=a(Ne),e.timeFormat=$t.format,e.timeParse=$t.parse,e.utcFormat=$t.utcFormat,e.utcParse=$t.utcParse,$t}var _r="%Y-%m-%dT%H:%M:%S.%LZ";function Br(Ne){return Ne.toISOString()}var Or=Date.prototype.toISOString?Br:e.utcFormat(_r);function Nr(Ne){var Ye=new Date(Ne);return isNaN(Ye)?null:Ye}var ut=+new Date("2000-01-01T00:00:00.000Z")?Nr:e.utcParse(_r);e.isoFormat=Or,e.isoParse=ut,e.timeFormatDefaultLocale=fr,e.timeFormatLocale=a,Object.defineProperty(e,"__esModule",{value:!0})})});var vq=ye((a6,oee)=>{(function(e,t){typeof a6=="object"&&typeof oee!="undefined"?t(a6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.d3=e.d3||{}))})(a6,function(e){"use strict";function t(C){return Math.abs(C=Math.round(C))>=1e21?C.toLocaleString("en").replace(/,/g,""):C.toString(10)}function r(C,M){if((g=(C=M?C.toExponential(M-1):C.toExponential()).indexOf("e"))<0)return null;var g,P=C.slice(0,g);return[P.length>1?P[0]+P.slice(2):P,+C.slice(g+1)]}function n(C){return C=r(Math.abs(C)),C?C[1]:NaN}function i(C,M){return function(g,P){for(var T=g.length,F=[],q=0,V=C[0],H=0;T>0&&V>0&&(H+V+1>P&&(V=Math.max(1,P-H)),F.push(g.substring(T-=V,T+V)),!((H+=V+1)>P));)V=C[q=(q+1)%C.length];return F.reverse().join(M)}}function a(C){return function(M){return M.replace(/[0-9]/g,function(g){return C[+g]})}}var o=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function s(C){if(!(M=o.exec(C)))throw new Error("invalid format: "+C);var M;return new l({fill:M[1],align:M[2],sign:M[3],symbol:M[4],zero:M[5],width:M[6],comma:M[7],precision:M[8]&&M[8].slice(1),trim:M[9],type:M[10]})}s.prototype=l.prototype;function l(C){this.fill=C.fill===void 0?" ":C.fill+"",this.align=C.align===void 0?">":C.align+"",this.sign=C.sign===void 0?"-":C.sign+"",this.symbol=C.symbol===void 0?"":C.symbol+"",this.zero=!!C.zero,this.width=C.width===void 0?void 0:+C.width,this.comma=!!C.comma,this.precision=C.precision===void 0?void 0:+C.precision,this.trim=!!C.trim,this.type=C.type===void 0?"":C.type+""}l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function u(C){e:for(var M=C.length,g=1,P=-1,T;g0&&(P=0);break}return P>0?C.slice(0,P)+C.slice(T+1):C}var c;function f(C,M){var g=r(C,M);if(!g)return C+"";var P=g[0],T=g[1],F=T-(c=Math.max(-8,Math.min(8,Math.floor(T/3)))*3)+1,q=P.length;return F===q?P:F>q?P+new Array(F-q+1).join("0"):F>0?P.slice(0,F)+"."+P.slice(F):"0."+new Array(1-F).join("0")+r(C,Math.max(0,M+F-1))[0]}function h(C,M){var g=r(C,M);if(!g)return C+"";var P=g[0],T=g[1];return T<0?"0."+new Array(-T).join("0")+P:P.length>T+1?P.slice(0,T+1)+"."+P.slice(T+1):P+new Array(T-P.length+2).join("0")}var d={"%":function(C,M){return(C*100).toFixed(M)},b:function(C){return Math.round(C).toString(2)},c:function(C){return C+""},d:t,e:function(C,M){return C.toExponential(M)},f:function(C,M){return C.toFixed(M)},g:function(C,M){return C.toPrecision(M)},o:function(C){return Math.round(C).toString(8)},p:function(C,M){return h(C*100,M)},r:h,s:f,X:function(C){return Math.round(C).toString(16).toUpperCase()},x:function(C){return Math.round(C).toString(16)}};function v(C){return C}var x=Array.prototype.map,b=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function p(C){var M=C.grouping===void 0||C.thousands===void 0?v:i(x.call(C.grouping,Number),C.thousands+""),g=C.currency===void 0?"":C.currency[0]+"",P=C.currency===void 0?"":C.currency[1]+"",T=C.decimal===void 0?".":C.decimal+"",F=C.numerals===void 0?v:a(x.call(C.numerals,String)),q=C.percent===void 0?"%":C.percent+"",V=C.minus===void 0?"-":C.minus+"",H=C.nan===void 0?"NaN":C.nan+"";function X(N){N=s(N);var W=N.fill,re=N.align,ae=N.sign,_e=N.symbol,Me=N.zero,ke=N.width,ge=N.comma,ie=N.precision,Te=N.trim,Ee=N.type;Ee==="n"?(ge=!0,Ee="g"):d[Ee]||(ie===void 0&&(ie=12),Te=!0,Ee="g"),(Me||W==="0"&&re==="=")&&(Me=!0,W="0",re="=");var Ae=_e==="$"?g:_e==="#"&&/[boxX]/.test(Ee)?"0"+Ee.toLowerCase():"",ze=_e==="$"?P:/[%p]/.test(Ee)?q:"",Ce=d[Ee],me=/[defgprs%]/.test(Ee);ie=ie===void 0?6:/[gprs]/.test(Ee)?Math.max(1,Math.min(21,ie)):Math.max(0,Math.min(20,ie));function Re(ce){var Ge=Ae,nt=ze,ct,qt,rt;if(Ee==="c")nt=Ce(ce)+nt,ce="";else{ce=+ce;var ot=ce<0||1/ce<0;if(ce=isNaN(ce)?H:Ce(Math.abs(ce),ie),Te&&(ce=u(ce)),ot&&+ce==0&&ae!=="+"&&(ot=!1),Ge=(ot?ae==="("?ae:V:ae==="-"||ae==="("?"":ae)+Ge,nt=(Ee==="s"?b[8+c/3]:"")+nt+(ot&&ae==="("?")":""),me){for(ct=-1,qt=ce.length;++ctrt||rt>57){nt=(rt===46?T+ce.slice(ct+1):ce.slice(ct))+nt,ce=ce.slice(0,ct);break}}}ge&&!Me&&(ce=M(ce,1/0));var Rt=Ge.length+ce.length+nt.length,kt=Rt>1)+Ge+ce+nt+kt.slice(Rt);break;default:ce=kt+Ge+ce+nt;break}return F(ce)}return Re.toString=function(){return N+""},Re}function G(N,W){var re=X((N=s(N),N.type="f",N)),ae=Math.max(-8,Math.min(8,Math.floor(n(W)/3)))*3,_e=Math.pow(10,-ae),Me=b[8+ae/3];return function(ke){return re(_e*ke)+Me}}return{format:X,formatPrefix:G}}var E;k({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});function k(C){return E=p(C),e.format=E.format,e.formatPrefix=E.formatPrefix,E}function A(C){return Math.max(0,-n(Math.abs(C)))}function L(C,M){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(n(M)/3)))*3-n(Math.abs(C)))}function _(C,M){return C=Math.abs(C),M=Math.abs(M)-C,Math.max(0,n(M)-n(C))+1}e.FormatSpecifier=l,e.formatDefaultLocale=k,e.formatLocale=p,e.formatSpecifier=s,e.precisionFixed=A,e.precisionPrefix=L,e.precisionRound=_,Object.defineProperty(e,"__esModule",{value:!0})})});var lee=ye((OQt,see)=>{"use strict";see.exports=function(e){for(var t=e.length,r,n=0;n13)&&r!==32&&r!==133&&r!==160&&r!==5760&&r!==6158&&(r<8192||r>8205)&&r!==8232&&r!==8233&&r!==8239&&r!==8287&&r!==8288&&r!==12288&&r!==65279)return!1;return!0}});var uo=ye((BQt,uee)=>{"use strict";var KQe=lee();uee.exports=function(e){var t=typeof e;if(t==="string"){var r=e;if(e=+e,e===0&&KQe(r))return!1}else if(t!=="number")return!1;return e-e<1}});var es=ye((NQt,cee)=>{"use strict";cee.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE*1e-4,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:24405875e-1,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"\u2212"}});var pq=ye((o6,fee)=>{(function(e,t){typeof o6=="object"&&typeof fee!="undefined"?t(o6):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e["base64-arraybuffer"]={}))})(o6,function(e){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",r=typeof Uint8Array=="undefined"?[]:new Uint8Array(256),n=0;n>2],c+=t[(s[l]&3)<<4|s[l+1]>>4],c+=t[(s[l+1]&15)<<2|s[l+2]>>6],c+=t[s[l+2]&63];return u%3===2?c=c.substring(0,c.length-1)+"=":u%3===1&&(c=c.substring(0,c.length-2)+"=="),c},a=function(o){var s=o.length*.75,l=o.length,u,c=0,f,h,d,v;o[o.length-1]==="="&&(s--,o[o.length-2]==="="&&s--);var x=new ArrayBuffer(s),b=new Uint8Array(x);for(u=0;u>4,b[c++]=(h&15)<<4|d>>2,b[c++]=(d&3)<<6|v&63;return x};e.decode=a,e.encode=i,Object.defineProperty(e,"__esModule",{value:!0})})});var gy=ye((UQt,hee)=>{"use strict";hee.exports=function(t){return window&&window.process&&window.process.versions?Object.prototype.toString.call(t)==="[object Object]":Object.prototype.toString.call(t)==="[object Object]"&&Object.getPrototypeOf(t).hasOwnProperty("hasOwnProperty")}});var vv=ye(mg=>{"use strict";var JQe=pq().decode,$Qe=gy(),gq=Array.isArray,QQe=ArrayBuffer,eet=DataView;function dee(e){return QQe.isView(e)&&!(e instanceof eet)}mg.isTypedArray=dee;function s6(e){return gq(e)||dee(e)}mg.isArrayOrTypedArray=s6;function tet(e){return!s6(e[0])}mg.isArray1D=tet;mg.ensureArray=function(e,t){return gq(e)||(e=[]),e.length=t,e};var Md={u1c:typeof Uint8ClampedArray=="undefined"?void 0:Uint8ClampedArray,i1:typeof Int8Array=="undefined"?void 0:Int8Array,u1:typeof Uint8Array=="undefined"?void 0:Uint8Array,i2:typeof Int16Array=="undefined"?void 0:Int16Array,u2:typeof Uint16Array=="undefined"?void 0:Uint16Array,i4:typeof Int32Array=="undefined"?void 0:Int32Array,u4:typeof Uint32Array=="undefined"?void 0:Uint32Array,f4:typeof Float32Array=="undefined"?void 0:Float32Array,f8:typeof Float64Array=="undefined"?void 0:Float64Array};Md.uint8c=Md.u1c;Md.uint8=Md.u1;Md.int8=Md.i1;Md.uint16=Md.u2;Md.int16=Md.i2;Md.uint32=Md.u4;Md.int32=Md.i4;Md.float32=Md.f4;Md.float64=Md.f8;function mq(e){return e.constructor===ArrayBuffer}mg.isArrayBuffer=mq;mg.decodeTypedArraySpec=function(e){var t=[],r=ret(e),n=r.dtype,i=Md[n];if(!i)throw new Error('Error in dtype: "'+n+'"');var a=i.BYTES_PER_ELEMENT,o=r.bdata;mq(o)||(o=JQe(o));var s=r.shape===void 0?[o.byteLength/a]:(""+r.shape).split(",");s.reverse();var l=s.length,u,c,f=+s[0],h=a*f,d=0;if(l===1)t=new i(o);else if(l===2)for(u=+s[1],c=0;c{"use strict";var pee=uo(),_q=vv().isArrayOrTypedArray;_ee.exports=function(t,r){if(pee(r))r=String(r);else if(typeof r!="string"||r.substr(r.length-4)==="[-1]")throw"bad property string";var n=r.split("."),i,a,o,s;for(s=0;s{"use strict";var t3=ES(),set=/^\w*$/,uet=0,xee=1,l6=2,bee=3,ob=4;wee.exports=function(t,r,n,i){n=n||"name",i=i||"value";var a,o,s,l={};r&&r.length?(s=t3(t,r),o=s.get()):o=t,r=r||"";var u={};if(o)for(a=0;a2)return l[d]=l[d]|l6,f.set(h,null);if(c){for(a=d;a{"use strict";var cet=/^(.*)(\.[^\.\[\]]+|\[\d\])$/,fet=/^[^\.\[\]]+$/;Aee.exports=function(e,t){for(;t;){var r=e.match(cet);if(r)e=r[1];else if(e.match(fet))e="";else throw new Error("bad relativeAttr call:"+[e,t]);if(t.charAt(0)==="^")t=t.slice(1);else break}return e&&t.charAt(0)!=="["?e+"."+t:e+t}});var u6=ye((WQt,Mee)=>{"use strict";var het=uo();Mee.exports=function(t,r){if(t>0)return Math.log(t)/Math.LN10;var n=Math.log(Math.min(r[0],r[1]))/Math.LN10;return het(n)||(n=Math.log(Math.max(r[0],r[1]))/Math.LN10-6),n}});var Cee=ye((ZQt,kee)=>{"use strict";var Eee=vv().isArrayOrTypedArray,kS=gy();kee.exports=function e(t,r){for(var n in r){var i=r[n],a=t[n];if(a!==i)if(n.charAt(0)==="_"||typeof i=="function"){if(n in t)continue;t[n]=i}else if(Eee(i)&&Eee(a)&&kS(i[0])){if(n==="customdata"||n==="ids")continue;for(var o=Math.min(i.length,a.length),s=0;s{"use strict";function det(e,t){var r=e%t;return r<0?r+t:r}function vet(e,t){return Math.abs(e)>t/2?e-Math.round(e/t)*t:e}Lee.exports={mod:det,modHalf:vet}});var id=ye((YQt,c6)=>{(function(e){var t=/^\s+/,r=/\s+$/,n=0,i=e.round,a=e.min,o=e.max,s=e.random;function l(me,Re){if(me=me||"",Re=Re||{},me instanceof l)return me;if(!(this instanceof l))return new l(me,Re);var ce=u(me);this._originalInput=me,this._r=ce.r,this._g=ce.g,this._b=ce.b,this._a=ce.a,this._roundA=i(100*this._a)/100,this._format=Re.format||ce.format,this._gradientType=Re.gradientType,this._r<1&&(this._r=i(this._r)),this._g<1&&(this._g=i(this._g)),this._b<1&&(this._b=i(this._b)),this._ok=ce.ok,this._tc_id=n++}l.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var me=this.toRgb();return(me.r*299+me.g*587+me.b*114)/1e3},getLuminance:function(){var me=this.toRgb(),Re,ce,Ge,nt,ct,qt;return Re=me.r/255,ce=me.g/255,Ge=me.b/255,Re<=.03928?nt=Re/12.92:nt=e.pow((Re+.055)/1.055,2.4),ce<=.03928?ct=ce/12.92:ct=e.pow((ce+.055)/1.055,2.4),Ge<=.03928?qt=Ge/12.92:qt=e.pow((Ge+.055)/1.055,2.4),.2126*nt+.7152*ct+.0722*qt},setAlpha:function(me){return this._a=N(me),this._roundA=i(100*this._a)/100,this},toHsv:function(){var me=d(this._r,this._g,this._b);return{h:me.h*360,s:me.s,v:me.v,a:this._a}},toHsvString:function(){var me=d(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.v*100);return this._a==1?"hsv("+Re+", "+ce+"%, "+Ge+"%)":"hsva("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHsl:function(){var me=f(this._r,this._g,this._b);return{h:me.h*360,s:me.s,l:me.l,a:this._a}},toHslString:function(){var me=f(this._r,this._g,this._b),Re=i(me.h*360),ce=i(me.s*100),Ge=i(me.l*100);return this._a==1?"hsl("+Re+", "+ce+"%, "+Ge+"%)":"hsla("+Re+", "+ce+"%, "+Ge+"%, "+this._roundA+")"},toHex:function(me){return x(this._r,this._g,this._b,me)},toHexString:function(me){return"#"+this.toHex(me)},toHex8:function(me){return b(this._r,this._g,this._b,this._a,me)},toHex8String:function(me){return"#"+this.toHex8(me)},toRgb:function(){return{r:i(this._r),g:i(this._g),b:i(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+i(this._r)+", "+i(this._g)+", "+i(this._b)+")":"rgba("+i(this._r)+", "+i(this._g)+", "+i(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:i(W(this._r,255)*100)+"%",g:i(W(this._g,255)*100)+"%",b:i(W(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%)":"rgba("+i(W(this._r,255)*100)+"%, "+i(W(this._g,255)*100)+"%, "+i(W(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:X[x(this._r,this._g,this._b,!0)]||!1},toFilter:function(me){var Re="#"+p(this._r,this._g,this._b,this._a),ce=Re,Ge=this._gradientType?"GradientType = 1, ":"";if(me){var nt=l(me);ce="#"+p(nt._r,nt._g,nt._b,nt._a)}return"progid:DXImageTransform.Microsoft.gradient("+Ge+"startColorstr="+Re+",endColorstr="+ce+")"},toString:function(me){var Re=!!me;me=me||this._format;var ce=!1,Ge=this._a<1&&this._a>=0,nt=!Re&&Ge&&(me==="hex"||me==="hex6"||me==="hex3"||me==="hex4"||me==="hex8"||me==="name");return nt?me==="name"&&this._a===0?this.toName():this.toRgbString():(me==="rgb"&&(ce=this.toRgbString()),me==="prgb"&&(ce=this.toPercentageRgbString()),(me==="hex"||me==="hex6")&&(ce=this.toHexString()),me==="hex3"&&(ce=this.toHexString(!0)),me==="hex4"&&(ce=this.toHex8String(!0)),me==="hex8"&&(ce=this.toHex8String()),me==="name"&&(ce=this.toName()),me==="hsl"&&(ce=this.toHslString()),me==="hsv"&&(ce=this.toHsvString()),ce||this.toHexString())},clone:function(){return l(this.toString())},_applyModification:function(me,Re){var ce=me.apply(null,[this].concat([].slice.call(Re)));return this._r=ce._r,this._g=ce._g,this._b=ce._b,this.setAlpha(ce._a),this},lighten:function(){return this._applyModification(L,arguments)},brighten:function(){return this._applyModification(_,arguments)},darken:function(){return this._applyModification(C,arguments)},desaturate:function(){return this._applyModification(E,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(A,arguments)},spin:function(){return this._applyModification(M,arguments)},_applyCombination:function(me,Re){return me.apply(null,[this].concat([].slice.call(Re)))},analogous:function(){return this._applyCombination(q,arguments)},complement:function(){return this._applyCombination(g,arguments)},monochromatic:function(){return this._applyCombination(V,arguments)},splitcomplement:function(){return this._applyCombination(F,arguments)},triad:function(){return this._applyCombination(P,arguments)},tetrad:function(){return this._applyCombination(T,arguments)}},l.fromRatio=function(me,Re){if(typeof me=="object"){var ce={};for(var Ge in me)me.hasOwnProperty(Ge)&&(Ge==="a"?ce[Ge]=me[Ge]:ce[Ge]=ge(me[Ge]));me=ce}return l(me,Re)};function u(me){var Re={r:0,g:0,b:0},ce=1,Ge=null,nt=null,ct=null,qt=!1,rt=!1;return typeof me=="string"&&(me=ze(me)),typeof me=="object"&&(Ae(me.r)&&Ae(me.g)&&Ae(me.b)?(Re=c(me.r,me.g,me.b),qt=!0,rt=String(me.r).substr(-1)==="%"?"prgb":"rgb"):Ae(me.h)&&Ae(me.s)&&Ae(me.v)?(Ge=ge(me.s),nt=ge(me.v),Re=v(me.h,Ge,nt),qt=!0,rt="hsv"):Ae(me.h)&&Ae(me.s)&&Ae(me.l)&&(Ge=ge(me.s),ct=ge(me.l),Re=h(me.h,Ge,ct),qt=!0,rt="hsl"),me.hasOwnProperty("a")&&(ce=me.a)),ce=N(ce),{ok:qt,format:me.format||rt,r:a(255,o(Re.r,0)),g:a(255,o(Re.g,0)),b:a(255,o(Re.b,0)),a:ce}}function c(me,Re,ce){return{r:W(me,255)*255,g:W(Re,255)*255,b:W(ce,255)*255}}function f(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=(Ge+nt)/2;if(Ge==nt)ct=qt=0;else{var ot=Ge-nt;switch(qt=rt>.5?ot/(2-Ge-nt):ot/(Ge+nt),Ge){case me:ct=(Re-ce)/ot+(Re1&&(Ct-=1),Ct<1/6?Rt+(kt-Rt)*6*Ct:Ct<1/2?kt:Ct<2/3?Rt+(kt-Rt)*(2/3-Ct)*6:Rt}if(Re===0)Ge=nt=ct=ce;else{var rt=ce<.5?ce*(1+Re):ce+Re-ce*Re,ot=2*ce-rt;Ge=qt(ot,rt,me+1/3),nt=qt(ot,rt,me),ct=qt(ot,rt,me-1/3)}return{r:Ge*255,g:nt*255,b:ct*255}}function d(me,Re,ce){me=W(me,255),Re=W(Re,255),ce=W(ce,255);var Ge=o(me,Re,ce),nt=a(me,Re,ce),ct,qt,rt=Ge,ot=Ge-nt;if(qt=Ge===0?0:ot/Ge,Ge==nt)ct=0;else{switch(Ge){case me:ct=(Re-ce)/ot+(Re>1)+720)%360;--Re;)Ge.h=(Ge.h+nt)%360,ct.push(l(Ge));return ct}function V(me,Re){Re=Re||6;for(var ce=l(me).toHsv(),Ge=ce.h,nt=ce.s,ct=ce.v,qt=[],rt=1/Re;Re--;)qt.push(l({h:Ge,s:nt,v:ct})),ct=(ct+rt)%1;return qt}l.mix=function(me,Re,ce){ce=ce===0?0:ce||50;var Ge=l(me).toRgb(),nt=l(Re).toRgb(),ct=ce/100,qt={r:(nt.r-Ge.r)*ct+Ge.r,g:(nt.g-Ge.g)*ct+Ge.g,b:(nt.b-Ge.b)*ct+Ge.b,a:(nt.a-Ge.a)*ct+Ge.a};return l(qt)},l.readability=function(me,Re){var ce=l(me),Ge=l(Re);return(e.max(ce.getLuminance(),Ge.getLuminance())+.05)/(e.min(ce.getLuminance(),Ge.getLuminance())+.05)},l.isReadable=function(me,Re,ce){var Ge=l.readability(me,Re),nt,ct;switch(ct=!1,nt=Ce(ce),nt.level+nt.size){case"AAsmall":case"AAAlarge":ct=Ge>=4.5;break;case"AAlarge":ct=Ge>=3;break;case"AAAsmall":ct=Ge>=7;break}return ct},l.mostReadable=function(me,Re,ce){var Ge=null,nt=0,ct,qt,rt,ot;ce=ce||{},qt=ce.includeFallbackColors,rt=ce.level,ot=ce.size;for(var Rt=0;Rtnt&&(nt=ct,Ge=l(Re[Rt]));return l.isReadable(me,Ge,{level:rt,size:ot})||!qt?Ge:(ce.includeFallbackColors=!1,l.mostReadable(me,["#fff","#000"],ce))};var H=l.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},X=l.hexNames=G(H);function G(me){var Re={};for(var ce in me)me.hasOwnProperty(ce)&&(Re[me[ce]]=ce);return Re}function N(me){return me=parseFloat(me),(isNaN(me)||me<0||me>1)&&(me=1),me}function W(me,Re){_e(me)&&(me="100%");var ce=Me(me);return me=a(Re,o(0,parseFloat(me))),ce&&(me=parseInt(me*Re,10)/100),e.abs(me-Re)<1e-6?1:me%Re/parseFloat(Re)}function re(me){return a(1,o(0,me))}function ae(me){return parseInt(me,16)}function _e(me){return typeof me=="string"&&me.indexOf(".")!=-1&&parseFloat(me)===1}function Me(me){return typeof me=="string"&&me.indexOf("%")!=-1}function ke(me){return me.length==1?"0"+me:""+me}function ge(me){return me<=1&&(me=me*100+"%"),me}function ie(me){return e.round(parseFloat(me)*255).toString(16)}function Te(me){return ae(me)/255}var Ee=function(){var me="[-\\+]?\\d+%?",Re="[-\\+]?\\d*\\.\\d+%?",ce="(?:"+Re+")|(?:"+me+")",Ge="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?",nt="[\\s|\\(]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")[,|\\s]+("+ce+")\\s*\\)?";return{CSS_UNIT:new RegExp(ce),rgb:new RegExp("rgb"+Ge),rgba:new RegExp("rgba"+nt),hsl:new RegExp("hsl"+Ge),hsla:new RegExp("hsla"+nt),hsv:new RegExp("hsv"+Ge),hsva:new RegExp("hsva"+nt),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Ae(me){return!!Ee.CSS_UNIT.exec(me)}function ze(me){me=me.replace(t,"").replace(r,"").toLowerCase();var Re=!1;if(H[me])me=H[me],Re=!0;else if(me=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var ce;return(ce=Ee.rgb.exec(me))?{r:ce[1],g:ce[2],b:ce[3]}:(ce=Ee.rgba.exec(me))?{r:ce[1],g:ce[2],b:ce[3],a:ce[4]}:(ce=Ee.hsl.exec(me))?{h:ce[1],s:ce[2],l:ce[3]}:(ce=Ee.hsla.exec(me))?{h:ce[1],s:ce[2],l:ce[3],a:ce[4]}:(ce=Ee.hsv.exec(me))?{h:ce[1],s:ce[2],v:ce[3]}:(ce=Ee.hsva.exec(me))?{h:ce[1],s:ce[2],v:ce[3],a:ce[4]}:(ce=Ee.hex8.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),a:Te(ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex6.exec(me))?{r:ae(ce[1]),g:ae(ce[2]),b:ae(ce[3]),format:Re?"name":"hex"}:(ce=Ee.hex4.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),a:Te(ce[4]+""+ce[4]),format:Re?"name":"hex8"}:(ce=Ee.hex3.exec(me))?{r:ae(ce[1]+""+ce[1]),g:ae(ce[2]+""+ce[2]),b:ae(ce[3]+""+ce[3]),format:Re?"name":"hex"}:!1}function Ce(me){var Re,ce;return me=me||{level:"AA",size:"small"},Re=(me.level||"AA").toUpperCase(),ce=(me.size||"small").toLowerCase(),Re!=="AA"&&Re!=="AAA"&&(Re="AA"),ce!=="small"&&ce!=="large"&&(ce="small"),{level:Re,size:ce}}typeof c6!="undefined"&&c6.exports?c6.exports=l:window.tinycolor=l})(Math)});var no=ye(PS=>{"use strict";var Pee=gy(),CS=Array.isArray;function pet(e,t){var r,n;for(r=0;r{"use strict";Iee.exports=function(e){var t=e.variantValues,r=e.editType,n=e.colorEditType;n===void 0&&(n=r);var i={editType:r,valType:"integer",min:1,max:1e3,extras:["normal","bold"],dflt:"normal"};e.noNumericWeightValues&&(i.valType="enumerated",i.values=i.extras,i.extras=void 0,i.min=void 0,i.max=void 0);var a={family:{valType:"string",noBlank:!0,strict:!0,editType:r},size:{valType:"number",min:1,editType:r},color:{valType:"color",editType:n},weight:i,style:{editType:r,valType:"enumerated",values:["normal","italic"],dflt:"normal"},variant:e.noFontVariant?void 0:{editType:r,valType:"enumerated",values:t||["normal","small-caps","all-small-caps","all-petite-caps","petite-caps","unicase"],dflt:"normal"},textcase:e.noFontTextcase?void 0:{editType:r,valType:"enumerated",values:["normal","word caps","upper","lower"],dflt:"normal"},lineposition:e.noFontLineposition?void 0:{editType:r,valType:"flaglist",flags:["under","over","through"],extras:["none"],dflt:"none"},shadow:e.noFontShadow?void 0:{editType:r,valType:"string",dflt:e.autoShadowDflt?"auto":"none"},editType:r};return e.autoSize&&(a.size.dflt="auto"),e.autoColor&&(a.color.dflt="auto"),e.arrayOk&&(a.family.arrayOk=!0,a.weight.arrayOk=!0,a.style.arrayOk=!0,e.noFontVariant||(a.variant.arrayOk=!0),e.noFontTextcase||(a.textcase.arrayOk=!0),e.noFontLineposition||(a.lineposition.arrayOk=!0),e.noFontShadow||(a.shadow.arrayOk=!0),a.size.arrayOk=!0,a.color.arrayOk=!0),a}});var IS=ye(($Qt,Ree)=>{"use strict";Ree.exports={YANGLE:60,HOVERARROWSIZE:6,HOVERTEXTPAD:3,HOVERFONTSIZE:13,HOVERFONT:"Arial, sans-serif",HOVERMINTIME:50,HOVERID:"-hover"}});var N1=ye((QQt,Fee)=>{"use strict";var Dee=IS(),zee=Su(),xq=zee({editType:"none"});xq.family.dflt=Dee.HOVERFONT;xq.size.dflt=Dee.HOVERFONTSIZE;Fee.exports={clickmode:{valType:"flaglist",flags:["event","select"],dflt:"event",editType:"plot",extras:["none"]},dragmode:{valType:"enumerated",values:["zoom","pan","select","lasso","drawclosedpath","drawopenpath","drawline","drawrect","drawcircle","orbit","turntable",!1],dflt:"zoom",editType:"modebar"},hovermode:{valType:"enumerated",values:["x","y","closest",!1,"x unified","y unified"],dflt:"closest",editType:"modebar"},hoversubplots:{valType:"enumerated",values:["single","overlaying","axis"],dflt:"overlaying",editType:"none"},hoverdistance:{valType:"integer",min:-1,dflt:20,editType:"none"},spikedistance:{valType:"integer",min:-1,dflt:-1,editType:"none"},hoverlabel:{bgcolor:{valType:"color",editType:"none"},bordercolor:{valType:"color",editType:"none"},font:xq,grouptitlefont:zee({editType:"none"}),align:{valType:"enumerated",values:["left","right","auto"],dflt:"auto",editType:"none"},namelength:{valType:"integer",min:-1,dflt:15,editType:"none"},editType:"none"},selectdirection:{valType:"enumerated",values:["h","v","d","any"],dflt:"any",editType:"none"}}});var i3=ye((eer,qee)=>{"use strict";var get=Su(),f6=N1().hoverlabel,h6=no().extendFlat;qee.exports={hoverlabel:{bgcolor:h6({},f6.bgcolor,{arrayOk:!0}),bordercolor:h6({},f6.bordercolor,{arrayOk:!0}),font:get({arrayOk:!0,editType:"none"}),align:h6({},f6.align,{arrayOk:!0}),namelength:h6({},f6.namelength,{arrayOk:!0}),editType:"none"}}});var vl=ye((ter,Oee)=>{"use strict";var met=Su(),yet=i3();Oee.exports={type:{valType:"enumerated",values:[],dflt:"scatter",editType:"calc+clearAxisTypes",_noTemplating:!0},visible:{valType:"enumerated",values:[!0,!1,"legendonly"],dflt:!0,editType:"calc"},showlegend:{valType:"boolean",dflt:!0,editType:"style"},legend:{valType:"subplotid",dflt:"legend",editType:"style"},legendgroup:{valType:"string",dflt:"",editType:"style"},legendgrouptitle:{text:{valType:"string",dflt:"",editType:"style"},font:met({editType:"style"}),editType:"style"},legendrank:{valType:"number",dflt:1e3,editType:"style"},legendwidth:{valType:"number",min:0,editType:"style"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"style"},name:{valType:"string",editType:"style"},uid:{valType:"string",editType:"plot",anim:!0},ids:{valType:"data_array",editType:"calc",anim:!0},customdata:{valType:"data_array",editType:"calc"},meta:{valType:"any",arrayOk:!0,editType:"plot"},selectedpoints:{valType:"any",editType:"calc"},hoverinfo:{valType:"flaglist",flags:["x","y","z","text","name"],extras:["all","none","skip"],arrayOk:!0,dflt:"all",editType:"none"},hoverlabel:yet.hoverlabel,stream:{token:{valType:"string",noBlank:!0,strict:!0,editType:"calc"},maxpoints:{valType:"number",min:0,max:1e4,dflt:500,editType:"calc"},editType:"calc"},uirevision:{valType:"any",editType:"none"}}});var sb=ye((rer,Uee)=>{"use strict";var _et=id(),d6={Greys:[[0,"rgb(0,0,0)"],[1,"rgb(255,255,255)"]],YlGnBu:[[0,"rgb(8,29,88)"],[.125,"rgb(37,52,148)"],[.25,"rgb(34,94,168)"],[.375,"rgb(29,145,192)"],[.5,"rgb(65,182,196)"],[.625,"rgb(127,205,187)"],[.75,"rgb(199,233,180)"],[.875,"rgb(237,248,217)"],[1,"rgb(255,255,217)"]],Greens:[[0,"rgb(0,68,27)"],[.125,"rgb(0,109,44)"],[.25,"rgb(35,139,69)"],[.375,"rgb(65,171,93)"],[.5,"rgb(116,196,118)"],[.625,"rgb(161,217,155)"],[.75,"rgb(199,233,192)"],[.875,"rgb(229,245,224)"],[1,"rgb(247,252,245)"]],YlOrRd:[[0,"rgb(128,0,38)"],[.125,"rgb(189,0,38)"],[.25,"rgb(227,26,28)"],[.375,"rgb(252,78,42)"],[.5,"rgb(253,141,60)"],[.625,"rgb(254,178,76)"],[.75,"rgb(254,217,118)"],[.875,"rgb(255,237,160)"],[1,"rgb(255,255,204)"]],Bluered:[[0,"rgb(0,0,255)"],[1,"rgb(255,0,0)"]],RdBu:[[0,"rgb(5,10,172)"],[.35,"rgb(106,137,247)"],[.5,"rgb(190,190,190)"],[.6,"rgb(220,170,132)"],[.7,"rgb(230,145,90)"],[1,"rgb(178,10,28)"]],Reds:[[0,"rgb(220,220,220)"],[.2,"rgb(245,195,157)"],[.4,"rgb(245,160,105)"],[1,"rgb(178,10,28)"]],Blues:[[0,"rgb(5,10,172)"],[.35,"rgb(40,60,190)"],[.5,"rgb(70,100,245)"],[.6,"rgb(90,120,245)"],[.7,"rgb(106,137,247)"],[1,"rgb(220,220,220)"]],Picnic:[[0,"rgb(0,0,255)"],[.1,"rgb(51,153,255)"],[.2,"rgb(102,204,255)"],[.3,"rgb(153,204,255)"],[.4,"rgb(204,204,255)"],[.5,"rgb(255,255,255)"],[.6,"rgb(255,204,255)"],[.7,"rgb(255,153,255)"],[.8,"rgb(255,102,204)"],[.9,"rgb(255,102,102)"],[1,"rgb(255,0,0)"]],Rainbow:[[0,"rgb(150,0,90)"],[.125,"rgb(0,0,200)"],[.25,"rgb(0,25,255)"],[.375,"rgb(0,152,255)"],[.5,"rgb(44,255,150)"],[.625,"rgb(151,255,0)"],[.75,"rgb(255,234,0)"],[.875,"rgb(255,111,0)"],[1,"rgb(255,0,0)"]],Portland:[[0,"rgb(12,51,131)"],[.25,"rgb(10,136,186)"],[.5,"rgb(242,211,56)"],[.75,"rgb(242,143,56)"],[1,"rgb(217,30,30)"]],Jet:[[0,"rgb(0,0,131)"],[.125,"rgb(0,60,170)"],[.375,"rgb(5,255,255)"],[.625,"rgb(255,255,0)"],[.875,"rgb(250,0,0)"],[1,"rgb(128,0,0)"]],Hot:[[0,"rgb(0,0,0)"],[.3,"rgb(230,0,0)"],[.6,"rgb(255,210,0)"],[1,"rgb(255,255,255)"]],Blackbody:[[0,"rgb(0,0,0)"],[.2,"rgb(230,0,0)"],[.4,"rgb(230,210,0)"],[.7,"rgb(255,255,255)"],[1,"rgb(160,200,255)"]],Earth:[[0,"rgb(0,0,130)"],[.1,"rgb(0,180,180)"],[.2,"rgb(40,210,40)"],[.4,"rgb(230,230,50)"],[.6,"rgb(120,70,20)"],[1,"rgb(255,255,255)"]],Electric:[[0,"rgb(0,0,0)"],[.15,"rgb(30,0,100)"],[.4,"rgb(120,0,100)"],[.6,"rgb(160,90,0)"],[.8,"rgb(230,200,0)"],[1,"rgb(255,250,220)"]],Viridis:[[0,"#440154"],[.06274509803921569,"#48186a"],[.12549019607843137,"#472d7b"],[.18823529411764706,"#424086"],[.25098039215686274,"#3b528b"],[.3137254901960784,"#33638d"],[.3764705882352941,"#2c728e"],[.4392156862745098,"#26828e"],[.5019607843137255,"#21918c"],[.5647058823529412,"#1fa088"],[.6274509803921569,"#28ae80"],[.6901960784313725,"#3fbc73"],[.7529411764705882,"#5ec962"],[.8156862745098039,"#84d44b"],[.8784313725490196,"#addc30"],[.9411764705882353,"#d8e219"],[1,"#fde725"]],Cividis:[[0,"rgb(0,32,76)"],[.058824,"rgb(0,42,102)"],[.117647,"rgb(0,52,110)"],[.176471,"rgb(39,63,108)"],[.235294,"rgb(60,74,107)"],[.294118,"rgb(76,85,107)"],[.352941,"rgb(91,95,109)"],[.411765,"rgb(104,106,112)"],[.470588,"rgb(117,117,117)"],[.529412,"rgb(131,129,120)"],[.588235,"rgb(146,140,120)"],[.647059,"rgb(161,152,118)"],[.705882,"rgb(176,165,114)"],[.764706,"rgb(192,177,109)"],[.823529,"rgb(209,191,102)"],[.882353,"rgb(225,204,92)"],[.941176,"rgb(243,219,79)"],[1,"rgb(255,233,69)"]]},Bee=d6.RdBu;function xet(e,t){if(t||(t=Bee),!e)return t;function r(){try{e=d6[e]||JSON.parse(e)}catch(n){e=t}}return typeof e=="string"&&(r(),typeof e=="string"&&r()),Nee(e)?e:t}function Nee(e){var t=0;if(!Array.isArray(e)||e.length<2||!e[0]||!e[e.length-1]||+e[0][0]!=0||+e[e.length-1][0]!=1)return!1;for(var r=0;r{"use strict";lb.defaults=["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"];lb.defaultLine="#444";lb.lightLine="#eee";lb.background="#fff";lb.borderLine="#BEC8D9";lb.lightFraction=100*10/11});var va=ye((ner,Vee)=>{"use strict";var xp=id(),wet=uo(),Tet=vv().isTypedArray,nd=Vee.exports={},v6=dh();nd.defaults=v6.defaults;var Aet=nd.defaultLine=v6.defaultLine;nd.lightLine=v6.lightLine;var wq=nd.background=v6.background;nd.tinyRGB=function(e){var t=e.toRgb();return"rgb("+Math.round(t.r)+", "+Math.round(t.g)+", "+Math.round(t.b)+")"};nd.rgb=function(e){return nd.tinyRGB(xp(e))};nd.opacity=function(e){return e?xp(e).getAlpha():0};nd.addOpacity=function(e,t){var r=xp(e).toRgb();return"rgba("+Math.round(r.r)+", "+Math.round(r.g)+", "+Math.round(r.b)+", "+t+")"};nd.combine=function(e,t){var r=xp(e).toRgb();if(r.a===1)return xp(e).toRgbString();var n=xp(t||wq).toRgb(),i=n.a===1?n:{r:255*(1-n.a)+n.r*n.a,g:255*(1-n.a)+n.g*n.a,b:255*(1-n.a)+n.b*n.a},a={r:i.r*(1-r.a)+r.r*r.a,g:i.g*(1-r.a)+r.g*r.a,b:i.b*(1-r.a)+r.b*r.a};return xp(a).toRgbString()};nd.interpolate=function(e,t,r){var n=xp(e).toRgb(),i=xp(t).toRgb(),a={r:r*n.r+(1-r)*i.r,g:r*n.g+(1-r)*i.g,b:r*n.b+(1-r)*i.b};return xp(a).toRgbString()};nd.contrast=function(e,t,r){var n=xp(e);n.getAlpha()!==1&&(n=xp(nd.combine(e,wq)));var i=n.isDark()?t?n.lighten(t):wq:r?n.darken(r):Aet;return i.toString()};nd.stroke=function(e,t){var r=xp(t);e.style({stroke:nd.tinyRGB(r),"stroke-opacity":r.getAlpha()})};nd.fill=function(e,t){var r=xp(t);e.style({fill:nd.tinyRGB(r),"fill-opacity":r.getAlpha()})};nd.clean=function(e){if(!(!e||typeof e!="object")){var t=Object.keys(e),r,n,i,a;for(r=0;r=0)))return e;if(a===3)n[a]>1&&(n[a]=1);else if(n[a]>=1)return e}var o=Math.round(n[0]*255)+", "+Math.round(n[1]*255)+", "+Math.round(n[2]*255);return i?"rgba("+o+", "+n[3]+")":"rgb("+o+")"}});var U1=ye((aer,Hee)=>{"use strict";Hee.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}});var n3=ye(Gee=>{"use strict";Gee.counter=function(e,t,r,n){var i=(t||"")+(r?"":"$"),a=n===!1?"":"^";return e==="xy"?new RegExp(a+"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?"+i):new RegExp(a+e+"([2-9]|[1-9][0-9]+)?"+i)}});var Xee=ye(bp=>{"use strict";var Tq=uo(),jee=id(),Wee=no().extendFlat,Met=vl(),Eet=sb(),ket=va(),Cet=U1().DESELECTDIM,a3=ES(),Zee=n3().counter,Let=r3().modHalf,dm=vv().isArrayOrTypedArray,V1=vv().isTypedArraySpec,H1=vv().decodeTypedArraySpec;bp.valObjectMeta={data_array:{coerceFunction:function(e,t,r){t.set(dm(e)?e:V1(e)?H1(e):r)}},enumerated:{coerceFunction:function(e,t,r,n){n.coerceNumber&&(e=+e),n.values.indexOf(e)===-1?t.set(r):t.set(e)},validateFunction:function(e,t){t.coerceNumber&&(e=+e);for(var r=t.values,n=0;nn.max?t.set(r):t.set(+e)}},integer:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}V1(e)&&(e=H1(e)),e%1||!Tq(e)||n.min!==void 0&&en.max?t.set(r):t.set(+e)}},string:{coerceFunction:function(e,t,r,n){if(typeof e!="string"){var i=typeof e=="number";n.strict===!0||!i?t.set(r):t.set(String(e))}else n.noBlank&&!e?t.set(r):t.set(e)}},color:{coerceFunction:function(e,t,r){V1(e)&&(e=H1(e)),jee(e).isValid()?t.set(e):t.set(r)}},colorlist:{coerceFunction:function(e,t,r){function n(i){return jee(i).isValid()}!Array.isArray(e)||!e.length?t.set(r):e.every(n)?t.set(e):t.set(r)}},colorscale:{coerceFunction:function(e,t,r){t.set(Eet.get(e,r))}},angle:{coerceFunction:function(e,t,r){V1(e)&&(e=H1(e)),e==="auto"?t.set("auto"):Tq(e)?t.set(Let(+e,360)):t.set(r)}},subplotid:{coerceFunction:function(e,t,r,n){var i=n.regex||Zee(r);if(typeof e=="string"&&i.test(e)){t.set(e);return}t.set(r)},validateFunction:function(e,t){var r=t.dflt;return e===r?!0:typeof e!="string"?!1:!!Zee(r).test(e)}},flaglist:{coerceFunction:function(e,t,r,n){if((n.extras||[]).indexOf(e)!==-1){t.set(e);return}if(typeof e!="string"){t.set(r);return}for(var i=e.split("+"),a=0;a{"use strict";var Yee={staticPlot:{valType:"boolean",dflt:!1},typesetMath:{valType:"boolean",dflt:!0},plotlyServerURL:{valType:"string",dflt:""},editable:{valType:"boolean",dflt:!1},edits:{annotationPosition:{valType:"boolean",dflt:!1},annotationTail:{valType:"boolean",dflt:!1},annotationText:{valType:"boolean",dflt:!1},axisTitleText:{valType:"boolean",dflt:!1},colorbarPosition:{valType:"boolean",dflt:!1},colorbarTitleText:{valType:"boolean",dflt:!1},legendPosition:{valType:"boolean",dflt:!1},legendText:{valType:"boolean",dflt:!1},shapePosition:{valType:"boolean",dflt:!1},titleText:{valType:"boolean",dflt:!1}},editSelection:{valType:"boolean",dflt:!0},autosizable:{valType:"boolean",dflt:!1},responsive:{valType:"boolean",dflt:!1},fillFrame:{valType:"boolean",dflt:!1},frameMargins:{valType:"number",dflt:0,min:0,max:.5},scrollZoom:{valType:"flaglist",flags:["cartesian","gl3d","geo","mapbox","map"],extras:[!0,!1],dflt:"gl3d+geo+map"},doubleClick:{valType:"enumerated",values:[!1,"reset","autosize","reset+autosize"],dflt:"reset+autosize"},doubleClickDelay:{valType:"number",dflt:300,min:0},showAxisDragHandles:{valType:"boolean",dflt:!0},showAxisRangeEntryBoxes:{valType:"boolean",dflt:!0},showTips:{valType:"boolean",dflt:!0},showLink:{valType:"boolean",dflt:!1},linkText:{valType:"string",dflt:"Edit chart",noBlank:!0},sendData:{valType:"boolean",dflt:!0},showSources:{valType:"any",dflt:!1},displayModeBar:{valType:"enumerated",values:["hover",!0,!1],dflt:"hover"},showSendToCloud:{valType:"boolean",dflt:!1},showEditInChartStudio:{valType:"boolean",dflt:!1},modeBarButtonsToRemove:{valType:"any",dflt:[]},modeBarButtonsToAdd:{valType:"any",dflt:[]},modeBarButtons:{valType:"any",dflt:!1},toImageButtonOptions:{valType:"any",dflt:{}},displaylogo:{valType:"boolean",dflt:!0},watermark:{valType:"boolean",dflt:!1},plotGlPixelRatio:{valType:"number",dflt:2,min:1,max:4},setBackground:{valType:"any",dflt:"transparent"},topojsonURL:{valType:"string",noBlank:!0,dflt:"https://cdn.plot.ly/"},mapboxAccessToken:{valType:"string",dflt:null},logging:{valType:"integer",min:0,max:2,dflt:1},notifyOnLogging:{valType:"integer",min:0,max:2,dflt:0},queueLength:{valType:"integer",min:0,dflt:0},locale:{valType:"string",dflt:"en-US"},locales:{valType:"any",dflt:{}}},Kee={};function Jee(e,t){for(var r in e){var n=e[r];n.valType?t[r]=n.dflt:(t[r]||(t[r]={}),Jee(n,t[r]))}}Jee(Yee,Kee);$ee.exports={configAttributes:Yee,dfltConfig:Kee}});var Sq=ye((uer,Qee)=>{"use strict";var Aq=xa(),Pet=uo(),RS=[];Qee.exports=function(e,t){if(RS.indexOf(e)!==-1)return;RS.push(e);var r=1e3;Pet(t)?r=t:t==="long"&&(r=3e3);var n=Aq.select("body").selectAll(".plotly-notifier").data([0]);n.enter().append("div").classed("plotly-notifier",!0);var i=n.selectAll(".notifier-note").data(RS);function a(o){o.duration(700).style("opacity",0).each("end",function(s){var l=RS.indexOf(s);l!==-1&&RS.splice(l,1),Aq.select(this).remove()})}i.enter().append("div").classed("notifier-note",!0).style("opacity",0).each(function(o){var s=Aq.select(this);s.append("button").classed("notifier-close",!0).html("×").on("click",function(){s.transition().call(a)});for(var l=s.append("p"),u=o.split(//g),c=0;c{"use strict";var o3=ub().dfltConfig,Mq=Sq(),Eq=ete.exports={};Eq.log=function(){var e;if(o3.logging>1){var t=["LOG:"];for(e=0;e1){var r=[];for(e=0;e"),"long")}};Eq.warn=function(){var e;if(o3.logging>0){var t=["WARN:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}};Eq.error=function(){var e;if(o3.logging>0){var t=["ERROR:"];for(e=0;e0){var r=[];for(e=0;e"),"stick")}}});var g6=ye((fer,tte)=>{"use strict";tte.exports=function(){}});var kq=ye((her,rte)=>{"use strict";rte.exports=function(t,r){if(r instanceof RegExp){for(var n=r.toString(),i=0;i{ite.exports=Iet;function Iet(){var e=new Float32Array(16);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var ote=ye((ver,ate)=>{ate.exports=Ret;function Ret(e){var t=new Float32Array(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}});var lte=ye((per,ste)=>{ste.exports=Det;function Det(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Cq=ye((ger,ute)=>{ute.exports=zet;function zet(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var fte=ye((mer,cte)=>{cte.exports=Fet;function Fet(e,t){if(e===t){var r=t[1],n=t[2],i=t[3],a=t[6],o=t[7],s=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=r,e[6]=t[9],e[7]=t[13],e[8]=n,e[9]=a,e[11]=t[14],e[12]=i,e[13]=o,e[14]=s}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}});var dte=ye((yer,hte)=>{hte.exports=qet;function qet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],p=t[15],E=r*s-n*o,k=r*l-i*o,A=r*u-a*o,L=n*l-i*s,_=n*u-a*s,C=i*u-a*l,M=c*x-f*v,g=c*b-h*v,P=c*p-d*v,T=f*b-h*x,F=f*p-d*x,q=h*p-d*b,V=E*q-k*F+A*T+L*P-_*g+C*M;return V?(V=1/V,e[0]=(s*q-l*F+u*T)*V,e[1]=(i*F-n*q-a*T)*V,e[2]=(x*C-b*_+p*L)*V,e[3]=(h*_-f*C-d*L)*V,e[4]=(l*P-o*q-u*g)*V,e[5]=(r*q-i*P+a*g)*V,e[6]=(b*A-v*C-p*k)*V,e[7]=(c*C-h*A+d*k)*V,e[8]=(o*F-s*P+u*M)*V,e[9]=(n*P-r*F-a*M)*V,e[10]=(v*_-x*A+p*E)*V,e[11]=(f*A-c*_-d*E)*V,e[12]=(s*g-o*T-l*M)*V,e[13]=(r*T-n*g+i*M)*V,e[14]=(x*k-v*L-b*E)*V,e[15]=(c*L-f*k+h*E)*V,e):null}});var pte=ye((_er,vte)=>{vte.exports=Oet;function Oet(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],f=t[9],h=t[10],d=t[11],v=t[12],x=t[13],b=t[14],p=t[15];return e[0]=s*(h*p-d*b)-f*(l*p-u*b)+x*(l*d-u*h),e[1]=-(n*(h*p-d*b)-f*(i*p-a*b)+x*(i*d-a*h)),e[2]=n*(l*p-u*b)-s*(i*p-a*b)+x*(i*u-a*l),e[3]=-(n*(l*d-u*h)-s*(i*d-a*h)+f*(i*u-a*l)),e[4]=-(o*(h*p-d*b)-c*(l*p-u*b)+v*(l*d-u*h)),e[5]=r*(h*p-d*b)-c*(i*p-a*b)+v*(i*d-a*h),e[6]=-(r*(l*p-u*b)-o*(i*p-a*b)+v*(i*u-a*l)),e[7]=r*(l*d-u*h)-o*(i*d-a*h)+c*(i*u-a*l),e[8]=o*(f*p-d*x)-c*(s*p-u*x)+v*(s*d-u*f),e[9]=-(r*(f*p-d*x)-c*(n*p-a*x)+v*(n*d-a*f)),e[10]=r*(s*p-u*x)-o*(n*p-a*x)+v*(n*u-a*s),e[11]=-(r*(s*d-u*f)-o*(n*d-a*f)+c*(n*u-a*s)),e[12]=-(o*(f*b-h*x)-c*(s*b-l*x)+v*(s*h-l*f)),e[13]=r*(f*b-h*x)-c*(n*b-i*x)+v*(n*h-i*f),e[14]=-(r*(s*b-l*x)-o*(n*b-i*x)+v*(n*l-i*s)),e[15]=r*(s*h-l*f)-o*(n*h-i*f)+c*(n*l-i*s),e}});var mte=ye((xer,gte)=>{gte.exports=Bet;function Bet(e){var t=e[0],r=e[1],n=e[2],i=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],f=e[10],h=e[11],d=e[12],v=e[13],x=e[14],b=e[15],p=t*o-r*a,E=t*s-n*a,k=t*l-i*a,A=r*s-n*o,L=r*l-i*o,_=n*l-i*s,C=u*v-c*d,M=u*x-f*d,g=u*b-h*d,P=c*x-f*v,T=c*b-h*v,F=f*b-h*x;return p*F-E*T+k*P+A*g-L*M+_*C}});var _te=ye((ber,yte)=>{yte.exports=Net;function Net(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],f=t[8],h=t[9],d=t[10],v=t[11],x=t[12],b=t[13],p=t[14],E=t[15],k=r[0],A=r[1],L=r[2],_=r[3];return e[0]=k*n+A*s+L*f+_*x,e[1]=k*i+A*l+L*h+_*b,e[2]=k*a+A*u+L*d+_*p,e[3]=k*o+A*c+L*v+_*E,k=r[4],A=r[5],L=r[6],_=r[7],e[4]=k*n+A*s+L*f+_*x,e[5]=k*i+A*l+L*h+_*b,e[6]=k*a+A*u+L*d+_*p,e[7]=k*o+A*c+L*v+_*E,k=r[8],A=r[9],L=r[10],_=r[11],e[8]=k*n+A*s+L*f+_*x,e[9]=k*i+A*l+L*h+_*b,e[10]=k*a+A*u+L*d+_*p,e[11]=k*o+A*c+L*v+_*E,k=r[12],A=r[13],L=r[14],_=r[15],e[12]=k*n+A*s+L*f+_*x,e[13]=k*i+A*l+L*h+_*b,e[14]=k*a+A*u+L*d+_*p,e[15]=k*o+A*c+L*v+_*E,e}});var bte=ye((wer,xte)=>{xte.exports=Uet;function Uet(e,t,r){var n=r[0],i=r[1],a=r[2],o,s,l,u,c,f,h,d,v,x,b,p;return t===e?(e[12]=t[0]*n+t[4]*i+t[8]*a+t[12],e[13]=t[1]*n+t[5]*i+t[9]*a+t[13],e[14]=t[2]*n+t[6]*i+t[10]*a+t[14],e[15]=t[3]*n+t[7]*i+t[11]*a+t[15]):(o=t[0],s=t[1],l=t[2],u=t[3],c=t[4],f=t[5],h=t[6],d=t[7],v=t[8],x=t[9],b=t[10],p=t[11],e[0]=o,e[1]=s,e[2]=l,e[3]=u,e[4]=c,e[5]=f,e[6]=h,e[7]=d,e[8]=v,e[9]=x,e[10]=b,e[11]=p,e[12]=o*n+c*i+v*a+t[12],e[13]=s*n+f*i+x*a+t[13],e[14]=l*n+h*i+b*a+t[14],e[15]=u*n+d*i+p*a+t[15]),e}});var Tte=ye((Ter,wte)=>{wte.exports=Vet;function Vet(e,t,r){var n=r[0],i=r[1],a=r[2];return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}});var Ste=ye((Aer,Ate)=>{Ate.exports=Het;function Het(e,t,r,n){var i=n[0],a=n[1],o=n[2],s=Math.sqrt(i*i+a*a+o*o),l,u,c,f,h,d,v,x,b,p,E,k,A,L,_,C,M,g,P,T,F,q,V,H;return Math.abs(s)<1e-6?null:(s=1/s,i*=s,a*=s,o*=s,l=Math.sin(r),u=Math.cos(r),c=1-u,f=t[0],h=t[1],d=t[2],v=t[3],x=t[4],b=t[5],p=t[6],E=t[7],k=t[8],A=t[9],L=t[10],_=t[11],C=i*i*c+u,M=a*i*c+o*l,g=o*i*c-a*l,P=i*a*c-o*l,T=a*a*c+u,F=o*a*c+i*l,q=i*o*c+a*l,V=a*o*c-i*l,H=o*o*c+u,e[0]=f*C+x*M+k*g,e[1]=h*C+b*M+A*g,e[2]=d*C+p*M+L*g,e[3]=v*C+E*M+_*g,e[4]=f*P+x*T+k*F,e[5]=h*P+b*T+A*F,e[6]=d*P+p*T+L*F,e[7]=v*P+E*T+_*F,e[8]=f*q+x*V+k*H,e[9]=h*q+b*V+A*H,e[10]=d*q+p*V+L*H,e[11]=v*q+E*V+_*H,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}});var Ete=ye((Ser,Mte)=>{Mte.exports=Get;function Get(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[4],o=t[5],s=t[6],l=t[7],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*n,e[5]=o*i+c*n,e[6]=s*i+f*n,e[7]=l*i+h*n,e[8]=u*i-a*n,e[9]=c*i-o*n,e[10]=f*i-s*n,e[11]=h*i-l*n,e}});var Cte=ye((Mer,kte)=>{kte.exports=jet;function jet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[8],c=t[9],f=t[10],h=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*n,e[1]=o*i-c*n,e[2]=s*i-f*n,e[3]=l*i-h*n,e[8]=a*n+u*i,e[9]=o*n+c*i,e[10]=s*n+f*i,e[11]=l*n+h*i,e}});var Pte=ye((Eer,Lte)=>{Lte.exports=Wet;function Wet(e,t,r){var n=Math.sin(r),i=Math.cos(r),a=t[0],o=t[1],s=t[2],l=t[3],u=t[4],c=t[5],f=t[6],h=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*n,e[1]=o*i+c*n,e[2]=s*i+f*n,e[3]=l*i+h*n,e[4]=u*i-a*n,e[5]=c*i-o*n,e[6]=f*i-s*n,e[7]=h*i-l*n,e}});var Rte=ye((ker,Ite)=>{Ite.exports=Zet;function Zet(e,t,r){var n,i,a,o=r[0],s=r[1],l=r[2],u=Math.sqrt(o*o+s*s+l*l);return Math.abs(u)<1e-6?null:(u=1/u,o*=u,s*=u,l*=u,n=Math.sin(t),i=Math.cos(t),a=1-i,e[0]=o*o*a+i,e[1]=s*o*a+l*n,e[2]=l*o*a-s*n,e[3]=0,e[4]=o*s*a-l*n,e[5]=s*s*a+i,e[6]=l*s*a+o*n,e[7]=0,e[8]=o*l*a+s*n,e[9]=s*l*a-o*n,e[10]=l*l*a+i,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}});var zte=ye((Cer,Dte)=>{Dte.exports=Xet;function Xet(e,t,r){var n=t[0],i=t[1],a=t[2],o=t[3],s=n+n,l=i+i,u=a+a,c=n*s,f=n*l,h=n*u,d=i*l,v=i*u,x=a*u,b=o*s,p=o*l,E=o*u;return e[0]=1-(d+x),e[1]=f+E,e[2]=h-p,e[3]=0,e[4]=f-E,e[5]=1-(c+x),e[6]=v+b,e[7]=0,e[8]=h+p,e[9]=v-b,e[10]=1-(c+d),e[11]=0,e[12]=r[0],e[13]=r[1],e[14]=r[2],e[15]=1,e}});var qte=ye((Ler,Fte)=>{Fte.exports=Yet;function Yet(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Bte=ye((Per,Ote)=>{Ote.exports=Ket;function Ket(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}});var Ute=ye((Ier,Nte)=>{Nte.exports=Jet;function Jet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=n,e[6]=r,e[7]=0,e[8]=0,e[9]=-r,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Hte=ye((Rer,Vte)=>{Vte.exports=$et;function $et(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=0,e[2]=-r,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=r,e[9]=0,e[10]=n,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var jte=ye((Der,Gte)=>{Gte.exports=Qet;function Qet(e,t){var r=Math.sin(t),n=Math.cos(t);return e[0]=n,e[1]=r,e[2]=0,e[3]=0,e[4]=-r,e[5]=n,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Lq=ye((zer,Wte)=>{Wte.exports=ett;function ett(e,t){var r=t[0],n=t[1],i=t[2],a=t[3],o=r+r,s=n+n,l=i+i,u=r*o,c=n*o,f=n*s,h=i*o,d=i*s,v=i*l,x=a*o,b=a*s,p=a*l;return e[0]=1-f-v,e[1]=c+p,e[2]=h-b,e[3]=0,e[4]=c-p,e[5]=1-u-v,e[6]=d+x,e[7]=0,e[8]=h+b,e[9]=d-x,e[10]=1-u-f,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}});var Xte=ye((Fer,Zte)=>{Zte.exports=ttt;function ttt(e,t,r,n,i,a,o){var s=1/(r-t),l=1/(i-n),u=1/(a-o);return e[0]=a*2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*l,e[6]=0,e[7]=0,e[8]=(r+t)*s,e[9]=(i+n)*l,e[10]=(o+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*a*2*u,e[15]=0,e}});var Kte=ye((qer,Yte)=>{Yte.exports=rtt;function rtt(e,t,r,n,i){var a=1/Math.tan(t/2),o=1/(n-i);return e[0]=a/r,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=(i+n)*o,e[11]=-1,e[12]=0,e[13]=0,e[14]=2*i*n*o,e[15]=0,e}});var $te=ye((Oer,Jte)=>{Jte.exports=itt;function itt(e,t,r,n){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),s=Math.tan(t.rightDegrees*Math.PI/180),l=2/(o+s),u=2/(i+a);return e[0]=l,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((o-s)*l*.5),e[9]=(i-a)*u*.5,e[10]=n/(r-n),e[11]=-1,e[12]=0,e[13]=0,e[14]=n*r/(r-n),e[15]=0,e}});var ere=ye((Ber,Qte)=>{Qte.exports=ntt;function ntt(e,t,r,n,i,a,o){var s=1/(t-r),l=1/(n-i),u=1/(a-o);return e[0]=-2*s,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*l,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+r)*s,e[13]=(i+n)*l,e[14]=(o+a)*u,e[15]=1,e}});var rre=ye((Ner,tre)=>{var att=Cq();tre.exports=ott;function ott(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v=t[0],x=t[1],b=t[2],p=n[0],E=n[1],k=n[2],A=r[0],L=r[1],_=r[2];return Math.abs(v-A)<1e-6&&Math.abs(x-L)<1e-6&&Math.abs(b-_)<1e-6?att(e):(c=v-A,f=x-L,h=b-_,d=1/Math.sqrt(c*c+f*f+h*h),c*=d,f*=d,h*=d,i=E*h-k*f,a=k*c-p*h,o=p*f-E*c,d=Math.sqrt(i*i+a*a+o*o),d?(d=1/d,i*=d,a*=d,o*=d):(i=0,a=0,o=0),s=f*o-h*a,l=h*i-c*o,u=c*a-f*i,d=Math.sqrt(s*s+l*l+u*u),d?(d=1/d,s*=d,l*=d,u*=d):(s=0,l=0,u=0),e[0]=i,e[1]=s,e[2]=c,e[3]=0,e[4]=a,e[5]=l,e[6]=f,e[7]=0,e[8]=o,e[9]=u,e[10]=h,e[11]=0,e[12]=-(i*v+a*x+o*b),e[13]=-(s*v+l*x+u*b),e[14]=-(c*v+f*x+h*b),e[15]=1,e)}});var nre=ye((Uer,ire)=>{ire.exports=stt;function stt(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}});var Pq=ye((Ver,are)=>{are.exports={create:nte(),clone:ote(),copy:lte(),identity:Cq(),transpose:fte(),invert:dte(),adjoint:pte(),determinant:mte(),multiply:_te(),translate:bte(),scale:Tte(),rotate:Ste(),rotateX:Ete(),rotateY:Cte(),rotateZ:Pte(),fromRotation:Rte(),fromRotationTranslation:zte(),fromScaling:qte(),fromTranslation:Bte(),fromXRotation:Ute(),fromYRotation:Hte(),fromZRotation:jte(),fromQuat:Lq(),frustum:Xte(),perspective:Kte(),perspectiveFromFieldOfView:$te(),ortho:ere(),lookAt:rre(),str:nre()}});var m6=ye(Xf=>{"use strict";var ltt=Pq();Xf.init2dArray=function(e,t){for(var r=new Array(e),n=0;n{"use strict";var utt=xa(),ore=G1(),ctt=m6(),ftt=Pq();function htt(e){var t;if(typeof e=="string"){if(t=document.getElementById(e),t===null)throw new Error("No DOM element with id '"+e+"' exists on the page.");return t}else if(e==null)throw new Error("DOM element provided is null or undefined");return e}function dtt(e){var t=utt.select(e);return t.node()instanceof HTMLElement&&t.size()&&t.classed("js-plotly-plot")}function sre(e){var t=e&&e.parentNode;t&&t.removeChild(e)}function vtt(e,t){lre("global",e,t)}function lre(e,t,r){var n="plotly.js-style-"+e,i=document.getElementById(n);if(!(i&&i.matches(".no-inline-styles"))){i||(i=document.createElement("style"),i.setAttribute("id",n),i.appendChild(document.createTextNode("")),document.head.appendChild(i));var a=i.sheet;a?a.insertRule?a.insertRule(t+"{"+r+"}",0):a.addRule?a.addRule(t,r,0):ore.warn("addStyleRule failed"):ore.warn("Cannot addRelatedStyleRule, probably due to strict CSP...")}}function ptt(e){var t="plotly.js-style-"+e,r=document.getElementById(t);r&&sre(r)}function gtt(e,t,r,n,i,a){var o=n.split(":"),s=i.split(":"),l="data-btn-style-event-added";a||(a=document),a.querySelectorAll(e).forEach(function(u){u.getAttribute(l)||(u.addEventListener("mouseenter",function(){var c=this.querySelector(r);c&&(c.style[o[0]]=o[1])}),u.addEventListener("mouseleave",function(){var c=this.querySelector(r);c&&(t&&this.matches(t)?c.style[o[0]]=o[1]:c.style[s[0]]=s[1])}),u.setAttribute(l,!0))})}function mtt(e){var t=cre(e),r=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];return t.forEach(function(n){var i=ure(n);if(i){var a=ctt.convertCssMatrix(i);r=ftt.multiply(r,r,a)}}),r}function ure(e){var t=window.getComputedStyle(e,null),r=t.getPropertyValue("-webkit-transform")||t.getPropertyValue("-moz-transform")||t.getPropertyValue("-ms-transform")||t.getPropertyValue("-o-transform")||t.getPropertyValue("transform");return r==="none"?null:r.replace("matrix","").replace("3d","").slice(1,-1).split(",").map(function(n){return+n})}function cre(e){for(var t=[];ytt(e);)t.push(e),e=e.parentNode,typeof ShadowRoot=="function"&&e instanceof ShadowRoot&&(e=e.host);return t}function ytt(e){return e&&(e instanceof Element||e instanceof HTMLElement)}function _tt(e,t){return e&&t&&e.top===t.top&&e.left===t.left&&e.right===t.right&&e.bottom===t.bottom}fre.exports={getGraphDiv:htt,isPlotDiv:dtt,removeElement:sre,addStyleRule:vtt,addRelatedStyleRule:lre,deleteRelatedStyleRule:ptt,setStyleOnHover:gtt,getFullTransformMatrix:mtt,getElementTransformMatrix:ure,getElementAndAncestors:cre,equalDomRects:_tt}});var zS=ye((jer,hre)=>{"use strict";hre.exports={mode:{valType:"enumerated",dflt:"afterall",values:["immediate","next","afterall"]},direction:{valType:"enumerated",values:["forward","reverse"],dflt:"forward"},fromcurrent:{valType:"boolean",dflt:!1},frame:{duration:{valType:"number",min:0,dflt:500},redraw:{valType:"boolean",dflt:!0}},transition:{duration:{valType:"number",min:0,dflt:500,editType:"none"},easing:{valType:"enumerated",dflt:"cubic-in-out",values:["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"],editType:"none"},ordering:{valType:"enumerated",values:["layout first","traces first"],dflt:"layout first",editType:"none"}}}});var Bu=ye((Wer,_re)=>{"use strict";var vre=no().extendFlat,xtt=gy(),pre={valType:"flaglist",extras:["none"],flags:["calc","clearAxisTypes","plot","style","markerSize","colorbars"]},gre={valType:"flaglist",extras:["none"],flags:["calc","plot","legend","ticks","axrange","layoutstyle","modebar","camera","arraydraw","colorbars"]},btt=pre.flags.slice().concat(["fullReplot"]),wtt=gre.flags.slice().concat("layoutReplot");_re.exports={traces:pre,layout:gre,traceFlags:function(){return dre(btt)},layoutFlags:function(){return dre(wtt)},update:function(e,t){var r=t.editType;if(r&&r!=="none")for(var n=r.split("+"),i=0;i{"use strict";Iq.dash={valType:"string",values:["solid","dot","dash","longdash","dashdot","longdashdot"],dflt:"solid",editType:"style"};Iq.pattern={shape:{valType:"enumerated",values:["","/","\\","x","-","|","+","."],dflt:"",arrayOk:!0,editType:"style"},fillmode:{valType:"enumerated",values:["replace","overlay"],dflt:"replace",editType:"style"},bgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgcolor:{valType:"color",arrayOk:!0,editType:"style"},fgopacity:{valType:"number",editType:"style",min:0,max:1},size:{valType:"number",min:0,dflt:8,arrayOk:!0,editType:"style"},solidity:{valType:"number",min:0,max:1,dflt:.3,arrayOk:!0,editType:"style"},editType:"style"}});var Rq=ye((Xer,xre)=>{"use strict";xre.exports={FORMAT_LINK:"https://github.com/d3/d3-format/tree/v1.4.5#d3-format",DATE_FORMAT_LINK:"https://github.com/d3/d3-time-format/tree/v2.2.3#locale_format"}});var Wo=ye(y6=>{"use strict";var bre=Rq(),Yer=bre.FORMAT_LINK,Ker=bre.DATE_FORMAT_LINK;function Dq(e){var t=e.description?" "+e.description:"",r=e.keys||[];if(r.length>0){for(var n=[],i=0;i{"use strict";function j1(e,t){return t?t.d2l(e):e}function wre(e,t){return t?t.l2d(e):e}function Ttt(e){return e.x0}function Att(e){return e.x1}function Stt(e){return e.y0}function Mtt(e){return e.y1}function Tre(e){return e.x0shift||0}function Are(e){return e.x1shift||0}function Sre(e){return e.y0shift||0}function Mre(e){return e.y1shift||0}function _6(e,t){return j1(e.x1,t)+Are(e)-j1(e.x0,t)-Tre(e)}function x6(e,t,r){return j1(e.y1,r)+Mre(e)-j1(e.y0,r)-Sre(e)}function Ett(e,t){return Math.abs(_6(e,t))}function ktt(e,t,r){return Math.abs(x6(e,t,r))}function Ctt(e,t,r){return e.type!=="line"?void 0:Math.sqrt(Math.pow(_6(e,t),2)+Math.pow(x6(e,t,r),2))}function Ltt(e,t){return wre((j1(e.x1,t)+Are(e)+j1(e.x0,t)+Tre(e))/2,t)}function Ptt(e,t,r){return wre((j1(e.y1,r)+Mre(e)+j1(e.y0,r)+Sre(e))/2,r)}function Itt(e,t,r){return e.type!=="line"?void 0:x6(e,t,r)/_6(e,t)}Ere.exports={x0:Ttt,x1:Att,y0:Stt,y1:Mtt,slope:Itt,dx:_6,dy:x6,width:Ett,height:ktt,length:Ctt,xcenter:Ltt,ycenter:Ptt}});var Lre=ye((Qer,Cre)=>{"use strict";var Rtt=Bu().overrideAll,cb=vl(),kre=Su(),Dtt=Ed().dash,W1=no().extendFlat,ztt=Wo().shapeTexttemplateAttrs,Ftt=b6();Cre.exports=Rtt({newshape:{visible:W1({},cb.visible,{}),showlegend:{valType:"boolean",dflt:!1},legend:W1({},cb.legend,{}),legendgroup:W1({},cb.legendgroup,{}),legendgrouptitle:{text:W1({},cb.legendgrouptitle.text,{}),font:kre({})},legendrank:W1({},cb.legendrank,{}),legendwidth:W1({},cb.legendwidth,{}),line:{color:{valType:"color"},width:{valType:"number",min:0,dflt:4},dash:W1({},Dtt,{dflt:"solid"})},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd"},opacity:{valType:"number",min:0,max:1,dflt:1},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above"},drawdirection:{valType:"enumerated",values:["ortho","horizontal","vertical","diagonal"],dflt:"diagonal"},name:W1({},cb.name,{}),label:{text:{valType:"string",dflt:""},texttemplate:ztt({newshape:!0},{keys:Object.keys(Ftt)}),font:kre({}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"]},textangle:{valType:"angle",dflt:"auto"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},padding:{valType:"number",dflt:3,min:0}}},activeshape:{fillcolor:{valType:"color",dflt:"rgb(255,0,255)"},opacity:{valType:"number",min:0,max:1,dflt:.5}}},"none","from-root")});var Ire=ye((etr,Pre)=>{"use strict";var qtt=Ed().dash,Ott=no().extendFlat;Pre.exports={newselection:{mode:{valType:"enumerated",values:["immediate","gradual"],dflt:"immediate",editType:"none"},line:{color:{valType:"color",editType:"none"},width:{valType:"number",min:1,dflt:1,editType:"none"},dash:Ott({},qtt,{dflt:"dot",editType:"none"}),editType:"none"},editType:"none"},activeselection:{fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"none"},opacity:{valType:"number",min:0,max:1,dflt:.5,editType:"none"},editType:"none"}}});var w6=ye((ttr,Rre)=>{"use strict";Rre.exports=function(e){var t=e.editType;return{t:{valType:"number",dflt:0,editType:t},r:{valType:"number",dflt:0,editType:t},b:{valType:"number",dflt:0,editType:t},l:{valType:"number",dflt:0,editType:t},editType:t}}});var s3=ye((rtr,qre)=>{"use strict";var zq=Su(),Btt=zS(),T6=dh(),Dre=Lre(),zre=Ire(),Ntt=w6(),Fre=no().extendFlat,A6=zq({editType:"calc"});A6.family.dflt='"Open Sans", verdana, arial, sans-serif';A6.size.dflt=12;A6.color.dflt=T6.defaultLine;qre.exports={font:A6,title:{text:{valType:"string",editType:"layoutstyle"},font:zq({editType:"layoutstyle"}),subtitle:{text:{valType:"string",editType:"layoutstyle"},font:zq({editType:"layoutstyle"}),editType:"layoutstyle"},xref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},yref:{valType:"enumerated",dflt:"container",values:["container","paper"],editType:"layoutstyle"},x:{valType:"number",min:0,max:1,dflt:.5,editType:"layoutstyle"},y:{valType:"number",min:0,max:1,dflt:"auto",editType:"layoutstyle"},xanchor:{valType:"enumerated",dflt:"auto",values:["auto","left","center","right"],editType:"layoutstyle"},yanchor:{valType:"enumerated",dflt:"auto",values:["auto","top","middle","bottom"],editType:"layoutstyle"},pad:Fre(Ntt({editType:"layoutstyle"}),{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},editType:"layoutstyle"},uniformtext:{mode:{valType:"enumerated",values:[!1,"hide","show"],dflt:!1,editType:"plot"},minsize:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"},autosize:{valType:"boolean",dflt:!1,editType:"none"},width:{valType:"number",min:10,dflt:700,editType:"plot"},height:{valType:"number",min:10,dflt:450,editType:"plot"},minreducedwidth:{valType:"number",min:2,dflt:64,editType:"plot"},minreducedheight:{valType:"number",min:2,dflt:64,editType:"plot"},margin:{l:{valType:"number",min:0,dflt:80,editType:"plot"},r:{valType:"number",min:0,dflt:80,editType:"plot"},t:{valType:"number",min:0,dflt:100,editType:"plot"},b:{valType:"number",min:0,dflt:80,editType:"plot"},pad:{valType:"number",min:0,dflt:0,editType:"plot"},autoexpand:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},computed:{valType:"any",editType:"none"},paper_bgcolor:{valType:"color",dflt:T6.background,editType:"plot"},plot_bgcolor:{valType:"color",dflt:T6.background,editType:"layoutstyle"},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},separators:{valType:"string",editType:"plot"},hidesources:{valType:"boolean",dflt:!1,editType:"plot"},showlegend:{valType:"boolean",editType:"legend"},colorway:{valType:"colorlist",dflt:T6.defaults,editType:"calc"},datarevision:{valType:"any",editType:"calc"},uirevision:{valType:"any",editType:"none"},editrevision:{valType:"any",editType:"none"},selectionrevision:{valType:"any",editType:"none"},template:{valType:"any",editType:"calc"},newshape:Dre.newshape,activeshape:Dre.activeshape,newselection:zre.newselection,activeselection:zre.activeselection,meta:{valType:"any",arrayOk:!0,editType:"plot"},transition:Fre({},Btt.transition,{editType:"none"})}});var Ore=Ll(()=>{});var Utt={};var Bre=Ll(()=>{Ore()});var ba=ye(qs=>{"use strict";var l3=G1(),Nre=g6(),Ure=kq(),Vtt=gy(),Htt=DS().addStyleRule,Vre=no(),Gtt=vl(),jtt=s3(),Wtt=Vre.extendFlat,Fq=Vre.extendDeepAll;qs.modules={};qs.allCategories={};qs.allTypes=[];qs.subplotsRegistry={};qs.componentsRegistry={};qs.layoutArrayContainers=[];qs.layoutArrayRegexes=[];qs.traceLayoutAttributes={};qs.localeRegistry={};qs.apiMethodRegistry={};qs.collectableSubplotTypes=null;qs.register=function(t){if(qs.collectableSubplotTypes=null,t)t&&!Array.isArray(t)&&(t=[t]);else throw new Error("No argument passed to Plotly.register.");for(var r=0;r{"use strict";var $tt=e3().timeFormat,Qre=uo(),qq=G1(),X1=r3().mod,f3=es(),_0=f3.BADNUM,wp=f3.ONEDAY,FS=f3.ONEHOUR,Z1=f3.ONEMIN,c3=f3.ONESEC,qS=f3.EPOCHJD,my=ba(),Zre=e3().utcFormat,Qtt=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\d)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,ert=/^\s*(-?\d\d\d\d|\d\d)(-(\d?\di?)(-(\d?\d)([ Tt]([01]?\d|2[0-3])(:([0-5]\d)(:([0-5]\d(\.\d+)?))?(Z|z|[+\-]\d\d(:?\d\d)?)?)?)?)?)?\s*$/m,Xre=new Date().getFullYear()-70;function yy(e){return e&&my.componentsRegistry.calendars&&typeof e=="string"&&e!=="gregorian"}Yf.dateTick0=function(e,t){var r=trt(e,!!t);if(t<2)return r;var n=Yf.dateTime2ms(r,e);return n+=wp*(t-1),Yf.ms2DateTime(n,0,e)};function trt(e,t){return yy(e)?t?my.getComponentMethod("calendars","CANONICAL_SUNDAY")[e]:my.getComponentMethod("calendars","CANONICAL_TICK")[e]:t?"2000-01-02":"2000-01-01"}Yf.dfltRange=function(e){return yy(e)?my.getComponentMethod("calendars","DFLTRANGE")[e]:["2000-01-01","2001-01-01"]};Yf.isJSDate=function(e){return typeof e=="object"&&e!==null&&typeof e.getTime=="function"};var M6,E6;Yf.dateTime2ms=function(e,t){if(Yf.isJSDate(e)){var r=e.getTimezoneOffset()*Z1,n=(e.getUTCMinutes()-e.getMinutes())*Z1+(e.getUTCSeconds()-e.getSeconds())*c3+(e.getUTCMilliseconds()-e.getMilliseconds());if(n){var i=3*Z1;r=r-i/2+X1(n-r+i/2,i)}return e=Number(e)-r,e>=M6&&e<=E6?e:_0}if(typeof e!="string"&&typeof e!="number")return _0;e=String(e);var a=yy(t),o=e.charAt(0);a&&(o==="G"||o==="g")&&(e=e.substr(1),t="");var s=a&&t.substr(0,7)==="chinese",l=e.match(s?ert:Qtt);if(!l)return _0;var u=l[1],c=l[3]||"1",f=Number(l[5]||1),h=Number(l[7]||0),d=Number(l[9]||0),v=Number(l[11]||0);if(a){if(u.length===2)return _0;u=Number(u);var x;try{var b=my.getComponentMethod("calendars","getCal")(t);if(s){var p=c.charAt(c.length-1)==="i";c=parseInt(c,10),x=b.newDate(u,b.toMonthIndex(u,c,p),f)}else x=b.newDate(u,Number(c),f)}catch(k){return _0}return x?(x.toJD()-qS)*wp+h*FS+d*Z1+v*c3:_0}u.length===2?u=(Number(u)+2e3-Xre)%100+Xre:u=Number(u),c-=1;var E=new Date(Date.UTC(2e3,c,f,h,d));return E.setUTCFullYear(u),E.getUTCMonth()!==c||E.getUTCDate()!==f?_0:E.getTime()+v*c3};M6=Yf.MIN_MS=Yf.dateTime2ms("-9999");E6=Yf.MAX_MS=Yf.dateTime2ms("9999-12-31 23:59:59.9999");Yf.isDateTime=function(e,t){return Yf.dateTime2ms(e,t)!==_0};function u3(e,t){return String(e+Math.pow(10,t)).substr(1)}var S6=90*wp,Yre=3*FS,Kre=5*Z1;Yf.ms2DateTime=function(e,t,r){if(typeof e!="number"||!(e>=M6&&e<=E6))return _0;t||(t=0);var n=Math.floor(X1(e+.05,1)*10),i=Math.round(e-n/10),a,o,s,l,u,c;if(yy(r)){var f=Math.floor(i/wp)+qS,h=Math.floor(X1(e,wp));try{a=my.getComponentMethod("calendars","getCal")(r).fromJD(f).formatDate("yyyy-mm-dd")}catch(d){a=Zre("G%Y-%m-%d")(new Date(i))}if(a.charAt(0)==="-")for(;a.length<11;)a="-0"+a.substr(1);else for(;a.length<10;)a="0"+a;o=t=M6+wp&&e<=E6-wp))return _0;var t=Math.floor(X1(e+.05,1)*10),r=new Date(Math.round(e-t/10)),n=$tt("%Y-%m-%d")(r),i=r.getHours(),a=r.getMinutes(),o=r.getSeconds(),s=r.getUTCMilliseconds()*10+t;return eie(n,i,a,o,s)};function eie(e,t,r,n,i){if((t||r||n||i)&&(e+=" "+u3(t,2)+":"+u3(r,2),(n||i)&&(e+=":"+u3(n,2),i))){for(var a=4;i%10===0;)a-=1,i/=10;e+="."+u3(i,a)}return e}Yf.cleanDate=function(e,t,r){if(e===_0)return t;if(Yf.isJSDate(e)||typeof e=="number"&&isFinite(e)){if(yy(r))return qq.error("JS Dates and milliseconds are incompatible with world calendars",e),t;if(e=Yf.ms2DateTimeLocal(+e),!e&&t!==void 0)return t}else if(!Yf.isDateTime(e,r))return qq.error("unrecognized date",e),t;return e};var rrt=/%\d?f/g,irt=/%h/g,nrt={1:"1",2:"1",3:"2",4:"2"};function Jre(e,t,r,n){e=e.replace(rrt,function(a){var o=Math.min(+a.charAt(1)||6,6),s=(t/1e3%1+2).toFixed(o).substr(2).replace(/0+$/,"")||"0";return s});var i=new Date(Math.floor(t+.05));if(e=e.replace(irt,function(){return nrt[r("%q")(i)]}),yy(n))try{e=my.getComponentMethod("calendars","worldCalFmt")(e,t,n)}catch(a){return"Invalid"}return r(e)(i)}var art=[59,59.9,59.99,59.999,59.9999];function ort(e,t){var r=X1(e+.05,wp),n=u3(Math.floor(r/FS),2)+":"+u3(X1(Math.floor(r/Z1),60),2);if(t!=="M"){Qre(t)||(t=0);var i=Math.min(X1(e/c3,60),art[t]),a=(100+i).toFixed(t).substr(1);t>0&&(a=a.replace(/0+$/,"").replace(/[\.]$/,"")),n+=":"+a}return n}Yf.formatDate=function(e,t,r,n,i,a){if(i=yy(i)&&i,!t)if(r==="y")t=a.year;else if(r==="m")t=a.month;else if(r==="d")t=a.dayMonth+` +`+a.year;else return ort(e,r)+` +`+Jre(a.dayMonthYear,e,n,i);return Jre(t,e,n,i)};var $re=3*wp;Yf.incrementMonth=function(e,t,r){r=yy(r)&&r;var n=X1(e,wp);if(e=Math.round(e-n),r)try{var i=Math.round(e/wp)+qS,a=my.getComponentMethod("calendars","getCal")(r),o=a.fromJD(i);return t%12?a.add(o,t,"m"):a.add(o,t/12,"y"),(o.toJD()-qS)*wp+n}catch(l){qq.error("invalid ms "+e+" in calendar "+r)}var s=new Date(e+$re);return s.setUTCMonth(s.getUTCMonth()+t)+n-$re};Yf.findExactDates=function(e,t){for(var r=0,n=0,i=0,a=0,o,s,l=yy(t)&&my.getComponentMethod("calendars","getCal")(t),u=0;u{"use strict";rie.exports=function(t){return t}});var k6=ye(_y=>{"use strict";var srt=uo(),lrt=G1(),urt=OS(),crt=es().BADNUM,Oq=1e-9;_y.findBin=function(e,t,r){if(srt(t.start))return r?Math.ceil((e-t.start)/t.size-Oq)-1:Math.floor((e-t.start)/t.size+Oq);var n=0,i=t.length,a=0,o=i>1?(t[i-1]-t[0])/(i-1):1,s,l;for(o>=0?l=r?frt:hrt:l=r?vrt:drt,e+=o*Oq*(r?-1:1)*(o>=0?1:-1);n90&&lrt.log("Long binary search..."),n-1};function frt(e,t){return et}function vrt(e,t){return e>=t}_y.sorterAsc=function(e,t){return e-t};_y.sorterDes=function(e,t){return t-e};_y.distinctVals=function(e){var t=e.slice();t.sort(_y.sorterAsc);var r;for(r=t.length-1;r>-1&&t[r]===crt;r--);for(var n=t[r]-t[0]||1,i=n/(r||1)/1e4,a=[],o,s=0;s<=r;s++){var l=t[s],u=l-o;o===void 0?(a.push(l),o=l):u>i&&(n=Math.min(n,u),a.push(l),o=l)}return{vals:a,minDiff:n}};_y.roundUp=function(e,t,r){for(var n=0,i=t.length-1,a,o=0,s=r?0:1,l=r?1:0,u=r?Math.ceil:Math.floor;n0&&(n=1),r&&n)return e.sort(t)}return n?e:e.reverse()};_y.findIndexOfMin=function(e,t){t=t||urt;for(var r=1/0,n,i=0;i{"use strict";iie.exports=function(t){return Object.keys(t).sort()}});var nie=ye(Kf=>{"use strict";var BS=uo(),prt=vv().isArrayOrTypedArray;Kf.aggNums=function(e,t,r,n){var i,a;if((!n||n>r.length)&&(n=r.length),BS(t)||(t=!1),prt(r[0])){for(a=new Array(n),i=0;ie.length-1)return e[e.length-1];var r=t%1;return r*e[Math.ceil(t)]+(1-r)*e[Math.floor(t)]}});var uie=ye((htr,lie)=>{"use strict";var aie=r3(),Bq=aie.mod,grt=aie.modHalf,NS=Math.PI,K1=2*NS;function mrt(e){return e/180*NS}function yrt(e){return e/NS*180}function Nq(e){return Math.abs(e[1]-e[0])>K1-1e-14}function oie(e,t){return grt(t-e,K1)}function _rt(e,t){return Math.abs(oie(e,t))}function sie(e,t){if(Nq(t))return!0;var r,n;t[0]n&&(n+=K1);var i=Bq(e,K1),a=i+K1;return i>=r&&i<=n||a>=r&&a<=n}function xrt(e,t,r,n){if(!sie(t,n))return!1;var i,a;return r[0]=i&&e<=a}function Uq(e,t,r,n,i,a,o){i=i||0,a=a||0;var s=Nq([r,n]),l,u,c,f,h;s?(l=0,u=NS,c=K1):r{"use strict";fb.isLeftAnchor=function(t){return t.xanchor==="left"||t.xanchor==="auto"&&t.x<=1/3};fb.isCenterAnchor=function(t){return t.xanchor==="center"||t.xanchor==="auto"&&t.x>1/3&&t.x<2/3};fb.isRightAnchor=function(t){return t.xanchor==="right"||t.xanchor==="auto"&&t.x>=2/3};fb.isTopAnchor=function(t){return t.yanchor==="top"||t.yanchor==="auto"&&t.y>=2/3};fb.isMiddleAnchor=function(t){return t.yanchor==="middle"||t.yanchor==="auto"&&t.y>1/3&&t.y<2/3};fb.isBottomAnchor=function(t){return t.yanchor==="bottom"||t.yanchor==="auto"&&t.y<=1/3}});var die=ye(hb=>{"use strict";var Vq=r3().mod;hb.segmentsIntersect=hie;function hie(e,t,r,n,i,a,o,s){var l=r-e,u=i-e,c=o-i,f=n-t,h=a-t,d=s-a,v=l*d-c*f;if(v===0)return null;var x=(u*d-c*h)/v,b=(u*f-l*h)/v;return b<0||b>1||x<0||x>1?null:{x:e+l*x,y:t+f*x}}hb.segmentDistance=function(t,r,n,i,a,o,s,l){if(hie(t,r,n,i,a,o,s,l))return 0;var u=n-t,c=i-r,f=s-a,h=l-o,d=u*u+c*c,v=f*f+h*h,x=Math.min(C6(u,c,d,a-t,o-r),C6(u,c,d,s-t,l-r),C6(f,h,v,t-a,r-o),C6(f,h,v,n-a,i-o));return Math.sqrt(x)};function C6(e,t,r,n,i){var a=n*e+i*t;if(a<0)return n*n+i*i;if(a>r){var o=n-e,s=i-t;return o*o+s*s}else{var l=n*t-i*e;return l*l/r}}var L6,Hq,fie;hb.getTextLocation=function(t,r,n,i){if((t!==Hq||i!==fie)&&(L6={},Hq=t,fie=i),L6[n])return L6[n];var a=t.getPointAtLength(Vq(n-i/2,r)),o=t.getPointAtLength(Vq(n+i/2,r)),s=Math.atan((o.y-a.y)/(o.x-a.x)),l=t.getPointAtLength(Vq(n,r)),u=(l.x*4+a.x+o.x)/6,c=(l.y*4+a.y+o.y)/6,f={x:u,y:c,theta:s};return L6[n]=f,f};hb.clearLocationCache=function(){Hq=null};hb.getVisibleSegment=function(t,r,n){var i=r.left,a=r.right,o=r.top,s=r.bottom,l=0,u=t.getTotalLength(),c=u,f,h;function d(x){var b=t.getPointAtLength(x);x===0?f=b:x===u&&(h=b);var p=b.xa?b.x-a:0,E=b.ys?b.y-s:0;return Math.sqrt(p*p+E*E)}for(var v=d(l);v;){if(l+=v+n,l>c)return;v=d(l)}for(v=d(c);v;){if(c-=v+n,l>c)return;v=d(c)}return{min:l,max:c,len:c-l,total:u,isClosed:l===0&&c===u&&Math.abs(f.x-h.x)<.1&&Math.abs(f.y-h.y)<.1}};hb.findPointOnPath=function(t,r,n,i){i=i||{};for(var a=i.pathLength||t.getTotalLength(),o=i.tolerance||.001,s=i.iterationLimit||30,l=t.getPointAtLength(0)[n]>t.getPointAtLength(a)[n]?-1:1,u=0,c=0,f=a,h,d,v;u0?f=h:c=h,u++}return d}});var P6=ye(US=>{"use strict";var xy={};US.throttle=function(t,r,n){var i=xy[t],a=Date.now();if(!i){for(var o in xy)xy[o].tsi.ts+r){s();return}i.timer=setTimeout(function(){s(),i.timer=null},r)};US.done=function(e){var t=xy[e];return!t||!t.timer?Promise.resolve():new Promise(function(r){var n=t.onDone;t.onDone=function(){n&&n(),r(),t.onDone=null}})};US.clear=function(e){if(e)vie(xy[e]),delete xy[e];else for(var t in xy)US.clear(t)};function vie(e){e&&e.timer!==null&&(clearTimeout(e.timer),e.timer=null)}});var gie=ye((gtr,pie)=>{"use strict";pie.exports=function(t){t._responsiveChartHandler&&(window.removeEventListener("resize",t._responsiveChartHandler),delete t._responsiveChartHandler)}});var mie=ye((mtr,I6)=>{"use strict";I6.exports=Gq;I6.exports.isMobile=Gq;I6.exports.default=Gq;var Art=/(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,Srt=/CrOS/,Mrt=/android|ipad|playbook|silk/i;function Gq(e){e||(e={});let t=e.ua;if(!t&&typeof navigator!="undefined"&&(t=navigator.userAgent),t&&t.headers&&typeof t.headers["user-agent"]=="string"&&(t=t.headers["user-agent"]),typeof t!="string")return!1;let r=Art.test(t)&&!Srt.test(t)||!!e.tablet&&Mrt.test(t);return!r&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&t.indexOf("Macintosh")!==-1&&t.indexOf("Safari")!==-1&&(r=!0),r}});var _ie=ye((ytr,yie)=>{"use strict";var Ert=uo(),krt=mie();yie.exports=function(t){var r;if(t&&t.hasOwnProperty("userAgent")?r=t.userAgent:r=Crt(),typeof r!="string")return!0;var n=krt({ua:{headers:{"user-agent":r}},tablet:!0,featureDetect:!1});if(!n)for(var i=r.split(" "),a=1;a-1;s--){var l=i[s];if(l.substr(0,8)==="Version/"){var u=l.substr(8).split(".")[0];if(Ert(u)&&(u=+u),u>=13)return!0}}}return n};function Crt(){var e;return typeof navigator!="undefined"&&(e=navigator.userAgent),e&&e.headers&&typeof e.headers["user-agent"]=="string"&&(e=e.headers["user-agent"]),e}});var bie=ye((_tr,xie)=>{"use strict";var Lrt=xa();xie.exports=function(t,r,n){var i=t.selectAll("g."+n.replace(/\s/g,".")).data(r,function(o){return o[0].trace.uid});i.exit().remove(),i.enter().append("g").attr("class",n),i.order();var a=t.classed("rangeplot")?"nodeRangePlot3":"node3";return i.each(function(o){o[0][a]=Lrt.select(this)}),i}});var Tie=ye((xtr,wie)=>{"use strict";var Prt=ba();wie.exports=function(t,r){for(var n=t._context.locale,i=0;i<2;i++){for(var a=t._context.locales,o=0;o<2;o++){var s=(a[n]||{}).dictionary;if(s){var l=s[r];if(l)return l}a=Prt.localeRegistry}var u=n.split("-")[0];if(u===n)break;n=u}return r}});var jq=ye((btr,Aie)=>{"use strict";Aie.exports=function(t){for(var r={},n=[],i=0,a=0;a{"use strict";Sie.exports=function(t){for(var r=Drt(t)?Rrt:Irt,n=[],i=0;i{"use strict";Eie.exports=function(t,r){if(!r)return t;var n=1/Math.abs(r),i=n>1?(n*t+n*r)/n:t+r,a=String(i).length;if(a>16){var o=String(r).length,s=String(t).length;if(a>=s+o){var l=parseFloat(i).toPrecision(12);l.indexOf("e+")===-1&&(i=+l)}}return i}});var Lie=ye((Atr,Cie)=>{"use strict";var zrt=uo(),Frt=es().BADNUM,qrt=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;Cie.exports=function(t){return typeof t=="string"&&(t=t.replace(qrt,"")),zrt(t)?Number(t):Frt}});var Mr=ye((Str,Hie)=>{"use strict";var VS=xa(),Ort=e3().utcFormat,Brt=vq().format,Fie=uo(),qie=es(),Oie=qie.FP_SAFE,Nrt=-Oie,Pie=qie.BADNUM,li=Hie.exports={};li.adjustFormat=function(t){return!t||/^\d[.]\df/.test(t)||/[.]\d%/.test(t)?t:t==="0.f"?"~f":/^\d%/.test(t)?"~%":/^\ds/.test(t)?"~s":!/^[~,.0$]/.test(t)&&/[&fps]/.test(t)?"~"+t:t};var Iie={};li.warnBadFormat=function(e){var t=String(e);Iie[t]||(Iie[t]=1,li.warn('encountered bad format: "'+t+'"'))};li.noFormat=function(e){return String(e)};li.numberFormat=function(e){var t;try{t=Brt(li.adjustFormat(e))}catch(r){return li.warnBadFormat(e),li.noFormat}return t};li.nestedProperty=ES();li.keyedContainer=Tee();li.relativeAttr=See();li.isPlainObject=gy();li.toLogRange=u6();li.relinkPrivateKeys=Cee();var J1=vv();li.isArrayBuffer=J1.isArrayBuffer;li.isTypedArray=J1.isTypedArray;li.isArrayOrTypedArray=J1.isArrayOrTypedArray;li.isArray1D=J1.isArray1D;li.ensureArray=J1.ensureArray;li.concat=J1.concat;li.maxRowLength=J1.maxRowLength;li.minRowLength=J1.minRowLength;var Bie=r3();li.mod=Bie.mod;li.modHalf=Bie.modHalf;var $1=Xee();li.valObjectMeta=$1.valObjectMeta;li.coerce=$1.coerce;li.coerce2=$1.coerce2;li.coerceFont=$1.coerceFont;li.coercePattern=$1.coercePattern;li.coerceHoverinfo=$1.coerceHoverinfo;li.coerceSelectionMarkerOpacity=$1.coerceSelectionMarkerOpacity;li.validate=$1.validate;var Wp=tie();li.dateTime2ms=Wp.dateTime2ms;li.isDateTime=Wp.isDateTime;li.ms2DateTime=Wp.ms2DateTime;li.ms2DateTimeLocal=Wp.ms2DateTimeLocal;li.cleanDate=Wp.cleanDate;li.isJSDate=Wp.isJSDate;li.formatDate=Wp.formatDate;li.incrementMonth=Wp.incrementMonth;li.dateTick0=Wp.dateTick0;li.dfltRange=Wp.dfltRange;li.findExactDates=Wp.findExactDates;li.MIN_MS=Wp.MIN_MS;li.MAX_MS=Wp.MAX_MS;var db=k6();li.findBin=db.findBin;li.sorterAsc=db.sorterAsc;li.sorterDes=db.sorterDes;li.distinctVals=db.distinctVals;li.roundUp=db.roundUp;li.sort=db.sort;li.findIndexOfMin=db.findIndexOfMin;li.sortObjectKeys=Y1();var by=nie();li.aggNums=by.aggNums;li.len=by.len;li.mean=by.mean;li.geometricMean=by.geometricMean;li.median=by.median;li.midRange=by.midRange;li.variance=by.variance;li.stdev=by.stdev;li.interp=by.interp;var yg=m6();li.init2dArray=yg.init2dArray;li.transposeRagged=yg.transposeRagged;li.dot=yg.dot;li.translationMatrix=yg.translationMatrix;li.rotationMatrix=yg.rotationMatrix;li.rotationXYMatrix=yg.rotationXYMatrix;li.apply3DTransform=yg.apply3DTransform;li.apply2DTransform=yg.apply2DTransform;li.apply2DTransform2=yg.apply2DTransform2;li.convertCssMatrix=yg.convertCssMatrix;li.inverseTransformMatrix=yg.inverseTransformMatrix;var vm=uie();li.deg2rad=vm.deg2rad;li.rad2deg=vm.rad2deg;li.angleDelta=vm.angleDelta;li.angleDist=vm.angleDist;li.isFullCircle=vm.isFullCircle;li.isAngleInsideSector=vm.isAngleInsideSector;li.isPtInsideSector=vm.isPtInsideSector;li.pathArc=vm.pathArc;li.pathSector=vm.pathSector;li.pathAnnulus=vm.pathAnnulus;var d3=cie();li.isLeftAnchor=d3.isLeftAnchor;li.isCenterAnchor=d3.isCenterAnchor;li.isRightAnchor=d3.isRightAnchor;li.isTopAnchor=d3.isTopAnchor;li.isMiddleAnchor=d3.isMiddleAnchor;li.isBottomAnchor=d3.isBottomAnchor;var v3=die();li.segmentsIntersect=v3.segmentsIntersect;li.segmentDistance=v3.segmentDistance;li.getTextLocation=v3.getTextLocation;li.clearLocationCache=v3.clearLocationCache;li.getVisibleSegment=v3.getVisibleSegment;li.findPointOnPath=v3.findPointOnPath;var z6=no();li.extendFlat=z6.extendFlat;li.extendDeep=z6.extendDeep;li.extendDeepAll=z6.extendDeepAll;li.extendDeepNoArrays=z6.extendDeepNoArrays;var Wq=G1();li.log=Wq.log;li.warn=Wq.warn;li.error=Wq.error;var Urt=n3();li.counterRegex=Urt.counter;var Zq=P6();li.throttle=Zq.throttle;li.throttleDone=Zq.done;li.clearThrottle=Zq.clear;var _g=DS();li.getGraphDiv=_g.getGraphDiv;li.isPlotDiv=_g.isPlotDiv;li.removeElement=_g.removeElement;li.addStyleRule=_g.addStyleRule;li.addRelatedStyleRule=_g.addRelatedStyleRule;li.deleteRelatedStyleRule=_g.deleteRelatedStyleRule;li.setStyleOnHover=_g.setStyleOnHover;li.getFullTransformMatrix=_g.getFullTransformMatrix;li.getElementTransformMatrix=_g.getElementTransformMatrix;li.getElementAndAncestors=_g.getElementAndAncestors;li.equalDomRects=_g.equalDomRects;li.clearResponsive=gie();li.preserveDrawingBuffer=_ie();li.makeTraceGroups=bie();li._=Tie();li.notifier=Sq();li.filterUnique=jq();li.filterVisible=Mie();li.pushUnique=kq();li.increment=kie();li.cleanNumber=Lie();li.ensureNumber=function(t){return Fie(t)?(t=Number(t),t>Oie||t=t?!1:Fie(e)&&e>=0&&e%1===0};li.noop=g6();li.identity=OS();li.repeat=function(e,t){for(var r=new Array(t),n=0;nr?Math.max(r,Math.min(t,e)):Math.max(t,Math.min(r,e))};li.bBoxIntersect=function(e,t,r){return r=r||0,e.left<=t.right+r&&t.left<=e.right+r&&e.top<=t.bottom+r&&t.top<=e.bottom+r};li.simpleMap=function(e,t,r,n,i){for(var a=e.length,o=new Array(a),s=0;s=Math.pow(2,r)?i>10?(li.warn("randstr failed uniqueness"),o):e(t,r,n,(i||0)+1):o};li.OptionControl=function(e,t){e||(e={}),t||(t="opt");var r={};return r.optionList=[],r._newoption=function(n){n[t]=e,r[n.name]=n,r.optionList.push(n)},r["_"+t]=e,r};li.smooth=function(e,t){if(t=Math.round(t)||0,t<2)return e;var r=e.length,n=2*r,i=2*t-1,a=new Array(i),o=new Array(r),s,l,u,c;for(s=0;s=n&&(u-=n*Math.floor(u/n)),u<0?u=-1-u:u>=r&&(u=n-1-u),c+=e[u]*a[l];o[s]=c}return o};li.syncOrAsync=function(e,t,r){var n,i;function a(){return li.syncOrAsync(e,t,r)}for(;e.length;)if(i=e.splice(0,1)[0],n=i(t),n&&n.then)return n.then(a);return r&&r(t)};li.stripTrailingSlash=function(e){return e.substr(-1)==="/"?e.substr(0,e.length-1):e};li.noneOrAll=function(e,t,r){if(e){var n=!1,i=!0,a,o;for(a=0;a0?i:0})};li.fillArray=function(e,t,r,n){if(n=n||li.identity,li.isArrayOrTypedArray(e))for(var i=0;i1?i+o[1]:"";if(a&&(o.length>1||s.length>4||r))for(;n.test(s);)s=s.replace(n,"$1"+a+"$2");return s+l};li.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var Vie=/^\w*$/;li.templateString=function(e,t){var r={};return e.replace(li.TEMPLATE_STRING_REGEX,function(n,i){var a;return Vie.test(i)?a=t[i]:(r[i]=r[i]||li.nestedProperty(t,i).get,a=r[i](!0)),a!==void 0?a:""})};var Zrt={max:10,count:0,name:"hovertemplate"};li.hovertemplateString=function(){return Xq.apply(Zrt,arguments)};var Xrt={max:10,count:0,name:"texttemplate"};li.texttemplateString=function(){return Xq.apply(Xrt,arguments)};var Yrt=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function Krt(e){var t=e.match(Yrt);return t?{key:t[1],op:t[2],number:Number(t[3])}:{key:e,op:null,number:null}}var Jrt={max:10,count:0,name:"texttemplate",parseMultDiv:!0};li.texttemplateStringForShapes=function(){return Xq.apply(Jrt,arguments)};var Rie=/^[:|\|]/;function Xq(e,t,r){var n=this,i=arguments;return t||(t={}),e.replace(li.TEMPLATE_STRING_REGEX,function(a,o,s){var l=o==="xother"||o==="yother",u=o==="_xother"||o==="_yother",c=o==="_xother_"||o==="_yother_",f=o==="xother_"||o==="yother_",h=l||u||f||c,d=o;(u||c)&&(d=d.substring(1)),(f||c)&&(d=d.substring(0,d.length-1));var v=null,x=null;if(n.parseMultDiv){var b=Krt(d);d=b.key,v=b.op,x=b.number}var p;if(h){if(p=t[d],p===void 0)return""}else{var E,k;for(k=3;k=D6&&o<=Die,u=s>=D6&&s<=Die;if(l&&(n=10*n+o-D6),u&&(i=10*i+s-D6),!l||!u){if(n!==i)return n-i;if(o!==s)return o-s}}return i-n};var h3=2e9;li.seedPseudoRandom=function(){h3=2e9};li.pseudoRandom=function(){var e=h3;return h3=(69069*h3+1)%4294967296,Math.abs(h3-e)<429496729?li.pseudoRandom():h3/4294967296};li.fillText=function(e,t,r){var n=Array.isArray(r)?function(o){r.push(o)}:function(o){r.text=o},i=li.extractOption(e,t,"htx","hovertext");if(li.isValidTextValue(i))return n(i);var a=li.extractOption(e,t,"tx","text");if(li.isValidTextValue(a))return n(a)};li.isValidTextValue=function(e){return e||e===0};li.formatPercent=function(e,t){t=t||0;for(var r=(Math.round(100*e*Math.pow(10,t))*Math.pow(.1,t)).toFixed(t)+"%",n=0;n1&&(u=1):u=0,li.strTranslate(i-u*(r+o),a-u*(n+s))+li.strScale(u)+(l?"rotate("+l+(t?"":" "+r+" "+n)+")":"")};li.setTransormAndDisplay=function(e,t){e.attr("transform",li.getTextTransform(t)),e.style("display",t.scale?null:"none")};li.ensureUniformFontSize=function(e,t){var r=li.extendFlat({},t);return r.size=Math.max(t.size,e._fullLayout.uniformtext.minsize||0),r};li.join2=function(e,t,r){var n=e.length;return n>1?e.slice(0,-1).join(t)+r+e[n-1]:e.join(t)};li.bigFont=function(e){return Math.round(1.2*e)};var zie=li.getFirefoxVersion(),$rt=zie!==null&&zie<86;li.getPositionFromD3Event=function(){return $rt?[VS.event.layerX,VS.event.layerY]:[VS.event.offsetX,VS.event.offsetY]}});var Wie=ye(()=>{"use strict";var Qrt=Mr(),Gie={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(Yq in Gie)jie=Yq.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),Qrt.addStyleRule(jie,Gie[Yq]);var jie,Yq});var Kq=ye((ktr,Zie)=>{Zie.exports=!0});var $q=ye((Ctr,Xie)=>{"use strict";var eit=Kq(),Jq;typeof window.matchMedia=="function"?Jq=!window.matchMedia("(hover: none)").matches:Jq=eit;Xie.exports=Jq});var vb=ye((Ltr,Qq)=>{"use strict";var p3=typeof Reflect=="object"?Reflect:null,Yie=p3&&typeof p3.apply=="function"?p3.apply:function(t,r,n){return Function.prototype.apply.call(t,r,n)},F6;p3&&typeof p3.ownKeys=="function"?F6=p3.ownKeys:Object.getOwnPropertySymbols?F6=function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:F6=function(t){return Object.getOwnPropertyNames(t)};function tit(e){console&&console.warn&&console.warn(e)}var Jie=Number.isNaN||function(t){return t!==t};function Tc(){Tc.init.call(this)}Qq.exports=Tc;Qq.exports.once=ait;Tc.EventEmitter=Tc;Tc.prototype._events=void 0;Tc.prototype._eventsCount=0;Tc.prototype._maxListeners=void 0;var Kie=10;function q6(e){if(typeof e!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}Object.defineProperty(Tc,"defaultMaxListeners",{enumerable:!0,get:function(){return Kie},set:function(e){if(typeof e!="number"||e<0||Jie(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Kie=e}});Tc.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};Tc.prototype.setMaxListeners=function(t){if(typeof t!="number"||t<0||Jie(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this};function $ie(e){return e._maxListeners===void 0?Tc.defaultMaxListeners:e._maxListeners}Tc.prototype.getMaxListeners=function(){return $ie(this)};Tc.prototype.emit=function(t){for(var r=[],n=1;n0&&(o=r[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var l=a[t];if(l===void 0)return!1;if(typeof l=="function")Yie(l,this,r);else for(var u=l.length,c=ine(l,u),n=0;n0&&o.length>i&&!o.warned){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=e,s.type=t,s.count=o.length,tit(s)}return e}Tc.prototype.addListener=function(t,r){return Qie(this,t,r,!1)};Tc.prototype.on=Tc.prototype.addListener;Tc.prototype.prependListener=function(t,r){return Qie(this,t,r,!0)};function rit(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function ene(e,t,r){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:r},i=rit.bind(n);return i.listener=r,n.wrapFn=i,i}Tc.prototype.once=function(t,r){return q6(r),this.on(t,ene(this,t,r)),this};Tc.prototype.prependOnceListener=function(t,r){return q6(r),this.prependListener(t,ene(this,t,r)),this};Tc.prototype.removeListener=function(t,r){var n,i,a,o,s;if(q6(r),i=this._events,i===void 0)return this;if(n=i[t],n===void 0)return this;if(n===r||n.listener===r)--this._eventsCount===0?this._events=Object.create(null):(delete i[t],i.removeListener&&this.emit("removeListener",t,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length-1;o>=0;o--)if(n[o]===r||n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;a===0?n.shift():iit(n,a),n.length===1&&(i[t]=n[0]),i.removeListener!==void 0&&this.emit("removeListener",t,s||r)}return this};Tc.prototype.off=Tc.prototype.removeListener;Tc.prototype.removeAllListeners=function(t){var r,n,i;if(n=this._events,n===void 0)return this;if(n.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):n[t]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete n[t]),this;if(arguments.length===0){var a=Object.keys(n),o;for(i=0;i=0;i--)this.removeListener(t,r[i]);return this};function tne(e,t,r){var n=e._events;if(n===void 0)return[];var i=n[t];return i===void 0?[]:typeof i=="function"?r?[i.listener||i]:[i]:r?nit(i):ine(i,i.length)}Tc.prototype.listeners=function(t){return tne(this,t,!0)};Tc.prototype.rawListeners=function(t){return tne(this,t,!1)};Tc.listenerCount=function(e,t){return typeof e.listenerCount=="function"?e.listenerCount(t):rne.call(e,t)};Tc.prototype.listenerCount=rne;function rne(e){var t=this._events;if(t!==void 0){var r=t[e];if(typeof r=="function")return 1;if(r!==void 0)return r.length}return 0}Tc.prototype.eventNames=function(){return this._eventsCount>0?F6(this._events):[]};function ine(e,t){for(var r=new Array(t),n=0;n{"use strict";var eO=vb().EventEmitter,sit={init:function(e){if(e._ev instanceof eO)return e;var t=new eO,r=new eO;return e._ev=t,e._internalEv=r,e.on=t.on.bind(t),e.once=t.once.bind(t),e.removeListener=t.removeListener.bind(t),e.removeAllListeners=t.removeAllListeners.bind(t),e._internalOn=r.on.bind(r),e._internalOnce=r.once.bind(r),e._removeInternalListener=r.removeListener.bind(r),e._removeAllInternalListeners=r.removeAllListeners.bind(r),e.emit=function(n,i){t.emit(n,i),r.emit(n,i)},e},triggerHandler:function(e,t,r){var n,i=e._ev;if(!i)return;var a=i._events[t];if(!a)return;function o(l){if(l.listener){if(i.removeListener(t,l.listener),!l.fired)return l.fired=!0,l.listener.apply(i,[r])}else return l.apply(i,[r])}a=Array.isArray(a)?a:[a];var s;for(s=0;s{"use strict";var one=Mr(),lit=ub().dfltConfig;function uit(e,t){for(var r=[],n,i=0;ilit.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--)};wy.startSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0};wy.stopSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1};wy.undo=function(t){var r,n;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n=t.undoQueue.queue.length)){for(r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,n=0;n{"use strict";une.exports={_isLinkedToArray:"frames_entry",group:{valType:"string"},name:{valType:"string"},traces:{valType:"any"},baseframe:{valType:"string"},data:{valType:"any"},layout:{valType:"any"}}});var _3=ye(Bh=>{"use strict";var x0=ba(),HS=Mr(),B6=vl(),rO=s3(),cit=tO(),fit=zS(),hit=ub().configAttributes,cne=Bu(),xg=HS.extendDeepAll,m3=HS.isPlainObject,dit=HS.isArrayOrTypedArray,N6=HS.nestedProperty,vit=HS.valObjectMeta,iO="_isSubplotObj",U6="_isLinkedToArray",pit="_arrayAttrRegexps",hne="_deprecated",nO=[iO,U6,pit,hne];Bh.IS_SUBPLOT_OBJ=iO;Bh.IS_LINKED_TO_ARRAY=U6;Bh.DEPRECATED=hne;Bh.UNDERSCORE_ATTRS=nO;Bh.get=function(){var e={};return x0.allTypes.forEach(function(t){e[t]=mit(t)}),{defs:{valObjects:vit,metaKeys:nO.concat(["description","role","editType","impliedEdits"]),editType:{traces:cne.traces,layout:cne.layout},impliedEdits:{}},traces:e,layout:yit(),frames:_it(),animation:y3(fit),config:y3(hit)}};Bh.crawl=function(e,t,r,n){var i=r||0;n=n||"",Object.keys(e).forEach(function(a){var o=e[a];if(nO.indexOf(a)===-1){var s=(n?n+".":"")+a;t(o,a,e,i,s),!Bh.isValObject(o)&&m3(o)&&a!=="impliedEdits"&&Bh.crawl(o,t,i+1,s)}})};Bh.isValObject=function(e){return e&&e.valType!==void 0};Bh.findArrayAttributes=function(e){var t=[],r=[],n=[],i,a;function o(l,u,c,f){r=r.slice(0,f).concat([u]),n=n.slice(0,f).concat([l&&l._isLinkedToArray]);var h=l&&(l.valType==="data_array"||l.arrayOk===!0)&&!(r[f-1]==="colorbar"&&(u==="ticktext"||u==="tickvals"));h&&s(i,0,"")}function s(l,u,c){var f=l[r[u]],h=c+r[u];if(u===r.length-1)dit(f)&&t.push(a+h);else if(n[u]){if(Array.isArray(f))for(var d=0;d=a.length)return!1;if(e.dimensions===2){if(r++,t.length===r)return e;var o=t[r];if(!O6(o))return!1;e=a[i][o]}else e=a[i]}else e=a}}return e}function O6(e){return e===Math.round(e)&&e>=0}function mit(e){var t,r;t=x0.modules[e]._module,r=t.basePlotModule;var n={};n.type=null;var i=xg({},B6),a=xg({},t.attributes);Bh.crawl(a,function(l,u,c,f,h){N6(i,h).set(void 0),l===void 0&&N6(a,h).set(void 0)}),xg(n,i),x0.traceIs(e,"noOpacity")&&delete n.opacity,x0.traceIs(e,"showLegend")||(delete n.showlegend,delete n.legendgroup),x0.traceIs(e,"noHover")&&(delete n.hoverinfo,delete n.hoverlabel),t.selectPoints||delete n.selectedpoints,xg(n,a),r.attributes&&xg(n,r.attributes),n.type=e;var o={meta:t.meta||{},categories:t.categories||{},animatable:!!t.animatable,type:e,attributes:y3(n)};if(t.layoutAttributes){var s={};xg(s,t.layoutAttributes),o.layoutAttributes=y3(s)}return t.animatable||Bh.crawl(o,function(l){Bh.isValObject(l)&&"anim"in l&&delete l.anim}),o}function yit(){var e={},t,r;xg(e,rO);for(t in x0.subplotsRegistry)if(r=x0.subplotsRegistry[t],!!r.layoutAttributes)if(Array.isArray(r.attr))for(var n=0;n{"use strict";var x3=Mr(),Ait=vl(),Q1="templateitemname",aO={name:{valType:"string",editType:"none"}};aO[Q1]={valType:"string",editType:"calc"};pb.templatedArray=function(e,t){return t._isLinkedToArray=e,t.name=aO.name,t[Q1]=aO[Q1],t};pb.traceTemplater=function(e){var t={},r,n;for(r in e)n=e[r],Array.isArray(n)&&n.length&&(t[r]=0);function i(a){r=x3.coerce(a,{},Ait,"type");var o={type:r,_template:null};if(r in t){n=e[r];var s=t[r]%n.length;t[r]++,o._template=n[s]}return o}return{newTrace:i}};pb.newContainer=function(e,t,r){var n=e._template,i=n&&(n[t]||r&&n[r]);x3.isPlainObject(i)||(i=null);var a=e[t]={_template:i};return a};pb.arrayTemplater=function(e,t,r){var n=e._template,i=n&&n[pne(t)],a=n&&n[t];(!Array.isArray(a)||!a.length)&&(a=[]);var o={};function s(u){var c={name:u.name,_input:u},f=c[Q1]=u[Q1];if(!vne(f))return c._template=i,c;for(var h=0;h=n&&(r._input||{})._templateitemname;a&&(i=n);var o=t+"["+i+"]",s;function l(){s={},a&&(s[o]={},s[o][Q1]=a)}l();function u(d,v){s[d]=v}function c(d,v){a?x3.nestedProperty(s[o],d).set(v):s[o+"."+d]=v}function f(){var d=s;return l(),d}function h(d,v){d&&c(d,v);var x=f();for(var b in x)x3.nestedProperty(e,b).set(x[b])}return{modifyBase:u,modifyItem:c,getUpdateObj:f,applyUpdate:h}}});var ad=ye((Ftr,gne)=>{"use strict";var GS=n3().counter;gne.exports={idRegex:{x:GS("x","( domain)?"),y:GS("y","( domain)?")},attrRegex:GS("[xy]axis"),xAxisMatch:GS("xaxis"),yAxisMatch:GS("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}});var af=ye(Tp=>{"use strict";var Sit=ba(),oO=ad();Tp.id2name=function(t){if(!(typeof t!="string"||!t.match(oO.AX_ID_PATTERN))){var r=t.split(" ")[0].substr(1);return r==="1"&&(r=""),t.charAt(0)+"axis"+r}};Tp.name2id=function(t){if(t.match(oO.AX_NAME_PATTERN)){var r=t.substr(5);return r==="1"&&(r=""),t.charAt(0)+r}};Tp.cleanId=function(t,r,n){var i=/( domain)$/.test(t);if(!(typeof t!="string"||!t.match(oO.AX_ID_PATTERN))&&!(r&&t.charAt(0)!==r)&&!(i&&!n)){var a=t.split(" ")[0].substr(1).replace(/^0+/,"");return a==="1"&&(a=""),t.charAt(0)+a+(i&&n?" domain":"")}};Tp.list=function(e,t,r){var n=e._fullLayout;if(!n)return[];var i=Tp.listIds(e,t),a=new Array(i.length),o;for(o=0;on?1:-1:+(e.substr(1)||1)-+(t.substr(1)||1)};Tp.ref2id=function(e){return/^[xyz]/.test(e)?e.split(" ")[0]:!1};function mne(e,t){if(t&&t.length){for(var r=0;r{"use strict";function Mit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".outline-controllers").remove()}function Eit(e){var t=e._fullLayout._zoomlayer;t&&t.selectAll(".select-outline").remove(),e._fullLayout._outlining=!1}yne.exports={clearOutlineControllers:Mit,clearOutline:Eit}});var V6=ye((Btr,_ne)=>{"use strict";_ne.exports={scattermode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},scattergap:{valType:"number",min:0,max:1,editType:"calc"}}});var kd=ye(G6=>{"use strict";var H6=ba(),Ntr=ad().SUBPLOT_PATTERN;G6.getSubplotCalcData=function(e,t,r){var n=H6.subplotsRegistry[t];if(!n)return[];for(var i=n.attr,a=[],o=0;o{"use strict";var kit=ba(),b3=Mr();gb.manageCommandObserver=function(e,t,r,n){var i={},a=!0;t&&t._commandObserver&&(i=t._commandObserver),i.cache||(i.cache={}),i.lookupTable={};var o=gb.hasSimpleAPICommandBindings(e,r,i.lookupTable);if(t&&t._commandObserver){if(o)return i;if(t._commandObserver.remove)return t._commandObserver.remove(),t._commandObserver=null,i}if(o){xne(e,o,i.cache),i.check=function(){if(a){var c=xne(e,o,i.cache);return c.changed&&n&&i.lookupTable[c.value]!==void 0&&(i.disable(),Promise.resolve(n({value:c.value,type:o.type,prop:o.prop,traces:o.traces,index:i.lookupTable[c.value]})).then(i.enable,i.enable)),c.changed}};for(var s=["plotly_relayout","plotly_redraw","plotly_restyle","plotly_update","plotly_animatingframe","plotly_afterplot"],l=0;l0?".":"")+i;b3.isPlainObject(a)?sO(a,t,o,n+1):t(o,i,a)}})}});var Xu=ye((Htr,qne)=>{"use strict";var Lne=xa(),Lit=e3().timeFormatLocale,Pit=vq().formatLocale,jS=uo(),Iit=pq(),bl=ba(),Pne=_3(),Rit=Vs(),Ca=Mr(),Ine=va(),Ane=es().BADNUM,Ap=af(),Dit=e_().clearOutline,zit=V6(),lO=zS(),Fit=tO(),qit=kd().getModuleCalcData,Sne=Ca.relinkPrivateKeys,mb=Ca._,ha=qne.exports={};Ca.extendFlat(ha,bl);ha.attributes=vl();ha.attributes.type.values=ha.allTypes;ha.fontAttrs=Su();ha.layoutAttributes=s3();var W6=Tne();ha.executeAPICommand=W6.executeAPICommand;ha.computeAPICommandBindings=W6.computeAPICommandBindings;ha.manageCommandObserver=W6.manageCommandObserver;ha.hasSimpleAPICommandBindings=W6.hasSimpleAPICommandBindings;ha.redrawText=function(e){return e=Ca.getGraphDiv(e),new Promise(function(t){setTimeout(function(){e._fullLayout&&(bl.getComponentMethod("annotations","draw")(e),bl.getComponentMethod("legend","draw")(e),bl.getComponentMethod("colorbar","draw")(e),t(ha.previousPromises(e)))},300)})};ha.resize=function(e){e=Ca.getGraphDiv(e);var t,r=new Promise(function(n,i){(!e||Ca.isHidden(e))&&i(new Error("Resize must be passed a displayed plot div element.")),e._redrawTimer&&clearTimeout(e._redrawTimer),e._resolveResize&&(t=e._resolveResize),e._resolveResize=n,e._redrawTimer=setTimeout(function(){if(!e.layout||e.layout.width&&e.layout.height||Ca.isHidden(e)){n(e);return}delete e.layout.width,delete e.layout.height;var a=e.changed;e.autoplay=!0,bl.call("relayout",e,{autosize:!0}).then(function(){e.changed=a,e._resolveResize===n&&(delete e._resolveResize,n(e))})},100)});return t&&t(r),r};ha.previousPromises=function(e){if((e._promises||[]).length)return Promise.all(e._promises).then(function(){e._promises=[]})};ha.addLinks=function(e){if(!(!e._context.showLink&&!e._context.showSources)){var t=e._fullLayout,r=Ca.ensureSingle(t._paper,"text","js-plot-link-container",function(l){l.style({"font-family":'"Open Sans", Arial, sans-serif',"font-size":"12px",fill:Ine.defaultLine,"pointer-events":"all"}).each(function(){var u=Lne.select(this);u.append("tspan").classed("js-link-to-tool",!0),u.append("tspan").classed("js-link-spacer",!0),u.append("tspan").classed("js-sourcelinks",!0)})}),n=r.node(),i={y:t._paper.attr("height")-9};document.body.contains(n)&&n.getComputedTextLength()>=t.width-20?(i["text-anchor"]="start",i.x=5):(i["text-anchor"]="end",i.x=t._paper.attr("width")-7),r.attr(i);var a=r.select(".js-link-to-tool"),o=r.select(".js-link-spacer"),s=r.select(".js-sourcelinks");e._context.showSources&&e._context.showSources(e),e._context.showLink&&Oit(e,a),o.text(a.text()&&s.text()?" - ":"")}};function Oit(e,t){t.text("");var r=t.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(e._context.linkText+" \xBB");if(e._context.sendData)r.on("click",function(){ha.sendDataToCloud(e)});else{var n=window.location.pathname.split("/"),i=window.location.search;r.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+n[2].split(".")[0]+"/"+n[1]+i})}}ha.sendDataToCloud=function(e){var t=(window.PLOTLYENV||{}).BASE_URL||e._context.plotlyServerURL;if(t){e.emit("plotly_beforeexport");var r=Lne.select(e).append("div").attr("id","hiddenform").style("display","none"),n=r.append("form").attr({action:t+"/external",method:"post",target:"_blank"}),i=n.append("input").attr({type:"text",name:"data"});return i.node().value=ha.graphJson(e,!1,"keepdata"),n.node().submit(),r.remove(),e.emit("plotly_afterexport"),!1}};var Bit=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],Nit=["year","month","dayMonth","dayMonthYear"];ha.supplyDefaults=function(e,t){var r=t&&t.skipUpdateCalc,n=e._fullLayout||{};if(n._skipDefaults){delete n._skipDefaults;return}var i=e._fullLayout={},a=e.layout||{},o=e._fullData||[],s=e._fullData=[],l=e.data||[],u=e.calcdata||[],c=e._context||{},f;e._transitionData||ha.createTransitionData(e),i._dfltTitle={plot:mb(e,"Click to enter Plot title"),subtitle:mb(e,"Click to enter Plot subtitle"),x:mb(e,"Click to enter X axis title"),y:mb(e,"Click to enter Y axis title"),colorbar:mb(e,"Click to enter Colorscale title"),annotation:mb(e,"new text")},i._traceWord=mb(e,"trace");var h=Mne(e,Bit);if(i._mapboxAccessToken=c.mapboxAccessToken,n._initialAutoSizeIsDone){var d=n.width,v=n.height;ha.supplyLayoutGlobalDefaults(a,i,h),a.width||(i.width=d),a.height||(i.height=v),ha.sanitizeMargins(i)}else{ha.supplyLayoutGlobalDefaults(a,i,h);var x=!a.width||!a.height,b=i.autosize,p=c.autosizable,E=x&&(b||p);E?ha.plotAutoSize(e,a,i):x&&ha.sanitizeMargins(i),!b&&x&&(a.width=i.width,a.height=i.height)}i._d3locale=Hit(h,i.separators),i._extraFormat=Mne(e,Nit),i._initialAutoSizeIsDone=!0,i._dataLength=l.length,i._modules=[],i._visibleModules=[],i._basePlotModules=[];var k=i._subplots=Vit(),A=i._splomAxes={x:{},y:{}},L=i._splomSubplots={};i._splomGridDflt={},i._scatterStackOpts={},i._firstScatter={},i._alignmentOpts={},i._colorAxes={},i._requestRangeslider={},i._traceUids=Uit(o,l),ha.supplyDataDefaults(l,s,a,i);var _=Object.keys(A.x),C=Object.keys(A.y);if(_.length>1&&C.length>1){for(bl.getComponentMethod("grid","sizeDefaults")(a,i),f=0;f<_.length;f++)Ca.pushUnique(k.xaxis,_[f]);for(f=0;f15&&C.length>15&&i.shapes.length===0&&i.images.length===0,ha.linkSubplots(s,i,o,n),ha.cleanPlot(s,i,o,n);var F=!!(n._has&&n._has("cartesian")),q=!!(i._has&&i._has("cartesian")),V=F,H=q;V&&!H?n._bgLayer.remove():H&&!V&&(i._shouldCreateBgLayer=!0),n._zoomlayer&&!e._dragging&&Dit({_fullLayout:n}),Git(s,i),Sne(i,n),bl.getComponentMethod("colorscale","crossTraceDefaults")(s,i),i._preGUI||(i._preGUI={}),i._tracePreGUI||(i._tracePreGUI={});var X=i._tracePreGUI,G={},N;for(N in X)G[N]="old";for(f=0;f0){var c=1-2*a;o=Math.round(c*o),s=Math.round(c*s)}}var f=ha.layoutAttributes.width.min,h=ha.layoutAttributes.height.min;o1,v=!r.height&&Math.abs(n.height-s)>1;(v||d)&&(d&&(n.width=o),v&&(n.height=s)),t._initialAutoSize||(t._initialAutoSize={width:o,height:s}),ha.sanitizeMargins(n)};ha.supplyLayoutModuleDefaults=function(e,t,r,n){var i=bl.componentsRegistry,a=t._basePlotModules,o,s,l,u=bl.subplotsRegistry.cartesian;for(o in i)l=i[o],l.includeBasePlot&&l.includeBasePlot(e,t);a.length||a.push(u),t._has("cartesian")&&(bl.getComponentMethod("grid","contentDefaults")(e,t),u.finalizeSubplots(e,t));for(var c in t._subplots)t._subplots[c].sort(Ca.subplotSort);for(s=0;s1&&(r.l/=b,r.r/=b)}if(h){var p=(r.t+r.b)/h;p>1&&(r.t/=p,r.b/=p)}var E=r.xl!==void 0?r.xl:r.x,k=r.xr!==void 0?r.xr:r.x,A=r.yt!==void 0?r.yt:r.y,L=r.yb!==void 0?r.yb:r.y;d[t]={l:{val:E,size:r.l+x},r:{val:k,size:r.r+x},b:{val:L,size:r.b+x},t:{val:A,size:r.t+x}},v[t]=1}if(!n._replotting)return ha.doAutoMargin(e)}};function Wit(e){if("_redrawFromAutoMarginCount"in e._fullLayout)return!1;var t=Ap.list(e,"",!0);for(var r in t)if(t[r].autoshift||t[r].shift)return!0;return!1}ha.doAutoMargin=function(e){var t=e._fullLayout,r=t.width,n=t.height;t._size||(t._size={}),Rne(t);var i=t._size,a=t.margin,o={t:0,b:0,l:0,r:0},s=Ca.extendFlat({},i),l=a.l,u=a.r,c=a.t,f=a.b,h=t._pushmargin,d=t._pushmarginIds,v=t.minreducedwidth,x=t.minreducedheight;if(a.autoexpand!==!1){for(var b in h)d[b]||delete h[b];var p=e._fullLayout._reservedMargin;for(var E in p)for(var k in p[E]){var A=p[E][k];o[k]=Math.max(o[k],A)}h.base={l:{val:0,size:l},r:{val:1,size:u},t:{val:1,size:c},b:{val:0,size:f}};for(var L in o){var _=0;for(var C in h)C!=="base"&&jS(h[C][L].size)&&(_=h[C][L].size>_?h[C][L].size:_);var M=Math.max(0,a[L]-_);o[L]=Math.max(0,o[L]-M)}for(var g in h){var P=h[g].l||{},T=h[g].b||{},F=P.val,q=P.size,V=T.val,H=T.size,X=r-o.r-o.l,G=n-o.t-o.b;for(var N in h){if(jS(q)&&h[N].r){var W=h[N].r.val,re=h[N].r.size;if(W>F){var ae=(q*W+(re-X)*F)/(W-F),_e=(re*(1-F)+(q-X)*(1-W))/(W-F);ae+_e>l+u&&(l=ae,u=_e)}}if(jS(H)&&h[N].t){var Me=h[N].t.val,ke=h[N].t.size;if(Me>V){var ge=(H*Me+(ke-G)*V)/(Me-V),ie=(ke*(1-V)+(H-G)*(1-Me))/(Me-V);ge+ie>f+c&&(f=ge,c=ie)}}}}}var Te=Ca.constrain(r-a.l-a.r,Dne,v),Ee=Ca.constrain(n-a.t-a.b,zne,x),Ae=Math.max(0,r-Te),ze=Math.max(0,n-Ee);if(Ae){var Ce=(l+u)/Ae;Ce>1&&(l/=Ce,u/=Ce)}if(ze){var me=(f+c)/ze;me>1&&(f/=me,c/=me)}if(i.l=Math.round(l)+o.l,i.r=Math.round(u)+o.r,i.t=Math.round(c)+o.t,i.b=Math.round(f)+o.b,i.p=Math.round(a.pad),i.w=Math.round(r)-i.l-i.r,i.h=Math.round(n)-i.t-i.b,!t._replotting&&(ha.didMarginChange(s,i)||Wit(e))){"_redrawFromAutoMarginCount"in t?t._redrawFromAutoMarginCount++:t._redrawFromAutoMarginCount=1;var Re=3*(1+Object.keys(d).length);if(t._redrawFromAutoMarginCount1)return!0}return!1};ha.graphJson=function(e,t,r,n,i,a){(i&&t&&!e._fullData||i&&!t&&!e._fullLayout)&&ha.supplyDefaults(e);var o=i?e._fullData:e.data,s=i?e._fullLayout:e.layout,l=(e._transitionData||{})._frames;function u(h,d){if(typeof h=="function")return d?"_function_":null;if(Ca.isPlainObject(h)){var v={},x;return Object.keys(h).sort().forEach(function(k){if(["_","["].indexOf(k.charAt(0))===-1){if(typeof h[k]=="function"){d&&(v[k]="_function");return}if(r==="keepdata"){if(k.substr(k.length-3)==="src")return}else if(r==="keepstream"){if(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0&&!Ca.isPlainObject(h.stream))return}else if(r!=="keepall"&&(x=h[k+"src"],typeof x=="string"&&x.indexOf(":")>0))return;v[k]=u(h[k],d)}}),v}var b=Array.isArray(h),p=Ca.isTypedArray(h);if((b||p)&&h.dtype&&h.shape){var E=h.bdata;return u({dtype:h.dtype,shape:h.shape,bdata:Ca.isArrayBuffer(E)?Iit.encode(E):E},d)}return b?h.map(function(k){return u(k,d)}):p?Ca.simpleMap(h,Ca.identity):Ca.isJSDate(h)?Ca.ms2DateTimeLocal(+h):h}var c={data:(o||[]).map(function(h){var d=u(h);return t&&delete d.fit,d})};if(!t&&(c.layout=u(s),i)){var f=s._size;c.layout.computed={margin:{b:f.b,l:f.l,r:f.r,t:f.t}}}return l&&(c.frames=u(l)),a&&(c.config=u(e._context,!0)),n==="object"?c:JSON.stringify(c)};ha.modifyFrames=function(e,t){var r,n,i,a=e._transitionData._frames,o=e._transitionData._frameHash;for(r=0;r0&&(e._transitioningWithDuration=!0),e._transitionData._interruptCallbacks.push(function(){n=!0}),r.redraw&&e._transitionData._interruptCallbacks.push(function(){return bl.call("redraw",e)}),e._transitionData._interruptCallbacks.push(function(){e.emit("plotly_transitioninterrupted",[])});var h=0,d=0;function v(){return h++,function(){d++,!n&&d===h&&s(f)}}r.runFn(v),setTimeout(v())})}function s(f){if(e._transitionData)return a(e._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(r.redraw)return bl.call("redraw",e)}).then(function(){e._transitioning=!1,e._transitioningWithDuration=!1,e.emit("plotly_transitioned",[])}).then(f)}function l(){if(e._transitionData)return e._transitioning=!1,i(e._transitionData._interruptCallbacks)}var u=[ha.previousPromises,l,r.prepareFn,ha.rehover,ha.reselect,o],c=Ca.syncOrAsync(u,e);return(!c||!c.then)&&(c=Promise.resolve()),c.then(function(){return e})}ha.doCalcdata=function(e,t){var r=Ap.list(e),n=e._fullData,i=e._fullLayout,a,o,s,l,u=new Array(n.length),c=(e.calcdata||[]).slice();for(e.calcdata=u,i._numBoxes=0,i._numViolins=0,i._violinScaleGroupStats={},e._hmpixcount=0,e._hmlumcount=0,i._piecolormap={},i._sunburstcolormap={},i._treemapcolormap={},i._iciclecolormap={},i._funnelareacolormap={},s=0;s=0;l--)if(L[l].enabled){a._indexToPoints=L[l]._indexToPoints;break}o&&o.calc&&(A=o.calc(e,a))}(!Array.isArray(A)||!A[0])&&(A=[{x:Ane,y:Ane}]),A[0].t||(A[0].t={}),A[0].trace=a,u[E]=A}}for(kne(r,n,i),s=0;s{"use strict";yb.xmlns="http://www.w3.org/2000/xmlns/";yb.svg="http://www.w3.org/2000/svg";yb.xlink="http://www.w3.org/1999/xlink";yb.svgAttrs={xmlns:yb.svg,"xmlns:xlink":yb.xlink}});var Nh=ye((jtr,One)=>{"use strict";One.exports={FROM_BL:{left:0,center:.5,right:1,bottom:0,middle:.5,top:1},FROM_TL:{left:0,center:.5,right:1,bottom:1,middle:.5,top:0},FROM_BR:{left:1,center:.5,right:0,bottom:0,middle:.5,top:1},LINE_SPACING:1.3,CAP_SHIFT:.7,MID_SHIFT:.35,OPPOSITE_SIDE:{left:"right",right:"left",top:"bottom",bottom:"top"}}});var Pl=ye(b0=>{"use strict";var vh=xa(),Ty=Mr(),Kit=Ty.strTranslate,uO=Zp(),Jit=Nh().LINE_SPACING,$it=/([^$]*)([$]+[^$]*[$]+)([^$]*)/;b0.convertToTspans=function(e,t,r){var n=e.text(),i=!e.attr("data-notex")&&t&&t._context.typesetMath&&typeof MathJax!="undefined"&&n.match($it),a=vh.select(e.node().parentNode);if(a.empty())return;var o=e.attr("class")?e.attr("class").split(" ")[0]:"text";o+="-math",a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove(),e.style("display",null).attr({"data-unformatted":n,"data-math":"N"});function s(){a.empty()||(o=e.attr("class")+"-math",a.select("svg."+o).remove()),e.text("").style("white-space","pre");var l=fnt(e.node(),n);l&&e.style("pointer-events","all"),b0.positionText(e),r&&r.call(e)}return i?(t&&t._promises||[]).push(new Promise(function(l){e.style("display","none");var u=parseInt(e.node().style.fontSize,10),c={fontSize:u};rnt(i[2],c,function(f,h,d){a.selectAll("svg."+o).remove(),a.selectAll("g."+o+"-group").remove();var v=f&&f.select("svg");if(!v||!v.node()){s(),l();return}var x=a.append("g").classed(o+"-group",!0).attr({"pointer-events":"none","data-unformatted":n,"data-math":"Y"});x.node().appendChild(v.node()),h&&h.node()&&v.node().insertBefore(h.node().cloneNode(!0),v.node().firstChild);var b=d.width,p=d.height;v.attr({class:o,height:p,preserveAspectRatio:"xMinYMin meet"}).style({overflow:"visible","pointer-events":"none"});var E=e.node().style.fill||"black",k=v.select("g");k.attr({fill:E,stroke:E});var A=k.node().getBoundingClientRect(),L=A.width,_=A.height;(L>b||_>p)&&(v.style("overflow","hidden"),A=v.node().getBoundingClientRect(),L=A.width,_=A.height);var C=+e.attr("x"),M=+e.attr("y"),g=u||e.node().getBoundingClientRect().height,P=-g/4;if(o[0]==="y")x.attr({transform:"rotate("+[-90,C,M]+")"+Kit(-L/2,P-_/2)});else if(o[0]==="l")M=P-_/2;else if(o[0]==="a"&&o.indexOf("atitle")!==0)C=0,M=P;else{var T=e.attr("text-anchor");C=C-L*(T==="middle"?.5:T==="end"?1:0),M=M+P-_/2}v.attr({x:C,y:M}),r&&r.call(e,x),l(x)})})):s(),e};var Qit=/(<|<|<)/g,ent=/(>|>|>)/g;function tnt(e){return e.replace(Qit,"\\lt ").replace(ent,"\\gt ")}var Bne=[["$","$"],["\\(","\\)"]];function rnt(e,t,r){var n=parseInt((MathJax.version||"").split(".")[0]);if(n!==2&&n!==3){Ty.warn("No MathJax version:",MathJax.version);return}var i,a,o,s,l=function(){return a=Ty.extendDeepAll({},MathJax.Hub.config),o=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:Bne},displayAlign:"left"})},u=function(){a=Ty.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=Bne},c=function(){if(i=MathJax.Hub.config.menuSettings.renderer,i!=="SVG")return MathJax.Hub.setRenderer("SVG")},f=function(){i=MathJax.config.startup.output,i!=="svg"&&(MathJax.config.startup.output="svg")},h=function(){var E="math-output-"+Ty.randstr({},64);s=vh.select("body").append("div").attr({id:E}).style({visibility:"hidden",position:"absolute","font-size":t.fontSize+"px"}).text(tnt(e));var k=s.node();return n===2?MathJax.Hub.Typeset(k):MathJax.typeset([k])},d=function(){var E=s.select(n===2?".MathJax_SVG":".MathJax"),k=!E.empty()&&s.select("svg").node();if(!k)Ty.log("There was an error in the tex syntax.",e),r();else{var A=k.getBoundingClientRect(),L;n===2?L=vh.select("body").select("#MathJax_SVG_glyphs"):L=E.select("defs"),r(E,L,A)}s.remove()},v=function(){if(i!=="SVG")return MathJax.Hub.setRenderer(i)},x=function(){i!=="svg"&&(MathJax.config.startup.output=i)},b=function(){return o!==void 0&&(MathJax.Hub.processSectionDelay=o),MathJax.Hub.Config(a)},p=function(){MathJax.config=a};n===2?MathJax.Hub.Queue(l,c,h,d,v,b):n===3&&(u(),f(),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){h(),d(),x(),p()}))}var Hne={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},int={sub:"0.3em",sup:"-0.6em"},nnt={sub:"-0.21em",sup:"0.42em"},Nne="\u200B",Une=["http:","https:","mailto:","",void 0,":"],Gne=b0.NEWLINES=/(\r\n?|\n)/g,fO=/(<[^<>]*>)/,hO=/<(\/?)([^ >]*)(\s+(.*))?>/i,ant=//i;b0.BR_TAG_ALL=//gi;var jne=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,Wne=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,Zne=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,ont=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function _b(e,t){if(!e)return null;var r=e.match(t),n=r&&(r[3]||r[4]);return n&&Z6(n)}var snt=/(^|;)\s*color:/;b0.plainText=function(e,t){t=t||{};for(var r=t.len!==void 0&&t.len!==-1?t.len:1/0,n=t.allowedTags!==void 0?t.allowedTags:["br"],i="...",a=i.length,o=e.split(fO),s=[],l="",u=0,c=0;ca?s.push(f.substr(0,x-a)+i):s.push(f.substr(0,x));break}l=""}}return s.join("")};var lnt={mu:"\u03BC",amp:"&",lt:"<",gt:">",nbsp:"\xA0",times:"\xD7",plusmn:"\xB1",deg:"\xB0"},unt=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function Z6(e){return e.replace(unt,function(t,r){var n;return r.charAt(0)==="#"?n=cnt(r.charAt(1)==="x"?parseInt(r.substr(2),16):parseInt(r.substr(1),10)):n=lnt[r],n||t})}b0.convertEntities=Z6;function cnt(e){if(!(e>1114111)){var t=String.fromCodePoint;if(t)return t(e);var r=String.fromCharCode;return e<=65535?r(e):r((e>>10)+55232,e%1024+56320)}}function fnt(e,t){t=t.replace(Gne," ");var r=!1,n=[],i,a=-1;function o(){a++;var _=document.createElementNS(uO.svg,"tspan");vh.select(_).attr({class:"line",dy:a*Jit+"em"}),e.appendChild(_),i=_;var C=n;if(n=[{node:_}],C.length>1)for(var M=1;M.",t);return}var C=n.pop();_!==C.type&&Ty.log("Start tag <"+C.type+"> doesnt match end tag <"+_+">. Pretending it did match.",t),i=n[n.length-1].node}var c=ant.test(t);c?o():(i=e,n=[{node:e}]);for(var f=t.split(fO),h=0;h{"use strict";var hnt=xa(),Y6=id(),ZS=uo(),X6=Mr(),Yne=va(),dnt=sb().isValid;function vnt(e,t,r){var n=t?X6.nestedProperty(e,t).get()||{}:e,i=n[r||"color"];i&&i._inputArray&&(i=i._inputArray);var a=!1;if(X6.isArrayOrTypedArray(i)){for(var o=0;o=0;n--,i++){var a=e[n];r[i]=[1-a[0],a[1]]}return r}function tae(e,t){t=t||{};for(var r=e.domain,n=e.range,i=n.length,a=new Array(i),o=0;o{"use strict";var iae=Rq(),gnt=iae.FORMAT_LINK,mnt=iae.DATE_FORMAT_LINK;function ynt(e,t){return{valType:"string",dflt:"",editType:"none",description:(t?dO:nae)("hover text",e)+["By default the values are formatted using "+(t?"generic number format":"`"+e+"axis.hoverformat`")+"."].join(" ")}}function dO(e,t){return["Sets the "+e+" formatting rule"+(t?"for `"+t+"` ":""),"using d3 formatting mini-languages","which are very similar to those in Python. For numbers, see: "+gnt+"."].join(" ")}function nae(e,t){return dO(e,t)+[" And for dates see: "+mnt+".","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*"].join(" ")}aae.exports={axisHoverFormat:ynt,descriptionOnlyNumbers:dO,descriptionWithDates:nae}});var Cd=ye((Ytr,wae)=>{"use strict";var oae=Su(),w3=dh(),bae=Ed().dash,pO=no().extendFlat,sae=Vs().templatedArray,lae=Oc().descriptionWithDates,_nt=es().ONEDAY,pm=ad(),xnt=pm.HOUR_PATTERN,bnt=pm.WEEKDAY_PATTERN,vO={valType:"enumerated",values:["auto","linear","array"],editType:"ticks",impliedEdits:{tick0:void 0,dtick:void 0}},wnt=pO({},vO,{values:vO.values.slice().concat(["sync"])});function uae(e){return{valType:"integer",min:0,dflt:e?5:0,editType:"ticks"}}var cae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},fae={valType:"any",editType:"ticks",impliedEdits:{tickmode:"linear"}},hae={valType:"data_array",editType:"ticks"},dae={valType:"enumerated",values:["outside","inside",""],editType:"ticks"};function vae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=5),t}function pae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var gae={valType:"color",dflt:w3.defaultLine,editType:"ticks"},mae={valType:"color",dflt:w3.lightLine,editType:"ticks"};function yae(e){var t={valType:"number",min:0,editType:"ticks"};return e||(t.dflt=1),t}var _ae=pO({},bae,{editType:"ticks"}),xae={valType:"boolean",editType:"ticks"};wae.exports={visible:{valType:"boolean",editType:"plot"},color:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},title:{text:{valType:"string",editType:"ticks"},font:oae({editType:"ticks"}),standoff:{valType:"number",min:0,editType:"ticks"},editType:"ticks"},type:{valType:"enumerated",values:["-","linear","log","date","category","multicategory"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:{valType:"enumerated",values:["convert types","strict"],dflt:"convert types",editType:"calc"},autorange:{valType:"enumerated",values:[!0,!1,"reversed","min reversed","max reversed","min","max"],dflt:!0,editType:"axrange",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},autorangeoptions:{minallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmin:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},clipmax:{valType:"any",editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},include:{valType:"any",arrayOk:!0,editType:"plot",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},editType:"plot"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"plot"},range:{valType:"info_array",items:[{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0},{valType:"any",editType:"axrange",impliedEdits:{"^autorange":!1},anim:!0}],editType:"axrange",impliedEdits:{autorange:!1},anim:!0},minallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},maxallowed:{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},insiderange:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},scaleanchor:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString(),!1],editType:"plot"},scaleratio:{valType:"number",min:0,dflt:1,editType:"plot"},constrain:{valType:"enumerated",values:["range","domain"],editType:"plot"},constraintoward:{valType:"enumerated",values:["left","center","right","top","middle","bottom"],editType:"plot"},matches:{valType:"enumerated",values:[pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"calc"},rangebreaks:sae("rangebreak",{enabled:{valType:"boolean",dflt:!0,editType:"calc"},bounds:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},pattern:{valType:"enumerated",values:[bnt,xnt,""],editType:"calc"},values:{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"any",editType:"calc"}},dvalue:{valType:"number",editType:"calc",min:0,dflt:_nt},editType:"calc"}),tickmode:wnt,nticks:uae(),tick0:cae,dtick:fae,ticklabelstep:{valType:"integer",min:1,dflt:1,editType:"ticks"},tickvals:hae,ticktext:{valType:"data_array",editType:"ticks"},ticks:dae,tickson:{valType:"enumerated",values:["labels","boundaries"],dflt:"labels",editType:"ticks"},ticklabelmode:{valType:"enumerated",values:["instant","period"],dflt:"instant",editType:"ticks"},ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside",editType:"calc"},ticklabeloverflow:{valType:"enumerated",values:["allow","hide past div","hide past domain"],editType:"calc"},ticklabelshift:{valType:"integer",dflt:0,editType:"ticks"},ticklabelstandoff:{valType:"integer",dflt:0,editType:"ticks"},ticklabelindex:{valType:"integer",arrayOk:!0,editType:"calc"},mirror:{valType:"enumerated",values:[!0,"ticks",!1,"all","allticks"],dflt:!1,editType:"ticks+layoutstyle"},ticklen:vae(),tickwidth:pae(),tickcolor:gae,showticklabels:{valType:"boolean",dflt:!0,editType:"ticks"},labelalias:{valType:"any",dflt:!1,editType:"ticks"},automargin:{valType:"flaglist",flags:["height","width","left","right","top","bottom"],extras:[!0,!1],dflt:!1,editType:"ticks"},showspikes:{valType:"boolean",dflt:!1,editType:"modebar"},spikecolor:{valType:"color",dflt:null,editType:"none"},spikethickness:{valType:"number",dflt:3,editType:"none"},spikedash:pO({},bae,{dflt:"dash",editType:"none"}),spikemode:{valType:"flaglist",flags:["toaxis","across","marker"],dflt:"toaxis",editType:"none"},spikesnap:{valType:"enumerated",values:["data","cursor","hovered data"],dflt:"hovered data",editType:"none"},tickfont:oae({editType:"ticks"}),tickangle:{valType:"angle",dflt:"auto",editType:"ticks"},autotickangles:{valType:"info_array",freeLength:!0,items:{valType:"angle"},dflt:[0,30,90],editType:"ticks"},tickprefix:{valType:"string",dflt:"",editType:"ticks"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},ticksuffix:{valType:"string",dflt:"",editType:"ticks"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"ticks"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"ticks"},minexponent:{valType:"number",dflt:3,min:0,editType:"ticks"},separatethousands:{valType:"boolean",dflt:!1,editType:"ticks"},tickformat:{valType:"string",dflt:"",editType:"ticks",description:lae("tick label")},tickformatstops:sae("tickformatstop",{enabled:{valType:"boolean",dflt:!0,editType:"ticks"},dtickrange:{valType:"info_array",items:[{valType:"any",editType:"ticks"},{valType:"any",editType:"ticks"}],editType:"ticks"},value:{valType:"string",dflt:"",editType:"ticks"},editType:"ticks"}),hoverformat:{valType:"string",dflt:"",editType:"none",description:lae("hover text")},showline:{valType:"boolean",dflt:!1,editType:"ticks+layoutstyle"},linecolor:{valType:"color",dflt:w3.defaultLine,editType:"layoutstyle"},linewidth:{valType:"number",min:0,dflt:1,editType:"ticks+layoutstyle"},showgrid:xae,gridcolor:mae,gridwidth:yae(),griddash:_ae,zeroline:{valType:"boolean",editType:"ticks"},zerolinecolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},zerolinewidth:{valType:"number",dflt:1,editType:"ticks"},showdividers:{valType:"boolean",dflt:!0,editType:"ticks"},dividercolor:{valType:"color",dflt:w3.defaultLine,editType:"ticks"},dividerwidth:{valType:"number",dflt:1,editType:"ticks"},anchor:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},side:{valType:"enumerated",values:["top","bottom","left","right"],editType:"plot"},overlaying:{valType:"enumerated",values:["free",pm.idRegex.x.toString(),pm.idRegex.y.toString()],editType:"plot"},minor:{tickmode:vO,nticks:uae("minor"),tick0:cae,dtick:fae,tickvals:hae,ticks:dae,ticklen:vae("minor"),tickwidth:pae("minor"),tickcolor:gae,gridcolor:mae,gridwidth:yae("minor"),griddash:_ae,showgrid:xae,editType:"ticks"},layer:{valType:"enumerated",values:["above traces","below traces"],dflt:"above traces",editType:"plot"},domain:{valType:"info_array",items:[{valType:"number",min:0,max:1,editType:"plot"},{valType:"number",min:0,max:1,editType:"plot"}],dflt:[0,1],editType:"plot"},position:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},autoshift:{valType:"boolean",dflt:!1,editType:"plot"},shift:{valType:"number",editType:"plot"},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"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var K6=ye((Ktr,Sae)=>{"use strict";var Ac=Cd(),Tae=Su(),Aae=no().extendFlat,Tnt=Bu().overrideAll;Sae.exports=Tnt({orientation:{valType:"enumerated",values:["h","v"],dflt:"v"},thicknessmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels"},thickness:{valType:"number",min:0,dflt:30},lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["left","center","right"]},xpad:{valType:"number",min:0,dflt:10},y:{valType:"number"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["top","middle","bottom"]},ypad:{valType:"number",min:0,dflt:10},outlinecolor:Ac.linecolor,outlinewidth:Ac.linewidth,bordercolor:Ac.linecolor,borderwidth:{valType:"number",min:0,dflt:0},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)"},tickmode:Ac.minor.tickmode,nticks:Ac.nticks,tick0:Ac.tick0,dtick:Ac.dtick,tickvals:Ac.tickvals,ticktext:Ac.ticktext,ticks:Aae({},Ac.ticks,{dflt:""}),ticklabeloverflow:Aae({},Ac.ticklabeloverflow,{}),ticklabelposition:{valType:"enumerated",values:["outside","inside","outside top","inside top","outside left","inside left","outside right","inside right","outside bottom","inside bottom"],dflt:"outside"},ticklen:Ac.ticklen,tickwidth:Ac.tickwidth,tickcolor:Ac.tickcolor,ticklabelstep:Ac.ticklabelstep,showticklabels:Ac.showticklabels,labelalias:Ac.labelalias,tickfont:Tae({}),tickangle:Ac.tickangle,tickformat:Ac.tickformat,tickformatstops:Ac.tickformatstops,tickprefix:Ac.tickprefix,showtickprefix:Ac.showtickprefix,ticksuffix:Ac.ticksuffix,showticksuffix:Ac.showticksuffix,separatethousands:Ac.separatethousands,exponentformat:Ac.exponentformat,minexponent:Ac.minexponent,showexponent:Ac.showexponent,title:{text:{valType:"string"},font:Tae({}),side:{valType:"enumerated",values:["right","top","bottom"]}}},"colorbars","from-root")});var Jl=ye(($tr,Eae)=>{"use strict";var Ant=K6(),Snt=n3().counter,Mnt=Y1(),Mae=sb().scales,Jtr=Mnt(Mae);function J6(e){return"`"+e+"`"}Eae.exports=function(t,r){t=t||"",r=r||{};var n=r.cLetter||"c",i="onlyIfNumerical"in r?r.onlyIfNumerical:!!t,a="noScale"in r?r.noScale:t==="marker.line",o="showScaleDflt"in r?r.showScaleDflt:n==="z",s=typeof r.colorscaleDflt=="string"?Mae[r.colorscaleDflt]:null,l=r.editTypeOverride||"",u=t?t+".":"",c,f;"colorAttr"in r?(c=r.colorAttr,f=r.colorAttr):(c={z:"z",c:"color"}[n],f="in "+J6(u+c));var h=i?" Has an effect only if "+f+" is set to a numerical array.":"",d=n+"auto",v=n+"min",x=n+"max",b=n+"mid",p=J6(u+d),E=J6(u+v),k=J6(u+x),A=E+" and "+k,L={};L[v]=L[x]=void 0;var _={};_[d]=!1;var C={};return c==="color"&&(C.color={valType:"color",arrayOk:!0,editType:l||"style"},r.anim&&(C.color.anim=!0)),C[d]={valType:"boolean",dflt:!0,editType:"calc",impliedEdits:L},C[v]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[x]={valType:"number",dflt:null,editType:l||"plot",impliedEdits:_},C[b]={valType:"number",dflt:null,editType:"calc",impliedEdits:L},C.colorscale={valType:"colorscale",editType:"calc",dflt:s,impliedEdits:{autocolorscale:!1}},C.autocolorscale={valType:"boolean",dflt:r.autoColorDflt!==!1,editType:"calc",impliedEdits:{colorscale:void 0}},C.reversescale={valType:"boolean",dflt:!1,editType:"plot"},a||(C.showscale={valType:"boolean",dflt:o,editType:"calc"},C.colorbar=Ant),r.noColorAxis||(C.coloraxis={valType:"subplotid",regex:Snt("coloraxis"),dflt:null,editType:"calc"}),C}});var mO=ye((Qtr,kae)=>{"use strict";var Ent=no().extendFlat,knt=Jl(),gO=sb().scales;kae.exports={editType:"calc",colorscale:{editType:"calc",sequential:{valType:"colorscale",dflt:gO.Reds,editType:"calc"},sequentialminus:{valType:"colorscale",dflt:gO.Blues,editType:"calc"},diverging:{valType:"colorscale",dflt:gO.RdBu,editType:"calc"}},coloraxis:Ent({_isSubplotObj:!0,editType:"calc"},knt("",{colorAttr:"corresponding trace color array(s)",noColorAxis:!0,showScaleDflt:!0}))}});var yO=ye((err,Cae)=>{"use strict";var Cnt=Mr();Cae.exports=function(t){return Cnt.isPlainObject(t.colorbar)}});var bO=ye(xO=>{"use strict";var _O=uo(),Lae=Mr(),Pae=es(),Lnt=Pae.ONEDAY,Pnt=Pae.ONEWEEK;xO.dtick=function(e,t){var r=t==="log",n=t==="date",i=t==="category",a=n?Lnt:1;if(!e)return a;if(_O(e))return e=Number(e),e<=0?a:i?Math.max(1,Math.round(e)):n?Math.max(.1,e):e;if(typeof e!="string"||!(n||r))return a;var o=e.charAt(0),s=e.substr(1);return s=_O(s)?Number(s):0,s<=0||!(n&&o==="M"&&s===Math.round(s)||r&&o==="L"||r&&o==="D"&&(s===1||s===2))?a:e};xO.tick0=function(e,t,r,n){if(t==="date")return Lae.cleanDate(e,Lae.dateTick0(r,n%Pnt===0?1:0));if(!(n==="D1"||n==="D2"))return _O(e)?Number(e):0}});var xb=ye((rrr,Rae)=>{"use strict";var Iae=bO(),Int=Mr().isArrayOrTypedArray,Rnt=vv().isTypedArraySpec,Dnt=vv().decodeTypedArraySpec;Rae.exports=function(t,r,n,i,a){a||(a={});var o=a.isMinor,s=o?t.minor||{}:t,l=o?r.minor:r,u=o?"minor.":"";function c(E){var k=s[E];return Rnt(k)&&(k=Dnt(k)),k!==void 0?k:(l._template||{})[E]}var f=c("tick0"),h=c("dtick"),d=c("tickvals"),v=Int(d)?"array":h?"linear":"auto",x=n(u+"tickmode",v);if(x==="auto"||x==="sync")n(u+"nticks");else if(x==="linear"){var b=l.dtick=Iae.dtick(h,i);l.tick0=Iae.tick0(f,i,r.calendar,b)}else if(i!=="multicategory"){var p=n(u+"tickvals");p===void 0?l.tickmode="auto":o||n("ticktext")}}});var T3=ye((irr,zae)=>{"use strict";var wO=Mr(),Dae=Cd();zae.exports=function(t,r,n,i){var a=i.isMinor,o=a?t.minor||{}:t,s=a?r.minor:r,l=a?Dae.minor:Dae,u=a?"minor.":"",c=wO.coerce2(o,s,l,"ticklen",a?(r.ticklen||5)*.6:void 0),f=wO.coerce2(o,s,l,"tickwidth",a?r.tickwidth||1:void 0),h=wO.coerce2(o,s,l,"tickcolor",(a?r.tickcolor:void 0)||s.color),d=n(u+"ticks",!a&&i.outerTicks||c||f||h?"outside":"");d||(delete s.ticklen,delete s.tickwidth,delete s.tickcolor)}});var TO=ye((nrr,Fae)=>{"use strict";Fae.exports=function(t){var r=["showexponent","showtickprefix","showticksuffix"],n=r.filter(function(a){return t[a]!==void 0}),i=function(a){return t[a]===t[n[0]]};if(n.every(i)||n.length===1)return t[n[0]]}});var Zd=ye((arr,qae)=>{"use strict";var $6=Mr(),znt=Vs();qae.exports=function(t,r,n){var i=n.name,a=n.inclusionAttr||"visible",o=r[i],s=$6.isArrayOrTypedArray(t[i])?t[i]:[],l=r[i]=[],u=znt.arrayTemplater(r,i,a),c,f;for(c=0;c{"use strict";var AO=Mr(),Fnt=va().contrast,Oae=Cd(),qnt=TO(),Ont=Zd();Bae.exports=function(t,r,n,i,a){a||(a={});var o=n("labelalias");AO.isPlainObject(o)||delete r.labelalias;var s=qnt(t),l=n("showticklabels");if(l){a.noTicklabelshift||n("ticklabelshift"),a.noTicklabelstandoff||n("ticklabelstandoff");var u=a.font||{},c=r.color,f=r.ticklabelposition||"",h=f.indexOf("inside")!==-1?Fnt(a.bgColor):c&&c!==Oae.color.dflt?c:u.color;if(AO.coerceFont(n,"tickfont",u,{overrideDflt:{color:h}}),!a.noTicklabelstep&&i!=="multicategory"&&i!=="log"&&n("ticklabelstep"),!a.noAng){var d=n("tickangle");!a.noAutotickangles&&d==="auto"&&n("autotickangles")}if(i!=="category"){var v=n("tickformat");Ont(t,r,{name:"tickformatstops",inclusionAttr:"enabled",handleItemDefaults:Bnt}),r.tickformatstops.length||delete r.tickformatstops,!a.noExp&&!v&&i!=="date"&&(n("showexponent",s),n("exponentformat"),n("minexponent"),n("separatethousands"))}}};function Bnt(e,t){function r(i,a){return AO.coerce(e,t,Oae.tickformatstops,i,a)}var n=r("enabled");n&&(r("dtickrange"),r("value"))}});var r_=ye((srr,Nae)=>{"use strict";var Nnt=TO();Nae.exports=function(t,r,n,i,a){a||(a={});var o=a.tickSuffixDflt,s=Nnt(t),l=n("tickprefix");l&&n("showtickprefix",s);var u=n("ticksuffix",o);u&&n("showticksuffix",s)}});var SO=ye((lrr,Uae)=>{"use strict";var i_=Mr(),Unt=Vs(),Vnt=xb(),Hnt=T3(),Gnt=t_(),jnt=r_(),Wnt=K6();Uae.exports=function(t,r,n){var i=Unt.newContainer(r,"colorbar"),a=t.colorbar||{};function o(T,F){return i_.coerce(a,i,Wnt,T,F)}var s=n.margin||{t:0,b:0,l:0,r:0},l=n.width-s.l-s.r,u=n.height-s.t-s.b,c=o("orientation"),f=c==="v",h=o("thicknessmode");o("thickness",h==="fraction"?30/(f?l:u):30);var d=o("lenmode");o("len",d==="fraction"?1:f?u:l);var v=o("yref"),x=o("xref"),b=v==="paper",p=x==="paper",E,k,A,L="left";f?(A="middle",L=p?"left":"right",E=p?1.02:1,k=.5):(A=b?"bottom":"top",L="center",E=.5,k=b?1.02:1),i_.coerce(a,i,{x:{valType:"number",min:p?-2:0,max:p?3:1,dflt:E}},"x"),i_.coerce(a,i,{y:{valType:"number",min:b?-2:0,max:b?3:1,dflt:k}},"y"),o("xanchor",L),o("xpad"),o("yanchor",A),o("ypad"),i_.noneOrAll(a,i,["x","y"]),o("outlinecolor"),o("outlinewidth"),o("bordercolor"),o("borderwidth"),o("bgcolor");var _=i_.coerce(a,i,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:f?["outside","inside","outside top","inside top","outside bottom","inside bottom"]:["outside","inside","outside left","inside left","outside right","inside right"]}},"ticklabelposition");o("ticklabeloverflow",_.indexOf("inside")!==-1?"hide past domain":"hide past div"),Vnt(a,i,o,"linear");var C=n.font,M={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,outerTicks:!1,font:C};_.indexOf("inside")!==-1&&(M.bgColor="black"),jnt(a,i,o,"linear",M),Gnt(a,i,o,"linear",M),Hnt(a,i,o,"linear",M),o("title.text",n._dfltTitle.colorbar);var g=i.showticklabels?i.tickfont:C,P=i_.extendFlat({},C,{family:g.family,size:i_.bigFont(g.size)});i_.coerceFont(o,"title.font",P),o("title.side",f?"top":"right")}});var Uh=ye((urr,Gae)=>{"use strict";var Vae=uo(),EO=Mr(),Znt=yO(),Xnt=SO(),Hae=sb().isValid,Ynt=ba().traceIs;function MO(e,t){var r=t.slice(0,t.length-1);return t?EO.nestedProperty(e,r).get()||{}:e}Gae.exports=function e(t,r,n,i,a){var o=a.prefix,s=a.cLetter,l="_module"in r,u=MO(t,o),c=MO(r,o),f=MO(r._template||{},o)||{},h=function(){return delete t.coloraxis,delete r.coloraxis,e(t,r,n,i,a)};if(l){var d=n._colorAxes||{},v=i(o+"coloraxis");if(v){var x=Ynt(r,"contour")&&EO.nestedProperty(r,"contours.coloring").get()||"heatmap",b=d[v];b?(b[2].push(h),b[0]!==x&&(b[0]=!1,EO.warn(["Ignoring coloraxis:",v,"setting","as it is linked to incompatible colorscales."].join(" ")))):d[v]=[x,r,[h]];return}}var p=u[s+"min"],E=u[s+"max"],k=Vae(p)&&Vae(E)&&p{"use strict";var jae=Mr(),Knt=Vs(),Wae=mO(),Jnt=Uh();Zae.exports=function(t,r){function n(f,h){return jae.coerce(t,r,Wae,f,h)}n("colorscale.sequential"),n("colorscale.sequentialminus"),n("colorscale.diverging");var i=r._colorAxes,a,o;function s(f,h){return jae.coerce(a,o,Wae.coloraxis,f,h)}for(var l in i){var u=i[l];if(u[0])a=t[l]||{},o=Knt.newContainer(r,l,"coloraxis"),o._name=l,Jnt(a,o,r,s,{prefix:"",cLetter:"c"});else{for(var c=0;c{"use strict";var $nt=Mr(),Qnt=Dv().hasColorscale,eat=Dv().extractOpts;Yae.exports=function(t,r){function n(c,f){var h=c["_"+f];h!==void 0&&(c[f]=h)}function i(c,f){var h=f.container?$nt.nestedProperty(c,f.container).get():c;if(h)if(h.coloraxis)h._colorAx=r[h.coloraxis];else{var d=eat(h),v=d.auto;(v||d.min===void 0)&&n(h,f.min),(v||d.max===void 0)&&n(h,f.max),d.autocolorscale&&n(h,"colorscale")}}for(var a=0;a{"use strict";var Jae=uo(),kO=Mr(),tat=Dv().extractOpts;$ae.exports=function(t,r,n){var i=t._fullLayout,a=n.vals,o=n.containerStr,s=o?kO.nestedProperty(r,o).get():r,l=tat(s),u=l.auto!==!1,c=l.min,f=l.max,h=l.mid,d=function(){return kO.aggNums(Math.min,null,a)},v=function(){return kO.aggNums(Math.max,null,a)};if(c===void 0?c=d():u&&(s._colorAx&&Jae(c)?c=Math.min(c,d()):c=d()),f===void 0?f=v():u&&(s._colorAx&&Jae(f)?f=Math.max(f,v()):f=v()),u&&h!==void 0&&(f-h>h-c?c=h-(f-h):f-h=0?x=i.colorscale.sequential:x=i.colorscale.sequentialminus,l._sync("colorscale",x)}}});var Mu=ye((drr,Qae)=>{"use strict";var Q6=sb(),A3=Dv();Qae.exports={moduleType:"component",name:"colorscale",attributes:Jl(),layoutAttributes:mO(),supplyLayoutDefaults:Xae(),handleDefaults:Uh(),crossTraceDefaults:Kae(),calc:zv(),scales:Q6.scales,defaultScale:Q6.defaultScale,getScale:Q6.get,isValidScale:Q6.isValid,hasColorscale:A3.hasColorscale,extractOpts:A3.extractOpts,extractScale:A3.extractScale,flipScale:A3.flipScale,makeColorScaleFunc:A3.makeColorScaleFunc,makeColorScaleFuncFromTrace:A3.makeColorScaleFuncFromTrace}});var lu=ye((vrr,toe)=>{"use strict";var eoe=Mr(),rat=vv().isTypedArraySpec;toe.exports={hasLines:function(e){return e.visible&&e.mode&&e.mode.indexOf("lines")!==-1},hasMarkers:function(e){return e.visible&&(e.mode&&e.mode.indexOf("markers")!==-1||e.type==="splom")},hasText:function(e){return e.visible&&e.mode&&e.mode.indexOf("text")!==-1},isBubble:function(e){var t=e.marker;return eoe.isPlainObject(t)&&(eoe.isArrayOrTypedArray(t.size)||rat(t.size))}}});var S3=ye((prr,roe)=>{"use strict";var iat=uo();roe.exports=function(t,r){r||(r=2);var n=t.marker,i=n.sizeref||1,a=n.sizemin||0,o=n.sizemode==="area"?function(s){return Math.sqrt(s/i)}:function(s){return s/i};return function(s){var l=o(s/r);return iat(l)&&l>0?Math.max(l,a):0}}});var rp=ye(pv=>{"use strict";var ioe=Mr();pv.getSubplot=function(e){return e.subplot||e.xaxis+e.yaxis||e.geo};pv.isTraceInSubplots=function(e,t){if(e.type==="splom"){for(var r=e.xaxes||[],n=e.yaxes||[],i=0;i=0&&r.index{ooe.exports=lat;var CO={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0},sat=/([astvzqmhlc])([^astvzqmhlc]*)/ig;function lat(e){var t=[];return e.replace(sat,function(r,n,i){var a=n.toLowerCase();for(i=cat(i),a=="m"&&i.length>2&&(t.push([n].concat(i.splice(0,2))),a="l",n=n=="m"?"l":"L");;){if(i.length==CO[a])return i.unshift(n),t.push(i);if(i.length{"use strict";var fat=XS(),Yn=function(e,t){return t?Math.round(e*(t=Math.pow(10,t)))/t:Math.round(e)},ts="M0,0Z",soe=Math.sqrt(2),n_=Math.sqrt(3),LO=Math.PI,PO=Math.cos,IO=Math.sin;hoe.exports={circle:{n:0,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i="M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z";return r?is(t,r,i):i}},square:{n:1,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")}},diamond:{n:2,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"Z")}},cross:{n:3,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.4,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H"+n+"V"+i+"H-"+n+"V"+n+"H-"+i+"V-"+n+"H-"+n+"V-"+i+"H"+n+"V-"+n+"H"+i+"Z")}},x:{n:4,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.8/soe,2),i="l"+n+","+n,a="l"+n+",-"+n,o="l-"+n+",-"+n,s="l-"+n+","+n;return is(t,r,"M0,"+n+i+a+o+a+o+s+o+s+i+s+i+"Z")}},"triangle-up":{n:5,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+","+i+"H"+n+"L0,-"+a+"Z")}},"triangle-down":{n:6,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+n+",-"+i+"H"+n+"L0,"+a+"Z")}},"triangle-left":{n:7,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M"+i+",-"+n+"V"+n+"L-"+a+",0Z")}},"triangle-right":{n:8,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2/n_,2),i=Yn(e/2,2),a=Yn(e,2);return is(t,r,"M-"+i+",-"+n+"V"+n+"L"+a+",0Z")}},"triangle-ne":{n:9,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+i+",-"+n+"H"+n+"V"+i+"Z")}},"triangle-se":{n:10,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+n+",-"+i+"V"+n+"H-"+i+"Z")}},"triangle-sw":{n:11,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M"+i+","+n+"H-"+n+"V-"+i+"Z")}},"triangle-nw":{n:12,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.6,2),i=Yn(e*1.2,2);return is(t,r,"M-"+n+","+i+"V-"+n+"H"+i+"Z")}},pentagon:{n:13,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.951,2),i=Yn(e*.588,2),a=Yn(-e,2),o=Yn(e*-.309,2),s=Yn(e*.809,2);return is(t,r,"M"+n+","+o+"L"+i+","+s+"H-"+i+"L-"+n+","+o+"L0,"+a+"Z")}},hexagon:{n:14,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*n_/2,2);return is(t,r,"M"+a+",-"+i+"V"+i+"L0,"+n+"L-"+a+","+i+"V-"+i+"L0,-"+n+"Z")}},hexagon2:{n:15,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/2,2),a=Yn(e*n_/2,2);return is(t,r,"M-"+i+","+a+"H"+i+"L"+n+",0L"+i+",-"+a+"H-"+i+"L-"+n+",0Z")}},octagon:{n:16,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.924,2),i=Yn(e*.383,2);return is(t,r,"M-"+i+",-"+n+"H"+i+"L"+n+",-"+i+"V"+i+"L"+i+","+n+"H-"+i+"L-"+n+","+i+"V-"+i+"Z")}},star:{n:17,f:function(e,t,r){if(rs(t))return ts;var n=e*1.4,i=Yn(n*.225,2),a=Yn(n*.951,2),o=Yn(n*.363,2),s=Yn(n*.588,2),l=Yn(-n,2),u=Yn(n*-.309,2),c=Yn(n*.118,2),f=Yn(n*.809,2),h=Yn(n*.382,2);return is(t,r,"M"+i+","+u+"H"+a+"L"+o+","+c+"L"+s+","+f+"L0,"+h+"L-"+s+","+f+"L-"+o+","+c+"L-"+a+","+u+"H-"+i+"L0,"+l+"Z")}},hexagram:{n:18,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.66,2),i=Yn(e*.38,2),a=Yn(e*.76,2);return is(t,r,"M-"+a+",0l-"+i+",-"+n+"h"+a+"l"+i+",-"+n+"l"+i+","+n+"h"+a+"l-"+i+","+n+"l"+i+","+n+"h-"+a+"l-"+i+","+n+"l-"+i+",-"+n+"h-"+a+"Z")}},"star-triangle-up":{n:19,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*n_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M-"+n+","+i+s+n+","+i+s+"0,-"+a+s+"-"+n+","+i+"Z")}},"star-triangle-down":{n:20,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*n_*.8,2),i=Yn(e*.8,2),a=Yn(e*1.6,2),o=Yn(e*4,2),s="A "+o+","+o+" 0 0 1 ";return is(t,r,"M"+n+",-"+i+s+"-"+n+",-"+i+s+"0,"+a+s+n+",-"+i+"Z")}},"star-square":{n:21,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.1,2),i=Yn(e*2,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",-"+n+a+"-"+n+","+n+a+n+","+n+a+n+",-"+n+a+"-"+n+",-"+n+"Z")}},"star-diamond":{n:22,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*1.9,2),a="A "+i+","+i+" 0 0 1 ";return is(t,r,"M-"+n+",0"+a+"0,"+n+a+n+",0"+a+"0,-"+n+a+"-"+n+",0Z")}},"diamond-tall":{n:23,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*.7,2),i=Yn(e*1.4,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},"diamond-wide":{n:24,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2),i=Yn(e*.7,2);return is(t,r,"M0,"+i+"L"+n+",0L0,-"+i+"L-"+n+",0Z")}},hourglass:{n:25,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"H-"+n+"L"+n+",-"+n+"H-"+n+"Z")},noDot:!0},bowtie:{n:26,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"V-"+n+"L-"+n+","+n+"V-"+n+"Z")},noDot:!0},"circle-cross":{n:27,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"circle-x":{n:28,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e/soe,2);return is(t,r,"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i+"M"+n+",0A"+n+","+n+" 0 1,1 0,-"+n+"A"+n+","+n+" 0 0,1 "+n+",0Z")},needLine:!0,noDot:!0},"square-cross":{n:29,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"square-x":{n:30,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n+"M"+n+","+n+"H-"+n+"V-"+n+"H"+n+"Z")},needLine:!0,noDot:!0},"diamond-cross":{n:31,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM0,-"+n+"V"+n+"M-"+n+",0H"+n)},needLine:!0,noDot:!0},"diamond-x":{n:32,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.3,2),i=Yn(e*.65,2);return is(t,r,"M"+n+",0L0,"+n+"L-"+n+",0L0,-"+n+"ZM-"+i+",-"+i+"L"+i+","+i+"M-"+i+","+i+"L"+i+",-"+i)},needLine:!0,noDot:!0},"cross-thin":{n:33,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"x-thin":{n:34,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n+"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},asterisk:{n:35,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*.85,2);return is(t,r,"M0,"+n+"V-"+n+"M"+n+",0H-"+n+"M"+i+","+i+"L-"+i+",-"+i+"M"+i+",-"+i+"L-"+i+","+i)},needLine:!0,noDot:!0,noFill:!0},hash:{n:36,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e/2,2),i=Yn(e,2);return is(t,r,"M"+n+","+i+"V-"+i+"M"+(n-i)+",-"+i+"V"+i+"M"+i+","+n+"H-"+i+"M-"+i+","+(n-i)+"H"+i)},needLine:!0,noFill:!0},"y-up":{n:37,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+","+a+"L0,0M"+n+","+a+"L0,0M0,-"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-down":{n:38,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+n+",-"+a+"L0,0M"+n+",-"+a+"L0,0M0,"+i+"L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-left":{n:39,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M"+a+","+n+"L0,0M"+a+",-"+n+"L0,0M-"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"y-right":{n:40,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.2,2),i=Yn(e*1.6,2),a=Yn(e*.8,2);return is(t,r,"M-"+a+","+n+"L0,0M-"+a+",-"+n+"L0,0M"+i+",0L0,0")},needLine:!0,noDot:!0,noFill:!0},"line-ew":{n:41,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M"+n+",0H-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ns":{n:42,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*1.4,2);return is(t,r,"M0,"+n+"V-"+n)},needLine:!0,noDot:!0,noFill:!0},"line-ne":{n:43,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+",-"+n+"L-"+n+","+n)},needLine:!0,noDot:!0,noFill:!0},"line-nw":{n:44,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2);return is(t,r,"M"+n+","+n+"L-"+n+",-"+n)},needLine:!0,noDot:!0,noFill:!0},"arrow-up":{n:45,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,noDot:!0},"arrow-down":{n:46,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M0,0L-"+n+",-"+i+"H"+n+"Z")},noDot:!0},"arrow-left":{n:47,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-right":{n:48,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,0L-"+n+",-"+i+"V"+i+"Z")},noDot:!0},"arrow-bar-up":{n:49,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+","+i+"H"+n+"Z")},backoff:1,needLine:!0,noDot:!0},"arrow-bar-down":{n:50,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e,2),i=Yn(e*2,2);return is(t,r,"M-"+n+",0H"+n+"M0,0L-"+n+",-"+i+"H"+n+"Z")},needLine:!0,noDot:!0},"arrow-bar-left":{n:51,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},"arrow-bar-right":{n:52,f:function(e,t,r){if(rs(t))return ts;var n=Yn(e*2,2),i=Yn(e,2);return is(t,r,"M0,-"+i+"V"+i+"M0,0L-"+n+",-"+i+"V"+i+"Z")},needLine:!0,noDot:!0},arrow:{n:53,f:function(e,t,r){if(rs(t))return ts;var n=LO/2.5,i=2*e*PO(n),a=2*e*IO(n);return is(t,r,"M0,0L"+-i+","+a+"L"+i+","+a+"Z")},backoff:.9,noDot:!0},"arrow-wide":{n:54,f:function(e,t,r){if(rs(t))return ts;var n=LO/4,i=2*e*PO(n),a=2*e*IO(n);return is(t,r,"M0,0L"+-i+","+a+"A "+2*e+","+2*e+" 0 0 1 "+i+","+a+"Z")},backoff:.4,noDot:!0}};function rs(e){return e===null}var loe,uoe,coe,foe;function is(e,t,r){if((!e||e%360===0)&&!t)return r;if(coe===e&&foe===t&&loe===r)return uoe;coe=e,foe=t,loe=r;function n(b,p){var E=PO(b),k=IO(b),A=p[0],L=p[1]+(t||0);return[A*E-L*k,A*k+L*E]}for(var i=e/180*LO,a=0,o=0,s=fat(r),l="",u=0;u{"use strict";var od=xa(),du=Mr(),hat=du.numberFormat,Ab=uo(),OO=id(),tL=ba(),Xd=va(),dat=Mu(),KS=du.strTranslate,rL=Pl(),vat=Zp(),pat=Nh(),gat=pat.LINE_SPACING,Toe=U1().DESELECTDIM,mat=lu(),yat=S3(),_at=rp().appendArrayPointValue,na=Roe.exports={};na.font=function(e,t){var r=t.variant,n=t.style,i=t.weight,a=t.color,o=t.size,s=t.family,l=t.shadow,u=t.lineposition,c=t.textcase;s&&e.style("font-family",s),o+1&&e.style("font-size",o+"px"),a&&e.call(Xd.fill,a),i&&e.style("font-weight",i),n&&e.style("font-style",n),r&&e.style("font-variant",r),c&&e.style("text-transform",RO(bat(c))),l&&e.style("text-shadow",l==="auto"?rL.makeTextShadow(Xd.contrast(a)):RO(l)),u&&e.style("text-decoration-line",RO(wat(u)))};function RO(e){return e==="none"?void 0:e}var xat={normal:"none",lower:"lowercase",upper:"uppercase","word caps":"capitalize"};function bat(e){return xat[e]}function wat(e){return e.replace("under","underline").replace("over","overline").replace("through","line-through").split("+").join(" ")}na.setPosition=function(e,t,r){e.attr("x",t).attr("y",r)};na.setSize=function(e,t,r){e.attr("width",t).attr("height",r)};na.setRect=function(e,t,r,n,i){e.call(na.setPosition,t,r).call(na.setSize,n,i)};na.translatePoint=function(e,t,r,n){var i=r.c2p(e.x),a=n.c2p(e.y);if(Ab(i)&&Ab(a)&&t.node())t.node().nodeName==="text"?t.attr("x",i).attr("y",a):t.attr("transform",KS(i,a));else return!1;return!0};na.translatePoints=function(e,t,r){e.each(function(n){var i=od.select(this);na.translatePoint(n,i,t,r)})};na.hideOutsideRangePoint=function(e,t,r,n,i,a){t.attr("display",r.isPtWithinRange(e,i)&&n.isPtWithinRange(e,a)?null:"none")};na.hideOutsideRangePoints=function(e,t){if(t._hasClipOnAxisFalse){var r=t.xaxis,n=t.yaxis;e.each(function(i){var a=i[0].trace,o=a.xcalendar,s=a.ycalendar,l=tL.traceIs(a,"bar-like")?".bartext":".point,.textpoint";e.selectAll(l).each(function(u){na.hideOutsideRangePoint(u,od.select(this),r,n,o,s)})})}};na.crispRound=function(e,t,r){return!t||!Ab(t)?r||0:e._context.staticPlot?t:t<1?1:Math.round(t)};na.singleLineStyle=function(e,t,r,n,i){t.style("fill","none");var a=(((e||[])[0]||{}).trace||{}).line||{},o=r||a.width||0,s=i||a.dash||"";Xd.stroke(t,n||a.color),na.dashLine(t,s,o)};na.lineGroupStyle=function(e,t,r,n){e.style("fill","none").each(function(i){var a=(((i||[])[0]||{}).trace||{}).line||{},o=t||a.width||0,s=n||a.dash||"";od.select(this).call(Xd.stroke,r||a.color).call(na.dashLine,s,o)})};na.dashLine=function(e,t,r){r=+r||0,t=na.dashStyle(t,r),e.style({"stroke-dasharray":t,"stroke-width":r+"px"})};na.dashStyle=function(e,t){t=+t||1;var r=Math.max(t,3);return e==="solid"?e="":e==="dot"?e=r+"px,"+r+"px":e==="dash"?e=3*r+"px,"+3*r+"px":e==="longdash"?e=5*r+"px,"+5*r+"px":e==="dashdot"?e=3*r+"px,"+r+"px,"+r+"px,"+r+"px":e==="longdashdot"&&(e=5*r+"px,"+2*r+"px,"+r+"px,"+2*r+"px"),e};function Aoe(e,t,r,n){var i=t.fillpattern,a=t.fillgradient,o=i&&na.getPatternAttr(i.shape,0,"");if(o){var s=na.getPatternAttr(i.bgcolor,0,null),l=na.getPatternAttr(i.fgcolor,0,null),u=i.fgopacity,c=na.getPatternAttr(i.size,0,8),f=na.getPatternAttr(i.solidity,0,.3),h=t.uid;na.pattern(e,"point",r,h,o,c,f,void 0,i.fillmode,s,l,u)}else if(a&&a.type!=="none"){var d=a.type,v="scatterfill-"+t.uid;if(n&&(v="legendfill-"+t.uid),!n&&(a.start!==void 0||a.stop!==void 0)){var x,b;d==="horizontal"?(x={x:a.start,y:0},b={x:a.stop,y:0}):d==="vertical"&&(x={x:0,y:a.start},b={x:0,y:a.stop}),x.x=t._xA.c2p(x.x===void 0?t._extremes.x.min[0].val:x.x,!0),x.y=t._yA.c2p(x.y===void 0?t._extremes.y.min[0].val:x.y,!0),b.x=t._xA.c2p(b.x===void 0?t._extremes.x.max[0].val:b.x,!0),b.y=t._yA.c2p(b.y===void 0?t._extremes.y.max[0].val:b.y,!0),e.call(Eoe,r,v,"linear",a.colorscale,"fill",x,b,!0,!1)}else d==="horizontal"&&(d=d+"reversed"),e.call(na.gradient,r,v,d,a.colorscale,"fill")}else t.fillcolor&&e.call(Xd.fill,t.fillcolor)}na.singleFillStyle=function(e,t){var r=od.select(e.node()),n=r.data(),i=((n[0]||[])[0]||{}).trace||{};Aoe(e,i,t,!1)};na.fillGroupStyle=function(e,t,r){e.style("stroke-width",0).each(function(n){var i=od.select(this);n[0].trace&&Aoe(i,n[0].trace,t,r)})};var voe=doe();na.symbolNames=[];na.symbolFuncs=[];na.symbolBackOffs=[];na.symbolNeedLines={};na.symbolNoDot={};na.symbolNoFill={};na.symbolList=[];Object.keys(voe).forEach(function(e){var t=voe[e],r=t.n;na.symbolList.push(r,String(r),e,r+100,String(r+100),e+"-open"),na.symbolNames[r]=e,na.symbolFuncs[r]=t.f,na.symbolBackOffs[r]=t.backoff||0,t.needLine&&(na.symbolNeedLines[r]=!0),t.noDot?na.symbolNoDot[r]=!0:na.symbolList.push(r+200,String(r+200),e+"-dot",r+300,String(r+300),e+"-open-dot"),t.noFill&&(na.symbolNoFill[r]=!0)});var Tat=na.symbolNames.length,Aat="M0,0.5L0.5,0L0,-0.5L-0.5,0Z";na.symbolNumber=function(e){if(Ab(e))e=+e;else if(typeof e=="string"){var t=0;e.indexOf("-open")>0&&(t=100,e=e.replace("-open","")),e.indexOf("-dot")>0&&(t+=200,e=e.replace("-dot","")),e=na.symbolNames.indexOf(e),e>=0&&(e+=t)}return e%100>=Tat||e>=400?0:Math.floor(Math.max(e,0))};function Soe(e,t,r,n){var i=e%100;return na.symbolFuncs[i](t,r,n)+(e>=200?Aat:"")}var poe=hat("~f"),Moe={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};na.gradient=function(e,t,r,n,i,a){var o=Moe[n];return Eoe(e,t,r,o.type,i,a,o.start,o.stop,!1,o.reversed)};function Eoe(e,t,r,n,i,a,o,s,l,u){var c=i.length,f;n==="linear"?f={node:"linearGradient",attrs:{x1:o.x,y1:o.y,x2:s.x,y2:s.y,gradientUnits:l?"userSpaceOnUse":"objectBoundingBox"},reversed:u}:n==="radial"&&(f={node:"radialGradient",reversed:u});for(var h=new Array(c),d=0;d=0&&e.i===void 0&&(e.i=a.i),t.style("opacity",n.selectedOpacityFn?n.selectedOpacityFn(e):e.mo===void 0?o.opacity:e.mo),n.ms2mrc){var l;e.ms==="various"||o.size==="various"?l=3:l=n.ms2mrc(e.ms),e.mrc=l,n.selectedSizeFn&&(l=e.mrc=n.selectedSizeFn(e));var u=na.symbolNumber(e.mx||o.symbol)||0;e.om=u%200>=100;var c=UO(e,r),f=NO(e,r);t.attr("d",Soe(u,l,c,f))}var h=!1,d,v,x;if(e.so)x=s.outlierwidth,v=s.outliercolor,d=o.outliercolor;else{var b=(s||{}).width;x=(e.mlw+1||b+1||(e.trace?(e.trace.marker.line||{}).width:0)+1)-1||0,"mlc"in e?v=e.mlcc=n.lineScale(e.mlc):du.isArrayOrTypedArray(s.color)?v=Xd.defaultLine:v=s.color,du.isArrayOrTypedArray(o.color)&&(d=Xd.defaultLine,h=!0),"mc"in e?d=e.mcc=n.markerScale(e.mc):d=o.color||o.colors||"rgba(0,0,0,0)",n.selectedColorFn&&(d=n.selectedColorFn(e))}if(e.om)t.call(Xd.stroke,d).style({"stroke-width":(x||1)+"px",fill:"none"});else{t.style("stroke-width",(e.isBlank?0:x)+"px");var p=o.gradient,E=e.mgt;E?h=!0:E=p&&p.type,du.isArrayOrTypedArray(E)&&(E=E[0],Moe[E]||(E=0));var k=o.pattern,A=k&&na.getPatternAttr(k.shape,e.i,"");if(E&&E!=="none"){var L=e.mgc;L?h=!0:L=p.color;var _=r.uid;h&&(_+="-"+e.i),na.gradient(t,i,_,E,[[0,L],[1,d]],"fill")}else if(A){var C=!1,M=k.fgcolor;!M&&a&&a.color&&(M=a.color,C=!0);var g=na.getPatternAttr(M,e.i,a&&a.color||null),P=na.getPatternAttr(k.bgcolor,e.i,null),T=k.fgopacity,F=na.getPatternAttr(k.size,e.i,8),q=na.getPatternAttr(k.solidity,e.i,.3);C=C||e.mcc||du.isArrayOrTypedArray(k.shape)||du.isArrayOrTypedArray(k.bgcolor)||du.isArrayOrTypedArray(k.fgcolor)||du.isArrayOrTypedArray(k.size)||du.isArrayOrTypedArray(k.solidity);var V=r.uid;C&&(V+="-"+e.i),na.pattern(t,"point",i,V,A,F,q,e.mcc,k.fillmode,P,g,T)}else du.isArrayOrTypedArray(d)?Xd.fill(t,d[e.i]):Xd.fill(t,d);x&&Xd.stroke(t,v)}};na.makePointStyleFns=function(e){var t={},r=e.marker;return t.markerScale=na.tryColorscale(r,""),t.lineScale=na.tryColorscale(r,"line"),tL.traceIs(e,"symbols")&&(t.ms2mrc=mat.isBubble(e)?yat(e):function(){return(r.size||6)/2}),e.selectedpoints&&du.extendFlat(t,na.makeSelectedPointStyleFns(e)),t};na.makeSelectedPointStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.marker||{},a=r.marker||{},o=n.marker||{},s=i.opacity,l=a.opacity,u=o.opacity,c=l!==void 0,f=u!==void 0;(du.isArrayOrTypedArray(s)||c||f)&&(t.selectedOpacityFn=function(A){var L=A.mo===void 0?i.opacity:A.mo;return A.selected?c?l:L:f?u:Toe*L});var h=i.color,d=a.color,v=o.color;(d||v)&&(t.selectedColorFn=function(A){var L=A.mcc||h;return A.selected?d||L:v||L});var x=i.size,b=a.size,p=o.size,E=b!==void 0,k=p!==void 0;return tL.traceIs(e,"symbols")&&(E||k)&&(t.selectedSizeFn=function(A){var L=A.mrc||x/2;return A.selected?E?b/2:L:k?p/2:L}),t};na.makeSelectedTextStyleFns=function(e){var t={},r=e.selected||{},n=e.unselected||{},i=e.textfont||{},a=r.textfont||{},o=n.textfont||{},s=i.color,l=a.color,u=o.color;return t.selectedTextColorFn=function(c){var f=c.tc||s;return c.selected?l||f:u||(l?f:Xd.addOpacity(f,Toe))},t};na.selectedPointStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedPointStyleFns(t),n=t.marker||{},i=[];r.selectedOpacityFn&&i.push(function(a,o){a.style("opacity",r.selectedOpacityFn(o))}),r.selectedColorFn&&i.push(function(a,o){Xd.fill(a,r.selectedColorFn(o))}),r.selectedSizeFn&&i.push(function(a,o){var s=o.mx||n.symbol||0,l=r.selectedSizeFn(o);a.attr("d",Soe(na.symbolNumber(s),l,UO(o,t),NO(o,t))),o.mrc2=l}),i.length&&e.each(function(a){for(var o=od.select(this),s=0;s0?r:0}na.textPointStyle=function(e,t,r){if(e.size()){var n;if(t.selectedpoints){var i=na.makeSelectedTextStyleFns(t);n=i.selectedTextColorFn}var a=t.texttemplate,o=r._fullLayout;e.each(function(s){var l=od.select(this),u=a?du.extractOption(s,t,"txt","texttemplate"):du.extractOption(s,t,"tx","text");if(!u&&u!==0){l.remove();return}if(a){var c=t._module.formatLabels,f=c?c(s,t,o):{},h={};_at(h,t,s.i);var d=t._meta||{};u=du.texttemplateString(u,f,o._d3locale,h,s,d)}var v=s.tp||t.textposition,x=Coe(s,t),b=n?n(s):s.tc||t.textfont.color;l.call(na.font,{family:s.tf||t.textfont.family,weight:s.tw||t.textfont.weight,style:s.ty||t.textfont.style,variant:s.tv||t.textfont.variant,textcase:s.tC||t.textfont.textcase,lineposition:s.tE||t.textfont.lineposition,shadow:s.tS||t.textfont.shadow,size:x,color:b}).text(u).call(rL.convertToTspans,r).call(koe,v,x,s.mrc)})}};na.selectedTextStyle=function(e,t){if(!(!e.size()||!t.selectedpoints)){var r=na.makeSelectedTextStyleFns(t);e.each(function(n){var i=od.select(this),a=r.selectedTextColorFn(n),o=n.tp||t.textposition,s=Coe(n,t);Xd.fill(i,a);var l=tL.traceIs(t,"bar-like");koe(i,o,s,n.mrc2||n.mrc,l)})}};var goe=.5;na.smoothopen=function(e,t){if(e.length<3)return"M"+e.join("L");var r="M"+e[0],n=[],i;for(i=1;i=l||A>=c&&A<=l)&&(L<=f&&L>=u||L>=f&&L<=u)&&(e=[A,L])}return e}na.applyBackoff=Ioe;na.makeTester=function(){var e=du.ensureSingleById(od.select("body"),"svg","js-plotly-tester",function(r){r.attr(vat.svgAttrs).style({position:"absolute",left:"-10000px",top:"-10000px",width:"9000px",height:"9000px","z-index":"1"})}),t=du.ensureSingle(e,"path","js-reference-point",function(r){r.attr("d","M0,0H1V1H0Z").style({"stroke-width":0,fill:"black"})});na.tester=e,na.testref=t};na.savedBBoxes={};var zO=0,Eat=1e4;na.bBox=function(e,t,r){r||(r=moe(e));var n;if(r){if(n=na.savedBBoxes[r],n)return du.extendFlat({},n)}else if(e.childNodes.length===1){var i=e.childNodes[0];if(r=moe(i),r){var a=+i.getAttribute("x")||0,o=+i.getAttribute("y")||0,s=i.getAttribute("transform");if(!s){var l=na.bBox(i,!1,r);return a&&(l.left+=a,l.right+=a),o&&(l.top+=o,l.bottom+=o),l}if(r+="~"+a+"~"+o+"~"+s,n=na.savedBBoxes[r],n)return du.extendFlat({},n)}}var u,c;t?u=e:(c=na.tester.node(),u=e.cloneNode(!0),c.appendChild(u)),od.select(u).attr("transform",null).call(rL.positionText,0,0);var f=u.getBoundingClientRect(),h=na.testref.node().getBoundingClientRect();t||c.removeChild(u);var d={height:f.height,width:f.width,left:f.left-h.left,top:f.top-h.top,right:f.right-h.left,bottom:f.bottom-h.top};return zO>=Eat&&(na.savedBBoxes={},zO=0),r&&(na.savedBBoxes[r]=d),zO++,du.extendFlat({},d)};function moe(e){var t=e.getAttribute("data-unformatted");if(t!==null)return t+e.getAttribute("data-math")+e.getAttribute("text-anchor")+e.getAttribute("style")}na.setClipUrl=function(e,t,r){e.attr("clip-path",BO(t,r))};function BO(e,t){if(!e)return null;var r=t._context,n=r._exportedPlot?"":r._baseUrl||"";return n?"url('"+n+"#"+e+"')":"url(#"+e+")"}na.getTranslate=function(e){var t=/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||0,y:+i[1]||0}};na.setTranslate=function(e,t,r){var n=/(\btranslate\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||0,r=r||0,o=o.replace(n,"").trim(),o+=KS(t,r),o=o.trim(),e[a]("transform",o),o};na.getScale=function(e){var t=/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,r=e.attr?"attr":"getAttribute",n=e[r]("transform")||"",i=n.replace(t,function(a,o,s){return[o,s].join(" ")}).split(" ");return{x:+i[0]||1,y:+i[1]||1}};na.setScale=function(e,t,r){var n=/(\bscale\(.*?\);?)/,i=e.attr?"attr":"getAttribute",a=e.attr?"attr":"setAttribute",o=e[i]("transform")||"";return t=t||1,r=r||1,o=o.replace(n,"").trim(),o+="scale("+t+","+r+")",o=o.trim(),e[a]("transform",o),o};var kat=/\s*sc.*/;na.setPointGroupScale=function(e,t,r){if(t=t||1,r=r||1,!!e){var n=t===1&&r===1?"":"scale("+t+","+r+")";e.each(function(){var i=(this.getAttribute("transform")||"").replace(kat,"");i+=n,i=i.trim(),this.setAttribute("transform",i)})}};var Cat=/translate\([^)]*\)\s*$/;na.setTextPointsScale=function(e,t,r){e&&e.each(function(){var n,i=od.select(this),a=i.select("text");if(a.node()){var o=parseFloat(a.attr("x")||0),s=parseFloat(a.attr("y")||0),l=(i.attr("transform")||"").match(Cat);t===1&&r===1?n=[]:n=[KS(o,s),"scale("+t+","+r+")",KS(-o,-s)],l&&n.push(l),i.attr("transform",n.join(""))}})};function NO(e,t){var r;return e&&(r=e.mf),r===void 0&&(r=t.marker&&t.marker.standoff||0),!t._geo&&!t._xA?-r:r}na.getMarkerStandoff=NO;var YS=Math.atan2,bb=Math.cos,E3=Math.sin;function yoe(e,t){var r=t[0],n=t[1];return[r*bb(e)-n*E3(e),r*E3(e)+n*bb(e)]}var _oe,xoe,boe,woe,FO,qO;function UO(e,t){var r=e.ma;r===void 0&&(r=t.marker.angle,(!r||du.isArrayOrTypedArray(r))&&(r=0));var n,i,a=t.marker.angleref;if(a==="previous"||a==="north"){if(t._geo){var o=t._geo.project(e.lonlat);n=o[0],i=o[1]}else{var s=t._xA,l=t._yA;if(s&&l)n=s.c2p(e.x),i=l.c2p(e.y);else return 90}if(t._geo){var u=e.lonlat[0],c=e.lonlat[1],f=t._geo.project([u,c+1e-5]),h=t._geo.project([u+1e-5,c]),d=YS(h[1]-i,h[0]-n),v=YS(f[1]-i,f[0]-n),x;if(a==="north")x=r/180*Math.PI;else if(a==="previous"){var b=u/180*Math.PI,p=c/180*Math.PI,E=_oe/180*Math.PI,k=xoe/180*Math.PI,A=E-b,L=bb(k)*E3(A),_=E3(k)*bb(p)-bb(k)*E3(p)*bb(A);x=-YS(L,_)-Math.PI,_oe=u,xoe=c}var C=yoe(d,[bb(x),0]),M=yoe(v,[E3(x),0]);r=YS(C[1]+M[1],C[0]+M[0])/Math.PI*180,a==="previous"&&!(qO===t.uid&&e.i===FO+1)&&(r=null)}if(a==="previous"&&!t._geo)if(qO===t.uid&&e.i===FO+1&&Ab(n)&&Ab(i)){var g=n-boe,P=i-woe,T=t.line&&t.line.shape||"",F=T.slice(T.length-1);F==="h"&&(P=0),F==="v"&&(g=0),r+=YS(P,g)/Math.PI*180+90}else r=null}return boe=n,woe=i,FO=e.i,qO=t.uid,r}na.getMarkerAngle=UO});var Mb=ye((xrr,qoe)=>{"use strict";var k3=xa(),Lat=uo(),Pat=Xu(),VO=ba(),Sb=Mr(),Doe=Sb.strTranslate,iL=ao(),nL=va(),C3=Pl(),zoe=U1(),Iat=Nh().OPPOSITE_SIDE,Foe=/ [XY][0-9]* /,HO=1.6,GO=1.6;function Rat(e,t,r){var n=e._fullLayout,i=r.propContainer,a=r.propName,o=r.placeholder,s=r.traceIndex,l=r.avoid||{},u=r.attributes,c=r.transform,f=r.containerGroup,h=1,d=i.title,v=(d&&d.text?d.text:"").trim(),x=!1,b=d&&d.font?d.font:{},p=b.family,E=b.size,k=b.color,A=b.weight,L=b.style,_=b.variant,C=b.textcase,M=b.lineposition,g=b.shadow,P=r.subtitlePropName,T=!!P,F=r.subtitlePlaceholder,q=(i.title||{}).subtitle||{text:"",font:{}},V=q.text.trim(),H=!1,X=1,G=q.font,N=G.family,W=G.size,re=G.color,ae=G.weight,_e=G.style,Me=G.variant,ke=G.textcase,ge=G.lineposition,ie=G.shadow,Te;a==="title.text"?Te="titleText":a.indexOf("axis")!==-1?Te="axisTitleText":a.indexOf("colorbar"!==-1)&&(Te="colorbarTitleText");var Ee=e._context.edits[Te];function Ae(kt,Ct){return kt===void 0||Ct===void 0?!1:kt.replace(Foe," % ")===Ct.replace(Foe," % ")}v===""?h=0:Ae(v,o)&&(Ee||(v=""),h=.2,x=!0),T&&(V===""?X=0:Ae(V,F)&&(Ee||(V=""),X=.2,H=!0)),r._meta?v=Sb.templateString(v,r._meta):n._meta&&(v=Sb.templateString(v,n._meta));var ze=v||V||Ee,Ce;f||(f=Sb.ensureSingle(n._infolayer,"g","g-"+t),Ce=n._hColorbarMoveTitle);var me=f.selectAll("text."+t).data(ze?[0]:[]);me.enter().append("text"),me.text(v).attr("class",t),me.exit().remove();var Re=null,ce=t+"-subtitle",Ge=V||Ee;if(T&&Ge&&(Re=f.selectAll("text."+ce).data(Ge?[0]:[]),Re.enter().append("text"),Re.text(V).attr("class",ce),Re.exit().remove()),!ze)return f;function nt(kt,Ct){Sb.syncOrAsync([ct,qt],{title:kt,subtitle:Ct})}function ct(kt){var Ct=kt.title,Yt=kt.subtitle,xr;!c&&Ce&&(c={}),c?(xr="",c.rotate&&(xr+="rotate("+[c.rotate,u.x,u.y]+")"),(c.offset||Ce)&&(xr+=Doe(0,(c.offset||0)-(Ce||0)))):xr=null,Ct.attr("transform",xr);function er(Et){if(Et){var dt=k3.select(Et.node().parentNode).select("."+ce);if(!dt.empty()){var Ht=Et.node().getBBox();if(Ht.height){var $t=Ht.y+Ht.height+HO*W;dt.attr("y",$t)}}}}if(Ct.style("opacity",h*nL.opacity(k)).call(iL.font,{color:nL.rgb(k),size:k3.round(E,2),family:p,weight:A,style:L,variant:_,textcase:C,shadow:g,lineposition:M}).attr(u).call(C3.convertToTspans,e,er),Yt){var Ke=f.select("."+t+"-math-group"),xt=Ct.node().getBBox(),bt=Ke.node()?Ke.node().getBBox():void 0,Lt=bt?bt.y+bt.height+HO*W:xt.y+xt.height+GO*W,St=Sb.extendFlat({},u,{y:Lt});Yt.attr("transform",xr),Yt.style("opacity",X*nL.opacity(re)).call(iL.font,{color:nL.rgb(re),size:k3.round(W,2),family:N,weight:ae,style:_e,variant:Me,textcase:ke,shadow:ie,lineposition:ge}).attr(St).call(C3.convertToTspans,e)}return Pat.previousPromises(e)}function qt(kt){var Ct=kt.title,Yt=k3.select(Ct.node().parentNode);if(l&&l.selection&&l.side&&v){Yt.attr("transform",null);var xr=Iat[l.side],er=l.side==="left"||l.side==="top"?-1:1,Ke=Lat(l.pad)?l.pad:2,xt=iL.bBox(Yt.node()),bt={t:0,b:0,l:0,r:0},Lt=e._fullLayout._reservedMargin;for(var St in Lt)for(var Et in Lt[St]){var dt=Lt[St][Et];bt[Et]=Math.max(bt[Et],dt)}var Ht={left:bt.l,top:bt.t,right:n.width-bt.r,bottom:n.height-bt.b},$t=l.maxShift||er*(Ht[l.side]-xt[l.side]),fr=0;if($t<0)fr=$t;else{var _r=l.offsetLeft||0,Br=l.offsetTop||0;xt.left-=_r,xt.right-=_r,xt.top-=Br,xt.bottom-=Br,l.selection.each(function(){var Nr=iL.bBox(this);Sb.bBoxIntersect(xt,Nr,Ke)&&(fr=Math.max(fr,er*(Nr[l.side]-xt[xr])+Ke))}),fr=Math.min($t,fr),i._titleScoot=Math.abs(fr)}if(fr>0||$t<0){var Or={left:[-fr,0],right:[fr,0],top:[0,-fr],bottom:[0,fr]}[l.side];Yt.attr("transform",Doe(Or[0],Or[1]))}}}me.call(nt,Re);function rt(kt,Ct){kt.text(Ct).on("mouseover.opacity",function(){k3.select(this).transition().duration(zoe.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){k3.select(this).transition().duration(zoe.HIDE_PLACEHOLDER).style("opacity",0)})}if(Ee&&(v?me.on(".opacity",null):(rt(me,o),x=!0),me.call(C3.makeEditable,{gd:e}).on("edit",function(kt){s!==void 0?VO.call("_guiRestyle",e,a,kt,s):VO.call("_guiRelayout",e,a,kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,u.x,u.y)}),T)){if(T&&!v){var ot=me.node().getBBox(),Rt=ot.y+ot.height+GO*W;Re.attr("y",Rt)}V?Re.on(".opacity",null):(rt(Re,F),H=!0),Re.call(C3.makeEditable,{gd:e}).on("edit",function(kt){VO.call("_guiRelayout",e,"title.subtitle.text",kt)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(nt)}).on("input",function(kt){this.text(kt||" ").call(C3.positionText,Re.attr("x"),Re.attr("y"))})}return me.classed("js-placeholder",x),Re&&Re.classed("js-placeholder",H),f}qoe.exports={draw:Rat,SUBTITLE_PADDING_EM:GO,SUBTITLE_PADDING_MATHJAX_EM:HO}});var ym=ye((brr,Voe)=>{"use strict";var Dat=xa(),zat=e3().utcFormat,Nu=Mr(),Fat=Nu.numberFormat,gm=uo(),a_=Nu.cleanNumber,qat=Nu.ms2DateTime,Ooe=Nu.dateTime2ms,mm=Nu.ensureNumber,Boe=Nu.isArrayOrTypedArray,o_=es(),aL=o_.FP_SAFE,bg=o_.BADNUM,Oat=o_.LOG_CLIP,Bat=o_.ONEWEEK,oL=o_.ONEDAY,sL=o_.ONEHOUR,Noe=o_.ONEMIN,Uoe=o_.ONESEC,lL=af(),fL=ad(),uL=fL.HOUR_PATTERN,cL=fL.WEEKDAY_PATTERN;function JS(e){return Math.pow(10,e)}function jO(e){return e!=null}Voe.exports=function(t,r){r=r||{};var n=t._id||"x",i=n.charAt(0);function a(A,L){if(A>0)return Math.log(A)/Math.LN10;if(A<=0&&L&&t.range&&t.range.length===2){var _=t.range[0],C=t.range[1];return .5*(_+C-2*Oat*Math.abs(_-C))}else return bg}function o(A,L,_,C){if((C||{}).msUTC&&gm(A))return+A;var M=Ooe(A,_||t.calendar);if(M===bg)if(gm(A)){A=+A;var g=Math.floor(Nu.mod(A+.05,1)*10),P=Math.round(A-g/10);M=Ooe(new Date(P))+g/10}else return bg;return M}function s(A,L,_){return qat(A,L,_||t.calendar)}function l(A){return t._categories[Math.round(A)]}function u(A){if(jO(A)){if(t._categoriesMap===void 0&&(t._categoriesMap={}),t._categoriesMap[A]!==void 0)return t._categoriesMap[A];t._categories.push(typeof A=="number"?String(A):A);var L=t._categories.length-1;return t._categoriesMap[A]=L,L}return bg}function c(A,L){for(var _=new Array(L),C=0;Ct.range[1]&&(_=!_);for(var C=_?-1:1,M=C*A,g=0,P=0;PF)g=P+1;else{g=M<(T+F)/2?P:P+1;break}}var q=t._B[g]||0;return isFinite(q)?v(A,t._m2,q):0},p=function(A){var L=t._rangebreaks.length;if(!L)return x(A,t._m,t._b);for(var _=0,C=0;Ct._rangebreaks[C].pmax&&(_=C+1);return x(A,t._m2,t._B[_])}}t.c2l=t.type==="log"?a:mm,t.l2c=t.type==="log"?JS:mm,t.l2p=b,t.p2l=p,t.c2p=t.type==="log"?function(A,L){return b(a(A,L))}:b,t.p2c=t.type==="log"?function(A){return JS(p(A))}:p,["linear","-"].indexOf(t.type)!==-1?(t.d2r=t.r2d=t.d2c=t.r2c=t.d2l=t.r2l=a_,t.c2d=t.c2r=t.l2d=t.l2r=mm,t.d2p=t.r2p=function(A){return t.l2p(a_(A))},t.p2d=t.p2r=p,t.cleanPos=mm):t.type==="log"?(t.d2r=t.d2l=function(A,L){return a(a_(A),L)},t.r2d=t.r2c=function(A){return JS(a_(A))},t.d2c=t.r2l=a_,t.c2d=t.l2r=mm,t.c2r=a,t.l2d=JS,t.d2p=function(A,L){return t.l2p(t.d2r(A,L))},t.p2d=function(A){return JS(p(A))},t.r2p=function(A){return t.l2p(a_(A))},t.p2r=p,t.cleanPos=mm):t.type==="date"?(t.d2r=t.r2d=Nu.identity,t.d2c=t.r2c=t.d2l=t.r2l=o,t.c2d=t.c2r=t.l2d=t.l2r=s,t.d2p=t.r2p=function(A,L,_){return t.l2p(o(A,0,_))},t.p2d=t.p2r=function(A,L,_){return s(p(A),L,_)},t.cleanPos=function(A){return Nu.cleanDate(A,bg,t.calendar)}):t.type==="category"?(t.d2c=t.d2l=u,t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=d(A);return L!==void 0?L:t.fraction2r(.5)},t.l2r=t.c2r=mm,t.r2l=d,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(p(A))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(A){return typeof A=="string"&&A!==""?A:mm(A)}):t.type==="multicategory"&&(t.r2d=t.c2d=t.l2d=l,t.d2r=t.d2l_noadd=h,t.r2c=function(A){var L=h(A);return L!==void 0?L:t.fraction2r(.5)},t.r2c_just_indices=f,t.l2r=t.c2r=mm,t.r2l=h,t.d2p=function(A){return t.l2p(t.r2c(A))},t.p2d=function(A){return l(p(A))},t.r2p=t.d2p,t.p2r=p,t.cleanPos=function(A){return Array.isArray(A)||typeof A=="string"&&A!==""?A:mm(A)},t.setupMultiCategory=function(A){var L=t._traceIndices,_,C,M=t._matchGroup;if(M&&t._categories.length===0){for(var g in M)if(g!==n){var P=r[lL.id2name(g)];L=L.concat(P._traceIndices)}}var T=[[0,{}],[0,{}]],F=[];for(_=0;_P[1]&&(C[g?0:1]=_),C[0]===C[1]){var T=t.l2r(L),F=t.l2r(_);if(L!==void 0){var q=T+1;_!==void 0&&(q=Math.min(q,F)),C[g?1:0]=q}if(_!==void 0){var V=F+1;L!==void 0&&(V=Math.max(V,T)),C[g?0:1]=V}}}},t.cleanRange=function(A,L){t._cleanRange(A,L),t.limitRange(A)},t._cleanRange=function(A,L){L||(L={}),A||(A="range");var _=Nu.nestedProperty(t,A).get(),C,M;if(t.type==="date"?M=Nu.dfltRange(t.calendar):i==="y"?M=fL.DFLTRANGEY:t._name==="realaxis"?M=[0,1]:M=L.dfltRange||fL.DFLTRANGEX,M=M.slice(),(t.rangemode==="tozero"||t.rangemode==="nonnegative")&&(M[0]=0),!_||_.length!==2){Nu.nestedProperty(t,A).set(M);return}var g=_[0]===null,P=_[1]===null;for(t.type==="date"&&!t.autorange&&(_[0]=Nu.cleanDate(_[0],bg,t.calendar),_[1]=Nu.cleanDate(_[1],bg,t.calendar)),C=0;C<2;C++)if(t.type==="date"){if(!Nu.isDateTime(_[C],t.calendar)){t[A]=M;break}if(t.r2l(_[0])===t.r2l(_[1])){var T=Nu.constrain(t.r2l(_[0]),Nu.MIN_MS+1e3,Nu.MAX_MS-1e3);_[0]=t.l2r(T-1e3),_[1]=t.l2r(T+1e3);break}}else{if(!gm(_[C]))if(!(g||P)&&gm(_[1-C]))_[C]=_[1-C]*(C?10:.1);else{t[A]=M;break}if(_[C]<-aL?_[C]=-aL:_[C]>aL&&(_[C]=aL),_[0]===_[1]){var F=Math.max(1,Math.abs(_[0]*1e-6));_[0]-=F,_[1]+=F}}},t.setScale=function(A){var L=r._size;if(t.overlaying){var _=lL.getFromId({_fullLayout:r},t.overlaying);t.domain=_.domain}var C=A&&t._r?"_r":"range",M=t.calendar;t.cleanRange(C);var g=t.r2l(t[C][0],M),P=t.r2l(t[C][1],M),T=i==="y";if(T?(t._offset=L.t+(1-t.domain[1])*L.h,t._length=L.h*(t.domain[1]-t.domain[0]),t._m=t._length/(g-P),t._b=-t._m*P):(t._offset=L.l+t.domain[0]*L.w,t._length=L.w*(t.domain[1]-t.domain[0]),t._m=t._length/(P-g),t._b=-t._m*g),t._rangebreaks=[],t._lBreaks=0,t._m2=0,t._B=[],t.rangebreaks){var F,q;if(t._rangebreaks=t.locateBreaks(Math.min(g,P),Math.max(g,P)),t._rangebreaks.length){for(F=0;FP&&(V=!V),V&&t._rangebreaks.reverse();var H=V?-1:1;for(t._m2=H*t._length/(Math.abs(P-g)-t._lBreaks),t._B.push(-t._m2*(T?P:g)),F=0;FM&&(M+=7,gM&&(M+=24,g=C&&g=C&&A=ie.min&&(_eie.max&&(ie.max=Me),ke=!1)}ke&&P.push({min:_e,max:Me})}};for(_=0;_{"use strict";var Hoe=uo(),WO=Mr(),Nat=es().BADNUM,hL=WO.isArrayOrTypedArray,Uat=WO.isDateTime,Vat=WO.cleanNumber,Goe=Math.round;Woe.exports=function(t,r,n){var i=t,a=n.noMultiCategory;if(hL(i)&&!i.length)return"-";if(!a&&Zat(i))return"multicategory";if(a&&Array.isArray(i[0])){for(var o=[],s=0;sa*2}function joe(e){return Math.max(1,(e-1)/1e3)}function Wat(e,t){for(var r=e.length,n=joe(r),i=0,a=0,o={},s=0;si*2}function Zat(e){return hL(e[0])&&hL(e[1])}});var wg=ye((Trr,ese)=>{"use strict";var Xat=xa(),Koe=uo(),s_=Mr(),dL=es().FP_SAFE,Yat=ba(),Kat=ao(),Joe=af(),Jat=Joe.getFromId,$at=Joe.isLinked;ese.exports={applyAutorangeOptions:Qoe,getAutoRange:ZO,makePadFn:XO,doAutoRange:eot,findExtremes:tot,concatExtremes:JO};function ZO(e,t){var r,n,i=[],a=e._fullLayout,o=XO(a,t,0),s=XO(a,t,1),l=JO(e,t),u=l.min,c=l.max;if(u.length===0||c.length===0)return s_.simpleMap(t.range,t.r2l);var f=u[0].val,h=c[0].val;for(r=1;r0&&(P=k-o(_)-s(C),P>A?T/P>L&&(M=_,g=C,L=T/P):T/k>L&&(M={val:_.val,nopad:1},g={val:C.val,nopad:1},L=T/k));function F(G,N){return Math.max(G,s(N))}if(f===h){var q=f-1,V=f+1;if(p)if(f===0)i=[0,1];else{var H=(f>0?c:u).reduce(F,0),X=f/(1-Math.min(.5,H/k));i=f>0?[0,X]:[X,0]}else E?i=[Math.max(0,q),Math.max(1,V)]:i=[q,V]}else p?(M.val>=0&&(M={val:0,nopad:1}),g.val<=0&&(g={val:0,nopad:1})):E&&(M.val-L*o(M)<0&&(M={val:0,nopad:1}),g.val<=0&&(g={val:1,nopad:1})),L=(g.val-M.val-Zoe(t,_.val,C.val))/(k-o(M)-s(g)),i=[M.val-L*o(M),g.val+L*s(g)];return i=Qoe(i,t),t.limitRange&&t.limitRange(),v&&i.reverse(),s_.simpleMap(i,t.l2r||Number)}function Zoe(e,t,r){var n=0;if(e.rangebreaks)for(var i=e.locateBreaks(t,r),a=0;a0?r.ppadplus:r.ppadminus)||r.ppad||0),_=A((e._m>0?r.ppadminus:r.ppadplus)||r.ppad||0),C=A(r.vpadplus||r.vpad),M=A(r.vpadminus||r.vpad);if(!u){if(E=1/0,k=-1/0,l)for(f=0;f0&&(E=h),h>k&&h-dL&&(E=h),h>k&&h=T;f--)P(f);return{min:n,max:i,opts:r}}function YO(e,t,r,n){$oe(e,t,r,n,rot)}function KO(e,t,r,n){$oe(e,t,r,n,iot)}function $oe(e,t,r,n,i){for(var a=n.tozero,o=n.extrapad,s=!0,l=0;l=r&&(u.extrapad||!o)){s=!1;break}else i(t,u.val)&&u.pad<=r&&(o||!u.extrapad)&&(e.splice(l,1),l--)}if(s){var c=a&&t===0;e.push({val:t,pad:c?0:r,extrapad:c?!1:o})}}function Yoe(e){return Koe(e)&&Math.abs(e)=t}function not(e,t){var r=t.autorangeoptions;return r&&r.minallowed!==void 0&&vL(t,r.minallowed,r.maxallowed)?r.minallowed:r&&r.clipmin!==void 0&&vL(t,r.clipmin,r.clipmax)?Math.max(e,t.d2l(r.clipmin)):e}function aot(e,t){var r=t.autorangeoptions;return r&&r.maxallowed!==void 0&&vL(t,r.minallowed,r.maxallowed)?r.maxallowed:r&&r.clipmax!==void 0&&vL(t,r.clipmin,r.clipmax)?Math.min(e,t.d2l(r.clipmax)):e}function vL(e,t,r){return t!==void 0&&r!==void 0?(t=e.d2l(t),r=e.d2l(r),t=l&&(a=l,r=l),o<=l&&(o=l,n=l)}}return r=not(r,t),n=aot(n,t),[r,n]}});var Qa=ye((Arr,wse)=>{"use strict";var w0=xa(),ph=uo(),P3=Xu(),QS=ba(),Vo=Mr(),I3=Vo.strTranslate,Eb=Pl(),oot=Mb(),eM=va(),Xp=ao(),sot=Cd(),tse=bO(),Yd=es(),lot=Yd.ONEMAXYEAR,mL=Yd.ONEAVGYEAR,yL=Yd.ONEMINYEAR,uot=Yd.ONEMAXQUARTER,tB=Yd.ONEAVGQUARTER,_L=Yd.ONEMINQUARTER,cot=Yd.ONEMAXMONTH,R3=Yd.ONEAVGMONTH,xL=Yd.ONEMINMONTH,Yp=Yd.ONEWEEK,Fv=Yd.ONEDAY,l_=Fv/2,xm=Yd.ONEHOUR,tM=Yd.ONEMIN,bL=Yd.ONESEC,fot=Yd.ONEMILLI,hot=Yd.ONEMICROSEC,kb=Yd.MINUS_SIGN,AL=Yd.BADNUM,rB={K:"zeroline"},iB={K:"gridline",L:"path"},nB={K:"minor-gridline",L:"path"},hse={K:"tick",L:"path"},rse={K:"tick",L:"text"},ise={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},SL=Nh(),$S=SL.MID_SHIFT,Cb=SL.CAP_SHIFT,rM=SL.LINE_SPACING,dot=SL.OPPOSITE_SIDE,wL=3,kn=wse.exports={};kn.setConvert=ym();var vot=L3(),Ay=af(),pot=Ay.idSort,got=Ay.isLinked;kn.id2name=Ay.id2name;kn.name2id=Ay.name2id;kn.cleanId=Ay.cleanId;kn.list=Ay.list;kn.listIds=Ay.listIds;kn.getFromId=Ay.getFromId;kn.getFromTrace=Ay.getFromTrace;var dse=wg();kn.getAutoRange=dse.getAutoRange;kn.findExtremes=dse.findExtremes;var mot=1e-4;function lB(e){var t=(e[1]-e[0])*mot;return[e[0]-t,e[1]+t]}kn.coerceRef=function(e,t,r,n,i,a){var o=n.charAt(n.length-1),s=r._fullLayout._subplots[o+"axis"],l=n+"ref",u={};return i||(i=s[0]||(typeof a=="string"?a:a[0])),a||(a=i),s=s.concat(s.map(function(c){return c+" domain"})),u[l]={valType:"enumerated",values:s.concat(a?typeof a=="string"?[a]:a:[]),dflt:i},Vo.coerce(e,t,u,l)};kn.getRefType=function(e){return e===void 0?e:e==="paper"?"paper":e==="pixel"?"pixel":/( domain)$/.test(e)?"domain":"range"};kn.coercePosition=function(e,t,r,n,i,a){var o,s,l=kn.getRefType(n);if(l!=="range")o=Vo.ensureNumber,s=r(i,a);else{var u=kn.getFromId(t,n);a=u.fraction2r(a),s=r(i,a),o=u.cleanPos}e[i]=o(s)};kn.cleanPosition=function(e,t,r){var n=r==="paper"||r==="pixel"?Vo.ensureNumber:kn.getFromId(t,r).cleanPos;return n(e)};kn.redrawComponents=function(e,t){t=t||kn.listIds(e);var r=e._fullLayout;function n(i,a,o,s){for(var l=QS.getComponentMethod(i,a),u={},c=0;c2e-6||((r-e._forceTick0)/e._minDtick%1+1.000001)%1>2e-6)&&(e._minDtick=0))};kn.saveRangeInitial=function(e,t){for(var r=kn.list(e,"",!0),n=!1,i=0;if*.3||u(n)||u(i))){var h=r.dtick/2;e+=e+ho){var s=Number(r.substr(1));a.exactYears>o&&s%12===0?e=kn.tickIncrement(e,"M6","reverse")+Fv*1.5:a.exactMonths>o?e=kn.tickIncrement(e,"M1","reverse")+Fv*15.5:e-=l_;var l=kn.tickIncrement(e,r);if(l<=n)return l}return e}kn.prepMinorTicks=function(e,t,r){if(!t.minor.dtick){delete e.dtick;var n=t.dtick&&ph(t._tmin),i;if(n){var a=kn.tickIncrement(t._tmin,t.dtick,!0);i=[t._tmin,a*.99+t._tmin*.01]}else{var o=Vo.simpleMap(t.range,t.r2l);i=[o[0],.8*o[0]+.2*o[1]]}if(e.range=Vo.simpleMap(i,t.l2r),e._isMinor=!0,kn.prepTicks(e,r),n){var s=ph(t.dtick),l=ph(e.dtick),u=s?t.dtick:+t.dtick.substring(1),c=l?e.dtick:+e.dtick.substring(1);s&&l?$O(u,c)?u===2*Yp&&c===2*Fv&&(e.dtick=Yp):u===2*Yp&&c===3*Fv?e.dtick=Yp:u===Yp&&!(t._input.minor||{}).nticks?e.dtick=Fv:ose(u/c,2.5)?e.dtick=u/2:e.dtick=u:String(t.dtick).charAt(0)==="M"?l?e.dtick="M1":$O(u,c)?u>=12&&c===2&&(e.dtick="M3"):e.dtick=t.dtick:String(e.dtick).charAt(0)==="L"?String(t.dtick).charAt(0)==="L"?$O(u,c)||(e.dtick=ose(u/c,2.5)?t.dtick/2:t.dtick):e.dtick="D1":e.dtick==="D2"&&+t.dtick>1&&(e.dtick=1)}e.range=t.range}t.minor._tick0Init===void 0&&(e.tick0=t.tick0)};function $O(e,t){return Math.abs((e/t+.5)%1-.5)<.001}function ose(e,t){return Math.abs(e/t-1)<.001}kn.prepTicks=function(e,t){var r=Vo.simpleMap(e.range,e.r2l,void 0,void 0,t);if(e.tickmode==="auto"||!e.dtick){var n=e.nticks,i;n||(e.type==="category"||e.type==="multicategory"?(i=e.tickfont?Vo.bigFont(e.tickfont.size||12):15,n=e._length/i):(i=e._id.charAt(0)==="y"?40:80,n=Vo.constrain(e._length/i,4,9)+1),e._name==="radialaxis"&&(n*=2)),e.minor&&e.minor.tickmode!=="array"||e.tickmode==="array"&&(n*=100),e._roughDTick=Math.abs(r[1]-r[0])/n,kn.autoTicks(e,e._roughDTick),e._minDtick>0&&e.dtick0?(a=n-1,o=n):(a=n,o=n);var s=e[a].value,l=e[o].value,u=Math.abs(l-s),c=r||u,f=0;c>=yL?u>=yL&&u<=lot?f=u:f=mL:r===tB&&c>=_L?u>=_L&&u<=uot?f=u:f=tB:c>=xL?u>=xL&&u<=cot?f=u:f=R3:r===Yp&&c>=Yp?f=Yp:c>=Fv?f=Fv:r===l_&&c>=l_?f=l_:r===xm&&c>=xm&&(f=xm);var h;f>=u&&(f=u,h=!0);var d=i+f;if(t.rangebreaks&&f>0){for(var v=84,x=0,b=0;bYp&&(f=u)}(f>0||n===0)&&(e[n].periodX=i+f/2)}}kn.calcTicks=function(t,r){for(var n=t.type,i=t.calendar,a=t.ticklabelstep,o=t.ticklabelmode==="period",s=t.range[0]>t.range[1],l=!t.ticklabelindex||Vo.isArrayOrTypedArray(t.ticklabelindex)?t.ticklabelindex:[t.ticklabelindex],u=Vo.simpleMap(t.range,t.r2l,void 0,void 0,r),c=u[1]=(k?0:1);A--){var L=!A;A?(t._dtickInit=t.dtick,t._tick0Init=t.tick0):(t.minor._dtickInit=t.minor.dtick,t.minor._tick0Init=t.minor.tick0);var _=A?t:Vo.extendFlat({},t,t.minor);if(L?kn.prepMinorTicks(_,t,r):kn.prepTicks(_,r),_.tickmode==="array"){A?(b=[],v=sse(t,!L)):(p=[],x=sse(t,!L));continue}if(_.tickmode==="sync"){b=[],v=Tot(t);continue}var C=lB(u),M=C[0],g=C[1],P=ph(_.dtick),T=n==="log"&&!(P||_.dtick.charAt(0)==="L"),F=kn.tickFirst(_,r);if(A){if(t._tmin=F,F=g:V<=g;V=kn.tickIncrement(V,G,c,i)){if(A&&H++,_.rangebreaks&&!c){if(V=h)break}if(b.length>d||V===q)break;q=V;var N={value:V};A?(T&&V!==(V|0)&&(N.simpleLabel=!0),a>1&&H%a&&(N.skipLabel=!0),b.push(N)):(N.minor=!0,p.push(N))}}if(!p||p.length<2)l=!1;else{var W=(p[1].value-p[0].value)*(s?-1:1);Zot(W,t.tickformat)||(l=!1)}if(!l)E=b;else{var re=b.concat(p);o&&b.length&&(re=re.slice(1)),re=re.sort(function(Rt,kt){return Rt.value-kt.value}).filter(function(Rt,kt,Ct){return kt===0||Rt.value!==Ct[kt-1].value});var ae=re.map(function(Rt,kt){return Rt.minor===void 0&&!Rt.skipLabel?kt:null}).filter(function(Rt){return Rt!==null});ae.forEach(function(Rt){l.map(function(kt){var Ct=Rt+kt;Ct>=0&&Ct-1;ze--){if(b[ze].drop){b.splice(ze,1);continue}b[ze].value=eB(b[ze].value,t);var ce=t.c2p(b[ze].value);(Ce?Re>ce-me:Reh||Yth&&(Ct.periodX=h),Yti&&hmL)t/=mL,n=i(10),e.dtick="M"+12*_m(t,n,pL);else if(a>R3)t/=R3,e.dtick="M"+_m(t,1,lse);else if(a>Fv){if(e.dtick=_m(t,Fv,e._hasDayOfWeekBreaks?[1,2,7,14]:Aot),!r){var o=kn.getTickFormat(e),s=e.ticklabelmode==="period";s&&(e._rawTick0=e.tick0),/%[uVW]/.test(o)?e.tick0=Vo.dateTick0(e.calendar,2):e.tick0=Vo.dateTick0(e.calendar,1),s&&(e._dowTick0=e.tick0)}}else a>xm?e.dtick=_m(t,xm,lse):a>tM?e.dtick=_m(t,tM,use):a>bL?e.dtick=_m(t,bL,use):(n=i(10),e.dtick=_m(t,n,pL))}else if(e.type==="log"){e.tick0=0;var l=Vo.simpleMap(e.range,e.r2l);if(e._isMinor&&(t*=1.5),t>.7)e.dtick=Math.ceil(t);else if(Math.abs(l[1]-l[0])<1){var u=1.5*Math.abs((l[1]-l[0])/t);t=Math.abs(Math.pow(10,l[1])-Math.pow(10,l[0]))/u,n=i(10),e.dtick="L"+_m(t,n,pL)}else e.dtick=t>.3?"D2":"D1"}else e.type==="category"||e.type==="multicategory"?(e.tick0=0,e.dtick=Math.ceil(Math.max(t,1))):fB(e)?(e.tick0=0,n=1,e.dtick=_m(t,n,Sot)):(e.tick0=0,n=i(10),e.dtick=_m(t,n,pL));if(e.dtick===0&&(e.dtick=1),!ph(e.dtick)&&typeof e.dtick!="string"){var c=e.dtick;throw e.dtick=1,"ax.dtick error: "+String(c)}};function mse(e){var t=e.dtick;if(e._tickexponent=0,!ph(t)&&typeof t!="string"&&(t=1),(e.type==="category"||e.type==="multicategory")&&(e._tickround=null),e.type==="date"){var r=e.r2l(e.tick0),n=e.l2r(r).replace(/(^-|i)/g,""),i=n.length;if(String(t).charAt(0)==="M")i>10||n.substr(5)!=="01-01"?e._tickround="d":e._tickround=+t.substr(1)%12===0?"y":"m";else if(t>=Fv&&i<=10||t>=Fv*15)e._tickround="d";else if(t>=tM&&i<=16||t>=xm)e._tickround="M";else if(t>=bL&&i<=19||t>=tM)e._tickround="S";else{var a=e.l2r(r+t).replace(/^-/,"").length;e._tickround=Math.max(i,a)-20,e._tickround<0&&(e._tickround=4)}}else if(ph(t)||t.charAt(0)==="L"){var o=e.range.map(e.r2d||Number);ph(t)||(t=Number(t.substr(1))),e._tickround=2-Math.floor(Math.log(t)/Math.LN10+.01);var s=Math.max(Math.abs(o[0]),Math.abs(o[1])),l=Math.floor(Math.log(s)/Math.LN10+.01),u=e.minexponent===void 0?3:e.minexponent;Math.abs(l)>u&&(TL(e.exponentformat)&&!uB(l)?e._tickexponent=3*Math.round((l-1)/3):e._tickexponent=l)}else e._tickround=null}kn.tickIncrement=function(e,t,r,n){var i=r?-1:1;if(ph(t))return Vo.increment(e,i*t);var a=t.charAt(0),o=i*Number(t.substr(1));if(a==="M")return Vo.incrementMonth(e,o,n);if(a==="L")return Math.log(Math.pow(10,e)+o)/Math.LN10;if(a==="D"){var s=t==="D2"?gse:pse,l=e+i*.01,u=Vo.roundUp(Vo.mod(l,1),s,r);return Math.floor(l)+Math.log(w0.round(Math.pow(10,u),1))/Math.LN10}throw"unrecognized dtick "+String(t)};kn.tickFirst=function(e,t){var r=e.r2l||Number,n=Vo.simpleMap(e.range,r,void 0,void 0,t),i=n[1]=0&&p<=e._length?b:null};if(a&&Vo.isArrayOrTypedArray(e.ticktext)){var f=Vo.simpleMap(e.range,e.r2l),h=(Math.abs(f[1]-f[0])-(e._lBreaks||0))/1e4;for(u=0;u"+s;else{var u=nM(e),c=e._trueSide||e.side;(!u&&c==="top"||u&&c==="bottom")&&(o+="
")}t.text=o}function Eot(e,t,r,n,i){var a=e.dtick,o=t.x,s=e.tickformat,l=typeof a=="string"&&a.charAt(0);if(i==="never"&&(i=""),n&&l!=="L"&&(a="L3",l="L"),s||l==="L")t.text=iM(Math.pow(10,o),e,i,n);else if(ph(a)||l==="D"&&Vo.mod(o+.01,1)<.1){var u=Math.round(o),c=Math.abs(u),f=e.exponentformat;f==="power"||TL(f)&&uB(u)?(u===0?t.text=1:u===1?t.text="10":t.text="10"+(u>1?"":kb)+c+"",t.fontSize*=1.25):(f==="e"||f==="E")&&c>2?t.text="1"+f+(u>0?"+":kb)+c:(t.text=iM(Math.pow(10,o),e,"","fakehover"),a==="D1"&&e._id.charAt(0)==="y"&&(t.dy-=t.fontSize/6))}else if(l==="D")t.text=String(Math.round(Math.pow(10,Vo.mod(o,1)))),t.fontSize*=.75;else throw"unrecognized dtick "+String(a);if(e.dtick==="D1"){var h=String(t.text).charAt(0);(h==="0"||h==="1")&&(e._id.charAt(0)==="y"?t.dx-=t.fontSize/4:(t.dy+=t.fontSize/2,t.dx+=(e.range[1]>e.range[0]?1:-1)*t.fontSize*(o<0?.5:.25)))}}function kot(e,t){var r=e._categories[Math.round(t.x)];r===void 0&&(r=""),t.text=String(r)}function Cot(e,t,r){var n=Math.round(t.x),i=e._categories[n]||[],a=i[1]===void 0?"":String(i[1]),o=i[0]===void 0?"":String(i[0]);r?t.text=o+" - "+a:(t.text=a,t.text2=o)}function Lot(e,t,r,n,i){i==="never"?i="":e.showexponent==="all"&&Math.abs(t.x/e.dtick)<1e-6&&(i="hide"),t.text=iM(t.x,e,i,n)}function Pot(e,t,r,n,i){if(e.thetaunit==="radians"&&!r){var a=t.x/180;if(a===0)t.text="0";else{var o=Iot(a);if(o[1]>=100)t.text=iM(Vo.deg2rad(t.x),e,i,n);else{var s=t.x<0;o[1]===1?o[0]===1?t.text="\u03C0":t.text=o[0]+"\u03C0":t.text=["",o[0],"","\u2044","",o[1],"","\u03C0"].join(""),s&&(t.text=kb+t.text)}}}else t.text=iM(t.x,e,i,n)}function Iot(e){function t(s,l){return Math.abs(s-l)<=1e-6}function r(s,l){return t(l,0)?s:r(l,s%l)}function n(s){for(var l=1;!t(Math.round(s*l)/l,s);)l*=10;return l}var i=n(e),a=e*i,o=Math.abs(r(a,i));return[Math.round(a/o),Math.round(i/o)]}var Rot=["f","p","n","\u03BC","m","","k","M","G","T"];function TL(e){return e==="SI"||e==="B"}function uB(e){return e>14||e<-15}function iM(e,t,r,n){var i=e<0,a=t._tickround,o=r||t.exponentformat||"B",s=t._tickexponent,l=kn.getTickFormat(t),u=t.separatethousands;if(n){var c={exponentformat:o,minexponent:t.minexponent,dtick:t.showexponent==="none"?t.dtick:ph(e)&&Math.abs(e)||1,range:t.showexponent==="none"?t.range.map(t.r2d):[0,e||1]};mse(c),a=(Number(c._tickround)||0)+4,s=c._tickexponent,t.hoverformat&&(l=t.hoverformat)}if(l)return t._numFormat(l)(e).replace(/-/g,kb);var f=Math.pow(10,-a)/2;if(o==="none"&&(s=0),e=Math.abs(e),e"+v+"":o==="B"&&s===9?e+="B":TL(o)&&(e+=Rot[s/3+5])}return i?kb+e:e}kn.getTickFormat=function(e){var t;function r(l){return typeof l!="string"?l:Number(l.replace("M",""))*R3}function n(l,u){var c=["L","D"];if(typeof l==typeof u){if(typeof l=="number")return l-u;var f=c.indexOf(l.charAt(0)),h=c.indexOf(u.charAt(0));return f===h?Number(l.replace(/(L|D)/g,""))-Number(u.replace(/(L|D)/g,"")):f-h}else return typeof l=="number"?1:-1}function i(l,u,c){var f=c||function(v){return v},h=u[0],d=u[1];return(!h&&typeof h!="number"||f(h)<=f(l))&&(!d&&typeof d!="number"||f(d)>=f(l))}function a(l,u){var c=u[0]===null,f=u[1]===null,h=n(l,u[0])>=0,d=n(l,u[1])<=0;return(c||h)&&(f||d)}var o,s;if(e.tickformatstops&&e.tickformatstops.length>0)switch(e.type){case"date":case"linear":{for(t=0;t=0&&i.unshift(i.splice(c,1).shift())}});var s={false:{left:0,right:0}};return Vo.syncOrAsync(i.map(function(l){return function(){if(l){var u=kn.getFromId(e,l);r||(r={}),r.axShifts=s,r.overlayingShiftedAx=o;var c=kn.drawOne(e,u,r);return u._shiftPusher&&sB(u,u._fullDepth||0,s,!0),u._r=u.range.slice(),u._rl=Vo.simpleMap(u._r,u.r2l),c}}}))};kn.drawOne=function(e,t,r){r=r||{};var n=r.axShifts||{},i=r.overlayingShiftedAx||[],a,o,s;t.setScale();var l=e._fullLayout,u=t._id,c=u.charAt(0),f=kn.counterLetter(u),h=l._plots[t._mainSubplot];if(!h)return;if(t._shiftPusher=t.autoshift||i.indexOf(t._id)!==-1||i.indexOf(t.overlaying)!==-1,t._shiftPusher&t.anchor==="free"){var d=t.linewidth/2||0;t.ticks==="inside"&&(d+=t.ticklen),sB(t,d,n,!0),sB(t,t.shift||0,n,!1)}(r.skipTitle!==!0||t._shift===void 0)&&(t._shift=Wot(t,n));var v=h[c+"axislayer"],x=t._mainLinePosition,b=x+=t._shift,p=t._mainMirrorPosition,E=t._vals=kn.calcTicks(t),k=[t.mirror,b,p].join("_");for(a=0;a0?Ct.bottom-Rt:0,kt))));var Ke=0,xt=0;if(t._shiftPusher&&(Ke=Math.max(kt,Ct.height>0?rt==="l"?Rt-Ct.left:Ct.right-Rt:0),t.title.text!==l._dfltTitle[c]&&(xt=(t._titleStandoff||0)+(t._titleScoot||0),rt==="l"&&(xt+=fse(t))),t._fullDepth=Math.max(Ke,xt)),t.automargin){Yt={x:0,y:0,r:0,l:0,t:0,b:0};var bt=[0,1],Lt=typeof t._shift=="number"?t._shift:0;if(c==="x"){if(rt==="b"?Yt[rt]=t._depth:(Yt[rt]=t._depth=Math.max(Ct.width>0?Rt-Ct.top:0,kt),bt.reverse()),Ct.width>0){var St=Ct.right-(t._offset+t._length);St>0&&(Yt.xr=1,Yt.r=St);var Et=t._offset-Ct.left;Et>0&&(Yt.xl=0,Yt.l=Et)}}else if(rt==="l"?(t._depth=Math.max(Ct.height>0?Rt-Ct.left:0,kt),Yt[rt]=t._depth-Lt):(t._depth=Math.max(Ct.height>0?Ct.right-Rt:0,kt),Yt[rt]=t._depth+Lt,bt.reverse()),Ct.height>0){var dt=Ct.bottom-(t._offset+t._length);dt>0&&(Yt.yb=0,Yt.b=dt);var Ht=t._offset-Ct.top;Ht>0&&(Yt.yt=1,Yt.t=Ht)}Yt[f]=t.anchor==="free"?t.position:t._anchorAxis.domain[bt[0]],t.title.text!==l._dfltTitle[c]&&(Yt[rt]+=fse(t)+(t.title.standoff||0)),t.mirror&&t.anchor!=="free"&&(xr={x:0,y:0,r:0,l:0,t:0,b:0},xr[ot]=t.linewidth,t.mirror&&t.mirror!==!0&&(xr[ot]+=kt),t.mirror===!0||t.mirror==="ticks"?xr[f]=t._anchorAxis.domain[bt[1]]:(t.mirror==="all"||t.mirror==="allticks")&&(xr[f]=[t._counterDomainMin,t._counterDomainMax][bt[1]]))}qt&&(er=QS.getComponentMethod("rangeslider","autoMarginOpts")(e,t)),typeof t.automargin=="string"&&(cse(Yt,t.automargin),cse(xr,t.automargin)),P3.autoMargin(e,cB(t),Yt),P3.autoMargin(e,xse(t),xr),P3.autoMargin(e,bse(t),er)}),Vo.syncOrAsync(nt)}};function cse(e,t){if(e){var r=Object.keys(ise).reduce(function(n,i){return t.indexOf(i)!==-1&&ise[i].forEach(function(a){n[a]=1}),n},{});Object.keys(e).forEach(function(n){r[n]||(n.length===1?e[n]=0:delete e[n])})}}function Dot(e,t){var r=[],n,i=function(a,o){var s=a.xbnd[o];s!==null&&r.push(Vo.extendFlat({},a,{x:s}))};if(t.length){for(n=0;ne.range[1],s=e.ticklabelposition&&e.ticklabelposition.indexOf("inside")!==-1,l=!s;if(r){var u=o?-1:1;r=r*u}if(n){var c=e.side,f=s&&(c==="top"||c==="left")||l&&(c==="bottom"||c==="right")?1:-1;n=n*f}return e._id.charAt(0)==="x"?function(h){return I3(i+e._offset+e.l2p(aB(h))+r,a+n)}:function(h){return I3(a+n,i+e._offset+e.l2p(aB(h))+r)}};function aB(e){return e.periodX!==void 0?e.periodX:e.x}function Oot(e){var t=e.ticklabelposition||"",r=function(d){return t.indexOf(d)!==-1},n=r("top"),i=r("left"),a=r("right"),o=r("bottom"),s=r("inside"),l=o||i||n||a;if(!l&&!s)return[0,0];var u=e.side,c=l?(e.tickwidth||0)/2:0,f=wL,h=e.tickfont?e.tickfont.size:12;return(o||n)&&(c+=h*Cb,f+=(e.linewidth||0)/2),(i||a)&&(c+=(e.linewidth||0)/2,f+=wL),s&&u==="top"&&(f-=h*(1-Cb)),(i||n)&&(c=-c),(u==="bottom"||u==="right")&&(f=-f),[l?c:0,s?f:0]}kn.makeTickPath=function(e,t,r,n){n||(n={});var i=n.minor;if(i&&!e.minor)return"";var a=n.len!==void 0?n.len:i?e.minor.ticklen:e.ticklen,o=e._id.charAt(0),s=(e.linewidth||1)/2;return o==="x"?"M0,"+(t+s*r)+"v"+a*r:"M"+(t+s*r)+",0h"+a*r};kn.makeLabelFns=function(e,t,r){var n=e.ticklabelposition||"",i=function(F){return n.indexOf(F)!==-1},a=i("top"),o=i("left"),s=i("right"),l=i("bottom"),u=l||o||a||s,c=i("inside"),f=n==="inside"&&e.ticks==="inside"||!c&&e.ticks==="outside"&&e.tickson!=="boundaries",h=0,d=0,v=f?e.ticklen:0;if(c?v*=-1:u&&(v=0),f&&(h+=v,r)){var x=Vo.deg2rad(r);h=v*Math.cos(x)+1,d=v*Math.sin(x)}e.showticklabels&&(f||e.showline)&&(h+=.2*e.tickfont.size),h+=(e.linewidth||1)/2*(c?-1:1);var b={labelStandoff:h,labelShift:d},p,E,k,A,L=0,_=e.side,C=e._id.charAt(0),M=e.tickangle,g;if(C==="x")g=!c&&_==="bottom"||c&&_==="top",A=g?1:-1,c&&(A*=-1),p=d*A,E=t+h*A,k=g?1:-.2,Math.abs(M)===90&&(c?k+=$S:M===-90&&_==="bottom"?k=Cb:M===90&&_==="top"?k=$S:k=.5,L=$S/2*(M/90)),b.xFn=function(F){return F.dx+p+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*k},b.anchorFn=function(F,q){if(u){if(o)return"end";if(s)return"start"}return!ph(q)||q===0||q===180?"middle":q*A<0!==c?"end":"start"},b.heightFn=function(F,q,V){return q<-60||q>60?-.5*V:e.side==="top"!==c?-V:0};else if(C==="y"){if(g=!c&&_==="left"||c&&_==="right",A=g?1:-1,c&&(A*=-1),p=h,E=d*A,k=0,!c&&Math.abs(M)===90&&(M===-90&&_==="left"||M===90&&_==="right"?k=Cb:k=.5),c){var P=ph(M)?+M:0;if(P!==0){var T=Vo.deg2rad(P);L=Math.abs(Math.sin(T))*Cb*A,k=0}}b.xFn=function(F){return F.dx+t-(p+F.fontSize*k)*A+L*F.fontSize},b.yFn=function(F){return F.dy+E+F.fontSize*$S},b.anchorFn=function(F,q){return ph(q)&&Math.abs(q)===90?"middle":g?"end":"start"},b.heightFn=function(F,q,V){return e.side==="right"&&(q*=-1),q<-30?-V:q<30?-.5*V:0}}return b};function ML(e){return[e.text,e.x,e.axInfo,e.font,e.fontSize,e.fontColor].join("_")}kn.drawTicks=function(e,t,r){r=r||{};var n=t._id+"tick",i=[].concat(t.minor&&t.minor.ticks?r.vals.filter(function(o){return o.minor&&!o.noTick}):[]).concat(t.ticks?r.vals.filter(function(o){return!o.minor&&!o.noTick}):[]),a=r.layer.selectAll("path."+n).data(i,ML);a.exit().remove(),a.enter().append("path").classed(n,1).classed("ticks",1).classed("crisp",r.crisp!==!1).each(function(o){return eM.stroke(w0.select(this),o.minor?t.minor.tickcolor:t.tickcolor)}).style("stroke-width",function(o){return Xp.crispRound(e,o.minor?t.minor.tickwidth:t.tickwidth,1)+"px"}).attr("d",r.path).style("display",null),EL(t,[hse]),a.attr("transform",r.transFn)};kn.drawGrid=function(e,t,r){if(r=r||{},t.tickmode!=="sync"){var n=t._id+"grid",i=t.minor&&t.minor.showgrid,a=i?r.vals.filter(function(p){return p.minor}):[],o=t.showgrid?r.vals.filter(function(p){return!p.minor}):[],s=r.counterAxis;if(s&&kn.shouldShowZeroLine(e,t,s))for(var l=t.tickmode==="array",u=0;u=0;v--){var x=v?h:d;if(x){var b=x.selectAll("path."+n).data(v?o:a,ML);b.exit().remove(),b.enter().append("path").classed(n,1).classed("crisp",r.crisp!==!1),b.attr("transform",r.transFn).attr("d",r.path).each(function(p){return eM.stroke(w0.select(this),p.minor?t.minor.gridcolor:t.gridcolor||"#ddd")}).style("stroke-dasharray",function(p){return Xp.dashStyle(p.minor?t.minor.griddash:t.griddash,p.minor?t.minor.gridwidth:t.gridwidth)}).style("stroke-width",function(p){return(p.minor?f:t._gw)+"px"}).style("display",null),typeof r.path=="function"&&b.attr("d",r.path)}}EL(t,[iB,nB])}};kn.drawZeroLine=function(e,t,r){r=r||r;var n=t._id+"zl",i=kn.shouldShowZeroLine(e,t,r.counterAxis),a=r.layer.selectAll("path."+n).data(i?[{x:0,id:t._id}]:[]);a.exit().remove(),a.enter().append("path").classed(n,1).classed("zl",1).classed("crisp",r.crisp!==!1).each(function(){r.layer.selectAll("path").sort(function(o,s){return pot(o.id,s.id)})}),a.attr("transform",r.transFn).attr("d",r.path).call(eM.stroke,t.zerolinecolor||eM.defaultLine).style("stroke-width",Xp.crispRound(e,t.zerolinewidth,t._gw||1)+"px").style("display",null),EL(t,[rB])};kn.drawLabels=function(e,t,r){r=r||{};var n=e._fullLayout,i=t._id,a=r.cls||i+"tick",o=r.vals.filter(function(N){return N.text}),s=r.labelFns,l=r.secondary?0:t.tickangle,u=(t._prevTickAngles||{})[a],c=r.layer.selectAll("g."+a).data(t.showticklabels?o:[],ML),f=[];c.enter().append("g").classed(a,1).append("text").attr("text-anchor","middle").each(function(N){var W=w0.select(this),re=e._promises.length;W.call(Eb.positionText,s.xFn(N),s.yFn(N)).call(Xp.font,{family:N.font,size:N.fontSize,color:N.fontColor,weight:N.fontWeight,style:N.fontStyle,variant:N.fontVariant,textcase:N.fontTextcase,lineposition:N.fontLineposition,shadow:N.fontShadow}).text(N.text).call(Eb.convertToTspans,e),e._promises[re]?f.push(e._promises.pop().then(function(){h(W,l)})):h(W,l)}),EL(t,[rse]),c.exit().remove(),r.repositionOnUpdate&&c.each(function(N){w0.select(this).select("text").call(Eb.positionText,s.xFn(N),s.yFn(N))});function h(N,W){N.each(function(re){var ae=w0.select(this),_e=ae.select(".text-math-group"),Me=s.anchorFn(re,W),ke=r.transFn.call(ae.node(),re)+(ph(W)&&+W!=0?" rotate("+W+","+s.xFn(re)+","+(s.yFn(re)-re.fontSize/2)+")":""),ge=Eb.lineCount(ae),ie=rM*re.fontSize,Te=s.heightFn(re,ph(W)?+W:0,(ge-1)*ie);if(Te&&(ke+=I3(0,Te)),_e.empty()){var Ee=ae.select("text");Ee.attr({transform:ke,"text-anchor":Me}),Ee.style("opacity",1),t._adjustTickLabelsOverflow&&t._adjustTickLabelsOverflow()}else{var Ae=Xp.bBox(_e.node()).width,ze=Ae*{end:-.5,start:.5}[Me];_e.attr("transform",ke+I3(ze,0))}})}t._adjustTickLabelsOverflow=function(){var N=t.ticklabeloverflow;if(!(!N||N==="allow")){var W=N.indexOf("hide")!==-1,re=t._id.charAt(0)==="x",ae=0,_e=re?e._fullLayout.width:e._fullLayout.height;if(N.indexOf("domain")!==-1){var Me=Vo.simpleMap(t.range,t.r2l);ae=t.l2p(Me[0])+t._offset,_e=t.l2p(Me[1])+t._offset}var ke=Math.min(ae,_e),ge=Math.max(ae,_e),ie=t.side,Te=1/0,Ee=-1/0;c.each(function(me){var Re=w0.select(this),ce=Re.select(".text-math-group");if(ce.empty()){var Ge=Xp.bBox(Re.node()),nt=0;re?(Ge.right>ge||Ge.leftge||Ge.top+(t.tickangle?0:me.fontSize/4)t["_visibleLabelMin_"+Me._id]?me.style("display","none"):ge.K==="tick"&&!ke&&me.style("display",null)})})})})},h(c,u+1?u:l);function d(){return f.length&&Promise.all(f)}var v=null;function x(){if(h(c,l),o.length&&t.autotickangles&&(t.type!=="log"||String(t.dtick).charAt(0)!=="D")){v=t.autotickangles[0];var N=0,W=[],re,ae=1;c.each(function(Ct){N=Math.max(N,Ct.fontSize);var Yt=t.l2p(Ct.x),xr=oB(this),er=Xp.bBox(xr.node());ae=Math.max(ae,Eb.lineCount(xr)),W.push({top:0,bottom:10,height:10,left:Yt-er.width/2,right:Yt+er.width/2+2,width:er.width+2})});var _e=(t.tickson==="boundaries"||t.showdividers)&&!r.secondary,Me=o.length,ke=Math.abs((o[Me-1].x-o[0].x)*t._m)/(Me-1),ge=_e?ke/2:ke,ie=_e?t.ticklen:N*1.25*ae,Te=Math.sqrt(Math.pow(ge,2)+Math.pow(ie,2)),Ee=ge/Te,Ae=t.autotickangles.map(function(Ct){return Ct*Math.PI/180}),ze=Ae.find(function(Ct){return Math.abs(Math.cos(Ct))<=Ee});ze===void 0&&(ze=Ae.reduce(function(Ct,Yt){return Math.abs(Math.cos(Ct))H*V&&(T=V,M[C]=g[C]=F[C])}var X=Math.abs(T-P);X-A>0?(X-=A,A*=1+A/X):A=0,t._id.charAt(0)!=="y"&&(A=-A),M[_]=E.p2r(E.r2p(g[_])+L*A),E.autorange==="min"||E.autorange==="max reversed"?(M[0]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0):(E.autorange==="max"||E.autorange==="min reversed")&&(M[1]=null,E._rangeInitial0=void 0,E._rangeInitial1=void 0),n._insideTickLabelsUpdaterange[E._name+".range"]=M}var G=Vo.syncOrAsync(b);return G&&G.then&&e._promises.push(G),G};function Bot(e,t,r){var n=t._id+"divider",i=r.vals,a=r.layer.selectAll("path."+n).data(i,ML);a.exit().remove(),a.enter().insert("path",":first-child").classed(n,1).classed("crisp",1).call(eM.stroke,t.dividercolor).style("stroke-width",Xp.crispRound(e,t.dividerwidth,1)+"px"),a.attr("transform",r.transFn).attr("d",r.path)}kn.getPxPosition=function(e,t){var r=e._fullLayout._size,n=t._id.charAt(0),i=t.side,a;if(t.anchor!=="free"?a=t._anchorAxis:n==="x"?a={_offset:r.t+(1-(t.position||0))*r.h,_length:0}:n==="y"&&(a={_offset:r.l+(t.position||0)*r.w+t._shift,_length:0}),i==="top"||i==="left")return a._offset;if(i==="bottom"||i==="right")return a._offset+a._length};function fse(e){var t=e.title.font.size,r=(e.title.text.match(Eb.BR_TAG_ALL)||[]).length;return e.title.hasOwnProperty("standoff")?t*(Cb+r*rM):r?t*(r+1)*rM:t}function Not(e,t){var r=e._fullLayout,n=t._id,i=n.charAt(0),a=t.title.font.size,o,s=(t.title.text.match(Eb.BR_TAG_ALL)||[]).length;if(t.title.hasOwnProperty("standoff"))t.side==="bottom"||t.side==="right"?o=t._depth+t.title.standoff+a*Cb:(t.side==="top"||t.side==="left")&&(o=t._depth+t.title.standoff+a*($S+s*rM));else{var l=nM(t);if(t.type==="multicategory")o=t._depth;else{var u=1.5*a;l&&(u=.5*a,t.ticks==="outside"&&(u+=t.ticklen)),o=10+u+(t.linewidth?t.linewidth-1:0)}l||(i==="x"?o+=t.side==="top"?a*(t.showticklabels?1:0):a*(t.showticklabels?1.5:.5):o+=t.side==="right"?a*(t.showticklabels?1:.5):a*(t.showticklabels?.5:0))}var c=kn.getPxPosition(e,t),f,h,d;i==="x"?(h=t._offset+t._length/2,d=t.side==="top"?c-o:c+o):(d=t._offset+t._length/2,h=t.side==="right"?c+o:c-o,f={rotate:"-90",offset:0});var v;if(t.type!=="multicategory"){var x=t._selections[t._id+"tick"];if(v={selection:x,side:t.side},x&&x.node()&&x.node().parentNode){var b=Xp.getTranslate(x.node().parentNode);v.offsetLeft=b.x,v.offsetTop=b.y}t.title.hasOwnProperty("standoff")&&(v.pad=0)}return t._titleStandoff=o,oot.draw(e,n+"title",{propContainer:t,propName:t._name+".title.text",placeholder:r._dfltTitle[i],avoid:v,transform:f,attributes:{x:h,y:d,"text-anchor":"middle"}})}kn.shouldShowZeroLine=function(e,t,r){var n=Vo.simpleMap(t.range,t.r2l);return n[0]*n[1]<=0&&t.zeroline&&(t.type==="linear"||t.type==="-")&&!(t.rangebreaks&&t.maskBreaks(0)===AL)&&(_se(t,0)||!Uot(e,t,r,n)||Vot(e,t))};kn.clipEnds=function(e,t){return t.filter(function(r){return _se(e,r.x)})};function _se(e,t){var r=e.l2p(t);return r>1&&r1)for(i=1;i=i.min&&e=hot:/%L/.test(t)?e>=fot:/%[SX]/.test(t)?e>=bL:/%M/.test(t)?e>=tM:/%[HI]/.test(t)?e>=xm:/%p/.test(t)?e>=l_:/%[Aadejuwx]/.test(t)?e>=Fv:/%[UVW]/.test(t)?e>=Yp:/%[Bbm]/.test(t)?e>=xL:/%[q]/.test(t)?e>=_L:/%[Yy]/.test(t)?e>=yL:!0}});var hB=ye((Srr,Tse)=>{"use strict";Tse.exports=function(t,r,n){var i,a;if(n){var o=r==="reversed"||r==="min reversed"||r==="max reversed";i=n[o?1:0],a=n[o?0:1]}var s=t("autorangeoptions.minallowed",a===null?i:void 0),l=t("autorangeoptions.maxallowed",i===null?a:void 0);s===void 0&&t("autorangeoptions.clipmin"),l===void 0&&t("autorangeoptions.clipmax"),t("autorangeoptions.include")}});var dB=ye((Mrr,Ase)=>{"use strict";var Xot=hB();Ase.exports=function(t,r,n,i){var a=r._template||{},o=r.type||a.type||"-";n("minallowed"),n("maxallowed");var s=n("range");if(!s){var l;!i.noInsiderange&&o!=="log"&&(l=n("insiderange"),l&&(l[0]===null||l[1]===null)&&(r.insiderange=!1,l=void 0),l&&(s=n("range",l)))}var u=r.getAutorangeDflt(s,i),c=n("autorange",u),f;s&&(s[0]===null&&s[1]===null||(s[0]===null||s[1]===null)&&(c==="reversed"||c===!0)||s[0]!==null&&(c==="min"||c==="max reversed")||s[1]!==null&&(c==="max"||c==="min reversed"))&&(s=void 0,delete r.range,r.autorange=!0,f=!0),f||(u=r.getAutorangeDflt(s,i),c=n("autorange",u)),c&&(Xot(n,c,s),(o==="linear"||o==="-")&&n("rangemode")),r.cleanRange()}});var Mse=ye((Err,Sse)=>{var Yot={left:0,top:0};Sse.exports=Kot;function Kot(e,t,r){t=t||e.currentTarget||e.srcElement,Array.isArray(r)||(r=[0,0]);var n=e.clientX||0,i=e.clientY||0,a=Jot(t);return r[0]=n-a.left,r[1]=i-a.top,r}function Jot(e){return e===window||e===document||e===document.body?Yot:e.getBoundingClientRect()}});var kL=ye((krr,Ese)=>{"use strict";var $ot=Kq();function Qot(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){e=!0}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(r){e=!1}return e}Ese.exports=$ot&&Qot()});var Cse=ye((Crr,kse)=>{"use strict";kse.exports=function(t,r,n,i,a){var o=(t-n)/(i-n),s=o+r/(i-n),l=(o+s)/2;return a==="left"||a==="bottom"?o:a==="center"||a==="middle"?l:a==="right"||a==="top"?s:o<2/3-l?o:s>4/3-l?s:l}});var Ise=ye((Lrr,Pse)=>{"use strict";var Lse=Mr(),est=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];Pse.exports=function(t,r,n,i){return n==="left"?t=0:n==="center"?t=1:n==="right"?t=2:t=Lse.constrain(Math.floor(t*3),0,2),i==="bottom"?r=0:i==="middle"?r=1:i==="top"?r=2:r=Lse.constrain(Math.floor(r*3),0,2),est[r][t]}});var Dse=ye((Prr,Rse)=>{"use strict";var tst=g3(),rst=P6(),ist=DS().getGraphDiv,nst=IS(),vB=Rse.exports={};vB.wrapped=function(e,t,r){e=ist(e),e._fullLayout&&rst.clear(e._fullLayout._uid+nst.HOVERID),vB.raw(e,t,r)};vB.raw=function(t,r){var n=t._fullLayout,i=t._hoverdata;r||(r={}),!(r.target&&!t._dragged&&tst.triggerHandler(t,"plotly_beforehover",r)===!1)&&(n._hoverlayer.selectAll("g").remove(),n._hoverlayer.selectAll("line").remove(),n._hoverlayer.selectAll("circle").remove(),t._hoverdata=void 0,r.target&&i&&t.emit("plotly_unhover",{event:r,points:i}))}});var gv=ye((Irr,Ose)=>{"use strict";var ast=Mse(),pB=$q(),ost=kL(),sst=Mr().removeElement,lst=ad(),Lb=Ose.exports={};Lb.align=Cse();Lb.getCursor=Ise();var Fse=Dse();Lb.unhover=Fse.wrapped;Lb.unhoverRaw=Fse.raw;Lb.init=function(t){var r=t.gd,n=1,i=r._context.doubleClickDelay,a=t.element,o,s,l,u,c,f,h,d;r._mouseDownTime||(r._mouseDownTime=0),a.style.pointerEvents="all",a.onmousedown=b,ost?(a._ontouchstart&&a.removeEventListener("touchstart",a._ontouchstart),a._ontouchstart=b,a.addEventListener("touchstart",b,{passive:!1})):a.ontouchstart=b;function v(k,A,L){return Math.abs(k)i&&(n=Math.max(n-1,1)),r._dragged)t.doneFn&&t.doneFn();else{var A;f.target===h?A=f:(A={target:h,srcElement:h,toElement:h},Object.keys(f).concat(Object.keys(f.__proto__)).forEach(L=>{var _=f[L];!A[L]&&typeof _!="function"&&(A[L]=_)})),t.clickFn&&t.clickFn(n,A),d||h.dispatchEvent(new MouseEvent("click",k))}r._dragging=!1,r._dragged=!1}};function qse(){var e=document.createElement("div");e.className="dragcover";var t=e.style;return t.position="fixed",t.left=0,t.right=0,t.top=0,t.bottom=0,t.zIndex=999999999,t.background="none",document.body.appendChild(e),e}Lb.coverSlip=qse;function zse(e){return ast(e.changedTouches?e.changedTouches[0]:e,document.body)}});var Tg=ye((Rrr,Bse)=>{"use strict";Bse.exports=function(t,r){(t.attr("class")||"").split(" ").forEach(function(n){n.indexOf("cursor-")===0&&t.classed(n,!1)}),r&&t.classed("cursor-"+r,!0)}});var Vse=ye((Drr,Use)=>{"use strict";var gB=Tg(),aM="data-savedcursor",Nse="!!";Use.exports=function(t,r){var n=t.attr(aM);if(r){if(!n){for(var i=(t.attr("class")||"").split(" "),a=0;a{"use strict";var mB=Su(),ust=dh();Hse.exports={_isSubplotObj:!0,visible:{valType:"boolean",dflt:!0,editType:"legend"},bgcolor:{valType:"color",editType:"legend"},bordercolor:{valType:"color",dflt:ust.defaultLine,editType:"legend"},borderwidth:{valType:"number",min:0,dflt:0,editType:"legend"},font:mB({editType:"legend"}),grouptitlefont:mB({editType:"legend"}),orientation:{valType:"enumerated",values:["v","h"],dflt:"v",editType:"legend"},traceorder:{valType:"flaglist",flags:["reversed","grouped"],extras:["normal"],editType:"legend"},tracegroupgap:{valType:"number",min:0,dflt:10,editType:"legend"},entrywidth:{valType:"number",min:0,editType:"legend"},entrywidthmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"pixels",editType:"legend"},indentation:{valType:"number",min:-15,dflt:0,editType:"legend"},itemsizing:{valType:"enumerated",values:["trace","constant"],dflt:"trace",editType:"legend"},itemwidth:{valType:"number",min:30,dflt:30,editType:"legend"},itemclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggle",editType:"legend"},itemdoubleclick:{valType:"enumerated",values:["toggle","toggleothers",!1],dflt:"toggleothers",editType:"legend"},groupclick:{valType:"enumerated",values:["toggleitem","togglegroup"],dflt:"togglegroup",editType:"legend"},x:{valType:"number",editType:"legend"},xref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"legend"},y:{valType:"number",editType:"legend"},yref:{valType:"enumerated",dflt:"paper",values:["container","paper"],editType:"layoutstyle"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],editType:"legend"},uirevision:{valType:"any",editType:"none"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"legend"},title:{text:{valType:"string",dflt:"",editType:"legend"},font:mB({editType:"legend"}),side:{valType:"enumerated",values:["top","left","top left","top center","top right"],editType:"legend"},editType:"legend"},editType:"legend"}});var LL=ye(CL=>{"use strict";CL.isGrouped=function(t){return(t.traceorder||"").indexOf("grouped")!==-1};CL.isVertical=function(t){return t.orientation!=="h"};CL.isReversed=function(t){return(t.traceorder||"").indexOf("reversed")!==-1}});var bB=ye((qrr,Gse)=>{"use strict";var _B=ba(),Kp=Mr(),cst=Vs(),fst=vl(),hst=yB(),dst=s3(),xB=LL();function vst(e,t,r,n){var i=t[e]||{},a=cst.newContainer(r,e);function o(G,N){return Kp.coerce(i,a,hst,G,N)}var s=Kp.coerceFont(o,"font",r.font);o("bgcolor",r.paper_bgcolor),o("bordercolor");var l=o("visible");if(l){for(var u,c=function(G,N){var W=u._input,re=u;return Kp.coerce(W,re,fst,G,N)},f=r.font||{},h=Kp.coerceFont(o,"grouptitlefont",f,{overrideDflt:{size:Math.round(f.size*1.1)}}),d=0,v=!1,x="normal",b=(r.shapes||[]).filter(function(G){return G.showlegend}),p=n.concat(b).filter(function(G){return e===(G.legend||"legend")}),E=0;E(e==="legend"?1:0));if(A===!1&&(r[e]=void 0),!(A===!1&&!i.uirevision)&&(o("uirevision",r.uirevision),A!==!1)){o("borderwidth");var L=o("orientation"),_=o("yref"),C=o("xref"),M=L==="h",g=_==="paper",P=C==="paper",T,F,q,V="left";M?(T=0,_B.getComponentMethod("rangeslider","isVisible")(t.xaxis)?g?(F=1.1,q="bottom"):(F=1,q="top"):g?(F=-.1,q="top"):(F=0,q="bottom")):(F=1,q="auto",P?T=1.02:(T=1,V="right")),Kp.coerce(i,a,{x:{valType:"number",editType:"legend",min:P?-2:0,max:P?3:1,dflt:T}},"x"),Kp.coerce(i,a,{y:{valType:"number",editType:"legend",min:g?-2:0,max:g?3:1,dflt:F}},"y"),o("traceorder",x),xB.isGrouped(r[e])&&o("tracegroupgap"),o("entrywidth"),o("entrywidthmode"),o("indentation"),o("itemsizing"),o("itemwidth"),o("itemclick"),o("itemdoubleclick"),o("groupclick"),o("xanchor",V),o("yanchor",q),o("valign"),Kp.noneOrAll(i,a,["x","y"]);var H=o("title.text");if(H){o("title.side",M?"left":"top");var X=Kp.extendFlat({},s,{size:Kp.bigFont(s.size)});Kp.coerceFont(o,"title.font",X)}}}}Gse.exports=function(t,r,n){var i,a=n.slice(),o=r.shapes;if(o)for(i=0;i{"use strict";var D3=ba(),TB=Mr(),pst=TB.pushUnique,wB=!0;jse.exports=function(t,r,n){var i=r._fullLayout;if(r._dragged||r._editing)return;var a=i.legend.itemclick,o=i.legend.itemdoubleclick,s=i.legend.groupclick;n===1&&a==="toggle"&&o==="toggleothers"&&wB&&r.data&&r._context.showTips&&TB.notifier(TB._(r,"Double-click on legend to isolate one trace"),"long"),wB=!1;var l;if(n===1?l=a:n===2&&(l=o),!l)return;var u=s==="togglegroup",c=i.hiddenlabels?i.hiddenlabels.slice():[],f=t.data()[0][0];if(f.groupTitle&&f.noClick)return;var h=r._fullData,d=(i.shapes||[]).filter(function(Rt){return Rt.showlegend}),v=h.concat(d),x=f.trace;x._isShape&&(x=x._fullInput);var b=x.legendgroup,p,E,k,A,L,_,C={},M=[],g=[],P=[];function T(Rt,kt){var Ct=M.indexOf(Rt),Yt=C.visible;return Yt||(Yt=C.visible=[]),M.indexOf(Rt)===-1&&(M.push(Rt),Ct=M.length-1),Yt[Ct]=kt,Ct}var F=(i.shapes||[]).map(function(Rt){return Rt._input}),q=!1;function V(Rt,kt){F[Rt].visible=kt,q=!0}function H(Rt,kt){if(!(f.groupTitle&&!u)){var Ct=Rt._fullInput||Rt,Yt=Ct._isShape,xr=Ct.index;xr===void 0&&(xr=Ct._index);var er=Ct.visible===!1?!1:kt;Yt?V(xr,er):T(xr,er)}}var X=x.legend,G=x._fullInput,N=G&&G._isShape;if(!N&&D3.traceIs(x,"pie-like")){var W=f.label,re=c.indexOf(W);if(l==="toggle")re===-1?c.push(W):c.splice(re,1);else if(l==="toggleothers"){var ae=re!==-1,_e=[];for(p=0;p{"use strict";Zse.exports={scrollBarWidth:6,scrollBarMinHeight:20,scrollBarColor:"#808BA4",scrollBarMargin:4,scrollBarEnterAttrs:{rx:20,ry:3,width:0,height:0},titlePad:2,itemGap:5}});var Kse=ye((Nrr,Yse)=>{"use strict";var Xse=ba(),SB=LL();Yse.exports=function(t,r,n){var i=r._inHover,a=SB.isGrouped(r),o=SB.isReversed(r),s={},l=[],u=!1,c={},f=0,h=0,d,v;function x(G,N,W){if(r.visible!==!1&&!(n&&G!==r._id))if(N===""||!SB.isGrouped(r)){var re="~~i"+f;l.push(re),s[re]=[W],f++}else l.indexOf(N)===-1?(l.push(N),u=!0,s[N]=[W]):s[N].push(W)}for(d=0;dP&&(g=P)}C[d][0]._groupMinRank=g,C[d][0]._preGroupSort=d}var T=function(G,N){return G[0]._groupMinRank-N[0]._groupMinRank||G[0]._preGroupSort-N[0]._preGroupSort},F=function(G,N){return G.trace.legendrank-N.trace.legendrank||G._preSort-N._preSort};for(C.forEach(function(G,N){G[0]._preGroupSort=N}),C.sort(T),d=0;d{"use strict";var PL=Mr();function Jse(e){return e.indexOf("e")!==-1?e.replace(/[.]?0+e/,"e"):e.indexOf(".")!==-1?e.replace(/[.]?0+$/,""):e}Pb.formatPiePercent=function(t,r){var n=Jse((t*100).toPrecision(3));return PL.numSeparate(n,r)+"%"};Pb.formatPieValue=function(t,r){var n=Jse(t.toPrecision(10));return PL.numSeparate(n,r)};Pb.getFirstFilled=function(t,r){if(PL.isArrayOrTypedArray(t))for(var n=0;n{"use strict";var gst=ao(),mst=va();$se.exports=function(t,r,n,i){var a=n.marker.pattern;a&&a.shape?gst.pointStyle(t,n,i,r):mst.fill(t,r.color)}});var z3=ye((Hrr,rle)=>{"use strict";var ele=va(),tle=u_().castOption,yst=Qse();rle.exports=function(t,r,n,i){var a=n.marker.line,o=tle(a.color,r.pts)||ele.defaultLine,s=tle(a.width,r.pts)||0;t.call(yst,r,n,i).style("stroke-width",s).call(ele.stroke,o)}});var CB=ye((Grr,lle)=>{"use strict";var qv=xa(),MB=ba(),mv=Mr(),ile=mv.strTranslate,ip=ao(),T0=va(),EB=Dv().extractOpts,IL=lu(),_st=z3(),xst=u_().castOption,bst=AB(),nle=12,ale=5,Ib=2,wst=10,F3=5;lle.exports=function(t,r,n){var i=r._fullLayout;n||(n=i.legend);var a=n.itemsizing==="constant",o=n.itemwidth,s=(o+bst.itemGap*2)/2,l=ile(s,0),u=function(C,M,g,P){var T;if(C+1)T=C;else if(M&&M.width>0)T=M.width;else return 0;return a?P:Math.min(T,g)};t.each(function(C){var M=qv.select(this),g=mv.ensureSingle(M,"g","layers");g.style("opacity",C[0].trace.opacity);var P=n.indentation,T=n.valign,F=C[0].lineHeight,q=C[0].height;if(T==="middle"&&P===0||!F||!q)g.attr("transform",null);else{var V={top:1,bottom:-1}[T],H=V*(.5*(F-q+3))||0,X=n.indentation;g.attr("transform",ile(X,H))}var G=g.selectAll("g.legendfill").data([C]);G.enter().append("g").classed("legendfill",!0);var N=g.selectAll("g.legendlines").data([C]);N.enter().append("g").classed("legendlines",!0);var W=g.selectAll("g.legendsymbols").data([C]);W.enter().append("g").classed("legendsymbols",!0),W.selectAll("g.legendpoints").data([C]).enter().append("g").classed("legendpoints",!0)}).each(_).each(h).each(v).each(d).each(b).each(A).each(k).each(c).each(f).each(p).each(E);function c(C){var M=ole(C),g=M.showFill,P=M.showLine,T=M.showGradientLine,F=M.showGradientFill,q=M.anyFill,V=M.anyLine,H=C[0],X=H.trace,G,N,W=EB(X),re=W.colorscale,ae=W.reversescale,_e=function(Ae){if(Ae.size())if(g)ip.fillGroupStyle(Ae,r,!0);else{var ze="legendfill-"+X.uid;ip.gradient(Ae,r,ze,kB(ae),re,"fill")}},Me=function(Ae){if(Ae.size()){var ze="legendline-"+X.uid;ip.lineGroupStyle(Ae),ip.gradient(Ae,r,ze,kB(ae),re,"stroke")}},ke=IL.hasMarkers(X)||!q?"M5,0":V?"M5,-2":"M5,-3",ge=qv.select(this),ie=ge.select(".legendfill").selectAll("path").data(g||F?[C]:[]);if(ie.enter().append("path").classed("js-fill",!0),ie.exit().remove(),ie.attr("d",ke+"h"+o+"v6h-"+o+"z").call(_e),P||T){var Te=u(void 0,X.line,wst,ale);N=mv.minExtend(X,{line:{width:Te}}),G=[mv.minExtend(H,{trace:N})]}var Ee=ge.select(".legendlines").selectAll("path").data(P||T?[G]:[]);Ee.enter().append("path").classed("js-line",!0),Ee.exit().remove(),Ee.attr("d",ke+(T?"l"+o+",0.0001":"h"+o)).call(P?ip.lineGroupStyle:Me)}function f(C){var M=ole(C),g=M.anyFill,P=M.anyLine,T=M.showLine,F=M.showMarker,q=C[0],V=q.trace,H=!F&&!P&&!g&&IL.hasText(V),X,G;function N(ie,Te,Ee,Ae){var ze=mv.nestedProperty(V,ie).get(),Ce=mv.isArrayOrTypedArray(ze)&&Te?Te(ze):ze;if(a&&Ce&&Ae!==void 0&&(Ce=Ae),Ee){if(CeEe[1])return Ee[1]}return Ce}function W(ie){return q._distinct&&q.index&&ie[q.index]?ie[q.index]:ie[0]}if(F||H||T){var re={},ae={};if(F){re.mc=N("marker.color",W),re.mx=N("marker.symbol",W),re.mo=N("marker.opacity",mv.mean,[.2,1]),re.mlc=N("marker.line.color",W),re.mlw=N("marker.line.width",mv.mean,[0,5],Ib),ae.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var _e=N("marker.size",mv.mean,[2,16],nle);re.ms=_e,ae.marker.size=_e}T&&(ae.line={width:N("line.width",W,[0,10],ale)}),H&&(re.tx="Aa",re.tp=N("textposition",W),re.ts=10,re.tc=N("textfont.color",W),re.tf=N("textfont.family",W),re.tw=N("textfont.weight",W),re.ty=N("textfont.style",W),re.tv=N("textfont.variant",W),re.tC=N("textfont.textcase",W),re.tE=N("textfont.lineposition",W),re.tS=N("textfont.shadow",W)),X=[mv.minExtend(q,re)],G=mv.minExtend(V,ae),G.selectedpoints=null,G.texttemplate=null}var Me=qv.select(this).select("g.legendpoints"),ke=Me.selectAll("path.scatterpts").data(F?X:[]);ke.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",l),ke.exit().remove(),ke.call(ip.pointStyle,G,r),F&&(X[0].mrc=3);var ge=Me.selectAll("g.pointtext").data(H?X:[]);ge.enter().append("g").classed("pointtext",!0).append("text").attr("transform",l),ge.exit().remove(),ge.selectAll("text").call(ip.textPointStyle,G,r)}function h(C){var M=C[0].trace,g=M.type==="waterfall";if(C[0]._distinct&&g){var P=C[0].trace[C[0].dir].marker;return C[0].mc=P.color,C[0].mlw=P.line.width,C[0].mlc=P.line.color,x(C,this,"waterfall")}var T=[];M.visible&&g&&(T=C[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var F=qv.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(T);F.enter().append("path").classed("legendwaterfall",!0).attr("transform",l).style("stroke-miterlimit",1),F.exit().remove(),F.each(function(q){var V=qv.select(this),H=M[q[0]].marker,X=u(void 0,H.line,F3,Ib);V.attr("d",q[1]).style("stroke-width",X+"px").call(T0.fill,H.color),X&&V.call(T0.stroke,H.line.color)})}function d(C){x(C,this)}function v(C){x(C,this,"funnel")}function x(C,M,g){var P=C[0].trace,T=P.marker||{},F=T.line||{},q=T.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",V=g?P.visible&&P.type===g:MB.traceIs(P,"bar"),H=qv.select(M).select("g.legendpoints").selectAll("path.legend"+g).data(V?[C]:[]);H.enter().append("path").classed("legend"+g,!0).attr("d",q).attr("transform",l),H.exit().remove(),H.each(function(X){var G=qv.select(this),N=X[0],W=u(N.mlw,T.line,F3,Ib);G.style("stroke-width",W+"px");var re=N.mcc;if(!n._inHover&&"mc"in N){var ae=EB(T),_e=ae.mid;_e===void 0&&(_e=(ae.max+ae.min)/2),re=ip.tryColorscale(T,"")(_e)}var Me=re||N.mc||T.color,ke=T.pattern,ge=ke&&ip.getPatternAttr(ke.shape,0,"");if(ge){var ie=ip.getPatternAttr(ke.bgcolor,0,null),Te=ip.getPatternAttr(ke.fgcolor,0,null),Ee=ke.fgopacity,Ae=sle(ke.size,8,10),ze=sle(ke.solidity,.5,1),Ce="legend-"+P.uid;G.call(ip.pattern,"legend",r,Ce,ge,Ae,ze,re,ke.fillmode,ie,Te,Ee)}else G.call(T0.fill,Me);W&&T0.stroke(G,N.mlc||F.color)})}function b(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendbox").data(M.visible&&MB.traceIs(M,"box-violin")?[C]:[]);g.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),g.exit().remove(),g.each(function(){var P=qv.select(this);if((M.boxpoints==="all"||M.points==="all")&&T0.opacity(M.fillcolor)===0&&T0.opacity((M.line||{}).color)===0){var T=mv.minExtend(M,{marker:{size:a?nle:mv.constrain(M.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});g.call(ip.pointStyle,T,r)}else{var F=u(void 0,M.line,F3,Ib);P.style("stroke-width",F+"px").call(T0.fill,M.fillcolor),F&&T0.stroke(P,M.line.color)}})}function p(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendcandle").data(M.visible&&M.type==="candlestick"?[C,C]:[]);g.enter().append("path").classed("legendcandle",!0).attr("d",function(P,T){return T?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("stroke-width",V+"px").call(T0.fill,q.fillcolor),V&&T0.stroke(F,q.line.color)})}function E(C){var M=C[0].trace,g=qv.select(this).select("g.legendpoints").selectAll("path.legendohlc").data(M.visible&&M.type==="ohlc"?[C,C]:[]);g.enter().append("path").classed("legendohlc",!0).attr("d",function(P,T){return T?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",l).style("stroke-miterlimit",1),g.exit().remove(),g.each(function(P,T){var F=qv.select(this),q=M[T?"increasing":"decreasing"],V=u(void 0,q.line,F3,Ib);F.style("fill","none").call(ip.dashLine,q.line.dash,V),V&&T0.stroke(F,q.line.color)})}function k(C){L(C,this,"pie")}function A(C){L(C,this,"funnelarea")}function L(C,M,g){var P=C[0],T=P.trace,F=g?T.visible&&T.type===g:MB.traceIs(T,g),q=qv.select(M).select("g.legendpoints").selectAll("path.legend"+g).data(F?[C]:[]);if(q.enter().append("path").classed("legend"+g,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",l),q.exit().remove(),q.size()){var V=T.marker||{},H=u(xst(V.line.width,P.pts),V.line,F3,Ib),X="pieLike",G=mv.minExtend(T,{marker:{line:{width:H}}},X),N=mv.minExtend(P,{trace:G},X);_st(q,N,G,r)}}function _(C){var M=C[0].trace,g,P=[];if(M.visible)switch(M.type){case"histogram2d":case"heatmap":P=[["M-15,-2V4H15V-2Z"]],g=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":P=[["M-6,-6V6H6V-6Z"]],g=!0;break;case"densitymapbox":case"densitymap":P=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],g="radial";break;case"cone":P=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],g=!1;break;case"streamtube":P=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],g=!1;break;case"surface":P=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],g=!0;break;case"mesh3d":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!1;break;case"volume":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],g=!0;break;case"isosurface":P=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],g=!1;break}var T=qv.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(P);T.enter().append("path").classed("legend3dandfriends",!0).attr("transform",l).style("stroke-miterlimit",1),T.exit().remove(),T.each(function(F,q){var V=qv.select(this),H=EB(M),X=H.colorscale,G=H.reversescale,N=function(_e){if(_e.size()){var Me="legendfill-"+M.uid;ip.gradient(_e,r,Me,kB(G,g==="radial"),X,"fill")}},W;if(X){if(!g){var ae=X.length;W=q===0?X[G?ae-1:0][1]:q===1?X[G?0:ae-1][1]:X[Math.floor((ae-1)/2)][1]}}else{var re=M.vertexcolor||M.facecolor||M.color;W=mv.isArrayOrTypedArray(re)?re[q]||re[0]:re}V.attr("d",F[0]),W?V.call(T0.fill,W):V.call(N)})}};function kB(e,t){var r=t?"radial":"horizontal";return r+(e?"":"reversed")}function ole(e){var t=e[0].trace,r=t.contours,n=IL.hasLines(t),i=IL.hasMarkers(t),a=t.visible&&t.fill&&t.fill!=="none",o=!1,s=!1;if(r){var l=r.coloring;l==="lines"?o=!0:n=l==="none"||l==="heatmap"||r.showlines,r.type==="constraint"?a=r._operation!=="=":(l==="fill"||l==="heatmap")&&(s=!0)}return{showMarker:i,showLine:n,showFill:a,showGradientLine:o,showGradientFill:s,anyLine:n||o,anyFill:a||s}}function sle(e,t,r){return e&&mv.isArrayOrTypedArray(e)?t:e>r?r:e}});var RB=ye((jrr,yle)=>{"use strict";var Sp=xa(),gh=Mr(),PB=Xu(),B3=ba(),ule=g3(),LB=gv(),mh=ao(),DL=va(),Rb=Pl(),cle=Wse(),Vh=AB(),IB=Nh(),gle=IB.LINE_SPACING,O3=IB.FROM_TL,fle=IB.FROM_BR,hle=Kse(),Tst=CB(),dle=LL(),q3=1,Ast=/^legend[0-9]*$/;yle.exports=function(t,r){if(r)vle(t,r);else{var n=t._fullLayout,i=n._legends,a=n._infolayer.selectAll('[class^="legend"]');a.each(function(){var u=Sp.select(this),c=u.attr("class"),f=c.split(" ")[0];f.match(Ast)&&i.indexOf(f)===-1&&u.remove()});for(var o=0;o1)}var v=n.hiddenlabels||[];if(!s&&(!n.showlegend||!l.length))return o.selectAll("."+i).remove(),n._topdefs.select("#"+a).remove(),PB.autoMargin(e,i);var x=gh.ensureSingle(o,"g",i,function(M){s||M.attr("pointer-events","all")}),b=gh.ensureSingleById(n._topdefs,"clipPath",a,function(M){M.append("rect")}),p=gh.ensureSingle(x,"rect","bg",function(M){M.attr("shape-rendering","crispEdges")});p.call(DL.stroke,r.bordercolor).call(DL.fill,r.bgcolor).style("stroke-width",r.borderwidth+"px");var E=gh.ensureSingle(x,"g","scrollbox"),k=r.title;r._titleWidth=0,r._titleHeight=0;var A;k.text?(A=gh.ensureSingle(E,"text",i+"titletext"),A.attr("text-anchor","start").call(mh.font,k.font).text(k.text),zL(A,E,e,r,q3)):E.selectAll("."+i+"titletext").remove();var L=gh.ensureSingle(x,"rect","scrollbar",function(M){M.attr(Vh.scrollBarEnterAttrs).call(DL.fill,Vh.scrollBarColor)}),_=E.selectAll("g.groups").data(l);_.enter().append("g").attr("class","groups"),_.exit().remove();var C=_.selectAll("g.traces").data(gh.identity);C.enter().append("g").attr("class","traces"),C.exit().remove(),C.style("opacity",function(M){var g=M[0].trace;return B3.traceIs(g,"pie-like")?v.indexOf(M[0].label)!==-1?.5:1:g.visible==="legendonly"?.5:1}).each(function(){Sp.select(this).call(Mst,e,r)}).call(Tst,e,r).each(function(){s||Sp.select(this).call(Est,e,i)}),gh.syncOrAsync([PB.previousPromises,function(){return Lst(e,_,C,r)},function(){var M=n._size,g=r.borderwidth,P=r.xref==="paper",T=r.yref==="paper";if(k.text&&Sst(A,r,g),!s){var F,q;P?F=M.l+M.w*r.x-O3[FL(r)]*r._width:F=n.width*r.x-O3[FL(r)]*r._width,T?q=M.t+M.h*(1-r.y)-O3[qL(r)]*r._effHeight:q=n.height*(1-r.y)-O3[qL(r)]*r._effHeight;var V=Pst(e,i,F,q);if(V)return;if(n.margin.autoexpand){var H=F,X=q;F=P?gh.constrain(F,0,n.width-r._width):H,q=T?gh.constrain(q,0,n.height-r._effHeight):X,F!==H&&gh.log("Constrain "+i+".x to make legend fit inside graph"),q!==X&&gh.log("Constrain "+i+".y to make legend fit inside graph")}mh.setTranslate(x,F,q)}if(L.on(".drag",null),x.on("wheel",null),s||r._height<=r._maxHeight||e._context.staticPlot){var G=r._effHeight;s&&(G=r._height),p.attr({width:r._width-g,height:G-g,x:g/2,y:g/2}),mh.setTranslate(E,0,0),b.select("rect").attr({width:r._width-2*g,height:G-2*g,x:g,y:g}),mh.setClipUrl(E,a,e),mh.setRect(L,0,0,0,0),delete r._scrollY}else{var N=Math.max(Vh.scrollBarMinHeight,r._effHeight*r._effHeight/r._height),W=r._effHeight-N-2*Vh.scrollBarMargin,re=r._height-r._effHeight,ae=W/re,_e=Math.min(r._scrollY||0,re);p.attr({width:r._width-2*g+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-g,x:g/2,y:g/2}),b.select("rect").attr({width:r._width-2*g+Vh.scrollBarWidth+Vh.scrollBarMargin,height:r._effHeight-2*g,x:g,y:g+_e}),mh.setClipUrl(E,a,e),ze(_e,N,ae),x.on("wheel",function(){_e=gh.constrain(r._scrollY+Sp.event.deltaY/W*re,0,re),ze(_e,N,ae),_e!==0&&_e!==re&&Sp.event.preventDefault()});var Me,ke,ge,ie=function(Ge,nt,ct){var qt=(ct-nt)/ae+Ge;return gh.constrain(qt,0,re)},Te=function(Ge,nt,ct){var qt=(nt-ct)/ae+Ge;return gh.constrain(qt,0,re)},Ee=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"?Me=Ge.changedTouches[0].clientY:Me=Ge.clientY,ge=_e}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.buttons===2||Ge.ctrlKey||(Ge.type==="touchmove"?ke=Ge.changedTouches[0].clientY:ke=Ge.clientY,_e=ie(ge,Me,ke),ze(_e,N,ae))});L.call(Ee);var Ae=Sp.behavior.drag().on("dragstart",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchstart"&&(Me=Ge.changedTouches[0].clientY,ge=_e)}).on("drag",function(){var Ge=Sp.event.sourceEvent;Ge.type==="touchmove"&&(ke=Ge.changedTouches[0].clientY,_e=Te(ge,Me,ke),ze(_e,N,ae))});E.call(Ae)}function ze(Ge,nt,ct){r._scrollY=e._fullLayout[i]._scrollY=Ge,mh.setTranslate(E,0,-Ge),mh.setRect(L,r._width,Vh.scrollBarMargin+Ge*ct,Vh.scrollBarWidth,nt),b.select("rect").attr("y",g+Ge)}if(e._context.edits.legendPosition){var Ce,me,Re,ce;x.classed("cursor-move",!0),LB.init({element:x.node(),gd:e,prepFn:function(Ge){if(Ge.target!==L.node()){var nt=mh.getTranslate(x);Re=nt.x,ce=nt.y}},moveFn:function(Ge,nt){if(Re!==void 0&&ce!==void 0){var ct=Re+Ge,qt=ce+nt;mh.setTranslate(x,ct,qt),Ce=LB.align(ct,r._width,M.l,M.l+M.w,r.xanchor),me=LB.align(qt+r._height,-r._height,M.t+M.h,M.t,r.yanchor)}},doneFn:function(){if(Ce!==void 0&&me!==void 0){var Ge={};Ge[i+".x"]=Ce,Ge[i+".y"]=me,B3.call("_guiRelayout",e,Ge)}},clickFn:function(Ge,nt){var ct=o.selectAll("g.traces").filter(function(){var qt=this.getBoundingClientRect();return nt.clientX>=qt.left&&nt.clientX<=qt.right&&nt.clientY>=qt.top&&nt.clientY<=qt.bottom});ct.size()>0&&mle(e,x,ct,Ge,nt)}})}}],e)}}function RL(e,t,r){var n=e[0],i=n.width,a=t.entrywidthmode,o=n.trace.legendwidth||t.entrywidth;return a==="fraction"?t._maxWidth*o:r+(o||i)}function mle(e,t,r,n,i){var a=r.data()[0][0].trace,o={event:i,node:r.node(),curveNumber:a.index,expandedIndex:a.index,data:e.data,layout:e.layout,frames:e._transitionData._frames,config:e._context,fullData:e._fullData,fullLayout:e._fullLayout};a._group&&(o.group=a._group),B3.traceIs(a,"pie-like")&&(o.label=r.datum()[0].label);var s=ule.triggerHandler(e,"plotly_legendclick",o);if(n===1){if(s===!1)return;t._clickTimeout=setTimeout(function(){e._fullLayout&&cle(r,e,n)},e._context.doubleClickDelay)}else if(n===2){t._clickTimeout&&clearTimeout(t._clickTimeout),e._legendMouseDownTime=0;var l=ule.triggerHandler(e,"plotly_legenddoubleclick",o);l!==!1&&s!==!1&&cle(r,e,n)}}function Mst(e,t,r){var n=OL(r),i=e.data()[0][0],a=i.trace,o=B3.traceIs(a,"pie-like"),s=!r._inHover&&t._context.edits.legendText&&!o,l=r._maxNameLength,u,c;i.groupTitle?(u=i.groupTitle.text,c=i.groupTitle.font):(c=r.font,r.entries?u=i.text:(u=o?i.label:a.name,a._meta&&(u=gh.templateString(u,a._meta))));var f=gh.ensureSingle(e,"text",n+"text");f.attr("text-anchor","start").call(mh.font,c).text(s?ple(u,l):u);var h=r.indentation+r.itemwidth+Vh.itemGap*2;Rb.positionText(f,h,0),s?f.call(Rb.makeEditable,{gd:t,text:u}).call(zL,e,t,r).on("edit",function(d){this.text(ple(d,l)).call(zL,e,t,r);var v=i.trace._fullInput||{},x={};return x.name=d,v._isShape?B3.call("_guiRelayout",t,"shapes["+a.index+"].name",x.name):B3.call("_guiRestyle",t,x,a.index)}):zL(f,e,t,r)}function ple(e,t){var r=Math.max(4,t);if(e&&e.trim().length>=r/2)return e;e=e||"";for(var n=r-e.length;n>0;n--)e+=" ";return e}function Est(e,t,r){var n=t._context.doubleClickDelay,i,a=1,o=gh.ensureSingle(e,"rect",r+"toggle",function(s){t._context.staticPlot||s.style("cursor","pointer").attr("pointer-events","all"),s.call(DL.fill,"rgba(0,0,0,0)")});t._context.staticPlot||(o.on("mousedown",function(){i=new Date().getTime(),i-t._legendMouseDownTimen&&(a=Math.max(a-1,1)),mle(t,s,e,a,Sp.event)}}))}function zL(e,t,r,n,i){n._inHover&&e.attr("data-notex",!0),Rb.convertToTspans(e,r,function(){kst(t,r,n,i)})}function kst(e,t,r,n){var i=e.data()[0][0];if(!r._inHover&&i&&!i.trace.showlegend){e.remove();return}var a=e.select("g[class*=math-group]"),o=a.node(),s=OL(r);r||(r=t._fullLayout[s]);var l=r.borderwidth,u;n===q3?u=r.title.font:i.groupTitle?u=i.groupTitle.font:u=r.font;var c=u.size*gle,f,h;if(o){var d=mh.bBox(o);f=d.height,h=d.width,n===q3?mh.setTranslate(a,l,l+f*.75):mh.setTranslate(a,0,f*.25)}else{var v="."+s+(n===q3?"title":"")+"text",x=e.select(v),b=Rb.lineCount(x),p=x.node();if(f=c*b,h=p?mh.bBox(p).width:0,n===q3)r.title.side==="left"&&(h+=Vh.itemGap*2),Rb.positionText(x,l+Vh.titlePad,l+c);else{var E=Vh.itemGap*2+r.indentation+r.itemwidth;i.groupTitle&&(E=Vh.itemGap,h-=r.indentation+r.itemwidth),Rb.positionText(x,E,-c*((b-1)/2-.3))}}n===q3?(r._titleWidth=h,r._titleHeight=f):(i.lineHeight=c,i.height=Math.max(f,16)+3,i.width=h)}function Cst(e){var t=0,r=0,n=e.title.side;return n&&(n.indexOf("left")!==-1&&(t=e._titleWidth),n.indexOf("top")!==-1&&(r=e._titleHeight)),[t,r]}function Lst(e,t,r,n){var i=e._fullLayout,a=OL(n);n||(n=i[a]);var o=i._size,s=dle.isVertical(n),l=dle.isGrouped(n),u=n.entrywidthmode==="fraction",c=n.borderwidth,f=2*c,h=Vh.itemGap,d=n.indentation+n.itemwidth+h*2,v=2*(c+h),x=qL(n),b=n.y<0||n.y===0&&x==="top",p=n.y>1||n.y===1&&x==="bottom",E=n.tracegroupgap,k={};n._maxHeight=Math.max(b||p?i.height/2:o.h,30);var A=0;n._width=0,n._height=0;var L=Cst(n);if(s)r.each(function(ge){var ie=ge[0].height;mh.setTranslate(this,c+L[0],c+L[1]+n._height+ie/2+h),n._height+=ie,n._width=Math.max(n._width,ge[0].width)}),A=d+n._width,n._width+=h+d+f,n._height+=v,l&&(t.each(function(ge,ie){mh.setTranslate(this,0,ie*n.tracegroupgap)}),n._height+=(n._lgroupsLength-1)*n.tracegroupgap);else{var _=FL(n),C=n.x<0||n.x===0&&_==="right",M=n.x>1||n.x===1&&_==="left",g=p||b,P=i.width/2;n._maxWidth=Math.max(C?g&&_==="left"?o.l+o.w:P:M?g&&_==="right"?o.r+o.w:P:o.w,2*d);var T=0,F=0;r.each(function(ge){var ie=RL(ge,n,d);T=Math.max(T,ie),F+=ie}),A=null;var q=0;if(l){var V=0,H=0,X=0;t.each(function(){var ge=0,ie=0;Sp.select(this).selectAll("g.traces").each(function(Ee){var Ae=RL(Ee,n,d),ze=Ee[0].height;mh.setTranslate(this,L[0],L[1]+c+h+ze/2+ie),ie+=ze,ge=Math.max(ge,Ae),k[Ee[0].trace.legendgroup]=ge});var Te=ge+h;H>0&&Te+c+H>n._maxWidth?(q=Math.max(q,H),H=0,X+=V+E,V=ie):V=Math.max(V,ie),mh.setTranslate(this,H,X),H+=Te}),n._width=Math.max(q,H)+c,n._height=X+V+v}else{var G=r.size(),N=F+f+(G-1)*h=n._maxWidth&&(q=Math.max(q,_e),re=0,ae+=W,n._height+=W,W=0),mh.setTranslate(this,L[0]+c+re,L[1]+c+ae+ie/2+h),_e=re+Te+h,re+=Ee,W=Math.max(W,ie)}),N?(n._width=re+f,n._height=W+v):(n._width=Math.max(q,_e)+f,n._height+=W+v)}}n._width=Math.ceil(Math.max(n._width+L[0],n._titleWidth+2*(c+Vh.titlePad))),n._height=Math.ceil(Math.max(n._height+L[1],n._titleHeight+2*(c+Vh.itemGap))),n._effHeight=Math.min(n._height,n._maxHeight);var Me=e._context.edits,ke=Me.legendText||Me.legendPosition;r.each(function(ge){var ie=Sp.select(this).select("."+a+"toggle"),Te=ge[0].height,Ee=ge[0].trace.legendgroup,Ae=RL(ge,n,d);l&&Ee!==""&&(Ae=k[Ee]);var ze=ke?d:A||Ae;!s&&!u&&(ze+=h/2),mh.setRect(ie,0,-Te/2,ze,Te)})}function Pst(e,t,r,n){var i=e._fullLayout,a=i[t],o=FL(a),s=qL(a),l=a.xref==="paper",u=a.yref==="paper";e._fullLayout._reservedMargin[t]={};var c=a.y<.5?"b":"t",f=a.x<.5?"l":"r",h={r:i.width-r,l:r+a._width,b:i.height-n,t:n+a._effHeight};if(l&&u)return PB.autoMargin(e,t,{x:a.x,y:a.y,l:a._width*O3[o],r:a._width*fle[o],b:a._effHeight*fle[s],t:a._effHeight*O3[s]});l?e._fullLayout._reservedMargin[t][c]=h[c]:u||a.orientation==="v"?e._fullLayout._reservedMargin[t][f]=h[f]:e._fullLayout._reservedMargin[t][c]=h[c]}function FL(e){return gh.isRightAnchor(e)?"right":gh.isCenterAnchor(e)?"center":"left"}function qL(e){return gh.isBottomAnchor(e)?"bottom":gh.isMiddleAnchor(e)?"middle":"top"}function OL(e){return e._id||"legend"}});var qB=ye(FB=>{"use strict";var Db=xa(),Sy=uo(),_le=id(),Rf=Mr(),Ist=Rf.pushUnique,DB=Rf.strTranslate,Rst=Rf.strRotate,Dst=g3(),A0=Pl(),zst=Vse(),bm=ao(),sd=va(),BL=gv(),wm=Qa(),Fst=ad().zindexSeparator,U3=ba(),Ag=rp(),zb=IS(),qst=bB(),Ost=RB(),Ele=zb.YANGLE,zB=Math.PI*Ele/180,Bst=1/Math.sin(zB),Nst=Math.cos(zB),Ust=Math.sin(zB),Bc=zb.HOVERARROWSIZE,Us=zb.HOVERTEXTPAD,xle={box:!0,ohlc:!0,violin:!0,candlestick:!0},Vst={scatter:!0,scattergl:!0,splom:!0};function ble(e,t){return e.distance-t.distance}FB.hover=function(t,r,n,i){t=Rf.getGraphDiv(t);var a=r.target;Rf.throttle(t._fullLayout._uid+zb.HOVERID,zb.HOVERMINTIME,function(){Hst(t,r,n,i,a)})};FB.loneHover=function(t,r){var n=!0;Array.isArray(t)||(n=!1,t=[t]);var i=r.gd,a=Ile(i),o=Rle(i),s=t.map(function(b){var p=b._x0||b.x0||b.x||0,E=b._x1||b.x1||b.x||0,k=b._y0||b.y0||b.y||0,A=b._y1||b.y1||b.y||0,L=b.eventData;if(L){var _=Math.min(p,E),C=Math.max(p,E),M=Math.min(k,A),g=Math.max(k,A),P=b.trace;if(U3.traceIs(P,"gl3d")){var T=i._fullLayout[P.scene]._scene.container,F=T.offsetLeft,q=T.offsetTop;_+=F,C+=F,M+=q,g+=q}L.bbox={x0:_+o,x1:C+o,y0:M+a,y1:g+a},r.inOut_bbox&&r.inOut_bbox.push(L.bbox)}else L=!1;return{color:b.color||sd.defaultLine,x0:b.x0||b.x||0,x1:b.x1||b.x||0,y0:b.y0||b.y||0,y1:b.y1||b.y||0,xLabel:b.xLabel,yLabel:b.yLabel,zLabel:b.zLabel,text:b.text,name:b.name,idealAlign:b.idealAlign,borderColor:b.borderColor,fontFamily:b.fontFamily,fontSize:b.fontSize,fontColor:b.fontColor,fontWeight:b.fontWeight,fontStyle:b.fontStyle,fontVariant:b.fontVariant,nameLength:b.nameLength,textAlign:b.textAlign,trace:b.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:b.hovertemplate||!1,hovertemplateLabels:b.hovertemplateLabels||!1,eventData:L}}),l=!1,u=Cle(s,{gd:i,hovermode:"closest",rotateLabels:l,bgColor:r.bgColor||sd.background,container:Db.select(r.container),outerContainer:r.outerContainer||r.container}),c=u.hoverLabels,f=5,h=0,d=0;c.sort(function(b,p){return b.y0-p.y0}).each(function(b,p){var E=b.y0-b.by/2;E-fC[0]._length||ce<0||ce>M[0]._length)return BL.unhoverRaw(e,t)}if(t.pointerX=Re+C[0]._offset,t.pointerY=ce+M[0]._offset,"xval"in t?X=Ag.flat(a,t.xval):X=Ag.p2c(C,Re),"yval"in t?G=Ag.flat(a,t.yval):G=Ag.p2c(M,ce),!Sy(X[0])||!Sy(G[0]))return Rf.warn("Fx.hover failed",t,e),BL.unhoverRaw(e,t)}var ct=1/0;function qt(Ni,_n){for(W=0;WEe&&(V.splice(0,Ee),ct=V[0].distance),f&&q!==0&&V.length===0){Te.distance=q,Te.index=!1;var ft=ae._module.hoverPoints(Te,ge,ie,"closest",{hoverLayer:s._hoverlayer});if(ft&&(ft=ft.filter(function(Vr){return Vr.spikeDistance<=q})),ft&&ft.length){var jt,Zt=ft.filter(function(Vr){return Vr.xa.showspikes&&Vr.xa.spikesnap!=="hovered data"});if(Zt.length){var yr=Zt[0];Sy(yr.x0)&&Sy(yr.y0)&&(jt=ot(yr),(!Ae.vLinePoint||Ae.vLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.vLinePoint=jt))}var Fr=ft.filter(function(Vr){return Vr.ya.showspikes&&Vr.ya.spikesnap!=="hovered data"});if(Fr.length){var Zr=Fr[0];Sy(Zr.x0)&&Sy(Zr.y0)&&(jt=ot(Zr),(!Ae.hLinePoint||Ae.hLinePoint.spikeDistance>jt.spikeDistance)&&(Ae.hLinePoint=jt))}}}}}qt();function rt(Ni,_n,$i){for(var zn=null,Wn=1/0,It,ft=0;ft0&&Math.abs(Ni.distance)dt-1;Nr--)Or(V[Nr]);V=fr,Yt()}var ut=e._hoverdata,Ne=[],Ye=Ile(e),Ve=Rle(e);for(N=0;N1||V.length>1)||h==="closest"&&ze&&V.length>1,ri=sd.combine(s.plot_bgcolor||sd.background,s.paper_bgcolor),bi=Cle(V,{gd:e,hovermode:h,rotateLabels:jr,bgColor:ri,container:s._hoverlayer,outerContainer:s._paper.node(),commonLabelOpts:s.hoverlabel,hoverdistance:s.hoverdistance}),nn=bi.hoverLabels;if(Ag.isUnifiedHover(h)||(jst(nn,jr,s,bi.commonLabelBoundingBox),Ple(nn,jr,s._invScaleX,s._invScaleY)),i&&i.tagName){var Wi=U3.getComponentMethod("annotations","hasClickToShow")(e,Ne);zst(Db.select(i),Wi?"pointer":"")}!i||n||!Xst(e,t,ut)||(ut&&e.emit("plotly_unhover",{event:t,points:ut}),e.emit("plotly_hover",{event:t,points:e._hoverdata,xaxes:C,yaxes:M,xvals:X,yvals:G}))}function kle(e){return[e.trace.index,e.index,e.x0,e.y0,e.name,e.attr,e.xa?e.xa._id:"",e.ya?e.ya._id:""].join(",")}var Gst=/([\s\S]*)<\/extra>/;function Cle(e,t){var r=t.gd,n=r._fullLayout,i=t.hovermode,a=t.rotateLabels,o=t.bgColor,s=t.container,l=t.outerContainer,u=t.commonLabelOpts||{};if(e.length===0)return[[]];var c=t.fontFamily||zb.HOVERFONT,f=t.fontSize||zb.HOVERFONTSIZE,h=t.fontWeight||n.font.weight,d=t.fontStyle||n.font.style,v=t.fontVariant||n.font.variant,x=t.fontTextcase||n.font.textcase,b=t.fontLineposition||n.font.lineposition,p=t.fontShadow||n.font.shadow,E=e[0],k=E.xa,A=E.ya,L=i.charAt(0),_=L+"Label",C=E[_];if(C===void 0&&k.type==="multicategory")for(var M=0;Mn.width-ut&&(Ne=n.width-ut),Lt.attr("d","M"+(Br-Ne)+",0L"+(Br-Ne+Bc)+","+Nr+Bc+"H"+ut+"v"+Nr+(Us*2+_r.height)+"H"+-ut+"V"+Nr+Bc+"H"+(Br-Ne-Bc)+"Z"),Br=Ne,W.minX=Br-ut,W.maxX=Br+ut,k.side==="top"?(W.minY=Or-(Us*2+_r.height),W.maxY=Or-Us):(W.minY=Or+Us,W.maxY=Or+(Us*2+_r.height))}else{var Ye,Ve,Xe;A.side==="right"?(Ye="start",Ve=1,Xe="",Br=k._offset+k._length):(Ye="end",Ve=-1,Xe="-",Br=k._offset),Or=A._offset+(E.y0+E.y1)/2,St.attr("text-anchor",Ye),Lt.attr("d","M0,0L"+Xe+Bc+","+Bc+"V"+(Us+_r.height/2)+"h"+Xe+(Us*2+_r.width)+"V-"+(Us+_r.height/2)+"H"+Xe+Bc+"V-"+Bc+"Z"),W.minY=Or-(Us+_r.height/2),W.maxY=Or+(Us+_r.height/2),A.side==="right"?(W.minX=Br+Bc,W.maxX=Br+Bc+(Us*2+_r.width)):(W.minX=Br-Bc-(Us*2+_r.width),W.maxX=Br-Bc);var ht=_r.height/2,Le=P-_r.top-ht,xe="clip"+n._uid+"commonlabel"+A._id,Se;if(Br<_r.width+2*Us+Bc){Se="M-"+(Bc+Us)+"-"+ht+"h-"+(_r.width-Us)+"V"+ht+"h"+(_r.width-Us)+"Z";var lt=_r.width-Br+Us;A0.positionText(St,lt,Le),Ye==="end"&&St.selectAll("tspan").each(function(){var Vt=Db.select(this),ar=bm.tester.append("text").text(Vt.text()).call(bm.font,fr),Qr=N3(r,ar.node());Math.round(Qr.width)=0?er=kt:Ct+ce=0?er=Ct:Yt+ce=0?Ke=ot:Rt+Ge=0?Ke=Rt:xr+Ge=0,(bt.idealAlign==="top"||!Vt)&&ar?(Xe-=Le/2,bt.anchor="end"):Vt?(Xe+=Le/2,bt.anchor="start"):bt.anchor="middle",bt.crossPos=Xe;else{if(bt.pos=Xe,Vt=Ve+ht/2+Gt<=T,ar=Ve-ht/2-Gt>=0,(bt.idealAlign==="left"||!Vt)&&ar)Ve-=ht/2,bt.anchor="end";else if(Vt)Ve+=ht/2,bt.anchor="start";else{bt.anchor="middle";var Qr=Gt/2,ai=Ve+Qr-T,jr=Ve-Qr;ai>0&&(Ve-=ai),jr<0&&(Ve+=-jr)}bt.crossPos=Ve}Or.attr("text-anchor",bt.anchor),ut&&Nr.attr("text-anchor",bt.anchor),Lt.attr("transform",DB(Ve,Xe)+(a?Rst(Ele):""))}),{hoverLabels:xt,commonLabelBoundingBox:W}}function wle(e,t,r,n,i,a){var o="",s="";e.nameOverride!==void 0&&(e.name=e.nameOverride),e.name&&(e.trace._meta&&(e.name=Rf.templateString(e.name,e.trace._meta)),o=Sle(e.name,e.nameLength));var l=r.charAt(0),u=l==="x"?"y":"x";e.zLabel!==void 0?(e.xLabel!==void 0&&(s+="x: "+e.xLabel+"
"),e.yLabel!==void 0&&(s+="y: "+e.yLabel+"
"),e.trace.type!=="choropleth"&&e.trace.type!=="choroplethmapbox"&&e.trace.type!=="choroplethmap"&&(s+=(s?"z: ":"")+e.zLabel)):t&&e[l+"Label"]===i?s=e[u+"Label"]||"":e.xLabel===void 0?e.yLabel!==void 0&&e.trace.type!=="scattercarpet"&&(s=e.yLabel):e.yLabel===void 0?s=e.xLabel:s="("+e.xLabel+", "+e.yLabel+")",(e.text||e.text===0)&&!Array.isArray(e.text)&&(s+=(s?"
":"")+e.text),e.extraText!==void 0&&(s+=(s?"
":"")+e.extraText),a&&s===""&&!e.hovertemplate&&(o===""&&a.remove(),s=o);var c=e.hovertemplate||!1;if(c){var f=e.hovertemplateLabels||e;e[l+"Label"]!==i&&(f[l+"other"]=f[l+"Val"],f[l+"otherLabel"]=f[l+"Label"]),s=Rf.hovertemplateString(c,f,n._d3locale,e.eventData[0]||{},e.trace._meta),s=s.replace(Gst,function(h,d){return o=Sle(d,e.nameLength),""})}return[s,o]}function jst(e,t,r,n){var i=t?"xa":"ya",a=t?"ya":"xa",o=0,s=1,l=e.size(),u=new Array(l),c=0,f=n.minX,h=n.maxX,d=n.minY,v=n.maxY,x=function(X){return X*r._invScaleX},b=function(X){return X*r._invScaleY};e.each(function(X){var G=X[i],N=X[a],W=G._id.charAt(0)==="x",re=G.range;c===0&&re&&re[0]>re[1]!==W&&(s=-1);var ae=0,_e=W?r.width:r.height;if(r.hovermode==="x"||r.hovermode==="y"){var Me=Lle(X,t),ke=X.anchor,ge=ke==="end"?-1:1,ie,Te;if(ke==="middle")ie=X.crossPos+(W?b(Me.y-X.by/2):x(X.bx/2+X.tx2width/2)),Te=ie+(W?b(X.by):x(X.bx));else if(W)ie=X.crossPos+b(Bc+Me.y)-b(X.by/2-Bc),Te=ie+b(X.by);else{var Ee=x(ge*Bc+Me.x),Ae=Ee+x(ge*X.bx);ie=X.crossPos+Math.min(Ee,Ae),Te=X.crossPos+Math.max(Ee,Ae)}W?d!==void 0&&v!==void 0&&Math.min(Te,v)-Math.max(ie,d)>1&&(N.side==="left"?(ae=N._mainLinePosition,_e=r.width):_e=N._mainLinePosition):f!==void 0&&h!==void 0&&Math.min(Te,h)-Math.max(ie,f)>1&&(N.side==="top"?(ae=N._mainLinePosition,_e=r.height):_e=N._mainLinePosition)}u[c++]=[{datum:X,traceIndex:X.trace.index,dp:0,pos:X.pos,posref:X.posref,size:X.by*(W?Bst:1)/2,pmin:ae,pmax:_e}]}),u.sort(function(X,G){return X[0].posref-G[0].posref||s*(G[0].traceIndex-X[0].traceIndex)});var p,E,k,A,L,_,C;function M(X){var G=X[0],N=X[X.length-1];if(E=G.pmin-G.pos-G.dp+G.size,k=N.pos+N.dp+N.size-G.pmax,E>.01){for(L=X.length-1;L>=0;L--)X[L].dp+=E;p=!1}if(!(k<.01)){if(E<-.01){for(L=X.length-1;L>=0;L--)X[L].dp-=k;p=!1}if(p){var W=0;for(A=0;AG.pmax&&W++;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos>G.pmax-1&&(_.del=!0,W--);for(A=0;A=0;L--)X[L].dp-=k;for(A=X.length-1;A>=0&&!(W<=0);A--)_=X[A],_.pos+_.dp+_.size>G.pmax&&(_.del=!0,W--)}}}for(;!p&&o<=l;){for(o++,p=!0,A=0;A.01){for(L=P.length-1;L>=0;L--)P[L].dp+=E;for(g.push.apply(g,P),u.splice(A+1,1),C=0,L=g.length-1;L>=0;L--)C+=g[L].dp;for(k=C/g.length,L=g.length-1;L>=0;L--)g[L].dp-=k;p=!1}else A++}u.forEach(M)}for(A=u.length-1;A>=0;A--){var q=u[A];for(L=q.length-1;L>=0;L--){var V=q[L],H=V.datum;H.offset=V.dp,H.del=V.del}}}function Lle(e,t){var r=0,n=e.offset;return t&&(n*=-Ust,r=e.offset*Nst),{x:r,y:n}}function Wst(e){var t={start:1,end:-1,middle:0}[e.anchor],r=t*(Bc+Us),n=r+t*(e.txwidth+Us),i=e.anchor==="middle";return i&&(r-=e.tx2width/2,n+=e.txwidth/2+Us),{alignShift:t,textShiftX:r,text2ShiftX:n}}function Ple(e,t,r,n){var i=function(o){return o*r},a=function(o){return o*n};e.each(function(o){var s=Db.select(this);if(o.del)return s.remove();var l=s.select("text.nums"),u=o.anchor,c=u==="end"?-1:1,f=Wst(o),h=Lle(o,t),d=h.x,v=h.y,x=u==="middle";s.select("path").attr("d",x?"M-"+i(o.bx/2+o.tx2width/2)+","+a(v-o.by/2)+"h"+i(o.bx)+"v"+a(o.by)+"h-"+i(o.bx)+"Z":"M0,0L"+i(c*Bc+d)+","+a(Bc+v)+"v"+a(o.by/2-Bc)+"h"+i(c*o.bx)+"v-"+a(o.by)+"H"+i(c*Bc+d)+"V"+a(v-Bc)+"Z");var b=d+f.textShiftX,p=v+o.ty0-o.by/2+Us,E=o.textAlign||"auto";E!=="auto"&&(E==="left"&&u!=="start"?(l.attr("text-anchor","start"),b=x?-o.bx/2-o.tx2width/2+Us:-o.bx-Us):E==="right"&&u!=="end"&&(l.attr("text-anchor","end"),b=x?o.bx/2-o.tx2width/2-Us:o.bx+Us)),l.call(A0.positionText,i(b),a(p)),o.tx2width&&(s.select("text.name").call(A0.positionText,i(f.text2ShiftX+f.alignShift*Us+d),a(v+o.ty0-o.by/2+Us)),s.select("rect").call(bm.setRect,i(f.text2ShiftX+(f.alignShift-1)*o.tx2width/2+d),a(v-o.by/2-1),i(o.tx2width),a(o.by+2)))})}function Zst(e,t){var r=e.index,n=e.trace||{},i=e.cd[0],a=e.cd[r]||{};function o(h){return h||Sy(h)&&h===0}var s=Array.isArray(r)?function(h,d){var v=Rf.castOption(i,r,h);return o(v)?v:Rf.extractOption({},n,"",d)}:function(h,d){return Rf.extractOption(a,n,h,d)};function l(h,d,v){var x=s(d,v);o(x)&&(e[h]=x)}if(l("hoverinfo","hi","hoverinfo"),l("bgcolor","hbg","hoverlabel.bgcolor"),l("borderColor","hbc","hoverlabel.bordercolor"),l("fontFamily","htf","hoverlabel.font.family"),l("fontSize","hts","hoverlabel.font.size"),l("fontColor","htc","hoverlabel.font.color"),l("fontWeight","htw","hoverlabel.font.weight"),l("fontStyle","hty","hoverlabel.font.style"),l("fontVariant","htv","hoverlabel.font.variant"),l("nameLength","hnl","hoverlabel.namelength"),l("textAlign","hta","hoverlabel.align"),e.posref=t==="y"||t==="closest"&&n.orientation==="h"?e.xa._offset+(e.x0+e.x1)/2:e.ya._offset+(e.y0+e.y1)/2,e.x0=Rf.constrain(e.x0,0,e.xa._length),e.x1=Rf.constrain(e.x1,0,e.xa._length),e.y0=Rf.constrain(e.y0,0,e.ya._length),e.y1=Rf.constrain(e.y1,0,e.ya._length),e.xLabelVal!==void 0&&(e.xLabel="xLabel"in e?e.xLabel:wm.hoverLabelText(e.xa,e.xLabelVal,n.xhoverformat),e.xVal=e.xa.c2d(e.xLabelVal)),e.yLabelVal!==void 0&&(e.yLabel="yLabel"in e?e.yLabel:wm.hoverLabelText(e.ya,e.yLabelVal,n.yhoverformat),e.yVal=e.ya.c2d(e.yLabelVal)),e.zLabelVal!==void 0&&e.zLabel===void 0&&(e.zLabel=String(e.zLabelVal)),!isNaN(e.xerr)&&!(e.xa.type==="log"&&e.xerr<=0)){var u=wm.tickText(e.xa,e.xa.c2l(e.xerr),"hover").text;e.xerrneg!==void 0?e.xLabel+=" +"+u+" / -"+wm.tickText(e.xa,e.xa.c2l(e.xerrneg),"hover").text:e.xLabel+=" \xB1 "+u,t==="x"&&(e.distance+=1)}if(!isNaN(e.yerr)&&!(e.ya.type==="log"&&e.yerr<=0)){var c=wm.tickText(e.ya,e.ya.c2l(e.yerr),"hover").text;e.yerrneg!==void 0?e.yLabel+=" +"+c+" / -"+wm.tickText(e.ya,e.ya.c2l(e.yerrneg),"hover").text:e.yLabel+=" \xB1 "+c,t==="y"&&(e.distance+=1)}var f=e.hoverinfo||e.trace.hoverinfo;return f&&f!=="all"&&(f=Array.isArray(f)?f:f.split("+"),f.indexOf("x")===-1&&(e.xLabel=void 0),f.indexOf("y")===-1&&(e.yLabel=void 0),f.indexOf("z")===-1&&(e.zLabel=void 0),f.indexOf("text")===-1&&(e.text=void 0),f.indexOf("name")===-1&&(e.name=void 0)),e}function Tle(e,t,r){var n=r.container,i=r.fullLayout,a=i._size,o=r.event,s=!!t.hLinePoint,l=!!t.vLinePoint,u,c;if(n.selectAll(".spikeline").remove(),!!(l||s)){var f=sd.combine(i.plot_bgcolor,i.paper_bgcolor);if(s){var h=t.hLinePoint,d,v;u=h&&h.xa,c=h&&h.ya;var x=c.spikesnap;x==="cursor"?(d=o.pointerX,v=o.pointerY):(d=u._offset+h.x,v=c._offset+h.y);var b=_le.readability(h.color,f)<1.5?sd.contrast(f):h.color,p=c.spikemode,E=c.spikethickness,k=c.spikecolor||b,A=wm.getPxPosition(e,c),L,_;if(p.indexOf("toaxis")!==-1||p.indexOf("across")!==-1){if(p.indexOf("toaxis")!==-1&&(L=A,_=d),p.indexOf("across")!==-1){var C=c._counterDomainMin,M=c._counterDomainMax;c.anchor==="free"&&(C=Math.min(C,c.position),M=Math.max(M,c.position)),L=a.l+C*a.w,_=a.l+M*a.w}n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E,stroke:k,"stroke-dasharray":bm.dashStyle(c.spikedash,E)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:L,x2:_,y1:v,y2:v,"stroke-width":E+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}p.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:A+(c.side!=="right"?E:-E),cy:v,r:E,fill:k}).classed("spikeline",!0)}if(l){var g=t.vLinePoint,P,T;u=g&&g.xa,c=g&&g.ya;var F=u.spikesnap;F==="cursor"?(P=o.pointerX,T=o.pointerY):(P=u._offset+g.x,T=c._offset+g.y);var q=_le.readability(g.color,f)<1.5?sd.contrast(f):g.color,V=u.spikemode,H=u.spikethickness,X=u.spikecolor||q,G=wm.getPxPosition(e,u),N,W;if(V.indexOf("toaxis")!==-1||V.indexOf("across")!==-1){if(V.indexOf("toaxis")!==-1&&(N=G,W=T),V.indexOf("across")!==-1){var re=u._counterDomainMin,ae=u._counterDomainMax;u.anchor==="free"&&(re=Math.min(re,u.position),ae=Math.max(ae,u.position)),N=a.t+(1-ae)*a.h,W=a.t+(1-re)*a.h}n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H,stroke:X,"stroke-dasharray":bm.dashStyle(u.spikedash,H)}).classed("spikeline",!0).classed("crisp",!0),n.insert("line",":first-child").attr({x1:P,x2:P,y1:N,y2:W,"stroke-width":H+2,stroke:f}).classed("spikeline",!0).classed("crisp",!0)}V.indexOf("marker")!==-1&&n.insert("circle",":first-child").attr({cx:P,cy:G-(u.side!=="top"?H:-H),r:H,fill:X}).classed("spikeline",!0)}}}function Xst(e,t,r){if(!r||r.length!==e._hoverdata.length)return!0;for(var n=r.length-1;n>=0;n--){var i=r[n],a=e._hoverdata[n];if(i.curveNumber!==a.curveNumber||String(i.pointNumber)!==String(a.pointNumber)||String(i.pointNumbers)!==String(a.pointNumbers))return!0}return!1}function Ale(e,t){return!t||t.vLinePoint!==e._spikepoints.vLinePoint||t.hLinePoint!==e._spikepoints.hLinePoint}function Sle(e,t){return A0.plainText(e||"",{len:t,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function Yst(e,t){for(var r=t.charAt(0),n=[],i=[],a=[],o=0;o{"use strict";var Kst=Mr(),Jst=va(),$st=rp().isUnifiedHover;Dle.exports=function(t,r,n,i){i=i||{};var a=r.legend;function o(s){i.font[s]||(i.font[s]=a?r.legend.font[s]:r.font[s])}r&&$st(r.hovermode)&&(i.font||(i.font={}),o("size"),o("family"),o("color"),o("weight"),o("style"),o("variant"),a?(i.bgcolor||(i.bgcolor=Jst.combine(r.legend.bgcolor,r.paper_bgcolor)),i.bordercolor||(i.bordercolor=r.legend.bordercolor)):i.bgcolor||(i.bgcolor=r.paper_bgcolor)),n("hoverlabel.bgcolor",i.bgcolor),n("hoverlabel.bordercolor",i.bordercolor),n("hoverlabel.namelength",i.namelength),Kst.coerceFont(n,"hoverlabel.font",i.font),n("hoverlabel.align",i.align)}});var Fle=ye((Xrr,zle)=>{"use strict";var Qst=Mr(),elt=oM(),tlt=N1();zle.exports=function(t,r){function n(i,a){return Qst.coerce(t,r,tlt,i,a)}elt(t,r,n)}});var Ble=ye((Yrr,Ole)=>{"use strict";var qle=Mr(),rlt=i3(),ilt=oM();Ole.exports=function(t,r,n,i){function a(s,l){return qle.coerce(t,r,rlt,s,l)}var o=qle.extendFlat({},i.hoverlabel);r.hovertemplate&&(o.namelength=-1),ilt(t,r,a,o)}});var OB=ye((Krr,Nle)=>{"use strict";var nlt=Mr(),alt=N1();Nle.exports=function(t,r){function n(i,a){return r[i]!==void 0?r[i]:nlt.coerce(t,r,alt,i,a)}return n("clickmode"),n("hoversubplots"),n("hovermode")}});var Hle=ye((Jrr,Vle)=>{"use strict";var Ule=Mr(),olt=N1(),slt=OB(),llt=oM();Vle.exports=function(t,r){function n(c,f){return Ule.coerce(t,r,olt,c,f)}var i=slt(t,r);i&&(n("hoverdistance"),n("spikedistance"));var a=n("dragmode");a==="select"&&n("selectdirection");var o=r._has("mapbox"),s=r._has("map"),l=r._has("geo"),u=r._basePlotModules.length;r.dragmode==="zoom"&&((o||s||l)&&u===1||(o||s)&&l&&u===2)&&(r.dragmode="pan"),llt(t,r,n),Ule.coerceFont(n,"hoverlabel.grouptitlefont",r.hoverlabel.font)}});var Wle=ye(($rr,jle)=>{"use strict";var BB=Mr(),Gle=ba();jle.exports=function(t){var r=t.calcdata,n=t._fullLayout;function i(u){return function(c){return BB.coerceHoverinfo({hoverinfo:c},{_module:u._module},n)}}for(var a=0;a{"use strict";var clt=ba(),flt=qB().hover;Zle.exports=function(t,r,n){var i=clt.getComponentMethod("annotations","onClick")(t,t._hoverdata);n!==void 0&&flt(t,r,n,!0);function a(){t.emit("plotly_click",{points:t._hoverdata,event:r})}t._hoverdata&&r&&r.target&&(i&&i.then?i.then(a):a(),r.stopImmediatePropagation&&r.stopImmediatePropagation())}});var Nc=ye((eir,Jle)=>{"use strict";var hlt=xa(),NL=Mr(),dlt=gv(),sM=rp(),Yle=N1(),Kle=qB();Jle.exports={moduleType:"component",name:"fx",constants:IS(),schema:{layout:Yle},attributes:i3(),layoutAttributes:Yle,supplyLayoutGlobalDefaults:Fle(),supplyDefaults:Ble(),supplyLayoutDefaults:Hle(),calc:Wle(),getDistanceFunction:sM.getDistanceFunction,getClosest:sM.getClosest,inbox:sM.inbox,quadrature:sM.quadrature,appendArrayPointValue:sM.appendArrayPointValue,castHoverOption:plt,castHoverinfo:glt,hover:Kle.hover,unhover:dlt.unhover,loneHover:Kle.loneHover,loneUnhover:vlt,click:Xle()};function vlt(e){var t=NL.isD3Selection(e)?e:hlt.select(e);t.selectAll("g.hovertext").remove(),t.selectAll(".spikeline").remove()}function plt(e,t,r){return NL.castOption(e,t,"hoverlabel."+r)}function glt(e,t,r){function n(i){return NL.coerceHoverinfo({hoverinfo:i},{_module:e._module},t)}return NL.castOption(e,r,"hoverinfo",n)}});var Sg=ye(My=>{"use strict";My.selectMode=function(e){return e==="lasso"||e==="select"};My.drawMode=function(e){return e==="drawclosedpath"||e==="drawopenpath"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.openMode=function(e){return e==="drawline"||e==="drawopenpath"};My.rectMode=function(e){return e==="select"||e==="drawline"||e==="drawrect"||e==="drawcircle"};My.freeMode=function(e){return e==="lasso"||e==="drawclosedpath"||e==="drawopenpath"};My.selectingOrDrawing=function(e){return My.freeMode(e)||My.rectMode(e)}});var lM=ye((rir,$le)=>{"use strict";$le.exports=function(t){var r=t._fullLayout;r._glcanvas&&r._glcanvas.size()&&r._glcanvas.each(function(n){n.regl&&n.regl.clear({color:!0,depth:!0})})}});var UL=ye((iir,Qle)=>{"use strict";Qle.exports={undo:{width:857.1,height:1e3,path:"m857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4 6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61 61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60 57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z",transform:"matrix(1 0 0 -1 0 850)"},home:{width:928.6,height:1e3,path:"m786 296v-267q0-15-11-26t-25-10h-214v214h-143v-214h-214q-15 0-25 10t-11 26v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-4-7 2-12 7l-35 41q-4 5-3 13t6 12l401 334q18 15 42 15t43-15l136-114v109q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q5-5 6-12t-4-13z",transform:"matrix(1 0 0 -1 0 850)"},"camera-retro":{width:1e3,height:1e3,path:"m518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-8 5-13t13-5 12 5 5 13q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z",transform:"matrix(1 0 0 -1 0 850)"},zoombox:{width:1e3,height:1e3,path:"m1000-25l-250 251c40 63 63 138 63 218 0 224-182 406-407 406-224 0-406-182-406-406s183-406 407-406c80 0 155 22 218 62l250-250 125 125z m-812 250l0 438 437 0 0-438-437 0z m62 375l313 0 0-312-313 0 0 312z",transform:"matrix(1 0 0 -1 0 850)"},pan:{width:1e3,height:1e3,path:"m1000 350l-187 188 0-125-250 0 0 250 125 0-188 187-187-187 125 0 0-250-250 0 0 125-188-188 186-187 0 125 252 0 0-250-125 0 187-188 188 188-125 0 0 250 250 0 0-126 187 188z",transform:"matrix(1 0 0 -1 0 850)"},zoom_plus:{width:875,height:1e3,path:"m1 787l0-875 875 0 0 875-875 0z m687-500l-187 0 0-187-125 0 0 187-188 0 0 125 188 0 0 187 125 0 0-187 187 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},zoom_minus:{width:875,height:1e3,path:"m0 788l0-876 875 0 0 876-875 0z m688-500l-500 0 0 125 500 0 0-125z",transform:"matrix(1 0 0 -1 0 850)"},autoscale:{width:1e3,height:1e3,path:"m250 850l-187 0-63 0 0-62 0-188 63 0 0 188 187 0 0 62z m688 0l-188 0 0-62 188 0 0-188 62 0 0 188 0 62-62 0z m-875-938l0 188-63 0 0-188 0-62 63 0 187 0 0 62-187 0z m875 188l0-188-188 0 0-62 188 0 62 0 0 62 0 188-62 0z m-125 188l-1 0-93-94-156 156 156 156 92-93 2 0 0 250-250 0 0-2 93-92-156-156-156 156 94 92 0 2-250 0 0-250 0 0 93 93 157-156-157-156-93 94 0 0 0-250 250 0 0 0-94 93 156 157 156-157-93-93 0 0 250 0 0 250z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_basic:{width:1500,height:1e3,path:"m375 725l0 0-375-375 375-374 0-1 1125 0 0 750-1125 0z",transform:"matrix(1 0 0 -1 0 850)"},tooltip_compare:{width:1125,height:1e3,path:"m187 786l0 2-187-188 188-187 0 0 937 0 0 373-938 0z m0-499l0 1-187-188 188-188 0 0 937 0 0 376-938-1z",transform:"matrix(1 0 0 -1 0 850)"},plotlylogo:{width:1542,height:1e3,path:"m0-10h182v-140h-182v140z m228 146h183v-286h-183v286z m225 714h182v-1000h-182v1000z m225-285h182v-715h-182v715z m225 142h183v-857h-183v857z m231-428h182v-429h-182v429z m225-291h183v-138h-183v138z",transform:"matrix(1 0 0 -1 0 850)"},"z-axis":{width:1e3,height:1e3,path:"m833 5l-17 108v41l-130-65 130-66c0 0 0 38 0 39 0-1 36-14 39-25 4-15-6-22-16-30-15-12-39-16-56-20-90-22-187-23-279-23-261 0-341 34-353 59 3 60 228 110 228 110-140-8-351-35-351-116 0-120 293-142 474-142 155 0 477 22 477 142 0 50-74 79-163 96z m-374 94c-58-5-99-21-99-40 0-24 65-43 144-43 79 0 143 19 143 43 0 19-42 34-98 40v216h87l-132 135-133-135h88v-216z m167 515h-136v1c16 16 31 34 46 52l84 109v54h-230v-71h124v-1c-16-17-28-32-44-51l-89-114v-51h245v72z",transform:"matrix(1 0 0 -1 0 850)"},"3d_rotate":{width:1e3,height:1e3,path:"m922 660c-5 4-9 7-14 11-359 263-580-31-580-31l-102 28 58-400c0 1 1 1 2 2 118 108 351 249 351 249s-62 27-100 42c88 83 222 183 347 122 16-8 30-17 44-27-2 1-4 2-6 4z m36-329c0 0 64 229-88 296-62 27-124 14-175-11 157-78 225-208 249-266 8-19 11-31 11-31 2 5 6 15 11 32-5-13-8-20-8-20z m-775-239c70-31 117-50 198-32-121 80-199 346-199 346l-96-15-58-12c0 0 55-226 155-287z m603 133l-317-139c0 0 4-4 19-14 7-5 24-15 24-15s-177-147-389 4c235-287 536-112 536-112l31-22 100 299-4-1z m-298-153c6-4 14-9 24-15 0 0-17 10-24 15z",transform:"matrix(1 0 0 -1 0 850)"},camera:{width:1e3,height:1e3,path:"m500 450c-83 0-150-67-150-150 0-83 67-150 150-150 83 0 150 67 150 150 0 83-67 150-150 150z m400 150h-120c-16 0-34 13-39 29l-31 93c-6 15-23 28-40 28h-340c-16 0-34-13-39-28l-31-94c-6-15-23-28-40-28h-120c-55 0-100-45-100-100v-450c0-55 45-100 100-100h800c55 0 100 45 100 100v450c0 55-45 100-100 100z m-400-550c-138 0-250 112-250 250 0 138 112 250 250 250 138 0 250-112 250-250 0-138-112-250-250-250z m365 380c-19 0-35 16-35 35 0 19 16 35 35 35 19 0 35-16 35-35 0-19-16-35-35-35z",transform:"matrix(1 0 0 -1 0 850)"},movie:{width:1e3,height:1e3,path:"m938 413l-188-125c0 37-17 71-44 94 64 38 107 107 107 187 0 121-98 219-219 219-121 0-219-98-219-219 0-61 25-117 66-156h-115c30 33 49 76 49 125 0 103-84 187-187 187s-188-84-188-187c0-57 26-107 65-141-38-22-65-62-65-109v-250c0-70 56-126 125-126h500c69 0 125 56 125 126l188-126c34 0 62 28 62 63v375c0 35-28 63-62 63z m-750 0c-69 0-125 56-125 125s56 125 125 125 125-56 125-125-56-125-125-125z m406-1c-87 0-157 70-157 157 0 86 70 156 157 156s156-70 156-156-70-157-156-157z",transform:"matrix(1 0 0 -1 0 850)"},question:{width:857.1,height:1e3,path:"m500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-14 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-16-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z",transform:"matrix(1 0 0 -1 0 850)"},disk:{width:857.1,height:1e3,path:"m214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-8 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z",transform:"matrix(1 0 0 -1 0 850)"},drawopenpath:{width:70,height:70,path:"M33.21,85.65a7.31,7.31,0,0,1-2.59-.48c-8.16-3.11-9.27-19.8-9.88-41.3-.1-3.58-.19-6.68-.35-9-.15-2.1-.67-3.48-1.43-3.79-2.13-.88-7.91,2.32-12,5.86L3,32.38c1.87-1.64,11.55-9.66,18.27-6.9,2.13.87,4.75,3.14,5.17,9,.17,2.43.26,5.59.36,9.25a224.17,224.17,0,0,0,1.5,23.4c1.54,10.76,4,12.22,4.48,12.4.84.32,2.79-.46,5.76-3.59L43,80.07C41.53,81.57,37.68,85.64,33.21,85.65ZM74.81,69a11.34,11.34,0,0,0,6.09-6.72L87.26,44.5,74.72,32,56.9,38.35c-2.37.86-5.57,3.42-6.61,6L38.65,72.14l8.42,8.43ZM55,46.27a7.91,7.91,0,0,1,3.64-3.17l14.8-5.3,8,8L76.11,60.6l-.06.19a6.37,6.37,0,0,1-3,3.43L48.25,74.59,44.62,71Zm16.57,7.82A6.9,6.9,0,1,0,64.64,61,6.91,6.91,0,0,0,71.54,54.09Zm-4.05,0a2.85,2.85,0,1,1-2.85-2.85A2.86,2.86,0,0,1,67.49,54.09Zm-4.13,5.22L60.5,56.45,44.26,72.7l2.86,2.86ZM97.83,35.67,84.14,22l-8.57,8.57L89.26,44.24Zm-13.69-8,8,8-2.85,2.85-8-8Z",transform:"matrix(1 0 0 1 -15 -15)"},drawclosedpath:{width:90,height:90,path:"M88.41,21.12a26.56,26.56,0,0,0-36.18,0l-2.07,2-2.07-2a26.57,26.57,0,0,0-36.18,0,23.74,23.74,0,0,0,0,34.8L48,90.12a3.22,3.22,0,0,0,4.42,0l36-34.21a23.73,23.73,0,0,0,0-34.79ZM84,51.24,50.16,83.35,16.35,51.25a17.28,17.28,0,0,1,0-25.47,20,20,0,0,1,27.3,0l4.29,4.07a3.23,3.23,0,0,0,4.44,0l4.29-4.07a20,20,0,0,1,27.3,0,17.27,17.27,0,0,1,0,25.46ZM66.76,47.68h-33v6.91h33ZM53.35,35H46.44V68h6.91Z",transform:"matrix(1 0 0 1 -5 -5)"},lasso:{width:1031,height:1e3,path:"m1018 538c-36 207-290 336-568 286-277-48-473-256-436-463 10-57 36-108 76-151-13-66 11-137 68-183 34-28 75-41 114-42l-55-70 0 0c-2-1-3-2-4-3-10-14-8-34 5-45 14-11 34-8 45 4 1 1 2 3 2 5l0 0 113 140c16 11 31 24 45 40 4 3 6 7 8 11 48-3 100 0 151 9 278 48 473 255 436 462z m-624-379c-80 14-149 48-197 96 42 42 109 47 156 9 33-26 47-66 41-105z m-187-74c-19 16-33 37-39 60 50-32 109-55 174-68-42-25-95-24-135 8z m360 75c-34-7-69-9-102-8 8 62-16 128-68 170-73 59-175 54-244-5-9 20-16 40-20 61-28 159 121 317 333 354s407-60 434-217c28-159-121-318-333-355z",transform:"matrix(1 0 0 -1 0 850)"},selectbox:{width:1e3,height:1e3,path:"m0 850l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-285l0-143 143 0 0 143-143 0z m857 0l0-143 143 0 0 143-143 0z m-857-286l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z m285 0l0-143 143 0 0 143-143 0z m286 0l0-143 143 0 0 143-143 0z",transform:"matrix(1 0 0 -1 0 850)"},drawline:{width:70,height:70,path:"M60.64,62.3a11.29,11.29,0,0,0,6.09-6.72l6.35-17.72L60.54,25.31l-17.82,6.4c-2.36.86-5.57,3.41-6.6,6L24.48,65.5l8.42,8.42ZM40.79,39.63a7.89,7.89,0,0,1,3.65-3.17l14.79-5.31,8,8L61.94,54l-.06.19a6.44,6.44,0,0,1-3,3.43L34.07,68l-3.62-3.63Zm16.57,7.81a6.9,6.9,0,1,0-6.89,6.9A6.9,6.9,0,0,0,57.36,47.44Zm-4,0a2.86,2.86,0,1,1-2.85-2.85A2.86,2.86,0,0,1,53.32,47.44Zm-4.13,5.22L46.33,49.8,30.08,66.05l2.86,2.86ZM83.65,29,70,15.34,61.4,23.9,75.09,37.59ZM70,21.06l8,8-2.84,2.85-8-8ZM87,80.49H10.67V87H87Z",transform:"matrix(1 0 0 1 -15 -15)"},drawrect:{width:80,height:80,path:"M78,22V79H21V22H78m9-9H12V88H87V13ZM68,46.22H31V54H68ZM53,32H45.22V69H53Z",transform:"matrix(1 0 0 1 -10 -10)"},drawcircle:{width:80,height:80,path:"M50,84.72C26.84,84.72,8,69.28,8,50.3S26.84,15.87,50,15.87,92,31.31,92,50.3,73.16,84.72,50,84.72Zm0-60.59c-18.6,0-33.74,11.74-33.74,26.17S31.4,76.46,50,76.46,83.74,64.72,83.74,50.3,68.6,24.13,50,24.13Zm17.15,22h-34v7.11h34Zm-13.8-13H46.24v34h7.11Z",transform:"matrix(1 0 0 1 -10 -10)"},eraseshape:{width:80,height:80,path:"M82.77,78H31.85L6,49.57,31.85,21.14H82.77a8.72,8.72,0,0,1,8.65,8.77V69.24A8.72,8.72,0,0,1,82.77,78ZM35.46,69.84H82.77a.57.57,0,0,0,.49-.6V29.91a.57.57,0,0,0-.49-.61H35.46L17,49.57Zm32.68-34.7-24,24,5,5,24-24Zm-19,.53-5,5,24,24,5-5Z",transform:"matrix(1 0 0 1 -10 -10)"},spikeline:{width:1e3,height:1e3,path:"M512 409c0-57-46-104-103-104-57 0-104 47-104 104 0 57 47 103 104 103 57 0 103-46 103-103z m-327-39l92 0 0 92-92 0z m-185 0l92 0 0 92-92 0z m370-186l92 0 0 93-92 0z m0-184l92 0 0 92-92 0z",transform:"matrix(1.5 0 0 -1.5 0 850)"},pencil:{width:1792,height:1792,path:"M491 1536l91-91-235-235-91 91v107h128v128h107zm523-928q0-22-22-22-10 0-17 7l-542 542q-7 7-7 17 0 22 22 22 10 0 17-7l542-542q7-7 7-17zm-54-192l416 416-832 832h-416v-416zm683 96q0 53-37 90l-166 166-416-416 166-165q36-38 90-38 53 0 91 38l235 234q37 39 37 91z",transform:"matrix(1 0 0 1 0 1)"},newplotlylogo:{name:"newplotlylogo",svg:[""," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}});var HL=ye((nir,eue)=>{"use strict";var VL=32;eue.exports={CIRCLE_SIDES:VL,i000:0,i090:VL/4,i180:VL/2,i270:VL/4*3,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}});var GL=ye((air,rue)=>{"use strict";var mlt=Mr().strTranslate;function tue(e,t){switch(e.type){case"log":return e.p2d(t);case"date":return e.p2r(t,0,e.calendar);default:return e.p2r(t)}}function ylt(e,t){switch(e.type){case"log":return e.d2p(t);case"date":return e.r2p(t,0,e.calendar);default:return e.r2p(t)}}function _lt(e){var t=e._id.charAt(0)==="y"?1:0;return function(r){return tue(e,r[t])}}function xlt(e){return mlt(e.xaxis._offset,e.yaxis._offset)}rue.exports={p2r:tue,r2p:ylt,axValue:_lt,getTransform:xlt}});var c_=ye(Ey=>{"use strict";var blt=XS(),aue=HL(),V3=aue.CIRCLE_SIDES,NB=aue.SQRT2,oue=GL(),iue=oue.p2r,nue=oue.r2p,wlt=[0,3,4,5,6,1,2],Tlt=[0,3,4,1,2];Ey.writePaths=function(e){var t=e.length;if(!t)return"M0,0Z";for(var r="",n=0;n0&&l{"use strict";var fue=Sg(),Alt=fue.drawMode,Slt=fue.openMode,H3=HL(),sue=H3.i000,lue=H3.i090,uue=H3.i180,cue=H3.i270,Mlt=H3.cos45,Elt=H3.sin45,hue=GL(),WL=hue.p2r,f_=hue.r2p,klt=e_(),Clt=klt.clearOutline,ZL=c_(),Llt=ZL.readPaths,Plt=ZL.writePaths,Ilt=ZL.ellipseOver,Rlt=ZL.fixDatesForPaths;function Dlt(e,t){if(e.length){var r=e[0][0];if(r){var n=t.gd,i=t.isActiveShape,a=t.dragmode,o=(n.layout||{}).shapes||[];if(!Alt(a)&&i!==void 0){var s=n._fullLayout._activeShapeIndex;if(s{"use strict";var zlt=Sg(),Flt=zlt.selectMode,qlt=e_(),Olt=qlt.clearOutline,UB=c_(),Blt=UB.readPaths,Nlt=UB.writePaths,Ult=UB.fixDatesForPaths;pue.exports=function(t,r){if(t.length){var n=t[0][0];if(n){var i=n.getAttribute("d"),a=r.gd,o=a._fullLayout.newselection,s=r.plotinfo,l=s.xaxis,u=s.yaxis,c=r.isActiveSelection,f=r.dragmode,h=(a.layout||{}).selections||[];if(!Flt(f)&&c!==void 0){var d=a._fullLayout._activeSelectionIndex;if(d{"use strict";gue.exports={segmentRE:/[MLHVQCTSZ][^MLHVQCTSZ]*/g,paramRE:/[^\s,]+/g,paramIsX:{M:{0:!0,drawn:0},L:{0:!0,drawn:0},H:{0:!0,drawn:0},V:{},Q:{0:!0,2:!0,drawn:2},C:{0:!0,2:!0,4:!0,drawn:4},T:{0:!0,drawn:0},S:{0:!0,2:!0,drawn:2},Z:{}},paramIsY:{M:{1:!0,drawn:1},L:{1:!0,drawn:1},H:{},V:{0:!0,drawn:0},Q:{1:!0,3:!0,drawn:3},C:{1:!0,3:!0,5:!0,drawn:5},T:{1:!0,drawn:1},S:{1:!0,3:!0,drawn:5},Z:{}},numParams:{M:2,L:2,H:1,V:1,Q:4,C:6,T:2,S:4,Z:0}}});var h_=ye(Ld=>{"use strict";var Fb=cM(),mue=Mr(),YL=Qa();Ld.rangeToShapePosition=function(e){return e.type==="log"?e.r2d:function(t){return t}};Ld.shapePositionToRange=function(e){return e.type==="log"?e.d2r:function(t){return t}};Ld.decodeDate=function(e){return function(t){return t.replace&&(t=t.replace("_"," ")),e(t)}};Ld.encodeDate=function(e){return function(t){return e(t).replace(" ","_")}};Ld.extractPathCoords=function(e,t,r){var n=[],i=e.match(Fb.segmentRE);return i.forEach(function(a){var o=t[a.charAt(0)].drawn;if(o!==void 0){var s=a.substr(1).match(Fb.paramRE);if(!(!s||s.lengthd&&(x="X"),x});return u>d&&(v=v.replace(/[\s,]*X.*/,""),mue.log("Ignoring extra params in segment "+l)),c+v})}function fM(e,t){t=t||0;var r=0;return t&&e&&(e.type==="category"||e.type==="multicategory")&&(r=(e.r2p(1)-e.r2p(0))*t),r}});var GB=ye((fir,bue)=>{"use strict";var Hlt=Mr(),G3=Qa(),yue=Pl(),_ue=ao(),Glt=c_().readPaths,HB=h_(),jlt=HB.getPathString,xue=b6(),Wlt=Nh().FROM_TL;bue.exports=function(t,r,n,i){if(i.selectAll(".shape-label").remove(),!!(n.label.text||n.label.texttemplate)){var a;if(n.label.texttemplate){var o={};if(n.type!=="path"){var s=G3.getFromId(t,n.xref),l=G3.getFromId(t,n.yref);for(var u in xue){var c=xue[u](n,s,l);c!==void 0&&(o[u]=c)}}a=Hlt.texttemplateStringForShapes(n.label.texttemplate,{},t._fullLayout._d3locale,o)}else a=n.label.text;var f={"data-index":r},h=n.label.font,d={"data-notex":1},v=i.append("g").attr(f).classed("shape-label",!0),x=v.append("text").attr(d).classed("shape-label-text",!0).text(a),b,p,E,k;if(n.path){var A=jlt(t,n),L=Glt(A,t);b=1/0,E=1/0,p=-1/0,k=-1/0;for(var _=0;_=e?i=t-n:i=n-t,-180/Math.PI*Math.atan2(i,a)}function Xlt(e,t,r,n,i,a,o){var s=i.label.textposition,l=i.label.textangle,u=i.label.padding,c=i.type,f=Math.PI/180*a,h=Math.sin(f),d=Math.cos(f),v=i.label.xanchor,x=i.label.yanchor,b,p,E,k;if(c==="line"){s==="start"?(b=e,p=t):s==="end"?(b=r,p=n):(b=(e+r)/2,p=(t+n)/2),v==="auto"&&(s==="start"?l==="auto"?r>e?v="left":re?v="right":re?v="right":re?v="left":r{"use strict";var Ylt=Mr(),Klt=Ylt.strTranslate,wue=gv(),Sue=Sg(),Jlt=Sue.drawMode,Mue=Sue.selectMode,Eue=ba(),Tue=va(),JL=HL(),$lt=JL.i000,Qlt=JL.i090,eut=JL.i180,tut=JL.i270,rut=e_(),kue=rut.clearOutlineControllers,WB=c_(),KL=WB.pointsOnRectangle,jB=WB.pointsOnEllipse,iut=WB.writePaths,nut=XL().newShapes,aut=XL().createShapeObj,out=VB(),sut=GB();Cue.exports=function e(t,r,n,i){i||(i=0);var a=n.gd;function o(){e(t,r,n,i++),(jB(t[0])||n.hasText)&&s({redrawing:!0})}function s(G){var N={};n.isActiveShape!==void 0&&(n.isActiveShape=!1,N=nut(r,n)),n.isActiveSelection!==void 0&&(n.isActiveSelection=!1,N=out(r,n),a._fullLayout._reselect=!0),Object.keys(N).length&&Eue.call((G||{}).redrawing?"relayout":"_guiRelayout",a,N)}var l=a._fullLayout,u=l._zoomlayer,c=n.dragmode,f=Jlt(c),h=Mue(c);(f||h)&&(a._fullLayout._outlining=!0),kue(a),r.attr("d",iut(t));var d,v,x,b,p;if(!i&&(n.isActiveShape||n.isActiveSelection)){p=lut([],t);var E=u.append("g").attr("class","outline-controllers");P(E),X()}if(f&&n.hasText){var k=u.select(".label-temp"),A=aut(r,n,n.dragmode);sut(a,"label-temp",A,k)}function L(G){x=+G.srcElement.getAttribute("data-i"),b=+G.srcElement.getAttribute("data-j"),d[x][b].moveFn=_}function _(G,N){if(t.length){var W=p[x][b][1],re=p[x][b][2],ae=t[x],_e=ae.length;if(KL(ae)){var Me=G,ke=N;if(n.isActiveSelection){var ge=Aue(ae,b);ge[1]===ae[b][1]?ke=0:Me=0}for(var ie=0;ie<_e;ie++)if(ie!==b){var Te=ae[ie];Te[1]===ae[b][1]&&(Te[1]=W+Me),Te[2]===ae[b][2]&&(Te[2]=re+ke)}if(ae[b][1]=W+Me,ae[b][2]=re+ke,!KL(ae))for(var Ee=0;Ee<_e;Ee++)for(var Ae=0;Ae1&&!(G.length===2&&G[1][0]==="Z")&&(b===0&&(G[0][0]="M"),t[x]=G,o(),s())}}function g(G,N){if(G===2){x=+N.srcElement.getAttribute("data-i"),b=+N.srcElement.getAttribute("data-j");var W=t[x];!KL(W)&&!jB(W)&&M()}}function P(G){d=[];for(var N=0;N{"use strict";var cut=xa(),zue=ba(),Lue=Mr(),j3=Qa(),fut=c_().readPaths,hut=$L(),eP=GB(),Fue=e_().clearOutlineControllers,ZB=va(),YB=ao(),dut=Vs().arrayEditor,Pue=gv(),Iue=Tg(),qb=cM(),Mp=h_(),XB=Mp.getPathString;Bue.exports={draw:KB,drawOne:que,eraseActiveShape:gut,drawLabel:eP};function KB(e){var t=e._fullLayout;t._shapeUpperLayer.selectAll("path").remove(),t._shapeLowerLayer.selectAll("path").remove(),t._shapeUpperLayer.selectAll("text").remove(),t._shapeLowerLayer.selectAll("text").remove();for(var r in t._plots){var n=t._plots[r].shapelayer;n&&(n.selectAll("path").remove(),n.selectAll("text").remove())}for(var i=0;io&&kt>s&&!rt.shiftKey?Pue.getCursor(Ct/Rt,1-Yt/kt):"move";Iue(t,xr),Te=xr.split("-")[0]}}function Ce(rt){QL(e)||(l&&(p=ae(r.xanchor)),u&&(E=_e(r.yanchor)),r.type==="path"?T=r.path:(d=l?r.x0:ae(r.x0),v=u?r.y0:_e(r.y0),x=l?r.x1:ae(r.x1),b=u?r.y1:_e(r.y1)),db?(k=v,C="y0",A=b,M="y1"):(k=b,C="y1",A=v,M="y0"),ze(rt),nt(i,r),qt(t,r,e),ie.moveFn=Te==="move"?ce:Ge,ie.altKey=rt.altKey)}function me(){QL(e)||(Iue(t),ct(i),Oue(t,e,r),zue.call("_guiRelayout",e,a.getUpdateObj()))}function Re(){QL(e)||ct(i)}function ce(rt,ot){if(r.type==="path"){var Rt=function(Yt){return Yt},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(p+rt)):(kt=function(xr){return Me(ae(xr)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(xr){return ke(_e(xr)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=Rue(T,kt,Ct))}else l?h("xanchor",r.xanchor=Me(p+rt)):(h("x0",r.x0=Me(d+rt)),h("x1",r.x1=Me(x+rt))),u?h("yanchor",r.yanchor=ke(E+ot)):(h("y0",r.y0=ke(v+ot)),h("y1",r.y1=ke(b+ot)));t.attr("d",XB(e,r)),nt(i,r),eP(e,n,r,F)}function Ge(rt,ot){if(f){var Rt=function(_r){return _r},kt=Rt,Ct=Rt;l?h("xanchor",r.xanchor=Me(p+rt)):(kt=function(Br){return Me(ae(Br)+rt)},q&&q.type==="date"&&(kt=Mp.encodeDate(kt))),u?h("yanchor",r.yanchor=ke(E+ot)):(Ct=function(Br){return ke(_e(Br)+ot)},H&&H.type==="date"&&(Ct=Mp.encodeDate(Ct))),h("path",r.path=Rue(T,kt,Ct))}else if(c){if(Te==="resize-over-start-point"){var Yt=d+rt,xr=u?v-ot:v+ot;h("x0",r.x0=l?Yt:Me(Yt)),h("y0",r.y0=u?xr:ke(xr))}else if(Te==="resize-over-end-point"){var er=x+rt,Ke=u?b-ot:b+ot;h("x1",r.x1=l?er:Me(er)),h("y1",r.y1=u?Ke:ke(Ke))}}else{var xt=function(_r){return Te.indexOf(_r)!==-1},bt=xt("n"),Lt=xt("s"),St=xt("w"),Et=xt("e"),dt=bt?k+ot:k,Ht=Lt?A+ot:A,$t=St?L+rt:L,fr=Et?_+rt:_;u&&(bt&&(dt=k-ot),Lt&&(Ht=A-ot)),(!u&&Ht-dt>s||u&&dt-Ht>s)&&(h(C,r[C]=u?dt:ke(dt)),h(M,r[M]=u?Ht:ke(Ht))),fr-$t>o&&(h(g,r[g]=l?$t:Me($t)),h(P,r[P]=l?fr:Me(fr)))}t.attr("d",XB(e,r)),nt(i,r),eP(e,n,r,F)}function nt(rt,ot){(l||u)&&Rt();function Rt(){var kt=ot.type!=="path",Ct=rt.selectAll(".visual-cue").data([0]),Yt=1;Ct.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":Yt}).classed("visual-cue",!0);var xr=ae(l?ot.xanchor:Lue.midRange(kt?[ot.x0,ot.x1]:Mp.extractPathCoords(ot.path,qb.paramIsX))),er=_e(u?ot.yanchor:Lue.midRange(kt?[ot.y0,ot.y1]:Mp.extractPathCoords(ot.path,qb.paramIsY)));if(xr=Mp.roundPositionForSharpStrokeRendering(xr,Yt),er=Mp.roundPositionForSharpStrokeRendering(er,Yt),l&&u){var Ke="M"+(xr-1-Yt)+","+(er-1-Yt)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";Ct.attr("d",Ke)}else if(l){var xt="M"+(xr-1-Yt)+","+(er-9-Yt)+"v18 h2 v-18 Z";Ct.attr("d",xt)}else{var bt="M"+(xr-9-Yt)+","+(er-1-Yt)+"h18 v2 h-18 Z";Ct.attr("d",bt)}}}function ct(rt){rt.selectAll(".visual-cue").remove()}function qt(rt,ot,Rt){var kt=ot.xref,Ct=ot.yref,Yt=j3.getFromId(Rt,kt),xr=j3.getFromId(Rt,Ct),er="";kt!=="paper"&&!Yt.autorange&&(er+=kt),Ct!=="paper"&&!xr.autorange&&(er+=Ct),YB.setClipUrl(rt,er?"clip"+Rt._fullLayout._uid+er:null,Rt)}}function Rue(e,t,r){return e.replace(qb.segmentRE,function(n){var i=0,a=n.charAt(0),o=qb.paramIsX[a],s=qb.paramIsY[a],l=qb.numParams[a],u=n.substr(1).replace(qb.paramRE,function(c){return i>=l||(o[i]?c=t(c):s[i]&&(c=r(c)),i++),c});return a+u})}function put(e,t){if(tP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeShapeIndex){Due(e);return}e._fullLayout._activeShapeIndex=n,e._fullLayout._deactivateShape=Due,KB(e)}}}function Due(e){if(tP(e)){var t=e._fullLayout._activeShapeIndex;t>=0&&(Fue(e),delete e._fullLayout._activeShapeIndex,KB(e))}}function gut(e){if(tP(e)){Fue(e);var t=e._fullLayout._activeShapeIndex,r=(e.layout||{}).shapes||[];if(t{"use strict";var S0=ba(),Nue=Xu(),Uue=af(),al=UL(),mut=rP().eraseActiveShape,iP=Mr(),Os=iP._,ol=Xue.exports={};ol.toImage={name:"toImage",title:function(e){var t=e._context.toImageButtonOptions||{},r=t.format||"png";return r==="png"?Os(e,"Download plot as a png"):Os(e,"Download plot")},icon:al.camera,click:function(e){var t=e._context.toImageButtonOptions,r={format:t.format||"png"};iP.notifier(Os(e,"Taking snapshot - this may take a few seconds"),"long"),["filename","width","height","scale"].forEach(function(n){n in t&&(r[n]=t[n])}),S0.call("downloadImage",e,r).then(function(n){iP.notifier(Os(e,"Snapshot succeeded")+" - "+n,"long")}).catch(function(){iP.notifier(Os(e,"Sorry, there was a problem downloading your snapshot!"),"long")})}};ol.sendDataToCloud={name:"sendDataToCloud",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.disk,click:function(e){Nue.sendDataToCloud(e)}};ol.editInChartStudio={name:"editInChartStudio",title:function(e){return Os(e,"Edit in Chart Studio")},icon:al.pencil,click:function(e){Nue.sendDataToCloud(e)}};ol.zoom2d={name:"zoom2d",_cat:"zoom",title:function(e){return Os(e,"Zoom")},attr:"dragmode",val:"zoom",icon:al.zoombox,click:Ov};ol.pan2d={name:"pan2d",_cat:"pan",title:function(e){return Os(e,"Pan")},attr:"dragmode",val:"pan",icon:al.pan,click:Ov};ol.select2d={name:"select2d",_cat:"select",title:function(e){return Os(e,"Box Select")},attr:"dragmode",val:"select",icon:al.selectbox,click:Ov};ol.lasso2d={name:"lasso2d",_cat:"lasso",title:function(e){return Os(e,"Lasso Select")},attr:"dragmode",val:"lasso",icon:al.lasso,click:Ov};ol.drawclosedpath={name:"drawclosedpath",title:function(e){return Os(e,"Draw closed freeform")},attr:"dragmode",val:"drawclosedpath",icon:al.drawclosedpath,click:Ov};ol.drawopenpath={name:"drawopenpath",title:function(e){return Os(e,"Draw open freeform")},attr:"dragmode",val:"drawopenpath",icon:al.drawopenpath,click:Ov};ol.drawline={name:"drawline",title:function(e){return Os(e,"Draw line")},attr:"dragmode",val:"drawline",icon:al.drawline,click:Ov};ol.drawrect={name:"drawrect",title:function(e){return Os(e,"Draw rectangle")},attr:"dragmode",val:"drawrect",icon:al.drawrect,click:Ov};ol.drawcircle={name:"drawcircle",title:function(e){return Os(e,"Draw circle")},attr:"dragmode",val:"drawcircle",icon:al.drawcircle,click:Ov};ol.eraseshape={name:"eraseshape",title:function(e){return Os(e,"Erase active shape")},icon:al.eraseshape,click:mut};ol.zoomIn2d={name:"zoomIn2d",_cat:"zoomin",title:function(e){return Os(e,"Zoom in")},attr:"zoom",val:"in",icon:al.zoom_plus,click:Ov};ol.zoomOut2d={name:"zoomOut2d",_cat:"zoomout",title:function(e){return Os(e,"Zoom out")},attr:"zoom",val:"out",icon:al.zoom_minus,click:Ov};ol.autoScale2d={name:"autoScale2d",_cat:"autoscale",title:function(e){return Os(e,"Autoscale")},attr:"zoom",val:"auto",icon:al.autoscale,click:Ov};ol.resetScale2d={name:"resetScale2d",_cat:"resetscale",title:function(e){return Os(e,"Reset axes")},attr:"zoom",val:"reset",icon:al.home,click:Ov};ol.hoverClosestCartesian={name:"hoverClosestCartesian",_cat:"hoverclosest",title:function(e){return Os(e,"Show closest data on hover")},attr:"hovermode",val:"closest",icon:al.tooltip_basic,gravity:"ne",click:Ov};ol.hoverCompareCartesian={name:"hoverCompareCartesian",_cat:"hoverCompare",title:function(e){return Os(e,"Compare data on hover")},attr:"hovermode",val:function(e){return e._fullLayout._isHoriz?"y":"x"},icon:al.tooltip_compare,gravity:"ne",click:Ov};function Ov(e,t){var r=t.currentTarget,n=r.getAttribute("data-attr"),i=r.getAttribute("data-val")||!0,a=e._fullLayout,o={},s=Uue.list(e,null,!0),l=a._cartesianSpikesEnabled,u,c;if(n==="zoom"){var f=i==="in"?.5:2,h=(1+f)/2,d=(1-f)/2,v;for(c=0;c{"use strict";var Yue=QB(),xut=Object.keys(Yue),Kue=["drawline","drawopenpath","drawclosedpath","drawcircle","drawrect","eraseshape"],Jue=["v1hovermode","hoverclosest","hovercompare","togglehover","togglespikelines"].concat(Kue),Z3=[],but=function(e){if(Jue.indexOf(e._cat||e.name)===-1){var t=e.name,r=(e._cat||e.name).toLowerCase();Z3.indexOf(t)===-1&&Z3.push(t),Z3.indexOf(r)===-1&&Z3.push(r)}};xut.forEach(function(e){but(Yue[e])});Z3.sort();$ue.exports={DRAW_MODES:Kue,backButtons:Jue,foreButtons:Z3}});var tN=ye((mir,Que)=>{"use strict";var gir=eN();Que.exports={editType:"modebar",orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"modebar"},bgcolor:{valType:"color",editType:"modebar"},color:{valType:"color",editType:"modebar"},activecolor:{valType:"color",editType:"modebar"},uirevision:{valType:"any",editType:"none"},add:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"},remove:{valType:"string",arrayOk:!0,dflt:"",editType:"modebar"}}});var tce=ye((yir,ece)=>{"use strict";var wut=Mr(),hM=va(),Tut=Vs(),Aut=tN();ece.exports=function(t,r){var n=t.modebar||{},i=Tut.newContainer(r,"modebar");function a(s,l){return wut.coerce(n,i,Aut,s,l)}a("orientation"),a("bgcolor",hM.addOpacity(r.paper_bgcolor,.5));var o=hM.contrast(hM.rgb(r.modebar.bgcolor));a("color",hM.addOpacity(o,.3)),a("activecolor",hM.addOpacity(o,.7)),a("uirevision",r.uirevision),a("add"),a("remove")}});var ace=ye((_ir,nce)=>{"use strict";var rN=xa(),Sut=uo(),aP=Mr(),rce=UL(),Mut=e6().version,Eut=new DOMParser;function ice(e){this.container=e.container,this.element=document.createElement("div"),this.update(e.graphInfo,e.buttons),this.container.appendChild(this.element)}var Tm=ice.prototype;Tm.update=function(e,t){this.graphInfo=e;var r=this.graphInfo._context,n=this.graphInfo._fullLayout,i="modebar-"+n._uid;this.element.setAttribute("id",i),this._uid=i,this.element.className="modebar",r.displayModeBar==="hover"&&(this.element.className+=" modebar--hover ease-bg"),n.modebar.orientation==="v"&&(this.element.className+=" vertical",t=t.reverse());var a=n.modebar,o="#"+i+" .modebar-group";document.querySelectorAll(o).forEach(function(f){f.style.backgroundColor=a.bgcolor});var s=!this.hasButtons(t),l=this.hasLogo!==r.displaylogo,u=this.locale!==r.locale;if(this.locale=r.locale,(s||l||u)&&(this.removeAllButtons(),this.updateButtons(t),r.watermark||r.displaylogo)){var c=this.getLogo();r.watermark&&(c.className=c.className+" watermark"),n.modebar.orientation==="v"?this.element.insertBefore(c,this.element.childNodes[0]):this.element.appendChild(c),this.hasLogo=!0}this.updateActiveButton(),aP.setStyleOnHover("#"+i+" .modebar-btn",".active",".icon path","fill: "+a.activecolor,"fill: "+a.color,this.element)};Tm.updateButtons=function(e){var t=this;this.buttons=e,this.buttonElements=[],this.buttonsNames=[],this.buttons.forEach(function(r){var n=t.createGroup();r.forEach(function(i){var a=i.name;if(!a)throw new Error("must provide button 'name' in button config");if(t.buttonsNames.indexOf(a)!==-1)throw new Error("button name '"+a+"' is taken");t.buttonsNames.push(a);var o=t.createButton(i);t.buttonElements.push(o),n.appendChild(o)}),t.element.appendChild(n)})};Tm.createGroup=function(){var e=document.createElement("div");e.className="modebar-group";var t=this.graphInfo._fullLayout.modebar;return e.style.backgroundColor=t.bgcolor,e};Tm.createButton=function(e){var t=this,r=document.createElement("a");r.setAttribute("rel","tooltip"),r.className="modebar-btn";var n=e.title;n===void 0?n=e.name:typeof n=="function"&&(n=n(this.graphInfo)),(n||n===0)&&r.setAttribute("data-title",n),e.attr!==void 0&&r.setAttribute("data-attr",e.attr);var i=e.val;i!==void 0&&(typeof i=="function"&&(i=i(this.graphInfo)),r.setAttribute("data-val",i));var a=e.click;if(typeof a!="function")throw new Error("must provide button 'click' function in button config");r.addEventListener("click",function(s){e.click(t.graphInfo,s),t.updateActiveButton(s.currentTarget)}),r.setAttribute("data-toggle",e.toggle||!1),e.toggle&&rN.select(r).classed("active",!0);var o=e.icon;return typeof o=="function"?r.appendChild(o()):r.appendChild(this.createIcon(o||rce.question)),r.setAttribute("data-gravity",e.gravity||"n"),r};Tm.createIcon=function(e){var t=Sut(e.height)?Number(e.height):e.ascent-e.descent,r="http://www.w3.org/2000/svg",n;if(e.path){n=document.createElementNS(r,"svg"),n.setAttribute("viewBox",[0,0,e.width,t].join(" ")),n.setAttribute("class","icon");var i=document.createElementNS(r,"path");i.setAttribute("d",e.path),e.transform?i.setAttribute("transform",e.transform):e.ascent!==void 0&&i.setAttribute("transform","matrix(1 0 0 -1 0 "+e.ascent+")"),n.appendChild(i)}if(e.svg){var a=Eut.parseFromString(e.svg,"application/xml");n=a.childNodes[0]}return n.setAttribute("height","1em"),n.setAttribute("width","1em"),n};Tm.updateActiveButton=function(e){var t=this.graphInfo._fullLayout,r=e!==void 0?e.getAttribute("data-attr"):null;this.buttonElements.forEach(function(n){var i=n.getAttribute("data-val")||!0,a=n.getAttribute("data-attr"),o=n.getAttribute("data-toggle")==="true",s=rN.select(n),l=function(f,h){var d=t.modebar,v=f.querySelector(".icon path");v&&(h||f.matches(":hover")?v.style.fill=d.activecolor:v.style.fill=d.color)};if(o){if(a===r){var u=!s.classed("active");s.classed("active",u),l(n,u)}}else{var c=a===null?a:aP.nestedProperty(t,a).get();s.classed("active",c===i),l(n,c===i)}})};Tm.hasButtons=function(e){var t=this.buttons;if(!t||e.length!==t.length)return!1;for(var r=0;r{"use strict";var Lut=af(),oce=lu(),iN=ba(),Put=rp().isUnifiedHover,Iut=ace(),oP=QB(),Rut=eN().DRAW_MODES,Dut=Mr().extendDeep;sce.exports=function(t){var r=t._fullLayout,n=t._context,i=r._modeBar;if(!n.displayModeBar&&!n.watermark){i&&(i.destroy(),delete r._modeBar);return}if(!Array.isArray(n.modeBarButtonsToRemove))throw new Error(["*modeBarButtonsToRemove* configuration options","must be an array."].join(" "));if(!Array.isArray(n.modeBarButtonsToAdd))throw new Error(["*modeBarButtonsToAdd* configuration options","must be an array."].join(" "));var a=n.modeBarButtons,o;Array.isArray(a)&&a.length?o=Nut(a):!n.displayModeBar&&n.watermark?o=[]:o=zut(t),i?i.update(t,o):r._modeBar=Iut(t,o)};function zut(e){var t=e._fullLayout,r=e._fullData,n=e._context;function i(N,W){if(typeof W=="string"){if(W.toLowerCase()===N.toLowerCase())return!0}else{var re=W.name,ae=W._cat||W.name;if(re===N||ae===N.toLowerCase())return!0}return!1}var a=t.modebar.add;typeof a=="string"&&(a=[a]);var o=t.modebar.remove;typeof o=="string"&&(o=[o]);var s=n.modeBarButtonsToAdd.concat(a.filter(function(N){for(var W=0;W1?(P=["toggleHover"],T=["resetViews"]):f?(g=["zoomInGeo","zoomOutGeo"],P=["hoverClosestGeo"],T=["resetGeo"]):c?(P=["hoverClosest3d"],T=["resetCameraDefault3d","resetCameraLastSave3d"]):x?(g=["zoomInMapbox","zoomOutMapbox"],P=["toggleHover"],T=["resetViewMapbox"]):b?(g=["zoomInMap","zoomOutMap"],P=["toggleHover"],T=["resetViewMap"]):h?P=["hoverClosestPie"]:k?(P=["hoverClosestCartesian","hoverCompareCartesian"],T=["resetViewSankey"]):P=["toggleHover"],u&&P.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(Out(r)||L)&&(P=[]),u&&!A&&(g=["zoomIn2d","zoomOut2d","autoScale2d"],T[0]!=="resetViews"&&(T=["resetScale2d"])),c?F=["zoom3d","pan3d","orbitRotation","tableRotation"]:u&&!A||v?F=["zoom2d","pan2d"]:x||b||f?F=["pan2d"]:p&&(F=["zoom2d"]),qut(r)&&F.push("select2d","lasso2d");var q=[],V=function(N){q.indexOf(N)===-1&&P.indexOf(N)!==-1&&q.push(N)};if(Array.isArray(s)){for(var H=[],X=0;X{"use strict";uce.exports={moduleType:"component",name:"modebar",layoutAttributes:tN(),supplyLayoutDefaults:tce(),manage:lce()}});var aN=ye((wir,cce)=>{"use strict";var Uut=Nh().FROM_BL;cce.exports=function(t,r,n){n===void 0&&(n=Uut[t.constraintoward||"center"]);var i=[t.r2l(t.range[0]),t.r2l(t.range[1])],a=i[0]+(i[1]-i[0])*n;t.range=t._input.range=[t.l2r(a+(i[0]-a)*r),t.l2r(a+(i[1]-a)*r)],t.setScale()}});var Bb=ye(dM=>{"use strict";var Ob=Mr(),oN=wg(),Mg=af().id2name,Vut=Cd(),fce=aN(),Hut=ym(),Gut=es().ALMOST_EQUAL,jut=Nh().FROM_BL;dM.handleDefaults=function(e,t,r){var n=r.axIds,i=r.axHasImage,a=t._axisConstraintGroups=[],o=t._axisMatchGroups=[],s,l,u,c,f,h,d,v;for(s=0;sa?r.substr(a):n.substr(i))+o}function Zut(e,t){for(var r=t._size,n=r.h/r.w,i={},a=Object.keys(e),o=0;oGut*v&&!E)){for(a=0;aF&&reP&&(P=re);var _e=(P-g)/(2*T);f/=_e,g=l.l2r(g),P=l.l2r(P),l.range=l._input.range=_{"use strict";var lP=xa(),Bv=ba(),Jp=Xu(),M0=Mr(),uN=Pl(),cN=lM(),vM=va(),X3=ao(),pce=Mb(),xce=nN(),pM=Qa(),ky=Nh(),bce=Bb(),Xut=bce.enforce,Yut=bce.clean,gce=wg().doAutoRange,wce="start",Kut="middle",Tce="end",Jut=ad().zindexSeparator;ld.layoutStyles=function(e){return M0.syncOrAsync([Jp.doAutoMargin,Qut],e)};function $ut(e,t,r){for(var n=0;n=e[1]||i[1]<=e[0])&&a[0]t[0])return!0}return!1}function Qut(e){var t=e._fullLayout,r=t._size,n=r.p,i=pM.list(e,"",!0),a,o,s,l,u,c;if(t._paperdiv.style({width:e._context.responsive&&t.autosize&&!e._context._hasZeroWidth&&!e.layout.width?"100%":t.width+"px",height:e._context.responsive&&t.autosize&&!e._context._hasZeroHeight&&!e.layout.height?"100%":t.height+"px"}).selectAll(".main-svg").call(X3.setSize,t.width,t.height),e._context.setBackground(e,t.paper_bgcolor),ld.drawMainTitle(e),xce.manage(e),!t._has("cartesian"))return Jp.previousPromises(e);function f(Ce,me,Re){var ce=Ce._lw/2;if(Ce._id.charAt(0)==="x"){if(me){if(Re==="top")return me._offset-n-ce}else return r.t+r.h*(1-(Ce.position||0))+ce%1;return me._offset+me._length+n+ce}if(me){if(Re==="right")return me._offset+me._length+n+ce}else return r.l+r.w*(Ce.position||0)+ce%1;return me._offset-n-ce}for(a=0;a0){ict(e,a,u,l),s.attr({x:o,y:a,"text-anchor":n,dy:_ce(t.yanchor)}).call(uN.positionText,o,a);var c=(t.text.match(uN.BR_TAG_ALL)||[]).length;if(c){var f=ky.LINE_SPACING*c+ky.MID_SHIFT;t.y===0&&(f=-f),s.selectAll(".line").each(function(){var b=+this.getAttribute("dy").slice(0,-2)-f+"em";this.setAttribute("dy",b)})}var h=lP.selectAll(".gtitle-subtitle");if(h.node()){var d=s.node().getBBox(),v=d.y+d.height,x=v+pce.SUBTITLE_PADDING_EM*t.subtitle.font.size;h.attr({x:o,y:x,"text-anchor":n,dy:_ce(t.yanchor)}).call(uN.positionText,o,x)}}}};function ect(e,t,r,n,i){var a=t.yref==="paper"?e._fullLayout._size.h:e._fullLayout.height,o=M0.isTopAnchor(t)?n:n-i,s=r==="b"?a-o:o;return M0.isTopAnchor(t)&&r==="t"||M0.isBottomAnchor(t)&&r==="b"?!1:s.5?"t":"b",o=e._fullLayout.margin[a],s=0;return t.yref==="paper"?s=r+t.pad.t+t.pad.b:t.yref==="container"&&(s=tct(a,n,i,e._fullLayout.height,r)+t.pad.t+t.pad.b),s>o?s:0}function ict(e,t,r,n){var i="title.automargin",a=e._fullLayout.title,o=a.y>.5?"t":"b",s={x:a.x,y:a.y,t:0,b:0},l={};a.yref==="paper"&&ect(e,a,o,t,n)?s[o]=r:a.yref==="container"&&(l[o]=r,e._fullLayout._reservedMargin[i]=l),Jp.allowAutoMargin(e,i),Jp.autoMargin(e,i,s)}function nct(e,t){var r=e.title,n=e._size,i=0;switch(t===wce?i=r.pad.l:t===Tce&&(i=-r.pad.r),r.xref){case"paper":return n.l+n.w*r.x+i;case"container":default:return e.width*r.x+i}}function act(e,t){var r=e.title,n=e._size,i=0;if(t==="0em"||!t?i=-r.pad.b:t===ky.CAP_SHIFT+"em"&&(i=r.pad.t),r.y==="auto")return n.t/2;switch(r.yref){case"paper":return n.t+n.h-n.h*r.y+i;case"container":default:return e.height-e.height*r.y+i}}function _ce(e){return e==="top"?ky.CAP_SHIFT+.3+"em":e==="bottom"?"-0.3em":ky.MID_SHIFT+"em"}function oct(e){var t=e.title,r=Kut;return M0.isRightAnchor(t)?r=Tce:M0.isLeftAnchor(t)&&(r=wce),r}function sct(e){var t=e.title,r="0em";return M0.isTopAnchor(t)?r=ky.CAP_SHIFT+"em":M0.isMiddleAnchor(t)&&(r=ky.MID_SHIFT+"em"),r}ld.doTraceStyle=function(e){var t=e.calcdata,r=[],n;for(n=0;n{"use strict";var lct=c_().readPaths,uct=$L(),Ace=e_().clearOutlineControllers,fN=va(),Sce=ao(),cct=Vs().arrayEditor,Mce=h_(),fct=Mce.getPathString;kce.exports={draw:uP,drawOne:Ece,activateLastSelection:vct};function uP(e){var t=e._fullLayout;Ace(e),t._selectionLayer.selectAll("path").remove();for(var r in t._plots){var n=t._plots[r].selectionLayer;n&&n.selectAll("path").remove()}for(var i=0;i=0;b--){var p=o.append("path").attr(l).style("opacity",b?.1:u).call(fN.stroke,f).call(fN.fill,c).call(Sce.dashLine,b?"solid":d,b?4+h:h);if(hct(p,e,n),v){var E=cct(e.layout,"selections",n);p.style({cursor:"move"});var k={element:p.node(),plotinfo:i,gd:e,editHelpers:E,isActiveSelection:!0},A=lct(s,e);uct(A,p,k)}else p.style("pointer-events",b?"all":"none");x[b]=p}var L=x[0],_=x[1];_.node().addEventListener("click",function(){return dct(e,L)})}}function hct(e,t,r){var n=r.xref+r.yref;Sce.setClipUrl(e,"clip"+t._fullLayout._uid+n,t)}function dct(e,t){if(cP(e)){var r=t.node(),n=+r.getAttribute("data-index");if(n>=0){if(n===e._fullLayout._activeSelectionIndex){hN(e);return}e._fullLayout._activeSelectionIndex=n,e._fullLayout._deactivateSelection=hN,uP(e)}}}function vct(e){if(cP(e)){var t=e._fullLayout.selections.length-1;e._fullLayout._activeSelectionIndex=t,e._fullLayout._deactivateSelection=hN,uP(e)}}function hN(e){if(cP(e)){var t=e._fullLayout._activeSelectionIndex;t>=0&&(Ace(e),delete e._fullLayout._activeSelectionIndex,uP(e))}}});var Lce=ye((Mir,Cce)=>{function pct(){var e,t=0,r=!1;function n(i,a){return e.list.push({type:i,data:a?JSON.parse(JSON.stringify(a)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(i,a){return n("check",{seg1:i,seg2:a})},segmentChop:function(i,a){return n("div_seg",{seg:i,pt:a}),n("chop",{seg:i,pt:a})},statusRemove:function(i){return n("pop_seg",{seg:i})},segmentUpdate:function(i){return n("seg_update",{seg:i})},segmentNew:function(i,a){return n("new_seg",{seg:i,primary:a})},segmentRemove:function(i){return n("rem_seg",{seg:i})},tempStatus:function(i,a,o){return n("temp_status",{seg:i,above:a,below:o})},rewind:function(i){return n("rewind",{seg:i})},status:function(i,a,o){return n("status",{seg:i,above:a,below:o})},vert:function(i){return i===r?e:(r=i,n("vert",{x:i}))},log:function(i){return typeof i!="string"&&(i=JSON.stringify(i,!1," ")),n("log",{txt:i})},reset:function(){return n("reset")},selected:function(i){return n("selected",{segs:i})},chainStart:function(i){return n("chain_start",{seg:i})},chainRemoveHead:function(i,a){return n("chain_rem_head",{index:i,pt:a})},chainRemoveTail:function(i,a){return n("chain_rem_tail",{index:i,pt:a})},chainNew:function(i,a){return n("chain_new",{pt1:i,pt2:a})},chainMatch:function(i){return n("chain_match",{index:i})},chainClose:function(i){return n("chain_close",{index:i})},chainAddHead:function(i,a){return n("chain_add_head",{index:i,pt:a})},chainAddTail:function(i,a){return n("chain_add_tail",{index:i,pt:a})},chainConnect:function(i,a){return n("chain_con",{index1:i,index2:a})},chainReverse:function(i){return n("chain_rev",{index:i})},chainJoin:function(i,a){return n("chain_join",{index1:i,index2:a})},done:function(){return n("done")}},e}Cce.exports=pct});var Ice=ye((Eir,Pce)=>{function gct(e){typeof e!="number"&&(e=1e-10);var t={epsilon:function(r){return typeof r=="number"&&(e=r),e},pointAboveOrOnLine:function(r,n,i){var a=n[0],o=n[1],s=i[0],l=i[1],u=r[0],c=r[1];return(s-a)*(c-o)-(l-o)*(u-a)>=-e},pointBetween:function(r,n,i){var a=r[1]-n[1],o=i[0]-n[0],s=r[0]-n[0],l=i[1]-n[1],u=s*o+a*l;if(u-e)},pointsSameX:function(r,n){return Math.abs(r[0]-n[0])e!=s-a>e&&(o-c)*(a-f)/(s-f)+c-i>e&&(l=!l),o=c,s=f}return l}};return t}Pce.exports=gct});var Dce=ye((kir,Rce)=>{var mct={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(t===null||t===e.root)},isEmpty:function(){return e.root.next===null},getHead:function(){return e.root.next},insertBefore:function(t,r){for(var n=e.root,i=e.root.next;i!==null;){if(r(i)){t.prev=i.prev,t.next=i,i.prev.next=t,i.prev=t;return}n=i,i=i.next}n.next=t,t.prev=n,t.next=null},findTransition:function(t){for(var r=e.root,n=e.root.next;n!==null&&!t(n);)r=n,n=n.next;return{before:r===e.root?null:r,after:n,insert:function(i){return i.prev=r,i.next=n,r.next=i,n!==null&&(n.prev=i),i}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}};Rce.exports=mct});var Fce=ye((Cir,zce)=>{var mM=Dce();function yct(e,t,r){function n(v,x){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:null,below:null},otherFill:null}}function i(v,x,b){return{id:r?r.segmentId():-1,start:v,end:x,myFill:{above:b.myFill.above,below:b.myFill.below},otherFill:null}}var a=mM.create();function o(v,x,b,p,E,k){var A=t.pointsCompare(x,E);return A!==0?A:t.pointsSame(b,k)?0:v!==p?v?1:-1:t.pointAboveOrOnLine(b,p?E:k,p?k:E)?1:-1}function s(v,x){a.insertBefore(v,function(b){var p=o(v.isStart,v.pt,x,b.isStart,b.pt,b.other.pt);return p<0})}function l(v,x){var b=mM.node({isStart:!0,pt:v.start,seg:v,primary:x,other:null,status:null});return s(b,v.end),b}function u(v,x,b){var p=mM.node({isStart:!1,pt:x.end,seg:x,primary:b,other:v,status:null});v.other=p,s(p,v.pt)}function c(v,x){var b=l(v,x);return u(b,v,x),b}function f(v,x){r&&r.segmentChop(v.seg,x),v.other.remove(),v.seg.end=x,v.other.pt=x,s(v.other,v.pt)}function h(v,x){var b=i(x,v.seg.end,v.seg);return f(v,x),c(b,v.primary)}function d(v,x){var b=mM.create();function p(H,X){var G=H.seg.start,N=H.seg.end,W=X.seg.start,re=X.seg.end;return t.pointsCollinear(G,W,re)?t.pointsCollinear(N,W,re)||t.pointAboveOrOnLine(N,W,re)?1:-1:t.pointAboveOrOnLine(G,W,re)?1:-1}function E(H){return b.findTransition(function(X){var G=p(H,X.ev);return G>0})}function k(H,X){var G=H.seg,N=X.seg,W=G.start,re=G.end,ae=N.start,_e=N.end;r&&r.checkIntersection(G,N);var Me=t.linesIntersect(W,re,ae,_e);if(Me===!1){if(!t.pointsCollinear(W,re,ae)||t.pointsSame(W,_e)||t.pointsSame(re,ae))return!1;var ke=t.pointsSame(W,ae),ge=t.pointsSame(re,_e);if(ke&&ge)return X;var ie=!ke&&t.pointBetween(W,ae,_e),Te=!ge&&t.pointBetween(re,ae,_e);if(ke)return Te?h(X,re):h(H,_e),X;ie&&(ge||(Te?h(X,re):h(H,_e)),h(X,W))}else Me.alongA===0&&(Me.alongB===-1?h(H,ae):Me.alongB===0?h(H,Me.pt):Me.alongB===1&&h(H,_e)),Me.alongB===0&&(Me.alongA===-1?h(X,W):Me.alongA===0?h(X,Me.pt):Me.alongA===1&&h(X,re));return!1}for(var A=[];!a.isEmpty();){var L=a.getHead();if(r&&r.vert(L.pt[0]),L.isStart){let H=function(){if(C){var X=k(L,C);if(X)return X}return M?k(L,M):!1};var V=H;r&&r.segmentNew(L.seg,L.primary);var _=E(L),C=_.before?_.before.ev:null,M=_.after?_.after.ev:null;r&&r.tempStatus(L.seg,C?C.seg:!1,M?M.seg:!1);var g=H();if(g){if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,P&&(g.seg.myFill.above=!g.seg.myFill.above)}else g.seg.otherFill=L.seg.myFill;r&&r.segmentUpdate(g.seg),L.other.remove(),L.remove()}if(a.getHead()!==L){r&&r.rewind(L.seg);continue}if(e){var P;L.seg.myFill.below===null?P=!0:P=L.seg.myFill.above!==L.seg.myFill.below,M?L.seg.myFill.below=M.seg.myFill.above:L.seg.myFill.below=v,P?L.seg.myFill.above=!L.seg.myFill.below:L.seg.myFill.above=L.seg.myFill.below}else if(L.seg.otherFill===null){var T;M?L.primary===M.primary?T=M.seg.otherFill.above:T=M.seg.myFill.above:T=L.primary?x:v,L.seg.otherFill={above:T,below:T}}r&&r.status(L.seg,C?C.seg:!1,M?M.seg:!1),L.other.status=_.insert(mM.node({ev:L}))}else{var F=L.status;if(F===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(b.exists(F.prev)&&b.exists(F.next)&&k(F.prev.ev,F.next.ev),r&&r.statusRemove(F.ev.seg),F.remove(),!L.primary){var q=L.seg.myFill;L.seg.myFill=L.seg.otherFill,L.seg.otherFill=q}A.push(L.seg)}a.getHead().remove()}return r&&r.done(),A}return e?{addRegion:function(v){for(var x,b=v[v.length-1],p=0;p{function _ct(e,t,r){var n=[],i=[];return e.forEach(function(a){var o=a.start,s=a.end;if(t.pointsSame(o,s)){console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");return}r&&r.chainStart(a);var l={index:0,matches_head:!1,matches_pt1:!1},u={index:0,matches_head:!1,matches_pt1:!1},c=l;function f(V,H,X){return c.index=V,c.matches_head=H,c.matches_pt1=X,c===l?(c=u,!1):(c=null,!0)}for(var h=0;h{function yM(e,t,r){var n=[];return e.forEach(function(i){var a=(i.myFill.above?8:0)+(i.myFill.below?4:0)+(i.otherFill&&i.otherFill.above?2:0)+(i.otherFill&&i.otherFill.below?1:0);t[a]!==0&&n.push({id:r?r.segmentId():-1,start:i.start,end:i.end,myFill:{above:t[a]===1,below:t[a]===2},otherFill:null})}),r&&r.selected(n),n}var xct={union:function(e,t){return yM(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return yM(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return yM(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return yM(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return yM(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};Bce.exports=xct});var Vce=ye((Iir,Uce)=>{var bct={toPolygon:function(e,t){function r(a){if(a.length<=0)return e.segments({inverted:!1,regions:[]});function o(u){var c=u.slice(0,u.length-1);return e.segments({inverted:!1,regions:[c]})}for(var s=o(a[0]),l=1;l{var wct=Lce(),Tct=Ice(),Hce=Fce(),Act=Oce(),_M=Nce(),Gce=Vce(),E0=!1,xM=Tct(),Ep;Ep={buildLog:function(e){return e===!0?E0=wct():e===!1&&(E0=!1),E0===!1?!1:E0.list},epsilon:function(e){return xM.epsilon(e)},segments:function(e){var t=Hce(!0,xM,E0);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){var r=Hce(!1,xM,E0);return{combined:r.calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:_M.union(e.combined,E0),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:_M.intersect(e.combined,E0),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:_M.difference(e.combined,E0),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:_M.differenceRev(e.combined,E0),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:_M.xor(e.combined,E0),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:Act(e.segments,xM,E0),inverted:e.inverted}},polygonFromGeoJSON:function(e){return Gce.toPolygon(Ep,e)},polygonToGeoJSON:function(e){return Gce.fromPolygon(Ep,xM,e)},union:function(e,t){return bM(e,t,Ep.selectUnion)},intersect:function(e,t){return bM(e,t,Ep.selectIntersect)},difference:function(e,t){return bM(e,t,Ep.selectDifference)},differenceRev:function(e,t){return bM(e,t,Ep.selectDifferenceRev)},xor:function(e,t){return bM(e,t,Ep.selectXor)}};function bM(e,t,r){var n=Ep.segments(e),i=Ep.segments(t),a=Ep.combine(n,i),o=r(a);return Ep.polygon(o)}typeof window=="object"&&(window.PolyBool=Ep);jce.exports=Ep});var Xce=ye((Dir,Zce)=>{Zce.exports=function(t,r,n,i){var a=t[0],o=t[1],s=!1;n===void 0&&(n=0),i===void 0&&(i=r.length);for(var l=i-n,u=0,c=l-1;uo!=v>o&&a<(d-f)*(o-h)/(v-h)+f;x&&(s=!s)}return s}});var wM=ye((zir,Yce)=>{"use strict";var vN=m6().dot,fP=es().BADNUM,hP=Yce.exports={};hP.tester=function(t){var r=t.slice(),n=r[0][0],i=n,a=r[0][1],o=a,s;for((r[r.length-1][0]!==r[0][0]||r[r.length-1][1]!==r[0][1])&&r.push(r[0]),s=1;si||p===fP||po||x&&u(v))}function f(v,x){var b=v[0],p=v[1];if(b===fP||bi||p===fP||po)return!1;var E=r.length,k=r[0][0],A=r[0][1],L=0,_,C,M,g,P;for(_=1;_Math.max(C,k)||p>Math.max(M,A)))if(ps||Math.abs(vN(f,u))>i)return!0;return!1};hP.filter=function(t,r){var n=[t[0]],i=0,a=0;function o(l){t.push(l);var u=n.length,c=i;n.splice(a+1);for(var f=c+1;f1){var s=t.pop();o(s)}return{addPt:o,raw:t,filtered:n}}});var Jce=ye((Fir,Kce)=>{"use strict";Kce.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}});var _fe=ye((qir,yfe)=>{"use strict";var $ce=Wce(),Sct=Xce(),SM=ba(),Mct=ao().dashStyle,TM=va(),Ect=Nc(),kct=rp().makeEventData,LM=Sg(),Cct=LM.freeMode,Lct=LM.rectMode,MM=LM.drawMode,yN=LM.openMode,_N=LM.selectMode,Qce=h_(),efe=cM(),afe=$L(),ofe=e_().clearOutline,sfe=c_(),pN=sfe.handleEllipse,Pct=sfe.readPaths,Ict=XL().newShapes,Rct=VB(),Dct=dN().activateLastSelection,vP=Mr(),zct=vP.sorterAsc,lfe=wM(),AM=P6(),k0=af().getFromId,Fct=lM(),qct=gM().redrawReglTraces,pP=Jce(),Am=pP.MINSELECT,Oct=lfe.filter,xN=lfe.tester,bN=GL(),tfe=bN.p2r,Bct=bN.axValue,Nct=bN.getTransform;function wN(e){return e.subplot!==void 0}function Uct(e,t,r,n,i){var a=!wN(n),o=Cct(i),s=Lct(i),l=yN(i),u=MM(i),c=_N(i),f=i==="drawline",h=i==="drawcircle",d=f||h,v=n.gd,x=v._fullLayout,b=c&&x.newselection.mode==="immediate"&&a,p=x._zoomlayer,E=n.element.getBoundingClientRect(),k=n.plotinfo,A=Nct(k),L=t-E.left,_=r-E.top;x._calcInverseTransform(v);var C=vP.apply3DTransform(x._invTransform)(L,_);L=C[0],_=C[1];var M=x._invScaleX,g=x._invScaleY,P=L,T=_,F="M"+L+","+_,q=n.xaxes[0],V=n.yaxes[0],H=q._length,X=V._length,G=e.altKey&&!(MM(i)&&l),N,W,re,ae,_e,Me,ke;cfe(e,v,n),o&&(N=Oct([[L,_]],pP.BENDPX));var ge=p.selectAll("path.select-outline-"+k.id).data([1]),ie=u?x.newshape:x.newselection;u&&(n.hasText=ie.label.text||ie.label.texttemplate);var Te=u&&!l?ie.fillcolor:"rgba(0,0,0,0)",Ee=ie.line.color||(a?TM.contrast(v._fullLayout.plot_bgcolor):"#7f7f7f");ge.enter().append("path").attr("class","select-outline select-outline-"+k.id).style({opacity:u?ie.opacity/2:1,"stroke-dasharray":Mct(ie.line.dash,ie.line.width),"stroke-width":ie.line.width+"px","shape-rendering":"crispEdges"}).call(TM.stroke,Ee).call(TM.fill,Te).attr("fill-rule","evenodd").classed("cursor-move",!!u).attr("transform",A).attr("d",F+"Z");var Ae=p.append("path").attr("class","zoombox-corners").style({fill:TM.background,stroke:TM.defaultLine,"stroke-width":1}).attr("transform",A).attr("d","M0,0Z");if(u&&n.hasText){var ze=p.select(".label-temp");ze.empty()&&(ze=p.append("g").classed("label-temp",!0).classed("select-outline",!0).style({opacity:.8}))}var Ce=x._uid+pP.SELECTID,me=[],Re=gP(v,n.xaxes,n.yaxes,n.subplot);b&&!e.shiftKey&&(n._clearSubplotSelections=function(){if(a){var Ge=q._id,nt=V._id;pfe(v,Ge,nt,Re);for(var ct=(v.layout||{}).selections||[],qt=[],rt=!1,ot=0;ot=0){v._fullLayout._deactivateShape(v);return}if(!u){var ct=x.clickmode;AM.done(Ce).then(function(){if(AM.clear(Ce),Ge===2){for(ge.remove(),_e=0;_e-1&&ufe(nt,v,n.xaxes,n.yaxes,n.subplot,n,ge),ct==="event"&&CM(v,void 0);Ect.click(v,nt,k.id)}).catch(vP.error)}},n.doneFn=function(){Ae.remove(),AM.done(Ce).then(function(){AM.clear(Ce),!b&&ae&&n.selectionDefs&&(ae.subtract=G,n.selectionDefs.push(ae),n.mergedPolygons.length=0,[].push.apply(n.mergedPolygons,re)),(b||u)&&EM(n,b),n.doneFnCompleted&&n.doneFnCompleted(me),c&&CM(v,ke)}).catch(vP.error)}}function ufe(e,t,r,n,i,a,o){var s=t._hoverdata,l=t._fullLayout,u=l.clickmode,c=u.indexOf("event")>-1,f=[],h,d,v,x,b,p,E,k,A,L;if(Wct(s)){cfe(e,t,a),h=gP(t,r,n,i);var _=Zct(s,h),C=_.pointNumbers.length>0;if(C?Xct(h,_):Yct(h)&&(E=ife(_))){for(o&&o.remove(),L=0;L=0}function jct(e){return e._fullLayout._activeSelectionIndex>=0}function EM(e,t){var r=e.dragmode,n=e.plotinfo,i=e.gd;Gct(i)&&i._fullLayout._deactivateShape(i),jct(i)&&i._fullLayout._deactivateSelection(i);var a=i._fullLayout,o=a._zoomlayer,s=MM(r),l=_N(r);if(s||l){var u=o.selectAll(".select-outline-"+n.id);if(u&&i._fullLayout._outlining){var c;s&&(c=Ict(u,e)),c&&SM.call("_guiRelayout",i,{shapes:c});var f;l&&!wN(e)&&(f=Rct(u,e)),f&&(i._fullLayout._noEmitSelectedAtStart=!0,SM.call("_guiRelayout",i,{selections:f}).then(function(){t&&Dct(i)})),i._fullLayout._outlining=!1}}n.selection={},n.selection.selectionDefs=e.selectionDefs=[],n.selection.mergedPolygons=e.mergedPolygons=[]}function rfe(e){return e._id}function gP(e,t,r,n){if(!e.calcdata)return[];var i=[],a=t.map(rfe),o=r.map(rfe),s,l,u;for(u=0;u0,a=i?n[0]:r;return t.selectedpoints?t.selectedpoints.indexOf(a)>-1:!1}function Xct(e,t){var r=[],n,i,a,o;for(o=0;o0&&r.push(n);if(r.length===1&&(a=r[0]===t.searchInfo,a&&(i=t.searchInfo.cd[0].trace,i.selectedpoints.length===t.pointNumbers.length))){for(o=0;o1||(t+=n.selectedpoints.length,t>1)))return!1;return t===1}function kM(e,t,r){var n;for(n=0;n-1&&t;if(!o&&t){var Ge=nfe(e,!0);if(Ge.length){var nt=Ge[0].xref,ct=Ge[0].yref;if(nt&&ct){var qt=gfe(Ge),rt=mfe([k0(e,nt,"x"),k0(e,ct,"y")]);rt(me,qt)}}e._fullLayout._noEmitSelectedAtStart?e._fullLayout._noEmitSelectedAtStart=!1:ce&&CM(e,me),h._reselect=!1}if(!o&&h._deselect){var ot=h._deselect;s=ot.xref,l=ot.yref,$ct(s,l,c)||pfe(e,s,l,n),ce&&(me.points.length?CM(e,me):SN(e)),h._deselect=!1}return{eventData:me,selectionTesters:r}}function Jct(e){var t=e.calcdata;if(t)for(var r=0;r{"use strict";xfe.exports=[{path:"",backoff:0},{path:"M-2.4,-3V3L0.6,0Z",backoff:.6},{path:"M-3.7,-2.5V2.5L1.3,0Z",backoff:1.3},{path:"M-4.45,-3L-1.65,-0.2V0.2L-4.45,3L1.55,0Z",backoff:1.55},{path:"M-2.2,-2.2L-0.2,-0.2V0.2L-2.2,2.2L-1.4,3L1.6,0L-1.4,-3Z",backoff:1.6},{path:"M-4.4,-2.1L-0.6,-0.2V0.2L-4.4,2.1L-4,3L2,0L-4,-3Z",backoff:2},{path:"M2,0A2,2 0 1,1 0,-2A2,2 0 0,1 2,0Z",backoff:0,noRotate:!0},{path:"M2,2V-2H-2V2Z",backoff:0,noRotate:!0}]});var PM=ye((Bir,bfe)=>{"use strict";bfe.exports={axisRefDescription:function(e,t,r){return["If set to a",e,"axis id (e.g. *"+e+"* or","*"+e+"2*), the `"+e+"` position refers to a",e,"coordinate. If set to *paper*, the `"+e+"`","position refers to the distance from the",t,"of the plotting","area in normalized coordinates where *0* (*1*) corresponds to the",t,"("+r+"). If set to a",e,"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",t,"of the domain of that axis: e.g.,","*"+e+"2 domain* refers to the domain of the second",e," axis and a",e,"position of 0.5 refers to the","point between the",t,"and the",r,"of the domain of the","second",e,"axis."].join(" ")}}});var Nb=ye((Uir,Afe)=>{"use strict";var wfe=MN(),Tfe=Su(),mP=ad(),ift=Vs().templatedArray,Nir=PM();Afe.exports=ift("annotation",{visible:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},text:{valType:"string",editType:"calc+arraydraw"},textangle:{valType:"angle",dflt:0,editType:"calc+arraydraw"},font:Tfe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),width:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},height:{valType:"number",min:1,dflt:null,editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},align:{valType:"enumerated",values:["left","center","right"],dflt:"center",editType:"arraydraw"},valign:{valType:"enumerated",values:["top","middle","bottom"],dflt:"middle",editType:"arraydraw"},bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},bordercolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},borderpad:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},borderwidth:{valType:"number",min:0,dflt:1,editType:"calc+arraydraw"},showarrow:{valType:"boolean",dflt:!0,editType:"calc+arraydraw"},arrowcolor:{valType:"color",editType:"arraydraw"},arrowhead:{valType:"integer",min:0,max:wfe.length,dflt:1,editType:"arraydraw"},startarrowhead:{valType:"integer",min:0,max:wfe.length,dflt:1,editType:"arraydraw"},arrowside:{valType:"flaglist",flags:["end","start"],extras:["none"],dflt:"end",editType:"arraydraw"},arrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},startarrowsize:{valType:"number",min:.3,dflt:1,editType:"calc+arraydraw"},arrowwidth:{valType:"number",min:.1,editType:"calc+arraydraw"},standoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},startstandoff:{valType:"number",min:0,dflt:0,editType:"calc+arraydraw"},ax:{valType:"any",editType:"calc+arraydraw"},ay:{valType:"any",editType:"calc+arraydraw"},axref:{valType:"enumerated",dflt:"pixel",values:["pixel",mP.idRegex.x.toString()],editType:"calc"},ayref:{valType:"enumerated",dflt:"pixel",values:["pixel",mP.idRegex.y.toString()],editType:"calc"},xref:{valType:"enumerated",values:["paper",mP.idRegex.x.toString()],editType:"calc"},x:{valType:"any",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},xshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},yref:{valType:"enumerated",values:["paper",mP.idRegex.y.toString()],editType:"calc"},y:{valType:"any",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"auto",editType:"calc+arraydraw"},yshift:{valType:"number",dflt:0,editType:"calc+arraydraw"},clicktoshow:{valType:"enumerated",values:[!1,"onoff","onout"],dflt:!1,editType:"arraydraw"},xclick:{valType:"any",editType:"arraydraw"},yclick:{valType:"any",editType:"arraydraw"},hovertext:{valType:"string",editType:"arraydraw"},hoverlabel:{bgcolor:{valType:"color",editType:"arraydraw"},bordercolor:{valType:"color",editType:"arraydraw"},font:Tfe({editType:"arraydraw"}),editType:"arraydraw"},captureevents:{valType:"boolean",editType:"arraydraw"},editType:"calc"})});var Sm=ye((Vir,Sfe)=>{"use strict";Sfe.exports={PTS_LINESONLY:20,minTolerance:.2,toleranceGrowth:10,maxScreensAway:20,eventDataKeys:[]}});var Eg=ye((Hir,Mfe)=>{"use strict";Mfe.exports=function(t){return{valType:"color",editType:"style",anim:!0}}});var Uc=ye((Gir,Ife)=>{"use strict";var Efe=Oc().axisHoverFormat,nft=Wo().texttemplateAttrs,aft=Wo().hovertemplateAttrs,kfe=Jl(),oft=Su(),sft=Ed().dash,lft=Ed().pattern,uft=ao(),cft=Sm(),yP=no().extendFlat,fft=Eg();function Cfe(e){return{valType:"any",dflt:0,editType:"calc"}}function Lfe(e){return{valType:"any",editType:"calc"}}function Pfe(e){return{valType:"enumerated",values:["start","middle","end"],dflt:"middle",editType:"calc"}}Ife.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},x0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dx:{valType:"number",dflt:1,editType:"calc",anim:!0},y:{valType:"data_array",editType:"calc+clearAxisTypes",anim:!0},y0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes",anim:!0},dy:{valType:"number",dflt:1,editType:"calc",anim:!0},xperiod:Cfe("x"),yperiod:Cfe("y"),xperiod0:Lfe("x0"),yperiod0:Lfe("y0"),xperiodalignment:Pfe("x"),yperiodalignment:Pfe("y"),xhoverformat:Efe("x"),yhoverformat:Efe("y"),offsetgroup:{valType:"string",dflt:"",editType:"calc"},alignmentgroup:{valType:"string",dflt:"",editType:"calc"},stackgroup:{valType:"string",dflt:"",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc"},groupnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},stackgaps:{valType:"enumerated",values:["infer zero","interpolate"],dflt:"infer zero",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},texttemplate:nft({},{}),hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"],editType:"calc"},hoveron:{valType:"flaglist",flags:["points","fills"],editType:"style"},hovertemplate:aft({},{keys:cft.eventDataKeys}),line:{color:{valType:"color",editType:"style",anim:!0},width:{valType:"number",min:0,dflt:2,editType:"style",anim:!0},shape:{valType:"enumerated",values:["linear","spline","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},smoothing:{valType:"number",min:0,max:1.3,dflt:1,editType:"plot"},dash:yP({},sft,{editType:"style"}),backoff:{valType:"number",min:0,dflt:"auto",arrayOk:!0,editType:"plot"},simplify:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},cliponaxis:{valType:"boolean",dflt:!0,editType:"plot"},fill:{valType:"enumerated",values:["none","tozeroy","tozerox","tonexty","tonextx","toself","tonext"],editType:"calc"},fillcolor:fft(!0),fillgradient:yP({type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],dflt:"none",editType:"calc"},start:{valType:"number",editType:"calc"},stop:{valType:"number",editType:"calc"},colorscale:{valType:"colorscale",editType:"style"},editType:"calc"}),fillpattern:lft,marker:yP({symbol:{valType:"enumerated",values:uft.symbolList,dflt:"circle",arrayOk:!0,editType:"style"},opacity:{valType:"number",min:0,max:1,arrayOk:!0,editType:"style",anim:!0},angle:{valType:"angle",dflt:0,arrayOk:!0,editType:"plot",anim:!1},angleref:{valType:"enumerated",values:["previous","up"],dflt:"up",editType:"plot",anim:!1},standoff:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"plot",anim:!0},size:{valType:"number",min:0,dflt:6,arrayOk:!0,editType:"calc",anim:!0},maxdisplayed:{valType:"number",min:0,dflt:0,editType:"plot"},sizeref:{valType:"number",dflt:1,editType:"calc"},sizemin:{valType:"number",min:0,dflt:0,editType:"calc"},sizemode:{valType:"enumerated",values:["diameter","area"],dflt:"diameter",editType:"calc"},line:yP({width:{valType:"number",min:0,arrayOk:!0,editType:"style",anim:!0},editType:"calc"},kfe("marker.line",{anim:!0})),gradient:{type:{valType:"enumerated",values:["radial","horizontal","vertical","none"],arrayOk:!0,dflt:"none",editType:"calc"},color:{valType:"color",arrayOk:!0,editType:"calc"},editType:"calc"},editType:"calc"},kfe("marker",{anim:!0})),selected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},unselected:{marker:{opacity:{valType:"number",min:0,max:1,editType:"style"},color:{valType:"color",editType:"style"},size:{valType:"number",min:0,editType:"style"},editType:"style"},textfont:{color:{valType:"color",editType:"style"},editType:"style"},editType:"style"},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",arrayOk:!0,editType:"calc"},textfont:oft({editType:"calc",colorEditType:"style",arrayOk:!0}),zorder:{valType:"integer",dflt:0,editType:"plot"}}});var EN=ye((Wir,zfe)=>{"use strict";var Rfe=Nb(),Dfe=Uc().line,hft=Ed().dash,_P=no().extendFlat,dft=Bu().overrideAll,vft=Vs().templatedArray,jir=PM();zfe.exports=dft(vft("selection",{type:{valType:"enumerated",values:["rect","path"]},xref:_P({},Rfe.xref,{}),yref:_P({},Rfe.yref,{}),x0:{valType:"any"},x1:{valType:"any"},y0:{valType:"any"},y1:{valType:"any"},path:{valType:"string",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:.7,editType:"arraydraw"},line:{color:Dfe.color,width:_P({},Dfe.width,{min:1,dflt:1}),dash:_P({},hft,{dflt:"dot"})}}),"arraydraw","from-root")});var Bfe=ye((Zir,Ofe)=>{"use strict";var Ffe=Mr(),xP=Qa(),pft=Zd(),gft=EN(),qfe=h_();Ofe.exports=function(t,r){pft(t,r,{name:"selections",handleItemDefaults:mft});for(var n=r.selections,i=0;i{"use strict";Nfe.exports=function(t,r,n){n("newselection.mode");var i=n("newselection.line.width");i&&(n("newselection.line.color"),n("newselection.line.dash")),n("activeselection.fillcolor"),n("activeselection.opacity")}});var IM=ye((Yir,Gfe)=>{"use strict";var yft=ba(),Vfe=Mr(),Hfe=af();Gfe.exports=function(t){return function(n,i){var a=n[t];if(Array.isArray(a))for(var o=yft.subplotsRegistry.cartesian,s=o.idRegex,l=i._subplots,u=l.xaxis,c=l.yaxis,f=l.cartesian,h=i._has("cartesian"),d=0;d{"use strict";var jfe=dN(),RM=_fe();Wfe.exports={moduleType:"component",name:"selections",layoutAttributes:EN(),supplyLayoutDefaults:Bfe(),supplyDrawNewSelectionDefaults:Ufe(),includeBasePlot:IM()("selections"),draw:jfe.draw,drawOne:jfe.drawOne,reselect:RM.reselect,prepSelect:RM.prepSelect,clearOutline:RM.clearOutline,clearSelectionsCache:RM.clearSelectionsCache,selectOnClick:RM.selectOnClick}});var DN=ye((Jir,hhe)=>{"use strict";var IN=xa(),C0=Mr(),Zfe=C0.numberFormat,_ft=id(),xft=kL(),bP=ba(),rhe=C0.strTranslate,bft=Pl(),Xfe=va(),v_=ao(),wft=Nc(),Yfe=Qa(),Tft=Tg(),Aft=gv(),ihe=Sg(),wP=ihe.selectingOrDrawing,Sft=ihe.freeMode,Mft=Nh().FROM_TL,Eft=lM(),kft=gM().redrawReglTraces,Cft=Xu(),CN=af().getFromId,Lft=wf().prepSelect,Pft=wf().clearOutline,Ift=wf().selectOnClick,kN=aN(),RN=ad(),Kfe=RN.MINDRAG,np=RN.MINZOOM,Jfe=!0;function Rft(e,t,r,n,i,a,o,s){var l=e._fullLayout._zoomlayer,u=o+s==="nsew",c=(o+s).length===1,f,h,d,v,x,b,p,E,k,A,L,_,C,M,g,P,T,F,q,V,H,X,G;r+=t.yaxis._shift;function N(){if(f=t.xaxis,h=t.yaxis,k=f._length,A=h._length,p=f._offset,E=h._offset,d={},d[f._id]=f,v={},v[h._id]=h,o&&s)for(var Et=t.overlays,dt=0;dt=0){Ht._fullLayout._deactivateShape(Ht);return}var $t=Ht._fullLayout.clickmode;if(PN(Ht),Et===2&&!c&&er(),u)$t.indexOf("select")>-1&&Ift(dt,Ht,x,b,t.id,ae),$t.indexOf("event")>-1&&wft.click(Ht,dt,t.id);else if(Et===1&&c){var fr=o?h:f,_r=o==="s"||s==="w"?0:1,Br=fr._name+".range["+_r+"]",Or=Dft(fr,_r),Nr="left",ut="middle";if(fr.fixedrange)return;o?(ut=o==="n"?"top":"bottom",fr.side==="right"&&(Nr="right")):s==="e"&&(Nr="right"),Ht._context.showAxisRangeEntryBoxes&&IN.select(re).call(bft.makeEditable,{gd:Ht,immediate:!0,background:Ht._fullLayout.paper_bgcolor,text:String(Or),fill:fr.tickfont?fr.tickfont.color:"#444",horizontalAlign:Nr,verticalAlign:ut}).on("edit",function(Ne){var Ye=fr.d2r(Ne);Ye!==void 0&&bP.call("_guiRelayout",Ht,Br,Ye)})}}Aft.init(ae);var ke,ge,ie,Te,Ee,Ae,ze,Ce,me,Re;function ce(Et,dt,Ht){var $t=re.getBoundingClientRect();ke=dt-$t.left,ge=Ht-$t.top,e._fullLayout._calcInverseTransform(e);var fr=C0.apply3DTransform(e._fullLayout._invTransform)(ke,ge);ke=fr[0],ge=fr[1],ie={l:ke,r:ke,w:0,t:ge,b:ge,h:0},Te=e._hmpixcount?e._hmlumcount/e._hmpixcount:_ft(e._fullLayout.plot_bgcolor).getLuminance(),Ee="M0,0H"+k+"V"+A+"H0V0",Ae=!1,ze="xy",Re=!1,Ce=ohe(l,Te,p,E,Ee),me=she(l,p,E)}function Ge(Et,dt){if(e._transitioningWithDuration)return!1;var Ht=Math.max(0,Math.min(k,X*Et+ke)),$t=Math.max(0,Math.min(A,G*dt+ge)),fr=Math.abs(Ht-ke),_r=Math.abs($t-ge);ie.l=Math.min(ke,Ht),ie.r=Math.max(ke,Ht),ie.t=Math.min(ge,$t),ie.b=Math.max(ge,$t);function Br(){ze="",ie.r=ie.l,ie.t=ie.b,me.attr("d","M0,0Z")}if(L.isSubplotConstrained)fr>np||_r>np?(ze="xy",fr/k>_r/A?(_r=fr*A/k,ge>$t?ie.t=ge-_r:ie.b=ge+_r):(fr=_r*k/A,ke>Ht?ie.l=ke-fr:ie.r=ke+fr),me.attr("d",TP(ie))):Br();else if(_.isSubplotConstrained)if(fr>np||_r>np){ze="xy";var Or=Math.min(ie.l/k,(A-ie.b)/A),Nr=Math.max(ie.r/k,(A-ie.t)/A);ie.l=Or*k,ie.r=Nr*k,ie.b=(1-Or)*A,ie.t=(1-Nr)*A,me.attr("d",TP(ie))}else Br();else!M||_r0){var Ne;if(_.isSubplotConstrained||!C&&M.length===1){for(Ne=0;Ne1&&(Br.maxallowed!==void 0&&P===(Br.range[0]1&&(Or.maxallowed!==void 0&&T===(Or.range[0]=0?Math.min(e,.9):1/(1/Math.max(e,-.3)+3.222))}function Fft(e,t,r){return e?e==="nsew"?r?"":t==="pan"?"move":"crosshair":e.toLowerCase()+"-resize":"pointer"}function ohe(e,t,r,n,i){return e.append("path").attr("class","zoombox").style({fill:t>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",rhe(r,n)).attr("d",i+"Z")}function she(e,t,r){return e.append("path").attr("class","zoombox-corners").style({fill:Xfe.background,stroke:Xfe.defaultLine,"stroke-width":1,opacity:0}).attr("transform",rhe(t,r)).attr("d","M0,0Z")}function lhe(e,t,r,n,i,a){e.attr("d",n+"M"+r.l+","+r.t+"v"+r.h+"h"+r.w+"v-"+r.h+"h-"+r.w+"Z"),uhe(e,t,i,a)}function uhe(e,t,r,n){r||(e.transition().style("fill",n>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),t.transition().style("opacity",1).duration(200))}function PN(e){IN.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function che(e){Jfe&&e.data&&e._context.showTips&&(C0.notifier(C0._(e,"Double-click to zoom back out"),"long"),Jfe=!1)}function qft(e,t){return"M"+(e.l-.5)+","+(t-np-.5)+"h-3v"+(2*np+1)+"h3ZM"+(e.r+.5)+","+(t-np-.5)+"h3v"+(2*np+1)+"h-3Z"}function Oft(e,t){return"M"+(t-np-.5)+","+(e.t-.5)+"v-3h"+(2*np+1)+"v3ZM"+(t-np-.5)+","+(e.b+.5)+"v3h"+(2*np+1)+"v-3Z"}function TP(e){var t=Math.floor(Math.min(e.b-e.t,e.r-e.l,np)/2);return"M"+(e.l-3.5)+","+(e.t-.5+t)+"h3v"+-t+"h"+t+"v-3h-"+(t+3)+"ZM"+(e.r+3.5)+","+(e.t-.5+t)+"h-3v"+-t+"h"+-t+"v-3h"+(t+3)+"ZM"+(e.r+3.5)+","+(e.b+.5-t)+"h-3v"+t+"h"+-t+"v3h"+(t+3)+"ZM"+(e.l-3.5)+","+(e.b+.5-t)+"h3v"+t+"h"+t+"v3h-"+(t+3)+"Z"}function ehe(e,t,r,n,i){for(var a=!1,o={},s={},l,u,c,f,h=(i||{}).xaHash,d=(i||{}).yaHash,v=0;v{"use strict";var Bft=xa(),AP=Nc(),Nft=gv(),Uft=Tg(),kg=DN().makeDragBox,ud=ad().DRAGGERSIZE;SP.initInteractions=function(t){var r=t._fullLayout;if(t._context.staticPlot){Bft.select(t).selectAll(".drag").remove();return}if(!(!r._has("cartesian")&&!r._has("splom"))){var n=Object.keys(r._plots||{}).sort(function(a,o){if((r._plots[a].mainplot&&!0)===(r._plots[o].mainplot&&!0)){var s=a.split("y"),l=o.split("y");return s[0]===l[0]?Number(s[1]||1)-Number(l[1]||1):Number(s[0]||1)-Number(l[0]||1)}return r._plots[a].mainplot?1:-1});n.forEach(function(a){var o=r._plots[a],s=o.xaxis,l=o.yaxis;if(!o.mainplot){var u=kg(t,o,s._offset,l._offset,s._length,l._length,"ns","ew");u.onmousemove=function(h){t._fullLayout._rehover=function(){t._fullLayout._hoversubplot===a&&t._fullLayout._plots[a]&&AP.hover(t,h,a)},AP.hover(t,h,a),t._fullLayout._lasthover=u,t._fullLayout._hoversubplot=a},u.onmouseout=function(h){t._dragging||(t._fullLayout._hoversubplot=null,Nft.unhover(t,h))},t._context.showAxisDragHandles&&(kg(t,o,s._offset-ud,l._offset-ud,ud,ud,"n","w"),kg(t,o,s._offset+s._length,l._offset-ud,ud,ud,"n","e"),kg(t,o,s._offset-ud,l._offset+l._length,ud,ud,"s","w"),kg(t,o,s._offset+s._length,l._offset+l._length,ud,ud,"s","e"))}if(t._context.showAxisDragHandles){if(a===s._mainSubplot){var c=s._mainLinePosition;s.side==="top"&&(c-=ud),kg(t,o,s._offset+s._length*.1,c,s._length*.8,ud,"","ew"),kg(t,o,s._offset,c,s._length*.1,ud,"","w"),kg(t,o,s._offset+s._length*.9,c,s._length*.1,ud,"","e")}if(a===l._mainSubplot){var f=l._mainLinePosition;l.side!=="right"&&(f-=ud),kg(t,o,f,l._offset+l._length*.1,ud,l._length*.8,"ns",""),kg(t,o,f,l._offset+l._length*.9,ud,l._length*.1,"s",""),kg(t,o,f,l._offset,ud,l._length*.1,"n","")}}});var i=r._hoverlayer.node();i.onmousemove=function(a){a.target=t._fullLayout._lasthover,AP.hover(t,a,r._hoversubplot)},i.onclick=function(a){a.target=t._fullLayout._lasthover,AP.click(t,a)},i.onmousedown=function(a){t._fullLayout._lasthover.onmousedown(a)},SP.updateFx(t)}};SP.updateFx=function(e){var t=e._fullLayout,r=t.dragmode==="pan"?"move":"crosshair";Uft(t._draggers,r)}});var phe=ye((Qir,vhe)=>{"use strict";var dhe=ba();vhe.exports=function(t){for(var r=dhe.layoutArrayContainers,n=dhe.layoutArrayRegexes,i=t.split("[")[0],a,o,s=0;s{"use strict";var Vft=gy(),FN=g6(),DM=G1(),Hft=k6().sorterAsc,qN=ba();zM.containerArrayMatch=phe();var Gft=zM.isAddVal=function(t){return t==="add"||Vft(t)},ghe=zM.isRemoveVal=function(t){return t===null||t==="remove"};zM.applyContainerArrayChanges=function(t,r,n,i,a){var o=r.astr,s=qN.getComponentMethod(o,"supplyLayoutDefaults"),l=qN.getComponentMethod(o,"draw"),u=qN.getComponentMethod(o,"drawOne"),c=i.replot||i.recalc||s===FN||l===FN,f=t.layout,h=t._fullLayout;if(n[""]){Object.keys(n).length>1&&DM.warn("Full array edits are incompatible with other edits",o);var d=n[""][""];if(ghe(d))r.set(null);else if(Array.isArray(d))r.set(d);else return DM.warn("Unrecognized full array edit value",o,d),!0;return c?!1:(s(f,h),l(t),!0)}var v=Object.keys(n).map(Number).sort(Hft),x=r.get(),b=x||[],p=a(h,o).get(),E=[],k=-1,A=b.length,L,_,C,M,g,P,T,F;for(L=0;Lb.length-(T?0:1)){DM.warn("index out of range",o,C);continue}if(P!==void 0)g.length>1&&DM.warn("Insertion & removal are incompatible with edits to the same index.",o,C),ghe(P)?E.push(C):T?(P==="add"&&(P={}),b.splice(C,0,P),p&&p.splice(C,0,{})):DM.warn("Unrecognized full object edit value",o,C,P),k===-1&&(k=C);else for(_=0;_=0;L--)b.splice(E[L],1),p&&p.splice(E[L],1);if(b.length?x||r.set(b):r.set(null),c)return!1;if(s(f,h),u!==FN){var q;if(k===-1)q=v;else{for(A=Math.max(b.length,A),q=[],L=0;L=k));L++)q.push(C);for(L=k;L{"use strict";var bhe=uo(),tnr=Lq(),whe=ba(),kp=Mr(),FM=Xu(),The=af(),Ahe=va(),qM=The.cleanId,jft=The.getFromTrace,ON=whe.traceIs;Cg.clearPromiseQueue=function(e){Array.isArray(e._promises)&&e._promises.length>0&&kp.log("Clearing previous rejected promises from queue."),e._promises=[]};Cg.cleanLayout=function(e){var t,r;e||(e={}),e.xaxis1&&(e.xaxis||(e.xaxis=e.xaxis1),delete e.xaxis1),e.yaxis1&&(e.yaxis||(e.yaxis=e.yaxis1),delete e.yaxis1),e.scene1&&(e.scene||(e.scene=e.scene1),delete e.scene1);var n=(FM.subplotsRegistry.cartesian||{}).attrRegex,i=(FM.subplotsRegistry.polar||{}).attrRegex,a=(FM.subplotsRegistry.ternary||{}).attrRegex,o=(FM.subplotsRegistry.gl3d||{}).attrRegex,s=Object.keys(e);for(t=0;t3?(b.x=1.02,b.xanchor="left"):b.x<-2&&(b.x=-.02,b.xanchor="right"),b.y>3?(b.y=1.02,b.yanchor="bottom"):b.y<-2&&(b.y=-.02,b.yanchor="top")),e.dragmode==="rotate"&&(e.dragmode="orbit"),Ahe.clean(e),e.template&&e.template.layout&&Cg.cleanLayout(e.template.layout),e};function Y3(e,t){var r=e[t],n=t.charAt(0);r&&r!=="paper"&&(e[t]=qM(r,n,!0))}Cg.cleanData=function(e){for(var t=0;t0)return e.substr(0,t)}Cg.hasParent=function(e,t){for(var r=xhe(t);r;){if(r in e)return!0;r=xhe(r)}return!1};var Xft=["x","y","z"];Cg.clearAxisTypes=function(e,t,r){for(var n=0;n{"use strict";var CP=xa(),Yft=uo(),Kft=$q(),sa=Mr(),Yu=sa.nestedProperty,UN=g3(),ap=lne(),L0=ba(),FP=_3(),Ho=Xu(),Nv=Qa(),Jft=dB(),$ft=Cd(),BN=ao(),Qft=va(),eht=zN().initInteractions,tht=Zp(),rht=wf().clearOutline,Lhe=ub().dfltConfig,EP=mhe(),yh=She(),$l=gM(),p_=Bu(),iht=ad().AX_NAME_PATTERN,NN=0,Mhe=5;function nht(e,t,r,n){var i;if(e=sa.getGraphDiv(e),UN.init(e),sa.isPlainObject(t)){var a=t;t=a.data,r=a.layout,n=a.config,i=a.frames}var o=UN.triggerHandler(e,"plotly_beforeplot",[t,r,n]);if(o===!1)return Promise.reject();!t&&!r&&!sa.isPlotDiv(e)&&sa.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.",e);function s(){if(i)return pl.addFrames(e,i)}Ihe(e,n),r||(r={}),CP.select(e).classed("js-plotly-plot",!0),BN.makeTester(),Array.isArray(e._promises)||(e._promises=[]);var l=(e.data||[]).length===0&&Array.isArray(t);Array.isArray(t)&&(yh.cleanData(t),l?e.data=t:e.data.push.apply(e.data,t),e.empty=!1),(!e.layout||l)&&(e.layout=yh.cleanLayout(r)),Ho.supplyDefaults(e);var u=e._fullLayout,c=u._has("cartesian");u._replotting=!0,(l||u._shouldCreateBgLayer)&&(Eht(e),u._shouldCreateBgLayer&&delete u._shouldCreateBgLayer),BN.initGradients(e),BN.initPatterns(e),l&&Nv.saveShowSpikeInitial(e);var f=!e.calcdata||e.calcdata.length!==(e._fullData||[]).length;f&&Ho.doCalcdata(e);for(var h=0;h=e.data.length||i<-e.data.length)throw new Error(r+" must be valid indices for gd.data.");if(t.indexOf(i,n+1)>-1||i>=0&&t.indexOf(-e.data.length+i)>-1||i<0&&t.indexOf(e.data.length+i)>-1)throw new Error("each index in "+r+" must be unique.")}}function Rhe(e,t,r){if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("currentIndices is a required argument.");if(Array.isArray(t)||(t=[t]),PP(e,t,"currentIndices"),typeof r!="undefined"&&!Array.isArray(r)&&(r=[r]),typeof r!="undefined"&&PP(e,r,"newIndices"),typeof r!="undefined"&&t.length!==r.length)throw new Error("current and new indices must be of equal length.")}function uht(e,t,r){var n,i;if(!Array.isArray(e.data))throw new Error("gd.data must be an array.");if(typeof t=="undefined")throw new Error("traces must be defined.");for(Array.isArray(t)||(t=[t]),n=0;n=0&&c=0&&c0&&typeof M.parts[T]!="string";)T--;var F=M.parts[T],q=M.parts[T-1]+"."+F,V=M.parts.slice(0,T).join("."),H=Yu(e.layout,V).get(),X=Yu(n,V).get(),G=M.get();if(g!==void 0){p[C]=g,E[C]=F==="reverse"?g:Cy(G);var N=FP.getLayoutValObject(n,M.parts);if(N&&N.impliedEdits&&g!==null)for(var W in N.impliedEdits)k(sa.relativeAttr(C,W),N.impliedEdits[W]);if(["width","height"].indexOf(C)!==-1)if(g){k("autosize",null);var re=C==="height"?"width":"height";k(re,n[re])}else n[C]=e._initialAutoSize[C];else if(C==="autosize")k("width",g?null:n.width),k("height",g?null:n.height);else if(q.match(Vhe))_(q),Yu(n,V+"._inputRange").set(null);else if(q.match(Hhe)){_(q),Yu(n,V+"._inputRange").set(null);var ae=Yu(n,V).get();ae._inputDomain&&(ae._input.domain=ae._inputDomain.slice())}else q.match(dht)&&Yu(n,V+"._inputDomain").set(null);if(F==="type"){L=H;var _e=X.type==="linear"&&g==="log",Me=X.type==="log"&&g==="linear";if(_e||Me){if(!L||!L.range)k(V+".autorange",!0);else if(X.autorange)_e&&(L.range=L.range[1]>L.range[0]?[1,2]:[2,1]);else{var ke=L.range[0],ge=L.range[1];_e?(ke<=0&&ge<=0&&k(V+".autorange",!0),ke<=0?ke=ge/1e6:ge<=0&&(ge=ke/1e6),k(V+".range[0]",Math.log(ke)/Math.LN10),k(V+".range[1]",Math.log(ge)/Math.LN10)):(k(V+".range[0]",Math.pow(10,ke)),k(V+".range[1]",Math.pow(10,ge)))}Array.isArray(n._subplots.polar)&&n._subplots.polar.length&&n[M.parts[0]]&&M.parts[1]==="radialaxis"&&delete n[M.parts[0]]._subplot.viewInitial["radialaxis.range"],L0.getComponentMethod("annotations","convertCoords")(e,X,g,k),L0.getComponentMethod("images","convertCoords")(e,X,g,k)}else k(V+".autorange",!0),k(V+".range",null);Yu(n,V+"._inputRange").set(null)}else if(F.match(iht)){var ie=Yu(n,C).get(),Te=(g||{}).type;(!Te||Te==="-")&&(Te="linear"),L0.getComponentMethod("annotations","convertCoords")(e,ie,Te,k),L0.getComponentMethod("images","convertCoords")(e,ie,Te,k)}var Ee=EP.containerArrayMatch(C);if(Ee){c=Ee.array,f=Ee.index;var Ae=Ee.property,ze=N||{editType:"calc"};f!==""&&Ae===""&&(EP.isAddVal(g)?E[C]=null:EP.isRemoveVal(g)?E[C]=(Yu(r,c).get()||[])[f]:sa.warn("unrecognized full object value",t)),p_.update(b,ze),u[c]||(u[c]={});var Ce=u[c][f];Ce||(Ce=u[c][f]={}),Ce[Ae]=g,delete t[C]}else F==="reverse"?(H.range?H.range.reverse():(k(V+".autorange",!0),H.range=[1,0]),X.autorange?b.calc=!0:b.plot=!0):(C==="dragmode"&&(g===!1&&G!==!1||g!==!1&&G===!1)||n._has("scatter-like")&&n._has("regl")&&C==="dragmode"&&(g==="lasso"||g==="select")&&!(G==="lasso"||G==="select")?b.plot=!0:N?p_.update(b,N):b.calc=!0,M.set(g))}}for(c in u){var me=EP.applyContainerArrayChanges(e,a(r,c),u[c],b,a);me||(b.plot=!0)}for(var Re in A){L=Nv.getFromId(e,Re);var ce=L&&L._constraintGroup;if(ce){b.calc=!0;for(var Ge in ce)A[Ge]||(Nv.getFromId(e,Ge)._constraintShrinkable=!0)}}(jhe(e)||t.height||t.width)&&(b.plot=!0);var nt=n.shapes;for(f=0;f1;)if(n.pop(),r=Yu(t,n.join(".")+".uirevision").get(),r!==void 0)return r;return t.uirevision}function ght(e,t){for(var r=0;r=i.length?i[0]:i[u]:i}function s(u){return Array.isArray(a)?u>=a.length?a[0]:a[u]:a}function l(u,c){var f=0;return function(){if(u&&++f===c)return u()}}return new Promise(function(u,c){function f(){if(n._frameQueue.length!==0){for(;n._frameQueue.length;){var F=n._frameQueue.pop();F.onInterrupt&&F.onInterrupt()}e.emit("plotly_animationinterrupted",[])}}function h(F){if(F.length!==0){for(var q=0;qn._timeToNext&&v()};F()}var b=0;function p(F){return Array.isArray(i)?b>=i.length?F.transitionOpts=i[b]:F.transitionOpts=i[0]:F.transitionOpts=i,b++,F}var E,k,A=[],L=t==null,_=Array.isArray(t),C=!L&&!_&&sa.isPlainObject(t);if(C)A.push({type:"object",data:p(sa.extendFlat({},t))});else if(L||["string","number"].indexOf(typeof t)!==-1)for(E=0;E0&&PP)&&T.push(k);A=T}}A.length>0?h(A):(e.emit("plotly_animated"),u())})}function Tht(e,t,r){if(e=sa.getGraphDiv(e),t==null)return Promise.resolve();if(!sa.isPlotDiv(e))throw new Error("This element is not a Plotly plot: "+e+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var n,i,a,o,s=e._transitionData._frames,l=e._transitionData._frameHash;if(!Array.isArray(t))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+t);var u=s.length+t.length*2,c=[],f={};for(n=t.length-1;n>=0;n--)if(sa.isPlainObject(t[n])){var h=t[n].name,d=(l[h]||f[h]||{}).name,v=t[n].name,x=l[d]||f[d];d&&v&&typeof v=="number"&&x&&NNM.index?-1:C.index=0;n--){if(i=c[n].frame,typeof i.name=="number"&&sa.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!i.name)for(;l[i.name="frame "+e._transitionData._counter++];);if(l[i.name]){for(a=0;a=0;r--)n=t[r],a.push({type:"delete",index:n}),o.unshift({type:"insert",index:n,value:i[n]});var s=Ho.modifyFrames,l=Ho.modifyFrames,u=[e,o],c=[e,a];return ap&&ap.add(e,s,u,l,c),Ho.modifyFrames(e,a)}function Sht(e){e=sa.getGraphDiv(e);var t=e._fullLayout||{},r=e._fullData||[];return Ho.cleanPlot([],{},r,t),Ho.purge(e),UN.purge(e),t._container&&t._container.remove(),delete e._context,e}function Mht(e){var t=e._fullLayout,r=e.getBoundingClientRect();if(!sa.equalDomRects(r,t._lastBBox)){var n=t._invTransform=sa.inverseTransformMatrix(sa.getFullTransformMatrix(e));t._invScaleX=Math.sqrt(n[0][0]*n[0][0]+n[0][1]*n[0][1]+n[0][2]*n[0][2]),t._invScaleY=Math.sqrt(n[1][0]*n[1][0]+n[1][1]*n[1][1]+n[1][2]*n[1][2]),t._lastBBox=r}}function Eht(e){var t=CP.select(e),r=e._fullLayout;if(r._calcInverseTransform=Mht,r._calcInverseTransform(e),r._container=t.selectAll(".plot-container").data([0]),r._container.enter().insert("div",":first-child").classed("plot-container",!0).classed("plotly",!0).style({width:"100%",height:"100%"}),r._paperdiv=r._container.selectAll(".svg-container").data([0]),r._paperdiv.enter().append("div").classed("user-select-none",!0).classed("svg-container",!0).style("position","relative"),r._glcontainer=r._paperdiv.selectAll(".gl-container").data([{}]),r._glcontainer.enter().append("div").classed("gl-container",!0),r._paperdiv.selectAll(".main-svg").remove(),r._paperdiv.select(".modebar-container").remove(),r._paper=r._paperdiv.insert("svg",":first-child").classed("main-svg",!0),r._toppaper=r._paperdiv.append("svg").classed("main-svg",!0),r._modebardiv=r._paperdiv.append("div"),delete r._modeBar,r._hoverpaper=r._paperdiv.append("svg").classed("main-svg",!0),!r._uid){var n={};CP.selectAll("defs").each(function(){this.id&&(n[this.id.split("-")[1]]=1)}),r._uid=sa.randstr(n)}r._paperdiv.selectAll(".main-svg").attr(tht.svgAttrs),r._defs=r._paper.append("defs").attr("id","defs-"+r._uid),r._clips=r._defs.append("g").classed("clips",!0),r._topdefs=r._toppaper.append("defs").attr("id","topdefs-"+r._uid),r._topclips=r._topdefs.append("g").classed("clips",!0),r._bgLayer=r._paper.append("g").classed("bglayer",!0),r._draggers=r._paper.append("g").classed("draglayer",!0);var i=r._paper.append("g").classed("layer-below",!0);r._imageLowerLayer=i.append("g").classed("imagelayer",!0),r._shapeLowerLayer=i.append("g").classed("shapelayer",!0),r._cartesianlayer=r._paper.append("g").classed("cartesianlayer",!0),r._polarlayer=r._paper.append("g").classed("polarlayer",!0),r._smithlayer=r._paper.append("g").classed("smithlayer",!0),r._ternarylayer=r._paper.append("g").classed("ternarylayer",!0),r._geolayer=r._paper.append("g").classed("geolayer",!0),r._funnelarealayer=r._paper.append("g").classed("funnelarealayer",!0),r._pielayer=r._paper.append("g").classed("pielayer",!0),r._iciclelayer=r._paper.append("g").classed("iciclelayer",!0),r._treemaplayer=r._paper.append("g").classed("treemaplayer",!0),r._sunburstlayer=r._paper.append("g").classed("sunburstlayer",!0),r._indicatorlayer=r._toppaper.append("g").classed("indicatorlayer",!0),r._glimages=r._paper.append("g").classed("glimages",!0);var a=r._toppaper.append("g").classed("layer-above",!0);r._imageUpperLayer=a.append("g").classed("imagelayer",!0),r._shapeUpperLayer=a.append("g").classed("shapelayer",!0),r._selectionLayer=r._toppaper.append("g").classed("selectionlayer",!0),r._infolayer=r._toppaper.append("g").classed("infolayer",!0),r._menulayer=r._toppaper.append("g").classed("menulayer",!0),r._zoomlayer=r._toppaper.append("g").classed("zoomlayer",!0),r._hoverlayer=r._hoverpaper.append("g").classed("hoverlayer",!0),r._modebardiv.classed("modebar-container",!0).style("position","absolute").style("top","0px").style("right","0px"),e.emit("plotly_framework")}pl.animate=wht;pl.addFrames=Tht;pl.deleteFrames=Aht;pl.addTraces=Ohe;pl.deleteTraces=Bhe;pl.extendTraces=Fhe;pl.moveTraces=VN;pl.prependTraces=qhe;pl.newPlot=lht;pl._doPlot=nht;pl.purge=Sht;pl.react=_ht;pl.redraw=sht;pl.relayout=OM;pl.restyle=IP;pl.setPlotConfig=aht;pl.update=DP;pl._guiRelayout=GN(OM);pl._guiRestyle=GN(IP);pl._guiUpdate=GN(DP);pl._storeDirectGUIEdit=hht});var Ly=ye(Mm=>{"use strict";var kht=ba();Mm.getDelay=function(e){return e._has&&(e._has("gl3d")||e._has("mapbox")||e._has("map"))?500:0};Mm.getRedrawFunc=function(e){return function(){kht.getComponentMethod("colorbar","draw")(e)}};Mm.encodeSVG=function(e){return"data:image/svg+xml,"+encodeURIComponent(e)};Mm.encodeJSON=function(e){return"data:application/json,"+encodeURIComponent(e)};var Whe=window.URL||window.webkitURL;Mm.createObjectURL=function(e){return Whe.createObjectURL(e)};Mm.revokeObjectURL=function(e){return Whe.revokeObjectURL(e)};Mm.createBlob=function(e,t){if(t==="svg")return new window.Blob([e],{type:"image/svg+xml;charset=utf-8"});if(t==="full-json")return new window.Blob([e],{type:"application/json;charset=utf-8"});var r=Cht(window.atob(e));return new window.Blob([r],{type:"image/"+t})};Mm.octetStream=function(e){document.location.href="data:application/octet-stream"+e};function Cht(e){for(var t=e.length,r=new ArrayBuffer(t),n=new Uint8Array(r),i=0;i{"use strict";var WN=xa(),anr=Mr(),Lht=ao(),Pht=va(),onr=Zp(),jN=/"/g,NM="TOBESTRIPPED",Iht=new RegExp('("'+NM+")|("+NM+'")',"g");function Rht(e){var t=WN.select("body").append("div").style({display:"none"}).html(""),r=e.replace(/(&[^;]*;)/gi,function(n){return n==="<"?"<":n==="&rt;"?">":n.indexOf("<")!==-1||n.indexOf(">")!==-1?"":t.html(n).text()});return t.remove(),r}function Dht(e){return e.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")}Zhe.exports=function(t,r,n){var i=t._fullLayout,a=i._paper,o=i._toppaper,s=i.width,l=i.height,u;a.insert("rect",":first-child").call(Lht.setRect,0,0,s,l).call(Pht.fill,i.paper_bgcolor);var c=i._basePlotModules||[];for(u=0;u{"use strict";var zht=Mr(),Fht=vb().EventEmitter,UM=Ly();function qht(e){var t=e.emitter||new Fht,r=new Promise(function(n,i){var a=window.Image,o=e.svg,s=e.format||"png",l=e.canvas,u=e.scale||1,c=e.width||300,f=e.height||150,h=u*c,d=u*f,v=l.getContext("2d",{willReadFrequently:!0}),x=new a,b,p;s==="svg"||zht.isSafari()?p=UM.encodeSVG(o):(b=UM.createBlob(o,"svg"),p=UM.createObjectURL(b)),l.width=h,l.height=d,x.onload=function(){var E;switch(b=null,UM.revokeObjectURL(p),s!=="svg"&&v.drawImage(x,0,0,h,d),s){case"jpeg":E=l.toDataURL("image/jpeg");break;case"png":E=l.toDataURL("image/png");break;case"webp":E=l.toDataURL("image/webp");break;case"svg":E=p;break;default:var k="Image format is not jpeg, png, svg or webp.";if(i(new Error(k)),!e.promise)return t.emit("error",k)}n(E),e.promise||t.emit("success",E)},x.onerror=function(E){if(b=null,UM.revokeObjectURL(p),i(E),!e.promise)return t.emit("error",E)},x.src=p});return e.promise?r:t}Xhe.exports=qht});var XN=ye((unr,Jhe)=>{"use strict";var Yhe=uo(),Khe=OP(),Oht=Xu(),Em=Mr(),VM=Ly(),Bht=BP(),Nht=NP(),Uht=e6().version,ZN={format:{valType:"enumerated",values:["png","jpeg","webp","svg","full-json"],dflt:"png"},width:{valType:"number",min:1},height:{valType:"number",min:1},scale:{valType:"number",min:0,dflt:1},setBackground:{valType:"any",dflt:!1},imageDataOnly:{valType:"boolean",dflt:!1}};function Vht(e,t){t=t||{};var r,n,i,a;Em.isPlainObject(e)?(r=e.data||[],n=e.layout||{},i=e.config||{},a={}):(e=Em.getGraphDiv(e),r=Em.extendDeep([],e.data),n=Em.extendDeep({},e.layout),i=e._context,a=e._fullLayout||{});function o(_){return!(_ in t)||Em.validate(t[_],ZN[_])}if(!o("width")&&t.width!==null||!o("height")&&t.height!==null)throw new Error("Height and width should be pixel values.");if(!o("format"))throw new Error("Export format is not "+Em.join2(ZN.format.values,", "," or ")+".");var s={};function l(_,C){return Em.coerce(t,s,ZN,_,C)}var u=l("format"),c=l("width"),f=l("height"),h=l("scale"),d=l("setBackground"),v=l("imageDataOnly"),x=document.createElement("div");x.style.position="absolute",x.style.left="-5000px",document.body.appendChild(x);var b=Em.extendFlat({},n);c?b.width=c:t.width===null&&Yhe(a.width)&&(b.width=a.width),f?b.height=f:t.height===null&&Yhe(a.height)&&(b.height=a.height);var p=Em.extendFlat({},i,{_exportedPlot:!0,staticPlot:!0,setBackground:d}),E=VM.getRedrawFunc(x);function k(){return new Promise(function(_){setTimeout(_,VM.getDelay(x._fullLayout))})}function A(){return new Promise(function(_,C){var M=Bht(x,u,h),g=x._fullLayout.width,P=x._fullLayout.height;function T(){Khe.purge(x),document.body.removeChild(x)}if(u==="full-json"){var F=Oht.graphJson(x,!1,"keepdata","object",!0,!0);return F.version=Uht,F=JSON.stringify(F),T(),_(v?F:VM.encodeJSON(F))}if(T(),u==="svg")return _(v?M:VM.encodeSVG(M));var q=document.createElement("canvas");q.id=Em.randstr(),Nht({format:u,width:g,height:P,scale:h,canvas:q,svg:M,promise:!0}).then(_).catch(C)})}function L(_){return v?_.replace(VM.IMAGE_URL_PREFIX,""):_}return new Promise(function(_,C){Khe.newPlot(x,r,b,p).then(E).then(k).then(A).then(function(M){_(L(M))}).catch(function(M){C(M)})})}Jhe.exports=Vht});var tde=ye((cnr,ede)=>{"use strict";var P0=Mr(),Hht=Xu(),Ght=_3(),jht=ub().dfltConfig,Lg=P0.isPlainObject,Vb=Array.isArray,$he=P0.isArrayOrTypedArray;ede.exports=function(t,r){t===void 0&&(t=[]),r===void 0&&(r={});var n=Ght.get(),i=[],a={_context:P0.extendFlat({},jht)},o,s;Vb(t)?(a.data=P0.extendDeep([],t),o=t):(a.data=[],o=[],i.push(cd("array","data"))),Lg(r)?(a.layout=P0.extendDeep({},r),s=r):(a.layout={},s={},arguments.length>1&&i.push(cd("object","layout"))),Hht.supplyDefaults(a);for(var l=a._fullData,u=o.length,c=0;cf.length&&n.push(cd("unused",i,u.concat(f.length)));var p=f.length,E=Array.isArray(b);E&&(p=Math.min(p,b.length));var k,A,L,_,C;if(h.dimensions===2)for(A=0;Af[A].length&&n.push(cd("unused",i,u.concat(A,f[A].length)));var M=f[A].length;for(k=0;k<(E?Math.min(M,b[A].length):M);k++)L=E?b[A][k]:b,_=c[A][k],C=f[A][k],P0.validate(_,L)?C!==_&&C!==+_&&n.push(cd("dynamic",i,u.concat(A,k),_,C)):n.push(cd("value",i,u.concat(A,k),_))}else n.push(cd("array",i,u.concat(A),c[A]));else for(A=0;A{"use strict";var $ht=Mr(),VP=Ly();function Qht(e,t,r){var n=document.createElement("a"),i="download"in n,a=new Promise(function(o,s){var l,u;if(i)return l=VP.createBlob(e,r),u=VP.createObjectURL(l),n.href=u,n.download=t,document.body.appendChild(n),n.click(),document.body.removeChild(n),VP.revokeObjectURL(u),l=null,o(t);if($ht.isSafari()){var c=r==="svg"?",":";base64,";return VP.octetStream(c+encodeURIComponent(e)),o(t)}s(new Error("download error"))});return a}rde.exports=Qht});var YN=ye((dnr,ade)=>{"use strict";var nde=Mr(),edt=XN(),tdt=ide(),hnr=Ly();function rdt(e,t){var r;return nde.isPlainObject(e)||(r=nde.getGraphDiv(e)),t=t||{},t.format=t.format||"png",t.width=t.width||null,t.height=t.height||null,t.imageDataOnly=!0,new Promise(function(n,i){r&&r._snapshotInProgress&&i(new Error("Snapshotting already in progress.")),r&&(r._snapshotInProgress=!0);var a=edt(e,t),o=t.filename||e.fn||"newplot";o+="."+t.format.replace("-","."),a.then(function(s){return r&&(r._snapshotInProgress=!1),tdt(s,o,t.format)}).then(function(s){n(s)}).catch(function(s){r&&(r._snapshotInProgress=!1),i(s)})})}ade.exports=rdt});var cde=ye(KN=>{"use strict";var Cp=Mr(),Lp=Cp.isPlainObject,ode=_3(),sde=Xu(),idt=vl(),lde=Vs(),ude=ub().dfltConfig;KN.makeTemplate=function(e){e=Cp.isPlainObject(e)?e:Cp.getGraphDiv(e),e=Cp.extendDeep({_context:ude},{data:e.data,layout:e.layout}),sde.supplyDefaults(e);var t=e.data||[],r=e.layout||{};r._basePlotModules=e._fullLayout._basePlotModules,r._modules=e._fullLayout._modules;var n={data:{},layout:{}};t.forEach(function(d){var v={};HM(d,v,adt.bind(null,d));var x=Cp.coerce(d,{},idt,"type"),b=n.data[x];b||(b=n.data[x]=[]),b.push(v)}),HM(r,n.layout,ndt.bind(null,r)),delete n.layout.template;var i=r.template;if(Lp(i)){var a=i.layout,o,s,l,u,c,f;Lp(a)&&HP(a,n.layout);var h=i.data;if(Lp(h)){for(s in n.data)if(l=h[s],Array.isArray(l)){for(c=n.data[s],f=c.length,u=l.length,o=0;op?o.push({code:"unused",traceType:d,templateCount:b,dataCount:p}):p>b&&o.push({code:"reused",traceType:d,templateCount:b,dataCount:p})}}function E(k,A){for(var L in k)if(L.charAt(0)!=="_"){var _=k[L],C=I0(k,L,A);Lp(_)?(Array.isArray(k)&&_._template===!1&&_.templateitemname&&o.push({code:"missing",path:C,templateitemname:_.templateitemname}),E(_,C)):Array.isArray(_)&&odt(_)&&E(_,C)}}if(E({data:l,layout:s},""),o.length)return o.map(sdt)};function odt(e){for(var t=0;t{"use strict";var Hh=OP();Sc._doPlot=Hh._doPlot;Sc.newPlot=Hh.newPlot;Sc.restyle=Hh.restyle;Sc.relayout=Hh.relayout;Sc.redraw=Hh.redraw;Sc.update=Hh.update;Sc._guiRestyle=Hh._guiRestyle;Sc._guiRelayout=Hh._guiRelayout;Sc._guiUpdate=Hh._guiUpdate;Sc._storeDirectGUIEdit=Hh._storeDirectGUIEdit;Sc.react=Hh.react;Sc.extendTraces=Hh.extendTraces;Sc.prependTraces=Hh.prependTraces;Sc.addTraces=Hh.addTraces;Sc.deleteTraces=Hh.deleteTraces;Sc.moveTraces=Hh.moveTraces;Sc.purge=Hh.purge;Sc.addFrames=Hh.addFrames;Sc.deleteFrames=Hh.deleteFrames;Sc.animate=Hh.animate;Sc.setPlotConfig=Hh.setPlotConfig;var ldt=DS().getGraphDiv,udt=rP().eraseActiveShape;Sc.deleteActiveShape=function(e){return udt(ldt(e))};Sc.toImage=XN();Sc.validate=tde();Sc.downloadImage=YN();var fde=cde();Sc.makeTemplate=fde.makeTemplate;Sc.validateTemplate=fde.validateTemplate});var K3=ye((gnr,dde)=>{"use strict";var JN=Mr(),cdt=ba();dde.exports=function(t,r,n,i){var a=i("x"),o=i("y"),s,l=cdt.getComponentMethod("calendars","handleTraceDefaults");if(l(t,r,["x","y"],n),a){var u=JN.minRowLength(a);o?s=Math.min(u,JN.minRowLength(o)):(s=u,i("y0"),i("dy"))}else{if(!o)return 0;s=JN.minRowLength(o),i("x0"),i("dx")}return r._length=s,s}});var Pg=ye((mnr,gde)=>{"use strict";var vde=Mr().dateTick0,fdt=es(),hdt=fdt.ONEWEEK;function pde(e,t){return e%hdt===0?vde(t,1):vde(t,0)}gde.exports=function(t,r,n,i,a){if(a||(a={x:!0,y:!0}),a.x){var o=i("xperiod");o&&(i("xperiod0",pde(o,r.xcalendar)),i("xperiodalignment"))}if(a.y){var s=i("yperiod");s&&(i("yperiod0",pde(s,r.ycalendar)),i("yperiodalignment"))}}});var _de=ye((ynr,yde)=>{"use strict";var mde=["orientation","groupnorm","stackgaps"];yde.exports=function(t,r,n,i){var a=n._scatterStackOpts,o=i("stackgroup");if(o){var s=r.xaxis+r.yaxis,l=a[s];l||(l=a[s]={});var u=l[o],c=!1;u?u.traces.push(r):(u=l[o]={traceIndices:[],traces:[r]},c=!0);for(var f={orientation:r.x&&!r.y?"h":"v"},h=0;h{"use strict";var xde=va(),bde=Dv().hasColorscale,wde=Uh(),ddt=lu();Tde.exports=function(t,r,n,i,a,o){var s=ddt.isBubble(t),l=(t.line||{}).color,u;if(o=o||{},l&&(n=l),a("marker.symbol"),a("marker.opacity",s?.7:1),a("marker.size"),o.noAngle||(a("marker.angle"),o.noAngleRef||a("marker.angleref"),o.noStandOff||a("marker.standoff")),a("marker.color",n),bde(t,"marker")&&wde(t,r,i,a,{prefix:"marker.",cLetter:"c"}),o.noSelect||(a("selected.marker.color"),a("unselected.marker.color"),a("selected.marker.size"),a("unselected.marker.size")),o.noLine||(l&&!Array.isArray(l)&&r.marker.color!==l?u=l:s?u=xde.background:u=xde.defaultLine,a("marker.line.color",u),bde(t,"marker.line")&&wde(t,r,i,a,{prefix:"marker.line.",cLetter:"c"}),a("marker.line.width",s?1:0)),s&&(a("marker.sizeref"),a("marker.sizemin"),a("marker.sizemode")),o.gradient){var c=a("marker.gradient.type");c!=="none"&&a("marker.gradient.color")}}});var R0=ye((xnr,Ade)=>{"use strict";var vdt=Mr().isArrayOrTypedArray,pdt=Dv().hasColorscale,gdt=Uh();Ade.exports=function(t,r,n,i,a,o){o||(o={});var s=(t.marker||{}).color;if(s&&s._inputArray&&(s=s._inputArray),a("line.color",n),pdt(t,"line"))gdt(t,r,i,a,{prefix:"line.",cLetter:"c"});else{var l=(vdt(s)?!1:s)||n;a("line.color",l)}a("line.width"),o.noDash||a("line.dash"),o.backoff&&a("line.backoff")}});var J3=ye((bnr,Sde)=>{"use strict";Sde.exports=function(t,r,n){var i=n("line.shape");i==="spline"&&n("line.smoothing")}});var D0=ye((wnr,Mde)=>{"use strict";var mdt=Mr();Mde.exports=function(e,t,r,n,i){i=i||{},n("textposition"),mdt.coerceFont(n,"textfont",i.font||r.font,i),i.noSelect||(n("selected.textfont.color"),n("unselected.textfont.color"))}});var Ig=ye((Tnr,kde)=>{"use strict";var jP=va(),Ede=Mr().isArrayOrTypedArray;function ydt(e){for(var t=jP.interpolate(e[0][1],e[1][1],.5),r=2;r{"use strict";var Cde=Mr(),_dt=ba(),xdt=Uc(),bdt=Sm(),$3=lu(),wdt=K3(),Tdt=Pg(),Adt=_de(),Sdt=$p(),Mdt=R0(),Lde=J3(),Edt=D0(),kdt=Ig(),Cdt=Mr().coercePattern;Pde.exports=function(t,r,n,i){function a(d,v){return Cde.coerce(t,r,xdt,d,v)}var o=wdt(t,r,i,a);if(o||(r.visible=!1),!!r.visible){Tdt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("zorder");var s=Adt(t,r,i,a);i.scattermode==="group"&&r.orientation===void 0&&a("orientation","v");var l=!s&&o{"use strict";var Ldt=Bb().getAxisGroup;Rde.exports=function(t,r,n,i,a){var o=r.orientation,s=r[{v:"x",h:"y"}[o]+"axis"],l=Ldt(n,s)+o,u=n._alignmentOpts||{},c=i("alignmentgroup"),f=u[l];f||(f=u[l]={});var h=f[c];h?h.traces.push(r):h=f[c]={traces:[r],alignmentIndex:Object.keys(f).length,offsetGroups:{}};var d=i("offsetgroup")||"",v=h.offsetGroups,x=v[d];r._offsetIndex=0,(a!=="group"||d)&&(x||(x=v[d]={offsetIndex:Object.keys(v).length}),r._offsetIndex=x.offsetIndex)}});var $N=ye((Mnr,Dde)=>{"use strict";var Pdt=Mr(),Idt=Hb(),Rdt=Uc();Dde.exports=function(t,r){var n,i,a,o=r.scattermode;function s(h){return Pdt.coerce(i._input,i,Rdt,h)}if(r.scattermode==="group")for(a=0;a=0;c--){var f=t[c];if(f.type==="scatter"&&f.xaxis===l.xaxis&&f.yaxis===l.yaxis){f.opacity=void 0;break}}}}}});var Fde=ye((Enr,zde)=>{"use strict";var Ddt=Mr(),zdt=V6();zde.exports=function(e,t){function r(i,a){return Ddt.coerce(e,t,zdt,i,a)}var n=t.barmode==="group";t.scattermode==="group"&&r("scattergap",n?t.bargap:.2)}});var Rg=ye((knr,Ode)=>{"use strict";var Fdt=uo(),qde=Mr(),qdt=qde.dateTime2ms,WP=qde.incrementMonth,Odt=es(),Bdt=Odt.ONEAVGMONTH;Ode.exports=function(t,r,n,i){if(r.type!=="date")return{vals:i};var a=t[n+"periodalignment"];if(!a)return{vals:i};var o=t[n+"period"],s;if(Fdt(o)){if(o=+o,o<=0)return{vals:i}}else if(typeof o=="string"&&o.charAt(0)==="M"){var l=+o.substring(1);if(l>0&&Math.round(l)===l)s=l;else return{vals:i}}for(var u=r.calendar,c=a==="start",f=a==="end",h=t[n+"period0"],d=qdt(h,u)||0,v=[],x=[],b=[],p=i.length,E=0;Ek;)_=WP(_,-s,u);for(;_<=k;)_=WP(_,s,u);L=WP(_,-s,u)}else{for(A=Math.round((k-d)/o),_=d+A*o;_>k;)_-=o;for(;_<=k;)_+=o;L=_-o}v[E]=c?L:f?_:(L+_)/2,x[E]=L,b[E]=_}return{vals:v,starts:x,ends:b}}});var z0=ye((Cnr,Nde)=>{"use strict";var QN=Dv().hasColorscale,eU=zv(),Bde=lu();Nde.exports=function(t,r){Bde.hasLines(r)&&QN(r,"line")&&eU(t,r,{vals:r.line.color,containerStr:"line",cLetter:"c"}),Bde.hasMarkers(r)&&(QN(r,"marker")&&eU(t,r,{vals:r.marker.color,containerStr:"marker",cLetter:"c"}),QN(r,"marker.line")&&eU(t,r,{vals:r.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}});var km=ye((Lnr,Ude)=>{"use strict";var Df=Mr();Ude.exports=function(t,r){for(var n=0;n{"use strict";var Vde=Mr();Hde.exports=function(t,r){Vde.isArrayOrTypedArray(r.selectedpoints)&&Vde.tagSelected(t,r)}});var q0=ye((Inr,Kde)=>{"use strict";var Gde=uo(),rU=Mr(),GM=Qa(),jde=Rg(),tU=es().BADNUM,iU=lu(),Ndt=z0(),Udt=km(),Vdt=F0();function Hdt(e,t){var r=e._fullLayout,n=t._xA=GM.getFromId(e,t.xaxis||"x","x"),i=t._yA=GM.getFromId(e,t.yaxis||"y","y"),a=n.makeCalcdata(t,"x"),o=i.makeCalcdata(t,"y"),s=jde(t,n,"x",a),l=jde(t,i,"y",o),u=s.vals,c=l.vals,f=t._length,h=new Array(f),d=t.ids,v=nU(t,r,n,i),x=!1,b,p,E,k,A,L;Xde(r,t);var _="x",C="y",M;if(v)rU.pushUnique(v.traceIndices,t.index),b=v.orientation==="v",b?(C="s",M="x"):(_="s",M="y"),A=v.stackgaps==="interpolate";else{var g=Zde(t,f);Wde(e,t,n,i,u,c,g)}var P=!!t.xperiodalignment,T=!!t.yperiodalignment;for(p=0;pp&&h[k].gap;)k--;for(L=h[k].s,E=h.length-1;E>k;E--)h[E].s=L;for(;p{"use strict";Jde.exports=ZP;var Gdt=Mr().distinctVals;function ZP(e,t){this.traces=e,this.sepNegVal=t.sepNegVal,this.overlapNoMerge=t.overlapNoMerge;for(var r=1/0,n=t.posAxis._id.charAt(0),i=[],a=0;a{"use strict";var O0=uo(),g_=Mr().isArrayOrTypedArray,Q3=es().BADNUM,jdt=ba(),jM=Qa(),Wdt=Bb().getAxisGroup,XP=$de();function Zdt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ul+o||!O0(s))}for(var c=0;c{"use strict";var ive=q0(),nve=Gb().setGroupPositions;function avt(e,t){for(var r=t.xaxis,n=t.yaxis,i=e._fullLayout,a=e._fullData,o=e.calcdata,s=[],l=[],u=0;ug[c]&&c{"use strict";var svt=ao(),cve=es(),WM=cve.BADNUM,fve=cve.LOG_CLIP,sve=fve+.5,lve=fve-.5,YP=Mr(),lvt=YP.segmentsIntersect,uve=YP.constrain,cU=Sm();hve.exports=function(t,r){var n=r.trace||{},i=r.xaxis,a=r.yaxis,o=i.type==="log",s=a.type==="log",l=i._length,u=a._length,c=r.backoff,f=n.marker,h=r.connectGaps,d=r.baseTolerance,v=r.shape,x=v==="linear",b=n.fill&&n.fill!=="none",p=[],E=cU.minTolerance,k=t.length,A=new Array(k),L=0,_,C,M,g,P,T,F,q,V,H,X,G,N,W,re,ae;function _e(ut){var Ne=t[ut];if(!Ne)return!1;var Ye=r.linearized?i.l2p(Ne.x):i.c2p(Ne.x),Ve=r.linearized?a.l2p(Ne.y):a.c2p(Ne.y);if(Ye===WM){if(o&&(Ye=i.c2p(Ne.x,!0)),Ye===WM)return!1;s&&Ve===WM&&(Ye*=Math.abs(i._m*u*(i._m>0?sve:lve)/(a._m*l*(a._m>0?sve:lve)))),Ye*=1e3}if(Ve===WM){if(s&&(Ve=a.c2p(Ne.y,!0)),Ve===WM)return!1;Ve*=1e3}return[Ye,Ve]}function Me(ut,Ne,Ye,Ve){var Xe=Ye-ut,ht=Ve-Ne,Le=.5-ut,xe=.5-Ne,Se=Xe*Xe+ht*ht,lt=Xe*Le+ht*xe;if(lt>0&<1||Math.abs(Le.y-Ye[0][1])>1)&&(Le=[Le.x,Le.y],Ve&&Te(Le,ut)ze||ut[1]me)return[uve(ut[0],Ae,ze),uve(ut[1],Ce,me)]}function kt(ut,Ne){if(ut[0]===Ne[0]&&(ut[0]===Ae||ut[0]===ze)||ut[1]===Ne[1]&&(ut[1]===Ce||ut[1]===me))return!0}function Ct(ut,Ne){var Ye=[],Ve=Rt(ut),Xe=Rt(Ne);return Ve&&Xe&&kt(Ve,Xe)||(Ve&&Ye.push(Ve),Xe&&Ye.push(Xe)),Ye}function Yt(ut,Ne,Ye){return function(Ve,Xe){var ht=Rt(Ve),Le=Rt(Xe),xe=[];if(ht&&Le&&kt(ht,Le))return xe;ht&&xe.push(ht),Le&&xe.push(Le);var Se=2*YP.constrain((Ve[ut]+Xe[ut])/2,Ne,Ye)-((ht||Ve)[ut]+(Le||Xe)[ut]);if(Se){var lt;ht&&Le?lt=Se>0==ht[ut]>Le[ut]?ht:Le:lt=ht||Le,lt[ut]+=Se}return xe}}var xr;v==="linear"||v==="spline"?xr=ot:v==="hv"||v==="vh"?xr=Ct:v==="hvh"?xr=Yt(0,Ae,ze):v==="vhv"&&(xr=Yt(1,Ce,me));function er(ut,Ne){var Ye=Ne[0]-ut[0],Ve=(Ne[1]-ut[1])/Ye,Xe=(ut[1]*Ne[0]-Ne[1]*ut[0])/Ye;return Xe>0?[Ve>0?Ae:ze,me]:[Ve>0?ze:Ae,Ce]}function Ke(ut){var Ne=ut[0],Ye=ut[1],Ve=Ne===A[L-1][0],Xe=Ye===A[L-1][1];if(!(Ve&&Xe))if(L>1){var ht=Ne===A[L-2][0],Le=Ye===A[L-2][1];Ve&&(Ne===Ae||Ne===ze)&&ht?Le?L--:A[L-1]=ut:Xe&&(Ye===Ce||Ye===me)&&Le?ht?L--:A[L-1]=ut:A[L++]=ut}else A[L++]=ut}function xt(ut){A[L-1][0]!==ut[0]&&A[L-1][1]!==ut[1]&&Ke([nt,ct]),Ke(ut),qt=null,nt=ct=0}var bt=YP.isArrayOrTypedArray(f);function Lt(ut){if(ut&&c&&(ut.i=_,ut.d=t,ut.trace=n,ut.marker=bt?f[ut.i]:f,ut.backoff=c),ke=ut[0]/l,ge=ut[1]/u,ce=ut[0]ze?ze:0,Ge=ut[1]me?me:0,ce||Ge){if(!L)A[L++]=[ce||ut[0],Ge||ut[1]];else if(qt){var Ne=xr(qt,ut);Ne.length>1&&(xt(Ne[0]),A[L++]=Ne[1])}else rt=xr(A[L-1],ut)[0],A[L++]=rt;var Ye=A[L-1];ce&&Ge&&(Ye[0]!==ce||Ye[1]!==Ge)?(qt&&(nt!==ce&&ct!==Ge?Ke(nt&&ct?er(qt,ut):[nt||ce,ct||Ge]):nt&&ct&&Ke([nt,ct])),Ke([ce,Ge])):nt-ce&&ct-Ge&&Ke([ce||nt,Ge||ct]),qt=ut,nt=ce,ct=Ge}else qt&&xt(xr(qt,ut)[0]),A[L++]=ut}for(_=0;_ie(T,St))break;M=T,N=V[0]*q[0]+V[1]*q[1],N>X?(X=N,g=T,F=!1):N=t.length||!T)break;Lt(T),C=T}}qt&&Ke([nt||qt[0],ct||qt[1]]),p.push(A.slice(0,L))}var Et=v.slice(v.length-1);if(c&&Et!=="h"&&Et!=="v"){for(var dt=!1,Ht=-1,$t=[],fr=0;fr{"use strict";var dve={tonextx:1,tonexty:1,tonext:1};vve.exports=function(t,r,n){var i,a,o,s,l,u={},c=!1,f=-1,h=0,d=-1;for(a=0;a=0?l=d:(l=d=h,h++),l{"use strict";var Dg=xa(),uvt=ba(),ZM=Mr(),tT=ZM.ensureSingle,gve=ZM.identity,zf=ao(),rT=lu(),cvt=fU(),fvt=hU(),KP=wM().tester;mve.exports=function(t,r,n,i,a,o){var s,l,u=!a,c=!!a&&a.duration>0,f=fvt(t,r,n);if(s=i.selectAll("g.trace").data(f,function(d){return d[0].trace.uid}),s.enter().append("g").attr("class",function(d){return"trace scatter trace"+d[0].trace.uid}).style("stroke-miterlimit",2),s.order(),hvt(t,s,r),c){o&&(l=o());var h=Dg.transition().duration(a.duration).ease(a.easing).each("end",function(){l&&l()}).each("interrupt",function(){l&&l()});h.each(function(){i.selectAll("g.trace").each(function(d,v){pve(t,v,r,d,f,this,a)})})}else s.each(function(d,v){pve(t,v,r,d,f,this,a)});u&&s.exit().remove(),i.selectAll("path:not([d])").remove()};function hvt(e,t,r){t.each(function(n){var i=tT(Dg.select(this),"g","fills");zf.setClipUrl(i,r.layerClipId,e);var a=n[0].trace,o=[];a._ownfill&&o.push("_ownFill"),a._nexttrace&&o.push("_nextFill");var s=i.selectAll("g").data(o,gve);s.enter().append("g"),s.exit().each(function(l){a[l]=null}).remove(),s.order().each(function(l){a[l]=tT(Dg.select(this),"path","js-fill")})})}function pve(e,t,r,n,i,a,o){var s=e._context.staticPlot,l;dvt(e,t,r,n,i);var u=!!o&&o.duration>0;function c(Yt){return u?Yt.transition():Yt}var f=r.xaxis,h=r.yaxis,d=n[0].trace,v=d.line,x=Dg.select(a),b=tT(x,"g","errorbars"),p=tT(x,"g","lines"),E=tT(x,"g","points"),k=tT(x,"g","text");if(uvt.getComponentMethod("errorbars","plot")(e,b,r,o),d.visible!==!0)return;c(x).style("opacity",d.opacity);var A,L,_=d.fill.charAt(d.fill.length-1);_!=="x"&&_!=="y"&&(_="");var C,M;_==="y"?(C=1,M=h.c2p(0,!0)):_==="x"&&(C=0,M=f.c2p(0,!0)),n[0][r.isRangePlot?"nodeRangePlot3":"node3"]=x;var g="",P=[],T=d._prevtrace,F=null,q=null;T&&(g=T._prevRevpath||"",L=T._nextFill,P=T._ownPolygons,F=T._fillsegments,q=T._fillElement);var V,H,X="",G="",N,W,re,ae,_e,Me,ke=[];d._polygons=[];var ge=[],ie=[],Te=ZM.noop;if(A=d._ownFill,rT.hasLines(d)||d.fill!=="none"){L&&L.datum(n),["hv","vh","hvh","vhv"].indexOf(v.shape)!==-1?(N=zf.steps(v.shape),W=zf.steps(v.shape.split("").reverse().join(""))):v.shape==="spline"?N=W=function(Yt){var xr=Yt[Yt.length-1];return Yt.length>1&&Yt[0][0]===xr[0]&&Yt[0][1]===xr[1]?zf.smoothclosed(Yt.slice(1),v.smoothing):zf.smoothopen(Yt,v.smoothing)}:N=W=function(Yt){return"M"+Yt.join("L")},re=function(Yt){return W(Yt.reverse())},ie=cvt(n,{xaxis:f,yaxis:h,trace:d,connectGaps:d.connectgaps,baseTolerance:Math.max(v.width||1,3)/4,shape:v.shape,backoff:v.backoff,simplify:v.simplify,fill:d.fill}),ge=new Array(ie.length);var Ee=0;for(l=0;l=s[0]&&x.x<=s[1]&&x.y>=l[0]&&x.y<=l[1]}),h=Math.ceil(f.length/c),d=0;i.forEach(function(x,b){var p=x[0].trace;rT.hasMarkers(p)&&p.marker.maxdisplayed>0&&b{"use strict";yve.exports={container:"marker",min:"cmin",max:"cmax"}});var $P=ye((Nnr,_ve)=>{"use strict";var JP=Qa();_ve.exports=function(t,r,n){var i={},a={_fullLayout:n},o=JP.getFromTrace(a,r,"x"),s=JP.getFromTrace(a,r,"y"),l=t.orig_x;l===void 0&&(l=t.x);var u=t.orig_y;return u===void 0&&(u=t.y),i.xLabel=JP.tickText(o,o.c2l(l),!0).text,i.yLabel=JP.tickText(s,s.c2l(u),!0).text,i}});var op=ye((Unr,xve)=>{"use strict";var dU=xa(),nT=ao(),vvt=ba();function pvt(e){var t=dU.select(e).selectAll("g.trace.scatter");t.style("opacity",function(r){return r[0].trace.opacity}),t.selectAll("g.points").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;vU(n,i,e)}),t.selectAll("g.text").each(function(r){var n=dU.select(this),i=r.trace||r[0].trace;pU(n,i,e)}),t.selectAll("g.trace path.js-line").call(nT.lineGroupStyle),t.selectAll("g.trace path.js-fill").call(nT.fillGroupStyle,e,!1),vvt.getComponentMethod("errorbars","style")(t)}function vU(e,t,r){nT.pointStyle(e.selectAll("path.point"),t,r)}function pU(e,t,r){nT.textPointStyle(e.selectAll("text"),t,r)}function gvt(e,t,r){var n=t[0].trace;n.selectedpoints?(nT.selectedPointStyle(r.selectAll("path.point"),n),nT.selectedTextStyle(r.selectAll("text"),n)):(vU(r,n,e),pU(r,n,e))}xve.exports={style:pvt,stylePoints:vU,styleText:pU,styleOnSelect:gvt}});var oT=ye((Vnr,bve)=>{"use strict";var aT=va(),mvt=lu();bve.exports=function(t,r){var n,i;if(t.mode==="lines")return n=t.line.color,n&&aT.opacity(n)?n:t.fillcolor;if(t.mode==="none")return t.fill?t.fillcolor:"";var a=r.mcc||(t.marker||{}).color,o=r.mlcc||((t.marker||{}).line||{}).color;return i=a&&aT.opacity(a)?a:o&&aT.opacity(o)&&(r.mlw||((t.marker||{}).line||{}).width)?o:"",i?aT.opacity(i)<.3?aT.addOpacity(i,.3):i:(n=(t.line||{}).color,n&&aT.opacity(n)&&mvt.hasLines(t)&&t.line.width?n:t.fillcolor)}});var sT=ye((Hnr,Tve)=>{"use strict";var QP=Mr(),wve=Nc(),yvt=ba(),_vt=oT(),gU=va(),xvt=QP.fillText;Tve.exports=function(t,r,n,i){var a=t.cd,o=a[0].trace,s=t.xa,l=t.ya,u=s.c2p(r),c=l.c2p(n),f=[u,c],h=o.hoveron||"",d=o.mode.indexOf("markers")!==-1?3:.5,v=!!o.xperiodalignment,x=!!o.yperiodalignment;if(h.indexOf("points")!==-1){var b=function(G){if(v){var N=s.c2p(G.xStart),W=s.c2p(G.xEnd);return u>=Math.min(N,W)&&u<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(s.c2p(G.x)-u);return _e=Math.min(N,W)&&c<=Math.max(N,W)?0:1/0}var re=Math.max(3,G.mrc||0),ae=1-1/re,_e=Math.abs(l.c2p(G.y)-c);return _eke!=me>=ke&&(Ae=Te[ie-1][0],ze=Te[ie][0],me-Ce&&(Ee=Ae+(ze-Ae)*(ke-Ce)/(me-Ce),re=Math.min(re,Ee),ae=Math.max(ae,Ee)));return re=Math.max(re,0),ae=Math.min(ae,s._length),{x0:re,x1:ae,y0:ke,y1:ke}}if(h.indexOf("fills")!==-1&&o._fillElement){var V=F(o._fillElement)&&!F(o._fillExclusionElement);if(V){var H=q(o._polygons);H===null&&(H={x0:f[0],x1:f[0],y0:f[1],y1:f[1]});var X=gU.defaultLine;return gU.opacity(o.fillcolor)?X=o.fillcolor:gU.opacity((o.line||{}).color)&&(X=o.line.color),QP.extendFlat(t,{distance:t.maxHoverDistance,x0:H.x0,x1:H.x1,y0:H.y0,y1:H.y1,color:X,hovertemplate:!1}),delete t.index,o.text&&!QP.isArrayOrTypedArray(o.text)?t.text=String(o.text):t.text=o.name,[t]}}}});var lT=ye((Gnr,Sve)=>{"use strict";var Ave=lu();Sve.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h=!Ave.hasMarkers(s)&&!Ave.hasText(s);if(h)return[];if(r===!1)for(l=0;l{"use strict";Mve.exports={xaxis:{valType:"subplotid",dflt:"x",editType:"calc+clearAxisTypes"},yaxis:{valType:"subplotid",dflt:"y",editType:"calc+clearAxisTypes"}}});var yU=ye((Wnr,Lve)=>{"use strict";var XM=ba().traceIs,mU=L3();Lve.exports=function(t,r,n,i){n("autotypenumbers",i.autotypenumbersDflt);var a=n("type",(i.splomStash||{}).type);a==="-"&&(bvt(r,i.data),r.type==="-"?r.type="linear":t.type=r.type)};function bvt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i;r.indexOf("scene")!==-1&&(r=n);var a=wvt(t,r,n);if(a){if(a.type==="histogram"&&n==={v:"y",h:"x"}[a.orientation||"v"]){e.type="linear";return}var o=n+"calendar",s=a[o],l={noMultiCategory:!XM(a,"cartesian")||XM(a,"noMultiCategory")};if(a.type==="box"&&a._hasPreCompStats&&n==={h:"x",v:"y"}[a.orientation||"v"]&&(l.noMultiCategory=!0),l.autotypenumbers=e.autotypenumbers,Cve(a,n)){var u=kve(a),c=[];for(i=0;i0&&(i["_"+r+"axes"]||{})[t])return i;if((i[r+"axis"]||r)===t){if(Cve(i,r))return i;if((i[r]||[]).length||i[r+"0"])return i}}}function kve(e){return{v:"x",h:"y"}[e.orientation||"v"]}function Cve(e,t){var r=kve(e),n=XM(e,"box-violin"),i=XM(e._fullInput||{},"candlestick");return n&&!i&&t===r&&e[r]===void 0&&e[r+"0"]===void 0}});var eI=ye((Znr,Pve)=>{"use strict";var Tvt=vv().isTypedArraySpec;function Avt(e,t){var r=t.dataAttr||e._id.charAt(0),n={},i,a,o;if(t.axData)i=t.axData;else for(i=[],a=0;a0||Tvt(a),s;o&&(s="array");var l=n("categoryorder",s),u;l==="array"&&(u=n("categoryarray")),!o&&l==="array"&&(l=r.categoryorder="trace"),l==="trace"?r._initialCategories=[]:l==="array"?r._initialCategories=u.slice():(u=Avt(r,i).sort(),l==="category ascending"?r._initialCategories=u:l==="category descending"&&(r._initialCategories=u.reverse()))}}});var YM=ye((Xnr,Rve)=>{"use strict";var Ive=id().mix,Svt=dh(),Mvt=Mr();Rve.exports=function(t,r,n,i){i=i||{};var a=i.dfltColor;function o(C,M){return Mvt.coerce2(t,r,i.attributes,C,M)}var s=o("linecolor",a),l=o("linewidth"),u=n("showline",i.showLine||!!s||!!l);u||(delete r.linecolor,delete r.linewidth);var c=Ive(a,i.bgColor,i.blend||Svt.lightFraction).toRgbString(),f=o("gridcolor",c),h=o("gridwidth"),d=o("griddash"),v=n("showgrid",i.showGrid||!!f||!!h||!!d);if(v||(delete r.gridcolor,delete r.gridwidth,delete r.griddash),i.hasMinor){var x=Ive(r.gridcolor,i.bgColor,67).toRgbString(),b=o("minor.gridcolor",x),p=o("minor.gridwidth",r.gridwidth||1),E=o("minor.griddash",r.griddash||"solid"),k=n("minor.showgrid",!!b||!!p||!!E);k||(delete r.minor.gridcolor,delete r.minor.gridwidth,delete r.minor.griddash)}if(!i.noZeroLine){var A=o("zerolinecolor",a),L=o("zerolinewidth"),_=n("zeroline",i.showGrid||!!A||!!L);_||(delete r.zerolinecolor,delete r.zerolinewidth)}}});var JM=ye((Ynr,Bve)=>{"use strict";var Dve=uo(),Evt=ba(),KM=Mr(),kvt=Vs(),Cvt=Zd(),_U=Cd(),zve=xb(),Fve=T3(),Lvt=t_(),Pvt=r_(),Ivt=eI(),Rvt=YM(),Dvt=dB(),qve=ym(),tI=ad().WEEKDAY_PATTERN,zvt=ad().HOUR_PATTERN;Bve.exports=function(t,r,n,i,a){var o=i.letter,s=i.font||{},l=i.splomStash||{},u=n("visible",!i.visibleDflt),c=r._template||{},f=r.type||c.type||"-",h;if(f==="date"){var d=Evt.getComponentMethod("calendars","handleDefaults");d(t,r,"calendar",i.calendar),i.noTicklabelmode||(h=n("ticklabelmode"))}!i.noTicklabelindex&&(f==="date"||f==="linear")&&n("ticklabelindex");var v="";(!i.noTicklabelposition||f==="multicategory")&&(v=KM.coerce(t,r,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:h==="period"?["outside","inside"]:o==="x"?["outside","inside","outside left","inside left","outside right","inside right"]:["outside","inside","outside top","inside top","outside bottom","inside bottom"]}},"ticklabelposition")),i.noTicklabeloverflow||n("ticklabeloverflow",v.indexOf("inside")!==-1?"hide past domain":f==="category"||f==="multicategory"?"allow":"hide past div"),qve(r,a),Dvt(t,r,n,i),Ivt(t,r,n,i),f!=="category"&&!i.noHover&&n("hoverformat");var x=n("color"),b=x!==_U.color.dflt?x:s.color,p=l.label||a._dfltTitle[o];if(Pvt(t,r,n,f,i),!u)return r;n("title.text",p),KM.coerceFont(n,"title.font",s,{overrideDflt:{size:KM.bigFont(s.size),color:b}}),zve(t,r,n,f);var E=i.hasMinor;if(E&&(kvt.newContainer(r,"minor"),zve(t,r,n,f,{isMinor:!0})),Lvt(t,r,n,f,i),Fve(t,r,n,i),E){var k=i.isMinor;i.isMinor=!0,Fve(t,r,n,i),i.isMinor=k}Rvt(t,r,n,{dfltColor:x,bgColor:i.bgColor,showGrid:i.showGrid,hasMinor:E,attributes:_U}),E&&!r.minor.ticks&&!r.minor.showgrid&&delete r.minor,(r.showline||r.ticks)&&n("mirror");var A=f==="multicategory";if(!i.noTickson&&(f==="category"||A)&&(r.ticks||r.showgrid)){var L;A&&(L="boundaries");var _=n("tickson",L);_==="boundaries"&&delete r.ticklabelposition}if(A){var C=n("showdividers");C&&(n("dividercolor"),n("dividerwidth"))}if(f==="date")if(Cvt(t,r,{name:"rangebreaks",inclusionAttr:"enabled",handleItemDefaults:Fvt}),!r.rangebreaks.length)delete r.rangebreaks;else{for(var M=0;M=2){var o="",s,l;if(a.length===2){for(s=0;s<2;s++)if(l=Ove(a[s]),l){o=tI;break}}var u=n("pattern",o);if(u===tI)for(s=0;s<2;s++)l=Ove(a[s]),l&&(t.bounds[s]=a[s]=l-1);if(u)for(s=0;s<2;s++)switch(l=a[s],u){case tI:if(!Dve(l)){t.enabled=!1;return}if(l=+l,l!==Math.floor(l)||l<0||l>=7){t.enabled=!1;return}t.bounds[s]=a[s]=l;break;case zvt:if(!Dve(l)){t.enabled=!1;return}if(l=+l,l<0||l>24){t.enabled=!1;return}t.bounds[s]=a[s]=l;break}if(r.autorange===!1){var c=r.range;if(c[0]c[1]){t.enabled=!1;return}}else if(a[0]>c[0]&&a[1]{"use strict";var Ovt=uo(),rI=Mr();Nve.exports=function(t,r,n,i){var a=i.counterAxes||[],o=i.overlayableAxes||[],s=i.letter,l=i.grid,u=i.overlayingDomain,c,f,h,d,v,x;l&&(f=l._domains[s][l._axisMap[r._id]],c=l._anchors[r._id],f&&(h=l[s+"side"].split(" ")[0],d=l.domain[s][h==="right"||h==="top"?1:0])),f=f||[0,1],c=c||(Ovt(t.position)?"free":a[0]||"free"),h=h||(s==="x"?"bottom":"left"),d=d||0,v=0,x=!1;var b=rI.coerce(t,r,{anchor:{valType:"enumerated",values:["free"].concat(a),dflt:c}},"anchor"),p=rI.coerce(t,r,{side:{valType:"enumerated",values:s==="x"?["bottom","top"]:["left","right"],dflt:h}},"side");if(b==="free"){if(s==="y"){var E=n("autoshift");E&&(d=p==="left"?u[0]:u[1],x=r.automargin?r.automargin:!0,v=p==="left"?-3:3),n("shift",v)}n("position",d)}n("automargin",x);var k=!1;if(o.length&&(k=rI.coerce(t,r,{overlaying:{valType:"enumerated",values:[!1].concat(o),dflt:!1}},"overlaying")),!k){var A=n("domain",f);A[0]>A[1]-1/4096&&(r.domain=f),rI.noneOrAll(t.domain,r.domain,f),r.tickmode==="sync"&&(r.tickmode="auto")}return n("layer"),r}});var Yve=ye((Jnr,Xve)=>{"use strict";var jb=Mr(),Uve=va(),Bvt=rp().isUnifiedHover,Nvt=OB(),Vve=Vs(),Uvt=s3(),Hve=Cd(),Vvt=yU(),Gve=JM(),Hvt=Bb(),jve=iI(),bU=af(),Cm=bU.id2name,Wve=bU.name2id,Gvt=ad().AX_ID_PATTERN,Zve=ba(),nI=Zve.traceIs,xU=Zve.getComponentMethod;function aI(e,t,r){Array.isArray(e[t])?e[t].push(r):e[t]=[r]}Xve.exports=function(t,r,n){var i=r.autotypenumbers,a={},o={},s={},l={},u={},c={},f={},h={},d={},v={},x,b;for(x=0;x{"use strict";var jvt=xa(),Kve=ba(),oI=Mr(),Qp=ao(),sI=Qa();Jve.exports=function(t,r,n,i){var a=t._fullLayout;if(r.length===0){sI.redrawComponents(t);return}function o(b){var p=b.xaxis,E=b.yaxis;a._defs.select("#"+b.clipId+"> rect").call(Qp.setTranslate,0,0).call(Qp.setScale,1,1),b.plot.call(Qp.setTranslate,p._offset,E._offset).call(Qp.setScale,1,1);var k=b.plot.selectAll(".scatterlayer .trace");k.selectAll(".point").call(Qp.setPointGroupScale,1,1),k.selectAll(".textpoint").call(Qp.setTextPointsScale,1,1),k.call(Qp.hideOutsideRangePoints,b)}function s(b,p){var E=b.plotinfo,k=E.xaxis,A=E.yaxis,L=k._length,_=A._length,C=!!b.xr1,M=!!b.yr1,g=[];if(C){var P=oI.simpleMap(b.xr0,k.r2l),T=oI.simpleMap(b.xr1,k.r2l),F=P[1]-P[0],q=T[1]-T[0];g[0]=(P[0]*(1-p)+p*T[0]-P[0])/(P[1]-P[0])*L,g[2]=L*(1-p+p*q/F),k.range[0]=k.l2r(P[0]*(1-p)+p*T[0]),k.range[1]=k.l2r(P[1]*(1-p)+p*T[1])}else g[0]=0,g[2]=L;if(M){var V=oI.simpleMap(b.yr0,A.r2l),H=oI.simpleMap(b.yr1,A.r2l),X=V[1]-V[0],G=H[1]-H[0];g[1]=(V[1]*(1-p)+p*H[1]-V[1])/(V[0]-V[1])*_,g[3]=_*(1-p+p*G/X),A.range[0]=k.l2r(V[0]*(1-p)+p*H[0]),A.range[1]=A.l2r(V[1]*(1-p)+p*H[1])}else g[1]=0,g[3]=_;sI.drawOne(t,k,{skipTitle:!0}),sI.drawOne(t,A,{skipTitle:!0}),sI.redrawComponents(t,[k._id,A._id]);var N=C?L/g[2]:1,W=M?_/g[3]:1,re=C?g[0]:0,ae=M?g[1]:0,_e=C?g[0]/g[2]*L:0,Me=M?g[1]/g[3]*_:0,ke=k._offset-_e,ge=A._offset-Me;E.clipRect.call(Qp.setTranslate,re,ae).call(Qp.setScale,1/N,1/W),E.plot.call(Qp.setTranslate,ke,ge).call(Qp.setScale,N,W),Qp.setPointGroupScale(E.zoomScalePts,1/N,1/W),Qp.setTextPointsScale(E.zoomScaleTxt,1/N,1/W)}var l;i&&(l=i());function u(){for(var b={},p=0;pn.duration?(u(),d=window.cancelAnimationFrame(x)):d=window.requestAnimationFrame(x)}return f=Date.now(),d=window.requestAnimationFrame(x),Promise.resolve()}});var Jf=ye(yv=>{"use strict";var uI=xa(),Qve=ba(),Wb=Mr(),Wvt=Xu(),Zvt=ao(),epe=kd().getModuleCalcData,m_=af(),zg=ad(),Xvt=Zp(),ql=Wb.ensureSingle;function lI(e,t,r){return Wb.ensureSingle(e,t,r,function(n){n.datum(r)})}var Zb=zg.zindexSeparator;yv.name="cartesian";yv.attr=["xaxis","yaxis"];yv.idRoot=["x","y"];yv.idRegex=zg.idRegex;yv.attrRegex=zg.attrRegex;yv.attributes=Eve();yv.layoutAttributes=Cd();yv.supplyLayoutDefaults=Yve();yv.transitionAxes=$ve();yv.finalizeSubplots=function(e,t){var r=t._subplots,n=r.xaxis,i=r.yaxis,a=r.cartesian,o=a,s={},l={},u,c,f;for(u=0;u0){var d=h.id;if(d.indexOf(Zb)!==-1)continue;d+=Zb+(u+1),h=Wb.extendFlat({},h,{id:d,plot:i._cartesianlayer.selectAll(".subplot").select("."+d)})}for(var v=[],x,b=0;b1&&(L+=Zb+A),k.push(s+L),o=0;o1,f=t.mainplotinfo;if(!t.mainplot||c)if(u)t.xlines=ql(n,"path","xlines-above"),t.ylines=ql(n,"path","ylines-above"),t.xaxislayer=ql(n,"g","xaxislayer-above"),t.yaxislayer=ql(n,"g","yaxislayer-above");else{if(!o){var h=ql(n,"g","layer-subplot");t.shapelayer=ql(h,"g","shapelayer"),t.imagelayer=ql(h,"g","imagelayer"),f&&c?(t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer):(t.minorGridlayer=ql(n,"g","minor-gridlayer"),t.gridlayer=ql(n,"g","gridlayer"),t.zerolinelayer=ql(n,"g","zerolinelayer"));var d=ql(n,"g","layer-between");t.shapelayerBetween=ql(d,"g","shapelayer"),t.imagelayerBetween=ql(d,"g","imagelayer"),ql(n,"path","xlines-below"),ql(n,"path","ylines-below"),t.overlinesBelow=ql(n,"g","overlines-below"),ql(n,"g","xaxislayer-below"),ql(n,"g","yaxislayer-below"),t.overaxesBelow=ql(n,"g","overaxes-below")}t.overplot=ql(n,"g","overplot"),t.plot=ql(t.overplot,"g",i),o||(t.xlines=ql(n,"path","xlines-above"),t.ylines=ql(n,"path","ylines-above"),t.overlinesAbove=ql(n,"g","overlines-above"),ql(n,"g","xaxislayer-above"),ql(n,"g","yaxislayer-above"),t.overaxesAbove=ql(n,"g","overaxes-above"),t.xlines=n.select(".xlines-"+s),t.ylines=n.select(".ylines-"+l),t.xaxislayer=n.select(".xaxislayer-"+s),t.yaxislayer=n.select(".yaxislayer-"+l))}else{var v=f.plotgroup,x=i+"-x",b=i+"-y";t.minorGridlayer=f.minorGridlayer,t.gridlayer=f.gridlayer,t.zerolinelayer=f.zerolinelayer,ql(f.overlinesBelow,"path",x),ql(f.overlinesBelow,"path",b),ql(f.overaxesBelow,"g",x),ql(f.overaxesBelow,"g",b),t.plot=ql(f.overplot,"g",i),ql(f.overlinesAbove,"path",x),ql(f.overlinesAbove,"path",b),ql(f.overaxesAbove,"g",x),ql(f.overaxesAbove,"g",b),t.xlines=v.select(".overlines-"+s).select("."+x),t.ylines=v.select(".overlines-"+l).select("."+b),t.xaxislayer=v.select(".overaxes-"+s).select("."+x),t.yaxislayer=v.select(".overaxes-"+l).select("."+b)}o||(u||(lI(t.minorGridlayer,"g",t.xaxis._id),lI(t.minorGridlayer,"g",t.yaxis._id),t.minorGridlayer.selectAll("g").map(function(p){return p[0]}).sort(m_.idSort),lI(t.gridlayer,"g",t.xaxis._id),lI(t.gridlayer,"g",t.yaxis._id),t.gridlayer.selectAll("g").map(function(p){return p[0]}).sort(m_.idSort)),t.xlines.style("fill","none").classed("crisp",!0),t.ylines.style("fill","none").classed("crisp",!0))}function ipe(e,t){if(e){var r={};e.each(function(l){var u=l[0],c=uI.select(this);c.remove(),npe(u,t),r[u]=!0});for(var n in t._plots)for(var i=t._plots[n],a=i.overlays||[],o=0;o{"use strict";var cI=lu();ape.exports={hasLines:cI.hasLines,hasMarkers:cI.hasMarkers,hasText:cI.hasText,isBubble:cI.isBubble,attributes:Uc(),layoutAttributes:V6(),supplyDefaults:Ide(),crossTraceDefaults:$N(),supplyLayoutDefaults:Fde(),calc:q0().calc,crossTraceCalc:ove(),arraysToCalcdata:km(),plot:iT(),colorbar:Kd(),formatLabels:$P(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:sT(),selectPoints:lT(),animatable:!0,moduleType:"trace",name:"scatter",basePlotModule:Jf(),categories:["cartesian","svg","symbols","errorBarsOK","showLegend","scatter-like","zoomScale"],meta:{}}});var upe=ye((tar,lpe)=>{"use strict";var Kvt=xa(),Jvt=va(),spe=MN(),wU=Mr(),$vt=wU.strScale,Qvt=wU.strRotate,ept=wU.strTranslate;lpe.exports=function(t,r,n){var i=t.node(),a=spe[n.arrowhead||0],o=spe[n.startarrowhead||0],s=(n.arrowwidth||1)*(n.arrowsize||1),l=(n.arrowwidth||1)*(n.startarrowsize||1),u=r.indexOf("start")>=0,c=r.indexOf("end")>=0,f=a.backoff*s+n.standoff,h=o.backoff*l+n.startstandoff,d,v,x,b;if(i.nodeName==="line"){d={x:+t.attr("x1"),y:+t.attr("y1")},v={x:+t.attr("x2"),y:+t.attr("y2")};var p=d.x-v.x,E=d.y-v.y;if(x=Math.atan2(E,p),b=x+Math.PI,f&&h&&f+h>Math.sqrt(p*p+E*E)){V();return}if(f){if(f*f>p*p+E*E){V();return}var k=f*Math.cos(x),A=f*Math.sin(x);v.x+=k,v.y+=A,t.attr({x2:v.x,y2:v.y})}if(h){if(h*h>p*p+E*E){V();return}var L=h*Math.cos(x),_=h*Math.sin(x);d.x-=L,d.y-=_,t.attr({x1:d.x,y1:d.y})}}else if(i.nodeName==="path"){var C=i.getTotalLength(),M="";if(C{"use strict";var cpe=xa(),TU=ba(),tpt=Xu(),__=Mr(),AU=__.strTranslate,QM=Qa(),Xb=va(),Py=ao(),fpe=Nc(),SU=Pl(),MU=Tg(),$M=gv(),rpt=Vs().arrayEditor,ipt=upe();vpe.exports={draw:npt,drawOne:hpe,drawRaw:dpe};function npt(e){var t=e._fullLayout;t._infolayer.selectAll(".annotation").remove();for(var r=0;r2/3?Xe="right":Xe="center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[Xe]}for(var Ce=!1,me=["x","y"],Re=0;Re1)&&(nt===Ge?(St=ct.r2fraction(t["a"+ce]),(St<0||St>1)&&(Ce=!0)):Ce=!0),xr=ct._offset+ct.r2p(t[ce]),xt=.5}else{var Et=Lt==="domain";ce==="x"?(Ke=t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.l+s.w*Ke):(Ke=1-t[ce],xr=Et?ct._offset+ct._length*Ke:xr=s.t+s.h*Ke),xt=t.showarrow?.5:Ke}if(t.showarrow){Yt.head=xr;var dt=t["a"+ce];if(bt=rt*ze(.5,t.xanchor)-ot*ze(.5,t.yanchor),nt===Ge){var Ht=QM.getRefType(nt);Ht==="domain"?(ce==="y"&&(dt=1-dt),Yt.tail=ct._offset+ct._length*dt):Ht==="paper"?ce==="y"?(dt=1-dt,Yt.tail=s.t+s.h*dt):Yt.tail=s.l+s.w*dt:Yt.tail=ct._offset+ct.r2p(dt),er=bt}else Yt.tail=xr+dt,er=bt+dt;Yt.text=Yt.tail+bt;var $t=o[ce==="x"?"width":"height"];if(Ge==="paper"&&(Yt.head=__.constrain(Yt.head,1,$t-1)),nt==="pixel"){var fr=-Math.max(Yt.tail-3,Yt.text),_r=Math.min(Yt.tail+3,Yt.text)-$t;fr>0?(Yt.tail+=fr,Yt.text+=fr):_r>0&&(Yt.tail-=_r,Yt.text-=_r)}Yt.tail+=Ct,Yt.head+=Ct}else bt=Rt*ze(xt,kt),er=bt,Yt.text=xr+bt;Yt.text+=Ct,bt+=Ct,er+=Ct,t["_"+ce+"padplus"]=Rt/2+er,t["_"+ce+"padminus"]=Rt/2-er,t["_"+ce+"size"]=Rt,t["_"+ce+"shift"]=bt}if(Ce){C.remove();return}var Br=0,Or=0;if(t.align!=="left"&&(Br=(ie-ke)*(t.align==="center"?.5:1)),t.valign!=="top"&&(Or=(Te-ge)*(t.valign==="middle"?.5:1)),_e)ae.select("svg").attr({x:P+Br-1,y:P+Or}).call(Py.setClipUrl,F?x:null,e);else{var Nr=P+Or-Me.top,ut=P+Br-Me.left;X.call(SU.positionText,ut,Nr).call(Py.setClipUrl,F?x:null,e)}q.select("rect").call(Py.setRect,P,P,ie,Te),T.call(Py.setRect,M/2,M/2,Ee-M,Ae-M),C.call(Py.setTranslate,Math.round(b.x.text-Ee/2),Math.round(b.y.text-Ae/2)),k.attr({transform:"rotate("+p+","+b.x.text+","+b.y.text+")"});var Ne=function(Ve,Xe){E.selectAll(".annotation-arrow-g").remove();var ht=b.x.head,Le=b.y.head,xe=b.x.tail+Ve,Se=b.y.tail+Xe,lt=b.x.text+Ve,Gt=b.y.text+Xe,Vt=__.rotationXYMatrix(p,lt,Gt),ar=__.apply2DTransform(Vt),Qr=__.apply2DTransform2(Vt),ai=+T.attr("width"),jr=+T.attr("height"),ri=lt-.5*ai,bi=ri+ai,nn=Gt-.5*jr,Wi=nn+jr,Ni=[[ri,nn,ri,Wi],[ri,Wi,bi,Wi],[bi,Wi,bi,nn],[bi,nn,ri,nn]].map(Qr);if(!Ni.reduce(function(Vr,gi){return Vr^!!__.segmentsIntersect(ht,Le,ht+1e6,Le+1e6,gi[0],gi[1],gi[2],gi[3])},!1)){Ni.forEach(function(Vr){var gi=__.segmentsIntersect(xe,Se,ht,Le,Vr[0],Vr[1],Vr[2],Vr[3]);gi&&(xe=gi.x,Se=gi.y)});var _n=t.arrowwidth,$i=t.arrowcolor,zn=t.arrowside,Wn=E.append("g").style({opacity:Xb.opacity($i)}).classed("annotation-arrow-g",!0),It=Wn.append("path").attr("d","M"+xe+","+Se+"L"+ht+","+Le).style("stroke-width",_n+"px").call(Xb.stroke,Xb.rgb($i));if(ipt(It,zn,t),l.annotationPosition&&It.node().parentNode&&!n){var ft=ht,jt=Le;if(t.standoff){var Zt=Math.sqrt(Math.pow(ht-xe,2)+Math.pow(Le-Se,2));ft+=t.standoff*(xe-ht)/Zt,jt+=t.standoff*(Se-Le)/Zt}var yr=Wn.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(xe-ft)+","+(Se-jt),transform:AU(ft,jt)}).style("stroke-width",_n+6+"px").call(Xb.stroke,"rgba(0,0,0,0)").call(Xb.fill,"rgba(0,0,0,0)"),Fr,Zr;$M.init({element:yr.node(),gd:e,prepFn:function(){var Vr=Py.getTranslate(C);Fr=Vr.x,Zr=Vr.y,i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0)},moveFn:function(Vr,gi){var Si=ar(Fr,Zr),Mi=Si[0]+Vr,Pi=Si[1]+gi;C.call(Py.setTranslate,Mi,Pi),d("x",y_(i,Vr,"x",s,t)),d("y",y_(a,gi,"y",s,t)),t.axref===t.xref&&d("ax",y_(i,Vr,"ax",s,t)),t.ayref===t.yref&&d("ay",y_(a,gi,"ay",s,t)),Wn.attr("transform",AU(Vr,gi)),k.attr({transform:"rotate("+p+","+Mi+","+Pi+")"})},doneFn:function(){TU.call("_guiRelayout",e,v());var Vr=document.querySelector(".js-notes-box-panel");Vr&&Vr.redraw(Vr.selectedObj)}})}}};if(t.showarrow&&Ne(0,0),A){var Ye;$M.init({element:C.node(),gd:e,prepFn:function(){Ye=k.attr("transform")},moveFn:function(Ve,Xe){var ht="pointer";if(t.showarrow)t.axref===t.xref?d("ax",y_(i,Ve,"ax",s,t)):d("ax",t.ax+Ve),t.ayref===t.yref?d("ay",y_(a,Xe,"ay",s.w,t)):d("ay",t.ay+Xe),Ne(Ve,Xe);else{if(n)return;var Le,xe;if(i)Le=y_(i,Ve,"x",s,t);else{var Se=t._xsize/s.w,lt=t.x+(t._xshift-t.xshift)/s.w-Se/2;Le=$M.align(lt+Ve/s.w,Se,0,1,t.xanchor)}if(a)xe=y_(a,Xe,"y",s,t);else{var Gt=t._ysize/s.h,Vt=t.y-(t._yshift+t.yshift)/s.h-Gt/2;xe=$M.align(Vt-Xe/s.h,Gt,0,1,t.yanchor)}d("x",Le),d("y",xe),(!i||!a)&&(ht=$M.getCursor(i?.5:Le,a?.5:xe,t.xanchor,t.yanchor))}k.attr({transform:AU(Ve,Xe)+Ye}),MU(C,ht)},clickFn:function(Ve,Xe){t.captureevents&&e.emit("plotly_clickannotation",_(Xe))},doneFn:function(){MU(C),TU.call("_guiRelayout",e,v());var Ve=document.querySelector(".js-notes-box-panel");Ve&&Ve.redraw(Ve.selectedObj)}})}}l.annotationText?X.call(SU.makeEditable,{delegate:C,gd:e}).call(G).on("edit",function(W){t.text=W,this.call(G),d("text",W),i&&i.autorange&&h(i._name+".autorange",!0),a&&a.autorange&&h(a._name+".autorange",!0),TU.call("_guiRelayout",e,v())}):X.call(G)}});var xpe=ye((iar,_pe)=>{"use strict";var ppe=Mr(),apt=ba(),gpe=Vs().arrayEditor;_pe.exports={hasClickToShow:opt,onClick:spt};function opt(e,t){var r=ype(e,t);return r.on.length>0||r.explicitOff.length>0}function spt(e,t){var r=ype(e,t),n=r.on,i=r.off.concat(r.explicitOff),a={},o=e._fullLayout.annotations,s,l;if(n.length||i.length){for(s=0;s{"use strict";var EU=Mr(),uT=va();bpe.exports=function(t,r,n,i){i("opacity");var a=i("bgcolor"),o=i("bordercolor"),s=uT.opacity(o);i("borderpad");var l=i("borderwidth"),u=i("showarrow");i("text",u?" ":n._dfltTitle.annotation),i("textangle"),EU.coerceFont(i,"font",n.font),i("width"),i("align");var c=i("height");if(c&&i("valign"),u){var f=i("arrowside"),h,d;f.indexOf("end")!==-1&&(h=i("arrowhead"),d=i("arrowsize")),f.indexOf("start")!==-1&&(i("startarrowhead",h),i("startarrowsize",d)),i("arrowcolor",s?r.bordercolor:uT.defaultLine),i("arrowwidth",(s&&l||1)*2),i("standoff"),i("startstandoff")}var v=i("hovertext"),x=n.hoverlabel||{};if(v){var b=i("hoverlabel.bgcolor",x.bgcolor||(uT.opacity(a)?uT.rgb(a):uT.defaultLine)),p=i("hoverlabel.bordercolor",x.bordercolor||uT.contrast(b)),E=EU.extendFlat({},x.font);E.color||(E.color=p),EU.coerceFont(i,"hoverlabel.font",E)}i("captureevents",!!v)}});var Tpe=ye((aar,wpe)=>{"use strict";var CU=Mr(),Yb=Qa(),lpt=Zd(),upt=kU(),cpt=Nb();wpe.exports=function(t,r){lpt(t,r,{name:"annotations",handleItemDefaults:fpt})};function fpt(e,t,r){function n(k,A){return CU.coerce(e,t,cpt,k,A)}var i=n("visible"),a=n("clicktoshow");if(i||a){upt(e,t,r,n);for(var o=t.showarrow,s=["x","y"],l=[-10,-30],u={_fullLayout:r},c=0;c<2;c++){var f=s[c],h=Yb.coerceRef(e,t,u,f,"","paper");if(h!=="paper"){var d=Yb.getFromId(u,h);d._annIndices.push(t._index)}if(Yb.coercePosition(t,u,n,h,f,.5),o){var v="a"+f,x=Yb.coerceRef(e,t,u,v,"pixel",["pixel","paper"]);x!=="pixel"&&x!==h&&(x=t[v]="pixel");var b=x==="pixel"?l[c]:.4;Yb.coercePosition(t,u,n,x,v,b)}n(f+"anchor"),n(f+"shift")}if(CU.noneOrAll(e,t,["x","y"]),o&&CU.noneOrAll(e,t,["ax","ay"]),a){var p=n("xclick"),E=n("yclick");t._xclick=p===void 0?t.x:Yb.cleanPosition(p,u,t.xref),t._yclick=E===void 0?t.y:Yb.cleanPosition(E,u,t.yref)}}}});var Mpe=ye((oar,Spe)=>{"use strict";var LU=Mr(),Kb=Qa(),hpt=fI().draw;Spe.exports=function(t){var r=t._fullLayout,n=LU.filterVisible(r.annotations);if(n.length&&t._fullData.length)return LU.syncOrAsync([hpt,dpt],t)};function dpt(e){var t=e._fullLayout;LU.filterVisible(t.annotations).forEach(function(r){var n=Kb.getFromId(e,r.xref),i=Kb.getFromId(e,r.yref),a=Kb.getRefType(r.xref),o=Kb.getRefType(r.yref);r._extremes={},a==="range"&&Ape(r,n),o==="range"&&Ape(r,i)})}function Ape(e,t){var r=t._id,n=r.charAt(0),i=e[n],a=e["a"+n],o=e[n+"ref"],s=e["a"+n+"ref"],l=e["_"+n+"padplus"],u=e["_"+n+"padminus"],c={x:1,y:-1}[n]*e[n+"shift"],f=3*e.arrowsize*e.arrowwidth||0,h=f+c,d=f-c,v=3*e.startarrowsize*e.arrowwidth||0,x=v+c,b=v-c,p;if(s===o){var E=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:h,ppadminus:d}),k=Kb.findExtremes(t,[t.r2c(a)],{ppadplus:Math.max(l,x),ppadminus:Math.max(u,b)});p={min:[E.min[0],k.min[0]],max:[E.max[0],k.max[0]]}}else x=a?x+a:x,b=a?b-a:b,p=Kb.findExtremes(t,[t.r2c(i)],{ppadplus:Math.max(l,h,x),ppadminus:Math.max(u,d,b)});e._extremes[r]=p}});var kpe=ye((sar,Epe)=>{"use strict";var vpt=uo(),ppt=u6();Epe.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(!(a||o))return;var s=t._fullLayout.annotations,l=r._id.charAt(0),u,c;function f(d){var v=u[d],x=null;a?x=ppt(v,r.range):x=Math.pow(10,v),vpt(x)||(x=null),i(c+d,x)}for(var h=0;h{"use strict";var PU=fI(),Cpe=xpe();Lpe.exports={moduleType:"component",name:"annotations",layoutAttributes:Nb(),supplyLayoutDefaults:Tpe(),includeBasePlot:IM()("annotations"),calcAutorange:Mpe(),draw:PU.draw,drawOne:PU.drawOne,drawRaw:PU.drawRaw,hasClickToShow:Cpe.hasClickToShow,onClick:Cpe.onClick,convertCoords:kpe()}});var hI=ye((uar,Ipe)=>{"use strict";var Ku=Nb(),gpt=Bu().overrideAll,mpt=Vs().templatedArray;Ipe.exports=gpt(mpt("annotation",{visible:Ku.visible,x:{valType:"any"},y:{valType:"any"},z:{valType:"any"},ax:{valType:"number"},ay:{valType:"number"},xanchor:Ku.xanchor,xshift:Ku.xshift,yanchor:Ku.yanchor,yshift:Ku.yshift,text:Ku.text,textangle:Ku.textangle,font:Ku.font,width:Ku.width,height:Ku.height,opacity:Ku.opacity,align:Ku.align,valign:Ku.valign,bgcolor:Ku.bgcolor,bordercolor:Ku.bordercolor,borderpad:Ku.borderpad,borderwidth:Ku.borderwidth,showarrow:Ku.showarrow,arrowcolor:Ku.arrowcolor,arrowhead:Ku.arrowhead,startarrowhead:Ku.startarrowhead,arrowside:Ku.arrowside,arrowsize:Ku.arrowsize,startarrowsize:Ku.startarrowsize,arrowwidth:Ku.arrowwidth,standoff:Ku.standoff,startstandoff:Ku.startstandoff,hovertext:Ku.hovertext,hoverlabel:Ku.hoverlabel,captureevents:Ku.captureevents}),"calc","from-root")});var Dpe=ye((car,Rpe)=>{"use strict";var IU=Mr(),ypt=Qa(),_pt=Zd(),xpt=kU(),bpt=hI();Rpe.exports=function(t,r,n){_pt(t,r,{name:"annotations",handleItemDefaults:wpt,fullLayout:n.fullLayout})};function wpt(e,t,r,n){function i(s,l){return IU.coerce(e,t,bpt,s,l)}function a(s){var l=s+"axis",u={_fullLayout:{}};return u._fullLayout[l]=r[l],ypt.coercePosition(t,u,i,s,s,.5)}var o=i("visible");o&&(xpt(e,t,n.fullLayout,i),a("x"),a("y"),a("z"),IU.noneOrAll(e,t,["x","y","z"]),t.xref="x",t.yref="y",t.zref="z",i("xanchor"),i("yanchor"),i("xshift"),i("yshift"),t.showarrow&&(t.axref="pixel",t.ayref="pixel",i("ax",-10),i("ay",-30),IU.noneOrAll(e,t,["ax","ay"])))}});var Ope=ye((far,qpe)=>{"use strict";var zpe=Mr(),Fpe=Qa();qpe.exports=function(t){for(var r=t.fullSceneLayout,n=r.annotations,i=0;i{"use strict";function RU(e,t){var r=[0,0,0,0],n,i;for(n=0;n<4;++n)for(i=0;i<4;++i)r[i]+=e[4*n+i]*t[n];return r}function Apt(e,t){var r=RU(e.projection,RU(e.view,RU(e.model,[t[0],t[1],t[2],1])));return r}Bpe.exports=Apt});var Upe=ye((dar,Npe)=>{"use strict";var Spt=fI().drawRaw,Mpt=DU(),Ept=["x","y","z"];Npe.exports=function(t){for(var r=t.fullSceneLayout,n=t.dataScale,i=r.annotations,a=0;a1){s=!0;break}}s?t.fullLayout._infolayer.select(".annotation-"+t.id+'[data-index="'+a+'"]').remove():(o._pdata=Mpt(t.glplot.cameraParams,[r.xaxis.r2l(o.x)*n[0],r.yaxis.r2l(o.y)*n[1],r.zaxis.r2l(o.z)*n[2]]),Spt(t.graphDiv,o,a,t.id,o._xa,o._ya))}}});var Gpe=ye((par,Hpe)=>{"use strict";var kpt=ba(),Vpe=Mr();Hpe.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:hI()}}},layoutAttributes:hI(),handleDefaults:Dpe(),includeBasePlot:Cpt,convert:Ope(),draw:Upe()};function Cpt(e,t){var r=kpt.subplotsRegistry.gl3d;if(r)for(var n=r.attrRegex,i=Object.keys(e),a=0;a{"use strict";var jpe=Nb(),Wpe=Su(),Zpe=Uc().line,Lpt=Ed().dash,Fg=no().extendFlat,Ppt=Vs().templatedArray,gar=PM(),cT=vl(),Ipt=Wo().shapeTexttemplateAttrs,Rpt=b6();Xpe.exports=Ppt("shape",{visible:Fg({},cT.visible,{editType:"calc+arraydraw"}),showlegend:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},legend:Fg({},cT.legend,{editType:"calc+arraydraw"}),legendgroup:Fg({},cT.legendgroup,{editType:"calc+arraydraw"}),legendgrouptitle:{text:Fg({},cT.legendgrouptitle.text,{editType:"calc+arraydraw"}),font:Wpe({editType:"calc+arraydraw"}),editType:"calc+arraydraw"},legendrank:Fg({},cT.legendrank,{editType:"calc+arraydraw"}),legendwidth:Fg({},cT.legendwidth,{editType:"calc+arraydraw"}),type:{valType:"enumerated",values:["circle","rect","path","line"],editType:"calc+arraydraw"},layer:{valType:"enumerated",values:["below","above","between"],dflt:"above",editType:"arraydraw"},xref:Fg({},jpe.xref,{}),xsizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},xanchor:{valType:"any",editType:"calc+arraydraw"},x0:{valType:"any",editType:"calc+arraydraw"},x1:{valType:"any",editType:"calc+arraydraw"},x0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},x1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},yref:Fg({},jpe.yref,{}),ysizemode:{valType:"enumerated",values:["scaled","pixel"],dflt:"scaled",editType:"calc+arraydraw"},yanchor:{valType:"any",editType:"calc+arraydraw"},y0:{valType:"any",editType:"calc+arraydraw"},y1:{valType:"any",editType:"calc+arraydraw"},y0shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},y1shift:{valType:"number",dflt:0,min:-1,max:1,editType:"calc"},path:{valType:"string",editType:"calc+arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},line:{color:Fg({},Zpe.color,{editType:"arraydraw"}),width:Fg({},Zpe.width,{editType:"calc+arraydraw"}),dash:Fg({},Lpt,{editType:"arraydraw"}),editType:"calc+arraydraw"},fillcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"arraydraw"},fillrule:{valType:"enumerated",values:["evenodd","nonzero"],dflt:"evenodd",editType:"arraydraw"},editable:{valType:"boolean",dflt:!1,editType:"calc+arraydraw"},label:{text:{valType:"string",dflt:"",editType:"arraydraw"},texttemplate:Ipt({},{keys:Object.keys(Rpt)}),font:Wpe({editType:"calc+arraydraw",colorEditType:"arraydraw"}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right","start","middle","end"],editType:"arraydraw"},textangle:{valType:"angle",dflt:"auto",editType:"calc+arraydraw"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"auto",editType:"calc+arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],editType:"calc+arraydraw"},padding:{valType:"number",dflt:3,min:0,editType:"arraydraw"},editType:"arraydraw"},editType:"arraydraw"})});var Jpe=ye((yar,Kpe)=>{"use strict";var e4=Mr(),fT=Qa(),Dpt=Zd(),zpt=zU(),Ype=h_();Kpe.exports=function(t,r){Dpt(t,r,{name:"shapes",handleItemDefaults:qpt})};function Fpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}function qpt(e,t,r){function n(W,re){return e4.coerce(e,t,zpt,W,re)}t._isShape=!0;var i=n("visible");if(i){var a=n("showlegend");a&&(n("legend"),n("legendwidth"),n("legendgroup"),n("legendgrouptitle.text"),e4.coerceFont(n,"legendgrouptitle.font"),n("legendrank"));var o=n("path"),s=o?"path":"rect",l=n("type",s),u=l!=="path";u&&delete t.path,n("editable"),n("layer"),n("opacity"),n("fillcolor"),n("fillrule");var c=n("line.width");c&&(n("line.color"),n("line.dash"));for(var f=n("xsizemode"),h=n("ysizemode"),d=["x","y"],v=0;v<2;v++){var x=d[v],b=x+"anchor",p=x==="x"?f:h,E={_fullLayout:r},k,A,L,_=fT.coerceRef(e,t,E,x,void 0,"paper"),C=fT.getRefType(_);if(C==="range"?(k=fT.getFromId(E,_),k._shapeIndices.push(t._index),L=Ype.rangeToShapePosition(k),A=Ype.shapePositionToRange(k),(k.type==="category"||k.type==="multicategory")&&(n(x+"0shift"),n(x+"1shift"))):A=L=e4.identity,u){var M=.25,g=.75,P=x+"0",T=x+"1",F=e[P],q=e[T];e[P]=A(e[P],!0),e[T]=A(e[T],!0),p==="pixel"?(n(P,0),n(T,10)):(fT.coercePosition(t,E,n,_,P,M),fT.coercePosition(t,E,n,_,T,g)),t[P]=L(t[P]),t[T]=L(t[T]),e[P]=F,e[T]=q}if(p==="pixel"){var V=e[b];e[b]=A(e[b],!0),fT.coercePosition(t,E,n,_,b,.25),t[b]=L(t[b]),e[b]=V}}u&&e4.noneOrAll(e,t,["x0","x1","y0","y1"]);var H=l==="line",X,G;if(u&&(X=n("label.texttemplate")),X||(G=n("label.text")),G||X){n("label.textangle");var N=n("label.textposition",H?"middle":"middle center");n("label.xanchor"),n("label.yanchor",Fpt(H,N)),n("label.padding"),e4.coerceFont(n,"label.font",r.font)}}}});var e0e=ye((_ar,Qpe)=>{"use strict";var Opt=va(),$pe=Mr();function Bpt(e,t){return e?"bottom":t.indexOf("top")!==-1?"top":t.indexOf("bottom")!==-1?"bottom":"middle"}Qpe.exports=function(t,r,n){n("newshape.visible"),n("newshape.name"),n("newshape.showlegend"),n("newshape.legend"),n("newshape.legendwidth"),n("newshape.legendgroup"),n("newshape.legendgrouptitle.text"),$pe.coerceFont(n,"newshape.legendgrouptitle.font"),n("newshape.legendrank"),n("newshape.drawdirection"),n("newshape.layer"),n("newshape.fillcolor"),n("newshape.fillrule"),n("newshape.opacity");var i=n("newshape.line.width");if(i){var a=(t||{}).plot_bgcolor||"#FFF";n("newshape.line.color",Opt.contrast(a)),n("newshape.line.dash")}var o=t.dragmode==="drawline",s=n("newshape.label.text"),l=n("newshape.label.texttemplate");if(s||l){n("newshape.label.textangle");var u=n("newshape.label.textposition",o?"middle":"middle center");n("newshape.label.xanchor"),n("newshape.label.yanchor",Bpt(o,u)),n("newshape.label.padding"),$pe.coerceFont(n,"newshape.label.font",r.font)}n("activeshape.fillcolor"),n("activeshape.opacity")}});var a0e=ye((xar,n0e)=>{"use strict";var FU=Mr(),hT=Qa(),dT=cM(),r0e=h_();n0e.exports=function(t){var r=t._fullLayout,n=FU.filterVisible(r.shapes);if(!(!n.length||!t._fullData.length))for(var i=0;i0?u+o:o;return{ppad:o,ppadplus:s?f:h,ppadminus:s?h:f}}else return{ppad:o}}function t0e(e,t,r){var n=e._id.charAt(0)==="x"?"x":"y",i=e.type==="category"||e.type==="multicategory",a,o,s=0,l=0,u=i?e.r2c:e.d2c,c=t[n+"sizemode"]==="scaled";if(c?(a=t[n+"0"],o=t[n+"1"],i&&(s=t[n+"0shift"],l=t[n+"1shift"])):(a=t[n+"anchor"],o=t[n+"anchor"]),a!==void 0)return[u(a)+s,u(o)+l];if(t.path){var f=1/0,h=-1/0,d=t.path.match(dT.segmentRE),v,x,b,p,E;for(e.type==="date"&&(u=r0e.decodeDate(u)),v=0;vh&&(h=E)));if(h>=f)return[f,h]}}});var l0e=ye((bar,s0e)=>{"use strict";var o0e=rP();s0e.exports={moduleType:"component",name:"shapes",layoutAttributes:zU(),supplyLayoutDefaults:Jpe(),supplyDrawNewShapeDefaults:e0e(),includeBasePlot:IM()("shapes"),calcAutorange:a0e(),draw:o0e.draw,drawOne:o0e.drawOne}});var qU=ye((Tar,c0e)=>{"use strict";var u0e=ad(),Vpt=Vs().templatedArray,war=PM();c0e.exports=Vpt("image",{visible:{valType:"boolean",dflt:!0,editType:"arraydraw"},source:{valType:"string",editType:"arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},sizex:{valType:"number",dflt:0,editType:"arraydraw"},sizey:{valType:"number",dflt:0,editType:"arraydraw"},sizing:{valType:"enumerated",values:["fill","contain","stretch"],dflt:"contain",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},x:{valType:"any",dflt:0,editType:"arraydraw"},y:{valType:"any",dflt:0,editType:"arraydraw"},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left",editType:"arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],dflt:"top",editType:"arraydraw"},xref:{valType:"enumerated",values:["paper",u0e.idRegex.x.toString()],dflt:"paper",editType:"arraydraw"},yref:{valType:"enumerated",values:["paper",u0e.idRegex.y.toString()],dflt:"paper",editType:"arraydraw"},editType:"arraydraw"})});var h0e=ye((Aar,f0e)=>{"use strict";var Hpt=Mr(),OU=Qa(),Gpt=Zd(),jpt=qU(),Wpt="images";f0e.exports=function(t,r){var n={name:Wpt,handleItemDefaults:Zpt};Gpt(t,r,n)};function Zpt(e,t,r){function n(h,d){return Hpt.coerce(e,t,jpt,h,d)}var i=n("source"),a=n("visible",!!i);if(!a)return t;n("layer"),n("xanchor"),n("yanchor"),n("sizex"),n("sizey"),n("sizing"),n("opacity");for(var o={_fullLayout:r},s=["x","y"],l=0;l<2;l++){var u=s[l],c=OU.coerceRef(e,t,o,u,"paper",void 0);if(c!=="paper"){var f=OU.getFromId(o,c);f._imgIndices.push(t._index)}OU.coercePosition(t,o,n,c,u,0)}return t}});var g0e=ye((Sar,p0e)=>{"use strict";var d0e=xa(),Xpt=ao(),vT=Qa(),v0e=af(),Ypt=Zp();p0e.exports=function(t){var r=t._fullLayout,n=[],i={},a=[],o,s;for(s=0;s{"use strict";var m0e=uo(),Kpt=u6();y0e.exports=function(t,r,n,i){r=r||{};var a=n==="log"&&r.type==="linear",o=n==="linear"&&r.type==="log";if(a||o){for(var s=t._fullLayout.images,l=r._id.charAt(0),u,c,f=0;f{"use strict";x0e.exports={moduleType:"component",name:"images",layoutAttributes:qU(),supplyLayoutDefaults:h0e(),includeBasePlot:IM()("images"),draw:g0e(),convertCoords:_0e()}});var dI=ye((kar,w0e)=>{"use strict";w0e.exports={name:"updatemenus",containerClassName:"updatemenu-container",headerGroupClassName:"updatemenu-header-group",headerClassName:"updatemenu-header",headerArrowClassName:"updatemenu-header-arrow",dropdownButtonGroupClassName:"updatemenu-dropdown-button-group",dropdownButtonClassName:"updatemenu-dropdown-button",buttonClassName:"updatemenu-button",itemRectClassName:"updatemenu-item-rect",itemTextClassName:"updatemenu-item-text",menuIndexAttrName:"updatemenu-active-index",autoMarginIdRoot:"updatemenu-",blankHeaderOpts:{label:" "},minWidth:30,minHeight:30,textPadX:24,arrowPadX:16,rx:2,ry:2,textOffsetX:12,textOffsetY:3,arrowOffsetX:4,gapButtonHeader:5,gapButton:2,activeColor:"#F4FAFF",hoverColor:"#F4FAFF",arrowSymbol:{left:"\u25C4",right:"\u25BA",up:"\u25B2",down:"\u25BC"}}});var BU=ye((Car,A0e)=>{"use strict";var Jpt=Su(),$pt=dh(),Qpt=no().extendFlat,e0t=Bu().overrideAll,t0t=w6(),T0e=Vs().templatedArray,r0t=T0e("button",{visible:{valType:"boolean"},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},args2:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string",dflt:""},execute:{valType:"boolean",dflt:!0}});A0e.exports=e0t(T0e("updatemenu",{_arrayAttrRegexps:[/^updatemenus\[(0|[1-9][0-9]+)\]\.buttons/],visible:{valType:"boolean"},type:{valType:"enumerated",values:["dropdown","buttons"],dflt:"dropdown"},direction:{valType:"enumerated",values:["left","right","up","down"],dflt:"down"},active:{valType:"integer",min:-1,dflt:0},showactive:{valType:"boolean",dflt:!0},buttons:r0t,x:{valType:"number",min:-2,max:3,dflt:-.05},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"right"},y:{valType:"number",min:-2,max:3,dflt:1},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},pad:Qpt(t0t({editType:"arraydraw"}),{}),font:Jpt({}),bgcolor:{valType:"color"},bordercolor:{valType:"color",dflt:$pt.borderLine},borderwidth:{valType:"number",min:0,dflt:1,editType:"arraydraw"}}),"arraydraw","from-root")});var k0e=ye((Lar,E0e)=>{"use strict";var vI=Mr(),S0e=Zd(),M0e=BU(),i0t=dI(),n0t=i0t.name,a0t=M0e.buttons;E0e.exports=function(t,r){var n={name:n0t,handleItemDefaults:o0t};S0e(t,r,n)};function o0t(e,t,r){function n(o,s){return vI.coerce(e,t,M0e,o,s)}var i=S0e(e,t,{name:"buttons",handleItemDefaults:s0t}),a=n("visible",i.length>0);a&&(n("active"),n("direction"),n("type"),n("showactive"),n("x"),n("y"),vI.noneOrAll(e,t,["x","y"]),n("xanchor"),n("yanchor"),n("pad.t"),n("pad.r"),n("pad.b"),n("pad.l"),vI.coerceFont(n,"font",r.font),n("bgcolor",r.paper_bgcolor),n("bordercolor"),n("borderwidth"))}function s0t(e,t){function r(i,a){return vI.coerce(e,t,a0t,i,a)}var n=r("visible",e.method==="skip"||Array.isArray(e.args));n&&(r("method"),r("args"),r("args2"),r("label"),r("execute"))}});var P0e=ye((Par,L0e)=>{"use strict";L0e.exports=of;var qg=xa(),C0e=va(),pT=ao(),pI=Mr();function of(e,t,r){this.gd=e,this.container=t,this.id=r,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}of.barWidth=2;of.barLength=20;of.barRadius=2;of.barPad=1;of.barColor="#808BA4";of.prototype.enable=function(t,r,n){var i=this.gd._fullLayout,a=i.width,o=i.height;this.position=t;var s=this.position.l,l=this.position.w,u=this.position.t,c=this.position.h,f=this.position.direction,h=f==="down",d=f==="left",v=f==="right",x=f==="up",b=l,p=c,E,k,A,L;!h&&!d&&!v&&!x&&(this.position.direction="down",h=!0);var _=h||x;_?(E=s,k=E+b,h?(A=u,L=Math.min(A+p,o),p=L-A):(L=u+p,A=Math.max(L-p,0),p=L-A)):(A=u,L=A+p,d?(k=s+b,E=Math.max(k-b,0),b=k-E):(E=s,k=Math.min(E+b,a),b=k-E)),this._box={l:E,t:A,w:b,h:p};var C=l>b,M=of.barLength+2*of.barPad,g=of.barWidth+2*of.barPad,P=s,T=u+c;T+g>o&&(T=o-g);var F=this.container.selectAll("rect.scrollbar-horizontal").data(C?[0]:[]);F.exit().on(".drag",null).remove(),F.enter().append("rect").classed("scrollbar-horizontal",!0).call(C0e.fill,of.barColor),C?(this.hbar=F.attr({rx:of.barRadius,ry:of.barRadius,x:P,y:T,width:M,height:g}),this._hbarXMin=P+M/2,this._hbarTranslateMax=b-M):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var q=c>p,V=of.barWidth+2*of.barPad,H=of.barLength+2*of.barPad,X=s+l,G=u;X+V>a&&(X=a-V);var N=this.container.selectAll("rect.scrollbar-vertical").data(q?[0]:[]);N.exit().on(".drag",null).remove(),N.enter().append("rect").classed("scrollbar-vertical",!0).call(C0e.fill,of.barColor),q?(this.vbar=N.attr({rx:of.barRadius,ry:of.barRadius,x:X,y:G,width:V,height:H}),this._vbarYMin=G+H/2,this._vbarTranslateMax=p-H):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var W=this.id,re=E-.5,ae=q?k+V+.5:k+.5,_e=A-.5,Me=C?L+g+.5:L+.5,ke=i._topdefs.selectAll("#"+W).data(C||q?[0]:[]);if(ke.exit().remove(),ke.enter().append("clipPath").attr("id",W).append("rect"),C||q?(this._clipRect=ke.select("rect").attr({x:Math.floor(re),y:Math.floor(_e),width:Math.ceil(ae)-Math.floor(re),height:Math.ceil(Me)-Math.floor(_e)}),this.container.call(pT.setClipUrl,W,this.gd),this.bg.attr({x:s,y:u,width:l,height:c})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),C||q){var ge=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(ge);var ie=qg.behavior.drag().on("dragstart",function(){qg.event.sourceEvent.preventDefault(),qg.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));C&&this.hbar.on(".drag",null).call(ie),q&&this.vbar.on(".drag",null).call(ie)}this.setTranslate(r,n)};of.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(pT.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)};of.prototype._onBoxDrag=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t-=qg.event.dx),this.vbar&&(r-=qg.event.dy),this.setTranslate(t,r)};of.prototype._onBoxWheel=function(){var t=this.translateX,r=this.translateY;this.hbar&&(t+=qg.event.deltaY),this.vbar&&(r+=qg.event.deltaY),this.setTranslate(t,r)};of.prototype._onBarDrag=function(){var t=this.translateX,r=this.translateY;if(this.hbar){var n=t+this._hbarXMin,i=n+this._hbarTranslateMax,a=pI.constrain(qg.event.x,n,i),o=(a-n)/(i-n),s=this.position.w-this._box.w;t=o*s}if(this.vbar){var l=r+this._vbarYMin,u=l+this._vbarTranslateMax,c=pI.constrain(qg.event.y,l,u),f=(c-l)/(u-l),h=this.position.h-this._box.h;r=f*h}this.setTranslate(t,r)};of.prototype.setTranslate=function(t,r){var n=this.position.w-this._box.w,i=this.position.h-this._box.h;if(t=pI.constrain(t||0,0,n),r=pI.constrain(r||0,0,i),this.translateX=t,this.translateY=r,this.container.call(pT.setTranslate,this._box.l-this.position.l-t,this._box.t-this.position.t-r),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+t-.5),y:Math.floor(this.position.t+r-.5)}),this.hbar){var a=t/n;this.hbar.call(pT.setTranslate,t+a*this._hbarTranslateMax,r)}if(this.vbar){var o=r/i;this.vbar.call(pT.setTranslate,t,r+o*this._vbarTranslateMax)}}});var U0e=ye((Iar,N0e)=>{"use strict";var gT=xa(),t4=Xu(),r4=va(),mT=ao(),e0=Mr(),gI=Pl(),l0t=Vs().arrayEditor,R0e=Nh().LINE_SPACING,Go=dI(),u0t=P0e();N0e.exports=function(t){var r=t._fullLayout,n=e0.filterVisible(r[Go.name]);function i(h){t4.autoMargin(t,O0e(h))}var a=r._menulayer.selectAll("g."+Go.containerClassName).data(n.length>0?[0]:[]);if(a.enter().append("g").classed(Go.containerClassName,!0).style("cursor","pointer"),a.exit().each(function(){gT.select(this).selectAll("g."+Go.headerGroupClassName).each(i)}).remove(),n.length!==0){var o=a.selectAll("g."+Go.headerGroupClassName).data(n,c0t);o.enter().append("g").classed(Go.headerGroupClassName,!0);for(var s=e0.ensureSingle(a,"g",Go.dropdownButtonGroupClassName,function(h){h.style("pointer-events","all")}),l=0;l{"use strict";var m0t=dI();V0e.exports={moduleType:"component",name:m0t.name,layoutAttributes:BU(),supplyLayoutDefaults:k0e(),draw:U0e()}});var n4=ye((Dar,G0e)=>{"use strict";G0e.exports={name:"sliders",containerClassName:"slider-container",groupClassName:"slider-group",inputAreaClass:"slider-input-area",railRectClass:"slider-rail-rect",railTouchRectClass:"slider-rail-touch-rect",gripRectClass:"slider-grip-rect",tickRectClass:"slider-tick-rect",inputProxyClass:"slider-input-proxy",labelsClass:"slider-labels",labelGroupClass:"slider-label-group",labelClass:"slider-label",currentValueClass:"slider-current-value",railHeight:5,menuIndexAttrName:"slider-active-index",autoMarginIdRoot:"slider-",minWidth:30,minHeight:30,textPadX:40,arrowOffsetX:4,railRadius:2,railWidth:5,railBorder:4,railBorderWidth:1,railBorderColor:"#bec8d9",railBgColor:"#f8fafc",railInset:8,stepInset:10,gripRadius:10,gripWidth:20,gripHeight:20,gripBorder:20,gripBorderWidth:1,gripBorderColor:"#bec8d9",gripBgColor:"#f6f8fa",gripBgActiveColor:"#dbdde0",labelPadding:8,labelOffset:0,tickWidth:1,tickColor:"#333",tickOffset:25,tickLength:7,minorTickOffset:25,minorTickColor:"#333",minorTickLength:4,currentValuePadding:8,currentValueInset:0}});var HU=ye((zar,Z0e)=>{"use strict";var j0e=Su(),y0t=w6(),_0t=no().extendDeepAll,x0t=Bu().overrideAll,b0t=zS(),W0e=Vs().templatedArray,Jb=n4(),w0t=W0e("step",{visible:{valType:"boolean",dflt:!0},method:{valType:"enumerated",values:["restyle","relayout","animate","update","skip"],dflt:"restyle"},args:{valType:"info_array",freeLength:!0,items:[{valType:"any"},{valType:"any"},{valType:"any"}]},label:{valType:"string"},value:{valType:"string"},execute:{valType:"boolean",dflt:!0}});Z0e.exports=x0t(W0e("slider",{visible:{valType:"boolean",dflt:!0},active:{valType:"number",min:0,dflt:0},steps:w0t,lenmode:{valType:"enumerated",values:["fraction","pixels"],dflt:"fraction"},len:{valType:"number",min:0,dflt:1},x:{valType:"number",min:-2,max:3,dflt:0},pad:_0t(y0t({editType:"arraydraw"}),{},{t:{dflt:20}}),xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left"},y:{valType:"number",min:-2,max:3,dflt:0},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"top"},transition:{duration:{valType:"number",min:0,dflt:150},easing:{valType:"enumerated",values:b0t.transition.easing.values,dflt:"cubic-in-out"}},currentvalue:{visible:{valType:"boolean",dflt:!0},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left"},offset:{valType:"number",dflt:10},prefix:{valType:"string"},suffix:{valType:"string"},font:j0e({})},font:j0e({}),activebgcolor:{valType:"color",dflt:Jb.gripBgActiveColor},bgcolor:{valType:"color",dflt:Jb.railBgColor},bordercolor:{valType:"color",dflt:Jb.railBorderColor},borderwidth:{valType:"number",min:0,dflt:Jb.railBorderWidth},ticklen:{valType:"number",min:0,dflt:Jb.tickLength},tickcolor:{valType:"color",dflt:Jb.tickColor},tickwidth:{valType:"number",min:0,dflt:1},minorticklen:{valType:"number",min:0,dflt:Jb.minorTickLength}}),"arraydraw","from-root")});var J0e=ye((Far,K0e)=>{"use strict";var yT=Mr(),X0e=Zd(),Y0e=HU(),T0t=n4(),A0t=T0t.name,S0t=Y0e.steps;K0e.exports=function(t,r){X0e(t,r,{name:A0t,handleItemDefaults:M0t})};function M0t(e,t,r){function n(f,h){return yT.coerce(e,t,Y0e,f,h)}for(var i=X0e(e,t,{name:"steps",handleItemDefaults:E0t}),a=0,o=0;o{"use strict";var Og=xa(),mI=Xu(),x_=va(),Bg=ao(),t0=Mr(),k0t=t0.strTranslate,a4=Pl(),C0t=Vs().arrayEditor,gs=n4(),WU=Nh(),ege=WU.LINE_SPACING,GU=WU.FROM_TL,jU=WU.FROM_BR;oge.exports=function(t){var r=t._context.staticPlot,n=t._fullLayout,i=L0t(n,t),a=n._infolayer.selectAll("g."+gs.containerClassName).data(i.length>0?[0]:[]);a.enter().append("g").classed(gs.containerClassName,!0).style("cursor",r?null:"ew-resize");function o(c){c._commandObserver&&(c._commandObserver.remove(),delete c._commandObserver),mI.autoMargin(t,tge(c))}if(a.exit().each(function(){Og.select(this).selectAll("g."+gs.groupClassName).each(o)}).remove(),i.length!==0){var s=a.selectAll("g."+gs.groupClassName).data(i,P0t);s.enter().append("g").classed(gs.groupClassName,!0),s.exit().each(o).remove();for(var l=0;l0&&(s=s.transition().duration(t.transition.duration).ease(t.transition.easing)),s.attr("transform",k0t(o-gs.gripWidth*.5,t._dims.currentValueTotalHeight))}}function ZU(e,t){var r=e._dims;return r.inputAreaStart+gs.stepInset+(r.inputAreaLength-2*gs.stepInset)*Math.min(1,Math.max(0,t))}function Q0e(e,t){var r=e._dims;return Math.min(1,Math.max(0,(t-gs.stepInset-r.inputAreaStart)/(r.inputAreaLength-2*gs.stepInset-2*r.inputAreaStart)))}function O0t(e,t,r){var n=r._dims,i=t0.ensureSingle(e,"rect",gs.railTouchRectClass,function(a){a.call(nge,t,e,r).style("pointer-events","all")});i.attr({width:n.inputAreaLength,height:Math.max(n.inputAreaWidth,gs.tickOffset+r.ticklen+n.labelHeight)}).call(x_.fill,r.bgcolor).attr("opacity",0),Bg.setTranslate(i,0,n.currentValueTotalHeight)}function B0t(e,t){var r=t._dims,n=r.inputAreaLength-gs.railInset*2,i=t0.ensureSingle(e,"rect",gs.railRectClass);i.attr({width:n,height:gs.railWidth,rx:gs.railRadius,ry:gs.railRadius,"shape-rendering":"crispEdges"}).call(x_.stroke,t.bordercolor).call(x_.fill,t.bgcolor).style("stroke-width",t.borderwidth+"px"),Bg.setTranslate(i,gs.railInset,(r.inputAreaWidth-gs.railWidth)*.5+r.currentValueTotalHeight)}});var uge=ye((Oar,lge)=>{"use strict";var N0t=n4();lge.exports={moduleType:"component",name:N0t.name,layoutAttributes:HU(),supplyLayoutDefaults:J0e(),draw:sge()}});var _I=ye((Bar,fge)=>{"use strict";var cge=dh();fge.exports={bgcolor:{valType:"color",dflt:cge.background,editType:"plot"},bordercolor:{valType:"color",dflt:cge.defaultLine,editType:"plot"},borderwidth:{valType:"integer",dflt:0,min:0,editType:"plot"},autorange:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},range:{valType:"info_array",items:[{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}}],editType:"calc",impliedEdits:{autorange:!1}},thickness:{valType:"number",dflt:.15,min:0,max:1,editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"}});var XU=ye((Nar,hge)=>{"use strict";hge.exports={_isSubplotObj:!0,rangemode:{valType:"enumerated",values:["auto","fixed","match"],dflt:"match",editType:"calc"},range:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},editType:"calc"}});var xI=ye((Uar,dge)=>{"use strict";dge.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}});var gge=ye(wI=>{"use strict";var U0t=af(),V0t=Pl(),vge=xI(),H0t=Nh().LINE_SPACING,bI=vge.name;function pge(e){var t=e&&e[bI];return t&&t.visible}wI.isVisible=pge;wI.makeData=function(e){for(var t=U0t.list({_fullLayout:e},"x",!0),r=e.margin,n=[],i=0;i{"use strict";var TI=Mr(),mge=Vs(),yge=af(),G0t=_I(),j0t=XU();_ge.exports=function(t,r,n){var i=t[n],a=r[n];if(!(i.rangeslider||r._requestRangeslider[a._id]))return;TI.isPlainObject(i.rangeslider)||(i.rangeslider={});var o=i.rangeslider,s=mge.newContainer(a,"rangeslider");function l(L,_){return TI.coerce(o,s,G0t,L,_)}var u,c;function f(L,_){return TI.coerce(u,c,j0t,L,_)}var h=l("visible");if(h){l("bgcolor",r.plot_bgcolor),l("bordercolor"),l("borderwidth"),l("thickness"),l("autorange",!a.isValidRange(o.range)),l("range");var d=r._subplots;if(d)for(var v=d.cartesian.filter(function(L){return L.substr(0,L.indexOf("y"))===yge.name2id(n)}).map(function(L){return L.substr(L.indexOf("y"),L.length)}),x=TI.simpleMap(v,yge.id2name),b=0;b{"use strict";var W0t=af().list,Z0t=wg().getAutoRange,X0t=xI();bge.exports=function(t){for(var r=W0t(t,"x",!0),n=0;n{"use strict";var AI=xa(),Y0t=ba(),K0t=Xu(),Ff=Mr(),SI=Ff.strTranslate,Age=ao(),b_=va(),J0t=Mb(),$0t=Jf(),YU=af(),Q0t=gv(),egt=Tg(),Bs=xI();Sge.exports=function(e){for(var t=e._fullLayout,r=t._rangeSliderData,n=0;n=N.max)X=T[G+1];else if(H=N.pmax)X=T[G+1];else if(H0?e.touches[0].clientX:0}function tgt(e,t,r,n){if(t._context.staticPlot)return;var i=e.select("rect."+Bs.slideBoxClassName).node(),a=e.select("rect."+Bs.grabAreaMinClassName).node(),o=e.select("rect."+Bs.grabAreaMaxClassName).node();function s(){var l=AI.event,u=l.target,c=Tge(l),f=c-e.node().getBoundingClientRect().left,h=n.d2p(r._rl[0]),d=n.d2p(r._rl[1]),v=Q0t.coverSlip();this.addEventListener("touchmove",x),this.addEventListener("touchend",b),v.addEventListener("mousemove",x),v.addEventListener("mouseup",b);function x(p){var E=Tge(p),k=+E-c,A,L,_;switch(u){case i:if(_="ew-resize",h+k>r._length||d+k<0)return;A=h+k,L=d+k;break;case a:if(_="col-resize",h+k>r._length)return;A=h+k,L=d;break;case o:if(_="col-resize",d+k<0)return;A=h,L=d+k;break;default:_="ew-resize",A=f,L=f+k;break}if(L{"use strict";var fgt=Mr(),hgt=_I(),dgt=XU(),KU=gge();Ege.exports={moduleType:"component",name:"rangeslider",schema:{subplots:{xaxis:{rangeslider:fgt.extendFlat({},hgt,{yaxis:dgt})}}},layoutAttributes:_I(),handleDefaults:xge(),calcAutorange:wge(),draw:Mge(),isVisible:KU.isVisible,makeData:KU.makeData,autoMarginOpts:KU.autoMarginOpts}});var MI=ye((Zar,Lge)=>{"use strict";var vgt=Su(),Cge=dh(),pgt=Vs().templatedArray,ggt=pgt("button",{visible:{valType:"boolean",dflt:!0,editType:"plot"},step:{valType:"enumerated",values:["month","year","day","hour","minute","second","all"],dflt:"month",editType:"plot"},stepmode:{valType:"enumerated",values:["backward","todate"],dflt:"backward",editType:"plot"},count:{valType:"number",min:0,dflt:1,editType:"plot"},label:{valType:"string",editType:"plot"},editType:"plot"});Lge.exports={visible:{valType:"boolean",editType:"plot"},buttons:ggt,x:{valType:"number",min:-2,max:3,editType:"plot"},xanchor:{valType:"enumerated",values:["auto","left","center","right"],dflt:"left",editType:"plot"},y:{valType:"number",min:-2,max:3,editType:"plot"},yanchor:{valType:"enumerated",values:["auto","top","middle","bottom"],dflt:"bottom",editType:"plot"},font:vgt({editType:"plot"}),bgcolor:{valType:"color",dflt:Cge.lightLine,editType:"plot"},activecolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:Cge.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"plot"}});var JU=ye((Xar,Pge)=>{"use strict";Pge.exports={yPad:.02,minButtonWidth:30,rx:3,ry:3,lightAmount:25,darkAmount:10}});var Dge=ye((Yar,Rge)=>{"use strict";var EI=Mr(),mgt=va(),ygt=Vs(),_gt=Zd(),Ige=MI(),$U=JU();Rge.exports=function(t,r,n,i,a){var o=t.rangeselector||{},s=ygt.newContainer(r,"rangeselector");function l(d,v){return EI.coerce(o,s,Ige,d,v)}var u=_gt(o,s,{name:"buttons",handleItemDefaults:xgt,calendar:a}),c=l("visible",u.length>0);if(c){var f=bgt(r,n,i);l("x",f[0]),l("y",f[1]),EI.noneOrAll(t,r,["x","y"]),l("xanchor"),l("yanchor"),EI.coerceFont(l,"font",n.font);var h=l("bgcolor");l("activecolor",mgt.contrast(h,$U.lightAmount,$U.darkAmount)),l("bordercolor"),l("borderwidth")}};function xgt(e,t,r,n){var i=n.calendar;function a(l,u){return EI.coerce(e,t,Ige.buttons,l,u)}var o=a("visible");if(o){var s=a("step");s!=="all"&&(i&&i!=="gregorian"&&(s==="month"||s==="year")?t.stepmode="backward":a("stepmode"),a("count")),a("label")}}function bgt(e,t,r){for(var n=r.filter(function(s){return t[s].anchor===e._id}),i=0,a=0;a{"use strict";var wgt=dq(),Tgt=Mr().titleCase;zge.exports=function(t,r){var n=t._name,i={};if(r.step==="all")i[n+".autorange"]=!0;else{var a=Agt(t,r);i[n+".range[0]"]=a[0],i[n+".range[1]"]=a[1]}return i};function Agt(e,t){var r=e.range,n=new Date(e.r2l(r[1])),i=t.step,a=wgt["utc"+Tgt(i)],o=t.count,s;switch(t.stepmode){case"backward":s=e.l2r(+a.offset(n,-o));break;case"todate":var l=a.offset(n,-o);s=e.l2r(+a.ceil(l));break}var u=r[1];return[s,u]}});var Gge=ye((Jar,Hge)=>{"use strict";var CI=xa(),Sgt=ba(),Mgt=Xu(),qge=va(),Vge=ao(),Iy=Mr(),Oge=Iy.strTranslate,kI=Pl(),Egt=af(),tV=Nh(),Bge=tV.LINE_SPACING,Nge=tV.FROM_TL,Uge=tV.FROM_BR,eV=JU(),kgt=Fge();Hge.exports=function(t){var r=t._fullLayout,n=r._infolayer.selectAll(".rangeselector").data(Cgt(t),Lgt);n.enter().append("g").classed("rangeselector",!0),n.exit().remove(),n.style({cursor:"pointer","pointer-events":"all"}),n.each(function(i){var a=CI.select(this),o=i,s=o.rangeselector,l=a.selectAll("g.button").data(Iy.filterVisible(s.buttons));l.enter().append("g").classed("button",!0),l.exit().remove(),l.each(function(u){var c=CI.select(this),f=kgt(o,u);u._isActive=Pgt(o,u,f),c.call(QU,s,u),c.call(Rgt,s,u,t),c.on("click",function(){t._dragged||Sgt.call("_guiRelayout",t,f)}),c.on("mouseover",function(){u._isHovered=!0,c.call(QU,s,u)}),c.on("mouseout",function(){u._isHovered=!1,c.call(QU,s,u)})}),zgt(t,l,s,o._name,a)})};function Cgt(e){for(var t=Egt.list(e,"x",!0),r=[],n=0;n{"use strict";jge.exports={moduleType:"component",name:"rangeselector",schema:{subplots:{xaxis:{rangeselector:MI()}}},layoutAttributes:MI(),handleDefaults:Dge(),draw:Gge()}});var Ju=ye(rV=>{"use strict";var Zge=no().extendFlat;rV.attributes=function(e,t){e=e||{},t=t||{};var r={valType:"info_array",editType:e.editType,items:[{valType:"number",min:0,max:1,editType:e.editType},{valType:"number",min:0,max:1,editType:e.editType}],dflt:[0,1]},n=e.name?e.name+" ":"",i=e.trace?"trace ":"subplot ",a=t.description?" "+t.description:"",o={x:Zge({},r,{}),y:Zge({},r,{}),editType:e.editType};return e.noGridCell||(o.row={valType:"integer",min:0,dflt:0,editType:e.editType},o.column={valType:"integer",min:0,dflt:0,editType:e.editType}),o};rV.defaults=function(e,t,r,n){var i=n&&n.x||[0,1],a=n&&n.y||[0,1],o=t.grid;if(o){var s=r("domain.column");s!==void 0&&(s{"use strict";var Fgt=Mr(),qgt=n3().counter,Ogt=Ju().attributes,Xge=ad().idRegex,Bgt=Vs(),iV={rows:{valType:"integer",min:1,editType:"plot"},roworder:{valType:"enumerated",values:["top to bottom","bottom to top"],dflt:"top to bottom",editType:"plot"},columns:{valType:"integer",min:1,editType:"plot"},subplots:{valType:"info_array",freeLength:!0,dimensions:2,items:{valType:"enumerated",values:[qgt("xy").toString(),""],editType:"plot"},editType:"plot"},xaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Xge.x.toString(),""],editType:"plot"},editType:"plot"},yaxes:{valType:"info_array",freeLength:!0,items:{valType:"enumerated",values:[Xge.y.toString(),""],editType:"plot"},editType:"plot"},pattern:{valType:"enumerated",values:["independent","coupled"],dflt:"coupled",editType:"plot"},xgap:{valType:"number",min:0,max:1,editType:"plot"},ygap:{valType:"number",min:0,max:1,editType:"plot"},domain:Ogt({name:"grid",editType:"plot",noGridCell:!0},{}),xside:{valType:"enumerated",values:["bottom","bottom plot","top plot","top"],dflt:"bottom plot",editType:"plot"},yside:{valType:"enumerated",values:["left","left plot","right plot","right"],dflt:"left plot",editType:"plot"},editType:"plot"};function LI(e,t,r){var n=t[r+"axes"],i=Object.keys((e._splomAxes||{})[r]||{});if(Array.isArray(n))return n;if(i.length)return i}function Ngt(e,t){var r=e.grid||{},n=LI(t,r,"x"),i=LI(t,r,"y");if(!e.grid&&!n&&!i)return;var a=Array.isArray(r.subplots)&&Array.isArray(r.subplots[0]),o=Array.isArray(n),s=Array.isArray(i),l=o&&n!==r.xaxes&&s&&i!==r.yaxes,u,c;a?(u=r.subplots.length,c=r.subplots[0].length):(s&&(u=i.length),o&&(c=n.length));var f=Bgt.newContainer(t,"grid");function h(_,C){return Fgt.coerce(r,f,iV,_,C)}var d=h("rows",u),v=h("columns",c);if(!(d*v>1)){delete t.grid;return}if(!a&&!o&&!s){var x=h("pattern")==="independent";x&&(a=!0)}f._hasSubplotGrid=a;var b=h("roworder"),p=b==="top to bottom",E=a?.2:.1,k=a?.3:.1,A,L;l&&t._splomGridDflt&&(A=t._splomGridDflt.xside,L=t._splomGridDflt.yside),f._domains={x:Yge("x",h,E,A,v),y:Yge("y",h,k,L,d,p)}}function Yge(e,t,r,n,i,a){var o=t(e+"gap",r),s=t("domain."+e);t(e+"side",n);for(var l=new Array(i),u=s[0],c=(s[1]-u)/(i-o),f=c*(1-o),h=0;h{"use strict";$ge.exports={visible:{valType:"boolean",editType:"calc"},type:{valType:"enumerated",values:["percent","constant","sqrt","data"],editType:"calc"},symmetric:{valType:"boolean",editType:"calc"},array:{valType:"data_array",editType:"calc"},arrayminus:{valType:"data_array",editType:"calc"},value:{valType:"number",min:0,dflt:10,editType:"calc"},valueminus:{valType:"number",min:0,dflt:10,editType:"calc"},traceref:{valType:"integer",min:0,dflt:0,editType:"style"},tracerefminus:{valType:"integer",min:0,dflt:0,editType:"style"},copy_ystyle:{valType:"boolean",editType:"plot"},copy_zstyle:{valType:"boolean",editType:"style"},color:{valType:"color",editType:"style"},thickness:{valType:"number",min:0,dflt:2,editType:"style"},width:{valType:"number",min:0,editType:"plot"},editType:"calc"}});var tme=ye((ror,eme)=>{"use strict";var Qge=uo(),Vgt=ba(),Hgt=Mr(),Ggt=Vs(),jgt=aV();eme.exports=function(e,t,r,n){var i="error_"+n.axis,a=Ggt.newContainer(t,i),o=e[i]||{};function s(v,x){return Hgt.coerce(o,a,jgt,v,x)}var l=o.array!==void 0||o.value!==void 0||o.type==="sqrt",u=s("visible",l);if(u!==!1){var c=s("type","array"in o?"data":"percent"),f=!0;c!=="sqrt"&&(f=s("symmetric",!((c==="data"?"arrayminus":"valueminus")in o))),c==="data"?(s("array"),s("traceref"),f||(s("arrayminus"),s("tracerefminus"))):(c==="percent"||c==="constant")&&(s("value"),f||s("valueminus"));var h="copy_"+n.inherit+"style";if(n.inherit){var d=t["error_"+n.inherit];(d||{}).visible&&s(h,!(o.color||Qge(o.thickness)||Qge(o.width)))}(!n.inherit||!a[h])&&(s("color",r),s("thickness"),s("width",Vgt.traceIs(t,"gl3d")?0:4))}}});var oV=ye((ior,ime)=>{"use strict";ime.exports=function(t){var r=t.type,n=t.symmetric;if(r==="data"){var i=t.array||[];if(n)return function(u,c){var f=+i[c];return[f,f]};var a=t.arrayminus||[];return function(u,c){var f=+i[c],h=+a[c];return!isNaN(f)||!isNaN(h)?[h||0,f||0]:[NaN,NaN]}}else{var o=rme(r,t.value),s=rme(r,t.valueminus);return n||t.valueminus===void 0?function(u){var c=o(u);return[c,c]}:function(u){return[s(u),o(u)]}}};function rme(e,t){if(e==="percent")return function(r){return Math.abs(r*t/100)};if(e==="constant")return function(){return Math.abs(t)};if(e==="sqrt")return function(r){return Math.sqrt(Math.abs(r))}}});var ome=ye((nor,ame)=>{"use strict";var sV=uo(),Wgt=ba(),lV=Qa(),Zgt=Mr(),Xgt=oV();ame.exports=function(t){for(var r=t.calcdata,n=0;n{"use strict";var sme=xa(),w_=uo(),Ygt=ao(),Kgt=lu();lme.exports=function(t,r,n,i){var a,o=n.xaxis,s=n.yaxis,l=i&&i.duration>0,u=t._context.staticPlot;r.each(function(c){var f=c[0].trace,h=f.error_x||{},d=f.error_y||{},v;f.ids&&(v=function(E){return E.id});var x=Kgt.hasMarkers(f)&&f.marker.maxdisplayed>0;!d.visible&&!h.visible&&(c=[]);var b=sme.select(this).selectAll("g.errorbar").data(c,v);if(b.exit().remove(),!!c.length){h.visible||b.selectAll("path.xerror").remove(),d.visible||b.selectAll("path.yerror").remove(),b.style("opacity",1);var p=b.enter().append("g").classed("errorbar",!0);l&&p.style("opacity",0).transition().duration(i.duration).style("opacity",1),Ygt.setClipUrl(b,n.layerClipId,t),b.each(function(E){var k=sme.select(this),A=Jgt(E,o,s);if(!(x&&!E.vis)){var L,_=k.select("path.yerror");if(d.visible&&w_(A.x)&&w_(A.yh)&&w_(A.ys)){var C=d.width;L="M"+(A.x-C)+","+A.yh+"h"+2*C+"m-"+C+",0V"+A.ys,A.noYS||(L+="m-"+C+",0h"+2*C),a=!_.size(),a?_=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("yerror",!0):l&&(_=_.transition().duration(i.duration).ease(i.easing)),_.attr("d",L)}else _.remove();var M=k.select("path.xerror");if(h.visible&&w_(A.y)&&w_(A.xh)&&w_(A.xs)){var g=(h.copy_ystyle?d:h).width;L="M"+A.xh+","+(A.y-g)+"v"+2*g+"m0,-"+g+"H"+A.xs,A.noXS||(L+="m0,-"+g+"v"+2*g),a=!M.size(),a?M=k.append("path").style("vector-effect",u?"none":"non-scaling-stroke").classed("xerror",!0):l&&(M=M.transition().duration(i.duration).ease(i.easing)),M.attr("d",L)}else M.remove()}})}})};function Jgt(e,t,r){var n={x:t.c2p(e.x),y:r.c2p(e.y)};return e.yh!==void 0&&(n.yh=r.c2p(e.yh),n.ys=r.c2p(e.ys),w_(n.ys)||(n.noYS=!0,n.ys=r.c2p(e.ys,!0))),e.xh!==void 0&&(n.xh=t.c2p(e.xh),n.xs=t.c2p(e.xs),w_(n.xs)||(n.noXS=!0,n.xs=t.c2p(e.xs,!0))),n}});var hme=ye((oor,fme)=>{"use strict";var $gt=xa(),cme=va();fme.exports=function(t){t.each(function(r){var n=r[0].trace,i=n.error_y||{},a=n.error_x||{},o=$gt.select(this);o.selectAll("path.yerror").style("stroke-width",i.thickness+"px").call(cme.stroke,i.color),a.copy_ystyle&&(a=i),o.selectAll("path.xerror").style("stroke-width",a.thickness+"px").call(cme.stroke,a.color)})}});var pme=ye((sor,vme)=>{"use strict";var o4=Mr(),dme=Bu().overrideAll,s4=aV(),$b={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4)};delete $b.error_x.copy_zstyle;delete $b.error_y.copy_zstyle;delete $b.error_y.copy_ystyle;var l4={error_x:o4.extendFlat({},s4),error_y:o4.extendFlat({},s4),error_z:o4.extendFlat({},s4)};delete l4.error_x.copy_ystyle;delete l4.error_y.copy_ystyle;delete l4.error_z.copy_ystyle;delete l4.error_z.copy_zstyle;vme.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:$b,bar:$b,histogram:$b,scatter3d:dme(l4,"calc","nested"),scattergl:dme($b,"calc","nested")}},supplyDefaults:tme(),calc:ome(),makeComputeError:oV(),plot:ume(),style:hme(),hoverInfo:Qgt};function Qgt(e,t,r){(t.error_y||{}).visible&&(r.yerr=e.yh-e.y,t.error_y.symmetric||(r.yerrneg=e.y-e.ys)),(t.error_x||{}).visible&&(r.xerr=e.xh-e.x,t.error_x.symmetric||(r.xerrneg=e.x-e.xs))}});var mme=ye((lor,gme)=>{"use strict";gme.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}});var Ame=ye((uor,Tme)=>{"use strict";var T_=xa(),uV=id(),II=Xu(),yme=ba(),Ry=Qa(),PI=gv(),B0=Mr(),Ug=B0.strTranslate,wme=no().extendFlat,cV=Tg(),Ng=ao(),fV=va(),emt=Mb(),tmt=Pl(),rmt=Dv().flipScale,imt=JM(),nmt=iI(),amt=Cd(),hV=Nh(),_me=hV.LINE_SPACING,xme=hV.FROM_TL,bme=hV.FROM_BR,Vc=mme().cn;function omt(e){var t=e._fullLayout,r=t._infolayer.selectAll("g."+Vc.colorbar).data(smt(e),function(n){return n._id});r.enter().append("g").attr("class",function(n){return n._id}).classed(Vc.colorbar,!0),r.each(function(n){var i=T_.select(this);B0.ensureSingle(i,"rect",Vc.cbbg),B0.ensureSingle(i,"g",Vc.cbfills),B0.ensureSingle(i,"g",Vc.cblines),B0.ensureSingle(i,"g",Vc.cbaxis,function(o){o.classed(Vc.crisp,!0)}),B0.ensureSingle(i,"g",Vc.cbtitleunshift,function(o){o.append("g").classed(Vc.cbtitle,!0)}),B0.ensureSingle(i,"rect",Vc.cboutline);var a=lmt(i,n,e);a&&a.then&&(e._promises||[]).push(a),e._context.edits.colorbarPosition&&umt(i,n,e)}),r.exit().each(function(n){II.autoMargin(e,n._id)}).remove(),r.order()}function smt(e){var t=e._fullLayout,r=e.calcdata,n=[],i,a,o,s;function l(k){return wme(k,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function u(){typeof s.calc=="function"?s.calc(e,o,i):(i._fillgradient=a.reversescale?rmt(a.colorscale):a.colorscale,i._zrange=[a[s.min],a[s.max]])}for(var c=0;c1){var Re=Math.pow(10,Math.floor(Math.log(me)/Math.LN10));ze*=Re*B0.roundUp(me/Re,[2,5,10]),(Math.abs(F.start)/F.size+1e-6)%1<2e-6&&(Ee.tick0=0)}Ee.dtick=ze}Ee.domain=n?[ie+v/A.h,ie+W-v/A.h]:[ie+d/A.w,ie+W-d/A.w],Ee.setScale(),e.attr("transform",Ug(Math.round(A.l),Math.round(A.t)));var ce=e.select("."+Vc.cbtitleunshift).attr("transform",Ug(-Math.round(A.l),-Math.round(A.t))),Ge=Ee.ticklabelposition,nt=Ee.title.font.size,ct=e.select("."+Vc.cbaxis),qt,rt=0,ot=0;function Rt(er,Ke){var xt={propContainer:Ee,propName:t._propPrefix+"title",traceIndex:t._traceIndex,_meta:t._meta,placeholder:k._dfltTitle.colorbar,containerGroup:e.select("."+Vc.cbtitle)},bt=er.charAt(0)==="h"?er.substr(1):"h"+er;e.selectAll("."+bt+",."+bt+"-math-group").remove(),emt.draw(r,er,wme(xt,Ke||{}))}function kt(){if(n&&Ae||!n&&!Ae){var er,Ke;M==="top"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie-W)+3+nt*.75),M==="bottom"&&(er=d+A.l+re*x,Ke=v+A.t+ae*(1-ie)-3-nt*.25),M==="right"&&(Ke=v+A.t+ae*b+3+nt*.75,er=d+A.l+re*ie),Rt(Ee._id+"title",{attributes:{x:er,y:Ke,"text-anchor":n?"start":"middle"}})}}function Ct(){if(n&&!Ae||!n&&Ae){var er=Ee.position||0,Ke=Ee._offset+Ee._length/2,xt,bt;if(M==="right")bt=Ke,xt=A.l+re*er+10+nt*(Ee.showticklabels?1:.5);else if(xt=Ke,M==="bottom"&&(bt=A.t+ae*er+10+(Ge.indexOf("inside")===-1?Ee.tickfont.size:0)+(Ee.ticks!=="intside"&&t.ticklen||0)),M==="top"){var Lt=C.text.split("
").length;bt=A.t+ae*er+10-X-_me*nt*Lt}Rt((n?"h":"v")+Ee._id+"title",{avoid:{selection:T_.select(r).selectAll("g."+Ee._id+"tick"),side:M,offsetTop:n?0:A.t,offsetLeft:n?A.l:0,maxShift:n?k.width:k.height},attributes:{x:xt,y:bt,"text-anchor":"middle"},transform:{rotate:n?-90:0,offset:0}})}}function Yt(){if(!n&&!Ae||n&&Ae){var er=e.select("."+Vc.cbtitle),Ke=er.select("text"),xt=[-l/2,l/2],bt=er.select(".h"+Ee._id+"title-math-group").node(),Lt=15.6;Ke.node()&&(Lt=parseInt(Ke.node().style.fontSize,10)*_me);var St;if(bt?(St=Ng.bBox(bt),ot=St.width,rt=St.height,rt>Lt&&(xt[1]-=(rt-Lt)/2)):Ke.node()&&!Ke.classed(Vc.jsPlaceholder)&&(St=Ng.bBox(Ke.node()),ot=St.width,rt=St.height),n){if(rt){if(rt+=5,M==="top")Ee.domain[1]-=rt/A.h,xt[1]*=-1;else{Ee.domain[0]+=rt/A.h;var Et=tmt.lineCount(Ke);xt[1]+=(1-Et)*Lt}er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale()}}else ot&&(M==="right"&&(Ee.domain[0]+=(ot+nt/2)/A.w),er.attr("transform",Ug(xt[0],xt[1])),Ee.setScale())}e.selectAll("."+Vc.cbfills+",."+Vc.cblines).attr("transform",n?Ug(0,Math.round(A.h*(1-Ee.domain[1]))):Ug(Math.round(A.w*Ee.domain[0]),0)),ct.attr("transform",n?Ug(0,Math.round(-A.t)):Ug(Math.round(-A.l),0));var dt=e.select("."+Vc.cbfills).selectAll("rect."+Vc.cbfill).attr("style","").data(V);dt.enter().append("rect").classed(Vc.cbfill,!0).attr("style",""),dt.exit().remove();var Ht=g.map(Ee.c2p).map(Math.round).sort(function(Or,Nr){return Or-Nr});dt.each(function(Or,Nr){var ut=[Nr===0?g[0]:(V[Nr]+V[Nr-1])/2,Nr===V.length-1?g[1]:(V[Nr]+V[Nr+1])/2].map(Ee.c2p).map(Math.round);n&&(ut[1]=B0.constrain(ut[1]+(ut[1]>ut[0])?1:-1,Ht[0],Ht[1]));var Ne=T_.select(this).attr(n?"x":"y",_e).attr(n?"y":"x",T_.min(ut)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(T_.max(ut)-T_.min(ut),2));if(t._fillgradient)Ng.gradient(Ne,r,t._id,n?"vertical":"horizontalreversed",t._fillgradient,"fill");else{var Ye=T(Or).replace("e-","");Ne.attr("fill",uV(Ye).toHexString())}});var $t=e.select("."+Vc.cblines).selectAll("path."+Vc.cbline).data(_.color&&_.width?H:[]);$t.enter().append("path").classed(Vc.cbline,!0),$t.exit().remove(),$t.each(function(Or){var Nr=_e,ut=Math.round(Ee.c2p(Or))+_.width/2%1;T_.select(this).attr("d","M"+(n?Nr+","+ut:ut+","+Nr)+(n?"h":"v")+X).call(Ng.lineGroupStyle,_.width,P(Or),_.dash)}),ct.selectAll("g."+Ee._id+"tick,path").remove();var fr=_e+X+(l||0)/2-(t.ticks==="outside"?1:0),_r=Ry.calcTicks(Ee),Br=Ry.getTickSigns(Ee)[2];return Ry.drawTicks(r,Ee,{vals:Ee.ticks==="inside"?Ry.clipEnds(Ee,_r):_r,layer:ct,path:Ry.makeTickPath(Ee,fr,Br),transFn:Ry.makeTransTickFn(Ee)}),Ry.drawLabels(r,Ee,{vals:_r,layer:ct,transFn:Ry.makeTransTickLabelFn(Ee),labelFns:Ry.makeLabelFns(Ee,fr)})}function xr(){var er,Ke=X+l/2;Ge.indexOf("inside")===-1&&(er=Ng.bBox(ct.node()),Ke+=n?er.width:er.height),qt=ce.select("text");var xt=0,bt=n&&M==="top",Lt=!n&&M==="right",St=0;if(qt.node()&&!qt.classed(Vc.jsPlaceholder)){var Et,dt=ce.select(".h"+Ee._id+"title-math-group").node();dt&&(n&&Ae||!n&&!Ae)?(er=Ng.bBox(dt),xt=er.width,Et=er.height):(er=Ng.bBox(ce.node()),xt=er.right-A.l-(n?_e:Te),Et=er.bottom-A.t-(n?Te:_e),!n&&M==="top"&&(Ke+=er.height,St=er.height)),Lt&&(qt.attr("transform",Ug(xt/2+nt/2,0)),xt*=2),Ke=Math.max(Ke,n?xt:Et)}var Ht=(n?d:v)*2+Ke+u+l/2,$t=0;!n&&C.text&&h==="bottom"&&b<=0&&($t=Ht/2,Ht+=$t,St+=$t),k._hColorbarMoveTitle=$t,k._hColorbarMoveCBTitle=St;var fr=u+l,_r=(n?_e:Te)-fr/2-(n?d:0),Br=(n?Te:_e)-(n?N:v+St-$t);e.select("."+Vc.cbbg).attr("x",_r).attr("y",Br).attr(n?"width":"height",Math.max(Ht-$t,2)).attr(n?"height":"width",Math.max(N+fr,2)).call(fV.fill,c).call(fV.stroke,t.bordercolor).style("stroke-width",u);var Or=Lt?Math.max(xt-10,0):0;e.selectAll("."+Vc.cboutline).attr("x",(n?_e:Te+d)+Or).attr("y",(n?Te+v-N:_e)+(bt?rt:0)).attr(n?"width":"height",Math.max(X,2)).attr(n?"height":"width",Math.max(N-(n?2*v+rt:2*d+Or),2)).call(fV.stroke,t.outlinecolor).style({fill:"none","stroke-width":l});var Nr=n?Me*Ht:0,ut=n?0:(1-ke)*Ht-St;if(Nr=E?A.l-Nr:-Nr,ut=p?A.t-ut:-ut,e.attr("transform",Ug(Nr,ut)),!n&&(u||uV(c).getAlpha()&&!uV.equals(k.paper_bgcolor,c))){var Ne=ct.selectAll("text"),Ye=Ne[0].length,Ve=e.select("."+Vc.cbbg).node(),Xe=Ng.bBox(Ve),ht=Ng.getTranslate(e),Le=2;Ne.each(function(ri,bi){var nn=0,Wi=Ye-1;if(bi===nn||bi===Wi){var Ni=Ng.bBox(this),_n=Ng.getTranslate(this),$i;if(bi===Wi){var zn=Ni.right+_n.x,Wn=Xe.right+ht.x+Te-u-Le+x;$i=Wn-zn,$i>0&&($i=0)}else if(bi===nn){var It=Ni.left+_n.x,ft=Xe.left+ht.x+Te+u+Le;$i=ft-It,$i<0&&($i=0)}$i&&(Ye<3?this.setAttribute("transform","translate("+$i+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var xe={},Se=xme[f],lt=bme[f],Gt=xme[h],Vt=bme[h],ar=Ht-X;n?(a==="pixels"?(xe.y=b,xe.t=N*Gt,xe.b=N*Vt):(xe.t=xe.b=0,xe.yt=b+i*Gt,xe.yb=b-i*Vt),s==="pixels"?(xe.x=x,xe.l=Ht*Se,xe.r=Ht*lt):(xe.l=ar*Se,xe.r=ar*lt,xe.xl=x-o*Se,xe.xr=x+o*lt)):(a==="pixels"?(xe.x=x,xe.l=N*Se,xe.r=N*lt):(xe.l=xe.r=0,xe.xl=x+i*Se,xe.xr=x-i*lt),s==="pixels"?(xe.y=1-b,xe.t=Ht*Gt,xe.b=Ht*Vt):(xe.t=ar*Gt,xe.b=ar*Vt,xe.yt=b-o*Gt,xe.yb=b+o*Vt));var Qr=t.y<.5?"b":"t",ai=t.x<.5?"l":"r";r._fullLayout._reservedMargin[t._id]={};var jr={r:k.width-_r-Nr,l:_r+xe.r,b:k.height-Br-ut,t:Br+xe.b};E&&p?II.autoMargin(r,t._id,xe):E?r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]:p||n?r._fullLayout._reservedMargin[t._id][ai]=jr[ai]:r._fullLayout._reservedMargin[t._id][Qr]=jr[Qr]}return B0.syncOrAsync([II.previousPromises,kt,Yt,Ct,II.previousPromises,xr],r)}function umt(e,t,r){var n=t.orientation==="v",i=r._fullLayout,a=i._size,o,s,l;PI.init({element:e.node(),gd:r,prepFn:function(){o=e.attr("transform"),cV(e)},moveFn:function(u,c){e.attr("transform",o+Ug(u,c)),s=PI.align((n?t._uFrac:t._vFrac)+u/a.w,n?t._thickFrac:t._lenFrac,0,1,t.xanchor),l=PI.align((n?t._vFrac:1-t._uFrac)-c/a.h,n?t._lenFrac:t._thickFrac,0,1,t.yanchor);var f=PI.getCursor(s,l,t.xanchor,t.yanchor);cV(e,f)},doneFn:function(){if(cV(e),s!==void 0&&l!==void 0){var u={};u[t._propPrefix+"x"]=s,u[t._propPrefix+"y"]=l,t._traceIndex!==void 0?yme.call("_guiRestyle",r,u,t._traceIndex):yme.call("_guiRelayout",r,u)}}})}function cmt(e,t,r){var n=t._levels,i=[],a=[],o,s,l=n.end+n.size/100,u=n.size,c=1.001*r[0]-.001*r[1],f=1.001*r[1]-.001*r[0];for(s=0;s<1e5&&(o=n.start+s*u,!(u>0?o>=l:o<=l));s++)o>c&&o0?o>=l:o<=l));s++)o>r[0]&&o{"use strict";Sme.exports={moduleType:"component",name:"colorbar",attributes:K6(),supplyDefaults:SO(),draw:Ame().draw,hasColorbar:yO()}});var kme=ye((hor,Eme)=>{"use strict";Eme.exports={moduleType:"component",name:"legend",layoutAttributes:yB(),supplyLayoutDefaults:bB(),draw:RB(),style:CB()}});var Lme=ye((dor,Cme)=>{"use strict";Cme.exports={moduleType:"locale",name:"en",dictionary:{"Click to enter Colorscale title":"Click to enter Colourscale title"},format:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],periods:["AM","PM"],dateTime:"%a %b %e %X %Y",date:"%d/%m/%Y",time:"%H:%M:%S",decimal:".",thousands:",",grouping:[3],currency:["$",""],year:"%Y",month:"%b %Y",dayMonth:"%b %-d",dayMonthYear:"%b %-d, %Y"}}});var Ime=ye((vor,Pme)=>{"use strict";Pme.exports={moduleType:"locale",name:"en-US",dictionary:{"Click to enter Colorscale title":"Click to enter Colorscale title"},format:{date:"%m/%d/%Y"}}});var vV=ye((por,Fme)=>{"use strict";var hmt=ba(),zme=Mr(),dV=zme.extendFlat,Rme=zme.extendDeep;function Dme(e){var t;switch(e){case"themes__thumb":t={autosize:!0,width:150,height:150,title:{text:""},showlegend:!1,margin:{l:5,r:5,t:5,b:5,pad:0},annotations:[]};break;case"thumbnail":t={title:{text:""},hidesources:!0,showlegend:!1,borderwidth:0,bordercolor:"",margin:{l:1,r:1,t:1,b:1,pad:0},annotations:[]};break;default:t={}}return t}function dmt(e){var t=["xaxis","yaxis","zaxis"];return t.indexOf(e.slice(0,5))>-1}Fme.exports=function(t,r){var n,i=t.data,a=t.layout,o=Rme([],i),s=Rme({},a,Dme(r.tileClass)),l=t._context||{};if(r.width&&(s.width=r.width),r.height&&(s.height=r.height),r.tileClass==="thumbnail"||r.tileClass==="themes__thumb"){s.annotations=[];var u=Object.keys(s);for(n=0;n{"use strict";var vmt=vb().EventEmitter,pmt=ba(),gmt=Mr(),qme=Ly(),mmt=vV(),ymt=BP(),_mt=NP();function xmt(e,t){var r=new vmt,n=mmt(e,{format:"png"}),i=n.gd;i.style.position="absolute",i.style.left="-5000px",document.body.appendChild(i);function a(){var s=qme.getDelay(i._fullLayout);setTimeout(function(){var l=ymt(i),u=document.createElement("canvas");u.id=gmt.randstr(),r=_mt({format:t.format,width:i._fullLayout.width,height:i._fullLayout.height,canvas:u,emitter:r,svg:l}),r.clean=function(){i&&document.body.removeChild(i)}},s)}var o=qme.getRedrawFunc(i);return pmt.call("_doPlot",i,n.data,n.layout,n.config).then(o).then(a).catch(function(s){r.emit("error",s)}),r}Ome.exports=xmt});var Vme=ye((mor,Ume)=>{"use strict";var Nme=Ly(),bmt={getDelay:Nme.getDelay,getRedrawFunc:Nme.getRedrawFunc,clone:vV(),toSVG:BP(),svgToImg:NP(),toImage:Bme(),downloadImage:YN()};Ume.exports=bmt});var Gme=ye(Dy=>{"use strict";Dy.version=e6().version;iee();Wie();var wmt=ba(),u4=Dy.register=wmt.register,gV=hde(),Hme=Object.keys(gV);for(RI=0;RI{"use strict";jme.exports=Gme()});var Qb=ye((xor,Zme)=>{"use strict";Zme.exports={TEXTPAD:3,eventDataKeys:["value","label"]}});var Lm=ye((bor,Jme)=>{"use strict";var Tf=Uc(),Xme=Oc().axisHoverFormat,Tmt=Wo().hovertemplateAttrs,Amt=Wo().texttemplateAttrs,Kme=Jl(),Smt=Su(),Yme=Qb(),Mmt=Ed().pattern,e2=no().extendFlat,mV=Smt({editType:"calc",arrayOk:!0,colorEditType:"style"}),Emt=Tf.marker,kmt=Emt.line,Cmt=e2({},kmt.width,{dflt:0}),Lmt=e2({width:Cmt,editType:"calc"},Kme("marker.line")),Pmt=e2({line:Lmt,editType:"calc"},Kme("marker"),{opacity:{valType:"number",arrayOk:!0,dflt:1,min:0,max:1,editType:"style"},pattern:Mmt,cornerradius:{valType:"any",editType:"calc"}});Jme.exports={x:Tf.x,x0:Tf.x0,dx:Tf.dx,y:Tf.y,y0:Tf.y0,dy:Tf.dy,xperiod:Tf.xperiod,yperiod:Tf.yperiod,xperiod0:Tf.xperiod0,yperiod0:Tf.yperiod0,xperiodalignment:Tf.xperiodalignment,yperiodalignment:Tf.yperiodalignment,xhoverformat:Xme("x"),yhoverformat:Xme("y"),text:Tf.text,texttemplate:Amt({editType:"plot"},{keys:Yme.eventDataKeys}),hovertext:Tf.hovertext,hovertemplate:Tmt({},{keys:Yme.eventDataKeys}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"calc"},insidetextanchor:{valType:"enumerated",values:["end","middle","start"],dflt:"end",editType:"plot"},textangle:{valType:"angle",dflt:"auto",editType:"plot"},textfont:e2({},mV,{}),insidetextfont:e2({},mV,{}),outsidetextfont:e2({},mV,{}),constraintext:{valType:"enumerated",values:["inside","outside","both","none"],dflt:"both",editType:"calc"},cliponaxis:e2({},Tf.cliponaxis,{}),orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},base:{valType:"any",dflt:null,arrayOk:!0,editType:"calc"},offset:{valType:"number",dflt:null,arrayOk:!0,editType:"calc"},width:{valType:"number",dflt:null,min:0,arrayOk:!0,editType:"calc"},marker:Pmt,offsetgroup:Tf.offsetgroup,alignmentgroup:Tf.alignmentgroup,selected:{marker:{opacity:Tf.selected.marker.opacity,color:Tf.selected.marker.color,editType:"style"},textfont:Tf.selected.textfont,editType:"style"},unselected:{marker:{opacity:Tf.unselected.marker.opacity,color:Tf.unselected.marker.color,editType:"style"},textfont:Tf.unselected.textfont,editType:"style"},zorder:Tf.zorder}});var zI=ye((wor,$me)=>{"use strict";$me.exports={barmode:{valType:"enumerated",values:["stack","group","overlay","relative"],dflt:"group",editType:"calc"},barnorm:{valType:"enumerated",values:["","fraction","percent"],dflt:"",editType:"calc"},bargap:{valType:"number",min:0,max:1,editType:"calc"},bargroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},barcornerradius:{valType:"any",editType:"calc"}}});var FI=ye((Tor,tye)=>{"use strict";var Imt=va(),Qme=Dv().hasColorscale,eye=Uh(),Rmt=Mr().coercePattern;tye.exports=function(t,r,n,i,a){var o=n("marker.color",i),s=Qme(t,"marker");s&&eye(t,r,a,n,{prefix:"marker.",cLetter:"c"}),n("marker.line.color",Imt.defaultLine),Qme(t,"marker.line")&&eye(t,r,a,n,{prefix:"marker.line.",cLetter:"c"}),n("marker.line.width"),n("marker.opacity"),Rmt(n,"marker.pattern",o,s),n("selected.marker.color"),n("unselected.marker.color")}});var r0=ye((Aor,sye)=>{"use strict";var rye=uo(),xT=Mr(),iye=va(),Dmt=ba(),zmt=K3(),Fmt=Pg(),qmt=FI(),Omt=Hb(),nye=Lm(),qI=xT.coerceFont;function Bmt(e,t,r,n){function i(u,c){return xT.coerce(e,t,nye,u,c)}var a=zmt(e,t,n,i);if(!a){t.visible=!1;return}Fmt(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("zorder"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");oye(e,t,n,i,o,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),qmt(e,t,i,r,n);var s=(t.marker.line||{}).color,l=Dmt.getComponentMethod("errorbars","supplyDefaults");l(e,t,s||iye.defaultLine,{axis:"y"}),l(e,t,s||iye.defaultLine,{axis:"x",inherit:"y"}),xT.coerceSelectionMarkerOpacity(t,i)}function Nmt(e,t){var r,n;function i(s,l){return xT.coerce(n._input,n,nye,s,l)}for(var a=0;a=0)return e}else if(typeof e=="string"&&(e=e.trim(),e.slice(-1)==="%"&&rye(e.slice(0,-1))&&(e=+e.slice(0,-1),e>=0)))return e+"%"}function oye(e,t,r,n,i,a){a=a||{};var o=a.moduleHasSelected!==!1,s=a.moduleHasUnselected!==!1,l=a.moduleHasConstrain!==!1,u=a.moduleHasCliponaxis!==!1,c=a.moduleHasTextangle!==!1,f=a.moduleHasInsideanchor!==!1,h=!!a.hasPathbar,d=Array.isArray(i)||i==="auto",v=d||i==="inside",x=d||i==="outside";if(v||x){var b=qI(n,"textfont",r.font),p=xT.extendFlat({},b),E=e.textfont&&e.textfont.color,k=!E;if(k&&delete p.color,qI(n,"insidetextfont",p),h){var A=xT.extendFlat({},b);k&&delete A.color,qI(n,"pathbar.textfont",A)}x&&qI(n,"outsidetextfont",b),o&&n("selected.textfont.color"),s&&n("unselected.textfont.color"),l&&n("constraintext"),u&&n("cliponaxis"),c&&n("textangle"),n("texttemplate")}v&&f&&n("insidetextanchor")}sye.exports={supplyDefaults:Bmt,crossTraceDefaults:Nmt,handleText:oye,validateCornerradius:aye}});var yV=ye((Sor,lye)=>{"use strict";var Umt=ba(),Vmt=Qa(),Hmt=Mr(),Gmt=zI(),jmt=r0().validateCornerradius;lye.exports=function(e,t,r){function n(x,b){return Hmt.coerce(e,t,Gmt,x,b)}for(var i=!1,a=!1,o=!1,s={},l=n("barmode"),u=l==="group",c=0;c0&&!s[h]&&(o=!0),s[h]=!0),f.visible&&f.type==="histogram"){var d=Vmt.getFromId({_fullLayout:t},f[f.orientation==="v"?"xaxis":"yaxis"]);d.type!=="category"&&(a=!0)}}if(!i){delete t.barmode;return}l!=="overlay"&&n("barnorm"),n("bargap",a&&!o?0:.2),n("bargroupgap");var v=n("barcornerradius");t.barcornerradius=jmt(v)}});var c4=ye((Mor,uye)=>{"use strict";var bT=Mr();uye.exports=function(t,r){for(var n=0;n{"use strict";var cye=Qa(),fye=Rg(),hye=Dv().hasColorscale,dye=zv(),Wmt=c4(),Zmt=F0();vye.exports=function(t,r){var n=cye.getFromId(t,r.xaxis||"x"),i=cye.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f={msUTC:!!(r.base||r.base===0)};r.orientation==="h"?(a=n.makeCalcdata(r,"x",f),s=i.makeCalcdata(r,"y"),l=fye(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y",f),s=n.makeCalcdata(r,"x"),l=fye(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var h=Math.min(o.length,a.length),d=new Array(h),v=0;v{"use strict";var Xmt=xa(),Ymt=Mr();function Kmt(e,t,r){var n=e._fullLayout,i=n["_"+r+"Text_minsize"];if(i){var a=n.uniformtext.mode==="hide",o;switch(r){case"funnelarea":case"pie":case"sunburst":o="g.slice";break;case"treemap":case"icicle":o="g.slice, g.pathbar";break;default:o="g.points > g.point"}t.selectAll(o).each(function(s){var l=s.transform;if(l){l.scale=a&&l.hide?0:i/l.fontSize;var u=Xmt.select(this).select("text");Ymt.setTransormAndDisplay(u,l)}})}}function Jmt(e,t,r){if(r.uniformtext.mode){var n=gye(e),i=r.uniformtext.minsize,a=t.scale*t.fontSize;t.hide=a{"use strict";var Qmt=uo(),eyt=id(),yye=Mr().isArrayOrTypedArray;t2.coerceString=function(e,t,r){if(typeof t=="string"){if(t||!e.noBlank)return t}else if((typeof t=="number"||t===!0)&&!e.strict)return String(t);return r!==void 0?r:e.dflt};t2.coerceNumber=function(e,t,r){if(Qmt(t)){t=+t;var n=e.min,i=e.max,a=n!==void 0&&ti;if(!a)return t}return r!==void 0?r:e.dflt};t2.coerceColor=function(e,t,r){return eyt(t).isValid()?t:r!==void 0?r:e.dflt};t2.coerceEnumerated=function(e,t,r){return e.coerceNumber&&(t=+t),e.values.indexOf(t)!==-1?t:r!==void 0?r:e.dflt};t2.getValue=function(e,t){var r;return yye(e)?t{"use strict";var f4=xa(),tyt=va(),h4=ao(),_ye=Mr(),xye=ba(),bye=_v().resizeText,_V=Lm(),ryt=_V.textfont,iyt=_V.insidetextfont,nyt=_V.outsidetextfont,Jd=OI();function ayt(e){var t=f4.select(e).selectAll('g[class^="barlayer"]').selectAll("g.trace");bye(e,t,"bar");var r=t.size(),n=e._fullLayout;t.style("opacity",function(i){return i[0].trace.opacity}).each(function(i){(n.barmode==="stack"&&r>1||n.bargap===0&&n.bargroupgap===0&&!i[0].trace.marker.line.width)&&f4.select(this).attr("shape-rendering","crispEdges")}),t.selectAll("g.points").each(function(i){var a=f4.select(this),o=i[0].trace;wye(a,o,e)}),xye.getComponentMethod("errorbars","style")(t)}function wye(e,t,r){h4.pointStyle(e.selectAll("path"),t,r),Tye(e,t,r)}function Tye(e,t,r){e.selectAll("text").each(function(n){var i=f4.select(this),a=_ye.ensureUniformFontSize(r,Aye(i,n,t,r));h4.font(i,a)})}function oyt(e,t,r){var n=t[0].trace;n.selectedpoints?syt(r,n,e):(wye(r,n,e),xye.getComponentMethod("errorbars","style")(r))}function syt(e,t,r){h4.selectedPointStyle(e.selectAll("path"),t),lyt(e.selectAll("text"),t,r)}function lyt(e,t,r){e.each(function(n){var i=f4.select(this),a;if(n.selected){a=_ye.ensureUniformFontSize(r,Aye(i,n,t,r));var o=t.selected.textfont&&t.selected.textfont.color;o&&(a.color=o),h4.font(i,a)}else h4.selectedTextStyle(i,t)})}function Aye(e,t,r,n){var i=n._fullLayout.font,a=r.textfont;if(e.classed("bartext-inside")){var o=kye(t,r);a=Mye(r,t.i,i,o)}else e.classed("bartext-outside")&&(a=Eye(r,t.i,i));return a}function Sye(e,t,r){return xV(ryt,e.textfont,t,r)}function Mye(e,t,r,n){var i=Sye(e,t,r),a=e._input.textfont===void 0||e._input.textfont.color===void 0||Array.isArray(e.textfont.color)&&e.textfont.color[t]===void 0;return a&&(i={color:tyt.contrast(n),family:i.family,size:i.size,weight:i.weight,style:i.style,variant:i.variant,textcase:i.textcase,lineposition:i.lineposition,shadow:i.shadow}),xV(iyt,e.insidetextfont,t,i)}function Eye(e,t,r){var n=Sye(e,t,r);return xV(nyt,e.outsidetextfont,t,n)}function xV(e,t,r,n){t=t||{};var i=Jd.getValue(t.family,r),a=Jd.getValue(t.size,r),o=Jd.getValue(t.color,r),s=Jd.getValue(t.weight,r),l=Jd.getValue(t.style,r),u=Jd.getValue(t.variant,r),c=Jd.getValue(t.textcase,r),f=Jd.getValue(t.lineposition,r),h=Jd.getValue(t.shadow,r);return{family:Jd.coerceString(e.family,i,n.family),size:Jd.coerceNumber(e.size,a,n.size),color:Jd.coerceColor(e.color,o,n.color),weight:Jd.coerceString(e.weight,s,n.weight),style:Jd.coerceString(e.style,l,n.style),variant:Jd.coerceString(e.variant,u,n.variant),textcase:Jd.coerceString(e.variant,c,n.textcase),lineposition:Jd.coerceString(e.variant,f,n.lineposition),shadow:Jd.coerceString(e.variant,h,n.shadow)}}function kye(e,t){return t.type==="waterfall"?t[e.dir].marker.color:e.mcc||e.mc||t.marker.color}Cye.exports={style:ayt,styleTextPoints:Tye,styleOnSelect:oyt,getInsideTextFont:Mye,getOutsideTextFont:Eye,getBarColor:kye,resizeText:bye}});var i2=ye((Por,qye)=>{"use strict";var BI=xa(),NI=uo(),Pd=Mr(),uyt=Pl(),cyt=va(),A_=ao(),fyt=ba(),UI=Qa().tickText,Lye=_v(),hyt=Lye.recordMinTextSize,dyt=Lye.clearMinTextSize,bV=N0(),wT=OI(),vyt=Qb(),Pye=Lm(),pyt=Pye.text,gyt=Pye.textposition,myt=rp().appendArrayPointValue,Uv=vyt.TEXTPAD;function yyt(e){return e.id}function _yt(e){if(e.ids)return yyt}function wV(e){return(e>0)-(e<0)}function Pm(e,t){return e0}function byt(e,t,r,n,i,a){var o=t.xaxis,s=t.yaxis,l=e._fullLayout,u=e._context.staticPlot;i||(i={mode:l.barmode,norm:l.barmode,gap:l.bargap,groupgap:l.bargroupgap},dyt("bar",l));var c=Pd.makeTraceGroups(n,r,"trace bars").each(function(f){var h=BI.select(this),d=f[0].trace,v=f[0].t,x=d.type==="waterfall",b=d.type==="funnel",p=d.type==="histogram",E=d.type==="bar",k=E||b,A=0;x&&d.connector.visible&&d.connector.mode==="between"&&(A=d.connector.line.width/2);var L=d.orientation==="h",_=Rye(i),C=Pd.ensureSingle(h,"g","points"),M=_yt(d),g=C.selectAll("g.point").data(Pd.identity,M);g.enter().append("g").classed("point",!0),g.exit().remove(),g.each(function(T,F){var q=BI.select(this),V=xyt(T,o,s,L),H=V[0][0],X=V[0][1],G=V[1][0],N=V[1][1],W=(L?X-H:N-G)===0;W&&k&&wT.getLineWidth(d,T)&&(W=!1),W||(W=!NI(H)||!NI(X)||!NI(G)||!NI(N)),T.isBlank=W,W&&(L?X=H:N=G),A&&!W&&(L?(H-=Pm(H,X)*A,X+=Pm(H,X)*A):(G-=Pm(G,N)*A,N+=Pm(G,N)*A));var re,ae;if(d.type==="waterfall"){if(!W){var _e=d[T.dir].marker;re=_e.line.width,ae=_e.color}}else re=wT.getLineWidth(d,T),ae=T.mc||d.marker.color;function Me(Ke){var xt=BI.round(re/2%1,2);return i.gap===0&&i.groupgap===0?BI.round(Math.round(Ke)-xt,2):Ke}function ke(Ke,xt,bt){return bt&&Ke===xt?Ke:Math.abs(Ke-xt)>=2?Me(Ke):Ke>xt?Math.ceil(Ke):Math.floor(Ke)}var ge=cyt.opacity(ae),ie=ge<1||re>.01?Me:ke;e._context.staticPlot||(H=ie(H,X,L),X=ie(X,H,L),G=ie(G,N,!L),N=ie(N,G,!L));var Te=L?o.c2p:s.c2p,Ee;T.s0>0?Ee=T._sMax:T.s0<0?Ee=T._sMin:Ee=T.s1>0?T._sMax:T._sMin;function Ae(Ke,xt){if(!Ke)return 0;var bt=Math.abs(L?N-G:X-H),Lt=Math.abs(L?X-H:N-G),St=ie(Math.abs(Te(Ee,!0)-Te(0,!0))),Et=T.hasB?Math.min(bt/2,Lt/2):Math.min(bt/2,St),dt;if(xt==="%"){var Ht=Math.min(50,Ke);dt=bt*(Ht/100)}else dt=Ke;return ie(Math.max(Math.min(dt,Et),0))}var ze=E||p?Ae(v.cornerradiusvalue,v.cornerradiusform):0,Ce,me,Re="M"+H+","+G+"V"+N+"H"+X+"V"+G+"Z",ce=0;if(ze&&T.s){var Ge=wV(T.s0)===0||wV(T.s)===wV(T.s0)?T.s1:T.s0;if(ce=ie(T.hasB?0:Math.abs(Te(Ee,!0)-Te(Ge,!0))),ce0?Math.sqrt(ce*(2*ze-ce)):0,Rt=nt>0?Math.max:Math.min;Ce="M"+H+","+G+"V"+(N-rt*ct)+"H"+Rt(X-(ze-ce)*nt,H)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct-ot)+"V"+(G+ze*ct+ot)+"A "+ze+","+ze+" 0 0 "+qt+" "+Rt(X-(ze-ce)*nt,H)+","+(G+rt*ct)+"Z"}else if(T.hasB)Ce="M"+(H+ze*nt)+","+G+"A "+ze+","+ze+" 0 0 "+qt+" "+H+","+(G+ze*ct)+"V"+(N-ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt)+","+N+"H"+(X-ze*nt)+"A "+ze+","+ze+" 0 0 "+qt+" "+X+","+(N-ze*ct)+"V"+(G+ze*ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-ze*nt)+","+G+"Z";else{me=Math.abs(N-G)+ce;var kt=me0?Math.sqrt(ce*(2*ze-ce)):0,Yt=ct>0?Math.max:Math.min;Ce="M"+(H+kt*nt)+","+G+"V"+Yt(N-(ze-ce)*ct,G)+"A "+ze+","+ze+" 0 0 "+qt+" "+(H+ze*nt-Ct)+","+N+"H"+(X-ze*nt+Ct)+"A "+ze+","+ze+" 0 0 "+qt+" "+(X-kt*nt)+","+Yt(N-(ze-ce)*ct,G)+"V"+G+"Z"}}else Ce=Re}else Ce=Re;var xr=Iye(Pd.ensureSingle(q,"path"),l,i,a);if(xr.style("vector-effect",u?"none":"non-scaling-stroke").attr("d",isNaN((X-H)*(N-G))||W&&e._context.staticPlot?"M0,0Z":Ce).call(A_.setClipUrl,t.layerClipId,e),!l.uniformtext.mode&&_){var er=A_.makePointStyleFns(d);A_.singlePointStyle(T,xr,d,er,e)}wyt(e,t,q,f,F,H,X,G,N,ze,ce,i,a),t.layerClipId&&A_.hideOutsideRangePoint(T,q.select("text"),o,s,d.xcalendar,d.ycalendar)});var P=d.cliponaxis===!1;A_.setClipUrl(h,P?null:t.layerClipId,e)});fyt.getComponentMethod("errorbars","plot")(e,c,t,i)}function wyt(e,t,r,n,i,a,o,s,l,u,c,f,h){var d=t.xaxis,v=t.yaxis,x=e._fullLayout,b;function p(me,Re,ce){var Ge=Pd.ensureSingle(me,"text").text(Re).attr({class:"bartext bartext-"+b,"text-anchor":"middle","data-notex":1}).call(A_.font,ce).call(uyt.convertToTspans,e);return Ge}var E=n[0].trace,k=E.orientation==="h",A=Syt(x,n,i,d,v);b=Myt(E,i);var L=f.mode==="stack"||f.mode==="relative",_=n[i],C=!L||_._outmost,M=_.hasB,g=u&&u-c>Uv;if(!A||b==="none"||(_.isBlank||a===o||s===l)&&(b==="auto"||b==="inside")){r.select("text").remove();return}var P=x.font,T=bV.getBarColor(n[i],E),F=bV.getInsideTextFont(E,i,P,T),q=bV.getOutsideTextFont(E,i,P),V=E.insidetextanchor||"end",H=r.datum();k?d.type==="log"&&H.s0<=0&&(d.range[0]0&&Me>0,ie;g?M?ie=r2(N-2*u,W,_e,Me,k)||r2(N,W-2*u,_e,Me,k):k?ie=r2(N-(u-c),W,_e,Me,k)||r2(N,W-2*(u-c),_e,Me,k):ie=r2(N,W-(u-c),_e,Me,k)||r2(N-2*(u-c),W,_e,Me,k):ie=r2(N,W,_e,Me,k),ge&&ie?b="inside":(b="outside",re.remove(),re=null)}else b="inside";if(!re){ke=Pd.ensureUniformFontSize(e,b==="outside"?q:F),re=p(r,A,ke);var Te=re.attr("transform");if(re.attr("transform",""),ae=A_.bBox(re.node()),_e=ae.width,Me=ae.height,re.attr("transform",Te),_e<=0||Me<=0){re.remove();return}}var Ee=E.textangle,Ae,ze;b==="outside"?(ze=E.constraintext==="both"||E.constraintext==="outside",Ae=Ayt(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee})):(ze=E.constraintext==="both"||E.constraintext==="inside",Ae=Fye(a,o,s,l,ae,{isHorizontal:k,constrained:ze,angle:Ee,anchor:V,hasB:M,r:u,overhead:c})),Ae.fontSize=ke.size,hyt(E.type==="histogram"?"bar":E.type,Ae,x),_.transform=Ae;var Ce=Iye(re,x,f,h);Pd.setTransormAndDisplay(Ce,Ae)}function r2(e,t,r,n,i){if(e<0||t<0)return!1;var a=r<=e&&n<=t,o=r<=t&&n<=e,s=i?e>=r*(t/n):t>=n*(e/r);return a||o||s}function Dye(e){return e==="auto"?0:e}function zye(e,t){var r=Math.PI/180*t,n=Math.abs(Math.sin(r)),i=Math.abs(Math.cos(r));return{x:e.width*i+e.height*n,y:e.width*n+e.height*i}}function Fye(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=a.anchor,c=u==="end",f=u==="start",h=a.leftToRight||0,d=(h+1)/2,v=1-d,x=a.hasB,b=a.r,p=a.overhead,E=i.width,k=i.height,A=Math.abs(t-e),L=Math.abs(n-r),_=A>2*Uv&&L>2*Uv?Uv:0;A-=2*_,L-=2*_;var C=Dye(l);l==="auto"&&!(E<=A&&k<=L)&&(E>A||k>L)&&(!(E>L||k>A)||EUv){var T=Tyt(e,t,r,n,M,b,p,o,x);g=T.scale,P=T.pad}else g=1,s&&(g=Math.min(1,A/M.x,L/M.y)),P=0;var F=i.left*v+i.right*d,q=(i.top+i.bottom)/2,V=(e+Uv)*v+(t-Uv)*d,H=(r+n)/2,X=0,G=0;if(f||c){var N=(o?M.x:M.y)/2;b&&(c||x)&&(_+=P);var W=o?Pm(e,t):Pm(r,n);o?f?(V=e+W*_,X=-W*N):(V=t-W*_,X=W*N):f?(H=r+W*_,G=-W*N):(H=n-W*_,G=W*N)}return{textX:F,textY:q,targetX:V,targetY:H,anchorX:X,anchorY:G,scale:g,rotate:C}}function Tyt(e,t,r,n,i,a,o,s,l){var u=Math.max(0,Math.abs(t-e)-2*Uv),c=Math.max(0,Math.abs(n-r)-2*Uv),f=a-Uv,h=o?f-Math.sqrt(f*f-(f-o)*(f-o)):f,d=l?f*2:s?f-o:2*h,v=l?f*2:s?2*h:f-o,x,b,p,E,k;return i.y/i.x>=c/(u-d)?E=c/i.y:i.y/i.x<=(c-v)/u?E=u/i.x:!l&&s?(x=i.x*i.x+i.y*i.y/4,b=-2*i.x*(u-f)-i.y*(c/2-f),p=(u-f)*(u-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)):l?(x=(i.x*i.x+i.y*i.y)/4,b=-i.x*(u/2-f)-i.y*(c/2-f),p=(u/2-f)*(u/2-f)+(c/2-f)*(c/2-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)):(x=i.x*i.x/4+i.y*i.y,b=-i.x*(u/2-f)-2*i.y*(c-f),p=(u/2-f)*(u/2-f)+(c-f)*(c-f)-f*f,E=(-b+Math.sqrt(b*b-4*x*p))/(2*x)),E=Math.min(1,E),s?k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(c-i.y*E)/2)*(f-(c-i.y*E)/2)))-o):k=Math.max(0,f-Math.sqrt(Math.max(0,f*f-(f-(u-i.x*E)/2)*(f-(u-i.x*E)/2)))-o),{scale:E,pad:k}}function Ayt(e,t,r,n,i,a){var o=!!a.isHorizontal,s=!!a.constrained,l=a.angle||0,u=i.width,c=i.height,f=Math.abs(t-e),h=Math.abs(n-r),d;o?d=h>2*Uv?Uv:0:d=f>2*Uv?Uv:0;var v=1;s&&(v=o?Math.min(1,h/c):Math.min(1,f/u));var x=Dye(l),b=zye(i,x),p=(o?b.x:b.y)/2,E=(i.left+i.right)/2,k=(i.top+i.bottom)/2,A=(e+t)/2,L=(r+n)/2,_=0,C=0,M=o?Pm(t,e):Pm(r,n);return o?(A=t-M*d,_=M*p):(L=n+M*d,C=-M*p),{textX:E,textY:k,targetX:A,targetY:L,anchorX:_,anchorY:C,scale:v,rotate:x}}function Syt(e,t,r,n,i){var a=t[0].trace,o=a.texttemplate,s;return o?s=Eyt(e,t,r,n,i):a.textinfo?s=kyt(t,r,n,i):s=wT.getValue(a.text,r),wT.coerceString(pyt,s)}function Myt(e,t){var r=wT.getValue(e.textposition,t);return wT.coerceEnumerated(gyt,r)}function Eyt(e,t,r,n,i){var a=t[0].trace,o=Pd.castOption(a,r,"texttemplate");if(!o)return"";var s=a.type==="histogram",l=a.type==="waterfall",u=a.type==="funnel",c=a.orientation==="h",f,h,d,v;c?(f="y",h=i,d="x",v=n):(f="x",h=n,d="y",v=i);function x(_){return UI(h,h.c2l(_),!0).text}function b(_){return UI(v,v.c2l(_),!0).text}var p=t[r],E={};E.label=p.p,E.labelLabel=E[f+"Label"]=x(p.p);var k=Pd.castOption(a,p.i,"text");(k===0||k)&&(E.text=k),E.value=p.s,E.valueLabel=E[d+"Label"]=b(p.s);var A={};myt(A,a,p.i),(s||A.x===void 0)&&(A.x=c?E.value:E.label),(s||A.y===void 0)&&(A.y=c?E.label:E.value),(s||A.xLabel===void 0)&&(A.xLabel=c?E.valueLabel:E.labelLabel),(s||A.yLabel===void 0)&&(A.yLabel=c?E.labelLabel:E.valueLabel),l&&(E.delta=+p.rawS||p.s,E.deltaLabel=b(E.delta),E.final=p.v,E.finalLabel=b(E.final),E.initial=E.final-E.delta,E.initialLabel=b(E.initial)),u&&(E.value=p.s,E.valueLabel=b(E.value),E.percentInitial=p.begR,E.percentInitialLabel=Pd.formatPercent(p.begR),E.percentPrevious=p.difR,E.percentPreviousLabel=Pd.formatPercent(p.difR),E.percentTotal=p.sumR,E.percenTotalLabel=Pd.formatPercent(p.sumR));var L=Pd.castOption(a,p.i,"customdata");return L&&(E.customdata=L),Pd.texttemplateString(o,E,e._d3locale,A,E,a._meta||{})}function kyt(e,t,r,n){var i=e[0].trace,a=i.orientation==="h",o=i.type==="waterfall",s=i.type==="funnel";function l(L){var _=a?n:r;return UI(_,L,!0).text}function u(L){var _=a?r:n;return UI(_,+L,!0).text}var c=i.textinfo,f=e[t],h=c.split("+"),d=[],v,x=function(L){return h.indexOf(L)!==-1};if(x("label")&&d.push(l(e[t].p)),x("text")&&(v=Pd.castOption(i,f.i,"text"),(v===0||v)&&d.push(v)),o){var b=+f.rawS||f.s,p=f.v,E=p-b;x("initial")&&d.push(u(E)),x("delta")&&d.push(u(b)),x("final")&&d.push(u(p))}if(s){x("value")&&d.push(u(f.s));var k=0;x("percent initial")&&k++,x("percent previous")&&k++,x("percent total")&&k++;var A=k>1;x("percent initial")&&(v=Pd.formatPercent(f.begR),A&&(v+=" of initial"),d.push(v)),x("percent previous")&&(v=Pd.formatPercent(f.difR),A&&(v+=" of previous"),d.push(v)),x("percent total")&&(v=Pd.formatPercent(f.sumR),A&&(v+=" of total"),d.push(v))}return d.join("
")}qye.exports={plot:byt,toMoveInsideBar:Fye}});var TT=ye((Ior,Uye)=>{"use strict";var d4=Nc(),Cyt=ba(),Oye=va(),Lyt=Mr().fillText,Pyt=OI().getLineWidth,TV=Qa().hoverLabelText,Iyt=es().BADNUM;function Ryt(e,t,r,n,i){var a=Bye(e,t,r,n,i);if(a){var o=a.cd,s=o[0].trace,l=o[a.index];return a.color=Nye(s,l),Cyt.getComponentMethod("errorbars","hoverInfo")(l,s,a),[a]}}function Bye(e,t,r,n,i){var a=e.cd,o=a[0].trace,s=a[0].t,l=n==="closest",u=o.type==="waterfall",c=e.maxHoverDistance,f=e.maxSpikeDistance,h,d,v,x,b,p,E;o.orientation==="h"?(h=r,d=t,v="y",x="x",b=H,p=F):(h=t,d=r,v="x",x="y",p=H,b=F);var k=o[v+"period"],A=l||k;function L(ie){return C(ie,-1)}function _(ie){return C(ie,1)}function C(ie,Te){var Ee=ie.w;return ie[v]+Te*Ee/2}function M(ie){return ie[v+"End"]-ie[v+"Start"]}var g=l?L:k?function(ie){return ie.p-M(ie)/2}:function(ie){return Math.min(L(ie),ie.p-s.bardelta/2)},P=l?_:k?function(ie){return ie.p+M(ie)/2}:function(ie){return Math.max(_(ie),ie.p+s.bardelta/2)};function T(ie,Te,Ee){return i.finiteRange&&(Ee=0),d4.inbox(ie-h,Te-h,Ee+Math.min(1,Math.abs(Te-ie)/E)-1)}function F(ie){return T(g(ie),P(ie),c)}function q(ie){return T(L(ie),_(ie),f)}function V(ie){var Te=ie[x];if(u){var Ee=Math.abs(ie.rawS)||0;d>0?Te+=Ee:d<0&&(Te-=Ee)}return Te}function H(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,c+(Ae-Te)/(Ae-Ee)-1)}function X(ie){var Te=d,Ee=ie.b,Ae=V(ie);return d4.inbox(Ee-Te,Ae-Te,f+(Ae-Te)/(Ae-Ee)-1)}var G=e[v+"a"],N=e[x+"a"];E=Math.abs(G.r2c(G.range[1])-G.r2c(G.range[0]));function W(ie){return(b(ie)+p(ie))/2}var re=d4.getDistanceFunction(n,b,p,W);if(d4.getClosest(a,re,e),e.index!==!1&&a[e.index].p!==Iyt){A||(g=function(ie){return Math.min(L(ie),ie.p-s.bargroupwidth/2)},P=function(ie){return Math.max(_(ie),ie.p+s.bargroupwidth/2)});var ae=e.index,_e=a[ae],Me=o.base?_e.b+_e.s:_e.s;e[x+"0"]=e[x+"1"]=N.c2p(_e[x],!0),e[x+"LabelVal"]=Me;var ke=s.extents[s.extents.round(_e.p)];e[v+"0"]=G.c2p(l?g(_e):ke[0],!0),e[v+"1"]=G.c2p(l?P(_e):ke[1],!0);var ge=_e.orig_p!==void 0;return e[v+"LabelVal"]=ge?_e.orig_p:_e.p,e.labelLabel=TV(G,e[v+"LabelVal"],o[v+"hoverformat"]),e.valueLabel=TV(N,e[x+"LabelVal"],o[x+"hoverformat"]),e.baseLabel=TV(N,_e.b,o[x+"hoverformat"]),e.spikeDistance=(X(_e)+q(_e))/2,e[v+"Spike"]=G.c2p(_e.p,!0),Lyt(_e,o,e),e.hovertemplate=o.hovertemplate,e}}function Nye(e,t){var r=t.mcc||e.marker.color,n=t.mlcc||e.marker.line.color,i=Pyt(e,t);if(Oye.opacity(r))return r;if(Oye.opacity(n)&&i)return n}Uye.exports={hoverPoints:Ryt,hoverOnBars:Bye,getTraceColor:Nye}});var Hye=ye((Ror,Vye)=>{"use strict";Vye.exports=function(t,r,n){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),n.orientation==="h"?(t.label=t.y,t.value=t.x):(t.label=t.x,t.value=t.y),t}});var AT=ye((Dor,Gye)=>{"use strict";Gye.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=n[0].trace,s=o.type==="funnel",l=o.orientation==="h",u=[],c;if(r===!1)for(c=0;c{"use strict";jye.exports={attributes:Lm(),layoutAttributes:zI(),supplyDefaults:r0().supplyDefaults,crossTraceDefaults:r0().crossTraceDefaults,supplyLayoutDefaults:yV(),calc:pye(),crossTraceCalc:Gb().crossTraceCalc,colorbar:Kd(),arraysToCalcdata:c4(),plot:i2().plot,style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:TT().hoverPoints,eventData:Hye(),selectPoints:AT(),moduleType:"trace",name:"bar",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","oriented","errorBarsOK","showLegend","zoomScale"],animatable:!0,meta:{}}});var Xye=ye((For,Zye)=>{"use strict";Zye.exports=Wye()});var v4=ye((qor,$ye)=>{"use strict";var zyt=Eg(),U0=Uc(),Yye=Lm(),Fyt=dh(),Kye=Oc().axisHoverFormat,qyt=Wo().hovertemplateAttrs,zy=no().extendFlat,ST=U0.marker,Jye=ST.line;$ye.exports={y:{valType:"data_array",editType:"calc+clearAxisTypes"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},x0:{valType:"any",editType:"calc+clearAxisTypes"},y0:{valType:"any",editType:"calc+clearAxisTypes"},dx:{valType:"number",editType:"calc"},dy:{valType:"number",editType:"calc"},xperiod:U0.xperiod,yperiod:U0.yperiod,xperiod0:U0.xperiod0,yperiod0:U0.yperiod0,xperiodalignment:U0.xperiodalignment,yperiodalignment:U0.yperiodalignment,xhoverformat:Kye("x"),yhoverformat:Kye("y"),name:{valType:"string",editType:"calc+clearAxisTypes"},q1:{valType:"data_array",editType:"calc+clearAxisTypes"},median:{valType:"data_array",editType:"calc+clearAxisTypes"},q3:{valType:"data_array",editType:"calc+clearAxisTypes"},lowerfence:{valType:"data_array",editType:"calc"},upperfence:{valType:"data_array",editType:"calc"},notched:{valType:"boolean",editType:"calc"},notchwidth:{valType:"number",min:0,max:.5,dflt:.25,editType:"calc"},notchspan:{valType:"data_array",editType:"calc"},boxpoints:{valType:"enumerated",values:["all","outliers","suspectedoutliers",!1],editType:"calc"},jitter:{valType:"number",min:0,max:1,editType:"calc"},pointpos:{valType:"number",min:-2,max:2,editType:"calc"},sdmultiple:{valType:"number",min:0,editType:"calc",dflt:1},sizemode:{valType:"enumerated",values:["quartiles","sd"],editType:"calc",dflt:"quartiles"},boxmean:{valType:"enumerated",values:[!0,"sd",!1],editType:"calc"},mean:{valType:"data_array",editType:"calc"},sd:{valType:"data_array",editType:"calc"},orientation:{valType:"enumerated",values:["v","h"],editType:"calc+clearAxisTypes"},quartilemethod:{valType:"enumerated",values:["linear","exclusive","inclusive"],dflt:"linear",editType:"calc"},width:{valType:"number",min:0,dflt:0,editType:"calc"},marker:{outliercolor:{valType:"color",dflt:"rgba(0, 0, 0, 0)",editType:"style"},symbol:zy({},ST.symbol,{arrayOk:!1,editType:"plot"}),opacity:zy({},ST.opacity,{arrayOk:!1,dflt:1,editType:"style"}),angle:zy({},ST.angle,{arrayOk:!1,editType:"calc"}),size:zy({},ST.size,{arrayOk:!1,editType:"calc"}),color:zy({},ST.color,{arrayOk:!1,editType:"style"}),line:{color:zy({},Jye.color,{arrayOk:!1,dflt:Fyt.defaultLine,editType:"style"}),width:zy({},Jye.width,{arrayOk:!1,dflt:0,editType:"style"}),outliercolor:{valType:"color",editType:"style"},outlierwidth:{valType:"number",min:0,dflt:1,editType:"style"},editType:"style"},editType:"plot"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:zyt(),whiskerwidth:{valType:"number",min:0,max:1,dflt:.5,editType:"calc"},showwhiskers:{valType:"boolean",editType:"calc"},offsetgroup:Yye.offsetgroup,alignmentgroup:Yye.alignmentgroup,selected:{marker:U0.selected.marker,editType:"style"},unselected:{marker:U0.unselected.marker,editType:"style"},text:zy({},U0.text,{}),hovertext:zy({},U0.hovertext,{}),hovertemplate:qyt({}),hoveron:{valType:"flaglist",flags:["boxes","points"],dflt:"boxes+points",editType:"style"},zorder:U0.zorder}});var p4=ye((Oor,Qye)=>{"use strict";Qye.exports={boxmode:{valType:"enumerated",values:["group","overlay"],dflt:"overlay",editType:"calc"},boxgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"},boxgroupgap:{valType:"number",min:0,max:1,dflt:.3,editType:"calc"}}});var m4=ye((Bor,i1e)=>{"use strict";var V0=Mr(),Oyt=ba(),Byt=va(),Nyt=Pg(),Uyt=Hb(),e1e=L3(),g4=v4();function Vyt(e,t,r,n){function i(v,x){return V0.coerce(e,t,g4,v,x)}if(t1e(e,t,i,n),t.visible!==!1){Nyt(e,t,n,i),i("xhoverformat"),i("yhoverformat");var a=t._hasPreCompStats;a&&(i("lowerfence"),i("upperfence")),i("line.color",(e.marker||{}).color||r),i("line.width"),i("fillcolor",Byt.addOpacity(t.line.color,.5));var o=!1;if(a){var s=i("mean"),l=i("sd");s&&s.length&&(o=!0,l&&l.length&&(o="sd"))}i("whiskerwidth");var u=i("sizemode"),c;u==="quartiles"&&(c=i("boxmean",o)),i("showwhiskers",u==="quartiles"),(u==="sd"||c==="sd")&&i("sdmultiple"),i("width"),i("quartilemethod");var f=!1;if(a){var h=i("notchspan");h&&h.length&&(f=!0)}else V0.validate(e.notchwidth,g4.notchwidth)&&(f=!0);var d=i("notched",f);d&&i("notchwidth"),r1e(e,t,i,{prefix:"box"}),i("zorder")}}function t1e(e,t,r,n){function i(P){var T=0;return P&&P.length&&(T+=1,V0.isArrayOrTypedArray(P[0])&&P[0].length&&(T+=1)),T}function a(P){return V0.validate(e[P],g4[P])}var o=r("y"),s=r("x"),l;if(t.type==="box"){var u=r("q1"),c=r("median"),f=r("q3");t._hasPreCompStats=u&&u.length&&c&&c.length&&f&&f.length,l=Math.min(V0.minRowLength(u),V0.minRowLength(c),V0.minRowLength(f))}var h=i(o),d=i(s),v=h&&V0.minRowLength(o),x=d&&V0.minRowLength(s),b=n.calendar,p={autotypenumbers:n.autotypenumbers},E,k;if(t._hasPreCompStats)switch(String(d)+String(h)){case"00":var A=a("x0")||a("dx"),L=a("y0")||a("dy");L&&!A?E="h":E="v",k=l;break;case"10":E="v",k=Math.min(l,x);break;case"20":E="h",k=Math.min(l,s.length);break;case"01":E="h",k=Math.min(l,v);break;case"02":E="v",k=Math.min(l,o.length);break;case"12":E="v",k=Math.min(l,x,o.length);break;case"21":E="h",k=Math.min(l,s.length,v);break;case"11":k=0;break;case"22":var _=!1,C;for(C=0;C0?(E="v",d>0?k=Math.min(x,v):k=Math.min(v)):d>0?(E="h",k=Math.min(x)):k=0;if(!k){t.visible=!1;return}t._length=k;var M=r("orientation",E);t._hasPreCompStats?M==="v"&&d===0?(r("x0",0),r("dx",1)):M==="h"&&h===0&&(r("y0",0),r("dy",1)):M==="v"&&d===0?r("x0"):M==="h"&&h===0&&r("y0");var g=Oyt.getComponentMethod("calendars","handleTraceDefaults");g(e,t,["x","y"],n)}function r1e(e,t,r,n){var i=n.prefix,a=V0.coerce2(e,t,g4,"marker.outliercolor"),o=r("marker.line.outliercolor"),s="outliers";t._hasPreCompStats?s="all":(a||o)&&(s="suspectedoutliers");var l=r(i+"points",s);l?(r("jitter",l==="all"?.3:0),r("pointpos",l==="all"?-1.5:0),r("marker.symbol"),r("marker.opacity"),r("marker.size"),r("marker.angle"),r("marker.color",t.line.color),r("marker.line.color"),r("marker.line.width"),l==="suspectedoutliers"&&(r("marker.line.outliercolor",t.marker.color),r("marker.line.outlierwidth")),r("selected.marker.color"),r("unselected.marker.color"),r("selected.marker.size"),r("unselected.marker.size"),r("text"),r("hovertext")):delete t.marker;var u=r("hoveron");(u==="all"||u.indexOf("points")!==-1)&&r("hovertemplate"),V0.coerceSelectionMarkerOpacity(t,r)}function Hyt(e,t){var r,n;function i(l){return V0.coerce(n._input,n,g4,l)}for(var a=0;a{"use strict";var Gyt=ba(),jyt=Mr(),Wyt=p4();function n1e(e,t,r,n,i){for(var a=i+"Layout",o=!1,s=0;s{"use strict";var SV=uo(),HI=Qa(),Xyt=Rg(),$f=Mr(),i0=es().BADNUM,Fy=$f._;v1e.exports=function(t,r){var n=t._fullLayout,i=HI.getFromId(t,r.xaxis||"x"),a=HI.getFromId(t,r.yaxis||"y"),o=[],s=r.type==="violin"?"_numViolins":"_numBoxes",l,u,c,f,h,d,v;r.orientation==="h"?(c=i,f="x",h=a,d="y",v=!!r.yperiodalignment):(c=a,f="y",h=i,d="x",v=!!r.xperiodalignment);var x=Yyt(r,d,h,n[s]),b=x[0],p=x[1],E=$f.distinctVals(b,h),k=E.vals,A=E.minDiff/2,L,_,C,M,g,P,T=(r.boxpoints||r.points)==="all"?$f.identity:function(qt){return qt.vL.uf};if(r._hasPreCompStats){var F=r[f],q=function(qt){return c.d2c((r[qt]||[])[l])},V=1/0,H=-1/0;for(l=0;l=L.q1&&L.q3>=L.med){var G=q("lowerfence");L.lf=G!==i0&&G<=L.q1?G:u1e(L,C,M);var N=q("upperfence");L.uf=N!==i0&&N>=L.q3?N:c1e(L,C,M);var W=q("mean");L.mean=W!==i0?W:M?$f.mean(C,M):(L.q1+L.q3)/2;var re=q("sd");L.sd=W!==i0&&re>=0?re:M?$f.stdev(C,M,L.mean):L.q3-L.q1,L.lo=f1e(L),L.uo=h1e(L);var ae=q("notchspan");ae=ae!==i0&&ae>0?ae:d1e(L,M),L.ln=L.med-ae,L.un=L.med+ae;var _e=L.lf,Me=L.uf;r.boxpoints&&C.length&&(_e=Math.min(_e,C[0]),Me=Math.max(Me,C[M-1])),r.notched&&(_e=Math.min(_e,L.ln),Me=Math.max(Me,L.un)),L.min=_e,L.max=Me}else{$f.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+L.q1,"median = "+L.med,"q3 = "+L.q3].join(` +`));var ke;L.med!==i0?ke=L.med:L.q1!==i0?L.q3!==i0?ke=(L.q1+L.q3)/2:ke=L.q1:L.q3!==i0?ke=L.q3:ke=0,L.med=ke,L.q1=L.q3=ke,L.lf=L.uf=ke,L.mean=L.sd=ke,L.ln=L.un=ke,L.min=L.max=ke}V=Math.min(V,L.min),H=Math.max(H,L.max),L.pts2=_.filter(T),o.push(L)}}r._extremes[c._id]=HI.findExtremes(c,[V,H],{padded:!0})}else{var ge=c.makeCalcdata(r,f),ie=Kyt(k,A),Te=k.length,Ee=Jyt(Te);for(l=0;l=0&&Ae0){if(L={},L.pos=L[d]=k[l],_=L.pts=Ee[l].sort(s1e),C=L[f]=_.map(l1e),M=C.length,L.min=C[0],L.max=C[M-1],L.mean=$f.mean(C,M),L.sd=$f.stdev(C,M,L.mean)*r.sdmultiple,L.med=$f.interp(C,.5),M%2&&(Re||ce)){var Ge,nt;Re?(Ge=C.slice(0,M/2),nt=C.slice(M/2+1)):ce&&(Ge=C.slice(0,M/2+1),nt=C.slice(M/2)),L.q1=$f.interp(Ge,.5),L.q3=$f.interp(nt,.5)}else L.q1=$f.interp(C,.25),L.q3=$f.interp(C,.75);L.lf=u1e(L,C,M),L.uf=c1e(L,C,M),L.lo=f1e(L),L.uo=h1e(L);var ct=d1e(L,M);L.ln=L.med-ct,L.un=L.med+ct,ze=Math.min(ze,L.ln),Ce=Math.max(Ce,L.un),L.pts2=_.filter(T),o.push(L)}r.notched&&$f.isTypedArray(ge)&&(ge=Array.from(ge)),r._extremes[c._id]=HI.findExtremes(c,r.notched?ge.concat([ze,Ce]):ge,{padded:!0})}return $yt(o,r),o.length>0?(o[0].t={num:n[s],dPos:A,posLetter:d,valLetter:f,labels:{med:Fy(t,"median:"),min:Fy(t,"min:"),q1:Fy(t,"q1:"),q3:Fy(t,"q3:"),max:Fy(t,"max:"),mean:r.boxmean==="sd"||r.sizemode==="sd"?Fy(t,"mean \xB1 \u03C3:").replace("\u03C3",r.sdmultiple===1?"\u03C3":r.sdmultiple+"\u03C3"):Fy(t,"mean:"),lf:Fy(t,"lower fence:"),uf:Fy(t,"upper fence:")}},n[s]++,o):[{t:{empty:!0}}]};function Yyt(e,t,r,n){var i=t in e,a=t+"0"in e,o="d"+t in e;if(i||a&&o){var s=r.makeCalcdata(e,t),l=Xyt(e,r,t,s).vals;return[l,s]}var u;a?u=e[t+"0"]:"name"in e&&(r.type==="category"||SV(e.name)&&["linear","log"].indexOf(r.type)!==-1||$f.isDateTime(e.name)&&r.type==="date")?u=e.name:u=n;for(var c=r.type==="multicategory"?r.r2c_just_indices(u):r.d2c(u,0,e[t+"calendar"]),f=e._length,h=new Array(f),d=0;d{"use strict";var p1e=Qa(),Qyt=Mr(),e1t=Bb().getAxisGroup,g1e=["v","h"];function t1t(e,t){for(var r=e.calcdata,n=t.xaxis,i=t.yaxis,a=0;a1,E=1-a[e+"gap"],k=1-a[e+"groupgap"];for(l=0;l0;if(C==="positive"?(N=M*(_?1:.5),ae=re,W=ae=P):C==="negative"?(N=ae=P,W=M*(_?1:.5),_e=re):(N=W=M,ae=_e=re),Ee){var Ae=A.pointpos,ze=A.jitter,Ce=A.marker.size/2,me=0;Ae+ze>=0&&(me=re*(Ae+ze),me>N?(Te=!0,ge=Ce,Me=me):me>ae&&(ge=Ce,Me=N)),me<=N&&(Me=N);var Re=0;Ae-ze<=0&&(Re=-re*(Ae-ze),Re>W?(Te=!0,ie=Ce,ke=Re):Re>_e&&(ie=Ce,ke=W)),Re<=W&&(ke=W)}else Me=N,ke=W;var ce=new Array(c.length);for(u=0;u{"use strict";var MT=xa(),n2=Mr(),r1t=ao(),_1e=5,i1t=.01;function n1t(e,t,r,n){var i=e._context.staticPlot,a=t.xaxis,o=t.yaxis;n2.makeTraceGroups(n,r,"trace boxes").each(function(s){var l=MT.select(this),u=s[0],c=u.t,f=u.trace;if(c.wdPos=c.bdPos*f.whiskerwidth,f.visible!==!0||c.empty){l.remove();return}var h,d;f.orientation==="h"?(h=o,d=a):(h=a,d=o),x1e(l,{pos:h,val:d},f,c,i),b1e(l,{x:a,y:o},f,c),w1e(l,{pos:h,val:d},f,c)})}function x1e(e,t,r,n,i){var a=r.orientation==="h",o=t.val,s=t.pos,l=!!s.rangebreaks,u=n.bPos,c=n.wdPos||0,f=n.bPosPxOffset||0,h=r.whiskerwidth||0,d=r.showwhiskers!==!1,v=r.notched||!1,x=v?1-2*r.notchwidth:1,b,p;Array.isArray(n.bdPos)?(b=n.bdPos[0],p=n.bdPos[1]):(b=n.bdPos,p=n.bdPos);var E=e.selectAll("path.box").data(r.type!=="violin"||r.box.visible?n2.identity:[]);E.enter().append("path").style("vector-effect",i?"none":"non-scaling-stroke").attr("class","box"),E.exit().remove(),E.each(function(k){if(k.empty)return MT.select(this).attr("d","M0,0Z");var A=s.c2l(k.pos+u,!0),L=s.l2p(A-b)+f,_=s.l2p(A+p)+f,C=l?(L+_)/2:s.l2p(A)+f,M=r.whiskerwidth,g=l?L*M+(1-M)*C:s.l2p(A-c)+f,P=l?_*M+(1-M)*C:s.l2p(A+c)+f,T=s.l2p(A-b*x)+f,F=s.l2p(A+p*x)+f,q=r.sizemode==="sd",V=o.c2p(q?k.mean-k.sd:k.q1,!0),H=q?o.c2p(k.mean+k.sd,!0):o.c2p(k.q3,!0),X=n2.constrain(q?o.c2p(k.mean,!0):o.c2p(k.med,!0),Math.min(V,H)+1,Math.max(V,H)-1),G=k.lf===void 0||r.boxpoints===!1||q,N=o.c2p(G?k.min:k.lf,!0),W=o.c2p(G?k.max:k.uf,!0),re=o.c2p(k.ln,!0),ae=o.c2p(k.un,!0);a?MT.select(this).attr("d","M"+X+","+T+"V"+F+"M"+V+","+L+"V"+_+(v?"H"+re+"L"+X+","+F+"L"+ae+","+_:"")+"H"+H+"V"+L+(v?"H"+ae+"L"+X+","+T+"L"+re+","+L:"")+"Z"+(d?"M"+V+","+C+"H"+N+"M"+H+","+C+"H"+W+(h===0?"":"M"+N+","+g+"V"+P+"M"+W+","+g+"V"+P):"")):MT.select(this).attr("d","M"+T+","+X+"H"+F+"M"+L+","+V+"H"+_+(v?"V"+re+"L"+F+","+X+"L"+_+","+ae:"")+"V"+H+"H"+L+(v?"V"+ae+"L"+T+","+X+"L"+L+","+re:"")+"Z"+(d?"M"+C+","+V+"V"+N+"M"+C+","+H+"V"+W+(h===0?"":"M"+g+","+N+"H"+P+"M"+g+","+W+"H"+P):""))})}function b1e(e,t,r,n){var i=t.x,a=t.y,o=n.bdPos,s=n.bPos,l=r.boxpoints||r.points;n2.seedPseudoRandom();var u=function(h){return h.forEach(function(d){d.t=n,d.trace=r}),h},c=e.selectAll("g.points").data(l?u:[]);c.enter().append("g").attr("class","points"),c.exit().remove();var f=c.selectAll("path").data(function(h){var d,v=h.pts2,x=Math.max((h.max-h.min)/10,h.q3-h.q1),b=x*1e-9,p=x*i1t,E=[],k=0,A;if(r.jitter){if(x===0)for(k=1,E=new Array(v.length),d=0;dh.lo&&(P.so=!0)}return v});f.enter().append("path").classed("point",!0),f.exit().remove(),f.call(r1t.translatePoints,i,a)}function w1e(e,t,r,n){var i=t.val,a=t.pos,o=!!a.rangebreaks,s=n.bPos,l=n.bPosPxOffset||0,u=r.boxmean||(r.meanline||{}).visible,c,f;Array.isArray(n.bdPos)?(c=n.bdPos[0],f=n.bdPos[1]):(c=n.bdPos,f=n.bdPos);var h=e.selectAll("path.mean").data(r.type==="box"&&r.boxmean||r.type==="violin"&&r.box.visible&&r.meanline.visible?n2.identity:[]);h.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),h.exit().remove(),h.each(function(d){var v=a.c2l(d.pos+s,!0),x=a.l2p(v-c)+l,b=a.l2p(v+f)+l,p=o?(x+b)/2:a.l2p(v)+l,E=i.c2p(d.mean,!0),k=i.c2p(d.mean-d.sd,!0),A=i.c2p(d.mean+d.sd,!0);r.orientation==="h"?MT.select(this).attr("d","M"+E+","+x+"V"+b+(u==="sd"?"m0,0L"+k+","+p+"L"+E+","+x+"L"+A+","+p+"Z":"")):MT.select(this).attr("d","M"+x+","+E+"H"+b+(u==="sd"?"m0,0L"+p+","+k+"L"+x+","+E+"L"+p+","+A+"Z":""))})}T1e.exports={plot:n1t,plotBoxAndWhiskers:x1e,plotPoints:b1e,plotBoxMean:w1e}});var WI=ye((Gor,A1e)=>{"use strict";var EV=xa(),kV=va(),CV=ao();function a1t(e,t,r){var n=r||EV.select(e).selectAll("g.trace.boxes");n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=EV.select(this),o=i[0].trace,s=o.line.width;function l(f,h,d,v){f.style("stroke-width",h+"px").call(kV.stroke,d).call(kV.fill,v)}var u=a.selectAll("path.box");if(o.type==="candlestick")u.each(function(f){if(!f.empty){var h=EV.select(this),d=o[f.dir];l(h,d.line.width,d.line.color,d.fillcolor),h.style("opacity",o.selectedpoints&&!f.selected?.3:1)}});else{l(u,s,o.line.color,o.fillcolor),a.selectAll("path.mean").style({"stroke-width":s,"stroke-dasharray":2*s+"px,"+s+"px"}).call(kV.stroke,o.line.color);var c=a.selectAll("path.point");CV.pointStyle(c,o,e)}})}function o1t(e,t,r){var n=t[0].trace,i=r.selectAll("path.point");n.selectedpoints?CV.selectedPointStyle(i,n):CV.pointStyle(i,n,e)}A1e.exports={style:a1t,styleOnSelect:o1t}});var PV=ye((jor,k1e)=>{"use strict";var s1t=Qa(),LV=Mr(),S_=Nc(),S1e=va(),l1t=LV.fillText;function u1t(e,t,r,n){var i=e.cd,a=i[0].trace,o=a.hoveron,s=[],l;return o.indexOf("boxes")!==-1&&(s=s.concat(M1e(e,t,r,n))),o.indexOf("points")!==-1&&(l=E1e(e,t,r)),n==="closest"?l?[l]:s:(l&&s.push(l),s)}function M1e(e,t,r,n){var i=e.cd,a=e.xa,o=e.ya,s=i[0].trace,l=i[0].t,u=s.type==="violin",c,f,h,d,v,x,b,p,E,k,A,L=l.bdPos,_,C,M=l.wHover,g=function(Ce){return h.c2l(Ce.pos)+l.bPos-h.c2l(x)};u&&s.side!=="both"?(s.side==="positive"&&(E=function(Ce){var me=g(Ce);return S_.inbox(me,me+M,k)},_=L,C=0),s.side==="negative"&&(E=function(Ce){var me=g(Ce);return S_.inbox(me-M,me,k)},_=0,C=L)):(E=function(Ce){var me=g(Ce);return S_.inbox(me-M,me+M,k)},_=C=L);var P;u?P=function(Ce){return S_.inbox(Ce.span[0]-v,Ce.span[1]-v,k)}:P=function(Ce){return S_.inbox(Ce.min-v,Ce.max-v,k)},s.orientation==="h"?(v=t,x=r,b=P,p=E,c="y",h=o,f="x",d=a):(v=r,x=t,b=E,p=P,c="x",h=a,f="y",d=o);var T=Math.min(1,L/Math.abs(h.r2c(h.range[1])-h.r2c(h.range[0])));k=e.maxHoverDistance-T,A=e.maxSpikeDistance-T;function F(Ce){return(b(Ce)+p(Ce))/2}var q=S_.getDistanceFunction(n,b,p,F);if(S_.getClosest(i,q,e),e.index===!1)return[];var V=i[e.index],H=s.line.color,X=(s.marker||{}).color;S1e.opacity(H)&&s.line.width?e.color=H:S1e.opacity(X)&&s.boxpoints?e.color=X:e.color=s.fillcolor,e[c+"0"]=h.c2p(V.pos+l.bPos-C,!0),e[c+"1"]=h.c2p(V.pos+l.bPos+_,!0),e[c+"LabelVal"]=V.orig_p!==void 0?V.orig_p:V.pos;var G=c+"Spike";e.spikeDistance=F(V)*A/k,e[G]=h.c2p(V.pos,!0);var N=s.boxmean||s.sizemode==="sd"||(s.meanline||{}).visible,W=s.boxpoints||s.points,re=W&&N?["max","uf","q3","med","mean","q1","lf","min"]:W&&!N?["max","uf","q3","med","q1","lf","min"]:!W&&N?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],ae=d.range[1]{"use strict";C1e.exports=function(t,r){return r.hoverOnBox&&(t.hoverOnBox=r.hoverOnBox),"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var IV=ye((Zor,P1e)=>{"use strict";P1e.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l;if(r===!1)for(s=0;s{"use strict";I1e.exports={attributes:v4(),layoutAttributes:p4(),supplyDefaults:m4().supplyDefaults,crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:VI().supplyLayoutDefaults,calc:MV(),crossTraceCalc:GI().crossTraceCalc,plot:jI().plot,style:WI().style,styleOnSelect:WI().styleOnSelect,hoverPoints:PV().hoverPoints,eventData:L1e(),selectPoints:IV(),moduleType:"trace",name:"box",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","boxLayout","zoomScale"],meta:{}}});var z1e=ye((Yor,D1e)=>{"use strict";D1e.exports=R1e()});var ET=ye((Kor,F1e)=>{"use strict";var n0=Uc(),c1t=vl(),f1t=Su(),RV=Oc().axisHoverFormat,h1t=Wo().hovertemplateAttrs,d1t=Wo().texttemplateAttrs,v1t=Jl(),Pp=no().extendFlat;F1e.exports=Pp({z:{valType:"data_array",editType:"calc"},x:Pp({},n0.x,{impliedEdits:{xtype:"array"}}),x0:Pp({},n0.x0,{impliedEdits:{xtype:"scaled"}}),dx:Pp({},n0.dx,{impliedEdits:{xtype:"scaled"}}),y:Pp({},n0.y,{impliedEdits:{ytype:"array"}}),y0:Pp({},n0.y0,{impliedEdits:{ytype:"scaled"}}),dy:Pp({},n0.dy,{impliedEdits:{ytype:"scaled"}}),xperiod:Pp({},n0.xperiod,{impliedEdits:{xtype:"scaled"}}),yperiod:Pp({},n0.yperiod,{impliedEdits:{ytype:"scaled"}}),xperiod0:Pp({},n0.xperiod0,{impliedEdits:{xtype:"scaled"}}),yperiod0:Pp({},n0.yperiod0,{impliedEdits:{ytype:"scaled"}}),xperiodalignment:Pp({},n0.xperiodalignment,{impliedEdits:{xtype:"scaled"}}),yperiodalignment:Pp({},n0.yperiodalignment,{impliedEdits:{ytype:"scaled"}}),text:{valType:"data_array",editType:"calc"},hovertext:{valType:"data_array",editType:"calc"},transpose:{valType:"boolean",dflt:!1,editType:"calc"},xtype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},ytype:{valType:"enumerated",values:["array","scaled"],editType:"calc+clearAxisTypes"},zsmooth:{valType:"enumerated",values:["fast","best",!1],dflt:!1,editType:"calc"},hoverongaps:{valType:"boolean",dflt:!0,editType:"none"},connectgaps:{valType:"boolean",editType:"calc"},xgap:{valType:"number",dflt:0,min:0,editType:"plot"},ygap:{valType:"number",dflt:0,min:0,editType:"plot"},xhoverformat:RV("x"),yhoverformat:RV("y"),zhoverformat:RV("z",1),hovertemplate:h1t(),texttemplate:d1t({arrayOk:!1,editType:"plot"},{keys:["x","y","z","text"]}),textfont:f1t({editType:"plot",autoSize:!0,autoColor:!0,colorEditType:"style"}),showlegend:Pp({},c1t.showlegend,{dflt:!1}),zorder:n0.zorder},v1t("",{cLetter:"z",autoColorDflt:!1}))});var XI=ye((Jor,O1e)=>{"use strict";var p1t=uo(),ZI=Mr(),g1t=ba();O1e.exports=function(t,r,n,i,a,o){var s=n("z");a=a||"x",o=o||"y";var l,u;if(s===void 0||!s.length)return 0;if(ZI.isArray1D(s)){l=n(a),u=n(o);var c=ZI.minRowLength(l),f=ZI.minRowLength(u);if(c===0||f===0)return 0;r._length=Math.min(c,f,s.length)}else{if(l=q1e(a,n),u=q1e(o,n),!m1t(s))return 0;n("transpose"),r._length=null}var h=g1t.getComponentMethod("calendars","handleTraceDefaults");return h(t,r,[a,o],i),!0};function q1e(e,t){var r=t(e),n=r?t(e+"type","array"):"scaled";return n==="scaled"&&(t(e+"0"),t("d"+e)),r}function m1t(e){for(var t=!0,r=!1,n=!1,i,a=0;a0&&(r=!0);for(var o=0;o{"use strict";var B1e=Mr();N1e.exports=function(t,r){t("texttemplate");var n=B1e.extendFlat({},r.font,{color:"auto",size:"auto"});B1e.coerceFont(t,"textfont",n)}});var DV=ye((Qor,U1e)=>{"use strict";U1e.exports=function(t,r,n){var i=n("zsmooth");i===!1&&(n("xgap"),n("ygap")),n("zhoverformat")}});var G1e=ye((esr,H1e)=>{"use strict";var V1e=Mr(),y1t=XI(),_1t=y4(),x1t=Pg(),b1t=DV(),w1t=Uh(),T1t=ET();H1e.exports=function(t,r,n,i){function a(s,l){return V1e.coerce(t,r,T1t,s,l)}var o=y1t(t,r,a,i);if(!o){r.visible=!1;return}x1t(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hovertemplate"),_1t(a,i),b1t(t,r,a,i),a("hoverongaps"),a("connectgaps",V1e.isArray1D(r.z)&&r.zsmooth!==!1),w1t(t,r,i,a,{prefix:"",cLetter:"z"}),a("zorder")}});var zV=ye((tsr,j1e)=>{"use strict";var kT=uo();j1e.exports={count:function(e,t,r){return r[e]++,1},sum:function(e,t,r,n){var i=n[t];return kT(i)?(i=Number(i),r[e]+=i,i):0},avg:function(e,t,r,n,i){var a=n[t];return kT(a)&&(a=Number(a),r[e]+=a,i[e]++),0},min:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]>i){var a=i-r[e];return r[e]=i,a}}else return r[e]=i,i;return 0},max:function(e,t,r,n){var i=n[t];if(kT(i))if(i=Number(i),kT(r[e])){if(r[e]{"use strict";W1e.exports={percent:function(e,t){for(var r=e.length,n=100/t,i=0;i{"use strict";Z1e.exports=function(t,r){for(var n=t.length,i=0,a=0;a{"use strict";var CT=es(),a2=CT.ONEAVGYEAR,X1e=CT.ONEAVGMONTH,KI=CT.ONEDAY,Y1e=CT.ONEHOUR,K1e=CT.ONEMIN,J1e=CT.ONESEC,$1e=Qa().tickIncrement;t_e.exports=function(t,r,n,i,a){var o=-1.1*r,s=-.1*r,l=t-s,u=n[0],c=n[1],f=Math.min(YI(u+s,u+l,i,a),YI(c+s,c+l,i,a)),h=Math.min(YI(u+o,u+s,i,a),YI(c+o,c+s,i,a)),d,v;if(f>h&&hKI){var x=d===a2?1:6,b=d===a2?"M12":"M1";return function(p,E){var k=i.c2d(p,a2,a),A=k.indexOf("-",x);A>0&&(k=k.substr(0,A));var L=i.d2c(k,0,a);if(LJ1e?e>KI?e>a2*1.1?a2:e>X1e*1.1?X1e:KI:e>Y1e?Y1e:e>K1e?K1e:J1e:Math.pow(10,Math.floor(Math.log(e)/Math.LN10))}function A1t(e,t,r,n,i,a){if(n&&e>KI){var o=e_e(t,i,a),s=e_e(r,i,a),l=e===a2?0:1;return o[l]!==s[l]}return Math.floor(r/e)-Math.floor(t/e)>.1}function e_e(e,t,r){var n=t.c2d(e,a2,r).split("-");return n[0]===""&&(n.unshift(),n[0]="-"+n[0]),n}});var UV=ye((asr,n_e)=>{"use strict";var BV=uo(),Vv=Mr(),r_e=ba(),H0=Qa(),S1t=c4(),i_e=zV(),M1t=FV(),E1t=qV(),k1t=OV();function C1t(e,t){var r=[],n=[],i=t.orientation==="h",a=H0.getFromId(e,i?t.yaxis:t.xaxis),o=i?"y":"x",s={x:"y",y:"x"}[o],l=t[o+"calendar"],u=t.cumulative,c,f=NV(e,t,a,o),h=f[0],d=f[1],v=typeof h.size=="string",x=[],b=v?x:h,p=[],E=[],k=[],A=0,L=t.histnorm,_=t.histfunc,C=L.indexOf("density")!==-1,M,g,P;u.enabled&&C&&(L=L.replace(/ ?density$/,""),C=!1);var T=_==="max"||_==="min",F=T?null:0,q=i_e.count,V=M1t[L],H=!1,X=function(me){return a.r2c(me,0,l)},G;for(Vv.isArrayOrTypedArray(t[s])&&_!=="count"&&(G=t[s],H=_==="avg",q=i_e[_]),c=X(h.start),g=X(h.end)+(c-H0.tickIncrement(c,h.size,!1,l))/1e6;c=0&&P=Ae;c--)if(n[c]){ze=c;break}for(c=Ae;c<=ze;c++)if(BV(r[c])&&BV(n[c])){var Ce={p:r[c],s:n[c],b:0};u.enabled||(Ce.pts=k[c],ae?Ce.ph0=Ce.ph1=k[c].length?d[k[c][0]]:r[c]:(t._computePh=!0,Ce.ph0=ie(x[c]),Ce.ph1=ie(x[c+1],!0))),Ee.push(Ce)}return Ee.length===1&&(Ee[0].width1=H0.tickIncrement(Ee[0].p,h.size,!1,l)-Ee[0].p),S1t(Ee,t),Vv.isArrayOrTypedArray(t.selectedpoints)&&Vv.tagSelected(Ee,t,ke),Ee}function NV(e,t,r,n,i){var a=n+"bins",o=e._fullLayout,s=t["_"+n+"bingroup"],l=o._histogramBinOpts[s],u=o.barmode==="overlay",c,f,h,d,v,x,b,p=function(ge){return r.r2c(ge,0,d)},E=function(ge){return r.c2r(ge,0,d)},k=r.type==="date"?function(ge){return ge||ge===0?Vv.cleanDate(ge,null,d):null}:function(ge){return BV(ge)?Number(ge):null};function A(ge,ie,Te){ie[ge+"Found"]?(ie[ge]=k(ie[ge]),ie[ge]===null&&(ie[ge]=Te[ge])):(x[ge]=ie[ge]=Te[ge],Vv.nestedProperty(f[0],a+"."+ge).set(Te[ge]))}if(t["_"+n+"autoBinFinished"])delete t["_"+n+"autoBinFinished"];else{f=l.traces;var L=[],_=!0,C=!1,M=!1;for(c=0;cr.r2l(G)&&(W=H0.tickIncrement(W,l.size,!0,d)),q.start=r.l2r(W),X||Vv.nestedProperty(t,a+".start").set(q.start)}var re=l.end,ae=r.r2l(F.end),_e=ae!==void 0;if((l.endFound||_e)&&ae!==r.r2l(re)){var Me=_e?ae:Vv.aggNums(Math.max,null,v);q.end=r.l2r(Me),_e||Vv.nestedProperty(t,a+".start").set(q.end)}var ke="autobin"+n;return t._input[ke]===!1&&(t._input[a]=Vv.extendFlat({},t[a]||{}),delete t._input[ke],delete t[ke]),[q,v]}function L1t(e,t,r,n,i){var a=e._fullLayout,o=P1t(e,t),s=!1,l=1/0,u=[t],c,f,h;for(c=0;c=0;n--)s(n);else if(t==="increasing"){for(n=1;n=0;n--)e[n]+=e[n+1];r==="exclude"&&(e.push(0),e.shift())}}n_e.exports={calc:C1t,calcAllAutoBins:NV}});var h_e=ye((osr,f_e)=>{"use strict";var a_e=Mr(),LT=Qa(),o_e=zV(),R1t=FV(),D1t=qV(),z1t=OV(),s_e=UV().calcAllAutoBins;f_e.exports=function(t,r){var n=LT.getFromId(t,r.xaxis),i=LT.getFromId(t,r.yaxis),a=r.xcalendar,o=r.ycalendar,s=function(Et){return n.r2c(Et,0,a)},l=function(Et){return i.r2c(Et,0,o)},u=function(Et){return n.c2r(Et,0,a)},c=function(Et){return i.c2r(Et,0,o)},f,h,d,v,x=s_e(t,r,n,"x"),b=x[0],p=x[1],E=s_e(t,r,i,"y"),k=E[0],A=E[1],L=r._length;p.length>L&&p.splice(L,p.length-L),A.length>L&&A.splice(L,A.length-L);var _=[],C=[],M=[],g=typeof b.size=="string",P=typeof k.size=="string",T=[],F=[],q=g?T:b,V=P?F:k,H=0,X=[],G=[],N=r.histnorm,W=r.histfunc,re=N.indexOf("density")!==-1,ae=W==="max"||W==="min",_e=ae?null:0,Me=o_e.count,ke=R1t[N],ge=!1,ie=[],Te=[],Ee="z"in r?r.z:"marker"in r&&Array.isArray(r.marker.color)?r.marker.color:"";Ee&&W!=="count"&&(ge=W==="avg",Me=o_e[W]);var Ae=b.size,ze=s(b.start),Ce=s(b.end)+(ze-LT.tickIncrement(ze,Ae,!1,a))/1e6;for(f=ze;f=0&&d=0&&v{"use strict";var Im=Mr(),d_e=es().BADNUM,v_e=Rg();p_e.exports=function(t,r,n,i,a,o){var s=t._length,l=r.makeCalcdata(t,i),u=n.makeCalcdata(t,a);l=v_e(t,r,i,l).vals,u=v_e(t,n,a,u).vals;var c=t.text,f=c!==void 0&&Im.isArray1D(c),h=t.hovertext,d=h!==void 0&&Im.isArray1D(h),v,x,b=Im.distinctVals(l),p=b.vals,E=Im.distinctVals(u),k=E.vals,A=[],L,_,C=k.length,M=p.length;for(v=0;v{"use strict";var F1t=uo(),q1t=Mr(),$I=es().BADNUM;g_e.exports=function(t,r,n,i){var a,o,s,l,u,c;function f(p){if(F1t(p))return+p}if(r&&r.transpose){for(a=0,u=0;u{"use strict";var O1t=Mr(),m_e=.01,B1t=[[-1,0],[1,0],[0,-1],[0,1]];function N1t(e){return .5-.25*Math.min(1,e*.5)}__e.exports=function(t,r){var n=1,i;for(y_e(t,r),i=0;im_e;i++)n=y_e(t,r,N1t(n));return n>m_e&&O1t.log("interp2d didn't converge quickly",n),t};function y_e(e,t,r){var n=0,i,a,o,s,l,u,c,f,h,d,v,x,b;for(s=0;sx&&(n=Math.max(n,Math.abs(e[a][o]-v)/(b-x))))}return n}});var t8=ye((csr,x_e)=>{"use strict";var U1t=Mr().maxRowLength;x_e.exports=function(t){var r=[],n={},i=[],a=t[0],o=[],s=[0,0,0],l=U1t(t),u,c,f,h,d,v,x,b;for(c=0;c=0;d--)h=i[d],c=h[0],f=h[1],v=((n[[c-1,f]]||s)[2]+(n[[c+1,f]]||s)[2]+(n[[c,f-1]]||s)[2]+(n[[c,f+1]]||s)[2])/20,v&&(x[h]=[c,f,v],i.splice(d,1),b=!0);if(!b)throw"findEmpties iterated with no new neighbors";for(h in x)n[h]=x[h],r.push(x[h])}return r.sort(function(p,E){return E[2]-p[2]})}});var VV=ye((fsr,T_e)=>{"use strict";var b_e=ba(),w_e=Mr().isArrayOrTypedArray;T_e.exports=function(t,r,n,i,a,o){var s=[],l=b_e.traceIs(t,"contour"),u=b_e.traceIs(t,"histogram"),c,f,h,d=w_e(r)&&r.length>1;if(d&&!u&&o.type!=="category"){var v=r.length;if(v<=a){if(l)s=Array.from(r).slice(0,a);else if(a===1)o.type==="log"?s=[.5*r[0],2*r[0]]:s=[r[0]-.5,r[0]+.5];else if(o.type==="log"){for(s=[Math.pow(r[0],1.5)/Math.pow(r[1],.5)],h=1;h{"use strict";var A_e=ba(),HV=Mr(),r8=Qa(),S_e=Rg(),V1t=h_e(),H1t=zv(),G1t=JI(),j1t=QI(),W1t=e8(),Z1t=t8(),i8=VV(),GV=es().BADNUM;E_e.exports=function(t,r){var n=r8.getFromId(t,r.xaxis||"x"),i=r8.getFromId(t,r.yaxis||"y"),a=A_e.traceIs(r,"contour"),o=A_e.traceIs(r,"histogram"),s=a?"best":r.zsmooth,l,u,c,f,h,d,v,x,b,p,E;if(n._minDtick=0,i._minDtick=0,o)E=V1t(t,r),f=E.orig_x,l=E.x,u=E.x0,c=E.dx,x=E.orig_y,h=E.y,d=E.y0,v=E.dy,b=E.z;else{var k=r.z;HV.isArray1D(k)?(G1t(r,n,i,"x","y",["z"]),l=r._x,h=r._y,k=r._z):(f=r.x?n.makeCalcdata(r,"x"):[],x=r.y?i.makeCalcdata(r,"y"):[],l=S_e(r,n,"x",f).vals,h=S_e(r,i,"y",x).vals,r._x=l,r._y=h),u=r.x0,c=r.dx,d=r.y0,v=r.dy,b=j1t(k,r,n,i)}(n.rangebreaks||i.rangebreaks)&&(b=X1t(l,h,b),o||(l=M_e(l),h=M_e(h),r._x=l,r._y=h)),!o&&(a||r.connectgaps)&&(r._emptypoints=Z1t(b),W1t(b,r._emptypoints));function A(q){s=r._input.zsmooth=r.zsmooth=!1,HV.warn('cannot use zsmooth: "fast": '+q)}function L(q){if(q.length>1){var V=(q[q.length-1]-q[0])/(q.length-1),H=Math.abs(V/100);for(p=0;pH)return!1}return!0}r._islinear=!1,n.type==="log"||i.type==="log"?s==="fast"&&A("log axis found"):L(l)?L(h)?r._islinear=!0:s==="fast"&&A("y scale is not linear"):s==="fast"&&A("x scale is not linear");var _=HV.maxRowLength(b),C=r.xtype==="scaled"?"":l,M=i8(r,C,u,c,_,n),g=r.ytype==="scaled"?"":h,P=i8(r,g,d,v,b.length,i);r._extremes[n._id]=r8.findExtremes(n,M),r._extremes[i._id]=r8.findExtremes(i,P);var T={x:M,y:P,z:b,text:r._text||r.text,hovertext:r._hovertext||r.hovertext};if(r.xperiodalignment&&f&&(T.orig_x=f),r.yperiodalignment&&x&&(T.orig_y=x),C&&C.length===M.length-1&&(T.xCenter=C),g&&g.length===P.length-1&&(T.yCenter=g),o&&(T.xRanges=E.xRanges,T.yRanges=E.yRanges,T.pts=E.pts),a||H1t(t,r,{vals:b,cLetter:"z"}),a&&r.contours&&r.contours.coloring==="heatmap"){var F={type:r.type==="contour"?"heatmap":"histogram2d",xcalendar:r.xcalendar,ycalendar:r.ycalendar};T.xfill=i8(F,C,u,c,_,n),T.yfill=i8(F,g,d,v,b.length,i)}return[T]};function M_e(e){for(var t=[],r=e.length,n=0;n{"use strict";a8.CSS_DECLARATIONS=[["image-rendering","optimizeSpeed"],["image-rendering","-moz-crisp-edges"],["image-rendering","-o-crisp-edges"],["image-rendering","-webkit-optimize-contrast"],["image-rendering","optimize-contrast"],["image-rendering","crisp-edges"],["image-rendering","pixelated"]];a8.STYLE=a8.CSS_DECLARATIONS.map(function(e){return e.join(": ")+"; "}).join("")});var jV=ye((vsr,L_e)=>{"use strict";var k_e=o8(),Y1t=ao(),C_e=Mr(),PT=null;function K1t(){if(PT!==null)return PT;PT=!1;var e=C_e.isSafari()||C_e.isIOS();if(window.navigator.userAgent&&!e){var t=Array.from(k_e.CSS_DECLARATIONS).reverse(),r=window.CSS&&window.CSS.supports||window.supportsCSS;if(typeof r=="function")PT=t.some(function(o){return r.apply(null,o)});else{var n=Y1t.tester.append("image").attr("style",k_e.STYLE),i=window.getComputedStyle(n.node()),a=i.imageRendering;PT=t.some(function(o){var s=o[1];return a===s||a===s.toLowerCase()}),n.remove()}}return PT}L_e.exports=K1t});var s8=ye((psr,B_e)=>{"use strict";var P_e=xa(),J1t=id(),$1t=ba(),Q1t=ao(),e_t=Qa(),G0=Mr(),I_e=Pl(),t_t=$P(),r_t=va(),i_t=Mu().extractOpts,n_t=Mu().makeColorScaleFuncFromTrace,a_t=Zp(),o_t=Nh(),WV=o_t.LINE_SPACING,s_t=jV(),l_t=o8().STYLE,q_e="heatmap-label";function O_e(e){return e.selectAll("g."+q_e)}function R_e(e){O_e(e).remove()}B_e.exports=function(e,t,r,n){var i=t.xaxis,a=t.yaxis;G0.makeTraceGroups(n,r,"hm").each(function(o){var s=P_e.select(this),l=o[0],u=l.trace,c=u.xgap||0,f=u.ygap||0,h=l.z,d=l.x,v=l.y,x=l.xCenter,b=l.yCenter,p=$1t.traceIs(u,"contour"),E=p?"best":u.zsmooth,k=h.length,A=G0.maxRowLength(h),L=!1,_=!1,C,M,g,P,T,F,q,V;for(F=0;C===void 0&&F0;)M=i.c2p(d[F]),F--;for(M0;)T=a.c2p(v[F]),F--;T=i._length||M<=0||P>=a._length||T<=0;if(W){var re=s.selectAll("image").data([]);re.exit().remove(),R_e(s);return}var ae,_e;H==="fast"?(ae=A,_e=k):(ae=G,_e=N);var Me=document.createElement("canvas");Me.width=ae,Me.height=_e;var ke=Me.getContext("2d",{willReadFrequently:!0}),ge=n_t(u,{noNumericCheck:!0,returnArray:!0}),ie,Te;H==="fast"?(ie=L?function(Pi){return A-1-Pi}:G0.identity,Te=_?function(Pi){return k-1-Pi}:G0.identity):(ie=function(Pi){return G0.constrain(Math.round(i.c2p(d[Pi])-C),0,G)},Te=function(Pi){return G0.constrain(Math.round(a.c2p(v[Pi])-P),0,N)});var Ee=Te(0),Ae=[Ee,Ee],ze=L?0:1,Ce=_?0:1,me=0,Re=0,ce=0,Ge=0,nt,ct,qt,rt,ot;function Rt(Pi,Gi){if(Pi!==void 0){var Ki=ge(Pi);return Ki[0]=Math.round(Ki[0]),Ki[1]=Math.round(Ki[1]),Ki[2]=Math.round(Ki[2]),me+=Gi,Re+=Ki[0]*Gi,ce+=Ki[1]*Gi,Ge+=Ki[2]*Gi,Ki}return[0,0,0,0]}function kt(Pi,Gi,Ki,ka){var jn=Pi[Ki.bin0];if(jn===void 0)return Rt(void 0,1);var la=Pi[Ki.bin1],Fa=Gi[Ki.bin0],Ra=Gi[Ki.bin1],jo=la-jn||0,oa=Fa-jn||0,Sn;return la===void 0?Ra===void 0?Sn=0:Fa===void 0?Sn=2*(Ra-jn):Sn=(2*Ra-Fa-jn)*2/3:Ra===void 0?Fa===void 0?Sn=0:Sn=(2*jn-la-Fa)*2/3:Fa===void 0?Sn=(2*Ra-la-jn)*2/3:Sn=Ra+jn-la-Fa,Rt(jn+Ki.frac*jo+ka.frac*(oa+Ki.frac*Sn))}if(H!=="default"){var Ct=0,Yt;try{Yt=new Uint8Array(ae*_e*4)}catch(Pi){Yt=new Array(ae*_e*4)}if(H==="smooth"){var xr=x||d,er=b||v,Ke=new Array(xr.length),xt=new Array(er.length),bt=new Array(G),Lt=x?z_e:D_e,St=b?z_e:D_e,Et,dt,Ht;for(F=0;Far||ar>a._length))for(q=Se;qai||ai>i._length)){var jr=t_t({x:Qr,y:Vt},u,e._fullLayout);jr.x=Qr,jr.y=Vt;var ri=l.z[F][q];ri===void 0?(jr.z="",jr.zLabel=""):(jr.z=ri,jr.zLabel=e_t.tickText(Ve,ri,"hover").text);var bi=l.text&&l.text[F]&&l.text[F][q];(bi===void 0||bi===!1)&&(bi=""),jr.text=bi;var nn=G0.texttemplateString(Ne,jr,e._fullLayout._d3locale,jr,u._meta||{});if(nn){var Wi=nn.split("
"),Ni=Wi.length,_n=0;for(V=0;V{"use strict";N_e.exports={min:"zmin",max:"zmax"}});var l8=ye((msr,U_e)=>{"use strict";var u_t=xa();U_e.exports=function(t){u_t.select(t).selectAll(".hm image").style("opacity",function(r){return r.trace.opacity})}});var c8=ye((ysr,H_e)=>{"use strict";var V_e=Nc(),_4=Mr(),u8=_4.isArrayOrTypedArray,c_t=Qa(),f_t=Mu().extractOpts;H_e.exports=function(t,r,n,i,a){a||(a={});var o=a.isContour,s=t.cd[0],l=s.trace,u=t.xa,c=t.ya,f=s.x,h=s.y,d=s.z,v=s.xCenter,x=s.yCenter,b=s.zmask,p=l.zhoverformat,E=f,k=h,A,L,_,C;if(t.index!==!1){try{_=Math.round(t.index[1]),C=Math.round(t.index[0])}catch(re){_4.error("Error hovering on heatmap, pointNumber must be [row,col], found:",t.index);return}if(_<0||_>=d[0].length||C<0||C>d.length)return}else{if(V_e.inbox(r-f[0],r-f[f.length-1],0)>0||V_e.inbox(n-h[0],n-h[h.length-1],0)>0)return;if(o){var M;for(E=[2*f[0]-f[1]],M=1;M{"use strict";G_e.exports={attributes:ET(),supplyDefaults:G1e(),calc:n8(),plot:s8(),colorbar:M_(),style:l8(),hoverPoints:c8(),moduleType:"trace",name:"heatmap",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","showLegend"],meta:{}}});var Z_e=ye((xsr,W_e)=>{"use strict";W_e.exports=j_e()});var ZV=ye((bsr,X_e)=>{"use strict";X_e.exports=function(t,r){return{start:{valType:"any",editType:"calc"},end:{valType:"any",editType:"calc"},size:{valType:"any",editType:"calc"},editType:"calc"}}});var K_e=ye((wsr,Y_e)=>{"use strict";Y_e.exports={eventDataKeys:["binNumber"]}});var f8=ye((Tsr,Q_e)=>{"use strict";var Ip=Lm(),J_e=Oc().axisHoverFormat,h_t=Wo().hovertemplateAttrs,d_t=Wo().texttemplateAttrs,XV=Su(),$_e=ZV(),v_t=K_e(),YV=no().extendFlat;Q_e.exports={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},xhoverformat:J_e("x"),yhoverformat:J_e("y"),text:YV({},Ip.text,{}),hovertext:YV({},Ip.hovertext,{}),orientation:Ip.orientation,histfunc:{valType:"enumerated",values:["count","sum","avg","min","max"],dflt:"count",editType:"calc"},histnorm:{valType:"enumerated",values:["","percent","probability","density","probability density"],dflt:"",editType:"calc"},cumulative:{enabled:{valType:"boolean",dflt:!1,editType:"calc"},direction:{valType:"enumerated",values:["increasing","decreasing"],dflt:"increasing",editType:"calc"},currentbin:{valType:"enumerated",values:["include","exclude","half"],dflt:"include",editType:"calc"},editType:"calc"},nbinsx:{valType:"integer",min:0,dflt:0,editType:"calc"},xbins:$_e("x",!0),nbinsy:{valType:"integer",min:0,dflt:0,editType:"calc"},ybins:$_e("y",!0),autobinx:{valType:"boolean",dflt:null,editType:"calc"},autobiny:{valType:"boolean",dflt:null,editType:"calc"},bingroup:{valType:"string",dflt:"",editType:"calc"},hovertemplate:h_t({},{keys:v_t.eventDataKeys}),texttemplate:d_t({arrayOk:!1,editType:"plot"},{keys:["label","value"]}),textposition:YV({},Ip.textposition,{arrayOk:!1}),textfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),outsidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextfont:XV({arrayOk:!1,editType:"plot",colorEditType:"style"}),insidetextanchor:Ip.insidetextanchor,textangle:Ip.textangle,cliponaxis:Ip.cliponaxis,constraintext:Ip.constraintext,marker:Ip.marker,offsetgroup:Ip.offsetgroup,alignmentgroup:Ip.alignmentgroup,selected:Ip.selected,unselected:Ip.unselected,zorder:Ip.zorder}});var ixe=ye((Asr,rxe)=>{"use strict";var exe=ba(),x4=Mr(),txe=va(),p_t=r0().handleText,g_t=FI(),m_t=f8();rxe.exports=function(t,r,n,i){function a(E,k){return x4.coerce(t,r,m_t,E,k)}var o=a("x"),s=a("y"),l=a("cumulative.enabled");l&&(a("cumulative.direction"),a("cumulative.currentbin")),a("text");var u=a("textposition");p_t(t,r,i,a,u,{moduleHasSelected:!0,moduleHasUnselected:!0,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat");var c=a("orientation",s&&!o?"h":"v"),f=c==="v"?"x":"y",h=c==="v"?"y":"x",d=o&&s?Math.min(x4.minRowLength(o)&&x4.minRowLength(s)):x4.minRowLength(r[f]||[]);if(!d){r.visible=!1;return}r._length=d;var v=exe.getComponentMethod("calendars","handleTraceDefaults");v(t,r,["x","y"],i);var x=r[h];x&&a("histfunc"),a("histnorm"),a("autobin"+f),g_t(t,r,a,n,i),x4.coerceSelectionMarkerOpacity(r,a);var b=(r.marker.line||{}).color,p=exe.getComponentMethod("errorbars","supplyDefaults");p(t,r,b||txe.defaultLine,{axis:"y"}),p(t,r,b||txe.defaultLine,{axis:"x",inherit:"y"}),a("zorder")}});var d8=ye((Ssr,oxe)=>{"use strict";var b4=Mr(),y_t=af(),h8=ba().traceIs,__t=Hb(),x_t=r0().validateCornerradius,nxe=b4.nestedProperty,KV=Bb().getAxisGroup,axe=[{aStr:{x:"xbins.start",y:"ybins.start"},name:"start"},{aStr:{x:"xbins.end",y:"ybins.end"},name:"end"},{aStr:{x:"xbins.size",y:"ybins.size"},name:"size"},{aStr:{x:"nbinsx",y:"nbinsy"},name:"nbins"}],b_t=["x","y"];oxe.exports=function(t,r){var n=r._histogramBinOpts={},i=[],a={},o=[],s,l,u,c,f,h,d;function v(H,X){return b4.coerce(s._input,s,s._module.attributes,H,X)}function x(H){return H.orientation==="v"?"x":"y"}function b(H,X){var G=y_t.getFromTrace({_fullLayout:r},H,X);return G.type}function p(H,X,G){var N=H.uid+"__"+G;X||(X=N);var W=b(H,G),re=H[G+"calendar"]||"",ae=n[X],_e=!0;ae&&(W===ae.axType&&re===ae.calendar?(_e=!1,ae.traces.push(H),ae.dirs.push(G)):(X=N,W!==ae.axType&&b4.warn(["Attempted to group the bins of trace",H.index,"set on a","type:"+W,"axis","with bins on","type:"+ae.axType,"axis."].join(" ")),re!==ae.calendar&&b4.warn(["Attempted to group the bins of trace",H.index,"set with a",re,"calendar","with bins",ae.calendar?"on a "+ae.calendar+" calendar":"w/o a set calendar"].join(" ")))),_e&&(n[X]={traces:[H],dirs:[G],axType:W,calendar:H[G+"calendar"]||""}),H["_"+G+"bingroup"]=X}for(f=0;f{"use strict";var w_t=TT().hoverPoints,T_t=Qa().hoverLabelText;sxe.exports=function(t,r,n,i,a){var o=w_t(t,r,n,i,a);if(o){t=o[0];var s=t.cd[t.index],l=t.cd[0].trace;if(!l.cumulative.enabled){var u=l.orientation==="h"?"y":"x";t[u+"Label"]=T_t(t[u+"a"],[s.ph0,s.ph1],l[u+"hoverformat"])}return o}}});var JV=ye((Esr,uxe)=>{"use strict";uxe.exports=function(t,r,n,i,a){if(t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"zLabelVal"in r&&(t.z=r.zLabelVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),!(n.cumulative||{}).enabled){var o=Array.isArray(a)?i[0].pts[a[0]][a[1]]:i[a].pts;t.pointNumbers=o,t.binNumber=t.pointNumber,delete t.pointNumber,delete t.pointIndex;var s;if(n._indexToPoints){s=[];for(var l=0;l{"use strict";cxe.exports={attributes:f8(),layoutAttributes:zI(),supplyDefaults:ixe(),crossTraceDefaults:d8(),supplyLayoutDefaults:yV(),calc:UV().calc,crossTraceCalc:Gb().crossTraceCalc,plot:i2().plot,layerName:"barlayer",style:N0().style,styleOnSelect:N0().styleOnSelect,colorbar:Kd(),hoverPoints:lxe(),selectPoints:AT(),eventData:JV(),moduleType:"trace",name:"histogram",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","bar","histogram","oriented","errorBarsOK","showLegend"],meta:{}}});var dxe=ye((Csr,hxe)=>{"use strict";hxe.exports=fxe()});var p8=ye((Lsr,pxe)=>{"use strict";var Vg=f8(),vxe=ZV(),v8=ET(),A_t=vl(),$V=Oc().axisHoverFormat,S_t=Wo().hovertemplateAttrs,M_t=Wo().texttemplateAttrs,E_t=Jl(),w4=no().extendFlat;pxe.exports=w4({x:Vg.x,y:Vg.y,z:{valType:"data_array",editType:"calc"},marker:{color:{valType:"data_array",editType:"calc"},editType:"calc"},histnorm:Vg.histnorm,histfunc:Vg.histfunc,nbinsx:Vg.nbinsx,xbins:vxe("x"),nbinsy:Vg.nbinsy,ybins:vxe("y"),autobinx:Vg.autobinx,autobiny:Vg.autobiny,bingroup:w4({},Vg.bingroup,{}),xbingroup:w4({},Vg.bingroup,{}),ybingroup:w4({},Vg.bingroup,{}),xgap:v8.xgap,ygap:v8.ygap,zsmooth:v8.zsmooth,xhoverformat:$V("x"),yhoverformat:$V("y"),zhoverformat:$V("z",1),hovertemplate:S_t({},{keys:"z"}),texttemplate:M_t({arrayOk:!1,editType:"plot"},{keys:"z"}),textfont:v8.textfont,showlegend:w4({},A_t.showlegend,{dflt:!1})},E_t("",{cLetter:"z",autoColorDflt:!1}))});var QV=ye((Psr,mxe)=>{"use strict";var k_t=ba(),gxe=Mr();mxe.exports=function(t,r,n,i){var a=n("x"),o=n("y"),s=gxe.minRowLength(a),l=gxe.minRowLength(o);if(!s||!l){r.visible=!1;return}r._length=Math.min(s,l);var u=k_t.getComponentMethod("calendars","handleTraceDefaults");u(t,r,["x","y"],i);var c=n("z")||n("marker.color");c&&n("histfunc"),n("histnorm"),n("autobinx"),n("autobiny")}});var _xe=ye((Isr,yxe)=>{"use strict";var C_t=Mr(),L_t=QV(),P_t=DV(),I_t=Uh(),R_t=y4(),D_t=p8();yxe.exports=function(t,r,n,i){function a(o,s){return C_t.coerce(t,r,D_t,o,s)}L_t(t,r,a,i),r.visible!==!1&&(P_t(t,r,a,i),I_t(t,r,i,a,{prefix:"",cLetter:"z"}),a("hovertemplate"),R_t(a,i),a("xhoverformat"),a("yhoverformat"))}});var wxe=ye((Rsr,bxe)=>{"use strict";var z_t=c8(),xxe=Qa().hoverLabelText;bxe.exports=function(t,r,n,i,a){var o=z_t(t,r,n,i,a);if(o){t=o[0];var s=t.index,l=s[0],u=s[1],c=t.cd[0],f=c.trace,h=c.xRanges[u],d=c.yRanges[l];return t.xLabel=xxe(t.xa,[h[0],h[1]],f.xhoverformat),t.yLabel=xxe(t.ya,[d[0],d[1]],f.yhoverformat),o}}});var Axe=ye((Dsr,Txe)=>{"use strict";Txe.exports={attributes:p8(),supplyDefaults:_xe(),crossTraceDefaults:d8(),calc:n8(),plot:s8(),layerName:"heatmaplayer",colorbar:M_(),style:l8(),hoverPoints:wxe(),eventData:JV(),moduleType:"trace",name:"histogram2d",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","histogram","showLegend"],meta:{}}});var Mxe=ye((zsr,Sxe)=>{"use strict";Sxe.exports=Axe()});var g8=ye((Fsr,Exe)=>{"use strict";Exe.exports={COMPARISON_OPS:["=","!=","<",">=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}});var T4=ye((qsr,Pxe)=>{"use strict";var Gh=ET(),m8=Uc(),Cxe=Oc(),eH=Cxe.axisHoverFormat,F_t=Cxe.descriptionOnlyNumbers,q_t=Jl(),O_t=Ed().dash,B_t=Su(),IT=no().extendFlat,Lxe=g8(),N_t=Lxe.COMPARISON_OPS2,U_t=Lxe.INTERVAL_OPS,kxe=m8.line;Pxe.exports=IT({z:Gh.z,x:Gh.x,x0:Gh.x0,dx:Gh.dx,y:Gh.y,y0:Gh.y0,dy:Gh.dy,xperiod:Gh.xperiod,yperiod:Gh.yperiod,xperiod0:m8.xperiod0,yperiod0:m8.yperiod0,xperiodalignment:Gh.xperiodalignment,yperiodalignment:Gh.yperiodalignment,text:Gh.text,hovertext:Gh.hovertext,transpose:Gh.transpose,xtype:Gh.xtype,ytype:Gh.ytype,xhoverformat:eH("x"),yhoverformat:eH("y"),zhoverformat:eH("z",1),hovertemplate:Gh.hovertemplate,texttemplate:IT({},Gh.texttemplate,{}),textfont:IT({},Gh.textfont,{}),hoverongaps:Gh.hoverongaps,connectgaps:IT({},Gh.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:B_t({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:F_t("contour label")},operation:{valType:"enumerated",values:[].concat(N_t).concat(U_t),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:IT({},kxe.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:O_t,smoothing:IT({},kxe.smoothing,{}),editType:"plot"},zorder:m8.zorder},q_t("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))});var rH=ye((Osr,Rxe)=>{"use strict";var Hv=p8(),qy=T4(),V_t=Jl(),tH=Oc().axisHoverFormat,Ixe=no().extendFlat;Rxe.exports=Ixe({x:Hv.x,y:Hv.y,z:Hv.z,marker:Hv.marker,histnorm:Hv.histnorm,histfunc:Hv.histfunc,nbinsx:Hv.nbinsx,xbins:Hv.xbins,nbinsy:Hv.nbinsy,ybins:Hv.ybins,autobinx:Hv.autobinx,autobiny:Hv.autobiny,bingroup:Hv.bingroup,xbingroup:Hv.xbingroup,ybingroup:Hv.ybingroup,autocontour:qy.autocontour,ncontours:qy.ncontours,contours:qy.contours,line:{color:qy.line.color,width:Ixe({},qy.line.width,{dflt:.5}),dash:qy.line.dash,smoothing:qy.line.smoothing,editType:"plot"},xhoverformat:tH("x"),yhoverformat:tH("y"),zhoverformat:tH("z",1),hovertemplate:Hv.hovertemplate,texttemplate:qy.texttemplate,textfont:qy.textfont},V_t("",{cLetter:"z",editTypeOverride:"calc"}))});var y8=ye((Bsr,Dxe)=>{"use strict";Dxe.exports=function(t,r,n,i){var a=i("contours.start"),o=i("contours.end"),s=a===!1||o===!1,l=n("contours.size"),u;s?u=r.autocontour=!0:u=n("autocontour",!1),(u||!l)&&n("ncontours")}});var iH=ye((Nsr,zxe)=>{"use strict";var H_t=Mr();zxe.exports=function(t,r,n,i){i||(i={});var a=t("contours.showlabels");if(a){var o=r.font;H_t.coerceFont(t,"contours.labelfont",o,{overrideDflt:{color:n}}),t("contours.labelformat")}i.hasHover!==!1&&t("zhoverformat")}});var _8=ye((Usr,Fxe)=>{"use strict";var G_t=Uh(),j_t=iH();Fxe.exports=function(t,r,n,i,a){var o=n("contours.coloring"),s,l="";o==="fill"&&(s=n("contours.showlines")),s!==!1&&(o!=="lines"&&(l=n("line.color","#000")),n("line.width",.5),n("line.dash")),o!=="none"&&(t.showlegend!==!0&&(r.showlegend=!1),r._dfltShowLegend=!1,G_t(t,r,i,n,{prefix:"",cLetter:"z"})),n("line.smoothing"),j_t(n,i,l,a)}});var Nxe=ye((Vsr,Bxe)=>{"use strict";var qxe=Mr(),W_t=QV(),Z_t=y8(),X_t=_8(),Y_t=y4(),Oxe=rH();Bxe.exports=function(t,r,n,i){function a(s,l){return qxe.coerce(t,r,Oxe,s,l)}function o(s){return qxe.coerce2(t,r,Oxe,s)}W_t(t,r,a,i),r.visible!==!1&&(Z_t(t,r,a,o),X_t(t,r,a,i),a("xhoverformat"),a("yhoverformat"),a("hovertemplate"),r.contours&&r.contours.coloring==="heatmap"&&Y_t(a,i))}});var oH=ye((Hsr,Vxe)=>{"use strict";var aH=Qa(),nH=Mr();Vxe.exports=function(t,r){var n=t.contours;if(t.autocontour){var i=t.zmin,a=t.zmax;(t.zauto||i===void 0)&&(i=nH.aggNums(Math.min,null,r)),(t.zauto||a===void 0)&&(a=nH.aggNums(Math.max,null,r));var o=Uxe(i,a,t.ncontours);n.size=o.dtick,n.start=aH.tickFirst(o),o.range.reverse(),n.end=aH.tickFirst(o),n.start===i&&(n.start+=n.size),n.end===a&&(n.end-=n.size),n.start>n.end&&(n.start=n.end=(n.start+n.end)/2),t._input.contours||(t._input.contours={}),nH.extendFlat(t._input.contours,{start:n.start,end:n.end,size:n.size}),t._input.autocontour=!0}else if(n.type!=="constraint"){var s=n.start,l=n.end,u=t._input.contours;if(s>l&&(n.start=u.start=l,l=n.end=u.end=s,s=n.start),!(n.size>0)){var c;s===l?c=1:c=Uxe(s,l,t.ncontours).dtick,u.size=n.size=c}}};function Uxe(e,t,r){var n={type:"linear",range:[e,t]};return aH.autoTicks(n,(t-e)/(r||15)),n}});var A4=ye((Gsr,Hxe)=>{"use strict";Hxe.exports=function(t){return t.end+t.size/1e6}});var sH=ye((jsr,jxe)=>{"use strict";var Gxe=Mu(),K_t=n8(),J_t=oH(),$_t=A4();jxe.exports=function(t,r){var n=K_t(t,r),i=n[0].z;J_t(r,i);var a=r.contours,o=Gxe.extractOpts(r),s;if(a.coloring==="heatmap"&&o.auto&&r.autocontour===!1){var l=a.start,u=$_t(a),c=a.size||1,f=Math.floor((u-l)/c)+1;isFinite(c)||(c=1,f=1);var h=l-c/2,d=h+f*c;s=[h,d]}else s=i;return Gxe.calc(t,r,{vals:s,cLetter:"z"}),n}});var S4=ye((Wsr,Wxe)=>{"use strict";Wxe.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}});var lH=ye((Zsr,Zxe)=>{"use strict";var x8=S4();Zxe.exports=function(t){var r=t[0].z,n=r.length,i=r[0].length,a=n===2||i===2,o,s,l,u,c,f,h,d,v;for(s=0;se?0:1)+(t[0][1]>e?0:2)+(t[1][1]>e?0:4)+(t[1][0]>e?0:8);if(r===5||r===10){var n=(t[0][0]+t[0][1]+t[1][0]+t[1][1])/4;return e>n?r===5?713:1114:r===5?104:208}return r===15?0:r}});var uH=ye((Xsr,Kxe)=>{"use strict";var b8=Mr(),RT=S4();Kxe.exports=function(t,r,n){var i,a,o,s,l;for(r=r||.01,n=n||.01,o=0;o20?(o=RT.CHOOSESADDLE[o][(s[0]||s[1])<0?0:1],e.crossings[a]=RT.SADDLEREMAINDER[o]):delete e.crossings[a],s=RT.NEWDELTA[o],!s){b8.log("Found bad marching index:",o,t,e.level);break}l.push(Yxe(e,t,s)),t[0]+=s[0],t[1]+=s[1],a=t.join(","),M4(l[l.length-1],l[l.length-2],n,i)&&l.pop();var v=s[0]&&(t[0]<0||t[0]>c-2)||s[1]&&(t[1]<0||t[1]>u-2),x=t[0]===f[0]&&t[1]===f[1]&&s[0]===h[0]&&s[1]===h[1];if(x||r&&v)break;o=e.crossings[a]}d===1e4&&b8.log("Infinite loop in contour?");var b=M4(l[0],l[l.length-1],n,i),p=0,E=.2*e.smoothing,k=[],A=0,L,_,C,M,g,P,T,F,q,V,H;for(d=1;d=A;d--)if(L=k[d],L=A&&L+k[_]F&&q--,e.edgepaths[q]=H.concat(l,V));break}W||(e.edgepaths[F]=l.concat(V))}for(F=0;F20&&t?e===208||e===1114?n=r[0]===0?1:-1:i=r[1]===0?1:-1:RT.BOTTOMSTART.indexOf(e)!==-1?i=1:RT.LEFTSTART.indexOf(e)!==-1?n=1:RT.TOPSTART.indexOf(e)!==-1?i=-1:n=-1,[n,i]}function Yxe(e,t,r){var n=t[0]+Math.max(r[0],0),i=t[1]+Math.max(r[1],0),a=e.z[i][n],o=e.xaxis,s=e.yaxis;if(r[1]){var l=(e.level-a)/(e.z[i][n+1]-a),u=(l!==1?(1-l)*o.c2l(e.x[n]):0)+(l!==0?l*o.c2l(e.x[n+1]):0);return[o.c2p(o.l2c(u),!0),s.c2p(e.y[i],!0),n+l,i]}else{var c=(e.level-a)/(e.z[i+1][n]-a),f=(c!==1?(1-c)*s.c2l(e.y[i]):0)+(c!==0?c*s.c2l(e.y[i+1]):0);return[o.c2p(e.x[n],!0),s.c2p(s.l2c(f),!0),n,i+c]}}});var ebe=ye((Ysr,Qxe)=>{"use strict";var cH=g8(),rxt=uo();Qxe.exports={"[]":Jxe("[]"),"][":Jxe("]["),">":fH(">"),"<":fH("<"),"=":fH("=")};function $xe(e,t){var r=Array.isArray(t),n;function i(a){return rxt(a)?+a:null}return cH.COMPARISON_OPS2.indexOf(e)!==-1?n=i(r?t[0]:t):cH.INTERVAL_OPS.indexOf(e)!==-1?n=r?[i(t[0]),i(t[1])]:[i(t),i(t)]:cH.SET_OPS.indexOf(e)!==-1&&(n=r?t.map(i):[i(t)]),n}function Jxe(e){return function(t){t=$xe(e,t);var r=Math.min(t[0],t[1]),n=Math.max(t[0],t[1]);return{start:r,end:n,size:n-r}}}function fH(e){return function(t){return t=$xe(e,t),{start:t,end:1/0,size:1/0}}}});var hH=ye((Ksr,rbe)=>{"use strict";var tbe=Mr(),ixt=ebe(),nxt=A4();rbe.exports=function(t,r,n){for(var i=t.type==="constraint"?ixt[t._operation](t.value):t,a=i.size,o=[],s=nxt(i),l=n.trace._carpetTrace,u=l?{xaxis:l.aaxis,yaxis:l.baxis,x:n.a,y:n.b}:{xaxis:r.xaxis,yaxis:r.yaxis,x:n.x,y:n.y},c=i.start;c1e3){tbe.warn("Too many contours, clipping at 1000",t);break}return o}});var dH=ye((Jsr,nbe)=>{"use strict";var DT=Mr();nbe.exports=function(e,t){var r,n,i,a=function(l){return l.reverse()},o=function(l){return l};switch(t){case"=":case"<":return e;case">":for(e.length!==1&&DT.warn("Contour data invalid for the specified inequality operation."),n=e[0],r=0;r{"use strict";abe.exports=function(e,t){var r=e[0],n=r.z,i;switch(t.type){case"levels":var a=Math.min(n[0][0],n[0][1]);for(i=0;io.level||o.starts.length&&a===o.level)}break;case"constraint":if(r.prefixBoundary=!1,r.edgepaths.length)return;var s=r.x.length,l=r.y.length,u=-1/0,c=1/0;for(i=0;i":f>u&&(r.prefixBoundary=!0);break;case"<":(fu||r.starts.length&&d===c)&&(r.prefixBoundary=!0);break;case"][":h=Math.min(f[0],f[1]),d=Math.max(f[0],f[1]),hu&&(r.prefixBoundary=!0);break}break}}});var w8=ye(Gv=>{"use strict";var k4=xa(),Id=Mr(),Oy=ao(),axt=Mu(),lbe=Pl(),obe=Qa(),sbe=ym(),oxt=s8(),ube=lH(),cbe=uH(),sxt=hH(),lxt=dH(),fbe=vH(),E4=S4(),Rm=E4.LABELOPTIMIZER;Gv.plot=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;Id.makeTraceGroups(i,n,"contour").each(function(s){var l=k4.select(this),u=s[0],c=u.trace,f=u.x,h=u.y,d=c.contours,v=sxt(d,r,u),x=Id.ensureSingle(l,"g","heatmapcoloring"),b=[];d.coloring==="heatmap"&&(b=[s]),oxt(t,r,b,x),ube(v),cbe(v);var p=a.c2p(f[0],!0),E=a.c2p(f[f.length-1],!0),k=o.c2p(h[0],!0),A=o.c2p(h[h.length-1],!0),L=[[p,A],[E,A],[E,k],[p,k]],_=v;d.type==="constraint"&&(_=lxt(v,d._operation)),uxt(l,L,d),cxt(l,_,L,d),fxt(l,v,t,u,d),dxt(l,r,t,u,L)})};function uxt(e,t,r){var n=Id.ensureSingle(e,"g","contourbg"),i=n.selectAll("path").data(r.coloring==="fill"?[0]:[]);i.enter().append("path"),i.exit().remove(),i.attr("d","M"+t.join("L")+"Z").style("stroke","none")}function cxt(e,t,r,n){var i=n.coloring==="fill"||n.type==="constraint"&&n._operation!=="=",a="M"+r.join("L")+"Z";i&&fbe(t,n);var o=Id.ensureSingle(e,"g","contourfill"),s=o.selectAll("path").data(i?t:[]);s.enter().append("path"),s.exit().remove(),s.each(function(l){var u=(l.prefixBoundary?a:"")+hbe(l,r);u?k4.select(this).attr("d",u).style("stroke","none"):k4.select(this).remove()})}function hbe(e,t){var r="",n=0,i=e.edgepaths.map(function(p,E){return E}),a=!0,o,s,l,u,c,f;function h(p){return Math.abs(p[1]-t[0][1])<.01}function d(p){return Math.abs(p[1]-t[2][1])<.01}function v(p){return Math.abs(p[0]-t[0][0])<.01}function x(p){return Math.abs(p[0]-t[2][0])<.01}for(;i.length;){for(f=Oy.smoothopen(e.edgepaths[n],e.smoothing),r+=a?f:f.replace(/^M/,"L"),i.splice(i.indexOf(n),1),o=e.edgepaths[n][e.edgepaths[n].length-1],u=-1,l=0;l<4;l++){if(!o){Id.log("Missing end?",n,e);break}for(h(o)&&!x(o)?s=t[1]:v(o)?s=t[0]:d(o)?s=t[3]:x(o)&&(s=t[2]),c=0;c=0&&(s=b,u=c):Math.abs(o[1]-s[1])<.01?Math.abs(o[1]-b[1])<.01&&(b[0]-o[0])*(s[0]-b[0])>=0&&(s=b,u=c):Id.log("endpt to newendpt is not vert. or horz.",o,s,b)}if(o=s,u>=0)break;r+="L"+s}if(u===e.edgepaths.length){Id.log("unclosed perimeter path");break}n=u,a=i.indexOf(n)===-1,a&&(n=i[0],r+="Z")}for(n=0;nRm.MAXCOST*2)break;h&&(s/=2),o=u-s/2,l=o+s*1.5}if(f<=Rm.MAXCOST)return c};function hxt(e,t,r,n){var i=t.width/2,a=t.height/2,o=e.x,s=e.y,l=e.theta,u=Math.cos(l)*i,c=Math.sin(l)*i,f=(o>n.center?n.right-o:o-n.left)/(u+Math.abs(Math.sin(l)*a)),h=(s>n.middle?n.bottom-s:s-n.top)/(Math.abs(c)+Math.cos(l)*a);if(f<1||h<1)return 1/0;var d=Rm.EDGECOST*(1/(f-1)+1/(h-1));d+=Rm.ANGLECOST*l*l;for(var v=o-u,x=s-c,b=o+u,p=s+c,E=0;E{"use strict";var pxt=xa(),pH=Mu(),gxt=A4();dbe.exports=function(t){var r=t.contours,n=r.start,i=gxt(r),a=r.size||1,o=Math.floor((i-n)/a)+1,s=r.coloring==="lines"?0:1,l=pH.extractOpts(t);isFinite(a)||(a=1,o=1);var u=l.reversescale?pH.flipScale(l.colorscale):l.colorscale,c=u.length,f=new Array(c),h=new Array(c),d,v,x=l.min,b=l.max;if(r.coloring==="heatmap"){for(v=0;v=b)&&(n<=x&&(n=x),i>=b&&(i=b),o=Math.floor((i-n)/a)+1,s=0),v=0;vx&&(f.unshift(x),h.unshift(h[0])),f[f.length-1]{"use strict";var T8=xa(),vbe=ao(),mxt=l8(),yxt=gH();pbe.exports=function(t){var r=T8.select(t).selectAll("g.contour");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=T8.select(this),a=n[0].trace,o=a.contours,s=a.line,l=o.size||1,u=o.start,c=o.type==="constraint",f=!c&&o.coloring==="lines",h=!c&&o.coloring==="fill",d=f||h?yxt(a):null;i.selectAll("g.contourlevel").each(function(b){T8.select(this).selectAll("path").call(vbe.lineGroupStyle,s.width,f?d(b.level):s.color,s.dash)});var v=o.labelfont;if(i.selectAll("g.contourlabels text").each(function(b){vbe.font(T8.select(this),{weight:v.weight,style:v.style,variant:v.variant,textcase:v.textcase,lineposition:v.lineposition,shadow:v.shadow,family:v.family,size:v.size,color:v.color||(f?d(b.level):s.color)})}),c)i.selectAll("g.contourfill path").style("fill",a.fillcolor);else if(h){var x;i.selectAll("g.contourfill path").style("fill",function(b){return x===void 0&&(x=b.level),d(b.level+.5*l)}),x===void 0&&(x=u),i.selectAll("g.contourbg path").style("fill",d(x-.5*l))}}),mxt(t)}});var S8=ye((rlr,mbe)=>{"use strict";var gbe=Mu(),_xt=gH(),xxt=A4();function bxt(e,t,r){var n=t.contours,i=t.line,a=n.size||1,o=n.coloring,s=_xt(t,{isColorbar:!0});if(o==="heatmap"){var l=gbe.extractOpts(t);r._fillgradient=l.reversescale?gbe.flipScale(l.colorscale):l.colorscale,r._zrange=[l.min,l.max]}else o==="fill"&&(r._fillcolor=s);r._line={color:o==="lines"?s:i.color,width:n.showlines!==!1?i.width:0,dash:i.dash},r._levels={start:n.start,end:xxt(n),size:a}}mbe.exports={min:"zmin",max:"zmax",calc:bxt}});var mH=ye((ilr,ybe)=>{"use strict";var M8=va(),wxt=c8();ybe.exports=function(t,r,n,i,a){a||(a={}),a.isContour=!0;var o=wxt(t,r,n,i,a);return o&&o.forEach(function(s){var l=s.trace;l.contours.type==="constraint"&&(l.fillcolor&&M8.opacity(l.fillcolor)?s.color=M8.addOpacity(l.fillcolor,1):l.contours.showlines&&M8.opacity(l.line.color)&&(s.color=M8.addOpacity(l.line.color,1)))}),o}});var xbe=ye((nlr,_be)=>{"use strict";_be.exports={attributes:rH(),supplyDefaults:Nxe(),crossTraceDefaults:d8(),calc:sH(),plot:w8().plot,layerName:"contourlayer",style:A8(),colorbar:S8(),hoverPoints:mH(),moduleType:"trace",name:"histogram2dcontour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","histogram","showLegend"],meta:{}}});var wbe=ye((alr,bbe)=>{"use strict";bbe.exports=xbe()});var yH=ye((olr,kbe)=>{"use strict";var Tbe=uo(),Txt=iH(),Mbe=va(),Abe=Mbe.addOpacity,Axt=Mbe.opacity,Ebe=g8(),Sbe=Mr().isArrayOrTypedArray,Sxt=Ebe.CONSTRAINT_REDUCTION,Mxt=Ebe.COMPARISON_OPS2;kbe.exports=function(t,r,n,i,a,o){var s=r.contours,l,u,c,f=n("contours.operation");if(s._operation=Sxt[f],Ext(n,s),f==="="?l=s.showlines=!0:(l=n("contours.showlines"),c=n("fillcolor",Abe((t.line||{}).color||a,.5))),l){var h=c&&Axt(c)?Abe(r.fillcolor,1):a;u=n("line.color",h),n("line.width",2),n("line.dash")}n("line.smoothing"),Txt(n,i,u,o)};function Ext(e,t){var r;Mxt.indexOf(t.operation)===-1?(e("contours.value",[0,1]),Sbe(t.value)?t.value.length>2?t.value=t.value.slice(2):t.length===0?t.value=[0,1]:t.length<2?(r=parseFloat(t.value[0]),t.value=[r,r+1]):t.value=[parseFloat(t.value[0]),parseFloat(t.value[1])]:Tbe(t.value)&&(r=parseFloat(t.value),t.value=[r,r+1])):(e("contours.value",0),Tbe(t.value)||(Sbe(t.value)?t.value=parseFloat(t.value[0]):t.value=0))}});var Pbe=ye((slr,Lbe)=>{"use strict";var _H=Mr(),kxt=XI(),Cxt=Pg(),Lxt=yH(),Pxt=y8(),Ixt=_8(),Rxt=y4(),Cbe=T4();Lbe.exports=function(t,r,n,i){function a(u,c){return _H.coerce(t,r,Cbe,u,c)}function o(u){return _H.coerce2(t,r,Cbe,u)}var s=kxt(t,r,a,i);if(!s){r.visible=!1;return}Cxt(t,r,i,a),a("xhoverformat"),a("yhoverformat"),a("text"),a("hovertext"),a("hoverongaps"),a("hovertemplate");var l=a("contours.type")==="constraint";a("connectgaps",_H.isArray1D(r.z)),l?Lxt(t,r,a,i,n):(Pxt(t,r,a,o),Ixt(t,r,a,i)),r.contours&&r.contours.coloring==="heatmap"&&Rxt(a,i),a("zorder")}});var Rbe=ye((llr,Ibe)=>{"use strict";Ibe.exports={attributes:T4(),supplyDefaults:Pbe(),calc:sH(),plot:w8().plot,style:A8(),colorbar:S8(),hoverPoints:mH(),moduleType:"trace",name:"contour",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}});var zbe=ye((ulr,Dbe)=>{"use strict";Dbe.exports=Rbe()});var xH=ye((clr,qbe)=>{"use strict";var Dxt=Wo().hovertemplateAttrs,zxt=Wo().texttemplateAttrs,Fxt=Eg(),a0=Uc(),qxt=vl(),Fbe=Jl(),Oxt=Ed().dash,E_=no().extendFlat,j0=a0.marker,C4=a0.line,Bxt=j0.line;qbe.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:E_({},a0.mode,{dflt:"markers"}),text:E_({},a0.text,{}),texttemplate:zxt({editType:"plot"},{keys:["a","b","c","text"]}),hovertext:E_({},a0.hovertext,{}),line:{color:C4.color,width:C4.width,dash:Oxt,backoff:C4.backoff,shape:E_({},C4.shape,{values:["linear","spline"]}),smoothing:C4.smoothing,editType:"calc"},connectgaps:a0.connectgaps,cliponaxis:a0.cliponaxis,fill:E_({},a0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:Fxt(),marker:E_({symbol:j0.symbol,opacity:j0.opacity,angle:j0.angle,angleref:j0.angleref,standoff:j0.standoff,maxdisplayed:j0.maxdisplayed,size:j0.size,sizeref:j0.sizeref,sizemin:j0.sizemin,sizemode:j0.sizemode,line:E_({width:Bxt.width,editType:"calc"},Fbe("marker.line")),gradient:j0.gradient,editType:"calc"},Fbe("marker")),textfont:a0.textfont,textposition:a0.textposition,selected:a0.selected,unselected:a0.unselected,hoverinfo:E_({},qxt.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:a0.hoveron,hovertemplate:Dxt()}});var Ube=ye((flr,Nbe)=>{"use strict";var Obe=Mr(),Nxt=Sm(),zT=lu(),Uxt=$p(),Vxt=R0(),Bbe=J3(),Hxt=D0(),Gxt=Ig(),jxt=xH();Nbe.exports=function(t,r,n,i){function a(h,d){return Obe.coerce(t,r,jxt,h,d)}var o=a("a"),s=a("b"),l=a("c"),u;if(o?(u=o.length,s?(u=Math.min(u,s.length),l&&(u=Math.min(u,l.length))):l?u=Math.min(u,l.length):u=0):s&&l&&(u=Math.min(s.length,l.length)),!u){r.visible=!1;return}r._length=u,a("sum"),a("text"),a("hovertext"),r.hoveron!=="fills"&&a("hovertemplate");var c=u{"use strict";var bH=Qa();Vbe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.aLabel=bH.tickText(a.aaxis,t.a,!0).text,i.bLabel=bH.tickText(a.baxis,t.b,!0).text,i.cLabel=bH.tickText(a.caxis,t.c,!0).text,i}});var Zbe=ye((dlr,Wbe)=>{"use strict";var wH=uo(),Wxt=z0(),Zxt=km(),Xxt=F0(),Yxt=q0().calcMarkerSize,Gbe=["a","b","c"],jbe={a:["b","c"],b:["a","c"],c:["a","b"]};Wbe.exports=function(t,r){var n=t._fullLayout[r.subplot],i=n.sum,a=r.sum||i,o={a:r.a,b:r.b,c:r.c},s=r.ids,l,u,c,f,h,d;for(l=0;l{"use strict";var Kxt=iT();Xbe.exports=function(t,r,n){var i=r.plotContainer;i.select(".scatterlayer").selectAll("*").remove();for(var a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:i,layerClipId:r._hasClipOnAxisFalse?r.clipIdRelative:null},l=r.layers.frontplot.select("g.scatterlayer"),u=0;u{"use strict";var Jxt=sT();Kbe.exports=function(t,r,n,i){var a=Jxt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index],h=o.trace,d=o.subplot;o.a=f.a,o.b=f.b,o.c=f.c,o.xLabelVal=void 0,o.yLabelVal=void 0;var v={};v[h.subplot]={_subplot:d};var x=h._module.formatLabels(f,h,v);o.aLabel=x.aLabel,o.bLabel=x.bLabel,o.cLabel=x.cLabel;var b=f.hi||h.hoverinfo,p=[];function E(A,L){p.push(A._hovertitle+": "+L)}if(!h.hovertemplate){var k=b.split("+");k.indexOf("all")!==-1&&(k=["a","b","c"]),k.indexOf("a")!==-1&&E(d.aaxis,o.aLabel),k.indexOf("b")!==-1&&E(d.baxis,o.bLabel),k.indexOf("c")!==-1&&E(d.caxis,o.cLabel)}return o.extraText=p.join("
"),o.hovertemplate=h.hovertemplate,a}});var Qbe=ye((glr,$be)=>{"use strict";$be.exports=function(t,r,n,i,a){if(r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),i[a]){var o=i[a];t.a=o.a,t.b=o.b,t.c=o.c}else t.a=r.a,t.b=r.b,t.c=r.c;return t}});var c2e=ye((mlr,u2e)=>{"use strict";var a2e=xa(),$xt=id(),TH=ba(),By=Mr(),Dm=By.strTranslate,E8=By._,qT=va(),k8=ao(),L4=ym(),AH=no().extendFlat,Qxt=Xu(),k_=Qa(),e2e=gv(),t2e=Nc(),o2e=Sg(),r2e=o2e.freeMode,ebt=o2e.rectMode,SH=Mb(),tbt=wf().prepSelect,rbt=wf().selectOnClick,ibt=wf().clearOutline,nbt=wf().clearSelectionsCache,s2e=ad();function l2e(e,t){this.id=e.id,this.graphDiv=e.graphDiv,this.init(t),this.makeFramework(t),this.updateFx(t),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}u2e.exports=l2e;var zm=l2e.prototype;zm.init=function(e){this.container=e._ternarylayer,this.defs=e._defs,this.layoutId=e._uid,this.traceHash={},this.layers={}};zm.plot=function(e,t){var r=this,n=t[r.id],i=t._size;r._hasClipOnAxisFalse=!1;for(var a=0;aFT*u?(p=u,b=p*FT):(b=l,p=b/FT),E=o*b/l,k=s*p/u,v=t.l+t.w*i-b/2,x=t.t+t.h*(1-a)-p/2,r.x0=v,r.y0=x,r.w=b,r.h=p,r.sum=c,r.xaxis={type:"linear",range:[f+2*d-c,c-f-2*h],domain:[i-E/2,i+E/2],_id:"x"},L4(r.xaxis,r.graphDiv._fullLayout),r.xaxis.setScale(),r.xaxis.isPtWithinRange=function(V){return V.a>=r.aaxis.range[0]&&V.a<=r.aaxis.range[1]&&V.b>=r.baxis.range[1]&&V.b<=r.baxis.range[0]&&V.c>=r.caxis.range[1]&&V.c<=r.caxis.range[0]},r.yaxis={type:"linear",range:[f,c-h-d],domain:[a-k/2,a+k/2],_id:"y"},L4(r.yaxis,r.graphDiv._fullLayout),r.yaxis.setScale(),r.yaxis.isPtWithinRange=function(){return!0};var A=r.yaxis.domain[0],L=r.aaxis=AH({},e.aaxis,{range:[f,c-h-d],side:"left",tickangle:(+e.aaxis.tickangle||0)-30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(L,r.graphDiv._fullLayout),L.setScale();var _=r.baxis=AH({},e.baxis,{range:[c-f-d,h],side:"bottom",domain:r.xaxis.domain,anchor:"free",position:0,_id:"x",_length:b});L4(_,r.graphDiv._fullLayout),_.setScale();var C=r.caxis=AH({},e.caxis,{range:[c-f-h,d],side:"right",tickangle:(+e.caxis.tickangle||0)+30,domain:[A,A+k*FT],anchor:"free",position:0,_id:"y",_length:b});L4(C,r.graphDiv._fullLayout),C.setScale();var M="M"+v+","+(x+p)+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDef.select("path").attr("d",M),r.layers.plotbg.select("path").attr("d",M);var g="M0,"+p+"h"+b+"l-"+b/2+",-"+p+"Z";r.clipDefRelative.select("path").attr("d",g);var P=Dm(v,x);r.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",P),r.clipDefRelative.select("path").attr("transform",null);var T=Dm(v-_._offset,x+p);r.layers.baxis.attr("transform",T),r.layers.bgrid.attr("transform",T);var F=Dm(v+b/2,x)+"rotate(30)"+Dm(0,-L._offset);r.layers.aaxis.attr("transform",F),r.layers.agrid.attr("transform",F);var q=Dm(v+b/2,x)+"rotate(-30)"+Dm(0,-C._offset);r.layers.caxis.attr("transform",q),r.layers.cgrid.attr("transform",q),r.drawAxes(!0),r.layers.aline.select("path").attr("d",L.showline?"M"+v+","+(x+p)+"l"+b/2+",-"+p:"M0,0").call(qT.stroke,L.linecolor||"#000").style("stroke-width",(L.linewidth||0)+"px"),r.layers.bline.select("path").attr("d",_.showline?"M"+v+","+(x+p)+"h"+b:"M0,0").call(qT.stroke,_.linecolor||"#000").style("stroke-width",(_.linewidth||0)+"px"),r.layers.cline.select("path").attr("d",C.showline?"M"+(v+b/2)+","+x+"l"+b/2+","+p:"M0,0").call(qT.stroke,C.linecolor||"#000").style("stroke-width",(C.linewidth||0)+"px"),r.graphDiv._context.staticPlot||r.initInteractions(),k8.setClipUrl(r.layers.frontplot,r._hasClipOnAxisFalse?null:r.clipId,r.graphDiv)};zm.drawAxes=function(e){var t=this,r=t.graphDiv,n=t.id.substr(7)+"title",i=t.layers,a=t.aaxis,o=t.baxis,s=t.caxis;if(t.drawAx(a),t.drawAx(o),t.drawAx(s),e){var l=Math.max(a.showticklabels?a.tickfont.size/2:0,(s.showticklabels?s.tickfont.size*.75:0)+(s.ticks==="outside"?s.ticklen*.87:0)),u=(o.showticklabels?o.tickfont.size:0)+(o.ticks==="outside"?o.ticklen:0)+3;i["a-title"]=SH.draw(r,"a"+n,{propContainer:a,propName:t.id+".aaxis.title",placeholder:E8(r,"Click to enter Component A title"),attributes:{x:t.x0+t.w/2,y:t.y0-a.title.font.size/3-l,"text-anchor":"middle"}}),i["b-title"]=SH.draw(r,"b"+n,{propContainer:o,propName:t.id+".baxis.title",placeholder:E8(r,"Click to enter Component B title"),attributes:{x:t.x0-u,y:t.y0+t.h+o.title.font.size*.83+u,"text-anchor":"middle"}}),i["c-title"]=SH.draw(r,"c"+n,{propContainer:s,propName:t.id+".caxis.title",placeholder:E8(r,"Click to enter Component C title"),attributes:{x:t.x0+t.w+u,y:t.y0+t.h+s.title.font.size*.83+u,"text-anchor":"middle"}})}};zm.drawAx=function(e){var t=this,r=t.graphDiv,n=e._name,i=n.charAt(0),a=e._id,o=t.layers[n],s=30,l=i+"tickLayout",u=abt(e);t[l]!==u&&(o.selectAll("."+a+"tick").remove(),t[l]=u),e.setScale();var c=k_.calcTicks(e),f=k_.clipEnds(e,c),h=k_.makeTransTickFn(e),d=k_.getTickSigns(e)[2],v=By.deg2rad(s),x=d*(e.linewidth||1)/2,b=d*e.ticklen,p=t.w,E=t.h,k=i==="b"?"M0,"+x+"l"+Math.sin(v)*b+","+Math.cos(v)*b:"M"+x+",0l"+Math.cos(v)*b+","+-Math.sin(v)*b,A={a:"M0,0l"+E+",-"+p/2,b:"M0,0l-"+p/2+",-"+E,c:"M0,0l-"+E+","+p/2}[i];k_.drawTicks(r,e,{vals:e.ticks==="inside"?f:c,layer:o,path:k,transFn:h,crisp:!1}),k_.drawGrid(r,e,{vals:f,layer:t.layers[i+"grid"],path:A,transFn:h,crisp:!1}),k_.drawLabels(r,e,{vals:c,layer:o,transFn:h,labelFns:k_.makeLabelFns(e,0,s)})};function abt(e){return e.ticks+String(e.ticklen)+String(e.showticklabels)}var fd=s2e.MINZOOM/2+.87,obt="m-0.87,.5h"+fd+"v3h-"+(fd+5.2)+"l"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l2.6,1.5l-"+fd/2+","+fd*.87+"Z",sbt="m0.87,.5h-"+fd+"v3h"+(fd+5.2)+"l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-2.6,1.5l"+fd/2+","+fd*.87+"Z",lbt="m0,1l"+fd/2+","+fd*.87+"l2.6,-1.5l-"+(fd/2+2.6)+",-"+(fd*.87+4.5)+"l-"+(fd/2+2.6)+","+(fd*.87+4.5)+"l2.6,1.5l"+fd/2+",-"+fd*.87+"Z",ubt="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",i2e=!0;zm.clearOutline=function(){nbt(this.dragOptions),ibt(this.dragOptions.gd)};zm.initInteractions=function(){var e=this,t=e.layers.plotbg.select("path").node(),r=e.graphDiv,n=r._fullLayout._zoomlayer,i,a;this.dragOptions={element:t,gd:r,plotinfo:{id:e.id,domain:r._fullLayout[e.id].domain,xaxis:e.xaxis,yaxis:e.yaxis},subplot:e.id,prepFn:function(T,F,q){e.dragOptions.xaxes=[e.xaxis],e.dragOptions.yaxes=[e.yaxis],i=r._fullLayout._invScaleX,a=r._fullLayout._invScaleY;var V=e.dragOptions.dragmode=r._fullLayout.dragmode;r2e(V)?e.dragOptions.minDrag=1:e.dragOptions.minDrag=void 0,V==="zoom"?(e.dragOptions.moveFn=_,e.dragOptions.clickFn=p,e.dragOptions.doneFn=C,E(T,F,q)):V==="pan"?(e.dragOptions.moveFn=g,e.dragOptions.clickFn=p,e.dragOptions.doneFn=P,M(),e.clearOutline(r)):(ebt(V)||r2e(V))&&tbt(T,F,q,e.dragOptions,V)}};var o,s,l,u,c,f,h,d,v,x;function b(T){var F={};return F[e.id+".aaxis.min"]=T.a,F[e.id+".baxis.min"]=T.b,F[e.id+".caxis.min"]=T.c,F}function p(T,F){var q=r._fullLayout.clickmode;n2e(r),T===2&&(r.emit("plotly_doubleclick",null),TH.call("_guiRelayout",r,b({a:0,b:0,c:0}))),q.indexOf("select")>-1&&T===1&&rbt(F,r,[e.xaxis],[e.yaxis],e.id,e.dragOptions),q.indexOf("event")>-1&&t2e.click(r,F,e.id)}function E(T,F,q){var V=t.getBoundingClientRect();o=F-V.left,s=q-V.top,r._fullLayout._calcInverseTransform(r);var H=r._fullLayout._invTransform,X=By.apply3DTransform(H)(o,s);o=X[0],s=X[1],l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l,u=e.aaxis.range[1]-l.a,f=$xt(e.graphDiv._fullLayout[e.id].bgcolor).getLuminance(),h="M0,"+e.h+"L"+e.w/2+", 0L"+e.w+","+e.h+"Z",d=!1,v=n.append("path").attr("class","zoombox").attr("transform",Dm(e.x0,e.y0)).style({fill:f>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",h),x=n.append("path").attr("class","zoombox-corners").attr("transform",Dm(e.x0,e.y0)).style({fill:qT.background,stroke:qT.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),e.clearOutline(r)}function k(T,F){return 1-F/e.h}function A(T,F){return 1-(T+(e.h-F)/Math.sqrt(3))/e.w}function L(T,F){return(T-(e.h-F)/Math.sqrt(3))/e.w}function _(T,F){var q=o+T*i,V=s+F*a,H=Math.max(0,Math.min(1,k(o,s),k(q,V))),X=Math.max(0,Math.min(1,A(o,s),A(q,V))),G=Math.max(0,Math.min(1,L(o,s),L(q,V))),N=(H/2+G)*e.w,W=(1-H/2-X)*e.w,re=(N+W)/2,ae=W-N,_e=(1-H)*e.h,Me=_e-ae/FT;ae.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),x.transition().style("opacity",1).duration(200),d=!0),r.emit("plotly_relayouting",b(c))}function C(){n2e(r),c!==l&&(TH.call("_guiRelayout",r,b(c)),i2e&&r.data&&r._context.showTips&&(By.notifier(E8(r,"Double-click to zoom back out"),"long"),i2e=!1))}function M(){l={a:e.aaxis.range[0],b:e.baxis.range[1],c:e.caxis.range[1]},c=l}function g(T,F){var q=T/e.xaxis._m,V=F/e.yaxis._m;c={a:l.a-V,b:l.b+(q+V)/2,c:l.c-(q-V)/2};var H=[c.a,c.b,c.c].sort(By.sorterAsc),X={a:H.indexOf(c.a),b:H.indexOf(c.b),c:H.indexOf(c.c)};H[0]<0&&(H[1]+H[0]/2<0?(H[2]+=H[0]+H[1],H[0]=H[1]=0):(H[2]+=H[0]/2,H[1]+=H[0]/2,H[0]=0),c={a:H[X.a],b:H[X.b],c:H[X.c]},F=(l.a-c.a)*e.yaxis._m,T=(l.c-c.c-l.b+c.b)*e.xaxis._m);var G=Dm(e.x0+T,e.y0+F);e.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",G);var N=Dm(-T,-F);e.clipDefRelative.select("path").attr("transform",N),e.aaxis.range=[c.a,e.sum-c.b-c.c],e.baxis.range=[e.sum-c.a-c.c,c.b],e.caxis.range=[e.sum-c.a-c.b,c.c],e.drawAxes(!1),e._hasClipOnAxisFalse&&e.plotContainer.select(".scatterlayer").selectAll(".trace").call(k8.hideOutsideRangePoints,e),r.emit("plotly_relayouting",b(c))}function P(){TH.call("_guiRelayout",r,b(c))}t.onmousemove=function(T){t2e.hover(r,T,e.id),r._fullLayout._lasthover=t,r._fullLayout._hoversubplot=e.id},t.onmouseout=function(T){r._dragging||e2e.unhover(r,T)},e2e.init(this.dragOptions)};function n2e(e){a2e.select(e).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}});var kH=ye((ylr,f2e)=>{"use strict";var cbt=dh(),fbt=Ju().attributes,Ol=Cd(),hbt=Bu().overrideAll,MH=no().extendFlat,EH={title:{text:Ol.title.text,font:Ol.title.font},color:Ol.color,tickmode:Ol.minor.tickmode,nticks:MH({},Ol.nticks,{dflt:6,min:1}),tick0:Ol.tick0,dtick:Ol.dtick,tickvals:Ol.tickvals,ticktext:Ol.ticktext,ticks:Ol.ticks,ticklen:Ol.ticklen,tickwidth:Ol.tickwidth,tickcolor:Ol.tickcolor,ticklabelstep:Ol.ticklabelstep,showticklabels:Ol.showticklabels,labelalias:Ol.labelalias,showtickprefix:Ol.showtickprefix,tickprefix:Ol.tickprefix,showticksuffix:Ol.showticksuffix,ticksuffix:Ol.ticksuffix,showexponent:Ol.showexponent,exponentformat:Ol.exponentformat,minexponent:Ol.minexponent,separatethousands:Ol.separatethousands,tickfont:Ol.tickfont,tickangle:Ol.tickangle,tickformat:Ol.tickformat,tickformatstops:Ol.tickformatstops,hoverformat:Ol.hoverformat,showline:MH({},Ol.showline,{dflt:!0}),linecolor:Ol.linecolor,linewidth:Ol.linewidth,showgrid:MH({},Ol.showgrid,{dflt:!0}),gridcolor:Ol.gridcolor,gridwidth:Ol.gridwidth,griddash:Ol.griddash,layer:Ol.layer,min:{valType:"number",dflt:0,min:0}},C8=f2e.exports=hbt({domain:fbt({name:"ternary"}),bgcolor:{valType:"color",dflt:cbt.background},sum:{valType:"number",dflt:1,min:0},aaxis:EH,baxis:EH,caxis:EH},"plot","from-root");C8.uirevision={valType:"any",editType:"none"};C8.aaxis.uirevision=C8.baxis.uirevision=C8.caxis.uirevision={valType:"any",editType:"none"}});var C_=ye((_lr,h2e)=>{"use strict";var dbt=Mr(),vbt=Vs(),pbt=Ju().defaults;h2e.exports=function(t,r,n,i){var a=i.type,o=i.attributes,s=i.handleDefaults,l=i.partition||"x",u=r._subplots[a],c=u.length,f=c&&u[0].replace(/\d+$/,""),h,d;function v(E,k){return dbt.coerce(h,d,o,E,k)}for(var x=0;x{"use strict";var gbt=va(),mbt=Vs(),L8=Mr(),ybt=C_(),_bt=t_(),xbt=r_(),bbt=T3(),wbt=xb(),Tbt=YM(),v2e=kH(),d2e=["aaxis","baxis","caxis"];p2e.exports=function(t,r,n){ybt(t,r,n,{type:"ternary",attributes:v2e,handleDefaults:Abt,font:r.font,paper_bgcolor:r.paper_bgcolor})};function Abt(e,t,r,n){var i=r("bgcolor"),a=r("sum");n.bgColor=gbt.combine(i,n.paper_bgcolor);for(var o,s,l,u=0;u=a&&(c.min=0,f.min=0,h.min=0,e.aaxis&&delete e.aaxis.min,e.baxis&&delete e.baxis.min,e.caxis&&delete e.caxis.min)}function Sbt(e,t,r,n){var i=v2e[t._name];function a(d,v){return L8.coerce(e,t,i,d,v)}a("uirevision",n.uirevision),t.type="linear";var o=a("color"),s=o!==i.color.dflt?o:r.font.color,l=t._name,u=l.charAt(0).toUpperCase(),c="Component "+u,f=a("title.text",c);t._hovertitle=f===c?f:u,L8.coerceFont(a,"title.font",r.font,{overrideDflt:{size:L8.bigFont(r.font.size),color:s}}),a("min"),wbt(e,t,a,"linear"),xbt(e,t,a,"linear"),_bt(e,t,a,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),bbt(e,t,a,{outerTicks:!0});var h=a("showticklabels");h&&(L8.coerceFont(a,"tickfont",r.font,{overrideDflt:{color:s}}),a("tickangle"),a("tickformat")),Tbt(e,t,a,{dfltColor:o,bgColor:r.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:i}),a("hoverformat"),a("layer")}});var m2e=ye(W0=>{"use strict";var Mbt=c2e(),Ebt=kd().getSubplotCalcData,kbt=Mr().counterRegex,OT="ternary";W0.name=OT;var Cbt=W0.attr="subplot";W0.idRoot=OT;W0.idRegex=W0.attrRegex=kbt(OT);var Lbt=W0.attributes={};Lbt[Cbt]={valType:"subplotid",dflt:"ternary",editType:"calc"};W0.layoutAttributes=kH();W0.supplyLayoutDefaults=g2e();W0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[OT],a=0;a{"use strict";y2e.exports={attributes:xH(),supplyDefaults:Ube(),colorbar:Kd(),formatLabels:Hbe(),calc:Zbe(),plot:Ybe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:Jbe(),selectPoints:lT(),eventData:Qbe(),moduleType:"trace",name:"scatterternary",basePlotModule:m2e(),categories:["ternary","symbols","showLegend","scatter-like"],meta:{}}});var b2e=ye((Tlr,x2e)=>{"use strict";x2e.exports=_2e()});var CH=ye((Alr,T2e)=>{"use strict";var jh=v4(),BT=no().extendFlat,w2e=Oc().axisHoverFormat;T2e.exports={y:jh.y,x:jh.x,x0:jh.x0,y0:jh.y0,xhoverformat:w2e("x"),yhoverformat:w2e("y"),name:BT({},jh.name,{}),orientation:BT({},jh.orientation,{}),bandwidth:{valType:"number",min:0,editType:"calc"},scalegroup:{valType:"string",dflt:"",editType:"calc"},scalemode:{valType:"enumerated",values:["width","count"],dflt:"width",editType:"calc"},spanmode:{valType:"enumerated",values:["soft","hard","manual"],dflt:"soft",editType:"calc"},span:{valType:"info_array",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}],editType:"calc"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,dflt:2,editType:"style"},editType:"plot"},fillcolor:jh.fillcolor,points:BT({},jh.boxpoints,{}),jitter:BT({},jh.jitter,{}),pointpos:BT({},jh.pointpos,{}),width:BT({},jh.width,{}),marker:jh.marker,text:jh.text,hovertext:jh.hovertext,hovertemplate:jh.hovertemplate,quartilemethod:jh.quartilemethod,box:{visible:{valType:"boolean",dflt:!1,editType:"plot"},width:{valType:"number",min:0,max:1,dflt:.25,editType:"plot"},fillcolor:{valType:"color",editType:"style"},line:{color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"style"},editType:"plot"},meanline:{visible:{valType:"boolean",dflt:!1,editType:"plot"},color:{valType:"color",editType:"style"},width:{valType:"number",min:0,editType:"style"},editType:"plot"},side:{valType:"enumerated",values:["both","positive","negative"],dflt:"both",editType:"calc"},offsetgroup:jh.offsetgroup,alignmentgroup:jh.alignmentgroup,selected:jh.selected,unselected:jh.unselected,hoveron:{valType:"flaglist",flags:["violins","points","kde"],dflt:"violins+points+kde",extras:["all"],editType:"style"},zorder:jh.zorder}});var IH=ye((Slr,A2e)=>{"use strict";var LH=p4(),PH=Mr().extendFlat;A2e.exports={violinmode:PH({},LH.boxmode,{}),violingap:PH({},LH.boxgap,{}),violingroupgap:PH({},LH.boxgroupgap,{})}});var C2e=ye((Mlr,k2e)=>{"use strict";var S2e=Mr(),Pbt=va(),M2e=m4(),E2e=CH();k2e.exports=function(t,r,n,i){function a(L,_){return S2e.coerce(t,r,E2e,L,_)}function o(L,_){return S2e.coerce2(t,r,E2e,L,_)}if(M2e.handleSampleDefaults(t,r,a,i),r.visible!==!1){a("bandwidth"),a("side");var s=a("width");s||(a("scalegroup",r.name),a("scalemode"));var l=a("span"),u;Array.isArray(l)&&(u="manual"),a("spanmode",u);var c=a("line.color",(t.marker||{}).color||n),f=a("line.width"),h=a("fillcolor",Pbt.addOpacity(r.line.color,.5));M2e.handlePointsDefaults(t,r,a,{prefix:""});var d=o("box.width"),v=o("box.fillcolor",h),x=o("box.line.color",c),b=o("box.line.width",f),p=a("box.visible",!!(d||v||x||b));p||(r.box={visible:!1});var E=o("meanline.color",c),k=o("meanline.width",f),A=a("meanline.visible",!!(E||k));A||(r.meanline={visible:!1}),a("quartilemethod"),a("zorder")}}});var P2e=ye((Elr,L2e)=>{"use strict";var Ibt=Mr(),Rbt=IH(),Dbt=VI();L2e.exports=function(t,r,n){function i(a,o){return Ibt.coerce(t,r,Rbt,a,o)}Dbt._supply(t,r,n,i,"violin")}});var P8=ye(o2=>{"use strict";var zbt=Mr(),Fbt={gaussian:function(e){return 1/Math.sqrt(2*Math.PI)*Math.exp(-.5*e*e)}};o2.makeKDE=function(e,t,r){var n=r.length,i=Fbt.gaussian,a=e.bandwidth,o=1/(n*a);return function(s){for(var l=0,u=0;u{"use strict";var RH=Mr(),DH=Qa(),qbt=MV(),I2e=P8(),Obt=es().BADNUM;R2e.exports=function(t,r){var n=qbt(t,r);if(n[0].t.empty)return n;for(var i=t._fullLayout,a=DH.getFromId(t,r[r.orientation==="h"?"xaxis":"yaxis"]),o=1/0,s=-1/0,l=0,u=0,c=0;c{"use strict";var Vbt=GI().setPositionOffset,z2e=["v","h"];F2e.exports=function(t,r){for(var n=t.calcdata,i=r.xaxis,a=r.yaxis,o=0;o{"use strict";var zH=xa(),FH=Mr(),Hbt=ao(),qH=jI(),Gbt=fU(),jbt=P8();O2e.exports=function(t,r,n,i){var a=t._context.staticPlot,o=t._fullLayout,s=r.xaxis,l=r.yaxis;function u(c,f){var h=Gbt(c,{xaxis:s,yaxis:l,trace:f,connectGaps:!0,baseTolerance:.75,shape:"spline",simplify:!0,linearized:!0});return Hbt.smoothopen(h[0],1)}FH.makeTraceGroups(i,n,"trace violins").each(function(c){var f=zH.select(this),h=c[0],d=h.t,v=h.trace;if(v.visible!==!0||d.empty){f.remove();return}var x=d.bPos,b=d.bdPos,p=r[d.valLetter+"axis"],E=r[d.posLetter+"axis"],k=v.side==="both",A=k||v.side==="positive",L=k||v.side==="negative",_=f.selectAll("path.violin").data(FH.identity);_.enter().append("path").style("vector-effect",a?"none":"non-scaling-stroke").attr("class","violin"),_.exit().remove(),_.each(function(V){var H=zH.select(this),X=V.density,G=X.length,N=E.c2l(V.pos+x,!0),W=E.l2p(N),re;if(v.width)re=d.maxKDE/b;else{var ae=o._violinScaleGroupStats[v.scalegroup];re=v.scalemode==="count"?ae.maxKDE/b*(ae.maxCount/V.pts.length):ae.maxKDE/b}var _e,Me,ke,ge,ie,Te,Ee;if(A){for(Te=new Array(G),ge=0;ge{"use strict";var N2e=xa(),NT=va(),Wbt=op().stylePoints;U2e.exports=function(t){var r=N2e.select(t).selectAll("g.trace.violins");r.style("opacity",function(n){return n[0].trace.opacity}),r.each(function(n){var i=n[0].trace,a=N2e.select(this),o=i.box||{},s=o.line||{},l=i.meanline||{},u=l.width;a.selectAll("path.violin").style("stroke-width",i.line.width+"px").call(NT.stroke,i.line.color).call(NT.fill,i.fillcolor),a.selectAll("path.box").style("stroke-width",s.width+"px").call(NT.stroke,s.color).call(NT.fill,o.fillcolor);var c={"stroke-width":u+"px","stroke-dasharray":2*u+"px,"+u+"px"};a.selectAll("path.mean").style(c).call(NT.stroke,l.color),a.selectAll("path.meanline").style(c).call(NT.stroke,l.color),Wbt(a,i,t)})}});var W2e=ye((Rlr,j2e)=>{"use strict";var Zbt=va(),OH=Mr(),Xbt=Qa(),H2e=PV(),G2e=P8();j2e.exports=function(t,r,n,i,a){a||(a={});var o=a.hoverLayer,s=t.cd,l=s[0].trace,u=l.hoveron,c=u.indexOf("violins")!==-1,f=u.indexOf("kde")!==-1,h=[],d,v;if(c||f){var x=H2e.hoverOnBoxes(t,r,n,i);if(f&&x.length>0){var b=t.xa,p=t.ya,E,k,A,L,_;l.orientation==="h"?(_=r,E="y",A=p,k="x",L=b):(_=n,E="x",A=b,k="y",L=p);var C=s[t.index];if(_>=C.span[0]&&_<=C.span[1]){var M=OH.extendFlat({},t),g=L.c2p(_,!0),P=G2e.getKdeValue(C,l,_),T=G2e.getPositionOnKdePath(C,l,g),F=A._offset,q=A._length;M[E+"0"]=T[0],M[E+"1"]=T[1],M[k+"0"]=M[k+"1"]=g,M[k+"Label"]=k+": "+Xbt.hoverLabelText(L,_,l[k+"hoverformat"])+", "+s[0].t.labels.kde+" "+P.toFixed(3);for(var V=0,H=0;H{"use strict";Z2e.exports={attributes:CH(),layoutAttributes:IH(),supplyDefaults:C2e(),crossTraceDefaults:m4().crossTraceDefaults,supplyLayoutDefaults:P2e(),calc:D2e(),crossTraceCalc:q2e(),plot:B2e(),style:V2e(),styleOnSelect:op().styleOnSelect,hoverPoints:W2e(),selectPoints:IV(),moduleType:"trace",name:"violin",basePlotModule:Jf(),categories:["cartesian","svg","symbols","oriented","box-violin","showLegend","violinLayout","zoomScale"],meta:{}}});var K2e=ye((zlr,Y2e)=>{"use strict";Y2e.exports=X2e()});var $2e=ye((Flr,J2e)=>{"use strict";J2e.exports={eventDataKeys:["percentInitial","percentPrevious","percentTotal"]}});var NH=ye((qlr,twe)=>{"use strict";var lc=Lm(),BH=Uc().line,Ybt=vl(),Q2e=Oc().axisHoverFormat,Kbt=Wo().hovertemplateAttrs,Jbt=Wo().texttemplateAttrs,ewe=$2e(),Ny=no().extendFlat,$bt=va();twe.exports={x:lc.x,x0:lc.x0,dx:lc.dx,y:lc.y,y0:lc.y0,dy:lc.dy,xperiod:lc.xperiod,yperiod:lc.yperiod,xperiod0:lc.xperiod0,yperiod0:lc.yperiod0,xperiodalignment:lc.xperiodalignment,yperiodalignment:lc.yperiodalignment,xhoverformat:Q2e("x"),yhoverformat:Q2e("y"),hovertext:lc.hovertext,hovertemplate:Kbt({},{keys:ewe.eventDataKeys}),hoverinfo:Ny({},Ybt.hoverinfo,{flags:["name","x","y","text","percent initial","percent previous","percent total"]}),textinfo:{valType:"flaglist",flags:["label","text","percent initial","percent previous","percent total","value"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:Jbt({editType:"plot"},{keys:ewe.eventDataKeys.concat(["label","value"])}),text:lc.text,textposition:lc.textposition,insidetextanchor:Ny({},lc.insidetextanchor,{dflt:"middle"}),textangle:Ny({},lc.textangle,{dflt:0}),textfont:lc.textfont,insidetextfont:lc.insidetextfont,outsidetextfont:lc.outsidetextfont,constraintext:lc.constraintext,cliponaxis:lc.cliponaxis,orientation:Ny({},lc.orientation,{}),offset:Ny({},lc.offset,{arrayOk:!1}),width:Ny({},lc.width,{arrayOk:!1}),marker:Qbt(),connector:{fillcolor:{valType:"color",editType:"style"},line:{color:Ny({},BH.color,{dflt:$bt.defaultLine}),width:Ny({},BH.width,{dflt:0,editType:"plot"}),dash:BH.dash,editType:"style"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:lc.offsetgroup,alignmentgroup:lc.alignmentgroup,zorder:lc.zorder};function Qbt(){var e=Ny({},lc.marker);return delete e.pattern,delete e.cornerradius,e}});var UH=ye((Olr,rwe)=>{"use strict";rwe.exports={funnelmode:{valType:"enumerated",values:["stack","group","overlay"],dflt:"stack",editType:"calc"},funnelgap:{valType:"number",min:0,max:1,editType:"calc"},funnelgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HH=ye((Blr,nwe)=>{"use strict";var I8=Mr(),e2t=Hb(),t2t=r0().handleText,r2t=K3(),i2t=Pg(),iwe=NH(),VH=va();function n2t(e,t,r,n){function i(f,h){return I8.coerce(e,t,iwe,f,h)}var a=r2t(e,t,n,i);if(!a){t.visible=!1;return}i2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("orientation",t.y&&!t.x?"v":"h"),i("offset"),i("width");var o=i("text");i("hovertext"),i("hovertemplate");var s=i("textposition");t2t(e,t,n,i,s,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&!t.texttemplate&&i("textinfo",I8.isArrayOrTypedArray(o)?"text+value":"value");var l=i("marker.color",r);i("marker.line.color",VH.defaultLine),i("marker.line.width");var u=i("connector.visible");if(u){i("connector.fillcolor",a2t(l));var c=i("connector.line.width");c&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function a2t(e){var t=I8.isArrayOrTypedArray(e)?"#000":e;return VH.addOpacity(t,.5*VH.opacity(t))}function o2t(e,t){var r,n;function i(o){return I8.coerce(n._input,n,iwe,o)}for(var a=0;a{"use strict";var s2t=Mr(),l2t=UH();awe.exports=function(e,t,r){var n=!1;function i(s,l){return s2t.coerce(e,t,l2t,s,l)}for(var a=0;a{"use strict";var UT=Mr();swe.exports=function(t,r){for(var n=0;n{"use strict";var uwe=Qa(),cwe=Rg(),u2t=lwe(),c2t=F0(),P4=es().BADNUM;fwe.exports=function(t,r){var n=uwe.getFromId(t,r.xaxis||"x"),i=uwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c,f,h;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=cwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=cwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;var d=Math.min(o.length,a.length),v=new Array(d);for(r._base=[],f=0;f{"use strict";var dwe=Gb().setGroupPositions;vwe.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var R8=xa(),P_=Mr(),gwe=ao(),L_=es().BADNUM,f2t=i2(),h2t=_v().clearMinTextSize;ywe.exports=function(t,r,n,i){var a=t._fullLayout;h2t("funnel",a),d2t(t,r,n,i),v2t(t,r,n,i),f2t.plot(t,r,n,i,{mode:a.funnelmode,norm:a.funnelmode,gap:a.funnelgap,groupgap:a.funnelgroupgap})};function d2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;P_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=R8.select(this),l=o[0].trace,u=P_.ensureSingle(s,"g","regions");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.region").data(P_.identity);f.enter().append("g").classed("region",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=mwe(d,i,a,c),b=x[0],p=x[1],E="";b[0]!==L_&&p[0]!==L_&&b[1]!==L_&&p[1]!==L_&&b[2]!==L_&&p[2]!==L_&&b[3]!==L_&&p[3]!==L_&&(c?E+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2]+"H"+b[3]+"L"+b[1]+","+p[1]+"Z":E+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3]+"V"+p[2]+"L"+b[1]+","+p[0]+"Z"),E===""&&(E="M0,0Z"),P_.ensureSingle(R8.select(this),"path").attr("d",E).call(gwe.setClipUrl,t.layerClipId,e)}})})}function v2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;P_.makeTraceGroups(n,r,"trace bars").each(function(o){var s=R8.select(this),l=o[0].trace,u=P_.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible||!l.connector.line.width){u.remove();return}var c=l.orientation==="h",f=u.selectAll("g.line").data(P_.identity);f.enter().append("g").classed("line",!0),f.exit().remove();var h=f.size();f.each(function(d,v){if(!(v!==h-1&&!d.cNext)){var x=mwe(d,i,a,c),b=x[0],p=x[1],E="";b[3]!==void 0&&p[3]!==void 0&&(c?(E+="M"+b[0]+","+p[1]+"L"+b[2]+","+p[2],E+="M"+b[1]+","+p[1]+"L"+b[3]+","+p[2]):(E+="M"+b[1]+","+p[1]+"L"+b[2]+","+p[3],E+="M"+b[1]+","+p[0]+"L"+b[2]+","+p[2])),E===""&&(E="M0,0Z"),P_.ensureSingle(R8.select(this),"path").attr("d",E).call(gwe.setClipUrl,t.layerClipId,e)}})})}function mwe(e,t,r,n){var i=[],a=[],o=n?t:r,s=n?r:t;return i[0]=o.c2p(e.s0,!0),a[0]=s.c2p(e.p0,!0),i[1]=o.c2p(e.s1,!0),a[1]=s.c2p(e.p1,!0),i[2]=o.c2p(e.nextS0,!0),a[2]=s.c2p(e.nextP0,!0),i[3]=o.c2p(e.nextS1,!0),a[3]=s.c2p(e.nextP1,!0),n?[i,a]:[a,i]}});var wwe=ye((jlr,bwe)=>{"use strict";var I4=xa(),xwe=ao(),jH=va(),p2t=U1().DESELECTDIM,g2t=N0(),m2t=_v().resizeText,y2t=g2t.styleTextPoints;function _2t(e,t,r){var n=r||I4.select(e).selectAll('g[class^="funnellayer"]').selectAll("g.trace");m2t(e,n,"funnel"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=I4.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o.marker;I4.select(this).call(jH.fill,s.mc||l.color).call(jH.stroke,s.mlc||l.line.color).call(xwe.dashLine,l.line.dash,s.mlw||l.line.width).style("opacity",o.selectedpoints&&!s.selected?p2t:1)}}),y2t(a,o,e),a.selectAll(".regions").each(function(){I4.select(this).selectAll("path").style("stroke-width",0).call(jH.fill,o.connector.fillcolor)}),a.selectAll(".lines").each(function(){var s=o.connector.line;xwe.lineGroupStyle(I4.select(this).selectAll("path"),s.width,s.color,s.dash)})})}bwe.exports={style:_2t}});var Swe=ye((Wlr,Awe)=>{"use strict";var Twe=va().opacity,x2t=TT().hoverOnBars,WH=Mr().formatPercent;Awe.exports=function(t,r,n,i,a){var o=x2t(t,r,n,i,a);if(o){var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=o.index,f=s[c],h=u?"x":"y";o[h+"LabelVal"]=f.s,o.percentInitial=f.begR,o.percentInitialLabel=WH(f.begR,1),o.percentPrevious=f.difR,o.percentPreviousLabel=WH(f.difR,1),o.percentTotal=f.sumR,o.percentTotalLabel=WH(f.sumR,1);var d=f.hi||l.hoverinfo,v=[];if(d&&d!=="none"&&d!=="skip"){var x=d==="all",b=d.split("+"),p=function(E){return x||b.indexOf(E)!==-1};p("percent initial")&&v.push(o.percentInitialLabel+" of initial"),p("percent previous")&&v.push(o.percentPreviousLabel+" of previous"),p("percent total")&&v.push(o.percentTotalLabel+" of total")}return o.extraText=v.join("
"),o.color=b2t(l,f),[o]}};function b2t(e,t){var r=e.marker,n=t.mc||r.color,i=t.mlc||r.line.color,a=t.mlw||r.line.width;if(Twe(n))return n;if(Twe(i)&&a)return i}});var Ewe=ye((Zlr,Mwe)=>{"use strict";Mwe.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"percentInitial"in r&&(t.percentInitial=r.percentInitial),"percentPrevious"in r&&(t.percentPrevious=r.percentPrevious),"percentTotal"in r&&(t.percentTotal=r.percentTotal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var Cwe=ye((Xlr,kwe)=>{"use strict";kwe.exports={attributes:NH(),layoutAttributes:UH(),supplyDefaults:HH().supplyDefaults,crossTraceDefaults:HH().crossTraceDefaults,supplyLayoutDefaults:owe(),calc:hwe(),crossTraceCalc:pwe(),plot:_we(),style:wwe().style,hoverPoints:Swe(),eventData:Ewe(),selectPoints:AT(),moduleType:"trace",name:"funnel",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var Pwe=ye((Ylr,Lwe)=>{"use strict";Lwe.exports=Cwe()});var Rwe=ye((Klr,Iwe)=>{"use strict";Iwe.exports={eventDataKeys:["initial","delta","final"]}});var YH=ye((Jlr,Fwe)=>{"use strict";var Uu=Lm(),ZH=Uc().line,w2t=vl(),Dwe=Oc().axisHoverFormat,T2t=Wo().hovertemplateAttrs,A2t=Wo().texttemplateAttrs,zwe=Rwe(),VT=no().extendFlat,S2t=va();function XH(e){return{marker:{color:VT({},Uu.marker.color,{arrayOk:!1,editType:"style"}),line:{color:VT({},Uu.marker.line.color,{arrayOk:!1,editType:"style"}),width:VT({},Uu.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}Fwe.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:Uu.x,x0:Uu.x0,dx:Uu.dx,y:Uu.y,y0:Uu.y0,dy:Uu.dy,xperiod:Uu.xperiod,yperiod:Uu.yperiod,xperiod0:Uu.xperiod0,yperiod0:Uu.yperiod0,xperiodalignment:Uu.xperiodalignment,yperiodalignment:Uu.yperiodalignment,xhoverformat:Dwe("x"),yhoverformat:Dwe("y"),hovertext:Uu.hovertext,hovertemplate:T2t({},{keys:zwe.eventDataKeys}),hoverinfo:VT({},w2t.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:A2t({editType:"plot"},{keys:zwe.eventDataKeys.concat(["label"])}),text:Uu.text,textposition:Uu.textposition,insidetextanchor:Uu.insidetextanchor,textangle:Uu.textangle,textfont:Uu.textfont,insidetextfont:Uu.insidetextfont,outsidetextfont:Uu.outsidetextfont,constraintext:Uu.constraintext,cliponaxis:Uu.cliponaxis,orientation:Uu.orientation,offset:Uu.offset,width:Uu.width,increasing:XH("increasing"),decreasing:XH("decreasing"),totals:XH("intermediate sums and total"),connector:{line:{color:VT({},ZH.color,{dflt:S2t.defaultLine}),width:VT({},ZH.width,{editType:"plot"}),dash:ZH.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:Uu.offsetgroup,alignmentgroup:Uu.alignmentgroup,zorder:Uu.zorder}});var KH=ye(($lr,qwe)=>{"use strict";qwe.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}});var HT=ye((Qlr,Owe)=>{"use strict";Owe.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"\u25B2"},DECREASING:{COLOR:"#FF4136",SYMBOL:"\u25BC"}}});var $H=ye((eur,Vwe)=>{"use strict";var Bwe=Mr(),M2t=Hb(),E2t=r0().handleText,k2t=K3(),C2t=Pg(),Nwe=YH(),L2t=va(),Uwe=HT(),P2t=Uwe.INCREASING.COLOR,I2t=Uwe.DECREASING.COLOR,R2t="#4499FF";function JH(e,t,r){e(t+".marker.color",r),e(t+".marker.line.color",L2t.defaultLine),e(t+".marker.line.width")}function D2t(e,t,r,n){function i(u,c){return Bwe.coerce(e,t,Nwe,u,c)}var a=k2t(e,t,n,i);if(!a){t.visible=!1;return}C2t(e,t,n,i),i("xhoverformat"),i("yhoverformat"),i("measure"),i("orientation",t.x&&!t.y?"h":"v"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate");var o=i("textposition");E2t(e,t,n,i,o,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),t.textposition!=="none"&&(i("texttemplate"),t.texttemplate||i("textinfo")),JH(i,"increasing",P2t),JH(i,"decreasing",I2t),JH(i,"totals",R2t);var s=i("connector.visible");if(s){i("connector.mode");var l=i("connector.line.width");l&&(i("connector.line.color"),i("connector.line.dash"))}i("zorder")}function z2t(e,t){var r,n;function i(o){return Bwe.coerce(n._input,n,Nwe,o)}if(t.waterfallmode==="group")for(var a=0;a{"use strict";var F2t=Mr(),q2t=KH();Hwe.exports=function(e,t,r){var n=!1;function i(s,l){return F2t.coerce(e,t,q2t,s,l)}for(var a=0;a{"use strict";var jwe=Qa(),Wwe=Rg(),Zwe=Mr().mergeArray,O2t=F0(),Xwe=es().BADNUM;function QH(e){return e==="a"||e==="absolute"}function eG(e){return e==="t"||e==="total"}Ywe.exports=function(t,r){var n=jwe.getFromId(t,r.xaxis||"x"),i=jwe.getFromId(t,r.yaxis||"y"),a,o,s,l,u,c;r.orientation==="h"?(a=n.makeCalcdata(r,"x"),s=i.makeCalcdata(r,"y"),l=Wwe(r,i,"y",s),u=!!r.yperiodalignment,c="y"):(a=i.makeCalcdata(r,"y"),s=n.makeCalcdata(r,"x"),l=Wwe(r,n,"x",s),u=!!r.xperiodalignment,c="x"),o=l.vals;for(var f=Math.min(o.length,a.length),h=new Array(f),d=0,v,x=!1,b=0;b{"use strict";var Jwe=Gb().setGroupPositions;$we.exports=function(t,r){var n=t._fullLayout,i=t._fullData,a=t.calcdata,o=r.xaxis,s=r.yaxis,l=[],u=[],c=[],f,h;for(h=0;h{"use strict";var e3e=xa(),D8=Mr(),B2t=ao(),GT=es().BADNUM,N2t=i2(),U2t=_v().clearMinTextSize;t3e.exports=function(t,r,n,i){var a=t._fullLayout;U2t("waterfall",a),N2t.plot(t,r,n,i,{mode:a.waterfallmode,norm:a.waterfallmode,gap:a.waterfallgap,groupgap:a.waterfallgroupgap}),V2t(t,r,n,i)};function V2t(e,t,r,n){var i=t.xaxis,a=t.yaxis;D8.makeTraceGroups(n,r,"trace bars").each(function(o){var s=e3e.select(this),l=o[0].trace,u=D8.ensureSingle(s,"g","lines");if(!l.connector||!l.connector.visible){u.remove();return}var c=l.orientation==="h",f=l.connector.mode,h=u.selectAll("g.line").data(D8.identity);h.enter().append("g").classed("line",!0),h.exit().remove();var d=h.size();h.each(function(v,x){if(!(x!==d-1&&!v.cNext)){var b=H2t(v,i,a,c),p=b[0],E=b[1],k="";p[0]!==GT&&E[0]!==GT&&p[1]!==GT&&E[1]!==GT&&(f==="spanning"&&!v.isSum&&x>0&&(c?k+="M"+p[0]+","+E[1]+"V"+E[0]:k+="M"+p[1]+","+E[0]+"H"+p[0]),f!=="between"&&(v.isSum||x{"use strict";var z8=xa(),i3e=ao(),n3e=va(),G2t=U1().DESELECTDIM,j2t=N0(),W2t=_v().resizeText,Z2t=j2t.styleTextPoints;function X2t(e,t,r){var n=r||z8.select(e).selectAll('g[class^="waterfalllayer"]').selectAll("g.trace");W2t(e,n,"waterfall"),n.style("opacity",function(i){return i[0].trace.opacity}),n.each(function(i){var a=z8.select(this),o=i[0].trace;a.selectAll(".point > path").each(function(s){if(!s.isBlank){var l=o[s.dir].marker;z8.select(this).call(n3e.fill,l.color).call(n3e.stroke,l.line.color).call(i3e.dashLine,l.line.dash,l.line.width).style("opacity",o.selectedpoints&&!s.selected?G2t:1)}}),Z2t(a,o,e),a.selectAll(".lines").each(function(){var s=o.connector.line;i3e.lineGroupStyle(z8.select(this).selectAll("path"),s.width,s.color,s.dash)})})}a3e.exports={style:X2t}});var f3e=ye((our,c3e)=>{"use strict";var Y2t=Qa().hoverLabelText,s3e=va().opacity,K2t=TT().hoverOnBars,l3e=HT(),u3e={increasing:l3e.INCREASING.SYMBOL,decreasing:l3e.DECREASING.SYMBOL};c3e.exports=function(t,r,n,i,a){var o=K2t(t,r,n,i,a);if(!o)return;var s=o.cd,l=s[0].trace,u=l.orientation==="h",c=u?"x":"y",f=u?t.xa:t.ya;function h(_){return Y2t(f,_,l[c+"hoverformat"])}var d=o.index,v=s[d],x=v.isSum?v.b+v.s:v.rawS;o.initial=v.b+v.s-x,o.delta=x,o.final=o.initial+o.delta;var b=h(Math.abs(o.delta));o.deltaLabel=x<0?"("+b+")":b,o.finalLabel=h(o.final),o.initialLabel=h(o.initial);var p=v.hi||l.hoverinfo,E=[];if(p&&p!=="none"&&p!=="skip"){var k=p==="all",A=p.split("+"),L=function(_){return k||A.indexOf(_)!==-1};v.isSum||(L("final")&&(u?!L("x"):!L("y"))&&E.push(o.finalLabel),L("delta")&&(x<0?E.push(o.deltaLabel+" "+u3e.decreasing):E.push(o.deltaLabel+" "+u3e.increasing)),L("initial")&&E.push("Initial: "+o.initialLabel))}return E.length&&(o.extraText=E.join("
")),o.color=J2t(l,v),[o]};function J2t(e,t){var r=e[t.dir].marker,n=r.color,i=r.line.color,a=r.line.width;if(s3e(n))return n;if(s3e(i)&&a)return i}});var d3e=ye((sur,h3e)=>{"use strict";h3e.exports=function(t,r){return t.x="xVal"in r?r.xVal:r.x,t.y="yVal"in r?r.yVal:r.y,"initial"in r&&(t.initial=r.initial),"delta"in r&&(t.delta=r.delta),"final"in r&&(t.final=r.final),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t}});var p3e=ye((lur,v3e)=>{"use strict";v3e.exports={attributes:YH(),layoutAttributes:KH(),supplyDefaults:$H().supplyDefaults,crossTraceDefaults:$H().crossTraceDefaults,supplyLayoutDefaults:Gwe(),calc:Kwe(),crossTraceCalc:Qwe(),plot:r3e(),style:o3e().style,hoverPoints:f3e(),eventData:d3e(),selectPoints:AT(),moduleType:"trace",name:"waterfall",basePlotModule:Jf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}});var m3e=ye((uur,g3e)=>{"use strict";g3e.exports=p3e()});var jT=ye((cur,y3e)=>{"use strict";y3e.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(e){return e.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(e){return e.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(e){var t=e.slice(0,3);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(e){var t=e.slice(0,4);return t[1]=t[1]+"%",t[2]=t[2]+"%",t},suffix:["\xB0","%","%",""]}}}});var tG=ye((fur,x3e)=>{"use strict";var $2t=vl(),Q2t=Uc().zorder,ewt=Wo().hovertemplateAttrs,_3e=no().extendFlat,twt=jT().colormodel,D4=["rgb","rgba","rgba256","hsl","hsla"],rwt=[],iwt=[];for(WT=0;WT{"use strict";var nwt=Mr(),awt=tG(),b3e=jT(),owt=Ly().IMAGE_URL_PREFIX;w3e.exports=function(t,r){function n(o,s){return nwt.coerce(t,r,awt,o,s)}n("source"),r.source&&!r.source.match(owt)&&delete r.source,r._hasSource=!!r.source;var i=n("z");if(r._hasZ=!(i===void 0||!i.length||!i[0]||!i[0].length),!r._hasZ&&!r._hasSource){r.visible=!1;return}n("x0"),n("y0"),n("dx"),n("dy");var a;r._hasZ?(n("colormodel","rgb"),a=b3e.colormodel[r.colormodel],n("zmin",a.zminDflt||a.min),n("zmax",a.zmaxDflt||a.max)):r._hasSource&&(r.colormodel="rgba256",a=b3e.colormodel[r.colormodel],r.zmin=a.zminDflt,r.zmax=a.zmaxDflt),n("zsmooth"),n("text"),n("hovertext"),n("hovertemplate"),r._length=null,n("zorder")}});var Uy=ye((dur,rG)=>{typeof Object.create=="function"?rG.exports=function(t,r){r&&(t.super_=r,t.prototype=Object.create(r.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}))}:rG.exports=function(t,r){if(r){t.super_=r;var n=function(){};n.prototype=r.prototype,t.prototype=new n,t.prototype.constructor=t}}});var iG=ye((vur,A3e)=>{A3e.exports=vb().EventEmitter});var E3e=ye(F8=>{"use strict";F8.byteLength=lwt;F8.toByteArray=cwt;F8.fromByteArray=dwt;var Fm=[],Z0=[],swt=typeof Uint8Array!="undefined"?Uint8Array:Array,nG="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(s2=0,S3e=nG.length;s20)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");r===-1&&(r=t);var n=r===t?0:4-r%4;return[r,n]}function lwt(e){var t=M3e(e),r=t[0],n=t[1];return(r+n)*3/4-n}function uwt(e,t,r){return(t+r)*3/4-r}function cwt(e){var t,r=M3e(e),n=r[0],i=r[1],a=new swt(uwt(e,n,i)),o=0,s=i>0?n-4:n,l;for(l=0;l>16&255,a[o++]=t>>8&255,a[o++]=t&255;return i===2&&(t=Z0[e.charCodeAt(l)]<<2|Z0[e.charCodeAt(l+1)]>>4,a[o++]=t&255),i===1&&(t=Z0[e.charCodeAt(l)]<<10|Z0[e.charCodeAt(l+1)]<<4|Z0[e.charCodeAt(l+2)]>>2,a[o++]=t>>8&255,a[o++]=t&255),a}function fwt(e){return Fm[e>>18&63]+Fm[e>>12&63]+Fm[e>>6&63]+Fm[e&63]}function hwt(e,t,r){for(var n,i=[],a=t;as?s:o+a));return n===1?(t=e[r-1],i.push(Fm[t>>2]+Fm[t<<4&63]+"==")):n===2&&(t=(e[r-2]<<8)+e[r-1],i.push(Fm[t>>10]+Fm[t>>4&63]+Fm[t<<2&63]+"=")),i.join("")}});var k3e=ye(aG=>{aG.read=function(e,t,r,n,i){var a,o,s=i*8-n-1,l=(1<>1,c=-7,f=r?i-1:0,h=r?-1:1,d=e[t+f];for(f+=h,a=d&(1<<-c)-1,d>>=-c,c+=s;c>0;a=a*256+e[t+f],f+=h,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+f],f+=h,c-=8);if(a===0)a=1-u;else{if(a===l)return o?NaN:(d?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-u}return(d?-1:1)*o*Math.pow(2,a-n)};aG.write=function(e,t,r,n,i,a){var o,s,l,u=a*8-i-1,c=(1<>1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:a-1,v=n?1:-1,x=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-o))<1&&(o--,l*=2),o+f>=1?t+=h/l:t+=h*Math.pow(2,1-f),t*l>=2&&(o++,l/=2),o+f>=c?(s=0,o=c):o+f>=1?(s=(t*l-1)*Math.pow(2,i),o=o+f):(s=t*Math.pow(2,f-1)*Math.pow(2,i),o=0));i>=8;e[r+d]=s&255,d+=v,s/=256,i-=8);for(o=o<0;e[r+d]=o&255,d+=v,o/=256,u-=8);e[r+d-v]|=x*128}});var u2=ye(KT=>{"use strict";var oG=E3e(),XT=k3e(),C3e=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;KT.Buffer=In;KT.SlowBuffer=_wt;KT.INSPECT_MAX_BYTES=50;var q8=2147483647;KT.kMaxLength=q8;In.TYPED_ARRAY_SUPPORT=vwt();!In.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function vwt(){try{let e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),e.foo()===42}catch(e){return!1}}Object.defineProperty(In.prototype,"parent",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.buffer}});Object.defineProperty(In.prototype,"offset",{enumerable:!0,get:function(){if(In.isBuffer(this))return this.byteOffset}});function Vy(e){if(e>q8)throw new RangeError('The value "'+e+'" is invalid for option "size"');let t=new Uint8Array(e);return Object.setPrototypeOf(t,In.prototype),t}function In(e,t,r){if(typeof e=="number"){if(typeof t=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return cG(e)}return R3e(e,t,r)}In.poolSize=8192;function R3e(e,t,r){if(typeof e=="string")return gwt(e,t);if(ArrayBuffer.isView(e))return mwt(e);if(e==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(qm(e,ArrayBuffer)||e&&qm(e.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(qm(e,SharedArrayBuffer)||e&&qm(e.buffer,SharedArrayBuffer)))return lG(e,t,r);if(typeof e=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let n=e.valueOf&&e.valueOf();if(n!=null&&n!==e)return In.from(n,t,r);let i=ywt(e);if(i)return i;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof e[Symbol.toPrimitive]=="function")return In.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}In.from=function(e,t,r){return R3e(e,t,r)};Object.setPrototypeOf(In.prototype,Uint8Array.prototype);Object.setPrototypeOf(In,Uint8Array);function D3e(e){if(typeof e!="number")throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function pwt(e,t,r){return D3e(e),e<=0?Vy(e):t!==void 0?typeof r=="string"?Vy(e).fill(t,r):Vy(e).fill(t):Vy(e)}In.alloc=function(e,t,r){return pwt(e,t,r)};function cG(e){return D3e(e),Vy(e<0?0:fG(e)|0)}In.allocUnsafe=function(e){return cG(e)};In.allocUnsafeSlow=function(e){return cG(e)};function gwt(e,t){if((typeof t!="string"||t==="")&&(t="utf8"),!In.isEncoding(t))throw new TypeError("Unknown encoding: "+t);let r=z3e(e,t)|0,n=Vy(r),i=n.write(e,t);return i!==r&&(n=n.slice(0,i)),n}function sG(e){let t=e.length<0?0:fG(e.length)|0,r=Vy(t);for(let n=0;n=q8)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+q8.toString(16)+" bytes");return e|0}function _wt(e){return+e!=e&&(e=0),In.alloc(+e)}In.isBuffer=function(t){return t!=null&&t._isBuffer===!0&&t!==In.prototype};In.compare=function(t,r){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),qm(r,Uint8Array)&&(r=In.from(r,r.offset,r.byteLength)),!In.isBuffer(t)||!In.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(t===r)return 0;let n=t.length,i=r.length;for(let a=0,o=Math.min(n,i);ai.length?(In.isBuffer(o)||(o=In.from(o)),o.copy(i,a)):Uint8Array.prototype.set.call(i,o,a);else if(In.isBuffer(o))o.copy(i,a);else throw new TypeError('"list" argument must be an Array of Buffers');a+=o.length}return i};function z3e(e,t){if(In.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||qm(e,ArrayBuffer))return e.byteLength;if(typeof e!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);let r=e.length,n=arguments.length>2&&arguments[2]===!0;if(!n&&r===0)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return uG(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return G3e(e).length;default:if(i)return n?-1:uG(e).length;t=(""+t).toLowerCase(),i=!0}}In.byteLength=z3e;function xwt(e,t,r){let n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Lwt(this,t,r);case"utf8":case"utf-8":return q3e(this,t,r);case"ascii":return kwt(this,t,r);case"latin1":case"binary":return Cwt(this,t,r);case"base64":return Mwt(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Pwt(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}In.prototype._isBuffer=!0;function l2(e,t,r){let n=e[t];e[t]=e[r],e[r]=n}In.prototype.swap16=function(){let t=this.length;if(t%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;rr&&(t+=" ... "),""};C3e&&(In.prototype[C3e]=In.prototype.inspect);In.prototype.compare=function(t,r,n,i,a){if(qm(t,Uint8Array)&&(t=In.from(t,t.offset,t.byteLength)),!In.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;let o=a-i,s=n-r,l=Math.min(o,s),u=this.slice(i,a),c=t.slice(r,n);for(let f=0;f2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,dG(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=In.from(t,n)),In.isBuffer(t))return t.length===0?-1:L3e(e,t,r,n,i);if(typeof t=="number")return t=t&255,typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):L3e(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function L3e(e,t,r,n,i){let a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function l(c,f){return a===1?c[f]:c.readUInt16BE(f*a)}let u;if(i){let c=-1;for(u=r;uo&&(r=o-s),u=r;u>=0;u--){let c=!0;for(let f=0;fi&&(n=i)):n=i;let a=t.length;n>a/2&&(n=a/2);let o;for(o=0;o>>0,isFinite(n)?(n=n>>>0,i===void 0&&(i="utf8")):(i=n,n=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let a=this.length-r;if((n===void 0||n>a)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return bwt(this,t,r,n);case"utf8":case"utf-8":return wwt(this,t,r,n);case"ascii":case"latin1":case"binary":return Twt(this,t,r,n);case"base64":return Awt(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Swt(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};In.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Mwt(e,t,r){return t===0&&r===e.length?oG.fromByteArray(e):oG.fromByteArray(e.slice(t,r))}function q3e(e,t,r){r=Math.min(e.length,r);let n=[],i=t;for(;i239?4:a>223?3:a>191?2:1;if(i+s<=r){let l,u,c,f;switch(s){case 1:a<128&&(o=a);break;case 2:l=e[i+1],(l&192)===128&&(f=(a&31)<<6|l&63,f>127&&(o=f));break;case 3:l=e[i+1],u=e[i+2],(l&192)===128&&(u&192)===128&&(f=(a&15)<<12|(l&63)<<6|u&63,f>2047&&(f<55296||f>57343)&&(o=f));break;case 4:l=e[i+1],u=e[i+2],c=e[i+3],(l&192)===128&&(u&192)===128&&(c&192)===128&&(f=(a&15)<<18|(l&63)<<12|(u&63)<<6|c&63,f>65535&&f<1114112&&(o=f))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return Ewt(n)}var P3e=4096;function Ewt(e){let t=e.length;if(t<=P3e)return String.fromCharCode.apply(String,e);let r="",n=0;for(;nn)&&(r=n);let i="";for(let a=t;an&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),rr)throw new RangeError("Trying to access beyond buffer length")}In.prototype.readUintLE=In.prototype.readUIntLE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t+--r],a=1;for(;r>0&&(a*=256);)i+=this[t+--r]*a;return i};In.prototype.readUint8=In.prototype.readUInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]};In.prototype.readUint16LE=In.prototype.readUInt16LE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]|this[t+1]<<8};In.prototype.readUint16BE=In.prototype.readUInt16BE=function(t,r){return t=t>>>0,r||$d(t,2,this.length),this[t]<<8|this[t+1]};In.prototype.readUint32LE=In.prototype.readUInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};In.prototype.readUint32BE=In.prototype.readUInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};In.prototype.readBigUInt64LE=I_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r+this[++t]*2**8+this[++t]*2**16+this[++t]*2**24,a=this[++t]+this[++t]*2**8+this[++t]*2**16+n*2**24;return BigInt(i)+(BigInt(a)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=r*2**24+this[++t]*2**16+this[++t]*2**8+this[++t],a=this[++t]*2**24+this[++t]*2**16+this[++t]*2**8+n;return(BigInt(i)<>>0,r=r>>>0,n||$d(t,r,this.length);let i=this[t],a=1,o=0;for(;++o=a&&(i-=Math.pow(2,8*r)),i};In.prototype.readIntBE=function(t,r,n){t=t>>>0,r=r>>>0,n||$d(t,r,this.length);let i=r,a=1,o=this[t+--i];for(;i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};In.prototype.readInt8=function(t,r){return t=t>>>0,r||$d(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};In.prototype.readInt16LE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};In.prototype.readInt16BE=function(t,r){t=t>>>0,r||$d(t,2,this.length);let n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};In.prototype.readInt32LE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};In.prototype.readInt32BE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};In.prototype.readBigInt64LE=I_(function(t){t=t>>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=this[t+4]+this[t+5]*2**8+this[t+6]*2**16+(n<<24);return(BigInt(i)<>>0,YT(t,"offset");let r=this[t],n=this[t+7];(r===void 0||n===void 0)&&z4(t,this.length-8);let i=(r<<24)+this[++t]*2**16+this[++t]*2**8+this[++t];return(BigInt(i)<>>0,r||$d(t,4,this.length),XT.read(this,t,!0,23,4)};In.prototype.readFloatBE=function(t,r){return t=t>>>0,r||$d(t,4,this.length),XT.read(this,t,!1,23,4)};In.prototype.readDoubleLE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!0,52,8)};In.prototype.readDoubleBE=function(t,r){return t=t>>>0,r||$d(t,8,this.length),XT.read(this,t,!1,52,8)};function Rp(e,t,r,n,i,a){if(!In.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}In.prototype.writeUintLE=In.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=1,o=0;for(this[r]=t&255;++o>>0,n=n>>>0,!i){let s=Math.pow(2,8*n)-1;Rp(this,t,r,n,s,0)}let a=n-1,o=1;for(this[r+a]=t&255;--a>=0&&(o*=256);)this[r+a]=t/o&255;return r+n};In.prototype.writeUint8=In.prototype.writeUInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,255,0),this[r]=t&255,r+1};In.prototype.writeUint16LE=In.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeUint16BE=In.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,65535,0),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeUint32LE=In.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255,r+4};In.prototype.writeUint32BE=In.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,4294967295,0),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};function O3e(e,t,r,n,i){H3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a,a=a>>8,e[r++]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,o=o>>8,e[r++]=o,r}function B3e(e,t,r,n,i){H3e(t,n,i,e,r,7);let a=Number(t&BigInt(4294967295));e[r+7]=a,a=a>>8,e[r+6]=a,a=a>>8,e[r+5]=a,a=a>>8,e[r+4]=a;let o=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=o,o=o>>8,e[r+2]=o,o=o>>8,e[r+1]=o,o=o>>8,e[r]=o,r+8}In.prototype.writeBigUInt64LE=I_(function(t,r=0){return O3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeBigUInt64BE=I_(function(t,r=0){return B3e(this,t,r,BigInt(0),BigInt("0xffffffffffffffff"))});In.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=0,o=1,s=0;for(this[r]=t&255;++a>0)-s&255;return r+n};In.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r>>>0,!i){let l=Math.pow(2,8*n-1);Rp(this,t,r,n,l-1,-l)}let a=n-1,o=1,s=0;for(this[r+a]=t&255;--a>=0&&(o*=256);)t<0&&s===0&&this[r+a+1]!==0&&(s=1),this[r+a]=(t/o>>0)-s&255;return r+n};In.prototype.writeInt8=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,1,127,-128),t<0&&(t=255+t+1),this[r]=t&255,r+1};In.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t&255,this[r+1]=t>>>8,r+2};In.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,2,32767,-32768),this[r]=t>>>8,this[r+1]=t&255,r+2};In.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24,r+4};In.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r>>>0,n||Rp(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255,r+4};In.prototype.writeBigInt64LE=I_(function(t,r=0){return O3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});In.prototype.writeBigInt64BE=I_(function(t,r=0){return B3e(this,t,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function N3e(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function U3e(e,t,r,n,i){return t=+t,r=r>>>0,i||N3e(e,t,r,4,34028234663852886e22,-34028234663852886e22),XT.write(e,t,r,n,23,4),r+4}In.prototype.writeFloatLE=function(t,r,n){return U3e(this,t,r,!0,n)};In.prototype.writeFloatBE=function(t,r,n){return U3e(this,t,r,!1,n)};function V3e(e,t,r,n,i){return t=+t,r=r>>>0,i||N3e(e,t,r,8,17976931348623157e292,-17976931348623157e292),XT.write(e,t,r,n,52,8),r+8}In.prototype.writeDoubleLE=function(t,r,n){return V3e(this,t,r,!0,n)};In.prototype.writeDoubleBE=function(t,r,n){return V3e(this,t,r,!1,n)};In.prototype.copy=function(t,r,n,i){if(!In.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r>>0,n=n===void 0?this.length:n>>>0,t||(t=0);let a;if(typeof t=="number")for(a=r;a2**32?i=I3e(String(r)):typeof r=="bigint"&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=I3e(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n},RangeError);function I3e(e){let t="",r=e.length,n=e[0]==="-"?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function Iwt(e,t,r){YT(t,"offset"),(e[t]===void 0||e[t+r]===void 0)&&z4(t,e.length-(r+1))}function H3e(e,t,r,n,i,a){if(e>r||e3?t===0||t===BigInt(0)?s=`>= 0${o} and < 2${o} ** ${(a+1)*8}${o}`:s=`>= -(2${o} ** ${(a+1)*8-1}${o}) and < 2 ** ${(a+1)*8-1}${o}`:s=`>= ${t}${o} and <= ${r}${o}`,new ZT.ERR_OUT_OF_RANGE("value",s,e)}Iwt(n,i,a)}function YT(e,t){if(typeof e!="number")throw new ZT.ERR_INVALID_ARG_TYPE(t,"number",e)}function z4(e,t,r){throw Math.floor(e)!==e?(YT(e,r),new ZT.ERR_OUT_OF_RANGE(r||"offset","an integer",e)):t<0?new ZT.ERR_BUFFER_OUT_OF_BOUNDS:new ZT.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}var Rwt=/[^+/0-9A-Za-z-_]/g;function Dwt(e){if(e=e.split("=")[0],e=e.trim().replace(Rwt,""),e.length<2)return"";for(;e.length%4!==0;)e=e+"=";return e}function uG(e,t){t=t||1/0;let r,n=e.length,i=null,a=[];for(let o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function zwt(e){let t=[];for(let r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function G3e(e){return oG.toByteArray(Dwt(e))}function O8(e,t,r,n){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function qm(e,t){return e instanceof t||e!=null&&e.constructor!=null&&e.constructor.name!=null&&e.constructor.name===t.name}function dG(e){return e!==e}var qwt=function(){let e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){let n=r*16;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function I_(e){return typeof BigInt=="undefined"?Owt:e}function Owt(){throw new Error("BigInt not supported")}});var B8=ye((_ur,j3e)=>{"use strict";j3e.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var t={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;t[r]=i;for(r in t)return!1;if(typeof Object.keys=="function"&&Object.keys(t).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(t).length!==0)return!1;var a=Object.getOwnPropertySymbols(t);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(t,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(t,r);if(o.value!==i||o.enumerable!==!0)return!1}return!0}});var F4=ye((xur,W3e)=>{"use strict";var Bwt=B8();W3e.exports=function(){return Bwt()&&!!Symbol.toStringTag}});var X3e=ye((bur,Z3e)=>{"use strict";Z3e.exports=Error});var K3e=ye((wur,Y3e)=>{"use strict";Y3e.exports=EvalError});var $3e=ye((Tur,J3e)=>{"use strict";J3e.exports=RangeError});var eTe=ye((Aur,Q3e)=>{"use strict";Q3e.exports=ReferenceError});var vG=ye((Sur,tTe)=>{"use strict";tTe.exports=SyntaxError});var q4=ye((Mur,rTe)=>{"use strict";rTe.exports=TypeError});var nTe=ye((Eur,iTe)=>{"use strict";iTe.exports=URIError});var sTe=ye((kur,oTe)=>{"use strict";var aTe=typeof Symbol!="undefined"&&Symbol,Nwt=B8();oTe.exports=function(){return typeof aTe!="function"||typeof Symbol!="function"||typeof aTe("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:Nwt()}});var cTe=ye((Cur,uTe)=>{"use strict";var lTe={foo:{}},Uwt=Object;uTe.exports=function(){return{__proto__:lTe}.foo===lTe.foo&&!({__proto__:null}instanceof Uwt)}});var dTe=ye((Lur,hTe)=>{"use strict";var Vwt="Function.prototype.bind called on incompatible ",Hwt=Object.prototype.toString,Gwt=Math.max,jwt="[object Function]",fTe=function(t,r){for(var n=[],i=0;i{"use strict";var Xwt=dTe();vTe.exports=Function.prototype.bind||Xwt});var gTe=ye((Iur,pTe)=>{"use strict";var Ywt=Function.prototype.call,Kwt=Object.prototype.hasOwnProperty,Jwt=N8();pTe.exports=Jwt.call(Ywt,Kwt)});var t5=ye((Rur,bTe)=>{"use strict";var jl,$wt=X3e(),Qwt=K3e(),e3t=$3e(),t3t=eTe(),e5=vG(),QT=q4(),r3t=nTe(),xTe=Function,pG=function(e){try{return xTe('"use strict"; return ('+e+").constructor;")()}catch(t){}},c2=Object.getOwnPropertyDescriptor;if(c2)try{c2({},"")}catch(e){c2=null}var gG=function(){throw new QT},i3t=c2?function(){try{return arguments.callee,gG}catch(e){try{return c2(arguments,"callee").get}catch(t){return gG}}}():gG,JT=sTe()(),n3t=cTe()(),Qd=Object.getPrototypeOf||(n3t?function(e){return e.__proto__}:null),$T={},a3t=typeof Uint8Array=="undefined"||!Qd?jl:Qd(Uint8Array),f2={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?jl:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?jl:ArrayBuffer,"%ArrayIteratorPrototype%":JT&&Qd?Qd([][Symbol.iterator]()):jl,"%AsyncFromSyncIteratorPrototype%":jl,"%AsyncFunction%":$T,"%AsyncGenerator%":$T,"%AsyncGeneratorFunction%":$T,"%AsyncIteratorPrototype%":$T,"%Atomics%":typeof Atomics=="undefined"?jl:Atomics,"%BigInt%":typeof BigInt=="undefined"?jl:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?jl:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?jl:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?jl:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":$wt,"%eval%":eval,"%EvalError%":Qwt,"%Float32Array%":typeof Float32Array=="undefined"?jl:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?jl:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?jl:FinalizationRegistry,"%Function%":xTe,"%GeneratorFunction%":$T,"%Int8Array%":typeof Int8Array=="undefined"?jl:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?jl:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?jl:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":JT&&Qd?Qd(Qd([][Symbol.iterator]())):jl,"%JSON%":typeof JSON=="object"?JSON:jl,"%Map%":typeof Map=="undefined"?jl:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!JT||!Qd?jl:Qd(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?jl:Promise,"%Proxy%":typeof Proxy=="undefined"?jl:Proxy,"%RangeError%":e3t,"%ReferenceError%":t3t,"%Reflect%":typeof Reflect=="undefined"?jl:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?jl:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!JT||!Qd?jl:Qd(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?jl:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":JT&&Qd?Qd(""[Symbol.iterator]()):jl,"%Symbol%":JT?Symbol:jl,"%SyntaxError%":e5,"%ThrowTypeError%":i3t,"%TypedArray%":a3t,"%TypeError%":QT,"%Uint8Array%":typeof Uint8Array=="undefined"?jl:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?jl:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?jl:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?jl:Uint32Array,"%URIError%":r3t,"%WeakMap%":typeof WeakMap=="undefined"?jl:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?jl:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?jl:WeakSet};if(Qd)try{null.error}catch(e){mTe=Qd(Qd(e)),f2["%Error.prototype%"]=mTe}var mTe,o3t=function e(t){var r;if(t==="%AsyncFunction%")r=pG("async function () {}");else if(t==="%GeneratorFunction%")r=pG("function* () {}");else if(t==="%AsyncGeneratorFunction%")r=pG("async function* () {}");else if(t==="%AsyncGenerator%"){var n=e("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(t==="%AsyncIteratorPrototype%"){var i=e("%AsyncGenerator%");i&&Qd&&(r=Qd(i.prototype))}return f2[t]=r,r},yTe={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},O4=N8(),U8=gTe(),s3t=O4.call(Function.call,Array.prototype.concat),l3t=O4.call(Function.apply,Array.prototype.splice),_Te=O4.call(Function.call,String.prototype.replace),V8=O4.call(Function.call,String.prototype.slice),u3t=O4.call(Function.call,RegExp.prototype.exec),c3t=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,f3t=/\\(\\)?/g,h3t=function(t){var r=V8(t,0,1),n=V8(t,-1);if(r==="%"&&n!=="%")throw new e5("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new e5("invalid intrinsic syntax, expected opening `%`");var i=[];return _Te(t,c3t,function(a,o,s,l){i[i.length]=s?_Te(l,f3t,"$1"):o||a}),i},d3t=function(t,r){var n=t,i;if(U8(yTe,n)&&(i=yTe[n],n="%"+i[0]+"%"),U8(f2,n)){var a=f2[n];if(a===$T&&(a=o3t(n)),typeof a=="undefined"&&!r)throw new QT("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:a}}throw new e5("intrinsic "+t+" does not exist!")};bTe.exports=function(t,r){if(typeof t!="string"||t.length===0)throw new QT("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new QT('"allowMissing" argument must be a boolean');if(u3t(/^%?[^%]*%?$/,t)===null)throw new e5("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=h3t(t),i=n.length>0?n[0]:"",a=d3t("%"+i+"%",r),o=a.name,s=a.value,l=!1,u=a.alias;u&&(i=u[0],l3t(n,s3t([0,1],u)));for(var c=1,f=!0;c=n.length){var x=c2(s,h);f=!!x,f&&"get"in x&&!("originalValue"in x.get)?s=x.get:s=s[h]}else f=U8(s,h),s=s[h];f&&!l&&(f2[o]=s)}}return s}});var G8=ye((Dur,wTe)=>{"use strict";var v3t=t5(),H8=v3t("%Object.defineProperty%",!0)||!1;if(H8)try{H8({},"a",{value:1})}catch(e){H8=!1}wTe.exports=H8});var B4=ye((zur,TTe)=>{"use strict";var p3t=t5(),j8=p3t("%Object.getOwnPropertyDescriptor%",!0);if(j8)try{j8([],"length")}catch(e){j8=null}TTe.exports=j8});var ETe=ye((Fur,MTe)=>{"use strict";var ATe=G8(),g3t=vG(),r5=q4(),STe=B4();MTe.exports=function(t,r,n){if(!t||typeof t!="object"&&typeof t!="function")throw new r5("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new r5("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new r5("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new r5("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new r5("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new r5("`loose`, if provided, must be a boolean");var i=arguments.length>3?arguments[3]:null,a=arguments.length>4?arguments[4]:null,o=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,l=!!STe&&STe(t,r);if(ATe)ATe(t,r,{configurable:o===null&&l?l.configurable:!o,enumerable:i===null&&l?l.enumerable:!i,value:n,writable:a===null&&l?l.writable:!a});else if(s||!i&&!a&&!o)t[r]=n;else throw new g3t("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var yG=ye((qur,CTe)=>{"use strict";var mG=G8(),kTe=function(){return!!mG};kTe.hasArrayLengthDefineBug=function(){if(!mG)return null;try{return mG([],"length",{value:1}).length!==1}catch(t){return!0}};CTe.exports=kTe});var DTe=ye((Our,RTe)=>{"use strict";var m3t=t5(),LTe=ETe(),y3t=yG()(),PTe=B4(),ITe=q4(),_3t=m3t("%Math.floor%");RTe.exports=function(t,r){if(typeof t!="function")throw new ITe("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||_3t(r)!==r)throw new ITe("`length` must be a positive 32-bit integer");var n=arguments.length>2&&!!arguments[2],i=!0,a=!0;if("length"in t&&PTe){var o=PTe(t,"length");o&&!o.configurable&&(i=!1),o&&!o.writable&&(a=!1)}return(i||a||!n)&&(y3t?LTe(t,"length",r,!0,!0):LTe(t,"length",r)),t}});var N4=ye((Bur,W8)=>{"use strict";var _G=N8(),Z8=t5(),x3t=DTe(),b3t=q4(),qTe=Z8("%Function.prototype.apply%"),OTe=Z8("%Function.prototype.call%"),BTe=Z8("%Reflect.apply%",!0)||_G.call(OTe,qTe),zTe=G8(),w3t=Z8("%Math.max%");W8.exports=function(t){if(typeof t!="function")throw new b3t("a function is required");var r=BTe(_G,OTe,arguments);return x3t(r,1+w3t(0,t.length-(arguments.length-1)),!0)};var FTe=function(){return BTe(_G,qTe,arguments)};zTe?zTe(W8.exports,"apply",{value:FTe}):W8.exports.apply=FTe});var i5=ye((Nur,VTe)=>{"use strict";var NTe=t5(),UTe=N4(),T3t=UTe(NTe("String.prototype.indexOf"));VTe.exports=function(t,r){var n=NTe(t,!!r);return typeof n=="function"&&T3t(t,".prototype.")>-1?UTe(n):n}});var jTe=ye((Uur,GTe)=>{"use strict";var A3t=F4()(),S3t=i5(),xG=S3t("Object.prototype.toString"),X8=function(t){return A3t&&t&&typeof t=="object"&&Symbol.toStringTag in t?!1:xG(t)==="[object Arguments]"},HTe=function(t){return X8(t)?!0:t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&xG(t)!=="[object Array]"&&xG(t.callee)==="[object Function]"},M3t=function(){return X8(arguments)}();X8.isLegacyArguments=HTe;GTe.exports=M3t?X8:HTe});var XTe=ye((Vur,ZTe)=>{"use strict";var E3t=Object.prototype.toString,k3t=Function.prototype.toString,C3t=/^\s*(?:function)?\*/,WTe=F4()(),bG=Object.getPrototypeOf,L3t=function(){if(!WTe)return!1;try{return Function("return function*() {}")()}catch(e){}},wG;ZTe.exports=function(t){if(typeof t!="function")return!1;if(C3t.test(k3t.call(t)))return!0;if(!WTe){var r=E3t.call(t);return r==="[object GeneratorFunction]"}if(!bG)return!1;if(typeof wG=="undefined"){var n=L3t();wG=n?bG(n):!1}return bG(t)===wG}});var $Te=ye((Hur,JTe)=>{"use strict";var KTe=Function.prototype.toString,n5=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,AG,Y8;if(typeof n5=="function"&&typeof Object.defineProperty=="function")try{AG=Object.defineProperty({},"length",{get:function(){throw Y8}}),Y8={},n5(function(){throw 42},null,AG)}catch(e){e!==Y8&&(n5=null)}else n5=null;var P3t=/^\s*class\b/,SG=function(t){try{var r=KTe.call(t);return P3t.test(r)}catch(n){return!1}},TG=function(t){try{return SG(t)?!1:(KTe.call(t),!0)}catch(r){return!1}},K8=Object.prototype.toString,I3t="[object Object]",R3t="[object Function]",D3t="[object GeneratorFunction]",z3t="[object HTMLAllCollection]",F3t="[object HTML document.all class]",q3t="[object HTMLCollection]",O3t=typeof Symbol=="function"&&!!Symbol.toStringTag,B3t=!(0 in[,]),MG=function(){return!1};typeof document=="object"&&(YTe=document.all,K8.call(YTe)===K8.call(document.all)&&(MG=function(t){if((B3t||!t)&&(typeof t=="undefined"||typeof t=="object"))try{var r=K8.call(t);return(r===z3t||r===F3t||r===q3t||r===I3t)&&t("")==null}catch(n){}return!1}));var YTe;JTe.exports=n5?function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;try{n5(t,null,AG)}catch(r){if(r!==Y8)return!1}return!SG(t)&&TG(t)}:function(t){if(MG(t))return!0;if(!t||typeof t!="function"&&typeof t!="object")return!1;if(O3t)return TG(t);if(SG(t))return!1;var r=K8.call(t);return r!==R3t&&r!==D3t&&!/^\[object HTML/.test(r)?!1:TG(t)}});var EG=ye((Gur,e5e)=>{"use strict";var N3t=$Te(),U3t=Object.prototype.toString,QTe=Object.prototype.hasOwnProperty,V3t=function(t,r,n){for(var i=0,a=t.length;i=3&&(i=n),U3t.call(t)==="[object Array]"?V3t(t,r,i):typeof t=="string"?H3t(t,r,i):G3t(t,r,i)};e5e.exports=j3t});var CG=ye((jur,t5e)=>{"use strict";var kG=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],W3t=typeof globalThis=="undefined"?window:globalThis;t5e.exports=function(){for(var t=[],r=0;r{"use strict";var $8=EG(),Z3t=CG(),r5e=N4(),IG=i5(),J8=B4(),X3t=IG("Object.prototype.toString"),n5e=F4()(),i5e=typeof globalThis=="undefined"?window:globalThis,PG=Z3t(),RG=IG("String.prototype.slice"),LG=Object.getPrototypeOf,Y3t=IG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1?r:r!=="Object"?!1:J3t(t)}return J8?K3t(t):null}});var h5e=ye((Zur,f5e)=>{"use strict";var s5e=EG(),$3t=CG(),zG=i5(),Q3t=zG("Object.prototype.toString"),l5e=F4()(),eR=B4(),eTt=typeof globalThis=="undefined"?window:globalThis,u5e=$3t(),tTt=zG("Array.prototype.indexOf",!0)||function(t,r){for(var n=0;n-1}return eR?iTt(t):!1}});var OG=ye(Bl=>{"use strict";var nTt=jTe(),aTt=XTe(),Hg=o5e(),d5e=h5e();function a5(e){return e.call.bind(e)}var v5e=typeof BigInt!="undefined",p5e=typeof Symbol!="undefined",X0=a5(Object.prototype.toString),oTt=a5(Number.prototype.valueOf),sTt=a5(String.prototype.valueOf),lTt=a5(Boolean.prototype.valueOf);v5e&&(g5e=a5(BigInt.prototype.valueOf));var g5e;p5e&&(m5e=a5(Symbol.prototype.valueOf));var m5e;function V4(e,t){if(typeof e!="object")return!1;try{return t(e),!0}catch(r){return!1}}Bl.isArgumentsObject=nTt;Bl.isGeneratorFunction=aTt;Bl.isTypedArray=d5e;function uTt(e){return typeof Promise!="undefined"&&e instanceof Promise||e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"}Bl.isPromise=uTt;function cTt(e){return typeof ArrayBuffer!="undefined"&&ArrayBuffer.isView?ArrayBuffer.isView(e):d5e(e)||_5e(e)}Bl.isArrayBufferView=cTt;function fTt(e){return Hg(e)==="Uint8Array"}Bl.isUint8Array=fTt;function hTt(e){return Hg(e)==="Uint8ClampedArray"}Bl.isUint8ClampedArray=hTt;function dTt(e){return Hg(e)==="Uint16Array"}Bl.isUint16Array=dTt;function vTt(e){return Hg(e)==="Uint32Array"}Bl.isUint32Array=vTt;function pTt(e){return Hg(e)==="Int8Array"}Bl.isInt8Array=pTt;function gTt(e){return Hg(e)==="Int16Array"}Bl.isInt16Array=gTt;function mTt(e){return Hg(e)==="Int32Array"}Bl.isInt32Array=mTt;function yTt(e){return Hg(e)==="Float32Array"}Bl.isFloat32Array=yTt;function _Tt(e){return Hg(e)==="Float64Array"}Bl.isFloat64Array=_Tt;function xTt(e){return Hg(e)==="BigInt64Array"}Bl.isBigInt64Array=xTt;function bTt(e){return Hg(e)==="BigUint64Array"}Bl.isBigUint64Array=bTt;function tR(e){return X0(e)==="[object Map]"}tR.working=typeof Map!="undefined"&&tR(new Map);function wTt(e){return typeof Map=="undefined"?!1:tR.working?tR(e):e instanceof Map}Bl.isMap=wTt;function rR(e){return X0(e)==="[object Set]"}rR.working=typeof Set!="undefined"&&rR(new Set);function TTt(e){return typeof Set=="undefined"?!1:rR.working?rR(e):e instanceof Set}Bl.isSet=TTt;function iR(e){return X0(e)==="[object WeakMap]"}iR.working=typeof WeakMap!="undefined"&&iR(new WeakMap);function ATt(e){return typeof WeakMap=="undefined"?!1:iR.working?iR(e):e instanceof WeakMap}Bl.isWeakMap=ATt;function qG(e){return X0(e)==="[object WeakSet]"}qG.working=typeof WeakSet!="undefined"&&qG(new WeakSet);function STt(e){return qG(e)}Bl.isWeakSet=STt;function nR(e){return X0(e)==="[object ArrayBuffer]"}nR.working=typeof ArrayBuffer!="undefined"&&nR(new ArrayBuffer);function y5e(e){return typeof ArrayBuffer=="undefined"?!1:nR.working?nR(e):e instanceof ArrayBuffer}Bl.isArrayBuffer=y5e;function aR(e){return X0(e)==="[object DataView]"}aR.working=typeof ArrayBuffer!="undefined"&&typeof DataView!="undefined"&&aR(new DataView(new ArrayBuffer(1),0,1));function _5e(e){return typeof DataView=="undefined"?!1:aR.working?aR(e):e instanceof DataView}Bl.isDataView=_5e;var FG=typeof SharedArrayBuffer!="undefined"?SharedArrayBuffer:void 0;function U4(e){return X0(e)==="[object SharedArrayBuffer]"}function x5e(e){return typeof FG=="undefined"?!1:(typeof U4.working=="undefined"&&(U4.working=U4(new FG)),U4.working?U4(e):e instanceof FG)}Bl.isSharedArrayBuffer=x5e;function MTt(e){return X0(e)==="[object AsyncFunction]"}Bl.isAsyncFunction=MTt;function ETt(e){return X0(e)==="[object Map Iterator]"}Bl.isMapIterator=ETt;function kTt(e){return X0(e)==="[object Set Iterator]"}Bl.isSetIterator=kTt;function CTt(e){return X0(e)==="[object Generator]"}Bl.isGeneratorObject=CTt;function LTt(e){return X0(e)==="[object WebAssembly.Module]"}Bl.isWebAssemblyCompiledModule=LTt;function b5e(e){return V4(e,oTt)}Bl.isNumberObject=b5e;function w5e(e){return V4(e,sTt)}Bl.isStringObject=w5e;function T5e(e){return V4(e,lTt)}Bl.isBooleanObject=T5e;function A5e(e){return v5e&&V4(e,g5e)}Bl.isBigIntObject=A5e;function S5e(e){return p5e&&V4(e,m5e)}Bl.isSymbolObject=S5e;function PTt(e){return b5e(e)||w5e(e)||T5e(e)||A5e(e)||S5e(e)}Bl.isBoxedPrimitive=PTt;function ITt(e){return typeof Uint8Array!="undefined"&&(y5e(e)||x5e(e))}Bl.isAnyArrayBuffer=ITt;["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(e){Object.defineProperty(Bl,e,{enumerable:!1,value:function(){throw new Error(e+" is not supported in userland")}})})});var BG=ye((Yur,M5e)=>{M5e.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}});var jG=ye(Nl=>{var E5e=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),HG(t)?r.showHidden=t:t&&Nl._extend(r,t),d2(r.showHidden)&&(r.showHidden=!1),d2(r.depth)&&(r.depth=2),d2(r.colors)&&(r.colors=!1),d2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=DTt),uR(r,e,r.depth)}Nl.inspect=R_;R_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};R_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function DTt(e,t){var r=R_.styles[t];return r?"\x1B["+R_.colors[r][0]+"m"+e+"\x1B["+R_.colors[r][1]+"m":e}function zTt(e,t){return e}function FTt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function uR(e,t,r){if(e.customInspect&&t&&lR(t.inspect)&&t.inspect!==Nl.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return hR(n)||(n=uR(e,n,r)),n}var i=qTt(e,t);if(i)return i;var a=Object.keys(t),o=FTt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),G4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return NG(t);if(a.length===0){if(lR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(H4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(cR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(G4(t))return NG(t)}var l="",u=!1,c=["{","}"];if(C5e(t)&&(u=!0,c=["[","]"]),lR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if(H4(t)&&(l=" "+RegExp.prototype.toString.call(t)),cR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),G4(t)&&(l=" "+NG(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return H4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=OTt(e,t,r,o,a):h=a.map(function(d){return VG(e,t,r,o,d,u)}),e.seen.pop(),BTt(h,l,c)}function qTt(e,t){if(d2(t))return e.stylize("undefined","undefined");if(hR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(L5e(t))return e.stylize(""+t,"number");if(HG(t))return e.stylize(""+t,"boolean");if(fR(t))return e.stylize("null","null")}function NG(e){return"["+Error.prototype.toString.call(e)+"]"}function OTt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).slice(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=e.stylize("[Circular]","special")),d2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function BTt(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` + `)+" "+e.join(`, + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Nl.types=OG();function C5e(e){return Array.isArray(e)}Nl.isArray=C5e;function HG(e){return typeof e=="boolean"}Nl.isBoolean=HG;function fR(e){return e===null}Nl.isNull=fR;function NTt(e){return e==null}Nl.isNullOrUndefined=NTt;function L5e(e){return typeof e=="number"}Nl.isNumber=L5e;function hR(e){return typeof e=="string"}Nl.isString=hR;function UTt(e){return typeof e=="symbol"}Nl.isSymbol=UTt;function d2(e){return e===void 0}Nl.isUndefined=d2;function H4(e){return o5(e)&&GG(e)==="[object RegExp]"}Nl.isRegExp=H4;Nl.types.isRegExp=H4;function o5(e){return typeof e=="object"&&e!==null}Nl.isObject=o5;function cR(e){return o5(e)&&GG(e)==="[object Date]"}Nl.isDate=cR;Nl.types.isDate=cR;function G4(e){return o5(e)&&(GG(e)==="[object Error]"||e instanceof Error)}Nl.isError=G4;Nl.types.isNativeError=G4;function lR(e){return typeof e=="function"}Nl.isFunction=lR;function VTt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Nl.isPrimitive=VTt;Nl.isBuffer=BG();function GG(e){return Object.prototype.toString.call(e)}function UG(e){return e<10?"0"+e.toString(10):e.toString(10)}var HTt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function GTt(){var e=new Date,t=[UG(e.getHours()),UG(e.getMinutes()),UG(e.getSeconds())].join(":");return[e.getDate(),HTt[e.getMonth()],t].join(" ")}Nl.log=function(){console.log("%s - %s",GTt(),Nl.format.apply(Nl,arguments))};Nl.inherits=Uy();Nl._extend=function(e,t){if(!t||!o5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function P5e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var h2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Nl.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(h2&&t[h2]){var r=t[h2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,h2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function I5e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ZTt(e){for(var t=1;t0?this.tail.next=n:this.head=n,this.tail=n,++this.length}},{key:"unshift",value:function(r){var n={data:r,next:this.head};this.length===0&&(this.tail=n),this.head=n,++this.length}},{key:"shift",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(r){if(this.length===0)return"";for(var n=this.head,i=""+n.data;n=n.next;)i+=r+n.data;return i}},{key:"concat",value:function(r){if(this.length===0)return dR.alloc(0);for(var n=dR.allocUnsafe(r>>>0),i=this.head,a=0;i;)e5t(i.data,n,a),a+=i.data.length,i=i.next;return n}},{key:"consume",value:function(r,n){var i;return ro.length?o.length:r;if(s===o.length?a+=o:a+=o.slice(0,r),r-=s,r===0){s===o.length?(++i,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=o.slice(s));break}++i}return this.length-=i,a}},{key:"_getBuffer",value:function(r){var n=dR.allocUnsafe(r),i=this.head,a=1;for(i.data.copy(n),r-=i.data.length;i=i.next;){var o=i.data,s=r>o.length?o.length:r;if(o.copy(n,n.length-r,0,s),r-=s,r===0){s===o.length?(++a,i.next?this.head=i.next:this.head=this.tail=null):(this.head=i,i.data=o.slice(s));break}++a}return this.length-=a,n}},{key:QTt,value:function(r,n){return WG(this,ZTt({},n,{depth:0,customInspect:!1}))}}]),e}()});var XG=ye(($ur,q5e)=>{"use strict";function t5t(e,t){var r=this,n=this._readableState&&this._readableState.destroyed,i=this._writableState&&this._writableState.destroyed;return n||i?(t?t(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(ZG,this,e)):process.nextTick(ZG,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,function(a){!t&&a?r._writableState?r._writableState.errorEmitted?process.nextTick(vR,r):(r._writableState.errorEmitted=!0,process.nextTick(F5e,r,a)):process.nextTick(F5e,r,a):t?(process.nextTick(vR,r),t(a)):process.nextTick(vR,r)}),this)}function F5e(e,t){ZG(e,t),vR(e)}function vR(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function r5t(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function ZG(e,t){e.emit("error",t)}function i5t(e,t){var r=e._readableState,n=e._writableState;r&&r.autoDestroy||n&&n.autoDestroy?e.destroy(t):e.emit("error",t)}q5e.exports={destroy:t5t,undestroy:r5t,errorOrDestroy:i5t}});var v2=ye((Qur,N5e)=>{"use strict";function n5t(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var B5e={};function Y0(e,t,r){r||(r=Error);function n(a,o,s){return typeof t=="string"?t:t(a,o,s)}var i=function(a){n5t(o,a);function o(s,l,u){return a.call(this,n(s,l,u))||this}return o}(r);i.prototype.name=r.name,i.prototype.code=e,B5e[e]=i}function O5e(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map(function(n){return String(n)}),r>2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function a5t(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function o5t(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function s5t(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}Y0("ERR_INVALID_OPT_VALUE",function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'},TypeError);Y0("ERR_INVALID_ARG_TYPE",function(e,t,r){var n;typeof t=="string"&&a5t(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(o5t(e," argument"))i="The ".concat(e," ").concat(n," ").concat(O5e(t,"type"));else{var a=s5t(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(O5e(t,"type"))}return i+=". Received type ".concat(typeof r),i},TypeError);Y0("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF");Y0("ERR_METHOD_NOT_IMPLEMENTED",function(e){return"The "+e+" method is not implemented"});Y0("ERR_STREAM_PREMATURE_CLOSE","Premature close");Y0("ERR_STREAM_DESTROYED",function(e){return"Cannot call "+e+" after a stream was destroyed"});Y0("ERR_MULTIPLE_CALLBACK","Callback called multiple times");Y0("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable");Y0("ERR_STREAM_WRITE_AFTER_END","write after end");Y0("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError);Y0("ERR_UNKNOWN_ENCODING",function(e){return"Unknown encoding: "+e},TypeError);Y0("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event");N5e.exports.codes=B5e});var YG=ye((ecr,U5e)=>{"use strict";var l5t=v2().codes.ERR_INVALID_OPT_VALUE;function u5t(e,t,r){return e.highWaterMark!=null?e.highWaterMark:t?e[r]:null}function c5t(e,t,r,n){var i=u5t(t,n,r);if(i!=null){if(!(isFinite(i)&&Math.floor(i)===i)||i<0){var a=n?r:"highWaterMark";throw new l5t(a,i)}return Math.floor(i)}return e.objectMode?16:16*1024}U5e.exports={getHighWaterMark:c5t}});var H5e=ye((tcr,V5e)=>{V5e.exports=f5t;function f5t(e,t){if(KG("noDeprecation"))return e;var r=!1;function n(){if(!r){if(KG("throwDeprecation"))throw new Error(t);KG("traceDeprecation")?console.trace(t):console.warn(t),r=!0}return e.apply(this,arguments)}return n}function KG(e){try{if(!window.localStorage)return!1}catch(r){return!1}var t=window.localStorage[e];return t==null?!1:String(t).toLowerCase()==="true"}});var QG=ye((rcr,Y5e)=>{"use strict";Y5e.exports=_h;function j5e(e){var t=this;this.next=null,this.entry=null,this.finish=function(){O5t(t,e)}}var s5;_h.WritableState=W4;var h5t={deprecate:H5e()},W5e=iG(),gR=u2().Buffer,d5t=window.Uint8Array||function(){};function v5t(e){return gR.from(e)}function p5t(e){return gR.isBuffer(e)||e instanceof d5t}var $G=XG(),g5t=YG(),m5t=g5t.getHighWaterMark,D_=v2().codes,y5t=D_.ERR_INVALID_ARG_TYPE,_5t=D_.ERR_METHOD_NOT_IMPLEMENTED,x5t=D_.ERR_MULTIPLE_CALLBACK,b5t=D_.ERR_STREAM_CANNOT_PIPE,w5t=D_.ERR_STREAM_DESTROYED,T5t=D_.ERR_STREAM_NULL_VALUES,A5t=D_.ERR_STREAM_WRITE_AFTER_END,S5t=D_.ERR_UNKNOWN_ENCODING,l5=$G.errorOrDestroy;Uy()(_h,W5e);function M5t(){}function W4(e,t,r){s5=s5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof s5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=m5t(this,e,"writableHighWaterMark",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var n=e.decodeStrings===!1;this.decodeStrings=!n,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(i){R5t(t,i)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new j5e(this)}W4.prototype.getBuffer=function(){for(var t=this.bufferedRequest,r=[];t;)r.push(t),t=t.next;return r};(function(){try{Object.defineProperty(W4.prototype,"buffer",{get:h5t.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}})();var pR;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(pR=Function.prototype[Symbol.hasInstance],Object.defineProperty(_h,Symbol.hasInstance,{value:function(t){return pR.call(this,t)?!0:this!==_h?!1:t&&t._writableState instanceof W4}})):pR=function(t){return t instanceof this};function _h(e){s5=s5||p2();var t=this instanceof s5;if(!t&&!pR.call(_h,this))return new _h(e);this._writableState=new W4(e,this,t),this.writable=!0,e&&(typeof e.write=="function"&&(this._write=e.write),typeof e.writev=="function"&&(this._writev=e.writev),typeof e.destroy=="function"&&(this._destroy=e.destroy),typeof e.final=="function"&&(this._final=e.final)),W5e.call(this)}_h.prototype.pipe=function(){l5(this,new b5t)};function E5t(e,t){var r=new A5t;l5(e,r),process.nextTick(t,r)}function k5t(e,t,r,n){var i;return r===null?i=new T5t:typeof r!="string"&&!t.objectMode&&(i=new y5t("chunk",["string","Buffer"],r)),i?(l5(e,i),process.nextTick(n,i),!1):!0}_h.prototype.write=function(e,t,r){var n=this._writableState,i=!1,a=!n.objectMode&&p5t(e);return a&&!gR.isBuffer(e)&&(e=v5t(e)),typeof t=="function"&&(r=t,t=null),a?t="buffer":t||(t=n.defaultEncoding),typeof r!="function"&&(r=M5t),n.ending?E5t(this,r):(a||k5t(this,n,e,r))&&(n.pendingcb++,i=L5t(this,n,a,e,t,r)),i};_h.prototype.cork=function(){this._writableState.corked++};_h.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,!e.writing&&!e.corked&&!e.bufferProcessing&&e.bufferedRequest&&Z5e(this,e))};_h.prototype.setDefaultEncoding=function(t){if(typeof t=="string"&&(t=t.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((t+"").toLowerCase())>-1))throw new S5t(t);return this._writableState.defaultEncoding=t,this};Object.defineProperty(_h.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function C5t(e,t,r){return!e.objectMode&&e.decodeStrings!==!1&&typeof t=="string"&&(t=gR.from(t,r)),t}Object.defineProperty(_h.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function L5t(e,t,r,n,i,a){if(!r){var o=C5t(t,n,i);n!==o&&(r=!0,i="buffer",n=o)}var s=t.objectMode?1:n.length;t.length+=s;var l=t.length{"use strict";var B5t=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};J5e.exports=Om;var K5e=rj(),tj=QG();Uy()(Om,K5e);for(ej=B5t(tj.prototype),mR=0;mR{var _R=u2(),Bm=_R.Buffer;function $5e(e,t){for(var r in e)t[r]=e[r]}Bm.from&&Bm.alloc&&Bm.allocUnsafe&&Bm.allocUnsafeSlow?Q5e.exports=_R:($5e(_R,ij),ij.Buffer=g2);function g2(e,t,r){return Bm(e,t,r)}g2.prototype=Object.create(Bm.prototype);$5e(Bm,g2);g2.from=function(e,t,r){if(typeof e=="number")throw new TypeError("Argument must not be a number");return Bm(e,t,r)};g2.alloc=function(e,t,r){if(typeof e!="number")throw new TypeError("Argument must be a number");var n=Bm(e);return t!==void 0?typeof r=="string"?n.fill(t,r):n.fill(t):n.fill(0),n};g2.allocUnsafe=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return Bm(e)};g2.allocUnsafeSlow=function(e){if(typeof e!="number")throw new TypeError("Argument must be a number");return _R.SlowBuffer(e)}});var oj=ye(rAe=>{"use strict";var aj=eAe().Buffer,tAe=aj.isEncoding||function(e){switch(e=""+e,e&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function V5t(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}function H5t(e){var t=V5t(e);if(typeof t!="string"&&(aj.isEncoding===tAe||!tAe(e)))throw new Error("Unknown encoding: "+e);return t||e}rAe.StringDecoder=Z4;function Z4(e){this.encoding=H5t(e);var t;switch(this.encoding){case"utf16le":this.text=Y5t,this.end=K5t,t=4;break;case"utf8":this.fillLast=W5t,t=4;break;case"base64":this.text=J5t,this.end=$5t,t=3;break;default:this.write=Q5t,this.end=eAt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=aj.allocUnsafe(t)}Z4.prototype.write=function(e){if(e.length===0)return"";var t,r;if(this.lastNeed){if(t=this.fillLast(e),t===void 0)return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r>5===6?2:e>>4===14?3:e>>3===30?4:e>>6===2?-1:-2}function G5t(e,t,r){var n=t.length-1;if(n=0?(i>0&&(e.lastNeed=i-1),i):--n=0?(i>0&&(e.lastNeed=i-2),i):--n=0?(i>0&&(i===2?i=0:e.lastNeed=i-3),i):0))}function j5t(e,t,r){if((t[0]&192)!==128)return e.lastNeed=0,"\uFFFD";if(e.lastNeed>1&&t.length>1){if((t[1]&192)!==128)return e.lastNeed=1,"\uFFFD";if(e.lastNeed>2&&t.length>2&&(t[2]&192)!==128)return e.lastNeed=2,"\uFFFD"}}function W5t(e){var t=this.lastTotal-this.lastNeed,r=j5t(this,e,t);if(r!==void 0)return r;if(this.lastNeed<=e.length)return e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,t,0,e.length),this.lastNeed-=e.length}function Z5t(e,t){var r=G5t(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)}function X5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+"\uFFFD":t}function Y5t(e,t){if((e.length-t)%2===0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function K5t(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function J5t(e,t){var r=(e.length-t)%3;return r===0?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,r===1?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function $5t(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function Q5t(e){return e.toString(this.encoding)}function eAt(e){return e&&e.length?this.write(e):""}});var xR=ye((acr,aAe)=>{"use strict";var iAe=v2().codes.ERR_STREAM_PREMATURE_CLOSE;function tAt(e){var t=!1;return function(){if(!t){t=!0;for(var r=arguments.length,n=new Array(r),i=0;i{"use strict";var bR;function z_(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var nAt=xR(),F_=Symbol("lastResolve"),m2=Symbol("lastReject"),X4=Symbol("error"),wR=Symbol("ended"),y2=Symbol("lastPromise"),sj=Symbol("handlePromise"),_2=Symbol("stream");function q_(e,t){return{value:e,done:t}}function aAt(e){var t=e[F_];if(t!==null){var r=e[_2].read();r!==null&&(e[y2]=null,e[F_]=null,e[m2]=null,t(q_(r,!1)))}}function oAt(e){process.nextTick(aAt,e)}function sAt(e,t){return function(r,n){e.then(function(){if(t[wR]){r(q_(void 0,!0));return}t[sj](r,n)},n)}}var lAt=Object.getPrototypeOf(function(){}),uAt=Object.setPrototypeOf((bR={get stream(){return this[_2]},next:function(){var t=this,r=this[X4];if(r!==null)return Promise.reject(r);if(this[wR])return Promise.resolve(q_(void 0,!0));if(this[_2].destroyed)return new Promise(function(o,s){process.nextTick(function(){t[X4]?s(t[X4]):o(q_(void 0,!0))})});var n=this[y2],i;if(n)i=new Promise(sAt(n,this));else{var a=this[_2].read();if(a!==null)return Promise.resolve(q_(a,!1));i=new Promise(this[sj])}return this[y2]=i,i}},z_(bR,Symbol.asyncIterator,function(){return this}),z_(bR,"return",function(){var t=this;return new Promise(function(r,n){t[_2].destroy(null,function(i){if(i){n(i);return}r(q_(void 0,!0))})})}),bR),lAt),cAt=function(t){var r,n=Object.create(uAt,(r={},z_(r,_2,{value:t,writable:!0}),z_(r,F_,{value:null,writable:!0}),z_(r,m2,{value:null,writable:!0}),z_(r,X4,{value:null,writable:!0}),z_(r,wR,{value:t._readableState.endEmitted,writable:!0}),z_(r,sj,{value:function(a,o){var s=n[_2].read();s?(n[y2]=null,n[F_]=null,n[m2]=null,a(q_(s,!1))):(n[F_]=a,n[m2]=o)},writable:!0}),r));return n[y2]=null,nAt(t,function(i){if(i&&i.code!=="ERR_STREAM_PREMATURE_CLOSE"){var a=n[m2];a!==null&&(n[y2]=null,n[F_]=null,n[m2]=null,a(i)),n[X4]=i;return}var o=n[F_];o!==null&&(n[y2]=null,n[F_]=null,n[m2]=null,o(q_(void 0,!0))),n[wR]=!0}),t.on("readable",oAt.bind(null,n)),n};oAe.exports=cAt});var uAe=ye((scr,lAe)=>{lAe.exports=function(){throw new Error("Readable.from is not available in the browser")}});var rj=ye((ucr,_Ae)=>{"use strict";_Ae.exports=vu;var u5;vu.ReadableState=dAe;var lcr=vb().EventEmitter,hAe=function(t,r){return t.listeners(r).length},K4=iG(),TR=u2().Buffer,fAt=window.Uint8Array||function(){};function hAt(e){return TR.from(e)}function dAt(e){return TR.isBuffer(e)||e instanceof fAt}var lj=jG(),Il;lj&&lj.debuglog?Il=lj.debuglog("stream"):Il=function(){};var vAt=z5e(),pj=XG(),pAt=YG(),gAt=pAt.getHighWaterMark,AR=v2().codes,mAt=AR.ERR_INVALID_ARG_TYPE,yAt=AR.ERR_STREAM_PUSH_AFTER_EOF,_At=AR.ERR_METHOD_NOT_IMPLEMENTED,xAt=AR.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,c5,uj,cj;Uy()(vu,K4);var Y4=pj.errorOrDestroy,fj=["error","close","destroy","pause","resume"];function bAt(e,t,r){if(typeof e.prependListener=="function")return e.prependListener(t,r);!e._events||!e._events[t]?e.on(t,r):Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]}function dAe(e,t,r){u5=u5||p2(),e=e||{},typeof r!="boolean"&&(r=t instanceof u5),this.objectMode=!!e.objectMode,r&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=gAt(this,e,"readableHighWaterMark",r),this.buffer=new vAt,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=e.emitClose!==!1,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(c5||(c5=oj().StringDecoder),this.decoder=new c5(e.encoding),this.encoding=e.encoding)}function vu(e){if(u5=u5||p2(),!(this instanceof vu))return new vu(e);var t=this instanceof u5;this._readableState=new dAe(e,this,t),this.readable=!0,e&&(typeof e.read=="function"&&(this._read=e.read),typeof e.destroy=="function"&&(this._destroy=e.destroy)),K4.call(this)}Object.defineProperty(vu.prototype,"destroyed",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(t){this._readableState&&(this._readableState.destroyed=t)}});vu.prototype.destroy=pj.destroy;vu.prototype._undestroy=pj.undestroy;vu.prototype._destroy=function(e,t){t(e)};vu.prototype.push=function(e,t){var r=this._readableState,n;return r.objectMode?n=!0:typeof e=="string"&&(t=t||r.defaultEncoding,t!==r.encoding&&(e=TR.from(e,t),t=""),n=!0),vAe(this,e,t,!1,n)};vu.prototype.unshift=function(e){return vAe(this,e,null,!0,!1)};function vAe(e,t,r,n,i){Il("readableAddChunk",t);var a=e._readableState;if(t===null)a.reading=!1,AAt(e,a);else{var o;if(i||(o=wAt(a,t)),o)Y4(e,o);else if(a.objectMode||t&&t.length>0)if(typeof t!="string"&&!a.objectMode&&Object.getPrototypeOf(t)!==TR.prototype&&(t=hAt(t)),n)a.endEmitted?Y4(e,new xAt):hj(e,a,t,!0);else if(a.ended)Y4(e,new yAt);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||t.length!==0?hj(e,a,t,!1):vj(e,a)):hj(e,a,t,!1)}else n||(a.reading=!1,vj(e,a))}return!a.ended&&(a.length=cAe?e=cAe:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function fAe(e,t){return e<=0||t.length===0&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=TAt(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}vu.prototype.read=function(e){Il("read",e),e=parseInt(e,10);var t=this._readableState,r=e;if(e!==0&&(t.emittedReadable=!1),e===0&&t.needReadable&&((t.highWaterMark!==0?t.length>=t.highWaterMark:t.length>0)||t.ended))return Il("read: emitReadable",t.length,t.ended),t.length===0&&t.ended?dj(this):SR(this),null;if(e=fAe(e,t),e===0&&t.ended)return t.length===0&&dj(this),null;var n=t.needReadable;Il("need readable",n),(t.length===0||t.length-e0?i=mAe(e,t):i=null,i===null?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),t.length===0&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&dj(this)),i!==null&&this.emit("data",i),i};function AAt(e,t){if(Il("onEofChunk"),!t.ended){if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,t.sync?SR(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,pAe(e)))}}function SR(e){var t=e._readableState;Il("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(Il("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(pAe,e))}function pAe(e){var t=e._readableState;Il("emitReadable_",t.destroyed,t.length,t.ended),!t.destroyed&&(t.length||t.ended)&&(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,gj(e)}function vj(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(SAt,e,t))}function SAt(e,t){for(;!t.reading&&!t.ended&&(t.length1&&yAe(n.pipes,e)!==-1)&&!u&&(Il("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(b){Il("onerror",b),x(),e.removeListener("error",h),hAe(e,"error")===0&&Y4(e,b)}bAt(e,"error",h);function d(){e.removeListener("finish",v),x()}e.once("close",d);function v(){Il("onfinish"),e.removeListener("close",d),x()}e.once("finish",v);function x(){Il("unpipe"),r.unpipe(e)}return e.emit("pipe",r),n.flowing||(Il("pipe resume"),r.resume()),e};function MAt(e){return function(){var r=e._readableState;Il("pipeOnDrain",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&hAe(e,"data")&&(r.flowing=!0,gj(e))}}vu.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(t.pipesCount===0)return this;if(t.pipesCount===1)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var a=0;a0,n.flowing!==!1&&this.resume()):e==="readable"&&!n.endEmitted&&!n.readableListening&&(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,Il("on readable",n.length,n.reading),n.length?SR(this):n.reading||process.nextTick(EAt,this)),r};vu.prototype.addListener=vu.prototype.on;vu.prototype.removeListener=function(e,t){var r=K4.prototype.removeListener.call(this,e,t);return e==="readable"&&process.nextTick(gAe,this),r};vu.prototype.removeAllListeners=function(e){var t=K4.prototype.removeAllListeners.apply(this,arguments);return(e==="readable"||e===void 0)&&process.nextTick(gAe,this),t};function gAe(e){var t=e._readableState;t.readableListening=e.listenerCount("readable")>0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function EAt(e){Il("readable nexttick read 0"),e.read(0)}vu.prototype.resume=function(){var e=this._readableState;return e.flowing||(Il("resume"),e.flowing=!e.readableListening,kAt(this,e)),e.paused=!1,this};function kAt(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick(CAt,e,t))}function CAt(e,t){Il("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),gj(e),t.flowing&&!t.reading&&e.read(0)}vu.prototype.pause=function(){return Il("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(Il("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function gj(e){var t=e._readableState;for(Il("flow",t.flowing);t.flowing&&e.read()!==null;);}vu.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;e.on("end",function(){if(Il("wrapped end"),r.decoder&&!r.ended){var o=r.decoder.end();o&&o.length&&t.push(o)}t.push(null)}),e.on("data",function(o){if(Il("wrapped data"),r.decoder&&(o=r.decoder.write(o)),!(r.objectMode&&o==null)&&!(!r.objectMode&&(!o||!o.length))){var s=t.push(o);s||(n=!0,e.pause())}});for(var i in e)this[i]===void 0&&typeof e[i]=="function"&&(this[i]=function(s){return function(){return e[s].apply(e,arguments)}}(i));for(var a=0;a=t.length?(t.decoder?r=t.buffer.join(""):t.buffer.length===1?r=t.buffer.first():r=t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r}function dj(e){var t=e._readableState;Il("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(LAt,t,e))}function LAt(e,t){if(Il("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&e.length===0&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}typeof Symbol=="function"&&(vu.from=function(e,t){return cj===void 0&&(cj=uAe()),cj(vu,e,t)});function yAe(e,t){for(var r=0,n=e.length;r{"use strict";bAe.exports=Hy;var MR=v2().codes,PAt=MR.ERR_METHOD_NOT_IMPLEMENTED,IAt=MR.ERR_MULTIPLE_CALLBACK,RAt=MR.ERR_TRANSFORM_ALREADY_TRANSFORMING,DAt=MR.ERR_TRANSFORM_WITH_LENGTH_0,ER=p2();Uy()(Hy,ER);function zAt(e,t){var r=this._transformState;r.transforming=!1;var n=r.writecb;if(n===null)return this.emit("error",new IAt);r.writechunk=null,r.writecb=null,t!=null&&this.push(t),n(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";TAe.exports=J4;var wAe=mj();Uy()(J4,wAe);function J4(e){if(!(this instanceof J4))return new J4(e);wAe.call(this,e)}J4.prototype._transform=function(e,t,r){r(null,e)}});var CAe=ye((hcr,kAe)=>{"use strict";var yj;function qAt(e){var t=!1;return function(){t||(t=!0,e.apply(void 0,arguments))}}var EAe=v2().codes,OAt=EAe.ERR_MISSING_ARGS,BAt=EAe.ERR_STREAM_DESTROYED;function SAe(e){if(e)throw e}function NAt(e){return e.setHeader&&typeof e.abort=="function"}function UAt(e,t,r,n){n=qAt(n);var i=!1;e.on("close",function(){i=!0}),yj===void 0&&(yj=xR()),yj(e,{readable:t,writable:r},function(o){if(o)return n(o);i=!0,n()});var a=!1;return function(o){if(!i&&!a){if(a=!0,NAt(e))return e.abort();if(typeof e.destroy=="function")return e.destroy();n(o||new BAt("pipe"))}}}function MAe(e){e()}function VAt(e,t){return e.pipe(t)}function HAt(e){return!e.length||typeof e[e.length-1]!="function"?SAe:e.pop()}function GAt(){for(var e=arguments.length,t=new Array(e),r=0;r0;return UAt(o,l,u,function(c){i||(i=c),c&&a.forEach(MAe),!l&&(a.forEach(MAe),n(i))})});return t.reduce(VAt)}kAe.exports=GAt});var PAe=ye((dcr,LAe)=>{LAe.exports=K0;var _j=vb().EventEmitter,jAt=Uy();jAt(K0,_j);K0.Readable=rj();K0.Writable=QG();K0.Duplex=p2();K0.Transform=mj();K0.PassThrough=AAe();K0.finished=xR();K0.pipeline=CAe();K0.Stream=K0;function K0(){_j.call(this)}K0.prototype.pipe=function(e,t){var r=this;function n(c){e.writable&&e.write(c)===!1&&r.pause&&r.pause()}r.on("data",n);function i(){r.readable&&r.resume&&r.resume()}e.on("drain",i),!e._isStdio&&(!t||t.end!==!1)&&(r.on("end",o),r.on("close",s));var a=!1;function o(){a||(a=!0,e.end())}function s(){a||(a=!0,typeof e.destroy=="function"&&e.destroy())}function l(c){if(u(),_j.listenerCount(this,"error")===0)throw c}r.on("error",l),e.on("error",l);function u(){r.removeListener("data",n),e.removeListener("drain",i),r.removeListener("end",o),r.removeListener("close",s),r.removeListener("error",l),e.removeListener("error",l),r.removeListener("end",u),r.removeListener("close",u),e.removeListener("close",u)}return r.on("end",u),r.on("close",u),e.on("close",u),e.emit("pipe",r),e}});var h5=ye(Ul=>{var IAe=Object.getOwnPropertyDescriptors||function(t){for(var r=Object.keys(t),n={},i=0;i=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(l){return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),Tj(t)?r.showHidden=t:t&&Ul._extend(r,t),b2(r.showHidden)&&(r.showHidden=!1),b2(r.depth)&&(r.depth=2),b2(r.colors)&&(r.colors=!1),b2(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=ZAt),PR(r,e,r.depth)}Ul.inspect=O_;O_.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};O_.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function ZAt(e,t){var r=O_.styles[t];return r?"\x1B["+O_.colors[r][0]+"m"+e+"\x1B["+O_.colors[r][1]+"m":e}function XAt(e,t){return e}function YAt(e){var t={};return e.forEach(function(r,n){t[r]=!0}),t}function PR(e,t,r){if(e.customInspect&&t&&LR(t.inspect)&&t.inspect!==Ul.inspect&&!(t.constructor&&t.constructor.prototype===t)){var n=t.inspect(r,e);return DR(n)||(n=PR(e,n,r)),n}var i=KAt(e,t);if(i)return i;var a=Object.keys(t),o=YAt(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),Q4(t)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return xj(t);if(a.length===0){if(LR(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if($4(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(IR(t))return e.stylize(Date.prototype.toString.call(t),"date");if(Q4(t))return xj(t)}var l="",u=!1,c=["{","}"];if(DAe(t)&&(u=!0,c=["[","]"]),LR(t)){var f=t.name?": "+t.name:"";l=" [Function"+f+"]"}if($4(t)&&(l=" "+RegExp.prototype.toString.call(t)),IR(t)&&(l=" "+Date.prototype.toUTCString.call(t)),Q4(t)&&(l=" "+xj(t)),a.length===0&&(!u||t.length==0))return c[0]+l+c[1];if(r<0)return $4(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var h;return u?h=JAt(e,t,r,o,a):h=a.map(function(d){return wj(e,t,r,o,d,u)}),e.seen.pop(),$At(h,l,c)}function KAt(e,t){if(b2(t))return e.stylize("undefined","undefined");if(DR(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(zAe(t))return e.stylize(""+t,"number");if(Tj(t))return e.stylize(""+t,"boolean");if(RR(t))return e.stylize("null","null")}function xj(e){return"["+Error.prototype.toString.call(e)+"]"}function JAt(e,t,r,n,i){for(var a=[],o=0,s=t.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).slice(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=e.stylize("[Circular]","special")),b2(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.slice(1,-1),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+s}function $At(e,t,r){var n=0,i=e.reduce(function(a,o){return n++,o.indexOf(` +`)>=0&&n++,a+o.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(t===""?"":t+` + `)+" "+e.join(`, + `)+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}Ul.types=OG();function DAe(e){return Array.isArray(e)}Ul.isArray=DAe;function Tj(e){return typeof e=="boolean"}Ul.isBoolean=Tj;function RR(e){return e===null}Ul.isNull=RR;function QAt(e){return e==null}Ul.isNullOrUndefined=QAt;function zAe(e){return typeof e=="number"}Ul.isNumber=zAe;function DR(e){return typeof e=="string"}Ul.isString=DR;function eSt(e){return typeof e=="symbol"}Ul.isSymbol=eSt;function b2(e){return e===void 0}Ul.isUndefined=b2;function $4(e){return f5(e)&&Aj(e)==="[object RegExp]"}Ul.isRegExp=$4;Ul.types.isRegExp=$4;function f5(e){return typeof e=="object"&&e!==null}Ul.isObject=f5;function IR(e){return f5(e)&&Aj(e)==="[object Date]"}Ul.isDate=IR;Ul.types.isDate=IR;function Q4(e){return f5(e)&&(Aj(e)==="[object Error]"||e instanceof Error)}Ul.isError=Q4;Ul.types.isNativeError=Q4;function LR(e){return typeof e=="function"}Ul.isFunction=LR;function tSt(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}Ul.isPrimitive=tSt;Ul.isBuffer=BG();function Aj(e){return Object.prototype.toString.call(e)}function bj(e){return e<10?"0"+e.toString(10):e.toString(10)}var rSt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function iSt(){var e=new Date,t=[bj(e.getHours()),bj(e.getMinutes()),bj(e.getSeconds())].join(":");return[e.getDate(),rSt[e.getMonth()],t].join(" ")}Ul.log=function(){console.log("%s - %s",iSt(),Ul.format.apply(Ul,arguments))};Ul.inherits=Uy();Ul._extend=function(e,t){if(!t||!f5(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};function FAe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var x2=typeof Symbol!="undefined"?Symbol("util.promisify.custom"):void 0;Ul.promisify=function(t){if(typeof t!="function")throw new TypeError('The "original" argument must be of type Function');if(x2&&t[x2]){var r=t[x2];if(typeof r!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(r,x2,{value:r,enumerable:!1,writable:!1,configurable:!0}),r}function r(){for(var n,i,a=new Promise(function(l,u){n=l,i=u}),o=[],s=0;s{"use strict";function B_(e){"@babel/helpers - typeof";return B_=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},B_(e)}function qAe(e,t){for(var r=0;r2?"one of ".concat(t," ").concat(e.slice(0,r-1).join(", "),", or ")+e[r-1]:r===2?"one of ".concat(t," ").concat(e[0]," or ").concat(e[1]):"of ".concat(t," ").concat(e[0])}else return"of ".concat(t," ").concat(String(e))}function pSt(e,t,r){return e.substr(!r||r<0?0:+r,t.length)===t}function gSt(e,t,r){return(r===void 0||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}function mSt(e,t,r){return typeof r!="number"&&(r=0),r+t.length>e.length?!1:e.indexOf(t,r)!==-1}eE("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError);eE("ERR_INVALID_ARG_TYPE",function(e,t,r){d5===void 0&&(d5=tE()),d5(typeof e=="string","'name' must be a string");var n;typeof t=="string"&&pSt(t,"not ")?(n="must not be",t=t.replace(/^not /,"")):n="must be";var i;if(gSt(e," argument"))i="The ".concat(e," ").concat(n," ").concat(OAe(t,"type"));else{var a=mSt(e,".")?"property":"argument";i='The "'.concat(e,'" ').concat(a," ").concat(n," ").concat(OAe(t,"type"))}return i+=". Received type ".concat(B_(r)),i},TypeError);eE("ERR_INVALID_ARG_VALUE",function(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";Sj===void 0&&(Sj=h5());var n=Sj.inspect(t);return n.length>128&&(n="".concat(n.slice(0,128),"...")),"The argument '".concat(e,"' ").concat(r,". Received ").concat(n)},TypeError,RangeError);eE("ERR_INVALID_RETURN_VALUE",function(e,t,r){var n;return r&&r.constructor&&r.constructor.name?n="instance of ".concat(r.constructor.name):n="type ".concat(B_(r)),"Expected ".concat(e,' to be returned from the "').concat(t,'"')+" function but got ".concat(n,".")},TypeError);eE("ERR_MISSING_ARGS",function(){for(var e=arguments.length,t=new Array(e),r=0;r0,"At least one arg needs to be specified");var n="The ",i=t.length;switch(t=t.map(function(a){return'"'.concat(a,'"')}),i){case 1:n+="".concat(t[0]," argument");break;case 2:n+="".concat(t[0]," and ").concat(t[1]," arguments");break;default:n+=t.slice(0,i-1).join(", "),n+=", and ".concat(t[i-1]," arguments");break}return"".concat(n," must be specified")},TypeError);NAe.exports.codes=BAe});var KAe=ye((gcr,YAe)=>{"use strict";function UAe(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function VAe(e){for(var t=1;te.length)&&(r=e.length),e.substring(r-t.length,r)===t}function kSt(e,t){if(t=Math.floor(t),e.length==0||t==0)return"";var r=e.length*t;for(t=Math.floor(Math.log(t)/Math.log(2));t;)e+=e,t--;return e+=e.substring(0,r-e.length),e}var Gg="",rE="",iE="",xv="",w2={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"},CSt=10;function jAe(e){var t=Object.keys(e),r=Object.create(Object.getPrototypeOf(e));return t.forEach(function(n){r[n]=e[n]}),Object.defineProperty(r,"message",{value:e.message}),r}function nE(e){return Lj(e,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function LSt(e,t,r){var n="",i="",a=0,o="",s=!1,l=nE(e),u=l.split(` +`),c=nE(t).split(` +`),f=0,h="";if(r==="strictEqual"&&Dp(e)==="object"&&Dp(t)==="object"&&e!==null&&t!==null&&(r="strictEqualObject"),u.length===1&&c.length===1&&u[0]!==c[0]){var d=u[0].length+c[0].length;if(d<=CSt){if((Dp(e)!=="object"||e===null)&&(Dp(t)!=="object"||t===null)&&(e!==0||t!==0))return"".concat(w2[r],` + +`)+"".concat(u[0]," !== ").concat(c[0],` +`)}else if(r!=="strictEqualObject"){var v=process.stderr&&process.stderr.isTTY?process.stderr.columns:80;if(d2&&(h=` + `.concat(kSt(" ",f),"^"),f=0)}}}for(var x=u[u.length-1],b=c[c.length-1];x===b&&(f++<2?o=` + `.concat(x).concat(o):n=x,u.pop(),c.pop(),!(u.length===0||c.length===0));)x=u[u.length-1],b=c[c.length-1];var p=Math.max(u.length,c.length);if(p===0){var E=l.split(` +`);if(E.length>30)for(E[26]="".concat(Gg,"...").concat(xv);E.length>27;)E.pop();return"".concat(w2.notIdentical,` + +`).concat(E.join(` +`),` +`)}f>3&&(o=` +`.concat(Gg,"...").concat(xv).concat(o),s=!0),n!==""&&(o=` + `.concat(n).concat(o),n="");var k=0,A=w2[r]+` +`.concat(rE,"+ actual").concat(xv," ").concat(iE,"- expected").concat(xv),L=" ".concat(Gg,"...").concat(xv," Lines skipped");for(f=0;f1&&f>2&&(_>4?(i+=` +`.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` + `.concat(c[f-2]),k++),i+=` + `.concat(c[f-1]),k++),a=f,n+=` +`.concat(iE,"-").concat(xv," ").concat(c[f]),k++;else if(c.length1&&f>2&&(_>4?(i+=` +`.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` + `.concat(u[f-2]),k++),i+=` + `.concat(u[f-1]),k++),a=f,i+=` +`.concat(rE,"+").concat(xv," ").concat(u[f]),k++;else{var C=c[f],M=u[f],g=M!==C&&(!GAe(M,",")||M.slice(0,-1)!==C);g&&GAe(C,",")&&C.slice(0,-1)===M&&(g=!1,M+=","),g?(_>1&&f>2&&(_>4?(i+=` +`.concat(Gg,"...").concat(xv),s=!0):_>3&&(i+=` + `.concat(u[f-2]),k++),i+=` + `.concat(u[f-1]),k++),a=f,i+=` +`.concat(rE,"+").concat(xv," ").concat(M),n+=` +`.concat(iE,"-").concat(xv," ").concat(C),k+=2):(i+=n,n="",(_===1||f===0)&&(i+=` + `.concat(M),k++))}if(k>20&&f30)for(d[26]="".concat(Gg,"...").concat(xv);d.length>27;)d.pop();d.length===1?a=r.call(this,"".concat(h," ").concat(d[0])):a=r.call(this,"".concat(h,` + +`).concat(d.join(` +`),` +`))}else{var v=nE(u),x="",b=w2[s];s==="notDeepEqual"||s==="notEqual"?(v="".concat(w2[s],` + +`).concat(v),v.length>1024&&(v="".concat(v.slice(0,1021),"..."))):(x="".concat(nE(c)),v.length>512&&(v="".concat(v.slice(0,509),"...")),x.length>512&&(x="".concat(x.slice(0,509),"...")),s==="deepEqual"||s==="equal"?v="".concat(b,` + +`).concat(v,` + +should equal + +`):x=" ".concat(s," ").concat(x)),a=r.call(this,"".concat(v).concat(x))}return Error.stackTraceLimit=f,a.generatedMessage=!o,Object.defineProperty(kj(a),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),a.code="ERR_ASSERTION",a.actual=u,a.expected=c,a.operator=s,Error.captureStackTrace&&Error.captureStackTrace(kj(a),l),a.stack,a.name="AssertionError",ZAe(a)}return xSt(n,[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:t,value:function(a,o){return Lj(this,VAe(VAe({},o),{},{customInspect:!1,depth:0}))}}]),n}(Cj(Error),Lj.custom);YAe.exports=PSt});var Pj=ye((mcr,$Ae)=>{"use strict";var JAe=Object.prototype.toString;$Ae.exports=function(t){var r=JAe.call(t),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&t!==null&&typeof t=="object"&&typeof t.length=="number"&&t.length>=0&&JAe.call(t.callee)==="[object Function]"),n}});var sSe=ye((ycr,oSe)=>{"use strict";var aSe;Object.keys||(sE=Object.prototype.hasOwnProperty,Ij=Object.prototype.toString,QAe=Pj(),Rj=Object.prototype.propertyIsEnumerable,eSe=!Rj.call({toString:null},"toString"),tSe=Rj.call(function(){},"prototype"),lE=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],qR=function(e){var t=e.constructor;return t&&t.prototype===e},rSe={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},iSe=function(){if(typeof window=="undefined")return!1;for(var e in window)try{if(!rSe["$"+e]&&sE.call(window,e)&&window[e]!==null&&typeof window[e]=="object")try{qR(window[e])}catch(t){return!0}}catch(t){return!0}return!1}(),nSe=function(e){if(typeof window=="undefined"||!iSe)return qR(e);try{return qR(e)}catch(t){return!1}},aSe=function(t){var r=t!==null&&typeof t=="object",n=Ij.call(t)==="[object Function]",i=QAe(t),a=r&&Ij.call(t)==="[object String]",o=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var s=tSe&&n;if(a&&t.length>0&&!sE.call(t,0))for(var l=0;l0)for(var u=0;u{"use strict";var ISt=Array.prototype.slice,RSt=Pj(),lSe=Object.keys,OR=lSe?function(t){return lSe(t)}:sSe(),uSe=Object.keys;OR.shim=function(){if(Object.keys){var t=function(){var r=Object.keys(arguments);return r&&r.length===arguments.length}(1,2);t||(Object.keys=function(n){return RSt(n)?uSe(ISt.call(n)):uSe(n)})}else Object.keys=OR;return Object.keys||OR};cSe.exports=OR});var gSe=ye((xcr,pSe)=>{"use strict";var DSt=Dj(),dSe=B8()(),vSe=i5(),fSe=Object,zSt=vSe("Array.prototype.push"),hSe=vSe("Object.prototype.propertyIsEnumerable"),FSt=dSe?Object.getOwnPropertySymbols:null;pSe.exports=function(t,r){if(t==null)throw new TypeError("target must be an object");var n=fSe(t);if(arguments.length===1)return n;for(var i=1;i{"use strict";var zj=gSe(),qSt=function(){if(!Object.assign)return!1;for(var e="abcdefghijklmnopqrst",t=e.split(""),r={},n=0;n{"use strict";var _Se=function(e){return e!==e};xSe.exports=function(t,r){return t===0&&r===0?1/t===1/r:!!(t===r||_Se(t)&&_Se(r))}});var BR=ye((Tcr,bSe)=>{"use strict";var BSt=Fj();bSe.exports=function(){return typeof Object.is=="function"?Object.is:BSt}});var uE=ye((Acr,SSe)=>{"use strict";var NSt=Dj(),USt=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",VSt=Object.prototype.toString,HSt=Array.prototype.concat,wSe=Object.defineProperty,GSt=function(e){return typeof e=="function"&&VSt.call(e)==="[object Function]"},jSt=yG()(),TSe=wSe&&jSt,WSt=function(e,t,r,n){if(t in e){if(n===!0){if(e[t]===r)return}else if(!GSt(n)||!n())return}TSe?wSe(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r},ASe=function(e,t){var r=arguments.length>2?arguments[2]:{},n=NSt(t);USt&&(n=HSt.call(n,Object.getOwnPropertySymbols(t)));for(var i=0;i{"use strict";var ZSt=BR(),XSt=uE();MSe.exports=function(){var t=ZSt();return XSt(Object,{is:t},{is:function(){return Object.is!==t}}),t}});var PSe=ye((Mcr,LSe)=>{"use strict";var YSt=uE(),KSt=N4(),JSt=Fj(),kSe=BR(),$St=ESe(),CSe=KSt(kSe(),Object);YSt(CSe,{getPolyfill:kSe,implementation:JSt,shim:$St});LSe.exports=CSe});var qj=ye((Ecr,ISe)=>{"use strict";ISe.exports=function(t){return t!==t}});var Oj=ye((kcr,RSe)=>{"use strict";var QSt=qj();RSe.exports=function(){return Number.isNaN&&Number.isNaN(NaN)&&!Number.isNaN("a")?Number.isNaN:QSt}});var zSe=ye((Ccr,DSe)=>{"use strict";var eMt=uE(),tMt=Oj();DSe.exports=function(){var t=tMt();return eMt(Number,{isNaN:t},{isNaN:function(){return Number.isNaN!==t}}),t}});var BSe=ye((Lcr,OSe)=>{"use strict";var rMt=N4(),iMt=uE(),nMt=qj(),FSe=Oj(),aMt=zSe(),qSe=rMt(FSe(),Number);iMt(qSe,{getPolyfill:FSe,implementation:nMt,shim:aMt});OSe.exports=qSe});var aMe=ye((Pcr,nMe)=>{"use strict";function NSe(e,t){return uMt(e)||lMt(e,t)||sMt(e,t)||oMt()}function oMt(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function sMt(e,t){if(e){if(typeof e=="string")return USe(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return USe(e,t)}}function USe(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r10)return!0;for(var t=0;t57)return!0}return e.length===10&&e>=Math.pow(2,32)}function VR(e){return Object.keys(e).filter(yMt).concat(GR(e).filter(Object.prototype.propertyIsEnumerable.bind(e)))}function eMe(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i{"use strict";function jg(e){"@babel/helpers - typeof";return jg=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},jg(e)}function oMe(e,t){for(var r=0;r1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i1?r-1:0),i=1;i{var vE=1e3,pE=vE*60,gE=pE*60,mE=gE*24,GMt=mE*365.25;AMe.exports=function(e,t){t=t||{};var r=typeof e;if(r==="string"&&e.length>0)return jMt(e);if(r==="number"&&isNaN(e)===!1)return t.long?ZMt(e):WMt(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function jMt(e){if(e=String(e),!(e.length>100)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*GMt;case"days":case"day":case"d":return r*mE;case"hours":case"hour":case"hrs":case"hr":case"h":return r*gE;case"minutes":case"minute":case"mins":case"min":case"m":return r*pE;case"seconds":case"second":case"secs":case"sec":case"s":return r*vE;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function WMt(e){return e>=mE?Math.round(e/mE)+"d":e>=gE?Math.round(e/gE)+"h":e>=pE?Math.round(e/pE)+"m":e>=vE?Math.round(e/vE)+"s":e+"ms"}function ZMt(e){return $R(e,mE,"day")||$R(e,gE,"hour")||$R(e,pE,"minute")||$R(e,vE,"second")||e+" ms"}function $R(e,t,r){if(!(e{$u=MMe.exports=jj.debug=jj.default=jj;$u.coerce=$Mt;$u.disable=KMt;$u.enable=YMt;$u.enabled=JMt;$u.humanize=SMe();$u.names=[];$u.skips=[];$u.formatters={};var Gj;function XMt(e){var t=0,r;for(r in e)t=(t<<5)-t+e.charCodeAt(r),t|=0;return $u.colors[Math.abs(t)%$u.colors.length]}function jj(e){function t(){if(t.enabled){var r=t,n=+new Date,i=n-(Gj||n);r.diff=i,r.prev=Gj,r.curr=n,Gj=n;for(var a=new Array(arguments.length),o=0;o{lp=CMe.exports=EMe();lp.log=t4t;lp.formatArgs=e4t;lp.save=r4t;lp.load=kMe;lp.useColors=QMt;lp.storage=typeof chrome!="undefined"&&typeof chrome.storage!="undefined"?chrome.storage.local:i4t();lp.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"];function QMt(){return typeof window!="undefined"&&window.process&&window.process.type==="renderer"?!0:typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}lp.formatters.j=function(e){try{return JSON.stringify(e)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}};function e4t(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+lp.humanize(this.diff),!!t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var n=0,i=0;e[0].replace(/%[a-zA-Z%]/g,function(a){a!=="%%"&&(n++,a==="%c"&&(i=n))}),e.splice(i,0,r)}}function t4t(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function r4t(e){try{e==null?lp.storage.removeItem("debug"):lp.storage.debug=e}catch(t){}}function kMe(){var e;try{e=lp.storage.debug}catch(t){}return!e&&typeof process!="undefined"&&"env"in process&&(e=process.env.DEBUG),e}lp.enable(kMe());function i4t(){try{return window.localStorage}catch(e){}}});var OMe=ye((Dcr,qMe)=>{var p5=tE(),H_=LMe()("stream-parser");qMe.exports=a4t;var IMe=-1,QR=0,n4t=1,RMe=2;function a4t(e){var t=e&&typeof e._transform=="function",r=e&&typeof e._write=="function";if(!t&&!r)throw new Error("must pass a Writable or Transform stream in");H_("extending Parser into stream"),e._bytes=o4t,e._skipBytes=s4t,t&&(e._passthrough=l4t),t?e._transform=c4t:e._write=u4t}function yE(e){H_("initializing parser stream"),e._parserBytesLeft=0,e._parserBuffers=[],e._parserBuffered=0,e._parserState=IMe,e._parserCallback=null,typeof e.push=="function"&&(e._parserOutput=e.push.bind(e)),e._parserInit=!0}function o4t(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(isFinite(e)&&e>0,'can only buffer a finite number of bytes > 0, got "'+e+'"'),this._parserInit||yE(this),H_("buffering %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=QR}function s4t(e,t){p5(!this._parserCallback,'there is already a "callback" set!'),p5(e>0,'can only skip > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),H_("skipping %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=n4t}function l4t(e,t){p5(!this._parserCallback,'There is already a "callback" set!'),p5(e>0,'can only pass through > 0 bytes, got "'+e+'"'),this._parserInit||yE(this),H_("passing through %o bytes",e),this._parserBytesLeft=e,this._parserCallback=t,this._parserState=RMe}function u4t(e,t,r){this._parserInit||yE(this),H_("write(%o bytes)",e.length),typeof t=="function"&&(r=t),zMe(this,e,null,r)}function c4t(e,t,r){this._parserInit||yE(this),H_("transform(%o bytes)",e.length),typeof t!="function"&&(t=this._parserOutput),zMe(this,e,t,r)}function DMe(e,t,r,n){return e._parserBytesLeft<=0?n(new Error("got data but not currently parsing anything")):t.length<=e._parserBytesLeft?function(){return PMe(e,t,r,n)}:function(){var i=t.slice(0,e._parserBytesLeft);return PMe(e,i,r,function(a){if(a)return n(a);if(t.length>i.length)return function(){return DMe(e,t.slice(i.length),r,n)}})}}function PMe(e,t,r,n){if(e._parserBytesLeft-=t.length,H_("%o bytes left for stream piece",e._parserBytesLeft),e._parserState===QR?(e._parserBuffers.push(t),e._parserBuffered+=t.length):e._parserState===RMe&&r(t),e._parserBytesLeft===0){var i=e._parserCallback;if(i&&e._parserState===QR&&e._parserBuffers.length>1&&(t=Buffer.concat(e._parserBuffers,e._parserBuffered)),e._parserState!==QR&&(t=null),e._parserCallback=null,e._parserBuffered=0,e._parserState=IMe,e._parserBuffers.splice(0),i){var a=[];t&&a.push(t),r&&a.push(r);var o=i.length>a.length;o&&a.push(FMe(n));var s=i.apply(e,a);if(!o||n===s)return n}}else return n}var zMe=FMe(DMe);function FMe(e){return function(){for(var t=e.apply(this,arguments);typeof t=="function";)t=t();return t}}});var Eu=ye(Gy=>{"use strict";var BMe=PAe().Transform,f4t=OMe();function _E(){BMe.call(this,{readableObjectMode:!0})}_E.prototype=Object.create(BMe.prototype);_E.prototype.constructor=_E;f4t(_E.prototype);Gy.ParserStream=_E;Gy.sliceEq=function(e,t,r){for(var n=t,i=0;i{"use strict";var g5=Eu().readUInt16BE,Zj=Eu().readUInt32BE;function xE(e,t){if(e.length<4+t)return null;var r=Zj(e,t);return e.length>4&15,n=e[4]&15,i=e[5]>>4&15,a=g5(e,6),o=8,s=0;sa.width||i.width===a.width&&i.height>a.height?i:a}),r=e.reduce(function(i,a){return i.height>a.height||i.height===a.height&&i.width>a.width?i:a}),n;return t.width>r.height||t.width===r.height&&t.height>r.width?n=t:n=r,n}tD.exports.readSizeFromMeta=function(e){var t={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(g4t(e,t),!!t.sizes.length){var r=m4t(t.sizes),n=1;t.transforms.forEach(function(a){var o={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},s={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(a.type==="imir"&&(a.value===0?n=s[n]:(n=s[n],n=o[n],n=o[n])),a.type==="irot")for(var l=0;l{"use strict";function rD(e,t){var r=new Error(e);return r.code=t,r}function y4t(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}function jy(e,t,r){this.input=e.subarray(t,r),this.start=t;var n=String.fromCharCode.apply(null,this.input.subarray(0,4));if(n!=="II*\0"&&n!=="MM\0*")throw rD("invalid TIFF signature","EBADDATA");this.big_endian=n[0]==="M"}jy.prototype.each=function(e){this.aborted=!1;var t=this.read_uint32(4);for(this.ifds_to_read=[{id:0,offset:t}];this.ifds_to_read.length>0&&!this.aborted;){var r=this.ifds_to_read.shift();r.offset&&this.scan_ifd(r.id,r.offset,e)}};jy.prototype.read_uint16=function(e){var t=this.input;if(e+2>t.length)throw rD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*256+t[e+1]:t[e]+t[e+1]*256};jy.prototype.read_uint32=function(e){var t=this.input;if(e+4>t.length)throw rD("unexpected EOF","EBADDATA");return this.big_endian?t[e]*16777216+t[e+1]*65536+t[e+2]*256+t[e+3]:t[e]+t[e+1]*256+t[e+2]*65536+t[e+3]*16777216};jy.prototype.is_subifd_link=function(e,t){return e===0&&t===34665||e===0&&t===34853||e===34665&&t===40965};jy.prototype.exif_format_length=function(e){switch(e){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}};jy.prototype.exif_format_read=function(e,t){var r;switch(e){case 1:case 2:return r=this.input[t],r;case 6:return r=this.input[t],r|(r&128)*33554430;case 3:return r=this.read_uint16(t),r;case 8:return r=this.read_uint16(t),r|(r&32768)*131070;case 4:return r=this.read_uint32(t),r;case 9:return r=this.read_uint32(t),r|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}};jy.prototype.scan_ifd=function(e,t,r){var n=this.read_uint16(t);t+=2;for(var i=0;ithis.input.length)throw rD("unexpected EOF","EBADDATA");for(var h=[],d=c,v=0;v0&&(this.ifds_to_read.push({id:a,offset:h[0]}),f=!0);var b={is_big_endian:this.big_endian,ifd:e,tag:a,format:o,count:s,entry_offset:t+this.start,data_length:u,data_offset:c+this.start,value:h,is_subifd_link:f};if(r(b)===!1){this.aborted=!0;return}t+=12}e===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(t)})};Xj.exports.ExifParser=jy;Xj.exports.get_orientation=function(e){var t=0;try{return new jy(e,0,e.length).each(function(r){if(r.ifd===0&&r.tag===274&&Array.isArray(r.value))return t=r.value[0],!1}),t}catch(r){return-1}}});var VMe=ye((Ocr,UMe)=>{"use strict";var _4t=Eu().str2arr,x4t=Eu().sliceEq,b4t=Eu().readUInt32BE,nD=NMe(),w4t=iD(),T4t=_4t("ftyp");UMe.exports=function(e){if(x4t(e,4,T4t)){var t=nD.unbox(e,0);if(t){var r=nD.getMimeType(t.data);if(r){for(var n,i=t.end;;){var a=nD.unbox(e,i);if(!a)break;if(i=a.end,a.boxtype==="mdat")return;if(a.boxtype==="meta"){n=a.data;break}}if(n){var o=nD.readSizeFromMeta(n);if(o){var s={width:o.width,height:o.height,type:r.type,mime:r.mime,wUnits:"px",hUnits:"px"};if(o.variants.length>1&&(s.variants=o.variants),o.orientation&&(s.orientation=o.orientation),o.exif_location&&o.exif_location.offset+o.exif_location.length<=e.length){var l=b4t(e,o.exif_location.offset),u=e.slice(o.exif_location.offset+l+4,o.exif_location.offset+o.exif_location.length),c=w4t.get_orientation(u);c>0&&(s.orientation=c)}return s}}}}}}});var jMe=ye((Bcr,GMe)=>{"use strict";var A4t=Eu().str2arr,S4t=Eu().sliceEq,HMe=Eu().readUInt16LE,M4t=A4t("BM");GMe.exports=function(e){if(!(e.length<26)&&S4t(e,0,M4t))return{width:HMe(e,18),height:HMe(e,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}});var KMe=ye((Ncr,YMe)=>{"use strict";var XMe=Eu().str2arr,WMe=Eu().sliceEq,ZMe=Eu().readUInt16LE,E4t=XMe("GIF87a"),k4t=XMe("GIF89a");YMe.exports=function(e){if(!(e.length<10)&&!(!WMe(e,0,E4t)&&!WMe(e,0,k4t)))return{width:ZMe(e,6),height:ZMe(e,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}});var QMe=ye((Ucr,$Me)=>{"use strict";var Yj=Eu().readUInt16LE,C4t=0,L4t=1,JMe=16;$Me.exports=function(e){var t=Yj(e,0),r=Yj(e,2),n=Yj(e,4);if(!(t!==C4t||r!==L4t||!n)){for(var i=[],a={width:0,height:0},o=0;oa.width||l>a.height)&&(a=u)}return{width:a.width,height:a.height,variants:i,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}});var t4e=ye((Vcr,e4e)=>{"use strict";var Kj=Eu().readUInt16BE,P4t=Eu().str2arr,I4t=Eu().sliceEq,R4t=iD(),D4t=P4t("Exif\0\0");e4e.exports=function(e){if(!(e.length<2)&&!(e[0]!==255||e[1]!==216||e[2]!==255))for(var t=2;;){for(;;){if(e.length-t<2)return;if(e[t++]===255)break}for(var r=e[t++],n;r===255;)r=e[t++];if(208<=r&&r<=217||r===1)n=0;else if(192<=r&&r<=254){if(e.length-t<2)return;n=Kj(e,t)-2,t+=2}else return;if(r===217||r===218)return;var i;if(r===225&&n>=10&&I4t(e,t,D4t)&&(i=R4t.get_orientation(e.slice(t+6,t+n))),n>=5&&192<=r&&r<=207&&r!==196&&r!==200&&r!==204){if(e.length-t0&&(a.orientation=i),a}t+=n}}});var o4e=ye((Hcr,a4e)=>{"use strict";var n4e=Eu().str2arr,r4e=Eu().sliceEq,i4e=Eu().readUInt32BE,z4t=n4e(`\x89PNG\r + +`),F4t=n4e("IHDR");a4e.exports=function(e){if(!(e.length<24)&&r4e(e,0,z4t)&&r4e(e,12,F4t))return{width:i4e(e,16),height:i4e(e,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}});var u4e=ye((Gcr,l4e)=>{"use strict";var q4t=Eu().str2arr,O4t=Eu().sliceEq,s4e=Eu().readUInt32BE,B4t=q4t("8BPS\0");l4e.exports=function(e){if(!(e.length<22)&&O4t(e,0,B4t))return{width:s4e(e,18),height:s4e(e,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}});var h4e=ye((jcr,f4e)=>{"use strict";function N4t(e){return e===32||e===9||e===13||e===10}function m5(e){return typeof e=="number"&&isFinite(e)&&e>0}function U4t(e){var t=0,r=e.length;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t]*>/,H4t=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,G4t=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,j4t=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,W4t=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,c4e=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function Z4t(e){var t=e.match(G4t),r=e.match(j4t),n=e.match(W4t);return{width:t&&(t[1]||t[2]),height:r&&(r[1]||r[2]),viewbox:n&&(n[1]||n[2])}}function Nm(e){return c4e.test(e)?e.match(c4e)[0]:"px"}f4e.exports=function(e){if(U4t(e)){for(var t="",r=0;r{"use strict";var p4e=Eu().str2arr,d4e=Eu().sliceEq,X4t=Eu().readUInt16LE,Y4t=Eu().readUInt16BE,K4t=Eu().readUInt32LE,J4t=Eu().readUInt32BE,$4t=p4e("II*\0"),Q4t=p4e("MM\0*");function aD(e,t,r){return r?Y4t(e,t):X4t(e,t)}function Jj(e,t,r){return r?J4t(e,t):K4t(e,t)}function v4e(e,t,r){var n=aD(e,t+2,r),i=Jj(e,t+4,r);return i!==1||n!==3&&n!==4?null:n===3?aD(e,t+8,r):Jj(e,t+8,r)}g4e.exports=function(e){if(!(e.length<8)&&!(!d4e(e,0,$4t)&&!d4e(e,0,Q4t))){var t=e[0]===77,r=Jj(e,4,t)-8;if(!(r<0)){var n=r+8;if(!(e.length-n<2)){var i=aD(e,n+0,t)*12;if(!(i<=0)&&(n+=2,!(e.length-n{"use strict";var x4e=Eu().str2arr,y4e=Eu().sliceEq,_4e=Eu().readUInt16LE,$j=Eu().readUInt32LE,eEt=iD(),tEt=x4e("RIFF"),rEt=x4e("WEBP");function iEt(e,t){if(!(e[t+3]!==157||e[t+4]!==1||e[t+5]!==42))return{width:_4e(e,t+6)&16383,height:_4e(e,t+8)&16383,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}function nEt(e,t){if(e[t]===47){var r=$j(e,t+1);return{width:(r&16383)+1,height:(r>>14&16383)+1,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function aEt(e,t){return{width:(e[t+6]<<16|e[t+5]<<8|e[t+4])+1,height:(e[t+9]<e.length)){for(;t+8=10?r=r||iEt(e,t+8):a==="VP8L"&&o>=9?r=r||nEt(e,t+8):a==="VP8X"&&o>=10?r=r||aEt(e,t+8):a==="EXIF"&&(n=eEt.get_orientation(e.slice(t+8,t+8+o)),t=1/0),t+=8+o}if(r)return n>0&&(r.orientation=n),r}}}});var A4e=ye((Xcr,T4e)=>{"use strict";T4e.exports={avif:VMe(),bmp:jMe(),gif:KMe(),ico:QMe(),jpeg:t4e(),png:o4e(),psd:u4e(),svg:h4e(),tiff:m4e(),webp:w4e()}});var S4e=ye((Ycr,eW)=>{"use strict";var Qj=A4e();function oEt(e){for(var t=Object.keys(Qj),r=0;r{"use strict";var sEt=S4e(),lEt=Ly().IMAGE_URL_PREFIX,uEt=u2().Buffer;M4e.getImageSize=function(e){var t=e.replace(lEt,""),r=new uEt(t,"base64");return sEt(r)}});var L4e=ye((Jcr,C4e)=>{"use strict";var k4e=Mr(),cEt=jT(),fEt=uo(),oD=Qa(),hEt=Mr().maxRowLength,dEt=E4e().getImageSize;C4e.exports=function(t,r){var n,i;if(r._hasZ)n=r.z.length,i=hEt(r.z);else if(r._hasSource){var a=dEt(r.source);n=a.height,i=a.width}var o=oD.getFromId(t,r.xaxis||"x"),s=oD.getFromId(t,r.yaxis||"y"),l=o.d2c(r.x0)-r.dx/2,u=s.d2c(r.y0)-r.dy/2,c,f=[l,l+i*r.dx],h=[u,u+n*r.dy];if(o&&o.type==="log")for(c=0;c{"use strict";var mEt=xa(),T2=Mr(),P4e=T2.strTranslate,yEt=Zp(),_Et=jT(),xEt=jV(),bEt=o8().STYLE;I4e.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis,s=!t._context._exportedPlot&&xEt();T2.makeTraceGroups(i,n,"im").each(function(l){var u=mEt.select(this),c=l[0],f=c.trace,h=(f.zsmooth==="fast"||f.zsmooth===!1&&s)&&!f._hasZ&&f._hasSource&&a.type==="linear"&&o.type==="linear";f._realImage=h;var d=c.z,v=c.x0,x=c.y0,b=c.w,p=c.h,E=f.dx,k=f.dy,A,L,_,C,M,g;for(g=0;A===void 0&&g0;)L=a.c2p(v+g*E),g--;for(g=0;C===void 0&&g0;)M=o.c2p(x+g*k),g--;if(LW[0];if(re||ae){var _e=A+T/2,Me=C+F/2;G+="transform:"+P4e(_e+"px",Me+"px")+"scale("+(re?-1:1)+","+(ae?-1:1)+")"+P4e(-_e+"px",-Me+"px")+";"}}X.attr("style",G);var ke=new Promise(function(ge){if(f._hasZ)ge();else if(f._hasSource)if(f._canvas&&f._canvas.el.width===b&&f._canvas.el.height===p&&f._canvas.source===f.source)ge();else{var ie=document.createElement("canvas");ie.width=b,ie.height=p;var Te=ie.getContext("2d",{willReadFrequently:!0});f._image=f._image||new Image;var Ee=f._image;Ee.onload=function(){Te.drawImage(Ee,0,0),f._canvas={el:ie,source:f.source},ge()},Ee.setAttribute("src",f.source)}}).then(function(){var ge,ie;if(f._hasZ)ie=H(function(Ae,ze){var Ce=d[ze][Ae];return T2.isTypedArray(Ce)&&(Ce=Array.from(Ce)),Ce}),ge=ie.toDataURL("image/png");else if(f._hasSource)if(h)ge=f.source;else{var Te=f._canvas.el.getContext("2d",{willReadFrequently:!0}),Ee=Te.getImageData(0,0,b,p).data;ie=H(function(Ae,ze){var Ce=4*(ze*b+Ae);return[Ee[Ce],Ee[Ce+1],Ee[Ce+2],Ee[Ce+3]]}),ge=ie.toDataURL("image/png")}X.attr({"xlink:href":ge,height:F,width:T,x:A,y:C})});t._promises.push(ke)})}});var z4e=ye((Qcr,D4e)=>{"use strict";var wEt=xa();D4e.exports=function(t){wEt.select(t).selectAll(".im image").style("opacity",function(r){return r[0].trace.opacity})}});var B4e=ye((efr,O4e)=>{"use strict";var F4e=Nc(),q4e=Mr(),sD=q4e.isArrayOrTypedArray,TEt=jT();O4e.exports=function(t,r,n){var i=t.cd[0],a=i.trace,o=t.xa,s=t.ya;if(!(F4e.inbox(r-i.x0,r-(i.x0+i.w*a.dx),0)>0||F4e.inbox(n-i.y0,n-(i.y0+i.h*a.dy),0)>0)){var l=Math.floor((r-i.x0)/a.dx),u=Math.floor(Math.abs(n-i.y0)/a.dy),c;if(a._hasZ?c=i.z[u][l]:a._hasSource&&(c=a._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(l,u,1,1).data),!!c){var f=i.hi||a.hoverinfo,h;if(f){var d=f.split("+");d.indexOf("all")!==-1&&(d=["color"]),d.indexOf("color")!==-1&&(h=!0)}var v=TEt.colormodel[a.colormodel],x=v.colormodel||a.colormodel,b=x.length,p=a._scaler(c),E=v.suffix,k=[];(a.hovertemplate||h)&&(k.push("["+[p[0]+E[0],p[1]+E[1],p[2]+E[2]].join(", ")),b===4&&k.push(", "+p[3]+E[3]),k.push("]"),k=k.join(""),t.extraText=x.toUpperCase()+": "+k);var A;sD(a.hovertext)&&sD(a.hovertext[u])?A=a.hovertext[u][l]:sD(a.text)&&sD(a.text[u])&&(A=a.text[u][l]);var L=s.c2p(i.y0+(u+.5)*a.dy),_=i.x0+(l+.5)*a.dx,C=i.y0+(u+.5)*a.dy,M="["+c.slice(0,a.colormodel.length).join(", ")+"]";return[q4e.extendFlat(t,{index:[u,l],x0:o.c2p(i.x0+l*a.dx),x1:o.c2p(i.x0+(l+1)*a.dx),y0:L,y1:L,color:p,xVal:_,xLabelVal:_,yVal:C,yLabelVal:C,zLabelVal:M,text:A,hovertemplateLabels:{zLabel:M,colorLabel:k,"color[0]Label":p[0]+E[0],"color[1]Label":p[1]+E[1],"color[2]Label":p[2]+E[2],"color[3]Label":p[3]+E[3]}})]}}}});var U4e=ye((tfr,N4e)=>{"use strict";N4e.exports=function(t,r){return"xVal"in r&&(t.x=r.xVal),"yVal"in r&&(t.y=r.yVal),r.xa&&(t.xaxis=r.xa),r.ya&&(t.yaxis=r.ya),t.color=r.color,t.colormodel=r.trace.colormodel,t.z||(t.z=r.color),t}});var H4e=ye((rfr,V4e)=>{"use strict";V4e.exports={attributes:tG(),supplyDefaults:T3e(),calc:L4e(),plot:R4e(),style:z4e(),hoverPoints:B4e(),eventData:U4e(),moduleType:"trace",name:"image",basePlotModule:Jf(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}});var j4e=ye((ifr,G4e)=>{"use strict";G4e.exports=H4e()});var A2=ye((nfr,W4e)=>{"use strict";var AEt=vl(),SEt=Ju().attributes,MEt=Su(),EEt=dh(),kEt=Wo().hovertemplateAttrs,CEt=Wo().texttemplateAttrs,bE=no().extendFlat,LEt=Ed().pattern,lD=MEt({editType:"plot",arrayOk:!0,colorEditType:"plot"});W4e.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:EEt.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:LEt,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:bE({},AEt.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:kEt({},{keys:["label","color","value","percent","text"]}),texttemplate:CEt({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:bE({},lD,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:bE({},lD,{}),outsidetextfont:bE({},lD,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:bE({},lD,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:SEt({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}});var S2=ye((afr,Y4e)=>{"use strict";var PEt=uo(),wE=Mr(),IEt=A2(),REt=Ju().defaults,DEt=r0().handleText,zEt=Mr().coercePattern;function Z4e(e,t){var r=wE.isArrayOrTypedArray(e),n=wE.isArrayOrTypedArray(t),i=Math.min(r?e.length:1/0,n?t.length:1/0);if(isFinite(i)||(i=0),i&&n){for(var a,o=0;o0){a=!0;break}}a||(i=0)}return{hasLabels:r,hasValues:n,len:i}}function X4e(e,t,r,n,i){var a=n("marker.line.width");a&&n("marker.line.color",i?void 0:r.paper_bgcolor);var o=n("marker.colors");zEt(n,"marker.pattern",o),e.marker&&!t.marker.pattern.fgcolor&&(t.marker.pattern.fgcolor=e.marker.colors),t.marker.pattern.bgcolor||(t.marker.pattern.bgcolor=r.paper_bgcolor)}function FEt(e,t,r,n){function i(E,k){return wE.coerce(e,t,IEt,E,k)}var a=i("labels"),o=i("values"),s=Z4e(a,o),l=s.len;if(t._hasLabels=s.hasLabels,t._hasValues=s.hasValues,!t._hasLabels&&t._hasValues&&(i("label0"),i("dlabel")),!l){t.visible=!1;return}t._length=l,X4e(e,t,n,i,!0),i("scalegroup");var u=i("text"),c=i("texttemplate"),f;if(c||(f=i("textinfo",wE.isArrayOrTypedArray(u)?"text+percent":"percent")),i("hovertext"),i("hovertemplate"),c||f&&f!=="none"){var h=i("textposition");DEt(e,t,n,i,h,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var d=Array.isArray(h)||h==="auto",v=d||h==="outside";v&&i("automargin"),(h==="inside"||h==="auto"||Array.isArray(h))&&i("insidetextorientation")}else f==="none"&&i("textposition","none");REt(t,n,i);var x=i("hole"),b=i("title.text");if(b){var p=i("title.position",x?"middle center":"top center");!x&&p==="middle center"&&(t.title.position="top center"),wE.coerceFont(i,"title.font",n.font)}i("sort"),i("direction"),i("rotation"),i("pull")}Y4e.exports={handleLabelsAndValues:Z4e,handleMarkerDefaults:X4e,supplyDefaults:FEt}});var uD=ye((ofr,K4e)=>{"use strict";K4e.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var $4e=ye((sfr,J4e)=>{"use strict";var qEt=Mr(),OEt=uD();J4e.exports=function(t,r){function n(i,a){return qEt.coerce(t,r,OEt,i,a)}n("hiddenlabels"),n("piecolorway",r.colorway),n("extendpiecolors")}});var y5=ye((lfr,tEe)=>{"use strict";var BEt=uo(),tW=id(),NEt=va(),UEt={};function VEt(e,t){var r=[],n=e._fullLayout,i=n.hiddenlabels||[],a=t.labels,o=t.marker.colors||[],s=t.values,l=t._length,u=t._hasValues&&l,c,f;if(t.dlabel)for(a=new Array(l),c=0;c=0});var A=t.type==="funnelarea"?x:t.sort;return A&&r.sort(function(L,_){return _.v-L.v}),r[0]&&(r[0].vTotal=v),r}function Q4e(e){return function(r,n){return!r||(r=tW(r),!r.isValid())?!1:(r=NEt.addOpacity(r,r.getAlpha()),e[n]||(e[n]=r),r)}}function HEt(e,t){var r=(t||{}).type;r||(r="pie");var n=e._fullLayout,i=e.calcdata,a=n[r+"colorway"],o=n["_"+r+"colormap"];n["extend"+r+"colors"]&&(a=eEe(a,UEt));for(var s=0,l=0;l{"use strict";var GEt=rp().appendArrayMultiPointValues;rEe.exports=function(t,r){var n={curveNumber:r.index,pointNumbers:t.pts,data:r._input,fullData:r,label:t.label,color:t.color,value:t.v,percent:t.percent,text:t.text,bbox:t.bbox,v:t.v};return t.pts.length===1&&(n.pointNumber=n.i=t.pts[0]),GEt(n,r,t.pts),r.type==="funnelarea"&&(delete n.v,delete n.i),n}});var dD=ye((cfr,AEe)=>{"use strict";var zp=xa(),jEt=Xu(),cD=Nc(),uEe=va(),Wy=ao(),ev=Mr(),WEt=ev.strScale,nEe=ev.strTranslate,rW=Pl(),cEe=_v(),ZEt=cEe.recordMinTextSize,XEt=cEe.clearMinTextSize,fEe=Qb().TEXTPAD,Zo=u_(),fD=iEe(),aEe=Mr().isValidTextValue;function YEt(e,t){var r=e._context.staticPlot,n=e._fullLayout,i=n._size;XEt("pie",n),vEe(t,e),bEe(t,i);var a=ev.makeTraceGroups(n._pielayer,t,"trace").each(function(o){var s=zp.select(this),l=o[0],u=l.trace;nkt(o),s.attr("stroke-linejoin","round"),s.each(function(){var c=zp.select(this).selectAll("g.slice").data(o);c.enter().append("g").classed("slice",!0),c.exit().remove();var f=[[[],[]],[[],[]]],h=!1;c.each(function(A,L){if(A.hidden){zp.select(this).selectAll("path,g").remove();return}A.pointNumber=A.i,A.curveNumber=u.index,f[A.pxmid[1]<0?0:1][A.pxmid[0]<0?0:1].push(A);var _=l.cx,C=l.cy,M=zp.select(this),g=M.selectAll("path.surface").data([A]);if(g.enter().append("path").classed("surface",!0).style({"pointer-events":r?"none":"all"}),M.call(hEe,e,o),u.pull){var P=+Zo.castOption(u.pull,A.pts)||0;P>0&&(_+=P*A.pxmid[0],C+=P*A.pxmid[1])}A.cxFinal=_,A.cyFinal=C;function T(N,W,re,ae){var _e=ae*(W[0]-N[0]),Me=ae*(W[1]-N[1]);return"a"+ae*l.r+","+ae*l.r+" 0 "+A.largeArc+(re?" 1 ":" 0 ")+_e+","+Me}var F=u.hole;if(A.v===l.vTotal){var q="M"+(_+A.px0[0])+","+(C+A.px0[1])+T(A.px0,A.pxmid,!0,1)+T(A.pxmid,A.px0,!0,1)+"Z";F?g.attr("d","M"+(_+F*A.px0[0])+","+(C+F*A.px0[1])+T(A.px0,A.pxmid,!1,F)+T(A.pxmid,A.px0,!1,F)+"Z"+q):g.attr("d",q)}else{var V=T(A.px0,A.px1,!0,1);if(F){var H=1-F;g.attr("d","M"+(_+F*A.px1[0])+","+(C+F*A.px1[1])+T(A.px1,A.px0,!1,F)+"l"+H*A.px0[0]+","+H*A.px0[1]+V+"Z")}else g.attr("d","M"+_+","+C+"l"+A.px0[0]+","+A.px0[1]+V+"Z")}wEe(e,A,l);var X=Zo.castOption(u.textposition,A.pts),G=M.selectAll("g.slicetext").data(A.text&&X!=="none"?[0]:[]);G.enter().append("g").classed("slicetext",!0),G.exit().remove(),G.each(function(){var N=ev.ensureSingle(zp.select(this),"text","",function(ie){ie.attr("data-notex",1)}),W=ev.ensureUniformFontSize(e,X==="outside"?JEt(u,A,n.font):dEe(u,A,n.font));N.text(A.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(Wy.font,W).call(rW.convertToTspans,e);var re=Wy.bBox(N.node()),ae;if(X==="outside")ae=lEe(re,A);else if(ae=pEe(re,A,l),X==="auto"&&ae.scale<1){var _e=ev.ensureUniformFontSize(e,u.outsidetextfont);N.call(Wy.font,_e),re=Wy.bBox(N.node()),ae=lEe(re,A)}var Me=ae.textPosAngle,ke=Me===void 0?A.pxmid:hD(l.r,Me);if(ae.targetX=_+ke[0]*ae.rCenter+(ae.x||0),ae.targetY=C+ke[1]*ae.rCenter+(ae.y||0),TEe(ae,re),ae.outside){var ge=ae.targetY;A.yLabelMin=ge-re.height/2,A.yLabelMid=ge,A.yLabelMax=ge+re.height/2,A.labelExtraX=0,A.labelExtraY=0,h=!0}ae.fontSize=W.size,ZEt(u.type,ae,n),o[L].transform=ae,ev.setTransormAndDisplay(N,ae)})});var d=zp.select(this).selectAll("g.titletext").data(u.title.text?[0]:[]);if(d.enter().append("g").classed("titletext",!0),d.exit().remove(),d.each(function(){var A=ev.ensureSingle(zp.select(this),"text","",function(C){C.attr("data-notex",1)}),L=u.title.text;u._meta&&(L=ev.templateString(L,u._meta)),A.text(L).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(Wy.font,u.title.font).call(rW.convertToTspans,e);var _;u.title.position==="middle center"?_=ekt(l):_=_Ee(l,i),A.attr("transform",nEe(_.x,_.y)+WEt(Math.min(1,_.scale))+nEe(_.tx,_.ty))}),h&&rkt(f,u),KEt(c,u),h&&u.automargin){var v=Wy.bBox(s.node()),x=u.domain,b=i.w*(x.x[1]-x.x[0]),p=i.h*(x.y[1]-x.y[0]),E=(.5*b-l.r)/i.w,k=(.5*p-l.r)/i.h;jEt.autoMargin(e,"pie."+u.uid+".automargin",{xl:x.x[0]-E,xr:x.x[1]+E,yb:x.y[0]-k,yt:x.y[1]+k,l:Math.max(l.cx-l.r-v.left,0),r:Math.max(v.right-(l.cx+l.r),0),b:Math.max(v.bottom-(l.cy+l.r),0),t:Math.max(l.cy-l.r-v.top,0),pad:5})}})});setTimeout(function(){a.selectAll("tspan").each(function(){var o=zp.select(this);o.attr("dy")&&o.attr("dy",o.attr("dy"))})},0)}function KEt(e,t){e.each(function(r){var n=zp.select(this);if(!r.labelExtraX&&!r.labelExtraY){n.select("path.textline").remove();return}var i=n.select("g.slicetext text");r.transform.targetX+=r.labelExtraX,r.transform.targetY+=r.labelExtraY,ev.setTransormAndDisplay(i,r.transform);var a=r.cxFinal+r.pxmid[0],o=r.cyFinal+r.pxmid[1],s="M"+a+","+o,l=(r.yLabelMax-r.yLabelMin)*(r.pxmid[0]<0?-1:1)/4;if(r.labelExtraX){var u=r.labelExtraX*r.pxmid[1]/r.pxmid[0],c=r.yLabelMid+r.labelExtraY-(r.cyFinal+r.pxmid[1]);Math.abs(u)>Math.abs(c)?s+="l"+c*r.pxmid[0]/r.pxmid[1]+","+c+"H"+(a+r.labelExtraX+l):s+="l"+r.labelExtraX+","+u+"v"+(c-u)+"h"+l}else s+="V"+(r.yLabelMid+r.labelExtraY)+"h"+l;ev.ensureSingle(n,"path","textline").call(uEe.stroke,t.outsidetextfont.color).attr({"stroke-width":Math.min(2,t.outsidetextfont.size/8),d:s,fill:"none"})})}function hEe(e,t,r){var n=r[0],i=n.cx,a=n.cy,o=n.trace,s=o.type==="funnelarea";"_hasHoverLabel"in o||(o._hasHoverLabel=!1),"_hasHoverEvent"in o||(o._hasHoverEvent=!1),e.on("mouseover",function(l){var u=t._fullLayout,c=t._fullData[o.index];if(!(t._dragging||u.hovermode===!1)){var f=c.hoverinfo;if(Array.isArray(f)&&(f=cD.castHoverinfo({hoverinfo:[Zo.castOption(f,l.pts)],_module:o._module},u,0)),f==="all"&&(f="label+text+value+percent+name"),c.hovertemplate||f!=="none"&&f!=="skip"&&f){var h=l.rInscribed||0,d=i+l.pxmid[0]*(1-h),v=a+l.pxmid[1]*(1-h),x=u.separators,b=[];if(f&&f.indexOf("label")!==-1&&b.push(l.label),l.text=Zo.castOption(c.hovertext||c.text,l.pts),f&&f.indexOf("text")!==-1){var p=l.text;ev.isValidTextValue(p)&&b.push(p)}l.value=l.v,l.valueLabel=Zo.formatPieValue(l.v,x),f&&f.indexOf("value")!==-1&&b.push(l.valueLabel),l.percent=l.v/n.vTotal,l.percentLabel=Zo.formatPiePercent(l.percent,x),f&&f.indexOf("percent")!==-1&&b.push(l.percentLabel);var E=c.hoverlabel,k=E.font,A=[];cD.loneHover({trace:o,x0:d-h*n.r,x1:d+h*n.r,y:v,_x0:s?i+l.TL[0]:d-h*n.r,_x1:s?i+l.TR[0]:d+h*n.r,_y0:s?a+l.TL[1]:v-h*n.r,_y1:s?a+l.BL[1]:v+h*n.r,text:b.join("
"),name:c.hovertemplate||f.indexOf("name")!==-1?c.name:void 0,idealAlign:l.pxmid[0]<0?"left":"right",color:Zo.castOption(E.bgcolor,l.pts)||l.color,borderColor:Zo.castOption(E.bordercolor,l.pts),fontFamily:Zo.castOption(k.family,l.pts),fontSize:Zo.castOption(k.size,l.pts),fontColor:Zo.castOption(k.color,l.pts),nameLength:Zo.castOption(E.namelength,l.pts),textAlign:Zo.castOption(E.align,l.pts),hovertemplate:Zo.castOption(c.hovertemplate,l.pts),hovertemplateLabels:l,eventData:[fD(l,c)]},{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:t,inOut_bbox:A}),l.bbox=A[0],o._hasHoverLabel=!0}o._hasHoverEvent=!0,t.emit("plotly_hover",{points:[fD(l,c)],event:zp.event})}}),e.on("mouseout",function(l){var u=t._fullLayout,c=t._fullData[o.index],f=zp.select(this).datum();o._hasHoverEvent&&(l.originalEvent=zp.event,t.emit("plotly_unhover",{points:[fD(f,c)],event:zp.event}),o._hasHoverEvent=!1),o._hasHoverLabel&&(cD.loneUnhover(u._hoverlayer.node()),o._hasHoverLabel=!1)}),e.on("click",function(l){var u=t._fullLayout,c=t._fullData[o.index];t._dragging||u.hovermode===!1||(t._hoverdata=[fD(l,c)],cD.click(t,zp.event))})}function JEt(e,t,r){var n=Zo.castOption(e.outsidetextfont.color,t.pts)||Zo.castOption(e.textfont.color,t.pts)||r.color,i=Zo.castOption(e.outsidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.outsidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.outsidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.outsidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.outsidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.outsidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.outsidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.outsidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n,family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function dEe(e,t,r){var n=Zo.castOption(e.insidetextfont.color,t.pts);!n&&e._input.textfont&&(n=Zo.castOption(e._input.textfont.color,t.pts));var i=Zo.castOption(e.insidetextfont.family,t.pts)||Zo.castOption(e.textfont.family,t.pts)||r.family,a=Zo.castOption(e.insidetextfont.size,t.pts)||Zo.castOption(e.textfont.size,t.pts)||r.size,o=Zo.castOption(e.insidetextfont.weight,t.pts)||Zo.castOption(e.textfont.weight,t.pts)||r.weight,s=Zo.castOption(e.insidetextfont.style,t.pts)||Zo.castOption(e.textfont.style,t.pts)||r.style,l=Zo.castOption(e.insidetextfont.variant,t.pts)||Zo.castOption(e.textfont.variant,t.pts)||r.variant,u=Zo.castOption(e.insidetextfont.textcase,t.pts)||Zo.castOption(e.textfont.textcase,t.pts)||r.textcase,c=Zo.castOption(e.insidetextfont.lineposition,t.pts)||Zo.castOption(e.textfont.lineposition,t.pts)||r.lineposition,f=Zo.castOption(e.insidetextfont.shadow,t.pts)||Zo.castOption(e.textfont.shadow,t.pts)||r.shadow;return{color:n||uEe.contrast(t.color),family:i,size:a,weight:o,style:s,variant:l,textcase:u,lineposition:c,shadow:f}}function vEe(e,t){for(var r,n,i=0;i=-4;E-=2)p(Math.PI*E,"tan");for(E=4;E>=-4;E-=2)p(Math.PI*(E+1),"tan")}if(f||d){for(E=4;E>=-4;E-=2)p(Math.PI*(E+1.5),"rad");for(E=4;E>=-4;E-=2)p(Math.PI*(E+.5),"rad")}}if(s||v||f){var k=Math.sqrt(e.width*e.width+e.height*e.height);if(b={scale:i*n*2/k,rCenter:1-i,rotate:0},b.textPosAngle=(t.startangle+t.stopangle)/2,b.scale>=1)return b;x.push(b)}(v||d)&&(b=oEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b)),(v||h)&&(b=sEe(e,n,o,l,u),b.textPosAngle=(t.startangle+t.stopangle)/2,x.push(b));for(var A=0,L=0,_=0;_=1)break}return x[A]}function $Et(e,t){var r=e.startangle,n=e.stopangle;return r>t&&t>n||r0?1:-1)/2,y:a/(1+r*r/(n*n)),outside:!0}}function ekt(e){var t=Math.sqrt(e.titleBox.width*e.titleBox.width+e.titleBox.height*e.titleBox.height);return{x:e.cx,y:e.cy,scale:e.trace.hole*e.r*2/t,tx:0,ty:-e.titleBox.height/2+e.trace.title.font.size}}function _Ee(e,t){var r=1,n=1,i,a=e.trace,o={x:e.cx,y:e.cy},s={tx:0,ty:0};s.ty+=a.title.font.size,i=xEe(a),a.title.position.indexOf("top")!==-1?(o.y-=(1+i)*e.r,s.ty-=e.titleBox.height):a.title.position.indexOf("bottom")!==-1&&(o.y+=(1+i)*e.r);var l=tkt(e.r,e.trace.aspectratio),u=t.w*(a.domain.x[1]-a.domain.x[0])/2;return a.title.position.indexOf("left")!==-1?(u=u+l,o.x-=(1+i)*l,s.tx+=e.titleBox.width/2):a.title.position.indexOf("center")!==-1?u*=2:a.title.position.indexOf("right")!==-1&&(u=u+l,o.x+=(1+i)*l,s.tx-=e.titleBox.width/2),r=u/e.titleBox.width,n=iW(e,t)/e.titleBox.height,{x:o.x,y:o.y,scale:Math.min(r,n),tx:s.tx,ty:s.ty}}function tkt(e,t){return e/(t===void 0?1:t)}function iW(e,t){var r=e.trace,n=t.h*(r.domain.y[1]-r.domain.y[0]);return Math.min(e.titleBox.height,n/2)}function xEe(e){var t=e.pull;if(!t)return 0;var r;if(ev.isArrayOrTypedArray(t))for(t=0,r=0;rt&&(t=e.pull[r]);return t}function rkt(e,t){var r,n,i,a,o,s,l,u,c,f,h,d,v;function x(k,A){return k.pxmid[1]-A.pxmid[1]}function b(k,A){return A.pxmid[1]-k.pxmid[1]}function p(k,A){A||(A={});var L=A.labelExtraY+(n?A.yLabelMax:A.yLabelMin),_=n?k.yLabelMin:k.yLabelMax,C=n?k.yLabelMax:k.yLabelMin,M=k.cyFinal+o(k.px0[1],k.px1[1]),g=L-_,P,T,F,q,V,H;if(g*l>0&&(k.labelExtraY=g),!!ev.isArrayOrTypedArray(t.pull))for(T=0;T=(Zo.castOption(t.pull,F.pts)||0))&&((k.pxmid[1]-F.pxmid[1])*l>0?(q=F.cyFinal+o(F.px0[1],F.px1[1]),g=q-_-k.labelExtraY,g*l>0&&(k.labelExtraY+=g)):(C+k.labelExtraY-M)*l>0&&(P=3*s*Math.abs(T-f.indexOf(k)),V=F.cxFinal+a(F.px0[0],F.px1[0]),H=V+P-(k.cxFinal+k.pxmid[0])-k.labelExtraX,H*s>0&&(k.labelExtraX+=H)))}for(n=0;n<2;n++)for(i=n?x:b,o=n?Math.max:Math.min,l=n?1:-1,r=0;r<2;r++){for(a=r?Math.max:Math.min,s=r?1:-1,u=e[n][r],u.sort(i),c=e[1-n][r],f=c.concat(u),d=[],h=0;h1?(u=r.r,c=u/i.aspectratio):(c=r.r,u=c*i.aspectratio),u*=(1+i.baseratio)/2,l=u*c}o=Math.min(o,l/r.vTotal)}for(n=0;nt.vTotal/2?1:0,u.halfangle=Math.PI*Math.min(u.v/t.vTotal,.5),u.ring=1-n.hole,u.rInscribed=QEt(u,t))}function hD(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}function wEe(e,t,r){var n=e._fullLayout,i=r.trace,a=i.texttemplate,o=i.textinfo;if(!a&&o&&o!=="none"){var s=o.split("+"),l=function(A){return s.indexOf(A)!==-1},u=l("label"),c=l("text"),f=l("value"),h=l("percent"),d=n.separators,v;if(v=u?[t.label]:[],c){var x=Zo.getFirstFilled(i.text,t.pts);aEe(x)&&v.push(x)}f&&v.push(Zo.formatPieValue(t.v,d)),h&&v.push(Zo.formatPiePercent(t.v/r.vTotal,d)),t.text=v.join("
")}function b(A){return{label:A.label,value:A.v,valueLabel:Zo.formatPieValue(A.v,n.separators),percent:A.v/r.vTotal,percentLabel:Zo.formatPiePercent(A.v/r.vTotal,n.separators),color:A.color,text:A.text,customdata:ev.castOption(i,A.i,"customdata")}}if(a){var p=ev.castOption(i,t.i,"texttemplate");if(!p)t.text="";else{var E=b(t),k=Zo.getFirstFilled(i.text,t.pts);(aEe(k)||k==="")&&(E.text=k),t.text=ev.texttemplateString(p,E,e._fullLayout._d3locale,E,i._meta||{})}}}function TEe(e,t){var r=e.rotate*Math.PI/180,n=Math.cos(r),i=Math.sin(r),a=(t.left+t.right)/2,o=(t.top+t.bottom)/2;e.textX=a*n-o*i,e.textY=a*i+o*n,e.noCenter=!0}AEe.exports={plot:YEt,formatSliceLabel:wEe,transformInsideText:pEe,determineInsideTextFont:dEe,positionTitleOutside:_Ee,prerenderTitles:vEe,layoutAreas:bEe,attachFxHandlers:hEe,computeTransform:TEe}});var EEe=ye((ffr,MEe)=>{"use strict";var SEe=xa(),akt=z3(),okt=_v().resizeText;MEe.exports=function(t){var r=t._fullLayout._pielayer.selectAll(".trace");okt(t,r,"pie"),r.each(function(n){var i=n[0],a=i.trace,o=SEe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){SEe.select(this).call(akt,s,a,t)})})}});var CEe=ye(_5=>{"use strict";var kEe=Xu();_5.name="pie";_5.plot=function(e,t,r,n){kEe.plotBasePlot(_5.name,e,t,r,n)};_5.clean=function(e,t,r,n){kEe.cleanBasePlot(_5.name,e,t,r,n)}});var PEe=ye((dfr,LEe)=>{"use strict";LEe.exports={attributes:A2(),supplyDefaults:S2().supplyDefaults,supplyLayoutDefaults:$4e(),layoutAttributes:uD(),calc:y5().calc,crossTraceCalc:y5().crossTraceCalc,plot:dD().plot,style:EEe(),styleOne:z3(),moduleType:"trace",name:"pie",basePlotModule:CEe(),categories:["pie-like","pie","showLegend"],meta:{}}});var REe=ye((vfr,IEe)=>{"use strict";IEe.exports=PEe()});var zEe=ye(x5=>{"use strict";var DEe=Xu();x5.name="sunburst";x5.plot=function(e,t,r,n){DEe.plotBasePlot(x5.name,e,t,r,n)};x5.clean=function(e,t,r,n){DEe.cleanBasePlot(x5.name,e,t,r,n)}});var nW=ye((gfr,FEe)=>{"use strict";FEe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}});var AE=ye((mfr,OEe)=>{"use strict";var skt=vl(),lkt=Wo().hovertemplateAttrs,ukt=Wo().texttemplateAttrs,ckt=Jl(),fkt=Ju().attributes,Zy=A2(),qEe=nW(),TE=no().extendFlat,hkt=Ed().pattern;OEe.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:TE({colors:{valType:"data_array",editType:"calc"},line:{color:TE({},Zy.marker.line.color,{dflt:null}),width:TE({},Zy.marker.line.width,{dflt:1}),editType:"calc"},pattern:hkt,editType:"calc"},ckt("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:Zy.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:ukt({editType:"plot"},{keys:qEe.eventDataKeys.concat(["label","value"])}),hovertext:Zy.hovertext,hoverinfo:TE({},skt.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:lkt({},{keys:qEe.eventDataKeys}),textfont:Zy.textfont,insidetextorientation:Zy.insidetextorientation,insidetextfont:Zy.insidetextfont,outsidetextfont:TE({},Zy.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:Zy.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:fkt({name:"sunburst",trace:!0,editType:"calc"})}});var aW=ye((yfr,BEe)=>{"use strict";BEe.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var HEe=ye((_fr,VEe)=>{"use strict";var NEe=Mr(),dkt=AE(),vkt=Ju().defaults,pkt=r0().handleText,gkt=S2().handleMarkerDefaults,UEe=Mu(),mkt=UEe.hasColorscale,ykt=UEe.handleDefaults;VEe.exports=function(t,r,n,i){function a(h,d){return NEe.coerce(t,r,dkt,h,d)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),gkt(t,r,i,a);var u=r._hasColorscale=mkt(t,"marker","colors")||(t.marker||{}).coloraxis;u&&ykt(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",u?1:.7);var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",NEe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f="auto";pkt(t,r,i,a,f,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("insidetextorientation"),a("sort"),a("rotation"),a("root.color"),vkt(r,i,a),r._length=null}});var jEe=ye((xfr,GEe)=>{"use strict";var _kt=Mr(),xkt=aW();GEe.exports=function(t,r){function n(i,a){return _kt.coerce(t,r,xkt,i,a)}n("sunburstcolorway",r.colorway),n("extendsunburstcolors")}});var SE=ye((vD,WEe)=>{(function(e,t){typeof vD=="object"&&typeof WEe!="undefined"?t(vD):(e=e||self,t(e.d3=e.d3||{}))})(vD,function(e){"use strict";function t(Ve,Xe){return Ve.parent===Xe.parent?1:2}function r(Ve){return Ve.reduce(n,0)/Ve.length}function n(Ve,Xe){return Ve+Xe.x}function i(Ve){return 1+Ve.reduce(a,0)}function a(Ve,Xe){return Math.max(Ve,Xe.y)}function o(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[0];return Ve}function s(Ve){for(var Xe;Xe=Ve.children;)Ve=Xe[Xe.length-1];return Ve}function l(){var Ve=t,Xe=1,ht=1,Le=!1;function xe(Se){var lt,Gt=0;Se.eachAfter(function(jr){var ri=jr.children;ri?(jr.x=r(ri),jr.y=i(ri)):(jr.x=lt?Gt+=Ve(jr,lt):0,jr.y=0,lt=jr)});var Vt=o(Se),ar=s(Se),Qr=Vt.x-Ve(Vt,ar)/2,ai=ar.x+Ve(ar,Vt)/2;return Se.eachAfter(Le?function(jr){jr.x=(jr.x-Se.x)*Xe,jr.y=(Se.y-jr.y)*ht}:function(jr){jr.x=(jr.x-Qr)/(ai-Qr)*Xe,jr.y=(1-(Se.y?jr.y/Se.y:1))*ht})}return xe.separation=function(Se){return arguments.length?(Ve=Se,xe):Ve},xe.size=function(Se){return arguments.length?(Le=!1,Xe=+Se[0],ht=+Se[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(Se){return arguments.length?(Le=!0,Xe=+Se[0],ht=+Se[1],xe):Le?[Xe,ht]:null},xe}function u(Ve){var Xe=0,ht=Ve.children,Le=ht&&ht.length;if(!Le)Xe=1;else for(;--Le>=0;)Xe+=ht[Le].value;Ve.value=Xe}function c(){return this.eachAfter(u)}function f(Ve){var Xe=this,ht,Le=[Xe],xe,Se,lt;do for(ht=Le.reverse(),Le=[];Xe=ht.pop();)if(Ve(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;--xe)ht.push(Le[xe]);return this}function d(Ve){for(var Xe=this,ht=[Xe],Le=[],xe,Se,lt;Xe=ht.pop();)if(Le.push(Xe),xe=Xe.children,xe)for(Se=0,lt=xe.length;Se=0;)ht+=Le[xe].value;Xe.value=ht})}function x(Ve){return this.eachBefore(function(Xe){Xe.children&&Xe.children.sort(Ve)})}function b(Ve){for(var Xe=this,ht=p(Xe,Ve),Le=[Xe];Xe!==ht;)Xe=Xe.parent,Le.push(Xe);for(var xe=Le.length;Ve!==ht;)Le.splice(xe,0,Ve),Ve=Ve.parent;return Le}function p(Ve,Xe){if(Ve===Xe)return Ve;var ht=Ve.ancestors(),Le=Xe.ancestors(),xe=null;for(Ve=ht.pop(),Xe=Le.pop();Ve===Xe;)xe=Ve,Ve=ht.pop(),Xe=Le.pop();return xe}function E(){for(var Ve=this,Xe=[Ve];Ve=Ve.parent;)Xe.push(Ve);return Xe}function k(){var Ve=[];return this.each(function(Xe){Ve.push(Xe)}),Ve}function A(){var Ve=[];return this.eachBefore(function(Xe){Xe.children||Ve.push(Xe)}),Ve}function L(){var Ve=this,Xe=[];return Ve.each(function(ht){ht!==Ve&&Xe.push({source:ht.parent,target:ht})}),Xe}function _(Ve,Xe){var ht=new T(Ve),Le=+Ve.value&&(ht.value=Ve.value),xe,Se=[ht],lt,Gt,Vt,ar;for(Xe==null&&(Xe=M);xe=Se.pop();)if(Le&&(xe.value=+xe.data.value),(Gt=Xe(xe.data))&&(ar=Gt.length))for(xe.children=new Array(ar),Vt=ar-1;Vt>=0;--Vt)Se.push(lt=xe.children[Vt]=new T(Gt[Vt])),lt.parent=xe,lt.depth=xe.depth+1;return ht.eachBefore(P)}function C(){return _(this).eachBefore(g)}function M(Ve){return Ve.children}function g(Ve){Ve.data=Ve.data.data}function P(Ve){var Xe=0;do Ve.height=Xe;while((Ve=Ve.parent)&&Ve.height<++Xe)}function T(Ve){this.data=Ve,this.depth=this.height=0,this.parent=null}T.prototype=_.prototype={constructor:T,count:c,each:f,eachAfter:d,eachBefore:h,sum:v,sort:x,path:b,ancestors:E,descendants:k,leaves:A,links:L,copy:C};var F=Array.prototype.slice;function q(Ve){for(var Xe=Ve.length,ht,Le;Xe;)Le=Math.random()*Xe--|0,ht=Ve[Xe],Ve[Xe]=Ve[Le],Ve[Le]=ht;return Ve}function V(Ve){for(var Xe=0,ht=(Ve=q(F.call(Ve))).length,Le=[],xe,Se;Xe0&&ht*ht>Le*Le+xe*xe}function N(Ve,Xe){for(var ht=0;htVt?(xe=(ar+Vt-Se)/(2*ar),Gt=Math.sqrt(Math.max(0,Vt/ar-xe*xe)),ht.x=Ve.x-xe*Le-Gt*lt,ht.y=Ve.y-xe*lt+Gt*Le):(xe=(ar+Se-Vt)/(2*ar),Gt=Math.sqrt(Math.max(0,Se/ar-xe*xe)),ht.x=Xe.x+xe*Le-Gt*lt,ht.y=Xe.y+xe*lt+Gt*Le)):(ht.x=Xe.x+ht.r,ht.y=Xe.y)}function ke(Ve,Xe){var ht=Ve.r+Xe.r-1e-6,Le=Xe.x-Ve.x,xe=Xe.y-Ve.y;return ht>0&&ht*ht>Le*Le+xe*xe}function ge(Ve){var Xe=Ve._,ht=Ve.next._,Le=Xe.r+ht.r,xe=(Xe.x*ht.r+ht.x*Xe.r)/Le,Se=(Xe.y*ht.r+ht.y*Xe.r)/Le;return xe*xe+Se*Se}function ie(Ve){this._=Ve,this.next=null,this.previous=null}function Te(Ve){if(!(xe=Ve.length))return 0;var Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai;if(Xe=Ve[0],Xe.x=0,Xe.y=0,!(xe>1))return Xe.r;if(ht=Ve[1],Xe.x=-ht.r,ht.x=Xe.r,ht.y=0,!(xe>2))return Xe.r+ht.r;Me(ht,Xe,Le=Ve[2]),Xe=new ie(Xe),ht=new ie(ht),Le=new ie(Le),Xe.next=Le.previous=ht,ht.next=Xe.previous=Le,Le.next=ht.previous=Xe;e:for(Gt=3;Gt0)throw new Error("cycle");return Gt}return ht.id=function(Le){return arguments.length?(Ve=ze(Le),ht):Ve},ht.parentId=function(Le){return arguments.length?(Xe=ze(Le),ht):Xe},ht}function Ke(Ve,Xe){return Ve.parent===Xe.parent?1:2}function xt(Ve){var Xe=Ve.children;return Xe?Xe[0]:Ve.t}function bt(Ve){var Xe=Ve.children;return Xe?Xe[Xe.length-1]:Ve.t}function Lt(Ve,Xe,ht){var Le=ht/(Xe.i-Ve.i);Xe.c-=Le,Xe.s+=ht,Ve.c+=Le,Xe.z+=ht,Xe.m+=ht}function St(Ve){for(var Xe=0,ht=0,Le=Ve.children,xe=Le.length,Se;--xe>=0;)Se=Le[xe],Se.z+=Xe,Se.m+=Xe,Xe+=Se.s+(ht+=Se.c)}function Et(Ve,Xe,ht){return Ve.a.parent===Xe.parent?Ve.a:ht}function dt(Ve,Xe){this._=Ve,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=Xe}dt.prototype=Object.create(T.prototype);function Ht(Ve){for(var Xe=new dt(Ve,0),ht,Le=[Xe],xe,Se,lt,Gt;ht=Le.pop();)if(Se=ht._.children)for(ht.children=new Array(Gt=Se.length),lt=Gt-1;lt>=0;--lt)Le.push(xe=ht.children[lt]=new dt(Se[lt],lt)),xe.parent=ht;return(Xe.parent=new dt(null,0)).children=[Xe],Xe}function $t(){var Ve=Ke,Xe=1,ht=1,Le=null;function xe(ar){var Qr=Ht(ar);if(Qr.eachAfter(Se),Qr.parent.m=-Qr.z,Qr.eachBefore(lt),Le)ar.eachBefore(Vt);else{var ai=ar,jr=ar,ri=ar;ar.eachBefore(function(_n){_n.xjr.x&&(jr=_n),_n.depth>ri.depth&&(ri=_n)});var bi=ai===jr?1:Ve(ai,jr)/2,nn=bi-ai.x,Wi=Xe/(jr.x+bi+nn),Ni=ht/(ri.depth||1);ar.eachBefore(function(_n){_n.x=(_n.x+nn)*Wi,_n.y=_n.depth*Ni})}return ar}function Se(ar){var Qr=ar.children,ai=ar.parent.children,jr=ar.i?ai[ar.i-1]:null;if(Qr){St(ar);var ri=(Qr[0].z+Qr[Qr.length-1].z)/2;jr?(ar.z=jr.z+Ve(ar._,jr._),ar.m=ar.z-ri):ar.z=ri}else jr&&(ar.z=jr.z+Ve(ar._,jr._));ar.parent.A=Gt(ar,jr,ar.parent.A||ai[0])}function lt(ar){ar._.x=ar.z+ar.parent.m,ar.m+=ar.parent.m}function Gt(ar,Qr,ai){if(Qr){for(var jr=ar,ri=ar,bi=Qr,nn=jr.parent.children[0],Wi=jr.m,Ni=ri.m,_n=bi.m,$i=nn.m,zn;bi=bt(bi),jr=xt(jr),bi&&jr;)nn=xt(nn),ri=bt(ri),ri.a=ar,zn=bi.z+_n-jr.z-Wi+Ve(bi._,jr._),zn>0&&(Lt(Et(bi,ar,ai),ar,zn),Wi+=zn,Ni+=zn),_n+=bi.m,Wi+=jr.m,$i+=nn.m,Ni+=ri.m;bi&&!bt(ri)&&(ri.t=bi,ri.m+=_n-Ni),jr&&!xt(nn)&&(nn.t=jr,nn.m+=Wi-$i,ai=ar)}return ai}function Vt(ar){ar.x*=Xe,ar.y=ar.depth*ht}return xe.separation=function(ar){return arguments.length?(Ve=ar,xe):Ve},xe.size=function(ar){return arguments.length?(Le=!1,Xe=+ar[0],ht=+ar[1],xe):Le?null:[Xe,ht]},xe.nodeSize=function(ar){return arguments.length?(Le=!0,Xe=+ar[0],ht=+ar[1],xe):Le?[Xe,ht]:null},xe}function fr(Ve,Xe,ht,Le,xe){for(var Se=Ve.children,lt,Gt=-1,Vt=Se.length,ar=Ve.value&&(xe-ht)/Ve.value;++Gt_n&&(_n=ar),It=Wi*Wi*Wn,$i=Math.max(_n/It,It/Ni),$i>zn){Wi-=ar;break}zn=$i}lt.push(Vt={value:Wi,dice:ri1?Le:1)},ht}(_r);function Nr(){var Ve=Or,Xe=!1,ht=1,Le=1,xe=[0],Se=Ce,lt=Ce,Gt=Ce,Vt=Ce,ar=Ce;function Qr(jr){return jr.x0=jr.y0=0,jr.x1=ht,jr.y1=Le,jr.eachBefore(ai),xe=[0],Xe&&jr.eachBefore(qt),jr}function ai(jr){var ri=xe[jr.depth],bi=jr.x0+ri,nn=jr.y0+ri,Wi=jr.x1-ri,Ni=jr.y1-ri;Wi=jr-1){var _n=Se[ai];_n.x0=bi,_n.y0=nn,_n.x1=Wi,_n.y1=Ni;return}for(var $i=ar[ai],zn=ri/2+$i,Wn=ai+1,It=jr-1;Wn>>1;ar[ft]Ni-nn){var yr=(bi*Zt+Wi*jt)/ri;Qr(ai,Wn,jt,bi,nn,yr,Ni),Qr(Wn,jr,Zt,yr,nn,Wi,Ni)}else{var Fr=(nn*Zt+Ni*jt)/ri;Qr(ai,Wn,jt,bi,nn,Wi,Fr),Qr(Wn,jr,Zt,bi,Fr,Wi,Ni)}}}function Ne(Ve,Xe,ht,Le,xe){(Ve.depth&1?fr:rt)(Ve,Xe,ht,Le,xe)}var Ye=function Ve(Xe){function ht(Le,xe,Se,lt,Gt){if((Vt=Le._squarify)&&Vt.ratio===Xe)for(var Vt,ar,Qr,ai,jr=-1,ri,bi=Vt.length,nn=Le.value;++jr1?Le:1)},ht}(_r);e.cluster=l,e.hierarchy=_,e.pack=ce,e.packEnclose=V,e.packSiblings=Ee,e.partition=ot,e.stratify=er,e.tree=$t,e.treemap=Nr,e.treemapBinary=ut,e.treemapDice=rt,e.treemapResquarify=Ye,e.treemapSlice=fr,e.treemapSliceDice=Ne,e.treemapSquarify=Or,Object.defineProperty(e,"__esModule",{value:!0})})});var EE=ye(ME=>{"use strict";var ZEe=SE(),bkt=uo(),b5=Mr(),wkt=Mu().makeColorScaleFuncFromTrace,Tkt=y5().makePullColorFn,Akt=y5().generateExtendedColors,Skt=Mu().calc,Mkt=es().ALMOST_EQUAL,Ekt={},kkt={},Ckt={};ME.calc=function(e,t){var r=e._fullLayout,n=t.ids,i=b5.isArrayOrTypedArray(n),a=t.labels,o=t.parents,s=t.values,l=b5.isArrayOrTypedArray(s),u=[],c={},f={},h=function(G,N){c[G]?c[G].push(N):c[G]=[N],f[N]=1},d=function(G){return G||typeof G=="number"},v=function(G){return!l||bkt(s[G])&&s[G]>=0},x,b,p;i?(x=Math.min(n.length,o.length),b=function(G){return d(n[G])&&v(G)},p=function(G){return String(n[G])}):(x=Math.min(a.length,o.length),b=function(G){return d(a[G])&&v(G)},p=function(G){return String(a[G])}),l&&(x=Math.min(x,s.length));for(var E=0;E1){for(var M=b5.randstr(),g=0;g{});function Vm(){}function KEe(){return this.rgb().formatHex()}function qkt(){return this.rgb().formatHex8()}function Okt(){return ike(this).formatHsl()}function JEe(){return this.rgb().formatRgb()}function W_(e){var t,r;return e=(e+"").trim().toLowerCase(),(t=Lkt.exec(e))?(r=t[1].length,t=parseInt(t[1],16),r===6?$Ee(t):r===3?new hd(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?gD(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?gD(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Pkt.exec(e))?new hd(t[1],t[2],t[3],1):(t=Ikt.exec(e))?new hd(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Rkt.exec(e))?gD(t[1],t[2],t[3],t[4]):(t=Dkt.exec(e))?gD(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=zkt.exec(e))?tke(t[1],t[2]/100,t[3]/100,1):(t=Fkt.exec(e))?tke(t[1],t[2]/100,t[3]/100,t[4]):YEe.hasOwnProperty(e)?$Ee(YEe[e]):e==="transparent"?new hd(NaN,NaN,NaN,0):null}function $Ee(e){return new hd(e>>16&255,e>>8&255,e&255,1)}function gD(e,t,r,n){return n<=0&&(e=t=r=NaN),new hd(e,t,r,n)}function CE(e){return e instanceof Vm||(e=W_(e)),e?(e=e.rgb(),new hd(e.r,e.g,e.b,e.opacity)):new hd}function T5(e,t,r,n){return arguments.length===1?CE(e):new hd(e,t,r,n==null?1:n)}function hd(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}function QEe(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}`}function Bkt(){return`#${M2(this.r)}${M2(this.g)}${M2(this.b)}${M2((isNaN(this.opacity)?1:this.opacity)*255)}`}function eke(){let e=yD(this.opacity);return`${e===1?"rgb(":"rgba("}${E2(this.r)}, ${E2(this.g)}, ${E2(this.b)}${e===1?")":`, ${e})`}`}function yD(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function E2(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function M2(e){return e=E2(e),(e<16?"0":"")+e.toString(16)}function tke(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new Zg(e,t,r,n)}function ike(e){if(e instanceof Zg)return new Zg(e.h,e.s,e.l,e.opacity);if(e instanceof Vm||(e=W_(e)),!e)return new Zg;if(e instanceof Zg)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,s=a-i,l=(a+i)/2;return s?(t===a?o=(r-n)/s+(r0&&l<1?0:o,new Zg(o,s,l,e.opacity)}function LE(e,t,r,n){return arguments.length===1?ike(e):new Zg(e,t,r,n==null?1:n)}function Zg(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}function rke(e){return e=(e||0)%360,e<0?e+360:e}function mD(e){return Math.max(0,Math.min(1,e||0))}function oW(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}var j_,k2,w5,kE,Um,Lkt,Pkt,Ikt,Rkt,Dkt,zkt,Fkt,YEe,_D=Ll(()=>{pD();j_=.7,k2=1/j_,w5="\\s*([+-]?\\d+)\\s*",kE="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Um="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Lkt=/^#([0-9a-f]{3,8})$/,Pkt=new RegExp(`^rgb\\(${w5},${w5},${w5}\\)$`),Ikt=new RegExp(`^rgb\\(${Um},${Um},${Um}\\)$`),Rkt=new RegExp(`^rgba\\(${w5},${w5},${w5},${kE}\\)$`),Dkt=new RegExp(`^rgba\\(${Um},${Um},${Um},${kE}\\)$`),zkt=new RegExp(`^hsl\\(${kE},${Um},${Um}\\)$`),Fkt=new RegExp(`^hsla\\(${kE},${Um},${Um},${kE}\\)$`),YEe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};Xy(Vm,W_,{copy(e){return Object.assign(new this.constructor,this,e)},displayable(){return this.rgb().displayable()},hex:KEe,formatHex:KEe,formatHex8:qkt,formatHsl:Okt,formatRgb:JEe,toString:JEe});Xy(hd,T5,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new hd(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new hd(E2(this.r),E2(this.g),E2(this.b),yD(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:QEe,formatHex:QEe,formatHex8:Bkt,formatRgb:eke,toString:eke}));Xy(Zg,LE,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new Zg(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new Zg(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new hd(oW(e>=240?e-240:e+120,i,n),oW(e,i,n),oW(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new Zg(rke(this.h),mD(this.s),mD(this.l),yD(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=yD(this.opacity);return`${e===1?"hsl(":"hsla("}${rke(this.h)}, ${mD(this.s)*100}%, ${mD(this.l)*100}%${e===1?")":`, ${e})`}`}}))});var xD,bD,sW=Ll(()=>{xD=Math.PI/180,bD=180/Math.PI});function uke(e){if(e instanceof Hm)return new Hm(e.l,e.a,e.b,e.opacity);if(e instanceof Yy)return cke(e);e instanceof hd||(e=CE(e));var t=fW(e.r),r=fW(e.g),n=fW(e.b),i=lW((.2225045*t+.7168786*r+.0606169*n)/ake),a,o;return t===r&&r===n?a=o=i:(a=lW((.4360747*t+.3850649*r+.1430804*n)/nke),o=lW((.0139322*t+.0971045*r+.7141733*n)/oke)),new Hm(116*i-16,500*(a-i),200*(i-o),e.opacity)}function S5(e,t,r,n){return arguments.length===1?uke(e):new Hm(e,t,r,n==null?1:n)}function Hm(e,t,r,n){this.l=+e,this.a=+t,this.b=+r,this.opacity=+n}function lW(e){return e>Nkt?Math.pow(e,1/3):e/lke+ske}function uW(e){return e>A5?e*e*e:lke*(e-ske)}function cW(e){return 255*(e<=.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055)}function fW(e){return(e/=255)<=.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}function Ukt(e){if(e instanceof Yy)return new Yy(e.h,e.c,e.l,e.opacity);if(e instanceof Hm||(e=uke(e)),e.a===0&&e.b===0)return new Yy(NaN,0{pD();_D();sW();wD=18,nke=.96422,ake=1,oke=.82521,ske=4/29,A5=6/29,lke=3*A5*A5,Nkt=A5*A5*A5;Xy(Hm,S5,G_(Vm,{brighter(e){return new Hm(this.l+wD*(e==null?1:e),this.a,this.b,this.opacity)},darker(e){return new Hm(this.l-wD*(e==null?1:e),this.a,this.b,this.opacity)},rgb(){var e=(this.l+16)/116,t=isNaN(this.a)?e:e+this.a/500,r=isNaN(this.b)?e:e-this.b/200;return t=nke*uW(t),e=ake*uW(e),r=oke*uW(r),new hd(cW(3.1338561*t-1.6168667*e-.4906146*r),cW(-.9787684*t+1.9161415*e+.033454*r),cW(.0719453*t-.2289914*e+1.4052427*r),this.opacity)}}));Xy(Yy,PE,G_(Vm,{brighter(e){return new Yy(this.h,this.c,this.l+wD*(e==null?1:e),this.opacity)},darker(e){return new Yy(this.h,this.c,this.l-wD*(e==null?1:e),this.opacity)},rgb(){return cke(this).rgb()}}))});function Vkt(e){if(e instanceof C2)return new C2(e.h,e.s,e.l,e.opacity);e instanceof hd||(e=CE(e));var t=e.r/255,r=e.g/255,n=e.b/255,i=(vke*n+hke*t-dke*r)/(vke+hke-dke),a=n-i,o=(IE*(r-i)-dW*a)/TD,s=Math.sqrt(o*o+a*a)/(IE*i*(1-i)),l=s?Math.atan2(o,a)*bD-120:NaN;return new C2(l<0?l+360:l,s,i,e.opacity)}function M5(e,t,r,n){return arguments.length===1?Vkt(e):new C2(e,t,r,n==null?1:n)}function C2(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}var pke,hW,dW,TD,IE,hke,dke,vke,gke=Ll(()=>{pD();_D();sW();pke=-.14861,hW=1.78277,dW=-.29227,TD=-.90649,IE=1.97294,hke=IE*TD,dke=IE*hW,vke=hW*dW-TD*pke;Xy(C2,M5,G_(Vm,{brighter(e){return e=e==null?k2:Math.pow(k2,e),new C2(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?j_:Math.pow(j_,e),new C2(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=isNaN(this.h)?0:(this.h+120)*xD,t=+this.l,r=isNaN(this.s)?0:this.s*t*(1-t),n=Math.cos(e),i=Math.sin(e);return new hd(255*(t+r*(pke*n+hW*i)),255*(t+r*(dW*n+TD*i)),255*(t+r*(IE*n)),this.opacity)}}))});var L2=Ll(()=>{_D();fke();gke()});function vW(e,t,r,n,i){var a=e*e,o=a*e;return((1-3*e+3*a-o)*t+(4-6*a+3*o)*r+(1+3*e+3*a-3*o)*n+o*i)/6}function AD(e){var t=e.length-1;return function(r){var n=r<=0?r=0:r>=1?(r=1,t-1):Math.floor(r*t),i=e[n],a=e[n+1],o=n>0?e[n-1]:2*i-a,s=n{});function MD(e){var t=e.length;return function(r){var n=Math.floor(((r%=1)<0?++r:r)*t),i=e[(n+t-1)%t],a=e[n%t],o=e[(n+1)%t],s=e[(n+2)%t];return vW((r-n/t)*t,i,a,o,s)}}var pW=Ll(()=>{SD()});var E5,gW=Ll(()=>{E5=e=>()=>e});function mke(e,t){return function(r){return e+r*t}}function Hkt(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function Z_(e,t){var r=t-e;return r?mke(e,r>180||r<-180?r-360*Math.round(r/360):r):E5(isNaN(e)?t:e)}function yke(e){return(e=+e)==1?qf:function(t,r){return r-t?Hkt(t,r,e):E5(isNaN(t)?r:t)}}function qf(e,t){var r=t-e;return r?mke(e,r):E5(isNaN(e)?t:e)}var P2=Ll(()=>{gW()});function _ke(e){return function(t){var r=t.length,n=new Array(r),i=new Array(r),a=new Array(r),o,s;for(o=0;o{L2();SD();pW();P2();RE=function e(t){var r=yke(t);function n(i,a){var o=r((i=T5(i)).r,(a=T5(a)).r),s=r(i.g,a.g),l=r(i.b,a.b),u=qf(i.opacity,a.opacity);return function(c){return i.r=o(c),i.g=s(c),i.b=l(c),i.opacity=u(c),i+""}}return n.gamma=e,n}(1);xke=_ke(AD),bke=_ke(MD)});function k5(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;i{});function wke(e,t){return(ED(t)?k5:yW)(e,t)}function yW(e,t){var r=t?t.length:0,n=e?Math.min(r,e.length):0,i=new Array(n),a=new Array(r),o;for(o=0;o{DE();kD()});function CD(e,t){var r=new Date;return e=+e,t=+t,function(n){return r.setTime(e*(1-n)+t*n),r}}var xW=Ll(()=>{});function Fp(e,t){return e=+e,t=+t,function(r){return e*(1-r)+t*r}}var zE=Ll(()=>{});function LD(e,t){var r={},n={},i;(e===null||typeof e!="object")&&(e={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in e?r[i]=X_(e[i],t[i]):n[i]=t[i];return function(a){for(i in r)n[i]=r[i](a);return n}}var bW=Ll(()=>{DE()});function Gkt(e){return function(){return e}}function jkt(e){return function(t){return e(t)+""}}function PD(e,t){var r=TW.lastIndex=wW.lastIndex=0,n,i,a,o=-1,s=[],l=[];for(e=e+"",t=t+"";(n=TW.exec(e))&&(i=wW.exec(t));)(a=i.index)>r&&(a=t.slice(r,a),s[o]?s[o]+=a:s[++o]=a),(n=n[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:Fp(n,i)})),r=wW.lastIndex;return r{zE();TW=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,wW=new RegExp(TW.source,"g")});function X_(e,t){var r=typeof t,n;return t==null||r==="boolean"?E5(t):(r==="number"?Fp:r==="string"?(n=W_(t))?(t=n,RE):PD:t instanceof W_?RE:t instanceof Date?CD:ED(t)?k5:Array.isArray(t)?yW:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?LD:Fp)(e,t)}var DE=Ll(()=>{L2();mW();_W();xW();zE();bW();AW();gW();kD()});function Tke(e){var t=e.length;return function(r){return e[Math.max(0,Math.min(t-1,Math.floor(r*t)))]}}var Ake=Ll(()=>{});function Ske(e,t){var r=Z_(+e,+t);return function(n){var i=r(n);return i-360*Math.floor(i/360)}}var Mke=Ll(()=>{P2()});function Eke(e,t){return e=+e,t=+t,function(r){return Math.round(e*(1-r)+t*r)}}var kke=Ll(()=>{});function SW(e,t,r,n,i,a){var o,s,l;return(o=Math.sqrt(e*e+t*t))&&(e/=o,t/=o),(l=e*r+t*n)&&(r-=e*l,n-=t*l),(s=Math.sqrt(r*r+n*n))&&(r/=s,n/=s,l/=s),e*n{Cke=180/Math.PI,ID={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1}});function Pke(e){let t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(e+"");return t.isIdentity?ID:SW(t.a,t.b,t.c,t.d,t.e,t.f)}function Ike(e){return e==null?ID:(RD||(RD=document.createElementNS("http://www.w3.org/2000/svg","g")),RD.setAttribute("transform",e),(e=RD.transform.baseVal.consolidate())?(e=e.matrix,SW(e.a,e.b,e.c,e.d,e.e,e.f)):ID)}var RD,Rke=Ll(()=>{Lke()});function Dke(e,t,r,n){function i(u){return u.length?u.pop()+" ":""}function a(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push("translate(",null,t,null,r);v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f||h)&&d.push("translate("+f+t+h+r)}function o(u,c,f,h){u!==c?(u-c>180?c+=360:c-u>180&&(u+=360),h.push({i:f.push(i(f)+"rotate(",null,n)-2,x:Fp(u,c)})):c&&f.push(i(f)+"rotate("+c+n)}function s(u,c,f,h){u!==c?h.push({i:f.push(i(f)+"skewX(",null,n)-2,x:Fp(u,c)}):c&&f.push(i(f)+"skewX("+c+n)}function l(u,c,f,h,d,v){if(u!==f||c!==h){var x=d.push(i(d)+"scale(",null,",",null,")");v.push({i:x-4,x:Fp(u,f)},{i:x-2,x:Fp(c,h)})}else(f!==1||h!==1)&&d.push(i(d)+"scale("+f+","+h+")")}return function(u,c){var f=[],h=[];return u=e(u),c=e(c),a(u.translateX,u.translateY,c.translateX,c.translateY,f,h),o(u.rotate,c.rotate,f,h),s(u.skewX,c.skewX,f,h),l(u.scaleX,u.scaleY,c.scaleX,c.scaleY,f,h),u=c=null,function(d){for(var v=-1,x=h.length,b;++v{zE();Rke();zke=Dke(Pke,"px, ","px)","deg)"),Fke=Dke(Ike,", ",")",")")});function Oke(e){return((e=Math.exp(e))+1/e)/2}function Zkt(e){return((e=Math.exp(e))-1/e)/2}function Xkt(e){return((e=Math.exp(2*e))-1)/(e+1)}var Wkt,Bke,Nke=Ll(()=>{Wkt=1e-12;Bke=function e(t,r,n){function i(a,o){var s=a[0],l=a[1],u=a[2],c=o[0],f=o[1],h=o[2],d=c-s,v=f-l,x=d*d+v*v,b,p;if(x{L2();P2();Vke=Uke(Z_),Hke=Uke(qf)});function MW(e,t){var r=qf((e=S5(e)).l,(t=S5(t)).l),n=qf(e.a,t.a),i=qf(e.b,t.b),a=qf(e.opacity,t.opacity);return function(o){return e.l=r(o),e.a=n(o),e.b=i(o),e.opacity=a(o),e+""}}var jke=Ll(()=>{L2();P2()});function Wke(e){return function(t,r){var n=e((t=PE(t)).h,(r=PE(r)).h),i=qf(t.c,r.c),a=qf(t.l,r.l),o=qf(t.opacity,r.opacity);return function(s){return t.h=n(s),t.c=i(s),t.l=a(s),t.opacity=o(s),t+""}}}var Zke,Xke,Yke=Ll(()=>{L2();P2();Zke=Wke(Z_),Xke=Wke(qf)});function Kke(e){return function t(r){r=+r;function n(i,a){var o=e((i=M5(i)).h,(a=M5(a)).h),s=qf(i.s,a.s),l=qf(i.l,a.l),u=qf(i.opacity,a.opacity);return function(c){return i.h=o(c),i.s=s(c),i.l=l(Math.pow(c,r)),i.opacity=u(c),i+""}}return n.gamma=t,n}(1)}var Jke,$ke,Qke=Ll(()=>{L2();P2();Jke=Kke(Z_),$ke=Kke(qf)});function EW(e,t){t===void 0&&(t=e,e=X_);for(var r=0,n=t.length-1,i=t[0],a=new Array(n<0?0:n);r{DE()});function tCe(e,t){for(var r=new Array(t),n=0;n{});var I2={};QQ(I2,{interpolate:()=>X_,interpolateArray:()=>wke,interpolateBasis:()=>AD,interpolateBasisClosed:()=>MD,interpolateCubehelix:()=>Jke,interpolateCubehelixLong:()=>$ke,interpolateDate:()=>CD,interpolateDiscrete:()=>Tke,interpolateHcl:()=>Zke,interpolateHclLong:()=>Xke,interpolateHsl:()=>Vke,interpolateHslLong:()=>Hke,interpolateHue:()=>Ske,interpolateLab:()=>MW,interpolateNumber:()=>Fp,interpolateNumberArray:()=>k5,interpolateObject:()=>LD,interpolateRgb:()=>RE,interpolateRgbBasis:()=>xke,interpolateRgbBasisClosed:()=>bke,interpolateRound:()=>Eke,interpolateString:()=>PD,interpolateTransformCss:()=>zke,interpolateTransformSvg:()=>Fke,interpolateZoom:()=>Bke,piecewise:()=>EW,quantize:()=>tCe});var R2=Ll(()=>{DE();_W();SD();pW();xW();Ake();Mke();zE();kD();bW();kke();AW();qke();Nke();mW();Gke();jke();Yke();Qke();eCe();rCe()});var DD=ye((cdr,iCe)=>{"use strict";var Ykt=ao(),Kkt=va();iCe.exports=function(t,r,n,i,a){var o=r.data.data,s=o.i,l=a||o.color;if(s>=0){r.i=o.i;var u=n.marker;u.pattern?(!u.colors||!u.pattern.shape)&&(u.color=l,r.color=l):(u.color=l,r.color=l),Ykt.pointStyle(t,n,i,r)}else Kkt.fill(t,l)}});var kW=ye((fdr,lCe)=>{"use strict";var nCe=xa(),aCe=va(),oCe=Mr(),Jkt=_v().resizeText,$kt=DD();function Qkt(e){var t=e._fullLayout._sunburstlayer.selectAll(".trace");Jkt(e,t,"sunburst"),t.each(function(r){var n=nCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){nCe.select(this).call(sCe,o,a,e)})})}function sCe(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=oCe.castOption(r,o,"marker.line.color")||aCe.defaultLine,l=oCe.castOption(r,o,"marker.line.width")||0;e.call($kt,t,r,n).style("stroke-width",l).call(aCe.stroke,s).style("opacity",a?r.leaf.opacity:null)}lCe.exports={style:Qkt,styleOne:sCe}});var Ky=ye(bs=>{"use strict";var D2=Mr(),eCt=va(),tCt=Tg(),uCe=u_();bs.findEntryWithLevel=function(e,t){var r;return t&&e.eachAfter(function(n){if(bs.getPtId(n)===t)return r=n.copy()}),r||e};bs.findEntryWithChild=function(e,t){var r;return e.eachAfter(function(n){for(var i=n.children||[],a=0;a0)};bs.getMaxDepth=function(e){return e.maxdepth>=0?e.maxdepth:1/0};bs.isHeader=function(e,t){return!(bs.isLeaf(e)||e.depth===t._maxDepth-1)};function cCe(e){return e.data.data.pid}bs.getParent=function(e,t){return bs.findEntryWithLevel(e,cCe(t))};bs.listPath=function(e,t){var r=e.parent;if(!r)return[];var n=t?[r.data[t]]:[r];return bs.listPath(r,t).concat(n)};bs.getPath=function(e){return bs.listPath(e,"label").join("/")+"/"};bs.formatValue=uCe.formatPieValue;bs.formatPercent=function(e,t){var r=D2.formatPercent(e,0);return r==="0%"&&(r=uCe.formatPiePercent(e,t)),r}});var OE=ye((ddr,dCe)=>{"use strict";var C5=xa(),fCe=ba(),nCt=rp().appendArrayPointValue,FE=Nc(),hCe=Mr(),aCt=g3(),Wh=Ky(),oCt=u_(),sCt=oCt.formatPieValue;dCe.exports=function(t,r,n,i,a){var o=i[0],s=o.trace,l=o.hierarchy,u=s.type==="sunburst",c=s.type==="treemap"||s.type==="icicle";"_hasHoverLabel"in s||(s._hasHoverLabel=!1),"_hasHoverEvent"in s||(s._hasHoverEvent=!1);var f=function(v){var x=n._fullLayout;if(!(n._dragging||x.hovermode===!1)){var b=n._fullData[s.index],p=v.data.data,E=p.i,k=Wh.isHierarchyRoot(v),A=Wh.getParent(l,v),L=Wh.getValue(v),_=function(Me){return hCe.castOption(b,E,Me)},C=_("hovertemplate"),M=FE.castHoverinfo(b,x,E),g=x.separators,P;if(C||M&&M!=="none"&&M!=="skip"){var T,F;u&&(T=o.cx+v.pxmid[0]*(1-v.rInscribed),F=o.cy+v.pxmid[1]*(1-v.rInscribed)),c&&(T=v._hoverX,F=v._hoverY);var q={},V=[],H=[],X=function(Me){return V.indexOf(Me)!==-1};M&&(V=M==="all"?b._module.attributes.hoverinfo.flags:M.split("+")),q.label=p.label,X("label")&&q.label&&H.push(q.label),p.hasOwnProperty("v")&&(q.value=p.v,q.valueLabel=sCt(q.value,g),X("value")&&H.push(q.valueLabel)),q.currentPath=v.currentPath=Wh.getPath(v.data),X("current path")&&!k&&H.push(q.currentPath);var G,N=[],W=function(){N.indexOf(G)===-1&&(H.push(G),N.push(G))};q.percentParent=v.percentParent=L/Wh.getValue(A),q.parent=v.parentString=Wh.getPtLabel(A),X("percent parent")&&(G=Wh.formatPercent(q.percentParent,g)+" of "+q.parent,W()),q.percentEntry=v.percentEntry=L/Wh.getValue(r),q.entry=v.entry=Wh.getPtLabel(r),X("percent entry")&&!k&&!v.onPathbar&&(G=Wh.formatPercent(q.percentEntry,g)+" of "+q.entry,W()),q.percentRoot=v.percentRoot=L/Wh.getValue(l),q.root=v.root=Wh.getPtLabel(l),X("percent root")&&!k&&(G=Wh.formatPercent(q.percentRoot,g)+" of "+q.root,W()),q.text=_("hovertext")||_("text"),X("text")&&(G=q.text,hCe.isValidTextValue(G)&&H.push(G)),P=[qE(v,b,a.eventDataKeys)];var re={trace:b,y:F,_x0:v._x0,_x1:v._x1,_y0:v._y0,_y1:v._y1,text:H.join("
"),name:C||X("name")?b.name:void 0,color:_("hoverlabel.bgcolor")||p.color,borderColor:_("hoverlabel.bordercolor"),fontFamily:_("hoverlabel.font.family"),fontSize:_("hoverlabel.font.size"),fontColor:_("hoverlabel.font.color"),fontWeight:_("hoverlabel.font.weight"),fontStyle:_("hoverlabel.font.style"),fontVariant:_("hoverlabel.font.variant"),nameLength:_("hoverlabel.namelength"),textAlign:_("hoverlabel.align"),hovertemplate:C,hovertemplateLabels:q,eventData:P};u&&(re.x0=T-v.rInscribed*v.rpx1,re.x1=T+v.rInscribed*v.rpx1,re.idealAlign=v.pxmid[0]<0?"left":"right"),c&&(re.x=T,re.idealAlign=T<0?"left":"right");var ae=[];FE.loneHover(re,{container:x._hoverlayer.node(),outerContainer:x._paper.node(),gd:n,inOut_bbox:ae}),P[0].bbox=ae[0],s._hasHoverLabel=!0}if(c){var _e=t.select("path.surface");a.styleOne(_e,v,b,n,{hovered:!0})}s._hasHoverEvent=!0,n.emit("plotly_hover",{points:P||[qE(v,b,a.eventDataKeys)],event:C5.event})}},h=function(v){var x=n._fullLayout,b=n._fullData[s.index],p=C5.select(this).datum();if(s._hasHoverEvent&&(v.originalEvent=C5.event,n.emit("plotly_unhover",{points:[qE(p,b,a.eventDataKeys)],event:C5.event}),s._hasHoverEvent=!1),s._hasHoverLabel&&(FE.loneUnhover(x._hoverlayer.node()),s._hasHoverLabel=!1),c){var E=t.select("path.surface");a.styleOne(E,p,b,n,{hovered:!1})}},d=function(v){var x=n._fullLayout,b=n._fullData[s.index],p=u&&(Wh.isHierarchyRoot(v)||Wh.isLeaf(v)),E=Wh.getPtId(v),k=Wh.isEntry(v)?Wh.findEntryWithChild(l,E):Wh.findEntryWithLevel(l,E),A=Wh.getPtId(k),L={points:[qE(v,b,a.eventDataKeys)],event:C5.event};p||(L.nextLevel=A);var _=aCt.triggerHandler(n,"plotly_"+s.type+"click",L);if(_!==!1&&x.hovermode&&(n._hoverdata=[qE(v,b,a.eventDataKeys)],FE.click(n,C5.event)),!p&&_!==!1&&!n._dragging&&!n._transitioning){fCe.call("_storeDirectGUIEdit",b,x._tracePreGUI[b.uid],{level:b.level});var C={data:[{level:A}],traces:[s.index]},M={frame:{redraw:!1,duration:a.transitionTime},transition:{duration:a.transitionTime,easing:a.transitionEasing},mode:"immediate",fromcurrent:!0};FE.loneUnhover(x._hoverlayer.node()),fCe.call("animate",n,C,M)}};t.on("mouseover",f),t.on("mouseout",h),t.on("click",d)};function qE(e,t,r){for(var n=e.data.data,i={curveNumber:t.index,pointNumber:n.i,data:t._input,fullData:t},a=0;a{"use strict";var BE=xa(),lCt=SE(),Xg=(R2(),B1(I2)).interpolate,vCe=ao(),bv=Mr(),uCt=Pl(),yCe=_v(),pCe=yCe.recordMinTextSize,cCt=yCe.clearMinTextSize,_Ce=dD(),fCt=u_().getRotationAngle,hCt=_Ce.computeTransform,dCt=_Ce.transformInsideText,vCt=kW().styleOne,pCt=N0().resizeText,gCt=OE(),CW=nW(),sl=Ky();zD.plot=function(e,t,r,n){var i=e._fullLayout,a=i._sunburstlayer,o,s,l=!r,u=!i.uniformtext.mode&&sl.hasTransition(r);if(cCt("sunburst",i),o=a.selectAll("g.trace.sunburst").data(t,function(f){return f[0].trace.uid}),o.enter().append("g").classed("trace",!0).classed("sunburst",!0).attr("stroke-linejoin","round"),o.order(),u){n&&(s=n());var c=BE.transition().duration(r.duration).ease(r.easing).each("end",function(){s&&s()}).each("interrupt",function(){s&&s()});c.each(function(){a.selectAll("g.trace").each(function(f){gCe(e,f,this,r)})})}else o.each(function(f){gCe(e,f,this,r)}),i.uniformtext.mode&&pCt(e,i._sunburstlayer.selectAll(".trace"),"sunburst");l&&o.exit().remove()};function gCe(e,t,r,n){var i=e._context.staticPlot,a=e._fullLayout,o=!a.uniformtext.mode&&sl.hasTransition(n),s=BE.select(r),l=s.selectAll("g.slice"),u=t[0],c=u.trace,f=u.hierarchy,h=sl.findEntryWithLevel(f,c.level),d=sl.getMaxDepth(c),v=a._size,x=c.domain,b=v.w*(x.x[1]-x.x[0]),p=v.h*(x.y[1]-x.y[0]),E=.5*Math.min(b,p),k=u.cx=v.l+v.w*(x.x[1]+x.x[0])/2,A=u.cy=v.t+v.h*(1-x.y[0])-p/2;if(!h)return l.remove();var L=null,_={};o&&l.each(function(ge){_[sl.getPtId(ge)]={rpx0:ge.rpx0,rpx1:ge.rpx1,x0:ge.x0,x1:ge.x1,transform:ge.transform},!L&&sl.isEntry(ge)&&(L=ge)});var C=mCt(h).descendants(),M=h.height+1,g=0,P=d;u.hasMultipleRoots&&sl.isHierarchyRoot(h)&&(C=C.slice(1),M-=1,g=1,P+=1),C=C.filter(function(ge){return ge.y1<=P});var T=fCt(c.rotation);T&&C.forEach(function(ge){ge.x0+=T,ge.x1+=T});var F=Math.min(M,d),q=function(ge){return(ge-g)/F*E},V=function(ge,ie){return[ge*Math.cos(ie),-ge*Math.sin(ie)]},H=function(ge){return bv.pathAnnulus(ge.rpx0,ge.rpx1,ge.x0,ge.x1,k,A)},X=function(ge){return k+mCe(ge)[0]*(ge.transform.rCenter||0)+(ge.transform.x||0)},G=function(ge){return A+mCe(ge)[1]*(ge.transform.rCenter||0)+(ge.transform.y||0)};l=l.data(C,sl.getPtId),l.enter().append("g").classed("slice",!0),o?l.exit().transition().each(function(){var ge=BE.select(this),ie=ge.select("path.surface");ie.transition().attrTween("d",function(Ee){var Ae=ae(Ee);return function(ze){return H(Ae(ze))}});var Te=ge.select("g.slicetext");Te.attr("opacity",0)}).remove():l.exit().remove(),l.order();var N=null;if(o&&L){var W=sl.getPtId(L);l.each(function(ge){N===null&&sl.getPtId(ge)===W&&(N=ge.x1)})}var re=l;o&&(re=re.transition().each("end",function(){var ge=BE.select(this);sl.setSliceCursor(ge,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:!1})})),re.each(function(ge){var ie=BE.select(this),Te=bv.ensureSingle(ie,"path","surface",function(Re){Re.style("pointer-events",i?"none":"all")});ge.rpx0=q(ge.y0),ge.rpx1=q(ge.y1),ge.xmid=(ge.x0+ge.x1)/2,ge.pxmid=V(ge.rpx1,ge.xmid),ge.midangle=-(ge.xmid-Math.PI/2),ge.startangle=-(ge.x0-Math.PI/2),ge.stopangle=-(ge.x1-Math.PI/2),ge.halfangle=.5*Math.min(bv.angleDelta(ge.x0,ge.x1)||Math.PI,Math.PI),ge.ring=1-ge.rpx0/ge.rpx1,ge.rInscribed=yCt(ge,c),o?Te.transition().attrTween("d",function(Re){var ce=_e(Re);return function(Ge){return H(ce(Ge))}}):Te.attr("d",H),ie.call(gCt,h,e,t,{eventDataKeys:CW.eventDataKeys,transitionTime:CW.CLICK_TRANSITION_TIME,transitionEasing:CW.CLICK_TRANSITION_EASING}).call(sl.setSliceCursor,e,{hideOnRoot:!0,hideOnLeaves:!0,isTransitioning:e._transitioning}),Te.call(vCt,ge,c,e);var Ee=bv.ensureSingle(ie,"g","slicetext"),Ae=bv.ensureSingle(Ee,"text","",function(Re){Re.attr("data-notex",1)}),ze=bv.ensureUniformFontSize(e,sl.determineTextFont(c,ge,a.font));Ae.text(zD.formatSliceLabel(ge,h,c,t,a)).classed("slicetext",!0).attr("text-anchor","middle").call(vCe.font,ze).call(uCt.convertToTspans,e);var Ce=vCe.bBox(Ae.node());ge.transform=dCt(Ce,ge,u),ge.transform.targetX=X(ge),ge.transform.targetY=G(ge);var me=function(Re,ce){var Ge=Re.transform;return hCt(Ge,ce),Ge.fontSize=ze.size,pCe(c.type,Ge,a),bv.getTextTransform(Ge)};o?Ae.transition().attrTween("transform",function(Re){var ce=Me(Re);return function(Ge){return me(ce(Ge),Ce)}}):Ae.attr("transform",me(ge,Ce))});function ae(ge){var ie=sl.getPtId(ge),Te=_[ie],Ee=_[sl.getPtId(h)],Ae;if(Ee){var ze=(ge.x1>Ee.x1?2*Math.PI:0)+T;Ae=ge.rpx1N?2*Math.PI:0)+T;Te={x0:Ae,x1:Ae}}else Te={rpx0:E,rpx1:E},bv.extendFlat(Te,ke(ge));else Te={rpx0:0,rpx1:0};else Te={x0:T,x1:T};return Xg(Te,Ee)}function Me(ge){var ie=_[sl.getPtId(ge)],Te,Ee=ge.transform;if(ie)Te=ie;else if(Te={rpx1:ge.rpx1,transform:{textPosAngle:Ee.textPosAngle,scale:0,rotate:Ee.rotate,rCenter:Ee.rCenter,x:Ee.x,y:Ee.y}},L)if(ge.parent)if(N){var Ae=ge.x1>N?2*Math.PI:0;Te.x0=Te.x1=Ae}else bv.extendFlat(Te,ke(ge));else Te.x0=Te.x1=T;else Te.x0=Te.x1=T;var ze=Xg(Te.transform.textPosAngle,ge.transform.textPosAngle),Ce=Xg(Te.rpx1,ge.rpx1),me=Xg(Te.x0,ge.x0),Re=Xg(Te.x1,ge.x1),ce=Xg(Te.transform.scale,Ee.scale),Ge=Xg(Te.transform.rotate,Ee.rotate),nt=Ee.rCenter===0?3:Te.transform.rCenter===0?1/3:1,ct=Xg(Te.transform.rCenter,Ee.rCenter),qt=function(rt){return ct(Math.pow(rt,nt))};return function(rt){var ot=Ce(rt),Rt=me(rt),kt=Re(rt),Ct=qt(rt),Yt=V(ot,(Rt+kt)/2),xr=ze(rt),er={pxmid:Yt,rpx1:ot,transform:{textPosAngle:xr,rCenter:Ct,x:Ee.x,y:Ee.y}};return pCe(c.type,Ee,a),{transform:{targetX:X(er),targetY:G(er),scale:ce(rt),rotate:Ge(rt),rCenter:Ct}}}}function ke(ge){var ie=ge.parent,Te=_[sl.getPtId(ie)],Ee={};if(Te){var Ae=ie.children,ze=Ae.indexOf(ge),Ce=Ae.length,me=Xg(Te.x0,Te.x1);Ee.x0=me(ze/Ce),Ee.x1=me(ze/Ce)}else Ee.x0=Ee.x1=0;return Ee}}function mCt(e){return lCt.partition().size([2*Math.PI,e.height+1])(e)}zD.formatSliceLabel=function(e,t,r,n,i){var a=r.texttemplate,o=r.textinfo;if(!a&&(!o||o==="none"))return"";var s=i.separators,l=n[0],u=e.data.data,c=l.hierarchy,f=sl.isHierarchyRoot(e),h=sl.getParent(c,e),d=sl.getValue(e);if(!a){var v=o.split("+"),x=function(g){return v.indexOf(g)!==-1},b=[],p;if(x("label")&&u.label&&b.push(u.label),u.hasOwnProperty("v")&&x("value")&&b.push(sl.formatValue(u.v,s)),!f){x("current path")&&b.push(sl.getPath(e.data));var E=0;x("percent parent")&&E++,x("percent entry")&&E++,x("percent root")&&E++;var k=E>1;if(E){var A,L=function(g){p=sl.formatPercent(A,s),k&&(p+=" of "+g),b.push(p)};x("percent parent")&&!f&&(A=d/sl.getValue(h),L("parent")),x("percent entry")&&(A=d/sl.getValue(t),L("entry")),x("percent root")&&(A=d/sl.getValue(c),L("root"))}}return x("text")&&(p=bv.castOption(r,u.i,"text"),bv.isValidTextValue(p)&&b.push(p)),b.join("
")}var _=bv.castOption(r,u.i,"texttemplate");if(!_)return"";var C={};u.label&&(C.label=u.label),u.hasOwnProperty("v")&&(C.value=u.v,C.valueLabel=sl.formatValue(u.v,s)),C.currentPath=sl.getPath(e.data),f||(C.percentParent=d/sl.getValue(h),C.percentParentLabel=sl.formatPercent(C.percentParent,s),C.parent=sl.getPtLabel(h)),C.percentEntry=d/sl.getValue(t),C.percentEntryLabel=sl.formatPercent(C.percentEntry,s),C.entry=sl.getPtLabel(t),C.percentRoot=d/sl.getValue(c),C.percentRootLabel=sl.formatPercent(C.percentRoot,s),C.root=sl.getPtLabel(c),u.hasOwnProperty("color")&&(C.color=u.color);var M=bv.castOption(r,u.i,"text");return(bv.isValidTextValue(M)||M==="")&&(C.text=M),C.customdata=bv.castOption(r,u.i,"customdata"),bv.texttemplateString(_,C,i._d3locale,C,r._meta||{})};function yCt(e){return e.rpx0===0&&bv.isFullCircle([e.x0,e.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(e.halfangle)),e.ring/2))}function mCe(e){return _Ct(e.rpx1,e.transform.textPosAngle)}function _Ct(e,t){return[e*Math.sin(t),-e*Math.cos(t)]}});var bCe=ye((pdr,xCe)=>{"use strict";xCe.exports={moduleType:"trace",name:"sunburst",basePlotModule:zEe(),categories:[],animatable:!0,attributes:AE(),layoutAttributes:aW(),supplyDefaults:HEe(),supplyLayoutDefaults:jEe(),calc:EE().calc,crossTraceCalc:EE().crossTraceCalc,plot:FD().plot,style:kW().style,colorbar:Kd(),meta:{}}});var TCe=ye((gdr,wCe)=>{"use strict";wCe.exports=bCe()});var SCe=ye(L5=>{"use strict";var ACe=Xu();L5.name="treemap";L5.plot=function(e,t,r,n){ACe.plotBasePlot(L5.name,e,t,r,n)};L5.clean=function(e,t,r,n){ACe.cleanBasePlot(L5.name,e,t,r,n)}});var z2=ye((ydr,MCe)=>{"use strict";MCe.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}});var qD=ye((_dr,kCe)=>{"use strict";var xCt=Wo().hovertemplateAttrs,bCt=Wo().texttemplateAttrs,wCt=Jl(),TCt=Ju().attributes,F2=A2(),Q0=AE(),ECe=z2(),LW=no().extendFlat,ACt=Ed().pattern;kCe.exports={labels:Q0.labels,parents:Q0.parents,values:Q0.values,branchvalues:Q0.branchvalues,count:Q0.count,level:Q0.level,maxdepth:Q0.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:LW({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:Q0.marker.colors,pattern:ACt,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:Q0.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},wCt("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:LW({},F2.textfont,{}),editType:"calc"},text:F2.text,textinfo:Q0.textinfo,texttemplate:bCt({editType:"plot"},{keys:ECe.eventDataKeys.concat(["label","value"])}),hovertext:F2.hovertext,hoverinfo:Q0.hoverinfo,hovertemplate:xCt({},{keys:ECe.eventDataKeys}),textfont:F2.textfont,insidetextfont:F2.insidetextfont,outsidetextfont:LW({},F2.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:F2.sort,root:Q0.root,domain:TCt({name:"treemap",trace:!0,editType:"calc"})}});var PW=ye((xdr,CCe)=>{"use strict";CCe.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var RCe=ye((bdr,ICe)=>{"use strict";var LCe=Mr(),SCt=qD(),MCt=va(),ECt=Ju().defaults,kCt=r0().handleText,CCt=Qb().TEXTPAD,LCt=S2().handleMarkerDefaults,PCe=Mu(),PCt=PCe.hasColorscale,ICt=PCe.handleDefaults;ICe.exports=function(t,r,n,i){function a(b,p){return LCe.coerce(t,r,SCt,b,p)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth");var u=a("tiling.packing");u==="squarify"&&a("tiling.squarifyratio"),a("tiling.flip"),a("tiling.pad");var c=a("text");a("texttemplate"),r.texttemplate||a("textinfo",LCe.isArrayOrTypedArray(c)?"text+label":"label"),a("hovertext"),a("hovertemplate");var f=a("pathbar.visible"),h="auto";kCt(t,r,i,a,h,{hasPathbar:f,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition");var d=r.textposition.indexOf("bottom")!==-1;LCt(t,r,i,a);var v=r._hasColorscale=PCt(t,"marker","colors")||(t.marker||{}).coloraxis;v?ICt(t,r,i,a,{prefix:"marker.",cLetter:"c"}):a("marker.depthfade",!(r.marker.colors||[]).length);var x=r.textfont.size*2;a("marker.pad.t",d?x/4:x),a("marker.pad.l",x/4),a("marker.pad.r",x/4),a("marker.pad.b",d?x:x/4),a("marker.cornerradius"),r._hovered={marker:{line:{width:2,color:MCt.contrast(i.paper_bgcolor)}}},f&&(a("pathbar.thickness",r.pathbar.textfont.size+2*CCt),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),ECt(r,i,a),r._length=null}});var zCe=ye((wdr,DCe)=>{"use strict";var RCt=Mr(),DCt=PW();DCe.exports=function(t,r){function n(i,a){return RCt.coerce(t,r,DCt,i,a)}n("treemapcolorway",r.colorway),n("extendtreemapcolors")}});var RW=ye(IW=>{"use strict";var FCe=EE();IW.calc=function(e,t){return FCe.calc(e,t)};IW.crossTraceCalc=function(e){return FCe._runCrossTraceCalc("treemap",e)}});var DW=ye((Adr,qCe)=>{"use strict";qCe.exports=function e(t,r,n){var i;n.swapXY&&(i=t.x0,t.x0=t.y0,t.y0=i,i=t.x1,t.x1=t.y1,t.y1=i),n.flipX&&(i=t.x0,t.x0=r[0]-t.x1,t.x1=r[0]-i),n.flipY&&(i=t.y0,t.y0=r[1]-t.y1,t.y1=r[1]-i);var a=t.children;if(a)for(var o=0;o{"use strict";var P5=SE(),zCt=DW();OCe.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.packing==="dice-slice",s=n.pad[a?"bottom":"top"],l=n.pad[i?"right":"left"],u=n.pad[i?"left":"right"],c=n.pad[a?"top":"bottom"],f;o&&(f=l,l=s,s=f,f=u,u=c,c=f);var h=P5.treemap().tile(FCt(n.packing,n.squarifyratio)).paddingInner(n.pad.inner).paddingLeft(l).paddingRight(u).paddingTop(s).paddingBottom(c).size(o?[r[1],r[0]]:r)(t);return(o||i||a)&&zCt(h,r,{swapXY:o,flipX:i,flipY:a}),h};function FCt(e,t){switch(e){case"squarify":return P5.treemapSquarify.ratio(t);case"binary":return P5.treemapBinary;case"dice":return P5.treemapDice;case"slice":return P5.treemapSlice;default:return P5.treemapSliceDice}}});var OD=ye((Mdr,VCe)=>{"use strict";var BCe=xa(),I5=va(),NCe=Mr(),FW=Ky(),qCt=_v().resizeText,OCt=DD();function BCt(e){var t=e._fullLayout._treemaplayer.selectAll(".trace");qCt(e,t,"treemap"),t.each(function(r){var n=BCe.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){BCe.select(this).call(UCe,o,a,e,{hovered:!1})})})}function UCe(e,t,r,n,i){var a=(i||{}).hovered,o=t.data.data,s=o.i,l,u,c=o.color,f=FW.isHierarchyRoot(t),h=1;if(a)l=r._hovered.marker.line.color,u=r._hovered.marker.line.width;else if(f&&c===r.root.color)h=100,l="rgba(0,0,0,0)",u=0;else if(l=NCe.castOption(r,s,"marker.line.color")||I5.defaultLine,u=NCe.castOption(r,s,"marker.line.width")||0,!r._hasColorscale&&!t.onPathbar){var d=r.marker.depthfade;if(d){var v=I5.combine(I5.addOpacity(r._backgroundColor,.75),c),x;if(d===!0){var b=FW.getMaxDepth(r);isFinite(b)?FW.isLeaf(t)?x=0:x=r._maxVisibleLayers-(t.data.depth-r._entryDepth):x=t.data.height+1}else x=t.data.depth-r._entryDepth,r._atRootLevel||x++;if(x>0)for(var p=0;p{"use strict";var HCe=xa(),BD=Mr(),GCe=ao(),NCt=Pl(),UCt=zW(),jCe=OD().styleOne,qW=z2(),R5=Ky(),VCt=OE(),OW=!0;WCe.exports=function(t,r,n,i,a){var o=a.barDifY,s=a.width,l=a.height,u=a.viewX,c=a.viewY,f=a.pathSlice,h=a.toMoveInsideSlice,d=a.strTransform,v=a.hasTransition,x=a.handleSlicesExit,b=a.makeUpdateSliceInterpolator,p=a.makeUpdateTextInterpolator,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=L.hierarchy,M=s/_._entryDepth,g=R5.listPath(n.data,"id"),P=UCt(C.copy(),[s,l],{packing:"dice",pad:{inner:0,top:0,left:0,right:0,bottom:0}}).descendants();P=P.filter(function(F){var q=g.indexOf(F.data.id);return q===-1?!1:(F.x0=M*q,F.x1=M*(q+1),F.y0=o,F.y1=o+l,F.onPathbar=!0,!0)}),P.reverse(),i=i.data(P,R5.getPtId),i.enter().append("g").classed("pathbar",!0),x(i,OW,E,[s,l],f),i.order();var T=i;v&&(T=T.transition().each("end",function(){var F=HCe.select(this);R5.setSliceCursor(F,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:!1})})),T.each(function(F){F._x0=u(F.x0),F._x1=u(F.x1),F._y0=c(F.y0),F._y1=c(F.y1),F._hoverX=u(F.x1-Math.min(s,l)/2),F._hoverY=c(F.y1-l/2);var q=HCe.select(this),V=BD.ensureSingle(q,"path","surface",function(N){N.style("pointer-events",k?"none":"all")});v?V.transition().attrTween("d",function(N){var W=b(N,OW,E,[s,l]);return function(re){return f(W(re))}}):V.attr("d",f),q.call(VCt,n,t,r,{styleOne:jCe,eventDataKeys:qW.eventDataKeys,transitionTime:qW.CLICK_TRANSITION_TIME,transitionEasing:qW.CLICK_TRANSITION_EASING}).call(R5.setSliceCursor,t,{hideOnRoot:!1,hideOnLeaves:!1,isTransitioning:t._transitioning}),V.call(jCe,F,_,t,{hovered:!1}),F._text=(R5.getPtLabel(F)||"").split("
").join(" ")||"";var H=BD.ensureSingle(q,"g","slicetext"),X=BD.ensureSingle(H,"text","",function(N){N.attr("data-notex",1)}),G=BD.ensureUniformFontSize(t,R5.determineTextFont(_,F,A.font,{onPathbar:!0}));X.text(F._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(GCe.font,G).call(NCt.convertToTspans,t),F.textBB=GCe.bBox(X.node()),F.transform=h(F,{fontSize:G.size,onPathbar:!0}),F.transform.fontSize=G.size,v?X.transition().attrTween("transform",function(N){var W=p(N,OW,E,[s,l]);return function(re){return d(W(re))}}):X.attr("transform",d(F))})}});var JCe=ye((kdr,KCe)=>{"use strict";var XCe=xa(),BW=(R2(),B1(I2)).interpolate,Y_=Ky(),NE=Mr(),YCe=Qb().TEXTPAD,HCt=i2(),GCt=HCt.toMoveInsideBar,jCt=_v(),NW=jCt.recordMinTextSize,WCt=z2(),ZCt=ZCe();function q2(e){return Y_.isHierarchyRoot(e)?"":Y_.getPtId(e)}KCe.exports=function(t,r,n,i,a){var o=t._fullLayout,s=r[0],l=s.trace,u=l.type,c=u==="icicle",f=s.hierarchy,h=Y_.findEntryWithLevel(f,l.level),d=XCe.select(n),v=d.selectAll("g.pathbar"),x=d.selectAll("g.slice");if(!h){v.remove(),x.remove();return}var b=Y_.isHierarchyRoot(h),p=!o.uniformtext.mode&&Y_.hasTransition(i),E=Y_.getMaxDepth(l),k=function(Ke){return Ke.data.depth-h.data.depth-1?C+P:-(g+P):0,F={x0:M,x1:M,y0:T,y1:T+g},q=function(Ke,xt,bt){var Lt=l.tiling.pad,St=function($t){return $t-Lt<=xt.x0},Et=function($t){return $t+Lt>=xt.x1},dt=function($t){return $t-Lt<=xt.y0},Ht=function($t){return $t+Lt>=xt.y1};return Ke.x0===xt.x0&&Ke.x1===xt.x1&&Ke.y0===xt.y0&&Ke.y1===xt.y1?{x0:Ke.x0,x1:Ke.x1,y0:Ke.y0,y1:Ke.y1}:{x0:St(Ke.x0-Lt)?0:Et(Ke.x0-Lt)?bt[0]:Ke.x0,x1:St(Ke.x1+Lt)?0:Et(Ke.x1+Lt)?bt[0]:Ke.x1,y0:dt(Ke.y0-Lt)?0:Ht(Ke.y0-Lt)?bt[1]:Ke.y0,y1:dt(Ke.y1+Lt)?0:Ht(Ke.y1+Lt)?bt[1]:Ke.y1}},V=null,H={},X={},G=null,N=function(Ke,xt){return xt?H[q2(Ke)]:X[q2(Ke)]},W=function(Ke,xt,bt,Lt){if(xt)return H[q2(f)]||F;var St=X[l.level]||bt;return k(Ke)?q(Ke,St,Lt):{}};s.hasMultipleRoots&&b&&E++,l._maxDepth=E,l._backgroundColor=o.paper_bgcolor,l._entryDepth=h.data.depth,l._atRootLevel=b;var re=-_/2+A.l+A.w*(L.x[1]+L.x[0])/2,ae=-C/2+A.t+A.h*(1-(L.y[1]+L.y[0])/2),_e=function(Ke){return re+Ke},Me=function(Ke){return ae+Ke},ke=Me(0),ge=_e(0),ie=function(Ke){return ge+Ke},Te=function(Ke){return ke+Ke};function Ee(Ke,xt){return Ke+","+xt}var Ae=ie(0),ze=function(Ke){Ke.x=Math.max(Ae,Ke.x)},Ce=l.pathbar.edgeshape,me=function(Ke){var xt=ie(Math.max(Math.min(Ke.x0,Ke.x0),0)),bt=ie(Math.min(Math.max(Ke.x1,Ke.x1),M)),Lt=Te(Ke.y0),St=Te(Ke.y1),Et=g/2,dt={},Ht={};dt.x=xt,Ht.x=bt,dt.y=Ht.y=(Lt+St)/2;var $t={x:xt,y:Lt},fr={x:bt,y:Lt},_r={x:bt,y:St},Br={x:xt,y:St};return Ce===">"?($t.x-=Et,fr.x-=Et,_r.x-=Et,Br.x-=Et):Ce==="/"?(_r.x-=Et,Br.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="\\"?($t.x-=Et,fr.x-=Et,dt.x-=Et/2,Ht.x-=Et/2):Ce==="<"&&(dt.x-=Et,Ht.x-=Et),ze($t),ze(Br),ze(dt),ze(fr),ze(_r),ze(Ht),"M"+Ee($t.x,$t.y)+"L"+Ee(fr.x,fr.y)+"L"+Ee(Ht.x,Ht.y)+"L"+Ee(_r.x,_r.y)+"L"+Ee(Br.x,Br.y)+"L"+Ee(dt.x,dt.y)+"Z"},Re=l[c?"tiling":"marker"].pad,ce=function(Ke){return l.textposition.indexOf(Ke)!==-1},Ge=ce("top"),nt=ce("left"),ct=ce("right"),qt=ce("bottom"),rt=function(Ke){var xt=_e(Ke.x0),bt=_e(Ke.x1),Lt=Me(Ke.y0),St=Me(Ke.y1),Et=bt-xt,dt=St-Lt;if(!Et||!dt)return"";var Ht=l.marker.cornerradius||0,$t=Math.min(Ht,Et/2,dt/2);$t&&Ke.data&&Ke.data.data&&Ke.data.data.label&&(Ge&&($t=Math.min($t,Re.t)),nt&&($t=Math.min($t,Re.l)),ct&&($t=Math.min($t,Re.r)),qt&&($t=Math.min($t,Re.b)));var fr=function(_r,Br){return $t?"a"+Ee($t,$t)+" 0 0 1 "+Ee(_r,Br):""};return"M"+Ee(xt,Lt+$t)+fr($t,-$t)+"L"+Ee(bt-$t,Lt)+fr($t,$t)+"L"+Ee(bt,St-$t)+fr(-$t,$t)+"L"+Ee(xt+$t,St)+fr(-$t,-$t)+"Z"},ot=function(Ke,xt){var bt=Ke.x0,Lt=Ke.x1,St=Ke.y0,Et=Ke.y1,dt=Ke.textBB,Ht=Ge||xt.isHeader&&!qt,$t=Ht?"start":qt?"end":"middle",fr=ce("right"),_r=ce("left")||xt.onPathbar,Br=_r?-1:fr?1:0;if(xt.isHeader){if(bt+=(c?Re:Re.l)-YCe,Lt-=(c?Re:Re.r)-YCe,bt>=Lt){var Or=(bt+Lt)/2;bt=Or,Lt=Or}var Nr;qt?(Nr=Et-(c?Re:Re.b),St{"use strict";var XCt=xa(),YCt=Ky(),KCt=_v(),JCt=KCt.clearMinTextSize,$Ct=N0().resizeText,$Ce=JCe();QCe.exports=function(t,r,n,i,a){var o=a.type,s=a.drawDescendants,l=t._fullLayout,u=l["_"+o+"layer"],c,f,h=!n;if(JCt(o,l),c=u.selectAll("g.trace."+o).data(r,function(v){return v[0].trace.uid}),c.enter().append("g").classed("trace",!0).classed(o,!0),c.order(),!l.uniformtext.mode&&YCt.hasTransition(n)){i&&(f=i());var d=XCt.transition().duration(n.duration).ease(n.easing).each("end",function(){f&&f()}).each("interrupt",function(){f&&f()});d.each(function(){u.selectAll("g.trace").each(function(v){$Ce(t,v,this,n,s)})})}else c.each(function(v){$Ce(t,v,this,n,s)}),l.uniformtext.mode&&$Ct(t,u.selectAll(".trace"),o);h&&c.exit().remove()}});var n6e=ye((Ldr,i6e)=>{"use strict";var e6e=xa(),ND=Mr(),t6e=ao(),QCt=Pl(),e6t=zW(),r6e=OD().styleOne,VW=z2(),K_=Ky(),t6t=OE(),r6t=FD().formatSliceLabel,HW=!1;i6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,g=_.textposition.indexOf("bottom")!==-1,P=!g&&!_.marker.pad.t||g&&!_.marker.pad.b,T=e6t(n,[o,s],{packing:_.tiling.packing,squarifyratio:_.tiling.squarifyratio,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,pad:{inner:_.tiling.pad,top:_.marker.pad.t,left:_.marker.pad.l,right:_.marker.pad.r,bottom:_.marker.pad.b}}),F=T.descendants(),q=1/0,V=-1/0;F.forEach(function(W){var re=W.depth;re>=_._maxDepth?(W.x0=W.x1=(W.x0+W.x1)/2,W.y0=W.y1=(W.y0+W.y1)/2):(q=Math.min(q,re),V=Math.max(V,re))}),i=i.data(F,K_.getPtId),_._maxVisibleLayers=isFinite(V)?V-q+1:0,i.enter().append("g").classed("slice",!0),v(i,HW,E,[o,s],c),i.order();var H=null;if(d&&p){var X=K_.getPtId(p);i.each(function(W){H===null&&K_.getPtId(W)===X&&(H={x0:W.x0,x1:W.x1,y0:W.y0,y1:W.y1})})}var G=function(){return H||{x0:0,x1:o,y0:0,y1:s}},N=i;return d&&(N=N.transition().each("end",function(){var W=e6e.select(this);K_.setSliceCursor(W,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),N.each(function(W){var re=K_.isHeader(W,_);W._x0=l(W.x0),W._x1=l(W.x1),W._y0=u(W.y0),W._y1=u(W.y1),W._hoverX=l(W.x1-_.marker.pad.r),W._hoverY=u(g?W.y1-_.marker.pad.b/2:W.y0+_.marker.pad.t/2);var ae=e6e.select(this),_e=ND.ensureSingle(ae,"path","surface",function(Ee){Ee.style("pointer-events",k?"none":"all")});d?_e.transition().attrTween("d",function(Ee){var Ae=x(Ee,HW,G(),[o,s]);return function(ze){return c(Ae(ze))}}):_e.attr("d",c),ae.call(t6t,n,t,r,{styleOne:r6e,eventDataKeys:VW.eventDataKeys,transitionTime:VW.CLICK_TRANSITION_TIME,transitionEasing:VW.CLICK_TRANSITION_EASING}).call(K_.setSliceCursor,t,{isTransitioning:t._transitioning}),_e.call(r6e,W,_,t,{hovered:!1}),W.x0===W.x1||W.y0===W.y1?W._text="":re?W._text=P?"":K_.getPtLabel(W)||"":W._text=r6t(W,n,_,r,A)||"";var Me=ND.ensureSingle(ae,"g","slicetext"),ke=ND.ensureSingle(Me,"text","",function(Ee){Ee.attr("data-notex",1)}),ge=ND.ensureUniformFontSize(t,K_.determineTextFont(_,W,A.font)),ie=W._text||" ",Te=re&&ie.indexOf("
")===-1;ke.text(ie).classed("slicetext",!0).attr("text-anchor",M?"end":C||Te?"start":"middle").call(t6e.font,ge).call(QCt.convertToTspans,t),W.textBB=t6e.bBox(ke.node()),W.transform=f(W,{fontSize:ge.size,isHeader:re}),W.transform.fontSize=ge.size,d?ke.transition().attrTween("transform",function(Ee){var Ae=b(Ee,HW,G(),[o,s]);return function(ze){return h(Ae(ze))}}):ke.attr("transform",h(W))}),H}});var o6e=ye((Pdr,a6e)=>{"use strict";var i6t=UW(),n6t=n6e();a6e.exports=function(t,r,n,i){return i6t(t,r,n,i,{type:"treemap",drawDescendants:n6t})}});var l6e=ye((Idr,s6e)=>{"use strict";s6e.exports={moduleType:"trace",name:"treemap",basePlotModule:SCe(),categories:[],animatable:!0,attributes:qD(),layoutAttributes:PW(),supplyDefaults:RCe(),supplyLayoutDefaults:zCe(),calc:RW().calc,crossTraceCalc:RW().crossTraceCalc,plot:o6e(),style:OD().style,colorbar:Kd(),meta:{}}});var c6e=ye((Rdr,u6e)=>{"use strict";u6e.exports=l6e()});var h6e=ye(D5=>{"use strict";var f6e=Xu();D5.name="icicle";D5.plot=function(e,t,r,n){f6e.plotBasePlot(D5.name,e,t,r,n)};D5.clean=function(e,t,r,n){f6e.cleanBasePlot(D5.name,e,t,r,n)}});var GW=ye((zdr,v6e)=>{"use strict";var a6t=Wo().hovertemplateAttrs,o6t=Wo().texttemplateAttrs,s6t=Jl(),l6t=Ju().attributes,UE=A2(),o0=AE(),UD=qD(),d6e=z2(),u6t=no().extendFlat,c6t=Ed().pattern;v6e.exports={labels:o0.labels,parents:o0.parents,values:o0.values,branchvalues:o0.branchvalues,count:o0.count,level:o0.level,maxdepth:o0.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:UD.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:u6t({colors:o0.marker.colors,line:o0.marker.line,pattern:c6t,editType:"calc"},s6t("marker",{colorAttr:"colors",anim:!1})),leaf:o0.leaf,pathbar:UD.pathbar,text:UE.text,textinfo:o0.textinfo,texttemplate:o6t({editType:"plot"},{keys:d6e.eventDataKeys.concat(["label","value"])}),hovertext:UE.hovertext,hoverinfo:o0.hoverinfo,hovertemplate:a6t({},{keys:d6e.eventDataKeys}),textfont:UE.textfont,insidetextfont:UE.insidetextfont,outsidetextfont:UD.outsidetextfont,textposition:UD.textposition,sort:UE.sort,root:o0.root,domain:l6t({name:"icicle",trace:!0,editType:"calc"})}});var jW=ye((Fdr,p6e)=>{"use strict";p6e.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var _6e=ye((qdr,y6e)=>{"use strict";var g6e=Mr(),f6t=GW(),h6t=va(),d6t=Ju().defaults,v6t=r0().handleText,p6t=Qb().TEXTPAD,g6t=S2().handleMarkerDefaults,m6e=Mu(),m6t=m6e.hasColorscale,y6t=m6e.handleDefaults;y6e.exports=function(t,r,n,i){function a(d,v){return g6e.coerce(t,r,f6t,d,v)}var o=a("labels"),s=a("parents");if(!o||!o.length||!s||!s.length){r.visible=!1;return}var l=a("values");l&&l.length?a("branchvalues"):a("count"),a("level"),a("maxdepth"),a("tiling.orientation"),a("tiling.flip"),a("tiling.pad");var u=a("text");a("texttemplate"),r.texttemplate||a("textinfo",g6e.isArrayOrTypedArray(u)?"text+label":"label"),a("hovertext"),a("hovertemplate");var c=a("pathbar.visible"),f="auto";v6t(t,r,i,a,f,{hasPathbar:c,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),a("textposition"),g6t(t,r,i,a);var h=r._hasColorscale=m6t(t,"marker","colors")||(t.marker||{}).coloraxis;h&&y6t(t,r,i,a,{prefix:"marker.",cLetter:"c"}),a("leaf.opacity",h?1:.7),r._hovered={marker:{line:{width:2,color:h6t.contrast(i.paper_bgcolor)}}},c&&(a("pathbar.thickness",r.pathbar.textfont.size+2*p6t),a("pathbar.side"),a("pathbar.edgeshape")),a("sort"),a("root.color"),d6t(r,i,a),r._length=null}});var b6e=ye((Odr,x6e)=>{"use strict";var _6t=Mr(),x6t=jW();x6e.exports=function(t,r){function n(i,a){return _6t.coerce(t,r,x6t,i,a)}n("iciclecolorway",r.colorway),n("extendiciclecolors")}});var ZW=ye(WW=>{"use strict";var w6e=EE();WW.calc=function(e,t){return w6e.calc(e,t)};WW.crossTraceCalc=function(e){return w6e._runCrossTraceCalc("icicle",e)}});var A6e=ye((Ndr,T6e)=>{"use strict";var b6t=SE(),w6t=DW();T6e.exports=function(t,r,n){var i=n.flipX,a=n.flipY,o=n.orientation==="h",s=n.maxDepth,l=r[0],u=r[1];s&&(l=(t.height+1)*r[0]/Math.min(t.height+1,s),u=(t.height+1)*r[1]/Math.min(t.height+1,s));var c=b6t.partition().padding(n.pad.inner).size(o?[r[1],l]:[r[0],u])(t);return(o||i||a)&&w6t(c,r,{swapXY:o,flipX:i,flipY:a}),c}});var XW=ye((Udr,C6e)=>{"use strict";var S6e=xa(),M6e=va(),E6e=Mr(),T6t=_v().resizeText,A6t=DD();function S6t(e){var t=e._fullLayout._iciclelayer.selectAll(".trace");T6t(e,t,"icicle"),t.each(function(r){var n=S6e.select(this),i=r[0],a=i.trace;n.style("opacity",a.opacity),n.selectAll("path.surface").each(function(o){S6e.select(this).call(k6e,o,a,e)})})}function k6e(e,t,r,n){var i=t.data.data,a=!t.children,o=i.i,s=E6e.castOption(r,o,"marker.line.color")||M6e.defaultLine,l=E6e.castOption(r,o,"marker.line.width")||0;e.call(A6t,t,r,n).style("stroke-width",l).call(M6e.stroke,s).style("opacity",a?r.leaf.opacity:null)}C6e.exports={style:S6t,styleOne:k6e}});var D6e=ye((Vdr,R6e)=>{"use strict";var L6e=xa(),VD=Mr(),P6e=ao(),M6t=Pl(),E6t=A6e(),I6e=XW().styleOne,YW=z2(),z5=Ky(),k6t=OE(),C6t=FD().formatSliceLabel,KW=!1;R6e.exports=function(t,r,n,i,a){var o=a.width,s=a.height,l=a.viewX,u=a.viewY,c=a.pathSlice,f=a.toMoveInsideSlice,h=a.strTransform,d=a.hasTransition,v=a.handleSlicesExit,x=a.makeUpdateSliceInterpolator,b=a.makeUpdateTextInterpolator,p=a.prevEntry,E={},k=t._context.staticPlot,A=t._fullLayout,L=r[0],_=L.trace,C=_.textposition.indexOf("left")!==-1,M=_.textposition.indexOf("right")!==-1,g=_.textposition.indexOf("bottom")!==-1,P=E6t(n,[o,s],{flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1,orientation:_.tiling.orientation,pad:{inner:_.tiling.pad},maxDepth:_._maxDepth}),T=P.descendants(),F=1/0,q=-1/0;T.forEach(function(N){var W=N.depth;W>=_._maxDepth?(N.x0=N.x1=(N.x0+N.x1)/2,N.y0=N.y1=(N.y0+N.y1)/2):(F=Math.min(F,W),q=Math.max(q,W))}),i=i.data(T,z5.getPtId),_._maxVisibleLayers=isFinite(q)?q-F+1:0,i.enter().append("g").classed("slice",!0),v(i,KW,E,[o,s],c),i.order();var V=null;if(d&&p){var H=z5.getPtId(p);i.each(function(N){V===null&&z5.getPtId(N)===H&&(V={x0:N.x0,x1:N.x1,y0:N.y0,y1:N.y1})})}var X=function(){return V||{x0:0,x1:o,y0:0,y1:s}},G=i;return d&&(G=G.transition().each("end",function(){var N=L6e.select(this);z5.setSliceCursor(N,t,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),G.each(function(N){N._x0=l(N.x0),N._x1=l(N.x1),N._y0=u(N.y0),N._y1=u(N.y1),N._hoverX=l(N.x1-_.tiling.pad),N._hoverY=u(g?N.y1-_.tiling.pad/2:N.y0+_.tiling.pad/2);var W=L6e.select(this),re=VD.ensureSingle(W,"path","surface",function(ke){ke.style("pointer-events",k?"none":"all")});d?re.transition().attrTween("d",function(ke){var ge=x(ke,KW,X(),[o,s],{orientation:_.tiling.orientation,flipX:_.tiling.flip.indexOf("x")>-1,flipY:_.tiling.flip.indexOf("y")>-1});return function(ie){return c(ge(ie))}}):re.attr("d",c),W.call(k6t,n,t,r,{styleOne:I6e,eventDataKeys:YW.eventDataKeys,transitionTime:YW.CLICK_TRANSITION_TIME,transitionEasing:YW.CLICK_TRANSITION_EASING}).call(z5.setSliceCursor,t,{isTransitioning:t._transitioning}),re.call(I6e,N,_,t,{hovered:!1}),N.x0===N.x1||N.y0===N.y1?N._text="":N._text=C6t(N,n,_,r,A)||"";var ae=VD.ensureSingle(W,"g","slicetext"),_e=VD.ensureSingle(ae,"text","",function(ke){ke.attr("data-notex",1)}),Me=VD.ensureUniformFontSize(t,z5.determineTextFont(_,N,A.font));_e.text(N._text||" ").classed("slicetext",!0).attr("text-anchor",M?"end":C?"start":"middle").call(P6e.font,Me).call(M6t.convertToTspans,t),N.textBB=P6e.bBox(_e.node()),N.transform=f(N,{fontSize:Me.size}),N.transform.fontSize=Me.size,d?_e.transition().attrTween("transform",function(ke){var ge=b(ke,KW,X(),[o,s]);return function(ie){return h(ge(ie))}}):_e.attr("transform",h(N))}),V}});var F6e=ye((Hdr,z6e)=>{"use strict";var L6t=UW(),P6t=D6e();z6e.exports=function(t,r,n,i){return L6t(t,r,n,i,{type:"icicle",drawDescendants:P6t})}});var O6e=ye((Gdr,q6e)=>{"use strict";q6e.exports={moduleType:"trace",name:"icicle",basePlotModule:h6e(),categories:[],animatable:!0,attributes:GW(),layoutAttributes:jW(),supplyDefaults:_6e(),supplyLayoutDefaults:b6e(),calc:ZW().calc,crossTraceCalc:ZW().crossTraceCalc,plot:F6e(),style:XW().style,colorbar:Kd(),meta:{}}});var N6e=ye((jdr,B6e)=>{"use strict";B6e.exports=O6e()});var V6e=ye(F5=>{"use strict";var U6e=Xu();F5.name="funnelarea";F5.plot=function(e,t,r,n){U6e.plotBasePlot(F5.name,e,t,r,n)};F5.clean=function(e,t,r,n){U6e.cleanBasePlot(F5.name,e,t,r,n)}});var JW=ye((Zdr,H6e)=>{"use strict";var tv=A2(),I6t=vl(),R6t=Ju().attributes,D6t=Wo().hovertemplateAttrs,z6t=Wo().texttemplateAttrs,O2=no().extendFlat;H6e.exports={labels:tv.labels,label0:tv.label0,dlabel:tv.dlabel,values:tv.values,marker:{colors:tv.marker.colors,line:{color:O2({},tv.marker.line.color,{dflt:null}),width:O2({},tv.marker.line.width,{dflt:1}),editType:"calc"},pattern:tv.marker.pattern,editType:"calc"},text:tv.text,hovertext:tv.hovertext,scalegroup:O2({},tv.scalegroup,{}),textinfo:O2({},tv.textinfo,{flags:["label","text","value","percent"]}),texttemplate:z6t({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:O2({},I6t.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:D6t({},{keys:["label","color","value","text","percent"]}),textposition:O2({},tv.textposition,{values:["inside","none"],dflt:"inside"}),textfont:tv.textfont,insidetextfont:tv.insidetextfont,title:{text:tv.title.text,font:tv.title.font,position:O2({},tv.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:R6t({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}});var $W=ye((Xdr,G6e)=>{"use strict";var F6t=uD().hiddenlabels;G6e.exports={hiddenlabels:F6t,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}});var Z6e=ye((Ydr,W6e)=>{"use strict";var j6e=Mr(),q6t=JW(),O6t=Ju().defaults,B6t=r0().handleText,N6t=S2().handleLabelsAndValues,U6t=S2().handleMarkerDefaults;W6e.exports=function(t,r,n,i){function a(x,b){return j6e.coerce(t,r,q6t,x,b)}var o=a("labels"),s=a("values"),l=N6t(o,s),u=l.len;if(r._hasLabels=l.hasLabels,r._hasValues=l.hasValues,!r._hasLabels&&r._hasValues&&(a("label0"),a("dlabel")),!u){r.visible=!1;return}r._length=u,U6t(t,r,i,a),a("scalegroup");var c=a("text"),f=a("texttemplate"),h;if(f||(h=a("textinfo",Array.isArray(c)?"text+percent":"percent")),a("hovertext"),a("hovertemplate"),f||h&&h!=="none"){var d=a("textposition");B6t(t,r,i,a,d,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else h==="none"&&a("textposition","none");O6t(r,i,a);var v=a("title.text");v&&(a("title.position"),j6e.coerceFont(a,"title.font",i.font)),a("aspectratio"),a("baseratio")}});var Y6e=ye((Kdr,X6e)=>{"use strict";var V6t=Mr(),H6t=$W();X6e.exports=function(t,r){function n(i,a){return V6t.coerce(t,r,H6t,i,a)}n("hiddenlabels"),n("funnelareacolorway",r.colorway),n("extendfunnelareacolors")}});var QW=ye((Jdr,J6e)=>{"use strict";var K6e=y5();function G6t(e,t){return K6e.calc(e,t)}function j6t(e){K6e.crossTraceCalc(e,{type:"funnelarea"})}J6e.exports={calc:G6t,crossTraceCalc:j6t}});var rLe=ye(($dr,tLe)=>{"use strict";var B2=xa(),eZ=ao(),J_=Mr(),W6t=J_.strScale,$6e=J_.strTranslate,Q6e=Pl(),Z6t=i2(),X6t=Z6t.toMoveInsideBar,eLe=_v(),Y6t=eLe.recordMinTextSize,K6t=eLe.clearMinTextSize,J6t=u_(),q5=dD(),$6t=q5.attachFxHandlers,Q6t=q5.determineInsideTextFont,eLt=q5.layoutAreas,tLt=q5.prerenderTitles,rLt=q5.positionTitleOutside,iLt=q5.formatSliceLabel;tLe.exports=function(t,r){var n=t._context.staticPlot,i=t._fullLayout;K6t("funnelarea",i),tLt(r,t),eLt(r,i._size),J_.makeTraceGroups(i._funnelarealayer,r,"trace").each(function(a){var o=B2.select(this),s=a[0],l=s.trace;aLt(a),o.each(function(){var u=B2.select(this).selectAll("g.slice").data(a);u.enter().append("g").classed("slice",!0),u.exit().remove(),u.each(function(f,h){if(f.hidden){B2.select(this).selectAll("path,g").remove();return}f.pointNumber=f.i,f.curveNumber=l.index;var d=s.cx,v=s.cy,x=B2.select(this),b=x.selectAll("path.surface").data([f]);b.enter().append("path").classed("surface",!0).style({"pointer-events":n?"none":"all"}),x.call($6t,t,a);var p="M"+(d+f.TR[0])+","+(v+f.TR[1])+tZ(f.TR,f.BR)+tZ(f.BR,f.BL)+tZ(f.BL,f.TL)+"Z";b.attr("d",p),iLt(t,f,s);var E=J6t.castOption(l.textposition,f.pts),k=x.selectAll("g.slicetext").data(f.text&&E!=="none"?[0]:[]);k.enter().append("g").classed("slicetext",!0),k.exit().remove(),k.each(function(){var A=J_.ensureSingle(B2.select(this),"text","",function(F){F.attr("data-notex",1)}),L=J_.ensureUniformFontSize(t,Q6t(l,f,i.font));A.text(f.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(eZ.font,L).call(Q6e.convertToTspans,t);var _=eZ.bBox(A.node()),C,M,g,P=Math.min(f.BL[1],f.BR[1])+v,T=Math.max(f.TL[1],f.TR[1])+v;M=Math.max(f.TL[0],f.BL[0])+d,g=Math.min(f.TR[0],f.BR[0])+d,C=X6t(M,g,P,T,_,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"}),C.fontSize=L.size,Y6t(l.type,C,i),a[h].transform=C,J_.setTransormAndDisplay(A,C)})});var c=B2.select(this).selectAll("g.titletext").data(l.title.text?[0]:[]);c.enter().append("g").classed("titletext",!0),c.exit().remove(),c.each(function(){var f=J_.ensureSingle(B2.select(this),"text","",function(v){v.attr("data-notex",1)}),h=l.title.text;l._meta&&(h=J_.templateString(h,l._meta)),f.text(h).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(eZ.font,l.title.font).call(Q6e.convertToTspans,t);var d=rLt(s,i._size);f.attr("transform",$6e(d.x,d.y)+W6t(Math.min(1,d.scale))+$6e(d.tx,d.ty))})})})};function tZ(e,t){var r=t[0]-e[0],n=t[1]-e[1];return"l"+r+","+n}function nLt(e,t){return[.5*(e[0]+t[0]),.5*(e[1]+t[1])]}function aLt(e){if(!e.length)return;var t=e[0],r=t.trace,n=r.aspectratio,i=r.baseratio;i>.999&&(i=.999);var a=Math.pow(i,2),o=t.vTotal,s=o*a/(1-a),l=o,u=s/o;function c(){var q=Math.sqrt(u);return{x:q,y:-q}}function f(){var q=c();return[q.x,q.y]}var h,d=[];d.push(f());var v,x;for(v=e.length-1;v>-1;v--)if(x=e[v],!x.hidden){var b=x.v/l;u+=b,d.push(f())}var p=1/0,E=-1/0;for(v=0;v-1;v--)if(x=e[v],!x.hidden){P+=1;var T=d[P][0],F=d[P][1];x.TL=[-T,F],x.TR=[T,F],x.BL=M,x.BR=g,x.pxmid=nLt(x.TR,x.BR),M=x.TL,g=x.TR}}});var aLe=ye((Qdr,nLe)=>{"use strict";var iLe=xa(),oLt=z3(),sLt=_v().resizeText;nLe.exports=function(t){var r=t._fullLayout._funnelarealayer.selectAll(".trace");sLt(t,r,"funnelarea"),r.each(function(n){var i=n[0],a=i.trace,o=iLe.select(this);o.style({opacity:a.opacity}),o.selectAll("path.surface").each(function(s){iLe.select(this).call(oLt,s,a,t)})})}});var sLe=ye((evr,oLe)=>{"use strict";oLe.exports={moduleType:"trace",name:"funnelarea",basePlotModule:V6e(),categories:["pie-like","funnelarea","showLegend"],attributes:JW(),layoutAttributes:$W(),supplyDefaults:Z6e(),supplyLayoutDefaults:Y6e(),calc:QW().calc,crossTraceCalc:QW().crossTraceCalc,plot:rLe(),style:aLe(),styleOne:z3(),meta:{}}});var uLe=ye((tvr,lLe)=>{"use strict";lLe.exports=sLe()});var Rd=ye((rvr,cLe)=>{(function(){var e={1964:function(i,a,o){i.exports={alpha_shape:o(3502),convex_hull:o(7352),delaunay_triangulate:o(7642),gl_cone3d:o(6405),gl_error3d:o(9165),gl_line3d:o(5714),gl_mesh3d:o(7201),gl_plot3d:o(4100),gl_scatter3d:o(8418),gl_streamtube3d:o(7815),gl_surface3d:o(9499),ndarray:o(9618),ndarray_linear_interpolate:o(4317)}},4793:function(i,a,o){"use strict";var s;function l(Le,xe){if(!(Le instanceof xe))throw new TypeError("Cannot call a class as a function")}function u(Le,xe){for(var Se=0;SeM)throw new RangeError('The value "'+Le+'" is invalid for option "size"');var xe=new Uint8Array(Le);return Object.setPrototypeOf(xe,T.prototype),xe}function T(Le,xe,Se){if(typeof Le=="number"){if(typeof xe=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return H(Le)}return F(Le,xe,Se)}T.poolSize=8192;function F(Le,xe,Se){if(typeof Le=="string")return X(Le,xe);if(ArrayBuffer.isView(Le))return N(Le);if(Le==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le));if(Ne(Le,ArrayBuffer)||Le&&Ne(Le.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(Ne(Le,SharedArrayBuffer)||Le&&Ne(Le.buffer,SharedArrayBuffer)))return W(Le,xe,Se);if(typeof Le=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var lt=Le.valueOf&&Le.valueOf();if(lt!=null&<!==Le)return T.from(lt,xe,Se);var Gt=re(Le);if(Gt)return Gt;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof Le[Symbol.toPrimitive]=="function")return T.from(Le[Symbol.toPrimitive]("string"),xe,Se);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+A(Le))}T.from=function(Le,xe,Se){return F(Le,xe,Se)},Object.setPrototypeOf(T.prototype,Uint8Array.prototype),Object.setPrototypeOf(T,Uint8Array);function q(Le){if(typeof Le!="number")throw new TypeError('"size" argument must be of type number');if(Le<0)throw new RangeError('The value "'+Le+'" is invalid for option "size"')}function V(Le,xe,Se){return q(Le),Le<=0?P(Le):xe!==void 0?typeof Se=="string"?P(Le).fill(xe,Se):P(Le).fill(xe):P(Le)}T.alloc=function(Le,xe,Se){return V(Le,xe,Se)};function H(Le){return q(Le),P(Le<0?0:ae(Le)|0)}T.allocUnsafe=function(Le){return H(Le)},T.allocUnsafeSlow=function(Le){return H(Le)};function X(Le,xe){if((typeof xe!="string"||xe==="")&&(xe="utf8"),!T.isEncoding(xe))throw new TypeError("Unknown encoding: "+xe);var Se=Me(Le,xe)|0,lt=P(Se),Gt=lt.write(Le,xe);return Gt!==Se&&(lt=lt.slice(0,Gt)),lt}function G(Le){for(var xe=Le.length<0?0:ae(Le.length)|0,Se=P(xe),lt=0;lt=M)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+M.toString(16)+" bytes");return Le|0}function _e(Le){return+Le!=Le&&(Le=0),T.alloc(+Le)}T.isBuffer=function(xe){return xe!=null&&xe._isBuffer===!0&&xe!==T.prototype},T.compare=function(xe,Se){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),Ne(Se,Uint8Array)&&(Se=T.from(Se,Se.offset,Se.byteLength)),!T.isBuffer(xe)||!T.isBuffer(Se))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(xe===Se)return 0;for(var lt=xe.length,Gt=Se.length,Vt=0,ar=Math.min(lt,Gt);VtGt.length?(T.isBuffer(ar)||(ar=T.from(ar)),ar.copy(Gt,Vt)):Uint8Array.prototype.set.call(Gt,ar,Vt);else if(T.isBuffer(ar))ar.copy(Gt,Vt);else throw new TypeError('"list" argument must be an Array of Buffers');Vt+=ar.length}return Gt};function Me(Le,xe){if(T.isBuffer(Le))return Le.length;if(ArrayBuffer.isView(Le)||Ne(Le,ArrayBuffer))return Le.byteLength;if(typeof Le!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+A(Le));var Se=Le.length,lt=arguments.length>2&&arguments[2]===!0;if(!lt&&Se===0)return 0;for(var Gt=!1;;)switch(xe){case"ascii":case"latin1":case"binary":return Se;case"utf8":case"utf-8":return _r(Le).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Se*2;case"hex":return Se>>>1;case"base64":return Nr(Le).length;default:if(Gt)return lt?-1:_r(Le).length;xe=(""+xe).toLowerCase(),Gt=!0}}T.byteLength=Me;function ke(Le,xe,Se){var lt=!1;if((xe===void 0||xe<0)&&(xe=0),xe>this.length||((Se===void 0||Se>this.length)&&(Se=this.length),Se<=0)||(Se>>>=0,xe>>>=0,Se<=xe))return"";for(Le||(Le="utf8");;)switch(Le){case"hex":return rt(this,xe,Se);case"utf8":case"utf-8":return ce(this,xe,Se);case"ascii":return ct(this,xe,Se);case"latin1":case"binary":return qt(this,xe,Se);case"base64":return Re(this,xe,Se);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ot(this,xe,Se);default:if(lt)throw new TypeError("Unknown encoding: "+Le);Le=(Le+"").toLowerCase(),lt=!0}}T.prototype._isBuffer=!0;function ge(Le,xe,Se){var lt=Le[xe];Le[xe]=Le[Se],Le[Se]=lt}T.prototype.swap16=function(){var xe=this.length;if(xe%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Se=0;SeSe&&(xe+=" ... "),""},C&&(T.prototype[C]=T.prototype.inspect),T.prototype.compare=function(xe,Se,lt,Gt,Vt){if(Ne(xe,Uint8Array)&&(xe=T.from(xe,xe.offset,xe.byteLength)),!T.isBuffer(xe))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+A(xe));if(Se===void 0&&(Se=0),lt===void 0&&(lt=xe?xe.length:0),Gt===void 0&&(Gt=0),Vt===void 0&&(Vt=this.length),Se<0||lt>xe.length||Gt<0||Vt>this.length)throw new RangeError("out of range index");if(Gt>=Vt&&Se>=lt)return 0;if(Gt>=Vt)return-1;if(Se>=lt)return 1;if(Se>>>=0,lt>>>=0,Gt>>>=0,Vt>>>=0,this===xe)return 0;for(var ar=Vt-Gt,Qr=lt-Se,ai=Math.min(ar,Qr),jr=this.slice(Gt,Vt),ri=xe.slice(Se,lt),bi=0;bi2147483647?Se=2147483647:Se<-2147483648&&(Se=-2147483648),Se=+Se,Ye(Se)&&(Se=Gt?0:Le.length-1),Se<0&&(Se=Le.length+Se),Se>=Le.length){if(Gt)return-1;Se=Le.length-1}else if(Se<0)if(Gt)Se=0;else return-1;if(typeof xe=="string"&&(xe=T.from(xe,lt)),T.isBuffer(xe))return xe.length===0?-1:Te(Le,xe,Se,lt,Gt);if(typeof xe=="number")return xe=xe&255,typeof Uint8Array.prototype.indexOf=="function"?Gt?Uint8Array.prototype.indexOf.call(Le,xe,Se):Uint8Array.prototype.lastIndexOf.call(Le,xe,Se):Te(Le,[xe],Se,lt,Gt);throw new TypeError("val must be string, number or Buffer")}function Te(Le,xe,Se,lt,Gt){var Vt=1,ar=Le.length,Qr=xe.length;if(lt!==void 0&&(lt=String(lt).toLowerCase(),lt==="ucs2"||lt==="ucs-2"||lt==="utf16le"||lt==="utf-16le")){if(Le.length<2||xe.length<2)return-1;Vt=2,ar/=2,Qr/=2,Se/=2}function ai(Wi,Ni){return Vt===1?Wi[Ni]:Wi.readUInt16BE(Ni*Vt)}var jr;if(Gt){var ri=-1;for(jr=Se;jrar&&(Se=ar-Qr),jr=Se;jr>=0;jr--){for(var bi=!0,nn=0;nnGt&&(lt=Gt)):lt=Gt;var Vt=xe.length;lt>Vt/2&&(lt=Vt/2);var ar;for(ar=0;ar>>0,isFinite(lt)?(lt=lt>>>0,Gt===void 0&&(Gt="utf8")):(Gt=lt,lt=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var Vt=this.length-Se;if((lt===void 0||lt>Vt)&&(lt=Vt),xe.length>0&&(lt<0||Se<0)||Se>this.length)throw new RangeError("Attempt to write outside buffer bounds");Gt||(Gt="utf8");for(var ar=!1;;)switch(Gt){case"hex":return Ee(this,xe,Se,lt);case"utf8":case"utf-8":return Ae(this,xe,Se,lt);case"ascii":case"latin1":case"binary":return ze(this,xe,Se,lt);case"base64":return Ce(this,xe,Se,lt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return me(this,xe,Se,lt);default:if(ar)throw new TypeError("Unknown encoding: "+Gt);Gt=(""+Gt).toLowerCase(),ar=!0}},T.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function Re(Le,xe,Se){return xe===0&&Se===Le.length?L.fromByteArray(Le):L.fromByteArray(Le.slice(xe,Se))}function ce(Le,xe,Se){Se=Math.min(Le.length,Se);for(var lt=[],Gt=xe;Gt239?4:Vt>223?3:Vt>191?2:1;if(Gt+Qr<=Se){var ai=void 0,jr=void 0,ri=void 0,bi=void 0;switch(Qr){case 1:Vt<128&&(ar=Vt);break;case 2:ai=Le[Gt+1],(ai&192)===128&&(bi=(Vt&31)<<6|ai&63,bi>127&&(ar=bi));break;case 3:ai=Le[Gt+1],jr=Le[Gt+2],(ai&192)===128&&(jr&192)===128&&(bi=(Vt&15)<<12|(ai&63)<<6|jr&63,bi>2047&&(bi<55296||bi>57343)&&(ar=bi));break;case 4:ai=Le[Gt+1],jr=Le[Gt+2],ri=Le[Gt+3],(ai&192)===128&&(jr&192)===128&&(ri&192)===128&&(bi=(Vt&15)<<18|(ai&63)<<12|(jr&63)<<6|ri&63,bi>65535&&bi<1114112&&(ar=bi))}}ar===null?(ar=65533,Qr=1):ar>65535&&(ar-=65536,lt.push(ar>>>10&1023|55296),ar=56320|ar&1023),lt.push(ar),Gt+=Qr}return nt(lt)}var Ge=4096;function nt(Le){var xe=Le.length;if(xe<=Ge)return String.fromCharCode.apply(String,Le);for(var Se="",lt=0;ltlt)&&(Se=lt);for(var Gt="",Vt=xe;Vtlt&&(xe=lt),Se<0?(Se+=lt,Se<0&&(Se=0)):Se>lt&&(Se=lt),SeSe)throw new RangeError("Trying to access beyond buffer length")}T.prototype.readUintLE=T.prototype.readUIntLE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe+--Se],Vt=1;Se>0&&(Vt*=256);)Gt+=this[xe+--Se]*Vt;return Gt},T.prototype.readUint8=T.prototype.readUInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]},T.prototype.readUint16LE=T.prototype.readUInt16LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]|this[xe+1]<<8},T.prototype.readUint16BE=T.prototype.readUInt16BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,2,this.length),this[xe]<<8|this[xe+1]},T.prototype.readUint32LE=T.prototype.readUInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),(this[xe]|this[xe+1]<<8|this[xe+2]<<16)+this[xe+3]*16777216},T.prototype.readUint32BE=T.prototype.readUInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]*16777216+(this[xe+1]<<16|this[xe+2]<<8|this[xe+3])},T.prototype.readBigUInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,24),Vt=this[++xe]+this[++xe]*Math.pow(2,8)+this[++xe]*Math.pow(2,16)+lt*Math.pow(2,24);return BigInt(Gt)+(BigInt(Vt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=Se*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe],Vt=this[++xe]*Math.pow(2,24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+lt;return(BigInt(Gt)<>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=this[xe],Vt=1,ar=0;++ar=Vt&&(Gt-=Math.pow(2,8*Se)),Gt},T.prototype.readIntBE=function(xe,Se,lt){xe=xe>>>0,Se=Se>>>0,lt||Rt(xe,Se,this.length);for(var Gt=Se,Vt=1,ar=this[xe+--Gt];Gt>0&&(Vt*=256);)ar+=this[xe+--Gt]*Vt;return Vt*=128,ar>=Vt&&(ar-=Math.pow(2,8*Se)),ar},T.prototype.readInt8=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,1,this.length),this[xe]&128?(255-this[xe]+1)*-1:this[xe]},T.prototype.readInt16LE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe]|this[xe+1]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt16BE=function(xe,Se){xe=xe>>>0,Se||Rt(xe,2,this.length);var lt=this[xe+1]|this[xe]<<8;return lt&32768?lt|4294901760:lt},T.prototype.readInt32LE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]|this[xe+1]<<8|this[xe+2]<<16|this[xe+3]<<24},T.prototype.readInt32BE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),this[xe]<<24|this[xe+1]<<16|this[xe+2]<<8|this[xe+3]},T.prototype.readBigInt64LE=Xe(function(xe){xe=xe>>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=this[xe+4]+this[xe+5]*Math.pow(2,8)+this[xe+6]*Math.pow(2,16)+(lt<<24);return(BigInt(Gt)<>>0,dt(xe,"offset");var Se=this[xe],lt=this[xe+7];(Se===void 0||lt===void 0)&&Ht(xe,this.length-8);var Gt=(Se<<24)+this[++xe]*Math.pow(2,16)+this[++xe]*Math.pow(2,8)+this[++xe];return(BigInt(Gt)<>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!0,23,4)},T.prototype.readFloatBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,4,this.length),_.read(this,xe,!1,23,4)},T.prototype.readDoubleLE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!0,52,8)},T.prototype.readDoubleBE=function(xe,Se){return xe=xe>>>0,Se||Rt(xe,8,this.length),_.read(this,xe,!1,52,8)};function kt(Le,xe,Se,lt,Gt,Vt){if(!T.isBuffer(Le))throw new TypeError('"buffer" argument must be a Buffer instance');if(xe>Gt||xeLe.length)throw new RangeError("Index out of range")}T.prototype.writeUintLE=T.prototype.writeUIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=1,Qr=0;for(this[Se]=xe&255;++Qr>>0,lt=lt>>>0,!Gt){var Vt=Math.pow(2,8*lt)-1;kt(this,xe,Se,lt,Vt,0)}var ar=lt-1,Qr=1;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)this[Se+ar]=xe/Qr&255;return Se+lt},T.prototype.writeUint8=T.prototype.writeUInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,255,0),this[Se]=xe&255,Se+1},T.prototype.writeUint16LE=T.prototype.writeUInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeUint16BE=T.prototype.writeUInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,65535,0),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeUint32LE=T.prototype.writeUInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se+3]=xe>>>24,this[Se+2]=xe>>>16,this[Se+1]=xe>>>8,this[Se]=xe&255,Se+4},T.prototype.writeUint32BE=T.prototype.writeUInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,4294967295,0),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4};function Ct(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt,Vt=Vt>>8,Le[Se++]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,ar=ar>>8,Le[Se++]=ar,Se}function Yt(Le,xe,Se,lt,Gt){Et(xe,lt,Gt,Le,Se,7);var Vt=Number(xe&BigInt(4294967295));Le[Se+7]=Vt,Vt=Vt>>8,Le[Se+6]=Vt,Vt=Vt>>8,Le[Se+5]=Vt,Vt=Vt>>8,Le[Se+4]=Vt;var ar=Number(xe>>BigInt(32)&BigInt(4294967295));return Le[Se+3]=ar,ar=ar>>8,Le[Se+2]=ar,ar=ar>>8,Le[Se+1]=ar,ar=ar>>8,Le[Se]=ar,Se+8}T.prototype.writeBigUInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeBigUInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,BigInt(0),BigInt("0xffffffffffffffff"))}),T.prototype.writeIntLE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=0,Qr=1,ai=0;for(this[Se]=xe&255;++ar>0)-ai&255;return Se+lt},T.prototype.writeIntBE=function(xe,Se,lt,Gt){if(xe=+xe,Se=Se>>>0,!Gt){var Vt=Math.pow(2,8*lt-1);kt(this,xe,Se,lt,Vt-1,-Vt)}var ar=lt-1,Qr=1,ai=0;for(this[Se+ar]=xe&255;--ar>=0&&(Qr*=256);)xe<0&&ai===0&&this[Se+ar+1]!==0&&(ai=1),this[Se+ar]=(xe/Qr>>0)-ai&255;return Se+lt},T.prototype.writeInt8=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,1,127,-128),xe<0&&(xe=255+xe+1),this[Se]=xe&255,Se+1},T.prototype.writeInt16LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe&255,this[Se+1]=xe>>>8,Se+2},T.prototype.writeInt16BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,2,32767,-32768),this[Se]=xe>>>8,this[Se+1]=xe&255,Se+2},T.prototype.writeInt32LE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),this[Se]=xe&255,this[Se+1]=xe>>>8,this[Se+2]=xe>>>16,this[Se+3]=xe>>>24,Se+4},T.prototype.writeInt32BE=function(xe,Se,lt){return xe=+xe,Se=Se>>>0,lt||kt(this,xe,Se,4,2147483647,-2147483648),xe<0&&(xe=4294967295+xe+1),this[Se]=xe>>>24,this[Se+1]=xe>>>16,this[Se+2]=xe>>>8,this[Se+3]=xe&255,Se+4},T.prototype.writeBigInt64LE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Ct(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),T.prototype.writeBigInt64BE=Xe(function(xe){var Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Yt(this,xe,Se,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function xr(Le,xe,Se,lt,Gt,Vt){if(Se+lt>Le.length)throw new RangeError("Index out of range");if(Se<0)throw new RangeError("Index out of range")}function er(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,4,34028234663852886e22,-34028234663852886e22),_.write(Le,xe,Se,lt,23,4),Se+4}T.prototype.writeFloatLE=function(xe,Se,lt){return er(this,xe,Se,!0,lt)},T.prototype.writeFloatBE=function(xe,Se,lt){return er(this,xe,Se,!1,lt)};function Ke(Le,xe,Se,lt,Gt){return xe=+xe,Se=Se>>>0,Gt||xr(Le,xe,Se,8,17976931348623157e292,-17976931348623157e292),_.write(Le,xe,Se,lt,52,8),Se+8}T.prototype.writeDoubleLE=function(xe,Se,lt){return Ke(this,xe,Se,!0,lt)},T.prototype.writeDoubleBE=function(xe,Se,lt){return Ke(this,xe,Se,!1,lt)},T.prototype.copy=function(xe,Se,lt,Gt){if(!T.isBuffer(xe))throw new TypeError("argument should be a Buffer");if(lt||(lt=0),!Gt&&Gt!==0&&(Gt=this.length),Se>=xe.length&&(Se=xe.length),Se||(Se=0),Gt>0&&Gt=this.length)throw new RangeError("Index out of range");if(Gt<0)throw new RangeError("sourceEnd out of bounds");Gt>this.length&&(Gt=this.length),xe.length-Se>>0,lt=lt===void 0?this.length:lt>>>0,xe||(xe=0);var ar;if(typeof xe=="number")for(ar=Se;arMath.pow(2,32)?Gt=Lt(String(Se)):typeof Se=="bigint"&&(Gt=String(Se),(Se>Math.pow(BigInt(2),BigInt(32))||Se<-Math.pow(BigInt(2),BigInt(32)))&&(Gt=Lt(Gt)),Gt+="n"),lt+=" It must be ".concat(xe,". Received ").concat(Gt),lt},RangeError);function Lt(Le){for(var xe="",Se=Le.length,lt=Le[0]==="-"?1:0;Se>=lt+4;Se-=3)xe="_".concat(Le.slice(Se-3,Se)).concat(xe);return"".concat(Le.slice(0,Se)).concat(xe)}function St(Le,xe,Se){dt(xe,"offset"),(Le[xe]===void 0||Le[xe+Se]===void 0)&&Ht(xe,Le.length-(Se+1))}function Et(Le,xe,Se,lt,Gt,Vt){if(Le>Se||Le3?xe===0||xe===BigInt(0)?Qr=">= 0".concat(ar," and < 2").concat(ar," ** ").concat((Vt+1)*8).concat(ar):Qr=">= -(2".concat(ar," ** ").concat((Vt+1)*8-1).concat(ar,") and < 2 ** ")+"".concat((Vt+1)*8-1).concat(ar):Qr=">= ".concat(xe).concat(ar," and <= ").concat(Se).concat(ar),new xt.ERR_OUT_OF_RANGE("value",Qr,Le)}St(lt,Gt,Vt)}function dt(Le,xe){if(typeof Le!="number")throw new xt.ERR_INVALID_ARG_TYPE(xe,"number",Le)}function Ht(Le,xe,Se){throw Math.floor(Le)!==Le?(dt(Le,Se),new xt.ERR_OUT_OF_RANGE(Se||"offset","an integer",Le)):xe<0?new xt.ERR_BUFFER_OUT_OF_BOUNDS:new xt.ERR_OUT_OF_RANGE(Se||"offset",">= ".concat(Se?1:0," and <= ").concat(xe),Le)}var $t=/[^+/0-9A-Za-z-_]/g;function fr(Le){if(Le=Le.split("=")[0],Le=Le.trim().replace($t,""),Le.length<2)return"";for(;Le.length%4!==0;)Le=Le+"=";return Le}function _r(Le,xe){xe=xe||1/0;for(var Se,lt=Le.length,Gt=null,Vt=[],ar=0;ar55295&&Se<57344){if(!Gt){if(Se>56319){(xe-=3)>-1&&Vt.push(239,191,189);continue}else if(ar+1===lt){(xe-=3)>-1&&Vt.push(239,191,189);continue}Gt=Se;continue}if(Se<56320){(xe-=3)>-1&&Vt.push(239,191,189),Gt=Se;continue}Se=(Gt-55296<<10|Se-56320)+65536}else Gt&&(xe-=3)>-1&&Vt.push(239,191,189);if(Gt=null,Se<128){if((xe-=1)<0)break;Vt.push(Se)}else if(Se<2048){if((xe-=2)<0)break;Vt.push(Se>>6|192,Se&63|128)}else if(Se<65536){if((xe-=3)<0)break;Vt.push(Se>>12|224,Se>>6&63|128,Se&63|128)}else if(Se<1114112){if((xe-=4)<0)break;Vt.push(Se>>18|240,Se>>12&63|128,Se>>6&63|128,Se&63|128)}else throw new Error("Invalid code point")}return Vt}function Br(Le){for(var xe=[],Se=0;Se>8,Gt=Se%256,Vt.push(Gt),Vt.push(lt);return Vt}function Nr(Le){return L.toByteArray(fr(Le))}function ut(Le,xe,Se,lt){var Gt;for(Gt=0;Gt=xe.length||Gt>=Le.length);++Gt)xe[Gt+Se]=Le[Gt];return Gt}function Ne(Le,xe){return Le instanceof xe||Le!=null&&Le.constructor!=null&&Le.constructor.name!=null&&Le.constructor.name===xe.name}function Ye(Le){return Le!==Le}var Ve=function(){for(var Le="0123456789abcdef",xe=new Array(256),Se=0;Se<16;++Se)for(var lt=Se*16,Gt=0;Gt<16;++Gt)xe[lt+Gt]=Le[Se]+Le[Gt];return xe}();function Xe(Le){return typeof BigInt=="undefined"?ht:Le}function ht(){throw new Error("BigInt not supported")}},9216:function(i){"use strict";i.exports=l,i.exports.isMobile=l,i.exports.default=l;var a=/(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,o=/CrOS/,s=/android|ipad|playbook|silk/i;function l(u){u||(u={});var c=u.ua;if(!c&&typeof navigator!="undefined"&&(c=navigator.userAgent),c&&c.headers&&typeof c.headers["user-agent"]=="string"&&(c=c.headers["user-agent"]),typeof c!="string")return!1;var f=a.test(c)&&!o.test(c)||!!u.tablet&&s.test(c);return!f&&u.tablet&&u.featureDetect&&navigator&&navigator.maxTouchPoints>1&&c.indexOf("Macintosh")!==-1&&c.indexOf("Safari")!==-1&&(f=!0),f}},6296:function(i,a,o){"use strict";i.exports=h;var s=o(7261),l=o(9977),u=o(1811);function c(d,v){this._controllerNames=Object.keys(d),this._controllerList=this._controllerNames.map(function(x){return d[x]}),this._mode=v,this._active=d[v],this._active||(this._mode="turntable",this._active=d.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var f=c.prototype;f.flush=function(d){for(var v=this._controllerList,x=0;x0)throw new Error("Invalid string. Length must be a multiple of 4");var L=k.indexOf("=");L===-1&&(L=A);var _=L===A?0:4-L%4;return[L,_]}function d(k){var A=h(k),L=A[0],_=A[1];return(L+_)*3/4-_}function v(k,A,L){return(A+L)*3/4-L}function x(k){var A,L=h(k),_=L[0],C=L[1],M=new l(v(k,_,C)),g=0,P=C>0?_-4:_,T;for(T=0;T>16&255,M[g++]=A>>8&255,M[g++]=A&255;return C===2&&(A=s[k.charCodeAt(T)]<<2|s[k.charCodeAt(T+1)]>>4,M[g++]=A&255),C===1&&(A=s[k.charCodeAt(T)]<<10|s[k.charCodeAt(T+1)]<<4|s[k.charCodeAt(T+2)]>>2,M[g++]=A>>8&255,M[g++]=A&255),M}function b(k){return o[k>>18&63]+o[k>>12&63]+o[k>>6&63]+o[k&63]}function p(k,A,L){for(var _,C=[],M=A;MP?P:g+M));return _===1?(A=k[L-1],C.push(o[A>>2]+o[A<<4&63]+"==")):_===2&&(A=(k[L-2]<<8)+k[L-1],C.push(o[A>>10]+o[A>>4&63]+o[A<<2&63]+"=")),C.join("")}},3865:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).add(c[0].mul(u[1])),u[1].mul(c[1]))}},1318:function(i){"use strict";i.exports=a;function a(o,s){return o[0].mul(s[1]).cmp(s[0].mul(o[1]))}},8697:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]),u[1].mul(c[0]))}},7842:function(i,a,o){"use strict";var s=o(6330),l=o(1533),u=o(2651),c=o(6768),f=o(869),h=o(8697);i.exports=d;function d(v,x){if(s(v))return x?h(v,d(x)):[v[0].clone(),v[1].clone()];var b=0,p,E;if(l(v))p=v.clone();else if(typeof v=="string")p=c(v);else{if(v===0)return[u(0),u(1)];if(v===Math.floor(v))p=u(v);else{for(;v!==Math.floor(v);)v=v*Math.pow(2,256),b-=256;p=u(v)}}if(s(x))p.mul(x[1]),E=x[0].clone();else if(l(x))E=x.clone();else if(typeof x=="string")E=c(x);else if(!x)E=u(1);else if(x===Math.floor(x))E=u(x);else{for(;x!==Math.floor(x);)x=x*Math.pow(2,256),b+=256;E=u(x)}return b>0?p=p.ushln(b):b<0&&(E=E.ushln(-b)),f(p,E)}},6330:function(i,a,o){"use strict";var s=o(1533);i.exports=l;function l(u){return Array.isArray(u)&&u.length===2&&s(u[0])&&s(u[1])}},5716:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u.cmp(new s(0))}},1369:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){var c=u.length,f=u.words,h=0;if(c===1)h=f[0];else if(c===2)h=f[0]+f[1]*67108864;else for(var d=0;d20?52:h+32}},1533:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return u&&typeof u=="object"&&!!u.words}},2651:function(i,a,o){"use strict";var s=o(6859),l=o(2361);i.exports=u;function u(c){var f=l.exponent(c);return f<52?new s(c):new s(c*Math.pow(2,52-f)).ushln(f-52)}},869:function(i,a,o){"use strict";var s=o(2651),l=o(5716);i.exports=u;function u(c,f){var h=l(c),d=l(f);if(h===0)return[s(0),s(1)];if(d===0)return[s(0),s(0)];d<0&&(c=c.neg(),f=f.neg());var v=c.gcd(f);return v.cmpn(1)?[c.div(v),f.div(v)]:[c,f]}},6768:function(i,a,o){"use strict";var s=o(6859);i.exports=l;function l(u){return new s(u)}},6504:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[0]),u[1].mul(c[1]))}},7721:function(i,a,o){"use strict";var s=o(5716);i.exports=l;function l(u){return s(u[0])*s(u[1])}},5572:function(i,a,o){"use strict";var s=o(869);i.exports=l;function l(u,c){return s(u[0].mul(c[1]).sub(u[1].mul(c[0])),u[1].mul(c[1]))}},946:function(i,a,o){"use strict";var s=o(1369),l=o(4025);i.exports=u;function u(c){var f=c[0],h=c[1];if(f.cmpn(0)===0)return 0;var d=f.abs().divmod(h.abs()),v=d.div,x=s(v),b=d.mod,p=f.negative!==h.negative?-1:1;if(b.cmpn(0)===0)return p*x;if(x){var E=l(x)+4,k=s(b.ushln(E).divRound(h));return p*(x+k*Math.pow(2,-E))}else{var A=h.bitLength()-b.bitLength()+53,k=s(b.ushln(A).divRound(h));return A<1023?p*k*Math.pow(2,-A):(k*=Math.pow(2,-1023),p*k*Math.pow(2,1023-A))}}},2478:function(i){"use strict";function a(f,h,d,v,x){for(var b=x+1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k>=0?(b=p,x=p-1):v=p+1}return b}function o(f,h,d,v,x){for(var b=x+1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k>0?(b=p,x=p-1):v=p+1}return b}function s(f,h,d,v,x){for(var b=v-1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k<0?(b=p,v=p+1):x=p-1}return b}function l(f,h,d,v,x){for(var b=v-1;v<=x;){var p=v+x>>>1,E=f[p],k=d!==void 0?d(E,h):E-h;k<=0?(b=p,v=p+1):x=p-1}return b}function u(f,h,d,v,x){for(;v<=x;){var b=v+x>>>1,p=f[b],E=d!==void 0?d(p,h):p-h;if(E===0)return b;E<=0?v=b+1:x=b-1}return-1}function c(f,h,d,v,x,b){return typeof d=="function"?b(f,h,d,v===void 0?0:v|0,x===void 0?f.length-1:x|0):b(f,h,void 0,d===void 0?0:d|0,v===void 0?f.length-1:v|0)}i.exports={ge:function(f,h,d,v,x){return c(f,h,d,v,x,a)},gt:function(f,h,d,v,x){return c(f,h,d,v,x,o)},lt:function(f,h,d,v,x){return c(f,h,d,v,x,s)},le:function(f,h,d,v,x){return c(f,h,d,v,x,l)},eq:function(f,h,d,v,x){return c(f,h,d,v,x,u)}}},8828:function(i,a){"use strict";"use restrict";var o=32;a.INT_BITS=o,a.INT_MAX=2147483647,a.INT_MIN=-1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},6859:function(i,a,o){i=o.nmd(i),function(s,l){"use strict";function u(G,N){if(!G)throw new Error(N||"Assertion failed")}function c(G,N){G.super_=N;var W=function(){};W.prototype=N.prototype,G.prototype=new W,G.prototype.constructor=G}function f(G,N,W){if(f.isBN(G))return G;this.negative=0,this.words=null,this.length=0,this.red=null,G!==null&&((N==="le"||N==="be")&&(W=N,N=10),this._init(G||0,N||10,W||"be"))}typeof s=="object"?s.exports=f:l.BN=f,f.BN=f,f.wordSize=26;var h;try{typeof window!="undefined"&&typeof window.Buffer!="undefined"?h=window.Buffer:h=o(7790).Buffer}catch(G){}f.isBN=function(N){return N instanceof f?!0:N!==null&&typeof N=="object"&&N.constructor.wordSize===f.wordSize&&Array.isArray(N.words)},f.max=function(N,W){return N.cmp(W)>0?N:W},f.min=function(N,W){return N.cmp(W)<0?N:W},f.prototype._init=function(N,W,re){if(typeof N=="number")return this._initNumber(N,W,re);if(typeof N=="object")return this._initArray(N,W,re);W==="hex"&&(W=16),u(W===(W|0)&&W>=2&&W<=36),N=N.toString().replace(/\s+/g,"");var ae=0;N[0]==="-"&&(ae++,this.negative=1),ae=0;ae-=3)Me=N[ae]|N[ae-1]<<8|N[ae-2]<<16,this.words[_e]|=Me<>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);else if(re==="le")for(ae=0,_e=0;ae>>26-ke&67108863,ke+=24,ke>=26&&(ke-=26,_e++);return this.strip()};function d(G,N){var W=G.charCodeAt(N);return W>=65&&W<=70?W-55:W>=97&&W<=102?W-87:W-48&15}function v(G,N,W){var re=d(G,W);return W-1>=N&&(re|=d(G,W-1)<<4),re}f.prototype._parseHex=function(N,W,re){this.length=Math.ceil((N.length-W)/6),this.words=new Array(this.length);for(var ae=0;ae=W;ae-=2)ke=v(N,W,ae)<<_e,this.words[Me]|=ke&67108863,_e>=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8;else{var ge=N.length-W;for(ae=ge%2===0?W+1:W;ae=18?(_e-=18,Me+=1,this.words[Me]|=ke>>>26):_e+=8}this.strip()};function x(G,N,W,re){for(var ae=0,_e=Math.min(G.length,W),Me=N;Me<_e;Me++){var ke=G.charCodeAt(Me)-48;ae*=re,ke>=49?ae+=ke-49+10:ke>=17?ae+=ke-17+10:ae+=ke}return ae}f.prototype._parseBase=function(N,W,re){this.words=[0],this.length=1;for(var ae=0,_e=1;_e<=67108863;_e*=W)ae++;ae--,_e=_e/W|0;for(var Me=N.length-re,ke=Me%ae,ge=Math.min(Me,Me-ke)+re,ie=0,Te=re;Te1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},f.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},f.prototype.inspect=function(){return(this.red?""};var b=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],p=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],E=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];f.prototype.toString=function(N,W){N=N||10,W=W|0||1;var re;if(N===16||N==="hex"){re="";for(var ae=0,_e=0,Me=0;Me>>24-ae&16777215,_e!==0||Me!==this.length-1?re=b[6-ge.length]+ge+re:re=ge+re,ae+=2,ae>=26&&(ae-=26,Me--)}for(_e!==0&&(re=_e.toString(16)+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}if(N===(N|0)&&N>=2&&N<=36){var ie=p[N],Te=E[N];re="";var Ee=this.clone();for(Ee.negative=0;!Ee.isZero();){var Ae=Ee.modn(Te).toString(N);Ee=Ee.idivn(Te),Ee.isZero()?re=Ae+re:re=b[ie-Ae.length]+Ae+re}for(this.isZero()&&(re="0"+re);re.length%W!==0;)re="0"+re;return this.negative!==0&&(re="-"+re),re}u(!1,"Base should be between 2 and 36")},f.prototype.toNumber=function(){var N=this.words[0];return this.length===2?N+=this.words[1]*67108864:this.length===3&&this.words[2]===1?N+=4503599627370496+this.words[1]*67108864:this.length>2&&u(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-N:N},f.prototype.toJSON=function(){return this.toString(16)},f.prototype.toBuffer=function(N,W){return u(typeof h!="undefined"),this.toArrayLike(h,N,W)},f.prototype.toArray=function(N,W){return this.toArrayLike(Array,N,W)},f.prototype.toArrayLike=function(N,W,re){var ae=this.byteLength(),_e=re||Math.max(1,ae);u(ae<=_e,"byte array longer than desired length"),u(_e>0,"Requested array length <= 0"),this.strip();var Me=W==="le",ke=new N(_e),ge,ie,Te=this.clone();if(Me){for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[ie]=ge;for(;ie<_e;ie++)ke[ie]=0}else{for(ie=0;ie<_e-ae;ie++)ke[ie]=0;for(ie=0;!Te.isZero();ie++)ge=Te.andln(255),Te.iushrn(8),ke[_e-ie-1]=ge}return ke},Math.clz32?f.prototype._countBits=function(N){return 32-Math.clz32(N)}:f.prototype._countBits=function(N){var W=N,re=0;return W>=4096&&(re+=13,W>>>=13),W>=64&&(re+=7,W>>>=7),W>=8&&(re+=4,W>>>=4),W>=2&&(re+=2,W>>>=2),re+W},f.prototype._zeroBits=function(N){if(N===0)return 26;var W=N,re=0;return W&8191||(re+=13,W>>>=13),W&127||(re+=7,W>>>=7),W&15||(re+=4,W>>>=4),W&3||(re+=2,W>>>=2),W&1||re++,re},f.prototype.bitLength=function(){var N=this.words[this.length-1],W=this._countBits(N);return(this.length-1)*26+W};function k(G){for(var N=new Array(G.bitLength()),W=0;W>>ae}return N}f.prototype.zeroBits=function(){if(this.isZero())return 0;for(var N=0,W=0;WN.length?this.clone().ior(N):N.clone().ior(this)},f.prototype.uor=function(N){return this.length>N.length?this.clone().iuor(N):N.clone().iuor(this)},f.prototype.iuand=function(N){var W;this.length>N.length?W=N:W=this;for(var re=0;reN.length?this.clone().iand(N):N.clone().iand(this)},f.prototype.uand=function(N){return this.length>N.length?this.clone().iuand(N):N.clone().iuand(this)},f.prototype.iuxor=function(N){var W,re;this.length>N.length?(W=this,re=N):(W=N,re=this);for(var ae=0;aeN.length?this.clone().ixor(N):N.clone().ixor(this)},f.prototype.uxor=function(N){return this.length>N.length?this.clone().iuxor(N):N.clone().iuxor(this)},f.prototype.inotn=function(N){u(typeof N=="number"&&N>=0);var W=Math.ceil(N/26)|0,re=N%26;this._expand(W),re>0&&W--;for(var ae=0;ae0&&(this.words[ae]=~this.words[ae]&67108863>>26-re),this.strip()},f.prototype.notn=function(N){return this.clone().inotn(N)},f.prototype.setn=function(N,W){u(typeof N=="number"&&N>=0);var re=N/26|0,ae=N%26;return this._expand(re+1),W?this.words[re]=this.words[re]|1<N.length?(re=this,ae=N):(re=N,ae=this);for(var _e=0,Me=0;Me>>26;for(;_e!==0&&Me>>26;if(this.length=re.length,_e!==0)this.words[this.length]=_e,this.length++;else if(re!==this)for(;MeN.length?this.clone().iadd(N):N.clone().iadd(this)},f.prototype.isub=function(N){if(N.negative!==0){N.negative=0;var W=this.iadd(N);return N.negative=1,W._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(N),this.negative=1,this._normSign();var re=this.cmp(N);if(re===0)return this.negative=0,this.length=1,this.words[0]=0,this;var ae,_e;re>0?(ae=this,_e=N):(ae=N,_e=this);for(var Me=0,ke=0;ke<_e.length;ke++)W=(ae.words[ke]|0)-(_e.words[ke]|0)+Me,Me=W>>26,this.words[ke]=W&67108863;for(;Me!==0&&ke>26,this.words[ke]=W&67108863;if(Me===0&&ke>>26,Ee=ge&67108863,Ae=Math.min(ie,N.length-1),ze=Math.max(0,ie-G.length+1);ze<=Ae;ze++){var Ce=ie-ze|0;ae=G.words[Ce]|0,_e=N.words[ze]|0,Me=ae*_e+Ee,Te+=Me/67108864|0,Ee=Me&67108863}W.words[ie]=Ee|0,ge=Te|0}return ge!==0?W.words[ie]=ge|0:W.length--,W.strip()}var L=function(N,W,re){var ae=N.words,_e=W.words,Me=re.words,ke=0,ge,ie,Te,Ee=ae[0]|0,Ae=Ee&8191,ze=Ee>>>13,Ce=ae[1]|0,me=Ce&8191,Re=Ce>>>13,ce=ae[2]|0,Ge=ce&8191,nt=ce>>>13,ct=ae[3]|0,qt=ct&8191,rt=ct>>>13,ot=ae[4]|0,Rt=ot&8191,kt=ot>>>13,Ct=ae[5]|0,Yt=Ct&8191,xr=Ct>>>13,er=ae[6]|0,Ke=er&8191,xt=er>>>13,bt=ae[7]|0,Lt=bt&8191,St=bt>>>13,Et=ae[8]|0,dt=Et&8191,Ht=Et>>>13,$t=ae[9]|0,fr=$t&8191,_r=$t>>>13,Br=_e[0]|0,Or=Br&8191,Nr=Br>>>13,ut=_e[1]|0,Ne=ut&8191,Ye=ut>>>13,Ve=_e[2]|0,Xe=Ve&8191,ht=Ve>>>13,Le=_e[3]|0,xe=Le&8191,Se=Le>>>13,lt=_e[4]|0,Gt=lt&8191,Vt=lt>>>13,ar=_e[5]|0,Qr=ar&8191,ai=ar>>>13,jr=_e[6]|0,ri=jr&8191,bi=jr>>>13,nn=_e[7]|0,Wi=nn&8191,Ni=nn>>>13,_n=_e[8]|0,$i=_n&8191,zn=_n>>>13,Wn=_e[9]|0,It=Wn&8191,ft=Wn>>>13;re.negative=N.negative^W.negative,re.length=19,ge=Math.imul(Ae,Or),ie=Math.imul(Ae,Nr),ie=ie+Math.imul(ze,Or)|0,Te=Math.imul(ze,Nr);var jt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jt>>>26)|0,jt&=67108863,ge=Math.imul(me,Or),ie=Math.imul(me,Nr),ie=ie+Math.imul(Re,Or)|0,Te=Math.imul(Re,Nr),ge=ge+Math.imul(Ae,Ne)|0,ie=ie+Math.imul(Ae,Ye)|0,ie=ie+Math.imul(ze,Ne)|0,Te=Te+Math.imul(ze,Ye)|0;var Zt=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zt>>>26)|0,Zt&=67108863,ge=Math.imul(Ge,Or),ie=Math.imul(Ge,Nr),ie=ie+Math.imul(nt,Or)|0,Te=Math.imul(nt,Nr),ge=ge+Math.imul(me,Ne)|0,ie=ie+Math.imul(me,Ye)|0,ie=ie+Math.imul(Re,Ne)|0,Te=Te+Math.imul(Re,Ye)|0,ge=ge+Math.imul(Ae,Xe)|0,ie=ie+Math.imul(Ae,ht)|0,ie=ie+Math.imul(ze,Xe)|0,Te=Te+Math.imul(ze,ht)|0;var yr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(yr>>>26)|0,yr&=67108863,ge=Math.imul(qt,Or),ie=Math.imul(qt,Nr),ie=ie+Math.imul(rt,Or)|0,Te=Math.imul(rt,Nr),ge=ge+Math.imul(Ge,Ne)|0,ie=ie+Math.imul(Ge,Ye)|0,ie=ie+Math.imul(nt,Ne)|0,Te=Te+Math.imul(nt,Ye)|0,ge=ge+Math.imul(me,Xe)|0,ie=ie+Math.imul(me,ht)|0,ie=ie+Math.imul(Re,Xe)|0,Te=Te+Math.imul(Re,ht)|0,ge=ge+Math.imul(Ae,xe)|0,ie=ie+Math.imul(Ae,Se)|0,ie=ie+Math.imul(ze,xe)|0,Te=Te+Math.imul(ze,Se)|0;var Fr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,ge=Math.imul(Rt,Or),ie=Math.imul(Rt,Nr),ie=ie+Math.imul(kt,Or)|0,Te=Math.imul(kt,Nr),ge=ge+Math.imul(qt,Ne)|0,ie=ie+Math.imul(qt,Ye)|0,ie=ie+Math.imul(rt,Ne)|0,Te=Te+Math.imul(rt,Ye)|0,ge=ge+Math.imul(Ge,Xe)|0,ie=ie+Math.imul(Ge,ht)|0,ie=ie+Math.imul(nt,Xe)|0,Te=Te+Math.imul(nt,ht)|0,ge=ge+Math.imul(me,xe)|0,ie=ie+Math.imul(me,Se)|0,ie=ie+Math.imul(Re,xe)|0,Te=Te+Math.imul(Re,Se)|0,ge=ge+Math.imul(Ae,Gt)|0,ie=ie+Math.imul(Ae,Vt)|0,ie=ie+Math.imul(ze,Gt)|0,Te=Te+Math.imul(ze,Vt)|0;var Zr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,ge=Math.imul(Yt,Or),ie=Math.imul(Yt,Nr),ie=ie+Math.imul(xr,Or)|0,Te=Math.imul(xr,Nr),ge=ge+Math.imul(Rt,Ne)|0,ie=ie+Math.imul(Rt,Ye)|0,ie=ie+Math.imul(kt,Ne)|0,Te=Te+Math.imul(kt,Ye)|0,ge=ge+Math.imul(qt,Xe)|0,ie=ie+Math.imul(qt,ht)|0,ie=ie+Math.imul(rt,Xe)|0,Te=Te+Math.imul(rt,ht)|0,ge=ge+Math.imul(Ge,xe)|0,ie=ie+Math.imul(Ge,Se)|0,ie=ie+Math.imul(nt,xe)|0,Te=Te+Math.imul(nt,Se)|0,ge=ge+Math.imul(me,Gt)|0,ie=ie+Math.imul(me,Vt)|0,ie=ie+Math.imul(Re,Gt)|0,Te=Te+Math.imul(Re,Vt)|0,ge=ge+Math.imul(Ae,Qr)|0,ie=ie+Math.imul(Ae,ai)|0,ie=ie+Math.imul(ze,Qr)|0,Te=Te+Math.imul(ze,ai)|0;var Vr=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Vr>>>26)|0,Vr&=67108863,ge=Math.imul(Ke,Or),ie=Math.imul(Ke,Nr),ie=ie+Math.imul(xt,Or)|0,Te=Math.imul(xt,Nr),ge=ge+Math.imul(Yt,Ne)|0,ie=ie+Math.imul(Yt,Ye)|0,ie=ie+Math.imul(xr,Ne)|0,Te=Te+Math.imul(xr,Ye)|0,ge=ge+Math.imul(Rt,Xe)|0,ie=ie+Math.imul(Rt,ht)|0,ie=ie+Math.imul(kt,Xe)|0,Te=Te+Math.imul(kt,ht)|0,ge=ge+Math.imul(qt,xe)|0,ie=ie+Math.imul(qt,Se)|0,ie=ie+Math.imul(rt,xe)|0,Te=Te+Math.imul(rt,Se)|0,ge=ge+Math.imul(Ge,Gt)|0,ie=ie+Math.imul(Ge,Vt)|0,ie=ie+Math.imul(nt,Gt)|0,Te=Te+Math.imul(nt,Vt)|0,ge=ge+Math.imul(me,Qr)|0,ie=ie+Math.imul(me,ai)|0,ie=ie+Math.imul(Re,Qr)|0,Te=Te+Math.imul(Re,ai)|0,ge=ge+Math.imul(Ae,ri)|0,ie=ie+Math.imul(Ae,bi)|0,ie=ie+Math.imul(ze,ri)|0,Te=Te+Math.imul(ze,bi)|0;var gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(gi>>>26)|0,gi&=67108863,ge=Math.imul(Lt,Or),ie=Math.imul(Lt,Nr),ie=ie+Math.imul(St,Or)|0,Te=Math.imul(St,Nr),ge=ge+Math.imul(Ke,Ne)|0,ie=ie+Math.imul(Ke,Ye)|0,ie=ie+Math.imul(xt,Ne)|0,Te=Te+Math.imul(xt,Ye)|0,ge=ge+Math.imul(Yt,Xe)|0,ie=ie+Math.imul(Yt,ht)|0,ie=ie+Math.imul(xr,Xe)|0,Te=Te+Math.imul(xr,ht)|0,ge=ge+Math.imul(Rt,xe)|0,ie=ie+Math.imul(Rt,Se)|0,ie=ie+Math.imul(kt,xe)|0,Te=Te+Math.imul(kt,Se)|0,ge=ge+Math.imul(qt,Gt)|0,ie=ie+Math.imul(qt,Vt)|0,ie=ie+Math.imul(rt,Gt)|0,Te=Te+Math.imul(rt,Vt)|0,ge=ge+Math.imul(Ge,Qr)|0,ie=ie+Math.imul(Ge,ai)|0,ie=ie+Math.imul(nt,Qr)|0,Te=Te+Math.imul(nt,ai)|0,ge=ge+Math.imul(me,ri)|0,ie=ie+Math.imul(me,bi)|0,ie=ie+Math.imul(Re,ri)|0,Te=Te+Math.imul(Re,bi)|0,ge=ge+Math.imul(Ae,Wi)|0,ie=ie+Math.imul(Ae,Ni)|0,ie=ie+Math.imul(ze,Wi)|0,Te=Te+Math.imul(ze,Ni)|0;var Si=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Si>>>26)|0,Si&=67108863,ge=Math.imul(dt,Or),ie=Math.imul(dt,Nr),ie=ie+Math.imul(Ht,Or)|0,Te=Math.imul(Ht,Nr),ge=ge+Math.imul(Lt,Ne)|0,ie=ie+Math.imul(Lt,Ye)|0,ie=ie+Math.imul(St,Ne)|0,Te=Te+Math.imul(St,Ye)|0,ge=ge+Math.imul(Ke,Xe)|0,ie=ie+Math.imul(Ke,ht)|0,ie=ie+Math.imul(xt,Xe)|0,Te=Te+Math.imul(xt,ht)|0,ge=ge+Math.imul(Yt,xe)|0,ie=ie+Math.imul(Yt,Se)|0,ie=ie+Math.imul(xr,xe)|0,Te=Te+Math.imul(xr,Se)|0,ge=ge+Math.imul(Rt,Gt)|0,ie=ie+Math.imul(Rt,Vt)|0,ie=ie+Math.imul(kt,Gt)|0,Te=Te+Math.imul(kt,Vt)|0,ge=ge+Math.imul(qt,Qr)|0,ie=ie+Math.imul(qt,ai)|0,ie=ie+Math.imul(rt,Qr)|0,Te=Te+Math.imul(rt,ai)|0,ge=ge+Math.imul(Ge,ri)|0,ie=ie+Math.imul(Ge,bi)|0,ie=ie+Math.imul(nt,ri)|0,Te=Te+Math.imul(nt,bi)|0,ge=ge+Math.imul(me,Wi)|0,ie=ie+Math.imul(me,Ni)|0,ie=ie+Math.imul(Re,Wi)|0,Te=Te+Math.imul(Re,Ni)|0,ge=ge+Math.imul(Ae,$i)|0,ie=ie+Math.imul(Ae,zn)|0,ie=ie+Math.imul(ze,$i)|0,Te=Te+Math.imul(ze,zn)|0;var Mi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Mi>>>26)|0,Mi&=67108863,ge=Math.imul(fr,Or),ie=Math.imul(fr,Nr),ie=ie+Math.imul(_r,Or)|0,Te=Math.imul(_r,Nr),ge=ge+Math.imul(dt,Ne)|0,ie=ie+Math.imul(dt,Ye)|0,ie=ie+Math.imul(Ht,Ne)|0,Te=Te+Math.imul(Ht,Ye)|0,ge=ge+Math.imul(Lt,Xe)|0,ie=ie+Math.imul(Lt,ht)|0,ie=ie+Math.imul(St,Xe)|0,Te=Te+Math.imul(St,ht)|0,ge=ge+Math.imul(Ke,xe)|0,ie=ie+Math.imul(Ke,Se)|0,ie=ie+Math.imul(xt,xe)|0,Te=Te+Math.imul(xt,Se)|0,ge=ge+Math.imul(Yt,Gt)|0,ie=ie+Math.imul(Yt,Vt)|0,ie=ie+Math.imul(xr,Gt)|0,Te=Te+Math.imul(xr,Vt)|0,ge=ge+Math.imul(Rt,Qr)|0,ie=ie+Math.imul(Rt,ai)|0,ie=ie+Math.imul(kt,Qr)|0,Te=Te+Math.imul(kt,ai)|0,ge=ge+Math.imul(qt,ri)|0,ie=ie+Math.imul(qt,bi)|0,ie=ie+Math.imul(rt,ri)|0,Te=Te+Math.imul(rt,bi)|0,ge=ge+Math.imul(Ge,Wi)|0,ie=ie+Math.imul(Ge,Ni)|0,ie=ie+Math.imul(nt,Wi)|0,Te=Te+Math.imul(nt,Ni)|0,ge=ge+Math.imul(me,$i)|0,ie=ie+Math.imul(me,zn)|0,ie=ie+Math.imul(Re,$i)|0,Te=Te+Math.imul(Re,zn)|0,ge=ge+Math.imul(Ae,It)|0,ie=ie+Math.imul(Ae,ft)|0,ie=ie+Math.imul(ze,It)|0,Te=Te+Math.imul(ze,ft)|0;var Pi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Pi>>>26)|0,Pi&=67108863,ge=Math.imul(fr,Ne),ie=Math.imul(fr,Ye),ie=ie+Math.imul(_r,Ne)|0,Te=Math.imul(_r,Ye),ge=ge+Math.imul(dt,Xe)|0,ie=ie+Math.imul(dt,ht)|0,ie=ie+Math.imul(Ht,Xe)|0,Te=Te+Math.imul(Ht,ht)|0,ge=ge+Math.imul(Lt,xe)|0,ie=ie+Math.imul(Lt,Se)|0,ie=ie+Math.imul(St,xe)|0,Te=Te+Math.imul(St,Se)|0,ge=ge+Math.imul(Ke,Gt)|0,ie=ie+Math.imul(Ke,Vt)|0,ie=ie+Math.imul(xt,Gt)|0,Te=Te+Math.imul(xt,Vt)|0,ge=ge+Math.imul(Yt,Qr)|0,ie=ie+Math.imul(Yt,ai)|0,ie=ie+Math.imul(xr,Qr)|0,Te=Te+Math.imul(xr,ai)|0,ge=ge+Math.imul(Rt,ri)|0,ie=ie+Math.imul(Rt,bi)|0,ie=ie+Math.imul(kt,ri)|0,Te=Te+Math.imul(kt,bi)|0,ge=ge+Math.imul(qt,Wi)|0,ie=ie+Math.imul(qt,Ni)|0,ie=ie+Math.imul(rt,Wi)|0,Te=Te+Math.imul(rt,Ni)|0,ge=ge+Math.imul(Ge,$i)|0,ie=ie+Math.imul(Ge,zn)|0,ie=ie+Math.imul(nt,$i)|0,Te=Te+Math.imul(nt,zn)|0,ge=ge+Math.imul(me,It)|0,ie=ie+Math.imul(me,ft)|0,ie=ie+Math.imul(Re,It)|0,Te=Te+Math.imul(Re,ft)|0;var Gi=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Gi>>>26)|0,Gi&=67108863,ge=Math.imul(fr,Xe),ie=Math.imul(fr,ht),ie=ie+Math.imul(_r,Xe)|0,Te=Math.imul(_r,ht),ge=ge+Math.imul(dt,xe)|0,ie=ie+Math.imul(dt,Se)|0,ie=ie+Math.imul(Ht,xe)|0,Te=Te+Math.imul(Ht,Se)|0,ge=ge+Math.imul(Lt,Gt)|0,ie=ie+Math.imul(Lt,Vt)|0,ie=ie+Math.imul(St,Gt)|0,Te=Te+Math.imul(St,Vt)|0,ge=ge+Math.imul(Ke,Qr)|0,ie=ie+Math.imul(Ke,ai)|0,ie=ie+Math.imul(xt,Qr)|0,Te=Te+Math.imul(xt,ai)|0,ge=ge+Math.imul(Yt,ri)|0,ie=ie+Math.imul(Yt,bi)|0,ie=ie+Math.imul(xr,ri)|0,Te=Te+Math.imul(xr,bi)|0,ge=ge+Math.imul(Rt,Wi)|0,ie=ie+Math.imul(Rt,Ni)|0,ie=ie+Math.imul(kt,Wi)|0,Te=Te+Math.imul(kt,Ni)|0,ge=ge+Math.imul(qt,$i)|0,ie=ie+Math.imul(qt,zn)|0,ie=ie+Math.imul(rt,$i)|0,Te=Te+Math.imul(rt,zn)|0,ge=ge+Math.imul(Ge,It)|0,ie=ie+Math.imul(Ge,ft)|0,ie=ie+Math.imul(nt,It)|0,Te=Te+Math.imul(nt,ft)|0;var Ki=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ki>>>26)|0,Ki&=67108863,ge=Math.imul(fr,xe),ie=Math.imul(fr,Se),ie=ie+Math.imul(_r,xe)|0,Te=Math.imul(_r,Se),ge=ge+Math.imul(dt,Gt)|0,ie=ie+Math.imul(dt,Vt)|0,ie=ie+Math.imul(Ht,Gt)|0,Te=Te+Math.imul(Ht,Vt)|0,ge=ge+Math.imul(Lt,Qr)|0,ie=ie+Math.imul(Lt,ai)|0,ie=ie+Math.imul(St,Qr)|0,Te=Te+Math.imul(St,ai)|0,ge=ge+Math.imul(Ke,ri)|0,ie=ie+Math.imul(Ke,bi)|0,ie=ie+Math.imul(xt,ri)|0,Te=Te+Math.imul(xt,bi)|0,ge=ge+Math.imul(Yt,Wi)|0,ie=ie+Math.imul(Yt,Ni)|0,ie=ie+Math.imul(xr,Wi)|0,Te=Te+Math.imul(xr,Ni)|0,ge=ge+Math.imul(Rt,$i)|0,ie=ie+Math.imul(Rt,zn)|0,ie=ie+Math.imul(kt,$i)|0,Te=Te+Math.imul(kt,zn)|0,ge=ge+Math.imul(qt,It)|0,ie=ie+Math.imul(qt,ft)|0,ie=ie+Math.imul(rt,It)|0,Te=Te+Math.imul(rt,ft)|0;var ka=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(ka>>>26)|0,ka&=67108863,ge=Math.imul(fr,Gt),ie=Math.imul(fr,Vt),ie=ie+Math.imul(_r,Gt)|0,Te=Math.imul(_r,Vt),ge=ge+Math.imul(dt,Qr)|0,ie=ie+Math.imul(dt,ai)|0,ie=ie+Math.imul(Ht,Qr)|0,Te=Te+Math.imul(Ht,ai)|0,ge=ge+Math.imul(Lt,ri)|0,ie=ie+Math.imul(Lt,bi)|0,ie=ie+Math.imul(St,ri)|0,Te=Te+Math.imul(St,bi)|0,ge=ge+Math.imul(Ke,Wi)|0,ie=ie+Math.imul(Ke,Ni)|0,ie=ie+Math.imul(xt,Wi)|0,Te=Te+Math.imul(xt,Ni)|0,ge=ge+Math.imul(Yt,$i)|0,ie=ie+Math.imul(Yt,zn)|0,ie=ie+Math.imul(xr,$i)|0,Te=Te+Math.imul(xr,zn)|0,ge=ge+Math.imul(Rt,It)|0,ie=ie+Math.imul(Rt,ft)|0,ie=ie+Math.imul(kt,It)|0,Te=Te+Math.imul(kt,ft)|0;var jn=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jn>>>26)|0,jn&=67108863,ge=Math.imul(fr,Qr),ie=Math.imul(fr,ai),ie=ie+Math.imul(_r,Qr)|0,Te=Math.imul(_r,ai),ge=ge+Math.imul(dt,ri)|0,ie=ie+Math.imul(dt,bi)|0,ie=ie+Math.imul(Ht,ri)|0,Te=Te+Math.imul(Ht,bi)|0,ge=ge+Math.imul(Lt,Wi)|0,ie=ie+Math.imul(Lt,Ni)|0,ie=ie+Math.imul(St,Wi)|0,Te=Te+Math.imul(St,Ni)|0,ge=ge+Math.imul(Ke,$i)|0,ie=ie+Math.imul(Ke,zn)|0,ie=ie+Math.imul(xt,$i)|0,Te=Te+Math.imul(xt,zn)|0,ge=ge+Math.imul(Yt,It)|0,ie=ie+Math.imul(Yt,ft)|0,ie=ie+Math.imul(xr,It)|0,Te=Te+Math.imul(xr,ft)|0;var la=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(la>>>26)|0,la&=67108863,ge=Math.imul(fr,ri),ie=Math.imul(fr,bi),ie=ie+Math.imul(_r,ri)|0,Te=Math.imul(_r,bi),ge=ge+Math.imul(dt,Wi)|0,ie=ie+Math.imul(dt,Ni)|0,ie=ie+Math.imul(Ht,Wi)|0,Te=Te+Math.imul(Ht,Ni)|0,ge=ge+Math.imul(Lt,$i)|0,ie=ie+Math.imul(Lt,zn)|0,ie=ie+Math.imul(St,$i)|0,Te=Te+Math.imul(St,zn)|0,ge=ge+Math.imul(Ke,It)|0,ie=ie+Math.imul(Ke,ft)|0,ie=ie+Math.imul(xt,It)|0,Te=Te+Math.imul(xt,ft)|0;var Fa=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,ge=Math.imul(fr,Wi),ie=Math.imul(fr,Ni),ie=ie+Math.imul(_r,Wi)|0,Te=Math.imul(_r,Ni),ge=ge+Math.imul(dt,$i)|0,ie=ie+Math.imul(dt,zn)|0,ie=ie+Math.imul(Ht,$i)|0,Te=Te+Math.imul(Ht,zn)|0,ge=ge+Math.imul(Lt,It)|0,ie=ie+Math.imul(Lt,ft)|0,ie=ie+Math.imul(St,It)|0,Te=Te+Math.imul(St,ft)|0;var Ra=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(Ra>>>26)|0,Ra&=67108863,ge=Math.imul(fr,$i),ie=Math.imul(fr,zn),ie=ie+Math.imul(_r,$i)|0,Te=Math.imul(_r,zn),ge=ge+Math.imul(dt,It)|0,ie=ie+Math.imul(dt,ft)|0,ie=ie+Math.imul(Ht,It)|0,Te=Te+Math.imul(Ht,ft)|0;var jo=(ke+ge|0)+((ie&8191)<<13)|0;ke=(Te+(ie>>>13)|0)+(jo>>>26)|0,jo&=67108863,ge=Math.imul(fr,It),ie=Math.imul(fr,ft),ie=ie+Math.imul(_r,It)|0,Te=Math.imul(_r,ft);var oa=(ke+ge|0)+((ie&8191)<<13)|0;return ke=(Te+(ie>>>13)|0)+(oa>>>26)|0,oa&=67108863,Me[0]=jt,Me[1]=Zt,Me[2]=yr,Me[3]=Fr,Me[4]=Zr,Me[5]=Vr,Me[6]=gi,Me[7]=Si,Me[8]=Mi,Me[9]=Pi,Me[10]=Gi,Me[11]=Ki,Me[12]=ka,Me[13]=jn,Me[14]=la,Me[15]=Fa,Me[16]=Ra,Me[17]=jo,Me[18]=oa,ke!==0&&(Me[19]=ke,re.length++),re};Math.imul||(L=A);function _(G,N,W){W.negative=N.negative^G.negative,W.length=G.length+N.length;for(var re=0,ae=0,_e=0;_e>>26)|0,ae+=Me>>>26,Me&=67108863}W.words[_e]=ke,re=Me,Me=ae}return re!==0?W.words[_e]=re:W.length--,W.strip()}function C(G,N,W){var re=new M;return re.mulp(G,N,W)}f.prototype.mulTo=function(N,W){var re,ae=this.length+N.length;return this.length===10&&N.length===10?re=L(this,N,W):ae<63?re=A(this,N,W):ae<1024?re=_(this,N,W):re=C(this,N,W),re};function M(G,N){this.x=G,this.y=N}M.prototype.makeRBT=function(N){for(var W=new Array(N),re=f.prototype._countBits(N)-1,ae=0;ae>=1;return ae},M.prototype.permute=function(N,W,re,ae,_e,Me){for(var ke=0;ke>>1)_e++;return 1<<_e+1+ae},M.prototype.conjugate=function(N,W,re){if(!(re<=1))for(var ae=0;ae>>13,re[2*Me+1]=_e&8191,_e=_e>>>13;for(Me=2*W;Me>=26,W+=ae/67108864|0,W+=_e>>>26,this.words[re]=_e&67108863}return W!==0&&(this.words[re]=W,this.length++),this},f.prototype.muln=function(N){return this.clone().imuln(N)},f.prototype.sqr=function(){return this.mul(this)},f.prototype.isqr=function(){return this.imul(this.clone())},f.prototype.pow=function(N){var W=k(N);if(W.length===0)return new f(1);for(var re=this,ae=0;ae=0);var W=N%26,re=(N-W)/26,ae=67108863>>>26-W<<26-W,_e;if(W!==0){var Me=0;for(_e=0;_e>>26-W}Me&&(this.words[_e]=Me,this.length++)}if(re!==0){for(_e=this.length-1;_e>=0;_e--)this.words[_e+re]=this.words[_e];for(_e=0;_e=0);var ae;W?ae=(W-W%26)/26:ae=0;var _e=N%26,Me=Math.min((N-_e)/26,this.length),ke=67108863^67108863>>>_e<<_e,ge=re;if(ae-=Me,ae=Math.max(0,ae),ge){for(var ie=0;ieMe)for(this.length-=Me,ie=0;ie=0&&(Te!==0||ie>=ae);ie--){var Ee=this.words[ie]|0;this.words[ie]=Te<<26-_e|Ee>>>_e,Te=Ee&ke}return ge&&Te!==0&&(ge.words[ge.length++]=Te),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},f.prototype.ishrn=function(N,W,re){return u(this.negative===0),this.iushrn(N,W,re)},f.prototype.shln=function(N){return this.clone().ishln(N)},f.prototype.ushln=function(N){return this.clone().iushln(N)},f.prototype.shrn=function(N){return this.clone().ishrn(N)},f.prototype.ushrn=function(N){return this.clone().iushrn(N)},f.prototype.testn=function(N){u(typeof N=="number"&&N>=0);var W=N%26,re=(N-W)/26,ae=1<=0);var W=N%26,re=(N-W)/26;if(u(this.negative===0,"imaskn works only with positive numbers"),this.length<=re)return this;if(W!==0&&re++,this.length=Math.min(re,this.length),W!==0){var ae=67108863^67108863>>>W<=67108864;W++)this.words[W]-=67108864,W===this.length-1?this.words[W+1]=1:this.words[W+1]++;return this.length=Math.max(this.length,W+1),this},f.prototype.isubn=function(N){if(u(typeof N=="number"),u(N<67108864),N<0)return this.iaddn(-N);if(this.negative!==0)return this.negative=0,this.iaddn(N),this.negative=1,this;if(this.words[0]-=N,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var W=0;W>26)-(ge/67108864|0),this.words[_e+re]=Me&67108863}for(;_e>26,this.words[_e+re]=Me&67108863;if(ke===0)return this.strip();for(u(ke===-1),ke=0,_e=0;_e>26,this.words[_e]=Me&67108863;return this.negative=1,this.strip()},f.prototype._wordDiv=function(N,W){var re=this.length-N.length,ae=this.clone(),_e=N,Me=_e.words[_e.length-1]|0,ke=this._countBits(Me);re=26-ke,re!==0&&(_e=_e.ushln(re),ae.iushln(re),Me=_e.words[_e.length-1]|0);var ge=ae.length-_e.length,ie;if(W!=="mod"){ie=new f(null),ie.length=ge+1,ie.words=new Array(ie.length);for(var Te=0;Te=0;Ae--){var ze=(ae.words[_e.length+Ae]|0)*67108864+(ae.words[_e.length+Ae-1]|0);for(ze=Math.min(ze/Me|0,67108863),ae._ishlnsubmul(_e,ze,Ae);ae.negative!==0;)ze--,ae.negative=0,ae._ishlnsubmul(_e,1,Ae),ae.isZero()||(ae.negative^=1);ie&&(ie.words[Ae]=ze)}return ie&&ie.strip(),ae.strip(),W!=="div"&&re!==0&&ae.iushrn(re),{div:ie||null,mod:ae}},f.prototype.divmod=function(N,W,re){if(u(!N.isZero()),this.isZero())return{div:new f(0),mod:new f(0)};var ae,_e,Me;return this.negative!==0&&N.negative===0?(Me=this.neg().divmod(N,W),W!=="mod"&&(ae=Me.div.neg()),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.iadd(N)),{div:ae,mod:_e}):this.negative===0&&N.negative!==0?(Me=this.divmod(N.neg(),W),W!=="mod"&&(ae=Me.div.neg()),{div:ae,mod:Me.mod}):this.negative&N.negative?(Me=this.neg().divmod(N.neg(),W),W!=="div"&&(_e=Me.mod.neg(),re&&_e.negative!==0&&_e.isub(N)),{div:Me.div,mod:_e}):N.length>this.length||this.cmp(N)<0?{div:new f(0),mod:this}:N.length===1?W==="div"?{div:this.divn(N.words[0]),mod:null}:W==="mod"?{div:null,mod:new f(this.modn(N.words[0]))}:{div:this.divn(N.words[0]),mod:new f(this.modn(N.words[0]))}:this._wordDiv(N,W)},f.prototype.div=function(N){return this.divmod(N,"div",!1).div},f.prototype.mod=function(N){return this.divmod(N,"mod",!1).mod},f.prototype.umod=function(N){return this.divmod(N,"mod",!0).mod},f.prototype.divRound=function(N){var W=this.divmod(N);if(W.mod.isZero())return W.div;var re=W.div.negative!==0?W.mod.isub(N):W.mod,ae=N.ushrn(1),_e=N.andln(1),Me=re.cmp(ae);return Me<0||_e===1&&Me===0?W.div:W.div.negative!==0?W.div.isubn(1):W.div.iaddn(1)},f.prototype.modn=function(N){u(N<=67108863);for(var W=(1<<26)%N,re=0,ae=this.length-1;ae>=0;ae--)re=(W*re+(this.words[ae]|0))%N;return re},f.prototype.idivn=function(N){u(N<=67108863);for(var W=0,re=this.length-1;re>=0;re--){var ae=(this.words[re]|0)+W*67108864;this.words[re]=ae/N|0,W=ae%N}return this.strip()},f.prototype.divn=function(N){return this.clone().idivn(N)},f.prototype.egcd=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=new f(0),ke=new f(1),ge=0;W.isEven()&&re.isEven();)W.iushrn(1),re.iushrn(1),++ge;for(var ie=re.clone(),Te=W.clone();!W.isZero();){for(var Ee=0,Ae=1;!(W.words[0]&Ae)&&Ee<26;++Ee,Ae<<=1);if(Ee>0)for(W.iushrn(Ee);Ee-- >0;)(ae.isOdd()||_e.isOdd())&&(ae.iadd(ie),_e.isub(Te)),ae.iushrn(1),_e.iushrn(1);for(var ze=0,Ce=1;!(re.words[0]&Ce)&&ze<26;++ze,Ce<<=1);if(ze>0)for(re.iushrn(ze);ze-- >0;)(Me.isOdd()||ke.isOdd())&&(Me.iadd(ie),ke.isub(Te)),Me.iushrn(1),ke.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(Me),_e.isub(ke)):(re.isub(W),Me.isub(ae),ke.isub(_e))}return{a:Me,b:ke,gcd:re.iushln(ge)}},f.prototype._invmp=function(N){u(N.negative===0),u(!N.isZero());var W=this,re=N.clone();W.negative!==0?W=W.umod(N):W=W.clone();for(var ae=new f(1),_e=new f(0),Me=re.clone();W.cmpn(1)>0&&re.cmpn(1)>0;){for(var ke=0,ge=1;!(W.words[0]&ge)&&ke<26;++ke,ge<<=1);if(ke>0)for(W.iushrn(ke);ke-- >0;)ae.isOdd()&&ae.iadd(Me),ae.iushrn(1);for(var ie=0,Te=1;!(re.words[0]&Te)&&ie<26;++ie,Te<<=1);if(ie>0)for(re.iushrn(ie);ie-- >0;)_e.isOdd()&&_e.iadd(Me),_e.iushrn(1);W.cmp(re)>=0?(W.isub(re),ae.isub(_e)):(re.isub(W),_e.isub(ae))}var Ee;return W.cmpn(1)===0?Ee=ae:Ee=_e,Ee.cmpn(0)<0&&Ee.iadd(N),Ee},f.prototype.gcd=function(N){if(this.isZero())return N.abs();if(N.isZero())return this.abs();var W=this.clone(),re=N.clone();W.negative=0,re.negative=0;for(var ae=0;W.isEven()&&re.isEven();ae++)W.iushrn(1),re.iushrn(1);do{for(;W.isEven();)W.iushrn(1);for(;re.isEven();)re.iushrn(1);var _e=W.cmp(re);if(_e<0){var Me=W;W=re,re=Me}else if(_e===0||re.cmpn(1)===0)break;W.isub(re)}while(!0);return re.iushln(ae)},f.prototype.invm=function(N){return this.egcd(N).a.umod(N)},f.prototype.isEven=function(){return(this.words[0]&1)===0},f.prototype.isOdd=function(){return(this.words[0]&1)===1},f.prototype.andln=function(N){return this.words[0]&N},f.prototype.bincn=function(N){u(typeof N=="number");var W=N%26,re=(N-W)/26,ae=1<>>26,ke&=67108863,this.words[Me]=ke}return _e!==0&&(this.words[Me]=_e,this.length++),this},f.prototype.isZero=function(){return this.length===1&&this.words[0]===0},f.prototype.cmpn=function(N){var W=N<0;if(this.negative!==0&&!W)return-1;if(this.negative===0&&W)return 1;this.strip();var re;if(this.length>1)re=1;else{W&&(N=-N),u(N<=67108863,"Number is too big");var ae=this.words[0]|0;re=ae===N?0:aeN.length)return 1;if(this.length=0;re--){var ae=this.words[re]|0,_e=N.words[re]|0;if(ae!==_e){ae<_e?W=-1:ae>_e&&(W=1);break}}return W},f.prototype.gtn=function(N){return this.cmpn(N)===1},f.prototype.gt=function(N){return this.cmp(N)===1},f.prototype.gten=function(N){return this.cmpn(N)>=0},f.prototype.gte=function(N){return this.cmp(N)>=0},f.prototype.ltn=function(N){return this.cmpn(N)===-1},f.prototype.lt=function(N){return this.cmp(N)===-1},f.prototype.lten=function(N){return this.cmpn(N)<=0},f.prototype.lte=function(N){return this.cmp(N)<=0},f.prototype.eqn=function(N){return this.cmpn(N)===0},f.prototype.eq=function(N){return this.cmp(N)===0},f.red=function(N){return new H(N)},f.prototype.toRed=function(N){return u(!this.red,"Already a number in reduction context"),u(this.negative===0,"red works only with positives"),N.convertTo(this)._forceRed(N)},f.prototype.fromRed=function(){return u(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},f.prototype._forceRed=function(N){return this.red=N,this},f.prototype.forceRed=function(N){return u(!this.red,"Already a number in reduction context"),this._forceRed(N)},f.prototype.redAdd=function(N){return u(this.red,"redAdd works only with red numbers"),this.red.add(this,N)},f.prototype.redIAdd=function(N){return u(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,N)},f.prototype.redSub=function(N){return u(this.red,"redSub works only with red numbers"),this.red.sub(this,N)},f.prototype.redISub=function(N){return u(this.red,"redISub works only with red numbers"),this.red.isub(this,N)},f.prototype.redShl=function(N){return u(this.red,"redShl works only with red numbers"),this.red.shl(this,N)},f.prototype.redMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.mul(this,N)},f.prototype.redIMul=function(N){return u(this.red,"redMul works only with red numbers"),this.red._verify2(this,N),this.red.imul(this,N)},f.prototype.redSqr=function(){return u(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},f.prototype.redISqr=function(){return u(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},f.prototype.redSqrt=function(){return u(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},f.prototype.redInvm=function(){return u(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},f.prototype.redNeg=function(){return u(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},f.prototype.redPow=function(N){return u(this.red&&!N.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,N)};var g={k256:null,p224:null,p192:null,p25519:null};function P(G,N){this.name=G,this.p=new f(N,16),this.n=this.p.bitLength(),this.k=new f(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}P.prototype._tmp=function(){var N=new f(null);return N.words=new Array(Math.ceil(this.n/13)),N},P.prototype.ireduce=function(N){var W=N,re;do this.split(W,this.tmp),W=this.imulK(W),W=W.iadd(this.tmp),re=W.bitLength();while(re>this.n);var ae=re0?W.isub(this.p):W.strip!==void 0?W.strip():W._strip(),W},P.prototype.split=function(N,W){N.iushrn(this.n,0,W)},P.prototype.imulK=function(N){return N.imul(this.k)};function T(){P.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}c(T,P),T.prototype.split=function(N,W){for(var re=4194303,ae=Math.min(N.length,9),_e=0;_e>>22,Me=ke}Me>>>=22,N.words[_e-10]=Me,Me===0&&N.length>10?N.length-=10:N.length-=9},T.prototype.imulK=function(N){N.words[N.length]=0,N.words[N.length+1]=0,N.length+=2;for(var W=0,re=0;re>>=26,N.words[re]=_e,W=ae}return W!==0&&(N.words[N.length++]=W),N},f._prime=function(N){if(g[N])return g[N];var W;if(N==="k256")W=new T;else if(N==="p224")W=new F;else if(N==="p192")W=new q;else if(N==="p25519")W=new V;else throw new Error("Unknown prime "+N);return g[N]=W,W};function H(G){if(typeof G=="string"){var N=f._prime(G);this.m=N.p,this.prime=N}else u(G.gtn(1),"modulus must be greater than 1"),this.m=G,this.prime=null}H.prototype._verify1=function(N){u(N.negative===0,"red works only with positives"),u(N.red,"red works only with red numbers")},H.prototype._verify2=function(N,W){u((N.negative|W.negative)===0,"red works only with positives"),u(N.red&&N.red===W.red,"red works only with red numbers")},H.prototype.imod=function(N){return this.prime?this.prime.ireduce(N)._forceRed(this):N.umod(this.m)._forceRed(this)},H.prototype.neg=function(N){return N.isZero()?N.clone():this.m.sub(N)._forceRed(this)},H.prototype.add=function(N,W){this._verify2(N,W);var re=N.add(W);return re.cmp(this.m)>=0&&re.isub(this.m),re._forceRed(this)},H.prototype.iadd=function(N,W){this._verify2(N,W);var re=N.iadd(W);return re.cmp(this.m)>=0&&re.isub(this.m),re},H.prototype.sub=function(N,W){this._verify2(N,W);var re=N.sub(W);return re.cmpn(0)<0&&re.iadd(this.m),re._forceRed(this)},H.prototype.isub=function(N,W){this._verify2(N,W);var re=N.isub(W);return re.cmpn(0)<0&&re.iadd(this.m),re},H.prototype.shl=function(N,W){return this._verify1(N),this.imod(N.ushln(W))},H.prototype.imul=function(N,W){return this._verify2(N,W),this.imod(N.imul(W))},H.prototype.mul=function(N,W){return this._verify2(N,W),this.imod(N.mul(W))},H.prototype.isqr=function(N){return this.imul(N,N.clone())},H.prototype.sqr=function(N){return this.mul(N,N)},H.prototype.sqrt=function(N){if(N.isZero())return N.clone();var W=this.m.andln(3);if(u(W%2===1),W===3){var re=this.m.add(new f(1)).iushrn(2);return this.pow(N,re)}for(var ae=this.m.subn(1),_e=0;!ae.isZero()&&ae.andln(1)===0;)_e++,ae.iushrn(1);u(!ae.isZero());var Me=new f(1).toRed(this),ke=Me.redNeg(),ge=this.m.subn(1).iushrn(1),ie=this.m.bitLength();for(ie=new f(2*ie*ie).toRed(this);this.pow(ie,ge).cmp(ke)!==0;)ie.redIAdd(ke);for(var Te=this.pow(ie,ae),Ee=this.pow(N,ae.addn(1).iushrn(1)),Ae=this.pow(N,ae),ze=_e;Ae.cmp(Me)!==0;){for(var Ce=Ae,me=0;Ce.cmp(Me)!==0;me++)Ce=Ce.redSqr();u(me=0;_e--){for(var Te=W.words[_e],Ee=ie-1;Ee>=0;Ee--){var Ae=Te>>Ee&1;if(Me!==ae[0]&&(Me=this.sqr(Me)),Ae===0&&ke===0){ge=0;continue}ke<<=1,ke|=Ae,ge++,!(ge!==re&&(_e!==0||Ee!==0))&&(Me=this.mul(Me,ae[ke]),ge=0,ke=0)}ie=26}return Me},H.prototype.convertTo=function(N){var W=N.umod(this.m);return W===N?W.clone():W},H.prototype.convertFrom=function(N){var W=N.clone();return W.red=null,W},f.mont=function(N){return new X(N)};function X(G){H.call(this,G),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new f(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}c(X,H),X.prototype.convertTo=function(N){return this.imod(N.ushln(this.shift))},X.prototype.convertFrom=function(N){var W=this.imod(N.mul(this.rinv));return W.red=null,W},X.prototype.imul=function(N,W){if(N.isZero()||W.isZero())return N.words[0]=0,N.length=1,N;var re=N.imul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.mul=function(N,W){if(N.isZero()||W.isZero())return new f(0)._forceRed(this);var re=N.mul(W),ae=re.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),_e=re.isub(ae).iushrn(this.shift),Me=_e;return _e.cmp(this.m)>=0?Me=_e.isub(this.m):_e.cmpn(0)<0&&(Me=_e.iadd(this.m)),Me._forceRed(this)},X.prototype.invm=function(N){var W=this.imod(N._invmp(this.m).mul(this.r2));return W._forceRed(this)}}(i,this)},6204:function(i){"use strict";i.exports=a;function a(o){var s,l,u,c=o.length,f=0;for(s=0;s>>1;if(!(M<=0)){var g,P=s.mallocDouble(2*M*_),T=s.mallocInt32(_);if(_=f(E,M,P,T),_>0){if(M===1&&L)l.init(_),g=l.sweepComplete(M,A,0,_,P,T,0,_,P,T);else{var F=s.mallocDouble(2*M*C),q=s.mallocInt32(C);C=f(k,M,F,q),C>0&&(l.init(_+C),M===1?g=l.sweepBipartite(M,A,0,_,P,T,0,C,F,q):g=u(M,A,L,_,P,T,C,F,q),s.free(F),s.free(q))}s.free(P),s.free(T)}return g}}}var d;function v(E,k){d.push([E,k])}function x(E){return d=[],h(E,E,v,!0),d}function b(E,k){return d=[],h(E,k,v,!1),d}function p(E,k,A){switch(arguments.length){case 1:return x(E);case 2:return typeof k=="function"?h(E,E,k,!0):b(E,k);case 3:return h(E,k,A,!1);default:throw new Error("box-intersect: Invalid arguments")}}},2455:function(i,a){"use strict";function o(){function u(h,d,v,x,b,p,E,k,A,L,_){for(var C=2*h,M=x,g=C*x;MA-k?u(h,d,v,x,b,p,E,k,A,L,_):c(h,d,v,x,b,p,E,k,A,L,_)}return f}function s(){function u(v,x,b,p,E,k,A,L,_,C,M){for(var g=2*v,P=p,T=g*p;PC-_?p?u(v,x,b,E,k,A,L,_,C,M,g):c(v,x,b,E,k,A,L,_,C,M,g):p?f(v,x,b,E,k,A,L,_,C,M,g):h(v,x,b,E,k,A,L,_,C,M,g)}return d}function l(u){return u?o():s()}a.partial=l(!1),a.full=l(!0)},7150:function(i,a,o){"use strict";i.exports=G;var s=o(1888),l=o(8828),u=o(2455),c=u.partial,f=u.full,h=o(855),d=o(3545),v=o(8105),x=128,b=1<<22,p=1<<22,E=v("!(lo>=p0)&&!(p1>=hi)"),k=v("lo===p0"),A=v("lo0;){Te-=1;var ze=Te*M,Ce=T[ze],me=T[ze+1],Re=T[ze+2],ce=T[ze+3],Ge=T[ze+4],nt=T[ze+5],ct=Te*g,qt=F[ct],rt=F[ct+1],ot=nt&1,Rt=!!(nt&16),kt=_e,Ct=Me,Yt=ge,xr=ie;if(ot&&(kt=ge,Ct=ie,Yt=_e,xr=Me),!(nt&2&&(Re=A(N,Ce,me,Re,kt,Ct,rt),me>=Re))&&!(nt&4&&(me=L(N,Ce,me,Re,kt,Ct,qt),me>=Re))){var er=Re-me,Ke=Ge-ce;if(Rt){if(N*er*(er+Ke)v&&b[C+d]>L;--_,C-=E){for(var M=C,g=C+E,P=0;P>>1,L=2*h,_=A,C=b[L*A+d];E=F?(_=T,C=F):P>=V?(_=g,C=P):(_=q,C=V):F>=V?(_=T,C=F):V>=P?(_=g,C=P):(_=q,C=V);for(var G=L*(k-1),N=L*_,H=0;H=p0)&&!(p1>=hi)":d};function o(v){return a[v]}function s(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g];if(F===A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function l(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g];if(Fq;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function u(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function c(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+P];if(F<=A)if(M===T)M+=1,C+=L;else{for(var q=0;L>q;++q){var V=E[_+q];E[_+q]=E[C],E[C++]=V}var H=k[T];k[T]=k[M],k[M++]=H}}return M}function f(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g],q=E[_+P];if(F<=A&&A<=q)if(M===T)M+=1,C+=L;else{for(var V=0;L>V;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function h(v,x,b,p,E,k,A){for(var L=2*v,_=L*b,C=_,M=b,g=x,P=v+x,T=b;p>T;++T,_+=L){var F=E[_+g],q=E[_+P];if(FV;++V){var H=E[_+V];E[_+V]=E[C],E[C++]=H}var X=k[T];k[T]=k[M],k[M++]=X}}return M}function d(v,x,b,p,E,k,A,L){for(var _=2*v,C=_*b,M=C,g=b,P=x,T=v+x,F=b;p>F;++F,C+=_){var q=E[C+P],V=E[C+T];if(!(q>=A)&&!(L>=V))if(g===F)g+=1,M+=_;else{for(var H=0;_>H;++H){var X=E[C+H];E[C+H]=E[M],E[M++]=X}var G=k[F];k[F]=k[g],k[g++]=G}}return g}},4192:function(i){"use strict";i.exports=o;var a=32;function o(x,b){b<=4*a?s(0,b-1,x):v(0,b-1,x)}function s(x,b,p){for(var E=2*(x+1),k=x+1;k<=b;++k){for(var A=p[E++],L=p[E++],_=k,C=E-2;_-- >x;){var M=p[C-2],g=p[C-1];if(Mp[b+1]:!0}function d(x,b,p,E){x*=2;var k=E[x];return k>1,_=L-E,C=L+E,M=k,g=_,P=L,T=C,F=A,q=x+1,V=b-1,H=0;h(M,g,p)&&(H=M,M=g,g=H),h(T,F,p)&&(H=T,T=F,F=H),h(M,P,p)&&(H=M,M=P,P=H),h(g,P,p)&&(H=g,g=P,P=H),h(M,T,p)&&(H=M,M=T,T=H),h(P,T,p)&&(H=P,P=T,T=H),h(g,F,p)&&(H=g,g=F,F=H),h(g,P,p)&&(H=g,g=P,P=H),h(T,F,p)&&(H=T,T=F,F=H);for(var X=p[2*g],G=p[2*g+1],N=p[2*T],W=p[2*T+1],re=2*M,ae=2*P,_e=2*F,Me=2*k,ke=2*L,ge=2*A,ie=0;ie<2;++ie){var Te=p[re+ie],Ee=p[ae+ie],Ae=p[_e+ie];p[Me+ie]=Te,p[ke+ie]=Ee,p[ge+ie]=Ae}u(_,x,p),u(C,b,p);for(var ze=q;ze<=V;++ze)if(d(ze,X,G,p))ze!==q&&l(ze,q,p),++q;else if(!d(ze,N,W,p))for(;;)if(d(V,N,W,p)){d(V,X,G,p)?(c(ze,q,V,p),++q,--V):(l(ze,V,p),--V);break}else{if(--V>>1;u(E,Ee);for(var Ae=0,ze=0,ke=0;ke=c)Ce=Ce-c|0,A(v,x,ze--,Ce);else if(Ce>=0)A(h,d,Ae--,Ce);else if(Ce<=-c){Ce=-Ce-c|0;for(var me=0;me>>1;u(E,Ee);for(var Ae=0,ze=0,Ce=0,ke=0;ke>1===E[2*ke+3]>>1&&(Re=2,ke+=1),me<0){for(var ce=-(me>>1)-1,Ge=0;Ge>1)-1;Re===0?A(h,d,Ae--,ce):Re===1?A(v,x,ze--,ce):Re===2&&A(b,p,Ce--,ce)}}}function M(P,T,F,q,V,H,X,G,N,W,re,ae){var _e=0,Me=2*P,ke=T,ge=T+P,ie=1,Te=1;q?Te=c:ie=c;for(var Ee=V;Ee>>1;u(E,me);for(var Re=0,Ee=0;Ee=c?(Ge=!q,Ae-=c):(Ge=!!q,Ae-=1),Ge)L(h,d,Re++,Ae);else{var nt=ae[Ae],ct=Me*Ae,qt=re[ct+T+1],rt=re[ct+T+1+P];e:for(var ot=0;ot>>1;u(E,Ae);for(var ze=0,ge=0;ge=c)h[ze++]=ie-c;else{ie-=1;var me=re[ie],Re=_e*ie,ce=W[Re+T+1],Ge=W[Re+T+1+P];e:for(var nt=0;nt=0;--nt)if(h[nt]===ie){for(var ot=nt+1;ot0;){for(var k=d.pop(),b=d.pop(),A=-1,L=-1,p=x[b],C=1;C=0||(h.flip(b,k),u(f,h,d,A,b,L),u(f,h,d,b,L,A),u(f,h,d,L,k,A),u(f,h,d,k,A,L))}}},5023:function(i,a,o){"use strict";var s=o(2478);i.exports=d;function l(v,x,b,p,E,k,A){this.cells=v,this.neighbor=x,this.flags=p,this.constraint=b,this.active=E,this.next=k,this.boundary=A}var u=l.prototype;function c(v,x){return v[0]-x[0]||v[1]-x[1]||v[2]-x[2]}u.locate=function(){var v=[0,0,0];return function(x,b,p){var E=x,k=b,A=p;return b0||A.length>0;){for(;k.length>0;){var g=k.pop();if(L[g]!==-E){L[g]=E;for(var P=_[g],T=0;T<3;++T){var F=M[3*g+T];F>=0&&L[F]===0&&(C[3*g+T]?A.push(F):(k.push(F),L[F]=E))}}}var q=A;A=k,k=q,A.length=0,E=-E}var V=h(_,L,x);return b?V.concat(p.boundary):V}},8902:function(i,a,o){"use strict";var s=o(2478),l=o(3250)[3],u=0,c=1,f=2;i.exports=A;function h(L,_,C,M,g){this.a=L,this.b=_,this.idx=C,this.lowerIds=M,this.upperIds=g}function d(L,_,C,M){this.a=L,this.b=_,this.type=C,this.idx=M}function v(L,_){var C=L.a[0]-_.a[0]||L.a[1]-_.a[1]||L.type-_.type;return C||L.type!==u&&(C=l(L.a,L.b,_.b),C)?C:L.idx-_.idx}function x(L,_){return l(L.a,L.b,_)}function b(L,_,C,M,g){for(var P=s.lt(_,M,x),T=s.gt(_,M,x),F=P;F1&&l(C[V[X-2]],C[V[X-1]],M)>0;)L.push([V[X-1],V[X-2],g]),X-=1;V.length=X,V.push(g);for(var H=q.upperIds,X=H.length;X>1&&l(C[H[X-2]],C[H[X-1]],M)<0;)L.push([H[X-2],H[X-1],g]),X-=1;H.length=X,H.push(g)}}function p(L,_){var C;return L.a[0]<_.a[0]?C=l(L.a,L.b,_.a):C=l(_.b,_.a,L.a),C||(_.b[0]q[0]&&g.push(new d(q,F,f,P),new d(F,q,c,P))}g.sort(v);for(var V=g[0].a[0]-(1+Math.abs(g[0].a[0]))*Math.pow(2,-52),H=[new h([V,1],[V,0],-1,[],[],[],[])],X=[],P=0,G=g.length;P=0}}(),u.removeTriangle=function(h,d,v){var x=this.stars;c(x[h],d,v),c(x[d],v,h),c(x[v],h,d)},u.addTriangle=function(h,d,v){var x=this.stars;x[h].push(d,v),x[d].push(v,h),x[v].push(h,d)},u.opposite=function(h,d){for(var v=this.stars[d],x=1,b=v.length;x=0;--N){var Te=X[N];W=Te[0];var Ee=V[W],Ae=Ee[0],ze=Ee[1],Ce=q[Ae],me=q[ze];if((Ce[0]-me[0]||Ce[1]-me[1])<0){var Re=Ae;Ae=ze,ze=Re}Ee[0]=Ae;var ce=Ee[1]=Te[1],Ge;for(G&&(Ge=Ee[2]);N>0&&X[N-1][0]===W;){var Te=X[--N],nt=Te[1];G?V.push([ce,nt,Ge]):V.push([ce,nt]),ce=nt}G?V.push([ce,ze,Ge]):V.push([ce,ze])}return re}function _(q,V,H){for(var X=V.length,G=new s(X),N=[],W=0;WV[2]?1:0)}function g(q,V,H){if(q.length!==0){if(V)for(var X=0;X0||W.length>0}function F(q,V,H){var X;if(H){X=V;for(var G=new Array(V.length),N=0;NL+1)throw new Error(k+" map requires nshades to be at least size "+E.length);Array.isArray(d.alpha)?d.alpha.length!==2?_=[1,1]:_=d.alpha.slice():typeof d.alpha=="number"?_=[d.alpha,d.alpha]:_=[1,1],v=E.map(function(F){return Math.round(F.index*L)}),_[0]=Math.min(Math.max(_[0],0),1),_[1]=Math.min(Math.max(_[1],0),1);var M=E.map(function(F,q){var V=E[q].index,H=E[q].rgb.slice();return H.length===4&&H[3]>=0&&H[3]<=1||(H[3]=_[0]+(_[1]-_[0])*V),H}),g=[];for(C=0;C=0}function d(v,x,b,p){var E=s(x,b,p);if(E===0){var k=l(s(v,x,b)),A=l(s(v,x,p));if(k===A){if(k===0){var L=h(v,x,b),_=h(v,x,p);return L===_?0:L?1:-1}return 0}else{if(A===0)return k>0||h(v,x,p)?-1:1;if(k===0)return A>0||h(v,x,b)?1:-1}return l(A-k)}var C=s(v,x,b);if(C>0)return E>0&&s(v,x,p)>0?1:-1;if(C<0)return E>0||s(v,x,p)>0?1:-1;var M=s(v,x,p);return M>0||h(v,x,b)?1:-1}},8572:function(i){"use strict";i.exports=function(o){return o<0?-1:o>0?1:0}},8507:function(i){i.exports=s;var a=Math.min;function o(l,u){return l-u}function s(l,u){var c=l.length,f=l.length-u.length;if(f)return f;switch(c){case 0:return 0;case 1:return l[0]-u[0];case 2:return l[0]+l[1]-u[0]-u[1]||a(l[0],l[1])-a(u[0],u[1]);case 3:var h=l[0]+l[1],d=u[0]+u[1];if(f=h+l[2]-(d+u[2]),f)return f;var v=a(l[0],l[1]),x=a(u[0],u[1]);return a(v,l[2])-a(x,u[2])||a(v+l[2],h)-a(x+u[2],d);case 4:var b=l[0],p=l[1],E=l[2],k=l[3],A=u[0],L=u[1],_=u[2],C=u[3];return b+p+E+k-(A+L+_+C)||a(b,p,E,k)-a(A,L,_,C,A)||a(b+p,b+E,b+k,p+E,p+k,E+k)-a(A+L,A+_,A+C,L+_,L+C,_+C)||a(b+p+E,b+p+k,b+E+k,p+E+k)-a(A+L+_,A+L+C,A+_+C,L+_+C);default:for(var M=l.slice().sort(o),g=u.slice().sort(o),P=0;Po[l][0]&&(l=u);return sl?[[l],[s]]:[[s]]}},4750:function(i,a,o){"use strict";i.exports=l;var s=o(3090);function l(u){var c=s(u),f=c.length;if(f<=2)return[];for(var h=new Array(f),d=c[f-1],v=0;v=d[A]&&(k+=1);p[E]=k}}return h}function f(h,d){try{return s(h,!0)}catch(p){var v=l(h);if(v.length<=d)return[];var x=u(h,v),b=s(x,!0);return c(b,v)}}},4769:function(i){"use strict";function a(s,l,u,c,f,h){var d=6*f*f-6*f,v=3*f*f-4*f+1,x=-6*f*f+6*f,b=3*f*f-2*f;if(s.length){h||(h=new Array(s.length));for(var p=s.length-1;p>=0;--p)h[p]=d*s[p]+v*l[p]+x*u[p]+b*c[p];return h}return d*s+v*l+x*u[p]+b*c}function o(s,l,u,c,f,h){var d=f-1,v=f*f,x=d*d,b=(1+2*f)*x,p=f*x,E=v*(3-2*f),k=v*d;if(s.length){h||(h=new Array(s.length));for(var A=s.length-1;A>=0;--A)h[A]=b*s[A]+p*l[A]+E*u[A]+k*c[A];return h}return b*s+p*l+E*u+k*c}i.exports=o,i.exports.derivative=a},7642:function(i,a,o){"use strict";var s=o(8954),l=o(1682);i.exports=h;function u(d,v){this.point=d,this.index=v}function c(d,v){for(var x=d.point,b=v.point,p=x.length,E=0;E=2)return!1;H[G]=N}return!0}):V=V.filter(function(H){for(var X=0;X<=b;++X){var G=P[H[X]];if(G<0)return!1;H[X]=G}return!0}),b&1)for(var k=0;k>>31},i.exports.exponent=function(E){var k=i.exports.hi(E);return(k<<1>>>21)-1023},i.exports.fraction=function(E){var k=i.exports.lo(E),A=i.exports.hi(E),L=A&(1<<20)-1;return A&2146435072&&(L+=1048576),[k,L]},i.exports.denormalized=function(E){var k=i.exports.hi(E);return!(k&2146435072)}},1338:function(i){"use strict";function a(l,u,c){var f=l[c]|0;if(f<=0)return[];var h=new Array(f),d;if(c===l.length-1)for(d=0;d0)return o(l|0,u);break;case"object":if(typeof l.length=="number")return a(l,u,0);break}return[]}i.exports=s},3134:function(i,a,o){"use strict";i.exports=l;var s=o(1682);function l(u,c){var f=u.length;if(typeof c!="number"){c=0;for(var h=0;h=b-1)for(var C=k.length-1,g=v-x[b-1],M=0;M=b-1)for(var _=k.length-1,C=v-x[b-1],M=0;M=0;--b)if(v[--x])return!1;return!0},f.jump=function(v){var x=this.lastT(),b=this.dimension;if(!(v0;--M)p.push(u(L[M-1],_[M-1],arguments[M])),E.push(0)}},f.push=function(v){var x=this.lastT(),b=this.dimension;if(!(v1e-6?1/A:0;this._time.push(v);for(var g=b;g>0;--g){var P=u(_[g-1],C[g-1],arguments[g]);p.push(P),E.push((P-p[k++])*M)}}},f.set=function(v){var x=this.dimension;if(!(v0;--L)b.push(u(k[L-1],A[L-1],arguments[L])),p.push(0)}},f.move=function(v){var x=this.lastT(),b=this.dimension;if(!(v<=x||arguments.length!==b+1)){var p=this._state,E=this._velocity,k=p.length-this.dimension,A=this.bounds,L=A[0],_=A[1],C=v-x,M=C>1e-6?1/C:0;this._time.push(v);for(var g=b;g>0;--g){var P=arguments[g];p.push(u(L[g-1],_[g-1],p[k++]+P)),E.push(P*M)}}},f.idle=function(v){var x=this.lastT();if(!(v=0;--M)p.push(u(L[M],_[M],p[k]+C*E[k])),E.push(0),k+=1}};function h(v){for(var x=new Array(v),b=0;b=0;--q){var g=P[q];T[q]<=0?P[q]=new s(g._color,g.key,g.value,P[q+1],g.right,g._count+1):P[q]=new s(g._color,g.key,g.value,g.left,P[q+1],g._count+1)}for(var q=P.length-1;q>1;--q){var V=P[q-1],g=P[q];if(V._color===o||g._color===o)break;var H=P[q-2];if(H.left===V)if(V.left===g){var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.left=V.right,V._color=o,V.right=H,P[q-2]=V,P[q-1]=g,c(H),c(V),q>=3){var G=P[q-3];G.left===H?G.left=V:G.right=V}break}}else{var X=H.right;if(X&&X._color===a)V._color=o,H.right=u(o,X),H._color=a,q-=1;else{if(V.right=g.left,H._color=a,H.left=g.right,g._color=o,g.left=V,g.right=H,P[q-2]=g,P[q-1]=V,c(H),c(V),c(g),q>=3){var G=P[q-3];G.left===H?G.left=g:G.right=g}break}}else if(V.right===g){var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(H._color=a,H.right=V.left,V._color=o,V.left=H,P[q-2]=V,P[q-1]=g,c(H),c(V),q>=3){var G=P[q-3];G.right===H?G.right=V:G.left=V}break}}else{var X=H.left;if(X&&X._color===a)V._color=o,H.left=u(o,X),H._color=a,q-=1;else{if(V.left=g.right,H._color=a,H.right=g.left,g._color=o,g.right=V,g.left=H,P[q-2]=g,P[q-1]=V,c(H),c(V),c(g),q>=3){var G=P[q-3];G.right===H?G.right=g:G.left=g}break}}}return P[0]._color=o,new f(M,P[0])};function d(_,C){if(C.left){var M=d(_,C.left);if(M)return M}var M=_(C.key,C.value);if(M)return M;if(C.right)return d(_,C.right)}function v(_,C,M,g){var P=C(_,g.key);if(P<=0){if(g.left){var T=v(_,C,M,g.left);if(T)return T}var T=M(g.key,g.value);if(T)return T}if(g.right)return v(_,C,M,g.right)}function x(_,C,M,g,P){var T=M(_,P.key),F=M(C,P.key),q;if(T<=0&&(P.left&&(q=x(_,C,M,g,P.left),q)||F>0&&(q=g(P.key,P.value),q)))return q;if(F>0&&P.right)return x(_,C,M,g,P.right)}h.forEach=function(C,M,g){if(this.root)switch(arguments.length){case 1:return d(C,this.root);case 2:return v(M,this._compare,C,this.root);case 3:return this._compare(M,g)>=0?void 0:x(M,g,this._compare,C,this.root)}},Object.defineProperty(h,"begin",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.left;return new b(this,_)}}),Object.defineProperty(h,"end",{get:function(){for(var _=[],C=this.root;C;)_.push(C),C=C.right;return new b(this,_)}}),h.at=function(_){if(_<0)return new b(this,[]);for(var C=this.root,M=[];;){if(M.push(C),C.left){if(_=C.right._count)break;C=C.right}else break}return new b(this,[])},h.ge=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T<=0&&(P=g.length),T<=0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.gt=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T<0&&(P=g.length),T<0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.lt=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T>0&&(P=g.length),T<=0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.le=function(_){for(var C=this._compare,M=this.root,g=[],P=0;M;){var T=C(_,M.key);g.push(M),T>=0&&(P=g.length),T<0?M=M.left:M=M.right}return g.length=P,new b(this,g)},h.find=function(_){for(var C=this._compare,M=this.root,g=[];M;){var P=C(_,M.key);if(g.push(M),P===0)return new b(this,g);P<=0?M=M.left:M=M.right}return new b(this,[])},h.remove=function(_){var C=this.find(_);return C?C.remove():this},h.get=function(_){for(var C=this._compare,M=this.root;M;){var g=C(_,M.key);if(g===0)return M.value;g<=0?M=M.left:M=M.right}};function b(_,C){this.tree=_,this._stack=C}var p=b.prototype;Object.defineProperty(p,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(p,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),p.clone=function(){return new b(this.tree,this._stack.slice())};function E(_,C){_.key=C.key,_.value=C.value,_.left=C.left,_.right=C.right,_._color=C._color,_._count=C._count}function k(_){for(var C,M,g,P,T=_.length-1;T>=0;--T){if(C=_[T],T===0){C._color=o;return}if(M=_[T-1],M.left===C){if(g=M.right,g.right&&g.right._color===a){if(g=M.right=l(g),P=g.right=l(g.right),M.right=g.left,g.left=M,g.right=P,g._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(g),T>1){var F=_[T-2];F.left===M?F.left=g:F.right=g}_[T-1]=g;return}else if(g.left&&g.left._color===a){if(g=M.right=l(g),P=g.left=l(g.left),M.right=P.left,g.left=P.right,P.left=M,P.right=g,P._color=M._color,M._color=o,g._color=o,C._color=o,c(M),c(g),c(P),T>1){var F=_[T-2];F.left===M?F.left=P:F.right=P}_[T-1]=P;return}if(g._color===o)if(M._color===a){M._color=o,M.right=u(a,g);return}else{M.right=u(a,g);continue}else{if(g=l(g),M.right=g.left,g.left=M,g._color=M._color,M._color=a,c(M),c(g),T>1){var F=_[T-2];F.left===M?F.left=g:F.right=g}_[T-1]=g,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}else{if(g=M.left,g.left&&g.left._color===a){if(g=M.left=l(g),P=g.left=l(g.left),M.left=g.right,g.right=M,g.left=P,g._color=M._color,C._color=o,M._color=o,P._color=o,c(M),c(g),T>1){var F=_[T-2];F.right===M?F.right=g:F.left=g}_[T-1]=g;return}else if(g.right&&g.right._color===a){if(g=M.left=l(g),P=g.right=l(g.right),M.left=P.right,g.right=P.left,P.right=M,P.left=g,P._color=M._color,M._color=o,g._color=o,C._color=o,c(M),c(g),c(P),T>1){var F=_[T-2];F.right===M?F.right=P:F.left=P}_[T-1]=P;return}if(g._color===o)if(M._color===a){M._color=o,M.left=u(a,g);return}else{M.left=u(a,g);continue}else{if(g=l(g),M.left=g.right,g.right=M,g._color=M._color,M._color=a,c(M),c(g),T>1){var F=_[T-2];F.right===M?F.right=g:F.left=g}_[T-1]=g,_[T]=M,T+1<_.length?_[T+1]=C:_.push(C),T=T+2}}}}p.remove=function(){var _=this._stack;if(_.length===0)return this.tree;var C=new Array(_.length),M=_[_.length-1];C[C.length-1]=new s(M._color,M.key,M.value,M.left,M.right,M._count);for(var g=_.length-2;g>=0;--g){var M=_[g];M.left===_[g+1]?C[g]=new s(M._color,M.key,M.value,C[g+1],M.right,M._count):C[g]=new s(M._color,M.key,M.value,M.left,C[g+1],M._count)}if(M=C[C.length-1],M.left&&M.right){var P=C.length;for(M=M.left;M.right;)C.push(M),M=M.right;var T=C[P-1];C.push(new s(M._color,T.key,T.value,M.left,M.right,M._count)),C[P-1].key=M.key,C[P-1].value=M.value;for(var g=C.length-2;g>=P;--g)M=C[g],C[g]=new s(M._color,M.key,M.value,M.left,C[g+1],M._count);C[P-1].left=C[P]}if(M=C[C.length-1],M._color===a){var F=C[C.length-2];F.left===M?F.left=null:F.right===M&&(F.right=null),C.pop();for(var g=0;g0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(p,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(p,"index",{get:function(){var _=0,C=this._stack;if(C.length===0){var M=this.tree.root;return M?M._count:0}else C[C.length-1].left&&(_=C[C.length-1].left._count);for(var g=C.length-2;g>=0;--g)C[g+1]===C[g].right&&(++_,C[g].left&&(_+=C[g].left._count));return _},enumerable:!0}),p.next=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.right)for(C=C.right;C;)_.push(C),C=C.left;else for(_.pop();_.length>0&&_[_.length-1].right===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(p,"hasNext",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].right)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].left===_[C])return!0;return!1}}),p.update=function(_){var C=this._stack;if(C.length===0)throw new Error("Can't update empty node!");var M=new Array(C.length),g=C[C.length-1];M[M.length-1]=new s(g._color,g.key,_,g.left,g.right,g._count);for(var P=C.length-2;P>=0;--P)g=C[P],g.left===C[P+1]?M[P]=new s(g._color,g.key,g.value,M[P+1],g.right,g._count):M[P]=new s(g._color,g.key,g.value,g.left,M[P+1],g._count);return new f(this.tree._compare,M[0])},p.prev=function(){var _=this._stack;if(_.length!==0){var C=_[_.length-1];if(C.left)for(C=C.left;C;)_.push(C),C=C.right;else for(_.pop();_.length>0&&_[_.length-1].left===C;)C=_[_.length-1],_.pop()}},Object.defineProperty(p,"hasPrev",{get:function(){var _=this._stack;if(_.length===0)return!1;if(_[_.length-1].left)return!0;for(var C=_.length-1;C>0;--C)if(_[C-1].right===_[C])return!0;return!1}});function A(_,C){return _C?1:0}function L(_){return new f(_||A,null)}},3837:function(i,a,o){"use strict";i.exports=q;var s=o(4935),l=o(501),u=o(5304),c=o(6429),f=o(6444),h=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),d=ArrayBuffer,v=DataView;function x(V){return d.isView(V)&&!(V instanceof v)}function b(V){return Array.isArray(V)||x(V)}function p(V,H){return V[0]=H[0],V[1]=H[1],V[2]=H[2],V}function E(V){this.gl=V,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=u(V)}var k=E.prototype;k.update=function(V){V=V||{};function H(Ae,ze,Ce){if(Ce in V){var me=V[Ce],Re=this[Ce],ce;(Ae?b(me)&&b(me[0]):b(me))?this[Ce]=ce=[ze(me[0]),ze(me[1]),ze(me[2])]:this[Ce]=ce=[ze(me),ze(me),ze(me)];for(var Ge=0;Ge<3;++Ge)if(ce[Ge]!==Re[Ge])return!0}return!1}var X=H.bind(this,!1,Number),G=H.bind(this,!1,Boolean),N=H.bind(this,!1,String),W=H.bind(this,!0,function(Ae){if(b(Ae)){if(Ae.length===3)return[+Ae[0],+Ae[1],+Ae[2],1];if(Ae.length===4)return[+Ae[0],+Ae[1],+Ae[2],+Ae[3]]}return[0,0,0,1]}),re,ae=!1,_e=!1;if("bounds"in V)for(var Me=V.bounds,ke=0;ke<2;++ke)for(var ge=0;ge<3;++ge)Me[ke][ge]!==this.bounds[ke][ge]&&(_e=!0),this.bounds[ke][ge]=Me[ke][ge];if("ticks"in V){re=V.ticks,ae=!0,this.autoTicks=!1;for(var ke=0;ke<3;++ke)this.tickSpacing[ke]=0}else X("tickSpacing")&&(this.autoTicks=!0,_e=!0);if(this._firstInit&&("ticks"in V||"tickSpacing"in V||(this.autoTicks=!0),_e=!0,ae=!0,this._firstInit=!1),_e&&this.autoTicks&&(re=f.create(this.bounds,this.tickSpacing),ae=!0),ae){for(var ke=0;ke<3;++ke)re[ke].sort(function(ze,Ce){return ze.x-Ce.x});f.equal(re,this.ticks)?ae=!1:this.ticks=re}G("tickEnable"),N("tickFont")&&(ae=!0),N("tickFontStyle")&&(ae=!0),N("tickFontWeight")&&(ae=!0),N("tickFontVariant")&&(ae=!0),X("tickSize"),X("tickAngle"),X("tickPad"),W("tickColor");var ie=N("labels");N("labelFont")&&(ie=!0),N("labelFontStyle")&&(ie=!0),N("labelFontWeight")&&(ie=!0),N("labelFontVariant")&&(ie=!0),G("labelEnable"),X("labelSize"),X("labelPad"),W("labelColor"),G("lineEnable"),G("lineMirror"),X("lineWidth"),W("lineColor"),G("lineTickEnable"),G("lineTickMirror"),X("lineTickLength"),X("lineTickWidth"),W("lineTickColor"),G("gridEnable"),X("gridWidth"),W("gridColor"),G("zeroEnable"),W("zeroLineColor"),X("zeroLineWidth"),G("backgroundEnable"),W("backgroundColor");var Te=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],Ee=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(ie||ae)&&this._text.update(this.bounds,this.labels,Te,this.ticks,Ee):this._text=s(this.gl,this.bounds,this.labels,Te,this.ticks,Ee),this._lines&&ae&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=l(this.gl,this.bounds,this.ticks))};function A(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}var L=[new A,new A,new A];function _(V,H,X,G,N){for(var W=V.primalOffset,re=V.primalMinor,ae=V.mirrorOffset,_e=V.mirrorMinor,Me=G[H],ke=0;ke<3;++ke)if(H!==ke){var ge=W,ie=ae,Te=re,Ee=_e;Me&1<0?(Te[ke]=-1,Ee[ke]=0):(Te[ke]=0,Ee[ke]=1)}}var C=[0,0,0],M={model:h,view:h,projection:h,_ortho:!1};k.isOpaque=function(){return!0},k.isTransparent=function(){return!1},k.drawTransparent=function(V){};var g=0,P=[0,0,0],T=[0,0,0],F=[0,0,0];k.draw=function(V){V=V||M;for(var Ce=this.gl,H=V.model||h,X=V.view||h,G=V.projection||h,N=this.bounds,W=V._ortho||!1,re=c(H,X,G,N,W),ae=re.cubeEdges,_e=re.axis,Me=X[12],ke=X[13],ge=X[14],ie=X[15],Te=W?2:1,Ee=Te*this.pixelRatio*(G[3]*Me+G[7]*ke+G[11]*ge+G[15]*ie)/Ce.drawingBufferHeight,Ae=0;Ae<3;++Ae)this.lastCubeProps.cubeEdges[Ae]=ae[Ae],this.lastCubeProps.axis[Ae]=_e[Ae];for(var ze=L,Ae=0;Ae<3;++Ae)_(L[Ae],Ae,this.bounds,ae,_e);for(var Ce=this.gl,me=C,Ae=0;Ae<3;++Ae)this.backgroundEnable[Ae]?me[Ae]=_e[Ae]:me[Ae]=0;this._background.draw(H,X,G,N,me,this.backgroundColor),this._lines.bind(H,X,G,this);for(var Ae=0;Ae<3;++Ae){var Re=[0,0,0];_e[Ae]>0?Re[Ae]=N[1][Ae]:Re[Ae]=N[0][Ae];for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.gridEnable[Ge]&&this._lines.drawGrid(Ge,nt,this.bounds,Re,this.gridColor[Ge],this.gridWidth[Ge]*this.pixelRatio)}for(var ce=0;ce<2;++ce){var Ge=(Ae+1+ce)%3,nt=(Ae+1+(ce^1))%3;this.zeroEnable[nt]&&Math.min(N[0][nt],N[1][nt])<=0&&Math.max(N[0][nt],N[1][nt])>=0&&this._lines.drawZero(Ge,nt,this.bounds,Re,this.zeroLineColor[nt],this.zeroLineWidth[nt]*this.pixelRatio)}}for(var Ae=0;Ae<3;++Ae){this.lineEnable[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].primalOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio),this.lineMirror[Ae]&&this._lines.drawAxisLine(Ae,this.bounds,ze[Ae].mirrorOffset,this.lineColor[Ae],this.lineWidth[Ae]*this.pixelRatio);for(var ct=p(P,ze[Ae].primalMinor),qt=p(T,ze[Ae].mirrorMinor),rt=this.lineTickLength,ce=0;ce<3;++ce){var ot=Ee/H[5*ce];ct[ce]*=rt[ce]*ot,qt[ce]*=rt[ce]*ot}this.lineTickEnable[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].primalOffset,ct,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio),this.lineTickMirror[Ae]&&this._lines.drawAxisTicks(Ae,ze[Ae].mirrorOffset,qt,this.lineTickColor[Ae],this.lineTickWidth[Ae]*this.pixelRatio)}this._lines.unbind(),this._text.bind(H,X,G,this.pixelRatio);var Rt,kt=.5,Ct,Yt;function xr(St){Yt=[0,0,0],Yt[St]=1}function er(St,Et,dt){var Ht=(St+1)%3,$t=(St+2)%3,fr=Et[Ht],_r=Et[$t],Br=dt[Ht],Or=dt[$t];if(fr>0&&Or>0){xr(Ht);return}else if(fr>0&&Or<0){xr(Ht);return}else if(fr<0&&Or>0){xr(Ht);return}else if(fr<0&&Or<0){xr(Ht);return}else if(_r>0&&Br>0){xr($t);return}else if(_r>0&&Br<0){xr($t);return}else if(_r<0&&Br>0){xr($t);return}else if(_r<0&&Br<0){xr($t);return}}for(var Ae=0;Ae<3;++Ae){for(var Ke=ze[Ae].primalMinor,xt=ze[Ae].mirrorMinor,bt=p(F,ze[Ae].primalOffset),ce=0;ce<3;++ce)this.lineTickEnable[Ae]&&(bt[ce]+=Ee*Ke[ce]*Math.max(this.lineTickLength[ce],0)/H[5*ce]);var Lt=[0,0,0];if(Lt[Ae]=1,this.tickEnable[Ae]){this.tickAngle[Ae]===-3600?(this.tickAngle[Ae]=0,this.tickAlign[Ae]="auto"):this.tickAlign[Ae]=-1,Ct=1,Rt=[this.tickAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=g:Rt[0]=parseInt(""+Rt[0]),Yt=[0,0,0],er(Ae,Ke,xt);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.tickPad[ce]/H[5*ce];this._text.drawTicks(Ae,this.tickSize[Ae],this.tickAngle[Ae],bt,this.tickColor[Ae],Lt,Yt,Rt)}if(this.labelEnable[Ae]){Ct=0,Yt=[0,0,0],this.labels[Ae].length>4&&(xr(Ae),Ct=1),Rt=[this.labelAlign[Ae],kt,Ct],Rt[0]==="auto"?Rt[0]=g:Rt[0]=parseInt(""+Rt[0]);for(var ce=0;ce<3;++ce)bt[ce]+=Ee*Ke[ce]*this.labelPad[ce]/H[5*ce];bt[Ae]+=.5*(N[0][Ae]+N[1][Ae]),this._text.drawLabel(Ae,this.labelSize[Ae],this.labelAngle[Ae],bt,this.labelColor[Ae],[0,0,0],Yt,Rt)}}this._text.unbind()},k.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null};function q(V,H){var X=new E(V);return X.update(H),X}},5304:function(i,a,o){"use strict";i.exports=h;var s=o(2762),l=o(8116),u=o(1879).bg;function c(d,v,x,b){this.gl=d,this.buffer=v,this.vao=x,this.shader=b}var f=c.prototype;f.draw=function(d,v,x,b,p,E){for(var k=!1,A=0;A<3;++A)k=k||p[A];if(k){var L=this.gl;L.enable(L.POLYGON_OFFSET_FILL),L.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:d,view:v,projection:x,bounds:b,enable:p,colors:E},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),L.disable(L.POLYGON_OFFSET_FILL)}},f.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()};function h(d){for(var v=[],x=[],b=0,p=0;p<3;++p)for(var E=(p+1)%3,k=(p+2)%3,A=[0,0,0],L=[0,0,0],_=-1;_<=1;_+=2){x.push(b,b+2,b+1,b+1,b+2,b+3),A[p]=_,L[p]=_;for(var C=-1;C<=1;C+=2){A[E]=C;for(var M=-1;M<=1;M+=2)A[k]=M,v.push(A[0],A[1],A[2],L[0],L[1],L[2]),b+=1}var g=E;E=k,k=g}var P=s(d,new Float32Array(v)),T=s(d,new Uint16Array(x),d.ELEMENT_ARRAY_BUFFER),F=l(d,[{buffer:P,type:d.FLOAT,size:3,offset:0,stride:24},{buffer:P,type:d.FLOAT,size:3,offset:12,stride:24}],T),q=u(d);return q.attributes.position.location=0,q.attributes.normal.location=1,new c(d,P,F,q)}},6429:function(i,a,o){"use strict";i.exports=_;var s=o(8828),l=o(6760),u=o(5202),c=o(3250),f=new Array(16),h=new Array(8),d=new Array(8),v=new Array(3),x=[0,0,0];(function(){for(var C=0;C<8;++C)h[C]=[1,1,1,1],d[C]=[1,1,1]})();function b(C,M,g){for(var P=0;P<4;++P){C[P]=g[12+P];for(var T=0;T<3;++T)C[P]+=M[T]*g[4*T+P]}}var p=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function E(C){for(var M=0;M_e&&(X|=1<_e){X|=1<d[q][1])&&(ze=q);for(var Ce=-1,q=0;q<3;++q){var me=ze^1<d[Re][0]&&(Re=me)}}var ce=k;ce[0]=ce[1]=ce[2]=0,ce[s.log2(Ce^ze)]=ze&Ce,ce[s.log2(ze^Re)]=zeℜvar Ge=Re^7;Ge===X||Ge===Ae?(Ge=Ce^7,ce[s.log2(Re^Ge)]=Ge&Re):ce[s.log2(Ce^Ge)]=Ge&Ce;for(var nt=A,ct=X,W=0;W<3;++W)ct&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ? + b - PI : + b; +} + +float look_horizontal_or_vertical(float a, float ratio) { + // ratio controls the ratio between being horizontal to (vertical + horizontal) + // if ratio is set to 0.5 then it is 50%, 50%. + // when using a higher ratio e.g. 0.75 the result would + // likely be more horizontal than vertical. + + float b = positive_angle(a); + + return + (b < ( ratio) * HALF_PI) ? 0.0 : + (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI : + (b < (2.0 + ratio) * HALF_PI) ? 0.0 : + (b < (4.0 - ratio) * HALF_PI) ? HALF_PI : + 0.0; +} + +float roundTo(float a, float b) { + return float(b * floor((a + 0.5 * b) / b)); +} + +float look_round_n_directions(float a, int n) { + float b = positive_angle(a); + float div = TWO_PI / float(n); + float c = roundTo(b, div); + return look_upwards(c); +} + +float applyAlignOption(float rawAngle, float delta) { + return + (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions + (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical + (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis + (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards + (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal + rawAngle; // otherwise return back raw input angle +} + +bool isAxisTitle = (axis.x == 0.0) && + (axis.y == 0.0) && + (axis.z == 0.0); + +void main() { + //Compute world offset + float axisDistance = position.z; + vec3 dataPosition = axisDistance * axis + offset; + + float beta = angle; // i.e. user defined attributes for each tick + + float axisAngle; + float clipAngle; + float flip; + + if (enableAlign) { + axisAngle = (isAxisTitle) ? HALF_PI : + computeViewAngle(dataPosition, dataPosition + axis); + clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir); + + axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0; + clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0; + + flip = (dot(vec2(cos(axisAngle), sin(axisAngle)), + vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0; + + beta += applyAlignOption(clipAngle, flip * PI); + } + + //Compute plane offset + vec2 planeCoord = position.xy * pixelScale; + + mat2 planeXform = scale * mat2( + cos(beta), sin(beta), + -sin(beta), cos(beta) + ); + + vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution; + + //Compute clip position + vec3 clipPosition = project(dataPosition); + + //Apply text offset in clip coordinates + clipPosition += vec3(viewOffset, 0.0); + + //Done + gl_Position = vec4(clipPosition, 1.0); +} +`]),h=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 color; +void main() { + gl_FragColor = color; +}`]);a.Q=function(x){return l(x,f,h,null,[{name:"position",type:"vec3"}])};var d=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec3 normal; + +uniform mat4 model, view, projection; +uniform vec3 enable; +uniform vec3 bounds[2]; + +varying vec3 colorChannel; + +void main() { + + vec3 signAxis = sign(bounds[1] - bounds[0]); + + vec3 realNormal = signAxis * normal; + + if(dot(realNormal, enable) > 0.0) { + vec3 minRange = min(bounds[0], bounds[1]); + vec3 maxRange = max(bounds[0], bounds[1]); + vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0)); + gl_Position = projection * (view * (model * vec4(nPosition, 1.0))); + } else { + gl_Position = vec4(0,0,0,0); + } + + colorChannel = abs(realNormal); +} +`]),v=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 colors[3]; + +varying vec3 colorChannel; + +void main() { + gl_FragColor = colorChannel.x * colors[0] + + colorChannel.y * colors[1] + + colorChannel.z * colors[2]; +}`]);a.bg=function(x){return l(x,d,v,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},4935:function(i,a,o){"use strict";i.exports=E;var s=o(2762),l=o(8116),u=o(4359),c=o(1879).Q,f=window||process.global||{},h=f.__TEXT_CACHE||{};f.__TEXT_CACHE={};var d=3;function v(k,A,L,_){this.gl=k,this.shader=A,this.buffer=L,this.vao=_,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var x=v.prototype,b=[0,0];x.bind=function(k,A,L,_){this.vao.bind(),this.shader.bind();var C=this.shader.uniforms;C.model=k,C.view=A,C.projection=L,C.pixelScale=_,b[0]=this.gl.drawingBufferWidth,b[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=b},x.unbind=function(){this.vao.unbind()},x.update=function(k,A,L,_,C){var M=[];function g(W,re,ae,_e,Me,ke){var ge=[ae.style,ae.weight,ae.variant,ae.family].join("_"),ie=h[ge];ie||(ie=h[ge]={});var Te=ie[re];Te||(Te=ie[re]=p(re,{triangles:!0,font:ae.family,fontStyle:ae.style,fontWeight:ae.weight,fontVariant:ae.variant,textAlign:"center",textBaseline:"middle",lineSpacing:Me,styletags:ke}));for(var Ee=(_e||12)/12,Ae=Te.positions,ze=Te.cells,Ce=0,me=ze.length;Ce=0;--ce){var Ge=Ae[Re[ce]];M.push(Ee*Ge[0],-Ee*Ge[1],W)}}for(var P=[0,0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0],V=1.25,H={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},X=0;X<3;++X){F[X]=M.length/d|0,g(.5*(k[0][X]+k[1][X]),A[X],L[X],12,V,H),q[X]=(M.length/d|0)-F[X],P[X]=M.length/d|0;for(var G=0;G<_[X].length;++G)if(_[X][G].text){var N={family:_[X][G].font||C[X].family,style:C[X].fontStyle||C[X].style,weight:C[X].fontWeight||C[X].weight,variant:C[X].fontVariant||C[X].variant};g(_[X][G].x,_[X][G].text,N,_[X][G].fontSize||12,V,H)}T[X]=(M.length/d|0)-P[X]}this.buffer.update(M),this.tickOffset=P,this.tickCount=T,this.labelOffset=F,this.labelCount=q},x.drawTicks=function(k,A,L,_,C,M,g,P){this.tickCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=g,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.tickCount[k],this.tickOffset[k]))},x.drawLabel=function(k,A,L,_,C,M,g,P){this.labelCount[k]&&(this.shader.uniforms.axis=M,this.shader.uniforms.color=C,this.shader.uniforms.angle=L,this.shader.uniforms.scale=A,this.shader.uniforms.offset=_,this.shader.uniforms.alignDir=g,this.shader.uniforms.alignOpt=P,this.vao.draw(this.gl.TRIANGLES,this.labelCount[k],this.labelOffset[k]))},x.dispose=function(){this.shader.dispose(),this.vao.dispose(),this.buffer.dispose()};function p(k,A){try{return u(k,A)}catch(L){return console.warn('error vectorizing text:"'+k+'" error:',L),{cells:[],positions:[]}}}function E(k,A,L,_,C,M){var g=s(k),P=l(k,[{buffer:g,size:3}]),T=c(k);T.attributes.position.location=0;var F=new v(k,T,g,P);return F.update(A,L,_,C,M),F}},6444:function(i,a){"use strict";a.create=s,a.equal=l;function o(u,c){var f=u+"",h=f.indexOf("."),d=0;h>=0&&(d=f.length-h-1);var v=Math.pow(10,d),x=Math.round(u*c*v),b=x+"";if(b.indexOf("e")>=0)return b;var p=x/v,E=x%v;x<0?(p=-Math.ceil(p)|0,E=-E|0):(p=Math.floor(p)|0,E=E|0);var k=""+p;if(x<0&&(k="-"+k),d){for(var A=""+E;A.length=u[0][h];--x)d.push({x:x*c[h],text:o(c[h],x)});f.push(d)}return f}function l(u,c){for(var f=0;f<3;++f){if(u[f].length!==c[f].length)return!1;for(var h=0;hk)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return p.bufferSubData(E,_,L),k}function v(p,E){for(var k=s.malloc(p.length,E),A=p.length,L=0;L=0;--A){if(E[A]!==k)return!1;k*=p[A]}return!0}h.update=function(p,E){if(typeof E!="number"&&(E=-1),this.bind(),typeof p=="object"&&typeof p.shape!="undefined"){var k=p.dtype;if(c.indexOf(k)<0&&(k="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var A=gl.getExtension("OES_element_index_uint");A&&k!=="uint16"?k="uint32":k="uint16"}if(k===p.dtype&&x(p.shape,p.stride))p.offset===0&&p.data.length===p.shape[0]?this.length=d(this.gl,this.type,this.length,this.usage,p.data,E):this.length=d(this.gl,this.type,this.length,this.usage,p.data.subarray(p.offset,p.shape[0]),E);else{var L=s.malloc(p.size,k),_=u(L,p.shape);l.assign(_,p),E<0?this.length=d(this.gl,this.type,this.length,this.usage,L,E):this.length=d(this.gl,this.type,this.length,this.usage,L.subarray(0,p.size),E),s.free(L)}}else if(Array.isArray(p)){var C;this.type===this.gl.ELEMENT_ARRAY_BUFFER?C=v(p,"uint16"):C=v(p,"float32"),E<0?this.length=d(this.gl,this.type,this.length,this.usage,C,E):this.length=d(this.gl,this.type,this.length,this.usage,C.subarray(0,p.length),E),s.free(C)}else if(typeof p=="object"&&typeof p.length=="number")this.length=d(this.gl,this.type,this.length,this.usage,p,E);else if(typeof p=="number"||p===void 0){if(E>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");p=p|0,p<=0&&(p=1),this.gl.bufferData(this.type,p|0,this.usage),this.length=p}else throw new Error("gl-buffer: Invalid data type")};function b(p,E,k,A){if(k=k||p.ARRAY_BUFFER,A=A||p.DYNAMIC_DRAW,k!==p.ARRAY_BUFFER&&k!==p.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(A!==p.DYNAMIC_DRAW&&A!==p.STATIC_DRAW&&A!==p.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var L=p.createBuffer(),_=new f(p,k,L,0,A);return _.update(E),_}i.exports=b},6405:function(i,a,o){"use strict";var s=o(2931);i.exports=function(u,c){var f=u.positions,h=u.vectors,d={positions:[],vertexIntensity:[],vertexIntensityBounds:u.vertexIntensityBounds,vectors:[],cells:[],coneOffset:u.coneOffset,colormap:u.colormap};if(u.positions.length===0)return c&&(c[0]=[0,0,0],c[1]=[0,0,0]),d;for(var v=0,x=1/0,b=-1/0,p=1/0,E=-1/0,k=1/0,A=-1/0,L=null,_=null,C=[],M=1/0,g=!1,P=u.coneSizemode==="raw",T=0;Tv&&(v=s.length(q)),T&&!P){var V=2*s.distance(L,F)/(s.length(_)+s.length(q));V?(M=Math.min(M,V),g=!1):g=!0}g||(L=F,_=q),C.push(q)}var H=[x,p,k],X=[b,E,A];c&&(c[0]=H,c[1]=X),v===0&&(v=1);var G=1/v;isFinite(M)||(M=1),d.vectorScale=M;var N=u.coneSize||(P?1:.5);u.absoluteConeSize&&(N=u.absoluteConeSize*G),d.coneScale=N;for(var T=0,W=0;T=1},p.isTransparent=function(){return this.opacity<1},p.pickSlots=1,p.setPickBase=function(C){this.pickId=C};function E(C){for(var M=v({colormap:C,nshades:256,format:"rgba"}),g=new Uint8Array(256*4),P=0;P<256;++P){for(var T=M[P],F=0;F<3;++F)g[4*P+F]=T[F];g[4*P+3]=T[3]*255}return d(g,[256,256,4],[4,0,1])}function k(C){for(var M=C.length,g=new Array(M),P=0;P0){var W=this.triShader;W.bind(),W.uniforms=V,this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}},p.drawPick=function(C){C=C||{};for(var M=this.gl,g=C.model||x,P=C.view||x,T=C.projection||x,F=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],q=0;q<3;++q)F[0][q]=Math.max(F[0][q],this.clipBounds[0][q]),F[1][q]=Math.min(F[1][q],this.clipBounds[1][q]);this._model=[].slice.call(g),this._view=[].slice.call(P),this._projection=[].slice.call(T),this._resolution=[M.drawingBufferWidth,M.drawingBufferHeight];var V={model:g,view:P,projection:T,clipBounds:F,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},H=this.pickShader;H.bind(),H.uniforms=V,this.triangleCount>0&&(this.triangleVAO.bind(),M.drawArrays(M.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind())},p.pick=function(C){if(!C||C.id!==this.pickId)return null;var M=C.value[0]+256*C.value[1]+65536*C.value[2],g=this.cells[M],P=this.positions[g[1]].slice(0,3),T={position:P,dataCoordinate:P,index:Math.floor(g[1]/48)};return this.traceType==="cone"?T.index=Math.floor(g[1]/48):this.traceType==="streamtube"&&(T.intensity=this.intensity[g[1]],T.velocity=this.vectors[g[1]].slice(0,3),T.divergence=this.vectors[g[1]][3],T.index=M),T},p.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()};function A(C,M){var g=s(C,M.meshShader.vertex,M.meshShader.fragment,null,M.meshShader.attributes);return g.attributes.position.location=0,g.attributes.color.location=2,g.attributes.uv.location=3,g.attributes.vector.location=4,g}function L(C,M){var g=s(C,M.pickShader.vertex,M.pickShader.fragment,null,M.pickShader.attributes);return g.attributes.position.location=0,g.attributes.id.location=1,g.attributes.vector.location=4,g}function _(C,M,g){var P=g.shaders;arguments.length===1&&(M=C,C=M.gl);var T=A(C,P),F=L(C,P),q=c(C,d(new Uint8Array([255,255,255,255]),[1,1,4]));q.generateMipmap(),q.minFilter=C.LINEAR_MIPMAP_LINEAR,q.magFilter=C.LINEAR;var V=l(C),H=l(C),X=l(C),G=l(C),N=l(C),W=u(C,[{buffer:V,type:C.FLOAT,size:4},{buffer:N,type:C.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:X,type:C.FLOAT,size:4},{buffer:G,type:C.FLOAT,size:2},{buffer:H,type:C.FLOAT,size:4}]),re=new b(C,q,T,F,V,H,N,X,G,W,g.traceType||"cone");return re.update(M),re}i.exports=_},614:function(i,a,o){var s=o(3236),l=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec3 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, coneScale, coneOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * conePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(conePosition, 1.0); + vec4 t_position = view * conePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = conePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),c=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float vectorScale, coneScale, coneOffset; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + gl_Position = projection * (view * conePosition); + f_id = id; + f_position = position.xyz; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(i){i.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(i,a,o){var s=o(737);i.exports=function(u){return s[u]}},9165:function(i,a,o){"use strict";i.exports=b;var s=o(2762),l=o(8116),u=o(3436),c=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function f(p,E,k,A){this.gl=p,this.shader=A,this.buffer=E,this.vao=k,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var h=f.prototype;h.isOpaque=function(){return!this.hasAlpha},h.isTransparent=function(){return this.hasAlpha},h.drawTransparent=h.draw=function(p){var E=this.gl,k=this.shader.uniforms;this.shader.bind();var A=k.view=p.view||c,L=k.projection=p.projection||c;k.model=p.model||c,k.clipBounds=this.clipBounds,k.opacity=this.opacity;var _=A[12],C=A[13],M=A[14],g=A[15],P=p._ortho||!1,T=P?2:1,F=T*this.pixelRatio*(L[3]*_+L[7]*C+L[11]*M+L[15]*g)/E.drawingBufferHeight;this.vao.bind();for(var q=0;q<3;++q)E.lineWidth(this.lineWidth[q]*this.pixelRatio),k.capSize=this.capSize[q]*F,this.lineCount[q]&&E.drawArrays(E.LINES,this.lineOffset[q],this.lineCount[q]);this.vao.unbind()};function d(p,E){for(var k=0;k<3;++k)p[0][k]=Math.min(p[0][k],E[k]),p[1][k]=Math.max(p[1][k],E[k])}var v=function(){for(var p=new Array(3),E=0;E<3;++E){for(var k=[],A=1;A<=2;++A)for(var L=-1;L<=1;L+=2){var _=(A+E)%3,C=[0,0,0];C[_]=L,k.push(C)}p[E]=k}return p}();function x(p,E,k,A){for(var L=v[A],_=0;_0){var V=P.slice();V[M]+=F[1][M],L.push(P[0],P[1],P[2],q[0],q[1],q[2],q[3],0,0,0,V[0],V[1],V[2],q[0],q[1],q[2],q[3],0,0,0),d(this.bounds,V),C+=2+x(L,V,q,M)}}}this.lineCount[M]=C-this.lineOffset[M]}this.buffer.update(L)}},h.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()};function b(p){var E=p.gl,k=s(E),A=l(E,[{buffer:k,type:E.FLOAT,size:3,offset:0,stride:40},{buffer:k,type:E.FLOAT,size:4,offset:12,stride:40},{buffer:k,type:E.FLOAT,size:3,offset:28,stride:40}]),L=u(E);L.attributes.position.location=0,L.attributes.color.location=1,L.attributes.offset.location=2;var _=new f(E,k,A,L);return _.update(p),_}},3436:function(i,a,o){"use strict";var s=o(3236),l=o(9405),u=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, offset; +attribute vec4 color; +uniform mat4 model, view, projection; +uniform float capSize; +varying vec4 fragColor; +varying vec3 fragPosition; + +void main() { + vec4 worldPosition = model * vec4(position, 1.0); + worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0); + gl_Position = projection * (view * worldPosition); + fragColor = color; + fragPosition = position; +}`]),c=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float opacity; +varying vec3 fragPosition; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], fragPosition) || + fragColor.a * opacity == 0. + ) discard; + + gl_FragColor = opacity * fragColor; +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(i,a,o){"use strict";var s=o(7766);i.exports=C;var l=null,u,c,f,h;function d(M){var g=M.getParameter(M.FRAMEBUFFER_BINDING),P=M.getParameter(M.RENDERBUFFER_BINDING),T=M.getParameter(M.TEXTURE_BINDING_2D);return[g,P,T]}function v(M,g){M.bindFramebuffer(M.FRAMEBUFFER,g[0]),M.bindRenderbuffer(M.RENDERBUFFER,g[1]),M.bindTexture(M.TEXTURE_2D,g[2])}function x(M,g){var P=M.getParameter(g.MAX_COLOR_ATTACHMENTS_WEBGL);l=new Array(P+1);for(var T=0;T<=P;++T){for(var F=new Array(P),q=0;q1&&H.drawBuffersWEBGL(l[V]);var re=P.getExtension("WEBGL_depth_texture");re?X?M.depth=p(P,F,q,re.UNSIGNED_INT_24_8_WEBGL,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G&&(M.depth=p(P,F,q,P.UNSIGNED_SHORT,P.DEPTH_COMPONENT,P.DEPTH_ATTACHMENT)):G&&X?M._depth_rb=E(P,F,q,P.DEPTH_STENCIL,P.DEPTH_STENCIL_ATTACHMENT):G?M._depth_rb=E(P,F,q,P.DEPTH_COMPONENT16,P.DEPTH_ATTACHMENT):X&&(M._depth_rb=E(P,F,q,P.STENCIL_INDEX,P.STENCIL_ATTACHMENT));var ae=P.checkFramebufferStatus(P.FRAMEBUFFER);if(ae!==P.FRAMEBUFFER_COMPLETE){M._destroyed=!0,P.bindFramebuffer(P.FRAMEBUFFER,null),P.deleteFramebuffer(M.handle),M.handle=null,M.depth&&(M.depth.dispose(),M.depth=null),M._depth_rb&&(P.deleteRenderbuffer(M._depth_rb),M._depth_rb=null);for(var W=0;WF||P<0||P>F)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");M._shape[0]=g,M._shape[1]=P;for(var q=d(T),V=0;Vq||P<0||P>q)throw new Error("gl-fbo: Parameters are too large for FBO");T=T||{};var V=1;if("color"in T){if(V=Math.max(T.color|0,0),V<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(V>1)if(F){if(V>M.getParameter(F.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+V+" draw buffers")}else throw new Error("gl-fbo: Multiple draw buffer extension not supported")}var H=M.UNSIGNED_BYTE,X=M.getExtension("OES_texture_float");if(T.float&&V>0){if(!X)throw new Error("gl-fbo: Context does not support floating point textures");H=M.FLOAT}else T.preferFloat&&V>0&&X&&(H=M.FLOAT);var G=!0;"depth"in T&&(G=!!T.depth);var N=!1;return"stencil"in T&&(N=!!T.stencil),new A(M,g,P,H,V,G,N,F)}},2992:function(i,a,o){var s=o(3387).sprintf,l=o(5171),u=o(1848),c=o(1085);i.exports=f;function f(h,d,v){"use strict";var x=u(d)||"of unknown name (see npm glsl-shader-name)",b="unknown type";v!==void 0&&(b=v===l.FRAGMENT_SHADER?"fragment":"vertex");for(var p=s(`Error compiling %s shader %s: +`,b,x),E=s("%s%s",p,h),k=h.split(` +`),A={},L=0;L max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D dashTexture; +uniform float dashScale; +uniform float opacity; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], worldPosition) || + fragColor.a * opacity == 0. + ) discard; + + float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r; + if(dashWeight < 0.5) { + discard; + } + gl_FragColor = fragColor * opacity; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +#define FLOAT_MAX 1.70141184e38 +#define FLOAT_MIN 1.17549435e-38 + +// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl +vec4 packFloat(float v) { + float av = abs(v); + + //Handle special cases + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(127.0, 128.0, 0.0, 0.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(255.0, 128.0, 0.0, 0.0) / 255.0; + } + + vec4 c = vec4(0,0,0,0); + + //Compute exponent and mantissa + float e = floor(log2(av)); + float m = av * pow(2.0, -e) - 1.0; + + //Unpack mantissa + c[1] = floor(128.0 * m); + m -= c[1] / 128.0; + c[2] = floor(32768.0 * m); + m -= c[2] / 32768.0; + c[3] = floor(8388608.0 * m); + + //Unpack exponent + float ebias = e + 127.0; + c[0] = floor(ebias / 2.0); + ebias -= c[0] * 2.0; + c[1] += floor(ebias) * 128.0; + + //Unpack sign bit + c[0] += 128.0 * step(0.0, -v); + + //Scale back to range + return c / 255.0; +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform float pickId; +uniform vec3 clipBounds[2]; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard; + + gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz); +}`]),h=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];a.createShader=function(d){return l(d,u,c,null,h)},a.createPickShader=function(d){return l(d,u,f,null,h)}},5714:function(i,a,o){"use strict";i.exports=M;var s=o(2762),l=o(8116),u=o(7766),c=new Uint8Array(4),f=new Float32Array(c.buffer);function h(g,P,T,F){return c[0]=F,c[1]=T,c[2]=P,c[3]=g,f[0]}var d=o(2478),v=o(9618),x=o(7319),b=x.createShader,p=x.createPickShader,E=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function k(g,P){for(var T=0,F=0;F<3;++F){var q=g[F]-P[F];T+=q*q}return Math.sqrt(T)}function A(g){for(var P=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],T=0;T<3;++T)P[0][T]=Math.max(g[0][T],P[0][T]),P[1][T]=Math.min(g[1][T],P[1][T]);return P}function L(g,P,T,F){this.arcLength=g,this.position=P,this.index=T,this.dataCoordinate=F}function _(g,P,T,F,q,V){this.gl=g,this.shader=P,this.pickShader=T,this.buffer=F,this.vao=q,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=V,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var C=_.prototype;C.isTransparent=function(){return this.hasAlpha},C.isOpaque=function(){return!this.hasAlpha},C.pickSlots=1,C.setPickBase=function(g){this.pickId=g},C.drawTransparent=C.draw=function(g){if(this.vertexCount){var P=this.gl,T=this.shader,F=this.vao;T.bind(),T.uniforms={model:g.model||E,view:g.view||E,projection:g.projection||E,clipBounds:A(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},F.bind(),F.draw(P.TRIANGLE_STRIP,this.vertexCount),F.unbind()}},C.drawPick=function(g){if(this.vertexCount){var P=this.gl,T=this.pickShader,F=this.vao;T.bind(),T.uniforms={model:g.model||E,view:g.view||E,projection:g.projection||E,pickId:this.pickId,clipBounds:A(this.clipBounds),screenShape:[P.drawingBufferWidth,P.drawingBufferHeight],pixelRatio:this.pixelRatio},F.bind(),F.draw(P.TRIANGLE_STRIP,this.vertexCount),F.unbind()}},C.update=function(g){var P,T;this.dirty=!0;var F=!!g.connectGaps;"dashScale"in g&&(this.dashScale=g.dashScale),this.hasAlpha=!1,"opacity"in g&&(this.opacity=+g.opacity,this.opacity<1&&(this.hasAlpha=!0));var q=[],V=[],H=[],X=0,G=0,N=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],W=g.position||g.positions;if(W){var re=g.color||g.colors||[0,0,0,1],ae=g.lineWidth||1,_e=!1;e:for(P=1;P0){for(var ge=0;ge<24;++ge)q.push(q[q.length-12]);G+=2,_e=!0}continue e}N[0][T]=Math.min(N[0][T],Me[T],ke[T]),N[1][T]=Math.max(N[1][T],Me[T],ke[T])}var ie,Te;Array.isArray(re[0])?(ie=re.length>P-1?re[P-1]:re.length>0?re[re.length-1]:[0,0,0,1],Te=re.length>P?re[P]:re.length>0?re[re.length-1]:[0,0,0,1]):ie=Te=re,ie.length===3&&(ie=[ie[0],ie[1],ie[2],1]),Te.length===3&&(Te=[Te[0],Te[1],Te[2],1]),!this.hasAlpha&&ie[3]<1&&(this.hasAlpha=!0);var Ee;Array.isArray(ae)?Ee=ae.length>P-1?ae[P-1]:ae.length>0?ae[ae.length-1]:[0,0,0,1]:Ee=ae;var Ae=X;if(X+=k(Me,ke),_e){for(T=0;T<2;++T)q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3]);G+=2,_e=!1}q.push(Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,Ee,ie[0],ie[1],ie[2],ie[3],Me[0],Me[1],Me[2],ke[0],ke[1],ke[2],Ae,-Ee,ie[0],ie[1],ie[2],ie[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,-Ee,Te[0],Te[1],Te[2],Te[3],ke[0],ke[1],ke[2],Me[0],Me[1],Me[2],X,Ee,Te[0],Te[1],Te[2],Te[3]),G+=4}}if(this.buffer.update(q),V.push(X),H.push(W[W.length-1].slice()),this.bounds=N,this.vertexCount=G,this.points=H,this.arcLength=V,"dashes"in g){var ze=g.dashes,Ce=ze.slice();for(Ce.unshift(0),P=1;P1.0001)return null;T+=P[L]}return Math.abs(T-1)>.001?null:[_,h(v,P),P]}},840:function(i,a,o){var s=o(3236),l=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, normal; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model + , view + , projection + , inverseModel; +uniform vec3 eyePosition + , lightPosition; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +vec4 project(vec3 p) { + return projection * (view * (model * vec4(p, 1.0))); +} + +void main() { + gl_Position = project(position); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * vec4(position , 1.0); + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + f_color = color; + f_data = position; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness + , fresnel + , kambient + , kdiffuse + , kspecular; +uniform sampler2D texture; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (f_color.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], f_data) + ) discard; + + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d + + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * f_color.a; +} +`]),c=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model, view, projection; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_color = color; + f_data = position; + f_uv = uv; +}`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard; + + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),h=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; +attribute float pointSize; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + } + gl_PointSize = pointSize; + f_color = color; + f_uv = uv; +}`]),d=s([`precision highp float; +#define GLSLIFY 1 + +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5); + if(dot(pointR, pointR) > 0.25) { + discard; + } + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),v=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 id; + +uniform mat4 model, view, projection; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_id = id; + f_position = position; +}`]),x=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]),b=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute float pointSize; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + gl_PointSize = pointSize; + } + f_id = id; + f_position = position; +}`]),p=s([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; + +uniform mat4 model, view, projection; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); +}`]),E=s([`precision highp float; +#define GLSLIFY 1 + +uniform vec3 contourColor; + +void main() { + gl_FragColor = vec4(contourColor, 1.0); +} +`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.wireShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},a.pointShader={vertex:h,fragment:d,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},a.pickShader={vertex:v,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},a.pointPickShader={vertex:b,fragment:x,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},a.contourShader={vertex:p,fragment:E,attributes:[{name:"position",type:"vec3"}]}},7201:function(i,a,o){"use strict";var s=1e-6,l=1e-6,u=o(9405),c=o(2762),f=o(8116),h=o(7766),d=o(8406),v=o(6760),x=o(7608),b=o(9618),p=o(6729),E=o(7765),k=o(1888),A=o(840),L=o(7626),_=A.meshShader,C=A.wireShader,M=A.pointShader,g=A.pickShader,P=A.pointPickShader,T=A.contourShader,F=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function q(ge,ie,Te,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St){this.gl=ge,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=ie,this.dirty=!0,this.triShader=Te,this.lineShader=Ee,this.pointShader=Ae,this.pickShader=ze,this.pointPickShader=Ce,this.contourShader=me,this.trianglePositions=Re,this.triangleColors=Ge,this.triangleNormals=ct,this.triangleUVs=nt,this.triangleIds=ce,this.triangleVAO=qt,this.triangleCount=0,this.lineWidth=1,this.edgePositions=rt,this.edgeColors=Rt,this.edgeUVs=kt,this.edgeIds=ot,this.edgeVAO=Ct,this.edgeCount=0,this.pointPositions=Yt,this.pointColors=er,this.pointUVs=Ke,this.pointSizes=xt,this.pointIds=xr,this.pointVAO=bt,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=Lt,this.contourVAO=St,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=F,this._view=F,this._projection=F,this._resolution=[1,1]}var V=q.prototype;V.isOpaque=function(){return!this.hasAlpha},V.isTransparent=function(){return this.hasAlpha},V.pickSlots=1,V.setPickBase=function(ge){this.pickId=ge};function H(ge,ie){if(!ie||!ie.length)return 1;for(var Te=0;Tege&&Te>0){var Ee=(ie[Te][0]-ge)/(ie[Te][0]-ie[Te-1][0]);return ie[Te][1]*(1-Ee)+Ee*ie[Te-1][1]}}return 1}function X(ge,ie){for(var Te=p({colormap:ge,nshades:256,format:"rgba"}),Ee=new Uint8Array(256*4),Ae=0;Ae<256;++Ae){for(var ze=Te[Ae],Ce=0;Ce<3;++Ce)Ee[4*Ae+Ce]=ze[Ce];ie?Ee[4*Ae+3]=255*H(Ae/255,ie):Ee[4*Ae+3]=255*ze[3]}return b(Ee,[256,256,4],[4,0,1])}function G(ge){for(var ie=ge.length,Te=new Array(ie),Ee=0;Ee0){var ct=this.triShader;ct.bind(),ct.uniforms=me,this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var ct=this.lineShader;ct.bind(),ct.uniforms=me,this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()}if(this.pointCount>0){var ct=this.pointShader;ct.bind(),ct.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var ct=this.contourShader;ct.bind(),ct.uniforms=me,this.contourVAO.bind(),ie.drawArrays(ie.LINES,0,this.contourCount),this.contourVAO.unbind()}},V.drawPick=function(ge){ge=ge||{};for(var ie=this.gl,Te=ge.model||F,Ee=ge.view||F,Ae=ge.projection||F,ze=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],Ce=0;Ce<3;++Ce)ze[0][Ce]=Math.max(ze[0][Ce],this.clipBounds[0][Ce]),ze[1][Ce]=Math.min(ze[1][Ce],this.clipBounds[1][Ce]);this._model=[].slice.call(Te),this._view=[].slice.call(Ee),this._projection=[].slice.call(Ae),this._resolution=[ie.drawingBufferWidth,ie.drawingBufferHeight];var me={model:Te,view:Ee,projection:Ae,clipBounds:ze,pickId:this.pickId/255},Re=this.pickShader;if(Re.bind(),Re.uniforms=me,this.triangleCount>0&&(this.triangleVAO.bind(),ie.drawArrays(ie.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),ie.lineWidth(this.lineWidth*this.pixelRatio),ie.drawArrays(ie.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()),this.pointCount>0){var Re=this.pointPickShader;Re.bind(),Re.uniforms=me,this.pointVAO.bind(),ie.drawArrays(ie.POINTS,0,this.pointCount),this.pointVAO.unbind()}},V.pick=function(ge){if(!ge||ge.id!==this.pickId)return null;for(var ie=ge.value[0]+256*ge.value[1]+65536*ge.value[2],Te=this.cells[ie],Ee=this.positions,Ae=new Array(Te.length),ze=0;zeMath.abs(g))p.rotate(F,0,0,-M*P*Math.PI*_.rotateSpeed/window.innerWidth);else if(!_._ortho){var q=-_.zoomSpeed*T*g/window.innerHeight*(F-p.lastT())/20;p.pan(F,0,0,k*(Math.exp(q)-1))}}},!0)},_.enableMouseListeners(),_}},799:function(i,a,o){var s=o(3236),l=o(9405),u=s([`precision mediump float; +#define GLSLIFY 1 +attribute vec2 position; +varying vec2 uv; +void main() { + uv = position; + gl_Position = vec4(position, 0, 1); +}`]),c=s([`precision mediump float; +#define GLSLIFY 1 + +uniform sampler2D accumBuffer; +varying vec2 uv; + +void main() { + vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); + gl_FragColor = min(vec4(1,1,1,1), accum); +}`]);i.exports=function(f){return l(f,u,c,null,[{name:"position",type:"vec2"}])}},4100:function(i,a,o){"use strict";var s=o(4437),l=o(3837),u=o(5445),c=o(4449),f=o(3589),h=o(2260),d=o(7169),v=o(351),x=o(4772),b=o(4040),p=o(799),E=o(9216)({tablet:!0,featureDetect:!0});i.exports={createScene:C,createCamera:s};function k(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function A(g,P){var T=null;try{T=g.getContext("webgl",P),T||(T=g.getContext("experimental-webgl",P))}catch(F){return null}return T}function L(g){var P=Math.round(Math.log(Math.abs(g))/Math.log(10));if(P<0){var T=Math.round(Math.pow(10,-P));return Math.ceil(g*T)/T}else if(P>0){var T=Math.round(Math.pow(10,P));return Math.ceil(g/T)*T}return Math.ceil(g)}function _(g){return typeof g=="boolean"?g:!0}function C(g){g=g||{},g.camera=g.camera||{};var P=g.canvas;if(!P)if(P=document.createElement("canvas"),g.container){var T=g.container;T.appendChild(P)}else document.body.appendChild(P);var F=g.gl;if(F||(g.glOptions&&(E=!!g.glOptions.preserveDrawingBuffer),F=A(P,g.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:E})),!F)throw new Error("webgl not supported");var q=g.bounds||[[-10,-10,-10],[10,10,10]],V=new k,H=h(F,F.drawingBufferWidth,F.drawingBufferHeight,{preferFloat:!E}),X=p(F),G=g.cameraObject&&g.cameraObject._ortho===!0||g.camera.projection&&g.camera.projection.type==="orthographic"||!1,N={eye:g.camera.eye||[2,0,0],center:g.camera.center||[0,0,0],up:g.camera.up||[0,1,0],zoomMin:g.camera.zoomMax||.1,zoomMax:g.camera.zoomMin||100,mode:g.camera.mode||"turntable",_ortho:G},W=g.axes||{},re=l(F,W);re.enable=!W.disable;var ae=g.spikes||{},_e=c(F,ae),Me=[],ke=[],ge=[],ie=[],Te=!0,Ce=!0,Ee=new Array(16),Ae=new Array(16),ze={view:null,projection:Ee,model:Ae,_ortho:!1},Ce=!0,me=[F.drawingBufferWidth,F.drawingBufferHeight],Re=g.cameraObject||s(P,N),ce={gl:F,contextLost:!1,pixelRatio:g.pixelRatio||1,canvas:P,selection:V,camera:Re,axes:re,axesPixels:null,spikes:_e,bounds:q,objects:Me,shape:me,aspect:g.aspectRatio||[1,1,1],pickRadius:g.pickRadius||10,zNear:g.zNear||.01,zFar:g.zFar||1e3,fovy:g.fovy||Math.PI/4,clearColor:g.clearColor||[0,0,0,0],autoResize:_(g.autoResize),autoBounds:_(g.autoBounds),autoScale:!!g.autoScale,autoCenter:_(g.autoCenter),clipToBounds:_(g.clipToBounds),snapToData:!!g.snapToData,onselect:g.onselect||null,onrender:g.onrender||null,onclick:g.onclick||null,cameraParams:ze,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(Yt){this.aspect[0]=Yt.x,this.aspect[1]=Yt.y,this.aspect[2]=Yt.z,Ce=!0},setBounds:function(Yt,xr){this.bounds[0][Yt]=xr.min,this.bounds[1][Yt]=xr.max},setClearColor:function(Yt){this.clearColor=Yt},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},Ge=[F.drawingBufferWidth/ce.pixelRatio|0,F.drawingBufferHeight/ce.pixelRatio|0];function nt(){if(!ce._stopped&&ce.autoResize){var Yt=P.parentNode,xr=1,er=1;Yt&&Yt!==document.body?(xr=Yt.clientWidth,er=Yt.clientHeight):(xr=window.innerWidth,er=window.innerHeight);var Ke=Math.ceil(xr*ce.pixelRatio)|0,xt=Math.ceil(er*ce.pixelRatio)|0;if(Ke!==P.width||xt!==P.height){P.width=Ke,P.height=xt;var bt=P.style;bt.position=bt.position||"absolute",bt.left="0px",bt.top="0px",bt.width=xr+"px",bt.height=er+"px",Te=!0}}}ce.autoResize&&nt(),window.addEventListener("resize",nt);function ct(){for(var Yt=Me.length,xr=ie.length,er=0;er0&&ge[xr-1]===0;)ge.pop(),ie.pop().dispose()}ce.update=function(Yt){ce._stopped||(Yt=Yt||{},Te=!0,Ce=!0)},ce.add=function(Yt){ce._stopped||(Yt.axes=re,Me.push(Yt),ke.push(-1),Te=!0,Ce=!0,ct())},ce.remove=function(Yt){if(!ce._stopped){var xr=Me.indexOf(Yt);xr<0||(Me.splice(xr,1),ke.pop(),Te=!0,Ce=!0,ct())}},ce.dispose=function(){if(!ce._stopped&&(ce._stopped=!0,window.removeEventListener("resize",nt),P.removeEventListener("webglcontextlost",qt),ce.mouseListener.enabled=!1,!ce.contextLost)){re.dispose(),_e.dispose();for(var Yt=0;YtV.distance)continue;for(var dt=0;dt1e-6?(E=Math.acos(k),A=Math.sin(E),L=Math.sin((1-u)*E)/A,_=Math.sin(u*E)/A):(L=1-u,_=u),o[0]=L*c+_*v,o[1]=L*f+_*x,o[2]=L*h+_*b,o[3]=L*d+_*p,o}},5964:function(i){"use strict";i.exports=function(a){return!a&&a!==0?"":a.toString()}},9366:function(i,a,o){"use strict";var s=o(4359);i.exports=u;var l={};function u(c,f,h){var d=[f.style,f.weight,f.variant,f.family].join("_"),v=l[d];if(v||(v=l[d]={}),c in v)return v[c];var x={textAlign:"center",textBaseline:"middle",lineHeight:1,font:f.family,fontStyle:f.style,fontWeight:f.weight,fontVariant:f.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}};x.triangles=!0;var b=s(c,x);x.triangles=!1;var p=s(c,x),E,k;if(h&&h!==1){for(E=0;E max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform vec4 highlightId; +uniform float highlightScale; +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = 1.0; + if(distance(highlightId, id) < 0.0001) { + scale = highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1); + vec4 viewPosition = view * worldPosition; + viewPosition = viewPosition / viewPosition.w; + vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0)); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),c=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float highlightScale, pixelRatio; +uniform vec4 highlightId; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = pixelRatio; + if(distance(highlightId.bgr, id.bgr) < 0.001) { + scale *= highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1.0); + vec4 viewPosition = view * worldPosition; + vec4 clipPosition = projection * viewPosition; + clipPosition /= clipPosition.w; + + gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0); + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),f=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform float highlightScale; +uniform vec4 highlightId; +uniform vec3 axes[2]; +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float scale, pixelRatio; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float lscale = pixelRatio * scale; + if(distance(highlightId, id) < 0.0001) { + lscale *= highlightScale; + } + + vec4 clipCenter = projection * (view * (model * vec4(position, 1))); + vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y; + vec4 clipPosition = projection * (view * (model * vec4(dataPosition, 1))); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = dataPosition; + } +} +`]),h=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float opacity; + +varying vec4 interpColor; +varying vec3 dataCoordinate; + +void main() { + if ( + outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) || + interpColor.a * opacity == 0. + ) discard; + gl_FragColor = interpColor * opacity; +} +`]),d=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float pickGroup; + +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard; + + gl_FragColor = vec4(pickGroup, pickId.bgr); +}`]),v=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],x={vertex:u,fragment:h,attributes:v},b={vertex:c,fragment:h,attributes:v},p={vertex:f,fragment:h,attributes:v},E={vertex:u,fragment:d,attributes:v},k={vertex:c,fragment:d,attributes:v},A={vertex:f,fragment:d,attributes:v};function L(_,C){var M=s(_,C),g=M.attributes;return g.position.location=0,g.color.location=1,g.glyph.location=2,g.id.location=3,M}a.createPerspective=function(_){return L(_,x)},a.createOrtho=function(_){return L(_,b)},a.createProject=function(_){return L(_,p)},a.createPickPerspective=function(_){return L(_,E)},a.createPickOrtho=function(_){return L(_,k)},a.createPickProject=function(_){return L(_,A)}},8418:function(i,a,o){"use strict";var s=o(5219),l=o(2762),u=o(8116),c=o(1888),f=o(6760),h=o(1283),d=o(9366),v=o(5964),x=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],b=ArrayBuffer,p=DataView;function E(Ae){return b.isView(Ae)&&!(Ae instanceof p)}function k(Ae){return Array.isArray(Ae)||E(Ae)}i.exports=Ee;function A(Ae,ze){var Ce=Ae[0],me=Ae[1],Re=Ae[2],ce=Ae[3];return Ae[0]=ze[0]*Ce+ze[4]*me+ze[8]*Re+ze[12]*ce,Ae[1]=ze[1]*Ce+ze[5]*me+ze[9]*Re+ze[13]*ce,Ae[2]=ze[2]*Ce+ze[6]*me+ze[10]*Re+ze[14]*ce,Ae[3]=ze[3]*Ce+ze[7]*me+ze[11]*Re+ze[15]*ce,Ae}function L(Ae,ze,Ce,me){return A(me,me,Ce),A(me,me,ze),A(me,me,Ae)}function _(Ae,ze){this.index=Ae,this.dataCoordinate=this.position=ze}function C(Ae){return Ae===!0||Ae>1?1:Ae}function M(Ae,ze,Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot){this.gl=Ae,this.pixelRatio=1,this.shader=ze,this.orthoShader=Ce,this.projectShader=me,this.pointBuffer=Re,this.colorBuffer=ce,this.glyphBuffer=Ge,this.idBuffer=nt,this.vao=ct,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=qt,this.pickOrthoShader=rt,this.pickProjectShader=ot,this.points=[],this._selectResult=new _(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}var g=M.prototype;g.pickSlots=1,g.setPickBase=function(Ae){this.pickId=Ae},g.isTransparent=function(){if(this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&this.projectHasAlpha)return!0;return!1},g.isOpaque=function(){if(!this.hasAlpha)return!0;for(var Ae=0;Ae<3;++Ae)if(this.axesProject[Ae]&&!this.projectHasAlpha)return!0;return!1};var P=[0,0],T=[0,0,0],F=[0,0,0],q=[0,0,0,1],V=[0,0,0,1],H=x.slice(),X=[0,0,0],G=[[0,0,0],[0,0,0]];function N(Ae){return Ae[0]=Ae[1]=Ae[2]=0,Ae}function W(Ae,ze){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[3]=1,Ae}function re(Ae,ze,Ce,me){return Ae[0]=ze[0],Ae[1]=ze[1],Ae[2]=ze[2],Ae[Ce]=me,Ae}function ae(Ae){for(var ze=G,Ce=0;Ce<2;++Ce)for(var me=0;me<3;++me)ze[Ce][me]=Math.max(Math.min(Ae[Ce][me],1e8),-1e8);return ze}function _e(Ae,ze,Ce,me){var Re=ze.axesProject,ce=ze.gl,Ge=Ae.uniforms,nt=Ce.model||x,ct=Ce.view||x,qt=Ce.projection||x,rt=ze.axesBounds,ot=ae(ze.clipBounds),Rt;ze.axes&&ze.axes.lastCubeProps?Rt=ze.axes.lastCubeProps.axis:Rt=[1,1,1],P[0]=2/ce.drawingBufferWidth,P[1]=2/ce.drawingBufferHeight,Ae.bind(),Ge.view=ct,Ge.projection=qt,Ge.screenSize=P,Ge.highlightId=ze.highlightId,Ge.highlightScale=ze.highlightScale,Ge.clipBounds=ot,Ge.pickGroup=ze.pickId/255,Ge.pixelRatio=me;for(var kt=0;kt<3;++kt)if(Re[kt]){Ge.scale=ze.projectScale[kt],Ge.opacity=ze.projectOpacity[kt];for(var Ct=H,Yt=0;Yt<16;++Yt)Ct[Yt]=0;for(var Yt=0;Yt<4;++Yt)Ct[5*Yt]=1;Ct[5*kt]=0,Rt[kt]<0?Ct[12+kt]=rt[0][kt]:Ct[12+kt]=rt[1][kt],f(Ct,nt,Ct),Ge.model=Ct;var xr=(kt+1)%3,er=(kt+2)%3,Ke=N(T),xt=N(F);Ke[xr]=1,xt[er]=1;var bt=L(qt,ct,nt,W(q,Ke)),Lt=L(qt,ct,nt,W(V,xt));if(Math.abs(bt[1])>Math.abs(Lt[1])){var St=bt;bt=Lt,Lt=St,St=Ke,Ke=xt,xt=St;var Et=xr;xr=er,er=Et}bt[0]<0&&(Ke[xr]=-1),Lt[1]>0&&(xt[er]=-1);for(var dt=0,Ht=0,Yt=0;Yt<4;++Yt)dt+=Math.pow(nt[4*xr+Yt],2),Ht+=Math.pow(nt[4*er+Yt],2);Ke[xr]/=Math.sqrt(dt),xt[er]/=Math.sqrt(Ht),Ge.axes[0]=Ke,Ge.axes[1]=xt,Ge.fragClipBounds[0]=re(X,ot[0],kt,-1e8),Ge.fragClipBounds[1]=re(X,ot[1],kt,1e8),ze.vao.bind(),ze.vao.draw(ce.TRIANGLES,ze.vertexCount),ze.lineWidth>0&&(ce.lineWidth(ze.lineWidth*me),ze.vao.draw(ce.LINES,ze.lineVertexCount,ze.vertexCount)),ze.vao.unbind()}}var Me=[-1e8,-1e8,-1e8],ke=[1e8,1e8,1e8],ge=[Me,ke];function ie(Ae,ze,Ce,me,Re,ce,Ge){var nt=Ce.gl;if((ce===Ce.projectHasAlpha||Ge)&&_e(ze,Ce,me,Re),ce===Ce.hasAlpha||Ge){Ae.bind();var ct=Ae.uniforms;ct.model=me.model||x,ct.view=me.view||x,ct.projection=me.projection||x,P[0]=2/nt.drawingBufferWidth,P[1]=2/nt.drawingBufferHeight,ct.screenSize=P,ct.highlightId=Ce.highlightId,ct.highlightScale=Ce.highlightScale,ct.fragClipBounds=ge,ct.clipBounds=Ce.axes.bounds,ct.opacity=Ce.opacity,ct.pickGroup=Ce.pickId/255,ct.pixelRatio=Re,Ce.vao.bind(),Ce.vao.draw(nt.TRIANGLES,Ce.vertexCount),Ce.lineWidth>0&&(nt.lineWidth(Ce.lineWidth*Re),Ce.vao.draw(nt.LINES,Ce.lineVertexCount,Ce.vertexCount)),Ce.vao.unbind()}}g.draw=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!1,!1)},g.drawTransparent=function(Ae){var ze=this.useOrtho?this.orthoShader:this.shader;ie(ze,this.projectShader,this,Ae,this.pixelRatio,!0,!1)},g.drawPick=function(Ae){var ze=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;ie(ze,this.pickProjectShader,this,Ae,1,!0,!0)},g.pick=function(Ae){if(!Ae||Ae.id!==this.pickId)return null;var ze=Ae.value[2]+(Ae.value[1]<<8)+(Ae.value[0]<<16);if(ze>=this.pointCount||ze<0)return null;var Ce=this.points[ze],me=this._selectResult;me.index=ze;for(var Re=0;Re<3;++Re)me.position[Re]=me.dataCoordinate[Re]=Ce[Re];return me},g.highlight=function(Ae){if(!Ae)this.highlightId=[1,1,1,1];else{var ze=Ae.index,Ce=ze&255,me=ze>>8&255,Re=ze>>16&255;this.highlightId=[Ce/255,me/255,Re/255,0]}};function Te(Ae,ze,Ce,me){var Re;k(Ae)?ze0){var Nr=0,ut=er,Ne=[0,0,0,1],Ye=[0,0,0,1],Ve=k(Rt)&&k(Rt[0]),Xe=k(Yt)&&k(Yt[0]);e:for(var me=0;me0?1-Ht[0][0]:Vt<0?1+Ht[1][0]:1,ar*=ar>0?1-Ht[0][1]:ar<0?1+Ht[1][1]:1;for(var Qr=[Vt,ar],nn=Et.cells||[],Wi=Et.positions||[],Lt=0;Ltthis.buffer.length){l.free(this.buffer);for(var k=this.buffer=l.mallocUint8(c(E*p*4)),A=0;Ak)for(p=k;pE)for(p=E;p=0){for(var G=X.type.charAt(X.type.length-1)|0,N=new Array(G),W=0;W=0;)re+=1;V[H]=re}var ae=new Array(k.length);function _e(){_.program=c.program(C,_._vref,_._fref,q,V);for(var Me=0;Me=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+_+": "+C);f(v,x,M[0],p,g,E,_)}else if(C.indexOf("mat")>=0){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new s("","Invalid data type for attribute "+_+": "+C);h(v,x,M,p,g,E,_)}else throw new s("","Unknown data type for attribute "+_+": "+C);break}}return E}},3327:function(i,a,o){"use strict";var s=o(216),l=o(8866);i.exports=f;function u(h){return function(){return h}}function c(h,d){for(var v=new Array(h),x=0;x4)throw new l("","Invalid data type");switch(re.charAt(0)){case"b":case"i":h["uniform"+ae+"iv"](x[V],H);break;case"v":h["uniform"+ae+"fv"](x[V],H);break;default:throw new l("","Unrecognized data type for vector "+name+": "+re)}}else if(re.indexOf("mat")===0&&re.length===4){if(ae=re.charCodeAt(re.length-1)-48,ae<2||ae>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+re);h["uniformMatrix"+ae+"fv"](x[V],!1,H);break}else throw new l("","Unknown uniform data type for "+name+": "+re)}}}}}function E(C,M){if(typeof M!="object")return[[C,M]];var g=[];for(var P in M){var T=M[P],F=C;parseInt(P)+""===P?F+="["+P+"]":F+="."+P,typeof T=="object"?g.push.apply(g,E(F,T)):g.push([F,T])}return g}function k(C){switch(C){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var M=C.indexOf("vec");if(0<=M&&M<=1&&C.length===4+M){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid data type");return C.charAt(0)==="b"?c(g,!1):c(g,0)}else if(C.indexOf("mat")===0&&C.length===4){var g=C.charCodeAt(C.length-1)-48;if(g<2||g>4)throw new l("","Invalid uniform dimension type for matrix "+name+": "+C);return c(g*g,0)}else throw new l("","Unknown uniform data type for "+name+": "+C)}}function A(C,M,g){if(typeof g=="object"){var P=L(g);Object.defineProperty(C,M,{get:u(P),set:p(g),enumerable:!0,configurable:!1})}else x[g]?Object.defineProperty(C,M,{get:b(g),set:p(g),enumerable:!0,configurable:!1}):C[M]=k(v[g].type)}function L(C){var M;if(Array.isArray(C)){M=new Array(C.length);for(var g=0;g1){v[0]in h||(h[v[0]]=[]),h=h[v[0]];for(var x=1;x1)for(var E=0;E 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, tubeScale; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * tubePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(tubePosition, 1.0); + vec4 t_position = view * tubePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = tubePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),u=s([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),c=s([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float tubeScale; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + gl_Position = projection * (view * tubePosition); + f_id = id; + f_position = position.xyz; +} +`]),f=s([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);a.meshShader={vertex:l,fragment:u,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},a.pickShader={vertex:c,fragment:f,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7815:function(i,a,o){"use strict";var s=o(2931),l=o(9970),u=["xyz","xzy","yxz","yzx","zxy","zyx"],c=function(A,L,_,C){for(var M=A.points,g=A.velocities,P=A.divergences,T=[],F=[],q=[],V=[],H=[],X=[],G=0,N=0,W=l.create(),re=l.create(),ae=8,_e=0;_e0)for(var ie=0;ieL)return C-1}return C},d=function(A,L,_){return A_?_:A},v=function(A,L,_){var C=L.vectors,M=L.meshgrid,g=A[0],P=A[1],T=A[2],F=M[0].length,q=M[1].length,V=M[2].length,H=h(M[0],g),X=h(M[1],P),G=h(M[2],T),N=H+1,W=X+1,re=G+1;if(H=d(H,0,F-1),N=d(N,0,F-1),X=d(X,0,q-1),W=d(W,0,q-1),G=d(G,0,V-1),re=d(re,0,V-1),H<0||X<0||G<0||N>F-1||W>q-1||re>V-1)return s.create();var ae=M[0][H],_e=M[0][N],Me=M[1][X],ke=M[1][W],ge=M[2][G],ie=M[2][re],Te=(g-ae)/(_e-ae),Ee=(P-Me)/(ke-Me),Ae=(T-ge)/(ie-ge);isFinite(Te)||(Te=.5),isFinite(Ee)||(Ee=.5),isFinite(Ae)||(Ae=.5);var ze,Ce,me,Re,ce,Ge;switch(_.reversedX&&(H=F-1-H,N=F-1-N),_.reversedY&&(X=q-1-X,W=q-1-W),_.reversedZ&&(G=V-1-G,re=V-1-re),_.filled){case 5:ce=G,Ge=re,me=X*V,Re=W*V,ze=H*V*q,Ce=N*V*q;break;case 4:ce=G,Ge=re,ze=H*V,Ce=N*V,me=X*V*F,Re=W*V*F;break;case 3:me=X,Re=W,ce=G*q,Ge=re*q,ze=H*q*V,Ce=N*q*V;break;case 2:me=X,Re=W,ze=H*q,Ce=N*q,ce=G*q*F,Ge=re*q*F;break;case 1:ze=H,Ce=N,ce=G*F,Ge=re*F,me=X*F*V,Re=W*F*V;break;default:ze=H,Ce=N,me=X*F,Re=W*F,ce=G*F*q,Ge=re*F*q;break}var nt=C[ze+me+ce],ct=C[ze+me+Ge],qt=C[ze+Re+ce],rt=C[ze+Re+Ge],ot=C[Ce+me+ce],Rt=C[Ce+me+Ge],kt=C[Ce+Re+ce],Ct=C[Ce+Re+Ge],Yt=s.create(),xr=s.create(),er=s.create(),Ke=s.create();s.lerp(Yt,nt,ot,Te),s.lerp(xr,ct,Rt,Te),s.lerp(er,qt,kt,Te),s.lerp(Ke,rt,Ct,Te);var xt=s.create(),bt=s.create();s.lerp(xt,Yt,er,Ee),s.lerp(bt,xr,Ke,Ee);var Lt=s.create();return s.lerp(Lt,xt,bt,Ae),Lt},x=function(A,L){var _=L[0],C=L[1],M=L[2];return A[0]=_<0?-_:_,A[1]=C<0?-C:C,A[2]=M<0?-M:M,A},b=function(A){var L=1/0;A.sort(function(g,P){return g-P});for(var _=A.length,C=1;C<_;C++){var M=Math.abs(A[C]-A[C-1]);MN||CtW||Ytre)},_e=s.distance(L[0],L[1]),Me=10*_e/C,ke=Me*Me,ge=1,ie=0,Te=_.length;Te>1&&(ge=p(_));for(var Ee=0;Eeie&&(ie=nt),ce.push(nt),V.push({points:ze,velocities:Ce,divergences:ce});for(var ct=0;ctke&&s.scale(qt,qt,Me/Math.sqrt(rt)),s.add(qt,qt,Ae),me=F(qt),s.squaredDistance(Re,qt)-ke>-1e-4*ke){ze.push(qt),Re=qt,Ce.push(me);var Ge=q(qt,me),nt=s.length(Ge);isFinite(nt)&&nt>ie&&(ie=nt),ce.push(nt)}Ae=qt}}var ot=f(V,A.colormap,ie,ge);return g?ot.tubeScale=g:(ie===0&&(ie=1),ot.tubeScale=M*.5*ge/ie),ot};var E=o(6740),k=o(6405).createMesh;i.exports.createTubeMesh=function(A,L){return k(A,L,{shaders:E,traceType:"streamtube"})}},990:function(i,a,o){var s=o(9405),l=o(3236),u=l([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute vec3 f; +attribute vec3 normal; + +uniform vec3 objectOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 lightPosition, eyePosition; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 localCoordinate = vec3(uv.zw, f.x); + worldCoordinate = objectOffset + localCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(localCoordinate, 1.0); + vec4 clipPosition = projection * (view * worldPosition); + gl_Position = clipPosition; + kill = f.y; + value = f.z; + planeCoordinate = uv.xy; + + vColor = texture2D(colormap, vec2(value, value)); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * worldPosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + lightDirection = lightPosition - cameraCoordinate.xyz; + eyeDirection = eyePosition - cameraCoordinate.xyz; + surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz); +} +`]),c=l([`precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float beckmannSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness) { + return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 lowerBound, upperBound; +uniform float contourTint; +uniform vec4 contourColor; +uniform sampler2D colormap; +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform float vertexColor; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + if ( + kill > 0.0 || + vColor.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], worldCoordinate) + ) discard; + + vec3 N = normalize(surfaceNormal); + vec3 V = normalize(eyeDirection); + vec3 L = normalize(lightDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = max(beckmannSpecular(L, V, N, roughness), 0.); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + //decide how to interpolate color \u2014 in vertex or in fragment + vec4 surfaceColor = + step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + + step(.5, vertexColor) * vColor; + + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = mix(litColor, contourColor, contourTint) * opacity; +} +`]),f=l([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute float f; + +uniform vec3 objectOffset; +uniform mat3 permutation; +uniform mat4 model, view, projection; +uniform float height, zOffset; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 dataCoordinate = permutation * vec3(uv.xy, height); + worldCoordinate = objectOffset + dataCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(dataCoordinate, 1.0); + + vec4 clipPosition = projection * (view * worldPosition); + clipPosition.z += zOffset; + + gl_Position = clipPosition; + value = f + objectOffset.z; + kill = -1.0; + planeCoordinate = uv.zw; + + vColor = texture2D(colormap, vec2(value, value)); + + //Don't do lighting for contours + surfaceNormal = vec3(1,0,0); + eyeDirection = vec3(0,1,0); + lightDirection = vec3(0,0,1); +} +`]),h=l([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec2 shape; +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 surfaceNormal; + +vec2 splitFloat(float v) { + float vh = 255.0 * v; + float upper = floor(vh); + float lower = fract(vh); + return vec2(upper / 255.0, floor(lower * 16.0) / 16.0); +} + +void main() { + if ((kill > 0.0) || + (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard; + + vec2 ux = splitFloat(planeCoordinate.x / shape.x); + vec2 uy = splitFloat(planeCoordinate.y / shape.y); + gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); +} +`]);a.createShader=function(d){var v=s(d,u,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createPickShader=function(d){var v=s(d,u,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},a.createContourShader=function(d){var v=s(d,f,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v},a.createPickContourShader=function(d){var v=s(d,f,h,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v}},9499:function(i,a,o){"use strict";i.exports=ze;var s=o(8828),l=o(2762),u=o(8116),c=o(7766),f=o(1888),h=o(6729),d=o(5298),v=o(9994),x=o(9618),b=o(3711),p=o(6760),E=o(7608),k=o(2478),A=o(6199),L=o(990),_=L.createShader,C=L.createContourShader,M=L.createPickShader,g=L.createPickContourShader,P=4*10,T=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],F=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],q=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];(function(){for(var Ce=0;Ce<3;++Ce){var me=q[Ce],Re=(Ce+1)%3,ce=(Ce+2)%3;me[Re+0]=1,me[ce+3]=1,me[Ce+6]=1}})();function V(Ce,me,Re,ce,Ge){this.position=Ce,this.index=me,this.uv=Re,this.level=ce,this.dataCoordinate=Ge}var H=256;function X(Ce,me,Re,ce,Ge,nt,ct,qt,rt,ot,Rt,kt,Ct,Yt,xr){this.gl=Ce,this.shape=me,this.bounds=Re,this.objectOffset=xr,this.intensityBounds=[],this._shader=ce,this._pickShader=Ge,this._coordinateBuffer=nt,this._vao=ct,this._colorMap=qt,this._contourShader=rt,this._contourPickShader=ot,this._contourBuffer=Rt,this._contourVAO=kt,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new V([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=Ct,this._dynamicVAO=Yt,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[x(f.mallocFloat(1024),[0,0]),x(f.mallocFloat(1024),[0,0]),x(f.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var G=X.prototype;G.genColormap=function(Ce,me){var Re=!1,ce=v([h({colormap:Ce,nshades:H,format:"rgba"}).map(function(Ge,nt){var ct=me?N(nt/255,me):Ge[3];return ct<1&&(Re=!0),[Ge[0],Ge[1],Ge[2],255*ct]})]);return d.divseq(ce,255),this.hasAlphaScale=Re,ce},G.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},G.isOpaque=function(){return!this.isTransparent()},G.pickSlots=1,G.setPickBase=function(Ce){this.pickId=Ce};function N(Ce,me){if(!me||!me.length)return 1;for(var Re=0;ReCe&&Re>0){var ce=(me[Re][0]-Ce)/(me[Re][0]-me[Re-1][0]);return me[Re][1]*(1-ce)+ce*me[Re-1][1]}}return 1}var W=[0,0,0],re={showSurface:!1,showContour:!1,projections:[T.slice(),T.slice(),T.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function ae(Ce,me){var Re,ce,Ge,nt=me.axes&&me.axes.lastCubeProps.axis||W,ct=me.showSurface,qt=me.showContour;for(Re=0;Re<3;++Re)for(ct=ct||me.surfaceProject[Re],ce=0;ce<3;++ce)qt=qt||me.contourProject[Re][ce];for(Re=0;Re<3;++Re){var rt=re.projections[Re];for(ce=0;ce<16;++ce)rt[ce]=0;for(ce=0;ce<4;++ce)rt[5*ce]=1;rt[5*Re]=0,rt[12+Re]=me.axesBounds[+(nt[Re]>0)][Re],p(rt,Ce.model,rt);var ot=re.clipBounds[Re];for(Ge=0;Ge<2;++Ge)for(ce=0;ce<3;++ce)ot[Ge][ce]=Ce.clipBounds[Ge][ce];ot[0][Re]=-1e8,ot[1][Re]=1e8}return re.showSurface=ct,re.showContour=qt,re}var _e={model:T,view:T,projection:T,inverseModel:T.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},Me=T.slice(),ke=[1,0,0,0,1,0,0,0,1];function ge(Ce,me){Ce=Ce||{};var Re=this.gl;Re.disable(Re.CULL_FACE),this._colorMap.bind(0);var ce=_e;ce.model=Ce.model||T,ce.view=Ce.view||T,ce.projection=Ce.projection||T,ce.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],ce.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],ce.objectOffset=this.objectOffset,ce.contourColor=this.contourColor[0],ce.inverseModel=E(ce.inverseModel,ce.model);for(var Ge=0;Ge<2;++Ge)for(var nt=ce.clipBounds[Ge],ct=0;ct<3;++ct)nt[ct]=Math.min(Math.max(this.clipBounds[Ge][ct],-1e8),1e8);ce.kambient=this.ambientLight,ce.kdiffuse=this.diffuseLight,ce.kspecular=this.specularLight,ce.roughness=this.roughness,ce.fresnel=this.fresnel,ce.opacity=this.opacity,ce.height=0,ce.permutation=ke,ce.vertexColor=this.vertexColor;var qt=Me;for(p(qt,ce.view,ce.model),p(qt,ce.projection,qt),E(qt,qt),Ge=0;Ge<3;++Ge)ce.eyePosition[Ge]=qt[12+Ge]/qt[15];var rt=qt[15];for(Ge=0;Ge<3;++Ge)rt+=this.lightPosition[Ge]*qt[4*Ge+3];for(Ge=0;Ge<3;++Ge){var ot=qt[12+Ge];for(ct=0;ct<3;++ct)ot+=qt[4*ct+Ge]*this.lightPosition[ct];ce.lightPosition[Ge]=ot/rt}var Rt=ae(ce,this);if(Rt.showSurface){for(this._shader.bind(),this._shader.uniforms=ce,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(Re.TRIANGLES,this._vertexCount),Ge=0;Ge<3;++Ge)!this.surfaceProject[Ge]||!this.vertexCount||(this._shader.uniforms.model=Rt.projections[Ge],this._shader.uniforms.clipBounds=Rt.clipBounds[Ge],this._vao.draw(Re.TRIANGLES,this._vertexCount));this._vao.unbind()}if(Rt.showContour){var kt=this._contourShader;ce.kambient=1,ce.kdiffuse=0,ce.kspecular=0,ce.opacity=1,kt.bind(),kt.uniforms=ce;var Ct=this._contourVAO;for(Ct.bind(),Ge=0;Ge<3;++Ge)for(kt.uniforms.permutation=q[Ge],Re.lineWidth(this.contourWidth[Ge]*this.pixelRatio),ct=0;ct>4)/16)/255,Ge=Math.floor(ce),nt=ce-Ge,ct=me[1]*(Ce.value[1]+(Ce.value[2]&15)/16)/255,qt=Math.floor(ct),rt=ct-qt;Ge+=1,qt+=1;var ot=Re.position;ot[0]=ot[1]=ot[2]=0;for(var Rt=0;Rt<2;++Rt)for(var kt=Rt?nt:1-nt,Ct=0;Ct<2;++Ct)for(var Yt=Ct?rt:1-rt,xr=Ge+Rt,er=qt+Ct,Ke=kt*Yt,xt=0;xt<3;++xt)ot[xt]+=this._field[xt].get(xr,er)*Ke;for(var bt=this._pickResult.level,Lt=0;Lt<3;++Lt)if(bt[Lt]=k.le(this.contourLevels[Lt],ot[Lt]),bt[Lt]<0)this.contourLevels[Lt].length>0&&(bt[Lt]=0);else if(bt[Lt]Math.abs(Et-ot[Lt])&&(bt[Lt]+=1)}for(Re.index[0]=nt<.5?Ge:Ge+1,Re.index[1]=rt<.5?qt:qt+1,Re.uv[0]=ce/me[0],Re.uv[1]=ct/me[1],xt=0;xt<3;++xt)Re.dataCoordinate[xt]=this._field[xt].get(Re.index[0],Re.index[1]);return Re},G.padField=function(Ce,me){var Re=me.shape.slice(),ce=Ce.shape.slice();d.assign(Ce.lo(1,1).hi(Re[0],Re[1]),me),d.assign(Ce.lo(1).hi(Re[0],1),me.hi(Re[0],1)),d.assign(Ce.lo(1,ce[1]-1).hi(Re[0],1),me.lo(0,Re[1]-1).hi(Re[0],1)),d.assign(Ce.lo(0,1).hi(1,Re[1]),me.hi(1)),d.assign(Ce.lo(ce[0]-1,1).hi(1,Re[1]),me.lo(Re[0]-1)),Ce.set(0,0,me.get(0,0)),Ce.set(0,ce[1]-1,me.get(0,Re[1]-1)),Ce.set(ce[0]-1,0,me.get(Re[0]-1,0)),Ce.set(ce[0]-1,ce[1]-1,me.get(Re[0]-1,Re[1]-1))};function Te(Ce,me){return Array.isArray(Ce)?[me(Ce[0]),me(Ce[1]),me(Ce[2])]:[me(Ce),me(Ce),me(Ce)]}function Ee(Ce){return Array.isArray(Ce)?Ce.length===3?[Ce[0],Ce[1],Ce[2],1]:[Ce[0],Ce[1],Ce[2],Ce[3]]:[0,0,0,1]}function Ae(Ce){if(Array.isArray(Ce)){if(Array.isArray(Ce))return[Ee(Ce[0]),Ee(Ce[1]),Ee(Ce[2])];var me=Ee(Ce);return[me.slice(),me.slice(),me.slice()]}}G.update=function(Ce){Ce=Ce||{},this.objectOffset=Ce.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in Ce&&(this.contourWidth=Te(Ce.contourWidth,Number)),"showContour"in Ce&&(this.showContour=Te(Ce.showContour,Boolean)),"showSurface"in Ce&&(this.showSurface=!!Ce.showSurface),"contourTint"in Ce&&(this.contourTint=Te(Ce.contourTint,Boolean)),"contourColor"in Ce&&(this.contourColor=Ae(Ce.contourColor)),"contourProject"in Ce&&(this.contourProject=Te(Ce.contourProject,function(Gi){return Te(Gi,Boolean)})),"surfaceProject"in Ce&&(this.surfaceProject=Ce.surfaceProject),"dynamicColor"in Ce&&(this.dynamicColor=Ae(Ce.dynamicColor)),"dynamicTint"in Ce&&(this.dynamicTint=Te(Ce.dynamicTint,Number)),"dynamicWidth"in Ce&&(this.dynamicWidth=Te(Ce.dynamicWidth,Number)),"opacity"in Ce&&(this.opacity=Ce.opacity),"opacityscale"in Ce&&(this.opacityscale=Ce.opacityscale),"colorBounds"in Ce&&(this.colorBounds=Ce.colorBounds),"vertexColor"in Ce&&(this.vertexColor=Ce.vertexColor?1:0),"colormap"in Ce&&this._colorMap.setPixels(this.genColormap(Ce.colormap,this.opacityscale));var me=Ce.field||Ce.coords&&Ce.coords[2]||null,Re=!1;if(me||(this._field[2].shape[0]||this._field[2].shape[2]?me=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):me=this._field[2].hi(0,0)),"field"in Ce||"coords"in Ce){var ce=(me.shape[0]+2)*(me.shape[1]+2);ce>this._field[2].data.length&&(f.freeFloat(this._field[2].data),this._field[2].data=f.mallocFloat(s.nextPow2(ce))),this._field[2]=x(this._field[2].data,[me.shape[0]+2,me.shape[1]+2]),this.padField(this._field[2],me),this.shape=me.shape.slice();for(var Ge=this.shape,nt=0;nt<2;++nt)this._field[2].size>this._field[nt].data.length&&(f.freeFloat(this._field[nt].data),this._field[nt].data=f.mallocFloat(this._field[2].size)),this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2]);if(Ce.coords){var ct=Ce.coords;if(!Array.isArray(ct)||ct.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(nt=0;nt<2;++nt){var qt=ct[nt];for(Ct=0;Ct<2;++Ct)if(qt.shape[Ct]!==Ge[Ct])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[nt],qt)}}else if(Ce.ticks){var rt=Ce.ticks;if(!Array.isArray(rt)||rt.length!==2)throw new Error("gl-surface: invalid ticks");for(nt=0;nt<2;++nt){var ot=rt[nt];if((Array.isArray(ot)||ot.length)&&(ot=x(ot)),ot.shape[0]!==Ge[nt])throw new Error("gl-surface: invalid tick length");var Rt=x(ot.data,Ge);Rt.stride[nt]=ot.stride[0],Rt.stride[nt^1]=0,this.padField(this._field[nt],Rt)}}else{for(nt=0;nt<2;++nt){var kt=[0,0];kt[nt]=1,this._field[nt]=x(this._field[nt].data,[Ge[0]+2,Ge[1]+2],kt,0)}this._field[0].set(0,0,0);for(var Ct=0;Ct0){for(var Mi=0;Mi<5;++Mi)ai.pop();Ve-=1}continue e}}}nn.push(Ve)}this._contourOffsets[jr]=bi,this._contourCounts[jr]=nn}var Pi=f.mallocFloat(ai.length);for(nt=0;ntV||F<0||F>V)throw new Error("gl-texture2d: Invalid texture size");return P._shape=[T,F],P.bind(),q.texImage2D(q.TEXTURE_2D,0,P.format,T,F,0,P.format,P.type,null),P._mipLevels=[0],P}function p(P,T,F,q,V,H){this.gl=P,this.handle=T,this.format=V,this.type=H,this._shape=[F,q],this._mipLevels=[0],this._magFilter=P.NEAREST,this._minFilter=P.NEAREST,this._wrapS=P.CLAMP_TO_EDGE,this._wrapT=P.CLAMP_TO_EDGE,this._anisoSamples=1;var X=this,G=[this._wrapS,this._wrapT];Object.defineProperties(G,[{get:function(){return X._wrapS},set:function(W){return X.wrapS=W}},{get:function(){return X._wrapT},set:function(W){return X.wrapT=W}}]),this._wrapVector=G;var N=[this._shape[0],this._shape[1]];Object.defineProperties(N,[{get:function(){return X._shape[0]},set:function(W){return X.width=W}},{get:function(){return X._shape[1]},set:function(W){return X.height=W}}]),this._shapeVector=N}var E=p.prototype;Object.defineProperties(E,{minFilter:{get:function(){return this._minFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MIN_FILTER,P),this._minFilter=P}},magFilter:{get:function(){return this._magFilter},set:function(P){this.bind();var T=this.gl;if(this.type===T.FLOAT&&c.indexOf(P)>=0&&(T.getExtension("OES_texture_float_linear")||(P=T.NEAREST)),f.indexOf(P)<0)throw new Error("gl-texture2d: Unknown filter mode "+P);return T.texParameteri(T.TEXTURE_2D,T.TEXTURE_MAG_FILTER,P),this._magFilter=P}},mipSamples:{get:function(){return this._anisoSamples},set:function(P){var T=this._anisoSamples;if(this._anisoSamples=Math.max(P,1)|0,T!==this._anisoSamples){var F=this.gl.getExtension("EXT_texture_filter_anisotropic");F&&this.gl.texParameterf(this.gl.TEXTURE_2D,F.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,P),this._wrapS=P}},wrapT:{get:function(){return this._wrapT},set:function(P){if(this.bind(),h.indexOf(P)<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,P),this._wrapT=P}},wrap:{get:function(){return this._wrapVector},set:function(P){if(Array.isArray(P)||(P=[P,P]),P.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var T=0;T<2;++T)if(h.indexOf(P[T])<0)throw new Error("gl-texture2d: Unknown wrap mode "+P);this._wrapS=P[0],this._wrapT=P[1];var F=this.gl;return this.bind(),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_S,this._wrapS),F.texParameteri(F.TEXTURE_2D,F.TEXTURE_WRAP_T,this._wrapT),P}},shape:{get:function(){return this._shapeVector},set:function(P){if(!Array.isArray(P))P=[P|0,P|0];else if(P.length!==2)throw new Error("gl-texture2d: Invalid texture shape");return b(this,P[0]|0,P[1]|0),[P[0]|0,P[1]|0]}},width:{get:function(){return this._shape[0]},set:function(P){return P=P|0,b(this,P,this._shape[1]),P}},height:{get:function(){return this._shape[1]},set:function(P){return P=P|0,b(this,this._shape[0],P),P}}}),E.bind=function(P){var T=this.gl;return P!==void 0&&T.activeTexture(T.TEXTURE0+(P|0)),T.bindTexture(T.TEXTURE_2D,this.handle),P!==void 0?P|0:T.getParameter(T.ACTIVE_TEXTURE)-T.TEXTURE0},E.dispose=function(){this.gl.deleteTexture(this.handle)},E.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var P=Math.min(this._shape[0],this._shape[1]),T=0;P>0;++T,P>>>=1)this._mipLevels.indexOf(T)<0&&this._mipLevels.push(T)},E.setPixels=function(P,T,F,q){var V=this.gl;this.bind(),Array.isArray(T)?(q=F,F=T[1]|0,T=T[0]|0):(T=T||0,F=F||0),q=q||0;var H=v(P)?P:P.raw;if(H){var X=this._mipLevels.indexOf(q)<0;X?(V.texImage2D(V.TEXTURE_2D,0,this.format,this.format,this.type,H),this._mipLevels.push(q)):V.texSubImage2D(V.TEXTURE_2D,q,T,F,this.format,this.type,H)}else if(P.shape&&P.stride&&P.data){if(P.shape.length<2||T+P.shape[1]>this._shape[1]>>>q||F+P.shape[0]>this._shape[0]>>>q||T<0||F<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");A(V,T,F,q,this.format,this.type,this._mipLevels,P)}else throw new Error("gl-texture2d: Unsupported data type")};function k(P,T){return P.length===3?T[2]===1&&T[1]===P[0]*P[2]&&T[0]===P[2]:T[0]===1&&T[1]===P[0]}function A(P,T,F,q,V,H,X,G){var N=G.dtype,W=G.shape.slice();if(W.length<2||W.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var re=0,ae=0,_e=k(W,G.stride.slice());N==="float32"?re=P.FLOAT:N==="float64"?(re=P.FLOAT,_e=!1,N="float32"):N==="uint8"?re=P.UNSIGNED_BYTE:(re=P.UNSIGNED_BYTE,_e=!1,N="uint8");var Me=1;if(W.length===2)ae=P.LUMINANCE,W=[W[0],W[1],1],G=s(G.data,W,[G.stride[0],G.stride[1],1],G.offset);else if(W.length===3){if(W[2]===1)ae=P.ALPHA;else if(W[2]===2)ae=P.LUMINANCE_ALPHA;else if(W[2]===3)ae=P.RGB;else if(W[2]===4)ae=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");Me=W[2]}else throw new Error("gl-texture2d: Invalid shape for texture");if((ae===P.LUMINANCE||ae===P.ALPHA)&&(V===P.LUMINANCE||V===P.ALPHA)&&(ae=V),ae!==V)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var ke=G.size,ge=X.indexOf(q)<0;if(ge&&X.push(q),re===H&&_e)G.offset===0&&G.data.length===ke?ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data):ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,G.data.subarray(G.offset,G.offset+ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,G.data.subarray(G.offset,G.offset+ke));else{var ie;H===P.FLOAT?ie=u.mallocFloat32(ke):ie=u.mallocUint8(ke);var Te=s(ie,W,[W[2],W[2]*W[0],1]);re===P.FLOAT&&H===P.UNSIGNED_BYTE?x(Te,G):l.assign(Te,G),ge?P.texImage2D(P.TEXTURE_2D,q,V,W[0],W[1],0,V,H,ie.subarray(0,ke)):P.texSubImage2D(P.TEXTURE_2D,q,T,F,W[0],W[1],V,H,ie.subarray(0,ke)),H===P.FLOAT?u.freeFloat32(ie):u.freeUint8(ie)}}function L(P){var T=P.createTexture();return P.bindTexture(P.TEXTURE_2D,T),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MIN_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_MAG_FILTER,P.NEAREST),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_S,P.CLAMP_TO_EDGE),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_T,P.CLAMP_TO_EDGE),T}function _(P,T,F,q,V){var H=P.getParameter(P.MAX_TEXTURE_SIZE);if(T<0||T>H||F<0||F>H)throw new Error("gl-texture2d: Invalid texture shape");if(V===P.FLOAT&&!P.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,q,T,F,0,q,V,null),new p(P,X,T,F,q,V)}function C(P,T,F,q,V,H){var X=L(P);return P.texImage2D(P.TEXTURE_2D,0,V,V,H,T),new p(P,X,F,q,V,H)}function M(P,T){var F=T.dtype,q=T.shape.slice(),V=P.getParameter(P.MAX_TEXTURE_SIZE);if(q[0]<0||q[0]>V||q[1]<0||q[1]>V)throw new Error("gl-texture2d: Invalid texture size");var H=k(q,T.stride.slice()),X=0;F==="float32"?X=P.FLOAT:F==="float64"?(X=P.FLOAT,H=!1,F="float32"):F==="uint8"?X=P.UNSIGNED_BYTE:(X=P.UNSIGNED_BYTE,H=!1,F="uint8");var G=0;if(q.length===2)G=P.LUMINANCE,q=[q[0],q[1],1],T=s(T.data,q,[T.stride[0],T.stride[1],1],T.offset);else if(q.length===3)if(q[2]===1)G=P.ALPHA;else if(q[2]===2)G=P.LUMINANCE_ALPHA;else if(q[2]===3)G=P.RGB;else if(q[2]===4)G=P.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");else throw new Error("gl-texture2d: Invalid shape for texture");X===P.FLOAT&&!P.getExtension("OES_texture_float")&&(X=P.UNSIGNED_BYTE,H=!1);var N,W,re=T.size;if(H)T.offset===0&&T.data.length===re?N=T.data:N=T.data.subarray(T.offset,T.offset+re);else{var ae=[q[2],q[2]*q[0],1];W=u.malloc(re,F);var _e=s(W,q,ae,0);(F==="float32"||F==="float64")&&X===P.UNSIGNED_BYTE?x(_e,T):l.assign(_e,T),N=W.subarray(0,re)}var Me=L(P);return P.texImage2D(P.TEXTURE_2D,0,G,q[0],q[1],0,G,X,N),H||u.free(W),new p(P,Me,q[0],q[1],G,X)}function g(P){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");if(c||d(P),typeof arguments[1]=="number")return _(P,arguments[1],arguments[2],arguments[3]||P.RGBA,arguments[4]||P.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return _(P,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(typeof arguments[1]=="object"){var T=arguments[1],F=v(T)?T:T.raw;if(F)return C(P,F,T.width|0,T.height|0,arguments[2]||P.RGBA,arguments[3]||P.UNSIGNED_BYTE);if(T.shape&&T.data&&T.stride)return M(P,T)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")}},1433:function(i){"use strict";function a(o,s,l){s?s.bind():o.bindBuffer(o.ELEMENT_ARRAY_BUFFER,null);var u=o.getParameter(o.MAX_VERTEX_ATTRIBS)|0;if(l){if(l.length>u)throw new Error("gl-vao: Too many vertex attributes");for(var c=0;c1?0:Math.acos(x)}},9226:function(i){i.exports=a;function a(o,s){return o[0]=Math.ceil(s[0]),o[1]=Math.ceil(s[1]),o[2]=Math.ceil(s[2]),o}},3126:function(i){i.exports=a;function a(o){var s=new Float32Array(3);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s}},3990:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o}},1091:function(i){i.exports=a;function a(){var o=new Float32Array(3);return o[0]=0,o[1]=0,o[2]=0,o}},5911:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2];return o[0]=c*v-f*d,o[1]=f*h-u*v,o[2]=u*d-c*h,o}},5455:function(i,a,o){i.exports=o(7056)},7056:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return Math.sqrt(l*l+u*u+c*c)}},4008:function(i,a,o){i.exports=o(6690)},6690:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o}},244:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]}},2613:function(i){i.exports=1e-6},9922:function(i,a,o){i.exports=l;var s=o(2613);function l(u,c){var f=u[0],h=u[1],d=u[2],v=c[0],x=c[1],b=c[2];return Math.abs(f-v)<=s*Math.max(1,Math.abs(f),Math.abs(v))&&Math.abs(h-x)<=s*Math.max(1,Math.abs(h),Math.abs(x))&&Math.abs(d-b)<=s*Math.max(1,Math.abs(d),Math.abs(b))}},9265:function(i){i.exports=a;function a(o,s){return o[0]===s[0]&&o[1]===s[1]&&o[2]===s[2]}},2681:function(i){i.exports=a;function a(o,s){return o[0]=Math.floor(s[0]),o[1]=Math.floor(s[1]),o[2]=Math.floor(s[2]),o}},5137:function(i,a,o){i.exports=l;var s=o(1091)();function l(u,c,f,h,d,v){var x,b;for(c||(c=3),f||(f=0),h?b=Math.min(h*c+f,u.length):b=u.length,x=f;x0&&(f=1/Math.sqrt(f),o[0]=s[0]*f,o[1]=s[1]*f,o[2]=s[2]*f),o}},7636:function(i){i.exports=a;function a(o,s){s=s||1;var l=Math.random()*2*Math.PI,u=Math.random()*2-1,c=Math.sqrt(1-u*u)*s;return o[0]=Math.cos(l)*c,o[1]=Math.sin(l)*c,o[2]=u*s,o}},6894:function(i){i.exports=a;function a(o,s,l,u){var c=l[1],f=l[2],h=s[1]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=s[0],o[1]=c+h*x-d*v,o[2]=f+h*v+d*x,o}},109:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[2],h=s[0]-c,d=s[2]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+d*v+h*x,o[1]=s[1],o[2]=f+d*x-h*v,o}},8692:function(i){i.exports=a;function a(o,s,l,u){var c=l[0],f=l[1],h=s[0]-c,d=s[1]-f,v=Math.sin(u),x=Math.cos(u);return o[0]=c+h*x-d*v,o[1]=f+h*v+d*x,o[2]=s[2],o}},2447:function(i){i.exports=a;function a(o,s){return o[0]=Math.round(s[0]),o[1]=Math.round(s[1]),o[2]=Math.round(s[2]),o}},6621:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o}},8489:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o}},1463:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s,o[1]=l,o[2]=u,o}},6141:function(i,a,o){i.exports=o(2953)},5486:function(i,a,o){i.exports=o(3066)},2953:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2];return l*l+u*u+c*c}},3066:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2];return s*s+l*l+u*u}},2229:function(i,a,o){i.exports=o(6843)},6843:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o}},492:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2];return o[0]=u*l[0]+c*l[3]+f*l[6],o[1]=u*l[1]+c*l[4]+f*l[7],o[2]=u*l[2]+c*l[5]+f*l[8],o}},5673:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[3]*u+l[7]*c+l[11]*f+l[15];return h=h||1,o[0]=(l[0]*u+l[4]*c+l[8]*f+l[12])/h,o[1]=(l[1]*u+l[5]*c+l[9]*f+l[13])/h,o[2]=(l[2]*u+l[6]*c+l[10]*f+l[14])/h,o}},264:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,p=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+p*-v-E*-d,o[1]=p*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-p*-h,o}},4361:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]+l[0],o[1]=s[1]+l[1],o[2]=s[2]+l[2],o[3]=s[3]+l[3],o}},2335:function(i){i.exports=a;function a(o){var s=new Float32Array(4);return s[0]=o[0],s[1]=o[1],s[2]=o[2],s[3]=o[3],s}},2933:function(i){i.exports=a;function a(o,s){return o[0]=s[0],o[1]=s[1],o[2]=s[2],o[3]=s[3],o}},7536:function(i){i.exports=a;function a(){var o=new Float32Array(4);return o[0]=0,o[1]=0,o[2]=0,o[3]=0,o}},4691:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return Math.sqrt(l*l+u*u+c*c+f*f)}},1373:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]/l[0],o[1]=s[1]/l[1],o[2]=s[2]/l[2],o[3]=s[3]/l[3],o}},3750:function(i){i.exports=a;function a(o,s){return o[0]*s[0]+o[1]*s[1]+o[2]*s[2]+o[3]*s[3]}},3390:function(i){i.exports=a;function a(o,s,l,u){var c=new Float32Array(4);return c[0]=o,c[1]=s,c[2]=l,c[3]=u,c}},9970:function(i,a,o){i.exports={create:o(7536),clone:o(2335),fromValues:o(3390),copy:o(2933),set:o(4578),add:o(4361),subtract:o(6860),multiply:o(3576),divide:o(1373),min:o(2334),max:o(160),scale:o(9288),scaleAndAdd:o(4844),distance:o(4691),squaredDistance:o(7960),length:o(6808),squaredLength:o(483),negate:o(1498),inverse:o(4494),normalize:o(5177),dot:o(3750),lerp:o(2573),random:o(9131),transformMat4:o(5352),transformQuat:o(4041)}},4494:function(i){i.exports=a;function a(o,s){return o[0]=1/s[0],o[1]=1/s[1],o[2]=1/s[2],o[3]=1/s[3],o}},6808:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return Math.sqrt(s*s+l*l+u*u+c*c)}},2573:function(i){i.exports=a;function a(o,s,l,u){var c=s[0],f=s[1],h=s[2],d=s[3];return o[0]=c+u*(l[0]-c),o[1]=f+u*(l[1]-f),o[2]=h+u*(l[2]-h),o[3]=d+u*(l[3]-d),o}},160:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.max(s[0],l[0]),o[1]=Math.max(s[1],l[1]),o[2]=Math.max(s[2],l[2]),o[3]=Math.max(s[3],l[3]),o}},2334:function(i){i.exports=a;function a(o,s,l){return o[0]=Math.min(s[0],l[0]),o[1]=Math.min(s[1],l[1]),o[2]=Math.min(s[2],l[2]),o[3]=Math.min(s[3],l[3]),o}},3576:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l[0],o[1]=s[1]*l[1],o[2]=s[2]*l[2],o[3]=s[3]*l[3],o}},1498:function(i){i.exports=a;function a(o,s){return o[0]=-s[0],o[1]=-s[1],o[2]=-s[2],o[3]=-s[3],o}},5177:function(i){i.exports=a;function a(o,s){var l=s[0],u=s[1],c=s[2],f=s[3],h=l*l+u*u+c*c+f*f;return h>0&&(h=1/Math.sqrt(h),o[0]=l*h,o[1]=u*h,o[2]=c*h,o[3]=f*h),o}},9131:function(i,a,o){var s=o(5177),l=o(9288);i.exports=u;function u(c,f){return f=f||1,c[0]=Math.random(),c[1]=Math.random(),c[2]=Math.random(),c[3]=Math.random(),s(c,c),l(c,c,f),c}},9288:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]*l,o[1]=s[1]*l,o[2]=s[2]*l,o[3]=s[3]*l,o}},4844:function(i){i.exports=a;function a(o,s,l,u){return o[0]=s[0]+l[0]*u,o[1]=s[1]+l[1]*u,o[2]=s[2]+l[2]*u,o[3]=s[3]+l[3]*u,o}},4578:function(i){i.exports=a;function a(o,s,l,u,c){return o[0]=s,o[1]=l,o[2]=u,o[3]=c,o}},7960:function(i){i.exports=a;function a(o,s){var l=s[0]-o[0],u=s[1]-o[1],c=s[2]-o[2],f=s[3]-o[3];return l*l+u*u+c*c+f*f}},483:function(i){i.exports=a;function a(o){var s=o[0],l=o[1],u=o[2],c=o[3];return s*s+l*l+u*u+c*c}},6860:function(i){i.exports=a;function a(o,s,l){return o[0]=s[0]-l[0],o[1]=s[1]-l[1],o[2]=s[2]-l[2],o[3]=s[3]-l[3],o}},5352:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=s[3];return o[0]=l[0]*u+l[4]*c+l[8]*f+l[12]*h,o[1]=l[1]*u+l[5]*c+l[9]*f+l[13]*h,o[2]=l[2]*u+l[6]*c+l[10]*f+l[14]*h,o[3]=l[3]*u+l[7]*c+l[11]*f+l[15]*h,o}},4041:function(i){i.exports=a;function a(o,s,l){var u=s[0],c=s[1],f=s[2],h=l[0],d=l[1],v=l[2],x=l[3],b=x*u+d*f-v*c,p=x*c+v*u-h*f,E=x*f+h*c-d*u,k=-h*u-d*c-v*f;return o[0]=b*x+k*-h+p*-v-E*-d,o[1]=p*x+k*-d+E*-h-b*-v,o[2]=E*x+k*-v+b*-d-p*-h,o[3]=s[3],o}},1848:function(i,a,o){var s=o(4905),l=o(6468);i.exports=u;function u(c){for(var f=Array.isArray(c)?c:s(c),h=0;h0)continue;Lt=Ke.slice(0,1).join("")}return Re(Lt),ke+=Lt.length,N=N.slice(Lt.length),N.length}while(!0)}function Ct(){return/[^a-fA-F0-9]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function Yt(){return X==="."||/[eE]/.test(X)?(N.push(X),H=k,G=X,q+1):X==="x"&&N.length===1&&N[0]==="0"?(H=g,N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function xr(){return X==="f"&&(N.push(X),G=X,q+=1),/[eE]/.test(X)||(X==="-"||X==="+")&&/[eE]/.test(G)?(N.push(X),G=X,q+1):/[^\d]/.test(X)?(Re(N.join("")),H=h,q):(N.push(X),G=X,q+1)}function er(){if(/[^\d\w_]/.test(X)){var Ke=N.join("");return me[Ke]?H=_:Ce[Ke]?H=L:H=A,Re(N.join("")),H=h,q}return N.push(X),G=X,q+1}}},3508:function(i,a,o){var s=o(6852);s=s.slice().filter(function(l){return!/^(gl\_|texture)/.test(l)}),i.exports=s.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(i){i.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(i,a,o){var s=o(620);i.exports=s.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(i){i.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(i){i.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(i,a,o){var s=o(5874);i.exports=l;function l(u,c){var f=s(c),h=[];return h=h.concat(f(u)),h=h.concat(f(null)),h}},3236:function(i){i.exports=function(a){typeof a=="string"&&(a=[a]);for(var o=[].slice.call(arguments,1),s=[],l=0;l>1,b=-7,p=l?c-1:0,E=l?-1:1,k=o[s+p];for(p+=E,f=k&(1<<-b)-1,k>>=-b,b+=d;b>0;f=f*256+o[s+p],p+=E,b-=8);for(h=f&(1<<-b)-1,f>>=-b,b+=u;b>0;h=h*256+o[s+p],p+=E,b-=8);if(f===0)f=1-x;else{if(f===v)return h?NaN:(k?-1:1)*(1/0);h=h+Math.pow(2,u),f=f-x}return(k?-1:1)*h*Math.pow(2,f-u)},a.write=function(o,s,l,u,c,f){var h,d,v,x=f*8-c-1,b=(1<>1,E=c===23?Math.pow(2,-24)-Math.pow(2,-77):0,k=u?0:f-1,A=u?1:-1,L=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(d=isNaN(s)?1:0,h=b):(h=Math.floor(Math.log(s)/Math.LN2),s*(v=Math.pow(2,-h))<1&&(h--,v*=2),h+p>=1?s+=E/v:s+=E*Math.pow(2,1-p),s*v>=2&&(h++,v/=2),h+p>=b?(d=0,h=b):h+p>=1?(d=(s*v-1)*Math.pow(2,c),h=h+p):(d=s*Math.pow(2,p-1)*Math.pow(2,c),h=0));c>=8;o[l+k]=d&255,k+=A,d/=256,c-=8);for(h=h<0;o[l+k]=h&255,k+=A,h/=256,x-=8);o[l+k-A]|=L*128}},8954:function(i,a,o){"use strict";i.exports=p;var s=o(3250),l=o(6803).Fw;function u(E,k,A){this.vertices=E,this.adjacent=k,this.boundary=A,this.lastVisited=-1}u.prototype.flip=function(){var E=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=E;var k=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=k};function c(E,k,A){this.vertices=E,this.cell=k,this.index=A}function f(E,k){return l(E.vertices,k.vertices)}function h(E){return function(){var k=this.tuple;return E.apply(this,k)}}function d(E){var k=s[E+1];return k||(k=s),h(k)}var v=[];function x(E,k,A){this.dimension=E,this.vertices=k,this.simplices=A,this.interior=A.filter(function(C){return!C.boundary}),this.tuple=new Array(E+1);for(var L=0;L<=E;++L)this.tuple[L]=this.vertices[L];var _=v[E];_||(_=v[E]=d(E)),this.orient=_}var b=x.prototype;b.handleBoundaryDegeneracy=function(E,k){var A=this.dimension,L=this.vertices.length-1,_=this.tuple,C=this.vertices,M=[E];for(E.lastVisited=-L;M.length>0;){E=M.pop();for(var g=E.adjacent,P=0;P<=A;++P){var T=g[P];if(!(!T.boundary||T.lastVisited<=-L)){for(var F=T.vertices,q=0;q<=A;++q){var V=F[q];V<0?_[q]=k:_[q]=C[V]}var H=this.orient();if(H>0)return T;T.lastVisited=-L,H===0&&M.push(T)}}}return null},b.walk=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=k?this.interior.length*Math.random()|0:this.interior.length-1,g=this.interior[M];e:for(;!g.boundary;){for(var P=g.vertices,T=g.adjacent,F=0;F<=L;++F)C[F]=_[P[F]];g.lastVisited=A;for(var F=0;F<=L;++F){var q=T[F];if(!(q.lastVisited>=A)){var V=C[F];C[F]=E;var H=this.orient();if(C[F]=V,H<0){g=q;continue e}else q.boundary?q.lastVisited=-A:q.lastVisited=A}}return}return g},b.addPeaks=function(E,k){var A=this.vertices.length-1,L=this.dimension,_=this.vertices,C=this.tuple,M=this.interior,g=this.simplices,P=[k];k.lastVisited=A,k.vertices[k.vertices.indexOf(-1)]=A,k.boundary=!1,M.push(k);for(var T=[];P.length>0;){var k=P.pop(),F=k.vertices,q=k.adjacent,V=F.indexOf(A);if(!(V<0)){for(var H=0;H<=L;++H)if(H!==V){var X=q[H];if(!(!X.boundary||X.lastVisited>=A)){var G=X.vertices;if(X.lastVisited!==-A){for(var N=0,W=0;W<=L;++W)G[W]<0?(N=W,C[W]=E):C[W]=_[G[W]];var re=this.orient();if(re>0){G[N]=A,X.boundary=!1,M.push(X),P.push(X),X.lastVisited=A;continue}else X.lastVisited=-A}var ae=X.adjacent,_e=F.slice(),Me=q.slice(),ke=new u(_e,Me,!0);g.push(ke);var ge=ae.indexOf(k);if(!(ge<0)){ae[ge]=ke,Me[V]=X,_e[H]=-1,Me[H]=k,q[H]=ke,ke.flip();for(var W=0;W<=L;++W){var ie=_e[W];if(!(ie<0||ie===A)){for(var Te=new Array(L-1),Ee=0,Ae=0;Ae<=L;++Ae){var ze=_e[Ae];ze<0||Ae===W||(Te[Ee++]=ze)}T.push(new c(Te,ke,W))}}}}}}}T.sort(f);for(var H=0;H+1=0?M[P++]=g[F]:T=F&1;if(T===(E&1)){var q=M[0];M[0]=M[1],M[1]=q}k.push(M)}}return k};function p(E,k){var A=E.length;if(A===0)throw new Error("Must have at least d+1 points");var L=E[0].length;if(A<=L)throw new Error("Must input at least d+1 points");var _=E.slice(0,L+1),C=s.apply(void 0,_);if(C===0)throw new Error("Input not in general position");for(var M=new Array(L+1),g=0;g<=L;++g)M[g]=g;C<0&&(M[0]=1,M[1]=0);for(var P=new u(M,new Array(L+1),!1),T=P.adjacent,F=new Array(L+2),g=0;g<=L;++g){for(var q=M.slice(),V=0;V<=L;++V)V===g&&(q[V]=-1);var H=q[0];q[0]=q[1],q[1]=H;var X=new u(q,new Array(L+1),!0);T[g]=X,F[g]=X}F[L+1]=P;for(var g=0;g<=L;++g)for(var q=T[g].vertices,G=T[g].adjacent,V=0;V<=L;++V){var N=q[V];if(N<0){G[V]=P;continue}for(var W=0;W<=L;++W)T[W].vertices.indexOf(N)<0&&(G[V]=T[W])}for(var re=new x(L,_,F),ae=!!k,g=L+1;g3*(F+1)?x(this,T):this.left.insert(T):this.left=C([T]);else if(T[0]>this.mid)this.right?4*(this.right.count+1)>3*(F+1)?x(this,T):this.right.insert(T):this.right=C([T]);else{var q=s.ge(this.leftPoints,T,L),V=s.ge(this.rightPoints,T,_);this.leftPoints.splice(q,0,T),this.rightPoints.splice(V,0,T)}},h.remove=function(T){var F=this.count-this.leftPoints;if(T[1]3*(F-1))return b(this,T);var V=this.left.remove(T);return V===c?(this.left=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else if(T[0]>this.mid){if(!this.right)return l;var H=this.left?this.left.count:0;if(4*H>3*(F-1))return b(this,T);var V=this.right.remove(T);return V===c?(this.right=null,this.count-=1,u):(V===u&&(this.count-=1),V)}else{if(this.count===1)return this.leftPoints[0]===T?c:l;if(this.leftPoints.length===1&&this.leftPoints[0]===T){if(this.left&&this.right){for(var X=this,G=this.left;G.right;)X=G,G=G.right;if(X===this)G.right=this.right;else{var N=this.left,V=this.right;X.count-=G.count,X.right=G.left,G.left=N,G.right=V}d(this,G),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?d(this,this.left):d(this,this.right);return u}for(var N=s.ge(this.leftPoints,T,L);N=0&&T[V][1]>=F;--V){var H=q(T[V]);if(H)return H}}function k(T,F){for(var q=0;qthis.mid){if(this.right){var q=this.right.queryPoint(T,F);if(q)return q}return E(this.rightPoints,T,F)}else return k(this.leftPoints,F)},h.queryInterval=function(T,F,q){if(Tthis.mid&&this.right){var V=this.right.queryInterval(T,F,q);if(V)return V}return Fthis.mid?E(this.rightPoints,T,q):k(this.leftPoints,q)};function A(T,F){return T-F}function L(T,F){var q=T[0]-F[0];return q||T[1]-F[1]}function _(T,F){var q=T[1]-F[1];return q||T[0]-F[0]}function C(T){if(T.length===0)return null;for(var F=[],q=0;q>1],H=[],X=[],G=[],q=0;q13)&&s!==32&&s!==133&&s!==160&&s!==5760&&s!==6158&&(s<8192||s>8205)&&s!==8232&&s!==8233&&s!==8239&&s!==8287&&s!==8288&&s!==12288&&s!==65279)return!1;return!0}},395:function(i){function a(o,s,l){return o*(1-l)+s*l}i.exports=a},2652:function(i,a,o){var s=o(4335),l=o(6864),u=o(1903),c=o(9921),f=o(7608),h=o(5665),d={length:o(1387),normalize:o(3536),dot:o(244),cross:o(5911)},v=l(),x=l(),b=[0,0,0,0],p=[[0,0,0],[0,0,0],[0,0,0]],E=[0,0,0];i.exports=function(C,M,g,P,T,F){if(M||(M=[0,0,0]),g||(g=[0,0,0]),P||(P=[0,0,0]),T||(T=[0,0,0,1]),F||(F=[0,0,0,1]),!s(v,C)||(u(x,v),x[3]=0,x[7]=0,x[11]=0,x[15]=1,Math.abs(c(x)<1e-8)))return!1;var q=v[3],V=v[7],H=v[11],X=v[12],G=v[13],N=v[14],W=v[15];if(q!==0||V!==0||H!==0){b[0]=q,b[1]=V,b[2]=H,b[3]=W;var re=f(x,x);if(!re)return!1;h(x,x),k(T,b,x)}else T[0]=T[1]=T[2]=0,T[3]=1;if(M[0]=X,M[1]=G,M[2]=N,A(p,v),g[0]=d.length(p[0]),d.normalize(p[0],p[0]),P[0]=d.dot(p[0],p[1]),L(p[1],p[1],p[0],1,-P[0]),g[1]=d.length(p[1]),d.normalize(p[1],p[1]),P[0]/=g[1],P[1]=d.dot(p[0],p[2]),L(p[2],p[2],p[0],1,-P[1]),P[2]=d.dot(p[1],p[2]),L(p[2],p[2],p[1],1,-P[2]),g[2]=d.length(p[2]),d.normalize(p[2],p[2]),P[1]/=g[2],P[2]/=g[2],d.cross(E,p[1],p[2]),d.dot(p[0],E)<0)for(var ae=0;ae<3;ae++)g[ae]*=-1,p[ae][0]*=-1,p[ae][1]*=-1,p[ae][2]*=-1;return F[0]=.5*Math.sqrt(Math.max(1+p[0][0]-p[1][1]-p[2][2],0)),F[1]=.5*Math.sqrt(Math.max(1-p[0][0]+p[1][1]-p[2][2],0)),F[2]=.5*Math.sqrt(Math.max(1-p[0][0]-p[1][1]+p[2][2],0)),F[3]=.5*Math.sqrt(Math.max(1+p[0][0]+p[1][1]+p[2][2],0)),p[2][1]>p[1][2]&&(F[0]=-F[0]),p[0][2]>p[2][0]&&(F[1]=-F[1]),p[1][0]>p[0][1]&&(F[2]=-F[2]),!0};function k(_,C,M){var g=C[0],P=C[1],T=C[2],F=C[3];return _[0]=M[0]*g+M[4]*P+M[8]*T+M[12]*F,_[1]=M[1]*g+M[5]*P+M[9]*T+M[13]*F,_[2]=M[2]*g+M[6]*P+M[10]*T+M[14]*F,_[3]=M[3]*g+M[7]*P+M[11]*T+M[15]*F,_}function A(_,C){_[0][0]=C[0],_[0][1]=C[1],_[0][2]=C[2],_[1][0]=C[4],_[1][1]=C[5],_[1][2]=C[6],_[2][0]=C[8],_[2][1]=C[9],_[2][2]=C[10]}function L(_,C,M,g,P){_[0]=C[0]*g+M[0]*P,_[1]=C[1]*g+M[1]*P,_[2]=C[2]*g+M[2]*P}},4335:function(i){i.exports=function(o,s){var l=s[15];if(l===0)return!1;for(var u=1/l,c=0;c<16;c++)o[c]=s[c]*u;return!0}},7442:function(i,a,o){var s=o(6658),l=o(7182),u=o(2652),c=o(9921),f=o(8648),h=b(),d=b(),v=b();i.exports=x;function x(k,A,L,_){if(c(A)===0||c(L)===0)return!1;var C=u(A,h.translate,h.scale,h.skew,h.perspective,h.quaternion),M=u(L,d.translate,d.scale,d.skew,d.perspective,d.quaternion);return!C||!M?!1:(s(v.translate,h.translate,d.translate,_),s(v.skew,h.skew,d.skew,_),s(v.scale,h.scale,d.scale,_),s(v.perspective,h.perspective,d.perspective,_),f(v.quaternion,h.quaternion,d.quaternion,_),l(k,v.translate,v.scale,v.skew,v.perspective,v.quaternion),!0)}function b(){return{translate:p(),scale:p(1),skew:p(),perspective:E(),quaternion:E()}}function p(k){return[k||0,k||0,k||0]}function E(){return[0,0,0,1]}},7182:function(i,a,o){var s={identity:o(7894),translate:o(7656),multiply:o(6760),create:o(6864),scale:o(2504),fromRotationTranslation:o(6743)},l=s.create(),u=s.create();i.exports=function(f,h,d,v,x,b){return s.identity(f),s.fromRotationTranslation(f,b,h),f[3]=x[0],f[7]=x[1],f[11]=x[2],f[15]=x[3],s.identity(u),v[2]!==0&&(u[9]=v[2],s.multiply(f,f,u)),v[1]!==0&&(u[9]=0,u[8]=v[1],s.multiply(f,f,u)),v[0]!==0&&(u[8]=0,u[4]=v[0],s.multiply(f,f,u)),s.scale(f,f,d),f}},1811:function(i,a,o){"use strict";var s=o(2478),l=o(7442),u=o(7608),c=o(5567),f=o(2408),h=o(7089),d=o(6582),v=o(7656),x=o(2504),b=o(3536),p=[0,0,0];i.exports=L;function E(_){this._components=_.slice(),this._time=[0],this.prevMatrix=_.slice(),this.nextMatrix=_.slice(),this.computedMatrix=_.slice(),this.computedInverse=_.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}var k=E.prototype;k.recalcMatrix=function(_){var C=this._time,M=s.le(C,_),g=this.computedMatrix;if(!(M<0)){var P=this._components;if(M===C.length-1)for(var T=16*M,F=0;F<16;++F)g[F]=P[T++];else{for(var q=C[M+1]-C[M],T=16*M,V=this.prevMatrix,H=!0,F=0;F<16;++F)V[F]=P[T++];for(var X=this.nextMatrix,F=0;F<16;++F)X[F]=P[T++],H=H&&V[F]===X[F];if(q<1e-6||H)for(var F=0;F<16;++F)g[F]=V[F];else l(g,V,X,(_-C[M])/q)}var G=this.computedUp;G[0]=g[1],G[1]=g[5],G[2]=g[9],b(G,G);var N=this.computedInverse;u(N,g);var W=this.computedEye,re=N[15];W[0]=N[12]/re,W[1]=N[13]/re,W[2]=N[14]/re;for(var ae=this.computedCenter,_e=Math.exp(this.computedRadius[0]),F=0;F<3;++F)ae[F]=W[F]-g[2+4*F]*_e}},k.idle=function(_){if(!(_1&&s(u[d[p-2]],u[d[p-1]],b)<=0;)p-=1,d.pop();for(d.push(x),p=v.length;p>1&&s(u[v[p-2]],u[v[p-1]],b)>=0;)p-=1,v.pop();v.push(x)}for(var E=new Array(v.length+d.length-2),k=0,f=0,A=d.length;f0;--L)E[k++]=v[L];return E}},351:function(i,a,o){"use strict";i.exports=l;var s=o(4687);function l(u,c){c||(c=u,u=window);var f=0,h=0,d=0,v={shift:!1,alt:!1,control:!1,meta:!1},x=!1;function b(T){var F=!1;return"altKey"in T&&(F=F||T.altKey!==v.alt,v.alt=!!T.altKey),"shiftKey"in T&&(F=F||T.shiftKey!==v.shift,v.shift=!!T.shiftKey),"ctrlKey"in T&&(F=F||T.ctrlKey!==v.control,v.control=!!T.ctrlKey),"metaKey"in T&&(F=F||T.metaKey!==v.meta,v.meta=!!T.metaKey),F}function p(T,F){var q=s.x(F),V=s.y(F);"buttons"in F&&(T=F.buttons|0),(T!==f||q!==h||V!==d||b(F))&&(f=T|0,h=q||0,d=V||0,c&&c(f,h,d,v))}function E(T){p(0,T)}function k(){(f||h||d||v.shift||v.alt||v.meta||v.control)&&(h=d=0,f=0,v.shift=v.alt=v.control=v.meta=!1,c&&c(0,0,0,v))}function A(T){b(T)&&c&&c(f,h,d,v)}function L(T){s.buttons(T)===0?p(0,T):p(f,T)}function _(T){p(f|s.buttons(T),T)}function C(T){p(f&~s.buttons(T),T)}function M(){x||(x=!0,u.addEventListener("mousemove",L),u.addEventListener("mousedown",_),u.addEventListener("mouseup",C),u.addEventListener("mouseleave",E),u.addEventListener("mouseenter",E),u.addEventListener("mouseout",E),u.addEventListener("mouseover",E),u.addEventListener("blur",k),u.addEventListener("keyup",A),u.addEventListener("keydown",A),u.addEventListener("keypress",A),u!==window&&(window.addEventListener("blur",k),window.addEventListener("keyup",A),window.addEventListener("keydown",A),window.addEventListener("keypress",A)))}function g(){x&&(x=!1,u.removeEventListener("mousemove",L),u.removeEventListener("mousedown",_),u.removeEventListener("mouseup",C),u.removeEventListener("mouseleave",E),u.removeEventListener("mouseenter",E),u.removeEventListener("mouseout",E),u.removeEventListener("mouseover",E),u.removeEventListener("blur",k),u.removeEventListener("keyup",A),u.removeEventListener("keydown",A),u.removeEventListener("keypress",A),u!==window&&(window.removeEventListener("blur",k),window.removeEventListener("keyup",A),window.removeEventListener("keydown",A),window.removeEventListener("keypress",A)))}M();var P={element:u};return Object.defineProperties(P,{enabled:{get:function(){return x},set:function(T){T?M():g()},enumerable:!0},buttons:{get:function(){return f},enumerable:!0},x:{get:function(){return h},enumerable:!0},y:{get:function(){return d},enumerable:!0},mods:{get:function(){return v},enumerable:!0}}),P}},24:function(i){var a={left:0,top:0};i.exports=o;function o(l,u,c){u=u||l.currentTarget||l.srcElement,Array.isArray(c)||(c=[0,0]);var f=l.clientX||0,h=l.clientY||0,d=s(u);return c[0]=f-d.left,c[1]=h-d.top,c}function s(l){return l===window||l===document||l===document.body?a:l.getBoundingClientRect()}},4687:function(i,a){"use strict";function o(c){if(typeof c=="object"){if("buttons"in c)return c.buttons;if("which"in c){var f=c.which;if(f===2)return 4;if(f===3)return 2;if(f>0)return 1<=0)return 1<0){if(Me=1,ie[Ee++]=v(M[F],k,A,L),F+=re,_>0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;for(F+=ae,Ee=0,ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,Me=2;Me0)for(_e=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L)),Ee+=1,F+=re,_e=2;_e<_;++_e)q=M[F],Ae=ie[Ee]=v(q,k,A,L),me=ie[Ee+ze],Ge=ie[Ee+Re],qt=ie[Ee+nt],(Ae!==me||Ae!==Ge||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,me,Ge,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,G,W,Ge,qt,k,A,L),qt!==me&&d(Te[Ee+ze],rt,W,H,qt,me,k,A,L)),Ee+=1,F+=re;Me&1&&(Ee=0),ot=ze,ze=Ce,Ce=ot,ot=Re,Re=ce,ce=ot,ot=nt,nt=ct,ct=ot,F+=ae}}b(Te),b(ie)}},"false,1,0":function(h,d,v,x,b){return function(E,k,A,L){var _=E.shape[0]|0,C=E.shape[1]|0,M=E.data,g=E.offset|0,P=E.stride[0]|0,T=E.stride[1]|0,F=g,q,V=-P|0,H=0,X=-T|0,G=0,N=-P-T|0,W=0,re=T|0,ae=P-T*C|0,_e=0,Me=0,ke=0,ge=2*C|0,ie=x(ge),Te=x(ge),Ee=0,Ae=0,ze=-1,Ce=-1,me=0,Re=-C|0,ce=C|0,Ge=0,nt=-C-1|0,ct=C-1|0,qt=0,rt=0,ot=0;for(Me=0;Me0){if(_e=1,ie[Ee++]=v(M[F],k,A,L),F+=re,C>0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++),Ee+=1,F+=re,Me=2;Me0)for(Me=1,q=M[F],Ae=ie[Ee]=v(q,k,A,L),Ge=ie[Ee+Re],me=ie[Ee+ze],qt=ie[Ee+nt],(Ae!==Ge||Ae!==me||Ae!==qt)&&(H=M[F+V],G=M[F+X],W=M[F+N],h(_e,Me,q,H,G,W,Ae,Ge,me,qt,k,A,L),rt=Te[Ee]=ke++,qt!==Ge&&d(Te[Ee+Re],rt,W,H,qt,Ge,k,A,L)),Ee+=1,F+=re,Me=2;Me 0"),typeof f.vertex!="function"&&h("Must specify vertex creation function"),typeof f.cell!="function"&&h("Must specify cell creation function"),typeof f.phase!="function"&&h("Must specify phase function");for(var b=f.getters||[],p=new Array(v),E=0;E=0?p[E]=!0:p[E]=!1;return u(f.vertex,f.cell,f.phase,x,d,p)}},6199:function(i,a,o){"use strict";var s=o(1338),l={zero:function(L,_,C,M){var g=L[0],P=C[0];M|=0;var T=0,F=P;for(T=0;T2&&T[1]>2&&M(P.pick(-1,-1).lo(1,1).hi(T[0]-2,T[1]-2),g.pick(-1,-1,0).lo(1,1).hi(T[0]-2,T[1]-2),g.pick(-1,-1,1).lo(1,1).hi(T[0]-2,T[1]-2)),T[1]>2&&(C(P.pick(0,-1).lo(1).hi(T[1]-2),g.pick(0,-1,1).lo(1).hi(T[1]-2)),_(g.pick(0,-1,0).lo(1).hi(T[1]-2))),T[1]>2&&(C(P.pick(T[0]-1,-1).lo(1).hi(T[1]-2),g.pick(T[0]-1,-1,1).lo(1).hi(T[1]-2)),_(g.pick(T[0]-1,-1,0).lo(1).hi(T[1]-2))),T[0]>2&&(C(P.pick(-1,0).lo(1).hi(T[0]-2),g.pick(-1,0,0).lo(1).hi(T[0]-2)),_(g.pick(-1,0,1).lo(1).hi(T[0]-2))),T[0]>2&&(C(P.pick(-1,T[1]-1).lo(1).hi(T[0]-2),g.pick(-1,T[1]-1,0).lo(1).hi(T[0]-2)),_(g.pick(-1,T[1]-1,1).lo(1).hi(T[0]-2))),g.set(0,0,0,0),g.set(0,0,1,0),g.set(T[0]-1,0,0,0),g.set(T[0]-1,0,1,0),g.set(0,T[1]-1,0,0),g.set(0,T[1]-1,1,0),g.set(T[0]-1,T[1]-1,0,0),g.set(T[0]-1,T[1]-1,1,0),g}}function A(L){var _=L.join(),T=v[_];if(T)return T;for(var C=L.length,M=[b,p],g=1;g<=C;++g)M.push(E(g));var P=k,T=P.apply(void 0,M);return v[_]=T,T}i.exports=function(_,C,M){if(Array.isArray(M)||(typeof M=="string"?M=s(C.dimension,M):M=s(C.dimension,"clamp")),C.size===0)return _;if(C.dimension===0)return _.set(0),_;var g=A(M);return g(_,C)}},4317:function(i){"use strict";function a(c,f){var h=Math.floor(f),d=f-h,v=0<=h&&h0;){G<64?(_=G,G=0):(_=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(C=N,N=0):(C=64,N-=64),p=H+G*g+N*P,A=X+G*F+N*q;var W=0,re=0,ae=0,_e=T,Me=g-M*T,ke=P-_*g,ge=V,ie=F-M*V,Te=q-_*F;for(ae=0;ae0;){q<64?(_=q,q=0):(_=64,q-=64);for(var V=v[0]|0;V>0;){V<64?(L=V,V=0):(L=64,V-=64),p=T+q*M+V*C,A=F+q*P+V*g;var H=0,X=0,G=M,N=C-_*M,W=P,re=g-_*P;for(X=0;X0;){X<64?(C=X,X=0):(C=64,X-=64);for(var G=v[0]|0;G>0;){G<64?(L=G,G=0):(L=64,G-=64);for(var N=v[1]|0;N>0;){N<64?(_=N,N=0):(_=64,N-=64),p=V+X*P+G*M+N*g,A=H+X*q+G*T+N*F;var W=0,re=0,ae=0,_e=P,Me=M-C*P,ke=g-L*M,ge=q,ie=T-C*q,Te=F-L*T;for(ae=0;ae<_;++ae){for(re=0;reE;){W=0,re=H-_;t:for(G=0;G_e)break t;re+=T,W+=F}for(W=H,re=H-_,G=0;G>1,N=G-V,W=G+V,re=H,ae=N,_e=G,Me=W,ke=X,ge=k+1,ie=A-1,Te=!0,Ee,Ae,ze,Ce,me,Re,ce,Ge,nt,ct=0,qt=0,rt=0,ot,Rt,kt,Ct,Yt,xr,er,Ke,xt,bt,Lt,St,Et,dt,Ht,$t,fr=P,_r=b(fr),Br=b(fr);Rt=C*re,kt=C*ae,$t=_;e:for(ot=0;ot0){Ae=re,re=ae,ae=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=re,re=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*re,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=re,re=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*_e,kt=C*Me,$t=_;e:for(ot=0;ot0){Ae=_e,_e=Me,Me=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=ae,ae=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*ae,kt=C*_e,$t=_;e:for(ot=0;ot0){Ae=ae,ae=_e,_e=Ae;break e}if(rt<0)break e;$t+=F}Rt=C*Me,kt=C*ke,$t=_;e:for(ot=0;ot0){Ae=Me,Me=ke,ke=Ae;break e}if(rt<0)break e;$t+=F}for(Rt=C*re,kt=C*ae,Ct=C*_e,Yt=C*Me,xr=C*ke,er=C*H,Ke=C*G,xt=C*X,Ht=0,$t=_,ot=0;ot0)ie--;else if(rt<0){for(Rt=C*Re,kt=C*ge,Ct=C*ie,$t=_,ot=0;ot0)for(;;){ce=_+ie*C,Ht=0;e:for(ot=0;ot0){if(--ieX){e:for(;;){for(ce=_+ge*C,Ht=0,$t=_,ot=0;ot1&&E?A(p,E[0],E[1]):A(p)}var d={"uint32,1,0":function(x,b){return function(p){var E=p.data,k=p.offset|0,A=p.shape,L=p.stride,_=L[0]|0,C=A[0]|0,M=L[1]|0,g=A[1]|0,P=M,T=M,F=1;C<=32?x(0,C-1,E,k,_,M,C,g,P,T,F):b(0,C-1,E,k,_,M,C,g,P,T,F)}}};function v(x,b){var p=[b,x].join(","),E=d[p],k=c(x,b),A=h(x,b,k);return E(k,A)}i.exports=v},446:function(i,a,o){"use strict";var s=o(7640),l={};function u(c){var f=c.order,h=c.dtype,d=[f,h],v=d.join(":"),x=l[v];return x||(l[v]=x=s(f,h)),x(c),c}i.exports=u},9618:function(i,a,o){var s=o(7163),l=typeof Float64Array!="undefined";function u(b,p){return b[0]-p[0]}function c(){var b=this.stride,p=new Array(b.length),E;for(E=0;E=0&&(M=_|0,C+=P*M,g-=M),new k(this.data,g,P,C)},A.step=function(_){var C=this.shape[0],M=this.stride[0],g=this.offset,P=0,T=Math.ceil;return typeof _=="number"&&(P=_|0,P<0?(g+=M*(C-1),C=T(-C/P)):C=T(C/P),M*=P),new k(this.data,C,M,g)},A.transpose=function(_){_=_===void 0?0:_|0;var C=this.shape,M=this.stride;return new k(this.data,C[_],M[_],this.offset)},A.pick=function(_){var C=[],M=[],g=this.offset;typeof _=="number"&&_>=0?g=g+this.stride[0]*_|0:(C.push(this.shape[0]),M.push(this.stride[0]));var P=p[C.length+1];return P(this.data,C,M,g)},function(_,C,M,g){return new k(_,C[0],M[0],g)}},2:function(b,p,E){function k(L,_,C,M,g,P){this.data=L,this.shape=[_,C],this.stride=[M,g],this.offset=P|0}var A=k.prototype;return A.dtype=b,A.dimension=2,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(A,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),A.set=function(_,C,M){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C,M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]=M},A.get=function(_,C){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C):this.data[this.offset+this.stride[0]*_+this.stride[1]*C]},A.index=function(_,C){return this.offset+this.stride[0]*_+this.stride[1]*C},A.hi=function(_,C){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,this.stride[0],this.stride[1],this.offset)},A.lo=function(_,C){var M=this.offset,g=0,P=this.shape[0],T=this.shape[1],F=this.stride[0],q=this.stride[1];return typeof _=="number"&&_>=0&&(g=_|0,M+=F*g,P-=g),typeof C=="number"&&C>=0&&(g=C|0,M+=q*g,T-=g),new k(this.data,P,T,F,q,M)},A.step=function(_,C){var M=this.shape[0],g=this.shape[1],P=this.stride[0],T=this.stride[1],F=this.offset,q=0,V=Math.ceil;return typeof _=="number"&&(q=_|0,q<0?(F+=P*(M-1),M=V(-M/q)):M=V(M/q),P*=q),typeof C=="number"&&(q=C|0,q<0?(F+=T*(g-1),g=V(-g/q)):g=V(g/q),T*=q),new k(this.data,M,g,P,T,F)},A.transpose=function(_,C){_=_===void 0?0:_|0,C=C===void 0?1:C|0;var M=this.shape,g=this.stride;return new k(this.data,M[_],M[C],g[_],g[C],this.offset)},A.pick=function(_,C){var M=[],g=[],P=this.offset;typeof _=="number"&&_>=0?P=P+this.stride[0]*_|0:(M.push(this.shape[0]),g.push(this.stride[0])),typeof C=="number"&&C>=0?P=P+this.stride[1]*C|0:(M.push(this.shape[1]),g.push(this.stride[1]));var T=p[M.length+1];return T(this.data,M,g,P)},function(_,C,M,g){return new k(_,C[0],C[1],M[0],M[1],g)}},3:function(b,p,E){function k(L,_,C,M,g,P,T,F){this.data=L,this.shape=[_,C,M],this.stride=[g,P,T],this.offset=F|0}var A=k.prototype;return A.dtype=b,A.dimension=3,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(A,"order",{get:function(){var _=Math.abs(this.stride[0]),C=Math.abs(this.stride[1]),M=Math.abs(this.stride[2]);return _>C?C>M?[2,1,0]:_>M?[1,2,0]:[1,0,2]:_>M?[2,0,1]:M>C?[0,1,2]:[0,2,1]}}),A.set=function(_,C,M,g){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M,g):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]=g},A.get=function(_,C,M){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M]},A.index=function(_,C,M){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M},A.hi=function(_,C,M){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,this.stride[0],this.stride[1],this.stride[2],this.offset)},A.lo=function(_,C,M){var g=this.offset,P=0,T=this.shape[0],F=this.shape[1],q=this.shape[2],V=this.stride[0],H=this.stride[1],X=this.stride[2];return typeof _=="number"&&_>=0&&(P=_|0,g+=V*P,T-=P),typeof C=="number"&&C>=0&&(P=C|0,g+=H*P,F-=P),typeof M=="number"&&M>=0&&(P=M|0,g+=X*P,q-=P),new k(this.data,T,F,q,V,H,X,g)},A.step=function(_,C,M){var g=this.shape[0],P=this.shape[1],T=this.shape[2],F=this.stride[0],q=this.stride[1],V=this.stride[2],H=this.offset,X=0,G=Math.ceil;return typeof _=="number"&&(X=_|0,X<0?(H+=F*(g-1),g=G(-g/X)):g=G(g/X),F*=X),typeof C=="number"&&(X=C|0,X<0?(H+=q*(P-1),P=G(-P/X)):P=G(P/X),q*=X),typeof M=="number"&&(X=M|0,X<0?(H+=V*(T-1),T=G(-T/X)):T=G(T/X),V*=X),new k(this.data,g,P,T,F,q,V,H)},A.transpose=function(_,C,M){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0;var g=this.shape,P=this.stride;return new k(this.data,g[_],g[C],g[M],P[_],P[C],P[M],this.offset)},A.pick=function(_,C,M){var g=[],P=[],T=this.offset;typeof _=="number"&&_>=0?T=T+this.stride[0]*_|0:(g.push(this.shape[0]),P.push(this.stride[0])),typeof C=="number"&&C>=0?T=T+this.stride[1]*C|0:(g.push(this.shape[1]),P.push(this.stride[1])),typeof M=="number"&&M>=0?T=T+this.stride[2]*M|0:(g.push(this.shape[2]),P.push(this.stride[2]));var F=p[g.length+1];return F(this.data,g,P,T)},function(_,C,M,g){return new k(_,C[0],C[1],C[2],M[0],M[1],M[2],g)}},4:function(b,p,E){function k(L,_,C,M,g,P,T,F,q,V){this.data=L,this.shape=[_,C,M,g],this.stride=[P,T,F,q],this.offset=V|0}var A=k.prototype;return A.dtype=b,A.dimension=4,Object.defineProperty(A,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(A,"order",{get:E}),A.set=function(_,C,M,g,P){return b==="generic"?this.data.set(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g,P):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g]=P},A.get=function(_,C,M,g){return b==="generic"?this.data.get(this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g):this.data[this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g]},A.index=function(_,C,M,g){return this.offset+this.stride[0]*_+this.stride[1]*C+this.stride[2]*M+this.stride[3]*g},A.hi=function(_,C,M,g){return new k(this.data,typeof _!="number"||_<0?this.shape[0]:_|0,typeof C!="number"||C<0?this.shape[1]:C|0,typeof M!="number"||M<0?this.shape[2]:M|0,typeof g!="number"||g<0?this.shape[3]:g|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},A.lo=function(_,C,M,g){var P=this.offset,T=0,F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.stride[0],G=this.stride[1],N=this.stride[2],W=this.stride[3];return typeof _=="number"&&_>=0&&(T=_|0,P+=X*T,F-=T),typeof C=="number"&&C>=0&&(T=C|0,P+=G*T,q-=T),typeof M=="number"&&M>=0&&(T=M|0,P+=N*T,V-=T),typeof g=="number"&&g>=0&&(T=g|0,P+=W*T,H-=T),new k(this.data,F,q,V,H,X,G,N,W,P)},A.step=function(_,C,M,g){var P=this.shape[0],T=this.shape[1],F=this.shape[2],q=this.shape[3],V=this.stride[0],H=this.stride[1],X=this.stride[2],G=this.stride[3],N=this.offset,W=0,re=Math.ceil;return typeof _=="number"&&(W=_|0,W<0?(N+=V*(P-1),P=re(-P/W)):P=re(P/W),V*=W),typeof C=="number"&&(W=C|0,W<0?(N+=H*(T-1),T=re(-T/W)):T=re(T/W),H*=W),typeof M=="number"&&(W=M|0,W<0?(N+=X*(F-1),F=re(-F/W)):F=re(F/W),X*=W),typeof g=="number"&&(W=g|0,W<0?(N+=G*(q-1),q=re(-q/W)):q=re(q/W),G*=W),new k(this.data,P,T,F,q,V,H,X,G,N)},A.transpose=function(_,C,M,g){_=_===void 0?0:_|0,C=C===void 0?1:C|0,M=M===void 0?2:M|0,g=g===void 0?3:g|0;var P=this.shape,T=this.stride;return new k(this.data,P[_],P[C],P[M],P[g],T[_],T[C],T[M],T[g],this.offset)},A.pick=function(_,C,M,g){var P=[],T=[],F=this.offset;typeof _=="number"&&_>=0?F=F+this.stride[0]*_|0:(P.push(this.shape[0]),T.push(this.stride[0])),typeof C=="number"&&C>=0?F=F+this.stride[1]*C|0:(P.push(this.shape[1]),T.push(this.stride[1])),typeof M=="number"&&M>=0?F=F+this.stride[2]*M|0:(P.push(this.shape[2]),T.push(this.stride[2])),typeof g=="number"&&g>=0?F=F+this.stride[3]*g|0:(P.push(this.shape[3]),T.push(this.stride[3]));var q=p[P.length+1];return q(this.data,P,T,F)},function(_,C,M,g){return new k(_,C[0],C[1],C[2],C[3],M[0],M[1],M[2],M[3],g)}},5:function(p,E,k){function A(_,C,M,g,P,T,F,q,V,H,X,G){this.data=_,this.shape=[C,M,g,P,T],this.stride=[F,q,V,H,X],this.offset=G|0}var L=A.prototype;return L.dtype=p,L.dimension=5,Object.defineProperty(L,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(L,"order",{get:k}),L.set=function(C,M,g,P,T,F){return p==="generic"?this.data.set(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T,F):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T]=F},L.get=function(C,M,g,P,T){return p==="generic"?this.data.get(this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T):this.data[this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T]},L.index=function(C,M,g,P,T){return this.offset+this.stride[0]*C+this.stride[1]*M+this.stride[2]*g+this.stride[3]*P+this.stride[4]*T},L.hi=function(C,M,g,P,T){return new A(this.data,typeof C!="number"||C<0?this.shape[0]:C|0,typeof M!="number"||M<0?this.shape[1]:M|0,typeof g!="number"||g<0?this.shape[2]:g|0,typeof P!="number"||P<0?this.shape[3]:P|0,typeof T!="number"||T<0?this.shape[4]:T|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},L.lo=function(C,M,g,P,T){var F=this.offset,q=0,V=this.shape[0],H=this.shape[1],X=this.shape[2],G=this.shape[3],N=this.shape[4],W=this.stride[0],re=this.stride[1],ae=this.stride[2],_e=this.stride[3],Me=this.stride[4];return typeof C=="number"&&C>=0&&(q=C|0,F+=W*q,V-=q),typeof M=="number"&&M>=0&&(q=M|0,F+=re*q,H-=q),typeof g=="number"&&g>=0&&(q=g|0,F+=ae*q,X-=q),typeof P=="number"&&P>=0&&(q=P|0,F+=_e*q,G-=q),typeof T=="number"&&T>=0&&(q=T|0,F+=Me*q,N-=q),new A(this.data,V,H,X,G,N,W,re,ae,_e,Me,F)},L.step=function(C,M,g,P,T){var F=this.shape[0],q=this.shape[1],V=this.shape[2],H=this.shape[3],X=this.shape[4],G=this.stride[0],N=this.stride[1],W=this.stride[2],re=this.stride[3],ae=this.stride[4],_e=this.offset,Me=0,ke=Math.ceil;return typeof C=="number"&&(Me=C|0,Me<0?(_e+=G*(F-1),F=ke(-F/Me)):F=ke(F/Me),G*=Me),typeof M=="number"&&(Me=M|0,Me<0?(_e+=N*(q-1),q=ke(-q/Me)):q=ke(q/Me),N*=Me),typeof g=="number"&&(Me=g|0,Me<0?(_e+=W*(V-1),V=ke(-V/Me)):V=ke(V/Me),W*=Me),typeof P=="number"&&(Me=P|0,Me<0?(_e+=re*(H-1),H=ke(-H/Me)):H=ke(H/Me),re*=Me),typeof T=="number"&&(Me=T|0,Me<0?(_e+=ae*(X-1),X=ke(-X/Me)):X=ke(X/Me),ae*=Me),new A(this.data,F,q,V,H,X,G,N,W,re,ae,_e)},L.transpose=function(C,M,g,P,T){C=C===void 0?0:C|0,M=M===void 0?1:M|0,g=g===void 0?2:g|0,P=P===void 0?3:P|0,T=T===void 0?4:T|0;var F=this.shape,q=this.stride;return new A(this.data,F[C],F[M],F[g],F[P],F[T],q[C],q[M],q[g],q[P],q[T],this.offset)},L.pick=function(C,M,g,P,T){var F=[],q=[],V=this.offset;typeof C=="number"&&C>=0?V=V+this.stride[0]*C|0:(F.push(this.shape[0]),q.push(this.stride[0])),typeof M=="number"&&M>=0?V=V+this.stride[1]*M|0:(F.push(this.shape[1]),q.push(this.stride[1])),typeof g=="number"&&g>=0?V=V+this.stride[2]*g|0:(F.push(this.shape[2]),q.push(this.stride[2])),typeof P=="number"&&P>=0?V=V+this.stride[3]*P|0:(F.push(this.shape[3]),q.push(this.stride[3])),typeof T=="number"&&T>=0?V=V+this.stride[4]*T|0:(F.push(this.shape[4]),q.push(this.stride[4]));var H=E[F.length+1];return H(this.data,F,q,V)},function(C,M,g,P){return new A(C,M[0],M[1],M[2],M[3],M[4],g[0],g[1],g[2],g[3],g[4],P)}}};function h(b,p){var E=p===-1?"T":String(p),k=f[E];return p===-1?k(b):p===0?k(b,v[b][0]):k(b,v[b],c)}function d(b){if(s(b))return"buffer";if(l)switch(Object.prototype.toString.call(b)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(b)?"array":"generic"}var v={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};function x(b,p,E,k){if(b===void 0){var g=v.array[0];return g([])}else typeof b=="number"&&(b=[b]);p===void 0&&(p=[b.length]);var A=p.length;if(E===void 0){E=new Array(A);for(var L=A-1,_=1;L>=0;--L)E[L]=_,_*=p[L]}if(k===void 0){k=0;for(var L=0;L>>0;i.exports=c;function c(f,h){if(isNaN(f)||isNaN(h))return NaN;if(f===h)return f;if(f===0)return h<0?-l:l;var d=s.hi(f),v=s.lo(f);return h>f==f>0?v===u?(d+=1,v=0):v+=1:v===0?(v=u,d-=1):v-=1,s.pack(v,d)}},8406:function(i,a){var o=1e-6,s=1e-6;a.vertexNormals=function(l,u,c){for(var f=u.length,h=new Array(f),d=c===void 0?o:c,v=0;vd)for(var F=h[p],q=1/Math.sqrt(M*P),T=0;T<3;++T){var V=(T+1)%3,H=(T+2)%3;F[T]+=q*(g[V]*C[H]-g[H]*C[V])}}for(var v=0;vd)for(var q=1/Math.sqrt(X),T=0;T<3;++T)F[T]*=q;else for(var T=0;T<3;++T)F[T]=0}return h},a.faceNormals=function(l,u,c){for(var f=l.length,h=new Array(f),d=c===void 0?s:c,v=0;vd?L=1/Math.sqrt(L):L=0;for(var p=0;p<3;++p)A[p]*=L;h[v]=A}return h}},4081:function(i){"use strict";i.exports=a;function a(o,s,l,u,c,f,h,d,v,x){var b=s+f+x;if(p>0){var p=Math.sqrt(b+1);o[0]=.5*(h-v)/p,o[1]=.5*(d-u)/p,o[2]=.5*(l-f)/p,o[3]=.5*p}else{var E=Math.max(s,f,x),p=Math.sqrt(2*E-b+1);s>=E?(o[0]=.5*p,o[1]=.5*(c+l)/p,o[2]=.5*(d+u)/p,o[3]=.5*(h-v)/p):f>=E?(o[0]=.5*(l+c)/p,o[1]=.5*p,o[2]=.5*(v+h)/p,o[3]=.5*(d-u)/p):(o[0]=.5*(u+d)/p,o[1]=.5*(h+v)/p,o[2]=.5*p,o[3]=.5*(l-c)/p)}return o}},9977:function(i,a,o){"use strict";i.exports=p;var s=o(9215),l=o(6582),u=o(7399),c=o(7608),f=o(4081);function h(E,k,A){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2))}function d(E,k,A,L){return Math.sqrt(Math.pow(E,2)+Math.pow(k,2)+Math.pow(A,2)+Math.pow(L,2))}function v(E,k){var A=k[0],L=k[1],_=k[2],C=k[3],M=d(A,L,_,C);M>1e-6?(E[0]=A/M,E[1]=L/M,E[2]=_/M,E[3]=C/M):(E[0]=E[1]=E[2]=0,E[3]=1)}function x(E,k,A){this.radius=s([A]),this.center=s(k),this.rotation=s(E),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var b=x.prototype;b.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},b.recalcMatrix=function(E){this.radius.curve(E),this.center.curve(E),this.rotation.curve(E);var k=this.computedRotation;v(k,k);var A=this.computedMatrix;u(A,k);var L=this.computedCenter,_=this.computedEye,C=this.computedUp,M=Math.exp(this.computedRadius[0]);_[0]=L[0]+M*A[2],_[1]=L[1]+M*A[6],_[2]=L[2]+M*A[10],C[0]=A[1],C[1]=A[5],C[2]=A[9];for(var g=0;g<3;++g){for(var P=0,T=0;T<3;++T)P+=A[g+4*T]*_[T];A[12+g]=-P}},b.getMatrix=function(E,k){this.recalcMatrix(E);var A=this.computedMatrix;if(k){for(var L=0;L<16;++L)k[L]=A[L];return k}return A},b.idle=function(E){this.center.idle(E),this.radius.idle(E),this.rotation.idle(E)},b.flush=function(E){this.center.flush(E),this.radius.flush(E),this.rotation.flush(E)},b.pan=function(E,k,A,L){k=k||0,A=A||0,L=L||0,this.recalcMatrix(E);var _=this.computedMatrix,C=_[1],M=_[5],g=_[9],P=h(C,M,g);C/=P,M/=P,g/=P;var T=_[0],F=_[4],q=_[8],V=T*C+F*M+q*g;T-=C*V,F-=M*V,q-=g*V;var H=h(T,F,q);T/=H,F/=H,q/=H;var X=_[2],G=_[6],N=_[10],W=X*C+G*M+N*g,re=X*T+G*F+N*q;X-=W*C+re*T,G-=W*M+re*F,N-=W*g+re*q;var ae=h(X,G,N);X/=ae,G/=ae,N/=ae;var _e=T*k+C*A,Me=F*k+M*A,ke=q*k+g*A;this.center.move(E,_e,Me,ke);var ge=Math.exp(this.computedRadius[0]);ge=Math.max(1e-4,ge+L),this.radius.set(E,Math.log(ge))},b.rotate=function(E,k,A,L){this.recalcMatrix(E),k=k||0,A=A||0;var _=this.computedMatrix,C=_[0],M=_[4],g=_[8],P=_[1],T=_[5],F=_[9],q=_[2],V=_[6],H=_[10],X=k*C+A*P,G=k*M+A*T,N=k*g+A*F,W=-(V*N-H*G),re=-(H*X-q*N),ae=-(q*G-V*X),_e=Math.sqrt(Math.max(0,1-Math.pow(W,2)-Math.pow(re,2)-Math.pow(ae,2))),Me=d(W,re,ae,_e);Me>1e-6?(W/=Me,re/=Me,ae/=Me,_e/=Me):(W=re=ae=0,_e=1);var ke=this.computedRotation,ge=ke[0],ie=ke[1],Te=ke[2],Ee=ke[3],Ae=ge*_e+Ee*W+ie*ae-Te*re,ze=ie*_e+Ee*re+Te*W-ge*ae,Ce=Te*_e+Ee*ae+ge*re-ie*W,me=Ee*_e-ge*W-ie*re-Te*ae;if(L){W=q,re=V,ae=H;var Re=Math.sin(L)/h(W,re,ae);W*=Re,re*=Re,ae*=Re,_e=Math.cos(k),Ae=Ae*_e+me*W+ze*ae-Ce*re,ze=ze*_e+me*re+Ce*W-Ae*ae,Ce=Ce*_e+me*ae+Ae*re-ze*W,me=me*_e-Ae*W-ze*re-Ce*ae}var ce=d(Ae,ze,Ce,me);ce>1e-6?(Ae/=ce,ze/=ce,Ce/=ce,me/=ce):(Ae=ze=Ce=0,me=1),this.rotation.set(E,Ae,ze,Ce,me)},b.lookAt=function(E,k,A,L){this.recalcMatrix(E),A=A||this.computedCenter,k=k||this.computedEye,L=L||this.computedUp;var _=this.computedMatrix;l(_,k,A,L);var C=this.computedRotation;f(C,_[0],_[1],_[2],_[4],_[5],_[6],_[8],_[9],_[10]),v(C,C),this.rotation.set(E,C[0],C[1],C[2],C[3]);for(var M=0,g=0;g<3;++g)M+=Math.pow(A[g]-k[g],2);this.radius.set(E,.5*Math.log(Math.max(M,1e-6))),this.center.set(E,A[0],A[1],A[2])},b.translate=function(E,k,A,L){this.center.move(E,k||0,A||0,L||0)},b.setMatrix=function(E,k){var A=this.computedRotation;f(A,k[0],k[1],k[2],k[4],k[5],k[6],k[8],k[9],k[10]),v(A,A),this.rotation.set(E,A[0],A[1],A[2],A[3]);var L=this.computedMatrix;c(L,k);var _=L[15];if(Math.abs(_)>1e-6){var C=L[12]/_,M=L[13]/_,g=L[14]/_;this.recalcMatrix(E);var P=Math.exp(this.computedRadius[0]);this.center.set(E,C-L[2]*P,M-L[6]*P,g-L[10]*P),this.radius.idle(E)}else this.center.idle(E),this.radius.idle(E)},b.setDistance=function(E,k){k>0&&this.radius.set(E,Math.log(k))},b.setDistanceLimits=function(E,k){E>0?E=Math.log(E):E=-1/0,k>0?k=Math.log(k):k=1/0,k=Math.max(k,E),this.radius.bounds[0][0]=E,this.radius.bounds[1][0]=k},b.getDistanceLimits=function(E){var k=this.radius.bounds;return E?(E[0]=Math.exp(k[0][0]),E[1]=Math.exp(k[1][0]),E):[Math.exp(k[0][0]),Math.exp(k[1][0])]},b.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},b.fromJSON=function(E){var k=this.lastT(),A=E.center;A&&this.center.set(k,A[0],A[1],A[2]);var L=E.rotation;L&&this.rotation.set(k,L[0],L[1],L[2],L[3]);var _=E.distance;_&&_>0&&this.radius.set(k,Math.log(_)),this.setDistanceLimits(E.zoomMin,E.zoomMax)};function p(E){E=E||{};var k=E.center||[0,0,0],A=E.rotation||[0,0,0,1],L=E.radius||1;k=[].slice.call(k,0,3),A=[].slice.call(A,0,4),v(A,A);var _=new x(A,k,Math.log(L));return _.setDistanceLimits(E.zoomMin,E.zoomMax),("eye"in E||"up"in E)&&_.lookAt(0,E.eye,E.center,E.up),_}},1371:function(i,a,o){"use strict";var s=o(3233);i.exports=function(u,c,f){return f=typeof f!="undefined"?f+"":" ",s(f,c)+u}},3202:function(i){i.exports=function(o,s){s||(s=[0,""]),o=String(o);var l=parseFloat(o,10);return s[0]=l,s[1]=o.match(/[\d.\-\+]*\s*(.*)/)[1]||"",s}},3088:function(i,a,o){"use strict";i.exports=l;var s=o(3140);function l(u,c){for(var f=c.length|0,h=u.length,d=[new Array(f),new Array(f)],v=0;v0){F=d[H][P][0],V=H;break}q=F[V^1];for(var X=0;X<2;++X)for(var G=d[X][P],N=0;N0&&(F=W,q=re,V=X)}return T||F&&p(F,V),q}function k(g,P){var T=d[P][g][0],F=[g];p(T,P);for(var q=T[P^1],V=P;;){for(;q!==g;)F.push(q),q=E(F[F.length-2],q,!1);if(d[0][g].length+d[1][g].length===0)break;var H=F[F.length-1],X=g,G=F[1],N=E(H,X,!0);if(s(c[H],c[X],c[G],c[N])<0)break;F.push(g),q=E(H,X)}return F}function A(g,P){return P[1]===P[P.length-1]}for(var v=0;v0;){var C=d[0][v].length,M=k(v,L);A(_,M)?_.push.apply(_,M):(_.length>0&&b.push(_),_=M)}_.length>0&&b.push(_)}return b}},5609:function(i,a,o){"use strict";i.exports=l;var s=o(3134);function l(u,c){for(var f=s(u,c.length),h=new Array(c.length),d=new Array(c.length),v=[],x=0;x0;){var p=v.pop();h[p]=!1;for(var E=f[p],x=0;x0}C=C.filter(M);for(var g=C.length,P=new Array(g),T=new Array(g),_=0;_0;){var ce=Ce.pop(),Ge=Me[ce];h(Ge,function(ot,Rt){return ot-Rt});var nt=Ge.length,ct=me[ce],qt;if(ct===0){var G=C[ce];qt=[G]}for(var _=0;_=0)&&(me[rt]=ct^1,Ce.push(rt),ct===0)){var G=C[rt];ze(G)||(G.reverse(),qt.push(G))}}ct===0&&Re.push(qt)}return Re}},5085:function(i,a,o){i.exports=E;var s=o(3250)[3],l=o(4209),u=o(3352),c=o(2478);function f(){return!0}function h(k){return function(A,L){var _=k[A];return _?!!_.queryPoint(L,f):!1}}function d(k){for(var A={},L=0;L0&&A[_]===L[0])C=k[_-1];else return 1;for(var M=1;C;){var g=C.key,P=s(L,g[0],g[1]);if(g[0][0]0)M=-1,C=C.right;else return 0;else if(P>0)C=C.left;else if(P<0)M=1,C=C.right;else return 0}return M}}function x(k){return 1}function b(k){return function(L){return k(L[0],L[1])?0:1}}function p(k,A){return function(_){return k(_[0],_[1])?0:A(_)}}function E(k){for(var A=k.length,L=[],_=[],C=0,M=0;M=x?(g=1,T=x+2*E+A):(g=-E/x,T=E*g+A)):(g=0,k>=0?(P=0,T=A):-k>=p?(P=1,T=p+2*k+A):(P=-k/p,T=k*P+A));else if(P<0)P=0,E>=0?(g=0,T=A):-E>=x?(g=1,T=x+2*E+A):(g=-E/x,T=E*g+A);else{var F=1/M;g*=F,P*=F,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A}else{var q,V,H,X;g<0?(q=b+E,V=p+k,V>q?(H=V-q,X=x-2*b+p,H>=X?(g=1,P=0,T=x+2*E+A):(g=H/X,P=1-g,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)):(g=0,V<=0?(P=1,T=p+2*k+A):k>=0?(P=0,T=A):(P=-k/p,T=k*P+A))):P<0?(q=b+k,V=x+E,V>q?(H=V-q,X=x-2*b+p,H>=X?(P=1,g=0,T=p+2*k+A):(P=H/X,g=1-P,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)):(P=0,V<=0?(g=1,T=x+2*E+A):E>=0?(g=0,T=A):(g=-E/x,T=E*g+A))):(H=p+k-b-E,H<=0?(g=0,P=1,T=p+2*k+A):(X=x-2*b+p,H>=X?(g=1,P=0,T=x+2*E+A):(g=H/X,P=1-g,T=g*(x*g+b*P+2*E)+P*(b*g+p*P+2*k)+A)))}for(var G=1-g-P,v=0;v0){var p=f[d-1];if(s(x,p)===0&&u(p)!==b){d-=1;continue}}f[d++]=x}}return f.length=d,f}},3233:function(i){"use strict";var a="",o;i.exports=s;function s(l,u){if(typeof l!="string")throw new TypeError("expected a string");if(u===1)return l;if(u===2)return l+l;var c=l.length*u;if(o!==l||typeof o=="undefined")o=l,a="";else if(a.length>=c)return a.substr(0,c);for(;c>a.length&&u>1;)u&1&&(a+=l),u>>=1,l+=l;return a+=l,a=a.substr(0,c),a}},3025:function(i,a,o){i.exports=o.g.performance&&o.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(i){"use strict";i.exports=a;function a(o){for(var s=o.length,l=o[o.length-1],u=s,c=s-2;c>=0;--c){var f=l,h=o[c];l=f+h;var d=l-f,v=h-d;v&&(o[--u]=l,l=v)}for(var x=0,c=u;c0){if(V<=0)return H;X=q+V}else if(q<0){if(V>=0)return H;X=-(q+V)}else return H;var G=d*X;return H>=G||H<=-G?H:k(P,T,F)},function(P,T,F,q){var V=P[0]-q[0],H=T[0]-q[0],X=F[0]-q[0],G=P[1]-q[1],N=T[1]-q[1],W=F[1]-q[1],re=P[2]-q[2],ae=T[2]-q[2],_e=F[2]-q[2],Me=H*W,ke=X*N,ge=X*G,ie=V*W,Te=V*N,Ee=H*G,Ae=re*(Me-ke)+ae*(ge-ie)+_e*(Te-Ee),ze=(Math.abs(Me)+Math.abs(ke))*Math.abs(re)+(Math.abs(ge)+Math.abs(ie))*Math.abs(ae)+(Math.abs(Te)+Math.abs(Ee))*Math.abs(_e),Ce=v*ze;return Ae>Ce||-Ae>Ce?Ae:A(P,T,F,q)}];function _(g){var P=L[g.length];return P||(P=L[g.length]=E(g.length)),P.apply(void 0,g)}function C(g,P,T,F,q,V,H){return function(G,N,W,re,ae){switch(arguments.length){case 0:case 1:return 0;case 2:return F(G,N);case 3:return q(G,N,W);case 4:return V(G,N,W,re);case 5:return H(G,N,W,re,ae)}for(var _e=new Array(arguments.length),Me=0;Me0&&x>0||v<0&&x<0)return!1;var b=s(h,c,f),p=s(d,c,f);return b>0&&p>0||b<0&&p<0?!1:v===0&&x===0&&b===0&&p===0?l(c,f,h,d):!0}},8545:function(i){"use strict";i.exports=o;function a(s,l){var u=s+l,c=u-s,f=u-c,h=l-c,d=s-f,v=d+h;return v?[v,u]:[u]}function o(s,l){var u=s.length|0,c=l.length|0;if(u===1&&c===1)return a(s[0],-l[0]);var f=u+c,h=new Array(f),d=0,v=0,x=0,b=Math.abs,p=s[v],E=b(p),k=-l[x],A=b(k),L,_;E=c?(L=p,v+=1,v=c?(L=p,v+=1,v>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,k=f[2*E+1];if(k===x)return E;x>1,X=d(P[H],T);X<=0?(X===0&&(V=H),F=H+1):X>0&&(q=H-1)}return V}s=p;function E(P,T){for(var F=new Array(P.length),q=0,V=F.length;q=P.length||d(P[Me],H)!==0););}return F}s=E;function k(P,T){if(!T)return E(b(L(P,0)),P,0);for(var F=new Array(T),q=0;q>>W&1&&N.push(V[W]);T.push(N)}return x(T)}s=A;function L(P,T){if(T<0)return[];for(var F=[],q=(1<0)-(u<0)},a.abs=function(u){var c=u>>o-1;return(u^c)-c},a.min=function(u,c){return c^(u^c)&-(u65535)<<4,u>>>=c,f=(u>255)<<3,u>>>=f,c|=f,f=(u>15)<<2,u>>>=f,c|=f,f=(u>3)<<1,u>>>=f,c|=f,c|u>>1},a.log10=function(u){return u>=1e9?9:u>=1e8?8:u>=1e7?7:u>=1e6?6:u>=1e5?5:u>=1e4?4:u>=1e3?3:u>=100?2:u>=10?1:0},a.popCount=function(u){return u=u-(u>>>1&1431655765),u=(u&858993459)+(u>>>2&858993459),(u+(u>>>4)&252645135)*16843009>>>24};function s(u){var c=32;return u&=-u,u&&c--,u&65535&&(c-=16),u&16711935&&(c-=8),u&252645135&&(c-=4),u&858993459&&(c-=2),u&1431655765&&(c-=1),c}a.countTrailingZeros=s,a.nextPow2=function(u){return u+=u===0,--u,u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u+1},a.prevPow2=function(u){return u|=u>>>1,u|=u>>>2,u|=u>>>4,u|=u>>>8,u|=u>>>16,u-(u>>>1)},a.parity=function(u){return u^=u>>>16,u^=u>>>8,u^=u>>>4,u&=15,27030>>>u&1};var l=new Array(256);(function(u){for(var c=0;c<256;++c){var f=c,h=c,d=7;for(f>>>=1;f;f>>>=1)h<<=1,h|=f&1,--d;u[c]=h<>>8&255]<<16|l[u>>>16&255]<<8|l[u>>>24&255]},a.interleave2=function(u,c){return u&=65535,u=(u|u<<8)&16711935,u=(u|u<<4)&252645135,u=(u|u<<2)&858993459,u=(u|u<<1)&1431655765,c&=65535,c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,u|c<<1},a.deinterleave2=function(u,c){return u=u>>>c&1431655765,u=(u|u>>>1)&858993459,u=(u|u>>>2)&252645135,u=(u|u>>>4)&16711935,u=(u|u>>>16)&65535,u<<16>>16},a.interleave3=function(u,c,f){return u&=1023,u=(u|u<<16)&4278190335,u=(u|u<<8)&251719695,u=(u|u<<4)&3272356035,u=(u|u<<2)&1227133513,c&=1023,c=(c|c<<16)&4278190335,c=(c|c<<8)&251719695,c=(c|c<<4)&3272356035,c=(c|c<<2)&1227133513,u|=c<<1,f&=1023,f=(f|f<<16)&4278190335,f=(f|f<<8)&251719695,f=(f|f<<4)&3272356035,f=(f|f<<2)&1227133513,u|f<<2},a.deinterleave3=function(u,c){return u=u>>>c&1227133513,u=(u|u>>>2)&3272356035,u=(u|u>>>4)&251719695,u=(u|u>>>8)&4278190335,u=(u|u>>>16)&1023,u<<22>>22},a.nextCombination=function(u){var c=u|u-1;return c+1|(~c&-~c)-1>>>s(u)+1}},2014:function(i,a,o){"use strict";"use restrict";var s=o(3105),l=o(4623);function u(g){for(var P=0,T=Math.max,F=0,q=g.length;F>1,H=h(g[V],P);H<=0?(H===0&&(q=V),T=V+1):H>0&&(F=V-1)}return q}a.findCell=b;function p(g,P){for(var T=new Array(g.length),F=0,q=T.length;F=g.length||h(g[_e],V)!==0););}return T}a.incidence=p;function E(g,P){if(!P)return p(x(A(g,0)),g,0);for(var T=new Array(P),F=0;F>>N&1&&G.push(q[N]);P.push(G)}return v(P)}a.explode=k;function A(g,P){if(P<0)return[];for(var T=[],F=(1<>1:(ie>>1)-1}function F(ie){for(var Te=P(ie);;){var Ee=Te,Ae=2*ie+1,ze=2*(ie+1),Ce=ie;if(Ae0;){var Ee=T(ie);if(Ee>=0){var Ae=P(Ee);if(Te0){var ie=G[0];return g(0,re-1),re-=1,F(0),ie}return-1}function H(ie,Te){var Ee=G[ie];return E[Ee]===Te?ie:(E[Ee]=-1/0,q(ie),V(),E[Ee]=Te,re+=1,q(re-1))}function X(ie){if(!k[ie]){k[ie]=!0;var Te=b[ie],Ee=p[ie];b[Ee]>=0&&(b[Ee]=Te),p[Te]>=0&&(p[Te]=Ee),N[Te]>=0&&H(N[Te],M(Te)),N[Ee]>=0&&H(N[Ee],M(Ee))}}for(var G=[],N=new Array(v),A=0;A>1;A>=0;--A)F(A);for(;;){var ae=V();if(ae<0||E[ae]>d)break;X(ae)}for(var _e=[],A=0;A=0&&Ee>=0&&Te!==Ee){var Ae=N[Te],ze=N[Ee];Ae!==ze&&ge.push([Ae,ze])}}),l.unique(l.normalize(ge)),{positions:_e,edges:ge}}},1303:function(i,a,o){"use strict";i.exports=u;var s=o(3250);function l(c,f){var h,d;if(f[0][0]f[1][0])h=f[1],d=f[0];else{var v=Math.min(c[0][1],c[1][1]),x=Math.max(c[0][1],c[1][1]),b=Math.min(f[0][1],f[1][1]),p=Math.max(f[0][1],f[1][1]);return xp?v-p:x-p}var E,k;c[0][1]f[1][0])h=f[1],d=f[0];else return l(f,c);var v,x;if(c[0][0]c[1][0])v=c[1],x=c[0];else return-l(c,f);var b=s(h,d,x),p=s(h,d,v);if(b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;if(b=s(x,v,d),p=s(x,v,h),b<0){if(p<=0)return b}else if(b>0){if(p>=0)return b}else if(p)return p;return d[0]-x[0]}},4209:function(i,a,o){"use strict";i.exports=p;var s=o(2478),l=o(3840),u=o(3250),c=o(1303);function f(E,k,A){this.slabs=E,this.coordinates=k,this.horizontal=A}var h=f.prototype;function d(E,k){return E.y-k}function v(E,k){for(var A=null;E;){var L=E.key,_,C;L[0][0]0)if(k[0]!==L[1][0])A=E,E=E.right;else{var g=v(E.right,k);if(g)return g;E=E.left}else{if(k[0]!==L[1][0])return E;var g=v(E.right,k);if(g)return g;E=E.left}}return A}h.castUp=function(E){var k=s.le(this.coordinates,E[0]);if(k<0)return-1;var A=this.slabs[k],L=v(this.slabs[k],E),_=-1;if(L&&(_=L.value),this.coordinates[k]===E[0]){var C=null;if(L&&(C=L.key),k>0){var M=v(this.slabs[k-1],E);M&&(C?c(M.key,C)>0&&(C=M.key,_=M.value):(_=M.value,C=M.key))}var g=this.horizontal[k];if(g.length>0){var P=s.ge(g,E[1],d);if(P=g.length)return _;T=g[P]}}if(T.start)if(C){var F=u(C[0],C[1],[E[0],T.y]);C[0][0]>C[1][0]&&(F=-F),F>0&&(_=T.index)}else _=T.index;else T.y!==E[1]&&(_=T.index)}}}return _};function x(E,k,A,L){this.y=E,this.index=k,this.start=A,this.closed=L}function b(E,k,A,L){this.x=E,this.segment=k,this.create=A,this.index=L}function p(E){for(var k=E.length,A=2*k,L=new Array(A),_=0;_1&&(k=1);for(var A=1-k,L=v.length,_=new Array(L),C=0;C0||E>0&&_<0){var C=c(k,_,A,E);b.push(C),p.push(C.slice())}_<0?p.push(A.slice()):_>0?b.push(A.slice()):(b.push(A.slice()),p.push(A.slice())),E=_}return{positive:b,negative:p}}function h(v,x){for(var b=[],p=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||p>0&&L<0)&&b.push(c(E,L,k,p)),L>=0&&b.push(k.slice()),p=L}return b}function d(v,x){for(var b=[],p=u(v[v.length-1],x),E=v[v.length-1],k=v[0],A=0;A0||p>0&&L<0)&&b.push(c(E,L,k,p)),L<=0&&b.push(k.slice()),p=L}return b}},3387:function(i,a,o){var s;(function(){"use strict";var l={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function u(v){return f(d(v),arguments)}function c(v,x){return u.apply(null,[v].concat(x||[]))}function f(v,x){var b=1,p=v.length,E,k="",A,L,_,C,M,g,P,T;for(A=0;A=0),_.type){case"b":E=parseInt(E,10).toString(2);break;case"c":E=String.fromCharCode(parseInt(E,10));break;case"d":case"i":E=parseInt(E,10);break;case"j":E=JSON.stringify(E,null,_.width?parseInt(_.width):0);break;case"e":E=_.precision?parseFloat(E).toExponential(_.precision):parseFloat(E).toExponential();break;case"f":E=_.precision?parseFloat(E).toFixed(_.precision):parseFloat(E);break;case"g":E=_.precision?String(Number(E.toPrecision(_.precision))):parseFloat(E);break;case"o":E=(parseInt(E,10)>>>0).toString(8);break;case"s":E=String(E),E=_.precision?E.substring(0,_.precision):E;break;case"t":E=String(!!E),E=_.precision?E.substring(0,_.precision):E;break;case"T":E=Object.prototype.toString.call(E).slice(8,-1).toLowerCase(),E=_.precision?E.substring(0,_.precision):E;break;case"u":E=parseInt(E,10)>>>0;break;case"v":E=E.valueOf(),E=_.precision?E.substring(0,_.precision):E;break;case"x":E=(parseInt(E,10)>>>0).toString(16);break;case"X":E=(parseInt(E,10)>>>0).toString(16).toUpperCase();break}l.json.test(_.type)?k+=E:(l.number.test(_.type)&&(!P||_.sign)?(T=P?"+":"-",E=E.toString().replace(l.sign,"")):T="",M=_.pad_char?_.pad_char==="0"?"0":_.pad_char.charAt(1):" ",g=_.width-(T+E).length,C=_.width&&g>0?M.repeat(g):"",k+=_.align?T+E+C:M==="0"?T+C+E:C+T+E)}return k}var h=Object.create(null);function d(v){if(h[v])return h[v];for(var x=v,b,p=[],E=0;x;){if((b=l.text.exec(x))!==null)p.push(b[0]);else if((b=l.modulo.exec(x))!==null)p.push("%");else if((b=l.placeholder.exec(x))!==null){if(b[2]){E|=1;var k=[],A=b[2],L=[];if((L=l.key.exec(A))!==null)for(k.push(L[1]);(A=A.substring(L[0].length))!=="";)if((L=l.key_access.exec(A))!==null)k.push(L[1]);else if((L=l.index_access.exec(A))!==null)k.push(L[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");b[2]=k}else E|=2;if(E===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");p.push({placeholder:b[0],param_no:b[1],keys:b[2],sign:b[3],pad_char:b[4],align:b[5],width:b[6],precision:b[7],type:b[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");x=x.substring(b[0].length)}return h[v]=p}a.sprintf=u,a.vsprintf=c,typeof window!="undefined"&&(window.sprintf=u,window.vsprintf=c,s=function(){return{sprintf:u,vsprintf:c}}.call(a,o,a,i),s!==void 0&&(i.exports=s))})()},3711:function(i,a,o){"use strict";i.exports=d;var s=o(2640),l=o(781),u={"2d":function(v,x,b){var p=v({order:x,scalarArguments:3,getters:b==="generic"?[0]:void 0,phase:function(k,A,L,_){return k>_|0},vertex:function(k,A,L,_,C,M,g,P,T,F,q,V,H){var X=(g<<0)+(P<<1)+(T<<2)+(F<<3)|0;if(!(X===0||X===15))switch(X){case 0:q.push([k-.5,A-.5]);break;case 1:q.push([k-.25-.25*(_+L-2*H)/(L-_),A-.25-.25*(C+L-2*H)/(L-C)]);break;case 2:q.push([k-.75-.25*(-_-L+2*H)/(_-L),A-.25-.25*(M+_-2*H)/(_-M)]);break;case 3:q.push([k-.5,A-.5-.5*(C+L+M+_-4*H)/(L-C+_-M)]);break;case 4:q.push([k-.25-.25*(M+C-2*H)/(C-M),A-.75-.25*(-C-L+2*H)/(C-L)]);break;case 5:q.push([k-.5-.5*(_+L+M+C-4*H)/(L-_+C-M),A-.5]);break;case 6:q.push([k-.5-.25*(-_-L+M+C)/(_-L+C-M),A-.5-.25*(-C-L+M+_)/(C-L+_-M)]);break;case 7:q.push([k-.75-.25*(M+C-2*H)/(C-M),A-.75-.25*(M+_-2*H)/(_-M)]);break;case 8:q.push([k-.75-.25*(-M-C+2*H)/(M-C),A-.75-.25*(-M-_+2*H)/(M-_)]);break;case 9:q.push([k-.5-.25*(_+L+-M-C)/(L-_+M-C),A-.5-.25*(C+L+-M-_)/(L-C+M-_)]);break;case 10:q.push([k-.5-.5*(-_-L+-M-C+4*H)/(_-L+M-C),A-.5]);break;case 11:q.push([k-.25-.25*(-M-C+2*H)/(M-C),A-.75-.25*(C+L-2*H)/(L-C)]);break;case 12:q.push([k-.5,A-.5-.5*(-C-L+-M-_+4*H)/(C-L+M-_)]);break;case 13:q.push([k-.75-.25*(_+L-2*H)/(L-_),A-.25-.25*(-M-_+2*H)/(M-_)]);break;case 14:q.push([k-.25-.25*(-_-L+2*H)/(_-L),A-.25-.25*(-C-L+2*H)/(C-L)]);break;case 15:q.push([k-.5,A-.5]);break}},cell:function(k,A,L,_,C,M,g,P,T){C?P.push([k,A]):P.push([A,k])}});return function(E,k){var A=[],L=[];return p(E,A,L,k),{positions:A,cells:L}}}};function c(v,x){var b=v.length+"d",p=u[b];if(p)return p(s,v,x)}function f(v,x){for(var b=l(v,x),p=b.length,E=new Array(p),k=new Array(p),A=0;AMath.max(_,C)?M[2]=1:_>Math.max(L,C)?M[0]=1:M[1]=1;for(var g=0,P=0,T=0;T<3;++T)g+=A[T]*A[T],P+=M[T]*A[T];for(var T=0;T<3;++T)M[T]-=P/g*A[T];return f(M,M),M}function b(A,L,_,C,M,g,P,T){this.center=s(_),this.up=s(C),this.right=s(M),this.radius=s([g]),this.angle=s([P,T]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(A,L),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var F=0;F<16;++F)this.computedMatrix[F]=.5;this.recalcMatrix(0)}var p=b.prototype;p.setDistanceLimits=function(A,L){A>0?A=Math.log(A):A=-1/0,L>0?L=Math.log(L):L=1/0,L=Math.max(L,A),this.radius.bounds[0][0]=A,this.radius.bounds[1][0]=L},p.getDistanceLimits=function(A){var L=this.radius.bounds[0];return A?(A[0]=Math.exp(L[0][0]),A[1]=Math.exp(L[1][0]),A):[Math.exp(L[0][0]),Math.exp(L[1][0])]},p.recalcMatrix=function(A){this.center.curve(A),this.up.curve(A),this.right.curve(A),this.radius.curve(A),this.angle.curve(A);for(var L=this.computedUp,_=this.computedRight,C=0,M=0,g=0;g<3;++g)M+=L[g]*_[g],C+=L[g]*L[g];for(var P=Math.sqrt(C),T=0,g=0;g<3;++g)_[g]-=L[g]*M/C,T+=_[g]*_[g],L[g]/=P;for(var F=Math.sqrt(T),g=0;g<3;++g)_[g]/=F;var q=this.computedToward;c(q,L,_),f(q,q);for(var V=Math.exp(this.computedRadius[0]),H=this.computedAngle[0],X=this.computedAngle[1],G=Math.cos(H),N=Math.sin(H),W=Math.cos(X),re=Math.sin(X),ae=this.computedCenter,_e=G*W,Me=N*W,ke=re,ge=-G*re,ie=-N*re,Te=W,Ee=this.computedEye,Ae=this.computedMatrix,g=0;g<3;++g){var ze=_e*_[g]+Me*q[g]+ke*L[g];Ae[4*g+1]=ge*_[g]+ie*q[g]+Te*L[g],Ae[4*g+2]=ze,Ae[4*g+3]=0}var Ce=Ae[1],me=Ae[5],Re=Ae[9],ce=Ae[2],Ge=Ae[6],nt=Ae[10],ct=me*nt-Re*Ge,qt=Re*ce-Ce*nt,rt=Ce*Ge-me*ce,ot=d(ct,qt,rt);ct/=ot,qt/=ot,rt/=ot,Ae[0]=ct,Ae[4]=qt,Ae[8]=rt;for(var g=0;g<3;++g)Ee[g]=ae[g]+Ae[2+4*g]*V;for(var g=0;g<3;++g){for(var T=0,Rt=0;Rt<3;++Rt)T+=Ae[g+4*Rt]*Ee[Rt];Ae[12+g]=-T}Ae[15]=1},p.getMatrix=function(A,L){this.recalcMatrix(A);var _=this.computedMatrix;if(L){for(var C=0;C<16;++C)L[C]=_[C];return L}return _};var E=[0,0,0];p.rotate=function(A,L,_,C){if(this.angle.move(A,L,_),C){this.recalcMatrix(A);var M=this.computedMatrix;E[0]=M[2],E[1]=M[6],E[2]=M[10];for(var g=this.computedUp,P=this.computedRight,T=this.computedToward,F=0;F<3;++F)M[4*F]=g[F],M[4*F+1]=P[F],M[4*F+2]=T[F];u(M,M,C,E);for(var F=0;F<3;++F)g[F]=M[4*F],P[F]=M[4*F+1];this.up.set(A,g[0],g[1],g[2]),this.right.set(A,P[0],P[1],P[2])}},p.pan=function(A,L,_,C){L=L||0,_=_||0,C=C||0,this.recalcMatrix(A);var M=this.computedMatrix,g=Math.exp(this.computedRadius[0]),P=M[1],T=M[5],F=M[9],q=d(P,T,F);P/=q,T/=q,F/=q;var V=M[0],H=M[4],X=M[8],G=V*P+H*T+X*F;V-=P*G,H-=T*G,X-=F*G;var N=d(V,H,X);V/=N,H/=N,X/=N;var W=V*L+P*_,re=H*L+T*_,ae=X*L+F*_;this.center.move(A,W,re,ae);var _e=Math.exp(this.computedRadius[0]);_e=Math.max(1e-4,_e+C),this.radius.set(A,Math.log(_e))},p.translate=function(A,L,_,C){this.center.move(A,L||0,_||0,C||0)},p.setMatrix=function(A,L,_,C){var M=1;typeof _=="number"&&(M=_|0),(M<0||M>3)&&(M=1);var g=(M+2)%3,P=(M+1)%3;L||(this.recalcMatrix(A),L=this.computedMatrix);var T=L[M],F=L[M+4],q=L[M+8];if(C){var H=Math.abs(T),X=Math.abs(F),G=Math.abs(q),N=Math.max(H,X,G);H===N?(T=T<0?-1:1,F=q=0):G===N?(q=q<0?-1:1,T=F=0):(F=F<0?-1:1,T=q=0)}else{var V=d(T,F,q);T/=V,F/=V,q/=V}var W=L[g],re=L[g+4],ae=L[g+8],_e=W*T+re*F+ae*q;W-=T*_e,re-=F*_e,ae-=q*_e;var Me=d(W,re,ae);W/=Me,re/=Me,ae/=Me;var ke=F*ae-q*re,ge=q*W-T*ae,ie=T*re-F*W,Te=d(ke,ge,ie);ke/=Te,ge/=Te,ie/=Te,this.center.jump(A,er,Ke,xt),this.radius.idle(A),this.up.jump(A,T,F,q),this.right.jump(A,W,re,ae);var Ee,Ae;if(M===2){var ze=L[1],Ce=L[5],me=L[9],Re=ze*W+Ce*re+me*ae,ce=ze*ke+Ce*ge+me*ie;qt<0?Ee=-Math.PI/2:Ee=Math.PI/2,Ae=Math.atan2(ce,Re)}else{var Ge=L[2],nt=L[6],ct=L[10],qt=Ge*T+nt*F+ct*q,rt=Ge*W+nt*re+ct*ae,ot=Ge*ke+nt*ge+ct*ie;Ee=Math.asin(v(qt)),Ae=Math.atan2(ot,rt)}this.angle.jump(A,Ae,Ee),this.recalcMatrix(A);var Rt=L[2],kt=L[6],Ct=L[10],Yt=this.computedMatrix;l(Yt,L);var xr=Yt[15],er=Yt[12]/xr,Ke=Yt[13]/xr,xt=Yt[14]/xr,bt=Math.exp(this.computedRadius[0]);this.center.jump(A,er-Rt*bt,Ke-kt*bt,xt-Ct*bt)},p.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},p.idle=function(A){this.center.idle(A),this.up.idle(A),this.right.idle(A),this.radius.idle(A),this.angle.idle(A)},p.flush=function(A){this.center.flush(A),this.up.flush(A),this.right.flush(A),this.radius.flush(A),this.angle.flush(A)},p.setDistance=function(A,L){L>0&&this.radius.set(A,Math.log(L))},p.lookAt=function(A,L,_,C){this.recalcMatrix(A),L=L||this.computedEye,_=_||this.computedCenter,C=C||this.computedUp;var M=C[0],g=C[1],P=C[2],T=d(M,g,P);if(!(T<1e-6)){M/=T,g/=T,P/=T;var F=L[0]-_[0],q=L[1]-_[1],V=L[2]-_[2],H=d(F,q,V);if(!(H<1e-6)){F/=H,q/=H,V/=H;var X=this.computedRight,G=X[0],N=X[1],W=X[2],re=M*G+g*N+P*W;G-=re*M,N-=re*g,W-=re*P;var ae=d(G,N,W);if(!(ae<.01&&(G=g*V-P*q,N=P*F-M*V,W=M*q-g*F,ae=d(G,N,W),ae<1e-6))){G/=ae,N/=ae,W/=ae,this.up.set(A,M,g,P),this.right.set(A,G,N,W),this.center.set(A,_[0],_[1],_[2]),this.radius.set(A,Math.log(H));var _e=g*W-P*N,Me=P*G-M*W,ke=M*N-g*G,ge=d(_e,Me,ke);_e/=ge,Me/=ge,ke/=ge;var ie=M*F+g*q+P*V,Te=G*F+N*q+W*V,Ee=_e*F+Me*q+ke*V,Ae=Math.asin(v(ie)),ze=Math.atan2(Ee,Te),Ce=this.angle._state,me=Ce[Ce.length-1],Re=Ce[Ce.length-2];me=me%(2*Math.PI);var ce=Math.abs(me+2*Math.PI-ze),Ge=Math.abs(me-ze),nt=Math.abs(me-2*Math.PI-ze);ce0?W.pop():new ArrayBuffer(G)}a.mallocArrayBuffer=E;function k(X){return new Uint8Array(E(X),0,X)}a.mallocUint8=k;function A(X){return new Uint16Array(E(2*X),0,X)}a.mallocUint16=A;function L(X){return new Uint32Array(E(4*X),0,X)}a.mallocUint32=L;function _(X){return new Int8Array(E(X),0,X)}a.mallocInt8=_;function C(X){return new Int16Array(E(2*X),0,X)}a.mallocInt16=C;function M(X){return new Int32Array(E(4*X),0,X)}a.mallocInt32=M;function g(X){return new Float32Array(E(4*X),0,X)}a.mallocFloat32=a.mallocFloat=g;function P(X){return new Float64Array(E(8*X),0,X)}a.mallocFloat64=a.mallocDouble=P;function T(X){return c?new Uint8ClampedArray(E(X),0,X):k(X)}a.mallocUint8Clamped=T;function F(X){return f?new BigUint64Array(E(8*X),0,X):null}a.mallocBigUint64=F;function q(X){return h?new BigInt64Array(E(8*X),0,X):null}a.mallocBigInt64=q;function V(X){return new DataView(E(X),0,X)}a.mallocDataView=V;function H(X){X=s.nextPow2(X);var G=s.log2(X),N=x[G];return N.length>0?N.pop():new u(X)}a.mallocBuffer=H,a.clearCache=function(){for(var G=0;G<32;++G)d.UINT8[G].length=0,d.UINT16[G].length=0,d.UINT32[G].length=0,d.INT8[G].length=0,d.INT16[G].length=0,d.INT32[G].length=0,d.FLOAT[G].length=0,d.DOUBLE[G].length=0,d.BIGUINT64[G].length=0,d.BIGINT64[G].length=0,d.UINT8C[G].length=0,v[G].length=0,x[G].length=0}},1755:function(i){"use strict";"use restrict";i.exports=a;function a(s){this.roots=new Array(s),this.ranks=new Array(s);for(var l=0;l",W="",re=N.length,ae=W.length,_e=H[0]===E||H[0]===L,Me=0,ke=-ae;Me>-1&&(Me=X.indexOf(N,Me),!(Me===-1||(ke=X.indexOf(W,Me+re),ke===-1)||ke<=Me));){for(var ge=Me;ge=ke)G[ge]=null,X=X.substr(0,ge)+" "+X.substr(ge+1);else if(G[ge]!==null){var ie=G[ge].indexOf(H[0]);ie===-1?G[ge]+=H:_e&&(G[ge]=G[ge].substr(0,ie+1)+(1+parseInt(G[ge][ie+1]))+G[ge].substr(ie+2))}var Te=Me+re,Ee=X.substr(Te,ke-Te),Ae=Ee.indexOf(N);Ae!==-1?Me=Ae:Me=ke+ae}return G}function M(V,H,X){for(var G=H.textAlign||"start",N=H.textBaseline||"alphabetic",W=[1<<30,1<<30],re=[0,0],ae=V.length,_e=0;_e/g,` +`):X=X.replace(/\/g," ");var re="",ae=[];for(me=0;me-1?parseInt(Ke[1+Lt]):0,dt=St>-1?parseInt(xt[1+St]):0;Et!==dt&&(bt=bt.replace(rt(),"?px "),Ge*=Math.pow(.75,dt-Et),bt=bt.replace("?px ",rt())),ce+=.25*ie*(dt-Et)}if(W.superscripts===!0){var Ht=Ke.indexOf(E),$t=xt.indexOf(E),fr=Ht>-1?parseInt(Ke[1+Ht]):0,_r=$t>-1?parseInt(xt[1+$t]):0;fr!==_r&&(bt=bt.replace(rt(),"?px "),Ge*=Math.pow(.75,_r-fr),bt=bt.replace("?px ",rt())),ce-=.25*ie*(_r-fr)}if(W.bolds===!0){var Br=Ke.indexOf(v)>-1,Or=xt.indexOf(v)>-1;!Br&&Or&&(Nr?bt=bt.replace("italic ","italic bold "):bt="bold "+bt),Br&&!Or&&(bt=bt.replace("bold ",""))}if(W.italics===!0){var Nr=Ke.indexOf(b)>-1,ut=xt.indexOf(b)>-1;!Nr&&ut&&(bt="italic "+bt),Nr&&!ut&&(bt=bt.replace("italic ",""))}H.font=bt}for(Ce=0;Ce0&&(N=G.size),G.lineSpacing&&G.lineSpacing>0&&(W=G.lineSpacing),G.styletags&&G.styletags.breaklines&&(re.breaklines=!!G.styletags.breaklines),G.styletags&&G.styletags.bolds&&(re.bolds=!!G.styletags.bolds),G.styletags&&G.styletags.italics&&(re.italics=!!G.styletags.italics),G.styletags&&G.styletags.subscripts&&(re.subscripts=!!G.styletags.subscripts),G.styletags&&G.styletags.superscripts&&(re.superscripts=!!G.styletags.superscripts)),X.font=[G.fontStyle,G.fontVariant,G.fontWeight,N+"px",G.font].filter(function(_e){return _e}).join(" "),X.textAlign="start",X.textBaseline="alphabetic",X.direction="ltr";var ae=g(H,X,V,N,W,re);return F(ae,G,N)}},1538:function(i){(function(){"use strict";if(typeof ses!="undefined"&&ses.ok&&!ses.ok())return;function o(T){T.permitHostObjects___&&T.permitHostObjects___(o)}typeof ses!="undefined"&&(ses.weakMapPermitHostObjects=o);var s=!1;if(typeof WeakMap=="function"){var l=WeakMap;if(!(typeof navigator!="undefined"&&/Firefox/.test(navigator.userAgent))){var u=new l,c=Object.freeze({});if(u.set(c,1),u.get(c)!==1)s=!0;else{i.exports=WeakMap;return}}}var f=Object.prototype.hasOwnProperty,h=Object.getOwnPropertyNames,d=Object.defineProperty,v=Object.isExtensible,x="weakmap:",b=x+"ident:"+Math.random()+"___";if(typeof crypto!="undefined"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var p=new ArrayBuffer(25),E=new Uint8Array(p);crypto.getRandomValues(E),b=x+"rand:"+Array.prototype.map.call(E,function(T){return(T%36).toString(36)}).join("")+"___"}function k(T){return!(T.substr(0,x.length)==x&&T.substr(T.length-3)==="___")}if(d(Object,"getOwnPropertyNames",{value:function(F){return h(F).filter(k)}}),"getPropertyNames"in Object){var A=Object.getPropertyNames;d(Object,"getPropertyNames",{value:function(F){return A(F).filter(k)}})}function L(T){if(T!==Object(T))throw new TypeError("Not an object: "+T);var F=T[b];if(F&&F.key===T)return F;if(v(T)){F={key:T};try{return d(T,b,{value:F,writable:!1,enumerable:!1,configurable:!1}),F}catch(q){return}}}(function(){var T=Object.freeze;d(Object,"freeze",{value:function(H){return L(H),T(H)}});var F=Object.seal;d(Object,"seal",{value:function(H){return L(H),F(H)}});var q=Object.preventExtensions;d(Object,"preventExtensions",{value:function(H){return L(H),q(H)}})})();function _(T){return T.prototype=null,Object.freeze(T)}var C=!1;function M(){!C&&typeof console!="undefined"&&(C=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}var g=0,P=function(){this instanceof P||M();var T=[],F=[],q=g++;function V(N,W){var re,ae=L(N);return ae?q in ae?ae[q]:W:(re=T.indexOf(N),re>=0?F[re]:W)}function H(N){var W=L(N);return W?q in W:T.indexOf(N)>=0}function X(N,W){var re,ae=L(N);return ae?ae[q]=W:(re=T.indexOf(N),re>=0?F[re]=W:(re=T.length,F[re]=W,T[re]=N)),this}function G(N){var W=L(N),re,ae;return W?q in W&&delete W[q]:(re=T.indexOf(N),re<0?!1:(ae=T.length-1,T[re]=void 0,F[re]=F[ae],T[re]=T[ae],T.length=ae,F.length=ae,!0))}return Object.create(P.prototype,{get___:{value:_(V)},has___:{value:_(H)},set___:{value:_(X)},delete___:{value:_(G)}})};P.prototype=Object.create(Object.prototype,{get:{value:function(F,q){return this.get___(F,q)},writable:!0,configurable:!0},has:{value:function(F){return this.has___(F)},writable:!0,configurable:!0},set:{value:function(F,q){return this.set___(F,q)},writable:!0,configurable:!0},delete:{value:function(F){return this.delete___(F)},writable:!0,configurable:!0}}),typeof l=="function"?function(){s&&typeof Proxy!="undefined"&&(Proxy=void 0);function T(){this instanceof P||M();var F=new l,q=void 0,V=!1;function H(W,re){return q?F.has(W)?F.get(W):q.get___(W,re):F.get(W,re)}function X(W){return F.has(W)||(q?q.has___(W):!1)}var G;s?G=function(W,re){return F.set(W,re),F.has(W)||(q||(q=new P),q.set(W,re)),this}:G=function(W,re){if(V)try{F.set(W,re)}catch(ae){q||(q=new P),q.set___(W,re)}else F.set(W,re);return this};function N(W){var re=!!F.delete(W);return q&&q.delete___(W)||re}return Object.create(P.prototype,{get___:{value:_(H)},has___:{value:_(X)},set___:{value:_(G)},delete___:{value:_(N)},permitHostObjects___:{value:_(function(W){if(W===o)V=!0;else throw new Error("bogus call to permitHostObjects___")})}})}T.prototype=P.prototype,i.exports=T,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy!="undefined"&&(Proxy=void 0),i.exports=P)})()},236:function(i,a,o){var s=o(8284);i.exports=l;function l(){var u={};return function(c){if((typeof c!="object"||c===null)&&typeof c!="function")throw new Error("Weakmap-shim: Key must be object");var f=c.valueOf(u);return f&&f.identity===u?f:s(c,u)}}},8284:function(i){i.exports=a;function a(o,s){var l={identity:s},u=o.valueOf;return Object.defineProperty(o,"valueOf",{value:function(c){return c!==s?u.apply(this,arguments):l},writable:!0}),l}},606:function(i,a,o){var s=o(236);i.exports=l;function l(){var u=s();return{get:function(c,f){var h=u(c);return h.hasOwnProperty("value")?h.value:f},set:function(c,f){return u(c).value=f,this},has:function(c){return"value"in u(c)},delete:function(c){return delete u(c).value}}}},3349:function(i){"use strict";function a(){return function(f,h,d,v,x,b){var p=f[0],E=d[0],k=[0],A=E;v|=0;var L=0,_=E;for(L=0;L=0!=M>=0&&x.push(k[0]+.5+.5*(C+M)/(C-M))}v+=_,++k[0]}}}function o(){return a()}var s=o;function l(f){var h={};return function(v,x,b){var p=v.dtype,E=v.order,k=[p,E.join()].join(),A=h[k];return A||(h[k]=A=f([p,E])),A(v.shape.slice(0),v.data,v.stride,v.offset|0,x,b)}}function u(f){return l(s.bind(void 0,f))}function c(f){return u({funcName:f.funcName})}i.exports=c({funcName:"zeroCrossings"})},781:function(i,a,o){"use strict";i.exports=l;var s=o(3349);function l(u,c){var f=[];return c=+c||0,s(u.hi(u.shape[0]-1),f,c),f}},7790:function(){}},t={};function r(i){var a=t[i];if(a!==void 0)return a.exports;var o=t[i]={id:i,loaded:!1,exports:{}};return e[i].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}(function(){r.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch(i){if(typeof window=="object")return window}}()})(),function(){r.nmd=function(i){return i.paths=[],i.children||(i.children=[]),i}}();var n=r(1964);cLe.exports=n})()});var rZ=ye((ivr,fLe)=>{"use strict";fLe.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var pLe=ye((nvr,vLe)=>{"use strict";var hLe=rZ();vLe.exports=lLt;var dLe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function lLt(e){var t,r=[],n=1,i;if(typeof e=="string")if(e=e.toLowerCase(),hLe[e])r=hLe[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(e)){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(e)){var l=t[1],u=l==="rgb",a=l.replace(/a$/,"");i=a;var o=a==="cmyk"?4:a==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(h,d){if(/%$/.test(h))return d===o?parseFloat(h)/100:a==="rgb"?parseFloat(h)*255/100:parseFloat(h);if(a[d]==="h"){if(/deg$/.test(h))return parseFloat(h);if(dLe[h]!==void 0)return dLe[h]}return parseFloat(h)}),l===a&&r.push(1),n=u||r[o]===void 0?1:r[o],r=r.slice(0,o)}else e.length>10&&/[0-9](?:\s|\/)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(c){return parseFloat(c)}),i=e.match(/([a-z])/ig).join("").toLowerCase());else isNaN(e)?Array.isArray(e)||e.length?(r=[e[0],e[1],e[2]],i="rgb",n=e.length===4?e[3]:1):e instanceof Object&&(e.r!=null||e.red!=null||e.R!=null?(i="rgb",r=[e.r||e.red||e.R||0,e.g||e.green||e.G||0,e.b||e.blue||e.B||0]):(i="hsl",r=[e.h||e.hue||e.H||0,e.s||e.saturation||e.S||0,e.l||e.lightness||e.L||e.b||e.brightness]),n=e.a||e.alpha||e.opacity||1,e.opacity!=null&&(n/=100)):(i="rgb",r=[e>>>16,(e&65280)>>>8,e&255]);return{space:i,values:r,alpha:n}}});var mLe=ye((avr,gLe)=>{"use strict";var uLt=pLe();gLe.exports=function(t){Array.isArray(t)&&t.raw&&(t=String.raw.apply(null,arguments));var r,n,i,a=uLt(t);if(!a.space)return[];var o=[0,0,0],s=a.space[0]==="h"?[360,100,100]:[255,255,255];return r=Array(3),r[0]=Math.min(Math.max(a.values[0],o[0]),s[0]),r[1]=Math.min(Math.max(a.values[1],o[1]),s[1]),r[2]=Math.min(Math.max(a.values[2],o[2]),s[2]),a.space[0]==="h"&&(r=cLt(r)),r.push(Math.min(Math.max(a.alpha,0),1)),r};function cLt(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}});var VE=ye((ovr,yLe)=>{yLe.exports=fLt;function fLt(e,t,r){return tr?r:e:et?t:e}});var HD=ye((svr,_Le)=>{_Le.exports=function(e){switch(e){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}});var $_=ye((lvr,xLe)=>{"use strict";var hLt=mLe(),GD=VE(),dLt=HD();xLe.exports=function(t,r){(r==="float"||!r)&&(r="array"),r==="uint"&&(r="uint8"),r==="uint_clamped"&&(r="uint8_clamped");var n=dLt(r),i=new n(4),a=r!=="uint8"&&r!=="uint8_clamped";return(!t.length||typeof t=="string")&&(t=hLt(t),t[0]/=255,t[1]/=255,t[2]/=255),vLt(t)?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:255,a&&(i[0]/=255,i[1]/=255,i[2]/=255,i[3]/=255),i):(a?(i[0]=t[0],i[1]=t[1],i[2]=t[2],i[3]=t[3]!=null?t[3]:1):(i[0]=GD(Math.floor(t[0]*255),0,255),i[1]=GD(Math.floor(t[1]*255),0,255),i[2]=GD(Math.floor(t[2]*255),0,255),i[3]=t[3]==null?255:GD(Math.floor(t[3]*255),0,255)),i)};function vLt(e){return!!(e instanceof Uint8Array||e instanceof Uint8ClampedArray||Array.isArray(e)&&(e[0]>1||e[0]===0)&&(e[1]>1||e[1]===0)&&(e[2]>1||e[2]===0)&&(!e[3]||e[3]>1))}});var Jy=ye((uvr,bLe)=>{"use strict";var pLt=$_();function gLt(e){return e?pLt(e):[0,0,0,1]}bLe.exports=gLt});var $y=ye((cvr,kLe)=>{"use strict";var MLe=uo(),mLt=id(),jD=$_(),WD=Mu(),yLt=dh().defaultLine,wLe=vv().isArrayOrTypedArray,iZ=jD(yLt),ELe=1;function TLe(e,t){var r=e;return r[3]*=t,r}function ALe(e){if(MLe(e))return iZ;var t=jD(e);return t.length?t:iZ}function SLe(e){return MLe(e)?e:ELe}function _Lt(e,t,r){var n=e.color;n&&n._inputArray&&(n=n._inputArray);var i=wLe(n),a=wLe(t),o=WD.extractOpts(e),s=[],l,u,c,f,h;if(o.colorscale!==void 0?l=WD.makeColorScaleFuncFromTrace(e):l=ALe,i?u=function(v,x){return v[x]===void 0?iZ:jD(l(v[x]))}:u=ALe,a?c=function(v,x){return v[x]===void 0?ELe:SLe(v[x])}:c=SLe,i||a)for(var d=0;d{"use strict";CLe.exports={solid:[[],0],dot:[[.5,1],200],dash:[[.5,1],50],longdash:[[.5,1],10],dashdot:[[.5,.625,.875,1],50],longdashdot:[[.5,.7,.8,1],10]}});var ZD=ye((hvr,LLe)=>{"use strict";LLe.exports={circle:"\u25CF","circle-open":"\u25CB",square:"\u25A0","square-open":"\u25A1",diamond:"\u25C6","diamond-open":"\u25C7",cross:"+",x:"\u274C"}});var ILe=ye((dvr,PLe)=>{"use strict";var bLt=ba();function aZ(e,t,r,n){if(!t||!t.visible)return null;for(var i=bLt.getComponentMethod("errorbars","makeComputeError")(t),a=new Array(e.length),o=0;o0){var f=n.c2l(u);n._lowerLogErrorBound||(n._lowerLogErrorBound=f),n._lowerErrorBound=Math.min(n._lowerLogErrorBound,f)}}else a[o]=[-s[0]*r,s[1]*r]}return a}function wLt(e){for(var t=0;t{"use strict";var ALt=Rd().gl_line3d,RLe=Rd().gl_scatter3d,SLt=Rd().gl_error3d,MLt=Rd().gl_mesh3d,ELt=Rd().delaunay_triangulate,Qy=Mr(),OLe=Jy(),XD=$y().formatColor,kLt=S3(),oZ=nZ(),CLt=ZD(),LLt=Qa(),PLt=rp().appendArrayPointValue,ILt=ILe();function BLe(e,t){this.scene=e,this.uid=t,this.linePlot=null,this.scatterPlot=null,this.errorBars=null,this.textMarkers=null,this.delaunayMesh=null,this.color=null,this.mode="",this.dataPoints=[],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.textLabels=null,this.data=null}var lZ=BLe.prototype;lZ.handlePick=function(e){if(e.object&&(e.object===this.linePlot||e.object===this.delaunayMesh||e.object===this.textMarkers||e.object===this.scatterPlot)){var t=e.index=e.data.index;return e.object.highlight&&e.object.highlight(null),this.scatterPlot&&(e.object=this.scatterPlot,this.scatterPlot.highlight(e.data)),e.textLabel="",this.textLabels&&(Qy.isArrayOrTypedArray(this.textLabels)?(this.textLabels[t]||this.textLabels[t]===0)&&(e.textLabel=this.textLabels[t]):e.textLabel=this.textLabels),e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]],!0}};function RLt(e,t,r){var n=(r+1)%3,i=(r+2)%3,a=[],o=[],s;for(s=0;s-1?-1:e.indexOf("right")>-1?1:0}function zLe(e){return e==null?0:e.indexOf("top")>-1?-1:e.indexOf("bottom")>-1?1:0}function zLt(e){var t=0,r=0,n=[t,r];if(Array.isArray(e))for(var i=0;i=0){var u=RLt(s.position,s.delaunayColor,s.delaunayAxis);u.opacity=e.opacity,this.delaunayMesh?this.delaunayMesh.update(u):(u.gl=t,this.delaunayMesh=MLt(u),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)};lZ.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())};function BLt(e,t){var r=new BLe(e,t.uid);return r.update(t),r}NLe.exports=BLt});var dZ=ye((pvr,GLe)=>{"use strict";var e1=Uc(),NLt=Su(),hZ=Jl(),uZ=Oc().axisHoverFormat,ULt=Wo().hovertemplateAttrs,VLt=Wo().texttemplateAttrs,VLe=vl(),HLt=nZ(),GLt=ZD(),Yg=no().extendFlat,jLt=Bu().overrideAll,HLe=Y1(),WLt=e1.line,N2=e1.marker,ZLt=N2.line,XLt=Yg({width:WLt.width,dash:{valType:"enumerated",values:HLe(HLt),dflt:"solid"}},hZ("line"));function cZ(e){return{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}}var fZ=GLe.exports=jLt({x:e1.x,y:e1.y,z:{valType:"data_array"},text:Yg({},e1.text,{}),texttemplate:VLt({},{}),hovertext:Yg({},e1.hovertext,{}),hovertemplate:ULt(),xhoverformat:uZ("x"),yhoverformat:uZ("y"),zhoverformat:uZ("z"),mode:Yg({},e1.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:cZ("x"),y:cZ("y"),z:cZ("z")},connectgaps:e1.connectgaps,line:XLt,marker:Yg({symbol:{valType:"enumerated",values:HLe(GLt),dflt:"circle",arrayOk:!0},size:Yg({},N2.size,{dflt:8}),sizeref:N2.sizeref,sizemin:N2.sizemin,sizemode:N2.sizemode,opacity:Yg({},N2.opacity,{arrayOk:!1}),colorbar:N2.colorbar,line:Yg({width:Yg({},ZLt.width,{arrayOk:!1})},hZ("marker.line"))},hZ("marker")),textposition:Yg({},e1.textposition,{dflt:"top center"}),textfont:NLt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,variantValues:["normal","small-caps"]}),opacity:VLe.opacity,hoverinfo:Yg({},VLe.hoverinfo)},"calc","nested");fZ.x.editType=fZ.y.editType=fZ.z.editType="calc+clearAxisTypes"});var ZLe=ye((gvr,WLe)=>{"use strict";var jLe=ba(),YLt=Mr(),vZ=lu(),KLt=$p(),JLt=R0(),$Lt=D0(),QLt=dZ();WLe.exports=function(t,r,n,i){function a(d,v){return YLt.coerce(t,r,QLt,d,v)}var o=ePt(t,r,a,i);if(!o){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),a("mode"),vZ.hasMarkers(r)&&KLt(t,r,n,i,a,{noSelect:!0,noAngle:!0}),vZ.hasLines(r)&&(a("connectgaps"),JLt(t,r,n,i,a)),vZ.hasText(r)&&(a("texttemplate"),$Lt(t,r,i,a,{noSelect:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var s=(r.line||{}).color,l=(r.marker||{}).color;a("surfaceaxis")>=0&&a("surfacecolor",s||l);for(var u=["x","y","z"],c=0;c<3;++c){var f="projection."+u[c];a(f+".show")&&(a(f+".opacity"),a(f+".scale"))}var h=jLe.getComponentMethod("errorbars","supplyDefaults");h(t,r,s||l||n,{axis:"z"}),h(t,r,s||l||n,{axis:"y",inherit:"z"}),h(t,r,s||l||n,{axis:"x",inherit:"z"})};function ePt(e,t,r,n){var i=0,a=r("x"),o=r("y"),s=r("z"),l=jLe.getComponentMethod("calendars","handleTraceDefaults");return l(e,t,["x","y","z"],n),a&&o&&s&&(i=Math.min(a.length,o.length,s.length),t._length=t._xlength=t._ylength=t._zlength=i),i}});var YLe=ye((mvr,XLe)=>{"use strict";var tPt=km(),rPt=z0();XLe.exports=function(t,r){var n=[{x:!1,y:!1,trace:r,t:{}}];return tPt(n,r),rPt(t,r),n}});var JLe=ye((yvr,KLe)=>{KLe.exports=iPt;function iPt(e,t){if(typeof e!="string")throw new TypeError("must specify type string");if(t=t||{},typeof document=="undefined"&&!t.canvas)return null;var r=t.canvas||document.createElement("canvas");typeof t.width=="number"&&(r.width=t.width),typeof t.height=="number"&&(r.height=t.height);var n=t,i;try{var a=[e];e.indexOf("webgl")===0&&a.push("experimental-"+e);for(var o=0;o{var nPt=JLe();$Le.exports=function(t){return nPt("webgl",t)}});var pZ=ye((xvr,tPe)=>{"use strict";var ePe=va(),aPt=function(){};tPe.exports=function(t){for(var r in t)typeof t[r]=="function"&&(t[r]=aPt);t.destroy=function(){t.container.parentNode.removeChild(t.container)};var n=document.createElement("div");n.className="no-webgl",n.style.cursor="pointer",n.style.fontSize="24px",n.style.color=ePe.defaults[0],n.style.position="absolute",n.style.left=n.style.top="0px",n.style.width=n.style.height="100%",n.style["background-color"]=ePe.lightLine,n.style["z-index"]=30;var i=document.createElement("p");return i.textContent="WebGL is not supported by your browser - visit https://get.webgl.org for more info",i.style.position="relative",i.style.top="50%",i.style.left="50%",i.style.height="30%",i.style.width="50%",i.style.margin="-15% 0 0 -25%",n.appendChild(i),t.container.appendChild(n),t.container.style.background="#FFFFFF",t.container.onclick=function(){window.open("https://get.webgl.org")},!1}});var nPe=ye((bvr,iPe)=>{"use strict";var U2=Jy(),oPt=Mr(),sPt=["xaxis","yaxis","zaxis"];function rPe(){this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickSize=[12,12,12],this.tickFontWeight=["normal","normal","normal","normal"],this.tickFontStyle=["normal","normal","normal","normal"],this.tickFontVariant=["normal","normal","normal","normal"],this.tickAngle=[0,0,0],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[18,18,18],this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["Open Sans","Open Sans","Open Sans"],this.labelSize=[20,20,20],this.labelFontWeight=["normal","normal","normal","normal"],this.labelFontStyle=["normal","normal","normal","normal"],this.labelFontVariant=["normal","normal","normal","normal"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[30,30,30],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[10,10,10],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!0,!0,!0],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._defaultTickPad=this.tickPad.slice(),this._defaultLabelPad=this.labelPad.slice(),this._defaultLineTickLength=this.lineTickLength.slice()}var lPt=rPe.prototype;lPt.merge=function(e,t){for(var r=this,n=0;n<3;++n){var i=t[sPt[n]];if(!i.visible){r.tickEnable[n]=!1,r.labelEnable[n]=!1,r.lineEnable[n]=!1,r.lineTickEnable[n]=!1,r.gridEnable[n]=!1,r.zeroEnable[n]=!1,r.backgroundEnable[n]=!1;continue}r.labels[n]=e._meta?oPt.templateString(i.title.text,e._meta):i.title.text,"font"in i.title&&(i.title.font.color&&(r.labelColor[n]=U2(i.title.font.color)),i.title.font.family&&(r.labelFont[n]=i.title.font.family),i.title.font.size&&(r.labelSize[n]=i.title.font.size),i.title.font.weight&&(r.labelFontWeight[n]=i.title.font.weight),i.title.font.style&&(r.labelFontStyle[n]=i.title.font.style),i.title.font.variant&&(r.labelFontVariant[n]=i.title.font.variant)),"showline"in i&&(r.lineEnable[n]=i.showline),"linecolor"in i&&(r.lineColor[n]=U2(i.linecolor)),"linewidth"in i&&(r.lineWidth[n]=i.linewidth),"showgrid"in i&&(r.gridEnable[n]=i.showgrid),"gridcolor"in i&&(r.gridColor[n]=U2(i.gridcolor)),"gridwidth"in i&&(r.gridWidth[n]=i.gridwidth),i.type==="log"?r.zeroEnable[n]=!1:"zeroline"in i&&(r.zeroEnable[n]=i.zeroline),"zerolinecolor"in i&&(r.zeroLineColor[n]=U2(i.zerolinecolor)),"zerolinewidth"in i&&(r.zeroLineWidth[n]=i.zerolinewidth),"ticks"in i&&i.ticks?r.lineTickEnable[n]=!0:r.lineTickEnable[n]=!1,"ticklen"in i&&(r.lineTickLength[n]=r._defaultLineTickLength[n]=i.ticklen),"tickcolor"in i&&(r.lineTickColor[n]=U2(i.tickcolor)),"tickwidth"in i&&(r.lineTickWidth[n]=i.tickwidth),"tickangle"in i&&(r.tickAngle[n]=i.tickangle==="auto"?-3600:Math.PI*-i.tickangle/180),"showticklabels"in i&&(r.tickEnable[n]=i.showticklabels),"tickfont"in i&&(i.tickfont.color&&(r.tickColor[n]=U2(i.tickfont.color)),i.tickfont.family&&(r.tickFont[n]=i.tickfont.family),i.tickfont.size&&(r.tickSize[n]=i.tickfont.size),i.tickfont.weight&&(r.tickFontWeight[n]=i.tickfont.weight),i.tickfont.style&&(r.tickFontStyle[n]=i.tickfont.style),i.tickfont.variant&&(r.tickFontVariant[n]=i.tickfont.variant)),"mirror"in i?["ticks","all","allticks"].indexOf(i.mirror)!==-1?(r.lineTickMirror[n]=!0,r.lineMirror[n]=!0):i.mirror===!0?(r.lineTickMirror[n]=!1,r.lineMirror[n]=!0):(r.lineTickMirror[n]=!1,r.lineMirror[n]=!1):r.lineMirror[n]=!1,"showbackground"in i&&i.showbackground!==!1?(r.backgroundEnable[n]=!0,r.backgroundColor[n]=U2(i.backgroundcolor)):r.backgroundEnable[n]=!1}};function uPt(e,t){var r=new rPe;return r.merge(e,t),r}iPe.exports=uPt});var sPe=ye((wvr,oPe)=>{"use strict";var cPt=Jy(),fPt=["xaxis","yaxis","zaxis"];function aPe(){this.enabled=[!0,!0,!0],this.colors=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.drawSides=[!0,!0,!0],this.lineWidth=[1,1,1]}var hPt=aPe.prototype;hPt.merge=function(e){for(var t=0;t<3;++t){var r=e[fPt[t]];if(!r.visible){this.enabled[t]=!1,this.drawSides[t]=!1;continue}this.enabled[t]=r.showspikes,this.colors[t]=cPt(r.spikecolor),this.drawSides[t]=r.spikesides,this.lineWidth[t]=r.spikethickness}};function dPt(e){var t=new aPe;return t.merge(e),t}oPe.exports=dPt});var cPe=ye((Tvr,uPe)=>{"use strict";uPe.exports=yPt;var lPe=Qa(),vPt=Mr(),pPt=["xaxis","yaxis","zaxis"],gPt=[0,0,0];function mPt(e){for(var t=new Array(3),r=0;r<3;++r){for(var n=e[r],i=new Array(n.length),a=0;a/g," "));i[a]=u,o.tickmode=s}}t.ticks=i;for(var a=0;a<3;++a){gPt[a]=.5*(e.glplot.bounds[0][a]+e.glplot.bounds[1][a]);for(var c=0;c<2;++c)t.bounds[c][a]=e.glplot.bounds[c][a]}e.contourLevels=mPt(i)}});var mPe=ye((Avr,gPe)=>{"use strict";var dPe=Rd().gl_plot3d,_Pt=dPe.createCamera,fPe=dPe.createScene,xPt=QLe(),bPt=kL(),JD=ba(),up=Mr(),KD=up.preserveDrawingBuffer(),$D=Qa(),Kg=Nc(),wPt=Jy(),TPt=pZ(),APt=DU(),SPt=nPe(),MPt=sPe(),EPt=cPe(),kPt=wg().applyAutorangeOptions,HE,YD,vPe=!1;function pPe(e,t){var r=document.createElement("div"),n=e.container;this.graphDiv=e.graphDiv;var i=document.createElementNS("http://www.w3.org/2000/svg","svg");i.style.position="absolute",i.style.top=i.style.left="0px",i.style.width=i.style.height="100%",i.style["z-index"]=20,i.style["pointer-events"]="none",r.appendChild(i),this.svgContainer=i,r.id=e.id,r.style.position="absolute",r.style.top=r.style.left="0px",r.style.width=r.style.height="100%",n.appendChild(r),this.fullLayout=t,this.id=e.id||"scene",this.fullSceneLayout=t[this.id],this.plotArgs=[[],{},{}],this.axesOptions=SPt(t,t[this.id]),this.spikeOptions=MPt(t[this.id]),this.container=r,this.staticMode=!!e.staticPlot,this.pixelRatio=this.pixelRatio||e.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=JD.getComponentMethod("annotations3d","convert"),this.drawAnnotations=JD.getComponentMethod("annotations3d","draw"),this.initializeGLPlot()}var wv=pPe.prototype;wv.prepareOptions=function(){var e=this,t={canvas:e.canvas,gl:e.gl,glOptions:{preserveDrawingBuffer:KD,premultipliedAlpha:!0,antialias:!0},container:e.container,axes:e.axesOptions,spikes:e.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1,cameraObject:e.camera,pixelRatio:e.pixelRatio};if(e.staticMode){if(!YD&&(HE=document.createElement("canvas"),YD=xPt({canvas:HE,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}),!YD))throw new Error("error creating static canvas/context for image server");t.gl=YD,t.canvas=HE}return t};var hPe=!0;wv.tryCreatePlot=function(){var e=this,t=e.prepareOptions(),r=!0;try{e.glplot=fPe(t)}catch(n){if(e.staticMode||!hPe||KD)r=!1;else{up.warn(["webgl setup failed possibly due to","false preserveDrawingBuffer config.","The mobile/tablet device may not be detected by is-mobile module.","Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));try{KD=t.glOptions.preserveDrawingBuffer=!0,e.glplot=fPe(t)}catch(i){KD=t.glOptions.preserveDrawingBuffer=!1,r=!1}}}return hPe=!1,r};wv.initializeGLCamera=function(){var e=this,t=e.fullSceneLayout.camera,r=t.projection.type==="orthographic";e.camera=_Pt(e.container,{center:[t.center.x,t.center.y,t.center.z],eye:[t.eye.x,t.eye.y,t.eye.z],up:[t.up.x,t.up.y,t.up.z],_ortho:r,zoomMin:.01,zoomMax:100,mode:"orbit"})};wv.initializeGLPlot=function(){var e=this;e.initializeGLCamera();var t=e.tryCreatePlot();if(!t)return TPt(e);e.traces={},e.make4thDimension();var r=e.graphDiv,n=r.layout,i=function(){var o={};return e.isCameraChanged(n)&&(o[e.id+".camera"]=e.getCamera()),e.isAspectChanged(n)&&(o[e.id+".aspectratio"]=e.glplot.getAspectratio(),n[e.id].aspectmode!=="manual"&&(e.fullSceneLayout.aspectmode=n[e.id].aspectmode=o[e.id+".aspectmode"]="manual")),o},a=function(o){if(o.fullSceneLayout.dragmode!==!1){var s=i();o.saveLayout(n),o.graphDiv.emit("plotly_relayout",s)}};return e.glplot.canvas&&(e.glplot.canvas.addEventListener("mouseup",function(){a(e)}),e.glplot.canvas.addEventListener("touchstart",function(){vPe=!0}),e.glplot.canvas.addEventListener("wheel",function(o){if(r._context._scrollZoom.gl3d){if(e.camera._ortho){var s=o.deltaX>o.deltaY?1.1:.9090909090909091,l=e.glplot.getAspectratio();e.glplot.setAspectratio({x:s*l.x,y:s*l.y,z:s*l.z})}a(e)}},bPt?{passive:!1}:!1),e.glplot.canvas.addEventListener("mousemove",function(){if(e.fullSceneLayout.dragmode!==!1&&e.camera.mouseListener.buttons!==0){var o=i();e.graphDiv.emit("plotly_relayouting",o)}}),e.staticMode||e.glplot.canvas.addEventListener("webglcontextlost",function(o){r&&r.emit&&r.emit("plotly_webglcontextlost",{event:o,layer:e.id})},!1)),e.glplot.oncontextloss=function(){e.recoverContext()},e.glplot.onrender=function(){e.render()},!0};wv.render=function(){var e=this,t=e.graphDiv,r,n=e.svgContainer,i=e.container.getBoundingClientRect();t._fullLayout._calcInverseTransform(t);var a=t._fullLayout._invScaleX,o=t._fullLayout._invScaleY,s=i.width*a,l=i.height*o;n.setAttributeNS(null,"viewBox","0 0 "+s+" "+l),n.setAttributeNS(null,"width",s),n.setAttributeNS(null,"height",l),EPt(e),e.glplot.axes.update(e.axesOptions);for(var u=Object.keys(e.traces),c=null,f=e.glplot.selection,h=0;h")):r.type==="isosurface"||r.type==="volume"?(p.valueLabel=$D.hoverLabelText(e._mockAxis,e._mockAxis.d2l(f.traceCoordinate[3]),r.valuehoverformat),_.push("value: "+p.valueLabel),f.textLabel&&_.push(f.textLabel),L=_.join("
")):L=f.textLabel;var C={x:f.traceCoordinate[0],y:f.traceCoordinate[1],z:f.traceCoordinate[2],data:x._input,fullData:x,curveNumber:x.index,pointNumber:b};Kg.appendArrayPointValue(C,x,b),r._module.eventData&&(C=x._module.eventData(C,f,x,{},b));var M={points:[C]};if(e.fullSceneLayout.hovermode){var g=[];Kg.loneHover({trace:x,x:(.5+.5*v[0]/v[3])*s,y:(.5-.5*v[1]/v[3])*l,xLabel:p.xLabel,yLabel:p.yLabel,zLabel:p.zLabel,text:L,name:c.name,color:Kg.castHoverOption(x,b,"bgcolor")||c.color,borderColor:Kg.castHoverOption(x,b,"bordercolor"),fontFamily:Kg.castHoverOption(x,b,"font.family"),fontSize:Kg.castHoverOption(x,b,"font.size"),fontColor:Kg.castHoverOption(x,b,"font.color"),nameLength:Kg.castHoverOption(x,b,"namelength"),textAlign:Kg.castHoverOption(x,b,"align"),hovertemplate:up.castOption(x,b,"hovertemplate"),hovertemplateLabels:up.extendFlat({},C,p),eventData:[C]},{container:n,gd:t,inOut_bbox:g}),C.bbox=g[0]}f.distance<5&&(f.buttons||vPe)?t.emit("plotly_click",M):t.emit("plotly_hover",M),this.oldEventData=M}else Kg.loneUnhover(n),this.oldEventData&&t.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;e.drawAnnotations(e)};wv.recoverContext=function(){var e=this;e.glplot.dispose();var t=function(){if(e.glplot.gl.isContextLost()){requestAnimationFrame(t);return}if(!e.initializeGLPlot()){up.error("Catastrophic and unrecoverable WebGL error. Context lost.");return}e.plot.apply(e,e.plotArgs)};requestAnimationFrame(t)};var GE=["xaxis","yaxis","zaxis"];function CPt(e,t,r){for(var n=e.fullSceneLayout,i=0;i<3;i++){var a=GE[i],o=a.charAt(0),s=n[a],l=t[o],u=t[o+"calendar"],c=t["_"+o+"length"];if(!up.isArrayOrTypedArray(l))r[0][i]=Math.min(r[0][i],0),r[1][i]=Math.max(r[1][i],c-1);else for(var f,h=0;h<(c||l.length);h++)if(up.isArrayOrTypedArray(l[h]))for(var d=0;dx[1][o])x[0][o]=-1,x[1][o]=1;else{var T=x[1][o]-x[0][o];x[0][o]-=T/32,x[1][o]+=T/32}if(E=[x[0][o],x[1][o]],E=kPt(E,l),x[0][o]=E[0],x[1][o]=E[1],l.isReversed()){var F=x[0][o];x[0][o]=x[1][o],x[1][o]=F}}else E=l.range,x[0][o]=l.r2l(E[0]),x[1][o]=l.r2l(E[1]);x[0][o]===x[1][o]&&(x[0][o]-=1,x[1][o]+=1),b[o]=x[1][o]-x[0][o],l.range=[x[0][o],x[1][o]],l.limitRange(),n.glplot.setBounds(o,{min:l.range[0]*d[o],max:l.range[1]*d[o]})}var q,V=c.aspectmode;if(V==="cube")q=[1,1,1];else if(V==="manual"){var H=c.aspectratio;q=[H.x,H.y,H.z]}else if(V==="auto"||V==="data"){var X=[1,1,1];for(o=0;o<3;++o){l=c[GE[o]],u=l.type;var G=p[u];X[o]=Math.pow(G.acc,1/G.count)/d[o]}V==="data"||Math.max.apply(null,X)/Math.min.apply(null,X)<=4?q=X:q=[1,1,1]}else throw new Error("scene.js aspectRatio was not one of the enumerated types");c.aspectratio.x=f.aspectratio.x=q[0],c.aspectratio.y=f.aspectratio.y=q[1],c.aspectratio.z=f.aspectratio.z=q[2],n.glplot.setAspectratio(c.aspectratio),n.viewInitial.aspectratio||(n.viewInitial.aspectratio={x:c.aspectratio.x,y:c.aspectratio.y,z:c.aspectratio.z}),n.viewInitial.aspectmode||(n.viewInitial.aspectmode=c.aspectmode);var N=c.domain||null,W=t._size||null;if(N&&W){var re=n.container.style;re.position="absolute",re.left=W.l+N.x[0]*W.w+"px",re.top=W.t+(1-N.y[1])*W.h+"px",re.width=W.w*(N.x[1]-N.x[0])+"px",re.height=W.h*(N.y[1]-N.y[0])+"px"}n.glplot.redraw()}};wv.destroy=function(){var e=this;e.glplot&&(e.camera.mouseListener.enabled=!1,e.container.removeEventListener("wheel",e.camera.wheelListener),e.camera=null,e.glplot.dispose(),e.container.parentNode.removeChild(e.container),e.glplot=null)};function PPt(e){return[[e.eye.x,e.eye.y,e.eye.z],[e.center.x,e.center.y,e.center.z],[e.up.x,e.up.y,e.up.z]]}function IPt(e){return{up:{x:e.up[0],y:e.up[1],z:e.up[2]},center:{x:e.center[0],y:e.center[1],z:e.center[2]},eye:{x:e.eye[0],y:e.eye[1],z:e.eye[2]},projection:{type:e._ortho===!0?"orthographic":"perspective"}}}wv.getCamera=function(){var e=this;return e.camera.view.recalcMatrix(e.camera.view.lastT()),IPt(e.camera)};wv.setViewport=function(e){var t=this,r=e.camera;t.camera.lookAt.apply(this,PPt(r)),t.glplot.setAspectratio(e.aspectratio);var n=r.projection.type==="orthographic",i=t.camera._ortho;n!==i&&(t.glplot.redraw(),t.glplot.clearRGBA(),t.glplot.dispose(),t.initializeGLPlot())};wv.isCameraChanged=function(e){var t=this,r=t.getCamera(),n=up.nestedProperty(e,t.id+".camera"),i=n.get();function a(u,c,f,h){var d=["up","center","eye"],v=["x","y","z"];return c[d[f]]&&u[d[f]][v[h]]===c[d[f]][v[h]]}var o=!1;if(i===void 0)o=!0;else{for(var s=0;s<3;s++)for(var l=0;l<3;l++)if(!a(r,i,s,l)){o=!0;break}(!i.projection||r.projection&&r.projection.type!==i.projection.type)&&(o=!0)}return o};wv.isAspectChanged=function(e){var t=this,r=t.glplot.getAspectratio(),n=up.nestedProperty(e,t.id+".aspectratio"),i=n.get();return i===void 0||i.x!==r.x||i.y!==r.y||i.z!==r.z};wv.saveLayout=function(e){var t=this,r=t.fullLayout,n,i,a,o,s,l,u=t.isCameraChanged(e),c=t.isAspectChanged(e),f=u||c;if(f){var h={};if(u&&(n=t.getCamera(),i=up.nestedProperty(e,t.id+".camera"),a=i.get(),h[t.id+".camera"]=a),c&&(o=t.glplot.getAspectratio(),s=up.nestedProperty(e,t.id+".aspectratio"),l=s.get(),h[t.id+".aspectratio"]=l),JD.call("_storeDirectGUIEdit",e,r._preGUI,h),u){i.set(n);var d=up.nestedProperty(r,t.id+".camera");d.set(n)}if(c){s.set(o);var v=up.nestedProperty(r,t.id+".aspectratio");v.set(o),t.glplot.redraw()}}return f};wv.updateFx=function(e,t){var r=this,n=r.camera;if(n)if(e==="orbit")n.mode="orbit",n.keyBindingMode="rotate";else if(e==="turntable"){n.up=[0,0,1],n.mode="turntable",n.keyBindingMode="rotate";var i=r.graphDiv,a=i._fullLayout,o=r.fullSceneLayout.camera,s=o.up.x,l=o.up.y,u=o.up.z;if(u/Math.sqrt(s*s+l*l+u*u)<.999){var c=r.id+".camera.up",f={x:0,y:0,z:1},h={};h[c]=f;var d=i.layout;JD.call("_storeDirectGUIEdit",d,a._preGUI,h),o.up=f,up.nestedProperty(d,c).set(f)}}else n.keyBindingMode=e;r.fullSceneLayout.hovermode=t};function RPt(e,t,r){for(var n=0,i=r-1;n0)for(var s=255/o,l=0;l<3;++l)e[a+l]=Math.min(s*e[a+l],255)}}wv.toImage=function(e){var t=this;e||(e="png"),t.staticMode&&t.container.appendChild(HE),t.glplot.redraw();var r=t.glplot.gl,n=r.drawingBufferWidth,i=r.drawingBufferHeight;r.bindFramebuffer(r.FRAMEBUFFER,null);var a=new Uint8Array(n*i*4);r.readPixels(0,0,n,i,r.RGBA,r.UNSIGNED_BYTE,a),RPt(a,n,i),DPt(a,n,i);var o=document.createElement("canvas");o.width=n,o.height=i;var s=o.getContext("2d",{willReadFrequently:!0}),l=s.createImageData(n,i);l.data.set(a),s.putImageData(l,0,0);var u;switch(e){case"jpeg":u=o.toDataURL("image/jpeg");break;case"webp":u=o.toDataURL("image/webp");break;default:u=o.toDataURL("image/png")}return t.staticMode&&t.container.removeChild(HE),u};wv.setConvert=function(){for(var e=this,t=0;t<3;t++){var r=e.fullSceneLayout[GE[t]];$D.setConvert(r,e.fullLayout),r.setScale=up.noop}};wv.make4thDimension=function(){var e=this,t=e.graphDiv,r=t._fullLayout;e._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},$D.setConvert(e._mockAxis,r)};gPe.exports=pPe});var _Pe=ye((Svr,yPe)=>{"use strict";yPe.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}});var mZ=ye((Mvr,xPe)=>{"use strict";var zPt=va(),cs=Cd(),gZ=no().extendFlat,FPt=Bu().overrideAll;xPe.exports=FPt({visible:cs.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:zPt.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:cs.color,categoryorder:cs.categoryorder,categoryarray:cs.categoryarray,title:{text:cs.title.text,font:cs.title.font},type:gZ({},cs.type,{values:["-","linear","log","date","category"]}),autotypenumbers:cs.autotypenumbers,autorange:cs.autorange,autorangeoptions:{minallowed:cs.autorangeoptions.minallowed,maxallowed:cs.autorangeoptions.maxallowed,clipmin:cs.autorangeoptions.clipmin,clipmax:cs.autorangeoptions.clipmax,include:cs.autorangeoptions.include,editType:"plot"},rangemode:cs.rangemode,minallowed:cs.minallowed,maxallowed:cs.maxallowed,range:gZ({},cs.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:cs.minor.tickmode,nticks:cs.nticks,tick0:cs.tick0,dtick:cs.dtick,tickvals:cs.tickvals,ticktext:cs.ticktext,ticks:cs.ticks,mirror:cs.mirror,ticklen:cs.ticklen,tickwidth:cs.tickwidth,tickcolor:cs.tickcolor,showticklabels:cs.showticklabels,labelalias:cs.labelalias,tickfont:cs.tickfont,tickangle:cs.tickangle,tickprefix:cs.tickprefix,showtickprefix:cs.showtickprefix,ticksuffix:cs.ticksuffix,showticksuffix:cs.showticksuffix,showexponent:cs.showexponent,exponentformat:cs.exponentformat,minexponent:cs.minexponent,separatethousands:cs.separatethousands,tickformat:cs.tickformat,tickformatstops:cs.tickformatstops,hoverformat:cs.hoverformat,showline:cs.showline,linecolor:cs.linecolor,linewidth:cs.linewidth,showgrid:cs.showgrid,gridcolor:gZ({},cs.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:cs.gridwidth,zeroline:cs.zeroline,zerolinecolor:cs.zerolinecolor,zerolinewidth:cs.zerolinewidth},"plot","from-root")});var bZ=ye((Evr,bPe)=>{"use strict";var yZ=mZ(),qPt=Ju().attributes,_Z=no().extendFlat,OPt=Mr().counterRegex;function xZ(e,t,r){return{x:{valType:"number",dflt:e,editType:"camera"},y:{valType:"number",dflt:t,editType:"camera"},z:{valType:"number",dflt:r,editType:"camera"},editType:"camera"}}bPe.exports={_arrayAttrRegexps:[OPt("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:_Z(xZ(0,0,1),{}),center:_Z(xZ(0,0,0),{}),eye:_Z(xZ(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:qPt({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:yZ,yaxis:yZ,zaxis:yZ,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}});var SPe=ye((kvr,APe)=>{"use strict";var BPt=id().mix,wPe=Mr(),NPt=Vs(),UPt=mZ(),VPt=yU(),HPt=JM(),TPe=["xaxis","yaxis","zaxis"],GPt=100*136/187;APe.exports=function(t,r,n){var i,a;function o(u,c){return wPe.coerce(i,a,UPt,u,c)}for(var s=0;s{"use strict";var jPt=Mr(),WPt=va(),ZPt=ba(),XPt=C_(),YPt=SPe(),MPe=bZ(),KPt=kd().getSubplotData,EPe="gl3d";kPe.exports=function(t,r,n){var i=r._basePlotModules.length>1;function a(o){if(!i){var s=jPt.validate(t[o],MPe[o]);if(s)return t[o]}}XPt(t,r,n,{type:EPe,attributes:MPe,handleDefaults:JPt,fullLayout:r,font:r.font,fullData:n,getDfltFromLayout:a,autotypenumbersDflt:r.autotypenumbers,paper_bgcolor:r.paper_bgcolor,calendar:r.calendar})};function JPt(e,t,r,n){for(var i=r("bgcolor"),a=WPt.combine(i,n.paper_bgcolor),o=["up","center","eye"],s=0;s.999)&&(h="turntable")}else h="turntable";r("dragmode",h),r("hovermode",n.getDfltFromLayout("hovermode"))}});var Q_=ye(cp=>{"use strict";var $Pt=Bu().overrideAll,QPt=N1(),eIt=mPe(),tIt=kd().getSubplotData,rIt=Mr(),iIt=Zp(),O5="gl3d",wZ="scene";cp.name=O5;cp.attr=wZ;cp.idRoot=wZ;cp.idRegex=cp.attrRegex=rIt.counterRegex("scene");cp.attributes=_Pe();cp.layoutAttributes=bZ();cp.baseLayoutAttrOverrides=$Pt({hoverlabel:QPt.hoverlabel},"plot","nested");cp.supplyLayoutDefaults=CPe();cp.plot=function(t){for(var r=t._fullLayout,n=t._fullData,i=r._subplots[O5],a=0;a{"use strict";LPe.exports={plot:ULe(),attributes:dZ(),markerSymbols:ZD(),supplyDefaults:ZLe(),colorbar:[{container:"marker",min:"cmin",max:"cmax"},{container:"line",min:"cmin",max:"cmax"}],calc:YLe(),moduleType:"trace",name:"scatter3d",basePlotModule:Q_(),categories:["gl3d","symbols","showLegend","scatter-like"],meta:{}}});var RPe=ye((Ivr,IPe)=>{"use strict";IPe.exports=PPe()});var jE=ye((Rvr,FPe)=>{"use strict";var DPe=va(),nIt=Jl(),TZ=Oc().axisHoverFormat,aIt=Wo().hovertemplateAttrs,zPe=vl(),AZ=no().extendFlat,oIt=Bu().overrideAll;function SZ(e){return{valType:"boolean",dflt:!1}}function MZ(e){return{show:{valType:"boolean",dflt:!1},start:{valType:"number",dflt:null,editType:"plot"},end:{valType:"number",dflt:null,editType:"plot"},size:{valType:"number",dflt:null,min:0,editType:"plot"},project:{x:SZ("x"),y:SZ("y"),z:SZ("z")},color:{valType:"color",dflt:DPe.defaultLine},usecolormap:{valType:"boolean",dflt:!1},width:{valType:"number",min:1,max:16,dflt:2},highlight:{valType:"boolean",dflt:!0},highlightcolor:{valType:"color",dflt:DPe.defaultLine},highlightwidth:{valType:"number",min:1,max:16,dflt:2}}}var EZ=FPe.exports=oIt(AZ({z:{valType:"data_array"},x:{valType:"data_array"},y:{valType:"data_array"},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:aIt(),xhoverformat:TZ("x"),yhoverformat:TZ("y"),zhoverformat:TZ("z"),connectgaps:{valType:"boolean",dflt:!1,editType:"calc"},surfacecolor:{valType:"data_array"}},nIt("",{colorAttr:"z or surfacecolor",showScaleDflt:!0,autoColorDflt:!1,editTypeOverride:"calc"}),{contours:{x:MZ("x"),y:MZ("y"),z:MZ("z")},hidesurface:{valType:"boolean",dflt:!1},lightposition:{x:{valType:"number",min:-1e5,max:1e5,dflt:10},y:{valType:"number",min:-1e5,max:1e5,dflt:1e4},z:{valType:"number",min:-1e5,max:1e5,dflt:0}},lighting:{ambient:{valType:"number",min:0,max:1,dflt:.8},diffuse:{valType:"number",min:0,max:1,dflt:.8},specular:{valType:"number",min:0,max:2,dflt:.05},roughness:{valType:"number",min:0,max:1,dflt:.5},fresnel:{valType:"number",min:0,max:5,dflt:.2}},opacity:{valType:"number",min:0,max:1,dflt:1},opacityscale:{valType:"any",editType:"calc"},hoverinfo:AZ({},zPe.hoverinfo),showlegend:AZ({},zPe.showlegend,{dflt:!1})}),"calc","nested");EZ.x.editType=EZ.y.editType=EZ.z.editType="calc+clearAxisTypes"});var CZ=ye((Dvr,BPe)=>{"use strict";var sIt=ba(),qPe=Mr(),lIt=Uh(),uIt=jE(),kZ=.1;function cIt(e,t){for(var r=[],n=32,i=0;i{"use strict";var NPe=zv();UPe.exports=function(t,r){r.surfacecolor?NPe(t,r,{vals:r.surfacecolor,containerStr:"",cLetter:"c"}):NPe(t,r,{vals:r.z,containerStr:"",cLetter:"c"})}});var XPe=ye((Fvr,ZPe)=>{"use strict";var dIt=Rd().gl_surface3d,B5=Rd().ndarray,vIt=Rd().ndarray_linear_interpolate.d2,pIt=e8(),gIt=t8(),WE=Mr().isArrayOrTypedArray,mIt=$y().parseColorScale,HPe=Jy(),yIt=Mu().extractOpts;function jPe(e,t,r){this.scene=e,this.uid=r,this.surface=t,this.data=null,this.showContour=[!1,!1,!1],this.contourStart=[null,null,null],this.contourEnd=[null,null,null],this.contourSize=[0,0,0],this.minValues=[1/0,1/0,1/0],this.maxValues=[-1/0,-1/0,-1/0],this.dataScaleX=1,this.dataScaleY=1,this.refineData=!0,this.objectOffset=[0,0,0]}var Jg=jPe.prototype;Jg.getXat=function(e,t,r,n){var i=WE(this.data.x)?WE(this.data.x[0])?this.data.x[t][e]:this.data.x[e]:e;return r===void 0?i:n.d2l(i,0,r)};Jg.getYat=function(e,t,r,n){var i=WE(this.data.y)?WE(this.data.y[0])?this.data.y[t][e]:this.data.y[t]:t;return r===void 0?i:n.d2l(i,0,r)};Jg.getZat=function(e,t,r,n){var i=this.data.z[t][e];return i===null&&this.data.connectgaps&&this.data._interpolatedZ&&(i=this.data._interpolatedZ[t][e]),r===void 0?i:n.d2l(i,0,r)};Jg.handlePick=function(e){if(e.object===this.surface){var t=(e.data.index[0]-1)/this.dataScaleX-1,r=(e.data.index[1]-1)/this.dataScaleY-1,n=Math.max(Math.min(Math.round(t),this.data.z[0].length-1),0),i=Math.max(Math.min(Math.round(r),this.data._ylength-1),0);e.index=[n,i],e.traceCoordinate=[this.getXat(n,i),this.getYat(n,i),this.getZat(n,i)],e.dataCoordinate=[this.getXat(n,i,this.data.xcalendar,this.scene.fullSceneLayout.xaxis),this.getYat(n,i,this.data.ycalendar,this.scene.fullSceneLayout.yaxis),this.getZat(n,i,this.data.zcalendar,this.scene.fullSceneLayout.zaxis)];for(var a=0;a<3;a++){var o=e.dataCoordinate[a];o!=null&&(e.dataCoordinate[a]*=this.scene.dataScale[a])}var s=this.data.hovertext||this.data.text;return WE(s)&&s[i]&&s[i][n]!==void 0?e.textLabel=s[i][n]:s?e.textLabel=s:e.textLabel="",e.data.dataCoordinate=e.dataCoordinate.slice(),this.surface.highlight(e.data),this.scene.glplot.spikes.position=e.dataCoordinate,!0}};function _It(e){var t=e[0].rgb,r=e[e.length-1].rgb;return t[0]===r[0]&&t[1]===r[1]&&t[2]===r[2]&&t[3]===r[3]}var N5=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997,1009,1013,1019,1021,1031,1033,1039,1049,1051,1061,1063,1069,1087,1091,1093,1097,1103,1109,1117,1123,1129,1151,1153,1163,1171,1181,1187,1193,1201,1213,1217,1223,1229,1231,1237,1249,1259,1277,1279,1283,1289,1291,1297,1301,1303,1307,1319,1321,1327,1361,1367,1373,1381,1399,1409,1423,1427,1429,1433,1439,1447,1451,1453,1459,1471,1481,1483,1487,1489,1493,1499,1511,1523,1531,1543,1549,1553,1559,1567,1571,1579,1583,1597,1601,1607,1609,1613,1619,1621,1627,1637,1657,1663,1667,1669,1693,1697,1699,1709,1721,1723,1733,1741,1747,1753,1759,1777,1783,1787,1789,1801,1811,1823,1831,1847,1861,1867,1871,1873,1877,1879,1889,1901,1907,1913,1931,1933,1949,1951,1973,1979,1987,1993,1997,1999,2003,2011,2017,2027,2029,2039,2053,2063,2069,2081,2083,2087,2089,2099,2111,2113,2129,2131,2137,2141,2143,2153,2161,2179,2203,2207,2213,2221,2237,2239,2243,2251,2267,2269,2273,2281,2287,2293,2297,2309,2311,2333,2339,2341,2347,2351,2357,2371,2377,2381,2383,2389,2393,2399,2411,2417,2423,2437,2441,2447,2459,2467,2473,2477,2503,2521,2531,2539,2543,2549,2551,2557,2579,2591,2593,2609,2617,2621,2633,2647,2657,2659,2663,2671,2677,2683,2687,2689,2693,2699,2707,2711,2713,2719,2729,2731,2741,2749,2753,2767,2777,2789,2791,2797,2801,2803,2819,2833,2837,2843,2851,2857,2861,2879,2887,2897,2903,2909,2917,2927,2939,2953,2957,2963,2969,2971,2999];function xIt(e,t){if(e0){r=N5[n];break}return r}function wIt(e,t){if(!(e<1||t<1)){for(var r=LZ(e),n=LZ(t),i=1,a=0;aQD;)n--,n/=bIt(n),n++,n1?i:1};function AIt(e,t,r){var n=r[8]+r[2]*t[0]+r[5]*t[1];return e[0]=(r[6]+r[0]*t[0]+r[3]*t[1])/n,e[1]=(r[7]+r[1]*t[0]+r[4]*t[1])/n,e}function SIt(e,t,r){return MIt(e,t,AIt,r),e}function MIt(e,t,r,n){for(var i=[0,0],a=e.shape[0],o=e.shape[1],s=0;s0&&this.contourStart[n]!==null&&this.contourEnd[n]!==null&&this.contourEnd[n]>this.contourStart[n]))for(t[n]=!0,i=this.contourStart[n];ih&&(this.minValues[u]=h),this.maxValues[u]{"use strict";YPe.exports={attributes:jE(),supplyDefaults:CZ().supplyDefaults,colorbar:{min:"cmin",max:"cmax"},calc:VPe(),plot:XPe(),moduleType:"trace",name:"surface",basePlotModule:Q_(),categories:["gl3d","2dMap","showLegend"],meta:{}}});var $Pe=ye((Ovr,JPe)=>{"use strict";JPe.exports=KPe()});var U5=ye((Bvr,eIe)=>{"use strict";var CIt=Jl(),PZ=Oc().axisHoverFormat,LIt=Wo().hovertemplateAttrs,ex=jE(),QPe=vl(),tx=no().extendFlat;eIe.exports=tx({x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},i:{valType:"data_array",editType:"calc"},j:{valType:"data_array",editType:"calc"},k:{valType:"data_array",editType:"calc"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:LIt({editType:"calc"}),xhoverformat:PZ("x"),yhoverformat:PZ("y"),zhoverformat:PZ("z"),delaunayaxis:{valType:"enumerated",values:["x","y","z"],dflt:"z",editType:"calc"},alphahull:{valType:"number",dflt:-1,editType:"calc"},intensity:{valType:"data_array",editType:"calc"},intensitymode:{valType:"enumerated",values:["vertex","cell"],dflt:"vertex",editType:"calc"},color:{valType:"color",editType:"calc"},vertexcolor:{valType:"data_array",editType:"calc"},facecolor:{valType:"data_array",editType:"calc"}},CIt("",{colorAttr:"`intensity`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ex.opacity,flatshading:{valType:"boolean",dflt:!1,editType:"calc"},contour:{show:tx({},ex.contours.x.show,{}),color:ex.contours.x.color,width:ex.contours.x.width,editType:"calc"},lightposition:{x:tx({},ex.lightposition.x,{dflt:1e5}),y:tx({},ex.lightposition.y,{dflt:1e5}),z:tx({},ex.lightposition.z,{dflt:0}),editType:"calc"},lighting:tx({vertexnormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-12,editType:"calc"},facenormalsepsilon:{valType:"number",min:0,max:1,dflt:1e-6,editType:"calc"},editType:"calc"},ex.lighting),hoverinfo:tx({},QPe.hoverinfo,{editType:"calc"}),showlegend:tx({},QPe.showlegend,{dflt:!1})})});var tz=ye((Nvr,rIe)=>{"use strict";var PIt=Jl(),ez=Oc().axisHoverFormat,IIt=Wo().hovertemplateAttrs,ZE=U5(),tIe=vl(),IZ=no().extendFlat,RIt=Bu().overrideAll;function RZ(e){return{show:{valType:"boolean",dflt:!1},locations:{valType:"data_array",dflt:[]},fill:{valType:"number",min:0,max:1,dflt:1}}}function DZ(e){return{show:{valType:"boolean",dflt:!0},fill:{valType:"number",min:0,max:1,dflt:1}}}var V5=rIe.exports=RIt(IZ({x:{valType:"data_array"},y:{valType:"data_array"},z:{valType:"data_array"},value:{valType:"data_array"},isomin:{valType:"number"},isomax:{valType:"number"},surface:{show:{valType:"boolean",dflt:!0},count:{valType:"integer",dflt:2,min:1},fill:{valType:"number",min:0,max:1,dflt:1},pattern:{valType:"flaglist",flags:["A","B","C","D","E"],extras:["all","odd","even"],dflt:"all"}},spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:.15}},slices:{x:RZ("x"),y:RZ("y"),z:RZ("z")},caps:{x:DZ("x"),y:DZ("y"),z:DZ("z")},text:{valType:"string",dflt:"",arrayOk:!0},hovertext:{valType:"string",dflt:"",arrayOk:!0},hovertemplate:IIt(),xhoverformat:ez("x"),yhoverformat:ez("y"),zhoverformat:ez("z"),valuehoverformat:ez("value",1),showlegend:IZ({},tIe.showlegend,{dflt:!1})},PIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{opacity:ZE.opacity,lightposition:ZE.lightposition,lighting:ZE.lighting,flatshading:ZE.flatshading,contour:ZE.contour,hoverinfo:IZ({},tIe.hoverinfo)}),"calc","nested");V5.flatshading.dflt=!0;V5.lighting.facenormalsepsilon.dflt=0;V5.x.editType=V5.y.editType=V5.z.editType=V5.value.editType="calc+clearAxisTypes"});var zZ=ye((Uvr,nIe)=>{"use strict";var DIt=Mr(),zIt=ba(),FIt=tz(),qIt=Uh();function OIt(e,t,r,n){function i(a,o){return DIt.coerce(e,t,FIt,a,o)}iIe(e,t,r,n,i)}function iIe(e,t,r,n,i){var a=i("isomin"),o=i("isomax");o!=null&&a!==void 0&&a!==null&&a>o&&(t.isomin=null,t.isomax=null);var s=i("x"),l=i("y"),u=i("z"),c=i("value");if(!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length){t.visible=!1;return}var f=zIt.getComponentMethod("calendars","handleTraceDefaults");f(e,t,["x","y","z"],n),i("valuehoverformat"),["x","y","z"].forEach(function(x){i(x+"hoverformat");var b="caps."+x,p=i(b+".show");p&&i(b+".fill");var E="slices."+x,k=i(E+".show");k&&(i(E+".fill"),i(E+".locations"))});var h=i("spaceframe.show");h&&i("spaceframe.fill");var d=i("surface.show");d&&(i("surface.count"),i("surface.fill"),i("surface.pattern"));var v=i("contour.show");v&&(i("contour.color"),i("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(x){i(x)}),qIt(e,t,n,i,{prefix:"",cLetter:"c"}),t._length=null}nIe.exports={supplyDefaults:OIt,supplyIsoDefaults:iIe}});var rz=ye((Vvr,oIe)=>{"use strict";var qZ=Mr(),BIt=zv();function NIt(e,t){t._len=Math.min(t.u.length,t.v.length,t.w.length,t.x.length,t.y.length,t.z.length),t._u=Gm(t.u,t._len),t._v=Gm(t.v,t._len),t._w=Gm(t.w,t._len),t._x=Gm(t.x,t._len),t._y=Gm(t.y,t._len),t._z=Gm(t.z,t._len);var r=aIe(t);t._gridFill=r.fill,t._Xs=r.Xs,t._Ys=r.Ys,t._Zs=r.Zs,t._len=r.len;var n=0,i,a,o;t.starts&&(i=Gm(t.starts.x||[]),a=Gm(t.starts.y||[]),o=Gm(t.starts.z||[]),n=Math.min(i.length,a.length,o.length)),t._startsX=i||[],t._startsY=a||[],t._startsZ=o||[];var s=0,l=1/0,u;for(u=0;u1&&(k=t[i-1],L=r[i-1],C=n[i-1]),a=0;ak?"-":"+")+"x"),v=v.replace("y",(A>L?"-":"+")+"y"),v=v.replace("z",(_>C?"-":"+")+"z");var T=function(){i=0,M=[],g=[],P=[]};(!i||i{"use strict";var UIt=zv(),VIt=rz().processGrid,iz=rz().filter;sIe.exports=function(t,r){r._len=Math.min(r.x.length,r.y.length,r.z.length,r.value.length),r._x=iz(r.x,r._len),r._y=iz(r.y,r._len),r._z=iz(r.z,r._len),r._value=iz(r.value,r._len);var n=VIt(r);r._gridFill=n.fill,r._Xs=n.Xs,r._Ys=n.Ys,r._Zs=n.Zs,r._len=n.len;for(var i=1/0,a=-1/0,o=0;o{"use strict";lIe.exports=function(t,r,n,i){i=i||t.length;for(var a=new Array(i),o=0;o{"use strict";var HIt=Rd().gl_mesh3d,GIt=$y().parseColorScale,jIt=Mr().isArrayOrTypedArray,WIt=Jy(),ZIt=Mu().extractOpts,uIe=H5(),XE=function(e,t){for(var r=t.length-1;r>0;r--){var n=Math.min(t[r],t[r-1]),i=Math.max(t[r],t[r-1]);if(i>n&&n-1}function ae(bt,Lt){return bt===null?Lt:bt}function _e(bt,Lt,St){T();var Et=[Lt],dt=[St];if(G>=1)Et=[Lt],dt=[St];else if(G>0){var Ht=W(Lt,St);Et=Ht.xyzv,dt=Ht.abc}for(var $t=0;$t-1?St[_r]:P(Br,Or,Nr);Ne>-1?fr[_r]=Ne:fr[_r]=q(Br,Or,Nr,ae(bt,ut))}V(fr[0],fr[1],fr[2])}}function Me(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(2,3,0)}function ke(bt,Lt,St){var Et=function(dt,Ht,$t){_e(bt,[Lt[dt],Lt[Ht],Lt[$t]],[St[dt],St[Ht],St[$t]])};Et(0,1,2),Et(3,0,1),Et(2,3,0),Et(1,2,3)}function ge(bt,Lt,St,Et){var dt=bt[3];dtEt&&(dt=Et);for(var Ht=(bt[3]-dt)/(bt[3]-Lt[3]+1e-9),$t=[],fr=0;fr<4;fr++)$t[fr]=(1-Ht)*bt[fr]+Ht*Lt[fr];return $t}function ie(bt,Lt,St){return bt>=Lt&&bt<=St}function Te(bt){var Lt=.001*(L-A);return bt>=A-Lt&&bt<=L+Lt}function Ee(bt){for(var Lt=[],St=0;St<4;St++){var Et=bt[St];Lt.push([e._x[Et],e._y[Et],e._z[Et],e._value[Et]])}return Lt}var Ae=3;function ze(bt,Lt,St,Et,dt,Ht){Ht||(Ht=1),St=[-1,-1,-1];var $t=!1,fr=[ie(Lt[0][3],Et,dt),ie(Lt[1][3],Et,dt),ie(Lt[2][3],Et,dt)];if(!fr[0]&&!fr[1]&&!fr[2])return!1;var _r=function(Or,Nr,ut){return Te(Nr[0][3])&&Te(Nr[1][3])&&Te(Nr[2][3])?(_e(Or,Nr,ut),!0):Htfr?[E,Ht]:[Ht,k];kt(Lt,_r[0],_r[1])}}var Br=[[Math.min(A,k),Math.max(A,k)],[Math.min(E,L),Math.max(E,L)]];["x","y","z"].forEach(function(Or){for(var Nr=[],ut=0;ut0&&(Le.push(lt.id),Or==="x"?xe.push([lt.distRatio,0,0]):Or==="y"?xe.push([0,lt.distRatio,0]):xe.push([0,0,lt.distRatio]))}else Or==="x"?ht=er(1,d-1):Or==="y"?ht=er(1,v-1):ht=er(1,x-1);Le.length>0&&(Or==="x"?Nr[Ne]=Ct(bt,Le,Ye,Ve,xe,Nr[Ne]):Or==="y"?Nr[Ne]=Yt(bt,Le,Ye,Ve,xe,Nr[Ne]):Nr[Ne]=xr(bt,Le,Ye,Ve,xe,Nr[Ne]),Ne++),ht.length>0&&(Or==="x"?Nr[Ne]=ct(bt,ht,Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,ht,Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,ht,Ye,Ve,Nr[Ne]),Ne++)}var Gt=e.caps[Or];Gt.show&&Gt.fill&&(N(Gt.fill),Or==="x"?Nr[Ne]=ct(bt,[0,d-1],Ye,Ve,Nr[Ne]):Or==="y"?Nr[Ne]=qt(bt,[0,v-1],Ye,Ve,Nr[Ne]):Nr[Ne]=rt(bt,[0,x-1],Ye,Ve,Nr[Ne]),Ne++)}}),s===0&&F(),e._meshX=_,e._meshY=C,e._meshZ=M,e._meshIntensity=g,e._Xs=c,e._Ys=f,e._Zs=h}return xt(),e}function YIt(e,t){var r=e.glplot.gl,n=HIt({gl:r}),i=new cIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}hIe.exports={findNearestOnAxis:XE,generateIsoMeshes:fIe,createIsosurfaceTrace:YIt}});var vIe=ye((Wvr,dIe)=>{"use strict";dIe.exports={attributes:tz(),supplyDefaults:zZ().supplyDefaults,calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:nz().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var gIe=ye((Zvr,pIe)=>{"use strict";pIe.exports=vIe()});var UZ=ye((Xvr,yIe)=>{"use strict";var KIt=Jl(),xh=tz(),JIt=jE(),mIe=vl(),NZ=no().extendFlat,$It=Bu().overrideAll,az=yIe.exports=$It(NZ({x:xh.x,y:xh.y,z:xh.z,value:xh.value,isomin:xh.isomin,isomax:xh.isomax,surface:xh.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:xh.slices,caps:xh.caps,text:xh.text,hovertext:xh.hovertext,xhoverformat:xh.xhoverformat,yhoverformat:xh.yhoverformat,zhoverformat:xh.zhoverformat,valuehoverformat:xh.valuehoverformat,hovertemplate:xh.hovertemplate},KIt("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:xh.colorbar,opacity:xh.opacity,opacityscale:JIt.opacityscale,lightposition:xh.lightposition,lighting:xh.lighting,flatshading:xh.flatshading,contour:xh.contour,hoverinfo:NZ({},mIe.hoverinfo),showlegend:NZ({},mIe.showlegend,{dflt:!1})}),"calc","nested");az.x.editType=az.y.editType=az.z.editType=az.value.editType="calc+clearAxisTypes"});var xIe=ye((Yvr,_Ie)=>{"use strict";var QIt=Mr(),e8t=UZ(),t8t=zZ().supplyIsoDefaults,r8t=CZ().opacityscaleDefaults;_Ie.exports=function(t,r,n,i){function a(o,s){return QIt.coerce(t,r,e8t,o,s)}t8t(t,r,n,i,a),r8t(t,r,i,a)}});var AIe=ye((Kvr,TIe)=>{"use strict";var i8t=Rd().gl_mesh3d,n8t=$y().parseColorScale,a8t=Mr().isArrayOrTypedArray,o8t=Jy(),s8t=Mu().extractOpts,bIe=H5(),VZ=nz().findNearestOnAxis,l8t=nz().generateIsoMeshes;function wIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.data=null,this.showContour=!1}var HZ=wIe.prototype;HZ.handlePick=function(e){if(e.object===this.mesh){var t=e.data.index,r=this.data._meshX[t],n=this.data._meshY[t],i=this.data._meshZ[t],a=this.data._Ys.length,o=this.data._Zs.length,s=VZ(r,this.data._Xs).id,l=VZ(n,this.data._Ys).id,u=VZ(i,this.data._Zs).id,c=e.index=u+o*l+o*a*s;e.traceCoordinate=[this.data._meshX[c],this.data._meshY[c],this.data._meshZ[c],this.data._value[c]];var f=this.data.hovertext||this.data.text;return a8t(f)&&f[c]!==void 0?e.textLabel=f[c]:f&&(e.textLabel=f),!0}};HZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=l8t(e);function n(l,u,c,f){return u.map(function(h){return l.d2l(h,0,f)*c})}var i=bIe(n(r.xaxis,e._meshX,t.dataScale[0],e.xcalendar),n(r.yaxis,e._meshY,t.dataScale[1],e.ycalendar),n(r.zaxis,e._meshZ,t.dataScale[2],e.zcalendar)),a=bIe(e._meshI,e._meshJ,e._meshK),o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,opacityscale:e.opacityscale,contourEnable:e.contour.show,contourColor:o8t(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading},s=s8t(e);o.vertexIntensity=e._meshIntensity,o.vertexIntensityBounds=[s.min,s.max],o.colormap=n8t(e),this.mesh.update(o)};HZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function u8t(e,t){var r=e.glplot.gl,n=i8t({gl:r}),i=new wIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}TIe.exports=u8t});var MIe=ye((Jvr,SIe)=>{"use strict";SIe.exports={attributes:UZ(),supplyDefaults:xIe(),calc:OZ(),colorbar:{min:"cmin",max:"cmax"},plot:AIe(),moduleType:"trace",name:"volume",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var kIe=ye(($vr,EIe)=>{"use strict";EIe.exports=MIe()});var PIe=ye((Qvr,LIe)=>{"use strict";var c8t=ba(),CIe=Mr(),f8t=Uh(),h8t=U5();LIe.exports=function(t,r,n,i){function a(c,f){return CIe.coerce(t,r,h8t,c,f)}function o(c){var f=c.map(function(h){var d=a(h);return d&&CIe.isArrayOrTypedArray(d)?d:null});return f.every(function(h){return h&&h.length===f[0].length})&&f}var s=o(["x","y","z"]);if(!s){r.visible=!1;return}if(o(["i","j","k"]),r.i&&(!r.j||!r.k)||r.j&&(!r.k||!r.i)||r.k&&(!r.i||!r.j)){r.visible=!1;return}var l=c8t.getComponentMethod("calendars","handleTraceDefaults");l(t,r,["x","y","z"],i),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach(function(c){a(c)});var u=a("contour.show");u&&(a("contour.color"),a("contour.width")),"intensity"in t?(a("intensity"),a("intensitymode"),f8t(t,r,i,a,{prefix:"",cLetter:"c"})):(r.showscale=!1,"facecolor"in t?a("facecolor"):"vertexcolor"in t?a("vertexcolor"):a("color",n)),a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var RIe=ye((epr,IIe)=>{"use strict";var d8t=zv();IIe.exports=function(t,r){r.intensity&&d8t(t,r,{vals:r.intensity,containerStr:"",cLetter:"c"})}});var OIe=ye((tpr,qIe)=>{"use strict";var v8t=Rd().gl_mesh3d,p8t=Rd().delaunay_triangulate,g8t=Rd().alpha_shape,m8t=Rd().convex_hull,y8t=$y().parseColorScale,_8t=Mr().isArrayOrTypedArray,ZZ=Jy(),x8t=Mu().extractOpts,DIe=H5();function FIe(e,t,r){this.scene=e,this.uid=r,this.mesh=t,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var XZ=FIe.prototype;XZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index;e.data._cellCenter?e.traceCoordinate=e.data.dataCoordinate:e.traceCoordinate=[this.data.x[t],this.data.y[t],this.data.z[t]];var r=this.data.hovertext||this.data.text;return _8t(r)&&r[t]!==void 0?e.textLabel=r[t]:r&&(e.textLabel=r),!0}};function zIe(e){for(var t=[],r=e.length,n=0;n=t-.5)return!1;return!0}XZ.update=function(e){var t=this.scene,r=t.fullSceneLayout;this.data=e;var n=e.x.length,i=DIe(GZ(r.xaxis,e.x,t.dataScale[0],e.xcalendar),GZ(r.yaxis,e.y,t.dataScale[1],e.ycalendar),GZ(r.zaxis,e.z,t.dataScale[2],e.zcalendar)),a;if(e.i&&e.j&&e.k){if(e.i.length!==e.j.length||e.j.length!==e.k.length||!WZ(e.i,n)||!WZ(e.j,n)||!WZ(e.k,n))return;a=DIe(jZ(e.i),jZ(e.j),jZ(e.k))}else e.alphahull===0?a=m8t(i):e.alphahull>0?a=g8t(e.alphahull,i):a=b8t(e.delaunayaxis,i);var o={positions:i,cells:a,lightPosition:[e.lightposition.x,e.lightposition.y,e.lightposition.z],ambient:e.lighting.ambient,diffuse:e.lighting.diffuse,specular:e.lighting.specular,roughness:e.lighting.roughness,fresnel:e.lighting.fresnel,vertexNormalsEpsilon:e.lighting.vertexnormalsepsilon,faceNormalsEpsilon:e.lighting.facenormalsepsilon,opacity:e.opacity,contourEnable:e.contour.show,contourColor:ZZ(e.contour.color).slice(0,3),contourWidth:e.contour.width,useFacetNormals:e.flatshading};if(e.intensity){var s=x8t(e);this.color="#fff";var l=e.intensitymode;o[l+"Intensity"]=e.intensity,o[l+"IntensityBounds"]=[s.min,s.max],o.colormap=y8t(e)}else e.vertexcolor?(this.color=e.vertexcolor[0],o.vertexColors=zIe(e.vertexcolor)):e.facecolor?(this.color=e.facecolor[0],o.cellColors=zIe(e.facecolor)):(this.color=e.color,o.meshColor=ZZ(e.color));this.mesh.update(o)};XZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function w8t(e,t){var r=e.glplot.gl,n=v8t({gl:r}),i=new FIe(e,n,t.uid);return n._trace=i,i.update(t),e.glplot.add(n),i}qIe.exports=w8t});var NIe=ye((rpr,BIe)=>{"use strict";BIe.exports={attributes:U5(),supplyDefaults:PIe(),calc:RIe(),colorbar:{min:"cmin",max:"cmax"},plot:OIe(),moduleType:"trace",name:"mesh3d",basePlotModule:Q_(),categories:["gl3d","showLegend"],meta:{}}});var VIe=ye((ipr,UIe)=>{"use strict";UIe.exports=NIe()});var KZ=ye((npr,GIe)=>{"use strict";var T8t=Jl(),G5=Oc().axisHoverFormat,A8t=Wo().hovertemplateAttrs,S8t=U5(),HIe=vl(),YZ=no().extendFlat,oz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute","raw"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:A8t({editType:"calc"},{keys:["norm"]}),uhoverformat:G5("u",1),vhoverformat:G5("v",1),whoverformat:G5("w",1),xhoverformat:G5("x"),yhoverformat:G5("y"),zhoverformat:G5("z"),showlegend:YZ({},HIe.showlegend,{dflt:!1})};YZ(oz,T8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var M8t=["opacity","lightposition","lighting"];M8t.forEach(function(e){oz[e]=S8t[e]});oz.hoverinfo=YZ({},HIe.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"});GIe.exports=oz});var WIe=ye((apr,jIe)=>{"use strict";var E8t=Mr(),k8t=Uh(),C8t=KZ();jIe.exports=function(t,r,n,i){function a(d,v){return E8t.coerce(t,r,C8t,d,v)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}var h=a("sizemode");a("sizeref",h==="raw"?1:.5),a("anchor"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),k8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var XIe=ye((opr,ZIe)=>{"use strict";var L8t=zv();ZIe.exports=function(t,r){for(var n=r.u,i=r.v,a=r.w,o=Math.min(r.x.length,r.y.length,r.z.length,n.length,i.length,a.length),s=-1/0,l=1/0,u=0;u{"use strict";var P8t=Rd().gl_cone3d,I8t=Rd().gl_cone3d.createConeMesh,R8t=Mr().simpleMap,D8t=$y().parseColorScale,z8t=Mu().extractOpts,F8t=Mr().isArrayOrTypedArray,YIe=H5();function KIe(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var JZ=KIe.prototype;JZ.handlePick=function(e){if(e.object===this.mesh){var t=e.index=e.data.index,r=this.data.x[t],n=this.data.y[t],i=this.data.z[t],a=this.data.u[t],o=this.data.v[t],s=this.data.w[t];e.traceCoordinate=[r,n,i,a,o,s,Math.sqrt(a*a+o*o+s*s)];var l=this.data.hovertext||this.data.text;return F8t(l)&&l[t]!==void 0?e.textLabel=l[t]:l&&(e.textLabel=l),!0}};var q8t={xaxis:0,yaxis:1,zaxis:2},O8t={tip:1,tail:0,cm:.25,center:.5},B8t={tip:1,tail:1,cm:.75,center:.5};function JIe(e,t){var r=e.fullSceneLayout,n=e.dataScale,i={};function a(c,f){var h=r[f],d=n[q8t[f]];return R8t(c,function(v){return h.d2l(v)*d})}i.vectors=YIe(a(t.u,"xaxis"),a(t.v,"yaxis"),a(t.w,"zaxis"),t._len),i.positions=YIe(a(t.x,"xaxis"),a(t.y,"yaxis"),a(t.z,"zaxis"),t._len);var o=z8t(t);i.colormap=D8t(t),i.vertexIntensityBounds=[o.min/t._normMax,o.max/t._normMax],i.coneOffset=O8t[t.anchor];var s=t.sizemode;s==="scaled"?i.coneSize=t.sizeref||.5:s==="absolute"?i.coneSize=t.sizeref&&t._normMax?t.sizeref/t._normMax:.5:s==="raw"&&(i.coneSize=t.sizeref),i.coneSizemode=s;var l=P8t(i),u=t.lightposition;return l.lightPosition=[u.x,u.y,u.z],l.ambient=t.lighting.ambient,l.diffuse=t.lighting.diffuse,l.specular=t.lighting.specular,l.roughness=t.lighting.roughness,l.fresnel=t.lighting.fresnel,l.opacity=t.opacity,t._pad=B8t[t.anchor]*l.vectorScale*l.coneScale*t._normMax,l}JZ.update=function(e){this.data=e;var t=JIe(this.scene,e);this.mesh.update(t)};JZ.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function N8t(e,t){var r=e.glplot.gl,n=JIe(e,t),i=I8t(r,n),a=new KIe(e,t.uid);return a.mesh=i,a.data=t,i._trace=a,e.glplot.add(i),a}$Ie.exports=N8t});var t8e=ye((lpr,e8e)=>{"use strict";e8e.exports={moduleType:"trace",name:"cone",basePlotModule:Q_(),categories:["gl3d","showLegend"],attributes:KZ(),supplyDefaults:WIe(),colorbar:{min:"cmin",max:"cmax"},calc:XIe(),plot:QIe(),eventData:function(e,t){return e.norm=t.traceCoordinate[6],e},meta:{}}});var i8e=ye((upr,r8e)=>{"use strict";r8e.exports=t8e()});var QZ=ye((cpr,a8e)=>{"use strict";var U8t=Jl(),j5=Oc().axisHoverFormat,V8t=Wo().hovertemplateAttrs,H8t=U5(),n8e=vl(),$Z=no().extendFlat,sz={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},starts:{x:{valType:"data_array",editType:"calc"},y:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},editType:"calc"},maxdisplayed:{valType:"integer",min:0,dflt:1e3,editType:"calc"},sizeref:{valType:"number",editType:"calc",min:0,dflt:1},text:{valType:"string",dflt:"",editType:"calc"},hovertext:{valType:"string",dflt:"",editType:"calc"},hovertemplate:V8t({editType:"calc"},{keys:["tubex","tubey","tubez","tubeu","tubev","tubew","norm","divergence"]}),uhoverformat:j5("u",1),vhoverformat:j5("v",1),whoverformat:j5("w",1),xhoverformat:j5("x"),yhoverformat:j5("y"),zhoverformat:j5("z"),showlegend:$Z({},n8e.showlegend,{dflt:!1})};$Z(sz,U8t("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var G8t=["opacity","lightposition","lighting"];G8t.forEach(function(e){sz[e]=H8t[e]});sz.hoverinfo=$Z({},n8e.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","divergence","text","name"],dflt:"x+y+z+norm+text+name"});a8e.exports=sz});var s8e=ye((fpr,o8e)=>{"use strict";var j8t=Mr(),W8t=Uh(),Z8t=QZ();o8e.exports=function(t,r,n,i){function a(h,d){return j8t.coerce(t,r,Z8t,h,d)}var o=a("u"),s=a("v"),l=a("w"),u=a("x"),c=a("y"),f=a("z");if(!o||!o.length||!s||!s.length||!l||!l.length||!u||!u.length||!c||!c.length||!f||!f.length){r.visible=!1;return}a("starts.x"),a("starts.y"),a("starts.z"),a("maxdisplayed"),a("sizeref"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),W8t(t,r,i,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),r._length=null}});var p8e=ye((hpr,v8e)=>{"use strict";var c8e=Rd().gl_streamtube3d,X8t=c8e.createTubeMesh,Y8t=Mr(),K8t=$y().parseColorScale,J8t=Mu().extractOpts,l8e=H5(),f8e={xaxis:0,yaxis:1,zaxis:2};function h8e(e,t){this.scene=e,this.uid=t,this.mesh=null,this.data=null}var tX=h8e.prototype;tX.handlePick=function(e){var t=this.scene.fullSceneLayout,r=this.scene.dataScale;function n(o,s){var l=t[s],u=r[f8e[s]];return l.l2c(o)/u}if(e.object===this.mesh){var i=e.data.position,a=e.data.velocity;return e.traceCoordinate=[n(i[0],"xaxis"),n(i[1],"yaxis"),n(i[2],"zaxis"),n(a[0],"xaxis"),n(a[1],"yaxis"),n(a[2],"zaxis"),e.data.intensity*this.data._normMax,e.data.divergence],e.textLabel=this.data.hovertext||this.data.text,!0}};function u8e(e){var t=e.length,r;return t>2?r=e.slice(1,t-1):t===2?r=[(e[0]+e[1])/2]:r=e,r}function eX(e){var t=e.length;return t===1?[.5,.5]:[e[1]-e[0],e[t-1]-e[t-2]]}function d8e(e,t){var r=e.fullSceneLayout,n=e.dataScale,i=t._len,a={};function o(F,q){var V=r[q],H=n[f8e[q]];return Y8t.simpleMap(F,function(X){return V.d2l(X)*H})}if(a.vectors=l8e(o(t._u,"xaxis"),o(t._v,"yaxis"),o(t._w,"zaxis"),i),!i)return{positions:[],cells:[]};var s=o(t._Xs,"xaxis"),l=o(t._Ys,"yaxis"),u=o(t._Zs,"zaxis");a.meshgrid=[s,l,u],a.gridFill=t._gridFill;var c=t._slen;if(c)a.startingPositions=l8e(o(t._startsX,"xaxis"),o(t._startsY,"yaxis"),o(t._startsZ,"zaxis"));else{for(var f=l[0],h=u8e(s),d=u8e(u),v=new Array(h.length*d.length),x=0,b=0;b{"use strict";g8e.exports={moduleType:"trace",name:"streamtube",basePlotModule:Q_(),categories:["gl3d","showLegend"],attributes:QZ(),supplyDefaults:s8e(),colorbar:{min:"cmin",max:"cmax"},calc:rz().calc,plot:p8e(),eventData:function(e,t){return e.tubex=e.x,e.tubey=e.y,e.tubez=e.z,e.tubeu=t.traceCoordinate[3],e.tubev=t.traceCoordinate[4],e.tubew=t.traceCoordinate[5],e.norm=t.traceCoordinate[6],e.divergence=t.traceCoordinate[7],delete e.x,delete e.y,delete e.z,e},meta:{}}});var _8e=ye((vpr,y8e)=>{"use strict";y8e.exports=m8e()});var H2=ye((ppr,w8e)=>{"use strict";var Q8t=Wo().hovertemplateAttrs,eRt=Wo().texttemplateAttrs,tRt=Eg(),jm=Uc(),rRt=vl(),x8e=Jl(),iRt=Ed().dash,V2=no().extendFlat,nRt=Bu().overrideAll,eg=jm.marker,b8e=jm.line,aRt=eg.line;w8e.exports=nRt({lon:{valType:"data_array"},lat:{valType:"data_array"},locations:{valType:"data_array"},locationmode:{valType:"enumerated",values:["ISO-3","USA-states","country names","geojson-id"],dflt:"ISO-3"},geojson:{valType:"any",editType:"calc"},featureidkey:{valType:"string",editType:"calc",dflt:"id"},mode:V2({},jm.mode,{dflt:"markers"}),text:V2({},jm.text,{}),texttemplate:eRt({editType:"plot"},{keys:["lat","lon","location","text"]}),hovertext:V2({},jm.hovertext,{}),textfont:jm.textfont,textposition:jm.textposition,line:{color:b8e.color,width:b8e.width,dash:iRt},connectgaps:jm.connectgaps,marker:V2({symbol:eg.symbol,opacity:eg.opacity,angle:eg.angle,angleref:V2({},eg.angleref,{values:["previous","up","north"]}),standoff:eg.standoff,size:eg.size,sizeref:eg.sizeref,sizemin:eg.sizemin,sizemode:eg.sizemode,colorbar:eg.colorbar,line:V2({width:aRt.width},x8e("marker.line")),gradient:eg.gradient},x8e("marker")),fill:{valType:"enumerated",values:["none","toself"],dflt:"none"},fillcolor:tRt(),selected:jm.selected,unselected:jm.unselected,hoverinfo:V2({},rRt.hoverinfo,{flags:["lon","lat","location","text","name"]}),hovertemplate:Q8t()},"calc","nested")});var A8e=ye((gpr,T8e)=>{"use strict";var rX=Mr(),iX=lu(),oRt=$p(),sRt=R0(),lRt=D0(),uRt=Ig(),cRt=H2();T8e.exports=function(t,r,n,i){function a(d,v){return rX.coerce(t,r,cRt,d,v)}var o=a("locations"),s;if(o&&o.length){var l=a("geojson"),u;(typeof l=="string"&&l!==""||rX.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),s=o.length}else{var f=a("lon")||[],h=a("lat")||[];s=Math.min(f.length,h.length)}if(!s){r.visible=!1;return}r._length=s,a("text"),a("hovertext"),a("hovertemplate"),a("mode"),iX.hasMarkers(r)&&oRt(t,r,n,i,a,{gradient:!0}),iX.hasLines(r)&&(sRt(t,r,n,i,a),a("connectgaps")),iX.hasText(r)&&(a("texttemplate"),lRt(t,r,i,a)),a("fill"),r.fill!=="none"&&uRt(t,r,n,a),rX.coerceSelectionMarkerOpacity(r,a)}});var E8e=ye((mpr,M8e)=>{"use strict";var S8e=Qa();M8e.exports=function(t,r,n){var i={},a=n[r.geo]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=S8e.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=S8e.tickText(o,o.c2l(s[1]),!0).text,i}});var lz=ye((ypr,P8e)=>{"use strict";var nX=uo(),k8e=es().BADNUM,fRt=z0(),hRt=km(),dRt=F0(),vRt=Mr().isArrayOrTypedArray,C8e=Mr()._;function L8e(e){return e&&typeof e=="string"}P8e.exports=function(t,r){var n=vRt(r.locations),i=n?r.locations.length:r._length,a=new Array(i),o;r.geojson?o=function(h){return L8e(h)||nX(h)}:o=L8e;for(var s=0;s{"use strict";Tv.projNames={airy:"airy",aitoff:"aitoff","albers usa":"albersUsa",albers:"albers",august:"august","azimuthal equal area":"azimuthalEqualArea","azimuthal equidistant":"azimuthalEquidistant",baker:"baker",bertin1953:"bertin1953",boggs:"boggs",bonne:"bonne",bottomley:"bottomley",bromley:"bromley",collignon:"collignon","conic conformal":"conicConformal","conic equal area":"conicEqualArea","conic equidistant":"conicEquidistant",craig:"craig",craster:"craster","cylindrical equal area":"cylindricalEqualArea","cylindrical stereographic":"cylindricalStereographic",eckert1:"eckert1",eckert2:"eckert2",eckert3:"eckert3",eckert4:"eckert4",eckert5:"eckert5",eckert6:"eckert6",eisenlohr:"eisenlohr","equal earth":"equalEarth",equirectangular:"equirectangular",fahey:"fahey","foucaut sinusoidal":"foucautSinusoidal",foucaut:"foucaut",ginzburg4:"ginzburg4",ginzburg5:"ginzburg5",ginzburg6:"ginzburg6",ginzburg8:"ginzburg8",ginzburg9:"ginzburg9",gnomonic:"gnomonic","gringorten quincuncial":"gringortenQuincuncial",gringorten:"gringorten",guyou:"guyou",hammer:"hammer",hill:"hill",homolosine:"homolosine",hufnagel:"hufnagel",hyperelliptical:"hyperelliptical",kavrayskiy7:"kavrayskiy7",lagrange:"lagrange",larrivee:"larrivee",laskowski:"laskowski",loximuthal:"loximuthal",mercator:"mercator",miller:"miller",mollweide:"mollweide","mt flat polar parabolic":"mtFlatPolarParabolic","mt flat polar quartic":"mtFlatPolarQuartic","mt flat polar sinusoidal":"mtFlatPolarSinusoidal","natural earth":"naturalEarth","natural earth1":"naturalEarth1","natural earth2":"naturalEarth2","nell hammer":"nellHammer",nicolosi:"nicolosi",orthographic:"orthographic",patterson:"patterson","peirce quincuncial":"peirceQuincuncial",polyconic:"polyconic","rectangular polyconic":"rectangularPolyconic",robinson:"robinson",satellite:"satellite","sinu mollweide":"sinuMollweide",sinusoidal:"sinusoidal",stereographic:"stereographic",times:"times","transverse mercator":"transverseMercator","van der grinten":"vanDerGrinten","van der grinten2":"vanDerGrinten2","van der grinten3":"vanDerGrinten3","van der grinten4":"vanDerGrinten4",wagner4:"wagner4",wagner6:"wagner6",wiechel:"wiechel","winkel tripel":"winkel3",winkel3:"winkel3"};Tv.axesNames=["lonaxis","lataxis"];Tv.lonaxisSpan={orthographic:180,"azimuthal equal area":360,"azimuthal equidistant":360,"conic conformal":180,gnomonic:160,stereographic:180,"transverse mercator":180,"*":360};Tv.lataxisSpan={"conic conformal":150,stereographic:179.5,"*":180};Tv.scopeDefaults={world:{lonaxisRange:[-180,180],lataxisRange:[-90,90],projType:"equirectangular",projRotate:[0,0,0]},usa:{lonaxisRange:[-180,-50],lataxisRange:[15,80],projType:"albers usa"},europe:{lonaxisRange:[-30,60],lataxisRange:[30,85],projType:"conic conformal",projRotate:[15,0,0],projParallels:[0,60]},asia:{lonaxisRange:[22,160],lataxisRange:[-15,55],projType:"mercator",projRotate:[0,0,0]},africa:{lonaxisRange:[-30,60],lataxisRange:[-40,40],projType:"mercator",projRotate:[0,0,0]},"north america":{lonaxisRange:[-180,-45],lataxisRange:[5,85],projType:"conic conformal",projRotate:[-100,0,0],projParallels:[29.5,45.5]},"south america":{lonaxisRange:[-100,-30],lataxisRange:[-60,15],projType:"mercator",projRotate:[0,0,0]}};Tv.clipPad=.001;Tv.precision=.1;Tv.landColor="#F0DC82";Tv.waterColor="#3399FF";Tv.locationmodeToLayer={"ISO-3":"countries","USA-states":"subunits","country names":"countries"};Tv.sphereSVG={type:"Sphere"};Tv.fillLayers={ocean:1,land:1,lakes:1};Tv.lineLayers={subunits:1,countries:1,coastlines:1,rivers:1,frame:1};Tv.layers=["bg","ocean","land","lakes","subunits","countries","coastlines","rivers","lataxis","lonaxis","frame","backplot","frontplot"];Tv.layersForChoropleth=["bg","ocean","land","subunits","countries","coastlines","lataxis","lonaxis","frame","backplot","rivers","lakes","frontplot"];Tv.layerNameToAdjective={ocean:"ocean",land:"land",lakes:"lake",subunits:"subunit",countries:"country",coastlines:"coastline",rivers:"river",frame:"frame"}});var aX=ye((uz,I8e)=>{(function(e,t){typeof uz=="object"&&typeof I8e!="undefined"?t(uz):(e=e||self,t(e.topojson=e.topojson||{}))})(uz,function(e){"use strict";function t(k){return k}function r(k){if(k==null)return t;var A,L,_=k.scale[0],C=k.scale[1],M=k.translate[0],g=k.translate[1];return function(P,T){T||(A=L=0);var F=2,q=P.length,V=new Array(q);for(V[0]=(A+=P[0])*_+M,V[1]=(L+=P[1])*C+g;FM&&(M=F[0]),F[1]g&&(g=F[1])}function T(F){switch(F.type){case"GeometryCollection":F.geometries.forEach(T);break;case"Point":P(F.coordinates);break;case"MultiPoint":F.coordinates.forEach(P);break}}k.arcs.forEach(function(F){for(var q=-1,V=F.length,H;++qM&&(M=H[0]),H[1]g&&(g=H[1])});for(L in k.objects)T(k.objects[L]);return[_,C,M,g]}function i(k,A){for(var L,_=k.length,C=_-A;C<--_;)L=k[C],k[C++]=k[_],k[_]=L}function a(k,A){return typeof A=="string"&&(A=k.objects[A]),A.type==="GeometryCollection"?{type:"FeatureCollection",features:A.geometries.map(function(L){return o(k,L)})}:o(k,A)}function o(k,A){var L=A.id,_=A.bbox,C=A.properties==null?{}:A.properties,M=s(k,A);return L==null&&_==null?{type:"Feature",properties:C,geometry:M}:_==null?{type:"Feature",id:L,properties:C,geometry:M}:{type:"Feature",id:L,bbox:_,properties:C,geometry:M}}function s(k,A){var L=r(k.transform),_=k.arcs;function C(q,V){V.length&&V.pop();for(var H=_[q<0?~q:q],X=0,G=H.length;X1)_=f(k,A,L);else for(C=0,_=new Array(M=k.arcs.length);C1)for(var V=1,H=P(F[0]),X,G;VH&&(G=F[0],F[0]=F[V],F[V]=G,H=X);return F}).filter(function(T){return T.length>0})}}function x(k,A){for(var L=0,_=k.length;L<_;){var C=L+_>>>1;k[C]=2))throw new Error("n must be \u22652");T=k.bbox||n(k);var L=T[0],_=T[1],C=T[2],M=T[3],g;A={scale:[C-L?(C-L)/(g-1):1,M-_?(M-_)/(g-1):1],translate:[L,_]}}else T=k.bbox;var P=p(A),T,F,q=k.objects,V={};function H(N){return P(N)}function X(N){var W;switch(N.type){case"GeometryCollection":W={type:"GeometryCollection",geometries:N.geometries.map(X)};break;case"Point":W={type:"Point",coordinates:H(N.coordinates)};break;case"MultiPoint":W={type:"MultiPoint",coordinates:N.coordinates.map(H)};break;default:return N}return N.id!=null&&(W.id=N.id),N.bbox!=null&&(W.bbox=N.bbox),N.properties!=null&&(W.properties=N.properties),W}function G(N){var W=0,re=1,ae=N.length,_e,Me=new Array(ae);for(Me[0]=P(N[0],0);++W{"use strict";var oX=R8e.exports={},pRt=YE().locationmodeToLayer,gRt=aX().feature;oX.getTopojsonName=function(e){return[e.scope.replace(/ /g,"-"),"_",e.resolution.toString(),"m"].join("")};oX.getTopojsonPath=function(e,t){return e+t+".json"};oX.getTopojsonFeatures=function(e,t){var r=pRt[e.locationmode],n=t.objects[r];return gRt(t,n).features}});var rx=ye(KE=>{"use strict";var mRt=es().BADNUM;KE.calcTraceToLineCoords=function(e){for(var t=e[0].trace,r=t.connectgaps,n=[],i=[],a=0;a0&&(n.push(i),i=[])}return i.length>0&&n.push(i),n};KE.makeLine=function(e){return e.length===1?{type:"LineString",coordinates:e[0]}:{type:"MultiLineString",coordinates:e}};KE.makePolygon=function(e){if(e.length===1)return{type:"Polygon",coordinates:e};for(var t=new Array(e.length),r=0;r{D8e.exports={AFG:"afghan",ALA:"\\b\\wland",ALB:"albania",DZA:"algeria",ASM:"^(?=.*americ).*samoa",AND:"andorra",AGO:"angola",AIA:"anguill?a",ATA:"antarctica",ATG:"antigua",ARG:"argentin",ARM:"armenia",ABW:"^(?!.*bonaire).*\\baruba",AUS:"australia",AUT:"^(?!.*hungary).*austria|\\baustri.*\\bemp",AZE:"azerbaijan",BHS:"bahamas",BHR:"bahrain",BGD:"bangladesh|^(?=.*east).*paki?stan",BRB:"barbados",BLR:"belarus|byelo",BEL:"^(?!.*luxem).*belgium",BLZ:"belize|^(?=.*british).*honduras",BEN:"benin|dahome",BMU:"bermuda",BTN:"bhutan",BOL:"bolivia",BES:"^(?=.*bonaire).*eustatius|^(?=.*carib).*netherlands|\\bbes.?islands",BIH:"herzegovina|bosnia",BWA:"botswana|bechuana",BVT:"bouvet",BRA:"brazil",IOT:"british.?indian.?ocean",BRN:"brunei",BGR:"bulgaria",BFA:"burkina|\\bfaso|upper.?volta",BDI:"burundi",CPV:"verde",KHM:"cambodia|kampuchea|khmer",CMR:"cameroon",CAN:"canada",CYM:"cayman",CAF:"\\bcentral.african.republic",TCD:"\\bchad",CHL:"\\bchile",CHN:"^(?!.*\\bmac)(?!.*\\bhong)(?!.*\\btai)(?!.*\\brep).*china|^(?=.*peo)(?=.*rep).*china",CXR:"christmas",CCK:"\\bcocos|keeling",COL:"colombia",COM:"comoro",COG:"^(?!.*\\bdem)(?!.*\\bd[\\.]?r)(?!.*kinshasa)(?!.*zaire)(?!.*belg)(?!.*l.opoldville)(?!.*free).*\\bcongo",COK:"\\bcook",CRI:"costa.?rica",CIV:"ivoire|ivory",HRV:"croatia",CUB:"\\bcuba",CUW:"^(?!.*bonaire).*\\bcura(c|\xE7)ao",CYP:"cyprus",CSK:"czechoslovakia",CZE:"^(?=.*rep).*czech|czechia|bohemia",COD:"\\bdem.*congo|congo.*\\bdem|congo.*\\bd[\\.]?r|\\bd[\\.]?r.*congo|belgian.?congo|congo.?free.?state|kinshasa|zaire|l.opoldville|drc|droc|rdc",DNK:"denmark",DJI:"djibouti",DMA:"dominica(?!n)",DOM:"dominican.rep",ECU:"ecuador",EGY:"egypt",SLV:"el.?salvador",GNQ:"guine.*eq|eq.*guine|^(?=.*span).*guinea",ERI:"eritrea",EST:"estonia",ETH:"ethiopia|abyssinia",FLK:"falkland|malvinas",FRO:"faroe|faeroe",FJI:"fiji",FIN:"finland",FRA:"^(?!.*\\bdep)(?!.*martinique).*france|french.?republic|\\bgaul",GUF:"^(?=.*french).*guiana",PYF:"french.?polynesia|tahiti",ATF:"french.?southern",GAB:"gabon",GMB:"gambia",GEO:"^(?!.*south).*georgia",DDR:"german.?democratic.?republic|democratic.?republic.*germany|east.germany",DEU:"^(?!.*east).*germany|^(?=.*\\bfed.*\\brep).*german",GHA:"ghana|gold.?coast",GIB:"gibraltar",GRC:"greece|hellenic|hellas",GRL:"greenland",GRD:"grenada",GLP:"guadeloupe",GUM:"\\bguam",GTM:"guatemala",GGY:"guernsey",GIN:"^(?!.*eq)(?!.*span)(?!.*bissau)(?!.*portu)(?!.*new).*guinea",GNB:"bissau|^(?=.*portu).*guinea",GUY:"guyana|british.?guiana",HTI:"haiti",HMD:"heard.*mcdonald",VAT:"holy.?see|vatican|papal.?st",HND:"^(?!.*brit).*honduras",HKG:"hong.?kong",HUN:"^(?!.*austr).*hungary",ISL:"iceland",IND:"india(?!.*ocea)",IDN:"indonesia",IRN:"\\biran|persia",IRQ:"\\biraq|mesopotamia",IRL:"(^ireland)|(^republic.*ireland)",IMN:"^(?=.*isle).*\\bman",ISR:"israel",ITA:"italy",JAM:"jamaica",JPN:"japan",JEY:"jersey",JOR:"jordan",KAZ:"kazak",KEN:"kenya|british.?east.?africa|east.?africa.?prot",KIR:"kiribati",PRK:"^(?=.*democrat|people|north|d.*p.*.r).*\\bkorea|dprk|korea.*(d.*p.*r)",KWT:"kuwait",KGZ:"kyrgyz|kirghiz",LAO:"\\blaos?\\b",LVA:"latvia",LBN:"lebanon",LSO:"lesotho|basuto",LBR:"liberia",LBY:"libya",LIE:"liechtenstein",LTU:"lithuania",LUX:"^(?!.*belg).*luxem",MAC:"maca(o|u)",MDG:"madagascar|malagasy",MWI:"malawi|nyasa",MYS:"malaysia",MDV:"maldive",MLI:"\\bmali\\b",MLT:"\\bmalta",MHL:"marshall",MTQ:"martinique",MRT:"mauritania",MUS:"mauritius",MYT:"\\bmayotte",MEX:"\\bmexic",FSM:"fed.*micronesia|micronesia.*fed",MCO:"monaco",MNG:"mongolia",MNE:"^(?!.*serbia).*montenegro",MSR:"montserrat",MAR:"morocco|\\bmaroc",MOZ:"mozambique",MMR:"myanmar|burma",NAM:"namibia",NRU:"nauru",NPL:"nepal",NLD:"^(?!.*\\bant)(?!.*\\bcarib).*netherlands",ANT:"^(?=.*\\bant).*(nether|dutch)",NCL:"new.?caledonia",NZL:"new.?zealand",NIC:"nicaragua",NER:"\\bniger(?!ia)",NGA:"nigeria",NIU:"niue",NFK:"norfolk",MNP:"mariana",NOR:"norway",OMN:"\\boman|trucial",PAK:"^(?!.*east).*paki?stan",PLW:"palau",PSE:"palestin|\\bgaza|west.?bank",PAN:"panama",PNG:"papua|new.?guinea",PRY:"paraguay",PER:"peru",PHL:"philippines",PCN:"pitcairn",POL:"poland",PRT:"portugal",PRI:"puerto.?rico",QAT:"qatar",KOR:"^(?!.*d.*p.*r)(?!.*democrat)(?!.*people)(?!.*north).*\\bkorea(?!.*d.*p.*r)",MDA:"moldov|b(a|e)ssarabia",REU:"r(e|\xE9)union",ROU:"r(o|u|ou)mania",RUS:"\\brussia|soviet.?union|u\\.?s\\.?s\\.?r|socialist.?republics",RWA:"rwanda",BLM:"barth(e|\xE9)lemy",SHN:"helena",KNA:"kitts|\\bnevis",LCA:"\\blucia",MAF:"^(?=.*collectivity).*martin|^(?=.*france).*martin(?!ique)|^(?=.*french).*martin(?!ique)",SPM:"miquelon",VCT:"vincent",WSM:"^(?!.*amer).*samoa",SMR:"san.?marino",STP:"\\bs(a|\xE3)o.?tom(e|\xE9)",SAU:"\\bsa\\w*.?arabia",SEN:"senegal",SRB:"^(?!.*monte).*serbia",SYC:"seychell",SLE:"sierra",SGP:"singapore",SXM:"^(?!.*martin)(?!.*saba).*maarten",SVK:"^(?!.*cze).*slovak",SVN:"slovenia",SLB:"solomon",SOM:"somali",ZAF:"south.africa|s\\\\..?africa",SGS:"south.?georgia|sandwich",SSD:"\\bs\\w*.?sudan",ESP:"spain",LKA:"sri.?lanka|ceylon",SDN:"^(?!.*\\bs(?!u)).*sudan",SUR:"surinam|dutch.?guiana",SJM:"svalbard",SWZ:"swaziland",SWE:"sweden",CHE:"switz|swiss",SYR:"syria",TWN:"taiwan|taipei|formosa|^(?!.*peo)(?=.*rep).*china",TJK:"tajik",THA:"thailand|\\bsiam",MKD:"macedonia|fyrom",TLS:"^(?=.*leste).*timor|^(?=.*east).*timor",TGO:"togo",TKL:"tokelau",TON:"tonga",TTO:"trinidad|tobago",TUN:"tunisia",TUR:"turkey",TKM:"turkmen",TCA:"turks",TUV:"tuvalu",UGA:"uganda",UKR:"ukrain",ARE:"emirates|^u\\.?a\\.?e\\.?$|united.?arab.?em",GBR:"united.?kingdom|britain|^u\\.?k\\.?$",TZA:"tanzania",USA:"united.?states\\b(?!.*islands)|\\bu\\.?s\\.?a\\.?\\b|^\\s*u\\.?s\\.?\\b(?!.*islands)",UMI:"minor.?outlying.?is",URY:"uruguay",UZB:"uzbek",VUT:"vanuatu|new.?hebrides",VEN:"venezuela",VNM:"^(?!.*republic).*viet.?nam|^(?=.*socialist).*viet.?nam",VGB:"^(?=.*\\bu\\.?\\s?k).*virgin|^(?=.*brit).*virgin|^(?=.*kingdom).*virgin",VIR:"^(?=.*\\bu\\.?\\s?s).*virgin|^(?=.*states).*virgin",WLF:"futuna|wallis",ESH:"western.sahara",YEM:"^(?!.*arab)(?!.*north)(?!.*sana)(?!.*peo)(?!.*dem)(?!.*south)(?!.*aden)(?!.*\\bp\\.?d\\.?r).*yemen",YMD:"^(?=.*peo).*yemen|^(?!.*rep)(?=.*dem).*yemen|^(?=.*south).*yemen|^(?=.*aden).*yemen|^(?=.*\\bp\\.?d\\.?r).*yemen",YUG:"yugoslavia",ZMB:"zambia|northern.?rhodesia",EAZ:"zanzibar",ZWE:"zimbabwe|^(?!.*northern).*rhodesia"}});var dz=ye(ku=>{"use strict";Object.defineProperty(ku,"__esModule",{value:!0});var qp=63710088e-1,lX={centimeters:qp*100,centimetres:qp*100,degrees:360/(2*Math.PI),feet:qp*3.28084,inches:qp*39.37,kilometers:qp/1e3,kilometres:qp/1e3,meters:qp,metres:qp,miles:qp/1609.344,millimeters:qp*1e3,millimetres:qp*1e3,nauticalmiles:qp/1852,radians:1,yards:qp*1.0936},sX={acres:247105e-9,centimeters:1e4,centimetres:1e4,feet:10.763910417,hectares:1e-4,inches:1550.003100006,kilometers:1e-6,kilometres:1e-6,meters:1,metres:1,miles:386e-9,nauticalmiles:29155334959812285e-23,millimeters:1e6,millimetres:1e6,yards:1.195990046};function ix(e,t,r={}){let n={type:"Feature"};return(r.id===0||r.id)&&(n.id=r.id),r.bbox&&(n.bbox=r.bbox),n.properties=t||{},n.geometry=e,n}function yRt(e,t,r={}){switch(e){case"Point":return uX(t).geometry;case"LineString":return fX(t).geometry;case"Polygon":return cX(t).geometry;case"MultiPoint":return q8e(t).geometry;case"MultiLineString":return F8e(t).geometry;case"MultiPolygon":return O8e(t).geometry;default:throw new Error(e+" is invalid")}}function uX(e,t,r={}){if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");if(e.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!fz(e[0])||!fz(e[1]))throw new Error("coordinates must contain numbers");return ix({type:"Point",coordinates:e},t,r)}function _Rt(e,t,r={}){return hz(e.map(n=>uX(n,t)),r)}function cX(e,t,r={}){for(let i of e){if(i.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(i[i.length-1].length!==i[0].length)throw new Error("First and last Position are not equivalent.");for(let a=0;acX(n,t)),r)}function fX(e,t,r={}){if(e.length<2)throw new Error("coordinates must be an array of two or more positions");return ix({type:"LineString",coordinates:e},t,r)}function bRt(e,t,r={}){return hz(e.map(n=>fX(n,t)),r)}function hz(e,t={}){let r={type:"FeatureCollection"};return t.id&&(r.id=t.id),t.bbox&&(r.bbox=t.bbox),r.features=e,r}function F8e(e,t,r={}){return ix({type:"MultiLineString",coordinates:e},t,r)}function q8e(e,t,r={}){return ix({type:"MultiPoint",coordinates:e},t,r)}function O8e(e,t,r={}){return ix({type:"MultiPolygon",coordinates:e},t,r)}function wRt(e,t,r={}){return ix({type:"GeometryCollection",geometries:e},t,r)}function TRt(e,t=0){if(t&&!(t>=0))throw new Error("precision must be a positive number");let r=Math.pow(10,t||0);return Math.round(e*r)/r}function B8e(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e*r}function hX(e,t="kilometers"){let r=lX[t];if(!r)throw new Error(t+" units is invalid");return e/r}function ARt(e,t){return N8e(hX(e,t))}function SRt(e){let t=e%360;return t<0&&(t+=360),t}function MRt(e){return e=e%360,e>0?e>180?e-360:e:e<-180?e+360:e}function N8e(e){return e%(2*Math.PI)*180/Math.PI}function ERt(e){return e%360*Math.PI/180}function kRt(e,t="kilometers",r="kilometers"){if(!(e>=0))throw new Error("length must be a positive number");return B8e(hX(e,t),r)}function CRt(e,t="meters",r="kilometers"){if(!(e>=0))throw new Error("area must be a positive number");let n=sX[t];if(!n)throw new Error("invalid original units");let i=sX[r];if(!i)throw new Error("invalid final units");return e/n*i}function fz(e){return!isNaN(e)&&e!==null&&!Array.isArray(e)}function LRt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function PRt(e){if(!e)throw new Error("bbox is required");if(!Array.isArray(e))throw new Error("bbox must be an Array");if(e.length!==4&&e.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");e.forEach(t=>{if(!fz(t))throw new Error("bbox must only contain numbers")})}function IRt(e){if(!e)throw new Error("id is required");if(["string","number"].indexOf(typeof e)===-1)throw new Error("id must be a number or a string")}ku.areaFactors=sX;ku.azimuthToBearing=MRt;ku.bearingToAzimuth=SRt;ku.convertArea=CRt;ku.convertLength=kRt;ku.degreesToRadians=ERt;ku.earthRadius=qp;ku.factors=lX;ku.feature=ix;ku.featureCollection=hz;ku.geometry=yRt;ku.geometryCollection=wRt;ku.isNumber=fz;ku.isObject=LRt;ku.lengthToDegrees=ARt;ku.lengthToRadians=hX;ku.lineString=fX;ku.lineStrings=bRt;ku.multiLineString=F8e;ku.multiPoint=q8e;ku.multiPolygon=O8e;ku.point=uX;ku.points=_Rt;ku.polygon=cX;ku.polygons=xRt;ku.radiansToDegrees=N8e;ku.radiansToLength=B8e;ku.round=TRt;ku.validateBBox=PRt;ku.validateId=IRt});var pz=ye(Dd=>{"use strict";Object.defineProperty(Dd,"__esModule",{value:!0});var jv=dz();function JE(e,t,r){if(e!==null)for(var n,i,a,o,s,l,u,c=0,f=0,h,d=e.type,v=d==="FeatureCollection",x=d==="Feature",b=v?e.features.length:1,p=0;pl||v>u||x>c){s=f,l=n,u=v,c=x,a=0;return}var b=jv.lineString.call(void 0,[s,f],r.properties);if(t(b,n,i,x,a)===!1)return!1;a++,s=f})===!1)return!1}}})}function BRt(e,t,r){var n=r,i=!1;return H8e(e,function(a,o,s,l,u){i===!1&&r===void 0?n=a:n=t(n,a,o,s,l,u),i=!0}),n}function G8e(e,t){if(!e)throw new Error("geojson is required");vz(e,function(r,n,i){if(r.geometry!==null){var a=r.geometry.type,o=r.geometry.coordinates;switch(a){case"LineString":if(t(r,n,i,0,0)===!1)return!1;break;case"Polygon":for(var s=0;s{"use strict";Object.defineProperty(gz,"__esModule",{value:!0});var j8e=dz(),HRt=pz();function X8e(e){return HRt.geomReduce.call(void 0,e,(t,r)=>t+GRt(r),0)}function GRt(e){let t=0,r;switch(e.type){case"Polygon":return W8e(e.coordinates);case"MultiPolygon":for(r=0;r0){t+=Math.abs(Z8e(e[0]));for(let r=1;r=t?(n+2)%t:n+2],s=i[0]*vX,l=a[1]*vX,u=o[0]*vX;r+=(u-s)*Math.sin(l),n++}return r*jRt}var WRt=X8e;gz.area=X8e;gz.default=WRt});var J8e=ye(mz=>{"use strict";Object.defineProperty(mz,"__esModule",{value:!0});var ZRt=dz(),XRt=pz();function K8e(e,t={}){let r=0,n=0,i=0;return XRt.coordEach.call(void 0,e,function(a){r+=a[0],n+=a[1],i++},!0),ZRt.point.call(void 0,[r/i,n/i],t.properties)}var YRt=K8e;mz.centroid=K8e;mz.default=YRt});var Q8e=ye(yz=>{"use strict";Object.defineProperty(yz,"__esModule",{value:!0});var KRt=pz();function $8e(e,t={}){if(e.bbox!=null&&t.recompute!==!0)return e.bbox;let r=[1/0,1/0,-1/0,-1/0];return KRt.coordEach.call(void 0,e,n=>{r[0]>n[0]&&(r[0]=n[0]),r[1]>n[1]&&(r[1]=n[1]),r[2]{"use strict";var $Rt=xa(),rRe=z8e(),{area:QRt}=Y8e(),{centroid:eDt}=J8e(),{bbox:tDt}=Q8e(),eRe=OS(),W5=G1(),rDt=gy(),iDt=ES(),_z=wM(),tRe=Object.keys(rRe),nDt={"ISO-3":eRe,"USA-states":eRe,"country names":aDt};function aDt(e){for(var t=0;t0&&c[f+1][0]<0)return f;return null}switch(n==="RUS"||n==="FJI"?a=function(c){var f;if(u(c)===null)f=c;else for(f=new Array(c.length),l=0;lf?h[d++]=[c[l][0]+360,c[l][1]]:l===f?(h[d++]=c[l],h[d++]=[c[l][0],-90]):h[d++]=c[l];var v=_z.tester(h);v.pts.pop(),i.push(v)}:a=function(c){i.push(_z.tester(c))},t.type){case"MultiPolygon":for(o=0;o0?v.properties.ct=uDt(v):v.properties.ct=[NaN,NaN],h.fIn=c,h.fOut=v,i.push(v)}else W5.log(["Location",h.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete n[f]}switch(r.type){case"FeatureCollection":var l=r.features;for(a=0;ai&&(i=s,r=o)}else r=t;return eDt(r).geometry.coordinates}function cDt(e){var t=window.PlotlyGeoAssets||{},r=[];function n(l){return new Promise(function(u,c){$Rt.json(l,function(f,h){if(f){delete t[l];var d=f.status===404?'GeoJSON at URL "'+l+'" does not exist.':"Unexpected error while fetching from "+l;return c(new Error(d))}return t[l]=h,u(h)})})}function i(l){return new Promise(function(u,c){var f=0,h=setInterval(function(){if(t[l]&&t[l]!=="pending")return clearInterval(h),u(t[l]);if(f>100)return clearInterval(h),c("Unexpected error while fetching from "+l);f++},50)})}for(var a=0;a{"use strict";var hDt=xa(),dDt=ao(),aRe=va(),oRe=op(),vDt=oRe.stylePoints,pDt=oRe.styleText;sRe.exports=function(t,r){r&&gDt(t,r)};function gDt(e,t){var r=t[0].trace,n=t[0].node3;n.style("opacity",t[0].trace.opacity),vDt(n,r,e),pDt(n,r,e),n.selectAll("path.js-line").style("fill","none").each(function(i){var a=hDt.select(this),o=i.trace,s=o.line||{};a.call(aRe.stroke,s.color).call(dDt.dashLine,s.dash||"",s.width||0),o.fill!=="none"&&a.call(aRe.fill,o.fillcolor)})}});var _X=ye((Lpr,cRe)=>{"use strict";var lRe=xa(),bz=Mr(),mDt=cz().getTopojsonFeatures,gX=rx(),xz=nx(),uRe=wg().findExtremes,yX=es().BADNUM,yDt=q0().calcMarkerSize,mX=lu(),_Dt=pX();function xDt(e,t,r){var n=t.layers.frontplot.select(".scatterlayer"),i=bz.makeTraceGroups(n,r,"trace scattergeo");function a(o,s){o.lonlat[0]===yX&&lRe.select(s).remove()}i.selectAll("*").remove(),i.each(function(o){var s=lRe.select(this),l=o[0].trace;if(mX.hasLines(l)||l.fill!=="none"){var u=gX.calcTraceToLineCoords(o),c=l.fill!=="none"?gX.makePolygon(u):gX.makeLine(u);s.selectAll("path.js-line").data([{geojson:c,trace:l}]).enter().append("path").classed("js-line",!0).style("stroke-miterlimit",2)}mX.hasMarkers(l)&&s.selectAll("path.point").data(bz.identity).enter().append("path").classed("point",!0).each(function(f){a(f,this)}),mX.hasText(l)&&s.selectAll("g").data(bz.identity).enter().append("g").append("text").each(function(f){a(f,this)}),_Dt(e,o)})}function bDt(e,t){var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r._length,o,s;if(bz.isArrayOrTypedArray(r.locations)){var l=r.locationmode,u=l==="geojson-id"?xz.extractTraceFeature(e):mDt(r,i.topojson);for(o=0;o{"use strict";var wDt=Nc(),TDt=es().BADNUM,ADt=oT(),SDt=Mr().fillText,MDt=H2();fRe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.xa,s=t.ya,l=t.subplot,u=l.projection.isLonLatOverEdges,c=l.project;function f(E){var k=E.lonlat;if(k[0]===TDt||u(k))return 1/0;var A=c(k),L=c([r,n]),_=Math.abs(A[0]-L[0]),C=Math.abs(A[1]-L[1]),M=Math.max(3,E.mrc||0);return Math.max(Math.sqrt(_*_+C*C)-M,1-3/M)}if(wDt.getClosest(i,f,t),t.index!==!1){var h=i[t.index],d=h.lonlat,v=[o.c2p(d),s.c2p(d)],x=h.mrc||1;t.x0=v[0]-x,t.x1=v[0]+x,t.y0=v[1]-x,t.y1=v[1]+x,t.loc=h.loc,t.lon=d[0],t.lat=d[1];var b={};b[a.geo]={_subplot:l};var p=a._module.formatLabels(h,a,b);return t.lonLabel=p.lonLabel,t.latLabel=p.latLabel,t.color=ADt(a,h),t.extraText=EDt(a,h,t,i[0].t.labels),t.hovertemplate=a.hovertemplate,[t]}};function EDt(e,t,r,n){if(e.hovertemplate)return;var i=t.hi||e.hoverinfo,a=i==="all"?MDt.hoverinfo.flags:i.split("+"),o=a.indexOf("location")!==-1&&Array.isArray(e.locations),s=a.indexOf("lon")!==-1,l=a.indexOf("lat")!==-1,u=a.indexOf("text")!==-1,c=[];function f(h){return h+"\xB0"}return o?c.push(t.loc):s&&l?c.push("("+f(r.latLabel)+", "+f(r.lonLabel)+")"):s?c.push(n.lon+f(r.lonLabel)):l&&c.push(n.lat+f(r.latLabel)),u&&SDt(t,e,c),c.join("
")}});var vRe=ye((Ipr,dRe)=>{"use strict";dRe.exports=function(t,r,n,i,a){t.lon=r.lon,t.lat=r.lat,t.location=r.loc?r.loc:null;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t}});var mRe=ye((Rpr,gRe)=>{"use strict";var pRe=lu(),kDt=es().BADNUM;gRe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l,u,c,f,h,d=!pRe.hasMarkers(s)&&!pRe.hasText(s);if(d)return[];if(r===!1)for(h=0;h{(function(e,t){t(typeof wz=="object"&&typeof yRe!="undefined"?wz:e.d3=e.d3||{})})(wz,function(e){"use strict";function t(Ee,Ae){return EeAe?1:Ee>=Ae?0:NaN}function r(Ee){return Ee.length===1&&(Ee=n(Ee)),{left:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)<0?Ce=Re+1:me=Re}return Ce},right:function(Ae,ze,Ce,me){for(Ce==null&&(Ce=0),me==null&&(me=Ae.length);Ce>>1;Ee(Ae[Re],ze)>0?me=Re:Ce=Re+1}return Ce}}}function n(Ee){return function(Ae,ze){return t(Ee(Ae),ze)}}var i=r(t),a=i.right,o=i.left;function s(Ee,Ae){Ae==null&&(Ae=l);for(var ze=0,Ce=Ee.length-1,me=Ee[0],Re=new Array(Ce<0?0:Ce);zeEe?1:Ae>=Ee?0:NaN}function f(Ee){return Ee===null?NaN:+Ee}function h(Ee,Ae){var ze=Ee.length,Ce=0,me=-1,Re=0,ce,Ge,nt=0;if(Ae==null)for(;++me1)return nt/(Ce-1)}function d(Ee,Ae){var ze=h(Ee,Ae);return ze&&Math.sqrt(ze)}function v(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re,ce;if(Ae==null){for(;++Ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce=me)for(Re=ce=me;++Ceme&&(Re=me),ce0)return[Ee];if((Ce=Ae0)for(Ee=Math.ceil(Ee/Ge),Ae=Math.floor(Ae/Ge),ce=new Array(Re=Math.ceil(Ae-Ee+1));++me=0?(Re>=L?10:Re>=_?5:Re>=C?2:1)*Math.pow(10,me):-Math.pow(10,-me)/(Re>=L?10:Re>=_?5:Re>=C?2:1)}function P(Ee,Ae,ze){var Ce=Math.abs(Ae-Ee)/Math.max(0,ze),me=Math.pow(10,Math.floor(Math.log(Ce)/Math.LN10)),Re=Ce/me;return Re>=L?me*=10:Re>=_?me*=5:Re>=C&&(me*=2),Aert;)ot.pop(),--Rt;var kt=new Array(Rt+1),Ct;for(Re=0;Re<=Rt;++Re)Ct=kt[Re]=[],Ct.x0=Re>0?ot[Re-1]:qt,Ct.x1=Re=1)return+ze(Ee[Ce-1],Ce-1,Ee);var Ce,me=(Ce-1)*Ae,Re=Math.floor(me),ce=+ze(Ee[Re],Re,Ee),Ge=+ze(Ee[Re+1],Re+1,Ee);return ce+(Ge-ce)*(me-Re)}}function V(Ee,Ae,ze){return Ee=p.call(Ee,f).sort(t),Math.ceil((ze-Ae)/(2*(q(Ee,.75)-q(Ee,.25))*Math.pow(Ee.length,-1/3)))}function H(Ee,Ae,ze){return Math.ceil((ze-Ae)/(3.5*d(Ee)*Math.pow(Ee.length,-1/3)))}function X(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++CeRe&&(Re=me)}else for(;++Ce=me)for(Re=me;++CeRe&&(Re=me);return Re}function G(Ee,Ae){var ze=Ee.length,Ce=ze,me=-1,Re,ce=0;if(Ae==null)for(;++me=0;)for(ce=Ee[Ae],ze=ce.length;--ze>=0;)Re[--me]=ce[ze];return Re}function re(Ee,Ae){var ze=Ee.length,Ce=-1,me,Re;if(Ae==null){for(;++Ce=me)for(Re=me;++Ceme&&(Re=me)}else for(;++Ce=me)for(Re=me;++Ceme&&(Re=me);return Re}function ae(Ee,Ae){for(var ze=Ae.length,Ce=new Array(ze);ze--;)Ce[ze]=Ee[Ae[ze]];return Ce}function _e(Ee,Ae){if(ze=Ee.length){var ze,Ce=0,me=0,Re,ce=Ee[me];for(Ae==null&&(Ae=t);++Ce{(function(e,t){typeof Tz=="object"&&typeof _Re!="undefined"?t(Tz,$E()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(Tz,function(e,t){"use strict";function r(){return new n}function n(){this.reset()}n.prototype={constructor:n,reset:function(){this.s=this.t=0},add:function(gt){a(i,gt,this.t),a(this,i.s,this.s),this.s?this.t+=i.t:this.s=i.t},valueOf:function(){return this.s}};var i=new n;function a(gt,Bt,wr){var vr=gt.s=Bt+wr,Ur=vr-Bt,fi=vr-Ur;gt.t=Bt-fi+(wr-Ur)}var o=1e-6,s=1e-12,l=Math.PI,u=l/2,c=l/4,f=l*2,h=180/l,d=l/180,v=Math.abs,x=Math.atan,b=Math.atan2,p=Math.cos,E=Math.ceil,k=Math.exp,A=Math.log,L=Math.pow,_=Math.sin,C=Math.sign||function(gt){return gt>0?1:gt<0?-1:0},M=Math.sqrt,g=Math.tan;function P(gt){return gt>1?0:gt<-1?l:Math.acos(gt)}function T(gt){return gt>1?u:gt<-1?-u:Math.asin(gt)}function F(gt){return(gt=_(gt/2))*gt}function q(){}function V(gt,Bt){gt&&X.hasOwnProperty(gt.type)&&X[gt.type](gt,Bt)}var H={Feature:function(gt,Bt){V(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr=0?1:-1,Ur=vr*wr,fi=p(Bt),xi=_(Bt),Fi=ie*xi,Xi=ge*fi+Fi*p(Ur),hn=Fi*vr*_(Ur);re.add(b(hn,Xi)),ke=gt,ge=fi,ie=xi}function me(gt){return ae.reset(),W(gt,Te),ae*2}function Re(gt){return[b(gt[1],gt[0]),T(gt[2])]}function ce(gt){var Bt=gt[0],wr=gt[1],vr=p(wr);return[vr*p(Bt),vr*_(Bt),_(wr)]}function Ge(gt,Bt){return gt[0]*Bt[0]+gt[1]*Bt[1]+gt[2]*Bt[2]}function nt(gt,Bt){return[gt[1]*Bt[2]-gt[2]*Bt[1],gt[2]*Bt[0]-gt[0]*Bt[2],gt[0]*Bt[1]-gt[1]*Bt[0]]}function ct(gt,Bt){gt[0]+=Bt[0],gt[1]+=Bt[1],gt[2]+=Bt[2]}function qt(gt,Bt){return[gt[0]*Bt,gt[1]*Bt,gt[2]*Bt]}function rt(gt){var Bt=M(gt[0]*gt[0]+gt[1]*gt[1]+gt[2]*gt[2]);gt[0]/=Bt,gt[1]/=Bt,gt[2]/=Bt}var ot,Rt,kt,Ct,Yt,xr,er,Ke,xt=r(),bt,Lt,St={point:Et,lineStart:Ht,lineEnd:$t,polygonStart:function(){St.point=fr,St.lineStart=_r,St.lineEnd=Br,xt.reset(),Te.polygonStart()},polygonEnd:function(){Te.polygonEnd(),St.point=Et,St.lineStart=Ht,St.lineEnd=$t,re<0?(ot=-(kt=180),Rt=-(Ct=90)):xt>o?Ct=90:xt<-o&&(Rt=-90),Lt[0]=ot,Lt[1]=kt},sphere:function(){ot=-(kt=180),Rt=-(Ct=90)}};function Et(gt,Bt){bt.push(Lt=[ot=gt,kt=gt]),BtCt&&(Ct=Bt)}function dt(gt,Bt){var wr=ce([gt*d,Bt*d]);if(Ke){var vr=nt(Ke,wr),Ur=[vr[1],-vr[0],0],fi=nt(Ur,vr);rt(fi),fi=Re(fi);var xi=gt-Yt,Fi=xi>0?1:-1,Xi=fi[0]*h*Fi,hn,Ti=v(xi)>180;Ti^(Fi*YtCt&&(Ct=hn)):(Xi=(Xi+360)%360-180,Ti^(Fi*YtCt&&(Ct=Bt))),Ti?gtOr(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt):kt>=ot?(gtkt&&(kt=gt)):gt>Yt?Or(ot,gt)>Or(ot,kt)&&(kt=gt):Or(gt,kt)>Or(ot,kt)&&(ot=gt)}else bt.push(Lt=[ot=gt,kt=gt]);BtCt&&(Ct=Bt),Ke=wr,Yt=gt}function Ht(){St.point=dt}function $t(){Lt[0]=ot,Lt[1]=kt,St.point=Et,Ke=null}function fr(gt,Bt){if(Ke){var wr=gt-Yt;xt.add(v(wr)>180?wr+(wr>0?360:-360):wr)}else xr=gt,er=Bt;Te.point(gt,Bt),dt(gt,Bt)}function _r(){Te.lineStart()}function Br(){fr(xr,er),Te.lineEnd(),v(xt)>o&&(ot=-(kt=180)),Lt[0]=ot,Lt[1]=kt,Ke=null}function Or(gt,Bt){return(Bt-=gt)<0?Bt+360:Bt}function Nr(gt,Bt){return gt[0]-Bt[0]}function ut(gt,Bt){return gt[0]<=gt[1]?gt[0]<=Bt&&Bt<=gt[1]:BtOr(vr[0],vr[1])&&(vr[1]=Ur[1]),Or(Ur[0],vr[1])>Or(vr[0],vr[1])&&(vr[0]=Ur[0])):fi.push(vr=Ur);for(xi=-1/0,wr=fi.length-1,Bt=0,vr=fi[wr];Bt<=wr;vr=Ur,++Bt)Ur=fi[Bt],(Fi=Or(vr[1],Ur[0]))>xi&&(xi=Fi,ot=Ur[0],kt=vr[1])}return bt=Lt=null,ot===1/0||Rt===1/0?[[NaN,NaN],[NaN,NaN]]:[[ot,Rt],[kt,Ct]]}var Ye,Ve,Xe,ht,Le,xe,Se,lt,Gt,Vt,ar,Qr,ai,jr,ri,bi,nn={sphere:q,point:Wi,lineStart:_n,lineEnd:Wn,polygonStart:function(){nn.lineStart=It,nn.lineEnd=ft},polygonEnd:function(){nn.lineStart=_n,nn.lineEnd=Wn}};function Wi(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt);Ni(wr*p(gt),wr*_(gt),_(Bt))}function Ni(gt,Bt,wr){++Ye,Xe+=(gt-Xe)/Ye,ht+=(Bt-ht)/Ye,Le+=(wr-Le)/Ye}function _n(){nn.point=$i}function $i(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt);jr=wr*p(gt),ri=wr*_(gt),bi=_(Bt),nn.point=zn,Ni(jr,ri,bi)}function zn(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt),vr=wr*p(gt),Ur=wr*_(gt),fi=_(Bt),xi=b(M((xi=ri*fi-bi*Ur)*xi+(xi=bi*vr-jr*fi)*xi+(xi=jr*Ur-ri*vr)*xi),jr*vr+ri*Ur+bi*fi);Ve+=xi,xe+=xi*(jr+(jr=vr)),Se+=xi*(ri+(ri=Ur)),lt+=xi*(bi+(bi=fi)),Ni(jr,ri,bi)}function Wn(){nn.point=Wi}function It(){nn.point=jt}function ft(){Zt(Qr,ai),nn.point=Wi}function jt(gt,Bt){Qr=gt,ai=Bt,gt*=d,Bt*=d,nn.point=Zt;var wr=p(Bt);jr=wr*p(gt),ri=wr*_(gt),bi=_(Bt),Ni(jr,ri,bi)}function Zt(gt,Bt){gt*=d,Bt*=d;var wr=p(Bt),vr=wr*p(gt),Ur=wr*_(gt),fi=_(Bt),xi=ri*fi-bi*Ur,Fi=bi*vr-jr*fi,Xi=jr*Ur-ri*vr,hn=M(xi*xi+Fi*Fi+Xi*Xi),Ti=T(hn),qi=hn&&-Ti/hn;Gt+=qi*xi,Vt+=qi*Fi,ar+=qi*Xi,Ve+=Ti,xe+=Ti*(jr+(jr=vr)),Se+=Ti*(ri+(ri=Ur)),lt+=Ti*(bi+(bi=fi)),Ni(jr,ri,bi)}function yr(gt){Ye=Ve=Xe=ht=Le=xe=Se=lt=Gt=Vt=ar=0,W(gt,nn);var Bt=Gt,wr=Vt,vr=ar,Ur=Bt*Bt+wr*wr+vr*vr;return Url?gt+Math.round(-gt/f)*f:gt,Bt]}Vr.invert=Vr;function gi(gt,Bt,wr){return(gt%=f)?Bt||wr?Zr(Mi(gt),Pi(Bt,wr)):Mi(gt):Bt||wr?Pi(Bt,wr):Vr}function Si(gt){return function(Bt,wr){return Bt+=gt,[Bt>l?Bt-f:Bt<-l?Bt+f:Bt,wr]}}function Mi(gt){var Bt=Si(gt);return Bt.invert=Si(-gt),Bt}function Pi(gt,Bt){var wr=p(gt),vr=_(gt),Ur=p(Bt),fi=_(Bt);function xi(Fi,Xi){var hn=p(Xi),Ti=p(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*wr+Ti*vr;return[b(qi*Ur-mi*fi,Ti*wr-Ii*vr),T(mi*Ur+qi*fi)]}return xi.invert=function(Fi,Xi){var hn=p(Xi),Ti=p(Fi)*hn,qi=_(Fi)*hn,Ii=_(Xi),mi=Ii*Ur-qi*fi;return[b(qi*Ur+Ii*fi,Ti*wr+mi*vr),T(mi*wr-Ti*vr)]},xi}function Gi(gt){gt=gi(gt[0]*d,gt[1]*d,gt.length>2?gt[2]*d:0);function Bt(wr){return wr=gt(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr}return Bt.invert=function(wr){return wr=gt.invert(wr[0]*d,wr[1]*d),wr[0]*=h,wr[1]*=h,wr},Bt}function Ki(gt,Bt,wr,vr,Ur,fi){if(wr){var xi=p(Bt),Fi=_(Bt),Xi=vr*wr;Ur==null?(Ur=Bt+vr*f,fi=Bt-Xi/2):(Ur=ka(xi,Ur),fi=ka(xi,fi),(vr>0?Urfi)&&(Ur+=vr*f));for(var hn,Ti=Ur;vr>0?Ti>fi:Ti1&>.push(gt.pop().concat(gt.shift()))},result:function(){var wr=gt;return gt=[],Bt=null,wr}}}function Fa(gt,Bt){return v(gt[0]-Bt[0])=0;--Fi)Ur.point((qi=Ti[Fi])[0],qi[1]);else vr(Ii.x,Ii.p.x,-1,Ur);Ii=Ii.p}Ii=Ii.o,Ti=Ii.z,mi=!mi}while(!Ii.v);Ur.lineEnd()}}}function oa(gt){if(Bt=gt.length){for(var Bt,wr=0,vr=gt[0],Ur;++wr=0?1:-1,Qo=Ts*Xo,ys=Qo>l,Bo=Ma*Ua;if(Sn.add(b(Bo*Ts*_(Qo),Ta*mo+Bo*p(Qo))),xi+=ys?Xo+Ts*f:Xo,ys^mi>=wr^Cn>=wr){var yl=nt(ce(Ii),ce(qa));rt(yl);var Gs=nt(fi,yl);rt(Gs);var Rs=(ys^Xo>=0?-1:1)*T(Gs[2]);(vr>Rs||vr===Rs&&(yl[0]||yl[1]))&&(Fi+=ys^Xo>=0?1:-1)}}return(xi<-o||xi0){for(Xi||(Ur.polygonStart(),Xi=!0),Ur.lineStart(),mo=0;mo1&&sn&2&&Ua.push(Ua.pop().concat(Ua.shift())),Ti.push(Ua.filter(_t))}}return Ii}}function _t(gt){return gt.length>1}function br(gt,Bt){return((gt=gt.x)[0]<0?gt[1]-u-o:u-gt[1])-((Bt=Bt.x)[0]<0?Bt[1]-u-o:u-Bt[1])}var Hr=xn(function(){return!0},ti,Yi,[-l,-u]);function ti(gt){var Bt=NaN,wr=NaN,vr=NaN,Ur;return{lineStart:function(){gt.lineStart(),Ur=1},point:function(fi,xi){var Fi=fi>0?l:-l,Xi=v(fi-Bt);v(Xi-l)0?u:-u),gt.point(vr,wr),gt.lineEnd(),gt.lineStart(),gt.point(Fi,wr),gt.point(fi,wr),Ur=0):vr!==Fi&&Xi>=l&&(v(Bt-vr)o?x((_(Bt)*(fi=p(vr))*_(wr)-_(vr)*(Ur=p(Bt))*_(gt))/(Ur*fi*xi)):(Bt+vr)/2}function Yi(gt,Bt,wr,vr){var Ur;if(gt==null)Ur=wr*u,vr.point(-l,Ur),vr.point(0,Ur),vr.point(l,Ur),vr.point(l,0),vr.point(l,-Ur),vr.point(0,-Ur),vr.point(-l,-Ur),vr.point(-l,0),vr.point(-l,Ur);else if(v(gt[0]-Bt[0])>o){var fi=gt[0]0,Ur=v(Bt)>o;function fi(Ti,qi,Ii,mi){Ki(mi,gt,wr,Ii,Ti,qi)}function xi(Ti,qi){return p(Ti)*p(qi)>Bt}function Fi(Ti){var qi,Ii,mi,Pn,Ma;return{lineStart:function(){Pn=mi=!1,Ma=1},point:function(Ta,Ea){var qa=[Ta,Ea],Cn,sn=xi(Ta,Ea),Ua=vr?sn?0:hn(Ta,Ea):sn?hn(Ta+(Ta<0?l:-l),Ea):0;if(!qi&&(Pn=mi=sn)&&Ti.lineStart(),sn!==mi&&(Cn=Xi(qi,qa),(!Cn||Fa(qi,Cn)||Fa(qa,Cn))&&(qa[2]=1)),sn!==mi)Ma=0,sn?(Ti.lineStart(),Cn=Xi(qa,qi),Ti.point(Cn[0],Cn[1])):(Cn=Xi(qi,qa),Ti.point(Cn[0],Cn[1],2),Ti.lineEnd()),qi=Cn;else if(Ur&&qi&&vr^sn){var mo;!(Ua&Ii)&&(mo=Xi(qa,qi,!0))&&(Ma=0,vr?(Ti.lineStart(),Ti.point(mo[0][0],mo[0][1]),Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd()):(Ti.point(mo[1][0],mo[1][1]),Ti.lineEnd(),Ti.lineStart(),Ti.point(mo[0][0],mo[0][1],3)))}sn&&(!qi||!Fa(qi,qa))&&Ti.point(qa[0],qa[1]),qi=qa,mi=sn,Ii=Ua},lineEnd:function(){mi&&Ti.lineEnd(),qi=null},clean:function(){return Ma|(Pn&&mi)<<1}}}function Xi(Ti,qi,Ii){var mi=ce(Ti),Pn=ce(qi),Ma=[1,0,0],Ta=nt(mi,Pn),Ea=Ge(Ta,Ta),qa=Ta[0],Cn=Ea-qa*qa;if(!Cn)return!Ii&&Ti;var sn=Bt*Ea/Cn,Ua=-Bt*qa/Cn,mo=nt(Ma,Ta),Xo=qt(Ma,sn),Ts=qt(Ta,Ua);ct(Xo,Ts);var Qo=mo,ys=Ge(Xo,Qo),Bo=Ge(Qo,Qo),yl=ys*ys-Bo*(Ge(Xo,Xo)-1);if(!(yl<0)){var Gs=M(yl),Rs=qt(Qo,(-ys-Gs)/Bo);if(ct(Rs,Xo),Rs=Re(Rs),!Ii)return Rs;var ia=Ti[0],Ka=qi[0],vs=Ti[1],Ko=qi[1],nu;Ka0^Rs[1]<(v(Rs[0]-ia)l^(ia<=Rs[0]&&Rs[0]<=Ka)){var bu=qt(Qo,(-ys+Gs)/Bo);return ct(bu,Xo),[Rs,Re(bu)]}}}function hn(Ti,qi){var Ii=vr?gt:l-gt,mi=0;return Ti<-Ii?mi|=1:Ti>Ii&&(mi|=2),qi<-Ii?mi|=4:qi>Ii&&(mi|=8),mi}return xn(xi,Fi,fi,vr?[0,-gt]:[-l,gt-l])}function hi(gt,Bt,wr,vr,Ur,fi){var xi=gt[0],Fi=gt[1],Xi=Bt[0],hn=Bt[1],Ti=0,qi=1,Ii=Xi-xi,mi=hn-Fi,Pn;if(Pn=wr-xi,!(!Ii&&Pn>0)){if(Pn/=Ii,Ii<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=Ur-xi,!(!Ii&&Pn<0)){if(Pn/=Ii,Ii<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(Ii>0){if(Pn0)){if(Pn/=mi,mi<0){if(Pn0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}if(Pn=fi-Fi,!(!mi&&Pn<0)){if(Pn/=mi,mi<0){if(Pn>qi)return;Pn>Ti&&(Ti=Pn)}else if(mi>0){if(Pn0&&(gt[0]=xi+Ti*Ii,gt[1]=Fi+Ti*mi),qi<1&&(Bt[0]=xi+qi*Ii,Bt[1]=Fi+qi*mi),!0}}}}}var Ji=1e9,ua=-Ji;function Fn(gt,Bt,wr,vr){function Ur(hn,Ti){return gt<=hn&&hn<=wr&&Bt<=Ti&&Ti<=vr}function fi(hn,Ti,qi,Ii){var mi=0,Pn=0;if(hn==null||(mi=xi(hn,qi))!==(Pn=xi(Ti,qi))||Xi(hn,Ti)<0^qi>0)do Ii.point(mi===0||mi===3?gt:wr,mi>1?vr:Bt);while((mi=(mi+qi+4)%4)!==Pn);else Ii.point(Ti[0],Ti[1])}function xi(hn,Ti){return v(hn[0]-gt)0?0:3:v(hn[0]-wr)0?2:1:v(hn[1]-Bt)0?1:0:Ti>0?3:2}function Fi(hn,Ti){return Xi(hn.x,Ti.x)}function Xi(hn,Ti){var qi=xi(hn,1),Ii=xi(Ti,1);return qi!==Ii?qi-Ii:qi===0?Ti[1]-hn[1]:qi===1?hn[0]-Ti[0]:qi===2?hn[1]-Ti[1]:Ti[0]-hn[0]}return function(hn){var Ti=hn,qi=la(),Ii,mi,Pn,Ma,Ta,Ea,qa,Cn,sn,Ua,mo,Xo={point:Ts,lineStart:yl,lineEnd:Gs,polygonStart:ys,polygonEnd:Bo};function Ts(ia,Ka){Ur(ia,Ka)&&Ti.point(ia,Ka)}function Qo(){for(var ia=0,Ka=0,vs=mi.length;Kavr&&(Kc-mf)*(vr-bu)>(Du-bu)*(gt-mf)&&++ia:Du<=vr&&(Kc-mf)*(vr-bu)<(Du-bu)*(gt-mf)&&--ia;return ia}function ys(){Ti=qi,Ii=[],mi=[],mo=!0}function Bo(){var ia=Qo(),Ka=mo&&ia,vs=(Ii=t.merge(Ii)).length;(Ka||vs)&&(hn.polygonStart(),Ka&&(hn.lineStart(),fi(null,null,1,hn),hn.lineEnd()),vs&&jo(Ii,Fi,ia,fi,hn),hn.polygonEnd()),Ti=hn,Ii=mi=Pn=null}function yl(){Xo.point=Rs,mi&&mi.push(Pn=[]),Ua=!0,sn=!1,qa=Cn=NaN}function Gs(){Ii&&(Rs(Ma,Ta),Ea&&sn&&qi.rejoin(),Ii.push(qi.result())),Xo.point=Ts,sn&&Ti.lineEnd()}function Rs(ia,Ka){var vs=Ur(ia,Ka);if(mi&&Pn.push([ia,Ka]),Ua)Ma=ia,Ta=Ka,Ea=vs,Ua=!1,vs&&(Ti.lineStart(),Ti.point(ia,Ka));else if(vs&&sn)Ti.point(ia,Ka);else{var Ko=[qa=Math.max(ua,Math.min(Ji,qa)),Cn=Math.max(ua,Math.min(Ji,Cn))],nu=[ia=Math.max(ua,Math.min(Ji,ia)),Ka=Math.max(ua,Math.min(Ji,Ka))];hi(Ko,nu,gt,Bt,wr,vr)?(sn||(Ti.lineStart(),Ti.point(Ko[0],Ko[1])),Ti.point(nu[0],nu[1]),vs||Ti.lineEnd(),mo=!1):vs&&(Ti.lineStart(),Ti.point(ia,Ka),mo=!1)}qa=ia,Cn=Ka,sn=vs}return Xo}}function Sa(){var gt=0,Bt=0,wr=960,vr=500,Ur,fi,xi;return xi={stream:function(Fi){return Ur&&fi===Fi?Ur:Ur=Fn(gt,Bt,wr,vr)(fi=Fi)},extent:function(Fi){return arguments.length?(gt=+Fi[0][0],Bt=+Fi[0][1],wr=+Fi[1][0],vr=+Fi[1][1],Ur=fi=null,xi):[[gt,Bt],[wr,vr]]}}}var go=r(),Oo,ho,Mo,xo={sphere:q,point:q,lineStart:zs,lineEnd:q,polygonStart:q,polygonEnd:q};function zs(){xo.point=Zs,xo.lineEnd=ks}function ks(){xo.point=xo.lineEnd=q}function Zs(gt,Bt){gt*=d,Bt*=d,Oo=gt,ho=_(Bt),Mo=p(Bt),xo.point=Xs}function Xs(gt,Bt){gt*=d,Bt*=d;var wr=_(Bt),vr=p(Bt),Ur=v(gt-Oo),fi=p(Ur),xi=_(Ur),Fi=vr*xi,Xi=Mo*wr-ho*vr*fi,hn=ho*wr+Mo*vr*fi;go.add(b(M(Fi*Fi+Xi*Xi),hn)),Oo=gt,ho=wr,Mo=vr}function wl(gt){return go.reset(),W(gt,xo),+go}var os=[null,null],cl={type:"LineString",coordinates:os};function Cs(gt,Bt){return os[0]=gt,os[1]=Bt,wl(cl)}var ml={Feature:function(gt,Bt){return Hs(gt.geometry,Bt)},FeatureCollection:function(gt,Bt){for(var wr=gt.features,vr=-1,Ur=wr.length;++vr0&&(Ur=Cs(gt[fi],gt[fi-1]),Ur>0&&wr<=Ur&&vr<=Ur&&(wr+vr-Ur)*(1-Math.pow((wr-vr)/Ur,2))o}).map(Ii)).concat(t.range(E(fi/hn)*hn,Ur,hn).filter(function(Cn){return v(Cn%qi)>o}).map(mi))}return Ea.lines=function(){return qa().map(function(Cn){return{type:"LineString",coordinates:Cn}})},Ea.outline=function(){return{type:"Polygon",coordinates:[Pn(vr).concat(Ma(xi).slice(1),Pn(wr).reverse().slice(1),Ma(Fi).reverse().slice(1))]}},Ea.extent=function(Cn){return arguments.length?Ea.extentMajor(Cn).extentMinor(Cn):Ea.extentMinor()},Ea.extentMajor=function(Cn){return arguments.length?(vr=+Cn[0][0],wr=+Cn[1][0],Fi=+Cn[0][1],xi=+Cn[1][1],vr>wr&&(Cn=vr,vr=wr,wr=Cn),Fi>xi&&(Cn=Fi,Fi=xi,xi=Cn),Ea.precision(Ta)):[[vr,Fi],[wr,xi]]},Ea.extentMinor=function(Cn){return arguments.length?(Bt=+Cn[0][0],gt=+Cn[1][0],fi=+Cn[0][1],Ur=+Cn[1][1],Bt>gt&&(Cn=Bt,Bt=gt,gt=Cn),fi>Ur&&(Cn=fi,fi=Ur,Ur=Cn),Ea.precision(Ta)):[[Bt,fi],[gt,Ur]]},Ea.step=function(Cn){return arguments.length?Ea.stepMajor(Cn).stepMinor(Cn):Ea.stepMinor()},Ea.stepMajor=function(Cn){return arguments.length?(Ti=+Cn[0],qi=+Cn[1],Ea):[Ti,qi]},Ea.stepMinor=function(Cn){return arguments.length?(Xi=+Cn[0],hn=+Cn[1],Ea):[Xi,hn]},Ea.precision=function(Cn){return arguments.length?(Ta=+Cn,Ii=on(fi,Ur,90),mi=fa(Bt,gt,Ta),Pn=on(Fi,xi,90),Ma=fa(vr,wr,Ta),Ea):Ta},Ea.extentMajor([[-180,-90+o],[180,90-o]]).extentMinor([[-180,-80-o],[180,80+o]])}function Rl(){return Qu()()}function vo(gt,Bt){var wr=gt[0]*d,vr=gt[1]*d,Ur=Bt[0]*d,fi=Bt[1]*d,xi=p(vr),Fi=_(vr),Xi=p(fi),hn=_(fi),Ti=xi*p(wr),qi=xi*_(wr),Ii=Xi*p(Ur),mi=Xi*_(Ur),Pn=2*T(M(F(fi-vr)+xi*Xi*F(Ur-wr))),Ma=_(Pn),Ta=Pn?function(Ea){var qa=_(Ea*=Pn)/Ma,Cn=_(Pn-Ea)/Ma,sn=Cn*Ti+qa*Ii,Ua=Cn*qi+qa*mi,mo=Cn*Fi+qa*hn;return[b(Ua,sn)*h,b(mo,M(sn*sn+Ua*Ua))*h]}:function(){return[wr*h,vr*h]};return Ta.distance=Pn,Ta}function Zl(gt){return gt}var Ks=r(),Xl=r(),Ec,Zn,ko,Co,Tl={point:q,lineStart:q,lineEnd:q,polygonStart:function(){Tl.lineStart=uf,Tl.lineEnd=rh},polygonEnd:function(){Tl.lineStart=Tl.lineEnd=Tl.point=q,Ks.add(v(Xl)),Xl.reset()},result:function(){var gt=Ks/2;return Ks.reset(),gt}};function uf(){Tl.point=So}function So(gt,Bt){Tl.point=cf,Ec=ko=gt,Zn=Co=Bt}function cf(gt,Bt){Xl.add(Co*gt-ko*Bt),ko=gt,Co=Bt}function rh(){cf(Ec,Zn)}var Al=1/0,Hc=Al,eu=-Al,Ls=eu,mu={point:kc,lineStart:q,lineEnd:q,polygonStart:q,polygonEnd:q,result:function(){var gt=[[Al,Hc],[eu,Ls]];return eu=Ls=-(Hc=Al=1/0),gt}};function kc(gt,Bt){gteu&&(eu=gt),BtLs&&(Ls=Bt)}var Of=0,Gc=0,vd=0,Bf=0,ss=0,ff=0,ih=0,Vl=0,Js=0,hc,Cc,ws,$s,hs={point:Ms,lineStart:dc,lineEnd:Ps,polygonStart:function(){hs.lineStart=ov,hs.lineEnd=wo},polygonEnd:function(){hs.point=Ms,hs.lineStart=dc,hs.lineEnd=Ps},result:function(){var gt=Js?[ih/Js,Vl/Js]:ff?[Bf/ff,ss/ff]:vd?[Of/vd,Gc/vd]:[NaN,NaN];return Of=Gc=vd=Bf=ss=ff=ih=Vl=Js=0,gt}};function Ms(gt,Bt){Of+=gt,Gc+=Bt,++vd}function dc(){hs.point=Sl}function Sl(gt,Bt){hs.point=ec,Ms(ws=gt,$s=Bt)}function ec(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ms(ws=gt,$s=Bt)}function Ps(){hs.point=Ms}function ov(){hs.point=Od}function wo(){$o(hc,Cc)}function Od(gt,Bt){hs.point=$o,Ms(hc=ws=gt,Cc=$s=Bt)}function $o(gt,Bt){var wr=gt-ws,vr=Bt-$s,Ur=M(wr*wr+vr*vr);Bf+=Ur*(ws+gt)/2,ss+=Ur*($s+Bt)/2,ff+=Ur,Ur=$s*gt-ws*Bt,ih+=Ur*(ws+gt),Vl+=Ur*($s+Bt),Js+=Ur*3,Ms(ws=gt,$s=Bt)}function Ja(gt){this._context=gt}Ja.prototype={_radius:4.5,pointRadius:function(gt){return this._radius=gt,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._context.moveTo(gt,Bt),this._point=1;break}case 1:{this._context.lineTo(gt,Bt);break}default:{this._context.moveTo(gt+this._radius,Bt),this._context.arc(gt,Bt,this._radius,0,f);break}}},result:q};var Ef=r(),tc,uu,Mh,jc,kf,Ml={point:q,lineStart:function(){Ml.point=Yh},lineEnd:function(){tc&&Eh(uu,Mh),Ml.point=q},polygonStart:function(){tc=!0},polygonEnd:function(){tc=null},result:function(){var gt=+Ef;return Ef.reset(),gt}};function Yh(gt,Bt){Ml.point=Eh,uu=jc=gt,Mh=kf=Bt}function Eh(gt,Bt){jc-=gt,kf-=Bt,Ef.add(M(jc*jc+kf*kf)),jc=gt,kf=Bt}function nh(){this._string=[]}nh.prototype={_radius:4.5,_circle:hf(4.5),pointRadius:function(gt){return(gt=+gt)!==this._radius&&(this._radius=gt,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(gt,Bt){switch(this._point){case 0:{this._string.push("M",gt,",",Bt),this._point=1;break}case 1:{this._string.push("L",gt,",",Bt);break}default:{this._circle==null&&(this._circle=hf(this._radius)),this._string.push("M",gt,",",Bt,this._circle);break}}},result:function(){if(this._string.length){var gt=this._string.join("");return this._string=[],gt}else return null}};function hf(gt){return"m0,"+gt+"a"+gt+","+gt+" 0 1,1 0,"+-2*gt+"a"+gt+","+gt+" 0 1,1 0,"+2*gt+"z"}function kh(gt,Bt){var wr=4.5,vr,Ur;function fi(xi){return xi&&(typeof wr=="function"&&Ur.pointRadius(+wr.apply(this,arguments)),W(xi,vr(Ur))),Ur.result()}return fi.area=function(xi){return W(xi,vr(Tl)),Tl.result()},fi.measure=function(xi){return W(xi,vr(Ml)),Ml.result()},fi.bounds=function(xi){return W(xi,vr(mu)),mu.result()},fi.centroid=function(xi){return W(xi,vr(hs)),hs.result()},fi.projection=function(xi){return arguments.length?(vr=xi==null?(gt=null,Zl):(gt=xi).stream,fi):gt},fi.context=function(xi){return arguments.length?(Ur=xi==null?(Bt=null,new nh):new Ja(Bt=xi),typeof wr!="function"&&Ur.pointRadius(wr),fi):Bt},fi.pointRadius=function(xi){return arguments.length?(wr=typeof xi=="function"?xi:(Ur.pointRadius(+xi),+xi),fi):wr},fi.projection(gt).context(Bt)}function Kh(gt){return{stream:rc(gt)}}function rc(gt){return function(Bt){var wr=new ah;for(var vr in gt)wr[vr]=gt[vr];return wr.stream=Bt,wr}}function ah(){}ah.prototype={constructor:ah,point:function(gt,Bt){this.stream.point(gt,Bt)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Wc(gt,Bt,wr){var vr=gt.clipExtent&>.clipExtent();return gt.scale(150).translate([0,0]),vr!=null&>.clipExtent(null),W(wr,gt.stream(mu)),Bt(mu.result()),vr!=null&>.clipExtent(vr),gt}function df(gt,Bt,wr){return Wc(gt,function(vr){var Ur=Bt[1][0]-Bt[0][0],fi=Bt[1][1]-Bt[0][1],xi=Math.min(Ur/(vr[1][0]-vr[0][0]),fi/(vr[1][1]-vr[0][1])),Fi=+Bt[0][0]+(Ur-xi*(vr[1][0]+vr[0][0]))/2,Xi=+Bt[0][1]+(fi-xi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*xi).translate([Fi,Xi])},wr)}function Cu(gt,Bt,wr){return df(gt,[[0,0],Bt],wr)}function Nf(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][0]-vr[0][0]),xi=(Ur-fi*(vr[1][0]+vr[0][0]))/2,Fi=-fi*vr[0][1];gt.scale(150*fi).translate([xi,Fi])},wr)}function Zc(gt,Bt,wr){return Wc(gt,function(vr){var Ur=+Bt,fi=Ur/(vr[1][1]-vr[0][1]),xi=-fi*vr[0][0],Fi=(Ur-fi*(vr[1][1]+vr[0][1]))/2;gt.scale(150*fi).translate([xi,Fi])},wr)}var ds=16,Ch=p(30*d);function Bd(gt,Bt){return+Bt?Cf(gt,Bt):Jh(gt)}function Jh(gt){return rc({point:function(Bt,wr){Bt=gt(Bt,wr),this.stream.point(Bt[0],Bt[1])}})}function Cf(gt,Bt){function wr(vr,Ur,fi,xi,Fi,Xi,hn,Ti,qi,Ii,mi,Pn,Ma,Ta){var Ea=hn-vr,qa=Ti-Ur,Cn=Ea*Ea+qa*qa;if(Cn>4*Bt&&Ma--){var sn=xi+Ii,Ua=Fi+mi,mo=Xi+Pn,Xo=M(sn*sn+Ua*Ua+mo*mo),Ts=T(mo/=Xo),Qo=v(v(mo)-1)Bt||v((Ea*Gs+qa*Rs)/Cn-.5)>.3||xi*Ii+Fi*mi+Xi*Pn2?ia[2]%360*d:0,Gs()):[Fi*h,Xi*h,hn*h]},Bo.angle=function(ia){return arguments.length?(qi=ia%360*d,Gs()):qi*h},Bo.reflectX=function(ia){return arguments.length?(Ii=ia?-1:1,Gs()):Ii<0},Bo.reflectY=function(ia){return arguments.length?(mi=ia?-1:1,Gs()):mi<0},Bo.precision=function(ia){return arguments.length?(mo=Bd(Xo,Ua=ia*ia),Rs()):M(Ua)},Bo.fitExtent=function(ia,Ka){return df(Bo,ia,Ka)},Bo.fitSize=function(ia,Ka){return Cu(Bo,ia,Ka)},Bo.fitWidth=function(ia,Ka){return Nf(Bo,ia,Ka)},Bo.fitHeight=function(ia,Ka){return Zc(Bo,ia,Ka)};function Gs(){var ia=tu(wr,0,0,Ii,mi,qi).apply(null,Bt(fi,xi)),Ka=(qi?tu:$h)(wr,vr-ia[0],Ur-ia[1],Ii,mi,qi);return Ti=gi(Fi,Xi,hn),Xo=Zr(Bt,Ka),Ts=Zr(Ti,Xo),mo=Bd(Xo,Ua),Rs()}function Rs(){return Qo=ys=null,Bo}return function(){return Bt=gt.apply(this,arguments),Bo.invert=Bt.invert&&yl,Gs()}}function fl(gt){var Bt=0,wr=l/3,vr=Lc(gt),Ur=vr(Bt,wr);return Ur.parallels=function(fi){return arguments.length?vr(Bt=fi[0]*d,wr=fi[1]*d):[Bt*h,wr*h]},Ur}function Xc(gt){var Bt=p(gt);function wr(vr,Ur){return[vr*Bt,_(Ur)/Bt]}return wr.invert=function(vr,Ur){return[vr/Bt,T(Ur*Bt)]},wr}function ic(gt,Bt){var wr=_(gt),vr=(wr+_(Bt))/2;if(v(vr)=.12&&Ta<.234&&Ma>=-.425&&Ma<-.214?Ur:Ta>=.166&&Ta<.234&&Ma>=-.214&&Ma<-.115?xi:wr).invert(Ii)},Ti.stream=function(Ii){return gt&&Bt===Ii?gt:gt=Qh([wr.stream(Bt=Ii),Ur.stream(Ii),xi.stream(Ii)])},Ti.precision=function(Ii){return arguments.length?(wr.precision(Ii),Ur.precision(Ii),xi.precision(Ii),qi()):wr.precision()},Ti.scale=function(Ii){return arguments.length?(wr.scale(Ii),Ur.scale(Ii*.35),xi.scale(Ii),Ti.translate(wr.translate())):wr.scale()},Ti.translate=function(Ii){if(!arguments.length)return wr.translate();var mi=wr.scale(),Pn=+Ii[0],Ma=+Ii[1];return vr=wr.translate(Ii).clipExtent([[Pn-.455*mi,Ma-.238*mi],[Pn+.455*mi,Ma+.238*mi]]).stream(hn),fi=Ur.translate([Pn-.307*mi,Ma+.201*mi]).clipExtent([[Pn-.425*mi+o,Ma+.12*mi+o],[Pn-.214*mi-o,Ma+.234*mi-o]]).stream(hn),Fi=xi.translate([Pn-.205*mi,Ma+.212*mi]).clipExtent([[Pn-.214*mi+o,Ma+.166*mi+o],[Pn-.115*mi-o,Ma+.234*mi-o]]).stream(hn),qi()},Ti.fitExtent=function(Ii,mi){return df(Ti,Ii,mi)},Ti.fitSize=function(Ii,mi){return Cu(Ti,Ii,mi)},Ti.fitWidth=function(Ii,mi){return Nf(Ti,Ii,mi)},Ti.fitHeight=function(Ii,mi){return Zc(Ti,Ii,mi)};function qi(){return gt=Bt=null,Ti}return Ti.scale(1070)}function Gu(gt){return function(Bt,wr){var vr=p(Bt),Ur=p(wr),fi=gt(vr*Ur);return[fi*Ur*_(Bt),fi*_(wr)]}}function Pc(gt){return function(Bt,wr){var vr=M(Bt*Bt+wr*wr),Ur=gt(vr),fi=_(Ur),xi=p(Ur);return[b(Bt*fi,vr*xi),T(vr&&wr*fi/vr)]}}var vc=Gu(function(gt){return M(2/(1+gt))});vc.invert=Pc(function(gt){return 2*T(gt/2)});function sv(){return Pu(vc).scale(124.75).clipAngle(180-.001)}var Lf=Gu(function(gt){return(gt=P(gt))&>/_(gt)});Lf.invert=Pc(function(gt){return gt});function Uf(){return Pu(Lf).scale(79.4188).clipAngle(180-.001)}function Iu(gt,Bt){return[gt,A(g((u+Bt)/2))]}Iu.invert=function(gt,Bt){return[gt,2*x(k(Bt))-u]};function oh(){return ru(Iu).scale(961/f)}function ru(gt){var Bt=Pu(gt),wr=Bt.center,vr=Bt.scale,Ur=Bt.translate,fi=Bt.clipExtent,xi=null,Fi,Xi,hn;Bt.scale=function(qi){return arguments.length?(vr(qi),Ti()):vr()},Bt.translate=function(qi){return arguments.length?(Ur(qi),Ti()):Ur()},Bt.center=function(qi){return arguments.length?(wr(qi),Ti()):wr()},Bt.clipExtent=function(qi){return arguments.length?(qi==null?xi=Fi=Xi=hn=null:(xi=+qi[0][0],Fi=+qi[0][1],Xi=+qi[1][0],hn=+qi[1][1]),Ti()):xi==null?null:[[xi,Fi],[Xi,hn]]};function Ti(){var qi=l*vr(),Ii=Bt(Gi(Bt.rotate()).invert([0,0]));return fi(xi==null?[[Ii[0]-qi,Ii[1]-qi],[Ii[0]+qi,Ii[1]+qi]]:gt===Iu?[[Math.max(Ii[0]-qi,xi),Fi],[Math.min(Ii[0]+qi,Xi),hn]]:[[xi,Math.max(Ii[1]-qi,Fi)],[Xi,Math.min(Ii[1]+qi,hn)]])}return Ti()}function vf(gt){return g((u+gt)/2)}function md(gt,Bt){var wr=p(gt),vr=gt===Bt?_(gt):A(wr/p(Bt))/A(vf(Bt)/vf(gt)),Ur=wr*L(vf(gt),vr)/vr;if(!vr)return Iu;function fi(xi,Fi){Ur>0?Fi<-u+o&&(Fi=-u+o):Fi>u-o&&(Fi=u-o);var Xi=Ur/L(vf(Fi),vr);return[Xi*_(vr*xi),Ur-Xi*p(vr*xi)]}return fi.invert=function(xi,Fi){var Xi=Ur-Fi,hn=C(vr)*M(xi*xi+Xi*Xi),Ti=b(xi,v(Xi))*C(Xi);return Xi*vr<0&&(Ti-=l*C(xi)*C(Xi)),[Ti/vr,2*x(L(Ur/hn,1/vr))-u]},fi}function sh(){return fl(md).scale(109.5).parallels([30,30])}function Fs(gt,Bt){return[gt,Bt]}Fs.invert=Fs;function _u(){return Pu(Fs).scale(152.63)}function xu(gt,Bt){var wr=p(gt),vr=gt===Bt?_(gt):(wr-p(Bt))/(Bt-gt),Ur=wr/vr+gt;if(v(vr)o&&--vr>0);return[gt/(.8707+(fi=wr*wr)*(-.131979+fi*(-.013791+fi*fi*fi*(.003971-.001529*fi)))),wr]};function gc(){return Pu(Rc).scale(175.295)}function hl(gt,Bt){return[p(Bt)*_(gt),_(Bt)]}hl.invert=Pc(T);function iu(){return Pu(hl).scale(249.5).clipAngle(90+o)}function mc(gt,Bt){var wr=p(Bt),vr=1+p(gt)*wr;return[wr*_(gt)/vr,_(Bt)/vr]}mc.invert=Pc(function(gt){return 2*x(gt)});function Yc(){return Pu(mc).scale(250).clipAngle(142)}function nc(gt,Bt){return[A(g((u+Bt)/2)),-gt]}nc.invert=function(gt,Bt){return[-Bt,2*x(k(gt))-u]};function gf(){var gt=ru(nc),Bt=gt.center,wr=gt.rotate;return gt.center=function(vr){return arguments.length?Bt([-vr[1],vr[0]]):(vr=Bt(),[vr[1],-vr[0]])},gt.rotate=function(vr){return arguments.length?wr([vr[0],vr[1],vr.length>2?vr[2]+90:90]):(vr=wr(),[vr[0],vr[1],vr[2]-90])},wr([0,0,90]).scale(159.155)}e.geoAlbers=Qs,e.geoAlbersUsa=gd,e.geoArea=me,e.geoAzimuthalEqualArea=sv,e.geoAzimuthalEqualAreaRaw=vc,e.geoAzimuthalEquidistant=Uf,e.geoAzimuthalEquidistantRaw=Lf,e.geoBounds=Ne,e.geoCentroid=yr,e.geoCircle=jn,e.geoClipAntimeridian=Hr,e.geoClipCircle=an,e.geoClipExtent=Sa,e.geoClipRectangle=Fn,e.geoConicConformal=sh,e.geoConicConformalRaw=md,e.geoConicEqualArea=yu,e.geoConicEqualAreaRaw=ic,e.geoConicEquidistant=Lh,e.geoConicEquidistantRaw=xu,e.geoContains=ms,e.geoDistance=Cs,e.geoEqualEarth=Ph,e.geoEqualEarthRaw=pf,e.geoEquirectangular=_u,e.geoEquirectangularRaw=Fs,e.geoGnomonic=Ih,e.geoGnomonicRaw=Dl,e.geoGraticule=Qu,e.geoGraticule10=Rl,e.geoIdentity=Wu,e.geoInterpolate=vo,e.geoLength=wl,e.geoMercator=oh,e.geoMercatorRaw=Iu,e.geoNaturalEarth1=gc,e.geoNaturalEarth1Raw=Rc,e.geoOrthographic=iu,e.geoOrthographicRaw=hl,e.geoPath=kh,e.geoProjection=Pu,e.geoProjectionMutator=Lc,e.geoRotation=Gi,e.geoStereographic=Yc,e.geoStereographicRaw=mc,e.geoStream=W,e.geoTransform=Kh,e.geoTransverseMercator=gf,e.geoTransverseMercatorRaw=nc,Object.defineProperty(e,"__esModule",{value:!0})})});var bRe=ye((Az,xRe)=>{(function(e,t){typeof Az=="object"&&typeof xRe!="undefined"?t(Az,xX(),$E()):t(e.d3=e.d3||{},e.d3,e.d3)})(Az,function(e,t,r){"use strict";var n=Math.abs,i=Math.atan,a=Math.atan2,o=Math.cos,s=Math.exp,l=Math.floor,u=Math.log,c=Math.max,f=Math.min,h=Math.pow,d=Math.round,v=Math.sign||function(he){return he>0?1:he<0?-1:0},x=Math.sin,b=Math.tan,p=1e-6,E=1e-12,k=Math.PI,A=k/2,L=k/4,_=Math.SQRT1_2,C=H(2),M=H(k),g=k*2,P=180/k,T=k/180;function F(he){return he?he/Math.sin(he):1}function q(he){return he>1?A:he<-1?-A:Math.asin(he)}function V(he){return he>1?0:he<-1?k:Math.acos(he)}function H(he){return he>0?Math.sqrt(he):0}function X(he){return he=s(2*he),(he-1)/(he+1)}function G(he){return(s(he)-s(-he))/2}function N(he){return(s(he)+s(-he))/2}function W(he){return u(he+H(he*he+1))}function re(he){return u(he+H(he*he-1))}function ae(he){var be=b(he/2),Pe=2*u(o(he/2))/(be*be);function Oe(Je,He){var et=o(Je),Mt=o(He),Dt=x(He),Ut=Mt*et,tr=-((1-Ut?u((1+Ut)/2)/(1-Ut):-.5)+Pe/(1+Ut));return[tr*Mt*x(Je),tr*Dt]}return Oe.invert=function(Je,He){var et=H(Je*Je+He*He),Mt=-he/2,Dt=50,Ut;if(!et)return[0,0];do{var tr=Mt/2,mr=o(tr),Rr=x(tr),zr=Rr/mr,Xr=-u(n(mr));Mt-=Ut=(2/zr*Xr-Pe*zr-et)/(-Xr/(Rr*Rr)+1-Pe/(2*mr*mr))*(mr<0?.7:1)}while(n(Ut)>p&&--Dt>0);var di=x(Mt);return[a(Je*di,et*o(Mt)),q(He*di/et)]},Oe}function _e(){var he=A,be=t.geoProjectionMutator(ae),Pe=be(he);return Pe.radius=function(Oe){return arguments.length?be(he=Oe*T):he*P},Pe.scale(179.976).clipAngle(147)}function Me(he,be){var Pe=o(be),Oe=F(V(Pe*o(he/=2)));return[2*Pe*x(he)*Oe,x(be)*Oe]}Me.invert=function(he,be){if(!(he*he+4*be*be>k*k+p)){var Pe=he,Oe=be,Je=25;do{var He=x(Pe),et=x(Pe/2),Mt=o(Pe/2),Dt=x(Oe),Ut=o(Oe),tr=x(2*Oe),mr=Dt*Dt,Rr=Ut*Ut,zr=et*et,Xr=1-Rr*Mt*Mt,di=Xr?V(Ut*Mt)*H(Li=1/Xr):Li=0,Li,Ci=2*di*Ut*et-he,Qi=di*Dt-be,Mn=Li*(Rr*zr+di*Ut*Mt*mr),pa=Li*(.5*He*tr-di*2*Dt*et),ea=Li*.25*(tr*et-di*Dt*Rr*He),Ga=Li*(mr*Mt+di*zr*Ut),To=pa*ea-Ga*Mn;if(!To)break;var Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>p||n(co)>p)&&--Je>0);return[Pe,Oe]}};function ke(){return t.geoProjection(Me).scale(152.63)}function ge(he){var be=x(he),Pe=o(he),Oe=he>=0?1:-1,Je=b(Oe*he),He=(1+be-Pe)/2;function et(Mt,Dt){var Ut=o(Dt),tr=o(Mt/=2);return[(1+Ut)*x(Mt),(Oe*Dt>-a(tr,Je)-.001?0:-Oe*10)+He+x(Dt)*Pe-(1+Ut)*be*tr]}return et.invert=function(Mt,Dt){var Ut=0,tr=0,mr=50;do{var Rr=o(Ut),zr=x(Ut),Xr=o(tr),di=x(tr),Li=1+Xr,Ci=Li*zr-Mt,Qi=He+di*Pe-Li*be*Rr-Dt,Mn=Li*Rr/2,pa=-zr*di,ea=be*Li*zr/2,Ga=Pe*Xr+be*Rr*di,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To/2,co=(Ci*ea-Qi*Mn)/To;n(co)>2&&(co/=2),Ut-=Wa,tr-=co}while((n(Wa)>p||n(co)>p)&&--mr>0);return Oe*tr>-a(o(Ut),Je)-.001?[Ut*2,tr]:null},et}function ie(){var he=20*T,be=he>=0?1:-1,Pe=b(be*he),Oe=t.geoProjectionMutator(ge),Je=Oe(he),He=Je.stream;return Je.parallel=function(et){return arguments.length?(Pe=b((be=(he=et*T)>=0?1:-1)*he),Oe(he)):he*P},Je.stream=function(et){var Mt=Je.rotate(),Dt=He(et),Ut=(Je.rotate([0,0]),He(et)),tr=Je.precision();return Je.rotate(Mt),Dt.sphere=function(){Ut.polygonStart(),Ut.lineStart();for(var mr=be*-180;be*mr<180;mr+=be*90)Ut.point(mr,be*90);if(he)for(;be*(mr-=3*be*tr)>=-180;)Ut.point(mr,be*-a(o(mr*T/2),Pe)*P);Ut.lineEnd(),Ut.polygonEnd()},Dt},Je.scale(218.695).center([0,28.0974])}function Te(he,be){var Pe=b(be/2),Oe=H(1-Pe*Pe),Je=1+Oe*o(he/=2),He=x(he)*Oe/Je,et=Pe/Je,Mt=He*He,Dt=et*et;return[4/3*He*(3+Mt-3*Dt),4/3*et*(3+3*Mt-Dt)]}Te.invert=function(he,be){if(he*=3/8,be*=3/8,!he&&n(be)>1)return null;var Pe=he*he,Oe=be*be,Je=1+Pe+Oe,He=H((Je-H(Je*Je-4*be*be))/2),et=q(He)/3,Mt=He?re(n(be/He))/3:W(n(he))/3,Dt=o(et),Ut=N(Mt),tr=Ut*Ut-Dt*Dt;return[v(he)*2*a(G(Mt)*Dt,.25-tr),v(be)*2*a(Ut*x(et),.25+tr)]};function Ee(){return t.geoProjection(Te).scale(66.1603)}var Ae=H(8),ze=u(1+C);function Ce(he,be){var Pe=n(be);return PeE&&--Oe>0);return[he/(o(Pe)*(Ae-1/x(Pe))),v(be)*Pe]};function me(){return t.geoProjection(Ce).scale(112.314)}function Re(he){var be=2*k/he;function Pe(Oe,Je){var He=t.geoAzimuthalEquidistantRaw(Oe,Je);if(n(Oe)>A){var et=a(He[1],He[0]),Mt=H(He[0]*He[0]+He[1]*He[1]),Dt=be*d((et-A)/be)+A,Ut=a(x(et-=Dt),2-o(et));et=Dt+q(k/Mt*x(Ut))-Ut,He[0]=Mt*o(et),He[1]=Mt*x(et)}return He}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+Je*Je);if(He>A){var et=a(Je,Oe),Mt=be*d((et-A)/be)+A,Dt=et>Mt?-1:1,Ut=He*o(Mt-et),tr=1/b(Dt*V((Ut-k)/H(k*(k-2*Ut)+He*He)));et=Mt+2*i((tr+Dt*H(tr*tr-3))/3),Oe=He*o(et),Je=He*x(et)}return t.geoAzimuthalEquidistantRaw.invert(Oe,Je)},Pe}function ce(){var he=5,be=t.geoProjectionMutator(Re),Pe=be(he),Oe=Pe.stream,Je=.01,He=-o(Je*T),et=x(Je*T);return Pe.lobes=function(Mt){return arguments.length?be(he=+Mt):he},Pe.stream=function(Mt){var Dt=Pe.rotate(),Ut=Oe(Mt),tr=(Pe.rotate([0,0]),Oe(Mt));return Pe.rotate(Dt),Ut.sphere=function(){tr.polygonStart(),tr.lineStart();for(var mr=0,Rr=360/he,zr=2*k/he,Xr=90-180/he,di=A;mr0&&n(Je)>p);return Oe<0?NaN:Pe}function rt(he,be,Pe){return be===void 0&&(be=40),Pe===void 0&&(Pe=E),function(Oe,Je,He,et){var Mt,Dt,Ut;He=He===void 0?0:+He,et=et===void 0?0:+et;for(var tr=0;trMt){He-=Dt/=2,et-=Ut/=2;continue}Mt=Xr;var di=(He>0?-1:1)*Pe,Li=(et>0?-1:1)*Pe,Ci=he(He+di,et),Qi=he(He,et+Li),Mn=(Ci[0]-mr[0])/di,pa=(Ci[1]-mr[1])/di,ea=(Qi[0]-mr[0])/Li,Ga=(Qi[1]-mr[1])/Li,To=Ga*Mn-pa*ea,Wa=(n(To)<.5?.5:1)/To;if(Dt=(zr*ea-Rr*Ga)*Wa,Ut=(Rr*pa-zr*Mn)*Wa,He+=Dt,et+=Ut,n(Dt)0&&(Mt[1]*=1+Dt/1.5*Mt[0]*Mt[0]),Mt}return Oe.invert=rt(Oe),Oe}function Rt(){return t.geoProjection(ot()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function kt(he,be){var Pe=he*x(be),Oe=30,Je;do be-=Je=(be+x(be)-Pe)/(1+o(be));while(n(Je)>p&&--Oe>0);return be/2}function Ct(he,be,Pe){function Oe(Je,He){return[he*Je*o(He=kt(Pe,He)),be*x(He)]}return Oe.invert=function(Je,He){return He=q(He/be),[Je/(he*o(He)),q((2*He+x(2*He))/Pe)]},Oe}var Yt=Ct(C/A,C,k);function xr(){return t.geoProjection(Yt).scale(169.529)}var er=2.00276,Ke=1.11072;function xt(he,be){var Pe=kt(k,be);return[er*he/(1/o(be)+Ke/o(Pe)),(be+C*x(Pe))/er]}xt.invert=function(he,be){var Pe=er*be,Oe=be<0?-L:L,Je=25,He,et;do et=Pe-C*x(Oe),Oe-=He=(x(2*Oe)+2*Oe-k*x(et))/(2*o(2*Oe)+2+k*o(et)*C*o(Oe));while(n(He)>p&&--Je>0);return et=Pe-C*x(Oe),[he*(1/o(et)+Ke/o(Oe))/er,et]};function bt(){return t.geoProjection(xt).scale(160.857)}function Lt(he){var be=0,Pe=t.geoProjectionMutator(he),Oe=Pe(be);return Oe.parallel=function(Je){return arguments.length?Pe(be=Je*T):be*P},Oe}function St(he,be){return[he*o(be),be]}St.invert=function(he,be){return[he/o(be),be]};function Et(){return t.geoProjection(St).scale(152.63)}function dt(he){if(!he)return St;var be=1/b(he);function Pe(Oe,Je){var He=be+he-Je,et=He&&Oe*o(Je)/He;return[He*x(et),be-He*o(et)]}return Pe.invert=function(Oe,Je){var He=H(Oe*Oe+(Je=be-Je)*Je),et=be+he-He;return[He/o(et)*a(Oe,Je),et]},Pe}function Ht(){return Lt(dt).scale(123.082).center([0,26.1441]).parallel(45)}function $t(he){function be(Pe,Oe){var Je=A-Oe,He=Je&&Pe*he*x(Je)/Je;return[Je*x(He)/he,A-Je*o(He)]}return be.invert=function(Pe,Oe){var Je=Pe*he,He=A-Oe,et=H(Je*Je+He*He),Mt=a(Je,He);return[(et?et/x(et):1)*Mt/he,A-et]},be}function fr(){var he=.5,be=t.geoProjectionMutator($t),Pe=be(he);return Pe.fraction=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(158.837)}var _r=Ct(1,4/k,k);function Br(){return t.geoProjection(_r).scale(152.63)}function Or(he,be,Pe,Oe,Je,He){var et=o(He),Mt;if(n(he)>1||n(He)>1)Mt=V(Pe*Je+be*Oe*et);else{var Dt=x(he/2),Ut=x(He/2);Mt=2*q(H(Dt*Dt+be*Oe*Ut*Ut))}return n(Mt)>p?[Mt,a(Oe*x(He),be*Je-Pe*Oe*et)]:[0,0]}function Nr(he,be,Pe){return V((he*he+be*be-Pe*Pe)/(2*he*be))}function ut(he){return he-2*k*l((he+k)/(2*k))}function Ne(he,be,Pe){for(var Oe=[[he[0],he[1],x(he[1]),o(he[1])],[be[0],be[1],x(be[1]),o(be[1])],[Pe[0],Pe[1],x(Pe[1]),o(Pe[1])]],Je=Oe[2],He,et=0;et<3;++et,Je=He)He=Oe[et],Je.v=Or(He[1]-Je[1],Je[3],Je[2],He[3],He[2],He[0]-Je[0]),Je.point=[0,0];var Mt=Nr(Oe[0].v[0],Oe[2].v[0],Oe[1].v[0]),Dt=Nr(Oe[0].v[0],Oe[1].v[0],Oe[2].v[0]),Ut=k-Mt;Oe[2].point[1]=0,Oe[0].point[0]=-(Oe[1].point[0]=Oe[0].v[0]/2);var tr=[Oe[2].point[0]=Oe[0].point[0]+Oe[2].v[0]*o(Mt),2*(Oe[0].point[1]=Oe[1].point[1]=Oe[2].v[0]*x(Mt))];function mr(Rr,zr){var Xr=x(zr),di=o(zr),Li=new Array(3),Ci;for(Ci=0;Ci<3;++Ci){var Qi=Oe[Ci];if(Li[Ci]=Or(zr-Qi[1],Qi[3],Qi[2],di,Xr,Rr-Qi[0]),!Li[Ci][0])return Qi.point;Li[Ci][1]=ut(Li[Ci][1]-Qi.v[1])}var Mn=tr.slice();for(Ci=0;Ci<3;++Ci){var pa=Ci==2?0:Ci+1,ea=Nr(Oe[Ci].v[0],Li[Ci][0],Li[pa][0]);Li[Ci][1]<0&&(ea=-ea),Ci?Ci==1?(ea=Dt-ea,Mn[0]-=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea)):(ea=Ut-ea,Mn[0]+=Li[Ci][0]*o(ea),Mn[1]+=Li[Ci][0]*x(ea)):(Mn[0]+=Li[Ci][0]*o(ea),Mn[1]-=Li[Ci][0]*x(ea))}return Mn[0]/=3,Mn[1]/=3,Mn}return mr}function Ye(he){return he[0]*=T,he[1]*=T,he}function Ve(){return Xe([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Xe(he,be,Pe){var Oe=t.geoCentroid({type:"MultiPoint",coordinates:[he,be,Pe]}),Je=[-Oe[0],-Oe[1]],He=t.geoRotation(Je),et=Ne(Ye(He(he)),Ye(He(be)),Ye(He(Pe)));et.invert=rt(et);var Mt=t.geoProjection(et).rotate(Je),Dt=Mt.center;return delete Mt.rotate,Mt.center=function(Ut){return arguments.length?Dt(He(Ut)):He.invert(Dt())},Mt.clipAngle(90)}function ht(he,be){var Pe=H(1-x(be));return[2/M*he*Pe,M*(1-Pe)]}ht.invert=function(he,be){var Pe=(Pe=be/M-1)*Pe;return[Pe>0?he*H(k/Pe)/2:0,q(1-Pe)]};function Le(){return t.geoProjection(ht).scale(95.6464).center([0,30])}function xe(he){var be=b(he);function Pe(Oe,Je){return[Oe,(Oe?Oe/x(Oe):1)*(x(Je)*o(Oe)-be*o(Je))]}return Pe.invert=be?function(Oe,Je){Oe&&(Je*=x(Oe)/Oe);var He=o(Oe);return[Oe,2*a(H(He*He+be*be-Je*Je)-He,be-Je)]}:function(Oe,Je){return[Oe,q(Oe?Je*b(Oe)/Oe:Je)]},Pe}function Se(){return Lt(xe).scale(249.828).clipAngle(90)}var lt=H(3);function Gt(he,be){return[lt*he*(2*o(2*be/3)-1)/M,lt*M*x(be/3)]}Gt.invert=function(he,be){var Pe=3*q(be/(lt*M));return[M*he/(lt*(2*o(2*Pe/3)-1)),Pe]};function Vt(){return t.geoProjection(Gt).scale(156.19)}function ar(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,x(Je)/be]}return Pe.invert=function(Oe,Je){return[Oe/be,q(Je*be)]},Pe}function Qr(){return Lt(ar).parallel(38.58).scale(195.044)}function ai(he){var be=o(he);function Pe(Oe,Je){return[Oe*be,(1+be)*b(Je/2)]}return Pe.invert=function(Oe,Je){return[Oe/be,i(Je/(1+be))*2]},Pe}function jr(){return Lt(ai).scale(124.75)}function ri(he,be){var Pe=H(8/(3*k));return[Pe*he*(1-n(be)/k),Pe*be]}ri.invert=function(he,be){var Pe=H(8/(3*k)),Oe=be/Pe;return[he/(Pe*(1-n(Oe)/k)),Oe]};function bi(){return t.geoProjection(ri).scale(165.664)}function nn(he,be){var Pe=H(4-3*x(n(be)));return[2/H(6*k)*he*Pe,v(be)*H(2*k/3)*(2-Pe)]}nn.invert=function(he,be){var Pe=2-n(be)/H(2*k/3);return[he*H(6*k)/(2*Pe),v(be)*q((4-Pe*Pe)/3)]};function Wi(){return t.geoProjection(nn).scale(165.664)}function Ni(he,be){var Pe=H(k*(4+k));return[2/Pe*he*(1+H(1-4*be*be/(k*k))),4/Pe*be]}Ni.invert=function(he,be){var Pe=H(k*(4+k))/2;return[he*Pe/(1+H(1-be*be*(4+k)/(4*k))),be*Pe/2]};function _n(){return t.geoProjection(Ni).scale(180.739)}function $i(he,be){var Pe=(2+A)*x(be);be/=2;for(var Oe=0,Je=1/0;Oe<10&&n(Je)>p;Oe++){var He=o(be);be-=Je=(be+x(be)*(He+2)-Pe)/(2*He*(1+He))}return[2/H(k*(4+k))*he*(1+o(be)),2*H(k/(4+k))*x(be)]}$i.invert=function(he,be){var Pe=be*H((4+k)/k)/2,Oe=q(Pe),Je=o(Oe);return[he/(2/H(k*(4+k))*(1+Je)),q((Oe+Pe*(Je+2))/(2+A))]};function zn(){return t.geoProjection($i).scale(180.739)}function Wn(he,be){return[he*(1+o(be))/H(2+k),2*be/H(2+k)]}Wn.invert=function(he,be){var Pe=H(2+k),Oe=be*Pe/2;return[Pe*he/(1+o(Oe)),Oe]};function It(){return t.geoProjection(Wn).scale(173.044)}function ft(he,be){for(var Pe=(1+A)*x(be),Oe=0,Je=1/0;Oe<10&&n(Je)>p;Oe++)be-=Je=(be+x(be)-Pe)/(1+o(be));return Pe=H(2+k),[he*(1+o(be))/Pe,2*be/Pe]}ft.invert=function(he,be){var Pe=1+A,Oe=H(Pe/2);return[he*2*Oe/(1+o(be*=Oe)),q((be+x(be))/Pe)]};function jt(){return t.geoProjection(ft).scale(173.044)}var Zt=3+2*C;function yr(he,be){var Pe=x(he/=2),Oe=o(he),Je=H(o(be)),He=o(be/=2),et=x(be)/(He+C*Oe*Je),Mt=H(2/(1+et*et)),Dt=H((C*He+(Oe+Pe)*Je)/(C*He+(Oe-Pe)*Je));return[Zt*(Mt*(Dt-1/Dt)-2*u(Dt)),Zt*(Mt*et*(Dt+1/Dt)-2*i(et))]}yr.invert=function(he,be){if(!(He=Te.invert(he/1.2,be*1.065)))return null;var Pe=He[0],Oe=He[1],Je=20,He;he/=Zt,be/=Zt;do{var et=Pe/2,Mt=Oe/2,Dt=x(et),Ut=o(et),tr=x(Mt),mr=o(Mt),Rr=o(Oe),zr=H(Rr),Xr=tr/(mr+C*Ut*zr),di=Xr*Xr,Li=H(2/(1+di)),Ci=C*mr+(Ut+Dt)*zr,Qi=C*mr+(Ut-Dt)*zr,Mn=Ci/Qi,pa=H(Mn),ea=pa-1/pa,Ga=pa+1/pa,To=Li*ea-2*u(pa)-he,Wa=Li*Xr*Ga-2*i(Xr)-be,co=tr&&_*zr*Dt*di/tr,Ro=(C*Ut*mr+zr)/(2*(mr+C*Ut*zr)*(mr+C*Ut*zr)*zr),Ds=-.5*Xr*Li*Li*Li,As=Ds*co,yo=Ds*Ro,po=(po=2*mr+C*zr*(Ut-Dt))*po*pa,_l=(C*Ut*mr*zr+Rr)/po,Hl=-(C*Dt*tr)/(zr*po),Zu=ea*As-2*_l/pa+Li*(_l+_l/Mn),cu=ea*yo-2*Hl/pa+Li*(Hl+Hl/Mn),el=Xr*Ga*As-2*co/(1+di)+Li*Ga*co+Li*Xr*(_l-_l/Mn),au=Xr*Ga*yo-2*Ro/(1+di)+Li*Ga*Ro+Li*Xr*(Hl-Hl/Mn),zc=cu*el-au*Zu;if(!zc)break;var zl=(Wa*cu-To*au)/zc,Fl=(To*el-Wa*Zu)/zc;Pe-=zl,Oe=c(-A,f(A,Oe-Fl))}while((n(zl)>p||n(Fl)>p)&&--Je>0);return n(n(Oe)-A)Oe){var mr=H(tr),Rr=a(Ut,Dt),zr=Pe*d(Rr/Pe),Xr=Rr-zr,di=he*o(Xr),Li=(he*x(Xr)-Xr*x(di))/(A-di),Ci=Fa(Xr,Li),Qi=(k-he)/Ra(Ci,di,k);Dt=mr;var Mn=50,pa;do Dt-=pa=(he+Ra(Ci,di,Dt)*Qi-mr)/(Ci(Dt)*Qi);while(n(pa)>p&&--Mn>0);Ut=Xr*x(Dt),DtOe){var Dt=H(Mt),Ut=a(et,He),tr=Pe*d(Ut/Pe),mr=Ut-tr;He=Dt*o(mr),et=Dt*x(mr);for(var Rr=He-A,zr=x(He),Xr=et/zr,di=Hep||n(Xr)>p)&&--di>0);return[mr,Rr]},Dt}var Sn=oa(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function Ha(){return t.geoProjection(Sn).scale(149.995)}var oo=oa(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function xn(){return t.geoProjection(oo).scale(153.93)}var _t=oa(5/6*k,-.62636,-.0344,0,1.3493,-.05524,0,.045);function br(){return t.geoProjection(_t).scale(130.945)}function Hr(he,be){var Pe=he*he,Oe=be*be;return[he*(1-.162388*Oe)*(.87-952426e-9*Pe*Pe),be*(1+Oe/12)]}Hr.invert=function(he,be){var Pe=he,Oe=be,Je=50,He;do{var et=Oe*Oe;Oe-=He=(Oe*(1+et/12)-be)/(1+et/4)}while(n(He)>p&&--Je>0);Je=50,he/=1-.162388*et;do{var Mt=(Mt=Pe*Pe)*Mt;Pe-=He=(Pe*(.87-952426e-9*Mt)-he)/(.87-.00476213*Mt)}while(n(He)>p&&--Je>0);return[Pe,Oe]};function ti(){return t.geoProjection(Hr).scale(131.747)}var zi=oa(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Yi(){return t.geoProjection(zi).scale(131.087)}function an(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=Oe>0?-.5:.5,et=he(Oe+He*k,Je);return et[0]-=He*be,et}return he.invert&&(Pe.invert=function(Oe,Je){var He=Oe>0?-.5:.5,et=he.invert(Oe+He*be,Je),Mt=et[0]-He*k;return Mt<-k?Mt+=2*k:Mt>k&&(Mt-=2*k),et[0]=Mt,et}),Pe}function hi(he,be){var Pe=v(he),Oe=v(be),Je=o(be),He=o(he)*Je,et=x(he)*Je,Mt=x(Oe*be);he=n(a(et,Mt)),be=q(He),n(he-A)>p&&(he%=A);var Dt=Ji(he>k/4?A-he:he,be);return he>k/4&&(Mt=Dt[0],Dt[0]=-Dt[1],Dt[1]=-Mt),Dt[0]*=Pe,Dt[1]*=-Oe,Dt}hi.invert=function(he,be){n(he)>1&&(he=v(he)*2-he),n(be)>1&&(be=v(be)*2-be);var Pe=v(he),Oe=v(be),Je=-Pe*he,He=-Oe*be,et=He/Je<1,Mt=ua(et?He:Je,et?Je:He),Dt=Mt[0],Ut=Mt[1],tr=o(Ut);return et&&(Dt=-A-Dt),[Pe*(a(x(Dt)*tr,-x(Ut))+k),Oe*q(o(Dt)*tr)]};function Ji(he,be){if(be===A)return[0,0];var Pe=x(be),Oe=Pe*Pe,Je=Oe*Oe,He=1+Je,et=1+3*Je,Mt=1-Je,Dt=q(1/H(He)),Ut=Mt+Oe*He*Dt,tr=(1-Pe)/Ut,mr=H(tr),Rr=tr*He,zr=H(Rr),Xr=mr*Mt,di,Li;if(he===0)return[0,-(Xr+Oe*zr)];var Ci=o(be),Qi=1/Ci,Mn=2*Pe*Ci,pa=(-3*Oe+Dt*et)*Mn,ea=(-Ut*Ci-(1-Pe)*pa)/(Ut*Ut),Ga=.5*ea/mr,To=Mt*Ga-2*Oe*mr*Mn,Wa=Oe*He*ea+tr*et*Mn,co=-Qi*Mn,Ro=-Qi*Wa,Ds=-2*Qi*To,As=4*he/k,yo;if(he>.222*k||be.175*k){if(di=(Xr+Oe*H(Rr*(1+Je)-Xr*Xr))/(1+Je),he>k/4)return[di,di];var po=di,_l=.5*di;di=.5*(_l+po),Li=50;do{var Hl=H(Rr-di*di),Zu=di*(Ds+co*Hl)+Ro*q(di/zr)-As;if(!Zu)break;Zu<0?_l=di:po=di,di=.5*(_l+po)}while(n(po-_l)>p&&--Li>0)}else{di=p,Li=25;do{var cu=di*di,el=H(Rr-cu),au=Ds+co*el,zc=di*au+Ro*q(di/zr)-As,zl=au+(Ro-co*cu)/el;di-=yo=el?zc/zl:0}while(n(yo)>p&&--Li>0)}return[di,-Xr-Oe*H(Rr-di*di)]}function ua(he,be){for(var Pe=0,Oe=1,Je=.5,He=50;;){var et=Je*Je,Mt=H(Je),Dt=q(1/H(1+et)),Ut=1-et+Je*(1+et)*Dt,tr=(1-Mt)/Ut,mr=H(tr),Rr=tr*(1+et),zr=mr*(1-et),Xr=Rr-he*he,di=H(Xr),Li=be+zr+Je*di;if(n(Oe-Pe)0?Pe=Je:Oe=Je,Je=.5*(Pe+Oe)}if(!He)return null;var Ci=q(Mt),Qi=o(Ci),Mn=1/Qi,pa=2*Mt*Qi,ea=(-3*Je+Dt*(1+3*et))*pa,Ga=(-Ut*Qi-(1-Mt)*ea)/(Ut*Ut),To=.5*Ga/mr,Wa=(1-et)*To-2*Je*mr*pa,co=-2*Mn*Wa,Ro=-Mn*pa,Ds=-Mn*(Je*(1+et)*Ga+tr*(1+3*et)*pa);return[k/4*(he*(co+Ro*di)+Ds*q(he/H(Rr))),Ci]}function Fn(){return t.geoProjection(an(hi)).scale(239.75)}function Sa(he,be,Pe){var Oe,Je,He;return he?(Oe=go(he,Pe),be?(Je=go(be,1-Pe),He=Je[1]*Je[1]+Pe*Oe[0]*Oe[0]*Je[0]*Je[0],[[Oe[0]*Je[2]/He,Oe[1]*Oe[2]*Je[0]*Je[1]/He],[Oe[1]*Je[1]/He,-Oe[0]*Oe[2]*Je[0]*Je[2]/He],[Oe[2]*Je[1]*Je[2]/He,-Pe*Oe[0]*Oe[1]*Je[0]/He]]):[[Oe[0],0],[Oe[1],0],[Oe[2],0]]):(Je=go(be,1-Pe),[[0,Je[0]/Je[1]],[1/Je[1],0],[Je[2]/Je[1],0]])}function go(he,be){var Pe,Oe,Je,He,et;if(be=1-p)return Pe=(1-be)/4,Oe=N(he),He=X(he),Je=1/Oe,et=Oe*G(he),[He+Pe*(et-he)/(Oe*Oe),Je-Pe*He*Je*(et-he),Je+Pe*He*Je*(et+he),2*i(s(he))-A+Pe*(et-he)/Oe];var Mt=[1,0,0,0,0,0,0,0,0],Dt=[H(be),0,0,0,0,0,0,0,0],Ut=0;for(Oe=H(1-be),et=1;n(Dt[Ut]/Mt[Ut])>p&&Ut<8;)Pe=Mt[Ut++],Dt[Ut]=(Pe-Oe)/2,Mt[Ut]=(Pe+Oe)/2,Oe=H(Pe*Oe),et*=2;Je=et*Mt[Ut]*he;do He=Dt[Ut]*x(Oe=Je)/Mt[Ut],Je=(q(He)+Je)/2;while(--Ut);return[x(Je),He=o(Je),He/o(Je-Oe),Je]}function Oo(he,be,Pe){var Oe=n(he),Je=n(be),He=G(Je);if(Oe){var et=1/x(Oe),Mt=1/(b(Oe)*b(Oe)),Dt=-(Mt+Pe*(He*He*et*et)-1+Pe),Ut=(Pe-1)*Mt,tr=(-Dt+H(Dt*Dt-4*Ut))/2;return[ho(i(1/H(tr)),Pe)*v(he),ho(i(H((tr/Mt-1)/Pe)),1-Pe)*v(be)]}return[0,ho(i(He),1-Pe)*v(be)]}function ho(he,be){if(!be)return he;if(be===1)return u(b(he/2+L));for(var Pe=1,Oe=H(1-be),Je=H(be),He=0;n(Je)>p;He++){if(he%k){var et=i(Oe*b(he)/Pe);et<0&&(et+=k),he+=et+~~(he/k)*k}else he+=he;Je=(Pe+Oe)/2,Oe=H(Pe*Oe),Je=((Pe=Je)-Oe)/2}return he/(h(2,He)*Pe)}function Mo(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=u(b(k/4+n(be)/2)),Mt=s(He*et)/H(Pe),Dt=xo(Mt*o(He*he),Mt*x(He*he)),Ut=Oo(Dt[0],Dt[1],Oe*Oe);return[-Ut[1],(be>=0?1:-1)*(.5*Je-Ut[0])]}function xo(he,be){var Pe=he*he,Oe=be+1,Je=1-Pe-be*be;return[.5*((he>=0?A:-A)-a(Je,2*he)),-.25*u(Je*Je+4*Pe)+.5*u(Oe*Oe+Pe)]}function zs(he,be){var Pe=be[0]*be[0]+be[1]*be[1];return[(he[0]*be[0]+he[1]*be[1])/Pe,(he[1]*be[0]-he[0]*be[1])/Pe]}Mo.invert=function(he,be){var Pe=(C-1)/(C+1),Oe=H(1-Pe*Pe),Je=ho(A,Oe*Oe),He=-1,et=Sa(.5*Je-be,-he,Oe*Oe),Mt=zs(et[0],et[1]),Dt=a(Mt[1],Mt[0])/He;return[Dt,2*i(s(.5/He*u(Pe*Mt[0]*Mt[0]+Pe*Mt[1]*Mt[1])))-A]};function ks(){return t.geoProjection(an(Mo)).scale(151.496)}function Zs(he){var be=x(he),Pe=o(he),Oe=Xs(he);Oe.invert=Xs(-he);function Je(He,et){var Mt=Oe(He,et);He=Mt[0],et=Mt[1];var Dt=x(et),Ut=o(et),tr=o(He),mr=V(be*Dt+Pe*Ut*tr),Rr=x(mr),zr=n(Rr)>p?mr/Rr:1;return[zr*Pe*x(He),(n(He)>A?zr:-zr)*(be*Ut-Pe*Dt*tr)]}return Je.invert=function(He,et){var Mt=H(He*He+et*et),Dt=-x(Mt),Ut=o(Mt),tr=Mt*Ut,mr=-et*Dt,Rr=Mt*be,zr=H(tr*tr+mr*mr-Rr*Rr),Xr=a(tr*Rr+mr*zr,mr*Rr-tr*zr),di=(Mt>A?-1:1)*a(He*Dt,Mt*o(Xr)*Ut+et*x(Xr)*Dt);return Oe.invert(di,Xr)},Je}function Xs(he){var be=x(he),Pe=o(he);return function(Oe,Je){var He=o(Je),et=o(Oe)*He,Mt=x(Oe)*He,Dt=x(Je);return[a(Mt,et*Pe-Dt*be),q(Dt*Pe+et*be)]}}function wl(){var he=0,be=t.geoProjectionMutator(Zs),Pe=be(he),Oe=Pe.rotate,Je=Pe.stream,He=t.geoCircle();return Pe.parallel=function(et){if(!arguments.length)return he*P;var Mt=Pe.rotate();return be(he=et*T).rotate(Mt)},Pe.rotate=function(et){return arguments.length?(Oe.call(Pe,[et[0],et[1]-he*P]),He.center([-et[0],-et[1]]),Pe):(et=Oe.call(Pe),et[1]+=he*P,et)},Pe.stream=function(et){return et=Je(et),et.sphere=function(){et.polygonStart();var Mt=.01,Dt=He.radius(90-Mt)().coordinates[0],Ut=Dt.length-1,tr=-1,mr;for(et.lineStart();++tr=0;)et.point((mr=Dt[tr])[0],mr[1]);et.lineEnd(),et.polygonEnd()},et},Pe.scale(79.4187).parallel(45).clipAngle(180-.001)}var os=3,cl=q(1-1/os)*P,Cs=ar(0);function ml(he){var be=cl*T,Pe=ht(k,be)[0]-ht(-k,be)[0],Oe=Cs(0,be)[1],Je=ht(0,be)[1],He=M-Je,et=g/he,Mt=4/g,Dt=Oe+He*He*4/g;function Ut(tr,mr){var Rr,zr=n(mr);if(zr>be){var Xr=f(he-1,c(0,l((tr+k)/et)));tr+=k*(he-1)/he-Xr*et,Rr=ht(tr,zr),Rr[0]=Rr[0]*g/Pe-g*(he-1)/(2*he)+Xr*g/he,Rr[1]=Oe+(Rr[1]-Je)*4*He/g,mr<0&&(Rr[1]=-Rr[1])}else Rr=Cs(tr,mr);return Rr[0]*=Mt,Rr[1]/=Dt,Rr}return Ut.invert=function(tr,mr){tr/=Mt,mr*=Dt;var Rr=n(mr);if(Rr>Oe){var zr=f(he-1,c(0,l((tr+k)/et)));tr=(tr+k*(he-1)/he-zr*et)*Pe/g;var Xr=ht.invert(tr,.25*(Rr-Oe)*g/He+Je);return Xr[0]-=k*(he-1)/he-zr*et,mr<0&&(Xr[1]=-Xr[1]),Xr}return Cs.invert(tr,mr)},Ut}function Ys(he,be){return[he,be&1?90-p:cl]}function Hs(he,be){return[he,be&1?-90+p:-cl]}function Eo(he){return[he[0]*(1-p),he[1]]}function fs(he){var be=[].concat(r.range(-180,180+he/2,he).map(Ys),r.range(180,-180-he/2,-he).map(Hs));return{type:"Polygon",coordinates:[he===180?be.map(Eo):be]}}function Ql(){var he=4,be=t.geoProjectionMutator(ml),Pe=be(he),Oe=Pe.stream;return Pe.lobes=function(Je){return arguments.length?be(he=+Je):he},Pe.stream=function(Je){var He=Pe.rotate(),et=Oe(Je),Mt=(Pe.rotate([0,0]),Oe(Je));return Pe.rotate(He),et.sphere=function(){t.geoStream(fs(180/he),Mt)},et},Pe.scale(239.75)}function Hu(he){var be=1+he,Pe=x(1/be),Oe=q(Pe),Je=2*H(k/(He=k+4*Oe*be)),He,et=.5*Je*(be+H(he*(2+he))),Mt=he*he,Dt=be*be;function Ut(tr,mr){var Rr=1-x(mr),zr,Xr;if(Rr&&Rr<2){var di=A-mr,Li=25,Ci;do{var Qi=x(di),Mn=o(di),pa=Oe+a(Qi,be-Mn),ea=1+Dt-2*be*Mn;di-=Ci=(di-Mt*Oe-be*Qi+ea*pa-.5*Rr*He)/(2*be*Qi*pa)}while(n(Ci)>E&&--Li>0);zr=Je*H(ea),Xr=tr*pa/k}else zr=Je*(he+Rr),Xr=tr*Oe/k;return[zr*x(Xr),et-zr*o(Xr)]}return Ut.invert=function(tr,mr){var Rr=tr*tr+(mr-=et)*mr,zr=(1+Dt-Rr/(Je*Je))/(2*be),Xr=V(zr),di=x(Xr),Li=Oe+a(di,be-zr);return[q(tr/H(Rr))*k/Li,q(1-2*(Xr-Mt*Oe-be*di+(1+Dt-2*be*zr)*Li)/He)]},Ut}function fc(){var he=1,be=t.geoProjectionMutator(Hu),Pe=be(he);return Pe.ratio=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(167.774).center([0,18.67])}var ms=.7109889596207567,on=.0528035274542;function fa(he,be){return be>-ms?(he=Yt(he,be),he[1]+=on,he):St(he,be)}fa.invert=function(he,be){return be>-ms?Yt.invert(he,be-on):St.invert(he,be)};function Qu(){return t.geoProjection(fa).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function Rl(he,be){return n(be)>ms?(he=Yt(he,be),he[1]-=be>0?on:-on,he):St(he,be)}Rl.invert=function(he,be){return n(be)>ms?Yt.invert(he,be+(be>0?on:-on)):St.invert(he,be)};function vo(){return t.geoProjection(Rl).scale(152.63)}function Zl(he,be,Pe,Oe){var Je=H(4*k/(2*Pe+(1+he-be/2)*x(2*Pe)+(he+be)/2*x(4*Pe)+be/2*x(6*Pe))),He=H(Oe*x(Pe)*H((1+he*o(2*Pe)+be*o(4*Pe))/(1+he+be))),et=Pe*Dt(1);function Mt(mr){return H(1+he*o(2*mr)+be*o(4*mr))}function Dt(mr){var Rr=mr*Pe;return(2*Rr+(1+he-be/2)*x(2*Rr)+(he+be)/2*x(4*Rr)+be/2*x(6*Rr))/Pe}function Ut(mr){return Mt(mr)*x(mr)}var tr=function(mr,Rr){var zr=Pe*qt(Dt,et*x(Rr)/Pe,Rr/k);isNaN(zr)&&(zr=Pe*v(Rr));var Xr=Je*Mt(zr);return[Xr*He*mr/k*o(zr),Xr/He*x(zr)]};return tr.invert=function(mr,Rr){var zr=qt(Ut,Rr*He/Je);return[mr*k/(o(zr)*Je*He*Mt(zr)),q(Pe*Dt(zr/Pe)/et)]},Pe===0&&(Je=H(Oe/k),tr=function(mr,Rr){return[mr*Je,x(Rr)/Je]},tr.invert=function(mr,Rr){return[mr/Je,q(Rr*Je)]}),tr}function Ks(){var he=1,be=0,Pe=45*T,Oe=2,Je=t.geoProjectionMutator(Zl),He=Je(he,be,Pe,Oe);return He.a=function(et){return arguments.length?Je(he=+et,be,Pe,Oe):he},He.b=function(et){return arguments.length?Je(he,be=+et,Pe,Oe):be},He.psiMax=function(et){return arguments.length?Je(he,be,Pe=+et*T,Oe):Pe*P},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(180.739)}function Xl(he,be,Pe,Oe,Je,He,et,Mt,Dt,Ut,tr){if(tr.nanEncountered)return NaN;var mr,Rr,zr,Xr,di,Li,Ci,Qi,Mn,pa;if(mr=Pe-be,Rr=he(be+mr*.25),zr=he(Pe-mr*.25),isNaN(Rr)){tr.nanEncountered=!0;return}if(isNaN(zr)){tr.nanEncountered=!0;return}return Xr=mr*(Oe+4*Rr+Je)/12,di=mr*(Je+4*zr+He)/12,Li=Xr+di,pa=(Li-et)/15,Ut>Dt?(tr.maxDepthCount++,Li+pa):Math.abs(pa)>1;do Dt[Li]>zr?di=Li:Xr=Li,Li=Xr+di>>1;while(Li>Xr);var Ci=Dt[Li+1]-Dt[Li];return Ci&&(Ci=(zr-Dt[Li+1])/Ci),(Li+1+Ci)/et}var mr=2*tr(1)/k*He/Pe,Rr=function(zr,Xr){var di=tr(n(x(Xr))),Li=Oe(di)*zr;return di/=mr,[Li,Xr>=0?di:-di]};return Rr.invert=function(zr,Xr){var di;return Xr*=mr,n(Xr)<1&&(di=v(Xr)*q(Je(n(Xr))*He)),[zr/Oe(n(Xr)),di]},Rr}function ko(){var he=0,be=2.5,Pe=1.183136,Oe=t.geoProjectionMutator(Zn),Je=Oe(he,be,Pe);return Je.alpha=function(He){return arguments.length?Oe(he=+He,be,Pe):he},Je.k=function(He){return arguments.length?Oe(he,be=+He,Pe):be},Je.gamma=function(He){return arguments.length?Oe(he,be,Pe=+He):Pe},Je.scale(152.63)}function Co(he,be){return n(he[0]-be[0])=0;--Dt)Pe=he[1][Dt],Oe=Pe[0][0],Je=Pe[0][1],He=Pe[1][1],et=Pe[2][0],Mt=Pe[2][1],be.push(Tl([[et-p,Mt-p],[et-p,He+p],[Oe+p,He+p],[Oe+p,Je-p]],30));return{type:"Polygon",coordinates:[r.merge(be)]}}function So(he,be,Pe){var Oe,Je;function He(Dt,Ut){for(var tr=Ut<0?-1:1,mr=be[+(Ut<0)],Rr=0,zr=mr.length-1;Rrmr[Rr][2][0];++Rr);var Xr=he(Dt-mr[Rr][1][0],Ut);return Xr[0]+=he(mr[Rr][1][0],tr*Ut>tr*mr[Rr][0][1]?mr[Rr][0][1]:Ut)[0],Xr}Pe?He.invert=Pe(He):he.invert&&(He.invert=function(Dt,Ut){for(var tr=Je[+(Ut<0)],mr=be[+(Ut<0)],Rr=0,zr=tr.length;RrXr&&(di=zr,zr=Xr,Xr=di),[[mr,zr],[Rr,Xr]]})}),et):be.map(function(Ut){return Ut.map(function(tr){return[[tr[0][0]*P,tr[0][1]*P],[tr[1][0]*P,tr[1][1]*P],[tr[2][0]*P,tr[2][1]*P]]})})},be!=null&&et.lobes(be),et}var cf=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function rh(){return So(xt,cf).scale(160.857)}var Al=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Hc(){return So(Rl,Al).scale(152.63)}var eu=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Ls(){return So(Yt,eu).scale(169.529)}var mu=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function kc(){return So(Yt,mu).scale(169.529).rotate([20,0])}var Of=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function Gc(){return So(fa,Of,rt).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var vd=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function Bf(){return So(St,vd).scale(152.63).rotate([-20,0])}function ss(he,be){return[3/g*he*H(k*k/3-be*be),be]}ss.invert=function(he,be){return[g/3*he/H(k*k/3-be*be),be]};function ff(){return t.geoProjection(ss).scale(158.837)}function ih(he){function be(Pe,Oe){if(n(n(Oe)-A)2)return null;Pe/=2,Oe/=2;var He=Pe*Pe,et=Oe*Oe,Mt=2*Oe/(1+He+et);return Mt=h((1+Mt)/(1-Mt),1/he),[a(2*Pe,1-He-et)/he,q((Mt-1)/(Mt+1))]},be}function Vl(){var he=.5,be=t.geoProjectionMutator(ih),Pe=be(he);return Pe.spacing=function(Oe){return arguments.length?be(he=+Oe):he},Pe.scale(124.75)}var Js=k/C;function hc(he,be){return[he*(1+H(o(be)))/2,be/(o(be/2)*o(he/6))]}hc.invert=function(he,be){var Pe=n(he),Oe=n(be),Je=p,He=A;Oep||n(Li)>p)&&--Je>0);return Je&&[Pe,Oe]};function $s(){return t.geoProjection(ws).scale(139.98)}function hs(he,be){return[x(he)/o(be),b(be)*o(he)]}hs.invert=function(he,be){var Pe=he*he,Oe=be*be,Je=Oe+1,He=Pe+Je,et=he?_*H((He-H(He*He-4*Pe))/Pe):1/H(Je);return[q(he*et),v(be)*V(et)]};function Ms(){return t.geoProjection(hs).scale(144.049).clipAngle(90-.001)}function dc(he){var be=o(he),Pe=b(L+he/2);function Oe(Je,He){var et=He-he,Mt=n(et)=0;)tr=he[Ut],mr=tr[0]+Mt*(zr=mr)-Dt*Rr,Rr=tr[1]+Mt*Rr+Dt*zr;return mr=Mt*(zr=mr)-Dt*Rr,Rr=Mt*Rr+Dt*zr,[mr,Rr]}return Pe.invert=function(Oe,Je){var He=20,et=Oe,Mt=Je;do{for(var Dt=be,Ut=he[Dt],tr=Ut[0],mr=Ut[1],Rr=0,zr=0,Xr;--Dt>=0;)Ut=he[Dt],Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=Ut[0]+et*(Xr=tr)-Mt*mr,mr=Ut[1]+et*mr+Mt*Xr;Rr=tr+et*(Xr=Rr)-Mt*zr,zr=mr+et*zr+Mt*Xr,tr=et*(Xr=tr)-Mt*mr-Oe,mr=et*mr+Mt*Xr-Je;var di=Rr*Rr+zr*zr,Li,Ci;et-=Li=(tr*Rr+mr*zr)/di,Mt-=Ci=(mr*Rr-tr*zr)/di}while(n(Li)+n(Ci)>p*p&&--He>0);if(He){var Qi=H(et*et+Mt*Mt),Mn=2*i(Qi*.5),pa=x(Mn);return[a(et*pa,Qi*o(Mn)),Qi?q(Mt*pa/Qi):0]}},Pe}var wo=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Od=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],$o=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],Ja=[[.9245,0],[0,0],[.01943,0]],Ef=[[.721316,0],[0,0],[-.00881625,-.00617325]];function tc(){return Ml(wo,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function uu(){return Ml(Od,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Mh(){return Ml($o,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function jc(){return Ml(Ja,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function kf(){return Ml(Ef,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Ml(he,be){var Pe=t.geoProjection(ov(he)).rotate(be).clipAngle(90),Oe=t.geoRotation(be),Je=Pe.center;return delete Pe.rotate,Pe.center=function(He){return arguments.length?Je(Oe(He)):Oe.invert(Je())},Pe}var Yh=H(6),Eh=H(7);function nh(he,be){var Pe=q(7*x(be)/(3*Yh));return[Yh*he*(2*o(2*Pe/3)-1)/Eh,9*x(Pe/3)/Eh]}nh.invert=function(he,be){var Pe=3*q(be*Eh/9);return[he*Eh/(Yh*(2*o(2*Pe/3)-1)),q(x(Pe)*3*Yh/7)]};function hf(){return t.geoProjection(nh).scale(164.859)}function kh(he,be){for(var Pe=(1+_)*x(be),Oe=be,Je=0,He;Je<25&&(Oe-=He=(x(Oe/2)+x(Oe)-Pe)/(.5*o(Oe/2)+o(Oe)),!(n(He)E&&--Oe>0);return He=Pe*Pe,et=He*He,Mt=He*et,[he/(.84719-.13063*He+Mt*Mt*(-.04515+.05494*He-.02326*et+.00331*Mt)),Pe]};function df(){return t.geoProjection(Wc).scale(175.295)}function Cu(he,be){return[he*(1+o(be))/2,2*(be-b(be/2))]}Cu.invert=function(he,be){for(var Pe=be/2,Oe=0,Je=1/0;Oe<10&&n(Je)>p;++Oe){var He=o(be/2);be-=Je=(be-b(be/2)-Pe)/(1-.5/(He*He))}return[2*he/(1+o(be)),be]};function Nf(){return t.geoProjection(Cu).scale(152.63)}var Zc=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function ds(){return So(Ge(1/0),Zc).rotate([20,0]).scale(152.63)}function Ch(he,be){var Pe=x(be),Oe=o(be),Je=v(he);if(he===0||n(be)===A)return[0,be];if(be===0)return[he,0];if(n(he)===A)return[he*Oe,A*Pe];var He=k/(2*he)-2*he/k,et=2*be/k,Mt=(1-et*et)/(Pe-et),Dt=He*He,Ut=Mt*Mt,tr=1+Dt/Ut,mr=1+Ut/Dt,Rr=(He*Pe/Mt-He/2)/tr,zr=(Ut*Pe/Dt+Mt/2)/mr,Xr=Rr*Rr+Oe*Oe/tr,di=zr*zr-(Ut*Pe*Pe/Dt+Mt*Pe-1)/mr;return[A*(Rr+H(Xr)*Je),A*(zr+H(di<0?0:di)*v(-be*He)*Je)]}Ch.invert=function(he,be){he/=A,be/=A;var Pe=he*he,Oe=be*be,Je=Pe+Oe,He=k*k;return[he?(Je-1+H((1-Je)*(1-Je)+4*Pe))/(2*he)*A:0,qt(function(et){return Je*(k*x(et)-2*et)*k+4*et*et*(be-x(et))+2*k*et-He*be},0)]};function Bd(){return t.geoProjection(Ch).scale(127.267)}var Jh=1.0148,Cf=.23185,pd=-.14499,Lu=.02406,$h=Jh,tu=5*Cf,Pu=7*pd,Lc=9*Lu,fl=1.790857183;function Xc(he,be){var Pe=be*be;return[he,be*(Jh+Pe*Pe*(Cf+Pe*(pd+Lu*Pe)))]}Xc.invert=function(he,be){be>fl?be=fl:be<-fl&&(be=-fl);var Pe=be,Oe;do{var Je=Pe*Pe;Pe-=Oe=(Pe*(Jh+Je*Je*(Cf+Je*(pd+Lu*Je)))-be)/($h+Je*Je*(tu+Je*(Pu+Lc*Je)))}while(n(Oe)>p);return[he,Pe]};function ic(){return t.geoProjection(Xc).scale(139.319)}function yu(he,be){if(n(be)p&&--Je>0);return et=b(Oe),[(n(be)=0;)if(Oe=be[Mt],Pe[0]===Oe[0]&&Pe[1]===Oe[1]){if(He)return[He,Pe];He=Pe}}}function ru(he){for(var be=he.length,Pe=[],Oe=he[be-1],Je=0;Je0?[-Oe[0],0]:[180-Oe[0],180])};var be=sh.map(function(Pe){return{face:Pe,project:he(Pe)}});return[-1,0,0,1,0,1,4,5].forEach(function(Pe,Oe){var Je=be[Pe];Je&&(Je.children||(Je.children=[])).push(be[Oe])}),Lf(be[0],function(Pe,Oe){return be[Pe<-k/2?Oe<0?6:4:Pe<0?Oe<0?2:0:PeOe^zr>Oe&&Pe<(Rr-Ut)*(Oe-tr)/(zr-tr)+Ut&&(Je=!Je)}return Je}function Dl(he,be){var Pe=be.stream,Oe;if(!Pe)throw new Error("invalid projection");switch(he&&he.type){case"Feature":Oe=Wu;break;case"FeatureCollection":Oe=Ih;break;default:Oe=gc;break}return Oe(he,Pe)}function Ih(he,be){return{type:"FeatureCollection",features:he.features.map(function(Pe){return Wu(Pe,be)})}}function Wu(he,be){return{type:"Feature",id:he.id,properties:he.properties,geometry:gc(he.geometry,be)}}function Rc(he,be){return{type:"GeometryCollection",geometries:he.geometries.map(function(Pe){return gc(Pe,be)})}}function gc(he,be){if(!he)return null;if(he.type==="GeometryCollection")return Rc(he,be);var Pe;switch(he.type){case"Point":Pe=mc;break;case"MultiPoint":Pe=mc;break;case"LineString":Pe=Yc;break;case"MultiLineString":Pe=Yc;break;case"Polygon":Pe=nc;break;case"MultiPolygon":Pe=nc;break;case"Sphere":Pe=nc;break;default:return null}return t.geoStream(he,be(Pe)),Pe.result()}var hl=[],iu=[],mc={point:function(he,be){hl.push([he,be])},result:function(){var he=hl.length?hl.length<2?{type:"Point",coordinates:hl[0]}:{type:"MultiPoint",coordinates:hl}:null;return hl=[],he}},Yc={lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){hl.length&&(iu.push(hl),hl=[])},result:function(){var he=iu.length?iu.length<2?{type:"LineString",coordinates:iu[0]}:{type:"MultiLineString",coordinates:iu}:null;return iu=[],he}},nc={polygonStart:pc,lineStart:pc,point:function(he,be){hl.push([he,be])},lineEnd:function(){var he=hl.length;if(he){do hl.push(hl[0].slice());while(++he<4);iu.push(hl),hl=[]}},polygonEnd:pc,result:function(){if(!iu.length)return null;var he=[],be=[];return iu.forEach(function(Pe){pf(Pe)?he.push([Pe]):be.push(Pe)}),be.forEach(function(Pe){var Oe=Pe[0];he.some(function(Je){if(Ph(Je[0],Oe))return Je.push(Pe),!0})||he.push([Pe])}),iu=[],he.length?he.length>1?{type:"MultiPolygon",coordinates:he}:{type:"Polygon",coordinates:he[0]}:null}};function gf(he){var be=he(A,0)[0]-he(-A,0)[0];function Pe(Oe,Je){var He=n(Oe)0?Oe-k:Oe+k,Je),Mt=(et[0]-et[1])*_,Dt=(et[0]+et[1])*_;if(He)return[Mt,Dt];var Ut=be*_,tr=Mt>0^Dt>0?-1:1;return[tr*Mt-v(Dt)*Ut,tr*Dt-v(Mt)*Ut]}return he.invert&&(Pe.invert=function(Oe,Je){var He=(Oe+Je)*_,et=(Je-Oe)*_,Mt=n(He)<.5*be&&n(et)<.5*be;if(!Mt){var Dt=be*_,Ut=He>0^et>0?-1:1,tr=-Ut*Oe+(et>0?1:-1)*Dt,mr=-Ut*Je+(He>0?1:-1)*Dt;He=(-tr-mr)*_,et=(tr-mr)*_}var Rr=he.invert(He,et);return Mt||(Rr[0]+=He>0?k:-k),Rr}),t.geoProjection(Pe).rotate([-90,-90,45]).clipAngle(180-.001)}function gt(){return gf(hi).scale(176.423)}function Bt(){return gf(Mo).scale(111.48)}function wr(he,be){if(!(0<=(be=+be)&&be<=20))throw new Error("invalid digits");function Pe(Ut){var tr=Ut.length,mr=2,Rr=new Array(tr);for(Rr[0]=+Ut[0].toFixed(be),Rr[1]=+Ut[1].toFixed(be);mr2||zr[0]!=tr[0]||zr[1]!=tr[1])&&(mr.push(zr),tr=zr)}return mr.length===1&&Ut.length>1&&mr.push(Pe(Ut[Ut.length-1])),mr}function He(Ut){return Ut.map(Je)}function et(Ut){if(Ut==null)return Ut;var tr;switch(Ut.type){case"GeometryCollection":tr={type:"GeometryCollection",geometries:Ut.geometries.map(et)};break;case"Point":tr={type:"Point",coordinates:Pe(Ut.coordinates)};break;case"MultiPoint":tr={type:Ut.type,coordinates:Oe(Ut.coordinates)};break;case"LineString":tr={type:Ut.type,coordinates:Je(Ut.coordinates)};break;case"MultiLineString":case"Polygon":tr={type:Ut.type,coordinates:He(Ut.coordinates)};break;case"MultiPolygon":tr={type:"MultiPolygon",coordinates:Ut.coordinates.map(He)};break;default:return Ut}return Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}function Mt(Ut){var tr={type:"Feature",properties:Ut.properties,geometry:et(Ut.geometry)};return Ut.id!=null&&(tr.id=Ut.id),Ut.bbox!=null&&(tr.bbox=Ut.bbox),tr}if(he!=null)switch(he.type){case"Feature":return Mt(he);case"FeatureCollection":{var Dt={type:"FeatureCollection",features:he.features.map(Mt)};return he.bbox!=null&&(Dt.bbox=he.bbox),Dt}default:return et(he)}return he}function vr(he){var be=x(he);function Pe(Oe,Je){var He=be?b(Oe*be/2)/be:Oe/2;if(!Je)return[2*He,-he];var et=2*i(He*x(Je)),Mt=1/b(Je);return[x(et)*Mt,Je+(1-o(et))*Mt-he]}return Pe.invert=function(Oe,Je){if(n(Je+=he)p&&--Mt>0);var Rr=Oe*(Ut=b(et)),zr=b(n(Je)0?A:-A)*(Dt+Je*(tr-et)/2+Je*Je*(tr-2*Dt+et)/2)]}xi.invert=function(he,be){var Pe=be/A,Oe=Pe*90,Je=f(18,n(Oe/5)),He=c(0,l(Je));do{var et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Ut=Dt-et,tr=Dt-2*Mt+et,mr=2*(n(Pe)-Mt)/Ut,Rr=tr/Ut,zr=mr*(1-Rr*mr*(1-2*Rr*mr));if(zr>=0||He===1){Oe=(be>=0?5:-5)*(zr+Je);var Xr=50,di;do Je=f(18,n(Oe)/5),He=l(Je),zr=Je-He,et=fi[He][1],Mt=fi[He+1][1],Dt=fi[f(19,He+2)][1],Oe-=(di=(be>=0?A:-A)*(Mt+zr*(Dt-et)/2+zr*zr*(Dt-2*Mt+et)/2)-be)*P;while(n(di)>E&&--Xr>0);break}}while(--He>=0);var Li=fi[He][0],Ci=fi[He+1][0],Qi=fi[f(19,He+2)][0];return[he/(Ci+zr*(Qi-Li)/2+zr*zr*(Qi-2*Ci+Li)/2),Oe*T]};function Fi(){return t.geoProjection(xi).scale(152.63)}function Xi(he){function be(Pe,Oe){var Je=o(Oe),He=(he-1)/(he-Je*o(Pe));return[He*Je*x(Pe),He*x(Oe)]}return be.invert=function(Pe,Oe){var Je=Pe*Pe+Oe*Oe,He=H(Je),et=(he-H(1-Je*(he+1)/(he-1)))/((he-1)/He+He/(he-1));return[a(Pe*et,He*H(1-et*et)),He?q(Oe*et/He):0]},be}function hn(he,be){var Pe=Xi(he);if(!be)return Pe;var Oe=o(be),Je=x(be);function He(et,Mt){var Dt=Pe(et,Mt),Ut=Dt[1],tr=Ut*Je/(he-1)+Oe;return[Dt[0]*Oe/tr,Ut/tr]}return He.invert=function(et,Mt){var Dt=(he-1)/(he-1-Mt*Je);return Pe.invert(Dt*et,Dt*Mt*Oe)},He}function Ti(){var he=2,be=0,Pe=t.geoProjectionMutator(hn),Oe=Pe(he,be);return Oe.distance=function(Je){return arguments.length?Pe(he=+Je,be):he},Oe.tilt=function(Je){return arguments.length?Pe(he,be=Je*T):be*P},Oe.scale(432.147).clipAngle(V(1/he)*P-1e-6)}var qi=1e-4,Ii=1e4,mi=-180,Pn=mi+qi,Ma=180,Ta=Ma-qi,Ea=-90,qa=Ea+qi,Cn=90,sn=Cn-qi;function Ua(he){return he.length>0}function mo(he){return Math.floor(he*Ii)/Ii}function Xo(he){return he===Ea||he===Cn?[0,he]:[mi,mo(he)]}function Ts(he){var be=he[0],Pe=he[1],Oe=!1;return be<=Pn?(be=mi,Oe=!0):be>=Ta&&(be=Ma,Oe=!0),Pe<=qa?(Pe=Ea,Oe=!0):Pe>=sn&&(Pe=Cn,Oe=!0),Oe?[be,Pe]:he}function Qo(he){return he.map(Ts)}function ys(he,be,Pe){for(var Oe=0,Je=he.length;Oe=Ta||tr<=qa||tr>=sn){He[et]=Ts(Dt);for(var mr=et+1;mrPn&&zrqa&&Xr=Mt)break;Pe.push({index:-1,polygon:be,ring:He=He.slice(mr-1)}),He[0]=Xo(He[0][1]),et=-1,Mt=He.length}}}}function Bo(he){var be,Pe=he.length,Oe={},Je={},He,et,Mt,Dt,Ut;for(be=0;be0?k-Mt:Mt)*P],Ut=t.geoProjection(he(et)).rotate(Dt),tr=t.geoRotation(Dt),mr=Ut.center;return delete Ut.rotate,Ut.center=function(Rr){return arguments.length?mr(tr(Rr)):tr.invert(mr())},Ut.clipAngle(90)}function Ko(he){var be=o(he);function Pe(Oe,Je){var He=t.geoGnomonicRaw(Oe,Je);return He[0]*=be,He}return Pe.invert=function(Oe,Je){return t.geoGnomonicRaw.invert(Oe/be,Je)},Pe}function nu(){return Ru([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Ru(he,be){return vs(Ko,he,be)}function ac(he){if(!(he*=2))return t.geoAzimuthalEquidistantRaw;var be=-he/2,Pe=-be,Oe=he*he,Je=b(Pe),He=.5/x(Pe);function et(Mt,Dt){var Ut=V(o(Dt)*o(Mt-be)),tr=V(o(Dt)*o(Mt-Pe)),mr=Dt<0?-1:1;return Ut*=Ut,tr*=tr,[(Ut-tr)/(2*he),mr*H(4*Oe*tr-(Oe-Ut+tr)*(Oe-Ut+tr))/(2*he)]}return et.invert=function(Mt,Dt){var Ut=Dt*Dt,tr=o(H(Ut+(Rr=Mt+be)*Rr)),mr=o(H(Ut+(Rr=Mt+Pe)*Rr)),Rr,zr;return[a(zr=tr-mr,Rr=(tr+mr)*Je),(Dt<0?-1:1)*V(H(Rr*Rr+zr*zr)*He)]},et}function mf(){return bu([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function bu(he,be){return vs(ac,he,be)}function Kc(he,be){if(n(be)p&&--Mt>0);return[v(he)*(H(Je*Je+4)+Je)*k/4,A*et]};function _c(){return t.geoProjection(yc).scale(127.16)}function le(he,be,Pe,Oe,Je){function He(et,Mt){var Dt=Pe*x(Oe*Mt),Ut=H(1-Dt*Dt),tr=H(2/(1+Ut*o(et*=Je)));return[he*Ut*tr*x(et),be*Dt*tr]}return He.invert=function(et,Mt){var Dt=et/he,Ut=Mt/be,tr=H(Dt*Dt+Ut*Ut),mr=2*q(tr/2);return[a(et*b(mr),he*tr)/Je,tr&&q(Mt*x(mr)/(be*Pe*tr))/Oe]},He}function w(he,be,Pe,Oe){var Je=k/3;he=c(he,p),be=c(be,p),he=f(he,A),be=f(be,k-p),Pe=c(Pe,0),Pe=f(Pe,100-p),Oe=c(Oe,p);var He=Pe/100+1,et=Oe/100,Mt=V(He*o(Je))/Je,Dt=x(he)/x(Mt*A),Ut=be/k,tr=H(et*x(he/2)/x(be/2)),mr=tr/H(Ut*Dt*Mt),Rr=1/(tr*H(Ut*Dt*Mt));return le(mr,Rr,Dt,Mt,Ut)}function B(){var he=65*T,be=60*T,Pe=20,Oe=200,Je=t.geoProjectionMutator(w),He=Je(he,be,Pe,Oe);return He.poleline=function(et){return arguments.length?Je(he=+et*T,be,Pe,Oe):he*P},He.parallels=function(et){return arguments.length?Je(he,be=+et*T,Pe,Oe):be*P},He.inflation=function(et){return arguments.length?Je(he,be,Pe=+et,Oe):Pe},He.ratio=function(et){return arguments.length?Je(he,be,Pe,Oe=+et):Oe},He.scale(163.775)}function Q(){return B().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)}var ee=4*k+3*H(3),se=2*H(2*k*H(3)/ee),qe=Ct(se*H(3)/k,se,ee/6);function je(){return t.geoProjection(qe).scale(176.84)}function it(he,be){return[he*H(1-3*be*be/(k*k)),be]}it.invert=function(he,be){return[he/H(1-3*be*be/(k*k)),be]};function yt(){return t.geoProjection(it).scale(152.63)}function Ot(he,be){var Pe=o(be),Oe=o(he)*Pe,Je=1-Oe,He=o(he=a(x(he)*Pe,-x(be))),et=x(he);return Pe=H(1-Oe*Oe),[et*Pe-He*Je,-He*Pe-et*Je]}Ot.invert=function(he,be){var Pe=(he*he+be*be)/-2,Oe=H(-Pe*(2+Pe)),Je=be*Pe+he*Oe,He=he*Pe-be*Oe,et=H(He*He+Je*Je);return[a(Oe*Je,et*(1+Pe)),et?-q(Oe*He/et):0]};function Nt(){return t.geoProjection(Ot).rotate([0,-90,45]).scale(124.75).clipAngle(180-.001)}function hr(he,be){var Pe=Me(he,be);return[(Pe[0]+he/A)/2,(Pe[1]+be)/2]}hr.invert=function(he,be){var Pe=he,Oe=be,Je=25;do{var He=o(Oe),et=x(Oe),Mt=x(2*Oe),Dt=et*et,Ut=He*He,tr=x(Pe),mr=o(Pe/2),Rr=x(Pe/2),zr=Rr*Rr,Xr=1-Ut*mr*mr,di=Xr?V(He*mr)*H(Li=1/Xr):Li=0,Li,Ci=.5*(2*di*He*Rr+Pe/A)-he,Qi=.5*(di*et+Oe)-be,Mn=.5*Li*(Ut*zr+di*He*mr*Dt)+.5/A,pa=Li*(tr*Mt/4-di*et*Rr),ea=.125*Li*(Mt*Rr-di*et*Ut*tr),Ga=.5*Li*(Dt*mr+di*zr*He)+.5,To=pa*ea-Ga*Mn,Wa=(Qi*pa-Ci*Ga)/To,co=(Ci*ea-Qi*Mn)/To;Pe-=Wa,Oe-=co}while((n(Wa)>p||n(co)>p)&&--Je>0);return[Pe,Oe]};function Sr(){return t.geoProjection(hr).scale(158.837)}e.geoNaturalEarth=t.geoNaturalEarth1,e.geoNaturalEarthRaw=t.geoNaturalEarth1Raw,e.geoAiry=_e,e.geoAiryRaw=ae,e.geoAitoff=ke,e.geoAitoffRaw=Me,e.geoArmadillo=ie,e.geoArmadilloRaw=ge,e.geoAugust=Ee,e.geoAugustRaw=Te,e.geoBaker=me,e.geoBakerRaw=Ce,e.geoBerghaus=ce,e.geoBerghausRaw=Re,e.geoBertin1953=Rt,e.geoBertin1953Raw=ot,e.geoBoggs=bt,e.geoBoggsRaw=xt,e.geoBonne=Ht,e.geoBonneRaw=dt,e.geoBottomley=fr,e.geoBottomleyRaw=$t,e.geoBromley=Br,e.geoBromleyRaw=_r,e.geoChamberlin=Xe,e.geoChamberlinRaw=Ne,e.geoChamberlinAfrica=Ve,e.geoCollignon=Le,e.geoCollignonRaw=ht,e.geoCraig=Se,e.geoCraigRaw=xe,e.geoCraster=Vt,e.geoCrasterRaw=Gt,e.geoCylindricalEqualArea=Qr,e.geoCylindricalEqualAreaRaw=ar,e.geoCylindricalStereographic=jr,e.geoCylindricalStereographicRaw=ai,e.geoEckert1=bi,e.geoEckert1Raw=ri,e.geoEckert2=Wi,e.geoEckert2Raw=nn,e.geoEckert3=_n,e.geoEckert3Raw=Ni,e.geoEckert4=zn,e.geoEckert4Raw=$i,e.geoEckert5=It,e.geoEckert5Raw=Wn,e.geoEckert6=jt,e.geoEckert6Raw=ft,e.geoEisenlohr=Fr,e.geoEisenlohrRaw=yr,e.geoFahey=gi,e.geoFaheyRaw=Vr,e.geoFoucaut=Mi,e.geoFoucautRaw=Si,e.geoFoucautSinusoidal=Gi,e.geoFoucautSinusoidalRaw=Pi,e.geoGilbert=jn,e.geoGingery=jo,e.geoGingeryRaw=la,e.geoGinzburg4=Ha,e.geoGinzburg4Raw=Sn,e.geoGinzburg5=xn,e.geoGinzburg5Raw=oo,e.geoGinzburg6=br,e.geoGinzburg6Raw=_t,e.geoGinzburg8=ti,e.geoGinzburg8Raw=Hr,e.geoGinzburg9=Yi,e.geoGinzburg9Raw=zi,e.geoGringorten=Fn,e.geoGringortenRaw=hi,e.geoGuyou=ks,e.geoGuyouRaw=Mo,e.geoHammer=ct,e.geoHammerRaw=Ge,e.geoHammerRetroazimuthal=wl,e.geoHammerRetroazimuthalRaw=Zs,e.geoHealpix=Ql,e.geoHealpixRaw=ml,e.geoHill=fc,e.geoHillRaw=Hu,e.geoHomolosine=vo,e.geoHomolosineRaw=Rl,e.geoHufnagel=Ks,e.geoHufnagelRaw=Zl,e.geoHyperelliptical=ko,e.geoHyperellipticalRaw=Zn,e.geoInterrupt=So,e.geoInterruptedBoggs=rh,e.geoInterruptedHomolosine=Hc,e.geoInterruptedMollweide=Ls,e.geoInterruptedMollweideHemispheres=kc,e.geoInterruptedSinuMollweide=Gc,e.geoInterruptedSinusoidal=Bf,e.geoKavrayskiy7=ff,e.geoKavrayskiy7Raw=ss,e.geoLagrange=Vl,e.geoLagrangeRaw=ih,e.geoLarrivee=Cc,e.geoLarriveeRaw=hc,e.geoLaskowski=$s,e.geoLaskowskiRaw=ws,e.geoLittrow=Ms,e.geoLittrowRaw=hs,e.geoLoximuthal=Sl,e.geoLoximuthalRaw=dc,e.geoMiller=Ps,e.geoMillerRaw=ec,e.geoModifiedStereographic=Ml,e.geoModifiedStereographicRaw=ov,e.geoModifiedStereographicAlaska=tc,e.geoModifiedStereographicGs48=uu,e.geoModifiedStereographicGs50=Mh,e.geoModifiedStereographicMiller=jc,e.geoModifiedStereographicLee=kf,e.geoMollweide=xr,e.geoMollweideRaw=Yt,e.geoMtFlatPolarParabolic=hf,e.geoMtFlatPolarParabolicRaw=nh,e.geoMtFlatPolarQuartic=Kh,e.geoMtFlatPolarQuarticRaw=kh,e.geoMtFlatPolarSinusoidal=ah,e.geoMtFlatPolarSinusoidalRaw=rc,e.geoNaturalEarth2=df,e.geoNaturalEarth2Raw=Wc,e.geoNellHammer=Nf,e.geoNellHammerRaw=Cu,e.geoInterruptedQuarticAuthalic=ds,e.geoNicolosi=Bd,e.geoNicolosiRaw=Ch,e.geoPatterson=ic,e.geoPattersonRaw=Xc,e.geoPolyconic=Qs,e.geoPolyconicRaw=yu,e.geoPolyhedral=Lf,e.geoPolyhedralButterfly=Fs,e.geoPolyhedralCollignon=Lh,e.geoPolyhedralWaterman=Is,e.geoProject=Dl,e.geoGringortenQuincuncial=gt,e.geoPeirceQuincuncial=Bt,e.geoPierceQuincuncial=Bt,e.geoQuantize=wr,e.geoQuincuncial=gf,e.geoRectangularPolyconic=Ur,e.geoRectangularPolyconicRaw=vr,e.geoRobinson=Fi,e.geoRobinsonRaw=xi,e.geoSatellite=Ti,e.geoSatelliteRaw=hn,e.geoSinuMollweide=Qu,e.geoSinuMollweideRaw=fa,e.geoSinusoidal=Et,e.geoSinusoidalRaw=St,e.geoStitch=Rs,e.geoTimes=Ka,e.geoTimesRaw=ia,e.geoTwoPointAzimuthal=Ru,e.geoTwoPointAzimuthalRaw=Ko,e.geoTwoPointAzimuthalUsa=nu,e.geoTwoPointEquidistant=bu,e.geoTwoPointEquidistantRaw=ac,e.geoTwoPointEquidistantUsa=mf,e.geoVanDerGrinten=Du,e.geoVanDerGrintenRaw=Kc,e.geoVanDerGrinten2=Da,e.geoVanDerGrinten2Raw=Dc,e.geoVanDerGrinten3=Jc,e.geoVanDerGrinten3Raw=eo,e.geoVanDerGrinten4=_c,e.geoVanDerGrinten4Raw=yc,e.geoWagner=B,e.geoWagner7=Q,e.geoWagnerRaw=w,e.geoWagner4=je,e.geoWagner4Raw=qe,e.geoWagner6=yt,e.geoWagner6Raw=it,e.geoWiechel=Nt,e.geoWiechelRaw=Ot,e.geoWinkel3=Sr,e.geoWinkel3Raw=hr,Object.defineProperty(e,"__esModule",{value:!0})})});var MRe=ye((Dpr,SRe)=>{"use strict";var Zh=xa(),bX=Mr(),CDt=ba(),Z5=Math.PI/180,G2=180/Math.PI,TX={cursor:"pointer"},AX={cursor:"auto"};function LDt(e,t){var r=e.projection,n;return t._isScoped?n=PDt:t._isClipped?n=RDt:n=IDt,n(e,r)}SRe.exports=LDt;function SX(e,t){return Zh.behavior.zoom().translate(t.translate()).scale(t.scale())}function MX(e,t,r){var n=e.id,i=e.graphDiv,a=i.layout,o=a[n],s=i._fullLayout,l=s[n],u={},c={};function f(h,d){u[n+"."+h]=bX.nestedProperty(o,h).get(),CDt.call("_storeDirectGUIEdit",a,s._preGUI,u);var v=bX.nestedProperty(l,h);v.get()!==d&&(v.set(d),bX.nestedProperty(o,h).set(d),c[n+"."+h]=d)}r(f),f("projection.scale",t.scale()/e.fitScale),f("fitbounds",!1),i.emit("plotly_relayout",c)}function PDt(e,t){var r=SX(e,t);function n(){Zh.select(this).style(TX)}function i(){t.scale(Zh.event.scale).translate(Zh.event.translate),e.render(!0);var s=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":s[0],"geo.center.lat":s[1]})}function a(s){var l=t.invert(e.midPt);s("center.lon",l[0]),s("center.lat",l[1])}function o(){Zh.select(this).style(AX),MX(e,t,a)}return r.on("zoomstart",n).on("zoom",i).on("zoomend",o),r}function IDt(e,t){var r=SX(e,t),n=2,i,a,o,s,l,u,c,f,h;function d(k){return t.invert(k)}function v(k){var A=d(k);if(!A)return!0;var L=t(A);return Math.abs(L[0]-k[0])>n||Math.abs(L[1]-k[1])>n}function x(){Zh.select(this).style(TX),i=Zh.mouse(this),a=t.rotate(),o=t.translate(),s=a,l=d(i)}function b(){if(u=Zh.mouse(this),v(i)){r.scale(t.scale()),r.translate(t.translate());return}t.scale(Zh.event.scale),t.translate([o[0],Zh.event.translate[1]]),l?d(u)&&(f=d(u),c=[s[0]+(f[0]-l[0]),a[1],a[2]],t.rotate(c),s=c):(i=u,l=d(i)),h=!0,e.render(!0);var k=t.rotate(),A=t.invert(e.midPt);e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.center.lon":A[0],"geo.center.lat":A[1],"geo.projection.rotation.lon":-k[0]})}function p(){Zh.select(this).style(AX),h&&MX(e,t,E)}function E(k){var A=t.rotate(),L=t.invert(e.midPt);k("projection.rotation.lon",-A[0]),k("center.lon",L[0]),k("center.lat",L[1])}return r.on("zoomstart",x).on("zoom",b).on("zoomend",p),r}function RDt(e,t){var r={r:t.rotate(),k:t.scale()},n=SX(e,t),i=UDt(n,"zoomstart","zoom","zoomend"),a=0,o=n.on,s;n.on("zoomstart",function(){Zh.select(this).style(TX);var h=Zh.mouse(this),d=t.rotate(),v=d,x=t.translate(),b=DDt(d);s=Sz(t,h),o.call(n,"zoom",function(){var p=Zh.mouse(this);if(t.scale(r.k=Zh.event.scale),!s)h=p,s=Sz(t,h);else if(Sz(t,p)){t.rotate(d).translate(x);var E=Sz(t,p),k=FDt(s,E),A=ODt(zDt(b,k)),L=r.r=qDt(A,s,v);(!isFinite(L[0])||!isFinite(L[1])||!isFinite(L[2]))&&(L=v),t.rotate(L),v=L}u(i.of(this,arguments))}),l(i.of(this,arguments))}).on("zoomend",function(){Zh.select(this).style(AX),o.call(n,"zoom",null),c(i.of(this,arguments)),MX(e,t,f)}).on("zoom.redraw",function(){e.render(!0);var h=t.rotate();e.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":t.scale()/e.fitScale,"geo.projection.rotation.lon":-h[0],"geo.projection.rotation.lat":-h[1]})});function l(h){a++||h({type:"zoomstart"})}function u(h){h({type:"zoom"})}function c(h){--a||h({type:"zoomend"})}function f(h){var d=t.rotate();h("projection.rotation.lon",-d[0]),h("projection.rotation.lat",-d[1])}return Zh.rebind(n,i,"on")}function Sz(e,t){var r=e.invert(t);return r&&isFinite(r[0])&&isFinite(r[1])&&BDt(r)}function DDt(e){var t=.5*e[0]*Z5,r=.5*e[1]*Z5,n=.5*e[2]*Z5,i=Math.sin(t),a=Math.cos(t),o=Math.sin(r),s=Math.cos(r),l=Math.sin(n),u=Math.cos(n);return[a*s*u+i*o*l,i*s*u-a*o*l,a*o*u+i*s*l,a*s*l-i*o*u]}function zDt(e,t){var r=e[0],n=e[1],i=e[2],a=e[3],o=t[0],s=t[1],l=t[2],u=t[3];return[r*o-n*s-i*l-a*u,r*s+n*o+i*u-a*l,r*l-n*u+i*o+a*s,r*u+n*l-i*s+a*o]}function FDt(e,t){if(!(!e||!t)){var r=NDt(e,t),n=Math.sqrt(ARe(r,r)),i=.5*Math.acos(Math.max(-1,Math.min(1,ARe(e,t)))),a=Math.sin(i)/n;return n&&[Math.cos(i),r[2]*a,-r[1]*a,r[0]*a]}}function qDt(e,t,r){var n=wX(t,2,e[0]);n=wX(n,1,e[1]),n=wX(n,0,e[2]-r[2]);var i=t[0],a=t[1],o=t[2],s=n[0],l=n[1],u=n[2],c=Math.atan2(a,i)*G2,f=Math.sqrt(i*i+a*a),h,d;Math.abs(l)>f?(d=(l>0?90:-90)-c,h=0):(d=Math.asin(l/f)*G2-c,h=Math.sqrt(f*f-l*l));var v=180-d-2*c,x=(Math.atan2(u,s)-Math.atan2(o,h))*G2,b=(Math.atan2(u,s)-Math.atan2(o,-h))*G2,p=wRe(r[0],r[1],d,x),E=wRe(r[0],r[1],v,b);return p<=E?[d,x,r[2]]:[v,b,r[2]]}function wRe(e,t,r,n){var i=TRe(r-e),a=TRe(n-t);return Math.sqrt(i*i+a*a)}function TRe(e){return(e%360+540)%360-180}function wX(e,t,r){var n=r*Z5,i=e.slice(),a=t===0?1:0,o=t===2?1:2,s=Math.cos(n),l=Math.sin(n);return i[a]=e[a]*s-e[o]*l,i[o]=e[o]*s+e[a]*l,i}function ODt(e){return[Math.atan2(2*(e[0]*e[1]+e[2]*e[3]),1-2*(e[1]*e[1]+e[2]*e[2]))*G2,Math.asin(Math.max(-1,Math.min(1,2*(e[0]*e[2]-e[3]*e[1]))))*G2,Math.atan2(2*(e[0]*e[3]+e[1]*e[2]),1-2*(e[2]*e[2]+e[3]*e[3]))*G2]}function BDt(e){var t=e[0]*Z5,r=e[1]*Z5,n=Math.cos(r);return[n*Math.cos(t),n*Math.sin(t),Math.sin(r)]}function ARe(e,t){for(var r=0,n=0,i=e.length;n{"use strict";var t1=xa(),CX=xX(),VDt=CX.geoPath,HDt=CX.geoDistance,GDt=bRe(),jDt=ba(),ek=Mr(),WDt=ek.strTranslate,Mz=va(),QE=ao(),ERe=Nc(),ZDt=Xu(),kX=Qa(),kRe=wg().getAutoRange,EX=gv(),XDt=wf().prepSelect,YDt=wf().clearOutline,KDt=wf().selectOnClick,JDt=MRe(),fp=YE(),$Dt=nx(),LRe=cz(),QDt=aX().feature;function PRe(e){this.id=e.id,this.graphDiv=e.graphDiv,this.container=e.container,this.topojsonURL=e.topojsonURL,this.isStatic=e.staticPlot,this.topojsonName=null,this.topojson=null,this.projection=null,this.scope=null,this.viewInitial=null,this.fitScale=null,this.bounds=null,this.midPt=null,this.hasChoropleth=!1,this.traceHash={},this.layers={},this.basePaths={},this.dataPaths={},this.dataPoints={},this.clipDef=null,this.clipRect=null,this.bgRect=null,this.makeFramework()}var $g=PRe.prototype;IRe.exports=function(t){return new PRe(t)};$g.plot=function(e,t,r,n){var i=this;if(n)return i.update(e,t,!0);i._geoCalcData=e,i._fullLayout=t;var a=t[this.id],o=[],s=!1;for(var l in fp.layerNameToAdjective)if(l!=="frame"&&a["show"+l]){s=!0;break}for(var u=!1,c=0;c0&&o._module.calcGeoJSON(a,t)}if(!r){var s=this.updateProjection(e,t);if(s)return;(!this.viewInitial||this.scope!==n.scope)&&this.saveViewInitial(n)}this.scope=n.scope,this.updateBaseLayers(t,n),this.updateDims(t,n),this.updateFx(t,n),ZDt.generalUpdatePerTraceModule(this.graphDiv,this,e,n);var l=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=l.selectAll(".point"),this.dataPoints.text=l.selectAll("text"),this.dataPaths.line=l.selectAll(".js-line");var u=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=u.selectAll("path"),this._render()};$g.updateProjection=function(e,t){var r=this.graphDiv,n=t[this.id],i=t._size,a=n.domain,o=n.projection,s=n.lonaxis,l=n.lataxis,u=s._ax,c=l._ax,f=this.projection=ezt(n),h=[[i.l+i.w*a.x[0],i.t+i.h*(1-a.y[1])],[i.l+i.w*a.x[1],i.t+i.h*(1-a.y[0])]],d=n.center||{},v=o.rotation||{},x=s.range||[],b=l.range||[];if(n.fitbounds){u._length=h[1][0]-h[0][0],c._length=h[1][1]-h[0][1],u.range=kRe(r,u),c.range=kRe(r,c);var p=(u.range[0]+u.range[1])/2,E=(c.range[0]+c.range[1])/2;if(n._isScoped)d={lon:p,lat:E};else if(n._isClipped){d={lon:p,lat:E},v={lon:p,lat:E,roll:v.roll};var k=o.type,A=fp.lonaxisSpan[k]/2||180,L=fp.lataxisSpan[k]/2||90;x=[p-A,p+A],b=[E-L,E+L]}else d={lon:p,lat:E},v={lon:p,lat:v.lat,roll:v.roll}}f.center([d.lon-v.lon,d.lat-v.lat]).rotate([-v.lon,-v.lat,v.roll]).parallels(o.parallels);var _=CRe(x,b);f.fitExtent(h,_);var C=this.bounds=f.getBounds(_),M=this.fitScale=f.scale(),g=f.translate();if(n.fitbounds){var P=f.getBounds(CRe(u.range,c.range)),T=Math.min((C[1][0]-C[0][0])/(P[1][0]-P[0][0]),(C[1][1]-C[0][1])/(P[1][1]-P[0][1]));isFinite(T)?f.scale(T*M):ek.warn("Something went wrong during"+this.id+"fitbounds computations.")}else f.scale(o.scale*M);var F=this.midPt=[(C[0][0]+C[1][0])/2,(C[0][1]+C[1][1])/2];if(f.translate([g[0]+(F[0]-g[0]),g[1]+(F[1]-g[1])]).clipExtent(C),n._isAlbersUsa){var q=f([d.lon,d.lat]),V=f.translate();f.translate([V[0]-(q[0]-V[0]),V[1]-(q[1]-V[1])])}};$g.updateBaseLayers=function(e,t){var r=this,n=r.topojson,i=r.layers,a=r.basePaths;function o(h){return h==="lonaxis"||h==="lataxis"}function s(h){return!!fp.lineLayers[h]}function l(h){return!!fp.fillLayers[h]}var u=this.hasChoropleth?fp.layersForChoropleth:fp.layers,c=u.filter(function(h){return s(h)||l(h)?t["show"+h]:o(h)?t[h].showgrid:!0}),f=r.framework.selectAll(".layer").data(c,String);f.exit().each(function(h){delete i[h],delete a[h],t1.select(this).remove()}),f.enter().append("g").attr("class",function(h){return"layer "+h}).each(function(h){var d=i[h]=t1.select(this);h==="bg"?r.bgRect=d.append("rect").style("pointer-events","all"):o(h)?a[h]=d.append("path").style("fill","none"):h==="backplot"?d.append("g").classed("choroplethlayer",!0):h==="frontplot"?d.append("g").classed("scatterlayer",!0):s(h)?a[h]=d.append("path").style("fill","none").style("stroke-miterlimit",2):l(h)&&(a[h]=d.append("path").style("stroke","none"))}),f.order(),f.each(function(h){var d=a[h],v=fp.layerNameToAdjective[h];h==="frame"?d.datum(fp.sphereSVG):s(h)||l(h)?d.datum(QDt(n,n.objects[h])):o(h)&&d.datum(tzt(h,t,e)).call(Mz.stroke,t[h].gridcolor).call(QE.dashLine,t[h].griddash,t[h].gridwidth),s(h)?d.call(Mz.stroke,t[v+"color"]).call(QE.dashLine,"",t[v+"width"]):l(h)&&d.call(Mz.fill,t[v+"color"])})};$g.updateDims=function(e,t){var r=this.bounds,n=(t.framewidth||0)/2,i=r[0][0]-n,a=r[0][1]-n,o=r[1][0]-i+n,s=r[1][1]-a+n;QE.setRect(this.clipRect,i,a,o,s),this.bgRect.call(QE.setRect,i,a,o,s).call(Mz.fill,t.bgcolor),this.xaxis._offset=i,this.xaxis._length=o,this.yaxis._offset=a,this.yaxis._length=s};$g.updateFx=function(e,t){var r=this,n=r.graphDiv,i=r.bgRect,a=e.dragmode,o=e.clickmode;if(r.isStatic)return;function s(){var f=r.viewInitial,h={};for(var d in f)h[r.id+"."+d]=f[d];jDt.call("_guiRelayout",n,h),n.emit("plotly_doubleclick",null)}function l(f){return r.projection.invert([f[0]+r.xaxis._offset,f[1]+r.yaxis._offset])}var u=function(f,h){if(h.isRect){var d=f.range={};d[r.id]=[l([h.xmin,h.ymin]),l([h.xmax,h.ymax])]}else{var v=f.lassoPoints={};v[r.id]=h.map(l)}},c={element:r.bgRect.node(),gd:n,plotinfo:{id:r.id,xaxis:r.xaxis,yaxis:r.yaxis,fillRangeItems:u},xaxes:[r.xaxis],yaxes:[r.yaxis],subplot:r.id,clickFn:function(f){f===2&&YDt(n)}};a==="pan"?(i.node().onmousedown=null,i.call(JDt(r,t)),i.on("dblclick.zoom",s),n._context._scrollZoom.geo||i.on("wheel.zoom",null)):(a==="select"||a==="lasso")&&(i.on(".zoom",null),c.prepFn=function(f,h,d){XDt(f,h,d,c,a)},EX.init(c)),i.on("mousemove",function(){var f=r.projection.invert(ek.getPositionFromD3Event());if(!f)return EX.unhover(n,t1.event);r.xaxis.p2c=function(){return f[0]},r.yaxis.p2c=function(){return f[1]},ERe.hover(n,t1.event,r.id)}),i.on("mouseout",function(){n._dragging||EX.unhover(n,t1.event)}),i.on("click",function(){a!=="select"&&a!=="lasso"&&(o.indexOf("select")>-1&&KDt(t1.event,n,[r.xaxis],[r.yaxis],r.id,c),o.indexOf("event")>-1&&ERe.click(n,t1.event))})};$g.makeFramework=function(){var e=this,t=e.graphDiv,r=t._fullLayout,n="clip"+r._uid+e.id;e.clipDef=r._clips.append("clipPath").attr("id",n),e.clipRect=e.clipDef.append("rect"),e.framework=t1.select(e.container).append("g").attr("class","geo "+e.id).call(QE.setClipUrl,n,t),e.project=function(i){var a=e.projection(i);return a?[a[0]-e.xaxis._offset,a[1]-e.yaxis._offset]:[null,null]},e.xaxis={_id:"x",c2p:function(i){return e.project(i)[0]}},e.yaxis={_id:"y",c2p:function(i){return e.project(i)[1]}},e.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},kX.setConvert(e.mockAxis,r)};$g.saveViewInitial=function(e){var t=e.center||{},r=e.projection,n=r.rotation||{};this.viewInitial={fitbounds:e.fitbounds,"projection.scale":r.scale};var i;e._isScoped?i={"center.lon":t.lon,"center.lat":t.lat}:e._isClipped?i={"projection.rotation.lon":n.lon,"projection.rotation.lat":n.lat}:i={"center.lon":t.lon,"center.lat":t.lat,"projection.rotation.lon":n.lon},ek.extendFlat(this.viewInitial,i)};$g.render=function(e){this._hasMarkerAngles&&e?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()};$g._render=function(){var e=this.projection,t=e.getPath(),r;function n(a){var o=e(a.lonlat);return o?WDt(o[0],o[1]):null}function i(a){return e.isLonLatOverEdges(a.lonlat)?"none":null}for(r in this.basePaths)this.basePaths[r].attr("d",t);for(r in this.dataPaths)this.dataPaths[r].attr("d",function(a){return t(a.geojson)});for(r in this.dataPoints)this.dataPoints[r].attr("display",i).attr("transform",n)};function ezt(e){var t=e.projection,r=t.type,n=fp.projNames[r];n="geo"+ek.titleCase(n);for(var i=CX[n]||GDt[n],a=i(),o=e._isSatellite?Math.acos(1/t.distance)*180/Math.PI:e._isClipped?fp.lonaxisSpan[r]/2:null,s=["center","rotate","parallels","clipExtent"],l=function(f){return f?a:[]},u=0;uv}else return!1},a.getPath=function(){return VDt().projection(a)},a.getBounds=function(f){return a.getPath().bounds(f)},a.precision(fp.precision),e._isSatellite&&a.tilt(t.tilt).distance(t.distance),o&&a.clipAngle(o-fp.clipPad),a}function tzt(e,t,r){var n=1e-6,i=2.5,a=t[e],o=fp.scopeDefaults[t.scope],s,l,u;e==="lonaxis"?(s=o.lonaxisRange,l=o.lataxisRange,u=function(E,k){return[E,k]}):e==="lataxis"&&(s=o.lataxisRange,l=o.lonaxisRange,u=function(E,k){return[k,E]});var c={type:"linear",range:[s[0],s[1]-n],tick0:a.tick0,dtick:a.dtick};kX.setConvert(c,r);var f=kX.calcTicks(c);!t.isScoped&&e==="lonaxis"&&f.pop();for(var h=f.length,d=new Array(h),v=0;v0&&i<0&&(i+=360);var s=(i-n)/4;return{type:"Polygon",coordinates:[[[n,a],[n,o],[n+s,o],[n+2*s,o],[n+3*s,o],[i,o],[i,a],[i-s,a],[i-2*s,a],[i-3*s,a],[n,a]]]}}});var LX=ye((Fpr,FRe)=>{"use strict";var Y5=dh(),rzt=Ju().attributes,izt=Ed().dash,X5=YE(),nzt=Bu().overrideAll,DRe=Y1(),zRe={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:Y5.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:izt},azt=FRe.exports=nzt({domain:rzt({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:DRe(X5.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:DRe(X5.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:Y5.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:X5.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:X5.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:X5.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:X5.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:Y5.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:Y5.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:Y5.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:Y5.background},lonaxis:zRe,lataxis:zRe},"plot","from-root");azt.uirevision={valType:"any",editType:"none"}});var BRe=ye((qpr,ORe)=>{"use strict";var Ez=Mr(),ozt=C_(),szt=kd().getSubplotData,kz=YE(),lzt=LX(),qRe=kz.axesNames;ORe.exports=function(t,r,n){ozt(t,r,n,{type:"geo",attributes:lzt,handleDefaults:uzt,fullData:n,partition:"y"})};function uzt(e,t,r,n){var i=szt(n.fullData,"geo",n.id),a=i.map(function(ae){return ae.index}),o=r("resolution"),s=r("scope"),l=kz.scopeDefaults[s],u=r("projection.type",l.projType),c=t._isAlbersUsa=u==="albers usa";c&&(s=t.scope="usa");var f=t._isScoped=s!=="world",h=t._isSatellite=u==="satellite",d=t._isConic=u.indexOf("conic")!==-1||u==="albers",v=t._isClipped=!!kz.lonaxisSpan[u];if(e.visible===!1){var x=Ez.extendDeep({},t._template);x.showcoastlines=!1,x.showcountries=!1,x.showframe=!1,x.showlakes=!1,x.showland=!1,x.showocean=!1,x.showrivers=!1,x.showsubunits=!1,x.lonaxis&&(x.lonaxis.showgrid=!1),x.lataxis&&(x.lataxis.showgrid=!1),t._template=x}for(var b=r("visible"),p,E=0;E0&&q<0&&(q+=360);var V=(F+q)/2,H;if(!c){var X=f?l.projRotate:[V,0,0];H=r("projection.rotation.lon",X[0]),r("projection.rotation.lat",X[1]),r("projection.rotation.roll",X[2]),p=r("showcoastlines",!f&&b),p&&(r("coastlinecolor"),r("coastlinewidth")),p=r("showocean",b?void 0:!1),p&&r("oceancolor")}var G,N;if(c?(G=-96.6,N=38.7):(G=f?V:H,N=(T[0]+T[1])/2),r("center.lon",G),r("center.lat",N),h&&(r("projection.tilt"),r("projection.distance")),d){var W=l.projParallels||[0,60];r("projection.parallels",W)}r("projection.scale"),p=r("showland",b?void 0:!1),p&&r("landcolor"),p=r("showlakes",b?void 0:!1),p&&r("lakecolor"),p=r("showrivers",b?void 0:!1),p&&(r("rivercolor"),r("riverwidth")),p=r("showcountries",f&&s!=="usa"&&b),p&&(r("countrycolor"),r("countrywidth")),(s==="usa"||s==="north america"&&o===50)&&(r("showsubunits",b),r("subunitcolor"),r("subunitwidth")),f||(p=r("showframe",b),p&&(r("framecolor"),r("framewidth"))),r("bgcolor");var re=r("fitbounds");re&&(delete t.projection.scale,f?(delete t.center.lon,delete t.center.lat):v?(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon,delete t.projection.rotation.lat,delete t.lonaxis.range,delete t.lataxis.range):(delete t.center.lon,delete t.center.lat,delete t.projection.rotation.lon))}});var PX=ye((Opr,VRe)=>{"use strict";var czt=kd().getSubplotCalcData,fzt=Mr().counterRegex,hzt=RRe(),Wm="geo",NRe=fzt(Wm),URe={};URe[Wm]={valType:"subplotid",dflt:Wm,editType:"calc"};function dzt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[Wm],i=0;i{"use strict";HRe.exports={attributes:H2(),supplyDefaults:A8e(),colorbar:Kd(),formatLabels:E8e(),calc:lz(),calcGeoJSON:_X().calcGeoJSON,plot:_X().plot,style:pX(),styleOnSelect:op().styleOnSelect,hoverPoints:hRe(),eventData:vRe(),selectPoints:mRe(),moduleType:"trace",name:"scattergeo",basePlotModule:PX(),categories:["geo","symbols","showLegend","scatter-like"],meta:{}}});var WRe=ye((Npr,jRe)=>{"use strict";jRe.exports=GRe()});var K5=ye((Upr,YRe)=>{"use strict";var gzt=Wo().hovertemplateAttrs,ox=H2(),mzt=Jl(),ZRe=vl(),yzt=dh().defaultLine,ax=no().extendFlat,XRe=ox.marker.line;YRe.exports=ax({locations:{valType:"data_array",editType:"calc"},locationmode:ox.locationmode,z:{valType:"data_array",editType:"calc"},geojson:ax({},ox.geojson,{}),featureidkey:ox.featureidkey,text:ax({},ox.text,{}),hovertext:ax({},ox.hovertext,{}),marker:{line:{color:ax({},XRe.color,{dflt:yzt}),width:ax({},XRe.width,{dflt:1}),editType:"calc"},opacity:{valType:"number",arrayOk:!0,min:0,max:1,dflt:1,editType:"style"},editType:"calc"},selected:{marker:{opacity:ox.selected.marker.opacity,editType:"plot"},editType:"plot"},unselected:{marker:{opacity:ox.unselected.marker.opacity,editType:"plot"},editType:"plot"},hoverinfo:ax({},ZRe.hoverinfo,{editType:"calc",flags:["location","z","text","name"]}),hovertemplate:gzt(),showlegend:ax({},ZRe.showlegend,{dflt:!1})},mzt("",{cLetter:"z",editTypeOverride:"calc"}))});var JRe=ye((Vpr,KRe)=>{"use strict";var Cz=Mr(),_zt=Uh(),xzt=K5();KRe.exports=function(t,r,n,i){function a(h,d){return Cz.coerce(t,r,xzt,h,d)}var o=a("locations"),s=a("z");if(!(o&&o.length&&Cz.isArrayOrTypedArray(s)&&s.length)){r.visible=!1;return}r._length=Math.min(o.length,s.length);var l=a("geojson"),u;(typeof l=="string"&&l!==""||Cz.isPlainObject(l))&&(u="geojson-id");var c=a("locationmode",u);c==="geojson-id"&&a("featureidkey"),a("text"),a("hovertext"),a("hovertemplate");var f=a("marker.line.width");f&&a("marker.line.color"),a("marker.opacity"),_zt(t,r,i,a,{prefix:"",cLetter:"z"}),Cz.coerceSelectionMarkerOpacity(r,a)}});var Lz=ye((Hpr,eDe)=>{"use strict";var $Re=uo(),bzt=es().BADNUM,wzt=zv(),Tzt=km(),Azt=F0();function QRe(e){return e&&typeof e=="string"}eDe.exports=function(t,r){var n=r._length,i=new Array(n),a;r.geojson?a=function(c){return QRe(c)||$Re(c)}:a=QRe;for(var o=0;o{"use strict";var Szt=xa(),Mzt=va(),IX=ao(),Ezt=Mu();function kzt(e,t){t&&tDe(e,t)}function tDe(e,t){var r=t[0].trace,n=t[0].node3,i=n.selectAll(".choroplethlocation"),a=r.marker||{},o=a.line||{},s=Ezt.makeColorScaleFuncFromTrace(r);i.each(function(l){Szt.select(this).attr("fill",s(l.z)).call(Mzt.stroke,l.mlc||o.color).call(IX.dashLine,"",l.mlw||o.width||0).style("opacity",a.opacity)}),IX.selectedPointStyle(i,r)}function Czt(e,t){var r=t[0].node3,n=t[0].trace;n.selectedpoints?IX.selectedPointStyle(r.selectAll(".choroplethlocation"),n):tDe(e,t)}rDe.exports={style:kzt,styleOnSelect:Czt}});var RX=ye((jpr,aDe)=>{"use strict";var Lzt=xa(),iDe=Mr(),J5=nx(),Pzt=cz().getTopojsonFeatures,nDe=wg().findExtremes,Izt=Pz().style;function Rzt(e,t,r){var n=t.layers.backplot.select(".choroplethlayer");iDe.makeTraceGroups(n,r,"trace choropleth").each(function(i){var a=Lzt.select(this),o=a.selectAll("path.choroplethlocation").data(iDe.identity);o.enter().append("path").classed("choroplethlocation",!0),o.exit().remove(),Izt(e,i)})}function Dzt(e,t){for(var r=e[0].trace,n=t[r.geo],i=n._subplot,a=r.locationmode,o=r._length,s=a==="geojson-id"?J5.extractTraceFeature(e):Pzt(r,i.topojson),l=[],u=[],c=0;c{"use strict";var zzt=Qa(),Fzt=K5(),qzt=Mr().fillText;oDe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s,l,u,c,f=[r,n],h=[r+360,n];for(l=0;l")}}});var Rz=ye((Zpr,sDe)=>{"use strict";sDe.exports=function(t,r,n,i,a){t.location=r.location,t.z=r.z;var o=i[a];return o.fIn&&o.fIn.properties&&(t.properties=o.fIn.properties),t.ct=o.ct,t}});var Dz=ye((Xpr,lDe)=>{"use strict";lDe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l,u,c,f;if(r===!1)for(s=0;s{"use strict";uDe.exports={attributes:K5(),supplyDefaults:JRe(),colorbar:M_(),calc:Lz(),calcGeoJSON:RX().calcGeoJSON,plot:RX().plot,style:Pz().style,styleOnSelect:Pz().styleOnSelect,hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),moduleType:"trace",name:"choropleth",basePlotModule:PX(),categories:["geo","noOpacity","showLegend"],meta:{}}});var hDe=ye((Kpr,fDe)=>{"use strict";fDe.exports=cDe()});var zz=ye((Jpr,vDe)=>{"use strict";var Bzt=ba(),s0=Mr(),Nzt=oT();function Uzt(e,t,r,n){var i=e.cd,a=i[0].t,o=i[0].trace,s=e.xa,l=e.ya,u=a.x,c=a.y,f=s.c2p(t),h=l.c2p(r),d=e.distance,v;if(a.tree){var x=s.p2c(f-d),b=s.p2c(f+d),p=l.p2c(h-d),E=l.p2c(h+d);n==="x"?v=a.tree.range(Math.min(x,b),Math.min(l._rl[0],l._rl[1]),Math.max(x,b),Math.max(l._rl[0],l._rl[1])):v=a.tree.range(Math.min(x,b),Math.min(p,E),Math.max(x,b),Math.max(p,E))}else v=a.ids;var k,A,L,_,C,M,g,P,T,F=d;if(n==="x"){var q=!!o.xperiodalignment,V=!!o.yperiodalignment;for(C=0;C=Math.min(H,X)&&f<=Math.max(H,X)?0:1/0}if(M=Math.min(G,N)&&h<=Math.max(G,N)?0:1/0}T=Math.sqrt(M*M+g*g),A=v[C]}}}else for(C=v.length-1;C>-1;C--)k=v[C],L=u[k],_=c[k],M=s.c2p(L)-f,g=l.c2p(_)-h,P=Math.sqrt(M*M+g*g),P{"use strict";var pDe=20;gDe.exports={TOO_MANY_POINTS:1e5,SYMBOL_SDF_SIZE:200,SYMBOL_SIZE:pDe,SYMBOL_STROKE:pDe/20,DOT_RE:/-dot/,OPEN_RE:/-open/,DASHES:{solid:[1],dot:[1,1],dash:[4,1],longdash:[8,1],dashdot:[4,1,1,1],longdashdot:[8,1,1,1]}}});var tk=ye((Qpr,xDe)=>{"use strict";var Vzt=vl(),Hzt=Su(),Gzt=Eg(),Af=Uc(),mDe=Oc().axisHoverFormat,yDe=Jl(),jzt=Y1(),DX=no().extendFlat,Wzt=Bu().overrideAll,Zzt=sx().DASHES,_De=Af.line,r1=Af.marker,Xzt=r1.line,$5=xDe.exports=Wzt({x:Af.x,x0:Af.x0,dx:Af.dx,y:Af.y,y0:Af.y0,dy:Af.dy,xperiod:Af.xperiod,yperiod:Af.yperiod,xperiod0:Af.xperiod0,yperiod0:Af.yperiod0,xperiodalignment:Af.xperiodalignment,yperiodalignment:Af.yperiodalignment,xhoverformat:mDe("x"),yhoverformat:mDe("y"),text:Af.text,hovertext:Af.hovertext,textposition:Af.textposition,textfont:Hzt({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,noNumericWeightValues:!0,variantValues:["normal","small-caps"]}),mode:{valType:"flaglist",flags:["lines","markers","text"],extras:["none"]},line:{color:_De.color,width:_De.width,shape:{valType:"enumerated",values:["linear","hv","vh","hvh","vhv"],dflt:"linear",editType:"plot"},dash:{valType:"enumerated",values:jzt(Zzt),dflt:"solid"}},marker:DX({},yDe("marker"),{symbol:r1.symbol,angle:r1.angle,size:r1.size,sizeref:r1.sizeref,sizemin:r1.sizemin,sizemode:r1.sizemode,opacity:r1.opacity,colorbar:r1.colorbar,line:DX({},yDe("marker.line"),{width:Xzt.width})}),connectgaps:Af.connectgaps,fill:DX({},Af.fill,{dflt:"none"}),fillcolor:Gzt(),selected:{marker:Af.selected.marker,textfont:Af.selected.textfont},unselected:{marker:Af.unselected.marker,textfont:Af.unselected.textfont},opacity:Vzt.opacity},"calc","nested");$5.x.editType=$5.y.editType=$5.x0.editType=$5.y0.editType="calc+clearAxisTypes";$5.hovertemplate=Af.hovertemplate;$5.texttemplate=Af.texttemplate});var Fz=ye(zX=>{"use strict";var bDe=sx();zX.isOpenSymbol=function(e){return typeof e=="string"?bDe.OPEN_RE.test(e):e%200>100};zX.isDotSymbol=function(e){return typeof e=="string"?bDe.DOT_RE.test(e):e>200}});var ADe=ye((t0r,TDe)=>{"use strict";var wDe=Mr(),Yzt=ba(),Kzt=Fz(),Jzt=tk(),$zt=Sm(),qz=lu(),Qzt=K3(),eFt=Pg(),tFt=$p(),rFt=R0(),iFt=Ig(),nFt=D0();TDe.exports=function(t,r,n,i){function a(d,v){return wDe.coerce(t,r,Jzt,d,v)}var o=t.marker?Kzt.isOpenSymbol(t.marker.symbol):!1,s=qz.isBubble(t),l=Qzt(t,r,i,a);if(!l){r.visible=!1;return}eFt(t,r,i,a),a("xhoverformat"),a("yhoverformat");var u=l<$zt.PTS_LINESONLY?"lines+markers":"lines";a("text"),a("hovertext"),a("hovertemplate"),a("mode",u),qz.hasMarkers(r)&&(tFt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0}),a("marker.line.width",o||s?1:0)),qz.hasLines(r)&&(a("connectgaps"),rFt(t,r,n,i,a),a("line.shape")),qz.hasText(r)&&(a("texttemplate"),nFt(t,r,i,a,{noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var c=(r.line||{}).color,f=(r.marker||{}).color;a("fill"),r.fill!=="none"&&iFt(t,r,n,a);var h=Yzt.getComponentMethod("errorbars","supplyDefaults");h(t,r,c||f||n,{axis:"y"}),h(t,r,c||f||n,{axis:"x",inherit:"y"}),wDe.coerceSelectionMarkerOpacity(r,a)}});var MDe=ye((r0r,SDe)=>{"use strict";var aFt=$P();SDe.exports=function(t,r,n){var i=t.i;return"x"in t||(t.x=r._x[i]),"y"in t||(t.y=r._y[i]),aFt(t,r,n)}});var kDe=ye((i0r,EDe)=>{"use strict";function oFt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>=0?(a=o,i=o-1):n=o+1}return a}function sFt(e,t,r,n,i){for(var a=i+1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l>0?(a=o,i=o-1):n=o+1}return a}function lFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<0?(a=o,n=o+1):i=o-1}return a}function uFt(e,t,r,n,i){for(var a=n-1;n<=i;){var o=n+i>>>1,s=e[o],l=r!==void 0?r(s,t):s-t;l<=0?(a=o,n=o+1):i=o-1}return a}function cFt(e,t,r,n,i){for(;n<=i;){var a=n+i>>>1,o=e[a],s=r!==void 0?r(o,t):o-t;if(s===0)return a;s<=0?n=a+1:i=a-1}return-1}function rk(e,t,r,n,i,a){return typeof r=="function"?a(e,t,r,n===void 0?0:n|0,i===void 0?e.length-1:i|0):a(e,t,void 0,r===void 0?0:r|0,n===void 0?e.length-1:n|0)}EDe.exports={ge:function(e,t,r,n,i){return rk(e,t,r,n,i,oFt)},gt:function(e,t,r,n,i){return rk(e,t,r,n,i,sFt)},lt:function(e,t,r,n,i){return rk(e,t,r,n,i,lFt)},le:function(e,t,r,n,i){return rk(e,t,r,n,i,uFt)},eq:function(e,t,r,n,i){return rk(e,t,r,n,i,cFt)}}});var Zm=ye((n0r,LDe)=>{"use strict";LDe.exports=function(t,r,n){var i={},a,o;if(typeof r=="string"&&(r=CDe(r)),Array.isArray(r)){var s={};for(o=0;o{"use strict";var fFt=Zm();PDe.exports=hFt;function hFt(e){var t;return arguments.length>1&&(e=arguments),typeof e=="string"?e=e.split(/\s/).map(parseFloat):typeof e=="number"&&(e=[e]),e.length&&typeof e[0]=="number"?e.length===1?t={width:e[0],height:e[0],x:0,y:0}:e.length===2?t={width:e[0],height:e[1],x:0,y:0}:t={x:e[0],y:e[1],width:e[2]-e[0]||0,height:e[3]-e[1]||0}:e&&(e=fFt(e,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"}),t={x:e.left||0,y:e.top||0},e.width==null?e.right?t.width=e.right-t.x:t.width=0:t.width=e.width,e.height==null?e.bottom?t.height=e.bottom-t.y:t.height=0:t.height=e.height),t}});var j2=ye((o0r,IDe)=>{"use strict";IDe.exports=dFt;function dFt(e,t){if(!e||e.length==null)throw Error("Argument should be an array");t==null?t=1:t=Math.floor(t);for(var r=Array(t*2),n=0;ni&&(i=e[o]),e[o]{RDe.exports=function(){for(var e=0;e{var zDe=HD();FDe.exports=vFt;function vFt(e,t,r){if(!e)throw new TypeError("must specify data as first parameter");if(r=+(r||0)|0,Array.isArray(e)&&e[0]&&typeof e[0][0]=="number"){var n=e[0].length,i=e.length*n,a,o,s,l;(!t||typeof t=="string")&&(t=new(zDe(t||"float32"))(i+r));var u=t.length-r;if(i!==u)throw new Error("source length "+i+" ("+n+"x"+e.length+") does not match destination length "+u);for(a=0,s=r;a{"use strict";qDe.exports=function(e){var t=typeof e;return e!==null&&(t==="object"||t==="function")}});var NDe=ye((c0r,BDe)=>{"use strict";BDe.exports=Math.log2||function(e){return Math.log(e)*Math.LOG2E}});var ZDe=ye((f0r,WDe)=>{"use strict";var UDe=kDe(),VDe=VE(),pFt=Q5(),gFt=j2(),HDe=Zm(),qX=DDe(),mFt=W2(),yFt=ODe(),_Ft=HD(),GDe=NDe(),xFt=1073741824;WDe.exports=function(t,r){r||(r={}),t=mFt(t,"float64"),r=HDe(r,{bounds:"range bounds dataBox databox",maxDepth:"depth maxDepth maxdepth level maxLevel maxlevel levels",dtype:"type dtype format out dst output destination"});let n=qX(r.maxDepth,255),i=qX(r.bounds,gFt(t,2));i[0]===i[2]&&i[2]++,i[1]===i[3]&&i[3]++;let a=jDe(t,i),o=t.length>>>1,s;r.dtype||(r.dtype="array"),typeof r.dtype=="string"?s=new(_Ft(r.dtype))(o):r.dtype&&(s=r.dtype,Array.isArray(s)&&(s.length=o));for(let p=0;pn||_>xFt){for(let N=0;N_e||g>Me||P=F||re===ae)return;let ke=l[W];ae===void 0&&(ae=ke.length);for(let Re=re;Re=A&&Ge<=_&&nt>=L&&nt<=C&&q.push(ce)}let ge=u[W],ie=ge[re*4+0],Te=ge[re*4+1],Ee=ge[re*4+2],Ae=ge[re*4+3],ze=H(ge,re+1),Ce=N*.5,me=W+1;V(X,G,Ce,me,ie,Te||Ee||Ae||ze),V(X,G+Ce,Ce,me,Te,Ee||Ae||ze),V(X+Ce,G,Ce,me,Ee,Ae||ze),V(X+Ce,G+Ce,Ce,me,Ae,ze)}function H(X,G){let N=null,W=0;for(;N===null;)if(N=X[G*4+W],W++,W>X.length)return null;return N}return q}function x(p,E,k,A,L){let _=[];for(let C=0;C{"use strict";XDe.exports=ZDe()});var OX=ye((d0r,YDe)=>{YDe.exports=bFt;function bFt(e){var t=0,r=0,n=0,i=0;return e.map(function(a){a=a.slice();var o=a[0],s=o.toUpperCase();if(o!=s)switch(a[0]=s,o){case"a":a[6]+=n,a[7]+=i;break;case"v":a[1]+=i;break;case"h":a[1]+=n;break;default:for(var l=1;l{"use strict";Object.defineProperty(Bz,"__esModule",{value:!0});var wFt=function(){function e(t,r){var n=[],i=!0,a=!1,o=void 0;try{for(var s=t[Symbol.iterator](),l;!(i=(l=s.next()).done)&&(n.push(l.value),!(r&&n.length===r));i=!0);}catch(u){a=!0,o=u}finally{try{!i&&s.return&&s.return()}finally{if(a)throw o}}return n}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),ik=Math.PI*2,BX=function(t,r,n,i,a,o,s){var l=t.x,u=t.y;l*=r,u*=n;var c=i*l-a*u,f=a*l+i*u;return{x:c+o,y:f+s}},TFt=function(t,r){var n=r===1.5707963267948966?.551915024494:r===-1.5707963267948966?-.551915024494:1.3333333333333333*Math.tan(r/4),i=Math.cos(t),a=Math.sin(t),o=Math.cos(t+r),s=Math.sin(t+r);return[{x:i-a*n,y:a+i*n},{x:o+s*n,y:s-o*n},{x:o,y:s}]},KDe=function(t,r,n,i){var a=t*i-r*n<0?-1:1,o=t*n+r*i;return o>1&&(o=1),o<-1&&(o=-1),a*Math.acos(o)},AFt=function(t,r,n,i,a,o,s,l,u,c,f,h){var d=Math.pow(a,2),v=Math.pow(o,2),x=Math.pow(f,2),b=Math.pow(h,2),p=d*v-d*b-v*x;p<0&&(p=0),p/=d*b+v*x,p=Math.sqrt(p)*(s===l?-1:1);var E=p*a/o*h,k=p*-o/a*f,A=c*E-u*k+(t+n)/2,L=u*E+c*k+(r+i)/2,_=(f-E)/a,C=(h-k)/o,M=(-f-E)/a,g=(-h-k)/o,P=KDe(1,0,_,C),T=KDe(_,C,M,g);return l===0&&T>0&&(T-=ik),l===1&&T<0&&(T+=ik),[A,L,P,T]},SFt=function(t){var r=t.px,n=t.py,i=t.cx,a=t.cy,o=t.rx,s=t.ry,l=t.xAxisRotation,u=l===void 0?0:l,c=t.largeArcFlag,f=c===void 0?0:c,h=t.sweepFlag,d=h===void 0?0:h,v=[];if(o===0||s===0)return[];var x=Math.sin(u*ik/360),b=Math.cos(u*ik/360),p=b*(r-i)/2+x*(n-a)/2,E=-x*(r-i)/2+b*(n-a)/2;if(p===0&&E===0)return[];o=Math.abs(o),s=Math.abs(s);var k=Math.pow(p,2)/Math.pow(o,2)+Math.pow(E,2)/Math.pow(s,2);k>1&&(o*=Math.sqrt(k),s*=Math.sqrt(k));var A=AFt(r,n,i,a,o,s,f,d,x,b,p,E),L=wFt(A,4),_=L[0],C=L[1],M=L[2],g=L[3],P=Math.abs(g)/(ik/4);Math.abs(1-P)<1e-7&&(P=1);var T=Math.max(Math.ceil(P),1);g/=T;for(var F=0;F{"use strict";eze.exports=EFt;var MFt=$De();function EFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Nz(e,t,r,n){return["C",e,t,r,n,r,n]}function QDe(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}});var NX=ye((p0r,rze)=>{"use strict";rze.exports=function(t){return typeof t!="string"?!1:(t=t.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(t)&&/[\dz]$/i.test(t)&&t.length>4))}});var aze=ye((g0r,nze)=>{"use strict";var kFt=XS(),CFt=OX(),LFt=tze(),PFt=NX(),ize=tE();nze.exports=IFt;function IFt(e){if(Array.isArray(e)&&e.length===1&&typeof e[0]=="string"&&(e=e[0]),typeof e=="string"&&(ize(PFt(e),"String is not an SVG path."),e=kFt(e)),ize(Array.isArray(e),"Argument should be a string or an array of path segments."),e=CFt(e),e=LFt(e),!e.length)return[0,0,0,0];for(var t=[1/0,1/0,-1/0,-1/0],r=0,n=e.length;rt[2]&&(t[2]=i[a+0]),i[a+1]>t[3]&&(t[3]=i[a+1]);return t}});var fze=ye((m0r,cze)=>{var Z2=Math.PI,oze=uze(120);cze.exports=RFt;function RFt(e){for(var t,r=[],n=0,i=0,a=0,o=0,s=null,l=null,u=0,c=0,f=0,h=e.length;f7&&(r.push(d.splice(0,7)),d.unshift("C"));break;case"S":var x=u,b=c;(t=="C"||t=="S")&&(x+=x-n,b+=b-i),d=["C",x,b,d[1],d[2],d[3],d[4]];break;case"T":t=="Q"||t=="T"?(s=u*2-s,l=c*2-l):(s=u,l=c),d=sze(u,c,s,l,d[1],d[2]);break;case"Q":s=d[1],l=d[2],d=sze(u,c,d[1],d[2],d[3],d[4]);break;case"L":d=Uz(u,c,d[1],d[2]);break;case"H":d=Uz(u,c,d[1],c);break;case"V":d=Uz(u,c,u,d[1]);break;case"Z":d=Uz(u,c,a,o);break}t=v,u=d[d.length-2],c=d[d.length-1],d.length>4?(n=d[d.length-4],i=d[d.length-3]):(n=u,i=c),r.push(d)}return r}function Uz(e,t,r,n){return["C",e,t,r,n,r,n]}function sze(e,t,r,n,i,a){return["C",e/3+2/3*r,t/3+2/3*n,i/3+2/3*r,a/3+2/3*n,i,a]}function lze(e,t,r,n,i,a,o,s,l,u){if(u)k=u[0],A=u[1],p=u[2],E=u[3];else{var c=UX(e,t,-i);e=c.x,t=c.y,c=UX(s,l,-i),s=c.x,l=c.y;var f=(e-s)/2,h=(t-l)/2,d=f*f/(r*r)+h*h/(n*n);d>1&&(d=Math.sqrt(d),r=d*r,n=d*n);var v=r*r,x=n*n,b=(a==o?-1:1)*Math.sqrt(Math.abs((v*x-v*h*h-x*f*f)/(v*h*h+x*f*f)));b==1/0&&(b=1);var p=b*r*h/n+(e+s)/2,E=b*-n*f/r+(t+l)/2,k=Math.asin(((t-E)/n).toFixed(9)),A=Math.asin(((l-E)/n).toFixed(9));k=eA&&(k=k-Z2*2),!o&&A>k&&(A=A-Z2*2)}if(Math.abs(A-k)>oze){var L=A,_=s,C=l;A=k+oze*(o&&A>k?1:-1),s=p+r*Math.cos(A),l=E+n*Math.sin(A);var M=lze(s,l,r,n,i,0,o,_,C,[A,L,p,E])}var g=Math.tan((A-k)/4),P=4/3*r*g,T=4/3*n*g,F=[2*e-(e+P*Math.sin(k)),2*t-(t-T*Math.cos(k)),s+P*Math.sin(A),l-T*Math.cos(A),s,l];if(u)return F;M&&(F=F.concat(M));for(var q=0;q{var DFt=OX(),zFt=fze(),FFt={M:"moveTo",C:"bezierCurveTo"};hze.exports=function(e,t){e.beginPath(),zFt(DFt(t)).forEach(function(r){var n=r[0],i=r.slice(1);e[FFt[n]].apply(e,i)}),e.closePath()}});var mze=ye((_0r,gze)=>{"use strict";var qFt=VE();gze.exports=OFt;var nk=1e20;function OFt(e,t){t||(t={});var r=t.cutoff==null?.25:t.cutoff,n=t.radius==null?8:t.radius,i=t.channel||0,a,o,s,l,u,c,f,h,d,v,x;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");a=t.width,o=t.height,l=e,t.stride?c=t.stride:c=Math.floor(e.length/a/o)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(h=e,f=h.getContext("2d"),a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(h=e.canvas,f=e,a=h.width,o=h.height,d=f.getImageData(0,0,a,o),l=d.data,c=4):window.ImageData&&e instanceof window.ImageData&&(d=e,a=e.width,o=e.height,l=d.data,c=4);if(s=Math.max(a,o),window.Uint8ClampedArray&&l instanceof window.Uint8ClampedArray||window.Uint8Array&&l instanceof window.Uint8Array)for(u=l,l=Array(a*o),v=0,x=u.length;v{"use strict";var BFt=aze(),NFt=XS(),UFt=dze(),VFt=NX(),HFt=mze(),VX=document.createElement("canvas"),hp=VX.getContext("2d");yze.exports=GFt;function GFt(e,t){if(!VFt(e))throw Error("Argument should be valid svg path string");t||(t={});var r,n;t.shape?(r=t.shape[0],n=t.shape[1]):(r=VX.width=t.w||t.width||200,n=VX.height=t.h||t.height||200);var i=Math.min(r,n),a=t.stroke||0,o=t.viewbox||t.viewBox||BFt(e),s=[r/(o[2]-o[0]),n/(o[3]-o[1])],l=Math.min(s[0]||0,s[1]||0)/2;if(hp.fillStyle="black",hp.fillRect(0,0,r,n),hp.fillStyle="white",a&&(typeof a!="number"&&(a=1),a>0?hp.strokeStyle="white":hp.strokeStyle="black",hp.lineWidth=Math.abs(a)),hp.translate(r*.5,n*.5),hp.scale(l,l),jFt()){var u=new Path2D(e);hp.fill(u),a&&hp.stroke(u)}else{var c=NFt(e);UFt(hp,c),hp.fill(),a&&hp.stroke()}hp.setTransform(1,0,0,1,0,0);var f=HFt(hp,{cutoff:t.cutoff!=null?t.cutoff:.5,radius:t.radius!=null?t.radius:i*.5});return f}var Vz;function jFt(){if(Vz!=null)return Vz;var e=document.createElement("canvas").getContext("2d");if(e.canvas.width=e.canvas.height=1,!window.Path2D)return Vz=!1;var t=new Path2D("M0,0h1v1h-1v-1Z");e.fillStyle="black",e.fill(t);var r=e.getImageData(0,0,1,1);return Vz=r&&r.data&&r.data[3]===255}});var Y2=ye((b0r,Lze)=>{"use strict";var Gz=uo(),WFt=_ze(),Hz=$_(),ZFt=ba(),rA=Mr(),Qf=rA.isArrayOrTypedArray,eA=ao(),xze=af(),bze=$y().formatColor,tA=lu(),XFt=S3(),GX=Fz(),ak=sx(),YFt=U1().DESELECTDIM,wze={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},KFt=rp().appendArrayPointValue;function JFt(e,t){var r,n={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0},i=e._context.plotGlPixelRatio;if(t.visible!==!0)return n;if(tA.hasText(t)&&(n.text=Cze(e,t),n.textSel=Aze(e,t,t.selected),n.textUnsel=Aze(e,t,t.unselected)),tA.hasMarkers(t)&&(n.marker=WX(e,t),n.markerSel=jX(e,t,t.selected),n.markerUnsel=jX(e,t,t.unselected),!t.unselected&&Qf(t.marker.opacity))){var a=t.marker.opacity;for(n.markerUnsel.opacity=new Array(a.length),r=0;r500?"bold":"normal":e}function WX(e,t){var r=t._length,n=t.marker,i={},a,o=Qf(n.symbol),s=Qf(n.angle),l=Qf(n.color),u=Qf(n.line.color),c=Qf(n.opacity),f=Qf(n.size),h=Qf(n.line.width),d;if(o||(d=GX.isOpenSymbol(n.symbol)),o||l||u||c||s){i.symbols=new Array(r),i.angles=new Array(r),i.colors=new Array(r),i.borderColors=new Array(r);var v=n.symbol,x=n.angle,b=bze(n,n.opacity,r),p=bze(n.line,n.opacity,r);if(!Qf(p[0])){var E=p;for(p=Array(r),a=0;aak.TOO_MANY_POINTS||tA.hasMarkers(t)?"rect":"round";if(u&&t.connectgaps){var f=a[0],h=a[1];for(o=0;o1?l[o]:l[0]:l,d=Qf(u)?u.length>1?u[o]:u[0]:u,v=wze[h],x=wze[d],b=c?c/.8+1:0,p=-x*b-x*.5;a.offset[o]=[v*b/f,p/f]}}return a}Lze.exports={style:JFt,markerStyle:WX,markerSelection:jX,linePositions:QFt,errorBarPositions:e7t,textPosition:t7t}});var ZX=ye((w0r,Pze)=>{"use strict";var jz=Mr();Pze.exports=function(t,r){var n=r._scene,i={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},a={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return r._scene||(n=r._scene={},n.init=function(){jz.extendFlat(n,a,i)},n.init(),n.update=function(s){var l=jz.repeat(s,n.count);if(n.fill2d&&n.fill2d.update(l),n.scatter2d&&n.scatter2d.update(l),n.line2d&&n.line2d.update(l),n.error2d&&n.error2d.update(l.concat(l)),n.select2d&&n.select2d.update(l),n.glText)for(var u=0;u{"use strict";var r7t=Oz(),iA=Mr(),Ize=af(),i7t=wg().findExtremes,Rze=Rg(),XX=q0(),n7t=XX.calcMarkerSize,a7t=XX.calcAxisExpansion,o7t=XX.setFirstScatter,s7t=z0(),nA=Y2(),l7t=ZX(),Dze=es().BADNUM,u7t=sx().TOO_MANY_POINTS;Fze.exports=function(t,r){var n=t._fullLayout,i=r._xA=Ize.getFromId(t,r.xaxis,"x"),a=r._yA=Ize.getFromId(t,r.yaxis,"y"),o=n._plots[r.xaxis+r.yaxis],s=r._length,l=s>=u7t,u=s*2,c={},f,h=i.makeCalcdata(r,"x"),d=a.makeCalcdata(r,"y"),v=Rze(r,i,"x",h),x=Rze(r,a,"y",d),b=v.vals,p=x.vals;r._x=b,r._y=p,r.xperiodalignment&&(r._origX=h,r._xStarts=v.starts,r._xEnds=v.ends),r.yperiodalignment&&(r._origY=d,r._yStarts=x.starts,r._yEnds=x.ends);var E=new Array(u),k=new Array(s);for(f=0;f1&&iA.extendFlat(o.line,nA.linePositions(e,r,n)),o.errorX||o.errorY){var s=nA.errorBarPositions(e,r,n,i,a);o.errorX&&iA.extendFlat(o.errorX,s.x),o.errorY&&iA.extendFlat(o.errorY,s.y)}return o.text&&(iA.extendFlat(o.text,{positions:n},nA.textPosition(e,r,o.text,o.marker)),iA.extendFlat(o.textSel,{positions:n},nA.textPosition(e,r,o.text,o.markerSel)),iA.extendFlat(o.textUnsel,{positions:n},nA.textPosition(e,r,o.text,o.markerUnsel))),o}});var YX=ye((A0r,Bze)=>{"use strict";var Oze=Mr(),f7t=va(),h7t=U1().DESELECTDIM;function d7t(e){var t=e[0],r=t.trace,n=t.t,i=n._scene,a=n.index,o=i.selectBatch[a],s=i.unselectBatch[a],l=i.textOptions[a],u=i.textSelectedOptions[a]||{},c=i.textUnselectedOptions[a]||{},f=Oze.extendFlat({},l),h,d;if(o.length||s.length){var v=u.color,x=c.color,b=l.color,p=Oze.isArrayOrTypedArray(b);for(f.color=new Array(r._length),h=0;h{"use strict";var Nze=lu(),v7t=YX().styleTextSelection;Uze.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l=n[0].t,u=s._length,c=l.x,f=l.y,h=l._scene,d=l.index;if(!h)return o;var v=Nze.hasText(s),x=Nze.hasMarkers(s),b=!x&&!v;if(s.visible!==!0||b)return o;var p=[],E=[];if(r!==!1&&!r.degenerate)for(var k=0;k{"use strict";var p7t=zz();Vze.exports={moduleType:"trace",name:"scattergl",basePlotModule:Jf(),categories:["gl","regl","cartesian","symbols","errorBarsOK","showLegend","scatter-like"],attributes:tk(),supplyDefaults:ADe(),crossTraceDefaults:$N(),colorbar:Kd(),formatLabels:MDe(),calc:qze(),hoverPoints:p7t.hoverPoints,selectPoints:KX(),meta:{}}});var jze=ye((E0r,Zz)=>{"use strict";var Wz=VE();Zz.exports=Gze;Zz.exports.to=Gze;Zz.exports.from=g7t;function Gze(e,t){t==null&&(t=!0);var r=e[0],n=e[1],i=e[2],a=e[3];a==null&&(a=t?1:255),t&&(r*=255,n*=255,i*=255,a*=255),r=Wz(r,0,255)&255,n=Wz(n,0,255)&255,i=Wz(i,0,255)&255,a=Wz(a,0,255)&255;var o=r*16777216+(n<<16)+(i<<8)+a;return o}function g7t(e,t){e=+e;var r=e>>>24,n=(e&16711680)>>>16,i=(e&65280)>>>8,a=e&255;return t===!1?[r,n,i,a]:[r/255,n/255,i/255,a/255]}});var bh=ye((k0r,Zze)=>{"use strict";var Wze=Object.getOwnPropertySymbols,m7t=Object.prototype.hasOwnProperty,y7t=Object.prototype.propertyIsEnumerable;function _7t(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function x7t(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},r=0;r<10;r++)t["_"+String.fromCharCode(r)]=r;var n=Object.getOwnPropertyNames(t).map(function(a){return t[a]});if(n.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(a){i[a]=a}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch(a){return!1}}Zze.exports=x7t()?Object.assign:function(e,t){for(var r,n=_7t(e),i,a=1;a{Xze.exports=function(e){typeof e=="string"&&(e=[e]);for(var t=[].slice.call(arguments,1),r=[],n=0;n{"use strict";Kze.exports=function(t,r,n){Array.isArray(n)||(n=[].slice.call(arguments,2));for(var i=0,a=n.length;i{"use strict";Jze.exports=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion))});var Xz=ye((I0r,aA)=>{"use strict";aA.exports=ok;aA.exports.float32=aA.exports.float=ok;aA.exports.fract32=aA.exports.fract=b7t;var Qze=new Float32Array(1);function b7t(e,t){if(e.length){if(e instanceof Float32Array)return new Float32Array(e.length);t instanceof Float32Array||(t=ok(e));for(var r=0,n=t.length;r{"use strict";function w7t(e,t){var r=e==null?null:typeof Symbol!="undefined"&&e[Symbol.iterator]||e["@@iterator"];if(r!=null){var n,i,a,o,s=[],l=!0,u=!1;try{if(a=(r=r.call(e)).next,t===0){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);l=!0);}catch(c){u=!0,i=c}finally{try{if(!l&&r.return!=null&&(o=r.return(),Object(o)!==o))return}finally{if(u)throw i}}return s}}function T7t(e,t){return M7t(e)||w7t(e,t)||tFe(e,t)||C7t()}function A7t(e){return S7t(e)||E7t(e)||tFe(e)||k7t()}function S7t(e){if(Array.isArray(e))return $X(e)}function M7t(e){if(Array.isArray(e))return e}function E7t(e){if(typeof Symbol!="undefined"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function tFe(e,t){if(e){if(typeof e=="string")return $X(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $X(e,t)}}function $X(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r 1.0 + delta) { + discard; + } + + alpha -= smoothstep(1.0 - delta, 1.0 + delta, radius); + + float borderRadius = fragBorderRadius; + float ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius); + vec4 color = mix(fragColor, fragBorderColor, ratio); + color.a *= alpha * opacity; + gl_FragColor = color; +} +`]),v.vert=Yz([`precision highp float; +#define GLSLIFY 1 + +attribute float x, y, xFract, yFract; +attribute float size, borderSize; +attribute vec4 colorId, borderColorId; +attribute float isActive; + +// \`invariant\` effectively turns off optimizations for the position. +// We need this because -fast-math on M1 Macs is re-ordering +// floating point operations in a way that causes floating point +// precision limits to put points in the wrong locations. +invariant gl_Position; + +uniform bool constPointSize; +uniform float pixelRatio; +uniform vec2 paletteSize, scale, scaleFract, translate, translateFract; +uniform sampler2D paletteTexture; + +const float maxSize = 100.; + +varying vec4 fragColor, fragBorderColor; +varying float fragBorderRadius, fragWidth; + +float pointSizeScale = (constPointSize) ? 2. : pixelRatio; + +bool isDirect = (paletteSize.x < 1.); + +vec4 getColor(vec4 id) { + return isDirect ? id / 255. : texture2D(paletteTexture, + vec2( + (id.x + .5) / paletteSize.x, + (id.y + .5) / paletteSize.y + ) + ); +} + +void main() { + // ignore inactive points + if (isActive == 0.) return; + + vec2 position = vec2(x, y); + vec2 positionFract = vec2(xFract, yFract); + + vec4 color = getColor(colorId); + vec4 borderColor = getColor(borderColorId); + + float size = size * maxSize / 255.; + float borderSize = borderSize * maxSize / 255.; + + gl_PointSize = (size + borderSize) * pointSizeScale; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + gl_Position = vec4(pos * 2. - 1., 0., 1.); + + fragBorderRadius = 1. - 2. * borderSize / (size + borderSize); + fragColor = color; + fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor; + fragWidth = 1. / gl_PointSize; +} +`]),eFe&&(v.frag=v.frag.replace("smoothstep","smoothStep"),d.frag=d.frag.replace("smoothstep","smoothStep")),this.drawCircle=e(v)}rv.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4};rv.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this};rv.prototype.draw=function(){for(var e=this,t=arguments.length,r=new Array(t),n=0;nre)?N.tree=R7t(G,{bounds:ge}):re&&re.length&&(N.tree=re),N.tree){var ie={primitive:"points",usage:"static",data:N.tree,type:"uint32"};N.elements?N.elements(ie):N.elements=o.elements(ie)}var Te=Kz.float32(G);ae({data:Te,usage:"dynamic"});var Ee=Kz.fract32(G,Te);return _e({data:Ee,usage:"dynamic"}),Me({data:new Uint8Array(ke),type:"uint8",usage:"stream"}),G}},{marker:function(G,N,W){var re=N.activation;if(re.forEach(function(Ee){return Ee&&Ee.destroy&&Ee.destroy()}),re.length=0,!G||typeof G[0]=="number"){var ae=e.addMarker(G);re[ae]=!0}else{for(var _e=[],Me=0,ke=Math.min(G.length,N.count);Me=0)return i;var a;if(e instanceof Uint8Array||e instanceof Uint8ClampedArray)a=e;else{a=new Uint8Array(e.length);for(var o=0,s=e.length;on*4&&(this.tooManyColors=!0),this.updatePalette(r),i.length===1?i[0]:i};rv.prototype.updatePalette=function(e){if(!this.tooManyColors){var t=this.maxColors,r=this.paletteTexture,n=Math.ceil(e.length*.25/t);if(n>1){e=e.slice();for(var i=e.length*.25%t;i{"use strict";iY.exports=Qz;iY.exports.default=Qz;function Qz(e,t,r){r=r||2;var n=t&&t.length,i=n?t[0]*r:e.length,a=nFe(e,0,i,r,!0),o=[];if(!a||a.next===a.prev)return o;var s,l,u,c,f,h,d;if(n&&(a=j7t(e,t,a,r)),e.length>80*r){s=u=e[0],l=c=e[1];for(var v=r;vu&&(u=f),h>c&&(c=h);d=Math.max(u-s,c-l),d=d!==0?32767/d:0}return sk(a,o,r,s,l,d,0),o}function nFe(e,t,r,n,i){var a,o;if(i===rY(e,t,r,n)>0)for(a=t;a=t;a-=n)o=iFe(a,e[a],e[a+1],o);return o&&eF(o,o.next)&&(uk(o),o=o.next),o}function J2(e,t){if(!e)return e;t||(t=e);var r=e,n;do if(n=!1,!r.steiner&&(eF(r,r.next)||eh(r.prev,r,r.next)===0)){if(uk(r),r=t=r.prev,r===r.next)break;n=!0}else r=r.next;while(n||r!==t);return t}function sk(e,t,r,n,i,a,o){if(e){!o&&a&&K7t(e,n,i,a);for(var s=e,l,u;e.prev!==e.next;){if(l=e.prev,u=e.next,a?V7t(e,n,i,a):U7t(e)){t.push(l.i/r|0),t.push(e.i/r|0),t.push(u.i/r|0),uk(e),e=u.next,s=u.next;continue}if(e=u,e===s){o?o===1?(e=H7t(J2(e),t,r),sk(e,t,r,n,i,a,2)):o===2&&G7t(e,t,r,n,i,a):sk(J2(e),t,r,n,i,a,1);break}}}}function U7t(e){var t=e.prev,r=e,n=e.next;if(eh(t,r,n)>=0)return!1;for(var i=t.x,a=r.x,o=n.x,s=t.y,l=r.y,u=n.y,c=ia?i>o?i:o:a>o?a:o,d=s>l?s>u?s:u:l>u?l:u,v=n.next;v!==t;){if(v.x>=c&&v.x<=h&&v.y>=f&&v.y<=d&&oA(i,s,a,l,o,u,v.x,v.y)&&eh(v.prev,v,v.next)>=0)return!1;v=v.next}return!0}function V7t(e,t,r,n){var i=e.prev,a=e,o=e.next;if(eh(i,a,o)>=0)return!1;for(var s=i.x,l=a.x,u=o.x,c=i.y,f=a.y,h=o.y,d=sl?s>u?s:u:l>u?l:u,b=c>f?c>h?c:h:f>h?f:h,p=eY(d,v,t,r,n),E=eY(x,b,t,r,n),k=e.prevZ,A=e.nextZ;k&&k.z>=p&&A&&A.z<=E;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&oA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0||(k=k.prevZ,A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&oA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0))return!1;A=A.nextZ}for(;k&&k.z>=p;){if(k.x>=d&&k.x<=x&&k.y>=v&&k.y<=b&&k!==i&&k!==o&&oA(s,c,l,f,u,h,k.x,k.y)&&eh(k.prev,k,k.next)>=0)return!1;k=k.prevZ}for(;A&&A.z<=E;){if(A.x>=d&&A.x<=x&&A.y>=v&&A.y<=b&&A!==i&&A!==o&&oA(s,c,l,f,u,h,A.x,A.y)&&eh(A.prev,A,A.next)>=0)return!1;A=A.nextZ}return!0}function H7t(e,t,r){var n=e;do{var i=n.prev,a=n.next.next;!eF(i,a)&&aFe(i,n,n.next,a)&&lk(i,a)&&lk(a,i)&&(t.push(i.i/r|0),t.push(n.i/r|0),t.push(a.i/r|0),uk(n),uk(n.next),n=e=a),n=n.next}while(n!==e);return J2(n)}function G7t(e,t,r,n,i,a){var o=e;do{for(var s=o.next.next;s!==o.prev;){if(o.i!==s.i&&Q7t(o,s)){var l=oFe(o,s);o=J2(o,o.next),l=J2(l,l.next),sk(o,t,r,n,i,a,0),sk(l,t,r,n,i,a,0);return}s=s.next}o=o.next}while(o!==e)}function j7t(e,t,r,n){var i=[],a,o,s,l,u;for(a=0,o=t.length;a=r.next.y&&r.next.y!==r.y){var s=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(s<=n&&s>a&&(a=s,o=r.x=r.x&&r.x>=u&&n!==r.x&&oA(io.x||r.x===o.x&&Y7t(o,r)))&&(o=r,f=h)),r=r.next;while(r!==l);return o}function Y7t(e,t){return eh(e.prev,e,t.prev)<0&&eh(t.next,e,e.next)<0}function K7t(e,t,r,n){var i=e;do i.z===0&&(i.z=eY(i.x,i.y,t,r,n)),i.prevZ=i.prev,i.nextZ=i.next,i=i.next;while(i!==e);i.prevZ.nextZ=null,i.prevZ=null,J7t(i)}function J7t(e){var t,r,n,i,a,o,s,l,u=1;do{for(r=e,e=null,a=null,o=0;r;){for(o++,n=r,s=0,t=0;t0||l>0&&n;)s!==0&&(l===0||!n||r.z<=n.z)?(i=r,r=r.nextZ,s--):(i=n,n=n.nextZ,l--),a?a.nextZ=i:e=i,i.prevZ=a,a=i;r=n}a.nextZ=null,u*=2}while(o>1);return e}function eY(e,t,r,n,i){return e=(e-r)*i|0,t=(t-n)*i|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function $7t(e){var t=e,r=e;do(t.x=(e-o)*(a-s)&&(e-o)*(n-s)>=(r-o)*(t-s)&&(r-o)*(a-s)>=(i-o)*(n-s)}function Q7t(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!e9t(e,t)&&(lk(e,t)&&lk(t,e)&&t9t(e,t)&&(eh(e.prev,e,t.prev)||eh(e,t.prev,t))||eF(e,t)&&eh(e.prev,e,e.next)>0&&eh(t.prev,t,t.next)>0)}function eh(e,t,r){return(t.y-e.y)*(r.x-t.x)-(t.x-e.x)*(r.y-t.y)}function eF(e,t){return e.x===t.x&&e.y===t.y}function aFe(e,t,r,n){var i=$z(eh(e,t,r)),a=$z(eh(e,t,n)),o=$z(eh(r,n,e)),s=$z(eh(r,n,t));return!!(i!==a&&o!==s||i===0&&Jz(e,r,t)||a===0&&Jz(e,n,t)||o===0&&Jz(r,e,n)||s===0&&Jz(r,t,n))}function Jz(e,t,r){return t.x<=Math.max(e.x,r.x)&&t.x>=Math.min(e.x,r.x)&&t.y<=Math.max(e.y,r.y)&&t.y>=Math.min(e.y,r.y)}function $z(e){return e>0?1:e<0?-1:0}function e9t(e,t){var r=e;do{if(r.i!==e.i&&r.next.i!==e.i&&r.i!==t.i&&r.next.i!==t.i&&aFe(r,r.next,e,t))return!0;r=r.next}while(r!==e);return!1}function lk(e,t){return eh(e.prev,e,e.next)<0?eh(e,t,e.next)>=0&&eh(e,e.prev,t)>=0:eh(e,t,e.prev)<0||eh(e,e.next,t)<0}function t9t(e,t){var r=e,n=!1,i=(e.x+t.x)/2,a=(e.y+t.y)/2;do r.y>a!=r.next.y>a&&r.next.y!==r.y&&i<(r.next.x-r.x)*(a-r.y)/(r.next.y-r.y)+r.x&&(n=!n),r=r.next;while(r!==e);return n}function oFe(e,t){var r=new tY(e.i,e.x,e.y),n=new tY(t.i,t.x,t.y),i=e.next,a=t.prev;return e.next=t,t.prev=e,r.next=i,i.prev=r,n.next=r,r.prev=n,a.next=n,n.prev=a,n}function iFe(e,t,r,n){var i=new tY(e,t,r);return n?(i.next=n.next,i.prev=n,n.next.prev=i,n.next=i):(i.prev=i,i.next=i),i}function uk(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function tY(e,t,r){this.i=e,this.x=t,this.y=r,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}Qz.deviation=function(e,t,r,n){var i=t&&t.length,a=i?t[0]*r:e.length,o=Math.abs(rY(e,0,a,r));if(i)for(var s=0,l=t.length;s0&&(n+=e[i-1].length,r.holes.push(n))}return r}});var uFe=ye((z0r,lFe)=>{"use strict";var r9t=j2();lFe.exports=i9t;function i9t(e,t,r){if(!e||e.length==null)throw Error("Argument should be an array");t==null&&(t=1),r==null&&(r=r9t(e,t));for(var n=0;n{"use strict";cFe.exports=function(){var e,t;if(typeof WeakMap!="function")return!1;try{e=new WeakMap([[t={},"one"],[{},"two"],[{},"three"]])}catch(r){return!1}return!(String(e)!=="[object WeakMap]"||typeof e.set!="function"||e.set({},1)!==e||typeof e.delete!="function"||typeof e.has!="function"||e.get(t)!=="one")}});var dFe=ye((q0r,hFe)=>{"use strict";hFe.exports=function(){}});var lx=ye((O0r,vFe)=>{"use strict";var n9t=dFe()();vFe.exports=function(e){return e!==n9t&&e!==null}});var nY=ye((B0r,gFe)=>{"use strict";var a9t=Object.create,o9t=Object.getPrototypeOf,pFe={};gFe.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||a9t;return typeof e!="function"?!1:o9t(e(t(null),pFe))===pFe}});var aY=ye((N0r,mFe)=>{"use strict";var s9t=lx(),l9t={function:!0,object:!0};mFe.exports=function(e){return s9t(e)&&l9t[typeof e]||!1}});var i1=ye((U0r,yFe)=>{"use strict";var u9t=lx();yFe.exports=function(e){if(!u9t(e))throw new TypeError("Cannot use null or undefined");return e}});var xFe=ye((V0r,_Fe)=>{"use strict";var oY=Object.create,tF;nY()()||(tF=sY());_Fe.exports=function(){var e,t,r;return!tF||tF.level!==1?oY:(e={},t={},r={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(n){if(n==="__proto__"){t[n]={configurable:!0,enumerable:!1,writable:!0,value:void 0};return}t[n]=r}),Object.defineProperties(e,t),Object.defineProperty(tF,"nullPolyfill",{configurable:!1,enumerable:!1,writable:!1,value:e}),function(n,i){return oY(n===null?e:n,i)})}()});var sY=ye((H0r,bFe)=>{"use strict";var c9t=aY(),f9t=i1(),h9t=Object.prototype.isPrototypeOf,d9t=Object.defineProperty,v9t={configurable:!0,enumerable:!1,writable:!0,value:void 0},rF;rF=function(e,t){if(f9t(e),t===null||c9t(t))return e;throw new TypeError("Prototype must be null or an object")};bFe.exports=function(e){var t,r;return e?(e.level===2?e.set?(r=e.set,t=function(n,i){return r.call(rF(n,i),i),n}):t=function(n,i){return rF(n,i).__proto__=i,n}:t=function n(i,a){var o;return rF(i,a),o=h9t.call(n.nullPolyfill,i),o&&delete n.nullPolyfill.__proto__,a===null&&(a=n.nullPolyfill),i.__proto__=a,o&&d9t(n.nullPolyfill,"__proto__",v9t),i},Object.defineProperty(t,"level",{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null}(function(){var e=Object.create(null),t={},r,n=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__");if(n){try{r=n.set,r.call(e,t)}catch(i){}if(Object.getPrototypeOf(e)===t)return{set:r,level:2}}return e.__proto__=t,Object.getPrototypeOf(e)===t?{level:2}:(e={},e.__proto__=t,Object.getPrototypeOf(e)===t?{level:1}:!1)}());xFe()});var iF=ye((G0r,wFe)=>{"use strict";wFe.exports=nY()()?Object.setPrototypeOf:sY()});var AFe=ye((j0r,TFe)=>{"use strict";var p9t=aY();TFe.exports=function(e){if(!p9t(e))throw new TypeError(e+" is not an Object");return e}});var MFe=ye((W0r,SFe)=>{"use strict";var g9t=Object.create(null),m9t=Math.random;SFe.exports=function(){var e;do e=m9t().toString(36).slice(2);while(g9t[e]);return e}});var $2=ye((Z0r,EFe)=>{"use strict";var y9t=void 0;EFe.exports=function(e){return e!==y9t&&e!==null}});var nF=ye((X0r,kFe)=>{"use strict";var _9t=$2(),x9t={object:!0,function:!0,undefined:!0};kFe.exports=function(e){return _9t(e)?hasOwnProperty.call(x9t,typeof e):!1}});var LFe=ye((Y0r,CFe)=>{"use strict";var b9t=nF();CFe.exports=function(e){if(!b9t(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch(t){return!1}}});var IFe=ye((K0r,PFe)=>{"use strict";var w9t=LFe();PFe.exports=function(e){if(typeof e!="function"||!hasOwnProperty.call(e,"length"))return!1;try{if(typeof e.length!="number"||typeof e.call!="function"||typeof e.apply!="function")return!1}catch(t){return!1}return!w9t(e)}});var lY=ye((J0r,RFe)=>{"use strict";var T9t=IFe(),A9t=/^\s*class[\s{/}]/,S9t=Function.prototype.toString;RFe.exports=function(e){return!(!T9t(e)||A9t.test(S9t.call(e)))}});var zFe=ye(($0r,DFe)=>{"use strict";DFe.exports=function(){var e=Object.assign,t;return typeof e!="function"?!1:(t={foo:"raz"},e(t,{bar:"dwa"},{trzy:"trzy"}),t.foo+t.bar+t.trzy==="razdwatrzy")}});var qFe=ye((Q0r,FFe)=>{"use strict";FFe.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}});var BFe=ye((egr,OFe)=>{"use strict";var M9t=lx(),E9t=Object.keys;OFe.exports=function(e){return E9t(M9t(e)?Object(e):e)}});var UFe=ye((tgr,NFe)=>{"use strict";NFe.exports=qFe()()?Object.keys:BFe()});var HFe=ye((rgr,VFe)=>{"use strict";var k9t=UFe(),C9t=i1(),L9t=Math.max;VFe.exports=function(e,t){var r,n,i=L9t(arguments.length,2),a;for(e=Object(C9t(e)),a=function(o){try{e[o]=t[o]}catch(s){r||(r=s)}},n=1;n{"use strict";GFe.exports=zFe()()?Object.assign:HFe()});var uY=ye((ngr,jFe)=>{"use strict";var P9t=lx(),I9t=Array.prototype.forEach,R9t=Object.create,D9t=function(e,t){var r;for(r in e)t[r]=e[r]};jFe.exports=function(e){var t=R9t(null);return I9t.call(arguments,function(r){P9t(r)&&D9t(Object(r),t)}),t}});var ZFe=ye((agr,WFe)=>{"use strict";var cY="razdwatrzy";WFe.exports=function(){return typeof cY.contains!="function"?!1:cY.contains("dwa")===!0&&cY.contains("foo")===!1}});var YFe=ye((ogr,XFe)=>{"use strict";var z9t=String.prototype.indexOf;XFe.exports=function(e){return z9t.call(this,e,arguments[1])>-1}});var fY=ye((sgr,KFe)=>{"use strict";KFe.exports=ZFe()()?String.prototype.contains:YFe()});var n1=ye((lgr,e7e)=>{"use strict";var oF=$2(),JFe=lY(),$Fe=aF(),QFe=uY(),ck=fY(),F9t=e7e.exports=function(e,t){var r,n,i,a,o;return arguments.length<2||typeof e!="string"?(a=t,t=e,e=null):a=arguments[2],oF(e)?(r=ck.call(e,"c"),n=ck.call(e,"e"),i=ck.call(e,"w")):(r=i=!0,n=!1),o={value:t,configurable:r,enumerable:n,writable:i},a?$Fe(QFe(a),o):o};F9t.gs=function(e,t,r){var n,i,a,o;return typeof e!="string"?(a=r,r=t,t=e,e=null):a=arguments[3],oF(t)?JFe(t)?oF(r)?JFe(r)||(a=r,r=void 0):r=void 0:(a=t,t=r=void 0):t=void 0,oF(e)?(n=ck.call(e,"c"),i=ck.call(e,"e")):(n=!0,i=!1),o={get:t,set:r,configurable:n,enumerable:i},a?$Fe(QFe(a),o):o}});var fk=ye((ugr,r7e)=>{"use strict";var t7e=Object.prototype.toString,q9t=t7e.call(function(){return arguments}());r7e.exports=function(e){return t7e.call(e)===q9t}});var hk=ye((cgr,n7e)=>{"use strict";var i7e=Object.prototype.toString,O9t=i7e.call("");n7e.exports=function(e){return typeof e=="string"||e&&typeof e=="object"&&(e instanceof String||i7e.call(e)===O9t)||!1}});var o7e=ye((fgr,a7e)=>{"use strict";a7e.exports=function(){return typeof globalThis!="object"||!globalThis?!1:globalThis.Array===Array}});var u7e=ye((hgr,l7e)=>{var s7e=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};l7e.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch(e){return s7e()}try{return __global__||s7e()}finally{delete Object.prototype.__global__}}()});var dk=ye((dgr,c7e)=>{"use strict";c7e.exports=o7e()()?globalThis:u7e()});var h7e=ye((vgr,f7e)=>{"use strict";var B9t=dk(),hY={object:!0,symbol:!0};f7e.exports=function(){var e=B9t.Symbol,t;if(typeof e!="function")return!1;t=e("test symbol");try{String(t)}catch(r){return!1}return!(!hY[typeof e.iterator]||!hY[typeof e.toPrimitive]||!hY[typeof e.toStringTag])}});var v7e=ye((pgr,d7e)=>{"use strict";d7e.exports=function(e){return e?typeof e=="symbol"?!0:!e.constructor||e.constructor.name!=="Symbol"?!1:e[e.constructor.toStringTag]==="Symbol":!1}});var dY=ye((ggr,p7e)=>{"use strict";var N9t=v7e();p7e.exports=function(e){if(!N9t(e))throw new TypeError(e+" is not a symbol");return e}});var x7e=ye((mgr,_7e)=>{"use strict";var g7e=n1(),U9t=Object.create,m7e=Object.defineProperty,V9t=Object.prototype,y7e=U9t(null);_7e.exports=function(e){for(var t=0,r,n;y7e[e+(t||"")];)++t;return e+=t||"",y7e[e]=!0,r="@@"+e,m7e(V9t,r,g7e.gs(null,function(i){n||(n=!0,m7e(this,r,g7e(i)),n=!1)})),r}});var w7e=ye((ygr,b7e)=>{"use strict";var Qg=n1(),wh=dk().Symbol;b7e.exports=function(e){return Object.defineProperties(e,{hasInstance:Qg("",wh&&wh.hasInstance||e("hasInstance")),isConcatSpreadable:Qg("",wh&&wh.isConcatSpreadable||e("isConcatSpreadable")),iterator:Qg("",wh&&wh.iterator||e("iterator")),match:Qg("",wh&&wh.match||e("match")),replace:Qg("",wh&&wh.replace||e("replace")),search:Qg("",wh&&wh.search||e("search")),species:Qg("",wh&&wh.species||e("species")),split:Qg("",wh&&wh.split||e("split")),toPrimitive:Qg("",wh&&wh.toPrimitive||e("toPrimitive")),toStringTag:Qg("",wh&&wh.toStringTag||e("toStringTag")),unscopables:Qg("",wh&&wh.unscopables||e("unscopables"))})}});var S7e=ye((_gr,A7e)=>{"use strict";var T7e=n1(),H9t=dY(),vk=Object.create(null);A7e.exports=function(e){return Object.defineProperties(e,{for:T7e(function(t){return vk[t]?vk[t]:vk[t]=e(String(t))}),keyFor:T7e(function(t){var r;H9t(t);for(r in vk)if(vk[r]===t)return r})})}});var k7e=ye((xgr,E7e)=>{"use strict";var Xm=n1(),vY=dY(),sF=dk().Symbol,G9t=x7e(),j9t=w7e(),W9t=S7e(),Z9t=Object.create,pY=Object.defineProperties,lF=Object.defineProperty,Wv,sA,M7e;if(typeof sF=="function")try{String(sF()),M7e=!0}catch(e){}else sF=null;sA=function(t){if(this instanceof sA)throw new TypeError("Symbol is not a constructor");return Wv(t)};E7e.exports=Wv=function e(t){var r;if(this instanceof e)throw new TypeError("Symbol is not a constructor");return M7e?sF(t):(r=Z9t(sA.prototype),t=t===void 0?"":String(t),pY(r,{__description__:Xm("",t),__name__:Xm("",G9t(t))}))};j9t(Wv);W9t(Wv);pY(sA.prototype,{constructor:Xm(Wv),toString:Xm("",function(){return this.__name__})});pY(Wv.prototype,{toString:Xm(function(){return"Symbol ("+vY(this).__description__+")"}),valueOf:Xm(function(){return vY(this)})});lF(Wv.prototype,Wv.toPrimitive,Xm("",function(){var e=vY(this);return typeof e=="symbol"?e:e.toString()}));lF(Wv.prototype,Wv.toStringTag,Xm("c","Symbol"));lF(sA.prototype,Wv.toStringTag,Xm("c",Wv.prototype[Wv.toStringTag]));lF(sA.prototype,Wv.toPrimitive,Xm("c",Wv.prototype[Wv.toPrimitive]))});var ux=ye((bgr,C7e)=>{"use strict";C7e.exports=h7e()()?dk().Symbol:k7e()});var P7e=ye((wgr,L7e)=>{"use strict";var X9t=i1();L7e.exports=function(){return X9t(this).length=0,this}});var lA=ye((Tgr,I7e)=>{"use strict";I7e.exports=function(e){if(typeof e!="function")throw new TypeError(e+" is not a function");return e}});var D7e=ye((Agr,R7e)=>{"use strict";var Y9t=$2(),K9t=nF(),J9t=Object.prototype.toString;R7e.exports=function(e){if(!Y9t(e))return null;if(K9t(e)){var t=e.toString;if(typeof t!="function"||t===J9t)return null}try{return""+e}catch(r){return null}}});var F7e=ye((Sgr,z7e)=>{"use strict";z7e.exports=function(e){try{return e.toString()}catch(t){try{return String(e)}catch(r){return null}}}});var O7e=ye((Mgr,q7e)=>{"use strict";var $9t=F7e(),Q9t=/[\n\r\u2028\u2029]/g;q7e.exports=function(e){var t=$9t(e);return t===null?"":(t.length>100&&(t=t.slice(0,99)+"\u2026"),t=t.replace(Q9t,function(r){switch(r){case` +`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}),t)}});var gY=ye((Egr,U7e)=>{"use strict";var B7e=$2(),eqt=nF(),tqt=D7e(),rqt=O7e(),N7e=function(e,t){return e.replace("%v",rqt(t))};U7e.exports=function(e,t,r){if(!eqt(r))throw new TypeError(N7e(t,e));if(!B7e(e)){if("default"in r)return r.default;if(r.isOptional)return null}var n=tqt(r.errorMessage);throw B7e(n)||(n=t),new TypeError(N7e(n,e))}});var H7e=ye((kgr,V7e)=>{"use strict";var iqt=gY(),nqt=$2();V7e.exports=function(e){return nqt(e)?e:iqt(e,"Cannot use %v",arguments[1])}});var j7e=ye((Cgr,G7e)=>{"use strict";var aqt=gY(),oqt=lY();G7e.exports=function(e){return oqt(e)?e:aqt(e,"%v is not a plain function",arguments[1])}});var Z7e=ye((Lgr,W7e)=>{"use strict";W7e.exports=function(){var e=Array.from,t,r;return typeof e!="function"?!1:(t=["raz","dwa"],r=e(t),!!(r&&r!==t&&r[1]==="dwa"))}});var Y7e=ye((Pgr,X7e)=>{"use strict";var sqt=Object.prototype.toString,lqt=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);X7e.exports=function(e){return typeof e=="function"&&lqt(sqt.call(e))}});var J7e=ye((Igr,K7e)=>{"use strict";K7e.exports=function(){var e=Math.sign;return typeof e!="function"?!1:e(10)===1&&e(-20)===-1}});var Q7e=ye((Rgr,$7e)=>{"use strict";$7e.exports=function(e){return e=Number(e),isNaN(e)||e===0?e:e>0?1:-1}});var t9e=ye((Dgr,e9e)=>{"use strict";e9e.exports=J7e()()?Math.sign:Q7e()});var i9e=ye((zgr,r9e)=>{"use strict";var uqt=t9e(),cqt=Math.abs,fqt=Math.floor;r9e.exports=function(e){return isNaN(e)?0:(e=Number(e),e===0||!isFinite(e)?e:uqt(e)*fqt(cqt(e)))}});var a9e=ye((Fgr,n9e)=>{"use strict";var hqt=i9e(),dqt=Math.max;n9e.exports=function(e){return dqt(0,hqt(e))}});var u9e=ye((qgr,l9e)=>{"use strict";var vqt=ux().iterator,pqt=fk(),gqt=Y7e(),mqt=a9e(),o9e=lA(),yqt=i1(),_qt=lx(),xqt=hk(),s9e=Array.isArray,mY=Function.prototype.call,Q2={configurable:!0,enumerable:!0,writable:!0,value:null},yY=Object.defineProperty;l9e.exports=function(e){var t=arguments[1],r=arguments[2],n,i,a,o,s,l,u,c,f,h;if(e=Object(yqt(e)),_qt(t)&&o9e(t),!this||this===Array||!gqt(this)){if(!t){if(pqt(e))return s=e.length,s!==1?Array.apply(null,e):(o=new Array(1),o[0]=e[0],o);if(s9e(e)){for(o=new Array(s=e.length),i=0;i=55296&&l<=56319&&(h+=e[++i])),h=t?mY.call(t,r,h,a):h,n?(Q2.value=h,yY(o,a,Q2)):o[a]=h,++a;s=a}}if(s===void 0)for(s=mqt(e.length),n&&(o=new n(s)),i=0;i{"use strict";c9e.exports=Z7e()()?Array.from:u9e()});var d9e=ye((Bgr,h9e)=>{"use strict";var bqt=f9e(),wqt=aF(),Tqt=i1();h9e.exports=function(e){var t=Object(Tqt(e)),r=arguments[1],n=Object(arguments[2]);if(t!==e&&!r)return t;var i={};return r?bqt(r,function(a){(n.ensure||a in e)&&(i[a]=e[a])}):wqt(i,e),i}});var g9e=ye((Ngr,p9e)=>{"use strict";var Aqt=lA(),Sqt=i1(),Mqt=Function.prototype.bind,v9e=Function.prototype.call,Eqt=Object.keys,kqt=Object.prototype.propertyIsEnumerable;p9e.exports=function(e,t){return function(r,n){var i,a=arguments[2],o=arguments[3];return r=Object(Sqt(r)),Aqt(n),i=Eqt(r),o&&i.sort(typeof o=="function"?Mqt.call(o,r):void 0),typeof e!="function"&&(e=i[e]),v9e.call(e,i,function(s,l){return kqt.call(r,s)?v9e.call(n,a,r[s],s,r,l):t})}}});var y9e=ye((Ugr,m9e)=>{"use strict";m9e.exports=g9e()("forEach")});var x9e=ye((Vgr,_9e)=>{"use strict";var Cqt=lA(),Lqt=y9e(),Pqt=Function.prototype.call;_9e.exports=function(e,t){var r={},n=arguments[2];return Cqt(t),Lqt(e,function(i,a,o,s){r[a]=Pqt.call(t,n,i,a,o,s)}),r}});var A9e=ye((Hgr,T9e)=>{"use strict";var Iqt=$2(),Rqt=H7e(),b9e=j7e(),Dqt=d9e(),zqt=uY(),Fqt=x9e(),qqt=Function.prototype.bind,Oqt=Object.defineProperty,Bqt=Object.prototype.hasOwnProperty,w9e;w9e=function(e,t,r){var n=Rqt(t)&&b9e(t.value),i;return i=Dqt(t),delete i.writable,delete i.value,i.get=function(){return!r.overwriteDefinition&&Bqt.call(this,e)?n:(t.value=qqt.call(n,r.resolveContext?r.resolveContext(this):this),Oqt(this,e,t),this[e])},i};T9e.exports=function(e){var t=zqt(arguments[1]);return Iqt(t.resolveContext)&&b9e(t.resolveContext),Fqt(e,function(r,n){return w9e(n,r,t)})}});var _Y=ye((Ggr,k9e)=>{"use strict";var Nqt=P7e(),Uqt=aF(),Vqt=lA(),Hqt=i1(),Op=n1(),Gqt=A9e(),S9e=ux(),M9e=Object.defineProperty,E9e=Object.defineProperties,pk;k9e.exports=pk=function(e,t){if(!(this instanceof pk))throw new TypeError("Constructor requires 'new'");E9e(this,{__list__:Op("w",Hqt(e)),__context__:Op("w",t),__nextIndex__:Op("w",0)}),t&&(Vqt(t.on),t.on("_add",this._onAdd),t.on("_delete",this._onDelete),t.on("_clear",this._onClear))};delete pk.prototype.constructor;E9e(pk.prototype,Uqt({_next:Op(function(){var e;if(this.__list__){if(this.__redo__&&(e=this.__redo__.shift(),e!==void 0))return e;if(this.__nextIndex__=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){M9e(this,"__redo__",Op("c",[e]));return}this.__redo__.forEach(function(t,r){t>=e&&(this.__redo__[r]=++t)},this),this.__redo__.push(e)}}),_onDelete:Op(function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(t=this.__redo__.indexOf(e),t!==-1&&this.__redo__.splice(t,1),this.__redo__.forEach(function(r,n){r>e&&(this.__redo__[n]=--r)},this)))}),_onClear:Op(function(){this.__redo__&&Nqt.call(this.__redo__),this.__nextIndex__=0})})));M9e(pk.prototype,S9e.iterator,Op(function(){return this}))});var R9e=ye((jgr,I9e)=>{"use strict";var C9e=iF(),L9e=fY(),xY=n1(),jqt=ux(),bY=_Y(),P9e=Object.defineProperty,uA;uA=I9e.exports=function(e,t){if(!(this instanceof uA))throw new TypeError("Constructor requires 'new'");bY.call(this,e),t?L9e.call(t,"key+value")?t="key+value":L9e.call(t,"key")?t="key":t="value":t="value",P9e(this,"__kind__",xY("",t))};C9e&&C9e(uA,bY);delete uA.prototype.constructor;uA.prototype=Object.create(bY.prototype,{_resolve:xY(function(e){return this.__kind__==="value"?this.__list__[e]:this.__kind__==="key+value"?[e,this.__list__[e]]:e})});P9e(uA.prototype,jqt.toStringTag,xY("c","Array Iterator"))});var q9e=ye((Wgr,F9e)=>{"use strict";var D9e=iF(),uF=n1(),Wqt=ux(),wY=_Y(),z9e=Object.defineProperty,cA;cA=F9e.exports=function(e){if(!(this instanceof cA))throw new TypeError("Constructor requires 'new'");e=String(e),wY.call(this,e),z9e(this,"__length__",uF("",e.length))};D9e&&D9e(cA,wY);delete cA.prototype.constructor;cA.prototype=Object.create(wY.prototype,{_next:uF(function(){if(this.__list__){if(this.__nextIndex__=55296&&r<=56319?t+this.__list__[this.__nextIndex__++]:t)})});z9e(cA.prototype,Wqt.toStringTag,uF("c","String Iterator"))});var B9e=ye((Zgr,O9e)=>{"use strict";var Zqt=fk(),Xqt=lx(),Yqt=hk(),Kqt=ux().iterator,Jqt=Array.isArray;O9e.exports=function(e){return Xqt(e)?Jqt(e)||Yqt(e)||Zqt(e)?!0:typeof e[Kqt]=="function":!1}});var U9e=ye((Xgr,N9e)=>{"use strict";var $qt=B9e();N9e.exports=function(e){if(!$qt(e))throw new TypeError(e+" is not iterable");return e}});var TY=ye((Ygr,G9e)=>{"use strict";var Qqt=fk(),eOt=hk(),V9e=R9e(),tOt=q9e(),rOt=U9e(),H9e=ux().iterator;G9e.exports=function(e){return typeof rOt(e)[H9e]=="function"?e[H9e]():Qqt(e)?new V9e(e):eOt(e)?new tOt(e):new V9e(e)}});var W9e=ye((Kgr,j9e)=>{"use strict";var iOt=fk(),nOt=lA(),aOt=hk(),oOt=TY(),sOt=Array.isArray,AY=Function.prototype.call,lOt=Array.prototype.some;j9e.exports=function(e,t){var r,n=arguments[2],i,a,o,s,l,u,c;if(sOt(e)||iOt(e)?r="array":aOt(e)?r="string":e=oOt(e),nOt(t),a=function(){o=!0},r==="array"){lOt.call(e,function(f){return AY.call(t,n,f,a),o});return}if(r==="string"){for(l=e.length,s=0;s=55296&&c<=56319&&(u+=e[++s])),AY.call(t,n,u,a),!o);++s);return}for(i=e.next();!i.done;){if(AY.call(t,n,i.value,a),o)return;i=e.next()}}});var X9e=ye((Jgr,Z9e)=>{"use strict";Z9e.exports=function(){return typeof WeakMap!="function"?!1:Object.prototype.toString.call(new WeakMap)==="[object WeakMap]"}()});var J9e=ye(($gr,K9e)=>{"use strict";var uOt=lx(),fF=iF(),cF=AFe(),cOt=i1(),fOt=MFe(),a1=n1(),hOt=TY(),dOt=W9e(),vOt=ux().toStringTag,Y9e=X9e(),pOt=Array.isArray,MY=Object.defineProperty,SY=Object.prototype.hasOwnProperty,gOt=Object.getPrototypeOf,cx;K9e.exports=cx=function(){var e=arguments[0],t;if(!(this instanceof cx))throw new TypeError("Constructor requires 'new'");return t=Y9e&&fF&&WeakMap!==cx?fF(new WeakMap,gOt(this)):this,uOt(e)&&(pOt(e)||(e=hOt(e))),MY(t,"__weakMapData__",a1("c","$weakMap$"+fOt())),e&&dOt(e,function(r){cOt(r),t.set(r[0],r[1])}),t};Y9e&&(fF&&fF(cx,WeakMap),cx.prototype=Object.create(WeakMap.prototype,{constructor:a1(cx)}));Object.defineProperties(cx.prototype,{delete:a1(function(e){return SY.call(cF(e),this.__weakMapData__)?(delete e[this.__weakMapData__],!0):!1}),get:a1(function(e){if(SY.call(cF(e),this.__weakMapData__))return e[this.__weakMapData__]}),has:a1(function(e){return SY.call(cF(e),this.__weakMapData__)}),set:a1(function(e,t){return MY(cF(e),this.__weakMapData__,a1("c",t)),this}),toString:a1(function(){return"[object WeakMap]"})});MY(cx.prototype,vOt,a1("c","WeakMap"))});var EY=ye((Qgr,$9e)=>{"use strict";$9e.exports=fFe()()?WeakMap:J9e()});var eqe=ye((emr,Q9e)=>{"use strict";Q9e.exports=function(e,t,r){if(typeof Array.prototype.findIndex=="function")return e.findIndex(t,r);if(typeof t!="function")throw new TypeError("predicate must be a function");var n=Object(e),i=n.length;if(i===0)return-1;for(var a=0;a{"use strict";var hF=$_(),mOt=j2(),CY=bh(),yOt=Zm(),_Ot=W2(),tqe=sFe(),xOt=uFe(),{float32:bOt,fract32:kY}=Xz(),wOt=EY(),rqe=Q5(),TOt=eqe(),AOt=` +precision highp float; + +attribute vec2 aCoord, bCoord, aCoordFract, bCoordFract; +attribute vec4 color; +attribute float lineEnd, lineTop; + +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float thickness, pixelRatio, id, depth; +uniform vec4 viewport; + +varying vec4 fragColor; +varying vec2 tangent; + +vec2 project(vec2 position, vec2 positionFract, vec2 scale, vec2 scaleFract, vec2 translate, vec2 translateFract) { + // the order is important + return position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; +} + +void main() { + float lineStart = 1. - lineEnd; + float lineOffset = lineTop * 2. - 1.; + + vec2 diff = (bCoord + bCoordFract - aCoord - aCoordFract); + tangent = normalize(diff * scale * viewport.zw); + vec2 normal = vec2(-tangent.y, tangent.x); + + vec2 position = project(aCoord, aCoordFract, scale, scaleFract, translate, translateFract) * lineStart + + project(bCoord, bCoordFract, scale, scaleFract, translate, translateFract) * lineEnd + + + thickness * normal * .5 * lineOffset / viewport.zw; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; +} +`,SOt=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; + +void main() { + float alpha = 1.; + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`,MOt=` +precision highp float; + +attribute vec2 position, positionFract; + +uniform vec4 color; +uniform vec2 scale, scaleFract, translate, translateFract; +uniform float pixelRatio, id; +uniform vec4 viewport; +uniform float opacity; + +varying vec4 fragColor; + +const float MAX_LINES = 256.; + +void main() { + float depth = (MAX_LINES - 4. - id) / (MAX_LINES); + + vec2 position = position * scale + translate + + positionFract * scale + translateFract + + position * scaleFract + + positionFract * scaleFract; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + fragColor = color / 255.; + fragColor.a *= opacity; +} +`,EOt=` +precision highp float; +varying vec4 fragColor; + +void main() { + gl_FragColor = fragColor; +} +`,kOt=` +precision highp float; + +attribute vec2 aCoord, bCoord, nextCoord, prevCoord; +attribute vec4 aColor, bColor; +attribute float lineEnd, lineTop; + +uniform vec2 scale, translate; +uniform float thickness, pixelRatio, id, depth; +uniform vec4 viewport; +uniform float miterLimit, miterMode; + +varying vec4 fragColor; +varying vec4 startCutoff, endCutoff; +varying vec2 tangent; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +const float REVERSE_THRESHOLD = -.875; +const float MIN_DIFF = 1e-6; + +// TODO: possible optimizations: avoid overcalculating all for vertices and calc just one instead +// TODO: precalculate dot products, normalize things beforehead etc. +// TODO: refactor to rectangular algorithm + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +bool isNaN( float val ){ + return ( val < 0.0 || 0.0 < val || val == 0.0 ) ? false : true; +} + +void main() { + vec2 aCoord = aCoord, bCoord = bCoord, prevCoord = prevCoord, nextCoord = nextCoord; + + vec2 adjustedScale; + adjustedScale.x = (abs(scale.x) < MIN_DIFF) ? MIN_DIFF : scale.x; + adjustedScale.y = (abs(scale.y) < MIN_DIFF) ? MIN_DIFF : scale.y; + + vec2 scaleRatio = adjustedScale * viewport.zw; + vec2 normalWidth = thickness / scaleRatio; + + float lineStart = 1. - lineEnd; + float lineBot = 1. - lineTop; + + fragColor = (lineStart * aColor + lineEnd * bColor) / 255.; + + if (isNaN(aCoord.x) || isNaN(aCoord.y) || isNaN(bCoord.x) || isNaN(bCoord.y)) return; + + if (aCoord == prevCoord) prevCoord = aCoord + normalize(bCoord - aCoord); + if (bCoord == nextCoord) nextCoord = bCoord - normalize(bCoord - aCoord); + + + vec2 prevDiff = aCoord - prevCoord; + vec2 currDiff = bCoord - aCoord; + vec2 nextDiff = nextCoord - bCoord; + + vec2 prevTangent = normalize(prevDiff * scaleRatio); + vec2 currTangent = normalize(currDiff * scaleRatio); + vec2 nextTangent = normalize(nextDiff * scaleRatio); + + vec2 prevNormal = vec2(-prevTangent.y, prevTangent.x); + vec2 currNormal = vec2(-currTangent.y, currTangent.x); + vec2 nextNormal = vec2(-nextTangent.y, nextTangent.x); + + vec2 startJoinDirection = normalize(prevTangent - currTangent); + vec2 endJoinDirection = normalize(currTangent - nextTangent); + + // collapsed/unidirectional segment cases + // FIXME: there should be more elegant solution + vec2 prevTanDiff = abs(prevTangent - currTangent); + vec2 nextTanDiff = abs(nextTangent - currTangent); + if (max(prevTanDiff.x, prevTanDiff.y) < MIN_DIFF) { + startJoinDirection = currNormal; + } + if (max(nextTanDiff.x, nextTanDiff.y) < MIN_DIFF) { + endJoinDirection = currNormal; + } + if (aCoord == bCoord) { + endJoinDirection = startJoinDirection; + currNormal = prevNormal; + currTangent = prevTangent; + } + + tangent = currTangent; + + //calculate join shifts relative to normals + float startJoinShift = dot(currNormal, startJoinDirection); + float endJoinShift = dot(currNormal, endJoinDirection); + + float startMiterRatio = abs(1. / startJoinShift); + float endMiterRatio = abs(1. / endJoinShift); + + vec2 startJoin = startJoinDirection * startMiterRatio; + vec2 endJoin = endJoinDirection * endMiterRatio; + + vec2 startTopJoin, startBotJoin, endTopJoin, endBotJoin; + startTopJoin = sign(startJoinShift) * startJoin * .5; + startBotJoin = -startTopJoin; + + endTopJoin = sign(endJoinShift) * endJoin * .5; + endBotJoin = -endTopJoin; + + vec2 aTopCoord = aCoord + normalWidth * startTopJoin; + vec2 bTopCoord = bCoord + normalWidth * endTopJoin; + vec2 aBotCoord = aCoord + normalWidth * startBotJoin; + vec2 bBotCoord = bCoord + normalWidth * endBotJoin; + + //miter anti-clipping + float baClipping = distToLine(bCoord, aCoord, aBotCoord) / dot(normalize(normalWidth * endBotJoin), normalize(normalWidth.yx * vec2(-startBotJoin.y, startBotJoin.x))); + float abClipping = distToLine(aCoord, bCoord, bTopCoord) / dot(normalize(normalWidth * startBotJoin), normalize(normalWidth.yx * vec2(-endBotJoin.y, endBotJoin.x))); + + //prevent close to reverse direction switch + bool prevReverse = dot(currTangent, prevTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, prevNormal)) * min(length(prevDiff), length(currDiff)) < length(normalWidth * currNormal); + bool nextReverse = dot(currTangent, nextTangent) <= REVERSE_THRESHOLD && abs(dot(currTangent, nextNormal)) * min(length(nextDiff), length(currDiff)) < length(normalWidth * currNormal); + + if (prevReverse) { + //make join rectangular + vec2 miterShift = normalWidth * startJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / startMiterRatio, 1.); + aBotCoord = aCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + aTopCoord = aCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!nextReverse && baClipping > 0. && baClipping < length(normalWidth * endBotJoin)) { + //handle miter clipping + bTopCoord -= normalWidth * endTopJoin; + bTopCoord += normalize(endTopJoin * normalWidth) * baClipping; + } + + if (nextReverse) { + //make join rectangular + vec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.); + bBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + bTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) { + //handle miter clipping + aBotCoord -= normalWidth * startBotJoin; + aBotCoord += normalize(startBotJoin * normalWidth) * abClipping; + } + + vec2 aTopPosition = (aTopCoord) * adjustedScale + translate; + vec2 aBotPosition = (aBotCoord) * adjustedScale + translate; + + vec2 bTopPosition = (bTopCoord) * adjustedScale + translate; + vec2 bBotPosition = (bBotCoord) * adjustedScale + translate; + + //position is normalized 0..1 coord on the screen + vec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd; + + startCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy; + endCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + enableStartMiter = step(dot(currTangent, prevTangent), .5); + enableEndMiter = step(dot(currTangent, nextTangent), .5); + + //bevel miter cutoffs + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } + + //round miter cutoffs + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } +} +`,COt=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; +varying vec4 startCutoff, endCutoff; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +void main() { + float alpha = 1., distToStart, distToEnd; + float cutoff = thickness * .5; + + //bevel miter + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < -1.) { + discard; + return; + } + alpha *= min(max(distToStart + 1., 0.), 1.); + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < -1.) { + discard; + return; + } + alpha *= min(max(distToEnd + 1., 0.), 1.); + } + } + + // round miter + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < 0.) { + float radius = length(gl_FragCoord.xy - startCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < 0.) { + float radius = length(gl_FragCoord.xy - endCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + } + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`;iqe.exports=uc;function uc(e,t){if(!(this instanceof uc))return new uc(e,t);if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=e._gl,this.regl=e,this.passes=[],this.shaders=uc.shaders.has(e)?uc.shaders.get(e):uc.shaders.set(e,uc.createShaders(e)).get(e),this.update(t)}uc.dashMult=2;uc.maxPatternLength=256;uc.precisionThreshold=3e6;uc.maxPoints=1e4;uc.maxLines=2048;uc.shaders=new wOt;uc.createShaders=function(e){let t=e.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),r={primitive:"triangle strip",instances:e.prop("count"),count:4,offset:0,uniforms:{miterMode:(o,s)=>s.join==="round"?2:1,miterLimit:e.prop("miterLimit"),scale:e.prop("scale"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),thickness:e.prop("thickness"),dashTexture:e.prop("dashTexture"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),dashLength:e.prop("dashLength"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight],depth:e.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(o,s)=>!s.overlay},stencil:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport")},n=e(CY({vert:AOt,frag:SOt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},r)),i;try{i=e(CY({cull:{enable:!0,face:"back"},vert:kOt,frag:COt,attributes:{lineEnd:{buffer:t,divisor:0,stride:8,offset:0},lineTop:{buffer:t,divisor:0,stride:8,offset:4},aColor:{buffer:e.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:e.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:e.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},r))}catch(o){i=n}return{fill:e({primitive:"triangle",elements:(o,s)=>s.triangles,offset:0,vert:MOt,frag:EOt,uniforms:{scale:e.prop("scale"),color:e.prop("fill"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),translate:e.prop("translate"),opacity:e.prop("opacity"),pixelRatio:e.context("pixelRatio"),id:e.prop("id"),viewport:(o,s)=>[s.viewport.x,s.viewport.y,o.viewportWidth,o.viewportHeight]},attributes:{position:{buffer:e.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:e.prop("positionFractBuffer"),stride:8,offset:8}},blend:r.blend,depth:{enable:!1},scissor:r.scissor,stencil:r.stencil,viewport:r.viewport}),rect:n,miter:i}};uc.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null};uc.prototype.render=function(...e){e.length&&this.update(...e),this.draw()};uc.prototype.draw=function(...e){return(e.length?e:this.passes).forEach((t,r)=>{if(t&&Array.isArray(t))return this.draw(...t);typeof t=="number"&&(t=this.passes[t]),t&&t.count>1&&t.opacity&&(this.regl._refresh(),t.fill&&t.triangles&&t.triangles.length>2&&this.shaders.fill(t),t.thickness&&(t.scale[0]*t.viewport.width>uc.precisionThreshold||t.scale[1]*t.viewport.height>uc.precisionThreshold?this.shaders.rect(t):t.join==="rect"||!t.join&&(t.thickness<=2||t.count>=uc.maxPoints)?this.shaders.rect(t):this.shaders.miter(t)))}),this};uc.prototype.update=function(e){if(!e)return;e.length!=null?typeof e[0]=="number"&&(e=[{positions:e}]):Array.isArray(e)||(e=[e]);let{regl:t,gl:r}=this;if(e.forEach((i,a)=>{let o=this.passes[a];if(i!==void 0){if(i===null){this.passes[a]=null;return}if(typeof i[0]=="number"&&(i={positions:i}),i=yOt(i,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),o||(this.passes[a]=o={id:a,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:t.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:t.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:t.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},i=CY({},uc.defaults,i)),i.thickness!=null&&(o.thickness=parseFloat(i.thickness)),i.opacity!=null&&(o.opacity=parseFloat(i.opacity)),i.miterLimit!=null&&(o.miterLimit=parseFloat(i.miterLimit)),i.overlay!=null&&(o.overlay=!!i.overlay,aL-_),E=[],k=0,A=o.hole!=null?o.hole[0]:null;if(A!=null){let L=TOt(p,_=>_>=A);p=p.slice(0,L),p.push(A)}for(let L=0;Lg-A+(p[L]-k)),M=tqe(_,C);M=M.map(g=>g+k+(g+k{e.colorBuffer.destroy(),e.positionBuffer.destroy(),e.dashTexture.destroy()}),this.passes.length=0,this}});var lqe=ye((rmr,sqe)=>{"use strict";var LOt=j2(),POt=$_(),IOt=JX(),ROt=Zm(),nqe=bh(),aqe=W2(),{float32:DOt,fract32:PY}=Xz();sqe.exports=zOt;var oqe=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]];function zOt(e,t){if(typeof e=="function"?(t||(t={}),t.regl=e):t=e,t.length&&(t.positions=t),e=t.regl,!e.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let r=e._gl,n,i,a,o,s,l,u={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},c=[];return o=e.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),i=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),a=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),s=e.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),l=e.buffer({usage:"static",type:"float",data:oqe}),v(t),n=e({vert:` + precision highp float; + + attribute vec2 position, positionFract; + attribute vec4 error; + attribute vec4 color; + + attribute vec2 direction, lineOffset, capOffset; + + uniform vec4 viewport; + uniform float lineWidth, capSize; + uniform vec2 scale, scaleFract, translate, translateFract; + + varying vec4 fragColor; + + void main() { + fragColor = color / 255.; + + vec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset; + + vec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw; + + vec2 position = position + dxy; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + pos += pixelOffset / viewport.zw; + + gl_Position = vec4(pos * 2. - 1., 0, 1); + } + `,frag:` + precision highp float; + + varying vec4 fragColor; + + uniform float opacity; + + void main() { + gl_FragColor = fragColor; + gl_FragColor.a *= opacity; + } + `,uniforms:{range:e.prop("range"),lineWidth:e.prop("lineWidth"),capSize:e.prop("capSize"),opacity:e.prop("opacity"),scale:e.prop("scale"),translate:e.prop("translate"),scaleFract:e.prop("scaleFract"),translateFract:e.prop("translateFract"),viewport:(b,p)=>[p.viewport.x,p.viewport.y,b.viewportWidth,b.viewportHeight]},attributes:{color:{buffer:o,offset:(b,p)=>p.offset*4,divisor:1},position:{buffer:i,offset:(b,p)=>p.offset*8,divisor:1},positionFract:{buffer:a,offset:(b,p)=>p.offset*8,divisor:1},error:{buffer:s,offset:(b,p)=>p.offset*16,divisor:1},direction:{buffer:l,stride:24,offset:0},lineOffset:{buffer:l,stride:24,offset:8},capOffset:{buffer:l,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:e.prop("viewport")},viewport:e.prop("viewport"),stencil:!1,instances:e.prop("count"),count:oqe.length}),nqe(f,{update:v,draw:h,destroy:x,regl:e,gl:r,canvas:r.canvas,groups:c}),f;function f(b){b?v(b):b===null&&x(),h()}function h(b){if(typeof b=="number")return d(b);b&&!Array.isArray(b)&&(b=[b]),e._refresh(),c.forEach((p,E)=>{if(p){if(b&&(b[E]?p.draw=!0:p.draw=!1),!p.draw){p.draw=!0;return}d(E)}})}function d(b){typeof b=="number"&&(b=c[b]),b!=null&&b&&b.count&&b.color&&b.opacity&&b.positions&&b.positions.length>1&&(b.scaleRatio=[b.scale[0]*b.viewport.width,b.scale[1]*b.viewport.height],n(b),b.after&&b.after(b))}function v(b){if(!b)return;b.length!=null?typeof b[0]=="number"&&(b=[{positions:b}]):Array.isArray(b)||(b=[b]);let p=0,E=0;if(f.groups=c=b.map((L,_)=>{let C=c[_];if(L)typeof L=="function"?L={after:L}:typeof L[0]=="number"&&(L={positions:L});else return C;return L=ROt(L,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),C||(c[_]=C={id:_,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},L=nqe({},u,L)),IOt(C,L,[{lineWidth:M=>+M*.5,capSize:M=>+M*.5,opacity:parseFloat,errors:M=>(M=aqe(M),E+=M.length,M),positions:(M,g)=>(M=aqe(M,"float64"),g.count=Math.floor(M.length/2),g.bounds=LOt(M,2),g.offset=p,p+=g.count,M)},{color:(M,g)=>{let P=g.count;if(M||(M="transparent"),!Array.isArray(M)||typeof M[0]=="number"){let F=M;M=Array(P);for(let q=0;q{let T=g.bounds;return M||(M=T),g.scale=[1/(M[2]-M[0]),1/(M[3]-M[1])],g.translate=[-M[0],-M[1]],g.scaleFract=PY(g.scale),g.translateFract=PY(g.translate),M},viewport:M=>{let g;return Array.isArray(M)?g={x:M[0],y:M[1],width:M[2]-M[0],height:M[3]-M[1]}:M?(g={x:M.x||M.left||0,y:M.y||M.top||0},M.right?g.width=M.right-g.x:g.width=M.w||M.width||0,M.bottom?g.height=M.bottom-g.y:g.height=M.h||M.height||0):g={x:0,y:0,width:r.drawingBufferWidth,height:r.drawingBufferHeight},g}}]),C}),p||E){let L=c.reduce((g,P,T)=>g+(P?P.count:0),0),_=new Float64Array(L*2),C=new Uint8Array(L*4),M=new Float32Array(L*4);c.forEach((g,P)=>{if(!g)return;let{positions:T,count:F,offset:q,color:V,errors:H}=g;F&&(C.set(V,q*4),M.set(H,q*4),_.set(T,q*2))});var k=DOt(_);i(k);var A=PY(_,k);a(A),o(C),s(M)}}function x(){i.destroy(),a.destroy(),o.destroy(),s.destroy(),l.destroy()}}});var fqe=ye((imr,cqe)=>{var uqe=/[\'\"]/;cqe.exports=function(t){return t?(uqe.test(t.charAt(0))&&(t=t.substr(1)),uqe.test(t.charAt(t.length-1))&&(t=t.substr(0,t.length-1)),t):""}});var IY=ye(()=>{});var RY=ye(()=>{});var DY=ye(()=>{});var zY=ye(()=>{});var FY=ye(()=>{});var pqe=ye((vmr,vqe)=>{"use strict";function hqe(e,t){if(typeof e!="string")return[e];var r=[e];typeof t=="string"||Array.isArray(t)?t={brackets:t}:t||(t={});var n=t.brackets?Array.isArray(t.brackets)?t.brackets:[t.brackets]:["{}","[]","()"],i=t.escape||"___",a=!!t.flat;n.forEach(function(l){var u=new RegExp(["\\",l[0],"[^\\",l[0],"\\",l[1],"]*\\",l[1]].join("")),c=[];function f(h,d,v){var x=r.push(h.slice(l[0].length,-l[1].length))-1;return c.push(x),i+x+i}r.forEach(function(h,d){for(var v,x=0;h!=v;)if(v=h,h=h.replace(u,f),x++>1e4)throw Error("References have circular dependency. Please, check them.");r[d]=h}),c=c.reverse(),r=r.map(function(h){return c.forEach(function(d){h=h.replace(new RegExp("(\\"+i+d+"\\"+i+")","g"),l[0]+"$1"+l[1])}),h})});var o=new RegExp("\\"+i+"([0-9]+)\\"+i);function s(l,u,c){for(var f=[],h,d=0;h=o.exec(l);){if(d++>1e4)throw Error("Circular references in parenthesis");f.push(l.slice(0,h.index)),f.push(s(u[h[1]],u)),l=l.slice(h.index+h[0].length)}return f.push(l),f}return a?r:s(r[0],r)}function dqe(e,t){if(t&&t.flat){var r=t&&t.escape||"___",n=e[0],i;if(!n)return"";for(var a=new RegExp("\\"+r+"([0-9]+)\\"+r),o=0;n!=i;){if(o++>1e4)throw Error("Circular references in "+e);i=n,n=n.replace(a,s)}return n}return e.reduce(function l(u,c){return Array.isArray(c)&&(c=c.reduce(l,"")),u+c},"");function s(l,u){if(e[u]==null)throw Error("Reference "+u+"is undefined");return e[u]}}function qY(e,t){return Array.isArray(e)?dqe(e,t):hqe(e,t)}qY.parse=hqe;qY.stringify=dqe;vqe.exports=qY});var yqe=ye((pmr,mqe)=>{"use strict";var gqe=pqe();mqe.exports=function(t,r,n){if(t==null)throw Error("First argument should be a string");if(r==null)throw Error("Separator should be a string or a RegExp");n?(typeof n=="string"||Array.isArray(n))&&(n={ignore:n}):n={},n.escape==null&&(n.escape=!0),n.ignore==null?n.ignore=["[]","()","{}","<>",'""',"''","``","\u201C\u201D","\xAB\xBB"]:(typeof n.ignore=="string"&&(n.ignore=[n.ignore]),n.ignore=n.ignore.map(function(f){return f.length===1&&(f=f+f),f}));var i=gqe.parse(t,{flat:!0,brackets:n.ignore}),a=i[0],o=a.split(r);if(n.escape){for(var s=[],l=0;l{});var OY=ye((ymr,xqe)=>{"use strict";var FOt=_qe();xqe.exports={isSize:function(t){return/^[\d\.]/.test(t)||t.indexOf("/")!==-1||FOt.indexOf(t)!==-1}}});var Aqe=ye((_mr,Tqe)=>{"use strict";var qOt=fqe(),OOt=IY(),BOt=RY(),NOt=DY(),UOt=zY(),VOt=FY(),BY=yqe(),HOt=OY().isSize;Tqe.exports=wqe;var gk=wqe.cache={};function wqe(e){if(typeof e!="string")throw new Error("Font argument must be a string.");if(gk[e])return gk[e];if(e==="")throw new Error("Cannot parse an empty string.");if(BOt.indexOf(e)!==-1)return gk[e]={system:e};for(var t={style:"normal",variant:"normal",weight:"normal",stretch:"normal",lineHeight:"normal",size:"1rem",family:["serif"]},r=BY(e,/\s+/),n;n=r.shift();){if(OOt.indexOf(n)!==-1)return["style","variant","weight","stretch"].forEach(function(a){t[a]=n}),gk[e]=t;if(UOt.indexOf(n)!==-1){t.style=n;continue}if(n==="normal"||n==="small-caps"){t.variant=n;continue}if(VOt.indexOf(n)!==-1){t.stretch=n;continue}if(NOt.indexOf(n)!==-1){t.weight=n;continue}if(HOt(n)){var i=BY(n,"/");if(t.size=i[0],i[1]!=null?t.lineHeight=bqe(i[1]):r[0]==="/"&&(r.shift(),t.lineHeight=bqe(r.shift())),!r.length)throw new Error("Missing required font-family.");return t.family=BY(r.join(" "),/\s*,\s*/).map(qOt),gk[e]=t}throw new Error("Unknown or unsupported font token: "+n)}throw new Error("Missing required font-size.")}function bqe(e){var t=parseFloat(e);return t.toString()===e?t:e}});var UY=ye((xmr,Sqe)=>{"use strict";var GOt=Zm(),jOt=OY().isSize,WOt=yk(IY()),ZOt=yk(RY()),XOt=yk(DY()),YOt=yk(zY()),KOt=yk(FY()),JOt={normal:1,"small-caps":1},$Ot={serif:1,"sans-serif":1,monospace:1,cursive:1,fantasy:1,"system-ui":1},NY={style:"normal",variant:"normal",weight:"normal",stretch:"normal",size:"1rem",lineHeight:"normal",family:"serif"};Sqe.exports=function(t){if(t=GOt(t,{style:"style fontstyle fontStyle font-style slope distinction",variant:"variant font-variant fontVariant fontvariant var capitalization",weight:"weight w font-weight fontWeight fontweight",stretch:"stretch font-stretch fontStretch fontstretch width",size:"size s font-size fontSize fontsize height em emSize",lineHeight:"lh line-height lineHeight lineheight leading",family:"font family fontFamily font-family fontfamily type typeface face",system:"system reserved default global"}),t.system)return t.system&&mk(t.system,ZOt),t.system;if(mk(t.style,YOt),mk(t.variant,JOt),mk(t.weight,XOt),mk(t.stretch,KOt),t.size==null&&(t.size=NY.size),typeof t.size=="number"&&(t.size+="px"),!jOt)throw Error("Bad size value `"+t.size+"`");t.family||(t.family=NY.family),Array.isArray(t.family)&&(t.family.length||(t.family=[NY.family]),t.family=t.family.map(function(n){return $Ot[n]?n:'"'+n+'"'}).join(", "));var r=[];return r.push(t.style),t.variant!==t.style&&r.push(t.variant),t.weight!==t.variant&&t.weight!==t.style&&r.push(t.weight),t.stretch!==t.weight&&t.stretch!==t.variant&&t.stretch!==t.style&&r.push(t.stretch),r.push(t.size+(t.lineHeight==null||t.lineHeight==="normal"||t.lineHeight+""=="1"?"":"/"+t.lineHeight)),r.push(t.family),r.filter(Boolean).join(" ")};function mk(e,t){if(e&&!t[e]&&!WOt[e])throw Error("Unknown keyword `"+e+"`");return e}function yk(e){for(var t={},r=0;r{"use strict";Mqe.exports={parse:Aqe(),stringify:UY()}});var GY=ye((VY,HY)=>{(function(e,t){typeof VY=="object"&&typeof HY!="undefined"?HY.exports=t():e.createREGL=t()})(VY,function(){"use strict";var e=function(At,Er){for(var Wr=Object.keys(Er),wi=0;wi1&&Er===Wr&&(Er==='"'||Er==="'"))return['"'+o(At.substr(1,At.length-2))+'"'];var wi=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(At);if(wi)return s(At.substr(0,wi.index)).concat(s(wi[1])).concat(s(At.substr(wi.index+wi[0].length)));var Ui=At.split(".");if(Ui.length===1)return['"'+o(At)+'"'];for(var Oi=[],Bi=0;Bi65535)<<4,At>>>=Er,Wr=(At>255)<<3,At>>>=Wr,Er|=Wr,Wr=(At>15)<<2,At>>>=Wr,Er|=Wr,Wr=(At>3)<<1,At>>>=Wr,Er|=Wr,Er|At>>1}function N(){var At=M(8,function(){return[]});function Er(Oi){var Bi=X(Oi),cn=At[G(Bi)>>2];return cn.length>0?cn.pop():new ArrayBuffer(Bi)}function Wr(Oi){At[G(Oi.byteLength)>>2].push(Oi)}function wi(Oi,Bi){var cn=null;switch(Oi){case g:cn=new Int8Array(Er(Bi),0,Bi);break;case P:cn=new Uint8Array(Er(Bi),0,Bi);break;case T:cn=new Int16Array(Er(2*Bi),0,Bi);break;case F:cn=new Uint16Array(Er(2*Bi),0,Bi);break;case q:cn=new Int32Array(Er(4*Bi),0,Bi);break;case V:cn=new Uint32Array(Er(4*Bi),0,Bi);break;case H:cn=new Float32Array(Er(4*Bi),0,Bi);break;default:return null}return cn.length!==Bi?cn.subarray(0,Bi):cn}function Ui(Oi){Wr(Oi.buffer)}return{alloc:Er,free:Wr,allocType:wi,freeType:Ui}}var W=N();W.zero=N();var re=3408,ae=3410,_e=3411,Me=3412,ke=3413,ge=3414,ie=3415,Te=33901,Ee=33902,Ae=3379,ze=3386,Ce=34921,me=36347,Re=36348,ce=35661,Ge=35660,nt=34930,ct=36349,qt=34076,rt=34024,ot=7936,Rt=7937,kt=7938,Ct=35724,Yt=34047,xr=36063,er=34852,Ke=3553,xt=34067,bt=34069,Lt=33984,St=6408,Et=5126,dt=5121,Ht=36160,$t=36053,fr=36064,_r=16384,Br=function(At,Er){var Wr=1;Er.ext_texture_filter_anisotropic&&(Wr=At.getParameter(Yt));var wi=1,Ui=1;Er.webgl_draw_buffers&&(wi=At.getParameter(er),Ui=At.getParameter(xr));var Oi=!!Er.oes_texture_float;if(Oi){var Bi=At.createTexture();At.bindTexture(Ke,Bi),At.texImage2D(Ke,0,St,1,1,0,St,Et,null);var cn=At.createFramebuffer();if(At.bindFramebuffer(Ht,cn),At.framebufferTexture2D(Ht,fr,Ke,Bi,0),At.bindTexture(Ke,null),At.checkFramebufferStatus(Ht)!==$t)Oi=!1;else{At.viewport(0,0,1,1),At.clearColor(1,0,0,1),At.clear(_r);var On=W.allocType(Et,4);At.readPixels(0,0,1,1,St,Et,On),At.getError()?Oi=!1:(At.deleteFramebuffer(cn),At.deleteTexture(Bi),Oi=On[0]===1),W.freeType(On)}}var Bn=typeof navigator!="undefined"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),yn=!0;if(!Bn){var to=At.createTexture(),Rn=W.allocType(dt,36);At.activeTexture(Lt),At.bindTexture(xt,to),At.texImage2D(bt,0,St,3,3,0,St,dt,Rn),W.freeType(Rn),At.bindTexture(xt,null),At.deleteTexture(to),yn=!At.getError()}return{colorBits:[At.getParameter(ae),At.getParameter(_e),At.getParameter(Me),At.getParameter(ke)],depthBits:At.getParameter(ge),stencilBits:At.getParameter(ie),subpixelBits:At.getParameter(re),extensions:Object.keys(Er).filter(function(Dn){return!!Er[Dn]}),maxAnisotropic:Wr,maxDrawbuffers:wi,maxColorAttachments:Ui,pointSizeDims:At.getParameter(Te),lineWidthDims:At.getParameter(Ee),maxViewportDims:At.getParameter(ze),maxCombinedTextureUnits:At.getParameter(ce),maxCubeMapSize:At.getParameter(qt),maxRenderbufferSize:At.getParameter(rt),maxTextureUnits:At.getParameter(nt),maxTextureSize:At.getParameter(Ae),maxAttributes:At.getParameter(Ce),maxVertexUniforms:At.getParameter(me),maxVertexTextureUnits:At.getParameter(Ge),maxVaryingVectors:At.getParameter(Re),maxFragmentUniforms:At.getParameter(ct),glsl:At.getParameter(Ct),renderer:At.getParameter(Rt),vendor:At.getParameter(ot),version:At.getParameter(kt),readFloat:Oi,npotTextureCube:yn}},Or=function(At){return At instanceof Uint8Array||At instanceof Uint16Array||At instanceof Uint32Array||At instanceof Int8Array||At instanceof Int16Array||At instanceof Int32Array||At instanceof Float32Array||At instanceof Float64Array||At instanceof Uint8ClampedArray};function Nr(At){return!!At&&typeof At=="object"&&Array.isArray(At.shape)&&Array.isArray(At.stride)&&typeof At.offset=="number"&&At.shape.length===At.stride.length&&(Array.isArray(At.data)||Or(At.data))}var ut=function(At){return Object.keys(At).map(function(Er){return At[Er]})},Ne={shape:xe,flatten:Le};function Ye(At,Er,Wr){for(var wi=0;wi0){var Za;if(Array.isArray(ji[0])){Kn=$i(ji);for(var wn=1,vn=1;vn0){if(typeof wn[0]=="number"){var Xn=W.allocType(gn.dtype,wn.length);yr(Xn,wn),Kn(Xn,Aa),W.freeType(Xn)}else if(Array.isArray(wn[0])||Or(wn[0])){aa=$i(wn);var Vn=_n(wn,aa,gn.dtype);Kn(Vn,Aa),W.freeType(Vn)}}}else if(Nr(wn)){aa=wn.shape;var ma=wn.stride,ro=0,Ao=0,Jn=0,Oa=0;aa.length===1?(ro=aa[0],Ao=1,Jn=ma[0],Oa=0):aa.length===2&&(ro=aa[0],Ao=aa[1],Jn=ma[0],Oa=ma[1]);var _o=Array.isArray(wn.data)?gn.dtype:Zt(wn.data),Po=W.allocType(_o,ro*Ao);Fr(Po,wn.data,ro,Ao,Jn,Oa,wn.offset),Kn(Po,Aa),W.freeType(Po)}return ca}return Ln||ca(Ai),ca._reglType="buffer",ca._buffer=gn,ca.subdata=Za,Wr.profile&&(ca.stats=gn.stats),ca.destroy=function(){Rn(gn)},ca}function fn(){ut(Oi).forEach(function(Ai){Ai.buffer=At.createBuffer(),At.bindBuffer(Ai.type,Ai.buffer),At.bufferData(Ai.type,Ai.persistentData||Ai.byteLength,Ai.usage)})}return Wr.profile&&(Er.getTotalBufferSize=function(){var Ai=0;return Object.keys(Oi).forEach(function(ji){Ai+=Oi[ji].stats.size}),Ai}),{create:Dn,createStream:On,destroyStream:Bn,clear:function(){ut(Oi).forEach(Rn),cn.forEach(Rn)},getBuffer:function(Ai){return Ai&&Ai._buffer instanceof Bi?Ai._buffer:null},restore:fn,_initBuffer:to}}var Vr=0,gi=0,Si=1,Mi=1,Pi=4,Gi=4,Ki={points:Vr,point:gi,lines:Si,line:Mi,triangles:Pi,triangle:Gi,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},ka=0,jn=1,la=4,Fa=5120,Ra=5121,jo=5122,oa=5123,Sn=5124,Ha=5125,oo=34963,xn=35040,_t=35044;function br(At,Er,Wr,wi){var Ui={},Oi=0,Bi={uint8:Ra,uint16:oa};Er.oes_element_index_uint&&(Bi.uint32=Ha);function cn(fn){this.id=Oi++,Ui[this.id]=this,this.buffer=fn,this.primType=la,this.vertCount=0,this.type=0}cn.prototype.bind=function(){this.buffer.bind()};var On=[];function Bn(fn){var Ai=On.pop();return Ai||(Ai=new cn(Wr.create(null,oo,!0,!1)._buffer)),to(Ai,fn,xn,-1,-1,0,0),Ai}function yn(fn){On.push(fn)}function to(fn,Ai,ji,Ln,Un,gn,ca){fn.buffer.bind();var Kn;if(Ai){var Za=ca;!ca&&(!Or(Ai)||Nr(Ai)&&!Or(Ai.data))&&(Za=Er.oes_element_index_uint?Ha:oa),Wr._initBuffer(fn.buffer,Ai,ji,Za,3)}else At.bufferData(oo,gn,ji),fn.buffer.dtype=Kn||Ra,fn.buffer.usage=ji,fn.buffer.dimension=3,fn.buffer.byteLength=gn;if(Kn=ca,!ca){switch(fn.buffer.dtype){case Ra:case Fa:Kn=Ra;break;case oa:case jo:Kn=oa;break;case Ha:case Sn:Kn=Ha;break;default:}fn.buffer.dtype=Kn}fn.type=Kn;var wn=Un;wn<0&&(wn=fn.buffer.byteLength,Kn===oa?wn>>=1:Kn===Ha&&(wn>>=2)),fn.vertCount=wn;var vn=Ln;if(Ln<0){vn=la;var Aa=fn.buffer.dimension;Aa===1&&(vn=ka),Aa===2&&(vn=jn),Aa===3&&(vn=la)}fn.primType=vn}function Rn(fn){wi.elementsCount--,delete Ui[fn.id],fn.buffer.destroy(),fn.buffer=null}function Dn(fn,Ai){var ji=Wr.create(null,oo,!0),Ln=new cn(ji._buffer);wi.elementsCount++;function Un(gn){if(!gn)ji(),Ln.primType=la,Ln.vertCount=0,Ln.type=Ra;else if(typeof gn=="number")ji(gn),Ln.primType=la,Ln.vertCount=gn|0,Ln.type=Ra;else{var ca=null,Kn=_t,Za=-1,wn=-1,vn=0,Aa=0;Array.isArray(gn)||Or(gn)||Nr(gn)?ca=gn:("data"in gn&&(ca=gn.data),"usage"in gn&&(Kn=Ni[gn.usage]),"primitive"in gn&&(Za=Ki[gn.primitive]),"count"in gn&&(wn=gn.count|0),"type"in gn&&(Aa=Bi[gn.type]),"length"in gn?vn=gn.length|0:(vn=wn,Aa===oa||Aa===jo?vn*=2:(Aa===Ha||Aa===Sn)&&(vn*=4))),to(Ln,ca,Kn,Za,wn,vn,Aa)}return Un}return Un(fn),Un._reglType="elements",Un._elements=Ln,Un.subdata=function(gn,ca){return ji.subdata(gn,ca),Un},Un.destroy=function(){Rn(Ln)},Un}return{create:Dn,createStream:Bn,destroyStream:yn,getElements:function(fn){return typeof fn=="function"&&fn._elements instanceof cn?fn._elements:null},clear:function(){ut(Ui).forEach(Rn)}}}var Hr=new Float32Array(1),ti=new Uint32Array(Hr.buffer),zi=5123;function Yi(At){for(var Er=W.allocType(zi,At.length),Wr=0;Wr>>31<<15,Oi=(wi<<1>>>24)-127,Bi=wi>>13&1023;if(Oi<-24)Er[Wr]=Ui;else if(Oi<-14){var cn=-14-Oi;Er[Wr]=Ui+(Bi+1024>>cn)}else Oi>15?Er[Wr]=Ui+31744:Er[Wr]=Ui+(Oi+15<<10)+Bi}return Er}function an(At){return Array.isArray(At)||Or(At)}var hi=34467,Ji=3553,ua=34067,Fn=34069,Sa=6408,go=6406,Oo=6407,ho=6409,Mo=6410,xo=32854,zs=32855,ks=36194,Zs=32819,Xs=32820,wl=33635,os=34042,cl=6402,Cs=34041,ml=35904,Ys=35906,Hs=36193,Eo=33776,fs=33777,Ql=33778,Hu=33779,fc=35986,ms=35987,on=34798,fa=35840,Qu=35841,Rl=35842,vo=35843,Zl=36196,Ks=5121,Xl=5123,Ec=5125,Zn=5126,ko=10242,Co=10243,Tl=10497,uf=33071,So=33648,cf=10240,rh=10241,Al=9728,Hc=9729,eu=9984,Ls=9985,mu=9986,kc=9987,Of=33170,Gc=4352,vd=4353,Bf=4354,ss=34046,ff=3317,ih=37440,Vl=37441,Js=37443,hc=37444,Cc=33984,ws=[eu,mu,Ls,kc],$s=[0,ho,Mo,Oo,Sa],hs={};hs[ho]=hs[go]=hs[cl]=1,hs[Cs]=hs[Mo]=2,hs[Oo]=hs[ml]=3,hs[Sa]=hs[Ys]=4;function Ms(At){return"[object "+At+"]"}var dc=Ms("HTMLCanvasElement"),Sl=Ms("OffscreenCanvas"),ec=Ms("CanvasRenderingContext2D"),Ps=Ms("ImageBitmap"),ov=Ms("HTMLImageElement"),wo=Ms("HTMLVideoElement"),Od=Object.keys(Se).concat([dc,Sl,ec,Ps,ov,wo]),$o=[];$o[Ks]=1,$o[Zn]=4,$o[Hs]=2,$o[Xl]=2,$o[Ec]=4;var Ja=[];Ja[xo]=2,Ja[zs]=2,Ja[ks]=2,Ja[Cs]=4,Ja[Eo]=.5,Ja[fs]=.5,Ja[Ql]=1,Ja[Hu]=1,Ja[fc]=.5,Ja[ms]=1,Ja[on]=1,Ja[fa]=.5,Ja[Qu]=.25,Ja[Rl]=.5,Ja[vo]=.25,Ja[Zl]=.5;function Ef(At){return Array.isArray(At)&&(At.length===0||typeof At[0]=="number")}function tc(At){if(!Array.isArray(At))return!1;var Er=At.length;return!(Er===0||!an(At[0]))}function uu(At){return Object.prototype.toString.call(At)}function Mh(At){return uu(At)===dc}function jc(At){return uu(At)===Sl}function kf(At){return uu(At)===ec}function Ml(At){return uu(At)===Ps}function Yh(At){return uu(At)===ov}function Eh(At){return uu(At)===wo}function nh(At){if(!At)return!1;var Er=uu(At);return Od.indexOf(Er)>=0?!0:Ef(At)||tc(At)||Nr(At)}function hf(At){return Se[Object.prototype.toString.call(At)]|0}function kh(At,Er){var Wr=Er.length;switch(At.type){case Ks:case Xl:case Ec:case Zn:var wi=W.allocType(At.type,Wr);wi.set(Er),At.data=wi;break;case Hs:At.data=Yi(Er);break;default:}}function Kh(At,Er){return W.allocType(At.type===Hs?Zn:At.type,Er)}function rc(At,Er){At.type===Hs?(At.data=Yi(Er),W.freeType(Er)):At.data=Er}function ah(At,Er,Wr,wi,Ui,Oi){for(var Bi=At.width,cn=At.height,On=At.channels,Bn=Bi*cn*On,yn=Kh(At,Bn),to=0,Rn=0;Rn=1;)cn+=Bi*On*On,On/=2;return cn}else return Bi*Wr*wi}function df(At,Er,Wr,wi,Ui,Oi,Bi){var cn={"don't care":Gc,"dont care":Gc,nice:Bf,fast:vd},On={repeat:Tl,clamp:uf,mirror:So},Bn={nearest:Al,linear:Hc},yn=e({mipmap:kc,"nearest mipmap nearest":eu,"linear mipmap nearest":Ls,"nearest mipmap linear":mu,"linear mipmap linear":kc},Bn),to={none:0,browser:hc},Rn={uint8:Ks,rgba4:Zs,rgb565:wl,"rgb5 a1":Xs},Dn={alpha:go,luminance:ho,"luminance alpha":Mo,rgb:Oo,rgba:Sa,rgba4:xo,"rgb5 a1":zs,rgb565:ks},fn={};Er.ext_srgb&&(Dn.srgb=ml,Dn.srgba=Ys),Er.oes_texture_float&&(Rn.float32=Rn.float=Zn),Er.oes_texture_half_float&&(Rn.float16=Rn["half float"]=Hs),Er.webgl_depth_texture&&(e(Dn,{depth:cl,"depth stencil":Cs}),e(Rn,{uint16:Xl,uint32:Ec,"depth stencil":os})),Er.webgl_compressed_texture_s3tc&&e(fn,{"rgb s3tc dxt1":Eo,"rgba s3tc dxt1":fs,"rgba s3tc dxt3":Ql,"rgba s3tc dxt5":Hu}),Er.webgl_compressed_texture_atc&&e(fn,{"rgb atc":fc,"rgba atc explicit alpha":ms,"rgba atc interpolated alpha":on}),Er.webgl_compressed_texture_pvrtc&&e(fn,{"rgb pvrtc 4bppv1":fa,"rgb pvrtc 2bppv1":Qu,"rgba pvrtc 4bppv1":Rl,"rgba pvrtc 2bppv1":vo}),Er.webgl_compressed_texture_etc1&&(fn["rgb etc1"]=Zl);var Ai=Array.prototype.slice.call(At.getParameter(hi));Object.keys(fn).forEach(function(de){var Ie=fn[de];Ai.indexOf(Ie)>=0&&(Dn[de]=Ie)});var ji=Object.keys(Dn);Wr.textureFormats=ji;var Ln=[];Object.keys(Dn).forEach(function(de){var Ie=Dn[de];Ln[Ie]=de});var Un=[];Object.keys(Rn).forEach(function(de){var Ie=Rn[de];Un[Ie]=de});var gn=[];Object.keys(Bn).forEach(function(de){var Ie=Bn[de];gn[Ie]=de});var ca=[];Object.keys(yn).forEach(function(de){var Ie=yn[de];ca[Ie]=de});var Kn=[];Object.keys(On).forEach(function(de){var Ie=On[de];Kn[Ie]=de});var Za=ji.reduce(function(de,Ie){var $e=Dn[Ie];return $e===ho||$e===go||$e===ho||$e===Mo||$e===cl||$e===Cs||Er.ext_srgb&&($e===ml||$e===Ys)?de[$e]=$e:$e===zs||Ie.indexOf("rgba")>=0?de[$e]=Sa:de[$e]=Oo,de},{});function wn(){this.internalformat=Sa,this.format=Sa,this.type=Ks,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=hc,this.width=0,this.height=0,this.channels=0}function vn(de,Ie){de.internalformat=Ie.internalformat,de.format=Ie.format,de.type=Ie.type,de.compressed=Ie.compressed,de.premultiplyAlpha=Ie.premultiplyAlpha,de.flipY=Ie.flipY,de.unpackAlignment=Ie.unpackAlignment,de.colorSpace=Ie.colorSpace,de.width=Ie.width,de.height=Ie.height,de.channels=Ie.channels}function Aa(de,Ie){if(!(typeof Ie!="object"||!Ie)){if("premultiplyAlpha"in Ie&&(de.premultiplyAlpha=Ie.premultiplyAlpha),"flipY"in Ie&&(de.flipY=Ie.flipY),"alignment"in Ie&&(de.unpackAlignment=Ie.alignment),"colorSpace"in Ie&&(de.colorSpace=to[Ie.colorSpace]),"type"in Ie){var $e=Ie.type;de.type=Rn[$e]}var pt=de.width,Kt=de.height,ir=de.channels,Jt=!1;"shape"in Ie?(pt=Ie.shape[0],Kt=Ie.shape[1],Ie.shape.length===3&&(ir=Ie.shape[2],Jt=!0)):("radius"in Ie&&(pt=Kt=Ie.radius),"width"in Ie&&(pt=Ie.width),"height"in Ie&&(Kt=Ie.height),"channels"in Ie&&(ir=Ie.channels,Jt=!0)),de.width=pt|0,de.height=Kt|0,de.channels=ir|0;var vt=!1;if("format"in Ie){var Pt=Ie.format,Wt=de.internalformat=Dn[Pt];de.format=Za[Wt],Pt in Rn&&("type"in Ie||(de.type=Rn[Pt])),Pt in fn&&(de.compressed=!0),vt=!0}!Jt&&vt?de.channels=hs[de.format]:Jt&&!vt&&de.channels!==$s[de.format]&&(de.format=de.internalformat=$s[de.channels])}}function aa(de){At.pixelStorei(ih,de.flipY),At.pixelStorei(Vl,de.premultiplyAlpha),At.pixelStorei(Js,de.colorSpace),At.pixelStorei(ff,de.unpackAlignment)}function Xn(){wn.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function Vn(de,Ie){var $e=null;if(nh(Ie)?$e=Ie:Ie&&(Aa(de,Ie),"x"in Ie&&(de.xOffset=Ie.x|0),"y"in Ie&&(de.yOffset=Ie.y|0),nh(Ie.data)&&($e=Ie.data)),Ie.copy){var pt=Ui.viewportWidth,Kt=Ui.viewportHeight;de.width=de.width||pt-de.xOffset,de.height=de.height||Kt-de.yOffset,de.needsCopy=!0}else if(!$e)de.width=de.width||1,de.height=de.height||1,de.channels=de.channels||4;else if(Or($e))de.channels=de.channels||4,de.data=$e,!("type"in Ie)&&de.type===Ks&&(de.type=hf($e));else if(Ef($e))de.channels=de.channels||4,kh(de,$e),de.alignment=1,de.needsFree=!0;else if(Nr($e)){var ir=$e.data;!Array.isArray(ir)&&de.type===Ks&&(de.type=hf(ir));var Jt=$e.shape,vt=$e.stride,Pt,Wt,rr,dr,pr,kr;Jt.length===3?(rr=Jt[2],kr=vt[2]):(rr=1,kr=1),Pt=Jt[0],Wt=Jt[1],dr=vt[0],pr=vt[1],de.alignment=1,de.width=Pt,de.height=Wt,de.channels=rr,de.format=de.internalformat=$s[rr],de.needsFree=!0,ah(de,ir,dr,pr,kr,$e.offset)}else if(Mh($e)||jc($e)||kf($e))Mh($e)||jc($e)?de.element=$e:de.element=$e.canvas,de.width=de.element.width,de.height=de.element.height,de.channels=4;else if(Ml($e))de.element=$e,de.width=$e.width,de.height=$e.height,de.channels=4;else if(Yh($e))de.element=$e,de.width=$e.naturalWidth,de.height=$e.naturalHeight,de.channels=4;else if(Eh($e))de.element=$e,de.width=$e.videoWidth,de.height=$e.videoHeight,de.channels=4;else if(tc($e)){var Ar=de.width||$e[0].length,gr=de.height||$e.length,Cr=de.channels;an($e[0][0])?Cr=Cr||$e[0][0].length:Cr=Cr||1;for(var cr=Ne.shape($e),Gr=1,ei=0;ei>=Kt,$e.height>>=Kt,Vn($e,pt[Kt]),de.mipmask|=1<=0&&!("faces"in Ie)&&(de.genMipmaps=!0)}if("mag"in Ie){var pt=Ie.mag;de.magFilter=Bn[pt]}var Kt=de.wrapS,ir=de.wrapT;if("wrap"in Ie){var Jt=Ie.wrap;typeof Jt=="string"?Kt=ir=On[Jt]:Array.isArray(Jt)&&(Kt=On[Jt[0]],ir=On[Jt[1]])}else{if("wrapS"in Ie){var vt=Ie.wrapS;Kt=On[vt]}if("wrapT"in Ie){var Pt=Ie.wrapT;ir=On[Pt]}}if(de.wrapS=Kt,de.wrapT=ir,"anisotropic"in Ie){var Wt=Ie.anisotropic;de.anisotropic=Ie.anisotropic}if("mipmap"in Ie){var rr=!1;switch(typeof Ie.mipmap){case"string":de.mipmapHint=cn[Ie.mipmap],de.genMipmaps=!0,rr=!0;break;case"boolean":rr=de.genMipmaps=Ie.mipmap;break;case"object":de.genMipmaps=!1,rr=!0;break;default:}rr&&!("min"in Ie)&&(de.minFilter=eu)}}function wc(de,Ie){At.texParameteri(Ie,rh,de.minFilter),At.texParameteri(Ie,cf,de.magFilter),At.texParameteri(Ie,ko,de.wrapS),At.texParameteri(Ie,Co,de.wrapT),Er.ext_texture_filter_anisotropic&&At.texParameteri(Ie,ss,de.anisotropic),de.genMipmaps&&(At.hint(Of,de.mipmapHint),At.generateMipmap(Ie))}var yf=0,Gl={},Fc=Wr.maxTextureUnits,ef=Array(Fc).map(function(){return null});function ls(de){wn.call(this),this.mipmask=0,this.internalformat=Sa,this.id=yf++,this.refCount=1,this.target=de,this.texture=At.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new El,Bi.profile&&(this.stats={size:0})}function _f(de){At.activeTexture(Cc),At.bindTexture(de.target,de.texture)}function ns(){var de=ef[0];de?At.bindTexture(de.target,de.texture):At.bindTexture(Ji,null)}function Y(de){var Ie=de.texture,$e=de.unit,pt=de.target;$e>=0&&(At.activeTexture(Cc+$e),At.bindTexture(pt,null),ef[$e]=null),At.deleteTexture(Ie),de.texture=null,de.params=null,de.pixels=null,de.refCount=0,delete Gl[de.id],Oi.textureCount--}e(ls.prototype,{bind:function(){var de=this;de.bindCount+=1;var Ie=de.unit;if(Ie<0){for(var $e=0;$e0)continue;pt.unit=-1}ef[$e]=de,Ie=$e;break}Ie>=Fc,Bi.profile&&Oi.maxTextureUnits>pr)-rr,kr.height=kr.height||($e.height>>pr)-dr,_f($e),ro(kr,Ji,rr,dr,pr),ns(),Oa(kr),pt}function ir(Jt,vt){var Pt=Jt|0,Wt=vt|0||Pt;if(Pt===$e.width&&Wt===$e.height)return pt;pt.width=$e.width=Pt,pt.height=$e.height=Wt,_f($e);for(var rr=0;$e.mipmask>>rr;++rr){var dr=Pt>>rr,pr=Wt>>rr;if(!dr||!pr)break;At.texImage2D(Ji,rr,$e.format,dr,pr,0,$e.format,$e.type,null)}return ns(),Bi.profile&&($e.stats.size=Wc($e.internalformat,$e.type,Pt,Wt,!1,!1)),pt}return pt(de,Ie),pt.subimage=Kt,pt.resize=ir,pt._reglType="texture2d",pt._texture=$e,Bi.profile&&(pt.stats=$e.stats),pt.destroy=function(){$e.decRef()},pt}function K(de,Ie,$e,pt,Kt,ir){var Jt=new ls(ua);Gl[Jt.id]=Jt,Oi.cubeCount++;var vt=new Array(6);function Pt(dr,pr,kr,Ar,gr,Cr){var cr,Gr=Jt.texInfo;for(El.call(Gr),cr=0;cr<6;++cr)vt[cr]=xs();if(typeof dr=="number"||!dr){var ei=dr|0||1;for(cr=0;cr<6;++cr)Po(vt[cr],ei,ei)}else if(typeof dr=="object")if(pr)Jo(vt[0],dr),Jo(vt[1],pr),Jo(vt[2],kr),Jo(vt[3],Ar),Jo(vt[4],gr),Jo(vt[5],Cr);else if(bc(Gr,dr),Aa(Jt,dr),"faces"in dr){var yi=dr.faces;for(cr=0;cr<6;++cr)vn(vt[cr],Jt),Jo(vt[cr],yi[cr])}else for(cr=0;cr<6;++cr)Jo(vt[cr],dr);for(vn(Jt,vt[0]),Gr.genMipmaps?Jt.mipmask=(vt[0].width<<1)-1:Jt.mipmask=vt[0].mipmask,Jt.internalformat=vt[0].internalformat,Pt.width=vt[0].width,Pt.height=vt[0].height,_f(Jt),cr=0;cr<6;++cr)Yl(vt[cr],Fn+cr);for(wc(Gr,ua),ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,Gr.genMipmaps,!0)),Pt.format=Ln[Jt.internalformat],Pt.type=Un[Jt.type],Pt.mag=gn[Gr.magFilter],Pt.min=ca[Gr.minFilter],Pt.wrapS=Kn[Gr.wrapS],Pt.wrapT=Kn[Gr.wrapT],cr=0;cr<6;++cr)Qc(vt[cr]);return Pt}function Wt(dr,pr,kr,Ar,gr){var Cr=kr|0,cr=Ar|0,Gr=gr|0,ei=Jn();return vn(ei,Jt),ei.width=0,ei.height=0,Vn(ei,pr),ei.width=ei.width||(Jt.width>>Gr)-Cr,ei.height=ei.height||(Jt.height>>Gr)-cr,_f(Jt),ro(ei,Fn+dr,Cr,cr,Gr),ns(),Oa(ei),Pt}function rr(dr){var pr=dr|0;if(pr!==Jt.width){Pt.width=Jt.width=pr,Pt.height=Jt.height=pr,_f(Jt);for(var kr=0;kr<6;++kr)for(var Ar=0;Jt.mipmask>>Ar;++Ar)At.texImage2D(Fn+kr,Ar,Jt.format,pr>>Ar,pr>>Ar,0,Jt.format,Jt.type,null);return ns(),Bi.profile&&(Jt.stats.size=Wc(Jt.internalformat,Jt.type,Pt.width,Pt.height,!1,!0)),Pt}}return Pt(de,Ie,$e,pt,Kt,ir),Pt.subimage=Wt,Pt.resize=rr,Pt._reglType="textureCube",Pt._texture=Jt,Bi.profile&&(Pt.stats=Jt.stats),Pt.destroy=function(){Jt.decRef()},Pt}function O(){for(var de=0;de>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);else for(var Kt=0;Kt<6;++Kt)At.texImage2D(Fn+Kt,pt,$e.internalformat,$e.width>>pt,$e.height>>pt,0,$e.internalformat,$e.type,null);wc($e.texInfo,$e.target)})}function pe(){for(var de=0;de=0?Qc=!0:On.indexOf(El)>=0&&(Qc=!1))),("depthTexture"in ls||"depthStencilTexture"in ls)&&(ef=!!(ls.depthTexture||ls.depthStencilTexture)),"depth"in ls&&(typeof ls.depth=="boolean"?Yl=ls.depth:(yf=ls.depth,$c=!1)),"stencil"in ls&&(typeof ls.stencil=="boolean"?$c=ls.stencil:(Gl=ls.stencil,Yl=!1)),"depthStencil"in ls&&(typeof ls.depthStencil=="boolean"?Yl=$c=ls.depthStencil:(Fc=ls.depthStencil,Yl=!1,$c=!1))}var ns=null,Y=null,z=null,K=null;if(Array.isArray(xs))ns=xs.map(fn);else if(xs)ns=[fn(xs)];else for(ns=new Array(wc),_o=0;_o0&&(Oa.depth=Vn[0].depth,Oa.stencil=Vn[0].stencil,Oa.depthStencil=Vn[0].depthStencil),Vn[Jn]?Vn[Jn](Oa):Vn[Jn]=vn(Oa)}return e(ma,{width:_o,height:_o,color:El})}function ro(Ao){var Jn,Oa=Ao|0;if(Oa===ma.width)return ma;var _o=ma.color;for(Jn=0;Jn<_o.length;++Jn)_o[Jn].resize(Oa);for(Jn=0;Jn<6;++Jn)Vn[Jn].resize(Oa);return ma.width=ma.height=Oa,ma}return ma(Xn),e(ma,{faces:Vn,resize:ro,_reglType:"framebufferCube",destroy:function(){Vn.forEach(function(Ao){Ao.destroy()})}})}function aa(){Bi.cur=null,Bi.next=null,Bi.dirty=!0,ut(gn).forEach(function(Xn){Xn.framebuffer=At.createFramebuffer(),wn(Xn)})}return e(Bi,{getFramebuffer:function(Xn){if(typeof Xn=="function"&&Xn._reglType==="framebuffer"){var Vn=Xn._framebuffer;if(Vn instanceof ca)return Vn}return null},create:vn,createCube:Aa,clear:function(){ut(gn).forEach(Za)},restore:aa})}var md=5126,sh=34962,Fs=34963;function _u(){this.state=0,this.x=0,this.y=0,this.z=0,this.w=0,this.buffer=null,this.size=0,this.normalized=!1,this.type=md,this.offset=0,this.stride=0,this.divisor=0}function xu(At,Er,Wr,wi,Ui,Oi,Bi){for(var cn=Wr.maxAttributes,On=new Array(cn),Bn=0;Bn=_o.byteLength?Po.subdata(_o):(Po.destroy(),vn.buffers[Ao]=null)),vn.buffers[Ao]||(Po=vn.buffers[Ao]=Ui.create(Jn,sh,!1,!0)),Oa.buffer=Ui.getBuffer(Po),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1,ma[Ao]=1}else Ui.getBuffer(Jn)?(Oa.buffer=Ui.getBuffer(Jn),Oa.size=Oa.buffer.dimension|0,Oa.normalized=!1,Oa.type=Oa.buffer.dtype,Oa.offset=0,Oa.stride=0,Oa.divisor=0,Oa.state=1):Ui.getBuffer(Jn.buffer)?(Oa.buffer=Ui.getBuffer(Jn.buffer),Oa.size=(+Jn.size||Oa.buffer.dimension)|0,Oa.normalized=!!Jn.normalized||!1,"type"in Jn?Oa.type=bi[Jn.type]:Oa.type=Oa.buffer.dtype,Oa.offset=(Jn.offset||0)|0,Oa.stride=(Jn.stride||0)|0,Oa.divisor=(Jn.divisor||0)|0,Oa.state=1):"x"in Jn&&(Oa.x=+Jn.x||0,Oa.y=+Jn.y||0,Oa.z=+Jn.z||0,Oa.w=+Jn.w||0,Oa.state=2)}for(var Jo=0;Jo1)for(var aa=0;aaAi&&(Ai=ji.stats.uniformsCount)}),Ai},Wr.getMaxAttributesCount=function(){var Ai=0;return yn.forEach(function(ji){ji.stats.attributesCount>Ai&&(Ai=ji.stats.attributesCount)}),Ai});function fn(){Ui={},Oi={};for(var Ai=0;Ai16&&(Wr=Ti(Wr,At.length*8));for(var wi=Array(16),Ui=Array(16),Oi=0;Oi<16;Oi++)wi[Oi]=Wr[Oi]^909522486,Ui[Oi]=Wr[Oi]^1549556828;var Bi=Ti(wi.concat(gf(Er)),512+Er.length*8);return gt(Ti(Ui.concat(Bi),768))}function iu(At){for(var Er=Ih?"0123456789ABCDEF":"0123456789abcdef",Wr="",wi,Ui=0;Ui>>4&15)+Er.charAt(wi&15);return Wr}function mc(At){for(var Er="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Wr="",wi=At.length,Ui=0;UiAt.length*8?Wr+=Wu:Wr+=Er.charAt(Oi>>>6*(3-Bi)&63);return Wr}function Yc(At,Er){var Wr=Er.length,wi=Array(),Ui,Oi,Bi,cn,On=Array(Math.ceil(At.length/2));for(Ui=0;Ui0;){for(cn=Array(),Bi=0,Ui=0;Ui0||Oi>0)&&(cn[cn.length]=Oi);wi[wi.length]=Bi,On=cn}var Bn="";for(Ui=wi.length-1;Ui>=0;Ui--)Bn+=Er.charAt(wi[Ui]);var yn=Math.ceil(At.length*8/(Math.log(Er.length)/Math.log(2)));for(Ui=Bn.length;Ui>>6&31,128|wi&63):wi<=65535?Er+=String.fromCharCode(224|wi>>>12&15,128|wi>>>6&63,128|wi&63):wi<=2097151&&(Er+=String.fromCharCode(240|wi>>>18&7,128|wi>>>12&63,128|wi>>>6&63,128|wi&63));return Er}function gf(At){for(var Er=Array(At.length>>2),Wr=0;Wr>5]|=(At.charCodeAt(Wr/8)&255)<<24-Wr%32;return Er}function gt(At){for(var Er="",Wr=0;Wr>5]>>>24-Wr%32&255);return Er}function Bt(At,Er){return At>>>Er|At<<32-Er}function wr(At,Er){return At>>>Er}function vr(At,Er,Wr){return At&Er^~At&Wr}function Ur(At,Er,Wr){return At&Er^At&Wr^Er&Wr}function fi(At){return Bt(At,2)^Bt(At,13)^Bt(At,22)}function xi(At){return Bt(At,6)^Bt(At,11)^Bt(At,25)}function Fi(At){return Bt(At,7)^Bt(At,18)^wr(At,3)}function Xi(At){return Bt(At,17)^Bt(At,19)^wr(At,10)}var hn=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function Ti(At,Er){var Wr=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),wi=new Array(64),Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai;for(At[Er>>5]|=128<<24-Er%32,At[(Er+64>>9<<4)+15]=Er,Rn=0;Rn>16)+(Er>>16)+(Wr>>16);return wi<<16|Wr&65535}function Ii(At){return Array.prototype.slice.call(At)}function mi(At){return Ii(At).join("")}function Pn(At){var Er=At&&At.cache,Wr=0,wi=[],Ui=[],Oi=[];function Bi(fn,Ai){var ji=Ai&&Ai.stable;if(!ji){for(var Ln=0;Ln0&&(fn.push(Un,"="),fn.push.apply(fn,Ii(arguments)),fn.push(";")),Un}return e(Ai,{def:Ln,toString:function(){return mi([ji.length>0?"var "+ji.join(",")+";":"",mi(fn)])}})}function On(){var fn=cn(),Ai=cn(),ji=fn.toString,Ln=Ai.toString;function Un(gn,ca){Ai(gn,ca,"=",fn.def(gn,ca),";")}return e(function(){fn.apply(fn,Ii(arguments))},{def:fn.def,entry:fn,exit:Ai,save:Un,set:function(gn,ca,Kn){Un(gn,ca),fn(gn,ca,"=",Kn,";")},toString:function(){return ji()+Ln()}})}function Bn(){var fn=mi(arguments),Ai=On(),ji=On(),Ln=Ai.toString,Un=ji.toString;return e(Ai,{then:function(){return Ai.apply(Ai,Ii(arguments)),this},else:function(){return ji.apply(ji,Ii(arguments)),this},toString:function(){var gn=Un();return gn&&(gn="else{"+gn+"}"),mi(["if(",fn,"){",Ln(),"}",gn])}})}var yn=cn(),to={};function Rn(fn,Ai){var ji=[];function Ln(){var Za="a"+ji.length;return ji.push(Za),Za}Ai=Ai||0;for(var Un=0;Un":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Kr={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},ii={cw:we,ccw:Be};function vi(At){return Array.isArray(At)||Or(At)||Nr(At)}function ci(At){return At.sort(function(Er,Wr){return Er===ee?-1:Wr===ee?1:Er=1,wi>=2,Er)}else if(Wr===Xo){var Ui=At.data;return new Jr(Ui.thisDep,Ui.contextDep,Ui.propDep,Er)}else{if(Wr===Ts)return new Jr(!1,!1,!1,Er);if(Wr===Qo){for(var Oi=!1,Bi=!1,cn=!1,On=0;On=1&&(Bi=!0),yn>=2&&(cn=!0)}else Bn.type===Xo&&(Oi=Oi||Bn.data.thisDep,Bi=Bi||Bn.data.contextDep,cn=cn||Bn.data.propDep)}return new Jr(Oi,Bi,cn,Er)}else return new Jr(Wr===mo,Wr===Ua,Wr===sn,Er)}}var Nn=new Jr(!1,!1,!1,function(){});function ga(At,Er,Wr,wi,Ui,Oi,Bi,cn,On,Bn,yn,to,Rn,Dn,fn,Ai){var ji=Bn.Record,Ln={add:32774,subtract:32778,"reverse subtract":32779};Wr.ext_blend_minmax&&(Ln.min=Ue,Ln.max=We);var Un=Wr.angle_instanced_arrays,gn=Wr.webgl_draw_buffers,ca=Wr.oes_vertex_array_object,Kn={dirty:!0,profile:Ai.profile},Za={},wn=[],vn={},Aa={};function aa(vt){return vt.replace(".","_")}function Xn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Za[rr]=Kn[rr]=!!Wt,vn[rr]=Pt}function Vn(vt,Pt,Wt){var rr=aa(vt);wn.push(vt),Array.isArray(Wt)?(Kn[rr]=Wt.slice(),Za[rr]=Wt.slice()):Kn[rr]=Za[rr]=Wt,Aa[rr]=Pt}function ma(vt){return!!isNaN(vt)}Xn(ys,di),Xn(Bo,Xr),Vn(yl,"blendColor",[0,0,0,0]),Vn(Gs,"blendEquationSeparate",[lr,lr]),Vn(Rs,"blendFuncSeparate",[or,zt,or,zt]),Xn(ia,Ci,!0),Vn(Ka,"depthFunc",Dr),Vn(vs,"depthRange",[0,1]),Vn(Ko,"depthMask",!0),Vn(nu,nu,[!0,!0,!0,!0]),Xn(Ru,zr),Vn(ac,"cullFace",oe),Vn(mf,mf,Be),Vn(bu,bu,1),Xn(Kc,Mn),Vn(Du,"polygonOffset",[0,0]),Xn(Dc,pa),Xn(Da,ea),Vn(eo,"sampleCoverage",[1,!1]),Xn(Jc,Li),Vn(yc,"stencilMask",-1),Vn(_c,"stencilFunc",[wt,0,-1]),Vn(le,"stencilOpSeparate",[Z,tt,tt,tt]),Vn(w,"stencilOpSeparate",[oe,tt,tt,tt]),Xn(B,Qi),Vn(Q,"scissor",[0,0,At.drawingBufferWidth,At.drawingBufferHeight]),Vn(ee,ee,[0,0,At.drawingBufferWidth,At.drawingBufferHeight]);var ro={gl:At,context:Rn,strings:Er,next:Za,current:Kn,draw:to,elements:Oi,buffer:Ui,shader:yn,attributes:Bn.state,vao:Bn,uniforms:On,framebuffer:cn,extensions:Wr,timer:Dn,isBufferArgs:vi},Ao={primTypes:Ki,compareFuncs:qr,blendFuncs:ui,blendEquations:Ln,stencilOps:Kr,glTypes:bi,orientationType:ii};gn&&(Ao.backBuffer=[oe],Ao.drawBuffer=M(wi.maxDrawbuffers,function(vt){return vt===0?[0]:M(vt,function(Pt){return oi+Pt})}));var Jn=0;function Oa(){var vt=Pn({cache:fn}),Pt=vt.link,Wt=vt.global;vt.id=Jn++,vt.batchId="0";var rr=Pt(ro),dr=vt.shared={props:"a0"};Object.keys(ro).forEach(function(Cr){dr[Cr]=Wt.def(rr,".",Cr)});var pr=vt.next={},kr=vt.current={};Object.keys(Aa).forEach(function(Cr){Array.isArray(Kn[Cr])&&(pr[Cr]=Wt.def(dr.next,".",Cr),kr[Cr]=Wt.def(dr.current,".",Cr))});var Ar=vt.constants={};Object.keys(Ao).forEach(function(Cr){Ar[Cr]=Wt.def(JSON.stringify(Ao[Cr]))}),vt.invoke=function(Cr,cr){switch(cr.type){case Cn:var Gr=["this",dr.context,dr.props,vt.batchId];return Cr.def(Pt(cr.data),".call(",Gr.slice(0,Math.max(cr.data.length+1,4)),")");case sn:return Cr.def(dr.props,cr.data);case Ua:return Cr.def(dr.context,cr.data);case mo:return Cr.def("this",cr.data);case Xo:return cr.data.append(vt,Cr),cr.data.ref;case Ts:return cr.data.toString();case Qo:return cr.data.map(function(ei){return vt.invoke(Cr,ei)})}},vt.attribCache={};var gr={};return vt.scopeAttrib=function(Cr){var cr=Er.id(Cr);if(cr in gr)return gr[cr];var Gr=Bn.scope[cr];Gr||(Gr=Bn.scope[cr]=new ji);var ei=gr[cr]=Pt(Gr);return ei},vt}function _o(vt){var Pt=vt.static,Wt=vt.dynamic,rr;if(se in Pt){var dr=!!Pt[se];rr=dn(function(kr,Ar){return dr}),rr.enable=dr}else if(se in Wt){var pr=Wt[se];rr=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}return rr}function Po(vt,Pt){var Wt=vt.static,rr=vt.dynamic;if(qe in Wt){var dr=Wt[qe];return dr?(dr=cn.getFramebuffer(dr),dn(function(kr,Ar){var gr=kr.link(dr),Cr=kr.shared;Ar.set(Cr.framebuffer,".next",gr);var cr=Cr.context;return Ar.set(cr,"."+Oe,gr+".width"),Ar.set(cr,"."+Je,gr+".height"),gr})):dn(function(kr,Ar){var gr=kr.shared;Ar.set(gr.framebuffer,".next","null");var Cr=gr.context;return Ar.set(Cr,"."+Oe,Cr+"."+Dt),Ar.set(Cr,"."+Je,Cr+"."+Ut),"null"})}else if(qe in rr){var pr=rr[qe];return En(pr,function(kr,Ar){var gr=kr.invoke(Ar,pr),Cr=kr.shared,cr=Cr.framebuffer,Gr=Ar.def(cr,".getFramebuffer(",gr,")");Ar.set(cr,".next",Gr);var ei=Cr.context;return Ar.set(ei,"."+Oe,Gr+"?"+Gr+".width:"+ei+"."+Dt),Ar.set(ei,"."+Je,Gr+"?"+Gr+".height:"+ei+"."+Ut),Gr})}else return null}function Jo(vt,Pt,Wt){var rr=vt.static,dr=vt.dynamic;function pr(gr){if(gr in rr){var Cr=rr[gr],cr=!0,Gr=Cr.x|0,ei=Cr.y|0,yi,tn;return"width"in Cr?yi=Cr.width|0:cr=!1,"height"in Cr?tn=Cr.height|0:cr=!1,new Jr(!cr&&Pt&&Pt.thisDep,!cr&&Pt&&Pt.contextDep,!cr&&Pt&&Pt.propDep,function(Qn,qn){var rn=Qn.shared.context,bn=yi;"width"in Cr||(bn=qn.def(rn,".",Oe,"-",Gr));var mn=tn;return"height"in Cr||(mn=qn.def(rn,".",Je,"-",ei)),[Gr,ei,bn,mn]})}else if(gr in dr){var Ri=dr[gr],ln=En(Ri,function(Qn,qn){var rn=Qn.invoke(qn,Ri),bn=Qn.shared.context,mn=qn.def(rn,".x|0"),Gn=qn.def(rn,".y|0"),da=qn.def('"width" in ',rn,"?",rn,".width|0:","(",bn,".",Oe,"-",mn,")"),No=qn.def('"height" in ',rn,"?",rn,".height|0:","(",bn,".",Je,"-",Gn,")");return[mn,Gn,da,No]});return Pt&&(ln.thisDep=ln.thisDep||Pt.thisDep,ln.contextDep=ln.contextDep||Pt.contextDep,ln.propDep=ln.propDep||Pt.propDep),ln}else return Pt?new Jr(Pt.thisDep,Pt.contextDep,Pt.propDep,function(Qn,qn){var rn=Qn.shared.context;return[0,0,qn.def(rn,".",Oe),qn.def(rn,".",Je)]}):null}var kr=pr(ee);if(kr){var Ar=kr;kr=new Jr(kr.thisDep,kr.contextDep,kr.propDep,function(gr,Cr){var cr=Ar.append(gr,Cr),Gr=gr.shared.context;return Cr.set(Gr,"."+He,cr[2]),Cr.set(Gr,"."+et,cr[3]),cr})}return{viewport:kr,scissor_box:pr(Q)}}function Yl(vt,Pt){var Wt=vt.static,rr=typeof Wt[it]=="string"&&typeof Wt[je]=="string";if(rr){if(Object.keys(Pt.dynamic).length>0)return null;var dr=Pt.static,pr=Object.keys(dr);if(pr.length>0&&typeof dr[pr[0]]=="number"){for(var kr=[],Ar=0;Ar"+mn+"?"+cr+".constant["+mn+"]:0;"}).join(""),"}}else{","if(",yi,"(",cr,".buffer)){",Qn,"=",tn,".createStream(",mr,",",cr,".buffer);","}else{",Qn,"=",tn,".getBuffer(",cr,".buffer);","}",qn,'="type" in ',cr,"?",ei.glTypes,"[",cr,".type]:",Qn,".dtype;",Ri.normalized,"=!!",cr,".normalized;");function rn(bn){Cr(Ri[bn],"=",cr,".",bn,"|0;")}return rn("size"),rn("offset"),rn("stride"),rn("divisor"),Cr("}}"),Cr.exit("if(",Ri.isStream,"){",tn,".destroyStream(",Qn,");","}"),Ri}dr[pr]=En(kr,Ar)}),dr}function wc(vt){var Pt=vt.static,Wt=vt.dynamic,rr={};return Object.keys(Pt).forEach(function(dr){var pr=Pt[dr];rr[dr]=dn(function(kr,Ar){return typeof pr=="number"||typeof pr=="boolean"?""+pr:kr.link(pr)})}),Object.keys(Wt).forEach(function(dr){var pr=Wt[dr];rr[dr]=En(pr,function(kr,Ar){return kr.invoke(Ar,pr)})}),rr}function yf(vt,Pt,Wt,rr,dr){var pr=vt.static,kr=vt.dynamic,Ar=Yl(vt,Pt),gr=Po(vt,dr),Cr=Jo(vt,gr,dr),cr=xs(vt,dr),Gr=Qc(vt,dr),ei=$c(vt,dr,Ar);function yi(rn){var bn=Cr[rn];bn&&(Gr[rn]=bn)}yi(ee),yi(aa(Q));var tn=Object.keys(Gr).length>0,Ri={framebuffer:gr,draw:cr,shader:ei,state:Gr,dirty:tn,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(Ri.profile=_o(vt,dr),Ri.uniforms=El(Wt,dr),Ri.drawVAO=Ri.scopeVAO=cr.vao,!Ri.drawVAO&&ei.program&&!Ar&&Wr.angle_instanced_arrays&&cr.static.elements){var ln=!0,Qn=ei.program.attributes.map(function(rn){var bn=Pt.static[rn];return ln=ln&&!!bn,bn});if(ln&&Qn.length>0){var qn=Bn.getVAO(Bn.createVAO({attributes:Qn,elements:cr.static.elements}));Ri.drawVAO=new Jr(null,null,null,function(rn,bn){return rn.link(qn)}),Ri.useVAO=!0}}return Ar?Ri.useVAO=!0:Ri.attributes=bc(Pt,dr),Ri.context=wc(rr,dr),Ri}function Gl(vt,Pt,Wt){var rr=vt.shared,dr=rr.context,pr=vt.scope();Object.keys(Wt).forEach(function(kr){Pt.save(dr,"."+kr);var Ar=Wt[kr],gr=Ar.append(vt,Pt);Array.isArray(gr)?pr(dr,".",kr,"=[",gr.join(),"];"):pr(dr,".",kr,"=",gr,";")}),Pt(pr)}function Fc(vt,Pt,Wt,rr){var dr=vt.shared,pr=dr.gl,kr=dr.framebuffer,Ar;gn&&(Ar=Pt.def(dr.extensions,".webgl_draw_buffers"));var gr=vt.constants,Cr=gr.drawBuffer,cr=gr.backBuffer,Gr;Wt?Gr=Wt.append(vt,Pt):Gr=Pt.def(kr,".next"),rr||Pt("if(",Gr,"!==",kr,".cur){"),Pt("if(",Gr,"){",pr,".bindFramebuffer(",Ir,",",Gr,".framebuffer);"),gn&&Pt(Ar,".drawBuffersWEBGL(",Cr,"[",Gr,".colorAttachments.length]);"),Pt("}else{",pr,".bindFramebuffer(",Ir,",null);"),gn&&Pt(Ar,".drawBuffersWEBGL(",cr,");"),Pt("}",kr,".cur=",Gr,";"),rr||Pt("}")}function ef(vt,Pt,Wt){var rr=vt.shared,dr=rr.gl,pr=vt.current,kr=vt.next,Ar=rr.current,gr=rr.next,Cr=vt.cond(Ar,".dirty");wn.forEach(function(cr){var Gr=aa(cr);if(!(Gr in Wt.state)){var ei,yi;if(Gr in kr){ei=kr[Gr],yi=pr[Gr];var tn=M(Kn[Gr].length,function(ln){return Cr.def(ei,"[",ln,"]")});Cr(vt.cond(tn.map(function(ln,Qn){return ln+"!=="+yi+"["+Qn+"]"}).join("||")).then(dr,".",Aa[Gr],"(",tn,");",tn.map(function(ln,Qn){return yi+"["+Qn+"]="+ln}).join(";"),";"))}else{ei=Cr.def(gr,".",Gr);var Ri=vt.cond(ei,"!==",Ar,".",Gr);Cr(Ri),Gr in vn?Ri(vt.cond(ei).then(dr,".enable(",vn[Gr],");").else(dr,".disable(",vn[Gr],");"),Ar,".",Gr,"=",ei,";"):Ri(dr,".",Aa[Gr],"(",ei,");",Ar,".",Gr,"=",ei,";")}}}),Object.keys(Wt.state).length===0&&Cr(Ar,".dirty=false;"),Pt(Cr)}function ls(vt,Pt,Wt,rr){var dr=vt.shared,pr=vt.current,kr=dr.current,Ar=dr.gl,gr;ci(Object.keys(Wt)).forEach(function(Cr){var cr=Wt[Cr];if(!(rr&&!rr(cr))){var Gr=cr.append(vt,Pt);if(vn[Cr]){var ei=vn[Cr];un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(vt.cond(gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",gr,";")):(Pt(vt.cond(Gr).then(Ar,".enable(",ei,");").else(Ar,".disable(",ei,");")),Pt(kr,".",Cr,"=",Gr,";"))}else if(an(Gr)){var yi=pr[Cr];Pt(Ar,".",Aa[Cr],"(",Gr,");",Gr.map(function(tn,Ri){return yi+"["+Ri+"]="+tn}).join(";"),";")}else un(cr)?(gr=vt.link(Gr,{stable:!0}),Pt(Ar,".",Aa[Cr],"(",gr,");",kr,".",Cr,"=",gr,";")):Pt(Ar,".",Aa[Cr],"(",Gr,");",kr,".",Cr,"=",Gr,";")}})}function _f(vt,Pt){Un&&(vt.instancing=Pt.def(vt.shared.extensions,".angle_instanced_arrays"))}function ns(vt,Pt,Wt,rr,dr){var pr=vt.shared,kr=vt.stats,Ar=pr.current,gr=pr.timer,Cr=Wt.profile;function cr(){return typeof performance=="undefined"?"Date.now()":"performance.now()"}var Gr,ei;function yi(rn){Gr=Pt.def(),rn(Gr,"=",cr(),";"),typeof dr=="string"?rn(kr,".count+=",dr,";"):rn(kr,".count++;"),Dn&&(rr?(ei=Pt.def(),rn(ei,"=",gr,".getNumPendingQueries();")):rn(gr,".beginQuery(",kr,");"))}function tn(rn){rn(kr,".cpuTime+=",cr(),"-",Gr,";"),Dn&&(rr?rn(gr,".pushScopeStats(",ei,",",gr,".getNumPendingQueries(),",kr,");"):rn(gr,".endQuery();"))}function Ri(rn){var bn=Pt.def(Ar,".profile");Pt(Ar,".profile=",rn,";"),Pt.exit(Ar,".profile=",bn,";")}var ln;if(Cr){if(un(Cr)){Cr.enable?(yi(Pt),tn(Pt.exit),Ri("true")):Ri("false");return}ln=Cr.append(vt,Pt),Ri(ln)}else ln=Pt.def(Ar,".profile");var Qn=vt.block();yi(Qn),Pt("if(",ln,"){",Qn,"}");var qn=vt.block();tn(qn),Pt.exit("if(",ln,"){",qn,"}")}function Y(vt,Pt,Wt,rr,dr){var pr=vt.shared;function kr(gr){switch(gr){case To:case Ds:case _l:return 2;case Wa:case As:case Hl:return 3;case co:case yo:case Zu:return 4;default:return 1}}function Ar(gr,Cr,cr){var Gr=pr.gl,ei=Pt.def(gr,".location"),yi=Pt.def(pr.attributes,"[",ei,"]"),tn=cr.state,Ri=cr.buffer,ln=[cr.x,cr.y,cr.z,cr.w],Qn=["buffer","normalized","offset","stride"];function qn(){Pt("if(!",yi,".buffer){",Gr,".enableVertexAttribArray(",ei,");}");var bn=cr.type,mn;if(cr.size?mn=Pt.def(cr.size,"||",Cr):mn=Cr,Pt("if(",yi,".type!==",bn,"||",yi,".size!==",mn,"||",Qn.map(function(da){return yi+"."+da+"!=="+cr[da]}).join("||"),"){",Gr,".bindBuffer(",mr,",",Ri,".buffer);",Gr,".vertexAttribPointer(",[ei,mn,bn,cr.normalized,cr.stride,cr.offset],");",yi,".type=",bn,";",yi,".size=",mn,";",Qn.map(function(da){return yi+"."+da+"="+cr[da]+";"}).join(""),"}"),Un){var Gn=cr.divisor;Pt("if(",yi,".divisor!==",Gn,"){",vt.instancing,".vertexAttribDivisorANGLE(",[ei,Gn],");",yi,".divisor=",Gn,";}")}}function rn(){Pt("if(",yi,".buffer){",Gr,".disableVertexAttribArray(",ei,");",yi,".buffer=null;","}if(",Ma.map(function(bn,mn){return yi+"."+bn+"!=="+ln[mn]}).join("||"),"){",Gr,".vertexAttrib4f(",ei,",",ln,");",Ma.map(function(bn,mn){return yi+"."+bn+"="+ln[mn]+";"}).join(""),"}")}tn===Ea?qn():tn===qa?rn():(Pt("if(",tn,"===",Ea,"){"),qn(),Pt("}else{"),rn(),Pt("}"))}rr.forEach(function(gr){var Cr=gr.name,cr=Wt.attributes[Cr],Gr;if(cr){if(!dr(cr))return;Gr=cr.append(vt,Pt)}else{if(!dr(Nn))return;var ei=vt.scopeAttrib(Cr);Gr={},Object.keys(new ji).forEach(function(yi){Gr[yi]=Pt.def(ei,".",yi)})}Ar(vt.link(gr),kr(gr.info.type),Gr)})}function z(vt,Pt,Wt,rr,dr,pr){for(var kr=vt.shared,Ar=kr.gl,gr,Cr=0;Cr1){for(var Do=[],ps=[],fo=0;fo>1)",Ri],");")}function Gn(){Wt(ln,".drawArraysInstancedANGLE(",[ei,yi,tn,Ri],");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}function bn(){function mn(){Wt(pr+".drawElements("+[ei,tn,Qn,yi+"<<(("+Qn+"-"+Ta+")>>1)"]+");")}function Gn(){Wt(pr+".drawArrays("+[ei,yi,tn]+");")}cr&&cr!=="null"?qn?mn():(Wt("if(",cr,"){"),mn(),Wt("}else{"),Gn(),Wt("}")):Gn()}Un&&(typeof Ri!="number"||Ri>=0)?typeof Ri=="string"?(Wt("if(",Ri,">0){"),rn(),Wt("}else if(",Ri,"<0){"),bn(),Wt("}")):rn():bn()}function O(vt,Pt,Wt,rr,dr){var pr=Oa(),kr=pr.proc("body",dr);return Un&&(pr.instancing=kr.def(pr.shared.extensions,".angle_instanced_arrays")),vt(pr,kr,Wt,rr),pr.compile().body}function $(vt,Pt,Wt,rr){_f(vt,Pt),Wt.useVAO?Wt.drawVAO?Pt(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Pt),");"):Pt(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Pt(vt.shared.vao,".setVAO(null);"),Y(vt,Pt,Wt,rr.attributes,function(){return!0})),z(vt,Pt,Wt,rr.uniforms,function(){return!0},!1),K(vt,Pt,Pt,Wt)}function pe(vt,Pt){var Wt=vt.proc("draw",1);_f(vt,Wt),Gl(vt,Wt,Pt.context),Fc(vt,Wt,Pt.framebuffer),ef(vt,Wt,Pt),ls(vt,Wt,Pt.state),ns(vt,Wt,Pt,!1,!0);var rr=Pt.shader.progVar.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",rr,".program);"),Pt.shader.program)$(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var dr=vt.global.def("{}"),pr=Wt.def(rr,".id"),kr=Wt.def(dr,"[",pr,"]");Wt(vt.cond(kr).then(kr,".call(this,a0);").else(kr,"=",dr,"[",pr,"]=",vt.link(function(Ar){return O($,vt,Pt,Ar,1)}),"(",rr,");",kr,".call(this,a0);"))}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function de(vt,Pt,Wt,rr){vt.batchId="a1",_f(vt,Pt);function dr(){return!0}Y(vt,Pt,Wt,rr.attributes,dr),z(vt,Pt,Wt,rr.uniforms,dr,!1),K(vt,Pt,Pt,Wt)}function Ie(vt,Pt,Wt,rr){_f(vt,Pt);var dr=Wt.contextDep,pr=Pt.def(),kr="a0",Ar="a1",gr=Pt.def();vt.shared.props=gr,vt.batchId=pr;var Cr=vt.scope(),cr=vt.scope();Pt(Cr.entry,"for(",pr,"=0;",pr,"<",Ar,";++",pr,"){",gr,"=",kr,"[",pr,"];",cr,"}",Cr.exit);function Gr(Qn){return Qn.contextDep&&dr||Qn.propDep}function ei(Qn){return!Gr(Qn)}if(Wt.needsContext&&Gl(vt,cr,Wt.context),Wt.needsFramebuffer&&Fc(vt,cr,Wt.framebuffer),ls(vt,cr,Wt.state,Gr),Wt.profile&&Gr(Wt.profile)&&ns(vt,cr,Wt,!1,!0),rr)Wt.useVAO?Wt.drawVAO?Gr(Wt.drawVAO)?cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,cr),");"):Cr(vt.shared.vao,".setVAO(",Wt.drawVAO.append(vt,Cr),");"):Cr(vt.shared.vao,".setVAO(",vt.shared.vao,".targetVAO);"):(Cr(vt.shared.vao,".setVAO(null);"),Y(vt,Cr,Wt,rr.attributes,ei),Y(vt,cr,Wt,rr.attributes,Gr)),z(vt,Cr,Wt,rr.uniforms,ei,!1),z(vt,cr,Wt,rr.uniforms,Gr,!0),K(vt,Cr,cr,Wt);else{var yi=vt.global.def("{}"),tn=Wt.shader.progVar.append(vt,cr),Ri=cr.def(tn,".id"),ln=cr.def(yi,"[",Ri,"]");cr(vt.shared.gl,".useProgram(",tn,".program);","if(!",ln,"){",ln,"=",yi,"[",Ri,"]=",vt.link(function(Qn){return O(de,vt,Wt,Qn,2)}),"(",tn,");}",ln,".call(this,a0[",pr,"],",pr,");")}}function $e(vt,Pt){var Wt=vt.proc("batch",2);vt.batchId="0",_f(vt,Wt);var rr=!1,dr=!0;Object.keys(Pt.context).forEach(function(yi){rr=rr||Pt.context[yi].propDep}),rr||(Gl(vt,Wt,Pt.context),dr=!1);var pr=Pt.framebuffer,kr=!1;pr?(pr.propDep?rr=kr=!0:pr.contextDep&&rr&&(kr=!0),kr||Fc(vt,Wt,pr)):Fc(vt,Wt,null),Pt.state.viewport&&Pt.state.viewport.propDep&&(rr=!0);function Ar(yi){return yi.contextDep&&rr||yi.propDep}ef(vt,Wt,Pt),ls(vt,Wt,Pt.state,function(yi){return!Ar(yi)}),(!Pt.profile||!Ar(Pt.profile))&&ns(vt,Wt,Pt,!1,"a1"),Pt.contextDep=rr,Pt.needsContext=dr,Pt.needsFramebuffer=kr;var gr=Pt.shader.progVar;if(gr.contextDep&&rr||gr.propDep)Ie(vt,Wt,Pt,null);else{var Cr=gr.append(vt,Wt);if(Wt(vt.shared.gl,".useProgram(",Cr,".program);"),Pt.shader.program)Ie(vt,Wt,Pt,Pt.shader.program);else{Wt(vt.shared.vao,".setVAO(null);");var cr=vt.global.def("{}"),Gr=Wt.def(Cr,".id"),ei=Wt.def(cr,"[",Gr,"]");Wt(vt.cond(ei).then(ei,".call(this,a0,a1);").else(ei,"=",cr,"[",Gr,"]=",vt.link(function(yi){return O(Ie,vt,Pt,yi,2)}),"(",Cr,");",ei,".call(this,a0,a1);"))}}Object.keys(Pt.state).length>0&&Wt(vt.shared.current,".dirty=true;"),vt.shared.vao&&Wt(vt.shared.vao,".setVAO(null);")}function pt(vt,Pt){var Wt=vt.proc("scope",3);vt.batchId="a2";var rr=vt.shared,dr=rr.current;if(Gl(vt,Wt,Pt.context),Pt.framebuffer&&Pt.framebuffer.append(vt,Wt),ci(Object.keys(Pt.state)).forEach(function(Ar){var gr=Pt.state[Ar],Cr=gr.append(vt,Wt);an(Cr)?Cr.forEach(function(cr,Gr){ma(cr)?Wt.set(vt.next[Ar],"["+Gr+"]",cr):Wt.set(vt.next[Ar],"["+Gr+"]",vt.link(cr,{stable:!0}))}):un(gr)?Wt.set(rr.next,"."+Ar,vt.link(Cr,{stable:!0})):Wt.set(rr.next,"."+Ar,Cr)}),ns(vt,Wt,Pt,!0,!0),[yt,hr,Nt,Sr,Ot].forEach(function(Ar){var gr=Pt.draw[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.draw,"."+Ar,Cr):Wt.set(rr.draw,"."+Ar,vt.link(Cr),{stable:!0})}}),Object.keys(Pt.uniforms).forEach(function(Ar){var gr=Pt.uniforms[Ar].append(vt,Wt);Array.isArray(gr)&&(gr="["+gr.map(function(Cr){return ma(Cr)?Cr:vt.link(Cr,{stable:!0})})+"]"),Wt.set(rr.uniforms,"["+vt.link(Er.id(Ar),{stable:!0})+"]",gr)}),Object.keys(Pt.attributes).forEach(function(Ar){var gr=Pt.attributes[Ar].append(vt,Wt),Cr=vt.scopeAttrib(Ar);Object.keys(new ji).forEach(function(cr){Wt.set(Cr,"."+cr,gr[cr])})}),Pt.scopeVAO){var pr=Pt.scopeVAO.append(vt,Wt);ma(pr)?Wt.set(rr.vao,".targetVAO",pr):Wt.set(rr.vao,".targetVAO",vt.link(pr,{stable:!0}))}function kr(Ar){var gr=Pt.shader[Ar];if(gr){var Cr=gr.append(vt,Wt);ma(Cr)?Wt.set(rr.shader,"."+Ar,Cr):Wt.set(rr.shader,"."+Ar,vt.link(Cr,{stable:!0}))}}kr(je),kr(it),Object.keys(Pt.state).length>0&&(Wt(dr,".dirty=true;"),Wt.exit(dr,".dirty=true;")),Wt("a1(",vt.shared.context,",a0,",vt.batchId,");")}function Kt(vt){if(!(typeof vt!="object"||an(vt))){for(var Pt=Object.keys(vt),Wt=0;Wt=0;--O){var $=ro[O];$&&$(fn,null,0)}Wr.flush(),yn&&yn.update()}function Jo(){!_o&&ro.length>0&&(_o=d.next(Po))}function Yl(){_o&&(d.cancel(Po),_o=null)}function $c(O){O.preventDefault(),Ui=!0,Yl(),Ao.forEach(function($){$()})}function xs(O){Wr.getError(),Ui=!1,Oi.restore(),Za.restore(),Un.restore(),wn.restore(),vn.restore(),Aa.restore(),ca.restore(),yn&&yn.restore(),aa.procs.refresh(),Jo(),Jn.forEach(function($){$()})}ma&&(ma.addEventListener(Lo,$c,!1),ma.addEventListener(Fo,xs,!1));function Qc(){ro.length=0,Yl(),ma&&(ma.removeEventListener(Lo,$c),ma.removeEventListener(Fo,xs)),Za.clear(),Aa.clear(),vn.clear(),ca.clear(),wn.clear(),gn.clear(),Un.clear(),yn&&yn.clear(),Oa.forEach(function(O){O()})}function El(O){function $(pr){var kr=e({},pr);delete kr.uniforms,delete kr.attributes,delete kr.context,delete kr.vao,"stencil"in kr&&kr.stencil.op&&(kr.stencil.opBack=kr.stencil.opFront=kr.stencil.op,delete kr.stencil.op);function Ar(gr){if(gr in kr){var Cr=kr[gr];delete kr[gr],Object.keys(Cr).forEach(function(cr){kr[gr+"."+cr]=Cr[cr]})}}return Ar("blend"),Ar("depth"),Ar("cull"),Ar("stencil"),Ar("polygonOffset"),Ar("scissor"),Ar("sample"),"vao"in pr&&(kr.vao=pr.vao),kr}function pe(pr,kr){var Ar={},gr={};return Object.keys(pr).forEach(function(Cr){var cr=pr[Cr];if(h.isDynamic(cr)){gr[Cr]=h.unbox(cr,Cr);return}else if(kr&&Array.isArray(cr)){for(var Gr=0;Gr0)return vt.call(this,rr(pr|0),pr|0)}else if(Array.isArray(pr)){if(pr.length)return vt.call(this,pr,pr.length)}else return Jt.call(this,pr)}return e(dr,{stats:Kt,destroy:function(){ir.destroy()}})}var bc=Aa.setFBO=El({framebuffer:h.define.call(null,js,"framebuffer")});function wc(O,$){var pe=0;aa.procs.poll();var de=$.color;de&&(Wr.clearColor(+de[0]||0,+de[1]||0,+de[2]||0,+de[3]||0),pe|=_s),"depth"in $&&(Wr.clearDepth(+$.depth),pe|=Ns),"stencil"in $&&(Wr.clearStencil($.stencil|0),pe|=pn),Wr.clear(pe)}function yf(O){if("framebuffer"in O)if(O.framebuffer&&O.framebuffer_reglType==="framebufferCube")for(var $=0;$<6;++$)bc(e({framebuffer:O.framebuffer.faces[$]},O),wc);else bc(O,wc);else wc(null,O)}function Gl(O){ro.push(O);function $(){var pe=dl(ro,O);function de(){var Ie=dl(ro,de);ro[Ie]=ro[ro.length-1],ro.length-=1,ro.length<=0&&Yl()}ro[pe]=de}return Jo(),{cancel:$}}function Fc(){var O=Vn.viewport,$=Vn.scissor_box;O[0]=O[1]=$[0]=$[1]=0,fn.viewportWidth=fn.framebufferWidth=fn.drawingBufferWidth=O[2]=$[2]=Wr.drawingBufferWidth,fn.viewportHeight=fn.framebufferHeight=fn.drawingBufferHeight=O[3]=$[3]=Wr.drawingBufferHeight}function ef(){fn.tick+=1,fn.time=_f(),Fc(),aa.procs.poll()}function ls(){wn.refresh(),Fc(),aa.procs.refresh(),yn&&yn.update()}function _f(){return(v()-to)/1e3}ls();function ns(O,$){var pe;switch(O){case"frame":return Gl($);case"lost":pe=Ao;break;case"restore":pe=Jn;break;case"destroy":pe=Oa;break;default:}return pe.push($),{cancel:function(){for(var de=0;de=0},read:Xn,destroy:Qc,_gl:Wr,_refresh:ls,poll:function(){ef(),yn&&yn.update()},now:_f,stats:cn,getCachedCode:Y,preloadCachedCode:z});return Er.onDone(null,K),K}return xc})});var Iqe=ye((wmr,Pqe)=>{"use strict";var QOt=Zm();Pqe.exports=function(t){if(t?typeof t=="string"&&(t={container:t}):t={},Cqe(t)?t={container:t}:eBt(t)?t={container:t}:tBt(t)?t={gl:t}:t=QOt(t,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0),t.pixelRatio||(t.pixelRatio=window.pixelRatio||1),t.gl)return t.gl;if(t.canvas&&(t.container=t.canvas.parentNode),t.container){if(typeof t.container=="string"){var r=document.querySelector(t.container);if(!r)throw Error("Element "+t.container+" is not found");t.container=r}Cqe(t.container)?(t.canvas=t.container,t.container=t.canvas.parentNode):t.canvas||(t.canvas=Lqe(),t.container.appendChild(t.canvas),kqe(t))}else if(!t.canvas)if(typeof document!="undefined")t.container=document.body||document.documentElement,t.canvas=Lqe(),t.container.appendChild(t.canvas),kqe(t);else throw Error("Not DOM environment. Use headless-gl.");return t.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(n){try{t.gl=t.canvas.getContext(n,t.attrs)}catch(i){}return t.gl}),t.gl};function kqe(e){if(e.container)if(e.container==document.body)document.body.style.width||(e.canvas.width=e.width||e.pixelRatio*window.innerWidth),document.body.style.height||(e.canvas.height=e.height||e.pixelRatio*window.innerHeight);else{var t=e.container.getBoundingClientRect();e.canvas.width=e.width||t.right-t.left,e.canvas.height=e.height||t.bottom-t.top}}function Cqe(e){return typeof e.getContext=="function"&&"width"in e&&"height"in e}function eBt(e){return typeof e.nodeName=="string"&&typeof e.appendChild=="function"&&typeof e.getBoundingClientRect=="function"}function tBt(e){return typeof e.drawArrays=="function"||typeof e.drawElements=="function"}function Lqe(){var e=document.createElement("canvas");return e.style.position="absolute",e.style.top=0,e.style.left=0,e}});var Dqe=ye((Tmr,Rqe)=>{"use strict";var rBt=UY(),iBt=[32,126];Rqe.exports=nBt;function nBt(e){e=e||{};var t=e.shape?e.shape:e.canvas?[e.canvas.width,e.canvas.height]:[512,512],r=e.canvas||document.createElement("canvas"),n=e.font,i=typeof e.step=="number"?[e.step,e.step]:e.step||[32,32],a=e.chars||iBt;if(n&&typeof n!="string"&&(n=rBt(n)),!Array.isArray(a))a=String(a).split("");else if(a.length===2&&typeof a[0]=="number"&&typeof a[1]=="number"){for(var o=[],s=a[0],l=0;s<=a[1];s++)o[l++]=String.fromCharCode(s);a=o}t=t.slice(),r.width=t[0],r.height=t[1];var u=r.getContext("2d");u.fillStyle="#000",u.fillRect(0,0,r.width,r.height),u.font=n,u.textAlign="center",u.textBaseline="middle",u.fillStyle="#fff";for(var c=i[0]/2,f=i[1]/2,s=0;st[0]-i[0]/2&&(c=i[0]/2,f+=i[1]);return r}});var WY=ye(Th=>{"use strict";"use restrict";var jY=32;Th.INT_BITS=jY;Th.INT_MAX=2147483647;Th.INT_MIN=-1<0)-(e<0)};Th.abs=function(e){var t=e>>jY-1;return(e^t)-t};Th.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};Th.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};Th.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function zqe(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}Th.countTrailingZeros=zqe;Th.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};Th.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};Th.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var _k=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|_k[e>>>16&255]<<8|_k[e>>>24&255]};Th.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};Th.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};Th.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};Th.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};Th.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>zqe(e)+1}});var Oqe=ye((Smr,qqe)=>{"use strict";function Fqe(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return aBt(e|0,t);break;case"object":if(typeof e.length=="number")return Fqe(e,t,0);break}return[]}qqe.exports=oBt});var Qqe=ye(Wl=>{"use strict";var fx=WY(),Av=Oqe(),Bqe=u2().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Av([32,0]),UINT16:Av([32,0]),UINT32:Av([32,0]),BIGUINT64:Av([32,0]),INT8:Av([32,0]),INT16:Av([32,0]),INT32:Av([32,0]),BIGINT64:Av([32,0]),FLOAT:Av([32,0]),DOUBLE:Av([32,0]),DATA:Av([32,0]),UINT8C:Av([32,0]),BUFFER:Av([32,0])});var sBt=typeof Uint8ClampedArray!="undefined",lBt=typeof BigUint64Array!="undefined",uBt=typeof BigInt64Array!="undefined",Xh=window.__TYPEDARRAY_POOL;Xh.UINT8C||(Xh.UINT8C=Av([32,0]));Xh.BIGUINT64||(Xh.BIGUINT64=Av([32,0]));Xh.BIGINT64||(Xh.BIGINT64=Av([32,0]));Xh.BUFFER||(Xh.BUFFER=Av([32,0]));var dF=Xh.DATA,vF=Xh.BUFFER;Wl.free=function(t){if(Bqe.isBuffer(t))vF[fx.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=fx.log2(r)|0;dF[n].push(t)}};function Nqe(e){if(e){var t=e.length||e.byteLength,r=fx.log2(t);dF[r].push(e)}}function cBt(e){Nqe(e.buffer)}Wl.freeUint8=Wl.freeUint16=Wl.freeUint32=Wl.freeBigUint64=Wl.freeInt8=Wl.freeInt16=Wl.freeInt32=Wl.freeBigInt64=Wl.freeFloat32=Wl.freeFloat=Wl.freeFloat64=Wl.freeDouble=Wl.freeUint8Clamped=Wl.freeDataView=cBt;Wl.freeArrayBuffer=Nqe;Wl.freeBuffer=function(t){vF[fx.log2(t.length)].push(t)};Wl.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return Bp(t);switch(r){case"uint8":return ZY(t);case"uint16":return Uqe(t);case"uint32":return Vqe(t);case"int8":return Hqe(t);case"int16":return Gqe(t);case"int32":return jqe(t);case"float":case"float32":return Wqe(t);case"double":case"float64":return Zqe(t);case"uint8_clamped":return Xqe(t);case"bigint64":return Kqe(t);case"biguint64":return Yqe(t);case"buffer":return $qe(t);case"data":case"dataview":return Jqe(t);default:return null}return null};function Bp(t){var t=fx.nextPow2(t),r=fx.log2(t),n=dF[r];return n.length>0?n.pop():new ArrayBuffer(t)}Wl.mallocArrayBuffer=Bp;function ZY(e){return new Uint8Array(Bp(e),0,e)}Wl.mallocUint8=ZY;function Uqe(e){return new Uint16Array(Bp(2*e),0,e)}Wl.mallocUint16=Uqe;function Vqe(e){return new Uint32Array(Bp(4*e),0,e)}Wl.mallocUint32=Vqe;function Hqe(e){return new Int8Array(Bp(e),0,e)}Wl.mallocInt8=Hqe;function Gqe(e){return new Int16Array(Bp(2*e),0,e)}Wl.mallocInt16=Gqe;function jqe(e){return new Int32Array(Bp(4*e),0,e)}Wl.mallocInt32=jqe;function Wqe(e){return new Float32Array(Bp(4*e),0,e)}Wl.mallocFloat32=Wl.mallocFloat=Wqe;function Zqe(e){return new Float64Array(Bp(8*e),0,e)}Wl.mallocFloat64=Wl.mallocDouble=Zqe;function Xqe(e){return sBt?new Uint8ClampedArray(Bp(e),0,e):ZY(e)}Wl.mallocUint8Clamped=Xqe;function Yqe(e){return lBt?new BigUint64Array(Bp(8*e),0,e):null}Wl.mallocBigUint64=Yqe;function Kqe(e){return uBt?new BigInt64Array(Bp(8*e),0,e):null}Wl.mallocBigInt64=Kqe;function Jqe(e){return new DataView(Bp(e),0,e)}Wl.mallocDataView=Jqe;function $qe(e){e=fx.nextPow2(e);var t=fx.log2(e),r=vF[t];return r.length>0?r.pop():new Bqe(e)}Wl.mallocBuffer=$qe;Wl.clearCache=function(){for(var t=0;t<32;++t)Xh.UINT8[t].length=0,Xh.UINT16[t].length=0,Xh.UINT32[t].length=0,Xh.INT8[t].length=0,Xh.INT16[t].length=0,Xh.INT32[t].length=0,Xh.FLOAT[t].length=0,Xh.DOUBLE[t].length=0,Xh.BIGUINT64[t].length=0,Xh.BIGINT64[t].length=0,Xh.UINT8C[t].length=0,dF[t].length=0,vF[t].length=0}});var tOe=ye((Emr,eOe)=>{"use strict";var fBt=Object.prototype.toString;eOe.exports=function(e){var t;return fBt.call(e)==="[object Object]"&&(t=Object.getPrototypeOf(e),t===null||t===Object.getPrototypeOf({}))}});var XY=ye((kmr,rOe)=>{rOe.exports=function(t,r){r||(r=[0,""]),t=String(t);var n=parseFloat(t,10);return r[0]=n,r[1]=t.match(/[\d.\-\+]*\s*(.*)/)[1]||"",r}});var aOe=ye((Cmr,nOe)=>{"use strict";var hBt=XY();nOe.exports=iOe;var xk=96;function YY(e,t){var r=hBt(getComputedStyle(e).getPropertyValue(t));return r[0]*iOe(r[1],e)}function dBt(e,t){var r=document.createElement("div");r.style["font-size"]="128"+e,t.appendChild(r);var n=YY(r,"font-size")/128;return t.removeChild(r),n}function iOe(e,t){switch(t=t||document.body,e=(e||"px").trim().toLowerCase(),(t===window||t===document)&&(t=document.body),e){case"%":return t.clientHeight/100;case"ch":case"ex":return dBt(e,t);case"em":return YY(t,"font-size");case"rem":return YY(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return xk;case"cm":return xk/2.54;case"mm":return xk/25.4;case"pt":return xk/72;case"pc":return xk/6}return 1}});var lOe=ye((Lmr,sOe)=>{"use strict";sOe.exports=mF;var vBt=mF.canvas=document.createElement("canvas"),pF=vBt.getContext("2d"),oOe=gF([32,126]);mF.createPairs=gF;mF.ascii=oOe;function mF(e,t){Array.isArray(e)&&(e=e.join(", "));var r={},n,i=16,a=.05;t&&(t.length===2&&typeof t[0]=="number"?n=gF(t):Array.isArray(t)?n=t:(t.o?n=gF(t.o):t.pairs&&(n=t.pairs),t.fontSize&&(i=t.fontSize),t.threshold!=null&&(a=t.threshold))),n||(n=oOe),pF.font=i+"px "+e;for(var o=0;oi*a){var c=(u-l)/i;r[s]=c*1e3}}return r}function gF(e){for(var t=[],r=e[0];r<=e[1];r++)for(var n=String.fromCharCode(r),i=e[0];i{"use strict";fOe.exports=hx;hx.canvas=document.createElement("canvas");hx.cache={};function hx(o,t){t||(t={}),(typeof o=="string"||Array.isArray(o))&&(t.family=o);var r=Array.isArray(t.family)?t.family.join(", "):t.family;if(!r)throw Error("`family` must be defined");var n=t.size||t.fontSize||t.em||48,i=t.weight||t.fontWeight||"",a=t.style||t.fontStyle||"",o=[a,i,n].join(" ")+"px "+r,s=t.origin||"top";if(hx.cache[r]&&n<=hx.cache[r].em)return uOe(hx.cache[r],s);var l=t.canvas||hx.canvas,u=l.getContext("2d"),c={upper:t.upper!==void 0?t.upper:"H",lower:t.lower!==void 0?t.lower:"x",descent:t.descent!==void 0?t.descent:"p",ascent:t.ascent!==void 0?t.ascent:"h",tittle:t.tittle!==void 0?t.tittle:"i",overshoot:t.overshoot!==void 0?t.overshoot:"O"},f=Math.ceil(n*1.5);l.height=f,l.width=f*.5,u.font=o;var h="H",d={top:0};u.clearRect(0,0,f,f),u.textBaseline="top",u.fillStyle="black",u.fillText(h,0,0);var v=Ym(u.getImageData(0,0,f,f));u.clearRect(0,0,f,f),u.textBaseline="bottom",u.fillText(h,0,f);var x=Ym(u.getImageData(0,0,f,f));d.lineHeight=d.bottom=f-x+v,u.clearRect(0,0,f,f),u.textBaseline="alphabetic",u.fillText(h,0,f);var b=Ym(u.getImageData(0,0,f,f)),p=f-b-1+v;d.baseline=d.alphabetic=p,u.clearRect(0,0,f,f),u.textBaseline="middle",u.fillText(h,0,f*.5);var E=Ym(u.getImageData(0,0,f,f));d.median=d.middle=f-E-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="hanging",u.fillText(h,0,f*.5);var k=Ym(u.getImageData(0,0,f,f));d.hanging=f-k-1+v-f*.5,u.clearRect(0,0,f,f),u.textBaseline="ideographic",u.fillText(h,0,f);var A=Ym(u.getImageData(0,0,f,f));if(d.ideographic=f-A-1+v,c.upper&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.upper,0,0),d.upper=Ym(u.getImageData(0,0,f,f)),d.capHeight=d.baseline-d.upper),c.lower&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.lower,0,0),d.lower=Ym(u.getImageData(0,0,f,f)),d.xHeight=d.baseline-d.lower),c.tittle&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.tittle,0,0),d.tittle=Ym(u.getImageData(0,0,f,f))),c.ascent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.ascent,0,0),d.ascent=Ym(u.getImageData(0,0,f,f))),c.descent&&(u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.descent,0,0),d.descent=cOe(u.getImageData(0,0,f,f))),c.overshoot){u.clearRect(0,0,f,f),u.textBaseline="top",u.fillText(c.overshoot,0,0);var L=cOe(u.getImageData(0,0,f,f));d.overshoot=L-p}for(var _ in d)d[_]/=n;return d.em=n,hx.cache[r]=d,uOe(d,s)}function uOe(e,t){var r={};typeof t=="string"&&(t=e[t]);for(var n in e)n!=="em"&&(r[n]=e[n]-t);return r}function Ym(e){for(var t=e.height,r=e.data,n=3;n0;n-=4)if(r[n]!==0)return Math.floor((n-3)*.25/t)}});var gOe=ye((Imr,pOe)=>{"use strict";var fA=Eqe(),pBt=Zm(),gBt=GY(),mBt=Iqe(),yBt=EY(),KY=$_(),_Bt=Dqe(),dx=Qqe(),xBt=Q5(),bBt=tOe(),wBt=XY(),TBt=aOe(),ABt=lOe(),SBt=bh(),MBt=hOe(),EBt=W2(),kBt=WY(),dOe=kBt.nextPow2,vOe=new yBt,_F=!1;document.body&&(yF=document.body.appendChild(document.createElement("div")),yF.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(yF).fontStretch&&(_F=!0),document.body.removeChild(yF));var yF,Vu=function(t){CBt(t)?(t={regl:t},this.gl=t.regl._gl):this.gl=mBt(t),this.shader=vOe.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=t.regl||gBt({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),vOe.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(bBt(t)?t:{})};Vu.prototype.createShader=function(){var t=this.regl,r=t({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:t.prop("count"),offset:t.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:t.this("sizeBuffer")},width:{offset:0,stride:8,buffer:t.this("sizeBuffer")},char:t.this("charBuffer"),position:t.this("position")},uniforms:{atlasSize:function(i,a){return[a.atlas.width,a.atlas.height]},atlasDim:function(i,a){return[a.atlas.cols,a.atlas.rows]},atlas:function(i,a){return a.atlas.texture},charStep:function(i,a){return a.atlas.step},em:function(i,a){return a.atlas.em},color:t.prop("color"),opacity:t.prop("opacity"),viewport:t.this("viewportArray"),scale:t.this("scale"),align:t.prop("align"),baseline:t.prop("baseline"),translate:t.this("translate"),positionOffset:t.prop("positionOffset")},primitive:"points",viewport:t.this("viewport"),vert:` + precision highp float; + attribute float width, charOffset, char; + attribute vec2 position; + uniform float fontSize, charStep, em, align, baseline; + uniform vec4 viewport; + uniform vec4 color; + uniform vec2 atlasSize, atlasDim, scale, translate, positionOffset; + varying vec2 charCoord, charId; + varying float charWidth; + varying vec4 fontColor; + void main () { + vec2 offset = floor(em * (vec2(align + charOffset, baseline) + + vec2(positionOffset.x, -positionOffset.y))) + / (viewport.zw * scale.xy); + + vec2 position = (position + translate) * scale; + position += offset * scale; + + charCoord = position * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2. - 1., 0, 1); + + gl_PointSize = charStep; + + charId.x = mod(char, atlasDim.x); + charId.y = floor(char / atlasDim.x); + + charWidth = width * em; + + fontColor = color / 255.; + }`,frag:` + precision highp float; + uniform float fontSize, charStep, opacity; + uniform vec2 atlasSize; + uniform vec4 viewport; + uniform sampler2D atlas; + varying vec4 fontColor; + varying vec2 charCoord, charId; + varying float charWidth; + + float lightness(vec4 color) { + return color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + } + + void main () { + vec2 uv = gl_FragCoord.xy - charCoord + charStep * .5; + float halfCharStep = floor(charStep * .5 + .5); + + // invert y and shift by 1px (FF expecially needs that) + uv.y = charStep - uv.y; + + // ignore points outside of character bounding box + float halfCharWidth = ceil(charWidth * .5); + if (floor(uv.x) > halfCharStep + halfCharWidth || + floor(uv.x) < halfCharStep - halfCharWidth) return; + + uv += charId * charStep; + uv = uv / atlasSize; + + vec4 color = fontColor; + vec4 mask = texture2D(atlas, uv); + + float maskY = lightness(mask); + // float colorY = lightness(color); + color.a *= maskY; + color.a *= opacity; + + // color.a += .1; + + // antialiasing, see yiq color space y-channel formula + // color.rgb += (1. - color.rgb) * (1. - mask.rgb); + + gl_FragColor = color; + }`}),n={};return{regl:t,draw:r,atlas:n}};Vu.prototype.update=function(t){var r=this;if(typeof t=="string")t={text:t};else if(!t)return;t=pBt(t,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0),t.opacity!=null&&(Array.isArray(t.opacity)?this.opacity=t.opacity.map(function(ke){return parseFloat(ke)}):this.opacity=parseFloat(t.opacity)),t.viewport!=null&&(this.viewport=xBt(t.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),t.kerning!=null&&(this.kerning=t.kerning),t.offset!=null&&(typeof t.offset=="number"&&(t.offset=[t.offset,0]),this.positionOffset=EBt(t.offset)),t.direction&&(this.direction=t.direction),t.range&&(this.range=t.range,this.scale=[1/(t.range[2]-t.range[0]),1/(t.range[3]-t.range[1])],this.translate=[-t.range[0],-t.range[1]]),t.scale&&(this.scale=t.scale),t.translate&&(this.translate=t.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!t.font&&(t.font=Vu.baseFontSize+"px sans-serif");var n=!1,i=!1;if(t.font&&(Array.isArray(t.font)?t.font:[t.font]).forEach(function(ke,ge){if(typeof ke=="string")try{ke=fA.parse(ke)}catch(Ge){ke=fA.parse(Vu.baseFontSize+"px "+ke)}else{var ie=ke.style,Te=ke.weight,Ee=ke.stretch,Ae=ke.variant;ke=fA.parse(fA.stringify(ke)),ie&&(ke.style=ie),Te&&(ke.weight=Te),Ee&&(ke.stretch=Ee),Ae&&(ke.variant=Ae)}var ze=fA.stringify({size:Vu.baseFontSize,family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style}),Ce=wBt(ke.size),me=Math.round(Ce[0]*TBt(Ce[1]));if(me!==r.fontSize[ge]&&(i=!0,r.fontSize[ge]=me),(!r.font[ge]||ze!=r.font[ge].baseString)&&(n=!0,r.font[ge]=Vu.fonts[ze],!r.font[ge])){var Re=ke.family.join(", "),ce=[ke.style];ke.style!=ke.variant&&ce.push(ke.variant),ke.variant!=ke.weight&&ce.push(ke.weight),_F&&ke.weight!=ke.stretch&&ce.push(ke.stretch),r.font[ge]={baseString:ze,family:Re,weight:ke.weight,stretch:ke.stretch,style:ke.style,variant:ke.variant,width:{},kerning:{},metrics:MBt(Re,{origin:"top",fontSize:Vu.baseFontSize,fontStyle:ce.join(" ")})},Vu.fonts[ze]=r.font[ge]}}),(n||i)&&this.font.forEach(function(ke,ge){var ie=fA.stringify({size:r.fontSize[ge],family:ke.family,stretch:_F?ke.stretch:void 0,variant:ke.variant,weight:ke.weight,style:ke.style});if(r.fontAtlas[ge]=r.shader.atlas[ie],!r.fontAtlas[ge]){var Te=ke.metrics;r.shader.atlas[ie]=r.fontAtlas[ge]={fontString:ie,step:Math.ceil(r.fontSize[ge]*Te.bottom*.5)*2,em:r.fontSize[ge],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:r.regl.texture()}}t.text==null&&(t.text=r.text)}),typeof t.text=="string"&&t.position&&t.position.length>2){for(var a=Array(t.position.length*.5),o=0;o2){for(var u=!t.position[0].length,c=dx.mallocFloat(this.count*2),f=0,h=0;f1?r.align[ge]:r.align[0]:r.align;if(typeof ie=="number")return ie;switch(ie){case"right":case"end":return-ke;case"center":case"centre":case"middle":return-ke*.5}return 0})),this.baseline==null&&t.baseline==null&&(t.baseline=0),t.baseline!=null&&(this.baseline=t.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(ke,ge){var ie=(r.font[ge]||r.font[0]).metrics,Te=0;return Te+=ie.bottom*.5,typeof ke=="number"?Te+=ke-ie.baseline:Te+=-ie[ke],Te*=-1,Te})),t.color!=null)if(t.color||(t.color="transparent"),typeof t.color=="string"||!isNaN(t.color))this.color=KY(t.color,"uint8");else{var H;if(typeof t.color[0]=="number"&&t.color.length>this.counts.length){var X=t.color.length;H=dx.mallocUint8(X);for(var G=(t.color.subarray||t.color.slice).bind(t.color),N=0;N4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2;if(ae){var _e=Math.max(this.position.length*.5||0,this.color.length*.25||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,this.positionOffset.length*.5||0);this.batch=Array(_e);for(var Me=0;Me1?this.counts[Me]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[Me]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(Me*4,Me*4+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[Me]:this.opacity,baseline:this.baselineOffset[Me]!=null?this.baselineOffset[Me]:this.baselineOffset[0],align:this.align?this.alignOffset[Me]!=null?this.alignOffset[Me]:this.alignOffset[0]:0,atlas:this.fontAtlas[Me]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(Me*2,Me*2+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]}};Vu.prototype.destroy=function(){};Vu.prototype.kerning=!0;Vu.prototype.position={constant:new Float32Array(2)};Vu.prototype.translate=null;Vu.prototype.scale=null;Vu.prototype.font=null;Vu.prototype.text="";Vu.prototype.positionOffset=[0,0];Vu.prototype.opacity=1;Vu.prototype.color=new Uint8Array([0,0,0,255]);Vu.prototype.alignOffset=[0,0];Vu.maxAtlasSize=1024;Vu.atlasCanvas=document.createElement("canvas");Vu.atlasContext=Vu.atlasCanvas.getContext("2d",{alpha:!1});Vu.baseFontSize=64;Vu.fonts={};function CBt(e){return typeof e=="function"&&e._gl&&e.prop&&e.texture&&e.buffer}pOe.exports=Vu});var xF=ye((Rmr,mOe)=>{"use strict";var LBt=pZ(),PBt=GY();mOe.exports=function(t,r,n){var i=t._fullLayout,a=!0;return i._glcanvas.each(function(o){if(o.regl){o.regl.preloadCachedCode(n);return}if(!(o.pick&&!i._has("parcoords"))){try{o.regl=PBt({canvas:this,attributes:{antialias:!o.pick,preserveDrawingBuffer:!0},pixelRatio:t._context.plotGlPixelRatio||window.devicePixelRatio,extensions:r||[],cachedCode:n||{}})}catch(s){a=!1}o.regl||(a=!1),a&&this.addEventListener("webglcontextlost",function(s){t&&t.emit&&t.emit("plotly_webglcontextlost",{event:s,layer:o.key})},!1)}}),a||LBt({container:i._glcontainer.node()}),a}});var QY=ye(($Y,wOe)=>{"use strict";var yOe=QX(),_Oe=LY(),IBt=lqe(),xOe=gOe(),JY=Mr(),RBt=Sg().selectMode,DBt=xF(),zBt=lu(),FBt=hU(),qBt=YX().styleTextSelection,bOe={};function OBt(e,t,r,n){var i=e._size,a=e.width*n,o=e.height*n,s=i.l*n,l=i.b*n,u=i.r*n,c=i.t*n,f=i.w*n,h=i.h*n;return[s+t.domain[0]*f,l+r.domain[0]*h,a-u-(1-t.domain[1])*f,o-c-(1-r.domain[1])*h]}var $Y=wOe.exports=function(t,r,n){if(n.length){var i=t._fullLayout,a=r._scene,o=r.xaxis,s=r.yaxis,l,u;if(a){var c=DBt(t,["ANGLE_instanced_arrays","OES_element_index_uint"],bOe);if(!c){a.init();return}var f=a.count,h=i._glcanvas.data()[0].regl;if(FBt(t,r,n),a.dirty){if((a.line2d||a.error2d)&&!(a.scatter2d||a.fill2d||a.glText)&&h.clear({}),a.error2d===!0&&(a.error2d=IBt(h)),a.line2d===!0&&(a.line2d=_Oe(h)),a.scatter2d===!0&&(a.scatter2d=yOe(h)),a.fill2d===!0&&(a.fill2d=_Oe(h)),a.glText===!0)for(a.glText=new Array(f),l=0;la.glText.length){var d=f-a.glText.length;for(l=0;lae&&(isNaN(re[_e])||isNaN(re[_e+1]));)_e-=2;W.positions=re.slice(ae,_e+2)}return W}),a.line2d.update(a.lineOptions)),a.error2d){var b=(a.errorXOptions||[]).concat(a.errorYOptions||[]);a.error2d.update(b)}a.scatter2d&&a.scatter2d.update(a.markerOptions),a.fillOrder=JY.repeat(null,f),a.fill2d&&(a.fillOptions=a.fillOptions.map(function(W,re){var ae=n[re];if(!(!W||!ae||!ae[0]||!ae[0].trace)){var _e=ae[0],Me=_e.trace,ke=_e.t,ge=a.lineOptions[re],ie,Te,Ee=[];Me._ownfill&&Ee.push(re),Me._nexttrace&&Ee.push(re+1),Ee.length&&(a.fillOrder[re]=Ee);var Ae=[],ze=ge&&ge.positions||ke.positions,Ce,me;if(Me.fill==="tozeroy"){for(Ce=0;CeCe&&isNaN(ze[me+1]);)me-=2;ze[Ce+1]!==0&&(Ae=[ze[Ce],0]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me+1]!==0&&(Ae=Ae.concat([ze[me],0]))}else if(Me.fill==="tozerox"){for(Ce=0;CeCe&&isNaN(ze[me]);)me-=2;ze[Ce]!==0&&(Ae=[0,ze[Ce+1]]),Ae=Ae.concat(ze.slice(Ce,me+2)),ze[me]!==0&&(Ae=Ae.concat([0,ze[me+1]]))}else if(Me.fill==="toself"||Me.fill==="tonext"){for(Ae=[],ie=0,W.splitNull=!0,Te=0;Te-1;for(l=0;l{"use strict";var TOe=Hze();TOe.plot=QY();AOe.exports=TOe});var EOe=ye((zmr,MOe)=>{"use strict";MOe.exports=SOe()});var eK=ye((Fmr,POe)=>{"use strict";var BBt=Uc(),LOe=Jl(),kOe=Oc().axisHoverFormat,NBt=Wo().hovertemplateAttrs,bk=tk(),UBt=ad().idRegex,VBt=Vs().templatedArray,hA=no().extendFlat,o1=BBt.marker,HBt=o1.line,GBt=hA(LOe("marker.line",{editTypeOverride:"calc"}),{width:hA({},HBt.width,{editType:"calc"}),editType:"calc"}),bF=hA(LOe("marker"),{symbol:o1.symbol,angle:o1.angle,size:hA({},o1.size,{editType:"markerSize"}),sizeref:o1.sizeref,sizemin:o1.sizemin,sizemode:o1.sizemode,opacity:o1.opacity,colorbar:o1.colorbar,line:GBt,editType:"calc"});bF.color.editType=bF.cmin.editType=bF.cmax.editType="style";function COe(e){return{valType:"info_array",freeLength:!0,editType:"calc",items:{valType:"subplotid",regex:UBt[e],editType:"plot"}}}POe.exports={dimensions:VBt("dimension",{visible:{valType:"boolean",dflt:!0,editType:"calc"},label:{valType:"string",editType:"calc"},values:{valType:"data_array",editType:"calc+clearAxisTypes"},axis:{type:{valType:"enumerated",values:["linear","log","date","category"],editType:"calc+clearAxisTypes"},matches:{valType:"boolean",dflt:!1,editType:"calc"},editType:"calc+clearAxisTypes"},editType:"calc+clearAxisTypes"}),text:hA({},bk.text,{}),hovertext:hA({},bk.hovertext,{}),hovertemplate:NBt(),xhoverformat:kOe("x"),yhoverformat:kOe("y"),marker:bF,xaxes:COe("x"),yaxes:COe("y"),diagonal:{visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"},showupperhalf:{valType:"boolean",dflt:!0,editType:"calc"},showlowerhalf:{valType:"boolean",dflt:!0,editType:"calc"},selected:{marker:bk.selected.marker,editType:"calc"},unselected:{marker:bk.unselected.marker,editType:"calc"},opacity:bk.opacity}});var wF=ye((qmr,IOe)=>{"use strict";IOe.exports=function(e,t,r,n){n||(n=1/0);var i,a;for(i=0;i{"use strict";var tK=Mr(),jBt=Zd(),ROe=eK(),WBt=lu(),ZBt=$p(),XBt=wF(),YBt=Fz().isOpenSymbol;DOe.exports=function(t,r,n,i){function a(d,v){return tK.coerce(t,r,ROe,d,v)}var o=jBt(t,r,{name:"dimensions",handleItemDefaults:KBt}),s=a("diagonal.visible"),l=a("showupperhalf"),u=a("showlowerhalf"),c=XBt(r,o,"values");if(!c||!s&&!l&&!u){r.visible=!1;return}a("text"),a("hovertext"),a("hovertemplate"),a("xhoverformat"),a("yhoverformat"),ZBt(t,r,n,i,a,{noAngleRef:!0,noStandOff:!0});var f=YBt(r.marker.symbol),h=WBt.isBubble(r);a("marker.line.width",f||h?1:0),JBt(t,r,i,a),tK.coerceSelectionMarkerOpacity(r,a)};function KBt(e,t){function r(i,a){return tK.coerce(e,t,ROe.dimensions,i,a)}r("label");var n=r("values");n&&n.length?r("visible"):t.visible=!1,r("axis.type"),r("axis.matches")}function JBt(e,t,r,n){var i=t.dimensions,a=i.length,o=t.showupperhalf,s=t.showlowerhalf,l=t.diagonal.visible,u,c,f=new Array(a),h=new Array(a);for(u=0;uc&&o||u{"use strict";var FOe=Mr();qOe.exports=function(t,r){var n=t._fullLayout,i=r.uid,a=n._splomScenes;a||(a=n._splomScenes={});var o={dirty:!0,selectBatch:[],unselectBatch:[]},s={matrix:!1,selectBatch:[],unselectBatch:[]},l=a[r.uid];return l||(l=a[i]=FOe.extendFlat({},o,s),l.draw=function(){l.matrix&&l.matrix.draw&&(l.selectBatch.length||l.unselectBatch.length?l.matrix.draw(l.unselectBatch,l.selectBatch):l.matrix.draw()),l.dirty=!1},l.destroy=function(){l.matrix&&l.matrix.destroy&&l.matrix.destroy(),l.matrixOptions=null,l.selectBatch=null,l.unselectBatch=null,l=null}),l.dirty||FOe.extendFlat(l,o),l}});var UOe=ye((Nmr,NOe)=>{"use strict";var rK=Mr(),TF=af(),$Bt=q0().calcMarkerSize,QBt=q0().calcAxisExpansion,eNt=z0(),BOe=Y2().markerSelection,tNt=Y2().markerStyle,rNt=OOe(),iNt=es().BADNUM,nNt=sx().TOO_MANY_POINTS;NOe.exports=function(t,r){var n=r.dimensions,i=r._length,a={},o=a.cdata=[],s=a.data=[],l=r._visibleDims=[],u,c,f,h,d;function v(k,A){for(var L=k.makeCalcdata({v:A.values,vcalendar:r.calendar},"v"),_=0;_nNt,p;for(b?p=a.sizeAvg||Math.max(a.size,3):p=$Bt(r,i),c=0;c{(function(){var e,t,r,n,i,a;typeof performance!="undefined"&&performance!==null&&performance.now?wk.exports=function(){return performance.now()}:typeof process!="undefined"&&process!==null&&process.hrtime?(wk.exports=function(){return(e()-i)/1e6},t=process.hrtime,e=function(){var o;return o=t(),o[0]*1e9+o[1]},n=e(),a=process.uptime()*1e9,i=n-a):Date.now?(wk.exports=function(){return Date.now()-r},r=Date.now()):(wk.exports=function(){return new Date().getTime()-r},r=new Date().getTime())}).call(VOe)});var jOe=ye((Umr,MF)=>{var aNt=HOe(),s1=window,AF=["moz","webkit"],vA="AnimationFrame",pA=s1["request"+vA],Tk=s1["cancel"+vA]||s1["cancelRequest"+vA];for(dA=0;!pA&&dA{WOe.exports=function(t,r){var n=typeof t=="number",i=typeof r=="number";n&&!i?(r=t,t=0):!n&&!i&&(t=0,r=0),t=t|0,r=r|0;var a=r-t;if(a<0)throw new Error("array length must be positive");for(var o=new Array(a),s=0,l=t;s{"use strict";var oNt=QX(),sNt=Zm(),lNt=j2(),XOe=jOe(),uNt=ZOe(),nK=Q5(),cNt=W2();KOe.exports=px;function px(e,t){if(!(this instanceof px))return new px(e,t);this.traces=[],this.passes={},this.regl=e,this.scatter=oNt(e),this.canvas=this.scatter.canvas}px.prototype.render=function(...e){return e.length&&this.update(...e),this.regl.attributes.preserveDrawingBuffer?this.draw():(this.dirty?this.planned==null&&(this.planned=XOe(()=>{this.draw(),this.dirty=!0,this.planned=null})):(this.draw(),this.dirty=!0,XOe(()=>{this.dirty=!1})),this)};px.prototype.update=function(...e){if(!e.length)return;for(let n=0;nb||!i.lower&&x{t[a+s]=n})}this.scatter.draw(...t)}return this};px.prototype.destroy=function(){return this.traces.forEach(e=>{e.buffer&&e.buffer.destroy&&e.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this};function fNt(e,t,r){let n=e.id!=null?e.id:e,i=t,a=r;return n<<16|(i&255)<<8|a&255}function EF(e,t,r){let n,i,a,o,s,l,u,c,f=e[t],h=e[r];return f.length>2?(n=f[0],a=f[2],i=f[1],o=f[3]):f.length?(n=i=f[0],a=o=f[1]):(n=f.x,i=f.y,a=f.x+f.width,o=f.y+f.height),h.length>2?(s=h[0],u=h[2],l=h[1],c=h[3]):h.length?(s=l=h[0],u=c=h[1]):(s=h.x,l=h.y,u=h.x+h.width,c=h.y+h.height),[s,i,u,o]}function YOe(e){if(typeof e=="number")return[e,e,e,e];if(e.length===2)return[e[0],e[1],e[0],e[1]];{let t=nK(e);return[t.x,t.y,t.x+t.width,t.y+t.height]}}});var QOe=ye((Gmr,$Oe)=>{"use strict";var hNt=JOe(),aK=Mr(),kF=af(),dNt=Sg().selectMode;$Oe.exports=function(t,r,n){if(n.length)for(var i=0;i-1,T=dNt(c)||!!i.selectedpoints||P,F=!0;if(T){var q=i._length;if(i.selectedpoints){o.selectBatch=i.selectedpoints;var V=i.selectedpoints,H={};for(d=0;d{"use strict";eBe.getDimIndex=function(t,r){for(var n=r._id,i=n.charAt(0),a={x:0,y:1}[i],o=t._visibleDims,s=0;s{"use strict";var tBe=oK(),pNt=zz().calcHover,rBe=Qa().getFromId,gNt=no().extendFlat;function mNt(e,t,r,n,i){i||(i={});var a=(n||"").charAt(0)==="x",o=(n||"").charAt(0)==="y",s=iBe(e,t,r);if((a||o)&&i.hoversubplots==="axis"&&s[0])for(var l=(a?e.xa:e.ya)._subplotsWith,u=i.gd,c=gNt({},e),f=0;f{"use strict";var uBe=Mr(),oBe=uBe.pushUnique,sBe=lu(),lBe=oK();cBe.exports=function(t,r){var n=t.cd,i=n[0].trace,a=n[0].t,o=t.scene,s=o.matrixOptions.cdata,l=t.xaxis,u=t.yaxis,c=[];if(!o)return c;var f=!sBe.hasMarkers(i)&&!sBe.hasText(i);if(i.visible!==!0||f)return c;var h=lBe.getDimIndex(i,l),d=lBe.getDimIndex(i,u);if(h===!1||d===!1)return c;var v=a.xpx[h],x=a.ypx[d],b=s[h],p=s[d],E=(t.scene.selectBatch||[]).slice(),k=[];if(r!==!1&&!r.degenerate)for(var A=0;A{"use strict";var hBe=Mr(),yNt=z0(),_Nt=Y2().markerStyle;dBe.exports=function(t,r){var n=r.trace,i=t._fullLayout._splomScenes[n.uid];if(i){yNt(t,n),hBe.extendFlat(i.matrixOptions,_Nt(t,n));var a=hBe.extendFlat({},i.matrixOptions,i.viewOpts);i.matrix.update(a,null)}}});var gBe=ye((Ymr,pBe)=>{"use strict";var xNt=ba(),bNt=nV();pBe.exports={moduleType:"trace",name:"splom",categories:["gl","regl","cartesian","symbols","showLegend","scatter-like"],attributes:eK(),supplyDefaults:zOe(),colorbar:Kd(),calc:UOe(),plot:QOe(),hoverPoints:aBe().hoverPoints,selectPoints:fBe(),editStyle:vBe(),meta:{}};xNt.register(bNt)});var wBe=ye((Kmr,bBe)=>{"use strict";var wNt=LY(),TNt=ba(),ANt=xF(),SNt=kd().getModuleCalcData,gx=Jf(),mBe=af().getFromId,yBe=Qa().shouldShowZeroLine,_Be="splom",xBe={};function MNt(e){var t=e._fullLayout,r=TNt.getModule(_Be),n=SNt(e.calcdata,r)[0],i=ANt(e,["ANGLE_instanced_arrays","OES_element_index_uint"],xBe);i&&(t._hasOnlyLargeSploms&&sK(e),r.plot(e,{},n))}function ENt(e){var t=e.calcdata,r=e._fullLayout;r._hasOnlyLargeSploms&&sK(e);for(var n=0;n{"use strict";var TBe=gBe();TBe.basePlotModule=wBe(),ABe.exports=TBe});var EBe=ye(($mr,MBe)=>{"use strict";MBe.exports=SBe()});var cK=ye((Qmr,kBe)=>{"use strict";var PNt=Jl(),lK=Cd(),uK=Su(),INt=Ju().attributes,CF=no().extendFlat,RNt=Vs().templatedArray;kBe.exports={domain:INt({name:"parcoords",trace:!0,editType:"plot"}),labelangle:{valType:"angle",dflt:0,editType:"plot"},labelside:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},labelfont:uK({editType:"plot"}),tickfont:uK({autoShadowDflt:!0,editType:"plot"}),rangefont:uK({editType:"plot"}),dimensions:RNt("dimension",{label:{valType:"string",editType:"plot"},tickvals:CF({},lK.tickvals,{editType:"plot"}),ticktext:CF({},lK.ticktext,{editType:"plot"}),tickformat:CF({},lK.tickformat,{editType:"plot"}),visible:{valType:"boolean",dflt:!0,editType:"plot"},range:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},constraintrange:{valType:"info_array",freeLength:!0,dimensions:"1-2",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},multiselect:{valType:"boolean",dflt:!0,editType:"plot"},values:{valType:"data_array",editType:"calc"},editType:"calc"}),line:CF({editType:"calc"},PNt("line",{colorscaleDflt:"Viridis",autoColorDflt:!1,editTypeOverride:"calc"})),unselected:{line:{color:{valType:"color",dflt:"#7f7f7f",editType:"plot"},opacity:{valType:"number",min:0,max:1,dflt:"auto",editType:"plot"},editType:"plot"},editType:"plot"}}});var Ak=ye((eyr,CBe)=>{"use strict";CBe.exports={maxDimensionCount:60,overdrag:45,verticalPadding:2,tickDistance:50,canvasPixelRatio:1,blockLineCount:5e3,layers:["contextLineLayer","focusLineLayer","pickLineLayer"],axisTitleOffset:28,axisExtentOffset:10,bar:{width:4,captureWidth:10,fillColor:"magenta",fillOpacity:1,snapDuration:150,snapRatio:.25,snapClose:.01,strokeOpacity:1,strokeWidth:1,handleHeight:8,handleOpacity:1,handleOverlap:0},cn:{axisExtentText:"axis-extent-text",parcoordsLineLayers:"parcoords-line-layers",parcoordsLineLayer:"parcoords-lines",parcoords:"parcoords",parcoordsControlView:"parcoords-control-view",yAxis:"y-axis",axisOverlays:"axis-overlays",axis:"axis",axisHeading:"axis-heading",axisTitle:"axis-title",axisExtent:"axis-extent",axisExtentTop:"axis-extent-top",axisExtentTopText:"axis-extent-top-text",axisExtentBottom:"axis-extent-bottom",axisExtentBottomText:"axis-extent-bottom-text",axisBrush:"axis-brush"},id:{filterBarPattern:"filter-bar-pattern"}}});var Km=ye((tyr,PBe)=>{"use strict";var DNt=OS();function LBe(e){return[e]}PBe.exports={keyFun:function(e){return e.key},repeat:LBe,descend:DNt,wrap:LBe,unwrap:function(e){return e[0]}}});var dK=ye((ryr,VBe)=>{"use strict";var th=Ak(),em=xa(),zNt=Km().keyFun,LF=Km().repeat,gA=Mr().sorterAsc,FNt=Mr().strTranslate,IBe=th.bar.snapRatio;function RBe(e,t){return e*(1-IBe)+t*IBe}var DBe=th.bar.snapClose;function qNt(e,t){return e*(1-DBe)+t*DBe}function IF(e,t,r,n){if(ONt(r,n))return r;var i=e?-1:1,a=0,o=t.length-1;if(i<0){var s=a;a=o,o=s}for(var l=t[a],u=l,c=a;i*c=t[r][0]&&e<=t[r][1])return!0;return!1}function BNt(e){e.attr("x",-th.bar.captureWidth/2).attr("width",th.bar.captureWidth)}function NNt(e){e.attr("visibility","visible").style("visibility","visible").attr("fill","yellow").attr("opacity",0)}function UNt(e){if(!e.brush.filterSpecified)return"0,"+e.height;for(var t=zBe(e.brush.filter.getConsolidated(),e.height),r=[0],n,i,a,o=t.length?t[0][0]:null,s=0;se[1]+r||t=.9*e[1]+.1*e[0]?"n":t<=.9*e[0]+.1*e[1]?"s":"ns"}function FBe(){em.select(document.body).style("cursor",null)}function hK(e){e.attr("stroke-dasharray",UNt)}function PF(e,t){var r=em.select(e).selectAll(".highlight, .highlight-shadow"),n=t?r.transition().duration(th.bar.snapDuration).each("end",t):r;hK(n)}function qBe(e,t){var r=e.brush,n=r.filterSpecified,i=NaN,a={},o;if(n){var s=e.height,l=r.filter.getConsolidated(),u=zBe(l,s),c=NaN,f=NaN,h=NaN;for(o=0;o<=u.length;o++){var d=u[o];if(d&&d[0]<=t&&t<=d[1]){c=o;break}else if(f=o?o-1:NaN,d&&d[0]>t){h=o;break}}if(i=c,isNaN(i)&&(isNaN(f)||isNaN(h)?i=isNaN(f)?h:f:i=t-u[f][1]=E[0]&&p<=E[1]){a.clickableOrdinalRange=E;break}}}return a}function HNt(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.unitToPaddedPx.invert(r),i=t.brush,a=qBe(t,r),o=a.interval,s=i.svgBrush;if(s.wasDragged=!1,s.grabbingBar=a.region==="ns",s.grabbingBar){var l=o.map(t.unitToPaddedPx);s.grabPoint=r-l[0]-th.verticalPadding,s.barLength=l[1]-l[0]}s.clickableOrdinalRange=a.clickableOrdinalRange,s.stayingIntervals=t.multiselect&&i.filterSpecified?i.filter.getConsolidated():[],o&&(s.stayingIntervals=s.stayingIntervals.filter(function(u){return u[0]!==o[0]&&u[1]!==o[1]})),s.startExtent=a.region?o[a.region==="s"?1:0]:n,t.parent.inBrushDrag=!0,s.brushStartCallback()}function OBe(e,t){em.event.sourceEvent.stopPropagation();var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=t.brush.svgBrush;n.wasDragged=!0,n._dragging=!0,n.grabbingBar?n.newExtent=[r-n.grabPoint,r+n.barLength-n.grabPoint].map(t.unitToPaddedPx.invert):n.newExtent=[n.startExtent,t.unitToPaddedPx.invert(r)].sort(gA),t.brush.filterSpecified=!0,n.extent=n.stayingIntervals.concat([n.newExtent]),n.brushCallback(t),PF(e.parentNode)}function GNt(e,t){var r=t.brush,n=r.filter,i=r.svgBrush;i._dragging||(BBe(e,t),OBe(e,t),t.brush.svgBrush.wasDragged=!1),i._dragging=!1;var a=em.event;a.sourceEvent.stopPropagation();var o=i.grabbingBar;if(i.grabbingBar=!1,i.grabLocation=void 0,t.parent.inBrushDrag=!1,FBe(),!i.wasDragged){i.wasDragged=void 0,i.clickableOrdinalRange?r.filterSpecified&&t.multiselect?i.extent.push(i.clickableOrdinalRange):(i.extent=[i.clickableOrdinalRange],r.filterSpecified=!0):o?(i.extent=i.stayingIntervals,i.extent.length===0&&fK(r)):fK(r),i.brushCallback(t),PF(e.parentNode),i.brushEndCallback(r.filterSpecified?n.getConsolidated():[]);return}var s=function(){n.set(n.getConsolidated())};if(t.ordinal){var l=t.unitTickvals;l[l.length-1]i.newExtent[0];i.extent=i.stayingIntervals.concat(u?[i.newExtent]:[]),i.extent.length||fK(r),i.brushCallback(t),u?PF(e.parentNode,s):(s(),PF(e.parentNode))}else s();i.brushEndCallback(r.filterSpecified?n.getConsolidated():[])}function BBe(e,t){var r=t.height-em.mouse(e)[1]-2*th.verticalPadding,n=qBe(t,r),i="crosshair";n.clickableOrdinalRange?i="pointer":n.region&&(i=n.region+"-resize"),em.select(document.body).style("cursor",i)}function jNt(e){e.on("mousemove",function(t){em.event.preventDefault(),t.parent.inBrushDrag||BBe(this,t)}).on("mouseleave",function(t){t.parent.inBrushDrag||FBe()}).call(em.behavior.drag().on("dragstart",function(t){HNt(this,t)}).on("drag",function(t){OBe(this,t)}).on("dragend",function(t){GNt(this,t)}))}function NBe(e,t){return e[0]-t[0]}function WNt(e,t,r){var n=r._context.staticPlot,i=e.selectAll(".background").data(LF);i.enter().append("rect").classed("background",!0).call(BNt).call(NNt).style("pointer-events",n?"none":"auto").attr("transform",FNt(0,th.verticalPadding)),i.call(jNt).attr("height",function(s){return s.height-th.verticalPadding});var a=e.selectAll(".highlight-shadow").data(LF);a.enter().append("line").classed("highlight-shadow",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width+th.bar.strokeWidth).attr("stroke",t).attr("opacity",th.bar.strokeOpacity).attr("stroke-linecap","butt"),a.attr("y1",function(s){return s.height}).call(hK);var o=e.selectAll(".highlight").data(LF);o.enter().append("line").classed("highlight",!0).attr("x",-th.bar.width/2).attr("stroke-width",th.bar.width-th.bar.strokeWidth).attr("stroke",th.bar.fillColor).attr("opacity",th.bar.fillOpacity).attr("stroke-linecap","butt"),o.attr("y1",function(s){return s.height}).call(hK)}function ZNt(e,t,r){var n=e.selectAll("."+th.cn.axisBrush).data(LF,zNt);n.enter().append("g").classed(th.cn.axisBrush,!0),WNt(n,t,r)}function XNt(e){return e.svgBrush.extent.map(function(t){return t.slice()})}function fK(e){e.filterSpecified=!1,e.svgBrush.extent=[[-1/0,1/0]]}function YNt(e){return function(r){var n=r.brush,i=XNt(n),a=i.slice();n.filter.set(a),e()}}function UBe(e){for(var t=e.slice(),r=[],n,i=t.shift();i;){for(n=i.slice();(i=t.shift())&&i[0]<=n[1];)n[1]=Math.max(n[1],i[1]);r.push(n)}return r.length===1&&r[0][0]>r[0][1]&&(r=[]),r}function KNt(){var e=[],t,r;return{set:function(n){e=n.map(function(i){return i.slice().sort(gA)}).sort(NBe),e.length===1&&e[0][0]===-1/0&&e[0][1]===1/0&&(e=[[0,-1]]),t=UBe(e),r=e.reduce(function(i,a){return[Math.min(i[0],a[0]),Math.max(i[1],a[1])]},[1/0,-1/0])},get:function(){return e.slice()},getConsolidated:function(){return t},getBounds:function(){return r}}}function JNt(e,t,r,n,i,a){var o=KNt();return o.set(r),{filter:o,filterSpecified:t,svgBrush:{extent:[],brushStartCallback:n,brushCallback:YNt(i),brushEndCallback:a}}}function $Nt(e,t){if(Array.isArray(e[0])?(e=e.map(function(n){return n.sort(gA)}),t.multiselect?e=UBe(e.sort(NBe)):e=[e[0]]):e=[e.sort(gA)],t.tickvals){var r=t.tickvals.slice().sort(gA);if(e=e.map(function(n){var i=[IF(0,r,n[0],[]),IF(1,r,n[1],[])];if(i[1]>i[0])return i}).filter(function(n){return n}),!e.length)return}return e.length>1?e:e[0]}VBe.exports={makeBrush:JNt,ensureAxisBrush:ZNt,cleanRanges:$Nt}});var jBe=ye((iyr,GBe)=>{"use strict";var mx=Mr(),QNt=Dv().hasColorscale,eUt=Uh(),tUt=Ju().defaults,rUt=Zd(),iUt=Qa(),HBe=cK(),nUt=dK(),vK=Ak().maxDimensionCount,aUt=wF();function oUt(e,t,r,n,i){var a=i("line.color",r);if(QNt(e,"line")&&mx.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),eUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function sUt(e,t,r,n){function i(u,c){return mx.coerce(e,t,HBe.dimensions,u,c)}var a=i("values"),o=i("visible");if(a&&a.length||(o=t.visible=!1),o){i("label"),i("tickvals"),i("ticktext"),i("tickformat");var s=i("range");t._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:s},iUt.setConvert(t._ax,n.layout),i("multiselect");var l=i("constraintrange");l&&(t.constraintrange=nUt.cleanRanges(l,t))}}GBe.exports=function(t,r,n,i){function a(c,f){return mx.coerce(t,r,HBe,c,f)}var o=t.dimensions;Array.isArray(o)&&o.length>vK&&(mx.log("parcoords traces support up to "+vK+" dimensions at the moment"),o.splice(vK));var s=rUt(t,r,{name:"dimensions",layout:i,handleItemDefaults:sUt}),l=oUt(t,r,n,i,a);tUt(r,i,a),(!Array.isArray(s)||!s.length)&&(r.visible=!1),aUt(r,s,"values",l);var u=mx.extendFlat({},i.font,{size:Math.round(i.font.size/1.2)});mx.coerceFont(a,"labelfont",u),mx.coerceFont(a,"tickfont",u,{autoShadowDflt:!0}),mx.coerceFont(a,"rangefont",u),a("labelangle"),a("labelside"),a("unselected.line.color"),a("unselected.line.opacity")}});var ZBe=ye((nyr,WBe)=>{"use strict";var lUt=Mr().isArrayOrTypedArray,pK=Mu(),uUt=Km().wrap;WBe.exports=function(t,r){var n,i;return pK.hasColorscale(r,"line")&&lUt(r.line.color)?(n=r.line.color,i=pK.extractOpts(r.line).colorscale,pK.calc(t,r,{vals:n,containerStr:"line",cLetter:"c"})):(n=cUt(r._length),i=[[0,r.line.color],[1,r.line.color]]),uUt({lineColor:n,cscale:i})};function cUt(e){for(var t=new Array(e),r=0;r>>16,(e&65280)>>>8,e&255],alpha:1};if(typeof e=="number")return{space:"rgb",values:[e>>>16,(e&65280)>>>8,e&255],alpha:1};if(e=String(e).toLowerCase(),gK.default[e])r=gK.default[e].slice(),i="rgb";else if(e==="transparent")n=0,i="rgb",r=[0,0,0];else if(e[0]==="#"){var a=e.slice(1),o=a.length,s=o<=4;n=1,s?(r=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],o===4&&(n=parseInt(a[3]+a[3],16)/255)):(r=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],o===8&&(n=parseInt(a[6]+a[7],16)/255)),r[0]||(r[0]=0),r[1]||(r[1]=0),r[2]||(r[2]=0),i="rgb"}else if(t=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(e)){var l=t[1];i=l.replace(/a$/,"");var u=i==="cmyk"?4:i==="gray"?1:3;r=t[2].trim().split(/\s*[,\/]\s*|\s+/),i==="color"&&(i=r.shift()),r=r.map(function(h,d){if(h[h.length-1]==="%")return h=parseFloat(h)/100,d===3?h:i==="rgb"?h*255:i[0]==="h"||i[0]==="l"&&!d?h*100:i==="lab"?h*125:i==="lch"?d<2?h*150:h*360:i[0]==="o"&&!d?h:i==="oklab"?h*.4:i==="oklch"?d<2?h*.4:h*360:h;if(i[d]==="h"||d===2&&i[i.length-1]==="h"){if(XBe[h]!==void 0)return XBe[h];if(h.endsWith("deg"))return parseFloat(h);if(h.endsWith("turn"))return parseFloat(h)*360;if(h.endsWith("grad"))return parseFloat(h)*360/400;if(h.endsWith("rad"))return parseFloat(h)*180/Math.PI}return h==="none"?0:parseFloat(h)}),n=r.length>u?r.pop():1}else/[0-9](?:\s|\/|,)/.test(e)&&(r=e.match(/([0-9]+)/g).map(function(h){return parseFloat(h)}),i=((f=(c=e.match(/([a-z])/ig))==null?void 0:c.join(""))==null?void 0:f.toLowerCase())||"rgb");return{space:i,values:r,alpha:n}}var gK,YBe,XBe,KBe=Ll(()=>{gK=YQe(rZ(),1),YBe=fUt,XBe={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}});var Sk,mK=Ll(()=>{Sk={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}});var RF,JBe=Ll(()=>{mK();RF={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(e){var t=e[0]/360,r=e[1]/100,n=e[2]/100,i,a,o,s,l,u=0;if(r===0)return l=n*255,[l,l,l];for(a=n<.5?n*(1+r):n+r-n*r,i=2*n-a,s=[0,0,0];u<3;)o=t+1/3*-(u-1),o<0?o++:o>1&&o--,l=6*o<1?i+(a-i)*6*o:2*o<1?a:3*o<2?i+(a-i)*(2/3-o)*6:i,s[u++]=l*255;return s}};Sk.hsl=function(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=a-i,s,l,u;return a===i?s=0:t===a?s=(r-n)/o:r===a?s=2+(n-t)/o:n===a&&(s=4+(t-r)/o),s=Math.min(s*60,360),s<0&&(s+=360),u=(i+a)/2,a===i?l=0:u<=.5?l=o/(a+i):l=o/(2-a-i),[s,l*100,u*100]}});var QBe={};QQ(QBe,{default:()=>$Be});function $Be(e){Array.isArray(e)&&e.raw&&(e=String.raw(...arguments)),e instanceof Number&&(e=+e);var t,r,n,i=YBe(e);if(!i.space)return[];let a=i.space[0]==="h"?RF.min:Sk.min,o=i.space[0]==="h"?RF.max:Sk.max;return t=Array(3),t[0]=Math.min(Math.max(i.values[0],a[0]),o[0]),t[1]=Math.min(Math.max(i.values[1],a[1]),o[1]),t[2]=Math.min(Math.max(i.values[2],a[2]),o[2]),i.space[0]==="h"&&(t=RF.rgb(t)),t.push(Math.min(Math.max(i.alpha,0),1)),t}var eNe=Ll(()=>{KBe();mK();JBe()});var yK=ye(DF=>{"use strict";var hUt=Mr().isTypedArray;DF.convertTypedArray=function(e){return hUt(e)?Array.prototype.slice.call(e):e};DF.isOrdinal=function(e){return!!e.tickvals};DF.isVisible=function(e){return e.visible||!("visible"in e)}});var cNe=ye((dyr,uNe)=>{"use strict";var dUt=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join(` +`),vUt=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join(` +`),Mk=Ak().maxDimensionCount,oNe=Mr(),tNe=1e-6,zF=2048,pUt=new Uint8Array(4),rNe=new Uint8Array(4),iNe={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function gUt(e){e.read({x:0,y:0,width:1,height:1,data:pUt})}function sNe(e,t,r,n,i){var a=e._gl;a.enable(a.SCISSOR_TEST),a.scissor(t,r,n,i),e.clear({color:[0,0,0,0],depth:1})}function mUt(e,t,r,n,i,a){var o=a.key;function s(l){var u=Math.min(n,i-l*n);l===0&&(window.cancelAnimationFrame(r.currentRafs[o]),delete r.currentRafs[o],sNe(e,a.scissorX,a.scissorY,a.scissorWidth,a.viewBoxSize[1])),!r.clearOnly&&(a.count=2*u,a.offset=2*l*n,t(a),l*n+u>>8*t)%256/255}function xUt(e,t,r){for(var n=new Array(e*(Mk+4)),i=0,a=0;aX&&(X=M[F].dim1.canvasX,V=F);T===0&&sNe(i,0,0,u.canvasWidth,u.canvasHeight);var G=k(r);for(F=0;F{"use strict";var zd=xa(),l1=Mr(),xK=l1.isArrayOrTypedArray,gNe=l1.numberFormat,mNe=(eNe(),B1(QBe)).default,yNe=Qa(),SUt=l1.strRotate,Jm=l1.strTranslate,MUt=Pl(),FF=ao(),fNe=Mu(),TK=Km(),tg=TK.keyFun,$m=TK.repeat,_Ne=TK.unwrap,mA=yK(),ll=Ak(),xNe=dK(),EUt=cNe();function hNe(e,t,r){return l1.aggNums(e,null,t,r)}function bNe(e,t){return AK(hNe(Math.min,e,t),hNe(Math.max,e,t))}function qF(e){var t=e.range;return t?AK(t[0],t[1]):bNe(e.values,e._length)}function AK(e,t){return(isNaN(e)||!isFinite(e))&&(e=0),(isNaN(t)||!isFinite(t))&&(t=0),e===t&&(e===0?(e-=1,t+=1):(e*=.9,t*=1.1)),[e,t]}function kUt(e,t){return t?function(r,n){var i=t[n];return i==null?e(r):i}:e}function CUt(e,t,r,n,i){var a=qF(r);return n?zd.scale.ordinal().domain(n.map(kUt(gNe(r.tickformat),i))).range(n.map(function(o){var s=(o-a[0])/(a[1]-a[0]);return e-t+s*(2*t-e)})):zd.scale.linear().domain(a).range([e-t,t])}function LUt(e,t){return zd.scale.linear().range([t,e-t])}function PUt(e,t){return zd.scale.linear().domain(qF(e)).range([t,1-t])}function IUt(e){if(e.tickvals){var t=qF(e);return zd.scale.ordinal().domain(e.tickvals).range(e.tickvals.map(function(r){return(r-t[0])/(t[1]-t[0])}))}}function RUt(e){var t=e.map(function(a){return a[0]}),r=e.map(function(a){var o=mNe(a[1]);return zd.rgb("rgb("+o[0]+","+o[1]+","+o[2]+")")}),n=function(a){return function(o){return o[a]}},i="rgb".split("").map(function(a){return zd.scale.linear().clamp(!0).domain(t).range(r.map(n(a)))});return function(a){return i.map(function(o){return o(a)})}}function wK(e){return e.dimensions.some(function(t){return t.brush.filterSpecified})}function DUt(e,t,r){var n=_Ne(t),i=n.trace,a=mA.convertTypedArray(n.lineColor),o=i.line,s={color:mNe(i.unselected.line.color),opacity:i.unselected.line.opacity},l=fNe.extractOpts(o),u=l.reversescale?fNe.flipScale(n.cscale):n.cscale,c=i.domain,f=i.dimensions,h=e.width,d=i.labelangle,v=i.labelside,x=i.labelfont,b=i.tickfont,p=i.rangefont,E=l1.extendDeepNoArrays({},o,{color:a.map(zd.scale.linear().domain(qF({values:a,range:[l.min,l.max],_length:i._length}))),blockLineCount:ll.blockLineCount,canvasOverdrag:ll.overdrag*ll.canvasPixelRatio}),k=Math.floor(h*(c.x[1]-c.x[0])),A=Math.floor(e.height*(c.y[1]-c.y[0])),L=e.margin||{l:80,r:80,t:100,b:80},_=k,C=A;return{key:r,colCount:f.filter(mA.isVisible).length,dimensions:f,tickDistance:ll.tickDistance,unitToColor:RUt(u),lines:E,deselectedLines:s,labelAngle:d,labelSide:v,labelFont:x,tickFont:b,rangeFont:p,layoutWidth:h,layoutHeight:e.height,domain:c,translateX:c.x[0]*h,translateY:e.height-c.y[1]*e.height,pad:L,canvasWidth:_*ll.canvasPixelRatio+2*E.canvasOverdrag,canvasHeight:C*ll.canvasPixelRatio,width:_,height:C,canvasPixelRatio:ll.canvasPixelRatio}}function zUt(e,t,r){var n=r.width,i=r.height,a=r.dimensions,o=r.canvasPixelRatio,s=function(h){return n*h/Math.max(1,r.colCount-1)},l=ll.verticalPadding/i,u=LUt(i,ll.verticalPadding),c={key:r.key,xScale:s,model:r,inBrushDrag:!1},f={};return c.dimensions=a.filter(mA.isVisible).map(function(h,d){var v=PUt(h,l),x=f[h.label];f[h.label]=(x||0)+1;var b=h.label+(x?"__"+x:""),p=h.constraintrange,E=p&&p.length;E&&!xK(p[0])&&(p=[p]);var k=E?p.map(function(q){return q.map(v)}):[[-1/0,1/0]],A=function(){var q=c;q.focusLayer&&q.focusLayer.render(q.panels,!0);var V=wK(q);!e.contextShown()&&V?(q.contextLayer&&q.contextLayer.render(q.panels,!0),e.contextShown(!0)):e.contextShown()&&!V&&(q.contextLayer&&q.contextLayer.render(q.panels,!0,!0),e.contextShown(!1))},L=h.values;L.length>h._length&&(L=L.slice(0,h._length));var _=h.tickvals,C;function M(q,V){return{val:q,text:C[V]}}function g(q,V){return q.val-V.val}if(xK(_)&&_.length){l1.isTypedArray(_)&&(_=Array.from(_)),C=h.ticktext,!xK(C)||!C.length?C=_.map(gNe(h.tickformat)):C.length>_.length?C=C.slice(0,_.length):_.length>C.length&&(_=_.slice(0,C.length));for(var P=1;P<_.length;P++)if(_[P]<_[P-1]){for(var T=_.map(M).sort(g),F=0;F<_.length;F++)_[F]=T[F].val,C[F]=T[F].text;break}}else _=void 0;return L=mA.convertTypedArray(L),{key:b,label:h.label,tickFormat:h.tickformat,tickvals:_,ticktext:C,ordinal:mA.isOrdinal(h),multiselect:h.multiselect,xIndex:d,crossfilterDimensionIndex:d,visibleIndex:h._index,height:i,values:L,paddedUnitValues:L.map(v),unitTickvals:_&&_.map(v),xScale:s,x:s(d),canvasX:s(d)*o,unitToPaddedPx:u,domainScale:CUt(i,ll.verticalPadding,h,_,C),ordinalScale:IUt(h),parent:c,model:r,brush:xNe.makeBrush(e,E,k,function(){e.linePickActive(!1)},A,function(q){if(c.focusLayer.render(c.panels,!0),c.pickLayer&&c.pickLayer.render(c.panels,!0),e.linePickActive(!0),t&&t.filterChanged){var V=v.invert,H=q.map(function(X){return X.map(V).sort(l1.sorterAsc)}).sort(function(X,G){return X[0]-G[0]});t.filterChanged(c.key,h._index,H)}})}}),c}function dNe(e){e.classed(ll.cn.axisExtentText,!0).attr("text-anchor","middle").style("cursor","default")}function FUt(){var e=!0,t=!1;return{linePickActive:function(r){return arguments.length?e=!!r:e},contextShown:function(r){return arguments.length?t=!!r:t}}}function vNe(e,t){var r=t==="top"?1:-1,n=e*Math.PI/180,i=Math.sin(n),a=Math.cos(n);return{dir:r,dx:i,dy:a,degrees:e}}function bK(e,t,r){for(var n=t.panels||(t.panels=[]),i=e.data(),a=0;a=V||N>=H)return;var W=F.lineLayer.readPixel(G,H-1-N),re=W[3]!==0,ae=re?W[2]+256*(W[1]+256*W[0]):null,_e={x:G,y:N,clientX:q.clientX,clientY:q.clientY,dataIndex:F.model.key,curveNumber:ae};ae!==v&&(re?i.hover(_e):i.unhover&&i.unhover(_e),v=ae)}}),d.style("opacity",function(F){return F.pick?0:1}),s.style("background","rgba(255, 255, 255, 0)");var b=s.selectAll("."+ll.cn.parcoords).data(h,tg);b.exit().remove(),b.enter().append("g").classed(ll.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),b.attr("transform",function(F){return Jm(F.model.translateX,F.model.translateY)});var p=b.selectAll("."+ll.cn.parcoordsControlView).data($m,tg);p.enter().append("g").classed(ll.cn.parcoordsControlView,!0),p.attr("transform",function(F){return Jm(F.model.pad.l,F.model.pad.t)});var E=p.selectAll("."+ll.cn.yAxis).data(function(F){return F.dimensions},tg);E.enter().append("g").classed(ll.cn.yAxis,!0),p.each(function(F){bK(E,F,u)}),d.each(function(F){if(F.viewModel){!F.lineLayer||i?F.lineLayer=EUt(this,F):F.lineLayer.update(F),(F.key||F.key===0)&&(F.viewModel[F.key]=F.lineLayer);var q=!F.context||i;F.lineLayer.render(F.viewModel.panels,q)}}),E.attr("transform",function(F){return Jm(F.xScale(F.xIndex),0)}),E.call(zd.behavior.drag().origin(function(F){return F}).on("drag",function(F){var q=F.parent;f.linePickActive(!1),F.x=Math.max(-ll.overdrag,Math.min(F.model.width+ll.overdrag,zd.event.x)),F.canvasX=F.x*F.model.canvasPixelRatio,E.sort(function(V,H){return V.x-H.x}).each(function(V,H){V.xIndex=H,V.x=F===V?V.x:V.xScale(V.xIndex),V.canvasX=V.x*V.model.canvasPixelRatio}),bK(E,q,u),E.filter(function(V){return Math.abs(F.xIndex-V.xIndex)!==0}).attr("transform",function(V){return Jm(V.xScale(V.xIndex),0)}),zd.select(this).attr("transform",Jm(F.x,0)),E.each(function(V,H,X){X===F.parent.key&&(q.dimensions[H]=V)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!wK(q)),q.focusLayer.render&&q.focusLayer.render(q.panels)}).on("dragend",function(F){var q=F.parent;F.x=F.xScale(F.xIndex),F.canvasX=F.x*F.model.canvasPixelRatio,bK(E,q,u),zd.select(this).attr("transform",function(V){return Jm(V.x,0)}),q.contextLayer&&q.contextLayer.render(q.panels,!1,!wK(q)),q.focusLayer&&q.focusLayer.render(q.panels),q.pickLayer&&q.pickLayer.render(q.panels,!0),f.linePickActive(!0),i&&i.axesMoved&&i.axesMoved(q.key,q.dimensions.map(function(V){return V.crossfilterDimensionIndex}))})),E.exit().remove();var k=E.selectAll("."+ll.cn.axisOverlays).data($m,tg);k.enter().append("g").classed(ll.cn.axisOverlays,!0),k.selectAll("."+ll.cn.axis).remove();var A=k.selectAll("."+ll.cn.axis).data($m,tg);A.enter().append("g").classed(ll.cn.axis,!0),A.each(function(F){var q=F.model.height/F.model.tickDistance,V=F.domainScale,H=V.domain();zd.select(this).call(zd.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(q,F.tickFormat).tickValues(F.ordinal?H:null).tickFormat(function(X){return mA.isOrdinal(F)?X:wNe(F.model.dimensions[F.visibleIndex],X)}).scale(V)),FF.font(A.selectAll("text"),F.model.tickFont)}),A.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),A.selectAll("text").style("cursor","default");var L=k.selectAll("."+ll.cn.axisHeading).data($m,tg);L.enter().append("g").classed(ll.cn.axisHeading,!0);var _=L.selectAll("."+ll.cn.axisTitle).data($m,tg);_.enter().append("text").classed(ll.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",a?"none":"auto"),_.text(function(F){return F.label}).each(function(F){var q=zd.select(this);FF.font(q,F.model.labelFont),MUt.convertToTspans(q,t)}).attr("transform",function(F){var q=vNe(F.model.labelAngle,F.model.labelSide),V=ll.axisTitleOffset;return(q.dir>0?"":Jm(0,2*V+F.model.height))+SUt(q.degrees)+Jm(-V*q.dx,-V*q.dy)}).attr("text-anchor",function(F){var q=vNe(F.model.labelAngle,F.model.labelSide),V=Math.abs(q.dx),H=Math.abs(q.dy);return 2*V>H?q.dir*q.dx<0?"start":"end":"middle"});var C=k.selectAll("."+ll.cn.axisExtent).data($m,tg);C.enter().append("g").classed(ll.cn.axisExtent,!0);var M=C.selectAll("."+ll.cn.axisExtentTop).data($m,tg);M.enter().append("g").classed(ll.cn.axisExtentTop,!0),M.attr("transform",Jm(0,-ll.axisExtentOffset));var g=M.selectAll("."+ll.cn.axisExtentTopText).data($m,tg);g.enter().append("text").classed(ll.cn.axisExtentTopText,!0).call(dNe),g.text(function(F){return pNe(F,!0)}).each(function(F){FF.font(zd.select(this),F.model.rangeFont)});var P=C.selectAll("."+ll.cn.axisExtentBottom).data($m,tg);P.enter().append("g").classed(ll.cn.axisExtentBottom,!0),P.attr("transform",function(F){return Jm(0,F.model.height+ll.axisExtentOffset)});var T=P.selectAll("."+ll.cn.axisExtentBottomText).data($m,tg);T.enter().append("text").classed(ll.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(dNe),T.text(function(F){return pNe(F,!1)}).each(function(F){FF.font(zd.select(this),F.model.rangeFont)}),xNe.ensureAxisBrush(k,c,t)}});var MK=ye((SK,kNe)=>{"use strict";var OUt=ANe(),BUt=xF(),SNe=yK().isVisible,ENe={};function MNe(e,t,r){var n=t.indexOf(r),i=e.indexOf(n);return i===-1&&(i+=t.length),i}function NUt(e,t){return function(n,i){return MNe(e,t,n)-MNe(e,t,i)}}var SK=kNe.exports=function(t,r){var n=t._fullLayout,i=BUt(t,[],ENe);if(i){var a={},o={},s={},l={},u=n._size;r.forEach(function(v,x){var b=v[0].trace;s[x]=b.index;var p=l[x]=b.index;a[x]=t.data[p].dimensions,o[x]=t.data[p].dimensions.slice()});var c=function(v,x,b){var p=o[v][x],E=b.map(function(M){return M.slice()}),k="dimensions["+x+"].constraintrange",A=n._tracePreGUI[t._fullData[s[v]]._fullInput.uid];if(A[k]===void 0){var L=p.constraintrange;A[k]=L||null}var _=t._fullData[s[v]].dimensions[x];E.length?(E.length===1&&(E=E[0]),p.constraintrange=E,_.constraintrange=E.slice(),E=[E]):(delete p.constraintrange,delete _.constraintrange,E=null);var C={};C[k]=E,t.emit("plotly_restyle",[C,[l[v]]])},f=function(v){t.emit("plotly_hover",v)},h=function(v){t.emit("plotly_unhover",v)},d=function(v,x){var b=NUt(x,o[v].filter(SNe));a[v].sort(b),o[v].filter(function(p){return!SNe(p)}).sort(function(p){return o[v].indexOf(p)}).forEach(function(p){a[v].splice(a[v].indexOf(p),1),a[v].splice(o[v].indexOf(p),0,p)}),t.emit("plotly_restyle",[{dimensions:[a[v]]},[l[v]]])};OUt(t,r,{width:u.w,height:u.h,margin:{t:u.t,r:u.r,b:u.b,l:u.l}},{filterChanged:c,hover:f,unhover:h,axesMoved:d})}};SK.reglPrecompiled=ENe});var LNe=ye(Ek=>{"use strict";var CNe=xa(),UUt=kd().getModuleCalcData,VUt=MK(),HUt=Zp();Ek.name="parcoords";Ek.plot=function(e){var t=UUt(e.calcdata,"parcoords")[0];t.length&&VUt(e,t)};Ek.clean=function(e,t,r,n){var i=n._has&&n._has("parcoords"),a=t._has&&t._has("parcoords");i&&!a&&(n._paperdiv.selectAll(".parcoords").remove(),n._glimages.selectAll("*").remove())};Ek.toSVG=function(e){var t=e._fullLayout._glimages,r=CNe.select(e).selectAll(".svg-container"),n=r.filter(function(a,o){return o===r.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus");function i(){var a=this,o=a.toDataURL("image/png"),s=t.append("svg:image");s.attr({xmlns:HUt.svg,"xlink:href":o,preserveAspectRatio:"none",x:0,y:0,width:a.style.width,height:a.style.height})}n.each(i),window.setTimeout(function(){CNe.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}});var INe=ye((gyr,PNe)=>{"use strict";PNe.exports={attributes:cK(),supplyDefaults:jBe(),calc:ZBe(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:LNe(),categories:["gl","regl","noOpacity","noHover"],meta:{}}});var zNe=ye((myr,DNe)=>{"use strict";var RNe=INe();RNe.plot=MK();DNe.exports=RNe});var qNe=ye((yyr,FNe)=>{"use strict";FNe.exports=zNe()});var EK=ye((_yr,UNe)=>{"use strict";var BNe=no().extendFlat,GUt=vl(),ONe=Su(),jUt=Jl(),NNe=Wo().hovertemplateAttrs,WUt=Ju().attributes,ZUt=BNe({editType:"calc"},jUt("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:NNe({editType:"plot",arrayOk:!1},{keys:["count","probability"]})});UNe.exports={domain:WUt({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:BNe({},GUt.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:NNe({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:ONe({editType:"calc"}),tickfont:ONe({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:ZUt,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}});var GNe=ye((xyr,HNe)=>{"use strict";var yA=Mr(),XUt=Dv().hasColorscale,YUt=Uh(),KUt=Ju().defaults,JUt=Zd(),VNe=EK(),$Ut=wF(),QUt=vv().isTypedArraySpec;function eVt(e,t,r,n,i){i("line.shape"),i("line.hovertemplate");var a=i("line.color",n.colorway[0]);if(XUt(e,"line")&&yA.isArrayOrTypedArray(a)){if(a.length)return i("line.colorscale"),YUt(e,t,n,i,{prefix:"line.",cLetter:"c"}),a.length;t.line.color=r}return 1/0}function tVt(e,t){function r(u,c){return yA.coerce(e,t,VNe.dimensions,u,c)}var n=r("values"),i=r("visible");if(n&&n.length||(i=t.visible=!1),i){r("label"),r("displayindex",t._index);var a=e.categoryarray,o=yA.isArrayOrTypedArray(a)&&a.length>0||QUt(a),s;o&&(s="array");var l=r("categoryorder",s);l==="array"?(r("categoryarray"),r("ticktext")):(delete e.categoryarray,delete e.ticktext),!o&&l==="array"&&(t.categoryorder="trace")}}HNe.exports=function(t,r,n,i){function a(u,c){return yA.coerce(t,r,VNe,u,c)}var o=JUt(t,r,{name:"dimensions",handleItemDefaults:tVt}),s=eVt(t,r,n,i,a);KUt(r,i,a),(!Array.isArray(o)||!o.length)&&(r.visible=!1),$Ut(r,o,"values",s),a("hoveron"),a("hovertemplate"),a("arrangement"),a("bundlecolors"),a("sortpaths"),a("counts");var l=i.font;yA.coerceFont(a,"labelfont",l,{overrideDflt:{size:Math.round(l.size)}}),yA.coerceFont(a,"tickfont",l,{autoShadowDflt:!0,overrideDflt:{size:Math.round(l.size/1.2)}})}});var WNe=ye((byr,jNe)=>{"use strict";var rVt=Km().wrap,iVt=Dv().hasColorscale,nVt=zv(),aVt=jq(),oVt=ao(),kk=Mr(),sVt=uo();jNe.exports=function(t,r){var n=kk.filterVisible(r.dimensions);if(n.length===0)return[];var i=n.map(function(g){var P;if(g.categoryorder==="trace")P=null;else if(g.categoryorder==="array")P=g.categoryarray;else{P=aVt(g.values);for(var T=!0,F=0;F=e.length||t[e[r]]!==void 0)return!1;t[e[r]]=!0}return!0}});var tUe=ye((wyr,eUe)=>{"use strict";var ul=xa(),yVt=(R2(),B1(I2)).interpolateNumber,_Vt=OP(),Pk=Nc(),yx=Mr(),Ck=yx.strTranslate,ZNe=ao(),kK=id(),xVt=Pl();function bVt(e,t,r,n){var i=t._context.staticPlot,a=e.map(FVt.bind(0,t,r)),o=n.selectAll("g.parcatslayer").data([null]);o.enter().append("g").attr("class","parcatslayer").style("pointer-events",i?"none":"all");var s=o.selectAll("g.trace.parcats").data(a,u1),l=s.enter().append("g").attr("class","trace parcats");s.attr("transform",function(E){return Ck(E.x,E.y)}),l.append("g").attr("class","paths");var u=s.select("g.paths"),c=u.selectAll("path.path").data(function(E){return E.paths},u1);c.attr("fill",function(E){return E.model.color});var f=c.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(E){return E.model.color}).attr("fill-opacity",0);PK(f),c.attr("d",function(E){return E.svgD}),f.empty()||c.sort(CK),c.exit().remove(),c.on("mouseover",wVt).on("mouseout",TVt).on("click",AVt),l.append("g").attr("class","dimensions");var h=s.select("g.dimensions"),d=h.selectAll("g.dimension").data(function(E){return E.dimensions},u1);d.enter().append("g").attr("class","dimension"),d.attr("transform",function(E){return Ck(E.x,0)}),d.exit().remove();var v=d.selectAll("g.category").data(function(E){return E.categories},u1),x=v.enter().append("g").attr("class","category");v.attr("transform",function(E){return Ck(0,E.y)}),x.append("rect").attr("class","catrect").attr("pointer-events","none"),v.select("rect.catrect").attr("fill","none").attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),YNe(x);var b=v.selectAll("rect.bandrect").data(function(E){return E.bands},u1);b.each(function(){yx.raiseToTop(this)}),b.attr("fill",function(E){return E.color});var p=b.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(E){return E.color}).attr("fill-opacity",0);b.attr("fill",function(E){return E.color}).attr("width",function(E){return E.width}).attr("height",function(E){return E.height}).attr("y",function(E){return E.y}).attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":E.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),RK(p),b.exit().remove(),x.append("text").attr("class","catlabel").attr("pointer-events","none"),v.select("text.catlabel").attr("text-anchor",function(E){return Lk(E)?"start":"end"}).attr("alignment-baseline","middle").style("fill","rgb(0, 0, 0)").attr("x",function(E){return Lk(E)?E.width+5:-5}).attr("y",function(E){return E.height/2}).text(function(E){return E.model.categoryLabel}).each(function(E){ZNe.font(ul.select(this),E.parcatsViewModel.categorylabelfont),xVt.convertToTspans(ul.select(this),t)}),x.append("text").attr("class","dimlabel"),v.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(E){return E.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(E){return E.width/2}).attr("y",-5).text(function(E,k){return k===0?E.parcatsViewModel.model.dimensions[E.model.dimensionInd].dimensionLabel:null}).each(function(E){ZNe.font(ul.select(this),E.parcatsViewModel.labelfont)}),v.selectAll("rect.bandrect").on("mouseover",PVt).on("mouseout",IVt),v.exit().remove(),d.call(ul.behavior.drag().origin(function(E){return{x:E.x,y:0}}).on("dragstart",RVt).on("drag",DVt).on("dragend",zVt)),s.each(function(E){E.traceSelection=ul.select(this),E.pathSelection=ul.select(this).selectAll("g.paths").selectAll("path.path"),E.dimensionSelection=ul.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),s.exit().remove()}eUe.exports=function(e,t,r,n){bVt(r,e,n,t)};function u1(e){return e.key}function Lk(e){var t=e.parcatsViewModel.dimensions.length,r=e.parcatsViewModel.dimensions[t-1].model.dimensionInd;return e.model.dimensionInd===r}function CK(e,t){return e.model.rawColor>t.model.rawColor?1:e.model.rawColor"),_=ul.mouse(i)[0];Pk.loneHover({trace:a,x:v-s.left+l.left,y:x-s.top+l.top,text:L,color:e.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:b,idealAlign:_1&&u.displayInd===l.dimensions.length-1?(h=o.left,d="left"):(h=o.left+o.width,d="right");var v=s.model.count,x=s.model.categoryLabel,b=v/s.parcatsViewModel.model.count,p={countLabel:v,categoryLabel:x,probabilityLabel:b.toFixed(3)},E=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&E.push(["Count:",p.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&E.push(["P("+p.categoryLabel+"):",p.probabilityLabel].join(" "));var k=E.join("
");return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:k,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:p,eventData:[{data:c._input,fullData:c,count:v,category:x,probability:b}]}}function CVt(e,t,r){var n=[];return ul.select(r.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){var i=this;n.push(KNe(e,t,i))}),n}function LVt(e,t,r){e._fullLayout._calcInverseTransform(e);var n=e._fullLayout._invScaleX,i=e._fullLayout._invScaleY,a=r.getBoundingClientRect(),o=ul.select(r).datum(),s=o.categoryViewModel,l=s.parcatsViewModel,u=l.model.dimensions[s.model.dimensionInd],c=l.trace,f=a.y+a.height/2,h,d;l.dimensions.length>1&&u.displayInd===l.dimensions.length-1?(h=a.left,d="left"):(h=a.left+a.width,d="right");var v=s.model.categoryLabel,x=o.parcatsViewModel.model.count,b=0;o.categoryViewModel.bands.forEach(function(P){P.color===o.color&&(b+=P.count)});var p=s.model.count,E=0;l.pathSelection.each(function(P){P.model.color===o.color&&(E+=P.model.count)});var k=b/x,A=b/E,L=b/p,_={countLabel:b,categoryLabel:v,probabilityLabel:k.toFixed(3)},C=[];s.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&C.push(["Count:",_.countLabel].join(" ")),s.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(C.push("P(color \u2229 "+v+"): "+_.probabilityLabel),C.push("P("+v+" | color): "+A.toFixed(3)),C.push("P(color | "+v+"): "+L.toFixed(3)));var M=C.join("
"),g=kK.mostReadable(o.color,["black","white"]);return{trace:c,x:n*(h-t.left),y:i*(f-t.top),text:M,color:o.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:g,fontSize:10,idealAlign:d,hovertemplate:c.hovertemplate,hovertemplateLabels:_,eventData:[{data:c._input,fullData:c,category:v,count:x,probability:k,categorycount:p,colorcount:E,bandcolorcount:b}]}}function PVt(e){if(!e.parcatsViewModel.dragDimension&&e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){var t=ul.mouse(this)[1];if(t<-1)return;var r=e.parcatsViewModel.graphDiv,n=r._fullLayout,i=n._paperdiv.node().getBoundingClientRect(),a=e.parcatsViewModel.hoveron,o=this;if(a==="color"?(kVt(o),zK(o,"plotly_hover",ul.event)):(EVt(o),DK(o,"plotly_hover",ul.event)),e.parcatsViewModel.hoverinfoItems.indexOf("none")===-1){var s;a==="category"?s=KNe(r,i,o):a==="color"?s=LVt(r,i,o):a==="dimension"&&(s=CVt(r,i,o)),s&&Pk.loneHover(s,{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:r})}}}function IVt(e){var t=e.parcatsViewModel;if(!t.dragDimension&&(PK(t.pathSelection),YNe(t.dimensionSelection.selectAll("g.category")),RK(t.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),Pk.loneUnhover(t.graphDiv._fullLayout._hoverlayer.node()),t.pathSelection.sort(CK),t.hoverinfoItems.indexOf("skip")===-1)){var r=e.parcatsViewModel.hoveron,n=this;r==="color"?zK(n,"plotly_unhover",ul.event):DK(n,"plotly_unhover",ul.event)}}function RVt(e){e.parcatsViewModel.arrangement!=="fixed"&&(e.dragDimensionDisplayInd=e.model.displayInd,e.initialDragDimensionDisplayInds=e.parcatsViewModel.model.dimensions.map(function(t){return t.displayInd}),e.dragHasMoved=!1,e.dragCategoryDisplayInd=null,ul.select(this).selectAll("g.category").select("rect.catrect").each(function(t){var r=ul.mouse(this)[0],n=ul.mouse(this)[1];-2<=r&&r<=t.width+2&&-2<=n&&n<=t.height+2&&(e.dragCategoryDisplayInd=t.model.displayInd,e.initialDragCategoryDisplayInds=e.model.categories.map(function(i){return i.displayInd}),t.model.dragY=t.y,yx.raiseToTop(this.parentNode),ul.select(this.parentNode).selectAll("rect.bandrect").each(function(i){i.yc.y+c.height/2&&(a.model.displayInd=c.model.displayInd,c.model.displayInd=s),e.dragCategoryDisplayInd=a.model.displayInd}if(e.dragCategoryDisplayInd===null||e.parcatsViewModel.arrangement==="freeform"){i.model.dragX=ul.event.x;var f=e.parcatsViewModel.dimensions[r],h=e.parcatsViewModel.dimensions[n];f!==void 0&&i.model.dragXh.x&&(i.model.displayInd=h.model.displayInd,h.model.displayInd=e.dragDimensionDisplayInd),e.dragDimensionDisplayInd=i.model.displayInd}qK(e.parcatsViewModel),FK(e.parcatsViewModel),QNe(e.parcatsViewModel),$Ne(e.parcatsViewModel)}}function zVt(e){if(e.parcatsViewModel.arrangement!=="fixed"&&e.dragDimensionDisplayInd!==null){ul.select(this).selectAll("text").attr("font-weight","normal");var t={},r=JNe(e.parcatsViewModel),n=e.parcatsViewModel.model.dimensions.map(function(h){return h.displayInd}),i=e.initialDragDimensionDisplayInds.some(function(h,d){return h!==n[d]});i&&n.forEach(function(h,d){var v=e.parcatsViewModel.model.dimensions[d].containerInd;t["dimensions["+v+"].displayindex"]=h});var a=!1;if(e.dragCategoryDisplayInd!==null){var o=e.model.categories.map(function(h){return h.displayInd});if(a=e.initialDragCategoryDisplayInds.some(function(h,d){return h!==o[d]}),a){var s=e.model.categories.slice().sort(function(h,d){return h.displayInd-d.displayInd}),l=s.map(function(h){return h.categoryValue}),u=s.map(function(h){return h.categoryLabel});t["dimensions["+e.model.containerInd+"].categoryarray"]=[l],t["dimensions["+e.model.containerInd+"].ticktext"]=[u],t["dimensions["+e.model.containerInd+"].categoryorder"]="array"}}if(e.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!e.dragHasMoved&&e.potentialClickBand&&(e.parcatsViewModel.hoveron==="color"?zK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent):DK(e.potentialClickBand,"plotly_click",ul.event.sourceEvent)),e.model.dragX=null,e.dragCategoryDisplayInd!==null){var c=e.parcatsViewModel.dimensions[e.dragDimensionDisplayInd].categories[e.dragCategoryDisplayInd];c.model.dragY=null,e.dragCategoryDisplayInd=null}e.dragDimensionDisplayInd=null,e.parcatsViewModel.dragDimension=null,e.dragHasMoved=null,e.potentialClickBand=null,qK(e.parcatsViewModel),FK(e.parcatsViewModel);var f=ul.transition().duration(300).ease("cubic-in-out");f.each(function(){QNe(e.parcatsViewModel,!0),$Ne(e.parcatsViewModel,!0)}).each("end",function(){(i||a)&&_Vt.restyle(e.parcatsViewModel.graphDiv,t,[r])})}}function JNe(e){for(var t,r=e.graphDiv._fullData,n=0;n=0;l--)u+="C"+o[l]+","+(t[l+1]+n)+" "+a[l]+","+(t[l]+n)+" "+(e[l]+r[l])+","+(t[l]+n),u+="l-"+r[l]+",0 ";return u+="Z",u}function FK(e){var t=e.dimensions,r=e.model,n=t.map(function(q){return q.categories.map(function(V){return V.y})}),i=e.model.dimensions.map(function(q){return q.categories.map(function(V){return V.displayInd})}),a=e.model.dimensions.map(function(q){return q.displayInd}),o=e.dimensions.map(function(q){return q.model.dimensionInd}),s=t.map(function(q){return q.x}),l=t.map(function(q){return q.width}),u=[];for(var c in r.paths)r.paths.hasOwnProperty(c)&&u.push(r.paths[c]);function f(q){var V=q.categoryInds.map(function(X,G){return i[G][X]}),H=o.map(function(X){return V[X]});return H}u.sort(function(q,V){var H=f(q),X=f(V);return e.sortpaths==="backward"&&(H.reverse(),X.reverse()),H.push(q.valueInds[0]),X.push(V.valueInds[0]),e.bundlecolors&&(H.unshift(q.rawColor),X.unshift(V.rawColor)),HX?1:0});for(var h=new Array(u.length),d=t[0].model.count,v=t[0].categories.map(function(q){return q.height}).reduce(function(q,V){return q+V}),x=0;x0?p=v*(b.count/d):p=0;for(var E=new Array(n.length),k=0;k1?o=(e.width-2*r-n)/(i-1):o=0,s=r,l=s+o*a;var u=[],c=e.model.maxCats,f=t.categories.length,h=8,d=t.count,v=e.height-h*(c-1),x,b,p,E,k,A=(c-f)*h/2,L=t.categories.map(function(_){return{displayInd:_.displayInd,categoryInd:_.categoryInd}});for(L.sort(function(_,C){return _.displayInd-C.displayInd}),k=0;k0?x=b.count/d*v:x=0,p={key:b.valueInds[0],model:b,width:n,height:x,y:b.dragY!==null?b.dragY:A,bands:[],parcatsViewModel:e},A=A+x+h,u.push(p);return{key:t.dimensionInd,x:t.dragX!==null?t.dragX:l,y:0,width:n,model:t,categories:u,parcatsViewModel:e,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}});var OK=ye((Tyr,rUe)=>{"use strict";var OVt=tUe();rUe.exports=function(t,r,n,i){var a=t._fullLayout,o=a._paper,s=a._size;OVt(t,o,r,{width:s.w,height:s.h,margin:{t:s.t,r:s.r,b:s.b,l:s.l}},n,i)}});var nUe=ye(BF=>{"use strict";var BVt=kd().getModuleCalcData,NVt=OK(),iUe="parcats";BF.name=iUe;BF.plot=function(e,t,r,n){var i=BVt(e.calcdata,iUe);if(i.length){var a=i[0];NVt(e,a,r,n)}};BF.clean=function(e,t,r,n){var i=n._has&&n._has("parcats"),a=t._has&&t._has("parcats");i&&!a&&n._paperdiv.selectAll(".parcats").remove()}});var oUe=ye((Syr,aUe)=>{"use strict";aUe.exports={attributes:EK(),supplyDefaults:GNe(),calc:WNe(),plot:OK(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:nUe(),categories:["noOpacity"],meta:{}}});var lUe=ye((Myr,sUe)=>{"use strict";sUe.exports=oUe()});var c1=ye((Eyr,pUe)=>{"use strict";var UVt=Y1(),uUe="1.13.4",dUe='\xA9
OpenStreetMap contributors',cUe=['\xA9 Carto',dUe].join(" "),fUe=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),VVt=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),vUe={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:dUe,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},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}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:cUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},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":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:cUe,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},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":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:fUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},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":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:fUe,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},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":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:VVt,tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},hUe=UVt(vUe);pUe.exports={requiredVersion:uUe,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:vUe,styleValuesNonMapbox:hUe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+uUe+"."].join(` +`),noAccessTokenErrorMsg:["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' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",hUe.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` +`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"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",path1:"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",path2:"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",polygon:"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"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","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-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","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","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')`}}});var Rk=ye((kyr,_Ue)=>{"use strict";var gUe=Mr(),mUe=va().defaultLine,HVt=Ju().attributes,GVt=Su(),jVt=Uc().textposition,WVt=Bu().overrideAll,ZVt=Vs().templatedArray,BK=c1(),yUe=GVt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});yUe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var XVt=_Ue.exports=WVt({_arrayAttrRegexps:[gUe.counterRegex("mapbox",".layers",!0)],domain:HVt({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:BK.styleValuesMapbox.concat(BK.styleValuesNonMapbox),dflt:BK.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:ZVt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:mUe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:mUe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:yUe,textposition:gUe.extendFlat({},jVt,{arrayOk:!1})}})},"plot","from-root");XVt.uirevision={valType:"any",editType:"none"}});var NF=ye((Cyr,wUe)=>{"use strict";var YVt=Wo().hovertemplateAttrs,KVt=Wo().texttemplateAttrs,JVt=Eg(),Dk=H2(),_A=Uc(),xUe=Rk(),$Vt=vl(),QVt=Jl(),ew=no().extendFlat,eHt=Bu().overrideAll,tHt=Rk(),bUe=Dk.line,xA=Dk.marker;wUe.exports=eHt({lon:Dk.lon,lat:Dk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:ew({},tHt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:ew({},xA.opacity,{dflt:1})},mode:ew({},_A.mode,{dflt:"markers"}),text:ew({},_A.text,{}),texttemplate:KVt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:ew({},_A.hovertext,{}),line:{color:bUe.color,width:bUe.width},connectgaps:_A.connectgaps,marker:ew({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:xA.opacity,size:xA.size,sizeref:xA.sizeref,sizemin:xA.sizemin,sizemode:xA.sizemode},QVt("marker")),fill:Dk.fill,fillcolor:JVt(),textfont:xUe.layers.symbol.textfont,textposition:xUe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:_A.selected.marker},unselected:{marker:_A.unselected.marker},hoverinfo:ew({},$Vt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:YVt()},"calc","nested")});var NK=ye((Lyr,TUe)=>{"use strict";var rHt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];TUe.exports={isSupportedFont:function(e){return rHt.indexOf(e)!==-1}}});var MUe=ye((Pyr,SUe)=>{"use strict";var zk=Mr(),UK=lu(),iHt=$p(),nHt=R0(),aHt=D0(),oHt=Ig(),AUe=NF(),sHt=NK().isSupportedFont;SUe.exports=function(t,r,n,i){function a(p,E){return zk.coerce(t,r,AUe,p,E)}function o(p,E){return zk.coerce2(t,r,AUe,p,E)}var s=lHt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),UK.hasMarkers(r)){iHt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(zk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),zk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}UK.hasLines(r)&&(nHt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||UK.hasText(r)){var b=i.font.family;aHt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:sHt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&oHt(t,r,n,a),zk.coerceSelectionMarkerOpacity(r,a)};function lHt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var VK=ye((Iyr,kUe)=>{"use strict";var EUe=Qa();kUe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=EUe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=EUe.tickText(o,o.c2l(s[1]),!0).text,i}});var HK=ye((Ryr,LUe)=>{"use strict";var CUe=Mr();LUe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=CUe.isArrayOrTypedArray(r)?CUe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var FUe=ye((Dyr,zUe)=>{"use strict";var RUe=uo(),iv=Mr(),uHt=es().BADNUM,VF=rx(),PUe=Mu(),cHt=ao(),fHt=S3(),HF=lu(),hHt=NK().isSupportedFont,dHt=HK(),vHt=rp().appendArrayPointValue,pHt=Pl().NEWLINES,gHt=Pl().BR_TAG_ALL;zUe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=HF.hasLines(n),s=HF.hasMarkers(n),l=HF.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=UF("fill"),d=UF("line"),v=UF("circle"),x=UF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var p;if((a||o)&&(p=VF.calcTraceToLineCoords(r)),a&&(h.geojson=VF.makePolygon(p),h.layout.visibility="visible",iv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=VF.makeLine(p),d.layout.visibility="visible",iv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=mHt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":jK(n.cluster.color,n.cluster.step),"circle-radius":jK(n.cluster.size,n.cluster.step),"circle-opacity":jK(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":IUe(n),"text-size":12}}),iv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=yHt(r,t),iv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(iv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&iv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,iv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=dHt(n.textposition,k);iv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":IUe(n)}),iv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function UF(e){return{type:e,geojson:VF.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function mHt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=iv.isArrayOrTypedArray(r.color),a=iv.isArrayOrTypedArray(r.size),o=iv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(PUe.hasColorscale(t,"marker")?c=PUe.makeColorScaleFuncFromTrace(r):c=iv.identity);var f;a&&(f=fHt(t));var h;o&&(h=function(k){var A=RUe(k)?+iv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),hHt(s)||(s=r);var l=s.split(", ");return l}});var NUe=ye((zyr,BUe)=>{"use strict";var _Ht=Mr(),qUe=FUe(),bA=c1().traceLayerPrefix,rg={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function OUe(e,t,r,n){this.type="scattermapbox",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:bA+t+"-fill",line:bA+t+"-line",circle:bA+t+"-circle",symbol:bA+t+"-symbol",cluster:bA+t+"-cluster",clusterCount:bA+t+"-cluster-count"},this.below=null}var Fk=OUe.prototype;Fk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&_Ht.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Fk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Fk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=rg.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?rg.cluster:rg.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};BUe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new OUe(t,n.uid,i,a),s=qUe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var xHt=Nc(),WK=Mr(),bHt=oT(),wHt=WK.fillText,THt=es().BADNUM,AHt=c1().traceLayerPrefix;function SHt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=AHt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var g=M.lonlat;if(g[0]===THt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=WK.modHalf(g[0],360),T=g[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(xHt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],p=b.lonlat,E=[WK.modHalf(p[0],360)+d,p[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=bHt(i,b),e.extraText=UUe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function UUe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&wHt(t,e,u),u.join("
")}VUe.exports={hoverPoints:SHt,getExtraText:UUe}});var GUe=ye((qyr,HUe)=>{"use strict";HUe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var WUe=ye((Oyr,jUe)=>{"use strict";var MHt=Mr(),EHt=lu(),kHt=es().BADNUM;jUe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!EHt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof ZK=="object"&&typeof XK!="undefined"?XK.exports=t():(e=e||self,e.mapboxgl=t())})(ZK,function(){"use strict";var e,t,r;function n(i,a){if(!e)e=a;else if(!t)t=a;else{var o="var sharedChunk = {}; ("+e+")(sharedChunk); ("+t+")(sharedChunk);",s={};e(s),r=a(s),typeof window!="undefined"&&(r.workerUrl=window.URL.createObjectURL(new Blob([o],{type:"text/javascript"})))}}return n(["exports"],function(i){"use strict";function a(m,y){return y={exports:{}},m(y,y.exports),y.exports}var o="1.13.4",s=l;function l(m,y,I,U){this.cx=3*m,this.bx=3*(I-m)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*y,this.by=3*(U-y)-this.cy,this.ay=1-this.cy-this.by,this.p1x=m,this.p1y=U,this.p2x=I,this.p2y=U}l.prototype.sampleCurveX=function(m){return((this.ax*m+this.bx)*m+this.cx)*m},l.prototype.sampleCurveY=function(m){return((this.ay*m+this.by)*m+this.cy)*m},l.prototype.sampleCurveDerivativeX=function(m){return(3*this.ax*m+2*this.bx)*m+this.cx},l.prototype.solveCurveX=function(m,y){typeof y=="undefined"&&(y=1e-6);var I,U,J,ne,fe;for(J=m,fe=0;fe<8;fe++){if(ne=this.sampleCurveX(J)-m,Math.abs(ne)U)return U;for(;Ine?I=J:U=J,J=(U-I)*.5+I}return J},l.prototype.solve=function(m,y){return this.sampleCurveY(this.solveCurveX(m,y))};var u=c;function c(m,y){this.x=m,this.y=y}c.prototype={clone:function(){return new c(this.x,this.y)},add:function(m){return this.clone()._add(m)},sub:function(m){return this.clone()._sub(m)},multByPoint:function(m){return this.clone()._multByPoint(m)},divByPoint:function(m){return this.clone()._divByPoint(m)},mult:function(m){return this.clone()._mult(m)},div:function(m){return this.clone()._div(m)},rotate:function(m){return this.clone()._rotate(m)},rotateAround:function(m,y){return this.clone()._rotateAround(m,y)},matMult:function(m){return this.clone()._matMult(m)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(m){return this.x===m.x&&this.y===m.y},dist:function(m){return Math.sqrt(this.distSqr(m))},distSqr:function(m){var y=m.x-this.x,I=m.y-this.y;return y*y+I*I},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(m){return Math.atan2(this.y-m.y,this.x-m.x)},angleWith:function(m){return this.angleWithSep(m.x,m.y)},angleWithSep:function(m,y){return Math.atan2(this.x*y-this.y*m,this.x*m+this.y*y)},_matMult:function(m){var y=m[0]*this.x+m[1]*this.y,I=m[2]*this.x+m[3]*this.y;return this.x=y,this.y=I,this},_add:function(m){return this.x+=m.x,this.y+=m.y,this},_sub:function(m){return this.x-=m.x,this.y-=m.y,this},_mult:function(m){return this.x*=m,this.y*=m,this},_div:function(m){return this.x/=m,this.y/=m,this},_multByPoint:function(m){return this.x*=m.x,this.y*=m.y,this},_divByPoint:function(m){return this.x/=m.x,this.y/=m.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var m=this.y;return this.y=this.x,this.x=-m,this},_rotate:function(m){var y=Math.cos(m),I=Math.sin(m),U=y*this.x-I*this.y,J=I*this.x+y*this.y;return this.x=U,this.y=J,this},_rotateAround:function(m,y){var I=Math.cos(m),U=Math.sin(m),J=y.x+I*(this.x-y.x)-U*(this.y-y.y),ne=y.y+U*(this.x-y.x)+I*(this.y-y.y);return this.x=J,this.y=ne,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},c.convert=function(m){return m instanceof c?m:Array.isArray(m)?new c(m[0],m[1]):m};var f=typeof self!="undefined"?self:{};function h(m,y){if(Array.isArray(m)){if(!Array.isArray(y)||m.length!==y.length)return!1;for(var I=0;I=1)return 1;var y=m*m,I=y*m;return 4*(m<.5?I:3*(m-y)+I-.75)}function x(m,y,I,U){var J=new s(m,y,I,U);return function(ne){return J.solve(ne)}}var b=x(.25,.1,.25,1);function p(m,y,I){return Math.min(I,Math.max(y,m))}function E(m,y,I){var U=I-y,J=((m-y)%U+U)%U+y;return J===y?I:J}function k(m,y,I){if(!m.length)return I(null,[]);var U=m.length,J=new Array(m.length),ne=null;m.forEach(function(fe,Fe){y(fe,function(Qe,st){Qe&&(ne=Qe),J[Fe]=st,--U===0&&I(ne,J)})})}function A(m){var y=[];for(var I in m)y.push(m[I]);return y}function L(m,y){var I=[];for(var U in m)U in y||I.push(U);return I}function _(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U>y/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,m)}return m()}function T(m){return m<=1?1:Math.pow(2,Math.ceil(Math.log(m)/Math.LN2))}function F(m){return m?/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(m):!1}function q(m,y){m.forEach(function(I){y[I]&&(y[I]=y[I].bind(y))})}function V(m,y){return m.indexOf(y,m.length-y.length)!==-1}function H(m,y,I){var U={};for(var J in m)U[J]=y.call(I||this,m[J],J,m);return U}function X(m,y,I){var U={};for(var J in m)y.call(I||this,m[J],J,m)&&(U[J]=m[J]);return U}function G(m){return Array.isArray(m)?m.map(G):typeof m=="object"&&m?H(m,G):m}function N(m,y){for(var I=0;I=0)return!0;return!1}var W={};function re(m){W[m]||(typeof console!="undefined"&&console.warn(m),W[m]=!0)}function ae(m,y,I){return(I.y-m.y)*(y.x-m.x)>(y.y-m.y)*(I.x-m.x)}function _e(m){for(var y=0,I=0,U=m.length,J=U-1,ne=void 0,fe=void 0;I@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,I={};if(m.replace(y,function(J,ne,fe,Fe){var Qe=fe||Fe;return I[ne]=Qe?Qe.toLowerCase():!0,""}),I["max-age"]){var U=parseInt(I["max-age"],10);isNaN(U)?delete I["max-age"]:I["max-age"]=U}return I}var ie=null;function Te(m){if(ie==null){var y=m.navigator?m.navigator.userAgent:null;ie=!!m.safari||!!(y&&(/\b(iPad|iPhone|iPod)\b/.test(y)||y.match("Safari")&&!y.match("Chrome")))}return ie}function Ee(m){try{var y=f[m];return y.setItem("_mapbox_test_",1),y.removeItem("_mapbox_test_"),!0}catch(I){return!1}}function Ae(m){return f.btoa(encodeURIComponent(m).replace(/%([0-9A-F]{2})/g,function(y,I){return String.fromCharCode(+("0x"+I))}))}function ze(m){return decodeURIComponent(f.atob(m).split("").map(function(y){return"%"+("00"+y.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var Ce=f.performance&&f.performance.now?f.performance.now.bind(f.performance):Date.now.bind(Date),me=f.requestAnimationFrame||f.mozRequestAnimationFrame||f.webkitRequestAnimationFrame||f.msRequestAnimationFrame,Re=f.cancelAnimationFrame||f.mozCancelAnimationFrame||f.webkitCancelAnimationFrame||f.msCancelAnimationFrame,ce,Ge,nt={now:Ce,frame:function(y){var I=me(y);return{cancel:function(){return Re(I)}}},getImageData:function(y,I){I===void 0&&(I=0);var U=f.document.createElement("canvas"),J=U.getContext("2d");if(!J)throw new Error("failed to create canvas 2d context");return U.width=y.width,U.height=y.height,J.drawImage(y,0,0,y.width,y.height),J.getImageData(-I,-I,y.width+2*I,y.height+2*I)},resolveURL:function(y){return ce||(ce=f.document.createElement("a")),ce.href=y,ce.href},hardwareConcurrency:f.navigator&&f.navigator.hardwareConcurrency||4,get devicePixelRatio(){return f.devicePixelRatio},get prefersReducedMotion(){return f.matchMedia?(Ge==null&&(Ge=f.matchMedia("(prefers-reduced-motion: reduce)")),Ge.matches):!1}},ct={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},qt={supported:!1,testSupport:Ct},rt,ot=!1,Rt,kt=!1;f.document&&(Rt=f.document.createElement("img"),Rt.onload=function(){rt&&Yt(rt),rt=null,kt=!0},Rt.onerror=function(){ot=!0,rt=null},Rt.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");function Ct(m){ot||!Rt||(kt?Yt(m):rt=m)}function Yt(m){var y=m.createTexture();m.bindTexture(m.TEXTURE_2D,y);try{if(m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,Rt),m.isContextLost())return;qt.supported=!0}catch(I){}m.deleteTexture(y),ot=!0}var xr="01";function er(){for(var m="1",y="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",I="",U=0;U<10;U++)I+=y[Math.floor(Math.random()*62)];var J=12*60*60*1e3,ne=[m,xr,I].join(""),fe=Date.now()+J;return{token:ne,tokenExpiresAt:fe}}var Ke=function(y,I){this._transformRequestFn=y,this._customAccessToken=I,this._createSkuToken()};Ke.prototype._createSkuToken=function(){var y=er();this._skuToken=y.token,this._skuTokenExpiresAt=y.tokenExpiresAt},Ke.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},Ke.prototype.transformRequest=function(y,I){return this._transformRequestFn?this._transformRequestFn(y,I)||{url:y}:{url:y}},Ke.prototype.normalizeStyleURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/styles/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeGlyphsURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/fonts/v1"+U.path,this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSourceURL=function(y,I){if(!xt(y))return y;var U=Ht(y);return U.path="/v4/"+U.authority+".json",U.params.push("secure"),this._makeAPIURL(U,this._customAccessToken||I)},Ke.prototype.normalizeSpriteURL=function(y,I,U,J){var ne=Ht(y);return xt(y)?(ne.path="/styles/v1"+ne.path+"/sprite"+I+U,this._makeAPIURL(ne,this._customAccessToken||J)):(ne.path+=""+I+U,$t(ne))},Ke.prototype.normalizeTileURL=function(y,I){if(this._isSkuTokenExpired()&&this._createSkuToken(),y&&!xt(y))return y;var U=Ht(y),J=/(\.(png|jpg)\d*)(?=$)/,ne=/^.+\/v4\//,fe=nt.devicePixelRatio>=2||I===512?"@2x":"",Fe=qt.supported?".webp":"$1";U.path=U.path.replace(J,""+fe+Fe),U.path=U.path.replace(ne,"/"),U.path="/v4"+U.path;var Qe=this._customAccessToken||Et(U.params)||ct.ACCESS_TOKEN;return ct.REQUIRE_ACCESS_TOKEN&&Qe&&this._skuToken&&U.params.push("sku="+this._skuToken),this._makeAPIURL(U,Qe)},Ke.prototype.canonicalizeTileURL=function(y,I){var U="/v4/",J=/\.[\w]+$/,ne=Ht(y);if(!ne.path.match(/(^\/v4\/)/)||!ne.path.match(J))return y;var fe="mapbox://tiles/";fe+=ne.path.replace(U,"");var Fe=ne.params;return I&&(Fe=Fe.filter(function(Qe){return!Qe.match(/^access_token=/)})),Fe.length&&(fe+="?"+Fe.join("&")),fe},Ke.prototype.canonicalizeTileset=function(y,I){for(var U=I?xt(I):!1,J=[],ne=0,fe=y.tiles||[];ne=0&&y.params.splice(ne,1)}if(J.path!=="/"&&(y.path=""+J.path+y.path),!ct.REQUIRE_ACCESS_TOKEN)return $t(y);if(I=I||ct.ACCESS_TOKEN,!I)throw new Error("An API access token is required to use Mapbox GL. "+U);if(I[0]==="s")throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+U);return y.params=y.params.filter(function(fe){return fe.indexOf("access_token")===-1}),y.params.push("access_token="+I),$t(y)};function xt(m){return m.indexOf("mapbox:")===0}var bt=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function Lt(m){return bt.test(m)}function St(m){return m.indexOf("sku=")>0&&Lt(m)}function Et(m){for(var y=0,I=m;y=1&&f.localStorage.setItem(I,JSON.stringify(this.eventData))}catch(J){re("Unable to write to LocalStorage")}},Br.prototype.processRequests=function(y){},Br.prototype.postEvent=function(y,I,U,J){var ne=this;if(ct.EVENTS_URL){var fe=Ht(ct.EVENTS_URL);fe.params.push("access_token="+(J||ct.ACCESS_TOKEN||""));var Fe={event:this.type,created:new Date(y).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:o,skuId:xr,userId:this.anonId},Qe=I?_(Fe,I):Fe,st={url:$t(fe),headers:{"Content-Type":"text/plain"},body:JSON.stringify([Qe])};this.pendingRequest=Vr(st,function(mt){ne.pendingRequest=null,U(mt),ne.saveEventData(),ne.processRequests(J)})}},Br.prototype.queueRequest=function(y,I){this.queue.push(y),this.processRequests(I)};var Or=function(m){function y(){m.call(this,"map.load"),this.success={},this.skuToken=""}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postMapLoadEvent=function(U,J,ne,fe){this.skuToken=ne,(ct.EVENTS_URL&&fe||ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(Fe){return xt(Fe)||Lt(Fe)}))&&this.queueRequest({id:J,timestamp:Date.now()},fe)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){var ne=this.queue.shift(),fe=ne.id,Fe=ne.timestamp;fe&&this.success[fe]||(this.anonId||this.fetchEventData(),F(this.anonId)||(this.anonId=P()),this.postEvent(Fe,{skuToken:this.skuToken},function(Qe){Qe||fe&&(J.success[fe]=!0)},U))}},y}(Br),Nr=function(m){function y(I){m.call(this,"appUserTurnstile"),this._customAccessToken=I}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.postTurnstileEvent=function(U,J){ct.EVENTS_URL&&ct.ACCESS_TOKEN&&Array.isArray(U)&&U.some(function(ne){return xt(ne)||Lt(ne)})&&this.queueRequest(Date.now(),J)},y.prototype.processRequests=function(U){var J=this;if(!(this.pendingRequest||this.queue.length===0)){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var ne=_r(ct.ACCESS_TOKEN),fe=ne?ne.u:ct.ACCESS_TOKEN,Fe=fe!==this.eventData.tokenU;F(this.anonId)||(this.anonId=P(),Fe=!0);var Qe=this.queue.shift();if(this.eventData.lastSuccess){var st=new Date(this.eventData.lastSuccess),mt=new Date(Qe),Xt=(Qe-this.eventData.lastSuccess)/(24*60*60*1e3);Fe=Fe||Xt>=1||Xt<-1||st.getDate()!==mt.getDate()}else Fe=!0;if(!Fe)return this.processRequests();this.postEvent(Qe,{"enabled.telemetry":!1},function(ur){ur||(J.eventData.lastSuccess=Qe,J.eventData.tokenU=fe)},U)}},y}(Br),ut=new Nr,Ne=ut.postTurnstileEvent.bind(ut),Ye=new Or,Ve=Ye.postMapLoadEvent.bind(Ye),Xe="mapbox-tiles",ht=500,Le=50,xe=1e3*60*7,Se;function lt(){f.caches&&!Se&&(Se=f.caches.open(Xe))}var Gt;function Vt(m,y){if(Gt===void 0)try{new Response(new ReadableStream),Gt=!0}catch(I){Gt=!1}Gt?y(m.body):m.blob().then(y)}function ar(m,y,I){if(lt(),!!Se){var U={status:y.status,statusText:y.statusText,headers:new f.Headers};y.headers.forEach(function(fe,Fe){return U.headers.set(Fe,fe)});var J=ge(y.headers.get("Cache-Control")||"");if(!J["no-store"]){J["max-age"]&&U.headers.set("Expires",new Date(I+J["max-age"]*1e3).toUTCString());var ne=new Date(U.headers.get("Expires")).getTime()-I;neDate.now()&&!I["no-cache"]}var ri=1/0;function bi(m){ri++,ri>Le&&(m.getActor().send("enforceCacheSizeLimit",ht),ri=0)}function nn(m){lt(),Se&&Se.then(function(y){y.keys().then(function(I){for(var U=0;U=200&&I.status<300||I.status===0)&&I.response!==null){var J=I.response;if(m.type==="json")try{J=JSON.parse(I.response)}catch(ne){return y(ne)}y(null,J,I.getResponseHeader("Cache-Control"),I.getResponseHeader("Expires"))}else y(new Wn(I.statusText,I.status,m.url))},I.send(m.body),{cancel:function(){return I.abort()}}}var yr=function(m,y){if(!ft(m.url)){if(f.fetch&&f.Request&&f.AbortController&&f.Request.prototype.hasOwnProperty("signal"))return jt(m,y);if(ke()&&self.worker&&self.worker.actor){var I=!0;return self.worker.actor.send("getResource",m,y,void 0,I)}}return Zt(m,y)},Fr=function(m,y){return yr(_(m,{type:"json"}),y)},Zr=function(m,y){return yr(_(m,{type:"arrayBuffer"}),y)},Vr=function(m,y){return yr(_(m,{method:"POST"}),y)};function gi(m){var y=f.document.createElement("a");return y.href=m,y.protocol===f.document.location.protocol&&y.host===f.document.location.host}var Si="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function Mi(m,y,I,U){var J=new f.Image,ne=f.URL;J.onload=function(){y(null,J),ne.revokeObjectURL(J.src),J.onload=null,f.requestAnimationFrame(function(){J.src=Si})},J.onerror=function(){return y(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var fe=new f.Blob([new Uint8Array(m)],{type:"image/png"});J.cacheControl=I,J.expires=U,J.src=m.byteLength?ne.createObjectURL(fe):Si}function Pi(m,y){var I=new f.Blob([new Uint8Array(m)],{type:"image/png"});f.createImageBitmap(I).then(function(U){y(null,U)}).catch(function(U){y(new Error("Could not load image because of "+U.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}var Gi,Ki,ka=function(){Gi=[],Ki=0};ka();var jn=function(m,y){if(qt.supported&&(m.headers||(m.headers={}),m.headers.accept="image/webp,*/*"),Ki>=ct.MAX_PARALLEL_IMAGE_REQUESTS){var I={requestParameters:m,callback:y,cancelled:!1,cancel:function(){this.cancelled=!0}};return Gi.push(I),I}Ki++;var U=!1,J=function(){if(!U)for(U=!0,Ki--;Gi.length&&Ki0||this._oneTimeListeners&&this._oneTimeListeners[y]&&this._oneTimeListeners[y].length>0||this._eventedParent&&this._eventedParent.listens(y)},Sn.prototype.setEventedParent=function(y,I){return this._eventedParent=y,this._eventedParentData=I,this};var Ha=8,oo={version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},xn={"*":{type:"source"}},_t=["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],br={type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},Hr={type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},ti={type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},zi={type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},Yi={type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},an={type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},hi={id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},Ji=["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],ua={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Fn={"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Sa={"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},go={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Oo={"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ho={"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Mo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},xo={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},zs={type:"array",value:"*"},ks={type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},Zs={type:"enum",values:{Point:{},LineString:{},Polygon:{}}},Xs={type:"array",minimum:0,maximum:24,value:["number","color"],length:2},wl={type:"array",value:"*",minimum:1},os={anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},cl=["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],Cs={"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},ml={"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},Ys={"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},Hs={"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Eo={"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},fs={"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Ql={"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Hu={"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},fc={duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},ms={"*":{type:"string"}},on={$version:Ha,$root:oo,sources:xn,source:_t,source_vector:br,source_raster:Hr,source_raster_dem:ti,source_geojson:zi,source_video:Yi,source_image:an,layer:hi,layout:Ji,layout_background:ua,layout_fill:Fn,layout_circle:Sa,layout_heatmap:go,"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:Oo,layout_symbol:ho,layout_raster:Mo,layout_hillshade:xo,filter:zs,filter_operator:ks,geometry_type:Zs,function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:Xs,expression:wl,light:os,paint:cl,paint_fill:Cs,"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:ml,paint_circle:Ys,paint_heatmap:Hs,paint_symbol:Eo,paint_raster:fs,paint_hillshade:Ql,paint_background:Hu,transition:fc,"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:ms},fa=function(y,I,U,J){this.message=(y?y+": ":"")+U,J&&(this.identifier=J),I!=null&&I.__line__&&(this.line=I.__line__)};function Qu(m){var y=m.key,I=m.value;return I?[new fa(y,I,"constants have been deprecated as of v8")]:[]}function Rl(m){for(var y=[],I=arguments.length-1;I-- >0;)y[I]=arguments[I+1];for(var U=0,J=y;U":m.itemType.kind==="value"?"array":"array<"+y+">"}else return m.kind}var mu=[Ec,Zn,ko,Co,Tl,Al,uf,eu(So),Hc];function kc(m,y){if(y.kind==="error")return null;if(m.kind==="array"){if(y.kind==="array"&&(y.N===0&&y.itemType.kind==="value"||!kc(m.itemType,y.itemType))&&(typeof m.N!="number"||m.N===y.N))return null}else{if(m.kind===y.kind)return null;if(m.kind==="value")for(var I=0,U=mu;I255?255:st}function J(st){return st<0?0:st>1?1:st}function ne(st){return st[st.length-1]==="%"?U(parseFloat(st)/100*255):U(parseInt(st))}function fe(st){return st[st.length-1]==="%"?J(parseFloat(st)/100):J(parseFloat(st))}function Fe(st,mt,Xt){return Xt<0?Xt+=1:Xt>1&&(Xt-=1),Xt*6<1?st+(mt-st)*Xt*6:Xt*2<1?mt:Xt*3<2?st+(mt-st)*(2/3-Xt)*6:st}function Qe(st){var mt=st.replace(/ /g,"").toLowerCase();if(mt in I)return I[mt].slice();if(mt[0]==="#"){if(mt.length===4){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=4095?[(Xt&3840)>>4|(Xt&3840)>>8,Xt&240|(Xt&240)>>4,Xt&15|(Xt&15)<<4,1]:null}else if(mt.length===7){var Xt=parseInt(mt.substr(1),16);return Xt>=0&&Xt<=16777215?[(Xt&16711680)>>16,(Xt&65280)>>8,Xt&255,1]:null}return null}var ur=mt.indexOf("("),nr=mt.indexOf(")");if(ur!==-1&&nr+1===mt.length){var Lr=mt.substr(0,ur),Yr=mt.substr(ur+1,nr-(ur+1)).split(","),_i=1;switch(Lr){case"rgba":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"rgb":return Yr.length!==3?null:[ne(Yr[0]),ne(Yr[1]),ne(Yr[2]),_i];case"hsla":if(Yr.length!==4)return null;_i=fe(Yr.pop());case"hsl":if(Yr.length!==3)return null;var si=(parseFloat(Yr[0])%360+360)%360/360,Hi=fe(Yr[1]),Ei=fe(Yr[2]),Vi=Ei<=.5?Ei*(Hi+1):Ei+Hi-Ei*Hi,en=Ei*2-Vi;return[U(Fe(en,Vi,si+1/3)*255),U(Fe(en,Vi,si)*255),U(Fe(en,Vi,si-1/3)*255),_i];default:return null}}return null}try{y.parseCSSColor=Qe}catch(st){}}),Bf=vd.parseCSSColor,ss=function(y,I,U,J){J===void 0&&(J=1),this.r=y,this.g=I,this.b=U,this.a=J};ss.parse=function(y){if(y){if(y instanceof ss)return y;if(typeof y=="string"){var I=Bf(y);if(I)return new ss(I[0]/255*I[3],I[1]/255*I[3],I[2]/255*I[3],I[3])}}},ss.prototype.toString=function(){var y=this.toArray(),I=y[0],U=y[1],J=y[2],ne=y[3];return"rgba("+Math.round(I)+","+Math.round(U)+","+Math.round(J)+","+ne+")"},ss.prototype.toArray=function(){var y=this,I=y.r,U=y.g,J=y.b,ne=y.a;return ne===0?[0,0,0,0]:[I*255/ne,U*255/ne,J*255/ne,ne]},ss.black=new ss(0,0,0,1),ss.white=new ss(1,1,1,1),ss.transparent=new ss(0,0,0,0),ss.red=new ss(1,0,0,1);var ff=function(y,I,U){y?this.sensitivity=I?"variant":"case":this.sensitivity=I?"accent":"base",this.locale=U,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};ff.prototype.compare=function(y,I){return this.collator.compare(y,I)},ff.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var ih=function(y,I,U,J,ne){this.text=y,this.image=I,this.scale=U,this.fontStack=J,this.textColor=ne},Vl=function(y){this.sections=y};Vl.fromString=function(y){return new Vl([new ih(y,null,null,null,null)])},Vl.prototype.isEmpty=function(){return this.sections.length===0?!0:!this.sections.some(function(y){return y.text.length!==0||y.image&&y.image.name.length!==0})},Vl.factory=function(y){return y instanceof Vl?y:Vl.fromString(y)},Vl.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(y){return y.text}).join("")},Vl.prototype.serialize=function(){for(var y=["format"],I=0,U=this.sections;I=0&&m<=255&&typeof y=="number"&&y>=0&&y<=255&&typeof I=="number"&&I>=0&&I<=255)){var J=typeof U=="number"?[m,y,I,U]:[m,y,I];return"Invalid rgba value ["+J.join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}return typeof U=="undefined"||typeof U=="number"&&U>=0&&U<=1?null:"Invalid rgba value ["+[m,y,I,U].join(", ")+"]: 'a' must be between 0 and 1."}function Cc(m){if(m===null)return!0;if(typeof m=="string")return!0;if(typeof m=="boolean")return!0;if(typeof m=="number")return!0;if(m instanceof ss)return!0;if(m instanceof ff)return!0;if(m instanceof Vl)return!0;if(m instanceof Js)return!0;if(Array.isArray(m)){for(var y=0,I=m;y2){var Fe=y[1];if(typeof Fe!="string"||!(Fe in dc)||Fe==="object")return I.error('The item type argument of "array" must be one of string, number, boolean',1);fe=dc[Fe],U++}else fe=So;var Qe;if(y.length>3){if(y[2]!==null&&(typeof y[2]!="number"||y[2]<0||y[2]!==Math.floor(y[2])))return I.error('The length argument to "array" must be a positive integer literal',2);Qe=y[2],U++}J=eu(fe,Qe)}else J=dc[ne];for(var st=[];U1)&&I.push(J)}}return I.concat(this.args.map(function(ne){return ne.serialize()}))};var ec=function(y){this.type=Al,this.sections=y};ec.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[1];if(!Array.isArray(U)&&typeof U=="object")return I.error("First argument must be an image or text section.");for(var J=[],ne=!1,fe=1;fe<=y.length-1;++fe){var Fe=y[fe];if(ne&&typeof Fe=="object"&&!Array.isArray(Fe)){ne=!1;var Qe=null;if(Fe["font-scale"]&&(Qe=I.parse(Fe["font-scale"],1,Zn),!Qe))return null;var st=null;if(Fe["text-font"]&&(st=I.parse(Fe["text-font"],1,eu(ko)),!st))return null;var mt=null;if(Fe["text-color"]&&(mt=I.parse(Fe["text-color"],1,Tl),!mt))return null;var Xt=J[J.length-1];Xt.scale=Qe,Xt.font=st,Xt.textColor=mt}else{var ur=I.parse(y[fe],1,So);if(!ur)return null;var nr=ur.type.kind;if(nr!=="string"&&nr!=="value"&&nr!=="null"&&nr!=="resolvedImage")return I.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ne=!0,J.push({content:ur,scale:null,font:null,textColor:null})}}return new ec(J)},ec.prototype.evaluate=function(y){var I=function(U){var J=U.content.evaluate(y);return ws(J)===Hc?new ih("",J,null,null,null):new ih($s(J),null,U.scale?U.scale.evaluate(y):null,U.font?U.font.evaluate(y).join(","):null,U.textColor?U.textColor.evaluate(y):null)};return new Vl(this.sections.map(I))},ec.prototype.eachChild=function(y){for(var I=0,U=this.sections;I-1),U},Ps.prototype.eachChild=function(y){y(this.input)},Ps.prototype.outputDefined=function(){return!1},Ps.prototype.serialize=function(){return["image",this.input.serialize()]};var ov={"to-boolean":Co,"to-color":Tl,"to-number":Zn,"to-string":ko},wo=function(y,I){this.type=y,this.args=I};wo.parse=function(y,I){if(y.length<2)return I.error("Expected at least one argument.");var U=y[0];if((U==="to-boolean"||U==="to-string")&&y.length!==2)return I.error("Expected one argument.");for(var J=ov[U],ne=[],fe=1;fe4?U="Invalid rbga value "+JSON.stringify(I)+": expected an array containing either three or four numeric values.":U=hc(I[0],I[1],I[2],I[3]),!U))return new ss(I[0]/255,I[1]/255,I[2]/255,I[3])}throw new Ms(U||"Could not parse color from value '"+(typeof I=="string"?I:String(JSON.stringify(I)))+"'")}else if(this.type.kind==="number"){for(var Qe=null,st=0,mt=this.args;st=y[2]||m[1]<=y[1]||m[3]>=y[3])}function Yh(m,y){var I=jc(m[0]),U=kf(m[1]),J=Math.pow(2,y.z);return[Math.round(I*J*uu),Math.round(U*J*uu)]}function Eh(m,y,I){var U=m[0]-y[0],J=m[1]-y[1],ne=m[0]-I[0],fe=m[1]-I[1];return U*fe-ne*J===0&&U*ne<=0&&J*fe<=0}function nh(m,y,I){return y[1]>m[1]!=I[1]>m[1]&&m[0]<(I[0]-y[0])*(m[1]-y[1])/(I[1]-y[1])+y[0]}function hf(m,y){for(var I=!1,U=0,J=y.length;U0&&Xt<0||mt<0&&Xt>0}function ah(m,y,I,U){var J=[y[0]-m[0],y[1]-m[1]],ne=[U[0]-I[0],U[1]-I[1]];return Kh(ne,J)===0?!1:!!(rc(m,y,I,U)&&rc(I,U,m,y))}function Wc(m,y,I){for(var U=0,J=I;UI[2]){var J=U*.5,ne=m[0]-I[0]>J?-U:I[0]-m[0]>J?U:0;ne===0&&(ne=m[0]-I[2]>J?-U:I[2]-m[0]>J?U:0),m[0]+=ne}Mh(y,m)}function Ch(m){m[0]=m[1]=1/0,m[2]=m[3]=-1/0}function Bd(m,y,I,U){for(var J=Math.pow(2,U.z)*uu,ne=[U.x*uu,U.y*uu],fe=[],Fe=0,Qe=m;Fe=0)return!1;var I=!0;return m.eachChild(function(U){I&&!Pu(U,y)&&(I=!1)}),I}var Lc=function(y,I){this.type=I.type,this.name=y,this.boundExpression=I};Lc.parse=function(y,I){if(y.length!==2||typeof y[1]!="string")return I.error("'var' expression requires exactly one string literal argument.");var U=y[1];return I.scope.has(U)?new Lc(U,I.scope.get(U)):I.error('Unknown variable "'+U+'". Make sure "'+U+'" has been bound in an enclosing "let" expression before using it.',1)},Lc.prototype.evaluate=function(y){return this.boundExpression.evaluate(y)},Lc.prototype.eachChild=function(){},Lc.prototype.outputDefined=function(){return!1},Lc.prototype.serialize=function(){return["var",this.name]};var fl=function(y,I,U,J,ne){I===void 0&&(I=[]),J===void 0&&(J=new Xl),ne===void 0&&(ne=[]),this.registry=y,this.path=I,this.key=I.map(function(fe){return"["+fe+"]"}).join(""),this.scope=J,this.errors=ne,this.expectedType=U};fl.prototype.parse=function(y,I,U,J,ne){return ne===void 0&&(ne={}),I?this.concat(I,U,J)._parse(y,ne):this._parse(y,ne)},fl.prototype._parse=function(y,I){(y===null||typeof y=="string"||typeof y=="boolean"||typeof y=="number")&&(y=["literal",y]);function U(mt,Xt,ur){return ur==="assert"?new Sl(Xt,[mt]):ur==="coerce"?new wo(Xt,[mt]):mt}if(Array.isArray(y)){if(y.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var J=y[0];if(typeof J!="string")return this.error("Expression name must be a string, but found "+typeof J+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var ne=this.registry[J];if(ne){var fe=ne.parse(y,this);if(!fe)return null;if(this.expectedType){var Fe=this.expectedType,Qe=fe.type;if((Fe.kind==="string"||Fe.kind==="number"||Fe.kind==="boolean"||Fe.kind==="object"||Fe.kind==="array")&&Qe.kind==="value")fe=U(fe,Fe,I.typeAnnotation||"assert");else if((Fe.kind==="color"||Fe.kind==="formatted"||Fe.kind==="resolvedImage")&&(Qe.kind==="value"||Qe.kind==="string"))fe=U(fe,Fe,I.typeAnnotation||"coerce");else if(this.checkSubtype(Fe,Qe))return null}if(!(fe instanceof hs)&&fe.type.kind!=="resolvedImage"&&Xc(fe)){var st=new $o;try{fe=new hs(fe.type,fe.evaluate(st))}catch(mt){return this.error(mt.message),null}}return fe}return this.error('Unknown expression "'+J+'". If you wanted a literal array, use ["literal", [...]].',0)}else return typeof y=="undefined"?this.error("'undefined' value invalid. Use null instead."):typeof y=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof y+" instead.")},fl.prototype.concat=function(y,I,U){var J=typeof y=="number"?this.path.concat(y):this.path,ne=U?this.scope.concat(U):this.scope;return new fl(this.registry,J,I||null,ne,this.errors)},fl.prototype.error=function(y){for(var I=[],U=arguments.length-1;U-- >0;)I[U]=arguments[U+1];var J=""+this.key+I.map(function(ne){return"["+ne+"]"}).join("");this.errors.push(new Ks(J,y))},fl.prototype.checkSubtype=function(y,I){var U=kc(y,I);return U&&this.error(U),U};function Xc(m){if(m instanceof Lc)return Xc(m.boundExpression);if(m instanceof Ja&&m.name==="error")return!1;if(m instanceof tc)return!1;if(m instanceof Lu)return!1;var y=m instanceof wo||m instanceof Sl,I=!0;return m.eachChild(function(U){y?I=I&&Xc(U):I=I&&U instanceof hs}),I?$h(m)&&Pu(m,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"]):!1}function ic(m,y){for(var I=m.length-1,U=0,J=I,ne=0,fe,Fe;U<=J;)if(ne=Math.floor((U+J)/2),fe=m[ne],Fe=m[ne+1],fe<=y){if(ne===I||yy)J=ne-1;else throw new Ms("Input is not a number.");return 0}var yu=function(y,I,U){this.type=y,this.input=I,this.labels=[],this.outputs=[];for(var J=0,ne=U;J=Fe)return I.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',st);var Xt=I.parse(Qe,mt,ne);if(!Xt)return null;ne=ne||Xt.type,J.push([Fe,Xt])}return new yu(ne,U,J)},yu.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J);return U[fe].evaluate(y)},yu.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I0&&y.push(this.labels[I]),y.push(this.outputs[I].serialize());return y};function Qs(m,y,I){return m*(1-I)+y*I}function Qh(m,y,I){return new ss(Qs(m.r,y.r,I),Qs(m.g,y.g,I),Qs(m.b,y.b,I),Qs(m.a,y.a,I))}function gd(m,y,I){return m.map(function(U,J){return Qs(U,y[J],I)})}var Gu=Object.freeze({__proto__:null,number:Qs,color:Qh,array:gd}),Pc=.95047,vc=1,sv=1.08883,Lf=4/29,Uf=6/29,Iu=3*Uf*Uf,oh=Uf*Uf*Uf,ru=Math.PI/180,vf=180/Math.PI;function md(m){return m>oh?Math.pow(m,1/3):m/Iu+Lf}function sh(m){return m>Uf?m*m*m:Iu*(m-Lf)}function Fs(m){return 255*(m<=.0031308?12.92*m:1.055*Math.pow(m,1/2.4)-.055)}function _u(m){return m/=255,m<=.04045?m/12.92:Math.pow((m+.055)/1.055,2.4)}function xu(m){var y=_u(m.r),I=_u(m.g),U=_u(m.b),J=md((.4124564*y+.3575761*I+.1804375*U)/Pc),ne=md((.2126729*y+.7151522*I+.072175*U)/vc),fe=md((.0193339*y+.119192*I+.9503041*U)/sv);return{l:116*ne-16,a:500*(J-ne),b:200*(ne-fe),alpha:m.a}}function Lh(m){var y=(m.l+16)/116,I=isNaN(m.a)?y:y+m.a/500,U=isNaN(m.b)?y:y-m.b/200;return y=vc*sh(y),I=Pc*sh(I),U=sv*sh(U),new ss(Fs(3.2404542*I-1.5371385*y-.4985314*U),Fs(-.969266*I+1.8760108*y+.041556*U),Fs(.0556434*I-.2040259*y+1.0572252*U),m.alpha)}function Is(m,y,I){return{l:Qs(m.l,y.l,I),a:Qs(m.a,y.a,I),b:Qs(m.b,y.b,I),alpha:Qs(m.alpha,y.alpha,I)}}function Pf(m){var y=xu(m),I=y.l,U=y.a,J=y.b,ne=Math.atan2(J,U)*vf;return{h:ne<0?ne+360:ne,c:Math.sqrt(U*U+J*J),l:I,alpha:m.a}}function Ic(m){var y=m.h*ru,I=m.c,U=m.l;return Lh({l:U,a:Math.cos(y)*I,b:Math.sin(y)*I,alpha:m.alpha})}function ju(m,y,I){var U=y-m;return m+I*(U>180||U<-180?U-360*Math.round(U/360):U)}function Vf(m,y,I){return{h:ju(m.h,y.h,I),c:Qs(m.c,y.c,I),l:Qs(m.l,y.l,I),alpha:Qs(m.alpha,y.alpha,I)}}var pc={forward:xu,reverse:Lh,interpolate:Is},pf={forward:Pf,reverse:Ic,interpolate:Vf},Ph=Object.freeze({__proto__:null,lab:pc,hcl:pf}),Dl=function(y,I,U,J,ne){this.type=y,this.operator=I,this.interpolation=U,this.input=J,this.labels=[],this.outputs=[];for(var fe=0,Fe=ne;fe1}))return I.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);J={name:"cubic-bezier",controlPoints:Qe}}else return I.error("Unknown interpolation type "+String(J[0]),1,0);if(y.length-1<4)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if((y.length-1)%2!==0)return I.error("Expected an even number of arguments.");if(ne=I.parse(ne,2,Zn),!ne)return null;var st=[],mt=null;U==="interpolate-hcl"||U==="interpolate-lab"?mt=Tl:I.expectedType&&I.expectedType.kind!=="value"&&(mt=I.expectedType);for(var Xt=0;Xt=ur)return I.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Lr);var _i=I.parse(nr,Yr,mt);if(!_i)return null;mt=mt||_i.type,st.push([ur,_i])}return mt.kind!=="number"&&mt.kind!=="color"&&!(mt.kind==="array"&&mt.itemType.kind==="number"&&typeof mt.N=="number")?I.error("Type "+Ls(mt)+" is not interpolatable."):new Dl(mt,U,J,ne,st)},Dl.prototype.evaluate=function(y){var I=this.labels,U=this.outputs;if(I.length===1)return U[0].evaluate(y);var J=this.input.evaluate(y);if(J<=I[0])return U[0].evaluate(y);var ne=I.length;if(J>=I[ne-1])return U[ne-1].evaluate(y);var fe=ic(I,J),Fe=I[fe],Qe=I[fe+1],st=Dl.interpolationFactor(this.interpolation,J,Fe,Qe),mt=U[fe].evaluate(y),Xt=U[fe+1].evaluate(y);return this.operator==="interpolate"?Gu[this.type.kind.toLowerCase()](mt,Xt,st):this.operator==="interpolate-hcl"?pf.reverse(pf.interpolate(pf.forward(mt),pf.forward(Xt),st)):pc.reverse(pc.interpolate(pc.forward(mt),pc.forward(Xt),st))},Dl.prototype.eachChild=function(y){y(this.input);for(var I=0,U=this.outputs;I=U.length)throw new Ms("Array index out of bounds: "+I+" > "+(U.length-1)+".");if(I!==Math.floor(I))throw new Ms("Array index must be an integer, but found "+I+" instead.");return U[I]},gc.prototype.eachChild=function(y){y(this.index),y(this.input)},gc.prototype.outputDefined=function(){return!1},gc.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var hl=function(y,I){this.type=Co,this.needle=y,this.haystack=I};hl.parse=function(y,I){if(y.length!==3)return I.error("Expected 2 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);return!U||!J?null:Of(U.type,[Co,ko,Zn,Ec,So])?new hl(U,J):I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead")},hl.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!U)return!1;if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");return U.indexOf(I)>=0},hl.prototype.eachChild=function(y){y(this.needle),y(this.haystack)},hl.prototype.outputDefined=function(){return!0},hl.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var iu=function(y,I,U){this.type=Zn,this.needle=y,this.haystack=I,this.fromIndex=U};iu.parse=function(y,I){if(y.length<=2||y.length>=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,So);if(!U||!J)return null;if(!Of(U.type,[Co,ko,Zn,Ec,So]))return I.error("Expected first argument to be of type boolean, string, number or null, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new iu(U,J,ne):null}else return new iu(U,J)},iu.prototype.evaluate=function(y){var I=this.needle.evaluate(y),U=this.haystack.evaluate(y);if(!Gc(I,["boolean","string","number","null"]))throw new Ms("Expected first argument to be of type boolean, string, number or null, but found "+Ls(ws(I))+" instead.");if(!Gc(U,["string","array"]))throw new Ms("Expected second argument to be of type array or string, but found "+Ls(ws(U))+" instead.");if(this.fromIndex){var J=this.fromIndex.evaluate(y);return U.indexOf(I,J)}return U.indexOf(I)},iu.prototype.eachChild=function(y){y(this.needle),y(this.haystack),this.fromIndex&&y(this.fromIndex)},iu.prototype.outputDefined=function(){return!1},iu.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var y=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),y]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var mc=function(y,I,U,J,ne,fe){this.inputType=y,this.type=I,this.input=U,this.cases=J,this.outputs=ne,this.otherwise=fe};mc.parse=function(y,I){if(y.length<5)return I.error("Expected at least 4 arguments, but found only "+(y.length-1)+".");if(y.length%2!==1)return I.error("Expected an even number of arguments.");var U,J;I.expectedType&&I.expectedType.kind!=="value"&&(J=I.expectedType);for(var ne={},fe=[],Fe=2;FeNumber.MAX_SAFE_INTEGER)return mt.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof nr=="number"&&Math.floor(nr)!==nr)return mt.error("Numeric branch labels must be integer values.");if(!U)U=ws(nr);else if(mt.checkSubtype(U,ws(nr)))return null;if(typeof ne[String(nr)]!="undefined")return mt.error("Branch labels must be unique.");ne[String(nr)]=fe.length}var Lr=I.parse(st,Fe,J);if(!Lr)return null;J=J||Lr.type,fe.push(Lr)}var Yr=I.parse(y[1],1,So);if(!Yr)return null;var _i=I.parse(y[y.length-1],y.length-1,J);return!_i||Yr.type.kind!=="value"&&I.concat(1).checkSubtype(U,Yr.type)?null:new mc(U,J,Yr,ne,fe,_i)},mc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=ws(I)===this.inputType&&this.outputs[this.cases[I]]||this.otherwise;return U.evaluate(y)},mc.prototype.eachChild=function(y){y(this.input),this.outputs.forEach(y),y(this.otherwise)},mc.prototype.outputDefined=function(){return this.outputs.every(function(y){return y.outputDefined()})&&this.otherwise.outputDefined()},mc.prototype.serialize=function(){for(var y=this,I=["match",this.input.serialize()],U=Object.keys(this.cases).sort(),J=[],ne={},fe=0,Fe=U;fe=5)return I.error("Expected 3 or 4 arguments, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1,So),J=I.parse(y[2],2,Zn);if(!U||!J)return null;if(!Of(U.type,[eu(So),ko,So]))return I.error("Expected first argument to be of type array or string, but found "+Ls(U.type)+" instead");if(y.length===4){var ne=I.parse(y[3],3,Zn);return ne?new nc(U.type,U,J,ne):null}else return new nc(U.type,U,J)},nc.prototype.evaluate=function(y){var I=this.input.evaluate(y),U=this.beginIndex.evaluate(y);if(!Gc(I,["string","array"]))throw new Ms("Expected first argument to be of type array or string, but found "+Ls(ws(I))+" instead.");if(this.endIndex){var J=this.endIndex.evaluate(y);return I.slice(U,J)}return I.slice(U)},nc.prototype.eachChild=function(y){y(this.input),y(this.beginIndex),this.endIndex&&y(this.endIndex)},nc.prototype.outputDefined=function(){return!1},nc.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var y=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),y]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};function gf(m,y){return m==="=="||m==="!="?y.kind==="boolean"||y.kind==="string"||y.kind==="number"||y.kind==="null"||y.kind==="value":y.kind==="string"||y.kind==="number"||y.kind==="value"}function gt(m,y,I){return y===I}function Bt(m,y,I){return y!==I}function wr(m,y,I){return yI}function Ur(m,y,I){return y<=I}function fi(m,y,I){return y>=I}function xi(m,y,I,U){return U.compare(y,I)===0}function Fi(m,y,I,U){return!xi(m,y,I,U)}function Xi(m,y,I,U){return U.compare(y,I)<0}function hn(m,y,I,U){return U.compare(y,I)>0}function Ti(m,y,I,U){return U.compare(y,I)<=0}function qi(m,y,I,U){return U.compare(y,I)>=0}function Ii(m,y,I){var U=m!=="=="&&m!=="!=";return function(){function J(ne,fe,Fe){this.type=Co,this.lhs=ne,this.rhs=fe,this.collator=Fe,this.hasUntypedArgument=ne.type.kind==="value"||fe.type.kind==="value"}return J.parse=function(fe,Fe){if(fe.length!==3&&fe.length!==4)return Fe.error("Expected two or three arguments.");var Qe=fe[0],st=Fe.parse(fe[1],1,So);if(!st)return null;if(!gf(Qe,st.type))return Fe.concat(1).error('"'+Qe+`" comparisons are not supported for type '`+Ls(st.type)+"'.");var mt=Fe.parse(fe[2],2,So);if(!mt)return null;if(!gf(Qe,mt.type))return Fe.concat(2).error('"'+Qe+`" comparisons are not supported for type '`+Ls(mt.type)+"'.");if(st.type.kind!==mt.type.kind&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot compare types '"+Ls(st.type)+"' and '"+Ls(mt.type)+"'.");U&&(st.type.kind==="value"&&mt.type.kind!=="value"?st=new Sl(mt.type,[st]):st.type.kind!=="value"&&mt.type.kind==="value"&&(mt=new Sl(st.type,[mt])));var Xt=null;if(fe.length===4){if(st.type.kind!=="string"&&mt.type.kind!=="string"&&st.type.kind!=="value"&&mt.type.kind!=="value")return Fe.error("Cannot use collator to compare non-string types.");if(Xt=Fe.parse(fe[3],3,rh),!Xt)return null}return new J(st,mt,Xt)},J.prototype.evaluate=function(fe){var Fe=this.lhs.evaluate(fe),Qe=this.rhs.evaluate(fe);if(U&&this.hasUntypedArgument){var st=ws(Fe),mt=ws(Qe);if(st.kind!==mt.kind||!(st.kind==="string"||st.kind==="number"))throw new Ms('Expected arguments for "'+m+'" to be (string, string) or (number, number), but found ('+st.kind+", "+mt.kind+") instead.")}if(this.collator&&!U&&this.hasUntypedArgument){var Xt=ws(Fe),ur=ws(Qe);if(Xt.kind!=="string"||ur.kind!=="string")return y(fe,Fe,Qe)}return this.collator?I(fe,Fe,Qe,this.collator.evaluate(fe)):y(fe,Fe,Qe)},J.prototype.eachChild=function(fe){fe(this.lhs),fe(this.rhs),this.collator&&fe(this.collator)},J.prototype.outputDefined=function(){return!0},J.prototype.serialize=function(){var fe=[m];return this.eachChild(function(Fe){fe.push(Fe.serialize())}),fe},J}()}var mi=Ii("==",gt,xi),Pn=Ii("!=",Bt,Fi),Ma=Ii("<",wr,Xi),Ta=Ii(">",vr,hn),Ea=Ii("<=",Ur,Ti),qa=Ii(">=",fi,qi),Cn=function(y,I,U,J,ne){this.type=ko,this.number=y,this.locale=I,this.currency=U,this.minFractionDigits=J,this.maxFractionDigits=ne};Cn.parse=function(y,I){if(y.length!==3)return I.error("Expected two arguments.");var U=I.parse(y[1],1,Zn);if(!U)return null;var J=y[2];if(typeof J!="object"||Array.isArray(J))return I.error("NumberFormat options argument must be an object.");var ne=null;if(J.locale&&(ne=I.parse(J.locale,1,ko),!ne))return null;var fe=null;if(J.currency&&(fe=I.parse(J.currency,1,ko),!fe))return null;var Fe=null;if(J["min-fraction-digits"]&&(Fe=I.parse(J["min-fraction-digits"],1,Zn),!Fe))return null;var Qe=null;return J["max-fraction-digits"]&&(Qe=I.parse(J["max-fraction-digits"],1,Zn),!Qe)?null:new Cn(U,ne,fe,Fe,Qe)},Cn.prototype.evaluate=function(y){return new Intl.NumberFormat(this.locale?this.locale.evaluate(y):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(y):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(y):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(y):void 0}).format(this.number.evaluate(y))},Cn.prototype.eachChild=function(y){y(this.number),this.locale&&y(this.locale),this.currency&&y(this.currency),this.minFractionDigits&&y(this.minFractionDigits),this.maxFractionDigits&&y(this.maxFractionDigits)},Cn.prototype.outputDefined=function(){return!1},Cn.prototype.serialize=function(){var y={};return this.locale&&(y.locale=this.locale.serialize()),this.currency&&(y.currency=this.currency.serialize()),this.minFractionDigits&&(y["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(y["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),y]};var sn=function(y){this.type=Zn,this.input=y};sn.parse=function(y,I){if(y.length!==2)return I.error("Expected 1 argument, but found "+(y.length-1)+" instead.");var U=I.parse(y[1],1);return U?U.type.kind!=="array"&&U.type.kind!=="string"&&U.type.kind!=="value"?I.error("Expected argument of type string or array, but found "+Ls(U.type)+" instead."):new sn(U):null},sn.prototype.evaluate=function(y){var I=this.input.evaluate(y);if(typeof I=="string")return I.length;if(Array.isArray(I))return I.length;throw new Ms("Expected value to be of type string or array, but found "+Ls(ws(I))+" instead.")},sn.prototype.eachChild=function(y){y(this.input)},sn.prototype.outputDefined=function(){return!1},sn.prototype.serialize=function(){var y=["length"];return this.eachChild(function(I){y.push(I.serialize())}),y};var Ua={"==":mi,"!=":Pn,">":Ta,"<":Ma,">=":qa,"<=":Ea,array:Sl,at:gc,boolean:Sl,case:Yc,coalesce:Wu,collator:tc,format:ec,image:Ps,in:hl,"index-of":iu,interpolate:Dl,"interpolate-hcl":Dl,"interpolate-lab":Dl,length:sn,let:Rc,literal:hs,match:mc,number:Sl,"number-format":Cn,object:Sl,slice:nc,step:yu,string:Sl,"to-boolean":wo,"to-color":wo,"to-number":wo,"to-string":wo,var:Lc,within:Lu};function mo(m,y){var I=y[0],U=y[1],J=y[2],ne=y[3];I=I.evaluate(m),U=U.evaluate(m),J=J.evaluate(m);var fe=ne?ne.evaluate(m):1,Fe=hc(I,U,J,fe);if(Fe)throw new Ms(Fe);return new ss(I/255*fe,U/255*fe,J/255*fe,fe)}function Xo(m,y){return m in y}function Ts(m,y){var I=y[m];return typeof I=="undefined"?null:I}function Qo(m,y,I,U){for(;I<=U;){var J=I+U>>1;if(y[J]===m)return!0;y[J]>m?U=J-1:I=J+1}return!1}function ys(m){return{type:m}}Ja.register(Ua,{error:[cf,[ko],function(m,y){var I=y[0];throw new Ms(I.evaluate(m))}],typeof:[ko,[So],function(m,y){var I=y[0];return Ls(ws(I.evaluate(m)))}],"to-rgba":[eu(Zn,4),[Tl],function(m,y){var I=y[0];return I.evaluate(m).toArray()}],rgb:[Tl,[Zn,Zn,Zn],mo],rgba:[Tl,[Zn,Zn,Zn,Zn],mo],has:{type:Co,overloads:[[[ko],function(m,y){var I=y[0];return Xo(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Xo(I.evaluate(m),U.evaluate(m))}]]},get:{type:So,overloads:[[[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.properties())}],[[ko,uf],function(m,y){var I=y[0],U=y[1];return Ts(I.evaluate(m),U.evaluate(m))}]]},"feature-state":[So,[ko],function(m,y){var I=y[0];return Ts(I.evaluate(m),m.featureState||{})}],properties:[uf,[],function(m){return m.properties()}],"geometry-type":[ko,[],function(m){return m.geometryType()}],id:[So,[],function(m){return m.id()}],zoom:[Zn,[],function(m){return m.globals.zoom}],"heatmap-density":[Zn,[],function(m){return m.globals.heatmapDensity||0}],"line-progress":[Zn,[],function(m){return m.globals.lineProgress||0}],accumulated:[So,[],function(m){return m.globals.accumulated===void 0?null:m.globals.accumulated}],"+":[Zn,ys(Zn),function(m,y){for(var I=0,U=0,J=y;U":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>ne}],"filter-id->":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>J}],"filter-<=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J<=ne}],"filter-id-<=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U<=J}],"filter->=":[Co,[ko,So],function(m,y){var I=y[0],U=y[1],J=m.properties()[I.value],ne=U.value;return typeof J==typeof ne&&J>=ne}],"filter-id->=":[Co,[So],function(m,y){var I=y[0],U=m.id(),J=I.value;return typeof U==typeof J&&U>=J}],"filter-has":[Co,[So],function(m,y){var I=y[0];return I.value in m.properties()}],"filter-has-id":[Co,[],function(m){return m.id()!==null&&m.id()!==void 0}],"filter-type-in":[Co,[eu(ko)],function(m,y){var I=y[0];return I.value.indexOf(m.geometryType())>=0}],"filter-id-in":[Co,[eu(So)],function(m,y){var I=y[0];return I.value.indexOf(m.id())>=0}],"filter-in-small":[Co,[ko,eu(So)],function(m,y){var I=y[0],U=y[1];return U.value.indexOf(m.properties()[I.value])>=0}],"filter-in-large":[Co,[ko,eu(So)],function(m,y){var I=y[0],U=y[1];return Qo(m.properties()[I.value],U.value,0,U.value.length-1)}],all:{type:Co,overloads:[[[Co,Co],function(m,y){var I=y[0],U=y[1];return I.evaluate(m)&&U.evaluate(m)}],[ys(Co),function(m,y){for(var I=0,U=y;I-1}function ia(m){return!!m.expression&&m.expression.interpolated}function Ka(m){return m instanceof Number?"number":m instanceof String?"string":m instanceof Boolean?"boolean":Array.isArray(m)?"array":m===null?"null":typeof m}function vs(m){return typeof m=="object"&&m!==null&&!Array.isArray(m)}function Ko(m){return m}function nu(m,y){var I=y.type==="color",U=m.stops&&typeof m.stops[0][0]=="object",J=U||m.property!==void 0,ne=U||!J,fe=m.type||(ia(y)?"exponential":"interval");if(I&&(m=Rl({},m),m.stops&&(m.stops=m.stops.map(function($n){return[$n[0],ss.parse($n[1])]})),m.default?m.default=ss.parse(m.default):m.default=ss.parse(y.default)),m.colorSpace&&m.colorSpace!=="rgb"&&!Ph[m.colorSpace])throw new Error("Unknown color space: "+m.colorSpace);var Fe,Qe,st;if(fe==="exponential")Fe=bu;else if(fe==="interval")Fe=mf;else if(fe==="categorical"){Fe=ac,Qe=Object.create(null);for(var mt=0,Xt=m.stops;mt=m.stops[U-1][0])return m.stops[U-1][1];var J=ic(m.stops.map(function(ne){return ne[0]}),I);return m.stops[J][1]}function bu(m,y,I){var U=m.base!==void 0?m.base:1;if(Ka(I)!=="number")return Ru(m.default,y.default);var J=m.stops.length;if(J===1||I<=m.stops[0][0])return m.stops[0][1];if(I>=m.stops[J-1][0])return m.stops[J-1][1];var ne=ic(m.stops.map(function(Xt){return Xt[0]}),I),fe=Du(I,U,m.stops[ne][0],m.stops[ne+1][0]),Fe=m.stops[ne][1],Qe=m.stops[ne+1][1],st=Gu[y.type]||Ko;if(m.colorSpace&&m.colorSpace!=="rgb"){var mt=Ph[m.colorSpace];st=function(Xt,ur){return mt.reverse(mt.interpolate(mt.forward(Xt),mt.forward(ur),fe))}}return typeof Fe.evaluate=="function"?{evaluate:function(){for(var ur=[],nr=arguments.length;nr--;)ur[nr]=arguments[nr];var Lr=Fe.evaluate.apply(void 0,ur),Yr=Qe.evaluate.apply(void 0,ur);if(!(Lr===void 0||Yr===void 0))return st(Lr,Yr,fe)}}:st(Fe,Qe,fe)}function Kc(m,y,I){return y.type==="color"?I=ss.parse(I):y.type==="formatted"?I=Vl.fromString(I.toString()):y.type==="resolvedImage"?I=Js.fromString(I.toString()):Ka(I)!==y.type&&(y.type!=="enum"||!y.values[I])&&(I=void 0),Ru(I,m.default,y.default)}function Du(m,y,I,U){var J=U-I,ne=m-I;return J===0?0:y===1?ne/J:(Math.pow(y,ne)-1)/(Math.pow(y,J)-1)}var Dc=function(y,I){this.expression=y,this._warningHistory={},this._evaluator=new $o,this._defaultValue=I?ee(I):null,this._enumValues=I&&I.type==="enum"?I.values:null};Dc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._evaluator.globals=y,this._evaluator.feature=I,this._evaluator.featureState=U,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe,this.expression.evaluate(this._evaluator)},Dc.prototype.evaluate=function(y,I,U,J,ne,fe){this._evaluator.globals=y,this._evaluator.feature=I||null,this._evaluator.featureState=U||null,this._evaluator.canonical=J,this._evaluator.availableImages=ne||null,this._evaluator.formattedSection=fe||null;try{var Fe=this.expression.evaluate(this._evaluator);if(Fe==null||typeof Fe=="number"&&Fe!==Fe)return this._defaultValue;if(this._enumValues&&!(Fe in this._enumValues))throw new Ms("Expected value to be one of "+Object.keys(this._enumValues).map(function(Qe){return JSON.stringify(Qe)}).join(", ")+", but found "+JSON.stringify(Fe)+" instead.");return Fe}catch(Qe){return this._warningHistory[Qe.message]||(this._warningHistory[Qe.message]=!0,typeof console!="undefined"&&console.warn(Qe.message)),this._defaultValue}};function Da(m){return Array.isArray(m)&&m.length>0&&typeof m[0]=="string"&&m[0]in Ua}function eo(m,y){var I=new fl(Ua,[],y?Q(y):void 0),U=I.parse(m,void 0,void 0,void 0,y&&y.type==="string"?{typeAnnotation:"coerce"}:void 0);return U?Bo(new Dc(U,y)):yl(I.errors)}var Jc=function(y,I){this.kind=y,this._styleExpression=I,this.isStateDependent=y!=="constant"&&!tu(I.expression)};Jc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},Jc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)};var yc=function(y,I,U,J){this.kind=y,this.zoomStops=U,this._styleExpression=I,this.isStateDependent=y!=="camera"&&!tu(I.expression),this.interpolationType=J};yc.prototype.evaluateWithoutErrorHandling=function(y,I,U,J,ne,fe){return this._styleExpression.evaluateWithoutErrorHandling(y,I,U,J,ne,fe)},yc.prototype.evaluate=function(y,I,U,J,ne,fe){return this._styleExpression.evaluate(y,I,U,J,ne,fe)},yc.prototype.interpolationFactor=function(y,I,U){return this.interpolationType?Dl.interpolationFactor(this.interpolationType,y,I,U):0};function _c(m,y){if(m=eo(m,y),m.result==="error")return m;var I=m.value.expression,U=$h(I);if(!U&&!Gs(y))return yl([new Ks("","data expressions not supported")]);var J=Pu(I,["zoom"]);if(!J&&!Rs(y))return yl([new Ks("","zoom expressions not supported")]);var ne=B(I);if(!ne&&!J)return yl([new Ks("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(ne instanceof Ks)return yl([ne]);if(ne instanceof Dl&&!ia(y))return yl([new Ks("",'"interpolate" expressions cannot be used with this property')]);if(!ne)return Bo(U?new Jc("constant",m.value):new Jc("source",m.value));var fe=ne instanceof Dl?ne.interpolation:void 0;return Bo(U?new yc("camera",m.value,ne.labels,fe):new yc("composite",m.value,ne.labels,fe))}var le=function(y,I){this._parameters=y,this._specification=I,Rl(this,nu(this._parameters,this._specification))};le.deserialize=function(y){return new le(y._parameters,y._specification)},le.serialize=function(y){return{_parameters:y._parameters,_specification:y._specification}};function w(m,y){if(vs(m))return new le(m,y);if(Da(m)){var I=_c(m,y);if(I.result==="error")throw new Error(I.value.map(function(J){return J.key+": "+J.message}).join(", "));return I.value}else{var U=m;return typeof m=="string"&&y.type==="color"&&(U=ss.parse(m)),{kind:"constant",evaluate:function(){return U}}}}function B(m){var y=null;if(m instanceof Rc)y=B(m.result);else if(m instanceof Wu)for(var I=0,U=m.args;IU.maximum?[new fa(y,I,I+" is greater than the maximum value "+U.maximum)]:[]}function it(m){var y=m.valueSpec,I=vo(m.value.type),U,J={},ne,fe,Fe=I!=="categorical"&&m.value.property===void 0,Qe=!Fe,st=Ka(m.value.stops)==="array"&&Ka(m.value.stops[0])==="array"&&Ka(m.value.stops[0][0])==="object",mt=se({key:m.key,value:m.value,valueSpec:m.styleSpec.function,style:m.style,styleSpec:m.styleSpec,objectElementValidators:{stops:Xt,default:Lr}});return I==="identity"&&Fe&&mt.push(new fa(m.key,m.value,'missing required property "property"')),I!=="identity"&&!m.value.stops&&mt.push(new fa(m.key,m.value,'missing required property "stops"')),I==="exponential"&&m.valueSpec.expression&&!ia(m.valueSpec)&&mt.push(new fa(m.key,m.value,"exponential functions not supported")),m.styleSpec.$version>=8&&(Qe&&!Gs(m.valueSpec)?mt.push(new fa(m.key,m.value,"property functions not supported")):Fe&&!Rs(m.valueSpec)&&mt.push(new fa(m.key,m.value,"zoom functions not supported"))),(I==="categorical"||st)&&m.value.property===void 0&&mt.push(new fa(m.key,m.value,'"property" property is required')),mt;function Xt(Yr){if(I==="identity")return[new fa(Yr.key,Yr.value,'identity function may not have a "stops" property')];var _i=[],si=Yr.value;return _i=_i.concat(qe({key:Yr.key,value:si,valueSpec:Yr.valueSpec,style:Yr.style,styleSpec:Yr.styleSpec,arrayElementValidator:ur})),Ka(si)==="array"&&si.length===0&&_i.push(new fa(Yr.key,si,"array must have at least one stop")),_i}function ur(Yr){var _i=[],si=Yr.value,Hi=Yr.key;if(Ka(si)!=="array")return[new fa(Hi,si,"array expected, "+Ka(si)+" found")];if(si.length!==2)return[new fa(Hi,si,"array length 2 expected, length "+si.length+" found")];if(st){if(Ka(si[0])!=="object")return[new fa(Hi,si,"object expected, "+Ka(si[0])+" found")];if(si[0].zoom===void 0)return[new fa(Hi,si,"object stop key must have zoom")];if(si[0].value===void 0)return[new fa(Hi,si,"object stop key must have value")];if(fe&&fe>vo(si[0].zoom))return[new fa(Hi,si[0].zoom,"stop zoom values must appear in ascending order")];vo(si[0].zoom)!==fe&&(fe=vo(si[0].zoom),ne=void 0,J={}),_i=_i.concat(se({key:Hi+"[0]",value:si[0],valueSpec:{zoom:{}},style:Yr.style,styleSpec:Yr.styleSpec,objectElementValidators:{zoom:je,value:nr}}))}else _i=_i.concat(nr({key:Hi+"[0]",value:si[0],valueSpec:{},style:Yr.style,styleSpec:Yr.styleSpec},si));return Da(Zl(si[1]))?_i.concat([new fa(Hi+"[1]",si[1],"expressions are not allowed in function stops.")]):_i.concat(Wa({key:Hi+"[1]",value:si[1],valueSpec:y,style:Yr.style,styleSpec:Yr.styleSpec}))}function nr(Yr,_i){var si=Ka(Yr.value),Hi=vo(Yr.value),Ei=Yr.value!==null?Yr.value:_i;if(!U)U=si;else if(si!==U)return[new fa(Yr.key,Ei,si+" stop domain type must match previous stop domain type "+U)];if(si!=="number"&&si!=="string"&&si!=="boolean")return[new fa(Yr.key,Ei,"stop domain value must be a number, string, or boolean")];if(si!=="number"&&I!=="categorical"){var Vi="number expected, "+si+" found";return Gs(y)&&I===void 0&&(Vi+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new fa(Yr.key,Ei,Vi)]}return I==="categorical"&&si==="number"&&(!isFinite(Hi)||Math.floor(Hi)!==Hi)?[new fa(Yr.key,Ei,"integer expected, found "+Hi)]:I!=="categorical"&&si==="number"&&ne!==void 0&&Hi=2&&m[1]!=="$id"&&m[1]!=="$type";case"in":return m.length>=3&&(typeof m[1]!="string"||Array.isArray(m[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return m.length!==3||Array.isArray(m[1])||Array.isArray(m[2]);case"any":case"all":for(var y=0,I=m.slice(1);yy?1:0}function Oe(m){if(!Array.isArray(m))return!1;if(m[0]==="within")return!0;for(var y=1;y"||y==="<="||y===">="?He(m[1],m[2],y):y==="any"?et(m.slice(1)):y==="all"?["all"].concat(m.slice(1).map(Je)):y==="none"?["all"].concat(m.slice(1).map(Je).map(Ut)):y==="in"?Mt(m[1],m.slice(2)):y==="!in"?Ut(Mt(m[1],m.slice(2))):y==="has"?Dt(m[1]):y==="!has"?Ut(Dt(m[1])):y==="within"?m:!0;return I}function He(m,y,I){switch(m){case"$type":return["filter-type-"+I,y];case"$id":return["filter-id-"+I,y];default:return["filter-"+I,m,y]}}function et(m){return["any"].concat(m.map(Je))}function Mt(m,y){if(y.length===0)return!1;switch(m){case"$type":return["filter-type-in",["literal",y]];case"$id":return["filter-id-in",["literal",y]];default:return y.length>200&&!y.some(function(I){return typeof I!=typeof y[0]})?["filter-in-large",m,["literal",y.sort(Pe)]]:["filter-in-small",m,["literal",y]]}}function Dt(m){switch(m){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",m]}}function Ut(m){return["!",m]}function tr(m){return Sr(Zl(m.value))?yt(Rl({},m,{expressionContext:"filter",valueSpec:{value:"boolean"}})):mr(m)}function mr(m){var y=m.value,I=m.key;if(Ka(y)!=="array")return[new fa(I,y,"array expected, "+Ka(y)+" found")];var U=m.styleSpec,J,ne=[];if(y.length<1)return[new fa(I,y,"filter array must have at least 1 element")];switch(ne=ne.concat(hr({key:I+"[0]",value:y[0],valueSpec:U.filter_operator,style:m.style,styleSpec:m.styleSpec})),vo(y[0])){case"<":case"<=":case">":case">=":y.length>=2&&vo(y[1])==="$type"&&ne.push(new fa(I,y,'"$type" cannot be use with operator "'+y[0]+'"'));case"==":case"!=":y.length!==3&&ne.push(new fa(I,y,'filter array for operator "'+y[0]+'" must have 3 elements'));case"in":case"!in":y.length>=2&&(J=Ka(y[1]),J!=="string"&&ne.push(new fa(I+"[1]",y[1],"string expected, "+J+" found")));for(var fe=2;fe=mt[nr+0]&&U>=mt[nr+1])?(fe[ur]=!0,ne.push(st[ur])):fe[ur]=!1}}},au.prototype._forEachCell=function(m,y,I,U,J,ne,fe,Fe){for(var Qe=this._convertToCellCoord(m),st=this._convertToCellCoord(y),mt=this._convertToCellCoord(I),Xt=this._convertToCellCoord(U),ur=Qe;ur<=mt;ur++)for(var nr=st;nr<=Xt;nr++){var Lr=this.d*nr+ur;if(!(Fe&&!Fe(this._convertFromCellCoord(ur),this._convertFromCellCoord(nr),this._convertFromCellCoord(ur+1),this._convertFromCellCoord(nr+1)))&&J.call(this,m,y,I,U,Lr,ne,fe,Fe))return}},au.prototype._convertFromCellCoord=function(m){return(m-this.padding)/this.scale},au.prototype._convertToCellCoord=function(m){return Math.max(0,Math.min(this.d-1,Math.floor(m*this.scale)+this.padding))},au.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var m=this.cells,y=el+this.cells.length+1+1,I=0,U=0;U=0)){var Xt=m[mt];st[mt]=Fl[Qe].shallow.indexOf(mt)>=0?Xt:Ue(Xt,y)}m instanceof Error&&(st.message=m.message)}if(st.$name)throw new Error("$name property is reserved for worker serialization logic.");return Qe!=="Object"&&(st.$name=Qe),st}throw new Error("can't serialize object of type "+typeof m)}function We(m){if(m==null||typeof m=="boolean"||typeof m=="number"||typeof m=="string"||m instanceof Boolean||m instanceof Number||m instanceof String||m instanceof Date||m instanceof RegExp||we(m)||Be(m)||ArrayBuffer.isView(m)||m instanceof zc)return m;if(Array.isArray(m))return m.map(We);if(typeof m=="object"){var y=m.$name||"Object",I=Fl[y],U=I.klass;if(!U)throw new Error("can't deserialize unregistered class "+y);if(U.deserialize)return U.deserialize(m);for(var J=Object.create(U.prototype),ne=0,fe=Object.keys(m);ne=0?Qe:We(Qe)}}return J}throw new Error("can't deserialize object of type "+typeof m)}var wt=function(){this.first=!0};wt.prototype.update=function(y,I){var U=Math.floor(y);return this.first?(this.first=!1,this.lastIntegerZoom=U,this.lastIntegerZoomTime=0,this.lastZoom=y,this.lastFloorZoom=U,!0):(this.lastFloorZoom>U?(this.lastIntegerZoom=U+1,this.lastIntegerZoomTime=I):this.lastFloorZoom=128&&m<=255},Arabic:function(m){return m>=1536&&m<=1791},"Arabic Supplement":function(m){return m>=1872&&m<=1919},"Arabic Extended-A":function(m){return m>=2208&&m<=2303},"Hangul Jamo":function(m){return m>=4352&&m<=4607},"Unified Canadian Aboriginal Syllabics":function(m){return m>=5120&&m<=5759},Khmer:function(m){return m>=6016&&m<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(m){return m>=6320&&m<=6399},"General Punctuation":function(m){return m>=8192&&m<=8303},"Letterlike Symbols":function(m){return m>=8448&&m<=8527},"Number Forms":function(m){return m>=8528&&m<=8591},"Miscellaneous Technical":function(m){return m>=8960&&m<=9215},"Control Pictures":function(m){return m>=9216&&m<=9279},"Optical Character Recognition":function(m){return m>=9280&&m<=9311},"Enclosed Alphanumerics":function(m){return m>=9312&&m<=9471},"Geometric Shapes":function(m){return m>=9632&&m<=9727},"Miscellaneous Symbols":function(m){return m>=9728&&m<=9983},"Miscellaneous Symbols and Arrows":function(m){return m>=11008&&m<=11263},"CJK Radicals Supplement":function(m){return m>=11904&&m<=12031},"Kangxi Radicals":function(m){return m>=12032&&m<=12255},"Ideographic Description Characters":function(m){return m>=12272&&m<=12287},"CJK Symbols and Punctuation":function(m){return m>=12288&&m<=12351},Hiragana:function(m){return m>=12352&&m<=12447},Katakana:function(m){return m>=12448&&m<=12543},Bopomofo:function(m){return m>=12544&&m<=12591},"Hangul Compatibility Jamo":function(m){return m>=12592&&m<=12687},Kanbun:function(m){return m>=12688&&m<=12703},"Bopomofo Extended":function(m){return m>=12704&&m<=12735},"CJK Strokes":function(m){return m>=12736&&m<=12783},"Katakana Phonetic Extensions":function(m){return m>=12784&&m<=12799},"Enclosed CJK Letters and Months":function(m){return m>=12800&&m<=13055},"CJK Compatibility":function(m){return m>=13056&&m<=13311},"CJK Unified Ideographs Extension A":function(m){return m>=13312&&m<=19903},"Yijing Hexagram Symbols":function(m){return m>=19904&&m<=19967},"CJK Unified Ideographs":function(m){return m>=19968&&m<=40959},"Yi Syllables":function(m){return m>=40960&&m<=42127},"Yi Radicals":function(m){return m>=42128&&m<=42191},"Hangul Jamo Extended-A":function(m){return m>=43360&&m<=43391},"Hangul Syllables":function(m){return m>=44032&&m<=55215},"Hangul Jamo Extended-B":function(m){return m>=55216&&m<=55295},"Private Use Area":function(m){return m>=57344&&m<=63743},"CJK Compatibility Ideographs":function(m){return m>=63744&&m<=64255},"Arabic Presentation Forms-A":function(m){return m>=64336&&m<=65023},"Vertical Forms":function(m){return m>=65040&&m<=65055},"CJK Compatibility Forms":function(m){return m>=65072&&m<=65103},"Small Form Variants":function(m){return m>=65104&&m<=65135},"Arabic Presentation Forms-B":function(m){return m>=65136&&m<=65279},"Halfwidth and Fullwidth Forms":function(m){return m>=65280&&m<=65519}};function zt(m){for(var y=0,I=m;y=65097&&m<=65103)||tt["CJK Compatibility Ideographs"](m)||tt["CJK Compatibility"](m)||tt["CJK Radicals Supplement"](m)||tt["CJK Strokes"](m)||tt["CJK Symbols and Punctuation"](m)&&!(m>=12296&&m<=12305)&&!(m>=12308&&m<=12319)&&m!==12336||tt["CJK Unified Ideographs Extension A"](m)||tt["CJK Unified Ideographs"](m)||tt["Enclosed CJK Letters and Months"](m)||tt["Hangul Compatibility Jamo"](m)||tt["Hangul Jamo Extended-A"](m)||tt["Hangul Jamo Extended-B"](m)||tt["Hangul Jamo"](m)||tt["Hangul Syllables"](m)||tt.Hiragana(m)||tt["Ideographic Description Characters"](m)||tt.Kanbun(m)||tt["Kangxi Radicals"](m)||tt["Katakana Phonetic Extensions"](m)||tt.Katakana(m)&&m!==12540||tt["Halfwidth and Fullwidth Forms"](m)&&m!==65288&&m!==65289&&m!==65293&&!(m>=65306&&m<=65310)&&m!==65339&&m!==65341&&m!==65343&&!(m>=65371&&m<=65503)&&m!==65507&&!(m>=65512&&m<=65519)||tt["Small Form Variants"](m)&&!(m>=65112&&m<=65118)&&!(m>=65123&&m<=65126)||tt["Unified Canadian Aboriginal Syllabics"](m)||tt["Unified Canadian Aboriginal Syllabics Extended"](m)||tt["Vertical Forms"](m)||tt["Yijing Hexagram Symbols"](m)||tt["Yi Syllables"](m)||tt["Yi Radicals"](m))}function oi(m){return!!(tt["Latin-1 Supplement"](m)&&(m===167||m===169||m===174||m===177||m===188||m===189||m===190||m===215||m===247)||tt["General Punctuation"](m)&&(m===8214||m===8224||m===8225||m===8240||m===8241||m===8251||m===8252||m===8258||m===8263||m===8264||m===8265||m===8273)||tt["Letterlike Symbols"](m)||tt["Number Forms"](m)||tt["Miscellaneous Technical"](m)&&(m>=8960&&m<=8967||m>=8972&&m<=8991||m>=8996&&m<=9e3||m===9003||m>=9085&&m<=9114||m>=9150&&m<=9165||m===9167||m>=9169&&m<=9179||m>=9186&&m<=9215)||tt["Control Pictures"](m)&&m!==9251||tt["Optical Character Recognition"](m)||tt["Enclosed Alphanumerics"](m)||tt["Geometric Shapes"](m)||tt["Miscellaneous Symbols"](m)&&!(m>=9754&&m<=9759)||tt["Miscellaneous Symbols and Arrows"](m)&&(m>=11026&&m<=11055||m>=11088&&m<=11097||m>=11192&&m<=11243)||tt["CJK Symbols and Punctuation"](m)||tt.Katakana(m)||tt["Private Use Area"](m)||tt["CJK Compatibility Forms"](m)||tt["Small Form Variants"](m)||tt["Halfwidth and Fullwidth Forms"](m)||m===8734||m===8756||m===8757||m>=9984&&m<=10087||m>=10102&&m<=10131||m===65532||m===65533)}function ui(m){return!(Ir(m)||oi(m))}function qr(m){return tt.Arabic(m)||tt["Arabic Supplement"](m)||tt["Arabic Extended-A"](m)||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function Kr(m){return m>=1424&&m<=2303||tt["Arabic Presentation Forms-A"](m)||tt["Arabic Presentation Forms-B"](m)}function ii(m,y){return!(!y&&Kr(m)||m>=2304&&m<=3583||m>=3840&&m<=4255||tt.Khmer(m))}function vi(m){for(var y=0,I=m;y-1&&(dn=Jr.error),un&&un(m)};function ga(){ya.fire(new jo("pluginStateChange",{pluginStatus:dn,pluginURL:En}))}var ya=new Sn,so=function(){return dn},wa=function(m){return m({pluginStatus:dn,pluginURL:En}),ya.on("pluginStateChange",m),m},io=function(m,y,I){if(I===void 0&&(I=!1),dn===Jr.deferred||dn===Jr.loading||dn===Jr.loaded)throw new Error("setRTLTextPlugin cannot be called multiple times.");En=nt.resolveURL(m),dn=Jr.deferred,un=y,ga(),I||Ss()},Ss=function(){if(dn!==Jr.deferred||!En)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");dn=Jr.loading,ga(),En&&Zr({url:En},function(m){m?Nn(m):(dn=Jr.loaded,ga())})},_s={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return dn===Jr.loaded||_s.applyArabicShaping!=null},isLoading:function(){return dn===Jr.loading},setState:function(y){dn=y.pluginStatus,En=y.pluginURL},isParsed:function(){return _s.applyArabicShaping!=null&&_s.processBidirectionalText!=null&&_s.processStyledBidirectionalText!=null},getPluginURL:function(){return En}},Ns=function(){!_s.isLoading()&&!_s.isLoaded()&&so()==="deferred"&&Ss()},pn=function(y,I){this.zoom=y,I?(this.now=I.now,this.fadeDuration=I.fadeDuration,this.zoomHistory=I.zoomHistory,this.transition=I.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new wt,this.transition={})};pn.prototype.isSupportedScript=function(y){return ci(y,_s.isLoaded())},pn.prototype.crossFadingFactor=function(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},pn.prototype.getCrossfadeParameters=function(){var y=this.zoom,I=y-Math.floor(y),U=this.crossFadingFactor();return y>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:I+(1-I)*U}:{fromScale:.5,toScale:1,t:1-(1-U)*I}};var za=function(y,I){this.property=y,this.value=I,this.expression=w(I===void 0?y.specification.default:I,y.specification)};za.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},za.prototype.possiblyEvaluate=function(y,I,U){return this.property.possiblyEvaluate(this,y,I,U)};var Lo=function(y){this.property=y,this.value=new za(y,void 0)};Lo.prototype.transitioned=function(y,I){return new js(this.property,this.value,I,_({},y.transition,this.transition),y.now)},Lo.prototype.untransitioned=function(){return new js(this.property,this.value,null,{},0)};var Fo=function(y){this._properties=y,this._values=Object.create(y.defaultTransitionablePropertyValues)};Fo.prototype.getValue=function(y){return G(this._values[y].value.value)},Fo.prototype.setValue=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].value=new za(this._values[y].property,I===null?void 0:G(I))},Fo.prototype.getTransition=function(y){return G(this._values[y].transition)},Fo.prototype.setTransition=function(y,I){this._values.hasOwnProperty(y)||(this._values[y]=new Lo(this._values[y].property)),this._values[y].transition=G(I)||void 0},Fo.prototype.serialize=function(){for(var y={},I=0,U=Object.keys(this._values);Ithis.end)return this.prior=null,ne;if(this.value.isDataDriven())return this.prior=null,ne;if(Jfe.zoomHistory.lastIntegerZoom?{from:U,to:J}:{from:ne,to:J}},y.prototype.interpolate=function(U){return U},y}(Er),wi=function(y){this.specification=y};wi.prototype.possiblyEvaluate=function(y,I,U,J){if(y.value!==void 0)if(y.expression.kind==="constant"){var ne=y.expression.evaluate(I,null,{},U,J);return this._calculate(ne,ne,ne,I)}else return this._calculate(y.expression.evaluate(new pn(Math.floor(I.zoom-1),I)),y.expression.evaluate(new pn(Math.floor(I.zoom),I)),y.expression.evaluate(new pn(Math.floor(I.zoom+1),I)),I)},wi.prototype._calculate=function(y,I,U,J){var ne=J.zoom;return ne>J.zoomHistory.lastIntegerZoom?{from:y,to:I}:{from:U,to:I}},wi.prototype.interpolate=function(y){return y};var Ui=function(y){this.specification=y};Ui.prototype.possiblyEvaluate=function(y,I,U,J){return!!y.expression.evaluate(I,null,{},U,J)},Ui.prototype.interpolate=function(){return!1};var Oi=function(y){this.properties=y,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(var I in y){var U=y[I];U.specification.overridable&&this.overridableProperties.push(I);var J=this.defaultPropertyValues[I]=new za(U,void 0),ne=this.defaultTransitionablePropertyValues[I]=new Lo(U);this.defaultTransitioningPropertyValues[I]=ne.untransitioned(),this.defaultPossiblyEvaluatedValues[I]=J.possiblyEvaluate({})}};Z("DataDrivenProperty",Er),Z("DataConstantProperty",At),Z("CrossFadedDataDrivenProperty",Wr),Z("CrossFadedProperty",wi),Z("ColorRampProperty",Ui);var Bi="-transition",cn=function(m){function y(I,U){if(m.call(this),this.id=I.id,this.type=I.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},I.type!=="custom"&&(I=I,this.metadata=I.metadata,this.minzoom=I.minzoom,this.maxzoom=I.maxzoom,I.type!=="background"&&(this.source=I.source,this.sourceLayer=I["source-layer"],this.filter=I.filter),U.layout&&(this._unevaluatedLayout=new fu(U.layout)),U.paint)){this._transitionablePaint=new Fo(U.paint);for(var J in I.paint)this.setPaintProperty(J,I.paint[J],{validate:!1});for(var ne in I.layout)this.setLayoutProperty(ne,I.layout[ne],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new xc(U.paint)}}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},y.prototype.getLayoutProperty=function(U){return U==="visibility"?this.visibility:this._unevaluatedLayout.getValue(U)},y.prototype.setLayoutProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".layout."+U;if(this._validate(Hl,fe,U,J,ne))return}if(U==="visibility"){this.visibility=J;return}this._unevaluatedLayout.setValue(U,J)},y.prototype.getPaintProperty=function(U){return V(U,Bi)?this._transitionablePaint.getTransition(U.slice(0,-Bi.length)):this._transitionablePaint.getValue(U)},y.prototype.setPaintProperty=function(U,J,ne){if(ne===void 0&&(ne={}),J!=null){var fe="layers."+this.id+".paint."+U;if(this._validate(_l,fe,U,J,ne))return!1}if(V(U,Bi))return this._transitionablePaint.setTransition(U.slice(0,-Bi.length),J||void 0),!1;var Fe=this._transitionablePaint._values[U],Qe=Fe.property.specification["property-type"]==="cross-faded-data-driven",st=Fe.value.isDataDriven(),mt=Fe.value;this._transitionablePaint.setValue(U,J),this._handleSpecialPaintPropertyUpdate(U);var Xt=this._transitionablePaint._values[U].value,ur=Xt.isDataDriven();return ur||st||Qe||this._handleOverridablePaintPropertyUpdate(U,mt,Xt)},y.prototype._handleSpecialPaintPropertyUpdate=function(U){},y.prototype._handleOverridablePaintPropertyUpdate=function(U,J,ne){return!1},y.prototype.isHidden=function(U){return this.minzoom&&U=this.maxzoom?!0:this.visibility==="none"},y.prototype.updateTransitions=function(U){this._transitioningPaint=this._transitionablePaint.transitioned(U,this._transitioningPaint)},y.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},y.prototype.recalculate=function(U,J){U.getCrossfadeParameters&&(this._crossfadeParameters=U.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(U,void 0,J)),this.paint=this._transitioningPaint.possiblyEvaluate(U,void 0,J)},y.prototype.serialize=function(){var U={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(U.layout=U.layout||{},U.layout.visibility=this.visibility),X(U,function(J,ne){return J!==void 0&&!(ne==="layout"&&!Object.keys(J).length)&&!(ne==="paint"&&!Object.keys(J).length)})},y.prototype._validate=function(U,J,ne,fe,Fe){return Fe===void 0&&(Fe={}),Fe&&Fe.validate===!1?!1:Zu(this,U.call(yo,{key:J,layerType:this.type,objectKey:ne,value:fe,styleSpec:on,style:{glyphs:!0,sprite:!0}}))},y.prototype.is3D=function(){return!1},y.prototype.isTileClipped=function(){return!1},y.prototype.hasOffscreenPass=function(){return!1},y.prototype.resize=function(){},y.prototype.isStateDependent=function(){for(var U in this.paint._values){var J=this.paint.get(U);if(!(!(J instanceof dl)||!Gs(J.property.specification))&&(J.value.kind==="source"||J.value.kind==="composite")&&J.value.isStateDependent)return!0}return!1},y}(Sn),On={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},Bn=function(y,I){this._structArray=y,this._pos1=I*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},yn=128,to=5,Rn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};Rn.serialize=function(y,I){return y._trim(),I&&(y.isTransferred=!0,I.push(y.arrayBuffer)),{length:y.length,arrayBuffer:y.arrayBuffer}},Rn.deserialize=function(y){var I=Object.create(this.prototype);return I.arrayBuffer=y.arrayBuffer,I.length=y.length,I.capacity=y.arrayBuffer.byteLength/I.bytesPerElement,I._refreshViews(),I},Rn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},Rn.prototype.clear=function(){this.length=0},Rn.prototype.resize=function(y){this.reserve(y),this.length=y},Rn.prototype.reserve=function(y){if(y>this.capacity){this.capacity=Math.max(y,Math.floor(this.capacity*to),yn),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var I=this.uint8;this._refreshViews(),I&&this.uint8.set(I)}},Rn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};function Dn(m,y){y===void 0&&(y=1);var I=0,U=0,J=m.map(function(fe){var Fe=fn(fe.type),Qe=I=Ai(I,Math.max(y,Fe)),st=fe.components||1;return U=Math.max(U,Fe),I+=Fe*st,{name:fe.name,type:fe.type,components:st,offset:Qe}}),ne=Ai(I,Math.max(U,y));return{members:J,size:ne,alignment:y}}function fn(m){return On[m].BYTES_PER_ELEMENT}function Ai(m,y){return Math.ceil(m/y)*y}var ji=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.int16[fe+0]=J,this.int16[fe+1]=ne,U},y}(Rn);ji.prototype.bytesPerElement=4,Z("StructArrayLayout2i4",ji);var Ln=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.int16[Qe+0]=J,this.int16[Qe+1]=ne,this.int16[Qe+2]=fe,this.int16[Qe+3]=Fe,U},y}(Rn);Ln.prototype.bytesPerElement=8,Z("StructArrayLayout4i8",Ln);var Un=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);Un.prototype.bytesPerElement=12,Z("StructArrayLayout2i4i12",Un);var gn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*4,Xt=U*8;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.uint8[Xt+4]=fe,this.uint8[Xt+5]=Fe,this.uint8[Xt+6]=Qe,this.uint8[Xt+7]=st,U},y}(Rn);gn.prototype.bytesPerElement=8,Z("StructArrayLayout2i4ub8",gn);var ca=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.float32[fe+0]=J,this.float32[fe+1]=ne,U},y}(Rn);ca.prototype.bytesPerElement=8,Z("StructArrayLayout2f8",ca);var Kn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=this.length;return this.resize(nr+1),this.emplace(nr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr){var Lr=U*10;return this.uint16[Lr+0]=J,this.uint16[Lr+1]=ne,this.uint16[Lr+2]=fe,this.uint16[Lr+3]=Fe,this.uint16[Lr+4]=Qe,this.uint16[Lr+5]=st,this.uint16[Lr+6]=mt,this.uint16[Lr+7]=Xt,this.uint16[Lr+8]=ur,this.uint16[Lr+9]=nr,U},y}(Rn);Kn.prototype.bytesPerElement=20,Z("StructArrayLayout10ui20",Kn);var Za=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr){var Yr=this.length;return this.resize(Yr+1),this.emplace(Yr,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr){var _i=U*12;return this.int16[_i+0]=J,this.int16[_i+1]=ne,this.int16[_i+2]=fe,this.int16[_i+3]=Fe,this.uint16[_i+4]=Qe,this.uint16[_i+5]=st,this.uint16[_i+6]=mt,this.uint16[_i+7]=Xt,this.int16[_i+8]=ur,this.int16[_i+9]=nr,this.int16[_i+10]=Lr,this.int16[_i+11]=Yr,U},y}(Rn);Za.prototype.bytesPerElement=24,Z("StructArrayLayout4i4ui4i24",Za);var wn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.float32[Fe+0]=J,this.float32[Fe+1]=ne,this.float32[Fe+2]=fe,U},y}(Rn);wn.prototype.bytesPerElement=12,Z("StructArrayLayout3f12",wn);var vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint32[ne+0]=J,U},y}(Rn);vn.prototype.bytesPerElement=4,Z("StructArrayLayout1ul4",vn);var Aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt){var ur=this.length;return this.resize(ur+1),this.emplace(ur,U,J,ne,fe,Fe,Qe,st,mt,Xt)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur){var nr=U*10,Lr=U*5;return this.int16[nr+0]=J,this.int16[nr+1]=ne,this.int16[nr+2]=fe,this.int16[nr+3]=Fe,this.int16[nr+4]=Qe,this.int16[nr+5]=st,this.uint32[Lr+3]=mt,this.uint16[nr+8]=Xt,this.uint16[nr+9]=ur,U},y}(Rn);Aa.prototype.bytesPerElement=20,Z("StructArrayLayout6i1ul2ui20",Aa);var aa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe){var st=this.length;return this.resize(st+1),this.emplace(st,U,J,ne,fe,Fe,Qe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st){var mt=U*6;return this.int16[mt+0]=J,this.int16[mt+1]=ne,this.int16[mt+2]=fe,this.int16[mt+3]=Fe,this.int16[mt+4]=Qe,this.int16[mt+5]=st,U},y}(Rn);aa.prototype.bytesPerElement=12,Z("StructArrayLayout2i2i2i12",aa);var Xn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe){var Qe=this.length;return this.resize(Qe+1),this.emplace(Qe,U,J,ne,fe,Fe)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe){var st=U*4,mt=U*8;return this.float32[st+0]=J,this.float32[st+1]=ne,this.float32[st+2]=fe,this.int16[mt+6]=Fe,this.int16[mt+7]=Qe,U},y}(Rn);Xn.prototype.bytesPerElement=16,Z("StructArrayLayout2f1f2i16",Xn);var Vn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*12,st=U*3;return this.uint8[Qe+0]=J,this.uint8[Qe+1]=ne,this.float32[st+1]=fe,this.float32[st+2]=Fe,U},y}(Rn);Vn.prototype.bytesPerElement=12,Z("StructArrayLayout2ub2f12",Vn);var ma=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.uint16[Fe+0]=J,this.uint16[Fe+1]=ne,this.uint16[Fe+2]=fe,U},y}(Rn);ma.prototype.bytesPerElement=6,Z("StructArrayLayout3ui6",ma);var ro=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei){var Vi=this.length;return this.resize(Vi+1),this.emplace(Vi,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi){var en=U*24,An=U*12,ra=U*48;return this.int16[en+0]=J,this.int16[en+1]=ne,this.uint16[en+2]=fe,this.uint16[en+3]=Fe,this.uint32[An+2]=Qe,this.uint32[An+3]=st,this.uint32[An+4]=mt,this.uint16[en+10]=Xt,this.uint16[en+11]=ur,this.uint16[en+12]=nr,this.float32[An+7]=Lr,this.float32[An+8]=Yr,this.uint8[ra+36]=_i,this.uint8[ra+37]=si,this.uint8[ra+38]=Hi,this.uint32[An+10]=Ei,this.int16[en+22]=Vi,U},y}(Rn);ro.prototype.bytesPerElement=48,Z("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",ro);var Ao=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja){var us=this.length;return this.resize(us+1),this.emplace(us,U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja)},y.prototype.emplace=function(U,J,ne,fe,Fe,Qe,st,mt,Xt,ur,nr,Lr,Yr,_i,si,Hi,Ei,Vi,en,An,ra,$n,Ba,_a,Pa,qo,Na,ja,us){var zo=U*34,rl=U*17;return this.int16[zo+0]=J,this.int16[zo+1]=ne,this.int16[zo+2]=fe,this.int16[zo+3]=Fe,this.int16[zo+4]=Qe,this.int16[zo+5]=st,this.int16[zo+6]=mt,this.int16[zo+7]=Xt,this.uint16[zo+8]=ur,this.uint16[zo+9]=nr,this.uint16[zo+10]=Lr,this.uint16[zo+11]=Yr,this.uint16[zo+12]=_i,this.uint16[zo+13]=si,this.uint16[zo+14]=Hi,this.uint16[zo+15]=Ei,this.uint16[zo+16]=Vi,this.uint16[zo+17]=en,this.uint16[zo+18]=An,this.uint16[zo+19]=ra,this.uint16[zo+20]=$n,this.uint16[zo+21]=Ba,this.uint16[zo+22]=_a,this.uint32[rl+12]=Pa,this.float32[rl+13]=qo,this.float32[rl+14]=Na,this.float32[rl+15]=ja,this.float32[rl+16]=us,U},y}(Rn);Ao.prototype.bytesPerElement=68,Z("StructArrayLayout8i15ui1ul4f68",Ao);var Jn=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.float32[ne+0]=J,U},y}(Rn);Jn.prototype.bytesPerElement=4,Z("StructArrayLayout1f4",Jn);var Oa=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*3;return this.int16[Fe+0]=J,this.int16[Fe+1]=ne,this.int16[Fe+2]=fe,U},y}(Rn);Oa.prototype.bytesPerElement=6,Z("StructArrayLayout3i6",Oa);var _o=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne){var fe=this.length;return this.resize(fe+1),this.emplace(fe,U,J,ne)},y.prototype.emplace=function(U,J,ne,fe){var Fe=U*2,Qe=U*4;return this.uint32[Fe+0]=J,this.uint16[Qe+2]=ne,this.uint16[Qe+3]=fe,U},y}(Rn);_o.prototype.bytesPerElement=8,Z("StructArrayLayout1ul2ui8",_o);var Po=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J){var ne=this.length;return this.resize(ne+1),this.emplace(ne,U,J)},y.prototype.emplace=function(U,J,ne){var fe=U*2;return this.uint16[fe+0]=J,this.uint16[fe+1]=ne,U},y}(Rn);Po.prototype.bytesPerElement=4,Z("StructArrayLayout2ui4",Po);var Jo=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U){var J=this.length;return this.resize(J+1),this.emplace(J,U)},y.prototype.emplace=function(U,J){var ne=U*1;return this.uint16[ne+0]=J,U},y}(Rn);Jo.prototype.bytesPerElement=2,Z("StructArrayLayout1ui2",Jo);var Yl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},y.prototype.emplaceBack=function(U,J,ne,fe){var Fe=this.length;return this.resize(Fe+1),this.emplace(Fe,U,J,ne,fe)},y.prototype.emplace=function(U,J,ne,fe,Fe){var Qe=U*4;return this.float32[Qe+0]=J,this.float32[Qe+1]=ne,this.float32[Qe+2]=fe,this.float32[Qe+3]=Fe,U},y}(Rn);Yl.prototype.bytesPerElement=16,Z("StructArrayLayout4f16",Yl);var $c=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return I.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},I.x1.get=function(){return this._structArray.int16[this._pos2+2]},I.y1.get=function(){return this._structArray.int16[this._pos2+3]},I.x2.get=function(){return this._structArray.int16[this._pos2+4]},I.y2.get=function(){return this._structArray.int16[this._pos2+5]},I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.anchorPoint.get=function(){return new u(this.anchorPointX,this.anchorPointY)},Object.defineProperties(y.prototype,I),y}(Bn);$c.prototype.size=20;var xs=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new $c(this,U)},y}(Aa);Z("CollisionBoxArray",xs);var Qc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},I.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},I.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},I.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},I.segment.get=function(){return this._structArray.uint16[this._pos2+10]},I.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},I.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},I.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},I.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},I.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},I.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},I.placedOrientation.set=function(U){this._structArray.uint8[this._pos1+37]=U},I.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},I.hidden.set=function(U){this._structArray.uint8[this._pos1+38]=U},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+10]=U},I.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(y.prototype,I),y}(Bn);Qc.prototype.size=48;var El=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Qc(this,U)},y}(ro);Z("PlacedSymbolArray",El);var bc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return I.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},I.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},I.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},I.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},I.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},I.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},I.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},I.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},I.key.get=function(){return this._structArray.uint16[this._pos2+8]},I.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},I.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},I.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},I.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},I.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},I.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},I.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},I.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},I.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},I.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},I.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},I.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},I.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},I.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},I.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},I.crossTileID.set=function(U){this._structArray.uint32[this._pos4+12]=U},I.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},I.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},I.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},I.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(y.prototype,I),y}(Bn);bc.prototype.size=68;var wc=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new bc(this,U)},y}(Ao);Z("SymbolInstanceArray",wc);var yf=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getoffsetX=function(U){return this.float32[U*1+0]},y}(Jn);Z("GlyphOffsetArray",yf);var Gl=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.getx=function(U){return this.int16[U*3+0]},y.prototype.gety=function(U){return this.int16[U*3+1]},y.prototype.gettileUnitDistanceFromAnchor=function(U){return this.int16[U*3+2]},y}(Oa);Z("SymbolLineVertexArray",Gl);var Fc=function(m){function y(){m.apply(this,arguments)}m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y;var I={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return I.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},I.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},I.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(y.prototype,I),y}(Bn);Fc.prototype.size=8;var ef=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.get=function(U){return new Fc(this,U)},y}(_o);Z("FeatureIndexArray",ef);var ls=Dn([{name:"a_pos",components:2,type:"Int16"}],4),_f=ls.members,ns=function(y){y===void 0&&(y=[]),this.segments=y};ns.prototype.prepareSegment=function(y,I,U,J){var ne=this.segments[this.segments.length-1];return y>ns.MAX_VERTEX_ARRAY_LENGTH&&re("Max vertices per segment is "+ns.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+y),(!ne||ne.vertexLength+y>ns.MAX_VERTEX_ARRAY_LENGTH||ne.sortKey!==J)&&(ne={vertexOffset:I.length,primitiveOffset:U.length,vertexLength:0,primitiveLength:0},J!==void 0&&(ne.sortKey=J),this.segments.push(ne)),ne},ns.prototype.get=function(){return this.segments},ns.prototype.destroy=function(){for(var y=0,I=this.segments;y>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt,fe=fe<<13|fe>>>19,Fe=(fe&65535)*5+(((fe>>>16)*5&65535)<<16)&4294967295,fe=(Fe&65535)+27492+(((Fe>>>16)+58964&65535)<<16);switch(mt=0,J){case 3:mt^=(I.charCodeAt(Xt+2)&255)<<16;case 2:mt^=(I.charCodeAt(Xt+1)&255)<<8;case 1:mt^=I.charCodeAt(Xt)&255,mt=(mt&65535)*Qe+(((mt>>>16)*Qe&65535)<<16)&4294967295,mt=mt<<15|mt>>>17,mt=(mt&65535)*st+(((mt>>>16)*st&65535)<<16)&4294967295,fe^=mt}return fe^=I.length,fe^=fe>>>16,fe=(fe&65535)*2246822507+(((fe>>>16)*2246822507&65535)<<16)&4294967295,fe^=fe>>>13,fe=(fe&65535)*3266489909+(((fe>>>16)*3266489909&65535)<<16)&4294967295,fe^=fe>>>16,fe>>>0}m.exports=y}),O=a(function(m){function y(I,U){for(var J=I.length,ne=U^J,fe=0,Fe;J>=4;)Fe=I.charCodeAt(fe)&255|(I.charCodeAt(++fe)&255)<<8|(I.charCodeAt(++fe)&255)<<16|(I.charCodeAt(++fe)&255)<<24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),Fe^=Fe>>>24,Fe=(Fe&65535)*1540483477+(((Fe>>>16)*1540483477&65535)<<16),ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)^Fe,J-=4,++fe;switch(J){case 3:ne^=(I.charCodeAt(fe+2)&255)<<16;case 2:ne^=(I.charCodeAt(fe+1)&255)<<8;case 1:ne^=I.charCodeAt(fe)&255,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16)}return ne^=ne>>>13,ne=(ne&65535)*1540483477+(((ne>>>16)*1540483477&65535)<<16),ne^=ne>>>15,ne>>>0}m.exports=y}),$=K,pe=K,de=O;$.murmur3=pe,$.murmur2=de;var Ie=function(){this.ids=[],this.positions=[],this.indexed=!1};Ie.prototype.add=function(y,I,U,J){this.ids.push(pt(y)),this.positions.push(I,U,J)},Ie.prototype.getPositions=function(y){for(var I=pt(y),U=0,J=this.ids.length-1;U>1;this.ids[ne]>=I?J=ne:U=ne+1}for(var fe=[];this.ids[U]===I;){var Fe=this.positions[3*U],Qe=this.positions[3*U+1],st=this.positions[3*U+2];fe.push({index:Fe,start:Qe,end:st}),U++}return fe},Ie.serialize=function(y,I){var U=new Float64Array(y.ids),J=new Uint32Array(y.positions);return Kt(U,J,0,U.length-1),I&&I.push(U.buffer,J.buffer),{ids:U,positions:J}},Ie.deserialize=function(y){var I=new Ie;return I.ids=y.ids,I.positions=y.positions,I.indexed=!0,I};var $e=Math.pow(2,53)-1;function pt(m){var y=+m;return!isNaN(y)&&y<=$e?y:$(String(m))}function Kt(m,y,I,U){for(;I>1],ne=I-1,fe=U+1;;){do ne++;while(m[ne]J);if(ne>=fe)break;ir(m,ne,fe),ir(y,3*ne,3*fe),ir(y,3*ne+1,3*fe+1),ir(y,3*ne+2,3*fe+2)}fe-Ife.x+1||Qefe.y+1)&&re("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return I}function No(m,y){return{type:m.type,id:m.id,properties:m.properties,geometry:y?da(m):[]}}function Do(m,y,I,U,J){m.emplaceBack(y*2+(U+1)/2,I*2+(J+1)/2)}var ps=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new ji,this.indexArray=new ma,this.segments=new ns,this.programConfigurations=new Ri(y.layers,y.zoom),this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};ps.prototype.populate=function(y,I,U){var J=this.layers[0],ne=[],fe=null;J.type==="circle"&&(fe=J.layout.get("circle-sort-key"));for(var Fe=0,Qe=y;Fe=rn||ur<0||ur>=rn)){var nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,y.sortKey),Lr=nr.vertexLength;Do(this.layoutVertexArray,Xt,ur,-1,-1),Do(this.layoutVertexArray,Xt,ur,1,-1),Do(this.layoutVertexArray,Xt,ur,1,1),Do(this.layoutVertexArray,Xt,ur,-1,1),this.indexArray.emplaceBack(Lr,Lr+1,Lr+2),this.indexArray.emplaceBack(Lr,Lr+3,Lr+2),nr.vertexLength+=4,nr.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,y,U,{},J)},Z("CircleBucket",ps,{omit:["layers"]});function fo(m,y){for(var I=0;I=3){for(var ne=0;ne1){if(Ev(m,y))return!0;for(var U=0;U1?m.distSqr(I):m.distSqr(I.sub(y)._mult(J)._add(y))}function vp(m,y){for(var I=!1,U,J,ne,fe=0;fey.y!=ne.y>y.y&&y.x<(ne.x-J.x)*(y.y-J.y)/(ne.y-J.y)+J.x&&(I=!I)}return I}function _d(m,y){for(var I=!1,U=0,J=m.length-1;Uy.y!=fe.y>y.y&&y.x<(fe.x-ne.x)*(y.y-ne.y)/(fe.y-ne.y)+ne.x&&(I=!I)}return I}function pp(m,y,I,U,J){for(var ne=0,fe=m;ne=Fe.x&&J>=Fe.y)return!0}var Qe=[new u(y,I),new u(y,J),new u(U,J),new u(U,I)];if(m.length>2)for(var st=0,mt=Qe;stJ.x&&y.x>J.x||m.yJ.y&&y.y>J.y)return!1;var ne=ae(m,y,I[0]);return ne!==ae(m,y,I[1])||ne!==ae(m,y,I[2])||ne!==ae(m,y,I[3])}function xd(m,y,I){var U=y.paint.get(m).value;return U.kind==="constant"?U.value:I.programConfigurations.get(y.id).getMaxValue(m)}function kv(m){return Math.sqrt(m[0]*m[0]+m[1]*m[1])}function Kv(m,y,I,U,J){if(!y[0]&&!y[1])return m;var ne=u.convert(y)._mult(J);I==="viewport"&&ne._rotate(-U);for(var fe=[],Fe=0;Fe0&&(ne=1/Math.sqrt(ne)),m[0]=y[0]*ne,m[1]=y[1]*ne,m[2]=y[2]*ne,m}function P9(m,y){return m[0]*y[0]+m[1]*y[1]+m[2]*y[2]}function I9(m,y,I){var U=y[0],J=y[1],ne=y[2],fe=I[0],Fe=I[1],Qe=I[2];return m[0]=J*Qe-ne*Fe,m[1]=ne*fe-U*Qe,m[2]=U*Fe-J*fe,m}function R9(m,y,I){var U=y[0],J=y[1],ne=y[2];return m[0]=U*I[0]+J*I[3]+ne*I[6],m[1]=U*I[1]+J*I[4]+ne*I[7],m[2]=U*I[2]+J*I[5]+ne*I[8],m}var D9=om,mQ=function(){var m=am();return function(y,I,U,J,ne,fe){var Fe,Qe;for(I||(I=3),U||(U=0),J?Qe=Math.min(J*I+U,y.length):Qe=y.length,Fe=U;Fem.width||J.height>m.height||I.x>m.width-J.width||I.y>m.height-J.height)throw new RangeError("out of range source coordinates for image copy");if(J.width>y.width||J.height>y.height||U.x>y.width-J.width||U.y>y.height-J.height)throw new RangeError("out of range destination coordinates for image copy");for(var fe=m.data,Fe=y.data,Qe=0;Qe80*I){Fe=st=m[0],Qe=mt=m[1];for(var Lr=I;Lrst&&(st=Xt),ur>mt&&(mt=ur);nr=Math.max(st-Fe,mt-Qe),nr=nr!==0?1/nr:0}return jx(ne,fe,I,Fe,Qe,nr),fe}function Iw(m,y,I,U,J){var ne,fe;if(J===uS(m,y,I,U)>0)for(ne=y;ne=y;ne-=U)fe=xC(ne,m[ne],m[ne+1],fe);return fe&&Zx(fe,fe.next)&&(Kx(fe),fe=fe.next),fe}function sm(m,y){if(!m)return m;y||(y=m);var I=m,U;do if(U=!1,!I.steiner&&(Zx(I,I.next)||tf(I.prev,I,I.next)===0)){if(Kx(I),I=y=I.prev,I===I.next)break;U=!0}else I=I.next;while(U||I!==y);return y}function jx(m,y,I,U,J,ne,fe){if(m){!fe&&ne&&Rw(m,U,J,ne);for(var Fe=m,Qe,st;m.prev!==m.next;){if(Qe=m.prev,st=m.next,ne?mC(m,U,J,ne):gC(m)){y.push(Qe.i/I),y.push(m.i/I),y.push(st.i/I),Kx(m),m=st.next,Fe=st.next;continue}if(m=st,m===Fe){fe?fe===1?(m=Wx(sm(m),y,I),jx(m,y,I,U,J,ne,2)):fe===2&&v0(m,y,I,U,J,ne):jx(sm(m),y,I,U,J,ne,1);break}}}}function gC(m){var y=m.prev,I=m,U=m.next;if(tf(y,I,U)>=0)return!1;for(var J=m.next.next;J!==m.prev;){if(um(y.x,y.y,I.x,I.y,U.x,U.y,J.x,J.y)&&tf(J.prev,J,J.next)>=0)return!1;J=J.next}return!0}function mC(m,y,I,U){var J=m.prev,ne=m,fe=m.next;if(tf(J,ne,fe)>=0)return!1;for(var Fe=J.xne.x?J.x>fe.x?J.x:fe.x:ne.x>fe.x?ne.x:fe.x,mt=J.y>ne.y?J.y>fe.y?J.y:fe.y:ne.y>fe.y?ne.y:fe.y,Xt=aS(Fe,Qe,y,I,U),ur=aS(st,mt,y,I,U),nr=m.prevZ,Lr=m.nextZ;nr&&nr.z>=Xt&&Lr&&Lr.z<=ur;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0||(nr=nr.prevZ,Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0))return!1;Lr=Lr.nextZ}for(;nr&&nr.z>=Xt;){if(nr!==m.prev&&nr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,nr.x,nr.y)&&tf(nr.prev,nr,nr.next)>=0)return!1;nr=nr.prevZ}for(;Lr&&Lr.z<=ur;){if(Lr!==m.prev&&Lr!==m.next&&um(J.x,J.y,ne.x,ne.y,fe.x,fe.y,Lr.x,Lr.y)&&tf(Lr.prev,Lr,Lr.next)>=0)return!1;Lr=Lr.nextZ}return!0}function Wx(m,y,I){var U=m;do{var J=U.prev,ne=U.next.next;!Zx(J,ne)&&Dw(J,U,U.next,ne)&&Yx(J,ne)&&Yx(ne,J)&&(y.push(J.i/I),y.push(U.i/I),y.push(ne.i/I),Kx(U),Kx(U.next),U=m=ne),U=U.next}while(U!==m);return sm(U)}function v0(m,y,I,U,J,ne){var fe=m;do{for(var Fe=fe.next.next;Fe!==fe.prev;){if(fe.i!==Fe.i&&E1(fe,Fe)){var Qe=sS(fe,Fe);fe=sm(fe,fe.next),Qe=sm(Qe,Qe.next),jx(fe,y,I,U,J,ne),jx(Qe,y,I,U,J,ne);return}Fe=Fe.next}fe=fe.next}while(fe!==m)}function lm(m,y,I,U){var J=[],ne,fe,Fe,Qe,st;for(ne=0,fe=y.length;ne=I.next.y&&I.next.y!==I.y){var Fe=I.x+(J-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(Fe<=U&&Fe>ne){if(ne=Fe,Fe===U){if(J===I.y)return I;if(J===I.next.y)return I.next}fe=I.x=I.x&&I.x>=st&&U!==I.x&&um(Jfe.x||I.x===fe.x&&H9(fe,I)))&&(fe=I,Xt=ur)),I=I.next;while(I!==Qe);return fe}function H9(m,y){return tf(m.prev,m,y.prev)<0&&tf(y.next,m,m.next)<0}function Rw(m,y,I,U){var J=m;do J.z===null&&(J.z=aS(J.x,J.y,y,I,U)),J.prevZ=J.prev,J.nextZ=J.next,J=J.next;while(J!==m);J.prevZ.nextZ=null,J.prevZ=null,nS(J)}function nS(m){var y,I,U,J,ne,fe,Fe,Qe,st=1;do{for(I=m,m=null,ne=null,fe=0;I;){for(fe++,U=I,Fe=0,y=0;y0||Qe>0&&U;)Fe!==0&&(Qe===0||!U||I.z<=U.z)?(J=I,I=I.nextZ,Fe--):(J=U,U=U.nextZ,Qe--),ne?ne.nextZ=J:m=J,J.prevZ=ne,ne=J;I=U}ne.nextZ=null,st*=2}while(fe>1);return m}function aS(m,y,I,U,J){return m=32767*(m-I)*J,y=32767*(y-U)*J,m=(m|m<<8)&16711935,m=(m|m<<4)&252645135,m=(m|m<<2)&858993459,m=(m|m<<1)&1431655765,y=(y|y<<8)&16711935,y=(y|y<<4)&252645135,y=(y|y<<2)&858993459,y=(y|y<<1)&1431655765,m|y<<1}function oS(m){var y=m,I=m;do(y.x=0&&(m-fe)*(U-Fe)-(I-fe)*(y-Fe)>=0&&(I-fe)*(ne-Fe)-(J-fe)*(U-Fe)>=0}function E1(m,y){return m.next.i!==y.i&&m.prev.i!==y.i&&!_C(m,y)&&(Yx(m,y)&&Yx(y,m)&&G9(m,y)&&(tf(m.prev,m,y.prev)||tf(m,y.prev,y))||Zx(m,y)&&tf(m.prev,m,m.next)>0&&tf(y.prev,y,y.next)>0)}function tf(m,y,I){return(y.y-m.y)*(I.x-y.x)-(y.x-m.x)*(I.y-y.y)}function Zx(m,y){return m.x===y.x&&m.y===y.y}function Dw(m,y,I,U){var J=uy(tf(m,y,I)),ne=uy(tf(m,y,U)),fe=uy(tf(I,U,m)),Fe=uy(tf(I,U,y));return!!(J!==ne&&fe!==Fe||J===0&&Xx(m,I,y)||ne===0&&Xx(m,U,y)||fe===0&&Xx(I,m,U)||Fe===0&&Xx(I,y,U))}function Xx(m,y,I){return y.x<=Math.max(m.x,I.x)&&y.x>=Math.min(m.x,I.x)&&y.y<=Math.max(m.y,I.y)&&y.y>=Math.min(m.y,I.y)}function uy(m){return m>0?1:m<0?-1:0}function _C(m,y){var I=m;do{if(I.i!==m.i&&I.next.i!==m.i&&I.i!==y.i&&I.next.i!==y.i&&Dw(I,I.next,m,y))return!0;I=I.next}while(I!==m);return!1}function Yx(m,y){return tf(m.prev,m,m.next)<0?tf(m,y,m.next)>=0&&tf(m,m.prev,y)>=0:tf(m,y,m.prev)<0||tf(m,m.next,y)<0}function G9(m,y){var I=m,U=!1,J=(m.x+y.x)/2,ne=(m.y+y.y)/2;do I.y>ne!=I.next.y>ne&&I.next.y!==I.y&&J<(I.next.x-I.x)*(ne-I.y)/(I.next.y-I.y)+I.x&&(U=!U),I=I.next;while(I!==m);return U}function sS(m,y){var I=new lS(m.i,m.x,m.y),U=new lS(y.i,y.x,y.y),J=m.next,ne=y.prev;return m.next=y,y.prev=m,I.next=J,J.prev=I,U.next=I,I.prev=U,ne.next=U,U.prev=ne,U}function xC(m,y,I,U){var J=new lS(m,y,I);return U?(J.next=U.next,J.prev=U,U.next.prev=J,U.next=J):(J.prev=J,J.next=J),J}function Kx(m){m.next.prev=m.prev,m.prev.next=m.next,m.prevZ&&(m.prevZ.nextZ=m.nextZ),m.nextZ&&(m.nextZ.prevZ=m.prevZ)}function lS(m,y,I){this.i=m,this.x=y,this.y=I,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}M1.deviation=function(m,y,I,U){var J=y&&y.length,ne=J?y[0]*I:m.length,fe=Math.abs(uS(m,0,ne,I));if(J)for(var Fe=0,Qe=y.length;Fe0&&(U+=m[J-1].length,I.holes.push(U))}return I},Pw.default=pC;function cS(m,y,I,U,J){dg(m,y,I||0,U||m.length-1,J||bC)}function dg(m,y,I,U,J){for(;U>I;){if(U-I>600){var ne=U-I+1,fe=y-I+1,Fe=Math.log(ne),Qe=.5*Math.exp(2*Fe/3),st=.5*Math.sqrt(Fe*Qe*(ne-Qe)/ne)*(fe-ne/2<0?-1:1),mt=Math.max(I,Math.floor(y-fe*Qe/ne+st)),Xt=Math.min(U,Math.floor(y+(ne-fe)*Qe/ne+st));dg(m,y,mt,Xt,J)}var ur=m[y],nr=I,Lr=U;for(k1(m,I,y),J(m[U],ur)>0&&k1(m,I,U);nr0;)Lr--}J(m[I],ur)===0?k1(m,I,Lr):(Lr++,k1(m,Lr,U)),Lr<=y&&(I=Lr+1),y<=Lr&&(U=Lr-1)}}function k1(m,y,I){var U=m[y];m[y]=m[I],m[I]=U}function bC(m,y){return my?1:0}function zw(m,y){var I=m.length;if(I<=1)return[m];for(var U=[],J,ne,fe=0;fe1)for(var Qe=0;Qe>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),I===1&&(Fe&&fe.push(Fe),Fe=[]),Fe.push(new u(J,ne));else if(I===7)Fe&&Fe.push(Fe[0].clone());else throw new Error("unknown command "+I)}return Fe&&fe.push(Fe),fe},cy.prototype.bbox=function(){var m=this._pbf;m.pos=this._geometry;for(var y=m.readVarint()+m.pos,I=1,U=0,J=0,ne=0,fe=1/0,Fe=-1/0,Qe=1/0,st=-1/0;m.pos>3}if(U--,I===1||I===2)J+=m.readSVarint(),ne+=m.readSVarint(),JFe&&(Fe=J),nest&&(st=ne);else if(I!==7)throw new Error("unknown command "+I)}return[fe,Qe,Fe,st]},cy.prototype.toGeoJSON=function(m,y,I){var U=this.extent*Math.pow(2,I),J=this.extent*m,ne=this.extent*y,fe=this.loadGeometry(),Fe=cy.types[this.type],Qe,st;function mt(nr){for(var Lr=0;Lr>3;y=U===1?m.readString():U===2?m.readFloat():U===3?m.readDouble():U===4?m.readVarint64():U===5?m.readVarint():U===6?m.readSVarint():U===7?m.readBoolean():null}return y}dS.prototype.feature=function(m){if(m<0||m>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[m];var y=this._pbf.readVarint()+this._pbf.pos;return new hS(this._pbf,y,this.extent,this._keys,this._values)};var PC=W9;function W9(m,y){this.layers=m.readFields(Z9,{},y)}function Z9(m,y,I){if(m===3){var U=new vg(I,I.readVarint()+I.pos);U.length&&(y[U.name]=U)}}var IC=PC,C1=hS,RC=vg,pg={VectorTile:IC,VectorTileFeature:C1,VectorTileLayer:RC},DC=pg.VectorTileFeature.types,qw=500,L1=Math.pow(2,13);function cm(m,y,I,U,J,ne,fe,Fe){m.emplaceBack(y,I,Math.floor(U*L1)*2+fe,J*L1*2,ne*L1*2,Math.round(Fe))}var Hp=function(y){this.zoom=y.zoom,this.overscaling=y.overscaling,this.layers=y.layers,this.layerIds=this.layers.map(function(I){return I.id}),this.index=y.index,this.hasPattern=!1,this.layoutVertexArray=new Un,this.indexArray=new ma,this.programConfigurations=new Ri(y.layers,y.zoom),this.segments=new ns,this.stateDependentLayerIds=this.layers.filter(function(I){return I.isStateDependent()}).map(function(I){return I.id})};Hp.prototype.populate=function(y,I,U){this.features=[],this.hasPattern=Fw("fill-extrusion",this.layers,I);for(var J=0,ne=y;J=1){var Vi=_i[Hi-1];if(!X9(Ei,Vi)){nr.vertexLength+4>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var en=Ei.sub(Vi)._perp()._unit(),An=Vi.dist(Ei);si+An>32768&&(si=0),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Ei.x,Ei.y,en.x,en.y,0,1,si),si+=An,cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,0,si),cm(this.layoutVertexArray,Vi.x,Vi.y,en.x,en.y,0,1,si);var ra=nr.vertexLength;this.indexArray.emplaceBack(ra,ra+2,ra+1),this.indexArray.emplaceBack(ra+1,ra+2,ra+3),nr.vertexLength+=4,nr.primitiveLength+=2}}}}if(nr.vertexLength+st>ns.MAX_VERTEX_ARRAY_LENGTH&&(nr=this.segments.prepareSegment(st,this.layoutVertexArray,this.indexArray)),DC[y.type]==="Polygon"){for(var $n=[],Ba=[],_a=nr.vertexLength,Pa=0,qo=Qe;Parn)||m.y===y.y&&(m.y<0||m.y>rn)}function Y9(m){return m.every(function(y){return y.x<0})||m.every(function(y){return y.x>rn})||m.every(function(y){return y.y<0})||m.every(function(y){return y.y>rn})}var P1=new Oi({"fill-extrusion-opacity":new At(on["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Er(on["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new At(on["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new At(on["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Wr(on["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Er(on["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Er(on["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new At(on["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])}),ed={paint:P1},fm=function(m){function y(I){m.call(this,I,ed)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.createBucket=function(U){return new Hp(U)},y.prototype.queryRadius=function(){return kv(this.paint.get("fill-extrusion-translate"))},y.prototype.is3D=function(){return!0},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st,mt){var Xt=Kv(U,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),Qe.angle,st),ur=this.paint.get("fill-extrusion-height").evaluate(J,ne),nr=this.paint.get("fill-extrusion-base").evaluate(J,ne),Lr=K9(Xt,mt,Qe,0),Yr=pS(fe,nr,ur,mt),_i=Yr[0],si=Yr[1];return zC(_i,si,Lr)},y}(cn);function fy(m,y){return m.x*y.x+m.y*y.y}function vS(m,y){if(m.length===1){for(var I=0,U=y[I++],J;!J||U.equals(J);)if(J=y[I++],!J)return 1/0;for(;I=2&&y[st-1].equals(y[st-2]);)st--;for(var mt=0;mt0;if($n&&Hi>mt){var _a=nr.dist(Lr);if(_a>2*Xt){var Pa=nr.sub(nr.sub(Lr)._mult(Xt/_a)._round());this.updateDistance(Lr,Pa),this.addCurrentVertex(Pa,_i,0,0,ur),Lr=Pa}}var qo=Lr&&Yr,Na=qo?U:Qe?"butt":J;if(qo&&Na==="round"&&(Anne&&(Na="bevel"),Na==="bevel"&&(An>2&&(Na="flipbevel"),An100)Ei=si.mult(-1);else{var ja=An*_i.add(si).mag()/_i.sub(si).mag();Ei._perp()._mult(ja*(Ba?-1:1))}this.addCurrentVertex(nr,Ei,0,0,ur),this.addCurrentVertex(nr,Ei.mult(-1),0,0,ur)}else if(Na==="bevel"||Na==="fakeround"){var us=-Math.sqrt(An*An-1),zo=Ba?us:0,rl=Ba?0:us;if(Lr&&this.addCurrentVertex(nr,_i,zo,rl,ur),Na==="fakeround")for(var su=Math.round(ra*180/Math.PI/mS),il=1;il2*Xt){var Zf=nr.add(Yr.sub(nr)._mult(Xt/qh)._round());this.updateDistance(nr,Zf),this.addCurrentVertex(Zf,si,0,0,ur),nr=Zf}}}}},Gf.prototype.addCurrentVertex=function(y,I,U,J,ne,fe){fe===void 0&&(fe=!1);var Fe=I.x+I.y*U,Qe=I.y-I.x*U,st=-I.x+I.y*J,mt=-I.y-I.x*J;this.addHalfVertex(y,Fe,Qe,fe,!1,U,ne),this.addHalfVertex(y,st,mt,fe,!0,-J,ne),this.distance>tb/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(y,I,U,J,ne,fe))},Gf.prototype.addHalfVertex=function(y,I,U,J,ne,fe,Fe){var Qe=y.x,st=y.y,mt=this.lineClips?this.scaledDistance*(tb-1):this.scaledDistance,Xt=mt*Bw;if(this.layoutVertexArray.emplaceBack((Qe<<1)+(J?1:0),(st<<1)+(ne?1:0),Math.round(Ow*I)+128,Math.round(Ow*U)+128,(fe===0?0:fe<0?-1:1)+1|(Xt&63)<<2,Xt>>6),this.lineClips){var ur=this.scaledDistance-this.lineClips.start,nr=this.lineClips.end-this.lineClips.start,Lr=ur/nr;this.layoutVertexArray2.emplaceBack(Lr,this.lineClipsArray.length)}var Yr=Fe.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Yr),Fe.primitiveLength++),ne?this.e2=Yr:this.e1=Yr},Gf.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},Gf.prototype.updateDistance=function(y,I){this.distance+=y.dist(I),this.updateScaledDistance()},Z("LineBucket",Gf,{omit:["layers","patternFeatures"]});var yS=new Oi({"line-cap":new At(on.layout_line["line-cap"]),"line-join":new Er(on.layout_line["line-join"]),"line-miter-limit":new At(on.layout_line["line-miter-limit"]),"line-round-limit":new At(on.layout_line["line-round-limit"]),"line-sort-key":new Er(on.layout_line["line-sort-key"])}),_S=new Oi({"line-opacity":new Er(on.paint_line["line-opacity"]),"line-color":new Er(on.paint_line["line-color"]),"line-translate":new At(on.paint_line["line-translate"]),"line-translate-anchor":new At(on.paint_line["line-translate-anchor"]),"line-width":new Er(on.paint_line["line-width"]),"line-gap-width":new Er(on.paint_line["line-gap-width"]),"line-offset":new Er(on.paint_line["line-offset"]),"line-blur":new Er(on.paint_line["line-blur"]),"line-dasharray":new wi(on.paint_line["line-dasharray"]),"line-pattern":new Wr(on.paint_line["line-pattern"]),"line-gradient":new Ui(on.paint_line["line-gradient"])}),Nw={paint:_S,layout:yS},$9=function(m){function y(){m.apply(this,arguments)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.possiblyEvaluate=function(U,J){return J=new pn(Math.floor(J.zoom),{now:J.now,fadeDuration:J.fadeDuration,zoomHistory:J.zoomHistory,transition:J.transition}),m.prototype.possiblyEvaluate.call(this,U,J)},y.prototype.evaluate=function(U,J,ne,fe){return J=_({},J,{zoom:Math.floor(J.zoom)}),m.prototype.evaluate.call(this,U,J,ne,fe)},y}(Er),R=new $9(Nw.paint.properties["line-width"].specification);R.useIntegerZoom=!0;var S=function(m){function y(I){m.call(this,I,Nw),this.gradientVersion=0}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype._handleSpecialPaintPropertyUpdate=function(U){if(U==="line-gradient"){var J=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=J._styleExpression.expression instanceof yu,this.gradientVersion=(this.gradientVersion+1)%d}},y.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},y.prototype.recalculate=function(U,J){m.prototype.recalculate.call(this,U,J),this.paint._values["line-floorwidth"]=R.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,U)},y.prototype.createBucket=function(U){return new Gf(U)},y.prototype.queryRadius=function(U){var J=U,ne=D(xd("line-width",this,J),xd("line-gap-width",this,J)),fe=xd("line-offset",this,J);return ne/2+Math.abs(fe)+kv(this.paint.get("line-translate"))},y.prototype.queryIntersectsFeature=function(U,J,ne,fe,Fe,Qe,st){var mt=Kv(U,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),Qe.angle,st),Xt=st/2*D(this.paint.get("line-width").evaluate(J,ne),this.paint.get("line-gap-width").evaluate(J,ne)),ur=this.paint.get("line-offset").evaluate(J,ne);return ur&&(fe=j(fe,ur*st)),zu(mt,fe,Xt)},y.prototype.isTileClipped=function(){return!0},y}(cn);function D(m,y){return y>0?y+2*m:m}function j(m,y){for(var I=[],U=new u(0,0),J=0;J":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};function ki(m){for(var y="",I=0;I>1,mt=-7,Xt=I?J-1:0,ur=I?-1:1,nr=m[y+Xt];for(Xt+=ur,ne=nr&(1<<-mt)-1,nr>>=-mt,mt+=Fe;mt>0;ne=ne*256+m[y+Xt],Xt+=ur,mt-=8);for(fe=ne&(1<<-mt)-1,ne>>=-mt,mt+=U;mt>0;fe=fe*256+m[y+Xt],Xt+=ur,mt-=8);if(ne===0)ne=1-st;else{if(ne===Qe)return fe?NaN:(nr?-1:1)*(1/0);fe=fe+Math.pow(2,U),ne=ne-st}return(nr?-1:1)*fe*Math.pow(2,ne-U)},Va=function(m,y,I,U,J,ne){var fe,Fe,Qe,st=ne*8-J-1,mt=(1<>1,ur=J===23?Math.pow(2,-24)-Math.pow(2,-77):0,nr=U?0:ne-1,Lr=U?1:-1,Yr=y<0||y===0&&1/y<0?1:0;for(y=Math.abs(y),isNaN(y)||y===1/0?(Fe=isNaN(y)?1:0,fe=mt):(fe=Math.floor(Math.log(y)/Math.LN2),y*(Qe=Math.pow(2,-fe))<1&&(fe--,Qe*=2),fe+Xt>=1?y+=ur/Qe:y+=ur*Math.pow(2,1-Xt),y*Qe>=2&&(fe++,Qe/=2),fe+Xt>=mt?(Fe=0,fe=mt):fe+Xt>=1?(Fe=(y*Qe-1)*Math.pow(2,J),fe=fe+Xt):(Fe=y*Math.pow(2,Xt-1)*Math.pow(2,J),fe=0));J>=8;m[I+nr]=Fe&255,nr+=Lr,Fe/=256,J-=8);for(fe=fe<0;m[I+nr]=fe&255,nr+=Lr,fe/=256,st-=8);m[I+nr-Lr]|=Yr*128},Io={read:ta,write:Va},La=Hn;function Hn(m){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(m)?m:new Uint8Array(m||0),this.pos=0,this.type=0,this.length=this.buf.length}Hn.Varint=0,Hn.Fixed64=1,Hn.Bytes=2,Hn.Fixed32=5;var lo=65536*65536,$a=1/lo,Xa=12,Tn=typeof TextDecoder=="undefined"?null:new TextDecoder("utf8");Hn.prototype={destroy:function(){this.buf=null},readFields:function(m,y,I){for(I=I||this.length;this.pos>3,ne=this.pos;this.type=U&7,m(J,y,this),this.pos===ne&&this.skip(U)}return y},readMessage:function(m,y){return this.readFields(m,y,this.readVarint()+this.pos)},readFixed32:function(){var m=Dh(this.buf,this.pos);return this.pos+=4,m},readSFixed32:function(){var m=Iv(this.buf,this.pos);return this.pos+=4,m},readFixed64:function(){var m=Dh(this.buf,this.pos)+Dh(this.buf,this.pos+4)*lo;return this.pos+=8,m},readSFixed64:function(){var m=Dh(this.buf,this.pos)+Iv(this.buf,this.pos+4)*lo;return this.pos+=8,m},readFloat:function(){var m=Io.read(this.buf,this.pos,!0,23,4);return this.pos+=4,m},readDouble:function(){var m=Io.read(this.buf,this.pos,!0,52,8);return this.pos+=8,m},readVarint:function(m){var y=this.buf,I,U;return U=y[this.pos++],I=U&127,U<128||(U=y[this.pos++],I|=(U&127)<<7,U<128)||(U=y[this.pos++],I|=(U&127)<<14,U<128)||(U=y[this.pos++],I|=(U&127)<<21,U<128)?I:(U=y[this.pos],I|=(U&15)<<28,bo(I,m,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var m=this.readVarint();return m%2===1?(m+1)/-2:m/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var m=this.readVarint()+this.pos,y=this.pos;return this.pos=m,m-y>=Xa&&Tn?Cl(this.buf,y,m):lv(this.buf,y,m)},readBytes:function(){var m=this.readVarint()+this.pos,y=this.buf.subarray(this.pos,m);return this.pos=m,y},readPackedVarint:function(m,y){if(this.type!==Hn.Bytes)return m.push(this.readVarint(y));var I=Ya(this);for(m=m||[];this.pos127;);else if(y===Hn.Bytes)this.pos=this.readVarint()+this.pos;else if(y===Hn.Fixed32)this.pos+=4;else if(y===Hn.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+y)},writeTag:function(m,y){this.writeVarint(m<<3|y)},realloc:function(m){for(var y=this.length||16;y268435455||m<0){wu(m,this);return}this.realloc(4),this.buf[this.pos++]=m&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=(m>>>=7)&127|(m>127?128:0),!(m<=127)&&(this.buf[this.pos++]=m>>>7&127)))},writeSVarint:function(m){this.writeVarint(m<0?-m*2-1:m*2)},writeBoolean:function(m){this.writeVarint(!!m)},writeString:function(m){m=String(m),this.realloc(m.length*4),this.pos++;var y=this.pos;this.pos=qu(this.buf,m,this.pos);var I=this.pos-y;I>=128&&$v(y,I,this),this.pos=y-1,this.writeVarint(I),this.pos+=I},writeFloat:function(m){this.realloc(4),Io.write(this.buf,m,this.pos,!0,23,4),this.pos+=4},writeDouble:function(m){this.realloc(8),Io.write(this.buf,m,this.pos,!0,52,8),this.pos+=8},writeBytes:function(m){var y=m.length;this.writeVarint(y),this.realloc(y);for(var I=0;I=128&&$v(I,U,this),this.pos=I-1,this.writeVarint(U),this.pos+=U},writeMessage:function(m,y,I){this.writeTag(m,Hn.Bytes),this.writeRawMessage(y,I)},writePackedVarint:function(m,y){y.length&&this.writeMessage(m,td,y)},writePackedSVarint:function(m,y){y.length&&this.writeMessage(m,ch,y)},writePackedBoolean:function(m,y){y.length&&this.writeMessage(m,Hd,y)},writePackedFloat:function(m,y){y.length&&this.writeMessage(m,Ud,y)},writePackedDouble:function(m,y){y.length&&this.writeMessage(m,Vd,y)},writePackedFixed32:function(m,y){y.length&&this.writeMessage(m,rf,y)},writePackedSFixed32:function(m,y){y.length&&this.writeMessage(m,fh,y)},writePackedFixed64:function(m,y){y.length&&this.writeMessage(m,Td,y)},writePackedSFixed64:function(m,y){y.length&&this.writeMessage(m,rd,y)},writeBytesField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeBytes(y)},writeFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFixed32(y)},writeSFixed32Field:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeSFixed32(y)},writeFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeFixed64(y)},writeSFixed64Field:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeSFixed64(y)},writeVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeVarint(y)},writeSVarintField:function(m,y){this.writeTag(m,Hn.Varint),this.writeSVarint(y)},writeStringField:function(m,y){this.writeTag(m,Hn.Bytes),this.writeString(y)},writeFloatField:function(m,y){this.writeTag(m,Hn.Fixed32),this.writeFloat(y)},writeDoubleField:function(m,y){this.writeTag(m,Hn.Fixed64),this.writeDouble(y)},writeBooleanField:function(m,y){this.writeVarintField(m,!!y)}};function bo(m,y,I){var U=I.buf,J,ne;if(ne=U[I.pos++],J=(ne&112)>>4,ne<128||(ne=U[I.pos++],J|=(ne&127)<<3,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<10,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<17,ne<128)||(ne=U[I.pos++],J|=(ne&127)<<24,ne<128)||(ne=U[I.pos++],J|=(ne&1)<<31,ne<128))return Uo(m,J,y);throw new Error("Expected varint not more than 10 bytes")}function Ya(m){return m.type===Hn.Bytes?m.readVarint()+m.pos:m.pos+1}function Uo(m,y,I){return I?y*4294967296+(m>>>0):(y>>>0)*4294967296+(m>>>0)}function wu(m,y){var I,U;if(m>=0?(I=m%4294967296|0,U=m/4294967296|0):(I=~(-m%4294967296),U=~(-m/4294967296),I^4294967295?I=I+1|0:(I=0,U=U+1|0)),m>=18446744073709552e3||m<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");y.realloc(10),hu(I,U,y),uh(U,y)}function hu(m,y,I){I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos++]=m&127|128,m>>>=7,I.buf[I.pos]=m&127}function uh(m,y){var I=(m&7)<<4;y.buf[y.pos++]|=I|((m>>>=3)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127|((m>>>=7)?128:0),m&&(y.buf[y.pos++]=m&127)))))}function $v(m,y,I){var U=y<=16383?1:y<=2097151?2:y<=268435455?3:Math.floor(Math.log(y)/(Math.LN2*7));I.realloc(U);for(var J=I.pos-1;J>=m;J--)I.buf[J+U]=I.buf[J]}function td(m,y){for(var I=0;I>>8,m[I+2]=y>>>16,m[I+3]=y>>>24}function Iv(m,y){return(m[y]|m[y+1]<<8|m[y+2]<<16)+(m[y+3]<<24)}function lv(m,y,I){for(var U="",J=y;J239?4:ne>223?3:ne>191?2:1;if(J+Fe>I)break;var Qe,st,mt;Fe===1?ne<128&&(fe=ne):Fe===2?(Qe=m[J+1],(Qe&192)===128&&(fe=(ne&31)<<6|Qe&63,fe<=127&&(fe=null))):Fe===3?(Qe=m[J+1],st=m[J+2],(Qe&192)===128&&(st&192)===128&&(fe=(ne&15)<<12|(Qe&63)<<6|st&63,(fe<=2047||fe>=55296&&fe<=57343)&&(fe=null))):Fe===4&&(Qe=m[J+1],st=m[J+2],mt=m[J+3],(Qe&192)===128&&(st&192)===128&&(mt&192)===128&&(fe=(ne&15)<<18|(Qe&63)<<12|(st&63)<<6|mt&63,(fe<=65535||fe>=1114112)&&(fe=null))),fe===null?(fe=65533,Fe=1):fe>65535&&(fe-=65536,U+=String.fromCharCode(fe>>>10&1023|55296),fe=56320|fe&1023),U+=String.fromCharCode(fe),J+=Fe}return U}function Cl(m,y,I){return Tn.decode(m.subarray(y,I))}function qu(m,y,I){for(var U=0,J,ne;U55295&&J<57344)if(ne)if(J<56320){m[I++]=239,m[I++]=191,m[I++]=189,ne=J;continue}else J=ne-55296<<10|J-56320|65536,ne=null;else{J>56319||U+1===y.length?(m[I++]=239,m[I++]=191,m[I++]=189):ne=J;continue}else ne&&(m[I++]=239,m[I++]=191,m[I++]=189,ne=null);J<128?m[I++]=J:(J<2048?m[I++]=J>>6|192:(J<65536?m[I++]=J>>12|224:(m[I++]=J>>18|240,m[I++]=J>>12&63|128),m[I++]=J>>6&63|128),m[I++]=J&63|128)}return I}var Tu=3;function Rv(m,y,I){m===1&&I.readMessage(qc,y)}function qc(m,y,I){if(m===3){var U=I.readMessage(I1,{}),J=U.id,ne=U.bitmap,fe=U.width,Fe=U.height,Qe=U.left,st=U.top,mt=U.advance;y.push({id:J,bitmap:new Pv({width:fe+2*Tu,height:Fe+2*Tu},ne),metrics:{width:fe,height:Fe,left:Qe,top:st,advance:mt}})}}function I1(m,y,I){m===1?y.id=I.readVarint():m===2?y.bitmap=I.readBytes():m===3?y.width=I.readVarint():m===4?y.height=I.readVarint():m===5?y.left=I.readSVarint():m===6?y.top=I.readSVarint():m===7&&(y.advance=I.readVarint())}function p0(m){return new La(m).readFields(Rv,[])}var Gp=Tu;function Qv(m){for(var y=0,I=0,U=0,J=m;U=0;nr--){var Lr=Fe[nr];if(!(ur.w>Lr.w||ur.h>Lr.h)){if(ur.x=Lr.x,ur.y=Lr.y,st=Math.max(st,ur.y+ur.h),Qe=Math.max(Qe,ur.x+ur.w),ur.w===Lr.w&&ur.h===Lr.h){var Yr=Fe.pop();nr=0&&J>=y&&m0[this.text.charCodeAt(J)];J--)U--;this.text=this.text.substring(y,U),this.sectionIndex=this.sectionIndex.slice(y,U)},zh.prototype.substring=function(y,I){var U=new zh;return U.text=this.text.substring(y,I),U.sectionIndex=this.sectionIndex.slice(y,I),U.sections=this.sections,U},zh.prototype.toString=function(){return this.text},zh.prototype.getMaxScale=function(){var y=this;return this.sectionIndex.reduce(function(I,U){return Math.max(I,y.sections[U].scale)},0)},zh.prototype.addTextSection=function(y,I){this.text+=y.text,this.sections.push(hy.forText(y.scale,y.fontStack||I));for(var U=this.sections.length-1,J=0;J=g0?null:++this.imageSectionID:(this.imageSectionID=Uw,this.imageSectionID)};function Q9(m,y){for(var I=[],U=m.text,J=0,ne=0,fe=y;ne=0,mt=0,Xt=0;Xt0&&Zf>Ba&&(Ba=Zf)}else{var nl=I[Pa.fontStack],Ws=nl&&nl[Na];if(Ws&&Ws.rect)zo=Ws.rect,us=Ws.metrics;else{var Au=y[Pa.fontStack],Ou=Au&&Au[Na];if(!Ou)continue;us=Ou.metrics}ja=(en-Pa.scale)*Zi}il?(m.verticalizable=!0,$n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=su*Pa.scale+st):($n.push({glyph:Na,imageName:rl,x:ur,y:nr+ja,vertical:il,scale:Pa.scale,fontStack:Pa.fontStack,sectionIndex:qo,metrics:us,rect:zo}),ur+=us.advance*Pa.scale+st)}if($n.length!==0){var jd=ur-st;Lr=Math.max(jd,Lr),iq($n,0,$n.length-1,_i,Ba)}ur=0;var Wd=ne*en+Ba;ra.lineOffset=Math.max(Ba,An),nr+=Wd,Yr=Math.max(Wd,Yr),++si}var Oh=nr-R1,fv=bS(fe),hv=fv.horizontalAlign,hh=fv.verticalAlign;Ad(m.positionedLines,_i,hv,hh,Lr,Yr,ne,Oh,J.length),m.top+=-hh*Oh,m.bottom=m.top+Oh,m.left+=-hv*Lr,m.right=m.left+Lr}function iq(m,y,I,U,J){if(!(!U&&!J))for(var ne=m[I],fe=ne.metrics.advance*ne.scale,Fe=(m[I].x+fe)*U,Qe=y;Qe<=I;Qe++)m[Qe].x-=Fe,m[Qe].y+=J}function Ad(m,y,I,U,J,ne,fe,Fe,Qe){var st=(y-I)*J,mt=0;ne!==fe?mt=-Fe*U-R1:mt=(-U*Qe+.5)*fe;for(var Xt=0,ur=m;Xt-I/2;){if(fe--,fe<0)return!1;Fe-=m[fe].dist(ne),ne=m[fe]}Fe+=m[fe].dist(m[fe+1]),fe++;for(var Qe=[],st=0;FeU;)st-=Qe.shift().angleDelta;if(st>J)return!1;fe++,Fe+=Xt.dist(ur)}return!0}function wQ(m){for(var y=0,I=0;Ist){var Lr=(st-Qe)/nr,Yr=Qs(Xt.x,ur.x,Lr),_i=Qs(Xt.y,ur.y,Lr),si=new Gd(Yr,_i,ur.angleTo(Xt),mt);return si._round(),!fe||bQ(m,si,Fe,fe,y)?si:void 0}Qe+=nr}}function aQe(m,y,I,U,J,ne,fe,Fe,Qe){var st=TQ(U,ne,fe),mt=AQ(U,J),Xt=mt*fe,ur=m[0].x===0||m[0].x===Qe||m[0].y===0||m[0].y===Qe;y-Xt=0&&Vi=0&&en=0&&ur+st<=mt){var An=new Gd(Vi,en,Hi,Lr);An._round(),(!U||bQ(m,An,ne,U,J))&&nr.push(An)}}Xt+=si}return!Fe&&!nr.length&&!fe&&(nr=SQ(m,Xt/2,I,U,J,ne,fe,!0,Qe)),nr}function MQ(m,y,I,U,J){for(var ne=[],fe=0;fe=U&&Xt.x>=U)&&(mt.x>=U?mt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round():Xt.x>=U&&(Xt=new u(U,mt.y+(Xt.y-mt.y)*((U-mt.x)/(Xt.x-mt.x)))._round()),!(mt.y>=J&&Xt.y>=J)&&(mt.y>=J?mt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round():Xt.y>=J&&(Xt=new u(mt.x+(Xt.x-mt.x)*((J-mt.y)/(Xt.y-mt.y)),J)._round()),(!Qe||!mt.equals(Qe[Qe.length-1]))&&(Qe=[mt],ne.push(Qe)),Qe.push(Xt)))))}return ne}var Gw=oc;function EQ(m,y,I,U){var J=[],ne=m.image,fe=ne.pixelRatio,Fe=ne.paddedRect.w-2*Gw,Qe=ne.paddedRect.h-2*Gw,st=m.right-m.left,mt=m.bottom-m.top,Xt=ne.stretchX||[[0,Fe]],ur=ne.stretchY||[[0,Qe]],nr=function(nl,Ws){return nl+Ws[1]-Ws[0]},Lr=Xt.reduce(nr,0),Yr=ur.reduce(nr,0),_i=Fe-Lr,si=Qe-Yr,Hi=0,Ei=Lr,Vi=0,en=Yr,An=0,ra=_i,$n=0,Ba=si;if(ne.content&&U){var _a=ne.content;Hi=HC(Xt,0,_a[0]),Vi=HC(ur,0,_a[1]),Ei=HC(Xt,_a[0],_a[2]),en=HC(ur,_a[1],_a[3]),An=_a[0]-Hi,$n=_a[1]-Vi,ra=_a[2]-_a[0]-Ei,Ba=_a[3]-_a[1]-en}var Pa=function(nl,Ws,Au,Ou){var nf=GC(nl.stretch-Hi,Ei,st,m.left),bf=jC(nl.fixed-An,ra,nl.stretch,Lr),qh=GC(Ws.stretch-Vi,en,mt,m.top),Zf=jC(Ws.fixed-$n,Ba,Ws.stretch,Yr),jd=GC(Au.stretch-Hi,Ei,st,m.left),Wd=jC(Au.fixed-An,ra,Au.stretch,Lr),Oh=GC(Ou.stretch-Vi,en,mt,m.top),fv=jC(Ou.fixed-$n,Ba,Ou.stretch,Yr),hv=new u(nf,qh),hh=new u(jd,qh),dv=new u(jd,Oh),_p=new u(nf,Oh),py=new u(bf/fe,Zf/fe),F1=new u(Wd/fe,fv/fe),q1=y*Math.PI/180;if(q1){var O1=Math.sin(q1),$w=Math.cos(q1),y0=[$w,-O1,O1,$w];hv._matMult(y0),hh._matMult(y0),_p._matMult(y0),dv._matMult(y0)}var JC=nl.stretch+nl.fixed,fq=Au.stretch+Au.fixed,$C=Ws.stretch+Ws.fixed,hq=Ou.stretch+Ou.fixed,jp={x:ne.paddedRect.x+Gw+JC,y:ne.paddedRect.y+Gw+$C,w:fq-JC,h:hq-$C},Qw=ra/fe/st,QC=Ba/fe/mt;return{tl:hv,tr:hh,bl:_p,br:dv,tex:jp,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:py,pixelOffsetBR:F1,minFontScaleX:Qw,minFontScaleY:QC,isSDF:I}};if(!U||!ne.stretchX&&!ne.stretchY)J.push(Pa({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:Fe+1},{fixed:0,stretch:Qe+1}));else for(var qo=kQ(Xt,_i,Lr),Na=kQ(ur,si,Yr),ja=0;ja0&&(Lr=Math.max(10,Lr),this.circleDiameter=Lr)}else{var Yr=fe.top*Fe-Qe,_i=fe.bottom*Fe+Qe,si=fe.left*Fe-Qe,Hi=fe.right*Fe+Qe,Ei=fe.collisionPadding;if(Ei&&(si-=Ei[0]*Fe,Yr-=Ei[1]*Fe,Hi+=Ei[2]*Fe,_i+=Ei[3]*Fe),mt){var Vi=new u(si,Yr),en=new u(Hi,Yr),An=new u(si,_i),ra=new u(Hi,_i),$n=mt*Math.PI/180;Vi._rotate($n),en._rotate($n),An._rotate($n),ra._rotate($n),si=Math.min(Vi.x,en.x,An.x,ra.x),Hi=Math.max(Vi.x,en.x,An.x,ra.x),Yr=Math.min(Vi.y,en.y,An.y,ra.y),_i=Math.max(Vi.y,en.y,An.y,ra.y)}y.emplaceBack(I.x,I.y,si,Yr,Hi,_i,U,J,ne)}this.boxEndIndex=y.length},jw=function(y,I){if(y===void 0&&(y=[]),I===void 0&&(I=sQe),this.data=y,this.length=this.data.length,this.compare=I,this.length>0)for(var U=(this.length>>1)-1;U>=0;U--)this._down(U)};jw.prototype.push=function(y){this.data.push(y),this.length++,this._up(this.length-1)},jw.prototype.pop=function(){if(this.length!==0){var y=this.data[0],I=this.data.pop();return this.length--,this.length>0&&(this.data[0]=I,this._down(0)),y}},jw.prototype.peek=function(){return this.data[0]},jw.prototype._up=function(y){for(var I=this,U=I.data,J=I.compare,ne=U[y];y>0;){var fe=y-1>>1,Fe=U[fe];if(J(ne,Fe)>=0)break;U[y]=Fe,y=fe}U[y]=ne},jw.prototype._down=function(y){for(var I=this,U=I.data,J=I.compare,ne=this.length>>1,fe=U[y];y=0)break;U[y]=Qe,y=Fe}U[y]=fe};function sQe(m,y){return my?1:0}function lQe(m,y,I){y===void 0&&(y=1),I===void 0&&(I=!1);for(var U=1/0,J=1/0,ne=-1/0,fe=-1/0,Fe=m[0],Qe=0;Qene)&&(ne=st.x),(!Qe||st.y>fe)&&(fe=st.y)}var mt=ne-U,Xt=fe-J,ur=Math.min(mt,Xt),nr=ur/2,Lr=new jw([],uQe);if(ur===0)return new u(U,J);for(var Yr=U;Yrsi.d||!si.d)&&(si=Ei,I&&console.log("found best %d after %d probes",Math.round(1e4*Ei.d)/1e4,Hi)),!(Ei.max-si.d<=y)&&(nr=Ei.h/2,Lr.push(new Ww(Ei.p.x-nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y-nr,nr,m)),Lr.push(new Ww(Ei.p.x-nr,Ei.p.y+nr,nr,m)),Lr.push(new Ww(Ei.p.x+nr,Ei.p.y+nr,nr,m)),Hi+=4)}return I&&(console.log("num probes: "+Hi),console.log("best distance: "+si.d)),si.p}function uQe(m,y){return y.max-m.max}function Ww(m,y,I,U){this.p=new u(m,y),this.h=I,this.d=cQe(this.p,U),this.max=this.d+this.h*Math.SQRT2}function cQe(m,y){for(var I=!1,U=1/0,J=0;Jm.y!=mt.y>m.y&&m.x<(mt.x-st.x)*(m.y-st.y)/(mt.y-st.y)+st.x&&(I=!I),U=Math.min(U,cg(m,st,mt))}return(I?1:-1)*Math.sqrt(U)}function fQe(m){for(var y=0,I=0,U=0,J=m[0],ne=0,fe=J.length,Fe=fe-1;ne=rn||y0.y<0||y0.y>=rn||vQe(m,y0,$w,I,U,J,Na,m.layers[0],m.collisionBoxArray,y.index,y.sourceLayerIndex,m.index,si,en,$n,Qe,Ei,An,Ba,nr,y,ne,st,mt,fe)};if(_a==="line")for(var us=0,zo=MQ(y.geometry,0,0,rn,rn);us1){var qh=nQe(bf,ra,I.vertical||Lr,U,Yr,Hi);qh&&ja(bf,qh)}}else if(y.type==="Polygon")for(var Zf=0,jd=zw(y.geometry,0);ZfD1&&re(m.layerIds[0]+': Value for "text-size" is >= '+wS+'. Reduce your "text-size".')):_i.kind==="composite"&&(si=[Sd*nr.compositeTextSizes[0].evaluate(fe,{},Lr),Sd*nr.compositeTextSizes[1].evaluate(fe,{},Lr)],(si[0]>D1||si[1]>D1)&&re(m.layerIds[0]+': Value for "text-size" is >= '+wS+'. Reduce your "text-size".')),m.addSymbols(m.text,Yr,si,Fe,ne,fe,st,y,Qe.lineStartIndex,Qe.lineLength,ur,Lr);for(var Hi=0,Ei=mt;HiD1&&re(m.layerIds[0]+': Value for "icon-size" is >= '+wS+'. Reduce your "icon-size".')):hv.kind==="composite"&&(hh=[Sd*en.compositeIconSizes[0].evaluate(Vi,{},ra),Sd*en.compositeIconSizes[1].evaluate(Vi,{},ra)],(hh[0]>D1||hh[1]>D1)&&re(m.layerIds[0]+': Value for "icon-size" is >= '+wS+'. Reduce your "icon-size".')),m.addSymbols(m.icon,Oh,hh,Ei,Hi,Vi,!1,y,_a.lineStartIndex,_a.lineLength,-1,ra),il=m.icon.placedSymbolArray.length-1,fv&&(zo=fv.length*4,m.addSymbols(m.icon,fv,hh,Ei,Hi,Vi,uv.vertical,y,_a.lineStartIndex,_a.lineLength,-1,ra),nl=m.icon.placedSymbolArray.length-1)}for(var dv in U.horizontal){var _p=U.horizontal[dv];if(!Pa){Au=$(_p.text);var py=Fe.layout.get("text-rotate").evaluate(Vi,{},ra);Pa=new WC(Qe,y,st,mt,Xt,_p,ur,nr,Lr,py)}var F1=_p.positionedLines.length===1;if(rl+=LQ(m,y,_p,ne,Fe,Lr,Vi,Yr,_a,U.vertical?uv.horizontal:uv.horizontalOnly,F1?Object.keys(U.horizontal):[dv],Ws,il,en,ra),F1)break}U.vertical&&(su+=LQ(m,y,U.vertical,ne,Fe,Lr,Vi,Yr,_a,uv.vertical,["vertical"],Ws,nl,en,ra));var q1=Pa?Pa.boxStartIndex:m.collisionBoxArray.length,O1=Pa?Pa.boxEndIndex:m.collisionBoxArray.length,$w=Na?Na.boxStartIndex:m.collisionBoxArray.length,y0=Na?Na.boxEndIndex:m.collisionBoxArray.length,JC=qo?qo.boxStartIndex:m.collisionBoxArray.length,fq=qo?qo.boxEndIndex:m.collisionBoxArray.length,$C=ja?ja.boxStartIndex:m.collisionBoxArray.length,hq=ja?ja.boxEndIndex:m.collisionBoxArray.length,jp=-1,Qw=function(SS,ZQ){return SS&&SS.circleDiameter?Math.max(SS.circleDiameter,ZQ):ZQ};jp=Qw(Pa,jp),jp=Qw(Na,jp),jp=Qw(qo,jp),jp=Qw(ja,jp);var QC=jp>-1?1:0;QC&&(jp*=$n/Zi),m.glyphOffsetArray.length>=ou.MAX_GLYPHS&&re("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Vi.sortKey!==void 0&&m.addToSortKeyRanges(m.symbolInstances.length,Vi.sortKey),m.symbolInstances.emplaceBack(y.x,y.y,Ws.right>=0?Ws.right:-1,Ws.center>=0?Ws.center:-1,Ws.left>=0?Ws.left:-1,Ws.vertical||-1,il,nl,Au,q1,O1,$w,y0,JC,fq,$C,hq,st,rl,su,us,zo,QC,0,ur,Ou,nf,jp)}function pQe(m,y,I,U){var J=m.compareText;if(!(y in J))J[y]=[];else for(var ne=J[y],fe=ne.length-1;fe>=0;fe--)if(U.dist(ne[fe])0)&&(fe.value.kind!=="constant"||fe.value.value.length>0),mt=Qe.value.kind!=="constant"||!!Qe.value.value||Object.keys(Qe.parameters).length>0,Xt=ne.get("symbol-sort-key");if(this.features=[],!(!st&&!mt)){for(var ur=I.iconDependencies,nr=I.glyphDependencies,Lr=I.availableImages,Yr=new pn(this.zoom),_i=0,si=y;_i=0;for(var su=0,il=Ba.sections;su=0;Qe--)fe[Qe]={x:I[Qe].x,y:I[Qe].y,tileUnitDistanceFromAnchor:ne},Qe>0&&(ne+=I[Qe-1].dist(I[Qe]));for(var st=0;st0},ou.prototype.hasIconData=function(){return this.icon.segments.get().length>0},ou.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},ou.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},ou.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},ou.prototype.addIndicesForPlacedSymbol=function(y,I){for(var U=y.placedSymbolArray.get(I),J=U.vertexStartIndex+U.numGlyphs*4,ne=U.vertexStartIndex;ne1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(y),this.sortedAngle=y,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var U=0,J=this.symbolInstanceIndexes;U=0&&st.indexOf(Fe)===Qe&&I.addIndicesForPlacedSymbol(I.text,Fe)}),fe.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,fe.verticalPlacedTextSymbolIndex),fe.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.placedIconSymbolIndex),fe.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,fe.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},Z("SymbolBucket",ou,{omit:["layers","collisionBoxArray","features","compareText"]}),ou.MAX_GLYPHS=65535,ou.addDynamicAttributes=oq;function _Qe(m,y){return y.replace(/{([^{}]+)}/g,function(I,U){return U in m?String(m[U]):""})}var xQe=new Oi({"symbol-placement":new At(on.layout_symbol["symbol-placement"]),"symbol-spacing":new At(on.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new At(on.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Er(on.layout_symbol["symbol-sort-key"]),"symbol-z-order":new At(on.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new At(on.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new At(on.layout_symbol["icon-ignore-placement"]),"icon-optional":new At(on.layout_symbol["icon-optional"]),"icon-rotation-alignment":new At(on.layout_symbol["icon-rotation-alignment"]),"icon-size":new Er(on.layout_symbol["icon-size"]),"icon-text-fit":new At(on.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new At(on.layout_symbol["icon-text-fit-padding"]),"icon-image":new Er(on.layout_symbol["icon-image"]),"icon-rotate":new Er(on.layout_symbol["icon-rotate"]),"icon-padding":new At(on.layout_symbol["icon-padding"]),"icon-keep-upright":new At(on.layout_symbol["icon-keep-upright"]),"icon-offset":new Er(on.layout_symbol["icon-offset"]),"icon-anchor":new Er(on.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new At(on.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new At(on.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new At(on.layout_symbol["text-rotation-alignment"]),"text-field":new Er(on.layout_symbol["text-field"]),"text-font":new Er(on.layout_symbol["text-font"]),"text-size":new Er(on.layout_symbol["text-size"]),"text-max-width":new Er(on.layout_symbol["text-max-width"]),"text-line-height":new At(on.layout_symbol["text-line-height"]),"text-letter-spacing":new Er(on.layout_symbol["text-letter-spacing"]),"text-justify":new Er(on.layout_symbol["text-justify"]),"text-radial-offset":new Er(on.layout_symbol["text-radial-offset"]),"text-variable-anchor":new At(on.layout_symbol["text-variable-anchor"]),"text-anchor":new Er(on.layout_symbol["text-anchor"]),"text-max-angle":new At(on.layout_symbol["text-max-angle"]),"text-writing-mode":new At(on.layout_symbol["text-writing-mode"]),"text-rotate":new Er(on.layout_symbol["text-rotate"]),"text-padding":new At(on.layout_symbol["text-padding"]),"text-keep-upright":new At(on.layout_symbol["text-keep-upright"]),"text-transform":new Er(on.layout_symbol["text-transform"]),"text-offset":new Er(on.layout_symbol["text-offset"]),"text-allow-overlap":new At(on.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new At(on.layout_symbol["text-ignore-placement"]),"text-optional":new At(on.layout_symbol["text-optional"])}),bQe=new Oi({"icon-opacity":new Er(on.paint_symbol["icon-opacity"]),"icon-color":new Er(on.paint_symbol["icon-color"]),"icon-halo-color":new Er(on.paint_symbol["icon-halo-color"]),"icon-halo-width":new Er(on.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Er(on.paint_symbol["icon-halo-blur"]),"icon-translate":new At(on.paint_symbol["icon-translate"]),"icon-translate-anchor":new At(on.paint_symbol["icon-translate-anchor"]),"text-opacity":new Er(on.paint_symbol["text-opacity"]),"text-color":new Er(on.paint_symbol["text-color"],{runtimeType:Tl,getOverride:function(m){return m.textColor},hasOverride:function(m){return!!m.textColor}}),"text-halo-color":new Er(on.paint_symbol["text-halo-color"]),"text-halo-width":new Er(on.paint_symbol["text-halo-width"]),"text-halo-blur":new Er(on.paint_symbol["text-halo-blur"]),"text-translate":new At(on.paint_symbol["text-translate"]),"text-translate-anchor":new At(on.paint_symbol["text-translate-anchor"])}),sq={paint:bQe,layout:xQe},Yw=function(y){this.type=y.property.overrides?y.property.overrides.runtimeType:Ec,this.defaultValue=y};Yw.prototype.evaluate=function(y){if(y.formattedSection){var I=this.defaultValue.property.overrides;if(I&&I.hasOverride(y.formattedSection))return I.getOverride(y.formattedSection)}return y.feature&&y.featureState?this.defaultValue.evaluate(y.feature,y.featureState):this.defaultValue.property.specification.default},Yw.prototype.eachChild=function(y){if(!this.defaultValue.isConstant()){var I=this.defaultValue.value;y(I._styleExpression.expression)}},Yw.prototype.outputDefined=function(){return!1},Yw.prototype.serialize=function(){return null},Z("FormatSectionOverride",Yw,{omit:["defaultValue"]});var wQe=function(m){function y(I){m.call(this,I,sq)}return m&&(y.__proto__=m),y.prototype=Object.create(m&&m.prototype),y.prototype.constructor=y,y.prototype.recalculate=function(U,J){if(m.prototype.recalculate.call(this,U,J),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var ne=this.layout.get("text-writing-mode");if(ne){for(var fe=[],Fe=0,Qe=ne;Fe",targetMapId:J,sourceMapId:fe.mapId})}}},Kw.prototype.receive=function(y){var I=y.data,U=I.id;if(U&&!(I.targetMapId&&this.mapId!==I.targetMapId))if(I.type===""){delete this.tasks[U];var J=this.cancelCallbacks[U];delete this.cancelCallbacks[U],J&&J()}else ke()||I.mustQueue?(this.tasks[U]=I,this.taskQueue.push(U),this.invoker.trigger()):this.processTask(U,I)},Kw.prototype.process=function(){if(this.taskQueue.length){var y=this.taskQueue.shift(),I=this.tasks[y];delete this.tasks[y],this.taskQueue.length&&this.invoker.trigger(),I&&this.processTask(y,I)}},Kw.prototype.processTask=function(y,I){var U=this;if(I.type===""){var J=this.callbacks[y];delete this.callbacks[y],J&&(I.error?J(We(I.error)):J(null,We(I.data)))}else{var ne=!1,fe=Te(this.globalScope)?void 0:[],Fe=I.hasCallback?function(ur,nr){ne=!0,delete U.cancelCallbacks[y],U.target.postMessage({id:y,type:"",sourceMapId:U.mapId,error:ur?Ue(ur):null,data:Ue(nr,fe)},fe)}:function(ur){ne=!0},Qe=null,st=We(I.data);if(this.parent[I.type])Qe=this.parent[I.type](I.sourceMapId,st,Fe);else if(this.parent.getWorkerSource){var mt=I.type.split("."),Xt=this.parent.getWorkerSource(I.sourceMapId,mt[0],st.source);Qe=Xt[mt[1]](st,Fe)}else Fe(new Error("Could not find function "+I.type));!ne&&Qe&&Qe.cancel&&(this.cancelCallbacks[y]=Qe.cancel)}},Kw.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};function RQe(m,y,I){y=Math.pow(2,I)-y-1;var U=FQ(m*256,y*256,I),J=FQ((m+1)*256,(y+1)*256,I);return U[0]+","+U[1]+","+J[0]+","+J[1]}function FQ(m,y,I){var U=2*Math.PI*6378137/256/Math.pow(2,I),J=m*U-2*Math.PI*6378137/2,ne=y*U-2*Math.PI*6378137/2;return[J,ne]}var jf=function(y,I){y&&(I?this.setSouthWest(y).setNorthEast(I):y.length===4?this.setSouthWest([y[0],y[1]]).setNorthEast([y[2],y[3]]):this.setSouthWest(y[0]).setNorthEast(y[1]))};jf.prototype.setNorthEast=function(y){return this._ne=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.setSouthWest=function(y){return this._sw=y instanceof sc?new sc(y.lng,y.lat):sc.convert(y),this},jf.prototype.extend=function(y){var I=this._sw,U=this._ne,J,ne;if(y instanceof sc)J=y,ne=y;else if(y instanceof jf){if(J=y._sw,ne=y._ne,!J||!ne)return this}else{if(Array.isArray(y))if(y.length===4||y.every(Array.isArray)){var fe=y;return this.extend(jf.convert(fe))}else{var Fe=y;return this.extend(sc.convert(Fe))}return this}return!I&&!U?(this._sw=new sc(J.lng,J.lat),this._ne=new sc(ne.lng,ne.lat)):(I.lng=Math.min(J.lng,I.lng),I.lat=Math.min(J.lat,I.lat),U.lng=Math.max(ne.lng,U.lng),U.lat=Math.max(ne.lat,U.lat)),this},jf.prototype.getCenter=function(){return new sc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},jf.prototype.getSouthWest=function(){return this._sw},jf.prototype.getNorthEast=function(){return this._ne},jf.prototype.getNorthWest=function(){return new sc(this.getWest(),this.getNorth())},jf.prototype.getSouthEast=function(){return new sc(this.getEast(),this.getSouth())},jf.prototype.getWest=function(){return this._sw.lng},jf.prototype.getSouth=function(){return this._sw.lat},jf.prototype.getEast=function(){return this._ne.lng},jf.prototype.getNorth=function(){return this._ne.lat},jf.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},jf.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},jf.prototype.isEmpty=function(){return!(this._sw&&this._ne)},jf.prototype.contains=function(y){var I=sc.convert(y),U=I.lng,J=I.lat,ne=this._sw.lat<=J&&J<=this._ne.lat,fe=this._sw.lng<=U&&U<=this._ne.lng;return this._sw.lng>this._ne.lng&&(fe=this._sw.lng>=U&&U>=this._ne.lng),ne&&fe},jf.convert=function(y){return!y||y instanceof jf?y:new jf(y)};var qQ=63710088e-1,sc=function(y,I){if(isNaN(y)||isNaN(I))throw new Error("Invalid LngLat object: ("+y+", "+I+")");if(this.lng=+y,this.lat=+I,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};sc.prototype.wrap=function(){return new sc(E(this.lng,-180,180),this.lat)},sc.prototype.toArray=function(){return[this.lng,this.lat]},sc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},sc.prototype.distanceTo=function(y){var I=Math.PI/180,U=this.lat*I,J=y.lat*I,ne=Math.sin(U)*Math.sin(J)+Math.cos(U)*Math.cos(J)*Math.cos((y.lng-this.lng)*I),fe=qQ*Math.acos(Math.min(ne,1));return fe},sc.prototype.toBounds=function(y){y===void 0&&(y=0);var I=40075017,U=360*y/I,J=U/Math.cos(Math.PI/180*this.lat);return new jf(new sc(this.lng-J,this.lat-U),new sc(this.lng+J,this.lat+U))},sc.convert=function(y){if(y instanceof sc)return y;if(Array.isArray(y)&&(y.length===2||y.length===3))return new sc(Number(y[0]),Number(y[1]));if(!Array.isArray(y)&&typeof y=="object"&&y!==null)return new sc(Number("lng"in y?y.lng:y.lon),Number(y.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var OQ=2*Math.PI*qQ;function BQ(m){return OQ*Math.cos(m*Math.PI/180)}function NQ(m){return(180+m)/360}function UQ(m){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+m*Math.PI/360)))/360}function VQ(m,y){return m/BQ(y)}function DQe(m){return m*360-180}function uq(m){var y=180-m*360;return 360/Math.PI*Math.atan(Math.exp(y*Math.PI/180))-90}function zQe(m,y){return m*BQ(uq(y))}function FQe(m){return 1/Math.cos(m*Math.PI/180)}var nb=function(y,I,U){U===void 0&&(U=0),this.x=+y,this.y=+I,this.z=+U};nb.fromLngLat=function(y,I){I===void 0&&(I=0);var U=sc.convert(y);return new nb(NQ(U.lng),UQ(U.lat),VQ(I,U.lat))},nb.prototype.toLngLat=function(){return new sc(DQe(this.x),uq(this.y))},nb.prototype.toAltitude=function(){return zQe(this.z,this.y)},nb.prototype.meterInMercatorCoordinateUnits=function(){return 1/OQ*FQe(uq(this.y))};var ab=function(y,I,U){this.z=y,this.x=I,this.y=U,this.key=AS(0,y,y,I,U)};ab.prototype.equals=function(y){return this.z===y.z&&this.x===y.x&&this.y===y.y},ab.prototype.url=function(y,I){var U=RQe(this.x,this.y,this.z),J=qQe(this.z,this.x,this.y);return y[(this.x+this.y)%y.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String(I==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",J).replace("{bbox-epsg-3857}",U)},ab.prototype.getTilePoint=function(y){var I=Math.pow(2,this.z);return new u((y.x*I-this.x)*rn,(y.y*I-this.y)*rn)},ab.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var HQ=function(y,I){this.wrap=y,this.canonical=I,this.key=AS(y,I.z,I.z,I.x,I.y)},Wf=function(y,I,U,J,ne){this.overscaledZ=y,this.wrap=I,this.canonical=new ab(U,+J,+ne),this.key=AS(I,y,U,J,ne)};Wf.prototype.equals=function(y){return this.overscaledZ===y.overscaledZ&&this.wrap===y.wrap&&this.canonical.equals(y.canonical)},Wf.prototype.scaledTo=function(y){var I=this.canonical.z-y;return y>this.canonical.z?new Wf(y,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Wf(y,this.wrap,y,this.canonical.x>>I,this.canonical.y>>I)},Wf.prototype.calculateScaledKey=function(y,I){var U=this.canonical.z-y;return y>this.canonical.z?AS(this.wrap*+I,y,this.canonical.z,this.canonical.x,this.canonical.y):AS(this.wrap*+I,y,y,this.canonical.x>>U,this.canonical.y>>U)},Wf.prototype.isChildOf=function(y){if(y.wrap!==this.wrap)return!1;var I=this.canonical.z-y.canonical.z;return y.overscaledZ===0||y.overscaledZ>I&&y.canonical.y===this.canonical.y>>I},Wf.prototype.children=function(y){if(this.overscaledZ>=y)return[new Wf(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var I=this.canonical.z+1,U=this.canonical.x*2,J=this.canonical.y*2;return[new Wf(I,this.wrap,I,U,J),new Wf(I,this.wrap,I,U+1,J),new Wf(I,this.wrap,I,U,J+1),new Wf(I,this.wrap,I,U+1,J+1)]},Wf.prototype.isLessThan=function(y){return this.wrapy.wrap?!1:this.overscaledZy.overscaledZ?!1:this.canonical.xy.canonical.x?!1:this.canonical.y0;ne--)J=1<=this.dim+1||I<-1||I>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(I+1)*this.stride+(y+1)},dy.prototype._unpackMapbox=function(y,I,U){return(y*256*256+I*256+U)/10-1e4},dy.prototype._unpackTerrarium=function(y,I,U){return y*256+I+U/256-32768},dy.prototype.getPixels=function(){return new lh({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},dy.prototype.backfillBorder=function(y,I,U){if(this.dim!==y.dim)throw new Error("dem dimension mismatch");var J=I*this.dim,ne=I*this.dim+this.dim,fe=U*this.dim,Fe=U*this.dim+this.dim;switch(I){case-1:J=ne-1;break;case 1:ne=J+1;break}switch(U){case-1:fe=Fe-1;break;case 1:Fe=fe+1;break}for(var Qe=-I*this.dim,st=-U*this.dim,mt=fe;mt=0&&Xt[3]>=0&&Qe.insert(Fe,Xt[0],Xt[1],Xt[2],Xt[3])}},vy.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new pg.VectorTile(new La(this.rawTileData)).layers,this.sourceLayerCoder=new YC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},vy.prototype.query=function(y,I,U,J){var ne=this;this.loadVTLayers();for(var fe=y.params||{},Fe=rn/y.tileSize/y.scale,Qe=be(fe.filter),st=y.queryGeometry,mt=y.queryPadding*Fe,Xt=jQ(st),ur=this.grid.query(Xt.minX-mt,Xt.minY-mt,Xt.maxX+mt,Xt.maxY+mt),nr=jQ(y.cameraQueryGeometry),Lr=this.grid3D.query(nr.minX-mt,nr.minY-mt,nr.maxX+mt,nr.maxY+mt,function(An,ra,$n,Ba){return pp(y.cameraQueryGeometry,An-mt,ra-mt,$n+mt,Ba+mt)}),Yr=0,_i=Lr;Yr<_i.length;Yr+=1){var si=_i[Yr];ur.push(si)}ur.sort(BQe);for(var Hi={},Ei,Vi=function(An){var ra=ur[An];if(ra!==Ei){Ei=ra;var $n=ne.featureIndexArray.get(ra),Ba=null;ne.loadMatchingFeature(Hi,$n.bucketIndex,$n.sourceLayerIndex,$n.featureIndex,Qe,fe.layers,fe.availableImages,I,U,J,function(_a,Pa,qo){return Ba||(Ba=da(_a)),Pa.queryIntersectsFeature(st,_a,qo,Ba,ne.z,y.transform,Fe,y.pixelPosMatrix)})}},en=0;enJ)ne=!1;else if(!I)ne=!0;else if(this.expirationTime=Ha.maxzoom)&&Ha.visibility!=="none"){h(Sn,this.zoom,Zt);var oo=Si[Ha.id]=Ha.createBucket({index:gi.bucketLayerIDs.length,layers:Sn,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:ka,sourceID:this.source});oo.populate(jn,Mi,this.tileID.canonical),gi.bucketLayerIDs.push(Sn.map(function(hi){return hi.id}))}}}}var xn,_t,br,Hr,ti=i.mapObject(Mi.glyphDependencies,function(hi){return Object.keys(hi).map(Number)});Object.keys(ti).length?yr.send("getGlyphs",{uid:this.uid,stacks:ti},function(hi,Ji){xn||(xn=hi,_t=Ji,an.call(Zr))}):_t={};var zi=Object.keys(Mi.iconDependencies);zi.length?yr.send("getImages",{icons:zi,source:this.source,tileID:this.tileID,type:"icons"},function(hi,Ji){xn||(xn=hi,br=Ji,an.call(Zr))}):br={};var Yi=Object.keys(Mi.patternDependencies);Yi.length?yr.send("getImages",{icons:Yi,source:this.source,tileID:this.tileID,type:"patterns"},function(hi,Ji){xn||(xn=hi,Hr=Ji,an.call(Zr))}):Hr={},an.call(this);function an(){if(xn)return Fr(xn);if(_t&&br&&Hr){var hi=new c(_t),Ji=new i.ImageAtlas(br,Hr);for(var ua in Si){var Fn=Si[ua];Fn instanceof i.SymbolBucket?(h(Fn.layers,this.zoom,Zt),i.performSymbolLayout(Fn,_t,hi.positions,br,Ji.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):Fn.hasPattern&&(Fn instanceof i.LineBucket||Fn instanceof i.FillBucket||Fn instanceof i.FillExtrusionBucket)&&(h(Fn.layers,this.zoom,Zt),Fn.addFeatures(Mi,this.tileID.canonical,Ji.patternPositions))}this.status="done",Fr(null,{buckets:i.values(Si).filter(function(Sa){return!Sa.isEmpty()}),featureIndex:gi,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:hi.image,imageAtlas:Ji,glyphMap:this.returnDependencies?_t:null,iconMap:this.returnDependencies?br:null,glyphPositions:this.returnDependencies?hi.positions:null})}}};function h(It,ft,jt){for(var Zt=new i.EvaluationParameters(ft),yr=0,Fr=It;yr=0!=!!ft&&It.reverse()}var L=i.vectorTile.VectorTileFeature.prototype.toGeoJSON,_=function(ft){this._feature=ft,this.extent=i.EXTENT,this.type=ft.type,this.properties=ft.tags,"id"in ft&&!isNaN(ft.id)&&(this.id=parseInt(ft.id,10))};_.prototype.loadGeometry=function(){if(this._feature.type===1){for(var ft=[],jt=0,Zt=this._feature.geometry;jt>31}function ke(It,ft){for(var jt=It.loadGeometry(),Zt=It.type,yr=0,Fr=0,Zr=jt.length,Vr=0;Vr>1;Te(It,ft,Zr,Zt,yr,Fr%2),ie(It,ft,jt,Zt,Zr-1,Fr+1),ie(It,ft,jt,Zr+1,yr,Fr+1)}}function Te(It,ft,jt,Zt,yr,Fr){for(;yr>Zt;){if(yr-Zt>600){var Zr=yr-Zt+1,Vr=jt-Zt+1,gi=Math.log(Zr),Si=.5*Math.exp(2*gi/3),Mi=.5*Math.sqrt(gi*Si*(Zr-Si)/Zr)*(Vr-Zr/2<0?-1:1),Pi=Math.max(Zt,Math.floor(jt-Vr*Si/Zr+Mi)),Gi=Math.min(yr,Math.floor(jt+(Zr-Vr)*Si/Zr+Mi));Te(It,ft,jt,Pi,Gi,Fr)}var Ki=ft[2*jt+Fr],ka=Zt,jn=yr;for(Ee(It,ft,Zt,jt),ft[2*yr+Fr]>Ki&&Ee(It,ft,Zt,yr);kaKi;)jn--}ft[2*Zt+Fr]===Ki?Ee(It,ft,Zt,jn):(jn++,Ee(It,ft,jn,yr)),jn<=jt&&(Zt=jn+1),jt<=jn&&(yr=jn-1)}}function Ee(It,ft,jt,Zt){Ae(It,jt,Zt),Ae(ft,2*jt,2*Zt),Ae(ft,2*jt+1,2*Zt+1)}function Ae(It,ft,jt){var Zt=It[ft];It[ft]=It[jt],It[jt]=Zt}function ze(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[0,It.length-1,0],gi=[],Si,Mi;Vr.length;){var Pi=Vr.pop(),Gi=Vr.pop(),Ki=Vr.pop();if(Gi-Ki<=Zr){for(var ka=Ki;ka<=Gi;ka++)Si=ft[2*ka],Mi=ft[2*ka+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[ka]);continue}var jn=Math.floor((Ki+Gi)/2);Si=ft[2*jn],Mi=ft[2*jn+1],Si>=jt&&Si<=yr&&Mi>=Zt&&Mi<=Fr&&gi.push(It[jn]);var la=(Pi+1)%2;(Pi===0?jt<=Si:Zt<=Mi)&&(Vr.push(Ki),Vr.push(jn-1),Vr.push(la)),(Pi===0?yr>=Si:Fr>=Mi)&&(Vr.push(jn+1),Vr.push(Gi),Vr.push(la))}return gi}function Ce(It,ft,jt,Zt,yr,Fr){for(var Zr=[0,It.length-1,0],Vr=[],gi=yr*yr;Zr.length;){var Si=Zr.pop(),Mi=Zr.pop(),Pi=Zr.pop();if(Mi-Pi<=Fr){for(var Gi=Pi;Gi<=Mi;Gi++)me(ft[2*Gi],ft[2*Gi+1],jt,Zt)<=gi&&Vr.push(It[Gi]);continue}var Ki=Math.floor((Pi+Mi)/2),ka=ft[2*Ki],jn=ft[2*Ki+1];me(ka,jn,jt,Zt)<=gi&&Vr.push(It[Ki]);var la=(Si+1)%2;(Si===0?jt-yr<=ka:Zt-yr<=jn)&&(Zr.push(Pi),Zr.push(Ki-1),Zr.push(la)),(Si===0?jt+yr>=ka:Zt+yr>=jn)&&(Zr.push(Ki+1),Zr.push(Mi),Zr.push(la))}return Vr}function me(It,ft,jt,Zt){var yr=It-jt,Fr=ft-Zt;return yr*yr+Fr*Fr}var Re=function(It){return It[0]},ce=function(It){return It[1]},Ge=function(ft,jt,Zt,yr,Fr){jt===void 0&&(jt=Re),Zt===void 0&&(Zt=ce),yr===void 0&&(yr=64),Fr===void 0&&(Fr=Float64Array),this.nodeSize=yr,this.points=ft;for(var Zr=ft.length<65536?Uint16Array:Uint32Array,Vr=this.ids=new Zr(ft.length),gi=this.coords=new Fr(ft.length*2),Si=0;Si=yr;Mi--){var Pi=+Date.now();gi=this._cluster(gi,Mi),this.trees[Mi]=new Ge(gi,Ke,xt,Zr,Float32Array),Zt&&console.log("z%d: %d clusters in %dms",Mi,gi.length,+Date.now()-Pi)}return Zt&&console.timeEnd("total time"),this},ct.prototype.getClusters=function(ft,jt){var Zt=((ft[0]+180)%360+360)%360-180,yr=Math.max(-90,Math.min(90,ft[1])),Fr=ft[2]===180?180:((ft[2]+180)%360+360)%360-180,Zr=Math.max(-90,Math.min(90,ft[3]));if(ft[2]-ft[0]>=360)Zt=-180,Fr=180;else if(Zt>Fr){var Vr=this.getClusters([Zt,yr,180,Zr],jt),gi=this.getClusters([-180,yr,Fr,Zr],jt);return Vr.concat(gi)}for(var Si=this.trees[this._limitZoom(jt)],Mi=Si.range(kt(Zt),Ct(Zr),kt(Fr),Ct(yr)),Pi=[],Gi=0,Ki=Mi;Gijt&&(jn+=jo.numPoints||1)}if(jn>=gi){for(var oa=Pi.x*ka,Sn=Pi.y*ka,Ha=Vr&&ka>1?this._map(Pi,!0):null,oo=(Mi<<5)+(jt+1)+this.points.length,xn=0,_t=Ki;xn<_t.length;xn+=1){var br=_t[xn],Hr=Gi.points[br];if(!(Hr.zoom<=jt)){Hr.zoom=jt;var ti=Hr.numPoints||1;oa+=Hr.x*ti,Sn+=Hr.y*ti,Hr.parentId=oo,Vr&&(Ha||(Ha=this._map(Pi,!0)),Vr(Ha,this._map(Hr)))}}Pi.parentId=oo,Zt.push(qt(oa/jn,Sn/jn,oo,jn,Ha))}else if(Zt.push(Pi),jn>1)for(var zi=0,Yi=Ki;zi>5},ct.prototype._getOriginZoom=function(ft){return(ft-this.points.length)%32},ct.prototype._map=function(ft,jt){if(ft.numPoints)return jt?er({},ft.properties):ft.properties;var Zt=this.points[ft.index].properties,yr=this.options.map(Zt);return jt&&yr===Zt?er({},yr):yr};function qt(It,ft,jt,Zt,yr){return{x:It,y:ft,zoom:1/0,id:jt,parentId:-1,numPoints:Zt,properties:yr}}function rt(It,ft){var jt=It.geometry.coordinates,Zt=jt[0],yr=jt[1];return{x:kt(Zt),y:Ct(yr),zoom:1/0,index:ft,parentId:-1}}function ot(It){return{type:"Feature",id:It.id,properties:Rt(It),geometry:{type:"Point",coordinates:[Yt(It.x),xr(It.y)]}}}function Rt(It){var ft=It.numPoints,jt=ft>=1e4?Math.round(ft/1e3)+"k":ft>=1e3?Math.round(ft/100)/10+"k":ft;return er(er({},It.properties),{cluster:!0,cluster_id:It.id,point_count:ft,point_count_abbreviated:jt})}function kt(It){return It/360+.5}function Ct(It){var ft=Math.sin(It*Math.PI/180),jt=.5-.25*Math.log((1+ft)/(1-ft))/Math.PI;return jt<0?0:jt>1?1:jt}function Yt(It){return(It-.5)*360}function xr(It){var ft=(180-It*360)*Math.PI/180;return 360*Math.atan(Math.exp(ft))/Math.PI-90}function er(It,ft){for(var jt in ft)It[jt]=ft[jt];return It}function Ke(It){return It.x}function xt(It){return It.y}function bt(It,ft,jt,Zt){for(var yr=Zt,Fr=jt-ft>>1,Zr=jt-ft,Vr,gi=It[ft],Si=It[ft+1],Mi=It[jt],Pi=It[jt+1],Gi=ft+3;Giyr)Vr=Gi,yr=Ki;else if(Ki===yr){var ka=Math.abs(Gi-Fr);kaZt&&(Vr-ft>3&&bt(It,ft,Vr,Zt),It[Vr+2]=yr,jt-Vr>3&&bt(It,Vr,jt,Zt))}function Lt(It,ft,jt,Zt,yr,Fr){var Zr=yr-jt,Vr=Fr-Zt;if(Zr!==0||Vr!==0){var gi=((It-jt)*Zr+(ft-Zt)*Vr)/(Zr*Zr+Vr*Vr);gi>1?(jt=yr,Zt=Fr):gi>0&&(jt+=Zr*gi,Zt+=Vr*gi)}return Zr=It-jt,Vr=ft-Zt,Zr*Zr+Vr*Vr}function St(It,ft,jt,Zt){var yr={id:typeof It=="undefined"?null:It,type:ft,geometry:jt,tags:Zt,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return Et(yr),yr}function Et(It){var ft=It.geometry,jt=It.type;if(jt==="Point"||jt==="MultiPoint"||jt==="LineString")dt(It,ft);else if(jt==="Polygon"||jt==="MultiLineString")for(var Zt=0;Zt0&&(Zt?Zr+=(yr*Si-gi*Fr)/2:Zr+=Math.sqrt(Math.pow(gi-yr,2)+Math.pow(Si-Fr,2))),yr=gi,Fr=Si}var Mi=ft.length-3;ft[2]=1,bt(ft,0,Mi,jt),ft[Mi+2]=1,ft.size=Math.abs(Zr),ft.start=0,ft.end=ft.size}function Br(It,ft,jt,Zt){for(var yr=0;yr1?1:jt}function ut(It,ft,jt,Zt,yr,Fr,Zr,Vr){if(jt/=ft,Zt/=ft,Fr>=jt&&Zr=Zt)return null;for(var gi=[],Si=0;Si=jt&&ka=Zt)continue;var jn=[];if(Gi==="Point"||Gi==="MultiPoint")Ne(Pi,jn,jt,Zt,yr);else if(Gi==="LineString")Ye(Pi,jn,jt,Zt,yr,!1,Vr.lineMetrics);else if(Gi==="MultiLineString")Xe(Pi,jn,jt,Zt,yr,!1);else if(Gi==="Polygon")Xe(Pi,jn,jt,Zt,yr,!0);else if(Gi==="MultiPolygon")for(var la=0;la=jt&&Zr<=Zt&&(ft.push(It[Fr]),ft.push(It[Fr+1]),ft.push(It[Fr+2]))}}function Ye(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=Ve(It),gi=yr===0?Le:xe,Si=It.start,Mi,Pi,Gi=0;Gijt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),Zr&&(Vr.start=Si+Mi*Pi)):Ra>Zt?jo=jt&&(Pi=gi(Vr,Ki,ka,la,Fa,jt),oa=!0),jo>Zt&&Ra<=Zt&&(Pi=gi(Vr,Ki,ka,la,Fa,Zt),oa=!0),!Fr&&oa&&(Zr&&(Vr.end=Si+Mi*Pi),ft.push(Vr),Vr=Ve(It)),Zr&&(Si+=Mi)}var Sn=It.length-3;Ki=It[Sn],ka=It[Sn+1],jn=It[Sn+2],Ra=yr===0?Ki:ka,Ra>=jt&&Ra<=Zt&&ht(Vr,Ki,ka,jn),Sn=Vr.length-3,Fr&&Sn>=3&&(Vr[Sn]!==Vr[0]||Vr[Sn+1]!==Vr[1])&&ht(Vr,Vr[0],Vr[1],Vr[2]),Vr.length&&ft.push(Vr)}function Ve(It){var ft=[];return ft.size=It.size,ft.start=It.start,ft.end=It.end,ft}function Xe(It,ft,jt,Zt,yr,Fr){for(var Zr=0;ZrZr.maxX&&(Zr.maxX=Mi),Pi>Zr.maxY&&(Zr.maxY=Pi)}return Zr}function ai(It,ft,jt,Zt){var yr=ft.geometry,Fr=ft.type,Zr=[];if(Fr==="Point"||Fr==="MultiPoint")for(var Vr=0;Vr0&&ft.size<(yr?Zr:Zt)){jt.numPoints+=ft.length/3;return}for(var Vr=[],gi=0;giZr)&&(jt.numSimplified++,Vr.push(ft[gi]),Vr.push(ft[gi+1])),jt.numPoints++;yr&&ri(Vr,Fr),It.push(Vr)}function ri(It,ft){for(var jt=0,Zt=0,yr=It.length,Fr=yr-2;Zt0===ft)for(Zt=0,yr=It.length;Zt24)throw new Error("maxZoom should be in the 0-24 range");if(ft.promoteId&&ft.generateId)throw new Error("promoteId and generateId cannot be used together.");var Zt=Ht(It,ft);this.tiles={},this.tileCoords=[],jt&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",ft.indexMaxZoom,ft.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),Zt=Se(Zt,ft),Zt.length&&this.splitTile(Zt,0,0,0),jt&&(Zt.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}nn.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},nn.prototype.splitTile=function(It,ft,jt,Zt,yr,Fr,Zr){for(var Vr=[It,ft,jt,Zt],gi=this.options,Si=gi.debug;Vr.length;){Zt=Vr.pop(),jt=Vr.pop(),ft=Vr.pop(),It=Vr.pop();var Mi=1<1&&console.time("creation"),Gi=this.tiles[Pi]=Qr(It,ft,jt,Zt,gi),this.tileCoords.push({z:ft,x:jt,y:Zt}),Si)){Si>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",ft,jt,Zt,Gi.numFeatures,Gi.numPoints,Gi.numSimplified),console.timeEnd("creation"));var Ki="z"+ft;this.stats[Ki]=(this.stats[Ki]||0)+1,this.total++}if(Gi.source=It,yr){if(ft===gi.maxZoom||ft===yr)continue;var ka=1<1&&console.time("clipping");var jn=.5*gi.buffer/gi.extent,la=.5-jn,Fa=.5+jn,Ra=1+jn,jo,oa,Sn,Ha,oo,xn;jo=oa=Sn=Ha=null,oo=ut(It,Mi,jt-jn,jt+Fa,0,Gi.minX,Gi.maxX,gi),xn=ut(It,Mi,jt+la,jt+Ra,0,Gi.minX,Gi.maxX,gi),It=null,oo&&(jo=ut(oo,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),oa=ut(oo,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),oo=null),xn&&(Sn=ut(xn,Mi,Zt-jn,Zt+Fa,1,Gi.minY,Gi.maxY,gi),Ha=ut(xn,Mi,Zt+la,Zt+Ra,1,Gi.minY,Gi.maxY,gi),xn=null),Si>1&&console.timeEnd("clipping"),Vr.push(jo||[],ft+1,jt*2,Zt*2),Vr.push(oa||[],ft+1,jt*2,Zt*2+1),Vr.push(Sn||[],ft+1,jt*2+1,Zt*2),Vr.push(Ha||[],ft+1,jt*2+1,Zt*2+1)}}},nn.prototype.getTile=function(It,ft,jt){var Zt=this.options,yr=Zt.extent,Fr=Zt.debug;if(It<0||It>24)return null;var Zr=1<1&&console.log("drilling down to z%d-%d-%d",It,ft,jt);for(var gi=It,Si=ft,Mi=jt,Pi;!Pi&&gi>0;)gi--,Si=Math.floor(Si/2),Mi=Math.floor(Mi/2),Pi=this.tiles[Wi(gi,Si,Mi)];return!Pi||!Pi.source?null:(Fr>1&&console.log("found parent tile z%d-%d-%d",gi,Si,Mi),Fr>1&&console.time("drilling down"),this.splitTile(Pi.source,gi,Si,Mi,It,ft,jt),Fr>1&&console.timeEnd("drilling down"),this.tiles[Vr]?Vt(this.tiles[Vr],yr):null)};function Wi(It,ft,jt){return((1<=0?0:Y.button},o.remove=function(Y){Y.parentNode&&Y.parentNode.removeChild(Y)};function x(Y,z,K){var O,$,pe,de=i.browser.devicePixelRatio>1?"@2x":"",Ie=i.getJSON(z.transformRequest(z.normalizeSpriteURL(Y,de,".json"),i.ResourceType.SpriteJSON),function(Kt,ir){Ie=null,pe||(pe=Kt,O=ir,pt())}),$e=i.getImage(z.transformRequest(z.normalizeSpriteURL(Y,de,".png"),i.ResourceType.SpriteImage),function(Kt,ir){$e=null,pe||(pe=Kt,$=ir,pt())});function pt(){if(pe)K(pe);else if(O&&$){var Kt=i.browser.getImageData($),ir={};for(var Jt in O){var vt=O[Jt],Pt=vt.width,Wt=vt.height,rr=vt.x,dr=vt.y,pr=vt.sdf,kr=vt.pixelRatio,Ar=vt.stretchX,gr=vt.stretchY,Cr=vt.content,cr=new i.RGBAImage({width:Pt,height:Wt});i.RGBAImage.copy(Kt,cr,{x:rr,y:dr},{x:0,y:0},{width:Pt,height:Wt}),ir[Jt]={data:cr,pixelRatio:kr,sdf:pr,stretchX:Ar,stretchY:gr,content:Cr}}K(null,ir)}}return{cancel:function(){Ie&&(Ie.cancel(),Ie=null),$e&&($e.cancel(),$e=null)}}}function b(Y){var z=Y.userImage;if(z&&z.render){var K=z.render();if(K)return Y.data.replace(new Uint8Array(z.data.buffer)),!0}return!1}var p=1,E=function(Y){function z(){Y.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new i.RGBAImage({width:1,height:1}),this.dirty=!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.isLoaded=function(){return this.loaded},z.prototype.setLoaded=function(O){if(this.loaded!==O&&(this.loaded=O,O)){for(var $=0,pe=this.requestors;$=0?1.2:1))}C.prototype.draw=function(Y){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(Y,this.buffer,this.middle);for(var z=this.ctx.getImageData(0,0,this.size,this.size),K=new Uint8ClampedArray(this.size*this.size),O=0;O65535){Kt(new Error("glyphs > 65535 not supported"));return}if(vt.ranges[Wt]){Kt(null,{stack:ir,id:Jt,glyph:Pt});return}var rr=vt.requests[Wt];rr||(rr=vt.requests[Wt]=[],P.loadGlyphRange(ir,Wt,O.url,O.requestManager,function(dr,pr){if(pr){for(var kr in pr)O._doesCharSupportLocalGlyph(+kr)||(vt.glyphs[+kr]=pr[+kr]);vt.ranges[Wt]=!0}for(var Ar=0,gr=rr;Ar1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=void 0,Wt=pe/O*($+1);if(pt.isDash){var rr=$-Math.abs(Wt);Pt=Math.sqrt(vt*vt+rr*rr)}else Pt=$-Math.sqrt(vt*vt+Wt*Wt);this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addRegularDash=function(z){for(var K=z.length-1;K>=0;--K){var O=z[K],$=z[K+1];O.zeroLength?z.splice(K,1):$&&$.isDash===O.isDash&&($.left=O.left,z.splice(K,1))}var pe=z[0],de=z[z.length-1];pe.isDash===de.isDash&&(pe.left=de.left-this.width,de.right=pe.right+this.width);for(var Ie=this.width*this.nextRow,$e=0,pt=z[$e],Kt=0;Kt1&&(pt=z[++$e]);var ir=Math.abs(Kt-pt.left),Jt=Math.abs(Kt-pt.right),vt=Math.min(ir,Jt),Pt=pt.isDash?vt:-vt;this.data[Ie+Kt]=Math.max(0,Math.min(255,Pt+128))}},H.prototype.addDash=function(z,K){var O=K?7:0,$=2*O+1;if(this.nextRow+$>this.height)return i.warnOnce("LineAtlas out of space"),null;for(var pe=0,de=0;de=O.minX&&z.x=O.minY&&z.y0&&(Kt[new i.OverscaledTileID(O.overscaledZ,Ie,$.z,de,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,O.wrap,$.z,$.x,$.y-1).key]={backfilled:!1},Kt[new i.OverscaledTileID(O.overscaledZ,pt,$.z,$e,$.y-1).key]={backfilled:!1}),$.y+10&&(pe.resourceTiming=O._resourceTiming,O._resourceTiming=[]),O.fire(new i.Event("data",pe))})},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setData=function(O){var $=this;return this._data=O,this.fire(new i.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(pe){if(pe){$.fire(new i.ErrorEvent(pe));return}var de={dataType:"source",sourceDataType:"content"};$._collectResourceTiming&&$._resourceTiming&&$._resourceTiming.length>0&&(de.resourceTiming=$._resourceTiming,$._resourceTiming=[]),$.fire(new i.Event("data",de))}),this},z.prototype.getClusterExpansionZoom=function(O,$){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:O,source:this.id},$),this},z.prototype.getClusterChildren=function(O,$){return this.actor.send("geojson.getClusterChildren",{clusterId:O,source:this.id},$),this},z.prototype.getClusterLeaves=function(O,$,pe,de){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:O,limit:$,offset:pe},de),this},z.prototype._updateWorkerData=function(O){var $=this;this._loaded=!1;var pe=i.extend({},this.workerOptions),de=this._data;typeof de=="string"?(pe.request=this.map._requestManager.transformRequest(i.browser.resolveURL(de),i.ResourceType.Source),pe.request.collectResourceTiming=this._collectResourceTiming):pe.data=JSON.stringify(de),this.actor.send(this.type+".loadData",pe,function(Ie,$e){$._removed||$e&&$e.abandoned||($._loaded=!0,$e&&$e.resourceTiming&&$e.resourceTiming[$.id]&&($._resourceTiming=$e.resourceTiming[$.id].slice(0)),$.actor.send($.type+".coalesce",{source:pe.source},null),O(Ie))})},z.prototype.loaded=function(){return this._loaded},z.prototype.loadTile=function(O,$){var pe=this,de=O.actor?"reloadTile":"loadTile";O.actor=this.actor;var Ie={type:this.type,uid:O.uid,tileID:O.tileID,zoom:O.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:i.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};O.request=this.actor.send(de,Ie,function($e,pt){return delete O.request,O.unloadVectorData(),O.aborted?$(null):$e?$($e):(O.loadVectorData(pt,pe.map.painter,de==="reloadTile"),$(null))})},z.prototype.abortTile=function(O){O.request&&(O.request.cancel(),delete O.request),O.aborted=!0},z.prototype.unloadTile=function(O){O.unloadVectorData(),this.actor.send("removeTile",{uid:O.uid,type:this.type,source:this.id})},z.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},z.prototype.serialize=function(){return i.extend({},this._options,{type:this.type,data:this._data})},z.prototype.hasTransition=function(){return!1},z}(i.Evented),Me=i.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),ke=function(Y){function z(K,O,$,pe){Y.call(this),this.id=K,this.dispatcher=$,this.coordinates=O.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(pe),this.options=O}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(O,$){var pe=this;this._loaded=!1,this.fire(new i.Event("dataloading",{dataType:"source"})),this.url=this.options.url,i.getImage(this.map._requestManager.transformRequest(this.url,i.ResourceType.Image),function(de,Ie){pe._loaded=!0,de?pe.fire(new i.ErrorEvent(de)):Ie&&(pe.image=Ie,O&&(pe.coordinates=O),$&&$(),pe._finishLoading())})},z.prototype.loaded=function(){return this._loaded},z.prototype.updateImage=function(O){var $=this;return!this.image||!O.url?this:(this.options.url=O.url,this.load(O.coordinates,function(){$.texture=null}),this)},z.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"metadata"})))},z.prototype.onAdd=function(O){this.map=O,this.load()},z.prototype.setCoordinates=function(O){var $=this;this.coordinates=O;var pe=O.map(i.MercatorCoordinate.fromLngLat);this.tileID=ge(pe),this.minzoom=this.maxzoom=this.tileID.z;var de=pe.map(function(Ie){return $.tileID.getTilePoint(Ie)._round()});return this._boundsArray=new i.StructArrayLayout4i8,this._boundsArray.emplaceBack(de[0].x,de[0].y,0,0),this._boundsArray.emplaceBack(de[1].x,de[1].y,i.EXTENT,0),this._boundsArray.emplaceBack(de[3].x,de[3].y,0,i.EXTENT),this._boundsArray.emplaceBack(de[2].x,de[2].y,i.EXTENT,i.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new i.Event("data",{dataType:"source",sourceDataType:"content"})),this},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||!this.image)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new i.Texture(O,this.image,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.loadTile=function(O,$){this.tileID&&this.tileID.equals(O.tileID.canonical)?(this.tiles[String(O.tileID.wrap)]=O,O.buckets={},$(null)):(O.state="errored",$(null))},z.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return!1},z}(i.Evented);function ge(Y){for(var z=1/0,K=1/0,O=-1/0,$=-1/0,pe=0,de=Y;pe$.end(0)?this.fire(new i.ErrorEvent(new i.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+$.start(0)+" and "+$.end(0)+"-second mark."))):this.video.currentTime=O}},z.prototype.getVideo=function(){return this.video},z.prototype.onAdd=function(O){this.map||(this.map=O,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},z.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var O=this.map.painter.context,$=O.gl;this.boundsBuffer||(this.boundsBuffer=O.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE),$.texSubImage2D($.TEXTURE_2D,0,0,0,$.RGBA,$.UNSIGNED_BYTE,this.video)):(this.texture=new i.Texture(O,this.video,$.RGBA),this.texture.bind($.LINEAR,$.CLAMP_TO_EDGE));for(var pe in this.tiles){var de=this.tiles[pe];de.state!=="loaded"&&(de.state="loaded",de.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this.video&&!this.video.paused},z}(ke),Te=function(Y){function z(K,O,$,pe){Y.call(this,K,O,$,pe),O.coordinates?(!Array.isArray(O.coordinates)||O.coordinates.length!==4||O.coordinates.some(function(de){return!Array.isArray(de)||de.length!==2||de.some(function(Ie){return typeof Ie!="number"})}))&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "coordinates"'))),O.animate&&typeof O.animate!="boolean"&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'optional "animate" property must be a boolean value'))),O.canvas?typeof O.canvas!="string"&&!(O.canvas instanceof i.window.HTMLCanvasElement)&&this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new i.ErrorEvent(new i.ValidationError("sources."+K,null,'missing required property "canvas"'))),this.options=O,this.animate=O.animate!==void 0?O.animate:!0}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.load=function(){if(this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof i.window.HTMLCanvasElement?this.options.canvas:i.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()){this.fire(new i.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));return}this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading()},z.prototype.getCanvas=function(){return this.canvas},z.prototype.onAdd=function(O){this.map=O,this.load(),this.canvas&&this.animate&&this.play()},z.prototype.onRemove=function(){this.pause()},z.prototype.prepare=function(){var O=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,O=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,O=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var $=this.map.painter.context,pe=$.gl;this.boundsBuffer||(this.boundsBuffer=$.createVertexBuffer(this._boundsArray,Me.members)),this.boundsSegments||(this.boundsSegments=i.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(O||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new i.Texture($,this.canvas,pe.RGBA,{premultiply:!0});for(var de in this.tiles){var Ie=this.tiles[de];Ie.state!=="loaded"&&(Ie.state="loaded",Ie.texture=this.texture)}}},z.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},z.prototype.hasTransition=function(){return this._playing},z.prototype._hasInvalidDimensions=function(){for(var O=0,$=[this.canvas.width,this.canvas.height];O<$.length;O+=1){var pe=$[O];if(isNaN(pe)||pe<=0)return!0}return!1},z}(ke),Ee={vector:W,raster:re,"raster-dem":ae,geojson:_e,video:ie,image:ke,canvas:Te},Ae=function(Y,z,K,O){var $=new Ee[z.type](Y,z,K,O);if($.id!==Y)throw new Error("Expected Source id to be "+Y+" instead of "+$.id);return i.bindAll(["load","abort","unload","serialize","prepare"],$),$},ze=function(Y){return Ee[Y]},Ce=function(Y,z){Ee[Y]=z};function me(Y,z){var K=i.identity([]);return i.translate(K,K,[1,1,0]),i.scale(K,K,[Y.width*.5,Y.height*.5,1]),i.multiply(K,K,Y.calculatePosMatrix(z.toUnwrapped()))}function Re(Y,z,K){if(Y)for(var O=0,$=Y;O<$.length;O+=1){var pe=$[O],de=z[pe];if(de&&de.source===K&&de.type==="fill-extrusion")return!0}else for(var Ie in z){var $e=z[Ie];if($e.source===K&&$e.type==="fill-extrusion")return!0}return!1}function ce(Y,z,K,O,$,pe){var de=Re($&&$.layers,z,Y.id),Ie=pe.maxPitchScaleFactor(),$e=Y.tilesIn(O,Ie,de);$e.sort(ct);for(var pt=[],Kt=0,ir=$e;Ktthis.max){var Ie=this._getAndRemoveByKey(this.order[0]);Ie&&this.onRemove(Ie)}return this},rt.prototype.has=function(z){return z.wrapped().key in this.data},rt.prototype.getAndRemove=function(z){return this.has(z)?this._getAndRemoveByKey(z.wrapped().key):null},rt.prototype._getAndRemoveByKey=function(z){var K=this.data[z].shift();return K.timeout&&clearTimeout(K.timeout),this.data[z].length===0&&delete this.data[z],this.order.splice(this.order.indexOf(z),1),K.value},rt.prototype.getByKey=function(z){var K=this.data[z];return K?K[0].value:null},rt.prototype.get=function(z){if(!this.has(z))return null;var K=this.data[z.wrapped().key][0];return K.value},rt.prototype.remove=function(z,K){if(!this.has(z))return this;var O=z.wrapped().key,$=K===void 0?0:this.data[O].indexOf(K),pe=this.data[O][$];return this.data[O].splice($,1),pe.timeout&&clearTimeout(pe.timeout),this.data[O].length===0&&delete this.data[O],this.onRemove(pe.value),this.order.splice(this.order.indexOf(O),1),this},rt.prototype.setMaxSize=function(z){for(this.max=z;this.order.length>this.max;){var K=this._getAndRemoveByKey(this.order[0]);K&&this.onRemove(K)}return this},rt.prototype.filter=function(z){var K=[];for(var O in this.data)for(var $=0,pe=this.data[O];$1||(Math.abs(ir)>1&&(Math.abs(ir+vt)===1?ir+=vt:Math.abs(ir-vt)===1&&(ir-=vt)),!(!Kt.dem||!pt.dem)&&(pt.dem.backfillBorder(Kt.dem,ir,Jt),pt.neighboringTiles&&pt.neighboringTiles[Pt]&&(pt.neighboringTiles[Pt].backfilled=!0)))}},z.prototype.getTile=function(O){return this.getTileByID(O.key)},z.prototype.getTileByID=function(O){return this._tiles[O]},z.prototype._retainLoadedChildren=function(O,$,pe,de){for(var Ie in this._tiles){var $e=this._tiles[Ie];if(!(de[Ie]||!$e.hasData()||$e.tileID.overscaledZ<=$||$e.tileID.overscaledZ>pe)){for(var pt=$e.tileID;$e&&$e.tileID.overscaledZ>$+1;){var Kt=$e.tileID.scaledTo($e.tileID.overscaledZ-1);$e=this._tiles[Kt.key],$e&&$e.hasData()&&(pt=Kt)}for(var ir=pt;ir.overscaledZ>$;)if(ir=ir.scaledTo(ir.overscaledZ-1),O[ir.key]){de[pt.key]=pt;break}}}},z.prototype.findLoadedParent=function(O,$){if(O.key in this._loadedParentTiles){var pe=this._loadedParentTiles[O.key];return pe&&pe.tileID.overscaledZ>=$?pe:null}for(var de=O.overscaledZ-1;de>=$;de--){var Ie=O.scaledTo(de),$e=this._getLoadedTile(Ie);if($e)return $e}},z.prototype._getLoadedTile=function(O){var $=this._tiles[O.key];if($&&$.hasData())return $;var pe=this._cache.getByKey(O.wrapped().key);return pe},z.prototype.updateCacheSize=function(O){var $=Math.ceil(O.width/this._source.tileSize)+1,pe=Math.ceil(O.height/this._source.tileSize)+1,de=$*pe,Ie=5,$e=Math.floor(de*Ie),pt=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,$e):$e;this._cache.setMaxSize(pt)},z.prototype.handleWrapJump=function(O){var $=this._prevLng===void 0?O:this._prevLng,pe=O-$,de=pe/360,Ie=Math.round(de);if(this._prevLng=O,Ie){var $e={};for(var pt in this._tiles){var Kt=this._tiles[pt];Kt.tileID=Kt.tileID.unwrapTo(Kt.tileID.wrap+Ie),$e[Kt.tileID.key]=Kt}this._tiles=$e;for(var ir in this._timers)clearTimeout(this._timers[ir]),delete this._timers[ir];for(var Jt in this._tiles){var vt=this._tiles[Jt];this._setTileReloadTimer(Jt,vt)}}},z.prototype.update=function(O){var $=this;if(this.transform=O,!(!this._sourceLoaded||this._paused)){this.updateCacheSize(O),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={};var pe;this.used?this._source.tileID?pe=O.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(yi){return new i.OverscaledTileID(yi.canonical.z,yi.wrap,yi.canonical.z,yi.canonical.x,yi.canonical.y)}):(pe=O.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(pe=pe.filter(function(yi){return $._source.hasTile(yi)}))):pe=[];var de=O.coveringZoomLevel(this._source),Ie=Math.max(de-z.maxOverzooming,this._source.minzoom),$e=Math.max(de+z.maxUnderzooming,this._source.minzoom),pt=this._updateRetainedTiles(pe,de);if(gi(this._source.type)){for(var Kt={},ir={},Jt=Object.keys(pt),vt=0,Pt=Jt;vtthis._source.maxzoom){var pr=rr.children(this._source.maxzoom)[0],kr=this.getTile(pr);if(kr&&kr.hasData()){pe[pr.key]=pr;continue}}else{var Ar=rr.children(this._source.maxzoom);if(pe[Ar[0].key]&&pe[Ar[1].key]&&pe[Ar[2].key]&&pe[Ar[3].key])continue}for(var gr=dr.wasRequested(),Cr=rr.overscaledZ-1;Cr>=Ie;--Cr){var cr=rr.scaledTo(Cr);if(de[cr.key]||(de[cr.key]=!0,dr=this.getTile(cr),!dr&&gr&&(dr=this._addTile(cr)),dr&&(pe[cr.key]=cr,gr=dr.wasRequested(),dr.hasData())))break}}}return pe},z.prototype._updateLoadedParentTileCache=function(){this._loadedParentTiles={};for(var O in this._tiles){for(var $=[],pe=void 0,de=this._tiles[O].tileID;de.overscaledZ>0;){if(de.key in this._loadedParentTiles){pe=this._loadedParentTiles[de.key];break}$.push(de.key);var Ie=de.scaledTo(de.overscaledZ-1);if(pe=this._getLoadedTile(Ie),pe)break;de=Ie}for(var $e=0,pt=$;$e0)&&($.hasData()&&$.state!=="reloading"?this._cache.add($.tileID,$,$.getExpiryTimeout()):($.aborted=!0,this._abortTile($),this._unloadTile($))))},z.prototype.clearTiles=function(){this._shouldReloadOnResume=!1,this._paused=!1;for(var O in this._tiles)this._removeTile(O);this._cache.reset()},z.prototype.tilesIn=function(O,$,pe){var de=this,Ie=[],$e=this.transform;if(!$e)return Ie;for(var pt=pe?$e.getCameraQueryGeometry(O):O,Kt=O.map(function(Cr){return $e.pointCoordinate(Cr)}),ir=pt.map(function(Cr){return $e.pointCoordinate(Cr)}),Jt=this.getIds(),vt=1/0,Pt=1/0,Wt=-1/0,rr=-1/0,dr=0,pr=ir;dr=0&&tn[1].y+yi>=0){var Ri=Kt.map(function(Qn){return Gr.getTilePoint(Qn)}),ln=ir.map(function(Qn){return Gr.getTilePoint(Qn)});Ie.push({tile:cr,tileID:Gr,queryGeometry:Ri,cameraQueryGeometry:ln,scale:ei})}}},gr=0;gr=i.browser.now())return!0}return!1},z.prototype.setFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.updateState(O,$,pe)},z.prototype.removeFeatureState=function(O,$,pe){O=O||"_geojsonTileLayer",this._state.removeFeatureState(O,$,pe)},z.prototype.getFeatureState=function(O,$){return O=O||"_geojsonTileLayer",this._state.getState(O,$)},z.prototype.setDependencies=function(O,$,pe){var de=this._tiles[O];de&&de.setDependencies($,pe)},z.prototype.reloadTilesForDependencies=function(O,$){for(var pe in this._tiles){var de=this._tiles[pe];de.hasDependency(O,$)&&this._reloadTile(pe,"reloading")}this._cache.filter(function(Ie){return!Ie.hasDependency(O,$)})},z}(i.Evented);Zr.maxOverzooming=10,Zr.maxUnderzooming=3;function Vr(Y,z){var K=Math.abs(Y.wrap*2)-+(Y.wrap<0),O=Math.abs(z.wrap*2)-+(z.wrap<0);return Y.overscaledZ-z.overscaledZ||O-K||z.canonical.y-Y.canonical.y||z.canonical.x-Y.canonical.x}function gi(Y){return Y==="raster"||Y==="image"||Y==="video"}function Si(){return new i.window.Worker(ns.workerUrl)}var Mi="mapboxgl_preloaded_worker_pool",Pi=function(){this.active={}};Pi.prototype.acquire=function(z){if(!this.workers)for(this.workers=[];this.workers.length0?($-de)/Ie:0;return this.points[pe].mult(1-$e).add(this.points[K].mult($e))};var hi=function(z,K,O){var $=this.boxCells=[],pe=this.circleCells=[];this.xCellCount=Math.ceil(z/O),this.yCellCount=Math.ceil(K/O);for(var de=0;dethis.width||$<0||K>this.height)return pe?!1:[];var Ie=[];if(z<=0&&K<=0&&this.width<=O&&this.height<=$){if(pe)return!0;for(var $e=0;$e0:Ie}},hi.prototype._queryCircle=function(z,K,O,$,pe){var de=z-O,Ie=z+O,$e=K-O,pt=K+O;if(Ie<0||de>this.width||pt<0||$e>this.height)return $?!1:[];var Kt=[],ir={hitTest:$,circle:{x:z,y:K,radius:O},seenUids:{box:{},circle:{}}};return this._forEachCell(de,$e,Ie,pt,this._queryCellCircle,Kt,ir,pe),$?Kt.length>0:Kt},hi.prototype.query=function(z,K,O,$,pe){return this._query(z,K,O,$,!1,pe)},hi.prototype.hitTest=function(z,K,O,$,pe){return this._query(z,K,O,$,!0,pe)},hi.prototype.hitTestCircle=function(z,K,O,$){return this._queryCircle(z,K,O,!0,$)},hi.prototype._queryCell=function(z,K,O,$,pe,de,Ie,$e){var pt=Ie.seenUids,Kt=this.boxCells[pe];if(Kt!==null)for(var ir=this.bboxes,Jt=0,vt=Kt;Jt=ir[Wt+0]&&$>=ir[Wt+1]&&(!$e||$e(this.boxKeys[Pt]))){if(Ie.hitTest)return de.push(!0),!0;de.push({key:this.boxKeys[Pt],x1:ir[Wt],y1:ir[Wt+1],x2:ir[Wt+2],y2:ir[Wt+3]})}}}var rr=this.circleCells[pe];if(rr!==null)for(var dr=this.circles,pr=0,kr=rr;prIe*Ie+$e*$e},hi.prototype._circleAndRectCollide=function(z,K,O,$,pe,de,Ie){var $e=(de-$)/2,pt=Math.abs(z-($+$e));if(pt>$e+O)return!1;var Kt=(Ie-pe)/2,ir=Math.abs(K-(pe+Kt));if(ir>Kt+O)return!1;if(pt<=$e||ir<=Kt)return!0;var Jt=pt-$e,vt=ir-Kt;return Jt*Jt+vt*vt<=O*O};function Ji(Y,z,K,O,$){var pe=i.create();return z?(i.scale(pe,pe,[1/$,1/$,1]),K||i.rotateZ(pe,pe,O.angle)):i.multiply(pe,O.labelPlaneMatrix,Y),pe}function ua(Y,z,K,O,$){if(z){var pe=i.clone(Y);return i.scale(pe,pe,[$,$,1]),K||i.rotateZ(pe,pe,-O.angle),pe}else return O.glCoordMatrix}function Fn(Y,z){var K=[Y.x,Y.y,0,1];wl(K,K,z);var O=K[3];return{point:new i.Point(K[0]/O,K[1]/O),signedDistanceFromCamera:O}}function Sa(Y,z){return .5+.5*(Y/z)}function go(Y,z){var K=Y[0]/Y[3],O=Y[1]/Y[3],$=K>=-z[0]&&K<=z[0]&&O>=-z[1]&&O<=z[1];return $}function Oo(Y,z,K,O,$,pe,de,Ie){var $e=O?Y.textSizeData:Y.iconSizeData,pt=i.evaluateSizeForZoom($e,K.transform.zoom),Kt=[256/K.width*2+1,256/K.height*2+1],ir=O?Y.text.dynamicLayoutVertexArray:Y.icon.dynamicLayoutVertexArray;ir.clear();for(var Jt=Y.lineVertexArray,vt=O?Y.text.placedSymbolArray:Y.icon.placedSymbolArray,Pt=K.transform.width/K.transform.height,Wt=!1,rr=0;rrpe)return{useVertical:!0}}return(Y===i.WritingMode.vertical?z.yK.x)?{needsFlipping:!0}:null}function xo(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt,ir,Jt,vt){var Pt=z/24,Wt=Y.lineOffsetX*Pt,rr=Y.lineOffsetY*Pt,dr;if(Y.numGlyphs>1){var pr=Y.glyphStartIndex+Y.numGlyphs,kr=Y.lineStartIndex,Ar=Y.lineStartIndex+Y.lineLength,gr=ho(Pt,Ie,Wt,rr,K,Kt,ir,Y,$e,pe,Jt);if(!gr)return{notEnoughRoom:!0};var Cr=Fn(gr.first.point,de).point,cr=Fn(gr.last.point,de).point;if(O&&!K){var Gr=Mo(Y.writingMode,Cr,cr,vt);if(Gr)return Gr}dr=[gr.first];for(var ei=Y.glyphStartIndex+1;ei0?ln.point:zs(ir,Ri,yi,1,$),qn=Mo(Y.writingMode,yi,Qn,vt);if(qn)return qn}var rn=ks(Pt*Ie.getoffsetX(Y.glyphStartIndex),Wt,rr,K,Kt,ir,Y.segment,Y.lineStartIndex,Y.lineStartIndex+Y.lineLength,$e,pe,Jt);if(!rn)return{notEnoughRoom:!0};dr=[rn]}for(var bn=0,mn=dr;bn0?1:-1,Pt=0;O&&(vt*=-1,Pt=Math.PI),vt<0&&(Pt+=Math.PI);for(var Wt=vt>0?Ie+de:Ie+de+1,rr=$,dr=$,pr=0,kr=0,Ar=Math.abs(Jt),gr=[];pr+kr<=Ar;){if(Wt+=vt,Wt=$e)return null;if(dr=rr,gr.push(rr),rr=ir[Wt],rr===void 0){var Cr=new i.Point(pt.getx(Wt),pt.gety(Wt)),cr=Fn(Cr,Kt);if(cr.signedDistanceFromCamera>0)rr=ir[Wt]=cr.point;else{var Gr=Wt-vt,ei=pr===0?pe:new i.Point(pt.getx(Gr),pt.gety(Gr));rr=zs(ei,Cr,dr,Ar-pr+1,Kt)}}pr+=kr,kr=dr.dist(rr)}var yi=(Ar-pr)/kr,tn=rr.sub(dr),Ri=tn.mult(yi)._add(dr);Ri._add(tn._unit()._perp()._mult(K*vt));var ln=Pt+Math.atan2(rr.y-dr.y,rr.x-dr.x);return gr.push(Ri),{point:Ri,angle:ln,path:gr}}var Zs=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Xs(Y,z){for(var K=0;K=1;Gn--)mn.push(rn.path[Gn]);for(var da=1;da0){for(var fo=mn[0].clone(),as=mn[0].clone(),tl=1;tl=ln.x&&as.x<=Qn.x&&fo.y>=ln.y&&as.y<=Qn.y?ps=[mn]:as.xQn.x||as.yQn.y?ps=[]:ps=i.clipLine([mn],ln.x,ln.y,Qn.x,Qn.y)}for(var zu=0,Mv=ps;zu=this.screenRightBoundary||$this.screenBottomBoundary},cl.prototype.isInsideGrid=function(z,K,O,$){return O>=0&&z=0&&K0){var Ar;return this.prevPlacement&&this.prevPlacement.variableOffsets[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID]&&this.prevPlacement.placements[Jt.crossTileID].text&&(Ar=this.prevPlacement.variableOffsets[Jt.crossTileID].anchor),this.variableOffsets[Jt.crossTileID]={textOffset:rr,width:O,height:$,anchor:z,textBoxScale:pe,prevAnchor:Ar},this.markUsedJustification(vt,z,Jt,Pt),vt.allowVerticalPlacement&&(this.markUsedOrientation(vt,Pt,Jt),this.placedOrientations[Jt.crossTileID]=Pt),{shift:dr,placedGlyphBoxes:pr}}},ms.prototype.placeLayerBucketPart=function(z,K,O){var $=this,pe=z.parameters,de=pe.bucket,Ie=pe.layout,$e=pe.posMatrix,pt=pe.textLabelPlaneMatrix,Kt=pe.labelToScreenMatrix,ir=pe.textPixelRatio,Jt=pe.holdingForFade,vt=pe.collisionBoxArray,Pt=pe.partiallyEvaluatedTextSize,Wt=pe.collisionGroup,rr=Ie.get("text-optional"),dr=Ie.get("icon-optional"),pr=Ie.get("text-allow-overlap"),kr=Ie.get("icon-allow-overlap"),Ar=Ie.get("text-rotation-alignment")==="map",gr=Ie.get("text-pitch-alignment")==="map",Cr=Ie.get("icon-text-fit")!=="none",cr=Ie.get("symbol-z-order")==="viewport-y",Gr=pr&&(kr||!de.hasIconData()||dr),ei=kr&&(pr||!de.hasTextData()||rr);!de.collisionArrays&&vt&&de.deserializeCollisionBoxes(vt);var yi=function(rn,bn){if(!K[rn.crossTileID]){if(Jt){$.placements[rn.crossTileID]=new Hs(!1,!1,!1);return}var mn=!1,Gn=!1,da=!0,No=null,Do={box:null,offscreen:null},ps={box:null,offscreen:null},fo=null,as=null,tl=null,zu=0,Mv=0,Ev=0;bn.textFeatureIndex?zu=bn.textFeatureIndex:rn.useRuntimeCollisionCircles&&(zu=rn.featureIndex),bn.verticalTextFeatureIndex&&(Mv=bn.verticalTextFeatureIndex);var yd=bn.textBox;if(yd){var Yv=function(Fu){var kl=i.WritingMode.horizontal;if(de.allowVerticalPlacement&&!Fu&&$.prevPlacement){var bd=$.prevPlacement.placedOrientations[rn.crossTileID];bd&&($.placedOrientations[rn.crossTileID]=bd,kl=bd,$.markUsedOrientation(de,kl,rn))}return kl},cg=function(Fu,kl){if(de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&bn.verticalTextBox)for(var bd=0,sy=de.writingModes;bd0&&(Nd=Nd.filter(function(Fu){return Fu!==xd.anchor}),Nd.unshift(xd.anchor))}var kv=function(Fu,kl,bd){for(var sy=Fu.x2-Fu.x1,A1=Fu.y2-Fu.y1,Kl=rn.textBoxScale,Nx=Cr&&!kr?kl:null,am={box:[],offscreen:!1},Mw=pr?Nd.length*2:Nd.length,Lv=0;Lv=Nd.length,Ux=$.attemptAnchorPlacement(om,Fu,sy,A1,Kl,Ar,gr,ir,$e,Wt,Ew,rn,de,bd,Nx);if(Ux&&(am=Ux.placedGlyphBoxes,am&&am.box&&am.box.length)){mn=!0,No=Ux.shift;break}}return am},Kv=function(){return kv(yd,bn.iconBox,i.WritingMode.horizontal)},Cv=function(){var Fu=bn.verticalTextBox,kl=Do&&Do.box&&Do.box.length;return de.allowVerticalPlacement&&!kl&&rn.numVerticalGlyphVertices>0&&Fu?kv(Fu,bn.verticalIconBox,i.WritingMode.vertical):{box:null,offscreen:null}};cg(Kv,Cv),Do&&(mn=Do.box,da=Do.offscreen);var ny=Yv(Do&&Do.box);if(!mn&&$.prevPlacement){var fg=$.prevPlacement.variableOffsets[rn.crossTileID];fg&&($.variableOffsets[rn.crossTileID]=fg,$.markUsedJustification(de,fg.anchor,rn,ny))}}else{var vp=function(Fu,kl){var bd=$.collisionIndex.placeCollisionBox(Fu,pr,ir,$e,Wt.predicate);return bd&&bd.box&&bd.box.length&&($.markUsedOrientation(de,kl,rn),$.placedOrientations[rn.crossTileID]=kl),bd},_d=function(){return vp(yd,i.WritingMode.horizontal)},pp=function(){var Fu=bn.verticalTextBox;return de.allowVerticalPlacement&&rn.numVerticalGlyphVertices>0&&Fu?vp(Fu,i.WritingMode.vertical):{box:null,offscreen:null}};cg(_d,pp),Yv(Do&&Do.box&&Do.box.length)}}if(fo=Do,mn=fo&&fo.box&&fo.box.length>0,da=fo&&fo.offscreen,rn.useRuntimeCollisionCircles){var Hf=de.text.placedSymbolArray.get(rn.centerJustifiedTextSymbolIndex),hg=i.evaluateSizeForFeature(de.textSizeData,Pt,Hf),ay=Ie.get("text-padding"),Rh=rn.collisionCircleDiameter;as=$.collisionIndex.placeCollisionCircles(pr,Hf,de.lineVertexArray,de.glyphOffsetArray,hg,$e,pt,Kt,O,gr,Wt.predicate,Rh,ay),mn=pr||as.circles.length>0&&!as.collisionDetected,da=da&&as.offscreen}if(bn.iconFeatureIndex&&(Ev=bn.iconFeatureIndex),bn.iconBox){var rm=function(Fu){var kl=Cr&&No?fc(Fu,No.x,No.y,Ar,gr,$.transform.angle):Fu;return $.collisionIndex.placeCollisionBox(kl,kr,ir,$e,Wt.predicate)};ps&&ps.box&&ps.box.length&&bn.verticalIconBox?(tl=rm(bn.verticalIconBox),Gn=tl.box.length>0):(tl=rm(bn.iconBox),Gn=tl.box.length>0),da=da&&tl.offscreen}var w1=rr||rn.numHorizontalGlyphVertices===0&&rn.numVerticalGlyphVertices===0,T1=dr||rn.numIconVertices===0;if(!w1&&!T1?Gn=mn=Gn&&mn:T1?w1||(Gn=Gn&&mn):mn=Gn&&mn,mn&&fo&&fo.box&&(ps&&ps.box&&Mv?$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,Mv,Wt.ID):$.collisionIndex.insertCollisionBox(fo.box,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID)),Gn&&tl&&$.collisionIndex.insertCollisionBox(tl.box,Ie.get("icon-ignore-placement"),de.bucketInstanceId,Ev,Wt.ID),as&&(mn&&$.collisionIndex.insertCollisionCircles(as.circles,Ie.get("text-ignore-placement"),de.bucketInstanceId,zu,Wt.ID),O)){var oy=de.bucketInstanceId,im=$.collisionCircleArrays[oy];im===void 0&&(im=$.collisionCircleArrays[oy]=new Eo);for(var nm=0;nm=0;--Ri){var ln=tn[Ri];yi(de.symbolInstances.get(ln),de.collisionArrays[ln])}else for(var Qn=z.symbolInstanceStart;Qn=0&&(de>=0&&Kt!==de?z.text.placedSymbolArray.get(Kt).crossTileID=0:z.text.placedSymbolArray.get(Kt).crossTileID=O.crossTileID)}},ms.prototype.markUsedOrientation=function(z,K,O){for(var $=K===i.WritingMode.horizontal||K===i.WritingMode.horizontalOnly?K:0,pe=K===i.WritingMode.vertical?K:0,de=[O.leftJustifiedTextSymbolIndex,O.centerJustifiedTextSymbolIndex,O.rightJustifiedTextSymbolIndex],Ie=0,$e=de;Ie<$e.length;Ie+=1){var pt=$e[Ie];z.text.placedSymbolArray.get(pt).placedOrientation=$}O.verticalPlacedTextSymbolIndex&&(z.text.placedSymbolArray.get(O.verticalPlacedTextSymbolIndex).placedOrientation=pe)},ms.prototype.commit=function(z){this.commitTime=z,this.zoomAtLastRecencyCheck=this.transform.zoom;var K=this.prevPlacement,O=!1;this.prevZoomAdjustment=K?K.zoomAdjustment(this.transform.zoom):0;var $=K?K.symbolFadeChange(z):1,pe=K?K.opacities:{},de=K?K.variableOffsets:{},Ie=K?K.placedOrientations:{};for(var $e in this.placements){var pt=this.placements[$e],Kt=pe[$e];Kt?(this.opacities[$e]=new Ys(Kt,$,pt.text,pt.icon),O=O||pt.text!==Kt.text.placed||pt.icon!==Kt.icon.placed):(this.opacities[$e]=new Ys(null,$,pt.text,pt.icon,pt.skipFade),O=O||pt.text||pt.icon)}for(var ir in pe){var Jt=pe[ir];if(!this.opacities[ir]){var vt=new Ys(Jt,$,!1,!1);vt.isHidden()||(this.opacities[ir]=vt,O=O||Jt.text.placed||Jt.icon.placed)}}for(var Pt in de)!this.variableOffsets[Pt]&&this.opacities[Pt]&&!this.opacities[Pt].isHidden()&&(this.variableOffsets[Pt]=de[Pt]);for(var Wt in Ie)!this.placedOrientations[Wt]&&this.opacities[Wt]&&!this.opacities[Wt].isHidden()&&(this.placedOrientations[Wt]=Ie[Wt]);O?this.lastPlacementChangeTime=z:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=K?K.lastPlacementChangeTime:z)},ms.prototype.updateLayerOpacities=function(z,K){for(var O={},$=0,pe=K;$0||gr>0,yi=kr.numIconVertices>0,tn=$.placedOrientations[kr.crossTileID],Ri=tn===i.WritingMode.vertical,ln=tn===i.WritingMode.horizontal||tn===i.WritingMode.horizontalOnly;if(ei){var Qn=Ec(Gr.text),qn=Ri?Zn:Qn;Pt(z.text,Ar,qn);var rn=ln?Zn:Qn;Pt(z.text,gr,rn);var bn=Gr.text.isHidden();[kr.rightJustifiedTextSymbolIndex,kr.centerJustifiedTextSymbolIndex,kr.leftJustifiedTextSymbolIndex].forEach(function(Ev){Ev>=0&&(z.text.placedSymbolArray.get(Ev).hidden=bn||Ri?1:0)}),kr.verticalPlacedTextSymbolIndex>=0&&(z.text.placedSymbolArray.get(kr.verticalPlacedTextSymbolIndex).hidden=bn||ln?1:0);var mn=$.variableOffsets[kr.crossTileID];mn&&$.markUsedJustification(z,mn.anchor,kr,tn);var Gn=$.placedOrientations[kr.crossTileID];Gn&&($.markUsedJustification(z,"left",kr,Gn),$.markUsedOrientation(z,Gn,kr))}if(yi){var da=Ec(Gr.icon),No=!(Jt&&kr.verticalPlacedIconSymbolIndex&&Ri);if(kr.placedIconSymbolIndex>=0){var Do=No?da:Zn;Pt(z.icon,kr.numIconVertices,Do),z.icon.placedSymbolArray.get(kr.placedIconSymbolIndex).hidden=Gr.icon.isHidden()}if(kr.verticalPlacedIconSymbolIndex>=0){var ps=No?Zn:da;Pt(z.icon,kr.numVerticalIconVertices,ps),z.icon.placedSymbolArray.get(kr.verticalPlacedIconSymbolIndex).hidden=Gr.icon.isHidden()}}if(z.hasIconCollisionBoxData()||z.hasTextCollisionBoxData()){var fo=z.collisionArrays[pr];if(fo){var as=new i.Point(0,0);if(fo.textBox||fo.verticalTextBox){var tl=!0;if(pt){var zu=$.variableOffsets[Cr];zu?(as=Hu(zu.anchor,zu.width,zu.height,zu.textOffset,zu.textBoxScale),Kt&&as._rotate(ir?$.transform.angle:-$.transform.angle)):tl=!1}fo.textBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||Ri,as.x,as.y),fo.verticalTextBox&&on(z.textCollisionBox.collisionVertexArray,Gr.text.placed,!tl||ln,as.x,as.y)}var Mv=!!(!ln&&fo.verticalIconBox);fo.iconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,Mv,Jt?as.x:0,Jt?as.y:0),fo.verticalIconBox&&on(z.iconCollisionBox.collisionVertexArray,Gr.icon.placed,!Mv,Jt?as.x:0,Jt?as.y:0)}}},rr=0;rrz},ms.prototype.setStale=function(){this.stale=!0};function on(Y,z,K,O,$){Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0),Y.emplaceBack(z?1:0,K?1:0,O||0,$||0)}var fa=Math.pow(2,25),Qu=Math.pow(2,24),Rl=Math.pow(2,17),vo=Math.pow(2,16),Zl=Math.pow(2,9),Ks=Math.pow(2,8),Xl=Math.pow(2,1);function Ec(Y){if(Y.opacity===0&&!Y.placed)return 0;if(Y.opacity===1&&Y.placed)return 4294967295;var z=Y.placed?1:0,K=Math.floor(Y.opacity*127);return K*fa+z*Qu+K*Rl+z*vo+K*Zl+z*Ks+K*Xl+z}var Zn=0,ko=function(z){this._sortAcrossTiles=z.layout.get("symbol-z-order")!=="viewport-y"&&z.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};ko.prototype.continuePlacement=function(z,K,O,$,pe){for(var de=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var Ie=z[this._currentPlacementIndex],$e=K[Ie],pt=this.placement.collisionIndex.transform.zoom;if($e.type==="symbol"&&(!$e.minzoom||$e.minzoom<=pt)&&(!$e.maxzoom||$e.maxzoom>pt)){this._inProgressLayer||(this._inProgressLayer=new ko($e));var Kt=this._inProgressLayer.continuePlacement(O[$e.source],this.placement,this._showCollisionBoxes,$e,de);if(Kt)return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Co.prototype.commit=function(z){return this.placement.commit(z),this.placement};var Tl=512/i.EXTENT/2,uf=function(z,K,O){this.tileID=z,this.indexedSymbolInstances={},this.bucketInstanceId=O;for(var $=0;$z.overscaledZ)for(var pt in $e){var Kt=$e[pt];Kt.tileID.isChildOf(z)&&Kt.findMatches(K.symbolInstances,z,de)}else{var ir=z.scaledTo(Number(Ie)),Jt=$e[ir.key];Jt&&Jt.findMatches(K.symbolInstances,z,de)}}for(var vt=0;vt0)throw new Error("Unimplemented: "+de.map(function(Ie){return Ie.command}).join(", ")+".");return pe.forEach(function(Ie){Ie.command!=="setTransition"&&$[Ie.command].apply($,Ie.args)}),this.stylesheet=O,!0},z.prototype.addImage=function(O,$){if(this.getImage(O))return this.fire(new i.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(O,$),this._afterImageUpdated(O)},z.prototype.updateImage=function(O,$){this.imageManager.updateImage(O,$)},z.prototype.getImage=function(O){return this.imageManager.getImage(O)},z.prototype.removeImage=function(O){if(!this.getImage(O))return this.fire(new i.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(O),this._afterImageUpdated(O)},z.prototype._afterImageUpdated=function(O){this._availableImages=this.imageManager.listImages(),this._changedImages[O]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new i.Event("data",{dataType:"style"}))},z.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},z.prototype.addSource=function(O,$,pe){var de=this;if(pe===void 0&&(pe={}),this._checkLoaded(),this.sourceCaches[O]!==void 0)throw new Error("There is already a source with this ID");if(!$.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys($).join(", ")+".");var Ie=["vector","raster","geojson","video","image"],$e=Ie.indexOf($.type)>=0;if(!($e&&this._validate(i.validateStyle.source,"sources."+O,$,null,pe))){this.map&&this.map._collectResourceTiming&&($.collectResourceTiming=!0);var pt=this.sourceCaches[O]=new Zr(O,$,this.dispatcher);pt.style=this,pt.setEventedParent(this,function(){return{isSourceLoaded:de.loaded(),source:pt.serialize(),sourceId:O}}),pt.onAdd(this.map),this._changed=!0}},z.prototype.removeSource=function(O){if(this._checkLoaded(),this.sourceCaches[O]===void 0)throw new Error("There is no source with this ID");for(var $ in this._layers)if(this._layers[$].source===O)return this.fire(new i.ErrorEvent(new Error('Source "'+O+'" cannot be removed while layer "'+$+'" is using it.')));var pe=this.sourceCaches[O];delete this.sourceCaches[O],delete this._updatedSources[O],pe.fire(new i.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:O})),pe.setEventedParent(null),pe.clearTiles(),pe.onRemove&&pe.onRemove(this.map),this._changed=!0},z.prototype.setGeoJSONSourceData=function(O,$){this._checkLoaded();var pe=this.sourceCaches[O].getSource();pe.setData($),this._changed=!0},z.prototype.getSource=function(O){return this.sourceCaches[O]&&this.sourceCaches[O].getSource()},z.prototype.addLayer=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=O.id;if(this.getLayer(de)){this.fire(new i.ErrorEvent(new Error('Layer with id "'+de+'" already exists on this map')));return}var Ie;if(O.type==="custom"){if(Al(this,i.validateCustomStyleLayer(O)))return;Ie=i.createStyleLayer(O)}else{if(typeof O.source=="object"&&(this.addSource(de,O.source),O=i.clone$1(O),O=i.extend(O,{source:de})),this._validate(i.validateStyle.layer,"layers."+de,O,{arrayIndex:-1},pe))return;Ie=i.createStyleLayer(O),this._validateLayer(Ie),Ie.setEventedParent(this,{layer:{id:de}}),this._serializedLayers[Ie.id]=Ie.serialize()}var $e=$?this._order.indexOf($):this._order.length;if($&&$e===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}if(this._order.splice($e,0,de),this._layerOrderChanged=!0,this._layers[de]=Ie,this._removedLayers[de]&&Ie.source&&Ie.type!=="custom"){var pt=this._removedLayers[de];delete this._removedLayers[de],pt.type!==Ie.type?this._updatedSources[Ie.source]="clear":(this._updatedSources[Ie.source]="reload",this.sourceCaches[Ie.source].pause())}this._updateLayer(Ie),Ie.onAdd&&Ie.onAdd(this.map)},z.prototype.moveLayer=function(O,$){this._checkLoaded(),this._changed=!0;var pe=this._layers[O];if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be moved.")));return}if(O!==$){var de=this._order.indexOf(O);this._order.splice(de,1);var Ie=$?this._order.indexOf($):this._order.length;if($&&Ie===-1){this.fire(new i.ErrorEvent(new Error('Layer with id "'+$+'" does not exist on this map.')));return}this._order.splice(Ie,0,O),this._layerOrderChanged=!0}},z.prototype.removeLayer=function(O){this._checkLoaded();var $=this._layers[O];if(!$){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be removed.")));return}$.setEventedParent(null);var pe=this._order.indexOf(O);this._order.splice(pe,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[O]=$,delete this._layers[O],delete this._serializedLayers[O],delete this._updatedLayers[O],delete this._updatedPaintProps[O],$.onRemove&&$.onRemove(this.map)},z.prototype.getLayer=function(O){return this._layers[O]},z.prototype.hasLayer=function(O){return O in this._layers},z.prototype.setLayerZoomRange=function(O,$,pe){this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot have zoom extent.")));return}de.minzoom===$&&de.maxzoom===pe||($!=null&&(de.minzoom=$),pe!=null&&(de.maxzoom=pe),this._updateLayer(de))},z.prototype.setFilter=function(O,$,pe){pe===void 0&&(pe={}),this._checkLoaded();var de=this.getLayer(O);if(!de){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be filtered.")));return}if(!i.deepEqual(de.filter,$)){if($==null){de.filter=void 0,this._updateLayer(de);return}this._validate(i.validateStyle.filter,"layers."+de.id+".filter",$,null,pe)||(de.filter=i.clone$1($),this._updateLayer(de))}},z.prototype.getFilter=function(O){return i.clone$1(this.getLayer(O).filter)},z.prototype.setLayoutProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}i.deepEqual(Ie.getLayoutProperty($),pe)||(Ie.setLayoutProperty($,pe,de),this._updateLayer(Ie))},z.prototype.getLayoutProperty=function(O,$){var pe=this.getLayer(O);if(!pe){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style.")));return}return pe.getLayoutProperty($)},z.prototype.setPaintProperty=function(O,$,pe,de){de===void 0&&(de={}),this._checkLoaded();var Ie=this.getLayer(O);if(!Ie){this.fire(new i.ErrorEvent(new Error("The layer '"+O+"' does not exist in the map's style and cannot be styled.")));return}if(!i.deepEqual(Ie.getPaintProperty($),pe)){var $e=Ie.setPaintProperty($,pe,de);$e&&this._updateLayer(Ie),this._changed=!0,this._updatedPaintProps[O]=!0}},z.prototype.getPaintProperty=function(O,$){return this.getLayer(O).getPaintProperty($)},z.prototype.setFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=O.sourceLayer,Ie=this.sourceCaches[pe];if(Ie===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var $e=Ie.getSource().type;if($e==="geojson"&&de){this.fire(new i.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));return}if($e==="vector"&&!de){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),Ie.setFeatureState(de,O.id,$)},z.prototype.removeFeatureState=function(O,$){this._checkLoaded();var pe=O.source,de=this.sourceCaches[pe];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+pe+"' does not exist in the map's style.")));return}var Ie=de.getSource().type,$e=Ie==="vector"?O.sourceLayer:void 0;if(Ie==="vector"&&!$e){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}if($&&typeof O.id!="string"&&typeof O.id!="number"){this.fire(new i.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));return}de.removeFeatureState($e,O.id,$)},z.prototype.getFeatureState=function(O){this._checkLoaded();var $=O.source,pe=O.sourceLayer,de=this.sourceCaches[$];if(de===void 0){this.fire(new i.ErrorEvent(new Error("The source '"+$+"' does not exist in the map's style.")));return}var Ie=de.getSource().type;if(Ie==="vector"&&!pe){this.fire(new i.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}return O.id===void 0&&this.fire(new i.ErrorEvent(new Error("The feature id parameter must be provided."))),de.getFeatureState(pe,O.id)},z.prototype.getTransition=function(){return i.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},z.prototype.serialize=function(){return i.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:i.mapObject(this.sourceCaches,function(O){return O.serialize()}),layers:this._serializeLayers(this._order)},function(O){return O!==void 0})},z.prototype._updateLayer=function(O){this._updatedLayers[O.id]=!0,O.source&&!this._updatedSources[O.source]&&this.sourceCaches[O.source].getSource().type!=="raster"&&(this._updatedSources[O.source]="reload",this.sourceCaches[O.source].pause()),this._changed=!0},z.prototype._flattenAndSortRenderedFeatures=function(O){for(var $=this,pe=function(ln){return $._layers[ln].type==="fill-extrusion"},de={},Ie=[],$e=this._order.length-1;$e>=0;$e--){var pt=this._order[$e];if(pe(pt)){de[pt]=$e;for(var Kt=0,ir=O;Kt=0;pr--){var kr=this._order[pr];if(pe(kr))for(var Ar=Ie.length-1;Ar>=0;Ar--){var gr=Ie[Ar].feature;if(de[gr.layer.id] 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`,Ml=`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Yh=`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`,Eh=`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,nh="uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}",hf=`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,kh="uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}",Kh=`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,rc=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,ah=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Wc=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,df=`uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Cu=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`,Nf=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Zc=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`,ds=`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Ch="uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}",Bd=`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Jh=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}`,Cf=`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,pd=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`,Lu=`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,$h=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,tu=Is(Of,Gc),Pu=Is(vd,Bf),Lc=Is(ss,ff),fl=Is(ih,Vl),Xc=Is(Js,hc),ic=Is(Cc,ws),yu=Is($s,hs),Qs=Is(Ms,dc),Qh=Is(Sl,ec),gd=Is(Ps,ov),Gu=Is(wo,Od),Pc=Is($o,Ja),vc=Is(Ef,tc),sv=Is(uu,Mh),Lf=Is(jc,kf),Uf=Is(Ml,Yh),Iu=Is(Eh,nh),oh=Is(hf,kh),ru=Is(Kh,rc),vf=Is(ah,Wc),md=Is(df,Cu),sh=Is(Nf,Zc),Fs=Is(ds,Ch),_u=Is(Bd,Jh),xu=Is(Cf,pd),Lh=Is(Lu,$h);function Is(Y,z){var K=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,O=z.match(/attribute ([\w]+) ([\w]+)/g),$=Y.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),pe=z.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),de=pe?pe.concat($):$,Ie={};return Y=Y.replace(K,function($e,pt,Kt,ir,Jt){return Ie[Jt]=!0,pt==="define"?` +#ifndef HAS_UNIFORM_u_`+Jt+` +varying `+Kt+" "+ir+" "+Jt+`; +#else +uniform `+Kt+" "+ir+" u_"+Jt+`; +#endif +`:` +#ifdef HAS_UNIFORM_u_`+Jt+` + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`}),z=z.replace(K,function($e,pt,Kt,ir,Jt){var vt=ir==="float"?"vec2":"vec4",Pt=Jt.match(/color/)?"color":vt;return Ie[Jt]?pt==="define"?` +#ifndef HAS_UNIFORM_u_`+Jt+` +uniform lowp float u_`+Jt+`_t; +attribute `+Kt+" "+vt+" a_"+Jt+`; +varying `+Kt+" "+ir+" "+Jt+`; +#else +uniform `+Kt+" "+ir+" u_"+Jt+`; +#endif +`:Pt==="vec4"?` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Jt+" = a_"+Jt+`; +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Jt+" = unpack_mix_"+Pt+"(a_"+Jt+", u_"+Jt+`_t); +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`:pt==="define"?` +#ifndef HAS_UNIFORM_u_`+Jt+` +uniform lowp float u_`+Jt+`_t; +attribute `+Kt+" "+vt+" a_"+Jt+`; +#else +uniform `+Kt+" "+ir+" u_"+Jt+`; +#endif +`:Pt==="vec4"?` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Kt+" "+ir+" "+Jt+" = a_"+Jt+`; +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+Jt+` + `+Kt+" "+ir+" "+Jt+" = unpack_mix_"+Pt+"(a_"+Jt+", u_"+Jt+`_t); +#else + `+Kt+" "+ir+" "+Jt+" = u_"+Jt+`; +#endif +`}),{fragmentSource:Y,vertexSource:z,staticAttributes:O,staticUniforms:de}}var Pf=Object.freeze({__proto__:null,prelude:tu,background:Pu,backgroundPattern:Lc,circle:fl,clippingMask:Xc,heatmap:ic,heatmapTexture:yu,collisionBox:Qs,collisionCircle:Qh,debug:gd,fill:Gu,fillOutline:Pc,fillOutlinePattern:vc,fillPattern:sv,fillExtrusion:Lf,fillExtrusionPattern:Uf,hillshadePrepare:Iu,hillshade:oh,line:ru,lineGradient:vf,linePattern:md,lineSDF:sh,raster:Fs,symbolIcon:_u,symbolSDF:xu,symbolTextAndIcon:Lh}),Ic=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};Ic.prototype.bind=function(z,K,O,$,pe,de,Ie,$e){this.context=z;for(var pt=this.boundPaintVertexBuffers.length!==$.length,Kt=0;!pt&&Kt<$.length;Kt++)this.boundPaintVertexBuffers[Kt]!==$[Kt]&&(pt=!0);var ir=!this.vao||this.boundProgram!==K||this.boundLayoutVertexBuffer!==O||pt||this.boundIndexBuffer!==pe||this.boundVertexOffset!==de||this.boundDynamicVertexBuffer!==Ie||this.boundDynamicVertexBuffer2!==$e;!z.extVertexArrayObject||ir?this.freshBind(K,O,$,pe,de,Ie,$e):(z.bindVertexArrayOES.set(this.vao),Ie&&Ie.bind(),pe&&pe.dynamicDraw&&pe.bind(),$e&&$e.bind())},Ic.prototype.freshBind=function(z,K,O,$,pe,de,Ie){var $e,pt=z.numAttributes,Kt=this.context,ir=Kt.gl;if(Kt.extVertexArrayObject)this.vao&&this.destroy(),this.vao=Kt.extVertexArrayObject.createVertexArrayOES(),Kt.bindVertexArrayOES.set(this.vao),$e=0,this.boundProgram=z,this.boundLayoutVertexBuffer=K,this.boundPaintVertexBuffers=O,this.boundIndexBuffer=$,this.boundVertexOffset=pe,this.boundDynamicVertexBuffer=de,this.boundDynamicVertexBuffer2=Ie;else{$e=Kt.currentNumAttributes||0;for(var Jt=pt;Jt<$e;Jt++)ir.disableVertexAttribArray(Jt)}K.enableAttributes(ir,z);for(var vt=0,Pt=O;vt>16,Ie>>16],u_pixel_coord_lower:[de&65535,Ie&65535]}}function pf(Y,z,K,O){var $=K.imageManager.getPattern(Y.from.toString()),pe=K.imageManager.getPattern(Y.to.toString()),de=K.imageManager.getPixelSize(),Ie=de.width,$e=de.height,pt=Math.pow(2,O.tileID.overscaledZ),Kt=O.tileSize*Math.pow(2,K.transform.tileZoom)/pt,ir=Kt*(O.tileID.canonical.x+O.tileID.wrap*pt),Jt=Kt*O.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:$.tl,u_pattern_br_a:$.br,u_pattern_tl_b:pe.tl,u_pattern_br_b:pe.br,u_texsize:[Ie,$e],u_mix:z.t,u_pattern_size_a:$.displaySize,u_pattern_size_b:pe.displaySize,u_scale_a:z.fromScale,u_scale_b:z.toScale,u_tile_units_to_pixels:1/Cs(O,1,K.transform.tileZoom),u_pixel_coord_upper:[ir>>16,Jt>>16],u_pixel_coord_lower:[ir&65535,Jt&65535]}}var Ph=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Dl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_lightpos:new i.Uniform3f(Y,z.u_lightpos),u_lightintensity:new i.Uniform1f(Y,z.u_lightintensity),u_lightcolor:new i.Uniform3f(Y,z.u_lightcolor),u_vertical_gradient:new i.Uniform1f(Y,z.u_vertical_gradient),u_height_factor:new i.Uniform1f(Y,z.u_height_factor),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ih=function(Y,z,K,O){var $=z.style.light,pe=$.properties.get("position"),de=[pe.x,pe.y,pe.z],Ie=i.create$1();$.properties.get("anchor")==="viewport"&&i.fromRotation(Ie,-z.transform.angle),i.transformMat3(de,de,Ie);var $e=$.properties.get("color");return{u_matrix:Y,u_lightpos:de,u_lightintensity:$.properties.get("intensity"),u_lightcolor:[$e.r,$e.g,$e.b],u_vertical_gradient:+K,u_opacity:O}},Wu=function(Y,z,K,O,$,pe,de){return i.extend(Ih(Y,z,K,O),pc(pe,z,de),{u_height_factor:-Math.pow(2,$.overscaledZ)/de.tileSize/8})},Rc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},gc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},hl=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world)}},iu=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mc=function(Y){return{u_matrix:Y}},Yc=function(Y,z,K,O){return i.extend(mc(Y),pc(K,z,O))},nc=function(Y,z){return{u_matrix:Y,u_world:z}},gf=function(Y,z,K,O,$){return i.extend(Yc(Y,z,K,O),{u_world:$})},gt=function(Y,z){return{u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_scale_with_map:new i.Uniform1i(Y,z.u_scale_with_map),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},Bt=function(Y,z,K,O){var $=Y.transform,pe,de;if(O.paint.get("circle-pitch-alignment")==="map"){var Ie=Cs(K,1,$.zoom);pe=!0,de=[Ie,Ie]}else pe=!1,de=$.pixelsToGLUnits;return{u_camera_to_center_distance:$.cameraToCenterDistance,u_scale_with_map:+(O.paint.get("circle-pitch-scale")==="map"),u_matrix:Y.translatePosMatrix(z.posMatrix,K,O.paint.get("circle-translate"),O.paint.get("circle-translate-anchor")),u_pitch_with_map:+pe,u_device_pixel_ratio:i.browser.devicePixelRatio,u_extrude_scale:de}},wr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pixels_to_tile_units:new i.Uniform1f(Y,z.u_pixels_to_tile_units),u_extrude_scale:new i.Uniform2f(Y,z.u_extrude_scale),u_overscale_factor:new i.Uniform1f(Y,z.u_overscale_factor)}},vr=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_inv_matrix:new i.UniformMatrix4f(Y,z.u_inv_matrix),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_viewport_size:new i.Uniform2f(Y,z.u_viewport_size)}},Ur=function(Y,z,K){var O=Cs(K,1,z.zoom),$=Math.pow(2,z.zoom-K.tileID.overscaledZ),pe=K.tileID.overscaleFactor();return{u_matrix:Y,u_camera_to_center_distance:z.cameraToCenterDistance,u_pixels_to_tile_units:O,u_extrude_scale:[z.pixelsToGLUnits[0]/(O*$),z.pixelsToGLUnits[1]/(O*$)],u_overscale_factor:pe}},fi=function(Y,z,K){return{u_matrix:Y,u_inv_matrix:z,u_camera_to_center_distance:K.cameraToCenterDistance,u_viewport_size:[K.width,K.height]}},xi=function(Y,z){return{u_color:new i.UniformColor(Y,z.u_color),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_overlay:new i.Uniform1i(Y,z.u_overlay),u_overlay_scale:new i.Uniform1f(Y,z.u_overlay_scale)}},Fi=function(Y,z,K){return K===void 0&&(K=1),{u_matrix:Y,u_color:z,u_overlay:0,u_overlay_scale:K}},Xi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},hn=function(Y){return{u_matrix:Y}},Ti=function(Y,z){return{u_extrude_scale:new i.Uniform1f(Y,z.u_extrude_scale),u_intensity:new i.Uniform1f(Y,z.u_intensity),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix)}},qi=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_world:new i.Uniform2f(Y,z.u_world),u_image:new i.Uniform1i(Y,z.u_image),u_color_ramp:new i.Uniform1i(Y,z.u_color_ramp),u_opacity:new i.Uniform1f(Y,z.u_opacity)}},Ii=function(Y,z,K,O){return{u_matrix:Y,u_extrude_scale:Cs(z,1,K),u_intensity:O}},mi=function(Y,z,K,O){var $=i.create();i.ortho($,0,Y.width,Y.height,0,0,1);var pe=Y.context.gl;return{u_matrix:$,u_world:[pe.drawingBufferWidth,pe.drawingBufferHeight],u_image:K,u_color_ramp:O,u_opacity:z.paint.get("heatmap-opacity")}},Pn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_latrange:new i.Uniform2f(Y,z.u_latrange),u_light:new i.Uniform2f(Y,z.u_light),u_shadow:new i.UniformColor(Y,z.u_shadow),u_highlight:new i.UniformColor(Y,z.u_highlight),u_accent:new i.UniformColor(Y,z.u_accent)}},Ma=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_image:new i.Uniform1i(Y,z.u_image),u_dimension:new i.Uniform2f(Y,z.u_dimension),u_zoom:new i.Uniform1f(Y,z.u_zoom),u_unpack:new i.Uniform4f(Y,z.u_unpack)}},Ta=function(Y,z,K){var O=K.paint.get("hillshade-shadow-color"),$=K.paint.get("hillshade-highlight-color"),pe=K.paint.get("hillshade-accent-color"),de=K.paint.get("hillshade-illumination-direction")*(Math.PI/180);K.paint.get("hillshade-illumination-anchor")==="viewport"&&(de-=Y.transform.angle);var Ie=!Y.options.moving;return{u_matrix:Y.transform.calculatePosMatrix(z.tileID.toUnwrapped(),Ie),u_image:0,u_latrange:qa(Y,z.tileID),u_light:[K.paint.get("hillshade-exaggeration"),de],u_shadow:O,u_highlight:$,u_accent:pe}},Ea=function(Y,z){var K=z.stride,O=i.create();return i.ortho(O,0,i.EXTENT,-i.EXTENT,0,0,1),i.translate(O,O,[0,-i.EXTENT,0]),{u_matrix:O,u_image:1,u_dimension:[K,K],u_zoom:Y.overscaledZ,u_unpack:z.getUnpackVector()}};function qa(Y,z){var K=Math.pow(2,z.canonical.z),O=z.canonical.y;return[new i.MercatorCoordinate(0,O/K).toLngLat().lat,new i.MercatorCoordinate(0,(O+1)/K).toLngLat().lat]}var Cn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels)}},sn=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_image:new i.Uniform1i(Y,z.u_image),u_image_height:new i.Uniform1f(Y,z.u_image_height)}},Ua=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_image:new i.Uniform1i(Y,z.u_image),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_scale:new i.Uniform3f(Y,z.u_scale),u_fade:new i.Uniform1f(Y,z.u_fade)}},mo=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_ratio:new i.Uniform1f(Y,z.u_ratio),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_units_to_pixels:new i.Uniform2f(Y,z.u_units_to_pixels),u_patternscale_a:new i.Uniform2f(Y,z.u_patternscale_a),u_patternscale_b:new i.Uniform2f(Y,z.u_patternscale_b),u_sdfgamma:new i.Uniform1f(Y,z.u_sdfgamma),u_image:new i.Uniform1i(Y,z.u_image),u_tex_y_a:new i.Uniform1f(Y,z.u_tex_y_a),u_tex_y_b:new i.Uniform1f(Y,z.u_tex_y_b),u_mix:new i.Uniform1f(Y,z.u_mix)}},Xo=function(Y,z,K){var O=Y.transform;return{u_matrix:yl(Y,z,K),u_ratio:1/Cs(z,1,O.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_units_to_pixels:[1/O.pixelsToGLUnits[0],1/O.pixelsToGLUnits[1]]}},Ts=function(Y,z,K,O){return i.extend(Xo(Y,z,K),{u_image:0,u_image_height:O})},Qo=function(Y,z,K,O){var $=Y.transform,pe=Bo(z,$);return{u_matrix:yl(Y,z,K),u_texsize:z.imageAtlasTexture.size,u_ratio:1/Cs(z,1,$.zoom),u_device_pixel_ratio:i.browser.devicePixelRatio,u_image:0,u_scale:[pe,O.fromScale,O.toScale],u_fade:O.t,u_units_to_pixels:[1/$.pixelsToGLUnits[0],1/$.pixelsToGLUnits[1]]}},ys=function(Y,z,K,O,$){var pe=Y.transform,de=Y.lineAtlas,Ie=Bo(z,pe),$e=K.layout.get("line-cap")==="round",pt=de.getDash(O.from,$e),Kt=de.getDash(O.to,$e),ir=pt.width*$.fromScale,Jt=Kt.width*$.toScale;return i.extend(Xo(Y,z,K),{u_patternscale_a:[Ie/ir,-pt.height/2],u_patternscale_b:[Ie/Jt,-Kt.height/2],u_sdfgamma:de.width/(Math.min(ir,Jt)*256*i.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:pt.y,u_tex_y_b:Kt.y,u_mix:$.t})};function Bo(Y,z){return 1/Cs(Y,1,z.tileZoom)}function yl(Y,z,K){return Y.translatePosMatrix(z.tileID.posMatrix,z,K.paint.get("line-translate"),K.paint.get("line-translate-anchor"))}var Gs=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_tl_parent:new i.Uniform2f(Y,z.u_tl_parent),u_scale_parent:new i.Uniform1f(Y,z.u_scale_parent),u_buffer_scale:new i.Uniform1f(Y,z.u_buffer_scale),u_fade_t:new i.Uniform1f(Y,z.u_fade_t),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image0:new i.Uniform1i(Y,z.u_image0),u_image1:new i.Uniform1i(Y,z.u_image1),u_brightness_low:new i.Uniform1f(Y,z.u_brightness_low),u_brightness_high:new i.Uniform1f(Y,z.u_brightness_high),u_saturation_factor:new i.Uniform1f(Y,z.u_saturation_factor),u_contrast_factor:new i.Uniform1f(Y,z.u_contrast_factor),u_spin_weights:new i.Uniform3f(Y,z.u_spin_weights)}},Rs=function(Y,z,K,O,$){return{u_matrix:Y,u_tl_parent:z,u_scale_parent:K,u_buffer_scale:1,u_fade_t:O.mix,u_opacity:O.opacity*$.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:$.paint.get("raster-brightness-min"),u_brightness_high:$.paint.get("raster-brightness-max"),u_saturation_factor:vs($.paint.get("raster-saturation")),u_contrast_factor:Ka($.paint.get("raster-contrast")),u_spin_weights:ia($.paint.get("raster-hue-rotate"))}};function ia(Y){Y*=Math.PI/180;var z=Math.sin(Y),K=Math.cos(Y);return[(2*K+1)/3,(-Math.sqrt(3)*z-K+1)/3,(Math.sqrt(3)*z-K+1)/3]}function Ka(Y){return Y>0?1/(1-Y):1+Y}function vs(Y){return Y>0?1-1/(1.001-Y):-Y}var Ko=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture)}},nu=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texture:new i.Uniform1i(Y,z.u_texture),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},Ru=function(Y,z){return{u_is_size_zoom_constant:new i.Uniform1i(Y,z.u_is_size_zoom_constant),u_is_size_feature_constant:new i.Uniform1i(Y,z.u_is_size_feature_constant),u_size_t:new i.Uniform1f(Y,z.u_size_t),u_size:new i.Uniform1f(Y,z.u_size),u_camera_to_center_distance:new i.Uniform1f(Y,z.u_camera_to_center_distance),u_pitch:new i.Uniform1f(Y,z.u_pitch),u_rotate_symbol:new i.Uniform1i(Y,z.u_rotate_symbol),u_aspect_ratio:new i.Uniform1f(Y,z.u_aspect_ratio),u_fade_change:new i.Uniform1f(Y,z.u_fade_change),u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_label_plane_matrix:new i.UniformMatrix4f(Y,z.u_label_plane_matrix),u_coord_matrix:new i.UniformMatrix4f(Y,z.u_coord_matrix),u_is_text:new i.Uniform1i(Y,z.u_is_text),u_pitch_with_map:new i.Uniform1i(Y,z.u_pitch_with_map),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_texsize_icon:new i.Uniform2f(Y,z.u_texsize_icon),u_texture:new i.Uniform1i(Y,z.u_texture),u_texture_icon:new i.Uniform1i(Y,z.u_texture_icon),u_gamma_scale:new i.Uniform1f(Y,z.u_gamma_scale),u_device_pixel_ratio:new i.Uniform1f(Y,z.u_device_pixel_ratio),u_is_halo:new i.Uniform1i(Y,z.u_is_halo)}},ac=function(Y,z,K,O,$,pe,de,Ie,$e,pt){var Kt=$.transform;return{u_is_size_zoom_constant:+(Y==="constant"||Y==="source"),u_is_size_feature_constant:+(Y==="constant"||Y==="camera"),u_size_t:z?z.uSizeT:0,u_size:z?z.uSize:0,u_camera_to_center_distance:Kt.cameraToCenterDistance,u_pitch:Kt.pitch/360*2*Math.PI,u_rotate_symbol:+K,u_aspect_ratio:Kt.width/Kt.height,u_fade_change:$.options.fadeDuration?$.symbolFadeChange:1,u_matrix:pe,u_label_plane_matrix:de,u_coord_matrix:Ie,u_is_text:+$e,u_pitch_with_map:+O,u_texsize:pt,u_texture:0}},mf=function(Y,z,K,O,$,pe,de,Ie,$e,pt,Kt){var ir=$.transform;return i.extend(ac(Y,z,K,O,$,pe,de,Ie,$e,pt),{u_gamma_scale:O?Math.cos(ir._pitch)*ir.cameraToCenterDistance:1,u_device_pixel_ratio:i.browser.devicePixelRatio,u_is_halo:+Kt})},bu=function(Y,z,K,O,$,pe,de,Ie,$e,pt){return i.extend(mf(Y,z,K,O,$,pe,de,Ie,!0,$e,!0),{u_texsize_icon:pt,u_texture_icon:1})},Kc=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_color:new i.UniformColor(Y,z.u_color)}},Du=function(Y,z){return{u_matrix:new i.UniformMatrix4f(Y,z.u_matrix),u_opacity:new i.Uniform1f(Y,z.u_opacity),u_image:new i.Uniform1i(Y,z.u_image),u_pattern_tl_a:new i.Uniform2f(Y,z.u_pattern_tl_a),u_pattern_br_a:new i.Uniform2f(Y,z.u_pattern_br_a),u_pattern_tl_b:new i.Uniform2f(Y,z.u_pattern_tl_b),u_pattern_br_b:new i.Uniform2f(Y,z.u_pattern_br_b),u_texsize:new i.Uniform2f(Y,z.u_texsize),u_mix:new i.Uniform1f(Y,z.u_mix),u_pattern_size_a:new i.Uniform2f(Y,z.u_pattern_size_a),u_pattern_size_b:new i.Uniform2f(Y,z.u_pattern_size_b),u_scale_a:new i.Uniform1f(Y,z.u_scale_a),u_scale_b:new i.Uniform1f(Y,z.u_scale_b),u_pixel_coord_upper:new i.Uniform2f(Y,z.u_pixel_coord_upper),u_pixel_coord_lower:new i.Uniform2f(Y,z.u_pixel_coord_lower),u_tile_units_to_pixels:new i.Uniform1f(Y,z.u_tile_units_to_pixels)}},Dc=function(Y,z,K){return{u_matrix:Y,u_opacity:z,u_color:K}},Da=function(Y,z,K,O,$,pe){return i.extend(pf(O,pe,K,$),{u_matrix:Y,u_opacity:z})},eo={fillExtrusion:Ph,fillExtrusionPattern:Dl,fill:Rc,fillPattern:gc,fillOutline:hl,fillOutlinePattern:iu,circle:gt,collisionBox:wr,collisionCircle:vr,debug:xi,clippingMask:Xi,heatmap:Ti,heatmapTexture:qi,hillshade:Pn,hillshadePrepare:Ma,line:Cn,lineGradient:sn,linePattern:Ua,lineSDF:mo,raster:Gs,symbolIcon:Ko,symbolSDF:nu,symbolTextAndIcon:Ru,background:Kc,backgroundPattern:Du},Jc;function yc(Y,z,K,O,$,pe,de){for(var Ie=Y.context,$e=Ie.gl,pt=Y.useProgram("collisionBox"),Kt=[],ir=0,Jt=0,vt=0;vt0){var Ar=i.create(),gr=dr;i.mul(Ar,rr.placementInvProjMatrix,Y.transform.glCoordMatrix),i.mul(Ar,Ar,rr.placementViewportMatrix),Kt.push({circleArray:kr,circleOffset:Jt,transform:gr,invTransform:Ar}),ir+=kr.length/4,Jt=ir}pr&&pt.draw(Ie,$e.LINES,Wi.disabled,$i.disabled,Y.colorModeForRenderPass(),yr.disabled,Ur(dr,Y.transform,Wt),K.id,pr.layoutVertexBuffer,pr.indexBuffer,pr.segments,null,Y.transform.zoom,null,null,pr.collisionVertexBuffer)}}if(!(!de||!Kt.length)){var Cr=Y.useProgram("collisionCircle"),cr=new i.StructArrayLayout2f1f2i16;cr.resize(ir*4),cr._trim();for(var Gr=0,ei=0,yi=Kt;ei=0&&(Pt[rr.associatedIconIndex]={shiftedAnchor:ln,angle:Qn})}}if(Kt){vt.clear();for(var rn=Y.icon.placedSymbolArray,bn=0;bn0){var de=i.browser.now(),Ie=(de-Y.timeAdded)/pe,$e=z?(de-z.timeAdded)/pe:-1,pt=K.getSource(),Kt=$.coveringZoomLevel({tileSize:pt.tileSize,roundZoom:pt.roundZoom}),ir=!z||Math.abs(z.tileID.overscaledZ-Kt)>Math.abs(Y.tileID.overscaledZ-Kt),Jt=ir&&Y.refreshedUponExpiration?1:i.clamp(ir?Ie:1-$e,0,1);return Y.refreshedUponExpiration&&Ie>=1&&(Y.refreshedUponExpiration=!1),z?{opacity:1,mix:1-Jt}:{opacity:Jt,mix:0}}else return{opacity:1,mix:0}}function Ut(Y,z,K){var O=K.paint.get("background-color"),$=K.paint.get("background-opacity");if($!==0){var pe=Y.context,de=pe.gl,Ie=Y.transform,$e=Ie.tileSize,pt=K.paint.get("background-pattern");if(!Y.isPatternMissing(pt)){var Kt=!pt&&O.a===1&&$===1&&Y.opaquePassEnabledForLayer()?"opaque":"translucent";if(Y.renderPass===Kt){var ir=$i.disabled,Jt=Y.depthModeForSublayer(0,Kt==="opaque"?Wi.ReadWrite:Wi.ReadOnly),vt=Y.colorModeForRenderPass(),Pt=Y.useProgram(pt?"backgroundPattern":"background"),Wt=Ie.coveringTiles({tileSize:$e});pt&&(pe.activeTexture.set(de.TEXTURE0),Y.imageManager.bind(Y.context));for(var rr=K.getCrossfadeParameters(),dr=0,pr=Wt;dr "+K.overscaledZ);var dr=rr+" "+vt+"kb";Ga(Y,dr),de.draw(O,$.TRIANGLES,Ie,$e,ft.alphaBlended,yr.disabled,Fi(pe,i.Color.transparent,Wt),Kt,Y.debugBuffer,Y.quadTriangleIndexBuffer,Y.debugSegments)}function Ga(Y,z){Y.initDebugOverlayCanvas();var K=Y.debugOverlayCanvas,O=Y.context.gl,$=Y.debugOverlayCanvas.getContext("2d");$.clearRect(0,0,K.width,K.height),$.shadowColor="white",$.shadowBlur=2,$.lineWidth=1.5,$.strokeStyle="white",$.textBaseline="top",$.font="bold 36px Open Sans, sans-serif",$.fillText(z,5,5),$.strokeText(z,5,5),Y.debugOverlayTexture.update(K),Y.debugOverlayTexture.bind(O.LINEAR,O.CLAMP_TO_EDGE)}function To(Y,z,K){var O=Y.context,$=K.implementation;if(Y.renderPass==="offscreen"){var pe=$.prerender;pe&&(Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),pe.call($,O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState())}else if(Y.renderPass==="translucent"){Y.setCustomLayerDefaults(),O.setColorMode(Y.colorModeForRenderPass()),O.setStencilMode($i.disabled);var de=$.renderingMode==="3d"?new Wi(Y.context.gl.LEQUAL,Wi.ReadWrite,Y.depthRangeFor3D):Y.depthModeForSublayer(0,Wi.ReadOnly);O.setDepthMode(de),$.render(O.gl,Y.transform.customLayerMatrix()),O.setDirty(),Y.setBaseState(),O.bindFramebuffer.set(null)}}var Wa={symbol:w,circle:it,heatmap:yt,line:Sr,fill:he,"fill-extrusion":Pe,hillshade:Je,raster:Mt,background:Ut,debug:pa,custom:To},co=function(z,K){this.context=new Fr(z),this.transform=K,this._tileTextures={},this.setup(),this.numSublayers=Zr.maxUnderzooming+Zr.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new rh,this.gpuTimers={}};co.prototype.resize=function(z,K){if(this.width=z*i.browser.devicePixelRatio,this.height=K*i.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var O=0,$=this.style._order;O<$.length;O+=1){var pe=$[O];this.style._layers[pe].resize()}},co.prototype.setup=function(){var z=this.context,K=new i.StructArrayLayout2i4;K.emplaceBack(0,0),K.emplaceBack(i.EXTENT,0),K.emplaceBack(0,i.EXTENT),K.emplaceBack(i.EXTENT,i.EXTENT),this.tileExtentBuffer=z.createVertexBuffer(K,kc.members),this.tileExtentSegments=i.SegmentVector.simpleSegment(0,0,4,2);var O=new i.StructArrayLayout2i4;O.emplaceBack(0,0),O.emplaceBack(i.EXTENT,0),O.emplaceBack(0,i.EXTENT),O.emplaceBack(i.EXTENT,i.EXTENT),this.debugBuffer=z.createVertexBuffer(O,kc.members),this.debugSegments=i.SegmentVector.simpleSegment(0,0,4,5);var $=new i.StructArrayLayout4i8;$.emplaceBack(0,0,0,0),$.emplaceBack(i.EXTENT,0,i.EXTENT,0),$.emplaceBack(0,i.EXTENT,0,i.EXTENT),$.emplaceBack(i.EXTENT,i.EXTENT,i.EXTENT,i.EXTENT),this.rasterBoundsBuffer=z.createVertexBuffer($,Me.members),this.rasterBoundsSegments=i.SegmentVector.simpleSegment(0,0,4,2);var pe=new i.StructArrayLayout2i4;pe.emplaceBack(0,0),pe.emplaceBack(1,0),pe.emplaceBack(0,1),pe.emplaceBack(1,1),this.viewportBuffer=z.createVertexBuffer(pe,kc.members),this.viewportSegments=i.SegmentVector.simpleSegment(0,0,4,2);var de=new i.StructArrayLayout1ui2;de.emplaceBack(0),de.emplaceBack(1),de.emplaceBack(3),de.emplaceBack(2),de.emplaceBack(0),this.tileBorderIndexBuffer=z.createIndexBuffer(de);var Ie=new i.StructArrayLayout3ui6;Ie.emplaceBack(0,1,2),Ie.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=z.createIndexBuffer(Ie),this.emptyTexture=new i.Texture(z,{width:1,height:1,data:new Uint8Array([0,0,0,0])},z.gl.RGBA);var $e=this.context.gl;this.stencilClearMode=new $i({func:$e.ALWAYS,mask:0},0,255,$e.ZERO,$e.ZERO,$e.ZERO)},co.prototype.clearStencil=function(){var z=this.context,K=z.gl;this.nextStencilID=1,this.currentStencilSource=void 0;var O=i.create();i.ortho(O,0,this.width,this.height,0,0,1),i.scale(O,O,[K.drawingBufferWidth,K.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(z,K.TRIANGLES,Wi.disabled,this.stencilClearMode,ft.disabled,yr.disabled,hn(O),"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)},co.prototype._renderTileClippingMasks=function(z,K){if(!(this.currentStencilSource===z.source||!z.isTileClipped()||!K||!K.length)){this.currentStencilSource=z.source;var O=this.context,$=O.gl;this.nextStencilID+K.length>256&&this.clearStencil(),O.setColorMode(ft.disabled),O.setDepthMode(Wi.disabled);var pe=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var de=0,Ie=K;de256&&this.clearStencil();var z=this.nextStencilID++,K=this.context.gl;return new $i({func:K.NOTEQUAL,mask:255},z,255,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilModeForClipping=function(z){var K=this.context.gl;return new $i({func:K.EQUAL,mask:255},this._tileClippingMaskIDs[z.key],0,K.KEEP,K.KEEP,K.REPLACE)},co.prototype.stencilConfigForOverlap=function(z){var K,O=this.context.gl,$=z.sort(function(pt,Kt){return Kt.overscaledZ-pt.overscaledZ}),pe=$[$.length-1].overscaledZ,de=$[0].overscaledZ-pe+1;if(de>1){this.currentStencilSource=void 0,this.nextStencilID+de>256&&this.clearStencil();for(var Ie={},$e=0;$e=0;this.currentLayer--){var Ar=this.style._layers[$[this.currentLayer]],gr=pe[Ar.source],Cr=$e[Ar.source];this._renderTileClippingMasks(Ar,Cr),this.renderLayer(this,gr,Ar,Cr)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer<$.length;this.currentLayer++){var cr=this.style._layers[$[this.currentLayer]],Gr=pe[cr.source],ei=(cr.type==="symbol"?Kt:pt)[cr.source];this._renderTileClippingMasks(cr,$e[cr.source]),this.renderLayer(this,Gr,cr,ei)}if(this.options.showTileBoundaries){var yi,tn,Ri=i.values(this.style._layers);Ri.forEach(function(ln){ln.source&&!ln.isHidden(O.transform.zoom)&&(ln.source!==(tn&&tn.id)&&(tn=O.style.sourceCaches[ln.source]),(!yi||yi.getSource().maxzoom0?K.pop():null},co.prototype.isPatternMissing=function(z){if(!z)return!1;if(!z.from||!z.to)return!0;var K=this.imageManager.getPattern(z.from.toString()),O=this.imageManager.getPattern(z.to.toString());return!K||!O},co.prototype.useProgram=function(z,K){this.cache=this.cache||{};var O=""+z+(K?K.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[O]||(this.cache[O]=new Vf(this.context,z,Pf[z],K,eo[z],this._showOverdrawInspector)),this.cache[O]},co.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},co.prototype.setBaseState=function(){var z=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(z.FUNC_ADD)},co.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=i.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var z=this.context.gl;this.debugOverlayTexture=new i.Texture(this.context,this.debugOverlayCanvas,z.RGBA)}},co.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var Ro=function(z,K){this.points=z,this.planes=K};Ro.fromInvProjectionMatrix=function(z,K,O){var $=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]],pe=Math.pow(2,O),de=$.map(function(pt){return i.transformMat4([],pt,z)}).map(function(pt){return i.scale$1([],pt,1/pt[3]/K*pe)}),Ie=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],$e=Ie.map(function(pt){var Kt=i.sub([],de[pt[0]],de[pt[1]]),ir=i.sub([],de[pt[2]],de[pt[1]]),Jt=i.normalize([],i.cross([],Kt,ir)),vt=-i.dot(Jt,de[pt[1]]);return Jt.concat(vt)});return new Ro(de,$e)};var Ds=function(z,K){this.min=z,this.max=K,this.center=i.scale$2([],i.add([],this.min,this.max),.5)};Ds.prototype.quadrant=function(z){for(var K=[z%2===0,z<2],O=i.clone$2(this.min),$=i.clone$2(this.max),pe=0;pe=0;if(de===0)return 0;de!==K.length&&(O=!1)}if(O)return 2;for(var $e=0;$e<3;$e++){for(var pt=Number.MAX_VALUE,Kt=-Number.MAX_VALUE,ir=0;irthis.max[$e]-this.min[$e])return 0}return 1};var As=function(z,K,O,$){if(z===void 0&&(z=0),K===void 0&&(K=0),O===void 0&&(O=0),$===void 0&&($=0),isNaN(z)||z<0||isNaN(K)||K<0||isNaN(O)||O<0||isNaN($)||$<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=z,this.bottom=K,this.left=O,this.right=$};As.prototype.interpolate=function(z,K,O){return K.top!=null&&z.top!=null&&(this.top=i.number(z.top,K.top,O)),K.bottom!=null&&z.bottom!=null&&(this.bottom=i.number(z.bottom,K.bottom,O)),K.left!=null&&z.left!=null&&(this.left=i.number(z.left,K.left,O)),K.right!=null&&z.right!=null&&(this.right=i.number(z.right,K.right,O)),this},As.prototype.getCenter=function(z,K){var O=i.clamp((this.left+z-this.right)/2,0,z),$=i.clamp((this.top+K-this.bottom)/2,0,K);return new i.Point(O,$)},As.prototype.equals=function(z){return this.top===z.top&&this.bottom===z.bottom&&this.left===z.left&&this.right===z.right},As.prototype.clone=function(){return new As(this.top,this.bottom,this.left,this.right)},As.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var yo=function(z,K,O,$,pe){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=pe===void 0?!0:pe,this._minZoom=z||0,this._maxZoom=K||22,this._minPitch=O==null?0:O,this._maxPitch=$==null?60:$,this.setMaxBounds(),this.width=0,this.height=0,this._center=new i.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new As,this._posMatrixCache={},this._alignedPosMatrixCache={}},po={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};yo.prototype.clone=function(){var z=new yo(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return z.tileSize=this.tileSize,z.latRange=this.latRange,z.width=this.width,z.height=this.height,z._center=this._center,z.zoom=this.zoom,z.angle=this.angle,z._fov=this._fov,z._pitch=this._pitch,z._unmodified=this._unmodified,z._edgeInsets=this._edgeInsets.clone(),z._calcMatrices(),z},po.minZoom.get=function(){return this._minZoom},po.minZoom.set=function(Y){this._minZoom!==Y&&(this._minZoom=Y,this.zoom=Math.max(this.zoom,Y))},po.maxZoom.get=function(){return this._maxZoom},po.maxZoom.set=function(Y){this._maxZoom!==Y&&(this._maxZoom=Y,this.zoom=Math.min(this.zoom,Y))},po.minPitch.get=function(){return this._minPitch},po.minPitch.set=function(Y){this._minPitch!==Y&&(this._minPitch=Y,this.pitch=Math.max(this.pitch,Y))},po.maxPitch.get=function(){return this._maxPitch},po.maxPitch.set=function(Y){this._maxPitch!==Y&&(this._maxPitch=Y,this.pitch=Math.min(this.pitch,Y))},po.renderWorldCopies.get=function(){return this._renderWorldCopies},po.renderWorldCopies.set=function(Y){Y===void 0?Y=!0:Y===null&&(Y=!1),this._renderWorldCopies=Y},po.worldSize.get=function(){return this.tileSize*this.scale},po.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},po.size.get=function(){return new i.Point(this.width,this.height)},po.bearing.get=function(){return-this.angle/Math.PI*180},po.bearing.set=function(Y){var z=-i.wrap(Y,-180,180)*Math.PI/180;this.angle!==z&&(this._unmodified=!1,this.angle=z,this._calcMatrices(),this.rotationMatrix=i.create$2(),i.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},po.pitch.get=function(){return this._pitch/Math.PI*180},po.pitch.set=function(Y){var z=i.clamp(Y,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==z&&(this._unmodified=!1,this._pitch=z,this._calcMatrices())},po.fov.get=function(){return this._fov/Math.PI*180},po.fov.set=function(Y){Y=Math.max(.01,Math.min(60,Y)),this._fov!==Y&&(this._unmodified=!1,this._fov=Y/180*Math.PI,this._calcMatrices())},po.zoom.get=function(){return this._zoom},po.zoom.set=function(Y){var z=Math.min(Math.max(Y,this.minZoom),this.maxZoom);this._zoom!==z&&(this._unmodified=!1,this._zoom=z,this.scale=this.zoomScale(z),this.tileZoom=Math.floor(z),this.zoomFraction=z-this.tileZoom,this._constrain(),this._calcMatrices())},po.center.get=function(){return this._center},po.center.set=function(Y){Y.lat===this._center.lat&&Y.lng===this._center.lng||(this._unmodified=!1,this._center=Y,this._constrain(),this._calcMatrices())},po.padding.get=function(){return this._edgeInsets.toJSON()},po.padding.set=function(Y){this._edgeInsets.equals(Y)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,Y,1),this._calcMatrices())},po.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},yo.prototype.isPaddingEqual=function(z){return this._edgeInsets.equals(z)},yo.prototype.interpolatePadding=function(z,K,O){this._unmodified=!1,this._edgeInsets.interpolate(z,K,O),this._constrain(),this._calcMatrices()},yo.prototype.coveringZoomLevel=function(z){var K=(z.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/z.tileSize));return Math.max(0,K)},yo.prototype.getVisibleUnwrappedCoordinates=function(z){var K=[new i.UnwrappedTileID(0,z)];if(this._renderWorldCopies)for(var O=this.pointCoordinate(new i.Point(0,0)),$=this.pointCoordinate(new i.Point(this.width,0)),pe=this.pointCoordinate(new i.Point(this.width,this.height)),de=this.pointCoordinate(new i.Point(0,this.height)),Ie=Math.floor(Math.min(O.x,$.x,pe.x,de.x)),$e=Math.floor(Math.max(O.x,$.x,pe.x,de.x)),pt=1,Kt=Ie-pt;Kt<=$e+pt;Kt++)Kt!==0&&K.push(new i.UnwrappedTileID(Kt,z));return K},yo.prototype.coveringTiles=function(z){var K=this.coveringZoomLevel(z),O=K;if(z.minzoom!==void 0&&Kz.maxzoom&&(K=z.maxzoom);var $=i.MercatorCoordinate.fromLngLat(this.center),pe=Math.pow(2,K),de=[pe*$.x,pe*$.y,0],Ie=Ro.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,K),$e=z.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&($e=K);var pt=3,Kt=function(Ri){return{aabb:new Ds([Ri*pe,0,0],[(Ri+1)*pe,pe,0]),zoom:0,x:0,y:0,wrap:Ri,fullyVisible:!1}},ir=[],Jt=[],vt=K,Pt=z.reparseOverscaled?O:K;if(this._renderWorldCopies)for(var Wt=1;Wt<=3;Wt++)ir.push(Kt(-Wt)),ir.push(Kt(Wt));for(ir.push(Kt(0));ir.length>0;){var rr=ir.pop(),dr=rr.x,pr=rr.y,kr=rr.fullyVisible;if(!kr){var Ar=rr.aabb.intersects(Ie);if(Ar===0)continue;kr=Ar===2}var gr=rr.aabb.distanceX(de),Cr=rr.aabb.distanceY(de),cr=Math.max(Math.abs(gr),Math.abs(Cr)),Gr=pt+(1<Gr&&rr.zoom>=$e){Jt.push({tileID:new i.OverscaledTileID(rr.zoom===vt?Pt:rr.zoom,rr.wrap,rr.zoom,dr,pr),distanceSq:i.sqrLen([de[0]-.5-dr,de[1]-.5-pr])});continue}for(var ei=0;ei<4;ei++){var yi=(dr<<1)+ei%2,tn=(pr<<1)+(ei>>1);ir.push({aabb:rr.aabb.quadrant(ei),zoom:rr.zoom+1,x:yi,y:tn,wrap:rr.wrap,fullyVisible:kr})}}return Jt.sort(function(Ri,ln){return Ri.distanceSq-ln.distanceSq}).map(function(Ri){return Ri.tileID})},yo.prototype.resize=function(z,K){this.width=z,this.height=K,this.pixelsToGLUnits=[2/z,-2/K],this._constrain(),this._calcMatrices()},po.unmodified.get=function(){return this._unmodified},yo.prototype.zoomScale=function(z){return Math.pow(2,z)},yo.prototype.scaleZoom=function(z){return Math.log(z)/Math.LN2},yo.prototype.project=function(z){var K=i.clamp(z.lat,-this.maxValidLatitude,this.maxValidLatitude);return new i.Point(i.mercatorXfromLng(z.lng)*this.worldSize,i.mercatorYfromLat(K)*this.worldSize)},yo.prototype.unproject=function(z){return new i.MercatorCoordinate(z.x/this.worldSize,z.y/this.worldSize).toLngLat()},po.point.get=function(){return this.project(this.center)},yo.prototype.setLocationAtPoint=function(z,K){var O=this.pointCoordinate(K),$=this.pointCoordinate(this.centerPoint),pe=this.locationCoordinate(z),de=new i.MercatorCoordinate(pe.x-(O.x-$.x),pe.y-(O.y-$.y));this.center=this.coordinateLocation(de),this._renderWorldCopies&&(this.center=this.center.wrap())},yo.prototype.locationPoint=function(z){return this.coordinatePoint(this.locationCoordinate(z))},yo.prototype.pointLocation=function(z){return this.coordinateLocation(this.pointCoordinate(z))},yo.prototype.locationCoordinate=function(z){return i.MercatorCoordinate.fromLngLat(z)},yo.prototype.coordinateLocation=function(z){return z.toLngLat()},yo.prototype.pointCoordinate=function(z){var K=0,O=[z.x,z.y,0,1],$=[z.x,z.y,1,1];i.transformMat4(O,O,this.pixelMatrixInverse),i.transformMat4($,$,this.pixelMatrixInverse);var pe=O[3],de=$[3],Ie=O[0]/pe,$e=$[0]/de,pt=O[1]/pe,Kt=$[1]/de,ir=O[2]/pe,Jt=$[2]/de,vt=ir===Jt?0:(K-ir)/(Jt-ir);return new i.MercatorCoordinate(i.number(Ie,$e,vt)/this.worldSize,i.number(pt,Kt,vt)/this.worldSize)},yo.prototype.coordinatePoint=function(z){var K=[z.x*this.worldSize,z.y*this.worldSize,0,1];return i.transformMat4(K,K,this.pixelMatrix),new i.Point(K[0]/K[3],K[1]/K[3])},yo.prototype.getBounds=function(){return new i.LngLatBounds().extend(this.pointLocation(new i.Point(0,0))).extend(this.pointLocation(new i.Point(this.width,0))).extend(this.pointLocation(new i.Point(this.width,this.height))).extend(this.pointLocation(new i.Point(0,this.height)))},yo.prototype.getMaxBounds=function(){return!this.latRange||this.latRange.length!==2||!this.lngRange||this.lngRange.length!==2?null:new i.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]])},yo.prototype.setMaxBounds=function(z){z?(this.lngRange=[z.getWest(),z.getEast()],this.latRange=[z.getSouth(),z.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},yo.prototype.calculatePosMatrix=function(z,K){K===void 0&&(K=!1);var O=z.key,$=K?this._alignedPosMatrixCache:this._posMatrixCache;if($[O])return $[O];var pe=z.canonical,de=this.worldSize/this.zoomScale(pe.z),Ie=pe.x+Math.pow(2,pe.z)*z.wrap,$e=i.identity(new Float64Array(16));return i.translate($e,$e,[Ie*de,pe.y*de,0]),i.scale($e,$e,[de/i.EXTENT,de/i.EXTENT,1]),i.multiply($e,K?this.alignedProjMatrix:this.projMatrix,$e),$[O]=new Float32Array($e),$[O]},yo.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},yo.prototype._constrain=function(){if(!(!this.center||!this.width||!this.height||this._constraining)){this._constraining=!0;var z=-90,K=90,O=-180,$=180,pe,de,Ie,$e,pt=this.size,Kt=this._unmodified;if(this.latRange){var ir=this.latRange;z=i.mercatorYfromLat(ir[1])*this.worldSize,K=i.mercatorYfromLat(ir[0])*this.worldSize,pe=K-zK&&($e=K-rr)}if(this.lngRange){var dr=vt.x,pr=pt.x/2;dr-pr$&&(Ie=$-pr)}(Ie!==void 0||$e!==void 0)&&(this.center=this.unproject(new i.Point(Ie!==void 0?Ie:vt.x,$e!==void 0?$e:vt.y))),this._unmodified=Kt,this._constraining=!1}},yo.prototype._calcMatrices=function(){if(this.height){var z=this._fov/2,K=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(z)*this.height;var O=Math.PI/2+this._pitch,$=this._fov*(.5+K.y/this.height),pe=Math.sin($)*this.cameraToCenterDistance/Math.sin(i.clamp(Math.PI-O-$,.01,Math.PI-.01)),de=this.point,Ie=de.x,$e=de.y,pt=Math.cos(Math.PI/2-this._pitch)*pe+this.cameraToCenterDistance,Kt=pt*1.01,ir=this.height/50,Jt=new Float64Array(16);i.perspective(Jt,this._fov,this.width/this.height,ir,Kt),Jt[8]=-K.x*2/this.width,Jt[9]=K.y*2/this.height,i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[0,0,-this.cameraToCenterDistance]),i.rotateX(Jt,Jt,this._pitch),i.rotateZ(Jt,Jt,this.angle),i.translate(Jt,Jt,[-Ie,-$e,0]),this.mercatorMatrix=i.scale([],Jt,[this.worldSize,this.worldSize,this.worldSize]),i.scale(Jt,Jt,[1,1,i.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=Jt,this.invProjMatrix=i.invert([],this.projMatrix);var vt=this.width%2/2,Pt=this.height%2/2,Wt=Math.cos(this.angle),rr=Math.sin(this.angle),dr=Ie-Math.round(Ie)+Wt*vt+rr*Pt,pr=$e-Math.round($e)+Wt*Pt+rr*vt,kr=new Float64Array(Jt);if(i.translate(kr,kr,[dr>.5?dr-1:dr,pr>.5?pr-1:pr,0]),this.alignedProjMatrix=kr,Jt=i.create(),i.scale(Jt,Jt,[this.width/2,-this.height/2,1]),i.translate(Jt,Jt,[1,-1,0]),this.labelPlaneMatrix=Jt,Jt=i.create(),i.scale(Jt,Jt,[1,-1,1]),i.translate(Jt,Jt,[-1,-1,0]),i.scale(Jt,Jt,[2/this.width,2/this.height,1]),this.glCoordMatrix=Jt,this.pixelMatrix=i.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),Jt=i.invert(new Float64Array(16),this.pixelMatrix),!Jt)throw new Error("failed to invert matrix");this.pixelMatrixInverse=Jt,this._posMatrixCache={},this._alignedPosMatrixCache={}}},yo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var z=this.pointCoordinate(new i.Point(0,0)),K=[z.x*this.worldSize,z.y*this.worldSize,0,1],O=i.transformMat4(K,K,this.pixelMatrix);return O[3]/this.cameraToCenterDistance},yo.prototype.getCameraPoint=function(){var z=this._pitch,K=Math.tan(z)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new i.Point(0,K))},yo.prototype.getCameraQueryGeometry=function(z){var K=this.getCameraPoint();if(z.length===1)return[z[0],K];for(var O=K.x,$=K.y,pe=K.x,de=K.y,Ie=0,$e=z;Ie<$e.length;Ie+=1){var pt=$e[Ie];O=Math.min(O,pt.x),$=Math.min($,pt.y),pe=Math.max(pe,pt.x),de=Math.max(de,pt.y)}return[new i.Point(O,$),new i.Point(pe,$),new i.Point(pe,de),new i.Point(O,de),new i.Point(O,$)]},Object.defineProperties(yo.prototype,po);function _l(Y,z){var K=!1,O=null,$=function(){O=null,K&&(Y(),O=setTimeout($,z),K=!1)};return function(){return K=!0,O||$(),O}}var Hl=function(z){this._hashName=z&&encodeURIComponent(z),i.bindAll(["_getCurrentHash","_onHashChange","_updateHash"],this),this._updateHash=_l(this._updateHashUnthrottled.bind(this),30*1e3/100)};Hl.prototype.addTo=function(z){return this._map=z,i.window.addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this},Hl.prototype.remove=function(){return i.window.removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),delete this._map,this},Hl.prototype.getHashString=function(z){var K=this._map.getCenter(),O=Math.round(this._map.getZoom()*100)/100,$=Math.ceil((O*Math.LN2+Math.log(512/360/.5))/Math.LN10),pe=Math.pow(10,$),de=Math.round(K.lng*pe)/pe,Ie=Math.round(K.lat*pe)/pe,$e=this._map.getBearing(),pt=this._map.getPitch(),Kt="";if(z?Kt+="/"+de+"/"+Ie+"/"+O:Kt+=O+"/"+Ie+"/"+de,($e||pt)&&(Kt+="/"+Math.round($e*10)/10),pt&&(Kt+="/"+Math.round(pt)),this._hashName){var ir=this._hashName,Jt=!1,vt=i.window.location.hash.slice(1).split("&").map(function(Pt){var Wt=Pt.split("=")[0];return Wt===ir?(Jt=!0,Wt+"="+Kt):Pt}).filter(function(Pt){return Pt});return Jt||vt.push(ir+"="+Kt),"#"+vt.join("&")}return"#"+Kt},Hl.prototype._getCurrentHash=function(){var z=this,K=i.window.location.hash.replace("#","");if(this._hashName){var O;return K.split("&").map(function($){return $.split("=")}).forEach(function($){$[0]===z._hashName&&(O=$)}),(O&&O[1]||"").split("/")}return K.split("/")},Hl.prototype._onHashChange=function(){var z=this._getCurrentHash();if(z.length>=3&&!z.some(function(O){return isNaN(O)})){var K=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(z[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+z[2],+z[1]],zoom:+z[0],bearing:K,pitch:+(z[4]||0)}),!0}return!1},Hl.prototype._updateHashUnthrottled=function(){var z=i.window.location.href.replace(/(#.+)?$/,this.getHashString());try{i.window.history.replaceState(i.window.history.state,null,z)}catch(K){}};var Zu={linearity:.3,easing:i.bezier(0,0,.3,1)},cu=i.extend({deceleration:2500,maxSpeed:1400},Zu),el=i.extend({deceleration:20,maxSpeed:1400},Zu),au=i.extend({deceleration:1e3,maxSpeed:360},Zu),zc=i.extend({deceleration:1e3,maxSpeed:90},Zu),zl=function(z){this._map=z,this.clear()};zl.prototype.clear=function(){this._inertiaBuffer=[]},zl.prototype.record=function(z){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.browser.now(),settings:z})},zl.prototype._drainInertiaBuffer=function(){for(var z=this._inertiaBuffer,K=i.browser.now(),O=160;z.length>0&&K-z[0].time>O;)z.shift()},zl.prototype._onMoveEnd=function(z){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var K={zoom:0,bearing:0,pitch:0,pan:new i.Point(0,0),pinchAround:void 0,around:void 0},O=0,$=this._inertiaBuffer;O<$.length;O+=1){var pe=$[O],de=pe.settings;K.zoom+=de.zoomDelta||0,K.bearing+=de.bearingDelta||0,K.pitch+=de.pitchDelta||0,de.panDelta&&K.pan._add(de.panDelta),de.around&&(K.around=de.around),de.pinchAround&&(K.pinchAround=de.pinchAround)}var Ie=this._inertiaBuffer[this._inertiaBuffer.length-1],$e=Ie.time-this._inertiaBuffer[0].time,pt={};if(K.pan.mag()){var Kt=Z(K.pan.mag(),$e,i.extend({},cu,z||{}));pt.offset=K.pan.mult(Kt.amount/K.pan.mag()),pt.center=this._map.transform.center,Fl(pt,Kt)}if(K.zoom){var ir=Z(K.zoom,$e,el);pt.zoom=this._map.transform.zoom+ir.amount,Fl(pt,ir)}if(K.bearing){var Jt=Z(K.bearing,$e,au);pt.bearing=this._map.transform.bearing+i.clamp(Jt.amount,-179,179),Fl(pt,Jt)}if(K.pitch){var vt=Z(K.pitch,$e,zc);pt.pitch=this._map.transform.pitch+vt.amount,Fl(pt,vt)}if(pt.zoom||pt.bearing){var Pt=K.pinchAround===void 0?K.around:K.pinchAround;pt.around=Pt?this._map.unproject(Pt):this._map.getCenter()}return this.clear(),i.extend(pt,{noMoveStart:!0})}};function Fl(Y,z){(!Y.duration||Y.duration=this._clickTolerance||this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.dblclick=function(z){return this._firePreventable(new oe(z.type,this._map,z))},Ue.prototype.mouseover=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.mouseout=function(z){this._map.fire(new oe(z.type,this._map,z))},Ue.prototype.touchstart=function(z){return this._firePreventable(new we(z.type,this._map,z))},Ue.prototype.touchmove=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchend=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype.touchcancel=function(z){this._map.fire(new we(z.type,this._map,z))},Ue.prototype._firePreventable=function(z){if(this._map.fire(z),z.defaultPrevented)return{}},Ue.prototype.isEnabled=function(){return!0},Ue.prototype.isActive=function(){return!1},Ue.prototype.enable=function(){},Ue.prototype.disable=function(){};var We=function(z){this._map=z};We.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},We.prototype.mousemove=function(z){this._map.fire(new oe(z.type,this._map,z))},We.prototype.mousedown=function(){this._delayContextMenu=!0},We.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new oe("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},We.prototype.contextmenu=function(z){this._delayContextMenu?this._contextMenuEvent=z:this._map.fire(new oe(z.type,this._map,z)),this._map.listens("contextmenu")&&z.preventDefault()},We.prototype.isEnabled=function(){return!0},We.prototype.isActive=function(){return!1},We.prototype.enable=function(){},We.prototype.disable=function(){};var wt=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._container=z.getContainer(),this._clickTolerance=K.clickTolerance||1};wt.prototype.isEnabled=function(){return!!this._enabled},wt.prototype.isActive=function(){return!!this._active},wt.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},wt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},wt.prototype.mousedown=function(z,K){this.isEnabled()&&z.shiftKey&&z.button===0&&(o.disableDrag(),this._startPos=this._lastPos=K,this._active=!0)},wt.prototype.mousemoveWindow=function(z,K){if(this._active){var O=K;if(!(this._lastPos.equals(O)||!this._box&&O.dist(this._startPos)this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=z.timeStamp),O.length===this.numTouches&&(this.centroid=zt(K),this.touches=tt(O,K)))},Ir.prototype.touchmove=function(z,K,O){if(!(this.aborted||!this.centroid)){var $=tt(O,K);for(var pe in this.touches){var de=this.touches[pe],Ie=$[pe];(!Ie||Ie.dist(de)>Dr)&&(this.aborted=!0)}}},Ir.prototype.touchend=function(z,K,O){if((!this.centroid||z.timeStamp-this.startTime>lr)&&(this.aborted=!0),O.length===0){var $=!this.aborted&&this.centroid;if(this.reset(),$)return $}};var oi=function(z){this.singleTap=new Ir(z),this.numTaps=z.numTaps,this.reset()};oi.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},oi.prototype.touchstart=function(z,K,O){this.singleTap.touchstart(z,K,O)},oi.prototype.touchmove=function(z,K,O){this.singleTap.touchmove(z,K,O)},oi.prototype.touchend=function(z,K,O){var $=this.singleTap.touchend(z,K,O);if($){var pe=z.timeStamp-this.lastTime0&&(this._active=!0);var $=tt(O,K),pe=new i.Point(0,0),de=new i.Point(0,0),Ie=0;for(var $e in $){var pt=$[$e],Kt=this._touches[$e];Kt&&(pe._add(pt),de._add(pt.sub(Kt)),Ie++,$[$e]=pt)}if(this._touches=$,!(IeMath.abs(Y.x)}var pn=100,za=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.reset=function(){Y.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},z.prototype._start=function(O){this._lastPoints=O,Ns(O[0].sub(O[1]))&&(this._valid=!1)},z.prototype._move=function(O,$,pe){var de=O[0].sub(this._lastPoints[0]),Ie=O[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(de,Ie,pe.timeStamp),!!this._valid){this._lastPoints=O,this._active=!0;var $e=(de.y+Ie.y)/2,pt=-.5;return{pitchDelta:$e*pt}}},z.prototype.gestureBeginsVertically=function(O,$,pe){if(this._valid!==void 0)return this._valid;var de=2,Ie=O.mag()>=de,$e=$.mag()>=de;if(!(!Ie&&!$e)){if(!Ie||!$e)return this._firstMove===void 0&&(this._firstMove=pe),pe-this._firstMove0==$.y>0;return Ns(O)&&Ns($)&&pt}},z}(Nn),Lo={panStep:100,bearingStep:15,pitchStep:10},Fo=function(){var z=Lo;this._panStep=z.panStep,this._bearingStep=z.bearingStep,this._pitchStep=z.pitchStep,this._rotationDisabled=!1};Fo.prototype.reset=function(){this._active=!1},Fo.prototype.keydown=function(z){var K=this;if(!(z.altKey||z.ctrlKey||z.metaKey)){var O=0,$=0,pe=0,de=0,Ie=0;switch(z.keyCode){case 61:case 107:case 171:case 187:O=1;break;case 189:case 109:case 173:O=-1;break;case 37:z.shiftKey?$=-1:(z.preventDefault(),de=-1);break;case 39:z.shiftKey?$=1:(z.preventDefault(),de=1);break;case 38:z.shiftKey?pe=1:(z.preventDefault(),Ie=-1);break;case 40:z.shiftKey?pe=-1:(z.preventDefault(),Ie=1);break;default:return}return this._rotationDisabled&&($=0,pe=0),{cameraAnimation:function($e){var pt=$e.getZoom();$e.easeTo({duration:300,easeId:"keyboardHandler",easing:js,zoom:O?Math.round(pt)+O*(z.shiftKey?2:1):pt,bearing:$e.getBearing()+$*K._bearingStep,pitch:$e.getPitch()+pe*K._pitchStep,offset:[-de*K._panStep,-Ie*K._panStep],center:$e.getCenter()},{originalEvent:z})}}}},Fo.prototype.enable=function(){this._enabled=!0},Fo.prototype.disable=function(){this._enabled=!1,this.reset()},Fo.prototype.isEnabled=function(){return this._enabled},Fo.prototype.isActive=function(){return this._active},Fo.prototype.disableRotation=function(){this._rotationDisabled=!0},Fo.prototype.enableRotation=function(){this._rotationDisabled=!1};function js(Y){return Y*(2-Y)}var xl=4.000244140625,fu=1/100,dl=1/450,xc=2,At=function(z,K){this._map=z,this._el=z.getCanvasContainer(),this._handler=K,this._delta=0,this._defaultZoomRate=fu,this._wheelZoomRate=dl,i.bindAll(["_onTimeout"],this)};At.prototype.setZoomRate=function(z){this._defaultZoomRate=z},At.prototype.setWheelZoomRate=function(z){this._wheelZoomRate=z},At.prototype.isEnabled=function(){return!!this._enabled},At.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},At.prototype.isZooming=function(){return!!this._zooming},At.prototype.enable=function(z){this.isEnabled()||(this._enabled=!0,this._aroundCenter=z&&z.around==="center")},At.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},At.prototype.wheel=function(z){if(this.isEnabled()){var K=z.deltaMode===i.window.WheelEvent.DOM_DELTA_LINE?z.deltaY*40:z.deltaY,O=i.browser.now(),$=O-(this._lastWheelEventTime||0);this._lastWheelEventTime=O,K!==0&&K%xl===0?this._type="wheel":K!==0&&Math.abs(K)<4?this._type="trackpad":$>400?(this._type=null,this._lastValue=K,this._timeout=setTimeout(this._onTimeout,40,z)):this._type||(this._type=Math.abs($*K)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,K+=this._lastValue)),z.shiftKey&&K&&(K=K/4),this._type&&(this._lastWheelEvent=z,this._delta-=K,this._active||this._start(z)),z.preventDefault()}},At.prototype._onTimeout=function(z){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(z)},At.prototype._start=function(z){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var K=o.mousePos(this._el,z);this._around=i.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(K)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},At.prototype.renderFrame=function(){var z=this;if(this._frameId&&(this._frameId=null,!!this.isActive())){var K=this._map.transform;if(this._delta!==0){var O=this._type==="wheel"&&Math.abs(this._delta)>xl?this._wheelZoomRate:this._defaultZoomRate,$=xc/(1+Math.exp(-Math.abs(this._delta*O)));this._delta<0&&$!==0&&($=1/$);var pe=typeof this._targetZoom=="number"?K.zoomScale(this._targetZoom):K.scale;this._targetZoom=Math.min(K.maxZoom,Math.max(K.minZoom,K.scaleZoom(pe*$))),this._type==="wheel"&&(this._startZoom=K.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var de=typeof this._targetZoom=="number"?this._targetZoom:K.zoom,Ie=this._startZoom,$e=this._easing,pt=!1,Kt;if(this._type==="wheel"&&Ie&&$e){var ir=Math.min((i.browser.now()-this._lastWheelEventTime)/200,1),Jt=$e(ir);Kt=i.number(Ie,de,Jt),ir<1?this._frameId||(this._frameId=!0):pt=!0}else Kt=de,pt=!0;return this._active=!0,pt&&(this._active=!1,this._finishTimeout=setTimeout(function(){z._zooming=!1,z._handler._triggerRenderFrame(),delete z._targetZoom,delete z._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!pt,zoomDelta:Kt-K.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},At.prototype._smoothOutEasing=function(z){var K=i.ease;if(this._prevEase){var O=this._prevEase,$=(i.browser.now()-O.start)/O.duration,pe=O.easing($+.01)-O.easing($),de=.27/Math.sqrt(pe*pe+1e-4)*.01,Ie=Math.sqrt(.27*.27-de*de);K=i.bezier(de,Ie,.25,1)}return this._prevEase={start:i.browser.now(),duration:z,easing:K},K},At.prototype.reset=function(){this._active=!1};var Er=function(z,K){this._clickZoom=z,this._tapZoom=K};Er.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},Er.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},Er.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},Er.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var Wr=function(){this.reset()};Wr.prototype.reset=function(){this._active=!1},Wr.prototype.dblclick=function(z,K){return z.preventDefault(),{cameraAnimation:function(O){O.easeTo({duration:300,zoom:O.getZoom()+(z.shiftKey?-1:1),around:O.unproject(K)},{originalEvent:z})}}},Wr.prototype.enable=function(){this._enabled=!0},Wr.prototype.disable=function(){this._enabled=!1,this.reset()},Wr.prototype.isEnabled=function(){return this._enabled},Wr.prototype.isActive=function(){return this._active};var wi=function(){this._tap=new oi({numTouches:1,numTaps:1}),this.reset()};wi.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},wi.prototype.touchstart=function(z,K,O){this._swipePoint||(this._tapTime&&z.timeStamp-this._tapTime>or&&this.reset(),this._tapTime?O.length>0&&(this._swipePoint=K[0],this._swipeTouch=O[0].identifier):this._tap.touchstart(z,K,O))},wi.prototype.touchmove=function(z,K,O){if(!this._tapTime)this._tap.touchmove(z,K,O);else if(this._swipePoint){if(O[0].identifier!==this._swipeTouch)return;var $=K[0],pe=$.y-this._swipePoint.y;return this._swipePoint=$,z.preventDefault(),this._active=!0,{zoomDelta:pe/128}}},wi.prototype.touchend=function(z,K,O){if(this._tapTime)this._swipePoint&&O.length===0&&this.reset();else{var $=this._tap.touchend(z,K,O);$&&(this._tapTime=z.timeStamp)}},wi.prototype.touchcancel=function(){this.reset()},wi.prototype.enable=function(){this._enabled=!0},wi.prototype.disable=function(){this._enabled=!1,this.reset()},wi.prototype.isEnabled=function(){return this._enabled},wi.prototype.isActive=function(){return this._active};var Ui=function(z,K,O){this._el=z,this._mousePan=K,this._touchPan=O};Ui.prototype.enable=function(z){this._inertiaOptions=z||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},Ui.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},Ui.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},Ui.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var Oi=function(z,K,O){this._pitchWithRotate=z.pitchWithRotate,this._mouseRotate=K,this._mousePitch=O};Oi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},Oi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},Oi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},Oi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var Bi=function(z,K,O,$){this._el=z,this._touchZoom=K,this._touchRotate=O,this._tapDragZoom=$,this._rotationDisabled=!1,this._enabled=!0};Bi.prototype.enable=function(z){this._touchZoom.enable(z),this._rotationDisabled||this._touchRotate.enable(z),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},Bi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},Bi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},Bi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},Bi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},Bi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var cn=function(Y){return Y.zoom||Y.drag||Y.pitch||Y.rotate},On=function(Y){function z(){Y.apply(this,arguments)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z}(i.Event);function Bn(Y){return Y.panDelta&&Y.panDelta.mag()||Y.zoomDelta||Y.bearingDelta||Y.pitchDelta}var yn=function(z,K){this._map=z,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new zl(z),this._bearingSnap=K.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(K),i.bindAll(["handleEvent","handleWindowEvent"],this);var O=this._el;this._listeners=[[O,"touchstart",{passive:!0}],[O,"touchmove",{passive:!1}],[O,"touchend",void 0],[O,"touchcancel",void 0],[O,"mousedown",void 0],[O,"mousemove",void 0],[O,"mouseup",void 0],[i.window.document,"mousemove",{capture:!0}],[i.window.document,"mouseup",void 0],[O,"mouseover",void 0],[O,"mouseout",void 0],[O,"dblclick",void 0],[O,"click",void 0],[O,"keydown",{capture:!1}],[O,"keyup",void 0],[O,"wheel",{passive:!1}],[O,"contextmenu",void 0],[i.window,"blur",void 0]];for(var $=0,pe=this._listeners;$Ie?Math.min(2,gr):Math.max(.5,gr),Ri=Math.pow(tn,1-ei),ln=de.unproject(kr.add(Ar.mult(ei*Ri)).mult(yi));de.setLocationAtPoint(de.renderWorldCopies?ln.wrap():ln,rr)}pe._fireMoveEvents($)},function(ei){pe._afterEase($,ei)},O),this},z.prototype._prepareEase=function(O,$,pe){pe===void 0&&(pe={}),this._moving=!0,!$&&!pe.moving&&this.fire(new i.Event("movestart",O)),this._zooming&&!pe.zooming&&this.fire(new i.Event("zoomstart",O)),this._rotating&&!pe.rotating&&this.fire(new i.Event("rotatestart",O)),this._pitching&&!pe.pitching&&this.fire(new i.Event("pitchstart",O))},z.prototype._fireMoveEvents=function(O){this.fire(new i.Event("move",O)),this._zooming&&this.fire(new i.Event("zoom",O)),this._rotating&&this.fire(new i.Event("rotate",O)),this._pitching&&this.fire(new i.Event("pitch",O))},z.prototype._afterEase=function(O,$){if(!(this._easeId&&$&&this._easeId===$)){delete this._easeId;var pe=this._zooming,de=this._rotating,Ie=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,pe&&this.fire(new i.Event("zoomend",O)),de&&this.fire(new i.Event("rotateend",O)),Ie&&this.fire(new i.Event("pitchend",O)),this.fire(new i.Event("moveend",O))}},z.prototype.flyTo=function(O,$){var pe=this;if(!O.essential&&i.browser.prefersReducedMotion){var de=i.pick(O,["center","zoom","bearing","pitch","around"]);return this.jumpTo(de,$)}this.stop(),O=i.extend({offset:[0,0],speed:1.2,curve:1.42,easing:i.ease},O);var Ie=this.transform,$e=this.getZoom(),pt=this.getBearing(),Kt=this.getPitch(),ir=this.getPadding(),Jt="zoom"in O?i.clamp(+O.zoom,Ie.minZoom,Ie.maxZoom):$e,vt="bearing"in O?this._normalizeBearing(O.bearing,pt):pt,Pt="pitch"in O?+O.pitch:Kt,Wt="padding"in O?O.padding:Ie.padding,rr=Ie.zoomScale(Jt-$e),dr=i.Point.convert(O.offset),pr=Ie.centerPoint.add(dr),kr=Ie.pointLocation(pr),Ar=i.LngLat.convert(O.center||kr);this._normalizeCenter(Ar);var gr=Ie.project(kr),Cr=Ie.project(Ar).sub(gr),cr=O.curve,Gr=Math.max(Ie.width,Ie.height),ei=Gr/rr,yi=Cr.mag();if("minZoom"in O){var tn=i.clamp(Math.min(O.minZoom,$e,Jt),Ie.minZoom,Ie.maxZoom),Ri=Gr/Ie.zoomScale(tn-$e);cr=Math.sqrt(Ri/yi*2)}var ln=cr*cr;function Qn(fo){var as=(ei*ei-Gr*Gr+(fo?-1:1)*ln*ln*yi*yi)/(2*(fo?ei:Gr)*ln*yi);return Math.log(Math.sqrt(as*as+1)-as)}function qn(fo){return(Math.exp(fo)-Math.exp(-fo))/2}function rn(fo){return(Math.exp(fo)+Math.exp(-fo))/2}function bn(fo){return qn(fo)/rn(fo)}var mn=Qn(0),Gn=function(fo){return rn(mn)/rn(mn+cr*fo)},da=function(fo){return Gr*((rn(mn)*bn(mn+cr*fo)-qn(mn))/ln)/yi},No=(Qn(1)-mn)/cr;if(Math.abs(yi)<1e-6||!isFinite(No)){if(Math.abs(Gr-ei)<1e-6)return this.easeTo(O,$);var Do=eiO.maxDuration&&(O.duration=0),this._zooming=!0,this._rotating=pt!==vt,this._pitching=Pt!==Kt,this._padding=!Ie.isPaddingEqual(Wt),this._prepareEase($,!1),this._ease(function(fo){var as=fo*No,tl=1/Gn(as);Ie.zoom=fo===1?Jt:$e+Ie.scaleZoom(tl),pe._rotating&&(Ie.bearing=i.number(pt,vt,fo)),pe._pitching&&(Ie.pitch=i.number(Kt,Pt,fo)),pe._padding&&(Ie.interpolatePadding(ir,Wt,fo),pr=Ie.centerPoint.add(dr));var zu=fo===1?Ar:Ie.unproject(gr.add(Cr.mult(da(as))).mult(tl));Ie.setLocationAtPoint(Ie.renderWorldCopies?zu.wrap():zu,pr),pe._fireMoveEvents($)},function(){return pe._afterEase($)},O),this},z.prototype.isEasing=function(){return!!this._easeFrameId},z.prototype.stop=function(){return this._stop()},z.prototype._stop=function(O,$){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var pe=this._onEaseEnd;delete this._onEaseEnd,pe.call(this,$)}if(!O){var de=this.handlers;de&&de.stop(!1)}return this},z.prototype._ease=function(O,$,pe){pe.animate===!1||pe.duration===0?(O(1),$()):(this._easeStart=i.browser.now(),this._easeOptions=pe,this._onEaseFrame=O,this._onEaseEnd=$,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},z.prototype._renderFrameCallback=function(){var O=Math.min((i.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(O)),O<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},z.prototype._normalizeBearing=function(O,$){O=i.wrap(O,-180,180);var pe=Math.abs(O-$);return Math.abs(O-360-$)180?-360:pe<-180?360:0}},z}(i.Evented),Rn=function(z){z===void 0&&(z={}),this.options=z,i.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};Rn.prototype.getDefaultPosition=function(){return"bottom-right"},Rn.prototype.onAdd=function(z){var K=this.options&&this.options.compact;return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=o.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=o.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),K&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),K===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},Rn.prototype.onRemove=function(){o.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},Rn.prototype._setElementTitle=function(z,K){var O=this._map._getUIString("AttributionControl."+K);z.title=O,z.setAttribute("aria-label",O)},Rn.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},Rn.prototype._updateEditLink=function(){var z=this._editLink;z||(z=this._editLink=this._container.querySelector(".mapbox-improve-map"));var K=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||i.config.ACCESS_TOKEN}];if(z){var O=K.reduce(function($,pe,de){return pe.value&&($+=pe.key+"="+pe.value+(de=0)return!1;return!0});var Ie=z.join(" | ");Ie!==this._attribHTML&&(this._attribHTML=Ie,z.length?(this._innerContainer.innerHTML=Ie,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},Rn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var Dn=function(){i.bindAll(["_updateLogo"],this),i.bindAll(["_updateCompact"],this)};Dn.prototype.onAdd=function(z){this._map=z,this._container=o.create("div","mapboxgl-ctrl");var K=o.create("a","mapboxgl-ctrl-logo");return K.target="_blank",K.rel="noopener nofollow",K.href="https://www.mapbox.com/",K.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),K.setAttribute("rel","noopener nofollow"),this._container.appendChild(K),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},Dn.prototype.onRemove=function(){o.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},Dn.prototype.getDefaultPosition=function(){return"bottom-left"},Dn.prototype._updateLogo=function(z){(!z||z.sourceDataType==="metadata")&&(this._container.style.display=this._logoRequired()?"block":"none")},Dn.prototype._logoRequired=function(){if(this._map.style){var z=this._map.style.sourceCaches;for(var K in z){var O=z[K].getSource();if(O.mapbox_logo)return!0}return!1}},Dn.prototype._updateCompact=function(){var z=this._container.children;if(z.length){var K=z[0];this._map.getCanvasContainer().offsetWidth<250?K.classList.add("mapboxgl-compact"):K.classList.remove("mapboxgl-compact")}};var fn=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};fn.prototype.add=function(z){var K=++this._id,O=this._queue;return O.push({callback:z,id:K,cancelled:!1}),K},fn.prototype.remove=function(z){for(var K=this._currentlyRunning,O=K?this._queue.concat(K):this._queue,$=0,pe=O;$O.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(O.minPitch!=null&&O.maxPitch!=null&&O.minPitch>O.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(O.minPitch!=null&&O.minPitchZa)throw new Error("maxPitch must be less than or equal to "+Za);var pe=new yo(O.minZoom,O.maxZoom,O.minPitch,O.maxPitch,O.renderWorldCopies);if(Y.call(this,pe,O),this._interactive=O.interactive,this._maxTileCacheSize=O.maxTileCacheSize,this._failIfMajorPerformanceCaveat=O.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=O.preserveDrawingBuffer,this._antialias=O.antialias,this._trackResize=O.trackResize,this._bearingSnap=O.bearingSnap,this._refreshExpiredTiles=O.refreshExpiredTiles,this._fadeDuration=O.fadeDuration,this._crossSourceCollisions=O.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=O.collectResourceTiming,this._renderTaskQueue=new fn,this._controls=[],this._mapId=i.uniqueId(),this._locale=i.extend({},Ai,O.locale),this._clickTolerance=O.clickTolerance,this._requestManager=new i.RequestManager(O.transformRequest,O.accessToken),typeof O.container=="string"){if(this._container=i.window.document.getElementById(O.container),!this._container)throw new Error("Container '"+O.container+"' not found.")}else if(O.container instanceof Ln)this._container=O.container;else throw new Error("Invalid type: 'container' must be a String or HTMLElement.");if(O.maxBounds&&this.setMaxBounds(O.maxBounds),i.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return $._update(!1)}),this.on("moveend",function(){return $._update(!1)}),this.on("zoom",function(){return $._update(!0)}),typeof i.window!="undefined"&&(i.window.addEventListener("online",this._onWindowOnline,!1),i.window.addEventListener("resize",this._onWindowResize,!1),i.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new yn(this,O);var de=typeof O.hash=="string"&&O.hash||void 0;this._hash=O.hash&&new Hl(de).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:O.center,zoom:O.zoom,bearing:O.bearing,pitch:O.pitch}),O.bounds&&(this.resize(),this.fitBounds(O.bounds,i.extend({},O.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=O.localIdeographFontFamily,O.style&&this.setStyle(O.style,{localIdeographFontFamily:O.localIdeographFontFamily}),O.attributionControl&&this.addControl(new Rn({customAttribution:O.customAttribution})),this.addControl(new Dn,O.logoPosition),this.on("style.load",function(){$.transform.unmodified&&$.jumpTo($.style.stylesheet)}),this.on("data",function(Ie){$._update(Ie.dataType==="style"),$.fire(new i.Event(Ie.dataType+"data",Ie))}),this.on("dataloading",function(Ie){$.fire(new i.Event(Ie.dataType+"dataloading",Ie))})}Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z;var K={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return z.prototype._getMapId=function(){return this._mapId},z.prototype.addControl=function($,pe){if(pe===void 0&&($.getDefaultPosition?pe=$.getDefaultPosition():pe="top-right"),!$||!$.onAdd)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var de=$.onAdd(this);this._controls.push($);var Ie=this._controlPositions[pe];return pe.indexOf("bottom")!==-1?Ie.insertBefore(de,Ie.firstChild):Ie.appendChild(de),this},z.prototype.removeControl=function($){if(!$||!$.onRemove)return this.fire(new i.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var pe=this._controls.indexOf($);return pe>-1&&this._controls.splice(pe,1),$.onRemove(this),this},z.prototype.hasControl=function($){return this._controls.indexOf($)>-1},z.prototype.resize=function($){var pe=this._containerDimensions(),de=pe[0],Ie=pe[1];this._resizeCanvas(de,Ie),this.transform.resize(de,Ie),this.painter.resize(de,Ie);var $e=!this._moving;return $e&&(this.stop(),this.fire(new i.Event("movestart",$)).fire(new i.Event("move",$))),this.fire(new i.Event("resize",$)),$e&&this.fire(new i.Event("moveend",$)),this},z.prototype.getBounds=function(){return this.transform.getBounds()},z.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},z.prototype.setMaxBounds=function($){return this.transform.setMaxBounds(i.LngLatBounds.convert($)),this._update()},z.prototype.setMinZoom=function($){if($=$==null?gn:$,$>=gn&&$<=this.transform.maxZoom)return this.transform.minZoom=$,this._update(),this.getZoom()<$&&this.setZoom($),this;throw new Error("minZoom must be between "+gn+" and the current maxZoom, inclusive")},z.prototype.getMinZoom=function(){return this.transform.minZoom},z.prototype.setMaxZoom=function($){if($=$==null?ca:$,$>=this.transform.minZoom)return this.transform.maxZoom=$,this._update(),this.getZoom()>$&&this.setZoom($),this;throw new Error("maxZoom must be greater than the current minZoom")},z.prototype.getMaxZoom=function(){return this.transform.maxZoom},z.prototype.setMinPitch=function($){if($=$==null?Kn:$,$=Kn&&$<=this.transform.maxPitch)return this.transform.minPitch=$,this._update(),this.getPitch()<$&&this.setPitch($),this;throw new Error("minPitch must be between "+Kn+" and the current maxPitch, inclusive")},z.prototype.getMinPitch=function(){return this.transform.minPitch},z.prototype.setMaxPitch=function($){if($=$==null?Za:$,$>Za)throw new Error("maxPitch must be less than or equal to "+Za);if($>=this.transform.minPitch)return this.transform.maxPitch=$,this._update(),this.getPitch()>$&&this.setPitch($),this;throw new Error("maxPitch must be greater than the current minPitch")},z.prototype.getMaxPitch=function(){return this.transform.maxPitch},z.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},z.prototype.setRenderWorldCopies=function($){return this.transform.renderWorldCopies=$,this._update()},z.prototype.project=function($){return this.transform.locationPoint(i.LngLat.convert($))},z.prototype.unproject=function($){return this.transform.pointLocation(i.Point.convert($))},z.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},z.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},z.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},z.prototype._createDelegatedListener=function($,pe,de){var Ie=this,$e;if($==="mouseenter"||$==="mouseover"){var pt=!1,Kt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?pt||(pt=!0,de.call(Ie,new oe($,Ie,rr.originalEvent,{features:dr}))):pt=!1},ir=function(){pt=!1};return{layer:pe,listener:de,delegates:{mousemove:Kt,mouseout:ir}}}else if($==="mouseleave"||$==="mouseout"){var Jt=!1,vt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length?Jt=!0:Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))},Pt=function(rr){Jt&&(Jt=!1,de.call(Ie,new oe($,Ie,rr.originalEvent)))};return{layer:pe,listener:de,delegates:{mousemove:vt,mouseout:Pt}}}else{var Wt=function(rr){var dr=Ie.getLayer(pe)?Ie.queryRenderedFeatures(rr.point,{layers:[pe]}):[];dr.length&&(rr.features=dr,de.call(Ie,rr),delete rr.features)};return{layer:pe,listener:de,delegates:($e={},$e[$]=Wt,$e)}}},z.prototype.on=function($,pe,de){if(de===void 0)return Y.prototype.on.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[$]=this._delegatedListeners[$]||[],this._delegatedListeners[$].push(Ie);for(var $e in Ie.delegates)this.on($e,Ie.delegates[$e]);return this},z.prototype.once=function($,pe,de){if(de===void 0)return Y.prototype.once.call(this,$,pe);var Ie=this._createDelegatedListener($,pe,de);for(var $e in Ie.delegates)this.once($e,Ie.delegates[$e]);return this},z.prototype.off=function($,pe,de){var Ie=this;if(de===void 0)return Y.prototype.off.call(this,$,pe);var $e=function(pt){for(var Kt=pt[$],ir=0;ir180;){var de=K.locationPoint(Y);if(de.x>=0&&de.y>=0&&de.x<=K.width&&de.y<=K.height)break;Y.lng>K.center.lng?Y.lng-=360:Y.lng+=360}return Y}var ro={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ao(Y,z,K){var O=Y.classList;for(var $ in ro)O.remove("mapboxgl-"+K+"-anchor-"+$);O.add("mapboxgl-"+K+"-anchor-"+z)}var Jn=function(Y){function z(K,O){if(Y.call(this),(K instanceof i.window.HTMLElement||O)&&(K=i.extend({element:K},O)),i.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=K&&K.anchor||"center",this._color=K&&K.color||"#3FB1CE",this._scale=K&&K.scale||1,this._draggable=K&&K.draggable||!1,this._clickTolerance=K&&K.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=K&&K.rotation||0,this._rotationAlignment=K&&K.rotationAlignment||"auto",this._pitchAlignment=K&&K.pitchAlignment&&K.pitchAlignment!=="auto"?K.pitchAlignment:this._rotationAlignment,!K||!K.element){this._defaultMarker=!0,this._element=o.create("div"),this._element.setAttribute("aria-label","Map marker");var $=o.createNS("http://www.w3.org/2000/svg","svg"),pe=41,de=27;$.setAttributeNS(null,"display","block"),$.setAttributeNS(null,"height",pe+"px"),$.setAttributeNS(null,"width",de+"px"),$.setAttributeNS(null,"viewBox","0 0 "+de+" "+pe);var Ie=o.createNS("http://www.w3.org/2000/svg","g");Ie.setAttributeNS(null,"stroke","none"),Ie.setAttributeNS(null,"stroke-width","1"),Ie.setAttributeNS(null,"fill","none"),Ie.setAttributeNS(null,"fill-rule","evenodd");var $e=o.createNS("http://www.w3.org/2000/svg","g");$e.setAttributeNS(null,"fill-rule","nonzero");var pt=o.createNS("http://www.w3.org/2000/svg","g");pt.setAttributeNS(null,"transform","translate(3.0, 29.0)"),pt.setAttributeNS(null,"fill","#000000");for(var Kt=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}],ir=0,Jt=Kt;ir=$}this._isDragging&&(this._pos=O.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new i.Event("dragstart"))),this.fire(new i.Event("drag")))},z.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new i.Event("dragend")),this._state="inactive"},z.prototype._addDragHandler=function(O){this._element.contains(O.originalEvent.target)&&(O.preventDefault(),this._positionDelta=O.point.sub(this._pos).add(this._offset),this._pointerdownPos=O.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},z.prototype.setDraggable=function(O){return this._draggable=!!O,this._map&&(O?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},z.prototype.isDraggable=function(){return this._draggable},z.prototype.setRotation=function(O){return this._rotation=O||0,this._update(),this},z.prototype.getRotation=function(){return this._rotation},z.prototype.setRotationAlignment=function(O){return this._rotationAlignment=O||"auto",this._update(),this},z.prototype.getRotationAlignment=function(){return this._rotationAlignment},z.prototype.setPitchAlignment=function(O){return this._pitchAlignment=O&&O!=="auto"?O:this._rotationAlignment,this._update(),this},z.prototype.getPitchAlignment=function(){return this._pitchAlignment},z}(i.Evented),Oa={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},_o;function Po(Y){_o!==void 0?Y(_o):i.window.navigator.permissions!==void 0?i.window.navigator.permissions.query({name:"geolocation"}).then(function(z){_o=z.state!=="denied",Y(_o)}):(_o=!!i.window.navigator.geolocation,Y(_o))}var Jo=0,Yl=!1,$c=function(Y){function z(K){Y.call(this),this.options=i.extend({},Oa,K),i.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.onAdd=function(O){return this._map=O,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),Po(this._setupUI),this._container},z.prototype.onRemove=function(){this._geolocationWatchID!==void 0&&(i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),o.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,Jo=0,Yl=!1},z.prototype._isOutOfMapMaxBounds=function(O){var $=this._map.getMaxBounds(),pe=O.coords;return $&&(pe.longitude<$.getWest()||pe.longitude>$.getEast()||pe.latitude<$.getSouth()||pe.latitude>$.getNorth())},z.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break}},z.prototype._onSuccess=function(O){if(this._map){if(this._isOutOfMapMaxBounds(O)){this._setErrorState(),this.fire(new i.Event("outofmaxbounds",O)),this._updateMarker(),this._finish();return}if(this.options.trackUserLocation)switch(this._lastKnownPosition=O,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(O),(!this.options.trackUserLocation||this._watchState==="ACTIVE_LOCK")&&this._updateCamera(O),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("geolocate",O)),this._finish()}},z.prototype._updateCamera=function(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude),pe=O.coords.accuracy,de=this._map.getBearing(),Ie=i.extend({bearing:de},this.options.fitBoundsOptions);this._map.fitBounds($.toBounds(pe),Ie,{geolocateSource:!0})},z.prototype._updateMarker=function(O){if(O){var $=new i.LngLat(O.coords.longitude,O.coords.latitude);this._accuracyCircleMarker.setLngLat($).addTo(this._map),this._userLocationDotMarker.setLngLat($).addTo(this._map),this._accuracy=O.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},z.prototype._updateCircleRadius=function(){var O=this._map._container.clientHeight/2,$=this._map.unproject([0,O]),pe=this._map.unproject([1,O]),de=$.distanceTo(pe),Ie=Math.ceil(2*this._accuracy/de);this._circleElement.style.width=Ie+"px",this._circleElement.style.height=Ie+"px"},z.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},z.prototype._onError=function(O){if(this._map){if(this.options.trackUserLocation)if(O.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var $=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=$,this._geolocateButton.setAttribute("aria-label",$),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(O.code===3&&Yl)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new i.Event("error",O)),this._finish()}},z.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},z.prototype._setupUI=function(O){var $=this;if(this._container.addEventListener("contextmenu",function(Ie){return Ie.preventDefault()}),this._geolocateButton=o.create("button","mapboxgl-ctrl-geolocate",this._container),o.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",O===!1){i.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var pe=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=pe,this._geolocateButton.setAttribute("aria-label",pe)}else{var de=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=de,this._geolocateButton.setAttribute("aria-label",de)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=o.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new Jn(this._dotElement),this._circleElement=o.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new Jn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(Ie){var $e=Ie.originalEvent&&Ie.originalEvent.type==="resize";!Ie.geolocateSource&&$._watchState==="ACTIVE_LOCK"&&!$e&&($._watchState="BACKGROUND",$._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),$._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),$.fire(new i.Event("trackuserlocationend")))})},z.prototype.trigger=function(){if(!this._setup)return i.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new i.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":Jo--,Yl=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new i.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new i.Event("trackuserlocationstart"));break}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");break}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),Jo++;var O;Jo>1?(O={maximumAge:6e5,timeout:0},Yl=!0):(O=this.options.positionOptions,Yl=!1),this._geolocationWatchID=i.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,O)}}else i.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},z.prototype._clearWatch=function(){i.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},z}(i.Evented),xs={maxWidth:100,unit:"metric"},Qc=function(z){this.options=i.extend({},xs,z),i.bindAll(["_onMove","setUnit"],this)};Qc.prototype.getDefaultPosition=function(){return"bottom-left"},Qc.prototype._onMove=function(){El(this._map,this._container,this.options)},Qc.prototype.onAdd=function(z){return this._map=z,this._container=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",z.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},Qc.prototype.onRemove=function(){o.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},Qc.prototype.setUnit=function(z){this.options.unit=z,El(this._map,this._container,this.options)};function El(Y,z,K){var O=K&&K.maxWidth||100,$=Y._container.clientHeight/2,pe=Y.unproject([0,$]),de=Y.unproject([O,$]),Ie=pe.distanceTo(de);if(K&&K.unit==="imperial"){var $e=3.2808*Ie;if($e>5280){var pt=$e/5280;bc(z,O,pt,Y._getUIString("ScaleControl.Miles"))}else bc(z,O,$e,Y._getUIString("ScaleControl.Feet"))}else if(K&&K.unit==="nautical"){var Kt=Ie/1852;bc(z,O,Kt,Y._getUIString("ScaleControl.NauticalMiles"))}else Ie>=1e3?bc(z,O,Ie/1e3,Y._getUIString("ScaleControl.Kilometers")):bc(z,O,Ie,Y._getUIString("ScaleControl.Meters"))}function bc(Y,z,K,O){var $=yf(K),pe=$/K;Y.style.width=z*pe+"px",Y.innerHTML=$+" "+O}function wc(Y){var z=Math.pow(10,Math.ceil(-Math.log(Y)/Math.LN10));return Math.round(Y*z)/z}function yf(Y){var z=Math.pow(10,(""+Math.floor(Y)).length-1),K=Y/z;return K=K>=10?10:K>=5?5:K>=3?3:K>=2?2:K>=1?1:wc(K),z*K}var Gl=function(z){this._fullscreen=!1,z&&z.container&&(z.container instanceof i.window.HTMLElement?this._container=z.container:i.warnOnce("Full screen control 'container' must be a DOM element.")),i.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in i.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in i.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in i.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in i.window.document&&(this._fullscreenchange="MSFullscreenChange")};Gl.prototype.onAdd=function(z){return this._map=z,this._container||(this._container=this._map.getContainer()),this._controlContainer=o.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",i.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Gl.prototype.onRemove=function(){o.remove(this._controlContainer),this._map=null,i.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Gl.prototype._checkFullscreenSupport=function(){return!!(i.window.document.fullscreenEnabled||i.window.document.mozFullScreenEnabled||i.window.document.msFullscreenEnabled||i.window.document.webkitFullscreenEnabled)},Gl.prototype._setupUI=function(){var z=this._fullscreenButton=o.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);o.create("span","mapboxgl-ctrl-icon",z).setAttribute("aria-hidden",!0),z.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),i.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Gl.prototype._updateTitle=function(){var z=this._getTitle();this._fullscreenButton.setAttribute("aria-label",z),this._fullscreenButton.title=z},Gl.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Gl.prototype._isFullscreen=function(){return this._fullscreen},Gl.prototype._changeIcon=function(){var z=i.window.document.fullscreenElement||i.window.document.mozFullScreenElement||i.window.document.webkitFullscreenElement||i.window.document.msFullscreenElement;z===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Gl.prototype._onClickFullscreen=function(){this._isFullscreen()?i.window.document.exitFullscreen?i.window.document.exitFullscreen():i.window.document.mozCancelFullScreen?i.window.document.mozCancelFullScreen():i.window.document.msExitFullscreen?i.window.document.msExitFullscreen():i.window.document.webkitCancelFullScreen&&i.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Fc={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},ef=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),ls=function(Y){function z(K){Y.call(this),this.options=i.extend(Object.create(Fc),K),i.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return Y&&(z.__proto__=Y),z.prototype=Object.create(Y&&Y.prototype),z.prototype.constructor=z,z.prototype.addTo=function(O){return this._map&&this.remove(),this._map=O,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new i.Event("open")),this},z.prototype.isOpen=function(){return!!this._map},z.prototype.remove=function(){return this._content&&o.remove(this._content),this._container&&(o.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new i.Event("close")),this},z.prototype.getLngLat=function(){return this._lngLat},z.prototype.setLngLat=function(O){return this._lngLat=i.LngLat.convert(O),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},z.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},z.prototype.getElement=function(){return this._container},z.prototype.setText=function(O){return this.setDOMContent(i.window.document.createTextNode(O))},z.prototype.setHTML=function(O){var $=i.window.document.createDocumentFragment(),pe=i.window.document.createElement("body"),de;for(pe.innerHTML=O;de=pe.firstChild,!!de;)$.appendChild(de);return this.setDOMContent($)},z.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},z.prototype.setMaxWidth=function(O){return this.options.maxWidth=O,this._update(),this},z.prototype.setDOMContent=function(O){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=o.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(O),this._createCloseButton(),this._update(),this._focusFirstElement(),this},z.prototype.addClassName=function(O){this._container&&this._container.classList.add(O)},z.prototype.removeClassName=function(O){this._container&&this._container.classList.remove(O)},z.prototype.setOffset=function(O){return this.options.offset=O,this._update(),this},z.prototype.toggleClassName=function(O){if(this._container)return this._container.classList.toggle(O)},z.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=o.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},z.prototype._onMouseUp=function(O){this._update(O.point)},z.prototype._onMouseMove=function(O){this._update(O.point)},z.prototype._onDrag=function(O){this._update(O.point)},z.prototype._update=function(O){var $=this,pe=this._lngLat||this._trackPointer;if(!(!this._map||!pe||!this._content)&&(this._container||(this._container=o.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=o.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(vt){return $._container.classList.add(vt)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=ma(this._lngLat,this._pos,this._map.transform)),!(this._trackPointer&&!O))){var de=this._pos=this._trackPointer&&O?O:this._map.project(this._lngLat),Ie=this.options.anchor,$e=_f(this.options.offset);if(!Ie){var pt=this._container.offsetWidth,Kt=this._container.offsetHeight,ir;de.y+$e.bottom.ythis._map.transform.height-Kt?ir=["bottom"]:ir=[],de.xthis._map.transform.width-pt/2&&ir.push("right"),ir.length===0?Ie="bottom":Ie=ir.join("-")}var Jt=de.add($e[Ie]).round();o.setTransform(this._container,ro[Ie]+" translate("+Jt.x+"px,"+Jt.y+"px)"),Ao(this._container,Ie,"popup")}},z.prototype._focusFirstElement=function(){if(!(!this.options.focusAfterOpen||!this._container)){var O=this._container.querySelector(ef);O&&O.focus()}},z.prototype._onClose=function(){this.remove()},z}(i.Evented);function _f(Y){if(Y)if(typeof Y=="number"){var z=Math.round(Math.sqrt(.5*Math.pow(Y,2)));return{center:new i.Point(0,0),top:new i.Point(0,Y),"top-left":new i.Point(z,z),"top-right":new i.Point(-z,z),bottom:new i.Point(0,-Y),"bottom-left":new i.Point(z,-z),"bottom-right":new i.Point(-z,-z),left:new i.Point(Y,0),right:new i.Point(-Y,0)}}else if(Y instanceof i.Point||Array.isArray(Y)){var K=i.Point.convert(Y);return{center:K,top:K,"top-left":K,"top-right":K,bottom:K,"bottom-left":K,"bottom-right":K,left:K,right:K}}else return{center:i.Point.convert(Y.center||[0,0]),top:i.Point.convert(Y.top||[0,0]),"top-left":i.Point.convert(Y["top-left"]||[0,0]),"top-right":i.Point.convert(Y["top-right"]||[0,0]),bottom:i.Point.convert(Y.bottom||[0,0]),"bottom-left":i.Point.convert(Y["bottom-left"]||[0,0]),"bottom-right":i.Point.convert(Y["bottom-right"]||[0,0]),left:i.Point.convert(Y.left||[0,0]),right:i.Point.convert(Y.right||[0,0])};else return _f(new i.Point(0,0))}var ns={version:i.version,supported:a,setRTLTextPlugin:i.setRTLTextPlugin,getRTLTextPluginStatus:i.getRTLTextPluginStatus,Map:vn,NavigationControl:Xn,GeolocateControl:$c,AttributionControl:Rn,ScaleControl:Qc,FullscreenControl:Gl,Popup:ls,Marker:Jn,Style:mu,LngLat:i.LngLat,LngLatBounds:i.LngLatBounds,Point:i.Point,MercatorCoordinate:i.MercatorCoordinate,Evented:i.Evented,config:i.config,prewarm:jn,clearPrewarmedResources:la,get accessToken(){return i.config.ACCESS_TOKEN},set accessToken(Y){i.config.ACCESS_TOKEN=Y},get baseApiUrl(){return i.config.API_URL},set baseApiUrl(Y){i.config.API_URL=Y},get workerCount(){return Pi.workerCount},set workerCount(Y){Pi.workerCount=Y},get maxParallelImageRequests(){return i.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(Y){i.config.MAX_PARALLEL_IMAGE_REQUESTS=Y},clearStorage:function(z){i.clearTileCache(z)},workerUrl:""};return ns}),r})});var JUe=ye((Byr,KUe)=>{"use strict";var tw=Mr(),CHt=Pl().sanitizeHTML,LHt=HK(),ZUe=c1();function XUe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=ZUe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ig=XUe.prototype;ig.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=WF(t)};ig.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ig.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ig.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ig.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ig.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapboxLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ig.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!WF(e)){var r=PHt(e);t.addSource(this.idSource,r)}};ig.findFollowingMapboxLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function YUe(e){var t={},r={};switch(e.type){case"circle":tw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":tw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":tw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=LHt(n.textposition,n.iconsize);tw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),tw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":tw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function PHt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=CHt(e.sourceattribution)),n}KUe.exports=function(t,r,n){var i=new XUe(t,r);return i.update(n),i}});var oVe=ye((Nyr,aVe)=>{"use strict";var KK=YK(),JK=Mr(),tVe=nx(),$Ue=ba(),IHt=Qa(),RHt=gv(),ZF=Nc(),rVe=Sg(),DHt=rVe.drawMode,zHt=rVe.selectMode,FHt=wf().prepSelect,qHt=wf().clearOutline,OHt=wf().clearSelectionsCache,BHt=wf().selectOnClick,_x=c1(),NHt=JUe();function iVe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Ah=iVe.prototype;Ah.plot=function(e,t,r){var n=this,i=t[n.id];n.map&&i.accesstoken!==n.accessToken&&(n.map.remove(),n.map=null,n.styleObj=null,n.traceHash={},n.layerList=[]);var a;n.map?a=new Promise(function(o,s){n.updateMap(e,t,o,s)}):a=new Promise(function(o,s){n.createMap(e,t,o,s)}),r.push(a)};Ah.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=nVe(a.style,t);i.accessToken=a.accesstoken;var s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new KK.Map({container:i.div,style:o.style,center:$K(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new KK.AttributionControl({compact:!0}));u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var c=[];c.push(new Promise(function(f){u.once("load",f)})),c=c.concat(tVe.fetchTraceGeoData(e)),Promise.all(c).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=nVe(o.style,t);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(tVe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Ah.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&BHt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&ZF.click(n,l.originalEvent)}}};Ah.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=JK.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),zHt(a)||DHt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){FHt(l,u,c,t.dragOptions,a)},RHt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Ah.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Ah.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var QK=Mr(),UHt=C_(),VHt=Zd(),sVe=Rk();lVe.exports=function(t,r,n){UHt(t,r,n,{type:"mapbox",attributes:sVe,handleDefaults:HHt,partition:"y",accessToken:r._mapboxAccessToken})};function HHt(e,t,r,n){r("accesstoken",n.accessToken),r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var i=r("bounds.west"),a=r("bounds.east"),o=r("bounds.south"),s=r("bounds.north");(i===void 0||a===void 0||o===void 0||s===void 0)&&delete t.bounds,VHt(e,t,{name:"layers",handleItemDefaults:GHt}),t._input=e}function GHt(e,t){function r(l,u){return QK.coerce(e,t,sVe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",QK.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),QK.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var XF=ye(Np=>{"use strict";var cVe=YK(),tm=Mr(),eJ=tm.strTranslate,jHt=tm.strScale,WHt=kd().getSubplotCalcData,ZHt=Zp(),XHt=xa(),fVe=ao(),YHt=Pl(),KHt=oVe(),xx="mapbox",Qm=Np.constants=c1();Np.name=xx;Np.attr="subplot";Np.idRoot=xx;Np.idRegex=Np.attrRegex=tm.counterRegex(xx);var JHt=["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/"].join(" ");Np.attributes={subplot:{valType:"subplotid",dflt:"mapbox",editType:"calc"}};Np.layoutAttributes=Rk();Np.supplyLayoutDefaults=uVe();var hVe=!0;Np.plot=function(t){hVe&&(hVe=!1,tm.warn(JHt));var r=t._fullLayout,n=t.calcdata,i=r._subplots[xx];if(cVe.version!==Qm.requiredVersion)throw new Error(Qm.wrongVersionErrorMsg);var a=$Ht(t,i);cVe.accessToken=a;for(var o=0;op/2){var E=d.split("|").join("
");x.text(E).attr("data-unformatted",E).call(YHt.convertToTspans,e),b=fVe.bBox(x.node())}x.attr("transform",eJ(-3,-b.height+8)),v.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var k=1;b.width+6>p&&(k=p/(b.width+6));var A=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];v.attr("transform",eJ(A[0],A[1])+jHt(k))}};function $Ht(e,t){var r=e._fullLayout,n=e._context;if(n.mapboxAccessToken==="")return"";for(var i=[],a=[],o=!1,s=!1,l=0;l1&&tm.warn(Qm.multipleTokensErrorMsg),i[0]):(a.length&&tm.log(["Listed mapbox access token(s)",a.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}function dVe(e){return typeof e=="string"&&(Qm.styleValuesMapbox.indexOf(e)!==-1||e.indexOf("mapbox://")===0||e.indexOf("stamen")===0)}Np.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[xx],n=0;n{"use strict";var Hyr=["*scattermapbox* trace is deprecated!","Please consider switching to the *scattermap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");vVe.exports={attributes:NF(),supplyDefaults:MUe(),colorbar:Kd(),formatLabels:VK(),calc:lz(),plot:NUe(),hoverPoints:jF().hoverPoints,eventData:GUe(),selectPoints:WUe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermapbox",basePlotModule:XF(),categories:["mapbox","gl","symbols","showLegend","scatter-like"],meta:{}}});var mVe=ye((jyr,gVe)=>{"use strict";gVe.exports=pVe()});var tJ=ye((Wyr,yVe)=>{"use strict";var f1=K5(),QHt=Jl(),eGt=Wo().hovertemplateAttrs,tGt=vl(),bx=no().extendFlat;yVe.exports=bx({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:bx({},f1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:f1.text,hovertext:f1.hovertext,marker:{line:{color:bx({},f1.marker.line.color,{editType:"plot"}),width:bx({},f1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:bx({},f1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:bx({},f1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:bx({},f1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:f1.hoverinfo,hovertemplate:eGt({},{keys:["properties"]}),showlegend:bx({},tGt.showlegend,{dflt:!1})},QHt("",{cLetter:"z",editTypeOverride:"calc"}))});var xVe=ye((Zyr,_Ve)=>{"use strict";var qk=Mr(),rGt=Uh(),iGt=tJ();_Ve.exports=function(t,r,n,i){function a(c,f){return qk.coerce(t,r,iGt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!qk.isArrayOrTypedArray(o)||!o.length||!qk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||qk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),rGt(t,r,i,a,{prefix:"",cLetter:"z"}),qk.coerceSelectionMarkerOpacity(r,a)}});var rJ=ye((Xyr,TVe)=>{"use strict";var nGt=uo(),h1=Mr(),aGt=Mu(),oGt=ao(),sGt=rx().makeBlank,bVe=nx();function lGt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:sGt()};if(!r)return a;var o=bVe.extractTraceFeature(e);if(!o)return a;var s=aGt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;h1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return nGt(k)?+h1.constrain(k,0,1):0});var f;h1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;h1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var SVe=rJ().convert,uGt=rJ().convertOnSelect,AVe=c1().traceLayerPrefix;function MVe(e,t){this.type="choroplethmapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",AVe+t+"-fill"],["line",AVe+t+"-line"]],this.below=null}var wA=MVe.prototype;wA.update=function(e){this._update(SVe(e)),e[0].trace._glTrace=this};wA.updateOnSelect=function(e){this._update(uGt(e))};wA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};wA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};EVe.exports=function(t,r){var n=r[0].trace,i=new MVe(t,n.uid),a=i.sourceId,o=SVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var LVe=ye((Jyr,CVe)=>{"use strict";var Kyr=["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");CVe.exports={attributes:tJ(),supplyDefaults:xVe(),colorbar:M_(),calc:Lz(),plot:kVe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";PVe.exports=LVe()});var nJ=ye((Qyr,DVe)=>{"use strict";var cGt=Jl(),fGt=Wo().hovertemplateAttrs,RVe=vl(),YF=NF(),iJ=no().extendFlat;DVe.exports=iJ({lon:YF.lon,lat:YF.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:YF.text,hovertext:YF.hovertext,hoverinfo:iJ({},RVe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:fGt(),showlegend:iJ({},RVe.showlegend,{dflt:!1})},cGt("",{cLetter:"z",editTypeOverride:"calc"}))});var FVe=ye((e1r,zVe)=>{"use strict";var hGt=Mr(),dGt=Uh(),vGt=nJ();zVe.exports=function(t,r,n,i){function a(u,c){return hGt.coerce(t,r,vGt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),dGt(t,r,i,a,{prefix:"",cLetter:"z"})}});var BVe=ye((t1r,OVe)=>{"use strict";var aJ=uo(),pGt=Mr().isArrayOrTypedArray,oJ=es().BADNUM,gGt=zv(),qVe=Mr()._;OVe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=pGt(a)&&a.length,s=0;s{"use strict";var mGt=uo(),sJ=Mr(),NVe=va(),UVe=Mu(),VVe=es().BADNUM,yGt=rx().makeBlank;HVe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:yGt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=sJ.isArrayOrTypedArray(l)&&l.length,f=sJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=UVe.extractOpts(r),p=b.reversescale?UVe.flipScale(b.colorscale):b.colorscale,E=p[0][1],k=NVe.opacity(E)<1?E:NVe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var jVe=GVe(),_Gt=c1().traceLayerPrefix;function WVe(e,t){this.type="densitymapbox",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",_Gt+t+"-heatmap"]],this.below=null}var KF=WVe.prototype;KF.update=function(e){var t=this.subplot,r=this.layerList,n=jVe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};KF.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};ZVe.exports=function(t,r){var n=r[0].trace,i=new WVe(t,n.uid),a=i.sourceId,o=jVe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var KVe=ye((n1r,YVe)=>{"use strict";var xGt=Qa(),bGt=jF().hoverPoints,wGt=jF().getExtraText;YVe.exports=function(t,r,n){var i=bGt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=xGt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=wGt(s,l,o[0].t.labels),[a]}}});var $Ve=ye((a1r,JVe)=>{"use strict";JVe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var eHe=ye((s1r,QVe)=>{"use strict";var o1r=["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");QVe.exports={attributes:nJ(),supplyDefaults:FVe(),colorbar:M_(),formatLabels:VK(),calc:BVe(),plot:XVe(),hoverPoints:KVe(),eventData:$Ve(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";tHe.exports=eHe()});var nHe=ye((u1r,iHe)=>{iHe.exports={version:8,name:"orto",metadata:{"maputnik:renderer":"mlgljs"},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","taxiway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"aeroway-runway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","runway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-ocean",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["==","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-other",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["!in","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":{stops:[[0,10],[6,14]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2,visibility:"visible"},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"poi-level-3",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["==","$type","Point"],[">=","rank",25]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-2",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:14,filter:["all",["==","$type","Point"],["<=","rank",14],["has","name"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":11,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"rgba(191, 228, 172, 1)","text-halo-width":1,"text-halo-color":"rgba(30, 29, 29, 1)"}},{id:"poi-railway",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:13,filter:["all",["==","$type","Point"],["has","name"],["==","class","railway"],["==","subclass","station"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9,"icon-optional":!1,"icon-ignore-placement":!1,"icon-allow-overlap":!1,"text-ignore-placement":!1,"text-allow-overlap":!1,"text-optional":!0},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"road_oneway",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"road_oneway_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",-1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":-90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==","class","path"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-color":"#f8f4f0","text-color":"hsl(30, 23%, 62%)","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["==","$type","LineString"],["in","class","minor","service","track"]],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["in","class","primary","secondary","tertiary","trunk"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-shield",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["!in","network","us-interstate","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"road_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-opacity":1,"text-color":"rgba(20, 19, 19, 1)","text-halo-color":"rgba(230, 221, 221, 0)","text-halo-width":2,"icon-color":"rgba(183, 18, 18, 1)","icon-opacity":.3,"icon-halo-color":"rgba(183, 55, 55, 0)"}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-interstate"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[7,"point"],[7,"line"],[8,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"highway-shield-us-other",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"place-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:12,filter:["!in","class","city","town","village","country","continent"],layout:{"text-letter-spacing":.1,"text-size":{base:1.2,stops:[[12,10],[15,14]]},"text-font":["Noto Sans Bold"],"text-field":`{name:latin} +{name:nonlatin}`,"text-transform":"uppercase","text-max-width":9,visibility:"visible"},paint:{"text-color":"rgba(255,255,255,1)","text-halo-width":1.2,"text-halo-color":"rgba(57, 28, 28, 1)"}},{id:"place-village",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:10,filter:["==","class","village"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,12],[15,16]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{id:"place-town",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["==","class","town"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,14],[15,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{id:"place-city",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["!=","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-city-capital",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}});var oHe=ye((c1r,aHe)=>{aHe.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}});var wx=ye((f1r,fHe)=>{"use strict";var TGt=Y1(),AGt=nHe(),SGt=oHe(),MGt='\xA9 OpenStreetMap contributors',sHe="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",lHe="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",JF="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",EGt="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",kGt="https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json",CGt="https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json",cHe={basic:JF,streets:JF,outdoors:JF,light:sHe,dark:lHe,satellite:SGt,"satellite-streets":AGt,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:MGt,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}],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}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":sHe,"carto-darkmatter":lHe,"carto-voyager":JF,"carto-positron-nolabels":EGt,"carto-darkmatter-nolabels":kGt,"carto-voyager-nolabels":CGt},uHe=TGt(cHe);fHe.exports={styleValueDflt:"basic",stylesMap:cHe,styleValuesMap:uHe,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",uHe.join(", "),"or use a tile service."].join(` +`),mapOnErrorMsg:"Map error."}});var Ok=ye((h1r,gHe)=>{"use strict";var hHe=Mr(),dHe=va().defaultLine,LGt=Ju().attributes,PGt=Su(),IGt=Uc().textposition,RGt=Bu().overrideAll,DGt=Vs().templatedArray,vHe=wx(),pHe=PGt({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});pHe.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var zGt=gHe.exports=RGt({_arrayAttrRegexps:[hHe.counterRegex("map",".layers",!0)],domain:LGt({name:"map"}),style:{valType:"any",values:vHe.styleValuesMap,dflt:vHe.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:DGt("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:dHe},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:dHe}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:pHe,textposition:hHe.extendFlat({},IGt,{arrayOk:!1})}})},"plot","from-root");zGt.uirevision={valType:"any",editType:"none"}});var $F=ye((d1r,_He)=>{"use strict";var FGt=Wo().hovertemplateAttrs,qGt=Wo().texttemplateAttrs,OGt=Eg(),Bk=H2(),TA=Uc(),mHe=Ok(),BGt=vl(),NGt=Jl(),rw=no().extendFlat,UGt=Bu().overrideAll,VGt=Ok(),yHe=Bk.line,AA=Bk.marker;_He.exports=UGt({lon:Bk.lon,lat:Bk.lat,cluster:{enabled:{valType:"boolean"},maxzoom:rw({},VGt.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:rw({},AA.opacity,{dflt:1})},mode:rw({},TA.mode,{dflt:"markers"}),text:rw({},TA.text,{}),texttemplate:qGt({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:rw({},TA.hovertext,{}),line:{color:yHe.color,width:yHe.width},connectgaps:TA.connectgaps,marker:rw({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:AA.opacity,size:AA.size,sizeref:AA.sizeref,sizemin:AA.sizemin,sizemode:AA.sizemode},NGt("marker")),fill:Bk.fill,fillcolor:OGt(),textfont:mHe.layers.symbol.textfont,textposition:mHe.layers.symbol.textposition,below:{valType:"string"},selected:{marker:TA.selected.marker},unselected:{marker:TA.unselected.marker},hoverinfo:rw({},BGt.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:FGt()},"calc","nested")});var lJ=ye((v1r,xHe)=>{"use strict";var HGt=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];xHe.exports={isSupportedFont:function(e){return HGt.indexOf(e)!==-1}}});var THe=ye((p1r,wHe)=>{"use strict";var Nk=Mr(),uJ=lu(),GGt=$p(),jGt=R0(),WGt=D0(),ZGt=Ig(),bHe=$F(),XGt=lJ().isSupportedFont;wHe.exports=function(t,r,n,i){function a(p,E){return Nk.coerce(t,r,bHe,p,E)}function o(p,E){return Nk.coerce2(t,r,bHe,p,E)}var s=YGt(t,r,a);if(!s){r.visible=!1;return}if(a("text"),a("texttemplate"),a("hovertext"),a("hovertemplate"),a("mode"),a("below"),uJ.hasMarkers(r)){GGt(t,r,n,i,a,{noLine:!0,noAngle:!0}),a("marker.allowoverlap"),a("marker.angle");var l=r.marker;l.symbol!=="circle"&&(Nk.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),Nk.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}uJ.hasLines(r)&&(jGt(t,r,n,i,a,{noDash:!0}),a("connectgaps"));var u=o("cluster.maxzoom"),c=o("cluster.step"),f=o("cluster.color",r.marker&&r.marker.color||n),h=o("cluster.size"),d=o("cluster.opacity"),v=u!==!1||c!==!1||f!==!1||h!==!1||d!==!1,x=a("cluster.enabled",v);if(x||uJ.hasText(r)){var b=i.font.family;WGt(t,r,i,a,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:XGt(b)?b:"Open Sans Regular",weight:i.font.weight,style:i.font.style,size:i.font.size,color:i.font.color}})}a("fill"),r.fill!=="none"&&ZGt(t,r,n,a),Nk.coerceSelectionMarkerOpacity(r,a)};function YGt(e,t,r){var n=r("lon")||[],i=r("lat")||[],a=Math.min(n.length,i.length);return t._length=a,a}});var cJ=ye((g1r,SHe)=>{"use strict";var AHe=Qa();SHe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o=a.mockAxis,s=t.lonlat;return i.lonLabel=AHe.tickText(o,o.c2l(s[0]),!0).text,i.latLabel=AHe.tickText(o,o.c2l(s[1]),!0).text,i}});var fJ=ye((m1r,EHe)=>{"use strict";var MHe=Mr();EHe.exports=function(t,r){var n=t.split(" "),i=n[0],a=n[1],o=MHe.isArrayOrTypedArray(r)?MHe.mean(r):r,s=.5+o/100,l=1.5+o/100,u=["",""],c=[0,0];switch(i){case"top":u[0]="top",c[1]=-l;break;case"bottom":u[0]="bottom",c[1]=l;break}switch(a){case"left":u[1]="right",c[0]=-s;break;case"right":u[1]="left",c[0]=s;break}var f;return u[0]&&u[1]?f=u.join("-"):u[0]?f=u[0]:u[1]?f=u[1]:f="center",{anchor:f,offset:c}}});var RHe=ye((y1r,IHe)=>{"use strict";var LHe=uo(),nv=Mr(),KGt=es().BADNUM,e7=rx(),kHe=Mu(),JGt=ao(),$Gt=S3(),t7=lu(),QGt=lJ().isSupportedFont,ejt=fJ(),tjt=rp().appendArrayPointValue,rjt=Pl().NEWLINES,ijt=Pl().BR_TAG_ALL;IHe.exports=function(t,r){var n=r[0].trace,i=n.visible===!0&&n._length!==0,a=n.fill!=="none",o=t7.hasLines(n),s=t7.hasMarkers(n),l=t7.hasText(n),u=s&&n.marker.symbol==="circle",c=s&&n.marker.symbol!=="circle",f=n.cluster&&n.cluster.enabled,h=QF("fill"),d=QF("line"),v=QF("circle"),x=QF("symbol"),b={fill:h,line:d,circle:v,symbol:x};if(!i)return b;var p;if((a||o)&&(p=e7.calcTraceToLineCoords(r)),a&&(h.geojson=e7.makePolygon(p),h.layout.visibility="visible",nv.extendFlat(h.paint,{"fill-color":n.fillcolor})),o&&(d.geojson=e7.makeLine(p),d.layout.visibility="visible",nv.extendFlat(d.paint,{"line-width":n.line.width,"line-color":n.line.color,"line-opacity":n.opacity})),u){var E=njt(r);v.geojson=E.geojson,v.layout.visibility="visible",f&&(v.filter=["!",["has","point_count"]],b.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":dJ(n.cluster.color,n.cluster.step),"circle-radius":dJ(n.cluster.size,n.cluster.step),"circle-opacity":dJ(n.cluster.opacity,n.cluster.step)}},b.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":CHe(n),"text-size":12}}),nv.extendFlat(v.paint,{"circle-color":E.mcc,"circle-radius":E.mrc,"circle-opacity":E.mo})}if(u&&f&&(v.filter=["!",["has","point_count"]]),(c||l)&&(x.geojson=ajt(r,t),nv.extendFlat(x.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),c&&(nv.extendFlat(x.layout,{"icon-size":n.marker.size/10}),"angle"in n.marker&&n.marker.angle!=="auto"&&nv.extendFlat(x.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),x.layout["icon-allow-overlap"]=n.marker.allowoverlap,nv.extendFlat(x.paint,{"icon-opacity":n.opacity*n.marker.opacity,"icon-color":n.marker.color})),l)){var k=(n.marker||{}).size,A=ejt(n.textposition,k);nv.extendFlat(x.layout,{"text-size":n.textfont.size,"text-anchor":A.anchor,"text-offset":A.offset,"text-font":CHe(n)}),nv.extendFlat(x.paint,{"text-color":n.textfont.color,"text-opacity":n.opacity})}return b};function QF(e){return{type:e,geojson:e7.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function njt(e){var t=e[0].trace,r=t.marker,n=t.selectedpoints,i=nv.isArrayOrTypedArray(r.color),a=nv.isArrayOrTypedArray(r.size),o=nv.isArrayOrTypedArray(r.opacity),s;function l(k){return t.opacity*k}function u(k){return k/2}var c;i&&(kHe.hasColorscale(t,"marker")?c=kHe.makeColorScaleFuncFromTrace(r):c=nv.identity);var f;a&&(f=$Gt(t));var h;o&&(h=function(k){var A=LHe(k)?+nv.constrain(k,0,1):0;return l(A)});var d=[];for(s=0;s850?s+=" Black":i>750?s+=" Extra Bold":i>650?s+=" Bold":i>550?s+=" Semi Bold":i>450?s+=" Medium":i>350?s+=" Regular":i>250?s+=" Light":i>150?s+=" Extra Light":s+=" Thin"):a.slice(0,2).join(" ")==="Open Sans"?(s="Open Sans",i>750?s+=" Extrabold":i>650?s+=" Bold":i>550?s+=" Semibold":i>350?s+=" Regular":s+=" Light"):a.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(s="Klokantech Noto Sans",a[3]==="CJK"&&(s+=" CJK"),s+=i>500?" Bold":" Regular")),o&&(s+=" Italic"),s==="Open Sans Regular Italic"?s="Open Sans Italic":s==="Open Sans Regular Bold"?s="Open Sans Bold":s==="Open Sans Regular Bold Italic"?s="Open Sans Bold Italic":s==="Klokantech Noto Sans Regular Italic"&&(s="Klokantech Noto Sans Italic"),QGt(s)||(s=r);var l=s.split(", ");return l}});var qHe=ye((_1r,FHe)=>{"use strict";var ojt=Mr(),DHe=RHe(),SA=wx().traceLayerPrefix,ng={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function zHe(e,t,r,n){this.type="scattermap",this.subplot=e,this.uid=t,this.clusterEnabled=r,this.isHidden=n,this.sourceIds={fill:"source-"+t+"-fill",line:"source-"+t+"-line",circle:"source-"+t+"-circle",symbol:"source-"+t+"-symbol",cluster:"source-"+t+"-circle",clusterCount:"source-"+t+"-circle"},this.layerIds={fill:SA+t+"-fill",line:SA+t+"-line",circle:SA+t+"-circle",symbol:SA+t+"-symbol",cluster:SA+t+"-cluster",clusterCount:SA+t+"-cluster-count"},this.below=null}var Uk=zHe.prototype;Uk.addSource=function(e,t,r){var n={type:"geojson",data:t.geojson};r&&r.enabled&&ojt.extendFlat(n,{cluster:!0,clusterMaxZoom:r.maxzoom});var i=this.subplot.map.getSource(this.sourceIds[e]);i?i.setData(t.geojson):this.subplot.map.addSource(this.sourceIds[e],n)};Uk.setSourceData=function(e,t){this.subplot.map.getSource(this.sourceIds[e]).setData(t.geojson)};Uk.addLayer=function(e,t,r){var n={type:t.type,id:this.layerIds[e],source:this.sourceIds[e],layout:t.layout,paint:t.paint};t.filter&&(n.filter=t.filter);for(var i=this.layerIds[e],a,o=this.subplot.getMapLayers(),s=0;s=0;L--){var _=A[L];i.removeLayer(u.layerIds[_])}k||i.removeSource(u.sourceIds.circle)}function h(k){for(var A=ng.nonCluster,L=0;L=0;L--){var _=A[L];i.removeLayer(u.layerIds[_]),k||i.removeSource(u.sourceIds[_])}}function v(k){l?f(k):d(k)}function x(k){s?c(k):h(k)}function b(){for(var k=s?ng.cluster:ng.nonCluster,A=0;A=0;n--){var i=r[n];t.removeLayer(this.layerIds[i]),t.removeSource(this.sourceIds[i])}};FHe.exports=function(t,r){var n=r[0].trace,i=n.cluster&&n.cluster.enabled,a=n.visible!==!0,o=new zHe(t,n.uid,i,a),s=DHe(t.gd,r),l=o.below=t.belowLookup["trace-"+n.uid],u,c,f;if(i)for(o.addSource("circle",s.circle,n.cluster),u=0;u{"use strict";var sjt=Nc(),vJ=Mr(),ljt=oT(),ujt=vJ.fillText,cjt=es().BADNUM,fjt=wx().traceLayerPrefix;function hjt(e,t,r){var n=e.cd,i=n[0].trace,a=e.xa,o=e.ya,s=e.subplot,l=[],u=fjt+i.uid+"-circle",c=i.cluster&&i.cluster.enabled;if(c){var f=s.map.queryRenderedFeatures(null,{layers:[u]});l=f.map(function(M){return M.id})}var h=t>=0?Math.floor((t+180)/360):Math.ceil((t-180)/360),d=h*360,v=t-d;function x(M){var g=M.lonlat;if(g[0]===cjt||c&&l.indexOf(M.i+1)===-1)return 1/0;var P=vJ.modHalf(g[0],360),T=g[1],F=s.project([P,T]),q=F.x-a.c2p([v,T]),V=F.y-o.c2p([P,r]),H=Math.max(3,M.mrc||0);return Math.max(Math.sqrt(q*q+V*V)-H,1-3/H)}if(sjt.getClosest(n,x,e),e.index!==!1){var b=n[e.index],p=b.lonlat,E=[vJ.modHalf(p[0],360)+d,p[1]],k=a.c2p(E),A=o.c2p(E),L=b.mrc||1;e.x0=k-L,e.x1=k+L,e.y0=A-L,e.y1=A+L;var _={};_[i.subplot]={_subplot:s};var C=i._module.formatLabels(b,i,_);return e.lonLabel=C.lonLabel,e.latLabel=C.latLabel,e.color=ljt(i,b),e.extraText=OHe(i,b,n[0].t.labels),e.hovertemplate=i.hovertemplate,[e]}}function OHe(e,t,r){if(e.hovertemplate)return;var n=t.hi||e.hoverinfo,i=n.split("+"),a=i.indexOf("all")!==-1,o=i.indexOf("lon")!==-1,s=i.indexOf("lat")!==-1,l=t.lonlat,u=[];function c(f){return f+"\xB0"}return a||o&&s?u.push("("+c(l[1])+", "+c(l[0])+")"):o?u.push(r.lon+c(l[0])):s&&u.push(r.lat+c(l[1])),(a||i.indexOf("text")!==-1)&&ujt(t,e,u),u.join("
")}BHe.exports={hoverPoints:hjt,getExtraText:OHe}});var UHe=ye((b1r,NHe)=>{"use strict";NHe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t}});var HHe=ye((w1r,VHe)=>{"use strict";var djt=Mr(),vjt=lu(),pjt=es().BADNUM;VHe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s=n[0].trace,l;if(!vjt.hasMarkers(s))return[];if(r===!1)for(l=0;l{(function(e,t){typeof pJ=="object"&&typeof gJ!="undefined"?gJ.exports=t():(e=typeof globalThis!="undefined"?globalThis:e||self,e.maplibregl=t())})(pJ,function(){"use strict";var e={},t={};function r(i,a,o){if(t[i]=o,i==="index"){var s="var sharedModule = {}; ("+t.shared+")(sharedModule); ("+t.worker+")(sharedModule);",l={};return t.shared(l),t.index(e,l),typeof window!="undefined"&&e.setWorkerUrl(window.URL.createObjectURL(new Blob([s],{type:"text/javascript"}))),e}}r("shared",["exports"],function(i){"use strict";function a(R,S,D,j){return new(D||(D=Promise))(function(te,ue){function ve(at){try{Ze(j.next(at))}catch(Tt){ue(Tt)}}function De(at){try{Ze(j.throw(at))}catch(Tt){ue(Tt)}}function Ze(at){var Tt;at.done?te(at.value):(Tt=at.value,Tt instanceof D?Tt:new D(function(Ft){Ft(Tt)})).then(ve,De)}Ze((j=j.apply(R,S||[])).next())})}function o(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}typeof SuppressedError=="function"&&SuppressedError;var s=l;function l(R,S){this.x=R,this.y=S}l.prototype={clone:function(){return new l(this.x,this.y)},add:function(R){return this.clone()._add(R)},sub:function(R){return this.clone()._sub(R)},multByPoint:function(R){return this.clone()._multByPoint(R)},divByPoint:function(R){return this.clone()._divByPoint(R)},mult:function(R){return this.clone()._mult(R)},div:function(R){return this.clone()._div(R)},rotate:function(R){return this.clone()._rotate(R)},rotateAround:function(R,S){return this.clone()._rotateAround(R,S)},matMult:function(R){return this.clone()._matMult(R)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(R){return this.x===R.x&&this.y===R.y},dist:function(R){return Math.sqrt(this.distSqr(R))},distSqr:function(R){var S=R.x-this.x,D=R.y-this.y;return S*S+D*D},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(R){return Math.atan2(this.y-R.y,this.x-R.x)},angleWith:function(R){return this.angleWithSep(R.x,R.y)},angleWithSep:function(R,S){return Math.atan2(this.x*S-this.y*R,this.x*R+this.y*S)},_matMult:function(R){var S=R[2]*this.x+R[3]*this.y;return this.x=R[0]*this.x+R[1]*this.y,this.y=S,this},_add:function(R){return this.x+=R.x,this.y+=R.y,this},_sub:function(R){return this.x-=R.x,this.y-=R.y,this},_mult:function(R){return this.x*=R,this.y*=R,this},_div:function(R){return this.x/=R,this.y/=R,this},_multByPoint:function(R){return this.x*=R.x,this.y*=R.y,this},_divByPoint:function(R){return this.x/=R.x,this.y/=R.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var R=this.y;return this.y=this.x,this.x=-R,this},_rotate:function(R){var S=Math.cos(R),D=Math.sin(R),j=D*this.x+S*this.y;return this.x=S*this.x-D*this.y,this.y=j,this},_rotateAround:function(R,S){var D=Math.cos(R),j=Math.sin(R),te=S.y+j*(this.x-S.x)+D*(this.y-S.y);return this.x=S.x+D*(this.x-S.x)-j*(this.y-S.y),this.y=te,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},l.convert=function(R){return R instanceof l?R:Array.isArray(R)?new l(R[0],R[1]):R};var u=o(s),c=f;function f(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}f.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var h=o(c);let d,v;function x(){return d==null&&(d=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),d}function b(){if(v==null&&(v=!1,x())){let S=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(S){for(let j=0;j<5*5;j++){let te=4*j;S.fillStyle=`rgb(${te},${te+1},${te+2})`,S.fillRect(j%5,Math.floor(j/5),1,1)}let D=S.getImageData(0,0,5,5).data;for(let j=0;j<5*5*4;j++)if(j%4!=3&&D[j]!==j){v=!0;break}}}return v||!1}function p(R,S,D,j){let te=new h(R,S,D,j);return ue=>te.solve(ue)}let E=p(.25,.1,.25,1);function k(R,S,D){return Math.min(D,Math.max(S,R))}function A(R,S,D){let j=D-S,te=((R-S)%j+j)%j+S;return te===S?D:te}function L(R,...S){for(let D of S)for(let j in D)R[j]=D[j];return R}let _=1;function C(R,S,D){let j={};for(let te in R)j[te]=S.call(this,R[te],te,R);return j}function M(R,S,D){let j={};for(let te in R)S.call(this,R[te],te,R)&&(j[te]=R[te]);return j}function g(R){return Array.isArray(R)?R.map(g):typeof R=="object"&&R?C(R,g):R}let P={};function T(R){P[R]||(typeof console!="undefined"&&console.warn(R),P[R]=!0)}function F(R,S,D){return(D.y-R.y)*(S.x-R.x)>(S.y-R.y)*(D.x-R.x)}function q(R){return typeof WorkerGlobalScope!="undefined"&&R!==void 0&&R instanceof WorkerGlobalScope}let V=null;function H(R){return typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap}let X="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function G(R,S,D,j,te){return a(this,void 0,void 0,function*(){if(typeof VideoFrame=="undefined")throw new Error("VideoFrame not supported");let ue=new VideoFrame(R,{timestamp:0});try{let ve=ue==null?void 0:ue.format;if(!ve||!ve.startsWith("BGR")&&!ve.startsWith("RGB"))throw new Error(`Unrecognized format ${ve}`);let De=ve.startsWith("BGR"),Ze=new Uint8ClampedArray(j*te*4);if(yield ue.copyTo(Ze,function(at,Tt,Ft,Qt,sr){let Tr=4*Math.max(-Tt,0),Pr=(Math.max(0,Ft)-Ft)*Qt*4+Tr,$r=4*Qt,ni=Math.max(0,Tt),Di=Math.max(0,Ft);return{rect:{x:ni,y:Di,width:Math.min(at.width,Tt+Qt)-ni,height:Math.min(at.height,Ft+sr)-Di},layout:[{offset:Pr,stride:$r}]}}(R,S,D,j,te)),De)for(let at=0;atq(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,Te=function(R,S){if(/:\/\//.test(R.url)&&!/^https?:|^file:/.test(R.url)){let j=Me(R.url);if(j)return j(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,targetMapId:ke},S)}if(!(/^file:/.test(D=R.url)||/^file:/.test(ie())&&!/^\w+:/.test(D))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(j,te){return a(this,void 0,void 0,function*(){let ue=new Request(j.url,{method:j.method||"GET",body:j.body,credentials:j.credentials,headers:j.headers,cache:j.cache,referrer:ie(),signal:te.signal});j.type!=="json"||ue.headers.has("Accept")||ue.headers.set("Accept","application/json");let ve=yield fetch(ue);if(!ve.ok){let at=yield ve.blob();throw new ge(ve.status,ve.statusText,j.url,at)}let De;De=j.type==="arrayBuffer"||j.type==="image"?ve.arrayBuffer():j.type==="json"?ve.json():ve.text();let Ze=yield De;if(te.signal.aborted)throw ae();return{data:Ze,cacheControl:ve.headers.get("Cache-Control"),expires:ve.headers.get("Expires")}})}(R,S);if(q(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:R,mustQueue:!0,targetMapId:ke},S)}var D;return function(j,te){return new Promise((ue,ve)=>{var De;let Ze=new XMLHttpRequest;Ze.open(j.method||"GET",j.url,!0),j.type!=="arrayBuffer"&&j.type!=="image"||(Ze.responseType="arraybuffer");for(let at in j.headers)Ze.setRequestHeader(at,j.headers[at]);j.type==="json"&&(Ze.responseType="text",!((De=j.headers)===null||De===void 0)&&De.Accept||Ze.setRequestHeader("Accept","application/json")),Ze.withCredentials=j.credentials==="include",Ze.onerror=()=>{ve(new Error(Ze.statusText))},Ze.onload=()=>{if(!te.signal.aborted)if((Ze.status>=200&&Ze.status<300||Ze.status===0)&&Ze.response!==null){let at=Ze.response;if(j.type==="json")try{at=JSON.parse(Ze.response)}catch(Tt){return void ve(Tt)}ue({data:at,cacheControl:Ze.getResponseHeader("Cache-Control"),expires:Ze.getResponseHeader("Expires")})}else{let at=new Blob([Ze.response],{type:Ze.getResponseHeader("Content-Type")});ve(new ge(Ze.status,Ze.statusText,j.url,at))}},te.signal.addEventListener("abort",()=>{Ze.abort(),ve(ae())}),Ze.send(j.body)})}(R,S)};function Ee(R){if(!R||R.indexOf("://")<=0||R.indexOf("data:image/")===0||R.indexOf("blob:")===0)return!0;let S=new URL(R),D=window.location;return S.protocol===D.protocol&&S.host===D.host}function Ae(R,S,D){D[R]&&D[R].indexOf(S)!==-1||(D[R]=D[R]||[],D[R].push(S))}function ze(R,S,D){if(D&&D[R]){let j=D[R].indexOf(S);j!==-1&&D[R].splice(j,1)}}class Ce{constructor(S,D={}){L(this,D),this.type=S}}class me extends Ce{constructor(S,D={}){super("error",L({error:S},D))}}class Re{on(S,D){return this._listeners=this._listeners||{},Ae(S,D,this._listeners),this}off(S,D){return ze(S,D,this._listeners),ze(S,D,this._oneTimeListeners),this}once(S,D){return D?(this._oneTimeListeners=this._oneTimeListeners||{},Ae(S,D,this._oneTimeListeners),this):new Promise(j=>this.once(S,j))}fire(S,D){typeof S=="string"&&(S=new Ce(S,D||{}));let j=S.type;if(this.listens(j)){S.target=this;let te=this._listeners&&this._listeners[j]?this._listeners[j].slice():[];for(let De of te)De.call(this,S);let ue=this._oneTimeListeners&&this._oneTimeListeners[j]?this._oneTimeListeners[j].slice():[];for(let De of ue)ze(j,De,this._oneTimeListeners),De.call(this,S);let ve=this._eventedParent;ve&&(L(S,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),ve.fire(S))}else S instanceof me&&console.error(S.error);return this}listens(S){return this._listeners&&this._listeners[S]&&this._listeners[S].length>0||this._oneTimeListeners&&this._oneTimeListeners[S]&&this._oneTimeListeners[S].length>0||this._eventedParent&&this._eventedParent.listens(S)}setEventedParent(S,D){return this._eventedParent=S,this._eventedParentData=D,this}}var ce={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let Ge=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function nt(R,S){let D={};for(let j in R)j!=="ref"&&(D[j]=R[j]);return Ge.forEach(j=>{j in S&&(D[j]=S[j])}),D}function ct(R,S){if(Array.isArray(R)){if(!Array.isArray(S)||R.length!==S.length)return!1;for(let D=0;D`:R.itemType.kind==="value"?"array":`array<${S}>`}return R.kind}let Ve=[Lt,St,Et,dt,Ht,Br,$t,Ne(fr),Or,Nr,ut];function Xe(R,S){if(S.kind==="error")return null;if(R.kind==="array"){if(S.kind==="array"&&(S.N===0&&S.itemType.kind==="value"||!Xe(R.itemType,S.itemType))&&(typeof R.N!="number"||R.N===S.N))return null}else{if(R.kind===S.kind)return null;if(R.kind==="value"){for(let D of Ve)if(!Xe(D,S))return null}}return`Expected ${Ye(R)} but found ${Ye(S)} instead.`}function ht(R,S){return S.some(D=>D.kind===R.kind)}function Le(R,S){return S.some(D=>D==="null"?R===null:D==="array"?Array.isArray(R):D==="object"?R&&!Array.isArray(R)&&typeof R=="object":D===typeof R)}function xe(R,S){return R.kind==="array"&&S.kind==="array"?R.itemType.kind===S.itemType.kind&&typeof R.N=="number":R.kind===S.kind}let Se=.96422,lt=.82521,Gt=4/29,Vt=6/29,ar=3*Vt*Vt,Qr=Vt*Vt*Vt,ai=Math.PI/180,jr=180/Math.PI;function ri(R){return(R%=360)<0&&(R+=360),R}function bi([R,S,D,j]){let te,ue,ve=Wi((.2225045*(R=nn(R))+.7168786*(S=nn(S))+.0606169*(D=nn(D)))/1);R===S&&S===D?te=ue=ve:(te=Wi((.4360747*R+.3850649*S+.1430804*D)/Se),ue=Wi((.0139322*R+.0971045*S+.7141733*D)/lt));let De=116*ve-16;return[De<0?0:De,500*(te-ve),200*(ve-ue),j]}function nn(R){return R<=.04045?R/12.92:Math.pow((R+.055)/1.055,2.4)}function Wi(R){return R>Qr?Math.pow(R,1/3):R/ar+Gt}function Ni([R,S,D,j]){let te=(R+16)/116,ue=isNaN(S)?te:te+S/500,ve=isNaN(D)?te:te-D/200;return te=1*$i(te),ue=Se*$i(ue),ve=lt*$i(ve),[_n(3.1338561*ue-1.6168667*te-.4906146*ve),_n(-.9787684*ue+1.9161415*te+.033454*ve),_n(.0719453*ue-.2289914*te+1.4052427*ve),j]}function _n(R){return(R=R<=.00304?12.92*R:1.055*Math.pow(R,1/2.4)-.055)<0?0:R>1?1:R}function $i(R){return R>Vt?R*R*R:ar*(R-Gt)}function zn(R){return parseInt(R.padEnd(2,R),16)/255}function Wn(R,S){return It(S?R/100:R,0,1)}function It(R,S,D){return Math.min(Math.max(S,R),D)}function ft(R){return!R.some(Number.isNaN)}let jt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Zt{constructor(S,D,j,te=1,ue=!0){this.r=S,this.g=D,this.b=j,this.a=te,ue||(this.r*=te,this.g*=te,this.b*=te,te||this.overwriteGetter("rgb",[S,D,j,te]))}static parse(S){if(S instanceof Zt)return S;if(typeof S!="string")return;let D=function(j){if((j=j.toLowerCase().trim())==="transparent")return[0,0,0,0];let te=jt[j];if(te){let[ve,De,Ze]=te;return[ve/255,De/255,Ze/255,1]}if(j.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(j)){let ve=j.length<6?1:2,De=1;return[zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+=ve)),zn(j.slice(De,De+ve)||"ff")]}if(j.startsWith("rgb")){let ve=j.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ve){let[De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di]=ve,pi=[Tt||" ",sr||" ",$r].join("");if(pi===" "||pi===" /"||pi===",,"||pi===",,,"){let ki=[at,Qt,Pr].join(""),Zi=ki==="%%%"?100:ki===""?255:0;if(Zi){let ta=[It(+Ze/Zi,0,1),It(+Ft/Zi,0,1),It(+Tr/Zi,0,1),ni?Wn(+ni,Di):1];if(ft(ta))return ta}}return}}let ue=j.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(ue){let[ve,De,Ze,at,Tt,Ft,Qt,sr,Tr]=ue,Pr=[Ze||" ",Tt||" ",Qt].join("");if(Pr===" "||Pr===" /"||Pr===",,"||Pr===",,,"){let $r=[+De,It(+at,0,100),It(+Ft,0,100),sr?Wn(+sr,Tr):1];if(ft($r))return function([ni,Di,pi,ki]){function Zi(ta){let Va=(ta+ni/30)%12,Io=Di*Math.min(pi,1-pi);return pi-Io*Math.max(-1,Math.min(Va-3,9-Va,1))}return ni=ri(ni),Di/=100,pi/=100,[Zi(0),Zi(8),Zi(4),ki]}($r)}}}(S);return D?new Zt(...D,!1):void 0}get rgb(){let{r:S,g:D,b:j,a:te}=this,ue=te||1/0;return this.overwriteGetter("rgb",[S/ue,D/ue,j/ue,te])}get hcl(){return this.overwriteGetter("hcl",function(S){let[D,j,te,ue]=bi(S),ve=Math.sqrt(j*j+te*te);return[Math.round(1e4*ve)?ri(Math.atan2(te,j)*jr):NaN,ve,D,ue]}(this.rgb))}get lab(){return this.overwriteGetter("lab",bi(this.rgb))}overwriteGetter(S,D){return Object.defineProperty(this,S,{value:D}),D}toString(){let[S,D,j,te]=this.rgb;return`rgba(${[S,D,j].map(ue=>Math.round(255*ue)).join(",")},${te})`}}Zt.black=new Zt(0,0,0,1),Zt.white=new Zt(1,1,1,1),Zt.transparent=new Zt(0,0,0,0),Zt.red=new Zt(1,0,0,1);class yr{constructor(S,D,j){this.sensitivity=S?D?"variant":"case":D?"accent":"base",this.locale=j,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(S,D){return this.collator.compare(S,D)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Fr{constructor(S,D,j,te,ue){this.text=S,this.image=D,this.scale=j,this.fontStack=te,this.textColor=ue}}class Zr{constructor(S){this.sections=S}static fromString(S){return new Zr([new Fr(S,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(S=>S.text.length!==0||S.image&&S.image.name.length!==0)}static factory(S){return S instanceof Zr?S:Zr.fromString(S)}toString(){return this.sections.length===0?"":this.sections.map(S=>S.text).join("")}}class Vr{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Vr)return S;if(typeof S=="number")return new Vr([S,S,S,S]);if(Array.isArray(S)&&!(S.length<1||S.length>4)){for(let D of S)if(typeof D!="number")return;switch(S.length){case 1:S=[S[0],S[0],S[0],S[0]];break;case 2:S=[S[0],S[1],S[0],S[1]];break;case 3:S=[S[0],S[1],S[2],S[1]]}return new Vr(S)}}toString(){return JSON.stringify(this.values)}}let gi=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class Si{constructor(S){this.values=S.slice()}static parse(S){if(S instanceof Si)return S;if(Array.isArray(S)&&!(S.length<1)&&S.length%2==0){for(let D=0;D=0&&R<=255&&typeof S=="number"&&S>=0&&S<=255&&typeof D=="number"&&D>=0&&D<=255?j===void 0||typeof j=="number"&&j>=0&&j<=1?null:`Invalid rgba value [${[R,S,D,j].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof j=="number"?[R,S,D,j]:[R,S,D]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function Gi(R){if(R===null||typeof R=="string"||typeof R=="boolean"||typeof R=="number"||R instanceof Zt||R instanceof yr||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi)return!0;if(Array.isArray(R)){for(let S of R)if(!Gi(S))return!1;return!0}if(typeof R=="object"){for(let S in R)if(!Gi(R[S]))return!1;return!0}return!1}function Ki(R){if(R===null)return Lt;if(typeof R=="string")return Et;if(typeof R=="boolean")return dt;if(typeof R=="number")return St;if(R instanceof Zt)return Ht;if(R instanceof yr)return _r;if(R instanceof Zr)return Br;if(R instanceof Vr)return Or;if(R instanceof Si)return ut;if(R instanceof Mi)return Nr;if(Array.isArray(R)){let S=R.length,D;for(let j of R){let te=Ki(j);if(D){if(D===te)continue;D=fr;break}D=te}return Ne(D||fr,S)}return $t}function ka(R){let S=typeof R;return R===null?"":S==="string"||S==="number"||S==="boolean"?String(R):R instanceof Zt||R instanceof Zr||R instanceof Vr||R instanceof Si||R instanceof Mi?R.toString():JSON.stringify(R)}class jn{constructor(S,D){this.type=S,this.value=D}static parse(S,D){if(S.length!==2)return D.error(`'literal' expression requires exactly one argument, but found ${S.length-1} instead.`);if(!Gi(S[1]))return D.error("invalid value");let j=S[1],te=Ki(j),ue=D.expectedType;return te.kind!=="array"||te.N!==0||!ue||ue.kind!=="array"||typeof ue.N=="number"&&ue.N!==0||(te=ue),new jn(te,j)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class la{constructor(S){this.name="ExpressionEvaluationError",this.message=S}toJSON(){return this.message}}let Fa={string:Et,number:St,boolean:dt,object:$t};class Ra{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j,te=1,ue=S[0];if(ue==="array"){let De,Ze;if(S.length>2){let at=S[1];if(typeof at!="string"||!(at in Fa)||at==="object")return D.error('The item type argument of "array" must be one of string, number, boolean',1);De=Fa[at],te++}else De=fr;if(S.length>3){if(S[2]!==null&&(typeof S[2]!="number"||S[2]<0||S[2]!==Math.floor(S[2])))return D.error('The length argument to "array" must be a positive integer literal',2);Ze=S[2],te++}j=Ne(De,Ze)}else{if(!Fa[ue])throw new Error(`Types doesn't contain name = ${ue}`);j=Fa[ue]}let ve=[];for(;teS.outputDefined())}}let jo={"to-boolean":dt,"to-color":Ht,"to-number":St,"to-string":Et};class oa{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[0];if(!jo[j])throw new Error(`Can't parse ${j} as it is not part of the known types`);if((j==="to-boolean"||j==="to-string")&&S.length!==2)return D.error("Expected one argument.");let te=jo[j],ue=[];for(let ve=1;ve4?`Invalid rbga value ${JSON.stringify(D)}: expected an array containing either three or four numeric values.`:Pi(D[0],D[1],D[2],D[3]),!j))return new Zt(D[0]/255,D[1]/255,D[2]/255,D[3])}throw new la(j||`Could not parse color from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"padding":{let D;for(let j of this.args){D=j.evaluate(S);let te=Vr.parse(D);if(te)return te}throw new la(`Could not parse padding from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"variableAnchorOffsetCollection":{let D;for(let j of this.args){D=j.evaluate(S);let te=Si.parse(D);if(te)return te}throw new la(`Could not parse variableAnchorOffsetCollection from value '${typeof D=="string"?D:JSON.stringify(D)}'`)}case"number":{let D=null;for(let j of this.args){if(D=j.evaluate(S),D===null)return 0;let te=Number(D);if(!isNaN(te))return te}throw new la(`Could not convert ${JSON.stringify(D)} to number.`)}case"formatted":return Zr.fromString(ka(this.args[0].evaluate(S)));case"resolvedImage":return Mi.fromString(ka(this.args[0].evaluate(S)));default:return ka(this.args[0].evaluate(S))}}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}let Sn=["Unknown","Point","LineString","Polygon"];class Ha{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Sn[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(S){let D=this._parseColorCache[S];return D||(D=this._parseColorCache[S]=Zt.parse(S)),D}}class oo{constructor(S,D,j=[],te,ue=new bt,ve=[]){this.registry=S,this.path=j,this.key=j.map(De=>`[${De}]`).join(""),this.scope=ue,this.errors=ve,this.expectedType=te,this._isConstant=D}parse(S,D,j,te,ue={}){return D?this.concat(D,j,te)._parse(S,ue):this._parse(S,ue)}_parse(S,D){function j(te,ue,ve){return ve==="assert"?new Ra(ue,[te]):ve==="coerce"?new oa(ue,[te]):te}if(S!==null&&typeof S!="string"&&typeof S!="boolean"&&typeof S!="number"||(S=["literal",S]),Array.isArray(S)){if(S.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let te=S[0];if(typeof te!="string")return this.error(`Expression name must be a string, but found ${typeof te} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let ue=this.registry[te];if(ue){let ve=ue.parse(S,this);if(!ve)return null;if(this.expectedType){let De=this.expectedType,Ze=ve.type;if(De.kind!=="string"&&De.kind!=="number"&&De.kind!=="boolean"&&De.kind!=="object"&&De.kind!=="array"||Ze.kind!=="value")if(De.kind!=="color"&&De.kind!=="formatted"&&De.kind!=="resolvedImage"||Ze.kind!=="value"&&Ze.kind!=="string")if(De.kind!=="padding"||Ze.kind!=="value"&&Ze.kind!=="number"&&Ze.kind!=="array")if(De.kind!=="variableAnchorOffsetCollection"||Ze.kind!=="value"&&Ze.kind!=="array"){if(this.checkSubtype(De,Ze))return null}else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"coerce");else ve=j(ve,De,D.typeAnnotation||"assert")}if(!(ve instanceof jn)&&ve.type.kind!=="resolvedImage"&&this._isConstant(ve)){let De=new Ha;try{ve=new jn(ve.type,ve.evaluate(De))}catch(Ze){return this.error(Ze.message),null}}return ve}return this.error(`Unknown expression "${te}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(S===void 0?"'undefined' value invalid. Use null instead.":typeof S=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof S} instead.`)}concat(S,D,j){let te=typeof S=="number"?this.path.concat(S):this.path,ue=j?this.scope.concat(j):this.scope;return new oo(this.registry,this._isConstant,te,D||null,ue,this.errors)}error(S,...D){let j=`${this.key}${D.map(te=>`[${te}]`).join("")}`;this.errors.push(new xt(j,S))}checkSubtype(S,D){let j=Xe(S,D);return j&&this.error(j),j}}class xn{constructor(S,D){this.type=D.type,this.bindings=[].concat(S),this.result=D}evaluate(S){return this.result.evaluate(S)}eachChild(S){for(let D of this.bindings)S(D[1]);S(this.result)}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found ${S.length-1} instead.`);let j=[];for(let ue=1;ue=j.length)throw new la(`Array index out of bounds: ${D} > ${j.length-1}.`);if(D!==Math.floor(D))throw new la(`Array index must be an integer, but found ${D} instead.`);return j[D]}eachChild(S){S(this.index),S(this.input)}outputDefined(){return!1}}class Hr{constructor(S,D){this.type=dt,this.needle=S,this.haystack=D}static parse(S,D){if(S.length!==3)return D.error(`Expected 2 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);return j&&te?ht(j.type,[dt,Et,St,Lt,fr])?new Hr(j,te):D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`):null}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!j)return!1;if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);if(!Le(j,["string","array"]))throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`);return j.indexOf(D)>=0}eachChild(S){S(this.needle),S(this.haystack)}outputDefined(){return!0}}class ti{constructor(S,D,j){this.type=St,this.needle=S,this.haystack=D,this.fromIndex=j}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,fr);if(!j||!te)return null;if(!ht(j.type,[dt,Et,St,Lt,fr]))return D.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new ti(j,te,ue):null}return new ti(j,te)}evaluate(S){let D=this.needle.evaluate(S),j=this.haystack.evaluate(S);if(!Le(D,["boolean","string","number","null"]))throw new la(`Expected first argument to be of type boolean, string, number or null, but found ${Ye(Ki(D))} instead.`);let te;if(this.fromIndex&&(te=this.fromIndex.evaluate(S)),Le(j,["string"])){let ue=j.indexOf(D,te);return ue===-1?-1:[...j.slice(0,ue)].length}if(Le(j,["array"]))return j.indexOf(D,te);throw new la(`Expected second argument to be of type array or string, but found ${Ye(Ki(j))} instead.`)}eachChild(S){S(this.needle),S(this.haystack),this.fromIndex&&S(this.fromIndex)}outputDefined(){return!1}}class zi{constructor(S,D,j,te,ue,ve){this.inputType=S,this.type=D,this.input=j,this.cases=te,this.outputs=ue,this.otherwise=ve}static parse(S,D){if(S.length<5)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if(S.length%2!=1)return D.error("Expected an even number of arguments.");let j,te;D.expectedType&&D.expectedType.kind!=="value"&&(te=D.expectedType);let ue={},ve=[];for(let at=2;atNumber.MAX_SAFE_INTEGER)return Qt.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof Tr=="number"&&Math.floor(Tr)!==Tr)return Qt.error("Numeric branch labels must be integer values.");if(j){if(Qt.checkSubtype(j,Ki(Tr)))return null}else j=Ki(Tr);if(ue[String(Tr)]!==void 0)return Qt.error("Branch labels must be unique.");ue[String(Tr)]=ve.length}let sr=D.parse(Ft,at,te);if(!sr)return null;te=te||sr.type,ve.push(sr)}let De=D.parse(S[1],1,fr);if(!De)return null;let Ze=D.parse(S[S.length-1],S.length-1,te);return Ze?De.type.kind!=="value"&&D.concat(1).checkSubtype(j,De.type)?null:new zi(j,te,De,ue,ve,Ze):null}evaluate(S){let D=this.input.evaluate(S);return(Ki(D)===this.inputType&&this.outputs[this.cases[D]]||this.otherwise).evaluate(S)}eachChild(S){S(this.input),this.outputs.forEach(S),S(this.otherwise)}outputDefined(){return this.outputs.every(S=>S.outputDefined())&&this.otherwise.outputDefined()}}class Yi{constructor(S,D,j){this.type=S,this.branches=D,this.otherwise=j}static parse(S,D){if(S.length<4)return D.error(`Expected at least 3 arguments, but found only ${S.length-1}.`);if(S.length%2!=0)return D.error("Expected an odd number of arguments.");let j;D.expectedType&&D.expectedType.kind!=="value"&&(j=D.expectedType);let te=[];for(let ve=1;veD.outputDefined())&&this.otherwise.outputDefined()}}class an{constructor(S,D,j,te){this.type=S,this.input=D,this.beginIndex=j,this.endIndex=te}static parse(S,D){if(S.length<=2||S.length>=5)return D.error(`Expected 3 or 4 arguments, but found ${S.length-1} instead.`);let j=D.parse(S[1],1,fr),te=D.parse(S[2],2,St);if(!j||!te)return null;if(!ht(j.type,[Ne(fr),Et,fr]))return D.error(`Expected first argument to be of type array or string, but found ${Ye(j.type)} instead`);if(S.length===4){let ue=D.parse(S[3],3,St);return ue?new an(j.type,j,te,ue):null}return new an(j.type,j,te)}evaluate(S){let D=this.input.evaluate(S),j=this.beginIndex.evaluate(S),te;if(this.endIndex&&(te=this.endIndex.evaluate(S)),Le(D,["string"]))return[...D].slice(j,te).join("");if(Le(D,["array"]))return D.slice(j,te);throw new la(`Expected first argument to be of type array or string, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input),S(this.beginIndex),this.endIndex&&S(this.endIndex)}outputDefined(){return!1}}function hi(R,S){let D=R.length-1,j,te,ue=0,ve=D,De=0;for(;ue<=ve;)if(De=Math.floor((ue+ve)/2),j=R[De],te=R[De+1],j<=S){if(De===D||SS))throw new la("Input is not a number.");ve=De-1}return 0}class Ji{constructor(S,D,j){this.type=S,this.input=D,this.labels=[],this.outputs=[];for(let[te,ue]of j)this.labels.push(te),this.outputs.push(ue)}static parse(S,D){if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=[],ue=null;D.expectedType&&D.expectedType.kind!=="value"&&(ue=D.expectedType);for(let ve=1;ve=De)return D.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',at);let Ft=D.parse(Ze,Tt,ue);if(!Ft)return null;ue=ue||Ft.type,te.push([De,Ft])}return new Ji(ue,j,te)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;return te>=D[ue-1]?j[ue-1].evaluate(S):j[hi(D,te)].evaluate(S)}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function ua(R){return R&&R.__esModule&&Object.prototype.hasOwnProperty.call(R,"default")?R.default:R}var Fn=Sa;function Sa(R,S,D,j){this.cx=3*R,this.bx=3*(D-R)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*S,this.by=3*(j-S)-this.cy,this.ay=1-this.cy-this.by,this.p1x=R,this.p1y=S,this.p2x=D,this.p2y=j}Sa.prototype={sampleCurveX:function(R){return((this.ax*R+this.bx)*R+this.cx)*R},sampleCurveY:function(R){return((this.ay*R+this.by)*R+this.cy)*R},sampleCurveDerivativeX:function(R){return(3*this.ax*R+2*this.bx)*R+this.cx},solveCurveX:function(R,S){if(S===void 0&&(S=1e-6),R<0)return 0;if(R>1)return 1;for(var D=R,j=0;j<8;j++){var te=this.sampleCurveX(D)-R;if(Math.abs(te)te?ve=D:De=D,D=.5*(De-ve)+ve;return D},solve:function(R,S){return this.sampleCurveY(this.solveCurveX(R,S))}};var go=ua(Fn);function Oo(R,S,D){return R+D*(S-R)}function ho(R,S,D){return R.map((j,te)=>Oo(j,S[te],D))}let Mo={number:Oo,color:function(R,S,D,j="rgb"){switch(j){case"rgb":{let[te,ue,ve,De]=ho(R.rgb,S.rgb,D);return new Zt(te,ue,ve,De,!1)}case"hcl":{let[te,ue,ve,De]=R.hcl,[Ze,at,Tt,Ft]=S.hcl,Qt,sr;if(isNaN(te)||isNaN(Ze))isNaN(te)?isNaN(Ze)?Qt=NaN:(Qt=Ze,ve!==1&&ve!==0||(sr=at)):(Qt=te,Tt!==1&&Tt!==0||(sr=ue));else{let Di=Ze-te;Ze>te&&Di>180?Di-=360:Ze180&&(Di+=360),Qt=te+D*Di}let[Tr,Pr,$r,ni]=function([Di,pi,ki,Zi]){return Di=isNaN(Di)?0:Di*ai,Ni([ki,Math.cos(Di)*pi,Math.sin(Di)*pi,Zi])}([Qt,sr!=null?sr:Oo(ue,at,D),Oo(ve,Tt,D),Oo(De,Ft,D)]);return new Zt(Tr,Pr,$r,ni,!1)}case"lab":{let[te,ue,ve,De]=Ni(ho(R.lab,S.lab,D));return new Zt(te,ue,ve,De,!1)}}},array:ho,padding:function(R,S,D){return new Vr(ho(R.values,S.values,D))},variableAnchorOffsetCollection:function(R,S,D){let j=R.values,te=S.values;if(j.length!==te.length)throw new la(`Cannot interpolate values of different length. from: ${R.toString()}, to: ${S.toString()}`);let ue=[];for(let ve=0;vetypeof Tt!="number"||Tt<0||Tt>1))return D.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);te={name:"cubic-bezier",controlPoints:at}}}if(S.length-1<4)return D.error(`Expected at least 4 arguments, but found only ${S.length-1}.`);if((S.length-1)%2!=0)return D.error("Expected an even number of arguments.");if(ue=D.parse(ue,2,St),!ue)return null;let De=[],Ze=null;j==="interpolate-hcl"||j==="interpolate-lab"?Ze=Ht:D.expectedType&&D.expectedType.kind!=="value"&&(Ze=D.expectedType);for(let at=0;at=Tt)return D.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Qt);let Tr=D.parse(Ft,sr,Ze);if(!Tr)return null;Ze=Ze||Tr.type,De.push([Tt,Tr])}return xe(Ze,St)||xe(Ze,Ht)||xe(Ze,Or)||xe(Ze,ut)||xe(Ze,Ne(St))?new xo(Ze,j,te,ue,De):D.error(`Type ${Ye(Ze)} is not interpolatable.`)}evaluate(S){let D=this.labels,j=this.outputs;if(D.length===1)return j[0].evaluate(S);let te=this.input.evaluate(S);if(te<=D[0])return j[0].evaluate(S);let ue=D.length;if(te>=D[ue-1])return j[ue-1].evaluate(S);let ve=hi(D,te),De=xo.interpolationFactor(this.interpolation,te,D[ve],D[ve+1]),Ze=j[ve].evaluate(S),at=j[ve+1].evaluate(S);switch(this.operator){case"interpolate":return Mo[this.type.kind](Ze,at,De);case"interpolate-hcl":return Mo.color(Ze,at,De,"hcl");case"interpolate-lab":return Mo.color(Ze,at,De,"lab")}}eachChild(S){S(this.input);for(let D of this.outputs)S(D)}outputDefined(){return this.outputs.every(S=>S.outputDefined())}}function zs(R,S,D,j){let te=j-D,ue=R-D;return te===0?0:S===1?ue/te:(Math.pow(S,ue)-1)/(Math.pow(S,te)-1)}class ks{constructor(S,D){this.type=S,this.args=D}static parse(S,D){if(S.length<2)return D.error("Expectected at least one argument.");let j=null,te=D.expectedType;te&&te.kind!=="value"&&(j=te);let ue=[];for(let De of S.slice(1)){let Ze=D.parse(De,1+ue.length,j,void 0,{typeAnnotation:"omit"});if(!Ze)return null;j=j||Ze.type,ue.push(Ze)}if(!j)throw new Error("No output type");let ve=te&&ue.some(De=>Xe(te,De.type));return new ks(ve?fr:j,ue)}evaluate(S){let D,j=null,te=0;for(let ue of this.args)if(te++,j=ue.evaluate(S),j&&j instanceof Mi&&!j.available&&(D||(D=j.name),j=null,te===this.args.length&&(j=D)),j!==null)break;return j}eachChild(S){this.args.forEach(S)}outputDefined(){return this.args.every(S=>S.outputDefined())}}function Zs(R,S){return R==="=="||R==="!="?S.kind==="boolean"||S.kind==="string"||S.kind==="number"||S.kind==="null"||S.kind==="value":S.kind==="string"||S.kind==="number"||S.kind==="value"}function Xs(R,S,D,j){return j.compare(S,D)===0}function wl(R,S,D){let j=R!=="=="&&R!=="!=";return class GHe{constructor(ue,ve,De){this.type=dt,this.lhs=ue,this.rhs=ve,this.collator=De,this.hasUntypedArgument=ue.type.kind==="value"||ve.type.kind==="value"}static parse(ue,ve){if(ue.length!==3&&ue.length!==4)return ve.error("Expected two or three arguments.");let De=ue[0],Ze=ve.parse(ue[1],1,fr);if(!Ze)return null;if(!Zs(De,Ze.type))return ve.concat(1).error(`"${De}" comparisons are not supported for type '${Ye(Ze.type)}'.`);let at=ve.parse(ue[2],2,fr);if(!at)return null;if(!Zs(De,at.type))return ve.concat(2).error(`"${De}" comparisons are not supported for type '${Ye(at.type)}'.`);if(Ze.type.kind!==at.type.kind&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error(`Cannot compare types '${Ye(Ze.type)}' and '${Ye(at.type)}'.`);j&&(Ze.type.kind==="value"&&at.type.kind!=="value"?Ze=new Ra(at.type,[Ze]):Ze.type.kind!=="value"&&at.type.kind==="value"&&(at=new Ra(Ze.type,[at])));let Tt=null;if(ue.length===4){if(Ze.type.kind!=="string"&&at.type.kind!=="string"&&Ze.type.kind!=="value"&&at.type.kind!=="value")return ve.error("Cannot use collator to compare non-string types.");if(Tt=ve.parse(ue[3],3,_r),!Tt)return null}return new GHe(Ze,at,Tt)}evaluate(ue){let ve=this.lhs.evaluate(ue),De=this.rhs.evaluate(ue);if(j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!==at.kind||Ze.kind!=="string"&&Ze.kind!=="number")throw new la(`Expected arguments for "${R}" to be (string, string) or (number, number), but found (${Ze.kind}, ${at.kind}) instead.`)}if(this.collator&&!j&&this.hasUntypedArgument){let Ze=Ki(ve),at=Ki(De);if(Ze.kind!=="string"||at.kind!=="string")return S(ue,ve,De)}return this.collator?D(ue,ve,De,this.collator.evaluate(ue)):S(ue,ve,De)}eachChild(ue){ue(this.lhs),ue(this.rhs),this.collator&&ue(this.collator)}outputDefined(){return!0}}}let os=wl("==",function(R,S,D){return S===D},Xs),cl=wl("!=",function(R,S,D){return S!==D},function(R,S,D,j){return!Xs(0,S,D,j)}),Cs=wl("<",function(R,S,D){return S",function(R,S,D){return S>D},function(R,S,D,j){return j.compare(S,D)>0}),Ys=wl("<=",function(R,S,D){return S<=D},function(R,S,D,j){return j.compare(S,D)<=0}),Hs=wl(">=",function(R,S,D){return S>=D},function(R,S,D,j){return j.compare(S,D)>=0});class Eo{constructor(S,D,j){this.type=_r,this.locale=j,this.caseSensitive=S,this.diacriticSensitive=D}static parse(S,D){if(S.length!==2)return D.error("Expected one argument.");let j=S[1];if(typeof j!="object"||Array.isArray(j))return D.error("Collator options argument must be an object.");let te=D.parse(j["case-sensitive"]!==void 0&&j["case-sensitive"],1,dt);if(!te)return null;let ue=D.parse(j["diacritic-sensitive"]!==void 0&&j["diacritic-sensitive"],1,dt);if(!ue)return null;let ve=null;return j.locale&&(ve=D.parse(j.locale,1,Et),!ve)?null:new Eo(te,ue,ve)}evaluate(S){return new yr(this.caseSensitive.evaluate(S),this.diacriticSensitive.evaluate(S),this.locale?this.locale.evaluate(S):null)}eachChild(S){S(this.caseSensitive),S(this.diacriticSensitive),this.locale&&S(this.locale)}outputDefined(){return!1}}class fs{constructor(S,D,j,te,ue){this.type=Et,this.number=S,this.locale=D,this.currency=j,this.minFractionDigits=te,this.maxFractionDigits=ue}static parse(S,D){if(S.length!==3)return D.error("Expected two arguments.");let j=D.parse(S[1],1,St);if(!j)return null;let te=S[2];if(typeof te!="object"||Array.isArray(te))return D.error("NumberFormat options argument must be an object.");let ue=null;if(te.locale&&(ue=D.parse(te.locale,1,Et),!ue))return null;let ve=null;if(te.currency&&(ve=D.parse(te.currency,1,Et),!ve))return null;let De=null;if(te["min-fraction-digits"]&&(De=D.parse(te["min-fraction-digits"],1,St),!De))return null;let Ze=null;return te["max-fraction-digits"]&&(Ze=D.parse(te["max-fraction-digits"],1,St),!Ze)?null:new fs(j,ue,ve,De,Ze)}evaluate(S){return new Intl.NumberFormat(this.locale?this.locale.evaluate(S):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(S):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(S):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(S):void 0}).format(this.number.evaluate(S))}eachChild(S){S(this.number),this.locale&&S(this.locale),this.currency&&S(this.currency),this.minFractionDigits&&S(this.minFractionDigits),this.maxFractionDigits&&S(this.maxFractionDigits)}outputDefined(){return!1}}class Ql{constructor(S){this.type=Br,this.sections=S}static parse(S,D){if(S.length<2)return D.error("Expected at least one argument.");let j=S[1];if(!Array.isArray(j)&&typeof j=="object")return D.error("First argument must be an image or text section.");let te=[],ue=!1;for(let ve=1;ve<=S.length-1;++ve){let De=S[ve];if(ue&&typeof De=="object"&&!Array.isArray(De)){ue=!1;let Ze=null;if(De["font-scale"]&&(Ze=D.parse(De["font-scale"],1,St),!Ze))return null;let at=null;if(De["text-font"]&&(at=D.parse(De["text-font"],1,Ne(Et)),!at))return null;let Tt=null;if(De["text-color"]&&(Tt=D.parse(De["text-color"],1,Ht),!Tt))return null;let Ft=te[te.length-1];Ft.scale=Ze,Ft.font=at,Ft.textColor=Tt}else{let Ze=D.parse(S[ve],1,fr);if(!Ze)return null;let at=Ze.type.kind;if(at!=="string"&&at!=="value"&&at!=="null"&&at!=="resolvedImage")return D.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");ue=!0,te.push({content:Ze,scale:null,font:null,textColor:null})}}return new Ql(te)}evaluate(S){return new Zr(this.sections.map(D=>{let j=D.content.evaluate(S);return Ki(j)===Nr?new Fr("",j,null,null,null):new Fr(ka(j),null,D.scale?D.scale.evaluate(S):null,D.font?D.font.evaluate(S).join(","):null,D.textColor?D.textColor.evaluate(S):null)}))}eachChild(S){for(let D of this.sections)S(D.content),D.scale&&S(D.scale),D.font&&S(D.font),D.textColor&&S(D.textColor)}outputDefined(){return!1}}class Hu{constructor(S){this.type=Nr,this.input=S}static parse(S,D){if(S.length!==2)return D.error("Expected two arguments.");let j=D.parse(S[1],1,Et);return j?new Hu(j):D.error("No image name provided.")}evaluate(S){let D=this.input.evaluate(S),j=Mi.fromString(D);return j&&S.availableImages&&(j.available=S.availableImages.indexOf(D)>-1),j}eachChild(S){S(this.input)}outputDefined(){return!1}}class fc{constructor(S){this.type=St,this.input=S}static parse(S,D){if(S.length!==2)return D.error(`Expected 1 argument, but found ${S.length-1} instead.`);let j=D.parse(S[1],1);return j?j.type.kind!=="array"&&j.type.kind!=="string"&&j.type.kind!=="value"?D.error(`Expected argument of type string or array, but found ${Ye(j.type)} instead.`):new fc(j):null}evaluate(S){let D=this.input.evaluate(S);if(typeof D=="string")return[...D].length;if(Array.isArray(D))return D.length;throw new la(`Expected value to be of type string or array, but found ${Ye(Ki(D))} instead.`)}eachChild(S){S(this.input)}outputDefined(){return!1}}let ms=8192;function on(R,S){let D=(180+R[0])/360,j=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R[1]*Math.PI/360)))/360,te=Math.pow(2,S.z);return[Math.round(D*te*ms),Math.round(j*te*ms)]}function fa(R,S){let D=Math.pow(2,S.z);return[(te=(R[0]/ms+S.x)/D,360*te-180),(j=(R[1]/ms+S.y)/D,360/Math.PI*Math.atan(Math.exp((180-360*j)*Math.PI/180))-90)];var j,te}function Qu(R,S){R[0]=Math.min(R[0],S[0]),R[1]=Math.min(R[1],S[1]),R[2]=Math.max(R[2],S[0]),R[3]=Math.max(R[3],S[1])}function Rl(R,S){return!(R[0]<=S[0]||R[2]>=S[2]||R[1]<=S[1]||R[3]>=S[3])}function vo(R,S,D){let j=R[0]-S[0],te=R[1]-S[1],ue=R[0]-D[0],ve=R[1]-D[1];return j*ve-ue*te==0&&j*ue<=0&&te*ve<=0}function Zl(R,S,D,j){return(te=[j[0]-D[0],j[1]-D[1]])[0]*(ue=[S[0]-R[0],S[1]-R[1]])[1]-te[1]*ue[0]!=0&&!(!Co(R,S,D,j)||!Co(D,j,R,S));var te,ue}function Ks(R,S,D){for(let j of D)for(let te=0;te(te=R)[1]!=(ve=De[Ze+1])[1]>te[1]&&te[0]<(ve[0]-ue[0])*(te[1]-ue[1])/(ve[1]-ue[1])+ue[0]&&(j=!j)}var te,ue,ve;return j}function Ec(R,S){for(let D of S)if(Xl(R,D))return!0;return!1}function Zn(R,S){for(let D of R)if(!Xl(D,S))return!1;for(let D=0;D0&&De<0||ve<0&&De>0}function Tl(R,S,D){let j=[];for(let te=0;teD[2]){let te=.5*j,ue=R[0]-D[0]>te?-j:D[0]-R[0]>te?j:0;ue===0&&(ue=R[0]-D[2]>te?-j:D[2]-R[0]>te?j:0),R[0]+=ue}Qu(S,R)}function cf(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let De of R)for(let Ze of De){let at=[Ze.x+ue[0],Ze.y+ue[1]];So(at,S,D,te),ve.push(at)}return ve}function rh(R,S,D,j){let te=Math.pow(2,j.z)*ms,ue=[j.x*ms,j.y*ms],ve=[];for(let Ze of R){let at=[];for(let Tt of Ze){let Ft=[Tt.x+ue[0],Tt.y+ue[1]];Qu(S,Ft),at.push(Ft)}ve.push(at)}if(S[2]-S[0]<=te/2){(De=S)[0]=De[1]=1/0,De[2]=De[3]=-1/0;for(let Ze of ve)for(let at of Ze)So(at,S,D,te)}var De;return ve}class Al{constructor(S,D){this.type=dt,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'within' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection"){let te=[];for(let ue of j.features){let{type:ve,coordinates:De}=ue.geometry;ve==="Polygon"&&te.push(De),ve==="MultiPolygon"&&te.push(...De)}if(te.length)return new Al(j,{type:"MultiPolygon",coordinates:te})}else if(j.type==="Feature"){let te=j.geometry.type;if(te==="Polygon"||te==="MultiPolygon")return new Al(j,j.geometry)}else if(j.type==="Polygon"||j.type==="MultiPolygon")return new Al(j,j)}return D.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Xl(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=cf(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Ec(at,De))return!1}return!0}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=[1/0,1/0,-1/0,-1/0],ue=[1/0,1/0,-1/0,-1/0],ve=D.canonicalID();if(j.type==="Polygon"){let De=Tl(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!Zn(at,De))return!1}if(j.type==="MultiPolygon"){let De=uf(j.coordinates,ue,ve),Ze=rh(D.geometry(),te,ue,ve);if(!Rl(te,ue))return!1;for(let at of Ze)if(!ko(at,De))return!1}return!0}(S,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Hc=class{constructor(R=[],S=(D,j)=>Dj?1:0){if(this.data=R,this.length=this.data.length,this.compare=S,this.length>0)for(let D=(this.length>>1)-1;D>=0;D--)this._down(D)}push(R){this.data.push(R),this._up(this.length++)}pop(){if(this.length===0)return;let R=this.data[0],S=this.data.pop();return--this.length>0&&(this.data[0]=S,this._down(0)),R}peek(){return this.data[0]}_up(R){let{data:S,compare:D}=this,j=S[R];for(;R>0;){let te=R-1>>1,ue=S[te];if(D(j,ue)>=0)break;S[R]=ue,R=te}S[R]=j}_down(R){let{data:S,compare:D}=this,j=this.length>>1,te=S[R];for(;R=0)break;S[R]=S[ue],R=ue}S[R]=te}};function eu(R,S,D,j,te){Ls(R,S,D,j||R.length-1,te||kc)}function Ls(R,S,D,j,te){for(;j>D;){if(j-D>600){var ue=j-D+1,ve=S-D+1,De=Math.log(ue),Ze=.5*Math.exp(2*De/3),at=.5*Math.sqrt(De*Ze*(ue-Ze)/ue)*(ve-ue/2<0?-1:1);Ls(R,S,Math.max(D,Math.floor(S-ve*Ze/ue+at)),Math.min(j,Math.floor(S+(ue-ve)*Ze/ue+at)),te)}var Tt=R[S],Ft=D,Qt=j;for(mu(R,D,S),te(R[j],Tt)>0&&mu(R,D,j);Ft0;)Qt--}te(R[D],Tt)===0?mu(R,D,Qt):mu(R,++Qt,j),Qt<=S&&(D=Qt+1),S<=Qt&&(j=Qt-1)}}function mu(R,S,D){var j=R[S];R[S]=R[D],R[D]=j}function kc(R,S){return RS?1:0}function Of(R,S){if(R.length<=1)return[R];let D=[],j,te;for(let ue of R){let ve=vd(ue);ve!==0&&(ue.area=Math.abs(ve),te===void 0&&(te=ve<0),te===ve<0?(j&&D.push(j),j=[ue]):j.push(ue))}if(j&&D.push(j),S>1)for(let ue=0;ue1?(at=S[Ze+1][0],Tt=S[Ze+1][1]):sr>0&&(at+=Ft/this.kx*sr,Tt+=Qt/this.ky*sr)),Ft=this.wrap(D[0]-at)*this.kx,Qt=(D[1]-Tt)*this.ky;let Tr=Ft*Ft+Qt*Qt;Tr180;)S-=360;return S}}function Vl(R,S){return S[0]-R[0]}function Js(R){return R[1]-R[0]+1}function hc(R,S){return R[1]>=R[0]&&R[1]R[1])return[null,null];let D=Js(R);if(S){if(D===2)return[R,null];let te=Math.floor(D/2);return[[R[0],R[0]+te],[R[0]+te,R[1]]]}if(D===1)return[R,null];let j=Math.floor(D/2)-1;return[[R[0],R[0]+j],[R[0]+j+1,R[1]]]}function ws(R,S){if(!hc(S,R.length))return[1/0,1/0,-1/0,-1/0];let D=[1/0,1/0,-1/0,-1/0];for(let j=S[0];j<=S[1];++j)Qu(D,R[j]);return D}function $s(R){let S=[1/0,1/0,-1/0,-1/0];for(let D of R)for(let j of D)Qu(S,j);return S}function hs(R){return R[0]!==-1/0&&R[1]!==-1/0&&R[2]!==1/0&&R[3]!==1/0}function Ms(R,S,D){if(!hs(R)||!hs(S))return NaN;let j=0,te=0;return R[2]S[2]&&(j=R[0]-S[2]),R[1]>S[3]&&(te=R[1]-S[3]),R[3]=j)return j;if(Rl(te,ue)){if(Od(R,S))return 0}else if(Od(S,R))return 0;let ve=1/0;for(let De of R)for(let Ze=0,at=De.length,Tt=at-1;Ze0;){let Ze=ve.pop();if(Ze[0]>=ue)continue;let at=Ze[1],Tt=S?50:100;if(Js(at)<=Tt){if(!hc(at,R.length))return NaN;if(S){let Ft=wo(R,at,D,j);if(isNaN(Ft)||Ft===0)return Ft;ue=Math.min(ue,Ft)}else for(let Ft=at[0];Ft<=at[1];++Ft){let Qt=ov(R[Ft],D,j);if(ue=Math.min(ue,Qt),ue===0)return 0}}else{let Ft=Cc(at,S);Ja(ve,ue,j,R,De,Ft[0]),Ja(ve,ue,j,R,De,Ft[1])}}return ue}function uu(R,S,D,j,te,ue=1/0){let ve=Math.min(ue,te.distance(R[0],D[0]));if(ve===0)return ve;let De=new Hc([[0,[0,R.length-1],[0,D.length-1]]],Vl);for(;De.length>0;){let Ze=De.pop();if(Ze[0]>=ve)continue;let at=Ze[1],Tt=Ze[2],Ft=S?50:100,Qt=j?50:100;if(Js(at)<=Ft&&Js(Tt)<=Qt){if(!hc(at,R.length)&&hc(Tt,D.length))return NaN;let sr;if(S&&j)sr=ec(R,at,D,Tt,te),ve=Math.min(ve,sr);else if(S&&!j){let Tr=R.slice(at[0],at[1]+1);for(let Pr=Tt[0];Pr<=Tt[1];++Pr)if(sr=dc(D[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else if(!S&&j){let Tr=D.slice(Tt[0],Tt[1]+1);for(let Pr=at[0];Pr<=at[1];++Pr)if(sr=dc(R[Pr],Tr,te),ve=Math.min(ve,sr),ve===0)return ve}else sr=Ps(R,at,D,Tt,te),ve=Math.min(ve,sr)}else{let sr=Cc(at,S),Tr=Cc(Tt,j);Ef(De,ve,te,R,D,sr[0],Tr[0]),Ef(De,ve,te,R,D,sr[0],Tr[1]),Ef(De,ve,te,R,D,sr[1],Tr[0]),Ef(De,ve,te,R,D,sr[1],Tr[1])}}return ve}function Mh(R){return R.type==="MultiPolygon"?R.coordinates.map(S=>({type:"Polygon",coordinates:S})):R.type==="MultiLineString"?R.coordinates.map(S=>({type:"LineString",coordinates:S})):R.type==="MultiPoint"?R.coordinates.map(S=>({type:"Point",coordinates:S})):[R]}class jc{constructor(S,D){this.type=St,this.geojson=S,this.geometries=D}static parse(S,D){if(S.length!==2)return D.error(`'distance' expression requires exactly one argument, but found ${S.length-1} instead.`);if(Gi(S[1])){let j=S[1];if(j.type==="FeatureCollection")return new jc(j,j.features.map(te=>Mh(te.geometry)).flat());if(j.type==="Feature")return new jc(j,Mh(j.geometry));if("type"in j&&"coordinates"in j)return new jc(j,Mh(j))}return D.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(S){if(S.geometry()!=null&&S.canonicalID()!=null){if(S.geometryType()==="Point")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!1,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!1,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!1,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="LineString")return function(D,j){let te=D.geometry(),ue=te.flat().map(Ze=>fa([Ze.x,Ze.y],D.canonical));if(te.length===0)return NaN;let ve=new ih(ue[0][1]),De=1/0;for(let Ze of j){switch(Ze.type){case"Point":De=Math.min(De,uu(ue,!0,[Ze.coordinates],!1,ve,De));break;case"LineString":De=Math.min(De,uu(ue,!0,Ze.coordinates,!0,ve,De));break;case"Polygon":De=Math.min(De,tc(ue,!0,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries);if(S.geometryType()==="Polygon")return function(D,j){let te=D.geometry();if(te.length===0||te[0].length===0)return NaN;let ue=Of(te,0).map(Ze=>Ze.map(at=>at.map(Tt=>fa([Tt.x,Tt.y],D.canonical)))),ve=new ih(ue[0][0][0][1]),De=1/0;for(let Ze of j)for(let at of ue){switch(Ze.type){case"Point":De=Math.min(De,tc([Ze.coordinates],!1,at,ve,De));break;case"LineString":De=Math.min(De,tc(Ze.coordinates,!0,at,ve,De));break;case"Polygon":De=Math.min(De,$o(at,Ze.coordinates,ve,De))}if(De===0)return De}return De}(S,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let kf={"==":os,"!=":cl,">":ml,"<":Cs,">=":Hs,"<=":Ys,array:Ra,at:br,boolean:Ra,case:Yi,coalesce:ks,collator:Eo,format:Ql,image:Hu,in:Hr,"index-of":ti,interpolate:xo,"interpolate-hcl":xo,"interpolate-lab":xo,length:fc,let:xn,literal:jn,match:zi,number:Ra,"number-format":fs,object:Ra,slice:an,step:Ji,string:Ra,"to-boolean":oa,"to-color":oa,"to-number":oa,"to-string":oa,var:_t,within:Al,distance:jc};class Ml{constructor(S,D,j,te){this.name=S,this.type=D,this._evaluate=j,this.args=te}evaluate(S){return this._evaluate(S,this.args)}eachChild(S){this.args.forEach(S)}outputDefined(){return!1}static parse(S,D){let j=S[0],te=Ml.definitions[j];if(!te)return D.error(`Unknown expression "${j}". If you wanted a literal array, use ["literal", [...]].`,0);let ue=Array.isArray(te)?te[0]:te.type,ve=Array.isArray(te)?[[te[1],te[2]]]:te.overloads,De=ve.filter(([at])=>!Array.isArray(at)||at.length===S.length-1),Ze=null;for(let[at,Tt]of De){Ze=new oo(D.registry,kh,D.path,null,D.scope);let Ft=[],Qt=!1;for(let sr=1;sr{return Qt=Ft,Array.isArray(Qt)?`(${Qt.map(Ye).join(", ")})`:`(${Ye(Qt.type)}...)`;var Qt}).join(" | "),Tt=[];for(let Ft=1;Ft{D=S?D&&kh(j):D&&j instanceof jn}),!!D&&Kh(R)&&ah(R,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function Kh(R){if(R instanceof Ml&&(R.name==="get"&&R.args.length===1||R.name==="feature-state"||R.name==="has"&&R.args.length===1||R.name==="properties"||R.name==="geometry-type"||R.name==="id"||/^filter-/.test(R.name))||R instanceof Al||R instanceof jc)return!1;let S=!0;return R.eachChild(D=>{S&&!Kh(D)&&(S=!1)}),S}function rc(R){if(R instanceof Ml&&R.name==="feature-state")return!1;let S=!0;return R.eachChild(D=>{S&&!rc(D)&&(S=!1)}),S}function ah(R,S){if(R instanceof Ml&&S.indexOf(R.name)>=0)return!1;let D=!0;return R.eachChild(j=>{D&&!ah(j,S)&&(D=!1)}),D}function Wc(R){return{result:"success",value:R}}function df(R){return{result:"error",value:R}}function Cu(R){return R["property-type"]==="data-driven"||R["property-type"]==="cross-faded-data-driven"}function Nf(R){return!!R.expression&&R.expression.parameters.indexOf("zoom")>-1}function Zc(R){return!!R.expression&&R.expression.interpolated}function ds(R){return R instanceof Number?"number":R instanceof String?"string":R instanceof Boolean?"boolean":Array.isArray(R)?"array":R===null?"null":typeof R}function Ch(R){return typeof R=="object"&&R!==null&&!Array.isArray(R)}function Bd(R){return R}function Jh(R,S){let D=S.type==="color",j=R.stops&&typeof R.stops[0][0]=="object",te=j||!(j||R.property!==void 0),ue=R.type||(Zc(S)?"exponential":"interval");if(D||S.type==="padding"){let Tt=D?Zt.parse:Vr.parse;(R=Ke({},R)).stops&&(R.stops=R.stops.map(Ft=>[Ft[0],Tt(Ft[1])])),R.default=Tt(R.default?R.default:S.default)}if(R.colorSpace&&(ve=R.colorSpace)!=="rgb"&&ve!=="hcl"&&ve!=="lab")throw new Error(`Unknown color space: "${R.colorSpace}"`);var ve;let De,Ze,at;if(ue==="exponential")De=$h;else if(ue==="interval")De=Lu;else if(ue==="categorical"){De=pd,Ze=Object.create(null);for(let Tt of R.stops)Ze[Tt[0]]=Tt[1];at=typeof R.stops[0][0]}else{if(ue!=="identity")throw new Error(`Unknown function type "${ue}"`);De=tu}if(j){let Tt={},Ft=[];for(let Tr=0;TrTr[0]),evaluate:({zoom:Tr},Pr)=>$h({stops:Qt,base:R.base},S,Tr).evaluate(Tr,Pr)}}if(te){let Tt=ue==="exponential"?{name:"exponential",base:R.base!==void 0?R.base:1}:null;return{kind:"camera",interpolationType:Tt,interpolationFactor:xo.interpolationFactor.bind(void 0,Tt),zoomStops:R.stops.map(Ft=>Ft[0]),evaluate:({zoom:Ft})=>De(R,S,Ft,Ze,at)}}return{kind:"source",evaluate(Tt,Ft){let Qt=Ft&&Ft.properties?Ft.properties[R.property]:void 0;return Qt===void 0?Cf(R.default,S.default):De(R,S,Qt,Ze,at)}}}function Cf(R,S,D){return R!==void 0?R:S!==void 0?S:D!==void 0?D:void 0}function pd(R,S,D,j,te){return Cf(typeof D===te?j[D]:void 0,R.default,S.default)}function Lu(R,S,D){if(ds(D)!=="number")return Cf(R.default,S.default);let j=R.stops.length;if(j===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[j-1][0])return R.stops[j-1][1];let te=hi(R.stops.map(ue=>ue[0]),D);return R.stops[te][1]}function $h(R,S,D){let j=R.base!==void 0?R.base:1;if(ds(D)!=="number")return Cf(R.default,S.default);let te=R.stops.length;if(te===1||D<=R.stops[0][0])return R.stops[0][1];if(D>=R.stops[te-1][0])return R.stops[te-1][1];let ue=hi(R.stops.map(Tt=>Tt[0]),D),ve=function(Tt,Ft,Qt,sr){let Tr=sr-Qt,Pr=Tt-Qt;return Tr===0?0:Ft===1?Pr/Tr:(Math.pow(Ft,Pr)-1)/(Math.pow(Ft,Tr)-1)}(D,j,R.stops[ue][0],R.stops[ue+1][0]),De=R.stops[ue][1],Ze=R.stops[ue+1][1],at=Mo[S.type]||Bd;return typeof De.evaluate=="function"?{evaluate(...Tt){let Ft=De.evaluate.apply(void 0,Tt),Qt=Ze.evaluate.apply(void 0,Tt);if(Ft!==void 0&&Qt!==void 0)return at(Ft,Qt,ve,R.colorSpace)}}:at(De,Ze,ve,R.colorSpace)}function tu(R,S,D){switch(S.type){case"color":D=Zt.parse(D);break;case"formatted":D=Zr.fromString(D.toString());break;case"resolvedImage":D=Mi.fromString(D.toString());break;case"padding":D=Vr.parse(D);break;default:ds(D)===S.type||S.type==="enum"&&S.values[D]||(D=void 0)}return Cf(D,R.default,S.default)}Ml.register(kf,{error:[{kind:"error"},[Et],(R,[S])=>{throw new la(S.evaluate(R))}],typeof:[Et,[fr],(R,[S])=>Ye(Ki(S.evaluate(R)))],"to-rgba":[Ne(St,4),[Ht],(R,[S])=>{let[D,j,te,ue]=S.evaluate(R).rgb;return[255*D,255*j,255*te,ue]}],rgb:[Ht,[St,St,St],Yh],rgba:[Ht,[St,St,St,St],Yh],has:{type:dt,overloads:[[[Et],(R,[S])=>Eh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>Eh(S.evaluate(R),D.evaluate(R))]]},get:{type:fr,overloads:[[[Et],(R,[S])=>nh(S.evaluate(R),R.properties())],[[Et,$t],(R,[S,D])=>nh(S.evaluate(R),D.evaluate(R))]]},"feature-state":[fr,[Et],(R,[S])=>nh(S.evaluate(R),R.featureState||{})],properties:[$t,[],R=>R.properties()],"geometry-type":[Et,[],R=>R.geometryType()],id:[fr,[],R=>R.id()],zoom:[St,[],R=>R.globals.zoom],"heatmap-density":[St,[],R=>R.globals.heatmapDensity||0],"line-progress":[St,[],R=>R.globals.lineProgress||0],accumulated:[fr,[],R=>R.globals.accumulated===void 0?null:R.globals.accumulated],"+":[St,hf(St),(R,S)=>{let D=0;for(let j of S)D+=j.evaluate(R);return D}],"*":[St,hf(St),(R,S)=>{let D=1;for(let j of S)D*=j.evaluate(R);return D}],"-":{type:St,overloads:[[[St,St],(R,[S,D])=>S.evaluate(R)-D.evaluate(R)],[[St],(R,[S])=>-S.evaluate(R)]]},"/":[St,[St,St],(R,[S,D])=>S.evaluate(R)/D.evaluate(R)],"%":[St,[St,St],(R,[S,D])=>S.evaluate(R)%D.evaluate(R)],ln2:[St,[],()=>Math.LN2],pi:[St,[],()=>Math.PI],e:[St,[],()=>Math.E],"^":[St,[St,St],(R,[S,D])=>Math.pow(S.evaluate(R),D.evaluate(R))],sqrt:[St,[St],(R,[S])=>Math.sqrt(S.evaluate(R))],log10:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN10],ln:[St,[St],(R,[S])=>Math.log(S.evaluate(R))],log2:[St,[St],(R,[S])=>Math.log(S.evaluate(R))/Math.LN2],sin:[St,[St],(R,[S])=>Math.sin(S.evaluate(R))],cos:[St,[St],(R,[S])=>Math.cos(S.evaluate(R))],tan:[St,[St],(R,[S])=>Math.tan(S.evaluate(R))],asin:[St,[St],(R,[S])=>Math.asin(S.evaluate(R))],acos:[St,[St],(R,[S])=>Math.acos(S.evaluate(R))],atan:[St,[St],(R,[S])=>Math.atan(S.evaluate(R))],min:[St,hf(St),(R,S)=>Math.min(...S.map(D=>D.evaluate(R)))],max:[St,hf(St),(R,S)=>Math.max(...S.map(D=>D.evaluate(R)))],abs:[St,[St],(R,[S])=>Math.abs(S.evaluate(R))],round:[St,[St],(R,[S])=>{let D=S.evaluate(R);return D<0?-Math.round(-D):Math.round(D)}],floor:[St,[St],(R,[S])=>Math.floor(S.evaluate(R))],ceil:[St,[St],(R,[S])=>Math.ceil(S.evaluate(R))],"filter-==":[dt,[Et,fr],(R,[S,D])=>R.properties()[S.value]===D.value],"filter-id-==":[dt,[fr],(R,[S])=>R.id()===S.value],"filter-type-==":[dt,[Et],(R,[S])=>R.geometryType()===S.value],"filter-<":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j{let D=R.id(),j=S.value;return typeof D==typeof j&&D":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>te}],"filter-id->":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>j}],"filter-<=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j<=te}],"filter-id-<=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D<=j}],"filter->=":[dt,[Et,fr],(R,[S,D])=>{let j=R.properties()[S.value],te=D.value;return typeof j==typeof te&&j>=te}],"filter-id->=":[dt,[fr],(R,[S])=>{let D=R.id(),j=S.value;return typeof D==typeof j&&D>=j}],"filter-has":[dt,[fr],(R,[S])=>S.value in R.properties()],"filter-has-id":[dt,[],R=>R.id()!==null&&R.id()!==void 0],"filter-type-in":[dt,[Ne(Et)],(R,[S])=>S.value.indexOf(R.geometryType())>=0],"filter-id-in":[dt,[Ne(fr)],(R,[S])=>S.value.indexOf(R.id())>=0],"filter-in-small":[dt,[Et,Ne(fr)],(R,[S,D])=>D.value.indexOf(R.properties()[S.value])>=0],"filter-in-large":[dt,[Et,Ne(fr)],(R,[S,D])=>function(j,te,ue,ve){for(;ue<=ve;){let De=ue+ve>>1;if(te[De]===j)return!0;te[De]>j?ve=De-1:ue=De+1}return!1}(R.properties()[S.value],D.value,0,D.value.length-1)],all:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)&&D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(!D.evaluate(R))return!1;return!0}]]},any:{type:dt,overloads:[[[dt,dt],(R,[S,D])=>S.evaluate(R)||D.evaluate(R)],[hf(dt),(R,S)=>{for(let D of S)if(D.evaluate(R))return!0;return!1}]]},"!":[dt,[dt],(R,[S])=>!S.evaluate(R)],"is-supported-script":[dt,[Et],(R,[S])=>{let D=R.globals&&R.globals.isSupportedScript;return!D||D(S.evaluate(R))}],upcase:[Et,[Et],(R,[S])=>S.evaluate(R).toUpperCase()],downcase:[Et,[Et],(R,[S])=>S.evaluate(R).toLowerCase()],concat:[Et,hf(fr),(R,S)=>S.map(D=>ka(D.evaluate(R))).join("")],"resolved-locale":[Et,[_r],(R,[S])=>S.evaluate(R).resolvedLocale()]});class Pu{constructor(S,D){var j;this.expression=S,this._warningHistory={},this._evaluator=new Ha,this._defaultValue=D?(j=D).type==="color"&&Ch(j.default)?new Zt(0,0,0,0):j.type==="color"?Zt.parse(j.default)||null:j.type==="padding"?Vr.parse(j.default)||null:j.type==="variableAnchorOffsetCollection"?Si.parse(j.default)||null:j.default===void 0?null:j.default:null,this._enumValues=D&&D.type==="enum"?D.values:null}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._evaluator.globals=S,this._evaluator.feature=D,this._evaluator.featureState=j,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve,this.expression.evaluate(this._evaluator)}evaluate(S,D,j,te,ue,ve){this._evaluator.globals=S,this._evaluator.feature=D||null,this._evaluator.featureState=j||null,this._evaluator.canonical=te,this._evaluator.availableImages=ue||null,this._evaluator.formattedSection=ve||null;try{let De=this.expression.evaluate(this._evaluator);if(De==null||typeof De=="number"&&De!=De)return this._defaultValue;if(this._enumValues&&!(De in this._enumValues))throw new la(`Expected value to be one of ${Object.keys(this._enumValues).map(Ze=>JSON.stringify(Ze)).join(", ")}, but found ${JSON.stringify(De)} instead.`);return De}catch(De){return this._warningHistory[De.message]||(this._warningHistory[De.message]=!0,typeof console!="undefined"&&console.warn(De.message)),this._defaultValue}}}function Lc(R){return Array.isArray(R)&&R.length>0&&typeof R[0]=="string"&&R[0]in kf}function fl(R,S){let D=new oo(kf,kh,[],S?function(te){let ue={color:Ht,string:Et,number:St,enum:Et,boolean:dt,formatted:Br,padding:Or,resolvedImage:Nr,variableAnchorOffsetCollection:ut};return te.type==="array"?Ne(ue[te.value]||fr,te.length):ue[te.type]}(S):void 0),j=D.parse(R,void 0,void 0,void 0,S&&S.type==="string"?{typeAnnotation:"coerce"}:void 0);return j?Wc(new Pu(j,S)):df(D.errors)}class Xc{constructor(S,D){this.kind=S,this._styleExpression=D,this.isStateDependent=S!=="constant"&&!rc(D.expression)}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}}class ic{constructor(S,D,j,te){this.kind=S,this.zoomStops=j,this._styleExpression=D,this.isStateDependent=S!=="camera"&&!rc(D.expression),this.interpolationType=te}evaluateWithoutErrorHandling(S,D,j,te,ue,ve){return this._styleExpression.evaluateWithoutErrorHandling(S,D,j,te,ue,ve)}evaluate(S,D,j,te,ue,ve){return this._styleExpression.evaluate(S,D,j,te,ue,ve)}interpolationFactor(S,D,j){return this.interpolationType?xo.interpolationFactor(this.interpolationType,S,D,j):0}}function yu(R,S){let D=fl(R,S);if(D.result==="error")return D;let j=D.value.expression,te=Kh(j);if(!te&&!Cu(S))return df([new xt("","data expressions not supported")]);let ue=ah(j,["zoom"]);if(!ue&&!Nf(S))return df([new xt("","zoom expressions not supported")]);let ve=Qh(j);return ve||ue?ve instanceof xt?df([ve]):ve instanceof xo&&!Zc(S)?df([new xt("",'"interpolate" expressions cannot be used with this property')]):Wc(ve?new ic(te?"camera":"composite",D.value,ve.labels,ve instanceof xo?ve.interpolation:void 0):new Xc(te?"constant":"source",D.value)):df([new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class Qs{constructor(S,D){this._parameters=S,this._specification=D,Ke(this,Jh(this._parameters,this._specification))}static deserialize(S){return new Qs(S._parameters,S._specification)}static serialize(S){return{_parameters:S._parameters,_specification:S._specification}}}function Qh(R){let S=null;if(R instanceof xn)S=Qh(R.result);else if(R instanceof ks){for(let D of R.args)if(S=Qh(D),S)break}else(R instanceof Ji||R instanceof xo)&&R.input instanceof Ml&&R.input.name==="zoom"&&(S=R);return S instanceof xt||R.eachChild(D=>{let j=Qh(D);j instanceof xt?S=j:!S&&j?S=new xt("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):S&&j&&S!==j&&(S=new xt("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),S}function gd(R){if(R===!0||R===!1)return!0;if(!Array.isArray(R)||R.length===0)return!1;switch(R[0]){case"has":return R.length>=2&&R[1]!=="$id"&&R[1]!=="$type";case"in":return R.length>=3&&(typeof R[1]!="string"||Array.isArray(R[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return R.length!==3||Array.isArray(R[1])||Array.isArray(R[2]);case"any":case"all":for(let S of R.slice(1))if(!gd(S)&&typeof S!="boolean")return!1;return!0;default:return!0}}let Gu={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function Pc(R){if(R==null)return{filter:()=>!0,needGeometry:!1};gd(R)||(R=Lf(R));let S=fl(R,Gu);if(S.result==="error")throw new Error(S.value.map(D=>`${D.key}: ${D.message}`).join(", "));return{filter:(D,j,te)=>S.value.evaluate(D,j,{},te),needGeometry:sv(R)}}function vc(R,S){return RS?1:0}function sv(R){if(!Array.isArray(R))return!1;if(R[0]==="within"||R[0]==="distance")return!0;for(let S=1;S"||S==="<="||S===">="?Uf(R[1],R[2],S):S==="any"?(D=R.slice(1),["any"].concat(D.map(Lf))):S==="all"?["all"].concat(R.slice(1).map(Lf)):S==="none"?["all"].concat(R.slice(1).map(Lf).map(ru)):S==="in"?Iu(R[1],R.slice(2)):S==="!in"?ru(Iu(R[1],R.slice(2))):S==="has"?oh(R[1]):S!=="!has"||ru(oh(R[1]));var D}function Uf(R,S,D){switch(R){case"$type":return[`filter-type-${D}`,S];case"$id":return[`filter-id-${D}`,S];default:return[`filter-${D}`,R,S]}}function Iu(R,S){if(S.length===0)return!1;switch(R){case"$type":return["filter-type-in",["literal",S]];case"$id":return["filter-id-in",["literal",S]];default:return S.length>200&&!S.some(D=>typeof D!=typeof S[0])?["filter-in-large",R,["literal",S.sort(vc)]]:["filter-in-small",R,["literal",S]]}}function oh(R){switch(R){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",R]}}function ru(R){return["!",R]}function vf(R){let S=typeof R;if(S==="number"||S==="boolean"||S==="string"||R==null)return JSON.stringify(R);if(Array.isArray(R)){let te="[";for(let ue of R)te+=`${vf(ue)},`;return`${te}]`}let D=Object.keys(R).sort(),j="{";for(let te=0;tej.maximum?[new er(S,D,`${D} is greater than the maximum value ${j.maximum}`)]:[]}function Pf(R){let S=R.valueSpec,D=Fs(R.value.type),j,te,ue,ve={},De=D!=="categorical"&&R.value.property===void 0,Ze=!De,at=ds(R.value.stops)==="array"&&ds(R.value.stops[0])==="array"&&ds(R.value.stops[0][0])==="object",Tt=xu({key:R.key,value:R.value,valueSpec:R.styleSpec.function,validateSpec:R.validateSpec,style:R.style,styleSpec:R.styleSpec,objectElementValidators:{stops:function(sr){if(D==="identity")return[new er(sr.key,sr.value,'identity function may not have a "stops" property')];let Tr=[],Pr=sr.value;return Tr=Tr.concat(Lh({key:sr.key,value:Pr,valueSpec:sr.valueSpec,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,arrayElementValidator:Ft})),ds(Pr)==="array"&&Pr.length===0&&Tr.push(new er(sr.key,Pr,"array must have at least one stop")),Tr},default:function(sr){return sr.validateSpec({key:sr.key,value:sr.value,valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec})}}});return D==="identity"&&De&&Tt.push(new er(R.key,R.value,'missing required property "property"')),D==="identity"||R.value.stops||Tt.push(new er(R.key,R.value,'missing required property "stops"')),D==="exponential"&&R.valueSpec.expression&&!Zc(R.valueSpec)&&Tt.push(new er(R.key,R.value,"exponential functions not supported")),R.styleSpec.$version>=8&&(Ze&&!Cu(R.valueSpec)?Tt.push(new er(R.key,R.value,"property functions not supported")):De&&!Nf(R.valueSpec)&&Tt.push(new er(R.key,R.value,"zoom functions not supported"))),D!=="categorical"&&!at||R.value.property!==void 0||Tt.push(new er(R.key,R.value,'"property" property is required')),Tt;function Ft(sr){let Tr=[],Pr=sr.value,$r=sr.key;if(ds(Pr)!=="array")return[new er($r,Pr,`array expected, ${ds(Pr)} found`)];if(Pr.length!==2)return[new er($r,Pr,`array length 2 expected, length ${Pr.length} found`)];if(at){if(ds(Pr[0])!=="object")return[new er($r,Pr,`object expected, ${ds(Pr[0])} found`)];if(Pr[0].zoom===void 0)return[new er($r,Pr,"object stop key must have zoom")];if(Pr[0].value===void 0)return[new er($r,Pr,"object stop key must have value")];if(ue&&ue>Fs(Pr[0].zoom))return[new er($r,Pr[0].zoom,"stop zoom values must appear in ascending order")];Fs(Pr[0].zoom)!==ue&&(ue=Fs(Pr[0].zoom),te=void 0,ve={}),Tr=Tr.concat(xu({key:`${$r}[0]`,value:Pr[0],valueSpec:{zoom:{}},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec,objectElementValidators:{zoom:Is,value:Qt}}))}else Tr=Tr.concat(Qt({key:`${$r}[0]`,value:Pr[0],valueSpec:{},validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec},Pr));return Lc(_u(Pr[1]))?Tr.concat([new er(`${$r}[1]`,Pr[1],"expressions are not allowed in function stops.")]):Tr.concat(sr.validateSpec({key:`${$r}[1]`,value:Pr[1],valueSpec:S,validateSpec:sr.validateSpec,style:sr.style,styleSpec:sr.styleSpec}))}function Qt(sr,Tr){let Pr=ds(sr.value),$r=Fs(sr.value),ni=sr.value!==null?sr.value:Tr;if(j){if(Pr!==j)return[new er(sr.key,ni,`${Pr} stop domain type must match previous stop domain type ${j}`)]}else j=Pr;if(Pr!=="number"&&Pr!=="string"&&Pr!=="boolean")return[new er(sr.key,ni,"stop domain value must be a number, string, or boolean")];if(Pr!=="number"&&D!=="categorical"){let Di=`number expected, ${Pr} found`;return Cu(S)&&D===void 0&&(Di+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new er(sr.key,ni,Di)]}return D!=="categorical"||Pr!=="number"||isFinite($r)&&Math.floor($r)===$r?D!=="categorical"&&Pr==="number"&&te!==void 0&&$rnew er(`${R.key}${j.key}`,R.value,j.message));let D=S.value.expression||S.value._styleExpression.expression;if(R.expressionContext==="property"&&R.propertyKey==="text-font"&&!D.outputDefined())return[new er(R.key,R.value,`Invalid data expression for "${R.propertyKey}". Output values must be contained as literals within the expression.`)];if(R.expressionContext==="property"&&R.propertyType==="layout"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with layout properties.')];if(R.expressionContext==="filter"&&!rc(D))return[new er(R.key,R.value,'"feature-state" data expressions are not supported with filters.')];if(R.expressionContext&&R.expressionContext.indexOf("cluster")===0){if(!ah(D,["zoom","feature-state"]))return[new er(R.key,R.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(R.expressionContext==="cluster-initial"&&!Kh(D))return[new er(R.key,R.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ju(R){let S=R.key,D=R.value,j=R.valueSpec,te=[];return Array.isArray(j.values)?j.values.indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${j.values.join(", ")}], ${JSON.stringify(D)} found`)):Object.keys(j.values).indexOf(Fs(D))===-1&&te.push(new er(S,D,`expected one of [${Object.keys(j.values).join(", ")}], ${JSON.stringify(D)} found`)),te}function Vf(R){return gd(_u(R.value))?Ic(Ke({},R,{expressionContext:"filter",valueSpec:{value:"boolean"}})):pc(R)}function pc(R){let S=R.value,D=R.key;if(ds(S)!=="array")return[new er(D,S,`array expected, ${ds(S)} found`)];let j=R.styleSpec,te,ue=[];if(S.length<1)return[new er(D,S,"filter array must have at least 1 element")];switch(ue=ue.concat(ju({key:`${D}[0]`,value:S[0],valueSpec:j.filter_operator,style:R.style,styleSpec:R.styleSpec})),Fs(S[0])){case"<":case"<=":case">":case">=":S.length>=2&&Fs(S[1])==="$type"&&ue.push(new er(D,S,`"$type" cannot be use with operator "${S[0]}"`));case"==":case"!=":S.length!==3&&ue.push(new er(D,S,`filter array for operator "${S[0]}" must have 3 elements`));case"in":case"!in":S.length>=2&&(te=ds(S[1]),te!=="string"&&ue.push(new er(`${D}[1]`,S[1],`string expected, ${te} found`)));for(let ve=2;ve{at in D&&S.push(new er(j,D[at],`"${at}" is prohibited for ref layers`))}),te.layers.forEach(at=>{Fs(at.id)===De&&(Ze=at)}),Ze?Ze.ref?S.push(new er(j,D.ref,"ref cannot reference another ref layer")):ve=Fs(Ze.type):S.push(new er(j,D.ref,`ref layer "${De}" not found`))}else if(ve!=="background")if(D.source){let Ze=te.sources&&te.sources[D.source],at=Ze&&Fs(Ze.type);Ze?at==="vector"&&ve==="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster source`)):at!=="raster-dem"&&ve==="hillshade"?S.push(new er(j,D.source,`layer "${D.id}" requires a raster-dem source`)):at==="raster"&&ve!=="raster"?S.push(new er(j,D.source,`layer "${D.id}" requires a vector source`)):at!=="vector"||D["source-layer"]?at==="raster-dem"&&ve!=="hillshade"?S.push(new er(j,D.source,"raster-dem source can only be used with layer type 'hillshade'.")):ve!=="line"||!D.paint||!D.paint["line-gradient"]||at==="geojson"&&Ze.lineMetrics||S.push(new er(j,D,`layer "${D.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):S.push(new er(j,D,`layer "${D.id}" must specify a "source-layer"`)):S.push(new er(j,D.source,`source "${D.source}" not found`))}else S.push(new er(j,D,'missing required property "source"'));return S=S.concat(xu({key:j,value:D,valueSpec:ue.layer,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,objectElementValidators:{"*":()=>[],type:()=>R.validateSpec({key:`${j}.type`,value:D.type,valueSpec:ue.layer.type,style:R.style,styleSpec:R.styleSpec,validateSpec:R.validateSpec,object:D,objectKey:"type"}),filter:Vf,layout:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Dl(Ke({layerType:ve},at))}}),paint:Ze=>xu({layer:D,key:Ze.key,value:Ze.value,style:Ze.style,styleSpec:Ze.styleSpec,validateSpec:Ze.validateSpec,objectElementValidators:{"*":at=>Ph(Ke({layerType:ve},at))}})}})),S}function Wu(R){let S=R.value,D=R.key,j=ds(S);return j!=="string"?[new er(D,S,`string expected, ${j} found`)]:[]}let Rc={promoteId:function({key:R,value:S}){if(ds(S)==="string")return Wu({key:R,value:S});{let D=[];for(let j in S)D.push(...Wu({key:`${R}.${j}`,value:S[j]}));return D}}};function gc(R){let S=R.value,D=R.key,j=R.styleSpec,te=R.style,ue=R.validateSpec;if(!S.type)return[new er(D,S,'"type" is required')];let ve=Fs(S.type),De;switch(ve){case"vector":case"raster":return De=xu({key:D,value:S,valueSpec:j[`source_${ve.replace("-","_")}`],style:R.style,styleSpec:j,objectElementValidators:Rc,validateSpec:ue}),De;case"raster-dem":return De=function(Ze){var at;let Tt=(at=Ze.sourceName)!==null&&at!==void 0?at:"",Ft=Ze.value,Qt=Ze.styleSpec,sr=Qt.source_raster_dem,Tr=Ze.style,Pr=[],$r=ds(Ft);if(Ft===void 0)return Pr;if($r!=="object")return Pr.push(new er("source_raster_dem",Ft,`object expected, ${$r} found`)),Pr;let ni=Fs(Ft.encoding)==="custom",Di=["redFactor","greenFactor","blueFactor","baseShift"],pi=Ze.value.encoding?`"${Ze.value.encoding}"`:"Default";for(let ki in Ft)!ni&&Di.includes(ki)?Pr.push(new er(ki,Ft[ki],`In "${Tt}": "${ki}" is only valid when "encoding" is set to "custom". ${pi} encoding found`)):sr[ki]?Pr=Pr.concat(Ze.validateSpec({key:ki,value:Ft[ki],valueSpec:sr[ki],validateSpec:Ze.validateSpec,style:Tr,styleSpec:Qt})):Pr.push(new er(ki,Ft[ki],`unknown property "${ki}"`));return Pr}({sourceName:D,value:S,style:R.style,styleSpec:j,validateSpec:ue}),De;case"geojson":if(De=xu({key:D,value:S,valueSpec:j.source_geojson,style:te,styleSpec:j,validateSpec:ue,objectElementValidators:Rc}),S.cluster)for(let Ze in S.clusterProperties){let[at,Tt]=S.clusterProperties[Ze],Ft=typeof at=="string"?[at,["accumulated"],["get",Ze]]:at;De.push(...Ic({key:`${D}.${Ze}.map`,value:Tt,validateSpec:ue,expressionContext:"cluster-map"})),De.push(...Ic({key:`${D}.${Ze}.reduce`,value:Ft,validateSpec:ue,expressionContext:"cluster-reduce"}))}return De;case"video":return xu({key:D,value:S,valueSpec:j.source_video,style:te,validateSpec:ue,styleSpec:j});case"image":return xu({key:D,value:S,valueSpec:j.source_image,style:te,validateSpec:ue,styleSpec:j});case"canvas":return[new er(D,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return ju({key:`${D}.type`,value:S.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:te,validateSpec:ue,styleSpec:j})}}function hl(R){let S=R.value,D=R.styleSpec,j=D.light,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("light",S,`object expected, ${ve} found`)]),ue;for(let De in S){let Ze=De.match(/^(.*)-transition$/);ue=ue.concat(Ze&&j[Ze[1]]&&j[Ze[1]].transition?R.validateSpec({key:De,value:S[De],valueSpec:D.transition,validateSpec:R.validateSpec,style:te,styleSpec:D}):j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)])}return ue}function iu(R){let S=R.value,D=R.styleSpec,j=D.sky,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("sky",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve}function mc(R){let S=R.value,D=R.styleSpec,j=D.terrain,te=R.style,ue=[],ve=ds(S);if(S===void 0)return ue;if(ve!=="object")return ue=ue.concat([new er("terrain",S,`object expected, ${ve} found`)]),ue;for(let De in S)ue=ue.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],validateSpec:R.validateSpec,style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ue}function Yc(R){let S=[],D=R.value,j=R.key;if(Array.isArray(D)){let te=[],ue=[];for(let ve in D)D[ve].id&&te.includes(D[ve].id)&&S.push(new er(j,D,`all the sprites' ids must be unique, but ${D[ve].id} is duplicated`)),te.push(D[ve].id),D[ve].url&&ue.includes(D[ve].url)&&S.push(new er(j,D,`all the sprites' URLs must be unique, but ${D[ve].url} is duplicated`)),ue.push(D[ve].url),S=S.concat(xu({key:`${j}[${ve}]`,value:D[ve],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:R.validateSpec}));return S}return Wu({key:j,value:D})}let nc={"*":()=>[],array:Lh,boolean:function(R){let S=R.value,D=R.key,j=ds(S);return j!=="boolean"?[new er(D,S,`boolean expected, ${j} found`)]:[]},number:Is,color:function(R){let S=R.key,D=R.value,j=ds(D);return j!=="string"?[new er(S,D,`color expected, ${j} found`)]:Zt.parse(String(D))?[]:[new er(S,D,`color expected, "${D}" found`)]},constants:sh,enum:ju,filter:Vf,function:Pf,layer:Ih,object:xu,source:gc,light:hl,sky:iu,terrain:mc,projection:function(R){let S=R.value,D=R.styleSpec,j=D.projection,te=R.style,ue=ds(S);if(S===void 0)return[];if(ue!=="object")return[new er("projection",S,`object expected, ${ue} found`)];let ve=[];for(let De in S)ve=ve.concat(j[De]?R.validateSpec({key:De,value:S[De],valueSpec:j[De],style:te,styleSpec:D}):[new er(De,S[De],`unknown property "${De}"`)]);return ve},string:Wu,formatted:function(R){return Wu(R).length===0?[]:Ic(R)},resolvedImage:function(R){return Wu(R).length===0?[]:Ic(R)},padding:function(R){let S=R.key,D=R.value;if(ds(D)==="array"){if(D.length<1||D.length>4)return[new er(S,D,`padding requires 1 to 4 values; ${D.length} values found`)];let j={type:"number"},te=[];for(let ue=0;ue[]}})),R.constants&&(D=D.concat(sh({key:"constants",value:R.constants,style:R,styleSpec:S,validateSpec:gf}))),vr(D)}function wr(R){return function(S){return R($Q(JQ({},S),{validateSpec:gf}))}}function vr(R){return[].concat(R).sort((S,D)=>S.line-D.line)}function Ur(R){return function(...S){return vr(R.apply(this,S))}}Bt.source=Ur(wr(gc)),Bt.sprite=Ur(wr(Yc)),Bt.glyphs=Ur(wr(gt)),Bt.light=Ur(wr(hl)),Bt.sky=Ur(wr(iu)),Bt.terrain=Ur(wr(mc)),Bt.layer=Ur(wr(Ih)),Bt.filter=Ur(wr(Vf)),Bt.paintProperty=Ur(wr(Ph)),Bt.layoutProperty=Ur(wr(Dl));let fi=Bt,xi=fi.light,Fi=fi.sky,Xi=fi.paintProperty,hn=fi.layoutProperty;function Ti(R,S){let D=!1;if(S&&S.length)for(let j of S)R.fire(new me(new Error(j.message))),D=!0;return D}class qi{constructor(S,D,j){let te=this.cells=[];if(S instanceof ArrayBuffer){this.arrayBuffer=S;let ve=new Int32Array(this.arrayBuffer);S=ve[0],this.d=(D=ve[1])+2*(j=ve[2]);for(let Ze=0;Ze=Ft[Tr+0]&&te>=Ft[Tr+1])?(De[sr]=!0,ve.push(Tt[sr])):De[sr]=!1}}}}_forEachCell(S,D,j,te,ue,ve,De,Ze){let at=this._convertToCellCoord(S),Tt=this._convertToCellCoord(D),Ft=this._convertToCellCoord(j),Qt=this._convertToCellCoord(te);for(let sr=at;sr<=Ft;sr++)for(let Tr=Tt;Tr<=Qt;Tr++){let Pr=this.d*Tr+sr;if((!Ze||Ze(this._convertFromCellCoord(sr),this._convertFromCellCoord(Tr),this._convertFromCellCoord(sr+1),this._convertFromCellCoord(Tr+1)))&&ue.call(this,S,D,j,te,Pr,ve,De,Ze))return}}_convertFromCellCoord(S){return(S-this.padding)/this.scale}_convertToCellCoord(S){return Math.max(0,Math.min(this.d-1,Math.floor(S*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let S=this.cells,D=3+this.cells.length+1+1,j=0;for(let ve=0;ve=0)continue;let ve=R[ue];te[ue]=Ii[D].shallow.indexOf(ue)>=0?ve:Ea(ve,S)}R instanceof Error&&(te.message=R.message)}if(te.$name)throw new Error("$name property is reserved for worker serialization logic.");return D!=="Object"&&(te.$name=D),te}function qa(R){if(Ta(R))return R;if(Array.isArray(R))return R.map(qa);if(typeof R!="object")throw new Error("can't deserialize object of type "+typeof R);let S=Ma(R)||"Object";if(!Ii[S])throw new Error(`can't deserialize unregistered class ${S}`);let{klass:D}=Ii[S];if(!D)throw new Error(`can't deserialize unregistered class ${S}`);if(D.deserialize)return D.deserialize(R);let j=Object.create(D.prototype);for(let te of Object.keys(R)){if(te==="$name")continue;let ue=R[te];j[te]=Ii[S].shallow.indexOf(te)>=0?ue:qa(ue)}return j}class Cn{constructor(){this.first=!0}update(S,D){let j=Math.floor(S);return this.first?(this.first=!1,this.lastIntegerZoom=j,this.lastIntegerZoomTime=0,this.lastZoom=S,this.lastFloorZoom=j,!0):(this.lastFloorZoom>j?(this.lastIntegerZoom=j+1,this.lastIntegerZoomTime=D):this.lastFloorZoomR>=128&&R<=255,"Hangul Jamo":R=>R>=4352&&R<=4607,Khmer:R=>R>=6016&&R<=6143,"General Punctuation":R=>R>=8192&&R<=8303,"Letterlike Symbols":R=>R>=8448&&R<=8527,"Number Forms":R=>R>=8528&&R<=8591,"Miscellaneous Technical":R=>R>=8960&&R<=9215,"Control Pictures":R=>R>=9216&&R<=9279,"Optical Character Recognition":R=>R>=9280&&R<=9311,"Enclosed Alphanumerics":R=>R>=9312&&R<=9471,"Geometric Shapes":R=>R>=9632&&R<=9727,"Miscellaneous Symbols":R=>R>=9728&&R<=9983,"Miscellaneous Symbols and Arrows":R=>R>=11008&&R<=11263,"Ideographic Description Characters":R=>R>=12272&&R<=12287,"CJK Symbols and Punctuation":R=>R>=12288&&R<=12351,Katakana:R=>R>=12448&&R<=12543,Kanbun:R=>R>=12688&&R<=12703,"CJK Strokes":R=>R>=12736&&R<=12783,"Enclosed CJK Letters and Months":R=>R>=12800&&R<=13055,"CJK Compatibility":R=>R>=13056&&R<=13311,"Yijing Hexagram Symbols":R=>R>=19904&&R<=19967,"Private Use Area":R=>R>=57344&&R<=63743,"Vertical Forms":R=>R>=65040&&R<=65055,"CJK Compatibility Forms":R=>R>=65072&&R<=65103,"Small Form Variants":R=>R>=65104&&R<=65135,"Halfwidth and Fullwidth Forms":R=>R>=65280&&R<=65519};function Ua(R){for(let S of R)if(Bo(S.charCodeAt(0)))return!0;return!1}function mo(R){for(let S of R)if(!Qo(S.charCodeAt(0)))return!1;return!0}function Xo(R){let S=R.map(D=>{try{return new RegExp(`\\p{sc=${D}}`,"u").source}catch(j){return null}}).filter(D=>D);return new RegExp(S.join("|"),"u")}let Ts=Xo(["Arab","Dupl","Mong","Ougr","Syrc"]);function Qo(R){return!Ts.test(String.fromCodePoint(R))}let ys=Xo(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function Bo(R){return!(R!==746&&R!==747&&(R<4352||!(sn["CJK Compatibility Forms"](R)&&!(R>=65097&&R<=65103)||sn["CJK Compatibility"](R)||sn["CJK Strokes"](R)||!(!sn["CJK Symbols and Punctuation"](R)||R>=12296&&R<=12305||R>=12308&&R<=12319||R===12336)||sn["Enclosed CJK Letters and Months"](R)||sn["Ideographic Description Characters"](R)||sn.Kanbun(R)||sn.Katakana(R)&&R!==12540||!(!sn["Halfwidth and Fullwidth Forms"](R)||R===65288||R===65289||R===65293||R>=65306&&R<=65310||R===65339||R===65341||R===65343||R>=65371&&R<=65503||R===65507||R>=65512&&R<=65519)||!(!sn["Small Form Variants"](R)||R>=65112&&R<=65118||R>=65123&&R<=65126)||sn["Vertical Forms"](R)||sn["Yijing Hexagram Symbols"](R)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(R))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(R))||ys.test(String.fromCodePoint(R)))))}function yl(R){return!(Bo(R)||function(S){return!!(sn["Latin-1 Supplement"](S)&&(S===167||S===169||S===174||S===177||S===188||S===189||S===190||S===215||S===247)||sn["General Punctuation"](S)&&(S===8214||S===8224||S===8225||S===8240||S===8241||S===8251||S===8252||S===8258||S===8263||S===8264||S===8265||S===8273)||sn["Letterlike Symbols"](S)||sn["Number Forms"](S)||sn["Miscellaneous Technical"](S)&&(S>=8960&&S<=8967||S>=8972&&S<=8991||S>=8996&&S<=9e3||S===9003||S>=9085&&S<=9114||S>=9150&&S<=9165||S===9167||S>=9169&&S<=9179||S>=9186&&S<=9215)||sn["Control Pictures"](S)&&S!==9251||sn["Optical Character Recognition"](S)||sn["Enclosed Alphanumerics"](S)||sn["Geometric Shapes"](S)||sn["Miscellaneous Symbols"](S)&&!(S>=9754&&S<=9759)||sn["Miscellaneous Symbols and Arrows"](S)&&(S>=11026&&S<=11055||S>=11088&&S<=11097||S>=11192&&S<=11243)||sn["CJK Symbols and Punctuation"](S)||sn.Katakana(S)||sn["Private Use Area"](S)||sn["CJK Compatibility Forms"](S)||sn["Small Form Variants"](S)||sn["Halfwidth and Fullwidth Forms"](S)||S===8734||S===8756||S===8757||S>=9984&&S<=10087||S>=10102&&S<=10131||S===65532||S===65533)}(R))}let Gs=Xo(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function Rs(R){return Gs.test(String.fromCodePoint(R))}function ia(R,S){return!(!S&&Rs(R)||R>=2304&&R<=3583||R>=3840&&R<=4255||sn.Khmer(R))}function Ka(R){for(let S of R)if(Rs(S.charCodeAt(0)))return!0;return!1}let vs=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(R){this.pluginStatus=R.pluginStatus,this.pluginURL=R.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(R){this.applyArabicShaping=R.applyArabicShaping,this.processBidirectionalText=R.processBidirectionalText,this.processStyledBidirectionalText=R.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class Ko{constructor(S,D){this.zoom=S,D?(this.now=D.now,this.fadeDuration=D.fadeDuration,this.zoomHistory=D.zoomHistory,this.transition=D.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Cn,this.transition={})}isSupportedScript(S){return function(D,j){for(let te of D)if(!ia(te.charCodeAt(0),j))return!1;return!0}(S,vs.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let S=this.zoom,D=S-Math.floor(S),j=this.crossFadingFactor();return S>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:D+(1-D)*j}:{fromScale:.5,toScale:1,t:1-(1-j)*D}}}class nu{constructor(S,D){this.property=S,this.value=D,this.expression=function(j,te){if(Ch(j))return new Qs(j,te);if(Lc(j)){let ue=yu(j,te);if(ue.result==="error")throw new Error(ue.value.map(ve=>`${ve.key}: ${ve.message}`).join(", "));return ue.value}{let ue=j;return te.type==="color"&&typeof j=="string"?ue=Zt.parse(j):te.type!=="padding"||typeof j!="number"&&!Array.isArray(j)?te.type==="variableAnchorOffsetCollection"&&Array.isArray(j)&&(ue=Si.parse(j)):ue=Vr.parse(j),{kind:"constant",evaluate:()=>ue}}}(D===void 0?S.specification.default:D,S.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(S,D,j){return this.property.possiblyEvaluate(this,S,D,j)}}class Ru{constructor(S){this.property=S,this.value=new nu(S,void 0)}transitioned(S,D){return new mf(this.property,this.value,D,L({},S.transition,this.transition),S.now)}untransitioned(){return new mf(this.property,this.value,null,{},0)}}class ac{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitionablePropertyValues)}getValue(S){return g(this._values[S].value.value)}setValue(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].value=new nu(this._values[S].property,D===null?void 0:g(D))}getTransition(S){return g(this._values[S].transition)}setTransition(S,D){Object.prototype.hasOwnProperty.call(this._values,S)||(this._values[S]=new Ru(this._values[S].property)),this._values[S].transition=g(D)||void 0}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j);let te=this.getTransition(D);te!==void 0&&(S[`${D}-transition`]=te)}return S}transitioned(S,D){let j=new bu(this._properties);for(let te of Object.keys(this._values))j._values[te]=this._values[te].transitioned(S,D._values[te]);return j}untransitioned(){let S=new bu(this._properties);for(let D of Object.keys(this._values))S._values[D]=this._values[D].untransitioned();return S}}class mf{constructor(S,D,j,te,ue){this.property=S,this.value=D,this.begin=ue+te.delay||0,this.end=this.begin+te.duration||0,S.specification.transition&&(te.delay||te.duration)&&(this.prior=j)}possiblyEvaluate(S,D,j){let te=S.now||0,ue=this.value.possiblyEvaluate(S,D,j),ve=this.prior;if(ve){if(te>this.end)return this.prior=null,ue;if(this.value.isDataDriven())return this.prior=null,ue;if(te=1)return 1;let at=Ze*Ze,Tt=at*Ze;return 4*(Ze<.5?Tt:3*(Ze-at)+Tt-.75)}(De))}}return ue}}class bu{constructor(S){this._properties=S,this._values=Object.create(S.defaultTransitioningPropertyValues)}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}hasTransition(){for(let S of Object.keys(this._values))if(this._values[S].prior)return!0;return!1}}class Kc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPropertyValues)}hasValue(S){return this._values[S].value!==void 0}getValue(S){return g(this._values[S].value)}setValue(S,D){this._values[S]=new nu(this._values[S].property,D===null?void 0:g(D))}serialize(){let S={};for(let D of Object.keys(this._values)){let j=this.getValue(D);j!==void 0&&(S[D]=j)}return S}possiblyEvaluate(S,D,j){let te=new Dc(this._properties);for(let ue of Object.keys(this._values))te._values[ue]=this._values[ue].possiblyEvaluate(S,D,j);return te}}class Du{constructor(S,D,j){this.property=S,this.value=D,this.parameters=j}isConstant(){return this.value.kind==="constant"}constantOr(S){return this.value.kind==="constant"?this.value.value:S}evaluate(S,D,j,te){return this.property.evaluate(this.value,this.parameters,S,D,j,te)}}class Dc{constructor(S){this._properties=S,this._values=Object.create(S.defaultPossiblyEvaluatedValues)}get(S){return this._values[S]}}class Da{constructor(S){this.specification=S}possiblyEvaluate(S,D){if(S.isDataDriven())throw new Error("Value should not be data driven");return S.expression.evaluate(D)}interpolate(S,D,j){let te=Mo[this.specification.type];return te?te(S,D,j):S}}class eo{constructor(S,D){this.specification=S,this.overrides=D}possiblyEvaluate(S,D,j,te){return new Du(this,S.expression.kind==="constant"||S.expression.kind==="camera"?{kind:"constant",value:S.expression.evaluate(D,null,{},j,te)}:S.expression,D)}interpolate(S,D,j){if(S.value.kind!=="constant"||D.value.kind!=="constant")return S;if(S.value.value===void 0||D.value.value===void 0)return new Du(this,{kind:"constant",value:void 0},S.parameters);let te=Mo[this.specification.type];if(te){let ue=te(S.value.value,D.value.value,j);return new Du(this,{kind:"constant",value:ue},S.parameters)}return S}evaluate(S,D,j,te,ue,ve){return S.kind==="constant"?S.value:S.evaluate(D,j,te,ue,ve)}}class Jc extends eo{possiblyEvaluate(S,D,j,te){if(S.value===void 0)return new Du(this,{kind:"constant",value:void 0},D);if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te),ve=S.property.specification.type==="resolvedImage"&&typeof ue!="string"?ue.name:ue,De=this._calculate(ve,ve,ve,D);return new Du(this,{kind:"constant",value:De},D)}if(S.expression.kind==="camera"){let ue=this._calculate(S.expression.evaluate({zoom:D.zoom-1}),S.expression.evaluate({zoom:D.zoom}),S.expression.evaluate({zoom:D.zoom+1}),D);return new Du(this,{kind:"constant",value:ue},D)}return new Du(this,S.expression,D)}evaluate(S,D,j,te,ue,ve){if(S.kind==="source"){let De=S.evaluate(D,j,te,ue,ve);return this._calculate(De,De,De,D)}return S.kind==="composite"?this._calculate(S.evaluate({zoom:Math.floor(D.zoom)-1},j,te),S.evaluate({zoom:Math.floor(D.zoom)},j,te),S.evaluate({zoom:Math.floor(D.zoom)+1},j,te),D):S.value}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class yc{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){if(S.value!==void 0){if(S.expression.kind==="constant"){let ue=S.expression.evaluate(D,null,{},j,te);return this._calculate(ue,ue,ue,D)}return this._calculate(S.expression.evaluate(new Ko(Math.floor(D.zoom-1),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom),D)),S.expression.evaluate(new Ko(Math.floor(D.zoom+1),D)),D)}}_calculate(S,D,j,te){return te.zoom>te.zoomHistory.lastIntegerZoom?{from:S,to:D}:{from:j,to:D}}interpolate(S){return S}}class _c{constructor(S){this.specification=S}possiblyEvaluate(S,D,j,te){return!!S.expression.evaluate(D,null,{},j,te)}interpolate(){return!1}}class le{constructor(S){this.properties=S,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let D in S){let j=S[D];j.specification.overridable&&this.overridableProperties.push(D);let te=this.defaultPropertyValues[D]=new nu(j,void 0),ue=this.defaultTransitionablePropertyValues[D]=new Ru(j);this.defaultTransitioningPropertyValues[D]=ue.untransitioned(),this.defaultPossiblyEvaluatedValues[D]=te.possiblyEvaluate({})}}}mi("DataDrivenProperty",eo),mi("DataConstantProperty",Da),mi("CrossFadedDataDrivenProperty",Jc),mi("CrossFadedProperty",yc),mi("ColorRampProperty",_c);let w="-transition";class B extends Re{constructor(S,D){if(super(),this.id=S.id,this.type=S.type,this._featureFilter={filter:()=>!0,needGeometry:!1},S.type!=="custom"&&(this.metadata=S.metadata,this.minzoom=S.minzoom,this.maxzoom=S.maxzoom,S.type!=="background"&&(this.source=S.source,this.sourceLayer=S["source-layer"],this.filter=S.filter),D.layout&&(this._unevaluatedLayout=new Kc(D.layout)),D.paint)){this._transitionablePaint=new ac(D.paint);for(let j in S.paint)this.setPaintProperty(j,S.paint[j],{validate:!1});for(let j in S.layout)this.setLayoutProperty(j,S.layout[j],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Dc(D.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(S){return S==="visibility"?this.visibility:this._unevaluatedLayout.getValue(S)}setLayoutProperty(S,D,j={}){D!=null&&this._validate(hn,`layers.${this.id}.layout.${S}`,S,D,j)||(S!=="visibility"?this._unevaluatedLayout.setValue(S,D):this.visibility=D)}getPaintProperty(S){return S.endsWith(w)?this._transitionablePaint.getTransition(S.slice(0,-11)):this._transitionablePaint.getValue(S)}setPaintProperty(S,D,j={}){if(D!=null&&this._validate(Xi,`layers.${this.id}.paint.${S}`,S,D,j))return!1;if(S.endsWith(w))return this._transitionablePaint.setTransition(S.slice(0,-11),D||void 0),!1;{let te=this._transitionablePaint._values[S],ue=te.property.specification["property-type"]==="cross-faded-data-driven",ve=te.value.isDataDriven(),De=te.value;this._transitionablePaint.setValue(S,D),this._handleSpecialPaintPropertyUpdate(S);let Ze=this._transitionablePaint._values[S].value;return Ze.isDataDriven()||ve||ue||this._handleOverridablePaintPropertyUpdate(S,De,Ze)}}_handleSpecialPaintPropertyUpdate(S){}_handleOverridablePaintPropertyUpdate(S,D,j){return!1}isHidden(S){return!!(this.minzoom&&S=this.maxzoom)||this.visibility==="none"}updateTransitions(S){this._transitioningPaint=this._transitionablePaint.transitioned(S,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(S,D){S.getCrossfadeParameters&&(this._crossfadeParameters=S.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(S,void 0,D)),this.paint=this._transitioningPaint.possiblyEvaluate(S,void 0,D)}serialize(){let S={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(S.layout=S.layout||{},S.layout.visibility=this.visibility),M(S,(D,j)=>!(D===void 0||j==="layout"&&!Object.keys(D).length||j==="paint"&&!Object.keys(D).length))}_validate(S,D,j,te,ue={}){return(!ue||ue.validate!==!1)&&Ti(this,S.call(fi,{key:D,layerType:this.type,objectKey:j,value:te,styleSpec:ce,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let S in this.paint._values){let D=this.paint.get(S);if(D instanceof Du&&Cu(D.property.specification)&&(D.value.kind==="source"||D.value.kind==="composite")&&D.value.isStateDependent)return!0}return!1}}let Q={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class ee{constructor(S,D){this._structArray=S,this._pos1=D*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class se{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(S,D){return S._trim(),D&&(S.isTransferred=!0,D.push(S.arrayBuffer)),{length:S.length,arrayBuffer:S.arrayBuffer}}static deserialize(S){let D=Object.create(this.prototype);return D.arrayBuffer=S.arrayBuffer,D.length=S.length,D.capacity=S.arrayBuffer.byteLength/D.bytesPerElement,D._refreshViews(),D}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(S){this.reserve(S),this.length=S}reserve(S){if(S>this.capacity){this.capacity=Math.max(S,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let D=this.uint8;this._refreshViews(),D&&this.uint8.set(D)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function qe(R,S=1){let D=0,j=0;return{members:R.map(te=>{let ue=Q[te.type].BYTES_PER_ELEMENT,ve=D=je(D,Math.max(S,ue)),De=te.components||1;return j=Math.max(j,ue),D+=ue*De,{name:te.name,type:te.type,components:De,offset:ve}}),size:je(D,Math.max(j,S)),alignment:S}}function je(R,S){return Math.ceil(R/S)*S}class it extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.int16[te+0]=D,this.int16[te+1]=j,S}}it.prototype.bytesPerElement=4,mi("StructArrayLayout2i4",it);class yt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.int16[ue+0]=D,this.int16[ue+1]=j,this.int16[ue+2]=te,S}}yt.prototype.bytesPerElement=6,mi("StructArrayLayout3i6",yt);class Ot extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.int16[ve+0]=D,this.int16[ve+1]=j,this.int16[ve+2]=te,this.int16[ve+3]=ue,S}}Ot.prototype.bytesPerElement=8,mi("StructArrayLayout4i8",Ot);class Nt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}Nt.prototype.bytesPerElement=12,mi("StructArrayLayout2i4i12",Nt);class hr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=4*S,at=8*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.uint8[at+4]=te,this.uint8[at+5]=ue,this.uint8[at+6]=ve,this.uint8[at+7]=De,S}}hr.prototype.bytesPerElement=8,mi("StructArrayLayout2i4ub8",hr);class Sr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.float32[te+0]=D,this.float32[te+1]=j,S}}Sr.prototype.bytesPerElement=8,mi("StructArrayLayout2f8",Sr);class he extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=this.length;return this.resize(Ft+1),this.emplace(Ft,S,D,j,te,ue,ve,De,Ze,at,Tt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=10*S;return this.uint16[Qt+0]=D,this.uint16[Qt+1]=j,this.uint16[Qt+2]=te,this.uint16[Qt+3]=ue,this.uint16[Qt+4]=ve,this.uint16[Qt+5]=De,this.uint16[Qt+6]=Ze,this.uint16[Qt+7]=at,this.uint16[Qt+8]=Tt,this.uint16[Qt+9]=Ft,S}}he.prototype.bytesPerElement=20,mi("StructArrayLayout10ui20",he);class be extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt){let sr=this.length;return this.resize(sr+1),this.emplace(sr,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr){let Tr=12*S;return this.int16[Tr+0]=D,this.int16[Tr+1]=j,this.int16[Tr+2]=te,this.int16[Tr+3]=ue,this.uint16[Tr+4]=ve,this.uint16[Tr+5]=De,this.uint16[Tr+6]=Ze,this.uint16[Tr+7]=at,this.int16[Tr+8]=Tt,this.int16[Tr+9]=Ft,this.int16[Tr+10]=Qt,this.int16[Tr+11]=sr,S}}be.prototype.bytesPerElement=24,mi("StructArrayLayout4i4ui4i24",be);class Pe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.float32[ue+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Pe.prototype.bytesPerElement=12,mi("StructArrayLayout3f12",Pe);class Oe extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint32[1*S+0]=D,S}}Oe.prototype.bytesPerElement=4,mi("StructArrayLayout1ul4",Oe);class Je extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at){let Tt=this.length;return this.resize(Tt+1),this.emplace(Tt,S,D,j,te,ue,ve,De,Ze,at)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=10*S,Qt=5*S;return this.int16[Ft+0]=D,this.int16[Ft+1]=j,this.int16[Ft+2]=te,this.int16[Ft+3]=ue,this.int16[Ft+4]=ve,this.int16[Ft+5]=De,this.uint32[Qt+3]=Ze,this.uint16[Ft+8]=at,this.uint16[Ft+9]=Tt,S}}Je.prototype.bytesPerElement=20,mi("StructArrayLayout6i1ul2ui20",Je);class He extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=6*S;return this.int16[Ze+0]=D,this.int16[Ze+1]=j,this.int16[Ze+2]=te,this.int16[Ze+3]=ue,this.int16[Ze+4]=ve,this.int16[Ze+5]=De,S}}He.prototype.bytesPerElement=12,mi("StructArrayLayout2i2i2i12",He);class et extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue){let ve=this.length;return this.resize(ve+1),this.emplace(ve,S,D,j,te,ue)}emplace(S,D,j,te,ue,ve){let De=4*S,Ze=8*S;return this.float32[De+0]=D,this.float32[De+1]=j,this.float32[De+2]=te,this.int16[Ze+6]=ue,this.int16[Ze+7]=ve,S}}et.prototype.bytesPerElement=16,mi("StructArrayLayout2f1f2i16",et);class Mt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve){let De=this.length;return this.resize(De+1),this.emplace(De,S,D,j,te,ue,ve)}emplace(S,D,j,te,ue,ve,De){let Ze=16*S,at=4*S,Tt=8*S;return this.uint8[Ze+0]=D,this.uint8[Ze+1]=j,this.float32[at+1]=te,this.float32[at+2]=ue,this.int16[Tt+6]=ve,this.int16[Tt+7]=De,S}}Mt.prototype.bytesPerElement=16,mi("StructArrayLayout2ub2f2i16",Mt);class Dt extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[ue+0]=D,this.uint16[ue+1]=j,this.uint16[ue+2]=te,S}}Dt.prototype.bytesPerElement=6,mi("StructArrayLayout3ui6",Dt);class Ut extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni){let Di=this.length;return this.resize(Di+1),this.emplace(Di,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di){let pi=24*S,ki=12*S,Zi=48*S;return this.int16[pi+0]=D,this.int16[pi+1]=j,this.uint16[pi+2]=te,this.uint16[pi+3]=ue,this.uint32[ki+2]=ve,this.uint32[ki+3]=De,this.uint32[ki+4]=Ze,this.uint16[pi+10]=at,this.uint16[pi+11]=Tt,this.uint16[pi+12]=Ft,this.float32[ki+7]=Qt,this.float32[ki+8]=sr,this.uint8[Zi+36]=Tr,this.uint8[Zi+37]=Pr,this.uint8[Zi+38]=$r,this.uint32[ki+10]=ni,this.int16[pi+22]=Di,S}}Ut.prototype.bytesPerElement=48,mi("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Ut);class tr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a){let Xa=this.length;return this.resize(Xa+1),this.emplace(Xa,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a)}emplace(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr,$r,ni,Di,pi,ki,Zi,ta,Va,Io,La,Hn,lo,$a,Xa){let Tn=32*S,bo=16*S;return this.int16[Tn+0]=D,this.int16[Tn+1]=j,this.int16[Tn+2]=te,this.int16[Tn+3]=ue,this.int16[Tn+4]=ve,this.int16[Tn+5]=De,this.int16[Tn+6]=Ze,this.int16[Tn+7]=at,this.uint16[Tn+8]=Tt,this.uint16[Tn+9]=Ft,this.uint16[Tn+10]=Qt,this.uint16[Tn+11]=sr,this.uint16[Tn+12]=Tr,this.uint16[Tn+13]=Pr,this.uint16[Tn+14]=$r,this.uint16[Tn+15]=ni,this.uint16[Tn+16]=Di,this.uint16[Tn+17]=pi,this.uint16[Tn+18]=ki,this.uint16[Tn+19]=Zi,this.uint16[Tn+20]=ta,this.uint16[Tn+21]=Va,this.uint16[Tn+22]=Io,this.uint32[bo+12]=La,this.float32[bo+13]=Hn,this.float32[bo+14]=lo,this.uint16[Tn+30]=$a,this.uint16[Tn+31]=Xa,S}}tr.prototype.bytesPerElement=64,mi("StructArrayLayout8i15ui1ul2f2ui64",tr);class mr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.float32[1*S+0]=D,S}}mr.prototype.bytesPerElement=4,mi("StructArrayLayout1f4",mr);class Rr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=3*S;return this.uint16[6*S+0]=D,this.float32[ue+1]=j,this.float32[ue+2]=te,S}}Rr.prototype.bytesPerElement=12,mi("StructArrayLayout1ui2f12",Rr);class zr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D,j){let te=this.length;return this.resize(te+1),this.emplace(te,S,D,j)}emplace(S,D,j,te){let ue=4*S;return this.uint32[2*S+0]=D,this.uint16[ue+2]=j,this.uint16[ue+3]=te,S}}zr.prototype.bytesPerElement=8,mi("StructArrayLayout1ul2ui8",zr);class Xr extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S,D){let j=this.length;return this.resize(j+1),this.emplace(j,S,D)}emplace(S,D,j){let te=2*S;return this.uint16[te+0]=D,this.uint16[te+1]=j,S}}Xr.prototype.bytesPerElement=4,mi("StructArrayLayout2ui4",Xr);class di extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(S){let D=this.length;return this.resize(D+1),this.emplace(D,S)}emplace(S,D){return this.uint16[1*S+0]=D,S}}di.prototype.bytesPerElement=2,mi("StructArrayLayout1ui2",di);class Li extends se{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(S,D,j,te){let ue=this.length;return this.resize(ue+1),this.emplace(ue,S,D,j,te)}emplace(S,D,j,te,ue){let ve=4*S;return this.float32[ve+0]=D,this.float32[ve+1]=j,this.float32[ve+2]=te,this.float32[ve+3]=ue,S}}Li.prototype.bytesPerElement=16,mi("StructArrayLayout4f16",Li);class Ci extends ee{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new u(this.anchorPointX,this.anchorPointY)}}Ci.prototype.size=20;class Qi extends Je{get(S){return new Ci(this,S)}}mi("CollisionBoxArray",Qi);class Mn extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(S){this._structArray.uint8[this._pos1+37]=S}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(S){this._structArray.uint8[this._pos1+38]=S}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(S){this._structArray.uint32[this._pos4+10]=S}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}Mn.prototype.size=48;class pa extends Ut{get(S){return new Mn(this,S)}}mi("PlacedSymbolArray",pa);class ea extends ee{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(S){this._structArray.uint32[this._pos4+12]=S}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}ea.prototype.size=64;class Ga extends tr{get(S){return new ea(this,S)}}mi("SymbolInstanceArray",Ga);class To extends mr{getoffsetX(S){return this.float32[1*S+0]}}mi("GlyphOffsetArray",To);class Wa extends yt{getx(S){return this.int16[3*S+0]}gety(S){return this.int16[3*S+1]}gettileUnitDistanceFromAnchor(S){return this.int16[3*S+2]}}mi("SymbolLineVertexArray",Wa);class co extends ee{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}co.prototype.size=12;class Ro extends Rr{get(S){return new co(this,S)}}mi("TextAnchorOffsetArray",Ro);class Ds extends ee{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}Ds.prototype.size=8;class As extends zr{get(S){return new Ds(this,S)}}mi("FeatureIndexArray",As);class yo extends it{}class po extends it{}class _l extends it{}class Hl extends Nt{}class Zu extends hr{}class cu extends Sr{}class el extends he{}class au extends be{}class zc extends Pe{}class zl extends Oe{}class Fl extends He{}class Z extends Mt{}class oe extends Dt{}class we extends Xr{}let Be=qe([{name:"a_pos",components:2,type:"Int16"}],4),{members:Ue}=Be;class We{constructor(S=[]){this.segments=S}prepareSegment(S,D,j,te){let ue=this.segments[this.segments.length-1];return S>We.MAX_VERTEX_ARRAY_LENGTH&&T(`Max vertices per segment is ${We.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${S}`),(!ue||ue.vertexLength+S>We.MAX_VERTEX_ARRAY_LENGTH||ue.sortKey!==te)&&(ue={vertexOffset:D.length,primitiveOffset:j.length,vertexLength:0,primitiveLength:0},te!==void 0&&(ue.sortKey=te),this.segments.push(ue)),ue}get(){return this.segments}destroy(){for(let S of this.segments)for(let D in S.vaos)S.vaos[D].destroy()}static simpleSegment(S,D,j,te){return new We([{vertexOffset:S,primitiveOffset:D,vertexLength:j,primitiveLength:te,vaos:{},sortKey:0}])}}function wt(R,S){return 256*(R=k(Math.floor(R),0,255))+k(Math.floor(S),0,255)}We.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,mi("SegmentVector",We);let tt=qe([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var zt={exports:{}},or={exports:{}};or.exports=function(R,S){var D,j,te,ue,ve,De,Ze,at;for(j=R.length-(D=3&R.length),te=S,ve=3432918353,De=461845907,at=0;at>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295)<<13|te>>>19))+((5*(te>>>16)&65535)<<16)&4294967295))+((58964+(ue>>>16)&65535)<<16);switch(Ze=0,D){case 3:Ze^=(255&R.charCodeAt(at+2))<<16;case 2:Ze^=(255&R.charCodeAt(at+1))<<8;case 1:te^=Ze=(65535&(Ze=(Ze=(65535&(Ze^=255&R.charCodeAt(at)))*ve+(((Ze>>>16)*ve&65535)<<16)&4294967295)<<15|Ze>>>17))*De+(((Ze>>>16)*De&65535)<<16)&4294967295}return te^=R.length,te=2246822507*(65535&(te^=te>>>16))+((2246822507*(te>>>16)&65535)<<16)&4294967295,te=3266489909*(65535&(te^=te>>>13))+((3266489909*(te>>>16)&65535)<<16)&4294967295,(te^=te>>>16)>>>0};var lr=or.exports,Dr={exports:{}};Dr.exports=function(R,S){for(var D,j=R.length,te=S^j,ue=0;j>=4;)D=1540483477*(65535&(D=255&R.charCodeAt(ue)|(255&R.charCodeAt(++ue))<<8|(255&R.charCodeAt(++ue))<<16|(255&R.charCodeAt(++ue))<<24))+((1540483477*(D>>>16)&65535)<<16),te=1540483477*(65535&te)+((1540483477*(te>>>16)&65535)<<16)^(D=1540483477*(65535&(D^=D>>>24))+((1540483477*(D>>>16)&65535)<<16)),j-=4,++ue;switch(j){case 3:te^=(255&R.charCodeAt(ue+2))<<16;case 2:te^=(255&R.charCodeAt(ue+1))<<8;case 1:te=1540483477*(65535&(te^=255&R.charCodeAt(ue)))+((1540483477*(te>>>16)&65535)<<16)}return te=1540483477*(65535&(te^=te>>>13))+((1540483477*(te>>>16)&65535)<<16),(te^=te>>>15)>>>0};var Ir=lr,oi=Dr.exports;zt.exports=Ir,zt.exports.murmur3=Ir,zt.exports.murmur2=oi;var ui=o(zt.exports);class qr{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(S,D,j,te){this.ids.push(Kr(S)),this.positions.push(D,j,te)}getPositions(S){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let D=Kr(S),j=0,te=this.ids.length-1;for(;j>1;this.ids[ve]>=D?te=ve:j=ve+1}let ue=[];for(;this.ids[j]===D;)ue.push({index:this.positions[3*j],start:this.positions[3*j+1],end:this.positions[3*j+2]}),j++;return ue}static serialize(S,D){let j=new Float64Array(S.ids),te=new Uint32Array(S.positions);return ii(j,te,0,j.length-1),D&&D.push(j.buffer,te.buffer),{ids:j,positions:te}}static deserialize(S){let D=new qr;return D.ids=S.ids,D.positions=S.positions,D.indexed=!0,D}}function Kr(R){let S=+R;return!isNaN(S)&&S<=Number.MAX_SAFE_INTEGER?S:ui(String(R))}function ii(R,S,D,j){for(;D>1],ue=D-1,ve=j+1;for(;;){do ue++;while(R[ue]te);if(ue>=ve)break;vi(R,ue,ve),vi(S,3*ue,3*ve),vi(S,3*ue+1,3*ve+1),vi(S,3*ue+2,3*ve+2)}ve-D`u_${te}`),this.type=j}setUniform(S,D,j){S.set(j.constantOr(this.value))}getBinding(S,D,j){return this.type==="color"?new dn(S,D):new Jr(S,D)}}class ya{constructor(S,D){this.uniformNames=D.map(j=>`u_${j}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(S,D){this.pixelRatioFrom=D.pixelRatio,this.pixelRatioTo=S.pixelRatio,this.patternFrom=D.tlbr,this.patternTo=S.tlbr}setUniform(S,D,j,te){let ue=te==="u_pattern_to"?this.patternTo:te==="u_pattern_from"?this.patternFrom:te==="u_pixel_ratio_to"?this.pixelRatioTo:te==="u_pixel_ratio_from"?this.pixelRatioFrom:null;ue&&S.set(ue)}getBinding(S,D,j){return j.substr(0,9)==="u_pattern"?new un(S,D):new Jr(S,D)}}class so{constructor(S,D,j,te){this.expression=S,this.type=j,this.maxValue=0,this.paintVertexAttributes=D.map(ue=>({name:`a_${ue}`,type:"Float32",components:j==="color"?2:1,offset:0})),this.paintVertexArray=new te}populatePaintArray(S,D,j,te,ue){let ve=this.paintVertexArray.length,De=this.expression.evaluate(new Ko(0),D,{},te,[],ue);this.paintVertexArray.resize(S),this._setPaintValue(ve,S,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:0},j,te);this._setPaintValue(S,D,ue)}_setPaintValue(S,D,j){if(this.type==="color"){let te=Nn(j);for(let ue=S;ue`u_${De}_t`),this.type=j,this.useIntegerZoom=te,this.zoom=ue,this.maxValue=0,this.paintVertexAttributes=D.map(De=>({name:`a_${De}`,type:"Float32",components:j==="color"?4:2,offset:0})),this.paintVertexArray=new ve}populatePaintArray(S,D,j,te,ue){let ve=this.expression.evaluate(new Ko(this.zoom),D,{},te,[],ue),De=this.expression.evaluate(new Ko(this.zoom+1),D,{},te,[],ue),Ze=this.paintVertexArray.length;this.paintVertexArray.resize(S),this._setPaintValue(Ze,S,ve,De)}updatePaintArray(S,D,j,te){let ue=this.expression.evaluate({zoom:this.zoom},j,te),ve=this.expression.evaluate({zoom:this.zoom+1},j,te);this._setPaintValue(S,D,ue,ve)}_setPaintValue(S,D,j,te){if(this.type==="color"){let ue=Nn(j),ve=Nn(te);for(let De=S;De`#define HAS_UNIFORM_${te}`))}return S}getBinderAttributes(){let S=[];for(let D in this.binders){let j=this.binders[D];if(j instanceof so||j instanceof wa)for(let te=0;te!0){this.programConfigurations={};for(let te of S)this.programConfigurations[te.id]=new Ss(te,D,j);this.needsUpload=!1,this._featureMap=new qr,this._bufferOffset=0}populatePaintArrays(S,D,j,te,ue,ve){for(let De in this.programConfigurations)this.programConfigurations[De].populatePaintArrays(S,D,te,ue,ve);D.id!==void 0&&this._featureMap.add(D.id,j,this._bufferOffset,S),this._bufferOffset=S,this.needsUpload=!0}updatePaintArrays(S,D,j,te){for(let ue of j)this.needsUpload=this.programConfigurations[ue.id].updatePaintArrays(S,this._featureMap,D,ue,te)||this.needsUpload}get(S){return this.programConfigurations[S]}upload(S){if(this.needsUpload){for(let D in this.programConfigurations)this.programConfigurations[D].upload(S);this.needsUpload=!1}}destroy(){for(let S in this.programConfigurations)this.programConfigurations[S].destroy()}}function Ns(R,S){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[R]||[R.replace(`${S}-`,"").replace(/-/g,"_")]}function pn(R,S,D){let j={color:{source:Sr,composite:Li},number:{source:mr,composite:Sr}},te=function(ue){return{"line-pattern":{source:el,composite:el},"fill-pattern":{source:el,composite:el},"fill-extrusion-pattern":{source:el,composite:el}}[ue]}(R);return te&&te[D]||j[S][D]}mi("ConstantBinder",ga),mi("CrossFadedConstantBinder",ya),mi("SourceExpressionBinder",so),mi("CrossFadedCompositeBinder",io),mi("CompositeExpressionBinder",wa),mi("ProgramConfiguration",Ss,{omit:["_buffers"]}),mi("ProgramConfigurationSet",_s);let za=8192,Lo=Math.pow(2,14)-1,Fo=-Lo-1;function js(R){let S=za/R.extent,D=R.loadGeometry();for(let j=0;jve.x+1||Zeve.y+1)&&T("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return D}function xl(R,S){return{type:R.type,id:R.id,properties:R.properties,geometry:S?js(R):[]}}function fu(R,S,D,j,te){R.emplaceBack(2*S+(j+1)/2,2*D+(te+1)/2)}class dl{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new po,this.indexArray=new oe,this.segments=new We,this.programConfigurations=new _s(S.layers,S.zoom),this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){let te=this.layers[0],ue=[],ve=null,De=!1;te.type==="circle"&&(ve=te.layout.get("circle-sort-key"),De=!ve.isConstant());for(let{feature:Ze,id:at,index:Tt,sourceLayerIndex:Ft}of S){let Qt=this.layers[0]._featureFilter.needGeometry,sr=xl(Ze,Qt);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),sr,j))continue;let Tr=De?ve.evaluate(sr,{},j):void 0,Pr={id:at,properties:Ze.properties,type:Ze.type,sourceLayerIndex:Ft,index:Tt,geometry:Qt?sr.geometry:js(Ze),patterns:{},sortKey:Tr};ue.push(Pr)}De&&ue.sort((Ze,at)=>Ze.sortKey-at.sortKey);for(let Ze of ue){let{geometry:at,index:Tt,sourceLayerIndex:Ft}=Ze,Qt=S[Tt].feature;this.addFeature(Ze,at,Tt,j),D.featureIndex.insert(Qt,at,Tt,Ft,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Ue),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(S,D,j,te){for(let ue of D)for(let ve of ue){let De=ve.x,Ze=ve.y;if(De<0||De>=za||Ze<0||Ze>=za)continue;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,S.sortKey),Tt=at.vertexLength;fu(this.layoutVertexArray,De,Ze,-1,-1),fu(this.layoutVertexArray,De,Ze,1,-1),fu(this.layoutVertexArray,De,Ze,1,1),fu(this.layoutVertexArray,De,Ze,-1,1),this.indexArray.emplaceBack(Tt,Tt+1,Tt+2),this.indexArray.emplaceBack(Tt,Tt+3,Tt+2),at.vertexLength+=4,at.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,{},te)}}function xc(R,S){for(let D=0;D1){if(wi(R,S))return!0;for(let j=0;j1?D:D.sub(S)._mult(te)._add(S))}function cn(R,S){let D,j,te,ue=!1;for(let ve=0;veS.y!=te.y>S.y&&S.x<(te.x-j.x)*(S.y-j.y)/(te.y-j.y)+j.x&&(ue=!ue)}return ue}function On(R,S){let D=!1;for(let j=0,te=R.length-1;jS.y!=ve.y>S.y&&S.x<(ve.x-ue.x)*(S.y-ue.y)/(ve.y-ue.y)+ue.x&&(D=!D)}return D}function Bn(R,S,D){let j=D[0],te=D[2];if(R.xte.x&&S.x>te.x||R.yte.y&&S.y>te.y)return!1;let ue=F(R,S,D[0]);return ue!==F(R,S,D[1])||ue!==F(R,S,D[2])||ue!==F(R,S,D[3])}function yn(R,S,D){let j=S.paint.get(R).value;return j.kind==="constant"?j.value:D.programConfigurations.get(S.id).getMaxValue(R)}function to(R){return Math.sqrt(R[0]*R[0]+R[1]*R[1])}function Rn(R,S,D,j,te){if(!S[0]&&!S[1])return R;let ue=u.convert(S)._mult(te);D==="viewport"&&ue._rotate(-j);let ve=[];for(let De=0;Devn($r,Pr))}(at,Ze),sr=Ft?Tt*De:Tt;for(let Tr of te)for(let Pr of Tr){let $r=Ft?Pr:vn(Pr,Ze),ni=sr,Di=Za([],[Pr.x,Pr.y,0,1],Ze);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?ni*=Di[3]/ve.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(ni*=ve.cameraToCenterDistance/Di[3]),At(Qt,$r,ni))return!0}return!1}}function vn(R,S){let D=Za([],[R.x,R.y,0,1],S);return new u(D[0]/D[3],D[1]/D[3])}class Aa extends dl{}let aa;mi("HeatmapBucket",Aa,{omit:["layers"]});var Xn={get paint(){return aa=aa||new le({"heatmap-radius":new eo(ce.paint_heatmap["heatmap-radius"]),"heatmap-weight":new eo(ce.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Da(ce.paint_heatmap["heatmap-intensity"]),"heatmap-color":new _c(ce.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Da(ce.paint_heatmap["heatmap-opacity"])})}};function Vn(R,{width:S,height:D},j,te){if(te){if(te instanceof Uint8ClampedArray)te=new Uint8Array(te.buffer);else if(te.length!==S*D*j)throw new RangeError(`mismatched image size. expected: ${te.length} but got: ${S*D*j}`)}else te=new Uint8Array(S*D*j);return R.width=S,R.height=D,R.data=te,R}function ma(R,{width:S,height:D},j){if(S===R.width&&D===R.height)return;let te=Vn({},{width:S,height:D},j);ro(R,te,{x:0,y:0},{x:0,y:0},{width:Math.min(R.width,S),height:Math.min(R.height,D)},j),R.width=S,R.height=D,R.data=te.data}function ro(R,S,D,j,te,ue){if(te.width===0||te.height===0)return S;if(te.width>R.width||te.height>R.height||D.x>R.width-te.width||D.y>R.height-te.height)throw new RangeError("out of range source coordinates for image copy");if(te.width>S.width||te.height>S.height||j.x>S.width-te.width||j.y>S.height-te.height)throw new RangeError("out of range destination coordinates for image copy");let ve=R.data,De=S.data;if(ve===De)throw new Error("srcData equals dstData, so image is already copied");for(let Ze=0;Ze{S[R.evaluationKey]=Ze;let at=R.expression.evaluate(S);te.data[ve+De+0]=Math.floor(255*at.r/at.a),te.data[ve+De+1]=Math.floor(255*at.g/at.a),te.data[ve+De+2]=Math.floor(255*at.b/at.a),te.data[ve+De+3]=Math.floor(255*at.a)};if(R.clips)for(let ve=0,De=0;ve80*D){De=1/0,Ze=1/0;let Tt=-1/0,Ft=-1/0;for(let Qt=D;QtTt&&(Tt=sr),Tr>Ft&&(Ft=Tr)}at=Math.max(Tt-De,Ft-Ze),at=at!==0?32767/at:0}return yf(ue,ve,D,De,Ze,at,0),ve}function bc(R,S,D,j,te){let ue;if(te===function(ve,De,Ze,at){let Tt=0;for(let Ft=De,Qt=Ze-at;Ft0)for(let ve=S;ve=S;ve-=j)ue=Jt(ve/j|0,R[ve],R[ve+1],ue);return ue&&de(ue,ue.next)&&(vt(ue),ue=ue.next),ue}function wc(R,S){if(!R)return R;S||(S=R);let D,j=R;do if(D=!1,j.steiner||!de(j,j.next)&&pe(j.prev,j,j.next)!==0)j=j.next;else{if(vt(j),j=S=j.prev,j===j.next)break;D=!0}while(D||j!==S);return S}function yf(R,S,D,j,te,ue,ve){if(!R)return;!ve&&ue&&function(Ze,at,Tt,Ft){let Qt=Ze;do Qt.z===0&&(Qt.z=z(Qt.x,Qt.y,at,Tt,Ft)),Qt.prevZ=Qt.prev,Qt.nextZ=Qt.next,Qt=Qt.next;while(Qt!==Ze);Qt.prevZ.nextZ=null,Qt.prevZ=null,function(sr){let Tr,Pr=1;do{let $r,ni=sr;sr=null;let Di=null;for(Tr=0;ni;){Tr++;let pi=ni,ki=0;for(let ta=0;ta0||Zi>0&π)ki!==0&&(Zi===0||!pi||ni.z<=pi.z)?($r=ni,ni=ni.nextZ,ki--):($r=pi,pi=pi.nextZ,Zi--),Di?Di.nextZ=$r:sr=$r,$r.prevZ=Di,Di=$r;ni=pi}Di.nextZ=null,Pr*=2}while(Tr>1)}(Qt)}(R,j,te,ue);let De=R;for(;R.prev!==R.next;){let Ze=R.prev,at=R.next;if(ue?Fc(R,j,te,ue):Gl(R))S.push(Ze.i,R.i,at.i),vt(R),R=at.next,De=at.next;else if((R=at)===De){ve?ve===1?yf(R=ef(wc(R),S),S,D,j,te,ue,2):ve===2&&ls(R,S,D,j,te,ue):yf(wc(R),S,D,j,te,ue,1);break}}}function Gl(R){let S=R.prev,D=R,j=R.next;if(pe(S,D,j)>=0)return!1;let te=S.x,ue=D.x,ve=j.x,De=S.y,Ze=D.y,at=j.y,Tt=teue?te>ve?te:ve:ue>ve?ue:ve,sr=De>Ze?De>at?De:at:Ze>at?Ze:at,Tr=j.next;for(;Tr!==S;){if(Tr.x>=Tt&&Tr.x<=Qt&&Tr.y>=Ft&&Tr.y<=sr&&O(te,De,ue,Ze,ve,at,Tr.x,Tr.y)&&pe(Tr.prev,Tr,Tr.next)>=0)return!1;Tr=Tr.next}return!0}function Fc(R,S,D,j){let te=R.prev,ue=R,ve=R.next;if(pe(te,ue,ve)>=0)return!1;let De=te.x,Ze=ue.x,at=ve.x,Tt=te.y,Ft=ue.y,Qt=ve.y,sr=DeZe?De>at?De:at:Ze>at?Ze:at,$r=Tt>Ft?Tt>Qt?Tt:Qt:Ft>Qt?Ft:Qt,ni=z(sr,Tr,S,D,j),Di=z(Pr,$r,S,D,j),pi=R.prevZ,ki=R.nextZ;for(;pi&&pi.z>=ni&&ki&&ki.z<=Di;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0||(pi=pi.prevZ,ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0))return!1;ki=ki.nextZ}for(;pi&&pi.z>=ni;){if(pi.x>=sr&&pi.x<=Pr&&pi.y>=Tr&&pi.y<=$r&&pi!==te&&pi!==ve&&O(De,Tt,Ze,Ft,at,Qt,pi.x,pi.y)&&pe(pi.prev,pi,pi.next)>=0)return!1;pi=pi.prevZ}for(;ki&&ki.z<=Di;){if(ki.x>=sr&&ki.x<=Pr&&ki.y>=Tr&&ki.y<=$r&&ki!==te&&ki!==ve&&O(De,Tt,Ze,Ft,at,Qt,ki.x,ki.y)&&pe(ki.prev,ki,ki.next)>=0)return!1;ki=ki.nextZ}return!0}function ef(R,S){let D=R;do{let j=D.prev,te=D.next.next;!de(j,te)&&Ie(j,D,D.next,te)&&Kt(j,te)&&Kt(te,j)&&(S.push(j.i,D.i,te.i),vt(D),vt(D.next),D=R=te),D=D.next}while(D!==R);return wc(D)}function ls(R,S,D,j,te,ue){let ve=R;do{let De=ve.next.next;for(;De!==ve.prev;){if(ve.i!==De.i&&$(ve,De)){let Ze=ir(ve,De);return ve=wc(ve,ve.next),Ze=wc(Ze,Ze.next),yf(ve,S,D,j,te,ue,0),void yf(Ze,S,D,j,te,ue,0)}De=De.next}ve=ve.next}while(ve!==R)}function _f(R,S){return R.x-S.x}function ns(R,S){let D=function(te,ue){let ve=ue,De=te.x,Ze=te.y,at,Tt=-1/0;do{if(Ze<=ve.y&&Ze>=ve.next.y&&ve.next.y!==ve.y){let Pr=ve.x+(Ze-ve.y)*(ve.next.x-ve.x)/(ve.next.y-ve.y);if(Pr<=De&&Pr>Tt&&(Tt=Pr,at=ve.x=ve.x&&ve.x>=Qt&&De!==ve.x&&O(Zeat.x||ve.x===at.x&&Y(at,ve)))&&(at=ve,Tr=Pr)}ve=ve.next}while(ve!==Ft);return at}(R,S);if(!D)return S;let j=ir(D,R);return wc(j,j.next),wc(D,D.next)}function Y(R,S){return pe(R.prev,R,S.prev)<0&&pe(S.next,R,R.next)<0}function z(R,S,D,j,te){return(R=1431655765&((R=858993459&((R=252645135&((R=16711935&((R=(R-D)*te|0)|R<<8))|R<<4))|R<<2))|R<<1))|(S=1431655765&((S=858993459&((S=252645135&((S=16711935&((S=(S-j)*te|0)|S<<8))|S<<4))|S<<2))|S<<1))<<1}function K(R){let S=R,D=R;do(S.x=(R-ve)*(ue-De)&&(R-ve)*(j-De)>=(D-ve)*(S-De)&&(D-ve)*(ue-De)>=(te-ve)*(j-De)}function $(R,S){return R.next.i!==S.i&&R.prev.i!==S.i&&!function(D,j){let te=D;do{if(te.i!==D.i&&te.next.i!==D.i&&te.i!==j.i&&te.next.i!==j.i&&Ie(te,te.next,D,j))return!0;te=te.next}while(te!==D);return!1}(R,S)&&(Kt(R,S)&&Kt(S,R)&&function(D,j){let te=D,ue=!1,ve=(D.x+j.x)/2,De=(D.y+j.y)/2;do te.y>De!=te.next.y>De&&te.next.y!==te.y&&ve<(te.next.x-te.x)*(De-te.y)/(te.next.y-te.y)+te.x&&(ue=!ue),te=te.next;while(te!==D);return ue}(R,S)&&(pe(R.prev,R,S.prev)||pe(R,S.prev,S))||de(R,S)&&pe(R.prev,R,R.next)>0&&pe(S.prev,S,S.next)>0)}function pe(R,S,D){return(S.y-R.y)*(D.x-S.x)-(S.x-R.x)*(D.y-S.y)}function de(R,S){return R.x===S.x&&R.y===S.y}function Ie(R,S,D,j){let te=pt(pe(R,S,D)),ue=pt(pe(R,S,j)),ve=pt(pe(D,j,R)),De=pt(pe(D,j,S));return te!==ue&&ve!==De||!(te!==0||!$e(R,D,S))||!(ue!==0||!$e(R,j,S))||!(ve!==0||!$e(D,R,j))||!(De!==0||!$e(D,S,j))}function $e(R,S,D){return S.x<=Math.max(R.x,D.x)&&S.x>=Math.min(R.x,D.x)&&S.y<=Math.max(R.y,D.y)&&S.y>=Math.min(R.y,D.y)}function pt(R){return R>0?1:R<0?-1:0}function Kt(R,S){return pe(R.prev,R,R.next)<0?pe(R,S,R.next)>=0&&pe(R,R.prev,S)>=0:pe(R,S,R.prev)<0||pe(R,R.next,S)<0}function ir(R,S){let D=Pt(R.i,R.x,R.y),j=Pt(S.i,S.x,S.y),te=R.next,ue=S.prev;return R.next=S,S.prev=R,D.next=te,te.prev=D,j.next=D,D.prev=j,ue.next=j,j.prev=ue,j}function Jt(R,S,D,j){let te=Pt(R,S,D);return j?(te.next=j.next,te.prev=j,j.next.prev=te,j.next=te):(te.prev=te,te.next=te),te}function vt(R){R.next.prev=R.prev,R.prev.next=R.next,R.prevZ&&(R.prevZ.nextZ=R.nextZ),R.nextZ&&(R.nextZ.prevZ=R.prevZ)}function Pt(R,S,D){return{i:R,x:S,y:D,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Wt(R,S,D){let j=D.patternDependencies,te=!1;for(let ue of S){let ve=ue.paint.get(`${R}-pattern`);ve.isConstant()||(te=!0);let De=ve.constantOr(null);De&&(te=!0,j[De.to]=!0,j[De.from]=!0)}return te}function rr(R,S,D,j,te){let ue=te.patternDependencies;for(let ve of S){let De=ve.paint.get(`${R}-pattern`).value;if(De.kind!=="constant"){let Ze=De.evaluate({zoom:j-1},D,{},te.availableImages),at=De.evaluate({zoom:j},D,{},te.availableImages),Tt=De.evaluate({zoom:j+1},D,{},te.availableImages);Ze=Ze&&Ze.name?Ze.name:Ze,at=at&&at.name?at.name:at,Tt=Tt&&Tt.name?Tt.name:Tt,ue[Ze]=!0,ue[at]=!0,ue[Tt]=!0,D.patterns[ve.id]={min:Ze,mid:at,max:Tt}}}return D}class dr{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new _l,this.indexArray=new oe,this.indexArray2=new we,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.segments2=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("fill",this.layers,D);let te=this.layers[0].layout.get("fill-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j,D.availableImages):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("fill",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Qc),this.indexBuffer=S.createIndexBuffer(this.indexArray),this.indexBuffer2=S.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De=0;for(let sr of ve)De+=sr.length;let Ze=this.segments.prepareSegment(De,this.layoutVertexArray,this.indexArray),at=Ze.vertexLength,Tt=[],Ft=[];for(let sr of ve){if(sr.length===0)continue;sr!==ve[0]&&Ft.push(Tt.length/2);let Tr=this.segments2.prepareSegment(sr.length,this.layoutVertexArray,this.indexArray2),Pr=Tr.vertexLength;this.layoutVertexArray.emplaceBack(sr[0].x,sr[0].y),this.indexArray2.emplaceBack(Pr+sr.length-1,Pr),Tt.push(sr[0].x),Tt.push(sr[0].y);for(let $r=1;$r>3}if(te--,j===1||j===2)ue+=R.readSVarint(),ve+=R.readSVarint(),j===1&&(S&&De.push(S),S=[]),S.push(new yi(ue,ve));else{if(j!==7)throw new Error("unknown command "+j);S&&S.push(S[0].clone())}}return S&&De.push(S),De},Ri.prototype.bbox=function(){var R=this._pbf;R.pos=this._geometry;for(var S=R.readVarint()+R.pos,D=1,j=0,te=0,ue=0,ve=1/0,De=-1/0,Ze=1/0,at=-1/0;R.pos>3}if(j--,D===1||D===2)(te+=R.readSVarint())De&&(De=te),(ue+=R.readSVarint())at&&(at=ue);else if(D!==7)throw new Error("unknown command "+D)}return[ve,Ze,De,at]},Ri.prototype.toGeoJSON=function(R,S,D){var j,te,ue=this.extent*Math.pow(2,D),ve=this.extent*R,De=this.extent*S,Ze=this.loadGeometry(),at=Ri.types[this.type];function Tt(sr){for(var Tr=0;Tr>3;te=ve===1?j.readString():ve===2?j.readFloat():ve===3?j.readDouble():ve===4?j.readVarint64():ve===5?j.readVarint():ve===6?j.readSVarint():ve===7?j.readBoolean():null}return te}(D))}bn.prototype.feature=function(R){if(R<0||R>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[R];var S=this._pbf.readVarint()+this._pbf.pos;return new qn(this._pbf,S,this.extent,this._keys,this._values)};var Gn=rn;function da(R,S,D){if(R===3){var j=new Gn(D,D.readVarint()+D.pos);j.length&&(S[j.name]=j)}}ei.VectorTile=function(R,S){this.layers=R.readFields(da,{},S)},ei.VectorTileFeature=tn,ei.VectorTileLayer=rn;let No=ei.VectorTileFeature.types,Do=Math.pow(2,13);function ps(R,S,D,j,te,ue,ve,De){R.emplaceBack(S,D,2*Math.floor(j*Do)+ve,te*Do*2,ue*Do*2,Math.round(De))}class fo{constructor(S){this.zoom=S.zoom,this.overscaling=S.overscaling,this.layers=S.layers,this.layerIds=this.layers.map(D=>D.id),this.index=S.index,this.hasPattern=!1,this.layoutVertexArray=new Hl,this.centroidVertexArray=new yo,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.features=[],this.hasPattern=Wt("fill-extrusion",this.layers,D);for(let{feature:te,id:ue,index:ve,sourceLayerIndex:De}of S){let Ze=this.layers[0]._featureFilter.needGeometry,at=xl(te,Ze);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),at,j))continue;let Tt={id:ue,sourceLayerIndex:De,index:ve,geometry:Ze?at.geometry:js(te),properties:te.properties,type:te.type,patterns:{}};this.hasPattern?this.features.push(rr("fill-extrusion",this.layers,Tt,this.zoom,D)):this.addFeature(Tt,Tt.geometry,ve,j,{}),D.featureIndex.insert(te,Tt.geometry,ve,De,this.index,!0)}}addFeatures(S,D,j){for(let te of this.features){let{geometry:ue}=te;this.addFeature(te,ue,te.index,D,j)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,Gr),this.centroidVertexBuffer=S.createVertexBuffer(this.centroidVertexArray,cr.members,!0),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(S,D,j,te,ue){for(let ve of Of(D,500)){let De={x:0,y:0,vertexCount:0},Ze=0;for(let Tr of ve)Ze+=Tr.length;let at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let Tr of ve){if(Tr.length===0||tl(Tr))continue;let Pr=0;for(let $r=0;$r=1){let Di=Tr[$r-1];if(!as(ni,Di)){at.vertexLength+4>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let pi=ni.sub(Di)._perp()._unit(),ki=Di.dist(ni);Pr+ki>32768&&(Pr=0),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,ni.x,ni.y,pi.x,pi.y,0,1,Pr),De.x+=2*ni.x,De.y+=2*ni.y,De.vertexCount+=2,Pr+=ki,ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,0,Pr),ps(this.layoutVertexArray,Di.x,Di.y,pi.x,pi.y,0,1,Pr),De.x+=2*Di.x,De.y+=2*Di.y,De.vertexCount+=2;let Zi=at.vertexLength;this.indexArray.emplaceBack(Zi,Zi+2,Zi+1),this.indexArray.emplaceBack(Zi+1,Zi+2,Zi+3),at.vertexLength+=4,at.primitiveLength+=2}}}}if(at.vertexLength+Ze>We.MAX_VERTEX_ARRAY_LENGTH&&(at=this.segments.prepareSegment(Ze,this.layoutVertexArray,this.indexArray)),No[S.type]!=="Polygon")continue;let Tt=[],Ft=[],Qt=at.vertexLength;for(let Tr of ve)if(Tr.length!==0){Tr!==ve[0]&&Ft.push(Tt.length/2);for(let Pr=0;Prza)||R.y===S.y&&(R.y<0||R.y>za)}function tl(R){return R.every(S=>S.x<0)||R.every(S=>S.x>za)||R.every(S=>S.y<0)||R.every(S=>S.y>za)}let zu;mi("FillExtrusionBucket",fo,{omit:["layers","features"]});var Mv={get paint(){return zu=zu||new le({"fill-extrusion-opacity":new Da(ce["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new eo(ce["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Da(ce["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Jc(ce["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new eo(ce["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new eo(ce["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Da(ce["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Ev extends B{constructor(S){super(S,Mv)}createBucket(S){return new fo(S)}queryRadius(){return to(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(S,D,j,te,ue,ve,De,Ze){let at=Rn(S,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),ve.angle,De),Tt=this.paint.get("fill-extrusion-height").evaluate(D,j),Ft=this.paint.get("fill-extrusion-base").evaluate(D,j),Qt=function(Tr,Pr,$r,ni){let Di=[];for(let pi of Tr){let ki=[pi.x,pi.y,0,1];Za(ki,ki,Pr),Di.push(new u(ki[0]/ki[3],ki[1]/ki[3]))}return Di}(at,Ze),sr=function(Tr,Pr,$r,ni){let Di=[],pi=[],ki=ni[8]*Pr,Zi=ni[9]*Pr,ta=ni[10]*Pr,Va=ni[11]*Pr,Io=ni[8]*$r,La=ni[9]*$r,Hn=ni[10]*$r,lo=ni[11]*$r;for(let $a of Tr){let Xa=[],Tn=[];for(let bo of $a){let Ya=bo.x,Uo=bo.y,wu=ni[0]*Ya+ni[4]*Uo+ni[12],hu=ni[1]*Ya+ni[5]*Uo+ni[13],uh=ni[2]*Ya+ni[6]*Uo+ni[14],$v=ni[3]*Ya+ni[7]*Uo+ni[15],td=uh+ta,ch=$v+Va,Ud=wu+Io,Vd=hu+La,Hd=uh+Hn,rf=$v+lo,fh=new u((wu+ki)/ch,(hu+Zi)/ch);fh.z=td/ch,Xa.push(fh);let Td=new u(Ud/rf,Vd/rf);Td.z=Hd/rf,Tn.push(Td)}Di.push(Xa),pi.push(Tn)}return[Di,pi]}(te,Ft,Tt,Ze);return function(Tr,Pr,$r){let ni=1/0;Er($r,Pr)&&(ni=Yv($r,Pr[0]));for(let Di=0;DiD.id),this.index=S.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(D=>{this.gradients[D.id]={}}),this.layoutVertexArray=new Zu,this.layoutVertexArray2=new cu,this.indexArray=new oe,this.programConfigurations=new _s(S.layers,S.zoom),this.segments=new We,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(D=>D.isStateDependent()).map(D=>D.id)}populate(S,D,j){this.hasPattern=Wt("line",this.layers,D);let te=this.layers[0].layout.get("line-sort-key"),ue=!te.isConstant(),ve=[];for(let{feature:De,id:Ze,index:at,sourceLayerIndex:Tt}of S){let Ft=this.layers[0]._featureFilter.needGeometry,Qt=xl(De,Ft);if(!this.layers[0]._featureFilter.filter(new Ko(this.zoom),Qt,j))continue;let sr=ue?te.evaluate(Qt,{},j):void 0,Tr={id:Ze,properties:De.properties,type:De.type,sourceLayerIndex:Tt,index:at,geometry:Ft?Qt.geometry:js(De),patterns:{},sortKey:sr};ve.push(Tr)}ue&&ve.sort((De,Ze)=>De.sortKey-Ze.sortKey);for(let De of ve){let{geometry:Ze,index:at,sourceLayerIndex:Tt}=De;if(this.hasPattern){let Ft=rr("line",this.layers,De,this.zoom,D);this.patternFeatures.push(Ft)}else this.addFeature(De,Ze,at,j,{});D.featureIndex.insert(S[at].feature,Ze,at,Tt,this.index)}}update(S,D,j){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(S,D,this.stateDependentLayers,j)}addFeatures(S,D,j){for(let te of this.patternFeatures)this.addFeature(te,te.geometry,te.index,D,j)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(S){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=S.createVertexBuffer(this.layoutVertexArray2,pp)),this.layoutVertexBuffer=S.createVertexBuffer(this.layoutVertexArray,vp),this.indexBuffer=S.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(S),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(S){if(S.properties&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(S.properties,"mapbox_clip_end"))return{start:+S.properties.mapbox_clip_start,end:+S.properties.mapbox_clip_end}}addFeature(S,D,j,te,ue){let ve=this.layers[0].layout,De=ve.get("line-join").evaluate(S,{}),Ze=ve.get("line-cap"),at=ve.get("line-miter-limit"),Tt=ve.get("line-round-limit");this.lineClips=this.lineFeatureClips(S);for(let Ft of D)this.addLine(Ft,S,De,Ze,at,Tt);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,S,j,ue,te)}addLine(S,D,j,te,ue,ve){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let ni=0;ni=2&&S[Ze-1].equals(S[Ze-2]);)Ze--;let at=0;for(;at0;if(Va&&ni>at){let lo=Qt.dist(sr);if(lo>2*Tt){let $a=Qt.sub(Qt.sub(sr)._mult(Tt/lo)._round());this.updateDistance(sr,$a),this.addCurrentVertex($a,Pr,0,0,Ft),sr=$a}}let La=sr&&Tr,Hn=La?j:De?"butt":te;if(La&&Hn==="round"&&(Ziue&&(Hn="bevel"),Hn==="bevel"&&(Zi>2&&(Hn="flipbevel"),Zi100)Di=$r.mult(-1);else{let lo=Zi*Pr.add($r).mag()/Pr.sub($r).mag();Di._perp()._mult(lo*(Io?-1:1))}this.addCurrentVertex(Qt,Di,0,0,Ft),this.addCurrentVertex(Qt,Di.mult(-1),0,0,Ft)}else if(Hn==="bevel"||Hn==="fakeround"){let lo=-Math.sqrt(Zi*Zi-1),$a=Io?lo:0,Xa=Io?0:lo;if(sr&&this.addCurrentVertex(Qt,Pr,$a,Xa,Ft),Hn==="fakeround"){let Tn=Math.round(180*ta/Math.PI/20);for(let bo=1;bo2*Tt){let $a=Qt.add(Tr.sub(Qt)._mult(Tt/lo)._round());this.updateDistance(Qt,$a),this.addCurrentVertex($a,$r,0,0,Ft),Qt=$a}}}}addCurrentVertex(S,D,j,te,ue,ve=!1){let De=D.y*te-D.x,Ze=-D.y-D.x*te;this.addHalfVertex(S,D.x+D.y*j,D.y-D.x*j,ve,!1,j,ue),this.addHalfVertex(S,De,Ze,ve,!0,-te,ue),this.distance>kv/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(S,D,j,te,ue,ve))}addHalfVertex({x:S,y:D},j,te,ue,ve,De,Ze){let at=.5*(this.lineClips?this.scaledDistance*(kv-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((S<<1)+(ue?1:0),(D<<1)+(ve?1:0),Math.round(63*j)+128,Math.round(63*te)+128,1+(De===0?0:De<0?-1:1)|(63&at)<<2,at>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let Tt=Ze.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Tt),Ze.primitiveLength++),ve?this.e2=Tt:this.e1=Tt}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(S,D){this.distance+=S.dist(D),this.updateScaledDistance()}}let Cv,ny;mi("LineBucket",Kv,{omit:["layers","patternFeatures"]});var fg={get paint(){return ny=ny||new le({"line-opacity":new eo(ce.paint_line["line-opacity"]),"line-color":new eo(ce.paint_line["line-color"]),"line-translate":new Da(ce.paint_line["line-translate"]),"line-translate-anchor":new Da(ce.paint_line["line-translate-anchor"]),"line-width":new eo(ce.paint_line["line-width"]),"line-gap-width":new eo(ce.paint_line["line-gap-width"]),"line-offset":new eo(ce.paint_line["line-offset"]),"line-blur":new eo(ce.paint_line["line-blur"]),"line-dasharray":new yc(ce.paint_line["line-dasharray"]),"line-pattern":new Jc(ce.paint_line["line-pattern"]),"line-gradient":new _c(ce.paint_line["line-gradient"])})},get layout(){return Cv=Cv||new le({"line-cap":new Da(ce.layout_line["line-cap"]),"line-join":new eo(ce.layout_line["line-join"]),"line-miter-limit":new Da(ce.layout_line["line-miter-limit"]),"line-round-limit":new Da(ce.layout_line["line-round-limit"]),"line-sort-key":new eo(ce.layout_line["line-sort-key"])})}};class Hf extends eo{possiblyEvaluate(S,D){return D=new Ko(Math.floor(D.zoom),{now:D.now,fadeDuration:D.fadeDuration,zoomHistory:D.zoomHistory,transition:D.transition}),super.possiblyEvaluate(S,D)}evaluate(S,D,j,te){return D=L({},D,{zoom:Math.floor(D.zoom)}),super.evaluate(S,D,j,te)}}let hg;class ay extends B{constructor(S){super(S,fg),this.gradientVersion=0,hg||(hg=new Hf(fg.paint.properties["line-width"].specification),hg.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(S){if(S==="line-gradient"){let D=this.gradientExpression();this.stepInterpolant=!!function(j){return j._styleExpression!==void 0}(D)&&D._styleExpression.expression instanceof Ji,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(S,D){super.recalculate(S,D),this.paint._values["line-floorwidth"]=hg.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,S)}createBucket(S){return new Kv(S)}queryRadius(S){let D=S,j=Rh(yn("line-width",this,D),yn("line-gap-width",this,D)),te=yn("line-offset",this,D);return j/2+Math.abs(te)+to(this.paint.get("line-translate"))}queryIntersectsFeature(S,D,j,te,ue,ve,De){let Ze=Rn(S,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),ve.angle,De),at=De/2*Rh(this.paint.get("line-width").evaluate(D,j),this.paint.get("line-gap-width").evaluate(D,j)),Tt=this.paint.get("line-offset").evaluate(D,j);return Tt&&(te=function(Ft,Qt){let sr=[];for(let Tr=0;Tr=3){for(let $r=0;$r0?S+2*R:R}let rm=qe([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),w1=qe([{name:"a_projected_pos",components:3,type:"Float32"}],4);qe([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let T1=qe([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);qe([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let oy=qe([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),im=qe([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function nm(R,S,D){return R.sections.forEach(j=>{j.text=function(te,ue,ve){let De=ue.layout.get("text-transform").evaluate(ve,{});return De==="uppercase"?te=te.toLocaleUpperCase():De==="lowercase"&&(te=te.toLocaleLowerCase()),vs.applyArabicShaping&&(te=vs.applyArabicShaping(te)),te}(j.text,S,D)}),R}qe([{name:"triangle",components:3,type:"Uint16"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),qe([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),qe([{type:"Float32",name:"offsetX"}]),qe([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),qe([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Fu={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var kl=24,bd=Kl,sy=function(R,S,D,j,te){var ue,ve,De=8*te-j-1,Ze=(1<>1,Tt=-7,Ft=D?te-1:0,Qt=D?-1:1,sr=R[S+Ft];for(Ft+=Qt,ue=sr&(1<<-Tt)-1,sr>>=-Tt,Tt+=De;Tt>0;ue=256*ue+R[S+Ft],Ft+=Qt,Tt-=8);for(ve=ue&(1<<-Tt)-1,ue>>=-Tt,Tt+=j;Tt>0;ve=256*ve+R[S+Ft],Ft+=Qt,Tt-=8);if(ue===0)ue=1-at;else{if(ue===Ze)return ve?NaN:1/0*(sr?-1:1);ve+=Math.pow(2,j),ue-=at}return(sr?-1:1)*ve*Math.pow(2,ue-j)},A1=function(R,S,D,j,te,ue){var ve,De,Ze,at=8*ue-te-1,Tt=(1<>1,Qt=te===23?Math.pow(2,-24)-Math.pow(2,-77):0,sr=j?0:ue-1,Tr=j?1:-1,Pr=S<0||S===0&&1/S<0?1:0;for(S=Math.abs(S),isNaN(S)||S===1/0?(De=isNaN(S)?1:0,ve=Tt):(ve=Math.floor(Math.log(S)/Math.LN2),S*(Ze=Math.pow(2,-ve))<1&&(ve--,Ze*=2),(S+=ve+Ft>=1?Qt/Ze:Qt*Math.pow(2,1-Ft))*Ze>=2&&(ve++,Ze/=2),ve+Ft>=Tt?(De=0,ve=Tt):ve+Ft>=1?(De=(S*Ze-1)*Math.pow(2,te),ve+=Ft):(De=S*Math.pow(2,Ft-1)*Math.pow(2,te),ve=0));te>=8;R[D+sr]=255&De,sr+=Tr,De/=256,te-=8);for(ve=ve<0;R[D+sr]=255&ve,sr+=Tr,ve/=256,at-=8);R[D+sr-Tr]|=128*Pr};function Kl(R){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(R)?R:new Uint8Array(R||0),this.pos=0,this.type=0,this.length=this.buf.length}Kl.Varint=0,Kl.Fixed64=1,Kl.Bytes=2,Kl.Fixed32=5;var Nx=4294967296,am=1/Nx,Mw=typeof TextDecoder=="undefined"?null:new TextDecoder("utf-8");function Lv(R){return R.type===Kl.Bytes?R.readVarint()+R.pos:R.pos+1}function om(R,S,D){return D?4294967296*S+(R>>>0):4294967296*(S>>>0)+(R>>>0)}function Ew(R,S,D){var j=S<=16383?1:S<=2097151?2:S<=268435455?3:Math.floor(Math.log(S)/(7*Math.LN2));D.realloc(j);for(var te=D.pos-1;te>=R;te--)D.buf[te+j]=D.buf[te]}function Ux(R,S){for(var D=0;D>>8,R[D+2]=S>>>16,R[D+3]=S>>>24}function cC(R,S){return(R[S]|R[S+1]<<8|R[S+2]<<16)+(R[S+3]<<24)}Kl.prototype={destroy:function(){this.buf=null},readFields:function(R,S,D){for(D=D||this.length;this.pos>3,ue=this.pos;this.type=7&j,R(te,S,this),this.pos===ue&&this.skip(j)}return S},readMessage:function(R,S){return this.readFields(R,S,this.readVarint()+this.pos)},readFixed32:function(){var R=ly(this.buf,this.pos);return this.pos+=4,R},readSFixed32:function(){var R=cC(this.buf,this.pos);return this.pos+=4,R},readFixed64:function(){var R=ly(this.buf,this.pos)+ly(this.buf,this.pos+4)*Nx;return this.pos+=8,R},readSFixed64:function(){var R=ly(this.buf,this.pos)+cC(this.buf,this.pos+4)*Nx;return this.pos+=8,R},readFloat:function(){var R=sy(this.buf,this.pos,!0,23,4);return this.pos+=4,R},readDouble:function(){var R=sy(this.buf,this.pos,!0,52,8);return this.pos+=8,R},readVarint:function(R){var S,D,j=this.buf;return S=127&(D=j[this.pos++]),D<128?S:(S|=(127&(D=j[this.pos++]))<<7,D<128?S:(S|=(127&(D=j[this.pos++]))<<14,D<128?S:(S|=(127&(D=j[this.pos++]))<<21,D<128?S:function(te,ue,ve){var De,Ze,at=ve.buf;if(De=(112&(Ze=at[ve.pos++]))>>4,Ze<128||(De|=(127&(Ze=at[ve.pos++]))<<3,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<10,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<17,Ze<128)||(De|=(127&(Ze=at[ve.pos++]))<<24,Ze<128)||(De|=(1&(Ze=at[ve.pos++]))<<31,Ze<128))return om(te,De,ue);throw new Error("Expected varint not more than 10 bytes")}(S|=(15&(D=j[this.pos]))<<28,R,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var R=this.readVarint();return R%2==1?(R+1)/-2:R/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var R=this.readVarint()+this.pos,S=this.pos;return this.pos=R,R-S>=12&&Mw?function(D,j,te){return Mw.decode(D.subarray(j,te))}(this.buf,S,R):function(D,j,te){for(var ue="",ve=j;ve239?4:Tt>223?3:Tt>191?2:1;if(ve+Qt>te)break;Qt===1?Tt<128&&(Ft=Tt):Qt===2?(192&(De=D[ve+1]))==128&&(Ft=(31&Tt)<<6|63&De)<=127&&(Ft=null):Qt===3?(Ze=D[ve+2],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&((Ft=(15&Tt)<<12|(63&De)<<6|63&Ze)<=2047||Ft>=55296&&Ft<=57343)&&(Ft=null)):Qt===4&&(Ze=D[ve+2],at=D[ve+3],(192&(De=D[ve+1]))==128&&(192&Ze)==128&&(192&at)==128&&((Ft=(15&Tt)<<18|(63&De)<<12|(63&Ze)<<6|63&at)<=65535||Ft>=1114112)&&(Ft=null)),Ft===null?(Ft=65533,Qt=1):Ft>65535&&(Ft-=65536,ue+=String.fromCharCode(Ft>>>10&1023|55296),Ft=56320|1023&Ft),ue+=String.fromCharCode(Ft),ve+=Qt}return ue}(this.buf,S,R)},readBytes:function(){var R=this.readVarint()+this.pos,S=this.buf.subarray(this.pos,R);return this.pos=R,S},readPackedVarint:function(R,S){if(this.type!==Kl.Bytes)return R.push(this.readVarint(S));var D=Lv(this);for(R=R||[];this.pos127;);else if(S===Kl.Bytes)this.pos=this.readVarint()+this.pos;else if(S===Kl.Fixed32)this.pos+=4;else{if(S!==Kl.Fixed64)throw new Error("Unimplemented type: "+S);this.pos+=8}},writeTag:function(R,S){this.writeVarint(R<<3|S)},realloc:function(R){for(var S=this.length||16;S268435455||R<0?function(S,D){var j,te;if(S>=0?(j=S%4294967296|0,te=S/4294967296|0):(te=~(-S/4294967296),4294967295^(j=~(-S%4294967296))?j=j+1|0:(j=0,te=te+1|0)),S>=18446744073709552e3||S<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");D.realloc(10),function(ue,ve,De){De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,ue>>>=7,De.buf[De.pos++]=127&ue|128,De.buf[De.pos]=127&(ue>>>=7)}(j,0,D),function(ue,ve){var De=(7&ue)<<4;ve.buf[ve.pos++]|=De|((ue>>>=3)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue|((ue>>>=7)?128:0),ue&&(ve.buf[ve.pos++]=127&ue)))))}(te,D)}(R,this):(this.realloc(4),this.buf[this.pos++]=127&R|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=127&(R>>>=7)|(R>127?128:0),R<=127||(this.buf[this.pos++]=R>>>7&127))))},writeSVarint:function(R){this.writeVarint(R<0?2*-R-1:2*R)},writeBoolean:function(R){this.writeVarint(!!R)},writeString:function(R){R=String(R),this.realloc(4*R.length),this.pos++;var S=this.pos;this.pos=function(j,te,ue){for(var ve,De,Ze=0;Ze55295&&ve<57344){if(!De){ve>56319||Ze+1===te.length?(j[ue++]=239,j[ue++]=191,j[ue++]=189):De=ve;continue}if(ve<56320){j[ue++]=239,j[ue++]=191,j[ue++]=189,De=ve;continue}ve=De-55296<<10|ve-56320|65536,De=null}else De&&(j[ue++]=239,j[ue++]=191,j[ue++]=189,De=null);ve<128?j[ue++]=ve:(ve<2048?j[ue++]=ve>>6|192:(ve<65536?j[ue++]=ve>>12|224:(j[ue++]=ve>>18|240,j[ue++]=ve>>12&63|128),j[ue++]=ve>>6&63|128),j[ue++]=63&ve|128)}return ue}(this.buf,R,this.pos);var D=this.pos-S;D>=128&&Ew(S,D,this),this.pos=S-1,this.writeVarint(D),this.pos+=D},writeFloat:function(R){this.realloc(4),A1(this.buf,R,this.pos,!0,23,4),this.pos+=4},writeDouble:function(R){this.realloc(8),A1(this.buf,R,this.pos,!0,52,8),this.pos+=8},writeBytes:function(R){var S=R.length;this.writeVarint(S),this.realloc(S);for(var D=0;D=128&&Ew(D,j,this),this.pos=D-1,this.writeVarint(j),this.pos+=j},writeMessage:function(R,S,D){this.writeTag(R,Kl.Bytes),this.writeRawMessage(S,D)},writePackedVarint:function(R,S){S.length&&this.writeMessage(R,Ux,S)},writePackedSVarint:function(R,S){S.length&&this.writeMessage(R,P9,S)},writePackedBoolean:function(R,S){S.length&&this.writeMessage(R,D9,S)},writePackedFloat:function(R,S){S.length&&this.writeMessage(R,I9,S)},writePackedDouble:function(R,S){S.length&&this.writeMessage(R,R9,S)},writePackedFixed32:function(R,S){S.length&&this.writeMessage(R,mQ,S)},writePackedSFixed32:function(R,S){S.length&&this.writeMessage(R,z9,S)},writePackedFixed64:function(R,S){S.length&&this.writeMessage(R,F9,S)},writePackedSFixed64:function(R,S){S.length&&this.writeMessage(R,q9,S)},writeBytesField:function(R,S){this.writeTag(R,Kl.Bytes),this.writeBytes(S)},writeFixed32Field:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeFixed32(S)},writeSFixed32Field:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeSFixed32(S)},writeFixed64Field:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeFixed64(S)},writeSFixed64Field:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeSFixed64(S)},writeVarintField:function(R,S){this.writeTag(R,Kl.Varint),this.writeVarint(S)},writeSVarintField:function(R,S){this.writeTag(R,Kl.Varint),this.writeSVarint(S)},writeStringField:function(R,S){this.writeTag(R,Kl.Bytes),this.writeString(S)},writeFloatField:function(R,S){this.writeTag(R,Kl.Fixed32),this.writeFloat(S)},writeDoubleField:function(R,S){this.writeTag(R,Kl.Fixed64),this.writeDouble(S)},writeBooleanField:function(R,S){this.writeVarintField(R,!!S)}};var eS=o(bd);let tS=3;function yQ(R,S,D){R===1&&D.readMessage(O9,S)}function O9(R,S,D){if(R===3){let{id:j,bitmap:te,width:ue,height:ve,left:De,top:Ze,advance:at}=D.readMessage(fC,{});S.push({id:j,bitmap:new Ao({width:ue+2*tS,height:ve+2*tS},te),metrics:{width:ue,height:ve,left:De,top:Ze,advance:at}})}}function fC(R,S,D){R===1?S.id=D.readVarint():R===2?S.bitmap=D.readBytes():R===3?S.width=D.readVarint():R===4?S.height=D.readVarint():R===5?S.left=D.readSVarint():R===6?S.top=D.readSVarint():R===7&&(S.advance=D.readVarint())}let hC=tS;function rS(R){let S=0,D=0;for(let ve of R)S+=ve.w*ve.h,D=Math.max(D,ve.w);R.sort((ve,De)=>De.h-ve.h);let j=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(S/.95)),D),h:1/0}],te=0,ue=0;for(let ve of R)for(let De=j.length-1;De>=0;De--){let Ze=j[De];if(!(ve.w>Ze.w||ve.h>Ze.h)){if(ve.x=Ze.x,ve.y=Ze.y,ue=Math.max(ue,ve.y+ve.h),te=Math.max(te,ve.x+ve.w),ve.w===Ze.w&&ve.h===Ze.h){let at=j.pop();De=0&&j>=S&&Lw[this.text.charCodeAt(j)];j--)D--;this.text=this.text.substring(S,D),this.sectionIndex=this.sectionIndex.slice(S,D)}substring(S,D){let j=new S1;return j.text=this.text.substring(S,D),j.sectionIndex=this.sectionIndex.slice(S,D),j.sections=this.sections,j}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((S,D)=>Math.max(S,this.sections[D].scale),0)}addTextSection(S,D){this.text+=S.text,this.sections.push(Hx.forText(S.scale,S.fontStack||D));let j=this.sections.length-1;for(let te=0;te=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Gx(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=S1.fromFeature(R,te),$r;Ft===i.ah.vertical&&Pr.verticalizePunctuation();let{processBidirectionalText:ni,processStyledBidirectionalText:Di}=vs;if(ni&&Pr.sections.length===1){$r=[];let Zi=ni(Pr.toString(),M1(Pr,at,ue,S,j,sr));for(let ta of Zi){let Va=new S1;Va.text=ta,Va.sections=Pr.sections;for(let Io=0;Io0&&ep>xf&&(xf=ep)}else{let oc=Va[Cl.fontStack],If=oc&&oc[Tu];if(If&&If.rect)I1=If.rect,qc=If.metrics;else{let ep=ta[Cl.fontStack],gg=ep&&ep[Tu];if(!gg)continue;qc=gg.metrics}Rv=(fh-Cl.scale)*kl}Qv?(Zi.verticalizable=!0,Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=Gp*Cl.scale+Tn):(Dh.push({glyph:Tu,imageName:p0,x:Uo,y:wu+Rv,vertical:Qv,scale:Cl.scale,fontStack:Cl.fontStack,sectionIndex:qu,metrics:qc,rect:I1}),Uo+=qc.advance*Cl.scale+Tn)}Dh.length!==0&&(hu=Math.max(Uo-Tn,hu),sm(Dh,0,Dh.length-1,$v,xf)),Uo=0;let Iv=Hn*fh+xf;rd.lineOffset=Math.max(xf,Td),wu+=Iv,uh=Math.max(Iv,uh),++td}var ch;let Ud=wu-lh,{horizontalAlign:Vd,verticalAlign:Hd}=Iw(lo);(function(rf,fh,Td,rd,Dh,xf,Iv,lv,Cl){let qu=(fh-Td)*Dh,Tu=0;Tu=xf!==Iv?-lv*rd-lh:(-rd*Cl+.5)*Iv;for(let Rv of rf)for(let qc of Rv.positionedGlyphs)qc.x+=qu,qc.y+=Tu})(Zi.positionedLines,$v,Vd,Hd,hu,uh,Hn,Ud,La.length),Zi.top+=-Hd*Ud,Zi.bottom=Zi.top+Ud,Zi.left+=-Vd*hu,Zi.right=Zi.left+hu}(ki,S,D,j,$r,ve,De,Ze,Ft,at,Qt,Tr),!function(Zi){for(let ta of Zi)if(ta.positionedGlyphs.length!==0)return!1;return!0}(pi)&&ki}let Lw={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},B9={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},N9={40:!0};function dC(R,S,D,j,te,ue){if(S.imageName){let ve=j[S.imageName];return ve?ve.displaySize[0]*S.scale*kl/ue+te:0}{let ve=D[S.fontStack],De=ve&&ve[R];return De?De.metrics.advance*S.scale+te:0}}function vC(R,S,D,j){let te=Math.pow(R-S,2);return j?R=0,at=0;for(let Ft=0;Ftat){let Tt=Math.ceil(ue/at);te*=Tt/ve,ve=Tt}return{x1:j,y1:te,x2:j+ue,y2:te+ve}}function mC(R,S,D,j,te,ue){let ve=R.image,De;if(ve.content){let $r=ve.content,ni=ve.pixelRatio||1;De=[$r[0]/ni,$r[1]/ni,ve.displaySize[0]-$r[2]/ni,ve.displaySize[1]-$r[3]/ni]}let Ze=S.left*ue,at=S.right*ue,Tt,Ft,Qt,sr;D==="width"||D==="both"?(sr=te[0]+Ze-j[3],Ft=te[0]+at+j[1]):(sr=te[0]+(Ze+at-ve.displaySize[0])/2,Ft=sr+ve.displaySize[0]);let Tr=S.top*ue,Pr=S.bottom*ue;return D==="height"||D==="both"?(Tt=te[1]+Tr-j[0],Qt=te[1]+Pr+j[2]):(Tt=te[1]+(Tr+Pr-ve.displaySize[1])/2,Qt=Tt+ve.displaySize[1]),{image:ve,top:Tt,right:Ft,bottom:Qt,left:sr,collisionPadding:De}}let Wx=255,v0=128,lm=Wx*v0;function yC(R,S){let{expression:D}=S;if(D.kind==="constant")return{kind:"constant",layoutSize:D.evaluate(new Ko(R+1))};if(D.kind==="source")return{kind:"source"};{let{zoomStops:j,interpolationType:te}=D,ue=0;for(;ueve.id),this.index=S.index,this.pixelRatio=S.pixelRatio,this.sourceLayerIndex=S.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=Un([]),this.placementViewportMatrix=Un([]);let D=this.layers[0]._unevaluatedLayout._values;this.textSizeData=yC(this.zoom,D["text-size"]),this.iconSizeData=yC(this.zoom,D["icon-size"]);let j=this.layers[0].layout,te=j.get("symbol-sort-key"),ue=j.get("symbol-z-order");this.canOverlap=iS(j,"text-overlap","text-allow-overlap")!=="never"||iS(j,"icon-overlap","icon-allow-overlap")!=="never"||j.get("text-ignore-placement")||j.get("icon-ignore-placement"),this.sortFeaturesByKey=ue!=="viewport-y"&&!te.isConstant(),this.sortFeaturesByY=(ue==="viewport-y"||ue==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,j.get("symbol-placement")==="point"&&(this.writingModes=j.get("text-writing-mode").map(ve=>i.ah[ve])),this.stateDependentLayerIds=this.layers.filter(ve=>ve.isStateDependent()).map(ve=>ve.id),this.sourceID=S.sourceID}createArrays(){this.text=new oS(new _s(this.layers,this.zoom,S=>/^text/.test(S))),this.icon=new oS(new _s(this.layers,this.zoom,S=>/^icon/.test(S))),this.glyphOffsetArray=new To,this.lineVertexArray=new Wa,this.symbolInstances=new Ga,this.textAnchorOffsets=new Ro}calculateGlyphDependencies(S,D,j,te,ue){for(let ve=0;ve0)&&(ve.value.kind!=="constant"||ve.value.value.length>0),Tt=Ze.value.kind!=="constant"||!!Ze.value.value||Object.keys(Ze.parameters).length>0,Ft=ue.get("symbol-sort-key");if(this.features=[],!at&&!Tt)return;let Qt=D.iconDependencies,sr=D.glyphDependencies,Tr=D.availableImages,Pr=new Ko(this.zoom);for(let{feature:$r,id:ni,index:Di,sourceLayerIndex:pi}of S){let ki=te._featureFilter.needGeometry,Zi=xl($r,ki);if(!te._featureFilter.filter(Pr,Zi,j))continue;let ta,Va;if(ki||(Zi.geometry=js($r)),at){let La=te.getValueAndResolveTokens("text-field",Zi,j,Tr),Hn=Zr.factory(La),lo=this.hasRTLText=this.hasRTLText||aS(Hn);(!lo||vs.getRTLTextPluginStatus()==="unavailable"||lo&&vs.isParsed())&&(ta=nm(Hn,te,Zi))}if(Tt){let La=te.getValueAndResolveTokens("icon-image",Zi,j,Tr);Va=La instanceof Mi?La:Mi.fromString(La)}if(!ta&&!Va)continue;let Io=this.sortFeaturesByKey?Ft.evaluate(Zi,{},j):void 0;if(this.features.push({id:ni,text:ta,icon:Va,index:Di,sourceLayerIndex:pi,geometry:Zi.geometry,properties:$r.properties,type:V9[$r.type],sortKey:Io}),Va&&(Qt[Va.name]=!0),ta){let La=ve.evaluate(Zi,{},j).join(","),Hn=ue.get("text-rotation-alignment")!=="viewport"&&ue.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(i.ah.vertical)>=0;for(let lo of ta.sections)if(lo.image)Qt[lo.image.name]=!0;else{let $a=Ua(ta.toString()),Xa=lo.fontStack||La,Tn=sr[Xa]=sr[Xa]||{};this.calculateGlyphDependencies(lo.text,Tn,Hn,this.allowVerticalPlacement,$a)}}}ue.get("symbol-placement")==="line"&&(this.features=function($r){let ni={},Di={},pi=[],ki=0;function Zi(La){pi.push($r[La]),ki++}function ta(La,Hn,lo){let $a=Di[La];return delete Di[La],Di[Hn]=$a,pi[$a].geometry[0].pop(),pi[$a].geometry[0]=pi[$a].geometry[0].concat(lo[0]),$a}function Va(La,Hn,lo){let $a=ni[Hn];return delete ni[Hn],ni[La]=$a,pi[$a].geometry[0].shift(),pi[$a].geometry[0]=lo[0].concat(pi[$a].geometry[0]),$a}function Io(La,Hn,lo){let $a=lo?Hn[0][Hn[0].length-1]:Hn[0][0];return`${La}:${$a.x}:${$a.y}`}for(let La=0;La<$r.length;La++){let Hn=$r[La],lo=Hn.geometry,$a=Hn.text?Hn.text.toString():null;if(!$a){Zi(La);continue}let Xa=Io($a,lo),Tn=Io($a,lo,!0);if(Xa in Di&&Tn in ni&&Di[Xa]!==ni[Tn]){let bo=Va(Xa,Tn,lo),Ya=ta(Xa,Tn,pi[bo].geometry);delete ni[Xa],delete Di[Tn],Di[Io($a,pi[Ya].geometry,!0)]=Ya,pi[bo].geometry=null}else Xa in Di?ta(Xa,Tn,lo):Tn in ni?Va(Xa,Tn,lo):(Zi(La),ni[Xa]=ki-1,Di[Tn]=ki-1)}return pi.filter(La=>La.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort(($r,ni)=>$r.sortKey-ni.sortKey)}update(S,D,j){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(S,D,this.layers,j),this.icon.programConfigurations.updatePaintArrays(S,D,this.layers,j))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(S){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(S),this.iconCollisionBox.upload(S)),this.text.upload(S,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(S,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(S,D){let j=this.lineVertexArray.length;if(S.segment!==void 0){let te=S.dist(D[S.segment+1]),ue=S.dist(D[S.segment]),ve={};for(let De=S.segment+1;De=0;De--)ve[De]={x:D[De].x,y:D[De].y,tileUnitDistanceFromAnchor:ue},De>0&&(ue+=D[De-1].dist(D[De]));for(let De=0;De0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(S,D){let j=S.placedSymbolArray.get(D),te=j.vertexStartIndex+4*j.numGlyphs;for(let ue=j.vertexStartIndex;uete[De]-te[Ze]||ue[Ze]-ue[De]),ve}addToSortKeyRanges(S,D){let j=this.sortKeyRanges[this.sortKeyRanges.length-1];j&&j.sortKey===D?j.symbolInstanceEnd=S+1:this.sortKeyRanges.push({sortKey:D,symbolInstanceStart:S,symbolInstanceEnd:S+1})}sortFeatures(S){if(this.sortFeaturesByY&&this.sortedAngle!==S&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(S),this.sortedAngle=S,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let D of this.symbolInstanceIndexes){let j=this.symbolInstances.get(D);this.featureSortOrder.push(j.featureIndex),[j.rightJustifiedTextSymbolIndex,j.centerJustifiedTextSymbolIndex,j.leftJustifiedTextSymbolIndex].forEach((te,ue,ve)=>{te>=0&&ve.indexOf(te)===ue&&this.addIndicesForPlacedSymbol(this.text,te)}),j.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,j.verticalPlacedTextSymbolIndex),j.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.placedIconSymbolIndex),j.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,j.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let tf,Zx;mi("SymbolBucket",E1,{omit:["layers","collisionBoxArray","features","compareText"]}),E1.MAX_GLYPHS=65535,E1.addDynamicAttributes=nS;var Dw={get paint(){return Zx=Zx||new le({"icon-opacity":new eo(ce.paint_symbol["icon-opacity"]),"icon-color":new eo(ce.paint_symbol["icon-color"]),"icon-halo-color":new eo(ce.paint_symbol["icon-halo-color"]),"icon-halo-width":new eo(ce.paint_symbol["icon-halo-width"]),"icon-halo-blur":new eo(ce.paint_symbol["icon-halo-blur"]),"icon-translate":new Da(ce.paint_symbol["icon-translate"]),"icon-translate-anchor":new Da(ce.paint_symbol["icon-translate-anchor"]),"text-opacity":new eo(ce.paint_symbol["text-opacity"]),"text-color":new eo(ce.paint_symbol["text-color"],{runtimeType:Ht,getOverride:R=>R.textColor,hasOverride:R=>!!R.textColor}),"text-halo-color":new eo(ce.paint_symbol["text-halo-color"]),"text-halo-width":new eo(ce.paint_symbol["text-halo-width"]),"text-halo-blur":new eo(ce.paint_symbol["text-halo-blur"]),"text-translate":new Da(ce.paint_symbol["text-translate"]),"text-translate-anchor":new Da(ce.paint_symbol["text-translate-anchor"])})},get layout(){return tf=tf||new le({"symbol-placement":new Da(ce.layout_symbol["symbol-placement"]),"symbol-spacing":new Da(ce.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Da(ce.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new eo(ce.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Da(ce.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Da(ce.layout_symbol["icon-allow-overlap"]),"icon-overlap":new Da(ce.layout_symbol["icon-overlap"]),"icon-ignore-placement":new Da(ce.layout_symbol["icon-ignore-placement"]),"icon-optional":new Da(ce.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Da(ce.layout_symbol["icon-rotation-alignment"]),"icon-size":new eo(ce.layout_symbol["icon-size"]),"icon-text-fit":new Da(ce.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Da(ce.layout_symbol["icon-text-fit-padding"]),"icon-image":new eo(ce.layout_symbol["icon-image"]),"icon-rotate":new eo(ce.layout_symbol["icon-rotate"]),"icon-padding":new eo(ce.layout_symbol["icon-padding"]),"icon-keep-upright":new Da(ce.layout_symbol["icon-keep-upright"]),"icon-offset":new eo(ce.layout_symbol["icon-offset"]),"icon-anchor":new eo(ce.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Da(ce.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Da(ce.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Da(ce.layout_symbol["text-rotation-alignment"]),"text-field":new eo(ce.layout_symbol["text-field"]),"text-font":new eo(ce.layout_symbol["text-font"]),"text-size":new eo(ce.layout_symbol["text-size"]),"text-max-width":new eo(ce.layout_symbol["text-max-width"]),"text-line-height":new Da(ce.layout_symbol["text-line-height"]),"text-letter-spacing":new eo(ce.layout_symbol["text-letter-spacing"]),"text-justify":new eo(ce.layout_symbol["text-justify"]),"text-radial-offset":new eo(ce.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Da(ce.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new eo(ce.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new eo(ce.layout_symbol["text-anchor"]),"text-max-angle":new Da(ce.layout_symbol["text-max-angle"]),"text-writing-mode":new Da(ce.layout_symbol["text-writing-mode"]),"text-rotate":new eo(ce.layout_symbol["text-rotate"]),"text-padding":new Da(ce.layout_symbol["text-padding"]),"text-keep-upright":new Da(ce.layout_symbol["text-keep-upright"]),"text-transform":new eo(ce.layout_symbol["text-transform"]),"text-offset":new eo(ce.layout_symbol["text-offset"]),"text-allow-overlap":new Da(ce.layout_symbol["text-allow-overlap"]),"text-overlap":new Da(ce.layout_symbol["text-overlap"]),"text-ignore-placement":new Da(ce.layout_symbol["text-ignore-placement"]),"text-optional":new Da(ce.layout_symbol["text-optional"])})}};class Xx{constructor(S){if(S.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=S.property.overrides?S.property.overrides.runtimeType:Lt,this.defaultValue=S}evaluate(S){if(S.formattedSection){let D=this.defaultValue.property.overrides;if(D&&D.hasOverride(S.formattedSection))return D.getOverride(S.formattedSection)}return S.feature&&S.featureState?this.defaultValue.evaluate(S.feature,S.featureState):this.defaultValue.property.specification.default}eachChild(S){this.defaultValue.isConstant()||S(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}mi("FormatSectionOverride",Xx,{omit:["defaultValue"]});class uy extends B{constructor(S){super(S,Dw)}recalculate(S,D){if(super.recalculate(S,D),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let j=this.layout.get("text-writing-mode");if(j){let te=[];for(let ue of j)te.indexOf(ue)<0&&te.push(ue);this.layout._values["text-writing-mode"]=te}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(S,D,j,te){let ue=this.layout.get(S).evaluate(D,{},j,te),ve=this._unevaluatedLayout._values[S];return ve.isDataDriven()||Lc(ve.value)||!ue?ue:function(De,Ze){return Ze.replace(/{([^{}]+)}/g,(at,Tt)=>De&&Tt in De?String(De[Tt]):"")}(D.properties,ue)}createBucket(S){return new E1(S)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let S of Dw.paint.overridableProperties){if(!uy.hasPaintOverride(this.layout,S))continue;let D=this.paint.get(S),j=new Xx(D),te=new Pu(j,D.property.specification),ue=null;ue=D.value.kind==="constant"||D.value.kind==="source"?new Xc("source",te):new ic("composite",te,D.value.zoomStops),this.paint._values[S]=new Du(D.property,ue,D.parameters)}}_handleOverridablePaintPropertyUpdate(S,D,j){return!(!this.layout||D.isDataDriven()||j.isDataDriven())&&uy.hasPaintOverride(this.layout,S)}static hasPaintOverride(S,D){let j=S.get("text-field"),te=Dw.paint.properties[D],ue=!1,ve=De=>{for(let Ze of De)if(te.overrides&&te.overrides.hasOverride(Ze))return void(ue=!0)};if(j.value.kind==="constant"&&j.value.value instanceof Zr)ve(j.value.value.sections);else if(j.value.kind==="source"){let De=at=>{ue||(at instanceof jn&&Ki(at.value)===Br?ve(at.value.sections):at instanceof Ql?ve(at.sections):at.eachChild(De))},Ze=j.value;Ze._styleExpression&&De(Ze._styleExpression.expression)}return ue}}let _C;var Yx={get paint(){return _C=_C||new le({"background-color":new Da(ce.paint_background["background-color"]),"background-pattern":new yc(ce.paint_background["background-pattern"]),"background-opacity":new Da(ce.paint_background["background-opacity"])})}};class G9 extends B{constructor(S){super(S,Yx)}}let sS;var xC={get paint(){return sS=sS||new le({"raster-opacity":new Da(ce.paint_raster["raster-opacity"]),"raster-hue-rotate":new Da(ce.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new Da(ce.paint_raster["raster-brightness-min"]),"raster-brightness-max":new Da(ce.paint_raster["raster-brightness-max"]),"raster-saturation":new Da(ce.paint_raster["raster-saturation"]),"raster-contrast":new Da(ce.paint_raster["raster-contrast"]),"raster-resampling":new Da(ce.paint_raster["raster-resampling"]),"raster-fade-duration":new Da(ce.paint_raster["raster-fade-duration"])})}};class Kx extends B{constructor(S){super(S,xC)}}class lS extends B{constructor(S){super(S,{}),this.onAdd=D=>{this.implementation.onAdd&&this.implementation.onAdd(D,D.painter.context.gl)},this.onRemove=D=>{this.implementation.onRemove&&this.implementation.onRemove(D,D.painter.context.gl)},this.implementation=S}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class uS{constructor(S){this._methodToThrottle=S,this._triggered=!1,typeof MessageChannel!="undefined"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let cS=63710088e-1;class dg{constructor(S,D){if(isNaN(S)||isNaN(D))throw new Error(`Invalid LngLat object: (${S}, ${D})`);if(this.lng=+S,this.lat=+D,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new dg(A(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(S){let D=Math.PI/180,j=this.lat*D,te=S.lat*D,ue=Math.sin(j)*Math.sin(te)+Math.cos(j)*Math.cos(te)*Math.cos((S.lng-this.lng)*D);return cS*Math.acos(Math.min(ue,1))}static convert(S){if(S instanceof dg)return S;if(Array.isArray(S)&&(S.length===2||S.length===3))return new dg(Number(S[0]),Number(S[1]));if(!Array.isArray(S)&&typeof S=="object"&&S!==null)return new dg(Number("lng"in S?S.lng:S.lon),Number(S.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let k1=2*Math.PI*cS;function bC(R){return k1*Math.cos(R*Math.PI/180)}function zw(R){return(180+R)/360}function wC(R){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+R*Math.PI/360)))/360}function Fw(R,S){return R/bC(S)}function Jx(R){return 360/Math.PI*Math.atan(Math.exp((180-360*R)*Math.PI/180))-90}class $x{constructor(S,D,j=0){this.x=+S,this.y=+D,this.z=+j}static fromLngLat(S,D=0){let j=dg.convert(S);return new $x(zw(j.lng),wC(j.lat),Fw(D,j.lat))}toLngLat(){return new dg(360*this.x-180,Jx(this.y))}toAltitude(){return this.z*bC(Jx(this.y))}meterInMercatorCoordinateUnits(){return 1/k1*(S=Jx(this.y),1/Math.cos(S*Math.PI/180));var S}}function gp(R,S,D){var j=2*Math.PI*6378137/256/Math.pow(2,D);return[R*j-2*Math.PI*6378137/2,S*j-2*Math.PI*6378137/2]}class fS{constructor(S,D,j){if(!function(te,ue,ve){return!(te<0||te>25||ve<0||ve>=Math.pow(2,te)||ue<0||ue>=Math.pow(2,te))}(S,D,j))throw new Error(`x=${D}, y=${j}, z=${S} outside of bounds. 0<=x<${Math.pow(2,S)}, 0<=y<${Math.pow(2,S)} 0<=z<=25 `);this.z=S,this.x=D,this.y=j,this.key=Qx(0,S,S,D,j)}equals(S){return this.z===S.z&&this.x===S.x&&this.y===S.y}url(S,D,j){let te=(ve=this.y,De=this.z,Ze=gp(256*(ue=this.x),256*(ve=Math.pow(2,De)-ve-1),De),at=gp(256*(ue+1),256*(ve+1),De),Ze[0]+","+Ze[1]+","+at[0]+","+at[1]);var ue,ve,De,Ze,at;let Tt=function(Ft,Qt,sr){let Tr,Pr="";for(let $r=Ft;$r>0;$r--)Tr=1<<$r-1,Pr+=(Qt&Tr?1:0)+(sr&Tr?2:0);return Pr}(this.z,this.x,this.y);return S[(this.x+this.y)%S.length].replace(/{prefix}/g,(this.x%16).toString(16)+(this.y%16).toString(16)).replace(/{z}/g,String(this.z)).replace(/{x}/g,String(this.x)).replace(/{y}/g,String(j==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace(/{ratio}/g,D>1?"@2x":"").replace(/{quadkey}/g,Tt).replace(/{bbox-epsg-3857}/g,te)}isChildOf(S){let D=this.z-S.z;return D>0&&S.x===this.x>>D&&S.y===this.y>>D}getTilePoint(S){let D=Math.pow(2,this.z);return new u((S.x*D-this.x)*za,(S.y*D-this.y)*za)}toString(){return`${this.z}/${this.x}/${this.y}`}}class TC{constructor(S,D){this.wrap=S,this.canonical=D,this.key=Qx(S,D.z,D.z,D.x,D.y)}}class Jv{constructor(S,D,j,te,ue){if(S= z; overscaledZ = ${S}; z = ${j}`);this.overscaledZ=S,this.wrap=D,this.canonical=new fS(j,+te,+ue),this.key=Qx(D,S,j,te,ue)}clone(){return new Jv(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(S){return this.overscaledZ===S.overscaledZ&&this.wrap===S.wrap&&this.canonical.equals(S.canonical)}scaledTo(S){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let D=this.canonical.z-S;return S>this.canonical.z?new Jv(S,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Jv(S,this.wrap,S,this.canonical.x>>D,this.canonical.y>>D)}calculateScaledKey(S,D){if(S>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${S}; overscaledZ = ${this.overscaledZ}`);let j=this.canonical.z-S;return S>this.canonical.z?Qx(this.wrap*+D,S,this.canonical.z,this.canonical.x,this.canonical.y):Qx(this.wrap*+D,S,S,this.canonical.x>>j,this.canonical.y>>j)}isChildOf(S){if(S.wrap!==this.wrap)return!1;let D=this.canonical.z-S.canonical.z;return S.overscaledZ===0||S.overscaledZ>D&&S.canonical.y===this.canonical.y>>D}children(S){if(this.overscaledZ>=S)return[new Jv(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let D=this.canonical.z+1,j=2*this.canonical.x,te=2*this.canonical.y;return[new Jv(D,this.wrap,D,j,te),new Jv(D,this.wrap,D,j+1,te),new Jv(D,this.wrap,D,j,te+1),new Jv(D,this.wrap,D,j+1,te+1)]}isLessThan(S){return this.wrapS.wrap)&&(this.overscaledZS.overscaledZ)&&(this.canonical.xS.canonical.x)&&this.canonical.ythis.max&&(this.max=Ft),Ft=this.dim+1||D<-1||D>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(D+1)*this.stride+(S+1)}unpack(S,D,j){return S*this.redFactor+D*this.greenFactor+j*this.blueFactor-this.baseShift}getPixels(){return new Jn({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(S,D,j){if(this.dim!==S.dim)throw new Error("dem dimension mismatch");let te=D*this.dim,ue=D*this.dim+this.dim,ve=j*this.dim,De=j*this.dim+this.dim;switch(D){case-1:te=ue-1;break;case 1:ue=te+1}switch(j){case-1:ve=De-1;break;case 1:De=ve+1}let Ze=-D*this.dim,at=-j*this.dim;for(let Tt=ve;Tt=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${S} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[S]}}class hS{constructor(S,D,j,te,ue){this.type="Feature",this._vectorTileFeature=S,S._z=D,S._x=j,S._y=te,this.properties=S.properties,this.id=ue}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(S){this._geometry=S}toJSON(){let S={geometry:this.geometry};for(let D in this)D!=="_geometry"&&D!=="_vectorTileFeature"&&(S[D]=this[D]);return S}}class cy{constructor(S,D){this.tileID=S,this.x=S.canonical.x,this.y=S.canonical.y,this.z=S.canonical.z,this.grid=new qi(za,16,0),this.grid3D=new qi(za,16,0),this.featureIndexArray=new As,this.promoteId=D}insert(S,D,j,te,ue,ve){let De=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(j,te,ue);let Ze=ve?this.grid3D:this.grid;for(let at=0;at=0&&Ft[3]>=0&&Ze.insert(De,Ft[0],Ft[1],Ft[2],Ft[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new ei.VectorTile(new eS(this.rawTileData)).layers,this.sourceLayerCoder=new SC(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(S,D,j,te){this.loadVTLayers();let ue=S.params||{},ve=za/S.tileSize/S.scale,De=Pc(ue.filter),Ze=S.queryGeometry,at=S.queryPadding*ve,Tt=EC(Ze),Ft=this.grid.query(Tt.minX-at,Tt.minY-at,Tt.maxX+at,Tt.maxY+at),Qt=EC(S.cameraQueryGeometry),sr=this.grid3D.query(Qt.minX-at,Qt.minY-at,Qt.maxX+at,Qt.maxY+at,($r,ni,Di,pi)=>function(ki,Zi,ta,Va,Io){for(let Hn of ki)if(Zi<=Hn.x&&ta<=Hn.y&&Va>=Hn.x&&Io>=Hn.y)return!0;let La=[new u(Zi,ta),new u(Zi,Io),new u(Va,Io),new u(Va,ta)];if(ki.length>2){for(let Hn of La)if(On(ki,Hn))return!0}for(let Hn=0;Hn(pi||(pi=js(ki)),Zi.queryIntersectsFeature(Ze,ki,ta,pi,this.z,S.transform,ve,S.pixelPosMatrix)))}return Tr}loadMatchingFeature(S,D,j,te,ue,ve,De,Ze,at,Tt,Ft){let Qt=this.bucketLayerIDs[D];if(ve&&!function($r,ni){for(let Di=0;Di<$r.length;Di++)if(ni.indexOf($r[Di])>=0)return!0;return!1}(ve,Qt))return;let sr=this.sourceLayerCoder.decode(j),Tr=this.vtLayers[sr].feature(te);if(ue.needGeometry){let $r=xl(Tr,!0);if(!ue.filter(new Ko(this.tileID.overscaledZ),$r,this.tileID.canonical))return}else if(!ue.filter(new Ko(this.tileID.overscaledZ),Tr))return;let Pr=this.getId(Tr,sr);for(let $r=0;$r{let De=S instanceof Dc?S.get(ve):null;return De&&De.evaluate?De.evaluate(D,j,te):De})}function EC(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return{minX:S,minY:D,maxX:j,maxY:te}}function j9(R,S){return S-R}function kC(R,S,D,j,te){let ue=[];for(let ve=0;ve=j&&Ft.x>=j||(Tt.x>=j?Tt=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round():Ft.x>=j&&(Ft=new u(j,Tt.y+(j-Tt.x)/(Ft.x-Tt.x)*(Ft.y-Tt.y))._round()),Tt.y>=te&&Ft.y>=te||(Tt.y>=te?Tt=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round():Ft.y>=te&&(Ft=new u(Tt.x+(te-Tt.y)/(Ft.y-Tt.y)*(Ft.x-Tt.x),te)._round()),Ze&&Tt.equals(Ze[Ze.length-1])||(Ze=[Tt],ue.push(Ze)),Ze.push(Ft)))))}}return ue}mi("FeatureIndex",cy,{omit:["rawTileData","sourceLayerCoder"]});class vg extends u{constructor(S,D,j,te){super(S,D),this.angle=j,te!==void 0&&(this.segment=te)}clone(){return new vg(this.x,this.y,this.angle,this.segment)}}function dS(R,S,D,j,te){if(S.segment===void 0||D===0)return!0;let ue=S,ve=S.segment+1,De=0;for(;De>-D/2;){if(ve--,ve<0)return!1;De-=R[ve].dist(ue),ue=R[ve]}De+=R[ve].dist(R[ve+1]),ve++;let Ze=[],at=0;for(;Dej;)at-=Ze.shift().angleDelta;if(at>te)return!1;ve++,De+=Tt.dist(Ft)}return!0}function CC(R){let S=0;for(let D=0;Dat){let Tr=(at-Ze)/sr,Pr=Mo.number(Ft.x,Qt.x,Tr),$r=Mo.number(Ft.y,Qt.y,Tr),ni=new vg(Pr,$r,Qt.angleTo(Ft),Tt);return ni._round(),!ve||dS(R,ni,De,ve,S)?ni:void 0}Ze+=sr}}function Z9(R,S,D,j,te,ue,ve,De,Ze){let at=LC(j,ue,ve),Tt=PC(j,te),Ft=Tt*ve,Qt=R[0].x===0||R[0].x===Ze||R[0].y===0||R[0].y===Ze;return S-Ft=0&&ki=0&&Zi=0&&Qt+at<=Tt){let ta=new vg(ki,Zi,Di,Tr);ta._round(),j&&!dS(R,ta,ue,j,te)||sr.push(ta)}}Ft+=ni}return De||sr.length||ve||(sr=IC(R,Ft/2,D,j,te,ue,ve,!0,Ze)),sr}mi("Anchor",vg);let C1=wd;function RC(R,S,D,j){let te=[],ue=R.image,ve=ue.pixelRatio,De=ue.paddedRect.w-2*C1,Ze=ue.paddedRect.h-2*C1,at={x1:R.left,y1:R.top,x2:R.right,y2:R.bottom},Tt=ue.stretchX||[[0,De]],Ft=ue.stretchY||[[0,Ze]],Qt=(Tn,bo)=>Tn+bo[1]-bo[0],sr=Tt.reduce(Qt,0),Tr=Ft.reduce(Qt,0),Pr=De-sr,$r=Ze-Tr,ni=0,Di=sr,pi=0,ki=Tr,Zi=0,ta=Pr,Va=0,Io=$r;if(ue.content&&j){let Tn=ue.content,bo=Tn[2]-Tn[0],Ya=Tn[3]-Tn[1];(ue.textFitWidth||ue.textFitHeight)&&(at=gC(R)),ni=pg(Tt,0,Tn[0]),pi=pg(Ft,0,Tn[1]),Di=pg(Tt,Tn[0],Tn[2]),ki=pg(Ft,Tn[1],Tn[3]),Zi=Tn[0]-ni,Va=Tn[1]-pi,ta=bo-Di,Io=Ya-ki}let La=at.x1,Hn=at.y1,lo=at.x2-La,$a=at.y2-Hn,Xa=(Tn,bo,Ya,Uo)=>{let wu=qw(Tn.stretch-ni,Di,lo,La),hu=L1(Tn.fixed-Zi,ta,Tn.stretch,sr),uh=qw(bo.stretch-pi,ki,$a,Hn),$v=L1(bo.fixed-Va,Io,bo.stretch,Tr),td=qw(Ya.stretch-ni,Di,lo,La),ch=L1(Ya.fixed-Zi,ta,Ya.stretch,sr),Ud=qw(Uo.stretch-pi,ki,$a,Hn),Vd=L1(Uo.fixed-Va,Io,Uo.stretch,Tr),Hd=new u(wu,uh),rf=new u(td,uh),fh=new u(td,Ud),Td=new u(wu,Ud),rd=new u(hu/ve,$v/ve),Dh=new u(ch/ve,Vd/ve),xf=S*Math.PI/180;if(xf){let Cl=Math.sin(xf),qu=Math.cos(xf),Tu=[qu,-Cl,Cl,qu];Hd._matMult(Tu),rf._matMult(Tu),Td._matMult(Tu),fh._matMult(Tu)}let Iv=Tn.stretch+Tn.fixed,lv=bo.stretch+bo.fixed;return{tl:Hd,tr:rf,bl:Td,br:fh,tex:{x:ue.paddedRect.x+C1+Iv,y:ue.paddedRect.y+C1+lv,w:Ya.stretch+Ya.fixed-Iv,h:Uo.stretch+Uo.fixed-lv},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:rd,pixelOffsetBR:Dh,minFontScaleX:ta/ve/lo,minFontScaleY:Io/ve/$a,isSDF:D}};if(j&&(ue.stretchX||ue.stretchY)){let Tn=DC(Tt,Pr,sr),bo=DC(Ft,$r,Tr);for(let Ya=0;Ya0&&(Pr=Math.max(10,Pr),this.circleDiameter=Pr)}else{let Qt=!((Ft=ve.image)===null||Ft===void 0)&&Ft.content&&(ve.image.textFitWidth||ve.image.textFitHeight)?gC(ve):{x1:ve.left,y1:ve.top,x2:ve.right,y2:ve.bottom};Qt.y1=Qt.y1*De-Ze[0],Qt.y2=Qt.y2*De+Ze[2],Qt.x1=Qt.x1*De-Ze[3],Qt.x2=Qt.x2*De+Ze[1];let sr=ve.collisionPadding;if(sr&&(Qt.x1-=sr[0]*De,Qt.y1-=sr[1]*De,Qt.x2+=sr[2]*De,Qt.y2+=sr[3]*De),Tt){let Tr=new u(Qt.x1,Qt.y1),Pr=new u(Qt.x2,Qt.y1),$r=new u(Qt.x1,Qt.y2),ni=new u(Qt.x2,Qt.y2),Di=Tt*Math.PI/180;Tr._rotate(Di),Pr._rotate(Di),$r._rotate(Di),ni._rotate(Di),Qt.x1=Math.min(Tr.x,Pr.x,$r.x,ni.x),Qt.x2=Math.max(Tr.x,Pr.x,$r.x,ni.x),Qt.y1=Math.min(Tr.y,Pr.y,$r.y,ni.y),Qt.y2=Math.max(Tr.y,Pr.y,$r.y,ni.y)}S.emplaceBack(D.x,D.y,Qt.x1,Qt.y1,Qt.x2,Qt.y2,j,te,ue)}this.boxEndIndex=S.length}}class Hp{constructor(S=[],D=(j,te)=>jte?1:0){if(this.data=S,this.length=this.data.length,this.compare=D,this.length>0)for(let j=(this.length>>1)-1;j>=0;j--)this._down(j)}push(S){this.data.push(S),this._up(this.length++)}pop(){if(this.length===0)return;let S=this.data[0],D=this.data.pop();return--this.length>0&&(this.data[0]=D,this._down(0)),S}peek(){return this.data[0]}_up(S){let{data:D,compare:j}=this,te=D[S];for(;S>0;){let ue=S-1>>1,ve=D[ue];if(j(te,ve)>=0)break;D[S]=ve,S=ue}D[S]=te}_down(S){let{data:D,compare:j}=this,te=this.length>>1,ue=D[S];for(;S=0)break;D[S]=D[ve],S=ve}D[S]=ue}}function X9(R,S=1,D=!1){let j=1/0,te=1/0,ue=-1/0,ve=-1/0,De=R[0];for(let sr=0;srue)&&(ue=Tr.x),(!sr||Tr.y>ve)&&(ve=Tr.y)}let Ze=Math.min(ue-j,ve-te),at=Ze/2,Tt=new Hp([],Y9);if(Ze===0)return new u(j,te);for(let sr=j;srFt.d||!Ft.d)&&(Ft=sr,D&&console.log("found best %d after %d probes",Math.round(1e4*sr.d)/1e4,Qt)),sr.max-Ft.d<=S||(at=sr.h/2,Tt.push(new P1(sr.p.x-at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y-at,at,R)),Tt.push(new P1(sr.p.x-at,sr.p.y+at,at,R)),Tt.push(new P1(sr.p.x+at,sr.p.y+at,at,R)),Qt+=4)}return D&&(console.log(`num probes: ${Qt}`),console.log(`best distance: ${Ft.d}`)),Ft.p}function Y9(R,S){return S.max-R.max}function P1(R,S,D,j){this.p=new u(R,S),this.h=D,this.d=function(te,ue){let ve=!1,De=1/0;for(let Ze=0;Zete.y!=Tr.y>te.y&&te.x<(Tr.x-sr.x)*(te.y-sr.y)/(Tr.y-sr.y)+sr.x&&(ve=!ve),De=Math.min(De,Bi(te,sr,Tr))}}return(ve?1:-1)*Math.sqrt(De)}(this.p,j),this.max=this.d+this.h*Math.SQRT2}var ed;i.aq=void 0,(ed=i.aq||(i.aq={}))[ed.center=1]="center",ed[ed.left=2]="left",ed[ed.right=3]="right",ed[ed.top=4]="top",ed[ed.bottom=5]="bottom",ed[ed["top-left"]=6]="top-left",ed[ed["top-right"]=7]="top-right",ed[ed["bottom-left"]=8]="bottom-left",ed[ed["bottom-right"]=9]="bottom-right";let fm=7,fy=Number.POSITIVE_INFINITY;function vS(R,S){return S[1]!==fy?function(D,j,te){let ue=0,ve=0;switch(j=Math.abs(j),te=Math.abs(te),D){case"top-right":case"top-left":case"top":ve=te-fm;break;case"bottom-right":case"bottom-left":case"bottom":ve=-te+fm}switch(D){case"top-right":case"bottom-right":case"right":ue=-j;break;case"top-left":case"bottom-left":case"left":ue=j}return[ue,ve]}(R,S[0],S[1]):function(D,j){let te=0,ue=0;j<0&&(j=0);let ve=j/Math.SQRT2;switch(D){case"top-right":case"top-left":ue=ve-fm;break;case"bottom-right":case"bottom-left":ue=-ve+fm;break;case"bottom":ue=-j+fm;break;case"top":ue=j-fm}switch(D){case"top-right":case"bottom-right":te=-ve;break;case"top-left":case"bottom-left":te=ve;break;case"left":te=j;break;case"right":te=-j}return[te,ue]}(R,S[0])}function zC(R,S,D){var j;let te=R.layout,ue=(j=te.get("text-variable-anchor-offset"))===null||j===void 0?void 0:j.evaluate(S,{},D);if(ue){let De=ue.values,Ze=[];for(let at=0;atQt*kl);Tt.startsWith("top")?Ft[1]-=fm:Tt.startsWith("bottom")&&(Ft[1]+=fm),Ze[at+1]=Ft}return new Si(Ze)}let ve=te.get("text-variable-anchor");if(ve){let De;De=R._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[te.get("text-radial-offset").evaluate(S,{},D)*kl,fy]:te.get("text-offset").evaluate(S,{},D).map(at=>at*kl);let Ze=[];for(let at of ve)Ze.push(at,vS(at,De));return new Si(Ze)}return null}function pS(R){switch(R){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function K9(R,S,D,j,te,ue,ve,De,Ze,at,Tt){let Ft=ue.textMaxSize.evaluate(S,{});Ft===void 0&&(Ft=ve);let Qt=R.layers[0].layout,sr=Qt.get("icon-offset").evaluate(S,{},Tt),Tr=qC(D.horizontal),Pr=ve/24,$r=R.tilePixelRatio*Pr,ni=R.tilePixelRatio*Ft/24,Di=R.tilePixelRatio*De,pi=R.tilePixelRatio*Qt.get("symbol-spacing"),ki=Qt.get("text-padding")*R.tilePixelRatio,Zi=function(Tn,bo,Ya,Uo=1){let wu=Tn.get("icon-padding").evaluate(bo,{},Ya),hu=wu&&wu.values;return[hu[0]*Uo,hu[1]*Uo,hu[2]*Uo,hu[3]*Uo]}(Qt,S,Tt,R.tilePixelRatio),ta=Qt.get("text-max-angle")/180*Math.PI,Va=Qt.get("text-rotation-alignment")!=="viewport"&&Qt.get("symbol-placement")!=="point",Io=Qt.get("icon-rotation-alignment")==="map"&&Qt.get("symbol-placement")!=="point",La=Qt.get("symbol-placement"),Hn=pi/2,lo=Qt.get("icon-text-fit"),$a;j&&lo!=="none"&&(R.allowVerticalPlacement&&D.vertical&&($a=mC(j,D.vertical,lo,Qt.get("icon-text-fit-padding"),sr,Pr)),Tr&&(j=mC(j,Tr,lo,Qt.get("icon-text-fit-padding"),sr,Pr)));let Xa=(Tn,bo)=>{bo.x<0||bo.x>=za||bo.y<0||bo.y>=za||function(Ya,Uo,wu,hu,uh,$v,td,ch,Ud,Vd,Hd,rf,fh,Td,rd,Dh,xf,Iv,lv,Cl,qu,Tu,Rv,qc,I1){let p0=Ya.addToLineVertexArray(Uo,wu),Gp,Qv,oc,If,ep=0,gg=0,uv=0,R1=0,xS=-1,Uw=-1,g0={},hy=ui("");if(Ya.allowVerticalPlacement&&hu.vertical){let Ad=ch.layout.get("text-rotate").evaluate(qu,{},qc)+90;oc=new cm(Ud,Uo,Vd,Hd,rf,hu.vertical,fh,Td,rd,Ad),td&&(If=new cm(Ud,Uo,Vd,Hd,rf,td,xf,Iv,rd,Ad))}if(uh){let Ad=ch.layout.get("icon-rotate").evaluate(qu,{}),tp=ch.layout.get("icon-text-fit")!=="none",hm=RC(uh,Ad,Rv,tp),Gd=td?RC(td,Ad,Rv,tp):void 0;Qv=new cm(Ud,Uo,Vd,Hd,rf,uh,xf,Iv,!1,Ad),ep=4*hm.length;let Sd=Ya.iconSizeData,yp=null;Sd.kind==="source"?(yp=[v0*ch.layout.get("icon-size").evaluate(qu,{})],yp[0]>lm&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${Wx}. Reduce your "icon-size".`)):Sd.kind==="composite"&&(yp=[v0*Tu.compositeIconSizes[0].evaluate(qu,{},qc),v0*Tu.compositeIconSizes[1].evaluate(qu,{},qc)],(yp[0]>lm||yp[1]>lm)&&T(`${Ya.layerIds[0]}: Value for "icon-size" is >= ${Wx}. Reduce your "icon-size".`)),Ya.addSymbols(Ya.icon,hm,yp,Cl,lv,qu,i.ah.none,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),xS=Ya.icon.placedSymbolArray.length-1,Gd&&(gg=4*Gd.length,Ya.addSymbols(Ya.icon,Gd,yp,Cl,lv,qu,i.ah.vertical,Uo,p0.lineStartIndex,p0.lineLength,-1,qc),Uw=Ya.icon.placedSymbolArray.length-1)}let zh=Object.keys(hu.horizontal);for(let Ad of zh){let tp=hu.horizontal[Ad];if(!Gp){hy=ui(tp.text);let Gd=ch.layout.get("text-rotate").evaluate(qu,{},qc);Gp=new cm(Ud,Uo,Vd,Hd,rf,tp,fh,Td,rd,Gd)}let hm=tp.positionedLines.length===1;if(uv+=FC(Ya,Uo,tp,$v,ch,rd,qu,Dh,p0,hu.vertical?i.ah.horizontal:i.ah.horizontalOnly,hm?zh:[Ad],g0,xS,Tu,qc),hm)break}hu.vertical&&(R1+=FC(Ya,Uo,hu.vertical,$v,ch,rd,qu,Dh,p0,i.ah.vertical,["vertical"],g0,Uw,Tu,qc));let Q9=Gp?Gp.boxStartIndex:Ya.collisionBoxArray.length,Vw=Gp?Gp.boxEndIndex:Ya.collisionBoxArray.length,m0=oc?oc.boxStartIndex:Ya.collisionBoxArray.length,cv=oc?oc.boxEndIndex:Ya.collisionBoxArray.length,UC=Qv?Qv.boxStartIndex:Ya.collisionBoxArray.length,eq=Qv?Qv.boxEndIndex:Ya.collisionBoxArray.length,VC=If?If.boxStartIndex:Ya.collisionBoxArray.length,tq=If?If.boxEndIndex:Ya.collisionBoxArray.length,mp=-1,rb=(Ad,tp)=>Ad&&Ad.circleDiameter?Math.max(Ad.circleDiameter,tp):tp;mp=rb(Gp,mp),mp=rb(oc,mp),mp=rb(Qv,mp),mp=rb(If,mp);let Hw=mp>-1?1:0;Hw&&(mp*=I1/kl),Ya.glyphOffsetArray.length>=E1.MAX_GLYPHS&&T("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),qu.sortKey!==void 0&&Ya.addToSortKeyRanges(Ya.symbolInstances.length,qu.sortKey);let bS=zC(ch,qu,qc),[rq,iq]=function(Ad,tp){let hm=Ad.length,Gd=tp==null?void 0:tp.values;if((Gd==null?void 0:Gd.length)>0)for(let Sd=0;Sd=0?g0.right:-1,g0.center>=0?g0.center:-1,g0.left>=0?g0.left:-1,g0.vertical||-1,xS,Uw,hy,Q9,Vw,m0,cv,UC,eq,VC,tq,Vd,uv,R1,ep,gg,Hw,0,fh,mp,rq,iq)}(R,bo,Tn,D,j,te,$a,R.layers[0],R.collisionBoxArray,S.index,S.sourceLayerIndex,R.index,$r,[ki,ki,ki,ki],Va,Ze,Di,Zi,Io,sr,S,ue,at,Tt,ve)};if(La==="line")for(let Tn of kC(S.geometry,0,0,za,za)){let bo=Z9(Tn,pi,ta,D.vertical||Tr,j,24,ni,R.overscaling,za);for(let Ya of bo)Tr&&J9(R,Tr.text,Hn,Ya)||Xa(Tn,Ya)}else if(La==="line-center"){for(let Tn of S.geometry)if(Tn.length>1){let bo=W9(Tn,ta,D.vertical||Tr,j,24,ni);bo&&Xa(Tn,bo)}}else if(S.type==="Polygon")for(let Tn of Of(S.geometry,0)){let bo=X9(Tn,16);Xa(Tn[0],new vg(bo.x,bo.y,0))}else if(S.type==="LineString")for(let Tn of S.geometry)Xa(Tn,new vg(Tn[0].x,Tn[0].y,0));else if(S.type==="Point")for(let Tn of S.geometry)for(let bo of Tn)Xa([bo],new vg(bo.x,bo.y,0))}function FC(R,S,D,j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr){let Pr=function(Di,pi,ki,Zi,ta,Va,Io,La){let Hn=Zi.layout.get("text-rotate").evaluate(Va,{})*Math.PI/180,lo=[];for(let $a of pi.positionedLines)for(let Xa of $a.positionedGlyphs){if(!Xa.rect)continue;let Tn=Xa.rect||{},bo=hC+1,Ya=!0,Uo=1,wu=0,hu=(ta||La)&&Xa.vertical,uh=Xa.metrics.advance*Xa.scale/2;if(La&&pi.verticalizable&&(wu=$a.lineOffset/2-(Xa.imageName?-(kl-Xa.metrics.width*Xa.scale)/2:(Xa.scale-1)*kl)),Xa.imageName){let Cl=Io[Xa.imageName];Ya=Cl.sdf,Uo=Cl.pixelRatio,bo=wd/Uo}let $v=ta?[Xa.x+uh,Xa.y]:[0,0],td=ta?[0,0]:[Xa.x+uh+ki[0],Xa.y+ki[1]-wu],ch=[0,0];hu&&(ch=td,td=[0,0]);let Ud=Xa.metrics.isDoubleResolution?2:1,Vd=(Xa.metrics.left-bo)*Xa.scale-uh+td[0],Hd=(-Xa.metrics.top-bo)*Xa.scale+td[1],rf=Vd+Tn.w/Ud*Xa.scale/Uo,fh=Hd+Tn.h/Ud*Xa.scale/Uo,Td=new u(Vd,Hd),rd=new u(rf,Hd),Dh=new u(Vd,fh),xf=new u(rf,fh);if(hu){let Cl=new u(-uh,uh-lh),qu=-Math.PI/2,Tu=kl/2-uh,Rv=new u(5-lh-Tu,-(Xa.imageName?Tu:0)),qc=new u(...ch);Td._rotateAround(qu,Cl)._add(Rv)._add(qc),rd._rotateAround(qu,Cl)._add(Rv)._add(qc),Dh._rotateAround(qu,Cl)._add(Rv)._add(qc),xf._rotateAround(qu,Cl)._add(Rv)._add(qc)}if(Hn){let Cl=Math.sin(Hn),qu=Math.cos(Hn),Tu=[qu,-Cl,Cl,qu];Td._matMult(Tu),rd._matMult(Tu),Dh._matMult(Tu),xf._matMult(Tu)}let Iv=new u(0,0),lv=new u(0,0);lo.push({tl:Td,tr:rd,bl:Dh,br:xf,tex:Tn,writingMode:pi.writingMode,glyphOffset:$v,sectionIndex:Xa.sectionIndex,isSDF:Ya,pixelOffsetTL:Iv,pixelOffsetBR:lv,minFontScaleX:0,minFontScaleY:0})}return lo}(0,D,De,te,ue,ve,j,R.allowVerticalPlacement),$r=R.textSizeData,ni=null;$r.kind==="source"?(ni=[v0*te.layout.get("text-size").evaluate(ve,{})],ni[0]>lm&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${Wx}. Reduce your "text-size".`)):$r.kind==="composite"&&(ni=[v0*sr.compositeTextSizes[0].evaluate(ve,{},Tr),v0*sr.compositeTextSizes[1].evaluate(ve,{},Tr)],(ni[0]>lm||ni[1]>lm)&&T(`${R.layerIds[0]}: Value for "text-size" is >= ${Wx}. Reduce your "text-size".`)),R.addSymbols(R.text,Pr,ni,De,ue,ve,at,S,Ze.lineStartIndex,Ze.lineLength,Qt,Tr);for(let Di of Tt)Ft[Di]=R.text.placedSymbolArray.length-1;return 4*Pr.length}function qC(R){for(let S in R)return R[S];return null}function J9(R,S,D,j){let te=R.compareText;if(S in te){let ue=te[S];for(let ve=ue.length-1;ve>=0;ve--)if(j.dist(ue[ve])>4;if(te!==1)throw new Error(`Got v${te} data when expected v1.`);let ue=OC[15&j];if(!ue)throw new Error("Unrecognized array type.");let[ve]=new Uint16Array(S,2,1),[De]=new Uint32Array(S,4,1);return new gS(De,ve,ue,S)}constructor(S,D=64,j=Float64Array,te){if(isNaN(S)||S<0)throw new Error(`Unpexpected numItems value: ${S}.`);this.numItems=+S,this.nodeSize=Math.min(Math.max(+D,2),65535),this.ArrayType=j,this.IndexArrayType=S<65536?Uint16Array:Uint32Array;let ue=OC.indexOf(this.ArrayType),ve=2*S*this.ArrayType.BYTES_PER_ELEMENT,De=S*this.IndexArrayType.BYTES_PER_ELEMENT,Ze=(8-De%8)%8;if(ue<0)throw new Error(`Unexpected typed array class: ${j}.`);te&&te instanceof ArrayBuffer?(this.data=te,this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=2*S,this._finished=!0):(this.data=new ArrayBuffer(8+ve+De+Ze),this.ids=new this.IndexArrayType(this.data,8,S),this.coords=new this.ArrayType(this.data,8+De+Ze,2*S),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+ue]),new Uint16Array(this.data,2,1)[0]=D,new Uint32Array(this.data,4,1)[0]=S)}add(S,D){let j=this._pos>>1;return this.ids[j]=j,this.coords[this._pos++]=S,this.coords[this._pos++]=D,j}finish(){let S=this._pos>>1;if(S!==this.numItems)throw new Error(`Added ${S} items when expected ${this.numItems}.`);return Ow(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(S,D,j,te){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:ue,coords:ve,nodeSize:De}=this,Ze=[0,ue.length-1,0],at=[];for(;Ze.length;){let Tt=Ze.pop()||0,Ft=Ze.pop()||0,Qt=Ze.pop()||0;if(Ft-Qt<=De){for(let $r=Qt;$r<=Ft;$r++){let ni=ve[2*$r],Di=ve[2*$r+1];ni>=S&&ni<=j&&Di>=D&&Di<=te&&at.push(ue[$r])}continue}let sr=Qt+Ft>>1,Tr=ve[2*sr],Pr=ve[2*sr+1];Tr>=S&&Tr<=j&&Pr>=D&&Pr<=te&&at.push(ue[sr]),(Tt===0?S<=Tr:D<=Pr)&&(Ze.push(Qt),Ze.push(sr-1),Ze.push(1-Tt)),(Tt===0?j>=Tr:te>=Pr)&&(Ze.push(sr+1),Ze.push(Ft),Ze.push(1-Tt))}return at}within(S,D,j){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:te,coords:ue,nodeSize:ve}=this,De=[0,te.length-1,0],Ze=[],at=j*j;for(;De.length;){let Tt=De.pop()||0,Ft=De.pop()||0,Qt=De.pop()||0;if(Ft-Qt<=ve){for(let $r=Qt;$r<=Ft;$r++)NC(ue[2*$r],ue[2*$r+1],S,D)<=at&&Ze.push(te[$r]);continue}let sr=Qt+Ft>>1,Tr=ue[2*sr],Pr=ue[2*sr+1];NC(Tr,Pr,S,D)<=at&&Ze.push(te[sr]),(Tt===0?S-j<=Tr:D-j<=Pr)&&(De.push(Qt),De.push(sr-1),De.push(1-Tt)),(Tt===0?S+j>=Tr:D+j>=Pr)&&(De.push(sr+1),De.push(Ft),De.push(1-Tt))}return Ze}}function Ow(R,S,D,j,te,ue){if(te-j<=D)return;let ve=j+te>>1;BC(R,S,ve,j,te,ue),Ow(R,S,D,j,ve-1,1-ue),Ow(R,S,D,ve+1,te,1-ue)}function BC(R,S,D,j,te,ue){for(;te>j;){if(te-j>600){let at=te-j+1,Tt=D-j+1,Ft=Math.log(at),Qt=.5*Math.exp(2*Ft/3),sr=.5*Math.sqrt(Ft*Qt*(at-Qt)/at)*(Tt-at/2<0?-1:1);BC(R,S,D,Math.max(j,Math.floor(D-Tt*Qt/at+sr)),Math.min(te,Math.floor(D+(at-Tt)*Qt/at+sr)),ue)}let ve=S[2*D+ue],De=j,Ze=te;for(eb(R,S,j,D),S[2*te+ue]>ve&&eb(R,S,j,te);Deve;)Ze--}S[2*j+ue]===ve?eb(R,S,j,Ze):(Ze++,eb(R,S,Ze,te)),Ze<=D&&(j=Ze+1),D<=Ze&&(te=Ze-1)}}function eb(R,S,D,j){mS(R,D,j),mS(S,2*D,2*j),mS(S,2*D+1,2*j+1)}function mS(R,S,D){let j=R[S];R[S]=R[D],R[D]=j}function NC(R,S,D,j){let te=R-D,ue=S-j;return te*te+ue*ue}var Bw;i.bg=void 0,(Bw=i.bg||(i.bg={})).create="create",Bw.load="load",Bw.fullLoad="fullLoad";let tb=null,Gf=[],yS=1e3/60,_S="loadTime",Nw="fullLoadTime",$9={mark(R){performance.mark(R)},frame(R){let S=R;tb!=null&&Gf.push(S-tb),tb=S},clearMetrics(){tb=null,Gf=[],performance.clearMeasures(_S),performance.clearMeasures(Nw);for(let R in i.bg)performance.clearMarks(i.bg[R])},getPerformanceMetrics(){performance.measure(_S,i.bg.create,i.bg.load),performance.measure(Nw,i.bg.create,i.bg.fullLoad);let R=performance.getEntriesByName(_S)[0].duration,S=performance.getEntriesByName(Nw)[0].duration,D=Gf.length,j=1/(Gf.reduce((ue,ve)=>ue+ve,0)/D/1e3),te=Gf.filter(ue=>ue>yS).reduce((ue,ve)=>ue+(ve-yS)/yS,0);return{loadTime:R,fullLoadTime:S,fps:j,percentDroppedFrames:te/(D+te)*100,totalFrames:D}}};i.$=class extends Ot{},i.A=Ln,i.B=Fi,i.C=function(R){if(V==null){let S=R.navigator?R.navigator.userAgent:null;V=!!R.safari||!(!S||!(/\b(iPad|iPhone|iPod)\b/.test(S)||S.match("Safari")&&!S.match("Chrome")))}return V},i.D=Da,i.E=Re,i.F=class{constructor(R,S){this.target=R,this.mapId=S,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new uS(()=>this.process()),this.subscription=function(D,j,te,ue){return D.addEventListener(j,te,!1),{unsubscribe:()=>{D.removeEventListener(j,te,!1)}}}(this.target,"message",D=>this.receive(D)),this.globalScope=q(self)?R:window}registerMessageHandler(R,S){this.messageHandlers[R]=S}sendAsync(R,S){return new Promise((D,j)=>{let te=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[te]={resolve:D,reject:j},S&&S.signal.addEventListener("abort",()=>{delete this.resolveRejects[te];let De={id:te,type:"",origin:location.origin,targetMapId:R.targetMapId,sourceMapId:this.mapId};this.target.postMessage(De)},{once:!0});let ue=[],ve=Object.assign(Object.assign({},R),{id:te,sourceMapId:this.mapId,origin:location.origin,data:Ea(R.data,ue)});this.target.postMessage(ve,{transfer:ue})})}receive(R){let S=R.data,D=S.id;if(!(S.origin!=="file://"&&location.origin!=="file://"&&S.origin!=="resource://android"&&location.origin!=="resource://android"&&S.origin!==location.origin||S.targetMapId&&this.mapId!==S.targetMapId)){if(S.type===""){delete this.tasks[D];let j=this.abortControllers[D];return delete this.abortControllers[D],void(j&&j.abort())}if(q(self)||S.mustQueue)return this.tasks[D]=S,this.taskQueue.push(D),void this.invoker.trigger();this.processTask(D,S)}}process(){if(this.taskQueue.length===0)return;let R=this.taskQueue.shift(),S=this.tasks[R];delete this.tasks[R],this.taskQueue.length>0&&this.invoker.trigger(),S&&this.processTask(R,S)}processTask(R,S){return a(this,void 0,void 0,function*(){if(S.type===""){let te=this.resolveRejects[R];return delete this.resolveRejects[R],te?void(S.error?te.reject(qa(S.error)):te.resolve(qa(S.data))):void 0}if(!this.messageHandlers[S.type])return void this.completeTask(R,new Error(`Could not find a registered handler for ${S.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let D=qa(S.data),j=new AbortController;this.abortControllers[R]=j;try{let te=yield this.messageHandlers[S.type](S.sourceMapId,D,j);this.completeTask(R,null,te)}catch(te){this.completeTask(R,te)}})}completeTask(R,S,D){let j=[];delete this.abortControllers[R];let te={id:R,type:"",sourceMapId:this.mapId,origin:location.origin,error:S?Ea(S):null,data:Ea(D,j)};this.target.postMessage(te,{transfer:j})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},i.G=ke,i.H=function(){var R=new Ln(16);return Ln!=Float32Array&&(R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[11]=0,R[12]=0,R[13]=0,R[14]=0),R[0]=1,R[5]=1,R[10]=1,R[15]=1,R},i.I=kw,i.J=function(R,S,D){var j,te,ue,ve,De,Ze,at,Tt,Ft,Qt,sr,Tr,Pr=D[0],$r=D[1],ni=D[2];return S===R?(R[12]=S[0]*Pr+S[4]*$r+S[8]*ni+S[12],R[13]=S[1]*Pr+S[5]*$r+S[9]*ni+S[13],R[14]=S[2]*Pr+S[6]*$r+S[10]*ni+S[14],R[15]=S[3]*Pr+S[7]*$r+S[11]*ni+S[15]):(te=S[1],ue=S[2],ve=S[3],De=S[4],Ze=S[5],at=S[6],Tt=S[7],Ft=S[8],Qt=S[9],sr=S[10],Tr=S[11],R[0]=j=S[0],R[1]=te,R[2]=ue,R[3]=ve,R[4]=De,R[5]=Ze,R[6]=at,R[7]=Tt,R[8]=Ft,R[9]=Qt,R[10]=sr,R[11]=Tr,R[12]=j*Pr+De*$r+Ft*ni+S[12],R[13]=te*Pr+Ze*$r+Qt*ni+S[13],R[14]=ue*Pr+at*$r+sr*ni+S[14],R[15]=ve*Pr+Tt*$r+Tr*ni+S[15]),R},i.K=function(R,S,D){var j=D[0],te=D[1],ue=D[2];return R[0]=S[0]*j,R[1]=S[1]*j,R[2]=S[2]*j,R[3]=S[3]*j,R[4]=S[4]*te,R[5]=S[5]*te,R[6]=S[6]*te,R[7]=S[7]*te,R[8]=S[8]*ue,R[9]=S[9]*ue,R[10]=S[10]*ue,R[11]=S[11]*ue,R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15],R},i.L=gn,i.M=function(R,S){let D={};for(let j=0;j{let S=window.document.createElement("video");return S.muted=!0,new Promise(D=>{S.onloadstart=()=>{D(S)};for(let j of R){let te=window.document.createElement("source");Ee(j)||(S.crossOrigin="Anonymous"),te.src=j,S.appendChild(te)}})},i.a4=function(){return _++},i.a5=Qi,i.a6=E1,i.a7=Pc,i.a8=xl,i.a9=hS,i.aA=function(R){if(R.type==="custom")return new lS(R);switch(R.type){case"background":return new G9(R);case"circle":return new wn(R);case"fill":return new gr(R);case"fill-extrusion":return new Ev(R);case"heatmap":return new Po(R);case"hillshade":return new $c(R);case"line":return new ay(R);case"raster":return new Kx(R);case"symbol":return new uy(R)}},i.aB=g,i.aC=function(R,S){if(!R)return[{command:"setStyle",args:[S]}];let D=[];try{if(!ct(R.version,S.version))return[{command:"setStyle",args:[S]}];ct(R.center,S.center)||D.push({command:"setCenter",args:[S.center]}),ct(R.zoom,S.zoom)||D.push({command:"setZoom",args:[S.zoom]}),ct(R.bearing,S.bearing)||D.push({command:"setBearing",args:[S.bearing]}),ct(R.pitch,S.pitch)||D.push({command:"setPitch",args:[S.pitch]}),ct(R.sprite,S.sprite)||D.push({command:"setSprite",args:[S.sprite]}),ct(R.glyphs,S.glyphs)||D.push({command:"setGlyphs",args:[S.glyphs]}),ct(R.transition,S.transition)||D.push({command:"setTransition",args:[S.transition]}),ct(R.light,S.light)||D.push({command:"setLight",args:[S.light]}),ct(R.terrain,S.terrain)||D.push({command:"setTerrain",args:[S.terrain]}),ct(R.sky,S.sky)||D.push({command:"setSky",args:[S.sky]}),ct(R.projection,S.projection)||D.push({command:"setProjection",args:[S.projection]});let j={},te=[];(function(ve,De,Ze,at){let Tt;for(Tt in De=De||{},ve=ve||{})Object.prototype.hasOwnProperty.call(ve,Tt)&&(Object.prototype.hasOwnProperty.call(De,Tt)||ot(Tt,Ze,at));for(Tt in De)Object.prototype.hasOwnProperty.call(De,Tt)&&(Object.prototype.hasOwnProperty.call(ve,Tt)?ct(ve[Tt],De[Tt])||(ve[Tt].type==="geojson"&&De[Tt].type==="geojson"&&kt(ve,De,Tt)?qt(Ze,{command:"setGeoJSONSourceData",args:[Tt,De[Tt].data]}):Rt(Tt,De,Ze,at)):rt(Tt,De,Ze))})(R.sources,S.sources,te,j);let ue=[];R.layers&&R.layers.forEach(ve=>{"source"in ve&&j[ve.source]?D.push({command:"removeLayer",args:[ve.id]}):ue.push(ve)}),D=D.concat(te),function(ve,De,Ze){De=De||[];let at=(ve=ve||[]).map(Yt),Tt=De.map(Yt),Ft=ve.reduce(xr,{}),Qt=De.reduce(xr,{}),sr=at.slice(),Tr=Object.create(null),Pr,$r,ni,Di,pi;for(let ki=0,Zi=0;ki@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(D,j,te,ue)=>{let ve=te||ue;return S[j]=!ve||ve.toLowerCase(),""}),S["max-age"]){let D=parseInt(S["max-age"],10);isNaN(D)?delete S["max-age"]:S["max-age"]=D}return S},i.ab=function(R,S){let D=[];for(let j in R)j in S||D.push(j);return D},i.ac=k,i.ad=function(R,S,D){var j=Math.sin(D),te=Math.cos(D),ue=S[0],ve=S[1],De=S[2],Ze=S[3],at=S[4],Tt=S[5],Ft=S[6],Qt=S[7];return S!==R&&(R[8]=S[8],R[9]=S[9],R[10]=S[10],R[11]=S[11],R[12]=S[12],R[13]=S[13],R[14]=S[14],R[15]=S[15]),R[0]=ue*te+at*j,R[1]=ve*te+Tt*j,R[2]=De*te+Ft*j,R[3]=Ze*te+Qt*j,R[4]=at*te-ue*j,R[5]=Tt*te-ve*j,R[6]=Ft*te-De*j,R[7]=Qt*te-Ze*j,R},i.ae=function(R){var S=new Ln(16);return S[0]=R[0],S[1]=R[1],S[2]=R[2],S[3]=R[3],S[4]=R[4],S[5]=R[5],S[6]=R[6],S[7]=R[7],S[8]=R[8],S[9]=R[9],S[10]=R[10],S[11]=R[11],S[12]=R[12],S[13]=R[13],S[14]=R[14],S[15]=R[15],S},i.af=Za,i.ag=function(R,S){let D=0,j=0;if(R.kind==="constant")j=R.layoutSize;else if(R.kind!=="source"){let{interpolationType:te,minZoom:ue,maxZoom:ve}=R,De=te?k(xo.interpolationFactor(te,S,ue,ve),0,1):0;R.kind==="camera"?j=Mo.number(R.minSize,R.maxSize,De):D=De}return{uSizeT:D,uSize:j}},i.ai=function(R,{uSize:S,uSizeT:D},{lowerSize:j,upperSize:te}){return R.kind==="source"?j/v0:R.kind==="composite"?Mo.number(j/v0,te/v0,D):S},i.aj=nS,i.ak=function(R,S,D,j){let te=S.y-R.y,ue=S.x-R.x,ve=j.y-D.y,De=j.x-D.x,Ze=ve*ue-De*te;if(Ze===0)return null;let at=(De*(R.y-D.y)-ve*(R.x-D.x))/Ze;return new u(R.x+at*ue,R.y+at*te)},i.al=kC,i.am=xc,i.an=Un,i.ao=function(R){let S=1/0,D=1/0,j=-1/0,te=-1/0;for(let ue of R)S=Math.min(S,ue.x),D=Math.min(D,ue.y),j=Math.max(j,ue.x),te=Math.max(te,ue.y);return[S,D,j,te]},i.ap=kl,i.ar=iS,i.as=function(R,S){var D=S[0],j=S[1],te=S[2],ue=S[3],ve=S[4],De=S[5],Ze=S[6],at=S[7],Tt=S[8],Ft=S[9],Qt=S[10],sr=S[11],Tr=S[12],Pr=S[13],$r=S[14],ni=S[15],Di=D*De-j*ve,pi=D*Ze-te*ve,ki=D*at-ue*ve,Zi=j*Ze-te*De,ta=j*at-ue*De,Va=te*at-ue*Ze,Io=Tt*Pr-Ft*Tr,La=Tt*$r-Qt*Tr,Hn=Tt*ni-sr*Tr,lo=Ft*$r-Qt*Pr,$a=Ft*ni-sr*Pr,Xa=Qt*ni-sr*$r,Tn=Di*Xa-pi*$a+ki*lo+Zi*Hn-ta*La+Va*Io;return Tn?(R[0]=(De*Xa-Ze*$a+at*lo)*(Tn=1/Tn),R[1]=(te*$a-j*Xa-ue*lo)*Tn,R[2]=(Pr*Va-$r*ta+ni*Zi)*Tn,R[3]=(Qt*ta-Ft*Va-sr*Zi)*Tn,R[4]=(Ze*Hn-ve*Xa-at*La)*Tn,R[5]=(D*Xa-te*Hn+ue*La)*Tn,R[6]=($r*ki-Tr*Va-ni*pi)*Tn,R[7]=(Tt*Va-Qt*ki+sr*pi)*Tn,R[8]=(ve*$a-De*Hn+at*Io)*Tn,R[9]=(j*Hn-D*$a-ue*Io)*Tn,R[10]=(Tr*ta-Pr*ki+ni*Di)*Tn,R[11]=(Ft*ki-Tt*ta-sr*Di)*Tn,R[12]=(De*La-ve*lo-Ze*Io)*Tn,R[13]=(D*lo-j*La+te*Io)*Tn,R[14]=(Pr*pi-Tr*Zi-$r*Di)*Tn,R[15]=(Tt*Zi-Ft*pi+Qt*Di)*Tn,R):null},i.at=pS,i.au=Iw,i.av=gS,i.aw=function(){let R={},S=ce.$version;for(let D in ce.$root){let j=ce.$root[D];if(j.required){let te=null;te=D==="version"?S:j.type==="array"?[]:{},te!=null&&(R[D]=te)}}return R},i.ax=Cn,i.ay=ie,i.az=function(R){R=R.slice();let S=Object.create(null);for(let D=0;D25||j<0||j>=1||D<0||D>=1)},i.bc=function(R,S){return R[0]=S[0],R[1]=0,R[2]=0,R[3]=0,R[4]=0,R[5]=S[1],R[6]=0,R[7]=0,R[8]=0,R[9]=0,R[10]=S[2],R[11]=0,R[12]=0,R[13]=0,R[14]=0,R[15]=1,R},i.bd=class extends yt{},i.be=cS,i.bf=$9,i.bh=ge,i.bi=function(R,S){_e.REGISTERED_PROTOCOLS[R]=S},i.bj=function(R){delete _e.REGISTERED_PROTOCOLS[R]},i.bk=function(R,S){let D={};for(let te=0;teXa*kl)}let La=ve?"center":D.get("text-justify").evaluate(at,{},R.canonical),Hn=D.get("symbol-placement")==="point"?D.get("text-max-width").evaluate(at,{},R.canonical)*kl:1/0,lo=()=>{R.bucket.allowVerticalPlacement&&Ua(ki)&&(Tr.vertical=Gx(Pr,R.glyphMap,R.glyphPositions,R.imagePositions,Tt,Hn,ue,Va,"left",ta,ni,i.ah.vertical,!0,Qt,Ft))};if(!ve&&Io){let $a=new Set;if(La==="auto")for(let Tn=0;Tna(void 0,void 0,void 0,function*(){if(R.byteLength===0)return createImageBitmap(new ImageData(1,1));let S=new Blob([new Uint8Array(R)],{type:"image/png"});try{return createImageBitmap(S)}catch(D){throw new Error(`Could not load image because of ${D.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),i.e=L,i.f=R=>new Promise((S,D)=>{let j=new Image;j.onload=()=>{S(j),URL.revokeObjectURL(j.src),j.onload=null,window.requestAnimationFrame(()=>{j.src=X})},j.onerror=()=>D(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let te=new Blob([new Uint8Array(R)],{type:"image/png"});j.src=R.byteLength?URL.createObjectURL(te):X}),i.g=Me,i.h=(R,S)=>Te(L(R,{type:"json"}),S),i.i=q,i.j=me,i.k=Ce,i.l=(R,S)=>Te(L(R,{type:"arrayBuffer"}),S),i.m=Te,i.n=function(R){return new eS(R).readFields(yQ,[])},i.o=Ao,i.p=rS,i.q=le,i.r=xi,i.s=Ee,i.t=Ti,i.u=fi,i.v=ce,i.w=T,i.x=function([R,S,D]){return S+=90,S*=Math.PI/180,D*=Math.PI/180,{x:R*Math.cos(S)*Math.sin(D),y:R*Math.sin(S)*Math.sin(D),z:R*Math.cos(D)}},i.y=Mo,i.z=Ko}),r("worker",["./shared"],function(i){"use strict";class a{constructor(Ne){this.keyCache={},Ne&&this.replace(Ne)}replace(Ne){this._layerConfigs={},this._layers={},this.update(Ne,[])}update(Ne,Ye){for(let Xe of Ne){this._layerConfigs[Xe.id]=Xe;let ht=this._layers[Xe.id]=i.aA(Xe);ht._featureFilter=i.a7(ht.filter),this.keyCache[Xe.id]&&delete this.keyCache[Xe.id]}for(let Xe of Ye)delete this.keyCache[Xe],delete this._layerConfigs[Xe],delete this._layers[Xe];this.familiesBySource={};let Ve=i.bk(Object.values(this._layerConfigs),this.keyCache);for(let Xe of Ve){let ht=Xe.map(Vt=>this._layers[Vt.id]),Le=ht[0];if(Le.visibility==="none")continue;let xe=Le.source||"",Se=this.familiesBySource[xe];Se||(Se=this.familiesBySource[xe]={});let lt=Le.sourceLayer||"_geojsonTileLayer",Gt=Se[lt];Gt||(Gt=Se[lt]=[]),Gt.push(ht)}}}class o{constructor(Ne){let Ye={},Ve=[];for(let xe in Ne){let Se=Ne[xe],lt=Ye[xe]={};for(let Gt in Se){let Vt=Se[+Gt];if(!Vt||Vt.bitmap.width===0||Vt.bitmap.height===0)continue;let ar={x:0,y:0,w:Vt.bitmap.width+2,h:Vt.bitmap.height+2};Ve.push(ar),lt[Gt]={rect:ar,metrics:Vt.metrics}}}let{w:Xe,h:ht}=i.p(Ve),Le=new i.o({width:Xe||1,height:ht||1});for(let xe in Ne){let Se=Ne[xe];for(let lt in Se){let Gt=Se[+lt];if(!Gt||Gt.bitmap.width===0||Gt.bitmap.height===0)continue;let Vt=Ye[xe][lt].rect;i.o.copy(Gt.bitmap,Le,{x:0,y:0},{x:Vt.x+1,y:Vt.y+1},Gt.bitmap)}}this.image=Le,this.positions=Ye}}i.bl("GlyphAtlas",o);class s{constructor(Ne){this.tileID=new i.S(Ne.tileID.overscaledZ,Ne.tileID.wrap,Ne.tileID.canonical.z,Ne.tileID.canonical.x,Ne.tileID.canonical.y),this.uid=Ne.uid,this.zoom=Ne.zoom,this.pixelRatio=Ne.pixelRatio,this.tileSize=Ne.tileSize,this.source=Ne.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=Ne.showCollisionBoxes,this.collectResourceTiming=!!Ne.collectResourceTiming,this.returnDependencies=!!Ne.returnDependencies,this.promoteId=Ne.promoteId,this.inFlightDependencies=[]}parse(Ne,Ye,Ve,Xe){return i._(this,void 0,void 0,function*(){this.status="parsing",this.data=Ne,this.collisionBoxArray=new i.a5;let ht=new i.bm(Object.keys(Ne.layers).sort()),Le=new i.bn(this.tileID,this.promoteId);Le.bucketLayerIDs=[];let xe={},Se={featureIndex:Le,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:Ve},lt=Ye.familiesBySource[this.source];for(let _n in lt){let $i=Ne.layers[_n];if(!$i)continue;$i.version===1&&i.w(`Vector tile source "${this.source}" layer "${_n}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let zn=ht.encode(_n),Wn=[];for(let It=0;It<$i.length;It++){let ft=$i.feature(It),jt=Le.getId(ft,_n);Wn.push({feature:ft,id:jt,index:It,sourceLayerIndex:zn})}for(let It of lt[_n]){let ft=It[0];ft.source!==this.source&&i.w(`layer.source = ${ft.source} does not equal this.source = ${this.source}`),ft.minzoom&&this.zoom=ft.maxzoom||ft.visibility!=="none"&&(l(It,this.zoom,Ve),(xe[ft.id]=ft.createBucket({index:Le.bucketLayerIDs.length,layers:It,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:zn,sourceID:this.source})).populate(Wn,Se,this.tileID.canonical),Le.bucketLayerIDs.push(It.map(jt=>jt.id)))}}let Gt=i.aF(Se.glyphDependencies,_n=>Object.keys(_n).map(Number));this.inFlightDependencies.forEach(_n=>_n==null?void 0:_n.abort()),this.inFlightDependencies=[];let Vt=Promise.resolve({});if(Object.keys(Gt).length){let _n=new AbortController;this.inFlightDependencies.push(_n),Vt=Xe.sendAsync({type:"GG",data:{stacks:Gt,source:this.source,tileID:this.tileID,type:"glyphs"}},_n)}let ar=Object.keys(Se.iconDependencies),Qr=Promise.resolve({});if(ar.length){let _n=new AbortController;this.inFlightDependencies.push(_n),Qr=Xe.sendAsync({type:"GI",data:{icons:ar,source:this.source,tileID:this.tileID,type:"icons"}},_n)}let ai=Object.keys(Se.patternDependencies),jr=Promise.resolve({});if(ai.length){let _n=new AbortController;this.inFlightDependencies.push(_n),jr=Xe.sendAsync({type:"GI",data:{icons:ai,source:this.source,tileID:this.tileID,type:"patterns"}},_n)}let[ri,bi,nn]=yield Promise.all([Vt,Qr,jr]),Wi=new o(ri),Ni=new i.bo(bi,nn);for(let _n in xe){let $i=xe[_n];$i instanceof i.a6?(l($i.layers,this.zoom,Ve),i.bp({bucket:$i,glyphMap:ri,glyphPositions:Wi.positions,imageMap:bi,imagePositions:Ni.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):$i.hasPattern&&($i instanceof i.bq||$i instanceof i.br||$i instanceof i.bs)&&(l($i.layers,this.zoom,Ve),$i.addFeatures(Se,this.tileID.canonical,Ni.patternPositions))}return this.status="done",{buckets:Object.values(xe).filter(_n=>!_n.isEmpty()),featureIndex:Le,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:Wi.image,imageAtlas:Ni,glyphMap:this.returnDependencies?ri:null,iconMap:this.returnDependencies?bi:null,glyphPositions:this.returnDependencies?Wi.positions:null}})}}function l(ut,Ne,Ye){let Ve=new i.z(Ne);for(let Xe of ut)Xe.recalculate(Ve,Ye)}class u{constructor(Ne,Ye,Ve){this.actor=Ne,this.layerIndex=Ye,this.availableImages=Ve,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield i.l(Ne.request,Ye);try{return{vectorTile:new i.bt.VectorTile(new i.bu(Ve.data)),rawData:Ve.data,cacheControl:Ve.cacheControl,expires:Ve.expires}}catch(Xe){let ht=new Uint8Array(Ve.data),Le=`Unable to parse the tile at ${Ne.request.url}, `;throw Le+=ht[0]===31&&ht[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${Xe.message}`,new Error(Le)}})}loadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid,Ve=!!(Ne&&Ne.request&&Ne.request.collectResourceTiming)&&new i.bv(Ne.request),Xe=new s(Ne);this.loading[Ye]=Xe;let ht=new AbortController;Xe.abort=ht;try{let Le=yield this.loadVectorTile(Ne,ht);if(delete this.loading[Ye],!Le)return null;let xe=Le.rawData,Se={};Le.expires&&(Se.expires=Le.expires),Le.cacheControl&&(Se.cacheControl=Le.cacheControl);let lt={};if(Ve){let Vt=Ve.finish();Vt&&(lt.resourceTiming=JSON.parse(JSON.stringify(Vt)))}Xe.vectorTile=Le.vectorTile;let Gt=Xe.parse(Le.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[Ye]=Xe,this.fetching[Ye]={rawTileData:xe,cacheControl:Se,resourceTiming:lt};try{let Vt=yield Gt;return i.e({rawTileData:xe.slice(0)},Vt,Se,lt)}finally{delete this.fetching[Ye]}}catch(Le){throw delete this.loading[Ye],Xe.status="done",this.loaded[Ye]=Xe,Le}})}reloadTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=Ne.uid;if(!this.loaded||!this.loaded[Ye])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let Ve=this.loaded[Ye];if(Ve.showCollisionBoxes=Ne.showCollisionBoxes,Ve.status==="parsing"){let Xe=yield Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor),ht;if(this.fetching[Ye]){let{rawTileData:Le,cacheControl:xe,resourceTiming:Se}=this.fetching[Ye];delete this.fetching[Ye],ht=i.e({rawTileData:Le.slice(0)},Xe,xe,Se)}else ht=Xe;return ht}if(Ve.status==="done"&&Ve.vectorTile)return Ve.parse(Ve.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(Ne){return i._(this,void 0,void 0,function*(){let Ye=this.loading,Ve=Ne.uid;Ye&&Ye[Ve]&&Ye[Ve].abort&&(Ye[Ve].abort.abort(),delete Ye[Ve])})}removeTile(Ne){return i._(this,void 0,void 0,function*(){this.loaded&&this.loaded[Ne.uid]&&delete this.loaded[Ne.uid]})}}class c{constructor(){this.loaded={}}loadTile(Ne){return i._(this,void 0,void 0,function*(){let{uid:Ye,encoding:Ve,rawImageData:Xe,redFactor:ht,greenFactor:Le,blueFactor:xe,baseShift:Se}=Ne,lt=Xe.width+2,Gt=Xe.height+2,Vt=i.b(Xe)?new i.R({width:lt,height:Gt},yield i.bw(Xe,-1,-1,lt,Gt)):Xe,ar=new i.bx(Ye,Vt,Ve,ht,Le,xe,Se);return this.loaded=this.loaded||{},this.loaded[Ye]=ar,ar})}removeTile(Ne){let Ye=this.loaded,Ve=Ne.uid;Ye&&Ye[Ve]&&delete Ye[Ve]}}function f(ut,Ne){if(ut.length!==0){h(ut[0],Ne);for(var Ye=1;Ye=Math.abs(xe)?Ye-Se+xe:xe-Se+Ye,Ye=Se}Ye+Ve>=0!=!!Ne&&ut.reverse()}var d=i.by(function ut(Ne,Ye){var Ve,Xe=Ne&&Ne.type;if(Xe==="FeatureCollection")for(Ve=0;Ve>31}function q(ut,Ne){for(var Ye=ut.loadGeometry(),Ve=ut.type,Xe=0,ht=0,Le=Ye.length,xe=0;xeut},G=Math.fround||(N=new Float32Array(1),ut=>(N[0]=+ut,N[0]));var N;let W=3,re=5,ae=6;class _e{constructor(Ne){this.options=Object.assign(Object.create(X),Ne),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(Ne){let{log:Ye,minZoom:Ve,maxZoom:Xe}=this.options;Ye&&console.time("total time");let ht=`prepare ${Ne.length} points`;Ye&&console.time(ht),this.points=Ne;let Le=[];for(let Se=0;Se=Ve;Se--){let lt=+Date.now();xe=this.trees[Se]=this._createTree(this._cluster(xe,Se)),Ye&&console.log("z%d: %d clusters in %dms",Se,xe.numItems,+Date.now()-lt)}return Ye&&console.timeEnd("total time"),this}getClusters(Ne,Ye){let Ve=((Ne[0]+180)%360+360)%360-180,Xe=Math.max(-90,Math.min(90,Ne[1])),ht=Ne[2]===180?180:((Ne[2]+180)%360+360)%360-180,Le=Math.max(-90,Math.min(90,Ne[3]));if(Ne[2]-Ne[0]>=360)Ve=-180,ht=180;else if(Ve>ht){let Vt=this.getClusters([Ve,Xe,180,Le],Ye),ar=this.getClusters([-180,Xe,ht,Le],Ye);return Vt.concat(ar)}let xe=this.trees[this._limitZoom(Ye)],Se=xe.range(ge(Ve),ie(Le),ge(ht),ie(Xe)),lt=xe.data,Gt=[];for(let Vt of Se){let ar=this.stride*Vt;Gt.push(lt[ar+re]>1?Me(lt,ar,this.clusterProps):this.points[lt[ar+W]])}return Gt}getChildren(Ne){let Ye=this._getOriginId(Ne),Ve=this._getOriginZoom(Ne),Xe="No cluster with the specified id.",ht=this.trees[Ve];if(!ht)throw new Error(Xe);let Le=ht.data;if(Ye*this.stride>=Le.length)throw new Error(Xe);let xe=this.options.radius/(this.options.extent*Math.pow(2,Ve-1)),Se=ht.within(Le[Ye*this.stride],Le[Ye*this.stride+1],xe),lt=[];for(let Gt of Se){let Vt=Gt*this.stride;Le[Vt+4]===Ne&<.push(Le[Vt+re]>1?Me(Le,Vt,this.clusterProps):this.points[Le[Vt+W]])}if(lt.length===0)throw new Error(Xe);return lt}getLeaves(Ne,Ye,Ve){let Xe=[];return this._appendLeaves(Xe,Ne,Ye=Ye||10,Ve=Ve||0,0),Xe}getTile(Ne,Ye,Ve){let Xe=this.trees[this._limitZoom(Ne)],ht=Math.pow(2,Ne),{extent:Le,radius:xe}=this.options,Se=xe/Le,lt=(Ve-Se)/ht,Gt=(Ve+1+Se)/ht,Vt={features:[]};return this._addTileFeatures(Xe.range((Ye-Se)/ht,lt,(Ye+1+Se)/ht,Gt),Xe.data,Ye,Ve,ht,Vt),Ye===0&&this._addTileFeatures(Xe.range(1-Se/ht,lt,1,Gt),Xe.data,ht,Ve,ht,Vt),Ye===ht-1&&this._addTileFeatures(Xe.range(0,lt,Se/ht,Gt),Xe.data,-1,Ve,ht,Vt),Vt.features.length?Vt:null}getClusterExpansionZoom(Ne){let Ye=this._getOriginZoom(Ne)-1;for(;Ye<=this.options.maxZoom;){let Ve=this.getChildren(Ne);if(Ye++,Ve.length!==1)break;Ne=Ve[0].properties.cluster_id}return Ye}_appendLeaves(Ne,Ye,Ve,Xe,ht){let Le=this.getChildren(Ye);for(let xe of Le){let Se=xe.properties;if(Se&&Se.cluster?ht+Se.point_count<=Xe?ht+=Se.point_count:ht=this._appendLeaves(Ne,Se.cluster_id,Ve,Xe,ht):ht1,Gt,Vt,ar;if(lt)Gt=ke(Ye,Se,this.clusterProps),Vt=Ye[Se],ar=Ye[Se+1];else{let jr=this.points[Ye[Se+W]];Gt=jr.properties;let[ri,bi]=jr.geometry.coordinates;Vt=ge(ri),ar=ie(bi)}let Qr={type:1,geometry:[[Math.round(this.options.extent*(Vt*ht-Ve)),Math.round(this.options.extent*(ar*ht-Xe))]],tags:Gt},ai;ai=lt||this.options.generateId?Ye[Se+W]:this.points[Ye[Se+W]].id,ai!==void 0&&(Qr.id=ai),Le.features.push(Qr)}}_limitZoom(Ne){return Math.max(this.options.minZoom,Math.min(Math.floor(+Ne),this.options.maxZoom+1))}_cluster(Ne,Ye){let{radius:Ve,extent:Xe,reduce:ht,minPoints:Le}=this.options,xe=Ve/(Xe*Math.pow(2,Ye)),Se=Ne.data,lt=[],Gt=this.stride;for(let Vt=0;VtYe&&(ri+=Se[nn+re])}if(ri>jr&&ri>=Le){let bi,nn=ar*jr,Wi=Qr*jr,Ni=-1,_n=((Vt/Gt|0)<<5)+(Ye+1)+this.points.length;for(let $i of ai){let zn=$i*Gt;if(Se[zn+2]<=Ye)continue;Se[zn+2]=Ye;let Wn=Se[zn+re];nn+=Se[zn]*Wn,Wi+=Se[zn+1]*Wn,Se[zn+4]=_n,ht&&(bi||(bi=this._map(Se,Vt,!0),Ni=this.clusterProps.length,this.clusterProps.push(bi)),ht(bi,this._map(Se,zn)))}Se[Vt+4]=_n,lt.push(nn/ri,Wi/ri,1/0,_n,-1,ri),ht&<.push(Ni)}else{for(let bi=0;bi1)for(let bi of ai){let nn=bi*Gt;if(!(Se[nn+2]<=Ye)){Se[nn+2]=Ye;for(let Wi=0;Wi>5}_getOriginZoom(Ne){return(Ne-this.points.length)%32}_map(Ne,Ye,Ve){if(Ne[Ye+re]>1){let Le=this.clusterProps[Ne[Ye+ae]];return Ve?Object.assign({},Le):Le}let Xe=this.points[Ne[Ye+W]].properties,ht=this.options.map(Xe);return Ve&&ht===Xe?Object.assign({},ht):ht}}function Me(ut,Ne,Ye){return{type:"Feature",id:ut[Ne+W],properties:ke(ut,Ne,Ye),geometry:{type:"Point",coordinates:[(Ve=ut[Ne],360*(Ve-.5)),Te(ut[Ne+1])]}};var Ve}function ke(ut,Ne,Ye){let Ve=ut[Ne+re],Xe=Ve>=1e4?`${Math.round(Ve/1e3)}k`:Ve>=1e3?Math.round(Ve/100)/10+"k":Ve,ht=ut[Ne+ae],Le=ht===-1?{}:Object.assign({},Ye[ht]);return Object.assign(Le,{cluster:!0,cluster_id:ut[Ne+W],point_count:Ve,point_count_abbreviated:Xe})}function ge(ut){return ut/360+.5}function ie(ut){let Ne=Math.sin(ut*Math.PI/180),Ye=.5-.25*Math.log((1+Ne)/(1-Ne))/Math.PI;return Ye<0?0:Ye>1?1:Ye}function Te(ut){let Ne=(180-360*ut)*Math.PI/180;return 360*Math.atan(Math.exp(Ne))/Math.PI-90}function Ee(ut,Ne,Ye,Ve){let Xe=Ve,ht=Ne+(Ye-Ne>>1),Le,xe=Ye-Ne,Se=ut[Ne],lt=ut[Ne+1],Gt=ut[Ye],Vt=ut[Ye+1];for(let ar=Ne+3;arXe)Le=ar,Xe=Qr;else if(Qr===Xe){let ai=Math.abs(ar-ht);aiVe&&(Le-Ne>3&&Ee(ut,Ne,Le,Ve),ut[Le+2]=Xe,Ye-Le>3&&Ee(ut,Le,Ye,Ve))}function Ae(ut,Ne,Ye,Ve,Xe,ht){let Le=Xe-Ye,xe=ht-Ve;if(Le!==0||xe!==0){let Se=((ut-Ye)*Le+(Ne-Ve)*xe)/(Le*Le+xe*xe);Se>1?(Ye=Xe,Ve=ht):Se>0&&(Ye+=Le*Se,Ve+=xe*Se)}return Le=ut-Ye,xe=Ne-Ve,Le*Le+xe*xe}function ze(ut,Ne,Ye,Ve){let Xe={id:ut==null?null:ut,type:Ne,geometry:Ye,tags:Ve,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(Ne==="Point"||Ne==="MultiPoint"||Ne==="LineString")Ce(Xe,Ye);else if(Ne==="Polygon")Ce(Xe,Ye[0]);else if(Ne==="MultiLineString")for(let ht of Ye)Ce(Xe,ht);else if(Ne==="MultiPolygon")for(let ht of Ye)Ce(Xe,ht[0]);return Xe}function Ce(ut,Ne){for(let Ye=0;Ye0&&(Le+=Ve?(Xe*Gt-lt*ht)/2:Math.sqrt(Math.pow(lt-Xe,2)+Math.pow(Gt-ht,2))),Xe=lt,ht=Gt}let xe=Ne.length-3;Ne[2]=1,Ee(Ne,0,xe,Ye),Ne[xe+2]=1,Ne.size=Math.abs(Le),Ne.start=0,Ne.end=Ne.size}function Ge(ut,Ne,Ye,Ve){for(let Xe=0;Xe1?1:Ye}function qt(ut,Ne,Ye,Ve,Xe,ht,Le,xe){if(Ve/=Ne,ht>=(Ye/=Ne)&&Le=Ve)return null;let Se=[];for(let lt of ut){let Gt=lt.geometry,Vt=lt.type,ar=Xe===0?lt.minX:lt.minY,Qr=Xe===0?lt.maxX:lt.maxY;if(ar>=Ye&&Qr=Ve)continue;let ai=[];if(Vt==="Point"||Vt==="MultiPoint")rt(Gt,ai,Ye,Ve,Xe);else if(Vt==="LineString")ot(Gt,ai,Ye,Ve,Xe,!1,xe.lineMetrics);else if(Vt==="MultiLineString")kt(Gt,ai,Ye,Ve,Xe,!1);else if(Vt==="Polygon")kt(Gt,ai,Ye,Ve,Xe,!0);else if(Vt==="MultiPolygon")for(let jr of Gt){let ri=[];kt(jr,ri,Ye,Ve,Xe,!0),ri.length&&ai.push(ri)}if(ai.length){if(xe.lineMetrics&&Vt==="LineString"){for(let jr of ai)Se.push(ze(lt.id,Vt,jr,lt.tags));continue}Vt!=="LineString"&&Vt!=="MultiLineString"||(ai.length===1?(Vt="LineString",ai=ai[0]):Vt="MultiLineString"),Vt!=="Point"&&Vt!=="MultiPoint"||(Vt=ai.length===3?"Point":"MultiPoint"),Se.push(ze(lt.id,Vt,ai,lt.tags))}}return Se.length?Se:null}function rt(ut,Ne,Ye,Ve,Xe){for(let ht=0;ht=Ye&&Le<=Ve&&Ct(Ne,ut[ht],ut[ht+1],ut[ht+2])}}function ot(ut,Ne,Ye,Ve,Xe,ht,Le){let xe=Rt(ut),Se=Xe===0?Yt:xr,lt,Gt,Vt=ut.start;for(let ri=0;riYe&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Le&&(xe.start=Vt+lt*Gt)):$i>Ve?zn=Ye&&(Gt=Se(xe,bi,nn,Ni,_n,Ye),Wn=!0),zn>Ve&&$i<=Ve&&(Gt=Se(xe,bi,nn,Ni,_n,Ve),Wn=!0),!ht&&Wn&&(Le&&(xe.end=Vt+lt*Gt),Ne.push(xe),xe=Rt(ut)),Le&&(Vt+=lt)}let ar=ut.length-3,Qr=ut[ar],ai=ut[ar+1],jr=Xe===0?Qr:ai;jr>=Ye&&jr<=Ve&&Ct(xe,Qr,ai,ut[ar+2]),ar=xe.length-3,ht&&ar>=3&&(xe[ar]!==xe[0]||xe[ar+1]!==xe[1])&&Ct(xe,xe[0],xe[1],xe[2]),xe.length&&Ne.push(xe)}function Rt(ut){let Ne=[];return Ne.size=ut.size,Ne.start=ut.start,Ne.end=ut.end,Ne}function kt(ut,Ne,Ye,Ve,Xe,ht){for(let Le of ut)ot(Le,Ne,Ye,Ve,Xe,ht,!1)}function Ct(ut,Ne,Ye,Ve){ut.push(Ne,Ye,Ve)}function Yt(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ne)/(Ve-Ne);return Ct(ut,ht,Ye+(Xe-Ye)*Le,1),Le}function xr(ut,Ne,Ye,Ve,Xe,ht){let Le=(ht-Ye)/(Xe-Ye);return Ct(ut,Ne+(Ve-Ne)*Le,ht,1),Le}function er(ut,Ne){let Ye=[];for(let Ve=0;Ve0&&Ne.size<(Xe?Le:Ve))return void(Ye.numPoints+=Ne.length/3);let xe=[];for(let Se=0;SeLe)&&(Ye.numSimplified++,xe.push(Ne[Se],Ne[Se+1])),Ye.numPoints++;Xe&&function(Se,lt){let Gt=0;for(let Vt=0,ar=Se.length,Qr=ar-2;Vt0===lt)for(let Vt=0,ar=Se.length;Vt24)throw new Error("maxZoom should be in the 0-24 range");if(Ye.promoteId&&Ye.generateId)throw new Error("promoteId and generateId cannot be used together.");let Xe=function(ht,Le){let xe=[];if(ht.type==="FeatureCollection")for(let Se=0;Se1&&console.time("creation"),Qr=this.tiles[ar]=Lt(Ne,Ye,Ve,Xe,lt),this.tileCoords.push({z:Ye,x:Ve,y:Xe}),Gt)){Gt>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Ye,Ve,Xe,Qr.numFeatures,Qr.numPoints,Qr.numSimplified),console.timeEnd("creation"));let Wn=`z${Ye}`;this.stats[Wn]=(this.stats[Wn]||0)+1,this.total++}if(Qr.source=Ne,ht==null){if(Ye===lt.indexMaxZoom||Qr.numPoints<=lt.indexMaxPoints)continue}else{if(Ye===lt.maxZoom||Ye===ht)continue;if(ht!=null){let Wn=ht-Ye;if(Ve!==Le>>Wn||Xe!==xe>>Wn)continue}}if(Qr.source=null,Ne.length===0)continue;Gt>1&&console.time("clipping");let ai=.5*lt.buffer/lt.extent,jr=.5-ai,ri=.5+ai,bi=1+ai,nn=null,Wi=null,Ni=null,_n=null,$i=qt(Ne,Vt,Ve-ai,Ve+ri,0,Qr.minX,Qr.maxX,lt),zn=qt(Ne,Vt,Ve+jr,Ve+bi,0,Qr.minX,Qr.maxX,lt);Ne=null,$i&&(nn=qt($i,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),Wi=qt($i,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),$i=null),zn&&(Ni=qt(zn,Vt,Xe-ai,Xe+ri,1,Qr.minY,Qr.maxY,lt),_n=qt(zn,Vt,Xe+jr,Xe+bi,1,Qr.minY,Qr.maxY,lt),zn=null),Gt>1&&console.timeEnd("clipping"),Se.push(nn||[],Ye+1,2*Ve,2*Xe),Se.push(Wi||[],Ye+1,2*Ve,2*Xe+1),Se.push(Ni||[],Ye+1,2*Ve+1,2*Xe),Se.push(_n||[],Ye+1,2*Ve+1,2*Xe+1)}}getTile(Ne,Ye,Ve){Ne=+Ne,Ye=+Ye,Ve=+Ve;let Xe=this.options,{extent:ht,debug:Le}=Xe;if(Ne<0||Ne>24)return null;let xe=1<1&&console.log("drilling down to z%d-%d-%d",Ne,Ye,Ve);let lt,Gt=Ne,Vt=Ye,ar=Ve;for(;!lt&&Gt>0;)Gt--,Vt>>=1,ar>>=1,lt=this.tiles[$t(Gt,Vt,ar)];return lt&<.source?(Le>1&&(console.log("found parent tile z%d-%d-%d",Gt,Vt,ar),console.time("drilling down")),this.splitTile(lt.source,Gt,Vt,ar,Ne,Ye,Ve),Le>1&&console.timeEnd("drilling down"),this.tiles[Se]?xt(this.tiles[Se],ht):null):null}}function $t(ut,Ne,Ye){return 32*((1<{Vt.properties=Qr;let ai={};for(let jr of ar)ai[jr]=Se[jr].evaluate(Gt,Vt);return ai},Le.reduce=(Qr,ai)=>{Vt.properties=ai;for(let jr of ar)Gt.accumulated=Qr[jr],Qr[jr]=lt[jr].evaluate(Gt,Vt)},Le}(Ne)).load((yield this._pendingData).features):(Xe=yield this._pendingData,new Ht(Xe,Ne.geojsonVtOptions)),this.loaded={};let ht={};if(Ve){let Le=Ve.finish();Le&&(ht.resourceTiming={},ht.resourceTiming[Ne.source]=JSON.parse(JSON.stringify(Le)))}return ht}catch(ht){if(delete this._pendingRequest,i.bB(ht))return{abandoned:!0};throw ht}var Xe})}getData(){return i._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(Ne){let Ye=this.loaded;return Ye&&Ye[Ne.uid]?super.reloadTile(Ne):this.loadTile(Ne)}loadAndProcessGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let Ve=yield this.loadGeoJSON(Ne,Ye);if(delete this._pendingRequest,typeof Ve!="object")throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(d(Ve,!0),Ne.filter){let Xe=i.bC(Ne.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Xe.result==="error")throw new Error(Xe.value.map(Le=>`${Le.key}: ${Le.message}`).join(", "));Ve={type:"FeatureCollection",features:Ve.features.filter(Le=>Xe.value.evaluate({zoom:0},Le))}}return Ve})}loadGeoJSON(Ne,Ye){return i._(this,void 0,void 0,function*(){let{promoteId:Ve}=Ne;if(Ne.request){let Xe=yield i.h(Ne.request,Ye);return this._dataUpdateable=_r(Xe.data,Ve)?Br(Xe.data,Ve):void 0,Xe.data}if(typeof Ne.data=="string")try{let Xe=JSON.parse(Ne.data);return this._dataUpdateable=_r(Xe,Ve)?Br(Xe,Ve):void 0,Xe}catch(Xe){throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`)}if(!Ne.dataDiff)throw new Error(`Input data given to '${Ne.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${Ne.source}`);return function(Xe,ht,Le){var xe,Se,lt,Gt;if(ht.removeAll&&Xe.clear(),ht.remove)for(let Vt of ht.remove)Xe.delete(Vt);if(ht.add)for(let Vt of ht.add){let ar=fr(Vt,Le);ar!=null&&Xe.set(ar,Vt)}if(ht.update)for(let Vt of ht.update){let ar=Xe.get(Vt.id);if(ar==null)continue;let Qr=!Vt.removeAllProperties&&(((xe=Vt.removeProperties)===null||xe===void 0?void 0:xe.length)>0||((Se=Vt.addOrUpdateProperties)===null||Se===void 0?void 0:Se.length)>0);if((Vt.newGeometry||Vt.removeAllProperties||Qr)&&(ar=Object.assign({},ar),Xe.set(Vt.id,ar),Qr&&(ar.properties=Object.assign({},ar.properties))),Vt.newGeometry&&(ar.geometry=Vt.newGeometry),Vt.removeAllProperties)ar.properties={};else if(((lt=Vt.removeProperties)===null||lt===void 0?void 0:lt.length)>0)for(let ai of Vt.removeProperties)Object.prototype.hasOwnProperty.call(ar.properties,ai)&&delete ar.properties[ai];if(((Gt=Vt.addOrUpdateProperties)===null||Gt===void 0?void 0:Gt.length)>0)for(let{key:ai,value:jr}of Vt.addOrUpdateProperties)ar.properties[ai]=jr}}(this._dataUpdateable,Ne.dataDiff,Ve),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(Ne){return i._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(Ne){return this._geoJSONIndex.getClusterExpansionZoom(Ne.clusterId)}getClusterChildren(Ne){return this._geoJSONIndex.getChildren(Ne.clusterId)}getClusterLeaves(Ne){return this._geoJSONIndex.getLeaves(Ne.clusterId,Ne.limit,Ne.offset)}}class Nr{constructor(Ne){this.self=Ne,this.actor=new i.F(Ne),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(Ye,Ve)=>{if(this.externalWorkerSourceTypes[Ye])throw new Error(`Worker source with name "${Ye}" already registered.`);this.externalWorkerSourceTypes[Ye]=Ve},this.self.addProtocol=i.bi,this.self.removeProtocol=i.bj,this.self.registerRTLTextPlugin=Ye=>{if(i.bD.isParsed())throw new Error("RTL text plugin already registered.");i.bD.setMethods(Ye)},this.actor.registerMessageHandler("LDT",(Ye,Ve)=>this._getDEMWorkerSource(Ye,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RDT",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getDEMWorkerSource(Ye,Ve.source).removeTile(Ve)})),this.actor.registerMessageHandler("GCEZ",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterExpansionZoom(Ve)})),this.actor.registerMessageHandler("GCC",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterChildren(Ve)})),this.actor.registerMessageHandler("GCL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){return this._getWorkerSource(Ye,Ve.type,Ve.source).getClusterLeaves(Ve)})),this.actor.registerMessageHandler("LD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadData(Ve)),this.actor.registerMessageHandler("GD",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).getData()),this.actor.registerMessageHandler("LT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).loadTile(Ve)),this.actor.registerMessageHandler("RT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).reloadTile(Ve)),this.actor.registerMessageHandler("AT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).abortTile(Ve)),this.actor.registerMessageHandler("RMT",(Ye,Ve)=>this._getWorkerSource(Ye,Ve.type,Ve.source).removeTile(Ve)),this.actor.registerMessageHandler("RS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){if(!this.workerSources[Ye]||!this.workerSources[Ye][Ve.type]||!this.workerSources[Ye][Ve.type][Ve.source])return;let Xe=this.workerSources[Ye][Ve.type][Ve.source];delete this.workerSources[Ye][Ve.type][Ve.source],Xe.removeSource!==void 0&&Xe.removeSource(Ve)})),this.actor.registerMessageHandler("RM",Ye=>i._(this,void 0,void 0,function*(){delete this.layerIndexes[Ye],delete this.availableImages[Ye],delete this.workerSources[Ye],delete this.demWorkerSources[Ye]})),this.actor.registerMessageHandler("SR",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.referrer=Ve})),this.actor.registerMessageHandler("SRPS",(Ye,Ve)=>this._syncRTLPluginState(Ye,Ve)),this.actor.registerMessageHandler("IS",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this.self.importScripts(Ve)})),this.actor.registerMessageHandler("SI",(Ye,Ve)=>this._setImages(Ye,Ve)),this.actor.registerMessageHandler("UL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).update(Ve.layers,Ve.removedIds)})),this.actor.registerMessageHandler("SL",(Ye,Ve)=>i._(this,void 0,void 0,function*(){this._getLayerIndex(Ye).replace(Ve)}))}_setImages(Ne,Ye){return i._(this,void 0,void 0,function*(){this.availableImages[Ne]=Ye;for(let Ve in this.workerSources[Ne]){let Xe=this.workerSources[Ne][Ve];for(let ht in Xe)Xe[ht].availableImages=Ye}})}_syncRTLPluginState(Ne,Ye){return i._(this,void 0,void 0,function*(){if(i.bD.isParsed())return i.bD.getState();if(Ye.pluginStatus!=="loading")return i.bD.setState(Ye),Ye;let Ve=Ye.pluginURL;if(this.self.importScripts(Ve),i.bD.isParsed()){let Xe={pluginStatus:"loaded",pluginURL:Ve};return i.bD.setState(Xe),Xe}throw i.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${Ve}`)})}_getAvailableImages(Ne){let Ye=this.availableImages[Ne];return Ye||(Ye=[]),Ye}_getLayerIndex(Ne){let Ye=this.layerIndexes[Ne];return Ye||(Ye=this.layerIndexes[Ne]=new a),Ye}_getWorkerSource(Ne,Ye,Ve){if(this.workerSources[Ne]||(this.workerSources[Ne]={}),this.workerSources[Ne][Ye]||(this.workerSources[Ne][Ye]={}),!this.workerSources[Ne][Ye][Ve]){let Xe={sendAsync:(ht,Le)=>(ht.targetMapId=Ne,this.actor.sendAsync(ht,Le))};switch(Ye){case"vector":this.workerSources[Ne][Ye][Ve]=new u(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;case"geojson":this.workerSources[Ne][Ye][Ve]=new Or(Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne));break;default:this.workerSources[Ne][Ye][Ve]=new this.externalWorkerSourceTypes[Ye](Xe,this._getLayerIndex(Ne),this._getAvailableImages(Ne))}}return this.workerSources[Ne][Ye][Ve]}_getDEMWorkerSource(Ne,Ye){return this.demWorkerSources[Ne]||(this.demWorkerSources[Ne]={}),this.demWorkerSources[Ne][Ye]||(this.demWorkerSources[Ne][Ye]=new c),this.demWorkerSources[Ne][Ye]}}return i.i(self)&&(self.worker=new Nr(self)),Nr}),r("index",["exports","./shared"],function(i,a){"use strict";var o="4.7.1";let s,l,u={now:typeof performance!="undefined"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:le=>new Promise((w,B)=>{let Q=requestAnimationFrame(w);le.signal.addEventListener("abort",()=>{cancelAnimationFrame(Q),B(a.c())})}),getImageData(le,w=0){return this.getImageCanvasContext(le).getImageData(-w,-w,le.width+2*w,le.height+2*w)},getImageCanvasContext(le){let w=window.document.createElement("canvas"),B=w.getContext("2d",{willReadFrequently:!0});if(!B)throw new Error("failed to create canvas 2d context");return w.width=le.width,w.height=le.height,B.drawImage(le,0,0,le.width,le.height),B},resolveURL:le=>(s||(s=document.createElement("a")),s.href=le,s.href),hardwareConcurrency:typeof navigator!="undefined"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(l==null&&(l=matchMedia("(prefers-reduced-motion: reduce)")),l.matches)}};class c{static testProp(w){if(!c.docStyle)return w[0];for(let B=0;B{window.removeEventListener("click",c.suppressClickInternal,!0)},0)}static getScale(w){let B=w.getBoundingClientRect();return{x:B.width/w.offsetWidth||1,y:B.height/w.offsetHeight||1,boundingClientRect:B}}static getPoint(w,B,Q){let ee=B.boundingClientRect;return new a.P((Q.clientX-ee.left)/B.x-w.clientLeft,(Q.clientY-ee.top)/B.y-w.clientTop)}static mousePos(w,B){let Q=c.getScale(w);return c.getPoint(w,Q,B)}static touchPos(w,B){let Q=[],ee=c.getScale(w);for(let se=0;se{h&&b(h),h=null,x=!0},d.onerror=()=>{v=!0,h=null},d.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(le){let w,B,Q,ee;le.resetRequestQueue=()=>{w=[],B=0,Q=0,ee={}},le.addThrottleControl=it=>{let yt=Q++;return ee[yt]=it,yt},le.removeThrottleControl=it=>{delete ee[it],qe()},le.getImage=(it,yt,Ot=!0)=>new Promise((Nt,hr)=>{f.supported&&(it.headers||(it.headers={}),it.headers.accept="image/webp,*/*"),a.e(it,{type:"image"}),w.push({abortController:yt,requestParameters:it,supportImageRefresh:Ot,state:"queued",onError:Sr=>{hr(Sr)},onSuccess:Sr=>{Nt(Sr)}}),qe()});let se=it=>a._(this,void 0,void 0,function*(){it.state="running";let{requestParameters:yt,supportImageRefresh:Ot,onError:Nt,onSuccess:hr,abortController:Sr}=it,he=Ot===!1&&!a.i(self)&&!a.g(yt.url)&&(!yt.headers||Object.keys(yt.headers).reduce((Oe,Je)=>Oe&&Je==="accept",!0));B++;let be=he?je(yt,Sr):a.m(yt,Sr);try{let Oe=yield be;delete it.abortController,it.state="completed",Oe.data instanceof HTMLImageElement||a.b(Oe.data)?hr(Oe):Oe.data&&hr({data:yield(Pe=Oe.data,typeof createImageBitmap=="function"?a.d(Pe):a.f(Pe)),cacheControl:Oe.cacheControl,expires:Oe.expires})}catch(Oe){delete it.abortController,Nt(Oe)}finally{B--,qe()}var Pe}),qe=()=>{let it=(()=>{for(let yt of Object.keys(ee))if(ee[yt]())return!0;return!1})()?a.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:a.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let yt=B;yt0;yt++){let Ot=w.shift();Ot.abortController.signal.aborted?yt--:se(Ot)}},je=(it,yt)=>new Promise((Ot,Nt)=>{let hr=new Image,Sr=it.url,he=it.credentials;he&&he==="include"?hr.crossOrigin="use-credentials":(he&&he==="same-origin"||!a.s(Sr))&&(hr.crossOrigin="anonymous"),yt.signal.addEventListener("abort",()=>{hr.src="",Nt(a.c())}),hr.fetchPriority="high",hr.onload=()=>{hr.onerror=hr.onload=null,Ot({data:hr})},hr.onerror=()=>{hr.onerror=hr.onload=null,yt.signal.aborted||Nt(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},hr.src=Sr})}(p||(p={})),p.resetRequestQueue();class E{constructor(w){this._transformRequestFn=w}transformRequest(w,B){return this._transformRequestFn&&this._transformRequestFn(w,B)||{url:w}}setTransformRequest(w){this._transformRequestFn=w}}function k(le){var w=new a.A(3);return w[0]=le[0],w[1]=le[1],w[2]=le[2],w}var A,L=function(le,w,B){return le[0]=w[0]-B[0],le[1]=w[1]-B[1],le[2]=w[2]-B[2],le};A=new a.A(3),a.A!=Float32Array&&(A[0]=0,A[1]=0,A[2]=0);var _=function(le){var w=le[0],B=le[1];return w*w+B*B};function C(le){let w=[];if(typeof le=="string")w.push({id:"default",url:le});else if(le&&le.length>0){let B=[];for(let{id:Q,url:ee}of le){let se=`${Q}${ee}`;B.indexOf(se)===-1&&(B.push(se),w.push({id:Q,url:ee}))}}return w}function M(le,w,B){let Q=le.split("?");return Q[0]+=`${w}${B}`,Q.join("?")}(function(){var le=new a.A(2);a.A!=Float32Array&&(le[0]=0,le[1]=0)})();class g{constructor(w,B,Q,ee){this.context=w,this.format=Q,this.texture=w.gl.createTexture(),this.update(B,ee)}update(w,B,Q){let{width:ee,height:se}=w,qe=!(this.size&&this.size[0]===ee&&this.size[1]===se||Q),{context:je}=this,{gl:it}=je;if(this.useMipmap=!!(B&&B.useMipmap),it.bindTexture(it.TEXTURE_2D,this.texture),je.pixelStoreUnpackFlipY.set(!1),je.pixelStoreUnpack.set(1),je.pixelStoreUnpackPremultiplyAlpha.set(this.format===it.RGBA&&(!B||B.premultiply!==!1)),qe)this.size=[ee,se],w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texImage2D(it.TEXTURE_2D,0,this.format,this.format,it.UNSIGNED_BYTE,w):it.texImage2D(it.TEXTURE_2D,0,this.format,ee,se,0,this.format,it.UNSIGNED_BYTE,w.data);else{let{x:yt,y:Ot}=Q||{x:0,y:0};w instanceof HTMLImageElement||w instanceof HTMLCanvasElement||w instanceof HTMLVideoElement||w instanceof ImageData||a.b(w)?it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,it.RGBA,it.UNSIGNED_BYTE,w):it.texSubImage2D(it.TEXTURE_2D,0,yt,Ot,ee,se,it.RGBA,it.UNSIGNED_BYTE,w.data)}this.useMipmap&&this.isSizePowerOfTwo()&&it.generateMipmap(it.TEXTURE_2D)}bind(w,B,Q){let{context:ee}=this,{gl:se}=ee;se.bindTexture(se.TEXTURE_2D,this.texture),Q!==se.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(Q=se.LINEAR),w!==this.filter&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,w),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,Q||w),this.filter=w),B!==this.wrap&&(se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,B),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,B),this.wrap=B)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:w}=this.context;w.deleteTexture(this.texture),this.texture=null}}function P(le){let{userImage:w}=le;return!!(w&&w.render&&w.render())&&(le.data.replace(new Uint8Array(w.data.buffer)),!0)}class T extends a.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new a.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(w){if(this.loaded!==w&&(this.loaded=w,w)){for(let{ids:B,promiseResolve:Q}of this.requestors)Q(this._getImagesForIds(B));this.requestors=[]}}getImage(w){let B=this.images[w];if(B&&!B.data&&B.spriteData){let Q=B.spriteData;B.data=new a.R({width:Q.width,height:Q.height},Q.context.getImageData(Q.x,Q.y,Q.width,Q.height).data),B.spriteData=null}return B}addImage(w,B){if(this.images[w])throw new Error(`Image id ${w} already exist, use updateImage instead`);this._validate(w,B)&&(this.images[w]=B)}_validate(w,B){let Q=!0,ee=B.data||B.spriteData;return this._validateStretch(B.stretchX,ee&&ee.width)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchX" value`))),Q=!1),this._validateStretch(B.stretchY,ee&&ee.height)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "stretchY" value`))),Q=!1),this._validateContent(B.content,B)||(this.fire(new a.j(new Error(`Image "${w}" has invalid "content" value`))),Q=!1),Q}_validateStretch(w,B){if(!w)return!0;let Q=0;for(let ee of w){if(ee[0]{let ee=!0;if(!this.isLoaded())for(let se of w)this.images[se]||(ee=!1);this.isLoaded()||ee?B(this._getImagesForIds(w)):this.requestors.push({ids:w,promiseResolve:B})})}_getImagesForIds(w){let B={};for(let Q of w){let ee=this.getImage(Q);ee||(this.fire(new a.k("styleimagemissing",{id:Q})),ee=this.getImage(Q)),ee?B[Q]={data:ee.data.clone(),pixelRatio:ee.pixelRatio,sdf:ee.sdf,version:ee.version,stretchX:ee.stretchX,stretchY:ee.stretchY,content:ee.content,textFitWidth:ee.textFitWidth,textFitHeight:ee.textFitHeight,hasRenderCallback:!!(ee.userImage&&ee.userImage.render)}:a.w(`Image "${Q}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return B}getPixelSize(){let{width:w,height:B}=this.atlasImage;return{width:w,height:B}}getPattern(w){let B=this.patterns[w],Q=this.getImage(w);if(!Q)return null;if(B&&B.position.version===Q.version)return B.position;if(B)B.position.version=Q.version;else{let ee={w:Q.data.width+2,h:Q.data.height+2,x:0,y:0},se=new a.I(ee,Q);this.patterns[w]={bin:ee,position:se}}return this._updatePatternAtlas(),this.patterns[w].position}bind(w){let B=w.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new g(w,this.atlasImage,B.RGBA),this.atlasTexture.bind(B.LINEAR,B.CLAMP_TO_EDGE)}_updatePatternAtlas(){let w=[];for(let se in this.patterns)w.push(this.patterns[se].bin);let{w:B,h:Q}=a.p(w),ee=this.atlasImage;ee.resize({width:B||1,height:Q||1});for(let se in this.patterns){let{bin:qe}=this.patterns[se],je=qe.x+1,it=qe.y+1,yt=this.getImage(se).data,Ot=yt.width,Nt=yt.height;a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it},{width:Ot,height:Nt}),a.R.copy(yt,ee,{x:0,y:Nt-1},{x:je,y:it-1},{width:Ot,height:1}),a.R.copy(yt,ee,{x:0,y:0},{x:je,y:it+Nt},{width:Ot,height:1}),a.R.copy(yt,ee,{x:Ot-1,y:0},{x:je-1,y:it},{width:1,height:Nt}),a.R.copy(yt,ee,{x:0,y:0},{x:je+Ot,y:it},{width:1,height:Nt})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(w){for(let B of w){if(this.callbackDispatchedThisFrame[B])continue;this.callbackDispatchedThisFrame[B]=!0;let Q=this.getImage(B);Q||a.w(`Image with ID: "${B}" was not found`),P(Q)&&this.updateImage(B,Q)}}}let F=1e20;function q(le,w,B,Q,ee,se,qe,je,it){for(let yt=w;yt-1);it++,se[it]=je,qe[it]=yt,qe[it+1]=F}for(let je=0,it=0;je65535)throw new Error("glyphs > 65535 not supported");if(Q.ranges[se])return{stack:w,id:B,glyph:ee};if(!this.url)throw new Error("glyphsUrl is not set");if(!Q.requests[se]){let je=H.loadGlyphRange(w,se,this.url,this.requestManager);Q.requests[se]=je}let qe=yield Q.requests[se];for(let je in qe)this._doesCharSupportLocalGlyph(+je)||(Q.glyphs[+je]=qe[+je]);return Q.ranges[se]=!0,{stack:w,id:B,glyph:qe[B]||null}})}_doesCharSupportLocalGlyph(w){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(w))}_tinySDF(w,B,Q){let ee=this.localIdeographFontFamily;if(!ee||!this._doesCharSupportLocalGlyph(Q))return;let se=w.tinySDF;if(!se){let je="400";/bold/i.test(B)?je="900":/medium/i.test(B)?je="500":/light/i.test(B)&&(je="200"),se=w.tinySDF=new H.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:ee,fontWeight:je})}let qe=se.draw(String.fromCharCode(Q));return{id:Q,bitmap:new a.o({width:qe.width||60,height:qe.height||60},qe.data),metrics:{width:qe.glyphWidth/2||24,height:qe.glyphHeight/2||24,left:qe.glyphLeft/2+.5||0,top:qe.glyphTop/2-27.5||-8,advance:qe.glyphAdvance/2||24,isDoubleResolution:!0}}}}H.loadGlyphRange=function(le,w,B,Q){return a._(this,void 0,void 0,function*(){let ee=256*w,se=ee+255,qe=Q.transformRequest(B.replace("{fontstack}",le).replace("{range}",`${ee}-${se}`),"Glyphs"),je=yield a.l(qe,new AbortController);if(!je||!je.data)throw new Error(`Could not load glyph range. range: ${w}, ${ee}-${se}`);let it={};for(let yt of a.n(je.data))it[yt.id]=yt;return it})},H.TinySDF=class{constructor({fontSize:le=24,buffer:w=3,radius:B=8,cutoff:Q=.25,fontFamily:ee="sans-serif",fontWeight:se="normal",fontStyle:qe="normal"}={}){this.buffer=w,this.cutoff=Q,this.radius=B;let je=this.size=le+4*w,it=this._createCanvas(je),yt=this.ctx=it.getContext("2d",{willReadFrequently:!0});yt.font=`${qe} ${se} ${le}px ${ee}`,yt.textBaseline="alphabetic",yt.textAlign="left",yt.fillStyle="black",this.gridOuter=new Float64Array(je*je),this.gridInner=new Float64Array(je*je),this.f=new Float64Array(je),this.z=new Float64Array(je+1),this.v=new Uint16Array(je)}_createCanvas(le){let w=document.createElement("canvas");return w.width=w.height=le,w}draw(le){let{width:w,actualBoundingBoxAscent:B,actualBoundingBoxDescent:Q,actualBoundingBoxLeft:ee,actualBoundingBoxRight:se}=this.ctx.measureText(le),qe=Math.ceil(B),je=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(se-ee))),it=Math.min(this.size-this.buffer,qe+Math.ceil(Q)),yt=je+2*this.buffer,Ot=it+2*this.buffer,Nt=Math.max(yt*Ot,0),hr=new Uint8ClampedArray(Nt),Sr={data:hr,width:yt,height:Ot,glyphWidth:je,glyphHeight:it,glyphTop:qe,glyphLeft:0,glyphAdvance:w};if(je===0||it===0)return Sr;let{ctx:he,buffer:be,gridInner:Pe,gridOuter:Oe}=this;he.clearRect(be,be,je,it),he.fillText(le,be,be+qe);let Je=he.getImageData(be,be,je,it);Oe.fill(F,0,Nt),Pe.fill(0,0,Nt);for(let He=0;He0?Ut*Ut:0,Pe[Dt]=Ut<0?Ut*Ut:0}}q(Oe,0,0,yt,Ot,yt,this.f,this.v,this.z),q(Pe,be,be,je,it,yt,this.f,this.v,this.z);for(let He=0;He1&&(it=w[++je]);let Ot=Math.abs(yt-it.left),Nt=Math.abs(yt-it.right),hr=Math.min(Ot,Nt),Sr,he=se/Q*(ee+1);if(it.isDash){let be=ee-Math.abs(he);Sr=Math.sqrt(hr*hr+be*be)}else Sr=ee-Math.sqrt(hr*hr+he*he);this.data[qe+yt]=Math.max(0,Math.min(255,Sr+128))}}}addRegularDash(w){for(let je=w.length-1;je>=0;--je){let it=w[je],yt=w[je+1];it.zeroLength?w.splice(je,1):yt&&yt.isDash===it.isDash&&(yt.left=it.left,w.splice(je,1))}let B=w[0],Q=w[w.length-1];B.isDash===Q.isDash&&(B.left=Q.left-this.width,Q.right=B.right+this.width);let ee=this.width*this.nextRow,se=0,qe=w[se];for(let je=0;je1&&(qe=w[++se]);let it=Math.abs(je-qe.left),yt=Math.abs(je-qe.right),Ot=Math.min(it,yt);this.data[ee+je]=Math.max(0,Math.min(255,(qe.isDash?Ot:-Ot)+128))}}addDash(w,B){let Q=B?7:0,ee=2*Q+1;if(this.nextRow+ee>this.height)return a.w("LineAtlas out of space"),null;let se=0;for(let je=0;je{B.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[_e]}numActive(){return Object.keys(this.active).length}}let ke=Math.floor(u.hardwareConcurrency/2),ge,ie;function Te(){return ge||(ge=new Me),ge}Me.workerCount=a.C(globalThis)?Math.max(Math.min(ke,3),1):1;class Ee{constructor(w,B){this.workerPool=w,this.actors=[],this.currentActor=0,this.id=B;let Q=this.workerPool.acquire(B);for(let ee=0;ee{B.remove()}),this.actors=[],w&&this.workerPool.release(this.id)}registerMessageHandler(w,B){for(let Q of this.actors)Q.registerMessageHandler(w,B)}}function Ae(){return ie||(ie=new Ee(Te(),a.G),ie.registerMessageHandler("GR",(le,w,B)=>a.m(w,B))),ie}function ze(le,w){let B=a.H();return a.J(B,B,[1,1,0]),a.K(B,B,[.5*le.width,.5*le.height,1]),a.L(B,B,le.calculatePosMatrix(w.toUnwrapped()))}function Ce(le,w,B,Q,ee,se){let qe=function(Nt,hr,Sr){if(Nt)for(let he of Nt){let be=hr[he];if(be&&be.source===Sr&&be.type==="fill-extrusion")return!0}else for(let he in hr){let be=hr[he];if(be.source===Sr&&be.type==="fill-extrusion")return!0}return!1}(ee&&ee.layers,w,le.id),je=se.maxPitchScaleFactor(),it=le.tilesIn(Q,je,qe);it.sort(me);let yt=[];for(let Nt of it)yt.push({wrappedTileID:Nt.tileID.wrapped().key,queryResults:Nt.tile.queryRenderedFeatures(w,B,le._state,Nt.queryGeometry,Nt.cameraQueryGeometry,Nt.scale,ee,se,je,ze(le.transform,Nt.tileID))});let Ot=function(Nt){let hr={},Sr={};for(let he of Nt){let be=he.queryResults,Pe=he.wrappedTileID,Oe=Sr[Pe]=Sr[Pe]||{};for(let Je in be){let He=be[Je],et=Oe[Je]=Oe[Je]||{},Mt=hr[Je]=hr[Je]||[];for(let Dt of He)et[Dt.featureIndex]||(et[Dt.featureIndex]=!0,Mt.push(Dt))}}return hr}(yt);for(let Nt in Ot)Ot[Nt].forEach(hr=>{let Sr=hr.feature,he=le.getFeatureState(Sr.layer["source-layer"],Sr.id);Sr.source=Sr.layer.source,Sr.layer["source-layer"]&&(Sr.sourceLayer=Sr.layer["source-layer"]),Sr.state=he});return Ot}function me(le,w){let B=le.tileID,Q=w.tileID;return B.overscaledZ-Q.overscaledZ||B.canonical.y-Q.canonical.y||B.wrap-Q.wrap||B.canonical.x-Q.canonical.x}function Re(le,w,B){return a._(this,void 0,void 0,function*(){let Q=le;if(le.url?Q=(yield a.h(w.transformRequest(le.url,"Source"),B)).data:yield u.frameAsync(B),!Q)return null;let ee=a.M(a.e(Q,le),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in Q&&Q.vector_layers&&(ee.vectorLayerIds=Q.vector_layers.map(se=>se.id)),ee})}class ce{constructor(w,B){w&&(B?this.setSouthWest(w).setNorthEast(B):Array.isArray(w)&&(w.length===4?this.setSouthWest([w[0],w[1]]).setNorthEast([w[2],w[3]]):this.setSouthWest(w[0]).setNorthEast(w[1])))}setNorthEast(w){return this._ne=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}setSouthWest(w){return this._sw=w instanceof a.N?new a.N(w.lng,w.lat):a.N.convert(w),this}extend(w){let B=this._sw,Q=this._ne,ee,se;if(w instanceof a.N)ee=w,se=w;else{if(!(w instanceof ce))return Array.isArray(w)?w.length===4||w.every(Array.isArray)?this.extend(ce.convert(w)):this.extend(a.N.convert(w)):w&&("lng"in w||"lon"in w)&&"lat"in w?this.extend(a.N.convert(w)):this;if(ee=w._sw,se=w._ne,!ee||!se)return this}return B||Q?(B.lng=Math.min(ee.lng,B.lng),B.lat=Math.min(ee.lat,B.lat),Q.lng=Math.max(se.lng,Q.lng),Q.lat=Math.max(se.lat,Q.lat)):(this._sw=new a.N(ee.lng,ee.lat),this._ne=new a.N(se.lng,se.lat)),this}getCenter(){return new a.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new a.N(this.getWest(),this.getNorth())}getSouthEast(){return new a.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(w){let{lng:B,lat:Q}=a.N.convert(w),ee=this._sw.lng<=B&&B<=this._ne.lng;return this._sw.lng>this._ne.lng&&(ee=this._sw.lng>=B&&B>=this._ne.lng),this._sw.lat<=Q&&Q<=this._ne.lat&&ee}static convert(w){return w instanceof ce?w:w&&new ce(w)}static fromLngLat(w,B=0){let Q=360*B/40075017,ee=Q/Math.cos(Math.PI/180*w.lat);return new ce(new a.N(w.lng-ee,w.lat-Q),new a.N(w.lng+ee,w.lat+Q))}adjustAntiMeridian(){let w=new a.N(this._sw.lng,this._sw.lat),B=new a.N(this._ne.lng,this._ne.lat);return new ce(w,w.lng>B.lng?new a.N(B.lng+360,B.lat):B)}}class Ge{constructor(w,B,Q){this.bounds=ce.convert(this.validateBounds(w)),this.minzoom=B||0,this.maxzoom=Q||24}validateBounds(w){return Array.isArray(w)&&w.length===4?[Math.max(-180,w[0]),Math.max(-90,w[1]),Math.min(180,w[2]),Math.min(90,w[3])]:[-180,-90,180,90]}contains(w){let B=Math.pow(2,w.z),Q=Math.floor(a.O(this.bounds.getWest())*B),ee=Math.floor(a.Q(this.bounds.getNorth())*B),se=Math.ceil(a.O(this.bounds.getEast())*B),qe=Math.ceil(a.Q(this.bounds.getSouth())*B);return w.x>=Q&&w.x=ee&&w.y{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return a.e({},this._options)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q={request:this.map._requestManager.transformRequest(B,"Tile"),uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,tileSize:this.tileSize*w.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};Q.request.collectResourceTiming=this._collectResourceTiming;let ee="RT";if(w.actor&&w.state!=="expired"){if(w.state==="loading")return new Promise((se,qe)=>{w.reloadPromise={resolve:se,reject:qe}})}else w.actor=this.dispatcher.getActor(),ee="LT";w.abortController=new AbortController;try{let se=yield w.actor.sendAsync({type:ee,data:Q},w.abortController);if(delete w.abortController,w.aborted)return;this._afterTileLoadWorkerResponse(w,se)}catch(se){if(delete w.abortController,w.aborted)return;if(se&&se.status!==404)throw se;this._afterTileLoadWorkerResponse(w,null)}})}_afterTileLoadWorkerResponse(w,B){if(B&&B.resourceTiming&&(w.resourceTiming=B.resourceTiming),B&&this.map._refreshExpiredTiles&&w.setExpiryData(B),w.loadVectorData(B,this.map.painter),w.reloadPromise){let Q=w.reloadPromise;w.reloadPromise=null,this.loadTile(w).then(Q.resolve).catch(Q.reject)}}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.actor&&(yield w.actor.sendAsync({type:"AT",data:{uid:w.uid,type:this.type,source:this.id}}))})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),w.actor&&(yield w.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class ct extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.setEventedParent(ee),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=a.e({type:"raster"},B),a.e(this,a.M(B,["url","scheme","tileSize"]))}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let w=yield Re(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,w&&(a.e(this,w),w.bounds&&(this.tileBounds=new Ge(w.bounds,this.minzoom,this.maxzoom)),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})))}catch(w){this._tileJSONRequest=null,this.fire(new a.j(w))}})}loaded(){return this._loaded}onAdd(w){this.map=w,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(w){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),w(),this.load()}setTiles(w){return this.setSourceProperty(()=>{this._options.tiles=w}),this}setUrl(w){return this.setSourceProperty(()=>{this.url=w,this._options.url=w}),this}serialize(){return a.e({},this._options)}hasTile(w){return!this.tileBounds||this.tileBounds.contains(w.canonical)}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);w.abortController=new AbortController;try{let Q=yield p.getImage(this.map._requestManager.transformRequest(B,"Tile"),w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(Q&&Q.data){this.map._refreshExpiredTiles&&Q.cacheControl&&Q.expires&&w.setExpiryData({cacheControl:Q.cacheControl,expires:Q.expires});let ee=this.map.painter.context,se=ee.gl,qe=Q.data;w.texture=this.map.painter.getTileTexture(qe.width),w.texture?w.texture.update(qe,{useMipmap:!0}):(w.texture=new g(ee,qe,se.RGBA,{useMipmap:!0}),w.texture.bind(se.LINEAR,se.CLAMP_TO_EDGE,se.LINEAR_MIPMAP_NEAREST)),w.state="loaded"}}catch(Q){if(delete w.abortController,w.aborted)w.state="unloaded";else if(Q)throw w.state="errored",Q}})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController)})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.texture&&this.map.painter.saveTileTexture(w.texture)})}hasTransition(){return!1}}class qt extends ct{constructor(w,B,Q,ee){super(w,B,Q,ee),this.type="raster-dem",this.maxzoom=22,this._options=a.e({type:"raster-dem"},B),this.encoding=B.encoding||"mapbox",this.redFactor=B.redFactor,this.greenFactor=B.greenFactor,this.blueFactor=B.blueFactor,this.baseShift=B.baseShift}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),Q=this.map._requestManager.transformRequest(B,"Tile");w.neighboringTiles=this._getNeighboringTiles(w.tileID),w.abortController=new AbortController;try{let ee=yield p.getImage(Q,w.abortController,this.map._refreshExpiredTiles);if(delete w.abortController,w.aborted)return void(w.state="unloaded");if(ee&&ee.data){let se=ee.data;this.map._refreshExpiredTiles&&ee.cacheControl&&ee.expires&&w.setExpiryData({cacheControl:ee.cacheControl,expires:ee.expires});let qe=a.b(se)&&a.U()?se:yield this.readImageNow(se),je={type:this.type,uid:w.uid,source:this.id,rawImageData:qe,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!w.actor||w.state==="expired"){w.actor=this.dispatcher.getActor();let it=yield w.actor.sendAsync({type:"LDT",data:je});w.dem=it,w.needsHillshadePrepare=!0,w.needsTerrainPrepare=!0,w.state="loaded"}}}catch(ee){if(delete w.abortController,w.aborted)w.state="unloaded";else if(ee)throw w.state="errored",ee}})}readImageNow(w){return a._(this,void 0,void 0,function*(){if(typeof VideoFrame!="undefined"&&a.V()){let B=w.width+2,Q=w.height+2;try{return new a.R({width:B,height:Q},yield a.W(w,-1,-1,B,Q))}catch(ee){}}return u.getImageData(w,1)})}_getNeighboringTiles(w){let B=w.canonical,Q=Math.pow(2,B.z),ee=(B.x-1+Q)%Q,se=B.x===0?w.wrap-1:w.wrap,qe=(B.x+1+Q)%Q,je=B.x+1===Q?w.wrap+1:w.wrap,it={};return it[new a.S(w.overscaledZ,se,B.z,ee,B.y).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y).key]={backfilled:!1},B.y>0&&(it[new a.S(w.overscaledZ,se,B.z,ee,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,w.wrap,B.z,B.x,B.y-1).key]={backfilled:!1},it[new a.S(w.overscaledZ,je,B.z,qe,B.y-1).key]={backfilled:!1}),B.y+10&&a.e(se,{resourceTiming:ee}),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"metadata"}))),this.fire(new a.k("data",Object.assign(Object.assign({},se),{sourceDataType:"content"})))}catch(Q){if(this._pendingLoads--,this._removed)return void this.fire(new a.k("dataabort",{dataType:"source"}));this.fire(new a.j(Q))}})}loaded(){return this._pendingLoads===0}loadTile(w){return a._(this,void 0,void 0,function*(){let B=w.actor?"RT":"LT";w.actor=this.actor;let Q={type:this.type,uid:w.uid,tileID:w.tileID,zoom:w.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};w.abortController=new AbortController;let ee=yield this.actor.sendAsync({type:B,data:Q},w.abortController);delete w.abortController,w.unloadVectorData(),w.aborted||w.loadVectorData(ee,this.map.painter,B==="RT")})}abortTile(w){return a._(this,void 0,void 0,function*(){w.abortController&&(w.abortController.abort(),delete w.abortController),w.aborted=!0})}unloadTile(w){return a._(this,void 0,void 0,function*(){w.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:w.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return a.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var ot=a.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class Rt extends a.E{constructor(w,B,Q,ee){super(),this.id=w,this.dispatcher=Q,this.coordinates=B.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(ee),this.options=B}load(w){return a._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new a.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let B=yield p.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,B&&B.data&&(this.image=B.data,w&&(this.coordinates=w),this._finishLoading())}catch(B){this._request=null,this._loaded=!0,this.fire(new a.j(B))}})}loaded(){return this._loaded}updateImage(w){return w.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=w.url,this.load(w.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new a.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(w){this.map=w,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(w){this.coordinates=w;let B=w.map(a.Z.fromLngLat);this.tileID=function(ee){let se=1/0,qe=1/0,je=-1/0,it=-1/0;for(let hr of ee)se=Math.min(se,hr.x),qe=Math.min(qe,hr.y),je=Math.max(je,hr.x),it=Math.max(it,hr.y);let yt=Math.max(je-se,it-qe),Ot=Math.max(0,Math.floor(-Math.log(yt)/Math.LN2)),Nt=Math.pow(2,Ot);return new a.a1(Ot,Math.floor((se+je)/2*Nt),Math.floor((qe+it)/2*Nt))}(B),this.minzoom=this.maxzoom=this.tileID.z;let Q=B.map(ee=>this.tileID.getTilePoint(ee)._round());return this._boundsArray=new a.$,this._boundsArray.emplaceBack(Q[0].x,Q[0].y,0,0),this._boundsArray.emplaceBack(Q[1].x,Q[1].y,a.X,0),this._boundsArray.emplaceBack(Q[3].x,Q[3].y,0,a.X),this._boundsArray.emplaceBack(Q[2].x,Q[2].y,a.X,a.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new a.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new g(w,this.image,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(w){return a._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(w.tileID.canonical)?(this.tiles[String(w.tileID.wrap)]=w,w.buckets={}):w.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class kt extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),this.roundZoom=!0,this.type="video",this.options=B}load(){return a._(this,void 0,void 0,function*(){this._loaded=!1;let w=this.options;this.urls=[];for(let B of w.urls)this.urls.push(this.map._requestManager.transformRequest(B,"Source").url);try{let B=yield a.a3(this.urls);if(this._loaded=!0,!B)return;this.video=B,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(B){this.fire(new a.j(B))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(w){if(this.video){let B=this.video.seekable;wB.end(0)?this.fire(new a.j(new a.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${B.start(0)} and ${B.end(0)}-second mark.`))):this.video.currentTime=w}}getVideo(){return this.video}onAdd(w){this.map||(this.map=w,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let w=this.map.painter.context,B=w.gl;this.boundsBuffer||(this.boundsBuffer=w.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE),B.texSubImage2D(B.TEXTURE_2D,0,0,0,B.RGBA,B.UNSIGNED_BYTE,this.video)):(this.texture=new g(w,this.video,B.RGBA),this.texture.bind(B.LINEAR,B.CLAMP_TO_EDGE));let Q=!1;for(let ee in this.tiles){let se=this.tiles[ee];se.state!=="loaded"&&(se.state="loaded",se.texture=this.texture,Q=!0)}Q&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class Ct extends Rt{constructor(w,B,Q,ee){super(w,B,Q,ee),B.coordinates?Array.isArray(B.coordinates)&&B.coordinates.length===4&&!B.coordinates.some(se=>!Array.isArray(se)||se.length!==2||se.some(qe=>typeof qe!="number"))||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "coordinates"'))),B.animate&&typeof B.animate!="boolean"&&this.fire(new a.j(new a.a2(`sources.${w}`,null,'optional "animate" property must be a boolean value'))),B.canvas?typeof B.canvas=="string"||B.canvas instanceof HTMLCanvasElement||this.fire(new a.j(new a.a2(`sources.${w}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new a.j(new a.a2(`sources.${w}`,null,'missing required property "canvas"'))),this.options=B,this.animate=B.animate===void 0||B.animate}load(){return a._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new a.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())})}getCanvas(){return this.canvas}onAdd(w){this.map=w,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let w=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,w=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,w=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let B=this.map.painter.context,Q=B.gl;this.boundsBuffer||(this.boundsBuffer=B.createVertexBuffer(this._boundsArray,ot.members)),this.boundsSegments||(this.boundsSegments=a.a0.simpleSegment(0,0,4,2)),this.texture?(w||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new g(B,this.canvas,Q.RGBA,{premultiply:!0});let ee=!1;for(let se in this.tiles){let qe=this.tiles[se];qe.state!=="loaded"&&(qe.state="loaded",qe.texture=this.texture,ee=!0)}ee&&this.fire(new a.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let w of[this.canvas.width,this.canvas.height])if(isNaN(w)||w<=0)return!0;return!1}}let Yt={},xr=le=>{switch(le){case"geojson":return rt;case"image":return Rt;case"raster":return ct;case"raster-dem":return qt;case"vector":return nt;case"video":return kt;case"canvas":return Ct}return Yt[le]},er="RTLPluginLoaded";class Ke extends a.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=Ae()}_syncState(w){return this.status=w,this.dispatcher.broadcast("SRPS",{pluginStatus:w,pluginURL:this.url}).catch(B=>{throw this.status="error",B})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(w){return a._(this,arguments,void 0,function*(B,Q=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=u.resolveURL(B),!this.url)throw new Error(`requested url ${B} is invalid`);if(this.status==="unavailable"){if(!Q)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return a._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new a.k(er))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let xt=null;function bt(){return xt||(xt=new Ke),xt}class Lt{constructor(w,B){this.timeAdded=0,this.fadeEndTime=0,this.tileID=w,this.uid=a.a4(),this.uses=0,this.tileSize=B,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(w){let B=w+this.timeAdded;Bse.getLayer(yt)).filter(Boolean);if(it.length!==0){je.layers=it,je.stateDependentLayerIds&&(je.stateDependentLayers=je.stateDependentLayerIds.map(yt=>it.filter(Ot=>Ot.id===yt)[0]));for(let yt of it)qe[yt.id]=je}}return qe}(w.buckets,B.style),this.hasSymbolBuckets=!1;for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6){if(this.hasSymbolBuckets=!0,!Q)break;se.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let ee in this.buckets){let se=this.buckets[ee];if(se instanceof a.a6&&se.hasRTLText){this.hasRTLText=!0,bt().lazyLoad();break}}this.queryPadding=0;for(let ee in this.buckets){let se=this.buckets[ee];this.queryPadding=Math.max(this.queryPadding,B.style.getLayer(ee).queryRadius(se))}w.imageAtlas&&(this.imageAtlas=w.imageAtlas),w.glyphAtlasImage&&(this.glyphAtlasImage=w.glyphAtlasImage)}else this.collisionBoxArray=new a.a5}unloadVectorData(){for(let w in this.buckets)this.buckets[w].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(w){return this.buckets[w.id]}upload(w){for(let Q in this.buckets){let ee=this.buckets[Q];ee.uploadPending()&&ee.upload(w)}let B=w.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new g(w,this.imageAtlas.image,B.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new g(w,this.glyphAtlasImage,B.ALPHA),this.glyphAtlasImage=null)}prepare(w){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(w,this.imageAtlasTexture)}queryRenderedFeatures(w,B,Q,ee,se,qe,je,it,yt,Ot){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:ee,cameraQueryGeometry:se,scale:qe,tileSize:this.tileSize,pixelPosMatrix:Ot,transform:it,params:je,queryPadding:this.queryPadding*yt},w,B,Q):{}}querySourceFeatures(w,B){let Q=this.latestFeatureIndex;if(!Q||!Q.rawTileData)return;let ee=Q.loadVTLayers(),se=B&&B.sourceLayer?B.sourceLayer:"",qe=ee._geojsonTileLayer||ee[se];if(!qe)return;let je=a.a7(B&&B.filter),{z:it,x:yt,y:Ot}=this.tileID.canonical,Nt={z:it,x:yt,y:Ot};for(let hr=0;hrQ)ee=!1;else if(B)if(this.expirationTime{this.remove(w,se)},Q)),this.data[ee].push(se),this.order.push(ee),this.order.length>this.max){let qe=this._getAndRemoveByKey(this.order[0]);qe&&this.onRemove(qe)}return this}has(w){return w.wrapped().key in this.data}getAndRemove(w){return this.has(w)?this._getAndRemoveByKey(w.wrapped().key):null}_getAndRemoveByKey(w){let B=this.data[w].shift();return B.timeout&&clearTimeout(B.timeout),this.data[w].length===0&&delete this.data[w],this.order.splice(this.order.indexOf(w),1),B.value}getByKey(w){let B=this.data[w];return B?B[0].value:null}get(w){return this.has(w)?this.data[w.wrapped().key][0].value:null}remove(w,B){if(!this.has(w))return this;let Q=w.wrapped().key,ee=B===void 0?0:this.data[Q].indexOf(B),se=this.data[Q][ee];return this.data[Q].splice(ee,1),se.timeout&&clearTimeout(se.timeout),this.data[Q].length===0&&delete this.data[Q],this.onRemove(se.value),this.order.splice(this.order.indexOf(Q),1),this}setMaxSize(w){for(this.max=w;this.order.length>this.max;){let B=this._getAndRemoveByKey(this.order[0]);B&&this.onRemove(B)}return this}filter(w){let B=[];for(let Q in this.data)for(let ee of this.data[Q])w(ee.value)||B.push(ee);for(let Q of B)this.remove(Q.value.tileID,Q)}}class Et{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(w,B,Q){let ee=String(B);if(this.stateChanges[w]=this.stateChanges[w]||{},this.stateChanges[w][ee]=this.stateChanges[w][ee]||{},a.e(this.stateChanges[w][ee],Q),this.deletedStates[w]===null){this.deletedStates[w]={};for(let se in this.state[w])se!==ee&&(this.deletedStates[w][se]=null)}else if(this.deletedStates[w]&&this.deletedStates[w][ee]===null){this.deletedStates[w][ee]={};for(let se in this.state[w][ee])Q[se]||(this.deletedStates[w][ee][se]=null)}else for(let se in Q)this.deletedStates[w]&&this.deletedStates[w][ee]&&this.deletedStates[w][ee][se]===null&&delete this.deletedStates[w][ee][se]}removeFeatureState(w,B,Q){if(this.deletedStates[w]===null)return;let ee=String(B);if(this.deletedStates[w]=this.deletedStates[w]||{},Q&&B!==void 0)this.deletedStates[w][ee]!==null&&(this.deletedStates[w][ee]=this.deletedStates[w][ee]||{},this.deletedStates[w][ee][Q]=null);else if(B!==void 0)if(this.stateChanges[w]&&this.stateChanges[w][ee])for(Q in this.deletedStates[w][ee]={},this.stateChanges[w][ee])this.deletedStates[w][ee][Q]=null;else this.deletedStates[w][ee]=null;else this.deletedStates[w]=null}getState(w,B){let Q=String(B),ee=a.e({},(this.state[w]||{})[Q],(this.stateChanges[w]||{})[Q]);if(this.deletedStates[w]===null)return{};if(this.deletedStates[w]){let se=this.deletedStates[w][B];if(se===null)return{};for(let qe in se)delete ee[qe]}return ee}initializeTileState(w,B){w.setFeatureState(this.state,B)}coalesceChanges(w,B){let Q={};for(let ee in this.stateChanges){this.state[ee]=this.state[ee]||{};let se={};for(let qe in this.stateChanges[ee])this.state[ee][qe]||(this.state[ee][qe]={}),a.e(this.state[ee][qe],this.stateChanges[ee][qe]),se[qe]=this.state[ee][qe];Q[ee]=se}for(let ee in this.deletedStates){this.state[ee]=this.state[ee]||{};let se={};if(this.deletedStates[ee]===null)for(let qe in this.state[ee])se[qe]={},this.state[ee][qe]={};else for(let qe in this.deletedStates[ee]){if(this.deletedStates[ee][qe]===null)this.state[ee][qe]={};else for(let je of Object.keys(this.deletedStates[ee][qe]))delete this.state[ee][qe][je];se[qe]=this.state[ee][qe]}Q[ee]=Q[ee]||{},a.e(Q[ee],se)}if(this.stateChanges={},this.deletedStates={},Object.keys(Q).length!==0)for(let ee in w)w[ee].setFeatureState(Q,B)}}class dt extends a.E{constructor(w,B,Q){super(),this.id=w,this.dispatcher=Q,this.on("data",ee=>this._dataHandler(ee)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((ee,se,qe,je)=>{let it=new(xr(se.type))(ee,se,qe,je);if(it.id!==ee)throw new Error(`Expected Source id to be ${ee} instead of ${it.id}`);return it})(w,B,Q,this),this._tiles={},this._cache=new St(0,ee=>this._unloadTile(ee)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Et,this._didEmitContent=!1,this._updated=!1}onAdd(w){this.map=w,this._maxTileCacheSize=w?w._maxTileCacheSize:null,this._maxTileCacheZoomLevels=w?w._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(w)}onRemove(w){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(w)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let w in this._tiles){let B=this._tiles[w];if(B.state!=="loaded"&&B.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let w=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,w&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(w,B,Q){return a._(this,void 0,void 0,function*(){try{yield this._source.loadTile(w),this._tileLoaded(w,B,Q)}catch(ee){w.state="errored",ee.status!==404?this._source.fire(new a.j(ee,{tile:w})):this.update(this.transform,this.terrain)}})}_unloadTile(w){this._source.unloadTile&&this._source.unloadTile(w)}_abortTile(w){this._source.abortTile&&this._source.abortTile(w),this._source.fire(new a.k("dataabort",{tile:w,coord:w.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(w){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let B in this._tiles){let Q=this._tiles[B];Q.upload(w),Q.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(w=>w.tileID).sort(Ht).map(w=>w.key)}getRenderableIds(w){let B=[];for(let Q in this._tiles)this._isIdRenderable(Q,w)&&B.push(this._tiles[Q]);return w?B.sort((Q,ee)=>{let se=Q.tileID,qe=ee.tileID,je=new a.P(se.canonical.x,se.canonical.y)._rotate(this.transform.angle),it=new a.P(qe.canonical.x,qe.canonical.y)._rotate(this.transform.angle);return se.overscaledZ-qe.overscaledZ||it.y-je.y||it.x-je.x}).map(Q=>Q.tileID.key):B.map(Q=>Q.tileID).sort(Ht).map(Q=>Q.key)}hasRenderableParent(w){let B=this.findLoadedParent(w,0);return!!B&&this._isIdRenderable(B.tileID.key)}_isIdRenderable(w,B){return this._tiles[w]&&this._tiles[w].hasData()&&!this._coveredTiles[w]&&(B||!this._tiles[w].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let w in this._tiles)this._tiles[w].state!=="errored"&&this._reloadTile(w,"reloading")}}_reloadTile(w,B){return a._(this,void 0,void 0,function*(){let Q=this._tiles[w];Q&&(Q.state!=="loading"&&(Q.state=B),yield this._loadTile(Q,w,B))})}_tileLoaded(w,B,Q){w.timeAdded=u.now(),Q==="expired"&&(w.refreshedUponExpiration=!0),this._setTileReloadTimer(B,w),this.getSource().type==="raster-dem"&&w.dem&&this._backfillDEM(w),this._state.initializeTileState(w,this.map?this.map.painter:null),w.aborted||this._source.fire(new a.k("data",{dataType:"source",tile:w,coord:w.tileID}))}_backfillDEM(w){let B=this.getRenderableIds();for(let ee=0;ee1||(Math.abs(qe)>1&&(Math.abs(qe+it)===1?qe+=it:Math.abs(qe-it)===1&&(qe-=it)),se.dem&&ee.dem&&(ee.dem.backfillBorder(se.dem,qe,je),ee.neighboringTiles&&ee.neighboringTiles[yt]&&(ee.neighboringTiles[yt].backfilled=!0)))}}getTile(w){return this.getTileByID(w.key)}getTileByID(w){return this._tiles[w]}_retainLoadedChildren(w,B,Q,ee){for(let se in this._tiles){let qe=this._tiles[se];if(ee[se]||!qe.hasData()||qe.tileID.overscaledZ<=B||qe.tileID.overscaledZ>Q)continue;let je=qe.tileID;for(;qe&&qe.tileID.overscaledZ>B+1;){let yt=qe.tileID.scaledTo(qe.tileID.overscaledZ-1);qe=this._tiles[yt.key],qe&&qe.hasData()&&(je=yt)}let it=je;for(;it.overscaledZ>B;)if(it=it.scaledTo(it.overscaledZ-1),w[it.key]){ee[je.key]=je;break}}}findLoadedParent(w,B){if(w.key in this._loadedParentTiles){let Q=this._loadedParentTiles[w.key];return Q&&Q.tileID.overscaledZ>=B?Q:null}for(let Q=w.overscaledZ-1;Q>=B;Q--){let ee=w.scaledTo(Q),se=this._getLoadedTile(ee);if(se)return se}}findLoadedSibling(w){return this._getLoadedTile(w)}_getLoadedTile(w){let B=this._tiles[w.key];return B&&B.hasData()?B:this._cache.getByKey(w.wrapped().key)}updateCacheSize(w){let B=Math.ceil(w.width/this._source.tileSize)+1,Q=Math.ceil(w.height/this._source.tileSize)+1,ee=Math.floor(B*Q*(this._maxTileCacheZoomLevels===null?a.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),se=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,ee):ee;this._cache.setMaxSize(se)}handleWrapJump(w){let B=Math.round((w-(this._prevLng===void 0?w:this._prevLng))/360);if(this._prevLng=w,B){let Q={};for(let ee in this._tiles){let se=this._tiles[ee];se.tileID=se.tileID.unwrapTo(se.tileID.wrap+B),Q[se.tileID.key]=se}this._tiles=Q;for(let ee in this._timers)clearTimeout(this._timers[ee]),delete this._timers[ee];for(let ee in this._tiles)this._setTileReloadTimer(ee,this._tiles[ee])}}_updateCoveredAndRetainedTiles(w,B,Q,ee,se,qe){let je={},it={},yt=Object.keys(w),Ot=u.now();for(let Nt of yt){let hr=w[Nt],Sr=this._tiles[Nt];if(!Sr||Sr.fadeEndTime!==0&&Sr.fadeEndTime<=Ot)continue;let he=this.findLoadedParent(hr,B),be=this.findLoadedSibling(hr),Pe=he||be||null;Pe&&(this._addTile(Pe.tileID),je[Pe.tileID.key]=Pe.tileID),it[Nt]=hr}this._retainLoadedChildren(it,ee,Q,w);for(let Nt in je)w[Nt]||(this._coveredTiles[Nt]=!0,w[Nt]=je[Nt]);if(qe){let Nt={},hr={};for(let Sr of se)this._tiles[Sr.key].hasData()?Nt[Sr.key]=Sr:hr[Sr.key]=Sr;for(let Sr in hr){let he=hr[Sr].children(this._source.maxzoom);this._tiles[he[0].key]&&this._tiles[he[1].key]&&this._tiles[he[2].key]&&this._tiles[he[3].key]&&(Nt[he[0].key]=w[he[0].key]=he[0],Nt[he[1].key]=w[he[1].key]=he[1],Nt[he[2].key]=w[he[2].key]=he[2],Nt[he[3].key]=w[he[3].key]=he[3],delete hr[Sr])}for(let Sr in hr){let he=hr[Sr],be=this.findLoadedParent(he,this._source.minzoom),Pe=this.findLoadedSibling(he),Oe=be||Pe||null;if(Oe){Nt[Oe.tileID.key]=w[Oe.tileID.key]=Oe.tileID;for(let Je in Nt)Nt[Je].isChildOf(Oe.tileID)&&delete Nt[Je]}}for(let Sr in this._tiles)Nt[Sr]||(this._coveredTiles[Sr]=!0)}}update(w,B){if(!this._sourceLoaded||this._paused)return;let Q;this.transform=w,this.terrain=B,this.updateCacheSize(w),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?Q=w.getVisibleUnwrappedCoordinates(this._source.tileID).map(Ot=>new a.S(Ot.canonical.z,Ot.wrap,Ot.canonical.z,Ot.canonical.x,Ot.canonical.y)):(Q=w.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:B}),this._source.hasTile&&(Q=Q.filter(Ot=>this._source.hasTile(Ot)))):Q=[];let ee=w.coveringZoomLevel(this._source),se=Math.max(ee-dt.maxOverzooming,this._source.minzoom),qe=Math.max(ee+dt.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let Ot={};for(let Nt of Q)if(Nt.canonical.z>this._source.minzoom){let hr=Nt.scaledTo(Nt.canonical.z-1);Ot[hr.key]=hr;let Sr=Nt.scaledTo(Math.max(this._source.minzoom,Math.min(Nt.canonical.z,5)));Ot[Sr.key]=Sr}Q=Q.concat(Object.values(Ot))}let je=Q.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,je&&this.fire(new a.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let it=this._updateRetainedTiles(Q,ee);$t(this._source.type)&&this._updateCoveredAndRetainedTiles(it,se,qe,ee,Q,B);for(let Ot in it)this._tiles[Ot].clearFadeHold();let yt=a.ab(this._tiles,it);for(let Ot of yt){let Nt=this._tiles[Ot];Nt.hasSymbolBuckets&&!Nt.holdingForFade()?Nt.setHoldDuration(this.map._fadeDuration):Nt.hasSymbolBuckets&&!Nt.symbolFadeFinished()||this._removeTile(Ot)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let w in this._tiles)this._tiles[w].holdingForFade()&&this._removeTile(w)}_updateRetainedTiles(w,B){var Q;let ee={},se={},qe=Math.max(B-dt.maxOverzooming,this._source.minzoom),je=Math.max(B+dt.maxUnderzooming,this._source.minzoom),it={};for(let yt of w){let Ot=this._addTile(yt);ee[yt.key]=yt,Ot.hasData()||Bthis._source.maxzoom){let hr=yt.children(this._source.maxzoom)[0],Sr=this.getTile(hr);if(Sr&&Sr.hasData()){ee[hr.key]=hr;continue}}else{let hr=yt.children(this._source.maxzoom);if(ee[hr[0].key]&&ee[hr[1].key]&&ee[hr[2].key]&&ee[hr[3].key])continue}let Nt=Ot.wasRequested();for(let hr=yt.overscaledZ-1;hr>=qe;--hr){let Sr=yt.scaledTo(hr);if(se[Sr.key])break;if(se[Sr.key]=!0,Ot=this.getTile(Sr),!Ot&&Nt&&(Ot=this._addTile(Sr)),Ot){let he=Ot.hasData();if((he||!(!((Q=this.map)===null||Q===void 0)&&Q.cancelPendingTileRequestsWhileZooming)||Nt)&&(ee[Sr.key]=Sr),Nt=Ot.wasRequested(),he)break}}}return ee}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let w in this._tiles){let B=[],Q,ee=this._tiles[w].tileID;for(;ee.overscaledZ>0;){if(ee.key in this._loadedParentTiles){Q=this._loadedParentTiles[ee.key];break}B.push(ee.key);let se=ee.scaledTo(ee.overscaledZ-1);if(Q=this._getLoadedTile(se),Q)break;ee=se}for(let se of B)this._loadedParentTiles[se]=Q}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let w in this._tiles){let B=this._tiles[w].tileID,Q=this._getLoadedTile(B);this._loadedSiblingTiles[B.key]=Q}}_addTile(w){let B=this._tiles[w.key];if(B)return B;B=this._cache.getAndRemove(w),B&&(this._setTileReloadTimer(w.key,B),B.tileID=w,this._state.initializeTileState(B,this.map?this.map.painter:null),this._cacheTimers[w.key]&&(clearTimeout(this._cacheTimers[w.key]),delete this._cacheTimers[w.key],this._setTileReloadTimer(w.key,B)));let Q=B;return B||(B=new Lt(w,this._source.tileSize*w.overscaleFactor()),this._loadTile(B,w.key,B.state)),B.uses++,this._tiles[w.key]=B,Q||this._source.fire(new a.k("dataloading",{tile:B,coord:B.tileID,dataType:"source"})),B}_setTileReloadTimer(w,B){w in this._timers&&(clearTimeout(this._timers[w]),delete this._timers[w]);let Q=B.getExpiryTimeout();Q&&(this._timers[w]=setTimeout(()=>{this._reloadTile(w,"expired"),delete this._timers[w]},Q))}_removeTile(w){let B=this._tiles[w];B&&(B.uses--,delete this._tiles[w],this._timers[w]&&(clearTimeout(this._timers[w]),delete this._timers[w]),B.uses>0||(B.hasData()&&B.state!=="reloading"?this._cache.add(B.tileID,B,B.getExpiryTimeout()):(B.aborted=!0,this._abortTile(B),this._unloadTile(B))))}_dataHandler(w){let B=w.sourceDataType;w.dataType==="source"&&B==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&w.dataType==="source"&&B==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let w in this._tiles)this._removeTile(w);this._cache.reset()}tilesIn(w,B,Q){let ee=[],se=this.transform;if(!se)return ee;let qe=Q?se.getCameraQueryGeometry(w):w,je=w.map(he=>se.pointCoordinate(he,this.terrain)),it=qe.map(he=>se.pointCoordinate(he,this.terrain)),yt=this.getIds(),Ot=1/0,Nt=1/0,hr=-1/0,Sr=-1/0;for(let he of it)Ot=Math.min(Ot,he.x),Nt=Math.min(Nt,he.y),hr=Math.max(hr,he.x),Sr=Math.max(Sr,he.y);for(let he=0;he=0&&He[1].y+Je>=0){let et=je.map(Dt=>Pe.getTilePoint(Dt)),Mt=it.map(Dt=>Pe.getTilePoint(Dt));ee.push({tile:be,tileID:Pe,queryGeometry:et,cameraQueryGeometry:Mt,scale:Oe})}}return ee}getVisibleCoordinates(w){let B=this.getRenderableIds(w).map(Q=>this._tiles[Q].tileID);for(let Q of B)Q.posMatrix=this.transform.calculatePosMatrix(Q.toUnwrapped());return B}hasTransition(){if(this._source.hasTransition())return!0;if($t(this._source.type)){let w=u.now();for(let B in this._tiles)if(this._tiles[B].fadeEndTime>=w)return!0}return!1}setFeatureState(w,B,Q){this._state.updateState(w=w||"_geojsonTileLayer",B,Q)}removeFeatureState(w,B,Q){this._state.removeFeatureState(w=w||"_geojsonTileLayer",B,Q)}getFeatureState(w,B){return this._state.getState(w=w||"_geojsonTileLayer",B)}setDependencies(w,B,Q){let ee=this._tiles[w];ee&&ee.setDependencies(B,Q)}reloadTilesForDependencies(w,B){for(let Q in this._tiles)this._tiles[Q].hasDependency(w,B)&&this._reloadTile(Q,"reloading");this._cache.filter(Q=>!Q.hasDependency(w,B))}}function Ht(le,w){let B=Math.abs(2*le.wrap)-+(le.wrap<0),Q=Math.abs(2*w.wrap)-+(w.wrap<0);return le.overscaledZ-w.overscaledZ||Q-B||w.canonical.y-le.canonical.y||w.canonical.x-le.canonical.x}function $t(le){return le==="raster"||le==="image"||le==="video"}dt.maxOverzooming=10,dt.maxUnderzooming=3;class fr{constructor(w,B){this.reset(w,B)}reset(w,B){this.points=w||[],this._distances=[0];for(let Q=1;Q0?(ee-qe)/je:0;return this.points[se].mult(1-it).add(this.points[B].mult(it))}}function _r(le,w){let B=!0;return le==="always"||le!=="never"&&w!=="never"||(B=!1),B}class Br{constructor(w,B,Q){let ee=this.boxCells=[],se=this.circleCells=[];this.xCellCount=Math.ceil(w/Q),this.yCellCount=Math.ceil(B/Q);for(let qe=0;qethis.width||ee<0||B>this.height)return[];let it=[];if(w<=0&&B<=0&&this.width<=Q&&this.height<=ee){if(se)return[{key:null,x1:w,y1:B,x2:Q,y2:ee}];for(let yt=0;yt0}hitTestCircle(w,B,Q,ee,se){let qe=w-Q,je=w+Q,it=B-Q,yt=B+Q;if(je<0||qe>this.width||yt<0||it>this.height)return!1;let Ot=[];return this._forEachCell(qe,it,je,yt,this._queryCellCircle,Ot,{hitTest:!0,overlapMode:ee,circle:{x:w,y:B,radius:Q},seenUids:{box:{},circle:{}}},se),Ot.length>0}_queryCell(w,B,Q,ee,se,qe,je,it){let{seenUids:yt,hitTest:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!yt.box[be]){yt.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(w<=he[Pe+2]&&B<=he[Pe+3]&&Q>=he[Pe+0]&&ee>=he[Pe+1]&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))&&(qe.push({key:Oe,x1:he[Pe],y1:he[Pe+1],x2:he[Pe+2],y2:he[Pe+3]}),Ot))return!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!yt.circle[be]){yt.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circleAndRectCollide(he[Pe],he[Pe+1],he[Pe+2],w,B,Q,ee)&&(!it||it(Oe))&&(!Ot||!_r(Nt,Oe.overlapMode))){let Je=he[Pe],He=he[Pe+1],et=he[Pe+2];if(qe.push({key:Oe,x1:Je-et,y1:He-et,x2:Je+et,y2:He+et}),Ot)return!0}}}return!1}_queryCellCircle(w,B,Q,ee,se,qe,je,it){let{circle:yt,seenUids:Ot,overlapMode:Nt}=je,hr=this.boxCells[se];if(hr!==null){let he=this.bboxes;for(let be of hr)if(!Ot.box[be]){Ot.box[be]=!0;let Pe=4*be,Oe=this.boxKeys[be];if(this._circleAndRectCollide(yt.x,yt.y,yt.radius,he[Pe+0],he[Pe+1],he[Pe+2],he[Pe+3])&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}let Sr=this.circleCells[se];if(Sr!==null){let he=this.circles;for(let be of Sr)if(!Ot.circle[be]){Ot.circle[be]=!0;let Pe=3*be,Oe=this.circleKeys[be];if(this._circlesCollide(he[Pe],he[Pe+1],he[Pe+2],yt.x,yt.y,yt.radius)&&(!it||it(Oe))&&!_r(Nt,Oe.overlapMode))return qe.push(!0),!0}}}_forEachCell(w,B,Q,ee,se,qe,je,it){let yt=this._convertToXCellCoord(w),Ot=this._convertToYCellCoord(B),Nt=this._convertToXCellCoord(Q),hr=this._convertToYCellCoord(ee);for(let Sr=yt;Sr<=Nt;Sr++)for(let he=Ot;he<=hr;he++)if(se.call(this,w,B,Q,ee,this.xCellCount*he+Sr,qe,je,it))return}_convertToXCellCoord(w){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(w*this.xScale)))}_convertToYCellCoord(w){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(w*this.yScale)))}_circlesCollide(w,B,Q,ee,se,qe){let je=ee-w,it=se-B,yt=Q+qe;return yt*yt>je*je+it*it}_circleAndRectCollide(w,B,Q,ee,se,qe,je){let it=(qe-ee)/2,yt=Math.abs(w-(ee+it));if(yt>it+Q)return!1;let Ot=(je-se)/2,Nt=Math.abs(B-(se+Ot));if(Nt>Ot+Q)return!1;if(yt<=it||Nt<=Ot)return!0;let hr=yt-it,Sr=Nt-Ot;return hr*hr+Sr*Sr<=Q*Q}}function Or(le,w,B,Q,ee){let se=a.H();return w?(a.K(se,se,[1/ee,1/ee,1]),B||a.ad(se,se,Q.angle)):a.L(se,Q.labelPlaneMatrix,le),se}function Nr(le,w,B,Q,ee){if(w){let se=a.ae(le);return a.K(se,se,[ee,ee,1]),B||a.ad(se,se,-Q.angle),se}return Q.glCoordMatrix}function ut(le,w,B,Q){let ee;Q?(ee=[le,w,Q(le,w),1],a.af(ee,ee,B)):(ee=[le,w,0,1],jr(ee,ee,B));let se=ee[3];return{point:new a.P(ee[0]/se,ee[1]/se),signedDistanceFromCamera:se,isOccluded:!1}}function Ne(le,w){return .5+le/w*.5}function Ye(le,w){return le.x>=-w[0]&&le.x<=w[0]&&le.y>=-w[1]&&le.y<=w[1]}function Ve(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he){let be=Q?le.textSizeData:le.iconSizeData,Pe=a.ag(be,B.transform.zoom),Oe=[256/B.width*2+1,256/B.height*2+1],Je=Q?le.text.dynamicLayoutVertexArray:le.icon.dynamicLayoutVertexArray;Je.clear();let He=le.lineVertexArray,et=Q?le.text.placedSymbolArray:le.icon.placedSymbolArray,Mt=B.transform.width/B.transform.height,Dt=!1;for(let Ut=0;UtMath.abs(B.x-w.x)*Q?{useVertical:!0}:(le===a.ah.vertical?w.yB.x)?{needsFlipping:!0}:null}function Le(le,w,B,Q,ee,se,qe,je,it,yt,Ot){let Nt=B/24,hr=w.lineOffsetX*Nt,Sr=w.lineOffsetY*Nt,he;if(w.numGlyphs>1){let be=w.glyphStartIndex+w.numGlyphs,Pe=w.lineStartIndex,Oe=w.lineStartIndex+w.lineLength,Je=Xe(Nt,je,hr,Sr,Q,w,Ot,le);if(!Je)return{notEnoughRoom:!0};let He=ut(Je.first.point.x,Je.first.point.y,qe,le.getElevation).point,et=ut(Je.last.point.x,Je.last.point.y,qe,le.getElevation).point;if(ee&&!Q){let Mt=ht(w.writingMode,He,et,yt);if(Mt)return Mt}he=[Je.first];for(let Mt=w.glyphStartIndex+1;Mt0?He.point:function(Dt,Ut,tr,mr,Rr,zr){return xe(Dt,Ut,tr,1,Rr,zr)}(le.tileAnchorPoint,Je,Pe,0,se,le),Mt=ht(w.writingMode,Pe,et,yt);if(Mt)return Mt}let be=ar(Nt*je.getoffsetX(w.glyphStartIndex),hr,Sr,Q,w.segment,w.lineStartIndex,w.lineStartIndex+w.lineLength,le,Ot);if(!be||le.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};he=[be]}for(let be of he)a.aj(it,be.point,be.angle);return{}}function xe(le,w,B,Q,ee,se){let qe=le.add(le.sub(w)._unit()),je=ee!==void 0?ut(qe.x,qe.y,ee,se.getElevation).point:lt(qe.x,qe.y,se).point,it=B.sub(je);return B.add(it._mult(Q/it.mag()))}function Se(le,w,B){let Q=w.projectionCache;if(Q.projections[le])return Q.projections[le];let ee=new a.P(w.lineVertexArray.getx(le),w.lineVertexArray.gety(le)),se=lt(ee.x,ee.y,w);if(se.signedDistanceFromCamera>0)return Q.projections[le]=se.point,Q.anyProjectionOccluded=Q.anyProjectionOccluded||se.isOccluded,se.point;let qe=le-B.direction;return function(je,it,yt,Ot,Nt){return xe(je,it,yt,Ot,void 0,Nt)}(B.distanceFromAnchor===0?w.tileAnchorPoint:new a.P(w.lineVertexArray.getx(qe),w.lineVertexArray.gety(qe)),ee,B.previousVertex,B.absOffsetX-B.distanceFromAnchor+1,w)}function lt(le,w,B){let Q=le+B.translation[0],ee=w+B.translation[1],se;return!B.pitchWithMap&&B.projection.useSpecialProjectionForSymbols?(se=B.projection.projectTileCoordinates(Q,ee,B.unwrappedTileID,B.getElevation),se.point.x=(.5*se.point.x+.5)*B.width,se.point.y=(.5*-se.point.y+.5)*B.height):(se=ut(Q,ee,B.labelPlaneMatrix,B.getElevation),se.isOccluded=!1),se}function Gt(le,w,B){return le._unit()._perp()._mult(w*B)}function Vt(le,w,B,Q,ee,se,qe,je,it){if(je.projectionCache.offsets[le])return je.projectionCache.offsets[le];let yt=B.add(w);if(le+it.direction=ee)return je.projectionCache.offsets[le]=yt,yt;let Ot=Se(le+it.direction,je,it),Nt=Gt(Ot.sub(B),qe,it.direction),hr=B.add(Nt),Sr=Ot.add(Nt);return je.projectionCache.offsets[le]=a.ak(se,yt,hr,Sr)||yt,je.projectionCache.offsets[le]}function ar(le,w,B,Q,ee,se,qe,je,it){let yt=Q?le-w:le+w,Ot=yt>0?1:-1,Nt=0;Q&&(Ot*=-1,Nt=Math.PI),Ot<0&&(Nt+=Math.PI);let hr,Sr=Ot>0?se+ee:se+ee+1;je.projectionCache.cachedAnchorPoint?hr=je.projectionCache.cachedAnchorPoint:(hr=lt(je.tileAnchorPoint.x,je.tileAnchorPoint.y,je).point,je.projectionCache.cachedAnchorPoint=hr);let he,be,Pe=hr,Oe=hr,Je=0,He=0,et=Math.abs(yt),Mt=[],Dt;for(;Je+He<=et;){if(Sr+=Ot,Sr=qe)return null;Je+=He,Oe=Pe,be=he;let mr={absOffsetX:et,direction:Ot,distanceFromAnchor:Je,previousVertex:Oe};if(Pe=Se(Sr,je,mr),B===0)Mt.push(Oe),Dt=Pe.sub(Oe);else{let Rr,zr=Pe.sub(Oe);Rr=zr.mag()===0?Gt(Se(Sr+Ot,je,mr).sub(Pe),B,Ot):Gt(zr,B,Ot),be||(be=Oe.add(Rr)),he=Vt(Sr,Rr,Pe,se,qe,be,B,je,mr),Mt.push(be),Dt=he.sub(be)}He=Dt.mag()}let Ut=Dt._mult((et-Je)/He)._add(be||Oe),tr=Nt+Math.atan2(Pe.y-Oe.y,Pe.x-Oe.x);return Mt.push(Ut),{point:Ut,angle:it?tr:0,path:Mt}}let Qr=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function ai(le,w){for(let B=0;B=1;ea--)Qi.push(Li.path[ea]);for(let ea=1;eaGa.signedDistanceFromCamera<=0)?[]:ea.map(Ga=>Ga.point)}let pa=[];if(Qi.length>0){let ea=Qi[0].clone(),Ga=Qi[0].clone();for(let To=1;To=zr.x&&Ga.x<=Xr.x&&ea.y>=zr.y&&Ga.y<=Xr.y?[Qi]:Ga.xXr.x||Ga.yXr.y?[]:a.al([Qi],zr.x,zr.y,Xr.x,Xr.y)}for(let ea of pa){di.reset(ea,.25*Rr);let Ga=0;Ga=di.length<=.5*Rr?1:Math.ceil(di.paddedLength/Mn)+1;for(let To=0;Tout(ee.x,ee.y,Q,B.getElevation))}queryRenderedSymbols(w){if(w.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let B=[],Q=1/0,ee=1/0,se=-1/0,qe=-1/0;for(let Ot of w){let Nt=new a.P(Ot.x+ri,Ot.y+ri);Q=Math.min(Q,Nt.x),ee=Math.min(ee,Nt.y),se=Math.max(se,Nt.x),qe=Math.max(qe,Nt.y),B.push(Nt)}let je=this.grid.query(Q,ee,se,qe).concat(this.ignoredGrid.query(Q,ee,se,qe)),it={},yt={};for(let Ot of je){let Nt=Ot.key;if(it[Nt.bucketInstanceId]===void 0&&(it[Nt.bucketInstanceId]={}),it[Nt.bucketInstanceId][Nt.featureIndex])continue;let hr=[new a.P(Ot.x1,Ot.y1),new a.P(Ot.x2,Ot.y1),new a.P(Ot.x2,Ot.y2),new a.P(Ot.x1,Ot.y2)];a.am(B,hr)&&(it[Nt.bucketInstanceId][Nt.featureIndex]=!0,yt[Nt.bucketInstanceId]===void 0&&(yt[Nt.bucketInstanceId]=[]),yt[Nt.bucketInstanceId].push(Nt.featureIndex))}return yt}insertCollisionBox(w,B,Q,ee,se,qe){(Q?this.ignoredGrid:this.grid).insert({bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B},w[0],w[1],w[2],w[3])}insertCollisionCircles(w,B,Q,ee,se,qe){let je=Q?this.ignoredGrid:this.grid,it={bucketInstanceId:ee,featureIndex:se,collisionGroupID:qe,overlapMode:B};for(let yt=0;yt=this.screenRightBoundary||eethis.screenBottomBoundary}isInsideGrid(w,B,Q,ee){return Q>=0&&w=0&&Bthis.projectAndGetPerspectiveRatio(Q,Rr.x,Rr.y,ee,yt));tr=mr.some(Rr=>!Rr.isOccluded),Ut=mr.map(Rr=>Rr.point)}else tr=!0;return{box:a.ao(Ut),allPointsOccluded:!tr}}}function nn(le,w,B){return w*(a.X/(le.tileSize*Math.pow(2,B-le.tileID.overscaledZ)))}class Wi{constructor(w,B,Q,ee){this.opacity=w?Math.max(0,Math.min(1,w.opacity+(w.placed?B:-B))):ee&&Q?1:0,this.placed=Q}isHidden(){return this.opacity===0&&!this.placed}}class Ni{constructor(w,B,Q,ee,se){this.text=new Wi(w?w.text:null,B,Q,se),this.icon=new Wi(w?w.icon:null,B,ee,se)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class _n{constructor(w,B,Q){this.text=w,this.icon=B,this.skipFade=Q}}class $i{constructor(){this.invProjMatrix=a.H(),this.viewportMatrix=a.H(),this.circles=[]}}class zn{constructor(w,B,Q,ee,se){this.bucketInstanceId=w,this.featureIndex=B,this.sourceLayerIndex=Q,this.bucketIndex=ee,this.tileID=se}}class Wn{constructor(w){this.crossSourceCollisions=w,this.maxGroupID=0,this.collisionGroups={}}get(w){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[w]){let B=++this.maxGroupID;this.collisionGroups[w]={ID:B,predicate:Q=>Q.collisionGroupID===B}}return this.collisionGroups[w]}}function It(le,w,B,Q,ee){let{horizontalAlign:se,verticalAlign:qe}=a.au(le);return new a.P(-(se-.5)*w+Q[0]*ee,-(qe-.5)*B+Q[1]*ee)}class ft{constructor(w,B,Q,ee,se,qe){this.transform=w.clone(),this.terrain=Q,this.collisionIndex=new bi(this.transform,B),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=ee,this.retainedQueryData={},this.collisionGroups=new Wn(se),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=qe,qe&&(qe.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(w){let B=this.terrain;return B?(Q,ee)=>B.getElevation(w,Q,ee):null}getBucketParts(w,B,Q,ee){let se=Q.getBucket(B),qe=Q.latestFeatureIndex;if(!se||!qe||B.id!==se.layerIds[0])return;let je=Q.collisionBoxArray,it=se.layers[0].layout,yt=se.layers[0].paint,Ot=Math.pow(2,this.transform.zoom-Q.tileID.overscaledZ),Nt=Q.tileSize/a.X,hr=Q.tileID.toUnwrapped(),Sr=this.transform.calculatePosMatrix(hr),he=it.get("text-pitch-alignment")==="map",be=it.get("text-rotation-alignment")==="map",Pe=nn(Q,1,this.transform.zoom),Oe=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("text-translate"),yt.get("text-translate-anchor")),Je=this.collisionIndex.mapProjection.translatePosition(this.transform,Q,yt.get("icon-translate"),yt.get("icon-translate-anchor")),He=Or(Sr,he,be,this.transform,Pe),et=null;if(he){let Dt=Nr(Sr,he,be,this.transform,Pe);et=a.L([],this.transform.labelPlaneMatrix,Dt)}this.retainedQueryData[se.bucketInstanceId]=new zn(se.bucketInstanceId,qe,se.sourceLayerIndex,se.index,Q.tileID);let Mt={bucket:se,layout:it,translationText:Oe,translationIcon:Je,posMatrix:Sr,unwrappedTileID:hr,textLabelPlaneMatrix:He,labelToScreenMatrix:et,scale:Ot,textPixelRatio:Nt,holdingForFade:Q.holdingForFade(),collisionBoxArray:je,partiallyEvaluatedTextSize:a.ag(se.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(se.sourceID)};if(ee)for(let Dt of se.sortKeyRanges){let{sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr}=Dt;w.push({sortKey:Ut,symbolInstanceStart:tr,symbolInstanceEnd:mr,parameters:Mt})}else w.push({symbolInstanceStart:0,symbolInstanceEnd:se.symbolInstances.length,parameters:Mt})}attemptAnchorPlacement(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je,He){let et=a.aq[w.textAnchor],Mt=[w.textOffset0,w.textOffset1],Dt=It(et,Q,ee,Mt,se),Ut=this.collisionIndex.placeCollisionBox(B,hr,it,yt,Ot,je,qe,Pe,Nt.predicate,He,Dt);if((!Je||this.collisionIndex.placeCollisionBox(Je,hr,it,yt,Ot,je,qe,Oe,Nt.predicate,He,Dt).placeable)&&Ut.placeable){let tr;if(this.prevPlacement&&this.prevPlacement.variableOffsets[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID]&&this.prevPlacement.placements[Sr.crossTileID].text&&(tr=this.prevPlacement.variableOffsets[Sr.crossTileID].anchor),Sr.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[Sr.crossTileID]={textOffset:Mt,width:Q,height:ee,anchor:et,textBoxScale:se,prevAnchor:tr},this.markUsedJustification(he,et,Sr,be),he.allowVerticalPlacement&&(this.markUsedOrientation(he,be,Sr),this.placedOrientations[Sr.crossTileID]=be),{shift:Dt,placedGlyphBoxes:Ut}}}placeLayerBucketPart(w,B,Q){let{bucket:ee,layout:se,translationText:qe,translationIcon:je,posMatrix:it,unwrappedTileID:yt,textLabelPlaneMatrix:Ot,labelToScreenMatrix:Nt,textPixelRatio:hr,holdingForFade:Sr,collisionBoxArray:he,partiallyEvaluatedTextSize:be,collisionGroup:Pe}=w.parameters,Oe=se.get("text-optional"),Je=se.get("icon-optional"),He=a.ar(se,"text-overlap","text-allow-overlap"),et=He==="always",Mt=a.ar(se,"icon-overlap","icon-allow-overlap"),Dt=Mt==="always",Ut=se.get("text-rotation-alignment")==="map",tr=se.get("text-pitch-alignment")==="map",mr=se.get("icon-text-fit")!=="none",Rr=se.get("symbol-z-order")==="viewport-y",zr=et&&(Dt||!ee.hasIconData()||Je),Xr=Dt&&(et||!ee.hasTextData()||Oe);!ee.collisionArrays&&he&&ee.deserializeCollisionBoxes(he);let di=this._getTerrainElevationFunc(this.retainedQueryData[ee.bucketInstanceId].tileID),Li=(Ci,Qi,Mn)=>{var pa,ea;if(B[Ci.crossTileID])return;if(Sr)return void(this.placements[Ci.crossTileID]=new _n(!1,!1,!1));let Ga=!1,To=!1,Wa=!0,co=null,Ro={box:null,placeable:!1,offscreen:null},Ds={box:null,placeable:!1,offscreen:null},As=null,yo=null,po=null,_l=0,Hl=0,Zu=0;Qi.textFeatureIndex?_l=Qi.textFeatureIndex:Ci.useRuntimeCollisionCircles&&(_l=Ci.featureIndex),Qi.verticalTextFeatureIndex&&(Hl=Qi.verticalTextFeatureIndex);let cu=Qi.textBox;if(cu){let zl=we=>{let Be=a.ah.horizontal;if(ee.allowVerticalPlacement&&!we&&this.prevPlacement){let Ue=this.prevPlacement.placedOrientations[Ci.crossTileID];Ue&&(this.placedOrientations[Ci.crossTileID]=Ue,Be=Ue,this.markUsedOrientation(ee,Be,Ci))}return Be},Fl=(we,Be)=>{if(ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Qi.verticalTextBox){for(let Ue of ee.writingModes)if(Ue===a.ah.vertical?(Ro=Be(),Ds=Ro):Ro=we(),Ro&&Ro.placeable)break}else Ro=we()},Z=Ci.textAnchorOffsetStartIndex,oe=Ci.textAnchorOffsetEndIndex;if(oe===Z){let we=(Be,Ue)=>{let We=this.collisionIndex.placeCollisionBox(Be,He,hr,it,yt,tr,Ut,qe,Pe.predicate,di);return We&&We.placeable&&(this.markUsedOrientation(ee,Ue,Ci),this.placedOrientations[Ci.crossTileID]=Ue),We};Fl(()=>we(cu,a.ah.horizontal),()=>{let Be=Qi.verticalTextBox;return ee.allowVerticalPlacement&&Ci.numVerticalGlyphVertices>0&&Be?we(Be,a.ah.vertical):{box:null,offscreen:null}}),zl(Ro&&Ro.placeable)}else{let we=a.aq[(ea=(pa=this.prevPlacement)===null||pa===void 0?void 0:pa.variableOffsets[Ci.crossTileID])===null||ea===void 0?void 0:ea.anchor],Be=(We,wt,tt)=>{let zt=We.x2-We.x1,or=We.y2-We.y1,lr=Ci.textBoxScale,Dr=mr&&Mt==="never"?wt:null,Ir=null,oi=He==="never"?1:2,ui="never";we&&oi++;for(let qr=0;qrBe(cu,Qi.iconBox,a.ah.horizontal),()=>{let We=Qi.verticalTextBox;return ee.allowVerticalPlacement&&(!Ro||!Ro.placeable)&&Ci.numVerticalGlyphVertices>0&&We?Be(We,Qi.verticalIconBox,a.ah.vertical):{box:null,occluded:!0,offscreen:null}}),Ro&&(Ga=Ro.placeable,Wa=Ro.offscreen);let Ue=zl(Ro&&Ro.placeable);if(!Ga&&this.prevPlacement){let We=this.prevPlacement.variableOffsets[Ci.crossTileID];We&&(this.variableOffsets[Ci.crossTileID]=We,this.markUsedJustification(ee,We.anchor,Ci,Ue))}}}if(As=Ro,Ga=As&&As.placeable,Wa=As&&As.offscreen,Ci.useRuntimeCollisionCircles){let zl=ee.text.placedSymbolArray.get(Ci.centerJustifiedTextSymbolIndex),Fl=a.ai(ee.textSizeData,be,zl),Z=se.get("text-padding");yo=this.collisionIndex.placeCollisionCircles(He,zl,ee.lineVertexArray,ee.glyphOffsetArray,Fl,it,yt,Ot,Nt,Q,tr,Pe.predicate,Ci.collisionCircleDiameter,Z,qe,di),yo.circles.length&&yo.collisionDetected&&!Q&&a.w("Collisions detected, but collision boxes are not shown"),Ga=et||yo.circles.length>0&&!yo.collisionDetected,Wa=Wa&&yo.offscreen}if(Qi.iconFeatureIndex&&(Zu=Qi.iconFeatureIndex),Qi.iconBox){let zl=Fl=>this.collisionIndex.placeCollisionBox(Fl,Mt,hr,it,yt,tr,Ut,je,Pe.predicate,di,mr&&co?co:void 0);Ds&&Ds.placeable&&Qi.verticalIconBox?(po=zl(Qi.verticalIconBox),To=po.placeable):(po=zl(Qi.iconBox),To=po.placeable),Wa=Wa&&po.offscreen}let el=Oe||Ci.numHorizontalGlyphVertices===0&&Ci.numVerticalGlyphVertices===0,au=Je||Ci.numIconVertices===0;el||au?au?el||(To=To&&Ga):Ga=To&&Ga:To=Ga=To&&Ga;let zc=To&&po.placeable;if(Ga&&As.placeable&&this.collisionIndex.insertCollisionBox(As.box,He,se.get("text-ignore-placement"),ee.bucketInstanceId,Ds&&Ds.placeable&&Hl?Hl:_l,Pe.ID),zc&&this.collisionIndex.insertCollisionBox(po.box,Mt,se.get("icon-ignore-placement"),ee.bucketInstanceId,Zu,Pe.ID),yo&&Ga&&this.collisionIndex.insertCollisionCircles(yo.circles,He,se.get("text-ignore-placement"),ee.bucketInstanceId,_l,Pe.ID),Q&&this.storeCollisionData(ee.bucketInstanceId,Mn,Qi,As,po,yo),Ci.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(ee.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[Ci.crossTileID]=new _n(Ga||zr,To||Xr,Wa||ee.justReloaded),B[Ci.crossTileID]=!0};if(Rr){if(w.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let Ci=ee.getSortedSymbolIndexes(this.transform.angle);for(let Qi=Ci.length-1;Qi>=0;--Qi){let Mn=Ci[Qi];Li(ee.symbolInstances.get(Mn),ee.collisionArrays[Mn],Mn)}}else for(let Ci=w.symbolInstanceStart;Ci=0&&(w.text.placedSymbolArray.get(je).crossTileID=se>=0&&je!==se?0:Q.crossTileID)}markUsedOrientation(w,B,Q){let ee=B===a.ah.horizontal||B===a.ah.horizontalOnly?B:0,se=B===a.ah.vertical?B:0,qe=[Q.leftJustifiedTextSymbolIndex,Q.centerJustifiedTextSymbolIndex,Q.rightJustifiedTextSymbolIndex];for(let je of qe)w.text.placedSymbolArray.get(je).placedOrientation=ee;Q.verticalPlacedTextSymbolIndex&&(w.text.placedSymbolArray.get(Q.verticalPlacedTextSymbolIndex).placedOrientation=se)}commit(w){this.commitTime=w,this.zoomAtLastRecencyCheck=this.transform.zoom;let B=this.prevPlacement,Q=!1;this.prevZoomAdjustment=B?B.zoomAdjustment(this.transform.zoom):0;let ee=B?B.symbolFadeChange(w):1,se=B?B.opacities:{},qe=B?B.variableOffsets:{},je=B?B.placedOrientations:{};for(let it in this.placements){let yt=this.placements[it],Ot=se[it];Ot?(this.opacities[it]=new Ni(Ot,ee,yt.text,yt.icon),Q=Q||yt.text!==Ot.text.placed||yt.icon!==Ot.icon.placed):(this.opacities[it]=new Ni(null,ee,yt.text,yt.icon,yt.skipFade),Q=Q||yt.text||yt.icon)}for(let it in se){let yt=se[it];if(!this.opacities[it]){let Ot=new Ni(yt,ee,!1,!1);Ot.isHidden()||(this.opacities[it]=Ot,Q=Q||yt.text.placed||yt.icon.placed)}}for(let it in qe)this.variableOffsets[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.variableOffsets[it]=qe[it]);for(let it in je)this.placedOrientations[it]||!this.opacities[it]||this.opacities[it].isHidden()||(this.placedOrientations[it]=je[it]);if(B&&B.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");Q?this.lastPlacementChangeTime=w:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=B?B.lastPlacementChangeTime:w)}updateLayerOpacities(w,B){let Q={};for(let ee of B){let se=ee.getBucket(w);se&&ee.latestFeatureIndex&&w.id===se.layerIds[0]&&this.updateBucketOpacities(se,ee.tileID,Q,ee.collisionBoxArray)}}updateBucketOpacities(w,B,Q,ee){w.hasTextData()&&(w.text.opacityVertexArray.clear(),w.text.hasVisibleVertices=!1),w.hasIconData()&&(w.icon.opacityVertexArray.clear(),w.icon.hasVisibleVertices=!1),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexArray.clear(),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexArray.clear();let se=w.layers[0],qe=se.layout,je=new Ni(null,0,!1,!1,!0),it=qe.get("text-allow-overlap"),yt=qe.get("icon-allow-overlap"),Ot=se._unevaluatedLayout.hasValue("text-variable-anchor")||se._unevaluatedLayout.hasValue("text-variable-anchor-offset"),Nt=qe.get("text-rotation-alignment")==="map",hr=qe.get("text-pitch-alignment")==="map",Sr=qe.get("icon-text-fit")!=="none",he=new Ni(null,0,it&&(yt||!w.hasIconData()||qe.get("icon-optional")),yt&&(it||!w.hasTextData()||qe.get("text-optional")),!0);!w.collisionArrays&&ee&&(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData())&&w.deserializeCollisionBoxes(ee);let be=(Oe,Je,He)=>{for(let et=0;et0,tr=this.placedOrientations[Je.crossTileID],mr=tr===a.ah.vertical,Rr=tr===a.ah.horizontal||tr===a.ah.horizontalOnly;if(He>0||et>0){let Xr=Mi(Dt.text);be(w.text,He,mr?Pi:Xr),be(w.text,et,Rr?Pi:Xr);let di=Dt.text.isHidden();[Je.rightJustifiedTextSymbolIndex,Je.centerJustifiedTextSymbolIndex,Je.leftJustifiedTextSymbolIndex].forEach(Qi=>{Qi>=0&&(w.text.placedSymbolArray.get(Qi).hidden=di||mr?1:0)}),Je.verticalPlacedTextSymbolIndex>=0&&(w.text.placedSymbolArray.get(Je.verticalPlacedTextSymbolIndex).hidden=di||Rr?1:0);let Li=this.variableOffsets[Je.crossTileID];Li&&this.markUsedJustification(w,Li.anchor,Je,tr);let Ci=this.placedOrientations[Je.crossTileID];Ci&&(this.markUsedJustification(w,"left",Je,Ci),this.markUsedOrientation(w,Ci,Je))}if(Ut){let Xr=Mi(Dt.icon),di=!(Sr&&Je.verticalPlacedIconSymbolIndex&&mr);Je.placedIconSymbolIndex>=0&&(be(w.icon,Je.numIconVertices,di?Xr:Pi),w.icon.placedSymbolArray.get(Je.placedIconSymbolIndex).hidden=Dt.icon.isHidden()),Je.verticalPlacedIconSymbolIndex>=0&&(be(w.icon,Je.numVerticalIconVertices,di?Pi:Xr),w.icon.placedSymbolArray.get(Je.verticalPlacedIconSymbolIndex).hidden=Dt.icon.isHidden())}let zr=Pe&&Pe.has(Oe)?Pe.get(Oe):{text:null,icon:null};if(w.hasIconCollisionBoxData()||w.hasTextCollisionBoxData()){let Xr=w.collisionArrays[Oe];if(Xr){let di=new a.P(0,0);if(Xr.textBox||Xr.verticalTextBox){let Li=!0;if(Ot){let Ci=this.variableOffsets[Mt];Ci?(di=It(Ci.anchor,Ci.width,Ci.height,Ci.textOffset,Ci.textBoxScale),Nt&&di._rotate(hr?this.transform.angle:-this.transform.angle)):Li=!1}if(Xr.textBox||Xr.verticalTextBox){let Ci;Xr.textBox&&(Ci=mr),Xr.verticalTextBox&&(Ci=Rr),jt(w.textCollisionBox.collisionVertexArray,Dt.text.placed,!Li||Ci,zr.text,di.x,di.y)}}if(Xr.iconBox||Xr.verticalIconBox){let Li=!!(!Rr&&Xr.verticalIconBox),Ci;Xr.iconBox&&(Ci=Li),Xr.verticalIconBox&&(Ci=!Li),jt(w.iconCollisionBox.collisionVertexArray,Dt.icon.placed,Ci,zr.icon,Sr?di.x:0,Sr?di.y:0)}}}}if(w.sortFeatures(this.transform.angle),this.retainedQueryData[w.bucketInstanceId]&&(this.retainedQueryData[w.bucketInstanceId].featureSortOrder=w.featureSortOrder),w.hasTextData()&&w.text.opacityVertexBuffer&&w.text.opacityVertexBuffer.updateData(w.text.opacityVertexArray),w.hasIconData()&&w.icon.opacityVertexBuffer&&w.icon.opacityVertexBuffer.updateData(w.icon.opacityVertexArray),w.hasIconCollisionBoxData()&&w.iconCollisionBox.collisionVertexBuffer&&w.iconCollisionBox.collisionVertexBuffer.updateData(w.iconCollisionBox.collisionVertexArray),w.hasTextCollisionBoxData()&&w.textCollisionBox.collisionVertexBuffer&&w.textCollisionBox.collisionVertexBuffer.updateData(w.textCollisionBox.collisionVertexArray),w.text.opacityVertexArray.length!==w.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${w.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${w.text.layoutVertexArray.length}) / 4`);if(w.icon.opacityVertexArray.length!==w.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${w.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${w.icon.layoutVertexArray.length}) / 4`);if(w.bucketInstanceId in this.collisionCircleArrays){let Oe=this.collisionCircleArrays[w.bucketInstanceId];w.placementInvProjMatrix=Oe.invProjMatrix,w.placementViewportMatrix=Oe.viewportMatrix,w.collisionCircleArray=Oe.circles,delete this.collisionCircleArrays[w.bucketInstanceId]}}symbolFadeChange(w){return this.fadeDuration===0?1:(w-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(w){return Math.max(0,(this.transform.zoom-w)/1.5)}hasTransitions(w){return this.stale||w-this.lastPlacementChangeTimew}setStale(){this.stale=!0}}function jt(le,w,B,Q,ee,se){Q&&Q.length!==0||(Q=[0,0,0,0]);let qe=Q[0]-ri,je=Q[1]-ri,it=Q[2]-ri,yt=Q[3]-ri;le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,je),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,it,yt),le.emplaceBack(w?1:0,B?1:0,ee||0,se||0,qe,yt)}let Zt=Math.pow(2,25),yr=Math.pow(2,24),Fr=Math.pow(2,17),Zr=Math.pow(2,16),Vr=Math.pow(2,9),gi=Math.pow(2,8),Si=Math.pow(2,1);function Mi(le){if(le.opacity===0&&!le.placed)return 0;if(le.opacity===1&&le.placed)return 4294967295;let w=le.placed?1:0,B=Math.floor(127*le.opacity);return B*Zt+w*yr+B*Fr+w*Zr+B*Vr+w*gi+B*Si+w}let Pi=0;function Gi(){return{isOccluded:(le,w,B)=>!1,getPitchedTextCorrection:(le,w,B)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(le,w,B,Q){throw new Error("Not implemented.")},translatePosition:(le,w,B,Q)=>function(ee,se,qe,je,it=!1){if(!qe[0]&&!qe[1])return[0,0];let yt=it?je==="map"?ee.angle:0:je==="viewport"?-ee.angle:0;if(yt){let Ot=Math.sin(yt),Nt=Math.cos(yt);qe=[qe[0]*Nt-qe[1]*Ot,qe[0]*Ot+qe[1]*Nt]}return[it?qe[0]:nn(se,qe[0],ee.zoom),it?qe[1]:nn(se,qe[1],ee.zoom)]}(le,w,B,Q),getCircleRadiusCorrection:le=>1}}class Ki{constructor(w){this._sortAcrossTiles=w.layout.get("symbol-z-order")!=="viewport-y"&&!w.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(w,B,Q,ee,se){let qe=this._bucketParts;for(;this._currentTileIndexje.sortKey-it.sortKey));this._currentPartIndex!this._forceFullPlacement&&u.now()-ee>2;for(;this._currentPlacementIndex>=0;){let qe=B[w[this._currentPlacementIndex]],je=this.placement.collisionIndex.transform.zoom;if(qe.type==="symbol"&&(!qe.minzoom||qe.minzoom<=je)&&(!qe.maxzoom||qe.maxzoom>je)){if(this._inProgressLayer||(this._inProgressLayer=new Ki(qe)),this._inProgressLayer.continuePlacement(Q[qe.source],this.placement,this._showCollisionBoxes,qe,se))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(w){return this.placement.commit(w),this.placement}}let jn=512/a.X/2;class la{constructor(w,B,Q){this.tileID=w,this.bucketInstanceId=Q,this._symbolsByKey={};let ee=new Map;for(let se=0;se({x:Math.floor(it.anchorX*jn),y:Math.floor(it.anchorY*jn)})),crossTileIDs:qe.map(it=>it.crossTileID)};if(je.positions.length>128){let it=new a.av(je.positions.length,16,Uint16Array);for(let{x:yt,y:Ot}of je.positions)it.add(yt,Ot);it.finish(),delete je.positions,je.index=it}this._symbolsByKey[se]=je}}getScaledCoordinates(w,B){let{x:Q,y:ee,z:se}=this.tileID.canonical,{x:qe,y:je,z:it}=B.canonical,yt=jn/Math.pow(2,it-se),Ot=(je*a.X+w.anchorY)*yt,Nt=ee*a.X*jn;return{x:Math.floor((qe*a.X+w.anchorX)*yt-Q*a.X*jn),y:Math.floor(Ot-Nt)}}findMatches(w,B,Q){let ee=this.tileID.canonical.zw)}}class Fa{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Ra{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(w){let B=Math.round((w-this.lng)/360);if(B!==0)for(let Q in this.indexes){let ee=this.indexes[Q],se={};for(let qe in ee){let je=ee[qe];je.tileID=je.tileID.unwrapTo(je.tileID.wrap+B),se[je.tileID.key]=je}this.indexes[Q]=se}this.lng=w}addBucket(w,B,Q){if(this.indexes[w.overscaledZ]&&this.indexes[w.overscaledZ][w.key]){if(this.indexes[w.overscaledZ][w.key].bucketInstanceId===B.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(w.overscaledZ,this.indexes[w.overscaledZ][w.key])}for(let se=0;sew.overscaledZ)for(let je in qe){let it=qe[je];it.tileID.isChildOf(w)&&it.findMatches(B.symbolInstances,w,ee)}else{let je=qe[w.scaledTo(Number(se)).key];je&&je.findMatches(B.symbolInstances,w,ee)}}for(let se=0;se{B[Q]=!0});for(let Q in this.layerIndexes)B[Q]||delete this.layerIndexes[Q]}}let oa=(le,w)=>a.t(le,w&&w.filter(B=>B.identifier!=="source.canvas")),Sn=a.aw();class Ha extends a.E{constructor(w,B={}){super(),this._rtlPluginLoaded=()=>{for(let Q in this.sourceCaches){let ee=this.sourceCaches[Q].getSource().type;ee!=="vector"&&ee!=="geojson"||this.sourceCaches[Q].reload()}},this.map=w,this.dispatcher=new Ee(Te(),w._getMapId()),this.dispatcher.registerMessageHandler("GG",(Q,ee)=>this.getGlyphs(Q,ee)),this.dispatcher.registerMessageHandler("GI",(Q,ee)=>this.getImages(Q,ee)),this.imageManager=new T,this.imageManager.setEventedParent(this),this.glyphManager=new H(w._requestManager,B.localIdeographFontFamily),this.lineAtlas=new ae(256,512),this.crossTileSymbolIndex=new jo,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new a.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",a.ay()),bt().on(er,this._rtlPluginLoaded),this.on("data",Q=>{if(Q.dataType!=="source"||Q.sourceDataType!=="metadata")return;let ee=this.sourceCaches[Q.sourceId];if(!ee)return;let se=ee.getSource();if(se&&se.vectorLayerIds)for(let qe in this._layers){let je=this._layers[qe];je.source===se.id&&this._validateLayer(je)}})}loadURL(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),B.validate=typeof B.validate!="boolean"||B.validate;let ee=this.map._requestManager.transformRequest(w,"Style");this._loadStyleRequest=new AbortController;let se=this._loadStyleRequest;a.h(ee,this._loadStyleRequest).then(qe=>{this._loadStyleRequest=null,this._load(qe.data,B,Q)}).catch(qe=>{this._loadStyleRequest=null,qe&&!se.signal.aborted&&this.fire(new a.j(qe))})}loadJSON(w,B={},Q){this.fire(new a.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,B.validate=B.validate!==!1,this._load(w,B,Q)}).catch(()=>{})}loadEmpty(){this.fire(new a.k("dataloading",{dataType:"style"})),this._load(Sn,{validate:!1})}_load(w,B,Q){var ee;let se=B.transformStyle?B.transformStyle(Q,w):w;if(!B.validate||!oa(this,a.u(se))){this._loaded=!0,this.stylesheet=se;for(let qe in se.sources)this.addSource(qe,se.sources[qe],{validate:!1});se.sprite?this._loadSprite(se.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(se.glyphs),this._createLayers(),this.light=new N(this.stylesheet.light),this.sky=new re(this.stylesheet.sky),this.map.setTerrain((ee=this.stylesheet.terrain)!==null&&ee!==void 0?ee:null),this.fire(new a.k("data",{dataType:"style"})),this.fire(new a.k("style.load"))}}_createLayers(){let w=a.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",w),this._order=w.map(B=>B.id),this._layers={},this._serializedLayers=null;for(let B of w){let Q=a.aA(B);Q.setEventedParent(this,{layer:{id:B.id}}),this._layers[B.id]=Q}}_loadSprite(w,B=!1,Q=void 0){let ee;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(se,qe,je,it){return a._(this,void 0,void 0,function*(){let yt=C(se),Ot=je>1?"@2x":"",Nt={},hr={};for(let{id:Sr,url:he}of yt){let be=qe.transformRequest(M(he,Ot,".json"),"SpriteJSON");Nt[Sr]=a.h(be,it);let Pe=qe.transformRequest(M(he,Ot,".png"),"SpriteImage");hr[Sr]=p.getImage(Pe,it)}return yield Promise.all([...Object.values(Nt),...Object.values(hr)]),function(Sr,he){return a._(this,void 0,void 0,function*(){let be={};for(let Pe in Sr){be[Pe]={};let Oe=u.getImageCanvasContext((yield he[Pe]).data),Je=(yield Sr[Pe]).data;for(let He in Je){let{width:et,height:Mt,x:Dt,y:Ut,sdf:tr,pixelRatio:mr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li}=Je[He];be[Pe][He]={data:null,pixelRatio:mr,sdf:tr,stretchX:Rr,stretchY:zr,content:Xr,textFitWidth:di,textFitHeight:Li,spriteData:{width:et,height:Mt,x:Dt,y:Ut,context:Oe}}}}return be})}(Nt,hr)})}(w,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(se=>{if(this._spriteRequest=null,se)for(let qe in se){this._spritesImagesIds[qe]=[];let je=this._spritesImagesIds[qe]?this._spritesImagesIds[qe].filter(it=>!(it in se)):[];for(let it of je)this.imageManager.removeImage(it),this._changedImages[it]=!0;for(let it in se[qe]){let yt=qe==="default"?it:`${qe}:${it}`;this._spritesImagesIds[qe].push(yt),yt in this.imageManager.images?this.imageManager.updateImage(yt,se[qe][it],!1):this.imageManager.addImage(yt,se[qe][it]),B&&(this._changedImages[yt]=!0)}}}).catch(se=>{this._spriteRequest=null,ee=se,this.fire(new a.j(ee))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),B&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"})),Q&&Q(ee)})}_unloadSprite(){for(let w of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(w),this._changedImages[w]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}_validateLayer(w){let B=this.sourceCaches[w.source];if(!B)return;let Q=w.sourceLayer;if(!Q)return;let ee=B.getSource();(ee.type==="geojson"||ee.vectorLayerIds&&ee.vectorLayerIds.indexOf(Q)===-1)&&this.fire(new a.j(new Error(`Source layer "${Q}" does not exist on source "${ee.id}" as specified by style layer "${w.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let w in this.sourceCaches)if(!this.sourceCaches[w].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(w,B=!1){let Q=this._serializedAllLayers();if(!w||w.length===0)return Object.values(B?a.aB(Q):Q);let ee=[];for(let se of w)if(Q[se]){let qe=B?a.aB(Q[se]):Q[se];ee.push(qe)}return ee}_serializedAllLayers(){let w=this._serializedLayers;if(w)return w;w=this._serializedLayers={};let B=Object.keys(this._layers);for(let Q of B){let ee=this._layers[Q];ee.type!=="custom"&&(w[Q]=ee.serialize())}return w}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let w in this.sourceCaches)if(this.sourceCaches[w].hasTransition())return!0;for(let w in this._layers)if(this._layers[w].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(w){if(!this._loaded)return;let B=this._changed;if(B){let ee=Object.keys(this._updatedLayers),se=Object.keys(this._removedLayers);(ee.length||se.length)&&this._updateWorkerLayers(ee,se);for(let qe in this._updatedSources){let je=this._updatedSources[qe];if(je==="reload")this._reloadSource(qe);else{if(je!=="clear")throw new Error(`Invalid action ${je}`);this._clearSource(qe)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let qe in this._updatedPaintProps)this._layers[qe].updateTransitions(w);this.light.updateTransitions(w),this.sky.updateTransitions(w),this._resetUpdates()}let Q={};for(let ee in this.sourceCaches){let se=this.sourceCaches[ee];Q[ee]=se.used,se.used=!1}for(let ee of this._order){let se=this._layers[ee];se.recalculate(w,this._availableImages),!se.isHidden(w.zoom)&&se.source&&(this.sourceCaches[se.source].used=!0)}for(let ee in Q){let se=this.sourceCaches[ee];!!Q[ee]!=!!se.used&&se.fire(new a.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:ee}))}this.light.recalculate(w),this.sky.recalculate(w),this.z=w.zoom,B&&this.fire(new a.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let w=Object.keys(this._changedImages);if(w.length){for(let B in this.sourceCaches)this.sourceCaches[B].reloadTilesForDependencies(["icons","patterns"],w);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let w in this.sourceCaches)this.sourceCaches[w].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(w,B){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(w,!1),removedIds:B})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(w,B={}){var Q;this._checkLoaded();let ee=this.serialize();if(w=B.transformStyle?B.transformStyle(ee,w):w,((Q=B.validate)===null||Q===void 0||Q)&&oa(this,a.u(w)))return!1;(w=a.aB(w)).layers=a.az(w.layers);let se=a.aC(ee,w),qe=this._getOperationsToPerform(se);if(qe.unimplemented.length>0)throw new Error(`Unimplemented: ${qe.unimplemented.join(", ")}.`);if(qe.operations.length===0)return!1;for(let je of qe.operations)je();return this.stylesheet=w,this._serializedLayers=null,!0}_getOperationsToPerform(w){let B=[],Q=[];for(let ee of w)switch(ee.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":B.push(()=>this.addLayer.apply(this,ee.args));break;case"removeLayer":B.push(()=>this.removeLayer.apply(this,ee.args));break;case"setPaintProperty":B.push(()=>this.setPaintProperty.apply(this,ee.args));break;case"setLayoutProperty":B.push(()=>this.setLayoutProperty.apply(this,ee.args));break;case"setFilter":B.push(()=>this.setFilter.apply(this,ee.args));break;case"addSource":B.push(()=>this.addSource.apply(this,ee.args));break;case"removeSource":B.push(()=>this.removeSource.apply(this,ee.args));break;case"setLayerZoomRange":B.push(()=>this.setLayerZoomRange.apply(this,ee.args));break;case"setLight":B.push(()=>this.setLight.apply(this,ee.args));break;case"setGeoJSONSourceData":B.push(()=>this.setGeoJSONSourceData.apply(this,ee.args));break;case"setGlyphs":B.push(()=>this.setGlyphs.apply(this,ee.args));break;case"setSprite":B.push(()=>this.setSprite.apply(this,ee.args));break;case"setSky":B.push(()=>this.setSky.apply(this,ee.args));break;case"setTerrain":B.push(()=>this.map.setTerrain.apply(this,ee.args));break;case"setTransition":B.push(()=>{});break;default:Q.push(ee.command)}return{operations:B,unimplemented:Q}}addImage(w,B){if(this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" already exists.`)));this.imageManager.addImage(w,B),this._afterImageUpdated(w)}updateImage(w,B){this.imageManager.updateImage(w,B)}getImage(w){return this.imageManager.getImage(w)}removeImage(w){if(!this.getImage(w))return this.fire(new a.j(new Error(`An image named "${w}" does not exist.`)));this.imageManager.removeImage(w),this._afterImageUpdated(w)}_afterImageUpdated(w){this._availableImages=this.imageManager.listImages(),this._changedImages[w]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(w,B,Q={}){if(this._checkLoaded(),this.sourceCaches[w]!==void 0)throw new Error(`Source "${w}" already exists.`);if(!B.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(B).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(B.type)>=0&&this._validate(a.u.source,`sources.${w}`,B,null,Q))return;this.map&&this.map._collectResourceTiming&&(B.collectResourceTiming=!0);let ee=this.sourceCaches[w]=new dt(w,B,this.dispatcher);ee.style=this,ee.setEventedParent(this,()=>({isSourceLoaded:ee.loaded(),source:ee.serialize(),sourceId:w})),ee.onAdd(this.map),this._changed=!0}removeSource(w){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error("There is no source with this ID");for(let Q in this._layers)if(this._layers[Q].source===w)return this.fire(new a.j(new Error(`Source "${w}" cannot be removed while layer "${Q}" is using it.`)));let B=this.sourceCaches[w];delete this.sourceCaches[w],delete this._updatedSources[w],B.fire(new a.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:w})),B.setEventedParent(null),B.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(w,B){if(this._checkLoaded(),this.sourceCaches[w]===void 0)throw new Error(`There is no source with this ID=${w}`);let Q=this.sourceCaches[w].getSource();if(Q.type!=="geojson")throw new Error(`geojsonSource.type is ${Q.type}, which is !== 'geojson`);Q.setData(B),this._changed=!0}getSource(w){return this.sourceCaches[w]&&this.sourceCaches[w].getSource()}addLayer(w,B,Q={}){this._checkLoaded();let ee=w.id;if(this.getLayer(ee))return void this.fire(new a.j(new Error(`Layer "${ee}" already exists on this map.`)));let se;if(w.type==="custom"){if(oa(this,a.aD(w)))return;se=a.aA(w)}else{if("source"in w&&typeof w.source=="object"&&(this.addSource(ee,w.source),w=a.aB(w),w=a.e(w,{source:ee})),this._validate(a.u.layer,`layers.${ee}`,w,{arrayIndex:-1},Q))return;se=a.aA(w),this._validateLayer(se),se.setEventedParent(this,{layer:{id:ee}})}let qe=B?this._order.indexOf(B):this._order.length;if(B&&qe===-1)this.fire(new a.j(new Error(`Cannot add layer "${ee}" before non-existing layer "${B}".`)));else{if(this._order.splice(qe,0,ee),this._layerOrderChanged=!0,this._layers[ee]=se,this._removedLayers[ee]&&se.source&&se.type!=="custom"){let je=this._removedLayers[ee];delete this._removedLayers[ee],je.type!==se.type?this._updatedSources[se.source]="clear":(this._updatedSources[se.source]="reload",this.sourceCaches[se.source].pause())}this._updateLayer(se),se.onAdd&&se.onAdd(this.map)}}moveLayer(w,B){if(this._checkLoaded(),this._changed=!0,!this._layers[w])return void this.fire(new a.j(new Error(`The layer '${w}' does not exist in the map's style and cannot be moved.`)));if(w===B)return;let Q=this._order.indexOf(w);this._order.splice(Q,1);let ee=B?this._order.indexOf(B):this._order.length;B&&ee===-1?this.fire(new a.j(new Error(`Cannot move layer "${w}" before non-existing layer "${B}".`))):(this._order.splice(ee,0,w),this._layerOrderChanged=!0)}removeLayer(w){this._checkLoaded();let B=this._layers[w];if(!B)return void this.fire(new a.j(new Error(`Cannot remove non-existing layer "${w}".`)));B.setEventedParent(null);let Q=this._order.indexOf(w);this._order.splice(Q,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[w]=B,delete this._layers[w],this._serializedLayers&&delete this._serializedLayers[w],delete this._updatedLayers[w],delete this._updatedPaintProps[w],B.onRemove&&B.onRemove(this.map)}getLayer(w){return this._layers[w]}getLayersOrder(){return[...this._order]}hasLayer(w){return w in this._layers}setLayerZoomRange(w,B,Q){this._checkLoaded();let ee=this.getLayer(w);ee?ee.minzoom===B&&ee.maxzoom===Q||(B!=null&&(ee.minzoom=B),Q!=null&&(ee.maxzoom=Q),this._updateLayer(ee)):this.fire(new a.j(new Error(`Cannot set the zoom range of non-existing layer "${w}".`)))}setFilter(w,B,Q={}){this._checkLoaded();let ee=this.getLayer(w);if(ee){if(!a.aE(ee.filter,B))return B==null?(ee.filter=void 0,void this._updateLayer(ee)):void(this._validate(a.u.filter,`layers.${ee.id}.filter`,B,null,Q)||(ee.filter=a.aB(B),this._updateLayer(ee)))}else this.fire(new a.j(new Error(`Cannot filter non-existing layer "${w}".`)))}getFilter(w){return a.aB(this.getLayer(w).filter)}setLayoutProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getLayoutProperty(B),Q)||(se.setLayoutProperty(B,Q,ee),this._updateLayer(se)):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getLayoutProperty(w,B){let Q=this.getLayer(w);if(Q)return Q.getLayoutProperty(B);this.fire(new a.j(new Error(`Cannot get style of non-existing layer "${w}".`)))}setPaintProperty(w,B,Q,ee={}){this._checkLoaded();let se=this.getLayer(w);se?a.aE(se.getPaintProperty(B),Q)||(se.setPaintProperty(B,Q,ee)&&this._updateLayer(se),this._changed=!0,this._updatedPaintProps[w]=!0,this._serializedLayers=null):this.fire(new a.j(new Error(`Cannot style non-existing layer "${w}".`)))}getPaintProperty(w,B){return this.getLayer(w).getPaintProperty(B)}setFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=w.sourceLayer,se=this.sourceCaches[Q];if(se===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let qe=se.getSource().type;qe==="geojson"&&ee?this.fire(new a.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):qe!=="vector"||ee?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),se.setFeatureState(ee,w.id,B)):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(w,B){this._checkLoaded();let Q=w.source,ee=this.sourceCaches[Q];if(ee===void 0)return void this.fire(new a.j(new Error(`The source '${Q}' does not exist in the map's style.`)));let se=ee.getSource().type,qe=se==="vector"?w.sourceLayer:void 0;se!=="vector"||qe?B&&typeof w.id!="string"&&typeof w.id!="number"?this.fire(new a.j(new Error("A feature id is required to remove its specific state property."))):ee.removeFeatureState(qe,w.id,B):this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(w){this._checkLoaded();let B=w.source,Q=w.sourceLayer,ee=this.sourceCaches[B];if(ee!==void 0)return ee.getSource().type!=="vector"||Q?(w.id===void 0&&this.fire(new a.j(new Error("The feature id parameter must be provided."))),ee.getFeatureState(Q,w.id)):void this.fire(new a.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new a.j(new Error(`The source '${B}' does not exist in the map's style.`)))}getTransition(){return a.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let w=a.aF(this.sourceCaches,se=>se.serialize()),B=this._serializeByIds(this._order,!0),Q=this.map.getTerrain()||void 0,ee=this.stylesheet;return a.aG({version:ee.version,name:ee.name,metadata:ee.metadata,light:ee.light,sky:ee.sky,center:ee.center,zoom:ee.zoom,bearing:ee.bearing,pitch:ee.pitch,sprite:ee.sprite,glyphs:ee.glyphs,transition:ee.transition,sources:w,layers:B,terrain:Q},se=>se!==void 0)}_updateLayer(w){this._updatedLayers[w.id]=!0,w.source&&!this._updatedSources[w.source]&&this.sourceCaches[w.source].getSource().type!=="raster"&&(this._updatedSources[w.source]="reload",this.sourceCaches[w.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(w){let B=qe=>this._layers[qe].type==="fill-extrusion",Q={},ee=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je)){Q[je]=qe;for(let it of w){let yt=it[je];if(yt)for(let Ot of yt)ee.push(Ot)}}}ee.sort((qe,je)=>je.intersectionZ-qe.intersectionZ);let se=[];for(let qe=this._order.length-1;qe>=0;qe--){let je=this._order[qe];if(B(je))for(let it=ee.length-1;it>=0;it--){let yt=ee[it].feature;if(Q[yt.layer.id]{let tr=Oe.featureSortOrder;if(tr){let mr=tr.indexOf(Dt.featureIndex);return tr.indexOf(Ut.featureIndex)-mr}return Ut.featureIndex-Dt.featureIndex});for(let Dt of Mt)et.push(Dt)}}for(let Oe in he)he[Oe].forEach(Je=>{let He=Je.feature,et=yt[je[Oe].source].getFeatureState(He.layer["source-layer"],He.id);He.source=He.layer.source,He.layer["source-layer"]&&(He.sourceLayer=He.layer["source-layer"]),He.state=et});return he}(this._layers,qe,this.sourceCaches,w,B,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(se)}querySourceFeatures(w,B){B&&B.filter&&this._validate(a.u.filter,"querySourceFeatures.filter",B.filter,null,B);let Q=this.sourceCaches[w];return Q?function(ee,se){let qe=ee.getRenderableIds().map(yt=>ee.getTileByID(yt)),je=[],it={};for(let yt=0;ythr.getTileByID(Sr)).sort((Sr,he)=>he.tileID.overscaledZ-Sr.tileID.overscaledZ||(Sr.tileID.isLessThan(he.tileID)?-1:1))}let Nt=this.crossTileSymbolIndex.addLayer(Ot,it[Ot.source],w.center.lng);qe=qe||Nt}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((se=se||this._layerOrderChanged||Q===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(u.now(),w.zoom))&&(this.pauseablePlacement=new ka(w,this.map.terrain,this._order,se,B,Q,ee,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,it),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(u.now()),je=!0),qe&&this.pauseablePlacement.placement.setStale()),je||qe)for(let yt of this._order){let Ot=this._layers[yt];Ot.type==="symbol"&&this.placement.updateLayerOpacities(Ot,it[Ot.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(u.now())}_releaseSymbolFadeTiles(){for(let w in this.sourceCaches)this.sourceCaches[w].releaseSymbolFadeTiles()}getImages(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.imageManager.getImages(B.icons);this._updateTilesForChangedImages();let ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,B.icons),Q})}getGlyphs(w,B){return a._(this,void 0,void 0,function*(){let Q=yield this.glyphManager.getGlyphs(B.stacks),ee=this.sourceCaches[B.source];return ee&&ee.setDependencies(B.tileID.key,B.type,[""]),Q})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(w,B={}){this._checkLoaded(),w&&this._validate(a.u.glyphs,"glyphs",w,null,B)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=w,this.glyphManager.entries={},this.glyphManager.setURL(w))}addSprite(w,B,Q={},ee){this._checkLoaded();let se=[{id:w,url:B}],qe=[...C(this.stylesheet.sprite),...se];this._validate(a.u.sprite,"sprite",qe,null,Q)||(this.stylesheet.sprite=qe,this._loadSprite(se,!0,ee))}removeSprite(w){this._checkLoaded();let B=C(this.stylesheet.sprite);if(B.find(Q=>Q.id===w)){if(this._spritesImagesIds[w])for(let Q of this._spritesImagesIds[w])this.imageManager.removeImage(Q),this._changedImages[Q]=!0;B.splice(B.findIndex(Q=>Q.id===w),1),this.stylesheet.sprite=B.length>0?B:void 0,delete this._spritesImagesIds[w],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new a.k("data",{dataType:"style"}))}else this.fire(new a.j(new Error(`Sprite "${w}" doesn't exists on this map.`)))}getSprite(){return C(this.stylesheet.sprite)}setSprite(w,B={},Q){this._checkLoaded(),w&&this._validate(a.u.sprite,"sprite",w,null,B)||(this.stylesheet.sprite=w,w?this._loadSprite(w,!0,Q):(this._unloadSprite(),Q&&Q(null)))}}var oo=a.Y([{name:"a_pos",type:"Int16",components:2}]);let xn={prelude:_t(`#ifdef GL_ES +precision mediump float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +`,`#ifdef GL_ES +precision highp float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0 +);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;} +#ifdef TERRAIN3D +uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth; +#endif +const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) { +#ifdef TERRAIN3D +highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0)); +#else +return 1.0; +#endif +}float calculate_visibility(vec4 pos) { +#ifdef TERRAIN3D +vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0; +#else +return 1.0; +#endif +}float ele(vec2 pos) { +#ifdef TERRAIN3D +vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a; +#else +return 0.0; +#endif +}float get_elevation(vec2 pos) { +#ifdef TERRAIN3D +vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration; +#else +return 0.0; +#endif +}`),background:_t(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:_t(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:_t(`varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main(void) { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:_t("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:_t(`uniform highp float u_intensity;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#define GAUSS_COEF 0.3989422804014327 +void main() { +#pragma mapbox: initialize highp float weight +float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#pragma mapbox: define mediump float radius +const highp float ZERO=1.0/255.0/16.0; +#define GAUSS_COEF 0.3989422804014327 +void main(void) { +#pragma mapbox: initialize highp float weight +#pragma mapbox: initialize mediump float radius +vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,get_elevation(floor(a_pos*0.5)),1);gl_Position=u_matrix*pos;}`),heatmapTexture:_t(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(0.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:_t("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:_t("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:_t("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:_t(`#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_FragColor=color*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:_t(`varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:_t(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:_t(`#ifdef GL_ES +precision highp float; +#endif +uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:_t(`varying vec4 v_color;void main() {gl_FragColor=v_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec4 v_color; +#pragma mapbox: define highp float base +#pragma mapbox: define highp float height +#pragma mapbox: define highp vec4 color +void main() { +#pragma mapbox: initialize highp float base +#pragma mapbox: initialize highp float height +#pragma mapbox: initialize highp vec4 color +vec3 normal=a_normal_ed.xyz; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:_t(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:_t(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:_t(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:_t(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),lineGradient:_t(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),linePattern:_t(`#ifdef GL_ES +precision highp float; +#endif +uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:_t(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:_t(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:_t(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:_t(`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_data0;varying vec3 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:_t(`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec4 v_data0;varying vec4 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:_t("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:_t("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:_t("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:_t("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function _t(le,w){let B=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,Q=w.match(/attribute ([\w]+) ([\w]+)/g),ee=le.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),se=w.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),qe=se?se.concat(ee):ee,je={};return{fragmentSource:le=le.replace(B,(it,yt,Ot,Nt,hr)=>(je[hr]=!0,yt==="define"?` +#ifndef HAS_UNIFORM_u_${hr} +varying ${Ot} ${Nt} ${hr}; +#else +uniform ${Ot} ${Nt} u_${hr}; +#endif +`:` +#ifdef HAS_UNIFORM_u_${hr} + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`)),vertexSource:w=w.replace(B,(it,yt,Ot,Nt,hr)=>{let Sr=Nt==="float"?"vec2":"vec4",he=hr.match(/color/)?"color":Sr;return je[hr]?yt==="define"?` +#ifndef HAS_UNIFORM_u_${hr} +uniform lowp float u_${hr}_t; +attribute ${Ot} ${Sr} a_${hr}; +varying ${Ot} ${Nt} ${hr}; +#else +uniform ${Ot} ${Nt} u_${hr}; +#endif +`:he==="vec4"?` +#ifndef HAS_UNIFORM_u_${hr} + ${hr} = a_${hr}; +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${hr} + ${hr} = unpack_mix_${he}(a_${hr}, u_${hr}_t); +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`:yt==="define"?` +#ifndef HAS_UNIFORM_u_${hr} +uniform lowp float u_${hr}_t; +attribute ${Ot} ${Sr} a_${hr}; +#else +uniform ${Ot} ${Nt} u_${hr}; +#endif +`:he==="vec4"?` +#ifndef HAS_UNIFORM_u_${hr} + ${Ot} ${Nt} ${hr} = a_${hr}; +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${hr} + ${Ot} ${Nt} ${hr} = unpack_mix_${he}(a_${hr}, u_${hr}_t); +#else + ${Ot} ${Nt} ${hr} = u_${hr}; +#endif +`}),staticAttributes:Q,staticUniforms:qe}}class br{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(w,B,Q,ee,se,qe,je,it,yt){this.context=w;let Ot=this.boundPaintVertexBuffers.length!==ee.length;for(let Nt=0;!Ot&&Nt({u_matrix:le,u_texture:0,u_ele_delta:w,u_fog_matrix:B,u_fog_color:Q?Q.properties.get("fog-color"):a.aM.white,u_fog_ground_blend:Q?Q.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:Q?Q.calculateFogBlendOpacity(ee):0,u_horizon_color:Q?Q.properties.get("horizon-color"):a.aM.white,u_horizon_fog_blend:Q?Q.properties.get("horizon-fog-blend"):1});function ti(le){let w=[];for(let B=0;B({u_depth:new a.aH(Dt,Ut.u_depth),u_terrain:new a.aH(Dt,Ut.u_terrain),u_terrain_dim:new a.aI(Dt,Ut.u_terrain_dim),u_terrain_matrix:new a.aJ(Dt,Ut.u_terrain_matrix),u_terrain_unpack:new a.aK(Dt,Ut.u_terrain_unpack),u_terrain_exaggeration:new a.aI(Dt,Ut.u_terrain_exaggeration)}))(w,Mt),this.binderUniforms=Q?Q.getUniforms(w,Mt):[]}draw(w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he,be,Pe,Oe,Je){let He=w.gl;if(this.failedToCreate)return;if(w.program.set(this.program),w.setDepthMode(Q),w.setStencilMode(ee),w.setColorMode(se),w.setCullFace(qe),it){w.activeTexture.set(He.TEXTURE2),He.bindTexture(He.TEXTURE_2D,it.depthTexture),w.activeTexture.set(He.TEXTURE3),He.bindTexture(He.TEXTURE_2D,it.texture);for(let Mt in this.terrainUniforms)this.terrainUniforms[Mt].set(it[Mt])}for(let Mt in this.fixedUniforms)this.fixedUniforms[Mt].set(je[Mt]);be&&be.setUniforms(w,this.binderUniforms,Sr,{zoom:he});let et=0;switch(B){case He.LINES:et=2;break;case He.TRIANGLES:et=3;break;case He.LINE_STRIP:et=1}for(let Mt of hr.get()){let Dt=Mt.vaos||(Mt.vaos={});(Dt[yt]||(Dt[yt]=new br)).bind(w,this,Ot,be?be.getPaintVertexBuffers():[],Nt,Mt.vertexOffset,Pe,Oe,Je),He.drawElements(B,Mt.primitiveLength*et,He.UNSIGNED_SHORT,Mt.primitiveOffset*et*2)}}}function Yi(le,w,B){let Q=1/nn(B,1,w.transform.tileZoom),ee=Math.pow(2,B.tileID.overscaledZ),se=B.tileSize*Math.pow(2,w.transform.tileZoom)/ee,qe=se*(B.tileID.canonical.x+B.tileID.wrap*ee),je=se*B.tileID.canonical.y;return{u_image:0,u_texsize:B.imageAtlasTexture.size,u_scale:[Q,le.fromScale,le.toScale],u_fade:le.t,u_pixel_coord_upper:[qe>>16,je>>16],u_pixel_coord_lower:[65535&qe,65535&je]}}let an=(le,w,B,Q)=>{let ee=w.style.light,se=ee.properties.get("position"),qe=[se.x,se.y,se.z],je=function(){var yt=new a.A(9);return a.A!=Float32Array&&(yt[1]=0,yt[2]=0,yt[3]=0,yt[5]=0,yt[6]=0,yt[7]=0),yt[0]=1,yt[4]=1,yt[8]=1,yt}();ee.properties.get("anchor")==="viewport"&&function(yt,Ot){var Nt=Math.sin(Ot),hr=Math.cos(Ot);yt[0]=hr,yt[1]=Nt,yt[2]=0,yt[3]=-Nt,yt[4]=hr,yt[5]=0,yt[6]=0,yt[7]=0,yt[8]=1}(je,-w.transform.angle),function(yt,Ot,Nt){var hr=Ot[0],Sr=Ot[1],he=Ot[2];yt[0]=hr*Nt[0]+Sr*Nt[3]+he*Nt[6],yt[1]=hr*Nt[1]+Sr*Nt[4]+he*Nt[7],yt[2]=hr*Nt[2]+Sr*Nt[5]+he*Nt[8]}(qe,qe,je);let it=ee.properties.get("color");return{u_matrix:le,u_lightpos:qe,u_lightintensity:ee.properties.get("intensity"),u_lightcolor:[it.r,it.g,it.b],u_vertical_gradient:+B,u_opacity:Q}},hi=(le,w,B,Q,ee,se,qe)=>a.e(an(le,w,B,Q),Yi(se,w,qe),{u_height_factor:-Math.pow(2,ee.overscaledZ)/qe.tileSize/8}),Ji=le=>({u_matrix:le}),ua=(le,w,B,Q)=>a.e(Ji(le),Yi(B,w,Q)),Fn=(le,w)=>({u_matrix:le,u_world:w}),Sa=(le,w,B,Q,ee)=>a.e(ua(le,w,B,Q),{u_world:ee}),go=(le,w,B,Q)=>{let ee=le.transform,se,qe;if(Q.paint.get("circle-pitch-alignment")==="map"){let je=nn(B,1,ee.zoom);se=!0,qe=[je,je]}else se=!1,qe=ee.pixelsToGLUnits;return{u_camera_to_center_distance:ee.cameraToCenterDistance,u_scale_with_map:+(Q.paint.get("circle-pitch-scale")==="map"),u_matrix:le.translatePosMatrix(w.posMatrix,B,Q.paint.get("circle-translate"),Q.paint.get("circle-translate-anchor")),u_pitch_with_map:+se,u_device_pixel_ratio:le.pixelRatio,u_extrude_scale:qe}},Oo=(le,w,B)=>({u_matrix:le,u_inv_matrix:w,u_camera_to_center_distance:B.cameraToCenterDistance,u_viewport_size:[B.width,B.height]}),ho=(le,w,B=1)=>({u_matrix:le,u_color:w,u_overlay:0,u_overlay_scale:B}),Mo=le=>({u_matrix:le}),xo=(le,w,B,Q)=>({u_matrix:le,u_extrude_scale:nn(w,1,B),u_intensity:Q}),zs=(le,w,B,Q)=>{let ee=a.H();a.aP(ee,0,le.width,le.height,0,0,1);let se=le.context.gl;return{u_matrix:ee,u_world:[se.drawingBufferWidth,se.drawingBufferHeight],u_image:B,u_color_ramp:Q,u_opacity:w.paint.get("heatmap-opacity")}};function ks(le,w){let B=Math.pow(2,w.canonical.z),Q=w.canonical.y;return[new a.Z(0,Q/B).toLngLat().lat,new a.Z(0,(Q+1)/B).toLngLat().lat]}let Zs=(le,w,B,Q)=>{let ee=le.transform;return{u_matrix:Cs(le,w,B,Q),u_ratio:1/nn(w,1,ee.zoom),u_device_pixel_ratio:le.pixelRatio,u_units_to_pixels:[1/ee.pixelsToGLUnits[0],1/ee.pixelsToGLUnits[1]]}},Xs=(le,w,B,Q,ee)=>a.e(Zs(le,w,B,ee),{u_image:0,u_image_height:Q}),wl=(le,w,B,Q,ee)=>{let se=le.transform,qe=cl(w,se);return{u_matrix:Cs(le,w,B,ee),u_texsize:w.imageAtlasTexture.size,u_ratio:1/nn(w,1,se.zoom),u_device_pixel_ratio:le.pixelRatio,u_image:0,u_scale:[qe,Q.fromScale,Q.toScale],u_fade:Q.t,u_units_to_pixels:[1/se.pixelsToGLUnits[0],1/se.pixelsToGLUnits[1]]}},os=(le,w,B,Q,ee,se)=>{let qe=le.lineAtlas,je=cl(w,le.transform),it=B.layout.get("line-cap")==="round",yt=qe.getDash(Q.from,it),Ot=qe.getDash(Q.to,it),Nt=yt.width*ee.fromScale,hr=Ot.width*ee.toScale;return a.e(Zs(le,w,B,se),{u_patternscale_a:[je/Nt,-yt.height/2],u_patternscale_b:[je/hr,-Ot.height/2],u_sdfgamma:qe.width/(256*Math.min(Nt,hr)*le.pixelRatio)/2,u_image:0,u_tex_y_a:yt.y,u_tex_y_b:Ot.y,u_mix:ee.t})};function cl(le,w){return 1/nn(le,1,w.tileZoom)}function Cs(le,w,B,Q){return le.translatePosMatrix(Q?Q.posMatrix:w.tileID.posMatrix,w,B.paint.get("line-translate"),B.paint.get("line-translate-anchor"))}let ml=(le,w,B,Q,ee)=>{return{u_matrix:le,u_tl_parent:w,u_scale_parent:B,u_buffer_scale:1,u_fade_t:Q.mix,u_opacity:Q.opacity*ee.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:ee.paint.get("raster-brightness-min"),u_brightness_high:ee.paint.get("raster-brightness-max"),u_saturation_factor:(qe=ee.paint.get("raster-saturation"),qe>0?1-1/(1.001-qe):-qe),u_contrast_factor:(se=ee.paint.get("raster-contrast"),se>0?1/(1-se):1+se),u_spin_weights:Ys(ee.paint.get("raster-hue-rotate"))};var se,qe};function Ys(le){le*=Math.PI/180;let w=Math.sin(le),B=Math.cos(le);return[(2*B+1)/3,(-Math.sqrt(3)*w-B+1)/3,(Math.sqrt(3)*w-B+1)/3]}let Hs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>{let he=qe.transform;return{u_is_size_zoom_constant:+(le==="constant"||le==="source"),u_is_size_feature_constant:+(le==="constant"||le==="camera"),u_size_t:w?w.uSizeT:0,u_size:w?w.uSize:0,u_camera_to_center_distance:he.cameraToCenterDistance,u_pitch:he.pitch/360*2*Math.PI,u_rotate_symbol:+B,u_aspect_ratio:he.width/he.height,u_fade_change:qe.options.fadeDuration?qe.symbolFadeChange:1,u_matrix:je,u_label_plane_matrix:it,u_coord_matrix:yt,u_is_text:+Nt,u_pitch_with_map:+Q,u_is_along_line:ee,u_is_variable_anchor:se,u_texsize:hr,u_texture:0,u_translation:Ot,u_pitched_scale:Sr}},Eo=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr,he)=>{let be=qe.transform;return a.e(Hs(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,he),{u_gamma_scale:Q?Math.cos(be._pitch)*be.cameraToCenterDistance:1,u_device_pixel_ratio:qe.pixelRatio,u_is_halo:+Sr})},fs=(le,w,B,Q,ee,se,qe,je,it,yt,Ot,Nt,hr,Sr)=>a.e(Eo(le,w,B,Q,ee,se,qe,je,it,yt,Ot,!0,Nt,!0,Sr),{u_texsize_icon:hr,u_texture_icon:1}),Ql=(le,w,B)=>({u_matrix:le,u_opacity:w,u_color:B}),Hu=(le,w,B,Q,ee,se)=>a.e(function(qe,je,it,yt){let Ot=it.imageManager.getPattern(qe.from.toString()),Nt=it.imageManager.getPattern(qe.to.toString()),{width:hr,height:Sr}=it.imageManager.getPixelSize(),he=Math.pow(2,yt.tileID.overscaledZ),be=yt.tileSize*Math.pow(2,it.transform.tileZoom)/he,Pe=be*(yt.tileID.canonical.x+yt.tileID.wrap*he),Oe=be*yt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:Ot.tl,u_pattern_br_a:Ot.br,u_pattern_tl_b:Nt.tl,u_pattern_br_b:Nt.br,u_texsize:[hr,Sr],u_mix:je.t,u_pattern_size_a:Ot.displaySize,u_pattern_size_b:Nt.displaySize,u_scale_a:je.fromScale,u_scale_b:je.toScale,u_tile_units_to_pixels:1/nn(yt,1,it.transform.tileZoom),u_pixel_coord_upper:[Pe>>16,Oe>>16],u_pixel_coord_lower:[65535&Pe,65535&Oe]}}(Q,se,B,ee),{u_matrix:le,u_opacity:w}),fc={fillExtrusion:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_opacity:new a.aI(le,w.u_opacity)}),fillExtrusionPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_lightpos:new a.aN(le,w.u_lightpos),u_lightintensity:new a.aI(le,w.u_lightintensity),u_lightcolor:new a.aN(le,w.u_lightcolor),u_vertical_gradient:new a.aI(le,w.u_vertical_gradient),u_height_factor:new a.aI(le,w.u_height_factor),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade),u_opacity:new a.aI(le,w.u_opacity)}),fill:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),fillPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),fillOutline:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world)}),fillOutlinePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_texsize:new a.aO(le,w.u_texsize),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),circle:(le,w)=>({u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_scale_with_map:new a.aH(le,w.u_scale_with_map),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_extrude_scale:new a.aO(le,w.u_extrude_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_matrix:new a.aJ(le,w.u_matrix)}),collisionBox:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_pixel_extrude_scale:new a.aO(le,w.u_pixel_extrude_scale)}),collisionCircle:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_inv_matrix:new a.aJ(le,w.u_inv_matrix),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_viewport_size:new a.aO(le,w.u_viewport_size)}),debug:(le,w)=>({u_color:new a.aL(le,w.u_color),u_matrix:new a.aJ(le,w.u_matrix),u_overlay:new a.aH(le,w.u_overlay),u_overlay_scale:new a.aI(le,w.u_overlay_scale)}),clippingMask:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix)}),heatmap:(le,w)=>({u_extrude_scale:new a.aI(le,w.u_extrude_scale),u_intensity:new a.aI(le,w.u_intensity),u_matrix:new a.aJ(le,w.u_matrix)}),heatmapTexture:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_world:new a.aO(le,w.u_world),u_image:new a.aH(le,w.u_image),u_color_ramp:new a.aH(le,w.u_color_ramp),u_opacity:new a.aI(le,w.u_opacity)}),hillshade:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_latrange:new a.aO(le,w.u_latrange),u_light:new a.aO(le,w.u_light),u_shadow:new a.aL(le,w.u_shadow),u_highlight:new a.aL(le,w.u_highlight),u_accent:new a.aL(le,w.u_accent)}),hillshadePrepare:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_image:new a.aH(le,w.u_image),u_dimension:new a.aO(le,w.u_dimension),u_zoom:new a.aI(le,w.u_zoom),u_unpack:new a.aK(le,w.u_unpack)}),line:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels)}),lineGradient:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_image:new a.aH(le,w.u_image),u_image_height:new a.aI(le,w.u_image_height)}),linePattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texsize:new a.aO(le,w.u_texsize),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_image:new a.aH(le,w.u_image),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_scale:new a.aN(le,w.u_scale),u_fade:new a.aI(le,w.u_fade)}),lineSDF:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ratio:new a.aI(le,w.u_ratio),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_units_to_pixels:new a.aO(le,w.u_units_to_pixels),u_patternscale_a:new a.aO(le,w.u_patternscale_a),u_patternscale_b:new a.aO(le,w.u_patternscale_b),u_sdfgamma:new a.aI(le,w.u_sdfgamma),u_image:new a.aH(le,w.u_image),u_tex_y_a:new a.aI(le,w.u_tex_y_a),u_tex_y_b:new a.aI(le,w.u_tex_y_b),u_mix:new a.aI(le,w.u_mix)}),raster:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_tl_parent:new a.aO(le,w.u_tl_parent),u_scale_parent:new a.aI(le,w.u_scale_parent),u_buffer_scale:new a.aI(le,w.u_buffer_scale),u_fade_t:new a.aI(le,w.u_fade_t),u_opacity:new a.aI(le,w.u_opacity),u_image0:new a.aH(le,w.u_image0),u_image1:new a.aH(le,w.u_image1),u_brightness_low:new a.aI(le,w.u_brightness_low),u_brightness_high:new a.aI(le,w.u_brightness_high),u_saturation_factor:new a.aI(le,w.u_saturation_factor),u_contrast_factor:new a.aI(le,w.u_contrast_factor),u_spin_weights:new a.aN(le,w.u_spin_weights)}),symbolIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolSDF:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texture:new a.aH(le,w.u_texture),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),symbolTextAndIcon:(le,w)=>({u_is_size_zoom_constant:new a.aH(le,w.u_is_size_zoom_constant),u_is_size_feature_constant:new a.aH(le,w.u_is_size_feature_constant),u_size_t:new a.aI(le,w.u_size_t),u_size:new a.aI(le,w.u_size),u_camera_to_center_distance:new a.aI(le,w.u_camera_to_center_distance),u_pitch:new a.aI(le,w.u_pitch),u_rotate_symbol:new a.aH(le,w.u_rotate_symbol),u_aspect_ratio:new a.aI(le,w.u_aspect_ratio),u_fade_change:new a.aI(le,w.u_fade_change),u_matrix:new a.aJ(le,w.u_matrix),u_label_plane_matrix:new a.aJ(le,w.u_label_plane_matrix),u_coord_matrix:new a.aJ(le,w.u_coord_matrix),u_is_text:new a.aH(le,w.u_is_text),u_pitch_with_map:new a.aH(le,w.u_pitch_with_map),u_is_along_line:new a.aH(le,w.u_is_along_line),u_is_variable_anchor:new a.aH(le,w.u_is_variable_anchor),u_texsize:new a.aO(le,w.u_texsize),u_texsize_icon:new a.aO(le,w.u_texsize_icon),u_texture:new a.aH(le,w.u_texture),u_texture_icon:new a.aH(le,w.u_texture_icon),u_gamma_scale:new a.aI(le,w.u_gamma_scale),u_device_pixel_ratio:new a.aI(le,w.u_device_pixel_ratio),u_is_halo:new a.aH(le,w.u_is_halo),u_translation:new a.aO(le,w.u_translation),u_pitched_scale:new a.aI(le,w.u_pitched_scale)}),background:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_color:new a.aL(le,w.u_color)}),backgroundPattern:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_opacity:new a.aI(le,w.u_opacity),u_image:new a.aH(le,w.u_image),u_pattern_tl_a:new a.aO(le,w.u_pattern_tl_a),u_pattern_br_a:new a.aO(le,w.u_pattern_br_a),u_pattern_tl_b:new a.aO(le,w.u_pattern_tl_b),u_pattern_br_b:new a.aO(le,w.u_pattern_br_b),u_texsize:new a.aO(le,w.u_texsize),u_mix:new a.aI(le,w.u_mix),u_pattern_size_a:new a.aO(le,w.u_pattern_size_a),u_pattern_size_b:new a.aO(le,w.u_pattern_size_b),u_scale_a:new a.aI(le,w.u_scale_a),u_scale_b:new a.aI(le,w.u_scale_b),u_pixel_coord_upper:new a.aO(le,w.u_pixel_coord_upper),u_pixel_coord_lower:new a.aO(le,w.u_pixel_coord_lower),u_tile_units_to_pixels:new a.aI(le,w.u_tile_units_to_pixels)}),terrain:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_ele_delta:new a.aI(le,w.u_ele_delta),u_fog_matrix:new a.aJ(le,w.u_fog_matrix),u_fog_color:new a.aL(le,w.u_fog_color),u_fog_ground_blend:new a.aI(le,w.u_fog_ground_blend),u_fog_ground_blend_opacity:new a.aI(le,w.u_fog_ground_blend_opacity),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon_fog_blend:new a.aI(le,w.u_horizon_fog_blend)}),terrainDepth:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_ele_delta:new a.aI(le,w.u_ele_delta)}),terrainCoords:(le,w)=>({u_matrix:new a.aJ(le,w.u_matrix),u_texture:new a.aH(le,w.u_texture),u_terrain_coords_id:new a.aI(le,w.u_terrain_coords_id),u_ele_delta:new a.aI(le,w.u_ele_delta)}),sky:(le,w)=>({u_sky_color:new a.aL(le,w.u_sky_color),u_horizon_color:new a.aL(le,w.u_horizon_color),u_horizon:new a.aI(le,w.u_horizon),u_sky_horizon_blend:new a.aI(le,w.u_sky_horizon_blend)})};class ms{constructor(w,B,Q){this.context=w;let ee=w.gl;this.buffer=ee.createBuffer(),this.dynamicDraw=!!Q,this.context.unbindVAO(),w.bindElementBuffer.set(this.buffer),ee.bufferData(ee.ELEMENT_ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?ee.DYNAMIC_DRAW:ee.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(w){let B=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),B.bufferSubData(B.ELEMENT_ARRAY_BUFFER,0,w.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let on={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class fa{constructor(w,B,Q,ee){this.length=B.length,this.attributes=Q,this.itemSize=B.bytesPerElement,this.dynamicDraw=ee,this.context=w;let se=w.gl;this.buffer=se.createBuffer(),w.bindVertexBuffer.set(this.buffer),se.bufferData(se.ARRAY_BUFFER,B.arrayBuffer,this.dynamicDraw?se.DYNAMIC_DRAW:se.STATIC_DRAW),this.dynamicDraw||delete B.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(w){if(w.length!==this.length)throw new Error(`Length of new data is ${w.length}, which doesn't match current length of ${this.length}`);let B=this.context.gl;this.bind(),B.bufferSubData(B.ARRAY_BUFFER,0,w.arrayBuffer)}enableAttributes(w,B){for(let Q=0;Q0){let Dt=a.H();a.aQ(Dt,He.placementInvProjMatrix,le.transform.glCoordMatrix),a.aQ(Dt,Dt,He.placementViewportMatrix),it.push({circleArray:Mt,circleOffset:Ot,transform:Je.posMatrix,invTransform:Dt,coord:Je}),yt+=Mt.length/4,Ot=yt}et&&je.draw(se,qe.LINES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,{u_matrix:Je.posMatrix,u_pixel_extrude_scale:[1/(Nt=le.transform).width,1/Nt.height]},le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je),B.id,et.layoutVertexBuffer,et.indexBuffer,et.segments,null,le.transform.zoom,null,null,et.collisionVertexBuffer)}var Nt;if(!ee||!it.length)return;let hr=le.useProgram("collisionCircle"),Sr=new a.aR;Sr.resize(4*yt),Sr._trim();let he=0;for(let Oe of it)for(let Je=0;Je=0&&(Oe[He.associatedIconIndex]={shiftedAnchor:Mn,angle:pa})}else ai(He.numGlyphs,be)}if(yt){Pe.clear();let Je=le.icon.placedSymbolArray;for(let He=0;Hele.style.map.terrain.getElevation(zr,tt,zt):null,wt=B.layout.get("text-rotation-alignment")==="map";Ve(di,zr.posMatrix,le,ee,Hl,cu,Oe,yt,wt,be,zr.toUnwrapped(),he.width,he.height,el,We)}let zl=zr.posMatrix,Fl=ee&&tr||zc,Z=Je||Fl?uu:Hl,oe=Zu,we=Qi&&B.paint.get(ee?"text-halo-width":"icon-halo-width").constantOr(1)!==0,Be;Be=Qi?di.iconsInText?fs(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,Wa,As,Rr):Eo(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,ee,Wa,!0,Rr):Hs(Mn.kind,Ga,He,Oe,Je,Fl,le,zl,Z,oe,el,ee,Wa,Rr);let Ue={program:ea,buffers:Li,uniformValues:Be,atlasTexture:co,atlasTextureIcon:yo,atlasInterpolation:Ro,atlasInterpolationIcon:Ds,isSDF:Qi,hasHalo:we};if(Mt&&di.canOverlap){Dt=!0;let We=Li.segments.get();for(let wt of We)mr.push({segments:new a.a0([wt]),sortKey:wt.sortKey,state:Ue,terrainData:To})}else mr.push({segments:Li.segments,sortKey:0,state:Ue,terrainData:To})}Dt&&mr.sort((zr,Xr)=>zr.sortKey-Xr.sortKey);for(let zr of mr){let Xr=zr.state;if(hr.activeTexture.set(Sr.TEXTURE0),Xr.atlasTexture.bind(Xr.atlasInterpolation,Sr.CLAMP_TO_EDGE),Xr.atlasTextureIcon&&(hr.activeTexture.set(Sr.TEXTURE1),Xr.atlasTextureIcon&&Xr.atlasTextureIcon.bind(Xr.atlasInterpolationIcon,Sr.CLAMP_TO_EDGE)),Xr.isSDF){let di=Xr.uniformValues;Xr.hasHalo&&(di.u_is_halo=1,Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,di,zr.terrainData)),di.u_is_halo=0}Eh(Xr.buffers,zr.segments,B,le,Xr.program,Ut,Ot,Nt,Xr.uniformValues,zr.terrainData)}}function Eh(le,w,B,Q,ee,se,qe,je,it,yt){let Ot=Q.context;ee.draw(Ot,Ot.gl.TRIANGLES,se,qe,je,Ja.disabled,it,yt,B.id,le.layoutVertexBuffer,le.indexBuffer,w,B.paint,Q.transform.zoom,le.programConfigurations.get(B.id),le.dynamicLayoutVertexBuffer,le.opacityVertexBuffer)}function nh(le,w,B,Q){let ee=le.context,se=ee.gl,qe=$o.disabled,je=new Ps([se.ONE,se.ONE],a.aM.transparent,[!0,!0,!0,!0]),it=w.getBucket(B);if(!it)return;let yt=Q.key,Ot=B.heatmapFbos.get(yt);Ot||(Ot=kh(ee,w.tileSize,w.tileSize),B.heatmapFbos.set(yt,Ot)),ee.bindFramebuffer.set(Ot.framebuffer),ee.viewport.set([0,0,w.tileSize,w.tileSize]),ee.clear({color:a.aM.transparent});let Nt=it.programConfigurations.get(B.id),hr=le.useProgram("heatmap",Nt),Sr=le.style.map.terrain.getTerrainData(Q);hr.draw(ee,se.TRIANGLES,wo.disabled,qe,je,Ja.disabled,xo(Q.posMatrix,w,le.transform.zoom,B.paint.get("heatmap-intensity")),Sr,B.id,it.layoutVertexBuffer,it.indexBuffer,it.segments,B.paint,le.transform.zoom,Nt)}function hf(le,w,B){let Q=le.context,ee=Q.gl;Q.setColorMode(le.colorModeForRenderPass());let se=Kh(Q,w),qe=B.key,je=w.heatmapFbos.get(qe);je&&(Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,je.colorAttachment.get()),Q.activeTexture.set(ee.TEXTURE1),se.bind(ee.LINEAR,ee.CLAMP_TO_EDGE),le.useProgram("heatmapTexture").draw(Q,ee.TRIANGLES,wo.disabled,$o.disabled,le.colorModeForRenderPass(),Ja.disabled,zs(le,w,0,1),null,w.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments,w.paint,le.transform.zoom),je.destroy(),w.heatmapFbos.delete(qe))}function kh(le,w,B){var Q,ee;let se=le.gl,qe=se.createTexture();se.bindTexture(se.TEXTURE_2D,qe),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_S,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_WRAP_T,se.CLAMP_TO_EDGE),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MIN_FILTER,se.LINEAR),se.texParameteri(se.TEXTURE_2D,se.TEXTURE_MAG_FILTER,se.LINEAR);let je=(Q=le.HALF_FLOAT)!==null&&Q!==void 0?Q:se.UNSIGNED_BYTE,it=(ee=le.RGBA16F)!==null&&ee!==void 0?ee:se.RGBA;se.texImage2D(se.TEXTURE_2D,0,it,w,B,0,se.RGBA,je,null);let yt=le.createFramebuffer(w,B,!1,!1);return yt.colorAttachment.set(qe),yt}function Kh(le,w){return w.colorRampTexture||(w.colorRampTexture=new g(le,w.colorRamp,le.gl.RGBA)),w.colorRampTexture}function rc(le,w,B,Q,ee){if(!B||!Q||!Q.imageAtlas)return;let se=Q.imageAtlas.patternPositions,qe=se[B.to.toString()],je=se[B.from.toString()];if(!qe&&je&&(qe=je),!je&&qe&&(je=qe),!qe||!je){let it=ee.getPaintProperty(w);qe=se[it],je=se[it]}qe&&je&&le.setConstantPatternPositions(qe,je)}function ah(le,w,B,Q,ee,se,qe){let je=le.context.gl,it="fill-pattern",yt=B.paint.get(it),Ot=yt&&yt.constantOr(1),Nt=B.getCrossfadeParameters(),hr,Sr,he,be,Pe;qe?(Sr=Ot&&!B.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",hr=je.LINES):(Sr=Ot?"fillPattern":"fill",hr=je.TRIANGLES);let Oe=yt.constantOr(null);for(let Je of Q){let He=w.getTile(Je);if(Ot&&!He.patternsLoaded())continue;let et=He.getBucket(B);if(!et)continue;let Mt=et.programConfigurations.get(B.id),Dt=le.useProgram(Sr,Mt),Ut=le.style.map.terrain&&le.style.map.terrain.getTerrainData(Je);Ot&&(le.context.activeTexture.set(je.TEXTURE0),He.imageAtlasTexture.bind(je.LINEAR,je.CLAMP_TO_EDGE),Mt.updatePaintBuffers(Nt)),rc(Mt,it,Oe,He,B);let tr=Ut?Je:null,mr=le.translatePosMatrix(tr?tr.posMatrix:Je.posMatrix,He,B.paint.get("fill-translate"),B.paint.get("fill-translate-anchor"));if(qe){be=et.indexBuffer2,Pe=et.segments2;let Rr=[je.drawingBufferWidth,je.drawingBufferHeight];he=Sr==="fillOutlinePattern"&&Ot?Sa(mr,le,Nt,He,Rr):Fn(mr,Rr)}else be=et.indexBuffer,Pe=et.segments,he=Ot?ua(mr,le,Nt,He):Ji(mr);Dt.draw(le.context,hr,ee,le.stencilModeForClipping(Je),se,Ja.disabled,he,Ut,B.id,et.layoutVertexBuffer,be,Pe,B.paint,le.transform.zoom,Mt)}}function Wc(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt="fill-extrusion-pattern",Ot=B.paint.get(yt),Nt=Ot.constantOr(1),hr=B.getCrossfadeParameters(),Sr=B.paint.get("fill-extrusion-opacity"),he=Ot.constantOr(null);for(let be of Q){let Pe=w.getTile(be),Oe=Pe.getBucket(B);if(!Oe)continue;let Je=le.style.map.terrain&&le.style.map.terrain.getTerrainData(be),He=Oe.programConfigurations.get(B.id),et=le.useProgram(Nt?"fillExtrusionPattern":"fillExtrusion",He);Nt&&(le.context.activeTexture.set(it.TEXTURE0),Pe.imageAtlasTexture.bind(it.LINEAR,it.CLAMP_TO_EDGE),He.updatePaintBuffers(hr)),rc(He,yt,he,Pe,B);let Mt=le.translatePosMatrix(be.posMatrix,Pe,B.paint.get("fill-extrusion-translate"),B.paint.get("fill-extrusion-translate-anchor")),Dt=B.paint.get("fill-extrusion-vertical-gradient"),Ut=Nt?hi(Mt,le,Dt,Sr,be,hr,Pe):an(Mt,le,Dt,Sr);et.draw(je,je.gl.TRIANGLES,ee,se,qe,Ja.backCCW,Ut,Je,B.id,Oe.layoutVertexBuffer,Oe.indexBuffer,Oe.segments,B.paint,le.transform.zoom,He,le.style.map.terrain&&Oe.centroidVertexBuffer)}}function df(le,w,B,Q,ee,se,qe){let je=le.context,it=je.gl,yt=B.fbo;if(!yt)return;let Ot=le.useProgram("hillshade"),Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(w);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,yt.colorAttachment.get()),Ot.draw(je,it.TRIANGLES,ee,se,qe,Ja.disabled,((hr,Sr,he,be)=>{let Pe=he.paint.get("hillshade-shadow-color"),Oe=he.paint.get("hillshade-highlight-color"),Je=he.paint.get("hillshade-accent-color"),He=he.paint.get("hillshade-illumination-direction")*(Math.PI/180);he.paint.get("hillshade-illumination-anchor")==="viewport"&&(He-=hr.transform.angle);let et=!hr.options.moving;return{u_matrix:be?be.posMatrix:hr.transform.calculatePosMatrix(Sr.tileID.toUnwrapped(),et),u_image:0,u_latrange:ks(0,Sr.tileID),u_light:[he.paint.get("hillshade-exaggeration"),He],u_shadow:Pe,u_highlight:Oe,u_accent:Je}})(le,B,Q,Nt?w:null),Nt,Q.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments)}function Cu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl,it=w.dem;if(it&&it.data){let yt=it.dim,Ot=it.stride,Nt=it.getPixels();if(qe.activeTexture.set(je.TEXTURE1),qe.pixelStoreUnpackPremultiplyAlpha.set(!1),w.demTexture=w.demTexture||le.getTileTexture(Ot),w.demTexture){let Sr=w.demTexture;Sr.update(Nt,{premultiply:!1}),Sr.bind(je.NEAREST,je.CLAMP_TO_EDGE)}else w.demTexture=new g(qe,Nt,je.RGBA,{premultiply:!1}),w.demTexture.bind(je.NEAREST,je.CLAMP_TO_EDGE);qe.activeTexture.set(je.TEXTURE0);let hr=w.fbo;if(!hr){let Sr=new g(qe,{width:yt,height:yt,data:null},je.RGBA);Sr.bind(je.LINEAR,je.CLAMP_TO_EDGE),hr=w.fbo=qe.createFramebuffer(yt,yt,!0,!1),hr.colorAttachment.set(Sr.texture)}qe.bindFramebuffer.set(hr.framebuffer),qe.viewport.set([0,0,yt,yt]),le.useProgram("hillshadePrepare").draw(qe,je.TRIANGLES,Q,ee,se,Ja.disabled,((Sr,he)=>{let be=he.stride,Pe=a.H();return a.aP(Pe,0,a.X,-a.X,0,0,1),a.J(Pe,Pe,[0,-a.X,0]),{u_matrix:Pe,u_image:1,u_dimension:[be,be],u_zoom:Sr.overscaledZ,u_unpack:he.getUnpackVector()}})(w.tileID,it),null,B.id,le.rasterBoundsBuffer,le.quadTriangleIndexBuffer,le.rasterBoundsSegments),w.needsHillshadePrepare=!1}}function Nf(le,w,B,Q,ee,se){let qe=Q.paint.get("raster-fade-duration");if(!se&&qe>0){let je=u.now(),it=(je-le.timeAdded)/qe,yt=w?(je-w.timeAdded)/qe:-1,Ot=B.getSource(),Nt=ee.coveringZoomLevel({tileSize:Ot.tileSize,roundZoom:Ot.roundZoom}),hr=!w||Math.abs(w.tileID.overscaledZ-Nt)>Math.abs(le.tileID.overscaledZ-Nt),Sr=hr&&le.refreshedUponExpiration?1:a.ac(hr?it:1-yt,0,1);return le.refreshedUponExpiration&&it>=1&&(le.refreshedUponExpiration=!1),w?{opacity:1,mix:1-Sr}:{opacity:Sr,mix:0}}return{opacity:1,mix:0}}let Zc=new a.aM(1,0,0,1),ds=new a.aM(0,1,0,1),Ch=new a.aM(0,0,1,1),Bd=new a.aM(1,0,1,1),Jh=new a.aM(0,1,1,1);function Cf(le,w,B,Q){Lu(le,0,w+B/2,le.transform.width,B,Q)}function pd(le,w,B,Q){Lu(le,w-B/2,0,B,le.transform.height,Q)}function Lu(le,w,B,Q,ee,se){let qe=le.context,je=qe.gl;je.enable(je.SCISSOR_TEST),je.scissor(w*le.pixelRatio,B*le.pixelRatio,Q*le.pixelRatio,ee*le.pixelRatio),qe.clear({color:se}),je.disable(je.SCISSOR_TEST)}function $h(le,w,B){let Q=le.context,ee=Q.gl,se=B.posMatrix,qe=le.useProgram("debug"),je=wo.disabled,it=$o.disabled,yt=le.colorModeForRenderPass(),Ot="$debug",Nt=le.style.map.terrain&&le.style.map.terrain.getTerrainData(B);Q.activeTexture.set(ee.TEXTURE0);let hr=w.getTileByID(B.key).latestRawTileData,Sr=Math.floor((hr&&hr.byteLength||0)/1024),he=w.getTile(B).tileSize,be=512/Math.min(he,512)*(B.overscaledZ/le.transform.zoom)*.5,Pe=B.canonical.toString();B.overscaledZ!==B.canonical.z&&(Pe+=` => ${B.overscaledZ}`),function(Oe,Je){Oe.initDebugOverlayCanvas();let He=Oe.debugOverlayCanvas,et=Oe.context.gl,Mt=Oe.debugOverlayCanvas.getContext("2d");Mt.clearRect(0,0,He.width,He.height),Mt.shadowColor="white",Mt.shadowBlur=2,Mt.lineWidth=1.5,Mt.strokeStyle="white",Mt.textBaseline="top",Mt.font="bold 36px Open Sans, sans-serif",Mt.fillText(Je,5,5),Mt.strokeText(Je,5,5),Oe.debugOverlayTexture.update(He),Oe.debugOverlayTexture.bind(et.LINEAR,et.CLAMP_TO_EDGE)}(le,`${Pe} ${Sr}kB`),qe.draw(Q,ee.TRIANGLES,je,it,Ps.alphaBlended,Ja.disabled,ho(se,a.aM.transparent,be),null,Ot,le.debugBuffer,le.quadTriangleIndexBuffer,le.debugSegments),qe.draw(Q,ee.LINE_STRIP,je,it,yt,Ja.disabled,ho(se,a.aM.red),Nt,Ot,le.debugBuffer,le.tileBorderIndexBuffer,le.debugSegments)}function tu(le,w,B){let Q=le.context,ee=Q.gl,se=le.colorModeForRenderPass(),qe=new wo(ee.LEQUAL,wo.ReadWrite,le.depthRangeFor3D),je=le.useProgram("terrain"),it=w.getTerrainMesh();Q.bindFramebuffer.set(null),Q.viewport.set([0,0,le.width,le.height]);for(let yt of B){let Ot=le.renderToTexture.getTexture(yt),Nt=w.getTerrainData(yt.tileID);Q.activeTexture.set(ee.TEXTURE0),ee.bindTexture(ee.TEXTURE_2D,Ot.texture);let hr=le.transform.calculatePosMatrix(yt.tileID.toUnwrapped()),Sr=w.getMeshFrameDelta(le.transform.zoom),he=le.transform.calculateFogMatrix(yt.tileID.toUnwrapped()),be=Hr(hr,Sr,he,le.style.sky,le.transform.pitch);je.draw(Q,ee.TRIANGLES,qe,$o.disabled,se,Ja.backCCW,be,Nt,"terrain",it.vertexBuffer,it.indexBuffer,it.segments)}}class Pu{constructor(w,B,Q){this.vertexBuffer=w,this.indexBuffer=B,this.segments=Q}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class Lc{constructor(w,B){this.context=new ov(w),this.transform=B,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:a.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=dt.maxUnderzooming+dt.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new jo}resize(w,B,Q){if(this.width=Math.floor(w*Q),this.height=Math.floor(B*Q),this.pixelRatio=Q,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let ee of this.style._order)this.style._layers[ee].resize()}setup(){let w=this.context,B=new a.aX;B.emplaceBack(0,0),B.emplaceBack(a.X,0),B.emplaceBack(0,a.X),B.emplaceBack(a.X,a.X),this.tileExtentBuffer=w.createVertexBuffer(B,oo.members),this.tileExtentSegments=a.a0.simpleSegment(0,0,4,2);let Q=new a.aX;Q.emplaceBack(0,0),Q.emplaceBack(a.X,0),Q.emplaceBack(0,a.X),Q.emplaceBack(a.X,a.X),this.debugBuffer=w.createVertexBuffer(Q,oo.members),this.debugSegments=a.a0.simpleSegment(0,0,4,5);let ee=new a.$;ee.emplaceBack(0,0,0,0),ee.emplaceBack(a.X,0,a.X,0),ee.emplaceBack(0,a.X,0,a.X),ee.emplaceBack(a.X,a.X,a.X,a.X),this.rasterBoundsBuffer=w.createVertexBuffer(ee,ot.members),this.rasterBoundsSegments=a.a0.simpleSegment(0,0,4,2);let se=new a.aX;se.emplaceBack(0,0),se.emplaceBack(1,0),se.emplaceBack(0,1),se.emplaceBack(1,1),this.viewportBuffer=w.createVertexBuffer(se,oo.members),this.viewportSegments=a.a0.simpleSegment(0,0,4,2);let qe=new a.aZ;qe.emplaceBack(0),qe.emplaceBack(1),qe.emplaceBack(3),qe.emplaceBack(2),qe.emplaceBack(0),this.tileBorderIndexBuffer=w.createIndexBuffer(qe);let je=new a.aY;je.emplaceBack(0,1,2),je.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=w.createIndexBuffer(je);let it=this.context.gl;this.stencilClearMode=new $o({func:it.ALWAYS,mask:0},0,255,it.ZERO,it.ZERO,it.ZERO)}clearStencil(){let w=this.context,B=w.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let Q=a.H();a.aP(Q,0,this.width,this.height,0,0,1),a.K(Q,Q,[B.drawingBufferWidth,B.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(w,B.TRIANGLES,wo.disabled,this.stencilClearMode,Ps.disabled,Ja.disabled,Mo(Q),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(w,B){if(this.currentStencilSource===w.source||!w.isTileClipped()||!B||!B.length)return;this.currentStencilSource=w.source;let Q=this.context,ee=Q.gl;this.nextStencilID+B.length>256&&this.clearStencil(),Q.setColorMode(Ps.disabled),Q.setDepthMode(wo.disabled);let se=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let qe of B){let je=this._tileClippingMaskIDs[qe.key]=this.nextStencilID++,it=this.style.map.terrain&&this.style.map.terrain.getTerrainData(qe);se.draw(Q,ee.TRIANGLES,wo.disabled,new $o({func:ee.ALWAYS,mask:0},je,255,ee.KEEP,ee.KEEP,ee.REPLACE),Ps.disabled,Ja.disabled,Mo(qe.posMatrix),it,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let w=this.nextStencilID++,B=this.context.gl;return new $o({func:B.NOTEQUAL,mask:255},w,255,B.KEEP,B.KEEP,B.REPLACE)}stencilModeForClipping(w){let B=this.context.gl;return new $o({func:B.EQUAL,mask:255},this._tileClippingMaskIDs[w.key],0,B.KEEP,B.KEEP,B.REPLACE)}stencilConfigForOverlap(w){let B=this.context.gl,Q=w.sort((qe,je)=>je.overscaledZ-qe.overscaledZ),ee=Q[Q.length-1].overscaledZ,se=Q[0].overscaledZ-ee+1;if(se>1){this.currentStencilSource=void 0,this.nextStencilID+se>256&&this.clearStencil();let qe={};for(let je=0;je({u_sky_color:Oe.properties.get("sky-color"),u_horizon_color:Oe.properties.get("horizon-color"),u_horizon:(Je.height/2+Je.getHorizon())*He,u_sky_horizon_blend:Oe.properties.get("sky-horizon-blend")*Je.height/2*He}))(yt,it.style.map.transform,it.pixelRatio),Sr=new wo(Nt.LEQUAL,wo.ReadWrite,[0,1]),he=$o.disabled,be=it.colorModeForRenderPass(),Pe=it.useProgram("sky");if(!yt.mesh){let Oe=new a.aX;Oe.emplaceBack(-1,-1),Oe.emplaceBack(1,-1),Oe.emplaceBack(1,1),Oe.emplaceBack(-1,1);let Je=new a.aY;Je.emplaceBack(0,1,2),Je.emplaceBack(0,2,3),yt.mesh=new Pu(Ot.createVertexBuffer(Oe,oo.members),Ot.createIndexBuffer(Je),a.a0.simpleSegment(0,0,Oe.length,Je.length))}Pe.draw(Ot,Nt.TRIANGLES,Sr,he,be,Ja.disabled,hr,void 0,"sky",yt.mesh.vertexBuffer,yt.mesh.indexBuffer,yt.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=B.showOverdrawInspector,this.depthRangeFor3D=[0,1-(w._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=Q.length-1;this.currentLayer>=0;this.currentLayer--){let it=this.style._layers[Q[this.currentLayer]],yt=ee[it.source],Ot=se[it.source];this._renderTileClippingMasks(it,Ot),this.renderLayer(this,yt,it,Ot)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerPe.source&&!Pe.isHidden(Ot)?[yt.sourceCaches[Pe.source]]:[]),Sr=hr.filter(Pe=>Pe.getSource().type==="vector"),he=hr.filter(Pe=>Pe.getSource().type!=="vector"),be=Pe=>{(!Nt||Nt.getSource().maxzoombe(Pe)),Nt||he.forEach(Pe=>be(Pe)),Nt}(this.style,this.transform.zoom);it&&function(yt,Ot,Nt){for(let hr=0;hr0),ee&&(a.b0(B,Q),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.sourceCache.getRenderableTiles(),Sr=se.useProgram("terrainDepth");je.bindFramebuffer.set(qe.getFramebuffer("depth").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1});for(let he of hr){let be=qe.getTerrainData(he.tileID),Pe={u_matrix:se.transform.calculatePosMatrix(he.tileID.toUnwrapped()),u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};Sr.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Pe,be,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain),function(se,qe){let je=se.context,it=je.gl,yt=Ps.unblended,Ot=new wo(it.LEQUAL,wo.ReadWrite,[0,1]),Nt=qe.getTerrainMesh(),hr=qe.getCoordsTexture(),Sr=qe.sourceCache.getRenderableTiles(),he=se.useProgram("terrainCoords");je.bindFramebuffer.set(qe.getFramebuffer("coords").framebuffer),je.viewport.set([0,0,se.width/devicePixelRatio,se.height/devicePixelRatio]),je.clear({color:a.aM.transparent,depth:1}),qe.coordsIndex=[];for(let be of Sr){let Pe=qe.getTerrainData(be.tileID);je.activeTexture.set(it.TEXTURE0),it.bindTexture(it.TEXTURE_2D,hr.texture);let Oe={u_matrix:se.transform.calculatePosMatrix(be.tileID.toUnwrapped()),u_terrain_coords_id:(255-qe.coordsIndex.length)/255,u_texture:0,u_ele_delta:qe.getMeshFrameDelta(se.transform.zoom)};he.draw(je,it.TRIANGLES,Ot,$o.disabled,yt,Ja.backCCW,Oe,Pe,"terrain",Nt.vertexBuffer,Nt.indexBuffer,Nt.segments),qe.coordsIndex.push(be.tileID.key)}je.bindFramebuffer.set(null),je.viewport.set([0,0,se.width,se.height])}(this,this.style.map.terrain))}renderLayer(w,B,Q,ee){if(!Q.isHidden(this.transform.zoom)&&(Q.type==="background"||Q.type==="custom"||(ee||[]).length))switch(this.id=Q.id,Q.type){case"symbol":(function(se,qe,je,it,yt){if(se.renderPass!=="translucent")return;let Ot=$o.disabled,Nt=se.colorModeForRenderPass();(je._unevaluatedLayout.hasValue("text-variable-anchor")||je._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(hr,Sr,he,be,Pe,Oe,Je,He,et){let Mt=Sr.transform,Dt=Gi(),Ut=Pe==="map",tr=Oe==="map";for(let mr of hr){let Rr=be.getTile(mr),zr=Rr.getBucket(he);if(!zr||!zr.text||!zr.text.segments.get().length)continue;let Xr=a.ag(zr.textSizeData,Mt.zoom),di=nn(Rr,1,Sr.transform.zoom),Li=Or(mr.posMatrix,tr,Ut,Sr.transform,di),Ci=he.layout.get("icon-text-fit")!=="none"&&zr.hasIconData();if(Xr){let Qi=Math.pow(2,Mt.zoom-Rr.tileID.overscaledZ),Mn=Sr.style.map.terrain?(ea,Ga)=>Sr.style.map.terrain.getElevation(mr,ea,Ga):null,pa=Dt.translatePosition(Mt,Rr,Je,He);kf(zr,Ut,tr,et,Mt,Li,mr.posMatrix,Qi,Xr,Ci,Dt,pa,mr.toUnwrapped(),Mn)}}}(it,se,je,qe,je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),yt),je.paint.get("icon-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!1,je.paint.get("icon-translate"),je.paint.get("icon-translate-anchor"),je.layout.get("icon-rotation-alignment"),je.layout.get("icon-pitch-alignment"),je.layout.get("icon-keep-upright"),Ot,Nt),je.paint.get("text-opacity").constantOr(1)!==0&&Yh(se,qe,je,it,!0,je.paint.get("text-translate"),je.paint.get("text-translate-anchor"),je.layout.get("text-rotation-alignment"),je.layout.get("text-pitch-alignment"),je.layout.get("text-keep-upright"),Ot,Nt),qe.map.showCollisionBoxes&&(tc(se,qe,je,it,!0),tc(se,qe,je,it,!1))})(w,B,Q,ee,this.style.placement.variableOffsets);break;case"circle":(function(se,qe,je,it){if(se.renderPass!=="translucent")return;let yt=je.paint.get("circle-opacity"),Ot=je.paint.get("circle-stroke-width"),Nt=je.paint.get("circle-stroke-opacity"),hr=!je.layout.get("circle-sort-key").isConstant();if(yt.constantOr(1)===0&&(Ot.constantOr(1)===0||Nt.constantOr(1)===0))return;let Sr=se.context,he=Sr.gl,be=se.depthModeForSublayer(0,wo.ReadOnly),Pe=$o.disabled,Oe=se.colorModeForRenderPass(),Je=[];for(let He=0;HeHe.sortKey-et.sortKey);for(let He of Je){let{programConfiguration:et,program:Mt,layoutVertexBuffer:Dt,indexBuffer:Ut,uniformValues:tr,terrainData:mr}=He.state;Mt.draw(Sr,he.TRIANGLES,be,Pe,Oe,Ja.disabled,tr,mr,je.id,Dt,Ut,He.segments,je.paint,se.transform.zoom,et)}})(w,B,Q,ee);break;case"heatmap":(function(se,qe,je,it){if(je.paint.get("heatmap-opacity")===0)return;let yt=se.context;if(se.style.map.terrain){for(let Ot of it){let Nt=qe.getTile(Ot);qe.hasRenderableParent(Ot)||(se.renderPass==="offscreen"?nh(se,Nt,je,Ot):se.renderPass==="translucent"&&hf(se,je,Ot))}yt.viewport.set([0,0,se.width,se.height])}else se.renderPass==="offscreen"?function(Ot,Nt,hr,Sr){let he=Ot.context,be=he.gl,Pe=$o.disabled,Oe=new Ps([be.ONE,be.ONE],a.aM.transparent,[!0,!0,!0,!0]);(function(Je,He,et){let Mt=Je.gl;Je.activeTexture.set(Mt.TEXTURE1),Je.viewport.set([0,0,He.width/4,He.height/4]);let Dt=et.heatmapFbos.get(a.aU);Dt?(Mt.bindTexture(Mt.TEXTURE_2D,Dt.colorAttachment.get()),Je.bindFramebuffer.set(Dt.framebuffer)):(Dt=kh(Je,He.width/4,He.height/4),et.heatmapFbos.set(a.aU,Dt))})(he,Ot,hr),he.clear({color:a.aM.transparent});for(let Je=0;Je20&&Ot.texParameterf(Ot.TEXTURE_2D,yt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,yt.extTextureFilterAnisotropicMax);let zr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Je),Xr=zr?Je:null,di=Xr?Xr.posMatrix:se.transform.calculatePosMatrix(Je.toUnwrapped(),Oe),Li=ml(di,mr||[0,0],tr||1,Ut,je);Nt instanceof Rt?hr.draw(yt,Ot.TRIANGLES,He,$o.disabled,Sr,Ja.disabled,Li,zr,je.id,Nt.boundsBuffer,se.quadTriangleIndexBuffer,Nt.boundsSegments):hr.draw(yt,Ot.TRIANGLES,He,he[Je.overscaledZ],Sr,Ja.disabled,Li,zr,je.id,se.rasterBoundsBuffer,se.quadTriangleIndexBuffer,se.rasterBoundsSegments)}})(w,B,Q,ee);break;case"background":(function(se,qe,je,it){let yt=je.paint.get("background-color"),Ot=je.paint.get("background-opacity");if(Ot===0)return;let Nt=se.context,hr=Nt.gl,Sr=se.transform,he=Sr.tileSize,be=je.paint.get("background-pattern");if(se.isPatternMissing(be))return;let Pe=!be&&yt.a===1&&Ot===1&&se.opaquePassEnabledForLayer()?"opaque":"translucent";if(se.renderPass!==Pe)return;let Oe=$o.disabled,Je=se.depthModeForSublayer(0,Pe==="opaque"?wo.ReadWrite:wo.ReadOnly),He=se.colorModeForRenderPass(),et=se.useProgram(be?"backgroundPattern":"background"),Mt=it||Sr.coveringTiles({tileSize:he,terrain:se.style.map.terrain});be&&(Nt.activeTexture.set(hr.TEXTURE0),se.imageManager.bind(se.context));let Dt=je.getCrossfadeParameters();for(let Ut of Mt){let tr=it?Ut.posMatrix:se.transform.calculatePosMatrix(Ut.toUnwrapped()),mr=be?Hu(tr,Ot,se,be,{tileID:Ut,tileSize:he},Dt):Ql(tr,Ot,yt),Rr=se.style.map.terrain&&se.style.map.terrain.getTerrainData(Ut);et.draw(Nt,hr.TRIANGLES,Je,Oe,He,Ja.disabled,mr,Rr,je.id,se.tileExtentBuffer,se.quadTriangleIndexBuffer,se.tileExtentSegments)}})(w,0,Q,ee);break;case"custom":(function(se,qe,je){let it=se.context,yt=je.implementation;if(se.renderPass==="offscreen"){let Ot=yt.prerender;Ot&&(se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),Ot.call(yt,it.gl,se.transform.customLayerMatrix()),it.setDirty(),se.setBaseState())}else if(se.renderPass==="translucent"){se.setCustomLayerDefaults(),it.setColorMode(se.colorModeForRenderPass()),it.setStencilMode($o.disabled);let Ot=yt.renderingMode==="3d"?new wo(se.context.gl.LEQUAL,wo.ReadWrite,se.depthRangeFor3D):se.depthModeForSublayer(0,wo.ReadOnly);it.setDepthMode(Ot),yt.render(it.gl,se.transform.customLayerMatrix(),{farZ:se.transform.farZ,nearZ:se.transform.nearZ,fov:se.transform._fov,modelViewProjectionMatrix:se.transform.modelViewProjectionMatrix,projectionMatrix:se.transform.projectionMatrix}),it.setDirty(),se.setBaseState(),it.bindFramebuffer.set(null)}})(w,0,Q)}}translatePosMatrix(w,B,Q,ee,se){if(!Q[0]&&!Q[1])return w;let qe=se?ee==="map"?this.transform.angle:0:ee==="viewport"?-this.transform.angle:0;if(qe){let yt=Math.sin(qe),Ot=Math.cos(qe);Q=[Q[0]*Ot-Q[1]*yt,Q[0]*yt+Q[1]*Ot]}let je=[se?Q[0]:nn(B,Q[0],this.transform.zoom),se?Q[1]:nn(B,Q[1],this.transform.zoom),0],it=new Float32Array(16);return a.J(it,w,je),it}saveTileTexture(w){let B=this._tileTextures[w.size[0]];B?B.push(w):this._tileTextures[w.size[0]]=[w]}getTileTexture(w){let B=this._tileTextures[w];return B&&B.length>0?B.pop():null}isPatternMissing(w){if(!w)return!1;if(!w.from||!w.to)return!0;let B=this.imageManager.getPattern(w.from.toString()),Q=this.imageManager.getPattern(w.to.toString());return!B||!Q}useProgram(w,B){this.cache=this.cache||{};let Q=w+(B?B.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[Q]||(this.cache[Q]=new zi(this.context,xn[w],B,fc[w],this._showOverdrawInspector,this.style.map.terrain)),this.cache[Q]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let w=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(w.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new g(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:w,drawingBufferHeight:B}=this.context.gl;return this.width!==w||this.height!==B}}class fl{constructor(w,B){this.points=w,this.planes=B}static fromInvProjectionMatrix(w,B,Q){let ee=Math.pow(2,Q),se=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(je=>{let it=1/(je=a.af([],je,w))[3]/B*ee;return a.b1(je,je,[it,it,1/je[3],it])}),qe=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(je=>{let it=function(hr,Sr){var he=Sr[0],be=Sr[1],Pe=Sr[2],Oe=he*he+be*be+Pe*Pe;return Oe>0&&(Oe=1/Math.sqrt(Oe)),hr[0]=Sr[0]*Oe,hr[1]=Sr[1]*Oe,hr[2]=Sr[2]*Oe,hr}([],function(hr,Sr,he){var be=Sr[0],Pe=Sr[1],Oe=Sr[2],Je=he[0],He=he[1],et=he[2];return hr[0]=Pe*et-Oe*He,hr[1]=Oe*Je-be*et,hr[2]=be*He-Pe*Je,hr}([],L([],se[je[0]],se[je[1]]),L([],se[je[2]],se[je[1]]))),yt=-((Ot=it)[0]*(Nt=se[je[1]])[0]+Ot[1]*Nt[1]+Ot[2]*Nt[2]);var Ot,Nt;return it.concat(yt)});return new fl(se,qe)}}class Xc{constructor(w,B){this.min=w,this.max=B,this.center=function(Q,ee,se){return Q[0]=.5*ee[0],Q[1]=.5*ee[1],Q[2]=.5*ee[2],Q}([],function(Q,ee,se){return Q[0]=ee[0]+se[0],Q[1]=ee[1]+se[1],Q[2]=ee[2]+se[2],Q}([],this.min,this.max))}quadrant(w){let B=[w%2==0,w<2],Q=k(this.min),ee=k(this.max);for(let se=0;se=0&&qe++;if(qe===0)return 0;qe!==B.length&&(Q=!1)}if(Q)return 2;for(let ee=0;ee<3;ee++){let se=Number.MAX_VALUE,qe=-Number.MAX_VALUE;for(let je=0;jethis.max[ee]-this.min[ee])return 0}return 1}}class ic{constructor(w=0,B=0,Q=0,ee=0){if(isNaN(w)||w<0||isNaN(B)||B<0||isNaN(Q)||Q<0||isNaN(ee)||ee<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=w,this.bottom=B,this.left=Q,this.right=ee}interpolate(w,B,Q){return B.top!=null&&w.top!=null&&(this.top=a.y.number(w.top,B.top,Q)),B.bottom!=null&&w.bottom!=null&&(this.bottom=a.y.number(w.bottom,B.bottom,Q)),B.left!=null&&w.left!=null&&(this.left=a.y.number(w.left,B.left,Q)),B.right!=null&&w.right!=null&&(this.right=a.y.number(w.right,B.right,Q)),this}getCenter(w,B){let Q=a.ac((this.left+w-this.right)/2,0,w),ee=a.ac((this.top+B-this.bottom)/2,0,B);return new a.P(Q,ee)}equals(w){return this.top===w.top&&this.bottom===w.bottom&&this.left===w.left&&this.right===w.right}clone(){return new ic(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let yu=85.051129;class Qs{constructor(w,B,Q,ee,se){this.tileSize=512,this._renderWorldCopies=se===void 0||!!se,this._minZoom=w||0,this._maxZoom=B||22,this._minPitch=Q==null?0:Q,this._maxPitch=ee==null?60:ee,this.setMaxBounds(),this.width=0,this.height=0,this._center=new a.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new ic,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let w=new Qs(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return w.apply(this),w}apply(w){this.tileSize=w.tileSize,this.latRange=w.latRange,this.lngRange=w.lngRange,this.width=w.width,this.height=w.height,this._center=w._center,this._elevation=w._elevation,this.minElevationForCurrentTile=w.minElevationForCurrentTile,this.zoom=w.zoom,this.angle=w.angle,this._fov=w._fov,this._pitch=w._pitch,this._unmodified=w._unmodified,this._edgeInsets=w._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(w){this._minZoom!==w&&(this._minZoom=w,this.zoom=Math.max(this.zoom,w))}get maxZoom(){return this._maxZoom}set maxZoom(w){this._maxZoom!==w&&(this._maxZoom=w,this.zoom=Math.min(this.zoom,w))}get minPitch(){return this._minPitch}set minPitch(w){this._minPitch!==w&&(this._minPitch=w,this.pitch=Math.max(this.pitch,w))}get maxPitch(){return this._maxPitch}set maxPitch(w){this._maxPitch!==w&&(this._maxPitch=w,this.pitch=Math.min(this.pitch,w))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(w){w===void 0?w=!0:w===null&&(w=!1),this._renderWorldCopies=w}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new a.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(w){let B=-a.b3(w,-180,180)*Math.PI/180;this.angle!==B&&(this._unmodified=!1,this.angle=B,this._calcMatrices(),this.rotationMatrix=function(){var Q=new a.A(4);return a.A!=Float32Array&&(Q[1]=0,Q[2]=0),Q[0]=1,Q[3]=1,Q}(),function(Q,ee,se){var qe=ee[0],je=ee[1],it=ee[2],yt=ee[3],Ot=Math.sin(se),Nt=Math.cos(se);Q[0]=qe*Nt+it*Ot,Q[1]=je*Nt+yt*Ot,Q[2]=qe*-Ot+it*Nt,Q[3]=je*-Ot+yt*Nt}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(w){let B=a.ac(w,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==B&&(this._unmodified=!1,this._pitch=B,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(w){w=Math.max(.01,Math.min(60,w)),this._fov!==w&&(this._unmodified=!1,this._fov=w/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(w){let B=Math.min(Math.max(w,this.minZoom),this.maxZoom);this._zoom!==B&&(this._unmodified=!1,this._zoom=B,this.tileZoom=Math.max(0,Math.floor(B)),this.scale=this.zoomScale(B),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(w){w.lat===this._center.lat&&w.lng===this._center.lng||(this._unmodified=!1,this._center=w,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(w){w!==this._elevation&&(this._elevation=w,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(w){this._edgeInsets.equals(w)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,w,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(w){return this._edgeInsets.equals(w)}interpolatePadding(w,B,Q){this._unmodified=!1,this._edgeInsets.interpolate(w,B,Q),this._constrain(),this._calcMatrices()}coveringZoomLevel(w){let B=(w.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/w.tileSize));return Math.max(0,B)}getVisibleUnwrappedCoordinates(w){let B=[new a.b4(0,w)];if(this._renderWorldCopies){let Q=this.pointCoordinate(new a.P(0,0)),ee=this.pointCoordinate(new a.P(this.width,0)),se=this.pointCoordinate(new a.P(this.width,this.height)),qe=this.pointCoordinate(new a.P(0,this.height)),je=Math.floor(Math.min(Q.x,ee.x,se.x,qe.x)),it=Math.floor(Math.max(Q.x,ee.x,se.x,qe.x)),yt=1;for(let Ot=je-yt;Ot<=it+yt;Ot++)Ot!==0&&B.push(new a.b4(Ot,w))}return B}coveringTiles(w){var B,Q;let ee=this.coveringZoomLevel(w),se=ee;if(w.minzoom!==void 0&&eew.maxzoom&&(ee=w.maxzoom);let qe=this.pointCoordinate(this.getCameraPoint()),je=a.Z.fromLngLat(this.center),it=Math.pow(2,ee),yt=[it*qe.x,it*qe.y,0],Ot=[it*je.x,it*je.y,0],Nt=fl.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,ee),hr=w.minzoom||0;!w.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(hr=ee);let Sr=w.terrain?2/Math.min(this.tileSize,w.tileSize)*this.tileSize:3,he=He=>({aabb:new Xc([He*it,0,0],[(He+1)*it,it,0]),zoom:0,x:0,y:0,wrap:He,fullyVisible:!1}),be=[],Pe=[],Oe=ee,Je=w.reparseOverscaled?se:ee;if(this._renderWorldCopies)for(let He=1;He<=3;He++)be.push(he(-He)),be.push(he(He));for(be.push(he(0));be.length>0;){let He=be.pop(),et=He.x,Mt=He.y,Dt=He.fullyVisible;if(!Dt){let zr=He.aabb.intersects(Nt);if(zr===0)continue;Dt=zr===2}let Ut=w.terrain?yt:Ot,tr=He.aabb.distanceX(Ut),mr=He.aabb.distanceY(Ut),Rr=Math.max(Math.abs(tr),Math.abs(mr));if(He.zoom===Oe||Rr>Sr+(1<=hr){let zr=Oe-He.zoom,Xr=yt[0]-.5-(et<>1),Li=He.zoom+1,Ci=He.aabb.quadrant(zr);if(w.terrain){let Qi=new a.S(Li,He.wrap,Li,Xr,di),Mn=w.terrain.getMinMaxElevation(Qi),pa=(B=Mn.minElevation)!==null&&B!==void 0?B:this.elevation,ea=(Q=Mn.maxElevation)!==null&&Q!==void 0?Q:this.elevation;Ci=new Xc([Ci.min[0],Ci.min[1],pa],[Ci.max[0],Ci.max[1],ea])}be.push({aabb:Ci,zoom:Li,x:Xr,y:di,wrap:He.wrap,fullyVisible:Dt})}}return Pe.sort((He,et)=>He.distanceSq-et.distanceSq).map(He=>He.tileID)}resize(w,B){this.width=w,this.height=B,this.pixelsToGLUnits=[2/w,-2/B],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(w){return Math.pow(2,w)}scaleZoom(w){return Math.log(w)/Math.LN2}project(w){let B=a.ac(w.lat,-85.051129,yu);return new a.P(a.O(w.lng)*this.worldSize,a.Q(B)*this.worldSize)}unproject(w){return new a.Z(w.x/this.worldSize,w.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(w){let B=this.elevation,Q=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,ee=this.pointLocation(this.centerPoint,w),se=w.getElevationForLngLatZoom(ee,this.tileZoom);if(!(this.elevation-se))return;let qe=Q+B-se,je=Math.cos(this._pitch)*this.cameraToCenterDistance/qe/a.b5(1,ee.lat),it=this.scaleZoom(je/this.tileSize);this._elevation=se,this._center=ee,this.zoom=it}setLocationAtPoint(w,B){let Q=this.pointCoordinate(B),ee=this.pointCoordinate(this.centerPoint),se=this.locationCoordinate(w),qe=new a.Z(se.x-(Q.x-ee.x),se.y-(Q.y-ee.y));this.center=this.coordinateLocation(qe),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(w,B){return B?this.coordinatePoint(this.locationCoordinate(w),B.getElevationForLngLatZoom(w,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(w))}pointLocation(w,B){return this.coordinateLocation(this.pointCoordinate(w,B))}locationCoordinate(w){return a.Z.fromLngLat(w)}coordinateLocation(w){return w&&w.toLngLat()}pointCoordinate(w,B){if(B){let hr=B.pointCoordinate(w);if(hr!=null)return hr}let Q=[w.x,w.y,0,1],ee=[w.x,w.y,1,1];a.af(Q,Q,this.pixelMatrixInverse),a.af(ee,ee,this.pixelMatrixInverse);let se=Q[3],qe=ee[3],je=Q[1]/se,it=ee[1]/qe,yt=Q[2]/se,Ot=ee[2]/qe,Nt=yt===Ot?0:(0-yt)/(Ot-yt);return new a.Z(a.y.number(Q[0]/se,ee[0]/qe,Nt)/this.worldSize,a.y.number(je,it,Nt)/this.worldSize)}coordinatePoint(w,B=0,Q=this.pixelMatrix){let ee=[w.x*this.worldSize,w.y*this.worldSize,B,1];return a.af(ee,ee,Q),new a.P(ee[0]/ee[3],ee[1]/ee[3])}getBounds(){let w=Math.max(0,this.height/2-this.getHorizon());return new ce().extend(this.pointLocation(new a.P(0,w))).extend(this.pointLocation(new a.P(this.width,w))).extend(this.pointLocation(new a.P(this.width,this.height))).extend(this.pointLocation(new a.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new ce([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(w){w?(this.lngRange=[w.getWest(),w.getEast()],this.latRange=[w.getSouth(),w.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,yu])}calculateTileMatrix(w){let B=w.canonical,Q=this.worldSize/this.zoomScale(B.z),ee=B.x+Math.pow(2,B.z)*w.wrap,se=a.an(new Float64Array(16));return a.J(se,se,[ee*Q,B.y*Q,0]),a.K(se,se,[Q/a.X,Q/a.X,1]),se}calculatePosMatrix(w,B=!1){let Q=w.key,ee=B?this._alignedPosMatrixCache:this._posMatrixCache;if(ee[Q])return ee[Q];let se=this.calculateTileMatrix(w);return a.L(se,B?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,se),ee[Q]=new Float32Array(se),ee[Q]}calculateFogMatrix(w){let B=w.key,Q=this._fogMatrixCache;if(Q[B])return Q[B];let ee=this.calculateTileMatrix(w);return a.L(ee,this.fogMatrix,ee),Q[B]=new Float32Array(ee),Q[B]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(w,B){B=a.ac(+B,this.minZoom,this.maxZoom);let Q={center:new a.N(w.lng,w.lat),zoom:B},ee=this.lngRange;if(!this._renderWorldCopies&&ee===null){let He=179.9999999999;ee=[-He,He]}let se=this.tileSize*this.zoomScale(Q.zoom),qe=0,je=se,it=0,yt=se,Ot=0,Nt=0,{x:hr,y:Sr}=this.size;if(this.latRange){let He=this.latRange;qe=a.Q(He[1])*se,je=a.Q(He[0])*se,je-qeje&&(Oe=je-He)}if(ee){let He=(it+yt)/2,et=he;this._renderWorldCopies&&(et=a.b3(he,He-se/2,He+se/2));let Mt=hr/2;et-Mtyt&&(Pe=yt-Mt)}if(Pe!==void 0||Oe!==void 0){let He=new a.P(Pe!=null?Pe:he,Oe!=null?Oe:be);Q.center=this.unproject.call({worldSize:se},He).wrap()}return Q}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let w=this._unmodified,{center:B,zoom:Q}=this.getConstrained(this.center,this.zoom);this.center=B,this.zoom=Q,this._unmodified=w,this._constraining=!1}_calcMatrices(){if(!this.height)return;let w=this.centerOffset,B=this.point.x,Q=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=a.b5(1,this.center.lat)*this.worldSize;let ee=a.an(new Float64Array(16));a.K(ee,ee,[this.width/2,-this.height/2,1]),a.J(ee,ee,[1,-1,0]),this.labelPlaneMatrix=ee,ee=a.an(new Float64Array(16)),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[-1,-1,0]),a.K(ee,ee,[2/this.width,2/this.height,1]),this.glCoordMatrix=ee;let se=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),qe=Math.min(this.elevation,this.minElevationForCurrentTile),je=se-qe*this._pixelPerMeter/Math.cos(this._pitch),it=qe<0?je:se,yt=Math.PI/2+this._pitch,Ot=this._fov*(.5+w.y/this.height),Nt=Math.sin(Ot)*it/Math.sin(a.ac(Math.PI-yt-Ot,.01,Math.PI-.01)),hr=this.getHorizon(),Sr=2*Math.atan(hr/this.cameraToCenterDistance)*(.5+w.y/(2*hr)),he=Math.sin(Sr)*it/Math.sin(a.ac(Math.PI-yt-Sr,.01,Math.PI-.01)),be=Math.min(Nt,he);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*be+it),this.nearZ=this.height/50,ee=new Float64Array(16),a.b6(ee,this._fov,this.width/this.height,this.nearZ,this.farZ),ee[8]=2*-w.x/this.width,ee[9]=2*w.y/this.height,this.projectionMatrix=a.ae(ee),a.K(ee,ee,[1,-1,1]),a.J(ee,ee,[0,0,-this.cameraToCenterDistance]),a.b7(ee,ee,this._pitch),a.ad(ee,ee,this.angle),a.J(ee,ee,[-B,-Q,0]),this.mercatorMatrix=a.K([],ee,[this.worldSize,this.worldSize,this.worldSize]),a.K(ee,ee,[1,1,this._pixelPerMeter]),this.pixelMatrix=a.L(new Float64Array(16),this.labelPlaneMatrix,ee),a.J(ee,ee,[0,0,-this.elevation]),this.modelViewProjectionMatrix=ee,this.invModelViewProjectionMatrix=a.as([],ee),this.fogMatrix=new Float64Array(16),a.b6(this.fogMatrix,this._fov,this.width/this.height,se,this.farZ),this.fogMatrix[8]=2*-w.x/this.width,this.fogMatrix[9]=2*w.y/this.height,a.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),a.b7(this.fogMatrix,this.fogMatrix,this._pitch),a.ad(this.fogMatrix,this.fogMatrix,this.angle),a.J(this.fogMatrix,this.fogMatrix,[-B,-Q,0]),a.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),a.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=a.L(new Float64Array(16),this.labelPlaneMatrix,ee);let Pe=this.width%2/2,Oe=this.height%2/2,Je=Math.cos(this.angle),He=Math.sin(this.angle),et=B-Math.round(B)+Je*Pe+He*Oe,Mt=Q-Math.round(Q)+Je*Oe+He*Pe,Dt=new Float64Array(ee);if(a.J(Dt,Dt,[et>.5?et-1:et,Mt>.5?Mt-1:Mt,0]),this.alignedModelViewProjectionMatrix=Dt,ee=a.as(new Float64Array(16),this.pixelMatrix),!ee)throw new Error("failed to invert matrix");this.pixelMatrixInverse=ee,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let w=this.pointCoordinate(new a.P(0,0)),B=[w.x*this.worldSize,w.y*this.worldSize,0,1];return a.af(B,B,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let w=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new a.P(0,w))}getCameraQueryGeometry(w){let B=this.getCameraPoint();if(w.length===1)return[w[0],B];{let Q=B.x,ee=B.y,se=B.x,qe=B.y;for(let je of w)Q=Math.min(Q,je.x),ee=Math.min(ee,je.y),se=Math.max(se,je.x),qe=Math.max(qe,je.y);return[new a.P(Q,ee),new a.P(se,ee),new a.P(se,qe),new a.P(Q,qe),new a.P(Q,ee)]}}lngLatToCameraDepth(w,B){let Q=this.locationCoordinate(w),ee=[Q.x*this.worldSize,Q.y*this.worldSize,B,1];return a.af(ee,ee,this.modelViewProjectionMatrix),ee[2]/ee[3]}}function Qh(le,w){let B,Q=!1,ee=null,se=null,qe=()=>{ee=null,Q&&(le.apply(se,B),ee=setTimeout(qe,w),Q=!1)};return(...je)=>(Q=!0,se=this,B=je,ee||qe(),ee)}class gd{constructor(w){this._getCurrentHash=()=>{let B=window.location.hash.replace("#","");if(this._hashName){let Q;return B.split("&").map(ee=>ee.split("=")).forEach(ee=>{ee[0]===this._hashName&&(Q=ee)}),(Q&&Q[1]||"").split("/")}return B.split("/")},this._onHashChange=()=>{let B=this._getCurrentHash();if(B.length>=3&&!B.some(Q=>isNaN(Q))){let Q=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(B[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+B[2],+B[1]],zoom:+B[0],bearing:Q,pitch:+(B[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let B=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,B)},this._removeHash=()=>{let B=this._getCurrentHash();if(B.length===0)return;let Q=B.join("/"),ee=Q;ee.split("&").length>0&&(ee=ee.split("&")[0]),this._hashName&&(ee=`${this._hashName}=${Q}`);let se=window.location.hash.replace(ee,"");se.startsWith("#&")?se=se.slice(0,1)+se.slice(2):se==="#"&&(se="");let qe=window.location.href.replace(/(#.+)?$/,se);qe=qe.replace("&&","&"),window.history.replaceState(window.history.state,null,qe)},this._updateHash=Qh(this._updateHashUnthrottled,300),this._hashName=w&&encodeURIComponent(w)}addTo(w){return this._map=w,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(w){let B=this._map.getCenter(),Q=Math.round(100*this._map.getZoom())/100,ee=Math.ceil((Q*Math.LN2+Math.log(512/360/.5))/Math.LN10),se=Math.pow(10,ee),qe=Math.round(B.lng*se)/se,je=Math.round(B.lat*se)/se,it=this._map.getBearing(),yt=this._map.getPitch(),Ot="";if(Ot+=w?`/${qe}/${je}/${Q}`:`${Q}/${je}/${qe}`,(it||yt)&&(Ot+="/"+Math.round(10*it)/10),yt&&(Ot+=`/${Math.round(yt)}`),this._hashName){let Nt=this._hashName,hr=!1,Sr=window.location.hash.slice(1).split("&").map(he=>{let be=he.split("=")[0];return be===Nt?(hr=!0,`${be}=${Ot}`):he}).filter(he=>he);return hr||Sr.push(`${Nt}=${Ot}`),`#${Sr.join("&")}`}return`#${Ot}`}}let Gu={linearity:.3,easing:a.b8(0,0,.3,1)},Pc=a.e({deceleration:2500,maxSpeed:1400},Gu),vc=a.e({deceleration:20,maxSpeed:1400},Gu),sv=a.e({deceleration:1e3,maxSpeed:360},Gu),Lf=a.e({deceleration:1e3,maxSpeed:90},Gu);class Uf{constructor(w){this._map=w,this.clear()}clear(){this._inertiaBuffer=[]}record(w){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:u.now(),settings:w})}_drainInertiaBuffer(){let w=this._inertiaBuffer,B=u.now();for(;w.length>0&&B-w[0].time>160;)w.shift()}_onMoveEnd(w){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let B={zoom:0,bearing:0,pitch:0,pan:new a.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:se}of this._inertiaBuffer)B.zoom+=se.zoomDelta||0,B.bearing+=se.bearingDelta||0,B.pitch+=se.pitchDelta||0,se.panDelta&&B.pan._add(se.panDelta),se.around&&(B.around=se.around),se.pinchAround&&(B.pinchAround=se.pinchAround);let Q=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,ee={};if(B.pan.mag()){let se=oh(B.pan.mag(),Q,a.e({},Pc,w||{}));ee.offset=B.pan.mult(se.amount/B.pan.mag()),ee.center=this._map.transform.center,Iu(ee,se)}if(B.zoom){let se=oh(B.zoom,Q,vc);ee.zoom=this._map.transform.zoom+se.amount,Iu(ee,se)}if(B.bearing){let se=oh(B.bearing,Q,sv);ee.bearing=this._map.transform.bearing+a.ac(se.amount,-179,179),Iu(ee,se)}if(B.pitch){let se=oh(B.pitch,Q,Lf);ee.pitch=this._map.transform.pitch+se.amount,Iu(ee,se)}if(ee.zoom||ee.bearing){let se=B.pinchAround===void 0?B.around:B.pinchAround;ee.around=se?this._map.unproject(se):this._map.getCenter()}return this.clear(),a.e(ee,{noMoveStart:!0})}}function Iu(le,w){(!le.duration||le.durationB.unproject(it)),je=se.reduce((it,yt,Ot,Nt)=>it.add(yt.div(Nt.length)),new a.P(0,0));super(w,{points:se,point:je,lngLats:qe,lngLat:B.unproject(je),originalEvent:Q}),this._defaultPrevented=!1}}class md extends a.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(w,B,Q){super(w,{originalEvent:Q}),this._defaultPrevented=!1}}class sh{constructor(w,B){this._map=w,this._clickTolerance=B.clickTolerance}reset(){delete this._mousedownPos}wheel(w){return this._firePreventable(new md(w.type,this._map,w))}mousedown(w,B){return this._mousedownPos=B,this._firePreventable(new ru(w.type,this._map,w))}mouseup(w){this._map.fire(new ru(w.type,this._map,w))}click(w,B){this._mousedownPos&&this._mousedownPos.dist(B)>=this._clickTolerance||this._map.fire(new ru(w.type,this._map,w))}dblclick(w){return this._firePreventable(new ru(w.type,this._map,w))}mouseover(w){this._map.fire(new ru(w.type,this._map,w))}mouseout(w){this._map.fire(new ru(w.type,this._map,w))}touchstart(w){return this._firePreventable(new vf(w.type,this._map,w))}touchmove(w){this._map.fire(new vf(w.type,this._map,w))}touchend(w){this._map.fire(new vf(w.type,this._map,w))}touchcancel(w){this._map.fire(new vf(w.type,this._map,w))}_firePreventable(w){if(this._map.fire(w),w.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class Fs{constructor(w){this._map=w}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(w){this._map.fire(new ru(w.type,this._map,w))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new ru("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(w){this._delayContextMenu?this._contextMenuEvent=w:this._ignoreContextMenu||this._map.fire(new ru(w.type,this._map,w)),this._map.listens("contextmenu")&&w.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class _u{constructor(w){this._map=w}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(w){return this.transform.pointLocation(a.P.convert(w),this._map.terrain)}}class xu{constructor(w,B){this._map=w,this._tr=new _u(w),this._el=w.getCanvasContainer(),this._container=w.getContainer(),this._clickTolerance=B.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(w,B){this.isEnabled()&&w.shiftKey&&w.button===0&&(c.disableDrag(),this._startPos=this._lastPos=B,this._active=!0)}mousemoveWindow(w,B){if(!this._active)return;let Q=B;if(this._lastPos.equals(Q)||!this._box&&Q.dist(this._startPos)se.fitScreenCoordinates(Q,ee,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",w)}keydown(w){this._active&&w.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",w))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(c.remove(this._box),this._box=null),c.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(w,B){return this._map.fire(new a.k(w,{originalEvent:B}))}}function Lh(le,w){if(le.length!==w.length)throw new Error(`The number of touches and points are not equal - touches ${le.length}, points ${w.length}`);let B={};for(let Q=0;Qthis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=w.timeStamp),Q.length===this.numTouches&&(this.centroid=function(ee){let se=new a.P(0,0);for(let qe of ee)se._add(qe);return se.div(ee.length)}(B),this.touches=Lh(Q,B)))}touchmove(w,B,Q){if(this.aborted||!this.centroid)return;let ee=Lh(Q,B);for(let se in this.touches){let qe=ee[se];(!qe||qe.dist(this.touches[se])>30)&&(this.aborted=!0)}}touchend(w,B,Q){if((!this.centroid||w.timeStamp-this.startTime>500)&&(this.aborted=!0),Q.length===0){let ee=!this.aborted&&this.centroid;if(this.reset(),ee)return ee}}}class Pf{constructor(w){this.singleTap=new Is(w),this.numTaps=w.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(w,B,Q){this.singleTap.touchstart(w,B,Q)}touchmove(w,B,Q){this.singleTap.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this.singleTap.touchend(w,B,Q);if(ee){let se=w.timeStamp-this.lastTime<500,qe=!this.lastTap||this.lastTap.dist(ee)<30;if(se&&qe||this.reset(),this.count++,this.lastTime=w.timeStamp,this.lastTap=ee,this.count===this.numTaps)return this.reset(),ee}}}class Ic{constructor(w){this._tr=new _u(w),this._zoomIn=new Pf({numTouches:1,numTaps:2}),this._zoomOut=new Pf({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(w,B,Q){this._zoomIn.touchstart(w,B,Q),this._zoomOut.touchstart(w,B,Q)}touchmove(w,B,Q){this._zoomIn.touchmove(w,B,Q),this._zoomOut.touchmove(w,B,Q)}touchend(w,B,Q){let ee=this._zoomIn.touchend(w,B,Q),se=this._zoomOut.touchend(w,B,Q),qe=this._tr;return ee?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom+1,around:qe.unproject(ee)},{originalEvent:w})}):se?(this._active=!0,w.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:je=>je.easeTo({duration:300,zoom:qe.zoom-1,around:qe.unproject(se)},{originalEvent:w})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ju{constructor(w){this._enabled=!!w.enable,this._moveStateManager=w.moveStateManager,this._clickTolerance=w.clickTolerance||1,this._moveFunction=w.move,this._activateOnStart=!!w.activateOnStart,w.assignEvents(this),this.reset()}reset(w){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(w)}_move(...w){let B=this._moveFunction(...w);if(B.bearingDelta||B.pitchDelta||B.around||B.panDelta)return this._active=!0,B}dragStart(w,B){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(w)&&(this._moveStateManager.startMove(w),this._lastPoint=B.length?B[0]:B,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(w,B){if(!this.isEnabled())return;let Q=this._lastPoint;if(!Q)return;if(w.preventDefault(),!this._moveStateManager.isValidMoveEvent(w))return void this.reset(w);let ee=B.length?B[0]:B;return!this._moved&&ee.dist(Q){le.mousedown=le.dragStart,le.mousemoveWindow=le.dragMove,le.mouseup=le.dragEnd,le.contextmenu=w=>{w.preventDefault()}},Dl=({enable:le,clickTolerance:w,bearingDegreesPerPixelMoved:B=.8})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({bearingDelta:(se.x-ee.x)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})},Ih=({enable:le,clickTolerance:w,pitchDegreesPerPixelMoved:B=-.5})=>{let Q=new pc({checkCorrectEvent:ee=>c.mouseButton(ee)===0&&ee.ctrlKey||c.mouseButton(ee)===2});return new ju({clickTolerance:w,move:(ee,se)=>({pitchDelta:(se.y-ee.y)*B}),moveStateManager:Q,enable:le,assignEvents:Ph})};class Wu{constructor(w,B){this._clickTolerance=w.clickTolerance||1,this._map=B,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new a.P(0,0)}_shouldBePrevented(w){return w<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(w,B,Q){return this._calculateTransform(w,B,Q)}touchmove(w,B,Q){if(this._active){if(!this._shouldBePrevented(Q.length))return w.preventDefault(),this._calculateTransform(w,B,Q);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",w)}}touchend(w,B,Q){this._calculateTransform(w,B,Q),this._active&&this._shouldBePrevented(Q.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(w,B,Q){Q.length>0&&(this._active=!0);let ee=Lh(Q,B),se=new a.P(0,0),qe=new a.P(0,0),je=0;for(let yt in ee){let Ot=ee[yt],Nt=this._touches[yt];Nt&&(se._add(Ot),qe._add(Ot.sub(Nt)),je++,ee[yt]=Ot)}if(this._touches=ee,this._shouldBePrevented(je)||!qe.mag())return;let it=qe.div(je);return this._sum._add(it),this._sum.mag()Math.abs(le.x)}class gf extends Rc{constructor(w){super(),this._currentTouchCount=0,this._map=w}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(w,B,Q){super.touchstart(w,B,Q),this._currentTouchCount=Q.length}_start(w){this._lastPoints=w,nc(w[0].sub(w[1]))&&(this._valid=!1)}_move(w,B,Q){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let ee=w[0].sub(this._lastPoints[0]),se=w[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(ee,se,Q.timeStamp),this._valid?(this._lastPoints=w,this._active=!0,{pitchDelta:(ee.y+se.y)/2*-.5}):void 0}gestureBeginsVertically(w,B,Q){if(this._valid!==void 0)return this._valid;let ee=w.mag()>=2,se=B.mag()>=2;if(!ee&&!se)return;if(!ee||!se)return this._firstMove===void 0&&(this._firstMove=Q),Q-this._firstMove<100&&void 0;let qe=w.y>0==B.y>0;return nc(w)&&nc(B)&&qe}}let gt={panStep:100,bearingStep:15,pitchStep:10};class Bt{constructor(w){this._tr=new _u(w);let B=gt;this._panStep=B.panStep,this._bearingStep=B.bearingStep,this._pitchStep=B.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(w){if(w.altKey||w.ctrlKey||w.metaKey)return;let B=0,Q=0,ee=0,se=0,qe=0;switch(w.keyCode){case 61:case 107:case 171:case 187:B=1;break;case 189:case 109:case 173:B=-1;break;case 37:w.shiftKey?Q=-1:(w.preventDefault(),se=-1);break;case 39:w.shiftKey?Q=1:(w.preventDefault(),se=1);break;case 38:w.shiftKey?ee=1:(w.preventDefault(),qe=-1);break;case 40:w.shiftKey?ee=-1:(w.preventDefault(),qe=1);break;default:return}return this._rotationDisabled&&(Q=0,ee=0),{cameraAnimation:je=>{let it=this._tr;je.easeTo({duration:300,easeId:"keyboardHandler",easing:wr,zoom:B?Math.round(it.zoom)+B*(w.shiftKey?2:1):it.zoom,bearing:it.bearing+Q*this._bearingStep,pitch:it.pitch+ee*this._pitchStep,offset:[-se*this._panStep,-qe*this._panStep],center:it.center},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function wr(le){return le*(2-le)}let vr=4.000244140625;class Ur{constructor(w,B){this._onTimeout=Q=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(Q)},this._map=w,this._tr=new _u(w),this._triggerRenderFrame=B,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(w){this._defaultZoomRate=w}setWheelZoomRate(w){this._wheelZoomRate=w}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(w){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!w&&w.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(w){return!!this._map.cooperativeGestures.isEnabled()&&!(w.ctrlKey||this._map.cooperativeGestures.isBypassed(w))}wheel(w){if(!this.isEnabled())return;if(this._shouldBePrevented(w))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",w);let B=w.deltaMode===WheelEvent.DOM_DELTA_LINE?40*w.deltaY:w.deltaY,Q=u.now(),ee=Q-(this._lastWheelEventTime||0);this._lastWheelEventTime=Q,B!==0&&B%vr==0?this._type="wheel":B!==0&&Math.abs(B)<4?this._type="trackpad":ee>400?(this._type=null,this._lastValue=B,this._timeout=setTimeout(this._onTimeout,40,w)):this._type||(this._type=Math.abs(ee*B)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,B+=this._lastValue)),w.shiftKey&&B&&(B/=4),this._type&&(this._lastWheelEvent=w,this._delta-=B,this._active||this._start(w)),w.preventDefault()}_start(w){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let B=c.mousePos(this._map.getCanvas(),w),Q=this._tr;this._around=B.y>Q.transform.height/2-Q.transform.getHorizon()?a.N.convert(this._aroundCenter?Q.center:Q.unproject(B)):a.N.convert(Q.center),this._aroundPoint=Q.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let w=this._tr.transform;if(this._delta!==0){let it=this._type==="wheel"&&Math.abs(this._delta)>vr?this._wheelZoomRate:this._defaultZoomRate,yt=2/(1+Math.exp(-Math.abs(this._delta*it)));this._delta<0&&yt!==0&&(yt=1/yt);let Ot=typeof this._targetZoom=="number"?w.zoomScale(this._targetZoom):w.scale;this._targetZoom=Math.min(w.maxZoom,Math.max(w.minZoom,w.scaleZoom(Ot*yt))),this._type==="wheel"&&(this._startZoom=w.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let B=typeof this._targetZoom=="number"?this._targetZoom:w.zoom,Q=this._startZoom,ee=this._easing,se,qe=!1,je=u.now()-this._lastWheelEventTime;if(this._type==="wheel"&&Q&&ee&&je){let it=Math.min(je/200,1),yt=ee(it);se=a.y.number(Q,B,yt),it<1?this._frameId||(this._frameId=!0):qe=!0}else se=B,qe=!0;return this._active=!0,qe&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!qe,zoomDelta:se-w.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(w){let B=a.b9;if(this._prevEase){let Q=this._prevEase,ee=(u.now()-Q.start)/Q.duration,se=Q.easing(ee+.01)-Q.easing(ee),qe=.27/Math.sqrt(se*se+1e-4)*.01,je=Math.sqrt(.0729-qe*qe);B=a.b8(qe,je,.25,1)}return this._prevEase={start:u.now(),duration:w,easing:B},B}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class fi{constructor(w,B){this._clickZoom=w,this._tapZoom=B}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class xi{constructor(w){this._tr=new _u(w),this.reset()}reset(){this._active=!1}dblclick(w,B){return w.preventDefault(),{cameraAnimation:Q=>{Q.easeTo({duration:300,zoom:this._tr.zoom+(w.shiftKey?-1:1),around:this._tr.unproject(B)},{originalEvent:w})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Fi{constructor(){this._tap=new Pf({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(w,B,Q){if(!this._swipePoint)if(this._tapTime){let ee=B[0],se=w.timeStamp-this._tapTime<500,qe=this._tapPoint.dist(ee)<30;se&&qe?Q.length>0&&(this._swipePoint=ee,this._swipeTouch=Q[0].identifier):this.reset()}else this._tap.touchstart(w,B,Q)}touchmove(w,B,Q){if(this._tapTime){if(this._swipePoint){if(Q[0].identifier!==this._swipeTouch)return;let ee=B[0],se=ee.y-this._swipePoint.y;return this._swipePoint=ee,w.preventDefault(),this._active=!0,{zoomDelta:se/128}}}else this._tap.touchmove(w,B,Q)}touchend(w,B,Q){if(this._tapTime)this._swipePoint&&Q.length===0&&this.reset();else{let ee=this._tap.touchend(w,B,Q);ee&&(this._tapTime=w.timeStamp,this._tapPoint=ee)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class Xi{constructor(w,B,Q){this._el=w,this._mousePan=B,this._touchPan=Q}enable(w){this._inertiaOptions=w||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class hn{constructor(w,B,Q){this._pitchWithRotate=w.pitchWithRotate,this._mouseRotate=B,this._mousePitch=Q}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class Ti{constructor(w,B,Q,ee){this._el=w,this._touchZoom=B,this._touchRotate=Q,this._tapDragZoom=ee,this._rotationDisabled=!1,this._enabled=!0}enable(w){this._touchZoom.enable(w),this._rotationDisabled||this._touchRotate.enable(w),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class qi{constructor(w,B){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=w,this._options=B,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let w=this._map.getCanvasContainer();w.classList.add("maplibregl-cooperative-gestures"),this._container=c.create("div","maplibregl-cooperative-gesture-screen",w);let B=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(B=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let Q=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),ee=document.createElement("div");ee.className="maplibregl-desktop-message",ee.textContent=B,this._container.appendChild(ee);let se=document.createElement("div");se.className="maplibregl-mobile-message",se.textContent=Q,this._container.appendChild(se),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(c.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(w){return w[this._bypassKey]}notifyGestureBlocked(w,B){this._enabled&&(this._map.fire(new a.k("cooperativegestureprevented",{gestureType:w,originalEvent:B})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let Ii=le=>le.zoom||le.drag||le.pitch||le.rotate;class mi extends a.k{}function Pn(le){return le.panDelta&&le.panDelta.mag()||le.zoomDelta||le.bearingDelta||le.pitchDelta}class Ma{constructor(w,B){this.handleWindowEvent=ee=>{this.handleEvent(ee,`${ee.type}Window`)},this.handleEvent=(ee,se)=>{if(ee.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let qe=ee.type==="renderFrame"?void 0:ee,je={needsRenderFrame:!1},it={},yt={},Ot=ee.touches,Nt=Ot?this._getMapTouches(Ot):void 0,hr=Nt?c.touchPos(this._map.getCanvas(),Nt):c.mousePos(this._map.getCanvas(),ee);for(let{handlerName:be,handler:Pe,allowed:Oe}of this._handlers){if(!Pe.isEnabled())continue;let Je;this._blockedByActive(yt,Oe,be)?Pe.reset():Pe[se||ee.type]&&(Je=Pe[se||ee.type](ee,hr,Nt),this.mergeHandlerResult(je,it,Je,be,qe),Je&&Je.needsRenderFrame&&this._triggerRenderFrame()),(Je||Pe.isActive())&&(yt[be]=Pe)}let Sr={};for(let be in this._previousActiveHandlers)yt[be]||(Sr[be]=qe);this._previousActiveHandlers=yt,(Object.keys(Sr).length||Pn(je))&&(this._changes.push([je,it,Sr]),this._triggerRenderFrame()),(Object.keys(yt).length||Pn(je))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:he}=je;he&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],he(this._map))},this._map=w,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Uf(w),this._bearingSnap=B.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(B);let Q=this._el;this._listeners=[[Q,"touchstart",{passive:!0}],[Q,"touchmove",{passive:!1}],[Q,"touchend",void 0],[Q,"touchcancel",void 0],[Q,"mousedown",void 0],[Q,"mousemove",void 0],[Q,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[Q,"mouseover",void 0],[Q,"mouseout",void 0],[Q,"dblclick",void 0],[Q,"click",void 0],[Q,"keydown",{capture:!1}],[Q,"keyup",void 0],[Q,"wheel",{passive:!1}],[Q,"contextmenu",void 0],[window,"blur",void 0]];for(let[ee,se,qe]of this._listeners)c.addEventListener(ee,se,ee===document?this.handleWindowEvent:this.handleEvent,qe)}destroy(){for(let[w,B,Q]of this._listeners)c.removeEventListener(w,B,w===document?this.handleWindowEvent:this.handleEvent,Q)}_addDefaultHandlers(w){let B=this._map,Q=B.getCanvasContainer();this._add("mapEvent",new sh(B,w));let ee=B.boxZoom=new xu(B,w);this._add("boxZoom",ee),w.interactive&&w.boxZoom&&ee.enable();let se=B.cooperativeGestures=new qi(B,w.cooperativeGestures);this._add("cooperativeGestures",se),w.cooperativeGestures&&se.enable();let qe=new Ic(B),je=new xi(B);B.doubleClickZoom=new fi(je,qe),this._add("tapZoom",qe),this._add("clickZoom",je),w.interactive&&w.doubleClickZoom&&B.doubleClickZoom.enable();let it=new Fi;this._add("tapDragZoom",it);let yt=B.touchPitch=new gf(B);this._add("touchPitch",yt),w.interactive&&w.touchPitch&&B.touchPitch.enable(w.touchPitch);let Ot=Dl(w),Nt=Ih(w);B.dragRotate=new hn(w,Ot,Nt),this._add("mouseRotate",Ot,["mousePitch"]),this._add("mousePitch",Nt,["mouseRotate"]),w.interactive&&w.dragRotate&&B.dragRotate.enable();let hr=(({enable:Je,clickTolerance:He})=>{let et=new pc({checkCorrectEvent:Mt=>c.mouseButton(Mt)===0&&!Mt.ctrlKey});return new ju({clickTolerance:He,move:(Mt,Dt)=>({around:Dt,panDelta:Dt.sub(Mt)}),activateOnStart:!0,moveStateManager:et,enable:Je,assignEvents:Ph})})(w),Sr=new Wu(w,B);B.dragPan=new Xi(Q,hr,Sr),this._add("mousePan",hr),this._add("touchPan",Sr,["touchZoom","touchRotate"]),w.interactive&&w.dragPan&&B.dragPan.enable(w.dragPan);let he=new Yc,be=new iu;B.touchZoomRotate=new Ti(Q,be,he,it),this._add("touchRotate",he,["touchPan","touchZoom"]),this._add("touchZoom",be,["touchPan","touchRotate"]),w.interactive&&w.touchZoomRotate&&B.touchZoomRotate.enable(w.touchZoomRotate);let Pe=B.scrollZoom=new Ur(B,()=>this._triggerRenderFrame());this._add("scrollZoom",Pe,["mousePan"]),w.interactive&&w.scrollZoom&&B.scrollZoom.enable(w.scrollZoom);let Oe=B.keyboard=new Bt(B);this._add("keyboard",Oe),w.interactive&&w.keyboard&&B.keyboard.enable(),this._add("blockableMapEvent",new Fs(B))}_add(w,B,Q){this._handlers.push({handlerName:w,handler:B,allowed:Q}),this._handlersById[w]=B}stop(w){if(!this._updatingCamera){for(let{handler:B}of this._handlers)B.reset();this._inertia.clear(),this._fireEvents({},{},w),this._changes=[]}}isActive(){for(let{handler:w}of this._handlers)if(w.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!Ii(this._eventsInProgress)||this.isZooming()}_blockedByActive(w,B,Q){for(let ee in w)if(ee!==Q&&(!B||B.indexOf(ee)<0))return!0;return!1}_getMapTouches(w){let B=[];for(let Q of w)this._el.contains(Q.target)&&B.push(Q);return B}mergeHandlerResult(w,B,Q,ee,se){if(!Q)return;a.e(w,Q);let qe={handlerName:ee,originalEvent:Q.originalEvent||se};Q.zoomDelta!==void 0&&(B.zoom=qe),Q.panDelta!==void 0&&(B.drag=qe),Q.pitchDelta!==void 0&&(B.pitch=qe),Q.bearingDelta!==void 0&&(B.rotate=qe)}_applyChanges(){let w={},B={},Q={};for(let[ee,se,qe]of this._changes)ee.panDelta&&(w.panDelta=(w.panDelta||new a.P(0,0))._add(ee.panDelta)),ee.zoomDelta&&(w.zoomDelta=(w.zoomDelta||0)+ee.zoomDelta),ee.bearingDelta&&(w.bearingDelta=(w.bearingDelta||0)+ee.bearingDelta),ee.pitchDelta&&(w.pitchDelta=(w.pitchDelta||0)+ee.pitchDelta),ee.around!==void 0&&(w.around=ee.around),ee.pinchAround!==void 0&&(w.pinchAround=ee.pinchAround),ee.noInertia&&(w.noInertia=ee.noInertia),a.e(B,se),a.e(Q,qe);this._updateMapTransform(w,B,Q),this._changes=[]}_updateMapTransform(w,B,Q){let ee=this._map,se=ee._getTransformForUpdate(),qe=ee.terrain;if(!(Pn(w)||qe&&this._terrainMovement))return this._fireEvents(B,Q,!0);let{panDelta:je,zoomDelta:it,bearingDelta:yt,pitchDelta:Ot,around:Nt,pinchAround:hr}=w;hr!==void 0&&(Nt=hr),ee._stop(!0),Nt=Nt||ee.transform.centerPoint;let Sr=se.pointLocation(je?Nt.sub(je):Nt);yt&&(se.bearing+=yt),Ot&&(se.pitch+=Ot),it&&(se.zoom+=it),qe?this._terrainMovement||!B.drag&&!B.zoom?B.drag&&this._terrainMovement?se.center=se.pointLocation(se.centerPoint.sub(je)):se.setLocationAtPoint(Sr,Nt):(this._terrainMovement=!0,this._map._elevationFreeze=!0,se.setLocationAtPoint(Sr,Nt)):se.setLocationAtPoint(Sr,Nt),ee._applyUpdatedTransform(se),this._map._update(),w.noInertia||this._inertia.record(w),this._fireEvents(B,Q,!0)}_fireEvents(w,B,Q){let ee=Ii(this._eventsInProgress),se=Ii(w),qe={};for(let Nt in w){let{originalEvent:hr}=w[Nt];this._eventsInProgress[Nt]||(qe[`${Nt}start`]=hr),this._eventsInProgress[Nt]=w[Nt]}!ee&&se&&this._fireEvent("movestart",se.originalEvent);for(let Nt in qe)this._fireEvent(Nt,qe[Nt]);se&&this._fireEvent("move",se.originalEvent);for(let Nt in w){let{originalEvent:hr}=w[Nt];this._fireEvent(Nt,hr)}let je={},it;for(let Nt in this._eventsInProgress){let{handlerName:hr,originalEvent:Sr}=this._eventsInProgress[Nt];this._handlersById[hr].isActive()||(delete this._eventsInProgress[Nt],it=B[hr]||Sr,je[`${Nt}end`]=it)}for(let Nt in je)this._fireEvent(Nt,je[Nt]);let yt=Ii(this._eventsInProgress),Ot=(ee||se)&&!yt;if(Ot&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let Nt=this._map._getTransformForUpdate();Nt.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(Nt)}if(Q&&Ot){this._updatingCamera=!0;let Nt=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),hr=Sr=>Sr!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new mi("renderFrame",{timeStamp:w})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Ta extends a.E{constructor(w,B){super(),this._renderFrameCallback=()=>{let Q=Math.min((u.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(Q)),Q<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=w,this._bearingSnap=B.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new a.N(this.transform.center.lng,this.transform.center.lat)}setCenter(w,B){return this.jumpTo({center:w},B)}panBy(w,B,Q){return w=a.P.convert(w).mult(-1),this.panTo(this.transform.center,a.e({offset:w},B),Q)}panTo(w,B,Q){return this.easeTo(a.e({center:w},B),Q)}getZoom(){return this.transform.zoom}setZoom(w,B){return this.jumpTo({zoom:w},B),this}zoomTo(w,B,Q){return this.easeTo(a.e({zoom:w},B),Q)}zoomIn(w,B){return this.zoomTo(this.getZoom()+1,w,B),this}zoomOut(w,B){return this.zoomTo(this.getZoom()-1,w,B),this}getBearing(){return this.transform.bearing}setBearing(w,B){return this.jumpTo({bearing:w},B),this}getPadding(){return this.transform.padding}setPadding(w,B){return this.jumpTo({padding:w},B),this}rotateTo(w,B,Q){return this.easeTo(a.e({bearing:w},B),Q)}resetNorth(w,B){return this.rotateTo(0,a.e({duration:1e3},w),B),this}resetNorthPitch(w,B){return this.easeTo(a.e({bearing:0,pitch:0,duration:1e3},w),B),this}snapToNorth(w,B){return Math.abs(this.getBearing()){if(this._zooming&&(ee.zoom=a.y.number(se,Pe,Ut)),this._rotating&&(ee.bearing=a.y.number(qe,yt,Ut)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Ut)),this._padding&&(ee.interpolatePadding(it,Nt,Ut),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Ut),et)ee.setLocationAtPoint(et,Mt);else{let tr=ee.zoomScale(ee.zoom-se),mr=Pe>se?Math.min(2,He):Math.max(.5,He),Rr=Math.pow(mr,1-Ut),zr=ee.unproject(Oe.add(Je.mult(Ut*Rr)).mult(tr));ee.setLocationAtPoint(ee.renderWorldCopies?zr.wrap():zr,Sr)}this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},Ut=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B,Ut)},w),this}_prepareEase(w,B,Q={}){this._moving=!0,B||Q.moving||this.fire(new a.k("movestart",w)),this._zooming&&!Q.zooming&&this.fire(new a.k("zoomstart",w)),this._rotating&&!Q.rotating&&this.fire(new a.k("rotatestart",w)),this._pitching&&!Q.pitching&&this.fire(new a.k("pitchstart",w))}_prepareElevation(w){this._elevationCenter=w,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(w,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(w){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let B=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(w<1&&B!==this._elevationTarget){let Q=this._elevationTarget-this._elevationStart;this._elevationStart+=w*(Q-(B-(Q*w+this._elevationStart))/(1-w)),this._elevationTarget=B}this.transform.elevation=a.y.number(this._elevationStart,this._elevationTarget,w)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(w){let B=w.getCameraPosition(),Q=this.terrain.getElevationForLngLatZoom(B.lngLat,w.zoom);if(B.altitudethis._elevateCameraIfInsideTerrain(ee)),this.transformCameraUpdate&&B.push(ee=>this.transformCameraUpdate(ee)),!B.length)return;let Q=w.clone();for(let ee of B){let se=Q.clone(),{center:qe,zoom:je,pitch:it,bearing:yt,elevation:Ot}=ee(se);qe&&(se.center=qe),je!==void 0&&(se.zoom=je),it!==void 0&&(se.pitch=it),yt!==void 0&&(se.bearing=yt),Ot!==void 0&&(se.elevation=Ot),Q.apply(se)}this.transform.apply(Q)}_fireMoveEvents(w){this.fire(new a.k("move",w)),this._zooming&&this.fire(new a.k("zoom",w)),this._rotating&&this.fire(new a.k("rotate",w)),this._pitching&&this.fire(new a.k("pitch",w))}_afterEase(w,B){if(this._easeId&&B&&this._easeId===B)return;delete this._easeId;let Q=this._zooming,ee=this._rotating,se=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,Q&&this.fire(new a.k("zoomend",w)),ee&&this.fire(new a.k("rotateend",w)),se&&this.fire(new a.k("pitchend",w)),this.fire(new a.k("moveend",w))}flyTo(w,B){var Q;if(!w.essential&&u.prefersReducedMotion){let Qi=a.M(w,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Qi,B)}this.stop(),w=a.e({offset:[0,0],speed:1.2,curve:1.42,easing:a.b9},w);let ee=this._getTransformForUpdate(),se=ee.zoom,qe=ee.bearing,je=ee.pitch,it=ee.padding,yt="bearing"in w?this._normalizeBearing(w.bearing,qe):qe,Ot="pitch"in w?+w.pitch:je,Nt="padding"in w?w.padding:ee.padding,hr=a.P.convert(w.offset),Sr=ee.centerPoint.add(hr),he=ee.pointLocation(Sr),{center:be,zoom:Pe}=ee.getConstrained(a.N.convert(w.center||he),(Q=w.zoom)!==null&&Q!==void 0?Q:se);this._normalizeCenter(be,ee);let Oe=ee.zoomScale(Pe-se),Je=ee.project(he),He=ee.project(be).sub(Je),et=w.curve,Mt=Math.max(ee.width,ee.height),Dt=Mt/Oe,Ut=He.mag();if("minZoom"in w){let Qi=a.ac(Math.min(w.minZoom,se,Pe),ee.minZoom,ee.maxZoom),Mn=Mt/ee.zoomScale(Qi-se);et=Math.sqrt(Mn/Ut*2)}let tr=et*et;function mr(Qi){let Mn=(Dt*Dt-Mt*Mt+(Qi?-1:1)*tr*tr*Ut*Ut)/(2*(Qi?Dt:Mt)*tr*Ut);return Math.log(Math.sqrt(Mn*Mn+1)-Mn)}function Rr(Qi){return(Math.exp(Qi)-Math.exp(-Qi))/2}function zr(Qi){return(Math.exp(Qi)+Math.exp(-Qi))/2}let Xr=mr(!1),di=function(Qi){return zr(Xr)/zr(Xr+et*Qi)},Li=function(Qi){return Mt*((zr(Xr)*(Rr(Mn=Xr+et*Qi)/zr(Mn))-Rr(Xr))/tr)/Ut;var Mn},Ci=(mr(!0)-Xr)/et;if(Math.abs(Ut)<1e-6||!isFinite(Ci)){if(Math.abs(Mt-Dt)<1e-6)return this.easeTo(w,B);let Qi=Dt0,di=Mn=>Math.exp(Qi*et*Mn)}return w.duration="duration"in w?+w.duration:1e3*Ci/("screenSpeed"in w?+w.screenSpeed/et:+w.speed),w.maxDuration&&w.duration>w.maxDuration&&(w.duration=0),this._zooming=!0,this._rotating=qe!==yt,this._pitching=Ot!==je,this._padding=!ee.isPaddingEqual(Nt),this._prepareEase(B,!1),this.terrain&&this._prepareElevation(be),this._ease(Qi=>{let Mn=Qi*Ci,pa=1/di(Mn);ee.zoom=Qi===1?Pe:se+ee.scaleZoom(pa),this._rotating&&(ee.bearing=a.y.number(qe,yt,Qi)),this._pitching&&(ee.pitch=a.y.number(je,Ot,Qi)),this._padding&&(ee.interpolatePadding(it,Nt,Qi),Sr=ee.centerPoint.add(hr)),this.terrain&&!w.freezeElevation&&this._updateElevation(Qi);let ea=Qi===1?be:ee.unproject(Je.add(He.mult(Li(Mn))).mult(pa));ee.setLocationAtPoint(ee.renderWorldCopies?ea.wrap():ea,Sr),this._applyUpdatedTransform(ee),this._fireMoveEvents(B)},()=>{this.terrain&&w.freezeElevation&&this._finalizeElevation(),this._afterEase(B)},w),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(w,B){var Q;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let ee=this._onEaseEnd;delete this._onEaseEnd,ee.call(this,B)}return w||(Q=this.handlers)===null||Q===void 0||Q.stop(!1),this}_ease(w,B,Q){Q.animate===!1||Q.duration===0?(w(1),B()):(this._easeStart=u.now(),this._easeOptions=Q,this._onEaseFrame=w,this._onEaseEnd=B,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(w,B){w=a.b3(w,-180,180);let Q=Math.abs(w-B);return Math.abs(w-360-B)180?-360:Q<-180?360:0}queryTerrainElevation(w){return this.terrain?this.terrain.getElevationForLngLatZoom(a.N.convert(w),this.transform.tileZoom)-this.transform.elevation:null}}let Ea={compact:!0,customAttribution:'MapLibre'};class qa{constructor(w=Ea){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=B=>{!B||B.sourceDataType!=="metadata"&&B.sourceDataType!=="visibility"&&B.dataType!=="style"&&B.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=w}getDefaultPosition(){return"bottom-right"}onAdd(w){return this._map=w,this._compact=this.options.compact,this._container=c.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=c.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=c.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){c.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(w,B){let Q=this._map._getUIString(`AttributionControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)}_updateAttributions(){if(!this._map.style)return;let w=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?w=w.concat(this.options.customAttribution.map(ee=>typeof ee!="string"?"":ee)):typeof this.options.customAttribution=="string"&&w.push(this.options.customAttribution)),this._map.style.stylesheet){let ee=this._map.style.stylesheet;this.styleOwner=ee.owner,this.styleId=ee.id}let B=this._map.style.sourceCaches;for(let ee in B){let se=B[ee];if(se.used||se.usedForTerrain){let qe=se.getSource();qe.attribution&&w.indexOf(qe.attribution)<0&&w.push(qe.attribution)}}w=w.filter(ee=>String(ee).trim()),w.sort((ee,se)=>ee.length-se.length),w=w.filter((ee,se)=>{for(let qe=se+1;qe=0)return!1;return!0});let Q=w.join(" | ");Q!==this._attribHTML&&(this._attribHTML=Q,w.length?(this._innerContainer.innerHTML=Q,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class Cn{constructor(w={}){this._updateCompact=()=>{let B=this._container.children;if(B.length){let Q=B[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&Q.classList.add("maplibregl-compact"):Q.classList.remove("maplibregl-compact")}},this.options=w}getDefaultPosition(){return"bottom-left"}onAdd(w){this._map=w,this._compact=this.options&&this.options.compact,this._container=c.create("div","maplibregl-ctrl");let B=c.create("a","maplibregl-ctrl-logo");return B.target="_blank",B.rel="noopener nofollow",B.href="https://maplibre.org/",B.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),B.setAttribute("rel","noopener nofollow"),this._container.appendChild(B),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){c.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class sn{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(w){let B=++this._id;return this._queue.push({callback:w,id:B,cancelled:!1}),B}remove(w){let B=this._currentlyRunning,Q=B?this._queue.concat(B):this._queue;for(let ee of Q)if(ee.id===w)return void(ee.cancelled=!0)}run(w=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let B=this._currentlyRunning=this._queue;this._queue=[];for(let Q of B)if(!Q.cancelled&&(Q.callback(w),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var Ua=a.Y([{name:"a_pos3d",type:"Int16",components:3}]);class mo extends a.E{constructor(w){super(),this.sourceCache=w,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,w.usedForTerrain=!0,w.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(w,B){this.sourceCache.update(w,B),this._renderableTilesKeys=[];let Q={};for(let ee of w.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:B}))Q[ee.key]=!0,this._renderableTilesKeys.push(ee.key),this._tiles[ee.key]||(ee.posMatrix=new Float64Array(16),a.aP(ee.posMatrix,0,a.X,0,a.X,0,1),this._tiles[ee.key]=new Lt(ee,this.tileSize));for(let ee in this._tiles)Q[ee]||delete this._tiles[ee]}freeRtt(w){for(let B in this._tiles){let Q=this._tiles[B];(!w||Q.tileID.equals(w)||Q.tileID.isChildOf(w)||w.isChildOf(Q.tileID))&&(Q.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(w=>this.getTileByID(w))}getTileByID(w){return this._tiles[w]}getTerrainCoords(w){let B={};for(let Q of this._renderableTilesKeys){let ee=this._tiles[Q].tileID;if(ee.canonical.equals(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16),a.aP(se.posMatrix,0,a.X,0,a.X,0,1),B[Q]=se}else if(ee.canonical.isChildOf(w.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=ee.canonical.z-w.canonical.z,je=ee.canonical.x-(ee.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,yt,0,yt,0,1),a.J(se.posMatrix,se.posMatrix,[-je*yt,-it*yt,0]),B[Q]=se}else if(w.canonical.isChildOf(ee.canonical)){let se=w.clone();se.posMatrix=new Float64Array(16);let qe=w.canonical.z-ee.canonical.z,je=w.canonical.x-(w.canonical.x>>qe<>qe<>qe;a.aP(se.posMatrix,0,a.X,0,a.X,0,1),a.J(se.posMatrix,se.posMatrix,[je*yt,it*yt,0]),a.K(se.posMatrix,se.posMatrix,[1/2**qe,1/2**qe,0]),B[Q]=se}}return B}getSourceTile(w,B){let Q=this.sourceCache._source,ee=w.overscaledZ-this.deltaZoom;if(ee>Q.maxzoom&&(ee=Q.maxzoom),ee=Q.minzoom&&(!se||!se.dem);)se=this.sourceCache.getTileByID(w.scaledTo(ee--).key);return se}tilesAfterTime(w=Date.now()){return Object.values(this._tiles).filter(B=>B.timeAdded>=w)}}class Xo{constructor(w,B,Q){this.painter=w,this.sourceCache=new mo(B),this.options=Q,this.exaggeration=typeof Q.exaggeration=="number"?Q.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(w,B,Q,ee=a.X){var se;if(!(B>=0&&B=0&&Qw.canonical.z&&(w.canonical.z>=ee?se=w.canonical.z-ee:a.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let qe=w.canonical.x-(w.canonical.x>>se<>se<>8<<4|se>>8,B[qe+3]=0;let Q=new a.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(B.buffer)),ee=new g(w,Q,w.gl.RGBA,{premultiply:!1});return ee.bind(w.gl.NEAREST,w.gl.CLAMP_TO_EDGE),this._coordsTexture=ee,ee}pointCoordinate(w){this.painter.maybeDrawDepthAndCoords(!0);let B=new Uint8Array(4),Q=this.painter.context,ee=Q.gl,se=Math.round(w.x*this.painter.pixelRatio/devicePixelRatio),qe=Math.round(w.y*this.painter.pixelRatio/devicePixelRatio),je=Math.round(this.painter.height/devicePixelRatio);Q.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),ee.readPixels(se,je-qe-1,1,1,ee.RGBA,ee.UNSIGNED_BYTE,B),Q.bindFramebuffer.set(null);let it=B[0]+(B[2]>>4<<8),yt=B[1]+((15&B[2])<<8),Ot=this.coordsIndex[255-B[3]],Nt=Ot&&this.sourceCache.getTileByID(Ot);if(!Nt)return null;let hr=this._coordsTextureSize,Sr=(1<w.id!==B),this._recentlyUsed.push(w.id)}stampObject(w){w.stamp=++this._stamp}getOrCreateFreeObject(){for(let B of this._recentlyUsed)if(!this._objects[B].inUse)return this._objects[B];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let w=this._createObject(this._objects.length);return this._objects.push(w),w}freeObject(w){w.inUse=!1}freeAllObjects(){for(let w of this._objects)this.freeObject(w)}isFull(){return!(this._objects.length!w.inUse)===!1}}let Qo={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class ys{constructor(w,B){this.painter=w,this.terrain=B,this.pool=new Ts(w.context,30,B.sourceCache.tileSize*B.qualityFactor)}destruct(){this.pool.destruct()}getTexture(w){return this.pool.getObjectForId(w.rtt[this._stacks.length-1].id).texture}prepareForRender(w,B){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=w._order.filter(Q=>!w._layers[Q].isHidden(B)),this._coordsDescendingInv={};for(let Q in w.sourceCaches){this._coordsDescendingInv[Q]={};let ee=w.sourceCaches[Q].getVisibleCoordinates();for(let se of ee){let qe=this.terrain.sourceCache.getTerrainCoords(se);for(let je in qe)this._coordsDescendingInv[Q][je]||(this._coordsDescendingInv[Q][je]=[]),this._coordsDescendingInv[Q][je].push(qe[je])}}this._coordsDescendingInvStr={};for(let Q of w._order){let ee=w._layers[Q],se=ee.source;if(Qo[ee.type]&&!this._coordsDescendingInvStr[se]){this._coordsDescendingInvStr[se]={};for(let qe in this._coordsDescendingInv[se])this._coordsDescendingInvStr[se][qe]=this._coordsDescendingInv[se][qe].map(je=>je.key).sort().join()}}for(let Q of this._renderableTiles)for(let ee in this._coordsDescendingInvStr){let se=this._coordsDescendingInvStr[ee][Q.tileID.key];se&&se!==Q.rttCoords[ee]&&(Q.rtt=[])}}renderLayer(w){if(w.isHidden(this.painter.transform.zoom))return!1;let B=w.type,Q=this.painter,ee=this._renderableLayerIds[this._renderableLayerIds.length-1]===w.id;if(Qo[B]&&(this._prevType&&Qo[this._prevType]||this._stacks.push([]),this._prevType=B,this._stacks[this._stacks.length-1].push(w.id),!ee))return!0;if(Qo[this._prevType]||Qo[B]&&ee){this._prevType=B;let se=this._stacks.length-1,qe=this._stacks[se]||[];for(let je of this._renderableTiles){if(this.pool.isFull()&&(tu(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(je),je.rtt[se]){let yt=this.pool.getObjectForId(je.rtt[se].id);if(yt.stamp===je.rtt[se].stamp){this.pool.useObject(yt);continue}}let it=this.pool.getOrCreateFreeObject();this.pool.useObject(it),this.pool.stampObject(it),je.rtt[se]={id:it.id,stamp:it.stamp},Q.context.bindFramebuffer.set(it.fbo.framebuffer),Q.context.clear({color:a.aM.transparent,stencil:0}),Q.currentStencilSource=void 0;for(let yt=0;yt{le.touchstart=le.dragStart,le.touchmoveWindow=le.dragMove,le.touchend=le.dragEnd},ia={showCompass:!0,showZoom:!0,visualizePitch:!1};class Ka{constructor(w,B,Q=!1){this.mousedown=qe=>{this.startMouse(a.e({},qe,{ctrlKey:!0,preventDefault:()=>qe.preventDefault()}),c.mousePos(this.element,qe)),c.addEventListener(window,"mousemove",this.mousemove),c.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=qe=>{this.moveMouse(qe,c.mousePos(this.element,qe))},this.mouseup=qe=>{this.mouseRotate.dragEnd(qe),this.mousePitch&&this.mousePitch.dragEnd(qe),this.offTemp()},this.touchstart=qe=>{qe.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.startTouch(qe,this._startPos),c.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.addEventListener(window,"touchend",this.touchend))},this.touchmove=qe=>{qe.targetTouches.length!==1?this.reset():(this._lastPos=c.touchPos(this.element,qe.targetTouches)[0],this.moveTouch(qe,this._lastPos))},this.touchend=qe=>{qe.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let ee=w.dragRotate._mouseRotate.getClickTolerance(),se=w.dragRotate._mousePitch.getClickTolerance();this.element=B,this.mouseRotate=Dl({clickTolerance:ee,enable:!0}),this.touchRotate=(({enable:qe,clickTolerance:je,bearingDegreesPerPixelMoved:it=.8})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({bearingDelta:(Nt.x-Ot.x)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:ee,enable:!0}),this.map=w,Q&&(this.mousePitch=Ih({clickTolerance:se,enable:!0}),this.touchPitch=(({enable:qe,clickTolerance:je,pitchDegreesPerPixelMoved:it=-.5})=>{let yt=new pf;return new ju({clickTolerance:je,move:(Ot,Nt)=>({pitchDelta:(Nt.y-Ot.y)*it}),moveStateManager:yt,enable:qe,assignEvents:Rs})})({clickTolerance:se,enable:!0})),c.addEventListener(B,"mousedown",this.mousedown),c.addEventListener(B,"touchstart",this.touchstart,{passive:!1}),c.addEventListener(B,"touchcancel",this.reset)}startMouse(w,B){this.mouseRotate.dragStart(w,B),this.mousePitch&&this.mousePitch.dragStart(w,B),c.disableDrag()}startTouch(w,B){this.touchRotate.dragStart(w,B),this.touchPitch&&this.touchPitch.dragStart(w,B),c.disableDrag()}moveMouse(w,B){let Q=this.map,{bearingDelta:ee}=this.mouseRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.mousePitch){let{pitchDelta:se}=this.mousePitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}moveTouch(w,B){let Q=this.map,{bearingDelta:ee}=this.touchRotate.dragMove(w,B)||{};if(ee&&Q.setBearing(Q.getBearing()+ee),this.touchPitch){let{pitchDelta:se}=this.touchPitch.dragMove(w,B)||{};se&&Q.setPitch(Q.getPitch()+se)}}off(){let w=this.element;c.removeEventListener(w,"mousedown",this.mousedown),c.removeEventListener(w,"touchstart",this.touchstart,{passive:!1}),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend),c.removeEventListener(w,"touchcancel",this.reset),this.offTemp()}offTemp(){c.enableDrag(),c.removeEventListener(window,"mousemove",this.mousemove),c.removeEventListener(window,"mouseup",this.mouseup),c.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),c.removeEventListener(window,"touchend",this.touchend)}}let vs;function Ko(le,w,B){let Q=new a.N(le.lng,le.lat);if(le=new a.N(le.lng,le.lat),w){let ee=new a.N(le.lng-360,le.lat),se=new a.N(le.lng+360,le.lat),qe=B.locationPoint(le).distSqr(w);B.locationPoint(ee).distSqr(w)180;){let ee=B.locationPoint(le);if(ee.x>=0&&ee.y>=0&&ee.x<=B.width&&ee.y<=B.height)break;le.lng>B.center.lng?le.lng-=360:le.lng+=360}return le.lng!==Q.lng&&B.locationPoint(le).y>B.height/2-B.getHorizon()?le:Q}let nu={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Ru(le,w,B){let Q=le.classList;for(let ee in nu)Q.remove(`maplibregl-${B}-anchor-${ee}`);Q.add(`maplibregl-${B}-anchor-${w}`)}class ac extends a.E{constructor(w){if(super(),this._onKeyPress=B=>{let Q=B.code,ee=B.charCode||B.keyCode;Q!=="Space"&&Q!=="Enter"&&ee!==32&&ee!==13||this.togglePopup()},this._onMapClick=B=>{let Q=B.originalEvent.target,ee=this._element;this._popup&&(Q===ee||ee.contains(Q))&&this.togglePopup()},this._update=B=>{var Q;if(!this._map)return;let ee=this._map.loaded()&&!this._map.isMoving();((B==null?void 0:B.type)==="terrain"||(B==null?void 0:B.type)==="render"&&!ee)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?Ko(this._lngLat,this._flatPos,this._map.transform):(Q=this._lngLat)===null||Q===void 0?void 0:Q.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let se="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?se=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(se=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let qe="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?qe="rotateX(0deg)":this._pitchAlignment==="map"&&(qe=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||B&&B.type!=="moveend"||(this._pos=this._pos.round()),c.setTransform(this._element,`${nu[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${qe} ${se}`),u.frameAsync(new AbortController).then(()=>{this._updateOpacity(B&&B.type==="moveend")}).catch(()=>{})},this._onMove=B=>{if(!this._isDragging){let Q=this._clickTolerance||this._map._clickTolerance;this._isDragging=B.point.dist(this._pointerdownPos)>=Q}this._isDragging&&(this._pos=B.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new a.k("dragstart"))),this.fire(new a.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new a.k("dragend")),this._state="inactive"},this._addDragHandler=B=>{this._element.contains(B.originalEvent.target)&&(B.preventDefault(),this._positionDelta=B.point.sub(this._pos).add(this._offset),this._pointerdownPos=B.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=w&&w.anchor||"center",this._color=w&&w.color||"#3FB1CE",this._scale=w&&w.scale||1,this._draggable=w&&w.draggable||!1,this._clickTolerance=w&&w.clickTolerance||0,this._subpixelPositioning=w&&w.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=w&&w.rotation||0,this._rotationAlignment=w&&w.rotationAlignment||"auto",this._pitchAlignment=w&&w.pitchAlignment&&w.pitchAlignment!=="auto"?w.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(w==null?void 0:w.opacity,w==null?void 0:w.opacityWhenCovered),w&&w.element)this._element=w.element,this._offset=a.P.convert(w&&w.offset||[0,0]);else{this._defaultMarker=!0,this._element=c.create("div");let B=c.createNS("http://www.w3.org/2000/svg","svg"),Q=41,ee=27;B.setAttributeNS(null,"display","block"),B.setAttributeNS(null,"height",`${Q}px`),B.setAttributeNS(null,"width",`${ee}px`),B.setAttributeNS(null,"viewBox",`0 0 ${ee} ${Q}`);let se=c.createNS("http://www.w3.org/2000/svg","g");se.setAttributeNS(null,"stroke","none"),se.setAttributeNS(null,"stroke-width","1"),se.setAttributeNS(null,"fill","none"),se.setAttributeNS(null,"fill-rule","evenodd");let qe=c.createNS("http://www.w3.org/2000/svg","g");qe.setAttributeNS(null,"fill-rule","nonzero");let je=c.createNS("http://www.w3.org/2000/svg","g");je.setAttributeNS(null,"transform","translate(3.0, 29.0)"),je.setAttributeNS(null,"fill","#000000");let it=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let Oe of it){let Je=c.createNS("http://www.w3.org/2000/svg","ellipse");Je.setAttributeNS(null,"opacity","0.04"),Je.setAttributeNS(null,"cx","10.5"),Je.setAttributeNS(null,"cy","5.80029008"),Je.setAttributeNS(null,"rx",Oe.rx),Je.setAttributeNS(null,"ry",Oe.ry),je.appendChild(Je)}let yt=c.createNS("http://www.w3.org/2000/svg","g");yt.setAttributeNS(null,"fill",this._color);let Ot=c.createNS("http://www.w3.org/2000/svg","path");Ot.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),yt.appendChild(Ot);let Nt=c.createNS("http://www.w3.org/2000/svg","g");Nt.setAttributeNS(null,"opacity","0.25"),Nt.setAttributeNS(null,"fill","#000000");let hr=c.createNS("http://www.w3.org/2000/svg","path");hr.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),Nt.appendChild(hr);let Sr=c.createNS("http://www.w3.org/2000/svg","g");Sr.setAttributeNS(null,"transform","translate(6.0, 7.0)"),Sr.setAttributeNS(null,"fill","#FFFFFF");let he=c.createNS("http://www.w3.org/2000/svg","g");he.setAttributeNS(null,"transform","translate(8.0, 8.0)");let be=c.createNS("http://www.w3.org/2000/svg","circle");be.setAttributeNS(null,"fill","#000000"),be.setAttributeNS(null,"opacity","0.25"),be.setAttributeNS(null,"cx","5.5"),be.setAttributeNS(null,"cy","5.5"),be.setAttributeNS(null,"r","5.4999962");let Pe=c.createNS("http://www.w3.org/2000/svg","circle");Pe.setAttributeNS(null,"fill","#FFFFFF"),Pe.setAttributeNS(null,"cx","5.5"),Pe.setAttributeNS(null,"cy","5.5"),Pe.setAttributeNS(null,"r","5.4999962"),he.appendChild(be),he.appendChild(Pe),qe.appendChild(je),qe.appendChild(yt),qe.appendChild(Nt),qe.appendChild(Sr),qe.appendChild(he),B.appendChild(qe),B.setAttributeNS(null,"height",Q*this._scale+"px"),B.setAttributeNS(null,"width",ee*this._scale+"px"),this._element.appendChild(B),this._offset=a.P.convert(w&&w.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",B=>{B.preventDefault()}),this._element.addEventListener("mousedown",B=>{B.preventDefault()}),Ru(this._element,this._anchor,"marker"),w&&w.className)for(let B of w.className.split(" "))this._element.classList.add(B);this._popup=null}addTo(w){return this.remove(),this._map=w,this._element.setAttribute("aria-label",w._getUIString("Marker.Title")),w.getCanvasContainer().appendChild(this._element),w.on("move",this._update),w.on("moveend",this._update),w.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),c.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(w){return this._lngLat=a.N.convert(w),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(w){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),w){if(!("offset"in w.options)){let ee=Math.abs(13.5)/Math.SQRT2;w.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[ee,-1*(38.1-13.5+ee)],"bottom-right":[-ee,-1*(38.1-13.5+ee)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=w,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(w){return this._subpixelPositioning=w,this}getPopup(){return this._popup}togglePopup(){let w=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:w?(w.isOpen()?w.remove():(w.setLngLat(this._lngLat),w.addTo(this._map)),this):this}_updateOpacity(w=!1){var B,Q;if(!(!((B=this._map)===null||B===void 0)&&B.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(w)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let ee=this._map,se=ee.terrain.depthAtPoint(this._pos),qe=ee.terrain.getElevationForLngLatZoom(this._lngLat,ee.transform.tileZoom);if(ee.transform.lngLatToCameraDepth(this._lngLat,qe)-se<.006)return void(this._element.style.opacity=this._opacity);let je=-this._offset.y/ee.transform._pixelPerMeter,it=Math.sin(ee.getPitch()*Math.PI/180)*je,yt=ee.terrain.depthAtPoint(new a.P(this._pos.x,this._pos.y-this._offset.y)),Ot=ee.transform.lngLatToCameraDepth(this._lngLat,qe+it)-yt>.006;!((Q=this._popup)===null||Q===void 0)&&Q.isOpen()&&Ot&&this._popup.remove(),this._element.style.opacity=Ot?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(w){return this._offset=a.P.convert(w),this._update(),this}addClassName(w){this._element.classList.add(w)}removeClassName(w){this._element.classList.remove(w)}toggleClassName(w){return this._element.classList.toggle(w)}setDraggable(w){return this._draggable=!!w,this._map&&(w?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(w){return this._rotation=w||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(w){return this._rotationAlignment=w||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(w){return this._pitchAlignment=w&&w!=="auto"?w:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(w,B){return w===void 0&&B===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),w!==void 0&&(this._opacity=w),B!==void 0&&(this._opacityWhenCovered=B),this._map&&this._updateOpacity(!0),this}}let mf={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},bu=0,Kc=!1,Du={maxWidth:100,unit:"metric"};function Dc(le,w,B){let Q=B&&B.maxWidth||100,ee=le._container.clientHeight/2,se=le.unproject([0,ee]),qe=le.unproject([Q,ee]),je=se.distanceTo(qe);if(B&&B.unit==="imperial"){let it=3.2808*je;it>5280?Da(w,Q,it/5280,le._getUIString("ScaleControl.Miles")):Da(w,Q,it,le._getUIString("ScaleControl.Feet"))}else B&&B.unit==="nautical"?Da(w,Q,je/1852,le._getUIString("ScaleControl.NauticalMiles")):je>=1e3?Da(w,Q,je/1e3,le._getUIString("ScaleControl.Kilometers")):Da(w,Q,je,le._getUIString("ScaleControl.Meters"))}function Da(le,w,B,Q){let ee=function(se){let qe=Math.pow(10,`${Math.floor(se)}`.length-1),je=se/qe;return je=je>=10?10:je>=5?5:je>=3?3:je>=2?2:je>=1?1:function(it){let yt=Math.pow(10,Math.ceil(-Math.log(it)/Math.LN10));return Math.round(it*yt)/yt}(je),qe*je}(B);le.style.width=w*(ee/B)+"px",le.innerHTML=`${ee} ${Q}`}let eo={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Jc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function yc(le){if(le){if(typeof le=="number"){let w=Math.round(Math.abs(le)/Math.SQRT2);return{center:new a.P(0,0),top:new a.P(0,le),"top-left":new a.P(w,w),"top-right":new a.P(-w,w),bottom:new a.P(0,-le),"bottom-left":new a.P(w,-w),"bottom-right":new a.P(-w,-w),left:new a.P(le,0),right:new a.P(-le,0)}}if(le instanceof a.P||Array.isArray(le)){let w=a.P.convert(le);return{center:w,top:w,"top-left":w,"top-right":w,bottom:w,"bottom-left":w,"bottom-right":w,left:w,right:w}}return{center:a.P.convert(le.center||[0,0]),top:a.P.convert(le.top||[0,0]),"top-left":a.P.convert(le["top-left"]||[0,0]),"top-right":a.P.convert(le["top-right"]||[0,0]),bottom:a.P.convert(le.bottom||[0,0]),"bottom-left":a.P.convert(le["bottom-left"]||[0,0]),"bottom-right":a.P.convert(le["bottom-right"]||[0,0]),left:a.P.convert(le.left||[0,0]),right:a.P.convert(le.right||[0,0])}}return yc(new a.P(0,0))}let _c=o;i.AJAXError=a.bh,i.Evented=a.E,i.LngLat=a.N,i.MercatorCoordinate=a.Z,i.Point=a.P,i.addProtocol=a.bi,i.config=a.a,i.removeProtocol=a.bj,i.AttributionControl=qa,i.BoxZoomHandler=xu,i.CanvasSource=Ct,i.CooperativeGesturesHandler=qi,i.DoubleClickZoomHandler=fi,i.DragPanHandler=Xi,i.DragRotateHandler=hn,i.EdgeInsets=ic,i.FullscreenControl=class extends a.E{constructor(le={}){super(),this._onFullscreenChange=()=>{var w;let B=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((w=B==null?void 0:B.shadowRoot)===null||w===void 0)&&w.fullscreenElement;)B=B.shadowRoot.fullscreenElement;B===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,le&&le.container&&(le.container instanceof HTMLElement?this._container=le.container:a.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(le){return this._map=le,this._container||(this._container=this._map.getContainer()),this._controlContainer=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){c.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let le=this._fullscreenButton=c.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);c.create("span","maplibregl-ctrl-icon",le).setAttribute("aria-hidden","true"),le.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let le=this._getTitle();this._fullscreenButton.setAttribute("aria-label",le),this._fullscreenButton.title=le}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new a.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new a.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},i.GeoJSONSource=rt,i.GeolocateControl=class extends a.E{constructor(le){super(),this._onSuccess=w=>{if(this._map){if(this._isOutOfMapMaxBounds(w))return this._setErrorState(),this.fire(new a.k("outofmaxbounds",w)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=w,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(w),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(w),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new a.k("geolocate",w)),this._finish()}},this._updateCamera=w=>{let B=new a.N(w.coords.longitude,w.coords.latitude),Q=w.coords.accuracy,ee=this._map.getBearing(),se=a.e({bearing:ee},this.options.fitBoundsOptions),qe=ce.fromLngLat(B,Q);this._map.fitBounds(qe,se,{geolocateSource:!0})},this._updateMarker=w=>{if(w){let B=new a.N(w.coords.longitude,w.coords.latitude);this._accuracyCircleMarker.setLngLat(B).addTo(this._map),this._userLocationDotMarker.setLngLat(B).addTo(this._map),this._accuracy=w.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=w=>{if(this._map){if(this.options.trackUserLocation)if(w.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(w.code===3&&Kc)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new a.k("error",w)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",w=>w.preventDefault()),this._geolocateButton=c.create("button","maplibregl-ctrl-geolocate",this._container),c.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=w=>{if(this._map){if(w===!1){a.w("Geolocation support is not available so the GeolocateControl will be disabled.");let B=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}else{let B=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=B,this._geolocateButton.setAttribute("aria-label",B)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=c.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new ac({element:this._dotElement}),this._circleElement=c.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ac({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",B=>{B.geolocateSource||this._watchState!=="ACTIVE_LOCK"||B.originalEvent&&B.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new a.k("trackuserlocationend")),this.fire(new a.k("userlocationlostfocus")))})}},this.options=a.e({},mf,le)}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return a._(this,arguments,void 0,function*(w=!1){if(vs!==void 0&&!w)return vs;if(window.navigator.permissions===void 0)return vs=!!window.navigator.geolocation,vs;try{vs=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch(B){vs=!!window.navigator.geolocation}return vs})}().then(w=>this._finishSetupUI(w)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),c.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,bu=0,Kc=!1}_isOutOfMapMaxBounds(le){let w=this._map.getMaxBounds(),B=le.coords;return w&&(B.longitudew.getEast()||B.latitudew.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let le=this._map.getBounds(),w=le.getSouthEast(),B=le.getNorthEast(),Q=w.distanceTo(B),ee=Math.ceil(this._accuracy/(Q/this._map._container.clientHeight)*2);this._circleElement.style.width=`${ee}px`,this._circleElement.style.height=`${ee}px`}trigger(){if(!this._setup)return a.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new a.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":bu--,Kc=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new a.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new a.k("trackuserlocationstart")),this.fire(new a.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let le;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),bu++,bu>1?(le={maximumAge:6e5,timeout:0},Kc=!0):(le=this.options.positionOptions,Kc=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,le)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},i.Hash=gd,i.ImageSource=Rt,i.KeyboardHandler=Bt,i.LngLatBounds=ce,i.LogoControl=Cn,i.Map=class extends Ta{constructor(le){a.bf.mark(a.bg.create);let w=Object.assign(Object.assign({},Gs),le);if(w.minZoom!=null&&w.maxZoom!=null&&w.minZoom>w.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(w.minPitch!=null&&w.maxPitch!=null&&w.minPitch>w.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(w.minPitch!=null&&w.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(w.maxPitch!=null&&w.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new Qs(w.minZoom,w.maxZoom,w.minPitch,w.maxPitch,w.renderWorldCopies),{bearingSnap:w.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new sn,this._controls=[],this._mapId=a.a4(),this._contextLost=B=>{B.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new a.k("webglcontextlost",{originalEvent:B}))},this._contextRestored=B=>{this._setupPainter(),this.resize(),this._update(),this.fire(new a.k("webglcontextrestored",{originalEvent:B}))},this._onMapScroll=B=>{if(B.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=w.interactive,this._maxTileCacheSize=w.maxTileCacheSize,this._maxTileCacheZoomLevels=w.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=w.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=w.preserveDrawingBuffer===!0,this._antialias=w.antialias===!0,this._trackResize=w.trackResize===!0,this._bearingSnap=w.bearingSnap,this._refreshExpiredTiles=w.refreshExpiredTiles===!0,this._fadeDuration=w.fadeDuration,this._crossSourceCollisions=w.crossSourceCollisions===!0,this._collectResourceTiming=w.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},Bo),w.locale),this._clickTolerance=w.clickTolerance,this._overridePixelRatio=w.pixelRatio,this._maxCanvasSize=w.maxCanvasSize,this.transformCameraUpdate=w.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=w.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=p.addThrottleControl(()=>this.isMoving()),this._requestManager=new E(w.transformRequest),typeof w.container=="string"){if(this._container=document.getElementById(w.container),!this._container)throw new Error(`Container '${w.container}' not found.`)}else{if(!(w.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=w.container}if(w.maxBounds&&this.setMaxBounds(w.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window!="undefined"){addEventListener("online",this._onWindowOnline,!1);let B=!1,Q=Qh(ee=>{this._trackResize&&!this._removed&&(this.resize(ee),this.redraw())},50);this._resizeObserver=new ResizeObserver(ee=>{B?Q(ee):B=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Ma(this,w),this._hash=w.hash&&new gd(typeof w.hash=="string"&&w.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:w.center,zoom:w.zoom,bearing:w.bearing,pitch:w.pitch}),w.bounds&&(this.resize(),this.fitBounds(w.bounds,a.e({},w.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=w.localIdeographFontFamily,this._validateStyle=w.validateStyle,w.style&&this.setStyle(w.style,{localIdeographFontFamily:w.localIdeographFontFamily}),w.attributionControl&&this.addControl(new qa(typeof w.attributionControl=="boolean"?void 0:w.attributionControl)),w.maplibreLogo&&this.addControl(new Cn,w.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",B=>{this._update(B.dataType==="style"),this.fire(new a.k(`${B.dataType}data`,B))}),this.on("dataloading",B=>{this.fire(new a.k(`${B.dataType}dataloading`,B))}),this.on("dataabort",B=>{this.fire(new a.k("sourcedataabort",B))})}_getMapId(){return this._mapId}addControl(le,w){if(w===void 0&&(w=le.getDefaultPosition?le.getDefaultPosition():"top-right"),!le||!le.onAdd)return this.fire(new a.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let B=le.onAdd(this);this._controls.push(le);let Q=this._controlPositions[w];return w.indexOf("bottom")!==-1?Q.insertBefore(B,Q.firstChild):Q.appendChild(B),this}removeControl(le){if(!le||!le.onRemove)return this.fire(new a.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let w=this._controls.indexOf(le);return w>-1&&this._controls.splice(w,1),le.onRemove(this),this}hasControl(le){return this._controls.indexOf(le)>-1}calculateCameraOptionsFromTo(le,w,B,Q){return Q==null&&this.terrain&&(Q=this.terrain.getElevationForLngLatZoom(B,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(le,w,B,Q)}resize(le){var w;let B=this._containerDimensions(),Q=B[0],ee=B[1],se=this._getClampedPixelRatio(Q,ee);if(this._resizeCanvas(Q,ee,se),this.painter.resize(Q,ee,se),this.painter.overLimit()){let je=this.painter.context.gl;this._maxCanvasSize=[je.drawingBufferWidth,je.drawingBufferHeight];let it=this._getClampedPixelRatio(Q,ee);this._resizeCanvas(Q,ee,it),this.painter.resize(Q,ee,it)}this.transform.resize(Q,ee),(w=this._requestedCameraState)===null||w===void 0||w.resize(Q,ee);let qe=!this._moving;return qe&&(this.stop(),this.fire(new a.k("movestart",le)).fire(new a.k("move",le))),this.fire(new a.k("resize",le)),qe&&this.fire(new a.k("moveend",le)),this}_getClampedPixelRatio(le,w){let{0:B,1:Q}=this._maxCanvasSize,ee=this.getPixelRatio(),se=le*ee,qe=w*ee;return Math.min(se>B?B/se:1,qe>Q?Q/qe:1)*ee}getPixelRatio(){var le;return(le=this._overridePixelRatio)!==null&&le!==void 0?le:devicePixelRatio}setPixelRatio(le){this._overridePixelRatio=le,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(le){return this.transform.setMaxBounds(ce.convert(le)),this._update()}setMinZoom(le){if((le=le==null?-2:le)>=-2&&le<=this.transform.maxZoom)return this.transform.minZoom=le,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=le,this._update(),this.getZoom()>le&&this.setZoom(le),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(le){if((le=le==null?0:le)<0)throw new Error("minPitch must be greater than or equal to 0");if(le>=0&&le<=this.transform.maxPitch)return this.transform.minPitch=le,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(le>=this.transform.minPitch)return this.transform.maxPitch=le,this._update(),this.getPitch()>le&&this.setPitch(le),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(le){return this.transform.renderWorldCopies=le,this._update()}project(le){return this.transform.locationPoint(a.N.convert(le),this.style&&this.terrain)}unproject(le){return this.transform.pointLocation(a.P.convert(le),this.terrain)}isMoving(){var le;return this._moving||((le=this.handlers)===null||le===void 0?void 0:le.isMoving())}isZooming(){var le;return this._zooming||((le=this.handlers)===null||le===void 0?void 0:le.isZooming())}isRotating(){var le;return this._rotating||((le=this.handlers)===null||le===void 0?void 0:le.isRotating())}_createDelegatedListener(le,w,B){if(le==="mouseenter"||le==="mouseover"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:se=>{let qe=w.filter(it=>this.getLayer(it)),je=qe.length!==0?this.queryRenderedFeatures(se.point,{layers:qe}):[];je.length?Q||(Q=!0,B.call(this,new ru(le,this,se.originalEvent,{features:je}))):Q=!1},mouseout:()=>{Q=!1}}}}if(le==="mouseleave"||le==="mouseout"){let Q=!1;return{layers:w,listener:B,delegates:{mousemove:qe=>{let je=w.filter(it=>this.getLayer(it));(je.length!==0?this.queryRenderedFeatures(qe.point,{layers:je}):[]).length?Q=!0:Q&&(Q=!1,B.call(this,new ru(le,this,qe.originalEvent)))},mouseout:qe=>{Q&&(Q=!1,B.call(this,new ru(le,this,qe.originalEvent)))}}}}{let Q=ee=>{let se=w.filter(je=>this.getLayer(je)),qe=se.length!==0?this.queryRenderedFeatures(ee.point,{layers:se}):[];qe.length&&(ee.features=qe,B.call(this,ee),delete ee.features)};return{layers:w,listener:B,delegates:{[le]:Q}}}}_saveDelegatedListener(le,w){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[le]=this._delegatedListeners[le]||[],this._delegatedListeners[le].push(w)}_removeDelegatedListener(le,w,B){if(!this._delegatedListeners||!this._delegatedListeners[le])return;let Q=this._delegatedListeners[le];for(let ee=0;eew.includes(qe))){for(let qe in se.delegates)this.off(qe,se.delegates[qe]);return void Q.splice(ee,1)}}}on(le,w,B){if(B===void 0)return super.on(le,w);let Q=this._createDelegatedListener(le,typeof w=="string"?[w]:w,B);this._saveDelegatedListener(le,Q);for(let ee in Q.delegates)this.on(ee,Q.delegates[ee]);return this}once(le,w,B){if(B===void 0)return super.once(le,w);let Q=typeof w=="string"?[w]:w,ee=this._createDelegatedListener(le,Q,B);for(let se in ee.delegates){let qe=ee.delegates[se];ee.delegates[se]=(...je)=>{this._removeDelegatedListener(le,Q,B),qe(...je)}}this._saveDelegatedListener(le,ee);for(let se in ee.delegates)this.once(se,ee.delegates[se]);return this}off(le,w,B){return B===void 0?super.off(le,w):(this._removeDelegatedListener(le,typeof w=="string"?[w]:w,B),this)}queryRenderedFeatures(le,w){if(!this.style)return[];let B,Q=le instanceof a.P||Array.isArray(le),ee=Q?le:[[0,0],[this.transform.width,this.transform.height]];if(w=w||(Q?{}:le)||{},ee instanceof a.P||typeof ee[0]=="number")B=[a.P.convert(ee)];else{let se=a.P.convert(ee[0]),qe=a.P.convert(ee[1]);B=[se,new a.P(qe.x,se.y),qe,new a.P(se.x,qe.y),se]}return this.style.queryRenderedFeatures(B,w,this.transform)}querySourceFeatures(le,w){return this.style.querySourceFeatures(le,w)}setStyle(le,w){return(w=a.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},w)).diff!==!1&&w.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&le?(this._diffStyle(le,w),this):(this._localIdeographFontFamily=w.localIdeographFontFamily,this._updateStyle(le,w))}setTransformRequest(le){return this._requestManager.setTransformRequest(le),this}_getUIString(le){let w=this._locale[le];if(w==null)throw new Error(`Missing UI string '${le}'`);return w}_updateStyle(le,w){if(w.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(le,w));let B=this.style&&w.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!le)),le?(this.style=new Ha(this,w||{}),this.style.setEventedParent(this,{style:this.style}),typeof le=="string"?this.style.loadURL(le,w,B):this.style.loadJSON(le,w,B),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Ha(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(le,w){if(typeof le=="string"){let B=this._requestManager.transformRequest(le,"Style");a.h(B,new AbortController).then(Q=>{this._updateDiff(Q.data,w)}).catch(Q=>{Q&&this.fire(new a.j(Q))})}else typeof le=="object"&&this._updateDiff(le,w)}_updateDiff(le,w){try{this.style.setState(le,w)&&this._update(!0)}catch(B){a.w(`Unable to perform style diff: ${B.message||B.error||B}. Rebuilding the style from scratch.`),this._updateStyle(le,w)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():a.w("There is no style added to the map.")}addSource(le,w){return this._lazyInitEmptyStyle(),this.style.addSource(le,w),this._update(!0)}isSourceLoaded(le){let w=this.style&&this.style.sourceCaches[le];if(w!==void 0)return w.loaded();this.fire(new a.j(new Error(`There is no source with ID '${le}'`)))}setTerrain(le){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),le){let w=this.style.sourceCaches[le.source];if(!w)throw new Error(`cannot load terrain, because there exists no source with ID: ${le.source}`);this.terrain===null&&w.reload();for(let B in this.style._layers){let Q=this.style._layers[B];Q.type==="hillshade"&&Q.source===le.source&&a.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new Xo(this.painter,w,le),this.painter.renderToTexture=new ys(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=B=>{B.dataType==="style"?this.terrain.sourceCache.freeRtt():B.dataType==="source"&&B.tile&&(B.sourceId!==le.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(B.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new a.k("terrain",{terrain:le})),this}getTerrain(){var le,w;return(w=(le=this.terrain)===null||le===void 0?void 0:le.options)!==null&&w!==void 0?w:null}areTilesLoaded(){let le=this.style&&this.style.sourceCaches;for(let w in le){let B=le[w]._tiles;for(let Q in B){let ee=B[Q];if(ee.state!=="loaded"&&ee.state!=="errored")return!1}}return!0}removeSource(le){return this.style.removeSource(le),this._update(!0)}getSource(le){return this.style.getSource(le)}addImage(le,w,B={}){let{pixelRatio:Q=1,sdf:ee=!1,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt}=B;if(this._lazyInitEmptyStyle(),!(w instanceof HTMLImageElement||a.b(w))){if(w.width===void 0||w.height===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:Ot,height:Nt,data:hr}=w,Sr=w;return this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},new Uint8Array(hr)),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0,userImage:Sr}),Sr.onAdd&&Sr.onAdd(this,le),this}}{let{width:Ot,height:Nt,data:hr}=u.getImageData(w);this.style.addImage(le,{data:new a.R({width:Ot,height:Nt},hr),pixelRatio:Q,stretchX:se,stretchY:qe,content:je,textFitWidth:it,textFitHeight:yt,sdf:ee,version:0})}}updateImage(le,w){let B=this.style.getImage(le);if(!B)return this.fire(new a.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let Q=w instanceof HTMLImageElement||a.b(w)?u.getImageData(w):w,{width:ee,height:se,data:qe}=Q;if(ee===void 0||se===void 0)return this.fire(new a.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(ee!==B.data.width||se!==B.data.height)return this.fire(new a.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let je=!(w instanceof HTMLImageElement||a.b(w));return B.data.replace(qe,je),this.style.updateImage(le,B),this}getImage(le){return this.style.getImage(le)}hasImage(le){return le?!!this.style.getImage(le):(this.fire(new a.j(new Error("Missing required image id"))),!1)}removeImage(le){this.style.removeImage(le)}loadImage(le){return p.getImage(this._requestManager.transformRequest(le,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(le,w){return this._lazyInitEmptyStyle(),this.style.addLayer(le,w),this._update(!0)}moveLayer(le,w){return this.style.moveLayer(le,w),this._update(!0)}removeLayer(le){return this.style.removeLayer(le),this._update(!0)}getLayer(le){return this.style.getLayer(le)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(le,w,B){return this.style.setLayerZoomRange(le,w,B),this._update(!0)}setFilter(le,w,B={}){return this.style.setFilter(le,w,B),this._update(!0)}getFilter(le){return this.style.getFilter(le)}setPaintProperty(le,w,B,Q={}){return this.style.setPaintProperty(le,w,B,Q),this._update(!0)}getPaintProperty(le,w){return this.style.getPaintProperty(le,w)}setLayoutProperty(le,w,B,Q={}){return this.style.setLayoutProperty(le,w,B,Q),this._update(!0)}getLayoutProperty(le,w){return this.style.getLayoutProperty(le,w)}setGlyphs(le,w={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(le,w),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(le,w,B={}){return this._lazyInitEmptyStyle(),this.style.addSprite(le,w,B,Q=>{Q||this._update(!0)}),this}removeSprite(le){return this._lazyInitEmptyStyle(),this.style.removeSprite(le),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(le,w={}){return this._lazyInitEmptyStyle(),this.style.setSprite(le,w,B=>{B||this._update(!0)}),this}setLight(le,w={}){return this._lazyInitEmptyStyle(),this.style.setLight(le,w),this._update(!0)}getLight(){return this.style.getLight()}setSky(le){return this._lazyInitEmptyStyle(),this.style.setSky(le),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(le,w){return this.style.setFeatureState(le,w),this._update()}removeFeatureState(le,w){return this.style.removeFeatureState(le,w),this._update()}getFeatureState(le){return this.style.getFeatureState(le)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let le=0,w=0;return this._container&&(le=this._container.clientWidth||400,w=this._container.clientHeight||300),[le,w]}_setupContainer(){let le=this._container;le.classList.add("maplibregl-map");let w=this._canvasContainer=c.create("div","maplibregl-canvas-container",le);this._interactive&&w.classList.add("maplibregl-interactive"),this._canvas=c.create("canvas","maplibregl-canvas",w),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let B=this._containerDimensions(),Q=this._getClampedPixelRatio(B[0],B[1]);this._resizeCanvas(B[0],B[1],Q);let ee=this._controlContainer=c.create("div","maplibregl-control-container",le),se=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(qe=>{se[qe]=c.create("div",`maplibregl-ctrl-${qe} `,ee)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(le,w,B){this._canvas.width=Math.floor(B*le),this._canvas.height=Math.floor(B*w),this._canvas.style.width=`${le}px`,this._canvas.style.height=`${w}px`}_setupPainter(){let le={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},w=null;this._canvas.addEventListener("webglcontextcreationerror",Q=>{w={requestedAttributes:le},Q&&(w.statusMessage=Q.statusMessage,w.type=Q.type)},{once:!0});let B=this._canvas.getContext("webgl2",le)||this._canvas.getContext("webgl",le);if(!B){let Q="Failed to initialize WebGL";throw w?(w.message=Q,new Error(JSON.stringify(w))):new Error(Q)}this.painter=new Lc(B,this.transform),f.testSupport(B)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(le){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||le,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(le){return this._update(),this._renderTaskQueue.add(le)}_cancelRenderFrame(le){this._renderTaskQueue.remove(le)}_render(le){let w=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(le),this._removed)return;let B=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let ee=this.transform.zoom,se=u.now();this.style.zoomHistory.update(ee,se);let qe=new a.z(ee,{now:se,fadeDuration:w,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),je=qe.crossFadingFactor();je===1&&je===this._crossFadingFactor||(B=!0,this._crossFadingFactor=je),this.style.update(qe)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,w,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:w,showPadding:this.showPadding}),this.fire(new a.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,a.bf.mark(a.bg.load),this.fire(new a.k("load"))),this.style&&(this.style.hasTransitions()||B)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let Q=this._sourcesDirty||this._styleDirty||this._placementDirty;return Q||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new a.k("idle")),!this._loaded||this._fullyLoaded||Q||(this._fullyLoaded=!0,a.bf.mark(a.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var le;this._hash&&this._hash.remove();for(let B of this._controls)B.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window!="undefined"&&removeEventListener("online",this._onWindowOnline,!1),p.removeThrottleControl(this._imageQueueHandle),(le=this._resizeObserver)===null||le===void 0||le.disconnect();let w=this.painter.context.gl.getExtension("WEBGL_lose_context");w!=null&&w.loseContext&&w.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),c.remove(this._canvasContainer),c.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),a.bf.clearMetrics(),this._removed=!0,this.fire(new a.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,u.frameAsync(this._frameRequest).then(le=>{a.bf.frame(le),this._frameRequest=null,this._render(le)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(le){this._showTileBoundaries!==le&&(this._showTileBoundaries=le,this._update())}get showPadding(){return!!this._showPadding}set showPadding(le){this._showPadding!==le&&(this._showPadding=le,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(le){this._showCollisionBoxes!==le&&(this._showCollisionBoxes=le,le?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(le){this._showOverdrawInspector!==le&&(this._showOverdrawInspector=le,this._update())}get repaint(){return!!this._repaint}set repaint(le){this._repaint!==le&&(this._repaint=le,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(le){this._vertices=le,this._update()}get version(){return yl}getCameraTargetElevation(){return this.transform.elevation}},i.MapMouseEvent=ru,i.MapTouchEvent=vf,i.MapWheelEvent=md,i.Marker=ac,i.NavigationControl=class{constructor(le){this._updateZoomButtons=()=>{let w=this._map.getZoom(),B=w===this._map.getMaxZoom(),Q=w===this._map.getMinZoom();this._zoomInButton.disabled=B,this._zoomOutButton.disabled=Q,this._zoomInButton.setAttribute("aria-disabled",B.toString()),this._zoomOutButton.setAttribute("aria-disabled",Q.toString())},this._rotateCompassArrow=()=>{let w=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=w},this._setButtonTitle=(w,B)=>{let Q=this._map._getUIString(`NavigationControl.${B}`);w.title=Q,w.setAttribute("aria-label",Q)},this.options=a.e({},ia,le),this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",w=>w.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",w=>this._map.zoomIn({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",w=>this._map.zoomOut({},{originalEvent:w})),c.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",w=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:w}):this._map.resetNorth({},{originalEvent:w})}),this._compassIcon=c.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(le){return this._map=le,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Ka(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){c.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(le,w){let B=c.create("button",le,this._container);return B.type="button",B.addEventListener("click",w),B}},i.Popup=class extends a.E{constructor(le){super(),this.remove=()=>(this._content&&c.remove(this._content),this._container&&(c.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new a.k("close"))),this),this._onMouseUp=w=>{this._update(w.point)},this._onMouseMove=w=>{this._update(w.point)},this._onDrag=w=>{this._update(w.point)},this._update=w=>{var B;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=c.create("div","maplibregl-popup",this._map.getContainer()),this._tip=c.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let je of this.options.className.split(" "))this._container.classList.add(je);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?Ko(this._lngLat,this._flatPos,this._map.transform):(B=this._lngLat)===null||B===void 0?void 0:B.wrap(),this._trackPointer&&!w)return;let Q=this._flatPos=this._pos=this._trackPointer&&w?w:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&w?w:this._map.transform.locationPoint(this._lngLat));let ee=this.options.anchor,se=yc(this.options.offset);if(!ee){let je=this._container.offsetWidth,it=this._container.offsetHeight,yt;yt=Q.y+se.bottom.ythis._map.transform.height-it?["bottom"]:[],Q.xthis._map.transform.width-je/2&&yt.push("right"),ee=yt.length===0?"bottom":yt.join("-")}let qe=Q.add(se[ee]);this.options.subpixelPositioning||(qe=qe.round()),c.setTransform(this._container,`${nu[ee]} translate(${qe.x}px,${qe.y}px)`),Ru(this._container,ee,"popup")},this._onClose=()=>{this.remove()},this.options=a.e(Object.create(eo),le)}addTo(le){return this._map&&this.remove(),this._map=le,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new a.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(le){return this._lngLat=a.N.convert(le),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(le){return this.setDOMContent(document.createTextNode(le))}setHTML(le){let w=document.createDocumentFragment(),B=document.createElement("body"),Q;for(B.innerHTML=le;Q=B.firstChild,Q;)w.appendChild(Q);return this.setDOMContent(w)}getMaxWidth(){var le;return(le=this._container)===null||le===void 0?void 0:le.style.maxWidth}setMaxWidth(le){return this.options.maxWidth=le,this._update(),this}setDOMContent(le){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=c.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(le),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(le){return this._container&&this._container.classList.add(le),this}removeClassName(le){return this._container&&this._container.classList.remove(le),this}setOffset(le){return this.options.offset=le,this._update(),this}toggleClassName(le){if(this._container)return this._container.classList.toggle(le)}setSubpixelPositioning(le){this.options.subpixelPositioning=le}_createCloseButton(){this.options.closeButton&&(this._closeButton=c.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let le=this._container.querySelector(Jc);le&&le.focus()}},i.RasterDEMTileSource=qt,i.RasterTileSource=ct,i.ScaleControl=class{constructor(le){this._onMove=()=>{Dc(this._map,this._container,this.options)},this.setUnit=w=>{this.options.unit=w,Dc(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Du),le)}getDefaultPosition(){return"bottom-left"}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-scale",le.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){c.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},i.ScrollZoomHandler=Ur,i.Style=Ha,i.TerrainControl=class{constructor(le){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=le}onAdd(le){return this._map=le,this._container=c.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=c.create("button","maplibregl-ctrl-terrain",this._container),c.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){c.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},i.TwoFingersTouchPitchHandler=gf,i.TwoFingersTouchRotateHandler=Yc,i.TwoFingersTouchZoomHandler=iu,i.TwoFingersTouchZoomRotateHandler=Ti,i.VectorTileSource=nt,i.VideoSource=kt,i.addSourceType=(le,w)=>a._(void 0,void 0,void 0,function*(){if(xr(le))throw new Error(`A source type called "${le}" already exists.`);((B,Q)=>{Yt[B]=Q})(le,w)}),i.clearPrewarmedResources=function(){let le=ge;le&&(le.isPreloaded()&&le.numActive()===1?(le.release(_e),ge=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},i.getMaxParallelImageRequests=function(){return a.a.MAX_PARALLEL_IMAGE_REQUESTS},i.getRTLTextPluginStatus=function(){return bt().getRTLTextPluginStatus()},i.getVersion=function(){return _c},i.getWorkerCount=function(){return Me.workerCount},i.getWorkerUrl=function(){return a.a.WORKER_URL},i.importScriptInWorkers=function(le){return Ae().broadcast("IS",le)},i.prewarm=function(){Te().acquire(_e)},i.setMaxParallelImageRequests=function(le){a.a.MAX_PARALLEL_IMAGE_REQUESTS=le},i.setRTLTextPlugin=function(le,w){return bt().setRTLTextPlugin(le,w)},i.setWorkerCount=function(le){Me.workerCount=le},i.setWorkerUrl=function(le){a.a.WORKER_URL=le}});var n=e;return n})});var KHe=ye((Z1r,YHe)=>{"use strict";var iw=Mr(),gjt=Pl().sanitizeHTML,mjt=fJ(),WHe=wx();function ZHe(e,t){this.subplot=e,this.uid=e.uid+"-"+t,this.index=t,this.idSource="source-"+this.uid,this.idLayer=WHe.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var ag=ZHe.prototype;ag.update=function(t){this.visible?this.needsNewImage(t)?this.updateImage(t):this.needsNewSource(t)?(this.removeLayer(),this.updateSource(t),this.updateLayer(t)):this.needsNewLayer(t)?this.updateLayer(t):this.updateStyle(t):(this.updateSource(t),this.updateLayer(t)),this.visible=n7(t)};ag.needsNewImage=function(e){var t=this.subplot.map;return t.getSource(this.idSource)&&this.sourceType==="image"&&e.sourcetype==="image"&&(this.source!==e.source||JSON.stringify(this.coordinates)!==JSON.stringify(e.coordinates))};ag.needsNewSource=function(e){return this.sourceType!==e.sourcetype||JSON.stringify(this.source)!==JSON.stringify(e.source)||this.layerType!==e.type};ag.needsNewLayer=function(e){return this.layerType!==e.type||this.below!==this.subplot.belowLookup["layout-"+this.index]};ag.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]};ag.updateImage=function(e){var t=this.subplot.map;t.getSource(this.idSource).updateImage({url:e.source,coordinates:e.coordinates});var r=this.findFollowingMapLayerId(this.lookupBelow());r!==null&&this.subplot.map.moveLayer(this.idLayer,r)};ag.updateSource=function(e){var t=this.subplot.map;if(t.getSource(this.idSource)&&t.removeSource(this.idSource),this.sourceType=e.sourcetype,this.source=e.source,!!n7(e)){var r=yjt(e);t.addSource(this.idSource,r)}};ag.findFollowingMapLayerId=function(e){if(e==="traces")for(var t=this.subplot.getMapLayers(),r=0;r0){for(var r=0;r0}function XHe(e){var t={},r={};switch(e.type){case"circle":iw.extendFlat(r,{"circle-radius":e.circle.radius,"circle-color":e.color,"circle-opacity":e.opacity});break;case"line":iw.extendFlat(r,{"line-width":e.line.width,"line-color":e.color,"line-opacity":e.opacity,"line-dasharray":e.line.dash});break;case"fill":iw.extendFlat(r,{"fill-color":e.color,"fill-outline-color":e.fill.outlinecolor,"fill-opacity":e.opacity});break;case"symbol":var n=e.symbol,i=mjt(n.textposition,n.iconsize);iw.extendFlat(t,{"icon-image":n.icon+"-15","icon-size":n.iconsize/10,"text-field":n.text,"text-size":n.textfont.size,"text-anchor":i.anchor,"text-offset":i.offset,"symbol-placement":n.placement}),iw.extendFlat(r,{"icon-color":e.color,"text-color":n.textfont.color,"text-opacity":e.opacity});break;case"raster":iw.extendFlat(r,{"raster-fade-duration":0,"raster-opacity":e.opacity});break}return{layout:t,paint:r}}function yjt(e){var t=e.sourcetype,r=e.source,n={type:t},i;return t==="geojson"?i="data":t==="vector"?i=typeof r=="string"?"url":"tiles":t==="raster"?(i="tiles",n.tileSize=256):t==="image"&&(i="url",n.coordinates=e.coordinates),n[i]=r,e.sourceattribution&&(n.attribution=gjt(e.sourceattribution)),n}YHe.exports=function(t,r,n){var i=new ZHe(t,r);return i.update(n),i}});var nGe=ye((X1r,iGe)=>{"use strict";var mJ=jHe(),yJ=Mr(),QHe=nx(),JHe=ba(),_jt=Qa(),xjt=gv(),a7=Nc(),eGe=Sg(),bjt=eGe.drawMode,wjt=eGe.selectMode,Tjt=wf().prepSelect,Ajt=wf().clearOutline,Sjt=wf().clearSelectionsCache,Mjt=wf().selectOnClick,nw=wx(),Ejt=KHe();function tGe(e,t){this.id=t,this.gd=e;var r=e._fullLayout,n=e._context;this.container=r._glcontainer.node(),this.isStatic=n.staticPlot,this.uid=r._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(r),this.map=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var Sh=tGe.prototype;Sh.plot=function(e,t,r){var n=this,i;n.map?i=new Promise(function(a,o){n.updateMap(e,t,a,o)}):i=new Promise(function(a,o){n.createMap(e,t,a,o)}),r.push(i)};Sh.createMap=function(e,t,r,n){var i=this,a=t[i.id],o=i.styleObj=rGe(a.style),s=a.bounds,l=s?[[s.west,s.south],[s.east,s.north]]:null,u=i.map=new mJ.Map({container:i.div,style:o.style,center:_J(a.center),zoom:a.zoom,bearing:a.bearing,pitch:a.pitch,maxBounds:l,interactive:!i.isStatic,preserveDrawingBuffer:i.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new mJ.AttributionControl({compact:!0})),c={};u.on("styleimagemissing",function(h){var d=h.id;if(!c[d]&&d.includes("-15")){c[d]=!0;var v=new Image(15,15);v.onload=function(){u.addImage(d,v)},v.crossOrigin="Anonymous",v.src="https://unpkg.com/maki@2.1.0/icons/"+d+".svg"}}),u.setTransformRequest(function(h){return h=h.replace("https://fonts.openmaptiles.org/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),h=h.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular","https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"),{url:h}}),u._canvas.style.left="0px",u._canvas.style.top="0px",i.rejectOnError(n),i.isStatic||i.initFx(e,t);var f=[];f.push(new Promise(function(h){u.once("load",h)})),f=f.concat(QHe.fetchTraceGeoData(e)),Promise.all(f).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.updateMap=function(e,t,r,n){var i=this,a=i.map,o=t[this.id];i.rejectOnError(n);var s=[],l=rGe(o.style);JSON.stringify(i.styleObj)!==JSON.stringify(l)&&(i.styleObj=l,a.setStyle(l.style),i.traceHash={},s.push(new Promise(function(u){a.once("styledata",u)}))),s=s.concat(QHe.fetchTraceGeoData(e)),Promise.all(s).then(function(){i.fillBelowLookup(e,t),i.updateData(e),i.updateLayout(t),i.resolveOnRender(r)}).catch(n)};Sh.fillBelowLookup=function(e,t){var r=t[this.id],n=r.layers,i,a,o=this.belowLookup={},s=!1;for(i=0;i1)for(i=0;i-1&&Mjt(l.originalEvent,n,[r.xaxis],[r.yaxis],r.id,s),u.indexOf("event")>-1&&a7.click(n,l.originalEvent)}}};Sh.updateFx=function(e){var t=this,r=t.map,n=t.gd;if(t.isStatic)return;function i(l){var u=t.map.unproject(l);return[u.lng,u.lat]}var a=e.dragmode,o;o=function(l,u){if(u.isRect){var c=l.range={};c[t.id]=[i([u.xmin,u.ymin]),i([u.xmax,u.ymax])]}else{var f=l.lassoPoints={};f[t.id]=u.map(i)}};var s=t.dragOptions;t.dragOptions=yJ.extendDeep(s||{},{dragmode:e.dragmode,element:t.div,gd:n,plotinfo:{id:t.id,domain:e[t.id].domain,xaxis:t.xaxis,yaxis:t.yaxis,fillRangeItems:o},xaxes:[t.xaxis],yaxes:[t.yaxis],subplot:t.id}),r.off("click",t.onClickInPanHandler),wjt(a)||bjt(a)?(r.dragPan.disable(),r.on("zoomstart",t.clearOutline),t.dragOptions.prepFn=function(l,u,c){Tjt(l,u,c,t.dragOptions,a)},xjt.init(t.dragOptions)):(r.dragPan.enable(),r.off("zoomstart",t.clearOutline),t.div.onmousedown=null,t.div.ontouchstart=null,t.div.removeEventListener("touchstart",t.div._ontouchstart),t.onClickInPanHandler=t.onClickInPanFn(t.dragOptions),r.on("click",t.onClickInPanHandler))};Sh.updateFramework=function(e){var t=e[this.id].domain,r=e._size,n=this.div.style;n.width=r.w*(t.x[1]-t.x[0])+"px",n.height=r.h*(t.y[1]-t.y[0])+"px",n.left=r.l+t.x[0]*r.w+"px",n.top=r.t+(1-t.y[1])*r.h+"px",this.xaxis._offset=r.l+t.x[0]*r.w,this.xaxis._length=r.w*(t.x[1]-t.x[0]),this.yaxis._offset=r.t+(1-t.y[1])*r.h,this.yaxis._length=r.h*(t.y[1]-t.y[0])};Sh.updateLayers=function(e){var t=e[this.id],r=t.layers,n=this.layerList,i;if(r.length!==n.length){for(i=0;i{"use strict";var xJ=Mr(),Cjt=C_(),Ljt=Zd(),aGe=Ok();oGe.exports=function(t,r,n){Cjt(t,r,n,{type:"map",attributes:aGe,handleDefaults:Pjt,partition:"y"})};function Pjt(e,t,r){r("style"),r("center.lon"),r("center.lat"),r("zoom"),r("bearing"),r("pitch");var n=r("bounds.west"),i=r("bounds.east"),a=r("bounds.south"),o=r("bounds.north");(n===void 0||i===void 0||a===void 0||o===void 0)&&delete t.bounds,Ljt(e,t,{name:"layers",handleItemDefaults:Ijt}),t._input=e}function Ijt(e,t){function r(l,u){return xJ.coerce(e,t,aGe.layers,l,u)}var n=r("visible");if(n){var i=r("sourcetype"),a=i==="raster"||i==="image";r("source"),r("sourceattribution"),i==="vector"&&r("sourcelayer"),i==="image"&&r("coordinates");var o;a&&(o="raster");var s=r("type",o);a&&s!=="raster"&&(s=t.type="raster",xJ.log("Source types *raster* and *image* must drawn *raster* layer type.")),r("below"),r("color"),r("opacity"),r("minzoom"),r("maxzoom"),s==="circle"&&r("circle.radius"),s==="line"&&(r("line.width"),r("line.dash")),s==="fill"&&r("fill.outlinecolor"),s==="symbol"&&(r("symbol.icon"),r("symbol.iconsize"),r("symbol.text"),xJ.coerceFont(r,"symbol.textfont",void 0,{noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}),r("symbol.textposition"),r("symbol.placement"))}}});var s7=ye(l0=>{"use strict";var o7=Mr(),lGe=o7.strTranslate,Rjt=o7.strScale,Djt=kd().getSubplotCalcData,zjt=Zp(),Fjt=xa(),uGe=ao(),qjt=Pl(),Ojt=nGe(),Tx="map";l0.name=Tx;l0.attr="subplot";l0.idRoot=Tx;l0.idRegex=l0.attrRegex=o7.counterRegex(Tx);l0.attributes={subplot:{valType:"subplotid",dflt:"map",editType:"calc"}};l0.layoutAttributes=Ok();l0.supplyLayoutDefaults=sGe();l0.plot=function(t){for(var r=t._fullLayout,n=t.calcdata,i=r._subplots[Tx],a=0;ax/2){var b=f.split("|").join("
");d.text(b).attr("data-unformatted",b).call(qjt.convertToTspans,e),v=uGe.bBox(d.node())}d.attr("transform",lGe(-3,-v.height+8)),h.insert("rect",".static-attribution").attr({x:-v.width-6,y:-v.height-3,width:v.width+6,height:v.height+3,fill:"rgba(255, 255, 255, 0.75)"});var p=1;v.width+6>x&&(p=x/(v.width+6));var E=[n.l+n.w*o.x[1],n.t+n.h*(1-o.y[0])];h.attr("transform",lGe(E[0],E[1])+Rjt(p))}};l0.updateFx=function(e){for(var t=e._fullLayout,r=t._subplots[Tx],n=0;n{"use strict";cGe.exports={attributes:$F(),supplyDefaults:THe(),colorbar:Kd(),formatLabels:cJ(),calc:lz(),plot:qHe(),hoverPoints:i7().hoverPoints,eventData:UHe(),selectPoints:HHe(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.update(t)}},moduleType:"trace",name:"scattermap",basePlotModule:s7(),categories:["map","gl","symbols","showLegend","scatter-like"],meta:{}}});var dGe=ye(($1r,hGe)=>{"use strict";hGe.exports=fGe()});var bJ=ye((Q1r,vGe)=>{"use strict";var d1=K5(),Bjt=Jl(),Njt=Wo().hovertemplateAttrs,Ujt=vl(),Ax=no().extendFlat;vGe.exports=Ax({locations:{valType:"data_array",editType:"calc"},z:{valType:"data_array",editType:"calc"},geojson:{valType:"any",editType:"calc"},featureidkey:Ax({},d1.featureidkey,{}),below:{valType:"string",editType:"plot"},text:d1.text,hovertext:d1.hovertext,marker:{line:{color:Ax({},d1.marker.line.color,{editType:"plot"}),width:Ax({},d1.marker.line.width,{editType:"plot"}),editType:"calc"},opacity:Ax({},d1.marker.opacity,{editType:"plot"}),editType:"calc"},selected:{marker:{opacity:Ax({},d1.selected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},unselected:{marker:{opacity:Ax({},d1.unselected.marker.opacity,{editType:"plot"}),editType:"plot"},editType:"plot"},hoverinfo:d1.hoverinfo,hovertemplate:Njt({},{keys:["properties"]}),showlegend:Ax({},Ujt.showlegend,{dflt:!1})},Bjt("",{cLetter:"z",editTypeOverride:"calc"}))});var gGe=ye((e_r,pGe)=>{"use strict";var Vk=Mr(),Vjt=Uh(),Hjt=bJ();pGe.exports=function(t,r,n,i){function a(c,f){return Vk.coerce(t,r,Hjt,c,f)}var o=a("locations"),s=a("z"),l=a("geojson");if(!Vk.isArrayOrTypedArray(o)||!o.length||!Vk.isArrayOrTypedArray(s)||!s.length||!(typeof l=="string"&&l!==""||Vk.isPlainObject(l))){r.visible=!1;return}a("featureidkey"),r._length=Math.min(o.length,s.length),a("below"),a("text"),a("hovertext"),a("hovertemplate");var u=a("marker.line.width");u&&a("marker.line.color"),a("marker.opacity"),Vjt(t,r,i,a,{prefix:"",cLetter:"z"}),Vk.coerceSelectionMarkerOpacity(r,a)}});var wJ=ye((t_r,_Ge)=>{"use strict";var Gjt=uo(),v1=Mr(),jjt=Mu(),Wjt=ao(),Zjt=rx().makeBlank,mGe=nx();function Xjt(e){var t=e[0].trace,r=t.visible===!0&&t._length!==0,n={layout:{visibility:"none"},paint:{}},i={layout:{visibility:"none"},paint:{}},a=t._opts={fill:n,line:i,geojson:Zjt()};if(!r)return a;var o=mGe.extractTraceFeature(e);if(!o)return a;var s=jjt.makeColorScaleFuncFromTrace(t),l=t.marker,u=l.line||{},c;v1.isArrayOrTypedArray(l.opacity)&&(c=function(E){var k=E.mo;return Gjt(k)?+v1.constrain(k,0,1):0});var f;v1.isArrayOrTypedArray(u.color)&&(f=function(E){return E.mlc});var h;v1.isArrayOrTypedArray(u.width)&&(h=function(E){return E.mlw});for(var d=0;d{"use strict";var bGe=wJ().convert,Yjt=wJ().convertOnSelect,xGe=wx().traceLayerPrefix;function wGe(e,t){this.type="choroplethmap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["fill",xGe+t+"-fill"],["line",xGe+t+"-line"]],this.below=null}var MA=wGe.prototype;MA.update=function(e){this._update(bGe(e)),e[0].trace._glTrace=this};MA.updateOnSelect=function(e){this._update(Yjt(e))};MA._update=function(e){var t=this.subplot,r=this.layerList,n=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(e.geojson),n!==this.below&&(this._removeLayers(),this._addLayers(e,n),this.below=n);for(var i=0;i=0;r--)e.removeLayer(t[r][1])};MA.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};TGe.exports=function(t,r){var n=r[0].trace,i=new wGe(t,n.uid),a=i.sourceId,o=bGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),r[0].trace._glTrace=i,i}});var MGe=ye((i_r,SGe)=>{"use strict";SGe.exports={attributes:bJ(),supplyDefaults:gGe(),colorbar:M_(),calc:Lz(),plot:AGe(),hoverPoints:Iz(),eventData:Rz(),selectPoints:Dz(),styleOnSelect:function(e,t){if(t){var r=t[0].trace;r._glTrace.updateOnSelect(t)}},getBelow:function(e,t){for(var r=t.getMapLayers(),n=r.length-2;n>=0;n--){var i=r[n].id;if(typeof i=="string"&&i.indexOf("water")===0){for(var a=n+1;a{"use strict";EGe.exports=MGe()});var AJ=ye((a_r,LGe)=>{"use strict";var Kjt=Jl(),Jjt=Wo().hovertemplateAttrs,CGe=vl(),l7=$F(),TJ=no().extendFlat;LGe.exports=TJ({lon:l7.lon,lat:l7.lat,z:{valType:"data_array",editType:"calc"},radius:{valType:"number",editType:"plot",arrayOk:!0,min:1,dflt:30},below:{valType:"string",editType:"plot"},text:l7.text,hovertext:l7.hovertext,hoverinfo:TJ({},CGe.hoverinfo,{flags:["lon","lat","z","text","name"]}),hovertemplate:Jjt(),showlegend:TJ({},CGe.showlegend,{dflt:!1})},Kjt("",{cLetter:"z",editTypeOverride:"calc"}))});var IGe=ye((o_r,PGe)=>{"use strict";var $jt=Mr(),Qjt=Uh(),eWt=AJ();PGe.exports=function(t,r,n,i){function a(u,c){return $jt.coerce(t,r,eWt,u,c)}var o=a("lon")||[],s=a("lat")||[],l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("z"),a("radius"),a("below"),a("text"),a("hovertext"),a("hovertemplate"),Qjt(t,r,i,a,{prefix:"",cLetter:"z"})}});var zGe=ye((s_r,DGe)=>{"use strict";var SJ=uo(),tWt=Mr().isArrayOrTypedArray,MJ=es().BADNUM,rWt=zv(),RGe=Mr()._;DGe.exports=function(t,r){for(var n=r._length,i=new Array(n),a=r.z,o=tWt(a)&&a.length,s=0;s{"use strict";var iWt=uo(),EJ=Mr(),FGe=va(),qGe=Mu(),OGe=es().BADNUM,nWt=rx().makeBlank;BGe.exports=function(t){var r=t[0].trace,n=r.visible===!0&&r._length!==0,i={layout:{visibility:"none"},paint:{}},a=r._opts={heatmap:i,geojson:nWt()};if(!n)return a;var o=[],s,l=r.z,u=r.radius,c=EJ.isArrayOrTypedArray(l)&&l.length,f=EJ.isArrayOrTypedArray(u);for(s=0;s0?+u[s]:0),o.push({type:"Feature",geometry:{type:"Point",coordinates:d},properties:v})}}var b=qGe.extractOpts(r),p=b.reversescale?qGe.flipScale(b.colorscale):b.colorscale,E=p[0][1],k=FGe.opacity(E)<1?E:FGe.addOpacity(E,0),A=["interpolate",["linear"],["heatmap-density"],0,k];for(s=1;s{"use strict";var UGe=NGe(),aWt=wx().traceLayerPrefix;function VGe(e,t){this.type="densitymap",this.subplot=e,this.uid=t,this.sourceId="source-"+t,this.layerList=[["heatmap",aWt+t+"-heatmap"]],this.below=null}var u7=VGe.prototype;u7.update=function(e){var t=this.subplot,r=this.layerList,n=UGe(e),i=t.belowLookup["trace-"+this.uid];t.map.getSource(this.sourceId).setData(n.geojson),i!==this.below&&(this._removeLayers(),this._addLayers(n,i),this.below=i);for(var a=0;a=0;r--)e.removeLayer(t[r][1])};u7.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)};HGe.exports=function(t,r){var n=r[0].trace,i=new VGe(t,n.uid),a=i.sourceId,o=UGe(r),s=i.below=t.belowLookup["trace-"+n.uid];return t.map.addSource(a,{type:"geojson",data:o.geojson}),i._addLayers(o,s),i}});var WGe=ye((c_r,jGe)=>{"use strict";var oWt=Qa(),sWt=i7().hoverPoints,lWt=i7().getExtraText;jGe.exports=function(t,r,n){var i=sWt(t,r,n);if(i){var a=i[0],o=a.cd,s=o[0].trace,l=o[a.index];if(delete a.color,"z"in l){var u=a.subplot.mockAxis;a.z=l.z,a.zLabel=oWt.tickText(u,u.c2l(l.z),"hover").text}return a.extraText=lWt(s,l,o[0].t.labels),[a]}}});var XGe=ye((f_r,ZGe)=>{"use strict";ZGe.exports=function(t,r){return t.lon=r.lon,t.lat=r.lat,t.z=r.z,t}});var KGe=ye((h_r,YGe)=>{"use strict";YGe.exports={attributes:AJ(),supplyDefaults:IGe(),colorbar:M_(),formatLabels:cJ(),calc:zGe(),plot:GGe(),hoverPoints:WGe(),eventData:XGe(),getBelow:function(e,t){for(var r=t.getMapLayers(),n=0;n{"use strict";JGe.exports=KGe()});var CJ=ye((p_r,rje)=>{"use strict";var uWt=Su(),cWt=vl(),QGe=dh(),kJ=i3(),fWt=Ju().attributes,eje=Wo().hovertemplateAttrs,hWt=Jl(),dWt=Vs().templatedArray,vWt=Oc().descriptionOnlyNumbers,tje=no().extendFlat,pWt=Bu().overrideAll,v_r=rje.exports=pWt({hoverinfo:tje({},cWt.hoverinfo,{flags:[],arrayOk:!1}),hoverlabel:kJ.hoverlabel,domain:fWt({name:"sankey",trace:!0}),orientation:{valType:"enumerated",values:["v","h"],dflt:"h"},valueformat:{valType:"string",dflt:".3s",description:vWt("value")},valuesuffix:{valType:"string",dflt:""},arrangement:{valType:"enumerated",values:["snap","perpendicular","freeform","fixed"],dflt:"snap"},textfont:uWt({autoShadowDflt:!0}),customdata:void 0,node:{label:{valType:"data_array",dflt:[]},groups:{valType:"info_array",impliedEdits:{x:[],y:[]},dimensions:2,freeLength:!0,dflt:[],items:{valType:"number",editType:"calc"}},x:{valType:"data_array",dflt:[]},y:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:QGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:.5,arrayOk:!0}},pad:{valType:"number",arrayOk:!1,min:0,dflt:20},thickness:{valType:"number",arrayOk:!1,min:1,dflt:20},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:kJ.hoverlabel,hovertemplate:eje({},{keys:["value","label"]}),align:{valType:"enumerated",values:["justify","left","right","center"],dflt:"justify"}},link:{arrowlen:{valType:"number",min:0,dflt:0},label:{valType:"data_array",dflt:[]},color:{valType:"color",arrayOk:!0},hovercolor:{valType:"color",arrayOk:!0},customdata:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:QGe.defaultLine,arrayOk:!0},width:{valType:"number",min:0,dflt:0,arrayOk:!0}},source:{valType:"data_array",dflt:[]},target:{valType:"data_array",dflt:[]},value:{valType:"data_array",dflt:[]},hoverinfo:{valType:"enumerated",values:["all","none","skip"],dflt:"all"},hoverlabel:kJ.hoverlabel,hovertemplate:eje({},{keys:["value","label"]}),colorscales:dWt("concentrationscales",{editType:"calc",label:{valType:"string",editType:"calc",dflt:""},cmax:{valType:"number",editType:"calc",dflt:1},cmin:{valType:"number",editType:"calc",dflt:0},colorscale:tje(hWt().colorscale,{dflt:[[0,"white"],[1,"black"]]})})}},"calc","nested")});var sje=ye((g_r,oje)=>{"use strict";var EA=Mr(),c7=CJ(),gWt=va(),ije=id(),mWt=Ju().defaults,nje=oM(),aje=Vs(),yWt=Zd();oje.exports=function(t,r,n,i){function a(A,L){return EA.coerce(t,r,c7,A,L)}var o=EA.extendDeep(i.hoverlabel,t.hoverlabel),s=t.node,l=aje.newContainer(r,"node");function u(A,L){return EA.coerce(s,l,c7.node,A,L)}u("label"),u("groups"),u("x"),u("y"),u("pad"),u("thickness"),u("line.color"),u("line.width"),u("hoverinfo",t.hoverinfo),nje(s,l,u,o),u("hovertemplate"),u("align");var c=i.colorway,f=function(A){return c[A%c.length]};u("color",l.label.map(function(A,L){return gWt.addOpacity(f(L),.8)})),u("customdata");var h=t.link||{},d=aje.newContainer(r,"link");function v(A,L){return EA.coerce(h,d,c7.link,A,L)}v("label"),v("arrowlen"),v("source"),v("target"),v("value"),v("line.color"),v("line.width"),v("hoverinfo",t.hoverinfo),nje(h,d,v,o),v("hovertemplate");var x=ije(i.paper_bgcolor).getLuminance()<.333,b=x?"rgba(255, 255, 255, 0.6)":"rgba(0, 0, 0, 0.2)",p=v("color",b);function E(A){var L=ije(A);if(!L.isValid())return A;var _=L.getAlpha();return _<=.8?L.setAlpha(_+.2):L=x?L.brighten():L.darken(),L.toRgbString()}v("hovercolor",Array.isArray(p)?p.map(E):E(p)),v("customdata"),yWt(h,d,{name:"colorscales",handleItemDefaults:_Wt}),mWt(r,i,a),a("orientation"),a("valueformat"),a("valuesuffix");var k;l.x.length&&l.y.length&&(k="freeform"),a("arrangement",k),EA.coerceFont(a,"textfont",i.font,{autoShadowDflt:!0}),r._length=null};function _Wt(e,t){function r(n,i){return EA.coerce(e,t,c7.link.colorscales,n,i)}r("label"),r("cmin"),r("cmax"),r("colorscale")}});var LJ=ye((m_r,lje)=>{"use strict";lje.exports=xWt;function xWt(e){for(var t=e.length,r=new Array(t),n=new Array(t),i=new Array(t),a=new Array(t),o=new Array(t),s=new Array(t),l=0;l0;){b=E[E.length-1];var k=e[b];if(a[b]=0&&s[b].push(o[L])}a[b]=A}else{if(n[b]===r[b]){for(var _=[],C=[],M=0,A=p.length-1;A>=0;--A){var g=p[A];if(i[g]=!1,_.push(g),C.push(s[g]),M+=s[g].length,o[g]=c.length,g===b){p.length=A;break}}c.push(_);for(var P=new Array(M),A=0;A{"use strict";var bWt=LJ(),kA=Mr(),wWt=Km().wrap,Hk=kA.isArrayOrTypedArray,uje=kA.isIndex,cje=Mu();function TWt(e){var t=e.node,r=e.link,n=[],i=Hk(r.color),a=Hk(r.hovercolor),o=Hk(r.customdata),s={},l={},u=r.colorscales.length,c;for(c=0;cv&&(v=r.source[c]),r.target[c]>v&&(v=r.target[c]);var x=v+1;e.node._count=x;var b,p=e.node.groups,E={};for(c=0;c0&&uje(M,x)&&uje(g,x)&&!(E.hasOwnProperty(M)&&E.hasOwnProperty(g)&&E[M]===E[g])){E.hasOwnProperty(g)&&(g=E[g]),E.hasOwnProperty(M)&&(M=E[M]),M=+M,g=+g,s[M]=s[g]=!0;var P="";r.label&&r.label[c]&&(P=r.label[c]);var T=null;P&&l.hasOwnProperty(P)&&(T=l[P]),n.push({pointNumber:c,label:P,color:i?r.color[c]:r.color,hovercolor:a?r.hovercolor[c]:r.hovercolor,customdata:o?r.customdata[c]:r.customdata,concentrationscale:T,source:M,target:g,value:+C}),_.source.push(M),_.target.push(g)}}var F=x+p.length,q=Hk(t.color),V=Hk(t.customdata),H=[];for(c=0;cx-1,childrenNodes:[],pointNumber:c,label:X,color:q?t.color[c]:t.color,customdata:V?t.customdata[c]:t.customdata})}var G=!1;return AWt(F,_.source,_.target)&&(G=!0),{circular:G,links:n,nodes:H,groups:p,groupLookup:E}}function AWt(e,t,r){for(var n=kA.init2dArray(e,0),i=0;i1})}fje.exports=function(t,r){var n=TWt(r);return wWt({circular:n.circular,_nodes:n.nodes,_links:n.links,_groups:n.groups,_groupLookup:n.groupLookup})}});var vje=ye((f7,dje)=>{(function(e,t){typeof f7=="object"&&typeof dje!="undefined"?t(f7):(e=e||self,t(e.d3=e.d3||{}))})(f7,function(e){"use strict";function t(C){var M=+this._x.call(null,C),g=+this._y.call(null,C);return r(this.cover(M,g),M,g,C)}function r(C,M,g,P){if(isNaN(M)||isNaN(g))return C;var T,F=C._root,q={data:P},V=C._x0,H=C._y0,X=C._x1,G=C._y1,N,W,re,ae,_e,Me,ke,ge;if(!F)return C._root=q,C;for(;F.length;)if((_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=g>=(W=(H+G)/2))?H=W:G=W,T=F,!(F=F[ke=Me<<1|_e]))return T[ke]=q,C;if(re=+C._x.call(null,F.data),ae=+C._y.call(null,F.data),M===re&&g===ae)return q.next=F,T?T[ke]=q:C._root=q,C;do T=T?T[ke]=new Array(4):C._root=new Array(4),(_e=M>=(N=(V+X)/2))?V=N:X=N,(Me=g>=(W=(H+G)/2))?H=W:G=W;while((ke=Me<<1|_e)===(ge=(ae>=W)<<1|re>=N));return T[ge]=F,T[ke]=q,C}function n(C){var M,g,P=C.length,T,F,q=new Array(P),V=new Array(P),H=1/0,X=1/0,G=-1/0,N=-1/0;for(g=0;gG&&(G=T),FN&&(N=F));if(H>G||X>N)return this;for(this.cover(H,X).cover(G,N),g=0;gC||C>=T||P>M||M>=F;)switch(X=(MG||(V=ae.y0)>N||(H=ae.x1)=ke)<<1|C>=Me)&&(ae=W[W.length-1],W[W.length-1]=W[W.length-1-_e],W[W.length-1-_e]=ae)}else{var ge=C-+this._x.call(null,re.data),ie=M-+this._y.call(null,re.data),Te=ge*ge+ie*ie;if(Te=(W=(q+H)/2))?q=W:H=W,(_e=N>=(re=(V+X)/2))?V=re:X=re,M=g,!(g=g[Me=_e<<1|ae]))return this;if(!g.length)break;(M[Me+1&3]||M[Me+2&3]||M[Me+3&3])&&(P=M,ke=Me)}for(;g.data!==C;)if(T=g,!(g=g.next))return this;return(F=g.next)&&delete g.next,T?(F?T.next=F:delete T.next,this):M?(F?M[Me]=F:delete M[Me],(g=M[0]||M[1]||M[2]||M[3])&&g===(M[3]||M[2]||M[1]||M[0])&&!g.length&&(P?P[ke]=g:this._root=g),this):(this._root=F,this)}function c(C){for(var M=0,g=C.length;M{(function(e,t){t(typeof h7=="object"&&typeof pje!="undefined"?h7:e.d3=e.d3||{})})(h7,function(e){"use strict";var t="$";function r(){}r.prototype=n.prototype={constructor:r,has:function(x){return t+x in this},get:function(x){return this[t+x]},set:function(x,b){return this[t+x]=b,this},remove:function(x){var b=t+x;return b in this&&delete this[b]},clear:function(){for(var x in this)x[0]===t&&delete this[x]},keys:function(){var x=[];for(var b in this)b[0]===t&&x.push(b.slice(1));return x},values:function(){var x=[];for(var b in this)b[0]===t&&x.push(this[b]);return x},entries:function(){var x=[];for(var b in this)b[0]===t&&x.push({key:b.slice(1),value:this[b]});return x},size:function(){var x=0;for(var b in this)b[0]===t&&++x;return x},empty:function(){for(var x in this)if(x[0]===t)return!1;return!0},each:function(x){for(var b in this)b[0]===t&&x(this[b],b.slice(1),this)}};function n(x,b){var p=new r;if(x instanceof r)x.each(function(_,C){p.set(C,_)});else if(Array.isArray(x)){var E=-1,k=x.length,A;if(b==null)for(;++E=x.length)return p!=null&&_.sort(p),E!=null?E(_):_;for(var P=-1,T=_.length,F=x[C++],q,V,H=n(),X,G=M();++Px.length)return _;var M,g=b[C-1];return E!=null&&C>=x.length?M=_.entries():(M=[],_.each(function(P,T){M.push({key:T,values:L(P,C)})})),g!=null?M.sort(function(P,T){return g(P.key,T.key)}):M}return k={object:function(_){return A(_,0,a,o)},map:function(_){return A(_,0,s,l)},entries:function(_){return L(A(_,0,s,l),0)},key:function(_){return x.push(_),k},sortKeys:function(_){return b[x.length-1]=_,k},sortValues:function(_){return p=_,k},rollup:function(_){return E=_,k}}}function a(){return{}}function o(x,b,p){x[b]=p}function s(){return n()}function l(x,b,p){x.set(b,p)}function u(){}var c=n.prototype;u.prototype=f.prototype={constructor:u,has:c.has,add:function(x){return x+="",this[t+x]=x,this},remove:c.remove,clear:c.clear,values:c.keys,size:c.size,empty:c.empty,each:c.each};function f(x,b){var p=new u;if(x instanceof u)x.each(function(A){p.add(A)});else if(x){var E=-1,k=x.length;if(b==null)for(;++E{(function(e,t){typeof v7=="object"&&typeof gje!="undefined"?t(v7):(e=e||self,t(e.d3=e.d3||{}))})(v7,function(e){"use strict";var t={value:function(){}};function r(){for(var s=0,l=arguments.length,u={},c;s=0&&(c=u.slice(f+1),u=u.slice(0,f)),u&&!l.hasOwnProperty(u))throw new Error("unknown type: "+u);return{type:u,name:c}})}n.prototype=r.prototype={constructor:n,on:function(s,l){var u=this._,c=i(s+"",u),f,h=-1,d=c.length;if(arguments.length<2){for(;++h0)for(var u=new Array(f),c=0,f,h;c{(function(e,t){typeof p7=="object"&&typeof yje!="undefined"?t(p7):(e=e||self,t(e.d3=e.d3||{}))})(p7,function(e){"use strict";var t=0,r=0,n=0,i=1e3,a,o,s=0,l=0,u=0,c=typeof performance=="object"&&performance.now?performance:Date,f=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(C){setTimeout(C,17)};function h(){return l||(f(d),l=c.now()+u)}function d(){l=0}function v(){this._call=this._time=this._next=null}v.prototype=x.prototype={constructor:v,restart:function(C,M,g){if(typeof C!="function")throw new TypeError("callback is not a function");g=(g==null?h():+g)+(M==null?0:+M),!this._next&&o!==this&&(o?o._next=this:a=this,o=this),this._call=C,this._time=g,A()},stop:function(){this._call&&(this._call=null,this._time=1/0,A())}};function x(C,M,g){var P=new v;return P.restart(C,M,g),P}function b(){h(),++t;for(var C=a,M;C;)(M=l-C._time)>=0&&C._call.call(null,M),C=C._next;--t}function p(){l=(s=c.now())+u,t=r=0;try{b()}finally{t=0,k(),l=0}}function E(){var C=c.now(),M=C-s;M>i&&(u-=M,s=C)}function k(){for(var C,M=a,g,P=1/0;M;)M._call?(P>M._time&&(P=M._time),C=M,M=M._next):(g=M._next,M._next=null,M=C?C._next=g:a=g);o=C,A(P)}function A(C){if(!t){r&&(r=clearTimeout(r));var M=C-l;M>24?(C<1/0&&(r=setTimeout(p,C-c.now()-u)),n&&(n=clearInterval(n))):(n||(s=c.now(),n=setInterval(E,i)),t=1,f(p))}}function L(C,M,g){var P=new v;return M=M==null?0:+M,P.restart(function(T){P.stop(),C(T+M)},M,g),P}function _(C,M,g){var P=new v,T=M;return M==null?(P.restart(C,M,g),P):(M=+M,g=g==null?h():+g,P.restart(function F(q){q+=T,P.restart(F,T+=M,g),C(q)},M,g),P)}e.interval=_,e.now=h,e.timeout=L,e.timer=x,e.timerFlush=b,Object.defineProperty(e,"__esModule",{value:!0})})});var bje=ye((g7,xje)=>{(function(e,t){typeof g7=="object"&&typeof xje!="undefined"?t(g7,vje(),d7(),mje(),_je()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,e.d3)})(g7,function(e,t,r,n,i){"use strict";function a(C,M){var g;C==null&&(C=0),M==null&&(M=0);function P(){var T,F=g.length,q,V=0,H=0;for(T=0;TN.index){var Re=W-ze.x-ze.vx,ce=re-ze.y-ze.vy,Ge=Re*Re+ce*ce;GeW+me||Eere+me||AeH.r&&(H.r=H[X].r)}function V(){if(M){var H,X=M.length,G;for(g=new Array(X),H=0;H1?(_e==null?V.remove(ae):V.set(ae,re(_e)),M):V.get(ae)},find:function(ae,_e,Me){var ke=0,ge=C.length,ie,Te,Ee,Ae,ze;for(Me==null?Me=1/0:Me*=Me,ke=0;ke1?(X.on(ae,_e),M):X.on(ae)}}}function k(){var C,M,g,P=o(-30),T,F=1,q=1/0,V=.81;function H(W){var re,ae=C.length,_e=t.quadtree(C,v,x).visitAfter(G);for(g=W,re=0;re=q)return;(W.data!==M||W.next)&&(Me===0&&(Me=s(),ie+=Me*Me),ke===0&&(ke=s(),ie+=ke*ke),ie{(function(e,t){typeof m7=="object"&&typeof wje!="undefined"?t(m7):(e=e||self,t(e.d3=e.d3||{}))})(m7,function(e){"use strict";var t=Math.PI,r=2*t,n=1e-6,i=r-n;function a(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function o(){return new a}a.prototype=o.prototype={constructor:a,moveTo:function(s,l){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(s,l){this._+="L"+(this._x1=+s)+","+(this._y1=+l)},quadraticCurveTo:function(s,l,u,c){this._+="Q"+ +s+","+ +l+","+(this._x1=+u)+","+(this._y1=+c)},bezierCurveTo:function(s,l,u,c,f,h){this._+="C"+ +s+","+ +l+","+ +u+","+ +c+","+(this._x1=+f)+","+(this._y1=+h)},arcTo:function(s,l,u,c,f){s=+s,l=+l,u=+u,c=+c,f=+f;var h=this._x1,d=this._y1,v=u-s,x=c-l,b=h-s,p=d-l,E=b*b+p*p;if(f<0)throw new Error("negative radius: "+f);if(this._x1===null)this._+="M"+(this._x1=s)+","+(this._y1=l);else if(E>n)if(!(Math.abs(p*v-x*b)>n)||!f)this._+="L"+(this._x1=s)+","+(this._y1=l);else{var k=u-h,A=c-d,L=v*v+x*x,_=k*k+A*A,C=Math.sqrt(L),M=Math.sqrt(E),g=f*Math.tan((t-Math.acos((L+E-_)/(2*C*M)))/2),P=g/M,T=g/C;Math.abs(P-1)>n&&(this._+="L"+(s+P*b)+","+(l+P*p)),this._+="A"+f+","+f+",0,0,"+ +(p*k>b*A)+","+(this._x1=s+T*v)+","+(this._y1=l+T*x)}},arc:function(s,l,u,c,f,h){s=+s,l=+l,u=+u,h=!!h;var d=u*Math.cos(c),v=u*Math.sin(c),x=s+d,b=l+v,p=1^h,E=h?c-f:f-c;if(u<0)throw new Error("negative radius: "+u);this._x1===null?this._+="M"+x+","+b:(Math.abs(this._x1-x)>n||Math.abs(this._y1-b)>n)&&(this._+="L"+x+","+b),u&&(E<0&&(E=E%r+r),E>i?this._+="A"+u+","+u+",0,1,"+p+","+(s-d)+","+(l-v)+"A"+u+","+u+",0,1,"+p+","+(this._x1=x)+","+(this._y1=b):E>n&&(this._+="A"+u+","+u+",0,"+ +(E>=t)+","+p+","+(this._x1=s+u*Math.cos(f))+","+(this._y1=l+u*Math.sin(f))))},rect:function(s,l,u,c){this._+="M"+(this._x0=this._x1=+s)+","+(this._y0=this._y1=+l)+"h"+ +u+"v"+ +c+"h"+-u+"Z"},toString:function(){return this._}},e.path=o,Object.defineProperty(e,"__esModule",{value:!0})})});var PJ=ye((y7,Aje)=>{(function(e,t){typeof y7=="object"&&typeof Aje!="undefined"?t(y7,Tje()):(e=e||self,t(e.d3=e.d3||{},e.d3))})(y7,function(e,t){"use strict";function r(_t){return function(){return _t}}var n=Math.abs,i=Math.atan2,a=Math.cos,o=Math.max,s=Math.min,l=Math.sin,u=Math.sqrt,c=1e-12,f=Math.PI,h=f/2,d=2*f;function v(_t){return _t>1?0:_t<-1?f:Math.acos(_t)}function x(_t){return _t>=1?h:_t<=-1?-h:Math.asin(_t)}function b(_t){return _t.innerRadius}function p(_t){return _t.outerRadius}function E(_t){return _t.startAngle}function k(_t){return _t.endAngle}function A(_t){return _t&&_t.padAngle}function L(_t,br,Hr,ti,zi,Yi,an,hi){var Ji=Hr-_t,ua=ti-br,Fn=an-zi,Sa=hi-Yi,go=Sa*Ji-Fn*ua;if(!(go*goQl*Ql+Hu*Hu&&(Cs=Ys,ml=Hs),{cx:Cs,cy:ml,x01:-Fn,y01:-Sa,x11:Cs*(zi/wl-1),y11:ml*(zi/wl-1)}}function C(){var _t=b,br=p,Hr=r(0),ti=null,zi=E,Yi=k,an=A,hi=null;function Ji(){var ua,Fn,Sa=+_t.apply(this,arguments),go=+br.apply(this,arguments),Oo=zi.apply(this,arguments)-h,ho=Yi.apply(this,arguments)-h,Mo=n(ho-Oo),xo=ho>Oo;if(hi||(hi=ua=t.path()),goc))hi.moveTo(0,0);else if(Mo>d-c)hi.moveTo(go*a(Oo),go*l(Oo)),hi.arc(0,0,go,Oo,ho,!xo),Sa>c&&(hi.moveTo(Sa*a(ho),Sa*l(ho)),hi.arc(0,0,Sa,ho,Oo,xo));else{var zs=Oo,ks=ho,Zs=Oo,Xs=ho,wl=Mo,os=Mo,cl=an.apply(this,arguments)/2,Cs=cl>c&&(ti?+ti.apply(this,arguments):u(Sa*Sa+go*go)),ml=s(n(go-Sa)/2,+Hr.apply(this,arguments)),Ys=ml,Hs=ml,Eo,fs;if(Cs>c){var Ql=x(Cs/Sa*l(cl)),Hu=x(Cs/go*l(cl));(wl-=Ql*2)>c?(Ql*=xo?1:-1,Zs+=Ql,Xs-=Ql):(wl=0,Zs=Xs=(Oo+ho)/2),(os-=Hu*2)>c?(Hu*=xo?1:-1,zs+=Hu,ks-=Hu):(os=0,zs=ks=(Oo+ho)/2)}var fc=go*a(zs),ms=go*l(zs),on=Sa*a(Xs),fa=Sa*l(Xs);if(ml>c){var Qu=go*a(ks),Rl=go*l(ks),vo=Sa*a(Zs),Zl=Sa*l(Zs),Ks;if(Moc?Hs>c?(Eo=_(vo,Zl,fc,ms,go,Hs,xo),fs=_(Qu,Rl,on,fa,go,Hs,xo),hi.moveTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Hsc)||!(wl>c)?hi.lineTo(on,fa):Ys>c?(Eo=_(on,fa,Qu,Rl,Sa,-Ys,xo),fs=_(fc,ms,vo,Zl,Sa,-Ys,xo),hi.lineTo(Eo.cx+Eo.x01,Eo.cy+Eo.y01),Ys=go;--Oo)hi.point(ks[Oo],Zs[Oo]);hi.lineEnd(),hi.areaEnd()}xo&&(ks[Sa]=+_t(Mo,Sa,Fn),Zs[Sa]=+Hr(Mo,Sa,Fn),hi.point(br?+br(Mo,Sa,Fn):ks[Sa],ti?+ti(Mo,Sa,Fn):Zs[Sa]))}if(zs)return hi=null,zs+""||null}function ua(){return F().defined(zi).curve(an).context(Yi)}return Ji.x=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),br=null,Ji):_t},Ji.x0=function(Fn){return arguments.length?(_t=typeof Fn=="function"?Fn:r(+Fn),Ji):_t},Ji.x1=function(Fn){return arguments.length?(br=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):br},Ji.y=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),ti=null,Ji):Hr},Ji.y0=function(Fn){return arguments.length?(Hr=typeof Fn=="function"?Fn:r(+Fn),Ji):Hr},Ji.y1=function(Fn){return arguments.length?(ti=Fn==null?null:typeof Fn=="function"?Fn:r(+Fn),Ji):ti},Ji.lineX0=Ji.lineY0=function(){return ua().x(_t).y(Hr)},Ji.lineY1=function(){return ua().x(_t).y(ti)},Ji.lineX1=function(){return ua().x(br).y(Hr)},Ji.defined=function(Fn){return arguments.length?(zi=typeof Fn=="function"?Fn:r(!!Fn),Ji):zi},Ji.curve=function(Fn){return arguments.length?(an=Fn,Yi!=null&&(hi=an(Yi)),Ji):an},Ji.context=function(Fn){return arguments.length?(Fn==null?Yi=hi=null:hi=an(Yi=Fn),Ji):Yi},Ji}function V(_t,br){return br<_t?-1:br>_t?1:br>=_t?0:NaN}function H(_t){return _t}function X(){var _t=H,br=V,Hr=null,ti=r(0),zi=r(d),Yi=r(0);function an(hi){var Ji,ua=hi.length,Fn,Sa,go=0,Oo=new Array(ua),ho=new Array(ua),Mo=+ti.apply(this,arguments),xo=Math.min(d,Math.max(-d,zi.apply(this,arguments)-Mo)),zs,ks=Math.min(Math.abs(xo)/ua,Yi.apply(this,arguments)),Zs=ks*(xo<0?-1:1),Xs;for(Ji=0;Ji0&&(go+=Xs);for(br!=null?Oo.sort(function(wl,os){return br(ho[wl],ho[os])}):Hr!=null&&Oo.sort(function(wl,os){return Hr(hi[wl],hi[os])}),Ji=0,Sa=go?(xo-ua*Zs)/go:0;Ji0?Xs*Sa:0)+Zs,ho[Fn]={data:hi[Fn],index:Ji,value:Xs,startAngle:Mo,endAngle:zs,padAngle:ks};return ho}return an.value=function(hi){return arguments.length?(_t=typeof hi=="function"?hi:r(+hi),an):_t},an.sortValues=function(hi){return arguments.length?(br=hi,Hr=null,an):br},an.sort=function(hi){return arguments.length?(Hr=hi,br=null,an):Hr},an.startAngle=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.endAngle=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.padAngle=function(hi){return arguments.length?(Yi=typeof hi=="function"?hi:r(+hi),an):Yi},an}var G=W(g);function N(_t){this._curve=_t}N.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(_t,br){this._curve.point(br*Math.sin(_t),br*-Math.cos(_t))}};function W(_t){function br(Hr){return new N(_t(Hr))}return br._curve=_t,br}function re(_t){var br=_t.curve;return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t.curve=function(Hr){return arguments.length?br(W(Hr)):br()._curve},_t}function ae(){return re(F().curve(G))}function _e(){var _t=q().curve(G),br=_t.curve,Hr=_t.lineX0,ti=_t.lineX1,zi=_t.lineY0,Yi=_t.lineY1;return _t.angle=_t.x,delete _t.x,_t.startAngle=_t.x0,delete _t.x0,_t.endAngle=_t.x1,delete _t.x1,_t.radius=_t.y,delete _t.y,_t.innerRadius=_t.y0,delete _t.y0,_t.outerRadius=_t.y1,delete _t.y1,_t.lineStartAngle=function(){return re(Hr())},delete _t.lineX0,_t.lineEndAngle=function(){return re(ti())},delete _t.lineX1,_t.lineInnerRadius=function(){return re(zi())},delete _t.lineY0,_t.lineOuterRadius=function(){return re(Yi())},delete _t.lineY1,_t.curve=function(an){return arguments.length?br(W(an)):br()._curve},_t}function Me(_t,br){return[(br=+br)*Math.cos(_t-=Math.PI/2),br*Math.sin(_t)]}var ke=Array.prototype.slice;function ge(_t){return _t.source}function ie(_t){return _t.target}function Te(_t){var br=ge,Hr=ie,ti=P,zi=T,Yi=null;function an(){var hi,Ji=ke.call(arguments),ua=br.apply(this,Ji),Fn=Hr.apply(this,Ji);if(Yi||(Yi=hi=t.path()),_t(Yi,+ti.apply(this,(Ji[0]=ua,Ji)),+zi.apply(this,Ji),+ti.apply(this,(Ji[0]=Fn,Ji)),+zi.apply(this,Ji)),hi)return Yi=null,hi+""||null}return an.source=function(hi){return arguments.length?(br=hi,an):br},an.target=function(hi){return arguments.length?(Hr=hi,an):Hr},an.x=function(hi){return arguments.length?(ti=typeof hi=="function"?hi:r(+hi),an):ti},an.y=function(hi){return arguments.length?(zi=typeof hi=="function"?hi:r(+hi),an):zi},an.context=function(hi){return arguments.length?(Yi=hi==null?null:hi,an):Yi},an}function Ee(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br=(br+ti)/2,Hr,br,zi,ti,zi)}function Ae(_t,br,Hr,ti,zi){_t.moveTo(br,Hr),_t.bezierCurveTo(br,Hr=(Hr+zi)/2,ti,Hr,ti,zi)}function ze(_t,br,Hr,ti,zi){var Yi=Me(br,Hr),an=Me(br,Hr=(Hr+zi)/2),hi=Me(ti,Hr),Ji=Me(ti,zi);_t.moveTo(Yi[0],Yi[1]),_t.bezierCurveTo(an[0],an[1],hi[0],hi[1],Ji[0],Ji[1])}function Ce(){return Te(Ee)}function me(){return Te(Ae)}function Re(){var _t=Te(ze);return _t.angle=_t.x,delete _t.x,_t.radius=_t.y,delete _t.y,_t}var ce={draw:function(_t,br){var Hr=Math.sqrt(br/f);_t.moveTo(Hr,0),_t.arc(0,0,Hr,0,d)}},Ge={draw:function(_t,br){var Hr=Math.sqrt(br/5)/2;_t.moveTo(-3*Hr,-Hr),_t.lineTo(-Hr,-Hr),_t.lineTo(-Hr,-3*Hr),_t.lineTo(Hr,-3*Hr),_t.lineTo(Hr,-Hr),_t.lineTo(3*Hr,-Hr),_t.lineTo(3*Hr,Hr),_t.lineTo(Hr,Hr),_t.lineTo(Hr,3*Hr),_t.lineTo(-Hr,3*Hr),_t.lineTo(-Hr,Hr),_t.lineTo(-3*Hr,Hr),_t.closePath()}},nt=Math.sqrt(1/3),ct=nt*2,qt={draw:function(_t,br){var Hr=Math.sqrt(br/ct),ti=Hr*nt;_t.moveTo(0,-Hr),_t.lineTo(ti,0),_t.lineTo(0,Hr),_t.lineTo(-ti,0),_t.closePath()}},rt=.8908130915292852,ot=Math.sin(f/10)/Math.sin(7*f/10),Rt=Math.sin(d/10)*ot,kt=-Math.cos(d/10)*ot,Ct={draw:function(_t,br){var Hr=Math.sqrt(br*rt),ti=Rt*Hr,zi=kt*Hr;_t.moveTo(0,-Hr),_t.lineTo(ti,zi);for(var Yi=1;Yi<5;++Yi){var an=d*Yi/5,hi=Math.cos(an),Ji=Math.sin(an);_t.lineTo(Ji*Hr,-hi*Hr),_t.lineTo(hi*ti-Ji*zi,Ji*ti+hi*zi)}_t.closePath()}},Yt={draw:function(_t,br){var Hr=Math.sqrt(br),ti=-Hr/2;_t.rect(ti,ti,Hr,Hr)}},xr=Math.sqrt(3),er={draw:function(_t,br){var Hr=-Math.sqrt(br/(xr*3));_t.moveTo(0,Hr*2),_t.lineTo(-xr*Hr,-Hr),_t.lineTo(xr*Hr,-Hr),_t.closePath()}},Ke=-.5,xt=Math.sqrt(3)/2,bt=1/Math.sqrt(12),Lt=(bt/2+1)*3,St={draw:function(_t,br){var Hr=Math.sqrt(br/Lt),ti=Hr/2,zi=Hr*bt,Yi=ti,an=Hr*bt+Hr,hi=-Yi,Ji=an;_t.moveTo(ti,zi),_t.lineTo(Yi,an),_t.lineTo(hi,Ji),_t.lineTo(Ke*ti-xt*zi,xt*ti+Ke*zi),_t.lineTo(Ke*Yi-xt*an,xt*Yi+Ke*an),_t.lineTo(Ke*hi-xt*Ji,xt*hi+Ke*Ji),_t.lineTo(Ke*ti+xt*zi,Ke*zi-xt*ti),_t.lineTo(Ke*Yi+xt*an,Ke*an-xt*Yi),_t.lineTo(Ke*hi+xt*Ji,Ke*Ji-xt*hi),_t.closePath()}},Et=[ce,Ge,qt,Yt,Ct,er,St];function dt(){var _t=r(ce),br=r(64),Hr=null;function ti(){var zi;if(Hr||(Hr=zi=t.path()),_t.apply(this,arguments).draw(Hr,+br.apply(this,arguments)),zi)return Hr=null,zi+""||null}return ti.type=function(zi){return arguments.length?(_t=typeof zi=="function"?zi:r(zi),ti):_t},ti.size=function(zi){return arguments.length?(br=typeof zi=="function"?zi:r(+zi),ti):br},ti.context=function(zi){return arguments.length?(Hr=zi==null?null:zi,ti):Hr},ti}function Ht(){}function $t(_t,br,Hr){_t._context.bezierCurveTo((2*_t._x0+_t._x1)/3,(2*_t._y0+_t._y1)/3,(_t._x0+2*_t._x1)/3,(_t._y0+2*_t._y1)/3,(_t._x0+4*_t._x1+br)/6,(_t._y0+4*_t._y1+Hr)/6)}function fr(_t){this._context=_t}fr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:$t(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function _r(_t){return new fr(_t)}function Br(_t){this._context=_t}Br.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x2=_t,this._y2=br;break;case 1:this._point=2,this._x3=_t,this._y3=br;break;case 2:this._point=3,this._x4=_t,this._y4=br,this._context.moveTo((this._x0+4*this._x1+_t)/6,(this._y0+4*this._y1+br)/6);break;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function Or(_t){return new Br(_t)}function Nr(_t){this._context=_t}Nr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var Hr=(this._x0+4*this._x1+_t)/6,ti=(this._y0+4*this._y1+br)/6;this._line?this._context.lineTo(Hr,ti):this._context.moveTo(Hr,ti);break;case 3:this._point=4;default:$t(this,_t,br);break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br}};function ut(_t){return new Nr(_t)}function Ne(_t,br){this._basis=new fr(_t),this._beta=br}Ne.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length-1;if(Hr>0)for(var ti=_t[0],zi=br[0],Yi=_t[Hr]-ti,an=br[Hr]-zi,hi=-1,Ji;++hi<=Hr;)Ji=hi/Hr,this._basis.point(this._beta*_t[hi]+(1-this._beta)*(ti+Ji*Yi),this._beta*br[hi]+(1-this._beta)*(zi+Ji*an));this._x=this._y=null,this._basis.lineEnd()},point:function(_t,br){this._x.push(+_t),this._y.push(+br)}};var Ye=function _t(br){function Hr(ti){return br===1?new fr(ti):new Ne(ti,br)}return Hr.beta=function(ti){return _t(+ti)},Hr}(.85);function Ve(_t,br,Hr){_t._context.bezierCurveTo(_t._x1+_t._k*(_t._x2-_t._x0),_t._y1+_t._k*(_t._y2-_t._y0),_t._x2+_t._k*(_t._x1-br),_t._y2+_t._k*(_t._y1-Hr),_t._x2,_t._y2)}function Xe(_t,br){this._context=_t,this._k=(1-br)/6}Xe.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ve(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2,this._x1=_t,this._y1=br;break;case 2:this._point=3;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ht=function _t(br){function Hr(ti){return new Xe(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Le(_t,br){this._context=_t,this._k=(1-br)/6}Le.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var xe=function _t(br){function Hr(ti){return new Le(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Se(_t,br){this._context=_t,this._k=(1-br)/6}Se.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ve(this,_t,br);break}this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var lt=function _t(br){function Hr(ti){return new Se(ti,br)}return Hr.tension=function(ti){return _t(+ti)},Hr}(0);function Gt(_t,br,Hr){var ti=_t._x1,zi=_t._y1,Yi=_t._x2,an=_t._y2;if(_t._l01_a>c){var hi=2*_t._l01_2a+3*_t._l01_a*_t._l12_a+_t._l12_2a,Ji=3*_t._l01_a*(_t._l01_a+_t._l12_a);ti=(ti*hi-_t._x0*_t._l12_2a+_t._x2*_t._l01_2a)/Ji,zi=(zi*hi-_t._y0*_t._l12_2a+_t._y2*_t._l01_2a)/Ji}if(_t._l23_a>c){var ua=2*_t._l23_2a+3*_t._l23_a*_t._l12_a+_t._l12_2a,Fn=3*_t._l23_a*(_t._l23_a+_t._l12_a);Yi=(Yi*ua+_t._x1*_t._l23_2a-br*_t._l12_2a)/Fn,an=(an*ua+_t._y1*_t._l23_2a-Hr*_t._l12_2a)/Fn}_t._context.bezierCurveTo(ti,zi,Yi,an,_t._x2,_t._y2)}function Vt(_t,br){this._context=_t,this._alpha=br}Vt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ar=function _t(br){function Hr(ti){return br?new Vt(ti,br):new Xe(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function Qr(_t,br){this._context=_t,this._alpha=br}Qr.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=_t,this._y3=br;break;case 1:this._point=2,this._context.moveTo(this._x4=_t,this._y4=br);break;case 2:this._point=3,this._x5=_t,this._y5=br;break;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ai=function _t(br){function Hr(ti){return br?new Qr(ti,br):new Le(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function jr(_t,br){this._context=_t,this._alpha=br}jr.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){if(_t=+_t,br=+br,this._point){var Hr=this._x2-_t,ti=this._y2-br;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(Hr*Hr+ti*ti,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gt(this,_t,br);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=_t,this._y0=this._y1,this._y1=this._y2,this._y2=br}};var ri=function _t(br){function Hr(ti){return br?new jr(ti,br):new Se(ti,0)}return Hr.alpha=function(ti){return _t(+ti)},Hr}(.5);function bi(_t){this._context=_t}bi.prototype={areaStart:Ht,areaEnd:Ht,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(_t,br){_t=+_t,br=+br,this._point?this._context.lineTo(_t,br):(this._point=1,this._context.moveTo(_t,br))}};function nn(_t){return new bi(_t)}function Wi(_t){return _t<0?-1:1}function Ni(_t,br,Hr){var ti=_t._x1-_t._x0,zi=br-_t._x1,Yi=(_t._y1-_t._y0)/(ti||zi<0&&-0),an=(Hr-_t._y1)/(zi||ti<0&&-0),hi=(Yi*zi+an*ti)/(ti+zi);return(Wi(Yi)+Wi(an))*Math.min(Math.abs(Yi),Math.abs(an),.5*Math.abs(hi))||0}function _n(_t,br){var Hr=_t._x1-_t._x0;return Hr?(3*(_t._y1-_t._y0)/Hr-br)/2:br}function $i(_t,br,Hr){var ti=_t._x0,zi=_t._y0,Yi=_t._x1,an=_t._y1,hi=(Yi-ti)/3;_t._context.bezierCurveTo(ti+hi,zi+hi*br,Yi-hi,an-hi*Hr,Yi,an)}function zn(_t){this._context=_t}zn.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:$i(this,this._t0,_n(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(_t,br){var Hr=NaN;if(_t=+_t,br=+br,!(_t===this._x1&&br===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;break;case 2:this._point=3,$i(this,_n(this,Hr=Ni(this,_t,br)),Hr);break;default:$i(this,this._t0,Hr=Ni(this,_t,br));break}this._x0=this._x1,this._x1=_t,this._y0=this._y1,this._y1=br,this._t0=Hr}}};function Wn(_t){this._context=new It(_t)}(Wn.prototype=Object.create(zn.prototype)).point=function(_t,br){zn.prototype.point.call(this,br,_t)};function It(_t){this._context=_t}It.prototype={moveTo:function(_t,br){this._context.moveTo(br,_t)},closePath:function(){this._context.closePath()},lineTo:function(_t,br){this._context.lineTo(br,_t)},bezierCurveTo:function(_t,br,Hr,ti,zi,Yi){this._context.bezierCurveTo(br,_t,ti,Hr,Yi,zi)}};function ft(_t){return new zn(_t)}function jt(_t){return new Wn(_t)}function Zt(_t){this._context=_t}Zt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var _t=this._x,br=this._y,Hr=_t.length;if(Hr)if(this._line?this._context.lineTo(_t[0],br[0]):this._context.moveTo(_t[0],br[0]),Hr===2)this._context.lineTo(_t[1],br[1]);else for(var ti=yr(_t),zi=yr(br),Yi=0,an=1;an=0;--br)zi[br]=(an[br]-zi[br+1])/Yi[br];for(Yi[Hr-1]=(_t[Hr]+zi[Hr-1])/2,br=0;br=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(_t,br){switch(_t=+_t,br=+br,this._point){case 0:this._point=1,this._line?this._context.lineTo(_t,br):this._context.moveTo(_t,br);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,br),this._context.lineTo(_t,br);else{var Hr=this._x*(1-this._t)+_t*this._t;this._context.lineTo(Hr,this._y),this._context.lineTo(Hr,br)}break}}this._x=_t,this._y=br}};function Vr(_t){return new Zr(_t,.5)}function gi(_t){return new Zr(_t,0)}function Si(_t){return new Zr(_t,1)}function Mi(_t,br){if((an=_t.length)>1)for(var Hr=1,ti,zi,Yi=_t[br[0]],an,hi=Yi.length;Hr=0;)Hr[br]=br;return Hr}function Gi(_t,br){return _t[br]}function Ki(){var _t=r([]),br=Pi,Hr=Mi,ti=Gi;function zi(Yi){var an=_t.apply(this,arguments),hi,Ji=Yi.length,ua=an.length,Fn=new Array(ua),Sa;for(hi=0;hi0){for(var Hr,ti,zi=0,Yi=_t[0].length,an;zi0)for(var Hr,ti=0,zi,Yi,an,hi,Ji,ua=_t[br[0]].length;ti0?(zi[0]=an,zi[1]=an+=Yi):Yi<0?(zi[1]=hi,zi[0]=hi+=Yi):(zi[0]=0,zi[1]=Yi)}function la(_t,br){if((zi=_t.length)>0){for(var Hr=0,ti=_t[br[0]],zi,Yi=ti.length;Hr0)||!((Yi=(zi=_t[br[0]]).length)>0))){for(var Hr=0,ti=1,zi,Yi,an;tiYi&&(Yi=zi,Hr=br);return Hr}function oa(_t){var br=_t.map(Sn);return Pi(_t).sort(function(Hr,ti){return br[Hr]-br[ti]})}function Sn(_t){for(var br=0,Hr=-1,ti=_t.length,zi;++Hr{(function(e,t){typeof _7=="object"&&typeof Sje!="undefined"?t(_7,$E(),d7(),PJ()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3)})(_7,function(e,t,r,n){"use strict";function i(g){return g.target.depth}function a(g){return g.depth}function o(g,P){return P-1-g.height}function s(g,P){return g.sourceLinks.length?g.depth:P-1}function l(g){return g.targetLinks.length?g.depth:g.sourceLinks.length?t.min(g.sourceLinks,i)-1:0}function u(g){return function(){return g}}function c(g,P){return h(g.source,P.source)||g.index-P.index}function f(g,P){return h(g.target,P.target)||g.index-P.index}function h(g,P){return g.y0-P.y0}function d(g){return g.value}function v(g){return(g.y0+g.y1)/2}function x(g){return v(g.source)*g.value}function b(g){return v(g.target)*g.value}function p(g){return g.index}function E(g){return g.nodes}function k(g){return g.links}function A(g,P){var T=g.get(P);if(!T)throw new Error("missing: "+P);return T}var L=function(){var g=0,P=0,T=1,F=1,q=24,V=8,H=p,X=s,G=E,N=k,W=32,re=2/3;function ae(){var Te={nodes:G.apply(null,arguments),links:N.apply(null,arguments)};return _e(Te),Me(Te),ke(Te),ge(Te,W),ie(Te),Te}ae.update=function(Te){return ie(Te),Te},ae.nodeId=function(Te){return arguments.length?(H=typeof Te=="function"?Te:u(Te),ae):H},ae.nodeAlign=function(Te){return arguments.length?(X=typeof Te=="function"?Te:u(Te),ae):X},ae.nodeWidth=function(Te){return arguments.length?(q=+Te,ae):q},ae.nodePadding=function(Te){return arguments.length?(V=+Te,ae):V},ae.nodes=function(Te){return arguments.length?(G=typeof Te=="function"?Te:u(Te),ae):G},ae.links=function(Te){return arguments.length?(N=typeof Te=="function"?Te:u(Te),ae):N},ae.size=function(Te){return arguments.length?(g=P=0,T=+Te[0],F=+Te[1],ae):[T-g,F-P]},ae.extent=function(Te){return arguments.length?(g=+Te[0][0],T=+Te[1][0],P=+Te[0][1],F=+Te[1][1],ae):[[g,P],[T,F]]},ae.iterations=function(Te){return arguments.length?(W=+Te,ae):W};function _e(Te){Te.nodes.forEach(function(Ae,ze){Ae.index=ze,Ae.sourceLinks=[],Ae.targetLinks=[]});var Ee=r.map(Te.nodes,H);Te.links.forEach(function(Ae,ze){Ae.index=ze;var Ce=Ae.source,me=Ae.target;typeof Ce!="object"&&(Ce=Ae.source=A(Ee,Ce)),typeof me!="object"&&(me=Ae.target=A(Ee,me)),Ce.sourceLinks.push(Ae),me.targetLinks.push(Ae)})}function Me(Te){Te.nodes.forEach(function(Ee){Ee.value=Math.max(t.sum(Ee.sourceLinks,d),t.sum(Ee.targetLinks,d))})}function ke(Te){var Ee,Ae,ze;for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.depth=ze,me.sourceLinks.forEach(function(Re){Ae.indexOf(Re.target)<0&&Ae.push(Re.target)})});for(Ee=Te.nodes,Ae=[],ze=0;Ee.length;++ze,Ee=Ae,Ae=[])Ee.forEach(function(me){me.height=ze,me.targetLinks.forEach(function(Re){Ae.indexOf(Re.source)<0&&Ae.push(Re.source)})});var Ce=(T-g-q)/(ze-1);Te.nodes.forEach(function(me){me.x1=(me.x0=g+Math.max(0,Math.min(ze-1,Math.floor(X.call(null,me,ze))))*Ce)+q})}function ge(Te){var Ee=r.nest().key(function(Ge){return Ge.x0}).sortKeys(t.ascending).entries(Te.nodes).map(function(Ge){return Ge.values});Ce(),ce();for(var Ae=1,ze=W;ze>0;--ze)Re(Ae*=.99),ce(),me(Ae),ce();function Ce(){var Ge=t.max(Ee,function(qt){return qt.length}),nt=re*(F-P)/(Ge-1);V>nt&&(V=nt);var ct=t.min(Ee,function(qt){return(F-P-(qt.length-1)*V)/t.sum(qt,d)});Ee.forEach(function(qt){qt.forEach(function(rt,ot){rt.y1=(rt.y0=ot)+rt.value*ct})}),Te.links.forEach(function(qt){qt.width=qt.value*ct})}function me(Ge){Ee.forEach(function(nt){nt.forEach(function(ct){if(ct.targetLinks.length){var qt=(t.sum(ct.targetLinks,x)/t.sum(ct.targetLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function Re(Ge){Ee.slice().reverse().forEach(function(nt){nt.forEach(function(ct){if(ct.sourceLinks.length){var qt=(t.sum(ct.sourceLinks,b)/t.sum(ct.sourceLinks,d)-v(ct))*Ge;ct.y0+=qt,ct.y1+=qt}})})}function ce(){Ee.forEach(function(Ge){var nt,ct,qt=P,rt=Ge.length,ot;for(Ge.sort(h),ot=0;ot0&&(nt.y0+=ct,nt.y1+=ct),qt=nt.y1+V;if(ct=qt-V-F,ct>0)for(qt=nt.y0-=ct,nt.y1-=ct,ot=rt-2;ot>=0;--ot)nt=Ge[ot],ct=nt.y1+V-qt,ct>0&&(nt.y0-=ct,nt.y1-=ct),qt=nt.y0})}}function ie(Te){Te.nodes.forEach(function(Ee){Ee.sourceLinks.sort(f),Ee.targetLinks.sort(c)}),Te.nodes.forEach(function(Ee){var Ae=Ee.y0,ze=Ae;Ee.sourceLinks.forEach(function(Ce){Ce.y0=Ae+Ce.width/2,Ae+=Ce.width}),Ee.targetLinks.forEach(function(Ce){Ce.y1=ze+Ce.width/2,ze+=Ce.width})})}return ae};function _(g){return[g.source.x1,g.y0]}function C(g){return[g.target.x0,g.y1]}var M=function(){return n.linkHorizontal().source(_).target(C)};e.sankey=L,e.sankeyCenter=l,e.sankeyLeft=a,e.sankeyRight=o,e.sankeyJustify=s,e.sankeyLinkHorizontal=M,Object.defineProperty(e,"__esModule",{value:!0})})});var kje=ye((__r,Eje)=>{var SWt=LJ();Eje.exports=function(t,r){var n=[],i=[],a=[],o={},s=[],l;function u(k){a[k]=!1,o.hasOwnProperty(k)&&Object.keys(o[k]).forEach(function(A){delete o[k][A],a[A]&&u(A)})}function c(k){var A=!1;i.push(k),a[k]=!0;var L,_;for(L=0;L=k})}function d(k){h(k);for(var A=t,L=SWt(A),_=L.components.filter(function(q){return q.length>1}),C=1/0,M,g=0;g<_.length;g++)for(var P=0;P<_[g].length;P++)_[g][P]{(function(e,t){typeof x7=="object"&&typeof Cje!="undefined"?t(x7,$E(),d7(),PJ(),kje()):t(e.d3=e.d3||{},e.d3,e.d3,e.d3,null)})(x7,function(e,t,r,n,i){"use strict";i=i&&i.hasOwnProperty("default")?i.default:i;function a(rt){return rt.target.depth}function o(rt){return rt.depth}function s(rt,ot){return ot-1-rt.height}function l(rt,ot){return rt.sourceLinks.length?rt.depth:ot-1}function u(rt){return rt.targetLinks.length?rt.depth:rt.sourceLinks.length?t.min(rt.sourceLinks,a)-1:0}function c(rt){return function(){return rt}}var f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(rt){return typeof rt}:function(rt){return rt&&typeof Symbol=="function"&&rt.constructor===Symbol&&rt!==Symbol.prototype?"symbol":typeof rt};function h(rt,ot){return v(rt.source,ot.source)||rt.index-ot.index}function d(rt,ot){return v(rt.target,ot.target)||rt.index-ot.index}function v(rt,ot){return rt.partOfCycle===ot.partOfCycle?rt.y0-ot.y0:rt.circularLinkType==="top"||ot.circularLinkType==="bottom"?-1:1}function x(rt){return rt.value}function b(rt){return(rt.y0+rt.y1)/2}function p(rt){return b(rt.source)}function E(rt){return b(rt.target)}function k(rt){return rt.index}function A(rt){return rt.nodes}function L(rt){return rt.links}function _(rt,ot){var Rt=rt.get(ot);if(!Rt)throw new Error("missing: "+ot);return Rt}function C(rt,ot){return ot(rt)}var M=25,g=10,P=.3;function T(){var rt=0,ot=0,Rt=1,kt=1,Ct=24,Yt,xr=k,er=l,Ke=A,xt=L,bt=32,Lt=2,St,Et=null;function dt(){var ut={nodes:Ke.apply(null,arguments),links:xt.apply(null,arguments)};Ht(ut),F(ut,xr,Et),$t(ut),Br(ut),q(ut,xr),Or(ut,bt,xr),Nr(ut);for(var Ne=4,Ye=0;Ye0?Ne+M+g:Ne,Ye=Ye>0?Ye+M+g:Ye,Ve=Ve>0?Ve+M+g:Ve,Xe=Xe>0?Xe+M+g:Xe,{top:Ne,bottom:Ye,left:Xe,right:Ve}}function _r(ut,Ne){var Ye=t.max(ut.nodes,function(lt){return lt.column}),Ve=Rt-rt,Xe=kt-ot,ht=Ve+Ne.right+Ne.left,Le=Xe+Ne.top+Ne.bottom,xe=Ve/ht,Se=Xe/Le;return rt=rt*xe+Ne.left,Rt=Ne.right==0?Rt:Rt*xe,ot=ot*Se+Ne.top,kt=kt*Se,ut.nodes.forEach(function(lt){lt.x0=rt+lt.column*((Rt-rt-Ct)/Ye),lt.x1=lt.x0+Ct}),Se}function Br(ut){var Ne,Ye,Ve;for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.depth=Ve,Xe.sourceLinks.forEach(function(ht){Ye.indexOf(ht.target)<0&&!ht.circular&&Ye.push(ht.target)})});for(Ne=ut.nodes,Ye=[],Ve=0;Ne.length;++Ve,Ne=Ye,Ye=[])Ne.forEach(function(Xe){Xe.height=Ve,Xe.targetLinks.forEach(function(ht){Ye.indexOf(ht.source)<0&&!ht.circular&&Ye.push(ht.source)})});ut.nodes.forEach(function(Xe){Xe.column=Math.floor(er.call(null,Xe,Ve))})}function Or(ut,Ne,Ye){var Ve=r.nest().key(function(lt){return lt.column}).sortKeys(t.ascending).entries(ut.nodes).map(function(lt){return lt.values});Le(Ye),Se();for(var Xe=1,ht=Ne;ht>0;--ht)xe(Xe*=.99,Ye),Se();function Le(lt){if(St){var Gt=1/0;Ve.forEach(function(ai){var jr=kt*St/(ai.length+1);Gt=jr0))if(ai==0&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else if(ai==Vt-1&&Qr==1)ri=jr.y1-jr.y0,jr.y0=kt/2-ri/2,jr.y1=kt/2+ri/2;else{var bi=0,nn=t.mean(jr.sourceLinks,E),Wi=t.mean(jr.targetLinks,p);nn&&Wi?bi=(nn+Wi)/2:bi=nn||Wi;var Ni=(bi-b(jr))*lt;jr.y0+=Ni,jr.y1+=Ni}})})}function Se(){Ve.forEach(function(lt){var Gt,Vt,ar=ot,Qr=lt.length,ai;for(lt.sort(v),ai=0;ai0&&(Gt.y0+=Vt,Gt.y1+=Vt),ar=Gt.y1+Yt;if(Vt=ar-Yt-kt,Vt>0)for(ar=Gt.y0-=Vt,Gt.y1-=Vt,ai=Qr-2;ai>=0;--ai)Gt=lt[ai],Vt=Gt.y1+Yt-ar,Vt>0&&(Gt.y0-=Vt,Gt.y1-=Vt),ar=Gt.y0})}}function Nr(ut){ut.nodes.forEach(function(Ne){Ne.sourceLinks.sort(d),Ne.targetLinks.sort(h)}),ut.nodes.forEach(function(Ne){var Ye=Ne.y0,Ve=Ye,Xe=Ne.y1,ht=Xe;Ne.sourceLinks.forEach(function(Le){Le.circular?(Le.y0=Xe-Le.width/2,Xe=Xe-Le.width):(Le.y0=Ye+Le.width/2,Ye+=Le.width)}),Ne.targetLinks.forEach(function(Le){Le.circular?(Le.y1=ht-Le.width/2,ht=ht-Le.width):(Le.y1=Ve+Le.width/2,Ve+=Le.width)})})}return dt}function F(rt,ot,Rt){var kt=0;if(Rt===null){for(var Ct=[],Yt=0;Ytot.source.column)}function X(rt,ot){var Rt=0;rt.sourceLinks.forEach(function(Ct){Rt=Ct.circular&&!ct(Ct,ot)?Rt+1:Rt});var kt=0;return rt.targetLinks.forEach(function(Ct){kt=Ct.circular&&!ct(Ct,ot)?kt+1:kt}),Rt+kt}function G(rt){var ot=rt.source.sourceLinks,Rt=0;ot.forEach(function(Yt){Rt=Yt.circular?Rt+1:Rt});var kt=rt.target.targetLinks,Ct=0;return kt.forEach(function(Yt){Ct=Yt.circular?Ct+1:Ct}),!(Rt>1||Ct>1)}function N(rt,ot,Rt){return rt.sort(ae),rt.forEach(function(kt,Ct){var Yt=0;if(ct(kt,Rt)&&G(kt))kt.circularPathData.verticalBuffer=Yt+kt.width/2;else{var xr=0;for(xr;xrYt?er:Yt}kt.circularPathData.verticalBuffer=Yt+kt.width/2}}),rt}function W(rt,ot,Rt,kt){var Ct=5,Yt=t.min(rt.links,function(Ke){return Ke.source.y0});rt.links.forEach(function(Ke){Ke.circular&&(Ke.circularPathData={})});var xr=rt.links.filter(function(Ke){return Ke.circularLinkType=="top"});N(xr,ot,kt);var er=rt.links.filter(function(Ke){return Ke.circularLinkType=="bottom"});N(er,ot,kt),rt.links.forEach(function(Ke){if(Ke.circular){if(Ke.circularPathData.arcRadius=Ke.width+g,Ke.circularPathData.leftNodeBuffer=Ct,Ke.circularPathData.rightNodeBuffer=Ct,Ke.circularPathData.sourceWidth=Ke.source.x1-Ke.source.x0,Ke.circularPathData.sourceX=Ke.source.x0+Ke.circularPathData.sourceWidth,Ke.circularPathData.targetX=Ke.target.x0,Ke.circularPathData.sourceY=Ke.y0,Ke.circularPathData.targetY=Ke.y1,ct(Ke,kt)&&G(Ke))Ke.circularPathData.leftSmallArcRadius=g+Ke.width/2,Ke.circularPathData.leftLargeArcRadius=g+Ke.width/2,Ke.circularPathData.rightSmallArcRadius=g+Ke.width/2,Ke.circularPathData.rightLargeArcRadius=g+Ke.width/2,Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Ke.source.y1+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Ke.source.y0-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius);else{var xt=Ke.source.column,bt=Ke.circularLinkType,Lt=rt.links.filter(function(dt){return dt.source.column==xt&&dt.circularLinkType==bt});Ke.circularLinkType=="bottom"?Lt.sort(Me):Lt.sort(_e);var St=0;Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.leftSmallArcRadius=g+Ke.width/2+St,Ke.circularPathData.leftLargeArcRadius=g+Ke.width/2+Ht*ot+St),St=St+dt.width}),xt=Ke.target.column,Lt=rt.links.filter(function(dt){return dt.target.column==xt&&dt.circularLinkType==bt}),Ke.circularLinkType=="bottom"?Lt.sort(ge):Lt.sort(ke),St=0,Lt.forEach(function(dt,Ht){dt.circularLinkID==Ke.circularLinkID&&(Ke.circularPathData.rightSmallArcRadius=g+Ke.width/2+St,Ke.circularPathData.rightLargeArcRadius=g+Ke.width/2+Ht*ot+St),St=St+dt.width}),Ke.circularLinkType=="bottom"?(Ke.circularPathData.verticalFullExtent=Math.max(Rt,Ke.source.y1,Ke.target.y1)+M+Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent-Ke.circularPathData.rightLargeArcRadius):(Ke.circularPathData.verticalFullExtent=Yt-M-Ke.circularPathData.verticalBuffer,Ke.circularPathData.verticalLeftInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.leftLargeArcRadius,Ke.circularPathData.verticalRightInnerExtent=Ke.circularPathData.verticalFullExtent+Ke.circularPathData.rightLargeArcRadius)}Ke.circularPathData.leftInnerExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightInnerExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightNodeBuffer,Ke.circularPathData.leftFullExtent=Ke.circularPathData.sourceX+Ke.circularPathData.leftLargeArcRadius+Ke.circularPathData.leftNodeBuffer,Ke.circularPathData.rightFullExtent=Ke.circularPathData.targetX-Ke.circularPathData.rightLargeArcRadius-Ke.circularPathData.rightNodeBuffer}if(Ke.circular)Ke.path=re(Ke);else{var Et=n.linkHorizontal().source(function(dt){var Ht=dt.source.x0+(dt.source.x1-dt.source.x0),$t=dt.y0;return[Ht,$t]}).target(function(dt){var Ht=dt.target.x0,$t=dt.y1;return[Ht,$t]});Ke.path=Et(Ke)}})}function re(rt){var ot="";return rt.circularLinkType=="top"?ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 0 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY-rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 0 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 0 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY-rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 0 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY:ot="M"+rt.circularPathData.sourceX+" "+rt.circularPathData.sourceY+" L"+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.sourceY+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftSmallArcRadius+" 0 0 1 "+rt.circularPathData.leftFullExtent+" "+(rt.circularPathData.sourceY+rt.circularPathData.leftSmallArcRadius)+" L"+rt.circularPathData.leftFullExtent+" "+rt.circularPathData.verticalLeftInnerExtent+" A"+rt.circularPathData.leftLargeArcRadius+" "+rt.circularPathData.leftLargeArcRadius+" 0 0 1 "+rt.circularPathData.leftInnerExtent+" "+rt.circularPathData.verticalFullExtent+" L"+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.verticalFullExtent+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightLargeArcRadius+" 0 0 1 "+rt.circularPathData.rightFullExtent+" "+rt.circularPathData.verticalRightInnerExtent+" L"+rt.circularPathData.rightFullExtent+" "+(rt.circularPathData.targetY+rt.circularPathData.rightSmallArcRadius)+" A"+rt.circularPathData.rightLargeArcRadius+" "+rt.circularPathData.rightSmallArcRadius+" 0 0 1 "+rt.circularPathData.rightInnerExtent+" "+rt.circularPathData.targetY+" L"+rt.circularPathData.targetX+" "+rt.circularPathData.targetY,ot}function ae(rt,ot){return ie(rt)==ie(ot)?rt.circularLinkType=="bottom"?Me(rt,ot):_e(rt,ot):ie(ot)-ie(rt)}function _e(rt,ot){return rt.y0-ot.y0}function Me(rt,ot){return ot.y0-rt.y0}function ke(rt,ot){return rt.y1-ot.y1}function ge(rt,ot){return ot.y1-rt.y1}function ie(rt){return rt.target.column-rt.source.column}function Te(rt){return rt.target.x0-rt.source.x1}function Ee(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1+kt:rt.y1-kt;return Ct}function Ae(rt,ot){var Rt=V(rt),kt=Te(ot)/Math.tan(Rt),Ct=nt(rt)=="up"?rt.y1-kt:rt.y1+kt;return Ct}function ze(rt,ot,Rt,kt){rt.links.forEach(function(Ct){if(!Ct.circular&&Ct.target.column-Ct.source.column>1){var Yt=Ct.source.column+1,xr=Ct.target.column-1,er=1,Ke=xr-Yt+1;for(er=1;Yt<=xr;Yt++,er++)rt.nodes.forEach(function(xt){if(xt.column==Yt){var bt=er/(Ke+1),Lt=Math.pow(1-bt,3),St=3*bt*Math.pow(1-bt,2),Et=3*Math.pow(bt,2)*(1-bt),dt=Math.pow(bt,3),Ht=Lt*Ct.y0+St*Ct.y0+Et*Ct.y1+dt*Ct.y1,$t=Ht-Ct.width/2,fr=Ht+Ct.width/2,_r;$t>xt.y0&&$txt.y0&&frxt.y1&&me(Br,_r,ot,Rt)})):$txt.y1&&(_r=fr-xt.y0+10,xt=me(xt,_r,ot,Rt),rt.nodes.forEach(function(Br){C(Br,kt)==C(xt,kt)||Br.column!=xt.column||Br.y0xt.y1&&me(Br,_r,ot,Rt)}))}})}})}function Ce(rt,ot){return rt.y0>ot.y0&&rt.y0ot.y0&&rt.y1ot.y1}function me(rt,ot,Rt,kt){return rt.y0+ot>=Rt&&rt.y1+ot<=kt&&(rt.y0=rt.y0+ot,rt.y1=rt.y1+ot,rt.targetLinks.forEach(function(Ct){Ct.y1=Ct.y1+ot}),rt.sourceLinks.forEach(function(Ct){Ct.y0=Ct.y0+ot})),rt}function Re(rt,ot,Rt,kt){rt.nodes.forEach(function(Ct){kt&&Ct.y+(Ct.y1-Ct.y0)>ot&&(Ct.y=Ct.y-(Ct.y+(Ct.y1-Ct.y0)-ot));var Yt=rt.links.filter(function(Ke){return C(Ke.source,Rt)==C(Ct,Rt)}),xr=Yt.length;xr>1&&Yt.sort(function(Ke,xt){if(!Ke.circular&&!xt.circular){if(Ke.target.column==xt.target.column)return Ke.y1-xt.y1;if(Ge(Ke,xt)){if(Ke.target.column>xt.target.column){var bt=Ae(xt,Ke);return Ke.y1-bt}if(xt.target.column>Ke.target.column){var Lt=Ae(Ke,xt);return Lt-xt.y1}}else return Ke.y1-xt.y1}if(Ke.circular&&!xt.circular)return Ke.circularLinkType=="top"?-1:1;if(xt.circular&&!Ke.circular)return xt.circularLinkType=="top"?1:-1;if(Ke.circular&&xt.circular)return Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="top"?Ke.target.column===xt.target.column?Ke.target.y1-xt.target.y1:xt.target.column-Ke.target.column:Ke.circularLinkType===xt.circularLinkType&&Ke.circularLinkType=="bottom"?Ke.target.column===xt.target.column?xt.target.y1-Ke.target.y1:Ke.target.column-xt.target.column:Ke.circularLinkType=="top"?-1:1});var er=Ct.y0;Yt.forEach(function(Ke){Ke.y0=er+Ke.width/2,er=er+Ke.width}),Yt.forEach(function(Ke,xt){if(Ke.circularLinkType=="bottom"){var bt=xt+1,Lt=0;for(bt;bt1&&Ct.sort(function(er,Ke){if(!er.circular&&!Ke.circular){if(er.source.column==Ke.source.column)return er.y0-Ke.y0;if(Ge(er,Ke)){if(Ke.source.column0?"up":"down"}function ct(rt,ot){return C(rt.source,ot)==C(rt.target,ot)}function qt(rt,ot,Rt){var kt=rt.nodes,Ct=rt.links,Yt=!1,xr=!1;if(Ct.forEach(function(St){St.circularLinkType=="top"?Yt=!0:St.circularLinkType=="bottom"&&(xr=!0)}),Yt==!1||xr==!1){var er=t.min(kt,function(St){return St.y0}),Ke=t.max(kt,function(St){return St.y1}),xt=Ke-er,bt=Rt-ot,Lt=bt/xt;kt.forEach(function(St){var Et=(St.y1-St.y0)*Lt;St.y0=(St.y0-er)*Lt,St.y1=St.y0+Et}),Ct.forEach(function(St){St.y0=(St.y0-er)*Lt,St.y1=(St.y1-er)*Lt,St.width=St.width*Lt})}}e.sankeyCircular=T,e.sankeyCenter=u,e.sankeyLeft=o,e.sankeyRight=s,e.sankeyJustify=l,Object.defineProperty(e,"__esModule",{value:!0})})});var IJ=ye((x_r,Pje)=>{"use strict";Pje.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}});var Gje=ye((b_r,Hje)=>{"use strict";var Ije=bje(),MWt=(R2(),B1(I2)).interpolateNumber,CA=xa(),Gk=Mje(),EWt=Lje(),pu=IJ(),LA=id(),aw=va(),kWt=ao(),p1=Mr(),zJ=p1.strTranslate,CWt=p1.strRotate,FJ=Km(),jk=FJ.keyFun,b7=FJ.repeat,Oje=FJ.unwrap,Rje=Pl(),LWt=ba(),Bje=Nh(),PWt=Bje.CAP_SHIFT,IWt=Bje.LINE_SPACING,RWt=3;function DWt(e,t,r){var n=Oje(t),i=n.trace,a=i.domain,o=i.orientation==="h",s=i.node.pad,l=i.node.thickness,u={justify:Gk.sankeyJustify,left:Gk.sankeyLeft,right:Gk.sankeyRight,center:Gk.sankeyCenter}[i.node.align],c=e.width*(a.x[1]-a.x[0]),f=e.height*(a.y[1]-a.y[0]),h=n._nodes,d=n._links,v=n.circular,x;v?x=EWt.sankeyCircular().circularLinkGap(0):x=Gk.sankey(),x.iterations(pu.sankeyIterations).size(o?[c,f]:[f,c]).nodeWidth(l).nodePadding(s).nodeId(function(V){return V.pointNumber}).nodeAlign(u).nodes(h).links(d);var b=x();x.nodePadding()=N||(G=N-X.y0,G>1e-6&&(X.y0+=G,X.y1+=G)),N=X.y1+s})}function P(V){var H=V.map(function(_e,Me){return{x0:_e.x0,index:Me}}).sort(function(_e,Me){return _e.x0-Me.x0}),X=[],G=-1,N,W=-1/0,re;for(p=0;pW+l&&(G+=1,N=ae.x0),W=ae.x0,X[G]||(X[G]=[]),X[G].push(ae),re=N-ae.x0,ae.x0+=re,ae.x1+=re}return X}if(i.node.x.length&&i.node.y.length){for(p=0;p0?" L "+i.targetX+" "+i.targetY:"")+"Z"):(r="M "+(i.targetX-t)+" "+(i.targetY-n)+" L "+(i.rightInnerExtent-t)+" "+(i.targetY-n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightSmallArcRadius+n)+" 0 0 0 "+(i.rightFullExtent-n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" L "+(i.rightFullExtent-n-t)+" "+i.verticalRightInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-n-t)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent+n-t-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:a?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent-t-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.leftFullExtent+n+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent:r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent+n)+" L "+i.leftInnerExtent+" "+(i.verticalFullExtent+n)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+i.verticalLeftInnerExtent,r+=" L "+(i.leftFullExtent+n)+" "+(i.sourceY+i.leftSmallArcRadius)+" A "+(i.leftLargeArcRadius+n)+" "+(i.leftSmallArcRadius+n)+" 0 0 0 "+i.leftInnerExtent+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY-n)+" L "+i.sourceX+" "+(i.sourceY+n)+" L "+i.leftInnerExtent+" "+(i.sourceY+n)+" A "+(i.leftLargeArcRadius-n)+" "+(i.leftSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n)+" "+(i.sourceY+i.leftSmallArcRadius)+" L "+(i.leftFullExtent-n)+" "+i.verticalLeftInnerExtent,a&&o?r+=" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.leftFullExtent-n-(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" L "+(i.rightFullExtent+n-t+(i.rightLargeArcRadius-n))+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:a?r+=" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.leftFullExtent+n)+" "+(i.verticalFullExtent+n)+" L "+(i.rightFullExtent-t-n)+" "+(i.verticalFullExtent+n)+" A "+(i.rightLargeArcRadius+n)+" "+(i.rightLargeArcRadius+n)+" 0 0 0 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent:r+=" A "+(i.leftLargeArcRadius-n)+" "+(i.leftLargeArcRadius-n)+" 0 0 1 "+i.leftInnerExtent+" "+(i.verticalFullExtent-n)+" L "+(i.rightInnerExtent-t)+" "+(i.verticalFullExtent-n)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightLargeArcRadius-n)+" 0 0 1 "+(i.rightFullExtent+n-t)+" "+i.verticalRightInnerExtent,r+=" L "+(i.rightFullExtent+n-t)+" "+(i.targetY+i.rightSmallArcRadius)+" A "+(i.rightLargeArcRadius-n)+" "+(i.rightSmallArcRadius-n)+" 0 0 1 "+(i.rightInnerExtent-t)+" "+(i.targetY+n)+" L "+(i.targetX-t)+" "+(i.targetY+n)+(t>0?" L "+i.targetX+" "+i.targetY:"")+"Z"),r}function qJ(){var e=.5;function t(r){var n=r.linkArrowLength;if(r.link.circular)return FWt(r.link,n);var i=Math.abs((r.link.target.x0-r.link.source.x1)/2);n>i&&(n=i);var a=r.link.source.x1,o=r.link.target.x0-n,s=MWt(a,o),l=s(e),u=s(1-e),c=r.link.y0-r.link.width/2,f=r.link.y0+r.link.width/2,h=r.link.y1-r.link.width/2,d=r.link.y1+r.link.width/2,v="M"+a+","+c,x="C"+l+","+c+" "+u+","+h+" "+o+","+h,b="C"+u+","+d+" "+l+","+f+" "+a+","+f,p=n>0?"L"+(o+n)+","+(h+r.link.width/2):"";return p+="L"+o+","+d,v+x+p+b+"Z"}return t}function qWt(e,t){var r=LA(t.color),n=pu.nodePadAcross,i=e.nodePad/2;t.dx=t.x1-t.x0,t.dy=t.y1-t.y0;var a=t.dx,o=Math.max(.5,t.dy),s="node_"+t.pointNumber;return t.group&&(s=p1.randstr()),t.trace=e.trace,t.curveNumber=e.trace.index,{index:t.pointNumber,key:s,partOfGroup:t.partOfGroup||!1,group:t.group,traceId:e.key,trace:e.trace,node:t,nodePad:e.nodePad,nodeLineColor:e.nodeLineColor,nodeLineWidth:e.nodeLineWidth,textFont:e.textFont,size:e.horizontal?e.height:e.width,visibleWidth:Math.ceil(a),visibleHeight:o,zoneX:-n,zoneY:-i,zoneWidth:a+2*n,zoneHeight:o+2*i,labelY:e.horizontal?t.dy/2+1:t.dx/2+1,left:t.originalLayer===1,sizeAcross:e.width,forceLayouts:e.forceLayouts,horizontal:e.horizontal,darkBackground:r.getBrightness()<=128,tinyColorHue:aw.tinyRGB(r),tinyColorAlpha:r.getAlpha(),valueFormat:e.valueFormat,valueSuffix:e.valueSuffix,sankey:e.sankey,graph:e.graph,arrangement:e.arrangement,uniqueNodeLabelPathId:[e.guid,e.key,s].join("_"),interactionState:e.interactionState,figure:e}}function DJ(e){e.attr("transform",function(t){return zJ(t.node.x0.toFixed(3),t.node.y0.toFixed(3))})}function OWt(e){e.call(DJ)}function Nje(e,t){e.call(OWt),t.attr("d",qJ())}function Dje(e){e.attr("width",function(t){return t.node.x1-t.node.x0}).attr("height",function(t){return t.visibleHeight})}function RJ(e){return e.link.width>1||e.linkLineWidth>0}function zje(e){var t=zJ(e.translateX,e.translateY);return t+(e.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function Fje(e,t,r){e.on(".basic",null).on("mouseover.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.hover(this,n,t),n.interactionState.hovered=[this,n])}).on("mousemove.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.follow(this,n),n.interactionState.hovered=[this,n])}).on("mouseout.basic",function(n){!n.interactionState.dragInProgress&&!n.partOfGroup&&(r.unhover(this,n,t),n.interactionState.hovered=!1)}).on("click.basic",function(n){n.interactionState.hovered&&(r.unhover(this,n,t),n.interactionState.hovered=!1),!n.interactionState.dragInProgress&&!n.partOfGroup&&r.select(this,n,t)})}function BWt(e,t,r,n){var i=CA.behavior.drag().origin(function(a){return{x:a.node.x0+a.visibleWidth/2,y:a.node.y0+a.visibleHeight/2}}).on("dragstart",function(a){if(a.arrangement!=="fixed"&&(p1.ensureSingle(n._fullLayout._infolayer,"g","dragcover",function(s){n._fullLayout._dragCover=s}),p1.raiseToTop(this),a.interactionState.dragInProgress=a.node,qje(a.node),a.interactionState.hovered&&(r.nodeEvents.unhover.apply(0,a.interactionState.hovered),a.interactionState.hovered=!1),a.arrangement==="snap")){var o=a.traceId+"|"+a.key;a.forceLayouts[o]?a.forceLayouts[o].alpha(1):NWt(e,o,a,n),UWt(e,t,a,o,n)}}).on("drag",function(a){if(a.arrangement!=="fixed"){var o=CA.event.x,s=CA.event.y;a.arrangement==="snap"?(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2,a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2):(a.arrangement==="freeform"&&(a.node.x0=o-a.visibleWidth/2,a.node.x1=o+a.visibleWidth/2),s=Math.max(0,Math.min(a.size-a.visibleHeight/2,s)),a.node.y0=s-a.visibleHeight/2,a.node.y1=s+a.visibleHeight/2),qje(a.node),a.arrangement!=="snap"&&(a.sankey.update(a.graph),Nje(e.filter(Vje(a)),t))}}).on("dragend",function(a){if(a.arrangement!=="fixed"){a.interactionState.dragInProgress=!1;for(var o=0;o0)window.requestAnimationFrame(a);else{var l=r.node.originalX;r.node.x0=l-r.visibleWidth/2,r.node.x1=l+r.visibleWidth/2,Uje(r,i)}})}function VWt(e,t,r,n){return function(){for(var a=0,o=0;o0&&n.forceLayouts[t].alpha(0)}}function Uje(e,t){for(var r=[],n=[],i=0;i{"use strict";var Zv=xa(),BJ=Mr(),w7=BJ.numberFormat,WWt=Gje(),PA=Nc(),ZWt=va(),Sx=IJ().cn,Wk=BJ._;function jje(e){return e!==""}function IA(e,t){return e.filter(function(r){return r.key===t.traceId})}function Wje(e,t){Zv.select(e).select("path").style("fill-opacity",t),Zv.select(e).select("rect").style("fill-opacity",t)}function Zje(e){Zv.select(e).select("text.name").style("fill","black")}function Xje(e){return function(t){return e.node.sourceLinks.indexOf(t.link)!==-1||e.node.targetLinks.indexOf(t.link)!==-1}}function Yje(e){return function(t){return t.node.sourceLinks.indexOf(e.link)!==-1||t.node.targetLinks.indexOf(e.link)!==-1}}function Kje(e,t,r){t&&r&&IA(r,t).selectAll("."+Sx.sankeyLink).filter(Xje(t)).call(Jje.bind(0,t,r,!1))}function OJ(e,t,r){t&&r&&IA(r,t).selectAll("."+Sx.sankeyLink).filter(Xje(t)).call($je.bind(0,t,r,!1))}function Jje(e,t,r,n){n.style("fill",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverHue}).style("fill-opacity",function(i){if(!i.link.concentrationscale)return i.tinyColorHoverAlpha}),n.each(function(i){var a=i.link.label;a!==""&&IA(t,e).selectAll("."+Sx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverHue}).style("fill-opacity",function(o){if(!o.link.concentrationscale)return o.tinyColorHoverAlpha})}),r&&IA(t,e).selectAll("."+Sx.sankeyNode).filter(Yje(e)).call(Kje)}function $je(e,t,r,n){n.style("fill",function(i){return i.tinyColorHue}).style("fill-opacity",function(i){return i.tinyColorAlpha}),n.each(function(i){var a=i.link.label;a!==""&&IA(t,e).selectAll("."+Sx.sankeyLink).filter(function(o){return o.link.label===a}).style("fill",function(o){return o.tinyColorHue}).style("fill-opacity",function(o){return o.tinyColorAlpha})}),r&&IA(t,e).selectAll(Sx.sankeyNode).filter(Yje(e)).call(OJ)}function lf(e,t){var r=e.hoverlabel||{},n=BJ.nestedProperty(r,t).get();return Array.isArray(n)?!1:n}Qje.exports=function(t,r){for(var n=t._fullLayout,i=n._paper,a=n._size,o=0;o"),color:lf(C,"bgcolor")||ZWt.addOpacity(F.color,1),borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:Zv.event.x"),color:lf(C,"bgcolor")||_.tinyColorHue,borderColor:lf(C,"bordercolor"),fontFamily:lf(C,"font.family"),fontSize:lf(C,"font.size"),fontColor:lf(C,"font.color"),fontWeight:lf(C,"font.weight"),fontStyle:lf(C,"font.style"),fontVariant:lf(C,"font.variant"),fontTextcase:lf(C,"font.textcase"),fontLineposition:lf(C,"font.lineposition"),fontShadow:lf(C,"font.shadow"),nameLength:lf(C,"namelength"),textAlign:lf(C,"align"),idealAlign:"left",hovertemplate:C.hovertemplate,hovertemplateLabels:V,eventData:[_.node]},{container:n._hoverlayer.node(),outerContainer:n._paper.node(),gd:t});Wje(G,.85),Zje(G)}}},A=function(L,_,C){t._fullLayout.hovermode!==!1&&(Zv.select(L).call(OJ,_,C),_.node.trace.node.hoverinfo!=="skip"&&(_.node.fullData=_.node.trace,t.emit("plotly_unhover",{event:Zv.event,points:[_.node]})),PA.loneUnhover(n._hoverlayer.node()))};WWt(t,i,r,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},{linkEvents:{hover:u,follow:x,unhover:b,select:l},nodeEvents:{hover:E,follow:k,unhover:A,select:p}})}});var eWe=ye(ow=>{"use strict";var XWt=Bu().overrideAll,YWt=kd().getModuleCalcData,KWt=NJ(),JWt=N1(),$Wt=Tg(),QWt=gv(),eZt=wf().prepSelect,UJ=Mr(),tZt=ba(),T7="sankey";ow.name=T7;ow.baseLayoutAttrOverrides=XWt({hoverlabel:JWt.hoverlabel},"plot","nested");ow.plot=function(e){var t=YWt(e.calcdata,T7)[0];KWt(e,t),ow.updateFx(e)};ow.clean=function(e,t,r,n){var i=n._has&&n._has(T7),a=t._has&&t._has(T7);i&&!a&&(n._paperdiv.selectAll(".sankey").remove(),n._paperdiv.selectAll(".bgsankey").remove())};ow.updateFx=function(e){for(var t=0;t{"use strict";tWe.exports=function(t,r){for(var n=t.cd,i=[],a=n[0].trace,o=a._sankey.graph.nodes,s=0;s{"use strict";iWe.exports={attributes:CJ(),supplyDefaults:sje(),calc:hje(),plot:NJ(),moduleType:"trace",name:"sankey",basePlotModule:eWe(),selectPoints:rWe(),categories:["noOpacity"],meta:{}}});var oWe=ye((M_r,aWe)=>{"use strict";aWe.exports=nWe()});var lWe=ye(RA=>{"use strict";var sWe=Xu();RA.name="indicator";RA.plot=function(e,t,r,n){sWe.plotBasePlot(RA.name,e,t,r,n)};RA.clean=function(e,t,r,n){sWe.cleanBasePlot(RA.name,e,t,r,n)}});var HJ=ye((k_r,vWe)=>{"use strict";var Mx=no().extendFlat,cWe=no().extendDeep,iZt=Bu().overrideAll,fWe=Su(),hWe=dh(),nZt=Ju().attributes,Sf=Cd(),aZt=Vs().templatedArray,A7=HT(),uWe=Oc().descriptionOnlyNumbers,VJ=fWe({editType:"plot",colorEditType:"plot"}),Zk={color:{valType:"color",editType:"plot"},line:{color:{valType:"color",dflt:hWe.defaultLine,editType:"plot"},width:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},thickness:{valType:"number",min:0,max:1,dflt:1,editType:"plot"},editType:"calc"},dWe={valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],editType:"plot"},oZt=aZt("step",cWe({},Zk,{range:dWe}));vWe.exports={mode:{valType:"flaglist",editType:"calc",flags:["number","delta","gauge"],dflt:"number"},value:{valType:"number",editType:"calc",anim:!0},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},domain:nZt({name:"indicator",trace:!0,editType:"calc"}),title:{text:{valType:"string",editType:"plot"},align:{valType:"enumerated",values:["left","center","right"],editType:"plot"},font:Mx({},VJ,{}),editType:"plot"},number:{valueformat:{valType:"string",dflt:"",editType:"plot",description:uWe("value")},font:Mx({},VJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"plot"},delta:{reference:{valType:"number",editType:"calc"},position:{valType:"enumerated",values:["top","bottom","left","right"],dflt:"bottom",editType:"plot"},relative:{valType:"boolean",editType:"plot",dflt:!1},valueformat:{valType:"string",editType:"plot",description:uWe("value")},increasing:{symbol:{valType:"string",dflt:A7.INCREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:A7.INCREASING.COLOR,editType:"plot"},editType:"plot"},decreasing:{symbol:{valType:"string",dflt:A7.DECREASING.SYMBOL,editType:"plot"},color:{valType:"color",dflt:A7.DECREASING.COLOR,editType:"plot"},editType:"plot"},font:Mx({},VJ,{}),prefix:{valType:"string",dflt:"",editType:"plot"},suffix:{valType:"string",dflt:"",editType:"plot"},editType:"calc"},gauge:{shape:{valType:"enumerated",editType:"plot",dflt:"angular",values:["angular","bullet"]},bar:cWe({},Zk,{color:{dflt:"green"}}),bgcolor:{valType:"color",editType:"plot"},bordercolor:{valType:"color",dflt:hWe.defaultLine,editType:"plot"},borderwidth:{valType:"number",min:0,dflt:1,editType:"plot"},axis:iZt({range:dWe,visible:Mx({},Sf.visible,{dflt:!0}),tickmode:Sf.minor.tickmode,nticks:Sf.nticks,tick0:Sf.tick0,dtick:Sf.dtick,tickvals:Sf.tickvals,ticktext:Sf.ticktext,ticks:Mx({},Sf.ticks,{dflt:"outside"}),ticklen:Sf.ticklen,tickwidth:Sf.tickwidth,tickcolor:Sf.tickcolor,ticklabelstep:Sf.ticklabelstep,showticklabels:Sf.showticklabels,labelalias:Sf.labelalias,tickfont:fWe({}),tickangle:Sf.tickangle,tickformat:Sf.tickformat,tickformatstops:Sf.tickformatstops,tickprefix:Sf.tickprefix,showtickprefix:Sf.showtickprefix,ticksuffix:Sf.ticksuffix,showticksuffix:Sf.showticksuffix,separatethousands:Sf.separatethousands,exponentformat:Sf.exponentformat,minexponent:Sf.minexponent,showexponent:Sf.showexponent,editType:"plot"},"plot"),steps:oZt,threshold:{line:{color:Mx({},Zk.line.color,{}),width:Mx({},Zk.line.width,{dflt:1}),editType:"plot"},thickness:Mx({},Zk.thickness,{dflt:.85}),value:{valType:"number",editType:"calc",dflt:!1},editType:"plot"},editType:"plot"}}});var GJ=ye((C_r,pWe)=>{"use strict";pWe.exports={defaultNumberFontSize:80,bulletNumberDomainSize:.25,bulletPadding:.025,innerRadius:.75,valueThickness:.5,titlePadding:5,horizontalPadding:10}});var yWe=ye((L_r,mWe)=>{"use strict";var ey=Mr(),M7=HJ(),sZt=Ju().defaults,gWe=Vs(),lZt=Zd(),S7=GJ(),uZt=xb(),cZt=T3(),fZt=t_(),hZt=r_();function dZt(e,t,r,n){function i(_,C){return ey.coerce(e,t,M7,_,C)}sZt(t,n,i),i("mode"),t._hasNumber=t.mode.indexOf("number")!==-1,t._hasDelta=t.mode.indexOf("delta")!==-1,t._hasGauge=t.mode.indexOf("gauge")!==-1;var a=i("value");t._range=[0,typeof a=="number"?1.5*a:1];var o=new Array(2),s;if(t._hasNumber){i("number.valueformat");var l=ey.extendFlat({},n.font);l.size=void 0,ey.coerceFont(i,"number.font",l),t.number.font.size===void 0&&(t.number.font.size=S7.defaultNumberFontSize,o[0]=!0),i("number.prefix"),i("number.suffix"),s=t.number.font.size}var u;if(t._hasDelta){var c=ey.extendFlat({},n.font);c.size=void 0,ey.coerceFont(i,"delta.font",c),t.delta.font.size===void 0&&(t.delta.font.size=(t._hasNumber?.5:1)*(s||S7.defaultNumberFontSize),o[1]=!0),i("delta.reference",t.value),i("delta.relative"),i("delta.valueformat",t.delta.relative?"2%":""),i("delta.increasing.symbol"),i("delta.increasing.color"),i("delta.decreasing.symbol"),i("delta.decreasing.color"),i("delta.position"),i("delta.prefix"),i("delta.suffix"),u=t.delta.font.size}t._scaleNumbers=(!t._hasNumber||o[0])&&(!t._hasDelta||o[1])||!1;var f=ey.extendFlat({},n.font);f.size=.25*(s||u||S7.defaultNumberFontSize),ey.coerceFont(i,"title.font",f),i("title.text");var h,d,v,x;function b(_,C){return ey.coerce(h,d,M7.gauge,_,C)}function p(_,C){return ey.coerce(v,x,M7.gauge.axis,_,C)}if(t._hasGauge){h=e.gauge,h||(h={}),d=gWe.newContainer(t,"gauge"),b("shape");var E=t._isBullet=t.gauge.shape==="bullet";E||i("title.align","center");var k=t._isAngular=t.gauge.shape==="angular";k||i("align","center"),b("bgcolor",n.paper_bgcolor),b("borderwidth"),b("bordercolor"),b("bar.color"),b("bar.line.color"),b("bar.line.width");var A=S7.valueThickness*(t.gauge.shape==="bullet"?.5:1);b("bar.thickness",A),lZt(h,d,{name:"steps",handleItemDefaults:vZt}),b("threshold.value"),b("threshold.thickness"),b("threshold.line.width"),b("threshold.line.color"),v={},h&&(v=h.axis||{}),x=gWe.newContainer(d,"axis"),p("visible"),t._range=p("range",t._range);var L={font:n.font,noAutotickangles:!0,outerTicks:!0,noTicklabelshift:!0,noTicklabelstandoff:!0};uZt(v,x,p,"linear"),hZt(v,x,p,"linear",L),fZt(v,x,p,"linear",L),cZt(v,x,p,L)}else i("title.align","center"),i("align","center"),t._isAngular=t._isBullet=!1;t._length=null}function vZt(e,t){function r(n,i){return ey.coerce(e,t,M7.gauge.steps,n,i)}r("color"),r("line.color"),r("line.width"),r("range"),r("thickness")}mWe.exports={supplyDefaults:dZt}});var xWe=ye((P_r,_We)=>{"use strict";function pZt(e,t){var r=[],n=t.value;typeof t._lastValue!="number"&&(t._lastValue=t.value);var i=t._lastValue,a=i;return t._hasDelta&&typeof t.delta.reference=="number"&&(a=t.delta.reference),r[0]={y:n,lastY:i,delta:n-a,relativeDelta:(n-a)/a},r}_We.exports={calc:pZt}});var MWe=ye((I_r,SWe)=>{"use strict";var fw=xa(),gZt=(R2(),B1(I2)).interpolate,bWe=(R2(),B1(I2)).interpolateNumber,Ex=Mr(),mZt=Ex.strScale,Yk=Ex.strTranslate,yZt=Ex.rad2deg,_Zt=Nh().MID_SHIFT,cw=ao(),sw=GJ(),k7=Pl(),av=Qa(),xZt=JM(),bZt=iI(),wZt=Cd(),DA=va(),jJ={left:"start",center:"middle",right:"end"},lw={left:0,center:.5,right:1},wWe=/[yzafpnµmkMGTPEZY]/;function Kk(e){return e&&e.duration>0}SWe.exports=function(t,r,n,i){var a=t._fullLayout,o;Kk(n)&&i&&(o=i()),Ex.makeTraceGroups(a._indicatorlayer,r,"trace").each(function(s){var l=s[0],u=l.trace,c=fw.select(this),f=u._hasGauge,h=u._isAngular,d=u._isBullet,v=u.domain,x={w:a._size.w*(v.x[1]-v.x[0]),h:a._size.h*(v.y[1]-v.y[0]),l:a._size.l+a._size.w*v.x[0],r:a._size.r+a._size.w*(1-v.x[1]),t:a._size.t+a._size.h*(1-v.y[1]),b:a._size.b+a._size.h*v.y[0]},b=x.l+x.w/2,p=x.t+x.h/2,E=Math.min(x.w/2,x.h),k=sw.innerRadius*E,A,L,_,C=u.align||"center";if(L=p,!f)A=x.l+lw[C]*x.w,_=function(G){return TWe(G,x.w,x.h)};else if(h&&(A=b,L=p+E/2,_=function(G){return EZt(G,.9*k)}),d){var M=sw.bulletPadding,g=1-sw.bulletNumberDomainSize+M;A=x.l+(g+(1-g)*lw[C])*x.w,_=function(G){return TWe(G,(sw.bulletNumberDomainSize-M)*x.w,x.h)}}SZt(t,c,s,{numbersX:A,numbersY:L,numbersScaler:_,transitionOpts:n,onComplete:o});var P,T;f&&(P={range:u.gauge.axis.range,color:u.gauge.bgcolor,line:{color:u.gauge.bordercolor,width:0},thickness:1},T={range:u.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:u.gauge.bordercolor,width:u.gauge.borderwidth},thickness:1});var F=c.selectAll("g.angular").data(h?s:[]);F.exit().remove();var q=c.selectAll("g.angularaxis").data(h?s:[]);q.exit().remove(),h&&AZt(t,c,s,{radius:E,innerRadius:k,gauge:F,layer:q,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var V=c.selectAll("g.bullet").data(d?s:[]);V.exit().remove();var H=c.selectAll("g.bulletaxis").data(d?s:[]);H.exit().remove(),d&&TZt(t,c,s,{gauge:V,layer:H,size:x,gaugeBg:P,gaugeOutline:T,transitionOpts:n,onComplete:o});var X=c.selectAll("text.title").data(s);X.exit().remove(),X.enter().append("text").classed("title",!0),X.attr("text-anchor",function(){return d?jJ.right:jJ[u.title.align]}).text(u.title.text).call(cw.font,u.title.font).call(k7.convertToTspans,t),X.attr("transform",function(){var G=x.l+x.w*lw[u.title.align],N,W=sw.titlePadding,re=cw.bBox(X.node());if(f){if(h)if(u.gauge.axis.visible){var ae=cw.bBox(q.node());N=ae.top-W-re.bottom}else N=x.t+x.h/2-E/2-re.bottom-W;d&&(N=L-(re.top+re.bottom)/2,G=x.l-sw.bulletPadding*x.w)}else N=u._numbersTop-W-re.bottom;return Yk(G,N)})})};function TZt(e,t,r,n){var i=r[0].trace,a=n.gauge,o=n.layer,s=n.gaugeBg,l=n.gaugeOutline,u=n.size,c=i.domain,f=n.transitionOpts,h=n.onComplete,d,v,x,b,p;a.enter().append("g").classed("bullet",!0),a.attr("transform",Yk(u.l,u.t)),o.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),o.selectAll("g.xbulletaxistick,path,text").remove();var E=u.h,k=i.gauge.bar.thickness*E,A=c.x[0],L=c.x[0]+(c.x[1]-c.x[0])*(i._hasNumber||i._hasDelta?1-sw.bulletNumberDomainSize:1);d=Xk(e,i.gauge.axis),d._id="xbulletaxis",d.domain=[A,L],d.setScale(),v=av.calcTicks(d),x=av.makeTransTickFn(d),b=av.getTickSigns(d)[2],p=u.t+u.h,d.visible&&(av.drawTicks(e,d,{vals:d.ticks==="inside"?av.clipEnds(d,v):v,layer:o,path:av.makeTickPath(d,p,b),transFn:x}),av.drawLabels(e,d,{vals:v,layer:o,transFn:x,labelFns:av.makeLabelFns(d,p)}));function _(q){q.attr("width",function(V){return Math.max(0,d.c2p(V.range[1])-d.c2p(V.range[0]))}).attr("x",function(V){return d.c2p(V.range[0])}).attr("y",function(V){return .5*(1-V.thickness)*E}).attr("height",function(V){return V.thickness*E})}var C=[s].concat(i.gauge.steps),M=a.selectAll("g.bg-bullet").data(C);M.enter().append("g").classed("bg-bullet",!0).append("rect"),M.select("rect").call(_).call(uw),M.exit().remove();var g=a.selectAll("g.value-bullet").data([i.gauge.bar]);g.enter().append("g").classed("value-bullet",!0).append("rect"),g.select("rect").attr("height",k).attr("y",(E-k)/2).call(uw),Kk(f)?g.select("rect").transition().duration(f.duration).ease(f.easing).each("end",function(){h&&h()}).each("interrupt",function(){h&&h()}).attr("width",Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y)))):g.select("rect").attr("width",typeof r[0].y=="number"?Math.max(0,d.c2p(Math.min(i.gauge.axis.range[1],r[0].y))):0),g.exit().remove();var P=r.filter(function(){return i.gauge.threshold.value||i.gauge.threshold.value===0}),T=a.selectAll("g.threshold-bullet").data(P);T.enter().append("g").classed("threshold-bullet",!0).append("line"),T.select("line").attr("x1",d.c2p(i.gauge.threshold.value)).attr("x2",d.c2p(i.gauge.threshold.value)).attr("y1",(1-i.gauge.threshold.thickness)/2*E).attr("y2",(1-(1-i.gauge.threshold.thickness)/2)*E).call(DA.stroke,i.gauge.threshold.line.color).style("stroke-width",i.gauge.threshold.line.width),T.exit().remove();var F=a.selectAll("g.gauge-outline").data([l]);F.enter().append("g").classed("gauge-outline",!0).append("rect"),F.select("rect").call(_).call(uw),F.exit().remove()}function AZt(e,t,r,n){var i=r[0].trace,a=n.size,o=n.radius,s=n.innerRadius,l=n.gaugeBg,u=n.gaugeOutline,c=[a.l+a.w/2,a.t+a.h/2+o/2],f=n.gauge,h=n.layer,d=n.transitionOpts,v=n.onComplete,x=Math.PI/2;function b(_e){var Me=i.gauge.axis.range[0],ke=i.gauge.axis.range[1],ge=(_e-Me)/(ke-Me)*Math.PI-x;return ge<-x?-x:ge>x?x:ge}function p(_e){return fw.svg.arc().innerRadius((s+o)/2-_e/2*(o-s)).outerRadius((s+o)/2+_e/2*(o-s)).startAngle(-x)}function E(_e){_e.attr("d",function(Me){return p(Me.thickness).startAngle(b(Me.range[0])).endAngle(b(Me.range[1]))()})}var k,A,L,_;f.enter().append("g").classed("angular",!0),f.attr("transform",Yk(c[0],c[1])),h.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),h.selectAll("g.xangularaxistick,path,text").remove(),k=Xk(e,i.gauge.axis),k.type="linear",k.range=i.gauge.axis.range,k._id="xangularaxis",k.ticklabeloverflow="allow",k.setScale();var C=function(_e){return(k.range[0]-_e.x)/(k.range[1]-k.range[0])*Math.PI+Math.PI},M={},g=av.makeLabelFns(k,0),P=g.labelStandoff;M.xFn=function(_e){var Me=C(_e);return Math.cos(Me)*P},M.yFn=function(_e){var Me=C(_e),ke=Math.sin(Me)>0?.2:1;return-Math.sin(Me)*(P+_e.fontSize*ke)+Math.abs(Math.cos(Me))*(_e.fontSize*_Zt)},M.anchorFn=function(_e){var Me=C(_e),ke=Math.cos(Me);return Math.abs(ke)<.1?"middle":ke>0?"start":"end"},M.heightFn=function(_e,Me,ke){var ge=C(_e);return-.5*(1+Math.sin(ge))*ke};var T=function(_e){return Yk(c[0]+o*Math.cos(_e),c[1]-o*Math.sin(_e))};L=function(_e){return T(C(_e))};var F=function(_e){var Me=C(_e);return T(Me)+"rotate("+-yZt(Me)+")"};if(A=av.calcTicks(k),_=av.getTickSigns(k)[2],k.visible){_=k.ticks==="inside"?-1:1;var q=(k.linewidth||1)/2;av.drawTicks(e,k,{vals:A,layer:h,path:"M"+_*q+",0h"+_*k.ticklen,transFn:F}),av.drawLabels(e,k,{vals:A,layer:h,transFn:L,labelFns:M})}var V=[l].concat(i.gauge.steps),H=f.selectAll("g.bg-arc").data(V);H.enter().append("g").classed("bg-arc",!0).append("path"),H.select("path").call(E).call(uw),H.exit().remove();var X=p(i.gauge.bar.thickness),G=f.selectAll("g.value-arc").data([i.gauge.bar]);G.enter().append("g").classed("value-arc",!0).append("path");var N=G.select("path");Kk(d)?(N.transition().duration(d.duration).ease(d.easing).each("end",function(){v&&v()}).each("interrupt",function(){v&&v()}).attrTween("d",MZt(X,b(r[0].lastY),b(r[0].y))),i._lastValue=r[0].y):N.attr("d",typeof r[0].y=="number"?X.endAngle(b(r[0].y)):"M0,0Z"),N.call(uw),G.exit().remove(),V=[];var W=i.gauge.threshold.value;(W||W===0)&&V.push({range:[W,W],color:i.gauge.threshold.color,line:{color:i.gauge.threshold.line.color,width:i.gauge.threshold.line.width},thickness:i.gauge.threshold.thickness});var re=f.selectAll("g.threshold-arc").data(V);re.enter().append("g").classed("threshold-arc",!0).append("path"),re.select("path").call(E).call(uw),re.exit().remove();var ae=f.selectAll("g.gauge-outline").data([u]);ae.enter().append("g").classed("gauge-outline",!0).append("path"),ae.select("path").call(E).call(uw),ae.exit().remove()}function SZt(e,t,r,n){var i=r[0].trace,a=n.numbersX,o=n.numbersY,s=i.align||"center",l=jJ[s],u=n.transitionOpts,c=n.onComplete,f=Ex.ensureSingle(t,"g","numbers"),h,d,v,x=[];i._hasNumber&&x.push("number"),i._hasDelta&&(x.push("delta"),i.delta.position==="left"&&x.reverse());var b=f.selectAll("text").data(x);b.enter().append("text"),b.attr("text-anchor",function(){return l}).attr("class",function(T){return T}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),b.exit().remove();function p(T,F,q,V){if(T.match("s")&&q>=0!=V>=0&&!F(q).slice(-1).match(wWe)&&!F(V).slice(-1).match(wWe)){var H=T.slice().replace("s","f").replace(/\d+/,function(G){return parseInt(G)-1}),X=Xk(e,{tickformat:H});return function(G){return Math.abs(G)<1?av.tickText(X,G).text:F(G)}}else return F}function E(){var T=Xk(e,{tickformat:i.number.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(G){return av.tickText(T,G).text},q=i.number.suffix,V=i.number.prefix,H=f.select("text.number");function X(){var G=typeof r[0].y=="number"?V+F(r[0].y)+q:"-";H.text(G).call(cw.font,i.number.font).call(k7.convertToTspans,e)}return Kk(u)?H.transition().duration(u.duration).ease(u.easing).each("end",function(){X(),c&&c()}).each("interrupt",function(){X(),c&&c()}).attrTween("text",function(){var G=fw.select(this),N=bWe(r[0].lastY,r[0].y);i._lastValue=r[0].y;var W=p(i.number.valueformat,F,r[0].lastY,r[0].y);return function(re){G.text(V+W(N(re))+q)}}):X(),h=AWe(V+F(r[0].y)+q,i.number.font,l,e),H}function k(){var T=Xk(e,{tickformat:i.delta.valueformat},i._range);T.setScale(),av.prepTicks(T);var F=function(re){return av.tickText(T,re).text},q=i.delta.suffix,V=i.delta.prefix,H=function(re){var ae=i.delta.relative?re.relativeDelta:re.delta;return ae},X=function(re,ae){return re===0||typeof re!="number"||isNaN(re)?"-":(re>0?i.delta.increasing.symbol:i.delta.decreasing.symbol)+V+ae(re)+q},G=function(re){return re.delta>=0?i.delta.increasing.color:i.delta.decreasing.color};i._deltaLastValue===void 0&&(i._deltaLastValue=H(r[0]));var N=f.select("text.delta");N.call(cw.font,i.delta.font).call(DA.fill,G({delta:i._deltaLastValue}));function W(){N.text(X(H(r[0]),F)).call(DA.fill,G(r[0])).call(k7.convertToTspans,e)}return Kk(u)?N.transition().duration(u.duration).ease(u.easing).tween("text",function(){var re=fw.select(this),ae=H(r[0]),_e=i._deltaLastValue,Me=p(i.delta.valueformat,F,_e,ae),ke=bWe(_e,ae);return i._deltaLastValue=ae,function(ge){re.text(X(ke(ge),Me)),re.call(DA.fill,G({delta:ke(ge)}))}}).each("end",function(){W(),c&&c()}).each("interrupt",function(){W(),c&&c()}):W(),d=AWe(X(H(r[0]),F),i.delta.font,l,e),N}var A=i.mode+i.align,L;if(i._hasDelta&&(L=k(),A+=i.delta.position+i.delta.font.size+i.delta.font.family+i.delta.valueformat,A+=i.delta.increasing.symbol+i.delta.decreasing.symbol,v=d),i._hasNumber&&(E(),A+=i.number.font.size+i.number.font.family+i.number.valueformat+i.number.suffix+i.number.prefix,v=h),i._hasDelta&&i._hasNumber){var _=[(h.left+h.right)/2,(h.top+h.bottom)/2],C=[(d.left+d.right)/2,(d.top+d.bottom)/2],M,g,P=.75*i.delta.font.size;i.delta.position==="left"&&(M=E7(i,"deltaPos",0,-1*(h.width*lw[i.align]+d.width*(1-lw[i.align])+P),A,Math.min),g=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:d.left+M,right:h.right,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="right"&&(M=E7(i,"deltaPos",0,h.width*(1-lw[i.align])+d.width*lw[i.align]+P,A,Math.max),g=_[1]-C[1],v={width:h.width+d.width+P,height:Math.max(h.height,d.height),left:h.left,right:d.right+M,top:Math.min(h.top,d.top+g),bottom:Math.max(h.bottom,d.bottom+g)}),i.delta.position==="bottom"&&(M=null,g=d.height,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height,bottom:h.bottom+d.height}),i.delta.position==="top"&&(M=null,g=h.top,v={width:Math.max(h.width,d.width),height:h.height+d.height,left:Math.min(h.left,d.left),right:Math.max(h.right,d.right),top:h.bottom-h.height-d.height,bottom:h.bottom}),L.attr({dx:M,dy:g})}(i._hasNumber||i._hasDelta)&&f.attr("transform",function(){var T=n.numbersScaler(v);A+=T[2];var F=E7(i,"numbersScale",1,T[0],A,Math.min),q;i._scaleNumbers||(F=1),i._isAngular?q=o-F*v.bottom:q=o-F*(v.top+v.bottom)/2,i._numbersTop=F*v.top+q;var V=v[s];s==="center"&&(V=(v.left+v.right)/2);var H=a-F*V;return H=E7(i,"numbersTranslate",0,H,A,Math.max),Yk(H,q)+mZt(F)})}function uw(e){e.each(function(t){DA.stroke(fw.select(this),t.line.color)}).each(function(t){DA.fill(fw.select(this),t.color)}).style("stroke-width",function(t){return t.line.width})}function MZt(e,t,r){return function(){var n=gZt(t,r);return function(i){return e.endAngle(n(i))()}}}function Xk(e,t,r){var n=e._fullLayout,i=Ex.extendFlat({type:"linear",ticks:"outside",range:r,showline:!0},t),a={type:"linear",_id:"x"+t._id},o={letter:"x",font:n.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function s(l,u){return Ex.coerce(i,a,wZt,l,u)}return xZt(i,a,s,o,n),bZt(i,a,s,o),a}function TWe(e,t,r){var n=Math.min(t/e.width,r/e.height);return[n,e,t+"x"+r]}function EZt(e,t){var r=Math.sqrt(e.width/2*(e.width/2)+e.height*e.height),n=t/r;return[n,e,t]}function AWe(e,t,r,n){var i=document.createElementNS("http://www.w3.org/2000/svg","text"),a=fw.select(i);return a.text(e).attr("x",0).attr("y",0).attr("text-anchor",r).attr("data-unformatted",e).call(k7.convertToTspans,n).call(cw.font,t),cw.bBox(a.node())}function E7(e,t,r,n,i,a){var o="_cache"+t;e[o]&&e[o].key===i||(e[o]={key:i,value:r});var s=Ex.aggNums(a,null,[e[o].value,n],2);return e[o].value=s,s}});var kWe=ye((R_r,EWe)=>{"use strict";EWe.exports={moduleType:"trace",name:"indicator",basePlotModule:lWe(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:HJ(),supplyDefaults:yWe().supplyDefaults,calc:xWe().calc,plot:MWe(),meta:{}}});var LWe=ye((D_r,CWe)=>{"use strict";CWe.exports=kWe()});var WJ=ye((F_r,DWe)=>{"use strict";var PWe=Nb(),C7=no().extendFlat,kZt=Bu().overrideAll,IWe=Su(),CZt=Ju().attributes,RWe=Oc().descriptionOnlyNumbers,z_r=DWe.exports=kZt({domain:CZt({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:RWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:C7({},PWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:C7({},IWe({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:RWe("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:C7({},PWe.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:C7({},IWe({arrayOk:!0}))}},"calc","from-root")});var FWe=ye((q_r,zWe)=>{"use strict";var ZJ=Mr(),LZt=WJ(),PZt=Ju().defaults;function IZt(e,t){for(var r=e.columnorder||[],n=e.header.values.length,i=r.slice(0,n),a=i.slice().sort(function(l,u){return l-u}),o=i.map(function(l){return a.indexOf(l)}),s=o.length;s{"use strict";var RZt=Km().wrap;qWe.exports=function(){return RZt({})}});var XJ=ye((B_r,BWe)=>{"use strict";BWe.exports={cellPad:8,columnExtentOffset:10,columnTitleOffset:28,emptyHeaderHeight:16,latexCheck:/^\$.*\$$/,goldenRatio:1.618,lineBreaker:"
",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}});var XWe=ye((N_r,ZWe)=>{"use strict";var NWe=XJ(),KJ=no().extendFlat,DZt=uo(),zZt=vv().isTypedArray,L7=vv().isArrayOrTypedArray;ZWe.exports=function(t,r){var n=YJ(r.cells.values),i=function(g){return g.slice(r.header.values.length,g.length)},a=YJ(r.header.values);a.length&&!a[0].length&&(a[0]=[""],a=YJ(a));var o=a.concat(i(n).map(function(){return WWe((a[0]||[""]).length)})),s=r.domain,l=Math.floor(t._fullLayout._size.w*(s.x[1]-s.x[0])),u=Math.floor(t._fullLayout._size.h*(s.y[1]-s.y[0])),c=r.header.values.length?o[0].map(function(){return r.header.height}):[NWe.emptyHeaderHeight],f=n.length?n[0].map(function(){return r.cells.height}):[],h=c.reduce(UWe,0),d=u-h,v=d+NWe.uplift,x=GWe(f,v),b=GWe(c,h),p=HWe(b,[]),E=HWe(x,p),k={},A=r._fullInput.columnorder;L7(A)&&(A=Array.from(A)),A=A.concat(i(n.map(function(g,P){return P})));var L=o.map(function(g,P){var T=L7(r.columnwidth)?r.columnwidth[Math.min(P,r.columnwidth.length-1)]:r.columnwidth;return DZt(T)?Number(T):1}),_=L.reduce(UWe,0);L=L.map(function(g){return g/_*l});var C=Math.max(JJ(r.header.line.width),JJ(r.cells.line.width)),M={key:r.uid+t._context.staticPlot,translateX:s.x[0]*t._fullLayout._size.w,translateY:t._fullLayout._size.h*(1-s.y[1]),size:t._fullLayout._size,width:l,maxLineWidth:C,height:u,columnOrder:A,groupHeight:u,rowBlocks:E,headerRowBlocks:p,scrollY:0,cells:KJ({},r.cells,{values:n}),headerCells:KJ({},r.header,{values:o}),gdColumns:o.map(function(g){return g[0]}),gdColumnsOriginalOrder:o.map(function(g){return g[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:o.map(function(g,P){var T=k[g];k[g]=(T||0)+1;var F=g+"__"+k[g];return{key:F,label:g,specIndex:P,xIndex:A[P],xScale:VWe,x:void 0,calcdata:void 0,columnWidth:L[P]}})};return M.columns.forEach(function(g){g.calcdata=M,g.x=VWe(g)}),M};function JJ(e){if(L7(e)){for(var t=0,r=0;r=t||u===e.length-1)&&(r[i]=o,o.key=l++,o.firstRowIndex=s,o.lastRowIndex=u,o=jWe(),i+=a,s=u+1,a=0);return r}function jWe(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}});var YWe=ye($J=>{"use strict";var P7=no().extendFlat;$J.splitToPanels=function(e){var t=[0,0],r=P7({},e,{key:"header",type:"header",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!0,values:e.calcdata.headerCells.values[e.specIndex],rowBlocks:e.calcdata.headerRowBlocks,calcdata:P7({},e.calcdata,{cells:e.calcdata.headerCells})}),n=P7({},e,{key:"cells1",type:"cells",page:0,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks}),i=P7({},e,{key:"cells2",type:"cells",page:1,prevPages:t,currentRepaint:[null,null],dragHandle:!1,values:e.calcdata.cells.values[e.specIndex],rowBlocks:e.calcdata.rowBlocks});return[n,i,r]};$J.splitToCells=function(e){var t=FZt(e);return(e.values||[]).slice(t[0],t[1]).map(function(r,n){var i=typeof r=="string"&&r.match(/[<$&> ]/)?"_keybuster_"+Math.random():"";return{keyWithinBlock:n+i,key:t[0]+n,column:e,calcdata:e.calcdata,page:e.page,rowBlocks:e.rowBlocks,value:r}})};function FZt(e){var t=e.rowBlocks[e.page],r=t?t.rows[0].rowIndex:0,n=t?r+t.rows.length:0;return[r,n]}});var l$=ye((V_r,oZe)=>{"use strict";var Ia=XJ(),Mc=xa(),QJ=Mr(),qZt=QJ.numberFormat,gu=Km(),e$=ao(),OZt=Pl(),BZt=Mr().raiseToTop,og=Mr().strTranslate,NZt=Mr().cancelTransition,UZt=XWe(),rZe=YWe(),KWe=va();oZe.exports=function(t,r){var n=!t._context.staticPlot,i=t._fullLayout._paper.selectAll("."+Ia.cn.table).data(r.map(function(E){var k=gu.unwrap(E),A=k.trace;return UZt(t,A)}),gu.keyFun);i.exit().remove(),i.enter().append("g").classed(Ia.cn.table,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","all"),i.attr("width",function(E){return E.width+E.size.l+E.size.r}).attr("height",function(E){return E.height+E.size.t+E.size.b}).attr("transform",function(E){return og(E.translateX,E.translateY)});var a=i.selectAll("."+Ia.cn.tableControlView).data(gu.repeat,gu.keyFun),o=a.enter().append("g").classed(Ia.cn.tableControlView,!0).style("box-sizing","content-box");if(n){var s="onwheel"in document?"wheel":"mousewheel";o.on("mousemove",function(E){a.filter(function(k){return E===k}).call(Jk,t)}).on(s,function(E){if(!E.scrollbarState.wheeling){E.scrollbarState.wheeling=!0;var k=E.scrollY+Mc.event.deltaY,A=R7(t,a,null,k)(E);A||(Mc.event.stopPropagation(),Mc.event.preventDefault()),E.scrollbarState.wheeling=!1}}).call(Jk,t,!0)}a.attr("transform",function(E){return og(E.size.l,E.size.t)});var l=a.selectAll("."+Ia.cn.scrollBackground).data(gu.repeat,gu.keyFun);l.enter().append("rect").classed(Ia.cn.scrollBackground,!0).attr("fill","none"),l.attr("width",function(E){return E.width}).attr("height",function(E){return E.height}),a.each(function(E){e$.setClipUrl(Mc.select(this),JWe(t,E),t)});var u=a.selectAll("."+Ia.cn.yColumn).data(function(E){return E.columns},gu.keyFun);u.enter().append("g").classed(Ia.cn.yColumn,!0),u.exit().remove(),u.attr("transform",function(E){return og(E.x,0)}),n&&u.call(Mc.behavior.drag().origin(function(E){var k=Mc.select(this);return eZe(k,E,-Ia.uplift),BZt(this),E.calcdata.columnDragInProgress=!0,Jk(a.filter(function(A){return E.calcdata.key===A.key}),t),E}).on("drag",function(E){var k=Mc.select(this),A=function(C){return(E===C?Mc.event.x:C.x)+C.columnWidth/2};E.x=Math.max(-Ia.overdrag,Math.min(E.calcdata.width+Ia.overdrag-E.columnWidth,Mc.event.x));var L=iZe(u).filter(function(C){return C.calcdata.key===E.calcdata.key}),_=L.sort(function(C,M){return A(C)-A(M)});_.forEach(function(C,M){C.xIndex=M,C.x=E===C?C.x:C.xScale(C)}),u.filter(function(C){return E!==C}).transition().ease(Ia.transitionEase).duration(Ia.transitionDuration).attr("transform",function(C){return og(C.x,0)}),k.call(NZt).attr("transform",og(E.x,-Ia.uplift))}).on("dragend",function(E){var k=Mc.select(this),A=E.calcdata;E.x=E.xScale(E),E.calcdata.columnDragInProgress=!1,eZe(k,E,0),JZt(t,A,A.columns.map(function(L){return L.xIndex}))})),u.each(function(E){e$.setClipUrl(Mc.select(this),$We(t,E),t)});var c=u.selectAll("."+Ia.cn.columnBlock).data(rZe.splitToPanels,gu.keyFun);c.enter().append("g").classed(Ia.cn.columnBlock,!0).attr("id",function(E){return E.key}),c.style("cursor",function(E){return E.dragHandle?"ew-resize":E.calcdata.scrollbarState.barWiggleRoom?"ns-resize":"default"});var f=c.filter($Zt),h=c.filter(a$);n&&h.call(Mc.behavior.drag().origin(function(E){return Mc.event.stopPropagation(),E}).on("drag",R7(t,a,-1)).on("dragend",function(){})),t$(t,a,f,c),t$(t,a,h,c);var d=a.selectAll("."+Ia.cn.scrollAreaClip).data(gu.repeat,gu.keyFun);d.enter().append("clipPath").classed(Ia.cn.scrollAreaClip,!0).attr("id",function(E){return JWe(t,E)});var v=d.selectAll("."+Ia.cn.scrollAreaClipRect).data(gu.repeat,gu.keyFun);v.enter().append("rect").classed(Ia.cn.scrollAreaClipRect,!0).attr("x",-Ia.overdrag).attr("y",-Ia.uplift).attr("fill","none"),v.attr("width",function(E){return E.width+2*Ia.overdrag}).attr("height",function(E){return E.height+Ia.uplift});var x=u.selectAll("."+Ia.cn.columnBoundary).data(gu.repeat,gu.keyFun);x.enter().append("g").classed(Ia.cn.columnBoundary,!0);var b=u.selectAll("."+Ia.cn.columnBoundaryClippath).data(gu.repeat,gu.keyFun);b.enter().append("clipPath").classed(Ia.cn.columnBoundaryClippath,!0),b.attr("id",function(E){return $We(t,E)});var p=b.selectAll("."+Ia.cn.columnBoundaryRect).data(gu.repeat,gu.keyFun);p.enter().append("rect").classed(Ia.cn.columnBoundaryRect,!0).attr("fill","none"),p.attr("width",function(E){return E.columnWidth+2*I7(E)}).attr("height",function(E){return E.calcdata.height+2*I7(E)+Ia.uplift}).attr("x",function(E){return-I7(E)}).attr("y",function(E){return-I7(E)}),o$(null,h,a)};function I7(e){return Math.ceil(e.calcdata.maxLineWidth/2)}function JWe(e,t){return"clip"+e._fullLayout._uid+"_scrollAreaBottomClip_"+t.key}function $We(e,t){return"clip"+e._fullLayout._uid+"_columnBoundaryClippath_"+t.calcdata.key+"_"+t.specIndex}function iZe(e){return[].concat.apply([],e.map(function(t){return t})).map(function(t){return t.__data__})}function Jk(e,t,r){function n(u){var c=u.rowBlocks;return i$(c,c.length-1)+(c.length?D7(c[c.length-1],1/0):1)}var i=e.selectAll("."+Ia.cn.scrollbarKit).data(gu.repeat,gu.keyFun);i.enter().append("g").classed(Ia.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),i.each(function(u){var c=u.scrollbarState;c.totalHeight=n(u),c.scrollableAreaHeight=u.groupHeight-r$(u),c.currentlyVisibleHeight=Math.min(c.totalHeight,c.scrollableAreaHeight),c.ratio=c.currentlyVisibleHeight/c.totalHeight,c.barLength=Math.max(c.ratio*c.currentlyVisibleHeight,Ia.goldenRatio*Ia.scrollbarWidth),c.barWiggleRoom=c.currentlyVisibleHeight-c.barLength,c.wiggleRoom=Math.max(0,c.totalHeight-c.scrollableAreaHeight),c.topY=c.barWiggleRoom===0?0:u.scrollY/c.wiggleRoom*c.barWiggleRoom,c.bottomY=c.topY+c.barLength,c.dragMultiplier=c.wiggleRoom/c.barWiggleRoom}).attr("transform",function(u){var c=u.width+Ia.scrollbarWidth/2+Ia.scrollbarOffset;return og(c,r$(u))});var a=i.selectAll("."+Ia.cn.scrollbar).data(gu.repeat,gu.keyFun);a.enter().append("g").classed(Ia.cn.scrollbar,!0);var o=a.selectAll("."+Ia.cn.scrollbarSlider).data(gu.repeat,gu.keyFun);o.enter().append("g").classed(Ia.cn.scrollbarSlider,!0),o.attr("transform",function(u){return og(0,u.scrollbarState.topY||0)});var s=o.selectAll("."+Ia.cn.scrollbarGlyph).data(gu.repeat,gu.keyFun);s.enter().append("line").classed(Ia.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",Ia.scrollbarWidth).attr("stroke-linecap","round").attr("y1",Ia.scrollbarWidth/2),s.attr("y2",function(u){return u.scrollbarState.barLength-Ia.scrollbarWidth/2}).attr("stroke-opacity",function(u){return u.columnDragInProgress||!u.scrollbarState.barWiggleRoom||r?0:.4}),s.transition().delay(0).duration(0),s.transition().delay(Ia.scrollbarHideDelay).duration(Ia.scrollbarHideDuration).attr("stroke-opacity",0);var l=a.selectAll("."+Ia.cn.scrollbarCaptureZone).data(gu.repeat,gu.keyFun);l.enter().append("line").classed(Ia.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",Ia.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",function(u){var c=Mc.event.y,f=this.getBoundingClientRect(),h=u.scrollbarState,d=c-f.top,v=Mc.scale.linear().domain([0,h.scrollableAreaHeight]).range([0,h.totalHeight]).clamp(!0);h.topY<=d&&d<=h.bottomY||R7(t,e,null,v(d-h.barLength/2))(u)}).call(Mc.behavior.drag().origin(function(u){return Mc.event.stopPropagation(),u.scrollbarState.scrollbarScrollInProgress=!0,u}).on("drag",R7(t,e)).on("dragend",function(){})),l.attr("y2",function(u){return u.scrollbarState.scrollableAreaHeight}),t._context.staticPlot&&(s.remove(),l.remove())}function t$(e,t,r,n){var i=VZt(r),a=HZt(i);ZZt(a);var o=GZt(a);YZt(o);var s=WZt(a),l=jZt(s);XZt(l),nZe(l,t,n,e),s$(a)}function VZt(e){var t=e.selectAll("."+Ia.cn.columnCells).data(gu.repeat,gu.keyFun);return t.enter().append("g").classed(Ia.cn.columnCells,!0),t.exit().remove(),t}function HZt(e){var t=e.selectAll("."+Ia.cn.columnCell).data(rZe.splitToCells,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.columnCell,!0),t.exit().remove(),t}function GZt(e){var t=e.selectAll("."+Ia.cn.cellRect).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("rect").classed(Ia.cn.cellRect,!0),t}function jZt(e){var t=e.selectAll("."+Ia.cn.cellText).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("text").classed(Ia.cn.cellText,!0).style("cursor",function(){return"auto"}).on("mousedown",function(){Mc.event.stopPropagation()}),t}function WZt(e){var t=e.selectAll("."+Ia.cn.cellTextHolder).data(gu.repeat,function(r){return r.keyWithinBlock});return t.enter().append("g").classed(Ia.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),t}function ZZt(e){e.each(function(t,r){var n=t.calcdata.cells.font,i=t.column.specIndex,a={size:Xv(n.size,i,r),color:Xv(n.color,i,r),family:Xv(n.family,i,r),weight:Xv(n.weight,i,r),style:Xv(n.style,i,r),variant:Xv(n.variant,i,r),textcase:Xv(n.textcase,i,r),lineposition:Xv(n.lineposition,i,r),shadow:Xv(n.shadow,i,r)};t.rowNumber=t.key,t.align=Xv(t.calcdata.cells.align,i,r),t.cellBorderWidth=Xv(t.calcdata.cells.line.width,i,r),t.font=a})}function XZt(e){e.each(function(t){e$.font(Mc.select(this),t.font)})}function YZt(e){e.attr("width",function(t){return t.column.columnWidth}).attr("stroke-width",function(t){return t.cellBorderWidth}).each(function(t){var r=Mc.select(this);KWe.stroke(r,Xv(t.calcdata.cells.line.color,t.column.specIndex,t.rowNumber)),KWe.fill(r,Xv(t.calcdata.cells.fill.color,t.column.specIndex,t.rowNumber))})}function nZe(e,t,r,n){e.text(function(i){var a=i.column.specIndex,o=i.rowNumber,s=i.value,l=typeof s=="string",u=l&&s.match(/
/i),c=!l||u;i.mayHaveMarkup=l&&s.match(/[<&>]/);var f=KZt(s);i.latex=f;var h=f?"":Xv(i.calcdata.cells.prefix,a,o)||"",d=f?"":Xv(i.calcdata.cells.suffix,a,o)||"",v=f?null:Xv(i.calcdata.cells.format,a,o)||null,x=h+(v?qZt(v)(i.value):i.value)+d,b;i.wrappingNeeded=!i.wrapped&&!c&&!f&&(b=QWe(x)),i.cellHeightMayIncrease=u||f||i.mayHaveMarkup||(b===void 0?QWe(x):b),i.needsConvertToTspans=i.mayHaveMarkup||i.wrappingNeeded||i.latex;var p;if(i.wrappingNeeded){var E=Ia.wrapSplitCharacter===" "?x.replace(/i&&n.push(a),i+=l}return n}function o$(e,t,r){var n=iZe(t)[0];if(n!==void 0){var i=n.rowBlocks,a=n.calcdata,o=i$(i,i.length),s=n.calcdata.groupHeight-r$(n),l=a.scrollY=Math.max(0,Math.min(o-s,a.scrollY)),u=QZt(i,l,s);u.length===1&&(u[0]===i.length-1?u.unshift(u[0]-1):u.push(u[0]+1)),u[0]%2&&u.reverse(),t.each(function(c,f){c.page=u[f],c.scrollY=l}),t.attr("transform",function(c){var f=i$(c.rowBlocks,c.page)-c.scrollY;return og(0,f)}),e&&(tZe(e,r,t,u,n.prevPages,n,0),tZe(e,r,t,u,n.prevPages,n,1),Jk(r,e))}}function R7(e,t,r,n){return function(a){var o=a.calcdata?a.calcdata:a,s=t.filter(function(f){return o.key===f.key}),l=r||o.scrollbarState.dragMultiplier,u=o.scrollY;o.scrollY=n===void 0?o.scrollY+l*Mc.event.dy:n;var c=s.selectAll("."+Ia.cn.yColumn).selectAll("."+Ia.cn.columnBlock).filter(a$);return o$(e,c,s),o.scrollY===u}}function tZe(e,t,r,n,i,a,o){var s=n[o]!==i[o];s&&(clearTimeout(a.currentRepaint[o]),a.currentRepaint[o]=setTimeout(function(){var l=r.filter(function(u,c){return c===o&&n[c]!==i[c]});t$(e,t,l,r),i[o]=n[o]}))}function eXt(e,t,r,n){return function(){var a=Mc.select(t.parentNode);a.each(function(o){var s=o.fragments;a.selectAll("tspan.line").each(function(x,b){s[b].width=this.getComputedTextLength()});var l=s[s.length-1].width,u=s.slice(0,-1),c=[],f,h,d=0,v=o.column.columnWidth-2*Ia.cellPad;for(o.value="";u.length;)f=u.shift(),h=f.width+l,d+h>v&&(o.value+=c.join(Ia.wrapSpacer)+Ia.lineBreaker,c=[],d=0),c.push(f.text),d+=h;d&&(o.value+=c.join(Ia.wrapSpacer)),o.wrapped=!0}),a.selectAll("tspan.line").remove(),nZe(a.select("."+Ia.cn.cellText),r,e,n),Mc.select(t.parentNode.parentNode).call(s$)}}function tXt(e,t,r,n,i){return function(){if(!i.settledY){var o=Mc.select(t.parentNode),s=n$(i),l=i.key-s.firstRowIndex,u=s.rows[l].rowHeight,c=i.cellHeightMayIncrease?t.parentNode.getBoundingClientRect().height+2*Ia.cellPad:u,f=Math.max(c,u),h=f-s.rows[l].rowHeight;h&&(s.rows[l].rowHeight=f,e.selectAll("."+Ia.cn.columnCell).call(s$),o$(null,e.filter(a$),0),Jk(r,n,!0)),o.attr("transform",function(){var d=this,v=d.parentNode,x=v.getBoundingClientRect(),b=Mc.select(d.parentNode).select("."+Ia.cn.cellRect).node().getBoundingClientRect(),p=d.transform.baseVal.consolidate(),E=b.top-x.top+(p?p.matrix.f:Ia.cellPad);return og(aZe(i,Mc.select(d.parentNode).select("."+Ia.cn.cellTextHolder).node().getBoundingClientRect().width),E)}),i.settledY=!0}}}function aZe(e,t){switch(e.align){case"left":return Ia.cellPad;case"right":return e.column.columnWidth-(t||0)-Ia.cellPad;case"center":return(e.column.columnWidth-(t||0))/2;default:return Ia.cellPad}}function s$(e){e.attr("transform",function(t){var r=t.rowBlocks[0].auxiliaryBlocks.reduce(function(o,s){return o+D7(s,1/0)},0),n=n$(t),i=D7(n,t.key),a=i+r;return og(0,a)}).selectAll("."+Ia.cn.cellRect).attr("height",function(t){return iXt(n$(t),t.key).rowHeight})}function i$(e,t){for(var r=0,n=t-1;n>=0;n--)r+=rXt(e[n]);return r}function D7(e,t){for(var r=0,n=0;n{"use strict";var nXt=kd().getModuleCalcData,aXt=l$(),z7="table";F7.name=z7;F7.plot=function(e){var t=nXt(e.calcdata,z7)[0];t.length&&aXt(e,t)};F7.clean=function(e,t,r,n){var i=n._has&&n._has(z7),a=t._has&&t._has(z7);i&&!a&&n._paperdiv.selectAll(".table").remove()}});var uZe=ye((G_r,lZe)=>{"use strict";lZe.exports={attributes:WJ(),supplyDefaults:FWe(),calc:OWe(),plot:l$(),moduleType:"trace",name:"table",basePlotModule:sZe(),categories:["noOpacity"],meta:{}}});var fZe=ye((j_r,cZe)=>{"use strict";cZe.exports=uZe()});var gZe=ye((W_r,pZe)=>{"use strict";var hZe=Su(),dZe=dh(),u$=Cd(),oXt=Oc().descriptionWithDates,sXt=Bu().overrideAll,vZe=Ed().dash,c$=no().extendFlat;pZe.exports={color:{valType:"color",editType:"calc"},smoothing:{valType:"number",dflt:1,min:0,max:1.3,editType:"calc"},title:{text:{valType:"string",dflt:"",editType:"calc"},font:hZe({editType:"calc"}),offset:{valType:"number",dflt:10,editType:"calc"},editType:"calc"},type:{valType:"enumerated",values:["-","linear","date","category"],dflt:"-",editType:"calc"},autotypenumbers:u$.autotypenumbers,autorange:{valType:"enumerated",values:[!0,!1,"reversed"],dflt:!0,editType:"calc"},rangemode:{valType:"enumerated",values:["normal","tozero","nonnegative"],dflt:"normal",editType:"calc"},range:{valType:"info_array",editType:"calc",items:[{valType:"any",editType:"calc"},{valType:"any",editType:"calc"}]},fixedrange:{valType:"boolean",dflt:!1,editType:"calc"},cheatertype:{valType:"enumerated",values:["index","value"],dflt:"value",editType:"calc"},tickmode:{valType:"enumerated",values:["linear","array"],dflt:"array",editType:"calc"},nticks:{valType:"integer",min:0,dflt:0,editType:"calc"},tickvals:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},showticklabels:{valType:"enumerated",values:["start","end","both","none"],dflt:"start",editType:"calc"},labelalias:c$({},u$.labelalias,{editType:"calc"}),tickfont:hZe({editType:"calc"}),tickangle:{valType:"angle",dflt:"auto",editType:"calc"},tickprefix:{valType:"string",dflt:"",editType:"calc"},showtickprefix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},ticksuffix:{valType:"string",dflt:"",editType:"calc"},showticksuffix:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},showexponent:{valType:"enumerated",values:["all","first","last","none"],dflt:"all",editType:"calc"},exponentformat:{valType:"enumerated",values:["none","e","E","power","SI","B"],dflt:"B",editType:"calc"},minexponent:{valType:"number",dflt:3,min:0,editType:"calc"},separatethousands:{valType:"boolean",dflt:!1,editType:"calc"},tickformat:{valType:"string",dflt:"",editType:"calc",description:oXt("tick label")},tickformatstops:sXt(u$.tickformatstops,"calc","from-root"),categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},labelpadding:{valType:"integer",dflt:10,editType:"calc"},labelprefix:{valType:"string",editType:"calc"},labelsuffix:{valType:"string",dflt:"",editType:"calc"},showline:{valType:"boolean",dflt:!1,editType:"calc"},linecolor:{valType:"color",dflt:dZe.defaultLine,editType:"calc"},linewidth:{valType:"number",min:0,dflt:1,editType:"calc"},gridcolor:{valType:"color",editType:"calc"},gridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},griddash:c$({},vZe,{editType:"calc"}),showgrid:{valType:"boolean",dflt:!0,editType:"calc"},minorgridcount:{valType:"integer",min:0,dflt:0,editType:"calc"},minorgridwidth:{valType:"number",min:0,dflt:1,editType:"calc"},minorgriddash:c$({},vZe,{editType:"calc"}),minorgridcolor:{valType:"color",dflt:dZe.lightLine,editType:"calc"},startline:{valType:"boolean",editType:"calc"},startlinecolor:{valType:"color",editType:"calc"},startlinewidth:{valType:"number",dflt:1,editType:"calc"},endline:{valType:"boolean",editType:"calc"},endlinewidth:{valType:"number",dflt:1,editType:"calc"},endlinecolor:{valType:"color",editType:"calc"},tick0:{valType:"number",min:0,dflt:0,editType:"calc"},dtick:{valType:"number",min:0,dflt:1,editType:"calc"},arraytick0:{valType:"integer",min:0,dflt:0,editType:"calc"},arraydtick:{valType:"integer",min:1,dflt:1,editType:"calc"},editType:"calc"}});var O7=ye((Z_r,_Ze)=>{"use strict";var lXt=Su(),mZe=gZe(),yZe=dh(),q7=lXt({editType:"calc"}),uXt=Uc().zorder;q7.family.dflt='"Open Sans", verdana, arial, sans-serif';q7.size.dflt=12;q7.color.dflt=yZe.defaultLine;_Ze.exports={carpet:{valType:"string",editType:"calc"},x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},a:{valType:"data_array",editType:"calc"},a0:{valType:"number",dflt:0,editType:"calc"},da:{valType:"number",dflt:1,editType:"calc"},b:{valType:"data_array",editType:"calc"},b0:{valType:"number",dflt:0,editType:"calc"},db:{valType:"number",dflt:1,editType:"calc"},cheaterslope:{valType:"number",dflt:1,editType:"calc"},aaxis:mZe,baxis:mZe,font:q7,color:{valType:"color",dflt:yZe.defaultLine,editType:"plot"},zorder:uXt}});var wZe=ye((X_r,bZe)=>{"use strict";var xZe=Mr().isArray1D;bZe.exports=function(t,r,n){var i=n("x"),a=i&&i.length,o=n("y"),s=o&&o.length;if(!a&&!s)return!1;if(r._cheater=!i,(!a||xZe(i))&&(!s||xZe(o))){var l=a?i.length:1/0;s&&(l=Math.min(l,o.length)),r.a&&r.a.length&&(l=Math.min(l,r.a.length)),r.b&&r.b.length&&(l=Math.min(l,r.b.length)),r._length=l}else r._length=null;return!0}});var SZe=ye((Y_r,AZe)=>{"use strict";var cXt=O7(),TZe=va().addOpacity,fXt=ba(),$k=Mr(),hXt=xb(),dXt=t_(),vXt=r_(),pXt=eI(),gXt=ym(),mXt=L3();AZe.exports=function(t,r,n){var i=n.letter,a=n.font||{},o=cXt[i+"axis"];function s(g,P){return $k.coerce(t,r,o,g,P)}function l(g,P){return $k.coerce2(t,r,o,g,P)}n.name&&(r._name=n.name,r._id=n.name),s("autotypenumbers",n.autotypenumbersDflt);var u=s("type");if(u==="-"&&(n.data&&yXt(r,n.data),r.type==="-"?r.type="linear":u=t.type=r.type),s("smoothing"),s("cheatertype"),s("showticklabels"),s("labelprefix",i+" = "),s("labelsuffix"),s("showtickprefix"),s("showticksuffix"),s("separatethousands"),s("tickformat"),s("exponentformat"),s("minexponent"),s("showexponent"),s("categoryorder"),s("tickmode"),s("tickvals"),s("ticktext"),s("tick0"),s("dtick"),r.tickmode==="array"&&(s("arraytick0"),s("arraydtick")),s("labelpadding"),r._hovertitle=i,u==="date"){var c=fXt.getComponentMethod("calendars","handleDefaults");c(t,r,"calendar",n.calendar)}gXt(r,n.fullLayout),r.c2p=$k.identity;var f=s("color",n.dfltColor),h=f===t.color?f:a.color,d=s("title.text");d&&($k.coerceFont(s,"title.font",a,{overrideDflt:{size:$k.bigFont(a.size),color:h}}),s("title.offset")),s("tickangle");var v=s("autorange",!r.isValidRange(t.range));v&&s("rangemode"),s("range"),r.cleanRange(),s("fixedrange"),hXt(t,r,s,u),vXt(t,r,s,u,n),dXt(t,r,s,u,n),pXt(t,r,s,{data:n.data,dataAttr:i});var x=l("gridcolor",TZe(f,.3)),b=l("gridwidth"),p=l("griddash"),E=s("showgrid");E||(delete r.gridcolor,delete r.gridwidth,delete r.griddash);var k=l("startlinecolor",f),A=l("startlinewidth",b),L=s("startline",r.showgrid||!!k||!!A);L||(delete r.startlinecolor,delete r.startlinewidth);var _=l("endlinecolor",f),C=l("endlinewidth",b),M=s("endline",r.showgrid||!!_||!!C);return M||(delete r.endlinecolor,delete r.endlinewidth),E?(s("minorgridcount"),s("minorgridwidth",b),s("minorgriddash",p),s("minorgridcolor",TZe(x,.06)),r.minorgridcount||(delete r.minorgridwidth,delete r.minorgriddash,delete r.minorgridcolor)):(delete r.gridcolor,delete r.gridwidth,delete r.griddash),r.showticklabels==="none"&&(delete r.tickfont,delete r.tickangle,delete r.showexponent,delete r.exponentformat,delete r.minexponent,delete r.tickformat,delete r.showticksuffix,delete r.showtickprefix),r.showticksuffix||delete r.ticksuffix,r.showtickprefix||delete r.tickprefix,s("tickmode"),r};function yXt(e,t){if(e.type==="-"){var r=e._id,n=r.charAt(0),i=n+"calendar",a=e[i];e.type=mXt(t,a,{autotypenumbers:e.autotypenumbers})}}});var EZe=ye((K_r,MZe)=>{"use strict";var _Xt=SZe(),xXt=Vs();MZe.exports=function(t,r,n,i,a){var o=i("a");o||(i("da"),i("a0"));var s=i("b");s||(i("db"),i("b0")),bXt(t,r,n,a)};function bXt(e,t,r,n){var i=["aaxis","baxis"];i.forEach(function(a){var o=a.charAt(0),s=e[a]||{},l=xXt.newContainer(t,a),u={noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0,noTicklabelstep:!0,tickfont:"x",id:o+"axis",letter:o,font:t.font,name:a,data:e[o],calendar:t.calendar,dfltColor:n,bgColor:r.paper_bgcolor,autotypenumbersDflt:r.autotypenumbers,fullLayout:r};_Xt(s,l,u),l._categories=l._categories||[],!e[a]&&s.type!=="-"&&(e[a]={type:s.type})})}});var LZe=ye((J_r,CZe)=>{"use strict";var kZe=Mr(),wXt=wZe(),TXt=EZe(),AXt=O7(),SXt=dh();CZe.exports=function(t,r,n,i){function a(l,u){return kZe.coerce(t,r,AXt,l,u)}r._clipPathId="clip"+r.uid+"carpet";var o=a("color",SXt.defaultLine);if(kZe.coerceFont(a,"font",i.font),a("carpet"),TXt(t,r,i,a,o),!r.a||!r.b){r.visible=!1;return}r.a.length<3&&(r.aaxis.smoothing=0),r.b.length<3&&(r.baxis.smoothing=0);var s=wXt(t,r,a);s||(r.visible=!1),r._cheater&&a("cheaterslope"),a("zorder")}});var f$=ye(($_r,PZe)=>{"use strict";var MXt=Mr().isArrayOrTypedArray;PZe.exports=function(t,r,n){var i;for(MXt(t)?t.length>r.length&&(t=t.slice(0,r.length)):t=[],i=0;i{"use strict";IZe.exports=function(t,r,n){if(t.length===0)return"";var i,a=[],o=n?3:1;for(i=0;i{"use strict";RZe.exports=function(t,r,n,i,a,o){var s=a[0]*t.dpdx(r),l=a[1]*t.dpdy(n),u=1,c=1;if(o){var f=Math.sqrt(a[0]*a[0]+a[1]*a[1]),h=Math.sqrt(o[0]*o[0]+o[1]*o[1]),d=(a[0]*o[0]+a[1]*o[1])/f/h;c=Math.max(0,d)}var v=Math.atan2(l,s)*180/Math.PI;return v<-90?(v+=180,u=-u):v>90&&(v-=180,u=-u),{angle:v,flip:u,p:t.c2p(i,r,n),offsetMultplier:c}}});var VZe=ye((txr,UZe)=>{"use strict";var V7=xa(),B7=ao(),N7=f$(),qZe=h$(),Qk=DZe(),d$=Pl(),Up=Mr(),OZe=Up.strRotate,U7=Up.strTranslate,BZe=Nh();UZe.exports=function(t,r,n,i){var a=t._context.staticPlot,o=r.xaxis,s=r.yaxis,l=t._fullLayout,u=l._clips;Up.makeTraceGroups(i,n,"trace").each(function(c){var f=V7.select(this),h=c[0],d=h.trace,v=d.aaxis,x=d.baxis,b=Up.ensureSingle(f,"g","minorlayer"),p=Up.ensureSingle(f,"g","majorlayer"),E=Up.ensureSingle(f,"g","boundarylayer"),k=Up.ensureSingle(f,"g","labellayer");f.style("opacity",d.opacity),zA(o,s,p,v,"a",v._gridlines,!0,a),zA(o,s,p,x,"b",x._gridlines,!0,a),zA(o,s,b,v,"a",v._minorgridlines,!0,a),zA(o,s,b,x,"b",x._minorgridlines,!0,a),zA(o,s,E,v,"a-boundary",v._boundarylines,a),zA(o,s,E,x,"b-boundary",x._boundarylines,a);var A=zZe(t,o,s,d,h,k,v._labels,"a-label"),L=zZe(t,o,s,d,h,k,x._labels,"b-label");kXt(t,k,d,h,o,s,A,L),EXt(d,h,u,o,s)})};function EXt(e,t,r,n,i){var a,o,s,l,u=r.select("#"+e._clipPathId);u.size()||(u=r.append("clipPath").classed("carpetclip",!0));var c=Up.ensureSingle(u,"path","carpetboundary"),f=t.clipsegments,h=[];for(l=0;l0?"start":"end","data-notex":1}).call(B7.font,f.font).text(f.text).call(d$.convertToTspans,e),p=B7.bBox(this);b.attr("transform",U7(d.p[0],d.p[1])+OZe(d.angle)+U7(f.axis.labelpadding*x,p.height*.3)),u=Math.max(u,p.width+f.axis.labelpadding)}),l.exit().remove(),c.maxExtent=u,c}function kXt(e,t,r,n,i,a,o,s){var l,u,c,f,h=Up.aggNums(Math.min,null,r.a),d=Up.aggNums(Math.max,null,r.a),v=Up.aggNums(Math.min,null,r.b),x=Up.aggNums(Math.max,null,r.b);l=.5*(h+d),u=v,c=r.ab2xy(l,u,!0),f=r.dxyda_rough(l,u),o.angle===void 0&&Up.extendFlat(o,Qk(r,i,a,c,r.dxydb_rough(l,u))),FZe(e,t,r,n,c,f,r.aaxis,i,a,o,"a-title"),l=h,u=.5*(v+x),c=r.ab2xy(l,u,!0),f=r.dxydb_rough(l,u),s.angle===void 0&&Up.extendFlat(s,Qk(r,i,a,c,r.dxyda_rough(l,u))),FZe(e,t,r,n,c,f,r.baxis,i,a,s,"b-title")}var NZe=BZe.LINE_SPACING,CXt=(1-BZe.MID_SHIFT)/NZe+1;function FZe(e,t,r,n,i,a,o,s,l,u,c){var f=[];o.title.text&&f.push(o.title.text);var h=t.selectAll("text."+c).data(f),d=u.maxExtent;h.enter().append("text").classed(c,!0),h.each(function(){var v=Qk(r,s,l,i,a);["start","both"].indexOf(o.showticklabels)===-1&&(d=0);var x=o.title.font.size;d+=x+o.title.offset;var b=u.angle+(u.flip<0?180:0),p=(b-v.angle+450)%360,E=p>90&&p<270,k=V7.select(this);k.text(o.title.text).call(d$.convertToTspans,e),E&&(d=(-d$.lineCount(k)+CXt)*NZe*x-d),k.attr("transform",U7(v.p[0],v.p[1])+OZe(v.angle)+U7(0,d)).attr("text-anchor","middle").call(B7.font,o.title.font)}),h.exit().remove()}});var GZe=ye((rxr,HZe)=>{"use strict";var H7=Mr().isArrayOrTypedArray;HZe.exports=function(e,t,r){var n,i,a,o,s,l,u=[],c=H7(e)?e.length:e,f=H7(t)?t.length:t,h=H7(e)?e:null,d=H7(t)?t:null;h&&(a=(h.length-1)/(h[h.length-1]-h[0])/(c-1)),d&&(o=(d.length-1)/(d[d.length-1]-d[0])/(f-1));var v,x=1/0,b=-1/0;for(i=0;i{"use strict";var jZe=Mr().isArrayOrTypedArray;ZZe.exports=function(e){return WZe(e,0)};function WZe(e,t){if(!jZe(e)||t>=10)return null;for(var r=1/0,n=-1/0,i=e.length,a=0;a{"use strict";var LXt=Qa(),kx=no().extendFlat;YZe.exports=function(t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,p,E=t["_"+r],k=t[r+"axis"],A=k._gridlines=[],L=k._minorgridlines=[],_=k._boundarylines=[],C=t["_"+n],M=t[n+"axis"];k.tickmode==="array"&&(k.tickvals=E.slice());var g=t._xctrl,P=t._yctrl,T=g[0].length,F=g.length,q=t._a.length,V=t._b.length;LXt.prepTicks(k),k.tickmode==="array"&&delete k.tickvals;var H=k.smoothing?3:1;function X(N){var W,re,ae,_e,Me,ke,ge,ie,Te,Ee,Ae,ze,Ce=[],me=[],Re={};if(r==="b")for(re=t.b2j(N),ae=Math.floor(Math.max(0,Math.min(V-2,re))),_e=re-ae,Re.length=V,Re.crossLength=q,Re.xy=function(ce){return t.evalxy([],ce,re)},Re.dxy=function(ce,Ge){return t.dxydi([],ce,ae,Ge,_e)},W=0;W0&&(Te=t.dxydi([],W-1,ae,0,_e),Ce.push(Me[0]+Te[0]/3),me.push(Me[1]+Te[1]/3),Ee=t.dxydi([],W-1,ae,1,_e),Ce.push(ie[0]-Ee[0]/3),me.push(ie[1]-Ee[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;else for(W=t.a2i(N),ke=Math.floor(Math.max(0,Math.min(q-2,W))),ge=W-ke,Re.length=q,Re.crossLength=V,Re.xy=function(ce){return t.evalxy([],W,ce)},Re.dxy=function(ce,Ge){return t.dxydj([],ke,ce,ge,Ge)},re=0;re0&&(Ae=t.dxydj([],ke,re-1,ge,0),Ce.push(Me[0]+Ae[0]/3),me.push(Me[1]+Ae[1]/3),ze=t.dxydj([],ke,re-1,ge,1),Ce.push(ie[0]-ze[0]/3),me.push(ie[1]-ze[1]/3)),Ce.push(ie[0]),me.push(ie[1]),Me=ie;return Re.axisLetter=r,Re.axis=k,Re.crossAxis=M,Re.value=N,Re.constvar=n,Re.index=f,Re.x=Ce,Re.y=me,Re.smoothing=M.smoothing,Re}function G(N){var W,re,ae,_e,Me,ke=[],ge=[],ie={};if(ie.length=E.length,ie.crossLength=C.length,r==="b")for(ae=Math.max(0,Math.min(V-2,N)),Me=Math.min(1,Math.max(0,N-ae)),ie.xy=function(Te){return t.evalxy([],Te,N)},ie.dxy=function(Te,Ee){return t.dxydi([],Te,ae,Ee,Me)},W=0;WE.length-1)&&A.push(kx(G(a),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u;fE.length-1)&&!(v<0||v>E.length-1))for(x=E[o],b=E[v],i=0;iE[E.length-1])&&L.push(kx(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash})));k.startline&&_.push(kx(G(0),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(kx(G(E.length-1),{color:k.endlinecolor,width:k.endlinewidth}))}else{for(s=5e-15,l=[Math.floor((E[E.length-1]-k.tick0)/k.dtick*(1+s)),Math.ceil((E[0]-k.tick0)/k.dtick/(1+s))].sort(function(N,W){return N-W}),u=l[0],c=l[1],f=u;f<=c;f++)h=k.tick0+k.dtick*f,A.push(kx(X(h),{color:k.gridcolor,width:k.gridwidth,dash:k.griddash}));for(f=u-1;fE[E.length-1])&&L.push(kx(X(d),{color:k.minorgridcolor,width:k.minorgridwidth,dash:k.minorgriddash}));k.startline&&_.push(kx(X(E[0]),{color:k.startlinecolor,width:k.startlinewidth})),k.endline&&_.push(kx(X(E[E.length-1]),{color:k.endlinecolor,width:k.endlinewidth}))}}});var eXe=ye((axr,QZe)=>{"use strict";var JZe=Qa(),$Ze=no().extendFlat;QZe.exports=function(t,r){var n,i,a,o,s,l=r._labels=[],u=r._gridlines;for(n=0;n{"use strict";tXe.exports=function(t,r,n,i){var a,o,s,l=[],u=!!n.smoothing,c=!!i.smoothing,f=t[0].length-1,h=t.length-1;for(a=0,o=[],s=[];a<=f;a++)o[a]=t[0][a],s[a]=r[0][a];for(l.push({x:o,y:s,bicubic:u}),a=0,o=[],s=[];a<=h;a++)o[a]=t[a][f],s[a]=r[a][f];for(l.push({x:o,y:s,bicubic:c}),a=f,o=[],s=[];a>=0;a--)o[f-a]=t[h][a],s[f-a]=r[h][a];for(l.push({x:o,y:s,bicubic:u}),a=h,o=[],s=[];a>=0;a--)o[h-a]=t[a][0],s[h-a]=r[a][0];return l.push({x:o,y:s,bicubic:c}),l}});var nXe=ye((sxr,iXe)=>{"use strict";var PXt=Mr();iXe.exports=function(t,r,n){var i,a,o,s=[],l=[],u=t[0].length,c=t.length;function f(ae,_e){var Me=0,ke,ge=0;return ae>0&&(ke=t[_e][ae-1])!==void 0&&(ge++,Me+=ke),ae0&&(ke=t[_e-1][ae])!==void 0&&(ge++,Me+=ke),_e0&&a0&&iM);return PXt.log("Smoother converged to",g,"after",T,"iterations"),t}});var oXe=ye((lxr,aXe)=>{"use strict";aXe.exports={RELATIVE_CULL_TOLERANCE:1e-6}});var uXe=ye((uxr,lXe)=>{"use strict";var sXe=.5;lXe.exports=function(t,r,n,i){var a=t[0]-r[0],o=t[1]-r[1],s=n[0]-r[0],l=n[1]-r[1],u=Math.pow(a*a+o*o,sXe/2),c=Math.pow(s*s+l*l,sXe/2),f=(c*c*a-u*u*s)*i,h=(c*c*o-u*u*l)*i,d=c*(u+c)*3,v=u*(u+c)*3;return[[r[0]+(d&&f/d),r[1]+(d&&h/d)],[r[0]-(v&&f/v),r[1]-(v&&h/v)]]}});var fXe=ye((cxr,cXe)=>{"use strict";var v$=uXe(),G7=Mr().ensureArray;function FA(e,t,r){var n=-.5*r[0]+1.5*t[0],i=-.5*r[1]+1.5*t[1];return[(2*n+e[0])/3,(2*i+e[1])/3]}cXe.exports=function(t,r,n,i,a,o){var s,l,u,c,f,h,d,v,x,b,p=n[0].length,E=n.length,k=a?3*p-2:p,A=o?3*E-2:E;for(t=G7(t,A),r=G7(r,A),u=0;u{"use strict";hXe.exports=function(e,t,r,n,i){var a=t-2,o=r-2;return n&&i?function(s,l,u){s||(s=[]);var c,f,h,d,v,x,b=Math.max(0,Math.min(Math.floor(l),a)),p=Math.max(0,Math.min(Math.floor(u),o)),E=Math.max(0,Math.min(1,l-b)),k=Math.max(0,Math.min(1,u-p));b*=3,p*=3;var A=E*E,L=A*E,_=1-E,C=_*_,M=C*_,g=k*k,P=g*k,T=1-k,F=T*T,q=F*T;for(x=0;x{"use strict";vXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=1-o,b=x*x,p=x*o*2,E=-3*b,k=3*(b-p),A=3*(p-v),L=3*v,_=s*s,C=_*s,M=1-s,g=M*M,P=g*M;for(d=0;d{"use strict";gXe.exports=function(e,t,r){return t&&r?function(n,i,a,o,s){n||(n=[]);var l,u,c,f,h,d;i*=3,a*=3;var v=o*o,x=v*o,b=1-o,p=b*b,E=p*b,k=s*s,A=1-s,L=A*A,_=A*s*2,C=-3*L,M=3*(L-_),g=3*(_-k),P=3*k;for(d=0;d{"use strict";var yXe=oXe(),_Xe=k6().findBin,IXt=fXe(),RXt=dXe(),DXt=pXe(),zXt=mXe();xXe.exports=function(t){var r=t._a,n=t._b,i=r.length,a=n.length,o=t.aaxis,s=t.baxis,l=r[0],u=r[i-1],c=n[0],f=n[a-1],h=r[r.length-1]-r[0],d=n[n.length-1]-n[0],v=h*yXe.RELATIVE_CULL_TOLERANCE,x=d*yXe.RELATIVE_CULL_TOLERANCE;l-=v,u+=v,c-=x,f+=x,t.isVisible=function(b,p){return b>l&&bc&&pu||pf},t.setScale=function(){var b=t._x,p=t._y,E=IXt(t._xctrl,t._yctrl,b,p,o.smoothing,s.smoothing);t._xctrl=E[0],t._yctrl=E[1],t.evalxy=RXt([t._xctrl,t._yctrl],i,a,o.smoothing,s.smoothing),t.dxydi=DXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing),t.dxydj=zXt([t._xctrl,t._yctrl],o.smoothing,s.smoothing)},t.i2a=function(b){var p=Math.max(0,Math.floor(b[0]),i-2),E=b[0]-p;return(1-E)*r[p]+E*r[p+1]},t.j2b=function(b){var p=Math.max(0,Math.floor(b[1]),i-2),E=b[1]-p;return(1-E)*n[p]+E*n[p+1]},t.ij2ab=function(b){return[t.i2a(b[0]),t.j2b(b[1])]},t.a2i=function(b){var p=Math.max(0,Math.min(_Xe(b,r),i-2)),E=r[p],k=r[p+1];return Math.max(0,Math.min(i-1,p+(b-E)/(k-E)))},t.b2j=function(b){var p=Math.max(0,Math.min(_Xe(b,n),a-2)),E=n[p],k=n[p+1];return Math.max(0,Math.min(a-1,p+(b-E)/(k-E)))},t.ab2ij=function(b){return[t.a2i(b[0]),t.b2j(b[1])]},t.i2c=function(b,p){return t.evalxy([],b,p)},t.ab2xy=function(b,p,E){if(!E&&(br[i-1]|pn[a-1]))return[!1,!1];var k=t.a2i(b),A=t.b2j(p),L=t.evalxy([],k,A);if(E){var _=0,C=0,M=[],g,P,T,F;br[i-1]?(g=i-2,P=1,_=(b-r[i-1])/(r[i-1]-r[i-2])):(g=Math.max(0,Math.min(i-2,Math.floor(k))),P=k-g),pn[a-1]?(T=a-2,F=1,C=(p-n[a-1])/(n[a-1]-n[a-2])):(T=Math.max(0,Math.min(a-2,Math.floor(A))),F=A-T),_&&(t.dxydi(M,g,T,P,F),L[0]+=M[0]*_,L[1]+=M[1]*_),C&&(t.dxydj(M,g,T,P,F),L[0]+=M[0]*C,L[1]+=M[1]*C)}return L},t.c2p=function(b,p,E){return[p.c2p(b[0]),E.c2p(b[1])]},t.p2x=function(b,p,E){return[p.p2c(b[0]),E.p2c(b[1])]},t.dadi=function(b){var p=Math.max(0,Math.min(r.length-2,b));return r[p+1]-r[p]},t.dbdj=function(b){var p=Math.max(0,Math.min(n.length-2,b));return n[p+1]-n[p]},t.dxyda=function(b,p,E,k){var A=t.dxydi(null,b,p,E,k),L=t.dadi(b,E);return[A[0]/L,A[1]/L]},t.dxydb=function(b,p,E,k){var A=t.dxydj(null,b,p,E,k),L=t.dbdj(p,k);return[A[0]/L,A[1]/L]},t.dxyda_rough=function(b,p,E){var k=h*(E||.1),A=t.ab2xy(b+k,p,!0),L=t.ab2xy(b-k,p,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dxydb_rough=function(b,p,E){var k=d*(E||.1),A=t.ab2xy(b,p+k,!0),L=t.ab2xy(b,p-k,!0);return[(A[0]-L[0])*.5/k,(A[1]-L[1])*.5/k]},t.dpdx=function(b){return b._m},t.dpdy=function(b){return b._m}}});var CXe=ye((pxr,kXe)=>{"use strict";var j7=Qa(),wXe=Mr().isArray1D,FXt=GZe(),TXe=XZe(),AXe=KZe(),SXe=eXe(),qXt=rXe(),MXe=QI(),EXe=nXe(),OXt=JI(),BXt=bXe();kXe.exports=function(t,r){var n=j7.getFromId(t,r.xaxis),i=j7.getFromId(t,r.yaxis),a=r.aaxis,o=r.baxis,s=r.x,l=r.y,u=[];s&&wXe(s)&&u.push("x"),l&&wXe(l)&&u.push("y"),u.length&&OXt(r,a,o,"a","b",u);var c=r._a=r._a||r.a,f=r._b=r._b||r.b;s=r._x||r.x,l=r._y||r.y;var h={};if(r._cheater){var d=a.cheatertype==="index"?c.length:c,v=o.cheatertype==="index"?f.length:f;s=FXt(d,v,r.cheaterslope)}r._x=s=MXe(s),r._y=l=MXe(l),EXe(s,c,f),EXe(l,c,f),BXt(r),r.setScale();var x=TXe(s),b=TXe(l),p=.5*(x[1]-x[0]),E=.5*(x[1]+x[0]),k=.5*(b[1]-b[0]),A=.5*(b[1]+b[0]),L=1.3;return x=[E-p*L,E+p*L],b=[A-k*L,A+k*L],r._extremes[n._id]=j7.findExtremes(n,x,{padded:!0}),r._extremes[i._id]=j7.findExtremes(i,b,{padded:!0}),AXe(r,"a","b"),AXe(r,"b","a"),SXe(r,a),SXe(r,o),h.clipsegments=qXt(r._xctrl,r._yctrl,a,o),h.x=s,h.y=l,h.a=c,h.b=f,[h]}});var PXe=ye((gxr,LXe)=>{"use strict";LXe.exports={attributes:O7(),supplyDefaults:LZe(),plot:VZe(),calc:CXe(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}});var RXe=ye((mxr,IXe)=>{"use strict";IXe.exports=PXe()});var p$=ye((yxr,zXe)=>{"use strict";var NXt=Eg(),u0=Uc(),UXt=vl(),VXt=Wo().hovertemplateAttrs,HXt=Wo().texttemplateAttrs,DXe=Jl(),Cx=no().extendFlat,sg=u0.marker,qA=u0.line,GXt=sg.line;zXe.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:Cx({},u0.mode,{dflt:"markers"}),text:Cx({},u0.text,{}),texttemplate:HXt({editType:"plot"},{keys:["a","b","text"]}),hovertext:Cx({},u0.hovertext,{}),line:{color:qA.color,width:qA.width,dash:qA.dash,backoff:qA.backoff,shape:Cx({},qA.shape,{values:["linear","spline"]}),smoothing:qA.smoothing,editType:"calc"},connectgaps:u0.connectgaps,fill:Cx({},u0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:NXt(),marker:Cx({symbol:sg.symbol,opacity:sg.opacity,maxdisplayed:sg.maxdisplayed,angle:sg.angle,angleref:sg.angleref,standoff:sg.standoff,size:sg.size,sizeref:sg.sizeref,sizemin:sg.sizemin,sizemode:sg.sizemode,line:Cx({width:GXt.width,editType:"calc"},DXe("marker.line")),gradient:sg.gradient,editType:"calc"},DXe("marker")),textfont:u0.textfont,textposition:u0.textposition,selected:u0.selected,unselected:u0.unselected,hoverinfo:Cx({},UXt.hoverinfo,{flags:["a","b","text","name"]}),hoveron:u0.hoveron,hovertemplate:VXt(),zorder:u0.zorder}});var BXe=ye((_xr,OXe)=>{"use strict";var FXe=Mr(),jXt=Sm(),OA=lu(),WXt=$p(),ZXt=R0(),qXe=J3(),XXt=D0(),YXt=Ig(),KXt=p$();OXe.exports=function(t,r,n,i){function a(h,d){return FXe.coerce(t,r,KXt,h,d)}a("carpet"),r.xaxis="x",r.yaxis="y";var o=a("a"),s=a("b"),l=Math.min(o.length,s.length);if(!l){r.visible=!1;return}r._length=l,a("text"),a("texttemplate"),a("hovertext");var u=l{"use strict";NXe.exports=function(t,r){var n={},i=r._carpet,a=i.ab2ij([t.a,t.b]),o=Math.floor(a[0]),s=a[0]-o,l=Math.floor(a[1]),u=a[1]-l,c=i.evalxy([],o,l,s,u);return n.yLabel=c[1].toFixed(3),n}});var W7=ye((bxr,VXe)=>{"use strict";VXe.exports=function(e,t){for(var r=e._fullData.length,n,i=0;i{"use strict";var HXe=uo(),JXt=z0(),$Xt=km(),QXt=F0(),eYt=q0().calcMarkerSize,tYt=W7();GXe.exports=function(t,r){var n=r._carpetTrace=tYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){var i;r.xaxis=n.xaxis,r.yaxis=n.yaxis;var a=r._length,o=new Array(a),s,l,u=!1;for(i=0;i{"use strict";var rYt=iT(),WXe=Qa(),iYt=ao();ZXe.exports=function(t,r,n,i){var a,o,s,l=n[0][0].carpet,u=WXe.getFromId(t,l.xaxis||"x"),c=WXe.getFromId(t,l.yaxis||"y"),f={xaxis:u,yaxis:c,plot:r.plot};for(a=0;a{"use strict";var nYt=sT(),aYt=Mr().fillText;YXe.exports=function(t,r,n,i){var a=nYt(t,r,n,i);if(!a||a[0].index===!1)return;var o=a[0];if(o.index===void 0){var s=1-o.y0/t.ya._length,l=t.xa._length,u=l*s/2,c=l-u;return o.x0=Math.max(Math.min(o.x0,c),u),o.x1=Math.max(Math.min(o.x1,c),u),a}var f=o.cd[o.index];o.a=f.a,o.b=f.b,o.xLabelVal=void 0,o.yLabelVal=void 0;var h=o.trace,d=h._carpet,v=h._module.formatLabels(f,h);o.yLabel=v.yLabel,delete o.text;var x=[];function b(k,A){var L;k.labelprefix&&k.labelprefix.length>0?L=k.labelprefix.replace(/ = $/,""):L=k._hovertitle,x.push(L+": "+A.toFixed(3)+k.labelsuffix)}if(!h.hovertemplate){var p=f.hi||h.hoverinfo,E=p.split("+");E.indexOf("all")!==-1&&(E=["a","b","text"]),E.indexOf("a")!==-1&&b(d.aaxis,f.a),E.indexOf("b")!==-1&&b(d.baxis,f.b),x.push("y: "+o.yLabel),E.indexOf("text")!==-1&&aYt(f,h,x),o.extraText=x.join("
")}return a}});var $Xe=ye((Sxr,JXe)=>{"use strict";JXe.exports=function(t,r,n,i,a){var o=i[a];return t.a=o.a,t.b=o.b,t.y=o.y,t}});var eYe=ye((Mxr,QXe)=>{"use strict";QXe.exports={attributes:p$(),supplyDefaults:BXe(),colorbar:Kd(),formatLabels:UXe(),calc:jXe(),plot:XXe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:KXe(),selectPoints:lT(),eventData:$Xe(),moduleType:"trace",name:"scattercarpet",basePlotModule:Jf(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}});var rYe=ye((Exr,tYe)=>{"use strict";tYe.exports=eYe()});var g$=ye((kxr,iYe)=>{"use strict";var lg=ET(),g1=T4(),oYt=Jl(),sYt=no().extendFlat,ty=g1.contours;iYe.exports=sYt({carpet:{valType:"string",editType:"calc"},z:lg.z,a:lg.x,a0:lg.x0,da:lg.dx,b:lg.y,b0:lg.y0,db:lg.dy,text:lg.text,hovertext:lg.hovertext,transpose:lg.transpose,atype:lg.xtype,btype:lg.ytype,fillcolor:g1.fillcolor,autocontour:g1.autocontour,ncontours:g1.ncontours,contours:{type:ty.type,start:ty.start,end:ty.end,size:ty.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:ty.showlines,showlabels:ty.showlabels,labelfont:ty.labelfont,labelformat:ty.labelformat,operation:ty.operation,value:ty.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:g1.line.color,width:g1.line.width,dash:g1.line.dash,smoothing:g1.line.smoothing,editType:"plot"},zorder:g1.zorder},oYt("",{cLetter:"z",autoColorDflt:!1}))});var m$=ye((Cxr,oYe)=>{"use strict";var nYe=Mr(),lYt=XI(),aYe=g$(),uYt=yH(),cYt=y8(),fYt=_8();oYe.exports=function(t,r,n,i){function a(u,c){return nYe.coerce(t,r,aYe,u,c)}function o(u){return nYe.coerce2(t,r,aYe,u)}if(a("carpet"),t.a&&t.b){var s=lYt(t,r,a,i,"a","b");if(!s){r.visible=!1;return}a("text");var l=a("contours.type")==="constraint";l?uYt(t,r,a,i,n,{hasHover:!1}):(cYt(t,r,a,o),fYt(t,r,a,i,{hasHover:!1}))}else r._defaultColor=n,r._length=null;a("zorder")}});var cYe=ye((Lxr,uYe)=>{"use strict";var hYt=zv(),sYe=Mr(),dYt=JI(),vYt=QI(),pYt=e8(),gYt=t8(),lYe=VV(),mYt=m$(),yYt=W7(),_Yt=oH();uYe.exports=function(t,r){var n=r._carpetTrace=yYt(t,r);if(!(!n||!n.visible||n.visible==="legendonly")){if(!r.a||!r.b){var i=t.data[n.index],a=t.data[r.index];a.a||(a.a=i.a),a.b||(a.b=i.b),mYt(a,r,r._defaultColor,t._fullLayout)}var o=xYt(t,r);return _Yt(r,r._z),o}};function xYt(e,t){var r=t._carpetTrace,n=r.aaxis,i=r.baxis,a,o,s,l,u,c,f;n._minDtick=0,i._minDtick=0,sYe.isArray1D(t.z)&&dYt(t,n,i,"a","b",["z"]),a=t._a=t._a||t.a,l=t._b=t._b||t.b,a=a?n.makeCalcdata(t,"_a"):[],l=l?i.makeCalcdata(t,"_b"):[],o=t.a0||0,s=t.da||1,u=t.b0||0,c=t.db||1,f=t._z=vYt(t._z||t.z,t.transpose),t._emptypoints=gYt(f),pYt(f,t._emptypoints);var h=sYe.maxRowLength(f),d=t.xtype==="scaled"?"":a,v=lYe(t,d,o,s,h,n),x=t.ytype==="scaled"?"":l,b=lYe(t,x,u,c,f.length,i),p={a:v,b,z:f};return t.contours.type==="levels"&&t.contours.coloring!=="none"&&hYt(e,t,{vals:f,containerStr:"",cLetter:"z"}),[p]}});var hYe=ye((Pxr,fYe)=>{"use strict";var bYt=Mr().isArrayOrTypedArray;fYe.exports=function(e,t,r,n){var i,a,o,s,l,u,c,f,h,d,v,x,b,p=bYt(r)?"a":"b",E=p==="a"?e.aaxis:e.baxis,k=E.smoothing,A=p==="a"?e.a2i:e.b2j,L=p==="a"?r:n,_=p==="a"?n:r,C=p==="a"?t.a.length:t.b.length,M=p==="a"?t.b.length:t.a.length,g=Math.floor(p==="a"?e.b2j(_):e.a2i(_)),P=p==="a"?function(_e){return e.evalxy([],_e,g)}:function(_e){return e.evalxy([],g,_e)};k&&(o=Math.max(0,Math.min(M-2,g)),s=g-o,a=p==="a"?function(_e,Me){return e.dxydi([],_e,o,Me,s)}:function(_e,Me){return e.dxydj([],o,_e,s,Me)});var T=A(L[0]),F=A(L[1]),q=T0?Math.floor:Math.ceil,X=q>0?Math.ceil:Math.floor,G=q>0?Math.min:Math.max,N=q>0?Math.max:Math.min,W=H(T+V),re=X(F-V);c=P(T);var ae=[[c]];for(i=W;i*q{"use strict";var X7=xa(),Y7=f$(),mYe=h$(),eC=ao(),m1=Mr(),wYt=lH(),TYt=uH(),hw=w8(),Z7=S4(),AYt=dH(),SYt=hH(),MYt=vH(),EYt=W7(),dYe=hYe();yYe.exports=function(t,r,n,i){var a=r.xaxis,o=r.yaxis;m1.makeTraceGroups(i,n,"contour").each(function(s){var l=X7.select(this),u=s[0],c=u.trace,f=c._carpetTrace=EYt(t,c),h=t.calcdata[f.index][0];if(!f.visible||f.visible==="legendonly")return;var d=u.a,v=u.b,x=c.contours,b=SYt(x,r,u),p=x.type==="constraint",E=x._operation,k=p?E==="="?"lines":"fill":x.coloring;function A(H){var X=f.ab2xy(H[0],H[1],!0);return[a.c2p(X[0]),o.c2p(X[1])]}var L=[[d[0],v[v.length-1]],[d[d.length-1],v[v.length-1]],[d[d.length-1],v[0]],[d[0],v[0]]];wYt(b);var _=(d[d.length-1]-d[0])*1e-8,C=(v[v.length-1]-v[0])*1e-8;TYt(b,_,C);var M=b;x.type==="constraint"&&(M=AYt(b,E)),kYt(b,A);var g,P,T,F,q=[];for(F=h.clipsegments.length-1;F>=0;F--)g=h.clipsegments[F],P=Y7([],g.x,a.c2p),T=Y7([],g.y,o.c2p),P.reverse(),T.reverse(),q.push(mYe(P,T,g.bicubic));var V="M"+q.join("L")+"Z";PYt(l,h.clipsegments,a,o,p,k),IYt(c,l,a,o,M,L,A,f,h,k,V),CYt(l,b,t,u,x,r,f),eC.setClipUrl(l,f._clipPathId,t)})};function kYt(e,t){var r,n,i,a,o,s,l,u,c;for(r=0;rb&&(n.max=b),n.len=n.max-n.min}function vYe(e,t,r){var n=e.getPointAtLength(t),i=e.getPointAtLength(r),a=i.x-n.x,o=i.y-n.y,s=Math.sqrt(a*a+o*o);return[a/s,o/s]}function pYe(e){var t=Math.sqrt(e[0]*e[0]+e[1]*e[1]);return[e[0]/t,e[1]/t]}function gYe(e,t){var r=Math.abs(e[0]*t[0]+e[1]*t[1]),n=Math.sqrt(1-r*r);return n/r}function PYt(e,t,r,n,i,a){var o,s,l,u,c=m1.ensureSingle(e,"g","contourbg"),f=c.selectAll("path").data(a==="fill"&&!i?[0]:[]);f.enter().append("path"),f.exit().remove();var h=[];for(u=0;u=0&&(d=P,x=b):Math.abs(h[1]-d[1])=0&&(d=P,x=b):m1.log("endpt to newendpt is not vert. or horz.",h,d,P)}if(x>=0)break;u+=M(h,d),h=d}if(x===t.edgepaths.length){m1.log("unclosed perimeter path");break}l=x,f=c.indexOf(l)===-1,f&&(l=c[0],u+=M(h,d)+"Z",h=null)}for(l=0;l{"use strict";xYe.exports={attributes:g$(),supplyDefaults:m$(),colorbar:S8(),calc:cYe(),plot:_Ye(),style:A8(),moduleType:"trace",name:"contourcarpet",basePlotModule:Jf(),categories:["cartesian","svg","carpet","contour","symbols","showLegend","hasLines","carpetDependent","noHover","noSortingByValue"],meta:{}}});var TYe=ye((Dxr,wYe)=>{"use strict";wYe.exports=bYe()});var J7=ye((zxr,kYe)=>{"use strict";var K7=Mr().extendFlat,tC=Uc(),AYe=Oc().axisHoverFormat,MYe=Ed().dash,DYt=i3(),EYe=HT(),zYt=EYe.INCREASING.COLOR,FYt=EYe.DECREASING.COLOR,y$=tC.line;function SYe(e){return{line:{color:K7({},y$.color,{dflt:e}),width:y$.width,dash:MYe,editType:"style"},editType:"style"}}kYe.exports={xperiod:tC.xperiod,xperiod0:tC.xperiod0,xperiodalignment:tC.xperiodalignment,xhoverformat:AYe("x"),yhoverformat:AYe("y"),x:{valType:"data_array",editType:"calc+clearAxisTypes"},open:{valType:"data_array",editType:"calc"},high:{valType:"data_array",editType:"calc"},low:{valType:"data_array",editType:"calc"},close:{valType:"data_array",editType:"calc"},line:{width:K7({},y$.width,{}),dash:K7({},MYe,{}),editType:"style"},increasing:SYe(zYt),decreasing:SYe(FYt),text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},tickwidth:{valType:"number",min:0,max:.5,dflt:.3,editType:"calc"},hoverlabel:K7({},DYt.hoverlabel,{split:{valType:"boolean",dflt:!1,editType:"style"}}),zorder:tC.zorder}});var _$=ye((Fxr,CYe)=>{"use strict";var qYt=ba(),OYt=Mr();CYe.exports=function(t,r,n,i){var a=n("x"),o=n("open"),s=n("high"),l=n("low"),u=n("close");n("hoverlabel.split");var c=qYt.getComponentMethod("calendars","handleTraceDefaults");if(c(t,r,["x"],i),!!(o&&s&&l&&u)){var f=Math.min(o.length,s.length,l.length,u.length);return a&&(f=Math.min(f,OYt.minRowLength(a))),r._length=f,f}}});var IYe=ye((qxr,PYe)=>{"use strict";var BYt=Mr(),NYt=_$(),UYt=Pg(),VYt=J7();PYe.exports=function(t,r,n,i){function a(s,l){return BYt.coerce(t,r,VYt,s,l)}var o=NYt(t,r,a,i);if(!o){r.visible=!1;return}UYt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),a("line.dash"),LYe(t,r,a,"increasing"),LYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("tickwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function LYe(e,t,r,n){r(n+".line.color"),r(n+".line.width",t.line.width),r(n+".line.dash",t.line.dash)}});var x$=ye((Oxr,DYe)=>{"use strict";var BA=Mr(),$7=BA._,Q7=Qa(),HYt=Rg(),rC=es().BADNUM;function GYt(e,t){var r=Q7.getFromId(e,t.xaxis),n=Q7.getFromId(e,t.yaxis),i=WYt(e,r,t),a=t._minDiff;t._minDiff=null;var o=t._origX;t._origX=null;var s=t._xcalc;t._xcalc=null;var l=RYe(e,t,o,s,n,jYt);return t._extremes[r._id]=Q7.findExtremes(r,s,{vpad:a/2}),l.length?(BA.extendFlat(l[0].t,{wHover:a/2,tickLen:i}),l):[{t:{empty:!0}}]}function jYt(e,t,r,n){return{o:e,h:t,l:r,c:n}}function RYe(e,t,r,n,i,a){for(var o=i.makeCalcdata(t,"open"),s=i.makeCalcdata(t,"high"),l=i.makeCalcdata(t,"low"),u=i.makeCalcdata(t,"close"),c=BA.isArrayOrTypedArray(t.text),f=BA.isArrayOrTypedArray(t.hovertext),h=!0,d=null,v=!!t.xperiodalignment,x=[],b=0;bd):h=L>E,d=L;var _=a(E,k,A,L);_.pos=p,_.yc=(E+L)/2,_.i=b,_.dir=h?"increasing":"decreasing",_.x=_.pos,_.y=[A,k],v&&(_.orig_p=r[b]),c&&(_.tx=t.text[b]),f&&(_.htx=t.hovertext[b]),x.push(_)}else x.push({pos:p,empty:!0})}return t._extremes[i._id]=Q7.findExtremes(i,BA.concat(l,s),{padded:!0}),x.length&&(x[0].t={labels:{open:$7(e,"open:")+" ",high:$7(e,"high:")+" ",low:$7(e,"low:")+" ",close:$7(e,"close:")+" "}}),x}function WYt(e,t,r){var n=r._minDiff;if(!n){var i=e._fullData,a=[];n=1/0;var o;for(o=0;o{"use strict";var ZYt=xa(),zYe=Mr();FYe.exports=function(t,r,n,i){var a=r.yaxis,o=r.xaxis,s=!!o.rangebreaks;zYe.makeTraceGroups(i,n,"trace ohlc").each(function(l){var u=ZYt.select(this),c=l[0],f=c.t,h=c.trace;if(h.visible!==!0||f.empty){u.remove();return}var d=f.tickLen,v=u.selectAll("path").data(zYe.identity);v.enter().append("path"),v.exit().remove(),v.attr("d",function(x){if(x.empty)return"M0,0Z";var b=o.c2p(x.pos-d,!0),p=o.c2p(x.pos+d,!0),E=s?(b+p)/2:o.c2p(x.pos,!0),k=a.c2p(x.o,!0),A=a.c2p(x.h,!0),L=a.c2p(x.l,!0),_=a.c2p(x.c,!0);return"M"+b+","+k+"H"+E+"M"+E+","+A+"V"+L+"M"+p+","+_+"H"+E})})}});var BYe=ye((Nxr,OYe)=>{"use strict";var b$=xa(),XYt=ao(),YYt=va();OYe.exports=function(t,r,n){var i=n||b$.select(t).selectAll("g.ohlclayer").selectAll("g.trace");i.style("opacity",function(a){return a[0].trace.opacity}),i.each(function(a){var o=a[0].trace;b$.select(this).selectAll("path").each(function(s){if(!s.empty){var l=o[s.dir].line;b$.select(this).style("fill","none").call(YYt.stroke,l.color).call(XYt.dashLine,l.dash,l.width).style("opacity",o.selectedpoints&&!s.selected?.3:1)}})})}});var T$=ye((Uxr,GYe)=>{"use strict";var w$=Qa(),KYt=Mr(),e9=Nc(),JYt=va(),$Yt=Mr().fillText,NYe=HT(),QYt={increasing:NYe.INCREASING.SYMBOL,decreasing:NYe.DECREASING.SYMBOL};function eKt(e,t,r,n){var i=e.cd,a=i[0].trace;return a.hoverlabel.split?VYe(e,t,r,n):HYe(e,t,r,n)}function UYe(e,t,r,n){var i=e.cd,a=e.xa,o=i[0].trace,s=i[0].t,l=o.type,u=l==="ohlc"?"l":"min",c=l==="ohlc"?"h":"max",f,h,d=s.bPos||0,v=function(P){return P.pos+d-t},x=s.bdPos||s.tickLen,b=s.wHover,p=Math.min(1,x/Math.abs(a.r2c(a.range[1])-a.r2c(a.range[0])));f=e.maxHoverDistance-p,h=e.maxSpikeDistance-p;function E(P){var T=v(P);return e9.inbox(T-b,T+b,f)}function k(P){var T=P[u],F=P[c];return T===F||e9.inbox(T-r,F-r,f)}function A(P){return(E(P)+k(P))/2}var L=e9.getDistanceFunction(n,E,k,A);if(e9.getClosest(i,L,e),e.index===!1)return null;var _=i[e.index];if(_.empty)return null;var C=_.dir,M=o[C],g=M.line.color;return JYt.opacity(g)&&M.line.width?e.color=g:e.color=M.fillcolor,e.x0=a.c2p(_.pos+d-x,!0),e.x1=a.c2p(_.pos+d+x,!0),e.xLabelVal=_.orig_p!==void 0?_.orig_p:_.pos,e.spikeDistance=A(_)*h/f,e.xSpike=a.c2p(_.pos,!0),e}function VYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=[],u=UYe(e,t,r,n);if(!u)return[];var c=u.index,f=i[c],h=f.hi||o.hoverinfo,d=h.split("+"),v=h==="all",x=v||d.indexOf("y")!==-1;if(!x)return[];for(var b=["high","open","close","low"],p={},E=0;E"+s.labels[k]+w$.hoverLabelText(a,A,o.yhoverformat)):(_=KYt.extendFlat({},u),_.y0=_.y1=L,_.yLabelVal=A,_.yLabel=s.labels[k]+w$.hoverLabelText(a,A,o.yhoverformat),_.name="",l.push(_),p[A]=_)}return l}function HYe(e,t,r,n){var i=e.cd,a=e.ya,o=i[0].trace,s=i[0].t,l=UYe(e,t,r,n);if(!l)return[];var u=l.index,c=i[u],f=l.index=c.i,h=c.dir;function d(A){return s.labels[A]+w$.hoverLabelText(a,o[A][f],o.yhoverformat)}var v=c.hi||o.hoverinfo,x=v.split("+"),b=v==="all",p=b||x.indexOf("y")!==-1,E=b||x.indexOf("text")!==-1,k=p?[d("open"),d("high"),d("low"),d("close")+" "+QYt[h]]:[];return E&&$Yt(c,o,k),l.extraText=k.join("
"),l.y0=l.y1=a.c2p(c.yc,!0),[l]}GYe.exports={hoverPoints:eKt,hoverSplit:VYe,hoverOnPoints:HYe}});var A$=ye((Vxr,jYe)=>{"use strict";jYe.exports=function(t,r){var n=t.cd,i=t.xaxis,a=t.yaxis,o=[],s,l=n[0].t.bPos||0;if(r===!1)for(s=0;s{"use strict";WYe.exports={moduleType:"trace",name:"ohlc",basePlotModule:Jf(),categories:["cartesian","svg","showLegend"],meta:{},attributes:J7(),supplyDefaults:IYe(),calc:x$().calc,plot:qYe(),style:BYe(),hoverPoints:T$().hoverPoints,selectPoints:A$()}});var YYe=ye((Gxr,XYe)=>{"use strict";XYe.exports=ZYe()});var M$=ye((jxr,$Ye)=>{"use strict";var S$=Mr().extendFlat,KYe=Oc().axisHoverFormat,c0=J7(),NA=v4();function JYe(e){return{line:{color:S$({},NA.line.color,{dflt:e}),width:NA.line.width,editType:"style"},fillcolor:NA.fillcolor,editType:"style"}}$Ye.exports={xperiod:c0.xperiod,xperiod0:c0.xperiod0,xperiodalignment:c0.xperiodalignment,xhoverformat:KYe("x"),yhoverformat:KYe("y"),x:c0.x,open:c0.open,high:c0.high,low:c0.low,close:c0.close,line:{width:S$({},NA.line.width,{}),editType:"style"},increasing:JYe(c0.increasing.line.color.dflt),decreasing:JYe(c0.decreasing.line.color.dflt),text:c0.text,hovertext:c0.hovertext,whiskerwidth:S$({},NA.whiskerwidth,{dflt:0}),hoverlabel:c0.hoverlabel,zorder:NA.zorder}});var tKe=ye((Wxr,eKe)=>{"use strict";var tKt=Mr(),rKt=va(),iKt=_$(),nKt=Pg(),aKt=M$();eKe.exports=function(t,r,n,i){function a(s,l){return tKt.coerce(t,r,aKt,s,l)}var o=iKt(t,r,a,i);if(!o){r.visible=!1;return}nKt(t,r,i,a,{x:!0}),a("xhoverformat"),a("yhoverformat"),a("line.width"),QYe(t,r,a,"increasing"),QYe(t,r,a,"decreasing"),a("text"),a("hovertext"),a("whiskerwidth"),i._requestRangeslider[r.xaxis]=!0,a("zorder")};function QYe(e,t,r,n){var i=r(n+".line.color");r(n+".line.width",t.line.width),r(n+".fillcolor",rKt.addOpacity(i,.5))}});var aKe=ye((Zxr,nKe)=>{"use strict";var rKe=Mr(),iKe=Qa(),oKt=Rg(),sKt=x$().calcCommon;nKe.exports=function(e,t){var r=e._fullLayout,n=iKe.getFromId(e,t.xaxis),i=iKe.getFromId(e,t.yaxis),a=n.makeCalcdata(t,"x"),o=oKt(t,n,"x",a).vals,s=sKt(e,t,a,o,i,lKt);return s.length?(rKe.extendFlat(s[0].t,{num:r._numBoxes,dPos:rKe.distinctVals(o).minDiff/2,posLetter:"x",valLetter:"y"}),r._numBoxes++,s):[{t:{empty:!0}}]};function lKt(e,t,r,n){return{min:r,q1:Math.min(e,n),med:n,q3:Math.max(e,n),max:t}}});var sKe=ye((Xxr,oKe)=>{"use strict";oKe.exports={moduleType:"trace",name:"candlestick",basePlotModule:Jf(),categories:["cartesian","svg","showLegend","candlestick","boxLayout"],meta:{},attributes:M$(),layoutAttributes:p4(),supplyLayoutDefaults:VI().supplyLayoutDefaults,crossTraceCalc:GI().crossTraceCalc,supplyDefaults:tKe(),calc:aKe(),plot:jI().plot,layerName:"boxlayer",style:WI().style,hoverPoints:T$().hoverPoints,selectPoints:A$()}});var uKe=ye((Yxr,lKe)=>{"use strict";lKe.exports=sKe()});var k$=ye((Kxr,cKe)=>{"use strict";var r9=Mr(),uKt=ym(),t9=r9.deg2rad,E$=r9.rad2deg;cKe.exports=function(t,r,n){switch(uKt(t,n),t._id){case"x":case"radialaxis":cKt(t,r);break;case"angularaxis":dKt(t,r);break}};function cKt(e,t){var r=t._subplot;e.setGeometry=function(){var n=e._rl[0],i=e._rl[1],a=r.innerRadius,o=(r.radius-a)/(i-n),s=a/o,l=n>i?function(u){return u<=0}:function(u){return u>=0};e.c2g=function(u){var c=e.c2l(u)-n;return(l(c)?c:0)+s},e.g2c=function(u){return e.l2c(u+n-s)},e.g2p=function(u){return u*o},e.c2p=function(u){return e.g2p(e.c2g(u))}}}function fKt(e,t){return t==="degrees"?t9(e):e}function hKt(e,t){return t==="degrees"?E$(e):e}function dKt(e,t){var r=e.type;if(r==="linear"){var n=e.d2c,i=e.c2d;e.d2c=function(a,o){return fKt(n(a),o)},e.c2d=function(a,o){return i(hKt(a,o))}}e.makeCalcdata=function(a,o){var s=a[o],l=a._length,u,c,f=function(b){return e.d2c(b,a.thetaunit)};if(s)for(u=new Array(l),c=0;c{"use strict";fKe.exports={attr:"subplot",name:"polar",axisNames:["angularaxis","radialaxis"],axisName2dataArray:{angularaxis:"theta",radialaxis:"r"},layerNames:["draglayer","plotbg","backplot","angular-grid","radial-grid","frontplot","angular-line","radial-line","angular-axis","radial-axis"],radialDragBoxSize:50,angularDragBoxSize:30,cornerLen:25,cornerHalfWidth:2,MINDRAG:8,MINZOOM:20,OFFEDGE:20}});var a9=ye(($xr,gKe)=>{"use strict";var dw=Mr(),hKe=wM().tester,C$=dw.findIndexOfMin,vKe=dw.isAngleInsideSector,vKt=dw.angleDelta,dKe=dw.angleDist;function pKt(e,t,r,n,i){if(!vKe(t,n))return!1;var a,o;r[0]0?o:1/0},n=C$(t,r),i=dw.mod(n+1,t.length);return[t[n],t[i]]}function n9(e){return Math.abs(e)>1e-10?e:0}function L$(e,t,r){t=t||0,r=r||0;for(var n=e.length,i=new Array(n),a=0;a{"use strict";function mKe(e){return e<0?-1:e>0?1:0}function VA(e){var t=e[0],r=e[1];if(!isFinite(t)||!isFinite(r))return[1,0];var n=(t+1)*(t+1)+r*r;return[(t*t+r*r-1)/n,2*r/n]}function HA(e,t){var r=t[0],n=t[1];return[r*e.radius+e.cx,-n*e.radius+e.cy]}function yKe(e,t){return t*e.radius}function TKt(e,t,r,n){var i=HA(e,VA([r,t])),a=i[0],o=i[1],s=HA(e,VA([n,t])),l=s[0],u=s[1];if(t===0)return["M"+a+","+o,"L"+l+","+u].join(" ");var c=yKe(e,1/Math.abs(t));return["M"+a+","+o,"A"+c+","+c+" 0 0,"+(t<0?1:0)+" "+l+","+u].join(" ")}function AKt(e,t,r,n){var i=yKe(e,1/(t+1)),a=HA(e,VA([t,r])),o=a[0],s=a[1],l=HA(e,VA([t,n])),u=l[0],c=l[1];if(mKe(r)!==mKe(n)){var f=HA(e,VA([t,0])),h=f[0],d=f[1];return["M"+o+","+s,"A"+i+","+i+" 0 0,"+(0{"use strict";var vw=xa(),SKt=id(),gw=ba(),cc=Mr(),ry=cc.strRotate,dd=cc.strTranslate,I$=va(),iC=ao(),MKt=Xu(),dp=Qa(),EKt=ym(),kKt=k$(),CKt=wg().doAutoRange,y1=DN(),l9=gv(),xKe=Nc(),LKt=Mb(),PKt=wf().prepSelect,IKt=wf().selectOnClick,R$=wf().clearOutline,bKe=Tg(),wKe=lM(),TKe=gM().redrawReglTraces,RKt=Nh().MID_SHIFT,Lx=i9(),_1=a9(),u9=P$(),o9=u9.smith,DKt=u9.reactanceArc,zKt=u9.resistanceArc,s9=u9.smithTransform,FKt=cc._,AKe=cc.mod,Px=cc.deg2rad,pw=cc.rad2deg;function SKe(e,t,r){this.isSmith=r||!1,this.id=t,this.gd=e,this._hasClipOnAxisFalse=null,this.vangles=null,this.radialAxisAngle=null,this.traceHash={},this.layers={},this.clipPaths={},this.clipIds={},this.viewInitial={};var n=e._fullLayout,i="clip"+n._uid+t;this.clipIds.forTraces=i+"-for-traces",this.clipPaths.forTraces=n._clips.append("clipPath").attr("id",this.clipIds.forTraces),this.clipPaths.forTraces.append("path"),this.framework=n["_"+(r?"smith":"polar")+"layer"].append("g").attr("class",t),this.getHole=function(a){return this.isSmith?0:a.hole},this.getSector=function(a){return this.isSmith?[0,360]:a.sector},this.getRadial=function(a){return this.isSmith?a.realaxis:a.radialaxis},this.getAngular=function(a){return this.isSmith?a.imaginaryaxis:a.angularaxis},r||(this.radialTickLayout=null,this.angularTickLayout=null)}var Fd=SKe.prototype;kKe.exports=function(t,r,n){return new SKe(t,r,n)};Fd.plot=function(e,t){for(var r=this,n=t[r.id],i=!1,a=0;ab?(p=u,E=u*b,L=(c-E)/i.h/2,k=[s[0],s[1]],A=[l[0]+L,l[1]-L]):(p=c/b,E=c,L=(u-p)/i.w/2,k=[s[0]+L,s[1]-L],A=[l[0],l[1]]),r.xLength2=p,r.yLength2=E,r.xDomain2=k,r.yDomain2=A;var _=r.xOffset2=i.l+i.w*k[0],C=r.yOffset2=i.t+i.h*(1-A[1]),M=r.radius=p/d,g=r.innerRadius=r.getHole(t)*M,P=r.cx=_-M*h[0],T=r.cy=C+M*h[3],F=r.cxx=P-_,q=r.cyy=T-C,V=a.side,H;V==="counterclockwise"?(H=V,V="top"):V==="clockwise"&&(H=V,V="bottom"),r.radialAxis=r.mockAxis(e,t,a,{_id:"x",side:V,_trueSide:H,domain:[g/i.w,M/i.w]}),r.angularAxis=r.mockAxis(e,t,o,{side:"right",domain:[0,Math.PI],autorange:!1}),r.doAutoRange(e,t),r.updateAngularAxis(e,t),r.updateRadialAxis(e,t),r.updateRadialAxisTitle(e,t),r.xaxis=r.mockCartesianAxis(e,t,{_id:"x",domain:k}),r.yaxis=r.mockCartesianAxis(e,t,{_id:"y",domain:A});var X=r.pathSubplot();r.clipPaths.forTraces.select("path").attr("d",X).attr("transform",dd(F,q)),n.frontplot.attr("transform",dd(_,C)).call(iC.setClipUrl,r._hasClipOnAxisFalse?null:r.clipIds.forTraces,r.gd),n.bg.attr("d",X).attr("transform",dd(P,T)).call(I$.fill,t.bgcolor)};Fd.mockAxis=function(e,t,r,n){var i=cc.extendFlat({},r,n);return kKt(i,t,e),i};Fd.mockCartesianAxis=function(e,t,r){var n=this,i=n.isSmith,a=r._id,o=cc.extendFlat({type:"linear"},r);EKt(o,e);var s={x:[0,2],y:[1,3]};return o.setRange=function(){var l=n.sectorBBox,u=s[a],c=n.radialAxis._rl,f=(c[1]-c[0])/(1-n.getHole(t));o.range=[l[u[0]]*f,l[u[1]]*f]},o.isPtWithinRange=a==="x"&&!i?function(l){return n.isPtInside(l)}:function(){return!0},o.setRange(),o.setScale(),o};Fd.doAutoRange=function(e,t){var r=this,n=r.gd,i=r.radialAxis,a=r.getRadial(t);CKt(n,i);var o=i.range;if(a.range=o.slice(),a._input.range=o.slice(),i._rl=[i.r2l(o[0],null,"gregorian"),i.r2l(o[1],null,"gregorian")],i.minallowed!==void 0){var s=i.r2l(i.minallowed);i._rl[0]>i._rl[1]?i._rl[1]=Math.max(i._rl[1],s):i._rl[0]=Math.max(i._rl[0],s)}if(i.maxallowed!==void 0){var l=i.r2l(i.maxallowed);i._rl[0]90&&c<=270&&(f.tickangle=180);var v=d?function(M){var g=s9(r,o9([M.x,0]));return dd(g[0]-s,g[1]-l)}:function(M){return dd(f.l2p(M.x)+o,0)},x=d?function(M){return zKt(r,M.x,-1/0,1/0)}:function(M){return r.pathArc(f.r2p(M.x)+o)},b=MKe(u);if(r.radialTickLayout!==b&&(i["radial-axis"].selectAll(".xtick").remove(),r.radialTickLayout=b),h){f.setScale();var p=0,E=d?(f.tickvals||[]).filter(function(M){return M>=0}).map(function(M){return dp.tickText(f,M,!0,!1)}):dp.calcTicks(f),k=d?E:dp.clipEnds(f,E),A=dp.getTickSigns(f)[2];d&&((f.ticks==="top"&&f.side==="bottom"||f.ticks==="bottom"&&f.side==="top")&&(A=-A),f.ticks==="top"&&f.side==="top"&&(p=-f.ticklen),f.ticks==="bottom"&&f.side==="bottom"&&(p=f.ticklen)),dp.drawTicks(n,f,{vals:E,layer:i["radial-axis"],path:dp.makeTickPath(f,0,A),transFn:v,crisp:!1}),dp.drawGrid(n,f,{vals:k,layer:i["radial-grid"],path:x,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,f,{vals:E,layer:i["radial-axis"],transFn:v,labelFns:dp.makeLabelFns(f,p)})}var L=r.radialAxisAngle=r.vangles?pw(EKe(Px(u.angle),r.vangles)):u.angle,_=dd(s,l),C=_+ry(-L);nC(i["radial-axis"],h&&(u.showticklabels||u.ticks),{transform:C}),nC(i["radial-grid"],h&&u.showgrid,{transform:d?"":_}),nC(i["radial-line"].select("line"),h&&u.showline,{x1:d?-a:o,y1:0,x2:a,y2:0,transform:C}).attr("stroke-width",u.linewidth).call(I$.stroke,u.linecolor)};Fd.updateRadialAxisTitle=function(e,t,r){if(!this.isSmith){var n=this,i=n.gd,a=n.radius,o=n.cx,s=n.cy,l=n.getRadial(t),u=n.id+"title",c=0;if(l.title){var f=iC.bBox(n.layers["radial-axis"].node()).height,h=l.title.font.size,d=l.side;c=d==="top"?h:d==="counterclockwise"?-(f+h*.4):f+h*.8}var v=r!==void 0?r:n.radialAxisAngle,x=Px(v),b=Math.cos(x),p=Math.sin(x),E=o+a/2*b+c*p,k=s-a/2*p+c*b;n.layers["radial-axis-title"]=LKt.draw(i,u,{propContainer:l,propName:n.id+".radialaxis.title",placeholder:FKt(i,"Click to enter radial axis title"),attributes:{x:E,y:k,"text-anchor":"middle"},transform:{rotate:-v}})}};Fd.updateAngularAxis=function(e,t){var r=this,n=r.gd,i=r.layers,a=r.radius,o=r.innerRadius,s=r.cx,l=r.cy,u=r.getAngular(t),c=r.angularAxis,f=r.isSmith;f||(r.fillViewInitialKey("angularaxis.rotation",u.rotation),c.setGeometry(),c.setScale());var h=f?function(g){var P=s9(r,o9([0,g.x]));return Math.atan2(P[0]-s,P[1]-l)-Math.PI/2}:function(g){return c.t2g(g.x)};c.type==="linear"&&c.thetaunit==="radians"&&(c.tick0=pw(c.tick0),c.dtick=pw(c.dtick));var d=function(g){return dd(s+a*Math.cos(g),l-a*Math.sin(g))},v=f?function(g){var P=s9(r,o9([0,g.x]));return dd(P[0],P[1])}:function(g){return d(h(g))},x=f?function(g){var P=s9(r,o9([0,g.x])),T=Math.atan2(P[0]-s,P[1]-l)-Math.PI/2;return dd(P[0],P[1])+ry(-pw(T))}:function(g){var P=h(g);return d(P)+ry(-pw(P))},b=f?function(g){return DKt(r,g.x,0,1/0)}:function(g){var P=h(g),T=Math.cos(P),F=Math.sin(P);return"M"+[s+o*T,l-o*F]+"L"+[s+a*T,l-a*F]},p=dp.makeLabelFns(c,0),E=p.labelStandoff,k={};k.xFn=function(g){var P=h(g);return Math.cos(P)*E},k.yFn=function(g){var P=h(g),T=Math.sin(P)>0?.2:1;return-Math.sin(P)*(E+g.fontSize*T)+Math.abs(Math.cos(P))*(g.fontSize*RKt)},k.anchorFn=function(g){var P=h(g),T=Math.cos(P);return Math.abs(T)<.1?"middle":T>0?"start":"end"},k.heightFn=function(g,P,T){var F=h(g);return-.5*(1+Math.sin(F))*T};var A=MKe(u);r.angularTickLayout!==A&&(i["angular-axis"].selectAll("."+c._id+"tick").remove(),r.angularTickLayout=A);var L=f?[1/0].concat(c.tickvals||[]).map(function(g){return dp.tickText(c,g,!0,!1)}):dp.calcTicks(c);f&&(L[0].text="\u221E",L[0].fontSize*=1.75);var _;if(t.gridshape==="linear"?(_=L.map(h),cc.angleDelta(_[0],_[1])<0&&(_=_.slice().reverse())):_=null,r.vangles=_,c.type==="category"&&(L=L.filter(function(g){return cc.isAngleInsideSector(h(g),r.sectorInRad)})),c.visible){var C=c.ticks==="inside"?-1:1,M=(c.linewidth||1)/2;dp.drawTicks(n,c,{vals:L,layer:i["angular-axis"],path:"M"+C*M+",0h"+C*c.ticklen,transFn:x,crisp:!1}),dp.drawGrid(n,c,{vals:L,layer:i["angular-grid"],path:b,transFn:cc.noop,crisp:!1}),dp.drawLabels(n,c,{vals:L,layer:i["angular-axis"],repositionOnUpdate:!0,transFn:v,labelFns:k})}nC(i["angular-line"].select("path"),u.showline,{d:r.pathSubplot(),transform:dd(s,l)}).attr("stroke-width",u.linewidth).call(I$.stroke,u.linecolor)};Fd.updateFx=function(e,t){if(!this.gd._context.staticPlot){var r=!this.isSmith;r&&(this.updateAngularDrag(e),this.updateRadialDrag(e,t,0),this.updateRadialDrag(e,t,1)),this.updateHoverAndMainDrag(e)}};Fd.updateHoverAndMainDrag=function(e){var t=this,r=t.isSmith,n=t.gd,i=t.layers,a=e._zoomlayer,o=Lx.MINZOOM,s=Lx.OFFEDGE,l=t.radius,u=t.innerRadius,c=t.cx,f=t.cy,h=t.cxx,d=t.cyy,v=t.sectorInRad,x=t.vangles,b=t.radialAxis,p=_1.clampTiny,E=_1.findXYatLength,k=_1.findEnclosingVertexAngles,A=Lx.cornerHalfWidth,L=Lx.cornerLen/2,_,C,M=y1.makeDragger(i,"path","maindrag",e.dragmode===!1?"none":"crosshair");vw.select(M).attr("d",t.pathSubplot()).attr("transform",dd(c,f)),M.onmousemove=function(ce){xKe.hover(n,ce,t.id),n._fullLayout._lasthover=M,n._fullLayout._hoversubplot=t.id},M.onmouseout=function(ce){n._dragging||l9.unhover(n,ce)};var g={element:M,gd:n,subplot:t.id,plotinfo:{id:t.id,xaxis:t.xaxis,yaxis:t.yaxis},xaxes:[t.xaxis],yaxes:[t.yaxis]},P,T,F,q,V,H,X,G,N;function W(ce,Ge){return Math.sqrt(ce*ce+Ge*Ge)}function re(ce,Ge){return W(ce-h,Ge-d)}function ae(ce,Ge){return Math.atan2(d-Ge,ce-h)}function _e(ce,Ge){return[ce*Math.cos(Ge),ce*Math.sin(-Ge)]}function Me(ce,Ge){if(ce===0)return t.pathSector(2*A);var nt=L/ce,ct=Ge-nt,qt=Ge+nt,rt=Math.max(0,Math.min(ce,l)),ot=rt-A,Rt=rt+A;return"M"+_e(ot,ct)+"A"+[ot,ot]+" 0,0,0 "+_e(ot,qt)+"L"+_e(Rt,qt)+"A"+[Rt,Rt]+" 0,0,1 "+_e(Rt,ct)+"Z"}function ke(ce,Ge,nt){if(ce===0)return t.pathSector(2*A);var ct=_e(ce,Ge),qt=_e(ce,nt),rt=p((ct[0]+qt[0])/2),ot=p((ct[1]+qt[1])/2),Rt,kt;if(rt&&ot){var Ct=ot/rt,Yt=-1/Ct,xr=E(A,Ct,rt,ot);Rt=E(L,Yt,xr[0][0],xr[0][1]),kt=E(L,Yt,xr[1][0],xr[1][1])}else{var er,Ke;ot?(er=L,Ke=A):(er=A,Ke=L),Rt=[[rt-er,ot-Ke],[rt+er,ot-Ke]],kt=[[rt-er,ot+Ke],[rt+er,ot+Ke]]}return"M"+Rt.join("L")+"L"+kt.reverse().join("L")+"Z"}function ge(){F=null,q=null,V=t.pathSubplot(),H=!1;var ce=n._fullLayout[t.id];X=SKt(ce.bgcolor).getLuminance(),G=y1.makeZoombox(a,X,c,f,V),G.attr("fill-rule","evenodd"),N=y1.makeCorners(a,c,f),R$(n)}function ie(ce,Ge){return Ge=Math.max(Math.min(Ge,l),u),ceo?(ce-1&&ce===1&&IKt(Ge,n,[t.xaxis],[t.yaxis],t.id,g),nt.indexOf("event")>-1&&xKe.click(n,Ge,t.id)}g.prepFn=function(ce,Ge,nt){var ct=n._fullLayout.dragmode,qt=M.getBoundingClientRect();n._fullLayout._calcInverseTransform(n);var rt=n._fullLayout._invTransform;_=n._fullLayout._invScaleX,C=n._fullLayout._invScaleY;var ot=cc.apply3DTransform(rt)(Ge-qt.left,nt-qt.top);if(P=ot[0],T=ot[1],x){var Rt=_1.findPolygonOffset(l,v[0],v[1],x);P+=h+Rt[0],T+=d+Rt[1]}switch(ct){case"zoom":g.clickFn=Re,r||(x?g.moveFn=ze:g.moveFn=Ee,g.doneFn=Ce,ge(ce,Ge,nt));break;case"select":case"lasso":PKt(ce,Ge,nt,g,ct);break}},l9.init(g)};Fd.updateRadialDrag=function(e,t,r){var n=this,i=n.gd,a=n.layers,o=n.radius,s=n.innerRadius,l=n.cx,u=n.cy,c=n.radialAxis,f=Lx.radialDragBoxSize,h=f/2;if(!c.visible)return;var d=Px(n.radialAxisAngle),v=c._rl,x=v[0],b=v[1],p=v[r],E=.75*(v[1]-v[0])/(1-n.getHole(t))/o,k,A,L;r?(k=l+(o+h)*Math.cos(d),A=u-(o+h)*Math.sin(d),L="radialdrag"):(k=l+(s-h)*Math.cos(d),A=u-(s-h)*Math.sin(d),L="radialdrag-inner");var _=y1.makeRectDragger(a,L,"crosshair",-h,-h,f,f),C={element:_,gd:i};e.dragmode===!1&&(C.dragmode=!1),nC(vw.select(_),c.visible&&s0!=(r?P>x:P=90||i>90&&a>=450?d=1:s<=0&&u<=0?d=0:d=Math.max(s,u),i<=180&&a>=180||i>180&&a>=540?c=-1:o>=0&&l>=0?c=0:c=Math.min(o,l),i<=270&&a>=270||i>270&&a>=630?f=-1:s>=0&&u>=0?f=0:f=Math.min(s,u),a>=360?h=1:o<=0&&l<=0?h=0:h=Math.max(o,l),[c,f,h,d]}function EKe(e,t){var r=function(i){return cc.angleDist(e,i)},n=cc.findIndexOfMin(t,r);return t[n]}function nC(e,t,r){return t?(e.attr("display",null),e.attr(r)):e&&e.attr("display","none"),e}});var z$=ye((tbr,DKe)=>{"use strict";var OKt=dh(),Yo=Cd(),BKt=Ju().attributes,f0=Mr().extendFlat,CKe=Bu().overrideAll,LKe=CKe({color:Yo.color,showline:f0({},Yo.showline,{dflt:!0}),linecolor:Yo.linecolor,linewidth:Yo.linewidth,showgrid:f0({},Yo.showgrid,{dflt:!0}),gridcolor:Yo.gridcolor,gridwidth:Yo.gridwidth,griddash:Yo.griddash},"plot","from-root"),PKe=CKe({tickmode:Yo.minor.tickmode,nticks:Yo.nticks,tick0:Yo.tick0,dtick:Yo.dtick,tickvals:Yo.tickvals,ticktext:Yo.ticktext,ticks:Yo.ticks,ticklen:Yo.ticklen,tickwidth:Yo.tickwidth,tickcolor:Yo.tickcolor,ticklabelstep:Yo.ticklabelstep,showticklabels:Yo.showticklabels,labelalias:Yo.labelalias,showtickprefix:Yo.showtickprefix,tickprefix:Yo.tickprefix,showticksuffix:Yo.showticksuffix,ticksuffix:Yo.ticksuffix,showexponent:Yo.showexponent,exponentformat:Yo.exponentformat,minexponent:Yo.minexponent,separatethousands:Yo.separatethousands,tickfont:Yo.tickfont,tickangle:Yo.tickangle,tickformat:Yo.tickformat,tickformatstops:Yo.tickformatstops,layer:Yo.layer},"plot","from-root"),IKe={visible:f0({},Yo.visible,{dflt:!0}),type:f0({},Yo.type,{values:["-","linear","log","date","category"]}),autotypenumbers:Yo.autotypenumbers,autorangeoptions:{minallowed:Yo.autorangeoptions.minallowed,maxallowed:Yo.autorangeoptions.maxallowed,clipmin:Yo.autorangeoptions.clipmin,clipmax:Yo.autorangeoptions.clipmax,include:Yo.autorangeoptions.include,editType:"plot"},autorange:f0({},Yo.autorange,{editType:"plot"}),rangemode:{valType:"enumerated",values:["tozero","nonnegative","normal"],dflt:"tozero",editType:"calc"},minallowed:f0({},Yo.minallowed,{editType:"plot"}),maxallowed:f0({},Yo.maxallowed,{editType:"plot"}),range:f0({},Yo.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],editType:"plot"}),categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,angle:{valType:"angle",editType:"plot"},autotickangles:Yo.autotickangles,side:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"clockwise",editType:"plot"},title:{text:f0({},Yo.title.text,{editType:"plot",dflt:""}),font:f0({},Yo.title.font,{editType:"plot"}),editType:"plot"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(IKe,LKe,PKe);var RKe={visible:f0({},Yo.visible,{dflt:!0}),type:{valType:"enumerated",values:["-","linear","category"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:Yo.autotypenumbers,categoryorder:Yo.categoryorder,categoryarray:Yo.categoryarray,thetaunit:{valType:"enumerated",values:["radians","degrees"],dflt:"degrees",editType:"calc"},period:{valType:"number",editType:"calc",min:0},direction:{valType:"enumerated",values:["counterclockwise","clockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",editType:"calc"},hoverformat:Yo.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};f0(RKe,LKe,PKe);DKe.exports={domain:BKt({name:"polar",editType:"plot"}),sector:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],dflt:[0,360],editType:"plot"},hole:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},bgcolor:{valType:"color",editType:"plot",dflt:OKt.background},radialaxis:IKe,angularaxis:RKe,gridshape:{valType:"enumerated",values:["circular","linear"],dflt:"circular",editType:"plot"},uirevision:{valType:"any",editType:"none"},editType:"calc"}});var OKe=ye((rbr,qKe)=>{"use strict";var c9=Mr(),NKt=va(),UKt=Vs(),VKt=C_(),HKt=kd().getSubplotData,GKt=xb(),jKt=T3(),WKt=t_(),ZKt=r_(),XKt=eI(),YKt=YM(),KKt=hB(),JKt=L3(),FKe=z$(),$Kt=k$(),f9=i9(),zKe=f9.axisNames;function QKt(e,t,r,n){var i=r("bgcolor");n.bgColor=NKt.combine(i,n.paper_bgcolor);var a=r("sector");r("hole");var o=HKt(n.fullData,f9.name,n.id),s=n.layoutOut,l;function u(G,N){return r(l+"."+G,N)}for(var c=0;c{"use strict";var tJt=kd().getSubplotCalcData,rJt=Mr().counterRegex,iJt=D$(),NKe=i9(),UKe=NKe.attr,mw=NKe.name,BKe=rJt(mw),VKe={};VKe[UKe]={valType:"subplotid",dflt:mw,editType:"calc"};function nJt(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[mw],i=0;i{"use strict";var oJt=Wo().hovertemplateAttrs,sJt=Wo().texttemplateAttrs,d9=no().extendFlat,lJt=Eg(),h0=Uc(),uJt=vl(),GA=h0.line;GKe.exports={mode:h0.mode,r:{valType:"data_array",editType:"calc+clearAxisTypes"},theta:{valType:"data_array",editType:"calc+clearAxisTypes"},r0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dr:{valType:"number",dflt:1,editType:"calc"},theta0:{valType:"any",dflt:0,editType:"calc+clearAxisTypes"},dtheta:{valType:"number",editType:"calc"},thetaunit:{valType:"enumerated",values:["radians","degrees","gradians"],dflt:"degrees",editType:"calc+clearAxisTypes"},text:h0.text,texttemplate:sJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:h0.hovertext,line:{color:GA.color,width:GA.width,dash:GA.dash,backoff:GA.backoff,shape:d9({},GA.shape,{values:["linear","spline"]}),smoothing:GA.smoothing,editType:"calc"},connectgaps:h0.connectgaps,marker:h0.marker,cliponaxis:d9({},h0.cliponaxis,{dflt:!1}),textposition:h0.textposition,textfont:h0.textfont,fill:d9({},h0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:lJt(),hoverinfo:d9({},uJt.hoverinfo,{flags:["r","theta","text","name"]}),hoveron:h0.hoveron,hovertemplate:oJt(),selected:h0.selected,unselected:h0.unselected}});var p9=ye((abr,ZKe)=>{"use strict";var v9=Mr(),jA=lu(),cJt=$p(),fJt=R0(),jKe=J3(),hJt=D0(),dJt=Ig(),vJt=Sm().PTS_LINESONLY,pJt=aC();function gJt(e,t,r,n){function i(s,l){return v9.coerce(e,t,pJt,s,l)}var a=WKe(e,t,n,i);if(!a){t.visible=!1;return}i("thetaunit"),i("mode",a{"use strict";var mJt=Mr(),XKe=Qa();YKe.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot,o,s;a?(o=a.radialAxis,s=a.angularAxis):(a=n[r.subplot],o=a.radialaxis,s=a.angularaxis);var l=o.c2l(t.r);i.rLabel=XKe.tickText(o,l,!0).text;var u=s.thetaunit==="degrees"?mJt.rad2deg(t.theta):t.theta;return i.thetaLabel=XKe.tickText(s,u,!0).text,i}});var $Ke=ye((sbr,JKe)=>{"use strict";var KKe=uo(),yJt=es().BADNUM,_Jt=Qa(),xJt=z0(),bJt=km(),wJt=F0(),TJt=q0().calcMarkerSize;JKe.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=a.makeCalcdata(r,"r"),l=o.makeCalcdata(r,"theta"),u=r._length,c=new Array(u),f=0;f{"use strict";var AJt=iT(),QKe=es().BADNUM;eJe.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=r.radialAxis,u=r.angularAxis,c=0;c{"use strict";var SJt=sT();function MJt(e,t,r,n){var i=SJt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,rJe(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function rJe(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="r",a._hovertitle="\u03B8";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.rLabel=s.rLabel,n.thetaLabel=s.thetaLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["r","theta","text"]),f.indexOf("r")!==-1&&c(i,n.rLabel),f.indexOf("theta")!==-1&&c(a,n.thetaLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}iJe.exports={hoverPoints:MJt,makeHoverPointText:rJe}});var aJe=ye((cbr,nJe)=>{"use strict";nJe.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:h9(),categories:["polar","symbols","showLegend","scatter-like"],attributes:aC(),supplyDefaults:p9().supplyDefaults,colorbar:Kd(),formatLabels:g9(),calc:$Ke(),plot:tJe(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:m9().hoverPoints,selectPoints:lT(),meta:{}}});var sJe=ye((fbr,oJe)=>{"use strict";oJe.exports=aJe()});var F$=ye((hbr,lJe)=>{"use strict";var Vp=aC(),x1=tk(),EJt=Wo().texttemplateAttrs;lJe.exports={mode:Vp.mode,r:Vp.r,theta:Vp.theta,r0:Vp.r0,dr:Vp.dr,theta0:Vp.theta0,dtheta:Vp.dtheta,thetaunit:Vp.thetaunit,text:Vp.text,texttemplate:EJt({editType:"plot"},{keys:["r","theta","text"]}),hovertext:Vp.hovertext,hovertemplate:Vp.hovertemplate,line:{color:x1.line.color,width:x1.line.width,dash:x1.line.dash,editType:"calc"},connectgaps:x1.connectgaps,marker:x1.marker,fill:x1.fill,fillcolor:x1.fillcolor,textposition:x1.textposition,textfont:x1.textfont,hoverinfo:Vp.hoverinfo,selected:Vp.selected,unselected:Vp.unselected}});var fJe=ye((dbr,cJe)=>{"use strict";var uJe=Mr(),q$=lu(),kJt=p9().handleRThetaDefaults,CJt=$p(),LJt=R0(),PJt=D0(),IJt=Ig(),RJt=Sm().PTS_LINESONLY,DJt=F$();cJe.exports=function(t,r,n,i){function a(s,l){return uJe.coerce(t,r,DJt,s,l)}var o=kJt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("mode",o{"use strict";var zJt=g9();hJe.exports=function(t,r,n){var i=t.i;return"r"in t||(t.r=r._r[i]),"theta"in t||(t.theta=r._theta[i]),zJt(t,r,n)}});var pJe=ye((pbr,vJe)=>{"use strict";var FJt=z0(),qJt=q0().calcMarkerSize,OJt=Y2(),BJt=Qa(),NJt=sx().TOO_MANY_POINTS;vJe.exports=function(t,r){var n=t._fullLayout,i=r.subplot,a=n[i].radialaxis,o=n[i].angularaxis,s=r._r=a.makeCalcdata(r,"r"),l=r._theta=o.makeCalcdata(r,"theta"),u=r._length,c={};u{"use strict";var UJt=zz(),VJt=m9().makeHoverPointText;function HJt(e,t,r,n){var i=e.cd,a=i[0].t,o=a.r,s=a.theta,l=UJt.hoverPoints(e,t,r,n);if(!(!l||l[0].index===!1)){var u=l[0];if(u.index===void 0)return l;var c=e.subplot,f=u.cd[u.index],h=u.trace;if(f.r=o[u.index],f.theta=s[u.index],!!c.isPtInside(f))return u.xLabelVal=void 0,u.yLabelVal=void 0,VJt(f,h,c,u),l}}gJe.exports={hoverPoints:HJt}});var _Je=ye((mbr,yJe)=>{"use strict";yJe.exports={moduleType:"trace",name:"scatterpolargl",basePlotModule:h9(),categories:["gl","regl","polar","symbols","showLegend","scatter-like"],attributes:F$(),supplyDefaults:fJe(),colorbar:Kd(),formatLabels:dJe(),calc:pJe(),hoverPoints:mJe().hoverPoints,selectPoints:KX(),meta:{}}});var xJe=ye((ybr,O$)=>{"use strict";var GJt=Oz(),jJt=uo(),WJt=QY(),ZJt=ZX(),y9=Y2(),_9=Mr(),XJt=sx().TOO_MANY_POINTS,YJt={};O$.exports=function(t,r,n){if(n.length){var i=r.radialAxis,a=r.angularAxis,o=ZJt(t,r);return n.forEach(function(s){if(!(!s||!s[0]||!s[0].trace)){var l=s[0],u=l.trace,c=l.t,f=u._length,h=c.r,d=c.theta,v=c.opts,x,b=h.slice(),p=d.slice();for(x=0;x=XJt&&(v.marker.cluster=c.tree),v.marker&&(v.markerSel.positions=v.markerUnsel.positions=v.marker.positions=E),v.line&&E.length>1&&_9.extendFlat(v.line,y9.linePositions(t,u,E)),v.text&&(_9.extendFlat(v.text,{positions:E},y9.textPosition(t,u,v.text,v.marker)),_9.extendFlat(v.textSel,{positions:E},y9.textPosition(t,u,v.text,v.markerSel)),_9.extendFlat(v.textUnsel,{positions:E},y9.textPosition(t,u,v.text,v.markerUnsel))),v.fill&&!o.fill2d&&(o.fill2d=!0),v.marker&&!o.scatter2d&&(o.scatter2d=!0),v.line&&!o.line2d&&(o.line2d=!0),v.text&&!o.glText&&(o.glText=!0),o.lineOptions.push(v.line),o.fillOptions.push(v.fill),o.markerOptions.push(v.marker),o.markerSelectedOptions.push(v.markerSel),o.markerUnselectedOptions.push(v.markerUnsel),o.textOptions.push(v.text),o.textSelectedOptions.push(v.textSel),o.textUnselectedOptions.push(v.textUnsel),o.selectBatch.push([]),o.unselectBatch.push([]),c.x=k,c.y=A,c.rawx=k,c.rawy=A,c.r=h,c.theta=d,c.positions=E,c._scene=o,c.index=o.count,o.count++}}),WJt(t,r,n)}};O$.exports.reglPrecompiled=YJt});var TJe=ye((_br,wJe)=>{"use strict";var bJe=_Je();bJe.plot=xJe();wJe.exports=bJe});var SJe=ye((xbr,AJe)=>{"use strict";AJe.exports=TJe()});var B$=ye((bbr,MJe)=>{"use strict";var KJt=Wo().hovertemplateAttrs,WA=no().extendFlat,Ix=aC(),Rx=Lm();MJe.exports={r:Ix.r,theta:Ix.theta,r0:Ix.r0,dr:Ix.dr,theta0:Ix.theta0,dtheta:Ix.dtheta,thetaunit:Ix.thetaunit,base:WA({},Rx.base,{}),offset:WA({},Rx.offset,{}),width:WA({},Rx.width,{}),text:WA({},Rx.text,{}),hovertext:WA({},Rx.hovertext,{}),marker:JJt(),hoverinfo:Ix.hoverinfo,hovertemplate:KJt(),selected:Rx.selected,unselected:Rx.unselected};function JJt(){var e=WA({},Rx.marker);return delete e.cornerradius,e}});var N$=ye((wbr,EJe)=>{"use strict";EJe.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}});var LJe=ye((Tbr,CJe)=>{"use strict";var kJe=Mr(),$Jt=p9().handleRThetaDefaults,QJt=FI(),e$t=B$();CJe.exports=function(t,r,n,i){function a(s,l){return kJe.coerce(t,r,e$t,s,l)}var o=$Jt(t,r,i,a);if(!o){r.visible=!1;return}a("thetaunit"),a("base"),a("offset"),a("width"),a("text"),a("hovertext"),a("hovertemplate"),QJt(t,r,a,n,i),kJe.coerceSelectionMarkerOpacity(r,a)}});var IJe=ye((Abr,PJe)=>{"use strict";var t$t=Mr(),r$t=N$();PJe.exports=function(e,t,r){var n={},i;function a(l,u){return t$t.coerce(e[i]||{},t[i],r$t,l,u)}for(var o=0;o{"use strict";var RJe=Dv().hasColorscale,DJe=zv(),i$t=Mr().isArrayOrTypedArray,n$t=c4(),a$t=Gb().setGroupPositions,o$t=F0(),s$t=ba().traceIs,l$t=Mr().extendFlat;function u$t(e,t){for(var r=e._fullLayout,n=t.subplot,i=r[n].radialaxis,a=r[n].angularaxis,o=i.makeCalcdata(t,"r"),s=a.makeCalcdata(t,"theta"),l=t._length,u=new Array(l),c=o,f=s,h=0;h{"use strict";var FJe=xa(),x9=uo(),ZA=Mr(),f$t=ao(),V$=a9();qJe.exports=function(t,r,n){var i=t._context.staticPlot,a=r.xaxis,o=r.yaxis,s=r.radialAxis,l=r.angularAxis,u=h$t(r),c=r.layers.frontplot.select("g.barlayer");ZA.makeTraceGroups(c,n,"trace bars").each(function(){var f=FJe.select(this),h=ZA.ensureSingle(f,"g","points"),d=h.selectAll("g.point").data(ZA.identity);d.enter().append("g").style("vector-effect",i?"none":"non-scaling-stroke").style("stroke-miterlimit",2).classed("point",!0),d.exit().remove(),d.each(function(v){var x=FJe.select(this),b=v.rp0=s.c2p(v.s0),p=v.rp1=s.c2p(v.s1),E=v.thetag0=l.c2g(v.p0),k=v.thetag1=l.c2g(v.p1),A;if(!x9(b)||!x9(p)||!x9(E)||!x9(k)||b===p||E===k)A="M0,0Z";else{var L=s.c2g(v.s1),_=(E+k)/2;v.ct=[a.c2p(L*Math.cos(_)),o.c2p(L*Math.sin(_))],A=u(b,p,E,k)}ZA.ensureSingle(x,"path").attr("d",A)}),f$t.setClipUrl(f,r._hasClipOnAxisFalse?r.clipIds.forTraces:null,t)})};function h$t(e){var t=e.cxx,r=e.cyy;return e.vangles?function(n,i,a,o){var s,l;ZA.angleDelta(a,o)>0?(s=a,l=o):(s=o,l=a);var u=V$.findEnclosingVertexAngles(s,e.vangles)[0],c=V$.findEnclosingVertexAngles(l,e.vangles)[1],f=[u,(s+l)/2,c];return V$.pathPolygonAnnulus(n,i,s,l,f,t,r)}:function(n,i,a,o){return ZA.pathAnnulus(n,i,a,o,t,r)}}});var NJe=ye((Ebr,BJe)=>{"use strict";var d$t=Nc(),H$=Mr(),v$t=TT().getTraceColor,p$t=H$.fillText,g$t=m9().makeHoverPointText,m$t=a9().isPtInsidePolygon;BJe.exports=function(t,r,n){var i=t.cd,a=i[0].trace,o=t.subplot,s=o.radialAxis,l=o.angularAxis,u=o.vangles,c=u?m$t:H$.isPtInsideSector,f=t.maxHoverDistance,h=l._period||2*Math.PI,d=Math.abs(s.g2p(Math.sqrt(r*r+n*n))),v=Math.atan2(n,r);s.range[0]>s.range[1]&&(v+=Math.PI);var x=function(k){return c(d,v,[k.rp0,k.rp1],[k.thetag0,k.thetag1],u)?f+Math.min(1,Math.abs(k.thetag1-k.thetag0)/h)-1+(k.rp1-d)/(k.rp1-k.rp0)-1:1/0};if(d$t.getClosest(i,x,t),t.index!==!1){var b=t.index,p=i[b];t.x0=t.x1=p.ct[0],t.y0=t.y1=p.ct[1];var E=H$.extendFlat({},p,{r:p.s,theta:p.p});return p$t(p,a,t),g$t(E,a,o,t),t.hovertemplate=a.hovertemplate,t.color=v$t(a,p),t.xLabelVal=t.yLabelVal=void 0,p.s<0&&(t.idealAlign="left"),[t]}}});var VJe=ye((kbr,UJe)=>{"use strict";UJe.exports={moduleType:"trace",name:"barpolar",basePlotModule:h9(),categories:["polar","bar","showLegend"],attributes:B$(),layoutAttributes:N$(),supplyDefaults:LJe(),supplyLayoutDefaults:IJe(),calc:U$().calc,crossTraceCalc:U$().crossTraceCalc,plot:OJe(),colorbar:Kd(),formatLabels:g9(),style:N0().style,styleOnSelect:N0().styleOnSelect,hoverPoints:NJe(),selectPoints:AT(),meta:{}}});var GJe=ye((Cbr,HJe)=>{"use strict";HJe.exports=VJe()});var G$=ye((Lbr,jJe)=>{"use strict";jJe.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}});var j$=ye((Pbr,YJe)=>{"use strict";var y$t=dh(),Mf=Cd(),_$t=Ju().attributes,Dx=Mr().extendFlat,WJe=Bu().overrideAll,ZJe=WJe({color:Mf.color,showline:Dx({},Mf.showline,{dflt:!0}),linecolor:Mf.linecolor,linewidth:Mf.linewidth,showgrid:Dx({},Mf.showgrid,{dflt:!0}),gridcolor:Mf.gridcolor,gridwidth:Mf.gridwidth,griddash:Mf.griddash},"plot","from-root"),XJe=WJe({ticklen:Mf.ticklen,tickwidth:Dx({},Mf.tickwidth,{dflt:2}),tickcolor:Mf.tickcolor,showticklabels:Mf.showticklabels,labelalias:Mf.labelalias,showtickprefix:Mf.showtickprefix,tickprefix:Mf.tickprefix,showticksuffix:Mf.showticksuffix,ticksuffix:Mf.ticksuffix,tickfont:Mf.tickfont,tickformat:Mf.tickformat,hoverformat:Mf.hoverformat,layer:Mf.layer},"plot","from-root"),x$t=Dx({visible:Dx({},Mf.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:Dx({},Mf.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},ZJe,XJe),b$t=Dx({visible:Dx({},Mf.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:Mf.ticks,editType:"calc"},ZJe,XJe);YJe.exports={domain:_$t({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:y$t.background},realaxis:x$t,imaginaryaxis:b$t,editType:"calc"}});var $Je=ye((Ibr,JJe)=>{"use strict";var XA=Mr(),w$t=va(),T$t=Vs(),A$t=C_(),S$t=kd().getSubplotData,M$t=r_(),E$t=t_(),k$t=YM(),C$t=ym(),YA=j$(),W$=G$(),KJe=W$.axisNames,L$t=I$t(function(e){return XA.isTypedArray(e)&&(e=Array.from(e)),e.slice().reverse().map(function(t){return-t}).concat([0]).concat(e)},String);function P$t(e,t,r,n){var i=r("bgcolor");n.bgColor=w$t.combine(i,n.paper_bgcolor);var a=S$t(n.fullData,W$.name,n.id),o=n.layoutOut,s;function l(L,_){return r(s+"."+L,_)}for(var u=0;u{"use strict";var R$t=kd().getSubplotCalcData,D$t=Mr().counterRegex,z$t=D$(),e$e=G$(),t$e=e$e.attr,yw=e$e.name,QJe=D$t(yw),r$e={};r$e[t$e]={valType:"subplotid",dflt:yw,editType:"calc"};function F$t(e){for(var t=e._fullLayout,r=e.calcdata,n=t._subplots[yw],i=0;i{"use strict";var O$t=Wo().hovertemplateAttrs,B$t=Wo().texttemplateAttrs,b9=no().extendFlat,N$t=Eg(),d0=Uc(),U$t=vl(),KA=d0.line;a$e.exports={mode:d0.mode,real:{valType:"data_array",editType:"calc+clearAxisTypes"},imag:{valType:"data_array",editType:"calc+clearAxisTypes"},text:d0.text,texttemplate:B$t({editType:"plot"},{keys:["real","imag","text"]}),hovertext:d0.hovertext,line:{color:KA.color,width:KA.width,dash:KA.dash,backoff:KA.backoff,shape:b9({},KA.shape,{values:["linear","spline"]}),smoothing:KA.smoothing,editType:"calc"},connectgaps:d0.connectgaps,marker:d0.marker,cliponaxis:b9({},d0.cliponaxis,{dflt:!1}),textposition:d0.textposition,textfont:d0.textfont,fill:b9({},d0.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:N$t(),hoverinfo:b9({},U$t.hoverinfo,{flags:["real","imag","text","name"]}),hoveron:d0.hoveron,hovertemplate:O$t(),selected:d0.selected,unselected:d0.unselected}});var l$e=ye((zbr,s$e)=>{"use strict";var w9=Mr(),JA=lu(),V$t=$p(),H$t=R0(),o$e=J3(),G$t=D0(),j$t=Ig(),W$t=Sm().PTS_LINESONLY,Z$t=Z$();s$e.exports=function(t,r,n,i){function a(l,u){return w9.coerce(t,r,Z$t,l,u)}var o=X$t(t,r,i,a);if(!o){r.visible=!1;return}a("mode",o{"use strict";var u$e=Qa();c$e.exports=function(t,r,n){var i={},a=n[r.subplot]._subplot;return i.realLabel=u$e.tickText(a.radialAxis,t.real,!0).text,i.imagLabel=u$e.tickText(a.angularAxis,t.imag,!0).text,i}});var v$e=ye((qbr,d$e)=>{"use strict";var h$e=uo(),Y$t=es().BADNUM,K$t=z0(),J$t=km(),$$t=F0(),Q$t=q0().calcMarkerSize;d$e.exports=function(t,r){for(var n=t._fullLayout,i=r.subplot,a=n[i].realaxis,o=n[i].imaginaryaxis,s=a.makeCalcdata(r,"real"),l=o.makeCalcdata(r,"imag"),u=r._length,c=new Array(u),f=0;f{"use strict";var eQt=iT(),p$e=es().BADNUM,tQt=P$(),rQt=tQt.smith;g$e.exports=function(t,r,n){for(var i=r.layers.frontplot.select("g.scatterlayer"),a=r.xaxis,o=r.yaxis,s={xaxis:a,yaxis:o,plot:r.framework,layerClipId:r._hasClipOnAxisFalse?r.clipIds.forTraces:null},l=0;l{"use strict";var iQt=sT();function nQt(e,t,r,n){var i=iQt(e,t,r,n);if(!(!i||i[0].index===!1)){var a=i[0];if(a.index===void 0)return i;var o=e.subplot,s=a.cd[a.index],l=a.trace;if(o.isPtInside(s))return a.xLabelVal=void 0,a.yLabelVal=void 0,y$e(s,l,o,a),a.hovertemplate=l.hovertemplate,i}}function y$e(e,t,r,n){var i=r.radialAxis,a=r.angularAxis;i._hovertitle="real",a._hovertitle="imag";var o={};o[t.subplot]={_subplot:r};var s=t._module.formatLabels(e,t,o);n.realLabel=s.realLabel,n.imagLabel=s.imagLabel;var l=e.hi||t.hoverinfo,u=[];function c(h,d){u.push(h._hovertitle+": "+d)}if(!t.hovertemplate){var f=l.split("+");f.indexOf("all")!==-1&&(f=["real","imag","text"]),f.indexOf("real")!==-1&&c(i,n.realLabel),f.indexOf("imag")!==-1&&c(a,n.imagLabel),f.indexOf("text")!==-1&&n.text&&(u.push(n.text),delete n.text),n.extraText=u.join("
")}}_$e.exports={hoverPoints:nQt,makeHoverPointText:y$e}});var w$e=ye((Nbr,b$e)=>{"use strict";b$e.exports={moduleType:"trace",name:"scattersmith",basePlotModule:n$e(),categories:["smith","symbols","showLegend","scatter-like"],attributes:Z$(),supplyDefaults:l$e(),colorbar:Kd(),formatLabels:f$e(),calc:v$e(),plot:m$e(),style:op().style,styleOnSelect:op().styleOnSelect,hoverPoints:x$e().hoverPoints,selectPoints:lT(),meta:{}}});var A$e=ye((Ubr,T$e)=>{"use strict";T$e.exports=w$e()});var Sv=ye((Vbr,M$e)=>{var A9=bh();function S$e(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}A9(S$e.prototype,{instance:function(e,t){e=(e||"gregorian").toLowerCase(),t=t||"";var r=this._localCals[e+"-"+t];if(!r&&this.calendars[e]&&(r=new this.calendars[e](t),this._localCals[e+"-"+t]=r),!r)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,e);return r},newDate:function(e,t,r,n,i){return n=(e!=null&&e.year?e.calendar():typeof n=="string"?this.instance(n,i):n)||this.instance(),n.newDate(e,t,r)},substituteDigits:function(e){return function(t){return(t+"").replace(/[0-9]/g,function(r){return e[r]})}},substituteChineseDigits:function(e,t){return function(r){for(var n="",i=0;r>0;){var a=r%10;n=(a===0?"":e[a]+t[i])+n,i++,r=Math.floor(r/10)}return n.indexOf(e[1]+t[1])===0&&(n=n.substr(1)),n||e[0]}}});function X$(e,t,r,n){if(this._calendar=e,this._year=t,this._month=r,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function T9(e,t){return e=""+e,"000000".substring(0,t-e.length)+e}A9(X$.prototype,{newDate:function(e,t,r){return this._calendar.newDate(e==null?this:e,t,r)},year:function(e){return arguments.length===0?this._year:this.set(e,"y")},month:function(e){return arguments.length===0?this._month:this.set(e,"m")},day:function(e){return arguments.length===0?this._day:this.set(e,"d")},date:function(e,t,r){if(!this._calendar.isValid(e,t,r))throw(Es.local.invalidDate||Es.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=e,this._month=t,this._day=r,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(e,t){return this._calendar.add(this,e,t)},set:function(e,t){return this._calendar.set(this,e,t)},compareTo:function(e){if(this._calendar.name!==e._calendar.name)throw(Es.local.differentCalendars||Es.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,e._calendar.local.name);var t=this._year!==e._year?this._year-e._year:this._month!==e._month?this.monthOfYear()-e.monthOfYear():this._day-e._day;return t===0?0:t<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(e){return this._calendar.fromJD(e)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(e){return this._calendar.fromJSDate(e)},toString:function(){return(this.year()<0?"-":"")+T9(Math.abs(this.year()),4)+"-"+T9(this.month(),2)+"-"+T9(this.day(),2)}});function Y$(){this.shortYearCutoff="+10"}A9(Y$.prototype,{_validateLevel:0,newDate:function(e,t,r){return e==null?this.today():(e.year&&(this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),r=e.day(),t=e.month(),e=e.year()),new X$(this,e,t,r))},today:function(){return this.fromJSDate(new Date)},epoch:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return t.year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return(t.year()<0?"-":"")+T9(Math.abs(t.year()),4)},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear),12},monthOfYear:function(e,t){var r=this._validate(e,t,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth);return(r.month()+this.monthsInYear(r)-this.firstMonth)%this.monthsInYear(r)+this.minMonth},fromMonthOfYear:function(e,t){var r=(t+this.firstMonth-2*this.minMonth)%this.monthsInYear(e)+this.minMonth;return this._validate(e,r,this.minDay,Es.local.invalidMonth||Es.regionalOptions[""].invalidMonth),r},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Es.local.invalidYear||Es.regionalOptions[""].invalidYear);return this.leapYear(t)?366:365},dayOfYear:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(e,t,r){return this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),{}},add:function(e,t,r){return this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),this._correctAdd(e,this._add(e,t,r),t,r)},_add:function(e,t,r){if(this._validateLevel++,r==="d"||r==="w"){var n=e.toJD()+t*(r==="w"?this.daysInWeek():1),i=e.calendar().fromJD(n);return this._validateLevel--,[i.year(),i.month(),i.day()]}try{var a=e.year()+(r==="y"?t:0),o=e.monthOfYear()+(r==="m"?t:0),i=e.day(),s=function(c){for(;of-1+c.minMonth;)a++,o-=f,f=c.monthsInYear(a)};r==="y"?(e.month()!==this.fromMonthOfYear(a,o)&&(o=this.newDate(a,e.month(),this.minDay).monthOfYear()),o=Math.min(o,this.monthsInYear(a)),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o)))):r==="m"&&(s(this),i=Math.min(i,this.daysInMonth(a,this.fromMonthOfYear(a,o))));var l=[a,this.fromMonthOfYear(a,o),i];return this._validateLevel--,l}catch(u){throw this._validateLevel--,u}},_correctAdd:function(e,t,r,n){if(!this.hasYearZero&&(n==="y"||n==="m")&&(t[0]===0||e.year()>0!=t[0]>0)){var i={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],a=r<0?-1:1;t=this._add(e,r*i[0]+a*i[1],i[2])}return e.date(t[0],t[1],t[2])},set:function(e,t,r){this._validate(e,this.minMonth,this.minDay,Es.local.invalidDate||Es.regionalOptions[""].invalidDate);var n=r==="y"?t:e.year(),i=r==="m"?t:e.month(),a=r==="d"?t:e.day();return(r==="y"||r==="m")&&(a=Math.min(a,this.daysInMonth(n,i))),e.date(n,i,a)},isValid:function(e,t,r){this._validateLevel++;var n=this.hasYearZero||e!==0;if(n){var i=this.newDate(e,t,this.minDay);n=t>=this.minMonth&&t-this.minMonth=this.minDay&&r-this.minDay13.5?13:1),u=i-(l>2.5?4716:4715);return u<=0&&u--,this.newDate(u,l,s)},toJSDate:function(e,t,r){var n=this._validate(e,t,r,Es.local.invalidDate||Es.regionalOptions[""].invalidDate),i=new Date(n.year(),n.month()-1,n.day());return i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0),i.setHours(i.getHours()>12?i.getHours()+2:0),i},fromJSDate:function(e){return this.newDate(e.getFullYear(),e.getMonth()+1,e.getDate())}});var Es=M$e.exports=new S$e;Es.cdate=X$;Es.baseCalendar=Y$;Es.calendars.gregorian=K$});var E$e=ye(()=>{var J$=bh(),qd=Sv();J$(qd.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"});qd.local=qd.regionalOptions[""];J$(qd.cdate.prototype,{formatDate:function(e,t){return typeof e!="string"&&(t=e,e=""),this._calendar.formatDate(e||"",this,t)}});J$(qd.baseCalendar.prototype,{UNIX_EPOCH:qd.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:24*60*60,TICKS_EPOCH:qd.instance().jdEpoch,TICKS_PER_DAY:24*60*60*1e7,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(e,t,r){if(typeof e!="string"&&(r=t,t=e,e=""),!t)return"";if(t.calendar()!==this)throw qd.local.invalidFormat||qd.regionalOptions[""].invalidFormat;e=e||this.local.dateFormat,r=r||{};for(var n=r.dayNamesShort||this.local.dayNamesShort,i=r.dayNames||this.local.dayNames,a=r.monthNumbers||this.local.monthNumbers,o=r.monthNamesShort||this.local.monthNamesShort,s=r.monthNames||this.local.monthNames,l=r.calculateWeek||this.local.calculateWeek,u=function(A,L){for(var _=1;k+_1},c=function(A,L,_,C){var M=""+L;if(u(A,C))for(;M.length<_;)M="0"+M;return M},f=function(A,L,_,C){return u(A)?C[L]:_[L]},h=this,d=function(A){return typeof a=="function"?a.call(h,A,u("m")):b(c("m",A.month(),2))},v=function(A,L){return L?typeof s=="function"?s.call(h,A):s[A.month()-h.minMonth]:typeof o=="function"?o.call(h,A):o[A.month()-h.minMonth]},x=this.local.digits,b=function(A){return r.localNumbers&&x?x(A):A},p="",E=!1,k=0;k1},E=function(F,q){var V=p(F,q),H=[2,3,V?4:2,V?4:2,10,11,20]["oyYJ@!".indexOf(F)+1],X=new RegExp("^-?\\d{1,"+H+"}"),G=t.substring(M).match(X);if(!G)throw(qd.local.missingNumberAt||qd.regionalOptions[""].missingNumberAt).replace(/\{0\}/,M);return M+=G[0].length,parseInt(G[0],10)},k=this,A=function(){if(typeof s=="function"){p("m");var F=s.call(k,t.substring(M));return M+=F.length,F}return E("m")},L=function(F,q,V,H){for(var X=p(F,H)?V:q,G=0;G-1){h=1,d=v;for(var T=this.daysInMonth(f,h);d>T;T=this.daysInMonth(f,h))h++,d-=T}return c>-1?this.fromJD(c):this.newDate(f,h,d)},determineDate:function(e,t,r,n,i){r&&typeof r!="object"&&(i=n,n=r,r=null),typeof n!="string"&&(i=n,n="");var a=this,o=function(s){try{return a.parseDate(n,s,i)}catch(f){}s=s.toLowerCase();for(var l=(s.match(/^c/)&&r?r.newDate():null)||a.today(),u=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,c=u.exec(s);c;)l.add(parseInt(c[1],10),c[2]||"d"),c=u.exec(s);return l};return t=t?t.newDate():null,e=e==null?t:typeof e=="string"?o(e):typeof e=="number"?isNaN(e)||e===1/0||e===-1/0?t:a.today().add(e,"d"):a.newDate(e),e}})});var k$e=ye(()=>{var zx=Sv(),aQt=bh(),$$=zx.instance();function S9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}S9.prototype=new zx.baseCalendar;aQt(S9.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(e,t){if(typeof e=="string"){var r=e.match(sQt);return r?r[0]:""}var n=this._validateYear(e),i=e.month(),a=""+this.toChineseMonth(n,i);return t&&a.length<2&&(a="0"+a),this.isIntercalaryMonth(n,i)&&(a+="i"),a},monthNames:function(e){if(typeof e=="string"){var t=e.match(lQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},monthNamesShort:function(e){if(typeof e=="string"){var t=e.match(uQt);return t?t[0]:""}var r=this._validateYear(e),n=e.month(),i=this.toChineseMonth(r,n),a=["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"][i-1];return this.isIntercalaryMonth(r,n)&&(a="\u95F0"+a),a},parseMonth:function(e,t){e=this._validateYear(e);var r=parseInt(t),n;if(isNaN(r))t[0]==="\u95F0"&&(n=!0,t=t.substring(1)),t[t.length-1]==="\u6708"&&(t=t.substring(0,t.length-1)),r=1+["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"].indexOf(t);else{var i=t[t.length-1];n=i==="i"||i==="I"}var a=this.toMonthIndex(e,r,n);return a},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(e,t){if(e.year&&(e=e.year()),typeof e!="number"||e<1888||e>2111)throw t.replace(/\{0\}/,this.local.name);return e},toMonthIndex:function(e,t,r){var n=this.intercalaryMonth(e),i=r&&t!==n;if(i||t<1||t>12)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a;return n?!r&&t<=n?a=t-1:a=t:a=t-1,a},toChineseMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e),n=r?12:11;if(t<0||t>n)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var i;return r?t>13;return r},isIntercalaryMonth:function(e,t){e.year&&(e=e.year(),t=e.month());var r=this.intercalaryMonth(e);return!!r&&r===t},leapYear:function(e){return this.intercalaryMonth(e)!==0},weekOfYear:function(e,t,r){var n=this._validateYear(e,zx.local.invalidyear),i=qx[n-qx[0]],a=i>>9&4095,o=i>>5&15,s=i&31,l;l=$$.newDate(a,o,s),l.add(4-(l.dayOfWeek()||7),"d");var u=this.toJD(e,t,r)-l.toJD();return 1+Math.floor(u/7)},monthsInYear:function(e){return this.leapYear(e)?13:12},daysInMonth:function(e,t){e.year&&(t=e.month(),e=e.year()),e=this._validateYear(e);var r=Fx[e-Fx[0]],n=r>>13,i=n?12:11;if(t>i)throw zx.local.invalidMonth.replace(/\{0\}/,this.local.name);var a=r&1<<12-t?30:29;return a},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,a,r,zx.local.invalidDate);e=this._validateYear(n.year()),t=n.month(),r=n.day();var i=this.isIntercalaryMonth(e,t),a=this.toChineseMonth(e,t),o=fQt(e,a,r,i);return $$.toJD(o.year,o.month,o.day)},fromJD:function(e){var t=$$.fromJD(e),r=cQt(t.year(),t.month(),t.day()),n=this.toMonthIndex(r.year,r.month,r.isIntercalary);return this.newDate(r.year,n,r.day)},fromString:function(e){var t=e.match(oQt),r=this._validateYear(+t[1]),n=+t[2],i=!!t[3],a=this.toMonthIndex(r,n,i),o=+t[4];return this.newDate(r,a,o)},add:function(e,t,r){var n=e.year(),i=e.month(),a=this.isIntercalaryMonth(n,i),o=this.toChineseMonth(n,i),s=Object.getPrototypeOf(S9.prototype).add.call(this,e,t,r);if(r==="y"){var l=s.year(),u=s.month(),c=this.isIntercalaryMonth(l,o),f=a&&c?this.toMonthIndex(l,o,!0):this.toMonthIndex(l,o,!1);f!==u&&s.month(f)}return s}});var oQt=/^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m,sQt=/^\d?\d[iI]?/m,lQt=/^闰?十?[一二三四五六七八九]?月/m,uQt=/^闰?十?[一二三四五六七八九]?/m;zx.calendars.chinese=S9;var Fx=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],qx=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904];function cQt(e,t,r,n){var i,a;if(typeof e=="object")i=e,a=t||{};else{var o=typeof e=="number"&&e>=1888&&e<=2111;if(!o)throw new Error("Solar year outside range 1888-2111");var s=typeof t=="number"&&t>=1&&t<=12;if(!s)throw new Error("Solar month outside range 1 - 12");var l=typeof r=="number"&&r>=1&&r<=31;if(!l)throw new Error("Solar day outside range 1 - 31");i={year:e,month:t,day:r},a=n||{}}var u=qx[i.year-qx[0]],c=i.year<<9|i.month<<5|i.day;a.year=c>=u?i.year:i.year-1,u=qx[a.year-qx[0]];var f=u>>9&4095,h=u>>5&15,d=u&31,v,x=new Date(f,h-1,d),b=new Date(i.year,i.month-1,i.day);v=Math.round((b-x)/(24*3600*1e3));var p=Fx[a.year-Fx[0]],E;for(E=0;E<13;E++){var k=p&1<<12-E?30:29;if(v>13;return!A||E=1888&&e<=2111;if(!s)throw new Error("Lunar year outside range 1888-2111");var l=typeof t=="number"&&t>=1&&t<=12;if(!l)throw new Error("Lunar month outside range 1 - 12");var u=typeof r=="number"&&r>=1&&r<=30;if(!u)throw new Error("Lunar day outside range 1 - 30");var c;typeof n=="object"?(c=!1,a=n):(c=!!n,a=i||{}),o={year:e,month:t,day:r,isIntercalary:c}}var f;f=o.day-1;var h=Fx[o.year-Fx[0]],d=h>>13,v;d&&(o.month>d||o.isIntercalary)?v=o.month:v=o.month-1;for(var x=0;x>9&4095,k=p>>5&15,A=p&31,L=new Date(E,k-1,A+f);return a.year=L.getFullYear(),a.month=1+L.getMonth(),a.day=L.getDate(),a}});var C$e=ye(()=>{var _w=Sv(),hQt=bh();function Q$(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}Q$.prototype=new _w.baseCalendar;hQt(Q$.prototype,{name:"Coptic",jdEpoch:18250295e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Coptic",epochs:["BAM","AM"],monthNames:["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],monthNamesShort:["Tho","Pao","Hath","Koi","Tob","Mesh","Pat","Pad","Pash","Pao","Epi","Meso","PiK"],dayNames:["Tkyriaka","Pesnau","Pshoment","Peftoou","Ptiou","Psoou","Psabbaton"],dayNamesShort:["Tky","Pes","Psh","Pef","Pti","Pso","Psa"],dayNamesMin:["Tk","Pes","Psh","Pef","Pt","Pso","Psa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,_w.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,_w.local.invalidYear||_w.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,_w.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,_w.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});_w.calendars.coptic=Q$});var L$e=ye(()=>{var b1=Sv(),dQt=bh();function eQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}eQ.prototype=new b1.baseCalendar;dQt(eQ.prototype,{name:"Discworld",jdEpoch:17214255e-1,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Discworld",epochs:["BUC","UC"],monthNames:["Ick","Offle","February","March","April","May","June","Grune","August","Spune","Sektober","Ember","December"],monthNamesShort:["Ick","Off","Feb","Mar","Apr","May","Jun","Gru","Aug","Spu","Sek","Emb","Dec"],dayNames:["Sunday","Octeday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Oct","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Oc","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:2,isRTL:!1}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),!1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),13},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,b1.local.invalidYear),400},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/8)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,b1.local.invalidMonth);return this.daysPerMonth[r.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return(n.day()+1)%8},weekDay:function(e,t,r){var n=this.dayOfWeek(e,t,r);return n>=2&&n<=6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return{century:vQt[Math.floor((n.year()-1)/100)+1]||""}},toJD:function(e,t,r){var n=this._validate(e,t,r,b1.local.invalidDate);return e=n.year()+(n.year()<0?1:0),t=n.month(),r=n.day(),r+(t>1?16:0)+(t>2?(t-2)*32:0)+(e-1)*400+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e+.5)-Math.floor(this.jdEpoch)-1;var t=Math.floor(e/400)+1;e-=(t-1)*400,e+=e>15?16:0;var r=Math.floor(e/32)+1,n=e-(r-1)*32+1;return this.newDate(t<=0?t-1:t,r,n)}});var vQt={20:"Fruitbat",21:"Anchovy"};b1.calendars.discworld=eQ});var P$e=ye(()=>{var xw=Sv(),pQt=bh();function tQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}tQ.prototype=new xw.baseCalendar;pQt(tQ.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,xw.local.invalidYear),r=t.year()+(t.year()<0?1:0);return r%4===3||r%4===-1},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,xw.local.invalidYear||xw.regionalOptions[""].invalidYear),13},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,xw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===13&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,xw.local.invalidDate);return e=n.year(),e<0&&e++,n.day()+(n.month()-1)*30+(e-1)*365+Math.floor(e/4)+this.jdEpoch-1},fromJD:function(e){var t=Math.floor(e)+.5-this.jdEpoch,r=Math.floor((t-Math.floor((t+366)/1461))/365)+1;r<=0&&r--,t=Math.floor(e)+.5-this.newDate(r,1,1).toJD();var n=Math.floor(t/30)+1,i=t-(n-1)*30+1;return this.newDate(r,n,i)}});xw.calendars.ethiopian=tQ});var I$e=ye(()=>{var Ox=Sv(),gQt=bh();function rQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}rQ.prototype=new Ox.baseCalendar;gQt(rQ.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear);return this._leapYear(t.year())},_leapYear:function(e){return e=e<0?e+1:e,M9(e*7+1,19)<7},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear),this._leapYear(e.year?e.year():e)?13:12},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Ox.local.invalidYear);return e=t.year(),this.toJD(e===-1?1:e+1,7,1)-this.toJD(e,7,1)},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,Ox.local.invalidMonth),t===12&&this.leapYear(e)||t===8&&M9(this.daysInYear(e),10)===5?30:t===9&&M9(this.daysInYear(e),10)===3?29:this.daysPerMonth[t-1]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},extraInfo:function(e,t,r){var n=this._validate(e,t,r,Ox.local.invalidDate);return{yearType:(this.leapYear(n)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(n)%10-3]}},toJD:function(e,t,r){var n=this._validate(e,t,r,Ox.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e<=0?e+1:e,a=this.jdEpoch+this._delay1(i)+this._delay2(i)+r+1;if(t<7){for(var o=7;o<=this.monthsInYear(e);o++)a+=this.daysInMonth(e,o);for(var o=1;o=this.toJD(t===-1?1:t+1,7,1);)t++;for(var r=ethis.toJD(t,r,this.daysInMonth(t,r));)r++;var n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});function M9(e,t){return e-t*Math.floor(e/t)}Ox.calendars.hebrew=rQ});var R$e=ye(()=>{var oC=Sv(),mQt=bh();function iQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}iQ.prototype=new oC.baseCalendar;mQt(iQ.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012Bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,oC.local.invalidYear);return(t.year()*11+14)%30<11},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){return this.leapYear(e)?355:354},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,oC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,oC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e=e<=0?e+1:e,r+Math.ceil(29.5*(t-1))+(e-1)*354+Math.floor((3+11*e)/30)+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=Math.floor((30*(e-this.jdEpoch)+10646)/10631);t=t<=0?t-1:t;var r=Math.min(12,Math.ceil((e-29-this.toJD(t,1,1))/29.5)+1),n=e-this.toJD(t,r,1)+1;return this.newDate(t,r,n)}});oC.calendars.islamic=iQ});var D$e=ye(()=>{var sC=Sv(),yQt=bh();function nQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}nQ.prototype=new sC.baseCalendar;yQt(nQ.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,sC.local.invalidYear),r=t.year()<0?t.year()+1:t.year();return r%4===0},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(4-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,sC.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(e,t,r){var n=this._validate(e,t,r,sC.local.invalidDate);return e=n.year(),t=n.month(),r=n.day(),e<0&&e++,t<=2&&(e--,t+=12),Math.floor(365.25*(e+4716))+Math.floor(30.6001*(t+1))+r-1524.5},fromJD:function(e){var t=Math.floor(e+.5),r=t+1524,n=Math.floor((r-122.1)/365.25),i=Math.floor(365.25*n),a=Math.floor((r-i)/30.6001),o=a-Math.floor(a<14?1:13),s=n-Math.floor(o>2?4716:4715),l=r-i-Math.floor(30.6001*a);return s<=0&&s--,this.newDate(s,o,l)}});sC.calendars.julian=nQ});var F$e=ye(()=>{var ug=Sv(),_Qt=bh();function oQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}oQ.prototype=new ug.baseCalendar;_Qt(oQ.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),!1},formatYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear);e=t.year();var r=Math.floor(e/400);e=e%400,e+=e<0?400:0;var n=Math.floor(e/20);return r+"."+n+"."+e%20},forYear:function(e){if(e=e.split("."),e.length<3)throw"Invalid Mayan year";for(var t=0,r=0;r19||r>0&&n<0)throw"Invalid Mayan year";t=t*20+n}return t},monthsInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),18},weekOfYear:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),0},daysInYear:function(e){return this._validate(e,this.minMonth,this.minDay,ug.local.invalidYear),360},daysInMonth:function(e,t){return this._validate(e,t,this.minDay,ug.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()},weekDay:function(e,t,r){return this._validate(e,t,r,ug.local.invalidDate),!0},extraInfo:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate),i=n.toJD(),a=this._toHaab(i),o=this._toTzolkin(i);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[o[0]-1],tzolkinDay:o[0],tzolkinTrecena:o[1]}},_toHaab:function(e){e-=this.jdEpoch;var t=aQ(e+8+17*20,365);return[Math.floor(t/20)+1,aQ(t,20)]},_toTzolkin:function(e){return e-=this.jdEpoch,[z$e(e+20,20),z$e(e+4,13)]},toJD:function(e,t,r){var n=this._validate(e,t,r,ug.local.invalidDate);return n.day()+n.month()*20+n.year()*360+this.jdEpoch},fromJD:function(e){e=Math.floor(e)+.5-this.jdEpoch;var t=Math.floor(e/360);e=e%360,e+=e<0?360:0;var r=Math.floor(e/20),n=e%20;return this.newDate(t,r,n)}});function aQ(e,t){return e-t*Math.floor(e/t)}function z$e(e,t){return aQ(e-1,t)+1}ug.calendars.mayan=oQ});var O$e=ye(()=>{var bw=Sv(),xQt=bh();function sQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}sQ.prototype=new bw.baseCalendar;var q$e=bw.instance("gregorian");xQt(sQ.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,bw.local.invalidYear||bw.regionalOptions[""].invalidYear);return q$e.leapYear(t.year()+(t.year()<1?1:0)+1469)},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(1-(n.dayOfWeek()||7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,bw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,bw.local.invalidMonth),i=n.year();i<0&&i++;for(var a=n.day(),o=1;o=this.toJD(t+1,1,1);)t++;for(var r=e-Math.floor(this.toJD(t,1,1)+.5)+1,n=1;r>this.daysInMonth(t,n);)r-=this.daysInMonth(t,n),n++;return this.newDate(t,n,r)}});bw.calendars.nanakshahi=sQ});var B$e=ye(()=>{var ww=Sv(),bQt=bh();function lQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}lQ.prototype=new ww.baseCalendar;bQt(lQ.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(e){return this.daysInYear(e)!==this.daysPerYear},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,ww.local.invalidYear);if(e=t.year(),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined")return this.daysPerYear;for(var r=0,n=this.minMonth;n<=12;n++)r+=this.NEPALI_CALENDAR_DATA[e][n];return r},daysInMonth:function(e,t){return e.year&&(t=e.month(),e=e.year()),this._validate(e,t,this.minDay,ww.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[e]=="undefined"?this.daysPerMonth[t-1]:this.NEPALI_CALENDAR_DATA[e][t]},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==6},toJD:function(e,t,r){var n=this._validate(e,t,r,ww.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=ww.instance(),a=0,o=t,s=e;this._createMissingCalendarData(e);var l=e-(o>9||o===9&&r>=this.NEPALI_CALENDAR_DATA[s][0]?56:57);for(t!==9&&(a=r,o--);o!==9;)o<=0&&(o=12,s--),a+=this.NEPALI_CALENDAR_DATA[s][o],o--;return t===9?(a+=r-this.NEPALI_CALENDAR_DATA[s][0],a<0&&(a+=i.daysInYear(l))):a+=this.NEPALI_CALENDAR_DATA[s][9]-this.NEPALI_CALENDAR_DATA[s][0],i.newDate(l,1,1).add(a,"d").toJD()},fromJD:function(e){var t=ww.instance(),r=t.fromJD(e),n=r.year(),i=r.dayOfYear(),a=n+56;this._createMissingCalendarData(a);for(var o=9,s=this.NEPALI_CALENDAR_DATA[a][0],l=this.NEPALI_CALENDAR_DATA[a][o]-s+1;i>l;)o++,o>12&&(o=1,a++),l+=this.NEPALI_CALENDAR_DATA[a][o];var u=this.NEPALI_CALENDAR_DATA[a][o]-(l-i);return this.newDate(a,o,u)},_createMissingCalendarData:function(e){var t=this.daysPerMonth.slice(0);t.unshift(17);for(var r=e-1;r{var $A=Sv(),wQt=bh();function E9(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}E9.prototype=new $A.baseCalendar;wQt(E9.prototype,{name:"Persian",jdEpoch:19483205e-1,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Day","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Day","Bah","Esf"],dayNames:["Yekshambe","Doshambe","Seshambe","Ch\xE6harshambe","Panjshambe","Jom'e","Shambe"],dayNamesShort:["Yek","Do","Se","Ch\xE6","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,$A.local.invalidYear);return((t.year()-(t.year()>0?474:473))%2820+474+38)*682%2816<682},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-((n.dayOfWeek()+1)%7),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,$A.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===12&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,$A.local.invalidDate);e=n.year(),t=n.month(),r=n.day();var i=e-(e>=0?474:473),a=474+uQ(i,2820);return r+(t<=7?(t-1)*31:(t-1)*30+6)+Math.floor((a*682-110)/2816)+(a-1)*365+Math.floor(i/2820)*1029983+this.jdEpoch-1},fromJD:function(e){e=Math.floor(e)+.5;var t=e-this.toJD(475,1,1),r=Math.floor(t/1029983),n=uQ(t,1029983),i=2820;if(n!==1029982){var a=Math.floor(n/366),o=uQ(n,366);i=Math.floor((2134*a+2816*o+2815)/1028522)+a+1}var s=i+2820*r+474;s=s<=0?s-1:s;var l=e-this.toJD(s,1,1)+1,u=l<=186?Math.ceil(l/31):Math.ceil((l-6)/30),c=e-this.toJD(s,u,1)+1;return this.newDate(s,u,c)}});function uQ(e,t){return e-t*Math.floor(e/t)}$A.calendars.persian=E9;$A.calendars.jalali=E9});var U$e=ye(()=>{var Tw=Sv(),TQt=bh(),k9=Tw.instance();function cQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}cQ.prototype=new Tw.baseCalendar;TQt(cQ.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Tw.local.invalidYear),r=this._t2gYear(t.year());return k9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Tw.local.invalidYear),i=this._t2gYear(n.year());return k9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Tw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Tw.local.invalidDate),i=this._t2gYear(n.year());return k9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=k9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)},_g2tYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)}});Tw.calendars.taiwan=cQ});var V$e=ye(()=>{var Aw=Sv(),AQt=bh(),C9=Aw.instance();function fQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}fQ.prototype=new Aw.baseCalendar;AQt(fQ.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(r){var t=this._validate(r,this.minMonth,this.minDay,Aw.local.invalidYear),r=this._t2gYear(t.year());return C9.leapYear(r)},weekOfYear:function(i,t,r){var n=this._validate(i,this.minMonth,this.minDay,Aw.local.invalidYear),i=this._t2gYear(n.year());return C9.weekOfYear(i,n.month(),n.day())},daysInMonth:function(e,t){var r=this._validate(e,t,this.minDay,Aw.local.invalidMonth);return this.daysPerMonth[r.month()-1]+(r.month()===2&&this.leapYear(r.year())?1:0)},weekDay:function(e,t,r){return(this.dayOfWeek(e,t,r)||7)<6},toJD:function(i,t,r){var n=this._validate(i,t,r,Aw.local.invalidDate),i=this._t2gYear(n.year());return C9.toJD(i,n.month(),n.day())},fromJD:function(e){var t=C9.fromJD(e),r=this._g2tYear(t.year());return this.newDate(r,t.month(),t.day())},_t2gYear:function(e){return e-this.yearsOffset-(e>=1&&e<=this.yearsOffset?1:0)},_g2tYear:function(e){return e+this.yearsOffset+(e>=-this.yearsOffset&&e<=-1?1:0)}});Aw.calendars.thai=fQ});var H$e=ye(()=>{var Sw=Sv(),SQt=bh();function hQ(e){this.local=this.regionalOptions[e||""]||this.regionalOptions[""]}hQ.prototype=new Sw.baseCalendar;SQt(hQ.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012Bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(e){var t=this._validate(e,this.minMonth,this.minDay,Sw.local.invalidYear);return this.daysInYear(t.year())===355},weekOfYear:function(e,t,r){var n=this.newDate(e,t,r);return n.add(-n.dayOfWeek(),"d"),Math.floor((n.dayOfYear()-1)/7)+1},daysInYear:function(e){for(var t=0,r=1;r<=12;r++)t+=this.daysInMonth(e,r);return t},daysInMonth:function(e,t){for(var r=this._validate(e,t,this.minDay,Sw.local.invalidMonth),n=r.toJD()-24e5+.5,i=0,a=0;an)return Bx[i]-Bx[i-1];i++}return 30},weekDay:function(e,t,r){return this.dayOfWeek(e,t,r)!==5},toJD:function(e,t,r){var n=this._validate(e,t,r,Sw.local.invalidDate),i=12*(n.year()-1)+n.month()-15292,a=n.day()+Bx[i-1]-1;return a+24e5-.5},fromJD:function(e){for(var t=e-24e5+.5,r=0,n=0;nt);n++)r++;var i=r+15292,a=Math.floor((i-1)/12),o=a+1,s=i-12*a,l=t-Bx[r-1]+1;return this.newDate(o,s,l)},isValid:function(e,t,r){var n=Sw.baseCalendar.prototype.isValid.apply(this,arguments);return n&&(e=e.year!=null?e.year:e,n=e>=1276&&e<=1500),n},_validate:function(e,t,r,n){var i=Sw.baseCalendar.prototype._validate.apply(this,arguments);if(i.year<1276||i.year>1500)throw n.replace(/\{0\}/,this.local.name);return i}});Sw.calendars.ummalqura=hQ;var Bx=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]});var j$e=ye((_2r,G$e)=>{"use strict";G$e.exports=Sv();E$e();k$e();C$e();L$e();P$e();I$e();R$e();D$e();F$e();O$e();B$e();N$e();U$e();V$e();H$e()});var $$e=ye((x2r,J$e)=>{"use strict";var Z$e=j$e(),lC=Mr(),X$e=es(),MQt=X$e.EPOCHJD,EQt=X$e.ONEDAY,pQ={valType:"enumerated",values:lC.sortObjectKeys(Z$e.calendars),editType:"calc",dflt:"gregorian"},Y$e=function(e,t,r,n){var i={};return i[r]=pQ,lC.coerce(e,t,i,r,n)},kQt=function(e,t,r,n){for(var i=0;i{"use strict";Q$e.exports=$$e()});var DQt=ye((w2r,rQe)=>{var tQe=Wme();tQe.register([Xye(),z1e(),Z_e(),dxe(),Mxe(),wbe(),zbe(),b2e(),K2e(),Pwe(),m3e(),j4e(),REe(),TCe(),c6e(),N6e(),uLe(),RPe(),$Pe(),gIe(),kIe(),VIe(),i8e(),_8e(),WRe(),hDe(),EOe(),EBe(),qNe(),lUe(),mVe(),IVe(),rHe(),dGe(),kGe(),$Ge(),oWe(),LWe(),fZe(),RXe(),rYe(),TYe(),YYe(),uKe(),sJe(),SJe(),GJe(),A$e(),eQe()]);rQe.exports=tQe});return DQt();})(); +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/*! + * pad-left + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT license. + */ +/*! + * repeat-string + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + */ +/*! Bundled license information: + +native-promise-only/lib/npo.src.js: + (*! Native Promise Only + v0.8.1 (c) Kyle Simpson + MIT License: http://getify.mit-license.org + *) + +polybooljs/index.js: + (* + * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc + * @license MIT + * @preserve Project Home: https://github.com/voidqk/polybooljs + *) + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + +assert/build/internal/util/comparisons.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + +object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + +maplibre-gl/dist/maplibre-gl.js: + (** + * MapLibre GL JS + * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v4.7.1/LICENSE.txt + *) +*/ + +window.Plotly = Plotly; +return Plotly; +})); \ No newline at end of file diff --git a/venv/lib/python3.8/site-packages/plotly/package_data/widgetbundle.js b/venv/lib/python3.8/site-packages/plotly/package_data/widgetbundle.js new file mode 100644 index 0000000..c9806b0 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/package_data/widgetbundle.js @@ -0,0 +1,3906 @@ +var OW=Object.create;var jC=Object.defineProperty;var BW=Object.getOwnPropertyDescriptor;var NW=Object.getOwnPropertyNames;var UW=Object.getPrototypeOf,jW=Object.prototype.hasOwnProperty;var VW=(le,me)=>()=>(me||le((me={exports:{}}).exports,me),me.exports);var qW=(le,me,Xe,Mt)=>{if(me&&typeof me=="object"||typeof me=="function")for(let rr of NW(me))!jW.call(le,rr)&&rr!==Xe&&jC(le,rr,{get:()=>me[rr],enumerable:!(Mt=BW(me,rr))||Mt.enumerable});return le};var HW=(le,me,Xe)=>(Xe=le!=null?OW(UW(le)):{},qW(me||!le||!le.__esModule?jC(Xe,"default",{value:le,enumerable:!0}):Xe,le));var $8=VW((J8,l2)=>{(function(le,me){typeof l2=="object"&&l2.exports?l2.exports=me():le.moduleName=me()})(typeof self<"u"?self:J8,()=>{"use strict";var le=(()=>{var me=Object.create,Xe=Object.defineProperty,Mt=Object.defineProperties,rr=Object.getOwnPropertyDescriptor,Nr=Object.getOwnPropertyDescriptors,xa=Object.getOwnPropertyNames,Ha=Object.getOwnPropertySymbols,Za=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty,Ji=Object.prototype.propertyIsEnumerable,gn=(X,H,g)=>H in X?Xe(X,H,{enumerable:!0,configurable:!0,writable:!0,value:g}):X[H]=g,wo=(X,H)=>{for(var g in H||(H={}))un.call(H,g)&&gn(X,g,H[g]);if(Ha)for(var g of Ha(H))Ji.call(H,g)&&gn(X,g,H[g]);return X},ps=(X,H)=>Mt(X,Nr(H)),Qn=(X,H)=>function(){return X&&(H=(0,X[xa(X)[0]])(X=0)),H},Ye=(X,H)=>function(){return H||(0,X[xa(X)[0]])((H={exports:{}}).exports,H),H.exports},Ps=(X,H)=>{for(var g in H)Xe(X,g,{get:H[g],enumerable:!0})},Ml=(X,H,g,x)=>{if(H&&typeof H=="object"||typeof H=="function")for(let A of xa(H))!un.call(X,A)&&A!==g&&Xe(X,A,{get:()=>H[A],enumerable:!(x=rr(H,A))||x.enumerable});return X},Ul=(X,H,g)=>(g=X!=null?me(Za(X)):{},Ml(H||!X||!X.__esModule?Xe(g,"default",{value:X,enumerable:!0}):g,X)),Hf=X=>Ml(Xe({},"__esModule",{value:!0}),X),xh=Ye({"src/version.js"(X){"use strict";X.version="3.0.1"}}),Bp=Ye({"node_modules/native-promise-only/lib/npo.src.js"(X,H){(function(x,A,M){A[x]=A[x]||M(),typeof H<"u"&&H.exports&&(H.exports=A[x])})("Promise",typeof window<"u"?window:X,function(){"use strict";var x,A,M,e=Object.prototype.toString,t=typeof setImmediate<"u"?function(_){return setImmediate(_)}:setTimeout;try{Object.defineProperty({},"x",{}),x=function(_,w,S,E){return Object.defineProperty(_,w,{value:S,writable:!0,configurable:E!==!1})}}catch{x=function(w,S,E){return w[S]=E,w}}M=function(){var _,w,S;function E(m,b){this.fn=m,this.self=b,this.next=void 0}return{add:function(b,d){S=new E(b,d),w?w.next=S:_=S,w=S,S=void 0},drain:function(){var b=_;for(_=w=A=void 0;b;)b.fn.call(b.self),b=b.next}}}();function r(l,_){M.add(l,_),A||(A=t(M.drain))}function o(l){var _,w=typeof l;return l!=null&&(w=="object"||w=="function")&&(_=l.then),typeof _=="function"?_:!1}function a(){for(var l=0;l0&&r(a,w))}catch(S){s.call(new h(w),S)}}}function s(l){var _=this;_.triggered||(_.triggered=!0,_.def&&(_=_.def),_.msg=l,_.state=2,_.chain.length>0&&r(a,_))}function c(l,_,w,S){for(var E=0;E<_.length;E++)(function(b){l.resolve(_[b]).then(function(u){w(b,u)},S)})(E)}function h(l){this.def=l,this.triggered=!1}function v(l){this.promise=l,this.state=0,this.triggered=!1,this.chain=[],this.msg=void 0}function p(l){if(typeof l!="function")throw TypeError("Not a function");if(this.__NPO__!==0)throw TypeError("Not a promise");this.__NPO__=1;var _=new v(this);this.then=function(S,E){var m={success:typeof S=="function"?S:!0,failure:typeof E=="function"?E:!1};return m.promise=new this.constructor(function(d,u){if(typeof d!="function"||typeof u!="function")throw TypeError("Not a function");m.resolve=d,m.reject=u}),_.chain.push(m),_.state!==0&&r(a,_),m.promise},this.catch=function(S){return this.then(void 0,S)};try{l.call(void 0,function(S){n.call(_,S)},function(S){s.call(_,S)})}catch(w){s.call(_,w)}}var T=x({},"constructor",p,!1);return p.prototype=T,x(T,"__NPO__",0,!1),x(p,"resolve",function(_){var w=this;return _&&typeof _=="object"&&_.__NPO__===1?_:new w(function(E,m){if(typeof E!="function"||typeof m!="function")throw TypeError("Not a function");E(_)})}),x(p,"reject",function(_){return new this(function(S,E){if(typeof S!="function"||typeof E!="function")throw TypeError("Not a function");E(_)})}),x(p,"all",function(_){var w=this;return e.call(_)!="[object Array]"?w.reject(TypeError("Not an array")):_.length===0?w.resolve([]):new w(function(E,m){if(typeof E!="function"||typeof m!="function")throw TypeError("Not a function");var b=_.length,d=Array(b),u=0;c(w,_,function(f,P){d[f]=P,++u===b&&E(d)},m)})}),x(p,"race",function(_){var w=this;return e.call(_)!="[object Array]"?w.reject(TypeError("Not an array")):new w(function(E,m){if(typeof E!="function"||typeof m!="function")throw TypeError("Not a function");c(w,_,function(d,u){E(u)},m)})}),p})}}),_n=Ye({"node_modules/@plotly/d3/d3.js"(X,H){(function(){var g={version:"3.8.2"},x=[].slice,A=function(de){return x.call(de)},M=self.document;function e(de){return de&&(de.ownerDocument||de.document||de).documentElement}function t(de){return de&&(de.ownerDocument&&de.ownerDocument.defaultView||de.document&&de||de.defaultView)}if(M)try{A(M.documentElement.childNodes)[0].nodeType}catch{A=function(Re){for(var $e=Re.length,pt=new Array($e);$e--;)pt[$e]=Re[$e];return pt}}if(Date.now||(Date.now=function(){return+new Date}),M)try{M.createElement("DIV").style.setProperty("opacity",0,"")}catch{var r=this.Element.prototype,o=r.setAttribute,a=r.setAttributeNS,i=this.CSSStyleDeclaration.prototype,n=i.setProperty;r.setAttribute=function(Re,$e){o.call(this,Re,$e+"")},r.setAttributeNS=function(Re,$e,pt){a.call(this,Re,$e,pt+"")},i.setProperty=function(Re,$e,pt){n.call(this,Re,$e+"",pt)}}g.ascending=s;function s(de,Re){return deRe?1:de>=Re?0:NaN}g.descending=function(de,Re){return Rede?1:Re>=de?0:NaN},g.min=function(de,Re){var $e=-1,pt=de.length,vt,wt;if(arguments.length===1){for(;++$e=wt){vt=wt;break}for(;++$ewt&&(vt=wt)}else{for(;++$e=wt){vt=wt;break}for(;++$ewt&&(vt=wt)}return vt},g.max=function(de,Re){var $e=-1,pt=de.length,vt,wt;if(arguments.length===1){for(;++$e=wt){vt=wt;break}for(;++$evt&&(vt=wt)}else{for(;++$e=wt){vt=wt;break}for(;++$evt&&(vt=wt)}return vt},g.extent=function(de,Re){var $e=-1,pt=de.length,vt,wt,Jt;if(arguments.length===1){for(;++$e=wt){vt=Jt=wt;break}for(;++$ewt&&(vt=wt),Jt=wt){vt=Jt=wt;break}for(;++$ewt&&(vt=wt),Jt1)return Jt/(or-1)},g.deviation=function(){var de=g.variance.apply(this,arguments);return de&&Math.sqrt(de)};function v(de){return{left:function(Re,$e,pt,vt){for(arguments.length<3&&(pt=0),arguments.length<4&&(vt=Re.length);pt>>1;de(Re[wt],$e)<0?pt=wt+1:vt=wt}return pt},right:function(Re,$e,pt,vt){for(arguments.length<3&&(pt=0),arguments.length<4&&(vt=Re.length);pt>>1;de(Re[wt],$e)>0?vt=wt:pt=wt+1}return pt}}}var p=v(s);g.bisectLeft=p.left,g.bisect=g.bisectRight=p.right,g.bisector=function(de){return v(de.length===1?function(Re,$e){return s(de(Re),$e)}:de)},g.shuffle=function(de,Re,$e){(pt=arguments.length)<3&&($e=de.length,pt<2&&(Re=0));for(var pt=$e-Re,vt,wt;pt;)wt=Math.random()*pt--|0,vt=de[pt+Re],de[pt+Re]=de[wt+Re],de[wt+Re]=vt;return de},g.permute=function(de,Re){for(var $e=Re.length,pt=new Array($e);$e--;)pt[$e]=de[Re[$e]];return pt},g.pairs=function(de){for(var Re=0,$e=de.length-1,pt,vt=de[0],wt=new Array($e<0?0:$e);Re<$e;)wt[Re]=[pt=vt,vt=de[++Re]];return wt},g.transpose=function(de){if(!(wt=de.length))return[];for(var Re=-1,$e=g.min(de,T),pt=new Array($e);++Re<$e;)for(var vt=-1,wt,Jt=pt[Re]=new Array(wt);++vt=0;)for(Jt=de[Re],$e=Jt.length;--$e>=0;)wt[--vt]=Jt[$e];return wt};var l=Math.abs;g.range=function(de,Re,$e){if(arguments.length<3&&($e=1,arguments.length<2&&(Re=de,de=0)),(Re-de)/$e===1/0)throw new Error("infinite range");var pt=[],vt=_(l($e)),wt=-1,Jt;if(de*=vt,Re*=vt,$e*=vt,$e<0)for(;(Jt=de+$e*++wt)>Re;)pt.push(Jt/vt);else for(;(Jt=de+$e*++wt)=Re.length)return vt?vt.call(de,or):pt?or.sort(pt):or;for(var Or=-1,va=or.length,fa=Re[Dr++],Va,Xa,_a,Ra=new S,Na;++Or=Re.length)return Rt;var Dr=[],Or=$e[or++];return Rt.forEach(function(va,fa){Dr.push({key:va,values:Jt(fa,or)})}),Or?Dr.sort(function(va,fa){return Or(va.key,fa.key)}):Dr}return de.map=function(Rt,or){return wt(or,Rt,0)},de.entries=function(Rt){return Jt(wt(g.map,Rt,0),0)},de.key=function(Rt){return Re.push(Rt),de},de.sortKeys=function(Rt){return $e[Re.length-1]=Rt,de},de.sortValues=function(Rt){return pt=Rt,de},de.rollup=function(Rt){return vt=Rt,de},de},g.set=function(de){var Re=new z;if(de)for(var $e=0,pt=de.length;$e=0&&(pt=de.slice($e+1),de=de.slice(0,$e)),de)return arguments.length<2?this[de].on(pt):this[de].on(pt,Re);if(arguments.length===2){if(Re==null)for(de in this)this.hasOwnProperty(de)&&this[de].on(pt,null);return this}};function W(de){var Re=[],$e=new S;function pt(){for(var vt=Re,wt=-1,Jt=vt.length,Rt;++wt=0&&($e=de.slice(0,Re))!=="xmlns"&&(de=de.slice(Re+1)),fe.hasOwnProperty($e)?{space:fe[$e],local:de}:de}},ne.attr=function(de,Re){if(arguments.length<2){if(typeof de=="string"){var $e=this.node();return de=g.ns.qualify(de),de.local?$e.getAttributeNS(de.space,de.local):$e.getAttribute(de)}for(Re in de)this.each(be(Re,de[Re]));return this}return this.each(be(de,Re))};function be(de,Re){de=g.ns.qualify(de);function $e(){this.removeAttribute(de)}function pt(){this.removeAttributeNS(de.space,de.local)}function vt(){this.setAttribute(de,Re)}function wt(){this.setAttributeNS(de.space,de.local,Re)}function Jt(){var or=Re.apply(this,arguments);or==null?this.removeAttribute(de):this.setAttribute(de,or)}function Rt(){var or=Re.apply(this,arguments);or==null?this.removeAttributeNS(de.space,de.local):this.setAttributeNS(de.space,de.local,or)}return Re==null?de.local?pt:$e:typeof Re=="function"?de.local?Rt:Jt:de.local?wt:vt}function Ae(de){return de.trim().replace(/\s+/g," ")}ne.classed=function(de,Re){if(arguments.length<2){if(typeof de=="string"){var $e=this.node(),pt=(de=Ie(de)).length,vt=-1;if(Re=$e.classList){for(;++vt=0;)(wt=$e[pt])&&(vt&&vt!==wt.nextSibling&&vt.parentNode.insertBefore(wt,vt),vt=wt);return this},ne.sort=function(de){de=ze.apply(this,arguments);for(var Re=-1,$e=this.length;++Re<$e;)this[Re].sort(de);return this.order()};function ze(de){return arguments.length||(de=s),function(Re,$e){return Re&&$e?de(Re.__data__,$e.__data__):!Re-!$e}}ne.each=function(de){return tt(this,function(Re,$e,pt){de.call(Re,Re.__data__,$e,pt)})};function tt(de,Re){for(var $e=0,pt=de.length;$e=Re&&(Re=vt+1);!(or=Jt[Re])&&++Re0&&(de=de.slice(0,vt));var Jt=Ot.get(de);Jt&&(de=Jt,wt=ur);function Rt(){var Or=this[pt];Or&&(this.removeEventListener(de,Or,Or.$),delete this[pt])}function or(){var Or=wt(Re,A(arguments));Rt.call(this),this.addEventListener(de,this[pt]=Or,Or.$=$e),Or._=Re}function Dr(){var Or=new RegExp("^__on([^.]+)"+g.requote(de)+"$"),va;for(var fa in this)if(va=fa.match(Or)){var Va=this[fa];this.removeEventListener(va[1],Va,Va.$),delete this[fa]}}return vt?Re?or:Rt:Re?N:Dr}var Ot=g.map({mouseenter:"mouseover",mouseleave:"mouseout"});M&&Ot.forEach(function(de){"on"+de in M&&Ot.remove(de)});function jt(de,Re){return function($e){var pt=g.event;g.event=$e,Re[0]=this.__data__;try{de.apply(this,Re)}finally{g.event=pt}}}function ur(de,Re){var $e=jt(de,Re);return function(pt){var vt=this,wt=pt.relatedTarget;(!wt||wt!==vt&&!(wt.compareDocumentPosition(vt)&8))&&$e.call(vt,pt)}}var ar,Cr=0;function vr(de){var Re=".dragsuppress-"+ ++Cr,$e="click"+Re,pt=g.select(t(de)).on("touchmove"+Re,Q).on("dragstart"+Re,Q).on("selectstart"+Re,Q);if(ar==null&&(ar="onselectstart"in de?!1:O(de.style,"userSelect")),ar){var vt=e(de).style,wt=vt[ar];vt[ar]="none"}return function(Jt){if(pt.on(Re,null),ar&&(vt[ar]=wt),Jt){var Rt=function(){pt.on($e,null)};pt.on($e,function(){Q(),Rt()},!0),setTimeout(Rt,0)}}}g.mouse=function(de){return yt(de,ue())};var _r=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;function yt(de,Re){Re.changedTouches&&(Re=Re.changedTouches[0]);var $e=de.ownerSVGElement||de;if($e.createSVGPoint){var pt=$e.createSVGPoint();if(_r<0){var vt=t(de);if(vt.scrollX||vt.scrollY){$e=g.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var wt=$e[0][0].getScreenCTM();_r=!(wt.f||wt.e),$e.remove()}}return _r?(pt.x=Re.pageX,pt.y=Re.pageY):(pt.x=Re.clientX,pt.y=Re.clientY),pt=pt.matrixTransform(de.getScreenCTM().inverse()),[pt.x,pt.y]}var Jt=de.getBoundingClientRect();return[Re.clientX-Jt.left-de.clientLeft,Re.clientY-Jt.top-de.clientTop]}g.touch=function(de,Re,$e){if(arguments.length<3&&($e=Re,Re=ue().changedTouches),Re){for(var pt=0,vt=Re.length,wt;pt0?1:de<0?-1:0}function xt(de,Re,$e){return(Re[0]-de[0])*($e[1]-de[1])-(Re[1]-de[1])*($e[0]-de[0])}function It(de){return de>1?0:de<-1?Ee:Math.acos(de)}function Bt(de){return de>1?Te:de<-1?-Te:Math.asin(de)}function Gt(de){return((de=Math.exp(de))-1/de)/2}function Kt(de){return((de=Math.exp(de))+1/de)/2}function sr(de){return((de=Math.exp(2*de))-1)/(de+1)}function sa(de){return(de=Math.sin(de/2))*de}var Aa=Math.SQRT2,La=2,ka=4;g.interpolateZoom=function(de,Re){var $e=de[0],pt=de[1],vt=de[2],wt=Re[0],Jt=Re[1],Rt=Re[2],or=wt-$e,Dr=Jt-pt,Or=or*or+Dr*Dr,va,fa;if(Or0&&(Vi=Vi.transition().duration(Jt)),Vi.call(Ya.event)}function Un(){Ra&&Ra.domain(_a.range().map(function(Vi){return(Vi-de.x)/de.k}).map(_a.invert)),Qa&&Qa.domain(Na.range().map(function(Vi){return(Vi-de.y)/de.k}).map(Na.invert))}function Vn(Vi){Rt++||Vi({type:"zoomstart"})}function No(Vi){Un(),Vi({type:"zoom",scale:de.k,translate:[de.x,de.y]})}function Gn(Vi){--Rt||(Vi({type:"zoomend"}),$e=null)}function Fo(){var Vi=this,ao=Xa.of(Vi,arguments),ns=0,hs=g.select(t(Vi)).on(Dr,hu).on(Or,Ll),hl=Da(g.mouse(Vi)),Dl=vr(Vi);Sn.call(Vi),Vn(ao);function hu(){ns=1,Qi(g.mouse(Vi),hl),No(ao)}function Ll(){hs.on(Dr,null).on(Or,null),Dl(ns),Gn(ao)}}function Ks(){var Vi=this,ao=Xa.of(Vi,arguments),ns={},hs=0,hl,Dl=".zoom-"+g.event.changedTouches[0].identifier,hu="touchmove"+Dl,Ll="touchend"+Dl,dc=[],Qt=g.select(Vi),ra=vr(Vi);si(),Vn(ao),Qt.on(or,null).on(fa,si);function Ta(){var bi=g.touches(Vi);return hl=de.k,bi.forEach(function(Fi){Fi.identifier in ns&&(ns[Fi.identifier]=Da(Fi))}),bi}function si(){var bi=g.event.target;g.select(bi).on(hu,wi).on(Ll,xi),dc.push(bi);for(var Fi=g.event.changedTouches,cn=0,fn=Fi.length;cn1){var nn=Gi[0],on=Gi[1],Oi=nn[0]-on[0],ui=nn[1]-on[1];hs=Oi*Oi+ui*ui}}function wi(){var bi=g.touches(Vi),Fi,cn,fn,Gi;Sn.call(Vi);for(var Io=0,nn=bi.length;Io1?1:Re,$e=$e<0?0:$e>1?1:$e,vt=$e<=.5?$e*(1+Re):$e+Re-$e*Re,pt=2*$e-vt;function wt(Rt){return Rt>360?Rt-=360:Rt<0&&(Rt+=360),Rt<60?pt+(vt-pt)*Rt/60:Rt<180?vt:Rt<240?pt+(vt-pt)*(240-Rt)/60:pt}function Jt(Rt){return Math.round(wt(Rt)*255)}return new br(Jt(de+120),Jt(de),Jt(de-120))}g.hcl=Ut;function Ut(de,Re,$e){return this instanceof Ut?(this.h=+de,this.c=+Re,void(this.l=+$e)):arguments.length<2?de instanceof Ut?new Ut(de.h,de.c,de.l):de instanceof pa?mt(de.l,de.a,de.b):mt((de=ca((de=g.rgb(de)).r,de.g,de.b)).l,de.a,de.b):new Ut(de,Re,$e)}var xr=Ut.prototype=new ni;xr.brighter=function(de){return new Ut(this.h,this.c,Math.min(100,this.l+Xr*(arguments.length?de:1)))},xr.darker=function(de){return new Ut(this.h,this.c,Math.max(0,this.l-Xr*(arguments.length?de:1)))},xr.rgb=function(){return Zr(this.h,this.c,this.l).rgb()};function Zr(de,Re,$e){return isNaN(de)&&(de=0),isNaN(Re)&&(Re=0),new pa($e,Math.cos(de*=Le)*Re,Math.sin(de)*Re)}g.lab=pa;function pa(de,Re,$e){return this instanceof pa?(this.l=+de,this.a=+Re,void(this.b=+$e)):arguments.length<2?de instanceof pa?new pa(de.l,de.a,de.b):de instanceof Ut?Zr(de.h,de.c,de.l):ca((de=br(de)).r,de.g,de.b):new pa(de,Re,$e)}var Xr=18,Ea=.95047,Fa=1,qa=1.08883,ya=pa.prototype=new ni;ya.brighter=function(de){return new pa(Math.min(100,this.l+Xr*(arguments.length?de:1)),this.a,this.b)},ya.darker=function(de){return new pa(Math.max(0,this.l-Xr*(arguments.length?de:1)),this.a,this.b)},ya.rgb=function(){return $a(this.l,this.a,this.b)};function $a(de,Re,$e){var pt=(de+16)/116,vt=pt+Re/500,wt=pt-$e/200;return vt=gt(vt)*Ea,pt=gt(pt)*Fa,wt=gt(wt)*qa,new br(kr(3.2404542*vt-1.5371385*pt-.4985314*wt),kr(-.969266*vt+1.8760108*pt+.041556*wt),kr(.0556434*vt-.2040259*pt+1.0572252*wt))}function mt(de,Re,$e){return de>0?new Ut(Math.atan2($e,Re)*rt,Math.sqrt(Re*Re+$e*$e),de):new Ut(NaN,NaN,de)}function gt(de){return de>.206893034?de*de*de:(de-4/29)/7.787037}function Er(de){return de>.008856?Math.pow(de,1/3):7.787037*de+4/29}function kr(de){return Math.round(255*(de<=.00304?12.92*de:1.055*Math.pow(de,1/2.4)-.055))}g.rgb=br;function br(de,Re,$e){return this instanceof br?(this.r=~~de,this.g=~~Re,void(this.b=~~$e)):arguments.length<2?de instanceof br?new br(de.r,de.g,de.b):Jr(""+de,br,Vt):new br(de,Re,$e)}function Tr(de){return new br(de>>16,de>>8&255,de&255)}function Mr(de){return Tr(de)+""}var Fr=br.prototype=new ni;Fr.brighter=function(de){de=Math.pow(.7,arguments.length?de:1);var Re=this.r,$e=this.g,pt=this.b,vt=30;return!Re&&!$e&&!pt?new br(vt,vt,vt):(Re&&Re>4,pt=pt>>4|pt,vt=or&240,vt=vt>>4|vt,wt=or&15,wt=wt<<4|wt):de.length===7&&(pt=(or&16711680)>>16,vt=(or&65280)>>8,wt=or&255)),Re(pt,vt,wt))}function oa(de,Re,$e){var pt=Math.min(de/=255,Re/=255,$e/=255),vt=Math.max(de,Re,$e),wt=vt-pt,Jt,Rt,or=(vt+pt)/2;return wt?(Rt=or<.5?wt/(vt+pt):wt/(2-vt-pt),de==vt?Jt=(Re-$e)/wt+(Re<$e?6:0):Re==vt?Jt=($e-de)/wt+2:Jt=(de-Re)/wt+4,Jt*=60):(Jt=NaN,Rt=or>0&&or<1?0:Jt),new Wt(Jt,Rt,or)}function ca(de,Re,$e){de=kt(de),Re=kt(Re),$e=kt($e);var pt=Er((.4124564*de+.3575761*Re+.1804375*$e)/Ea),vt=Er((.2126729*de+.7151522*Re+.072175*$e)/Fa),wt=Er((.0193339*de+.119192*Re+.9503041*$e)/qa);return pa(116*vt-16,500*(pt-vt),200*(vt-wt))}function kt(de){return(de/=255)<=.04045?de/12.92:Math.pow((de+.055)/1.055,2.4)}function ir(de){var Re=parseFloat(de);return de.charAt(de.length-1)==="%"?Math.round(Re*2.55):Re}var mr=g.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});mr.forEach(function(de,Re){mr.set(de,Tr(Re))});function $r(de){return typeof de=="function"?de:function(){return de}}g.functor=$r,g.xhr=ma(F);function ma(de){return function(Re,$e,pt){return arguments.length===2&&typeof $e=="function"&&(pt=$e,$e=null),Ba(Re,$e,de,pt)}}function Ba(de,Re,$e,pt){var vt={},wt=g.dispatch("beforesend","progress","load","error"),Jt={},Rt=new XMLHttpRequest,or=null;self.XDomainRequest&&!("withCredentials"in Rt)&&/^(http(s)?:)?\/\//.test(de)&&(Rt=new XDomainRequest),"onload"in Rt?Rt.onload=Rt.onerror=Dr:Rt.onreadystatechange=function(){Rt.readyState>3&&Dr()};function Dr(){var Or=Rt.status,va;if(!Or&&da(Rt)||Or>=200&&Or<300||Or===304){try{va=$e.call(vt,Rt)}catch(fa){wt.error.call(vt,fa);return}wt.load.call(vt,va)}else wt.error.call(vt,Rt)}return Rt.onprogress=function(Or){var va=g.event;g.event=Or;try{wt.progress.call(vt,Rt)}finally{g.event=va}},vt.header=function(Or,va){return Or=(Or+"").toLowerCase(),arguments.length<2?Jt[Or]:(va==null?delete Jt[Or]:Jt[Or]=va+"",vt)},vt.mimeType=function(Or){return arguments.length?(Re=Or==null?null:Or+"",vt):Re},vt.responseType=function(Or){return arguments.length?(or=Or,vt):or},vt.response=function(Or){return $e=Or,vt},["get","post"].forEach(function(Or){vt[Or]=function(){return vt.send.apply(vt,[Or].concat(A(arguments)))}}),vt.send=function(Or,va,fa){if(arguments.length===2&&typeof va=="function"&&(fa=va,va=null),Rt.open(Or,de,!0),Re!=null&&!("accept"in Jt)&&(Jt.accept=Re+",*/*"),Rt.setRequestHeader)for(var Va in Jt)Rt.setRequestHeader(Va,Jt[Va]);return Re!=null&&Rt.overrideMimeType&&Rt.overrideMimeType(Re),or!=null&&(Rt.responseType=or),fa!=null&&vt.on("error",fa).on("load",function(Xa){fa(null,Xa)}),wt.beforesend.call(vt,Rt),Rt.send(va??null),vt},vt.abort=function(){return Rt.abort(),vt},g.rebind(vt,wt,"on"),pt==null?vt:vt.get(Ca(pt))}function Ca(de){return de.length===1?function(Re,$e){de(Re==null?$e:null)}:de}function da(de){var Re=de.responseType;return Re&&Re!=="text"?de.response:de.responseText}g.dsv=function(de,Re){var $e=new RegExp('["'+de+` +]`),pt=de.charCodeAt(0);function vt(Dr,Or,va){arguments.length<3&&(va=Or,Or=null);var fa=Ba(Dr,Re,Or==null?wt:Jt(Or),va);return fa.row=function(Va){return arguments.length?fa.response((Or=Va)==null?wt:Jt(Va)):Or},fa}function wt(Dr){return vt.parse(Dr.responseText)}function Jt(Dr){return function(Or){return vt.parse(Or.responseText,Dr)}}vt.parse=function(Dr,Or){var va;return vt.parseRows(Dr,function(fa,Va){if(va)return va(fa,Va-1);var Xa=function(_a){for(var Ra={},Na=fa.length,Qa=0;Qa=Xa)return fa;if(Qa)return Qa=!1,va;var zi=_a;if(Dr.charCodeAt(zi)===34){for(var Ni=zi;Ni++24?(isFinite(Re)&&(clearTimeout(an),an=setTimeout(On,Re)),ai=0):(ai=1,sn(On))}g.timer.flush=function(){$n(),Cn()};function $n(){for(var de=Date.now(),Re=Sa;Re;)de>=Re.t&&Re.c(de-Re.t)&&(Re.c=null),Re=Re.n;return de}function Cn(){for(var de,Re=Sa,$e=1/0;Re;)Re.c?(Re.t<$e&&($e=Re.t),Re=(de=Re).n):Re=de?de.n=Re.n:Sa=Re.n;return Ti=de,$e}g.round=function(de,Re){return Re?Math.round(de*(Re=Math.pow(10,Re)))/Re:Math.round(de)},g.geom={};function Lo(de){return de[0]}function Xi(de){return de[1]}g.geom.hull=function(de){var Re=Lo,$e=Xi;if(arguments.length)return pt(de);function pt(vt){if(vt.length<3)return[];var wt=$r(Re),Jt=$r($e),Rt,or=vt.length,Dr=[],Or=[];for(Rt=0;Rt=0;--Rt)_a.push(vt[Dr[va[Rt]][2]]);for(Rt=+Va;Rt1&&xt(de[$e[pt-2]],de[$e[pt-1]],de[vt])<=0;)--pt;$e[pt++]=vt}return $e.slice(0,pt)}function zo(de,Re){return de[0]-Re[0]||de[1]-Re[1]}g.geom.polygon=function(de){return G(de,as),de};var as=g.geom.polygon.prototype=[];as.area=function(){for(var de=-1,Re=this.length,$e,pt=this[Re-1],vt=0;++deKe)Rt=Rt.L;else if(Jt=Re-so(Rt,$e),Jt>Ke){if(!Rt.R){pt=Rt;break}Rt=Rt.R}else{wt>-Ke?(pt=Rt.P,vt=Rt):Jt>-Ke?(pt=Rt,vt=Rt.N):pt=vt=Rt;break}var or=$o(de);if(Qo.insert(pt,or),!(!pt&&!vt)){if(pt===vt){To(pt),vt=$o(pt.site),Qo.insert(or,vt),or.edge=vt.edge=Wl(pt.site,or.site),ji(pt),ji(vt);return}if(!vt){or.edge=Wl(pt.site,or.site);return}To(pt),To(vt);var Dr=pt.site,Or=Dr.x,va=Dr.y,fa=de.x-Or,Va=de.y-va,Xa=vt.site,_a=Xa.x-Or,Ra=Xa.y-va,Na=2*(fa*Ra-Va*_a),Qa=fa*fa+Va*Va,Ya=_a*_a+Ra*Ra,Da={x:(Ra*Qa-Va*Ya)/Na+Or,y:(fa*Ya-_a*Qa)/Na+va};ml(vt.edge,Dr,Xa,Da),or.edge=Wl(Dr,de,null,Da),vt.edge=Wl(de,Xa,null,Da),ji(pt),ji(vt)}}function Os(de,Re){var $e=de.site,pt=$e.x,vt=$e.y,wt=vt-Re;if(!wt)return pt;var Jt=de.P;if(!Jt)return-1/0;$e=Jt.site;var Rt=$e.x,or=$e.y,Dr=or-Re;if(!Dr)return Rt;var Or=Rt-pt,va=1/wt-1/Dr,fa=Or/Dr;return va?(-fa+Math.sqrt(fa*fa-2*va*(Or*Or/(-2*Dr)-or+Dr/2+vt-wt/2)))/va+pt:(pt+Rt)/2}function so(de,Re){var $e=de.N;if($e)return Os($e,Re);var pt=de.site;return pt.y===Re?pt.x:1/0}function Ns(de){this.site=de,this.edges=[]}Ns.prototype.prepare=function(){for(var de=this.edges,Re=de.length,$e;Re--;)$e=de[Re].edge,(!$e.b||!$e.a)&&de.splice(Re,1);return de.sort(al),de.length};function fs(de){for(var Re=de[0][0],$e=de[1][0],pt=de[0][1],vt=de[1][1],wt,Jt,Rt,or,Dr=Ho,Or=Dr.length,va,fa,Va,Xa,_a,Ra;Or--;)if(va=Dr[Or],!(!va||!va.prepare()))for(Va=va.edges,Xa=Va.length,fa=0;faKe||l(or-Jt)>Ke)&&(Va.splice(fa,0,new Bu(Zu(va.site,Ra,l(Rt-Re)Ke?{x:Re,y:l(wt-Re)Ke?{x:l(Jt-vt)Ke?{x:$e,y:l(wt-$e)Ke?{x:l(Jt-pt)=-Ne)){var fa=or*or+Dr*Dr,Va=Or*Or+Ra*Ra,Xa=(Ra*fa-Dr*Va)/va,_a=(or*Va-Or*fa)/va,Ra=_a+Rt,Na=Is.pop()||new vl;Na.arc=de,Na.site=vt,Na.x=Xa+Jt,Na.y=Ra+Math.sqrt(Xa*Xa+_a*_a),Na.cy=Ra,de.circle=Na;for(var Qa=null,Ya=ys._;Ya;)if(Na.y0)){if(_a/=Va,Va<0){if(_a0){if(_a>fa)return;_a>va&&(va=_a)}if(_a=$e-Rt,!(!Va&&_a<0)){if(_a/=Va,Va<0){if(_a>fa)return;_a>va&&(va=_a)}else if(Va>0){if(_a0)){if(_a/=Xa,Xa<0){if(_a0){if(_a>fa)return;_a>va&&(va=_a)}if(_a=pt-or,!(!Xa&&_a<0)){if(_a/=Xa,Xa<0){if(_a>fa)return;_a>va&&(va=_a)}else if(Xa>0){if(_a0&&(vt.a={x:Rt+va*Va,y:or+va*Xa}),fa<1&&(vt.b={x:Rt+fa*Va,y:or+fa*Xa}),vt}}}}}}function _s(de){for(var Re=Do,$e=Yn(de[0][0],de[0][1],de[1][0],de[1][1]),pt=Re.length,vt;pt--;)vt=Re[pt],(!Yo(vt,de)||!$e(vt)||l(vt.a.x-vt.b.x)=wt)return;if(Or>fa){if(!pt)pt={x:Xa,y:Jt};else if(pt.y>=Rt)return;$e={x:Xa,y:Rt}}else{if(!pt)pt={x:Xa,y:Rt};else if(pt.y1)if(Or>fa){if(!pt)pt={x:(Jt-Na)/Ra,y:Jt};else if(pt.y>=Rt)return;$e={x:(Rt-Na)/Ra,y:Rt}}else{if(!pt)pt={x:(Rt-Na)/Ra,y:Rt};else if(pt.y=wt)return;$e={x:wt,y:Ra*wt+Na}}else{if(!pt)pt={x:wt,y:Ra*wt+Na};else if(pt.x=Or&&Na.x<=fa&&Na.y>=va&&Na.y<=Va?[[Or,Va],[fa,Va],[fa,va],[Or,va]]:[];Qa.point=or[_a]}),Dr}function Rt(or){return or.map(function(Dr,Or){return{x:Math.round(pt(Dr,Or)/Ke)*Ke,y:Math.round(vt(Dr,Or)/Ke)*Ke,i:Or}})}return Jt.links=function(or){return Xu(Rt(or)).edges.filter(function(Dr){return Dr.l&&Dr.r}).map(function(Dr){return{source:or[Dr.l.i],target:or[Dr.r.i]}})},Jt.triangles=function(or){var Dr=[];return Xu(Rt(or)).cells.forEach(function(Or,va){for(var fa=Or.site,Va=Or.edges.sort(al),Xa=-1,_a=Va.length,Ra,Na,Qa=Va[_a-1].edge,Ya=Qa.l===fa?Qa.r:Qa.l;++Xa<_a;)Ra=Qa,Na=Ya,Qa=Va[Xa].edge,Ya=Qa.l===fa?Qa.r:Qa.l,vaYa&&(Ya=Or.x),Or.y>Da&&(Da=Or.y),Va.push(Or.x),Xa.push(Or.y);else for(_a=0;_aYa&&(Ya=zi),Ni>Da&&(Da=Ni),Va.push(zi),Xa.push(Ni)}var Qi=Ya-Na,hn=Da-Qa;Qi>hn?Da=Qa+Qi:Ya=Na+hn;function Un(Gn,Fo,Ks,Gs,sl,Vi,ao,ns){if(!(isNaN(Ks)||isNaN(Gs)))if(Gn.leaf){var hs=Gn.x,hl=Gn.y;if(hs!=null)if(l(hs-Ks)+l(hl-Gs)<.01)Vn(Gn,Fo,Ks,Gs,sl,Vi,ao,ns);else{var Dl=Gn.point;Gn.x=Gn.y=Gn.point=null,Vn(Gn,Dl,hs,hl,sl,Vi,ao,ns),Vn(Gn,Fo,Ks,Gs,sl,Vi,ao,ns)}else Gn.x=Ks,Gn.y=Gs,Gn.point=Fo}else Vn(Gn,Fo,Ks,Gs,sl,Vi,ao,ns)}function Vn(Gn,Fo,Ks,Gs,sl,Vi,ao,ns){var hs=(sl+ao)*.5,hl=(Vi+ns)*.5,Dl=Ks>=hs,hu=Gs>=hl,Ll=hu<<1|Dl;Gn.leaf=!1,Gn=Gn.nodes[Ll]||(Gn.nodes[Ll]=Zl()),Dl?sl=hs:ao=hs,hu?Vi=hl:ns=hl,Un(Gn,Fo,Ks,Gs,sl,Vi,ao,ns)}var No=Zl();if(No.add=function(Gn){Un(No,Gn,+va(Gn,++_a),+fa(Gn,_a),Na,Qa,Ya,Da)},No.visit=function(Gn){yl(Gn,No,Na,Qa,Ya,Da)},No.find=function(Gn){return oc(No,Gn[0],Gn[1],Na,Qa,Ya,Da)},_a=-1,Re==null){for(;++_awt||fa>Jt||Va=zi,hn=$e>=Ni,Un=hn<<1|Qi,Vn=Un+4;Un$e&&(wt=Re.slice($e,wt),Rt[Jt]?Rt[Jt]+=wt:Rt[++Jt]=wt),(pt=pt[0])===(vt=vt[0])?Rt[Jt]?Rt[Jt]+=vt:Rt[++Jt]=vt:(Rt[++Jt]=null,or.push({i:Jt,x:_l(pt,vt)})),$e=sc.lastIndex;return $e=0&&!(pt=g.interpolators[$e](de,Re)););return pt}g.interpolators=[function(de,Re){var $e=typeof Re;return($e==="string"?mr.has(Re.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(Re)?_c:Bs:Re instanceof ni?_c:Array.isArray(Re)?Yu:$e==="object"&&isNaN(Re)?Zs:_l)(de,Re)}],g.interpolateArray=Yu;function Yu(de,Re){var $e=[],pt=[],vt=de.length,wt=Re.length,Jt=Math.min(de.length,Re.length),Rt;for(Rt=0;Rt=0?de.slice(0,Re):de,pt=Re>=0?de.slice(Re+1):"in";return $e=fp.get($e)||Qs,pt=es.get(pt)||F,Wh(pt($e.apply(null,x.call(arguments,1))))};function Wh(de){return function(Re){return Re<=0?0:Re>=1?1:de(Re)}}function Ss(de){return function(Re){return 1-de(1-Re)}}function So(de){return function(Re){return .5*(Re<.5?de(2*Re):2-de(2-2*Re))}}function hf(de){return de*de}function Ku(de){return de*de*de}function cu(de){if(de<=0)return 0;if(de>=1)return 1;var Re=de*de,$e=Re*de;return 4*(de<.5?$e:3*(de-Re)+$e-.75)}function Zf(de){return function(Re){return Math.pow(Re,de)}}function Rc(de){return 1-Math.cos(de*Te)}function pf(de){return Math.pow(2,10*(de-1))}function Fl(de){return 1-Math.sqrt(1-de*de)}function lh(de,Re){var $e;return arguments.length<2&&(Re=.45),arguments.length?$e=Re/Ve*Math.asin(1/de):(de=1,$e=Re/4),function(pt){return 1+de*Math.pow(2,-10*pt)*Math.sin((pt-$e)*Ve/Re)}}function Xf(de){return de||(de=1.70158),function(Re){return Re*Re*((de+1)*Re-de)}}function Rf(de){return de<1/2.75?7.5625*de*de:de<2/2.75?7.5625*(de-=1.5/2.75)*de+.75:de<2.5/2.75?7.5625*(de-=2.25/2.75)*de+.9375:7.5625*(de-=2.625/2.75)*de+.984375}g.interpolateHcl=Kc;function Kc(de,Re){de=g.hcl(de),Re=g.hcl(Re);var $e=de.h,pt=de.c,vt=de.l,wt=Re.h-$e,Jt=Re.c-pt,Rt=Re.l-vt;return isNaN(Jt)&&(Jt=0,pt=isNaN(pt)?Re.c:pt),isNaN(wt)?(wt=0,$e=isNaN($e)?Re.h:$e):wt>180?wt-=360:wt<-180&&(wt+=360),function(or){return Zr($e+wt*or,pt+Jt*or,vt+Rt*or)+""}}g.interpolateHsl=Yf;function Yf(de,Re){de=g.hsl(de),Re=g.hsl(Re);var $e=de.h,pt=de.s,vt=de.l,wt=Re.h-$e,Jt=Re.s-pt,Rt=Re.l-vt;return isNaN(Jt)&&(Jt=0,pt=isNaN(pt)?Re.s:pt),isNaN(wt)?(wt=0,$e=isNaN($e)?Re.h:$e):wt>180?wt-=360:wt<-180&&(wt+=360),function(or){return Vt($e+wt*or,pt+Jt*or,vt+Rt*or)+""}}g.interpolateLab=uh;function uh(de,Re){de=g.lab(de),Re=g.lab(Re);var $e=de.l,pt=de.a,vt=de.b,wt=Re.l-$e,Jt=Re.a-pt,Rt=Re.b-vt;return function(or){return $a($e+wt*or,pt+Jt*or,vt+Rt*or)+""}}g.interpolateRound=Ju;function Ju(de,Re){return Re-=de,function($e){return Math.round(de+Re*$e)}}g.transform=function(de){var Re=M.createElementNS(g.ns.prefix.svg,"g");return(g.transform=function($e){if($e!=null){Re.setAttribute("transform",$e);var pt=Re.transform.baseVal.consolidate()}return new Df(pt?pt.matrix:wf)})(de)};function Df(de){var Re=[de.a,de.b],$e=[de.c,de.d],pt=Jc(Re),vt=Dc(Re,$e),wt=Jc(Eu($e,Re,-vt))||0;Re[0]*$e[1]<$e[0]*Re[1]&&(Re[0]*=-1,Re[1]*=-1,pt*=-1,vt*=-1),this.rotate=(pt?Math.atan2(Re[1],Re[0]):Math.atan2(-$e[0],$e[1]))*rt,this.translate=[de.e,de.f],this.scale=[pt,wt],this.skew=wt?Math.atan2(vt,wt)*rt:0}Df.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};function Dc(de,Re){return de[0]*Re[0]+de[1]*Re[1]}function Jc(de){var Re=Math.sqrt(Dc(de,de));return Re&&(de[0]/=Re,de[1]/=Re),Re}function Eu(de,Re,$e){return de[0]+=$e*Re[0],de[1]+=$e*Re[1],de}var wf={a:1,b:0,c:0,d:1,e:0,f:0};g.interpolateTransform=df;function zc(de){return de.length?de.pop()+",":""}function Us(de,Re,$e,pt){if(de[0]!==Re[0]||de[1]!==Re[1]){var vt=$e.push("translate(",null,",",null,")");pt.push({i:vt-4,x:_l(de[0],Re[0])},{i:vt-2,x:_l(de[1],Re[1])})}else(Re[0]||Re[1])&&$e.push("translate("+Re+")")}function Kf(de,Re,$e,pt){de!==Re?(de-Re>180?Re+=360:Re-de>180&&(de+=360),pt.push({i:$e.push(zc($e)+"rotate(",null,")")-2,x:_l(de,Re)})):Re&&$e.push(zc($e)+"rotate("+Re+")")}function Zh(de,Re,$e,pt){de!==Re?pt.push({i:$e.push(zc($e)+"skewX(",null,")")-2,x:_l(de,Re)}):Re&&$e.push(zc($e)+"skewX("+Re+")")}function ch(de,Re,$e,pt){if(de[0]!==Re[0]||de[1]!==Re[1]){var vt=$e.push(zc($e)+"scale(",null,",",null,")");pt.push({i:vt-4,x:_l(de[0],Re[0])},{i:vt-2,x:_l(de[1],Re[1])})}else(Re[0]!==1||Re[1]!==1)&&$e.push(zc($e)+"scale("+Re+")")}function df(de,Re){var $e=[],pt=[];return de=g.transform(de),Re=g.transform(Re),Us(de.translate,Re.translate,$e,pt),Kf(de.rotate,Re.rotate,$e,pt),Zh(de.skew,Re.skew,$e,pt),ch(de.scale,Re.scale,$e,pt),de=Re=null,function(vt){for(var wt=-1,Jt=pt.length,Rt;++wt0?wt=Da:($e.c=null,$e.t=NaN,$e=null,Re.end({type:"end",alpha:wt=0})):Da>0&&(Re.start({type:"start",alpha:wt=Da}),$e=Mn(de.tick)),de):wt},de.start=function(){var Da,zi=Va.length,Ni=Xa.length,Qi=pt[0],hn=pt[1],Un,Vn;for(Da=0;Da=0;)wt.push(Or=Dr[or]),Or.parent=Rt,Or.depth=Rt.depth+1;$e&&(Rt.value=0),Rt.children=Dr}else $e&&(Rt.value=+$e.call(pt,Rt,Rt.depth)||0),delete Rt.children;return lc(vt,function(va){var fa,Va;de&&(fa=va.children)&&fa.sort(de),$e&&(Va=va.parent)&&(Va.value+=va.value)}),Jt}return pt.sort=function(vt){return arguments.length?(de=vt,pt):de},pt.children=function(vt){return arguments.length?(Re=vt,pt):Re},pt.value=function(vt){return arguments.length?($e=vt,pt):$e},pt.revalue=function(vt){return $e&&(bc(vt,function(wt){wt.children&&(wt.value=0)}),lc(vt,function(wt){var Jt;wt.children||(wt.value=+$e.call(pt,wt,wt.depth)||0),(Jt=wt.parent)&&(Jt.value+=wt.value)})),vt},pt};function Uu(de,Re){return g.rebind(de,Re,"sort","children","value"),de.nodes=de,de.links=Lu,de}function bc(de,Re){for(var $e=[de];(de=$e.pop())!=null;)if(Re(de),(vt=de.children)&&(pt=vt.length))for(var pt,vt;--pt>=0;)$e.push(vt[pt])}function lc(de,Re){for(var $e=[de],pt=[];(de=$e.pop())!=null;)if(pt.push(de),(Jt=de.children)&&(wt=Jt.length))for(var vt=-1,wt,Jt;++vtvt&&(vt=Rt),pt.push(Rt)}for(Jt=0;Jt<$e;++Jt)or[Jt]=(vt-pt[Jt])/2;return or},wiggle:function(de){var Re=de.length,$e=de[0],pt=$e.length,vt,wt,Jt,Rt,or,Dr,Or,va,fa,Va=[];for(Va[0]=va=fa=0,wt=1;wtpt&&($e=Re,pt=vt);return $e}function el(de){return de.reduce(mf,0)}function mf(de,Re){return de+Re[1]}g.layout.histogram=function(){var de=!0,Re=Number,$e=Af,pt=wc;function vt(wt,fa){for(var Rt=[],or=wt.map(Re,this),Dr=$e.call(this,or,fa),Or=pt.call(this,Dr,or,fa),va,fa=-1,Va=or.length,Xa=Or.length-1,_a=de?1:1/Va,Ra;++fa0)for(fa=-1;++fa=Dr[0]&&Ra<=Dr[1]&&(va=Rt[g.bisect(Or,Ra,1,Xa)-1],va.y+=_a,va.push(wt[fa]));return Rt}return vt.value=function(wt){return arguments.length?(Re=wt,vt):Re},vt.range=function(wt){return arguments.length?($e=$r(wt),vt):$e},vt.bins=function(wt){return arguments.length?(pt=typeof wt=="number"?function(Jt){return ju(Jt,wt)}:$r(wt),vt):pt},vt.frequency=function(wt){return arguments.length?(de=!!wt,vt):de},vt};function wc(de,Re){return ju(de,Math.ceil(Math.log(Re.length)/Math.LN2+1))}function ju(de,Re){for(var $e=-1,pt=+de[0],vt=(de[1]-pt)/Re,wt=[];++$e<=Re;)wt[$e]=vt*$e+pt;return wt}function Af(de){return[g.min(de),g.max(de)]}g.layout.pack=function(){var de=g.layout.hierarchy().sort(uc),Re=0,$e=[1,1],pt;function vt(wt,Jt){var Rt=de.call(this,wt,Jt),or=Rt[0],Dr=$e[0],Or=$e[1],va=pt==null?Math.sqrt:typeof pt=="function"?pt:function(){return pt};if(or.x=or.y=0,lc(or,function(Va){Va.r=+va(Va.value)}),lc(or,Qf),Re){var fa=Re*(pt?1:Math.max(2*or.r/Dr,2*or.r/Or))/2;lc(or,function(Va){Va.r+=fa}),lc(or,Qf),lc(or,function(Va){Va.r-=fa})}return cc(or,Dr/2,Or/2,pt?1:1/Math.max(2*or.r/Dr,2*or.r/Or)),Rt}return vt.size=function(wt){return arguments.length?($e=wt,vt):$e},vt.radius=function(wt){return arguments.length?(pt=wt==null||typeof wt=="function"?wt:+wt,vt):pt},vt.padding=function(wt){return arguments.length?(Re=+wt,vt):Re},Uu(vt,de)};function uc(de,Re){return de.value-Re.value}function Qc(de,Re){var $e=de._pack_next;de._pack_next=Re,Re._pack_prev=de,Re._pack_next=$e,$e._pack_prev=Re}function $f(de,Re){de._pack_next=Re,Re._pack_prev=de}function Vl(de,Re){var $e=Re.x-de.x,pt=Re.y-de.y,vt=de.r+Re.r;return .999*vt*vt>$e*$e+pt*pt}function Qf(de){if(!(Re=de.children)||!(fa=Re.length))return;var Re,$e=1/0,pt=-1/0,vt=1/0,wt=-1/0,Jt,Rt,or,Dr,Or,va,fa;function Va(Da){$e=Math.min(Da.x-Da.r,$e),pt=Math.max(Da.x+Da.r,pt),vt=Math.min(Da.y-Da.r,vt),wt=Math.max(Da.y+Da.r,wt)}if(Re.forEach(Vu),Jt=Re[0],Jt.x=-Jt.r,Jt.y=0,Va(Jt),fa>1&&(Rt=Re[1],Rt.x=Rt.r,Rt.y=0,Va(Rt),fa>2))for(or=Re[2],Cl(Jt,Rt,or),Va(or),Qc(Jt,or),Jt._pack_prev=or,Qc(or,Rt),Rt=Jt._pack_next,Dr=3;DrRa.x&&(Ra=zi),zi.depth>Na.depth&&(Na=zi)});var Qa=Re(_a,Ra)/2-_a.x,Ya=$e[0]/(Ra.x+Re(Ra,_a)/2+Qa),Da=$e[1]/(Na.depth||1);bc(Va,function(zi){zi.x=(zi.x+Qa)*Ya,zi.y=zi.depth*Da})}return fa}function wt(Or){for(var va={A:null,children:[Or]},fa=[va],Va;(Va=fa.pop())!=null;)for(var Xa=Va.children,_a,Ra=0,Na=Xa.length;Ra0&&(Qu(Zt(_a,Or,fa),Or,zi),Na+=zi,Qa+=zi),Ya+=_a.m,Na+=Va.m,Da+=Ra.m,Qa+=Xa.m;_a&&!Oc(Xa)&&(Xa.t=_a,Xa.m+=Ya-Qa),Va&&!fc(Ra)&&(Ra.t=Va,Ra.m+=Na-Da,fa=Or)}return fa}function Dr(Or){Or.x*=$e[0],Or.y=Or.depth*$e[1]}return vt.separation=function(Or){return arguments.length?(Re=Or,vt):Re},vt.size=function(Or){return arguments.length?(pt=($e=Or)==null?Dr:null,vt):pt?null:$e},vt.nodeSize=function(Or){return arguments.length?(pt=($e=Or)==null?null:Dr,vt):pt?$e:null},Uu(vt,de)};function iu(de,Re){return de.parent==Re.parent?1:2}function fc(de){var Re=de.children;return Re.length?Re[0]:de.t}function Oc(de){var Re=de.children,$e;return($e=Re.length)?Re[$e-1]:de.t}function Qu(de,Re,$e){var pt=$e/(Re.i-de.i);Re.c-=pt,Re.s+=$e,de.c+=pt,Re.z+=$e,Re.m+=$e}function ef(de){for(var Re=0,$e=0,pt=de.children,vt=pt.length,wt;--vt>=0;)wt=pt[vt],wt.z+=Re,wt.m+=Re,Re+=wt.s+($e+=wt.c)}function Zt(de,Re,$e){return de.a.parent===Re.parent?de.a:$e}g.layout.cluster=function(){var de=g.layout.hierarchy().sort(null).value(null),Re=iu,$e=[1,1],pt=!1;function vt(wt,Jt){var Rt=de.call(this,wt,Jt),or=Rt[0],Dr,Or=0;lc(or,function(_a){var Ra=_a.children;Ra&&Ra.length?(_a.x=Yr(Ra),_a.y=fr(Ra)):(_a.x=Dr?Or+=Re(_a,Dr):0,_a.y=0,Dr=_a)});var va=qr(or),fa=ba(or),Va=va.x-Re(va,fa)/2,Xa=fa.x+Re(fa,va)/2;return lc(or,pt?function(_a){_a.x=(_a.x-or.x)*$e[0],_a.y=(or.y-_a.y)*$e[1]}:function(_a){_a.x=(_a.x-Va)/(Xa-Va)*$e[0],_a.y=(1-(or.y?_a.y/or.y:1))*$e[1]}),Rt}return vt.separation=function(wt){return arguments.length?(Re=wt,vt):Re},vt.size=function(wt){return arguments.length?(pt=($e=wt)==null,vt):pt?null:$e},vt.nodeSize=function(wt){return arguments.length?(pt=($e=wt)!=null,vt):pt?$e:null},Uu(vt,de)};function fr(de){return 1+g.max(de,function(Re){return Re.y})}function Yr(de){return de.reduce(function(Re,$e){return Re+$e.x},0)/de.length}function qr(de){var Re=de.children;return Re&&Re.length?qr(Re[0]):de}function ba(de){var Re=de.children,$e;return Re&&($e=Re.length)?ba(Re[$e-1]):de}g.layout.treemap=function(){var de=g.layout.hierarchy(),Re=Math.round,$e=[1,1],pt=null,vt=Ka,wt=!1,Jt,Rt="squarify",or=.5*(1+Math.sqrt(5));function Dr(_a,Ra){for(var Na=-1,Qa=_a.length,Ya,Da;++Na0;)Qa.push(Da=Ya[hn-1]),Qa.area+=Da.area,Rt!=="squarify"||(Ni=fa(Qa,Qi))<=zi?(Ya.pop(),zi=Ni):(Qa.area-=Qa.pop().area,Va(Qa,Qi,Na,!1),Qi=Math.min(Na.dx,Na.dy),Qa.length=Qa.area=0,zi=1/0);Qa.length&&(Va(Qa,Qi,Na,!0),Qa.length=Qa.area=0),Ra.forEach(Or)}}function va(_a){var Ra=_a.children;if(Ra&&Ra.length){var Na=vt(_a),Qa=Ra.slice(),Ya,Da=[];for(Dr(Qa,Na.dx*Na.dy/_a.value),Da.area=0;Ya=Qa.pop();)Da.push(Ya),Da.area+=Ya.area,Ya.z!=null&&(Va(Da,Ya.z?Na.dx:Na.dy,Na,!Qa.length),Da.length=Da.area=0);Ra.forEach(va)}}function fa(_a,Ra){for(var Na=_a.area,Qa,Ya=0,Da=1/0,zi=-1,Ni=_a.length;++ziYa&&(Ya=Qa));return Na*=Na,Ra*=Ra,Na?Math.max(Ra*Ya*or/Na,Na/(Ra*Da*or)):1/0}function Va(_a,Ra,Na,Qa){var Ya=-1,Da=_a.length,zi=Na.x,Ni=Na.y,Qi=Ra?Re(_a.area/Ra):0,hn;if(Ra==Na.dx){for((Qa||Qi>Na.dy)&&(Qi=Na.dy);++YaNa.dx)&&(Qi=Na.dx);++Ya1);return de+Re*pt*Math.sqrt(-2*Math.log(wt)/wt)}},logNormal:function(){var de=g.random.normal.apply(g,arguments);return function(){return Math.exp(de())}},bates:function(de){var Re=g.random.irwinHall(de);return function(){return Re()/de}},irwinHall:function(de){return function(){for(var Re=0,$e=0;$e2?ti:Bi,Dr=pt?ku:Ah;return vt=or(de,Re,Dr,$e),wt=or(Re,de,Dr,zl),Rt}function Rt(or){return vt(or)}return Rt.invert=function(or){return wt(or)},Rt.domain=function(or){return arguments.length?(de=or.map(Number),Jt()):de},Rt.range=function(or){return arguments.length?(Re=or,Jt()):Re},Rt.rangeRound=function(or){return Rt.range(or).interpolate(Ju)},Rt.clamp=function(or){return arguments.length?(pt=or,Jt()):pt},Rt.interpolate=function(or){return arguments.length?($e=or,Jt()):$e},Rt.ticks=function(or){return no(de,or)},Rt.tickFormat=function(or,Dr){return d3_scale_linearTickFormat(de,or,Dr)},Rt.nice=function(or){return Wn(de,or),Jt()},Rt.copy=function(){return rn(de,Re,$e,pt)},Jt()}function Kn(de,Re){return g.rebind(de,Re,"range","rangeRound","interpolate","clamp")}function Wn(de,Re){return li(de,_i(Jn(de,Re)[2])),li(de,_i(Jn(de,Re)[2])),de}function Jn(de,Re){Re==null&&(Re=10);var $e=yi(de),pt=$e[1]-$e[0],vt=Math.pow(10,Math.floor(Math.log(pt/Re)/Math.LN10)),wt=Re/pt*vt;return wt<=.15?vt*=10:wt<=.35?vt*=5:wt<=.75&&(vt*=2),$e[0]=Math.ceil($e[0]/vt)*vt,$e[1]=Math.floor($e[1]/vt)*vt+vt*.5,$e[2]=vt,$e}function no(de,Re){return g.range.apply(g,Jn(de,Re))}var en={s:1,g:1,p:1,r:1,e:1};function Ri(de){return-Math.floor(Math.log(de)/Math.LN10+.01)}function co(de,Re){var $e=Ri(Re[2]);return de in en?Math.abs($e-Ri(Math.max(l(Re[0]),l(Re[1]))))+ +(de!=="e"):$e-(de==="%")*2}g.scale.log=function(){return Wo(g.scale.linear().domain([0,1]),10,!0,[1,10])};function Wo(de,Re,$e,pt){function vt(Rt){return($e?Math.log(Rt<0?0:Rt):-Math.log(Rt>0?0:-Rt))/Math.log(Re)}function wt(Rt){return $e?Math.pow(Re,Rt):-Math.pow(Re,-Rt)}function Jt(Rt){return de(vt(Rt))}return Jt.invert=function(Rt){return wt(de.invert(Rt))},Jt.domain=function(Rt){return arguments.length?($e=Rt[0]>=0,de.domain((pt=Rt.map(Number)).map(vt)),Jt):pt},Jt.base=function(Rt){return arguments.length?(Re=+Rt,de.domain(pt.map(vt)),Jt):Re},Jt.nice=function(){var Rt=li(pt.map(vt),$e?Math:bs);return de.domain(Rt),pt=Rt.map(wt),Jt},Jt.ticks=function(){var Rt=yi(pt),or=[],Dr=Rt[0],Or=Rt[1],va=Math.floor(vt(Dr)),fa=Math.ceil(vt(Or)),Va=Re%1?2:Re;if(isFinite(fa-va)){if($e){for(;va0;Xa--)or.push(wt(va)*Xa);for(va=0;or[va]Or;fa--);or=or.slice(va,fa)}return or},Jt.copy=function(){return Wo(de.copy(),Re,$e,pt)},Kn(Jt,de)}var bs={floor:function(de){return-Math.ceil(-de)},ceil:function(de){return-Math.floor(-de)}};g.scale.pow=function(){return Xs(g.scale.linear(),1,[0,1])};function Xs(de,Re,$e){var pt=Ms(Re),vt=Ms(1/Re);function wt(Jt){return de(pt(Jt))}return wt.invert=function(Jt){return vt(de.invert(Jt))},wt.domain=function(Jt){return arguments.length?(de.domain(($e=Jt.map(Number)).map(pt)),wt):$e},wt.ticks=function(Jt){return no($e,Jt)},wt.tickFormat=function(Jt,Rt){return d3_scale_linearTickFormat($e,Jt,Rt)},wt.nice=function(Jt){return wt.domain(Wn($e,Jt))},wt.exponent=function(Jt){return arguments.length?(pt=Ms(Re=Jt),vt=Ms(1/Re),de.domain($e.map(pt)),wt):Re},wt.copy=function(){return Xs(de.copy(),Re,$e)},Kn(wt,de)}function Ms(de){return function(Re){return Re<0?-Math.pow(-Re,de):Math.pow(Re,de)}}g.scale.sqrt=function(){return g.scale.pow().exponent(.5)},g.scale.ordinal=function(){return Hs([],{t:"range",a:[[]]})};function Hs(de,Re){var $e,pt,vt;function wt(Rt){return pt[(($e.get(Rt)||(Re.t==="range"?$e.set(Rt,de.push(Rt)):NaN))-1)%pt.length]}function Jt(Rt,or){return g.range(de.length).map(function(Dr){return Rt+or*Dr})}return wt.domain=function(Rt){if(!arguments.length)return de;de=[],$e=new S;for(var or=-1,Dr=Rt.length,Or;++or0?$e[wt-1]:de[0],wt<$e.length?$e[wt]:de[de.length-1]]},vt.copy=function(){return Ln(de,Re)},pt()}g.scale.quantize=function(){return Ao(0,1,[0,1])};function Ao(de,Re,$e){var pt,vt;function wt(Rt){return $e[Math.max(0,Math.min(vt,Math.floor(pt*(Rt-de))))]}function Jt(){return pt=$e.length/(Re-de),vt=$e.length-1,wt}return wt.domain=function(Rt){return arguments.length?(de=+Rt[0],Re=+Rt[Rt.length-1],Jt()):[de,Re]},wt.range=function(Rt){return arguments.length?($e=Rt,Jt()):$e},wt.invertExtent=function(Rt){return Rt=$e.indexOf(Rt),Rt=Rt<0?NaN:Rt/pt+de,[Rt,Rt+1/pt]},wt.copy=function(){return Ao(de,Re,$e)},Jt()}g.scale.threshold=function(){return js([.5],[0,1])};function js(de,Re){function $e(pt){if(pt<=pt)return Re[g.bisect(de,pt)]}return $e.domain=function(pt){return arguments.length?(de=pt,$e):de},$e.range=function(pt){return arguments.length?(Re=pt,$e):Re},$e.invertExtent=function(pt){return pt=Re.indexOf(pt),[de[pt-1],de[pt]]},$e.copy=function(){return js(de,Re)},$e}g.scale.identity=function(){return Ts([0,1])};function Ts(de){function Re($e){return+$e}return Re.invert=Re,Re.domain=Re.range=function($e){return arguments.length?(de=$e.map(Re),Re):de},Re.ticks=function($e){return no(de,$e)},Re.tickFormat=function($e,pt){return d3_scale_linearTickFormat(de,$e,pt)},Re.copy=function(){return Ts(de)},Re}g.svg={};function nu(){return 0}g.svg.arc=function(){var de=ec,Re=tf,$e=nu,pt=Pu,vt=yu,wt=Bc,Jt=Iu;function Rt(){var Dr=Math.max(0,+de.apply(this,arguments)),Or=Math.max(0,+Re.apply(this,arguments)),va=vt.apply(this,arguments)-Te,fa=wt.apply(this,arguments)-Te,Va=Math.abs(fa-va),Xa=va>fa?0:1;if(Or=ke)return or(Or,Xa)+(Dr?or(Dr,1-Xa):"")+"Z";var _a,Ra,Na,Qa,Ya=0,Da=0,zi,Ni,Qi,hn,Un,Vn,No,Gn,Fo=[];if((Qa=(+Jt.apply(this,arguments)||0)/2)&&(Na=pt===Pu?Math.sqrt(Dr*Dr+Or*Or):+pt.apply(this,arguments),Xa||(Da*=-1),Or&&(Da=Bt(Na/Or*Math.sin(Qa))),Dr&&(Ya=Bt(Na/Dr*Math.sin(Qa)))),Or){zi=Or*Math.cos(va+Da),Ni=Or*Math.sin(va+Da),Qi=Or*Math.cos(fa-Da),hn=Or*Math.sin(fa-Da);var Ks=Math.abs(fa-va-2*Da)<=Ee?0:1;if(Da&&Ac(zi,Ni,Qi,hn)===Xa^Ks){var Gs=(va+fa)/2;zi=Or*Math.cos(Gs),Ni=Or*Math.sin(Gs),Qi=hn=null}}else zi=Ni=0;if(Dr){Un=Dr*Math.cos(fa-Ya),Vn=Dr*Math.sin(fa-Ya),No=Dr*Math.cos(va+Ya),Gn=Dr*Math.sin(va+Ya);var sl=Math.abs(va-fa+2*Ya)<=Ee?0:1;if(Ya&&Ac(Un,Vn,No,Gn)===1-Xa^sl){var Vi=(va+fa)/2;Un=Dr*Math.cos(Vi),Vn=Dr*Math.sin(Vi),No=Gn=null}}else Un=Vn=0;if(Va>Ke&&(_a=Math.min(Math.abs(Or-Dr)/2,+$e.apply(this,arguments)))>.001){Ra=Dr0?0:1}function ro(de,Re,$e,pt,vt){var wt=de[0]-Re[0],Jt=de[1]-Re[1],Rt=(vt?pt:-pt)/Math.sqrt(wt*wt+Jt*Jt),or=Rt*Jt,Dr=-Rt*wt,Or=de[0]+or,va=de[1]+Dr,fa=Re[0]+or,Va=Re[1]+Dr,Xa=(Or+fa)/2,_a=(va+Va)/2,Ra=fa-Or,Na=Va-va,Qa=Ra*Ra+Na*Na,Ya=$e-pt,Da=Or*Va-fa*va,zi=(Na<0?-1:1)*Math.sqrt(Math.max(0,Ya*Ya*Qa-Da*Da)),Ni=(Da*Na-Ra*zi)/Qa,Qi=(-Da*Ra-Na*zi)/Qa,hn=(Da*Na+Ra*zi)/Qa,Un=(-Da*Ra+Na*zi)/Qa,Vn=Ni-Xa,No=Qi-_a,Gn=hn-Xa,Fo=Un-_a;return Vn*Vn+No*No>Gn*Gn+Fo*Fo&&(Ni=hn,Qi=Un),[[Ni-or,Qi-Dr],[Ni*$e/Ya,Qi*$e/Ya]]}function Po(){return!0}function Nc(de){var Re=Lo,$e=Xi,pt=Po,vt=pc,wt=vt.key,Jt=.7;function Rt(or){var Dr=[],Or=[],va=-1,fa=or.length,Va,Xa=$r(Re),_a=$r($e);function Ra(){Dr.push("M",vt(de(Or),Jt))}for(;++va1?de.join("L"):de+"Z"}function Oe(de){return de.join("L")+"Z"}function R(de){for(var Re=0,$e=de.length,pt=de[0],vt=[pt[0],",",pt[1]];++Re<$e;)vt.push("H",(pt[0]+(pt=de[Re])[0])/2,"V",pt[1]);return $e>1&&vt.push("H",pt[0]),vt.join("")}function ae(de){for(var Re=0,$e=de.length,pt=de[0],vt=[pt[0],",",pt[1]];++Re<$e;)vt.push("V",(pt=de[Re])[1],"H",pt[0]);return vt.join("")}function we(de){for(var Re=0,$e=de.length,pt=de[0],vt=[pt[0],",",pt[1]];++Re<$e;)vt.push("H",(pt=de[Re])[0],"V",pt[1]);return vt.join("")}function Se(de,Re){return de.length<4?pc(de):de[1]+bt(de.slice(1,-1),Dt(de,Re))}function De(de,Re){return de.length<3?Oe(de):de[0]+bt((de.push(de[0]),de),Dt([de[de.length-2]].concat(de,[de[1]]),Re))}function ft(de,Re){return de.length<3?pc(de):de[0]+bt(de,Dt(de,Re))}function bt(de,Re){if(Re.length<1||de.length!=Re.length&&de.length!=Re.length+2)return pc(de);var $e=de.length!=Re.length,pt="",vt=de[0],wt=de[1],Jt=Re[0],Rt=Jt,or=1;if($e&&(pt+="Q"+(wt[0]-Jt[0]*2/3)+","+(wt[1]-Jt[1]*2/3)+","+wt[0]+","+wt[1],vt=de[1],or=2),Re.length>1){Rt=Re[1],wt=de[or],or++,pt+="C"+(vt[0]+Jt[0])+","+(vt[1]+Jt[1])+","+(wt[0]-Rt[0])+","+(wt[1]-Rt[1])+","+wt[0]+","+wt[1];for(var Dr=2;Dr9&&(wt=$e*3/Math.sqrt(wt),Jt[Rt]=wt*pt,Jt[Rt+1]=wt*vt));for(Rt=-1;++Rt<=or;)wt=(de[Math.min(or,Rt+1)][0]-de[Math.max(0,Rt-1)][0])/(6*(1+Jt[Rt]*Jt[Rt])),Re.push([wt||0,Jt[Rt]*wt||0]);return Re}function er(de){return de.length<3?pc(de):de[0]+bt(de,Pt(de))}g.svg.line.radial=function(){var de=Nc(nr);return de.radius=de.x,delete de.x,de.angle=de.y,delete de.y,de};function nr(de){for(var Re,$e=-1,pt=de.length,vt,wt;++$eEe)+",1 "+va}function Dr(Or,va,fa,Va){return"Q 0,0 "+Va}return wt.radius=function(Or){return arguments.length?($e=$r(Or),wt):$e},wt.source=function(Or){return arguments.length?(de=$r(Or),wt):de},wt.target=function(Or){return arguments.length?(Re=$r(Or),wt):Re},wt.startAngle=function(Or){return arguments.length?(pt=$r(Or),wt):pt},wt.endAngle=function(Or){return arguments.length?(vt=$r(Or),wt):vt},wt};function ha(de){return de.radius}g.svg.diagonal=function(){var de=Sr,Re=Wr,$e=ga;function pt(vt,wt){var Jt=de.call(this,vt,wt),Rt=Re.call(this,vt,wt),or=(Jt.y+Rt.y)/2,Dr=[Jt,{x:Jt.x,y:or},{x:Rt.x,y:or},Rt];return Dr=Dr.map($e),"M"+Dr[0]+"C"+Dr[1]+" "+Dr[2]+" "+Dr[3]}return pt.source=function(vt){return arguments.length?(de=$r(vt),pt):de},pt.target=function(vt){return arguments.length?(Re=$r(vt),pt):Re},pt.projection=function(vt){return arguments.length?($e=vt,pt):$e},pt};function ga(de){return[de.x,de.y]}g.svg.diagonal.radial=function(){var de=g.svg.diagonal(),Re=ga,$e=de.projection;return de.projection=function(pt){return arguments.length?$e(Pa(Re=pt)):Re},de};function Pa(de){return function(){var Re=de.apply(this,arguments),$e=Re[0],pt=Re[1]-Te;return[$e*Math.cos(pt),$e*Math.sin(pt)]}}g.svg.symbol=function(){var de=di,Re=Ja;function $e(pt,vt){return(Ci.get(de.call(this,pt,vt))||pi)(Re.call(this,pt,vt))}return $e.type=function(pt){return arguments.length?(de=$r(pt),$e):de},$e.size=function(pt){return arguments.length?(Re=$r(pt),$e):Re},$e};function Ja(){return 64}function di(){return"circle"}function pi(de){var Re=Math.sqrt(de/Ee);return"M0,"+Re+"A"+Re+","+Re+" 0 1,1 0,"+-Re+"A"+Re+","+Re+" 0 1,1 0,"+Re+"Z"}var Ci=g.map({circle:pi,cross:function(de){var Re=Math.sqrt(de/5)/2;return"M"+-3*Re+","+-Re+"H"+-Re+"V"+-3*Re+"H"+Re+"V"+-Re+"H"+3*Re+"V"+Re+"H"+Re+"V"+3*Re+"H"+-Re+"V"+Re+"H"+-3*Re+"Z"},diamond:function(de){var Re=Math.sqrt(de/(2*Bn)),$e=Re*Bn;return"M0,"+-Re+"L"+$e+",0 0,"+Re+" "+-$e+",0Z"},square:function(de){var Re=Math.sqrt(de)/2;return"M"+-Re+","+-Re+"L"+Re+","+-Re+" "+Re+","+Re+" "+-Re+","+Re+"Z"},"triangle-down":function(de){var Re=Math.sqrt(de/$i),$e=Re*$i/2;return"M0,"+$e+"L"+Re+","+-$e+" "+-Re+","+-$e+"Z"},"triangle-up":function(de){var Re=Math.sqrt(de/$i),$e=Re*$i/2;return"M0,"+-$e+"L"+Re+","+$e+" "+-Re+","+$e+"Z"}});g.svg.symbolTypes=Ci.keys();var $i=Math.sqrt(3),Bn=Math.tan(30*Le);ne.transition=function(de){for(var Re=ls||++Vo,$e=Go(de),pt=[],vt,wt,Jt=rl||{time:Date.now(),ease:cu,delay:0,duration:250},Rt=-1,or=this.length;++Rt0;)va[--Qa].call(de,Na);if(Ra>=1)return Jt.event&&Jt.event.end.call(de,de.__data__,Re),--wt.count?delete wt[pt]:delete de[$e],1}Jt||(Rt=vt.time,or=Mn(fa,0,Rt),Jt=wt[pt]={tween:new S,time:Rt,timer:or,delay:vt.delay,duration:vt.duration,ease:vt.ease,index:Re},vt=null,++wt.count)}g.svg.axis=function(){var de=g.scale.linear(),Re=Xl,$e=6,pt=6,vt=3,wt=[10],Jt=null,Rt;function or(Dr){Dr.each(function(){var Or=g.select(this),va=this.__chart__||de,fa=this.__chart__=de.copy(),Va=Jt??(fa.ticks?fa.ticks.apply(fa,wt):fa.domain()),Xa=Rt??(fa.tickFormat?fa.tickFormat.apply(fa,wt):F),_a=Or.selectAll(".tick").data(Va,fa),Ra=_a.enter().insert("g",".domain").attr("class","tick").style("opacity",Ke),Na=g.transition(_a.exit()).style("opacity",Ke).remove(),Qa=g.transition(_a.order()).style("opacity",1),Ya=Math.max($e,0)+vt,Da,zi=ki(fa),Ni=Or.selectAll(".domain").data([0]),Qi=(Ni.enter().append("path").attr("class","domain"),g.transition(Ni));Ra.append("line"),Ra.append("text");var hn=Ra.select("line"),Un=Qa.select("line"),Vn=_a.select("text").text(Xa),No=Ra.select("text"),Gn=Qa.select("text"),Fo=Re==="top"||Re==="left"?-1:1,Ks,Gs,sl,Vi;if(Re==="bottom"||Re==="top"?(Da=fu,Ks="x",sl="y",Gs="x2",Vi="y2",Vn.attr("dy",Fo<0?"0em":".71em").style("text-anchor","middle"),Qi.attr("d","M"+zi[0]+","+Fo*pt+"V0H"+zi[1]+"V"+Fo*pt)):(Da=bl,Ks="y",sl="x",Gs="y2",Vi="x2",Vn.attr("dy",".32em").style("text-anchor",Fo<0?"end":"start"),Qi.attr("d","M"+Fo*pt+","+zi[0]+"H0V"+zi[1]+"H"+Fo*pt)),hn.attr(Vi,Fo*$e),No.attr(sl,Fo*Ya),Un.attr(Gs,0).attr(Vi,Fo*$e),Gn.attr(Ks,0).attr(sl,Fo*Ya),fa.rangeBand){var ao=fa,ns=ao.rangeBand()/2;va=fa=function(hs){return ao(hs)+ns}}else va.rangeBand?va=fa:Na.call(Da,fa,va);Ra.call(Da,va,fa),Qa.call(Da,fa,fa)})}return or.scale=function(Dr){return arguments.length?(de=Dr,or):de},or.orient=function(Dr){return arguments.length?(Re=Dr in qu?Dr+"":Xl,or):Re},or.ticks=function(){return arguments.length?(wt=A(arguments),or):wt},or.tickValues=function(Dr){return arguments.length?(Jt=Dr,or):Jt},or.tickFormat=function(Dr){return arguments.length?(Rt=Dr,or):Rt},or.tickSize=function(Dr){var Or=arguments.length;return Or?($e=+Dr,pt=+arguments[Or-1],or):$e},or.innerTickSize=function(Dr){return arguments.length?($e=+Dr,or):$e},or.outerTickSize=function(Dr){return arguments.length?(pt=+Dr,or):pt},or.tickPadding=function(Dr){return arguments.length?(vt=+Dr,or):vt},or.tickSubdivide=function(){return arguments.length&&or},or};var Xl="bottom",qu={top:1,right:1,bottom:1,left:1};function fu(de,Re,$e){de.attr("transform",function(pt){var vt=Re(pt);return"translate("+(isFinite(vt)?vt:$e(pt))+",0)"})}function bl(de,Re,$e){de.attr("transform",function(pt){var vt=Re(pt);return"translate(0,"+(isFinite(vt)?vt:$e(pt))+")"})}g.svg.brush=function(){var de=se(Or,"brushstart","brush","brushend"),Re=null,$e=null,pt=[0,0],vt=[0,0],wt,Jt,Rt=!0,or=!0,Dr=Sc[0];function Or(_a){_a.each(function(){var Ra=g.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",Xa).on("touchstart.brush",Xa),Na=Ra.selectAll(".background").data([0]);Na.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),Ra.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var Qa=Ra.selectAll(".resize").data(Dr,F);Qa.exit().remove(),Qa.enter().append("g").attr("class",function(Ni){return"resize "+Ni}).style("cursor",function(Ni){return ou[Ni]}).append("rect").attr("x",function(Ni){return/[ew]$/.test(Ni)?-3:null}).attr("y",function(Ni){return/^[ns]/.test(Ni)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),Qa.style("display",Or.empty()?"none":null);var Ya=g.transition(Ra),Da=g.transition(Na),zi;Re&&(zi=ki(Re),Da.attr("x",zi[0]).attr("width",zi[1]-zi[0]),fa(Ya)),$e&&(zi=ki($e),Da.attr("y",zi[0]).attr("height",zi[1]-zi[0]),Va(Ya)),va(Ya)})}Or.event=function(_a){_a.each(function(){var Ra=de.of(this,arguments),Na={x:pt,y:vt,i:wt,j:Jt},Qa=this.__chart__||Na;this.__chart__=Na,ls?g.select(this).transition().each("start.brush",function(){wt=Qa.i,Jt=Qa.j,pt=Qa.x,vt=Qa.y,Ra({type:"brushstart"})}).tween("brush:brush",function(){var Ya=Yu(pt,Na.x),Da=Yu(vt,Na.y);return wt=Jt=null,function(zi){pt=Na.x=Ya(zi),vt=Na.y=Da(zi),Ra({type:"brush",mode:"resize"})}}).each("end.brush",function(){wt=Na.i,Jt=Na.j,Ra({type:"brush",mode:"resize"}),Ra({type:"brushend"})}):(Ra({type:"brushstart"}),Ra({type:"brush",mode:"resize"}),Ra({type:"brushend"}))})};function va(_a){_a.selectAll(".resize").attr("transform",function(Ra){return"translate("+pt[+/e$/.test(Ra)]+","+vt[+/^s/.test(Ra)]+")"})}function fa(_a){_a.select(".extent").attr("x",pt[0]),_a.selectAll(".extent,.n>rect,.s>rect").attr("width",pt[1]-pt[0])}function Va(_a){_a.select(".extent").attr("y",vt[0]),_a.selectAll(".extent,.e>rect,.w>rect").attr("height",vt[1]-vt[0])}function Xa(){var _a=this,Ra=g.select(g.event.target),Na=de.of(_a,arguments),Qa=g.select(_a),Ya=Ra.datum(),Da=!/^(n|s)$/.test(Ya)&&Re,zi=!/^(e|w)$/.test(Ya)&&$e,Ni=Ra.classed("extent"),Qi=vr(_a),hn,Un=g.mouse(_a),Vn,No=g.select(t(_a)).on("keydown.brush",Ks).on("keyup.brush",Gs);if(g.event.changedTouches?No.on("touchmove.brush",sl).on("touchend.brush",ao):No.on("mousemove.brush",sl).on("mouseup.brush",ao),Qa.interrupt().selectAll("*").interrupt(),Ni)Un[0]=pt[0]-Un[0],Un[1]=vt[0]-Un[1];else if(Ya){var Gn=+/w$/.test(Ya),Fo=+/^n/.test(Ya);Vn=[pt[1-Gn]-Un[0],vt[1-Fo]-Un[1]],Un[0]=pt[Gn],Un[1]=vt[Fo]}else g.event.altKey&&(hn=Un.slice());Qa.style("pointer-events","none").selectAll(".resize").style("display",null),g.select("body").style("cursor",Ra.style("cursor")),Na({type:"brushstart"}),sl();function Ks(){g.event.keyCode==32&&(Ni||(hn=null,Un[0]-=pt[1],Un[1]-=vt[1],Ni=2),Q())}function Gs(){g.event.keyCode==32&&Ni==2&&(Un[0]+=pt[1],Un[1]+=vt[1],Ni=0,Q())}function sl(){var ns=g.mouse(_a),hs=!1;Vn&&(ns[0]+=Vn[0],ns[1]+=Vn[1]),Ni||(g.event.altKey?(hn||(hn=[(pt[0]+pt[1])/2,(vt[0]+vt[1])/2]),Un[0]=pt[+(ns[0]0))return jt;do jt.push(ur=new Date(+Ct)),ze(Ct,Ot),ce(Ct);while(ur=St)for(;ce(St),!Ct(St);)St.setTime(St-1)},function(St,Ot){if(St>=St)if(Ot<0)for(;++Ot<=0;)for(;ze(St,-1),!Ct(St););else for(;--Ot>=0;)for(;ze(St,1),!Ct(St););})},tt&&(Qe.count=function(Ct,St){return x.setTime(+Ct),A.setTime(+St),ce(x),ce(A),Math.floor(tt(x,A))},Qe.every=function(Ct){return Ct=Math.floor(Ct),!isFinite(Ct)||!(Ct>0)?null:Ct>1?Qe.filter(nt?function(St){return nt(St)%Ct===0}:function(St){return Qe.count(0,St)%Ct===0}):Qe}),Qe}var e=M(function(){},function(ce,ze){ce.setTime(+ce+ze)},function(ce,ze){return ze-ce});e.every=function(ce){return ce=Math.floor(ce),!isFinite(ce)||!(ce>0)?null:ce>1?M(function(ze){ze.setTime(Math.floor(ze/ce)*ce)},function(ze,tt){ze.setTime(+ze+tt*ce)},function(ze,tt){return(tt-ze)/ce}):e};var t=e.range,r=1e3,o=6e4,a=36e5,i=864e5,n=6048e5,s=M(function(ce){ce.setTime(ce-ce.getMilliseconds())},function(ce,ze){ce.setTime(+ce+ze*r)},function(ce,ze){return(ze-ce)/r},function(ce){return ce.getUTCSeconds()}),c=s.range,h=M(function(ce){ce.setTime(ce-ce.getMilliseconds()-ce.getSeconds()*r)},function(ce,ze){ce.setTime(+ce+ze*o)},function(ce,ze){return(ze-ce)/o},function(ce){return ce.getMinutes()}),v=h.range,p=M(function(ce){ce.setTime(ce-ce.getMilliseconds()-ce.getSeconds()*r-ce.getMinutes()*o)},function(ce,ze){ce.setTime(+ce+ze*a)},function(ce,ze){return(ze-ce)/a},function(ce){return ce.getHours()}),T=p.range,l=M(function(ce){ce.setHours(0,0,0,0)},function(ce,ze){ce.setDate(ce.getDate()+ze)},function(ce,ze){return(ze-ce-(ze.getTimezoneOffset()-ce.getTimezoneOffset())*o)/i},function(ce){return ce.getDate()-1}),_=l.range;function w(ce){return M(function(ze){ze.setDate(ze.getDate()-(ze.getDay()+7-ce)%7),ze.setHours(0,0,0,0)},function(ze,tt){ze.setDate(ze.getDate()+tt*7)},function(ze,tt){return(tt-ze-(tt.getTimezoneOffset()-ze.getTimezoneOffset())*o)/n})}var S=w(0),E=w(1),m=w(2),b=w(3),d=w(4),u=w(5),y=w(6),f=S.range,P=E.range,L=m.range,z=b.range,F=d.range,B=u.range,O=y.range,I=M(function(ce){ce.setDate(1),ce.setHours(0,0,0,0)},function(ce,ze){ce.setMonth(ce.getMonth()+ze)},function(ce,ze){return ze.getMonth()-ce.getMonth()+(ze.getFullYear()-ce.getFullYear())*12},function(ce){return ce.getMonth()}),N=I.range,U=M(function(ce){ce.setMonth(0,1),ce.setHours(0,0,0,0)},function(ce,ze){ce.setFullYear(ce.getFullYear()+ze)},function(ce,ze){return ze.getFullYear()-ce.getFullYear()},function(ce){return ce.getFullYear()});U.every=function(ce){return!isFinite(ce=Math.floor(ce))||!(ce>0)?null:M(function(ze){ze.setFullYear(Math.floor(ze.getFullYear()/ce)*ce),ze.setMonth(0,1),ze.setHours(0,0,0,0)},function(ze,tt){ze.setFullYear(ze.getFullYear()+tt*ce)})};var W=U.range,Q=M(function(ce){ce.setUTCSeconds(0,0)},function(ce,ze){ce.setTime(+ce+ze*o)},function(ce,ze){return(ze-ce)/o},function(ce){return ce.getUTCMinutes()}),ue=Q.range,se=M(function(ce){ce.setUTCMinutes(0,0,0)},function(ce,ze){ce.setTime(+ce+ze*a)},function(ce,ze){return(ze-ce)/a},function(ce){return ce.getUTCHours()}),he=se.range,G=M(function(ce){ce.setUTCHours(0,0,0,0)},function(ce,ze){ce.setUTCDate(ce.getUTCDate()+ze)},function(ce,ze){return(ze-ce)/i},function(ce){return ce.getUTCDate()-1}),$=G.range;function J(ce){return M(function(ze){ze.setUTCDate(ze.getUTCDate()-(ze.getUTCDay()+7-ce)%7),ze.setUTCHours(0,0,0,0)},function(ze,tt){ze.setUTCDate(ze.getUTCDate()+tt*7)},function(ze,tt){return(tt-ze)/n})}var Z=J(0),re=J(1),ne=J(2),j=J(3),ee=J(4),ie=J(5),fe=J(6),be=Z.range,Ae=re.range,Be=ne.range,Ie=j.range,Ze=ee.range,at=ie.range,it=fe.range,et=M(function(ce){ce.setUTCDate(1),ce.setUTCHours(0,0,0,0)},function(ce,ze){ce.setUTCMonth(ce.getUTCMonth()+ze)},function(ce,ze){return ze.getUTCMonth()-ce.getUTCMonth()+(ze.getUTCFullYear()-ce.getUTCFullYear())*12},function(ce){return ce.getUTCMonth()}),lt=et.range,Me=M(function(ce){ce.setUTCMonth(0,1),ce.setUTCHours(0,0,0,0)},function(ce,ze){ce.setUTCFullYear(ce.getUTCFullYear()+ze)},function(ce,ze){return ze.getUTCFullYear()-ce.getUTCFullYear()},function(ce){return ce.getUTCFullYear()});Me.every=function(ce){return!isFinite(ce=Math.floor(ce))||!(ce>0)?null:M(function(ze){ze.setUTCFullYear(Math.floor(ze.getUTCFullYear()/ce)*ce),ze.setUTCMonth(0,1),ze.setUTCHours(0,0,0,0)},function(ze,tt){ze.setUTCFullYear(ze.getUTCFullYear()+tt*ce)})};var ge=Me.range;g.timeDay=l,g.timeDays=_,g.timeFriday=u,g.timeFridays=B,g.timeHour=p,g.timeHours=T,g.timeInterval=M,g.timeMillisecond=e,g.timeMilliseconds=t,g.timeMinute=h,g.timeMinutes=v,g.timeMonday=E,g.timeMondays=P,g.timeMonth=I,g.timeMonths=N,g.timeSaturday=y,g.timeSaturdays=O,g.timeSecond=s,g.timeSeconds=c,g.timeSunday=S,g.timeSundays=f,g.timeThursday=d,g.timeThursdays=F,g.timeTuesday=m,g.timeTuesdays=L,g.timeWednesday=b,g.timeWednesdays=z,g.timeWeek=S,g.timeWeeks=f,g.timeYear=U,g.timeYears=W,g.utcDay=G,g.utcDays=$,g.utcFriday=ie,g.utcFridays=at,g.utcHour=se,g.utcHours=he,g.utcMillisecond=e,g.utcMilliseconds=t,g.utcMinute=Q,g.utcMinutes=ue,g.utcMonday=re,g.utcMondays=Ae,g.utcMonth=et,g.utcMonths=lt,g.utcSaturday=fe,g.utcSaturdays=it,g.utcSecond=s,g.utcSeconds=c,g.utcSunday=Z,g.utcSundays=be,g.utcThursday=ee,g.utcThursdays=Ze,g.utcTuesday=ne,g.utcTuesdays=Be,g.utcWednesday=j,g.utcWednesdays=Ie,g.utcWeek=Z,g.utcWeeks=be,g.utcYear=Me,g.utcYears=ge,Object.defineProperty(g,"__esModule",{value:!0})})}}),Np=Ye({"node_modules/d3-time-format/dist/d3-time-format.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X,$p()):(g=g||self,x(g.d3=g.d3||{},g.d3))})(X,function(g,x){"use strict";function A(Fe){if(0<=Fe.y&&Fe.y<100){var Ke=new Date(-1,Fe.m,Fe.d,Fe.H,Fe.M,Fe.S,Fe.L);return Ke.setFullYear(Fe.y),Ke}return new Date(Fe.y,Fe.m,Fe.d,Fe.H,Fe.M,Fe.S,Fe.L)}function M(Fe){if(0<=Fe.y&&Fe.y<100){var Ke=new Date(Date.UTC(-1,Fe.m,Fe.d,Fe.H,Fe.M,Fe.S,Fe.L));return Ke.setUTCFullYear(Fe.y),Ke}return new Date(Date.UTC(Fe.y,Fe.m,Fe.d,Fe.H,Fe.M,Fe.S,Fe.L))}function e(Fe,Ke,Ne){return{y:Fe,m:Ke,d:Ne,H:0,M:0,S:0,L:0}}function t(Fe){var Ke=Fe.dateTime,Ne=Fe.date,Ee=Fe.time,Ve=Fe.periods,ke=Fe.days,Te=Fe.shortDays,Le=Fe.months,rt=Fe.shortMonths,dt=c(Ve),xt=h(Ve),It=c(ke),Bt=h(ke),Gt=c(Te),Kt=h(Te),sr=c(Le),sa=h(Le),Aa=c(rt),La=h(rt),ka={a:Fa,A:qa,b:ya,B:$a,c:null,d:I,e:I,f:ue,H:N,I:U,j:W,L:Q,m:se,M:he,p:mt,q:gt,Q:St,s:Ot,S:G,u:$,U:J,V:Z,w:re,W:ne,x:null,X:null,y:j,Y:ee,Z:ie,"%":Ct},Ga={a:Er,A:kr,b:br,B:Tr,c:null,d:fe,e:fe,f:Ze,H:be,I:Ae,j:Be,L:Ie,m:at,M:it,p:Mr,q:Fr,Q:St,s:Ot,S:et,u:lt,U:Me,V:ge,w:ce,W:ze,x:null,X:null,y:tt,Y:nt,Z:Qe,"%":Ct},Ma={a:Vt,A:Ut,b:xr,B:Zr,c:pa,d,e:d,f:z,H:y,I:y,j:u,L,m:b,M:f,p:zt,q:m,Q:B,s:O,S:P,u:p,U:T,V:l,w:v,W:_,x:Xr,X:Ea,y:S,Y:w,Z:E,"%":F};ka.x=Ua(Ne,ka),ka.X=Ua(Ee,ka),ka.c=Ua(Ke,ka),Ga.x=Ua(Ne,Ga),Ga.X=Ua(Ee,Ga),Ga.c=Ua(Ke,Ga);function Ua(Lr,Jr){return function(oa){var ca=[],kt=-1,ir=0,mr=Lr.length,$r,ma,Ba;for(oa instanceof Date||(oa=new Date(+oa));++kt53)return null;"w"in ca||(ca.w=1),"Z"in ca?(ir=M(e(ca.y,0,1)),mr=ir.getUTCDay(),ir=mr>4||mr===0?x.utcMonday.ceil(ir):x.utcMonday(ir),ir=x.utcDay.offset(ir,(ca.V-1)*7),ca.y=ir.getUTCFullYear(),ca.m=ir.getUTCMonth(),ca.d=ir.getUTCDate()+(ca.w+6)%7):(ir=A(e(ca.y,0,1)),mr=ir.getDay(),ir=mr>4||mr===0?x.timeMonday.ceil(ir):x.timeMonday(ir),ir=x.timeDay.offset(ir,(ca.V-1)*7),ca.y=ir.getFullYear(),ca.m=ir.getMonth(),ca.d=ir.getDate()+(ca.w+6)%7)}else("W"in ca||"U"in ca)&&("w"in ca||(ca.w="u"in ca?ca.u%7:"W"in ca?1:0),mr="Z"in ca?M(e(ca.y,0,1)).getUTCDay():A(e(ca.y,0,1)).getDay(),ca.m=0,ca.d="W"in ca?(ca.w+6)%7+ca.W*7-(mr+5)%7:ca.w+ca.U*7-(mr+6)%7);return"Z"in ca?(ca.H+=ca.Z/100|0,ca.M+=ca.Z%100,M(ca)):A(ca)}}function Wt(Lr,Jr,oa,ca){for(var kt=0,ir=Jr.length,mr=oa.length,$r,ma;kt=mr)return-1;if($r=Jr.charCodeAt(kt++),$r===37){if($r=Jr.charAt(kt++),ma=Ma[$r in r?Jr.charAt(kt++):$r],!ma||(ca=ma(Lr,oa,ca))<0)return-1}else if($r!=oa.charCodeAt(ca++))return-1}return ca}function zt(Lr,Jr,oa){var ca=dt.exec(Jr.slice(oa));return ca?(Lr.p=xt[ca[0].toLowerCase()],oa+ca[0].length):-1}function Vt(Lr,Jr,oa){var ca=Gt.exec(Jr.slice(oa));return ca?(Lr.w=Kt[ca[0].toLowerCase()],oa+ca[0].length):-1}function Ut(Lr,Jr,oa){var ca=It.exec(Jr.slice(oa));return ca?(Lr.w=Bt[ca[0].toLowerCase()],oa+ca[0].length):-1}function xr(Lr,Jr,oa){var ca=Aa.exec(Jr.slice(oa));return ca?(Lr.m=La[ca[0].toLowerCase()],oa+ca[0].length):-1}function Zr(Lr,Jr,oa){var ca=sr.exec(Jr.slice(oa));return ca?(Lr.m=sa[ca[0].toLowerCase()],oa+ca[0].length):-1}function pa(Lr,Jr,oa){return Wt(Lr,Ke,Jr,oa)}function Xr(Lr,Jr,oa){return Wt(Lr,Ne,Jr,oa)}function Ea(Lr,Jr,oa){return Wt(Lr,Ee,Jr,oa)}function Fa(Lr){return Te[Lr.getDay()]}function qa(Lr){return ke[Lr.getDay()]}function ya(Lr){return rt[Lr.getMonth()]}function $a(Lr){return Le[Lr.getMonth()]}function mt(Lr){return Ve[+(Lr.getHours()>=12)]}function gt(Lr){return 1+~~(Lr.getMonth()/3)}function Er(Lr){return Te[Lr.getUTCDay()]}function kr(Lr){return ke[Lr.getUTCDay()]}function br(Lr){return rt[Lr.getUTCMonth()]}function Tr(Lr){return Le[Lr.getUTCMonth()]}function Mr(Lr){return Ve[+(Lr.getUTCHours()>=12)]}function Fr(Lr){return 1+~~(Lr.getUTCMonth()/3)}return{format:function(Lr){var Jr=Ua(Lr+="",ka);return Jr.toString=function(){return Lr},Jr},parse:function(Lr){var Jr=ni(Lr+="",!1);return Jr.toString=function(){return Lr},Jr},utcFormat:function(Lr){var Jr=Ua(Lr+="",Ga);return Jr.toString=function(){return Lr},Jr},utcParse:function(Lr){var Jr=ni(Lr+="",!0);return Jr.toString=function(){return Lr},Jr}}}var r={"-":"",_:" ",0:"0"},o=/^\s*\d+/,a=/^%/,i=/[\\^$*+?|[\]().{}]/g;function n(Fe,Ke,Ne){var Ee=Fe<0?"-":"",Ve=(Ee?-Fe:Fe)+"",ke=Ve.length;return Ee+(ke68?1900:2e3),Ne+Ee[0].length):-1}function E(Fe,Ke,Ne){var Ee=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(Ke.slice(Ne,Ne+6));return Ee?(Fe.Z=Ee[1]?0:-(Ee[2]+(Ee[3]||"00")),Ne+Ee[0].length):-1}function m(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+1));return Ee?(Fe.q=Ee[0]*3-3,Ne+Ee[0].length):-1}function b(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+2));return Ee?(Fe.m=Ee[0]-1,Ne+Ee[0].length):-1}function d(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+2));return Ee?(Fe.d=+Ee[0],Ne+Ee[0].length):-1}function u(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+3));return Ee?(Fe.m=0,Fe.d=+Ee[0],Ne+Ee[0].length):-1}function y(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+2));return Ee?(Fe.H=+Ee[0],Ne+Ee[0].length):-1}function f(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+2));return Ee?(Fe.M=+Ee[0],Ne+Ee[0].length):-1}function P(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+2));return Ee?(Fe.S=+Ee[0],Ne+Ee[0].length):-1}function L(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+3));return Ee?(Fe.L=+Ee[0],Ne+Ee[0].length):-1}function z(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne,Ne+6));return Ee?(Fe.L=Math.floor(Ee[0]/1e3),Ne+Ee[0].length):-1}function F(Fe,Ke,Ne){var Ee=a.exec(Ke.slice(Ne,Ne+1));return Ee?Ne+Ee[0].length:-1}function B(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne));return Ee?(Fe.Q=+Ee[0],Ne+Ee[0].length):-1}function O(Fe,Ke,Ne){var Ee=o.exec(Ke.slice(Ne));return Ee?(Fe.s=+Ee[0],Ne+Ee[0].length):-1}function I(Fe,Ke){return n(Fe.getDate(),Ke,2)}function N(Fe,Ke){return n(Fe.getHours(),Ke,2)}function U(Fe,Ke){return n(Fe.getHours()%12||12,Ke,2)}function W(Fe,Ke){return n(1+x.timeDay.count(x.timeYear(Fe),Fe),Ke,3)}function Q(Fe,Ke){return n(Fe.getMilliseconds(),Ke,3)}function ue(Fe,Ke){return Q(Fe,Ke)+"000"}function se(Fe,Ke){return n(Fe.getMonth()+1,Ke,2)}function he(Fe,Ke){return n(Fe.getMinutes(),Ke,2)}function G(Fe,Ke){return n(Fe.getSeconds(),Ke,2)}function $(Fe){var Ke=Fe.getDay();return Ke===0?7:Ke}function J(Fe,Ke){return n(x.timeSunday.count(x.timeYear(Fe)-1,Fe),Ke,2)}function Z(Fe,Ke){var Ne=Fe.getDay();return Fe=Ne>=4||Ne===0?x.timeThursday(Fe):x.timeThursday.ceil(Fe),n(x.timeThursday.count(x.timeYear(Fe),Fe)+(x.timeYear(Fe).getDay()===4),Ke,2)}function re(Fe){return Fe.getDay()}function ne(Fe,Ke){return n(x.timeMonday.count(x.timeYear(Fe)-1,Fe),Ke,2)}function j(Fe,Ke){return n(Fe.getFullYear()%100,Ke,2)}function ee(Fe,Ke){return n(Fe.getFullYear()%1e4,Ke,4)}function ie(Fe){var Ke=Fe.getTimezoneOffset();return(Ke>0?"-":(Ke*=-1,"+"))+n(Ke/60|0,"0",2)+n(Ke%60,"0",2)}function fe(Fe,Ke){return n(Fe.getUTCDate(),Ke,2)}function be(Fe,Ke){return n(Fe.getUTCHours(),Ke,2)}function Ae(Fe,Ke){return n(Fe.getUTCHours()%12||12,Ke,2)}function Be(Fe,Ke){return n(1+x.utcDay.count(x.utcYear(Fe),Fe),Ke,3)}function Ie(Fe,Ke){return n(Fe.getUTCMilliseconds(),Ke,3)}function Ze(Fe,Ke){return Ie(Fe,Ke)+"000"}function at(Fe,Ke){return n(Fe.getUTCMonth()+1,Ke,2)}function it(Fe,Ke){return n(Fe.getUTCMinutes(),Ke,2)}function et(Fe,Ke){return n(Fe.getUTCSeconds(),Ke,2)}function lt(Fe){var Ke=Fe.getUTCDay();return Ke===0?7:Ke}function Me(Fe,Ke){return n(x.utcSunday.count(x.utcYear(Fe)-1,Fe),Ke,2)}function ge(Fe,Ke){var Ne=Fe.getUTCDay();return Fe=Ne>=4||Ne===0?x.utcThursday(Fe):x.utcThursday.ceil(Fe),n(x.utcThursday.count(x.utcYear(Fe),Fe)+(x.utcYear(Fe).getUTCDay()===4),Ke,2)}function ce(Fe){return Fe.getUTCDay()}function ze(Fe,Ke){return n(x.utcMonday.count(x.utcYear(Fe)-1,Fe),Ke,2)}function tt(Fe,Ke){return n(Fe.getUTCFullYear()%100,Ke,2)}function nt(Fe,Ke){return n(Fe.getUTCFullYear()%1e4,Ke,4)}function Qe(){return"+0000"}function Ct(){return"%"}function St(Fe){return+Fe}function Ot(Fe){return Math.floor(+Fe/1e3)}var jt;ur({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function ur(Fe){return jt=t(Fe),g.timeFormat=jt.format,g.timeParse=jt.parse,g.utcFormat=jt.utcFormat,g.utcParse=jt.utcParse,jt}var ar="%Y-%m-%dT%H:%M:%S.%LZ";function Cr(Fe){return Fe.toISOString()}var vr=Date.prototype.toISOString?Cr:g.utcFormat(ar);function _r(Fe){var Ke=new Date(Fe);return isNaN(Ke)?null:Ke}var yt=+new Date("2000-01-01T00:00:00.000Z")?_r:g.utcParse(ar);g.isoFormat=vr,g.isoParse=yt,g.timeFormatDefaultLocale=ur,g.timeFormatLocale=t,Object.defineProperty(g,"__esModule",{value:!0})})}}),Zy=Ye({"node_modules/d3-format/dist/d3-format.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X):(g=typeof globalThis<"u"?globalThis:g||self,x(g.d3=g.d3||{}))})(X,function(g){"use strict";function x(b){return Math.abs(b=Math.round(b))>=1e21?b.toLocaleString("en").replace(/,/g,""):b.toString(10)}function A(b,d){if((u=(b=d?b.toExponential(d-1):b.toExponential()).indexOf("e"))<0)return null;var u,y=b.slice(0,u);return[y.length>1?y[0]+y.slice(2):y,+b.slice(u+1)]}function M(b){return b=A(Math.abs(b)),b?b[1]:NaN}function e(b,d){return function(u,y){for(var f=u.length,P=[],L=0,z=b[0],F=0;f>0&&z>0&&(F+z+1>y&&(z=Math.max(1,y-F)),P.push(u.substring(f-=z,f+z)),!((F+=z+1)>y));)z=b[L=(L+1)%b.length];return P.reverse().join(d)}}function t(b){return function(d){return d.replace(/[0-9]/g,function(u){return b[+u]})}}var r=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function o(b){if(!(d=r.exec(b)))throw new Error("invalid format: "+b);var d;return new a({fill:d[1],align:d[2],sign:d[3],symbol:d[4],zero:d[5],width:d[6],comma:d[7],precision:d[8]&&d[8].slice(1),trim:d[9],type:d[10]})}o.prototype=a.prototype;function a(b){this.fill=b.fill===void 0?" ":b.fill+"",this.align=b.align===void 0?">":b.align+"",this.sign=b.sign===void 0?"-":b.sign+"",this.symbol=b.symbol===void 0?"":b.symbol+"",this.zero=!!b.zero,this.width=b.width===void 0?void 0:+b.width,this.comma=!!b.comma,this.precision=b.precision===void 0?void 0:+b.precision,this.trim=!!b.trim,this.type=b.type===void 0?"":b.type+""}a.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function i(b){e:for(var d=b.length,u=1,y=-1,f;u0&&(y=0);break}return y>0?b.slice(0,y)+b.slice(f+1):b}var n;function s(b,d){var u=A(b,d);if(!u)return b+"";var y=u[0],f=u[1],P=f-(n=Math.max(-8,Math.min(8,Math.floor(f/3)))*3)+1,L=y.length;return P===L?y:P>L?y+new Array(P-L+1).join("0"):P>0?y.slice(0,P)+"."+y.slice(P):"0."+new Array(1-P).join("0")+A(b,Math.max(0,d+P-1))[0]}function c(b,d){var u=A(b,d);if(!u)return b+"";var y=u[0],f=u[1];return f<0?"0."+new Array(-f).join("0")+y:y.length>f+1?y.slice(0,f+1)+"."+y.slice(f+1):y+new Array(f-y.length+2).join("0")}var h={"%":function(b,d){return(b*100).toFixed(d)},b:function(b){return Math.round(b).toString(2)},c:function(b){return b+""},d:x,e:function(b,d){return b.toExponential(d)},f:function(b,d){return b.toFixed(d)},g:function(b,d){return b.toPrecision(d)},o:function(b){return Math.round(b).toString(8)},p:function(b,d){return c(b*100,d)},r:c,s,X:function(b){return Math.round(b).toString(16).toUpperCase()},x:function(b){return Math.round(b).toString(16)}};function v(b){return b}var p=Array.prototype.map,T=["y","z","a","f","p","n","\xB5","m","","k","M","G","T","P","E","Z","Y"];function l(b){var d=b.grouping===void 0||b.thousands===void 0?v:e(p.call(b.grouping,Number),b.thousands+""),u=b.currency===void 0?"":b.currency[0]+"",y=b.currency===void 0?"":b.currency[1]+"",f=b.decimal===void 0?".":b.decimal+"",P=b.numerals===void 0?v:t(p.call(b.numerals,String)),L=b.percent===void 0?"%":b.percent+"",z=b.minus===void 0?"-":b.minus+"",F=b.nan===void 0?"NaN":b.nan+"";function B(I){I=o(I);var N=I.fill,U=I.align,W=I.sign,Q=I.symbol,ue=I.zero,se=I.width,he=I.comma,G=I.precision,$=I.trim,J=I.type;J==="n"?(he=!0,J="g"):h[J]||(G===void 0&&(G=12),$=!0,J="g"),(ue||N==="0"&&U==="=")&&(ue=!0,N="0",U="=");var Z=Q==="$"?u:Q==="#"&&/[boxX]/.test(J)?"0"+J.toLowerCase():"",re=Q==="$"?y:/[%p]/.test(J)?L:"",ne=h[J],j=/[defgprs%]/.test(J);G=G===void 0?6:/[gprs]/.test(J)?Math.max(1,Math.min(21,G)):Math.max(0,Math.min(20,G));function ee(ie){var fe=Z,be=re,Ae,Be,Ie;if(J==="c")be=ne(ie)+be,ie="";else{ie=+ie;var Ze=ie<0||1/ie<0;if(ie=isNaN(ie)?F:ne(Math.abs(ie),G),$&&(ie=i(ie)),Ze&&+ie==0&&W!=="+"&&(Ze=!1),fe=(Ze?W==="("?W:z:W==="-"||W==="("?"":W)+fe,be=(J==="s"?T[8+n/3]:"")+be+(Ze&&W==="("?")":""),j){for(Ae=-1,Be=ie.length;++AeIe||Ie>57){be=(Ie===46?f+ie.slice(Ae+1):ie.slice(Ae))+be,ie=ie.slice(0,Ae);break}}}he&&!ue&&(ie=d(ie,1/0));var at=fe.length+ie.length+be.length,it=at>1)+fe+ie+be+it.slice(at);break;default:ie=it+fe+ie+be;break}return P(ie)}return ee.toString=function(){return I+""},ee}function O(I,N){var U=B((I=o(I),I.type="f",I)),W=Math.max(-8,Math.min(8,Math.floor(M(N)/3)))*3,Q=Math.pow(10,-W),ue=T[8+W/3];return function(se){return U(Q*se)+ue}}return{format:B,formatPrefix:O}}var _;w({decimal:".",thousands:",",grouping:[3],currency:["$",""],minus:"-"});function w(b){return _=l(b),g.format=_.format,g.formatPrefix=_.formatPrefix,_}function S(b){return Math.max(0,-M(Math.abs(b)))}function E(b,d){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(M(d)/3)))*3-M(Math.abs(b)))}function m(b,d){return b=Math.abs(b),d=Math.abs(d)-b,Math.max(0,M(d)-M(b))+1}g.FormatSpecifier=a,g.formatDefaultLocale=w,g.formatLocale=l,g.formatSpecifier=o,g.precisionFixed=S,g.precisionPrefix=E,g.precisionRound=m,Object.defineProperty(g,"__esModule",{value:!0})})}}),aF=Ye({"node_modules/is-string-blank/index.js"(X,H){"use strict";H.exports=function(g){for(var x=g.length,A,M=0;M13)&&A!==32&&A!==133&&A!==160&&A!==5760&&A!==6158&&(A<8192||A>8205)&&A!==8232&&A!==8233&&A!==8239&&A!==8287&&A!==8288&&A!==12288&&A!==65279)return!1;return!0}}}),jo=Ye({"node_modules/fast-isnumeric/index.js"(X,H){"use strict";var g=aF();H.exports=function(x){var A=typeof x;if(A==="string"){var M=x;if(x=+x,x===0&&g(M))return!1}else if(A!=="number")return!1;return x-x<1}}}),ks=Ye({"src/constants/numerical.js"(X,H){"use strict";H.exports={BADNUM:void 0,FP_SAFE:Number.MAX_VALUE*1e-4,ONEMAXYEAR:316224e5,ONEAVGYEAR:315576e5,ONEMINYEAR:31536e6,ONEMAXQUARTER:79488e5,ONEAVGQUARTER:78894e5,ONEMINQUARTER:76896e5,ONEMAXMONTH:26784e5,ONEAVGMONTH:26298e5,ONEMINMONTH:24192e5,ONEWEEK:6048e5,ONEDAY:864e5,ONEHOUR:36e5,ONEMIN:6e4,ONESEC:1e3,ONEMILLI:1,ONEMICROSEC:.001,EPOCHJD:24405875e-1,ALMOST_EQUAL:1-1e-6,LOG_CLIP:10,MINUS_SIGN:"\u2212"}}}),XA=Ye({"node_modules/base64-arraybuffer/dist/base64-arraybuffer.umd.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X):(g=typeof globalThis<"u"?globalThis:g||self,x(g["base64-arraybuffer"]={}))})(X,function(g){"use strict";for(var x="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=typeof Uint8Array>"u"?[]:new Uint8Array(256),M=0;M>2],n+=x[(o[a]&3)<<4|o[a+1]>>4],n+=x[(o[a+1]&15)<<2|o[a+2]>>6],n+=x[o[a+2]&63];return i%3===2?n=n.substring(0,n.length-1)+"=":i%3===1&&(n=n.substring(0,n.length-2)+"=="),n},t=function(r){var o=r.length*.75,a=r.length,i,n=0,s,c,h,v;r[r.length-1]==="="&&(o--,r[r.length-2]==="="&&o--);var p=new ArrayBuffer(o),T=new Uint8Array(p);for(i=0;i>4,T[n++]=(c&15)<<4|h>>2,T[n++]=(h&3)<<6|v&63;return p};g.decode=t,g.encode=e,Object.defineProperty(g,"__esModule",{value:!0})})}}),Zv=Ye({"src/lib/is_plain_object.js"(X,H){"use strict";H.exports=function(x){return window&&window.process&&window.process.versions?Object.prototype.toString.call(x)==="[object Object]":Object.prototype.toString.call(x)==="[object Object]"&&Object.getPrototypeOf(x).hasOwnProperty("hasOwnProperty")}}}),xp=Ye({"src/lib/array.js"(X){"use strict";var H=XA().decode,g=Zv(),x=Array.isArray,A=ArrayBuffer,M=DataView;function e(s){return A.isView(s)&&!(s instanceof M)}X.isTypedArray=e;function t(s){return x(s)||e(s)}X.isArrayOrTypedArray=t;function r(s){return!t(s[0])}X.isArray1D=r,X.ensureArray=function(s,c){return x(s)||(s=[]),s.length=c,s};var o={u1c:typeof Uint8ClampedArray>"u"?void 0:Uint8ClampedArray,i1:typeof Int8Array>"u"?void 0:Int8Array,u1:typeof Uint8Array>"u"?void 0:Uint8Array,i2:typeof Int16Array>"u"?void 0:Int16Array,u2:typeof Uint16Array>"u"?void 0:Uint16Array,i4:typeof Int32Array>"u"?void 0:Int32Array,u4:typeof Uint32Array>"u"?void 0:Uint32Array,f4:typeof Float32Array>"u"?void 0:Float32Array,f8:typeof Float64Array>"u"?void 0:Float64Array};o.uint8c=o.u1c,o.uint8=o.u1,o.int8=o.i1,o.uint16=o.u2,o.int16=o.i2,o.uint32=o.u4,o.int32=o.i4,o.float32=o.f4,o.float64=o.f8;function a(s){return s.constructor===ArrayBuffer}X.isArrayBuffer=a,X.decodeTypedArraySpec=function(s){var c=[],h=i(s),v=h.dtype,p=o[v];if(!p)throw new Error('Error in dtype: "'+v+'"');var T=p.BYTES_PER_ELEMENT,l=h.bdata;a(l)||(l=H(l));var _=h.shape===void 0?[l.byteLength/T]:(""+h.shape).split(",");_.reverse();var w=_.length,S,E,m=+_[0],b=T*m,d=0;if(w===1)c=new p(l);else if(w===2)for(S=+_[1],E=0;E2)return p[S]=p[S]|e,_.set(w,null);if(l){for(c=S;c0)return Math.log(A)/Math.LN10;var e=Math.log(Math.min(M[0],M[1]))/Math.LN10;return g(e)||(e=Math.log(Math.max(M[0],M[1]))/Math.LN10-6),e}}}),oF=Ye({"src/lib/relink_private.js"(X,H){"use strict";var g=xp().isArrayOrTypedArray,x=Zv();H.exports=function A(M,e){for(var t in e){var r=e[t],o=M[t];if(o!==r)if(t.charAt(0)==="_"||typeof r=="function"){if(t in M)continue;M[t]=r}else if(g(r)&&g(o)&&x(r[0])){if(t==="customdata"||t==="ids")continue;for(var a=Math.min(r.length,o.length),i=0;iM/2?A-Math.round(A/M)*M:A}H.exports={mod:g,modHalf:x}}}),bh=Ye({"node_modules/tinycolor2/tinycolor.js"(X,H){(function(g){var x=/^\s+/,A=/\s+$/,M=0,e=g.round,t=g.min,r=g.max,o=g.random;function a(j,ee){if(j=j||"",ee=ee||{},j instanceof a)return j;if(!(this instanceof a))return new a(j,ee);var ie=i(j);this._originalInput=j,this._r=ie.r,this._g=ie.g,this._b=ie.b,this._a=ie.a,this._roundA=e(100*this._a)/100,this._format=ee.format||ie.format,this._gradientType=ee.gradientType,this._r<1&&(this._r=e(this._r)),this._g<1&&(this._g=e(this._g)),this._b<1&&(this._b=e(this._b)),this._ok=ie.ok,this._tc_id=M++}a.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var j=this.toRgb();return(j.r*299+j.g*587+j.b*114)/1e3},getLuminance:function(){var j=this.toRgb(),ee,ie,fe,be,Ae,Be;return ee=j.r/255,ie=j.g/255,fe=j.b/255,ee<=.03928?be=ee/12.92:be=g.pow((ee+.055)/1.055,2.4),ie<=.03928?Ae=ie/12.92:Ae=g.pow((ie+.055)/1.055,2.4),fe<=.03928?Be=fe/12.92:Be=g.pow((fe+.055)/1.055,2.4),.2126*be+.7152*Ae+.0722*Be},setAlpha:function(j){return this._a=I(j),this._roundA=e(100*this._a)/100,this},toHsv:function(){var j=h(this._r,this._g,this._b);return{h:j.h*360,s:j.s,v:j.v,a:this._a}},toHsvString:function(){var j=h(this._r,this._g,this._b),ee=e(j.h*360),ie=e(j.s*100),fe=e(j.v*100);return this._a==1?"hsv("+ee+", "+ie+"%, "+fe+"%)":"hsva("+ee+", "+ie+"%, "+fe+"%, "+this._roundA+")"},toHsl:function(){var j=s(this._r,this._g,this._b);return{h:j.h*360,s:j.s,l:j.l,a:this._a}},toHslString:function(){var j=s(this._r,this._g,this._b),ee=e(j.h*360),ie=e(j.s*100),fe=e(j.l*100);return this._a==1?"hsl("+ee+", "+ie+"%, "+fe+"%)":"hsla("+ee+", "+ie+"%, "+fe+"%, "+this._roundA+")"},toHex:function(j){return p(this._r,this._g,this._b,j)},toHexString:function(j){return"#"+this.toHex(j)},toHex8:function(j){return T(this._r,this._g,this._b,this._a,j)},toHex8String:function(j){return"#"+this.toHex8(j)},toRgb:function(){return{r:e(this._r),g:e(this._g),b:e(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+e(this._r)+", "+e(this._g)+", "+e(this._b)+")":"rgba("+e(this._r)+", "+e(this._g)+", "+e(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:e(N(this._r,255)*100)+"%",g:e(N(this._g,255)*100)+"%",b:e(N(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+e(N(this._r,255)*100)+"%, "+e(N(this._g,255)*100)+"%, "+e(N(this._b,255)*100)+"%)":"rgba("+e(N(this._r,255)*100)+"%, "+e(N(this._g,255)*100)+"%, "+e(N(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:B[p(this._r,this._g,this._b,!0)]||!1},toFilter:function(j){var ee="#"+l(this._r,this._g,this._b,this._a),ie=ee,fe=this._gradientType?"GradientType = 1, ":"";if(j){var be=a(j);ie="#"+l(be._r,be._g,be._b,be._a)}return"progid:DXImageTransform.Microsoft.gradient("+fe+"startColorstr="+ee+",endColorstr="+ie+")"},toString:function(j){var ee=!!j;j=j||this._format;var ie=!1,fe=this._a<1&&this._a>=0,be=!ee&&fe&&(j==="hex"||j==="hex6"||j==="hex3"||j==="hex4"||j==="hex8"||j==="name");return be?j==="name"&&this._a===0?this.toName():this.toRgbString():(j==="rgb"&&(ie=this.toRgbString()),j==="prgb"&&(ie=this.toPercentageRgbString()),(j==="hex"||j==="hex6")&&(ie=this.toHexString()),j==="hex3"&&(ie=this.toHexString(!0)),j==="hex4"&&(ie=this.toHex8String(!0)),j==="hex8"&&(ie=this.toHex8String()),j==="name"&&(ie=this.toName()),j==="hsl"&&(ie=this.toHslString()),j==="hsv"&&(ie=this.toHsvString()),ie||this.toHexString())},clone:function(){return a(this.toString())},_applyModification:function(j,ee){var ie=j.apply(null,[this].concat([].slice.call(ee)));return this._r=ie._r,this._g=ie._g,this._b=ie._b,this.setAlpha(ie._a),this},lighten:function(){return this._applyModification(E,arguments)},brighten:function(){return this._applyModification(m,arguments)},darken:function(){return this._applyModification(b,arguments)},desaturate:function(){return this._applyModification(_,arguments)},saturate:function(){return this._applyModification(w,arguments)},greyscale:function(){return this._applyModification(S,arguments)},spin:function(){return this._applyModification(d,arguments)},_applyCombination:function(j,ee){return j.apply(null,[this].concat([].slice.call(ee)))},analogous:function(){return this._applyCombination(L,arguments)},complement:function(){return this._applyCombination(u,arguments)},monochromatic:function(){return this._applyCombination(z,arguments)},splitcomplement:function(){return this._applyCombination(P,arguments)},triad:function(){return this._applyCombination(y,arguments)},tetrad:function(){return this._applyCombination(f,arguments)}},a.fromRatio=function(j,ee){if(typeof j=="object"){var ie={};for(var fe in j)j.hasOwnProperty(fe)&&(fe==="a"?ie[fe]=j[fe]:ie[fe]=he(j[fe]));j=ie}return a(j,ee)};function i(j){var ee={r:0,g:0,b:0},ie=1,fe=null,be=null,Ae=null,Be=!1,Ie=!1;return typeof j=="string"&&(j=re(j)),typeof j=="object"&&(Z(j.r)&&Z(j.g)&&Z(j.b)?(ee=n(j.r,j.g,j.b),Be=!0,Ie=String(j.r).substr(-1)==="%"?"prgb":"rgb"):Z(j.h)&&Z(j.s)&&Z(j.v)?(fe=he(j.s),be=he(j.v),ee=v(j.h,fe,be),Be=!0,Ie="hsv"):Z(j.h)&&Z(j.s)&&Z(j.l)&&(fe=he(j.s),Ae=he(j.l),ee=c(j.h,fe,Ae),Be=!0,Ie="hsl"),j.hasOwnProperty("a")&&(ie=j.a)),ie=I(ie),{ok:Be,format:j.format||Ie,r:t(255,r(ee.r,0)),g:t(255,r(ee.g,0)),b:t(255,r(ee.b,0)),a:ie}}function n(j,ee,ie){return{r:N(j,255)*255,g:N(ee,255)*255,b:N(ie,255)*255}}function s(j,ee,ie){j=N(j,255),ee=N(ee,255),ie=N(ie,255);var fe=r(j,ee,ie),be=t(j,ee,ie),Ae,Be,Ie=(fe+be)/2;if(fe==be)Ae=Be=0;else{var Ze=fe-be;switch(Be=Ie>.5?Ze/(2-fe-be):Ze/(fe+be),fe){case j:Ae=(ee-ie)/Ze+(ee1&&(et-=1),et<1/6?at+(it-at)*6*et:et<1/2?it:et<2/3?at+(it-at)*(2/3-et)*6:at}if(ee===0)fe=be=Ae=ie;else{var Ie=ie<.5?ie*(1+ee):ie+ee-ie*ee,Ze=2*ie-Ie;fe=Be(Ze,Ie,j+1/3),be=Be(Ze,Ie,j),Ae=Be(Ze,Ie,j-1/3)}return{r:fe*255,g:be*255,b:Ae*255}}function h(j,ee,ie){j=N(j,255),ee=N(ee,255),ie=N(ie,255);var fe=r(j,ee,ie),be=t(j,ee,ie),Ae,Be,Ie=fe,Ze=fe-be;if(Be=fe===0?0:Ze/fe,fe==be)Ae=0;else{switch(fe){case j:Ae=(ee-ie)/Ze+(ee>1)+720)%360;--ee;)fe.h=(fe.h+be)%360,Ae.push(a(fe));return Ae}function z(j,ee){ee=ee||6;for(var ie=a(j).toHsv(),fe=ie.h,be=ie.s,Ae=ie.v,Be=[],Ie=1/ee;ee--;)Be.push(a({h:fe,s:be,v:Ae})),Ae=(Ae+Ie)%1;return Be}a.mix=function(j,ee,ie){ie=ie===0?0:ie||50;var fe=a(j).toRgb(),be=a(ee).toRgb(),Ae=ie/100,Be={r:(be.r-fe.r)*Ae+fe.r,g:(be.g-fe.g)*Ae+fe.g,b:(be.b-fe.b)*Ae+fe.b,a:(be.a-fe.a)*Ae+fe.a};return a(Be)},a.readability=function(j,ee){var ie=a(j),fe=a(ee);return(g.max(ie.getLuminance(),fe.getLuminance())+.05)/(g.min(ie.getLuminance(),fe.getLuminance())+.05)},a.isReadable=function(j,ee,ie){var fe=a.readability(j,ee),be,Ae;switch(Ae=!1,be=ne(ie),be.level+be.size){case"AAsmall":case"AAAlarge":Ae=fe>=4.5;break;case"AAlarge":Ae=fe>=3;break;case"AAAsmall":Ae=fe>=7;break}return Ae},a.mostReadable=function(j,ee,ie){var fe=null,be=0,Ae,Be,Ie,Ze;ie=ie||{},Be=ie.includeFallbackColors,Ie=ie.level,Ze=ie.size;for(var at=0;atbe&&(be=Ae,fe=a(ee[at]));return a.isReadable(j,fe,{level:Ie,size:Ze})||!Be?fe:(ie.includeFallbackColors=!1,a.mostReadable(j,["#fff","#000"],ie))};var F=a.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},B=a.hexNames=O(F);function O(j){var ee={};for(var ie in j)j.hasOwnProperty(ie)&&(ee[j[ie]]=ie);return ee}function I(j){return j=parseFloat(j),(isNaN(j)||j<0||j>1)&&(j=1),j}function N(j,ee){Q(j)&&(j="100%");var ie=ue(j);return j=t(ee,r(0,parseFloat(j))),ie&&(j=parseInt(j*ee,10)/100),g.abs(j-ee)<1e-6?1:j%ee/parseFloat(ee)}function U(j){return t(1,r(0,j))}function W(j){return parseInt(j,16)}function Q(j){return typeof j=="string"&&j.indexOf(".")!=-1&&parseFloat(j)===1}function ue(j){return typeof j=="string"&&j.indexOf("%")!=-1}function se(j){return j.length==1?"0"+j:""+j}function he(j){return j<=1&&(j=j*100+"%"),j}function G(j){return g.round(parseFloat(j)*255).toString(16)}function $(j){return W(j)/255}var J=function(){var j="[-\\+]?\\d+%?",ee="[-\\+]?\\d*\\.\\d+%?",ie="(?:"+ee+")|(?:"+j+")",fe="[\\s|\\(]+("+ie+")[,|\\s]+("+ie+")[,|\\s]+("+ie+")\\s*\\)?",be="[\\s|\\(]+("+ie+")[,|\\s]+("+ie+")[,|\\s]+("+ie+")[,|\\s]+("+ie+")\\s*\\)?";return{CSS_UNIT:new RegExp(ie),rgb:new RegExp("rgb"+fe),rgba:new RegExp("rgba"+be),hsl:new RegExp("hsl"+fe),hsla:new RegExp("hsla"+be),hsv:new RegExp("hsv"+fe),hsva:new RegExp("hsva"+be),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}}();function Z(j){return!!J.CSS_UNIT.exec(j)}function re(j){j=j.replace(x,"").replace(A,"").toLowerCase();var ee=!1;if(F[j])j=F[j],ee=!0;else if(j=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var ie;return(ie=J.rgb.exec(j))?{r:ie[1],g:ie[2],b:ie[3]}:(ie=J.rgba.exec(j))?{r:ie[1],g:ie[2],b:ie[3],a:ie[4]}:(ie=J.hsl.exec(j))?{h:ie[1],s:ie[2],l:ie[3]}:(ie=J.hsla.exec(j))?{h:ie[1],s:ie[2],l:ie[3],a:ie[4]}:(ie=J.hsv.exec(j))?{h:ie[1],s:ie[2],v:ie[3]}:(ie=J.hsva.exec(j))?{h:ie[1],s:ie[2],v:ie[3],a:ie[4]}:(ie=J.hex8.exec(j))?{r:W(ie[1]),g:W(ie[2]),b:W(ie[3]),a:$(ie[4]),format:ee?"name":"hex8"}:(ie=J.hex6.exec(j))?{r:W(ie[1]),g:W(ie[2]),b:W(ie[3]),format:ee?"name":"hex"}:(ie=J.hex4.exec(j))?{r:W(ie[1]+""+ie[1]),g:W(ie[2]+""+ie[2]),b:W(ie[3]+""+ie[3]),a:$(ie[4]+""+ie[4]),format:ee?"name":"hex8"}:(ie=J.hex3.exec(j))?{r:W(ie[1]+""+ie[1]),g:W(ie[2]+""+ie[2]),b:W(ie[3]+""+ie[3]),format:ee?"name":"hex"}:!1}function ne(j){var ee,ie;return j=j||{level:"AA",size:"small"},ee=(j.level||"AA").toUpperCase(),ie=(j.size||"small").toLowerCase(),ee!=="AA"&&ee!=="AAA"&&(ee="AA"),ie!=="small"&&ie!=="large"&&(ie="small"),{level:ee,size:ie}}typeof H<"u"&&H.exports?H.exports=a:window.tinycolor=a})(Math)}}),Oo=Ye({"src/lib/extend.js"(X){"use strict";var H=Zv(),g=Array.isArray;function x(M,e){var t,r;for(t=0;t=0)))return a;if(h===3)s[h]>1&&(s[h]=1);else if(s[h]>=1)return a}var v=Math.round(s[0]*255)+", "+Math.round(s[1]*255)+", "+Math.round(s[2]*255);return c?"rgba("+v+", "+s[3]+")":"rgb("+v+")"}}}),Xm=Ye({"src/constants/interactions.js"(X,H){"use strict";H.exports={SHOW_PLACEHOLDER:100,HIDE_PLACEHOLDER:1e3,DESELECTDIM:.2}}}),Ky=Ye({"src/lib/regex.js"(X){"use strict";X.counter=function(H,g,x,A){var M=(g||"")+(x?"":"$"),e=A===!1?"":"^";return H==="xy"?new RegExp(e+"x([2-9]|[1-9][0-9]+)?y([2-9]|[1-9][0-9]+)?"+M):new RegExp(e+H+"([2-9]|[1-9][0-9]+)?"+M)}}}),sF=Ye({"src/lib/coerce.js"(X){"use strict";var H=jo(),g=bh(),x=Oo().extendFlat,A=Pl(),M=Hg(),e=Fn(),t=Xm().DESELECTDIM,r=__(),o=Ky().counter,a=Xy().modHalf,i=xp().isArrayOrTypedArray,n=xp().isTypedArraySpec,s=xp().decodeTypedArraySpec;X.valObjectMeta={data_array:{coerceFunction:function(h,v,p){v.set(i(h)?h:n(h)?s(h):p)}},enumerated:{coerceFunction:function(h,v,p,T){T.coerceNumber&&(h=+h),T.values.indexOf(h)===-1?v.set(p):v.set(h)},validateFunction:function(h,v){v.coerceNumber&&(h=+h);for(var p=v.values,T=0;TT.max?v.set(p):v.set(+h)}},integer:{coerceFunction:function(h,v,p,T){if((T.extras||[]).indexOf(h)!==-1){v.set(h);return}n(h)&&(h=s(h)),h%1||!H(h)||T.min!==void 0&&hT.max?v.set(p):v.set(+h)}},string:{coerceFunction:function(h,v,p,T){if(typeof h!="string"){var l=typeof h=="number";T.strict===!0||!l?v.set(p):v.set(String(h))}else T.noBlank&&!h?v.set(p):v.set(h)}},color:{coerceFunction:function(h,v,p){n(h)&&(h=s(h)),g(h).isValid()?v.set(h):v.set(p)}},colorlist:{coerceFunction:function(h,v,p){function T(l){return g(l).isValid()}!Array.isArray(h)||!h.length?v.set(p):h.every(T)?v.set(h):v.set(p)}},colorscale:{coerceFunction:function(h,v,p){v.set(M.get(h,p))}},angle:{coerceFunction:function(h,v,p){n(h)&&(h=s(h)),h==="auto"?v.set("auto"):H(h)?v.set(a(+h,360)):v.set(p)}},subplotid:{coerceFunction:function(h,v,p,T){var l=T.regex||o(p);if(typeof h=="string"&&l.test(h)){v.set(h);return}v.set(p)},validateFunction:function(h,v){var p=v.dflt;return h===p?!0:typeof h!="string"?!1:!!o(p).test(h)}},flaglist:{coerceFunction:function(h,v,p,T){if((T.extras||[]).indexOf(h)!==-1){v.set(h);return}if(typeof h!="string"){v.set(p);return}for(var l=h.split("+"),_=0;_/g),h=0;h1){var e=["LOG:"];for(M=0;M1){var t=[];for(M=0;M"),"long")}},A.warn=function(){var M;if(g.logging>0){var e=["WARN:"];for(M=0;M0){var t=[];for(M=0;M"),"stick")}},A.error=function(){var M;if(g.logging>0){var e=["ERROR:"];for(M=0;M0){var t=[];for(M=0;M"),"stick")}}}}),f2=Ye({"src/lib/noop.js"(X,H){"use strict";H.exports=function(){}}}),KA=Ye({"src/lib/push_unique.js"(X,H){"use strict";H.exports=function(x,A){if(A instanceof RegExp){for(var M=A.toString(),e=0;e0){for(var r=[],o=0;o=l&&F<=_?F:e}if(typeof F!="string"&&typeof F!="number")return e;F=String(F);var U=p(B),W=F.charAt(0);U&&(W==="G"||W==="g")&&(F=F.substr(1),B="");var Q=U&&B.substr(0,7)==="chinese",ue=F.match(Q?h:c);if(!ue)return e;var se=ue[1],he=ue[3]||"1",G=Number(ue[5]||1),$=Number(ue[7]||0),J=Number(ue[9]||0),Z=Number(ue[11]||0);if(U){if(se.length===2)return e;se=Number(se);var re;try{var ne=n.getComponentMethod("calendars","getCal")(B);if(Q){var j=he.charAt(he.length-1)==="i";he=parseInt(he,10),re=ne.newDate(se,ne.toMonthIndex(se,he,j),G)}else re=ne.newDate(se,Number(he),G)}catch{return e}return re?(re.toJD()-i)*t+$*r+J*o+Z*a:e}se.length===2?se=(Number(se)+2e3-v)%100+v:se=Number(se),he-=1;var ee=new Date(Date.UTC(2e3,he,G,$,J));return ee.setUTCFullYear(se),ee.getUTCMonth()!==he||ee.getUTCDate()!==G?e:ee.getTime()+Z*a},l=X.MIN_MS=X.dateTime2ms("-9999"),_=X.MAX_MS=X.dateTime2ms("9999-12-31 23:59:59.9999"),X.isDateTime=function(F,B){return X.dateTime2ms(F,B)!==e};function w(F,B){return String(F+Math.pow(10,B)).substr(1)}var S=90*t,E=3*r,m=5*o;X.ms2DateTime=function(F,B,O){if(typeof F!="number"||!(F>=l&&F<=_))return e;B||(B=0);var I=Math.floor(A(F+.05,1)*10),N=Math.round(F-I/10),U,W,Q,ue,se,he;if(p(O)){var G=Math.floor(N/t)+i,$=Math.floor(A(F,t));try{U=n.getComponentMethod("calendars","getCal")(O).fromJD(G).formatDate("yyyy-mm-dd")}catch{U=s("G%Y-%m-%d")(new Date(N))}if(U.charAt(0)==="-")for(;U.length<11;)U="-0"+U.substr(1);else for(;U.length<10;)U="0"+U;W=B=l+t&&F<=_-t))return e;var B=Math.floor(A(F+.05,1)*10),O=new Date(Math.round(F-B/10)),I=H("%Y-%m-%d")(O),N=O.getHours(),U=O.getMinutes(),W=O.getSeconds(),Q=O.getUTCMilliseconds()*10+B;return b(I,N,U,W,Q)};function b(F,B,O,I,N){if((B||O||I||N)&&(F+=" "+w(B,2)+":"+w(O,2),(I||N)&&(F+=":"+w(I,2),N))){for(var U=4;N%10===0;)U-=1,N/=10;F+="."+w(N,U)}return F}X.cleanDate=function(F,B,O){if(F===e)return B;if(X.isJSDate(F)||typeof F=="number"&&isFinite(F)){if(p(O))return x.error("JS Dates and milliseconds are incompatible with world calendars",F),B;if(F=X.ms2DateTimeLocal(+F),!F&&B!==void 0)return B}else if(!X.isDateTime(F,O))return x.error("unrecognized date",F),B;return F};var d=/%\d?f/g,u=/%h/g,y={1:"1",2:"1",3:"2",4:"2"};function f(F,B,O,I){F=F.replace(d,function(U){var W=Math.min(+U.charAt(1)||6,6),Q=(B/1e3%1+2).toFixed(W).substr(2).replace(/0+$/,"")||"0";return Q});var N=new Date(Math.floor(B+.05));if(F=F.replace(u,function(){return y[O("%q")(N)]}),p(I))try{F=n.getComponentMethod("calendars","worldCalFmt")(F,B,I)}catch{return"Invalid"}return O(F)(N)}var P=[59,59.9,59.99,59.999,59.9999];function L(F,B){var O=A(F+.05,t),I=w(Math.floor(O/r),2)+":"+w(A(Math.floor(O/o),60),2);if(B!=="M"){g(B)||(B=0);var N=Math.min(A(F/a,60),P[B]),U=(100+N).toFixed(B).substr(1);B>0&&(U=U.replace(/0+$/,"").replace(/[\.]$/,"")),I+=":"+U}return I}X.formatDate=function(F,B,O,I,N,U){if(N=p(N)&&N,!B)if(O==="y")B=U.year;else if(O==="m")B=U.month;else if(O==="d")B=U.dayMonth+` +`+U.year;else return L(F,O)+` +`+f(U.dayMonthYear,F,I,N);return f(B,F,I,N)};var z=3*t;X.incrementMonth=function(F,B,O){O=p(O)&&O;var I=A(F,t);if(F=Math.round(F-I),O)try{var N=Math.round(F/t)+i,U=n.getComponentMethod("calendars","getCal")(O),W=U.fromJD(N);return B%12?U.add(W,B,"m"):U.add(W,B/12,"y"),(W.toJD()-i)*t+I}catch{x.error("invalid ms "+F+" in calendar "+O)}var Q=new Date(F+z);return Q.setUTCMonth(Q.getUTCMonth()+B)+I-z},X.findExactDates=function(F,B){for(var O=0,I=0,N=0,U=0,W,Q,ue=p(B)&&n.getComponentMethod("calendars","getCal")(B),se=0;se1?(i[c-1]-i[0])/(c-1):1,p,T;for(v>=0?T=n?e:t:T=n?o:r,a+=v*M*(n?-1:1)*(v>=0?1:-1);s90&&g.log("Long binary search..."),s-1};function e(a,i){return ai}function o(a,i){return a>=i}X.sorterAsc=function(a,i){return a-i},X.sorterDes=function(a,i){return i-a},X.distinctVals=function(a){var i=a.slice();i.sort(X.sorterAsc);var n;for(n=i.length-1;n>-1&&i[n]===A;n--);for(var s=i[n]-i[0]||1,c=s/(n||1)/1e4,h=[],v,p=0;p<=n;p++){var T=i[p],l=T-v;v===void 0?(h.push(T),v=T):l>c&&(s=Math.min(s,l),h.push(T),v=T)}return{vals:h,minDiff:s}},X.roundUp=function(a,i,n){for(var s=0,c=i.length-1,h,v=0,p=n?0:1,T=n?1:0,l=n?Math.ceil:Math.floor;s0&&(s=1),n&&s)return a.sort(i)}return s?a:a.reverse()},X.findIndexOfMin=function(a,i){i=i||x;for(var n=1/0,s,c=0;cM.length)&&(e=M.length),H(A)||(A=!1),g(M[0])){for(r=new Array(e),t=0;tx.length-1)return x[x.length-1];var M=A%1;return M*x[Math.ceil(A)]+(1-M)*x[Math.floor(A)]}}}),jF=Ye({"src/lib/angles.js"(X,H){"use strict";var g=Xy(),x=g.mod,A=g.modHalf,M=Math.PI,e=2*M;function t(T){return T/180*M}function r(T){return T/M*180}function o(T){return Math.abs(T[1]-T[0])>e-1e-14}function a(T,l){return A(l-T,e)}function i(T,l){return Math.abs(a(T,l))}function n(T,l){if(o(l))return!0;var _,w;l[0]w&&(w+=e);var S=x(T,e),E=S+e;return S>=_&&S<=w||E>=_&&E<=w}function s(T,l,_,w){if(!n(l,w))return!1;var S,E;return _[0]<_[1]?(S=_[0],E=_[1]):(S=_[1],E=_[0]),T>=S&&T<=E}function c(T,l,_,w,S,E,m){S=S||0,E=E||0;var b=o([_,w]),d,u,y,f,P;b?(d=0,u=M,y=e):_1/3&&g.x<2/3},X.isRightAnchor=function(g){return g.xanchor==="right"||g.xanchor==="auto"&&g.x>=2/3},X.isTopAnchor=function(g){return g.yanchor==="top"||g.yanchor==="auto"&&g.y>=2/3},X.isMiddleAnchor=function(g){return g.yanchor==="middle"||g.yanchor==="auto"&&g.y>1/3&&g.y<2/3},X.isBottomAnchor=function(g){return g.yanchor==="bottom"||g.yanchor==="auto"&&g.y<=1/3}}}),qF=Ye({"src/lib/geometry2d.js"(X){"use strict";var H=Xy().mod;X.segmentsIntersect=g;function g(t,r,o,a,i,n,s,c){var h=o-t,v=i-t,p=s-i,T=a-r,l=n-r,_=c-n,w=h*_-p*T;if(w===0)return null;var S=(v*_-p*l)/w,E=(v*T-h*l)/w;return E<0||E>1||S<0||S>1?null:{x:t+h*S,y:r+T*S}}X.segmentDistance=function(r,o,a,i,n,s,c,h){if(g(r,o,a,i,n,s,c,h))return 0;var v=a-r,p=i-o,T=c-n,l=h-s,_=v*v+p*p,w=T*T+l*l,S=Math.min(x(v,p,_,n-r,s-o),x(v,p,_,c-r,h-o),x(T,l,w,r-n,o-s),x(T,l,w,a-n,i-s));return Math.sqrt(S)};function x(t,r,o,a,i){var n=a*t+i*r;if(n<0)return a*a+i*i;if(n>o){var s=a-t,c=i-r;return s*s+c*c}else{var h=a*r-i*t;return h*h/o}}var A,M,e;X.getTextLocation=function(r,o,a,i){if((r!==M||i!==e)&&(A={},M=r,e=i),A[a])return A[a];var n=r.getPointAtLength(H(a-i/2,o)),s=r.getPointAtLength(H(a+i/2,o)),c=Math.atan((s.y-n.y)/(s.x-n.x)),h=r.getPointAtLength(H(a,o)),v=(h.x*4+n.x+s.x)/6,p=(h.y*4+n.y+s.y)/6,T={x:v,y:p,theta:c};return A[a]=T,T},X.clearLocationCache=function(){M=null},X.getVisibleSegment=function(r,o,a){var i=o.left,n=o.right,s=o.top,c=o.bottom,h=0,v=r.getTotalLength(),p=v,T,l;function _(S){var E=r.getPointAtLength(S);S===0?T=E:S===v&&(l=E);var m=E.xn?E.x-n:0,b=E.yc?E.y-c:0;return Math.sqrt(m*m+b*b)}for(var w=_(h);w;){if(h+=w+a,h>p)return;w=_(h)}for(w=_(p);w;){if(p-=w+a,h>p)return;w=_(p)}return{min:h,max:p,len:p-h,total:v,isClosed:h===0&&p===v&&Math.abs(T.x-l.x)<.1&&Math.abs(T.y-l.y)<.1}},X.findPointOnPath=function(r,o,a,i){i=i||{};for(var n=i.pathLength||r.getTotalLength(),s=i.tolerance||.001,c=i.iterationLimit||30,h=r.getPointAtLength(0)[a]>r.getPointAtLength(n)[a]?-1:1,v=0,p=0,T=n,l,_,w;v0?T=l:p=l,v++}return _}}}),m2=Ye({"src/lib/throttle.js"(X){"use strict";var H={};X.throttle=function(A,M,e){var t=H[A],r=Date.now();if(!t){for(var o in H)H[o].tst.ts+M){a();return}t.timer=setTimeout(function(){a(),t.timer=null},M)},X.done=function(x){var A=H[x];return!A||!A.timer?Promise.resolve():new Promise(function(M){var e=A.onDone;A.onDone=function(){e&&e(),M(),A.onDone=null}})},X.clear=function(x){if(x)g(H[x]),delete H[x];else for(var A in H)X.clear(A)};function g(x){x&&x.timer!==null&&(clearTimeout(x.timer),x.timer=null)}}}),HF=Ye({"src/lib/clear_responsive.js"(X,H){"use strict";H.exports=function(x){x._responsiveChartHandler&&(window.removeEventListener("resize",x._responsiveChartHandler),delete x._responsiveChartHandler)}}}),GF=Ye({"node_modules/is-mobile/index.js"(X,H){"use strict";H.exports=M,H.exports.isMobile=M,H.exports.default=M;var g=/(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,x=/CrOS/,A=/android|ipad|playbook|silk/i;function M(e){e||(e={});let t=e.ua;if(!t&&typeof navigator<"u"&&(t=navigator.userAgent),t&&t.headers&&typeof t.headers["user-agent"]=="string"&&(t=t.headers["user-agent"]),typeof t!="string")return!1;let r=g.test(t)&&!x.test(t)||!!e.tablet&&A.test(t);return!r&&e.tablet&&e.featureDetect&&navigator&&navigator.maxTouchPoints>1&&t.indexOf("Macintosh")!==-1&&t.indexOf("Safari")!==-1&&(r=!0),r}}}),WF=Ye({"src/lib/preserve_drawing_buffer.js"(X,H){"use strict";var g=jo(),x=GF();H.exports=function(e){var t;if(e&&e.hasOwnProperty("userAgent")?t=e.userAgent:t=A(),typeof t!="string")return!0;var r=x({ua:{headers:{"user-agent":t}},tablet:!0,featureDetect:!1});if(!r)for(var o=t.split(" "),a=1;a-1;n--){var s=o[n];if(s.substr(0,8)==="Version/"){var c=s.substr(8).split(".")[0];if(g(c)&&(c=+c),c>=13)return!0}}}return r};function A(){var M;return typeof navigator<"u"&&(M=navigator.userAgent),M&&M.headers&&typeof M.headers["user-agent"]=="string"&&(M=M.headers["user-agent"]),M}}}),ZF=Ye({"src/lib/make_trace_groups.js"(X,H){"use strict";var g=_n();H.exports=function(A,M,e){var t=A.selectAll("g."+e.replace(/\s/g,".")).data(M,function(o){return o[0].trace.uid});t.exit().remove(),t.enter().append("g").attr("class",e),t.order();var r=A.classed("rangeplot")?"nodeRangePlot3":"node3";return t.each(function(o){o[0][r]=g.select(this)}),t}}}),XF=Ye({"src/lib/localize.js"(X,H){"use strict";var g=Hn();H.exports=function(A,M){for(var e=A._context.locale,t=0;t<2;t++){for(var r=A._context.locales,o=0;o<2;o++){var a=(r[e]||{}).dictionary;if(a){var i=a[M];if(i)return i}r=g.localeRegistry}var n=e.split("-")[0];if(n===e)break;e=n}return M}}}),tS=Ye({"src/lib/filter_unique.js"(X,H){"use strict";H.exports=function(x){for(var A={},M=[],e=0,t=0;t1?(M*x+M*A)/M:x+A,t=String(e).length;if(t>16){var r=String(A).length,o=String(x).length;if(t>=o+r){var a=parseFloat(e).toPrecision(12);a.indexOf("e+")===-1&&(e=+a)}}return e}}}),JF=Ye({"src/lib/clean_number.js"(X,H){"use strict";var g=jo(),x=ks().BADNUM,A=/^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g;H.exports=function(e){return typeof e=="string"&&(e=e.replace(A,"")),g(e)?Number(e):x}}}),ta=Ye({"src/lib/index.js"(X,H){"use strict";var g=_n(),x=Np().utcFormat,A=Zy().format,M=jo(),e=ks(),t=e.FP_SAFE,r=-t,o=e.BADNUM,a=H.exports={};a.adjustFormat=function(ne){return!ne||/^\d[.]\df/.test(ne)||/[.]\d%/.test(ne)?ne:ne==="0.f"?"~f":/^\d%/.test(ne)?"~%":/^\ds/.test(ne)?"~s":!/^[~,.0$]/.test(ne)&&/[&fps]/.test(ne)?"~"+ne:ne};var i={};a.warnBadFormat=function(re){var ne=String(re);i[ne]||(i[ne]=1,a.warn('encountered bad format: "'+ne+'"'))},a.noFormat=function(re){return String(re)},a.numberFormat=function(re){var ne;try{ne=A(a.adjustFormat(re))}catch{return a.warnBadFormat(re),a.noFormat}return ne},a.nestedProperty=__(),a.keyedContainer=iF(),a.relativeAttr=nF(),a.isPlainObject=Zv(),a.toLogRange=c2(),a.relinkPrivateKeys=oF();var n=xp();a.isArrayBuffer=n.isArrayBuffer,a.isTypedArray=n.isTypedArray,a.isArrayOrTypedArray=n.isArrayOrTypedArray,a.isArray1D=n.isArray1D,a.ensureArray=n.ensureArray,a.concat=n.concat,a.maxRowLength=n.maxRowLength,a.minRowLength=n.minRowLength;var s=Xy();a.mod=s.mod,a.modHalf=s.modHalf;var c=sF();a.valObjectMeta=c.valObjectMeta,a.coerce=c.coerce,a.coerce2=c.coerce2,a.coerceFont=c.coerceFont,a.coercePattern=c.coercePattern,a.coerceHoverinfo=c.coerceHoverinfo,a.coerceSelectionMarkerOpacity=c.coerceSelectionMarkerOpacity,a.validate=c.validate;var h=NF();a.dateTime2ms=h.dateTime2ms,a.isDateTime=h.isDateTime,a.ms2DateTime=h.ms2DateTime,a.ms2DateTimeLocal=h.ms2DateTimeLocal,a.cleanDate=h.cleanDate,a.isJSDate=h.isJSDate,a.formatDate=h.formatDate,a.incrementMonth=h.incrementMonth,a.dateTick0=h.dateTick0,a.dfltRange=h.dfltRange,a.findExactDates=h.findExactDates,a.MIN_MS=h.MIN_MS,a.MAX_MS=h.MAX_MS;var v=v2();a.findBin=v.findBin,a.sorterAsc=v.sorterAsc,a.sorterDes=v.sorterDes,a.distinctVals=v.distinctVals,a.roundUp=v.roundUp,a.sort=v.sort,a.findIndexOfMin=v.findIndexOfMin,a.sortObjectKeys=Km();var p=UF();a.aggNums=p.aggNums,a.len=p.len,a.mean=p.mean,a.geometricMean=p.geometricMean,a.median=p.median,a.midRange=p.midRange,a.variance=p.variance,a.stdev=p.stdev,a.interp=p.interp;var T=h2();a.init2dArray=T.init2dArray,a.transposeRagged=T.transposeRagged,a.dot=T.dot,a.translationMatrix=T.translationMatrix,a.rotationMatrix=T.rotationMatrix,a.rotationXYMatrix=T.rotationXYMatrix,a.apply3DTransform=T.apply3DTransform,a.apply2DTransform=T.apply2DTransform,a.apply2DTransform2=T.apply2DTransform2,a.convertCssMatrix=T.convertCssMatrix,a.inverseTransformMatrix=T.inverseTransformMatrix;var l=jF();a.deg2rad=l.deg2rad,a.rad2deg=l.rad2deg,a.angleDelta=l.angleDelta,a.angleDist=l.angleDist,a.isFullCircle=l.isFullCircle,a.isAngleInsideSector=l.isAngleInsideSector,a.isPtInsideSector=l.isPtInsideSector,a.pathArc=l.pathArc,a.pathSector=l.pathSector,a.pathAnnulus=l.pathAnnulus;var _=VF();a.isLeftAnchor=_.isLeftAnchor,a.isCenterAnchor=_.isCenterAnchor,a.isRightAnchor=_.isRightAnchor,a.isTopAnchor=_.isTopAnchor,a.isMiddleAnchor=_.isMiddleAnchor,a.isBottomAnchor=_.isBottomAnchor;var w=qF();a.segmentsIntersect=w.segmentsIntersect,a.segmentDistance=w.segmentDistance,a.getTextLocation=w.getTextLocation,a.clearLocationCache=w.clearLocationCache,a.getVisibleSegment=w.getVisibleSegment,a.findPointOnPath=w.findPointOnPath;var S=Oo();a.extendFlat=S.extendFlat,a.extendDeep=S.extendDeep,a.extendDeepAll=S.extendDeepAll,a.extendDeepNoArrays=S.extendDeepNoArrays;var E=Ym();a.log=E.log,a.warn=E.warn,a.error=E.error;var m=Ky();a.counterRegex=m.counter;var b=m2();a.throttle=b.throttle,a.throttleDone=b.done,a.clearThrottle=b.clear;var d=b_();a.getGraphDiv=d.getGraphDiv,a.isPlotDiv=d.isPlotDiv,a.removeElement=d.removeElement,a.addStyleRule=d.addStyleRule,a.addRelatedStyleRule=d.addRelatedStyleRule,a.deleteRelatedStyleRule=d.deleteRelatedStyleRule,a.setStyleOnHover=d.setStyleOnHover,a.getFullTransformMatrix=d.getFullTransformMatrix,a.getElementTransformMatrix=d.getElementTransformMatrix,a.getElementAndAncestors=d.getElementAndAncestors,a.equalDomRects=d.equalDomRects,a.clearResponsive=HF(),a.preserveDrawingBuffer=WF(),a.makeTraceGroups=ZF(),a._=XF(),a.notifier=YA(),a.filterUnique=tS(),a.filterVisible=YF(),a.pushUnique=KA(),a.increment=KF(),a.cleanNumber=JF(),a.ensureNumber=function(ne){return M(ne)?(ne=Number(ne),ne>t||ne=ne?!1:M(re)&&re>=0&&re%1===0},a.noop=f2(),a.identity=T_(),a.repeat=function(re,ne){for(var j=new Array(ne),ee=0;eej?Math.max(j,Math.min(ne,re)):Math.max(ne,Math.min(j,re))},a.bBoxIntersect=function(re,ne,j){return j=j||0,re.left<=ne.right+j&&ne.left<=re.right+j&&re.top<=ne.bottom+j&&ne.top<=re.bottom+j},a.simpleMap=function(re,ne,j,ee,ie){for(var fe=re.length,be=new Array(fe),Ae=0;Ae=Math.pow(2,j)?ie>10?(a.warn("randstr failed uniqueness"),be):re(ne,j,ee,(ie||0)+1):be},a.OptionControl=function(re,ne){re||(re={}),ne||(ne="opt");var j={};return j.optionList=[],j._newoption=function(ee){ee[ne]=re,j[ee.name]=ee,j.optionList.push(ee)},j["_"+ne]=re,j},a.smooth=function(re,ne){if(ne=Math.round(ne)||0,ne<2)return re;var j=re.length,ee=2*j,ie=2*ne-1,fe=new Array(ie),be=new Array(j),Ae,Be,Ie,Ze;for(Ae=0;Ae=ee&&(Ie-=ee*Math.floor(Ie/ee)),Ie<0?Ie=-1-Ie:Ie>=j&&(Ie=ee-1-Ie),Ze+=re[Ie]*fe[Be];be[Ae]=Ze}return be},a.syncOrAsync=function(re,ne,j){var ee,ie;function fe(){return a.syncOrAsync(re,ne,j)}for(;re.length;)if(ie=re.splice(0,1)[0],ee=ie(ne),ee&&ee.then)return ee.then(fe);return j&&j(ne)},a.stripTrailingSlash=function(re){return re.substr(-1)==="/"?re.substr(0,re.length-1):re},a.noneOrAll=function(re,ne,j){if(re){var ee=!1,ie=!0,fe,be;for(fe=0;fe0?ie:0})},a.fillArray=function(re,ne,j,ee){if(ee=ee||a.identity,a.isArrayOrTypedArray(re))for(var ie=0;ie1?ie+be[1]:"";if(fe&&(be.length>1||Ae.length>4||j))for(;ee.test(Ae);)Ae=Ae.replace(ee,"$1"+fe+"$2");return Ae+Be},a.TEMPLATE_STRING_REGEX=/%{([^\s%{}:]*)([:|\|][^}]*)?}/g;var O=/^\w*$/;a.templateString=function(re,ne){var j={};return re.replace(a.TEMPLATE_STRING_REGEX,function(ee,ie){var fe;return O.test(ie)?fe=ne[ie]:(j[ie]=j[ie]||a.nestedProperty(ne,ie).get,fe=j[ie](!0)),fe!==void 0?fe:""})};var I={max:10,count:0,name:"hovertemplate"};a.hovertemplateString=function(){return se.apply(I,arguments)};var N={max:10,count:0,name:"texttemplate"};a.texttemplateString=function(){return se.apply(N,arguments)};var U=/^(\S+)([\*\/])(-?\d+(\.\d+)?)$/;function W(re){var ne=re.match(U);return ne?{key:ne[1],op:ne[2],number:Number(ne[3])}:{key:re,op:null,number:null}}var Q={max:10,count:0,name:"texttemplate",parseMultDiv:!0};a.texttemplateStringForShapes=function(){return se.apply(Q,arguments)};var ue=/^[:|\|]/;function se(re,ne,j){var ee=this,ie=arguments;return ne||(ne={}),re.replace(a.TEMPLATE_STRING_REGEX,function(fe,be,Ae){var Be=be==="xother"||be==="yother",Ie=be==="_xother"||be==="_yother",Ze=be==="_xother_"||be==="_yother_",at=be==="xother_"||be==="yother_",it=Be||Ie||at||Ze,et=be;(Ie||Ze)&&(et=et.substring(1)),(at||Ze)&&(et=et.substring(0,et.length-1));var lt=null,Me=null;if(ee.parseMultDiv){var ge=W(et);et=ge.key,lt=ge.op,Me=ge.number}var ce;if(it){if(ce=ne[et],ce===void 0)return""}else{var ze,tt;for(tt=3;tt=he&&be<=G,Ie=Ae>=he&&Ae<=G;if(Be&&(ee=10*ee+be-he),Ie&&(ie=10*ie+Ae-he),!Be||!Ie){if(ee!==ie)return ee-ie;if(be!==Ae)return be-Ae}}return ie-ee};var $=2e9;a.seedPseudoRandom=function(){$=2e9},a.pseudoRandom=function(){var re=$;return $=(69069*$+1)%4294967296,Math.abs($-re)<429496729?a.pseudoRandom():$/4294967296},a.fillText=function(re,ne,j){var ee=Array.isArray(j)?function(be){j.push(be)}:function(be){j.text=be},ie=a.extractOption(re,ne,"htx","hovertext");if(a.isValidTextValue(ie))return ee(ie);var fe=a.extractOption(re,ne,"tx","text");if(a.isValidTextValue(fe))return ee(fe)},a.isValidTextValue=function(re){return re||re===0},a.formatPercent=function(re,ne){ne=ne||0;for(var j=(Math.round(100*re*Math.pow(10,ne))*Math.pow(.1,ne)).toFixed(ne)+"%",ee=0;ee1&&(Ie=1):Ie=0,a.strTranslate(ie-Ie*(j+be),fe-Ie*(ee+Ae))+a.strScale(Ie)+(Be?"rotate("+Be+(ne?"":" "+j+" "+ee)+")":"")},a.setTransormAndDisplay=function(re,ne){re.attr("transform",a.getTextTransform(ne)),re.style("display",ne.scale?null:"none")},a.ensureUniformFontSize=function(re,ne){var j=a.extendFlat({},ne);return j.size=Math.max(ne.size,re._fullLayout.uniformtext.minsize||0),j},a.join2=function(re,ne,j){var ee=re.length;return ee>1?re.slice(0,-1).join(ne)+j+re[ee-1]:re.join(ne)},a.bigFont=function(re){return Math.round(1.2*re)};var J=a.getFirefoxVersion(),Z=J!==null&&J<86;a.getPositionFromD3Event=function(){return Z?[g.event.layerX,g.event.layerY]:[g.event.offsetX,g.event.offsetY]}}}),$F=Ye({"build/plotcss.js"(){"use strict";var X=ta(),H={"X,X div":'direction:ltr;font-family:"Open Sans",verdana,arial,sans-serif;margin:0;padding:0;',"X input,X button":'font-family:"Open Sans",verdana,arial,sans-serif;',"X input:focus,X button:focus":"outline:none;","X a":"text-decoration:none;","X a:hover":"text-decoration:none;","X .crisp":"shape-rendering:crispEdges;","X .user-select-none":"-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;","X svg a":"fill:#447adb;","X svg a:hover":"fill:#3c6dc5;","X .main-svg":"position:absolute;top:0;left:0;pointer-events:none;","X .main-svg .draglayer":"pointer-events:all;","X .cursor-default":"cursor:default;","X .cursor-pointer":"cursor:pointer;","X .cursor-crosshair":"cursor:crosshair;","X .cursor-move":"cursor:move;","X .cursor-col-resize":"cursor:col-resize;","X .cursor-row-resize":"cursor:row-resize;","X .cursor-ns-resize":"cursor:ns-resize;","X .cursor-ew-resize":"cursor:ew-resize;","X .cursor-sw-resize":"cursor:sw-resize;","X .cursor-s-resize":"cursor:s-resize;","X .cursor-se-resize":"cursor:se-resize;","X .cursor-w-resize":"cursor:w-resize;","X .cursor-e-resize":"cursor:e-resize;","X .cursor-nw-resize":"cursor:nw-resize;","X .cursor-n-resize":"cursor:n-resize;","X .cursor-ne-resize":"cursor:ne-resize;","X .cursor-grab":"cursor:-webkit-grab;cursor:grab;","X .modebar":"position:absolute;top:2px;right:2px;","X .ease-bg":"-webkit-transition:background-color .3s ease 0s;-moz-transition:background-color .3s ease 0s;-ms-transition:background-color .3s ease 0s;-o-transition:background-color .3s ease 0s;transition:background-color .3s ease 0s;","X .modebar--hover>:not(.watermark)":"opacity:0;-webkit-transition:opacity .3s ease 0s;-moz-transition:opacity .3s ease 0s;-ms-transition:opacity .3s ease 0s;-o-transition:opacity .3s ease 0s;transition:opacity .3s ease 0s;","X:hover .modebar--hover .modebar-group":"opacity:1;","X .modebar-group":"float:left;display:inline-block;box-sizing:border-box;padding-left:8px;position:relative;vertical-align:middle;white-space:nowrap;","X .modebar-btn":"position:relative;font-size:16px;padding:3px 4px;height:22px;cursor:pointer;line-height:normal;box-sizing:border-box;","X .modebar-btn svg":"position:relative;top:2px;","X .modebar.vertical":"display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-end;max-height:100%;","X .modebar.vertical svg":"top:-1px;","X .modebar.vertical .modebar-group":"display:block;float:none;padding-left:0px;padding-bottom:8px;","X .modebar.vertical .modebar-group .modebar-btn":"display:block;text-align:center;","X [data-title]:before,X [data-title]:after":"position:absolute;-webkit-transform:translate3d(0, 0, 0);-moz-transform:translate3d(0, 0, 0);-ms-transform:translate3d(0, 0, 0);-o-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);display:none;opacity:0;z-index:1001;pointer-events:none;top:110%;right:50%;","X [data-title]:hover:before,X [data-title]:hover:after":"display:block;opacity:1;","X [data-title]:before":'content:"";position:absolute;background:rgba(0,0,0,0);border:6px solid rgba(0,0,0,0);z-index:1002;margin-top:-12px;border-bottom-color:#69738a;margin-right:-6px;',"X [data-title]:after":"content:attr(data-title);background:#69738a;color:#fff;padding:8px 10px;font-size:12px;line-height:12px;white-space:nowrap;margin-right:-18px;border-radius:2px;","X .vertical [data-title]:before,X .vertical [data-title]:after":"top:0%;right:200%;","X .vertical [data-title]:before":"border:6px solid rgba(0,0,0,0);border-left-color:#69738a;margin-top:8px;margin-right:-30px;",Y:'font-family:"Open Sans",verdana,arial,sans-serif;position:fixed;top:50px;right:20px;z-index:10000;font-size:10pt;max-width:180px;',"Y p":"margin:0;","Y .notifier-note":"min-width:180px;max-width:250px;border:1px solid #fff;z-index:3000;margin:0;background-color:#8c97af;background-color:rgba(140,151,175,.9);color:#fff;padding:10px;overflow-wrap:break-word;word-wrap:break-word;-ms-hyphens:auto;-webkit-hyphens:auto;hyphens:auto;","Y .notifier-close":"color:#fff;opacity:.8;float:right;padding:0 5px;background:none;border:none;font-size:20px;font-weight:bold;line-height:20px;","Y .notifier-close:hover":"color:#444;text-decoration:none;cursor:pointer;"};for(x in H)g=x.replace(/^,/," ,").replace(/X/g,".js-plotly-plot .plotly").replace(/Y/g,".plotly-notifier"),X.addStyleRule(g,H[x]);var g,x}}),rS=Ye({"node_modules/is-browser/client.js"(X,H){H.exports=!0}}),aS=Ye({"node_modules/has-hover/index.js"(X,H){"use strict";var g=rS(),x;typeof window.matchMedia=="function"?x=!window.matchMedia("(hover: none)").matches:x=g,H.exports=x}}),Wg=Ye({"node_modules/events/events.js"(X,H){"use strict";var g=typeof Reflect=="object"?Reflect:null,x=g&&typeof g.apply=="function"?g.apply:function(E,m,b){return Function.prototype.apply.call(E,m,b)},A;g&&typeof g.ownKeys=="function"?A=g.ownKeys:Object.getOwnPropertySymbols?A=function(E){return Object.getOwnPropertyNames(E).concat(Object.getOwnPropertySymbols(E))}:A=function(E){return Object.getOwnPropertyNames(E)};function M(S){console&&console.warn&&console.warn(S)}var e=Number.isNaN||function(E){return E!==E};function t(){t.init.call(this)}H.exports=t,H.exports.once=l,t.EventEmitter=t,t.prototype._events=void 0,t.prototype._eventsCount=0,t.prototype._maxListeners=void 0;var r=10;function o(S){if(typeof S!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof S)}Object.defineProperty(t,"defaultMaxListeners",{enumerable:!0,get:function(){return r},set:function(S){if(typeof S!="number"||S<0||e(S))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+S+".");r=S}}),t.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},t.prototype.setMaxListeners=function(E){if(typeof E!="number"||E<0||e(E))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+E+".");return this._maxListeners=E,this};function a(S){return S._maxListeners===void 0?t.defaultMaxListeners:S._maxListeners}t.prototype.getMaxListeners=function(){return a(this)},t.prototype.emit=function(E){for(var m=[],b=1;b0&&(y=m[0]),y instanceof Error)throw y;var f=new Error("Unhandled error."+(y?" ("+y.message+")":""));throw f.context=y,f}var P=u[E];if(P===void 0)return!1;if(typeof P=="function")x(P,this,m);else for(var L=P.length,z=v(P,L),b=0;b0&&y.length>d&&!y.warned){y.warned=!0;var f=new Error("Possible EventEmitter memory leak detected. "+y.length+" "+String(E)+" listeners added. Use emitter.setMaxListeners() to increase limit");f.name="MaxListenersExceededWarning",f.emitter=S,f.type=E,f.count=y.length,M(f)}return S}t.prototype.addListener=function(E,m){return i(this,E,m,!1)},t.prototype.on=t.prototype.addListener,t.prototype.prependListener=function(E,m){return i(this,E,m,!0)};function n(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function s(S,E,m){var b={fired:!1,wrapFn:void 0,target:S,type:E,listener:m},d=n.bind(b);return d.listener=m,b.wrapFn=d,d}t.prototype.once=function(E,m){return o(m),this.on(E,s(this,E,m)),this},t.prototype.prependOnceListener=function(E,m){return o(m),this.prependListener(E,s(this,E,m)),this},t.prototype.removeListener=function(E,m){var b,d,u,y,f;if(o(m),d=this._events,d===void 0)return this;if(b=d[E],b===void 0)return this;if(b===m||b.listener===m)--this._eventsCount===0?this._events=Object.create(null):(delete d[E],d.removeListener&&this.emit("removeListener",E,b.listener||m));else if(typeof b!="function"){for(u=-1,y=b.length-1;y>=0;y--)if(b[y]===m||b[y].listener===m){f=b[y].listener,u=y;break}if(u<0)return this;u===0?b.shift():p(b,u),b.length===1&&(d[E]=b[0]),d.removeListener!==void 0&&this.emit("removeListener",E,f||m)}return this},t.prototype.off=t.prototype.removeListener,t.prototype.removeAllListeners=function(E){var m,b,d;if(b=this._events,b===void 0)return this;if(b.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):b[E]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete b[E]),this;if(arguments.length===0){var u=Object.keys(b),y;for(d=0;d=0;d--)this.removeListener(E,m[d]);return this};function c(S,E,m){var b=S._events;if(b===void 0)return[];var d=b[E];return d===void 0?[]:typeof d=="function"?m?[d.listener||d]:[d]:m?T(d):v(d,d.length)}t.prototype.listeners=function(E){return c(this,E,!0)},t.prototype.rawListeners=function(E){return c(this,E,!1)},t.listenerCount=function(S,E){return typeof S.listenerCount=="function"?S.listenerCount(E):h.call(S,E)},t.prototype.listenerCount=h;function h(S){var E=this._events;if(E!==void 0){var m=E[S];if(typeof m=="function")return 1;if(m!==void 0)return m.length}return 0}t.prototype.eventNames=function(){return this._eventsCount>0?A(this._events):[]};function v(S,E){for(var m=new Array(E),b=0;bx.queueLength&&(e.undoQueue.queue.shift(),e.undoQueue.index--)},M.startSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!0,e.undoQueue.beginSequence=!0},M.stopSequence=function(e){e.undoQueue=e.undoQueue||{index:0,queue:[],sequence:!1},e.undoQueue.sequence=!1,e.undoQueue.beginSequence=!1},M.undo=function(t){var r,o;if(!(t.undoQueue===void 0||isNaN(t.undoQueue.index)||t.undoQueue.index<=0)){for(t.undoQueue.index--,r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,o=0;o=t.undoQueue.queue.length)){for(r=t.undoQueue.queue[t.undoQueue.index],t.undoQueue.inSequence=!0,o=0;o=I.length)return!1;if(L.dimensions===2){if(F++,z.length===F)return L;var N=z[F];if(!w(N))return!1;L=I[O][N]}else L=I[O]}else L=I}}return L}function w(L){return L===Math.round(L)&&L>=0}function S(L){var z,F;z=H.modules[L]._module,F=z.basePlotModule;var B={};B.type=null;var O=o({},x),I=o({},z.attributes);X.crawl(I,function(W,Q,ue,se,he){n(O,he).set(void 0),W===void 0&&n(I,he).set(void 0)}),o(B,O),H.traceIs(L,"noOpacity")&&delete B.opacity,H.traceIs(L,"showLegend")||(delete B.showlegend,delete B.legendgroup),H.traceIs(L,"noHover")&&(delete B.hoverinfo,delete B.hoverlabel),z.selectPoints||delete B.selectedpoints,o(B,I),F.attributes&&o(B,F.attributes),B.type=L;var N={meta:z.meta||{},categories:z.categories||{},animatable:!!z.animatable,type:L,attributes:b(B)};if(z.layoutAttributes){var U={};o(U,z.layoutAttributes),N.layoutAttributes=b(U)}return z.animatable||X.crawl(N,function(W){X.isValObject(W)&&"anim"in W&&delete W.anim}),N}function E(){var L={},z,F;o(L,A);for(z in H.subplotsRegistry)if(F=H.subplotsRegistry[z],!!F.layoutAttributes)if(Array.isArray(F.attr))for(var B=0;B=a&&(o._input||{})._templateitemname;n&&(i=a);var s=r+"["+i+"]",c;function h(){c={},n&&(c[s]={},c[s][x]=n)}h();function v(_,w){c[_]=w}function p(_,w){n?H.nestedProperty(c[s],_).set(w):c[s+"."+_]=w}function T(){var _=c;return h(),_}function l(_,w){_&&p(_,w);var S=T();for(var E in S)H.nestedProperty(t,E).set(S[E])}return{modifyBase:v,modifyItem:p,getUpdateObj:T,applyUpdate:l}}}}),wh=Ye({"src/plots/cartesian/constants.js"(X,H){"use strict";var g=Ky().counter;H.exports={idRegex:{x:g("x","( domain)?"),y:g("y","( domain)?")},attrRegex:g("[xy]axis"),xAxisMatch:g("xaxis"),yAxisMatch:g("yaxis"),AX_ID_PATTERN:/^[xyz][0-9]*( domain)?$/,AX_NAME_PATTERN:/^[xyz]axis[0-9]*$/,SUBPLOT_PATTERN:/^x([0-9]*)y([0-9]*)$/,HOUR_PATTERN:"hour",WEEKDAY_PATTERN:"day of week",MINDRAG:8,MINZOOM:20,DRAGGERSIZE:20,REDRAWDELAY:50,DFLTRANGEX:[-1,6],DFLTRANGEY:[-1,4],traceLayerClasses:["imagelayer","heatmaplayer","contourcarpetlayer","contourlayer","funnellayer","waterfalllayer","barlayer","carpetlayer","violinlayer","boxlayer","ohlclayer","scattercarpetlayer","scatterlayer"],clipOnAxisFalseQuery:[".scatterlayer",".barlayer",".funnellayer",".waterfalllayer"],layerValue2layerClass:{"above traces":"above","below traces":"below"},zindexSeparator:"z"}}}),Xc=Ye({"src/plots/cartesian/axis_ids.js"(X){"use strict";var H=Hn(),g=wh();X.id2name=function(M){if(!(typeof M!="string"||!M.match(g.AX_ID_PATTERN))){var e=M.split(" ")[0].substr(1);return e==="1"&&(e=""),M.charAt(0)+"axis"+e}},X.name2id=function(M){if(M.match(g.AX_NAME_PATTERN)){var e=M.substr(5);return e==="1"&&(e=""),M.charAt(0)+e}},X.cleanId=function(M,e,t){var r=/( domain)$/.test(M);if(!(typeof M!="string"||!M.match(g.AX_ID_PATTERN))&&!(e&&M.charAt(0)!==e)&&!(r&&!t)){var o=M.split(" ")[0].substr(1).replace(/^0+/,"");return o==="1"&&(o=""),M.charAt(0)+o+(r&&t?" domain":"")}},X.list=function(A,M,e){var t=A._fullLayout;if(!t)return[];var r=X.listIds(A,M),o=new Array(r.length),a;for(a=0;at?1:-1:+(A.substr(1)||1)-+(M.substr(1)||1)},X.ref2id=function(A){return/^[xyz]/.test(A)?A.split(" ")[0]:!1};function x(A,M){if(M&&M.length){for(var e=0;e0?".":"")+n;g.isPlainObject(s)?t(s,o,c,i+1):o(c,n,s)}})}}}),Gu=Ye({"src/plots/plots.js"(X,H){"use strict";var g=_n(),x=Np().timeFormatLocale,A=Zy().formatLocale,M=jo(),e=XA(),t=Hn(),r=Qy(),o=cl(),a=ta(),i=Fn(),n=ks().BADNUM,s=Xc(),c=Jm().clearOutline,h=g2(),v=w_(),p=iS(),T=jh().getModuleCalcData,l=a.relinkPrivateKeys,_=a._,w=H.exports={};a.extendFlat(w,t),w.attributes=Pl(),w.attributes.type.values=w.allTypes,w.fontAttrs=Au(),w.layoutAttributes=Jy();var S=eO();w.executeAPICommand=S.executeAPICommand,w.computeAPICommandBindings=S.computeAPICommandBindings,w.manageCommandObserver=S.manageCommandObserver,w.hasSimpleAPICommandBindings=S.hasSimpleAPICommandBindings,w.redrawText=function(G){return G=a.getGraphDiv(G),new Promise(function($){setTimeout(function(){G._fullLayout&&(t.getComponentMethod("annotations","draw")(G),t.getComponentMethod("legend","draw")(G),t.getComponentMethod("colorbar","draw")(G),$(w.previousPromises(G)))},300)})},w.resize=function(G){G=a.getGraphDiv(G);var $,J=new Promise(function(Z,re){(!G||a.isHidden(G))&&re(new Error("Resize must be passed a displayed plot div element.")),G._redrawTimer&&clearTimeout(G._redrawTimer),G._resolveResize&&($=G._resolveResize),G._resolveResize=Z,G._redrawTimer=setTimeout(function(){if(!G.layout||G.layout.width&&G.layout.height||a.isHidden(G)){Z(G);return}delete G.layout.width,delete G.layout.height;var ne=G.changed;G.autoplay=!0,t.call("relayout",G,{autosize:!0}).then(function(){G.changed=ne,G._resolveResize===Z&&(delete G._resolveResize,Z(G))})},100)});return $&&$(J),J},w.previousPromises=function(G){if((G._promises||[]).length)return Promise.all(G._promises).then(function(){G._promises=[]})},w.addLinks=function(G){if(!(!G._context.showLink&&!G._context.showSources)){var $=G._fullLayout,J=a.ensureSingle($._paper,"text","js-plot-link-container",function(ie){ie.style({"font-family":'"Open Sans", Arial, sans-serif',"font-size":"12px",fill:i.defaultLine,"pointer-events":"all"}).each(function(){var fe=g.select(this);fe.append("tspan").classed("js-link-to-tool",!0),fe.append("tspan").classed("js-link-spacer",!0),fe.append("tspan").classed("js-sourcelinks",!0)})}),Z=J.node(),re={y:$._paper.attr("height")-9};document.body.contains(Z)&&Z.getComputedTextLength()>=$.width-20?(re["text-anchor"]="start",re.x=5):(re["text-anchor"]="end",re.x=$._paper.attr("width")-7),J.attr(re);var ne=J.select(".js-link-to-tool"),j=J.select(".js-link-spacer"),ee=J.select(".js-sourcelinks");G._context.showSources&&G._context.showSources(G),G._context.showLink&&E(G,ne),j.text(ne.text()&&ee.text()?" - ":"")}};function E(G,$){$.text("");var J=$.append("a").attr({"xlink:xlink:href":"#",class:"link--impt link--embedview","font-weight":"bold"}).text(G._context.linkText+" \xBB");if(G._context.sendData)J.on("click",function(){w.sendDataToCloud(G)});else{var Z=window.location.pathname.split("/"),re=window.location.search;J.attr({"xlink:xlink:show":"new","xlink:xlink:href":"/"+Z[2].split(".")[0]+"/"+Z[1]+re})}}w.sendDataToCloud=function(G){var $=(window.PLOTLYENV||{}).BASE_URL||G._context.plotlyServerURL;if($){G.emit("plotly_beforeexport");var J=g.select(G).append("div").attr("id","hiddenform").style("display","none"),Z=J.append("form").attr({action:$+"/external",method:"post",target:"_blank"}),re=Z.append("input").attr({type:"text",name:"data"});return re.node().value=w.graphJson(G,!1,"keepdata"),Z.node().submit(),J.remove(),G.emit("plotly_afterexport"),!1}};var m=["days","shortDays","months","shortMonths","periods","dateTime","date","time","decimal","thousands","grouping","currency"],b=["year","month","dayMonth","dayMonthYear"];w.supplyDefaults=function(G,$){var J=$&&$.skipUpdateCalc,Z=G._fullLayout||{};if(Z._skipDefaults){delete Z._skipDefaults;return}var re=G._fullLayout={},ne=G.layout||{},j=G._fullData||[],ee=G._fullData=[],ie=G.data||[],fe=G.calcdata||[],be=G._context||{},Ae;G._transitionData||w.createTransitionData(G),re._dfltTitle={plot:_(G,"Click to enter Plot title"),subtitle:_(G,"Click to enter Plot subtitle"),x:_(G,"Click to enter X axis title"),y:_(G,"Click to enter Y axis title"),colorbar:_(G,"Click to enter Colorscale title"),annotation:_(G,"new text")},re._traceWord=_(G,"trace");var Be=y(G,m);if(re._mapboxAccessToken=be.mapboxAccessToken,Z._initialAutoSizeIsDone){var Ie=Z.width,Ze=Z.height;w.supplyLayoutGlobalDefaults(ne,re,Be),ne.width||(re.width=Ie),ne.height||(re.height=Ze),w.sanitizeMargins(re)}else{w.supplyLayoutGlobalDefaults(ne,re,Be);var at=!ne.width||!ne.height,it=re.autosize,et=be.autosizable,lt=at&&(it||et);lt?w.plotAutoSize(G,ne,re):at&&w.sanitizeMargins(re),!it&&at&&(ne.width=re.width,ne.height=re.height)}re._d3locale=f(Be,re.separators),re._extraFormat=y(G,b),re._initialAutoSizeIsDone=!0,re._dataLength=ie.length,re._modules=[],re._visibleModules=[],re._basePlotModules=[];var Me=re._subplots=u(),ge=re._splomAxes={x:{},y:{}},ce=re._splomSubplots={};re._splomGridDflt={},re._scatterStackOpts={},re._firstScatter={},re._alignmentOpts={},re._colorAxes={},re._requestRangeslider={},re._traceUids=d(j,ie),w.supplyDataDefaults(ie,ee,ne,re);var ze=Object.keys(ge.x),tt=Object.keys(ge.y);if(ze.length>1&&tt.length>1){for(t.getComponentMethod("grid","sizeDefaults")(ne,re),Ae=0;Ae15&&tt.length>15&&re.shapes.length===0&&re.images.length===0,w.linkSubplots(ee,re,j,Z),w.cleanPlot(ee,re,j,Z);var Ot=!!(Z._has&&Z._has("cartesian")),jt=!!(re._has&&re._has("cartesian")),ur=Ot,ar=jt;ur&&!ar?Z._bgLayer.remove():ar&&!ur&&(re._shouldCreateBgLayer=!0),Z._zoomlayer&&!G._dragging&&c({_fullLayout:Z}),P(ee,re),l(re,Z),t.getComponentMethod("colorscale","crossTraceDefaults")(ee,re),re._preGUI||(re._preGUI={}),re._tracePreGUI||(re._tracePreGUI={});var Cr=re._tracePreGUI,vr={},_r;for(_r in Cr)vr[_r]="old";for(Ae=0;Ae0){var be=1-2*ne;j=Math.round(be*j),ee=Math.round(be*ee)}}var Ae=w.layoutAttributes.width.min,Be=w.layoutAttributes.height.min;j1,Ze=!J.height&&Math.abs(Z.height-ee)>1;(Ze||Ie)&&(Ie&&(Z.width=j),Ze&&(Z.height=ee)),$._initialAutoSize||($._initialAutoSize={width:j,height:ee}),w.sanitizeMargins(Z)},w.supplyLayoutModuleDefaults=function(G,$,J,Z){var re=t.componentsRegistry,ne=$._basePlotModules,j,ee,ie,fe=t.subplotsRegistry.cartesian;for(j in re)ie=re[j],ie.includeBasePlot&&ie.includeBasePlot(G,$);ne.length||ne.push(fe),$._has("cartesian")&&(t.getComponentMethod("grid","contentDefaults")(G,$),fe.finalizeSubplots(G,$));for(var be in $._subplots)$._subplots[be].sort(a.subplotSort);for(ee=0;ee1&&(J.l/=it,J.r/=it)}if(Be){var et=(J.t+J.b)/Be;et>1&&(J.t/=et,J.b/=et)}var lt=J.xl!==void 0?J.xl:J.x,Me=J.xr!==void 0?J.xr:J.x,ge=J.yt!==void 0?J.yt:J.y,ce=J.yb!==void 0?J.yb:J.y;Ie[$]={l:{val:lt,size:J.l+at},r:{val:Me,size:J.r+at},b:{val:ce,size:J.b+at},t:{val:ge,size:J.t+at}},Ze[$]=1}if(!Z._replotting)return w.doAutoMargin(G)}};function I(G){if("_redrawFromAutoMarginCount"in G._fullLayout)return!1;var $=s.list(G,"",!0);for(var J in $)if($[J].autoshift||$[J].shift)return!0;return!1}w.doAutoMargin=function(G){var $=G._fullLayout,J=$.width,Z=$.height;$._size||($._size={}),F($);var re=$._size,ne=$.margin,j={t:0,b:0,l:0,r:0},ee=a.extendFlat({},re),ie=ne.l,fe=ne.r,be=ne.t,Ae=ne.b,Be=$._pushmargin,Ie=$._pushmarginIds,Ze=$.minreducedwidth,at=$.minreducedheight;if(ne.autoexpand!==!1){for(var it in Be)Ie[it]||delete Be[it];var et=G._fullLayout._reservedMargin;for(var lt in et)for(var Me in et[lt]){var ge=et[lt][Me];j[Me]=Math.max(j[Me],ge)}Be.base={l:{val:0,size:ie},r:{val:1,size:fe},t:{val:1,size:be},b:{val:0,size:Ae}};for(var ce in j){var ze=0;for(var tt in Be)tt!=="base"&&M(Be[tt][ce].size)&&(ze=Be[tt][ce].size>ze?Be[tt][ce].size:ze);var nt=Math.max(0,ne[ce]-ze);j[ce]=Math.max(0,j[ce]-nt)}for(var Qe in Be){var Ct=Be[Qe].l||{},St=Be[Qe].b||{},Ot=Ct.val,jt=Ct.size,ur=St.val,ar=St.size,Cr=J-j.r-j.l,vr=Z-j.t-j.b;for(var _r in Be){if(M(jt)&&Be[_r].r){var yt=Be[_r].r.val,Fe=Be[_r].r.size;if(yt>Ot){var Ke=(jt*yt+(Fe-Cr)*Ot)/(yt-Ot),Ne=(Fe*(1-Ot)+(jt-Cr)*(1-yt))/(yt-Ot);Ke+Ne>ie+fe&&(ie=Ke,fe=Ne)}}if(M(ar)&&Be[_r].t){var Ee=Be[_r].t.val,Ve=Be[_r].t.size;if(Ee>ur){var ke=(ar*Ee+(Ve-vr)*ur)/(Ee-ur),Te=(Ve*(1-ur)+(ar-vr)*(1-Ee))/(Ee-ur);ke+Te>Ae+be&&(Ae=ke,be=Te)}}}}}var Le=a.constrain(J-ne.l-ne.r,B,Ze),rt=a.constrain(Z-ne.t-ne.b,O,at),dt=Math.max(0,J-Le),xt=Math.max(0,Z-rt);if(dt){var It=(ie+fe)/dt;It>1&&(ie/=It,fe/=It)}if(xt){var Bt=(Ae+be)/xt;Bt>1&&(Ae/=Bt,be/=Bt)}if(re.l=Math.round(ie)+j.l,re.r=Math.round(fe)+j.r,re.t=Math.round(be)+j.t,re.b=Math.round(Ae)+j.b,re.p=Math.round(ne.pad),re.w=Math.round(J)-re.l-re.r,re.h=Math.round(Z)-re.t-re.b,!$._replotting&&(w.didMarginChange(ee,re)||I(G))){"_redrawFromAutoMarginCount"in $?$._redrawFromAutoMarginCount++:$._redrawFromAutoMarginCount=1;var Gt=3*(1+Object.keys(Ie).length);if($._redrawFromAutoMarginCount1)return!0}return!1},w.graphJson=function(G,$,J,Z,re,ne){(re&&$&&!G._fullData||re&&!$&&!G._fullLayout)&&w.supplyDefaults(G);var j=re?G._fullData:G.data,ee=re?G._fullLayout:G.layout,ie=(G._transitionData||{})._frames;function fe(Be,Ie){if(typeof Be=="function")return Ie?"_function_":null;if(a.isPlainObject(Be)){var Ze={},at;return Object.keys(Be).sort().forEach(function(Me){if(["_","["].indexOf(Me.charAt(0))===-1){if(typeof Be[Me]=="function"){Ie&&(Ze[Me]="_function");return}if(J==="keepdata"){if(Me.substr(Me.length-3)==="src")return}else if(J==="keepstream"){if(at=Be[Me+"src"],typeof at=="string"&&at.indexOf(":")>0&&!a.isPlainObject(Be.stream))return}else if(J!=="keepall"&&(at=Be[Me+"src"],typeof at=="string"&&at.indexOf(":")>0))return;Ze[Me]=fe(Be[Me],Ie)}}),Ze}var it=Array.isArray(Be),et=a.isTypedArray(Be);if((it||et)&&Be.dtype&&Be.shape){var lt=Be.bdata;return fe({dtype:Be.dtype,shape:Be.shape,bdata:a.isArrayBuffer(lt)?e.encode(lt):lt},Ie)}return it?Be.map(function(Me){return fe(Me,Ie)}):et?a.simpleMap(Be,a.identity):a.isJSDate(Be)?a.ms2DateTimeLocal(+Be):Be}var be={data:(j||[]).map(function(Be){var Ie=fe(Be);return $&&delete Ie.fit,Ie})};if(!$&&(be.layout=fe(ee),re)){var Ae=ee._size;be.layout.computed={margin:{b:Ae.b,l:Ae.l,r:Ae.r,t:Ae.t}}}return ie&&(be.frames=fe(ie)),ne&&(be.config=fe(G._context,!0)),Z==="object"?be:JSON.stringify(be)},w.modifyFrames=function(G,$){var J,Z,re,ne=G._transitionData._frames,j=G._transitionData._frameHash;for(J=0;J<$.length;J++)switch(Z=$[J],Z.type){case"replace":re=Z.value;var ee=(ne[Z.index]||{}).name,ie=re.name;ne[Z.index]=j[ie]=re,ie!==ee&&(delete j[ee],j[ie]=re);break;case"insert":re=Z.value,j[re.name]=re,ne.splice(Z.index,0,re);break;case"delete":re=ne[Z.index],delete j[re.name],ne.splice(Z.index,1);break}return Promise.resolve()},w.computeFrame=function(G,$){var J=G._transitionData._frameHash,Z,re,ne,j;if(!$)throw new Error("computeFrame must be given a string frame name");var ee=J[$.toString()];if(!ee)return!1;for(var ie=[ee],fe=[ee.name];ee.baseframe&&(ee=J[ee.baseframe.toString()])&&fe.indexOf(ee.name)===-1;)ie.push(ee),fe.push(ee.name);for(var be={};ee=ie.pop();)if(ee.layout&&(be.layout=w.extendLayout(be.layout,ee.layout)),ee.data){if(be.data||(be.data=[]),re=ee.traces,!re)for(re=[],Z=0;Z0&&(G._transitioningWithDuration=!0),G._transitionData._interruptCallbacks.push(function(){Z=!0}),J.redraw&&G._transitionData._interruptCallbacks.push(function(){return t.call("redraw",G)}),G._transitionData._interruptCallbacks.push(function(){G.emit("plotly_transitioninterrupted",[])});var Be=0,Ie=0;function Ze(){return Be++,function(){Ie++,!Z&&Ie===Be&&ee(Ae)}}J.runFn(Ze),setTimeout(Ze())})}function ee(Ae){if(G._transitionData)return ne(G._transitionData._interruptCallbacks),Promise.resolve().then(function(){if(J.redraw)return t.call("redraw",G)}).then(function(){G._transitioning=!1,G._transitioningWithDuration=!1,G.emit("plotly_transitioned",[])}).then(Ae)}function ie(){if(G._transitionData)return G._transitioning=!1,re(G._transitionData._interruptCallbacks)}var fe=[w.previousPromises,ie,J.prepareFn,w.rehover,w.reselect,j],be=a.syncOrAsync(fe,G);return(!be||!be.then)&&(be=Promise.resolve()),be.then(function(){return G})}w.doCalcdata=function(G,$){var J=s.list(G),Z=G._fullData,re=G._fullLayout,ne,j,ee,ie,fe=new Array(Z.length),be=(G.calcdata||[]).slice();for(G.calcdata=fe,re._numBoxes=0,re._numViolins=0,re._violinScaleGroupStats={},G._hmpixcount=0,G._hmlumcount=0,re._piecolormap={},re._sunburstcolormap={},re._treemapcolormap={},re._iciclecolormap={},re._funnelareacolormap={},ee=0;ee=0;ie--)if(ce[ie].enabled){ne._indexToPoints=ce[ie]._indexToPoints;break}j&&j.calc&&(ge=j.calc(G,ne))}(!Array.isArray(ge)||!ge[0])&&(ge=[{x:n,y:n}]),ge[0].t||(ge[0].t={}),ge[0].trace=ne,fe[lt]=ge}}for(se(J,Z,re),ee=0;eeee||Ie>ie)&&(ne.style("overflow","hidden"),Ae=ne.node().getBoundingClientRect(),Be=Ae.width,Ie=Ae.height);var Ze=+O.attr("x"),at=+O.attr("y"),it=G||O.node().getBoundingClientRect().height,et=-it/4;if(ue[0]==="y")j.attr({transform:"rotate("+[-90,Ze,at]+")"+x(-Be/2,et-Ie/2)});else if(ue[0]==="l")at=et-Ie/2;else if(ue[0]==="a"&&ue.indexOf("atitle")!==0)Ze=0,at=et;else{var lt=O.attr("text-anchor");Ze=Ze-Be*(lt==="middle"?.5:lt==="end"?1:0),at=at+et-Ie/2}ne.attr({x:Ze,y:at}),N&&N.call(O,j),he(j)})})):se(),O};var t=/(<|<|<)/g,r=/(>|>|>)/g;function o(O){return O.replace(t,"\\lt ").replace(r,"\\gt ")}var a=[["$","$"],["\\(","\\)"]];function i(O,I,N){var U=parseInt((MathJax.version||"").split(".")[0]);if(U!==2&&U!==3){g.warn("No MathJax version:",MathJax.version);return}var W,Q,ue,se,he=function(){return Q=g.extendDeepAll({},MathJax.Hub.config),ue=MathJax.Hub.processSectionDelay,MathJax.Hub.processSectionDelay!==void 0&&(MathJax.Hub.processSectionDelay=0),MathJax.Hub.Config({messageStyle:"none",tex2jax:{inlineMath:a},displayAlign:"left"})},G=function(){Q=g.extendDeepAll({},MathJax.config),MathJax.config.tex||(MathJax.config.tex={}),MathJax.config.tex.inlineMath=a},$=function(){if(W=MathJax.Hub.config.menuSettings.renderer,W!=="SVG")return MathJax.Hub.setRenderer("SVG")},J=function(){W=MathJax.config.startup.output,W!=="svg"&&(MathJax.config.startup.output="svg")},Z=function(){var fe="math-output-"+g.randstr({},64);se=H.select("body").append("div").attr({id:fe}).style({visibility:"hidden",position:"absolute","font-size":I.fontSize+"px"}).text(o(O));var be=se.node();return U===2?MathJax.Hub.Typeset(be):MathJax.typeset([be])},re=function(){var fe=se.select(U===2?".MathJax_SVG":".MathJax"),be=!fe.empty()&&se.select("svg").node();if(!be)g.log("There was an error in the tex syntax.",O),N();else{var Ae=be.getBoundingClientRect(),Be;U===2?Be=H.select("body").select("#MathJax_SVG_glyphs"):Be=fe.select("defs"),N(fe,Be,Ae)}se.remove()},ne=function(){if(W!=="SVG")return MathJax.Hub.setRenderer(W)},j=function(){W!=="svg"&&(MathJax.config.startup.output=W)},ee=function(){return ue!==void 0&&(MathJax.Hub.processSectionDelay=ue),MathJax.Hub.Config(Q)},ie=function(){MathJax.config=Q};U===2?MathJax.Hub.Queue(he,$,Z,re,ne,ee):U===3&&(G(),J(),MathJax.startup.defaultReady(),MathJax.startup.promise.then(function(){Z(),re(),j(),ie()}))}var n={sup:"font-size:70%",sub:"font-size:70%",s:"text-decoration:line-through",u:"text-decoration:underline",b:"font-weight:bold",i:"font-style:italic",a:"cursor:pointer",span:"",em:"font-style:italic;font-weight:bold"},s={sub:"0.3em",sup:"-0.6em"},c={sub:"-0.21em",sup:"0.42em"},h="\u200B",v=["http:","https:","mailto:","",void 0,":"],p=X.NEWLINES=/(\r\n?|\n)/g,T=/(<[^<>]*>)/,l=/<(\/?)([^ >]*)(\s+(.*))?>/i,_=//i;X.BR_TAG_ALL=//gi;var w=/(^|[\s"'])style\s*=\s*("([^"]*);?"|'([^']*);?')/i,S=/(^|[\s"'])href\s*=\s*("([^"]*)"|'([^']*)')/i,E=/(^|[\s"'])target\s*=\s*("([^"\s]*)"|'([^'\s]*)')/i,m=/(^|[\s"'])popup\s*=\s*("([\w=,]*)"|'([\w=,]*)')/i;function b(O,I){if(!O)return null;var N=O.match(I),U=N&&(N[3]||N[4]);return U&&f(U)}var d=/(^|;)\s*color:/;X.plainText=function(O,I){I=I||{};for(var N=I.len!==void 0&&I.len!==-1?I.len:1/0,U=I.allowedTags!==void 0?I.allowedTags:["br"],W="...",Q=W.length,ue=O.split(T),se=[],he="",G=0,$=0;$Q?se.push(J.substr(0,j-Q)+W):se.push(J.substr(0,j));break}he=""}}return se.join("")};var u={mu:"\u03BC",amp:"&",lt:"<",gt:">",nbsp:"\xA0",times:"\xD7",plusmn:"\xB1",deg:"\xB0"},y=/&(#\d+|#x[\da-fA-F]+|[a-z]+);/g;function f(O){return O.replace(y,function(I,N){var U;return N.charAt(0)==="#"?U=P(N.charAt(1)==="x"?parseInt(N.substr(2),16):parseInt(N.substr(1),10)):U=u[N],U||I})}X.convertEntities=f;function P(O){if(!(O>1114111)){var I=String.fromCodePoint;if(I)return I(O);var N=String.fromCharCode;return O<=65535?N(O):N((O>>10)+55232,O%1024+56320)}}function L(O,I){I=I.replace(p," ");var N=!1,U=[],W,Q=-1;function ue(){Q++;var Ie=document.createElementNS(A.svg,"tspan");H.select(Ie).attr({class:"line",dy:Q*M+"em"}),O.appendChild(Ie),W=Ie;var Ze=U;if(U=[{node:Ie}],Ze.length>1)for(var at=1;at.",I);return}var Ze=U.pop();Ie!==Ze.type&&g.log("Start tag <"+Ze.type+"> doesnt match end tag <"+Ie+">. Pretending it did match.",I),W=U[U.length-1].node}var $=_.test(I);$?ue():(W=O,U=[{node:O}]);for(var J=I.split(T),Z=0;Z=0;_--,w++){var S=p[_];l[w]=[1-S[0],S[1]]}return l}function c(p,T){T=T||{};for(var l=p.domain,_=p.range,w=_.length,S=new Array(w),E=0;Ep-h?h=p-(v-p):v-p=0?_=o.colorscale.sequential:_=o.colorscale.sequentialminus,s._sync("colorscale",_)}}}}),Su=Ye({"src/components/colorscale/index.js"(X,H){"use strict";var g=Hg(),x=Up();H.exports={moduleType:"component",name:"colorscale",attributes:tu(),layoutAttributes:nS(),supplyLayoutDefaults:tO(),handleDefaults:sh(),crossTraceDefaults:rO(),calc:jp(),scales:g.scales,defaultScale:g.defaultScale,getScale:g.get,isValidScale:g.isValid,hasColorscale:x.hasColorscale,extractOpts:x.extractOpts,extractScale:x.extractScale,flipScale:x.flipScale,makeColorScaleFunc:x.makeColorScaleFunc,makeColorScaleFuncFromTrace:x.makeColorScaleFuncFromTrace}}}),uu=Ye({"src/traces/scatter/subtypes.js"(X,H){"use strict";var g=ta(),x=xp().isTypedArraySpec;H.exports={hasLines:function(A){return A.visible&&A.mode&&A.mode.indexOf("lines")!==-1},hasMarkers:function(A){return A.visible&&(A.mode&&A.mode.indexOf("markers")!==-1||A.type==="splom")},hasText:function(A){return A.visible&&A.mode&&A.mode.indexOf("text")!==-1},isBubble:function(A){var M=A.marker;return g.isPlainObject(M)&&(g.isArrayOrTypedArray(M.size)||x(M.size))}}}}),t1=Ye({"src/traces/scatter/make_bubble_size_func.js"(X,H){"use strict";var g=jo();H.exports=function(A,M){M||(M=2);var e=A.marker,t=e.sizeref||1,r=e.sizemin||0,o=e.sizemode==="area"?function(a){return Math.sqrt(a/t)}:function(a){return a/t};return function(a){var i=o(a/M);return g(i)&&i>0?Math.max(i,r):0}}}}),Qp=Ye({"src/components/fx/helpers.js"(X){"use strict";var H=ta();X.getSubplot=function(t){return t.subplot||t.xaxis+t.yaxis||t.geo},X.isTraceInSubplots=function(t,r){if(t.type==="splom"){for(var o=t.xaxes||[],a=t.yaxes||[],i=0;i=0&&o.index2&&(r.push([a].concat(i.splice(0,2))),n="l",a=a=="m"?"l":"L");;){if(i.length==g[n])return i.unshift(a),r.push(i);if(i.length0&&(ge=100,Me=Me.replace("-open","")),Me.indexOf("-dot")>0&&(ge+=200,Me=Me.replace("-dot","")),Me=l.symbolNames.indexOf(Me),Me>=0&&(Me+=ge)}return Me%100>=d||Me>=400?0:Math.floor(Math.max(Me,0))};function y(Me,ge,ce,ze){var tt=Me%100;return l.symbolFuncs[tt](ge,ce,ze)+(Me>=200?u:"")}var f=A("~f"),P={radial:{type:"radial"},radialreversed:{type:"radial",reversed:!0},horizontal:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0}},horizontalreversed:{type:"linear",start:{x:1,y:0},stop:{x:0,y:0},reversed:!0},vertical:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0}},verticalreversed:{type:"linear",start:{x:0,y:1},stop:{x:0,y:0},reversed:!0}};l.gradient=function(Me,ge,ce,ze,tt,nt){var Qe=P[ze];return L(Me,ge,ce,Qe.type,tt,nt,Qe.start,Qe.stop,!1,Qe.reversed)};function L(Me,ge,ce,ze,tt,nt,Qe,Ct,St,Ot){var jt=tt.length,ur;ze==="linear"?ur={node:"linearGradient",attrs:{x1:Qe.x,y1:Qe.y,x2:Ct.x,y2:Ct.y,gradientUnits:St?"userSpaceOnUse":"objectBoundingBox"},reversed:Ot}:ze==="radial"&&(ur={node:"radialGradient",reversed:Ot});for(var ar=new Array(jt),Cr=0;Cr=0&&Me.i===void 0&&(Me.i=nt.i),ge.style("opacity",ze.selectedOpacityFn?ze.selectedOpacityFn(Me):Me.mo===void 0?Qe.opacity:Me.mo),ze.ms2mrc){var St;Me.ms==="various"||Qe.size==="various"?St=3:St=ze.ms2mrc(Me.ms),Me.mrc=St,ze.selectedSizeFn&&(St=Me.mrc=ze.selectedSizeFn(Me));var Ot=l.symbolNumber(Me.mx||Qe.symbol)||0;Me.om=Ot%200>=100;var jt=lt(Me,ce),ur=ee(Me,ce);ge.attr("d",y(Ot,St,jt,ur))}var ar=!1,Cr,vr,_r;if(Me.so)_r=Ct.outlierwidth,vr=Ct.outliercolor,Cr=Qe.outliercolor;else{var yt=(Ct||{}).width;_r=(Me.mlw+1||yt+1||(Me.trace?(Me.trace.marker.line||{}).width:0)+1)-1||0,"mlc"in Me?vr=Me.mlcc=ze.lineScale(Me.mlc):x.isArrayOrTypedArray(Ct.color)?vr=r.defaultLine:vr=Ct.color,x.isArrayOrTypedArray(Qe.color)&&(Cr=r.defaultLine,ar=!0),"mc"in Me?Cr=Me.mcc=ze.markerScale(Me.mc):Cr=Qe.color||Qe.colors||"rgba(0,0,0,0)",ze.selectedColorFn&&(Cr=ze.selectedColorFn(Me))}if(Me.om)ge.call(r.stroke,Cr).style({"stroke-width":(_r||1)+"px",fill:"none"});else{ge.style("stroke-width",(Me.isBlank?0:_r)+"px");var Fe=Qe.gradient,Ke=Me.mgt;Ke?ar=!0:Ke=Fe&&Fe.type,x.isArrayOrTypedArray(Ke)&&(Ke=Ke[0],P[Ke]||(Ke=0));var Ne=Qe.pattern,Ee=Ne&&l.getPatternAttr(Ne.shape,Me.i,"");if(Ke&&Ke!=="none"){var Ve=Me.mgc;Ve?ar=!0:Ve=Fe.color;var ke=ce.uid;ar&&(ke+="-"+Me.i),l.gradient(ge,tt,ke,Ke,[[0,Ve],[1,Cr]],"fill")}else if(Ee){var Te=!1,Le=Ne.fgcolor;!Le&&nt&&nt.color&&(Le=nt.color,Te=!0);var rt=l.getPatternAttr(Le,Me.i,nt&&nt.color||null),dt=l.getPatternAttr(Ne.bgcolor,Me.i,null),xt=Ne.fgopacity,It=l.getPatternAttr(Ne.size,Me.i,8),Bt=l.getPatternAttr(Ne.solidity,Me.i,.3);Te=Te||Me.mcc||x.isArrayOrTypedArray(Ne.shape)||x.isArrayOrTypedArray(Ne.bgcolor)||x.isArrayOrTypedArray(Ne.fgcolor)||x.isArrayOrTypedArray(Ne.size)||x.isArrayOrTypedArray(Ne.solidity);var Gt=ce.uid;Te&&(Gt+="-"+Me.i),l.pattern(ge,"point",tt,Gt,Ee,It,Bt,Me.mcc,Ne.fillmode,dt,rt,xt)}else x.isArrayOrTypedArray(Cr)?r.fill(ge,Cr[Me.i]):r.fill(ge,Cr);_r&&r.stroke(ge,vr)}},l.makePointStyleFns=function(Me){var ge={},ce=Me.marker;return ge.markerScale=l.tryColorscale(ce,""),ge.lineScale=l.tryColorscale(ce,"line"),t.traceIs(Me,"symbols")&&(ge.ms2mrc=v.isBubble(Me)?p(Me):function(){return(ce.size||6)/2}),Me.selectedpoints&&x.extendFlat(ge,l.makeSelectedPointStyleFns(Me)),ge},l.makeSelectedPointStyleFns=function(Me){var ge={},ce=Me.selected||{},ze=Me.unselected||{},tt=Me.marker||{},nt=ce.marker||{},Qe=ze.marker||{},Ct=tt.opacity,St=nt.opacity,Ot=Qe.opacity,jt=St!==void 0,ur=Ot!==void 0;(x.isArrayOrTypedArray(Ct)||jt||ur)&&(ge.selectedOpacityFn=function(Ee){var Ve=Ee.mo===void 0?tt.opacity:Ee.mo;return Ee.selected?jt?St:Ve:ur?Ot:h*Ve});var ar=tt.color,Cr=nt.color,vr=Qe.color;(Cr||vr)&&(ge.selectedColorFn=function(Ee){var Ve=Ee.mcc||ar;return Ee.selected?Cr||Ve:vr||Ve});var _r=tt.size,yt=nt.size,Fe=Qe.size,Ke=yt!==void 0,Ne=Fe!==void 0;return t.traceIs(Me,"symbols")&&(Ke||Ne)&&(ge.selectedSizeFn=function(Ee){var Ve=Ee.mrc||_r/2;return Ee.selected?Ke?yt/2:Ve:Ne?Fe/2:Ve}),ge},l.makeSelectedTextStyleFns=function(Me){var ge={},ce=Me.selected||{},ze=Me.unselected||{},tt=Me.textfont||{},nt=ce.textfont||{},Qe=ze.textfont||{},Ct=tt.color,St=nt.color,Ot=Qe.color;return ge.selectedTextColorFn=function(jt){var ur=jt.tc||Ct;return jt.selected?St||ur:Ot||(St?ur:r.addOpacity(ur,h))},ge},l.selectedPointStyle=function(Me,ge){if(!(!Me.size()||!ge.selectedpoints)){var ce=l.makeSelectedPointStyleFns(ge),ze=ge.marker||{},tt=[];ce.selectedOpacityFn&&tt.push(function(nt,Qe){nt.style("opacity",ce.selectedOpacityFn(Qe))}),ce.selectedColorFn&&tt.push(function(nt,Qe){r.fill(nt,ce.selectedColorFn(Qe))}),ce.selectedSizeFn&&tt.push(function(nt,Qe){var Ct=Qe.mx||ze.symbol||0,St=ce.selectedSizeFn(Qe);nt.attr("d",y(l.symbolNumber(Ct),St,lt(Qe,ge),ee(Qe,ge))),Qe.mrc2=St}),tt.length&&Me.each(function(nt){for(var Qe=g.select(this),Ct=0;Ct0?ce:0}l.textPointStyle=function(Me,ge,ce){if(Me.size()){var ze;if(ge.selectedpoints){var tt=l.makeSelectedTextStyleFns(ge);ze=tt.selectedTextColorFn}var nt=ge.texttemplate,Qe=ce._fullLayout;Me.each(function(Ct){var St=g.select(this),Ot=nt?x.extractOption(Ct,ge,"txt","texttemplate"):x.extractOption(Ct,ge,"tx","text");if(!Ot&&Ot!==0){St.remove();return}if(nt){var jt=ge._module.formatLabels,ur=jt?jt(Ct,ge,Qe):{},ar={};T(ar,ge,Ct.i);var Cr=ge._meta||{};Ot=x.texttemplateString(Ot,ur,Qe._d3locale,ar,Ct,Cr)}var vr=Ct.tp||ge.textposition,_r=B(Ct,ge),yt=ze?ze(Ct):Ct.tc||ge.textfont.color;St.call(l.font,{family:Ct.tf||ge.textfont.family,weight:Ct.tw||ge.textfont.weight,style:Ct.ty||ge.textfont.style,variant:Ct.tv||ge.textfont.variant,textcase:Ct.tC||ge.textfont.textcase,lineposition:Ct.tE||ge.textfont.lineposition,shadow:Ct.tS||ge.textfont.shadow,size:_r,color:yt}).text(Ot).call(i.convertToTspans,ce).call(F,vr,_r,Ct.mrc)})}},l.selectedTextStyle=function(Me,ge){if(!(!Me.size()||!ge.selectedpoints)){var ce=l.makeSelectedTextStyleFns(ge);Me.each(function(ze){var tt=g.select(this),nt=ce.selectedTextColorFn(ze),Qe=ze.tp||ge.textposition,Ct=B(ze,ge);r.fill(tt,nt);var St=t.traceIs(ge,"bar-like");F(tt,Qe,Ct,ze.mrc2||ze.mrc,St)})}};var O=.5;l.smoothopen=function(Me,ge){if(Me.length<3)return"M"+Me.join("L");var ce="M"+Me[0],ze=[],tt;for(tt=1;tt=St||Ee>=jt&&Ee<=St)&&(Ve<=ur&&Ve>=Ot||Ve>=ur&&Ve<=Ot)&&(Me=[Ee,Ve])}return Me}l.applyBackoff=G,l.makeTester=function(){var Me=x.ensureSingleById(g.select("body"),"svg","js-plotly-tester",function(ce){ce.attr(n.svgAttrs).style({position:"absolute",left:"-10000px",top:"-10000px",width:"9000px",height:"9000px","z-index":"1"})}),ge=x.ensureSingle(Me,"path","js-reference-point",function(ce){ce.attr("d","M0,0H1V1H0Z").style({"stroke-width":0,fill:"black"})});l.tester=Me,l.testref=ge},l.savedBBoxes={};var $=0,J=1e4;l.bBox=function(Me,ge,ce){ce||(ce=Z(Me));var ze;if(ce){if(ze=l.savedBBoxes[ce],ze)return x.extendFlat({},ze)}else if(Me.childNodes.length===1){var tt=Me.childNodes[0];if(ce=Z(tt),ce){var nt=+tt.getAttribute("x")||0,Qe=+tt.getAttribute("y")||0,Ct=tt.getAttribute("transform");if(!Ct){var St=l.bBox(tt,!1,ce);return nt&&(St.left+=nt,St.right+=nt),Qe&&(St.top+=Qe,St.bottom+=Qe),St}if(ce+="~"+nt+"~"+Qe+"~"+Ct,ze=l.savedBBoxes[ce],ze)return x.extendFlat({},ze)}}var Ot,jt;ge?Ot=Me:(jt=l.tester.node(),Ot=Me.cloneNode(!0),jt.appendChild(Ot)),g.select(Ot).attr("transform",null).call(i.positionText,0,0);var ur=Ot.getBoundingClientRect(),ar=l.testref.node().getBoundingClientRect();ge||jt.removeChild(Ot);var Cr={height:ur.height,width:ur.width,left:ur.left-ar.left,top:ur.top-ar.top,right:ur.right-ar.left,bottom:ur.bottom-ar.top};return $>=J&&(l.savedBBoxes={},$=0),ce&&(l.savedBBoxes[ce]=Cr),$++,x.extendFlat({},Cr)};function Z(Me){var ge=Me.getAttribute("data-unformatted");if(ge!==null)return ge+Me.getAttribute("data-math")+Me.getAttribute("text-anchor")+Me.getAttribute("style")}l.setClipUrl=function(Me,ge,ce){Me.attr("clip-path",re(ge,ce))};function re(Me,ge){if(!Me)return null;var ce=ge._context,ze=ce._exportedPlot?"":ce._baseUrl||"";return ze?"url('"+ze+"#"+Me+"')":"url(#"+Me+")"}l.getTranslate=function(Me){var ge=/.*\btranslate\((-?\d*\.?\d*)[^-\d]*(-?\d*\.?\d*)[^\d].*/,ce=Me.attr?"attr":"getAttribute",ze=Me[ce]("transform")||"",tt=ze.replace(ge,function(nt,Qe,Ct){return[Qe,Ct].join(" ")}).split(" ");return{x:+tt[0]||0,y:+tt[1]||0}},l.setTranslate=function(Me,ge,ce){var ze=/(\btranslate\(.*?\);?)/,tt=Me.attr?"attr":"getAttribute",nt=Me.attr?"attr":"setAttribute",Qe=Me[tt]("transform")||"";return ge=ge||0,ce=ce||0,Qe=Qe.replace(ze,"").trim(),Qe+=a(ge,ce),Qe=Qe.trim(),Me[nt]("transform",Qe),Qe},l.getScale=function(Me){var ge=/.*\bscale\((\d*\.?\d*)[^\d]*(\d*\.?\d*)[^\d].*/,ce=Me.attr?"attr":"getAttribute",ze=Me[ce]("transform")||"",tt=ze.replace(ge,function(nt,Qe,Ct){return[Qe,Ct].join(" ")}).split(" ");return{x:+tt[0]||1,y:+tt[1]||1}},l.setScale=function(Me,ge,ce){var ze=/(\bscale\(.*?\);?)/,tt=Me.attr?"attr":"getAttribute",nt=Me.attr?"attr":"setAttribute",Qe=Me[tt]("transform")||"";return ge=ge||1,ce=ce||1,Qe=Qe.replace(ze,"").trim(),Qe+="scale("+ge+","+ce+")",Qe=Qe.trim(),Me[nt]("transform",Qe),Qe};var ne=/\s*sc.*/;l.setPointGroupScale=function(Me,ge,ce){if(ge=ge||1,ce=ce||1,!!Me){var ze=ge===1&&ce===1?"":"scale("+ge+","+ce+")";Me.each(function(){var tt=(this.getAttribute("transform")||"").replace(ne,"");tt+=ze,tt=tt.trim(),this.setAttribute("transform",tt)})}};var j=/translate\([^)]*\)\s*$/;l.setTextPointsScale=function(Me,ge,ce){Me&&Me.each(function(){var ze,tt=g.select(this),nt=tt.select("text");if(nt.node()){var Qe=parseFloat(nt.attr("x")||0),Ct=parseFloat(nt.attr("y")||0),St=(tt.attr("transform")||"").match(j);ge===1&&ce===1?ze=[]:ze=[a(Qe,Ct),"scale("+ge+","+ce+")",a(-Qe,-Ct)],St&&ze.push(St),tt.attr("transform",ze.join(""))}})};function ee(Me,ge){var ce;return Me&&(ce=Me.mf),ce===void 0&&(ce=ge.marker&&ge.marker.standoff||0),!ge._geo&&!ge._xA?-ce:ce}l.getMarkerStandoff=ee;var ie=Math.atan2,fe=Math.cos,be=Math.sin;function Ae(Me,ge){var ce=ge[0],ze=ge[1];return[ce*fe(Me)-ze*be(Me),ce*be(Me)+ze*fe(Me)]}var Be,Ie,Ze,at,it,et;function lt(Me,ge){var ce=Me.ma;ce===void 0&&(ce=ge.marker.angle,(!ce||x.isArrayOrTypedArray(ce))&&(ce=0));var ze,tt,nt=ge.marker.angleref;if(nt==="previous"||nt==="north"){if(ge._geo){var Qe=ge._geo.project(Me.lonlat);ze=Qe[0],tt=Qe[1]}else{var Ct=ge._xA,St=ge._yA;if(Ct&&St)ze=Ct.c2p(Me.x),tt=St.c2p(Me.y);else return 90}if(ge._geo){var Ot=Me.lonlat[0],jt=Me.lonlat[1],ur=ge._geo.project([Ot,jt+1e-5]),ar=ge._geo.project([Ot+1e-5,jt]),Cr=ie(ar[1]-tt,ar[0]-ze),vr=ie(ur[1]-tt,ur[0]-ze),_r;if(nt==="north")_r=ce/180*Math.PI;else if(nt==="previous"){var yt=Ot/180*Math.PI,Fe=jt/180*Math.PI,Ke=Be/180*Math.PI,Ne=Ie/180*Math.PI,Ee=Ke-yt,Ve=fe(Ne)*be(Ee),ke=be(Ne)*fe(Fe)-fe(Ne)*be(Fe)*fe(Ee);_r=-ie(Ve,ke)-Math.PI,Be=Ot,Ie=jt}var Te=Ae(Cr,[fe(_r),0]),Le=Ae(vr,[be(_r),0]);ce=ie(Te[1]+Le[1],Te[0]+Le[0])/Math.PI*180,nt==="previous"&&!(et===ge.uid&&Me.i===it+1)&&(ce=null)}if(nt==="previous"&&!ge._geo)if(et===ge.uid&&Me.i===it+1&&M(ze)&&M(tt)){var rt=ze-Ze,dt=tt-at,xt=ge.line&&ge.line.shape||"",It=xt.slice(xt.length-1);It==="h"&&(dt=0),It==="v"&&(rt=0),ce+=ie(dt,rt)/Math.PI*180+90}else ce=null}return Ze=ze,at=tt,it=Me.i,et=ge.uid,ce}l.getMarkerAngle=lt}}),Xg=Ye({"src/components/titles/index.js"(X,H){"use strict";var g=_n(),x=jo(),A=Gu(),M=Hn(),e=ta(),t=e.strTranslate,r=Bo(),o=Fn(),a=jl(),i=Xm(),n=oh().OPPOSITE_SIDE,s=/ [XY][0-9]* /,c=1.6,h=1.6;function v(p,T,l){var _=p._fullLayout,w=l.propContainer,S=l.propName,E=l.placeholder,m=l.traceIndex,b=l.avoid||{},d=l.attributes,u=l.transform,y=l.containerGroup,f=1,P=w.title,L=(P&&P.text?P.text:"").trim(),z=!1,F=P&&P.font?P.font:{},B=F.family,O=F.size,I=F.color,N=F.weight,U=F.style,W=F.variant,Q=F.textcase,ue=F.lineposition,se=F.shadow,he=l.subtitlePropName,G=!!he,$=l.subtitlePlaceholder,J=(w.title||{}).subtitle||{text:"",font:{}},Z=J.text.trim(),re=!1,ne=1,j=J.font,ee=j.family,ie=j.size,fe=j.color,be=j.weight,Ae=j.style,Be=j.variant,Ie=j.textcase,Ze=j.lineposition,at=j.shadow,it;S==="title.text"?it="titleText":S.indexOf("axis")!==-1?it="axisTitleText":S.indexOf("colorbar"!==-1)&&(it="colorbarTitleText");var et=p._context.edits[it];function lt(ar,Cr){return ar===void 0||Cr===void 0?!1:ar.replace(s," % ")===Cr.replace(s," % ")}L===""?f=0:lt(L,E)&&(et||(L=""),f=.2,z=!0),G&&(Z===""?ne=0:lt(Z,$)&&(et||(Z=""),ne=.2,re=!0)),l._meta?L=e.templateString(L,l._meta):_._meta&&(L=e.templateString(L,_._meta));var Me=L||Z||et,ge;y||(y=e.ensureSingle(_._infolayer,"g","g-"+T),ge=_._hColorbarMoveTitle);var ce=y.selectAll("text."+T).data(Me?[0]:[]);ce.enter().append("text"),ce.text(L).attr("class",T),ce.exit().remove();var ze=null,tt=T+"-subtitle",nt=Z||et;if(G&&nt&&(ze=y.selectAll("text."+tt).data(nt?[0]:[]),ze.enter().append("text"),ze.text(Z).attr("class",tt),ze.exit().remove()),!Me)return y;function Qe(ar,Cr){e.syncOrAsync([Ct,St],{title:ar,subtitle:Cr})}function Ct(ar){var Cr=ar.title,vr=ar.subtitle,_r;!u&&ge&&(u={}),u?(_r="",u.rotate&&(_r+="rotate("+[u.rotate,d.x,d.y]+")"),(u.offset||ge)&&(_r+=t(0,(u.offset||0)-(ge||0)))):_r=null,Cr.attr("transform",_r);function yt(ke){if(ke){var Te=g.select(ke.node().parentNode).select("."+tt);if(!Te.empty()){var Le=ke.node().getBBox();if(Le.height){var rt=Le.y+Le.height+c*ie;Te.attr("y",rt)}}}}if(Cr.style("opacity",f*o.opacity(I)).call(r.font,{color:o.rgb(I),size:g.round(O,2),family:B,weight:N,style:U,variant:W,textcase:Q,shadow:se,lineposition:ue}).attr(d).call(a.convertToTspans,p,yt),vr){var Fe=y.select("."+T+"-math-group"),Ke=Cr.node().getBBox(),Ne=Fe.node()?Fe.node().getBBox():void 0,Ee=Ne?Ne.y+Ne.height+c*ie:Ke.y+Ke.height+h*ie,Ve=e.extendFlat({},d,{y:Ee});vr.attr("transform",_r),vr.style("opacity",ne*o.opacity(fe)).call(r.font,{color:o.rgb(fe),size:g.round(ie,2),family:ee,weight:be,style:Ae,variant:Be,textcase:Ie,shadow:at,lineposition:Ze}).attr(Ve).call(a.convertToTspans,p)}return A.previousPromises(p)}function St(ar){var Cr=ar.title,vr=g.select(Cr.node().parentNode);if(b&&b.selection&&b.side&&L){vr.attr("transform",null);var _r=n[b.side],yt=b.side==="left"||b.side==="top"?-1:1,Fe=x(b.pad)?b.pad:2,Ke=r.bBox(vr.node()),Ne={t:0,b:0,l:0,r:0},Ee=p._fullLayout._reservedMargin;for(var Ve in Ee)for(var ke in Ee[Ve]){var Te=Ee[Ve][ke];Ne[ke]=Math.max(Ne[ke],Te)}var Le={left:Ne.l,top:Ne.t,right:_.width-Ne.r,bottom:_.height-Ne.b},rt=b.maxShift||yt*(Le[b.side]-Ke[b.side]),dt=0;if(rt<0)dt=rt;else{var xt=b.offsetLeft||0,It=b.offsetTop||0;Ke.left-=xt,Ke.right-=xt,Ke.top-=It,Ke.bottom-=It,b.selection.each(function(){var Gt=r.bBox(this);e.bBoxIntersect(Ke,Gt,Fe)&&(dt=Math.max(dt,yt*(Gt[b.side]-Ke[_r])+Fe))}),dt=Math.min(rt,dt),w._titleScoot=Math.abs(dt)}if(dt>0||rt<0){var Bt={left:[-dt,0],right:[dt,0],top:[0,-dt],bottom:[0,dt]}[b.side];vr.attr("transform",t(Bt[0],Bt[1]))}}}ce.call(Qe,ze);function Ot(ar,Cr){ar.text(Cr).on("mouseover.opacity",function(){g.select(this).transition().duration(i.SHOW_PLACEHOLDER).style("opacity",1)}).on("mouseout.opacity",function(){g.select(this).transition().duration(i.HIDE_PLACEHOLDER).style("opacity",0)})}if(et&&(L?ce.on(".opacity",null):(Ot(ce,E),z=!0),ce.call(a.makeEditable,{gd:p}).on("edit",function(ar){m!==void 0?M.call("_guiRestyle",p,S,ar,m):M.call("_guiRelayout",p,S,ar)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(Qe)}).on("input",function(ar){this.text(ar||" ").call(a.positionText,d.x,d.y)}),G)){if(G&&!L){var jt=ce.node().getBBox(),ur=jt.y+jt.height+h*ie;ze.attr("y",ur)}Z?ze.on(".opacity",null):(Ot(ze,$),re=!0),ze.call(a.makeEditable,{gd:p}).on("edit",function(ar){M.call("_guiRelayout",p,"title.subtitle.text",ar)}).on("cancel",function(){this.text(this.attr("data-unformatted")).call(Qe)}).on("input",function(ar){this.text(ar||" ").call(a.positionText,ze.attr("x"),ze.attr("y"))})}return ce.classed("js-placeholder",z),ze&&ze.classed("js-placeholder",re),y}H.exports={draw:v,SUBTITLE_PADDING_EM:h,SUBTITLE_PADDING_MATHJAX_EM:c}}}),wv=Ye({"src/plots/cartesian/set_convert.js"(X,H){"use strict";var g=_n(),x=Np().utcFormat,A=ta(),M=A.numberFormat,e=jo(),t=A.cleanNumber,r=A.ms2DateTime,o=A.dateTime2ms,a=A.ensureNumber,i=A.isArrayOrTypedArray,n=ks(),s=n.FP_SAFE,c=n.BADNUM,h=n.LOG_CLIP,v=n.ONEWEEK,p=n.ONEDAY,T=n.ONEHOUR,l=n.ONEMIN,_=n.ONESEC,w=Xc(),S=wh(),E=S.HOUR_PATTERN,m=S.WEEKDAY_PATTERN;function b(u){return Math.pow(10,u)}function d(u){return u!=null}H.exports=function(y,f){f=f||{};var P=y._id||"x",L=P.charAt(0);function z(Z,re){if(Z>0)return Math.log(Z)/Math.LN10;if(Z<=0&&re&&y.range&&y.range.length===2){var ne=y.range[0],j=y.range[1];return .5*(ne+j-2*h*Math.abs(ne-j))}else return c}function F(Z,re,ne,j){if((j||{}).msUTC&&e(Z))return+Z;var ee=o(Z,ne||y.calendar);if(ee===c)if(e(Z)){Z=+Z;var ie=Math.floor(A.mod(Z+.05,1)*10),fe=Math.round(Z-ie/10);ee=o(new Date(fe))+ie/10}else return c;return ee}function B(Z,re,ne){return r(Z,re,ne||y.calendar)}function O(Z){return y._categories[Math.round(Z)]}function I(Z){if(d(Z)){if(y._categoriesMap===void 0&&(y._categoriesMap={}),y._categoriesMap[Z]!==void 0)return y._categoriesMap[Z];y._categories.push(typeof Z=="number"?String(Z):Z);var re=y._categories.length-1;return y._categoriesMap[Z]=re,re}return c}function N(Z,re){for(var ne=new Array(re),j=0;jy.range[1]&&(ne=!ne);for(var j=ne?-1:1,ee=j*Z,ie=0,fe=0;feAe)ie=fe+1;else{ie=ee<(be+Ae)/2?fe:fe+1;break}}var Be=y._B[ie]||0;return isFinite(Be)?ue(Z,y._m2,Be):0},G=function(Z){var re=y._rangebreaks.length;if(!re)return se(Z,y._m,y._b);for(var ne=0,j=0;jy._rangebreaks[j].pmax&&(ne=j+1);return se(Z,y._m2,y._B[ne])}}y.c2l=y.type==="log"?z:a,y.l2c=y.type==="log"?b:a,y.l2p=he,y.p2l=G,y.c2p=y.type==="log"?function(Z,re){return he(z(Z,re))}:he,y.p2c=y.type==="log"?function(Z){return b(G(Z))}:G,["linear","-"].indexOf(y.type)!==-1?(y.d2r=y.r2d=y.d2c=y.r2c=y.d2l=y.r2l=t,y.c2d=y.c2r=y.l2d=y.l2r=a,y.d2p=y.r2p=function(Z){return y.l2p(t(Z))},y.p2d=y.p2r=G,y.cleanPos=a):y.type==="log"?(y.d2r=y.d2l=function(Z,re){return z(t(Z),re)},y.r2d=y.r2c=function(Z){return b(t(Z))},y.d2c=y.r2l=t,y.c2d=y.l2r=a,y.c2r=z,y.l2d=b,y.d2p=function(Z,re){return y.l2p(y.d2r(Z,re))},y.p2d=function(Z){return b(G(Z))},y.r2p=function(Z){return y.l2p(t(Z))},y.p2r=G,y.cleanPos=a):y.type==="date"?(y.d2r=y.r2d=A.identity,y.d2c=y.r2c=y.d2l=y.r2l=F,y.c2d=y.c2r=y.l2d=y.l2r=B,y.d2p=y.r2p=function(Z,re,ne){return y.l2p(F(Z,0,ne))},y.p2d=y.p2r=function(Z,re,ne){return B(G(Z),re,ne)},y.cleanPos=function(Z){return A.cleanDate(Z,c,y.calendar)}):y.type==="category"?(y.d2c=y.d2l=I,y.r2d=y.c2d=y.l2d=O,y.d2r=y.d2l_noadd=W,y.r2c=function(Z){var re=Q(Z);return re!==void 0?re:y.fraction2r(.5)},y.l2r=y.c2r=a,y.r2l=Q,y.d2p=function(Z){return y.l2p(y.r2c(Z))},y.p2d=function(Z){return O(G(Z))},y.r2p=y.d2p,y.p2r=G,y.cleanPos=function(Z){return typeof Z=="string"&&Z!==""?Z:a(Z)}):y.type==="multicategory"&&(y.r2d=y.c2d=y.l2d=O,y.d2r=y.d2l_noadd=W,y.r2c=function(Z){var re=W(Z);return re!==void 0?re:y.fraction2r(.5)},y.r2c_just_indices=U,y.l2r=y.c2r=a,y.r2l=W,y.d2p=function(Z){return y.l2p(y.r2c(Z))},y.p2d=function(Z){return O(G(Z))},y.r2p=y.d2p,y.p2r=G,y.cleanPos=function(Z){return Array.isArray(Z)||typeof Z=="string"&&Z!==""?Z:a(Z)},y.setupMultiCategory=function(Z){var re=y._traceIndices,ne,j,ee=y._matchGroup;if(ee&&y._categories.length===0){for(var ie in ee)if(ie!==P){var fe=f[w.id2name(ie)];re=re.concat(fe._traceIndices)}}var be=[[0,{}],[0,{}]],Ae=[];for(ne=0;nefe[1]&&(j[ie?0:1]=ne),j[0]===j[1]){var be=y.l2r(re),Ae=y.l2r(ne);if(re!==void 0){var Be=be+1;ne!==void 0&&(Be=Math.min(Be,Ae)),j[ie?1:0]=Be}if(ne!==void 0){var Ie=Ae+1;re!==void 0&&(Ie=Math.max(Ie,be)),j[ie?0:1]=Ie}}}},y.cleanRange=function(Z,re){y._cleanRange(Z,re),y.limitRange(Z)},y._cleanRange=function(Z,re){re||(re={}),Z||(Z="range");var ne=A.nestedProperty(y,Z).get(),j,ee;if(y.type==="date"?ee=A.dfltRange(y.calendar):L==="y"?ee=S.DFLTRANGEY:y._name==="realaxis"?ee=[0,1]:ee=re.dfltRange||S.DFLTRANGEX,ee=ee.slice(),(y.rangemode==="tozero"||y.rangemode==="nonnegative")&&(ee[0]=0),!ne||ne.length!==2){A.nestedProperty(y,Z).set(ee);return}var ie=ne[0]===null,fe=ne[1]===null;for(y.type==="date"&&!y.autorange&&(ne[0]=A.cleanDate(ne[0],c,y.calendar),ne[1]=A.cleanDate(ne[1],c,y.calendar)),j=0;j<2;j++)if(y.type==="date"){if(!A.isDateTime(ne[j],y.calendar)){y[Z]=ee;break}if(y.r2l(ne[0])===y.r2l(ne[1])){var be=A.constrain(y.r2l(ne[0]),A.MIN_MS+1e3,A.MAX_MS-1e3);ne[0]=y.l2r(be-1e3),ne[1]=y.l2r(be+1e3);break}}else{if(!e(ne[j]))if(!(ie||fe)&&e(ne[1-j]))ne[j]=ne[1-j]*(j?10:.1);else{y[Z]=ee;break}if(ne[j]<-s?ne[j]=-s:ne[j]>s&&(ne[j]=s),ne[0]===ne[1]){var Ae=Math.max(1,Math.abs(ne[0]*1e-6));ne[0]-=Ae,ne[1]+=Ae}}},y.setScale=function(Z){var re=f._size;if(y.overlaying){var ne=w.getFromId({_fullLayout:f},y.overlaying);y.domain=ne.domain}var j=Z&&y._r?"_r":"range",ee=y.calendar;y.cleanRange(j);var ie=y.r2l(y[j][0],ee),fe=y.r2l(y[j][1],ee),be=L==="y";if(be?(y._offset=re.t+(1-y.domain[1])*re.h,y._length=re.h*(y.domain[1]-y.domain[0]),y._m=y._length/(ie-fe),y._b=-y._m*fe):(y._offset=re.l+y.domain[0]*re.w,y._length=re.w*(y.domain[1]-y.domain[0]),y._m=y._length/(fe-ie),y._b=-y._m*ie),y._rangebreaks=[],y._lBreaks=0,y._m2=0,y._B=[],y.rangebreaks){var Ae,Be;if(y._rangebreaks=y.locateBreaks(Math.min(ie,fe),Math.max(ie,fe)),y._rangebreaks.length){for(Ae=0;Aefe&&(Ie=!Ie),Ie&&y._rangebreaks.reverse();var Ze=Ie?-1:1;for(y._m2=Ze*y._length/(Math.abs(fe-ie)-y._lBreaks),y._B.push(-y._m2*(be?fe:ie)),Ae=0;Aeee&&(ee+=7,ieee&&(ee+=24,ie=j&&ie=j&&Z=Qe.min&&(ceQe.max&&(Qe.max=ze),tt=!1)}tt&&fe.push({min:ce,max:ze})}};for(ne=0;ne_*2}function n(h){return Math.max(1,(h-1)/1e3)}function s(h,v){for(var p=h.length,T=n(p),l=0,_=0,w={},S=0;Sl*2}function c(h){return M(h[0])&&M(h[1])}}}),Yd=Ye({"src/plots/cartesian/autorange.js"(X,H){"use strict";var g=_n(),x=jo(),A=ta(),M=ks().FP_SAFE,e=Hn(),t=Bo(),r=Xc(),o=r.getFromId,a=r.isLinked;H.exports={applyAutorangeOptions:y,getAutoRange:i,makePadFn:s,doAutoRange:p,findExtremes:T,concatExtremes:v};function i(f,P){var L,z,F=[],B=f._fullLayout,O=s(B,P,0),I=s(B,P,1),N=v(f,P),U=N.min,W=N.max;if(U.length===0||W.length===0)return A.simpleMap(P.range,P.r2l);var Q=U[0].val,ue=W[0].val;for(L=1;L0&&(Ae=re-O(ee)-I(ie),Ae>ne?Be/Ae>j&&(fe=ee,be=ie,j=Be/Ae):Be/re>j&&(fe={val:ee.val,nopad:1},be={val:ie.val,nopad:1},j=Be/re));function Ie(lt,Me){return Math.max(lt,I(Me))}if(Q===ue){var Ze=Q-1,at=Q+1;if(J)if(Q===0)F=[0,1];else{var it=(Q>0?W:U).reduce(Ie,0),et=Q/(1-Math.min(.5,it/re));F=Q>0?[0,et]:[et,0]}else Z?F=[Math.max(0,Ze),Math.max(1,at)]:F=[Ze,at]}else J?(fe.val>=0&&(fe={val:0,nopad:1}),be.val<=0&&(be={val:0,nopad:1})):Z&&(fe.val-j*O(fe)<0&&(fe={val:0,nopad:1}),be.val<=0&&(be={val:1,nopad:1})),j=(be.val-fe.val-n(P,ee.val,ie.val))/(re-O(fe)-I(be)),F=[fe.val-j*O(fe),be.val+j*I(be)];return F=y(F,P),P.limitRange&&P.limitRange(),he&&F.reverse(),A.simpleMap(F,P.l2r||Number)}function n(f,P,L){var z=0;if(f.rangebreaks)for(var F=f.locateBreaks(P,L),B=0;B0?L.ppadplus:L.ppadminus)||L.ppad||0),ee=ne((f._m>0?L.ppadminus:L.ppadplus)||L.ppad||0),ie=ne(L.vpadplus||L.vpad),fe=ne(L.vpadminus||L.vpad);if(!U){if(Z=1/0,re=-1/0,N)for(Q=0;Q0&&(Z=ue),ue>re&&ue-M&&(Z=ue),ue>re&&ue=Be;Q--)Ae(Q);return{min:z,max:F,opts:L}}function l(f,P,L,z){w(f,P,L,z,E)}function _(f,P,L,z){w(f,P,L,z,m)}function w(f,P,L,z,F){for(var B=z.tozero,O=z.extrapad,I=!0,N=0;N=L&&(U.extrapad||!O)){I=!1;break}else F(P,U.val)&&U.pad<=L&&(O||!U.extrapad)&&(f.splice(N,1),N--)}if(I){var W=B&&P===0;f.push({val:P,pad:W?0:L,extrapad:W?!1:O})}}function S(f){return x(f)&&Math.abs(f)=P}function b(f,P){var L=P.autorangeoptions;return L&&L.minallowed!==void 0&&u(P,L.minallowed,L.maxallowed)?L.minallowed:L&&L.clipmin!==void 0&&u(P,L.clipmin,L.clipmax)?Math.max(f,P.d2l(L.clipmin)):f}function d(f,P){var L=P.autorangeoptions;return L&&L.maxallowed!==void 0&&u(P,L.minallowed,L.maxallowed)?L.maxallowed:L&&L.clipmax!==void 0&&u(P,L.clipmin,L.clipmax)?Math.min(f,P.d2l(L.clipmax)):f}function u(f,P,L){return P!==void 0&&L!==void 0?(P=f.d2l(P),L=f.d2l(L),P=N&&(B=N,L=N),O<=N&&(O=N,z=N)}}return L=b(L,P),z=d(z,P),[L,z]}}}),Co=Ye({"src/plots/cartesian/axes.js"(X,H){"use strict";var g=_n(),x=jo(),A=Gu(),M=Hn(),e=ta(),t=e.strTranslate,r=jl(),o=Xg(),a=Fn(),i=Bo(),n=Vh(),s=sS(),c=ks(),h=c.ONEMAXYEAR,v=c.ONEAVGYEAR,p=c.ONEMINYEAR,T=c.ONEMAXQUARTER,l=c.ONEAVGQUARTER,_=c.ONEMINQUARTER,w=c.ONEMAXMONTH,S=c.ONEAVGMONTH,E=c.ONEMINMONTH,m=c.ONEWEEK,b=c.ONEDAY,d=b/2,u=c.ONEHOUR,y=c.ONEMIN,f=c.ONESEC,P=c.ONEMILLI,L=c.ONEMICROSEC,z=c.MINUS_SIGN,F=c.BADNUM,B={K:"zeroline"},O={K:"gridline",L:"path"},I={K:"minor-gridline",L:"path"},N={K:"tick",L:"path"},U={K:"tick",L:"text"},W={width:["x","r","l","xl","xr"],height:["y","t","b","yt","yb"],right:["r","xr"],left:["l","xl"],top:["t","yt"],bottom:["b","yb"]},Q=oh(),ue=Q.MID_SHIFT,se=Q.CAP_SHIFT,he=Q.LINE_SPACING,G=Q.OPPOSITE_SIDE,$=3,J=H.exports={};J.setConvert=wv();var Z=r1(),re=Xc(),ne=re.idSort,j=re.isLinked;J.id2name=re.id2name,J.name2id=re.name2id,J.cleanId=re.cleanId,J.list=re.list,J.listIds=re.listIds,J.getFromId=re.getFromId,J.getFromTrace=re.getFromTrace;var ee=Yd();J.getAutoRange=ee.getAutoRange,J.findExtremes=ee.findExtremes;var ie=1e-4;function fe(mt){var gt=(mt[1]-mt[0])*ie;return[mt[0]-gt,mt[1]+gt]}J.coerceRef=function(mt,gt,Er,kr,br,Tr){var Mr=kr.charAt(kr.length-1),Fr=Er._fullLayout._subplots[Mr+"axis"],Lr=kr+"ref",Jr={};return br||(br=Fr[0]||(typeof Tr=="string"?Tr:Tr[0])),Tr||(Tr=br),Fr=Fr.concat(Fr.map(function(oa){return oa+" domain"})),Jr[Lr]={valType:"enumerated",values:Fr.concat(Tr?typeof Tr=="string"?[Tr]:Tr:[]),dflt:br},e.coerce(mt,gt,Jr,Lr)},J.getRefType=function(mt){return mt===void 0?mt:mt==="paper"?"paper":mt==="pixel"?"pixel":/( domain)$/.test(mt)?"domain":"range"},J.coercePosition=function(mt,gt,Er,kr,br,Tr){var Mr,Fr,Lr=J.getRefType(kr);if(Lr!=="range")Mr=e.ensureNumber,Fr=Er(br,Tr);else{var Jr=J.getFromId(gt,kr);Tr=Jr.fraction2r(Tr),Fr=Er(br,Tr),Mr=Jr.cleanPos}mt[br]=Mr(Fr)},J.cleanPosition=function(mt,gt,Er){var kr=Er==="paper"||Er==="pixel"?e.ensureNumber:J.getFromId(gt,Er).cleanPos;return kr(mt)},J.redrawComponents=function(mt,gt){gt=gt||J.listIds(mt);var Er=mt._fullLayout;function kr(br,Tr,Mr,Fr){for(var Lr=M.getComponentMethod(br,Tr),Jr={},oa=0;oa2e-6||((Er-mt._forceTick0)/mt._minDtick%1+1.000001)%1>2e-6)&&(mt._minDtick=0))},J.saveRangeInitial=function(mt,gt){for(var Er=J.list(mt,"",!0),kr=!1,br=0;brca*.3||Jr(kr)||Jr(br))){var kt=Er.dtick/2;mt+=mt+ktMr){var Fr=Number(Er.substr(1));Tr.exactYears>Mr&&Fr%12===0?mt=J.tickIncrement(mt,"M6","reverse")+b*1.5:Tr.exactMonths>Mr?mt=J.tickIncrement(mt,"M1","reverse")+b*15.5:mt-=d;var Lr=J.tickIncrement(mt,Er);if(Lr<=kr)return Lr}return mt}J.prepMinorTicks=function(mt,gt,Er){if(!gt.minor.dtick){delete mt.dtick;var kr=gt.dtick&&x(gt._tmin),br;if(kr){var Tr=J.tickIncrement(gt._tmin,gt.dtick,!0);br=[gt._tmin,Tr*.99+gt._tmin*.01]}else{var Mr=e.simpleMap(gt.range,gt.r2l);br=[Mr[0],.8*Mr[0]+.2*Mr[1]]}if(mt.range=e.simpleMap(br,gt.l2r),mt._isMinor=!0,J.prepTicks(mt,Er),kr){var Fr=x(gt.dtick),Lr=x(mt.dtick),Jr=Fr?gt.dtick:+gt.dtick.substring(1),oa=Lr?mt.dtick:+mt.dtick.substring(1);Fr&&Lr?at(Jr,oa)?Jr===2*m&&oa===2*b&&(mt.dtick=m):Jr===2*m&&oa===3*b?mt.dtick=m:Jr===m&&!(gt._input.minor||{}).nticks?mt.dtick=b:it(Jr/oa,2.5)?mt.dtick=Jr/2:mt.dtick=Jr:String(gt.dtick).charAt(0)==="M"?Lr?mt.dtick="M1":at(Jr,oa)?Jr>=12&&oa===2&&(mt.dtick="M3"):mt.dtick=gt.dtick:String(mt.dtick).charAt(0)==="L"?String(gt.dtick).charAt(0)==="L"?at(Jr,oa)||(mt.dtick=it(Jr/oa,2.5)?gt.dtick/2:gt.dtick):mt.dtick="D1":mt.dtick==="D2"&&+gt.dtick>1&&(mt.dtick=1)}mt.range=gt.range}gt.minor._tick0Init===void 0&&(mt.tick0=gt.tick0)};function at(mt,gt){return Math.abs((mt/gt+.5)%1-.5)<.001}function it(mt,gt){return Math.abs(mt/gt-1)<.001}J.prepTicks=function(mt,gt){var Er=e.simpleMap(mt.range,mt.r2l,void 0,void 0,gt);if(mt.tickmode==="auto"||!mt.dtick){var kr=mt.nticks,br;kr||(mt.type==="category"||mt.type==="multicategory"?(br=mt.tickfont?e.bigFont(mt.tickfont.size||12):15,kr=mt._length/br):(br=mt._id.charAt(0)==="y"?40:80,kr=e.constrain(mt._length/br,4,9)+1),mt._name==="radialaxis"&&(kr*=2)),mt.minor&&mt.minor.tickmode!=="array"||mt.tickmode==="array"&&(kr*=100),mt._roughDTick=Math.abs(Er[1]-Er[0])/kr,J.autoTicks(mt,mt._roughDTick),mt._minDtick>0&&mt.dtick0?(Tr=kr-1,Mr=kr):(Tr=kr,Mr=kr);var Fr=mt[Tr].value,Lr=mt[Mr].value,Jr=Math.abs(Lr-Fr),oa=Er||Jr,ca=0;oa>=p?Jr>=p&&Jr<=h?ca=Jr:ca=v:Er===l&&oa>=_?Jr>=_&&Jr<=T?ca=Jr:ca=l:oa>=E?Jr>=E&&Jr<=w?ca=Jr:ca=S:Er===m&&oa>=m?ca=m:oa>=b?ca=b:Er===d&&oa>=d?ca=d:Er===u&&oa>=u&&(ca=u);var kt;ca>=Jr&&(ca=Jr,kt=!0);var ir=br+ca;if(gt.rangebreaks&&ca>0){for(var mr=84,$r=0,ma=0;mam&&(ca=Jr)}(ca>0||kr===0)&&(mt[kr].periodX=br+ca/2)}}J.calcTicks=function(gt,Er){for(var kr=gt.type,br=gt.calendar,Tr=gt.ticklabelstep,Mr=gt.ticklabelmode==="period",Fr=gt.range[0]>gt.range[1],Lr=!gt.ticklabelindex||e.isArrayOrTypedArray(gt.ticklabelindex)?gt.ticklabelindex:[gt.ticklabelindex],Jr=e.simpleMap(gt.range,gt.r2l,void 0,void 0,Er),oa=Jr[1]=(da?0:1);Sa--){var Ti=!Sa;Sa?(gt._dtickInit=gt.dtick,gt._tick0Init=gt.tick0):(gt.minor._dtickInit=gt.minor.dtick,gt.minor._tick0Init=gt.minor.tick0);var ai=Sa?gt:e.extendFlat({},gt,gt.minor);if(Ti?J.prepMinorTicks(ai,gt,Er):J.prepTicks(ai,Er),ai.tickmode==="array"){Sa?(ma=[],mr=ze(gt,!Ti)):(Ba=[],$r=ze(gt,!Ti));continue}if(ai.tickmode==="sync"){ma=[],mr=ce(gt);continue}var an=fe(Jr),sn=an[0],Mn=an[1],On=x(ai.dtick),$n=kr==="log"&&!(On||ai.dtick.charAt(0)==="L"),Cn=J.tickFirst(ai,Er);if(Sa){if(gt._tmin=Cn,Cn=Mn:Xi<=Mn;Xi=J.tickIncrement(Xi,as,oa,br)){if(Sa&&Jo++,ai.rangebreaks&&!oa){if(Xi=kt)break}if(ma.length>ir||Xi===Lo)break;Lo=Xi;var Pn={value:Xi};Sa?($n&&Xi!==(Xi|0)&&(Pn.simpleLabel=!0),Tr>1&&Jo%Tr&&(Pn.skipLabel=!0),ma.push(Pn)):(Pn.minor=!0,Ba.push(Pn))}}if(!Ba||Ba.length<2)Lr=!1;else{var go=(Ba[1].value-Ba[0].value)*(Fr?-1:1);$a(go,gt.tickformat)||(Lr=!1)}if(!Lr)Ca=ma;else{var In=ma.concat(Ba);Mr&&ma.length&&(In=In.slice(1)),In=In.sort(function(Yn,_s){return Yn.value-_s.value}).filter(function(Yn,_s,Yo){return _s===0||Yn.value!==Yo[_s-1].value});var Do=In.map(function(Yn,_s){return Yn.minor===void 0&&!Yn.skipLabel?_s:null}).filter(function(Yn){return Yn!==null});Do.forEach(function(Yn){Lr.map(function(_s){var Yo=Yn+_s;Yo>=0&&Yo-1;fi--){if(ma[fi].drop){ma.splice(fi,1);continue}ma[fi].value=Xr(ma[fi].value,gt);var so=gt.c2p(ma[fi].value);(mn?Os>so-ol:Oskt||Nnkt&&(Yo.periodX=kt),Nnbr&&ktv)gt/=v,kr=br(10),mt.dtick="M"+12*ur(gt,kr,tt);else if(Tr>S)gt/=S,mt.dtick="M"+ur(gt,1,nt);else if(Tr>b){if(mt.dtick=ur(gt,b,mt._hasDayOfWeekBreaks?[1,2,7,14]:Ct),!Er){var Mr=J.getTickFormat(mt),Fr=mt.ticklabelmode==="period";Fr&&(mt._rawTick0=mt.tick0),/%[uVW]/.test(Mr)?mt.tick0=e.dateTick0(mt.calendar,2):mt.tick0=e.dateTick0(mt.calendar,1),Fr&&(mt._dowTick0=mt.tick0)}}else Tr>u?mt.dtick=ur(gt,u,nt):Tr>y?mt.dtick=ur(gt,y,Qe):Tr>f?mt.dtick=ur(gt,f,Qe):(kr=br(10),mt.dtick=ur(gt,kr,tt))}else if(mt.type==="log"){mt.tick0=0;var Lr=e.simpleMap(mt.range,mt.r2l);if(mt._isMinor&&(gt*=1.5),gt>.7)mt.dtick=Math.ceil(gt);else if(Math.abs(Lr[1]-Lr[0])<1){var Jr=1.5*Math.abs((Lr[1]-Lr[0])/gt);gt=Math.abs(Math.pow(10,Lr[1])-Math.pow(10,Lr[0]))/Jr,kr=br(10),mt.dtick="L"+ur(gt,kr,tt)}else mt.dtick=gt>.3?"D2":"D1"}else mt.type==="category"||mt.type==="multicategory"?(mt.tick0=0,mt.dtick=Math.ceil(Math.max(gt,1))):pa(mt)?(mt.tick0=0,kr=1,mt.dtick=ur(gt,kr,jt)):(mt.tick0=0,kr=br(10),mt.dtick=ur(gt,kr,tt));if(mt.dtick===0&&(mt.dtick=1),!x(mt.dtick)&&typeof mt.dtick!="string"){var oa=mt.dtick;throw mt.dtick=1,"ax.dtick error: "+String(oa)}};function ar(mt){var gt=mt.dtick;if(mt._tickexponent=0,!x(gt)&&typeof gt!="string"&&(gt=1),(mt.type==="category"||mt.type==="multicategory")&&(mt._tickround=null),mt.type==="date"){var Er=mt.r2l(mt.tick0),kr=mt.l2r(Er).replace(/(^-|i)/g,""),br=kr.length;if(String(gt).charAt(0)==="M")br>10||kr.substr(5)!=="01-01"?mt._tickround="d":mt._tickround=+gt.substr(1)%12===0?"y":"m";else if(gt>=b&&br<=10||gt>=b*15)mt._tickround="d";else if(gt>=y&&br<=16||gt>=u)mt._tickround="M";else if(gt>=f&&br<=19||gt>=y)mt._tickround="S";else{var Tr=mt.l2r(Er+gt).replace(/^-/,"").length;mt._tickround=Math.max(br,Tr)-20,mt._tickround<0&&(mt._tickround=4)}}else if(x(gt)||gt.charAt(0)==="L"){var Mr=mt.range.map(mt.r2d||Number);x(gt)||(gt=Number(gt.substr(1))),mt._tickround=2-Math.floor(Math.log(gt)/Math.LN10+.01);var Fr=Math.max(Math.abs(Mr[0]),Math.abs(Mr[1])),Lr=Math.floor(Math.log(Fr)/Math.LN10+.01),Jr=mt.minexponent===void 0?3:mt.minexponent;Math.abs(Lr)>Jr&&(ke(mt.exponentformat)&&!Te(Lr)?mt._tickexponent=3*Math.round((Lr-1)/3):mt._tickexponent=Lr)}else mt._tickround=null}J.tickIncrement=function(mt,gt,Er,kr){var br=Er?-1:1;if(x(gt))return e.increment(mt,br*gt);var Tr=gt.charAt(0),Mr=br*Number(gt.substr(1));if(Tr==="M")return e.incrementMonth(mt,Mr,kr);if(Tr==="L")return Math.log(Math.pow(10,mt)+Mr)/Math.LN10;if(Tr==="D"){var Fr=gt==="D2"?Ot:St,Lr=mt+br*.01,Jr=e.roundUp(e.mod(Lr,1),Fr,Er);return Math.floor(Lr)+Math.log(g.round(Math.pow(10,Jr),1))/Math.LN10}throw"unrecognized dtick "+String(gt)},J.tickFirst=function(mt,gt){var Er=mt.r2l||Number,kr=e.simpleMap(mt.range,Er,void 0,void 0,gt),br=kr[1]=0&&Ba<=mt._length?ma:null};if(Tr&&e.isArrayOrTypedArray(mt.ticktext)){var ca=e.simpleMap(mt.range,mt.r2l),kt=(Math.abs(ca[1]-ca[0])-(mt._lBreaks||0))/1e4;for(Jr=0;Jr"+Fr;else{var Jr=Ea(mt),oa=mt._trueSide||mt.side;(!Jr&&oa==="top"||Jr&&oa==="bottom")&&(Mr+="
")}gt.text=Mr}function _r(mt,gt,Er,kr,br){var Tr=mt.dtick,Mr=gt.x,Fr=mt.tickformat,Lr=typeof Tr=="string"&&Tr.charAt(0);if(br==="never"&&(br=""),kr&&Lr!=="L"&&(Tr="L3",Lr="L"),Fr||Lr==="L")gt.text=Le(Math.pow(10,Mr),mt,br,kr);else if(x(Tr)||Lr==="D"&&e.mod(Mr+.01,1)<.1){var Jr=Math.round(Mr),oa=Math.abs(Jr),ca=mt.exponentformat;ca==="power"||ke(ca)&&Te(Jr)?(Jr===0?gt.text=1:Jr===1?gt.text="10":gt.text="10"+(Jr>1?"":z)+oa+"",gt.fontSize*=1.25):(ca==="e"||ca==="E")&&oa>2?gt.text="1"+ca+(Jr>0?"+":z)+oa:(gt.text=Le(Math.pow(10,Mr),mt,"","fakehover"),Tr==="D1"&&mt._id.charAt(0)==="y"&&(gt.dy-=gt.fontSize/6))}else if(Lr==="D")gt.text=String(Math.round(Math.pow(10,e.mod(Mr,1)))),gt.fontSize*=.75;else throw"unrecognized dtick "+String(Tr);if(mt.dtick==="D1"){var kt=String(gt.text).charAt(0);(kt==="0"||kt==="1")&&(mt._id.charAt(0)==="y"?gt.dx-=gt.fontSize/4:(gt.dy+=gt.fontSize/2,gt.dx+=(mt.range[1]>mt.range[0]?1:-1)*gt.fontSize*(Mr<0?.5:.25)))}}function yt(mt,gt){var Er=mt._categories[Math.round(gt.x)];Er===void 0&&(Er=""),gt.text=String(Er)}function Fe(mt,gt,Er){var kr=Math.round(gt.x),br=mt._categories[kr]||[],Tr=br[1]===void 0?"":String(br[1]),Mr=br[0]===void 0?"":String(br[0]);Er?gt.text=Mr+" - "+Tr:(gt.text=Tr,gt.text2=Mr)}function Ke(mt,gt,Er,kr,br){br==="never"?br="":mt.showexponent==="all"&&Math.abs(gt.x/mt.dtick)<1e-6&&(br="hide"),gt.text=Le(gt.x,mt,br,kr)}function Ne(mt,gt,Er,kr,br){if(mt.thetaunit==="radians"&&!Er){var Tr=gt.x/180;if(Tr===0)gt.text="0";else{var Mr=Ee(Tr);if(Mr[1]>=100)gt.text=Le(e.deg2rad(gt.x),mt,br,kr);else{var Fr=gt.x<0;Mr[1]===1?Mr[0]===1?gt.text="\u03C0":gt.text=Mr[0]+"\u03C0":gt.text=["",Mr[0],"","\u2044","",Mr[1],"","\u03C0"].join(""),Fr&&(gt.text=z+gt.text)}}}else gt.text=Le(gt.x,mt,br,kr)}function Ee(mt){function gt(Fr,Lr){return Math.abs(Fr-Lr)<=1e-6}function Er(Fr,Lr){return gt(Lr,0)?Fr:Er(Lr,Fr%Lr)}function kr(Fr){for(var Lr=1;!gt(Math.round(Fr*Lr)/Lr,Fr);)Lr*=10;return Lr}var br=kr(mt),Tr=mt*br,Mr=Math.abs(Er(Tr,br));return[Math.round(Tr/Mr),Math.round(br/Mr)]}var Ve=["f","p","n","\u03BC","m","","k","M","G","T"];function ke(mt){return mt==="SI"||mt==="B"}function Te(mt){return mt>14||mt<-15}function Le(mt,gt,Er,kr){var br=mt<0,Tr=gt._tickround,Mr=Er||gt.exponentformat||"B",Fr=gt._tickexponent,Lr=J.getTickFormat(gt),Jr=gt.separatethousands;if(kr){var oa={exponentformat:Mr,minexponent:gt.minexponent,dtick:gt.showexponent==="none"?gt.dtick:x(mt)&&Math.abs(mt)||1,range:gt.showexponent==="none"?gt.range.map(gt.r2d):[0,mt||1]};ar(oa),Tr=(Number(oa._tickround)||0)+4,Fr=oa._tickexponent,gt.hoverformat&&(Lr=gt.hoverformat)}if(Lr)return gt._numFormat(Lr)(mt).replace(/-/g,z);var ca=Math.pow(10,-Tr)/2;if(Mr==="none"&&(Fr=0),mt=Math.abs(mt),mt"+mr+"":Mr==="B"&&Fr===9?mt+="B":ke(Mr)&&(mt+=Ve[Fr/3+5])}return br?z+mt:mt}J.getTickFormat=function(mt){var gt;function Er(Lr){return typeof Lr!="string"?Lr:Number(Lr.replace("M",""))*S}function kr(Lr,Jr){var oa=["L","D"];if(typeof Lr==typeof Jr){if(typeof Lr=="number")return Lr-Jr;var ca=oa.indexOf(Lr.charAt(0)),kt=oa.indexOf(Jr.charAt(0));return ca===kt?Number(Lr.replace(/(L|D)/g,""))-Number(Jr.replace(/(L|D)/g,"")):ca-kt}else return typeof Lr=="number"?1:-1}function br(Lr,Jr,oa){var ca=oa||function(mr){return mr},kt=Jr[0],ir=Jr[1];return(!kt&&typeof kt!="number"||ca(kt)<=ca(Lr))&&(!ir&&typeof ir!="number"||ca(ir)>=ca(Lr))}function Tr(Lr,Jr){var oa=Jr[0]===null,ca=Jr[1]===null,kt=kr(Lr,Jr[0])>=0,ir=kr(Lr,Jr[1])<=0;return(oa||kt)&&(ca||ir)}var Mr,Fr;if(mt.tickformatstops&&mt.tickformatstops.length>0)switch(mt.type){case"date":case"linear":{for(gt=0;gt=0&&br.unshift(br.splice(oa,1).shift())}});var Fr={false:{left:0,right:0}};return e.syncOrAsync(br.map(function(Lr){return function(){if(Lr){var Jr=J.getFromId(mt,Lr);Er||(Er={}),Er.axShifts=Fr,Er.overlayingShiftedAx=Mr;var oa=J.drawOne(mt,Jr,Er);return Jr._shiftPusher&&qa(Jr,Jr._fullDepth||0,Fr,!0),Jr._r=Jr.range.slice(),Jr._rl=e.simpleMap(Jr._r,Jr.r2l),oa}}}))},J.drawOne=function(mt,gt,Er){Er=Er||{};var kr=Er.axShifts||{},br=Er.overlayingShiftedAx||[],Tr,Mr,Fr;gt.setScale();var Lr=mt._fullLayout,Jr=gt._id,oa=Jr.charAt(0),ca=J.counterLetter(Jr),kt=Lr._plots[gt._mainSubplot];if(!kt)return;if(gt._shiftPusher=gt.autoshift||br.indexOf(gt._id)!==-1||br.indexOf(gt.overlaying)!==-1,gt._shiftPusher>.anchor==="free"){var ir=gt.linewidth/2||0;gt.ticks==="inside"&&(ir+=gt.ticklen),qa(gt,ir,kr,!0),qa(gt,gt.shift||0,kr,!1)}(Er.skipTitle!==!0||gt._shift===void 0)&&(gt._shift=ya(gt,kr));var mr=kt[oa+"axislayer"],$r=gt._mainLinePosition,ma=$r+=gt._shift,Ba=gt._mainMirrorPosition,Ca=gt._vals=J.calcTicks(gt),da=[gt.mirror,ma,Ba].join("_");for(Tr=0;Tr0?Yo.bottom-Yn:0,_s))));var ml=0,Bu=0;if(gt._shiftPusher&&(ml=Math.max(_s,Yo.height>0?ji==="l"?Yn-Yo.left:Yo.right-Yn:0),gt.title.text!==Lr._dfltTitle[oa]&&(Bu=(gt._titleStandoff||0)+(gt._titleScoot||0),ji==="l"&&(Bu+=Aa(gt))),gt._fullDepth=Math.max(ml,Bu)),gt.automargin){Nn={x:0,y:0,r:0,l:0,t:0,b:0};var El=[0,1],qs=typeof gt._shift=="number"?gt._shift:0;if(oa==="x"){if(ji==="b"?Nn[ji]=gt._depth:(Nn[ji]=gt._depth=Math.max(Yo.width>0?Yn-Yo.top:0,_s),El.reverse()),Yo.width>0){var Jl=Yo.right-(gt._offset+gt._length);Jl>0&&(Nn.xr=1,Nn.r=Jl);var Nu=gt._offset-Yo.left;Nu>0&&(Nn.xl=0,Nn.l=Nu)}}else if(ji==="l"?(gt._depth=Math.max(Yo.height>0?Yn-Yo.left:0,_s),Nn[ji]=gt._depth-qs):(gt._depth=Math.max(Yo.height>0?Yo.right-Yn:0,_s),Nn[ji]=gt._depth+qs,El.reverse()),Yo.height>0){var Ic=Yo.bottom-(gt._offset+gt._length);Ic>0&&(Nn.yb=0,Nn.b=Ic);var Xu=gt._offset-Yo.top;Xu>0&&(Nn.yt=1,Nn.t=Xu)}Nn[ca]=gt.anchor==="free"?gt.position:gt._anchorAxis.domain[El[0]],gt.title.text!==Lr._dfltTitle[oa]&&(Nn[ji]+=Aa(gt)+(gt.title.standoff||0)),gt.mirror&>.anchor!=="free"&&(Wl={x:0,y:0,r:0,l:0,t:0,b:0},Wl[To]=gt.linewidth,gt.mirror&>.mirror!==!0&&(Wl[To]+=_s),gt.mirror===!0||gt.mirror==="ticks"?Wl[ca]=gt._anchorAxis.domain[El[1]]:(gt.mirror==="all"||gt.mirror==="allticks")&&(Wl[ca]=[gt._counterDomainMin,gt._counterDomainMax][El[1]]))}vl&&(Zu=M.getComponentMethod("rangeslider","autoMarginOpts")(mt,gt)),typeof gt.automargin=="string"&&(rt(Nn,gt.automargin),rt(Wl,gt.automargin)),A.autoMargin(mt,ni(gt),Nn),A.autoMargin(mt,Wt(gt),Wl),A.autoMargin(mt,zt(gt),Zu)}),e.syncOrAsync(fs)}};function rt(mt,gt){if(mt){var Er=Object.keys(W).reduce(function(kr,br){return gt.indexOf(br)!==-1&&W[br].forEach(function(Tr){kr[Tr]=1}),kr},{});Object.keys(mt).forEach(function(kr){Er[kr]||(kr.length===1?mt[kr]=0:delete mt[kr])})}}function dt(mt,gt){var Er=[],kr,br=function(Tr,Mr){var Fr=Tr.xbnd[Mr];Fr!==null&&Er.push(e.extendFlat({},Tr,{x:Fr}))};if(gt.length){for(kr=0;krmt.range[1],Fr=mt.ticklabelposition&&mt.ticklabelposition.indexOf("inside")!==-1,Lr=!Fr;if(Er){var Jr=Mr?-1:1;Er=Er*Jr}if(kr){var oa=mt.side,ca=Fr&&(oa==="top"||oa==="left")||Lr&&(oa==="bottom"||oa==="right")?1:-1;kr=kr*ca}return mt._id.charAt(0)==="x"?function(kt){return t(br+mt._offset+mt.l2p(Gt(kt))+Er,Tr+kr)}:function(kt){return t(Tr+kr,br+mt._offset+mt.l2p(Gt(kt))+Er)}};function Gt(mt){return mt.periodX!==void 0?mt.periodX:mt.x}function Kt(mt){var gt=mt.ticklabelposition||"",Er=function(ir){return gt.indexOf(ir)!==-1},kr=Er("top"),br=Er("left"),Tr=Er("right"),Mr=Er("bottom"),Fr=Er("inside"),Lr=Mr||br||kr||Tr;if(!Lr&&!Fr)return[0,0];var Jr=mt.side,oa=Lr?(mt.tickwidth||0)/2:0,ca=$,kt=mt.tickfont?mt.tickfont.size:12;return(Mr||kr)&&(oa+=kt*se,ca+=(mt.linewidth||0)/2),(br||Tr)&&(oa+=(mt.linewidth||0)/2,ca+=$),Fr&&Jr==="top"&&(ca-=kt*(1-se)),(br||kr)&&(oa=-oa),(Jr==="bottom"||Jr==="right")&&(ca=-ca),[Lr?oa:0,Fr?ca:0]}J.makeTickPath=function(mt,gt,Er,kr){kr||(kr={});var br=kr.minor;if(br&&!mt.minor)return"";var Tr=kr.len!==void 0?kr.len:br?mt.minor.ticklen:mt.ticklen,Mr=mt._id.charAt(0),Fr=(mt.linewidth||1)/2;return Mr==="x"?"M0,"+(gt+Fr*Er)+"v"+Tr*Er:"M"+(gt+Fr*Er)+",0h"+Tr*Er},J.makeLabelFns=function(mt,gt,Er){var kr=mt.ticklabelposition||"",br=function(Cn){return kr.indexOf(Cn)!==-1},Tr=br("top"),Mr=br("left"),Fr=br("right"),Lr=br("bottom"),Jr=Lr||Mr||Tr||Fr,oa=br("inside"),ca=kr==="inside"&&mt.ticks==="inside"||!oa&&mt.ticks==="outside"&&mt.tickson!=="boundaries",kt=0,ir=0,mr=ca?mt.ticklen:0;if(oa?mr*=-1:Jr&&(mr=0),ca&&(kt+=mr,Er)){var $r=e.deg2rad(Er);kt=mr*Math.cos($r)+1,ir=mr*Math.sin($r)}mt.showticklabels&&(ca||mt.showline)&&(kt+=.2*mt.tickfont.size),kt+=(mt.linewidth||1)/2*(oa?-1:1);var ma={labelStandoff:kt,labelShift:ir},Ba,Ca,da,Sa,Ti=0,ai=mt.side,an=mt._id.charAt(0),sn=mt.tickangle,Mn;if(an==="x")Mn=!oa&&ai==="bottom"||oa&&ai==="top",Sa=Mn?1:-1,oa&&(Sa*=-1),Ba=ir*Sa,Ca=gt+kt*Sa,da=Mn?1:-.2,Math.abs(sn)===90&&(oa?da+=ue:sn===-90&&ai==="bottom"?da=se:sn===90&&ai==="top"?da=ue:da=.5,Ti=ue/2*(sn/90)),ma.xFn=function(Cn){return Cn.dx+Ba+Ti*Cn.fontSize},ma.yFn=function(Cn){return Cn.dy+Ca+Cn.fontSize*da},ma.anchorFn=function(Cn,Lo){if(Jr){if(Mr)return"end";if(Fr)return"start"}return!x(Lo)||Lo===0||Lo===180?"middle":Lo*Sa<0!==oa?"end":"start"},ma.heightFn=function(Cn,Lo,Xi){return Lo<-60||Lo>60?-.5*Xi:mt.side==="top"!==oa?-Xi:0};else if(an==="y"){if(Mn=!oa&&ai==="left"||oa&&ai==="right",Sa=Mn?1:-1,oa&&(Sa*=-1),Ba=kt,Ca=ir*Sa,da=0,!oa&&Math.abs(sn)===90&&(sn===-90&&ai==="left"||sn===90&&ai==="right"?da=se:da=.5),oa){var On=x(sn)?+sn:0;if(On!==0){var $n=e.deg2rad(On);Ti=Math.abs(Math.sin($n))*se*Sa,da=0}}ma.xFn=function(Cn){return Cn.dx+gt-(Ba+Cn.fontSize*da)*Sa+Ti*Cn.fontSize},ma.yFn=function(Cn){return Cn.dy+Ca+Cn.fontSize*ue},ma.anchorFn=function(Cn,Lo){return x(Lo)&&Math.abs(Lo)===90?"middle":Mn?"end":"start"},ma.heightFn=function(Cn,Lo,Xi){return mt.side==="right"&&(Lo*=-1),Lo<-30?-Xi:Lo<30?-.5*Xi:0}}return ma};function sr(mt){return[mt.text,mt.x,mt.axInfo,mt.font,mt.fontSize,mt.fontColor].join("_")}J.drawTicks=function(mt,gt,Er){Er=Er||{};var kr=gt._id+"tick",br=[].concat(gt.minor&>.minor.ticks?Er.vals.filter(function(Mr){return Mr.minor&&!Mr.noTick}):[]).concat(gt.ticks?Er.vals.filter(function(Mr){return!Mr.minor&&!Mr.noTick}):[]),Tr=Er.layer.selectAll("path."+kr).data(br,sr);Tr.exit().remove(),Tr.enter().append("path").classed(kr,1).classed("ticks",1).classed("crisp",Er.crisp!==!1).each(function(Mr){return a.stroke(g.select(this),Mr.minor?gt.minor.tickcolor:gt.tickcolor)}).style("stroke-width",function(Mr){return i.crispRound(mt,Mr.minor?gt.minor.tickwidth:gt.tickwidth,1)+"px"}).attr("d",Er.path).style("display",null),Fa(gt,[N]),Tr.attr("transform",Er.transFn)},J.drawGrid=function(mt,gt,Er){if(Er=Er||{},gt.tickmode!=="sync"){var kr=gt._id+"grid",br=gt.minor&>.minor.showgrid,Tr=br?Er.vals.filter(function(Ba){return Ba.minor}):[],Mr=gt.showgrid?Er.vals.filter(function(Ba){return!Ba.minor}):[],Fr=Er.counterAxis;if(Fr&&J.shouldShowZeroLine(mt,gt,Fr))for(var Lr=gt.tickmode==="array",Jr=0;Jr=0;mr--){var $r=mr?kt:ir;if($r){var ma=$r.selectAll("path."+kr).data(mr?Mr:Tr,sr);ma.exit().remove(),ma.enter().append("path").classed(kr,1).classed("crisp",Er.crisp!==!1),ma.attr("transform",Er.transFn).attr("d",Er.path).each(function(Ba){return a.stroke(g.select(this),Ba.minor?gt.minor.gridcolor:gt.gridcolor||"#ddd")}).style("stroke-dasharray",function(Ba){return i.dashStyle(Ba.minor?gt.minor.griddash:gt.griddash,Ba.minor?gt.minor.gridwidth:gt.gridwidth)}).style("stroke-width",function(Ba){return(Ba.minor?ca:gt._gw)+"px"}).style("display",null),typeof Er.path=="function"&&ma.attr("d",Er.path)}}Fa(gt,[O,I])}},J.drawZeroLine=function(mt,gt,Er){Er=Er||Er;var kr=gt._id+"zl",br=J.shouldShowZeroLine(mt,gt,Er.counterAxis),Tr=Er.layer.selectAll("path."+kr).data(br?[{x:0,id:gt._id}]:[]);Tr.exit().remove(),Tr.enter().append("path").classed(kr,1).classed("zl",1).classed("crisp",Er.crisp!==!1).each(function(){Er.layer.selectAll("path").sort(function(Mr,Fr){return ne(Mr.id,Fr.id)})}),Tr.attr("transform",Er.transFn).attr("d",Er.path).call(a.stroke,gt.zerolinecolor||a.defaultLine).style("stroke-width",i.crispRound(mt,gt.zerolinewidth,gt._gw||1)+"px").style("display",null),Fa(gt,[B])},J.drawLabels=function(mt,gt,Er){Er=Er||{};var kr=mt._fullLayout,br=gt._id,Tr=Er.cls||br+"tick",Mr=Er.vals.filter(function(Pn){return Pn.text}),Fr=Er.labelFns,Lr=Er.secondary?0:gt.tickangle,Jr=(gt._prevTickAngles||{})[Tr],oa=Er.layer.selectAll("g."+Tr).data(gt.showticklabels?Mr:[],sr),ca=[];oa.enter().append("g").classed(Tr,1).append("text").attr("text-anchor","middle").each(function(Pn){var go=g.select(this),In=mt._promises.length;go.call(r.positionText,Fr.xFn(Pn),Fr.yFn(Pn)).call(i.font,{family:Pn.font,size:Pn.fontSize,color:Pn.fontColor,weight:Pn.fontWeight,style:Pn.fontStyle,variant:Pn.fontVariant,textcase:Pn.fontTextcase,lineposition:Pn.fontLineposition,shadow:Pn.fontShadow}).text(Pn.text).call(r.convertToTspans,mt),mt._promises[In]?ca.push(mt._promises.pop().then(function(){kt(go,Lr)})):kt(go,Lr)}),Fa(gt,[U]),oa.exit().remove(),Er.repositionOnUpdate&&oa.each(function(Pn){g.select(this).select("text").call(r.positionText,Fr.xFn(Pn),Fr.yFn(Pn))});function kt(Pn,go){Pn.each(function(In){var Do=g.select(this),Ho=Do.select(".text-math-group"),Qo=Fr.anchorFn(In,go),Xn=Er.transFn.call(Do.node(),In)+(x(go)&&+go!=0?" rotate("+go+","+Fr.xFn(In)+","+(Fr.yFn(In)-In.fontSize/2)+")":""),po=r.lineCount(Do),ys=he*In.fontSize,Is=Fr.heightFn(In,x(go)?+go:0,(po-1)*ys);if(Is&&(Xn+=t(0,Is)),Ho.empty()){var Fs=Do.select("text");Fs.attr({transform:Xn,"text-anchor":Qo}),Fs.style("opacity",1),gt._adjustTickLabelsOverflow&>._adjustTickLabelsOverflow()}else{var $o=i.bBox(Ho.node()).width,fi=$o*{end:-.5,start:.5}[Qo];Ho.attr("transform",Xn+t(fi,0))}})}gt._adjustTickLabelsOverflow=function(){var Pn=gt.ticklabeloverflow;if(!(!Pn||Pn==="allow")){var go=Pn.indexOf("hide")!==-1,In=gt._id.charAt(0)==="x",Do=0,Ho=In?mt._fullLayout.width:mt._fullLayout.height;if(Pn.indexOf("domain")!==-1){var Qo=e.simpleMap(gt.range,gt.r2l);Do=gt.l2p(Qo[0])+gt._offset,Ho=gt.l2p(Qo[1])+gt._offset}var Xn=Math.min(Do,Ho),po=Math.max(Do,Ho),ys=gt.side,Is=1/0,Fs=-1/0;oa.each(function(ol){var Os=g.select(this),so=Os.select(".text-math-group");if(so.empty()){var Ns=i.bBox(Os.node()),fs=0;In?(Ns.right>po||Ns.leftpo||Ns.top+(gt.tickangle?0:ol.fontSize/4)gt["_visibleLabelMin_"+Qo._id]?ol.style("display","none"):po.K==="tick"&&!Xn&&ol.style("display",null)})})})})},kt(oa,Jr+1?Jr:Lr);function ir(){return ca.length&&Promise.all(ca)}var mr=null;function $r(){if(kt(oa,Lr),Mr.length&>.autotickangles&&(gt.type!=="log"||String(gt.dtick).charAt(0)!=="D")){mr=gt.autotickangles[0];var Pn=0,go=[],In,Do=1;oa.each(function(Yo){Pn=Math.max(Pn,Yo.fontSize);var Nn=gt.l2p(Yo.x),Wl=Ua(this),Zu=i.bBox(Wl.node());Do=Math.max(Do,r.lineCount(Wl)),go.push({top:0,bottom:10,height:10,left:Nn-Zu.width/2,right:Nn+Zu.width/2+2,width:Zu.width+2})});var Ho=(gt.tickson==="boundaries"||gt.showdividers)&&!Er.secondary,Qo=Mr.length,Xn=Math.abs((Mr[Qo-1].x-Mr[0].x)*gt._m)/(Qo-1),po=Ho?Xn/2:Xn,ys=Ho?gt.ticklen:Pn*1.25*Do,Is=Math.sqrt(Math.pow(po,2)+Math.pow(ys,2)),Fs=po/Is,$o=gt.autotickangles.map(function(Yo){return Yo*Math.PI/180}),fi=$o.find(function(Yo){return Math.abs(Math.cos(Yo))<=Fs});fi===void 0&&(fi=$o.reduce(function(Yo,Nn){return Math.abs(Math.cos(Yo))Jo*Xi&&($n=Xi,sn[an]=Mn[an]=Cn[an])}var zo=Math.abs($n-On);zo-Sa>0?(zo-=Sa,Sa*=1+Sa/zo):Sa=0,gt._id.charAt(0)!=="y"&&(Sa=-Sa),sn[ai]=Ca.p2r(Ca.r2p(Mn[ai])+Ti*Sa),Ca.autorange==="min"||Ca.autorange==="max reversed"?(sn[0]=null,Ca._rangeInitial0=void 0,Ca._rangeInitial1=void 0):(Ca.autorange==="max"||Ca.autorange==="min reversed")&&(sn[1]=null,Ca._rangeInitial0=void 0,Ca._rangeInitial1=void 0),kr._insideTickLabelsUpdaterange[Ca._name+".range"]=sn}var as=e.syncOrAsync(ma);return as&&as.then&&mt._promises.push(as),as};function sa(mt,gt,Er){var kr=gt._id+"divider",br=Er.vals,Tr=Er.layer.selectAll("path."+kr).data(br,sr);Tr.exit().remove(),Tr.enter().insert("path",":first-child").classed(kr,1).classed("crisp",1).call(a.stroke,gt.dividercolor).style("stroke-width",i.crispRound(mt,gt.dividerwidth,1)+"px"),Tr.attr("transform",Er.transFn).attr("d",Er.path)}J.getPxPosition=function(mt,gt){var Er=mt._fullLayout._size,kr=gt._id.charAt(0),br=gt.side,Tr;if(gt.anchor!=="free"?Tr=gt._anchorAxis:kr==="x"?Tr={_offset:Er.t+(1-(gt.position||0))*Er.h,_length:0}:kr==="y"&&(Tr={_offset:Er.l+(gt.position||0)*Er.w+gt._shift,_length:0}),br==="top"||br==="left")return Tr._offset;if(br==="bottom"||br==="right")return Tr._offset+Tr._length};function Aa(mt){var gt=mt.title.font.size,Er=(mt.title.text.match(r.BR_TAG_ALL)||[]).length;return mt.title.hasOwnProperty("standoff")?gt*(se+Er*he):Er?gt*(Er+1)*he:gt}function La(mt,gt){var Er=mt._fullLayout,kr=gt._id,br=kr.charAt(0),Tr=gt.title.font.size,Mr,Fr=(gt.title.text.match(r.BR_TAG_ALL)||[]).length;if(gt.title.hasOwnProperty("standoff"))gt.side==="bottom"||gt.side==="right"?Mr=gt._depth+gt.title.standoff+Tr*se:(gt.side==="top"||gt.side==="left")&&(Mr=gt._depth+gt.title.standoff+Tr*(ue+Fr*he));else{var Lr=Ea(gt);if(gt.type==="multicategory")Mr=gt._depth;else{var Jr=1.5*Tr;Lr&&(Jr=.5*Tr,gt.ticks==="outside"&&(Jr+=gt.ticklen)),Mr=10+Jr+(gt.linewidth?gt.linewidth-1:0)}Lr||(br==="x"?Mr+=gt.side==="top"?Tr*(gt.showticklabels?1:0):Tr*(gt.showticklabels?1.5:.5):Mr+=gt.side==="right"?Tr*(gt.showticklabels?1:.5):Tr*(gt.showticklabels?.5:0))}var oa=J.getPxPosition(mt,gt),ca,kt,ir;br==="x"?(kt=gt._offset+gt._length/2,ir=gt.side==="top"?oa-Mr:oa+Mr):(ir=gt._offset+gt._length/2,kt=gt.side==="right"?oa+Mr:oa-Mr,ca={rotate:"-90",offset:0});var mr;if(gt.type!=="multicategory"){var $r=gt._selections[gt._id+"tick"];if(mr={selection:$r,side:gt.side},$r&&$r.node()&&$r.node().parentNode){var ma=i.getTranslate($r.node().parentNode);mr.offsetLeft=ma.x,mr.offsetTop=ma.y}gt.title.hasOwnProperty("standoff")&&(mr.pad=0)}return gt._titleStandoff=Mr,o.draw(mt,kr+"title",{propContainer:gt,propName:gt._name+".title.text",placeholder:Er._dfltTitle[br],avoid:mr,transform:ca,attributes:{x:kt,y:ir,"text-anchor":"middle"}})}J.shouldShowZeroLine=function(mt,gt,Er){var kr=e.simpleMap(gt.range,gt.r2l);return kr[0]*kr[1]<=0&>.zeroline&&(gt.type==="linear"||gt.type==="-")&&!(gt.rangebreaks&>.maskBreaks(0)===F)&&(ka(gt,0)||!Ga(mt,gt,Er,kr)||Ma(mt,gt))},J.clipEnds=function(mt,gt){return gt.filter(function(Er){return ka(mt,Er.x)})};function ka(mt,gt){var Er=mt.l2p(gt);return Er>1&&Er1)for(br=1;br=br.min&&mt=L:/%L/.test(gt)?mt>=P:/%[SX]/.test(gt)?mt>=f:/%M/.test(gt)?mt>=y:/%[HI]/.test(gt)?mt>=u:/%p/.test(gt)?mt>=d:/%[Aadejuwx]/.test(gt)?mt>=b:/%[UVW]/.test(gt)?mt>=m:/%[Bbm]/.test(gt)?mt>=E:/%[q]/.test(gt)?mt>=_:/%[Yy]/.test(gt)?mt>=p:!0}}}),cS=Ye({"src/plots/cartesian/autorange_options_defaults.js"(X,H){"use strict";H.exports=function(x,A,M){var e,t;if(M){var r=A==="reversed"||A==="min reversed"||A==="max reversed";e=M[r?1:0],t=M[r?0:1]}var o=x("autorangeoptions.minallowed",t===null?e:void 0),a=x("autorangeoptions.maxallowed",e===null?t:void 0);o===void 0&&x("autorangeoptions.clipmin"),a===void 0&&x("autorangeoptions.clipmax"),x("autorangeoptions.include")}}}),fS=Ye({"src/plots/cartesian/range_defaults.js"(X,H){"use strict";var g=cS();H.exports=function(A,M,e,t){var r=M._template||{},o=M.type||r.type||"-";e("minallowed"),e("maxallowed");var a=e("range");if(!a){var i;!t.noInsiderange&&o!=="log"&&(i=e("insiderange"),i&&(i[0]===null||i[1]===null)&&(M.insiderange=!1,i=void 0),i&&(a=e("range",i)))}var n=M.getAutorangeDflt(a,t),s=e("autorange",n),c;a&&(a[0]===null&&a[1]===null||(a[0]===null||a[1]===null)&&(s==="reversed"||s===!0)||a[0]!==null&&(s==="min"||s==="max reversed")||a[1]!==null&&(s==="max"||s==="min reversed"))&&(a=void 0,delete M.range,M.autorange=!0,c=!0),c||(n=M.getAutorangeDflt(a,t),s=e("autorange",n)),s&&(g(e,s,a),(o==="linear"||o==="-")&&e("rangemode")),M.cleanRange()}}}),iO=Ye({"node_modules/mouse-event-offset/index.js"(X,H){var g={left:0,top:0};H.exports=x;function x(M,e,t){e=e||M.currentTarget||M.srcElement,Array.isArray(t)||(t=[0,0]);var r=M.clientX||0,o=M.clientY||0,a=A(e);return t[0]=r-a.left,t[1]=o-a.top,t}function A(M){return M===window||M===document||M===document.body?g:M.getBoundingClientRect()}}}),_2=Ye({"node_modules/has-passive-events/index.js"(X,H){"use strict";var g=rS();function x(){var A=!1;try{var M=Object.defineProperty({},"passive",{get:function(){A=!0}});window.addEventListener("test",null,M),window.removeEventListener("test",null,M)}catch{A=!1}return A}H.exports=g&&x()}}),nO=Ye({"src/components/dragelement/align.js"(X,H){"use strict";H.exports=function(x,A,M,e,t){var r=(x-M)/(e-M),o=r+A/(e-M),a=(r+o)/2;return t==="left"||t==="bottom"?r:t==="center"||t==="middle"?a:t==="right"||t==="top"?o:r<2/3-a?r:o>4/3-a?o:a}}}),oO=Ye({"src/components/dragelement/cursor.js"(X,H){"use strict";var g=ta(),x=[["sw-resize","s-resize","se-resize"],["w-resize","move","e-resize"],["nw-resize","n-resize","ne-resize"]];H.exports=function(M,e,t,r){return t==="left"?M=0:t==="center"?M=1:t==="right"?M=2:M=g.constrain(Math.floor(M*3),0,2),r==="bottom"?e=0:r==="middle"?e=1:r==="top"?e=2:e=g.constrain(Math.floor(e*3),0,2),x[e][M]}}}),sO=Ye({"src/components/dragelement/unhover.js"(X,H){"use strict";var g=$y(),x=m2(),A=b_().getGraphDiv,M=x_(),e=H.exports={};e.wrapped=function(t,r,o){t=A(t),t._fullLayout&&x.clear(t._fullLayout._uid+M.HOVERID),e.raw(t,r,o)},e.raw=function(r,o){var a=r._fullLayout,i=r._hoverdata;o||(o={}),!(o.target&&!r._dragged&&g.triggerHandler(r,"plotly_beforehover",o)===!1)&&(a._hoverlayer.selectAll("g").remove(),a._hoverlayer.selectAll("line").remove(),a._hoverlayer.selectAll("circle").remove(),r._hoverdata=void 0,o.target&&i&&r.emit("plotly_unhover",{event:o,points:i}))}}}),bp=Ye({"src/components/dragelement/index.js"(X,H){"use strict";var g=iO(),x=aS(),A=_2(),M=ta().removeElement,e=wh(),t=H.exports={};t.align=nO(),t.getCursor=oO();var r=sO();t.unhover=r.wrapped,t.unhoverRaw=r.raw,t.init=function(n){var s=n.gd,c=1,h=s._context.doubleClickDelay,v=n.element,p,T,l,_,w,S,E,m;s._mouseDownTime||(s._mouseDownTime=0),v.style.pointerEvents="all",v.onmousedown=u,A?(v._ontouchstart&&v.removeEventListener("touchstart",v._ontouchstart),v._ontouchstart=u,v.addEventListener("touchstart",u,{passive:!1})):v.ontouchstart=u;function b(P,L,z){return Math.abs(P)"u"&&typeof P.clientY>"u"&&(P.clientX=p,P.clientY=T),l=new Date().getTime(),l-s._mouseDownTimeh&&(c=Math.max(c-1,1)),s._dragged)n.doneFn&&n.doneFn();else{var L;S.target===E?L=S:(L={target:E,srcElement:E,toElement:E},Object.keys(S).concat(Object.keys(S.__proto__)).forEach(z=>{var F=S[z];!L[z]&&typeof F!="function"&&(L[z]=F)})),n.clickFn&&n.clickFn(c,L),m||E.dispatchEvent(new MouseEvent("click",P))}s._dragging=!1,s._dragged=!1}};function o(){var i=document.createElement("div");i.className="dragcover";var n=i.style;return n.position="fixed",n.left=0,n.right=0,n.top=0,n.bottom=0,n.zIndex=999999999,n.background="none",document.body.appendChild(i),i}t.coverSlip=o;function a(i){return g(i.changedTouches?i.changedTouches[0]:i,document.body)}}}),Kd=Ye({"src/lib/setcursor.js"(X,H){"use strict";H.exports=function(x,A){(x.attr("class")||"").split(" ").forEach(function(M){M.indexOf("cursor-")===0&&x.classed(M,!1)}),A&&x.classed("cursor-"+A,!0)}}}),lO=Ye({"src/lib/override_cursor.js"(X,H){"use strict";var g=Kd(),x="data-savedcursor",A="!!";H.exports=function(e,t){var r=e.attr(x);if(t){if(!r){for(var o=(e.attr("class")||"").split(" "),a=0;a(a==="legend"?1:0));if(P===!1&&(n[a]=void 0),!(P===!1&&!c.uirevision)&&(v("uirevision",n.uirevision),P!==!1)){v("borderwidth");var L=v("orientation"),z=v("yref"),F=v("xref"),B=L==="h",O=z==="paper",I=F==="paper",N,U,W,Q="left";B?(N=0,g.getComponentMethod("rangeslider","isVisible")(i.xaxis)?O?(U=1.1,W="bottom"):(U=1,W="top"):O?(U=-.1,W="top"):(U=0,W="bottom")):(U=1,W="auto",I?N=1.02:(N=1,Q="right")),x.coerce(c,h,{x:{valType:"number",editType:"legend",min:I?-2:0,max:I?3:1,dflt:N}},"x"),x.coerce(c,h,{y:{valType:"number",editType:"legend",min:O?-2:0,max:O?3:1,dflt:U}},"y"),v("traceorder",b),r.isGrouped(n[a])&&v("tracegroupgap"),v("entrywidth"),v("entrywidthmode"),v("indentation"),v("itemsizing"),v("itemwidth"),v("itemclick"),v("itemdoubleclick"),v("groupclick"),v("xanchor",Q),v("yanchor",W),v("valign"),x.noneOrAll(c,h,["x","y"]);var ue=v("title.text");if(ue){v("title.side",B?"left":"top");var se=x.extendFlat({},p,{size:x.bigFont(p.size)});x.coerceFont(v,"title.font",se)}}}}H.exports=function(i,n,s){var c,h=s.slice(),v=n.shapes;if(v)for(c=0;cP&&(f=P)}u[p][0]._groupMinRank=f,u[p][0]._preGroupSort=p}var L=function(N,U){return N[0]._groupMinRank-U[0]._groupMinRank||N[0]._preGroupSort-U[0]._preGroupSort},z=function(N,U){return N.trace.legendrank-U.trace.legendrank||N._preSort-U._preSort};for(u.forEach(function(N,U){N[0]._preGroupSort=U}),u.sort(L),p=0;p0)re=$.width;else return 0;return d?Z:Math.min(re,J)};S.each(function(G){var $=g.select(this),J=A.ensureSingle($,"g","layers");J.style("opacity",G[0].trace.opacity);var Z=m.indentation,re=m.valign,ne=G[0].lineHeight,j=G[0].height;if(re==="middle"&&Z===0||!ne||!j)J.attr("transform",null);else{var ee={top:1,bottom:-1}[re],ie=ee*(.5*(ne-j+3))||0,fe=m.indentation;J.attr("transform",M(fe,ie))}var be=J.selectAll("g.legendfill").data([G]);be.enter().append("g").classed("legendfill",!0);var Ae=J.selectAll("g.legendlines").data([G]);Ae.enter().append("g").classed("legendlines",!0);var Be=J.selectAll("g.legendsymbols").data([G]);Be.enter().append("g").classed("legendsymbols",!0),Be.selectAll("g.legendpoints").data([G]).enter().append("g").classed("legendpoints",!0)}).each(he).each(F).each(O).each(B).each(N).each(ue).each(Q).each(L).each(z).each(U).each(W);function L(G){var $=l(G),J=$.showFill,Z=$.showLine,re=$.showGradientLine,ne=$.showGradientFill,j=$.anyFill,ee=$.anyLine,ie=G[0],fe=ie.trace,be,Ae,Be=r(fe),Ie=Be.colorscale,Ze=Be.reversescale,at=function(ze){if(ze.size())if(J)e.fillGroupStyle(ze,E,!0);else{var tt="legendfill-"+fe.uid;e.gradient(ze,E,tt,T(Ze),Ie,"fill")}},it=function(ze){if(ze.size()){var tt="legendline-"+fe.uid;e.lineGroupStyle(ze),e.gradient(ze,E,tt,T(Ze),Ie,"stroke")}},et=o.hasMarkers(fe)||!j?"M5,0":ee?"M5,-2":"M5,-3",lt=g.select(this),Me=lt.select(".legendfill").selectAll("path").data(J||ne?[G]:[]);if(Me.enter().append("path").classed("js-fill",!0),Me.exit().remove(),Me.attr("d",et+"h"+u+"v6h-"+u+"z").call(at),Z||re){var ge=P(void 0,fe.line,v,c);Ae=A.minExtend(fe,{line:{width:ge}}),be=[A.minExtend(ie,{trace:Ae})]}var ce=lt.select(".legendlines").selectAll("path").data(Z||re?[be]:[]);ce.enter().append("path").classed("js-line",!0),ce.exit().remove(),ce.attr("d",et+(re?"l"+u+",0.0001":"h"+u)).call(Z?e.lineGroupStyle:it)}function z(G){var $=l(G),J=$.anyFill,Z=$.anyLine,re=$.showLine,ne=$.showMarker,j=G[0],ee=j.trace,ie=!ne&&!Z&&!J&&o.hasText(ee),fe,be;function Ae(Me,ge,ce,ze){var tt=A.nestedProperty(ee,Me).get(),nt=A.isArrayOrTypedArray(tt)&&ge?ge(tt):tt;if(d&&nt&&ze!==void 0&&(nt=ze),ce){if(ntce[1])return ce[1]}return nt}function Be(Me){return j._distinct&&j.index&&Me[j.index]?Me[j.index]:Me[0]}if(ne||ie||re){var Ie={},Ze={};if(ne){Ie.mc=Ae("marker.color",Be),Ie.mx=Ae("marker.symbol",Be),Ie.mo=Ae("marker.opacity",A.mean,[.2,1]),Ie.mlc=Ae("marker.line.color",Be),Ie.mlw=Ae("marker.line.width",A.mean,[0,5],h),Ze.marker={sizeref:1,sizemin:1,sizemode:"diameter"};var at=Ae("marker.size",A.mean,[2,16],s);Ie.ms=at,Ze.marker.size=at}re&&(Ze.line={width:Ae("line.width",Be,[0,10],c)}),ie&&(Ie.tx="Aa",Ie.tp=Ae("textposition",Be),Ie.ts=10,Ie.tc=Ae("textfont.color",Be),Ie.tf=Ae("textfont.family",Be),Ie.tw=Ae("textfont.weight",Be),Ie.ty=Ae("textfont.style",Be),Ie.tv=Ae("textfont.variant",Be),Ie.tC=Ae("textfont.textcase",Be),Ie.tE=Ae("textfont.lineposition",Be),Ie.tS=Ae("textfont.shadow",Be)),fe=[A.minExtend(j,Ie)],be=A.minExtend(ee,Ze),be.selectedpoints=null,be.texttemplate=null}var it=g.select(this).select("g.legendpoints"),et=it.selectAll("path.scatterpts").data(ne?fe:[]);et.enter().insert("path",":first-child").classed("scatterpts",!0).attr("transform",f),et.exit().remove(),et.call(e.pointStyle,be,E),ne&&(fe[0].mrc=3);var lt=it.selectAll("g.pointtext").data(ie?fe:[]);lt.enter().append("g").classed("pointtext",!0).append("text").attr("transform",f),lt.exit().remove(),lt.selectAll("text").call(e.textPointStyle,be,E)}function F(G){var $=G[0].trace,J=$.type==="waterfall";if(G[0]._distinct&&J){var Z=G[0].trace[G[0].dir].marker;return G[0].mc=Z.color,G[0].mlw=Z.line.width,G[0].mlc=Z.line.color,I(G,this,"waterfall")}var re=[];$.visible&&J&&(re=G[0].hasTotals?[["increasing","M-6,-6V6H0Z"],["totals","M6,6H0L-6,-6H-0Z"],["decreasing","M6,6V-6H0Z"]]:[["increasing","M-6,-6V6H6Z"],["decreasing","M6,6V-6H-6Z"]]);var ne=g.select(this).select("g.legendpoints").selectAll("path.legendwaterfall").data(re);ne.enter().append("path").classed("legendwaterfall",!0).attr("transform",f).style("stroke-miterlimit",1),ne.exit().remove(),ne.each(function(j){var ee=g.select(this),ie=$[j[0]].marker,fe=P(void 0,ie.line,p,h);ee.attr("d",j[1]).style("stroke-width",fe+"px").call(t.fill,ie.color),fe&&ee.call(t.stroke,ie.line.color)})}function B(G){I(G,this)}function O(G){I(G,this,"funnel")}function I(G,$,J){var Z=G[0].trace,re=Z.marker||{},ne=re.line||{},j=re.cornerradius?"M6,3a3,3,0,0,1-3,3H-3a3,3,0,0,1-3-3V-3a3,3,0,0,1,3-3H3a3,3,0,0,1,3,3Z":"M6,6H-6V-6H6Z",ee=J?Z.visible&&Z.type===J:x.traceIs(Z,"bar"),ie=g.select($).select("g.legendpoints").selectAll("path.legend"+J).data(ee?[G]:[]);ie.enter().append("path").classed("legend"+J,!0).attr("d",j).attr("transform",f),ie.exit().remove(),ie.each(function(fe){var be=g.select(this),Ae=fe[0],Be=P(Ae.mlw,re.line,p,h);be.style("stroke-width",Be+"px");var Ie=Ae.mcc;if(!m._inHover&&"mc"in Ae){var Ze=r(re),at=Ze.mid;at===void 0&&(at=(Ze.max+Ze.min)/2),Ie=e.tryColorscale(re,"")(at)}var it=Ie||Ae.mc||re.color,et=re.pattern,lt=et&&e.getPatternAttr(et.shape,0,"");if(lt){var Me=e.getPatternAttr(et.bgcolor,0,null),ge=e.getPatternAttr(et.fgcolor,0,null),ce=et.fgopacity,ze=_(et.size,8,10),tt=_(et.solidity,.5,1),nt="legend-"+Z.uid;be.call(e.pattern,"legend",E,nt,lt,ze,tt,Ie,et.fillmode,Me,ge,ce)}else be.call(t.fill,it);Be&&t.stroke(be,Ae.mlc||ne.color)})}function N(G){var $=G[0].trace,J=g.select(this).select("g.legendpoints").selectAll("path.legendbox").data($.visible&&x.traceIs($,"box-violin")?[G]:[]);J.enter().append("path").classed("legendbox",!0).attr("d","M6,6H-6V-6H6Z").attr("transform",f),J.exit().remove(),J.each(function(){var Z=g.select(this);if(($.boxpoints==="all"||$.points==="all")&&t.opacity($.fillcolor)===0&&t.opacity(($.line||{}).color)===0){var re=A.minExtend($,{marker:{size:d?s:A.constrain($.marker.size,2,16),sizeref:1,sizemin:1,sizemode:"diameter"}});J.call(e.pointStyle,re,E)}else{var ne=P(void 0,$.line,p,h);Z.style("stroke-width",ne+"px").call(t.fill,$.fillcolor),ne&&t.stroke(Z,$.line.color)}})}function U(G){var $=G[0].trace,J=g.select(this).select("g.legendpoints").selectAll("path.legendcandle").data($.visible&&$.type==="candlestick"?[G,G]:[]);J.enter().append("path").classed("legendcandle",!0).attr("d",function(Z,re){return re?"M-15,0H-8M-8,6V-6H8Z":"M15,0H8M8,-6V6H-8Z"}).attr("transform",f).style("stroke-miterlimit",1),J.exit().remove(),J.each(function(Z,re){var ne=g.select(this),j=$[re?"increasing":"decreasing"],ee=P(void 0,j.line,p,h);ne.style("stroke-width",ee+"px").call(t.fill,j.fillcolor),ee&&t.stroke(ne,j.line.color)})}function W(G){var $=G[0].trace,J=g.select(this).select("g.legendpoints").selectAll("path.legendohlc").data($.visible&&$.type==="ohlc"?[G,G]:[]);J.enter().append("path").classed("legendohlc",!0).attr("d",function(Z,re){return re?"M-15,0H0M-8,-6V0":"M15,0H0M8,6V0"}).attr("transform",f).style("stroke-miterlimit",1),J.exit().remove(),J.each(function(Z,re){var ne=g.select(this),j=$[re?"increasing":"decreasing"],ee=P(void 0,j.line,p,h);ne.style("fill","none").call(e.dashLine,j.line.dash,ee),ee&&t.stroke(ne,j.line.color)})}function Q(G){se(G,this,"pie")}function ue(G){se(G,this,"funnelarea")}function se(G,$,J){var Z=G[0],re=Z.trace,ne=J?re.visible&&re.type===J:x.traceIs(re,J),j=g.select($).select("g.legendpoints").selectAll("path.legend"+J).data(ne?[G]:[]);if(j.enter().append("path").classed("legend"+J,!0).attr("d","M6,6H-6V-6H6Z").attr("transform",f),j.exit().remove(),j.size()){var ee=re.marker||{},ie=P(i(ee.line.width,Z.pts),ee.line,p,h),fe="pieLike",be=A.minExtend(re,{marker:{line:{width:ie}}},fe),Ae=A.minExtend(Z,{trace:be},fe);a(j,Ae,be,E)}}function he(G){var $=G[0].trace,J,Z=[];if($.visible)switch($.type){case"histogram2d":case"heatmap":Z=[["M-15,-2V4H15V-2Z"]],J=!0;break;case"choropleth":case"choroplethmapbox":case"choroplethmap":Z=[["M-6,-6V6H6V-6Z"]],J=!0;break;case"densitymapbox":case"densitymap":Z=[["M-6,0 a6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0"]],J="radial";break;case"cone":Z=[["M-6,2 A2,2 0 0,0 -6,6 V6L6,4Z"],["M-6,-6 A2,2 0 0,0 -6,-2 L6,-4Z"],["M-6,-2 A2,2 0 0,0 -6,2 L6,0Z"]],J=!1;break;case"streamtube":Z=[["M-6,2 A2,2 0 0,0 -6,6 H6 A2,2 0 0,1 6,2 Z"],["M-6,-6 A2,2 0 0,0 -6,-2 H6 A2,2 0 0,1 6,-6 Z"],["M-6,-2 A2,2 0 0,0 -6,2 H6 A2,2 0 0,1 6,-2 Z"]],J=!1;break;case"surface":Z=[["M-6,-6 A2,3 0 0,0 -6,0 H6 A2,3 0 0,1 6,-6 Z"],["M-6,1 A2,3 0 0,1 -6,6 H6 A2,3 0 0,0 6,0 Z"]],J=!0;break;case"mesh3d":Z=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],J=!1;break;case"volume":Z=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6H6L0,6Z"]],J=!0;break;case"isosurface":Z=[["M-6,6H0L-6,-6Z"],["M6,6H0L6,-6Z"],["M-6,-6 A12,24 0 0,0 6,-6 L0,6Z"]],J=!1;break}var re=g.select(this).select("g.legendpoints").selectAll("path.legend3dandfriends").data(Z);re.enter().append("path").classed("legend3dandfriends",!0).attr("transform",f).style("stroke-miterlimit",1),re.exit().remove(),re.each(function(ne,j){var ee=g.select(this),ie=r($),fe=ie.colorscale,be=ie.reversescale,Ae=function(at){if(at.size()){var it="legendfill-"+$.uid;e.gradient(at,E,it,T(be,J==="radial"),fe,"fill")}},Be;if(fe){if(!J){var Ze=fe.length;Be=j===0?fe[be?Ze-1:0][1]:j===1?fe[be?0:Ze-1][1]:fe[Math.floor((Ze-1)/2)][1]}}else{var Ie=$.vertexcolor||$.facecolor||$.color;Be=A.isArrayOrTypedArray(Ie)?Ie[j]||Ie[0]:Ie}ee.attr("d",ne[0]),Be?ee.call(t.fill,Be):ee.call(Ae)})}};function T(w,S){var E=S?"radial":"horizontal";return E+(w?"":"reversed")}function l(w){var S=w[0].trace,E=S.contours,m=o.hasLines(S),b=o.hasMarkers(S),d=S.visible&&S.fill&&S.fill!=="none",u=!1,y=!1;if(E){var f=E.coloring;f==="lines"?u=!0:m=f==="none"||f==="heatmap"||E.showlines,E.type==="constraint"?d=E._operation!=="=":(f==="fill"||f==="heatmap")&&(y=!0)}return{showMarker:b,showLine:m,showFill:d,showGradientLine:u,showGradientFill:y,anyLine:m||u,anyFill:d||y}}function _(w,S,E){return w&&A.isArrayOrTypedArray(w)?S:w>E?E:w}}}),mS=Ye({"src/components/legend/draw.js"(X,H){"use strict";var g=_n(),x=ta(),A=Gu(),M=Hn(),e=$y(),t=bp(),r=Bo(),o=Fn(),a=jl(),i=uO(),n=dS(),s=oh(),c=s.LINE_SPACING,h=s.FROM_TL,v=s.FROM_BR,p=cO(),T=vS(),l=x2(),_=1,w=/^legend[0-9]*$/;H.exports=function(U,W){if(W)E(U,W);else{var Q=U._fullLayout,ue=Q._legends,se=Q._infolayer.selectAll('[class^="legend"]');se.each(function(){var J=g.select(this),Z=J.attr("class"),re=Z.split(" ")[0];re.match(w)&&ue.indexOf(re)===-1&&J.remove()});for(var he=0;he1)}var ee=Q.hiddenlabels||[];if(!G&&(!Q.showlegend||!$.length))return he.selectAll("."+ue).remove(),Q._topdefs.select("#"+se).remove(),A.autoMargin(N,ue);var ie=x.ensureSingle(he,"g",ue,function(et){G||et.attr("pointer-events","all")}),fe=x.ensureSingleById(Q._topdefs,"clipPath",se,function(et){et.append("rect")}),be=x.ensureSingle(ie,"rect","bg",function(et){et.attr("shape-rendering","crispEdges")});be.call(o.stroke,W.bordercolor).call(o.fill,W.bgcolor).style("stroke-width",W.borderwidth+"px");var Ae=x.ensureSingle(ie,"g","scrollbox"),Be=W.title;W._titleWidth=0,W._titleHeight=0;var Ie;Be.text?(Ie=x.ensureSingle(Ae,"text",ue+"titletext"),Ie.attr("text-anchor","start").call(r.font,Be.font).text(Be.text),f(Ie,Ae,N,W,_)):Ae.selectAll("."+ue+"titletext").remove();var Ze=x.ensureSingle(ie,"rect","scrollbar",function(et){et.attr(n.scrollBarEnterAttrs).call(o.fill,n.scrollBarColor)}),at=Ae.selectAll("g.groups").data($);at.enter().append("g").attr("class","groups"),at.exit().remove();var it=at.selectAll("g.traces").data(x.identity);it.enter().append("g").attr("class","traces"),it.exit().remove(),it.style("opacity",function(et){var lt=et[0].trace;return M.traceIs(lt,"pie-like")?ee.indexOf(et[0].label)!==-1?.5:1:lt.visible==="legendonly"?.5:1}).each(function(){g.select(this).call(d,N,W)}).call(T,N,W).each(function(){G||g.select(this).call(y,N,ue)}),x.syncOrAsync([A.previousPromises,function(){return z(N,at,it,W)},function(){var et=Q._size,lt=W.borderwidth,Me=W.xref==="paper",ge=W.yref==="paper";if(Be.text&&S(Ie,W,lt),!G){var ce,ze;Me?ce=et.l+et.w*W.x-h[B(W)]*W._width:ce=Q.width*W.x-h[B(W)]*W._width,ge?ze=et.t+et.h*(1-W.y)-h[O(W)]*W._effHeight:ze=Q.height*(1-W.y)-h[O(W)]*W._effHeight;var tt=F(N,ue,ce,ze);if(tt)return;if(Q.margin.autoexpand){var nt=ce,Qe=ze;ce=Me?x.constrain(ce,0,Q.width-W._width):nt,ze=ge?x.constrain(ze,0,Q.height-W._effHeight):Qe,ce!==nt&&x.log("Constrain "+ue+".x to make legend fit inside graph"),ze!==Qe&&x.log("Constrain "+ue+".y to make legend fit inside graph")}r.setTranslate(ie,ce,ze)}if(Ze.on(".drag",null),ie.on("wheel",null),G||W._height<=W._maxHeight||N._context.staticPlot){var Ct=W._effHeight;G&&(Ct=W._height),be.attr({width:W._width-lt,height:Ct-lt,x:lt/2,y:lt/2}),r.setTranslate(Ae,0,0),fe.select("rect").attr({width:W._width-2*lt,height:Ct-2*lt,x:lt,y:lt}),r.setClipUrl(Ae,se,N),r.setRect(Ze,0,0,0,0),delete W._scrollY}else{var St=Math.max(n.scrollBarMinHeight,W._effHeight*W._effHeight/W._height),Ot=W._effHeight-St-2*n.scrollBarMargin,jt=W._height-W._effHeight,ur=Ot/jt,ar=Math.min(W._scrollY||0,jt);be.attr({width:W._width-2*lt+n.scrollBarWidth+n.scrollBarMargin,height:W._effHeight-lt,x:lt/2,y:lt/2}),fe.select("rect").attr({width:W._width-2*lt+n.scrollBarWidth+n.scrollBarMargin,height:W._effHeight-2*lt,x:lt,y:lt+ar}),r.setClipUrl(Ae,se,N),Ee(ar,St,ur),ie.on("wheel",function(){ar=x.constrain(W._scrollY+g.event.deltaY/Ot*jt,0,jt),Ee(ar,St,ur),ar!==0&&ar!==jt&&g.event.preventDefault()});var Cr,vr,_r,yt=function(rt,dt,xt){var It=(xt-dt)/ur+rt;return x.constrain(It,0,jt)},Fe=function(rt,dt,xt){var It=(dt-xt)/ur+rt;return x.constrain(It,0,jt)},Ke=g.behavior.drag().on("dragstart",function(){var rt=g.event.sourceEvent;rt.type==="touchstart"?Cr=rt.changedTouches[0].clientY:Cr=rt.clientY,_r=ar}).on("drag",function(){var rt=g.event.sourceEvent;rt.buttons===2||rt.ctrlKey||(rt.type==="touchmove"?vr=rt.changedTouches[0].clientY:vr=rt.clientY,ar=yt(_r,Cr,vr),Ee(ar,St,ur))});Ze.call(Ke);var Ne=g.behavior.drag().on("dragstart",function(){var rt=g.event.sourceEvent;rt.type==="touchstart"&&(Cr=rt.changedTouches[0].clientY,_r=ar)}).on("drag",function(){var rt=g.event.sourceEvent;rt.type==="touchmove"&&(vr=rt.changedTouches[0].clientY,ar=Fe(_r,Cr,vr),Ee(ar,St,ur))});Ae.call(Ne)}function Ee(rt,dt,xt){W._scrollY=N._fullLayout[ue]._scrollY=rt,r.setTranslate(Ae,0,-rt),r.setRect(Ze,W._width,n.scrollBarMargin+rt*xt,n.scrollBarWidth,dt),fe.select("rect").attr("y",lt+rt)}if(N._context.edits.legendPosition){var Ve,ke,Te,Le;ie.classed("cursor-move",!0),t.init({element:ie.node(),gd:N,prepFn:function(rt){if(rt.target!==Ze.node()){var dt=r.getTranslate(ie);Te=dt.x,Le=dt.y}},moveFn:function(rt,dt){if(Te!==void 0&&Le!==void 0){var xt=Te+rt,It=Le+dt;r.setTranslate(ie,xt,It),Ve=t.align(xt,W._width,et.l,et.l+et.w,W.xanchor),ke=t.align(It+W._height,-W._height,et.t+et.h,et.t,W.yanchor)}},doneFn:function(){if(Ve!==void 0&&ke!==void 0){var rt={};rt[ue+".x"]=Ve,rt[ue+".y"]=ke,M.call("_guiRelayout",N,rt)}},clickFn:function(rt,dt){var xt=he.selectAll("g.traces").filter(function(){var It=this.getBoundingClientRect();return dt.clientX>=It.left&&dt.clientX<=It.right&&dt.clientY>=It.top&&dt.clientY<=It.bottom});xt.size()>0&&b(N,ie,xt,rt,dt)}})}}],N)}}function m(N,U,W){var Q=N[0],ue=Q.width,se=U.entrywidthmode,he=Q.trace.legendwidth||U.entrywidth;return se==="fraction"?U._maxWidth*he:W+(he||ue)}function b(N,U,W,Q,ue){var se=W.data()[0][0].trace,he={event:ue,node:W.node(),curveNumber:se.index,expandedIndex:se.index,data:N.data,layout:N.layout,frames:N._transitionData._frames,config:N._context,fullData:N._fullData,fullLayout:N._fullLayout};se._group&&(he.group=se._group),M.traceIs(se,"pie-like")&&(he.label=W.datum()[0].label);var G=e.triggerHandler(N,"plotly_legendclick",he);if(Q===1){if(G===!1)return;U._clickTimeout=setTimeout(function(){N._fullLayout&&i(W,N,Q)},N._context.doubleClickDelay)}else if(Q===2){U._clickTimeout&&clearTimeout(U._clickTimeout),N._legendMouseDownTime=0;var $=e.triggerHandler(N,"plotly_legenddoubleclick",he);$!==!1&&G!==!1&&i(W,N,Q)}}function d(N,U,W){var Q=I(W),ue=N.data()[0][0],se=ue.trace,he=M.traceIs(se,"pie-like"),G=!W._inHover&&U._context.edits.legendText&&!he,$=W._maxNameLength,J,Z;ue.groupTitle?(J=ue.groupTitle.text,Z=ue.groupTitle.font):(Z=W.font,W.entries?J=ue.text:(J=he?ue.label:se.name,se._meta&&(J=x.templateString(J,se._meta))));var re=x.ensureSingle(N,"text",Q+"text");re.attr("text-anchor","start").call(r.font,Z).text(G?u(J,$):J);var ne=W.indentation+W.itemwidth+n.itemGap*2;a.positionText(re,ne,0),G?re.call(a.makeEditable,{gd:U,text:J}).call(f,N,U,W).on("edit",function(j){this.text(u(j,$)).call(f,N,U,W);var ee=ue.trace._fullInput||{},ie={};return ie.name=j,ee._isShape?M.call("_guiRelayout",U,"shapes["+se.index+"].name",ie.name):M.call("_guiRestyle",U,ie,se.index)}):f(re,N,U,W)}function u(N,U){var W=Math.max(4,U);if(N&&N.trim().length>=W/2)return N;N=N||"";for(var Q=W-N.length;Q>0;Q--)N+=" ";return N}function y(N,U,W){var Q=U._context.doubleClickDelay,ue,se=1,he=x.ensureSingle(N,"rect",W+"toggle",function(G){U._context.staticPlot||G.style("cursor","pointer").attr("pointer-events","all"),G.call(o.fill,"rgba(0,0,0,0)")});U._context.staticPlot||(he.on("mousedown",function(){ue=new Date().getTime(),ue-U._legendMouseDownTimeQ&&(se=Math.max(se-1,1)),b(U,G,N,se,g.event)}}))}function f(N,U,W,Q,ue){Q._inHover&&N.attr("data-notex",!0),a.convertToTspans(N,W,function(){P(U,W,Q,ue)})}function P(N,U,W,Q){var ue=N.data()[0][0];if(!W._inHover&&ue&&!ue.trace.showlegend){N.remove();return}var se=N.select("g[class*=math-group]"),he=se.node(),G=I(W);W||(W=U._fullLayout[G]);var $=W.borderwidth,J;Q===_?J=W.title.font:ue.groupTitle?J=ue.groupTitle.font:J=W.font;var Z=J.size*c,re,ne;if(he){var j=r.bBox(he);re=j.height,ne=j.width,Q===_?r.setTranslate(se,$,$+re*.75):r.setTranslate(se,0,re*.25)}else{var ee="."+G+(Q===_?"title":"")+"text",ie=N.select(ee),fe=a.lineCount(ie),be=ie.node();if(re=Z*fe,ne=be?r.bBox(be).width:0,Q===_)W.title.side==="left"&&(ne+=n.itemGap*2),a.positionText(ie,$+n.titlePad,$+Z);else{var Ae=n.itemGap*2+W.indentation+W.itemwidth;ue.groupTitle&&(Ae=n.itemGap,ne-=W.indentation+W.itemwidth),a.positionText(ie,Ae,-Z*((fe-1)/2-.3))}}Q===_?(W._titleWidth=ne,W._titleHeight=re):(ue.lineHeight=Z,ue.height=Math.max(re,16)+3,ue.width=ne)}function L(N){var U=0,W=0,Q=N.title.side;return Q&&(Q.indexOf("left")!==-1&&(U=N._titleWidth),Q.indexOf("top")!==-1&&(W=N._titleHeight)),[U,W]}function z(N,U,W,Q){var ue=N._fullLayout,se=I(Q);Q||(Q=ue[se]);var he=ue._size,G=l.isVertical(Q),$=l.isGrouped(Q),J=Q.entrywidthmode==="fraction",Z=Q.borderwidth,re=2*Z,ne=n.itemGap,j=Q.indentation+Q.itemwidth+ne*2,ee=2*(Z+ne),ie=O(Q),fe=Q.y<0||Q.y===0&&ie==="top",be=Q.y>1||Q.y===1&&ie==="bottom",Ae=Q.tracegroupgap,Be={};Q._maxHeight=Math.max(fe||be?ue.height/2:he.h,30);var Ie=0;Q._width=0,Q._height=0;var Ze=L(Q);if(G)W.each(function(_r){var yt=_r[0].height;r.setTranslate(this,Z+Ze[0],Z+Ze[1]+Q._height+yt/2+ne),Q._height+=yt,Q._width=Math.max(Q._width,_r[0].width)}),Ie=j+Q._width,Q._width+=ne+j+re,Q._height+=ee,$&&(U.each(function(_r,yt){r.setTranslate(this,0,yt*Q.tracegroupgap)}),Q._height+=(Q._lgroupsLength-1)*Q.tracegroupgap);else{var at=B(Q),it=Q.x<0||Q.x===0&&at==="right",et=Q.x>1||Q.x===1&&at==="left",lt=be||fe,Me=ue.width/2;Q._maxWidth=Math.max(it?lt&&at==="left"?he.l+he.w:Me:et?lt&&at==="right"?he.r+he.w:Me:he.w,2*j);var ge=0,ce=0;W.each(function(_r){var yt=m(_r,Q,j);ge=Math.max(ge,yt),ce+=yt}),Ie=null;var ze=0;if($){var tt=0,nt=0,Qe=0;U.each(function(){var _r=0,yt=0;g.select(this).selectAll("g.traces").each(function(Ke){var Ne=m(Ke,Q,j),Ee=Ke[0].height;r.setTranslate(this,Ze[0],Ze[1]+Z+ne+Ee/2+yt),yt+=Ee,_r=Math.max(_r,Ne),Be[Ke[0].trace.legendgroup]=_r});var Fe=_r+ne;nt>0&&Fe+Z+nt>Q._maxWidth?(ze=Math.max(ze,nt),nt=0,Qe+=tt+Ae,tt=yt):tt=Math.max(tt,yt),r.setTranslate(this,nt,Qe),nt+=Fe}),Q._width=Math.max(ze,nt)+Z,Q._height=Qe+tt+ee}else{var Ct=W.size(),St=ce+re+(Ct-1)*ne=Q._maxWidth&&(ze=Math.max(ze,ar),jt=0,ur+=Ot,Q._height+=Ot,Ot=0),r.setTranslate(this,Ze[0]+Z+jt,Ze[1]+Z+ur+yt/2+ne),ar=jt+Fe+ne,jt+=Ke,Ot=Math.max(Ot,yt)}),St?(Q._width=jt+re,Q._height=Ot+ee):(Q._width=Math.max(ze,ar)+re,Q._height+=Ot+ee)}}Q._width=Math.ceil(Math.max(Q._width+Ze[0],Q._titleWidth+2*(Z+n.titlePad))),Q._height=Math.ceil(Math.max(Q._height+Ze[1],Q._titleHeight+2*(Z+n.itemGap))),Q._effHeight=Math.min(Q._height,Q._maxHeight);var Cr=N._context.edits,vr=Cr.legendText||Cr.legendPosition;W.each(function(_r){var yt=g.select(this).select("."+se+"toggle"),Fe=_r[0].height,Ke=_r[0].trace.legendgroup,Ne=m(_r,Q,j);$&&Ke!==""&&(Ne=Be[Ke]);var Ee=vr?j:Ie||Ne;!G&&!J&&(Ee+=ne/2),r.setRect(yt,0,-Fe/2,Ee,Fe)})}function F(N,U,W,Q){var ue=N._fullLayout,se=ue[U],he=B(se),G=O(se),$=se.xref==="paper",J=se.yref==="paper";N._fullLayout._reservedMargin[U]={};var Z=se.y<.5?"b":"t",re=se.x<.5?"l":"r",ne={r:ue.width-W,l:W+se._width,b:ue.height-Q,t:Q+se._effHeight};if($&&J)return A.autoMargin(N,U,{x:se.x,y:se.y,l:se._width*h[he],r:se._width*v[he],b:se._effHeight*v[G],t:se._effHeight*h[G]});$?N._fullLayout._reservedMargin[U][Z]=ne[Z]:J||se.orientation==="v"?N._fullLayout._reservedMargin[U][re]=ne[re]:N._fullLayout._reservedMargin[U][Z]=ne[Z]}function B(N){return x.isRightAnchor(N)?"right":x.isCenterAnchor(N)?"center":"left"}function O(N){return x.isBottomAnchor(N)?"bottom":x.isMiddleAnchor(N)?"middle":"top"}function I(N){return N._id||"legend"}}}),gS=Ye({"src/components/fx/hover.js"(X){"use strict";var H=_n(),g=jo(),x=bh(),A=ta(),M=A.pushUnique,e=A.strTranslate,t=A.strRotate,r=$y(),o=jl(),a=lO(),i=Bo(),n=Fn(),s=bp(),c=Co(),h=wh().zindexSeparator,v=Hn(),p=Qp(),T=x_(),l=pS(),_=mS(),w=T.YANGLE,S=Math.PI*w/180,E=1/Math.sin(S),m=Math.cos(S),b=Math.sin(S),d=T.HOVERARROWSIZE,u=T.HOVERTEXTPAD,y={box:!0,ohlc:!0,violin:!0,candlestick:!0},f={scatter:!0,scattergl:!0,splom:!0};function P(j,ee){return j.distance-ee.distance}X.hover=function(ee,ie,fe,be){ee=A.getGraphDiv(ee);var Ae=ie.target;A.throttle(ee._fullLayout._uid+T.HOVERID,T.HOVERMINTIME,function(){L(ee,ie,fe,be,Ae)})},X.loneHover=function(ee,ie){var fe=!0;Array.isArray(ee)||(fe=!1,ee=[ee]);var be=ie.gd,Ae=Z(be),Be=re(be),Ie=ee.map(function(ze){var tt=ze._x0||ze.x0||ze.x||0,nt=ze._x1||ze.x1||ze.x||0,Qe=ze._y0||ze.y0||ze.y||0,Ct=ze._y1||ze.y1||ze.y||0,St=ze.eventData;if(St){var Ot=Math.min(tt,nt),jt=Math.max(tt,nt),ur=Math.min(Qe,Ct),ar=Math.max(Qe,Ct),Cr=ze.trace;if(v.traceIs(Cr,"gl3d")){var vr=be._fullLayout[Cr.scene]._scene.container,_r=vr.offsetLeft,yt=vr.offsetTop;Ot+=_r,jt+=_r,ur+=yt,ar+=yt}St.bbox={x0:Ot+Be,x1:jt+Be,y0:ur+Ae,y1:ar+Ae},ie.inOut_bbox&&ie.inOut_bbox.push(St.bbox)}else St=!1;return{color:ze.color||n.defaultLine,x0:ze.x0||ze.x||0,x1:ze.x1||ze.x||0,y0:ze.y0||ze.y||0,y1:ze.y1||ze.y||0,xLabel:ze.xLabel,yLabel:ze.yLabel,zLabel:ze.zLabel,text:ze.text,name:ze.name,idealAlign:ze.idealAlign,borderColor:ze.borderColor,fontFamily:ze.fontFamily,fontSize:ze.fontSize,fontColor:ze.fontColor,fontWeight:ze.fontWeight,fontStyle:ze.fontStyle,fontVariant:ze.fontVariant,nameLength:ze.nameLength,textAlign:ze.textAlign,trace:ze.trace||{index:0,hoverinfo:""},xa:{_offset:0},ya:{_offset:0},index:0,hovertemplate:ze.hovertemplate||!1,hovertemplateLabels:ze.hovertemplateLabels||!1,eventData:St}}),Ze=!1,at=B(Ie,{gd:be,hovermode:"closest",rotateLabels:Ze,bgColor:ie.bgColor||n.background,container:H.select(ie.container),outerContainer:ie.outerContainer||ie.container}),it=at.hoverLabels,et=5,lt=0,Me=0;it.sort(function(ze,tt){return ze.y0-tt.y0}).each(function(ze,tt){var nt=ze.y0-ze.by/2;nt-etjt[0]._length||Ga<0||Ga>ur[0]._length)return s.unhoverRaw(j,ee)}if(ee.pointerX=ka+jt[0]._offset,ee.pointerY=Ga+ur[0]._offset,"xval"in ee?Ne=p.flat(Ae,ee.xval):Ne=p.p2c(jt,ka),"yval"in ee?Ee=p.flat(Ae,ee.yval):Ee=p.p2c(ur,Ga),!g(Ne[0])||!g(Ee[0]))return A.warn("Fx.hover failed",ee,j),s.unhoverRaw(j,ee)}var ni=1/0;function Wt(Xi,Jo){for(ke=0;keKt&&(Fe.splice(0,Kt),ni=Fe[0].distance),et&&yt!==0&&Fe.length===0){Gt.distance=yt,Gt.index=!1;var In=Le._module.hoverPoints(Gt,It,Bt,"closest",{hoverLayer:Ie._hoverlayer});if(In&&(In=In.filter(function(ys){return ys.spikeDistance<=yt})),In&&In.length){var Do,Ho=In.filter(function(ys){return ys.xa.showspikes&&ys.xa.spikesnap!=="hovered data"});if(Ho.length){var Qo=Ho[0];g(Qo.x0)&&g(Qo.y0)&&(Do=Vt(Qo),(!sr.vLinePoint||sr.vLinePoint.spikeDistance>Do.spikeDistance)&&(sr.vLinePoint=Do))}var Xn=In.filter(function(ys){return ys.ya.showspikes&&ys.ya.spikesnap!=="hovered data"});if(Xn.length){var po=Xn[0];g(po.x0)&&g(po.y0)&&(Do=Vt(po),(!sr.hLinePoint||sr.hLinePoint.spikeDistance>Do.spikeDistance)&&(sr.hLinePoint=Do))}}}}}Wt();function zt(Xi,Jo,zo){for(var as=null,Pn=1/0,go,In=0;In0&&Math.abs(Xi.distance)Er-1;Jr--)Lr(Fe[Jr]);Fe=Tr,pa()}var oa=j._hoverdata,ca=[],kt=Z(j),ir=re(j);for(Ve=0;Ve1||Fe.length>1)||lt==="closest"&&sa&&Fe.length>1,On=n.combine(Ie.plot_bgcolor||n.background,Ie.paper_bgcolor),$n=B(Fe,{gd:j,hovermode:lt,rotateLabels:Mn,bgColor:On,container:Ie._hoverlayer,outerContainer:Ie._paper.node(),commonLabelOpts:Ie.hoverlabel,hoverdistance:Ie.hoverdistance}),Cn=$n.hoverLabels;if(p.isUnifiedHover(lt)||(I(Cn,Mn,Ie,$n.commonLabelBoundingBox),W(Cn,Mn,Ie._invScaleX,Ie._invScaleY)),be&&be.tagName){var Lo=v.getComponentMethod("annotations","hasClickToShow")(j,ca);a(H.select(be),Lo?"pointer":"")}!be||fe||!se(j,ee,oa)||(oa&&j.emit("plotly_unhover",{event:ee,points:oa}),j.emit("plotly_hover",{event:ee,points:j._hoverdata,xaxes:jt,yaxes:ur,xvals:Ne,yvals:Ee}))}function z(j){return[j.trace.index,j.index,j.x0,j.y0,j.name,j.attr,j.xa?j.xa._id:"",j.ya?j.ya._id:""].join(",")}var F=/([\s\S]*)<\/extra>/;function B(j,ee){var ie=ee.gd,fe=ie._fullLayout,be=ee.hovermode,Ae=ee.rotateLabels,Be=ee.bgColor,Ie=ee.container,Ze=ee.outerContainer,at=ee.commonLabelOpts||{};if(j.length===0)return[[]];var it=ee.fontFamily||T.HOVERFONT,et=ee.fontSize||T.HOVERFONTSIZE,lt=ee.fontWeight||fe.font.weight,Me=ee.fontStyle||fe.font.style,ge=ee.fontVariant||fe.font.variant,ce=ee.fontTextcase||fe.font.textcase,ze=ee.fontLineposition||fe.font.lineposition,tt=ee.fontShadow||fe.font.shadow,nt=j[0],Qe=nt.xa,Ct=nt.ya,St=be.charAt(0),Ot=St+"Label",jt=nt[Ot];if(jt===void 0&&Qe.type==="multicategory")for(var ur=0;urfe.width-oa&&(ca=fe.width-oa),$a.attr("d","M"+(Fr-ca)+",0L"+(Fr-ca+d)+","+Jr+d+"H"+oa+"v"+Jr+(u*2+Mr.height)+"H"+-oa+"V"+Jr+d+"H"+(Fr-ca-d)+"Z"),Fr=ca,ke.minX=Fr-oa,ke.maxX=Fr+oa,Qe.side==="top"?(ke.minY=Lr-(u*2+Mr.height),ke.maxY=Lr-u):(ke.minY=Lr+u,ke.maxY=Lr+(u*2+Mr.height))}else{var kt,ir,mr;Ct.side==="right"?(kt="start",ir=1,mr="",Fr=Qe._offset+Qe._length):(kt="end",ir=-1,mr="-",Fr=Qe._offset),Lr=Ct._offset+(nt.y0+nt.y1)/2,mt.attr("text-anchor",kt),$a.attr("d","M0,0L"+mr+d+","+d+"V"+(u+Mr.height/2)+"h"+mr+(u*2+Mr.width)+"V-"+(u+Mr.height/2)+"H"+mr+d+"V-"+d+"Z"),ke.minY=Lr-(u+Mr.height/2),ke.maxY=Lr+(u+Mr.height/2),Ct.side==="right"?(ke.minX=Fr+d,ke.maxX=Fr+d+(u*2+Mr.width)):(ke.minX=Fr-d-(u*2+Mr.width),ke.maxX=Fr-d);var $r=Mr.height/2,ma=Cr-Mr.top-$r,Ba="clip"+fe._uid+"commonlabel"+Ct._id,Ca;if(Fr=0?Ea=xr:Zr+Ga=0?Ea=Zr:pa+Ga=0?Fa=Vt:Ut+Ma<_r&&Ut>=0?Fa=Ut:Xr+Ma<_r?Fa=Xr:Vt-Wt=0,(ya.idealAlign==="top"||!Ti)&&ai?(mr-=ma/2,ya.anchor="end"):Ti?(mr+=ma/2,ya.anchor="start"):ya.anchor="middle",ya.crossPos=mr;else{if(ya.pos=mr,Ti=ir+$r/2+Sa<=vr,ai=ir-$r/2-Sa>=0,(ya.idealAlign==="left"||!Ti)&&ai)ir-=$r/2,ya.anchor="end";else if(Ti)ir+=$r/2,ya.anchor="start";else{ya.anchor="middle";var an=Sa/2,sn=ir+an-vr,Mn=ir-an;sn>0&&(ir-=sn),Mn<0&&(ir+=-Mn)}ya.crossPos=ir}Lr.attr("text-anchor",ya.anchor),oa&&Jr.attr("text-anchor",ya.anchor),$a.attr("transform",e(ir,mr)+(Ae?t(w):""))}),{hoverLabels:qa,commonLabelBoundingBox:ke}}function O(j,ee,ie,fe,be,Ae){var Be="",Ie="";j.nameOverride!==void 0&&(j.name=j.nameOverride),j.name&&(j.trace._meta&&(j.name=A.templateString(j.name,j.trace._meta)),Be=G(j.name,j.nameLength));var Ze=ie.charAt(0),at=Ze==="x"?"y":"x";j.zLabel!==void 0?(j.xLabel!==void 0&&(Ie+="x: "+j.xLabel+"
"),j.yLabel!==void 0&&(Ie+="y: "+j.yLabel+"
"),j.trace.type!=="choropleth"&&j.trace.type!=="choroplethmapbox"&&j.trace.type!=="choroplethmap"&&(Ie+=(Ie?"z: ":"")+j.zLabel)):ee&&j[Ze+"Label"]===be?Ie=j[at+"Label"]||"":j.xLabel===void 0?j.yLabel!==void 0&&j.trace.type!=="scattercarpet"&&(Ie=j.yLabel):j.yLabel===void 0?Ie=j.xLabel:Ie="("+j.xLabel+", "+j.yLabel+")",(j.text||j.text===0)&&!Array.isArray(j.text)&&(Ie+=(Ie?"
":"")+j.text),j.extraText!==void 0&&(Ie+=(Ie?"
":"")+j.extraText),Ae&&Ie===""&&!j.hovertemplate&&(Be===""&&Ae.remove(),Ie=Be);var it=j.hovertemplate||!1;if(it){var et=j.hovertemplateLabels||j;j[Ze+"Label"]!==be&&(et[Ze+"other"]=et[Ze+"Val"],et[Ze+"otherLabel"]=et[Ze+"Label"]),Ie=A.hovertemplateString(it,et,fe._d3locale,j.eventData[0]||{},j.trace._meta),Ie=Ie.replace(F,function(lt,Me){return Be=G(Me,j.nameLength),""})}return[Ie,Be]}function I(j,ee,ie,fe){var be=ee?"xa":"ya",Ae=ee?"ya":"xa",Be=0,Ie=1,Ze=j.size(),at=new Array(Ze),it=0,et=fe.minX,lt=fe.maxX,Me=fe.minY,ge=fe.maxY,ce=function(Ne){return Ne*ie._invScaleX},ze=function(Ne){return Ne*ie._invScaleY};j.each(function(Ne){var Ee=Ne[be],Ve=Ne[Ae],ke=Ee._id.charAt(0)==="x",Te=Ee.range;it===0&&Te&&Te[0]>Te[1]!==ke&&(Ie=-1);var Le=0,rt=ke?ie.width:ie.height;if(ie.hovermode==="x"||ie.hovermode==="y"){var dt=N(Ne,ee),xt=Ne.anchor,It=xt==="end"?-1:1,Bt,Gt;if(xt==="middle")Bt=Ne.crossPos+(ke?ze(dt.y-Ne.by/2):ce(Ne.bx/2+Ne.tx2width/2)),Gt=Bt+(ke?ze(Ne.by):ce(Ne.bx));else if(ke)Bt=Ne.crossPos+ze(d+dt.y)-ze(Ne.by/2-d),Gt=Bt+ze(Ne.by);else{var Kt=ce(It*d+dt.x),sr=Kt+ce(It*Ne.bx);Bt=Ne.crossPos+Math.min(Kt,sr),Gt=Ne.crossPos+Math.max(Kt,sr)}ke?Me!==void 0&&ge!==void 0&&Math.min(Gt,ge)-Math.max(Bt,Me)>1&&(Ve.side==="left"?(Le=Ve._mainLinePosition,rt=ie.width):rt=Ve._mainLinePosition):et!==void 0&<!==void 0&&Math.min(Gt,lt)-Math.max(Bt,et)>1&&(Ve.side==="top"?(Le=Ve._mainLinePosition,rt=ie.height):rt=Ve._mainLinePosition)}at[it++]=[{datum:Ne,traceIndex:Ne.trace.index,dp:0,pos:Ne.pos,posref:Ne.posref,size:Ne.by*(ke?E:1)/2,pmin:Le,pmax:rt}]}),at.sort(function(Ne,Ee){return Ne[0].posref-Ee[0].posref||Ie*(Ee[0].traceIndex-Ne[0].traceIndex)});var tt,nt,Qe,Ct,St,Ot,jt;function ur(Ne){var Ee=Ne[0],Ve=Ne[Ne.length-1];if(nt=Ee.pmin-Ee.pos-Ee.dp+Ee.size,Qe=Ve.pos+Ve.dp+Ve.size-Ee.pmax,nt>.01){for(St=Ne.length-1;St>=0;St--)Ne[St].dp+=nt;tt=!1}if(!(Qe<.01)){if(nt<-.01){for(St=Ne.length-1;St>=0;St--)Ne[St].dp-=Qe;tt=!1}if(tt){var ke=0;for(Ct=0;CtEe.pmax&&ke++;for(Ct=Ne.length-1;Ct>=0&&!(ke<=0);Ct--)Ot=Ne[Ct],Ot.pos>Ee.pmax-1&&(Ot.del=!0,ke--);for(Ct=0;Ct=0;St--)Ne[St].dp-=Qe;for(Ct=Ne.length-1;Ct>=0&&!(ke<=0);Ct--)Ot=Ne[Ct],Ot.pos+Ot.dp+Ot.size>Ee.pmax&&(Ot.del=!0,ke--)}}}for(;!tt&&Be<=Ze;){for(Be++,tt=!0,Ct=0;Ct.01){for(St=Cr.length-1;St>=0;St--)Cr[St].dp+=nt;for(ar.push.apply(ar,Cr),at.splice(Ct+1,1),jt=0,St=ar.length-1;St>=0;St--)jt+=ar[St].dp;for(Qe=jt/ar.length,St=ar.length-1;St>=0;St--)ar[St].dp-=Qe;tt=!1}else Ct++}at.forEach(ur)}for(Ct=at.length-1;Ct>=0;Ct--){var yt=at[Ct];for(St=yt.length-1;St>=0;St--){var Fe=yt[St],Ke=Fe.datum;Ke.offset=Fe.dp,Ke.del=Fe.del}}}function N(j,ee){var ie=0,fe=j.offset;return ee&&(fe*=-b,ie=j.offset*m),{x:ie,y:fe}}function U(j){var ee={start:1,end:-1,middle:0}[j.anchor],ie=ee*(d+u),fe=ie+ee*(j.txwidth+u),be=j.anchor==="middle";return be&&(ie-=j.tx2width/2,fe+=j.txwidth/2+u),{alignShift:ee,textShiftX:ie,text2ShiftX:fe}}function W(j,ee,ie,fe){var be=function(Be){return Be*ie},Ae=function(Be){return Be*fe};j.each(function(Be){var Ie=H.select(this);if(Be.del)return Ie.remove();var Ze=Ie.select("text.nums"),at=Be.anchor,it=at==="end"?-1:1,et=U(Be),lt=N(Be,ee),Me=lt.x,ge=lt.y,ce=at==="middle";Ie.select("path").attr("d",ce?"M-"+be(Be.bx/2+Be.tx2width/2)+","+Ae(ge-Be.by/2)+"h"+be(Be.bx)+"v"+Ae(Be.by)+"h-"+be(Be.bx)+"Z":"M0,0L"+be(it*d+Me)+","+Ae(d+ge)+"v"+Ae(Be.by/2-d)+"h"+be(it*Be.bx)+"v-"+Ae(Be.by)+"H"+be(it*d+Me)+"V"+Ae(ge-d)+"Z");var ze=Me+et.textShiftX,tt=ge+Be.ty0-Be.by/2+u,nt=Be.textAlign||"auto";nt!=="auto"&&(nt==="left"&&at!=="start"?(Ze.attr("text-anchor","start"),ze=ce?-Be.bx/2-Be.tx2width/2+u:-Be.bx-u):nt==="right"&&at!=="end"&&(Ze.attr("text-anchor","end"),ze=ce?Be.bx/2-Be.tx2width/2-u:Be.bx+u)),Ze.call(o.positionText,be(ze),Ae(tt)),Be.tx2width&&(Ie.select("text.name").call(o.positionText,be(et.text2ShiftX+et.alignShift*u+Me),Ae(ge+Be.ty0-Be.by/2+u)),Ie.select("rect").call(i.setRect,be(et.text2ShiftX+(et.alignShift-1)*Be.tx2width/2+Me),Ae(ge-Be.by/2-1),be(Be.tx2width),Ae(Be.by+2)))})}function Q(j,ee){var ie=j.index,fe=j.trace||{},be=j.cd[0],Ae=j.cd[ie]||{};function Be(lt){return lt||g(lt)&<===0}var Ie=Array.isArray(ie)?function(lt,Me){var ge=A.castOption(be,ie,lt);return Be(ge)?ge:A.extractOption({},fe,"",Me)}:function(lt,Me){return A.extractOption(Ae,fe,lt,Me)};function Ze(lt,Me,ge){var ce=Ie(Me,ge);Be(ce)&&(j[lt]=ce)}if(Ze("hoverinfo","hi","hoverinfo"),Ze("bgcolor","hbg","hoverlabel.bgcolor"),Ze("borderColor","hbc","hoverlabel.bordercolor"),Ze("fontFamily","htf","hoverlabel.font.family"),Ze("fontSize","hts","hoverlabel.font.size"),Ze("fontColor","htc","hoverlabel.font.color"),Ze("fontWeight","htw","hoverlabel.font.weight"),Ze("fontStyle","hty","hoverlabel.font.style"),Ze("fontVariant","htv","hoverlabel.font.variant"),Ze("nameLength","hnl","hoverlabel.namelength"),Ze("textAlign","hta","hoverlabel.align"),j.posref=ee==="y"||ee==="closest"&&fe.orientation==="h"?j.xa._offset+(j.x0+j.x1)/2:j.ya._offset+(j.y0+j.y1)/2,j.x0=A.constrain(j.x0,0,j.xa._length),j.x1=A.constrain(j.x1,0,j.xa._length),j.y0=A.constrain(j.y0,0,j.ya._length),j.y1=A.constrain(j.y1,0,j.ya._length),j.xLabelVal!==void 0&&(j.xLabel="xLabel"in j?j.xLabel:c.hoverLabelText(j.xa,j.xLabelVal,fe.xhoverformat),j.xVal=j.xa.c2d(j.xLabelVal)),j.yLabelVal!==void 0&&(j.yLabel="yLabel"in j?j.yLabel:c.hoverLabelText(j.ya,j.yLabelVal,fe.yhoverformat),j.yVal=j.ya.c2d(j.yLabelVal)),j.zLabelVal!==void 0&&j.zLabel===void 0&&(j.zLabel=String(j.zLabelVal)),!isNaN(j.xerr)&&!(j.xa.type==="log"&&j.xerr<=0)){var at=c.tickText(j.xa,j.xa.c2l(j.xerr),"hover").text;j.xerrneg!==void 0?j.xLabel+=" +"+at+" / -"+c.tickText(j.xa,j.xa.c2l(j.xerrneg),"hover").text:j.xLabel+=" \xB1 "+at,ee==="x"&&(j.distance+=1)}if(!isNaN(j.yerr)&&!(j.ya.type==="log"&&j.yerr<=0)){var it=c.tickText(j.ya,j.ya.c2l(j.yerr),"hover").text;j.yerrneg!==void 0?j.yLabel+=" +"+it+" / -"+c.tickText(j.ya,j.ya.c2l(j.yerrneg),"hover").text:j.yLabel+=" \xB1 "+it,ee==="y"&&(j.distance+=1)}var et=j.hoverinfo||j.trace.hoverinfo;return et&&et!=="all"&&(et=Array.isArray(et)?et:et.split("+"),et.indexOf("x")===-1&&(j.xLabel=void 0),et.indexOf("y")===-1&&(j.yLabel=void 0),et.indexOf("z")===-1&&(j.zLabel=void 0),et.indexOf("text")===-1&&(j.text=void 0),et.indexOf("name")===-1&&(j.name=void 0)),j}function ue(j,ee,ie){var fe=ie.container,be=ie.fullLayout,Ae=be._size,Be=ie.event,Ie=!!ee.hLinePoint,Ze=!!ee.vLinePoint,at,it;if(fe.selectAll(".spikeline").remove(),!!(Ze||Ie)){var et=n.combine(be.plot_bgcolor,be.paper_bgcolor);if(Ie){var lt=ee.hLinePoint,Me,ge;at=lt&<.xa,it=lt&<.ya;var ce=it.spikesnap;ce==="cursor"?(Me=Be.pointerX,ge=Be.pointerY):(Me=at._offset+lt.x,ge=it._offset+lt.y);var ze=x.readability(lt.color,et)<1.5?n.contrast(et):lt.color,tt=it.spikemode,nt=it.spikethickness,Qe=it.spikecolor||ze,Ct=c.getPxPosition(j,it),St,Ot;if(tt.indexOf("toaxis")!==-1||tt.indexOf("across")!==-1){if(tt.indexOf("toaxis")!==-1&&(St=Ct,Ot=Me),tt.indexOf("across")!==-1){var jt=it._counterDomainMin,ur=it._counterDomainMax;it.anchor==="free"&&(jt=Math.min(jt,it.position),ur=Math.max(ur,it.position)),St=Ae.l+jt*Ae.w,Ot=Ae.l+ur*Ae.w}fe.insert("line",":first-child").attr({x1:St,x2:Ot,y1:ge,y2:ge,"stroke-width":nt,stroke:Qe,"stroke-dasharray":i.dashStyle(it.spikedash,nt)}).classed("spikeline",!0).classed("crisp",!0),fe.insert("line",":first-child").attr({x1:St,x2:Ot,y1:ge,y2:ge,"stroke-width":nt+2,stroke:et}).classed("spikeline",!0).classed("crisp",!0)}tt.indexOf("marker")!==-1&&fe.insert("circle",":first-child").attr({cx:Ct+(it.side!=="right"?nt:-nt),cy:ge,r:nt,fill:Qe}).classed("spikeline",!0)}if(Ze){var ar=ee.vLinePoint,Cr,vr;at=ar&&ar.xa,it=ar&&ar.ya;var _r=at.spikesnap;_r==="cursor"?(Cr=Be.pointerX,vr=Be.pointerY):(Cr=at._offset+ar.x,vr=it._offset+ar.y);var yt=x.readability(ar.color,et)<1.5?n.contrast(et):ar.color,Fe=at.spikemode,Ke=at.spikethickness,Ne=at.spikecolor||yt,Ee=c.getPxPosition(j,at),Ve,ke;if(Fe.indexOf("toaxis")!==-1||Fe.indexOf("across")!==-1){if(Fe.indexOf("toaxis")!==-1&&(Ve=Ee,ke=vr),Fe.indexOf("across")!==-1){var Te=at._counterDomainMin,Le=at._counterDomainMax;at.anchor==="free"&&(Te=Math.min(Te,at.position),Le=Math.max(Le,at.position)),Ve=Ae.t+(1-Le)*Ae.h,ke=Ae.t+(1-Te)*Ae.h}fe.insert("line",":first-child").attr({x1:Cr,x2:Cr,y1:Ve,y2:ke,"stroke-width":Ke,stroke:Ne,"stroke-dasharray":i.dashStyle(at.spikedash,Ke)}).classed("spikeline",!0).classed("crisp",!0),fe.insert("line",":first-child").attr({x1:Cr,x2:Cr,y1:Ve,y2:ke,"stroke-width":Ke+2,stroke:et}).classed("spikeline",!0).classed("crisp",!0)}Fe.indexOf("marker")!==-1&&fe.insert("circle",":first-child").attr({cx:Cr,cy:Ee-(at.side!=="top"?Ke:-Ke),r:Ke,fill:Ne}).classed("spikeline",!0)}}}function se(j,ee,ie){if(!ie||ie.length!==j._hoverdata.length)return!0;for(var fe=ie.length-1;fe>=0;fe--){var be=ie[fe],Ae=j._hoverdata[fe];if(be.curveNumber!==Ae.curveNumber||String(be.pointNumber)!==String(Ae.pointNumber)||String(be.pointNumbers)!==String(Ae.pointNumbers))return!0}return!1}function he(j,ee){return!ee||ee.vLinePoint!==j._spikepoints.vLinePoint||ee.hLinePoint!==j._spikepoints.hLinePoint}function G(j,ee){return o.plainText(j||"",{len:ee,allowedTags:["br","sub","sup","b","i","em","s","u"]})}function $(j,ee){for(var ie=ee.charAt(0),fe=[],be=[],Ae=[],Be=0;Be"," plotly-logomark"," "," "," "," "," "," "," "," "," "," "," "," "," ",""].join("")}}}}),w2=Ye({"src/components/shapes/draw_newshape/constants.js"(X,H){"use strict";var g=32;H.exports={CIRCLE_SIDES:g,i000:0,i090:g/4,i180:g/2,i270:g/4*3,cos45:Math.cos(Math.PI/4),sin45:Math.sin(Math.PI/4),SQRT2:Math.sqrt(2)}}}),T2=Ye({"src/components/selections/helpers.js"(X,H){"use strict";var g=ta().strTranslate;function x(t,r){switch(t.type){case"log":return t.p2d(r);case"date":return t.p2r(r,0,t.calendar);default:return t.p2r(r)}}function A(t,r){switch(t.type){case"log":return t.d2p(r);case"date":return t.r2p(r,0,t.calendar);default:return t.r2p(r)}}function M(t){var r=t._id.charAt(0)==="y"?1:0;return function(o){return x(t,o[r])}}function e(t){return g(t.xaxis._offset,t.yaxis._offset)}H.exports={p2r:x,r2p:A,axValue:M,getTransform:e}}}),tg=Ye({"src/components/shapes/draw_newshape/helpers.js"(X){"use strict";var H=A_(),g=w2(),x=g.CIRCLE_SIDES,A=g.SQRT2,M=T2(),e=M.p2r,t=M.r2p,r=[0,3,4,5,6,1,2],o=[0,3,4,1,2];X.writePaths=function(n){var s=n.length;if(!s)return"M0,0Z";for(var c="",h=0;h0&&_l&&(w="X"),w});return h>l&&(_=_.replace(/[\s,]*X.*/,""),g.log("Ignoring extra params in segment "+c)),v+_})}function M(e,t){t=t||0;var r=0;return t&&e&&(e.type==="category"||e.type==="multicategory")&&(r=(e.r2p(1)-e.r2p(0))*t),r}}}),xS=Ye({"src/components/shapes/display_labels.js"(X,H){"use strict";var g=ta(),x=Co(),A=jl(),M=Bo(),e=tg().readPaths,t=rg(),r=t.getPathString,o=p2(),a=oh().FROM_TL;H.exports=function(c,h,v,p){if(p.selectAll(".shape-label").remove(),!!(v.label.text||v.label.texttemplate)){var T;if(v.label.texttemplate){var l={};if(v.type!=="path"){var _=x.getFromId(c,v.xref),w=x.getFromId(c,v.yref);for(var S in o){var E=o[S](v,_,w);E!==void 0&&(l[S]=E)}}T=g.texttemplateStringForShapes(v.label.texttemplate,{},c._fullLayout._d3locale,l)}else T=v.label.text;var m={"data-index":h},b=v.label.font,d={"data-notex":1},u=p.append("g").attr(m).classed("shape-label",!0),y=u.append("text").attr(d).classed("shape-label-text",!0).text(T),f,P,L,z;if(v.path){var F=r(c,v),B=e(F,c);f=1/0,L=1/0,P=-1/0,z=-1/0;for(var O=0;O=s?p=c-v:p=v-c,-180/Math.PI*Math.atan2(p,T)}function n(s,c,h,v,p,T,l){var _=p.label.textposition,w=p.label.textangle,S=p.label.padding,E=p.type,m=Math.PI/180*T,b=Math.sin(m),d=Math.cos(m),u=p.label.xanchor,y=p.label.yanchor,f,P,L,z;if(E==="line"){_==="start"?(f=s,P=c):_==="end"?(f=h,P=v):(f=(s+h)/2,P=(c+v)/2),u==="auto"&&(_==="start"?w==="auto"?h>s?u="left":hs?u="right":hs?u="right":hs?u="left":h1&&!(et.length===2&&et[1][0]==="Z")&&(G===0&&(et[0][0]="M"),f[he]=et,B(),O())}}function fe(et,lt){if(et===2){he=+lt.srcElement.getAttribute("data-i"),G=+lt.srcElement.getAttribute("data-j");var Me=f[he];!T(Me)&&!l(Me)&&ie()}}function be(et){ue=[];for(var lt=0;ltB&&Te>O&&!Ee.shiftKey?s.getCursor(Le/ke,1-rt/Te):"move";c(f,dt),St=dt.split("-")[0]}}function ar(Ee){l(y)||(I&&($=ce(P.xanchor)),N&&(J=ze(P.yanchor)),P.type==="path"?Ae=P.path:(ue=I?P.x0:ce(P.x0),se=N?P.y0:ze(P.y0),he=I?P.x1:ce(P.x1),G=N?P.y1:ze(P.y1)),ueG?(Z=se,ee="y0",re=G,ie="y1"):(Z=G,ee="y1",re=se,ie="y0"),ur(Ee),Fe(z,P),Ne(f,P,y),Ct.moveFn=St==="move"?_r:yt,Ct.altKey=Ee.altKey)}function Cr(){l(y)||(c(f),Ke(z),S(f,y,P),x.call("_guiRelayout",y,F.getUpdateObj()))}function vr(){l(y)||Ke(z)}function _r(Ee,Ve){if(P.type==="path"){var ke=function(rt){return rt},Te=ke,Le=ke;I?Q("xanchor",P.xanchor=tt($+Ee)):(Te=function(dt){return tt(ce(dt)+Ee)},Ie&&Ie.type==="date"&&(Te=v.encodeDate(Te))),N?Q("yanchor",P.yanchor=nt(J+Ve)):(Le=function(dt){return nt(ze(dt)+Ve)},at&&at.type==="date"&&(Le=v.encodeDate(Le))),Q("path",P.path=m(Ae,Te,Le))}else I?Q("xanchor",P.xanchor=tt($+Ee)):(Q("x0",P.x0=tt(ue+Ee)),Q("x1",P.x1=tt(he+Ee))),N?Q("yanchor",P.yanchor=nt(J+Ve)):(Q("y0",P.y0=nt(se+Ve)),Q("y1",P.y1=nt(G+Ve)));f.attr("d",p(y,P)),Fe(z,P),r(y,L,P,Be)}function yt(Ee,Ve){if(W){var ke=function(Ma){return Ma},Te=ke,Le=ke;I?Q("xanchor",P.xanchor=tt($+Ee)):(Te=function(Ua){return tt(ce(Ua)+Ee)},Ie&&Ie.type==="date"&&(Te=v.encodeDate(Te))),N?Q("yanchor",P.yanchor=nt(J+Ve)):(Le=function(Ua){return nt(ze(Ua)+Ve)},at&&at.type==="date"&&(Le=v.encodeDate(Le))),Q("path",P.path=m(Ae,Te,Le))}else if(U){if(St==="resize-over-start-point"){var rt=ue+Ee,dt=N?se-Ve:se+Ve;Q("x0",P.x0=I?rt:tt(rt)),Q("y0",P.y0=N?dt:nt(dt))}else if(St==="resize-over-end-point"){var xt=he+Ee,It=N?G-Ve:G+Ve;Q("x1",P.x1=I?xt:tt(xt)),Q("y1",P.y1=N?It:nt(It))}}else{var Bt=function(Ma){return St.indexOf(Ma)!==-1},Gt=Bt("n"),Kt=Bt("s"),sr=Bt("w"),sa=Bt("e"),Aa=Gt?Z+Ve:Z,La=Kt?re+Ve:re,ka=sr?ne+Ee:ne,Ga=sa?j+Ee:j;N&&(Gt&&(Aa=Z-Ve),Kt&&(La=re-Ve)),(!N&&La-Aa>O||N&&Aa-La>O)&&(Q(ee,P[ee]=N?Aa:nt(Aa)),Q(ie,P[ie]=N?La:nt(La))),Ga-ka>B&&(Q(fe,P[fe]=I?ka:tt(ka)),Q(be,P[be]=I?Ga:tt(Ga)))}f.attr("d",p(y,P)),Fe(z,P),r(y,L,P,Be)}function Fe(Ee,Ve){(I||N)&&ke();function ke(){var Te=Ve.type!=="path",Le=Ee.selectAll(".visual-cue").data([0]),rt=1;Le.enter().append("path").attr({fill:"#fff","fill-rule":"evenodd",stroke:"#000","stroke-width":rt}).classed("visual-cue",!0);var dt=ce(I?Ve.xanchor:A.midRange(Te?[Ve.x0,Ve.x1]:v.extractPathCoords(Ve.path,h.paramIsX))),xt=ze(N?Ve.yanchor:A.midRange(Te?[Ve.y0,Ve.y1]:v.extractPathCoords(Ve.path,h.paramIsY)));if(dt=v.roundPositionForSharpStrokeRendering(dt,rt),xt=v.roundPositionForSharpStrokeRendering(xt,rt),I&&N){var It="M"+(dt-1-rt)+","+(xt-1-rt)+"h-8v2h8 v8h2v-8 h8v-2h-8 v-8h-2 Z";Le.attr("d",It)}else if(I){var Bt="M"+(dt-1-rt)+","+(xt-9-rt)+"v18 h2 v-18 Z";Le.attr("d",Bt)}else{var Gt="M"+(dt-9-rt)+","+(xt-1-rt)+"h18 v2 h-18 Z";Le.attr("d",Gt)}}}function Ke(Ee){Ee.selectAll(".visual-cue").remove()}function Ne(Ee,Ve,ke){var Te=Ve.xref,Le=Ve.yref,rt=M.getFromId(ke,Te),dt=M.getFromId(ke,Le),xt="";Te!=="paper"&&!rt.autorange&&(xt+=Te),Le!=="paper"&&!dt.autorange&&(xt+=Le),i.setClipUrl(Ee,xt?"clip"+ke._fullLayout._uid+xt:null,ke)}}function m(y,f,P){return y.replace(h.segmentRE,function(L){var z=0,F=L.charAt(0),B=h.paramIsX[F],O=h.paramIsY[F],I=h.numParams[F],N=L.substr(1).replace(h.paramRE,function(U){return z>=I||(B[z]?U=f(U):O[z]&&(U=P(U)),z++),U});return F+N})}function b(y,f){if(_(y)){var P=f.node(),L=+P.getAttribute("data-index");if(L>=0){if(L===y._fullLayout._activeShapeIndex){d(y);return}y._fullLayout._activeShapeIndex=L,y._fullLayout._deactivateShape=d,T(y)}}}function d(y){if(_(y)){var f=y._fullLayout._activeShapeIndex;f>=0&&(o(y),delete y._fullLayout._activeShapeIndex,T(y))}}function u(y){if(_(y)){o(y);var f=y._fullLayout._activeShapeIndex,P=(y.layout||{}).shapes||[];if(f1?(se=["toggleHover"],he=["resetViews"]):u?(ue=["zoomInGeo","zoomOutGeo"],se=["hoverClosestGeo"],he=["resetGeo"]):d?(se=["hoverClosest3d"],he=["resetCameraDefault3d","resetCameraLastSave3d"]):L?(ue=["zoomInMapbox","zoomOutMapbox"],se=["toggleHover"],he=["resetViewMapbox"]):z?(ue=["zoomInMap","zoomOutMap"],se=["toggleHover"],he=["resetViewMap"]):y?se=["hoverClosestPie"]:O?(se=["hoverClosestCartesian","hoverCompareCartesian"],he=["resetViewSankey"]):se=["toggleHover"],b&&se.push("toggleSpikelines","hoverClosestCartesian","hoverCompareCartesian"),(s(T)||N)&&(se=[]),b&&!I&&(ue=["zoomIn2d","zoomOut2d","autoScale2d"],he[0]!=="resetViews"&&(he=["resetScale2d"])),d?G=["zoom3d","pan3d","orbitRotation","tableRotation"]:b&&!I||P?G=["zoom2d","pan2d"]:L||z||u?G=["pan2d"]:F&&(G=["zoom2d"]),n(T)&&G.push("select2d","lasso2d");var $=[],J=function(j){$.indexOf(j)===-1&&se.indexOf(j)!==-1&&$.push(j)};if(Array.isArray(E)){for(var Z=[],re=0;rew?T.substr(w):l.substr(_))+S}function c(v,p){for(var T=p._size,l=T.h/T.w,_={},w=Object.keys(v),S=0;St*P&&!B)){for(w=0;wG&&iese&&(se=ie);var be=(se-ue)/(2*he);u/=be,ue=m.l2r(ue),se=m.l2r(se),m.range=m._input.range=U=O[1]||W[1]<=O[0])&&Q[0]I[0])return!0}return!1}function S(O){var I=O._fullLayout,N=I._size,U=N.p,W=i.list(O,"",!0),Q,ue,se,he,G,$;if(I._paperdiv.style({width:O._context.responsive&&I.autosize&&!O._context._hasZeroWidth&&!O.layout.width?"100%":I.width+"px",height:O._context.responsive&&I.autosize&&!O._context._hasZeroHeight&&!O.layout.height?"100%":I.height+"px"}).selectAll(".main-svg").call(r.setSize,I.width,I.height),O._context.setBackground(O,I.paper_bgcolor),X.drawMainTitle(O),a.manage(O),!I._has("cartesian"))return x.previousPromises(O);function J(Ne,Ee,Ve){var ke=Ne._lw/2;if(Ne._id.charAt(0)==="x"){if(Ee){if(Ve==="top")return Ee._offset-U-ke}else return N.t+N.h*(1-(Ne.position||0))+ke%1;return Ee._offset+Ee._length+U+ke}if(Ee){if(Ve==="right")return Ee._offset+Ee._length+U+ke}else return N.l+N.w*(Ne.position||0)+ke%1;return Ee._offset-U-ke}for(Q=0;Q0){f(O,Q,G,he),se.attr({x:ue,y:Q,"text-anchor":U,dy:z(I.yanchor)}).call(M.positionText,ue,Q);var $=(I.text.match(M.BR_TAG_ALL)||[]).length;if($){var J=n.LINE_SPACING*$+n.MID_SHIFT;I.y===0&&(J=-J),se.selectAll(".line").each(function(){var ee=+this.getAttribute("dy").slice(0,-2)-J+"em";this.setAttribute("dy",ee)})}var Z=H.selectAll(".gtitle-subtitle");if(Z.node()){var re=se.node().getBBox(),ne=re.y+re.height,j=ne+o.SUBTITLE_PADDING_EM*I.subtitle.font.size;Z.attr({x:ue,y:j,"text-anchor":U,dy:z(I.yanchor)}).call(M.positionText,ue,j)}}}};function d(O,I,N,U,W){var Q=I.yref==="paper"?O._fullLayout._size.h:O._fullLayout.height,ue=A.isTopAnchor(I)?U:U-W,se=N==="b"?Q-ue:ue;return A.isTopAnchor(I)&&N==="t"||A.isBottomAnchor(I)&&N==="b"?!1:se.5?"t":"b",ue=O._fullLayout.margin[Q],se=0;return I.yref==="paper"?se=N+I.pad.t+I.pad.b:I.yref==="container"&&(se=u(Q,U,W,O._fullLayout.height,N)+I.pad.t+I.pad.b),se>ue?se:0}function f(O,I,N,U){var W="title.automargin",Q=O._fullLayout.title,ue=Q.y>.5?"t":"b",se={x:Q.x,y:Q.y,t:0,b:0},he={};Q.yref==="paper"&&d(O,Q,ue,I,U)?se[ue]=N:Q.yref==="container"&&(he[ue]=N,O._fullLayout._reservedMargin[W]=he),x.allowAutoMargin(O,W),x.autoMargin(O,W,se)}function P(O,I){var N=O.title,U=O._size,W=0;switch(I===p?W=N.pad.l:I===l&&(W=-N.pad.r),N.xref){case"paper":return U.l+U.w*N.x+W;case"container":default:return O.width*N.x+W}}function L(O,I){var N=O.title,U=O._size,W=0;if(I==="0em"||!I?W=-N.pad.b:I===n.CAP_SHIFT+"em"&&(W=N.pad.t),N.y==="auto")return U.t/2;switch(N.yref){case"paper":return U.t+U.h-U.h*N.y+W;case"container":default:return O.height-O.height*N.y+W}}function z(O){return O==="top"?n.CAP_SHIFT+.3+"em":O==="bottom"?"-0.3em":n.MID_SHIFT+"em"}function F(O){var I=O.title,N=T;return A.isRightAnchor(I)?N=l:A.isLeftAnchor(I)&&(N=p),N}function B(O){var I=O.title,N="0em";return A.isTopAnchor(I)?N=n.CAP_SHIFT+"em":A.isMiddleAnchor(I)&&(N=n.MID_SHIFT+"em"),N}X.doTraceStyle=function(O){var I=O.calcdata,N=[],U;for(U=0;U=0;F--){var B=E.append("path").attr(b).style("opacity",F?.1:d).call(M.stroke,y).call(M.fill,u).call(e.dashLine,F?"solid":P,F?4+f:f);if(s(B,p,_),L){var O=t(p.layout,"selections",_);B.style({cursor:"move"});var I={element:B.node(),plotinfo:w,gd:p,editHelpers:O,isActiveSelection:!0},N=g(m,p);x(N,B,I)}else B.style("pointer-events",F?"all":"none");z[F]=B}var U=z[0],W=z[1];W.node().addEventListener("click",function(){return c(p,U)})}}function s(p,T,l){var _=l.xref+l.yref;e.setClipUrl(p,"clip"+T._fullLayout._uid+_,T)}function c(p,T){if(i(p)){var l=T.node(),_=+l.getAttribute("data-index");if(_>=0){if(_===p._fullLayout._activeSelectionIndex){v(p);return}p._fullLayout._activeSelectionIndex=_,p._fullLayout._deactivateSelection=v,a(p)}}}function h(p){if(i(p)){var T=p._fullLayout.selections.length-1;p._fullLayout._activeSelectionIndex=T,p._fullLayout._deactivateSelection=v,a(p)}}function v(p){if(i(p)){var T=p._fullLayout._activeSelectionIndex;T>=0&&(A(p),delete p._fullLayout._activeSelectionIndex,a(p))}}}}),xO=Ye({"node_modules/polybooljs/lib/build-log.js"(X,H){function g(){var x,A=0,M=!1;function e(t,r){return x.list.push({type:t,data:r?JSON.parse(JSON.stringify(r)):void 0}),x}return x={list:[],segmentId:function(){return A++},checkIntersection:function(t,r){return e("check",{seg1:t,seg2:r})},segmentChop:function(t,r){return e("div_seg",{seg:t,pt:r}),e("chop",{seg:t,pt:r})},statusRemove:function(t){return e("pop_seg",{seg:t})},segmentUpdate:function(t){return e("seg_update",{seg:t})},segmentNew:function(t,r){return e("new_seg",{seg:t,primary:r})},segmentRemove:function(t){return e("rem_seg",{seg:t})},tempStatus:function(t,r,o){return e("temp_status",{seg:t,above:r,below:o})},rewind:function(t){return e("rewind",{seg:t})},status:function(t,r,o){return e("status",{seg:t,above:r,below:o})},vert:function(t){return t===M?x:(M=t,e("vert",{x:t}))},log:function(t){return typeof t!="string"&&(t=JSON.stringify(t,!1," ")),e("log",{txt:t})},reset:function(){return e("reset")},selected:function(t){return e("selected",{segs:t})},chainStart:function(t){return e("chain_start",{seg:t})},chainRemoveHead:function(t,r){return e("chain_rem_head",{index:t,pt:r})},chainRemoveTail:function(t,r){return e("chain_rem_tail",{index:t,pt:r})},chainNew:function(t,r){return e("chain_new",{pt1:t,pt2:r})},chainMatch:function(t){return e("chain_match",{index:t})},chainClose:function(t){return e("chain_close",{index:t})},chainAddHead:function(t,r){return e("chain_add_head",{index:t,pt:r})},chainAddTail:function(t,r){return e("chain_add_tail",{index:t,pt:r})},chainConnect:function(t,r){return e("chain_con",{index1:t,index2:r})},chainReverse:function(t){return e("chain_rev",{index:t})},chainJoin:function(t,r){return e("chain_join",{index1:t,index2:r})},done:function(){return e("done")}},x}H.exports=g}}),bO=Ye({"node_modules/polybooljs/lib/epsilon.js"(X,H){function g(x){typeof x!="number"&&(x=1e-10);var A={epsilon:function(M){return typeof M=="number"&&(x=M),x},pointAboveOrOnLine:function(M,e,t){var r=e[0],o=e[1],a=t[0],i=t[1],n=M[0],s=M[1];return(a-r)*(s-o)-(i-o)*(n-r)>=-x},pointBetween:function(M,e,t){var r=M[1]-e[1],o=t[0]-e[0],a=M[0]-e[0],i=t[1]-e[1],n=a*o+r*i;if(n-x)},pointsSameX:function(M,e){return Math.abs(M[0]-e[0])x!=a-r>x&&(o-s)*(r-c)/(a-c)+s-t>x&&(i=!i),o=s,a=c}return i}};return A}H.exports=g}}),wO=Ye({"node_modules/polybooljs/lib/linked-list.js"(X,H){var g={create:function(){var x={root:{root:!0,next:null},exists:function(A){return!(A===null||A===x.root)},isEmpty:function(){return x.root.next===null},getHead:function(){return x.root.next},insertBefore:function(A,M){for(var e=x.root,t=x.root.next;t!==null;){if(M(t)){A.prev=t.prev,A.next=t,t.prev.next=A,t.prev=A;return}e=t,t=t.next}e.next=A,A.prev=e,A.next=null},findTransition:function(A){for(var M=x.root,e=x.root.next;e!==null&&!A(e);)M=e,e=e.next;return{before:M===x.root?null:M,after:e,insert:function(t){return t.prev=M,t.next=e,M.next=t,e!==null&&(e.prev=t),t}}}};return x},node:function(x){return x.prev=null,x.next=null,x.remove=function(){x.prev.next=x.next,x.next&&(x.next.prev=x.prev),x.prev=null,x.next=null},x}};H.exports=g}}),TO=Ye({"node_modules/polybooljs/lib/intersecter.js"(X,H){var g=wO();function x(A,M,e){function t(T,l){return{id:e?e.segmentId():-1,start:T,end:l,myFill:{above:null,below:null},otherFill:null}}function r(T,l,_){return{id:e?e.segmentId():-1,start:T,end:l,myFill:{above:_.myFill.above,below:_.myFill.below},otherFill:null}}var o=g.create();function a(T,l,_,w,S,E){var m=M.pointsCompare(l,S);return m!==0?m:M.pointsSame(_,E)?0:T!==w?T?1:-1:M.pointAboveOrOnLine(_,w?S:E,w?E:S)?1:-1}function i(T,l){o.insertBefore(T,function(_){var w=a(T.isStart,T.pt,l,_.isStart,_.pt,_.other.pt);return w<0})}function n(T,l){var _=g.node({isStart:!0,pt:T.start,seg:T,primary:l,other:null,status:null});return i(_,T.end),_}function s(T,l,_){var w=g.node({isStart:!1,pt:l.end,seg:l,primary:_,other:T,status:null});T.other=w,i(w,T.pt)}function c(T,l){var _=n(T,l);return s(_,T,l),_}function h(T,l){e&&e.segmentChop(T.seg,l),T.other.remove(),T.seg.end=l,T.other.pt=l,i(T.other,T.pt)}function v(T,l){var _=r(l,T.seg.end,T.seg);return h(T,l),c(_,T.primary)}function p(T,l){var _=g.create();function w(O,I){var N=O.seg.start,U=O.seg.end,W=I.seg.start,Q=I.seg.end;return M.pointsCollinear(N,W,Q)?M.pointsCollinear(U,W,Q)||M.pointAboveOrOnLine(U,W,Q)?1:-1:M.pointAboveOrOnLine(N,W,Q)?1:-1}function S(O){return _.findTransition(function(I){var N=w(O,I.ev);return N>0})}function E(O,I){var N=O.seg,U=I.seg,W=N.start,Q=N.end,ue=U.start,se=U.end;e&&e.checkIntersection(N,U);var he=M.linesIntersect(W,Q,ue,se);if(he===!1){if(!M.pointsCollinear(W,Q,ue)||M.pointsSame(W,se)||M.pointsSame(Q,ue))return!1;var G=M.pointsSame(W,ue),$=M.pointsSame(Q,se);if(G&&$)return I;var J=!G&&M.pointBetween(W,ue,se),Z=!$&&M.pointBetween(Q,ue,se);if(G)return Z?v(I,Q):v(O,se),I;J&&($||(Z?v(I,Q):v(O,se)),v(I,W))}else he.alongA===0&&(he.alongB===-1?v(O,ue):he.alongB===0?v(O,he.pt):he.alongB===1&&v(O,se)),he.alongB===0&&(he.alongA===-1?v(I,W):he.alongA===0?v(I,he.pt):he.alongA===1&&v(I,Q));return!1}for(var m=[];!o.isEmpty();){var b=o.getHead();if(e&&e.vert(b.pt[0]),b.isStart){let O=function(){if(y){var I=E(b,y);if(I)return I}return f?E(b,f):!1};var d=O;e&&e.segmentNew(b.seg,b.primary);var u=S(b),y=u.before?u.before.ev:null,f=u.after?u.after.ev:null;e&&e.tempStatus(b.seg,y?y.seg:!1,f?f.seg:!1);var P=O();if(P){if(A){var L;b.seg.myFill.below===null?L=!0:L=b.seg.myFill.above!==b.seg.myFill.below,L&&(P.seg.myFill.above=!P.seg.myFill.above)}else P.seg.otherFill=b.seg.myFill;e&&e.segmentUpdate(P.seg),b.other.remove(),b.remove()}if(o.getHead()!==b){e&&e.rewind(b.seg);continue}if(A){var L;b.seg.myFill.below===null?L=!0:L=b.seg.myFill.above!==b.seg.myFill.below,f?b.seg.myFill.below=f.seg.myFill.above:b.seg.myFill.below=T,L?b.seg.myFill.above=!b.seg.myFill.below:b.seg.myFill.above=b.seg.myFill.below}else if(b.seg.otherFill===null){var z;f?b.primary===f.primary?z=f.seg.otherFill.above:z=f.seg.myFill.above:z=b.primary?l:T,b.seg.otherFill={above:z,below:z}}e&&e.status(b.seg,y?y.seg:!1,f?f.seg:!1),b.other.status=u.insert(g.node({ev:b}))}else{var F=b.status;if(F===null)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(_.exists(F.prev)&&_.exists(F.next)&&E(F.prev.ev,F.next.ev),e&&e.statusRemove(F.ev.seg),F.remove(),!b.primary){var B=b.seg.myFill;b.seg.myFill=b.seg.otherFill,b.seg.otherFill=B}m.push(b.seg)}o.getHead().remove()}return e&&e.done(),m}return A?{addRegion:function(T){for(var l,_=T[T.length-1],w=0;wr!=v>r&&t<(h-s)*(r-c)/(v-c)+s;p&&(o=!o)}return o}}}),C_=Ye({"src/lib/polygon.js"(X,H){"use strict";var g=h2().dot,x=ks().BADNUM,A=H.exports={};A.tester=function(e){var t=e.slice(),r=t[0][0],o=r,a=t[0][1],i=a,n;for((t[t.length-1][0]!==t[0][0]||t[t.length-1][1]!==t[0][1])&&t.push(t[0]),n=1;no||S===x||Si||_&&c(l))}function v(l,_){var w=l[0],S=l[1];if(w===x||wo||S===x||Si)return!1;var E=t.length,m=t[0][0],b=t[0][1],d=0,u,y,f,P,L;for(u=1;uMath.max(y,m)||S>Math.max(f,b)))if(Sn||Math.abs(g(v,c))>o)return!0;return!1},A.filter=function(e,t){var r=[e[0]],o=0,a=0;function i(s){e.push(s);var c=r.length,h=o;r.splice(a+1);for(var v=h+1;v1){var n=e.pop();i(n)}return{addPt:i,raw:e,filtered:r}}}}),CO=Ye({"src/components/selections/constants.js"(X,H){"use strict";H.exports={BENDPX:1.5,MINSELECT:12,SELECTDELAY:100,SELECTID:"-select"}}}),LO=Ye({"src/components/selections/select.js"(X,H){"use strict";var g=EO(),x=kO(),A=Hn(),M=Bo().dashStyle,e=Fn(),t=Lc(),r=Qp().makeEventData,o=Jd(),a=o.freeMode,i=o.rectMode,n=o.drawMode,s=o.openMode,c=o.selectMode,h=rg(),v=E_(),p=S2(),T=Jm().clearOutline,l=tg(),_=l.handleEllipse,w=l.readPaths,S=A2().newShapes,E=_S(),m=MS().activateLastSelection,b=ta(),d=b.sorterAsc,u=C_(),y=m2(),f=Xc().getFromId,P=M_(),L=k_().redrawReglTraces,z=CO(),F=z.MINSELECT,B=u.filter,O=u.tester,I=T2(),N=I.p2r,U=I.axValue,W=I.getTransform;function Q(Fe){return Fe.subplot!==void 0}function ue(Fe,Ke,Ne,Ee,Ve){var ke=!Q(Ee),Te=a(Ve),Le=i(Ve),rt=s(Ve),dt=n(Ve),xt=c(Ve),It=Ve==="drawline",Bt=Ve==="drawcircle",Gt=It||Bt,Kt=Ee.gd,sr=Kt._fullLayout,sa=xt&&sr.newselection.mode==="immediate"&&ke,Aa=sr._zoomlayer,La=Ee.element.getBoundingClientRect(),ka=Ee.plotinfo,Ga=W(ka),Ma=Ke-La.left,Ua=Ne-La.top;sr._calcInverseTransform(Kt);var ni=b.apply3DTransform(sr._invTransform)(Ma,Ua);Ma=ni[0],Ua=ni[1];var Wt=sr._invScaleX,zt=sr._invScaleY,Vt=Ma,Ut=Ua,xr="M"+Ma+","+Ua,Zr=Ee.xaxes[0],pa=Ee.yaxes[0],Xr=Zr._length,Ea=pa._length,Fa=Fe.altKey&&!(n(Ve)&&rt),qa,ya,$a,mt,gt,Er,kr;Z(Fe,Kt,Ee),Te&&(qa=B([[Ma,Ua]],z.BENDPX));var br=Aa.selectAll("path.select-outline-"+ka.id).data([1]),Tr=dt?sr.newshape:sr.newselection;dt&&(Ee.hasText=Tr.label.text||Tr.label.texttemplate);var Mr=dt&&!rt?Tr.fillcolor:"rgba(0,0,0,0)",Fr=Tr.line.color||(ke?e.contrast(Kt._fullLayout.plot_bgcolor):"#7f7f7f");br.enter().append("path").attr("class","select-outline select-outline-"+ka.id).style({opacity:dt?Tr.opacity/2:1,"stroke-dasharray":M(Tr.line.dash,Tr.line.width),"stroke-width":Tr.line.width+"px","shape-rendering":"crispEdges"}).call(e.stroke,Fr).call(e.fill,Mr).attr("fill-rule","evenodd").classed("cursor-move",!!dt).attr("transform",Ga).attr("d",xr+"Z");var Lr=Aa.append("path").attr("class","zoombox-corners").style({fill:e.background,stroke:e.defaultLine,"stroke-width":1}).attr("transform",Ga).attr("d","M0,0Z");if(dt&&Ee.hasText){var Jr=Aa.select(".label-temp");Jr.empty()&&(Jr=Aa.append("g").classed("label-temp",!0).classed("select-outline",!0).style({opacity:.8}))}var oa=sr._uid+z.SELECTID,ca=[],kt=ie(Kt,Ee.xaxes,Ee.yaxes,Ee.subplot);sa&&!Fe.shiftKey&&(Ee._clearSubplotSelections=function(){if(ke){var mr=Zr._id,$r=pa._id;nt(Kt,mr,$r,kt);for(var ma=(Kt.layout||{}).selections||[],Ba=[],Ca=!1,da=0;da=0){Kt._fullLayout._deactivateShape(Kt);return}if(!dt){var ma=sr.clickmode;y.done(oa).then(function(){if(y.clear(oa),mr===2){for(br.remove(),gt=0;gt-1&&se($r,Kt,Ee.xaxes,Ee.yaxes,Ee.subplot,Ee,br),ma==="event"&&_r(Kt,void 0);t.click(Kt,$r,ka.id)}).catch(b.error)}},Ee.doneFn=function(){Lr.remove(),y.done(oa).then(function(){y.clear(oa),!sa&&mt&&Ee.selectionDefs&&(mt.subtract=Fa,Ee.selectionDefs.push(mt),Ee.mergedPolygons.length=0,[].push.apply(Ee.mergedPolygons,$a)),(sa||dt)&&j(Ee,sa),Ee.doneFnCompleted&&Ee.doneFnCompleted(ca),xt&&_r(Kt,kr)}).catch(b.error)}}function se(Fe,Ke,Ne,Ee,Ve,ke,Te){var Le=Ke._hoverdata,rt=Ke._fullLayout,dt=rt.clickmode,xt=dt.indexOf("event")>-1,It=[],Bt,Gt,Kt,sr,sa,Aa,La,ka,Ga,Ma;if(be(Le)){Z(Fe,Ke,ke),Bt=ie(Ke,Ne,Ee,Ve);var Ua=Ae(Le,Bt),ni=Ua.pointNumbers.length>0;if(ni?Ie(Bt,Ua):Ze(Bt)&&(La=Be(Ua))){for(Te&&Te.remove(),Ma=0;Ma=0}function ne(Fe){return Fe._fullLayout._activeSelectionIndex>=0}function j(Fe,Ke){var Ne=Fe.dragmode,Ee=Fe.plotinfo,Ve=Fe.gd;re(Ve)&&Ve._fullLayout._deactivateShape(Ve),ne(Ve)&&Ve._fullLayout._deactivateSelection(Ve);var ke=Ve._fullLayout,Te=ke._zoomlayer,Le=n(Ne),rt=c(Ne);if(Le||rt){var dt=Te.selectAll(".select-outline-"+Ee.id);if(dt&&Ve._fullLayout._outlining){var xt;Le&&(xt=S(dt,Fe)),xt&&A.call("_guiRelayout",Ve,{shapes:xt});var It;rt&&!Q(Fe)&&(It=E(dt,Fe)),It&&(Ve._fullLayout._noEmitSelectedAtStart=!0,A.call("_guiRelayout",Ve,{selections:It}).then(function(){Ke&&m(Ve)})),Ve._fullLayout._outlining=!1}}Ee.selection={},Ee.selection.selectionDefs=Fe.selectionDefs=[],Ee.selection.mergedPolygons=Fe.mergedPolygons=[]}function ee(Fe){return Fe._id}function ie(Fe,Ke,Ne,Ee){if(!Fe.calcdata)return[];var Ve=[],ke=Ke.map(ee),Te=Ne.map(ee),Le,rt,dt;for(dt=0;dt0,ke=Ve?Ee[0]:Ne;return Ke.selectedpoints?Ke.selectedpoints.indexOf(ke)>-1:!1}function Ie(Fe,Ke){var Ne=[],Ee,Ve,ke,Te;for(Te=0;Te0&&Ne.push(Ee);if(Ne.length===1&&(ke=Ne[0]===Ke.searchInfo,ke&&(Ve=Ke.searchInfo.cd[0].trace,Ve.selectedpoints.length===Ke.pointNumbers.length))){for(Te=0;Te1||(Ke+=Ee.selectedpoints.length,Ke>1)))return!1;return Ke===1}function at(Fe,Ke,Ne){var Ee;for(Ee=0;Ee-1&&Ke;if(!Te&&Ke){var mr=Ct(Fe,!0);if(mr.length){var $r=mr[0].xref,ma=mr[0].yref;if($r&&ma){var Ba=jt(mr),Ca=ar([f(Fe,$r,"x"),f(Fe,ma,"y")]);Ca(ca,Ba)}}Fe._fullLayout._noEmitSelectedAtStart?Fe._fullLayout._noEmitSelectedAtStart=!1:ir&&_r(Fe,ca),Bt._reselect=!1}if(!Te&&Bt._deselect){var da=Bt._deselect;Le=da.xref,rt=da.yref,tt(Le,rt,xt)||nt(Fe,Le,rt,Ee),ir&&(ca.points.length?_r(Fe,ca):yt(Fe)),Bt._deselect=!1}return{eventData:ca,selectionTesters:Ne}}function ze(Fe){var Ke=Fe.calcdata;if(Ke)for(var Ne=0;Ne=0){Mr._fullLayout._deactivateShape(Mr);return}var Fr=Mr._fullLayout.clickmode;if($(Mr),br===2&&!Me&&ya(),lt)Fr.indexOf("select")>-1&&d(Tr,Mr,nt,Qe,be.id,xt),Fr.indexOf("event")>-1&&n.click(Mr,Tr,be.id);else if(br===1&&Me){var Lr=at?ce:ge,Jr=at==="s"||it==="w"?0:1,oa=Lr._name+".range["+Jr+"]",ca=I(Lr,Jr),kt="left",ir="middle";if(Lr.fixedrange)return;at?(ir=at==="n"?"top":"bottom",Lr.side==="right"&&(kt="right")):it==="e"&&(kt="right"),Mr._context.showAxisRangeEntryBoxes&&g.select(dt).call(o.makeEditable,{gd:Mr,immediate:!0,background:Mr._fullLayout.paper_bgcolor,text:String(ca),fill:Lr.tickfont?Lr.tickfont.color:"#444",horizontalAlign:kt,verticalAlign:ir}).on("edit",function(mr){var $r=Lr.d2r(mr);$r!==void 0&&t.call("_guiRelayout",Mr,oa,$r)})}}h.init(xt);var Gt,Kt,sr,sa,Aa,La,ka,Ga,Ma,Ua;function ni(br,Tr,Mr){var Fr=dt.getBoundingClientRect();Gt=Tr-Fr.left,Kt=Mr-Fr.top,fe._fullLayout._calcInverseTransform(fe);var Lr=x.apply3DTransform(fe._fullLayout._invTransform)(Gt,Kt);Gt=Lr[0],Kt=Lr[1],sr={l:Gt,r:Gt,w:0,t:Kt,b:Kt,h:0},sa=fe._hmpixcount?fe._hmlumcount/fe._hmpixcount:M(fe._fullLayout.plot_bgcolor).getLuminance(),Aa="M0,0H"+Ot+"V"+jt+"H0V0",La=!1,ka="xy",Ua=!1,Ga=ue(et,sa,Ct,St,Aa),Ma=se(et,Ct,St)}function Wt(br,Tr){if(fe._transitioningWithDuration)return!1;var Mr=Math.max(0,Math.min(Ot,ke*br+Gt)),Fr=Math.max(0,Math.min(jt,Te*Tr+Kt)),Lr=Math.abs(Mr-Gt),Jr=Math.abs(Fr-Kt);sr.l=Math.min(Gt,Mr),sr.r=Math.max(Gt,Mr),sr.t=Math.min(Kt,Fr),sr.b=Math.max(Kt,Fr);function oa(){ka="",sr.r=sr.l,sr.t=sr.b,Ma.attr("d","M0,0Z")}if(ur.isSubplotConstrained)Lr>P||Jr>P?(ka="xy",Lr/Ot>Jr/jt?(Jr=Lr*jt/Ot,Kt>Fr?sr.t=Kt-Jr:sr.b=Kt+Jr):(Lr=Jr*Ot/jt,Gt>Mr?sr.l=Gt-Lr:sr.r=Gt+Lr),Ma.attr("d",ne(sr))):oa();else if(ar.isSubplotConstrained)if(Lr>P||Jr>P){ka="xy";var ca=Math.min(sr.l/Ot,(jt-sr.b)/jt),kt=Math.max(sr.r/Ot,(jt-sr.t)/jt);sr.l=ca*Ot,sr.r=kt*Ot,sr.b=(1-ca)*jt,sr.t=(1-kt)*jt,Ma.attr("d",ne(sr))}else oa();else!vr||Jr0){var mr;if(ar.isSubplotConstrained||!Cr&&vr.length===1){for(mr=0;mr1&&(oa.maxallowed!==void 0&&yt===(oa.range[0]1&&(ca.maxallowed!==void 0&&Fe===(ca.range[0]=0?Math.min(fe,.9):1/(1/Math.max(fe,-.3)+3.222))}function Q(fe,be,Ae){return fe?fe==="nsew"?Ae?"":be==="pan"?"move":"crosshair":fe.toLowerCase()+"-resize":"pointer"}function ue(fe,be,Ae,Be,Ie){return fe.append("path").attr("class","zoombox").style({fill:be>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("transform",r(Ae,Be)).attr("d",Ie+"Z")}function se(fe,be,Ae){return fe.append("path").attr("class","zoombox-corners").style({fill:a.background,stroke:a.defaultLine,"stroke-width":1,opacity:0}).attr("transform",r(be,Ae)).attr("d","M0,0Z")}function he(fe,be,Ae,Be,Ie,Ze){fe.attr("d",Be+"M"+Ae.l+","+Ae.t+"v"+Ae.h+"h"+Ae.w+"v-"+Ae.h+"h-"+Ae.w+"Z"),G(fe,be,Ie,Ze)}function G(fe,be,Ae,Be){Ae||(fe.transition().style("fill",Be>.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),be.transition().style("opacity",1).duration(200))}function $(fe){g.select(fe).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}function J(fe){L&&fe.data&&fe._context.showTips&&(x.notifier(x._(fe,"Double-click to zoom back out"),"long"),L=!1)}function Z(fe,be){return"M"+(fe.l-.5)+","+(be-P-.5)+"h-3v"+(2*P+1)+"h3ZM"+(fe.r+.5)+","+(be-P-.5)+"h3v"+(2*P+1)+"h-3Z"}function re(fe,be){return"M"+(be-P-.5)+","+(fe.t-.5)+"v-3h"+(2*P+1)+"v3ZM"+(be-P-.5)+","+(fe.b+.5)+"v3h"+(2*P+1)+"v-3Z"}function ne(fe){var be=Math.floor(Math.min(fe.b-fe.t,fe.r-fe.l,P)/2);return"M"+(fe.l-3.5)+","+(fe.t-.5+be)+"h3v"+-be+"h"+be+"v-3h-"+(be+3)+"ZM"+(fe.r+3.5)+","+(fe.t-.5+be)+"h-3v"+-be+"h"+-be+"v-3h"+(be+3)+"ZM"+(fe.r+3.5)+","+(fe.b+.5-be)+"h-3v"+be+"h"+-be+"v3h"+(be+3)+"ZM"+(fe.l-3.5)+","+(fe.b+.5-be)+"h3v"+be+"h"+be+"v3h-"+(be+3)+"Z"}function j(fe,be,Ae,Be,Ie){for(var Ze=!1,at={},it={},et,lt,Me,ge,ce=(Ie||{}).xaHash,ze=(Ie||{}).yaHash,tt=0;tt1&&x.warn("Full array edits are incompatible with other edits",c);var w=i[""][""];if(t(w))a.set(null);else if(Array.isArray(w))a.set(w);else return x.warn("Unrecognized full array edit value",c,w),!0;return T?!1:(h(l,_),v(o),!0)}var S=Object.keys(i).map(Number).sort(A),E=a.get(),m=E||[],b=s(_,c).get(),d=[],u=-1,y=m.length,f,P,L,z,F,B,O,I;for(f=0;fm.length-(O?0:1)){x.warn("index out of range",c,L);continue}if(B!==void 0)F.length>1&&x.warn("Insertion & removal are incompatible with edits to the same index.",c,L),t(B)?d.push(L):O?(B==="add"&&(B={}),m.splice(L,0,B),b&&b.splice(L,0,{})):x.warn("Unrecognized full object edit value",c,L,B),u===-1&&(u=L);else for(P=0;P=0;f--)m.splice(d[f],1),b&&b.splice(d[f],1);if(m.length?E||a.set(m):a.set(null),T)return!1;if(h(l,_),p!==g){var N;if(u===-1)N=S;else{for(y=Math.max(m.length,y),N=[],f=0;f=u));f++)N.push(L);for(f=u;f0&&A.log("Clearing previous rejected promises from queue."),l._promises=[]},X.cleanLayout=function(l){var _,w;l||(l={}),l.xaxis1&&(l.xaxis||(l.xaxis=l.xaxis1),delete l.xaxis1),l.yaxis1&&(l.yaxis||(l.yaxis=l.yaxis1),delete l.yaxis1),l.scene1&&(l.scene||(l.scene=l.scene1),delete l.scene1);var S=(M.subplotsRegistry.cartesian||{}).attrRegex,E=(M.subplotsRegistry.polar||{}).attrRegex,m=(M.subplotsRegistry.ternary||{}).attrRegex,b=(M.subplotsRegistry.gl3d||{}).attrRegex,d=Object.keys(l);for(_=0;_3?(O.x=1.02,O.xanchor="left"):O.x<-2&&(O.x=-.02,O.xanchor="right"),O.y>3?(O.y=1.02,O.yanchor="bottom"):O.y<-2&&(O.y=-.02,O.yanchor="top")),l.dragmode==="rotate"&&(l.dragmode="orbit"),t.clean(l),l.template&&l.template.layout&&X.cleanLayout(l.template.layout),l};function i(l,_){var w=l[_],S=_.charAt(0);w&&w!=="paper"&&(l[_]=r(w,S,!0))}X.cleanData=function(l){for(var _=0;_0)return l.substr(0,_)}X.hasParent=function(l,_){for(var w=p(_);w;){if(w in l)return!0;w=p(w)}return!1};var T=["x","y","z"];X.clearAxisTypes=function(l,_,w){for(var S=0;S<_.length;S++)for(var E=l._fullData[S],m=0;m<3;m++){var b=o(l,E,T[m]);if(b&&b.type!=="log"){var d=b._name,u=b._id.substr(1);if(u.substr(0,5)==="scene"){if(w[u]!==void 0)continue;d=u+"."+d}var y=d+".type";w[d]===void 0&&w[y]===void 0&&A.nestedProperty(l.layout,y).set(null)}}}}}),E2=Ye({"src/plot_api/plot_api.js"(X){"use strict";var H=_n(),g=jo(),x=aS(),A=ta(),M=A.nestedProperty,e=$y(),t=QF(),r=Hn(),o=Qy(),a=Gu(),i=Co(),n=fS(),s=Vh(),c=Bo(),h=Fn(),v=LS().initInteractions,p=vd(),T=ff().clearOutline,l=Gg().dfltConfig,_=DO(),w=zO(),S=k_(),E=Ou(),m=wh().AX_NAME_PATTERN,b=0,d=5;function u(Ee,Ve,ke,Te){var Le;if(Ee=A.getGraphDiv(Ee),e.init(Ee),A.isPlainObject(Ve)){var rt=Ve;Ve=rt.data,ke=rt.layout,Te=rt.config,Le=rt.frames}var dt=e.triggerHandler(Ee,"plotly_beforeplot",[Ve,ke,Te]);if(dt===!1)return Promise.reject();!Ve&&!ke&&!A.isPlotDiv(Ee)&&A.warn("Calling _doPlot as if redrawing but this container doesn't yet have a plot.",Ee);function xt(){if(Le)return X.addFrames(Ee,Le)}z(Ee,Te),ke||(ke={}),H.select(Ee).classed("js-plotly-plot",!0),c.makeTester(),Array.isArray(Ee._promises)||(Ee._promises=[]);var It=(Ee.data||[]).length===0&&Array.isArray(Ve);Array.isArray(Ve)&&(w.cleanData(Ve),It?Ee.data=Ve:Ee.data.push.apply(Ee.data,Ve),Ee.empty=!1),(!Ee.layout||It)&&(Ee.layout=w.cleanLayout(ke)),a.supplyDefaults(Ee);var Bt=Ee._fullLayout,Gt=Bt._has("cartesian");Bt._replotting=!0,(It||Bt._shouldCreateBgLayer)&&(Ne(Ee),Bt._shouldCreateBgLayer&&delete Bt._shouldCreateBgLayer),c.initGradients(Ee),c.initPatterns(Ee),It&&i.saveShowSpikeInitial(Ee);var Kt=!Ee.calcdata||Ee.calcdata.length!==(Ee._fullData||[]).length;Kt&&a.doCalcdata(Ee);for(var sr=0;sr=Ee.data.length||Le<-Ee.data.length)throw new Error(ke+" must be valid indices for gd.data.");if(Ve.indexOf(Le,Te+1)>-1||Le>=0&&Ve.indexOf(-Ee.data.length+Le)>-1||Le<0&&Ve.indexOf(Ee.data.length+Le)>-1)throw new Error("each index in "+ke+" must be unique.")}}function N(Ee,Ve,ke){if(!Array.isArray(Ee.data))throw new Error("gd.data must be an array.");if(typeof Ve>"u")throw new Error("currentIndices is a required argument.");if(Array.isArray(Ve)||(Ve=[Ve]),I(Ee,Ve,"currentIndices"),typeof ke<"u"&&!Array.isArray(ke)&&(ke=[ke]),typeof ke<"u"&&I(Ee,ke,"newIndices"),typeof ke<"u"&&Ve.length!==ke.length)throw new Error("current and new indices must be of equal length.")}function U(Ee,Ve,ke){var Te,Le;if(!Array.isArray(Ee.data))throw new Error("gd.data must be an array.");if(typeof Ve>"u")throw new Error("traces must be defined.");for(Array.isArray(Ve)||(Ve=[Ve]),Te=0;Te"u")throw new Error("indices must be an integer or array of integers");I(Ee,ke,"indices");for(var rt in Ve){if(!Array.isArray(Ve[rt])||Ve[rt].length!==ke.length)throw new Error("attribute "+rt+" must be an array of length equal to indices array length");if(Le&&(!(rt in Te)||!Array.isArray(Te[rt])||Te[rt].length!==Ve[rt].length))throw new Error("when maxPoints is set as a key:value object it must contain a 1:1 corrispondence with the keys and number of traces in the update object")}}function Q(Ee,Ve,ke,Te){var Le=A.isPlainObject(Te),rt=[],dt,xt,It,Bt,Gt;Array.isArray(ke)||(ke=[ke]),ke=O(ke,Ee.data.length-1);for(var Kt in Ve)for(var sr=0;sr=0&&Gt=0&&Gt"u")return Bt=X.redraw(Ee),t.add(Ee,Le,dt,rt,xt),Bt;Array.isArray(ke)||(ke=[ke]);try{N(Ee,Te,ke)}catch(Gt){throw Ee.data.splice(Ee.data.length-Ve.length,Ve.length),Gt}return t.startSequence(Ee),t.add(Ee,Le,dt,rt,xt),Bt=X.moveTraces(Ee,Te,ke),t.stopSequence(Ee),Bt}function J(Ee,Ve){Ee=A.getGraphDiv(Ee);var ke=[],Te=X.addTraces,Le=J,rt=[Ee,ke,Ve],dt=[Ee,Ve],xt,It;if(typeof Ve>"u")throw new Error("indices must be an integer or array of integers.");for(Array.isArray(Ve)||(Ve=[Ve]),I(Ee,Ve,"indices"),Ve=O(Ve,Ee.data.length-1),Ve.sort(A.sorterDes),xt=0;xt"u")for(ke=[],Bt=0;Bt0&&typeof Ut.parts[pa]!="string";)pa--;var Xr=Ut.parts[pa],Ea=Ut.parts[pa-1]+"."+Xr,Fa=Ut.parts.slice(0,pa).join("."),qa=M(Ee.layout,Fa).get(),ya=M(Te,Fa).get(),$a=Ut.get();if(xr!==void 0){Ga[Vt]=xr,Ma[Vt]=Xr==="reverse"?xr:ne($a);var mt=o.getLayoutValObject(Te,Ut.parts);if(mt&&mt.impliedEdits&&xr!==null)for(var gt in mt.impliedEdits)Ua(A.relativeAttr(Vt,gt),mt.impliedEdits[gt]);if(["width","height"].indexOf(Vt)!==-1)if(xr){Ua("autosize",null);var Er=Vt==="height"?"width":"height";Ua(Er,Te[Er])}else Te[Vt]=Ee._initialAutoSize[Vt];else if(Vt==="autosize")Ua("width",xr?null:Te.width),Ua("height",xr?null:Te.height);else if(Ea.match(Ie))zt(Ea),M(Te,Fa+"._inputRange").set(null);else if(Ea.match(Ze)){zt(Ea),M(Te,Fa+"._inputRange").set(null);var kr=M(Te,Fa).get();kr._inputDomain&&(kr._input.domain=kr._inputDomain.slice())}else Ea.match(at)&&M(Te,Fa+"._inputDomain").set(null);if(Xr==="type"){Wt=qa;var br=ya.type==="linear"&&xr==="log",Tr=ya.type==="log"&&xr==="linear";if(br||Tr){if(!Wt||!Wt.range)Ua(Fa+".autorange",!0);else if(ya.autorange)br&&(Wt.range=Wt.range[1]>Wt.range[0]?[1,2]:[2,1]);else{var Mr=Wt.range[0],Fr=Wt.range[1];br?(Mr<=0&&Fr<=0&&Ua(Fa+".autorange",!0),Mr<=0?Mr=Fr/1e6:Fr<=0&&(Fr=Mr/1e6),Ua(Fa+".range[0]",Math.log(Mr)/Math.LN10),Ua(Fa+".range[1]",Math.log(Fr)/Math.LN10)):(Ua(Fa+".range[0]",Math.pow(10,Mr)),Ua(Fa+".range[1]",Math.pow(10,Fr)))}Array.isArray(Te._subplots.polar)&&Te._subplots.polar.length&&Te[Ut.parts[0]]&&Ut.parts[1]==="radialaxis"&&delete Te[Ut.parts[0]]._subplot.viewInitial["radialaxis.range"],r.getComponentMethod("annotations","convertCoords")(Ee,ya,xr,Ua),r.getComponentMethod("images","convertCoords")(Ee,ya,xr,Ua)}else Ua(Fa+".autorange",!0),Ua(Fa+".range",null);M(Te,Fa+"._inputRange").set(null)}else if(Xr.match(m)){var Lr=M(Te,Vt).get(),Jr=(xr||{}).type;(!Jr||Jr==="-")&&(Jr="linear"),r.getComponentMethod("annotations","convertCoords")(Ee,Lr,Jr,Ua),r.getComponentMethod("images","convertCoords")(Ee,Lr,Jr,Ua)}var oa=_.containerArrayMatch(Vt);if(oa){Gt=oa.array,Kt=oa.index;var ca=oa.property,kt=mt||{editType:"calc"};Kt!==""&&ca===""&&(_.isAddVal(xr)?Ma[Vt]=null:_.isRemoveVal(xr)?Ma[Vt]=(M(ke,Gt).get()||[])[Kt]:A.warn("unrecognized full object value",Ve)),E.update(ka,kt),Bt[Gt]||(Bt[Gt]={});var ir=Bt[Gt][Kt];ir||(ir=Bt[Gt][Kt]={}),ir[ca]=xr,delete Ve[Vt]}else Xr==="reverse"?(qa.range?qa.range.reverse():(Ua(Fa+".autorange",!0),qa.range=[1,0]),ya.autorange?ka.calc=!0:ka.plot=!0):(Vt==="dragmode"&&(xr===!1&&$a!==!1||xr!==!1&&$a===!1)||Te._has("scatter-like")&&Te._has("regl")&&Vt==="dragmode"&&(xr==="lasso"||xr==="select")&&!($a==="lasso"||$a==="select")?ka.plot=!0:mt?E.update(ka,mt):ka.calc=!0,Ut.set(xr))}}for(Gt in Bt){var mr=_.applyContainerArrayChanges(Ee,rt(ke,Gt),Bt[Gt],ka,rt);mr||(ka.plot=!0)}for(var $r in ni){Wt=i.getFromId(Ee,$r);var ma=Wt&&Wt._constraintGroup;if(ma){ka.calc=!0;for(var Ba in ma)ni[Ba]||(i.getFromId(Ee,Ba)._constraintShrinkable=!0)}}(et(Ee)||Ve.height||Ve.width)&&(ka.plot=!0);var Ca=Te.shapes;for(Kt=0;Kt1;)if(Te.pop(),ke=M(Ve,Te.join(".")+".uirevision").get(),ke!==void 0)return ke;return Ve.uirevision}function nt(Ee,Ve){for(var ke=0;ke=Le.length?Le[0]:Le[Bt]:Le}function xt(Bt){return Array.isArray(rt)?Bt>=rt.length?rt[0]:rt[Bt]:rt}function It(Bt,Gt){var Kt=0;return function(){if(Bt&&++Kt===Gt)return Bt()}}return new Promise(function(Bt,Gt){function Kt(){if(Te._frameQueue.length!==0){for(;Te._frameQueue.length;){var Xr=Te._frameQueue.pop();Xr.onInterrupt&&Xr.onInterrupt()}Ee.emit("plotly_animationinterrupted",[])}}function sr(Xr){if(Xr.length!==0){for(var Ea=0;EaTe._timeToNext&&Aa()};Xr()}var ka=0;function Ga(Xr){return Array.isArray(Le)?ka>=Le.length?Xr.transitionOpts=Le[ka]:Xr.transitionOpts=Le[0]:Xr.transitionOpts=Le,ka++,Xr}var Ma,Ua,ni=[],Wt=Ve==null,zt=Array.isArray(Ve),Vt=!Wt&&!zt&&A.isPlainObject(Ve);if(Vt)ni.push({type:"object",data:Ga(A.extendFlat({},Ve))});else if(Wt||["string","number"].indexOf(typeof Ve)!==-1)for(Ma=0;Ma0&&ZrZr)&&pa.push(Ua);ni=pa}}ni.length>0?sr(ni):(Ee.emit("plotly_animated"),Bt())})}function _r(Ee,Ve,ke){if(Ee=A.getGraphDiv(Ee),Ve==null)return Promise.resolve();if(!A.isPlotDiv(Ee))throw new Error("This element is not a Plotly plot: "+Ee+". It's likely that you've failed to create a plot before adding frames. For more details, see https://plotly.com/javascript/animations/");var Te,Le,rt,dt,xt=Ee._transitionData._frames,It=Ee._transitionData._frameHash;if(!Array.isArray(Ve))throw new Error("addFrames failure: frameList must be an Array of frame definitions"+Ve);var Bt=xt.length+Ve.length*2,Gt=[],Kt={};for(Te=Ve.length-1;Te>=0;Te--)if(A.isPlainObject(Ve[Te])){var sr=Ve[Te].name,sa=(It[sr]||Kt[sr]||{}).name,Aa=Ve[Te].name,La=It[sa]||Kt[sa];sa&&Aa&&typeof Aa=="number"&&La&&bUt.index?-1:Vt.index=0;Te--){if(Le=Gt[Te].frame,typeof Le.name=="number"&&A.warn("Warning: addFrames accepts frames with numeric names, but the numbers areimplicitly cast to strings"),!Le.name)for(;It[Le.name="frame "+Ee._transitionData._counter++];);if(It[Le.name]){for(rt=0;rt=0;ke--)Te=Ve[ke],rt.push({type:"delete",index:Te}),dt.unshift({type:"insert",index:Te,value:Le[Te]});var xt=a.modifyFrames,It=a.modifyFrames,Bt=[Ee,dt],Gt=[Ee,rt];return t&&t.add(Ee,xt,Bt,It,Gt),a.modifyFrames(Ee,rt)}function Fe(Ee){Ee=A.getGraphDiv(Ee);var Ve=Ee._fullLayout||{},ke=Ee._fullData||[];return a.cleanPlot([],{},ke,Ve),a.purge(Ee),e.purge(Ee),Ve._container&&Ve._container.remove(),delete Ee._context,Ee}function Ke(Ee){var Ve=Ee._fullLayout,ke=Ee.getBoundingClientRect();if(!A.equalDomRects(ke,Ve._lastBBox)){var Te=Ve._invTransform=A.inverseTransformMatrix(A.getFullTransformMatrix(Ee));Ve._invScaleX=Math.sqrt(Te[0][0]*Te[0][0]+Te[0][1]*Te[0][1]+Te[0][2]*Te[0][2]),Ve._invScaleY=Math.sqrt(Te[1][0]*Te[1][0]+Te[1][1]*Te[1][1]+Te[1][2]*Te[1][2]),Ve._lastBBox=ke}}function Ne(Ee){var Ve=H.select(Ee),ke=Ee._fullLayout;if(ke._calcInverseTransform=Ke,ke._calcInverseTransform(Ee),ke._container=Ve.selectAll(".plot-container").data([0]),ke._container.enter().insert("div",":first-child").classed("plot-container",!0).classed("plotly",!0).style({width:"100%",height:"100%"}),ke._paperdiv=ke._container.selectAll(".svg-container").data([0]),ke._paperdiv.enter().append("div").classed("user-select-none",!0).classed("svg-container",!0).style("position","relative"),ke._glcontainer=ke._paperdiv.selectAll(".gl-container").data([{}]),ke._glcontainer.enter().append("div").classed("gl-container",!0),ke._paperdiv.selectAll(".main-svg").remove(),ke._paperdiv.select(".modebar-container").remove(),ke._paper=ke._paperdiv.insert("svg",":first-child").classed("main-svg",!0),ke._toppaper=ke._paperdiv.append("svg").classed("main-svg",!0),ke._modebardiv=ke._paperdiv.append("div"),delete ke._modeBar,ke._hoverpaper=ke._paperdiv.append("svg").classed("main-svg",!0),!ke._uid){var Te={};H.selectAll("defs").each(function(){this.id&&(Te[this.id.split("-")[1]]=1)}),ke._uid=A.randstr(Te)}ke._paperdiv.selectAll(".main-svg").attr(p.svgAttrs),ke._defs=ke._paper.append("defs").attr("id","defs-"+ke._uid),ke._clips=ke._defs.append("g").classed("clips",!0),ke._topdefs=ke._toppaper.append("defs").attr("id","topdefs-"+ke._uid),ke._topclips=ke._topdefs.append("g").classed("clips",!0),ke._bgLayer=ke._paper.append("g").classed("bglayer",!0),ke._draggers=ke._paper.append("g").classed("draglayer",!0);var Le=ke._paper.append("g").classed("layer-below",!0);ke._imageLowerLayer=Le.append("g").classed("imagelayer",!0),ke._shapeLowerLayer=Le.append("g").classed("shapelayer",!0),ke._cartesianlayer=ke._paper.append("g").classed("cartesianlayer",!0),ke._polarlayer=ke._paper.append("g").classed("polarlayer",!0),ke._smithlayer=ke._paper.append("g").classed("smithlayer",!0),ke._ternarylayer=ke._paper.append("g").classed("ternarylayer",!0),ke._geolayer=ke._paper.append("g").classed("geolayer",!0),ke._funnelarealayer=ke._paper.append("g").classed("funnelarealayer",!0),ke._pielayer=ke._paper.append("g").classed("pielayer",!0),ke._iciclelayer=ke._paper.append("g").classed("iciclelayer",!0),ke._treemaplayer=ke._paper.append("g").classed("treemaplayer",!0),ke._sunburstlayer=ke._paper.append("g").classed("sunburstlayer",!0),ke._indicatorlayer=ke._toppaper.append("g").classed("indicatorlayer",!0),ke._glimages=ke._paper.append("g").classed("glimages",!0);var rt=ke._toppaper.append("g").classed("layer-above",!0);ke._imageUpperLayer=rt.append("g").classed("imagelayer",!0),ke._shapeUpperLayer=rt.append("g").classed("shapelayer",!0),ke._selectionLayer=ke._toppaper.append("g").classed("selectionlayer",!0),ke._infolayer=ke._toppaper.append("g").classed("infolayer",!0),ke._menulayer=ke._toppaper.append("g").classed("menulayer",!0),ke._zoomlayer=ke._toppaper.append("g").classed("zoomlayer",!0),ke._hoverlayer=ke._hoverpaper.append("g").classed("hoverlayer",!0),ke._modebardiv.classed("modebar-container",!0).style("position","absolute").style("top","0px").style("right","0px"),Ee.emit("plotly_framework")}X.animate=vr,X.addFrames=_r,X.deleteFrames=yt,X.addTraces=$,X.deleteTraces=J,X.extendTraces=he,X.moveTraces=Z,X.prependTraces=G,X.newPlot=B,X._doPlot=u,X.purge=Fe,X.react=Ot,X.redraw=F,X.relayout=be,X.restyle=re,X.setPlotConfig=f,X.update=lt,X._guiRelayout=Me(be),X._guiRestyle=Me(re),X._guiUpdate=Me(lt),X._storeDirectGUIEdit=ie}}),Xv=Ye({"src/snapshot/helpers.js"(X){"use strict";var H=Hn();X.getDelay=function(A){return A._has&&(A._has("gl3d")||A._has("mapbox")||A._has("map"))?500:0},X.getRedrawFunc=function(A){return function(){H.getComponentMethod("colorbar","draw")(A)}},X.encodeSVG=function(A){return"data:image/svg+xml,"+encodeURIComponent(A)},X.encodeJSON=function(A){return"data:application/json,"+encodeURIComponent(A)};var g=window.URL||window.webkitURL;X.createObjectURL=function(A){return g.createObjectURL(A)},X.revokeObjectURL=function(A){return g.revokeObjectURL(A)},X.createBlob=function(A,M){if(M==="svg")return new window.Blob([A],{type:"image/svg+xml;charset=utf-8"});if(M==="full-json")return new window.Blob([A],{type:"application/json;charset=utf-8"});var e=x(window.atob(A));return new window.Blob([e],{type:"image/"+M})},X.octetStream=function(A){document.location.href="data:application/octet-stream"+A};function x(A){for(var M=A.length,e=new ArrayBuffer(M),t=new Uint8Array(e),r=0;r")!==-1?"":s.html(h).text()});return s.remove(),c}function i(n){return n.replace(/&(?!\w+;|\#[0-9]+;| \#x[0-9A-F]+;)/g,"&")}H.exports=function(s,c,h){var v=s._fullLayout,p=v._paper,T=v._toppaper,l=v.width,_=v.height,w;p.insert("rect",":first-child").call(A.setRect,0,0,l,_).call(M.fill,v.paper_bgcolor);var S=v._basePlotModules||[];for(w=0;w1&&E.push(s("object","layout"))),x.supplyDefaults(m);for(var u=m._fullData,y=b.length,f=0;fP.length&&S.push(s("unused",E,y.concat(P.length)));var I=P.length,N=Array.isArray(O);N&&(I=Math.min(I,O.length));var U,W,Q,ue,se;if(L.dimensions===2)for(W=0;WP[W].length&&S.push(s("unused",E,y.concat(W,P[W].length)));var he=P[W].length;for(U=0;U<(N?Math.min(he,O[W].length):he);U++)Q=N?O[W][U]:O,ue=f[W][U],se=P[W][U],g.validate(ue,Q)?se!==ue&&se!==+ue&&S.push(s("dynamic",E,y.concat(W,U),ue,se)):S.push(s("value",E,y.concat(W,U),ue))}else S.push(s("array",E,y.concat(W),f[W]));else for(W=0;WF?S.push({code:"unused",traceType:f,templateCount:z,dataCount:F}):F>z&&S.push({code:"reused",traceType:f,templateCount:z,dataCount:F})}}function B(O,I){for(var N in O)if(N.charAt(0)!=="_"){var U=O[N],W=s(O,N,I);g(U)?(Array.isArray(O)&&U._template===!1&&U.templateitemname&&S.push({code:"missing",path:W,templateitemname:U.templateitemname}),B(U,W)):Array.isArray(U)&&c(U)&&B(U,W)}}if(B({data:m,layout:E},""),S.length)return S.map(h)};function c(v){for(var p=0;p=0;h--){var v=e[h];if(v.type==="scatter"&&v.xaxis===s.xaxis&&v.yaxis===s.yaxis){v.opacity=void 0;break}}}}}}}),VO=Ye({"src/traces/scatter/layout_defaults.js"(X,H){"use strict";var g=ta(),x=g2();H.exports=function(A,M){function e(r,o){return g.coerce(A,M,x,r,o)}var t=M.barmode==="group";M.scattermode==="group"&&e("scattergap",t?M.bargap:.2)}}}),tv=Ye({"src/plots/cartesian/align_period.js"(X,H){"use strict";var g=jo(),x=ta(),A=x.dateTime2ms,M=x.incrementMonth,e=ks(),t=e.ONEAVGMONTH;H.exports=function(o,a,i,n){if(a.type!=="date")return{vals:n};var s=o[i+"periodalignment"];if(!s)return{vals:n};var c=o[i+"period"],h;if(g(c)){if(c=+c,c<=0)return{vals:n}}else if(typeof c=="string"&&c.charAt(0)==="M"){var v=+c.substring(1);if(v>0&&Math.round(v)===v)h=v;else return{vals:n}}for(var p=a.calendar,T=s==="start",l=s==="end",_=o[i+"period0"],w=A(_,p)||0,S=[],E=[],m=[],b=n.length,d=0;du;)P=M(P,-h,p);for(;P<=u;)P=M(P,h,p);f=M(P,-h,p)}else{for(y=Math.round((u-w)/c),P=w+y*c;P>u;)P-=c;for(;P<=u;)P+=c;f=P-c}S[d]=T?f:l?P:(f+P)/2,E[d]=f,m[d]=P}return{vals:S,starts:E,ends:m}}}}),Fd=Ye({"src/traces/scatter/colorscale_calc.js"(X,H){"use strict";var g=Up().hasColorscale,x=jp(),A=uu();H.exports=function(e,t){A.hasLines(t)&&g(t,"line")&&x(e,t,{vals:t.line.color,containerStr:"line",cLetter:"c"}),A.hasMarkers(t)&&(g(t,"marker")&&x(e,t,{vals:t.marker.color,containerStr:"marker",cLetter:"c"}),g(t,"marker.line")&&x(e,t,{vals:t.marker.line.color,containerStr:"marker.line",cLetter:"c"}))}}}),Av=Ye({"src/traces/scatter/arrays_to_calcdata.js"(X,H){"use strict";var g=ta();H.exports=function(A,M){for(var e=0;eB&&f[I].gap;)I--;for(U=f[I].s,O=f.length-1;O>I;O--)f[O].s=U;for(;BN+O||!g(I))}for(var W=0;Wz[p]&&p0?e:t)/(p._m*_*(p._m>0?e:t)))),It*=1e3}if(Bt===A){if(l&&(Bt=p.c2p(xt.y,!0)),Bt===A)return!1;Bt*=1e3}return[It,Bt]}function ee(dt,xt,It,Bt){var Gt=It-dt,Kt=Bt-xt,sr=.5-dt,sa=.5-xt,Aa=Gt*Gt+Kt*Kt,La=Gt*sr+Kt*sa;if(La>0&&La1||Math.abs(sr.y-It[0][1])>1)&&(sr=[sr.x,sr.y],Bt&&Ae(sr,dt)Ze||dt[1]it)return[a(dt[0],Ie,Ze),a(dt[1],at,it)]}function Ct(dt,xt){if(dt[0]===xt[0]&&(dt[0]===Ie||dt[0]===Ze)||dt[1]===xt[1]&&(dt[1]===at||dt[1]===it))return!0}function St(dt,xt){var It=[],Bt=Qe(dt),Gt=Qe(xt);return Bt&&Gt&&Ct(Bt,Gt)||(Bt&&It.push(Bt),Gt&&It.push(Gt)),It}function Ot(dt,xt,It){return function(Bt,Gt){var Kt=Qe(Bt),sr=Qe(Gt),sa=[];if(Kt&&sr&&Ct(Kt,sr))return sa;Kt&&sa.push(Kt),sr&&sa.push(sr);var Aa=2*r.constrain((Bt[dt]+Gt[dt])/2,xt,It)-((Kt||Bt)[dt]+(sr||Gt)[dt]);if(Aa){var La;Kt&&sr?La=Aa>0==Kt[dt]>sr[dt]?Kt:sr:La=Kt||sr,La[dt]+=Aa}return sa}}var jt;d==="linear"||d==="spline"?jt=nt:d==="hv"||d==="vh"?jt=St:d==="hvh"?jt=Ot(0,Ie,Ze):d==="vhv"&&(jt=Ot(1,at,it));function ur(dt,xt){var It=xt[0]-dt[0],Bt=(xt[1]-dt[1])/It,Gt=(dt[1]*xt[0]-xt[1]*dt[0])/It;return Gt>0?[Bt>0?Ie:Ze,it]:[Bt>0?Ze:Ie,at]}function ar(dt){var xt=dt[0],It=dt[1],Bt=xt===z[F-1][0],Gt=It===z[F-1][1];if(!(Bt&&Gt))if(F>1){var Kt=xt===z[F-2][0],sr=It===z[F-2][1];Bt&&(xt===Ie||xt===Ze)&&Kt?sr?F--:z[F-1]=dt:Gt&&(It===at||It===it)&&sr?Kt?F--:z[F-1]=dt:z[F++]=dt}else z[F++]=dt}function Cr(dt){z[F-1][0]!==dt[0]&&z[F-1][1]!==dt[1]&&ar([ge,ce]),ar(dt),ze=null,ge=ce=0}var vr=r.isArrayOrTypedArray(E);function _r(dt){if(dt&&S&&(dt.i=B,dt.d=s,dt.trace=h,dt.marker=vr?E[dt.i]:E,dt.backoff=S),ie=dt[0]/_,fe=dt[1]/w,lt=dt[0]Ze?Ze:0,Me=dt[1]it?it:0,lt||Me){if(!F)z[F++]=[lt||dt[0],Me||dt[1]];else if(ze){var xt=jt(ze,dt);xt.length>1&&(Cr(xt[0]),z[F++]=xt[1])}else tt=jt(z[F-1],dt)[0],z[F++]=tt;var It=z[F-1];lt&&Me&&(It[0]!==lt||It[1]!==Me)?(ze&&(ge!==lt&&ce!==Me?ar(ge&&ce?ur(ze,dt):[ge||lt,ce||Me]):ge&&ce&&ar([ge,ce])),ar([lt,Me])):ge-lt&&ce-Me&&ar([lt||ge,Me||ce]),ze=dt,ge=lt,ce=Me}else ze&&Cr(jt(ze,dt)[0]),z[F++]=dt}for(B=0;Bbe(W,yt))break;I=W,J=se[0]*ue[0]+se[1]*ue[1],J>G?(G=J,N=W,Q=!1):J<$&&($=J,U=W,Q=!0)}if(Q?(_r(N),I!==U&&_r(U)):(U!==O&&_r(U),I!==N&&_r(N)),_r(I),B>=s.length||!W)break;_r(W),O=W}}ze&&ar([ge||ze[0],ce||ze[1]]),f.push(z.slice(0,F))}var Fe=d.slice(d.length-1);if(S&&Fe!=="h"&&Fe!=="v"){for(var Ke=!1,Ne=-1,Ee=[],Ve=0;Ve=0?i=v:(i=v=h,h++),i0,d=a(v,p,T);if(S=l.selectAll("g.trace").data(d,function(y){return y[0].trace.uid}),S.enter().append("g").attr("class",function(y){return"trace scatter trace"+y[0].trace.uid}).style("stroke-miterlimit",2),S.order(),n(v,S,p),b){w&&(E=w());var u=g.transition().duration(_.duration).ease(_.easing).each("end",function(){E&&E()}).each("interrupt",function(){E&&E()});u.each(function(){l.selectAll("g.trace").each(function(y,f){s(v,f,p,y,d,this,_)})})}else S.each(function(y,f){s(v,f,p,y,d,this,_)});m&&S.exit().remove(),l.selectAll("path:not([d])").remove()};function n(h,v,p){v.each(function(T){var l=M(g.select(this),"g","fills");t.setClipUrl(l,p.layerClipId,h);var _=T[0].trace,w=[];_._ownfill&&w.push("_ownFill"),_._nexttrace&&w.push("_nextFill");var S=l.selectAll("g").data(w,e);S.enter().append("g"),S.exit().each(function(E){_[E]=null}).remove(),S.order().each(function(E){_[E]=M(g.select(this),"path","js-fill")})})}function s(h,v,p,T,l,_,w){var S=h._context.staticPlot,E;c(h,v,p,T,l);var m=!!w&&w.duration>0;function b(ar){return m?ar.transition():ar}var d=p.xaxis,u=p.yaxis,y=T[0].trace,f=y.line,P=g.select(_),L=M(P,"g","errorbars"),z=M(P,"g","lines"),F=M(P,"g","points"),B=M(P,"g","text");if(x.getComponentMethod("errorbars","plot")(h,L,p,w),y.visible!==!0)return;b(P).style("opacity",y.opacity);var O,I,N=y.fill.charAt(y.fill.length-1);N!=="x"&&N!=="y"&&(N="");var U,W;N==="y"?(U=1,W=u.c2p(0,!0)):N==="x"&&(U=0,W=d.c2p(0,!0)),T[0][p.isRangePlot?"nodeRangePlot3":"node3"]=P;var Q="",ue=[],se=y._prevtrace,he=null,G=null;se&&(Q=se._prevRevpath||"",I=se._nextFill,ue=se._ownPolygons,he=se._fillsegments,G=se._fillElement);var $,J,Z="",re="",ne,j,ee,ie,fe,be,Ae=[];y._polygons=[];var Be=[],Ie=[],Ze=A.noop;if(O=y._ownFill,r.hasLines(y)||y.fill!=="none"){I&&I.datum(T),["hv","vh","hvh","vhv"].indexOf(f.shape)!==-1?(ne=t.steps(f.shape),j=t.steps(f.shape.split("").reverse().join(""))):f.shape==="spline"?ne=j=function(ar){var Cr=ar[ar.length-1];return ar.length>1&&ar[0][0]===Cr[0]&&ar[0][1]===Cr[1]?t.smoothclosed(ar.slice(1),f.smoothing):t.smoothopen(ar,f.smoothing)}:ne=j=function(ar){return"M"+ar.join("L")},ee=function(ar){return j(ar.reverse())},Ie=o(T,{xaxis:d,yaxis:u,trace:y,connectGaps:y.connectgaps,baseTolerance:Math.max(f.width||1,3)/4,shape:f.shape,backoff:f.backoff,simplify:f.simplify,fill:y.fill}),Be=new Array(Ie.length);var at=0;for(E=0;E=S[0]&&P.x<=S[1]&&P.y>=E[0]&&P.y<=E[1]}),u=Math.ceil(d.length/b),y=0;l.forEach(function(P,L){var z=P[0].trace;r.hasMarkers(z)&&z.marker.maxdisplayed>0&&L=Math.min(se,he)&&p<=Math.max(se,he)?0:1/0}var G=Math.max(3,ue.mrc||0),$=1-1/G,J=Math.abs(h.c2p(ue.x)-p);return J=Math.min(se,he)&&T<=Math.max(se,he)?0:1/0}var G=Math.max(3,ue.mrc||0),$=1-1/G,J=Math.abs(v.c2p(ue.y)-T);return Jre!=Be>=re&&(fe=ee[j-1][0],be=ee[j][0],Be-Ae&&(ie=fe+(be-fe)*(re-Ae)/(Be-Ae),G=Math.min(G,ie),$=Math.max($,ie)));return G=Math.max(G,0),$=Math.min($,h._length),{x0:G,x1:$,y0:re,y1:re}}if(_.indexOf("fills")!==-1&&c._fillElement){var U=I(c._fillElement)&&!I(c._fillExclusionElement);if(U){var W=N(c._polygons);W===null&&(W={x0:l[0],x1:l[0],y0:l[1],y1:l[1]});var Q=e.defaultLine;return e.opacity(c.fillcolor)?Q=c.fillcolor:e.opacity((c.line||{}).color)&&(Q=c.line.color),g.extendFlat(o,{distance:o.maxHoverDistance,x0:W.x0,x1:W.x1,y0:W.y0,y1:W.y1,color:Q,hovertemplate:!1}),delete o.index,c.text&&!g.isArrayOrTypedArray(c.text)?o.text=String(c.text):o.text=c.name,[o]}}}}}),u1=Ye({"src/traces/scatter/select.js"(X,H){"use strict";var g=uu();H.exports=function(A,M){var e=A.cd,t=A.xaxis,r=A.yaxis,o=[],a=e[0].trace,i,n,s,c,h=!g.hasMarkers(a)&&!g.hasText(a);if(h)return[];if(M===!1)for(i=0;i0&&(n["_"+a+"axes"]||{})[o])return n;if((n[a+"axis"]||a)===o){if(t(n,a))return n;if((n[a]||[]).length||n[a+"0"])return n}}}function e(r){return{v:"x",h:"y"}[r.orientation||"v"]}function t(r,o){var a=e(r),i=g(r,"box-violin"),n=g(r._fullInput||{},"candlestick");return i&&!n&&o===a&&r[a]===void 0&&r[a+"0"]===void 0}}}),P2=Ye({"src/plots/cartesian/category_order_defaults.js"(X,H){"use strict";var g=xp().isTypedArraySpec;function x(A,M){var e=M.dataAttr||A._id.charAt(0),t={},r,o,a;if(M.axData)r=M.axData;else for(r=[],o=0;o0||g(o),i;a&&(i="array");var n=t("categoryorder",i),s;n==="array"&&(s=t("categoryarray")),!a&&n==="array"&&(n=e.categoryorder="trace"),n==="trace"?e._initialCategories=[]:n==="array"?e._initialCategories=s.slice():(s=x(e,r).sort(),n==="category ascending"?e._initialCategories=s:n==="category descending"&&(e._initialCategories=s.reverse()))}}}}),I_=Ye({"src/plots/cartesian/line_grid_defaults.js"(X,H){"use strict";var g=bh().mix,x=Gf(),A=ta();H.exports=function(e,t,r,o){o=o||{};var a=o.dfltColor;function i(y,f){return A.coerce2(e,t,o.attributes,y,f)}var n=i("linecolor",a),s=i("linewidth"),c=r("showline",o.showLine||!!n||!!s);c||(delete t.linecolor,delete t.linewidth);var h=g(a,o.bgColor,o.blend||x.lightFraction).toRgbString(),v=i("gridcolor",h),p=i("gridwidth"),T=i("griddash"),l=r("showgrid",o.showGrid||!!v||!!p||!!T);if(l||(delete t.gridcolor,delete t.gridwidth,delete t.griddash),o.hasMinor){var _=g(t.gridcolor,o.bgColor,67).toRgbString(),w=i("minor.gridcolor",_),S=i("minor.gridwidth",t.gridwidth||1),E=i("minor.griddash",t.griddash||"solid"),m=r("minor.showgrid",!!w||!!S||!!E);m||(delete t.minor.gridcolor,delete t.minor.gridwidth,delete t.minor.griddash)}if(!o.noZeroLine){var b=i("zerolinecolor",a),d=i("zerolinewidth"),u=r("zeroline",o.showGrid||!!b||!!d);u||(delete t.zerolinecolor,delete t.zerolinewidth)}}}}),R_=Ye({"src/plots/cartesian/axis_defaults.js"(X,H){"use strict";var g=jo(),x=Hn(),A=ta(),M=cl(),e=up(),t=Vh(),r=Zg(),o=e1(),a=$m(),i=Qm(),n=P2(),s=I_(),c=fS(),h=wv(),v=wh().WEEKDAY_PATTERN,p=wh().HOUR_PATTERN;H.exports=function(S,E,m,b,d){var u=b.letter,y=b.font||{},f=b.splomStash||{},P=m("visible",!b.visibleDflt),L=E._template||{},z=E.type||L.type||"-",F;if(z==="date"){var B=x.getComponentMethod("calendars","handleDefaults");B(S,E,"calendar",b.calendar),b.noTicklabelmode||(F=m("ticklabelmode"))}!b.noTicklabelindex&&(z==="date"||z==="linear")&&m("ticklabelindex");var O="";(!b.noTicklabelposition||z==="multicategory")&&(O=A.coerce(S,E,{ticklabelposition:{valType:"enumerated",dflt:"outside",values:F==="period"?["outside","inside"]:u==="x"?["outside","inside","outside left","inside left","outside right","inside right"]:["outside","inside","outside top","inside top","outside bottom","inside bottom"]}},"ticklabelposition")),b.noTicklabeloverflow||m("ticklabeloverflow",O.indexOf("inside")!==-1?"hide past domain":z==="category"||z==="multicategory"?"allow":"hide past div"),h(E,d),c(S,E,m,b),n(S,E,m,b),z!=="category"&&!b.noHover&&m("hoverformat");var I=m("color"),N=I!==t.color.dflt?I:y.color,U=f.label||d._dfltTitle[u];if(i(S,E,m,z,b),!P)return E;m("title.text",U),A.coerceFont(m,"title.font",y,{overrideDflt:{size:A.bigFont(y.size),color:N}}),r(S,E,m,z);var W=b.hasMinor;if(W&&(M.newContainer(E,"minor"),r(S,E,m,z,{isMinor:!0})),a(S,E,m,z,b),o(S,E,m,b),W){var Q=b.isMinor;b.isMinor=!0,o(S,E,m,b),b.isMinor=Q}s(S,E,m,{dfltColor:I,bgColor:b.bgColor,showGrid:b.showGrid,hasMinor:W,attributes:t}),W&&!E.minor.ticks&&!E.minor.showgrid&&delete E.minor,(E.showline||E.ticks)&&m("mirror");var ue=z==="multicategory";if(!b.noTickson&&(z==="category"||ue)&&(E.ticks||E.showgrid)){var se;ue&&(se="boundaries");var he=m("tickson",se);he==="boundaries"&&delete E.ticklabelposition}if(ue){var G=m("showdividers");G&&(m("dividercolor"),m("dividerwidth"))}if(z==="date")if(e(S,E,{name:"rangebreaks",inclusionAttr:"enabled",handleItemDefaults:T}),!E.rangebreaks.length)delete E.rangebreaks;else{for(var $=0;$=2){var u="",y,f;if(d.length===2){for(y=0;y<2;y++)if(f=_(d[y]),f){u=v;break}}var P=m("pattern",u);if(P===v)for(y=0;y<2;y++)f=_(d[y]),f&&(S.bounds[y]=d[y]=f-1);if(P)for(y=0;y<2;y++)switch(f=d[y],P){case v:if(!g(f)){S.enabled=!1;return}if(f=+f,f!==Math.floor(f)||f<0||f>=7){S.enabled=!1;return}S.bounds[y]=d[y]=f;break;case p:if(!g(f)){S.enabled=!1;return}if(f=+f,f<0||f>24){S.enabled=!1;return}S.bounds[y]=d[y]=f;break}if(E.autorange===!1){var L=E.range;if(L[0]L[1]){S.enabled=!1;return}}else if(d[0]>L[0]&&d[1]m[1]-1/4096&&(e.domain=h),x.noneOrAll(M.domain,e.domain,h),e.tickmode==="sync"&&(e.tickmode="auto")}return t("layer"),e}}}),WO=Ye({"src/plots/cartesian/layout_defaults.js"(X,H){"use strict";var g=ta(),x=Fn(),A=Qp().isUnifiedHover,M=yS(),e=cl(),t=Jy(),r=Vh(),o=FS(),a=R_(),i=Yg(),n=I2(),s=Xc(),c=s.id2name,h=s.name2id,v=wh().AX_ID_PATTERN,p=Hn(),T=p.traceIs,l=p.getComponentMethod;function _(w,S,E){Array.isArray(w[S])?w[S].push(E):w[S]=[E]}H.exports=function(S,E,m){var b=E.autotypenumbers,d={},u={},y={},f={},P={},L={},z={},F={},B={},O={},I,N;for(I=0;I rect").call(M.setTranslate,0,0).call(M.setScale,1,1),E.plot.call(M.setTranslate,m._offset,b._offset).call(M.setScale,1,1);var d=E.plot.selectAll(".scatterlayer .trace");d.selectAll(".point").call(M.setPointGroupScale,1,1),d.selectAll(".textpoint").call(M.setTextPointsScale,1,1),d.call(M.hideOutsideRangePoints,E)}function c(E,m){var b=E.plotinfo,d=b.xaxis,u=b.yaxis,y=d._length,f=u._length,P=!!E.xr1,L=!!E.yr1,z=[];if(P){var F=A.simpleMap(E.xr0,d.r2l),B=A.simpleMap(E.xr1,d.r2l),O=F[1]-F[0],I=B[1]-B[0];z[0]=(F[0]*(1-m)+m*B[0]-F[0])/(F[1]-F[0])*y,z[2]=y*(1-m+m*I/O),d.range[0]=d.l2r(F[0]*(1-m)+m*B[0]),d.range[1]=d.l2r(F[1]*(1-m)+m*B[1])}else z[0]=0,z[2]=y;if(L){var N=A.simpleMap(E.yr0,u.r2l),U=A.simpleMap(E.yr1,u.r2l),W=N[1]-N[0],Q=U[1]-U[0];z[1]=(N[1]*(1-m)+m*U[1]-N[1])/(N[0]-N[1])*f,z[3]=f*(1-m+m*Q/W),u.range[0]=d.l2r(N[0]*(1-m)+m*U[0]),u.range[1]=u.l2r(N[1]*(1-m)+m*U[1])}else z[1]=0,z[3]=f;e.drawOne(r,d,{skipTitle:!0}),e.drawOne(r,u,{skipTitle:!0}),e.redrawComponents(r,[d._id,u._id]);var ue=P?y/z[2]:1,se=L?f/z[3]:1,he=P?z[0]:0,G=L?z[1]:0,$=P?z[0]/z[2]*y:0,J=L?z[1]/z[3]*f:0,Z=d._offset-$,re=u._offset-J;b.clipRect.call(M.setTranslate,he,G).call(M.setScale,1/ue,1/se),b.plot.call(M.setTranslate,Z,re).call(M.setScale,ue,se),M.setPointGroupScale(b.zoomScalePts,1/ue,1/se),M.setTextPointsScale(b.zoomScaleTxt,1/ue,1/se)}var h;i&&(h=i());function v(){for(var E={},m=0;ma.duration?(v(),_=window.cancelAnimationFrame(S)):_=window.requestAnimationFrame(S)}return T=Date.now(),_=window.requestAnimationFrame(S),Promise.resolve()}}}),Pf=Ye({"src/plots/cartesian/index.js"(X){"use strict";var H=_n(),g=Hn(),x=ta(),A=Gu(),M=Bo(),e=jh().getModuleCalcData,t=Xc(),r=wh(),o=vd(),a=x.ensureSingle;function i(T,l,_){return x.ensureSingle(T,l,_,function(w){w.datum(_)})}var n=r.zindexSeparator;X.name="cartesian",X.attr=["xaxis","yaxis"],X.idRoot=["x","y"],X.idRegex=r.idRegex,X.attrRegex=r.attrRegex,X.attributes=GO(),X.layoutAttributes=Vh(),X.supplyLayoutDefaults=WO(),X.transitionAxes=ZO(),X.finalizeSubplots=function(T,l){var _=l._subplots,w=_.xaxis,S=_.yaxis,E=_.cartesian,m=E,b={},d={},u,y,f;for(u=0;u0){var L=P.id;if(L.indexOf(n)!==-1)continue;L+=n+(u+1),P=x.extendFlat({},P,{id:L,plot:S._cartesianlayer.selectAll(".subplot").select("."+L)})}for(var z=[],F,B=0;B1&&(W+=n+U),N.push(b+W),m=0;m1,f=l.mainplotinfo;if(!l.mainplot||y)if(u)l.xlines=a(w,"path","xlines-above"),l.ylines=a(w,"path","ylines-above"),l.xaxislayer=a(w,"g","xaxislayer-above"),l.yaxislayer=a(w,"g","yaxislayer-above");else{if(!m){var P=a(w,"g","layer-subplot");l.shapelayer=a(P,"g","shapelayer"),l.imagelayer=a(P,"g","imagelayer"),f&&y?(l.minorGridlayer=f.minorGridlayer,l.gridlayer=f.gridlayer,l.zerolinelayer=f.zerolinelayer):(l.minorGridlayer=a(w,"g","minor-gridlayer"),l.gridlayer=a(w,"g","gridlayer"),l.zerolinelayer=a(w,"g","zerolinelayer"));var L=a(w,"g","layer-between");l.shapelayerBetween=a(L,"g","shapelayer"),l.imagelayerBetween=a(L,"g","imagelayer"),a(w,"path","xlines-below"),a(w,"path","ylines-below"),l.overlinesBelow=a(w,"g","overlines-below"),a(w,"g","xaxislayer-below"),a(w,"g","yaxislayer-below"),l.overaxesBelow=a(w,"g","overaxes-below")}l.overplot=a(w,"g","overplot"),l.plot=a(l.overplot,"g",S),m||(l.xlines=a(w,"path","xlines-above"),l.ylines=a(w,"path","ylines-above"),l.overlinesAbove=a(w,"g","overlines-above"),a(w,"g","xaxislayer-above"),a(w,"g","yaxislayer-above"),l.overaxesAbove=a(w,"g","overaxes-above"),l.xlines=w.select(".xlines-"+b),l.ylines=w.select(".ylines-"+d),l.xaxislayer=w.select(".xaxislayer-"+b),l.yaxislayer=w.select(".yaxislayer-"+d))}else{var z=f.plotgroup,F=S+"-x",B=S+"-y";l.minorGridlayer=f.minorGridlayer,l.gridlayer=f.gridlayer,l.zerolinelayer=f.zerolinelayer,a(f.overlinesBelow,"path",F),a(f.overlinesBelow,"path",B),a(f.overaxesBelow,"g",F),a(f.overaxesBelow,"g",B),l.plot=a(f.overplot,"g",S),a(f.overlinesAbove,"path",F),a(f.overlinesAbove,"path",B),a(f.overaxesAbove,"g",F),a(f.overaxesAbove,"g",B),l.xlines=z.select(".overlines-"+b).select("."+F),l.ylines=z.select(".overlines-"+d).select("."+B),l.xaxislayer=z.select(".overaxes-"+b).select("."+F),l.yaxislayer=z.select(".overaxes-"+d).select("."+B)}m||(u||(i(l.minorGridlayer,"g",l.xaxis._id),i(l.minorGridlayer,"g",l.yaxis._id),l.minorGridlayer.selectAll("g").map(function(O){return O[0]}).sort(t.idSort),i(l.gridlayer,"g",l.xaxis._id),i(l.gridlayer,"g",l.yaxis._id),l.gridlayer.selectAll("g").map(function(O){return O[0]}).sort(t.idSort)),l.xlines.style("fill","none").classed("crisp",!0),l.ylines.style("fill","none").classed("crisp",!0))}function v(T,l){if(T){var _={};T.each(function(d){var u=d[0],y=H.select(this);y.remove(),p(u,l),_[u]=!0});for(var w in l._plots)for(var S=l._plots[w],E=S.overlays||[],m=0;m=0,l=i.indexOf("end")>=0,_=c.backoff*v+n.standoff,w=h.backoff*p+n.startstandoff,S,E,m,b;if(s.nodeName==="line"){S={x:+a.attr("x1"),y:+a.attr("y1")},E={x:+a.attr("x2"),y:+a.attr("y2")};var d=S.x-E.x,u=S.y-E.y;if(m=Math.atan2(u,d),b=m+Math.PI,_&&w&&_+w>Math.sqrt(d*d+u*u)){W();return}if(_){if(_*_>d*d+u*u){W();return}var y=_*Math.cos(m),f=_*Math.sin(m);E.x+=y,E.y+=f,a.attr({x2:E.x,y2:E.y})}if(w){if(w*w>d*d+u*u){W();return}var P=w*Math.cos(m),L=w*Math.sin(m);S.x-=P,S.y-=L,a.attr({x1:S.x,y1:S.y})}}else if(s.nodeName==="path"){var z=s.getTotalLength(),F="";if(z<_+w){W();return}var B=s.getPointAtLength(0),O=s.getPointAtLength(.1);m=Math.atan2(B.y-O.y,B.x-O.x),S=s.getPointAtLength(Math.min(w,z)),F="0px,"+w+"px,";var I=s.getPointAtLength(z),N=s.getPointAtLength(z-.1);b=Math.atan2(I.y-N.y,I.x-N.x),E=s.getPointAtLength(Math.max(0,z-_));var U=F?w+_:_;F+=z-U+"px,"+z+"px",a.style("stroke-dasharray",F)}function W(){a.style("stroke-dasharray","0px,100px")}function Q(ue,se,he,G){ue.path&&(ue.noRotate&&(he=0),g.select(s.parentNode).append("path").attr({class:a.attr("class"),d:ue.path,transform:r(se.x,se.y)+t(he*180/Math.PI)+e(G)}).style({fill:x.rgb(n.arrowcolor),"stroke-width":0}))}T&&Q(h,S,m,p),l&&Q(c,E,b,v)}}}),R2=Ye({"src/components/annotations/draw.js"(X,H){"use strict";var g=_n(),x=Hn(),A=Gu(),M=ta(),e=M.strTranslate,t=Co(),r=Fn(),o=Bo(),a=Lc(),i=jl(),n=Kd(),s=bp(),c=cl().arrayEditor,h=YO();H.exports={draw:v,drawOne:p,drawRaw:l};function v(_){var w=_._fullLayout;w._infolayer.selectAll(".annotation").remove();for(var S=0;S2/3?Ma="right":Ma="center"),{center:0,middle:0,left:.5,bottom:-.5,right:-.5,top:.5}[Ma]}for(var tt=!1,nt=["x","y"],Qe=0;Qe1)&&(Ot===St?(Le=jt.r2fraction(w["a"+Ct]),(Le<0||Le>1)&&(tt=!0)):tt=!0),Ke=jt._offset+jt.r2p(w[Ct]),Ve=.5}else{var rt=Te==="domain";Ct==="x"?(Ee=w[Ct],Ke=rt?jt._offset+jt._length*Ee:Ke=u.l+u.w*Ee):(Ee=1-w[Ct],Ke=rt?jt._offset+jt._length*Ee:Ke=u.t+u.h*Ee),Ve=w.showarrow?.5:Ee}if(w.showarrow){Fe.head=Ke;var dt=w["a"+Ct];if(ke=ar*ze(.5,w.xanchor)-Cr*ze(.5,w.yanchor),Ot===St){var xt=t.getRefType(Ot);xt==="domain"?(Ct==="y"&&(dt=1-dt),Fe.tail=jt._offset+jt._length*dt):xt==="paper"?Ct==="y"?(dt=1-dt,Fe.tail=u.t+u.h*dt):Fe.tail=u.l+u.w*dt:Fe.tail=jt._offset+jt.r2p(dt),Ne=ke}else Fe.tail=Ke+dt,Ne=ke+dt;Fe.text=Fe.tail+ke;var It=d[Ct==="x"?"width":"height"];if(St==="paper"&&(Fe.head=M.constrain(Fe.head,1,It-1)),Ot==="pixel"){var Bt=-Math.max(Fe.tail-3,Fe.text),Gt=Math.min(Fe.tail+3,Fe.text)-It;Bt>0?(Fe.tail+=Bt,Fe.text+=Bt):Gt>0&&(Fe.tail-=Gt,Fe.text-=Gt)}Fe.tail+=yt,Fe.head+=yt}else ke=vr*ze(Ve,_r),Ne=ke,Fe.text=Ke+ke;Fe.text+=yt,ke+=yt,Ne+=yt,w["_"+Ct+"padplus"]=vr/2+Ne,w["_"+Ct+"padminus"]=vr/2-Ne,w["_"+Ct+"size"]=vr,w["_"+Ct+"shift"]=ke}if(tt){he.remove();return}var Kt=0,sr=0;if(w.align!=="left"&&(Kt=(lt-it)*(w.align==="center"?.5:1)),w.valign!=="top"&&(sr=(Me-et)*(w.valign==="middle"?.5:1)),Ze)Ie.select("svg").attr({x:J+Kt-1,y:J+sr}).call(o.setClipUrl,re?O:null,_);else{var sa=J+sr-at.top,Aa=J+Kt-at.left;ie.call(i.positionText,Aa,sa).call(o.setClipUrl,re?O:null,_)}ne.select("rect").call(o.setRect,J,J,lt,Me),Z.call(o.setRect,G/2,G/2,ge-G,ce-G),he.call(o.setTranslate,Math.round(I.x.text-ge/2),Math.round(I.y.text-ce/2)),W.attr({transform:"rotate("+N+","+I.x.text+","+I.y.text+")"});var La=function(Ga,Ma){U.selectAll(".annotation-arrow-g").remove();var Ua=I.x.head,ni=I.y.head,Wt=I.x.tail+Ga,zt=I.y.tail+Ma,Vt=I.x.text+Ga,Ut=I.y.text+Ma,xr=M.rotationXYMatrix(N,Vt,Ut),Zr=M.apply2DTransform(xr),pa=M.apply2DTransform2(xr),Xr=+Z.attr("width"),Ea=+Z.attr("height"),Fa=Vt-.5*Xr,qa=Fa+Xr,ya=Ut-.5*Ea,$a=ya+Ea,mt=[[Fa,ya,Fa,$a],[Fa,$a,qa,$a],[qa,$a,qa,ya],[qa,ya,Fa,ya]].map(pa);if(!mt.reduce(function(kt,ir){return kt^!!M.segmentsIntersect(Ua,ni,Ua+1e6,ni+1e6,ir[0],ir[1],ir[2],ir[3])},!1)){mt.forEach(function(kt){var ir=M.segmentsIntersect(Wt,zt,Ua,ni,kt[0],kt[1],kt[2],kt[3]);ir&&(Wt=ir.x,zt=ir.y)});var gt=w.arrowwidth,Er=w.arrowcolor,kr=w.arrowside,br=U.append("g").style({opacity:r.opacity(Er)}).classed("annotation-arrow-g",!0),Tr=br.append("path").attr("d","M"+Wt+","+zt+"L"+Ua+","+ni).style("stroke-width",gt+"px").call(r.stroke,r.rgb(Er));if(h(Tr,kr,w),y.annotationPosition&&Tr.node().parentNode&&!E){var Mr=Ua,Fr=ni;if(w.standoff){var Lr=Math.sqrt(Math.pow(Ua-Wt,2)+Math.pow(ni-zt,2));Mr+=w.standoff*(Wt-Ua)/Lr,Fr+=w.standoff*(zt-ni)/Lr}var Jr=br.append("path").classed("annotation-arrow",!0).classed("anndrag",!0).classed("cursor-move",!0).attr({d:"M3,3H-3V-3H3ZM0,0L"+(Wt-Mr)+","+(zt-Fr),transform:e(Mr,Fr)}).style("stroke-width",gt+6+"px").call(r.stroke,"rgba(0,0,0,0)").call(r.fill,"rgba(0,0,0,0)"),oa,ca;s.init({element:Jr.node(),gd:_,prepFn:function(){var kt=o.getTranslate(he);oa=kt.x,ca=kt.y,m&&m.autorange&&z(m._name+".autorange",!0),b&&b.autorange&&z(b._name+".autorange",!0)},moveFn:function(kt,ir){var mr=Zr(oa,ca),$r=mr[0]+kt,ma=mr[1]+ir;he.call(o.setTranslate,$r,ma),F("x",T(m,kt,"x",u,w)),F("y",T(b,ir,"y",u,w)),w.axref===w.xref&&F("ax",T(m,kt,"ax",u,w)),w.ayref===w.yref&&F("ay",T(b,ir,"ay",u,w)),br.attr("transform",e(kt,ir)),W.attr({transform:"rotate("+N+","+$r+","+ma+")"})},doneFn:function(){x.call("_guiRelayout",_,B());var kt=document.querySelector(".js-notes-box-panel");kt&&kt.redraw(kt.selectedObj)}})}}};if(w.showarrow&&La(0,0),Q){var ka;s.init({element:he.node(),gd:_,prepFn:function(){ka=W.attr("transform")},moveFn:function(Ga,Ma){var Ua="pointer";if(w.showarrow)w.axref===w.xref?F("ax",T(m,Ga,"ax",u,w)):F("ax",w.ax+Ga),w.ayref===w.yref?F("ay",T(b,Ma,"ay",u.w,w)):F("ay",w.ay+Ma),La(Ga,Ma);else{if(E)return;var ni,Wt;if(m)ni=T(m,Ga,"x",u,w);else{var zt=w._xsize/u.w,Vt=w.x+(w._xshift-w.xshift)/u.w-zt/2;ni=s.align(Vt+Ga/u.w,zt,0,1,w.xanchor)}if(b)Wt=T(b,Ma,"y",u,w);else{var Ut=w._ysize/u.h,xr=w.y-(w._yshift+w.yshift)/u.h-Ut/2;Wt=s.align(xr-Ma/u.h,Ut,0,1,w.yanchor)}F("x",ni),F("y",Wt),(!m||!b)&&(Ua=s.getCursor(m?.5:ni,b?.5:Wt,w.xanchor,w.yanchor))}W.attr({transform:e(Ga,Ma)+ka}),n(he,Ua)},clickFn:function(Ga,Ma){w.captureevents&&_.emit("plotly_clickannotation",se(Ma))},doneFn:function(){n(he),x.call("_guiRelayout",_,B());var Ga=document.querySelector(".js-notes-box-panel");Ga&&Ga.redraw(Ga.selectedObj)}})}}y.annotationText?ie.call(i.makeEditable,{delegate:he,gd:_}).call(fe).on("edit",function(Ae){w.text=Ae,this.call(fe),F("text",Ae),m&&m.autorange&&z(m._name+".autorange",!0),b&&b.autorange&&z(b._name+".autorange",!0),x.call("_guiRelayout",_,B())}):ie.call(fe)}}}),KO=Ye({"src/components/annotations/click.js"(X,H){"use strict";var g=ta(),x=Hn(),A=cl().arrayEditor;H.exports={hasClickToShow:M,onClick:e};function M(o,a){var i=t(o,a);return i.on.length>0||i.explicitOff.length>0}function e(o,a){var i=t(o,a),n=i.on,s=i.off.concat(i.explicitOff),c={},h=o._fullLayout.annotations,v,p;if(n.length||s.length){for(v=0;v1){n=!0;break}}n?e.fullLayout._infolayer.select(".annotation-"+e.id+'[data-index="'+a+'"]').remove():(i._pdata=x(e.glplot.cameraParams,[t.xaxis.r2l(i.x)*r[0],t.yaxis.r2l(i.y)*r[1],t.zaxis.r2l(i.z)*r[2]]),g(e.graphDiv,i,a,e.id,i._xa,i._ya))}}}}),iB=Ye({"src/components/annotations3d/index.js"(X,H){"use strict";var g=Hn(),x=ta();H.exports={moduleType:"component",name:"annotations3d",schema:{subplots:{scene:{annotations:D2()}}},layoutAttributes:D2(),handleDefaults:tB(),includeBasePlot:A,convert:rB(),draw:aB()};function A(M,e){var t=g.subplotsRegistry.gl3d;if(t)for(var r=t.attrRegex,o=Object.keys(M),a=0;a0?l+v:v;return{ppad:v,ppadplus:p?w:S,ppadminus:p?S:w}}else return{ppad:v}}function o(a,i,n){var s=a._id.charAt(0)==="x"?"x":"y",c=a.type==="category"||a.type==="multicategory",h,v,p=0,T=0,l=c?a.r2c:a.d2c,_=i[s+"sizemode"]==="scaled";if(_?(h=i[s+"0"],v=i[s+"1"],c&&(p=i[s+"0shift"],T=i[s+"1shift"])):(h=i[s+"anchor"],v=i[s+"anchor"]),h!==void 0)return[l(h)+p,l(v)+T];if(i.path){var w=1/0,S=-1/0,E=i.path.match(A.segmentRE),m,b,d,u,y;for(a.type==="date"&&(l=M.decodeDate(l)),m=0;mS&&(S=y)));if(S>=w)return[w,S]}}}}),lB=Ye({"src/components/shapes/index.js"(X,H){"use strict";var g=M2();H.exports={moduleType:"component",name:"shapes",layoutAttributes:NS(),supplyLayoutDefaults:nB(),supplyDrawNewShapeDefaults:oB(),includeBasePlot:P_()("shapes"),calcAutorange:sB(),draw:g.draw,drawOne:g.drawOne}}}),US=Ye({"src/components/images/attributes.js"(X,H){"use strict";var g=wh(),x=cl().templatedArray,A=L_();H.exports=x("image",{visible:{valType:"boolean",dflt:!0,editType:"arraydraw"},source:{valType:"string",editType:"arraydraw"},layer:{valType:"enumerated",values:["below","above"],dflt:"above",editType:"arraydraw"},sizex:{valType:"number",dflt:0,editType:"arraydraw"},sizey:{valType:"number",dflt:0,editType:"arraydraw"},sizing:{valType:"enumerated",values:["fill","contain","stretch"],dflt:"contain",editType:"arraydraw"},opacity:{valType:"number",min:0,max:1,dflt:1,editType:"arraydraw"},x:{valType:"any",dflt:0,editType:"arraydraw"},y:{valType:"any",dflt:0,editType:"arraydraw"},xanchor:{valType:"enumerated",values:["left","center","right"],dflt:"left",editType:"arraydraw"},yanchor:{valType:"enumerated",values:["top","middle","bottom"],dflt:"top",editType:"arraydraw"},xref:{valType:"enumerated",values:["paper",g.idRegex.x.toString()],dflt:"paper",editType:"arraydraw"},yref:{valType:"enumerated",values:["paper",g.idRegex.y.toString()],dflt:"paper",editType:"arraydraw"},editType:"arraydraw"})}}),uB=Ye({"src/components/images/defaults.js"(X,H){"use strict";var g=ta(),x=Co(),A=up(),M=US(),e="images";H.exports=function(o,a){var i={name:e,handleItemDefaults:t};A(o,a,i)};function t(r,o,a){function i(_,w){return g.coerce(r,o,M,_,w)}var n=i("source"),s=i("visible",!!n);if(!s)return o;i("layer"),i("xanchor"),i("yanchor"),i("sizex"),i("sizey"),i("sizing"),i("opacity");for(var c={_fullLayout:a},h=["x","y"],v=0;v<2;v++){var p=h[v],T=x.coerceRef(r,o,c,p,"paper",void 0);if(T!=="paper"){var l=x.getFromId(c,T);l._imgIndices.push(o._index)}x.coercePosition(o,c,i,T,p,0)}return o}}}),cB=Ye({"src/components/images/draw.js"(X,H){"use strict";var g=_n(),x=Bo(),A=Co(),M=Xc(),e=vd();H.exports=function(r){var o=r._fullLayout,a=[],i={},n=[],s,c;for(c=0;c0);h&&(s("active"),s("direction"),s("type"),s("showactive"),s("x"),s("y"),g.noneOrAll(a,i,["x","y"]),s("xanchor"),s("yanchor"),s("pad.t"),s("pad.r"),s("pad.b"),s("pad.l"),g.coerceFont(s,"font",n.font),s("bgcolor",n.paper_bgcolor),s("bordercolor"),s("borderwidth"))}function o(a,i){function n(c,h){return g.coerce(a,i,t,c,h)}var s=n("visible",a.method==="skip"||Array.isArray(a.args));s&&(n("method"),n("args"),n("args2"),n("label"),n("execute"))}}}),dB=Ye({"src/components/updatemenus/scrollbox.js"(X,H){"use strict";H.exports=e;var g=_n(),x=Fn(),A=Bo(),M=ta();function e(t,r,o){this.gd=t,this.container=r,this.id=o,this.position=null,this.translateX=null,this.translateY=null,this.hbar=null,this.vbar=null,this.bg=this.container.selectAll("rect.scrollbox-bg").data([0]),this.bg.exit().on(".drag",null).on("wheel",null).remove(),this.bg.enter().append("rect").classed("scrollbox-bg",!0).style("pointer-events","all").attr({opacity:0,x:0,y:0,width:0,height:0})}e.barWidth=2,e.barLength=20,e.barRadius=2,e.barPad=1,e.barColor="#808BA4",e.prototype.enable=function(r,o,a){var i=this.gd._fullLayout,n=i.width,s=i.height;this.position=r;var c=this.position.l,h=this.position.w,v=this.position.t,p=this.position.h,T=this.position.direction,l=T==="down",_=T==="left",w=T==="right",S=T==="up",E=h,m=p,b,d,u,y;!l&&!_&&!w&&!S&&(this.position.direction="down",l=!0);var f=l||S;f?(b=c,d=b+E,l?(u=v,y=Math.min(u+m,s),m=y-u):(y=v+m,u=Math.max(y-m,0),m=y-u)):(u=v,y=u+m,_?(d=c+E,b=Math.max(d-E,0),E=d-b):(b=c,d=Math.min(b+E,n),E=d-b)),this._box={l:b,t:u,w:E,h:m};var P=h>E,L=e.barLength+2*e.barPad,z=e.barWidth+2*e.barPad,F=c,B=v+p;B+z>s&&(B=s-z);var O=this.container.selectAll("rect.scrollbar-horizontal").data(P?[0]:[]);O.exit().on(".drag",null).remove(),O.enter().append("rect").classed("scrollbar-horizontal",!0).call(x.fill,e.barColor),P?(this.hbar=O.attr({rx:e.barRadius,ry:e.barRadius,x:F,y:B,width:L,height:z}),this._hbarXMin=F+L/2,this._hbarTranslateMax=E-L):(delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax);var I=p>m,N=e.barWidth+2*e.barPad,U=e.barLength+2*e.barPad,W=c+h,Q=v;W+N>n&&(W=n-N);var ue=this.container.selectAll("rect.scrollbar-vertical").data(I?[0]:[]);ue.exit().on(".drag",null).remove(),ue.enter().append("rect").classed("scrollbar-vertical",!0).call(x.fill,e.barColor),I?(this.vbar=ue.attr({rx:e.barRadius,ry:e.barRadius,x:W,y:Q,width:N,height:U}),this._vbarYMin=Q+U/2,this._vbarTranslateMax=m-U):(delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax);var se=this.id,he=b-.5,G=I?d+N+.5:d+.5,$=u-.5,J=P?y+z+.5:y+.5,Z=i._topdefs.selectAll("#"+se).data(P||I?[0]:[]);if(Z.exit().remove(),Z.enter().append("clipPath").attr("id",se).append("rect"),P||I?(this._clipRect=Z.select("rect").attr({x:Math.floor(he),y:Math.floor($),width:Math.ceil(G)-Math.floor(he),height:Math.ceil(J)-Math.floor($)}),this.container.call(A.setClipUrl,se,this.gd),this.bg.attr({x:c,y:v,width:h,height:p})):(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(A.setClipUrl,null),delete this._clipRect),P||I){var re=g.behavior.drag().on("dragstart",function(){g.event.sourceEvent.preventDefault()}).on("drag",this._onBoxDrag.bind(this));this.container.on("wheel",null).on("wheel",this._onBoxWheel.bind(this)).on(".drag",null).call(re);var ne=g.behavior.drag().on("dragstart",function(){g.event.sourceEvent.preventDefault(),g.event.sourceEvent.stopPropagation()}).on("drag",this._onBarDrag.bind(this));P&&this.hbar.on(".drag",null).call(ne),I&&this.vbar.on(".drag",null).call(ne)}this.setTranslate(o,a)},e.prototype.disable=function(){(this.hbar||this.vbar)&&(this.bg.attr({width:0,height:0}),this.container.on("wheel",null).on(".drag",null).call(A.setClipUrl,null),delete this._clipRect),this.hbar&&(this.hbar.on(".drag",null),this.hbar.remove(),delete this.hbar,delete this._hbarXMin,delete this._hbarTranslateMax),this.vbar&&(this.vbar.on(".drag",null),this.vbar.remove(),delete this.vbar,delete this._vbarYMin,delete this._vbarTranslateMax)},e.prototype._onBoxDrag=function(){var r=this.translateX,o=this.translateY;this.hbar&&(r-=g.event.dx),this.vbar&&(o-=g.event.dy),this.setTranslate(r,o)},e.prototype._onBoxWheel=function(){var r=this.translateX,o=this.translateY;this.hbar&&(r+=g.event.deltaY),this.vbar&&(o+=g.event.deltaY),this.setTranslate(r,o)},e.prototype._onBarDrag=function(){var r=this.translateX,o=this.translateY;if(this.hbar){var a=r+this._hbarXMin,i=a+this._hbarTranslateMax,n=M.constrain(g.event.x,a,i),s=(n-a)/(i-a),c=this.position.w-this._box.w;r=s*c}if(this.vbar){var h=o+this._vbarYMin,v=h+this._vbarTranslateMax,p=M.constrain(g.event.y,h,v),T=(p-h)/(v-h),l=this.position.h-this._box.h;o=T*l}this.setTranslate(r,o)},e.prototype.setTranslate=function(r,o){var a=this.position.w-this._box.w,i=this.position.h-this._box.h;if(r=M.constrain(r||0,0,a),o=M.constrain(o||0,0,i),this.translateX=r,this.translateY=o,this.container.call(A.setTranslate,this._box.l-this.position.l-r,this._box.t-this.position.t-o),this._clipRect&&this._clipRect.attr({x:Math.floor(this.position.l+r-.5),y:Math.floor(this.position.t+o-.5)}),this.hbar){var n=r/a;this.hbar.call(A.setTranslate,r+n*this._hbarTranslateMax,o)}if(this.vbar){var s=o/i;this.vbar.call(A.setTranslate,r,o+s*this._vbarTranslateMax)}}}}),vB=Ye({"src/components/updatemenus/draw.js"(X,H){"use strict";var g=_n(),x=Gu(),A=Fn(),M=Bo(),e=ta(),t=jl(),r=cl().arrayEditor,o=oh().LINE_SPACING,a=z2(),i=dB();H.exports=function(L){var z=L._fullLayout,F=e.filterVisible(z[a.name]);function B(se){x.autoMargin(L,u(se))}var O=z._menulayer.selectAll("g."+a.containerClassName).data(F.length>0?[0]:[]);if(O.enter().append("g").classed(a.containerClassName,!0).style("cursor","pointer"),O.exit().each(function(){g.select(this).selectAll("g."+a.headerGroupClassName).each(B)}).remove(),F.length!==0){var I=O.selectAll("g."+a.headerGroupClassName).data(F,n);I.enter().append("g").classed(a.headerGroupClassName,!0);for(var N=e.ensureSingle(O,"g",a.dropdownButtonGroupClassName,function(se){se.style("pointer-events","all")}),U=0;U0?[0]:[]);W.enter().append("g").classed(a.containerClassName,!0).style("cursor",I?null:"ew-resize");function Q(G){G._commandObserver&&(G._commandObserver.remove(),delete G._commandObserver),x.autoMargin(O,h(G))}if(W.exit().each(function(){g.select(this).selectAll("g."+a.groupClassName).each(Q)}).remove(),U.length!==0){var ue=W.selectAll("g."+a.groupClassName).data(U,p);ue.enter().append("g").classed(a.groupClassName,!0),ue.exit().each(Q).remove();for(var se=0;se0&&(ue=ue.transition().duration(O.transition.duration).ease(O.transition.easing)),ue.attr("transform",t(Q-a.gripWidth*.5,O._dims.currentValueTotalHeight))}}function P(B,O){var I=B._dims;return I.inputAreaStart+a.stepInset+(I.inputAreaLength-2*a.stepInset)*Math.min(1,Math.max(0,O))}function L(B,O){var I=B._dims;return Math.min(1,Math.max(0,(O-a.stepInset-I.inputAreaStart)/(I.inputAreaLength-2*a.stepInset-2*I.inputAreaStart)))}function z(B,O,I){var N=I._dims,U=e.ensureSingle(B,"rect",a.railTouchRectClass,function(W){W.call(d,O,B,I).style("pointer-events","all")});U.attr({width:N.inputAreaLength,height:Math.max(N.inputAreaWidth,a.tickOffset+I.ticklen+N.labelHeight)}).call(A.fill,I.bgcolor).attr("opacity",0),M.setTranslate(U,0,N.currentValueTotalHeight)}function F(B,O){var I=O._dims,N=I.inputAreaLength-a.railInset*2,U=e.ensureSingle(B,"rect",a.railRectClass);U.attr({width:N,height:a.railWidth,rx:a.railRadius,ry:a.railRadius,"shape-rendering":"crispEdges"}).call(A.stroke,O.bordercolor).call(A.fill,O.bgcolor).style("stroke-width",O.borderwidth+"px"),M.setTranslate(U,a.railInset,(I.inputAreaWidth-a.railWidth)*.5+I.currentValueTotalHeight)}}}),_B=Ye({"src/components/sliders/index.js"(X,H){"use strict";var g=D_();H.exports={moduleType:"component",name:g.name,layoutAttributes:VS(),supplyLayoutDefaults:gB(),draw:yB()}}}),F2=Ye({"src/components/rangeslider/attributes.js"(X,H){"use strict";var g=Gf();H.exports={bgcolor:{valType:"color",dflt:g.background,editType:"plot"},bordercolor:{valType:"color",dflt:g.defaultLine,editType:"plot"},borderwidth:{valType:"integer",dflt:0,min:0,editType:"plot"},autorange:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"range[0]":void 0,"range[1]":void 0}},range:{valType:"info_array",items:[{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"calc",impliedEdits:{"^autorange":!1}}],editType:"calc",impliedEdits:{autorange:!1}},thickness:{valType:"number",dflt:.15,min:0,max:1,editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"calc"},editType:"calc"}}}),qS=Ye({"src/components/rangeslider/oppaxis_attributes.js"(X,H){"use strict";H.exports={_isSubplotObj:!0,rangemode:{valType:"enumerated",values:["auto","fixed","match"],dflt:"match",editType:"calc"},range:{valType:"info_array",items:[{valType:"any",editType:"plot"},{valType:"any",editType:"plot"}],editType:"plot"},editType:"calc"}}}),O2=Ye({"src/components/rangeslider/constants.js"(X,H){"use strict";H.exports={name:"rangeslider",containerClassName:"rangeslider-container",bgClassName:"rangeslider-bg",rangePlotClassName:"rangeslider-rangeplot",maskMinClassName:"rangeslider-mask-min",maskMaxClassName:"rangeslider-mask-max",slideBoxClassName:"rangeslider-slidebox",grabberMinClassName:"rangeslider-grabber-min",grabAreaMinClassName:"rangeslider-grabarea-min",handleMinClassName:"rangeslider-handle-min",grabberMaxClassName:"rangeslider-grabber-max",grabAreaMaxClassName:"rangeslider-grabarea-max",handleMaxClassName:"rangeslider-handle-max",maskMinOppAxisClassName:"rangeslider-mask-min-opp-axis",maskMaxOppAxisClassName:"rangeslider-mask-max-opp-axis",maskColor:"rgba(0,0,0,0.4)",maskOppAxisColor:"rgba(0,0,0,0.2)",slideBoxFill:"transparent",slideBoxCursor:"ew-resize",grabAreaFill:"transparent",grabAreaCursor:"col-resize",grabAreaWidth:10,handleWidth:4,handleRadius:1,handleStrokeWidth:1,extraPad:15}}}),xB=Ye({"src/components/rangeslider/helpers.js"(X){"use strict";var H=Xc(),g=jl(),x=O2(),A=oh().LINE_SPACING,M=x.name;function e(t){var r=t&&t[M];return r&&r.visible}X.isVisible=e,X.makeData=function(t){for(var r=H.list({_fullLayout:t},"x",!0),o=t.margin,a=[],i=0;i=it.max)Ze=fe[at+1];else if(Ie=it.pmax)Ze=fe[at+1];else if(Ie0?d.touches[0].clientX:0}function v(d,u,y,f){if(u._context.staticPlot)return;var P=d.select("rect."+c.slideBoxClassName).node(),L=d.select("rect."+c.grabAreaMinClassName).node(),z=d.select("rect."+c.grabAreaMaxClassName).node();function F(){var B=g.event,O=B.target,I=h(B),N=I-d.node().getBoundingClientRect().left,U=f.d2p(y._rl[0]),W=f.d2p(y._rl[1]),Q=n.coverSlip();this.addEventListener("touchmove",ue),this.addEventListener("touchend",se),Q.addEventListener("mousemove",ue),Q.addEventListener("mouseup",se);function ue(he){var G=h(he),$=+G-I,J,Z,re;switch(O){case P:if(re="ew-resize",U+$>y._length||W+$<0)return;J=U+$,Z=W+$;break;case L:if(re="col-resize",U+$>y._length)return;J=U+$,Z=W;break;case z:if(re="col-resize",W+$<0)return;J=U,Z=W+$;break;default:re="ew-resize",J=N,Z=N+$;break}if(Z0);if(_){var w=o(n,s,c);T("x",w[0]),T("y",w[1]),g.noneOrAll(i,n,["x","y"]),T("xanchor"),T("yanchor"),g.coerceFont(T,"font",s.font);var S=T("bgcolor");T("activecolor",x.contrast(S,t.lightAmount,t.darkAmount)),T("bordercolor"),T("borderwidth")}};function r(a,i,n,s){var c=s.calendar;function h(T,l){return g.coerce(a,i,e.buttons,T,l)}var v=h("visible");if(v){var p=h("step");p!=="all"&&(c&&c!=="gregorian"&&(p==="month"||p==="year")?i.stepmode="backward":h("stepmode"),h("count")),h("label")}}function o(a,i,n){for(var s=n.filter(function(p){return i[p].anchor===a._id}),c=0,h=0;h1)){delete c.grid;return}if(!T&&!l&&!_){var y=b("pattern")==="independent";y&&(T=!0)}m._hasSubplotGrid=T;var f=b("roworder"),P=f==="top to bottom",L=T?.2:.1,z=T?.3:.1,F,B;w&&c._splomGridDflt&&(F=c._splomGridDflt.xside,B=c._splomGridDflt.yside),m._domains={x:a("x",b,L,F,u),y:a("y",b,z,B,d,P)}}function a(s,c,h,v,p,T){var l=c(s+"gap",h),_=c("domain."+s);c(s+"side",v);for(var w=new Array(p),S=_[0],E=(_[1]-S)/(p-l),m=E*(1-l),b=0;b0,v=r._context.staticPlot;o.each(function(p){var T=p[0].trace,l=T.error_x||{},_=T.error_y||{},w;T.ids&&(w=function(b){return b.id});var S=M.hasMarkers(T)&&T.marker.maxdisplayed>0;!_.visible&&!l.visible&&(p=[]);var E=g.select(this).selectAll("g.errorbar").data(p,w);if(E.exit().remove(),!!p.length){l.visible||E.selectAll("path.xerror").remove(),_.visible||E.selectAll("path.yerror").remove(),E.style("opacity",1);var m=E.enter().append("g").classed("errorbar",!0);h&&m.style("opacity",0).transition().duration(i.duration).style("opacity",1),A.setClipUrl(E,a.layerClipId,r),E.each(function(b){var d=g.select(this),u=e(b,s,c);if(!(S&&!b.vis)){var y,f=d.select("path.yerror");if(_.visible&&x(u.x)&&x(u.yh)&&x(u.ys)){var P=_.width;y="M"+(u.x-P)+","+u.yh+"h"+2*P+"m-"+P+",0V"+u.ys,u.noYS||(y+="m-"+P+",0h"+2*P),n=!f.size(),n?f=d.append("path").style("vector-effect",v?"none":"non-scaling-stroke").classed("yerror",!0):h&&(f=f.transition().duration(i.duration).ease(i.easing)),f.attr("d",y)}else f.remove();var L=d.select("path.xerror");if(l.visible&&x(u.y)&&x(u.xh)&&x(u.xs)){var z=(l.copy_ystyle?_:l).width;y="M"+u.xh+","+(u.y-z)+"v"+2*z+"m0,-"+z+"H"+u.xs,u.noXS||(y+="m0,-"+z+"v"+2*z),n=!L.size(),n?L=d.append("path").style("vector-effect",v?"none":"non-scaling-stroke").classed("xerror",!0):h&&(L=L.transition().duration(i.duration).ease(i.easing)),L.attr("d",y)}else L.remove()}})}})};function e(t,r,o){var a={x:r.c2p(t.x),y:o.c2p(t.y)};return t.yh!==void 0&&(a.yh=o.c2p(t.yh),a.ys=o.c2p(t.ys),x(a.ys)||(a.noYS=!0,a.ys=o.c2p(t.ys,!0))),t.xh!==void 0&&(a.xh=r.c2p(t.xh),a.xs=r.c2p(t.xs),x(a.xs)||(a.noXS=!0,a.xs=r.c2p(t.xs,!0))),a}}}),IB=Ye({"src/components/errorbars/style.js"(X,H){"use strict";var g=_n(),x=Fn();H.exports=function(M){M.each(function(e){var t=e[0].trace,r=t.error_y||{},o=t.error_x||{},a=g.select(this);a.selectAll("path.yerror").style("stroke-width",r.thickness+"px").call(x.stroke,r.color),o.copy_ystyle&&(o=r),a.selectAll("path.xerror").style("stroke-width",o.thickness+"px").call(x.stroke,o.color)})}}}),RB=Ye({"src/components/errorbars/index.js"(X,H){"use strict";var g=ta(),x=Ou().overrideAll,A=WS(),M={error_x:g.extendFlat({},A),error_y:g.extendFlat({},A)};delete M.error_x.copy_zstyle,delete M.error_y.copy_zstyle,delete M.error_y.copy_ystyle;var e={error_x:g.extendFlat({},A),error_y:g.extendFlat({},A),error_z:g.extendFlat({},A)};delete e.error_x.copy_ystyle,delete e.error_y.copy_ystyle,delete e.error_z.copy_ystyle,delete e.error_z.copy_zstyle,H.exports={moduleType:"component",name:"errorbars",schema:{traces:{scatter:M,bar:M,histogram:M,scatter3d:x(e,"calc","nested"),scattergl:x(M,"calc","nested")}},supplyDefaults:CB(),calc:LB(),makeComputeError:ZS(),plot:PB(),style:IB(),hoverInfo:t};function t(r,o,a){(o.error_y||{}).visible&&(a.yerr=r.yh-r.y,o.error_y.symmetric||(a.yerrneg=r.y-r.ys)),(o.error_x||{}).visible&&(a.xerr=r.xh-r.x,o.error_x.symmetric||(a.xerrneg=r.x-r.xs))}}}),DB=Ye({"src/components/colorbar/constants.js"(X,H){"use strict";H.exports={cn:{colorbar:"colorbar",cbbg:"cbbg",cbfill:"cbfill",cbfills:"cbfills",cbline:"cbline",cblines:"cblines",cbaxis:"cbaxis",cbtitleunshift:"cbtitleunshift",cbtitle:"cbtitle",cboutline:"cboutline",crisp:"crisp",jsPlaceholder:"js-placeholder"}}}}),zB=Ye({"src/components/colorbar/draw.js"(X,H){"use strict";var g=_n(),x=bh(),A=Gu(),M=Hn(),e=Co(),t=bp(),r=ta(),o=r.strTranslate,a=Oo().extendFlat,i=Kd(),n=Bo(),s=Fn(),c=Xg(),h=jl(),v=Up().flipScale,p=R_(),T=I2(),l=Vh(),_=oh(),w=_.LINE_SPACING,S=_.FROM_TL,E=_.FROM_BR,m=DB().cn;function b(L){var z=L._fullLayout,F=z._infolayer.selectAll("g."+m.colorbar).data(d(L),function(B){return B._id});F.enter().append("g").attr("class",function(B){return B._id}).classed(m.colorbar,!0),F.each(function(B){var O=g.select(this);r.ensureSingle(O,"rect",m.cbbg),r.ensureSingle(O,"g",m.cbfills),r.ensureSingle(O,"g",m.cblines),r.ensureSingle(O,"g",m.cbaxis,function(N){N.classed(m.crisp,!0)}),r.ensureSingle(O,"g",m.cbtitleunshift,function(N){N.append("g").classed(m.cbtitle,!0)}),r.ensureSingle(O,"rect",m.cboutline);var I=u(O,B,L);I&&I.then&&(L._promises||[]).push(I),L._context.edits.colorbarPosition&&y(O,B,L)}),F.exit().each(function(B){A.autoMargin(L,B._id)}).remove(),F.order()}function d(L){var z=L._fullLayout,F=L.calcdata,B=[],O,I,N,U;function W(j){return a(j,{_fillcolor:null,_line:{color:null,width:null,dash:null},_levels:{start:null,end:null,size:null},_filllevels:null,_fillgradient:null,_zrange:null})}function Q(){typeof U.calc=="function"?U.calc(L,N,O):(O._fillgradient=I.reversescale?v(I.colorscale):I.colorscale,O._zrange=[I[U.min],I[U.max]])}for(var ue=0;ue1){var Fe=Math.pow(10,Math.floor(Math.log(yt)/Math.LN10));vr*=Fe*r.roundUp(yt/Fe,[2,5,10]),(Math.abs(at.start)/at.size+1e-6)%1<2e-6&&(ar.tick0=0)}ar.dtick=vr}ar.domain=B?[jt+$/ee.h,jt+ze-$/ee.h]:[jt+G/ee.w,jt+ze-G/ee.w],ar.setScale(),L.attr("transform",o(Math.round(ee.l),Math.round(ee.t)));var Ke=L.select("."+m.cbtitleunshift).attr("transform",o(-Math.round(ee.l),-Math.round(ee.t))),Ne=ar.ticklabelposition,Ee=ar.title.font.size,Ve=L.select("."+m.cbaxis),ke,Te=0,Le=0;function rt(Gt,Kt){var sr={propContainer:ar,propName:z._propPrefix+"title",traceIndex:z._traceIndex,_meta:z._meta,placeholder:j._dfltTitle.colorbar,containerGroup:L.select("."+m.cbtitle)},sa=Gt.charAt(0)==="h"?Gt.substr(1):"h"+Gt;L.selectAll("."+sa+",."+sa+"-math-group").remove(),c.draw(F,Gt,a(sr,Kt||{}))}function dt(){if(B&&Cr||!B&&!Cr){var Gt,Kt;Ae==="top"&&(Gt=G+ee.l+tt*J,Kt=$+ee.t+nt*(1-jt-ze)+3+Ee*.75),Ae==="bottom"&&(Gt=G+ee.l+tt*J,Kt=$+ee.t+nt*(1-jt)-3-Ee*.25),Ae==="right"&&(Kt=$+ee.t+nt*Z+3+Ee*.75,Gt=G+ee.l+tt*jt),rt(ar._id+"title",{attributes:{x:Gt,y:Kt,"text-anchor":B?"start":"middle"}})}}function xt(){if(B&&!Cr||!B&&Cr){var Gt=ar.position||0,Kt=ar._offset+ar._length/2,sr,sa;if(Ae==="right")sa=Kt,sr=ee.l+tt*Gt+10+Ee*(ar.showticklabels?1:.5);else if(sr=Kt,Ae==="bottom"&&(sa=ee.t+nt*Gt+10+(Ne.indexOf("inside")===-1?ar.tickfont.size:0)+(ar.ticks!=="intside"&&z.ticklen||0)),Ae==="top"){var Aa=be.text.split("
").length;sa=ee.t+nt*Gt+10-Me-w*Ee*Aa}rt((B?"h":"v")+ar._id+"title",{avoid:{selection:g.select(F).selectAll("g."+ar._id+"tick"),side:Ae,offsetTop:B?0:ee.t,offsetLeft:B?ee.l:0,maxShift:B?j.width:j.height},attributes:{x:sr,y:sa,"text-anchor":"middle"},transform:{rotate:B?-90:0,offset:0}})}}function It(){if(!B&&!Cr||B&&Cr){var Gt=L.select("."+m.cbtitle),Kt=Gt.select("text"),sr=[-W/2,W/2],sa=Gt.select(".h"+ar._id+"title-math-group").node(),Aa=15.6;Kt.node()&&(Aa=parseInt(Kt.node().style.fontSize,10)*w);var La;if(sa?(La=n.bBox(sa),Le=La.width,Te=La.height,Te>Aa&&(sr[1]-=(Te-Aa)/2)):Kt.node()&&!Kt.classed(m.jsPlaceholder)&&(La=n.bBox(Kt.node()),Le=La.width,Te=La.height),B){if(Te){if(Te+=5,Ae==="top")ar.domain[1]-=Te/ee.h,sr[1]*=-1;else{ar.domain[0]+=Te/ee.h;var ka=h.lineCount(Kt);sr[1]+=(1-ka)*Aa}Gt.attr("transform",o(sr[0],sr[1])),ar.setScale()}}else Le&&(Ae==="right"&&(ar.domain[0]+=(Le+Ee/2)/ee.w),Gt.attr("transform",o(sr[0],sr[1])),ar.setScale())}L.selectAll("."+m.cbfills+",."+m.cblines).attr("transform",B?o(0,Math.round(ee.h*(1-ar.domain[1]))):o(Math.round(ee.w*ar.domain[0]),0)),Ve.attr("transform",B?o(0,Math.round(-ee.t)):o(Math.round(-ee.l),0));var Ga=L.select("."+m.cbfills).selectAll("rect."+m.cbfill).attr("style","").data(et);Ga.enter().append("rect").classed(m.cbfill,!0).attr("style",""),Ga.exit().remove();var Ma=Be.map(ar.c2p).map(Math.round).sort(function(Vt,Ut){return Vt-Ut});Ga.each(function(Vt,Ut){var xr=[Ut===0?Be[0]:(et[Ut]+et[Ut-1])/2,Ut===et.length-1?Be[1]:(et[Ut]+et[Ut+1])/2].map(ar.c2p).map(Math.round);B&&(xr[1]=r.constrain(xr[1]+(xr[1]>xr[0])?1:-1,Ma[0],Ma[1]));var Zr=g.select(this).attr(B?"x":"y",Qe).attr(B?"y":"x",g.min(xr)).attr(B?"width":"height",Math.max(Me,2)).attr(B?"height":"width",Math.max(g.max(xr)-g.min(xr),2));if(z._fillgradient)n.gradient(Zr,F,z._id,B?"vertical":"horizontalreversed",z._fillgradient,"fill");else{var pa=Ze(Vt).replace("e-","");Zr.attr("fill",x(pa).toHexString())}});var Ua=L.select("."+m.cblines).selectAll("path."+m.cbline).data(fe.color&&fe.width?lt:[]);Ua.enter().append("path").classed(m.cbline,!0),Ua.exit().remove(),Ua.each(function(Vt){var Ut=Qe,xr=Math.round(ar.c2p(Vt))+fe.width/2%1;g.select(this).attr("d","M"+(B?Ut+","+xr:xr+","+Ut)+(B?"h":"v")+Me).call(n.lineGroupStyle,fe.width,Ie(Vt),fe.dash)}),Ve.selectAll("g."+ar._id+"tick,path").remove();var ni=Qe+Me+(W||0)/2-(z.ticks==="outside"?1:0),Wt=e.calcTicks(ar),zt=e.getTickSigns(ar)[2];return e.drawTicks(F,ar,{vals:ar.ticks==="inside"?e.clipEnds(ar,Wt):Wt,layer:Ve,path:e.makeTickPath(ar,ni,zt),transFn:e.makeTransTickFn(ar)}),e.drawLabels(F,ar,{vals:Wt,layer:Ve,transFn:e.makeTransTickLabelFn(ar),labelFns:e.makeLabelFns(ar,ni)})}function Bt(){var Gt,Kt=Me+W/2;Ne.indexOf("inside")===-1&&(Gt=n.bBox(Ve.node()),Kt+=B?Gt.width:Gt.height),ke=Ke.select("text");var sr=0,sa=B&&Ae==="top",Aa=!B&&Ae==="right",La=0;if(ke.node()&&!ke.classed(m.jsPlaceholder)){var ka,Ga=Ke.select(".h"+ar._id+"title-math-group").node();Ga&&(B&&Cr||!B&&!Cr)?(Gt=n.bBox(Ga),sr=Gt.width,ka=Gt.height):(Gt=n.bBox(Ke.node()),sr=Gt.right-ee.l-(B?Qe:ur),ka=Gt.bottom-ee.t-(B?ur:Qe),!B&&Ae==="top"&&(Kt+=Gt.height,La=Gt.height)),Aa&&(ke.attr("transform",o(sr/2+Ee/2,0)),sr*=2),Kt=Math.max(Kt,B?sr:ka)}var Ma=(B?G:$)*2+Kt+Q+W/2,Ua=0;!B&&be.text&&he==="bottom"&&Z<=0&&(Ua=Ma/2,Ma+=Ua,La+=Ua),j._hColorbarMoveTitle=Ua,j._hColorbarMoveCBTitle=La;var ni=Q+W,Wt=(B?Qe:ur)-ni/2-(B?G:0),zt=(B?ur:Qe)-(B?ce:$+La-Ua);L.select("."+m.cbbg).attr("x",Wt).attr("y",zt).attr(B?"width":"height",Math.max(Ma-Ua,2)).attr(B?"height":"width",Math.max(ce+ni,2)).call(s.fill,ue).call(s.stroke,z.bordercolor).style("stroke-width",Q);var Vt=Aa?Math.max(sr-10,0):0;L.selectAll("."+m.cboutline).attr("x",(B?Qe:ur+G)+Vt).attr("y",(B?ur+$-ce:Qe)+(sa?Te:0)).attr(B?"width":"height",Math.max(Me,2)).attr(B?"height":"width",Math.max(ce-(B?2*$+Te:2*G+Vt),2)).call(s.stroke,z.outlinecolor).style({fill:"none","stroke-width":W});var Ut=B?Ct*Ma:0,xr=B?0:(1-St)*Ma-La;if(Ut=ne?ee.l-Ut:-Ut,xr=re?ee.t-xr:-xr,L.attr("transform",o(Ut,xr)),!B&&(Q||x(ue).getAlpha()&&!x.equals(j.paper_bgcolor,ue))){var Zr=Ve.selectAll("text"),pa=Zr[0].length,Xr=L.select("."+m.cbbg).node(),Ea=n.bBox(Xr),Fa=n.getTranslate(L),qa=2;Zr.each(function(Fr,Lr){var Jr=0,oa=pa-1;if(Lr===Jr||Lr===oa){var ca=n.bBox(this),kt=n.getTranslate(this),ir;if(Lr===oa){var mr=ca.right+kt.x,$r=Ea.right+Fa.x+ur-Q-qa+J;ir=$r-mr,ir>0&&(ir=0)}else if(Lr===Jr){var ma=ca.left+kt.x,Ba=Ea.left+Fa.x+ur+Q+qa;ir=Ba-ma,ir<0&&(ir=0)}ir&&(pa<3?this.setAttribute("transform","translate("+ir+",0) "+this.getAttribute("transform")):this.setAttribute("visibility","hidden"))}})}var ya={},$a=S[se],mt=E[se],gt=S[he],Er=E[he],kr=Ma-Me;B?(I==="pixels"?(ya.y=Z,ya.t=ce*gt,ya.b=ce*Er):(ya.t=ya.b=0,ya.yt=Z+O*gt,ya.yb=Z-O*Er),U==="pixels"?(ya.x=J,ya.l=Ma*$a,ya.r=Ma*mt):(ya.l=kr*$a,ya.r=kr*mt,ya.xl=J-N*$a,ya.xr=J+N*mt)):(I==="pixels"?(ya.x=J,ya.l=ce*$a,ya.r=ce*mt):(ya.l=ya.r=0,ya.xl=J+O*$a,ya.xr=J-O*mt),U==="pixels"?(ya.y=1-Z,ya.t=Ma*gt,ya.b=Ma*Er):(ya.t=kr*gt,ya.b=kr*Er,ya.yt=Z-N*gt,ya.yb=Z+N*Er));var br=z.y<.5?"b":"t",Tr=z.x<.5?"l":"r";F._fullLayout._reservedMargin[z._id]={};var Mr={r:j.width-Wt-Ut,l:Wt+ya.r,b:j.height-zt-xr,t:zt+ya.b};ne&&re?A.autoMargin(F,z._id,ya):ne?F._fullLayout._reservedMargin[z._id][br]=Mr[br]:re||B?F._fullLayout._reservedMargin[z._id][Tr]=Mr[Tr]:F._fullLayout._reservedMargin[z._id][br]=Mr[br]}return r.syncOrAsync([A.previousPromises,dt,It,xt,A.previousPromises,Bt],F)}function y(L,z,F){var B=z.orientation==="v",O=F._fullLayout,I=O._size,N,U,W;t.init({element:L.node(),gd:F,prepFn:function(){N=L.attr("transform"),i(L)},moveFn:function(Q,ue){L.attr("transform",N+o(Q,ue)),U=t.align((B?z._uFrac:z._vFrac)+Q/I.w,B?z._thickFrac:z._lenFrac,0,1,z.xanchor),W=t.align((B?z._vFrac:1-z._uFrac)-ue/I.h,B?z._lenFrac:z._thickFrac,0,1,z.yanchor);var se=t.getCursor(U,W,z.xanchor,z.yanchor);i(L,se)},doneFn:function(){if(i(L),U!==void 0&&W!==void 0){var Q={};Q[z._propPrefix+"x"]=U,Q[z._propPrefix+"y"]=W,z._traceIndex!==void 0?M.call("_guiRestyle",F,Q,z._traceIndex):M.call("_guiRelayout",F,Q)}}})}function f(L,z,F){var B=z._levels,O=[],I=[],N,U,W=B.end+B.size/100,Q=B.size,ue=1.001*F[0]-.001*F[1],se=1.001*F[1]-.001*F[0];for(U=0;U<1e5&&(N=B.start+U*Q,!(Q>0?N>=W:N<=W));U++)N>ue&&N0?N>=W:N<=W));U++)N>F[0]&&N-1}H.exports=function(o,a){var i,n=o.data,s=o.layout,c=M([],n),h=M({},s,e(a.tileClass)),v=o._context||{};if(a.width&&(h.width=a.width),a.height&&(h.height=a.height),a.tileClass==="thumbnail"||a.tileClass==="themes__thumb"){h.annotations=[];var p=Object.keys(h);for(i=0;i=0)return v}else if(typeof v=="string"&&(v=v.trim(),v.slice(-1)==="%"&&g(v.slice(0,-1))&&(v=+v.slice(0,-1),v>=0)))return v+"%"}function h(v,p,T,l,_,w){w=w||{};var S=w.moduleHasSelected!==!1,E=w.moduleHasUnselected!==!1,m=w.moduleHasConstrain!==!1,b=w.moduleHasCliponaxis!==!1,d=w.moduleHasTextangle!==!1,u=w.moduleHasInsideanchor!==!1,y=!!w.hasPathbar,f=Array.isArray(_)||_==="auto",P=f||_==="inside",L=f||_==="outside";if(P||L){var z=i(l,"textfont",T.font),F=x.extendFlat({},z),B=v.textfont&&v.textfont.color,O=!B;if(O&&delete F.color,i(l,"insidetextfont",F),y){var I=x.extendFlat({},z);O&&delete I.color,i(l,"pathbar.textfont",I)}L&&i(l,"outsidetextfont",z),S&&l("selected.textfont.color"),E&&l("unselected.textfont.color"),m&&l("constraintext"),b&&l("cliponaxis"),d&&l("textangle"),l("texttemplate")}P&&u&&l("insidetextanchor")}H.exports={supplyDefaults:n,crossTraceDefaults:s,handleText:h,validateCornerradius:c}}}),YS=Ye({"src/traces/bar/layout_defaults.js"(X,H){"use strict";var g=Hn(),x=Co(),A=ta(),M=N2(),e=gd().validateCornerradius;H.exports=function(t,r,o){function a(S,E){return A.coerce(t,r,M,S,E)}for(var i=!1,n=!1,s=!1,c={},h=a("barmode"),v=h==="group",p=0;p0&&!c[l]&&(s=!0),c[l]=!0),T.visible&&T.type==="histogram"){var _=x.getFromId({_fullLayout:r},T[T.orientation==="v"?"xaxis":"yaxis"]);_.type!=="category"&&(n=!0)}}if(!i){delete r.barmode;return}h!=="overlay"&&a("barnorm"),a("bargap",n&&!s?0:.2),a("bargroupgap");var w=a("barcornerradius");r.barcornerradius=e(w)}}}),z_=Ye({"src/traces/bar/arrays_to_calcdata.js"(X,H){"use strict";var g=ta();H.exports=function(A,M){for(var e=0;er;if(!o)return M}return e!==void 0?e:A.dflt},X.coerceColor=function(A,M,e){return g(M).isValid()?M:e!==void 0?e:A.dflt},X.coerceEnumerated=function(A,M,e){return A.coerceNumber&&(M=+M),A.values.indexOf(M)!==-1?M:e!==void 0?e:A.dflt},X.getValue=function(A,M){var e;return x(A)?M1||y.bargap===0&&y.bargroupgap===0&&!f[0].trace.marker.line.width)&&g.select(this).attr("shape-rendering","crispEdges")}),d.selectAll("g.points").each(function(f){var P=g.select(this),L=f[0].trace;c(P,L,b)}),e.getComponentMethod("errorbars","style")(d)}function c(b,d,u){A.pointStyle(b.selectAll("path"),d,u),h(b,d,u)}function h(b,d,u){b.selectAll("text").each(function(y){var f=g.select(this),P=M.ensureUniformFontSize(u,l(f,y,d,u));A.font(f,P)})}function v(b,d,u){var y=d[0].trace;y.selectedpoints?p(u,y,b):(c(u,y,b),e.getComponentMethod("errorbars","style")(u))}function p(b,d,u){A.selectedPointStyle(b.selectAll("path"),d),T(b.selectAll("text"),d,u)}function T(b,d,u){b.each(function(y){var f=g.select(this),P;if(y.selected){P=M.ensureUniformFontSize(u,l(f,y,d,u));var L=d.selected.textfont&&d.selected.textfont.color;L&&(P.color=L),A.font(f,P)}else A.selectedTextStyle(f,d)})}function l(b,d,u,y){var f=y._fullLayout.font,P=u.textfont;if(b.classed("bartext-inside")){var L=m(d,u);P=w(u,d.i,f,L)}else b.classed("bartext-outside")&&(P=S(u,d.i,f));return P}function _(b,d,u){return E(o,b.textfont,d,u)}function w(b,d,u,y){var f=_(b,d,u),P=b._input.textfont===void 0||b._input.textfont.color===void 0||Array.isArray(b.textfont.color)&&b.textfont.color[d]===void 0;return P&&(f={color:x.contrast(y),family:f.family,size:f.size,weight:f.weight,style:f.style,variant:f.variant,textcase:f.textcase,lineposition:f.lineposition,shadow:f.shadow}),E(a,b.insidetextfont,d,f)}function S(b,d,u){var y=_(b,d,u);return E(i,b.outsidetextfont,d,y)}function E(b,d,u,y){d=d||{};var f=n.getValue(d.family,u),P=n.getValue(d.size,u),L=n.getValue(d.color,u),z=n.getValue(d.weight,u),F=n.getValue(d.style,u),B=n.getValue(d.variant,u),O=n.getValue(d.textcase,u),I=n.getValue(d.lineposition,u),N=n.getValue(d.shadow,u);return{family:n.coerceString(b.family,f,y.family),size:n.coerceNumber(b.size,P,y.size),color:n.coerceColor(b.color,L,y.color),weight:n.coerceString(b.weight,z,y.weight),style:n.coerceString(b.style,F,y.style),variant:n.coerceString(b.variant,B,y.variant),textcase:n.coerceString(b.variant,O,y.textcase),lineposition:n.coerceString(b.variant,I,y.lineposition),shadow:n.coerceString(b.variant,N,y.shadow)}}function m(b,d){return d.type==="waterfall"?d[b.dir].marker.color:b.mcc||b.mc||d.marker.color}H.exports={style:s,styleTextPoints:h,styleOnSelect:v,getInsideTextFont:w,getOutsideTextFont:S,getBarColor:m,resizeText:t}}}),e0=Ye({"src/traces/bar/plot.js"(X,H){"use strict";var g=_n(),x=jo(),A=ta(),M=jl(),e=Fn(),t=Bo(),r=Hn(),o=Co().tickText,a=wp(),i=a.recordMinTextSize,n=a.clearMinTextSize,s=Nd(),c=j2(),h=Qg(),v=Sv(),p=v.text,T=v.textposition,l=Qp().appendArrayPointValue,_=h.TEXTPAD;function w(Q){return Q.id}function S(Q){if(Q.ids)return w}function E(Q){return(Q>0)-(Q<0)}function m(Q,ue){return Q0}function y(Q,ue,se,he,G,$){var J=ue.xaxis,Z=ue.yaxis,re=Q._fullLayout,ne=Q._context.staticPlot;G||(G={mode:re.barmode,norm:re.barmode,gap:re.bargap,groupgap:re.bargroupgap},n("bar",re));var j=A.makeTraceGroups(he,se,"trace bars").each(function(ee){var ie=g.select(this),fe=ee[0].trace,be=ee[0].t,Ae=fe.type==="waterfall",Be=fe.type==="funnel",Ie=fe.type==="histogram",Ze=fe.type==="bar",at=Ze||Be,it=0;Ae&&fe.connector.visible&&fe.connector.mode==="between"&&(it=fe.connector.line.width/2);var et=fe.orientation==="h",lt=u(G),Me=A.ensureSingle(ie,"g","points"),ge=S(fe),ce=Me.selectAll("g.point").data(A.identity,ge);ce.enter().append("g").classed("point",!0),ce.exit().remove(),ce.each(function(tt,nt){var Qe=g.select(this),Ct=b(tt,J,Z,et),St=Ct[0][0],Ot=Ct[0][1],jt=Ct[1][0],ur=Ct[1][1],ar=(et?Ot-St:ur-jt)===0;ar&&at&&c.getLineWidth(fe,tt)&&(ar=!1),ar||(ar=!x(St)||!x(Ot)||!x(jt)||!x(ur)),tt.isBlank=ar,ar&&(et?Ot=St:ur=jt),it&&!ar&&(et?(St-=m(St,Ot)*it,Ot+=m(St,Ot)*it):(jt-=m(jt,ur)*it,ur+=m(jt,ur)*it));var Cr,vr;if(fe.type==="waterfall"){if(!ar){var _r=fe[tt.dir].marker;Cr=_r.line.width,vr=_r.color}}else Cr=c.getLineWidth(fe,tt),vr=tt.mc||fe.marker.color;function yt(ni){var Wt=g.round(Cr/2%1,2);return G.gap===0&&G.groupgap===0?g.round(Math.round(ni)-Wt,2):ni}function Fe(ni,Wt,zt){return zt&&ni===Wt?ni:Math.abs(ni-Wt)>=2?yt(ni):ni>Wt?Math.ceil(ni):Math.floor(ni)}var Ke=e.opacity(vr),Ne=Ke<1||Cr>.01?yt:Fe;Q._context.staticPlot||(St=Ne(St,Ot,et),Ot=Ne(Ot,St,et),jt=Ne(jt,ur,!et),ur=Ne(ur,jt,!et));var Ee=et?J.c2p:Z.c2p,Ve;tt.s0>0?Ve=tt._sMax:tt.s0<0?Ve=tt._sMin:Ve=tt.s1>0?tt._sMax:tt._sMin;function ke(ni,Wt){if(!ni)return 0;var zt=Math.abs(et?ur-jt:Ot-St),Vt=Math.abs(et?Ot-St:ur-jt),Ut=Ne(Math.abs(Ee(Ve,!0)-Ee(0,!0))),xr=tt.hasB?Math.min(zt/2,Vt/2):Math.min(zt/2,Ut),Zr;if(Wt==="%"){var pa=Math.min(50,ni);Zr=zt*(pa/100)}else Zr=ni;return Ne(Math.max(Math.min(Zr,xr),0))}var Te=Ze||Ie?ke(be.cornerradiusvalue,be.cornerradiusform):0,Le,rt,dt="M"+St+","+jt+"V"+ur+"H"+Ot+"V"+jt+"Z",xt=0;if(Te&&tt.s){var It=E(tt.s0)===0||E(tt.s)===E(tt.s0)?tt.s1:tt.s0;if(xt=Ne(tt.hasB?0:Math.abs(Ee(Ve,!0)-Ee(It,!0))),xt0?Math.sqrt(xt*(2*Te-xt)):0,Aa=Bt>0?Math.max:Math.min;Le="M"+St+","+jt+"V"+(ur-sr*Gt)+"H"+Aa(Ot-(Te-xt)*Bt,St)+"A "+Te+","+Te+" 0 0 "+Kt+" "+Ot+","+(ur-Te*Gt-sa)+"V"+(jt+Te*Gt+sa)+"A "+Te+","+Te+" 0 0 "+Kt+" "+Aa(Ot-(Te-xt)*Bt,St)+","+(jt+sr*Gt)+"Z"}else if(tt.hasB)Le="M"+(St+Te*Bt)+","+jt+"A "+Te+","+Te+" 0 0 "+Kt+" "+St+","+(jt+Te*Gt)+"V"+(ur-Te*Gt)+"A "+Te+","+Te+" 0 0 "+Kt+" "+(St+Te*Bt)+","+ur+"H"+(Ot-Te*Bt)+"A "+Te+","+Te+" 0 0 "+Kt+" "+Ot+","+(ur-Te*Gt)+"V"+(jt+Te*Gt)+"A "+Te+","+Te+" 0 0 "+Kt+" "+(Ot-Te*Bt)+","+jt+"Z";else{rt=Math.abs(ur-jt)+xt;var La=rt0?Math.sqrt(xt*(2*Te-xt)):0,Ga=Gt>0?Math.max:Math.min;Le="M"+(St+La*Bt)+","+jt+"V"+Ga(ur-(Te-xt)*Gt,jt)+"A "+Te+","+Te+" 0 0 "+Kt+" "+(St+Te*Bt-ka)+","+ur+"H"+(Ot-Te*Bt+ka)+"A "+Te+","+Te+" 0 0 "+Kt+" "+(Ot-La*Bt)+","+Ga(ur-(Te-xt)*Gt,jt)+"V"+jt+"Z"}}else Le=dt}else Le=dt;var Ma=d(A.ensureSingle(Qe,"path"),re,G,$);if(Ma.style("vector-effect",ne?"none":"non-scaling-stroke").attr("d",isNaN((Ot-St)*(ur-jt))||ar&&Q._context.staticPlot?"M0,0Z":Le).call(t.setClipUrl,ue.layerClipId,Q),!re.uniformtext.mode&<){var Ua=t.makePointStyleFns(fe);t.singlePointStyle(tt,Ma,fe,Ua,Q)}f(Q,ue,Qe,ee,nt,St,Ot,jt,ur,Te,xt,G,$),ue.layerClipId&&t.hideOutsideRangePoint(tt,Qe.select("text"),J,Z,fe.xcalendar,fe.ycalendar)});var ze=fe.cliponaxis===!1;t.setClipUrl(ie,ze?null:ue.layerClipId,Q)});r.getComponentMethod("errorbars","plot")(Q,j,ue,G)}function f(Q,ue,se,he,G,$,J,Z,re,ne,j,ee,ie){var fe=ue.xaxis,be=ue.yaxis,Ae=Q._fullLayout,Be;function Ie(rt,dt,xt){var It=A.ensureSingle(rt,"text").text(dt).attr({class:"bartext bartext-"+Be,"text-anchor":"middle","data-notex":1}).call(t.font,xt).call(M.convertToTspans,Q);return It}var Ze=he[0].trace,at=Ze.orientation==="h",it=I(Ae,he,G,fe,be);Be=N(Ze,G);var et=ee.mode==="stack"||ee.mode==="relative",lt=he[G],Me=!et||lt._outmost,ge=lt.hasB,ce=ne&&ne-j>_;if(!it||Be==="none"||(lt.isBlank||$===J||Z===re)&&(Be==="auto"||Be==="inside")){se.select("text").remove();return}var ze=Ae.font,tt=s.getBarColor(he[G],Ze),nt=s.getInsideTextFont(Ze,G,ze,tt),Qe=s.getOutsideTextFont(Ze,G,ze),Ct=Ze.insidetextanchor||"end",St=se.datum();at?fe.type==="log"&&St.s0<=0&&(fe.range[0]0&&yt>0,Ne;ce?ge?Ne=P(ur-2*ne,ar,_r,yt,at)||P(ur,ar-2*ne,_r,yt,at):at?Ne=P(ur-(ne-j),ar,_r,yt,at)||P(ur,ar-2*(ne-j),_r,yt,at):Ne=P(ur,ar-(ne-j),_r,yt,at)||P(ur-2*(ne-j),ar,_r,yt,at):Ne=P(ur,ar,_r,yt,at),Ke&&Ne?Be="inside":(Be="outside",Cr.remove(),Cr=null)}else Be="inside";if(!Cr){Fe=A.ensureUniformFontSize(Q,Be==="outside"?Qe:nt),Cr=Ie(se,it,Fe);var Ee=Cr.attr("transform");if(Cr.attr("transform",""),vr=t.bBox(Cr.node()),_r=vr.width,yt=vr.height,Cr.attr("transform",Ee),_r<=0||yt<=0){Cr.remove();return}}var Ve=Ze.textangle,ke,Te;Be==="outside"?(Te=Ze.constraintext==="both"||Ze.constraintext==="outside",ke=O($,J,Z,re,vr,{isHorizontal:at,constrained:Te,angle:Ve})):(Te=Ze.constraintext==="both"||Ze.constraintext==="inside",ke=F($,J,Z,re,vr,{isHorizontal:at,constrained:Te,angle:Ve,anchor:Ct,hasB:ge,r:ne,overhead:j})),ke.fontSize=Fe.size,i(Ze.type==="histogram"?"bar":Ze.type,ke,Ae),lt.transform=ke;var Le=d(Cr,Ae,ee,ie);A.setTransormAndDisplay(Le,ke)}function P(Q,ue,se,he,G){if(Q<0||ue<0)return!1;var $=se<=Q&&he<=ue,J=se<=ue&&he<=Q,Z=G?Q>=se*(ue/he):ue>=he*(Q/se);return $||J||Z}function L(Q){return Q==="auto"?0:Q}function z(Q,ue){var se=Math.PI/180*ue,he=Math.abs(Math.sin(se)),G=Math.abs(Math.cos(se));return{x:Q.width*G+Q.height*he,y:Q.width*he+Q.height*G}}function F(Q,ue,se,he,G,$){var J=!!$.isHorizontal,Z=!!$.constrained,re=$.angle||0,ne=$.anchor,j=ne==="end",ee=ne==="start",ie=$.leftToRight||0,fe=(ie+1)/2,be=1-fe,Ae=$.hasB,Be=$.r,Ie=$.overhead,Ze=G.width,at=G.height,it=Math.abs(ue-Q),et=Math.abs(he-se),lt=it>2*_&&et>2*_?_:0;it-=2*lt,et-=2*lt;var Me=L(re);re==="auto"&&!(Ze<=it&&at<=et)&&(Ze>it||at>et)&&(!(Ze>et||at>it)||Ze_){var tt=B(Q,ue,se,he,ge,Be,Ie,J,Ae);ce=tt.scale,ze=tt.pad}else ce=1,Z&&(ce=Math.min(1,it/ge.x,et/ge.y)),ze=0;var nt=G.left*be+G.right*fe,Qe=(G.top+G.bottom)/2,Ct=(Q+_)*be+(ue-_)*fe,St=(se+he)/2,Ot=0,jt=0;if(ee||j){var ur=(J?ge.x:ge.y)/2;Be&&(j||Ae)&&(lt+=ze);var ar=J?m(Q,ue):m(se,he);J?ee?(Ct=Q+ar*lt,Ot=-ar*ur):(Ct=ue-ar*lt,Ot=ar*ur):ee?(St=se+ar*lt,jt=-ar*ur):(St=he-ar*lt,jt=ar*ur)}return{textX:nt,textY:Qe,targetX:Ct,targetY:St,anchorX:Ot,anchorY:jt,scale:ce,rotate:Me}}function B(Q,ue,se,he,G,$,J,Z,re){var ne=Math.max(0,Math.abs(ue-Q)-2*_),j=Math.max(0,Math.abs(he-se)-2*_),ee=$-_,ie=J?ee-Math.sqrt(ee*ee-(ee-J)*(ee-J)):ee,fe=re?ee*2:Z?ee-J:2*ie,be=re?ee*2:Z?2*ie:ee-J,Ae,Be,Ie,Ze,at;return G.y/G.x>=j/(ne-fe)?Ze=j/G.y:G.y/G.x<=(j-be)/ne?Ze=ne/G.x:!re&&Z?(Ae=G.x*G.x+G.y*G.y/4,Be=-2*G.x*(ne-ee)-G.y*(j/2-ee),Ie=(ne-ee)*(ne-ee)+(j/2-ee)*(j/2-ee)-ee*ee,Ze=(-Be+Math.sqrt(Be*Be-4*Ae*Ie))/(2*Ae)):re?(Ae=(G.x*G.x+G.y*G.y)/4,Be=-G.x*(ne/2-ee)-G.y*(j/2-ee),Ie=(ne/2-ee)*(ne/2-ee)+(j/2-ee)*(j/2-ee)-ee*ee,Ze=(-Be+Math.sqrt(Be*Be-4*Ae*Ie))/(2*Ae)):(Ae=G.x*G.x/4+G.y*G.y,Be=-G.x*(ne/2-ee)-2*G.y*(j-ee),Ie=(ne/2-ee)*(ne/2-ee)+(j-ee)*(j-ee)-ee*ee,Ze=(-Be+Math.sqrt(Be*Be-4*Ae*Ie))/(2*Ae)),Ze=Math.min(1,Ze),Z?at=Math.max(0,ee-Math.sqrt(Math.max(0,ee*ee-(ee-(j-G.y*Ze)/2)*(ee-(j-G.y*Ze)/2)))-J):at=Math.max(0,ee-Math.sqrt(Math.max(0,ee*ee-(ee-(ne-G.x*Ze)/2)*(ee-(ne-G.x*Ze)/2)))-J),{scale:Ze,pad:at}}function O(Q,ue,se,he,G,$){var J=!!$.isHorizontal,Z=!!$.constrained,re=$.angle||0,ne=G.width,j=G.height,ee=Math.abs(ue-Q),ie=Math.abs(he-se),fe;J?fe=ie>2*_?_:0:fe=ee>2*_?_:0;var be=1;Z&&(be=J?Math.min(1,ie/j):Math.min(1,ee/ne));var Ae=L(re),Be=z(G,Ae),Ie=(J?Be.x:Be.y)/2,Ze=(G.left+G.right)/2,at=(G.top+G.bottom)/2,it=(Q+ue)/2,et=(se+he)/2,lt=0,Me=0,ge=J?m(ue,Q):m(se,he);return J?(it=ue-ge*fe,lt=ge*Ie):(et=he+ge*fe,Me=-ge*Ie),{textX:Ze,textY:at,targetX:it,targetY:et,anchorX:lt,anchorY:Me,scale:be,rotate:Ae}}function I(Q,ue,se,he,G){var $=ue[0].trace,J=$.texttemplate,Z;return J?Z=U(Q,ue,se,he,G):$.textinfo?Z=W(ue,se,he,G):Z=c.getValue($.text,se),c.coerceString(p,Z)}function N(Q,ue){var se=c.getValue(Q.textposition,ue);return c.coerceEnumerated(T,se)}function U(Q,ue,se,he,G){var $=ue[0].trace,J=A.castOption($,se,"texttemplate");if(!J)return"";var Z=$.type==="histogram",re=$.type==="waterfall",ne=$.type==="funnel",j=$.orientation==="h",ee,ie,fe,be;j?(ee="y",ie=G,fe="x",be=he):(ee="x",ie=he,fe="y",be=G);function Ae(lt){return o(ie,ie.c2l(lt),!0).text}function Be(lt){return o(be,be.c2l(lt),!0).text}var Ie=ue[se],Ze={};Ze.label=Ie.p,Ze.labelLabel=Ze[ee+"Label"]=Ae(Ie.p);var at=A.castOption($,Ie.i,"text");(at===0||at)&&(Ze.text=at),Ze.value=Ie.s,Ze.valueLabel=Ze[fe+"Label"]=Be(Ie.s);var it={};l(it,$,Ie.i),(Z||it.x===void 0)&&(it.x=j?Ze.value:Ze.label),(Z||it.y===void 0)&&(it.y=j?Ze.label:Ze.value),(Z||it.xLabel===void 0)&&(it.xLabel=j?Ze.valueLabel:Ze.labelLabel),(Z||it.yLabel===void 0)&&(it.yLabel=j?Ze.labelLabel:Ze.valueLabel),re&&(Ze.delta=+Ie.rawS||Ie.s,Ze.deltaLabel=Be(Ze.delta),Ze.final=Ie.v,Ze.finalLabel=Be(Ze.final),Ze.initial=Ze.final-Ze.delta,Ze.initialLabel=Be(Ze.initial)),ne&&(Ze.value=Ie.s,Ze.valueLabel=Be(Ze.value),Ze.percentInitial=Ie.begR,Ze.percentInitialLabel=A.formatPercent(Ie.begR),Ze.percentPrevious=Ie.difR,Ze.percentPreviousLabel=A.formatPercent(Ie.difR),Ze.percentTotal=Ie.sumR,Ze.percenTotalLabel=A.formatPercent(Ie.sumR));var et=A.castOption($,Ie.i,"customdata");return et&&(Ze.customdata=et),A.texttemplateString(J,Ze,Q._d3locale,it,Ze,$._meta||{})}function W(Q,ue,se,he){var G=Q[0].trace,$=G.orientation==="h",J=G.type==="waterfall",Z=G.type==="funnel";function re(et){var lt=$?he:se;return o(lt,et,!0).text}function ne(et){var lt=$?se:he;return o(lt,+et,!0).text}var j=G.textinfo,ee=Q[ue],ie=j.split("+"),fe=[],be,Ae=function(et){return ie.indexOf(et)!==-1};if(Ae("label")&&fe.push(re(Q[ue].p)),Ae("text")&&(be=A.castOption(G,ee.i,"text"),(be===0||be)&&fe.push(be)),J){var Be=+ee.rawS||ee.s,Ie=ee.v,Ze=Ie-Be;Ae("initial")&&fe.push(ne(Ze)),Ae("delta")&&fe.push(ne(Be)),Ae("final")&&fe.push(ne(Ie))}if(Z){Ae("value")&&fe.push(ne(ee.s));var at=0;Ae("percent initial")&&at++,Ae("percent previous")&&at++,Ae("percent total")&&at++;var it=at>1;Ae("percent initial")&&(be=A.formatPercent(ee.begR),it&&(be+=" of initial"),fe.push(be)),Ae("percent previous")&&(be=A.formatPercent(ee.difR),it&&(be+=" of previous"),fe.push(be)),Ae("percent total")&&(be=A.formatPercent(ee.sumR),it&&(be+=" of total"),fe.push(be))}return fe.join("
")}H.exports={plot:y,toMoveInsideBar:F}}}),c1=Ye({"src/traces/bar/hover.js"(X,H){"use strict";var g=Lc(),x=Hn(),A=Fn(),M=ta().fillText,e=j2().getLineWidth,t=Co().hoverLabelText,r=ks().BADNUM;function o(n,s,c,h,v){var p=a(n,s,c,h,v);if(p){var T=p.cd,l=T[0].trace,_=T[p.index];return p.color=i(l,_),x.getComponentMethod("errorbars","hoverInfo")(_,l,p),[p]}}function a(n,s,c,h,v){var p=n.cd,T=p[0].trace,l=p[0].t,_=h==="closest",w=T.type==="waterfall",S=n.maxHoverDistance,E=n.maxSpikeDistance,m,b,d,u,y,f,P;T.orientation==="h"?(m=c,b=s,d="y",u="x",y=he,f=Q):(m=s,b=c,d="x",u="y",f=he,y=Q);var L=T[d+"period"],z=_||L;function F(be){return O(be,-1)}function B(be){return O(be,1)}function O(be,Ae){var Be=be.w;return be[d]+Ae*Be/2}function I(be){return be[d+"End"]-be[d+"Start"]}var N=_?F:L?function(be){return be.p-I(be)/2}:function(be){return Math.min(F(be),be.p-l.bardelta/2)},U=_?B:L?function(be){return be.p+I(be)/2}:function(be){return Math.max(B(be),be.p+l.bardelta/2)};function W(be,Ae,Be){return v.finiteRange&&(Be=0),g.inbox(be-m,Ae-m,Be+Math.min(1,Math.abs(Ae-be)/P)-1)}function Q(be){return W(N(be),U(be),S)}function ue(be){return W(F(be),B(be),E)}function se(be){var Ae=be[u];if(w){var Be=Math.abs(be.rawS)||0;b>0?Ae+=Be:b<0&&(Ae-=Be)}return Ae}function he(be){var Ae=b,Be=be.b,Ie=se(be);return g.inbox(Be-Ae,Ie-Ae,S+(Ie-Ae)/(Ie-Be)-1)}function G(be){var Ae=b,Be=be.b,Ie=se(be);return g.inbox(Be-Ae,Ie-Ae,E+(Ie-Ae)/(Ie-Be)-1)}var $=n[d+"a"],J=n[u+"a"];P=Math.abs($.r2c($.range[1])-$.r2c($.range[0]));function Z(be){return(y(be)+f(be))/2}var re=g.getDistanceFunction(h,y,f,Z);if(g.getClosest(p,re,n),n.index!==!1&&p[n.index].p!==r){z||(N=function(be){return Math.min(F(be),be.p-l.bargroupwidth/2)},U=function(be){return Math.max(B(be),be.p+l.bargroupwidth/2)});var ne=n.index,j=p[ne],ee=T.base?j.b+j.s:j.s;n[u+"0"]=n[u+"1"]=J.c2p(j[u],!0),n[u+"LabelVal"]=ee;var ie=l.extents[l.extents.round(j.p)];n[d+"0"]=$.c2p(_?N(j):ie[0],!0),n[d+"1"]=$.c2p(_?U(j):ie[1],!0);var fe=j.orig_p!==void 0;return n[d+"LabelVal"]=fe?j.orig_p:j.p,n.labelLabel=t($,n[d+"LabelVal"],T[d+"hoverformat"]),n.valueLabel=t(J,n[u+"LabelVal"],T[u+"hoverformat"]),n.baseLabel=t(J,j.b,T[u+"hoverformat"]),n.spikeDistance=(G(j)+ue(j))/2,n[d+"Spike"]=$.c2p(j.p,!0),M(j,T,n),n.hovertemplate=T.hovertemplate,n}}function i(n,s){var c=s.mcc||n.marker.color,h=s.mlcc||n.marker.line.color,v=e(n,s);if(A.opacity(c))return c;if(A.opacity(h)&&v)return h}H.exports={hoverPoints:o,hoverOnBars:a,getTraceColor:i}}}),GB=Ye({"src/traces/bar/event_data.js"(X,H){"use strict";H.exports=function(x,A,M){return x.x="xVal"in A?A.xVal:A.x,x.y="yVal"in A?A.yVal:A.y,A.xa&&(x.xaxis=A.xa),A.ya&&(x.yaxis=A.ya),M.orientation==="h"?(x.label=x.y,x.value=x.x):(x.label=x.x,x.value=x.y),x}}}),f1=Ye({"src/traces/bar/select.js"(X,H){"use strict";H.exports=function(A,M){var e=A.cd,t=A.xaxis,r=A.yaxis,o=e[0].trace,a=o.type==="funnel",i=o.orientation==="h",n=[],s;if(M===!1)for(s=0;s0?(L="v",d>0?z=Math.min(y,u):z=Math.min(u)):d>0?(L="h",z=Math.min(y)):z=0;if(!z){c.visible=!1;return}c._length=z;var N=h("orientation",L);c._hasPreCompStats?N==="v"&&d===0?(h("x0",0),h("dx",1)):N==="h"&&b===0&&(h("y0",0),h("dy",1)):N==="v"&&d===0?h("x0"):N==="h"&&b===0&&h("y0");var U=x.getComponentMethod("calendars","handleTraceDefaults");U(s,c,["x","y"],v)}function i(s,c,h,v){var p=v.prefix,T=g.coerce2(s,c,r,"marker.outliercolor"),l=h("marker.line.outliercolor"),_="outliers";c._hasPreCompStats?_="all":(T||l)&&(_="suspectedoutliers");var w=h(p+"points",_);w?(h("jitter",w==="all"?.3:0),h("pointpos",w==="all"?-1.5:0),h("marker.symbol"),h("marker.opacity"),h("marker.size"),h("marker.angle"),h("marker.color",c.line.color),h("marker.line.color"),h("marker.line.width"),w==="suspectedoutliers"&&(h("marker.line.outliercolor",c.marker.color),h("marker.line.outlierwidth")),h("selected.marker.color"),h("unselected.marker.color"),h("selected.marker.size"),h("unselected.marker.size"),h("text"),h("hovertext")):delete c.marker;var S=h("hoveron");(S==="all"||S.indexOf("points")!==-1)&&h("hovertemplate"),g.coerceSelectionMarkerOpacity(c,h)}function n(s,c){var h,v;function p(w){return g.coerce(v._input,v,r,w)}for(var T=0;Tse.uf};if(E._hasPreCompStats){var ne=E[z],j=function(ar){return L.d2c((E[ar]||[])[f])},ee=1/0,ie=-1/0;for(f=0;f=se.q1&&se.q3>=se.med){var be=j("lowerfence");se.lf=be!==e&&be<=se.q1?be:v(se,G,$);var Ae=j("upperfence");se.uf=Ae!==e&&Ae>=se.q3?Ae:p(se,G,$);var Be=j("mean");se.mean=Be!==e?Be:$?M.mean(G,$):(se.q1+se.q3)/2;var Ie=j("sd");se.sd=Be!==e&&Ie>=0?Ie:$?M.stdev(G,$,se.mean):se.q3-se.q1,se.lo=T(se),se.uo=l(se);var Ze=j("notchspan");Ze=Ze!==e&&Ze>0?Ze:_(se,$),se.ln=se.med-Ze,se.un=se.med+Ze;var at=se.lf,it=se.uf;E.boxpoints&&G.length&&(at=Math.min(at,G[0]),it=Math.max(it,G[$-1])),E.notched&&(at=Math.min(at,se.ln),it=Math.max(it,se.un)),se.min=at,se.max=it}else{M.warn(["Invalid input - make sure that q1 <= median <= q3","q1 = "+se.q1,"median = "+se.med,"q3 = "+se.q3].join(` +`));var et;se.med!==e?et=se.med:se.q1!==e?se.q3!==e?et=(se.q1+se.q3)/2:et=se.q1:se.q3!==e?et=se.q3:et=0,se.med=et,se.q1=se.q3=et,se.lf=se.uf=et,se.mean=se.sd=et,se.ln=se.un=et,se.min=se.max=et}ee=Math.min(ee,se.min),ie=Math.max(ie,se.max),se.pts2=he.filter(re),u.push(se)}}E._extremes[L._id]=x.findExtremes(L,[ee,ie],{padded:!0})}else{var lt=L.makeCalcdata(E,z),Me=o(Q,ue),ge=Q.length,ce=a(ge);for(f=0;f=0&&ze0){if(se={},se.pos=se[B]=Q[f],he=se.pts=ce[f].sort(c),G=se[z]=he.map(h),$=G.length,se.min=G[0],se.max=G[$-1],se.mean=M.mean(G,$),se.sd=M.stdev(G,$,se.mean)*E.sdmultiple,se.med=M.interp(G,.5),$%2&&(Ct||St)){var Ot,jt;Ct?(Ot=G.slice(0,$/2),jt=G.slice($/2+1)):St&&(Ot=G.slice(0,$/2+1),jt=G.slice($/2)),se.q1=M.interp(Ot,.5),se.q3=M.interp(jt,.5)}else se.q1=M.interp(G,.25),se.q3=M.interp(G,.75);se.lf=v(se,G,$),se.uf=p(se,G,$),se.lo=T(se),se.uo=l(se);var ur=_(se,$);se.ln=se.med-ur,se.un=se.med+ur,tt=Math.min(tt,se.ln),nt=Math.max(nt,se.un),se.pts2=he.filter(re),u.push(se)}E.notched&&M.isTypedArray(lt)&&(lt=Array.from(lt)),E._extremes[L._id]=x.findExtremes(L,E.notched?lt.concat([tt,nt]):lt,{padded:!0})}return s(u,E),u.length>0?(u[0].t={num:m[y],dPos:ue,posLetter:B,valLetter:z,labels:{med:t(S,"median:"),min:t(S,"min:"),q1:t(S,"q1:"),q3:t(S,"q3:"),max:t(S,"max:"),mean:E.boxmean==="sd"||E.sizemode==="sd"?t(S,"mean \xB1 \u03C3:").replace("\u03C3",E.sdmultiple===1?"\u03C3":E.sdmultiple+"\u03C3"):t(S,"mean:"),lf:t(S,"lower fence:"),uf:t(S,"upper fence:")}},m[y]++,u):[{t:{empty:!0}}]};function r(w,S,E,m){var b=S in w,d=S+"0"in w,u="d"+S in w;if(b||d&&u){var y=E.makeCalcdata(w,S),f=A(w,E,S,y).vals;return[f,y]}var P;d?P=w[S+"0"]:"name"in w&&(E.type==="category"||g(w.name)&&["linear","log"].indexOf(E.type)!==-1||M.isDateTime(w.name)&&E.type==="date")?P=w.name:P=m;for(var L=E.type==="multicategory"?E.r2c_just_indices(P):E.d2c(P,0,w[S+"calendar"]),z=w._length,F=new Array(z),B=0;B1,d=1-s[r+"gap"],u=1-s[r+"groupgap"];for(v=0;v0;if(L==="positive"?(se=z*(P?1:.5),$=G,he=$=B):L==="negative"?(se=$=B,he=z*(P?1:.5),J=G):(se=he=z,$=J=G),ie){var fe=y.pointpos,be=y.jitter,Ae=y.marker.size/2,Be=0;fe+be>=0&&(Be=G*(fe+be),Be>se?(ee=!0,ne=Ae,Z=Be):Be>$&&(ne=Ae,Z=se)),Be<=se&&(Z=se);var Ie=0;fe-be<=0&&(Ie=-G*(fe-be),Ie>he?(ee=!0,j=Ae,re=Ie):Ie>J&&(j=Ae,re=he)),Ie<=he&&(re=he)}else Z=se,re=he;var Ze=new Array(T.length);for(p=0;pE.lo&&(N.so=!0)}return b});S.enter().append("path").classed("point",!0),S.exit().remove(),S.call(A.translatePoints,h,v)}function a(i,n,s,c){var h=n.val,v=n.pos,p=!!v.rangebreaks,T=c.bPos,l=c.bPosPxOffset||0,_=s.boxmean||(s.meanline||{}).visible,w,S;Array.isArray(c.bdPos)?(w=c.bdPos[0],S=c.bdPos[1]):(w=c.bdPos,S=c.bdPos);var E=i.selectAll("path.mean").data(s.type==="box"&&s.boxmean||s.type==="violin"&&s.box.visible&&s.meanline.visible?x.identity:[]);E.enter().append("path").attr("class","mean").style({fill:"none","vector-effect":"non-scaling-stroke"}),E.exit().remove(),E.each(function(m){var b=v.c2l(m.pos+T,!0),d=v.l2p(b-w)+l,u=v.l2p(b+S)+l,y=p?(d+u)/2:v.l2p(b)+l,f=h.c2p(m.mean,!0),P=h.c2p(m.mean-m.sd,!0),L=h.c2p(m.mean+m.sd,!0);s.orientation==="h"?g.select(this).attr("d","M"+f+","+d+"V"+u+(_==="sd"?"m0,0L"+P+","+y+"L"+f+","+d+"L"+L+","+y+"Z":"")):g.select(this).attr("d","M"+d+","+f+"H"+u+(_==="sd"?"m0,0L"+y+","+P+"L"+d+","+f+"L"+y+","+L+"Z":""))})}H.exports={plot:t,plotBoxAndWhiskers:r,plotPoints:o,plotBoxMean:a}}}),G2=Ye({"src/traces/box/style.js"(X,H){"use strict";var g=_n(),x=Fn(),A=Bo();function M(t,r,o){var a=o||g.select(t).selectAll("g.trace.boxes");a.style("opacity",function(i){return i[0].trace.opacity}),a.each(function(i){var n=g.select(this),s=i[0].trace,c=s.line.width;function h(T,l,_,w){T.style("stroke-width",l+"px").call(x.stroke,_).call(x.fill,w)}var v=n.selectAll("path.box");if(s.type==="candlestick")v.each(function(T){if(!T.empty){var l=g.select(this),_=s[T.dir];h(l,_.line.width,_.line.color,_.fillcolor),l.style("opacity",s.selectedpoints&&!T.selected?.3:1)}});else{h(v,c,s.line.color,s.fillcolor),n.selectAll("path.mean").style({"stroke-width":c,"stroke-dasharray":2*c+"px,"+c+"px"}).call(x.stroke,s.line.color);var p=n.selectAll("path.point");A.pointStyle(p,s,t)}})}function e(t,r,o){var a=r[0].trace,i=o.selectAll("path.point");a.selectedpoints?A.selectedPointStyle(i,a):A.pointStyle(i,a,t)}H.exports={style:M,styleOnSelect:e}}}),JS=Ye({"src/traces/box/hover.js"(X,H){"use strict";var g=Co(),x=ta(),A=Lc(),M=Fn(),e=x.fillText;function t(a,i,n,s){var c=a.cd,h=c[0].trace,v=h.hoveron,p=[],T;return v.indexOf("boxes")!==-1&&(p=p.concat(r(a,i,n,s))),v.indexOf("points")!==-1&&(T=o(a,i,n)),s==="closest"?T?[T]:p:(T&&p.push(T),p)}function r(a,i,n,s){var c=a.cd,h=a.xa,v=a.ya,p=c[0].trace,T=c[0].t,l=p.type==="violin",_,w,S,E,m,b,d,u,y,f,P,L=T.bdPos,z,F,B=T.wHover,O=function(Ie){return S.c2l(Ie.pos)+T.bPos-S.c2l(b)};l&&p.side!=="both"?(p.side==="positive"&&(y=function(Ie){var Ze=O(Ie);return A.inbox(Ze,Ze+B,f)},z=L,F=0),p.side==="negative"&&(y=function(Ie){var Ze=O(Ie);return A.inbox(Ze-B,Ze,f)},z=0,F=L)):(y=function(Ie){var Ze=O(Ie);return A.inbox(Ze-B,Ze+B,f)},z=F=L);var I;l?I=function(Ie){return A.inbox(Ie.span[0]-m,Ie.span[1]-m,f)}:I=function(Ie){return A.inbox(Ie.min-m,Ie.max-m,f)},p.orientation==="h"?(m=i,b=n,d=I,u=y,_="y",S=v,w="x",E=h):(m=n,b=i,d=y,u=I,_="x",S=h,w="y",E=v);var N=Math.min(1,L/Math.abs(S.r2c(S.range[1])-S.r2c(S.range[0])));f=a.maxHoverDistance-N,P=a.maxSpikeDistance-N;function U(Ie){return(d(Ie)+u(Ie))/2}var W=A.getDistanceFunction(s,d,u,U);if(A.getClosest(c,W,a),a.index===!1)return[];var Q=c[a.index],ue=p.line.color,se=(p.marker||{}).color;M.opacity(ue)&&p.line.width?a.color=ue:M.opacity(se)&&p.boxpoints?a.color=se:a.color=p.fillcolor,a[_+"0"]=S.c2p(Q.pos+T.bPos-F,!0),a[_+"1"]=S.c2p(Q.pos+T.bPos+z,!0),a[_+"LabelVal"]=Q.orig_p!==void 0?Q.orig_p:Q.pos;var he=_+"Spike";a.spikeDistance=U(Q)*P/f,a[he]=S.c2p(Q.pos,!0);var G=p.boxmean||p.sizemode==="sd"||(p.meanline||{}).visible,$=p.boxpoints||p.points,J=$&&G?["max","uf","q3","med","mean","q1","lf","min"]:$&&!G?["max","uf","q3","med","q1","lf","min"]:!$&&G?["max","q3","med","mean","q1","min"]:["max","q3","med","q1","min"],Z=E.range[1]0&&(o=!0);for(var s=0;st){var r=t-M[x];return M[x]=t,r}}else return M[x]=t,t;return 0},max:function(x,A,M,e){var t=e[A];if(g(t))if(t=Number(t),g(M[x])){if(M[x]d&&dM){var f=u===x?1:6,P=u===x?"M12":"M1";return function(L,z){var F=T.c2d(L,x,l),B=F.indexOf("-",f);B>0&&(F=F.substr(0,B));var O=T.d2c(F,0,l);if(Or?c>M?c>x*1.1?x:c>A*1.1?A:M:c>e?e:c>t?t:r:Math.pow(10,Math.floor(Math.log(c)/Math.LN10))}function n(c,h,v,p,T,l){if(p&&c>M){var _=s(h,T,l),w=s(v,T,l),S=c===x?0:1;return _[S]!==w[S]}return Math.floor(v/c)-Math.floor(h/c)>.1}function s(c,h,v){var p=h.c2d(c,x,v).split("-");return p[0]===""&&(p.unshift(),p[0]="-"+p[0]),p}}}),iM=Ye({"src/traces/histogram/calc.js"(X,H){"use strict";var g=jo(),x=ta(),A=Hn(),M=Co(),e=z_(),t=eM(),r=tM(),o=rM(),a=aM();function i(v,p){var T=[],l=[],_=p.orientation==="h",w=M.getFromId(v,_?p.yaxis:p.xaxis),S=_?"y":"x",E={x:"y",y:"x"}[S],m=p[S+"calendar"],b=p.cumulative,d,u=n(v,p,w,S),y=u[0],f=u[1],P=typeof y.size=="string",L=[],z=P?L:y,F=[],B=[],O=[],I=0,N=p.histnorm,U=p.histfunc,W=N.indexOf("density")!==-1,Q,ue,se;b.enabled&&W&&(N=N.replace(/ ?density$/,""),W=!1);var he=U==="max"||U==="min",G=he?null:0,$=t.count,J=r[N],Z=!1,re=function(ge){return w.r2c(ge,0,m)},ne;for(x.isArrayOrTypedArray(p[E])&&U!=="count"&&(ne=p[E],Z=U==="avg",$=t[U]),d=re(y.start),ue=re(y.end)+(d-M.tickIncrement(d,y.size,!1,m))/1e6;d=0&&se=et;d--)if(l[d]){lt=d;break}for(d=et;d<=lt;d++)if(g(T[d])&&g(l[d])){var Me={p:T[d],s:l[d],b:0};b.enabled||(Me.pts=O[d],fe?Me.ph0=Me.ph1=O[d].length?f[O[d][0]]:T[d]:(p._computePh=!0,Me.ph0=Ze(L[d]),Me.ph1=Ze(L[d+1],!0))),it.push(Me)}return it.length===1&&(it[0].width1=M.tickIncrement(it[0].p,y.size,!1,m)-it[0].p),e(it,p),x.isArrayOrTypedArray(p.selectedpoints)&&x.tagSelected(it,p,Be),it}function n(v,p,T,l,_){var w=l+"bins",S=v._fullLayout,E=p["_"+l+"bingroup"],m=S._histogramBinOpts[E],b=S.barmode==="overlay",d,u,y,f,P,L,z,F=function(Ie){return T.r2c(Ie,0,f)},B=function(Ie){return T.c2r(Ie,0,f)},O=T.type==="date"?function(Ie){return Ie||Ie===0?x.cleanDate(Ie,null,f):null}:function(Ie){return g(Ie)?Number(Ie):null};function I(Ie,Ze,at){Ze[Ie+"Found"]?(Ze[Ie]=O(Ze[Ie]),Ze[Ie]===null&&(Ze[Ie]=at[Ie])):(L[Ie]=Ze[Ie]=at[Ie],x.nestedProperty(u[0],w+"."+Ie).set(at[Ie]))}if(p["_"+l+"autoBinFinished"])delete p["_"+l+"autoBinFinished"];else{u=m.traces;var N=[],U=!0,W=!1,Q=!1;for(d=0;d"u"){if(_)return[se,P,!0];se=s(v,p,T,l,w)}z=y.cumulative||{},z.enabled&&z.currentbin!=="include"&&(z.direction==="decreasing"?se.start=B(M.tickIncrement(F(se.start),se.size,!0,f)):se.end=B(M.tickIncrement(F(se.end),se.size,!1,f))),m.size=se.size,m.sizeFound||(L.size=se.size,x.nestedProperty(u[0],w+".size").set(se.size)),I("start",m,se),I("end",m,se)}P=p["_"+l+"pos0"],delete p["_"+l+"pos0"];var G=p._input[w]||{},$=x.extendFlat({},m),J=m.start,Z=T.r2l(G.start),re=Z!==void 0;if((m.startFound||re)&&Z!==T.r2l(J)){var ne=re?Z:x.aggNums(Math.min,null,P),j={type:T.type==="category"||T.type==="multicategory"?"linear":T.type,r2l:T.r2l,dtick:m.size,tick0:J,calendar:f,range:[ne,M.tickIncrement(ne,m.size,!1,f)].map(T.l2r)},ee=M.tickFirst(j);ee>T.r2l(ne)&&(ee=M.tickIncrement(ee,m.size,!0,f)),$.start=T.l2r(ee),re||x.nestedProperty(p,w+".start").set($.start)}var ie=m.end,fe=T.r2l(G.end),be=fe!==void 0;if((m.endFound||be)&&fe!==T.r2l(ie)){var Ae=be?fe:x.aggNums(Math.max,null,P);$.end=T.l2r(Ae),be||x.nestedProperty(p,w+".start").set($.end)}var Be="autobin"+l;return p._input[Be]===!1&&(p._input[w]=x.extendFlat({},p[w]||{}),delete p._input[Be],delete p[Be]),[$,P]}function s(v,p,T,l,_){var w=v._fullLayout,S=c(v,p),E=!1,m=1/0,b=[p],d,u,y;for(d=0;d=0;l--)E(l);else if(p==="increasing"){for(l=1;l=0;l--)v[l]+=v[l+1];T==="exclude"&&(v.push(0),v.shift())}}H.exports={calc:i,calcAllAutoBins:n}}}),$B=Ye({"src/traces/histogram2d/calc.js"(X,H){"use strict";var g=ta(),x=Co(),A=eM(),M=tM(),e=rM(),t=aM(),r=iM().calcAllAutoBins;H.exports=function(s,c){var h=x.getFromId(s,c.xaxis),v=x.getFromId(s,c.yaxis),p=c.xcalendar,T=c.ycalendar,l=function(Fe){return h.r2c(Fe,0,p)},_=function(Fe){return v.r2c(Fe,0,T)},w=function(Fe){return h.c2r(Fe,0,p)},S=function(Fe){return v.c2r(Fe,0,T)},E,m,b,d,u=r(s,c,h,"x"),y=u[0],f=u[1],P=r(s,c,v,"y"),L=P[0],z=P[1],F=c._length;f.length>F&&f.splice(F,f.length-F),z.length>F&&z.splice(F,z.length-F);var B=[],O=[],I=[],N=typeof y.size=="string",U=typeof L.size=="string",W=[],Q=[],ue=N?W:y,se=U?Q:L,he=0,G=[],$=[],J=c.histnorm,Z=c.histfunc,re=J.indexOf("density")!==-1,ne=Z==="max"||Z==="min",j=ne?null:0,ee=A.count,ie=M[J],fe=!1,be=[],Ae=[],Be="z"in c?c.z:"marker"in c&&Array.isArray(c.marker.color)?c.marker.color:"";Be&&Z!=="count"&&(fe=Z==="avg",ee=A[Z]);var Ie=y.size,Ze=l(y.start),at=l(y.end)+(Ze-x.tickIncrement(Ze,Ie,!1,p))/1e6;for(E=Ze;E=0&&b=0&&dx;i++)a=e(r,o,M(a));return a>x&&g.log("interp2d didn't converge quickly",a),r};function e(t,r,o){var a=0,i,n,s,c,h,v,p,T,l,_,w,S,E;for(c=0;cS&&(a=Math.max(a,Math.abs(t[n][s]-w)/(E-S))))}return a}}}),K2=Ye({"src/traces/heatmap/find_empties.js"(X,H){"use strict";var g=ta().maxRowLength;H.exports=function(A){var M=[],e={},t=[],r=A[0],o=[],a=[0,0,0],i=g(A),n,s,c,h,v,p,T,l;for(s=0;s=0;v--)h=t[v],s=h[0],c=h[1],p=((e[[s-1,c]]||a)[2]+(e[[s+1,c]]||a)[2]+(e[[s,c-1]]||a)[2]+(e[[s,c+1]]||a)[2])/20,p&&(T[h]=[s,c,p],t.splice(v,1),l=!0);if(!l)throw"findEmpties iterated with no new neighbors";for(h in T)e[h]=T[h],M.push(T[h])}return M.sort(function(_,w){return w[2]-_[2]})}}}),nM=Ye({"src/traces/heatmap/make_bound_array.js"(X,H){"use strict";var g=Hn(),x=ta().isArrayOrTypedArray;H.exports=function(M,e,t,r,o,a){var i=[],n=g.traceIs(M,"contour"),s=g.traceIs(M,"histogram"),c,h,v,p=x(e)&&e.length>1;if(p&&!s&&a.type!=="category"){var T=e.length;if(T<=o){if(n)i=Array.from(e).slice(0,o);else if(o===1)a.type==="log"?i=[.5*e[0],2*e[0]]:i=[e[0]-.5,e[0]+.5];else if(a.type==="log"){for(i=[Math.pow(e[0],1.5)/Math.pow(e[1],.5)],v=1;v1){var J=($[$.length-1]-$[0])/($.length-1),Z=Math.abs(J/100);for(F=0;F<$.length-1;F++)if(Math.abs($[F+1]-$[F]-J)>Z)return!1}return!0}T._islinear=!1,l.type==="log"||_.type==="log"?E==="fast"&&I("log axis found"):N(m)?N(y)?T._islinear=!0:E==="fast"&&I("y scale is not linear"):E==="fast"&&I("x scale is not linear");var U=x.maxRowLength(z),W=T.xtype==="scaled"?"":m,Q=n(T,W,b,d,U,l),ue=T.ytype==="scaled"?"":y,se=n(T,ue,f,P,z.length,_);T._extremes[l._id]=A.findExtremes(l,Q),T._extremes[_._id]=A.findExtremes(_,se);var he={x:Q,y:se,z,text:T._text||T.text,hovertext:T._hovertext||T.hovertext};if(T.xperiodalignment&&u&&(he.orig_x=u),T.yperiodalignment&&L&&(he.orig_y=L),W&&W.length===Q.length-1&&(he.xCenter=W),ue&&ue.length===se.length-1&&(he.yCenter=ue),S&&(he.xRanges=B.xRanges,he.yRanges=B.yRanges,he.pts=B.pts),w||t(p,T,{vals:z,cLetter:"z"}),w&&T.contours&&T.contours.coloring==="heatmap"){var G={type:T.type==="contour"?"heatmap":"histogram2d",xcalendar:T.xcalendar,ycalendar:T.ycalendar};he.xfill=n(G,W,b,d,U,l),he.yfill=n(G,ue,f,P,z.length,_)}return[he]};function c(v){for(var p=[],T=v.length,l=0;l0;)re=y.c2p(N[ie]),ie--;for(re0;)ee=f.c2p(U[ie]),ie--;ee=y._length||re<=0||j>=f._length||ee<=0;if(at){var it=L.selectAll("image").data([]);it.exit().remove(),_(L);return}var et,lt;Ae==="fast"?(et=G,lt=he):(et=Ie,lt=Ze);var Me=document.createElement("canvas");Me.width=et,Me.height=lt;var ge=Me.getContext("2d",{willReadFrequently:!0}),ce=n(F,{noNumericCheck:!0,returnArray:!0}),ze,tt;Ae==="fast"?(ze=$?function(Sa){return G-1-Sa}:t.identity,tt=J?function(Sa){return he-1-Sa}:t.identity):(ze=function(Sa){return t.constrain(Math.round(y.c2p(N[Sa])-Z),0,Ie)},tt=function(Sa){return t.constrain(Math.round(f.c2p(U[Sa])-j),0,Ze)});var nt=tt(0),Qe=[nt,nt],Ct=$?0:1,St=J?0:1,Ot=0,jt=0,ur=0,ar=0,Cr,vr,_r,yt,Fe;function Ke(Sa,Ti){if(Sa!==void 0){var ai=ce(Sa);return ai[0]=Math.round(ai[0]),ai[1]=Math.round(ai[1]),ai[2]=Math.round(ai[2]),Ot+=Ti,jt+=ai[0]*Ti,ur+=ai[1]*Ti,ar+=ai[2]*Ti,ai}return[0,0,0,0]}function Ne(Sa,Ti,ai,an){var sn=Sa[ai.bin0];if(sn===void 0)return Ke(void 0,1);var Mn=Sa[ai.bin1],On=Ti[ai.bin0],$n=Ti[ai.bin1],Cn=Mn-sn||0,Lo=On-sn||0,Xi;return Mn===void 0?$n===void 0?Xi=0:On===void 0?Xi=2*($n-sn):Xi=(2*$n-On-sn)*2/3:$n===void 0?On===void 0?Xi=0:Xi=(2*sn-Mn-On)*2/3:On===void 0?Xi=(2*$n-Mn-sn)*2/3:Xi=$n+sn-Mn-On,Ke(sn+ai.frac*Cn+an.frac*(Lo+ai.frac*Xi))}if(Ae!=="default"){var Ee=0,Ve;try{Ve=new Uint8Array(et*lt*4)}catch{Ve=new Array(et*lt*4)}if(Ae==="smooth"){var ke=W||N,Te=Q||U,Le=new Array(ke.length),rt=new Array(Te.length),dt=new Array(Ie),xt=W?S:w,It=Q?S:w,Bt,Gt,Kt;for(ie=0;ieFa||Fa>f._length))for(fe=Zr;feya||ya>y._length)){var $a=o({x:qa,y:Ea},F,m._fullLayout);$a.x=qa,$a.y=Ea;var mt=z.z[ie][fe];mt===void 0?($a.z="",$a.zLabel=""):($a.z=mt,$a.zLabel=e.tickText(Wt,mt,"hover").text);var gt=z.text&&z.text[ie]&&z.text[ie][fe];(gt===void 0||gt===!1)&&(gt=""),$a.text=gt;var Er=t.texttemplateString(Ua,$a,m._fullLayout._d3locale,$a,F._meta||{});if(Er){var kr=Er.split("
"),br=kr.length,Tr=0;for(be=0;be=_[0].length||P<0||P>_.length)return}else{if(g.inbox(o-T[0],o-T[T.length-1],0)>0||g.inbox(a-l[0],a-l[l.length-1],0)>0)return;if(s){var L;for(b=[2*T[0]-T[1]],L=1;L=",">","<="],COMPARISON_OPS2:["=","<",">=",">","<="],INTERVAL_OPS:["[]","()","[)","(]","][",")(","](",")["],SET_OPS:["{}","}{"],CONSTRAINT_REDUCTION:{"=":"=","<":"<","<=":"<",">":">",">=":">","[]":"[]","()":"[]","[)":"[]","(]":"[]","][":"][",")(":"][","](":"][",")[":"]["}}}}),U_=Ye({"src/traces/contour/attributes.js"(X,H){"use strict";var g=h1(),x=Pc(),A=Cc(),M=A.axisHoverFormat,e=A.descriptionOnlyNumbers,t=tu(),r=Uh().dash,o=Au(),a=Oo().extendFlat,i=n3(),n=i.COMPARISON_OPS2,s=i.INTERVAL_OPS,c=x.line;H.exports=a({z:g.z,x:g.x,x0:g.x0,dx:g.dx,y:g.y,y0:g.y0,dy:g.dy,xperiod:g.xperiod,yperiod:g.yperiod,xperiod0:x.xperiod0,yperiod0:x.yperiod0,xperiodalignment:g.xperiodalignment,yperiodalignment:g.yperiodalignment,text:g.text,hovertext:g.hovertext,transpose:g.transpose,xtype:g.xtype,ytype:g.ytype,xhoverformat:M("x"),yhoverformat:M("y"),zhoverformat:M("z",1),hovertemplate:g.hovertemplate,texttemplate:a({},g.texttemplate,{}),textfont:a({},g.textfont,{}),hoverongaps:g.hoverongaps,connectgaps:a({},g.connectgaps,{}),fillcolor:{valType:"color",editType:"calc"},autocontour:{valType:"boolean",dflt:!0,editType:"calc",impliedEdits:{"contours.start":void 0,"contours.end":void 0,"contours.size":void 0}},ncontours:{valType:"integer",dflt:15,min:1,editType:"calc"},contours:{type:{valType:"enumerated",values:["levels","constraint"],dflt:"levels",editType:"calc"},start:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},end:{valType:"number",dflt:null,editType:"plot",impliedEdits:{"^autocontour":!1}},size:{valType:"number",dflt:null,min:0,editType:"plot",impliedEdits:{"^autocontour":!1}},coloring:{valType:"enumerated",values:["fill","heatmap","lines","none"],dflt:"fill",editType:"calc"},showlines:{valType:"boolean",dflt:!0,editType:"plot"},showlabels:{valType:"boolean",dflt:!1,editType:"plot"},labelfont:o({editType:"plot",colorEditType:"style"}),labelformat:{valType:"string",dflt:"",editType:"plot",description:e("contour label")},operation:{valType:"enumerated",values:[].concat(n).concat(s),dflt:"=",editType:"calc"},value:{valType:"any",dflt:0,editType:"calc"},editType:"calc",impliedEdits:{autocontour:!1}},line:{color:a({},c.color,{editType:"style+colorbars"}),width:{valType:"number",min:0,editType:"style+colorbars"},dash:r,smoothing:a({},c.smoothing,{}),editType:"plot"},zorder:x.zorder},t("",{cLetter:"z",autoColorDflt:!1,editTypeOverride:"calc"}))}}),cM=Ye({"src/traces/histogram2dcontour/attributes.js"(X,H){"use strict";var g=i3(),x=U_(),A=tu(),M=Cc().axisHoverFormat,e=Oo().extendFlat;H.exports=e({x:g.x,y:g.y,z:g.z,marker:g.marker,histnorm:g.histnorm,histfunc:g.histfunc,nbinsx:g.nbinsx,xbins:g.xbins,nbinsy:g.nbinsy,ybins:g.ybins,autobinx:g.autobinx,autobiny:g.autobiny,bingroup:g.bingroup,xbingroup:g.xbingroup,ybingroup:g.ybingroup,autocontour:x.autocontour,ncontours:x.ncontours,contours:x.contours,line:{color:x.line.color,width:e({},x.line.width,{dflt:.5}),dash:x.line.dash,smoothing:x.line.smoothing,editType:"plot"},xhoverformat:M("x"),yhoverformat:M("y"),zhoverformat:M("z",1),hovertemplate:g.hovertemplate,texttemplate:x.texttemplate,textfont:x.textfont},A("",{cLetter:"z",editTypeOverride:"calc"}))}}),o3=Ye({"src/traces/contour/contours_defaults.js"(X,H){"use strict";H.exports=function(x,A,M,e){var t=e("contours.start"),r=e("contours.end"),o=t===!1||r===!1,a=M("contours.size"),i;o?i=A.autocontour=!0:i=M("autocontour",!1),(i||!a)&&M("ncontours")}}}),fM=Ye({"src/traces/contour/label_defaults.js"(X,H){"use strict";var g=ta();H.exports=function(A,M,e,t){t||(t={});var r=A("contours.showlabels");if(r){var o=M.font;g.coerceFont(A,"contours.labelfont",o,{overrideDflt:{color:e}}),A("contours.labelformat")}t.hasHover!==!1&&A("zhoverformat")}}}),s3=Ye({"src/traces/contour/style_defaults.js"(X,H){"use strict";var g=sh(),x=fM();H.exports=function(M,e,t,r,o){var a=t("contours.coloring"),i,n="";a==="fill"&&(i=t("contours.showlines")),i!==!1&&(a!=="lines"&&(n=t("line.color","#000")),t("line.width",.5),t("line.dash")),a!=="none"&&(M.showlegend!==!0&&(e.showlegend=!1),e._dfltShowLegend=!1,g(M,e,r,t,{prefix:"",cLetter:"z"})),t("line.smoothing"),x(t,r,n,o)}}}),c7=Ye({"src/traces/histogram2dcontour/defaults.js"(X,H){"use strict";var g=ta(),x=uM(),A=o3(),M=s3(),e=N_(),t=cM();H.exports=function(o,a,i,n){function s(h,v){return g.coerce(o,a,t,h,v)}function c(h){return g.coerce2(o,a,t,h)}x(o,a,s,n),a.visible!==!1&&(A(o,a,s,c),M(o,a,s,n),s("xhoverformat"),s("yhoverformat"),s("hovertemplate"),a.contours&&a.contours.coloring==="heatmap"&&e(s,n))}}}),hM=Ye({"src/traces/contour/set_contours.js"(X,H){"use strict";var g=Co(),x=ta();H.exports=function(e,t){var r=e.contours;if(e.autocontour){var o=e.zmin,a=e.zmax;(e.zauto||o===void 0)&&(o=x.aggNums(Math.min,null,t)),(e.zauto||a===void 0)&&(a=x.aggNums(Math.max,null,t));var i=A(o,a,e.ncontours);r.size=i.dtick,r.start=g.tickFirst(i),i.range.reverse(),r.end=g.tickFirst(i),r.start===o&&(r.start+=r.size),r.end===a&&(r.end-=r.size),r.start>r.end&&(r.start=r.end=(r.start+r.end)/2),e._input.contours||(e._input.contours={}),x.extendFlat(e._input.contours,{start:r.start,end:r.end,size:r.size}),e._input.autocontour=!0}else if(r.type!=="constraint"){var n=r.start,s=r.end,c=e._input.contours;if(n>s&&(r.start=c.start=s,s=r.end=c.end=n,n=r.start),!(r.size>0)){var h;n===s?h=1:h=A(n,s,e.ncontours).dtick,c.size=r.size=h}}};function A(M,e,t){var r={type:"linear",range:[M,e]};return g.autoTicks(r,(e-M)/(t||15)),r}}}),j_=Ye({"src/traces/contour/end_plus.js"(X,H){"use strict";H.exports=function(x){return x.end+x.size/1e6}}}),pM=Ye({"src/traces/contour/calc.js"(X,H){"use strict";var g=Su(),x=J2(),A=hM(),M=j_();H.exports=function(t,r){var o=x(t,r),a=o[0].z;A(r,a);var i=r.contours,n=g.extractOpts(r),s;if(i.coloring==="heatmap"&&n.auto&&r.autocontour===!1){var c=i.start,h=M(i),v=i.size||1,p=Math.floor((h-c)/v)+1;isFinite(v)||(v=1,p=1);var T=c-v/2,l=T+p*v;s=[T,l]}else s=a;return g.calc(t,r,{vals:s,cLetter:"z"}),o}}}),V_=Ye({"src/traces/contour/constants.js"(X,H){"use strict";H.exports={BOTTOMSTART:[1,9,13,104,713],TOPSTART:[4,6,7,104,713],LEFTSTART:[8,12,14,208,1114],RIGHTSTART:[2,3,11,208,1114],NEWDELTA:[null,[-1,0],[0,-1],[-1,0],[1,0],null,[0,-1],[-1,0],[0,1],[0,1],null,[0,1],[1,0],[1,0],[0,-1]],CHOOSESADDLE:{104:[4,1],208:[2,8],713:[7,13],1114:[11,14]},SADDLEREMAINDER:{1:4,2:8,4:1,7:13,8:2,11:14,13:7,14:11},LABELDISTANCE:2,LABELINCREASE:10,LABELMIN:3,LABELMAX:10,LABELOPTIMIZER:{EDGECOST:1,ANGLECOST:1,NEIGHBORCOST:5,SAMELEVELFACTOR:10,SAMELEVELDISTANCE:5,MAXCOST:100,INITIALSEARCHPOINTS:10,ITERATIONS:5}}}}),dM=Ye({"src/traces/contour/make_crossings.js"(X,H){"use strict";var g=V_();H.exports=function(M){var e=M[0].z,t=e.length,r=e[0].length,o=t===2||r===2,a,i,n,s,c,h,v,p,T;for(i=0;iA?0:1)+(M[0][1]>A?0:2)+(M[1][1]>A?0:4)+(M[1][0]>A?0:8);if(e===5||e===10){var t=(M[0][0]+M[0][1]+M[1][0]+M[1][1])/4;return A>t?e===5?713:1114:e===5?104:208}return e===15?0:e}}}),vM=Ye({"src/traces/contour/find_all_paths.js"(X,H){"use strict";var g=ta(),x=V_();H.exports=function(a,i,n){var s,c,h,v,p;for(i=i||.01,n=n||.01,h=0;h20?(h=x.CHOOSESADDLE[h][(v[0]||v[1])<0?0:1],o.crossings[c]=x.SADDLEREMAINDER[h]):delete o.crossings[c],v=x.NEWDELTA[h],!v){g.log("Found bad marching index:",h,a,o.level);break}p.push(r(o,a,v)),a[0]+=v[0],a[1]+=v[1],c=a.join(","),A(p[p.length-1],p[p.length-2],n,s)&&p.pop();var E=v[0]&&(a[0]<0||a[0]>l-2)||v[1]&&(a[1]<0||a[1]>T-2),m=a[0]===_[0]&&a[1]===_[1]&&v[0]===w[0]&&v[1]===w[1];if(m||i&&E)break;h=o.crossings[c]}S===1e4&&g.log("Infinite loop in contour?");var b=A(p[0],p[p.length-1],n,s),d=0,u=.2*o.smoothing,y=[],f=0,P,L,z,F,B,O,I,N,U,W,Q;for(S=1;S=f;S--)if(P=y[S],P=f&&P+y[L]N&&U--,o.edgepaths[U]=Q.concat(p,W));break}G||(o.edgepaths[N]=p.concat(W))}for(N=0;N20&&a?o===208||o===1114?n=i[0]===0?1:-1:s=i[1]===0?1:-1:x.BOTTOMSTART.indexOf(o)!==-1?s=1:x.LEFTSTART.indexOf(o)!==-1?n=1:x.TOPSTART.indexOf(o)!==-1?s=-1:n=-1,[n,s]}function r(o,a,i){var n=a[0]+Math.max(i[0],0),s=a[1]+Math.max(i[1],0),c=o.z[s][n],h=o.xaxis,v=o.yaxis;if(i[1]){var p=(o.level-c)/(o.z[s][n+1]-c),T=(p!==1?(1-p)*h.c2l(o.x[n]):0)+(p!==0?p*h.c2l(o.x[n+1]):0);return[h.c2p(h.l2c(T),!0),v.c2p(o.y[s],!0),n+p,s]}else{var l=(o.level-c)/(o.z[s+1][n]-c),_=(l!==1?(1-l)*v.c2l(o.y[s]):0)+(l!==0?l*v.c2l(o.y[s+1]):0);return[h.c2p(o.x[n],!0),v.c2p(v.l2c(_),!0),n,s+l]}}}}),f7=Ye({"src/traces/contour/constraint_mapping.js"(X,H){"use strict";var g=n3(),x=jo();H.exports={"[]":M("[]"),"][":M("]["),">":e(">"),"<":e("<"),"=":e("=")};function A(t,r){var o=Array.isArray(r),a;function i(n){return x(n)?+n:null}return g.COMPARISON_OPS2.indexOf(t)!==-1?a=i(o?r[0]:r):g.INTERVAL_OPS.indexOf(t)!==-1?a=o?[i(r[0]),i(r[1])]:[i(r),i(r)]:g.SET_OPS.indexOf(t)!==-1&&(a=o?r.map(i):[i(r)]),a}function M(t){return function(r){r=A(t,r);var o=Math.min(r[0],r[1]),a=Math.max(r[0],r[1]);return{start:o,end:a,size:a-o}}}function e(t){return function(r){return r=A(t,r),{start:r,end:1/0,size:1/0}}}}}),mM=Ye({"src/traces/contour/empty_pathinfo.js"(X,H){"use strict";var g=ta(),x=f7(),A=j_();H.exports=function(e,t,r){for(var o=e.type==="constraint"?x[e._operation](e.value):e,a=o.size,i=[],n=A(o),s=r.trace._carpetTrace,c=s?{xaxis:s.aaxis,yaxis:s.baxis,x:r.a,y:r.b}:{xaxis:t.xaxis,yaxis:t.yaxis,x:r.x,y:r.y},h=o.start;h1e3){g.warn("Too many contours, clipping at 1000",e);break}return i}}}),gM=Ye({"src/traces/contour/convert_to_constraints.js"(X,H){"use strict";var g=ta();H.exports=function(A,M){var e,t,r,o=function(n){return n.reverse()},a=function(n){return n};switch(M){case"=":case"<":return A;case">":for(A.length!==1&&g.warn("Contour data invalid for the specified inequality operation."),t=A[0],e=0;er.level||r.starts.length&&t===r.level)}break;case"constraint":if(A.prefixBoundary=!1,A.edgepaths.length)return;var o=A.x.length,a=A.y.length,i=-1/0,n=1/0;for(e=0;e":s>i&&(A.prefixBoundary=!0);break;case"<":(si||A.starts.length&&h===n)&&(A.prefixBoundary=!0);break;case"][":c=Math.min(s[0],s[1]),h=Math.max(s[0],s[1]),ci&&(A.prefixBoundary=!0);break}break}}}}),l3=Ye({"src/traces/contour/plot.js"(X){"use strict";var H=_n(),g=ta(),x=Bo(),A=Su(),M=jl(),e=Co(),t=wv(),r=Q2(),o=dM(),a=vM(),i=mM(),n=gM(),s=yM(),c=V_(),h=c.LABELOPTIMIZER;X.plot=function(m,b,d,u){var y=b.xaxis,f=b.yaxis;g.makeTraceGroups(u,d,"contour").each(function(P){var L=H.select(this),z=P[0],F=z.trace,B=z.x,O=z.y,I=F.contours,N=i(I,b,z),U=g.ensureSingle(L,"g","heatmapcoloring"),W=[];I.coloring==="heatmap"&&(W=[P]),r(m,b,W,U),o(N),a(N);var Q=y.c2p(B[0],!0),ue=y.c2p(B[B.length-1],!0),se=f.c2p(O[0],!0),he=f.c2p(O[O.length-1],!0),G=[[Q,he],[ue,he],[ue,se],[Q,se]],$=N;I.type==="constraint"&&($=n(N,I._operation)),v(L,G,I),p(L,$,G,I),l(L,N,m,z,I),w(L,b,m,z,G)})};function v(E,m,b){var d=g.ensureSingle(E,"g","contourbg"),u=d.selectAll("path").data(b.coloring==="fill"?[0]:[]);u.enter().append("path"),u.exit().remove(),u.attr("d","M"+m.join("L")+"Z").style("stroke","none")}function p(E,m,b,d){var u=d.coloring==="fill"||d.type==="constraint"&&d._operation!=="=",y="M"+b.join("L")+"Z";u&&s(m,d);var f=g.ensureSingle(E,"g","contourfill"),P=f.selectAll("path").data(u?m:[]);P.enter().append("path"),P.exit().remove(),P.each(function(L){var z=(L.prefixBoundary?y:"")+T(L,b);z?H.select(this).attr("d",z).style("stroke","none"):H.select(this).remove()})}function T(E,m){var b="",d=0,u=E.edgepaths.map(function(Q,ue){return ue}),y=!0,f,P,L,z,F,B;function O(Q){return Math.abs(Q[1]-m[0][1])<.01}function I(Q){return Math.abs(Q[1]-m[2][1])<.01}function N(Q){return Math.abs(Q[0]-m[0][0])<.01}function U(Q){return Math.abs(Q[0]-m[2][0])<.01}for(;u.length;){for(B=x.smoothopen(E.edgepaths[d],E.smoothing),b+=y?B:B.replace(/^M/,"L"),u.splice(u.indexOf(d),1),f=E.edgepaths[d][E.edgepaths[d].length-1],z=-1,L=0;L<4;L++){if(!f){g.log("Missing end?",d,E);break}for(O(f)&&!U(f)?P=m[1]:N(f)?P=m[0]:I(f)?P=m[3]:U(f)&&(P=m[2]),F=0;F=0&&(P=W,z=F):Math.abs(f[1]-P[1])<.01?Math.abs(f[1]-W[1])<.01&&(W[0]-f[0])*(P[0]-W[0])>=0&&(P=W,z=F):g.log("endpt to newendpt is not vert. or horz.",f,P,W)}if(f=P,z>=0)break;b+="L"+P}if(z===E.edgepaths.length){g.log("unclosed perimeter path");break}d=z,y=u.indexOf(d)===-1,y&&(d=u[0],b+="Z")}for(d=0;dh.MAXCOST*2)break;O&&(P/=2),f=z-P/2,L=f+P*1.5}if(B<=h.MAXCOST)return F};function _(E,m,b,d){var u=m.width/2,y=m.height/2,f=E.x,P=E.y,L=E.theta,z=Math.cos(L)*u,F=Math.sin(L)*u,B=(f>d.center?d.right-f:f-d.left)/(z+Math.abs(Math.sin(L)*y)),O=(P>d.middle?d.bottom-P:P-d.top)/(Math.abs(F)+Math.cos(L)*y);if(B<1||O<1)return 1/0;var I=h.EDGECOST*(1/(B-1)+1/(O-1));I+=h.ANGLECOST*L*L;for(var N=f-z,U=P-F,W=f+z,Q=P+F,ue=0;ue=w)&&(r<=_&&(r=_),o>=w&&(o=w),i=Math.floor((o-r)/a)+1,n=0),l=0;l_&&(v.unshift(_),p.unshift(p[0])),v[v.length-1]2?s.value=s.value.slice(2):s.length===0?s.value=[0,1]:s.length<2?(c=parseFloat(s.value[0]),s.value=[c,c+1]):s.value=[parseFloat(s.value[0]),parseFloat(s.value[1])]:g(s.value)&&(c=parseFloat(s.value),s.value=[c,c+1])):(n("contours.value",0),g(s.value)||(r(s.value)?s.value=parseFloat(s.value[0]):s.value=0))}}}),d7=Ye({"src/traces/contour/defaults.js"(X,H){"use strict";var g=ta(),x=W2(),A=Qd(),M=bM(),e=o3(),t=s3(),r=N_(),o=U_();H.exports=function(i,n,s,c){function h(l,_){return g.coerce(i,n,o,l,_)}function v(l){return g.coerce2(i,n,o,l)}var p=x(i,n,h,c);if(!p){n.visible=!1;return}A(i,n,c,h),h("xhoverformat"),h("yhoverformat"),h("text"),h("hovertext"),h("hoverongaps"),h("hovertemplate");var T=h("contours.type")==="constraint";h("connectgaps",g.isArray1D(n.z)),T?M(i,n,h,c,s):(e(i,n,h,v),t(i,n,h,c)),n.contours&&n.contours.coloring==="heatmap"&&r(h,c),h("zorder")}}}),v7=Ye({"src/traces/contour/index.js"(X,H){"use strict";H.exports={attributes:U_(),supplyDefaults:d7(),calc:pM(),plot:l3().plot,style:u3(),colorbar:c3(),hoverPoints:xM(),moduleType:"trace",name:"contour",basePlotModule:Pf(),categories:["cartesian","svg","2dMap","contour","showLegend"],meta:{}}}}),m7=Ye({"lib/contour.js"(X,H){"use strict";H.exports=v7()}}),wM=Ye({"src/traces/scatterternary/attributes.js"(X,H){"use strict";var g=xs().hovertemplateAttrs,x=xs().texttemplateAttrs,A=$d(),M=Pc(),e=Pl(),t=tu(),r=Uh().dash,o=Oo().extendFlat,a=M.marker,i=M.line,n=a.line;H.exports={a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},c:{valType:"data_array",editType:"calc"},sum:{valType:"number",dflt:0,min:0,editType:"calc"},mode:o({},M.mode,{dflt:"markers"}),text:o({},M.text,{}),texttemplate:x({editType:"plot"},{keys:["a","b","c","text"]}),hovertext:o({},M.hovertext,{}),line:{color:i.color,width:i.width,dash:r,backoff:i.backoff,shape:o({},i.shape,{values:["linear","spline"]}),smoothing:i.smoothing,editType:"calc"},connectgaps:M.connectgaps,cliponaxis:M.cliponaxis,fill:o({},M.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:A(),marker:o({symbol:a.symbol,opacity:a.opacity,angle:a.angle,angleref:a.angleref,standoff:a.standoff,maxdisplayed:a.maxdisplayed,size:a.size,sizeref:a.sizeref,sizemin:a.sizemin,sizemode:a.sizemode,line:o({width:n.width,editType:"calc"},t("marker.line")),gradient:a.gradient,editType:"calc"},t("marker")),textfont:M.textfont,textposition:M.textposition,selected:M.selected,unselected:M.unselected,hoverinfo:o({},e.hoverinfo,{flags:["a","b","c","text","name"]}),hoveron:M.hoveron,hovertemplate:g()}}}),g7=Ye({"src/traces/scatterternary/defaults.js"(X,H){"use strict";var g=ta(),x=Tv(),A=uu(),M=md(),e=Dd(),t=n1(),r=zd(),o=ev(),a=wM();H.exports=function(n,s,c,h){function v(E,m){return g.coerce(n,s,a,E,m)}var p=v("a"),T=v("b"),l=v("c"),_;if(p?(_=p.length,T?(_=Math.min(_,T.length),l&&(_=Math.min(_,l.length))):l?_=Math.min(_,l.length):_=0):T&&l&&(_=Math.min(T.length,l.length)),!_){s.visible=!1;return}s._length=_,v("sum"),v("text"),v("hovertext"),s.hoveron!=="fills"&&v("hovertemplate");var w=_"),o.hovertemplate=h.hovertemplate,r}}}),w7=Ye({"src/traces/scatterternary/event_data.js"(X,H){"use strict";H.exports=function(x,A,M,e,t){if(A.xa&&(x.xaxis=A.xa),A.ya&&(x.yaxis=A.ya),e[t]){var r=e[t];x.a=r.a,x.b=r.b,x.c=r.c}else x.a=A.a,x.b=A.b,x.c=A.c;return x}}}),T7=Ye({"src/plots/ternary/ternary.js"(X,H){"use strict";var g=_n(),x=bh(),A=Hn(),M=ta(),e=M.strTranslate,t=M._,r=Fn(),o=Bo(),a=wv(),i=Oo().extendFlat,n=Gu(),s=Co(),c=bp(),h=Lc(),v=Jd(),p=v.freeMode,T=v.rectMode,l=Xg(),_=ff().prepSelect,w=ff().selectOnClick,S=ff().clearOutline,E=ff().clearSelectionsCache,m=wh();function b(I,N){this.id=I.id,this.graphDiv=I.graphDiv,this.init(N),this.makeFramework(N),this.updateFx(N),this.aTickLayout=null,this.bTickLayout=null,this.cTickLayout=null}H.exports=b;var d=b.prototype;d.init=function(I){this.container=I._ternarylayer,this.defs=I._defs,this.layoutId=I._uid,this.traceHash={},this.layers={}},d.plot=function(I,N){var U=this,W=N[U.id],Q=N._size;U._hasClipOnAxisFalse=!1;for(var ue=0;ueu*$?(fe=$,ie=fe*u):(ie=G,fe=ie/u),be=se*ie/G,Ae=he*fe/$,j=N.l+N.w*Q-ie/2,ee=N.t+N.h*(1-ue)-fe/2,U.x0=j,U.y0=ee,U.w=ie,U.h=fe,U.sum=J,U.xaxis={type:"linear",range:[Z+2*ne-J,J-Z-2*re],domain:[Q-be/2,Q+be/2],_id:"x"},a(U.xaxis,U.graphDiv._fullLayout),U.xaxis.setScale(),U.xaxis.isPtWithinRange=function(ze){return ze.a>=U.aaxis.range[0]&&ze.a<=U.aaxis.range[1]&&ze.b>=U.baxis.range[1]&&ze.b<=U.baxis.range[0]&&ze.c>=U.caxis.range[1]&&ze.c<=U.caxis.range[0]},U.yaxis={type:"linear",range:[Z,J-re-ne],domain:[ue-Ae/2,ue+Ae/2],_id:"y"},a(U.yaxis,U.graphDiv._fullLayout),U.yaxis.setScale(),U.yaxis.isPtWithinRange=function(){return!0};var Be=U.yaxis.domain[0],Ie=U.aaxis=i({},I.aaxis,{range:[Z,J-re-ne],side:"left",tickangle:(+I.aaxis.tickangle||0)-30,domain:[Be,Be+Ae*u],anchor:"free",position:0,_id:"y",_length:ie});a(Ie,U.graphDiv._fullLayout),Ie.setScale();var Ze=U.baxis=i({},I.baxis,{range:[J-Z-ne,re],side:"bottom",domain:U.xaxis.domain,anchor:"free",position:0,_id:"x",_length:ie});a(Ze,U.graphDiv._fullLayout),Ze.setScale();var at=U.caxis=i({},I.caxis,{range:[J-Z-re,ne],side:"right",tickangle:(+I.caxis.tickangle||0)+30,domain:[Be,Be+Ae*u],anchor:"free",position:0,_id:"y",_length:ie});a(at,U.graphDiv._fullLayout),at.setScale();var it="M"+j+","+(ee+fe)+"h"+ie+"l-"+ie/2+",-"+fe+"Z";U.clipDef.select("path").attr("d",it),U.layers.plotbg.select("path").attr("d",it);var et="M0,"+fe+"h"+ie+"l-"+ie/2+",-"+fe+"Z";U.clipDefRelative.select("path").attr("d",et);var lt=e(j,ee);U.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",lt),U.clipDefRelative.select("path").attr("transform",null);var Me=e(j-Ze._offset,ee+fe);U.layers.baxis.attr("transform",Me),U.layers.bgrid.attr("transform",Me);var ge=e(j+ie/2,ee)+"rotate(30)"+e(0,-Ie._offset);U.layers.aaxis.attr("transform",ge),U.layers.agrid.attr("transform",ge);var ce=e(j+ie/2,ee)+"rotate(-30)"+e(0,-at._offset);U.layers.caxis.attr("transform",ce),U.layers.cgrid.attr("transform",ce),U.drawAxes(!0),U.layers.aline.select("path").attr("d",Ie.showline?"M"+j+","+(ee+fe)+"l"+ie/2+",-"+fe:"M0,0").call(r.stroke,Ie.linecolor||"#000").style("stroke-width",(Ie.linewidth||0)+"px"),U.layers.bline.select("path").attr("d",Ze.showline?"M"+j+","+(ee+fe)+"h"+ie:"M0,0").call(r.stroke,Ze.linecolor||"#000").style("stroke-width",(Ze.linewidth||0)+"px"),U.layers.cline.select("path").attr("d",at.showline?"M"+(j+ie/2)+","+ee+"l"+ie/2+","+fe:"M0,0").call(r.stroke,at.linecolor||"#000").style("stroke-width",(at.linewidth||0)+"px"),U.graphDiv._context.staticPlot||U.initInteractions(),o.setClipUrl(U.layers.frontplot,U._hasClipOnAxisFalse?null:U.clipId,U.graphDiv)},d.drawAxes=function(I){var N=this,U=N.graphDiv,W=N.id.substr(7)+"title",Q=N.layers,ue=N.aaxis,se=N.baxis,he=N.caxis;if(N.drawAx(ue),N.drawAx(se),N.drawAx(he),I){var G=Math.max(ue.showticklabels?ue.tickfont.size/2:0,(he.showticklabels?he.tickfont.size*.75:0)+(he.ticks==="outside"?he.ticklen*.87:0)),$=(se.showticklabels?se.tickfont.size:0)+(se.ticks==="outside"?se.ticklen:0)+3;Q["a-title"]=l.draw(U,"a"+W,{propContainer:ue,propName:N.id+".aaxis.title",placeholder:t(U,"Click to enter Component A title"),attributes:{x:N.x0+N.w/2,y:N.y0-ue.title.font.size/3-G,"text-anchor":"middle"}}),Q["b-title"]=l.draw(U,"b"+W,{propContainer:se,propName:N.id+".baxis.title",placeholder:t(U,"Click to enter Component B title"),attributes:{x:N.x0-$,y:N.y0+N.h+se.title.font.size*.83+$,"text-anchor":"middle"}}),Q["c-title"]=l.draw(U,"c"+W,{propContainer:he,propName:N.id+".caxis.title",placeholder:t(U,"Click to enter Component C title"),attributes:{x:N.x0+N.w+$,y:N.y0+N.h+he.title.font.size*.83+$,"text-anchor":"middle"}})}},d.drawAx=function(I){var N=this,U=N.graphDiv,W=I._name,Q=W.charAt(0),ue=I._id,se=N.layers[W],he=30,G=Q+"tickLayout",$=y(I);N[G]!==$&&(se.selectAll("."+ue+"tick").remove(),N[G]=$),I.setScale();var J=s.calcTicks(I),Z=s.clipEnds(I,J),re=s.makeTransTickFn(I),ne=s.getTickSigns(I)[2],j=M.deg2rad(he),ee=ne*(I.linewidth||1)/2,ie=ne*I.ticklen,fe=N.w,be=N.h,Ae=Q==="b"?"M0,"+ee+"l"+Math.sin(j)*ie+","+Math.cos(j)*ie:"M"+ee+",0l"+Math.cos(j)*ie+","+-Math.sin(j)*ie,Be={a:"M0,0l"+be+",-"+fe/2,b:"M0,0l-"+fe/2+",-"+be,c:"M0,0l-"+be+","+fe/2}[Q];s.drawTicks(U,I,{vals:I.ticks==="inside"?Z:J,layer:se,path:Ae,transFn:re,crisp:!1}),s.drawGrid(U,I,{vals:Z,layer:N.layers[Q+"grid"],path:Be,transFn:re,crisp:!1}),s.drawLabels(U,I,{vals:J,layer:se,transFn:re,labelFns:s.makeLabelFns(I,0,he)})};function y(I){return I.ticks+String(I.ticklen)+String(I.showticklabels)}var f=m.MINZOOM/2+.87,P="m-0.87,.5h"+f+"v3h-"+(f+5.2)+"l"+(f/2+2.6)+",-"+(f*.87+4.5)+"l2.6,1.5l-"+f/2+","+f*.87+"Z",L="m0.87,.5h-"+f+"v3h"+(f+5.2)+"l-"+(f/2+2.6)+",-"+(f*.87+4.5)+"l-2.6,1.5l"+f/2+","+f*.87+"Z",z="m0,1l"+f/2+","+f*.87+"l2.6,-1.5l-"+(f/2+2.6)+",-"+(f*.87+4.5)+"l-"+(f/2+2.6)+","+(f*.87+4.5)+"l2.6,1.5l"+f/2+",-"+f*.87+"Z",F="m0.5,0.5h5v-2h-5v-5h-2v5h-5v2h5v5h2Z",B=!0;d.clearOutline=function(){E(this.dragOptions),S(this.dragOptions.gd)},d.initInteractions=function(){var I=this,N=I.layers.plotbg.select("path").node(),U=I.graphDiv,W=U._fullLayout._zoomlayer,Q,ue;this.dragOptions={element:N,gd:U,plotinfo:{id:I.id,domain:U._fullLayout[I.id].domain,xaxis:I.xaxis,yaxis:I.yaxis},subplot:I.id,prepFn:function(Me,ge,ce){I.dragOptions.xaxes=[I.xaxis],I.dragOptions.yaxes=[I.yaxis],Q=U._fullLayout._invScaleX,ue=U._fullLayout._invScaleY;var ze=I.dragOptions.dragmode=U._fullLayout.dragmode;p(ze)?I.dragOptions.minDrag=1:I.dragOptions.minDrag=void 0,ze==="zoom"?(I.dragOptions.moveFn=Ze,I.dragOptions.clickFn=fe,I.dragOptions.doneFn=at,be(Me,ge,ce)):ze==="pan"?(I.dragOptions.moveFn=et,I.dragOptions.clickFn=fe,I.dragOptions.doneFn=lt,it(),I.clearOutline(U)):(T(ze)||p(ze))&&_(Me,ge,ce,I.dragOptions,ze)}};var se,he,G,$,J,Z,re,ne,j,ee;function ie(Me){var ge={};return ge[I.id+".aaxis.min"]=Me.a,ge[I.id+".baxis.min"]=Me.b,ge[I.id+".caxis.min"]=Me.c,ge}function fe(Me,ge){var ce=U._fullLayout.clickmode;O(U),Me===2&&(U.emit("plotly_doubleclick",null),A.call("_guiRelayout",U,ie({a:0,b:0,c:0}))),ce.indexOf("select")>-1&&Me===1&&w(ge,U,[I.xaxis],[I.yaxis],I.id,I.dragOptions),ce.indexOf("event")>-1&&h.click(U,ge,I.id)}function be(Me,ge,ce){var ze=N.getBoundingClientRect();se=ge-ze.left,he=ce-ze.top,U._fullLayout._calcInverseTransform(U);var tt=U._fullLayout._invTransform,nt=M.apply3DTransform(tt)(se,he);se=nt[0],he=nt[1],G={a:I.aaxis.range[0],b:I.baxis.range[1],c:I.caxis.range[1]},J=G,$=I.aaxis.range[1]-G.a,Z=x(I.graphDiv._fullLayout[I.id].bgcolor).getLuminance(),re="M0,"+I.h+"L"+I.w/2+", 0L"+I.w+","+I.h+"Z",ne=!1,j=W.append("path").attr("class","zoombox").attr("transform",e(I.x0,I.y0)).style({fill:Z>.2?"rgba(0,0,0,0)":"rgba(255,255,255,0)","stroke-width":0}).attr("d",re),ee=W.append("path").attr("class","zoombox-corners").attr("transform",e(I.x0,I.y0)).style({fill:r.background,stroke:r.defaultLine,"stroke-width":1,opacity:0}).attr("d","M0,0Z"),I.clearOutline(U)}function Ae(Me,ge){return 1-ge/I.h}function Be(Me,ge){return 1-(Me+(I.h-ge)/Math.sqrt(3))/I.w}function Ie(Me,ge){return(Me-(I.h-ge)/Math.sqrt(3))/I.w}function Ze(Me,ge){var ce=se+Me*Q,ze=he+ge*ue,tt=Math.max(0,Math.min(1,Ae(se,he),Ae(ce,ze))),nt=Math.max(0,Math.min(1,Be(se,he),Be(ce,ze))),Qe=Math.max(0,Math.min(1,Ie(se,he),Ie(ce,ze))),Ct=(tt/2+Qe)*I.w,St=(1-tt/2-nt)*I.w,Ot=(Ct+St)/2,jt=St-Ct,ur=(1-tt)*I.h,ar=ur-jt/u;jt.2?"rgba(0,0,0,0.4)":"rgba(255,255,255,0.3)").duration(200),ee.transition().style("opacity",1).duration(200),ne=!0),U.emit("plotly_relayouting",ie(J))}function at(){O(U),J!==G&&(A.call("_guiRelayout",U,ie(J)),B&&U.data&&U._context.showTips&&(M.notifier(t(U,"Double-click to zoom back out"),"long"),B=!1))}function it(){G={a:I.aaxis.range[0],b:I.baxis.range[1],c:I.caxis.range[1]},J=G}function et(Me,ge){var ce=Me/I.xaxis._m,ze=ge/I.yaxis._m;J={a:G.a-ze,b:G.b+(ce+ze)/2,c:G.c-(ce-ze)/2};var tt=[J.a,J.b,J.c].sort(M.sorterAsc),nt={a:tt.indexOf(J.a),b:tt.indexOf(J.b),c:tt.indexOf(J.c)};tt[0]<0&&(tt[1]+tt[0]/2<0?(tt[2]+=tt[0]+tt[1],tt[0]=tt[1]=0):(tt[2]+=tt[0]/2,tt[1]+=tt[0]/2,tt[0]=0),J={a:tt[nt.a],b:tt[nt.b],c:tt[nt.c]},ge=(G.a-J.a)*I.yaxis._m,Me=(G.c-J.c-G.b+J.b)*I.xaxis._m);var Qe=e(I.x0+Me,I.y0+ge);I.plotContainer.selectAll(".scatterlayer,.maplayer").attr("transform",Qe);var Ct=e(-Me,-ge);I.clipDefRelative.select("path").attr("transform",Ct),I.aaxis.range=[J.a,I.sum-J.b-J.c],I.baxis.range=[I.sum-J.a-J.c,J.b],I.caxis.range=[I.sum-J.a-J.b,J.c],I.drawAxes(!1),I._hasClipOnAxisFalse&&I.plotContainer.select(".scatterlayer").selectAll(".trace").call(o.hideOutsideRangePoints,I),U.emit("plotly_relayouting",ie(J))}function lt(){A.call("_guiRelayout",U,ie(J))}N.onmousemove=function(Me){h.hover(U,Me,I.id),U._fullLayout._lasthover=N,U._fullLayout._hoversubplot=I.id},N.onmouseout=function(Me){U._dragging||c.unhover(U,Me)},c.init(this.dragOptions)};function O(I){g.select(I).selectAll(".zoombox,.js-zoombox-backdrop,.js-zoombox-menu,.zoombox-corners").remove()}}}),TM=Ye({"src/plots/ternary/layout_attributes.js"(X,H){"use strict";var g=Gf(),x=Wu().attributes,A=Vh(),M=Ou().overrideAll,e=Oo().extendFlat,t={title:{text:A.title.text,font:A.title.font},color:A.color,tickmode:A.minor.tickmode,nticks:e({},A.nticks,{dflt:6,min:1}),tick0:A.tick0,dtick:A.dtick,tickvals:A.tickvals,ticktext:A.ticktext,ticks:A.ticks,ticklen:A.ticklen,tickwidth:A.tickwidth,tickcolor:A.tickcolor,ticklabelstep:A.ticklabelstep,showticklabels:A.showticklabels,labelalias:A.labelalias,showtickprefix:A.showtickprefix,tickprefix:A.tickprefix,showticksuffix:A.showticksuffix,ticksuffix:A.ticksuffix,showexponent:A.showexponent,exponentformat:A.exponentformat,minexponent:A.minexponent,separatethousands:A.separatethousands,tickfont:A.tickfont,tickangle:A.tickangle,tickformat:A.tickformat,tickformatstops:A.tickformatstops,hoverformat:A.hoverformat,showline:e({},A.showline,{dflt:!0}),linecolor:A.linecolor,linewidth:A.linewidth,showgrid:e({},A.showgrid,{dflt:!0}),gridcolor:A.gridcolor,gridwidth:A.gridwidth,griddash:A.griddash,layer:A.layer,min:{valType:"number",dflt:0,min:0}},r=H.exports=M({domain:x({name:"ternary"}),bgcolor:{valType:"color",dflt:g.background},sum:{valType:"number",dflt:1,min:0},aaxis:t,baxis:t,caxis:t},"plot","from-root");r.uirevision={valType:"any",editType:"none"},r.aaxis.uirevision=r.baxis.uirevision=r.caxis.uirevision={valType:"any",editType:"none"}}}),ig=Ye({"src/plots/subplot_defaults.js"(X,H){"use strict";var g=ta(),x=cl(),A=Wu().defaults;H.exports=function(e,t,r,o){var a=o.type,i=o.attributes,n=o.handleDefaults,s=o.partition||"x",c=t._subplots[a],h=c.length,v=h&&c[0].replace(/\d+$/,""),p,T;function l(E,m){return g.coerce(p,T,i,E,m)}for(var _=0;_=_&&(b.min=0,d.min=0,u.min=0,h.aaxis&&delete h.aaxis.min,h.baxis&&delete h.baxis.min,h.caxis&&delete h.caxis.min)}function c(h,v,p,T){var l=i[v._name];function _(y,f){return A.coerce(h,v,l,y,f)}_("uirevision",T.uirevision),v.type="linear";var w=_("color"),S=w!==l.color.dflt?w:p.font.color,E=v._name,m=E.charAt(0).toUpperCase(),b="Component "+m,d=_("title.text",b);v._hovertitle=d===b?d:m,A.coerceFont(_,"title.font",p.font,{overrideDflt:{size:A.bigFont(p.font.size),color:S}}),_("min"),o(h,v,_,"linear"),t(h,v,_,"linear"),e(h,v,_,"linear",{noAutotickangles:!0,noTicklabelshift:!0,noTicklabelstandoff:!0}),r(h,v,_,{outerTicks:!0});var u=_("showticklabels");u&&(A.coerceFont(_,"tickfont",p.font,{overrideDflt:{color:S}}),_("tickangle"),_("tickformat")),a(h,v,_,{dfltColor:w,bgColor:p.bgColor,blend:60,showLine:!0,showGrid:!0,noZeroLine:!0,attributes:l}),_("hoverformat"),_("layer")}}}),S7=Ye({"src/plots/ternary/index.js"(X){"use strict";var H=T7(),g=jh().getSubplotCalcData,x=ta().counterRegex,A="ternary";X.name=A;var M=X.attr="subplot";X.idRoot=A,X.idRegex=X.attrRegex=x(A);var e=X.attributes={};e[M]={valType:"subplotid",dflt:"ternary",editType:"calc"},X.layoutAttributes=TM(),X.supplyLayoutDefaults=A7(),X.plot=function(r){for(var o=r._fullLayout,a=r.calcdata,i=o._subplots[A],n=0;n0){var E=r.xa,m=r.ya,b,d,u,y,f;h.orientation==="h"?(f=o,b="y",u=m,d="x",y=E):(f=a,b="x",u=E,d="y",y=m);var P=c[r.index];if(f>=P.span[0]&&f<=P.span[1]){var L=x.extendFlat({},r),z=y.c2p(f,!0),F=e.getKdeValue(P,h,f),B=e.getPositionOnKdePath(P,h,z),O=u._offset,I=u._length;L[b+"0"]=B[0],L[b+"1"]=B[1],L[d+"0"]=L[d+"1"]=z,L[d+"Label"]=d+": "+A.hoverLabelText(y,f,h[d+"hoverformat"])+", "+c[0].t.labels.kde+" "+F.toFixed(3);for(var N=0,U=0;U path").each(function(p){if(!p.isBlank){var T=v.marker;g.select(this).call(A.fill,p.mc||T.color).call(A.stroke,p.mlc||T.line.color).call(x.dashLine,T.line.dash,p.mlw||T.line.width).style("opacity",v.selectedpoints&&!p.selected?M:1)}}),r(h,v,a),h.selectAll(".regions").each(function(){g.select(this).selectAll("path").style("stroke-width",0).call(A.fill,v.connector.fillcolor)}),h.selectAll(".lines").each(function(){var p=v.connector.line;x.lineGroupStyle(g.select(this).selectAll("path"),p.width,p.color,p.dash)})})}H.exports={style:o}}}),H7=Ye({"src/traces/funnel/hover.js"(X,H){"use strict";var g=Fn().opacity,x=c1().hoverOnBars,A=ta().formatPercent;H.exports=function(t,r,o,a,i){var n=x(t,r,o,a,i);if(n){var s=n.cd,c=s[0].trace,h=c.orientation==="h",v=n.index,p=s[v],T=h?"x":"y";n[T+"LabelVal"]=p.s,n.percentInitial=p.begR,n.percentInitialLabel=A(p.begR,1),n.percentPrevious=p.difR,n.percentPreviousLabel=A(p.difR,1),n.percentTotal=p.sumR,n.percentTotalLabel=A(p.sumR,1);var l=p.hi||c.hoverinfo,_=[];if(l&&l!=="none"&&l!=="skip"){var w=l==="all",S=l.split("+"),E=function(m){return w||S.indexOf(m)!==-1};E("percent initial")&&_.push(n.percentInitialLabel+" of initial"),E("percent previous")&&_.push(n.percentPreviousLabel+" of previous"),E("percent total")&&_.push(n.percentTotalLabel+" of total")}return n.extraText=_.join("
"),n.color=M(c,p),[n]}};function M(e,t){var r=e.marker,o=t.mc||r.color,a=t.mlc||r.line.color,i=t.mlw||r.line.width;if(g(o))return o;if(g(a)&&i)return a}}}),G7=Ye({"src/traces/funnel/event_data.js"(X,H){"use strict";H.exports=function(x,A){return x.x="xVal"in A?A.xVal:A.x,x.y="yVal"in A?A.yVal:A.y,"percentInitial"in A&&(x.percentInitial=A.percentInitial),"percentPrevious"in A&&(x.percentPrevious=A.percentPrevious),"percentTotal"in A&&(x.percentTotal=A.percentTotal),A.xa&&(x.xaxis=A.xa),A.ya&&(x.yaxis=A.ya),x}}}),W7=Ye({"src/traces/funnel/index.js"(X,H){"use strict";H.exports={attributes:MM(),layoutAttributes:EM(),supplyDefaults:kM().supplyDefaults,crossTraceDefaults:kM().crossTraceDefaults,supplyLayoutDefaults:B7(),calc:U7(),crossTraceCalc:j7(),plot:V7(),style:q7().style,hoverPoints:H7(),eventData:G7(),selectPoints:f1(),moduleType:"trace",name:"funnel",basePlotModule:Pf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}}}),Z7=Ye({"lib/funnel.js"(X,H){"use strict";H.exports=W7()}}),X7=Ye({"src/traces/waterfall/constants.js"(X,H){"use strict";H.exports={eventDataKeys:["initial","delta","final"]}}}),CM=Ye({"src/traces/waterfall/attributes.js"(X,H){"use strict";var g=Sv(),x=Pc().line,A=Pl(),M=Cc().axisHoverFormat,e=xs().hovertemplateAttrs,t=xs().texttemplateAttrs,r=X7(),o=Oo().extendFlat,a=Fn();function i(n){return{marker:{color:o({},g.marker.color,{arrayOk:!1,editType:"style"}),line:{color:o({},g.marker.line.color,{arrayOk:!1,editType:"style"}),width:o({},g.marker.line.width,{arrayOk:!1,editType:"style"}),editType:"style"},editType:"style"},editType:"style"}}H.exports={measure:{valType:"data_array",dflt:[],editType:"calc"},base:{valType:"number",dflt:null,arrayOk:!1,editType:"calc"},x:g.x,x0:g.x0,dx:g.dx,y:g.y,y0:g.y0,dy:g.dy,xperiod:g.xperiod,yperiod:g.yperiod,xperiod0:g.xperiod0,yperiod0:g.yperiod0,xperiodalignment:g.xperiodalignment,yperiodalignment:g.yperiodalignment,xhoverformat:M("x"),yhoverformat:M("y"),hovertext:g.hovertext,hovertemplate:e({},{keys:r.eventDataKeys}),hoverinfo:o({},A.hoverinfo,{flags:["name","x","y","text","initial","delta","final"]}),textinfo:{valType:"flaglist",flags:["label","text","initial","delta","final"],extras:["none"],editType:"plot",arrayOk:!1},texttemplate:t({editType:"plot"},{keys:r.eventDataKeys.concat(["label"])}),text:g.text,textposition:g.textposition,insidetextanchor:g.insidetextanchor,textangle:g.textangle,textfont:g.textfont,insidetextfont:g.insidetextfont,outsidetextfont:g.outsidetextfont,constraintext:g.constraintext,cliponaxis:g.cliponaxis,orientation:g.orientation,offset:g.offset,width:g.width,increasing:i("increasing"),decreasing:i("decreasing"),totals:i("intermediate sums and total"),connector:{line:{color:o({},x.color,{dflt:a.defaultLine}),width:o({},x.width,{editType:"plot"}),dash:x.dash,editType:"plot"},mode:{valType:"enumerated",values:["spanning","between"],dflt:"between",editType:"plot"},visible:{valType:"boolean",dflt:!0,editType:"plot"},editType:"plot"},offsetgroup:g.offsetgroup,alignmentgroup:g.alignmentgroup,zorder:g.zorder}}}),LM=Ye({"src/traces/waterfall/layout_attributes.js"(X,H){"use strict";H.exports={waterfallmode:{valType:"enumerated",values:["group","overlay"],dflt:"group",editType:"calc"},waterfallgap:{valType:"number",min:0,max:1,editType:"calc"},waterfallgroupgap:{valType:"number",min:0,max:1,dflt:0,editType:"calc"}}}}),p1=Ye({"src/constants/delta.js"(X,H){"use strict";H.exports={INCREASING:{COLOR:"#3D9970",SYMBOL:"\u25B2"},DECREASING:{COLOR:"#FF4136",SYMBOL:"\u25BC"}}}}),PM=Ye({"src/traces/waterfall/defaults.js"(X,H){"use strict";var g=ta(),x=Jg(),A=gd().handleText,M=i1(),e=Qd(),t=CM(),r=Fn(),o=p1(),a=o.INCREASING.COLOR,i=o.DECREASING.COLOR,n="#4499FF";function s(v,p,T){v(p+".marker.color",T),v(p+".marker.line.color",r.defaultLine),v(p+".marker.line.width")}function c(v,p,T,l){function _(b,d){return g.coerce(v,p,t,b,d)}var w=M(v,p,l,_);if(!w){p.visible=!1;return}e(v,p,l,_),_("xhoverformat"),_("yhoverformat"),_("measure"),_("orientation",p.x&&!p.y?"h":"v"),_("base"),_("offset"),_("width"),_("text"),_("hovertext"),_("hovertemplate");var S=_("textposition");A(v,p,l,_,S,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!0,moduleHasCliponaxis:!0,moduleHasTextangle:!0,moduleHasInsideanchor:!0}),p.textposition!=="none"&&(_("texttemplate"),p.texttemplate||_("textinfo")),s(_,"increasing",a),s(_,"decreasing",i),s(_,"totals",n);var E=_("connector.visible");if(E){_("connector.mode");var m=_("connector.line.width");m&&(_("connector.line.color"),_("connector.line.dash"))}_("zorder")}function h(v,p){var T,l;function _(S){return g.coerce(l._input,l,t,S)}if(p.waterfallmode==="group")for(var w=0;w0&&(_?f+="M"+u[0]+","+y[1]+"V"+y[0]:f+="M"+u[1]+","+y[0]+"H"+u[0]),w!=="between"&&(m.isSum||b path").each(function(p){if(!p.isBlank){var T=v[p.dir].marker;g.select(this).call(A.fill,T.color).call(A.stroke,T.line.color).call(x.dashLine,T.line.dash,T.line.width).style("opacity",v.selectedpoints&&!p.selected?M:1)}}),r(h,v,a),h.selectAll(".lines").each(function(){var p=v.connector.line;x.lineGroupStyle(g.select(this).selectAll("path"),p.width,p.color,p.dash)})})}H.exports={style:o}}}),e4=Ye({"src/traces/waterfall/hover.js"(X,H){"use strict";var g=Co().hoverLabelText,x=Fn().opacity,A=c1().hoverOnBars,M=p1(),e={increasing:M.INCREASING.SYMBOL,decreasing:M.DECREASING.SYMBOL};H.exports=function(o,a,i,n,s){var c=A(o,a,i,n,s);if(!c)return;var h=c.cd,v=h[0].trace,p=v.orientation==="h",T=p?"x":"y",l=p?o.xa:o.ya;function _(P){return g(l,P,v[T+"hoverformat"])}var w=c.index,S=h[w],E=S.isSum?S.b+S.s:S.rawS;c.initial=S.b+S.s-E,c.delta=E,c.final=c.initial+c.delta;var m=_(Math.abs(c.delta));c.deltaLabel=E<0?"("+m+")":m,c.finalLabel=_(c.final),c.initialLabel=_(c.initial);var b=S.hi||v.hoverinfo,d=[];if(b&&b!=="none"&&b!=="skip"){var u=b==="all",y=b.split("+"),f=function(P){return u||y.indexOf(P)!==-1};S.isSum||(f("final")&&(p?!f("x"):!f("y"))&&d.push(c.finalLabel),f("delta")&&(E<0?d.push(c.deltaLabel+" "+e.decreasing):d.push(c.deltaLabel+" "+e.increasing)),f("initial")&&d.push("Initial: "+c.initialLabel))}return d.length&&(c.extraText=d.join("
")),c.color=t(v,S),[c]};function t(r,o){var a=r[o.dir].marker,i=a.color,n=a.line.color,s=a.line.width;if(x(i))return i;if(x(n)&&s)return n}}}),t4=Ye({"src/traces/waterfall/event_data.js"(X,H){"use strict";H.exports=function(x,A){return x.x="xVal"in A?A.xVal:A.x,x.y="yVal"in A?A.yVal:A.y,"initial"in A&&(x.initial=A.initial),"delta"in A&&(x.delta=A.delta),"final"in A&&(x.final=A.final),A.xa&&(x.xaxis=A.xa),A.ya&&(x.yaxis=A.ya),x}}}),r4=Ye({"src/traces/waterfall/index.js"(X,H){"use strict";H.exports={attributes:CM(),layoutAttributes:LM(),supplyDefaults:PM().supplyDefaults,crossTraceDefaults:PM().crossTraceDefaults,supplyLayoutDefaults:Y7(),calc:K7(),crossTraceCalc:J7(),plot:$7(),style:Q7().style,hoverPoints:e4(),eventData:t4(),selectPoints:f1(),moduleType:"trace",name:"waterfall",basePlotModule:Pf(),categories:["bar-like","cartesian","svg","oriented","showLegend","zoomScale"],meta:{}}}}),a4=Ye({"lib/waterfall.js"(X,H){"use strict";H.exports=r4()}}),d1=Ye({"src/traces/image/constants.js"(X,H){"use strict";H.exports={colormodel:{rgb:{min:[0,0,0],max:[255,255,255],fmt:function(g){return g.slice(0,3)},suffix:["","",""]},rgba:{min:[0,0,0,0],max:[255,255,255,1],fmt:function(g){return g.slice(0,4)},suffix:["","","",""]},rgba256:{colormodel:"rgba",zminDflt:[0,0,0,0],zmaxDflt:[255,255,255,255],min:[0,0,0,0],max:[255,255,255,1],fmt:function(g){return g.slice(0,4)},suffix:["","","",""]},hsl:{min:[0,0,0],max:[360,100,100],fmt:function(g){var x=g.slice(0,3);return x[1]=x[1]+"%",x[2]=x[2]+"%",x},suffix:["\xB0","%","%"]},hsla:{min:[0,0,0,0],max:[360,100,100,1],fmt:function(g){var x=g.slice(0,4);return x[1]=x[1]+"%",x[2]=x[2]+"%",x},suffix:["\xB0","%","%",""]}}}}}),IM=Ye({"src/traces/image/attributes.js"(X,H){"use strict";var g=Pl(),x=Pc().zorder,A=xs().hovertemplateAttrs,M=Oo().extendFlat,e=d1().colormodel,t=["rgb","rgba","rgba256","hsl","hsla"],r=[],o=[];for(i=0;i0)throw new Error("Invalid string. Length must be a multiple of 4");var v=c.indexOf("=");v===-1&&(v=h);var p=v===h?0:4-v%4;return[v,p]}function r(c){var h=t(c),v=h[0],p=h[1];return(v+p)*3/4-p}function o(c,h,v){return(h+v)*3/4-v}function a(c){var h,v=t(c),p=v[0],T=v[1],l=new x(o(c,p,T)),_=0,w=T>0?p-4:p,S;for(S=0;S>16&255,l[_++]=h>>8&255,l[_++]=h&255;return T===2&&(h=g[c.charCodeAt(S)]<<2|g[c.charCodeAt(S+1)]>>4,l[_++]=h&255),T===1&&(h=g[c.charCodeAt(S)]<<10|g[c.charCodeAt(S+1)]<<4|g[c.charCodeAt(S+2)]>>2,l[_++]=h>>8&255,l[_++]=h&255),l}function i(c){return H[c>>18&63]+H[c>>12&63]+H[c>>6&63]+H[c&63]}function n(c,h,v){for(var p,T=[],l=h;lw?w:_+l));return p===1?(h=c[v-1],T.push(H[h>>2]+H[h<<4&63]+"==")):p===2&&(h=(c[v-2]<<8)+c[v-1],T.push(H[h>>10]+H[h>>4&63]+H[h<<2&63]+"=")),T.join("")}}}),o4=Ye({"node_modules/ieee754/index.js"(X){X.read=function(H,g,x,A,M){var e,t,r=M*8-A-1,o=(1<>1,i=-7,n=x?M-1:0,s=x?-1:1,c=H[g+n];for(n+=s,e=c&(1<<-i)-1,c>>=-i,i+=r;i>0;e=e*256+H[g+n],n+=s,i-=8);for(t=e&(1<<-i)-1,e>>=-i,i+=A;i>0;t=t*256+H[g+n],n+=s,i-=8);if(e===0)e=1-a;else{if(e===o)return t?NaN:(c?-1:1)*(1/0);t=t+Math.pow(2,A),e=e-a}return(c?-1:1)*t*Math.pow(2,e-A)},X.write=function(H,g,x,A,M,e){var t,r,o,a=e*8-M-1,i=(1<>1,s=M===23?Math.pow(2,-24)-Math.pow(2,-77):0,c=A?0:e-1,h=A?1:-1,v=g<0||g===0&&1/g<0?1:0;for(g=Math.abs(g),isNaN(g)||g===1/0?(r=isNaN(g)?1:0,t=i):(t=Math.floor(Math.log(g)/Math.LN2),g*(o=Math.pow(2,-t))<1&&(t--,o*=2),t+n>=1?g+=s/o:g+=s*Math.pow(2,1-n),g*o>=2&&(t++,o/=2),t+n>=i?(r=0,t=i):t+n>=1?(r=(g*o-1)*Math.pow(2,M),t=t+n):(r=g*Math.pow(2,n-1)*Math.pow(2,M),t=0));M>=8;H[x+c]=r&255,c+=h,r/=256,M-=8);for(t=t<0;H[x+c]=t&255,c+=h,t/=256,a-=8);H[x+c-h]|=v*128}}}),t0=Ye({"node_modules/buffer/index.js"(X){"use strict";var H=n4(),g=o4(),x=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;X.Buffer=t,X.SlowBuffer=T,X.INSPECT_MAX_BYTES=50;var A=2147483647;X.kMaxLength=A,t.TYPED_ARRAY_SUPPORT=M(),!t.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function M(){try{let Me=new Uint8Array(1),ge={foo:function(){return 42}};return Object.setPrototypeOf(ge,Uint8Array.prototype),Object.setPrototypeOf(Me,ge),Me.foo()===42}catch{return!1}}Object.defineProperty(t.prototype,"parent",{enumerable:!0,get:function(){if(t.isBuffer(this))return this.buffer}}),Object.defineProperty(t.prototype,"offset",{enumerable:!0,get:function(){if(t.isBuffer(this))return this.byteOffset}});function e(Me){if(Me>A)throw new RangeError('The value "'+Me+'" is invalid for option "size"');let ge=new Uint8Array(Me);return Object.setPrototypeOf(ge,t.prototype),ge}function t(Me,ge,ce){if(typeof Me=="number"){if(typeof ge=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return i(Me)}return r(Me,ge,ce)}t.poolSize=8192;function r(Me,ge,ce){if(typeof Me=="string")return n(Me,ge);if(ArrayBuffer.isView(Me))return c(Me);if(Me==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof Me);if(Ze(Me,ArrayBuffer)||Me&&Ze(Me.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Ze(Me,SharedArrayBuffer)||Me&&Ze(Me.buffer,SharedArrayBuffer)))return h(Me,ge,ce);if(typeof Me=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let ze=Me.valueOf&&Me.valueOf();if(ze!=null&&ze!==Me)return t.from(ze,ge,ce);let tt=v(Me);if(tt)return tt;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof Me[Symbol.toPrimitive]=="function")return t.from(Me[Symbol.toPrimitive]("string"),ge,ce);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof Me)}t.from=function(Me,ge,ce){return r(Me,ge,ce)},Object.setPrototypeOf(t.prototype,Uint8Array.prototype),Object.setPrototypeOf(t,Uint8Array);function o(Me){if(typeof Me!="number")throw new TypeError('"size" argument must be of type number');if(Me<0)throw new RangeError('The value "'+Me+'" is invalid for option "size"')}function a(Me,ge,ce){return o(Me),Me<=0?e(Me):ge!==void 0?typeof ce=="string"?e(Me).fill(ge,ce):e(Me).fill(ge):e(Me)}t.alloc=function(Me,ge,ce){return a(Me,ge,ce)};function i(Me){return o(Me),e(Me<0?0:p(Me)|0)}t.allocUnsafe=function(Me){return i(Me)},t.allocUnsafeSlow=function(Me){return i(Me)};function n(Me,ge){if((typeof ge!="string"||ge==="")&&(ge="utf8"),!t.isEncoding(ge))throw new TypeError("Unknown encoding: "+ge);let ce=l(Me,ge)|0,ze=e(ce),tt=ze.write(Me,ge);return tt!==ce&&(ze=ze.slice(0,tt)),ze}function s(Me){let ge=Me.length<0?0:p(Me.length)|0,ce=e(ge);for(let ze=0;ze=A)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+A.toString(16)+" bytes");return Me|0}function T(Me){return+Me!=Me&&(Me=0),t.alloc(+Me)}t.isBuffer=function(ge){return ge!=null&&ge._isBuffer===!0&&ge!==t.prototype},t.compare=function(ge,ce){if(Ze(ge,Uint8Array)&&(ge=t.from(ge,ge.offset,ge.byteLength)),Ze(ce,Uint8Array)&&(ce=t.from(ce,ce.offset,ce.byteLength)),!t.isBuffer(ge)||!t.isBuffer(ce))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(ge===ce)return 0;let ze=ge.length,tt=ce.length;for(let nt=0,Qe=Math.min(ze,tt);nttt.length?(t.isBuffer(Qe)||(Qe=t.from(Qe)),Qe.copy(tt,nt)):Uint8Array.prototype.set.call(tt,Qe,nt);else if(t.isBuffer(Qe))Qe.copy(tt,nt);else throw new TypeError('"list" argument must be an Array of Buffers');nt+=Qe.length}return tt};function l(Me,ge){if(t.isBuffer(Me))return Me.length;if(ArrayBuffer.isView(Me)||Ze(Me,ArrayBuffer))return Me.byteLength;if(typeof Me!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof Me);let ce=Me.length,ze=arguments.length>2&&arguments[2]===!0;if(!ze&&ce===0)return 0;let tt=!1;for(;;)switch(ge){case"ascii":case"latin1":case"binary":return ce;case"utf8":case"utf-8":return fe(Me).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ce*2;case"hex":return ce>>>1;case"base64":return Be(Me).length;default:if(tt)return ze?-1:fe(Me).length;ge=(""+ge).toLowerCase(),tt=!0}}t.byteLength=l;function _(Me,ge,ce){let ze=!1;if((ge===void 0||ge<0)&&(ge=0),ge>this.length||((ce===void 0||ce>this.length)&&(ce=this.length),ce<=0)||(ce>>>=0,ge>>>=0,ce<=ge))return"";for(Me||(Me="utf8");;)switch(Me){case"hex":return O(this,ge,ce);case"utf8":case"utf-8":return P(this,ge,ce);case"ascii":return F(this,ge,ce);case"latin1":case"binary":return B(this,ge,ce);case"base64":return f(this,ge,ce);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,ge,ce);default:if(ze)throw new TypeError("Unknown encoding: "+Me);Me=(Me+"").toLowerCase(),ze=!0}}t.prototype._isBuffer=!0;function w(Me,ge,ce){let ze=Me[ge];Me[ge]=Me[ce],Me[ce]=ze}t.prototype.swap16=function(){let ge=this.length;if(ge%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let ce=0;cece&&(ge+=" ... "),""},x&&(t.prototype[x]=t.prototype.inspect),t.prototype.compare=function(ge,ce,ze,tt,nt){if(Ze(ge,Uint8Array)&&(ge=t.from(ge,ge.offset,ge.byteLength)),!t.isBuffer(ge))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof ge);if(ce===void 0&&(ce=0),ze===void 0&&(ze=ge?ge.length:0),tt===void 0&&(tt=0),nt===void 0&&(nt=this.length),ce<0||ze>ge.length||tt<0||nt>this.length)throw new RangeError("out of range index");if(tt>=nt&&ce>=ze)return 0;if(tt>=nt)return-1;if(ce>=ze)return 1;if(ce>>>=0,ze>>>=0,tt>>>=0,nt>>>=0,this===ge)return 0;let Qe=nt-tt,Ct=ze-ce,St=Math.min(Qe,Ct),Ot=this.slice(tt,nt),jt=ge.slice(ce,ze);for(let ur=0;ur2147483647?ce=2147483647:ce<-2147483648&&(ce=-2147483648),ce=+ce,at(ce)&&(ce=tt?0:Me.length-1),ce<0&&(ce=Me.length+ce),ce>=Me.length){if(tt)return-1;ce=Me.length-1}else if(ce<0)if(tt)ce=0;else return-1;if(typeof ge=="string"&&(ge=t.from(ge,ze)),t.isBuffer(ge))return ge.length===0?-1:E(Me,ge,ce,ze,tt);if(typeof ge=="number")return ge=ge&255,typeof Uint8Array.prototype.indexOf=="function"?tt?Uint8Array.prototype.indexOf.call(Me,ge,ce):Uint8Array.prototype.lastIndexOf.call(Me,ge,ce):E(Me,[ge],ce,ze,tt);throw new TypeError("val must be string, number or Buffer")}function E(Me,ge,ce,ze,tt){let nt=1,Qe=Me.length,Ct=ge.length;if(ze!==void 0&&(ze=String(ze).toLowerCase(),ze==="ucs2"||ze==="ucs-2"||ze==="utf16le"||ze==="utf-16le")){if(Me.length<2||ge.length<2)return-1;nt=2,Qe/=2,Ct/=2,ce/=2}function St(jt,ur){return nt===1?jt[ur]:jt.readUInt16BE(ur*nt)}let Ot;if(tt){let jt=-1;for(Ot=ce;OtQe&&(ce=Qe-Ct),Ot=ce;Ot>=0;Ot--){let jt=!0;for(let ur=0;urtt&&(ze=tt)):ze=tt;let nt=ge.length;ze>nt/2&&(ze=nt/2);let Qe;for(Qe=0;Qe>>0,isFinite(ze)?(ze=ze>>>0,tt===void 0&&(tt="utf8")):(tt=ze,ze=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let nt=this.length-ce;if((ze===void 0||ze>nt)&&(ze=nt),ge.length>0&&(ze<0||ce<0)||ce>this.length)throw new RangeError("Attempt to write outside buffer bounds");tt||(tt="utf8");let Qe=!1;for(;;)switch(tt){case"hex":return m(this,ge,ce,ze);case"utf8":case"utf-8":return b(this,ge,ce,ze);case"ascii":case"latin1":case"binary":return d(this,ge,ce,ze);case"base64":return u(this,ge,ce,ze);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return y(this,ge,ce,ze);default:if(Qe)throw new TypeError("Unknown encoding: "+tt);tt=(""+tt).toLowerCase(),Qe=!0}},t.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function f(Me,ge,ce){return ge===0&&ce===Me.length?H.fromByteArray(Me):H.fromByteArray(Me.slice(ge,ce))}function P(Me,ge,ce){ce=Math.min(Me.length,ce);let ze=[],tt=ge;for(;tt239?4:nt>223?3:nt>191?2:1;if(tt+Ct<=ce){let St,Ot,jt,ur;switch(Ct){case 1:nt<128&&(Qe=nt);break;case 2:St=Me[tt+1],(St&192)===128&&(ur=(nt&31)<<6|St&63,ur>127&&(Qe=ur));break;case 3:St=Me[tt+1],Ot=Me[tt+2],(St&192)===128&&(Ot&192)===128&&(ur=(nt&15)<<12|(St&63)<<6|Ot&63,ur>2047&&(ur<55296||ur>57343)&&(Qe=ur));break;case 4:St=Me[tt+1],Ot=Me[tt+2],jt=Me[tt+3],(St&192)===128&&(Ot&192)===128&&(jt&192)===128&&(ur=(nt&15)<<18|(St&63)<<12|(Ot&63)<<6|jt&63,ur>65535&&ur<1114112&&(Qe=ur))}}Qe===null?(Qe=65533,Ct=1):Qe>65535&&(Qe-=65536,ze.push(Qe>>>10&1023|55296),Qe=56320|Qe&1023),ze.push(Qe),tt+=Ct}return z(ze)}var L=4096;function z(Me){let ge=Me.length;if(ge<=L)return String.fromCharCode.apply(String,Me);let ce="",ze=0;for(;zeze)&&(ce=ze);let tt="";for(let nt=ge;ntze&&(ge=ze),ce<0?(ce+=ze,ce<0&&(ce=0)):ce>ze&&(ce=ze),cece)throw new RangeError("Trying to access beyond buffer length")}t.prototype.readUintLE=t.prototype.readUIntLE=function(ge,ce,ze){ge=ge>>>0,ce=ce>>>0,ze||N(ge,ce,this.length);let tt=this[ge],nt=1,Qe=0;for(;++Qe>>0,ce=ce>>>0,ze||N(ge,ce,this.length);let tt=this[ge+--ce],nt=1;for(;ce>0&&(nt*=256);)tt+=this[ge+--ce]*nt;return tt},t.prototype.readUint8=t.prototype.readUInt8=function(ge,ce){return ge=ge>>>0,ce||N(ge,1,this.length),this[ge]},t.prototype.readUint16LE=t.prototype.readUInt16LE=function(ge,ce){return ge=ge>>>0,ce||N(ge,2,this.length),this[ge]|this[ge+1]<<8},t.prototype.readUint16BE=t.prototype.readUInt16BE=function(ge,ce){return ge=ge>>>0,ce||N(ge,2,this.length),this[ge]<<8|this[ge+1]},t.prototype.readUint32LE=t.prototype.readUInt32LE=function(ge,ce){return ge=ge>>>0,ce||N(ge,4,this.length),(this[ge]|this[ge+1]<<8|this[ge+2]<<16)+this[ge+3]*16777216},t.prototype.readUint32BE=t.prototype.readUInt32BE=function(ge,ce){return ge=ge>>>0,ce||N(ge,4,this.length),this[ge]*16777216+(this[ge+1]<<16|this[ge+2]<<8|this[ge+3])},t.prototype.readBigUInt64LE=et(function(ge){ge=ge>>>0,ne(ge,"offset");let ce=this[ge],ze=this[ge+7];(ce===void 0||ze===void 0)&&j(ge,this.length-8);let tt=ce+this[++ge]*2**8+this[++ge]*2**16+this[++ge]*2**24,nt=this[++ge]+this[++ge]*2**8+this[++ge]*2**16+ze*2**24;return BigInt(tt)+(BigInt(nt)<>>0,ne(ge,"offset");let ce=this[ge],ze=this[ge+7];(ce===void 0||ze===void 0)&&j(ge,this.length-8);let tt=ce*2**24+this[++ge]*2**16+this[++ge]*2**8+this[++ge],nt=this[++ge]*2**24+this[++ge]*2**16+this[++ge]*2**8+ze;return(BigInt(tt)<>>0,ce=ce>>>0,ze||N(ge,ce,this.length);let tt=this[ge],nt=1,Qe=0;for(;++Qe=nt&&(tt-=Math.pow(2,8*ce)),tt},t.prototype.readIntBE=function(ge,ce,ze){ge=ge>>>0,ce=ce>>>0,ze||N(ge,ce,this.length);let tt=ce,nt=1,Qe=this[ge+--tt];for(;tt>0&&(nt*=256);)Qe+=this[ge+--tt]*nt;return nt*=128,Qe>=nt&&(Qe-=Math.pow(2,8*ce)),Qe},t.prototype.readInt8=function(ge,ce){return ge=ge>>>0,ce||N(ge,1,this.length),this[ge]&128?(255-this[ge]+1)*-1:this[ge]},t.prototype.readInt16LE=function(ge,ce){ge=ge>>>0,ce||N(ge,2,this.length);let ze=this[ge]|this[ge+1]<<8;return ze&32768?ze|4294901760:ze},t.prototype.readInt16BE=function(ge,ce){ge=ge>>>0,ce||N(ge,2,this.length);let ze=this[ge+1]|this[ge]<<8;return ze&32768?ze|4294901760:ze},t.prototype.readInt32LE=function(ge,ce){return ge=ge>>>0,ce||N(ge,4,this.length),this[ge]|this[ge+1]<<8|this[ge+2]<<16|this[ge+3]<<24},t.prototype.readInt32BE=function(ge,ce){return ge=ge>>>0,ce||N(ge,4,this.length),this[ge]<<24|this[ge+1]<<16|this[ge+2]<<8|this[ge+3]},t.prototype.readBigInt64LE=et(function(ge){ge=ge>>>0,ne(ge,"offset");let ce=this[ge],ze=this[ge+7];(ce===void 0||ze===void 0)&&j(ge,this.length-8);let tt=this[ge+4]+this[ge+5]*2**8+this[ge+6]*2**16+(ze<<24);return(BigInt(tt)<>>0,ne(ge,"offset");let ce=this[ge],ze=this[ge+7];(ce===void 0||ze===void 0)&&j(ge,this.length-8);let tt=(ce<<24)+this[++ge]*2**16+this[++ge]*2**8+this[++ge];return(BigInt(tt)<>>0,ce||N(ge,4,this.length),g.read(this,ge,!0,23,4)},t.prototype.readFloatBE=function(ge,ce){return ge=ge>>>0,ce||N(ge,4,this.length),g.read(this,ge,!1,23,4)},t.prototype.readDoubleLE=function(ge,ce){return ge=ge>>>0,ce||N(ge,8,this.length),g.read(this,ge,!0,52,8)},t.prototype.readDoubleBE=function(ge,ce){return ge=ge>>>0,ce||N(ge,8,this.length),g.read(this,ge,!1,52,8)};function U(Me,ge,ce,ze,tt,nt){if(!t.isBuffer(Me))throw new TypeError('"buffer" argument must be a Buffer instance');if(ge>tt||geMe.length)throw new RangeError("Index out of range")}t.prototype.writeUintLE=t.prototype.writeUIntLE=function(ge,ce,ze,tt){if(ge=+ge,ce=ce>>>0,ze=ze>>>0,!tt){let Ct=Math.pow(2,8*ze)-1;U(this,ge,ce,ze,Ct,0)}let nt=1,Qe=0;for(this[ce]=ge&255;++Qe>>0,ze=ze>>>0,!tt){let Ct=Math.pow(2,8*ze)-1;U(this,ge,ce,ze,Ct,0)}let nt=ze-1,Qe=1;for(this[ce+nt]=ge&255;--nt>=0&&(Qe*=256);)this[ce+nt]=ge/Qe&255;return ce+ze},t.prototype.writeUint8=t.prototype.writeUInt8=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,1,255,0),this[ce]=ge&255,ce+1},t.prototype.writeUint16LE=t.prototype.writeUInt16LE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,2,65535,0),this[ce]=ge&255,this[ce+1]=ge>>>8,ce+2},t.prototype.writeUint16BE=t.prototype.writeUInt16BE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,2,65535,0),this[ce]=ge>>>8,this[ce+1]=ge&255,ce+2},t.prototype.writeUint32LE=t.prototype.writeUInt32LE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,4,4294967295,0),this[ce+3]=ge>>>24,this[ce+2]=ge>>>16,this[ce+1]=ge>>>8,this[ce]=ge&255,ce+4},t.prototype.writeUint32BE=t.prototype.writeUInt32BE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,4,4294967295,0),this[ce]=ge>>>24,this[ce+1]=ge>>>16,this[ce+2]=ge>>>8,this[ce+3]=ge&255,ce+4};function W(Me,ge,ce,ze,tt){re(ge,ze,tt,Me,ce,7);let nt=Number(ge&BigInt(4294967295));Me[ce++]=nt,nt=nt>>8,Me[ce++]=nt,nt=nt>>8,Me[ce++]=nt,nt=nt>>8,Me[ce++]=nt;let Qe=Number(ge>>BigInt(32)&BigInt(4294967295));return Me[ce++]=Qe,Qe=Qe>>8,Me[ce++]=Qe,Qe=Qe>>8,Me[ce++]=Qe,Qe=Qe>>8,Me[ce++]=Qe,ce}function Q(Me,ge,ce,ze,tt){re(ge,ze,tt,Me,ce,7);let nt=Number(ge&BigInt(4294967295));Me[ce+7]=nt,nt=nt>>8,Me[ce+6]=nt,nt=nt>>8,Me[ce+5]=nt,nt=nt>>8,Me[ce+4]=nt;let Qe=Number(ge>>BigInt(32)&BigInt(4294967295));return Me[ce+3]=Qe,Qe=Qe>>8,Me[ce+2]=Qe,Qe=Qe>>8,Me[ce+1]=Qe,Qe=Qe>>8,Me[ce]=Qe,ce+8}t.prototype.writeBigUInt64LE=et(function(ge,ce=0){return W(this,ge,ce,BigInt(0),BigInt("0xffffffffffffffff"))}),t.prototype.writeBigUInt64BE=et(function(ge,ce=0){return Q(this,ge,ce,BigInt(0),BigInt("0xffffffffffffffff"))}),t.prototype.writeIntLE=function(ge,ce,ze,tt){if(ge=+ge,ce=ce>>>0,!tt){let St=Math.pow(2,8*ze-1);U(this,ge,ce,ze,St-1,-St)}let nt=0,Qe=1,Ct=0;for(this[ce]=ge&255;++nt>0)-Ct&255;return ce+ze},t.prototype.writeIntBE=function(ge,ce,ze,tt){if(ge=+ge,ce=ce>>>0,!tt){let St=Math.pow(2,8*ze-1);U(this,ge,ce,ze,St-1,-St)}let nt=ze-1,Qe=1,Ct=0;for(this[ce+nt]=ge&255;--nt>=0&&(Qe*=256);)ge<0&&Ct===0&&this[ce+nt+1]!==0&&(Ct=1),this[ce+nt]=(ge/Qe>>0)-Ct&255;return ce+ze},t.prototype.writeInt8=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,1,127,-128),ge<0&&(ge=255+ge+1),this[ce]=ge&255,ce+1},t.prototype.writeInt16LE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,2,32767,-32768),this[ce]=ge&255,this[ce+1]=ge>>>8,ce+2},t.prototype.writeInt16BE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,2,32767,-32768),this[ce]=ge>>>8,this[ce+1]=ge&255,ce+2},t.prototype.writeInt32LE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,4,2147483647,-2147483648),this[ce]=ge&255,this[ce+1]=ge>>>8,this[ce+2]=ge>>>16,this[ce+3]=ge>>>24,ce+4},t.prototype.writeInt32BE=function(ge,ce,ze){return ge=+ge,ce=ce>>>0,ze||U(this,ge,ce,4,2147483647,-2147483648),ge<0&&(ge=4294967295+ge+1),this[ce]=ge>>>24,this[ce+1]=ge>>>16,this[ce+2]=ge>>>8,this[ce+3]=ge&255,ce+4},t.prototype.writeBigInt64LE=et(function(ge,ce=0){return W(this,ge,ce,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),t.prototype.writeBigInt64BE=et(function(ge,ce=0){return Q(this,ge,ce,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ue(Me,ge,ce,ze,tt,nt){if(ce+ze>Me.length)throw new RangeError("Index out of range");if(ce<0)throw new RangeError("Index out of range")}function se(Me,ge,ce,ze,tt){return ge=+ge,ce=ce>>>0,tt||ue(Me,ge,ce,4,34028234663852886e22,-34028234663852886e22),g.write(Me,ge,ce,ze,23,4),ce+4}t.prototype.writeFloatLE=function(ge,ce,ze){return se(this,ge,ce,!0,ze)},t.prototype.writeFloatBE=function(ge,ce,ze){return se(this,ge,ce,!1,ze)};function he(Me,ge,ce,ze,tt){return ge=+ge,ce=ce>>>0,tt||ue(Me,ge,ce,8,17976931348623157e292,-17976931348623157e292),g.write(Me,ge,ce,ze,52,8),ce+8}t.prototype.writeDoubleLE=function(ge,ce,ze){return he(this,ge,ce,!0,ze)},t.prototype.writeDoubleBE=function(ge,ce,ze){return he(this,ge,ce,!1,ze)},t.prototype.copy=function(ge,ce,ze,tt){if(!t.isBuffer(ge))throw new TypeError("argument should be a Buffer");if(ze||(ze=0),!tt&&tt!==0&&(tt=this.length),ce>=ge.length&&(ce=ge.length),ce||(ce=0),tt>0&&tt=this.length)throw new RangeError("Index out of range");if(tt<0)throw new RangeError("sourceEnd out of bounds");tt>this.length&&(tt=this.length),ge.length-ce>>0,ze=ze===void 0?this.length:ze>>>0,ge||(ge=0);let nt;if(typeof ge=="number")for(nt=ce;nt2**32?tt=J(String(ce)):typeof ce=="bigint"&&(tt=String(ce),(ce>BigInt(2)**BigInt(32)||ce<-(BigInt(2)**BigInt(32)))&&(tt=J(tt)),tt+="n"),ze+=` It must be ${ge}. Received ${tt}`,ze},RangeError);function J(Me){let ge="",ce=Me.length,ze=Me[0]==="-"?1:0;for(;ce>=ze+4;ce-=3)ge=`_${Me.slice(ce-3,ce)}${ge}`;return`${Me.slice(0,ce)}${ge}`}function Z(Me,ge,ce){ne(ge,"offset"),(Me[ge]===void 0||Me[ge+ce]===void 0)&&j(ge,Me.length-(ce+1))}function re(Me,ge,ce,ze,tt,nt){if(Me>ce||Me3?ge===0||ge===BigInt(0)?Ct=`>= 0${Qe} and < 2${Qe} ** ${(nt+1)*8}${Qe}`:Ct=`>= -(2${Qe} ** ${(nt+1)*8-1}${Qe}) and < 2 ** ${(nt+1)*8-1}${Qe}`:Ct=`>= ${ge}${Qe} and <= ${ce}${Qe}`,new G.ERR_OUT_OF_RANGE("value",Ct,Me)}Z(ze,tt,nt)}function ne(Me,ge){if(typeof Me!="number")throw new G.ERR_INVALID_ARG_TYPE(ge,"number",Me)}function j(Me,ge,ce){throw Math.floor(Me)!==Me?(ne(Me,ce),new G.ERR_OUT_OF_RANGE(ce||"offset","an integer",Me)):ge<0?new G.ERR_BUFFER_OUT_OF_BOUNDS:new G.ERR_OUT_OF_RANGE(ce||"offset",`>= ${ce?1:0} and <= ${ge}`,Me)}var ee=/[^+/0-9A-Za-z-_]/g;function ie(Me){if(Me=Me.split("=")[0],Me=Me.trim().replace(ee,""),Me.length<2)return"";for(;Me.length%4!==0;)Me=Me+"=";return Me}function fe(Me,ge){ge=ge||1/0;let ce,ze=Me.length,tt=null,nt=[];for(let Qe=0;Qe55295&&ce<57344){if(!tt){if(ce>56319){(ge-=3)>-1&&nt.push(239,191,189);continue}else if(Qe+1===ze){(ge-=3)>-1&&nt.push(239,191,189);continue}tt=ce;continue}if(ce<56320){(ge-=3)>-1&&nt.push(239,191,189),tt=ce;continue}ce=(tt-55296<<10|ce-56320)+65536}else tt&&(ge-=3)>-1&&nt.push(239,191,189);if(tt=null,ce<128){if((ge-=1)<0)break;nt.push(ce)}else if(ce<2048){if((ge-=2)<0)break;nt.push(ce>>6|192,ce&63|128)}else if(ce<65536){if((ge-=3)<0)break;nt.push(ce>>12|224,ce>>6&63|128,ce&63|128)}else if(ce<1114112){if((ge-=4)<0)break;nt.push(ce>>18|240,ce>>12&63|128,ce>>6&63|128,ce&63|128)}else throw new Error("Invalid code point")}return nt}function be(Me){let ge=[];for(let ce=0;ce>8,tt=ce%256,nt.push(tt),nt.push(ze);return nt}function Be(Me){return H.toByteArray(ie(Me))}function Ie(Me,ge,ce,ze){let tt;for(tt=0;tt=ge.length||tt>=Me.length);++tt)ge[tt+ce]=Me[tt];return tt}function Ze(Me,ge){return Me instanceof ge||Me!=null&&Me.constructor!=null&&Me.constructor.name!=null&&Me.constructor.name===ge.name}function at(Me){return Me!==Me}var it=function(){let Me="0123456789abcdef",ge=new Array(256);for(let ce=0;ce<16;++ce){let ze=ce*16;for(let tt=0;tt<16;++tt)ge[ze+tt]=Me[ce]+Me[tt]}return ge}();function et(Me){return typeof BigInt>"u"?lt:Me}function lt(){throw new Error("BigInt not supported")}}}),h3=Ye({"node_modules/has-symbols/shams.js"(X,H){"use strict";H.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var x={},A=Symbol("test"),M=Object(A);if(typeof A=="string"||Object.prototype.toString.call(A)!=="[object Symbol]"||Object.prototype.toString.call(M)!=="[object Symbol]")return!1;var e=42;x[A]=e;for(A in x)return!1;if(typeof Object.keys=="function"&&Object.keys(x).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(x).length!==0)return!1;var t=Object.getOwnPropertySymbols(x);if(t.length!==1||t[0]!==A||!Object.prototype.propertyIsEnumerable.call(x,A))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var r=Object.getOwnPropertyDescriptor(x,A);if(r.value!==e||r.enumerable!==!0)return!1}return!0}}}),q_=Ye({"node_modules/has-tostringtag/shams.js"(X,H){"use strict";var g=h3();H.exports=function(){return g()&&!!Symbol.toStringTag}}}),s4=Ye({"node_modules/es-errors/index.js"(X,H){"use strict";H.exports=Error}}),l4=Ye({"node_modules/es-errors/eval.js"(X,H){"use strict";H.exports=EvalError}}),u4=Ye({"node_modules/es-errors/range.js"(X,H){"use strict";H.exports=RangeError}}),c4=Ye({"node_modules/es-errors/ref.js"(X,H){"use strict";H.exports=ReferenceError}}),DM=Ye({"node_modules/es-errors/syntax.js"(X,H){"use strict";H.exports=SyntaxError}}),H_=Ye({"node_modules/es-errors/type.js"(X,H){"use strict";H.exports=TypeError}}),f4=Ye({"node_modules/es-errors/uri.js"(X,H){"use strict";H.exports=URIError}}),h4=Ye({"node_modules/has-symbols/index.js"(X,H){"use strict";var g=typeof Symbol<"u"&&Symbol,x=h3();H.exports=function(){return typeof g!="function"||typeof Symbol!="function"||typeof g("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:x()}}}),p4=Ye({"node_modules/has-proto/index.js"(X,H){"use strict";var g={foo:{}},x=Object;H.exports=function(){return{__proto__:g}.foo===g.foo&&!({__proto__:null}instanceof x)}}}),d4=Ye({"node_modules/function-bind/implementation.js"(X,H){"use strict";var g="Function.prototype.bind called on incompatible ",x=Object.prototype.toString,A=Math.max,M="[object Function]",e=function(a,i){for(var n=[],s=0;s"u"||!p?g:p(Uint8Array),_={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?g:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?g:ArrayBuffer,"%ArrayIteratorPrototype%":h&&p?p([][Symbol.iterator]()):g,"%AsyncFromSyncIteratorPrototype%":g,"%AsyncFunction%":T,"%AsyncGenerator%":T,"%AsyncGeneratorFunction%":T,"%AsyncIteratorPrototype%":T,"%Atomics%":typeof Atomics>"u"?g:Atomics,"%BigInt%":typeof BigInt>"u"?g:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?g:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?g:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?g:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":x,"%eval%":eval,"%EvalError%":A,"%Float32Array%":typeof Float32Array>"u"?g:Float32Array,"%Float64Array%":typeof Float64Array>"u"?g:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?g:FinalizationRegistry,"%Function%":a,"%GeneratorFunction%":T,"%Int8Array%":typeof Int8Array>"u"?g:Int8Array,"%Int16Array%":typeof Int16Array>"u"?g:Int16Array,"%Int32Array%":typeof Int32Array>"u"?g:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":h&&p?p(p([][Symbol.iterator]())):g,"%JSON%":typeof JSON=="object"?JSON:g,"%Map%":typeof Map>"u"?g:Map,"%MapIteratorPrototype%":typeof Map>"u"||!h||!p?g:p(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?g:Promise,"%Proxy%":typeof Proxy>"u"?g:Proxy,"%RangeError%":M,"%ReferenceError%":e,"%Reflect%":typeof Reflect>"u"?g:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?g:Set,"%SetIteratorPrototype%":typeof Set>"u"||!h||!p?g:p(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?g:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":h&&p?p(""[Symbol.iterator]()):g,"%Symbol%":h?Symbol:g,"%SyntaxError%":t,"%ThrowTypeError%":c,"%TypedArray%":l,"%TypeError%":r,"%Uint8Array%":typeof Uint8Array>"u"?g:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?g:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?g:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?g:Uint32Array,"%URIError%":o,"%WeakMap%":typeof WeakMap>"u"?g:WeakMap,"%WeakRef%":typeof WeakRef>"u"?g:WeakRef,"%WeakSet%":typeof WeakSet>"u"?g:WeakSet};if(p)try{null.error}catch(O){w=p(p(O)),_["%Error.prototype%"]=w}var w,S=function O(I){var N;if(I==="%AsyncFunction%")N=i("async function () {}");else if(I==="%GeneratorFunction%")N=i("function* () {}");else if(I==="%AsyncGeneratorFunction%")N=i("async function* () {}");else if(I==="%AsyncGenerator%"){var U=O("%AsyncGeneratorFunction%");U&&(N=U.prototype)}else if(I==="%AsyncIteratorPrototype%"){var W=O("%AsyncGenerator%");W&&p&&(N=p(W.prototype))}return _[I]=N,N},E={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},m=p3(),b=v4(),d=m.call(Function.call,Array.prototype.concat),u=m.call(Function.apply,Array.prototype.splice),y=m.call(Function.call,String.prototype.replace),f=m.call(Function.call,String.prototype.slice),P=m.call(Function.call,RegExp.prototype.exec),L=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,z=/\\(\\)?/g,F=function(I){var N=f(I,0,1),U=f(I,-1);if(N==="%"&&U!=="%")throw new t("invalid intrinsic syntax, expected closing `%`");if(U==="%"&&N!=="%")throw new t("invalid intrinsic syntax, expected opening `%`");var W=[];return y(I,L,function(Q,ue,se,he){W[W.length]=se?y(he,z,"$1"):ue||Q}),W},B=function(I,N){var U=I,W;if(b(E,U)&&(W=E[U],U="%"+W[0]+"%"),b(_,U)){var Q=_[U];if(Q===T&&(Q=S(U)),typeof Q>"u"&&!N)throw new r("intrinsic "+I+" exists, but is not available. Please file an issue!");return{alias:W,name:U,value:Q}}throw new t("intrinsic "+I+" does not exist!")};H.exports=function(I,N){if(typeof I!="string"||I.length===0)throw new r("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof N!="boolean")throw new r('"allowMissing" argument must be a boolean');if(P(/^%?[^%]*%?$/,I)===null)throw new t("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var U=F(I),W=U.length>0?U[0]:"",Q=B("%"+W+"%",N),ue=Q.name,se=Q.value,he=!1,G=Q.alias;G&&(W=G[0],u(U,d([0,1],G)));for(var $=1,J=!0;$=U.length){var j=n(se,Z);J=!!j,J&&"get"in j&&!("originalValue"in j.get)?se=j.get:se=se[Z]}else J=b(se,Z),se=se[Z];J&&!he&&(_[ue]=se)}}return se}}}),d3=Ye({"node_modules/es-define-property/index.js"(X,H){"use strict";var g=v1(),x=g("%Object.defineProperty%",!0)||!1;if(x)try{x({},"a",{value:1})}catch{x=!1}H.exports=x}}),G_=Ye({"node_modules/gopd/index.js"(X,H){"use strict";var g=v1(),x=g("%Object.getOwnPropertyDescriptor%",!0);if(x)try{x([],"length")}catch{x=null}H.exports=x}}),m4=Ye({"node_modules/define-data-property/index.js"(X,H){"use strict";var g=d3(),x=DM(),A=H_(),M=G_();H.exports=function(t,r,o){if(!t||typeof t!="object"&&typeof t!="function")throw new A("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new A("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new A("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new A("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new A("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new A("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,i=arguments.length>4?arguments[4]:null,n=arguments.length>5?arguments[5]:null,s=arguments.length>6?arguments[6]:!1,c=!!M&&M(t,r);if(g)g(t,r,{configurable:n===null&&c?c.configurable:!n,enumerable:a===null&&c?c.enumerable:!a,value:o,writable:i===null&&c?c.writable:!i});else if(s||!a&&!i&&!n)t[r]=o;else throw new x("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}}}),zM=Ye({"node_modules/has-property-descriptors/index.js"(X,H){"use strict";var g=d3(),x=function(){return!!g};x.hasArrayLengthDefineBug=function(){if(!g)return null;try{return g([],"length",{value:1}).length!==1}catch{return!0}},H.exports=x}}),g4=Ye({"node_modules/set-function-length/index.js"(X,H){"use strict";var g=v1(),x=m4(),A=zM()(),M=G_(),e=H_(),t=g("%Math.floor%");H.exports=function(o,a){if(typeof o!="function")throw new e("`fn` is not a function");if(typeof a!="number"||a<0||a>4294967295||t(a)!==a)throw new e("`length` must be a positive 32-bit integer");var i=arguments.length>2&&!!arguments[2],n=!0,s=!0;if("length"in o&&M){var c=M(o,"length");c&&!c.configurable&&(n=!1),c&&!c.writable&&(s=!1)}return(n||s||!i)&&(A?x(o,"length",a,!0,!0):x(o,"length",a)),o}}}),W_=Ye({"node_modules/call-bind/index.js"(X,H){"use strict";var g=p3(),x=v1(),A=g4(),M=H_(),e=x("%Function.prototype.apply%"),t=x("%Function.prototype.call%"),r=x("%Reflect.apply%",!0)||g.call(t,e),o=d3(),a=x("%Math.max%");H.exports=function(s){if(typeof s!="function")throw new M("a function is required");var c=r(g,t,arguments);return A(c,1+a(0,s.length-(arguments.length-1)),!0)};var i=function(){return r(g,e,arguments)};o?o(H.exports,"apply",{value:i}):H.exports.apply=i}}),m1=Ye({"node_modules/call-bind/callBound.js"(X,H){"use strict";var g=v1(),x=W_(),A=x(g("String.prototype.indexOf"));H.exports=function(e,t){var r=g(e,!!t);return typeof r=="function"&&A(e,".prototype.")>-1?x(r):r}}}),y4=Ye({"node_modules/is-arguments/index.js"(X,H){"use strict";var g=q_()(),x=m1(),A=x("Object.prototype.toString"),M=function(o){return g&&o&&typeof o=="object"&&Symbol.toStringTag in o?!1:A(o)==="[object Arguments]"},e=function(o){return M(o)?!0:o!==null&&typeof o=="object"&&typeof o.length=="number"&&o.length>=0&&A(o)!=="[object Array]"&&A(o.callee)==="[object Function]"},t=function(){return M(arguments)}();M.isLegacyArguments=e,H.exports=t?M:e}}),_4=Ye({"node_modules/is-generator-function/index.js"(X,H){"use strict";var g=Object.prototype.toString,x=Function.prototype.toString,A=/^\s*(?:function)?\*/,M=q_()(),e=Object.getPrototypeOf,t=function(){if(!M)return!1;try{return Function("return function*() {}")()}catch{}},r;H.exports=function(a){if(typeof a!="function")return!1;if(A.test(x.call(a)))return!0;if(!M){var i=g.call(a);return i==="[object GeneratorFunction]"}if(!e)return!1;if(typeof r>"u"){var n=t();r=n?e(n):!1}return e(a)===r}}}),x4=Ye({"node_modules/is-callable/index.js"(X,H){"use strict";var g=Function.prototype.toString,x=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,A,M;if(typeof x=="function"&&typeof Object.defineProperty=="function")try{A=Object.defineProperty({},"length",{get:function(){throw M}}),M={},x(function(){throw 42},null,A)}catch(_){_!==M&&(x=null)}else x=null;var e=/^\s*class\b/,t=function(w){try{var S=g.call(w);return e.test(S)}catch{return!1}},r=function(w){try{return t(w)?!1:(g.call(w),!0)}catch{return!1}},o=Object.prototype.toString,a="[object Object]",i="[object Function]",n="[object GeneratorFunction]",s="[object HTMLAllCollection]",c="[object HTML document.all class]",h="[object HTMLCollection]",v=typeof Symbol=="function"&&!!Symbol.toStringTag,p=!(0 in[,]),T=function(){return!1};typeof document=="object"&&(l=document.all,o.call(l)===o.call(document.all)&&(T=function(w){if((p||!w)&&(typeof w>"u"||typeof w=="object"))try{var S=o.call(w);return(S===s||S===c||S===h||S===a)&&w("")==null}catch{}return!1}));var l;H.exports=x?function(w){if(T(w))return!0;if(!w||typeof w!="function"&&typeof w!="object")return!1;try{x(w,null,A)}catch(S){if(S!==M)return!1}return!t(w)&&r(w)}:function(w){if(T(w))return!0;if(!w||typeof w!="function"&&typeof w!="object")return!1;if(v)return r(w);if(t(w))return!1;var S=o.call(w);return S!==i&&S!==n&&!/^\[object HTML/.test(S)?!1:r(w)}}}),FM=Ye({"node_modules/for-each/index.js"(X,H){"use strict";var g=x4(),x=Object.prototype.toString,A=Object.prototype.hasOwnProperty,M=function(a,i,n){for(var s=0,c=a.length;s=3&&(s=n),x.call(a)==="[object Array]"?M(a,i,s):typeof a=="string"?e(a,i,s):t(a,i,s)};H.exports=r}}),OM=Ye({"node_modules/available-typed-arrays/index.js"(X,H){"use strict";var g=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],x=typeof globalThis>"u"?window:globalThis;H.exports=function(){for(var M=[],e=0;e"u"?window:globalThis,a=x(),i=M("String.prototype.slice"),n=Object.getPrototypeOf,s=M("Array.prototype.indexOf",!0)||function(T,l){for(var _=0;_-1?l:l!=="Object"?!1:v(T)}return e?h(T):null}}}),w4=Ye({"node_modules/is-typed-array/index.js"(X,H){"use strict";var g=FM(),x=OM(),A=m1(),M=A("Object.prototype.toString"),e=q_()(),t=G_(),r=typeof globalThis>"u"?window:globalThis,o=x(),a=A("Array.prototype.indexOf",!0)||function(v,p){for(var T=0;T-1}return t?c(v):!1}}}),BM=Ye({"node_modules/util/support/types.js"(X){"use strict";var H=y4(),g=_4(),x=b4(),A=w4();function M(Ae){return Ae.call.bind(Ae)}var e=typeof BigInt<"u",t=typeof Symbol<"u",r=M(Object.prototype.toString),o=M(Number.prototype.valueOf),a=M(String.prototype.valueOf),i=M(Boolean.prototype.valueOf);e&&(n=M(BigInt.prototype.valueOf));var n;t&&(s=M(Symbol.prototype.valueOf));var s;function c(Ae,Be){if(typeof Ae!="object")return!1;try{return Be(Ae),!0}catch{return!1}}X.isArgumentsObject=H,X.isGeneratorFunction=g,X.isTypedArray=A;function h(Ae){return typeof Promise<"u"&&Ae instanceof Promise||Ae!==null&&typeof Ae=="object"&&typeof Ae.then=="function"&&typeof Ae.catch=="function"}X.isPromise=h;function v(Ae){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(Ae):A(Ae)||W(Ae)}X.isArrayBufferView=v;function p(Ae){return x(Ae)==="Uint8Array"}X.isUint8Array=p;function T(Ae){return x(Ae)==="Uint8ClampedArray"}X.isUint8ClampedArray=T;function l(Ae){return x(Ae)==="Uint16Array"}X.isUint16Array=l;function _(Ae){return x(Ae)==="Uint32Array"}X.isUint32Array=_;function w(Ae){return x(Ae)==="Int8Array"}X.isInt8Array=w;function S(Ae){return x(Ae)==="Int16Array"}X.isInt16Array=S;function E(Ae){return x(Ae)==="Int32Array"}X.isInt32Array=E;function m(Ae){return x(Ae)==="Float32Array"}X.isFloat32Array=m;function b(Ae){return x(Ae)==="Float64Array"}X.isFloat64Array=b;function d(Ae){return x(Ae)==="BigInt64Array"}X.isBigInt64Array=d;function u(Ae){return x(Ae)==="BigUint64Array"}X.isBigUint64Array=u;function y(Ae){return r(Ae)==="[object Map]"}y.working=typeof Map<"u"&&y(new Map);function f(Ae){return typeof Map>"u"?!1:y.working?y(Ae):Ae instanceof Map}X.isMap=f;function P(Ae){return r(Ae)==="[object Set]"}P.working=typeof Set<"u"&&P(new Set);function L(Ae){return typeof Set>"u"?!1:P.working?P(Ae):Ae instanceof Set}X.isSet=L;function z(Ae){return r(Ae)==="[object WeakMap]"}z.working=typeof WeakMap<"u"&&z(new WeakMap);function F(Ae){return typeof WeakMap>"u"?!1:z.working?z(Ae):Ae instanceof WeakMap}X.isWeakMap=F;function B(Ae){return r(Ae)==="[object WeakSet]"}B.working=typeof WeakSet<"u"&&B(new WeakSet);function O(Ae){return B(Ae)}X.isWeakSet=O;function I(Ae){return r(Ae)==="[object ArrayBuffer]"}I.working=typeof ArrayBuffer<"u"&&I(new ArrayBuffer);function N(Ae){return typeof ArrayBuffer>"u"?!1:I.working?I(Ae):Ae instanceof ArrayBuffer}X.isArrayBuffer=N;function U(Ae){return r(Ae)==="[object DataView]"}U.working=typeof ArrayBuffer<"u"&&typeof DataView<"u"&&U(new DataView(new ArrayBuffer(1),0,1));function W(Ae){return typeof DataView>"u"?!1:U.working?U(Ae):Ae instanceof DataView}X.isDataView=W;var Q=typeof SharedArrayBuffer<"u"?SharedArrayBuffer:void 0;function ue(Ae){return r(Ae)==="[object SharedArrayBuffer]"}function se(Ae){return typeof Q>"u"?!1:(typeof ue.working>"u"&&(ue.working=ue(new Q)),ue.working?ue(Ae):Ae instanceof Q)}X.isSharedArrayBuffer=se;function he(Ae){return r(Ae)==="[object AsyncFunction]"}X.isAsyncFunction=he;function G(Ae){return r(Ae)==="[object Map Iterator]"}X.isMapIterator=G;function $(Ae){return r(Ae)==="[object Set Iterator]"}X.isSetIterator=$;function J(Ae){return r(Ae)==="[object Generator]"}X.isGeneratorObject=J;function Z(Ae){return r(Ae)==="[object WebAssembly.Module]"}X.isWebAssemblyCompiledModule=Z;function re(Ae){return c(Ae,o)}X.isNumberObject=re;function ne(Ae){return c(Ae,a)}X.isStringObject=ne;function j(Ae){return c(Ae,i)}X.isBooleanObject=j;function ee(Ae){return e&&c(Ae,n)}X.isBigIntObject=ee;function ie(Ae){return t&&c(Ae,s)}X.isSymbolObject=ie;function fe(Ae){return re(Ae)||ne(Ae)||j(Ae)||ee(Ae)||ie(Ae)}X.isBoxedPrimitive=fe;function be(Ae){return typeof Uint8Array<"u"&&(N(Ae)||se(Ae))}X.isAnyArrayBuffer=be,["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(Ae){Object.defineProperty(X,Ae,{enumerable:!1,value:function(){throw new Error(Ae+" is not supported in userland")}})})}}),NM=Ye({"node_modules/util/support/isBufferBrowser.js"(X,H){H.exports=function(x){return x&&typeof x=="object"&&typeof x.copy=="function"&&typeof x.fill=="function"&&typeof x.readUInt8=="function"}}}),UM=Ye({"(disabled):node_modules/util/util.js"(X){var H=Object.getOwnPropertyDescriptors||function(W){for(var Q=Object.keys(W),ue={},se=0;se=se)return $;switch($){case"%s":return String(ue[Q++]);case"%d":return Number(ue[Q++]);case"%j":try{return JSON.stringify(ue[Q++])}catch{return"[Circular]"}default:return $}}),G=ue[Q];Q"u")return function(){return X.deprecate(U,W).apply(this,arguments)};var Q=!1;function ue(){if(!Q){if(process.throwDeprecation)throw new Error(W);process.traceDeprecation?console.trace(W):console.error(W),Q=!0}return U.apply(this,arguments)}return ue};var x={},A=/^$/;M="false",M=M.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),A=new RegExp("^"+M+"$","i");var M;X.debuglog=function(U){if(U=U.toUpperCase(),!x[U])if(A.test(U)){var W=process.pid;x[U]=function(){var Q=X.format.apply(X,arguments);console.error("%s %d: %s",U,W,Q)}}else x[U]=function(){};return x[U]};function e(U,W){var Q={seen:[],stylize:r};return arguments.length>=3&&(Q.depth=arguments[2]),arguments.length>=4&&(Q.colors=arguments[3]),p(W)?Q.showHidden=W:W&&X._extend(Q,W),E(Q.showHidden)&&(Q.showHidden=!1),E(Q.depth)&&(Q.depth=2),E(Q.colors)&&(Q.colors=!1),E(Q.customInspect)&&(Q.customInspect=!0),Q.colors&&(Q.stylize=t),a(Q,U,Q.depth)}X.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function t(U,W){var Q=e.styles[W];return Q?"\x1B["+e.colors[Q][0]+"m"+U+"\x1B["+e.colors[Q][1]+"m":U}function r(U,W){return U}function o(U){var W={};return U.forEach(function(Q,ue){W[Q]=!0}),W}function a(U,W,Q){if(U.customInspect&&W&&y(W.inspect)&&W.inspect!==X.inspect&&!(W.constructor&&W.constructor.prototype===W)){var ue=W.inspect(Q,U);return w(ue)||(ue=a(U,ue,Q)),ue}var se=i(U,W);if(se)return se;var he=Object.keys(W),G=o(he);if(U.showHidden&&(he=Object.getOwnPropertyNames(W)),u(W)&&(he.indexOf("message")>=0||he.indexOf("description")>=0))return n(W);if(he.length===0){if(y(W)){var $=W.name?": "+W.name:"";return U.stylize("[Function"+$+"]","special")}if(m(W))return U.stylize(RegExp.prototype.toString.call(W),"regexp");if(d(W))return U.stylize(Date.prototype.toString.call(W),"date");if(u(W))return n(W)}var J="",Z=!1,re=["{","}"];if(v(W)&&(Z=!0,re=["[","]"]),y(W)){var ne=W.name?": "+W.name:"";J=" [Function"+ne+"]"}if(m(W)&&(J=" "+RegExp.prototype.toString.call(W)),d(W)&&(J=" "+Date.prototype.toUTCString.call(W)),u(W)&&(J=" "+n(W)),he.length===0&&(!Z||W.length==0))return re[0]+J+re[1];if(Q<0)return m(W)?U.stylize(RegExp.prototype.toString.call(W),"regexp"):U.stylize("[Object]","special");U.seen.push(W);var j;return Z?j=s(U,W,Q,G,he):j=he.map(function(ee){return c(U,W,Q,G,ee,Z)}),U.seen.pop(),h(j,J,re)}function i(U,W){if(E(W))return U.stylize("undefined","undefined");if(w(W)){var Q="'"+JSON.stringify(W).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return U.stylize(Q,"string")}if(_(W))return U.stylize(""+W,"number");if(p(W))return U.stylize(""+W,"boolean");if(T(W))return U.stylize("null","null")}function n(U){return"["+Error.prototype.toString.call(U)+"]"}function s(U,W,Q,ue,se){for(var he=[],G=0,$=W.length;G<$;++G)B(W,String(G))?he.push(c(U,W,Q,ue,String(G),!0)):he.push("");return se.forEach(function(J){J.match(/^\d+$/)||he.push(c(U,W,Q,ue,J,!0))}),he}function c(U,W,Q,ue,se,he){var G,$,J;if(J=Object.getOwnPropertyDescriptor(W,se)||{value:W[se]},J.get?J.set?$=U.stylize("[Getter/Setter]","special"):$=U.stylize("[Getter]","special"):J.set&&($=U.stylize("[Setter]","special")),B(ue,se)||(G="["+se+"]"),$||(U.seen.indexOf(J.value)<0?(T(Q)?$=a(U,J.value,null):$=a(U,J.value,Q-1),$.indexOf(` +`)>-1&&(he?$=$.split(` +`).map(function(Z){return" "+Z}).join(` +`).slice(2):$=` +`+$.split(` +`).map(function(Z){return" "+Z}).join(` +`))):$=U.stylize("[Circular]","special")),E(G)){if(he&&se.match(/^\d+$/))return $;G=JSON.stringify(""+se),G.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(G=G.slice(1,-1),G=U.stylize(G,"name")):(G=G.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),G=U.stylize(G,"string"))}return G+": "+$}function h(U,W,Q){var ue=0,se=U.reduce(function(he,G){return ue++,G.indexOf(` +`)>=0&&ue++,he+G.replace(/\u001b\[\d\d?m/g,"").length+1},0);return se>60?Q[0]+(W===""?"":W+` + `)+" "+U.join(`, + `)+" "+Q[1]:Q[0]+W+" "+U.join(", ")+" "+Q[1]}X.types=BM();function v(U){return Array.isArray(U)}X.isArray=v;function p(U){return typeof U=="boolean"}X.isBoolean=p;function T(U){return U===null}X.isNull=T;function l(U){return U==null}X.isNullOrUndefined=l;function _(U){return typeof U=="number"}X.isNumber=_;function w(U){return typeof U=="string"}X.isString=w;function S(U){return typeof U=="symbol"}X.isSymbol=S;function E(U){return U===void 0}X.isUndefined=E;function m(U){return b(U)&&P(U)==="[object RegExp]"}X.isRegExp=m,X.types.isRegExp=m;function b(U){return typeof U=="object"&&U!==null}X.isObject=b;function d(U){return b(U)&&P(U)==="[object Date]"}X.isDate=d,X.types.isDate=d;function u(U){return b(U)&&(P(U)==="[object Error]"||U instanceof Error)}X.isError=u,X.types.isNativeError=u;function y(U){return typeof U=="function"}X.isFunction=y;function f(U){return U===null||typeof U=="boolean"||typeof U=="number"||typeof U=="string"||typeof U=="symbol"||typeof U>"u"}X.isPrimitive=f,X.isBuffer=NM();function P(U){return Object.prototype.toString.call(U)}function L(U){return U<10?"0"+U.toString(10):U.toString(10)}var z=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function F(){var U=new Date,W=[L(U.getHours()),L(U.getMinutes()),L(U.getSeconds())].join(":");return[U.getDate(),z[U.getMonth()],W].join(" ")}X.log=function(){console.log("%s - %s",F(),X.format.apply(X,arguments))},X.inherits=Yv(),X._extend=function(U,W){if(!W||!b(W))return U;for(var Q=Object.keys(W),ue=Q.length;ue--;)U[Q[ue]]=W[Q[ue]];return U};function B(U,W){return Object.prototype.hasOwnProperty.call(U,W)}var O=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;X.promisify=function(W){if(typeof W!="function")throw new TypeError('The "original" argument must be of type Function');if(O&&W[O]){var Q=W[O];if(typeof Q!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(Q,O,{value:Q,enumerable:!1,writable:!1,configurable:!0}),Q}function Q(){for(var ue,se,he=new Promise(function(J,Z){ue=J,se=Z}),G=[],$=0;$0?this.tail.next=p:this.head=p,this.tail=p,++this.length}},{key:"unshift",value:function(v){var p={data:v,next:this.head};this.length===0&&(this.tail=p),this.head=p,++this.length}},{key:"shift",value:function(){if(this.length!==0){var v=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,v}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(v){if(this.length===0)return"";for(var p=this.head,T=""+p.data;p=p.next;)T+=v+p.data;return T}},{key:"concat",value:function(v){if(this.length===0)return o.alloc(0);for(var p=o.allocUnsafe(v>>>0),T=this.head,l=0;T;)s(T.data,p,l),l+=T.data.length,T=T.next;return p}},{key:"consume",value:function(v,p){var T;return v_.length?_.length:v;if(w===_.length?l+=_:l+=_.slice(0,v),v-=w,v===0){w===_.length?(++T,p.next?this.head=p.next:this.head=this.tail=null):(this.head=p,p.data=_.slice(w));break}++T}return this.length-=T,l}},{key:"_getBuffer",value:function(v){var p=o.allocUnsafe(v),T=this.head,l=1;for(T.data.copy(p),v-=T.data.length;T=T.next;){var _=T.data,w=v>_.length?_.length:v;if(_.copy(p,p.length-v,0,w),v-=w,v===0){w===_.length?(++l,T.next?this.head=T.next:this.head=this.tail=null):(this.head=T,T.data=_.slice(w));break}++l}return this.length-=l,p}},{key:n,value:function(v,p){return i(this,x({},p,{depth:0,customInspect:!1}))}}]),c}()}}),jM=Ye({"node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js"(X,H){"use strict";function g(r,o){var a=this,i=this._readableState&&this._readableState.destroyed,n=this._writableState&&this._writableState.destroyed;return i||n?(o?o(r):r&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(e,this,r)):process.nextTick(e,this,r)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(r||null,function(s){!o&&s?a._writableState?a._writableState.errorEmitted?process.nextTick(A,a):(a._writableState.errorEmitted=!0,process.nextTick(x,a,s)):process.nextTick(x,a,s):o?(process.nextTick(A,a),o(s)):process.nextTick(A,a)}),this)}function x(r,o){e(r,o),A(r)}function A(r){r._writableState&&!r._writableState.emitClose||r._readableState&&!r._readableState.emitClose||r.emit("close")}function M(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}function e(r,o){r.emit("error",o)}function t(r,o){var a=r._readableState,i=r._writableState;a&&a.autoDestroy||i&&i.autoDestroy?r.destroy(o):r.emit("error",o)}H.exports={destroy:g,undestroy:M,errorOrDestroy:t}}}),r0=Ye({"node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js"(X,H){"use strict";function g(o,a){o.prototype=Object.create(a.prototype),o.prototype.constructor=o,o.__proto__=a}var x={};function A(o,a,i){i||(i=Error);function n(c,h,v){return typeof a=="string"?a:a(c,h,v)}var s=function(c){g(h,c);function h(v,p,T){return c.call(this,n(v,p,T))||this}return h}(i);s.prototype.name=i.name,s.prototype.code=o,x[o]=s}function M(o,a){if(Array.isArray(o)){var i=o.length;return o=o.map(function(n){return String(n)}),i>2?"one of ".concat(a," ").concat(o.slice(0,i-1).join(", "),", or ")+o[i-1]:i===2?"one of ".concat(a," ").concat(o[0]," or ").concat(o[1]):"of ".concat(a," ").concat(o[0])}else return"of ".concat(a," ").concat(String(o))}function e(o,a,i){return o.substr(!i||i<0?0:+i,a.length)===a}function t(o,a,i){return(i===void 0||i>o.length)&&(i=o.length),o.substring(i-a.length,i)===a}function r(o,a,i){return typeof i!="number"&&(i=0),i+a.length>o.length?!1:o.indexOf(a,i)!==-1}A("ERR_INVALID_OPT_VALUE",function(o,a){return'The value "'+a+'" is invalid for option "'+o+'"'},TypeError),A("ERR_INVALID_ARG_TYPE",function(o,a,i){var n;typeof a=="string"&&e(a,"not ")?(n="must not be",a=a.replace(/^not /,"")):n="must be";var s;if(t(o," argument"))s="The ".concat(o," ").concat(n," ").concat(M(a,"type"));else{var c=r(o,".")?"property":"argument";s='The "'.concat(o,'" ').concat(c," ").concat(n," ").concat(M(a,"type"))}return s+=". Received type ".concat(typeof i),s},TypeError),A("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),A("ERR_METHOD_NOT_IMPLEMENTED",function(o){return"The "+o+" method is not implemented"}),A("ERR_STREAM_PREMATURE_CLOSE","Premature close"),A("ERR_STREAM_DESTROYED",function(o){return"Cannot call "+o+" after a stream was destroyed"}),A("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),A("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),A("ERR_STREAM_WRITE_AFTER_END","write after end"),A("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),A("ERR_UNKNOWN_ENCODING",function(o){return"Unknown encoding: "+o},TypeError),A("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),H.exports.codes=x}}),VM=Ye({"node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js"(X,H){"use strict";var g=r0().codes.ERR_INVALID_OPT_VALUE;function x(M,e,t){return M.highWaterMark!=null?M.highWaterMark:e?M[t]:null}function A(M,e,t,r){var o=x(e,r,t);if(o!=null){if(!(isFinite(o)&&Math.floor(o)===o)||o<0){var a=r?t:"highWaterMark";throw new g(a,o)}return Math.floor(o)}return M.objectMode?16:16*1024}H.exports={getHighWaterMark:A}}}),A4=Ye({"node_modules/util-deprecate/browser.js"(X,H){H.exports=g;function g(A,M){if(x("noDeprecation"))return A;var e=!1;function t(){if(!e){if(x("throwDeprecation"))throw new Error(M);x("traceDeprecation")?console.trace(M):console.warn(M),e=!0}return A.apply(this,arguments)}return t}function x(A){try{if(!window.localStorage)return!1}catch{return!1}var M=window.localStorage[A];return M==null?!1:String(M).toLowerCase()==="true"}}}),qM=Ye({"node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js"(X,H){"use strict";H.exports=d;function g(G){var $=this;this.next=null,this.entry=null,this.finish=function(){he($,G)}}var x;d.WritableState=m;var A={deprecate:A4()},M=RM(),e=t0().Buffer,t=window.Uint8Array||function(){};function r(G){return e.from(G)}function o(G){return e.isBuffer(G)||G instanceof t}var a=jM(),i=VM(),n=i.getHighWaterMark,s=r0().codes,c=s.ERR_INVALID_ARG_TYPE,h=s.ERR_METHOD_NOT_IMPLEMENTED,v=s.ERR_MULTIPLE_CALLBACK,p=s.ERR_STREAM_CANNOT_PIPE,T=s.ERR_STREAM_DESTROYED,l=s.ERR_STREAM_NULL_VALUES,_=s.ERR_STREAM_WRITE_AFTER_END,w=s.ERR_UNKNOWN_ENCODING,S=a.errorOrDestroy;Yv()(d,M);function E(){}function m(G,$,J){x=x||a0(),G=G||{},typeof J!="boolean"&&(J=$ instanceof x),this.objectMode=!!G.objectMode,J&&(this.objectMode=this.objectMode||!!G.writableObjectMode),this.highWaterMark=n(this,G,"writableHighWaterMark",J),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var Z=G.decodeStrings===!1;this.decodeStrings=!Z,this.defaultEncoding=G.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(re){B($,re)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=G.emitClose!==!1,this.autoDestroy=!!G.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new g(this)}m.prototype.getBuffer=function(){for(var $=this.bufferedRequest,J=[];$;)J.push($),$=$.next;return J},function(){try{Object.defineProperty(m.prototype,"buffer",{get:A.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch{}}();var b;typeof Symbol=="function"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]=="function"?(b=Function.prototype[Symbol.hasInstance],Object.defineProperty(d,Symbol.hasInstance,{value:function($){return b.call(this,$)?!0:this!==d?!1:$&&$._writableState instanceof m}})):b=function($){return $ instanceof this};function d(G){x=x||a0();var $=this instanceof x;if(!$&&!b.call(d,this))return new d(G);this._writableState=new m(G,this,$),this.writable=!0,G&&(typeof G.write=="function"&&(this._write=G.write),typeof G.writev=="function"&&(this._writev=G.writev),typeof G.destroy=="function"&&(this._destroy=G.destroy),typeof G.final=="function"&&(this._final=G.final)),M.call(this)}d.prototype.pipe=function(){S(this,new p)};function u(G,$){var J=new _;S(G,J),process.nextTick($,J)}function y(G,$,J,Z){var re;return J===null?re=new l:typeof J!="string"&&!$.objectMode&&(re=new c("chunk",["string","Buffer"],J)),re?(S(G,re),process.nextTick(Z,re),!1):!0}d.prototype.write=function(G,$,J){var Z=this._writableState,re=!1,ne=!Z.objectMode&&o(G);return ne&&!e.isBuffer(G)&&(G=r(G)),typeof $=="function"&&(J=$,$=null),ne?$="buffer":$||($=Z.defaultEncoding),typeof J!="function"&&(J=E),Z.ending?u(this,J):(ne||y(this,Z,G,J))&&(Z.pendingcb++,re=P(this,Z,ne,G,$,J)),re},d.prototype.cork=function(){this._writableState.corked++},d.prototype.uncork=function(){var G=this._writableState;G.corked&&(G.corked--,!G.writing&&!G.corked&&!G.bufferProcessing&&G.bufferedRequest&&N(this,G))},d.prototype.setDefaultEncoding=function($){if(typeof $=="string"&&($=$.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf(($+"").toLowerCase())>-1))throw new w($);return this._writableState.defaultEncoding=$,this},Object.defineProperty(d.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function f(G,$,J){return!G.objectMode&&G.decodeStrings!==!1&&typeof $=="string"&&($=e.from($,J)),$}Object.defineProperty(d.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function P(G,$,J,Z,re,ne){if(!J){var j=f($,Z,re);Z!==j&&(J=!0,re="buffer",Z=j)}var ee=$.objectMode?1:Z.length;$.length+=ee;var ie=$.length<$.highWaterMark;if(ie||($.needDrain=!0),$.writing||$.corked){var fe=$.lastBufferedRequest;$.lastBufferedRequest={chunk:Z,encoding:re,isBuf:J,callback:ne,next:null},fe?fe.next=$.lastBufferedRequest:$.bufferedRequest=$.lastBufferedRequest,$.bufferedRequestCount+=1}else L(G,$,!1,ee,Z,re,ne);return ie}function L(G,$,J,Z,re,ne,j){$.writelen=Z,$.writecb=j,$.writing=!0,$.sync=!0,$.destroyed?$.onwrite(new T("write")):J?G._writev(re,$.onwrite):G._write(re,ne,$.onwrite),$.sync=!1}function z(G,$,J,Z,re){--$.pendingcb,J?(process.nextTick(re,Z),process.nextTick(ue,G,$),G._writableState.errorEmitted=!0,S(G,Z)):(re(Z),G._writableState.errorEmitted=!0,S(G,Z),ue(G,$))}function F(G){G.writing=!1,G.writecb=null,G.length-=G.writelen,G.writelen=0}function B(G,$){var J=G._writableState,Z=J.sync,re=J.writecb;if(typeof re!="function")throw new v;if(F(J),$)z(G,J,Z,$,re);else{var ne=U(J)||G.destroyed;!ne&&!J.corked&&!J.bufferProcessing&&J.bufferedRequest&&N(G,J),Z?process.nextTick(O,G,J,ne,re):O(G,J,ne,re)}}function O(G,$,J,Z){J||I(G,$),$.pendingcb--,Z(),ue(G,$)}function I(G,$){$.length===0&&$.needDrain&&($.needDrain=!1,G.emit("drain"))}function N(G,$){$.bufferProcessing=!0;var J=$.bufferedRequest;if(G._writev&&J&&J.next){var Z=$.bufferedRequestCount,re=new Array(Z),ne=$.corkedRequestsFree;ne.entry=J;for(var j=0,ee=!0;J;)re[j]=J,J.isBuf||(ee=!1),J=J.next,j+=1;re.allBuffers=ee,L(G,$,!0,$.length,re,"",ne.finish),$.pendingcb++,$.lastBufferedRequest=null,ne.next?($.corkedRequestsFree=ne.next,ne.next=null):$.corkedRequestsFree=new g($),$.bufferedRequestCount=0}else{for(;J;){var ie=J.chunk,fe=J.encoding,be=J.callback,Ae=$.objectMode?1:ie.length;if(L(G,$,!1,Ae,ie,fe,be),J=J.next,$.bufferedRequestCount--,$.writing)break}J===null&&($.lastBufferedRequest=null)}$.bufferedRequest=J,$.bufferProcessing=!1}d.prototype._write=function(G,$,J){J(new h("_write()"))},d.prototype._writev=null,d.prototype.end=function(G,$,J){var Z=this._writableState;return typeof G=="function"?(J=G,G=null,$=null):typeof $=="function"&&(J=$,$=null),G!=null&&this.write(G,$),Z.corked&&(Z.corked=1,this.uncork()),Z.ending||se(this,Z,J),this},Object.defineProperty(d.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}});function U(G){return G.ending&&G.length===0&&G.bufferedRequest===null&&!G.finished&&!G.writing}function W(G,$){G._final(function(J){$.pendingcb--,J&&S(G,J),$.prefinished=!0,G.emit("prefinish"),ue(G,$)})}function Q(G,$){!$.prefinished&&!$.finalCalled&&(typeof G._final=="function"&&!$.destroyed?($.pendingcb++,$.finalCalled=!0,process.nextTick(W,G,$)):($.prefinished=!0,G.emit("prefinish")))}function ue(G,$){var J=U($);if(J&&(Q(G,$),$.pendingcb===0&&($.finished=!0,G.emit("finish"),$.autoDestroy))){var Z=G._readableState;(!Z||Z.autoDestroy&&Z.endEmitted)&&G.destroy()}return J}function se(G,$,J){$.ending=!0,ue(G,$),J&&($.finished?process.nextTick(J):G.once("finish",J)),$.ended=!0,G.writable=!1}function he(G,$,J){var Z=G.entry;for(G.entry=null;Z;){var re=Z.callback;$.pendingcb--,re(J),Z=Z.next}$.corkedRequestsFree.next=G}Object.defineProperty(d.prototype,"destroyed",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function($){this._writableState&&(this._writableState.destroyed=$)}}),d.prototype.destroy=a.destroy,d.prototype._undestroy=a.undestroy,d.prototype._destroy=function(G,$){$(G)}}}),a0=Ye({"node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js"(X,H){"use strict";var g=Object.keys||function(i){var n=[];for(var s in i)n.push(s);return n};H.exports=r;var x=GM(),A=qM();for(Yv()(r,x),M=g(A.prototype),t=0;t>5===6?2:T>>4===14?3:T>>3===30?4:T>>6===2?-1:-2}function t(T,l,_){var w=l.length-1;if(w<_)return 0;var S=e(l[w]);return S>=0?(S>0&&(T.lastNeed=S-1),S):--w<_||S===-2?0:(S=e(l[w]),S>=0?(S>0&&(T.lastNeed=S-2),S):--w<_||S===-2?0:(S=e(l[w]),S>=0?(S>0&&(S===2?S=0:T.lastNeed=S-3),S):0))}function r(T,l,_){if((l[0]&192)!==128)return T.lastNeed=0,"\uFFFD";if(T.lastNeed>1&&l.length>1){if((l[1]&192)!==128)return T.lastNeed=1,"\uFFFD";if(T.lastNeed>2&&l.length>2&&(l[2]&192)!==128)return T.lastNeed=2,"\uFFFD"}}function o(T){var l=this.lastTotal-this.lastNeed,_=r(this,T,l);if(_!==void 0)return _;if(this.lastNeed<=T.length)return T.copy(this.lastChar,l,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);T.copy(this.lastChar,l,0,T.length),this.lastNeed-=T.length}function a(T,l){var _=t(this,T,l);if(!this.lastNeed)return T.toString("utf8",l);this.lastTotal=_;var w=T.length-(_-this.lastNeed);return T.copy(this.lastChar,0,w),T.toString("utf8",l,w)}function i(T){var l=T&&T.length?this.write(T):"";return this.lastNeed?l+"\uFFFD":l}function n(T,l){if((T.length-l)%2===0){var _=T.toString("utf16le",l);if(_){var w=_.charCodeAt(_.length-1);if(w>=55296&&w<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=T[T.length-2],this.lastChar[1]=T[T.length-1],_.slice(0,-1)}return _}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=T[T.length-1],T.toString("utf16le",l,T.length-1)}function s(T){var l=T&&T.length?this.write(T):"";if(this.lastNeed){var _=this.lastTotal-this.lastNeed;return l+this.lastChar.toString("utf16le",0,_)}return l}function c(T,l){var _=(T.length-l)%3;return _===0?T.toString("base64",l):(this.lastNeed=3-_,this.lastTotal=3,_===1?this.lastChar[0]=T[T.length-1]:(this.lastChar[0]=T[T.length-2],this.lastChar[1]=T[T.length-1]),T.toString("base64",l,T.length-_))}function h(T){var l=T&&T.length?this.write(T):"";return this.lastNeed?l+this.lastChar.toString("base64",0,3-this.lastNeed):l}function v(T){return T.toString(this.encoding)}function p(T){return T&&T.length?this.write(T):""}}}),v3=Ye({"node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js"(X,H){"use strict";var g=r0().codes.ERR_STREAM_PREMATURE_CLOSE;function x(t){var r=!1;return function(){if(!r){r=!0;for(var o=arguments.length,a=new Array(o),i=0;i0)if(typeof ee!="string"&&!Ae.objectMode&&Object.getPrototypeOf(ee)!==e.prototype&&(ee=r(ee)),fe)Ae.endEmitted?m(j,new _):P(j,Ae,ee,!0);else if(Ae.ended)m(j,new T);else{if(Ae.destroyed)return!1;Ae.reading=!1,Ae.decoder&&!ie?(ee=Ae.decoder.write(ee),Ae.objectMode||ee.length!==0?P(j,Ae,ee,!1):U(j,Ae)):P(j,Ae,ee,!1)}else fe||(Ae.reading=!1,U(j,Ae))}return!Ae.ended&&(Ae.length=z?j=z:(j--,j|=j>>>1,j|=j>>>2,j|=j>>>4,j|=j>>>8,j|=j>>>16,j++),j}function B(j,ee){return j<=0||ee.length===0&&ee.ended?0:ee.objectMode?1:j!==j?ee.flowing&&ee.length?ee.buffer.head.data.length:ee.length:(j>ee.highWaterMark&&(ee.highWaterMark=F(j)),j<=ee.length?j:ee.ended?ee.length:(ee.needReadable=!0,0))}y.prototype.read=function(j){i("read",j),j=parseInt(j,10);var ee=this._readableState,ie=j;if(j!==0&&(ee.emittedReadable=!1),j===0&&ee.needReadable&&((ee.highWaterMark!==0?ee.length>=ee.highWaterMark:ee.length>0)||ee.ended))return i("read: emitReadable",ee.length,ee.ended),ee.length===0&&ee.ended?Z(this):I(this),null;if(j=B(j,ee),j===0&&ee.ended)return ee.length===0&&Z(this),null;var fe=ee.needReadable;i("need readable",fe),(ee.length===0||ee.length-j0?be=J(j,ee):be=null,be===null?(ee.needReadable=ee.length<=ee.highWaterMark,j=0):(ee.length-=j,ee.awaitDrain=0),ee.length===0&&(ee.ended||(ee.needReadable=!0),ie!==j&&ee.ended&&Z(this)),be!==null&&this.emit("data",be),be};function O(j,ee){if(i("onEofChunk"),!ee.ended){if(ee.decoder){var ie=ee.decoder.end();ie&&ie.length&&(ee.buffer.push(ie),ee.length+=ee.objectMode?1:ie.length)}ee.ended=!0,ee.sync?I(j):(ee.needReadable=!1,ee.emittedReadable||(ee.emittedReadable=!0,N(j)))}}function I(j){var ee=j._readableState;i("emitReadable",ee.needReadable,ee.emittedReadable),ee.needReadable=!1,ee.emittedReadable||(i("emitReadable",ee.flowing),ee.emittedReadable=!0,process.nextTick(N,j))}function N(j){var ee=j._readableState;i("emitReadable_",ee.destroyed,ee.length,ee.ended),!ee.destroyed&&(ee.length||ee.ended)&&(j.emit("readable"),ee.emittedReadable=!1),ee.needReadable=!ee.flowing&&!ee.ended&&ee.length<=ee.highWaterMark,$(j)}function U(j,ee){ee.readingMore||(ee.readingMore=!0,process.nextTick(W,j,ee))}function W(j,ee){for(;!ee.reading&&!ee.ended&&(ee.length1&&ne(fe.pipes,j)!==-1)&&!at&&(i("false write response, pause",fe.awaitDrain),fe.awaitDrain++),ie.pause())}function lt(ze){i("onerror",ze),ce(),j.removeListener("error",lt),A(j,"error")===0&&m(j,ze)}d(j,"error",lt);function Me(){j.removeListener("finish",ge),ce()}j.once("close",Me);function ge(){i("onfinish"),j.removeListener("close",Me),ce()}j.once("finish",ge);function ce(){i("unpipe"),ie.unpipe(j)}return j.emit("pipe",ie),fe.flowing||(i("pipe resume"),ie.resume()),j};function Q(j){return function(){var ie=j._readableState;i("pipeOnDrain",ie.awaitDrain),ie.awaitDrain&&ie.awaitDrain--,ie.awaitDrain===0&&A(j,"data")&&(ie.flowing=!0,$(j))}}y.prototype.unpipe=function(j){var ee=this._readableState,ie={hasUnpiped:!1};if(ee.pipesCount===0)return this;if(ee.pipesCount===1)return j&&j!==ee.pipes?this:(j||(j=ee.pipes),ee.pipes=null,ee.pipesCount=0,ee.flowing=!1,j&&j.emit("unpipe",this,ie),this);if(!j){var fe=ee.pipes,be=ee.pipesCount;ee.pipes=null,ee.pipesCount=0,ee.flowing=!1;for(var Ae=0;Ae0,fe.flowing!==!1&&this.resume()):j==="readable"&&!fe.endEmitted&&!fe.readableListening&&(fe.readableListening=fe.needReadable=!0,fe.flowing=!1,fe.emittedReadable=!1,i("on readable",fe.length,fe.reading),fe.length?I(this):fe.reading||process.nextTick(se,this)),ie},y.prototype.addListener=y.prototype.on,y.prototype.removeListener=function(j,ee){var ie=M.prototype.removeListener.call(this,j,ee);return j==="readable"&&process.nextTick(ue,this),ie},y.prototype.removeAllListeners=function(j){var ee=M.prototype.removeAllListeners.apply(this,arguments);return(j==="readable"||j===void 0)&&process.nextTick(ue,this),ee};function ue(j){var ee=j._readableState;ee.readableListening=j.listenerCount("readable")>0,ee.resumeScheduled&&!ee.paused?ee.flowing=!0:j.listenerCount("data")>0&&j.resume()}function se(j){i("readable nexttick read 0"),j.read(0)}y.prototype.resume=function(){var j=this._readableState;return j.flowing||(i("resume"),j.flowing=!j.readableListening,he(this,j)),j.paused=!1,this};function he(j,ee){ee.resumeScheduled||(ee.resumeScheduled=!0,process.nextTick(G,j,ee))}function G(j,ee){i("resume",ee.reading),ee.reading||j.read(0),ee.resumeScheduled=!1,j.emit("resume"),$(j),ee.flowing&&!ee.reading&&j.read(0)}y.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),this._readableState.flowing!==!1&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this};function $(j){var ee=j._readableState;for(i("flow",ee.flowing);ee.flowing&&j.read()!==null;);}y.prototype.wrap=function(j){var ee=this,ie=this._readableState,fe=!1;j.on("end",function(){if(i("wrapped end"),ie.decoder&&!ie.ended){var Be=ie.decoder.end();Be&&Be.length&&ee.push(Be)}ee.push(null)}),j.on("data",function(Be){if(i("wrapped data"),ie.decoder&&(Be=ie.decoder.write(Be)),!(ie.objectMode&&Be==null)&&!(!ie.objectMode&&(!Be||!Be.length))){var Ie=ee.push(Be);Ie||(fe=!0,j.pause())}});for(var be in j)this[be]===void 0&&typeof j[be]=="function"&&(this[be]=function(Ie){return function(){return j[Ie].apply(j,arguments)}}(be));for(var Ae=0;Ae=ee.length?(ee.decoder?ie=ee.buffer.join(""):ee.buffer.length===1?ie=ee.buffer.first():ie=ee.buffer.concat(ee.length),ee.buffer.clear()):ie=ee.buffer.consume(j,ee.decoder),ie}function Z(j){var ee=j._readableState;i("endReadable",ee.endEmitted),ee.endEmitted||(ee.ended=!0,process.nextTick(re,ee,j))}function re(j,ee){if(i("endReadableNT",j.endEmitted,j.length),!j.endEmitted&&j.length===0&&(j.endEmitted=!0,ee.readable=!1,ee.emit("end"),j.autoDestroy)){var ie=ee._writableState;(!ie||ie.autoDestroy&&ie.finished)&&ee.destroy()}}typeof Symbol=="function"&&(y.from=function(j,ee){return E===void 0&&(E=E4()),E(y,j,ee)});function ne(j,ee){for(var ie=0,fe=j.length;ie0;return o(_,S,E,function(m){T||(T=m),m&&l.forEach(a),!S&&(l.forEach(a),p(T))})});return h.reduce(i)}H.exports=s}}),L4=Ye({"node_modules/stream-browserify/index.js"(X,H){H.exports=A;var g=Wg().EventEmitter,x=Yv();x(A,g),A.Readable=GM(),A.Writable=qM(),A.Duplex=a0(),A.Transform=WM(),A.PassThrough=k4(),A.finished=v3(),A.pipeline=C4(),A.Stream=A;function A(){g.call(this)}A.prototype.pipe=function(M,e){var t=this;function r(h){M.writable&&M.write(h)===!1&&t.pause&&t.pause()}t.on("data",r);function o(){t.readable&&t.resume&&t.resume()}M.on("drain",o),!M._isStdio&&(!e||e.end!==!1)&&(t.on("end",i),t.on("close",n));var a=!1;function i(){a||(a=!0,M.end())}function n(){a||(a=!0,typeof M.destroy=="function"&&M.destroy())}function s(h){if(c(),g.listenerCount(this,"error")===0)throw h}t.on("error",s),M.on("error",s);function c(){t.removeListener("data",r),M.removeListener("drain",o),t.removeListener("end",i),t.removeListener("close",n),t.removeListener("error",s),M.removeListener("error",s),t.removeListener("end",c),t.removeListener("close",c),M.removeListener("close",c)}return t.on("end",c),t.on("close",c),M.on("close",c),M.emit("pipe",t),M}}}),g1=Ye({"node_modules/util/util.js"(X){var H=Object.getOwnPropertyDescriptors||function(W){for(var Q=Object.keys(W),ue={},se=0;se=se)return $;switch($){case"%s":return String(ue[Q++]);case"%d":return Number(ue[Q++]);case"%j":try{return JSON.stringify(ue[Q++])}catch{return"[Circular]"}default:return $}}),G=ue[Q];Q"u")return function(){return X.deprecate(U,W).apply(this,arguments)};var Q=!1;function ue(){if(!Q){if(process.throwDeprecation)throw new Error(W);process.traceDeprecation?console.trace(W):console.error(W),Q=!0}return U.apply(this,arguments)}return ue};var x={},A=/^$/;M="false",M=M.replace(/[|\\{}()[\]^$+?.]/g,"\\$&").replace(/\*/g,".*").replace(/,/g,"$|^").toUpperCase(),A=new RegExp("^"+M+"$","i");var M;X.debuglog=function(U){if(U=U.toUpperCase(),!x[U])if(A.test(U)){var W=process.pid;x[U]=function(){var Q=X.format.apply(X,arguments);console.error("%s %d: %s",U,W,Q)}}else x[U]=function(){};return x[U]};function e(U,W){var Q={seen:[],stylize:r};return arguments.length>=3&&(Q.depth=arguments[2]),arguments.length>=4&&(Q.colors=arguments[3]),p(W)?Q.showHidden=W:W&&X._extend(Q,W),E(Q.showHidden)&&(Q.showHidden=!1),E(Q.depth)&&(Q.depth=2),E(Q.colors)&&(Q.colors=!1),E(Q.customInspect)&&(Q.customInspect=!0),Q.colors&&(Q.stylize=t),a(Q,U,Q.depth)}X.inspect=e,e.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},e.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function t(U,W){var Q=e.styles[W];return Q?"\x1B["+e.colors[Q][0]+"m"+U+"\x1B["+e.colors[Q][1]+"m":U}function r(U,W){return U}function o(U){var W={};return U.forEach(function(Q,ue){W[Q]=!0}),W}function a(U,W,Q){if(U.customInspect&&W&&y(W.inspect)&&W.inspect!==X.inspect&&!(W.constructor&&W.constructor.prototype===W)){var ue=W.inspect(Q,U);return w(ue)||(ue=a(U,ue,Q)),ue}var se=i(U,W);if(se)return se;var he=Object.keys(W),G=o(he);if(U.showHidden&&(he=Object.getOwnPropertyNames(W)),u(W)&&(he.indexOf("message")>=0||he.indexOf("description")>=0))return n(W);if(he.length===0){if(y(W)){var $=W.name?": "+W.name:"";return U.stylize("[Function"+$+"]","special")}if(m(W))return U.stylize(RegExp.prototype.toString.call(W),"regexp");if(d(W))return U.stylize(Date.prototype.toString.call(W),"date");if(u(W))return n(W)}var J="",Z=!1,re=["{","}"];if(v(W)&&(Z=!0,re=["[","]"]),y(W)){var ne=W.name?": "+W.name:"";J=" [Function"+ne+"]"}if(m(W)&&(J=" "+RegExp.prototype.toString.call(W)),d(W)&&(J=" "+Date.prototype.toUTCString.call(W)),u(W)&&(J=" "+n(W)),he.length===0&&(!Z||W.length==0))return re[0]+J+re[1];if(Q<0)return m(W)?U.stylize(RegExp.prototype.toString.call(W),"regexp"):U.stylize("[Object]","special");U.seen.push(W);var j;return Z?j=s(U,W,Q,G,he):j=he.map(function(ee){return c(U,W,Q,G,ee,Z)}),U.seen.pop(),h(j,J,re)}function i(U,W){if(E(W))return U.stylize("undefined","undefined");if(w(W)){var Q="'"+JSON.stringify(W).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return U.stylize(Q,"string")}if(_(W))return U.stylize(""+W,"number");if(p(W))return U.stylize(""+W,"boolean");if(T(W))return U.stylize("null","null")}function n(U){return"["+Error.prototype.toString.call(U)+"]"}function s(U,W,Q,ue,se){for(var he=[],G=0,$=W.length;G<$;++G)B(W,String(G))?he.push(c(U,W,Q,ue,String(G),!0)):he.push("");return se.forEach(function(J){J.match(/^\d+$/)||he.push(c(U,W,Q,ue,J,!0))}),he}function c(U,W,Q,ue,se,he){var G,$,J;if(J=Object.getOwnPropertyDescriptor(W,se)||{value:W[se]},J.get?J.set?$=U.stylize("[Getter/Setter]","special"):$=U.stylize("[Getter]","special"):J.set&&($=U.stylize("[Setter]","special")),B(ue,se)||(G="["+se+"]"),$||(U.seen.indexOf(J.value)<0?(T(Q)?$=a(U,J.value,null):$=a(U,J.value,Q-1),$.indexOf(` +`)>-1&&(he?$=$.split(` +`).map(function(Z){return" "+Z}).join(` +`).slice(2):$=` +`+$.split(` +`).map(function(Z){return" "+Z}).join(` +`))):$=U.stylize("[Circular]","special")),E(G)){if(he&&se.match(/^\d+$/))return $;G=JSON.stringify(""+se),G.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(G=G.slice(1,-1),G=U.stylize(G,"name")):(G=G.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),G=U.stylize(G,"string"))}return G+": "+$}function h(U,W,Q){var ue=0,se=U.reduce(function(he,G){return ue++,G.indexOf(` +`)>=0&&ue++,he+G.replace(/\u001b\[\d\d?m/g,"").length+1},0);return se>60?Q[0]+(W===""?"":W+` + `)+" "+U.join(`, + `)+" "+Q[1]:Q[0]+W+" "+U.join(", ")+" "+Q[1]}X.types=BM();function v(U){return Array.isArray(U)}X.isArray=v;function p(U){return typeof U=="boolean"}X.isBoolean=p;function T(U){return U===null}X.isNull=T;function l(U){return U==null}X.isNullOrUndefined=l;function _(U){return typeof U=="number"}X.isNumber=_;function w(U){return typeof U=="string"}X.isString=w;function S(U){return typeof U=="symbol"}X.isSymbol=S;function E(U){return U===void 0}X.isUndefined=E;function m(U){return b(U)&&P(U)==="[object RegExp]"}X.isRegExp=m,X.types.isRegExp=m;function b(U){return typeof U=="object"&&U!==null}X.isObject=b;function d(U){return b(U)&&P(U)==="[object Date]"}X.isDate=d,X.types.isDate=d;function u(U){return b(U)&&(P(U)==="[object Error]"||U instanceof Error)}X.isError=u,X.types.isNativeError=u;function y(U){return typeof U=="function"}X.isFunction=y;function f(U){return U===null||typeof U=="boolean"||typeof U=="number"||typeof U=="string"||typeof U=="symbol"||typeof U>"u"}X.isPrimitive=f,X.isBuffer=NM();function P(U){return Object.prototype.toString.call(U)}function L(U){return U<10?"0"+U.toString(10):U.toString(10)}var z=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function F(){var U=new Date,W=[L(U.getHours()),L(U.getMinutes()),L(U.getSeconds())].join(":");return[U.getDate(),z[U.getMonth()],W].join(" ")}X.log=function(){console.log("%s - %s",F(),X.format.apply(X,arguments))},X.inherits=Yv(),X._extend=function(U,W){if(!W||!b(W))return U;for(var Q=Object.keys(W),ue=Q.length;ue--;)U[Q[ue]]=W[Q[ue]];return U};function B(U,W){return Object.prototype.hasOwnProperty.call(U,W)}var O=typeof Symbol<"u"?Symbol("util.promisify.custom"):void 0;X.promisify=function(W){if(typeof W!="function")throw new TypeError('The "original" argument must be of type Function');if(O&&W[O]){var Q=W[O];if(typeof Q!="function")throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(Q,O,{value:Q,enumerable:!1,writable:!1,configurable:!0}),Q}function Q(){for(var ue,se,he=new Promise(function(J,Z){ue=J,se=Z}),G=[],$=0;$"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function c(E){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(b){return b.__proto__||Object.getPrototypeOf(b)},c(E)}var h={},v,p;function T(E,m,b){b||(b=Error);function d(y,f,P){return typeof m=="string"?m:m(y,f,P)}var u=function(y){r(P,y);var f=a(P);function P(L,z,F){var B;return t(this,P),B=f.call(this,d(L,z,F)),B.code=E,B}return A(P)}(b);h[E]=u}function l(E,m){if(Array.isArray(E)){var b=E.length;return E=E.map(function(d){return String(d)}),b>2?"one of ".concat(m," ").concat(E.slice(0,b-1).join(", "),", or ")+E[b-1]:b===2?"one of ".concat(m," ").concat(E[0]," or ").concat(E[1]):"of ".concat(m," ").concat(E[0])}else return"of ".concat(m," ").concat(String(E))}function _(E,m,b){return E.substr(!b||b<0?0:+b,m.length)===m}function w(E,m,b){return(b===void 0||b>E.length)&&(b=E.length),E.substring(b-m.length,b)===m}function S(E,m,b){return typeof b!="number"&&(b=0),b+m.length>E.length?!1:E.indexOf(m,b)!==-1}T("ERR_AMBIGUOUS_ARGUMENT",'The "%s" argument is ambiguous. %s',TypeError),T("ERR_INVALID_ARG_TYPE",function(E,m,b){v===void 0&&(v=X_()),v(typeof E=="string","'name' must be a string");var d;typeof m=="string"&&_(m,"not ")?(d="must not be",m=m.replace(/^not /,"")):d="must be";var u;if(w(E," argument"))u="The ".concat(E," ").concat(d," ").concat(l(m,"type"));else{var y=S(E,".")?"property":"argument";u='The "'.concat(E,'" ').concat(y," ").concat(d," ").concat(l(m,"type"))}return u+=". Received type ".concat(g(b)),u},TypeError),T("ERR_INVALID_ARG_VALUE",function(E,m){var b=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"is invalid";p===void 0&&(p=g1());var d=p.inspect(m);return d.length>128&&(d="".concat(d.slice(0,128),"...")),"The argument '".concat(E,"' ").concat(b,". Received ").concat(d)},TypeError,RangeError),T("ERR_INVALID_RETURN_VALUE",function(E,m,b){var d;return b&&b.constructor&&b.constructor.name?d="instance of ".concat(b.constructor.name):d="type ".concat(g(b)),"Expected ".concat(E,' to be returned from the "').concat(m,'"')+" function but got ".concat(d,".")},TypeError),T("ERR_MISSING_ARGS",function(){for(var E=arguments.length,m=new Array(E),b=0;b0,"At least one arg needs to be specified");var d="The ",u=m.length;switch(m=m.map(function(y){return'"'.concat(y,'"')}),u){case 1:d+="".concat(m[0]," argument");break;case 2:d+="".concat(m[0]," and ").concat(m[1]," arguments");break;default:d+=m.slice(0,u-1).join(", "),d+=", and ".concat(m[u-1]," arguments");break}return"".concat(d," must be specified")},TypeError),H.exports.codes=h}}),P4=Ye({"node_modules/assert/build/internal/assert/assertion_error.js"(X,H){"use strict";function g(N,U){var W=Object.keys(N);if(Object.getOwnPropertySymbols){var Q=Object.getOwnPropertySymbols(N);U&&(Q=Q.filter(function(ue){return Object.getOwnPropertyDescriptor(N,ue).enumerable})),W.push.apply(W,Q)}return W}function x(N){for(var U=1;U"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function p(N){return Function.toString.call(N).indexOf("[native code]")!==-1}function T(N,U){return T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(Q,ue){return Q.__proto__=ue,Q},T(N,U)}function l(N){return l=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(W){return W.__proto__||Object.getPrototypeOf(W)},l(N)}function _(N){"@babel/helpers - typeof";return _=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(U){return typeof U}:function(U){return U&&typeof Symbol=="function"&&U.constructor===Symbol&&U!==Symbol.prototype?"symbol":typeof U},_(N)}var w=g1(),S=w.inspect,E=ZM(),m=E.codes.ERR_INVALID_ARG_TYPE;function b(N,U,W){return(W===void 0||W>N.length)&&(W=N.length),N.substring(W-U.length,W)===U}function d(N,U){if(U=Math.floor(U),N.length==0||U==0)return"";var W=N.length*U;for(U=Math.floor(Math.log(U)/Math.log(2));U;)N+=N,U--;return N+=N.substring(0,W-N.length),N}var u="",y="",f="",P="",L={deepStrictEqual:"Expected values to be strictly deep-equal:",strictEqual:"Expected values to be strictly equal:",strictEqualObject:'Expected "actual" to be reference-equal to "expected":',deepEqual:"Expected values to be loosely deep-equal:",equal:"Expected values to be loosely equal:",notDeepStrictEqual:'Expected "actual" not to be strictly deep-equal to:',notStrictEqual:'Expected "actual" to be strictly unequal to:',notStrictEqualObject:'Expected "actual" not to be reference-equal to "expected":',notDeepEqual:'Expected "actual" not to be loosely deep-equal to:',notEqual:'Expected "actual" to be loosely unequal to:',notIdentical:"Values identical but not reference-equal:"},z=10;function F(N){var U=Object.keys(N),W=Object.create(Object.getPrototypeOf(N));return U.forEach(function(Q){W[Q]=N[Q]}),Object.defineProperty(W,"message",{value:N.message}),W}function B(N){return S(N,{compact:!1,customInspect:!1,depth:1e3,maxArrayLength:1/0,showHidden:!1,breakLength:1/0,showProxy:!1,sorted:!0,getters:!0})}function O(N,U,W){var Q="",ue="",se=0,he="",G=!1,$=B(N),J=$.split(` +`),Z=B(U).split(` +`),re=0,ne="";if(W==="strictEqual"&&_(N)==="object"&&_(U)==="object"&&N!==null&&U!==null&&(W="strictEqualObject"),J.length===1&&Z.length===1&&J[0]!==Z[0]){var j=J[0].length+Z[0].length;if(j<=z){if((_(N)!=="object"||N===null)&&(_(U)!=="object"||U===null)&&(N!==0||U!==0))return"".concat(L[W],` + +`)+"".concat(J[0]," !== ").concat(Z[0],` +`)}else if(W!=="strictEqualObject"){var ee=process.stderr&&process.stderr.isTTY?process.stderr.columns:80;if(j2&&(ne=` + `.concat(d(" ",re),"^"),re=0)}}}for(var ie=J[J.length-1],fe=Z[Z.length-1];ie===fe&&(re++<2?he=` + `.concat(ie).concat(he):Q=ie,J.pop(),Z.pop(),!(J.length===0||Z.length===0));)ie=J[J.length-1],fe=Z[Z.length-1];var be=Math.max(J.length,Z.length);if(be===0){var Ae=$.split(` +`);if(Ae.length>30)for(Ae[26]="".concat(u,"...").concat(P);Ae.length>27;)Ae.pop();return"".concat(L.notIdentical,` + +`).concat(Ae.join(` +`),` +`)}re>3&&(he=` +`.concat(u,"...").concat(P).concat(he),G=!0),Q!==""&&(he=` + `.concat(Q).concat(he),Q="");var Be=0,Ie=L[W]+` +`.concat(y,"+ actual").concat(P," ").concat(f,"- expected").concat(P),Ze=" ".concat(u,"...").concat(P," Lines skipped");for(re=0;re1&&re>2&&(at>4?(ue+=` +`.concat(u,"...").concat(P),G=!0):at>3&&(ue+=` + `.concat(Z[re-2]),Be++),ue+=` + `.concat(Z[re-1]),Be++),se=re,Q+=` +`.concat(f,"-").concat(P," ").concat(Z[re]),Be++;else if(Z.length1&&re>2&&(at>4?(ue+=` +`.concat(u,"...").concat(P),G=!0):at>3&&(ue+=` + `.concat(J[re-2]),Be++),ue+=` + `.concat(J[re-1]),Be++),se=re,ue+=` +`.concat(y,"+").concat(P," ").concat(J[re]),Be++;else{var it=Z[re],et=J[re],lt=et!==it&&(!b(et,",")||et.slice(0,-1)!==it);lt&&b(it,",")&&it.slice(0,-1)===et&&(lt=!1,et+=","),lt?(at>1&&re>2&&(at>4?(ue+=` +`.concat(u,"...").concat(P),G=!0):at>3&&(ue+=` + `.concat(J[re-2]),Be++),ue+=` + `.concat(J[re-1]),Be++),se=re,ue+=` +`.concat(y,"+").concat(P," ").concat(et),Q+=` +`.concat(f,"-").concat(P," ").concat(it),Be+=2):(ue+=Q,Q="",(at===1||re===0)&&(ue+=` + `.concat(et),Be++))}if(Be>20&&re30)for(j[26]="".concat(u,"...").concat(P);j.length>27;)j.pop();j.length===1?se=W.call(this,"".concat(ne," ").concat(j[0])):se=W.call(this,"".concat(ne,` + +`).concat(j.join(` +`),` +`))}else{var ee=B(J),ie="",fe=L[G];G==="notDeepEqual"||G==="notEqual"?(ee="".concat(L[G],` + +`).concat(ee),ee.length>1024&&(ee="".concat(ee.slice(0,1021),"..."))):(ie="".concat(B(Z)),ee.length>512&&(ee="".concat(ee.slice(0,509),"...")),ie.length>512&&(ie="".concat(ie.slice(0,509),"...")),G==="deepEqual"||G==="equal"?ee="".concat(fe,` + +`).concat(ee,` + +should equal + +`):ie=" ".concat(G," ").concat(ie)),se=W.call(this,"".concat(ee).concat(ie))}return Error.stackTraceLimit=re,se.generatedMessage=!he,Object.defineProperty(s(se),"name",{value:"AssertionError [ERR_ASSERTION]",enumerable:!1,writable:!0,configurable:!0}),se.code="ERR_ASSERTION",se.actual=J,se.expected=Z,se.operator=G,Error.captureStackTrace&&Error.captureStackTrace(s(se),$),se.stack,se.name="AssertionError",n(se)}return t(Q,[{key:"toString",value:function(){return"".concat(this.name," [").concat(this.code,"]: ").concat(this.message)}},{key:U,value:function(se,he){return S(this,x(x({},he),{},{customInspect:!1,depth:0}))}}]),Q}(c(Error),S.custom);H.exports=I}}),XM=Ye({"node_modules/object-keys/isArguments.js"(X,H){"use strict";var g=Object.prototype.toString;H.exports=function(A){var M=g.call(A),e=M==="[object Arguments]";return e||(e=M!=="[object Array]"&&A!==null&&typeof A=="object"&&typeof A.length=="number"&&A.length>=0&&g.call(A.callee)==="[object Function]"),e}}}),I4=Ye({"node_modules/object-keys/implementation.js"(X,H){"use strict";var g;Object.keys||(x=Object.prototype.hasOwnProperty,A=Object.prototype.toString,M=XM(),e=Object.prototype.propertyIsEnumerable,t=!e.call({toString:null},"toString"),r=e.call(function(){},"prototype"),o=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],a=function(c){var h=c.constructor;return h&&h.prototype===c},i={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},n=function(){if(typeof window>"u")return!1;for(var c in window)try{if(!i["$"+c]&&x.call(window,c)&&window[c]!==null&&typeof window[c]=="object")try{a(window[c])}catch{return!0}}catch{return!0}return!1}(),s=function(c){if(typeof window>"u"||!n)return a(c);try{return a(c)}catch{return!1}},g=function(h){var v=h!==null&&typeof h=="object",p=A.call(h)==="[object Function]",T=M(h),l=v&&A.call(h)==="[object String]",_=[];if(!v&&!p&&!T)throw new TypeError("Object.keys called on a non-object");var w=r&&p;if(l&&h.length>0&&!x.call(h,0))for(var S=0;S0)for(var E=0;E2?arguments[2]:{},h=g(s);x&&(h=M.call(h,Object.getOwnPropertySymbols(s)));for(var v=0;vMe.length)&&(ge=Me.length);for(var ce=0,ze=new Array(ge);ce10)return!0;for(var ge=0;ge57)return!0}return Me.length===10&&Me>=Math.pow(2,32)}function I(Me){return Object.keys(Me).filter(O).concat(s(Me).filter(Object.prototype.propertyIsEnumerable.bind(Me)))}function N(Me,ge){if(Me===ge)return 0;for(var ce=Me.length,ze=ge.length,tt=0,nt=Math.min(ce,ze);tt1?Z-1:0),ne=1;ne1?Z-1:0),ne=1;ne1?Z-1:0),ne=1;ne1?Z-1:0),ne=1;ne0)return t(i);if(s==="number"&&isNaN(i)===!1)return n.long?o(i):r(i);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(i))};function t(i){if(i=String(i),!(i.length>100)){var n=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(i);if(n){var s=parseFloat(n[1]),c=(n[2]||"ms").toLowerCase();switch(c){case"years":case"year":case"yrs":case"yr":case"y":return s*e;case"days":case"day":case"d":return s*M;case"hours":case"hour":case"hrs":case"hr":case"h":return s*A;case"minutes":case"minute":case"mins":case"min":case"m":return s*x;case"seconds":case"second":case"secs":case"sec":case"s":return s*g;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return s;default:return}}}}function r(i){return i>=M?Math.round(i/M)+"d":i>=A?Math.round(i/A)+"h":i>=x?Math.round(i/x)+"m":i>=g?Math.round(i/g)+"s":i+"ms"}function o(i){return a(i,M,"day")||a(i,A,"hour")||a(i,x,"minute")||a(i,g,"second")||i+" ms"}function a(i,n,s){if(!(i=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}X.formatters.j=function(r){try{return JSON.stringify(r)}catch(o){return"[UnexpectedJSONParseError]: "+o.message}};function x(r){var o=this.useColors;if(r[0]=(o?"%c":"")+this.namespace+(o?" %c":" ")+r[0]+(o?"%c ":" ")+"+"+X.humanize(this.diff),!!o){var a="color: "+this.color;r.splice(1,0,a,"color: inherit");var i=0,n=0;r[0].replace(/%[a-zA-Z%]/g,function(s){s!=="%%"&&(i++,s==="%c"&&(n=i))}),r.splice(n,0,a)}}function A(){return typeof console=="object"&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function M(r){try{r==null?X.storage.removeItem("debug"):X.storage.debug=r}catch{}}function e(){var r;try{r=X.storage.debug}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}X.enable(e());function t(){try{return window.localStorage}catch{}}}}),q4=Ye({"node_modules/stream-parser/index.js"(X,H){var g=X_(),x=V4()("stream-parser");H.exports=r;var A=-1,M=0,e=1,t=2;function r(l){var _=l&&typeof l._transform=="function",w=l&&typeof l._write=="function";if(!_&&!w)throw new Error("must pass a Writable or Transform stream in");x("extending Parser into stream"),l._bytes=a,l._skipBytes=i,_&&(l._passthrough=n),_?l._transform=c:l._write=s}function o(l){x("initializing parser stream"),l._parserBytesLeft=0,l._parserBuffers=[],l._parserBuffered=0,l._parserState=A,l._parserCallback=null,typeof l.push=="function"&&(l._parserOutput=l.push.bind(l)),l._parserInit=!0}function a(l,_){g(!this._parserCallback,'there is already a "callback" set!'),g(isFinite(l)&&l>0,'can only buffer a finite number of bytes > 0, got "'+l+'"'),this._parserInit||o(this),x("buffering %o bytes",l),this._parserBytesLeft=l,this._parserCallback=_,this._parserState=M}function i(l,_){g(!this._parserCallback,'there is already a "callback" set!'),g(l>0,'can only skip > 0 bytes, got "'+l+'"'),this._parserInit||o(this),x("skipping %o bytes",l),this._parserBytesLeft=l,this._parserCallback=_,this._parserState=e}function n(l,_){g(!this._parserCallback,'There is already a "callback" set!'),g(l>0,'can only pass through > 0 bytes, got "'+l+'"'),this._parserInit||o(this),x("passing through %o bytes",l),this._parserBytesLeft=l,this._parserCallback=_,this._parserState=t}function s(l,_,w){this._parserInit||o(this),x("write(%o bytes)",l.length),typeof _=="function"&&(w=_),p(this,l,null,w)}function c(l,_,w){this._parserInit||o(this),x("transform(%o bytes)",l.length),typeof _!="function"&&(_=this._parserOutput),p(this,l,_,w)}function h(l,_,w,S){return l._parserBytesLeft<=0?S(new Error("got data but not currently parsing anything")):_.length<=l._parserBytesLeft?function(){return v(l,_,w,S)}:function(){var E=_.slice(0,l._parserBytesLeft);return v(l,E,w,function(m){if(m)return S(m);if(_.length>E.length)return function(){return h(l,_.slice(E.length),w,S)}})}}function v(l,_,w,S){if(l._parserBytesLeft-=_.length,x("%o bytes left for stream piece",l._parserBytesLeft),l._parserState===M?(l._parserBuffers.push(_),l._parserBuffered+=_.length):l._parserState===t&&w(_),l._parserBytesLeft===0){var E=l._parserCallback;if(E&&l._parserState===M&&l._parserBuffers.length>1&&(_=Buffer.concat(l._parserBuffers,l._parserBuffered)),l._parserState!==M&&(_=null),l._parserCallback=null,l._parserBuffered=0,l._parserState=A,l._parserBuffers.splice(0),E){var m=[];_&&m.push(_),w&&m.push(w);var b=E.length>m.length;b&&m.push(T(S));var d=E.apply(l,m);if(!b||S===d)return S}}else return S}var p=T(h);function T(l){return function(){for(var _=l.apply(this,arguments);typeof _=="function";)_=_();return _}}}}),Mu=Ye({"node_modules/probe-image-size/lib/common.js"(X){"use strict";var H=L4().Transform,g=q4();function x(){H.call(this,{readableObjectMode:!0})}x.prototype=Object.create(H.prototype),x.prototype.constructor=x,g(x.prototype),X.ParserStream=x,X.sliceEq=function(M,e,t){for(var r=e,o=0;o>4&15,h=n[4]&15,v=n[5]>>4&15,p=g(n,6),T=8,l=0;lp.width||v.width===p.width&&v.height>p.height?v:p}),c=n.reduce(function(v,p){return v.height>p.height||v.height===p.height&&v.width>p.width?v:p}),h;return s.width>c.height||s.width===c.height&&s.height>c.width?h=s:h=c,h}H.exports.readSizeFromMeta=function(n){var s={sizes:[],transforms:[],item_inf:{},item_loc:{}};if(a(n,s),!!s.sizes.length){var c=i(s.sizes),h=1;s.transforms.forEach(function(p){var T={1:6,2:5,3:8,4:7,5:4,6:3,7:2,8:1},l={1:4,2:3,3:2,4:1,5:6,6:5,7:8,8:7};if(p.type==="imir"&&(p.value===0?h=l[h]:(h=l[h],h=T[h],h=T[h])),p.type==="irot")for(var _=0;_0&&!this.aborted;){var t=this.ifds_to_read.shift();t.offset&&this.scan_ifd(t.id,t.offset,M)}},A.prototype.read_uint16=function(M){var e=this.input;if(M+2>e.length)throw g("unexpected EOF","EBADDATA");return this.big_endian?e[M]*256+e[M+1]:e[M]+e[M+1]*256},A.prototype.read_uint32=function(M){var e=this.input;if(M+4>e.length)throw g("unexpected EOF","EBADDATA");return this.big_endian?e[M]*16777216+e[M+1]*65536+e[M+2]*256+e[M+3]:e[M]+e[M+1]*256+e[M+2]*65536+e[M+3]*16777216},A.prototype.is_subifd_link=function(M,e){return M===0&&e===34665||M===0&&e===34853||M===34665&&e===40965},A.prototype.exif_format_length=function(M){switch(M){case 1:case 2:case 6:case 7:return 1;case 3:case 8:return 2;case 4:case 9:case 11:return 4;case 5:case 10:case 12:return 8;default:return 0}},A.prototype.exif_format_read=function(M,e){var t;switch(M){case 1:case 2:return t=this.input[e],t;case 6:return t=this.input[e],t|(t&128)*33554430;case 3:return t=this.read_uint16(e),t;case 8:return t=this.read_uint16(e),t|(t&32768)*131070;case 4:return t=this.read_uint32(e),t;case 9:return t=this.read_uint32(e),t|0;case 5:case 10:case 11:case 12:return null;case 7:return null;default:return null}},A.prototype.scan_ifd=function(M,e,t){var r=this.read_uint16(e);e+=2;for(var o=0;othis.input.length)throw g("unexpected EOF","EBADDATA");for(var p=[],T=h,l=0;l0&&(this.ifds_to_read.push({id:a,offset:p[0]}),v=!0);var w={is_big_endian:this.big_endian,ifd:M,tag:a,format:i,count:n,entry_offset:e+this.start,data_length:c,data_offset:h+this.start,value:p,is_subifd_link:v};if(t(w)===!1){this.aborted=!0;return}e+=12}M===0&&this.ifds_to_read.push({id:1,offset:this.read_uint32(e)})},H.exports.ExifParser=A,H.exports.get_orientation=function(M){var e=0;try{return new A(M,0,M.length).each(function(t){if(t.ifd===0&&t.tag===274&&Array.isArray(t.value))return e=t.value[0],!1}),e}catch{return-1}}}}),G4=Ye({"node_modules/probe-image-size/lib/parse_sync/avif.js"(X,H){"use strict";var g=Mu().str2arr,x=Mu().sliceEq,A=Mu().readUInt32BE,M=H4(),e=g3(),t=g("ftyp");H.exports=function(r){if(x(r,4,t)){var o=M.unbox(r,0);if(o){var a=M.getMimeType(o.data);if(a){for(var i,n=o.end;;){var s=M.unbox(r,n);if(!s)break;if(n=s.end,s.boxtype==="mdat")return;if(s.boxtype==="meta"){i=s.data;break}}if(i){var c=M.readSizeFromMeta(i);if(c){var h={width:c.width,height:c.height,type:a.type,mime:a.mime,wUnits:"px",hUnits:"px"};if(c.variants.length>1&&(h.variants=c.variants),c.orientation&&(h.orientation=c.orientation),c.exif_location&&c.exif_location.offset+c.exif_location.length<=r.length){var v=A(r,c.exif_location.offset),p=r.slice(c.exif_location.offset+v+4,c.exif_location.offset+c.exif_location.length),T=e.get_orientation(p);T>0&&(h.orientation=T)}return h}}}}}}}}),W4=Ye({"node_modules/probe-image-size/lib/parse_sync/bmp.js"(X,H){"use strict";var g=Mu().str2arr,x=Mu().sliceEq,A=Mu().readUInt16LE,M=g("BM");H.exports=function(e){if(!(e.length<26)&&x(e,0,M))return{width:A(e,18),height:A(e,22),type:"bmp",mime:"image/bmp",wUnits:"px",hUnits:"px"}}}}),Z4=Ye({"node_modules/probe-image-size/lib/parse_sync/gif.js"(X,H){"use strict";var g=Mu().str2arr,x=Mu().sliceEq,A=Mu().readUInt16LE,M=g("GIF87a"),e=g("GIF89a");H.exports=function(t){if(!(t.length<10)&&!(!x(t,0,M)&&!x(t,0,e)))return{width:A(t,6),height:A(t,8),type:"gif",mime:"image/gif",wUnits:"px",hUnits:"px"}}}}),X4=Ye({"node_modules/probe-image-size/lib/parse_sync/ico.js"(X,H){"use strict";var g=Mu().readUInt16LE,x=0,A=1,M=16;H.exports=function(e){var t=g(e,0),r=g(e,2),o=g(e,4);if(!(t!==x||r!==A||!o)){for(var a=[],i={width:0,height:0},n=0;ni.width||c>i.height)&&(i=h)}return{width:i.width,height:i.height,variants:a,type:"ico",mime:"image/x-icon",wUnits:"px",hUnits:"px"}}}}}),Y4=Ye({"node_modules/probe-image-size/lib/parse_sync/jpeg.js"(X,H){"use strict";var g=Mu().readUInt16BE,x=Mu().str2arr,A=Mu().sliceEq,M=g3(),e=x("Exif\0\0");H.exports=function(t){if(!(t.length<2)&&!(t[0]!==255||t[1]!==216||t[2]!==255))for(var r=2;;){for(;;){if(t.length-r<2)return;if(t[r++]===255)break}for(var o=t[r++],a;o===255;)o=t[r++];if(208<=o&&o<=217||o===1)a=0;else if(192<=o&&o<=254){if(t.length-r<2)return;a=g(t,r)-2,r+=2}else return;if(o===217||o===218)return;var i;if(o===225&&a>=10&&A(t,r,e)&&(i=M.get_orientation(t.slice(r+6,r+a))),a>=5&&192<=o&&o<=207&&o!==196&&o!==200&&o!==204){if(t.length-r0&&(n.orientation=i),n}r+=a}}}}),K4=Ye({"node_modules/probe-image-size/lib/parse_sync/png.js"(X,H){"use strict";var g=Mu().str2arr,x=Mu().sliceEq,A=Mu().readUInt32BE,M=g(`\x89PNG\r + +`),e=g("IHDR");H.exports=function(t){if(!(t.length<24)&&x(t,0,M)&&x(t,12,e))return{width:A(t,16),height:A(t,20),type:"png",mime:"image/png",wUnits:"px",hUnits:"px"}}}}),J4=Ye({"node_modules/probe-image-size/lib/parse_sync/psd.js"(X,H){"use strict";var g=Mu().str2arr,x=Mu().sliceEq,A=Mu().readUInt32BE,M=g("8BPS\0");H.exports=function(e){if(!(e.length<22)&&x(e,0,M))return{width:A(e,18),height:A(e,14),type:"psd",mime:"image/vnd.adobe.photoshop",wUnits:"px",hUnits:"px"}}}}),$4=Ye({"node_modules/probe-image-size/lib/parse_sync/svg.js"(X,H){"use strict";function g(s){return s===32||s===9||s===13||s===10}function x(s){return typeof s=="number"&&isFinite(s)&&s>0}function A(s){var c=0,h=s.length;for(s[0]===239&&s[1]===187&&s[2]===191&&(c=3);c]*>/,e=/^<([-_.:a-zA-Z0-9]+:)?svg\s/,t=/[^-]\bwidth="([^%]+?)"|[^-]\bwidth='([^%]+?)'/,r=/\bheight="([^%]+?)"|\bheight='([^%]+?)'/,o=/\bview[bB]ox="(.+?)"|\bview[bB]ox='(.+?)'/,a=/in$|mm$|cm$|pt$|pc$|px$|em$|ex$/;function i(s){var c=s.match(t),h=s.match(r),v=s.match(o);return{width:c&&(c[1]||c[2]),height:h&&(h[1]||h[2]),viewbox:v&&(v[1]||v[2])}}function n(s){return a.test(s)?s.match(a)[0]:"px"}H.exports=function(s){if(A(s)){for(var c="",h=0;h>14&16383)+1,type:"webp",mime:"image/webp",wUnits:"px",hUnits:"px"}}}function i(n,s){return{width:(n[s+6]<<16|n[s+5]<<8|n[s+4])+1,height:(n[s+9]<n.length)){for(;s+8=10?c=c||o(n,s+8):p==="VP8L"&&T>=9?c=c||a(n,s+8):p==="VP8X"&&T>=10?c=c||i(n,s+8):p==="EXIF"&&(h=e.get_orientation(n.slice(s+8,s+8+T)),s=1/0),s+=8+T}if(c)return h>0&&(c.orientation=h),c}}}}}),t9=Ye({"node_modules/probe-image-size/lib/parsers_sync.js"(X,H){"use strict";H.exports={avif:G4(),bmp:W4(),gif:Z4(),ico:X4(),jpeg:Y4(),png:K4(),psd:J4(),svg:$4(),tiff:Q4(),webp:e9()}}}),r9=Ye({"node_modules/probe-image-size/sync.js"(X,H){"use strict";var g=t9();function x(A){for(var M=Object.keys(g),e=0;e0;)P=c.c2p(E+B*u),B--;for(B=0;z===void 0&&B0;)F=h.c2p(m+B*y),B--;if(PG[0];if($||J){var Z=f+I/2,re=z+N/2;se+="transform:"+A(Z+"px",re+"px")+"scale("+($?-1:1)+","+(J?-1:1)+")"+A(-Z+"px",-re+"px")+";"}}ue.attr("style",se);var ne=new Promise(function(j){if(_._hasZ)j();else if(_._hasSource)if(_._canvas&&_._canvas.el.width===b&&_._canvas.el.height===d&&_._canvas.source===_.source)j();else{var ee=document.createElement("canvas");ee.width=b,ee.height=d;var ie=ee.getContext("2d",{willReadFrequently:!0});_._image=_._image||new Image;var fe=_._image;fe.onload=function(){ie.drawImage(fe,0,0),_._canvas={el:ee,source:_.source},j()},fe.setAttribute("src",_.source)}}).then(function(){var j,ee;if(_._hasZ)ee=Q(function(be,Ae){var Be=S[Ae][be];return x.isTypedArray(Be)&&(Be=Array.from(Be)),Be}),j=ee.toDataURL("image/png");else if(_._hasSource)if(w)j=_.source;else{var ie=_._canvas.el.getContext("2d",{willReadFrequently:!0}),fe=ie.getImageData(0,0,b,d).data;ee=Q(function(be,Ae){var Be=4*(Ae*b+be);return[fe[Be],fe[Be+1],fe[Be+2],fe[Be+3]]}),j=ee.toDataURL("image/png")}ue.attr({"xlink:href":j,height:N,width:I,x:f,y:z})});a._promises.push(ne)})}}}),o9=Ye({"src/traces/image/style.js"(X,H){"use strict";var g=_n();H.exports=function(A){g.select(A).selectAll(".im image").style("opacity",function(M){return M[0].trace.opacity})}}}),s9=Ye({"src/traces/image/hover.js"(X,H){"use strict";var g=Lc(),x=ta(),A=x.isArrayOrTypedArray,M=d1();H.exports=function(t,r,o){var a=t.cd[0],i=a.trace,n=t.xa,s=t.ya;if(!(g.inbox(r-a.x0,r-(a.x0+a.w*i.dx),0)>0||g.inbox(o-a.y0,o-(a.y0+a.h*i.dy),0)>0)){var c=Math.floor((r-a.x0)/i.dx),h=Math.floor(Math.abs(o-a.y0)/i.dy),v;if(i._hasZ?v=a.z[h][c]:i._hasSource&&(v=i._canvas.el.getContext("2d",{willReadFrequently:!0}).getImageData(c,h,1,1).data),!!v){var p=a.hi||i.hoverinfo,T;if(p){var l=p.split("+");l.indexOf("all")!==-1&&(l=["color"]),l.indexOf("color")!==-1&&(T=!0)}var _=M.colormodel[i.colormodel],w=_.colormodel||i.colormodel,S=w.length,E=i._scaler(v),m=_.suffix,b=[];(i.hovertemplate||T)&&(b.push("["+[E[0]+m[0],E[1]+m[1],E[2]+m[2]].join(", ")),S===4&&b.push(", "+E[3]+m[3]),b.push("]"),b=b.join(""),t.extraText=w.toUpperCase()+": "+b);var d;A(i.hovertext)&&A(i.hovertext[h])?d=i.hovertext[h][c]:A(i.text)&&A(i.text[h])&&(d=i.text[h][c]);var u=s.c2p(a.y0+(h+.5)*i.dy),y=a.x0+(c+.5)*i.dx,f=a.y0+(h+.5)*i.dy,P="["+v.slice(0,i.colormodel.length).join(", ")+"]";return[x.extendFlat(t,{index:[h,c],x0:n.c2p(a.x0+c*i.dx),x1:n.c2p(a.x0+(c+1)*i.dx),y0:u,y1:u,color:E,xVal:y,xLabelVal:y,yVal:f,yLabelVal:f,zLabelVal:P,text:d,hovertemplateLabels:{zLabel:P,colorLabel:b,"color[0]Label":E[0]+m[0],"color[1]Label":E[1]+m[1],"color[2]Label":E[2]+m[2],"color[3]Label":E[3]+m[3]}})]}}}}}),l9=Ye({"src/traces/image/event_data.js"(X,H){"use strict";H.exports=function(x,A){return"xVal"in A&&(x.x=A.xVal),"yVal"in A&&(x.y=A.yVal),A.xa&&(x.xaxis=A.xa),A.ya&&(x.yaxis=A.ya),x.color=A.color,x.colormodel=A.trace.colormodel,x.z||(x.z=A.color),x}}}),u9=Ye({"src/traces/image/index.js"(X,H){"use strict";H.exports={attributes:IM(),supplyDefaults:i4(),calc:i9(),plot:n9(),style:o9(),hoverPoints:s9(),eventData:l9(),moduleType:"trace",name:"image",basePlotModule:Pf(),categories:["cartesian","svg","2dMap","noSortingByValue"],animatable:!1,meta:{}}}}),c9=Ye({"lib/image.js"(X,H){"use strict";H.exports=u9()}}),i0=Ye({"src/traces/pie/attributes.js"(X,H){"use strict";var g=Pl(),x=Wu().attributes,A=Au(),M=Gf(),e=xs().hovertemplateAttrs,t=xs().texttemplateAttrs,r=Oo().extendFlat,o=Uh().pattern,a=A({editType:"plot",arrayOk:!0,colorEditType:"plot"});H.exports={labels:{valType:"data_array",editType:"calc"},label0:{valType:"number",dflt:0,editType:"calc"},dlabel:{valType:"number",dflt:1,editType:"calc"},values:{valType:"data_array",editType:"calc"},marker:{colors:{valType:"data_array",editType:"calc"},line:{color:{valType:"color",dflt:M.defaultLine,arrayOk:!0,editType:"style"},width:{valType:"number",min:0,dflt:0,arrayOk:!0,editType:"style"},editType:"calc"},pattern:o,editType:"calc"},text:{valType:"data_array",editType:"plot"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"style"},scalegroup:{valType:"string",dflt:"",editType:"calc"},textinfo:{valType:"flaglist",flags:["label","text","value","percent"],extras:["none"],editType:"calc"},hoverinfo:r({},g.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:e({},{keys:["label","color","value","percent","text"]}),texttemplate:t({editType:"plot"},{keys:["label","color","value","percent","text"]}),textposition:{valType:"enumerated",values:["inside","outside","auto","none"],dflt:"auto",arrayOk:!0,editType:"plot"},textfont:r({},a,{}),insidetextorientation:{valType:"enumerated",values:["horizontal","radial","tangential","auto"],dflt:"auto",editType:"plot"},insidetextfont:r({},a,{}),outsidetextfont:r({},a,{}),automargin:{valType:"boolean",dflt:!1,editType:"plot"},title:{text:{valType:"string",dflt:"",editType:"plot"},font:r({},a,{}),position:{valType:"enumerated",values:["top left","top center","top right","middle center","bottom left","bottom center","bottom right"],editType:"plot"},editType:"plot"},domain:x({name:"pie",trace:!0,editType:"calc"}),hole:{valType:"number",min:0,max:1,dflt:0,editType:"calc"},sort:{valType:"boolean",dflt:!0,editType:"calc"},direction:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",dflt:0,editType:"calc"},pull:{valType:"number",min:0,max:1,dflt:0,arrayOk:!0,editType:"calc"}}}}),n0=Ye({"src/traces/pie/defaults.js"(X,H){"use strict";var g=jo(),x=ta(),A=i0(),M=Wu().defaults,e=gd().handleText,t=ta().coercePattern;function r(i,n){var s=x.isArrayOrTypedArray(i),c=x.isArrayOrTypedArray(n),h=Math.min(s?i.length:1/0,c?n.length:1/0);if(isFinite(h)||(h=0),h&&c){for(var v,p=0;p0){v=!0;break}}v||(h=0)}return{hasLabels:s,hasValues:c,len:h}}function o(i,n,s,c,h){var v=c("marker.line.width");v&&c("marker.line.color",h?void 0:s.paper_bgcolor);var p=c("marker.colors");t(c,"marker.pattern",p),i.marker&&!n.marker.pattern.fgcolor&&(n.marker.pattern.fgcolor=i.marker.colors),n.marker.pattern.bgcolor||(n.marker.pattern.bgcolor=s.paper_bgcolor)}function a(i,n,s,c){function h(f,P){return x.coerce(i,n,A,f,P)}var v=h("labels"),p=h("values"),T=r(v,p),l=T.len;if(n._hasLabels=T.hasLabels,n._hasValues=T.hasValues,!n._hasLabels&&n._hasValues&&(h("label0"),h("dlabel")),!l){n.visible=!1;return}n._length=l,o(i,n,c,h,!0),h("scalegroup");var _=h("text"),w=h("texttemplate"),S;if(w||(S=h("textinfo",x.isArrayOrTypedArray(_)?"text+percent":"percent")),h("hovertext"),h("hovertemplate"),w||S&&S!=="none"){var E=h("textposition");e(i,n,c,h,E,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1});var m=Array.isArray(E)||E==="auto",b=m||E==="outside";b&&h("automargin"),(E==="inside"||E==="auto"||Array.isArray(E))&&h("insidetextorientation")}else S==="none"&&h("textposition","none");M(n,c,h);var d=h("hole"),u=h("title.text");if(u){var y=h("title.position",d?"middle center":"top center");!d&&y==="middle center"&&(n.title.position="top center"),x.coerceFont(h,"title.font",c.font)}h("sort"),h("direction"),h("rotation"),h("pull")}H.exports={handleLabelsAndValues:r,handleMarkerDefaults:o,supplyDefaults:a}}}),y3=Ye({"src/traces/pie/layout_attributes.js"(X,H){"use strict";H.exports={hiddenlabels:{valType:"data_array",editType:"calc"},piecolorway:{valType:"colorlist",editType:"calc"},extendpiecolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),f9=Ye({"src/traces/pie/layout_defaults.js"(X,H){"use strict";var g=ta(),x=y3();H.exports=function(M,e){function t(r,o){return g.coerce(M,e,x,r,o)}t("hiddenlabels"),t("piecolorway",e.colorway),t("extendpiecolors")}}}),y1=Ye({"src/traces/pie/calc.js"(X,H){"use strict";var g=jo(),x=bh(),A=Fn(),M={};function e(a,i){var n=[],s=a._fullLayout,c=s.hiddenlabels||[],h=i.labels,v=i.marker.colors||[],p=i.values,T=i._length,l=i._hasValues&&T,_,w;if(i.dlabel)for(h=new Array(T),_=0;_=0});var P=i.type==="funnelarea"?b:i.sort;return P&&n.sort(function(L,z){return z.v-L.v}),n[0]&&(n[0].vTotal=m),n}function t(a){return function(n,s){return!n||(n=x(n),!n.isValid())?!1:(n=A.addOpacity(n,n.getAlpha()),a[s]||(a[s]=n),n)}}function r(a,i){var n=(i||{}).type;n||(n="pie");var s=a._fullLayout,c=a.calcdata,h=s[n+"colorway"],v=s["_"+n+"colormap"];s["extend"+n+"colors"]&&(h=o(h,M));for(var p=0,T=0;T0&&(tt+=St*ce.pxmid[0],nt+=St*ce.pxmid[1])}ce.cxFinal=tt,ce.cyFinal=nt;function Ot(yt,Fe,Ke,Ne){var Ee=Ne*(Fe[0]-yt[0]),Ve=Ne*(Fe[1]-yt[1]);return"a"+Ne*fe.r+","+Ne*fe.r+" 0 "+ce.largeArc+(Ke?" 1 ":" 0 ")+Ee+","+Ve}var jt=be.hole;if(ce.v===fe.vTotal){var ur="M"+(tt+ce.px0[0])+","+(nt+ce.px0[1])+Ot(ce.px0,ce.pxmid,!0,1)+Ot(ce.pxmid,ce.px0,!0,1)+"Z";jt?Ct.attr("d","M"+(tt+jt*ce.px0[0])+","+(nt+jt*ce.px0[1])+Ot(ce.px0,ce.pxmid,!1,jt)+Ot(ce.pxmid,ce.px0,!1,jt)+"Z"+ur):Ct.attr("d",ur)}else{var ar=Ot(ce.px0,ce.px1,!0,1);if(jt){var Cr=1-jt;Ct.attr("d","M"+(tt+jt*ce.px1[0])+","+(nt+jt*ce.px1[1])+Ot(ce.px1,ce.px0,!1,jt)+"l"+Cr*ce.px0[0]+","+Cr*ce.px0[1]+ar+"Z")}else Ct.attr("d","M"+tt+","+nt+"l"+ce.px0[0]+","+ce.px0[1]+ar+"Z")}he($,ce,fe);var vr=h.castOption(be.textposition,ce.pts),_r=Qe.selectAll("g.slicetext").data(ce.text&&vr!=="none"?[0]:[]);_r.enter().append("g").classed("slicetext",!0),_r.exit().remove(),_r.each(function(){var yt=t.ensureSingle(g.select(this),"text","",function(Le){Le.attr("data-notex",1)}),Fe=t.ensureUniformFontSize($,vr==="outside"?w(be,ce,re.font):S(be,ce,re.font));yt.text(ce.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(e.font,Fe).call(a.convertToTspans,$);var Ke=e.bBox(yt.node()),Ne;if(vr==="outside")Ne=z(Ke,ce);else if(Ne=m(Ke,ce,fe),vr==="auto"&&Ne.scale<1){var Ee=t.ensureUniformFontSize($,be.outsidetextfont);yt.call(e.font,Ee),Ke=e.bBox(yt.node()),Ne=z(Ke,ce)}var Ve=Ne.textPosAngle,ke=Ve===void 0?ce.pxmid:se(fe.r,Ve);if(Ne.targetX=tt+ke[0]*Ne.rCenter+(Ne.x||0),Ne.targetY=nt+ke[1]*Ne.rCenter+(Ne.y||0),G(Ne,Ke),Ne.outside){var Te=Ne.targetY;ce.yLabelMin=Te-Ke.height/2,ce.yLabelMid=Te,ce.yLabelMax=Te+Ke.height/2,ce.labelExtraX=0,ce.labelExtraY=0,Ie=!0}Ne.fontSize=Fe.size,n(be.type,Ne,re),ee[ze].transform=Ne,t.setTransormAndDisplay(yt,Ne)})});var Ze=g.select(this).selectAll("g.titletext").data(be.title.text?[0]:[]);if(Ze.enter().append("g").classed("titletext",!0),Ze.exit().remove(),Ze.each(function(){var ce=t.ensureSingle(g.select(this),"text","",function(nt){nt.attr("data-notex",1)}),ze=be.title.text;be._meta&&(ze=t.templateString(ze,be._meta)),ce.text(ze).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(e.font,be.title.font).call(a.convertToTspans,$);var tt;be.title.position==="middle center"?tt=F(fe):tt=B(fe,ne),ce.attr("transform",o(tt.x,tt.y)+r(Math.min(1,tt.scale))+o(tt.tx,tt.ty))}),Ie&&U(Be,be),l(Ae,be),Ie&&be.automargin){var at=e.bBox(ie.node()),it=be.domain,et=ne.w*(it.x[1]-it.x[0]),lt=ne.h*(it.y[1]-it.y[0]),Me=(.5*et-fe.r)/ne.w,ge=(.5*lt-fe.r)/ne.h;x.autoMargin($,"pie."+be.uid+".automargin",{xl:it.x[0]-Me,xr:it.x[1]+Me,yb:it.y[0]-ge,yt:it.y[1]+ge,l:Math.max(fe.cx-fe.r-at.left,0),r:Math.max(at.right-(fe.cx+fe.r),0),b:Math.max(at.bottom-(fe.cy+fe.r),0),t:Math.max(fe.cy-fe.r-at.top,0),pad:5})}})});setTimeout(function(){j.selectAll("tspan").each(function(){var ee=g.select(this);ee.attr("dy")&&ee.attr("dy",ee.attr("dy"))})},0)}function l($,J){$.each(function(Z){var re=g.select(this);if(!Z.labelExtraX&&!Z.labelExtraY){re.select("path.textline").remove();return}var ne=re.select("g.slicetext text");Z.transform.targetX+=Z.labelExtraX,Z.transform.targetY+=Z.labelExtraY,t.setTransormAndDisplay(ne,Z.transform);var j=Z.cxFinal+Z.pxmid[0],ee=Z.cyFinal+Z.pxmid[1],ie="M"+j+","+ee,fe=(Z.yLabelMax-Z.yLabelMin)*(Z.pxmid[0]<0?-1:1)/4;if(Z.labelExtraX){var be=Z.labelExtraX*Z.pxmid[1]/Z.pxmid[0],Ae=Z.yLabelMid+Z.labelExtraY-(Z.cyFinal+Z.pxmid[1]);Math.abs(be)>Math.abs(Ae)?ie+="l"+Ae*Z.pxmid[0]/Z.pxmid[1]+","+Ae+"H"+(j+Z.labelExtraX+fe):ie+="l"+Z.labelExtraX+","+be+"v"+(Ae-be)+"h"+fe}else ie+="V"+(Z.yLabelMid+Z.labelExtraY)+"h"+fe;t.ensureSingle(re,"path","textline").call(M.stroke,J.outsidetextfont.color).attr({"stroke-width":Math.min(2,J.outsidetextfont.size/8),d:ie,fill:"none"})})}function _($,J,Z){var re=Z[0],ne=re.cx,j=re.cy,ee=re.trace,ie=ee.type==="funnelarea";"_hasHoverLabel"in ee||(ee._hasHoverLabel=!1),"_hasHoverEvent"in ee||(ee._hasHoverEvent=!1),$.on("mouseover",function(fe){var be=J._fullLayout,Ae=J._fullData[ee.index];if(!(J._dragging||be.hovermode===!1)){var Be=Ae.hoverinfo;if(Array.isArray(Be)&&(Be=A.castHoverinfo({hoverinfo:[h.castOption(Be,fe.pts)],_module:ee._module},be,0)),Be==="all"&&(Be="label+text+value+percent+name"),Ae.hovertemplate||Be!=="none"&&Be!=="skip"&&Be){var Ie=fe.rInscribed||0,Ze=ne+fe.pxmid[0]*(1-Ie),at=j+fe.pxmid[1]*(1-Ie),it=be.separators,et=[];if(Be&&Be.indexOf("label")!==-1&&et.push(fe.label),fe.text=h.castOption(Ae.hovertext||Ae.text,fe.pts),Be&&Be.indexOf("text")!==-1){var lt=fe.text;t.isValidTextValue(lt)&&et.push(lt)}fe.value=fe.v,fe.valueLabel=h.formatPieValue(fe.v,it),Be&&Be.indexOf("value")!==-1&&et.push(fe.valueLabel),fe.percent=fe.v/re.vTotal,fe.percentLabel=h.formatPiePercent(fe.percent,it),Be&&Be.indexOf("percent")!==-1&&et.push(fe.percentLabel);var Me=Ae.hoverlabel,ge=Me.font,ce=[];A.loneHover({trace:ee,x0:Ze-Ie*re.r,x1:Ze+Ie*re.r,y:at,_x0:ie?ne+fe.TL[0]:Ze-Ie*re.r,_x1:ie?ne+fe.TR[0]:Ze+Ie*re.r,_y0:ie?j+fe.TL[1]:at-Ie*re.r,_y1:ie?j+fe.BL[1]:at+Ie*re.r,text:et.join("
"),name:Ae.hovertemplate||Be.indexOf("name")!==-1?Ae.name:void 0,idealAlign:fe.pxmid[0]<0?"left":"right",color:h.castOption(Me.bgcolor,fe.pts)||fe.color,borderColor:h.castOption(Me.bordercolor,fe.pts),fontFamily:h.castOption(ge.family,fe.pts),fontSize:h.castOption(ge.size,fe.pts),fontColor:h.castOption(ge.color,fe.pts),nameLength:h.castOption(Me.namelength,fe.pts),textAlign:h.castOption(Me.align,fe.pts),hovertemplate:h.castOption(Ae.hovertemplate,fe.pts),hovertemplateLabels:fe,eventData:[v(fe,Ae)]},{container:be._hoverlayer.node(),outerContainer:be._paper.node(),gd:J,inOut_bbox:ce}),fe.bbox=ce[0],ee._hasHoverLabel=!0}ee._hasHoverEvent=!0,J.emit("plotly_hover",{points:[v(fe,Ae)],event:g.event})}}),$.on("mouseout",function(fe){var be=J._fullLayout,Ae=J._fullData[ee.index],Be=g.select(this).datum();ee._hasHoverEvent&&(fe.originalEvent=g.event,J.emit("plotly_unhover",{points:[v(Be,Ae)],event:g.event}),ee._hasHoverEvent=!1),ee._hasHoverLabel&&(A.loneUnhover(be._hoverlayer.node()),ee._hasHoverLabel=!1)}),$.on("click",function(fe){var be=J._fullLayout,Ae=J._fullData[ee.index];J._dragging||be.hovermode===!1||(J._hoverdata=[v(fe,Ae)],A.click(J,g.event))})}function w($,J,Z){var re=h.castOption($.outsidetextfont.color,J.pts)||h.castOption($.textfont.color,J.pts)||Z.color,ne=h.castOption($.outsidetextfont.family,J.pts)||h.castOption($.textfont.family,J.pts)||Z.family,j=h.castOption($.outsidetextfont.size,J.pts)||h.castOption($.textfont.size,J.pts)||Z.size,ee=h.castOption($.outsidetextfont.weight,J.pts)||h.castOption($.textfont.weight,J.pts)||Z.weight,ie=h.castOption($.outsidetextfont.style,J.pts)||h.castOption($.textfont.style,J.pts)||Z.style,fe=h.castOption($.outsidetextfont.variant,J.pts)||h.castOption($.textfont.variant,J.pts)||Z.variant,be=h.castOption($.outsidetextfont.textcase,J.pts)||h.castOption($.textfont.textcase,J.pts)||Z.textcase,Ae=h.castOption($.outsidetextfont.lineposition,J.pts)||h.castOption($.textfont.lineposition,J.pts)||Z.lineposition,Be=h.castOption($.outsidetextfont.shadow,J.pts)||h.castOption($.textfont.shadow,J.pts)||Z.shadow;return{color:re,family:ne,size:j,weight:ee,style:ie,variant:fe,textcase:be,lineposition:Ae,shadow:Be}}function S($,J,Z){var re=h.castOption($.insidetextfont.color,J.pts);!re&&$._input.textfont&&(re=h.castOption($._input.textfont.color,J.pts));var ne=h.castOption($.insidetextfont.family,J.pts)||h.castOption($.textfont.family,J.pts)||Z.family,j=h.castOption($.insidetextfont.size,J.pts)||h.castOption($.textfont.size,J.pts)||Z.size,ee=h.castOption($.insidetextfont.weight,J.pts)||h.castOption($.textfont.weight,J.pts)||Z.weight,ie=h.castOption($.insidetextfont.style,J.pts)||h.castOption($.textfont.style,J.pts)||Z.style,fe=h.castOption($.insidetextfont.variant,J.pts)||h.castOption($.textfont.variant,J.pts)||Z.variant,be=h.castOption($.insidetextfont.textcase,J.pts)||h.castOption($.textfont.textcase,J.pts)||Z.textcase,Ae=h.castOption($.insidetextfont.lineposition,J.pts)||h.castOption($.textfont.lineposition,J.pts)||Z.lineposition,Be=h.castOption($.insidetextfont.shadow,J.pts)||h.castOption($.textfont.shadow,J.pts)||Z.shadow;return{color:re||M.contrast(J.color),family:ne,size:j,weight:ee,style:ie,variant:fe,textcase:be,lineposition:Ae,shadow:Be}}function E($,J){for(var Z,re,ne=0;ne<$.length;ne++)if(Z=$[ne][0],re=Z.trace,re.title.text){var j=re.title.text;re._meta&&(j=t.templateString(j,re._meta));var ee=e.tester.append("text").attr("data-notex",1).text(j).call(e.font,re.title.font).call(a.convertToTspans,J),ie=e.bBox(ee.node(),!0);Z.titleBox={width:ie.width,height:ie.height},ee.remove()}}function m($,J,Z){var re=Z.r||J.rpx1,ne=J.rInscribed,j=J.startangle===J.stopangle;if(j)return{rCenter:1-ne,scale:0,rotate:0,textPosAngle:0};var ee=J.ring,ie=ee===1&&Math.abs(J.startangle-J.stopangle)===Math.PI*2,fe=J.halfangle,be=J.midangle,Ae=Z.trace.insidetextorientation,Be=Ae==="horizontal",Ie=Ae==="tangential",Ze=Ae==="radial",at=Ae==="auto",it=[],et;if(!at){var lt=function(Qe,Ct){if(b(J,Qe)){var St=Math.abs(Qe-J.startangle),Ot=Math.abs(Qe-J.stopangle),jt=St=-4;Me-=2)lt(Math.PI*Me,"tan");for(Me=4;Me>=-4;Me-=2)lt(Math.PI*(Me+1),"tan")}if(Be||Ze){for(Me=4;Me>=-4;Me-=2)lt(Math.PI*(Me+1.5),"rad");for(Me=4;Me>=-4;Me-=2)lt(Math.PI*(Me+.5),"rad")}}if(ie||at||Be){var ge=Math.sqrt($.width*$.width+$.height*$.height);if(et={scale:ne*re*2/ge,rCenter:1-ne,rotate:0},et.textPosAngle=(J.startangle+J.stopangle)/2,et.scale>=1)return et;it.push(et)}(at||Ze)&&(et=d($,re,ee,fe,be),et.textPosAngle=(J.startangle+J.stopangle)/2,it.push(et)),(at||Ie)&&(et=u($,re,ee,fe,be),et.textPosAngle=(J.startangle+J.stopangle)/2,it.push(et));for(var ce=0,ze=0,tt=0;tt=1)break}return it[ce]}function b($,J){var Z=$.startangle,re=$.stopangle;return Z>J&&J>re||Z0?1:-1)/2,y:j/(1+Z*Z/(re*re)),outside:!0}}function F($){var J=Math.sqrt($.titleBox.width*$.titleBox.width+$.titleBox.height*$.titleBox.height);return{x:$.cx,y:$.cy,scale:$.trace.hole*$.r*2/J,tx:0,ty:-$.titleBox.height/2+$.trace.title.font.size}}function B($,J){var Z=1,re=1,ne,j=$.trace,ee={x:$.cx,y:$.cy},ie={tx:0,ty:0};ie.ty+=j.title.font.size,ne=N(j),j.title.position.indexOf("top")!==-1?(ee.y-=(1+ne)*$.r,ie.ty-=$.titleBox.height):j.title.position.indexOf("bottom")!==-1&&(ee.y+=(1+ne)*$.r);var fe=O($.r,$.trace.aspectratio),be=J.w*(j.domain.x[1]-j.domain.x[0])/2;return j.title.position.indexOf("left")!==-1?(be=be+fe,ee.x-=(1+ne)*fe,ie.tx+=$.titleBox.width/2):j.title.position.indexOf("center")!==-1?be*=2:j.title.position.indexOf("right")!==-1&&(be=be+fe,ee.x+=(1+ne)*fe,ie.tx-=$.titleBox.width/2),Z=be/$.titleBox.width,re=I($,J)/$.titleBox.height,{x:ee.x,y:ee.y,scale:Math.min(Z,re),tx:ie.tx,ty:ie.ty}}function O($,J){return $/(J===void 0?1:J)}function I($,J){var Z=$.trace,re=J.h*(Z.domain.y[1]-Z.domain.y[0]);return Math.min($.titleBox.height,re/2)}function N($){var J=$.pull;if(!J)return 0;var Z;if(t.isArrayOrTypedArray(J))for(J=0,Z=0;Z<$.pull.length;Z++)$.pull[Z]>J&&(J=$.pull[Z]);return J}function U($,J){var Z,re,ne,j,ee,ie,fe,be,Ae,Be,Ie,Ze,at;function it(ge,ce){return ge.pxmid[1]-ce.pxmid[1]}function et(ge,ce){return ce.pxmid[1]-ge.pxmid[1]}function lt(ge,ce){ce||(ce={});var ze=ce.labelExtraY+(re?ce.yLabelMax:ce.yLabelMin),tt=re?ge.yLabelMin:ge.yLabelMax,nt=re?ge.yLabelMax:ge.yLabelMin,Qe=ge.cyFinal+ee(ge.px0[1],ge.px1[1]),Ct=ze-tt,St,Ot,jt,ur,ar,Cr;if(Ct*fe>0&&(ge.labelExtraY=Ct),!!t.isArrayOrTypedArray(J.pull))for(Ot=0;Ot=(h.castOption(J.pull,jt.pts)||0))&&((ge.pxmid[1]-jt.pxmid[1])*fe>0?(ur=jt.cyFinal+ee(jt.px0[1],jt.px1[1]),Ct=ur-tt-ge.labelExtraY,Ct*fe>0&&(ge.labelExtraY+=Ct)):(nt+ge.labelExtraY-Qe)*fe>0&&(St=3*ie*Math.abs(Ot-Be.indexOf(ge)),ar=jt.cxFinal+j(jt.px0[0],jt.px1[0]),Cr=ar+St-(ge.cxFinal+ge.pxmid[0])-ge.labelExtraX,Cr*ie>0&&(ge.labelExtraX+=Cr)))}for(re=0;re<2;re++)for(ne=re?it:et,ee=re?Math.max:Math.min,fe=re?1:-1,Z=0;Z<2;Z++){for(j=Z?Math.max:Math.min,ie=Z?1:-1,be=$[re][Z],be.sort(ne),Ae=$[1-re][Z],Be=Ae.concat(be),Ze=[],Ie=0;Ie1?(be=Z.r,Ae=be/ne.aspectratio):(Ae=Z.r,be=Ae*ne.aspectratio),be*=(1+ne.baseratio)/2,fe=be*Ae}ee=Math.min(ee,fe/Z.vTotal)}for(re=0;re<$.length;re++)if(Z=$[re][0],ne=Z.trace,ne.scalegroup===ie){var Be=ee*Z.vTotal;ne.type==="funnelarea"&&(Be/=(1+ne.baseratio)/2,Be/=ne.aspectratio),Z.r=Math.sqrt(Be)}}}function ue($){var J=$[0],Z=J.r,re=J.trace,ne=h.getRotationAngle(re.rotation),j=2*Math.PI/J.vTotal,ee="px0",ie="px1",fe,be,Ae;if(re.direction==="counterclockwise"){for(fe=0;fe<$.length&&$[fe].hidden;fe++);if(fe===$.length)return;ne+=j*$[fe].v,j*=-1,ee="px1",ie="px0"}for(Ae=se(Z,ne),fe=0;fe<$.length;fe++)be=$[fe],!be.hidden&&(be[ee]=Ae,be.startangle=ne,ne+=j*be.v/2,be.pxmid=se(Z,ne),be.midangle=ne,ne+=j*be.v/2,Ae=se(Z,ne),be.stopangle=ne,be[ie]=Ae,be.largeArc=be.v>J.vTotal/2?1:0,be.halfangle=Math.PI*Math.min(be.v/J.vTotal,.5),be.ring=1-re.hole,be.rInscribed=L(be,J))}function se($,J){return[$*Math.sin(J),-$*Math.cos(J)]}function he($,J,Z){var re=$._fullLayout,ne=Z.trace,j=ne.texttemplate,ee=ne.textinfo;if(!j&&ee&&ee!=="none"){var ie=ee.split("+"),fe=function(ce){return ie.indexOf(ce)!==-1},be=fe("label"),Ae=fe("text"),Be=fe("value"),Ie=fe("percent"),Ze=re.separators,at;if(at=be?[J.label]:[],Ae){var it=h.getFirstFilled(ne.text,J.pts);p(it)&&at.push(it)}Be&&at.push(h.formatPieValue(J.v,Ze)),Ie&&at.push(h.formatPiePercent(J.v/Z.vTotal,Ze)),J.text=at.join("
")}function et(ce){return{label:ce.label,value:ce.v,valueLabel:h.formatPieValue(ce.v,re.separators),percent:ce.v/Z.vTotal,percentLabel:h.formatPiePercent(ce.v/Z.vTotal,re.separators),color:ce.color,text:ce.text,customdata:t.castOption(ne,ce.i,"customdata")}}if(j){var lt=t.castOption(ne,J.i,"texttemplate");if(!lt)J.text="";else{var Me=et(J),ge=h.getFirstFilled(ne.text,J.pts);(p(ge)||ge==="")&&(Me.text=ge),J.text=t.texttemplateString(lt,Me,$._fullLayout._d3locale,Me,ne._meta||{})}}}function G($,J){var Z=$.rotate*Math.PI/180,re=Math.cos(Z),ne=Math.sin(Z),j=(J.left+J.right)/2,ee=(J.top+J.bottom)/2;$.textX=j*re-ee*ne,$.textY=j*ne+ee*re,$.noCenter=!0}H.exports={plot:T,formatSliceLabel:he,transformInsideText:m,determineInsideTextFont:S,positionTitleOutside:B,prerenderTitles:E,layoutAreas:W,attachFxHandlers:_,computeTransform:G}}}),p9=Ye({"src/traces/pie/style.js"(X,H){"use strict";var g=_n(),x=a1(),A=wp().resizeText;H.exports=function(e){var t=e._fullLayout._pielayer.selectAll(".trace");A(e,t,"pie"),t.each(function(r){var o=r[0],a=o.trace,i=g.select(this);i.style({opacity:a.opacity}),i.selectAll("path.surface").each(function(n){g.select(this).call(x,n,a,e)})})}}}),d9=Ye({"src/traces/pie/base_plot.js"(X){"use strict";var H=Gu();X.name="pie",X.plot=function(g,x,A,M){H.plotBasePlot(X.name,g,x,A,M)},X.clean=function(g,x,A,M){H.cleanBasePlot(X.name,g,x,A,M)}}}),v9=Ye({"src/traces/pie/index.js"(X,H){"use strict";H.exports={attributes:i0(),supplyDefaults:n0().supplyDefaults,supplyLayoutDefaults:f9(),layoutAttributes:y3(),calc:y1().calc,crossTraceCalc:y1().crossTraceCalc,plot:_3().plot,style:p9(),styleOne:a1(),moduleType:"trace",name:"pie",basePlotModule:d9(),categories:["pie-like","pie","showLegend"],meta:{}}}}),m9=Ye({"lib/pie.js"(X,H){"use strict";H.exports=v9()}}),g9=Ye({"src/traces/sunburst/base_plot.js"(X){"use strict";var H=Gu();X.name="sunburst",X.plot=function(g,x,A,M){H.plotBasePlot(X.name,g,x,A,M)},X.clean=function(g,x,A,M){H.cleanBasePlot(X.name,g,x,A,M)}}}),QM=Ye({"src/traces/sunburst/constants.js"(X,H){"use strict";H.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"linear",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"]}}}),Y_=Ye({"src/traces/sunburst/attributes.js"(X,H){"use strict";var g=Pl(),x=xs().hovertemplateAttrs,A=xs().texttemplateAttrs,M=tu(),e=Wu().attributes,t=i0(),r=QM(),o=Oo().extendFlat,a=Uh().pattern;H.exports={labels:{valType:"data_array",editType:"calc"},parents:{valType:"data_array",editType:"calc"},values:{valType:"data_array",editType:"calc"},branchvalues:{valType:"enumerated",values:["remainder","total"],dflt:"remainder",editType:"calc"},count:{valType:"flaglist",flags:["branches","leaves"],dflt:"leaves",editType:"calc"},level:{valType:"any",editType:"plot",anim:!0},maxdepth:{valType:"integer",editType:"plot",dflt:-1},marker:o({colors:{valType:"data_array",editType:"calc"},line:{color:o({},t.marker.line.color,{dflt:null}),width:o({},t.marker.line.width,{dflt:1}),editType:"calc"},pattern:a,editType:"calc"},M("marker",{colorAttr:"colors",anim:!1})),leaf:{opacity:{valType:"number",editType:"style",min:0,max:1},editType:"plot"},text:t.text,textinfo:{valType:"flaglist",flags:["label","text","value","current path","percent root","percent entry","percent parent"],extras:["none"],editType:"plot"},texttemplate:A({editType:"plot"},{keys:r.eventDataKeys.concat(["label","value"])}),hovertext:t.hovertext,hoverinfo:o({},g.hoverinfo,{flags:["label","text","value","name","current path","percent root","percent entry","percent parent"],dflt:"label+text+value+name"}),hovertemplate:x({},{keys:r.eventDataKeys}),textfont:t.textfont,insidetextorientation:t.insidetextorientation,insidetextfont:t.insidetextfont,outsidetextfont:o({},t.outsidetextfont,{}),rotation:{valType:"angle",dflt:0,editType:"plot"},sort:t.sort,root:{color:{valType:"color",editType:"calc",dflt:"rgba(0,0,0,0)"},editType:"calc"},domain:e({name:"sunburst",trace:!0,editType:"calc"})}}}),eE=Ye({"src/traces/sunburst/layout_attributes.js"(X,H){"use strict";H.exports={sunburstcolorway:{valType:"colorlist",editType:"calc"},extendsunburstcolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),y9=Ye({"src/traces/sunburst/defaults.js"(X,H){"use strict";var g=ta(),x=Y_(),A=Wu().defaults,M=gd().handleText,e=n0().handleMarkerDefaults,t=Su(),r=t.hasColorscale,o=t.handleDefaults;H.exports=function(i,n,s,c){function h(S,E){return g.coerce(i,n,x,S,E)}var v=h("labels"),p=h("parents");if(!v||!v.length||!p||!p.length){n.visible=!1;return}var T=h("values");T&&T.length?h("branchvalues"):h("count"),h("level"),h("maxdepth"),e(i,n,c,h);var l=n._hasColorscale=r(i,"marker","colors")||(i.marker||{}).coloraxis;l&&o(i,n,c,h,{prefix:"marker.",cLetter:"c"}),h("leaf.opacity",l?1:.7);var _=h("text");h("texttemplate"),n.texttemplate||h("textinfo",g.isArrayOrTypedArray(_)?"text+label":"label"),h("hovertext"),h("hovertemplate");var w="auto";M(i,n,c,h,w,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),h("insidetextorientation"),h("sort"),h("rotation"),h("root.color"),A(n,c,h),n._length=null}}}),_9=Ye({"src/traces/sunburst/layout_defaults.js"(X,H){"use strict";var g=ta(),x=eE();H.exports=function(M,e){function t(r,o){return g.coerce(M,e,x,r,o)}t("sunburstcolorway",e.colorway),t("extendsunburstcolors")}}}),K_=Ye({"node_modules/d3-hierarchy/dist/d3-hierarchy.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X):(g=g||self,x(g.d3=g.d3||{}))})(X,function(g){"use strict";function x(Ne,Ee){return Ne.parent===Ee.parent?1:2}function A(Ne){return Ne.reduce(M,0)/Ne.length}function M(Ne,Ee){return Ne+Ee.x}function e(Ne){return 1+Ne.reduce(t,0)}function t(Ne,Ee){return Math.max(Ne,Ee.y)}function r(Ne){for(var Ee;Ee=Ne.children;)Ne=Ee[0];return Ne}function o(Ne){for(var Ee;Ee=Ne.children;)Ne=Ee[Ee.length-1];return Ne}function a(){var Ne=x,Ee=1,Ve=1,ke=!1;function Te(Le){var rt,dt=0;Le.eachAfter(function(Kt){var sr=Kt.children;sr?(Kt.x=A(sr),Kt.y=e(sr)):(Kt.x=rt?dt+=Ne(Kt,rt):0,Kt.y=0,rt=Kt)});var xt=r(Le),It=o(Le),Bt=xt.x-Ne(xt,It)/2,Gt=It.x+Ne(It,xt)/2;return Le.eachAfter(ke?function(Kt){Kt.x=(Kt.x-Le.x)*Ee,Kt.y=(Le.y-Kt.y)*Ve}:function(Kt){Kt.x=(Kt.x-Bt)/(Gt-Bt)*Ee,Kt.y=(1-(Le.y?Kt.y/Le.y:1))*Ve})}return Te.separation=function(Le){return arguments.length?(Ne=Le,Te):Ne},Te.size=function(Le){return arguments.length?(ke=!1,Ee=+Le[0],Ve=+Le[1],Te):ke?null:[Ee,Ve]},Te.nodeSize=function(Le){return arguments.length?(ke=!0,Ee=+Le[0],Ve=+Le[1],Te):ke?[Ee,Ve]:null},Te}function i(Ne){var Ee=0,Ve=Ne.children,ke=Ve&&Ve.length;if(!ke)Ee=1;else for(;--ke>=0;)Ee+=Ve[ke].value;Ne.value=Ee}function n(){return this.eachAfter(i)}function s(Ne){var Ee=this,Ve,ke=[Ee],Te,Le,rt;do for(Ve=ke.reverse(),ke=[];Ee=Ve.pop();)if(Ne(Ee),Te=Ee.children,Te)for(Le=0,rt=Te.length;Le=0;--Te)Ve.push(ke[Te]);return this}function h(Ne){for(var Ee=this,Ve=[Ee],ke=[],Te,Le,rt;Ee=Ve.pop();)if(ke.push(Ee),Te=Ee.children,Te)for(Le=0,rt=Te.length;Le=0;)Ve+=ke[Te].value;Ee.value=Ve})}function p(Ne){return this.eachBefore(function(Ee){Ee.children&&Ee.children.sort(Ne)})}function T(Ne){for(var Ee=this,Ve=l(Ee,Ne),ke=[Ee];Ee!==Ve;)Ee=Ee.parent,ke.push(Ee);for(var Te=ke.length;Ne!==Ve;)ke.splice(Te,0,Ne),Ne=Ne.parent;return ke}function l(Ne,Ee){if(Ne===Ee)return Ne;var Ve=Ne.ancestors(),ke=Ee.ancestors(),Te=null;for(Ne=Ve.pop(),Ee=ke.pop();Ne===Ee;)Te=Ne,Ne=Ve.pop(),Ee=ke.pop();return Te}function _(){for(var Ne=this,Ee=[Ne];Ne=Ne.parent;)Ee.push(Ne);return Ee}function w(){var Ne=[];return this.each(function(Ee){Ne.push(Ee)}),Ne}function S(){var Ne=[];return this.eachBefore(function(Ee){Ee.children||Ne.push(Ee)}),Ne}function E(){var Ne=this,Ee=[];return Ne.each(function(Ve){Ve!==Ne&&Ee.push({source:Ve.parent,target:Ve})}),Ee}function m(Ne,Ee){var Ve=new f(Ne),ke=+Ne.value&&(Ve.value=Ne.value),Te,Le=[Ve],rt,dt,xt,It;for(Ee==null&&(Ee=d);Te=Le.pop();)if(ke&&(Te.value=+Te.data.value),(dt=Ee(Te.data))&&(It=dt.length))for(Te.children=new Array(It),xt=It-1;xt>=0;--xt)Le.push(rt=Te.children[xt]=new f(dt[xt])),rt.parent=Te,rt.depth=Te.depth+1;return Ve.eachBefore(y)}function b(){return m(this).eachBefore(u)}function d(Ne){return Ne.children}function u(Ne){Ne.data=Ne.data.data}function y(Ne){var Ee=0;do Ne.height=Ee;while((Ne=Ne.parent)&&Ne.height<++Ee)}function f(Ne){this.data=Ne,this.depth=this.height=0,this.parent=null}f.prototype=m.prototype={constructor:f,count:n,each:s,eachAfter:h,eachBefore:c,sum:v,sort:p,path:T,ancestors:_,descendants:w,leaves:S,links:E,copy:b};var P=Array.prototype.slice;function L(Ne){for(var Ee=Ne.length,Ve,ke;Ee;)ke=Math.random()*Ee--|0,Ve=Ne[Ee],Ne[Ee]=Ne[ke],Ne[ke]=Ve;return Ne}function z(Ne){for(var Ee=0,Ve=(Ne=L(P.call(Ne))).length,ke=[],Te,Le;Ee0&&Ve*Ve>ke*ke+Te*Te}function I(Ne,Ee){for(var Ve=0;Vext?(Te=(It+xt-Le)/(2*It),dt=Math.sqrt(Math.max(0,xt/It-Te*Te)),Ve.x=Ne.x-Te*ke-dt*rt,Ve.y=Ne.y-Te*rt+dt*ke):(Te=(It+Le-xt)/(2*It),dt=Math.sqrt(Math.max(0,Le/It-Te*Te)),Ve.x=Ee.x+Te*ke-dt*rt,Ve.y=Ee.y+Te*rt+dt*ke)):(Ve.x=Ee.x+Ve.r,Ve.y=Ee.y)}function se(Ne,Ee){var Ve=Ne.r+Ee.r-1e-6,ke=Ee.x-Ne.x,Te=Ee.y-Ne.y;return Ve>0&&Ve*Ve>ke*ke+Te*Te}function he(Ne){var Ee=Ne._,Ve=Ne.next._,ke=Ee.r+Ve.r,Te=(Ee.x*Ve.r+Ve.x*Ee.r)/ke,Le=(Ee.y*Ve.r+Ve.y*Ee.r)/ke;return Te*Te+Le*Le}function G(Ne){this._=Ne,this.next=null,this.previous=null}function $(Ne){if(!(Te=Ne.length))return 0;var Ee,Ve,ke,Te,Le,rt,dt,xt,It,Bt,Gt;if(Ee=Ne[0],Ee.x=0,Ee.y=0,!(Te>1))return Ee.r;if(Ve=Ne[1],Ee.x=-Ve.r,Ve.x=Ee.r,Ve.y=0,!(Te>2))return Ee.r+Ve.r;ue(Ve,Ee,ke=Ne[2]),Ee=new G(Ee),Ve=new G(Ve),ke=new G(ke),Ee.next=ke.previous=Ve,Ve.next=Ee.previous=ke,ke.next=Ve.previous=Ee;e:for(dt=3;dt0)throw new Error("cycle");return dt}return Ve.id=function(ke){return arguments.length?(Ne=re(ke),Ve):Ne},Ve.parentId=function(ke){return arguments.length?(Ee=re(ke),Ve):Ee},Ve}function ce(Ne,Ee){return Ne.parent===Ee.parent?1:2}function ze(Ne){var Ee=Ne.children;return Ee?Ee[0]:Ne.t}function tt(Ne){var Ee=Ne.children;return Ee?Ee[Ee.length-1]:Ne.t}function nt(Ne,Ee,Ve){var ke=Ve/(Ee.i-Ne.i);Ee.c-=ke,Ee.s+=Ve,Ne.c+=ke,Ee.z+=Ve,Ee.m+=Ve}function Qe(Ne){for(var Ee=0,Ve=0,ke=Ne.children,Te=ke.length,Le;--Te>=0;)Le=ke[Te],Le.z+=Ee,Le.m+=Ee,Ee+=Le.s+(Ve+=Le.c)}function Ct(Ne,Ee,Ve){return Ne.a.parent===Ee.parent?Ne.a:Ve}function St(Ne,Ee){this._=Ne,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=Ee}St.prototype=Object.create(f.prototype);function Ot(Ne){for(var Ee=new St(Ne,0),Ve,ke=[Ee],Te,Le,rt,dt;Ve=ke.pop();)if(Le=Ve._.children)for(Ve.children=new Array(dt=Le.length),rt=dt-1;rt>=0;--rt)ke.push(Te=Ve.children[rt]=new St(Le[rt],rt)),Te.parent=Ve;return(Ee.parent=new St(null,0)).children=[Ee],Ee}function jt(){var Ne=ce,Ee=1,Ve=1,ke=null;function Te(It){var Bt=Ot(It);if(Bt.eachAfter(Le),Bt.parent.m=-Bt.z,Bt.eachBefore(rt),ke)It.eachBefore(xt);else{var Gt=It,Kt=It,sr=It;It.eachBefore(function(Ga){Ga.xKt.x&&(Kt=Ga),Ga.depth>sr.depth&&(sr=Ga)});var sa=Gt===Kt?1:Ne(Gt,Kt)/2,Aa=sa-Gt.x,La=Ee/(Kt.x+sa+Aa),ka=Ve/(sr.depth||1);It.eachBefore(function(Ga){Ga.x=(Ga.x+Aa)*La,Ga.y=Ga.depth*ka})}return It}function Le(It){var Bt=It.children,Gt=It.parent.children,Kt=It.i?Gt[It.i-1]:null;if(Bt){Qe(It);var sr=(Bt[0].z+Bt[Bt.length-1].z)/2;Kt?(It.z=Kt.z+Ne(It._,Kt._),It.m=It.z-sr):It.z=sr}else Kt&&(It.z=Kt.z+Ne(It._,Kt._));It.parent.A=dt(It,Kt,It.parent.A||Gt[0])}function rt(It){It._.x=It.z+It.parent.m,It.m+=It.parent.m}function dt(It,Bt,Gt){if(Bt){for(var Kt=It,sr=It,sa=Bt,Aa=Kt.parent.children[0],La=Kt.m,ka=sr.m,Ga=sa.m,Ma=Aa.m,Ua;sa=tt(sa),Kt=ze(Kt),sa&&Kt;)Aa=ze(Aa),sr=tt(sr),sr.a=It,Ua=sa.z+Ga-Kt.z-La+Ne(sa._,Kt._),Ua>0&&(nt(Ct(sa,It,Gt),It,Ua),La+=Ua,ka+=Ua),Ga+=sa.m,La+=Kt.m,Ma+=Aa.m,ka+=sr.m;sa&&!tt(sr)&&(sr.t=sa,sr.m+=Ga-ka),Kt&&!ze(Aa)&&(Aa.t=Kt,Aa.m+=La-Ma,Gt=It)}return Gt}function xt(It){It.x*=Ee,It.y=It.depth*Ve}return Te.separation=function(It){return arguments.length?(Ne=It,Te):Ne},Te.size=function(It){return arguments.length?(ke=!1,Ee=+It[0],Ve=+It[1],Te):ke?null:[Ee,Ve]},Te.nodeSize=function(It){return arguments.length?(ke=!0,Ee=+It[0],Ve=+It[1],Te):ke?[Ee,Ve]:null},Te}function ur(Ne,Ee,Ve,ke,Te){for(var Le=Ne.children,rt,dt=-1,xt=Le.length,It=Ne.value&&(Te-Ve)/Ne.value;++dtGa&&(Ga=It),Wt=La*La*ni,Ma=Math.max(Ga/Wt,Wt/ka),Ma>Ua){La-=It;break}Ua=Ma}rt.push(xt={value:La,dice:sr1?ke:1)},Ve}(ar);function _r(){var Ne=vr,Ee=!1,Ve=1,ke=1,Te=[0],Le=ne,rt=ne,dt=ne,xt=ne,It=ne;function Bt(Kt){return Kt.x0=Kt.y0=0,Kt.x1=Ve,Kt.y1=ke,Kt.eachBefore(Gt),Te=[0],Ee&&Kt.eachBefore(Be),Kt}function Gt(Kt){var sr=Te[Kt.depth],sa=Kt.x0+sr,Aa=Kt.y0+sr,La=Kt.x1-sr,ka=Kt.y1-sr;La=Kt-1){var Ga=Le[Gt];Ga.x0=sa,Ga.y0=Aa,Ga.x1=La,Ga.y1=ka;return}for(var Ma=It[Gt],Ua=sr/2+Ma,ni=Gt+1,Wt=Kt-1;ni>>1;It[zt]ka-Aa){var xr=(sa*Ut+La*Vt)/sr;Bt(Gt,ni,Vt,sa,Aa,xr,ka),Bt(ni,Kt,Ut,xr,Aa,La,ka)}else{var Zr=(Aa*Ut+ka*Vt)/sr;Bt(Gt,ni,Vt,sa,Aa,La,Zr),Bt(ni,Kt,Ut,sa,Zr,La,ka)}}}function Fe(Ne,Ee,Ve,ke,Te){(Ne.depth&1?ur:Ie)(Ne,Ee,Ve,ke,Te)}var Ke=function Ne(Ee){function Ve(ke,Te,Le,rt,dt){if((xt=ke._squarify)&&xt.ratio===Ee)for(var xt,It,Bt,Gt,Kt=-1,sr,sa=xt.length,Aa=ke.value;++Kt1?ke:1)},Ve}(ar);g.cluster=a,g.hierarchy=m,g.pack=ie,g.packEnclose=z,g.packSiblings=J,g.partition=Ze,g.stratify=ge,g.tree=jt,g.treemap=_r,g.treemapBinary=yt,g.treemapDice=Ie,g.treemapResquarify=Ke,g.treemapSlice=ur,g.treemapSliceDice=Fe,g.treemapSquarify=vr,Object.defineProperty(g,"__esModule",{value:!0})})}}),J_=Ye({"src/traces/sunburst/calc.js"(X){"use strict";var H=K_(),g=jo(),x=ta(),A=Su().makeColorScaleFuncFromTrace,M=y1().makePullColorFn,e=y1().generateExtendedColors,t=Su().calc,r=ks().ALMOST_EQUAL,o={},a={},i={};X.calc=function(s,c){var h=s._fullLayout,v=c.ids,p=x.isArrayOrTypedArray(v),T=c.labels,l=c.parents,_=c.values,w=x.isArrayOrTypedArray(_),S=[],E={},m={},b=function(J,Z){E[J]?E[J].push(Z):E[J]=[Z],m[Z]=1},d=function(J){return J||typeof J=="number"},u=function(J){return!w||g(_[J])&&_[J]>=0},y,f,P;p?(y=Math.min(v.length,l.length),f=function(J){return d(v[J])&&u(J)},P=function(J){return String(v[J])}):(y=Math.min(T.length,l.length),f=function(J){return d(T[J])&&u(J)},P=function(J){return String(T[J])}),w&&(y=Math.min(y,_.length));for(var L=0;L1){for(var N=x.randstr(),U=0;U>8&15|H>>4&240,H>>4&15|H&240,(H&15)<<4|H&15,1):g===8?$_(H>>24&255,H>>16&255,H>>8&255,(H&255)/255):g===4?$_(H>>12&15|H>>8&240,H>>8&15|H>>4&240,H>>4&15|H&240,((H&15)<<4|H&15)/255):null):(H=cE.exec(X))?new qh(H[1],H[2],H[3],1):(H=fE.exec(X))?new qh(H[1]*255/100,H[2]*255/100,H[3]*255/100,1):(H=hE.exec(X))?$_(H[1],H[2],H[3],H[4]):(H=pE.exec(X))?$_(H[1]*255/100,H[2]*255/100,H[3]*255/100,H[4]):(H=dE.exec(X))?oE(H[1],H[2]/100,H[3]/100,1):(H=vE.exec(X))?oE(H[1],H[2]/100,H[3]/100,H[4]):A3.hasOwnProperty(X)?aE(A3[X]):X==="transparent"?new qh(NaN,NaN,NaN,0):null}function aE(X){return new qh(X>>16&255,X>>8&255,X&255,1)}function $_(X,H,g,x){return x<=0&&(X=H=g=NaN),new qh(X,H,g,x)}function b3(X){return X instanceof Kv||(X=x1(X)),X?(X=X.rgb(),new qh(X.r,X.g,X.b,X.opacity)):new qh}function Q_(X,H,g,x){return arguments.length===1?b3(X):new qh(X,H,g,x??1)}function qh(X,H,g,x){this.r=+X,this.g=+H,this.b=+g,this.opacity=+x}function iE(){return`#${og(this.r)}${og(this.g)}${og(this.b)}`}function w9(){return`#${og(this.r)}${og(this.g)}${og(this.b)}${og((isNaN(this.opacity)?1:this.opacity)*255)}`}function nE(){let X=ex(this.opacity);return`${X===1?"rgb(":"rgba("}${ng(this.r)}, ${ng(this.g)}, ${ng(this.b)}${X===1?")":`, ${X})`}`}function ex(X){return isNaN(X)?1:Math.max(0,Math.min(1,X))}function ng(X){return Math.max(0,Math.min(255,Math.round(X)||0))}function og(X){return X=ng(X),(X<16?"0":"")+X.toString(16)}function oE(X,H,g,x){return x<=0?X=H=g=NaN:g<=0||g>=1?X=H=NaN:H<=0&&(X=NaN),new Ud(X,H,g,x)}function sE(X){if(X instanceof Ud)return new Ud(X.h,X.s,X.l,X.opacity);if(X instanceof Kv||(X=x1(X)),!X)return new Ud;if(X instanceof Ud)return X;X=X.rgb();var H=X.r/255,g=X.g/255,x=X.b/255,A=Math.min(H,g,x),M=Math.max(H,g,x),e=NaN,t=M-A,r=(M+A)/2;return t?(H===M?e=(g-x)/t+(g0&&r<1?0:e,new Ud(e,t,r,X.opacity)}function w3(X,H,g,x){return arguments.length===1?sE(X):new Ud(X,H,g,x??1)}function Ud(X,H,g,x){this.h=+X,this.s=+H,this.l=+g,this.opacity=+x}function lE(X){return X=(X||0)%360,X<0?X+360:X}function tx(X){return Math.max(0,Math.min(1,X||0))}function T3(X,H,g){return(X<60?H+(g-H)*X/60:X<180?g:X<240?H+(g-H)*(240-X)/60:H)*255}var Jv,sg,lg,s0,jd,uE,cE,fE,hE,pE,dE,vE,A3,S3=Qn({"node_modules/d3-color/src/color.js"(){x3(),Jv=.7,sg=1/Jv,lg="\\s*([+-]?\\d+)\\s*",s0="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",jd="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",uE=/^#([0-9a-f]{3,8})$/,cE=new RegExp(`^rgb\\(${lg},${lg},${lg}\\)$`),fE=new RegExp(`^rgb\\(${jd},${jd},${jd}\\)$`),hE=new RegExp(`^rgba\\(${lg},${lg},${lg},${s0}\\)$`),pE=new RegExp(`^rgba\\(${jd},${jd},${jd},${s0}\\)$`),dE=new RegExp(`^hsl\\(${s0},${jd},${jd}\\)$`),vE=new RegExp(`^hsla\\(${s0},${jd},${jd},${s0}\\)$`),A3={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},o0(Kv,x1,{copy(X){return Object.assign(new this.constructor,this,X)},displayable(){return this.rgb().displayable()},hex:tE,formatHex:tE,formatHex8:x9,formatHsl:b9,formatRgb:rE,toString:rE}),o0(qh,Q_,_1(Kv,{brighter(X){return X=X==null?sg:Math.pow(sg,X),new qh(this.r*X,this.g*X,this.b*X,this.opacity)},darker(X){return X=X==null?Jv:Math.pow(Jv,X),new qh(this.r*X,this.g*X,this.b*X,this.opacity)},rgb(){return this},clamp(){return new qh(ng(this.r),ng(this.g),ng(this.b),ex(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:iE,formatHex:iE,formatHex8:w9,formatRgb:nE,toString:nE})),o0(Ud,w3,_1(Kv,{brighter(X){return X=X==null?sg:Math.pow(sg,X),new Ud(this.h,this.s,this.l*X,this.opacity)},darker(X){return X=X==null?Jv:Math.pow(Jv,X),new Ud(this.h,this.s,this.l*X,this.opacity)},rgb(){var X=this.h%360+(this.h<0)*360,H=isNaN(X)||isNaN(this.s)?0:this.s,g=this.l,x=g+(g<.5?g:1-g)*H,A=2*g-x;return new qh(T3(X>=240?X-240:X+120,A,x),T3(X,A,x),T3(X<120?X+240:X-120,A,x),this.opacity)},clamp(){return new Ud(lE(this.h),tx(this.s),tx(this.l),ex(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let X=ex(this.opacity);return`${X===1?"hsl(":"hsla("}${lE(this.h)}, ${tx(this.s)*100}%, ${tx(this.l)*100}%${X===1?")":`, ${X})`}`}}))}}),M3,E3,mE=Qn({"node_modules/d3-color/src/math.js"(){M3=Math.PI/180,E3=180/Math.PI}});function gE(X){if(X instanceof rv)return new rv(X.l,X.a,X.b,X.opacity);if(X instanceof Mv)return yE(X);X instanceof qh||(X=b3(X));var H=I3(X.r),g=I3(X.g),x=I3(X.b),A=C3((.2225045*H+.7168786*g+.0606169*x)/z3),M,e;return H===g&&g===x?M=e=A:(M=C3((.4360747*H+.3850649*g+.1430804*x)/D3),e=C3((.0139322*H+.0971045*g+.7141733*x)/F3)),new rv(116*A-16,500*(M-A),200*(A-e),X.opacity)}function k3(X,H,g,x){return arguments.length===1?gE(X):new rv(X,H,g,x??1)}function rv(X,H,g,x){this.l=+X,this.a=+H,this.b=+g,this.opacity=+x}function C3(X){return X>_E?Math.pow(X,.3333333333333333):X/B3+O3}function L3(X){return X>ug?X*X*X:B3*(X-O3)}function P3(X){return 255*(X<=.0031308?12.92*X:1.055*Math.pow(X,.4166666666666667)-.055)}function I3(X){return(X/=255)<=.04045?X/12.92:Math.pow((X+.055)/1.055,2.4)}function T9(X){if(X instanceof Mv)return new Mv(X.h,X.c,X.l,X.opacity);if(X instanceof rv||(X=gE(X)),X.a===0&&X.b===0)return new Mv(NaN,0=1?(g=1,H-1):Math.floor(g*H),A=X[x],M=X[x+1],e=x>0?X[x-1]:2*A-M,t=x()=>X}});function SE(X,H){return function(g){return X+g*H}}function E9(X,H,g){return X=Math.pow(X,g),H=Math.pow(H,g)-X,g=1/g,function(x){return Math.pow(X+x*H,g)}}function ix(X,H){var g=H-X;return g?SE(X,g>180||g<-180?g-360*Math.round(g/360):g):T1(isNaN(X)?H:X)}function k9(X){return(X=+X)==1?Hh:function(H,g){return g-H?E9(H,g,X):T1(isNaN(H)?g:H)}}function Hh(X,H){var g=H-X;return g?SE(X,g):T1(isNaN(X)?H:X)}var c0=Qn({"node_modules/d3-interpolate/src/color.js"(){AE()}});function ME(X){return function(H){var g=H.length,x=new Array(g),A=new Array(g),M=new Array(g),e,t;for(e=0;eg&&(M=H.slice(g,M),t[e]?t[e]+=M:t[++e]=M),(x=x[0])===(A=A[0])?t[e]?t[e]+=A:t[++e]=A:(t[++e]=null,r.push({i:e,x:av(x,A)})),g=lx.lastIndex;return g180?a+=360:a-o>180&&(o+=360),n.push({i:i.push(A(i)+"rotate(",null,x)-2,x:av(o,a)})):a&&i.push(A(i)+"rotate("+a+x)}function t(o,a,i,n){o!==a?n.push({i:i.push(A(i)+"skewX(",null,x)-2,x:av(o,a)}):a&&i.push(A(i)+"skewX("+a+x)}function r(o,a,i,n,s,c){if(o!==i||a!==n){var h=s.push(A(s)+"scale(",null,",",null,")");c.push({i:h-4,x:av(o,i)},{i:h-2,x:av(a,n)})}else(i!==1||n!==1)&&s.push(A(s)+"scale("+i+","+n+")")}return function(o,a){var i=[],n=[];return o=X(o),a=X(a),M(o.translateX,o.translateY,a.translateX,a.translateY,i,n),e(o.rotate,a.rotate,i,n),t(o.skewX,a.skewX,i,n),r(o.scaleX,o.scaleY,a.scaleX,a.scaleY,i,n),o=a=null,function(s){for(var c=-1,h=n.length,v;++cux,interpolateArray:()=>C9,interpolateBasis:()=>bE,interpolateBasisClosed:()=>wE,interpolateCubehelix:()=>QE,interpolateCubehelixLong:()=>e5,interpolateDate:()=>RE,interpolateDiscrete:()=>I9,interpolateHcl:()=>KE,interpolateHclLong:()=>JE,interpolateHsl:()=>ZE,interpolateHslLong:()=>XE,interpolateHue:()=>D9,interpolateLab:()=>Z9,interpolateNumber:()=>av,interpolateNumberArray:()=>G3,interpolateObject:()=>zE,interpolateRgb:()=>nx,interpolateRgbBasis:()=>EE,interpolateRgbBasisClosed:()=>kE,interpolateRound:()=>F9,interpolateString:()=>OE,interpolateTransformCss:()=>jE,interpolateTransformSvg:()=>VE,interpolateZoom:()=>GE,piecewise:()=>J9,quantize:()=>Q9});var f0=Qn({"node_modules/d3-interpolate/src/index.js"(){cx(),IE(),H3(),TE(),DE(),R9(),z9(),ox(),W3(),FE(),O9(),BE(),V9(),G9(),CE(),W9(),X9(),Y9(),K9(),$9(),eN()}}),X3=Ye({"src/traces/sunburst/fill_one.js"(X,H){"use strict";var g=Bo(),x=Fn();H.exports=function(M,e,t,r,o){var a=e.data.data,i=a.i,n=o||a.color;if(i>=0){e.i=a.i;var s=t.marker;s.pattern?(!s.colors||!s.pattern.shape)&&(s.color=n,e.color=n):(s.color=n,e.color=n),g.pointStyle(M,t,r,e)}else x.fill(M,n)}}}),t5=Ye({"src/traces/sunburst/style.js"(X,H){"use strict";var g=_n(),x=Fn(),A=ta(),M=wp().resizeText,e=X3();function t(o){var a=o._fullLayout._sunburstlayer.selectAll(".trace");M(o,a,"sunburst"),a.each(function(i){var n=g.select(this),s=i[0],c=s.trace;n.style("opacity",c.opacity),n.selectAll("path.surface").each(function(h){g.select(this).call(r,h,c,o)})})}function r(o,a,i,n){var s=a.data.data,c=!a.children,h=s.i,v=A.castOption(i,h,"marker.line.color")||x.defaultLine,p=A.castOption(i,h,"marker.line.width")||0;o.call(e,a,i,n).style("stroke-width",p).call(x.stroke,v).style("opacity",c?i.leaf.opacity:null)}H.exports={style:t,styleOne:r}}}),$v=Ye({"src/traces/sunburst/helpers.js"(X){"use strict";var H=ta(),g=Fn(),x=Kd(),A=eg();X.findEntryWithLevel=function(r,o){var a;return o&&r.eachAfter(function(i){if(X.getPtId(i)===o)return a=i.copy()}),a||r},X.findEntryWithChild=function(r,o){var a;return r.eachAfter(function(i){for(var n=i.children||[],s=0;s0)},X.getMaxDepth=function(r){return r.maxdepth>=0?r.maxdepth:1/0},X.isHeader=function(r,o){return!(X.isLeaf(r)||r.depth===o._maxDepth-1)};function t(r){return r.data.data.pid}X.getParent=function(r,o){return X.findEntryWithLevel(r,t(o))},X.listPath=function(r,o){var a=r.parent;if(!a)return[];var i=o?[a.data[o]]:[a];return X.listPath(a,o).concat(i)},X.getPath=function(r){return X.listPath(r,"label").join("/")+"/"},X.formatValue=A.formatPieValue,X.formatPercent=function(r,o){var a=H.formatPercent(r,0);return a==="0%"&&(a=A.formatPiePercent(r,o)),a}}}),px=Ye({"src/traces/sunburst/fx.js"(X,H){"use strict";var g=_n(),x=Hn(),A=Qp().appendArrayPointValue,M=Lc(),e=ta(),t=$y(),r=$v(),o=eg(),a=o.formatPieValue;H.exports=function(s,c,h,v,p){var T=v[0],l=T.trace,_=T.hierarchy,w=l.type==="sunburst",S=l.type==="treemap"||l.type==="icicle";"_hasHoverLabel"in l||(l._hasHoverLabel=!1),"_hasHoverEvent"in l||(l._hasHoverEvent=!1);var E=function(d){var u=h._fullLayout;if(!(h._dragging||u.hovermode===!1)){var y=h._fullData[l.index],f=d.data.data,P=f.i,L=r.isHierarchyRoot(d),z=r.getParent(_,d),F=r.getValue(d),B=function(ee){return e.castOption(y,P,ee)},O=B("hovertemplate"),I=M.castHoverinfo(y,u,P),N=u.separators,U;if(O||I&&I!=="none"&&I!=="skip"){var W,Q;w&&(W=T.cx+d.pxmid[0]*(1-d.rInscribed),Q=T.cy+d.pxmid[1]*(1-d.rInscribed)),S&&(W=d._hoverX,Q=d._hoverY);var ue={},se=[],he=[],G=function(ee){return se.indexOf(ee)!==-1};I&&(se=I==="all"?y._module.attributes.hoverinfo.flags:I.split("+")),ue.label=f.label,G("label")&&ue.label&&he.push(ue.label),f.hasOwnProperty("v")&&(ue.value=f.v,ue.valueLabel=a(ue.value,N),G("value")&&he.push(ue.valueLabel)),ue.currentPath=d.currentPath=r.getPath(d.data),G("current path")&&!L&&he.push(ue.currentPath);var $,J=[],Z=function(){J.indexOf($)===-1&&(he.push($),J.push($))};ue.percentParent=d.percentParent=F/r.getValue(z),ue.parent=d.parentString=r.getPtLabel(z),G("percent parent")&&($=r.formatPercent(ue.percentParent,N)+" of "+ue.parent,Z()),ue.percentEntry=d.percentEntry=F/r.getValue(c),ue.entry=d.entry=r.getPtLabel(c),G("percent entry")&&!L&&!d.onPathbar&&($=r.formatPercent(ue.percentEntry,N)+" of "+ue.entry,Z()),ue.percentRoot=d.percentRoot=F/r.getValue(_),ue.root=d.root=r.getPtLabel(_),G("percent root")&&!L&&($=r.formatPercent(ue.percentRoot,N)+" of "+ue.root,Z()),ue.text=B("hovertext")||B("text"),G("text")&&($=ue.text,e.isValidTextValue($)&&he.push($)),U=[i(d,y,p.eventDataKeys)];var re={trace:y,y:Q,_x0:d._x0,_x1:d._x1,_y0:d._y0,_y1:d._y1,text:he.join("
"),name:O||G("name")?y.name:void 0,color:B("hoverlabel.bgcolor")||f.color,borderColor:B("hoverlabel.bordercolor"),fontFamily:B("hoverlabel.font.family"),fontSize:B("hoverlabel.font.size"),fontColor:B("hoverlabel.font.color"),fontWeight:B("hoverlabel.font.weight"),fontStyle:B("hoverlabel.font.style"),fontVariant:B("hoverlabel.font.variant"),nameLength:B("hoverlabel.namelength"),textAlign:B("hoverlabel.align"),hovertemplate:O,hovertemplateLabels:ue,eventData:U};w&&(re.x0=W-d.rInscribed*d.rpx1,re.x1=W+d.rInscribed*d.rpx1,re.idealAlign=d.pxmid[0]<0?"left":"right"),S&&(re.x=W,re.idealAlign=W<0?"left":"right");var ne=[];M.loneHover(re,{container:u._hoverlayer.node(),outerContainer:u._paper.node(),gd:h,inOut_bbox:ne}),U[0].bbox=ne[0],l._hasHoverLabel=!0}if(S){var j=s.select("path.surface");p.styleOne(j,d,y,h,{hovered:!0})}l._hasHoverEvent=!0,h.emit("plotly_hover",{points:U||[i(d,y,p.eventDataKeys)],event:g.event})}},m=function(d){var u=h._fullLayout,y=h._fullData[l.index],f=g.select(this).datum();if(l._hasHoverEvent&&(d.originalEvent=g.event,h.emit("plotly_unhover",{points:[i(f,y,p.eventDataKeys)],event:g.event}),l._hasHoverEvent=!1),l._hasHoverLabel&&(M.loneUnhover(u._hoverlayer.node()),l._hasHoverLabel=!1),S){var P=s.select("path.surface");p.styleOne(P,f,y,h,{hovered:!1})}},b=function(d){var u=h._fullLayout,y=h._fullData[l.index],f=w&&(r.isHierarchyRoot(d)||r.isLeaf(d)),P=r.getPtId(d),L=r.isEntry(d)?r.findEntryWithChild(_,P):r.findEntryWithLevel(_,P),z=r.getPtId(L),F={points:[i(d,y,p.eventDataKeys)],event:g.event};f||(F.nextLevel=z);var B=t.triggerHandler(h,"plotly_"+l.type+"click",F);if(B!==!1&&u.hovermode&&(h._hoverdata=[i(d,y,p.eventDataKeys)],M.click(h,g.event)),!f&&B!==!1&&!h._dragging&&!h._transitioning){x.call("_storeDirectGUIEdit",y,u._tracePreGUI[y.uid],{level:y.level});var O={data:[{level:z}],traces:[l.index]},I={frame:{redraw:!1,duration:p.transitionTime},transition:{duration:p.transitionTime,easing:p.transitionEasing},mode:"immediate",fromcurrent:!0};M.loneUnhover(u._hoverlayer.node()),x.call("animate",h,O,I)}};s.on("mouseover",E),s.on("mouseout",m),s.on("click",b)};function i(n,s,c){for(var h=n.data.data,v={curveNumber:s.index,pointNumber:h.i,data:s._input,fullData:s},p=0;pnt.x1?2*Math.PI:0)+ee;Qe=ce.rpx1Ze?2*Math.PI:0)+ee;tt={x0:Qe,x1:Qe}}else tt={rpx0:se,rpx1:se},M.extendFlat(tt,ge(ce));else tt={rpx0:0,rpx1:0};else tt={x0:ee,x1:ee};return x(tt,nt)}function Me(ce){var ze=J[T.getPtId(ce)],tt,nt=ce.transform;if(ze)tt=ze;else if(tt={rpx1:ce.rpx1,transform:{textPosAngle:nt.textPosAngle,scale:0,rotate:nt.rotate,rCenter:nt.rCenter,x:nt.x,y:nt.y}},$)if(ce.parent)if(Ze){var Qe=ce.x1>Ze?2*Math.PI:0;tt.x0=tt.x1=Qe}else M.extendFlat(tt,ge(ce));else tt.x0=tt.x1=ee;else tt.x0=tt.x1=ee;var Ct=x(tt.transform.textPosAngle,ce.transform.textPosAngle),St=x(tt.rpx1,ce.rpx1),Ot=x(tt.x0,ce.x0),jt=x(tt.x1,ce.x1),ur=x(tt.transform.scale,nt.scale),ar=x(tt.transform.rotate,nt.rotate),Cr=nt.rCenter===0?3:tt.transform.rCenter===0?1/3:1,vr=x(tt.transform.rCenter,nt.rCenter),_r=function(yt){return vr(Math.pow(yt,Cr))};return function(yt){var Fe=St(yt),Ke=Ot(yt),Ne=jt(yt),Ee=_r(yt),Ve=be(Fe,(Ke+Ne)/2),ke=Ct(yt),Te={pxmid:Ve,rpx1:Fe,transform:{textPosAngle:ke,rCenter:Ee,x:nt.x,y:nt.y}};return r(B.type,nt,f),{transform:{targetX:Be(Te),targetY:Ie(Te),scale:ur(yt),rotate:ar(yt),rCenter:Ee}}}}function ge(ce){var ze=ce.parent,tt=J[T.getPtId(ze)],nt={};if(tt){var Qe=ze.children,Ct=Qe.indexOf(ce),St=Qe.length,Ot=x(tt.x0,tt.x1);nt.x0=Ot(Ct/St),nt.x1=Ot(Ct/St)}else nt.x0=nt.x1=0;return nt}}function _(m){return g.partition().size([2*Math.PI,m.height+1])(m)}X.formatSliceLabel=function(m,b,d,u,y){var f=d.texttemplate,P=d.textinfo;if(!f&&(!P||P==="none"))return"";var L=y.separators,z=u[0],F=m.data.data,B=z.hierarchy,O=T.isHierarchyRoot(m),I=T.getParent(B,m),N=T.getValue(m);if(!f){var U=P.split("+"),W=function(ne){return U.indexOf(ne)!==-1},Q=[],ue;if(W("label")&&F.label&&Q.push(F.label),F.hasOwnProperty("v")&&W("value")&&Q.push(T.formatValue(F.v,L)),!O){W("current path")&&Q.push(T.getPath(m.data));var se=0;W("percent parent")&&se++,W("percent entry")&&se++,W("percent root")&&se++;var he=se>1;if(se){var G,$=function(ne){ue=T.formatPercent(G,L),he&&(ue+=" of "+ne),Q.push(ue)};W("percent parent")&&!O&&(G=N/T.getValue(I),$("parent")),W("percent entry")&&(G=N/T.getValue(b),$("entry")),W("percent root")&&(G=N/T.getValue(B),$("root"))}}return W("text")&&(ue=M.castOption(d,F.i,"text"),M.isValidTextValue(ue)&&Q.push(ue)),Q.join("
")}var J=M.castOption(d,F.i,"texttemplate");if(!J)return"";var Z={};F.label&&(Z.label=F.label),F.hasOwnProperty("v")&&(Z.value=F.v,Z.valueLabel=T.formatValue(F.v,L)),Z.currentPath=T.getPath(m.data),O||(Z.percentParent=N/T.getValue(I),Z.percentParentLabel=T.formatPercent(Z.percentParent,L),Z.parent=T.getPtLabel(I)),Z.percentEntry=N/T.getValue(b),Z.percentEntryLabel=T.formatPercent(Z.percentEntry,L),Z.entry=T.getPtLabel(b),Z.percentRoot=N/T.getValue(B),Z.percentRootLabel=T.formatPercent(Z.percentRoot,L),Z.root=T.getPtLabel(B),F.hasOwnProperty("color")&&(Z.color=F.color);var re=M.castOption(d,F.i,"text");return(M.isValidTextValue(re)||re==="")&&(Z.text=re),Z.customdata=M.castOption(d,F.i,"customdata"),M.texttemplateString(J,Z,y._d3locale,Z,d._meta||{})};function w(m){return m.rpx0===0&&M.isFullCircle([m.x0,m.x1])?1:Math.max(0,Math.min(1/(1+1/Math.sin(m.halfangle)),m.ring/2))}function S(m){return E(m.rpx1,m.transform.textPosAngle)}function E(m,b){return[m*Math.sin(b),-m*Math.cos(b)]}}}),tN=Ye({"src/traces/sunburst/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"sunburst",basePlotModule:g9(),categories:[],animatable:!0,attributes:Y_(),layoutAttributes:eE(),supplyDefaults:y9(),supplyLayoutDefaults:_9(),calc:J_().calc,crossTraceCalc:J_().crossTraceCalc,plot:Y3().plot,style:t5().style,colorbar:cp(),meta:{}}}}),rN=Ye({"lib/sunburst.js"(X,H){"use strict";H.exports=tN()}}),aN=Ye({"src/traces/treemap/base_plot.js"(X){"use strict";var H=Gu();X.name="treemap",X.plot=function(g,x,A,M){H.plotBasePlot(X.name,g,x,A,M)},X.clean=function(g,x,A,M){H.cleanBasePlot(X.name,g,x,A,M)}}}),h0=Ye({"src/traces/treemap/constants.js"(X,H){"use strict";H.exports={CLICK_TRANSITION_TIME:750,CLICK_TRANSITION_EASING:"poly",eventDataKeys:["currentPath","root","entry","percentRoot","percentEntry","percentParent"],gapWithPathbar:1}}}),K3=Ye({"src/traces/treemap/attributes.js"(X,H){"use strict";var g=xs().hovertemplateAttrs,x=xs().texttemplateAttrs,A=tu(),M=Wu().attributes,e=i0(),t=Y_(),r=h0(),o=Oo().extendFlat,a=Uh().pattern;H.exports={labels:t.labels,parents:t.parents,values:t.values,branchvalues:t.branchvalues,count:t.count,level:t.level,maxdepth:t.maxdepth,tiling:{packing:{valType:"enumerated",values:["squarify","binary","dice","slice","slice-dice","dice-slice"],dflt:"squarify",editType:"plot"},squarifyratio:{valType:"number",min:1,dflt:1,editType:"plot"},flip:{valType:"flaglist",flags:["x","y"],dflt:"",editType:"plot"},pad:{valType:"number",min:0,dflt:3,editType:"plot"},editType:"calc"},marker:o({pad:{t:{valType:"number",min:0,editType:"plot"},l:{valType:"number",min:0,editType:"plot"},r:{valType:"number",min:0,editType:"plot"},b:{valType:"number",min:0,editType:"plot"},editType:"calc"},colors:t.marker.colors,pattern:a,depthfade:{valType:"enumerated",values:[!0,!1,"reversed"],editType:"style"},line:t.marker.line,cornerradius:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},A("marker",{colorAttr:"colors",anim:!1})),pathbar:{visible:{valType:"boolean",dflt:!0,editType:"plot"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},edgeshape:{valType:"enumerated",values:[">","<","|","/","\\"],dflt:">",editType:"plot"},thickness:{valType:"number",min:12,editType:"plot"},textfont:o({},e.textfont,{}),editType:"calc"},text:e.text,textinfo:t.textinfo,texttemplate:x({editType:"plot"},{keys:r.eventDataKeys.concat(["label","value"])}),hovertext:e.hovertext,hoverinfo:t.hoverinfo,hovertemplate:g({},{keys:r.eventDataKeys}),textfont:e.textfont,insidetextfont:e.insidetextfont,outsidetextfont:o({},e.outsidetextfont,{}),textposition:{valType:"enumerated",values:["top left","top center","top right","middle left","middle center","middle right","bottom left","bottom center","bottom right"],dflt:"top left",editType:"plot"},sort:e.sort,root:t.root,domain:M({name:"treemap",trace:!0,editType:"calc"})}}}),r5=Ye({"src/traces/treemap/layout_attributes.js"(X,H){"use strict";H.exports={treemapcolorway:{valType:"colorlist",editType:"calc"},extendtreemapcolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),iN=Ye({"src/traces/treemap/defaults.js"(X,H){"use strict";var g=ta(),x=K3(),A=Fn(),M=Wu().defaults,e=gd().handleText,t=Qg().TEXTPAD,r=n0().handleMarkerDefaults,o=Su(),a=o.hasColorscale,i=o.handleDefaults;H.exports=function(s,c,h,v){function p(y,f){return g.coerce(s,c,x,y,f)}var T=p("labels"),l=p("parents");if(!T||!T.length||!l||!l.length){c.visible=!1;return}var _=p("values");_&&_.length?p("branchvalues"):p("count"),p("level"),p("maxdepth");var w=p("tiling.packing");w==="squarify"&&p("tiling.squarifyratio"),p("tiling.flip"),p("tiling.pad");var S=p("text");p("texttemplate"),c.texttemplate||p("textinfo",g.isArrayOrTypedArray(S)?"text+label":"label"),p("hovertext"),p("hovertemplate");var E=p("pathbar.visible"),m="auto";e(s,c,v,p,m,{hasPathbar:E,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),p("textposition");var b=c.textposition.indexOf("bottom")!==-1;r(s,c,v,p);var d=c._hasColorscale=a(s,"marker","colors")||(s.marker||{}).coloraxis;d?i(s,c,v,p,{prefix:"marker.",cLetter:"c"}):p("marker.depthfade",!(c.marker.colors||[]).length);var u=c.textfont.size*2;p("marker.pad.t",b?u/4:u),p("marker.pad.l",u/4),p("marker.pad.r",u/4),p("marker.pad.b",b?u:u/4),p("marker.cornerradius"),c._hovered={marker:{line:{width:2,color:A.contrast(v.paper_bgcolor)}}},E&&(p("pathbar.thickness",c.pathbar.textfont.size+2*t),p("pathbar.side"),p("pathbar.edgeshape")),p("sort"),p("root.color"),M(c,v,p),c._length=null}}}),nN=Ye({"src/traces/treemap/layout_defaults.js"(X,H){"use strict";var g=ta(),x=r5();H.exports=function(M,e){function t(r,o){return g.coerce(M,e,x,r,o)}t("treemapcolorway",e.colorway),t("extendtreemapcolors")}}}),a5=Ye({"src/traces/treemap/calc.js"(X){"use strict";var H=J_();X.calc=function(g,x){return H.calc(g,x)},X.crossTraceCalc=function(g){return H._runCrossTraceCalc("treemap",g)}}}),i5=Ye({"src/traces/treemap/flip_tree.js"(X,H){"use strict";H.exports=function g(x,A,M){var e;M.swapXY&&(e=x.x0,x.x0=x.y0,x.y0=e,e=x.x1,x.x1=x.y1,x.y1=e),M.flipX&&(e=x.x0,x.x0=A[0]-x.x1,x.x1=A[0]-e),M.flipY&&(e=x.y0,x.y0=A[1]-x.y1,x.y1=A[1]-e);var t=x.children;if(t)for(var r=0;r0)for(var u=0;u").join(" ")||"";var he=x.ensureSingle(ue,"g","slicetext"),G=x.ensureSingle(he,"text","",function(J){J.attr("data-notex",1)}),$=x.ensureUniformFontSize(s,o.determineTextFont(B,Q,z.font,{onPathbar:!0}));G.text(Q._text||" ").classed("slicetext",!0).attr("text-anchor","start").call(A.font,$).call(M.convertToTspans,s),Q.textBB=A.bBox(G.node()),Q.transform=m(Q,{fontSize:$.size,onPathbar:!0}),Q.transform.fontSize=$.size,d?G.transition().attrTween("transform",function(J){var Z=f(J,i,P,[l,_]);return function(re){return b(Z(re))}}):G.attr("transform",b(Q))})}}}),sN=Ye({"src/traces/treemap/plot_one.js"(X,H){"use strict";var g=_n(),x=(f0(),Hf(fg)).interpolate,A=$v(),M=ta(),e=Qg().TEXTPAD,t=e0(),r=t.toMoveInsideBar,o=wp(),a=o.recordMinTextSize,i=h0(),n=oN();function s(c){return A.isHierarchyRoot(c)?"":A.getPtId(c)}H.exports=function(h,v,p,T,l){var _=h._fullLayout,w=v[0],S=w.trace,E=S.type,m=E==="icicle",b=w.hierarchy,d=A.findEntryWithLevel(b,S.level),u=g.select(p),y=u.selectAll("g.pathbar"),f=u.selectAll("g.slice");if(!d){y.remove(),f.remove();return}var P=A.isHierarchyRoot(d),L=!_.uniformtext.mode&&A.hasTransition(T),z=A.getMaxDepth(S),F=function(vr){return vr.data.depth-d.data.depth-1?N+Q:-(W+Q):0,se={x0:U,x1:U,y0:ue,y1:ue+W},he=function(vr,_r,yt){var Fe=S.tiling.pad,Ke=function(ke){return ke-Fe<=_r.x0},Ne=function(ke){return ke+Fe>=_r.x1},Ee=function(ke){return ke-Fe<=_r.y0},Ve=function(ke){return ke+Fe>=_r.y1};return vr.x0===_r.x0&&vr.x1===_r.x1&&vr.y0===_r.y0&&vr.y1===_r.y1?{x0:vr.x0,x1:vr.x1,y0:vr.y0,y1:vr.y1}:{x0:Ke(vr.x0-Fe)?0:Ne(vr.x0-Fe)?yt[0]:vr.x0,x1:Ke(vr.x1+Fe)?0:Ne(vr.x1+Fe)?yt[0]:vr.x1,y0:Ee(vr.y0-Fe)?0:Ve(vr.y0-Fe)?yt[1]:vr.y0,y1:Ee(vr.y1+Fe)?0:Ve(vr.y1+Fe)?yt[1]:vr.y1}},G=null,$={},J={},Z=null,re=function(vr,_r){return _r?$[s(vr)]:J[s(vr)]},ne=function(vr,_r,yt,Fe){if(_r)return $[s(b)]||se;var Ke=J[S.level]||yt;return F(vr)?he(vr,Ke,Fe):{}};w.hasMultipleRoots&&P&&z++,S._maxDepth=z,S._backgroundColor=_.paper_bgcolor,S._entryDepth=d.data.depth,S._atRootLevel=P;var j=-I/2+B.l+B.w*(O.x[1]+O.x[0])/2,ee=-N/2+B.t+B.h*(1-(O.y[1]+O.y[0])/2),ie=function(vr){return j+vr},fe=function(vr){return ee+vr},be=fe(0),Ae=ie(0),Be=function(vr){return Ae+vr},Ie=function(vr){return be+vr};function Ze(vr,_r){return vr+","+_r}var at=Be(0),it=function(vr){vr.x=Math.max(at,vr.x)},et=S.pathbar.edgeshape,lt=function(vr){var _r=Be(Math.max(Math.min(vr.x0,vr.x0),0)),yt=Be(Math.min(Math.max(vr.x1,vr.x1),U)),Fe=Ie(vr.y0),Ke=Ie(vr.y1),Ne=W/2,Ee={},Ve={};Ee.x=_r,Ve.x=yt,Ee.y=Ve.y=(Fe+Ke)/2;var ke={x:_r,y:Fe},Te={x:yt,y:Fe},Le={x:yt,y:Ke},rt={x:_r,y:Ke};return et===">"?(ke.x-=Ne,Te.x-=Ne,Le.x-=Ne,rt.x-=Ne):et==="/"?(Le.x-=Ne,rt.x-=Ne,Ee.x-=Ne/2,Ve.x-=Ne/2):et==="\\"?(ke.x-=Ne,Te.x-=Ne,Ee.x-=Ne/2,Ve.x-=Ne/2):et==="<"&&(Ee.x-=Ne,Ve.x-=Ne),it(ke),it(rt),it(Ee),it(Te),it(Le),it(Ve),"M"+Ze(ke.x,ke.y)+"L"+Ze(Te.x,Te.y)+"L"+Ze(Ve.x,Ve.y)+"L"+Ze(Le.x,Le.y)+"L"+Ze(rt.x,rt.y)+"L"+Ze(Ee.x,Ee.y)+"Z"},Me=S[m?"tiling":"marker"].pad,ge=function(vr){return S.textposition.indexOf(vr)!==-1},ce=ge("top"),ze=ge("left"),tt=ge("right"),nt=ge("bottom"),Qe=function(vr){var _r=ie(vr.x0),yt=ie(vr.x1),Fe=fe(vr.y0),Ke=fe(vr.y1),Ne=yt-_r,Ee=Ke-Fe;if(!Ne||!Ee)return"";var Ve=S.marker.cornerradius||0,ke=Math.min(Ve,Ne/2,Ee/2);ke&&vr.data&&vr.data.data&&vr.data.data.label&&(ce&&(ke=Math.min(ke,Me.t)),ze&&(ke=Math.min(ke,Me.l)),tt&&(ke=Math.min(ke,Me.r)),nt&&(ke=Math.min(ke,Me.b)));var Te=function(Le,rt){return ke?"a"+Ze(ke,ke)+" 0 0 1 "+Ze(Le,rt):""};return"M"+Ze(_r,Fe+ke)+Te(ke,-ke)+"L"+Ze(yt-ke,Fe)+Te(ke,ke)+"L"+Ze(yt,Ke-ke)+Te(-ke,ke)+"L"+Ze(_r+ke,Ke)+Te(-ke,-ke)+"Z"},Ct=function(vr,_r){var yt=vr.x0,Fe=vr.x1,Ke=vr.y0,Ne=vr.y1,Ee=vr.textBB,Ve=ce||_r.isHeader&&!nt,ke=Ve?"start":nt?"end":"middle",Te=ge("right"),Le=ge("left")||_r.onPathbar,rt=Le?-1:Te?1:0;if(_r.isHeader){if(yt+=(m?Me:Me.l)-e,Fe-=(m?Me:Me.r)-e,yt>=Fe){var dt=(yt+Fe)/2;yt=dt,Fe=dt}var xt;nt?(xt=Ne-(m?Me:Me.b),Ke-1,flipY:O.tiling.flip.indexOf("y")>-1,pad:{inner:O.tiling.pad,top:O.marker.pad.t,left:O.marker.pad.l,right:O.marker.pad.r,bottom:O.marker.pad.b}}),ue=Q.descendants(),se=1/0,he=-1/0;ue.forEach(function(re){var ne=re.depth;ne>=O._maxDepth?(re.x0=re.x1=(re.x0+re.x1)/2,re.y0=re.y1=(re.y0+re.y1)/2):(se=Math.min(se,ne),he=Math.max(he,ne))}),p=p.data(ue,o.getPtId),O._maxVisibleLayers=isFinite(he)?he-se+1:0,p.enter().append("g").classed("slice",!0),u(p,n,L,[l,_],E),p.order();var G=null;if(d&&P){var $=o.getPtId(P);p.each(function(re){G===null&&o.getPtId(re)===$&&(G={x0:re.x0,x1:re.x1,y0:re.y0,y1:re.y1})})}var J=function(){return G||{x0:0,x1:l,y0:0,y1:_}},Z=p;return d&&(Z=Z.transition().each("end",function(){var re=g.select(this);o.setSliceCursor(re,c,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),Z.each(function(re){var ne=o.isHeader(re,O);re._x0=w(re.x0),re._x1=w(re.x1),re._y0=S(re.y0),re._y1=S(re.y1),re._hoverX=w(re.x1-O.marker.pad.r),re._hoverY=S(U?re.y1-O.marker.pad.b/2:re.y0+O.marker.pad.t/2);var j=g.select(this),ee=x.ensureSingle(j,"path","surface",function(Ie){Ie.style("pointer-events",z?"none":"all")});d?ee.transition().attrTween("d",function(Ie){var Ze=y(Ie,n,J(),[l,_]);return function(at){return E(Ze(at))}}):ee.attr("d",E),j.call(a,v,c,h,{styleOne:t,eventDataKeys:r.eventDataKeys,transitionTime:r.CLICK_TRANSITION_TIME,transitionEasing:r.CLICK_TRANSITION_EASING}).call(o.setSliceCursor,c,{isTransitioning:c._transitioning}),ee.call(t,re,O,c,{hovered:!1}),re.x0===re.x1||re.y0===re.y1?re._text="":ne?re._text=W?"":o.getPtLabel(re)||"":re._text=i(re,v,O,h,F)||"";var ie=x.ensureSingle(j,"g","slicetext"),fe=x.ensureSingle(ie,"text","",function(Ie){Ie.attr("data-notex",1)}),be=x.ensureUniformFontSize(c,o.determineTextFont(O,re,F.font)),Ae=re._text||" ",Be=ne&&Ae.indexOf("
")===-1;fe.text(Ae).classed("slicetext",!0).attr("text-anchor",N?"end":I||Be?"start":"middle").call(A.font,be).call(M.convertToTspans,c),re.textBB=A.bBox(fe.node()),re.transform=m(re,{fontSize:be.size,isHeader:ne}),re.transform.fontSize=be.size,d?fe.transition().attrTween("transform",function(Ie){var Ze=f(Ie,n,J(),[l,_]);return function(at){return b(Ze(at))}}):fe.attr("transform",b(re))}),G}}}),uN=Ye({"src/traces/treemap/plot.js"(X,H){"use strict";var g=o5(),x=lN();H.exports=function(M,e,t,r){return g(M,e,t,r,{type:"treemap",drawDescendants:x})}}}),cN=Ye({"src/traces/treemap/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"treemap",basePlotModule:aN(),categories:[],animatable:!0,attributes:K3(),layoutAttributes:r5(),supplyDefaults:iN(),supplyLayoutDefaults:nN(),calc:a5().calc,crossTraceCalc:a5().crossTraceCalc,plot:uN(),style:J3().style,colorbar:cp(),meta:{}}}}),fN=Ye({"lib/treemap.js"(X,H){"use strict";H.exports=cN()}}),hN=Ye({"src/traces/icicle/base_plot.js"(X){"use strict";var H=Gu();X.name="icicle",X.plot=function(g,x,A,M){H.plotBasePlot(X.name,g,x,A,M)},X.clean=function(g,x,A,M){H.cleanBasePlot(X.name,g,x,A,M)}}}),s5=Ye({"src/traces/icicle/attributes.js"(X,H){"use strict";var g=xs().hovertemplateAttrs,x=xs().texttemplateAttrs,A=tu(),M=Wu().attributes,e=i0(),t=Y_(),r=K3(),o=h0(),a=Oo().extendFlat,i=Uh().pattern;H.exports={labels:t.labels,parents:t.parents,values:t.values,branchvalues:t.branchvalues,count:t.count,level:t.level,maxdepth:t.maxdepth,tiling:{orientation:{valType:"enumerated",values:["v","h"],dflt:"h",editType:"plot"},flip:r.tiling.flip,pad:{valType:"number",min:0,dflt:0,editType:"plot"},editType:"calc"},marker:a({colors:t.marker.colors,line:t.marker.line,pattern:i,editType:"calc"},A("marker",{colorAttr:"colors",anim:!1})),leaf:t.leaf,pathbar:r.pathbar,text:e.text,textinfo:t.textinfo,texttemplate:x({editType:"plot"},{keys:o.eventDataKeys.concat(["label","value"])}),hovertext:e.hovertext,hoverinfo:t.hoverinfo,hovertemplate:g({},{keys:o.eventDataKeys}),textfont:e.textfont,insidetextfont:e.insidetextfont,outsidetextfont:r.outsidetextfont,textposition:r.textposition,sort:e.sort,root:t.root,domain:M({name:"icicle",trace:!0,editType:"calc"})}}}),l5=Ye({"src/traces/icicle/layout_attributes.js"(X,H){"use strict";H.exports={iciclecolorway:{valType:"colorlist",editType:"calc"},extendiciclecolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),pN=Ye({"src/traces/icicle/defaults.js"(X,H){"use strict";var g=ta(),x=s5(),A=Fn(),M=Wu().defaults,e=gd().handleText,t=Qg().TEXTPAD,r=n0().handleMarkerDefaults,o=Su(),a=o.hasColorscale,i=o.handleDefaults;H.exports=function(s,c,h,v){function p(b,d){return g.coerce(s,c,x,b,d)}var T=p("labels"),l=p("parents");if(!T||!T.length||!l||!l.length){c.visible=!1;return}var _=p("values");_&&_.length?p("branchvalues"):p("count"),p("level"),p("maxdepth"),p("tiling.orientation"),p("tiling.flip"),p("tiling.pad");var w=p("text");p("texttemplate"),c.texttemplate||p("textinfo",g.isArrayOrTypedArray(w)?"text+label":"label"),p("hovertext"),p("hovertemplate");var S=p("pathbar.visible"),E="auto";e(s,c,v,p,E,{hasPathbar:S,moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1}),p("textposition"),r(s,c,v,p);var m=c._hasColorscale=a(s,"marker","colors")||(s.marker||{}).coloraxis;m&&i(s,c,v,p,{prefix:"marker.",cLetter:"c"}),p("leaf.opacity",m?1:.7),c._hovered={marker:{line:{width:2,color:A.contrast(v.paper_bgcolor)}}},S&&(p("pathbar.thickness",c.pathbar.textfont.size+2*t),p("pathbar.side"),p("pathbar.edgeshape")),p("sort"),p("root.color"),M(c,v,p),c._length=null}}}),dN=Ye({"src/traces/icicle/layout_defaults.js"(X,H){"use strict";var g=ta(),x=l5();H.exports=function(M,e){function t(r,o){return g.coerce(M,e,x,r,o)}t("iciclecolorway",e.colorway),t("extendiciclecolors")}}}),u5=Ye({"src/traces/icicle/calc.js"(X){"use strict";var H=J_();X.calc=function(g,x){return H.calc(g,x)},X.crossTraceCalc=function(g){return H._runCrossTraceCalc("icicle",g)}}}),vN=Ye({"src/traces/icicle/partition.js"(X,H){"use strict";var g=K_(),x=i5();H.exports=function(M,e,t){var r=t.flipX,o=t.flipY,a=t.orientation==="h",i=t.maxDepth,n=e[0],s=e[1];i&&(n=(M.height+1)*e[0]/Math.min(M.height+1,i),s=(M.height+1)*e[1]/Math.min(M.height+1,i));var c=g.partition().padding(t.pad.inner).size(a?[e[1],n]:[e[0],s])(M);return(a||r||o)&&x(c,e,{swapXY:a,flipX:r,flipY:o}),c}}}),c5=Ye({"src/traces/icicle/style.js"(X,H){"use strict";var g=_n(),x=Fn(),A=ta(),M=wp().resizeText,e=X3();function t(o){var a=o._fullLayout._iciclelayer.selectAll(".trace");M(o,a,"icicle"),a.each(function(i){var n=g.select(this),s=i[0],c=s.trace;n.style("opacity",c.opacity),n.selectAll("path.surface").each(function(h){g.select(this).call(r,h,c,o)})})}function r(o,a,i,n){var s=a.data.data,c=!a.children,h=s.i,v=A.castOption(i,h,"marker.line.color")||x.defaultLine,p=A.castOption(i,h,"marker.line.width")||0;o.call(e,a,i,n).style("stroke-width",p).call(x.stroke,v).style("opacity",c?i.leaf.opacity:null)}H.exports={style:t,styleOne:r}}}),mN=Ye({"src/traces/icicle/draw_descendants.js"(X,H){"use strict";var g=_n(),x=ta(),A=Bo(),M=jl(),e=vN(),t=c5().styleOne,r=h0(),o=$v(),a=px(),i=Y3().formatSliceLabel,n=!1;H.exports=function(c,h,v,p,T){var l=T.width,_=T.height,w=T.viewX,S=T.viewY,E=T.pathSlice,m=T.toMoveInsideSlice,b=T.strTransform,d=T.hasTransition,u=T.handleSlicesExit,y=T.makeUpdateSliceInterpolator,f=T.makeUpdateTextInterpolator,P=T.prevEntry,L={},z=c._context.staticPlot,F=c._fullLayout,B=h[0],O=B.trace,I=O.textposition.indexOf("left")!==-1,N=O.textposition.indexOf("right")!==-1,U=O.textposition.indexOf("bottom")!==-1,W=e(v,[l,_],{flipX:O.tiling.flip.indexOf("x")>-1,flipY:O.tiling.flip.indexOf("y")>-1,orientation:O.tiling.orientation,pad:{inner:O.tiling.pad},maxDepth:O._maxDepth}),Q=W.descendants(),ue=1/0,se=-1/0;Q.forEach(function(Z){var re=Z.depth;re>=O._maxDepth?(Z.x0=Z.x1=(Z.x0+Z.x1)/2,Z.y0=Z.y1=(Z.y0+Z.y1)/2):(ue=Math.min(ue,re),se=Math.max(se,re))}),p=p.data(Q,o.getPtId),O._maxVisibleLayers=isFinite(se)?se-ue+1:0,p.enter().append("g").classed("slice",!0),u(p,n,L,[l,_],E),p.order();var he=null;if(d&&P){var G=o.getPtId(P);p.each(function(Z){he===null&&o.getPtId(Z)===G&&(he={x0:Z.x0,x1:Z.x1,y0:Z.y0,y1:Z.y1})})}var $=function(){return he||{x0:0,x1:l,y0:0,y1:_}},J=p;return d&&(J=J.transition().each("end",function(){var Z=g.select(this);o.setSliceCursor(Z,c,{hideOnRoot:!0,hideOnLeaves:!1,isTransitioning:!1})})),J.each(function(Z){Z._x0=w(Z.x0),Z._x1=w(Z.x1),Z._y0=S(Z.y0),Z._y1=S(Z.y1),Z._hoverX=w(Z.x1-O.tiling.pad),Z._hoverY=S(U?Z.y1-O.tiling.pad/2:Z.y0+O.tiling.pad/2);var re=g.select(this),ne=x.ensureSingle(re,"path","surface",function(fe){fe.style("pointer-events",z?"none":"all")});d?ne.transition().attrTween("d",function(fe){var be=y(fe,n,$(),[l,_],{orientation:O.tiling.orientation,flipX:O.tiling.flip.indexOf("x")>-1,flipY:O.tiling.flip.indexOf("y")>-1});return function(Ae){return E(be(Ae))}}):ne.attr("d",E),re.call(a,v,c,h,{styleOne:t,eventDataKeys:r.eventDataKeys,transitionTime:r.CLICK_TRANSITION_TIME,transitionEasing:r.CLICK_TRANSITION_EASING}).call(o.setSliceCursor,c,{isTransitioning:c._transitioning}),ne.call(t,Z,O,c,{hovered:!1}),Z.x0===Z.x1||Z.y0===Z.y1?Z._text="":Z._text=i(Z,v,O,h,F)||"";var j=x.ensureSingle(re,"g","slicetext"),ee=x.ensureSingle(j,"text","",function(fe){fe.attr("data-notex",1)}),ie=x.ensureUniformFontSize(c,o.determineTextFont(O,Z,F.font));ee.text(Z._text||" ").classed("slicetext",!0).attr("text-anchor",N?"end":I?"start":"middle").call(A.font,ie).call(M.convertToTspans,c),Z.textBB=A.bBox(ee.node()),Z.transform=m(Z,{fontSize:ie.size}),Z.transform.fontSize=ie.size,d?ee.transition().attrTween("transform",function(fe){var be=f(fe,n,$(),[l,_]);return function(Ae){return b(be(Ae))}}):ee.attr("transform",b(Z))}),he}}}),gN=Ye({"src/traces/icicle/plot.js"(X,H){"use strict";var g=o5(),x=mN();H.exports=function(M,e,t,r){return g(M,e,t,r,{type:"icicle",drawDescendants:x})}}}),yN=Ye({"src/traces/icicle/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"icicle",basePlotModule:hN(),categories:[],animatable:!0,attributes:s5(),layoutAttributes:l5(),supplyDefaults:pN(),supplyLayoutDefaults:dN(),calc:u5().calc,crossTraceCalc:u5().crossTraceCalc,plot:gN(),style:c5().style,colorbar:cp(),meta:{}}}}),_N=Ye({"lib/icicle.js"(X,H){"use strict";H.exports=yN()}}),xN=Ye({"src/traces/funnelarea/base_plot.js"(X){"use strict";var H=Gu();X.name="funnelarea",X.plot=function(g,x,A,M){H.plotBasePlot(X.name,g,x,A,M)},X.clean=function(g,x,A,M){H.cleanBasePlot(X.name,g,x,A,M)}}}),f5=Ye({"src/traces/funnelarea/attributes.js"(X,H){"use strict";var g=i0(),x=Pl(),A=Wu().attributes,M=xs().hovertemplateAttrs,e=xs().texttemplateAttrs,t=Oo().extendFlat;H.exports={labels:g.labels,label0:g.label0,dlabel:g.dlabel,values:g.values,marker:{colors:g.marker.colors,line:{color:t({},g.marker.line.color,{dflt:null}),width:t({},g.marker.line.width,{dflt:1}),editType:"calc"},pattern:g.marker.pattern,editType:"calc"},text:g.text,hovertext:g.hovertext,scalegroup:t({},g.scalegroup,{}),textinfo:t({},g.textinfo,{flags:["label","text","value","percent"]}),texttemplate:e({editType:"plot"},{keys:["label","color","value","text","percent"]}),hoverinfo:t({},x.hoverinfo,{flags:["label","text","value","percent","name"]}),hovertemplate:M({},{keys:["label","color","value","text","percent"]}),textposition:t({},g.textposition,{values:["inside","none"],dflt:"inside"}),textfont:g.textfont,insidetextfont:g.insidetextfont,title:{text:g.title.text,font:g.title.font,position:t({},g.title.position,{values:["top left","top center","top right"],dflt:"top center"}),editType:"plot"},domain:A({name:"funnelarea",trace:!0,editType:"calc"}),aspectratio:{valType:"number",min:0,dflt:1,editType:"plot"},baseratio:{valType:"number",min:0,max:1,dflt:.333,editType:"plot"}}}}),h5=Ye({"src/traces/funnelarea/layout_attributes.js"(X,H){"use strict";var g=y3().hiddenlabels;H.exports={hiddenlabels:g,funnelareacolorway:{valType:"colorlist",editType:"calc"},extendfunnelareacolors:{valType:"boolean",dflt:!0,editType:"calc"}}}}),bN=Ye({"src/traces/funnelarea/defaults.js"(X,H){"use strict";var g=ta(),x=f5(),A=Wu().defaults,M=gd().handleText,e=n0().handleLabelsAndValues,t=n0().handleMarkerDefaults;H.exports=function(o,a,i,n){function s(E,m){return g.coerce(o,a,x,E,m)}var c=s("labels"),h=s("values"),v=e(c,h),p=v.len;if(a._hasLabels=v.hasLabels,a._hasValues=v.hasValues,!a._hasLabels&&a._hasValues&&(s("label0"),s("dlabel")),!p){a.visible=!1;return}a._length=p,t(o,a,n,s),s("scalegroup");var T=s("text"),l=s("texttemplate"),_;if(l||(_=s("textinfo",Array.isArray(T)?"text+percent":"percent")),s("hovertext"),s("hovertemplate"),l||_&&_!=="none"){var w=s("textposition");M(o,a,n,s,w,{moduleHasSelected:!1,moduleHasUnselected:!1,moduleHasConstrain:!1,moduleHasCliponaxis:!1,moduleHasTextangle:!1,moduleHasInsideanchor:!1})}else _==="none"&&s("textposition","none");A(a,n,s);var S=s("title.text");S&&(s("title.position"),g.coerceFont(s,"title.font",n.font)),s("aspectratio"),s("baseratio")}}}),wN=Ye({"src/traces/funnelarea/layout_defaults.js"(X,H){"use strict";var g=ta(),x=h5();H.exports=function(M,e){function t(r,o){return g.coerce(M,e,x,r,o)}t("hiddenlabels"),t("funnelareacolorway",e.colorway),t("extendfunnelareacolors")}}}),p5=Ye({"src/traces/funnelarea/calc.js"(X,H){"use strict";var g=y1();function x(M,e){return g.calc(M,e)}function A(M){g.crossTraceCalc(M,{type:"funnelarea"})}H.exports={calc:x,crossTraceCalc:A}}}),TN=Ye({"src/traces/funnelarea/plot.js"(X,H){"use strict";var g=_n(),x=Bo(),A=ta(),M=A.strScale,e=A.strTranslate,t=jl(),r=e0(),o=r.toMoveInsideBar,a=wp(),i=a.recordMinTextSize,n=a.clearMinTextSize,s=eg(),c=_3(),h=c.attachFxHandlers,v=c.determineInsideTextFont,p=c.layoutAreas,T=c.prerenderTitles,l=c.positionTitleOutside,_=c.formatSliceLabel;H.exports=function(b,d){var u=b._context.staticPlot,y=b._fullLayout;n("funnelarea",y),T(d,b),p(d,y._size),A.makeTraceGroups(y._funnelarealayer,d,"trace").each(function(f){var P=g.select(this),L=f[0],z=L.trace;E(f),P.each(function(){var F=g.select(this).selectAll("g.slice").data(f);F.enter().append("g").classed("slice",!0),F.exit().remove(),F.each(function(O,I){if(O.hidden){g.select(this).selectAll("path,g").remove();return}O.pointNumber=O.i,O.curveNumber=z.index;var N=L.cx,U=L.cy,W=g.select(this),Q=W.selectAll("path.surface").data([O]);Q.enter().append("path").classed("surface",!0).style({"pointer-events":u?"none":"all"}),W.call(h,b,f);var ue="M"+(N+O.TR[0])+","+(U+O.TR[1])+w(O.TR,O.BR)+w(O.BR,O.BL)+w(O.BL,O.TL)+"Z";Q.attr("d",ue),_(b,O,L);var se=s.castOption(z.textposition,O.pts),he=W.selectAll("g.slicetext").data(O.text&&se!=="none"?[0]:[]);he.enter().append("g").classed("slicetext",!0),he.exit().remove(),he.each(function(){var G=A.ensureSingle(g.select(this),"text","",function(ie){ie.attr("data-notex",1)}),$=A.ensureUniformFontSize(b,v(z,O,y.font));G.text(O.text).attr({class:"slicetext",transform:"","text-anchor":"middle"}).call(x.font,$).call(t.convertToTspans,b);var J=x.bBox(G.node()),Z,re,ne,j=Math.min(O.BL[1],O.BR[1])+U,ee=Math.max(O.TL[1],O.TR[1])+U;re=Math.max(O.TL[0],O.BL[0])+N,ne=Math.min(O.TR[0],O.BR[0])+N,Z=o(re,ne,j,ee,J,{isHorizontal:!0,constrained:!0,angle:0,anchor:"middle"}),Z.fontSize=$.size,i(z.type,Z,y),f[I].transform=Z,A.setTransormAndDisplay(G,Z)})});var B=g.select(this).selectAll("g.titletext").data(z.title.text?[0]:[]);B.enter().append("g").classed("titletext",!0),B.exit().remove(),B.each(function(){var O=A.ensureSingle(g.select(this),"text","",function(U){U.attr("data-notex",1)}),I=z.title.text;z._meta&&(I=A.templateString(I,z._meta)),O.text(I).attr({class:"titletext",transform:"","text-anchor":"middle"}).call(x.font,z.title.font).call(t.convertToTspans,b);var N=l(L,y._size);O.attr("transform",e(N.x,N.y)+M(Math.min(1,N.scale))+e(N.tx,N.ty))})})})};function w(m,b){var d=b[0]-m[0],u=b[1]-m[1];return"l"+d+","+u}function S(m,b){return[.5*(m[0]+b[0]),.5*(m[1]+b[1])]}function E(m){if(!m.length)return;var b=m[0],d=b.trace,u=d.aspectratio,y=d.baseratio;y>.999&&(y=.999);var f=Math.pow(y,2),P=b.vTotal,L=P*f/(1-f),z=P,F=L/P;function B(){var fe=Math.sqrt(F);return{x:fe,y:-fe}}function O(){var fe=B();return[fe.x,fe.y]}var I,N=[];N.push(O());var U,W;for(U=m.length-1;U>-1;U--)if(W=m[U],!W.hidden){var Q=W.v/z;F+=Q,N.push(O())}var ue=1/0,se=-1/0;for(U=0;U-1;U--)if(W=m[U],!W.hidden){j+=1;var ee=N[j][0],ie=N[j][1];W.TL=[-ee,ie],W.TR=[ee,ie],W.BL=re,W.BR=ne,W.pxmid=S(W.TR,W.BR),re=W.TL,ne=W.TR}}}}),AN=Ye({"src/traces/funnelarea/style.js"(X,H){"use strict";var g=_n(),x=a1(),A=wp().resizeText;H.exports=function(e){var t=e._fullLayout._funnelarealayer.selectAll(".trace");A(e,t,"funnelarea"),t.each(function(r){var o=r[0],a=o.trace,i=g.select(this);i.style({opacity:a.opacity}),i.selectAll("path.surface").each(function(n){g.select(this).call(x,n,a,e)})})}}}),SN=Ye({"src/traces/funnelarea/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"funnelarea",basePlotModule:xN(),categories:["pie-like","funnelarea","showLegend"],attributes:f5(),layoutAttributes:h5(),supplyDefaults:bN(),supplyLayoutDefaults:wN(),calc:p5().calc,crossTraceCalc:p5().crossTraceCalc,plot:TN(),style:AN(),styleOne:a1(),meta:{}}}}),MN=Ye({"lib/funnelarea.js"(X,H){"use strict";H.exports=SN()}}),Gh=Ye({"stackgl_modules/index.js"(X,H){(function(){var g={1964:function(e,t,r){e.exports={alpha_shape:r(3502),convex_hull:r(7352),delaunay_triangulate:r(7642),gl_cone3d:r(6405),gl_error3d:r(9165),gl_line3d:r(5714),gl_mesh3d:r(7201),gl_plot3d:r(4100),gl_scatter3d:r(8418),gl_streamtube3d:r(7815),gl_surface3d:r(9499),ndarray:r(9618),ndarray_linear_interpolate:r(4317)}},4793:function(e,t,r){"use strict";var o;function a(ke,Te){if(!(ke instanceof Te))throw new TypeError("Cannot call a class as a function")}function i(ke,Te){for(var Le=0;Led)throw new RangeError('The value "'+ke+'" is invalid for option "size"');var Te=new Uint8Array(ke);return Object.setPrototypeOf(Te,f.prototype),Te}function f(ke,Te,Le){if(typeof ke=="number"){if(typeof Te=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return F(ke)}return P(ke,Te,Le)}f.poolSize=8192;function P(ke,Te,Le){if(typeof ke=="string")return B(ke,Te);if(ArrayBuffer.isView(ke))return I(ke);if(ke==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+S(ke));if(Fe(ke,ArrayBuffer)||ke&&Fe(ke.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(Fe(ke,SharedArrayBuffer)||ke&&Fe(ke.buffer,SharedArrayBuffer)))return N(ke,Te,Le);if(typeof ke=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var rt=ke.valueOf&&ke.valueOf();if(rt!=null&&rt!==ke)return f.from(rt,Te,Le);var dt=U(ke);if(dt)return dt;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof ke[Symbol.toPrimitive]=="function")return f.from(ke[Symbol.toPrimitive]("string"),Te,Le);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+S(ke))}f.from=function(ke,Te,Le){return P(ke,Te,Le)},Object.setPrototypeOf(f.prototype,Uint8Array.prototype),Object.setPrototypeOf(f,Uint8Array);function L(ke){if(typeof ke!="number")throw new TypeError('"size" argument must be of type number');if(ke<0)throw new RangeError('The value "'+ke+'" is invalid for option "size"')}function z(ke,Te,Le){return L(ke),ke<=0?y(ke):Te!==void 0?typeof Le=="string"?y(ke).fill(Te,Le):y(ke).fill(Te):y(ke)}f.alloc=function(ke,Te,Le){return z(ke,Te,Le)};function F(ke){return L(ke),y(ke<0?0:W(ke)|0)}f.allocUnsafe=function(ke){return F(ke)},f.allocUnsafeSlow=function(ke){return F(ke)};function B(ke,Te){if((typeof Te!="string"||Te==="")&&(Te="utf8"),!f.isEncoding(Te))throw new TypeError("Unknown encoding: "+Te);var Le=ue(ke,Te)|0,rt=y(Le),dt=rt.write(ke,Te);return dt!==Le&&(rt=rt.slice(0,dt)),rt}function O(ke){for(var Te=ke.length<0?0:W(ke.length)|0,Le=y(Te),rt=0;rt=d)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+d.toString(16)+" bytes");return ke|0}function Q(ke){return+ke!=ke&&(ke=0),f.alloc(+ke)}f.isBuffer=function(Te){return Te!=null&&Te._isBuffer===!0&&Te!==f.prototype},f.compare=function(Te,Le){if(Fe(Te,Uint8Array)&&(Te=f.from(Te,Te.offset,Te.byteLength)),Fe(Le,Uint8Array)&&(Le=f.from(Le,Le.offset,Le.byteLength)),!f.isBuffer(Te)||!f.isBuffer(Le))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(Te===Le)return 0;for(var rt=Te.length,dt=Le.length,xt=0,It=Math.min(rt,dt);xtdt.length?(f.isBuffer(It)||(It=f.from(It)),It.copy(dt,xt)):Uint8Array.prototype.set.call(dt,It,xt);else if(f.isBuffer(It))It.copy(dt,xt);else throw new TypeError('"list" argument must be an Array of Buffers');xt+=It.length}return dt};function ue(ke,Te){if(f.isBuffer(ke))return ke.length;if(ArrayBuffer.isView(ke)||Fe(ke,ArrayBuffer))return ke.byteLength;if(typeof ke!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+S(ke));var Le=ke.length,rt=arguments.length>2&&arguments[2]===!0;if(!rt&&Le===0)return 0;for(var dt=!1;;)switch(Te){case"ascii":case"latin1":case"binary":return Le;case"utf8":case"utf-8":return ar(ke).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Le*2;case"hex":return Le>>>1;case"base64":return _r(ke).length;default:if(dt)return rt?-1:ar(ke).length;Te=(""+Te).toLowerCase(),dt=!0}}f.byteLength=ue;function se(ke,Te,Le){var rt=!1;if((Te===void 0||Te<0)&&(Te=0),Te>this.length||((Le===void 0||Le>this.length)&&(Le=this.length),Le<=0)||(Le>>>=0,Te>>>=0,Le<=Te))return"";for(ke||(ke="utf8");;)switch(ke){case"hex":return Ie(this,Te,Le);case"utf8":case"utf-8":return ie(this,Te,Le);case"ascii":return Ae(this,Te,Le);case"latin1":case"binary":return Be(this,Te,Le);case"base64":return ee(this,Te,Le);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ze(this,Te,Le);default:if(rt)throw new TypeError("Unknown encoding: "+ke);ke=(ke+"").toLowerCase(),rt=!0}}f.prototype._isBuffer=!0;function he(ke,Te,Le){var rt=ke[Te];ke[Te]=ke[Le],ke[Le]=rt}f.prototype.swap16=function(){var Te=this.length;if(Te%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var Le=0;LeLe&&(Te+=" ... "),""},b&&(f.prototype[b]=f.prototype.inspect),f.prototype.compare=function(Te,Le,rt,dt,xt){if(Fe(Te,Uint8Array)&&(Te=f.from(Te,Te.offset,Te.byteLength)),!f.isBuffer(Te))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+S(Te));if(Le===void 0&&(Le=0),rt===void 0&&(rt=Te?Te.length:0),dt===void 0&&(dt=0),xt===void 0&&(xt=this.length),Le<0||rt>Te.length||dt<0||xt>this.length)throw new RangeError("out of range index");if(dt>=xt&&Le>=rt)return 0;if(dt>=xt)return-1;if(Le>=rt)return 1;if(Le>>>=0,rt>>>=0,dt>>>=0,xt>>>=0,this===Te)return 0;for(var It=xt-dt,Bt=rt-Le,Gt=Math.min(It,Bt),Kt=this.slice(dt,xt),sr=Te.slice(Le,rt),sa=0;sa2147483647?Le=2147483647:Le<-2147483648&&(Le=-2147483648),Le=+Le,Ke(Le)&&(Le=dt?0:ke.length-1),Le<0&&(Le=ke.length+Le),Le>=ke.length){if(dt)return-1;Le=ke.length-1}else if(Le<0)if(dt)Le=0;else return-1;if(typeof Te=="string"&&(Te=f.from(Te,rt)),f.isBuffer(Te))return Te.length===0?-1:$(ke,Te,Le,rt,dt);if(typeof Te=="number")return Te=Te&255,typeof Uint8Array.prototype.indexOf=="function"?dt?Uint8Array.prototype.indexOf.call(ke,Te,Le):Uint8Array.prototype.lastIndexOf.call(ke,Te,Le):$(ke,[Te],Le,rt,dt);throw new TypeError("val must be string, number or Buffer")}function $(ke,Te,Le,rt,dt){var xt=1,It=ke.length,Bt=Te.length;if(rt!==void 0&&(rt=String(rt).toLowerCase(),rt==="ucs2"||rt==="ucs-2"||rt==="utf16le"||rt==="utf-16le")){if(ke.length<2||Te.length<2)return-1;xt=2,It/=2,Bt/=2,Le/=2}function Gt(La,ka){return xt===1?La[ka]:La.readUInt16BE(ka*xt)}var Kt;if(dt){var sr=-1;for(Kt=Le;KtIt&&(Le=It-Bt),Kt=Le;Kt>=0;Kt--){for(var sa=!0,Aa=0;Aadt&&(rt=dt)):rt=dt;var xt=Te.length;rt>xt/2&&(rt=xt/2);var It;for(It=0;It>>0,isFinite(rt)?(rt=rt>>>0,dt===void 0&&(dt="utf8")):(dt=rt,rt=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var xt=this.length-Le;if((rt===void 0||rt>xt)&&(rt=xt),Te.length>0&&(rt<0||Le<0)||Le>this.length)throw new RangeError("Attempt to write outside buffer bounds");dt||(dt="utf8");for(var It=!1;;)switch(dt){case"hex":return J(this,Te,Le,rt);case"utf8":case"utf-8":return Z(this,Te,Le,rt);case"ascii":case"latin1":case"binary":return re(this,Te,Le,rt);case"base64":return ne(this,Te,Le,rt);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return j(this,Te,Le,rt);default:if(It)throw new TypeError("Unknown encoding: "+dt);dt=(""+dt).toLowerCase(),It=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function ee(ke,Te,Le){return Te===0&&Le===ke.length?E.fromByteArray(ke):E.fromByteArray(ke.slice(Te,Le))}function ie(ke,Te,Le){Le=Math.min(ke.length,Le);for(var rt=[],dt=Te;dt239?4:xt>223?3:xt>191?2:1;if(dt+Bt<=Le){var Gt=void 0,Kt=void 0,sr=void 0,sa=void 0;switch(Bt){case 1:xt<128&&(It=xt);break;case 2:Gt=ke[dt+1],(Gt&192)===128&&(sa=(xt&31)<<6|Gt&63,sa>127&&(It=sa));break;case 3:Gt=ke[dt+1],Kt=ke[dt+2],(Gt&192)===128&&(Kt&192)===128&&(sa=(xt&15)<<12|(Gt&63)<<6|Kt&63,sa>2047&&(sa<55296||sa>57343)&&(It=sa));break;case 4:Gt=ke[dt+1],Kt=ke[dt+2],sr=ke[dt+3],(Gt&192)===128&&(Kt&192)===128&&(sr&192)===128&&(sa=(xt&15)<<18|(Gt&63)<<12|(Kt&63)<<6|sr&63,sa>65535&&sa<1114112&&(It=sa))}}It===null?(It=65533,Bt=1):It>65535&&(It-=65536,rt.push(It>>>10&1023|55296),It=56320|It&1023),rt.push(It),dt+=Bt}return be(rt)}var fe=4096;function be(ke){var Te=ke.length;if(Te<=fe)return String.fromCharCode.apply(String,ke);for(var Le="",rt=0;rtrt)&&(Le=rt);for(var dt="",xt=Te;xtrt&&(Te=rt),Le<0?(Le+=rt,Le<0&&(Le=0)):Le>rt&&(Le=rt),LeLe)throw new RangeError("Trying to access beyond buffer length")}f.prototype.readUintLE=f.prototype.readUIntLE=function(Te,Le,rt){Te=Te>>>0,Le=Le>>>0,rt||at(Te,Le,this.length);for(var dt=this[Te],xt=1,It=0;++It>>0,Le=Le>>>0,rt||at(Te,Le,this.length);for(var dt=this[Te+--Le],xt=1;Le>0&&(xt*=256);)dt+=this[Te+--Le]*xt;return dt},f.prototype.readUint8=f.prototype.readUInt8=function(Te,Le){return Te=Te>>>0,Le||at(Te,1,this.length),this[Te]},f.prototype.readUint16LE=f.prototype.readUInt16LE=function(Te,Le){return Te=Te>>>0,Le||at(Te,2,this.length),this[Te]|this[Te+1]<<8},f.prototype.readUint16BE=f.prototype.readUInt16BE=function(Te,Le){return Te=Te>>>0,Le||at(Te,2,this.length),this[Te]<<8|this[Te+1]},f.prototype.readUint32LE=f.prototype.readUInt32LE=function(Te,Le){return Te=Te>>>0,Le||at(Te,4,this.length),(this[Te]|this[Te+1]<<8|this[Te+2]<<16)+this[Te+3]*16777216},f.prototype.readUint32BE=f.prototype.readUInt32BE=function(Te,Le){return Te=Te>>>0,Le||at(Te,4,this.length),this[Te]*16777216+(this[Te+1]<<16|this[Te+2]<<8|this[Te+3])},f.prototype.readBigUInt64LE=Ee(function(Te){Te=Te>>>0,St(Te,"offset");var Le=this[Te],rt=this[Te+7];(Le===void 0||rt===void 0)&&Ot(Te,this.length-8);var dt=Le+this[++Te]*Math.pow(2,8)+this[++Te]*Math.pow(2,16)+this[++Te]*Math.pow(2,24),xt=this[++Te]+this[++Te]*Math.pow(2,8)+this[++Te]*Math.pow(2,16)+rt*Math.pow(2,24);return BigInt(dt)+(BigInt(xt)<>>0,St(Te,"offset");var Le=this[Te],rt=this[Te+7];(Le===void 0||rt===void 0)&&Ot(Te,this.length-8);var dt=Le*Math.pow(2,24)+this[++Te]*Math.pow(2,16)+this[++Te]*Math.pow(2,8)+this[++Te],xt=this[++Te]*Math.pow(2,24)+this[++Te]*Math.pow(2,16)+this[++Te]*Math.pow(2,8)+rt;return(BigInt(dt)<>>0,Le=Le>>>0,rt||at(Te,Le,this.length);for(var dt=this[Te],xt=1,It=0;++It=xt&&(dt-=Math.pow(2,8*Le)),dt},f.prototype.readIntBE=function(Te,Le,rt){Te=Te>>>0,Le=Le>>>0,rt||at(Te,Le,this.length);for(var dt=Le,xt=1,It=this[Te+--dt];dt>0&&(xt*=256);)It+=this[Te+--dt]*xt;return xt*=128,It>=xt&&(It-=Math.pow(2,8*Le)),It},f.prototype.readInt8=function(Te,Le){return Te=Te>>>0,Le||at(Te,1,this.length),this[Te]&128?(255-this[Te]+1)*-1:this[Te]},f.prototype.readInt16LE=function(Te,Le){Te=Te>>>0,Le||at(Te,2,this.length);var rt=this[Te]|this[Te+1]<<8;return rt&32768?rt|4294901760:rt},f.prototype.readInt16BE=function(Te,Le){Te=Te>>>0,Le||at(Te,2,this.length);var rt=this[Te+1]|this[Te]<<8;return rt&32768?rt|4294901760:rt},f.prototype.readInt32LE=function(Te,Le){return Te=Te>>>0,Le||at(Te,4,this.length),this[Te]|this[Te+1]<<8|this[Te+2]<<16|this[Te+3]<<24},f.prototype.readInt32BE=function(Te,Le){return Te=Te>>>0,Le||at(Te,4,this.length),this[Te]<<24|this[Te+1]<<16|this[Te+2]<<8|this[Te+3]},f.prototype.readBigInt64LE=Ee(function(Te){Te=Te>>>0,St(Te,"offset");var Le=this[Te],rt=this[Te+7];(Le===void 0||rt===void 0)&&Ot(Te,this.length-8);var dt=this[Te+4]+this[Te+5]*Math.pow(2,8)+this[Te+6]*Math.pow(2,16)+(rt<<24);return(BigInt(dt)<>>0,St(Te,"offset");var Le=this[Te],rt=this[Te+7];(Le===void 0||rt===void 0)&&Ot(Te,this.length-8);var dt=(Le<<24)+this[++Te]*Math.pow(2,16)+this[++Te]*Math.pow(2,8)+this[++Te];return(BigInt(dt)<>>0,Le||at(Te,4,this.length),m.read(this,Te,!0,23,4)},f.prototype.readFloatBE=function(Te,Le){return Te=Te>>>0,Le||at(Te,4,this.length),m.read(this,Te,!1,23,4)},f.prototype.readDoubleLE=function(Te,Le){return Te=Te>>>0,Le||at(Te,8,this.length),m.read(this,Te,!0,52,8)},f.prototype.readDoubleBE=function(Te,Le){return Te=Te>>>0,Le||at(Te,8,this.length),m.read(this,Te,!1,52,8)};function it(ke,Te,Le,rt,dt,xt){if(!f.isBuffer(ke))throw new TypeError('"buffer" argument must be a Buffer instance');if(Te>dt||Teke.length)throw new RangeError("Index out of range")}f.prototype.writeUintLE=f.prototype.writeUIntLE=function(Te,Le,rt,dt){if(Te=+Te,Le=Le>>>0,rt=rt>>>0,!dt){var xt=Math.pow(2,8*rt)-1;it(this,Te,Le,rt,xt,0)}var It=1,Bt=0;for(this[Le]=Te&255;++Bt>>0,rt=rt>>>0,!dt){var xt=Math.pow(2,8*rt)-1;it(this,Te,Le,rt,xt,0)}var It=rt-1,Bt=1;for(this[Le+It]=Te&255;--It>=0&&(Bt*=256);)this[Le+It]=Te/Bt&255;return Le+rt},f.prototype.writeUint8=f.prototype.writeUInt8=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,1,255,0),this[Le]=Te&255,Le+1},f.prototype.writeUint16LE=f.prototype.writeUInt16LE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,2,65535,0),this[Le]=Te&255,this[Le+1]=Te>>>8,Le+2},f.prototype.writeUint16BE=f.prototype.writeUInt16BE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,2,65535,0),this[Le]=Te>>>8,this[Le+1]=Te&255,Le+2},f.prototype.writeUint32LE=f.prototype.writeUInt32LE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,4,4294967295,0),this[Le+3]=Te>>>24,this[Le+2]=Te>>>16,this[Le+1]=Te>>>8,this[Le]=Te&255,Le+4},f.prototype.writeUint32BE=f.prototype.writeUInt32BE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,4,4294967295,0),this[Le]=Te>>>24,this[Le+1]=Te>>>16,this[Le+2]=Te>>>8,this[Le+3]=Te&255,Le+4};function et(ke,Te,Le,rt,dt){Ct(Te,rt,dt,ke,Le,7);var xt=Number(Te&BigInt(4294967295));ke[Le++]=xt,xt=xt>>8,ke[Le++]=xt,xt=xt>>8,ke[Le++]=xt,xt=xt>>8,ke[Le++]=xt;var It=Number(Te>>BigInt(32)&BigInt(4294967295));return ke[Le++]=It,It=It>>8,ke[Le++]=It,It=It>>8,ke[Le++]=It,It=It>>8,ke[Le++]=It,Le}function lt(ke,Te,Le,rt,dt){Ct(Te,rt,dt,ke,Le,7);var xt=Number(Te&BigInt(4294967295));ke[Le+7]=xt,xt=xt>>8,ke[Le+6]=xt,xt=xt>>8,ke[Le+5]=xt,xt=xt>>8,ke[Le+4]=xt;var It=Number(Te>>BigInt(32)&BigInt(4294967295));return ke[Le+3]=It,It=It>>8,ke[Le+2]=It,It=It>>8,ke[Le+1]=It,It=It>>8,ke[Le]=It,Le+8}f.prototype.writeBigUInt64LE=Ee(function(Te){var Le=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return et(this,Te,Le,BigInt(0),BigInt("0xffffffffffffffff"))}),f.prototype.writeBigUInt64BE=Ee(function(Te){var Le=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return lt(this,Te,Le,BigInt(0),BigInt("0xffffffffffffffff"))}),f.prototype.writeIntLE=function(Te,Le,rt,dt){if(Te=+Te,Le=Le>>>0,!dt){var xt=Math.pow(2,8*rt-1);it(this,Te,Le,rt,xt-1,-xt)}var It=0,Bt=1,Gt=0;for(this[Le]=Te&255;++It>0)-Gt&255;return Le+rt},f.prototype.writeIntBE=function(Te,Le,rt,dt){if(Te=+Te,Le=Le>>>0,!dt){var xt=Math.pow(2,8*rt-1);it(this,Te,Le,rt,xt-1,-xt)}var It=rt-1,Bt=1,Gt=0;for(this[Le+It]=Te&255;--It>=0&&(Bt*=256);)Te<0&&Gt===0&&this[Le+It+1]!==0&&(Gt=1),this[Le+It]=(Te/Bt>>0)-Gt&255;return Le+rt},f.prototype.writeInt8=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,1,127,-128),Te<0&&(Te=255+Te+1),this[Le]=Te&255,Le+1},f.prototype.writeInt16LE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,2,32767,-32768),this[Le]=Te&255,this[Le+1]=Te>>>8,Le+2},f.prototype.writeInt16BE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,2,32767,-32768),this[Le]=Te>>>8,this[Le+1]=Te&255,Le+2},f.prototype.writeInt32LE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,4,2147483647,-2147483648),this[Le]=Te&255,this[Le+1]=Te>>>8,this[Le+2]=Te>>>16,this[Le+3]=Te>>>24,Le+4},f.prototype.writeInt32BE=function(Te,Le,rt){return Te=+Te,Le=Le>>>0,rt||it(this,Te,Le,4,2147483647,-2147483648),Te<0&&(Te=4294967295+Te+1),this[Le]=Te>>>24,this[Le+1]=Te>>>16,this[Le+2]=Te>>>8,this[Le+3]=Te&255,Le+4},f.prototype.writeBigInt64LE=Ee(function(Te){var Le=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return et(this,Te,Le,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),f.prototype.writeBigInt64BE=Ee(function(Te){var Le=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return lt(this,Te,Le,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Me(ke,Te,Le,rt,dt,xt){if(Le+rt>ke.length)throw new RangeError("Index out of range");if(Le<0)throw new RangeError("Index out of range")}function ge(ke,Te,Le,rt,dt){return Te=+Te,Le=Le>>>0,dt||Me(ke,Te,Le,4,34028234663852886e22,-34028234663852886e22),m.write(ke,Te,Le,rt,23,4),Le+4}f.prototype.writeFloatLE=function(Te,Le,rt){return ge(this,Te,Le,!0,rt)},f.prototype.writeFloatBE=function(Te,Le,rt){return ge(this,Te,Le,!1,rt)};function ce(ke,Te,Le,rt,dt){return Te=+Te,Le=Le>>>0,dt||Me(ke,Te,Le,8,17976931348623157e292,-17976931348623157e292),m.write(ke,Te,Le,rt,52,8),Le+8}f.prototype.writeDoubleLE=function(Te,Le,rt){return ce(this,Te,Le,!0,rt)},f.prototype.writeDoubleBE=function(Te,Le,rt){return ce(this,Te,Le,!1,rt)},f.prototype.copy=function(Te,Le,rt,dt){if(!f.isBuffer(Te))throw new TypeError("argument should be a Buffer");if(rt||(rt=0),!dt&&dt!==0&&(dt=this.length),Le>=Te.length&&(Le=Te.length),Le||(Le=0),dt>0&&dt=this.length)throw new RangeError("Index out of range");if(dt<0)throw new RangeError("sourceEnd out of bounds");dt>this.length&&(dt=this.length),Te.length-Le>>0,rt=rt===void 0?this.length:rt>>>0,Te||(Te=0);var It;if(typeof Te=="number")for(It=Le;ItMath.pow(2,32)?dt=nt(String(Le)):typeof Le=="bigint"&&(dt=String(Le),(Le>Math.pow(BigInt(2),BigInt(32))||Le<-Math.pow(BigInt(2),BigInt(32)))&&(dt=nt(dt)),dt+="n"),rt+=" It must be ".concat(Te,". Received ").concat(dt),rt},RangeError);function nt(ke){for(var Te="",Le=ke.length,rt=ke[0]==="-"?1:0;Le>=rt+4;Le-=3)Te="_".concat(ke.slice(Le-3,Le)).concat(Te);return"".concat(ke.slice(0,Le)).concat(Te)}function Qe(ke,Te,Le){St(Te,"offset"),(ke[Te]===void 0||ke[Te+Le]===void 0)&&Ot(Te,ke.length-(Le+1))}function Ct(ke,Te,Le,rt,dt,xt){if(ke>Le||ke3?Te===0||Te===BigInt(0)?Bt=">= 0".concat(It," and < 2").concat(It," ** ").concat((xt+1)*8).concat(It):Bt=">= -(2".concat(It," ** ").concat((xt+1)*8-1).concat(It,") and < 2 ** ")+"".concat((xt+1)*8-1).concat(It):Bt=">= ".concat(Te).concat(It," and <= ").concat(Le).concat(It),new ze.ERR_OUT_OF_RANGE("value",Bt,ke)}Qe(rt,dt,xt)}function St(ke,Te){if(typeof ke!="number")throw new ze.ERR_INVALID_ARG_TYPE(Te,"number",ke)}function Ot(ke,Te,Le){throw Math.floor(ke)!==ke?(St(ke,Le),new ze.ERR_OUT_OF_RANGE(Le||"offset","an integer",ke)):Te<0?new ze.ERR_BUFFER_OUT_OF_BOUNDS:new ze.ERR_OUT_OF_RANGE(Le||"offset",">= ".concat(Le?1:0," and <= ").concat(Te),ke)}var jt=/[^+/0-9A-Za-z-_]/g;function ur(ke){if(ke=ke.split("=")[0],ke=ke.trim().replace(jt,""),ke.length<2)return"";for(;ke.length%4!==0;)ke=ke+"=";return ke}function ar(ke,Te){Te=Te||1/0;for(var Le,rt=ke.length,dt=null,xt=[],It=0;It55295&&Le<57344){if(!dt){if(Le>56319){(Te-=3)>-1&&xt.push(239,191,189);continue}else if(It+1===rt){(Te-=3)>-1&&xt.push(239,191,189);continue}dt=Le;continue}if(Le<56320){(Te-=3)>-1&&xt.push(239,191,189),dt=Le;continue}Le=(dt-55296<<10|Le-56320)+65536}else dt&&(Te-=3)>-1&&xt.push(239,191,189);if(dt=null,Le<128){if((Te-=1)<0)break;xt.push(Le)}else if(Le<2048){if((Te-=2)<0)break;xt.push(Le>>6|192,Le&63|128)}else if(Le<65536){if((Te-=3)<0)break;xt.push(Le>>12|224,Le>>6&63|128,Le&63|128)}else if(Le<1114112){if((Te-=4)<0)break;xt.push(Le>>18|240,Le>>12&63|128,Le>>6&63|128,Le&63|128)}else throw new Error("Invalid code point")}return xt}function Cr(ke){for(var Te=[],Le=0;Le>8,dt=Le%256,xt.push(dt),xt.push(rt);return xt}function _r(ke){return E.toByteArray(ur(ke))}function yt(ke,Te,Le,rt){var dt;for(dt=0;dt=Te.length||dt>=ke.length);++dt)Te[dt+Le]=ke[dt];return dt}function Fe(ke,Te){return ke instanceof Te||ke!=null&&ke.constructor!=null&&ke.constructor.name!=null&&ke.constructor.name===Te.name}function Ke(ke){return ke!==ke}var Ne=function(){for(var ke="0123456789abcdef",Te=new Array(256),Le=0;Le<16;++Le)for(var rt=Le*16,dt=0;dt<16;++dt)Te[rt+dt]=ke[Le]+ke[dt];return Te}();function Ee(ke){return typeof BigInt>"u"?Ve:ke}function Ve(){throw new Error("BigInt not supported")}},9216:function(e){"use strict";e.exports=a,e.exports.isMobile=a,e.exports.default=a;var t=/(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,r=/CrOS/,o=/android|ipad|playbook|silk/i;function a(i){i||(i={});var n=i.ua;if(!n&&typeof navigator<"u"&&(n=navigator.userAgent),n&&n.headers&&typeof n.headers["user-agent"]=="string"&&(n=n.headers["user-agent"]),typeof n!="string")return!1;var s=t.test(n)&&!r.test(n)||!!i.tablet&&o.test(n);return!s&&i.tablet&&i.featureDetect&&navigator&&navigator.maxTouchPoints>1&&n.indexOf("Macintosh")!==-1&&n.indexOf("Safari")!==-1&&(s=!0),s}},6296:function(e,t,r){"use strict";e.exports=c;var o=r(7261),a=r(9977),i=r(1811);function n(h,v){this._controllerNames=Object.keys(h),this._controllerList=this._controllerNames.map(function(p){return h[p]}),this._mode=v,this._active=h[v],this._active||(this._mode="turntable",this._active=h.turntable),this.modes=this._controllerNames,this.computedMatrix=this._active.computedMatrix,this.computedEye=this._active.computedEye,this.computedUp=this._active.computedUp,this.computedCenter=this._active.computedCenter,this.computedRadius=this._active.computedRadius}var s=n.prototype;s.flush=function(h){for(var v=this._controllerList,p=0;p"u"?r(1538):WeakMap,a=r(2762),i=r(8116),n=new o;function s(c){var h=n.get(c),v=h&&(h._triangleBuffer.handle||h._triangleBuffer.buffer);if(!v||!c.isBuffer(v)){var p=a(c,new Float32Array([-1,-1,-1,4,4,-1]));h=i(c,[{buffer:p,type:c.FLOAT,size:2}]),h._triangleBuffer=p,n.set(c,h)}h.bind(),c.drawArrays(c.TRIANGLES,0,3),h.unbind()}e.exports=s},1085:function(e,t,r){var o=r(1371);e.exports=a;function a(i,n,s){n=typeof n=="number"?n:1,s=s||": ";var c=i.split(/\r?\n/),h=String(c.length+n-1).length;return c.map(function(v,p){var T=p+n,l=String(T).length,_=o(T,h-l);return _+s+v}).join(` +`)}},3952:function(e,t,r){"use strict";e.exports=i;var o=r(3250);function a(n,s){for(var c=new Array(s+1),h=0;h0)throw new Error("Invalid string. Length must be a multiple of 4");var E=w.indexOf("=");E===-1&&(E=S);var m=E===S?0:4-E%4;return[E,m]}function h(w){var S=c(w),E=S[0],m=S[1];return(E+m)*3/4-m}function v(w,S,E){return(S+E)*3/4-E}function p(w){var S,E=c(w),m=E[0],b=E[1],d=new a(v(w,m,b)),u=0,y=b>0?m-4:m,f;for(f=0;f>16&255,d[u++]=S>>8&255,d[u++]=S&255;return b===2&&(S=o[w.charCodeAt(f)]<<2|o[w.charCodeAt(f+1)]>>4,d[u++]=S&255),b===1&&(S=o[w.charCodeAt(f)]<<10|o[w.charCodeAt(f+1)]<<4|o[w.charCodeAt(f+2)]>>2,d[u++]=S>>8&255,d[u++]=S&255),d}function T(w){return r[w>>18&63]+r[w>>12&63]+r[w>>6&63]+r[w&63]}function l(w,S,E){for(var m,b=[],d=S;dy?y:u+d));return m===1?(S=w[E-1],b.push(r[S>>2]+r[S<<4&63]+"==")):m===2&&(S=(w[E-2]<<8)+w[E-1],b.push(r[S>>10]+r[S>>4&63]+r[S<<2&63]+"=")),b.join("")}},3865:function(e,t,r){"use strict";var o=r(869);e.exports=a;function a(i,n){return o(i[0].mul(n[1]).add(n[0].mul(i[1])),i[1].mul(n[1]))}},1318:function(e){"use strict";e.exports=t;function t(r,o){return r[0].mul(o[1]).cmp(o[0].mul(r[1]))}},8697:function(e,t,r){"use strict";var o=r(869);e.exports=a;function a(i,n){return o(i[0].mul(n[1]),i[1].mul(n[0]))}},7842:function(e,t,r){"use strict";var o=r(6330),a=r(1533),i=r(2651),n=r(6768),s=r(869),c=r(8697);e.exports=h;function h(v,p){if(o(v))return p?c(v,h(p)):[v[0].clone(),v[1].clone()];var T=0,l,_;if(a(v))l=v.clone();else if(typeof v=="string")l=n(v);else{if(v===0)return[i(0),i(1)];if(v===Math.floor(v))l=i(v);else{for(;v!==Math.floor(v);)v=v*Math.pow(2,256),T-=256;l=i(v)}}if(o(p))l.mul(p[1]),_=p[0].clone();else if(a(p))_=p.clone();else if(typeof p=="string")_=n(p);else if(!p)_=i(1);else if(p===Math.floor(p))_=i(p);else{for(;p!==Math.floor(p);)p=p*Math.pow(2,256),T+=256;_=i(p)}return T>0?l=l.ushln(T):T<0&&(_=_.ushln(-T)),s(l,_)}},6330:function(e,t,r){"use strict";var o=r(1533);e.exports=a;function a(i){return Array.isArray(i)&&i.length===2&&o(i[0])&&o(i[1])}},5716:function(e,t,r){"use strict";var o=r(6859);e.exports=a;function a(i){return i.cmp(new o(0))}},1369:function(e,t,r){"use strict";var o=r(5716);e.exports=a;function a(i){var n=i.length,s=i.words,c=0;if(n===1)c=s[0];else if(n===2)c=s[0]+s[1]*67108864;else for(var h=0;h20?52:c+32}},1533:function(e,t,r){"use strict";var o=r(6859);e.exports=a;function a(i){return i&&typeof i=="object"&&!!i.words}},2651:function(e,t,r){"use strict";var o=r(6859),a=r(2361);e.exports=i;function i(n){var s=a.exponent(n);return s<52?new o(n):new o(n*Math.pow(2,52-s)).ushln(s-52)}},869:function(e,t,r){"use strict";var o=r(2651),a=r(5716);e.exports=i;function i(n,s){var c=a(n),h=a(s);if(c===0)return[o(0),o(1)];if(h===0)return[o(0),o(0)];h<0&&(n=n.neg(),s=s.neg());var v=n.gcd(s);return v.cmpn(1)?[n.div(v),s.div(v)]:[n,s]}},6768:function(e,t,r){"use strict";var o=r(6859);e.exports=a;function a(i){return new o(i)}},6504:function(e,t,r){"use strict";var o=r(869);e.exports=a;function a(i,n){return o(i[0].mul(n[0]),i[1].mul(n[1]))}},7721:function(e,t,r){"use strict";var o=r(5716);e.exports=a;function a(i){return o(i[0])*o(i[1])}},5572:function(e,t,r){"use strict";var o=r(869);e.exports=a;function a(i,n){return o(i[0].mul(n[1]).sub(i[1].mul(n[0])),i[1].mul(n[1]))}},946:function(e,t,r){"use strict";var o=r(1369),a=r(4025);e.exports=i;function i(n){var s=n[0],c=n[1];if(s.cmpn(0)===0)return 0;var h=s.abs().divmod(c.abs()),v=h.div,p=o(v),T=h.mod,l=s.negative!==c.negative?-1:1;if(T.cmpn(0)===0)return l*p;if(p){var _=a(p)+4,w=o(T.ushln(_).divRound(c));return l*(p+w*Math.pow(2,-_))}else{var S=c.bitLength()-T.bitLength()+53,w=o(T.ushln(S).divRound(c));return S<1023?l*w*Math.pow(2,-S):(w*=Math.pow(2,-1023),l*w*Math.pow(2,1023-S))}}},2478:function(e){"use strict";function t(s,c,h,v,p){for(var T=p+1;v<=p;){var l=v+p>>>1,_=s[l],w=h!==void 0?h(_,c):_-c;w>=0?(T=l,p=l-1):v=l+1}return T}function r(s,c,h,v,p){for(var T=p+1;v<=p;){var l=v+p>>>1,_=s[l],w=h!==void 0?h(_,c):_-c;w>0?(T=l,p=l-1):v=l+1}return T}function o(s,c,h,v,p){for(var T=v-1;v<=p;){var l=v+p>>>1,_=s[l],w=h!==void 0?h(_,c):_-c;w<0?(T=l,v=l+1):p=l-1}return T}function a(s,c,h,v,p){for(var T=v-1;v<=p;){var l=v+p>>>1,_=s[l],w=h!==void 0?h(_,c):_-c;w<=0?(T=l,v=l+1):p=l-1}return T}function i(s,c,h,v,p){for(;v<=p;){var T=v+p>>>1,l=s[T],_=h!==void 0?h(l,c):l-c;if(_===0)return T;_<=0?v=T+1:p=T-1}return-1}function n(s,c,h,v,p,T){return typeof h=="function"?T(s,c,h,v===void 0?0:v|0,p===void 0?s.length-1:p|0):T(s,c,void 0,h===void 0?0:h|0,v===void 0?s.length-1:v|0)}e.exports={ge:function(s,c,h,v,p){return n(s,c,h,v,p,t)},gt:function(s,c,h,v,p){return n(s,c,h,v,p,r)},lt:function(s,c,h,v,p){return n(s,c,h,v,p,o)},le:function(s,c,h,v,p){return n(s,c,h,v,p,a)},eq:function(s,c,h,v,p){return n(s,c,h,v,p,i)}}},8828:function(e,t){"use strict";"use restrict";var r=32;t.INT_BITS=r,t.INT_MAX=2147483647,t.INT_MIN=-1<0)-(i<0)},t.abs=function(i){var n=i>>r-1;return(i^n)-n},t.min=function(i,n){return n^(i^n)&-(i65535)<<4,i>>>=n,s=(i>255)<<3,i>>>=s,n|=s,s=(i>15)<<2,i>>>=s,n|=s,s=(i>3)<<1,i>>>=s,n|=s,n|i>>1},t.log10=function(i){return i>=1e9?9:i>=1e8?8:i>=1e7?7:i>=1e6?6:i>=1e5?5:i>=1e4?4:i>=1e3?3:i>=100?2:i>=10?1:0},t.popCount=function(i){return i=i-(i>>>1&1431655765),i=(i&858993459)+(i>>>2&858993459),(i+(i>>>4)&252645135)*16843009>>>24};function o(i){var n=32;return i&=-i,i&&n--,i&65535&&(n-=16),i&16711935&&(n-=8),i&252645135&&(n-=4),i&858993459&&(n-=2),i&1431655765&&(n-=1),n}t.countTrailingZeros=o,t.nextPow2=function(i){return i+=i===0,--i,i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1},t.prevPow2=function(i){return i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i-(i>>>1)},t.parity=function(i){return i^=i>>>16,i^=i>>>8,i^=i>>>4,i&=15,27030>>>i&1};var a=new Array(256);(function(i){for(var n=0;n<256;++n){var s=n,c=n,h=7;for(s>>>=1;s;s>>>=1)c<<=1,c|=s&1,--h;i[n]=c<>>8&255]<<16|a[i>>>16&255]<<8|a[i>>>24&255]},t.interleave2=function(i,n){return i&=65535,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,n&=65535,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,i|n<<1},t.deinterleave2=function(i,n){return i=i>>>n&1431655765,i=(i|i>>>1)&858993459,i=(i|i>>>2)&252645135,i=(i|i>>>4)&16711935,i=(i|i>>>16)&65535,i<<16>>16},t.interleave3=function(i,n,s){return i&=1023,i=(i|i<<16)&4278190335,i=(i|i<<8)&251719695,i=(i|i<<4)&3272356035,i=(i|i<<2)&1227133513,n&=1023,n=(n|n<<16)&4278190335,n=(n|n<<8)&251719695,n=(n|n<<4)&3272356035,n=(n|n<<2)&1227133513,i|=n<<1,s&=1023,s=(s|s<<16)&4278190335,s=(s|s<<8)&251719695,s=(s|s<<4)&3272356035,s=(s|s<<2)&1227133513,i|s<<2},t.deinterleave3=function(i,n){return i=i>>>n&1227133513,i=(i|i>>>2)&3272356035,i=(i|i>>>4)&251719695,i=(i|i>>>8)&4278190335,i=(i|i>>>16)&1023,i<<22>>22},t.nextCombination=function(i){var n=i|i-1;return n+1|(~n&-~n)-1>>>o(i)+1}},6859:function(e,t,r){e=r.nmd(e),function(o,a){"use strict";function i(O,I){if(!O)throw new Error(I||"Assertion failed")}function n(O,I){O.super_=I;var N=function(){};N.prototype=I.prototype,O.prototype=new N,O.prototype.constructor=O}function s(O,I,N){if(s.isBN(O))return O;this.negative=0,this.words=null,this.length=0,this.red=null,O!==null&&((I==="le"||I==="be")&&(N=I,I=10),this._init(O||0,I||10,N||"be"))}typeof o=="object"?o.exports=s:a.BN=s,s.BN=s,s.wordSize=26;var c;try{typeof window<"u"&&typeof window.Buffer<"u"?c=window.Buffer:c=r(7790).Buffer}catch{}s.isBN=function(I){return I instanceof s?!0:I!==null&&typeof I=="object"&&I.constructor.wordSize===s.wordSize&&Array.isArray(I.words)},s.max=function(I,N){return I.cmp(N)>0?I:N},s.min=function(I,N){return I.cmp(N)<0?I:N},s.prototype._init=function(I,N,U){if(typeof I=="number")return this._initNumber(I,N,U);if(typeof I=="object")return this._initArray(I,N,U);N==="hex"&&(N=16),i(N===(N|0)&&N>=2&&N<=36),I=I.toString().replace(/\s+/g,"");var W=0;I[0]==="-"&&(W++,this.negative=1),W=0;W-=3)ue=I[W]|I[W-1]<<8|I[W-2]<<16,this.words[Q]|=ue<>>26-se&67108863,se+=24,se>=26&&(se-=26,Q++);else if(U==="le")for(W=0,Q=0;W>>26-se&67108863,se+=24,se>=26&&(se-=26,Q++);return this.strip()};function h(O,I){var N=O.charCodeAt(I);return N>=65&&N<=70?N-55:N>=97&&N<=102?N-87:N-48&15}function v(O,I,N){var U=h(O,N);return N-1>=I&&(U|=h(O,N-1)<<4),U}s.prototype._parseHex=function(I,N,U){this.length=Math.ceil((I.length-N)/6),this.words=new Array(this.length);for(var W=0;W=N;W-=2)se=v(I,N,W)<=18?(Q-=18,ue+=1,this.words[ue]|=se>>>26):Q+=8;else{var he=I.length-N;for(W=he%2===0?N+1:N;W=18?(Q-=18,ue+=1,this.words[ue]|=se>>>26):Q+=8}this.strip()};function p(O,I,N,U){for(var W=0,Q=Math.min(O.length,N),ue=I;ue=49?W+=se-49+10:se>=17?W+=se-17+10:W+=se}return W}s.prototype._parseBase=function(I,N,U){this.words=[0],this.length=1;for(var W=0,Q=1;Q<=67108863;Q*=N)W++;W--,Q=Q/N|0;for(var ue=I.length-U,se=ue%W,he=Math.min(ue,ue-se)+U,G=0,$=U;$1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},s.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},s.prototype.inspect=function(){return(this.red?""};var T=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],_=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(I,N){I=I||10,N=N|0||1;var U;if(I===16||I==="hex"){U="";for(var W=0,Q=0,ue=0;ue>>24-W&16777215,Q!==0||ue!==this.length-1?U=T[6-he.length]+he+U:U=he+U,W+=2,W>=26&&(W-=26,ue--)}for(Q!==0&&(U=Q.toString(16)+U);U.length%N!==0;)U="0"+U;return this.negative!==0&&(U="-"+U),U}if(I===(I|0)&&I>=2&&I<=36){var G=l[I],$=_[I];U="";var J=this.clone();for(J.negative=0;!J.isZero();){var Z=J.modn($).toString(I);J=J.idivn($),J.isZero()?U=Z+U:U=T[G-Z.length]+Z+U}for(this.isZero()&&(U="0"+U);U.length%N!==0;)U="0"+U;return this.negative!==0&&(U="-"+U),U}i(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var I=this.words[0];return this.length===2?I+=this.words[1]*67108864:this.length===3&&this.words[2]===1?I+=4503599627370496+this.words[1]*67108864:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-I:I},s.prototype.toJSON=function(){return this.toString(16)},s.prototype.toBuffer=function(I,N){return i(typeof c<"u"),this.toArrayLike(c,I,N)},s.prototype.toArray=function(I,N){return this.toArrayLike(Array,I,N)},s.prototype.toArrayLike=function(I,N,U){var W=this.byteLength(),Q=U||Math.max(1,W);i(W<=Q,"byte array longer than desired length"),i(Q>0,"Requested array length <= 0"),this.strip();var ue=N==="le",se=new I(Q),he,G,$=this.clone();if(ue){for(G=0;!$.isZero();G++)he=$.andln(255),$.iushrn(8),se[G]=he;for(;G=4096&&(U+=13,N>>>=13),N>=64&&(U+=7,N>>>=7),N>=8&&(U+=4,N>>>=4),N>=2&&(U+=2,N>>>=2),U+N},s.prototype._zeroBits=function(I){if(I===0)return 26;var N=I,U=0;return N&8191||(U+=13,N>>>=13),N&127||(U+=7,N>>>=7),N&15||(U+=4,N>>>=4),N&3||(U+=2,N>>>=2),N&1||U++,U},s.prototype.bitLength=function(){var I=this.words[this.length-1],N=this._countBits(I);return(this.length-1)*26+N};function w(O){for(var I=new Array(O.bitLength()),N=0;N>>W}return I}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var I=0,N=0;NI.length?this.clone().ior(I):I.clone().ior(this)},s.prototype.uor=function(I){return this.length>I.length?this.clone().iuor(I):I.clone().iuor(this)},s.prototype.iuand=function(I){var N;this.length>I.length?N=I:N=this;for(var U=0;UI.length?this.clone().iand(I):I.clone().iand(this)},s.prototype.uand=function(I){return this.length>I.length?this.clone().iuand(I):I.clone().iuand(this)},s.prototype.iuxor=function(I){var N,U;this.length>I.length?(N=this,U=I):(N=I,U=this);for(var W=0;WI.length?this.clone().ixor(I):I.clone().ixor(this)},s.prototype.uxor=function(I){return this.length>I.length?this.clone().iuxor(I):I.clone().iuxor(this)},s.prototype.inotn=function(I){i(typeof I=="number"&&I>=0);var N=Math.ceil(I/26)|0,U=I%26;this._expand(N),U>0&&N--;for(var W=0;W0&&(this.words[W]=~this.words[W]&67108863>>26-U),this.strip()},s.prototype.notn=function(I){return this.clone().inotn(I)},s.prototype.setn=function(I,N){i(typeof I=="number"&&I>=0);var U=I/26|0,W=I%26;return this._expand(U+1),N?this.words[U]=this.words[U]|1<I.length?(U=this,W=I):(U=I,W=this);for(var Q=0,ue=0;ue>>26;for(;Q!==0&&ue>>26;if(this.length=U.length,Q!==0)this.words[this.length]=Q,this.length++;else if(U!==this)for(;ueI.length?this.clone().iadd(I):I.clone().iadd(this)},s.prototype.isub=function(I){if(I.negative!==0){I.negative=0;var N=this.iadd(I);return I.negative=1,N._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(I),this.negative=1,this._normSign();var U=this.cmp(I);if(U===0)return this.negative=0,this.length=1,this.words[0]=0,this;var W,Q;U>0?(W=this,Q=I):(W=I,Q=this);for(var ue=0,se=0;se>26,this.words[se]=N&67108863;for(;ue!==0&&se>26,this.words[se]=N&67108863;if(ue===0&&se>>26,J=he&67108863,Z=Math.min(G,I.length-1),re=Math.max(0,G-O.length+1);re<=Z;re++){var ne=G-re|0;W=O.words[ne]|0,Q=I.words[re]|0,ue=W*Q+J,$+=ue/67108864|0,J=ue&67108863}N.words[G]=J|0,he=$|0}return he!==0?N.words[G]=he|0:N.length--,N.strip()}var E=function(I,N,U){var W=I.words,Q=N.words,ue=U.words,se=0,he,G,$,J=W[0]|0,Z=J&8191,re=J>>>13,ne=W[1]|0,j=ne&8191,ee=ne>>>13,ie=W[2]|0,fe=ie&8191,be=ie>>>13,Ae=W[3]|0,Be=Ae&8191,Ie=Ae>>>13,Ze=W[4]|0,at=Ze&8191,it=Ze>>>13,et=W[5]|0,lt=et&8191,Me=et>>>13,ge=W[6]|0,ce=ge&8191,ze=ge>>>13,tt=W[7]|0,nt=tt&8191,Qe=tt>>>13,Ct=W[8]|0,St=Ct&8191,Ot=Ct>>>13,jt=W[9]|0,ur=jt&8191,ar=jt>>>13,Cr=Q[0]|0,vr=Cr&8191,_r=Cr>>>13,yt=Q[1]|0,Fe=yt&8191,Ke=yt>>>13,Ne=Q[2]|0,Ee=Ne&8191,Ve=Ne>>>13,ke=Q[3]|0,Te=ke&8191,Le=ke>>>13,rt=Q[4]|0,dt=rt&8191,xt=rt>>>13,It=Q[5]|0,Bt=It&8191,Gt=It>>>13,Kt=Q[6]|0,sr=Kt&8191,sa=Kt>>>13,Aa=Q[7]|0,La=Aa&8191,ka=Aa>>>13,Ga=Q[8]|0,Ma=Ga&8191,Ua=Ga>>>13,ni=Q[9]|0,Wt=ni&8191,zt=ni>>>13;U.negative=I.negative^N.negative,U.length=19,he=Math.imul(Z,vr),G=Math.imul(Z,_r),G=G+Math.imul(re,vr)|0,$=Math.imul(re,_r);var Vt=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Vt>>>26)|0,Vt&=67108863,he=Math.imul(j,vr),G=Math.imul(j,_r),G=G+Math.imul(ee,vr)|0,$=Math.imul(ee,_r),he=he+Math.imul(Z,Fe)|0,G=G+Math.imul(Z,Ke)|0,G=G+Math.imul(re,Fe)|0,$=$+Math.imul(re,Ke)|0;var Ut=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Ut>>>26)|0,Ut&=67108863,he=Math.imul(fe,vr),G=Math.imul(fe,_r),G=G+Math.imul(be,vr)|0,$=Math.imul(be,_r),he=he+Math.imul(j,Fe)|0,G=G+Math.imul(j,Ke)|0,G=G+Math.imul(ee,Fe)|0,$=$+Math.imul(ee,Ke)|0,he=he+Math.imul(Z,Ee)|0,G=G+Math.imul(Z,Ve)|0,G=G+Math.imul(re,Ee)|0,$=$+Math.imul(re,Ve)|0;var xr=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(xr>>>26)|0,xr&=67108863,he=Math.imul(Be,vr),G=Math.imul(Be,_r),G=G+Math.imul(Ie,vr)|0,$=Math.imul(Ie,_r),he=he+Math.imul(fe,Fe)|0,G=G+Math.imul(fe,Ke)|0,G=G+Math.imul(be,Fe)|0,$=$+Math.imul(be,Ke)|0,he=he+Math.imul(j,Ee)|0,G=G+Math.imul(j,Ve)|0,G=G+Math.imul(ee,Ee)|0,$=$+Math.imul(ee,Ve)|0,he=he+Math.imul(Z,Te)|0,G=G+Math.imul(Z,Le)|0,G=G+Math.imul(re,Te)|0,$=$+Math.imul(re,Le)|0;var Zr=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Zr>>>26)|0,Zr&=67108863,he=Math.imul(at,vr),G=Math.imul(at,_r),G=G+Math.imul(it,vr)|0,$=Math.imul(it,_r),he=he+Math.imul(Be,Fe)|0,G=G+Math.imul(Be,Ke)|0,G=G+Math.imul(Ie,Fe)|0,$=$+Math.imul(Ie,Ke)|0,he=he+Math.imul(fe,Ee)|0,G=G+Math.imul(fe,Ve)|0,G=G+Math.imul(be,Ee)|0,$=$+Math.imul(be,Ve)|0,he=he+Math.imul(j,Te)|0,G=G+Math.imul(j,Le)|0,G=G+Math.imul(ee,Te)|0,$=$+Math.imul(ee,Le)|0,he=he+Math.imul(Z,dt)|0,G=G+Math.imul(Z,xt)|0,G=G+Math.imul(re,dt)|0,$=$+Math.imul(re,xt)|0;var pa=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(pa>>>26)|0,pa&=67108863,he=Math.imul(lt,vr),G=Math.imul(lt,_r),G=G+Math.imul(Me,vr)|0,$=Math.imul(Me,_r),he=he+Math.imul(at,Fe)|0,G=G+Math.imul(at,Ke)|0,G=G+Math.imul(it,Fe)|0,$=$+Math.imul(it,Ke)|0,he=he+Math.imul(Be,Ee)|0,G=G+Math.imul(Be,Ve)|0,G=G+Math.imul(Ie,Ee)|0,$=$+Math.imul(Ie,Ve)|0,he=he+Math.imul(fe,Te)|0,G=G+Math.imul(fe,Le)|0,G=G+Math.imul(be,Te)|0,$=$+Math.imul(be,Le)|0,he=he+Math.imul(j,dt)|0,G=G+Math.imul(j,xt)|0,G=G+Math.imul(ee,dt)|0,$=$+Math.imul(ee,xt)|0,he=he+Math.imul(Z,Bt)|0,G=G+Math.imul(Z,Gt)|0,G=G+Math.imul(re,Bt)|0,$=$+Math.imul(re,Gt)|0;var Xr=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Xr>>>26)|0,Xr&=67108863,he=Math.imul(ce,vr),G=Math.imul(ce,_r),G=G+Math.imul(ze,vr)|0,$=Math.imul(ze,_r),he=he+Math.imul(lt,Fe)|0,G=G+Math.imul(lt,Ke)|0,G=G+Math.imul(Me,Fe)|0,$=$+Math.imul(Me,Ke)|0,he=he+Math.imul(at,Ee)|0,G=G+Math.imul(at,Ve)|0,G=G+Math.imul(it,Ee)|0,$=$+Math.imul(it,Ve)|0,he=he+Math.imul(Be,Te)|0,G=G+Math.imul(Be,Le)|0,G=G+Math.imul(Ie,Te)|0,$=$+Math.imul(Ie,Le)|0,he=he+Math.imul(fe,dt)|0,G=G+Math.imul(fe,xt)|0,G=G+Math.imul(be,dt)|0,$=$+Math.imul(be,xt)|0,he=he+Math.imul(j,Bt)|0,G=G+Math.imul(j,Gt)|0,G=G+Math.imul(ee,Bt)|0,$=$+Math.imul(ee,Gt)|0,he=he+Math.imul(Z,sr)|0,G=G+Math.imul(Z,sa)|0,G=G+Math.imul(re,sr)|0,$=$+Math.imul(re,sa)|0;var Ea=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Ea>>>26)|0,Ea&=67108863,he=Math.imul(nt,vr),G=Math.imul(nt,_r),G=G+Math.imul(Qe,vr)|0,$=Math.imul(Qe,_r),he=he+Math.imul(ce,Fe)|0,G=G+Math.imul(ce,Ke)|0,G=G+Math.imul(ze,Fe)|0,$=$+Math.imul(ze,Ke)|0,he=he+Math.imul(lt,Ee)|0,G=G+Math.imul(lt,Ve)|0,G=G+Math.imul(Me,Ee)|0,$=$+Math.imul(Me,Ve)|0,he=he+Math.imul(at,Te)|0,G=G+Math.imul(at,Le)|0,G=G+Math.imul(it,Te)|0,$=$+Math.imul(it,Le)|0,he=he+Math.imul(Be,dt)|0,G=G+Math.imul(Be,xt)|0,G=G+Math.imul(Ie,dt)|0,$=$+Math.imul(Ie,xt)|0,he=he+Math.imul(fe,Bt)|0,G=G+Math.imul(fe,Gt)|0,G=G+Math.imul(be,Bt)|0,$=$+Math.imul(be,Gt)|0,he=he+Math.imul(j,sr)|0,G=G+Math.imul(j,sa)|0,G=G+Math.imul(ee,sr)|0,$=$+Math.imul(ee,sa)|0,he=he+Math.imul(Z,La)|0,G=G+Math.imul(Z,ka)|0,G=G+Math.imul(re,La)|0,$=$+Math.imul(re,ka)|0;var Fa=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Fa>>>26)|0,Fa&=67108863,he=Math.imul(St,vr),G=Math.imul(St,_r),G=G+Math.imul(Ot,vr)|0,$=Math.imul(Ot,_r),he=he+Math.imul(nt,Fe)|0,G=G+Math.imul(nt,Ke)|0,G=G+Math.imul(Qe,Fe)|0,$=$+Math.imul(Qe,Ke)|0,he=he+Math.imul(ce,Ee)|0,G=G+Math.imul(ce,Ve)|0,G=G+Math.imul(ze,Ee)|0,$=$+Math.imul(ze,Ve)|0,he=he+Math.imul(lt,Te)|0,G=G+Math.imul(lt,Le)|0,G=G+Math.imul(Me,Te)|0,$=$+Math.imul(Me,Le)|0,he=he+Math.imul(at,dt)|0,G=G+Math.imul(at,xt)|0,G=G+Math.imul(it,dt)|0,$=$+Math.imul(it,xt)|0,he=he+Math.imul(Be,Bt)|0,G=G+Math.imul(Be,Gt)|0,G=G+Math.imul(Ie,Bt)|0,$=$+Math.imul(Ie,Gt)|0,he=he+Math.imul(fe,sr)|0,G=G+Math.imul(fe,sa)|0,G=G+Math.imul(be,sr)|0,$=$+Math.imul(be,sa)|0,he=he+Math.imul(j,La)|0,G=G+Math.imul(j,ka)|0,G=G+Math.imul(ee,La)|0,$=$+Math.imul(ee,ka)|0,he=he+Math.imul(Z,Ma)|0,G=G+Math.imul(Z,Ua)|0,G=G+Math.imul(re,Ma)|0,$=$+Math.imul(re,Ua)|0;var qa=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(qa>>>26)|0,qa&=67108863,he=Math.imul(ur,vr),G=Math.imul(ur,_r),G=G+Math.imul(ar,vr)|0,$=Math.imul(ar,_r),he=he+Math.imul(St,Fe)|0,G=G+Math.imul(St,Ke)|0,G=G+Math.imul(Ot,Fe)|0,$=$+Math.imul(Ot,Ke)|0,he=he+Math.imul(nt,Ee)|0,G=G+Math.imul(nt,Ve)|0,G=G+Math.imul(Qe,Ee)|0,$=$+Math.imul(Qe,Ve)|0,he=he+Math.imul(ce,Te)|0,G=G+Math.imul(ce,Le)|0,G=G+Math.imul(ze,Te)|0,$=$+Math.imul(ze,Le)|0,he=he+Math.imul(lt,dt)|0,G=G+Math.imul(lt,xt)|0,G=G+Math.imul(Me,dt)|0,$=$+Math.imul(Me,xt)|0,he=he+Math.imul(at,Bt)|0,G=G+Math.imul(at,Gt)|0,G=G+Math.imul(it,Bt)|0,$=$+Math.imul(it,Gt)|0,he=he+Math.imul(Be,sr)|0,G=G+Math.imul(Be,sa)|0,G=G+Math.imul(Ie,sr)|0,$=$+Math.imul(Ie,sa)|0,he=he+Math.imul(fe,La)|0,G=G+Math.imul(fe,ka)|0,G=G+Math.imul(be,La)|0,$=$+Math.imul(be,ka)|0,he=he+Math.imul(j,Ma)|0,G=G+Math.imul(j,Ua)|0,G=G+Math.imul(ee,Ma)|0,$=$+Math.imul(ee,Ua)|0,he=he+Math.imul(Z,Wt)|0,G=G+Math.imul(Z,zt)|0,G=G+Math.imul(re,Wt)|0,$=$+Math.imul(re,zt)|0;var ya=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(ya>>>26)|0,ya&=67108863,he=Math.imul(ur,Fe),G=Math.imul(ur,Ke),G=G+Math.imul(ar,Fe)|0,$=Math.imul(ar,Ke),he=he+Math.imul(St,Ee)|0,G=G+Math.imul(St,Ve)|0,G=G+Math.imul(Ot,Ee)|0,$=$+Math.imul(Ot,Ve)|0,he=he+Math.imul(nt,Te)|0,G=G+Math.imul(nt,Le)|0,G=G+Math.imul(Qe,Te)|0,$=$+Math.imul(Qe,Le)|0,he=he+Math.imul(ce,dt)|0,G=G+Math.imul(ce,xt)|0,G=G+Math.imul(ze,dt)|0,$=$+Math.imul(ze,xt)|0,he=he+Math.imul(lt,Bt)|0,G=G+Math.imul(lt,Gt)|0,G=G+Math.imul(Me,Bt)|0,$=$+Math.imul(Me,Gt)|0,he=he+Math.imul(at,sr)|0,G=G+Math.imul(at,sa)|0,G=G+Math.imul(it,sr)|0,$=$+Math.imul(it,sa)|0,he=he+Math.imul(Be,La)|0,G=G+Math.imul(Be,ka)|0,G=G+Math.imul(Ie,La)|0,$=$+Math.imul(Ie,ka)|0,he=he+Math.imul(fe,Ma)|0,G=G+Math.imul(fe,Ua)|0,G=G+Math.imul(be,Ma)|0,$=$+Math.imul(be,Ua)|0,he=he+Math.imul(j,Wt)|0,G=G+Math.imul(j,zt)|0,G=G+Math.imul(ee,Wt)|0,$=$+Math.imul(ee,zt)|0;var $a=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+($a>>>26)|0,$a&=67108863,he=Math.imul(ur,Ee),G=Math.imul(ur,Ve),G=G+Math.imul(ar,Ee)|0,$=Math.imul(ar,Ve),he=he+Math.imul(St,Te)|0,G=G+Math.imul(St,Le)|0,G=G+Math.imul(Ot,Te)|0,$=$+Math.imul(Ot,Le)|0,he=he+Math.imul(nt,dt)|0,G=G+Math.imul(nt,xt)|0,G=G+Math.imul(Qe,dt)|0,$=$+Math.imul(Qe,xt)|0,he=he+Math.imul(ce,Bt)|0,G=G+Math.imul(ce,Gt)|0,G=G+Math.imul(ze,Bt)|0,$=$+Math.imul(ze,Gt)|0,he=he+Math.imul(lt,sr)|0,G=G+Math.imul(lt,sa)|0,G=G+Math.imul(Me,sr)|0,$=$+Math.imul(Me,sa)|0,he=he+Math.imul(at,La)|0,G=G+Math.imul(at,ka)|0,G=G+Math.imul(it,La)|0,$=$+Math.imul(it,ka)|0,he=he+Math.imul(Be,Ma)|0,G=G+Math.imul(Be,Ua)|0,G=G+Math.imul(Ie,Ma)|0,$=$+Math.imul(Ie,Ua)|0,he=he+Math.imul(fe,Wt)|0,G=G+Math.imul(fe,zt)|0,G=G+Math.imul(be,Wt)|0,$=$+Math.imul(be,zt)|0;var mt=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(mt>>>26)|0,mt&=67108863,he=Math.imul(ur,Te),G=Math.imul(ur,Le),G=G+Math.imul(ar,Te)|0,$=Math.imul(ar,Le),he=he+Math.imul(St,dt)|0,G=G+Math.imul(St,xt)|0,G=G+Math.imul(Ot,dt)|0,$=$+Math.imul(Ot,xt)|0,he=he+Math.imul(nt,Bt)|0,G=G+Math.imul(nt,Gt)|0,G=G+Math.imul(Qe,Bt)|0,$=$+Math.imul(Qe,Gt)|0,he=he+Math.imul(ce,sr)|0,G=G+Math.imul(ce,sa)|0,G=G+Math.imul(ze,sr)|0,$=$+Math.imul(ze,sa)|0,he=he+Math.imul(lt,La)|0,G=G+Math.imul(lt,ka)|0,G=G+Math.imul(Me,La)|0,$=$+Math.imul(Me,ka)|0,he=he+Math.imul(at,Ma)|0,G=G+Math.imul(at,Ua)|0,G=G+Math.imul(it,Ma)|0,$=$+Math.imul(it,Ua)|0,he=he+Math.imul(Be,Wt)|0,G=G+Math.imul(Be,zt)|0,G=G+Math.imul(Ie,Wt)|0,$=$+Math.imul(Ie,zt)|0;var gt=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(gt>>>26)|0,gt&=67108863,he=Math.imul(ur,dt),G=Math.imul(ur,xt),G=G+Math.imul(ar,dt)|0,$=Math.imul(ar,xt),he=he+Math.imul(St,Bt)|0,G=G+Math.imul(St,Gt)|0,G=G+Math.imul(Ot,Bt)|0,$=$+Math.imul(Ot,Gt)|0,he=he+Math.imul(nt,sr)|0,G=G+Math.imul(nt,sa)|0,G=G+Math.imul(Qe,sr)|0,$=$+Math.imul(Qe,sa)|0,he=he+Math.imul(ce,La)|0,G=G+Math.imul(ce,ka)|0,G=G+Math.imul(ze,La)|0,$=$+Math.imul(ze,ka)|0,he=he+Math.imul(lt,Ma)|0,G=G+Math.imul(lt,Ua)|0,G=G+Math.imul(Me,Ma)|0,$=$+Math.imul(Me,Ua)|0,he=he+Math.imul(at,Wt)|0,G=G+Math.imul(at,zt)|0,G=G+Math.imul(it,Wt)|0,$=$+Math.imul(it,zt)|0;var Er=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Er>>>26)|0,Er&=67108863,he=Math.imul(ur,Bt),G=Math.imul(ur,Gt),G=G+Math.imul(ar,Bt)|0,$=Math.imul(ar,Gt),he=he+Math.imul(St,sr)|0,G=G+Math.imul(St,sa)|0,G=G+Math.imul(Ot,sr)|0,$=$+Math.imul(Ot,sa)|0,he=he+Math.imul(nt,La)|0,G=G+Math.imul(nt,ka)|0,G=G+Math.imul(Qe,La)|0,$=$+Math.imul(Qe,ka)|0,he=he+Math.imul(ce,Ma)|0,G=G+Math.imul(ce,Ua)|0,G=G+Math.imul(ze,Ma)|0,$=$+Math.imul(ze,Ua)|0,he=he+Math.imul(lt,Wt)|0,G=G+Math.imul(lt,zt)|0,G=G+Math.imul(Me,Wt)|0,$=$+Math.imul(Me,zt)|0;var kr=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(kr>>>26)|0,kr&=67108863,he=Math.imul(ur,sr),G=Math.imul(ur,sa),G=G+Math.imul(ar,sr)|0,$=Math.imul(ar,sa),he=he+Math.imul(St,La)|0,G=G+Math.imul(St,ka)|0,G=G+Math.imul(Ot,La)|0,$=$+Math.imul(Ot,ka)|0,he=he+Math.imul(nt,Ma)|0,G=G+Math.imul(nt,Ua)|0,G=G+Math.imul(Qe,Ma)|0,$=$+Math.imul(Qe,Ua)|0,he=he+Math.imul(ce,Wt)|0,G=G+Math.imul(ce,zt)|0,G=G+Math.imul(ze,Wt)|0,$=$+Math.imul(ze,zt)|0;var br=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(br>>>26)|0,br&=67108863,he=Math.imul(ur,La),G=Math.imul(ur,ka),G=G+Math.imul(ar,La)|0,$=Math.imul(ar,ka),he=he+Math.imul(St,Ma)|0,G=G+Math.imul(St,Ua)|0,G=G+Math.imul(Ot,Ma)|0,$=$+Math.imul(Ot,Ua)|0,he=he+Math.imul(nt,Wt)|0,G=G+Math.imul(nt,zt)|0,G=G+Math.imul(Qe,Wt)|0,$=$+Math.imul(Qe,zt)|0;var Tr=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Tr>>>26)|0,Tr&=67108863,he=Math.imul(ur,Ma),G=Math.imul(ur,Ua),G=G+Math.imul(ar,Ma)|0,$=Math.imul(ar,Ua),he=he+Math.imul(St,Wt)|0,G=G+Math.imul(St,zt)|0,G=G+Math.imul(Ot,Wt)|0,$=$+Math.imul(Ot,zt)|0;var Mr=(se+he|0)+((G&8191)<<13)|0;se=($+(G>>>13)|0)+(Mr>>>26)|0,Mr&=67108863,he=Math.imul(ur,Wt),G=Math.imul(ur,zt),G=G+Math.imul(ar,Wt)|0,$=Math.imul(ar,zt);var Fr=(se+he|0)+((G&8191)<<13)|0;return se=($+(G>>>13)|0)+(Fr>>>26)|0,Fr&=67108863,ue[0]=Vt,ue[1]=Ut,ue[2]=xr,ue[3]=Zr,ue[4]=pa,ue[5]=Xr,ue[6]=Ea,ue[7]=Fa,ue[8]=qa,ue[9]=ya,ue[10]=$a,ue[11]=mt,ue[12]=gt,ue[13]=Er,ue[14]=kr,ue[15]=br,ue[16]=Tr,ue[17]=Mr,ue[18]=Fr,se!==0&&(ue[19]=se,U.length++),U};Math.imul||(E=S);function m(O,I,N){N.negative=I.negative^O.negative,N.length=O.length+I.length;for(var U=0,W=0,Q=0;Q>>26)|0,W+=ue>>>26,ue&=67108863}N.words[Q]=se,U=ue,ue=W}return U!==0?N.words[Q]=U:N.length--,N.strip()}function b(O,I,N){var U=new d;return U.mulp(O,I,N)}s.prototype.mulTo=function(I,N){var U,W=this.length+I.length;return this.length===10&&I.length===10?U=E(this,I,N):W<63?U=S(this,I,N):W<1024?U=m(this,I,N):U=b(this,I,N),U};function d(O,I){this.x=O,this.y=I}d.prototype.makeRBT=function(I){for(var N=new Array(I),U=s.prototype._countBits(I)-1,W=0;W>=1;return W},d.prototype.permute=function(I,N,U,W,Q,ue){for(var se=0;se>>1)Q++;return 1<>>13,U[2*ue+1]=Q&8191,Q=Q>>>13;for(ue=2*N;ue>=26,N+=W/67108864|0,N+=Q>>>26,this.words[U]=Q&67108863}return N!==0&&(this.words[U]=N,this.length++),this},s.prototype.muln=function(I){return this.clone().imuln(I)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(I){var N=w(I);if(N.length===0)return new s(1);for(var U=this,W=0;W=0);var N=I%26,U=(I-N)/26,W=67108863>>>26-N<<26-N,Q;if(N!==0){var ue=0;for(Q=0;Q>>26-N}ue&&(this.words[Q]=ue,this.length++)}if(U!==0){for(Q=this.length-1;Q>=0;Q--)this.words[Q+U]=this.words[Q];for(Q=0;Q=0);var W;N?W=(N-N%26)/26:W=0;var Q=I%26,ue=Math.min((I-Q)/26,this.length),se=67108863^67108863>>>Q<ue)for(this.length-=ue,G=0;G=0&&($!==0||G>=W);G--){var J=this.words[G]|0;this.words[G]=$<<26-Q|J>>>Q,$=J&se}return he&&$!==0&&(he.words[he.length++]=$),this.length===0&&(this.words[0]=0,this.length=1),this.strip()},s.prototype.ishrn=function(I,N,U){return i(this.negative===0),this.iushrn(I,N,U)},s.prototype.shln=function(I){return this.clone().ishln(I)},s.prototype.ushln=function(I){return this.clone().iushln(I)},s.prototype.shrn=function(I){return this.clone().ishrn(I)},s.prototype.ushrn=function(I){return this.clone().iushrn(I)},s.prototype.testn=function(I){i(typeof I=="number"&&I>=0);var N=I%26,U=(I-N)/26,W=1<=0);var N=I%26,U=(I-N)/26;if(i(this.negative===0,"imaskn works only with positive numbers"),this.length<=U)return this;if(N!==0&&U++,this.length=Math.min(U,this.length),N!==0){var W=67108863^67108863>>>N<=67108864;N++)this.words[N]-=67108864,N===this.length-1?this.words[N+1]=1:this.words[N+1]++;return this.length=Math.max(this.length,N+1),this},s.prototype.isubn=function(I){if(i(typeof I=="number"),i(I<67108864),I<0)return this.iaddn(-I);if(this.negative!==0)return this.negative=0,this.iaddn(I),this.negative=1,this;if(this.words[0]-=I,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var N=0;N>26)-(he/67108864|0),this.words[Q+U]=ue&67108863}for(;Q>26,this.words[Q+U]=ue&67108863;if(se===0)return this.strip();for(i(se===-1),se=0,Q=0;Q>26,this.words[Q]=ue&67108863;return this.negative=1,this.strip()},s.prototype._wordDiv=function(I,N){var U=this.length-I.length,W=this.clone(),Q=I,ue=Q.words[Q.length-1]|0,se=this._countBits(ue);U=26-se,U!==0&&(Q=Q.ushln(U),W.iushln(U),ue=Q.words[Q.length-1]|0);var he=W.length-Q.length,G;if(N!=="mod"){G=new s(null),G.length=he+1,G.words=new Array(G.length);for(var $=0;$=0;Z--){var re=(W.words[Q.length+Z]|0)*67108864+(W.words[Q.length+Z-1]|0);for(re=Math.min(re/ue|0,67108863),W._ishlnsubmul(Q,re,Z);W.negative!==0;)re--,W.negative=0,W._ishlnsubmul(Q,1,Z),W.isZero()||(W.negative^=1);G&&(G.words[Z]=re)}return G&&G.strip(),W.strip(),N!=="div"&&U!==0&&W.iushrn(U),{div:G||null,mod:W}},s.prototype.divmod=function(I,N,U){if(i(!I.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var W,Q,ue;return this.negative!==0&&I.negative===0?(ue=this.neg().divmod(I,N),N!=="mod"&&(W=ue.div.neg()),N!=="div"&&(Q=ue.mod.neg(),U&&Q.negative!==0&&Q.iadd(I)),{div:W,mod:Q}):this.negative===0&&I.negative!==0?(ue=this.divmod(I.neg(),N),N!=="mod"&&(W=ue.div.neg()),{div:W,mod:ue.mod}):this.negative&I.negative?(ue=this.neg().divmod(I.neg(),N),N!=="div"&&(Q=ue.mod.neg(),U&&Q.negative!==0&&Q.isub(I)),{div:ue.div,mod:Q}):I.length>this.length||this.cmp(I)<0?{div:new s(0),mod:this}:I.length===1?N==="div"?{div:this.divn(I.words[0]),mod:null}:N==="mod"?{div:null,mod:new s(this.modn(I.words[0]))}:{div:this.divn(I.words[0]),mod:new s(this.modn(I.words[0]))}:this._wordDiv(I,N)},s.prototype.div=function(I){return this.divmod(I,"div",!1).div},s.prototype.mod=function(I){return this.divmod(I,"mod",!1).mod},s.prototype.umod=function(I){return this.divmod(I,"mod",!0).mod},s.prototype.divRound=function(I){var N=this.divmod(I);if(N.mod.isZero())return N.div;var U=N.div.negative!==0?N.mod.isub(I):N.mod,W=I.ushrn(1),Q=I.andln(1),ue=U.cmp(W);return ue<0||Q===1&&ue===0?N.div:N.div.negative!==0?N.div.isubn(1):N.div.iaddn(1)},s.prototype.modn=function(I){i(I<=67108863);for(var N=(1<<26)%I,U=0,W=this.length-1;W>=0;W--)U=(N*U+(this.words[W]|0))%I;return U},s.prototype.idivn=function(I){i(I<=67108863);for(var N=0,U=this.length-1;U>=0;U--){var W=(this.words[U]|0)+N*67108864;this.words[U]=W/I|0,N=W%I}return this.strip()},s.prototype.divn=function(I){return this.clone().idivn(I)},s.prototype.egcd=function(I){i(I.negative===0),i(!I.isZero());var N=this,U=I.clone();N.negative!==0?N=N.umod(I):N=N.clone();for(var W=new s(1),Q=new s(0),ue=new s(0),se=new s(1),he=0;N.isEven()&&U.isEven();)N.iushrn(1),U.iushrn(1),++he;for(var G=U.clone(),$=N.clone();!N.isZero();){for(var J=0,Z=1;!(N.words[0]&Z)&&J<26;++J,Z<<=1);if(J>0)for(N.iushrn(J);J-- >0;)(W.isOdd()||Q.isOdd())&&(W.iadd(G),Q.isub($)),W.iushrn(1),Q.iushrn(1);for(var re=0,ne=1;!(U.words[0]&ne)&&re<26;++re,ne<<=1);if(re>0)for(U.iushrn(re);re-- >0;)(ue.isOdd()||se.isOdd())&&(ue.iadd(G),se.isub($)),ue.iushrn(1),se.iushrn(1);N.cmp(U)>=0?(N.isub(U),W.isub(ue),Q.isub(se)):(U.isub(N),ue.isub(W),se.isub(Q))}return{a:ue,b:se,gcd:U.iushln(he)}},s.prototype._invmp=function(I){i(I.negative===0),i(!I.isZero());var N=this,U=I.clone();N.negative!==0?N=N.umod(I):N=N.clone();for(var W=new s(1),Q=new s(0),ue=U.clone();N.cmpn(1)>0&&U.cmpn(1)>0;){for(var se=0,he=1;!(N.words[0]&he)&&se<26;++se,he<<=1);if(se>0)for(N.iushrn(se);se-- >0;)W.isOdd()&&W.iadd(ue),W.iushrn(1);for(var G=0,$=1;!(U.words[0]&$)&&G<26;++G,$<<=1);if(G>0)for(U.iushrn(G);G-- >0;)Q.isOdd()&&Q.iadd(ue),Q.iushrn(1);N.cmp(U)>=0?(N.isub(U),W.isub(Q)):(U.isub(N),Q.isub(W))}var J;return N.cmpn(1)===0?J=W:J=Q,J.cmpn(0)<0&&J.iadd(I),J},s.prototype.gcd=function(I){if(this.isZero())return I.abs();if(I.isZero())return this.abs();var N=this.clone(),U=I.clone();N.negative=0,U.negative=0;for(var W=0;N.isEven()&&U.isEven();W++)N.iushrn(1),U.iushrn(1);do{for(;N.isEven();)N.iushrn(1);for(;U.isEven();)U.iushrn(1);var Q=N.cmp(U);if(Q<0){var ue=N;N=U,U=ue}else if(Q===0||U.cmpn(1)===0)break;N.isub(U)}while(!0);return U.iushln(W)},s.prototype.invm=function(I){return this.egcd(I).a.umod(I)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(I){return this.words[0]&I},s.prototype.bincn=function(I){i(typeof I=="number");var N=I%26,U=(I-N)/26,W=1<>>26,se&=67108863,this.words[ue]=se}return Q!==0&&(this.words[ue]=Q,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(I){var N=I<0;if(this.negative!==0&&!N)return-1;if(this.negative===0&&N)return 1;this.strip();var U;if(this.length>1)U=1;else{N&&(I=-I),i(I<=67108863,"Number is too big");var W=this.words[0]|0;U=W===I?0:WI.length)return 1;if(this.length=0;U--){var W=this.words[U]|0,Q=I.words[U]|0;if(W!==Q){WQ&&(N=1);break}}return N},s.prototype.gtn=function(I){return this.cmpn(I)===1},s.prototype.gt=function(I){return this.cmp(I)===1},s.prototype.gten=function(I){return this.cmpn(I)>=0},s.prototype.gte=function(I){return this.cmp(I)>=0},s.prototype.ltn=function(I){return this.cmpn(I)===-1},s.prototype.lt=function(I){return this.cmp(I)===-1},s.prototype.lten=function(I){return this.cmpn(I)<=0},s.prototype.lte=function(I){return this.cmp(I)<=0},s.prototype.eqn=function(I){return this.cmpn(I)===0},s.prototype.eq=function(I){return this.cmp(I)===0},s.red=function(I){return new F(I)},s.prototype.toRed=function(I){return i(!this.red,"Already a number in reduction context"),i(this.negative===0,"red works only with positives"),I.convertTo(this)._forceRed(I)},s.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(I){return this.red=I,this},s.prototype.forceRed=function(I){return i(!this.red,"Already a number in reduction context"),this._forceRed(I)},s.prototype.redAdd=function(I){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,I)},s.prototype.redIAdd=function(I){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,I)},s.prototype.redSub=function(I){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,I)},s.prototype.redISub=function(I){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,I)},s.prototype.redShl=function(I){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,I)},s.prototype.redMul=function(I){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,I),this.red.mul(this,I)},s.prototype.redIMul=function(I){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,I),this.red.imul(this,I)},s.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(I){return i(this.red&&!I.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,I)};var u={k256:null,p224:null,p192:null,p25519:null};function y(O,I){this.name=O,this.p=new s(I,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}y.prototype._tmp=function(){var I=new s(null);return I.words=new Array(Math.ceil(this.n/13)),I},y.prototype.ireduce=function(I){var N=I,U;do this.split(N,this.tmp),N=this.imulK(N),N=N.iadd(this.tmp),U=N.bitLength();while(U>this.n);var W=U0?N.isub(this.p):N.strip!==void 0?N.strip():N._strip(),N},y.prototype.split=function(I,N){I.iushrn(this.n,0,N)},y.prototype.imulK=function(I){return I.imul(this.k)};function f(){y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}n(f,y),f.prototype.split=function(I,N){for(var U=4194303,W=Math.min(I.length,9),Q=0;Q>>22,ue=se}ue>>>=22,I.words[Q-10]=ue,ue===0&&I.length>10?I.length-=10:I.length-=9},f.prototype.imulK=function(I){I.words[I.length]=0,I.words[I.length+1]=0,I.length+=2;for(var N=0,U=0;U>>=26,I.words[U]=Q,N=W}return N!==0&&(I.words[I.length++]=N),I},s._prime=function(I){if(u[I])return u[I];var N;if(I==="k256")N=new f;else if(I==="p224")N=new P;else if(I==="p192")N=new L;else if(I==="p25519")N=new z;else throw new Error("Unknown prime "+I);return u[I]=N,N};function F(O){if(typeof O=="string"){var I=s._prime(O);this.m=I.p,this.prime=I}else i(O.gtn(1),"modulus must be greater than 1"),this.m=O,this.prime=null}F.prototype._verify1=function(I){i(I.negative===0,"red works only with positives"),i(I.red,"red works only with red numbers")},F.prototype._verify2=function(I,N){i((I.negative|N.negative)===0,"red works only with positives"),i(I.red&&I.red===N.red,"red works only with red numbers")},F.prototype.imod=function(I){return this.prime?this.prime.ireduce(I)._forceRed(this):I.umod(this.m)._forceRed(this)},F.prototype.neg=function(I){return I.isZero()?I.clone():this.m.sub(I)._forceRed(this)},F.prototype.add=function(I,N){this._verify2(I,N);var U=I.add(N);return U.cmp(this.m)>=0&&U.isub(this.m),U._forceRed(this)},F.prototype.iadd=function(I,N){this._verify2(I,N);var U=I.iadd(N);return U.cmp(this.m)>=0&&U.isub(this.m),U},F.prototype.sub=function(I,N){this._verify2(I,N);var U=I.sub(N);return U.cmpn(0)<0&&U.iadd(this.m),U._forceRed(this)},F.prototype.isub=function(I,N){this._verify2(I,N);var U=I.isub(N);return U.cmpn(0)<0&&U.iadd(this.m),U},F.prototype.shl=function(I,N){return this._verify1(I),this.imod(I.ushln(N))},F.prototype.imul=function(I,N){return this._verify2(I,N),this.imod(I.imul(N))},F.prototype.mul=function(I,N){return this._verify2(I,N),this.imod(I.mul(N))},F.prototype.isqr=function(I){return this.imul(I,I.clone())},F.prototype.sqr=function(I){return this.mul(I,I)},F.prototype.sqrt=function(I){if(I.isZero())return I.clone();var N=this.m.andln(3);if(i(N%2===1),N===3){var U=this.m.add(new s(1)).iushrn(2);return this.pow(I,U)}for(var W=this.m.subn(1),Q=0;!W.isZero()&&W.andln(1)===0;)Q++,W.iushrn(1);i(!W.isZero());var ue=new s(1).toRed(this),se=ue.redNeg(),he=this.m.subn(1).iushrn(1),G=this.m.bitLength();for(G=new s(2*G*G).toRed(this);this.pow(G,he).cmp(se)!==0;)G.redIAdd(se);for(var $=this.pow(G,W),J=this.pow(I,W.addn(1).iushrn(1)),Z=this.pow(I,W),re=Q;Z.cmp(ue)!==0;){for(var ne=Z,j=0;ne.cmp(ue)!==0;j++)ne=ne.redSqr();i(j=0;Q--){for(var $=N.words[Q],J=G-1;J>=0;J--){var Z=$>>J&1;if(ue!==W[0]&&(ue=this.sqr(ue)),Z===0&&se===0){he=0;continue}se<<=1,se|=Z,he++,!(he!==U&&(Q!==0||J!==0))&&(ue=this.mul(ue,W[se]),he=0,se=0)}G=26}return ue},F.prototype.convertTo=function(I){var N=I.umod(this.m);return N===I?N.clone():N},F.prototype.convertFrom=function(I){var N=I.clone();return N.red=null,N},s.mont=function(I){return new B(I)};function B(O){F.call(this,O),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}n(B,F),B.prototype.convertTo=function(I){return this.imod(I.ushln(this.shift))},B.prototype.convertFrom=function(I){var N=this.imod(I.mul(this.rinv));return N.red=null,N},B.prototype.imul=function(I,N){if(I.isZero()||N.isZero())return I.words[0]=0,I.length=1,I;var U=I.imul(N),W=U.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),Q=U.isub(W).iushrn(this.shift),ue=Q;return Q.cmp(this.m)>=0?ue=Q.isub(this.m):Q.cmpn(0)<0&&(ue=Q.iadd(this.m)),ue._forceRed(this)},B.prototype.mul=function(I,N){if(I.isZero()||N.isZero())return new s(0)._forceRed(this);var U=I.mul(N),W=U.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),Q=U.isub(W).iushrn(this.shift),ue=Q;return Q.cmp(this.m)>=0?ue=Q.isub(this.m):Q.cmpn(0)<0&&(ue=Q.iadd(this.m)),ue._forceRed(this)},B.prototype.invm=function(I){var N=this.imod(I._invmp(this.m).mul(this.r2));return N._forceRed(this)}}(e,this)},6204:function(e){"use strict";e.exports=t;function t(r){var o,a,i,n=r.length,s=0;for(o=0;o>>1;if(!(d<=0)){var u,y=o.mallocDouble(2*d*m),f=o.mallocInt32(m);if(m=s(_,d,y,f),m>0){if(d===1&&E)a.init(m),u=a.sweepComplete(d,S,0,m,y,f,0,m,y,f);else{var P=o.mallocDouble(2*d*b),L=o.mallocInt32(b);b=s(w,d,P,L),b>0&&(a.init(m+b),d===1?u=a.sweepBipartite(d,S,0,m,y,f,0,b,P,L):u=i(d,S,E,m,y,f,b,P,L),o.free(P),o.free(L))}o.free(y),o.free(f)}return u}}}var h;function v(_,w){h.push([_,w])}function p(_){return h=[],c(_,_,v,!0),h}function T(_,w){return h=[],c(_,w,v,!1),h}function l(_,w,S){switch(arguments.length){case 1:return p(_);case 2:return typeof w=="function"?c(_,_,w,!0):T(_,w);case 3:return c(_,w,S,!1);default:throw new Error("box-intersect: Invalid arguments")}}},2455:function(e,t){"use strict";function r(){function i(c,h,v,p,T,l,_,w,S,E,m){for(var b=2*c,d=p,u=b*p;dS-w?i(c,h,v,p,T,l,_,w,S,E,m):n(c,h,v,p,T,l,_,w,S,E,m)}return s}function o(){function i(v,p,T,l,_,w,S,E,m,b,d){for(var u=2*v,y=l,f=u*l;y<_;++y,f+=u){var P=w[p+f],L=w[p+f+v],z=S[y];e:for(var F=E,B=u*E;Fb-m?l?i(v,p,T,_,w,S,E,m,b,d,u):n(v,p,T,_,w,S,E,m,b,d,u):l?s(v,p,T,_,w,S,E,m,b,d,u):c(v,p,T,_,w,S,E,m,b,d,u)}return h}function a(i){return i?r():o()}t.partial=a(!1),t.full=a(!0)},7150:function(e,t,r){"use strict";e.exports=O;var o=r(1888),a=r(8828),i=r(2455),n=i.partial,s=i.full,c=r(855),h=r(3545),v=r(8105),p=128,T=1<<22,l=1<<22,_=v("!(lo>=p0)&&!(p1>=hi)"),w=v("lo===p0"),S=v("lo0;){$-=1;var re=$*d,ne=f[re],j=f[re+1],ee=f[re+2],ie=f[re+3],fe=f[re+4],be=f[re+5],Ae=$*u,Be=P[Ae],Ie=P[Ae+1],Ze=be&1,at=!!(be&16),it=Q,et=ue,lt=he,Me=G;if(Ze&&(it=he,et=G,lt=Q,Me=ue),!(be&2&&(ee=S(I,ne,j,ee,it,et,Ie),j>=ee))&&!(be&4&&(j=E(I,ne,j,ee,it,et,Be),j>=ee))){var ge=ee-j,ce=fe-ie;if(at){if(I*ge*(ge+ce)v&&T[b+h]>E;--m,b-=_){for(var d=b,u=b+_,y=0;y<_;++y,++d,++u){var f=T[d];T[d]=T[u],T[u]=f}var P=l[m];l[m]=l[m-1],l[m-1]=P}}function s(c,h,v,p,T,l){if(p<=v+1)return v;for(var _=v,w=p,S=p+v>>>1,E=2*c,m=S,b=T[E*S+h];_=P?(m=f,b=P):y>=z?(m=u,b=y):(m=L,b=z):P>=z?(m=f,b=P):z>=y?(m=u,b=y):(m=L,b=z);for(var O=E*(w-1),I=E*m,F=0;F=p0)&&!(p1>=hi)":h};function r(v){return t[v]}function o(v,p,T,l,_,w,S){for(var E=2*v,m=E*T,b=m,d=T,u=p,y=v+p,f=T;l>f;++f,m+=E){var P=_[m+u];if(P===S)if(d===f)d+=1,b+=E;else{for(var L=0;E>L;++L){var z=_[m+L];_[m+L]=_[b],_[b++]=z}var F=w[f];w[f]=w[d],w[d++]=F}}return d}function a(v,p,T,l,_,w,S){for(var E=2*v,m=E*T,b=m,d=T,u=p,y=v+p,f=T;l>f;++f,m+=E){var P=_[m+u];if(PL;++L){var z=_[m+L];_[m+L]=_[b],_[b++]=z}var F=w[f];w[f]=w[d],w[d++]=F}}return d}function i(v,p,T,l,_,w,S){for(var E=2*v,m=E*T,b=m,d=T,u=p,y=v+p,f=T;l>f;++f,m+=E){var P=_[m+y];if(P<=S)if(d===f)d+=1,b+=E;else{for(var L=0;E>L;++L){var z=_[m+L];_[m+L]=_[b],_[b++]=z}var F=w[f];w[f]=w[d],w[d++]=F}}return d}function n(v,p,T,l,_,w,S){for(var E=2*v,m=E*T,b=m,d=T,u=p,y=v+p,f=T;l>f;++f,m+=E){var P=_[m+y];if(P<=S)if(d===f)d+=1,b+=E;else{for(var L=0;E>L;++L){var z=_[m+L];_[m+L]=_[b],_[b++]=z}var F=w[f];w[f]=w[d],w[d++]=F}}return d}function s(v,p,T,l,_,w,S){for(var E=2*v,m=E*T,b=m,d=T,u=p,y=v+p,f=T;l>f;++f,m+=E){var P=_[m+u],L=_[m+y];if(P<=S&&S<=L)if(d===f)d+=1,b+=E;else{for(var z=0;E>z;++z){var F=_[m+z];_[m+z]=_[b],_[b++]=F}var B=w[f];w[f]=w[d],w[d++]=B}}return d}function c(v,p,T,l,_,w,S){for(var E=2*v,m=E*T,b=m,d=T,u=p,y=v+p,f=T;l>f;++f,m+=E){var P=_[m+u],L=_[m+y];if(Pz;++z){var F=_[m+z];_[m+z]=_[b],_[b++]=F}var B=w[f];w[f]=w[d],w[d++]=B}}return d}function h(v,p,T,l,_,w,S,E){for(var m=2*v,b=m*T,d=b,u=T,y=p,f=v+p,P=T;l>P;++P,b+=m){var L=_[b+y],z=_[b+f];if(!(L>=S)&&!(E>=z))if(u===P)u+=1,d+=m;else{for(var F=0;m>F;++F){var B=_[b+F];_[b+F]=_[d],_[d++]=B}var O=w[P];w[P]=w[u],w[u++]=O}}return u}},4192:function(e){"use strict";e.exports=r;var t=32;function r(p,T){T<=4*t?o(0,T-1,p):v(0,T-1,p)}function o(p,T,l){for(var _=2*(p+1),w=p+1;w<=T;++w){for(var S=l[_++],E=l[_++],m=w,b=_-2;m-- >p;){var d=l[b-2],u=l[b-1];if(dl[T+1]:!0}function h(p,T,l,_){p*=2;var w=_[p];return w>1,m=E-_,b=E+_,d=w,u=m,y=E,f=b,P=S,L=p+1,z=T-1,F=0;c(d,u,l)&&(F=d,d=u,u=F),c(f,P,l)&&(F=f,f=P,P=F),c(d,y,l)&&(F=d,d=y,y=F),c(u,y,l)&&(F=u,u=y,y=F),c(d,f,l)&&(F=d,d=f,f=F),c(y,f,l)&&(F=y,y=f,f=F),c(u,P,l)&&(F=u,u=P,P=F),c(u,y,l)&&(F=u,u=y,y=F),c(f,P,l)&&(F=f,f=P,P=F);for(var B=l[2*u],O=l[2*u+1],I=l[2*f],N=l[2*f+1],U=2*d,W=2*y,Q=2*P,ue=2*w,se=2*E,he=2*S,G=0;G<2;++G){var $=l[U+G],J=l[W+G],Z=l[Q+G];l[ue+G]=$,l[se+G]=J,l[he+G]=Z}i(m,p,l),i(b,T,l);for(var re=L;re<=z;++re)if(h(re,B,O,l))re!==L&&a(re,L,l),++L;else if(!h(re,I,N,l))for(;;)if(h(z,I,N,l)){h(z,B,O,l)?(n(re,L,z,l),++L,--z):(a(re,z,l),--z);break}else{if(--z>>1;i(_,J);for(var Z=0,re=0,se=0;se=n)ne=ne-n|0,S(v,p,re--,ne);else if(ne>=0)S(c,h,Z--,ne);else if(ne<=-n){ne=-ne-n|0;for(var j=0;j>>1;i(_,J);for(var Z=0,re=0,ne=0,se=0;se>1===_[2*se+3]>>1&&(ee=2,se+=1),j<0){for(var ie=-(j>>1)-1,fe=0;fe>1)-1;ee===0?S(c,h,Z--,ie):ee===1?S(v,p,re--,ie):ee===2&&S(T,l,ne--,ie)}}}function d(y,f,P,L,z,F,B,O,I,N,U,W){var Q=0,ue=2*y,se=f,he=f+y,G=1,$=1;L?$=n:G=n;for(var J=z;J>>1;i(_,j);for(var ee=0,J=0;J=n?(fe=!L,Z-=n):(fe=!!L,Z-=1),fe)E(c,h,ee++,Z);else{var be=W[Z],Ae=ue*Z,Be=U[Ae+f+1],Ie=U[Ae+f+1+y];e:for(var Ze=0;Ze>>1;i(_,Z);for(var re=0,he=0;he=n)c[re++]=G-n;else{G-=1;var j=U[G],ee=Q*G,ie=N[ee+f+1],fe=N[ee+f+1+y];e:for(var be=0;be=0;--be)if(c[be]===G){for(var Ze=be+1;Ze0;){for(var w=h.pop(),T=h.pop(),S=-1,E=-1,l=p[T],b=1;b=0||(c.flip(T,w),i(s,c,h,S,T,E),i(s,c,h,T,E,S),i(s,c,h,E,w,S),i(s,c,h,w,S,E))}}},5023:function(e,t,r){"use strict";var o=r(2478);e.exports=h;function a(v,p,T,l,_,w,S){this.cells=v,this.neighbor=p,this.flags=l,this.constraint=T,this.active=_,this.next=w,this.boundary=S}var i=a.prototype;function n(v,p){return v[0]-p[0]||v[1]-p[1]||v[2]-p[2]}i.locate=function(){var v=[0,0,0];return function(p,T,l){var _=p,w=T,S=l;return T0||S.length>0;){for(;w.length>0;){var u=w.pop();if(E[u]!==-_){E[u]=_;for(var y=m[u],f=0;f<3;++f){var P=d[3*u+f];P>=0&&E[P]===0&&(b[3*u+f]?S.push(P):(w.push(P),E[P]=_))}}}var L=S;S=w,w=L,S.length=0,_=-_}var z=c(m,E,p);return T?z.concat(l.boundary):z}},8902:function(e,t,r){"use strict";var o=r(2478),a=r(3250)[3],i=0,n=1,s=2;e.exports=S;function c(E,m,b,d,u){this.a=E,this.b=m,this.idx=b,this.lowerIds=d,this.upperIds=u}function h(E,m,b,d){this.a=E,this.b=m,this.type=b,this.idx=d}function v(E,m){var b=E.a[0]-m.a[0]||E.a[1]-m.a[1]||E.type-m.type;return b||E.type!==i&&(b=a(E.a,E.b,m.b),b)?b:E.idx-m.idx}function p(E,m){return a(E.a,E.b,m)}function T(E,m,b,d,u){for(var y=o.lt(m,d,p),f=o.gt(m,d,p),P=y;P1&&a(b[z[B-2]],b[z[B-1]],d)>0;)E.push([z[B-1],z[B-2],u]),B-=1;z.length=B,z.push(u);for(var F=L.upperIds,B=F.length;B>1&&a(b[F[B-2]],b[F[B-1]],d)<0;)E.push([F[B-2],F[B-1],u]),B-=1;F.length=B,F.push(u)}}function l(E,m){var b;return E.a[0]L[0]&&u.push(new h(L,P,s,y),new h(P,L,n,y))}u.sort(v);for(var z=u[0].a[0]-(1+Math.abs(u[0].a[0]))*Math.pow(2,-52),F=[new c([z,1],[z,0],-1,[],[],[],[])],B=[],y=0,O=u.length;y=0}}(),i.removeTriangle=function(c,h,v){var p=this.stars;n(p[c],h,v),n(p[h],v,c),n(p[v],c,h)},i.addTriangle=function(c,h,v){var p=this.stars;p[c].push(h,v),p[h].push(v,c),p[v].push(c,h)},i.opposite=function(c,h){for(var v=this.stars[h],p=1,T=v.length;p=0;--I){var $=B[I];N=$[0];var J=z[N],Z=J[0],re=J[1],ne=L[Z],j=L[re];if((ne[0]-j[0]||ne[1]-j[1])<0){var ee=Z;Z=re,re=ee}J[0]=Z;var ie=J[1]=$[1],fe;for(O&&(fe=J[2]);I>0&&B[I-1][0]===N;){var $=B[--I],be=$[1];O?z.push([ie,be,fe]):z.push([ie,be]),ie=be}O?z.push([ie,re,fe]):z.push([ie,re])}return U}function m(L,z,F){for(var B=z.length,O=new o(B),I=[],N=0;Nz[2]?1:0)}function u(L,z,F){if(L.length!==0){if(z)for(var B=0;B0||N.length>0}function P(L,z,F){var B;if(F){B=z;for(var O=new Array(z.length),I=0;IE+1)throw new Error(w+" map requires nshades to be at least size "+_.length);Array.isArray(h.alpha)?h.alpha.length!==2?m=[1,1]:m=h.alpha.slice():typeof h.alpha=="number"?m=[h.alpha,h.alpha]:m=[1,1],v=_.map(function(P){return Math.round(P.index*E)}),m[0]=Math.min(Math.max(m[0],0),1),m[1]=Math.min(Math.max(m[1],0),1);var d=_.map(function(P,L){var z=_[L].index,F=_[L].rgb.slice();return F.length===4&&F[3]>=0&&F[3]<=1||(F[3]=m[0]+(m[1]-m[0])*z),F}),u=[];for(b=0;b=0}function h(v,p,T,l){var _=o(p,T,l);if(_===0){var w=a(o(v,p,T)),S=a(o(v,p,l));if(w===S){if(w===0){var E=c(v,p,T),m=c(v,p,l);return E===m?0:E?1:-1}return 0}else{if(S===0)return w>0||c(v,p,l)?-1:1;if(w===0)return S>0||c(v,p,T)?1:-1}return a(S-w)}var b=o(v,p,T);if(b>0)return _>0&&o(v,p,l)>0?1:-1;if(b<0)return _>0||o(v,p,l)>0?1:-1;var d=o(v,p,l);return d>0||c(v,p,T)?1:-1}},8572:function(e){"use strict";e.exports=function(r){return r<0?-1:r>0?1:0}},8507:function(e){e.exports=o;var t=Math.min;function r(a,i){return a-i}function o(a,i){var n=a.length,s=a.length-i.length;if(s)return s;switch(n){case 0:return 0;case 1:return a[0]-i[0];case 2:return a[0]+a[1]-i[0]-i[1]||t(a[0],a[1])-t(i[0],i[1]);case 3:var c=a[0]+a[1],h=i[0]+i[1];if(s=c+a[2]-(h+i[2]),s)return s;var v=t(a[0],a[1]),p=t(i[0],i[1]);return t(v,a[2])-t(p,i[2])||t(v+a[2],c)-t(p+i[2],h);case 4:var T=a[0],l=a[1],_=a[2],w=a[3],S=i[0],E=i[1],m=i[2],b=i[3];return T+l+_+w-(S+E+m+b)||t(T,l,_,w)-t(S,E,m,b,S)||t(T+l,T+_,T+w,l+_,l+w,_+w)-t(S+E,S+m,S+b,E+m,E+b,m+b)||t(T+l+_,T+l+w,T+_+w,l+_+w)-t(S+E+m,S+E+b,S+m+b,E+m+b);default:for(var d=a.slice().sort(r),u=i.slice().sort(r),y=0;yr[a][0]&&(a=i);return oa?[[a],[o]]:[[o]]}},4750:function(e,t,r){"use strict";e.exports=a;var o=r(3090);function a(i){var n=o(i),s=n.length;if(s<=2)return[];for(var c=new Array(s),h=n[s-1],v=0;v=h[S]&&(w+=1);l[_]=w}}return c}function s(c,h){try{return o(c,!0)}catch{var v=a(c);if(v.length<=h)return[];var p=i(c,v),T=o(p,!0);return n(T,v)}}},4769:function(e){"use strict";function t(o,a,i,n,s,c){var h=6*s*s-6*s,v=3*s*s-4*s+1,p=-6*s*s+6*s,T=3*s*s-2*s;if(o.length){c||(c=new Array(o.length));for(var l=o.length-1;l>=0;--l)c[l]=h*o[l]+v*a[l]+p*i[l]+T*n[l];return c}return h*o+v*a+p*i[l]+T*n}function r(o,a,i,n,s,c){var h=s-1,v=s*s,p=h*h,T=(1+2*s)*p,l=s*p,_=v*(3-2*s),w=v*h;if(o.length){c||(c=new Array(o.length));for(var S=o.length-1;S>=0;--S)c[S]=T*o[S]+l*a[S]+_*i[S]+w*n[S];return c}return T*o+l*a+_*i+w*n}e.exports=r,e.exports.derivative=t},7642:function(e,t,r){"use strict";var o=r(8954),a=r(1682);e.exports=c;function i(h,v){this.point=h,this.index=v}function n(h,v){for(var p=h.point,T=v.point,l=p.length,_=0;_=2)return!1;F[O]=I}return!0}):z=z.filter(function(F){for(var B=0;B<=T;++B){var O=y[F[B]];if(O<0)return!1;F[B]=O}return!0}),T&1)for(var w=0;w>>31},e.exports.exponent=function(_){var w=e.exports.hi(_);return(w<<1>>>21)-1023},e.exports.fraction=function(_){var w=e.exports.lo(_),S=e.exports.hi(_),E=S&(1<<20)-1;return S&2146435072&&(E+=1048576),[w,E]},e.exports.denormalized=function(_){var w=e.exports.hi(_);return!(w&2146435072)}},1338:function(e){"use strict";function t(a,i,n){var s=a[n]|0;if(s<=0)return[];var c=new Array(s),h;if(n===a.length-1)for(h=0;h"u"&&(i=0),typeof a){case"number":if(a>0)return r(a|0,i);break;case"object":if(typeof a.length=="number")return t(a,i,0);break}return[]}e.exports=o},3134:function(e,t,r){"use strict";e.exports=a;var o=r(1682);function a(i,n){var s=i.length;if(typeof n!="number"){n=0;for(var c=0;c=T-1)for(var b=w.length-1,u=v-p[T-1],d=0;d=T-1)for(var m=w.length-1,b=v-p[T-1],d=0;d=0;--T)if(v[--p])return!1;return!0},s.jump=function(v){var p=this.lastT(),T=this.dimension;if(!(v0;--d)l.push(i(E[d-1],m[d-1],arguments[d])),_.push(0)}},s.push=function(v){var p=this.lastT(),T=this.dimension;if(!(v1e-6?1/S:0;this._time.push(v);for(var u=T;u>0;--u){var y=i(m[u-1],b[u-1],arguments[u]);l.push(y),_.push((y-l[w++])*d)}}},s.set=function(v){var p=this.dimension;if(!(v0;--E)T.push(i(w[E-1],S[E-1],arguments[E])),l.push(0)}},s.move=function(v){var p=this.lastT(),T=this.dimension;if(!(v<=p||arguments.length!==T+1)){var l=this._state,_=this._velocity,w=l.length-this.dimension,S=this.bounds,E=S[0],m=S[1],b=v-p,d=b>1e-6?1/b:0;this._time.push(v);for(var u=T;u>0;--u){var y=arguments[u];l.push(i(E[u-1],m[u-1],l[w++]+y)),_.push(y*d)}}},s.idle=function(v){var p=this.lastT();if(!(v=0;--d)l.push(i(E[d],m[d],l[w]+b*_[w])),_.push(0),w+=1}};function c(v){for(var p=new Array(v),T=0;T=0;--L){var u=y[L];f[L]<=0?y[L]=new o(u._color,u.key,u.value,y[L+1],u.right,u._count+1):y[L]=new o(u._color,u.key,u.value,u.left,y[L+1],u._count+1)}for(var L=y.length-1;L>1;--L){var z=y[L-1],u=y[L];if(z._color===r||u._color===r)break;var F=y[L-2];if(F.left===z)if(z.left===u){var B=F.right;if(B&&B._color===t)z._color=r,F.right=i(r,B),F._color=t,L-=1;else{if(F._color=t,F.left=z.right,z._color=r,z.right=F,y[L-2]=z,y[L-1]=u,n(F),n(z),L>=3){var O=y[L-3];O.left===F?O.left=z:O.right=z}break}}else{var B=F.right;if(B&&B._color===t)z._color=r,F.right=i(r,B),F._color=t,L-=1;else{if(z.right=u.left,F._color=t,F.left=u.right,u._color=r,u.left=z,u.right=F,y[L-2]=u,y[L-1]=z,n(F),n(z),n(u),L>=3){var O=y[L-3];O.left===F?O.left=u:O.right=u}break}}else if(z.right===u){var B=F.left;if(B&&B._color===t)z._color=r,F.left=i(r,B),F._color=t,L-=1;else{if(F._color=t,F.right=z.left,z._color=r,z.left=F,y[L-2]=z,y[L-1]=u,n(F),n(z),L>=3){var O=y[L-3];O.right===F?O.right=z:O.left=z}break}}else{var B=F.left;if(B&&B._color===t)z._color=r,F.left=i(r,B),F._color=t,L-=1;else{if(z.left=u.right,F._color=t,F.right=u.left,u._color=r,u.right=z,u.left=F,y[L-2]=u,y[L-1]=z,n(F),n(z),n(u),L>=3){var O=y[L-3];O.right===F?O.right=u:O.left=u}break}}}return y[0]._color=r,new s(d,y[0])};function h(m,b){if(b.left){var d=h(m,b.left);if(d)return d}var d=m(b.key,b.value);if(d)return d;if(b.right)return h(m,b.right)}function v(m,b,d,u){var y=b(m,u.key);if(y<=0){if(u.left){var f=v(m,b,d,u.left);if(f)return f}var f=d(u.key,u.value);if(f)return f}if(u.right)return v(m,b,d,u.right)}function p(m,b,d,u,y){var f=d(m,y.key),P=d(b,y.key),L;if(f<=0&&(y.left&&(L=p(m,b,d,u,y.left),L)||P>0&&(L=u(y.key,y.value),L)))return L;if(P>0&&y.right)return p(m,b,d,u,y.right)}c.forEach=function(b,d,u){if(this.root)switch(arguments.length){case 1:return h(b,this.root);case 2:return v(d,this._compare,b,this.root);case 3:return this._compare(d,u)>=0?void 0:p(d,u,this._compare,b,this.root)}},Object.defineProperty(c,"begin",{get:function(){for(var m=[],b=this.root;b;)m.push(b),b=b.left;return new T(this,m)}}),Object.defineProperty(c,"end",{get:function(){for(var m=[],b=this.root;b;)m.push(b),b=b.right;return new T(this,m)}}),c.at=function(m){if(m<0)return new T(this,[]);for(var b=this.root,d=[];;){if(d.push(b),b.left){if(m=b.right._count)break;b=b.right}else break}return new T(this,[])},c.ge=function(m){for(var b=this._compare,d=this.root,u=[],y=0;d;){var f=b(m,d.key);u.push(d),f<=0&&(y=u.length),f<=0?d=d.left:d=d.right}return u.length=y,new T(this,u)},c.gt=function(m){for(var b=this._compare,d=this.root,u=[],y=0;d;){var f=b(m,d.key);u.push(d),f<0&&(y=u.length),f<0?d=d.left:d=d.right}return u.length=y,new T(this,u)},c.lt=function(m){for(var b=this._compare,d=this.root,u=[],y=0;d;){var f=b(m,d.key);u.push(d),f>0&&(y=u.length),f<=0?d=d.left:d=d.right}return u.length=y,new T(this,u)},c.le=function(m){for(var b=this._compare,d=this.root,u=[],y=0;d;){var f=b(m,d.key);u.push(d),f>=0&&(y=u.length),f<0?d=d.left:d=d.right}return u.length=y,new T(this,u)},c.find=function(m){for(var b=this._compare,d=this.root,u=[];d;){var y=b(m,d.key);if(u.push(d),y===0)return new T(this,u);y<=0?d=d.left:d=d.right}return new T(this,[])},c.remove=function(m){var b=this.find(m);return b?b.remove():this},c.get=function(m){for(var b=this._compare,d=this.root;d;){var u=b(m,d.key);if(u===0)return d.value;u<=0?d=d.left:d=d.right}};function T(m,b){this.tree=m,this._stack=b}var l=T.prototype;Object.defineProperty(l,"valid",{get:function(){return this._stack.length>0}}),Object.defineProperty(l,"node",{get:function(){return this._stack.length>0?this._stack[this._stack.length-1]:null},enumerable:!0}),l.clone=function(){return new T(this.tree,this._stack.slice())};function _(m,b){m.key=b.key,m.value=b.value,m.left=b.left,m.right=b.right,m._color=b._color,m._count=b._count}function w(m){for(var b,d,u,y,f=m.length-1;f>=0;--f){if(b=m[f],f===0){b._color=r;return}if(d=m[f-1],d.left===b){if(u=d.right,u.right&&u.right._color===t){if(u=d.right=a(u),y=u.right=a(u.right),d.right=u.left,u.left=d,u.right=y,u._color=d._color,b._color=r,d._color=r,y._color=r,n(d),n(u),f>1){var P=m[f-2];P.left===d?P.left=u:P.right=u}m[f-1]=u;return}else if(u.left&&u.left._color===t){if(u=d.right=a(u),y=u.left=a(u.left),d.right=y.left,u.left=y.right,y.left=d,y.right=u,y._color=d._color,d._color=r,u._color=r,b._color=r,n(d),n(u),n(y),f>1){var P=m[f-2];P.left===d?P.left=y:P.right=y}m[f-1]=y;return}if(u._color===r)if(d._color===t){d._color=r,d.right=i(t,u);return}else{d.right=i(t,u);continue}else{if(u=a(u),d.right=u.left,u.left=d,u._color=d._color,d._color=t,n(d),n(u),f>1){var P=m[f-2];P.left===d?P.left=u:P.right=u}m[f-1]=u,m[f]=d,f+11){var P=m[f-2];P.right===d?P.right=u:P.left=u}m[f-1]=u;return}else if(u.right&&u.right._color===t){if(u=d.left=a(u),y=u.right=a(u.right),d.left=y.right,u.right=y.left,y.right=d,y.left=u,y._color=d._color,d._color=r,u._color=r,b._color=r,n(d),n(u),n(y),f>1){var P=m[f-2];P.right===d?P.right=y:P.left=y}m[f-1]=y;return}if(u._color===r)if(d._color===t){d._color=r,d.left=i(t,u);return}else{d.left=i(t,u);continue}else{if(u=a(u),d.left=u.right,u.right=d,u._color=d._color,d._color=t,n(d),n(u),f>1){var P=m[f-2];P.right===d?P.right=u:P.left=u}m[f-1]=u,m[f]=d,f+1=0;--u){var d=m[u];d.left===m[u+1]?b[u]=new o(d._color,d.key,d.value,b[u+1],d.right,d._count):b[u]=new o(d._color,d.key,d.value,d.left,b[u+1],d._count)}if(d=b[b.length-1],d.left&&d.right){var y=b.length;for(d=d.left;d.right;)b.push(d),d=d.right;var f=b[y-1];b.push(new o(d._color,f.key,f.value,d.left,d.right,d._count)),b[y-1].key=d.key,b[y-1].value=d.value;for(var u=b.length-2;u>=y;--u)d=b[u],b[u]=new o(d._color,d.key,d.value,d.left,b[u+1],d._count);b[y-1].left=b[y]}if(d=b[b.length-1],d._color===t){var P=b[b.length-2];P.left===d?P.left=null:P.right===d&&(P.right=null),b.pop();for(var u=0;u0)return this._stack[this._stack.length-1].key},enumerable:!0}),Object.defineProperty(l,"value",{get:function(){if(this._stack.length>0)return this._stack[this._stack.length-1].value},enumerable:!0}),Object.defineProperty(l,"index",{get:function(){var m=0,b=this._stack;if(b.length===0){var d=this.tree.root;return d?d._count:0}else b[b.length-1].left&&(m=b[b.length-1].left._count);for(var u=b.length-2;u>=0;--u)b[u+1]===b[u].right&&(++m,b[u].left&&(m+=b[u].left._count));return m},enumerable:!0}),l.next=function(){var m=this._stack;if(m.length!==0){var b=m[m.length-1];if(b.right)for(b=b.right;b;)m.push(b),b=b.left;else for(m.pop();m.length>0&&m[m.length-1].right===b;)b=m[m.length-1],m.pop()}},Object.defineProperty(l,"hasNext",{get:function(){var m=this._stack;if(m.length===0)return!1;if(m[m.length-1].right)return!0;for(var b=m.length-1;b>0;--b)if(m[b-1].left===m[b])return!0;return!1}}),l.update=function(m){var b=this._stack;if(b.length===0)throw new Error("Can't update empty node!");var d=new Array(b.length),u=b[b.length-1];d[d.length-1]=new o(u._color,u.key,m,u.left,u.right,u._count);for(var y=b.length-2;y>=0;--y)u=b[y],u.left===b[y+1]?d[y]=new o(u._color,u.key,u.value,d[y+1],u.right,u._count):d[y]=new o(u._color,u.key,u.value,u.left,d[y+1],u._count);return new s(this.tree._compare,d[0])},l.prev=function(){var m=this._stack;if(m.length!==0){var b=m[m.length-1];if(b.left)for(b=b.left;b;)m.push(b),b=b.right;else for(m.pop();m.length>0&&m[m.length-1].left===b;)b=m[m.length-1],m.pop()}},Object.defineProperty(l,"hasPrev",{get:function(){var m=this._stack;if(m.length===0)return!1;if(m[m.length-1].left)return!0;for(var b=m.length-1;b>0;--b)if(m[b-1].right===m[b])return!0;return!1}});function S(m,b){return mb?1:0}function E(m){return new s(m||S,null)}},3837:function(e,t,r){"use strict";e.exports=L;var o=r(4935),a=r(501),i=r(5304),n=r(6429),s=r(6444),c=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),h=ArrayBuffer,v=DataView;function p(z){return h.isView(z)&&!(z instanceof v)}function T(z){return Array.isArray(z)||p(z)}function l(z,F){return z[0]=F[0],z[1]=F[1],z[2]=F[2],z}function _(z){this.gl=z,this.pixelRatio=1,this.bounds=[[-10,-10,-10],[10,10,10]],this.ticks=[[],[],[]],this.autoTicks=!0,this.tickSpacing=[1,1,1],this.tickEnable=[!0,!0,!0],this.tickFont=["sans-serif","sans-serif","sans-serif"],this.tickFontStyle=["normal","normal","normal"],this.tickFontWeight=["normal","normal","normal"],this.tickFontVariant=["normal","normal","normal"],this.tickSize=[12,12,12],this.tickAngle=[0,0,0],this.tickAlign=["auto","auto","auto"],this.tickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.tickPad=[10,10,10],this.lastCubeProps={cubeEdges:[0,0,0],axis:[0,0,0]},this.labels=["x","y","z"],this.labelEnable=[!0,!0,!0],this.labelFont=["sans-serif","sans-serif","sans-serif"],this.labelFontStyle=["normal","normal","normal"],this.labelFontWeight=["normal","normal","normal"],this.labelFontVariant=["normal","normal","normal"],this.labelSize=[20,20,20],this.labelAngle=[0,0,0],this.labelAlign=["auto","auto","auto"],this.labelColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.labelPad=[10,10,10],this.lineEnable=[!0,!0,!0],this.lineMirror=[!1,!1,!1],this.lineWidth=[1,1,1],this.lineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.lineTickEnable=[!0,!0,!0],this.lineTickMirror=[!1,!1,!1],this.lineTickLength=[0,0,0],this.lineTickWidth=[1,1,1],this.lineTickColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.gridEnable=[!0,!0,!0],this.gridWidth=[1,1,1],this.gridColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroEnable=[!0,!0,!0],this.zeroLineColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.zeroLineWidth=[2,2,2],this.backgroundEnable=[!1,!1,!1],this.backgroundColor=[[.8,.8,.8,.5],[.8,.8,.8,.5],[.8,.8,.8,.5]],this._firstInit=!0,this._text=null,this._lines=null,this._background=i(z)}var w=_.prototype;w.update=function(z){z=z||{};function F(Z,re,ne){if(ne in z){var j=z[ne],ee=this[ne],ie;(Z?T(j)&&T(j[0]):T(j))?this[ne]=ie=[re(j[0]),re(j[1]),re(j[2])]:this[ne]=ie=[re(j),re(j),re(j)];for(var fe=0;fe<3;++fe)if(ie[fe]!==ee[fe])return!0}return!1}var B=F.bind(this,!1,Number),O=F.bind(this,!1,Boolean),I=F.bind(this,!1,String),N=F.bind(this,!0,function(Z){if(T(Z)){if(Z.length===3)return[+Z[0],+Z[1],+Z[2],1];if(Z.length===4)return[+Z[0],+Z[1],+Z[2],+Z[3]]}return[0,0,0,1]}),U,W=!1,Q=!1;if("bounds"in z)for(var ue=z.bounds,se=0;se<2;++se)for(var he=0;he<3;++he)ue[se][he]!==this.bounds[se][he]&&(Q=!0),this.bounds[se][he]=ue[se][he];if("ticks"in z){U=z.ticks,W=!0,this.autoTicks=!1;for(var se=0;se<3;++se)this.tickSpacing[se]=0}else B("tickSpacing")&&(this.autoTicks=!0,Q=!0);if(this._firstInit&&("ticks"in z||"tickSpacing"in z||(this.autoTicks=!0),Q=!0,W=!0,this._firstInit=!1),Q&&this.autoTicks&&(U=s.create(this.bounds,this.tickSpacing),W=!0),W){for(var se=0;se<3;++se)U[se].sort(function(re,ne){return re.x-ne.x});s.equal(U,this.ticks)?W=!1:this.ticks=U}O("tickEnable"),I("tickFont")&&(W=!0),I("tickFontStyle")&&(W=!0),I("tickFontWeight")&&(W=!0),I("tickFontVariant")&&(W=!0),B("tickSize"),B("tickAngle"),B("tickPad"),N("tickColor");var G=I("labels");I("labelFont")&&(G=!0),I("labelFontStyle")&&(G=!0),I("labelFontWeight")&&(G=!0),I("labelFontVariant")&&(G=!0),O("labelEnable"),B("labelSize"),B("labelPad"),N("labelColor"),O("lineEnable"),O("lineMirror"),B("lineWidth"),N("lineColor"),O("lineTickEnable"),O("lineTickMirror"),B("lineTickLength"),B("lineTickWidth"),N("lineTickColor"),O("gridEnable"),B("gridWidth"),N("gridColor"),O("zeroEnable"),N("zeroLineColor"),B("zeroLineWidth"),O("backgroundEnable"),N("backgroundColor");var $=[{family:this.labelFont[0],style:this.labelFontStyle[0],weight:this.labelFontWeight[0],variant:this.labelFontVariant[0]},{family:this.labelFont[1],style:this.labelFontStyle[1],weight:this.labelFontWeight[1],variant:this.labelFontVariant[1]},{family:this.labelFont[2],style:this.labelFontStyle[2],weight:this.labelFontWeight[2],variant:this.labelFontVariant[2]}],J=[{family:this.tickFont[0],style:this.tickFontStyle[0],weight:this.tickFontWeight[0],variant:this.tickFontVariant[0]},{family:this.tickFont[1],style:this.tickFontStyle[1],weight:this.tickFontWeight[1],variant:this.tickFontVariant[1]},{family:this.tickFont[2],style:this.tickFontStyle[2],weight:this.tickFontWeight[2],variant:this.tickFontVariant[2]}];this._text?this._text&&(G||W)&&this._text.update(this.bounds,this.labels,$,this.ticks,J):this._text=o(this.gl,this.bounds,this.labels,$,this.ticks,J),this._lines&&W&&(this._lines.dispose(),this._lines=null),this._lines||(this._lines=a(this.gl,this.bounds,this.ticks))};function S(){this.primalOffset=[0,0,0],this.primalMinor=[0,0,0],this.mirrorOffset=[0,0,0],this.mirrorMinor=[0,0,0]}var E=[new S,new S,new S];function m(z,F,B,O,I){for(var N=z.primalOffset,U=z.primalMinor,W=z.mirrorOffset,Q=z.mirrorMinor,ue=O[F],se=0;se<3;++se)if(F!==se){var he=N,G=W,$=U,J=Q;ue&1<0?($[se]=-1,J[se]=0):($[se]=0,J[se]=1)}}var b=[0,0,0],d={model:c,view:c,projection:c,_ortho:!1};w.isOpaque=function(){return!0},w.isTransparent=function(){return!1},w.drawTransparent=function(z){};var u=0,y=[0,0,0],f=[0,0,0],P=[0,0,0];w.draw=function(z){z=z||d;for(var ne=this.gl,F=z.model||c,B=z.view||c,O=z.projection||c,I=this.bounds,N=z._ortho||!1,U=n(F,B,O,I,N),W=U.cubeEdges,Q=U.axis,ue=B[12],se=B[13],he=B[14],G=B[15],$=N?2:1,J=$*this.pixelRatio*(O[3]*ue+O[7]*se+O[11]*he+O[15]*G)/ne.drawingBufferHeight,Z=0;Z<3;++Z)this.lastCubeProps.cubeEdges[Z]=W[Z],this.lastCubeProps.axis[Z]=Q[Z];for(var re=E,Z=0;Z<3;++Z)m(E[Z],Z,this.bounds,W,Q);for(var ne=this.gl,j=b,Z=0;Z<3;++Z)this.backgroundEnable[Z]?j[Z]=Q[Z]:j[Z]=0;this._background.draw(F,B,O,I,j,this.backgroundColor),this._lines.bind(F,B,O,this);for(var Z=0;Z<3;++Z){var ee=[0,0,0];Q[Z]>0?ee[Z]=I[1][Z]:ee[Z]=I[0][Z];for(var ie=0;ie<2;++ie){var fe=(Z+1+ie)%3,be=(Z+1+(ie^1))%3;this.gridEnable[fe]&&this._lines.drawGrid(fe,be,this.bounds,ee,this.gridColor[fe],this.gridWidth[fe]*this.pixelRatio)}for(var ie=0;ie<2;++ie){var fe=(Z+1+ie)%3,be=(Z+1+(ie^1))%3;this.zeroEnable[be]&&Math.min(I[0][be],I[1][be])<=0&&Math.max(I[0][be],I[1][be])>=0&&this._lines.drawZero(fe,be,this.bounds,ee,this.zeroLineColor[be],this.zeroLineWidth[be]*this.pixelRatio)}}for(var Z=0;Z<3;++Z){this.lineEnable[Z]&&this._lines.drawAxisLine(Z,this.bounds,re[Z].primalOffset,this.lineColor[Z],this.lineWidth[Z]*this.pixelRatio),this.lineMirror[Z]&&this._lines.drawAxisLine(Z,this.bounds,re[Z].mirrorOffset,this.lineColor[Z],this.lineWidth[Z]*this.pixelRatio);for(var Ae=l(y,re[Z].primalMinor),Be=l(f,re[Z].mirrorMinor),Ie=this.lineTickLength,ie=0;ie<3;++ie){var Ze=J/F[5*ie];Ae[ie]*=Ie[ie]*Ze,Be[ie]*=Ie[ie]*Ze}this.lineTickEnable[Z]&&this._lines.drawAxisTicks(Z,re[Z].primalOffset,Ae,this.lineTickColor[Z],this.lineTickWidth[Z]*this.pixelRatio),this.lineTickMirror[Z]&&this._lines.drawAxisTicks(Z,re[Z].mirrorOffset,Be,this.lineTickColor[Z],this.lineTickWidth[Z]*this.pixelRatio)}this._lines.unbind(),this._text.bind(F,B,O,this.pixelRatio);var at,it=.5,et,lt;function Me(Qe){lt=[0,0,0],lt[Qe]=1}function ge(Qe,Ct,St){var Ot=(Qe+1)%3,jt=(Qe+2)%3,ur=Ct[Ot],ar=Ct[jt],Cr=St[Ot],vr=St[jt];if(ur>0&&vr>0){Me(Ot);return}else if(ur>0&&vr<0){Me(Ot);return}else if(ur<0&&vr>0){Me(Ot);return}else if(ur<0&&vr<0){Me(Ot);return}else if(ar>0&&Cr>0){Me(jt);return}else if(ar>0&&Cr<0){Me(jt);return}else if(ar<0&&Cr>0){Me(jt);return}else if(ar<0&&Cr<0){Me(jt);return}}for(var Z=0;Z<3;++Z){for(var ce=re[Z].primalMinor,ze=re[Z].mirrorMinor,tt=l(P,re[Z].primalOffset),ie=0;ie<3;++ie)this.lineTickEnable[Z]&&(tt[ie]+=J*ce[ie]*Math.max(this.lineTickLength[ie],0)/F[5*ie]);var nt=[0,0,0];if(nt[Z]=1,this.tickEnable[Z]){this.tickAngle[Z]===-3600?(this.tickAngle[Z]=0,this.tickAlign[Z]="auto"):this.tickAlign[Z]=-1,et=1,at=[this.tickAlign[Z],it,et],at[0]==="auto"?at[0]=u:at[0]=parseInt(""+at[0]),lt=[0,0,0],ge(Z,ce,ze);for(var ie=0;ie<3;++ie)tt[ie]+=J*ce[ie]*this.tickPad[ie]/F[5*ie];this._text.drawTicks(Z,this.tickSize[Z],this.tickAngle[Z],tt,this.tickColor[Z],nt,lt,at)}if(this.labelEnable[Z]){et=0,lt=[0,0,0],this.labels[Z].length>4&&(Me(Z),et=1),at=[this.labelAlign[Z],it,et],at[0]==="auto"?at[0]=u:at[0]=parseInt(""+at[0]);for(var ie=0;ie<3;++ie)tt[ie]+=J*ce[ie]*this.labelPad[ie]/F[5*ie];tt[Z]+=.5*(I[0][Z]+I[1][Z]),this._text.drawLabel(Z,this.labelSize[Z],this.labelAngle[Z],tt,this.labelColor[Z],[0,0,0],lt,at)}}this._text.unbind()},w.dispose=function(){this._text.dispose(),this._lines.dispose(),this._background.dispose(),this._lines=null,this._text=null,this._background=null,this.gl=null};function L(z,F){var B=new _(z);return B.update(F),B}},5304:function(e,t,r){"use strict";e.exports=c;var o=r(2762),a=r(8116),i=r(1879).bg;function n(h,v,p,T){this.gl=h,this.buffer=v,this.vao=p,this.shader=T}var s=n.prototype;s.draw=function(h,v,p,T,l,_){for(var w=!1,S=0;S<3;++S)w=w||l[S];if(w){var E=this.gl;E.enable(E.POLYGON_OFFSET_FILL),E.polygonOffset(1,2),this.shader.bind(),this.shader.uniforms={model:h,view:v,projection:p,bounds:T,enable:l,colors:_},this.vao.bind(),this.vao.draw(this.gl.TRIANGLES,36),this.vao.unbind(),E.disable(E.POLYGON_OFFSET_FILL)}},s.dispose=function(){this.vao.dispose(),this.buffer.dispose(),this.shader.dispose()};function c(h){for(var v=[],p=[],T=0,l=0;l<3;++l)for(var _=(l+1)%3,w=(l+2)%3,S=[0,0,0],E=[0,0,0],m=-1;m<=1;m+=2){p.push(T,T+2,T+1,T+1,T+2,T+3),S[l]=m,E[l]=m;for(var b=-1;b<=1;b+=2){S[_]=b;for(var d=-1;d<=1;d+=2)S[w]=d,v.push(S[0],S[1],S[2],E[0],E[1],E[2]),T+=1}var u=_;_=w,w=u}var y=o(h,new Float32Array(v)),f=o(h,new Uint16Array(p),h.ELEMENT_ARRAY_BUFFER),P=a(h,[{buffer:y,type:h.FLOAT,size:3,offset:0,stride:24},{buffer:y,type:h.FLOAT,size:3,offset:12,stride:24}],f),L=i(h);return L.attributes.position.location=0,L.attributes.normal.location=1,new n(h,y,P,L)}},6429:function(e,t,r){"use strict";e.exports=m;var o=r(8828),a=r(6760),i=r(5202),n=r(3250),s=new Array(16),c=new Array(8),h=new Array(8),v=new Array(3),p=[0,0,0];(function(){for(var b=0;b<8;++b)c[b]=[1,1,1,1],h[b]=[1,1,1]})();function T(b,d,u){for(var y=0;y<4;++y){b[y]=u[12+y];for(var f=0;f<3;++f)b[y]+=d[f]*u[4*f+y]}}var l=[[0,0,1,0,0],[0,0,-1,1,0],[0,-1,0,1,0],[0,1,0,1,0],[-1,0,0,1,0],[1,0,0,1,0]];function _(b){for(var d=0;dQ&&(B|=1<Q){B|=1<h[L][1])&&(re=L);for(var ne=-1,L=0;L<3;++L){var j=re^1<h[ee][0]&&(ee=j)}}var ie=w;ie[0]=ie[1]=ie[2]=0,ie[o.log2(ne^re)]=re&ne,ie[o.log2(re^ee)]=reⅇvar fe=ee^7;fe===B||fe===Z?(fe=ne^7,ie[o.log2(ee^fe)]=fe&ee):ie[o.log2(ne^fe)]=fe≠for(var be=S,Ae=B,N=0;N<3;++N)Ae&1< HALF_PI) && (b <= ONE_AND_HALF_PI)) ? + b - PI : + b; +} + +float look_horizontal_or_vertical(float a, float ratio) { + // ratio controls the ratio between being horizontal to (vertical + horizontal) + // if ratio is set to 0.5 then it is 50%, 50%. + // when using a higher ratio e.g. 0.75 the result would + // likely be more horizontal than vertical. + + float b = positive_angle(a); + + return + (b < ( ratio) * HALF_PI) ? 0.0 : + (b < (2.0 - ratio) * HALF_PI) ? -HALF_PI : + (b < (2.0 + ratio) * HALF_PI) ? 0.0 : + (b < (4.0 - ratio) * HALF_PI) ? HALF_PI : + 0.0; +} + +float roundTo(float a, float b) { + return float(b * floor((a + 0.5 * b) / b)); +} + +float look_round_n_directions(float a, int n) { + float b = positive_angle(a); + float div = TWO_PI / float(n); + float c = roundTo(b, div); + return look_upwards(c); +} + +float applyAlignOption(float rawAngle, float delta) { + return + (option > 2) ? look_round_n_directions(rawAngle + delta, option) : // option 3-n: round to n directions + (option == 2) ? look_horizontal_or_vertical(rawAngle + delta, hv_ratio) : // horizontal or vertical + (option == 1) ? rawAngle + delta : // use free angle, and flip to align with one direction of the axis + (option == 0) ? look_upwards(rawAngle) : // use free angle, and stay upwards + (option ==-1) ? 0.0 : // useful for backward compatibility, all texts remains horizontal + rawAngle; // otherwise return back raw input angle +} + +bool isAxisTitle = (axis.x == 0.0) && + (axis.y == 0.0) && + (axis.z == 0.0); + +void main() { + //Compute world offset + float axisDistance = position.z; + vec3 dataPosition = axisDistance * axis + offset; + + float beta = angle; // i.e. user defined attributes for each tick + + float axisAngle; + float clipAngle; + float flip; + + if (enableAlign) { + axisAngle = (isAxisTitle) ? HALF_PI : + computeViewAngle(dataPosition, dataPosition + axis); + clipAngle = computeViewAngle(dataPosition, dataPosition + alignDir); + + axisAngle += (sin(axisAngle) < 0.0) ? PI : 0.0; + clipAngle += (sin(clipAngle) < 0.0) ? PI : 0.0; + + flip = (dot(vec2(cos(axisAngle), sin(axisAngle)), + vec2(sin(clipAngle),-cos(clipAngle))) > 0.0) ? 1.0 : 0.0; + + beta += applyAlignOption(clipAngle, flip * PI); + } + + //Compute plane offset + vec2 planeCoord = position.xy * pixelScale; + + mat2 planeXform = scale * mat2( + cos(beta), sin(beta), + -sin(beta), cos(beta) + ); + + vec2 viewOffset = 2.0 * planeXform * planeCoord / resolution; + + //Compute clip position + vec3 clipPosition = project(dataPosition); + + //Apply text offset in clip coordinates + clipPosition += vec3(viewOffset, 0.0); + + //Done + gl_Position = vec4(clipPosition, 1.0); +} +`]),c=o([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 color; +void main() { + gl_FragColor = color; +}`]);t.Q=function(p){return a(p,s,c,null,[{name:"position",type:"vec3"}])};var h=o([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec3 normal; + +uniform mat4 model, view, projection; +uniform vec3 enable; +uniform vec3 bounds[2]; + +varying vec3 colorChannel; + +void main() { + + vec3 signAxis = sign(bounds[1] - bounds[0]); + + vec3 realNormal = signAxis * normal; + + if(dot(realNormal, enable) > 0.0) { + vec3 minRange = min(bounds[0], bounds[1]); + vec3 maxRange = max(bounds[0], bounds[1]); + vec3 nPosition = mix(minRange, maxRange, 0.5 * (position + 1.0)); + gl_Position = projection * (view * (model * vec4(nPosition, 1.0))); + } else { + gl_Position = vec4(0,0,0,0); + } + + colorChannel = abs(realNormal); +} +`]),v=o([`precision highp float; +#define GLSLIFY 1 + +uniform vec4 colors[3]; + +varying vec3 colorChannel; + +void main() { + gl_FragColor = colorChannel.x * colors[0] + + colorChannel.y * colors[1] + + colorChannel.z * colors[2]; +}`]);t.bg=function(p){return a(p,h,v,null,[{name:"position",type:"vec3"},{name:"normal",type:"vec3"}])}},4935:function(e,t,r){"use strict";e.exports=_;var o=r(2762),a=r(8116),i=r(4359),n=r(1879).Q,s=window||process.global||{},c=s.__TEXT_CACHE||{};s.__TEXT_CACHE={};var h=3;function v(w,S,E,m){this.gl=w,this.shader=S,this.buffer=E,this.vao=m,this.tickOffset=this.tickCount=this.labelOffset=this.labelCount=null}var p=v.prototype,T=[0,0];p.bind=function(w,S,E,m){this.vao.bind(),this.shader.bind();var b=this.shader.uniforms;b.model=w,b.view=S,b.projection=E,b.pixelScale=m,T[0]=this.gl.drawingBufferWidth,T[1]=this.gl.drawingBufferHeight,this.shader.uniforms.resolution=T},p.unbind=function(){this.vao.unbind()},p.update=function(w,S,E,m,b){var d=[];function u(N,U,W,Q,ue,se){var he=[W.style,W.weight,W.variant,W.family].join("_"),G=c[he];G||(G=c[he]={});var $=G[U];$||($=G[U]=l(U,{triangles:!0,font:W.family,fontStyle:W.style,fontWeight:W.weight,fontVariant:W.variant,textAlign:"center",textBaseline:"middle",lineSpacing:ue,styletags:se}));for(var J=(Q||12)/12,Z=$.positions,re=$.cells,ne=0,j=re.length;ne=0;--ie){var fe=Z[ee[ie]];d.push(J*fe[0],-J*fe[1],N)}}for(var y=[0,0,0],f=[0,0,0],P=[0,0,0],L=[0,0,0],z=1.25,F={breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0},B=0;B<3;++B){P[B]=d.length/h|0,u(.5*(w[0][B]+w[1][B]),S[B],E[B],12,z,F),L[B]=(d.length/h|0)-P[B],y[B]=d.length/h|0;for(var O=0;O=0&&(h=s.length-c-1);var v=Math.pow(10,h),p=Math.round(i*n*v),T=p+"";if(T.indexOf("e")>=0)return T;var l=p/v,_=p%v;p<0?(l=-Math.ceil(l)|0,_=-_|0):(l=Math.floor(l)|0,_=_|0);var w=""+l;if(p<0&&(w="-"+w),h){for(var S=""+_;S.length=i[0][c];--p)h.push({x:p*n[c],text:r(n[c],p)});s.push(h)}return s}function a(i,n){for(var s=0;s<3;++s){if(i[s].length!==n[s].length)return!1;for(var c=0;cw)throw new Error("gl-buffer: If resizing buffer, must not specify offset");return l.bufferSubData(_,m,E),w}function v(l,_){for(var w=o.malloc(l.length,_),S=l.length,E=0;E=0;--S){if(_[S]!==w)return!1;w*=l[S]}return!0}c.update=function(l,_){if(typeof _!="number"&&(_=-1),this.bind(),typeof l=="object"&&typeof l.shape<"u"){var w=l.dtype;if(n.indexOf(w)<0&&(w="float32"),this.type===this.gl.ELEMENT_ARRAY_BUFFER){var S=gl.getExtension("OES_element_index_uint");S&&w!=="uint16"?w="uint32":w="uint16"}if(w===l.dtype&&p(l.shape,l.stride))l.offset===0&&l.data.length===l.shape[0]?this.length=h(this.gl,this.type,this.length,this.usage,l.data,_):this.length=h(this.gl,this.type,this.length,this.usage,l.data.subarray(l.offset,l.shape[0]),_);else{var E=o.malloc(l.size,w),m=i(E,l.shape);a.assign(m,l),_<0?this.length=h(this.gl,this.type,this.length,this.usage,E,_):this.length=h(this.gl,this.type,this.length,this.usage,E.subarray(0,l.size),_),o.free(E)}}else if(Array.isArray(l)){var b;this.type===this.gl.ELEMENT_ARRAY_BUFFER?b=v(l,"uint16"):b=v(l,"float32"),_<0?this.length=h(this.gl,this.type,this.length,this.usage,b,_):this.length=h(this.gl,this.type,this.length,this.usage,b.subarray(0,l.length),_),o.free(b)}else if(typeof l=="object"&&typeof l.length=="number")this.length=h(this.gl,this.type,this.length,this.usage,l,_);else if(typeof l=="number"||l===void 0){if(_>=0)throw new Error("gl-buffer: Cannot specify offset when resizing buffer");l=l|0,l<=0&&(l=1),this.gl.bufferData(this.type,l|0,this.usage),this.length=l}else throw new Error("gl-buffer: Invalid data type")};function T(l,_,w,S){if(w=w||l.ARRAY_BUFFER,S=S||l.DYNAMIC_DRAW,w!==l.ARRAY_BUFFER&&w!==l.ELEMENT_ARRAY_BUFFER)throw new Error("gl-buffer: Invalid type for webgl buffer, must be either gl.ARRAY_BUFFER or gl.ELEMENT_ARRAY_BUFFER");if(S!==l.DYNAMIC_DRAW&&S!==l.STATIC_DRAW&&S!==l.STREAM_DRAW)throw new Error("gl-buffer: Invalid usage for buffer, must be either gl.DYNAMIC_DRAW, gl.STATIC_DRAW or gl.STREAM_DRAW");var E=l.createBuffer(),m=new s(l,w,E,0,S);return m.update(_),m}e.exports=T},6405:function(e,t,r){"use strict";var o=r(2931);e.exports=function(i,n){var s=i.positions,c=i.vectors,h={positions:[],vertexIntensity:[],vertexIntensityBounds:i.vertexIntensityBounds,vectors:[],cells:[],coneOffset:i.coneOffset,colormap:i.colormap};if(i.positions.length===0)return n&&(n[0]=[0,0,0],n[1]=[0,0,0]),h;for(var v=0,p=1/0,T=-1/0,l=1/0,_=-1/0,w=1/0,S=-1/0,E=null,m=null,b=[],d=1/0,u=!1,y=i.coneSizemode==="raw",f=0;fv&&(v=o.length(L)),f&&!y){var z=2*o.distance(E,P)/(o.length(m)+o.length(L));z?(d=Math.min(d,z),u=!1):u=!0}u||(E=P,m=L),b.push(L)}var F=[p,l,w],B=[T,_,S];n&&(n[0]=F,n[1]=B),v===0&&(v=1);var O=1/v;isFinite(d)||(d=1),h.vectorScale=d;var I=i.coneSize||(y?1:.5);i.absoluteConeSize&&(I=i.absoluteConeSize*O),h.coneScale=I;for(var f=0,N=0;f=1},l.isTransparent=function(){return this.opacity<1},l.pickSlots=1,l.setPickBase=function(b){this.pickId=b};function _(b){for(var d=v({colormap:b,nshades:256,format:"rgba"}),u=new Uint8Array(256*4),y=0;y<256;++y){for(var f=d[y],P=0;P<3;++P)u[4*y+P]=f[P];u[4*y+3]=f[3]*255}return h(u,[256,256,4],[4,0,1])}function w(b){for(var d=b.length,u=new Array(d),y=0;y0){var N=this.triShader;N.bind(),N.uniforms=z,this.triangleVAO.bind(),d.drawArrays(d.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}},l.drawPick=function(b){b=b||{};for(var d=this.gl,u=b.model||p,y=b.view||p,f=b.projection||p,P=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],L=0;L<3;++L)P[0][L]=Math.max(P[0][L],this.clipBounds[0][L]),P[1][L]=Math.min(P[1][L],this.clipBounds[1][L]);this._model=[].slice.call(u),this._view=[].slice.call(y),this._projection=[].slice.call(f),this._resolution=[d.drawingBufferWidth,d.drawingBufferHeight];var z={model:u,view:y,projection:f,clipBounds:P,tubeScale:this.tubeScale,vectorScale:this.vectorScale,coneScale:this.coneScale,coneOffset:this.coneOffset,pickId:this.pickId/255},F=this.pickShader;F.bind(),F.uniforms=z,this.triangleCount>0&&(this.triangleVAO.bind(),d.drawArrays(d.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind())},l.pick=function(b){if(!b||b.id!==this.pickId)return null;var d=b.value[0]+256*b.value[1]+65536*b.value[2],u=this.cells[d],y=this.positions[u[1]].slice(0,3),f={position:y,dataCoordinate:y,index:Math.floor(u[1]/48)};return this.traceType==="cone"?f.index=Math.floor(u[1]/48):this.traceType==="streamtube"&&(f.intensity=this.intensity[u[1]],f.velocity=this.vectors[u[1]].slice(0,3),f.divergence=this.vectors[u[1]][3],f.index=d),f},l.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.pickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleVectors.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleIds.dispose()};function S(b,d){var u=o(b,d.meshShader.vertex,d.meshShader.fragment,null,d.meshShader.attributes);return u.attributes.position.location=0,u.attributes.color.location=2,u.attributes.uv.location=3,u.attributes.vector.location=4,u}function E(b,d){var u=o(b,d.pickShader.vertex,d.pickShader.fragment,null,d.pickShader.attributes);return u.attributes.position.location=0,u.attributes.id.location=1,u.attributes.vector.location=4,u}function m(b,d,u){var y=u.shaders;arguments.length===1&&(d=b,b=d.gl);var f=S(b,y),P=E(b,y),L=n(b,h(new Uint8Array([255,255,255,255]),[1,1,4]));L.generateMipmap(),L.minFilter=b.LINEAR_MIPMAP_LINEAR,L.magFilter=b.LINEAR;var z=a(b),F=a(b),B=a(b),O=a(b),I=a(b),N=i(b,[{buffer:z,type:b.FLOAT,size:4},{buffer:I,type:b.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:B,type:b.FLOAT,size:4},{buffer:O,type:b.FLOAT,size:2},{buffer:F,type:b.FLOAT,size:4}]),U=new T(b,L,f,P,z,F,I,B,O,N,u.traceType||"cone");return U.update(d),U}e.exports=m},614:function(e,t,r){var o=r(3236),a=o([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec3 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, coneScale, coneOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * conePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(conePosition, 1.0); + vec4 t_position = view * conePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = conePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),i=o([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),n=o([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the cone vertex and normal at the given index. +// +// The returned vertex is for a cone with its top at origin and height of 1.0, +// pointing in the direction of the vector attribute. +// +// Each cone is made up of a top vertex, a center base vertex and base perimeter vertices. +// These vertices are used to make up the triangles of the cone by the following: +// segment + 0 top vertex +// segment + 1 perimeter vertex a+1 +// segment + 2 perimeter vertex a +// segment + 3 center base vertex +// segment + 4 perimeter vertex a +// segment + 5 perimeter vertex a+1 +// Where segment is the number of the radial segment * 6 and a is the angle at that radial segment. +// To go from index to segment, floor(index / 6) +// To go from segment to angle, 2*pi * (segment/segmentCount) +// To go from index to segment index, index - (segment*6) +// +vec3 getConePosition(vec3 d, float rawIndex, float coneOffset, out vec3 normal) { + + const float segmentCount = 8.0; + + float index = rawIndex - floor(rawIndex / + (segmentCount * 6.0)) * + (segmentCount * 6.0); + + float segment = floor(0.001 + index/6.0); + float segmentIndex = index - (segment*6.0); + + normal = -normalize(d); + + if (segmentIndex > 2.99 && segmentIndex < 3.01) { + return mix(vec3(0.0), -d, coneOffset); + } + + float nextAngle = ( + (segmentIndex > 0.99 && segmentIndex < 1.01) || + (segmentIndex > 4.99 && segmentIndex < 5.01) + ) ? 1.0 : 0.0; + float angle = 2.0 * 3.14159 * ((segment + nextAngle) / segmentCount); + + vec3 v1 = mix(d, vec3(0.0), coneOffset); + vec3 v2 = v1 - d; + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d)*0.25; + vec3 y = v * sin(angle) * length(d)*0.25; + vec3 v3 = v2 + x + y; + if (segmentIndex < 3.0) { + vec3 tx = u * sin(angle); + vec3 ty = v * -cos(angle); + vec3 tangent = tx + ty; + normal = normalize(cross(v3 - v1, tangent)); + } + + if (segmentIndex == 0.0) { + return mix(d, vec3(0.0), coneOffset); + } + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float vectorScale, coneScale, coneOffset; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getConePosition(mat3(model) * ((vectorScale * coneScale) * vector.xyz), position.w, coneOffset, normal); + vec4 conePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + gl_Position = projection * (view * conePosition); + f_id = id; + f_position = position.xyz; +} +`]),s=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);t.meshShader={vertex:a,fragment:i,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec3"}]},t.pickShader={vertex:n,fragment:s,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec3"}]}},737:function(e){e.exports={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"}},5171:function(e,t,r){var o=r(737);e.exports=function(i){return o[i]}},9165:function(e,t,r){"use strict";e.exports=T;var o=r(2762),a=r(8116),i=r(3436),n=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function s(l,_,w,S){this.gl=l,this.shader=S,this.buffer=_,this.vao=w,this.pixelRatio=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lineWidth=[1,1,1],this.capSize=[10,10,10],this.lineCount=[0,0,0],this.lineOffset=[0,0,0],this.opacity=1,this.hasAlpha=!1}var c=s.prototype;c.isOpaque=function(){return!this.hasAlpha},c.isTransparent=function(){return this.hasAlpha},c.drawTransparent=c.draw=function(l){var _=this.gl,w=this.shader.uniforms;this.shader.bind();var S=w.view=l.view||n,E=w.projection=l.projection||n;w.model=l.model||n,w.clipBounds=this.clipBounds,w.opacity=this.opacity;var m=S[12],b=S[13],d=S[14],u=S[15],y=l._ortho||!1,f=y?2:1,P=f*this.pixelRatio*(E[3]*m+E[7]*b+E[11]*d+E[15]*u)/_.drawingBufferHeight;this.vao.bind();for(var L=0;L<3;++L)_.lineWidth(this.lineWidth[L]*this.pixelRatio),w.capSize=this.capSize[L]*P,this.lineCount[L]&&_.drawArrays(_.LINES,this.lineOffset[L],this.lineCount[L]);this.vao.unbind()};function h(l,_){for(var w=0;w<3;++w)l[0][w]=Math.min(l[0][w],_[w]),l[1][w]=Math.max(l[1][w],_[w])}var v=function(){for(var l=new Array(3),_=0;_<3;++_){for(var w=[],S=1;S<=2;++S)for(var E=-1;E<=1;E+=2){var m=(S+_)%3,b=[0,0,0];b[m]=E,w.push(b)}l[_]=w}return l}();function p(l,_,w,S){for(var E=v[S],m=0;m0){var z=y.slice();z[d]+=P[1][d],E.push(y[0],y[1],y[2],L[0],L[1],L[2],L[3],0,0,0,z[0],z[1],z[2],L[0],L[1],L[2],L[3],0,0,0),h(this.bounds,z),b+=2+p(E,z,L,d)}}}this.lineCount[d]=b-this.lineOffset[d]}this.buffer.update(E)}},c.dispose=function(){this.shader.dispose(),this.buffer.dispose(),this.vao.dispose()};function T(l){var _=l.gl,w=o(_),S=a(_,[{buffer:w,type:_.FLOAT,size:3,offset:0,stride:40},{buffer:w,type:_.FLOAT,size:4,offset:12,stride:40},{buffer:w,type:_.FLOAT,size:3,offset:28,stride:40}]),E=i(_);E.attributes.position.location=0,E.attributes.color.location=1,E.attributes.offset.location=2;var m=new s(_,w,S,E);return m.update(l),m}},3436:function(e,t,r){"use strict";var o=r(3236),a=r(9405),i=o([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, offset; +attribute vec4 color; +uniform mat4 model, view, projection; +uniform float capSize; +varying vec4 fragColor; +varying vec3 fragPosition; + +void main() { + vec4 worldPosition = model * vec4(position, 1.0); + worldPosition = (worldPosition / worldPosition.w) + vec4(capSize * offset, 0.0); + gl_Position = projection * (view * worldPosition); + fragColor = color; + fragPosition = position; +}`]),n=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float opacity; +varying vec3 fragPosition; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], fragPosition) || + fragColor.a * opacity == 0. + ) discard; + + gl_FragColor = opacity * fragColor; +}`]);e.exports=function(s){return a(s,i,n,null,[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"offset",type:"vec3"}])}},2260:function(e,t,r){"use strict";var o=r(7766);e.exports=b;var a=null,i,n,s,c;function h(d){var u=d.getParameter(d.FRAMEBUFFER_BINDING),y=d.getParameter(d.RENDERBUFFER_BINDING),f=d.getParameter(d.TEXTURE_BINDING_2D);return[u,y,f]}function v(d,u){d.bindFramebuffer(d.FRAMEBUFFER,u[0]),d.bindRenderbuffer(d.RENDERBUFFER,u[1]),d.bindTexture(d.TEXTURE_2D,u[2])}function p(d,u){var y=d.getParameter(u.MAX_COLOR_ATTACHMENTS_WEBGL);a=new Array(y+1);for(var f=0;f<=y;++f){for(var P=new Array(y),L=0;L1&&F.drawBuffersWEBGL(a[z]);var U=y.getExtension("WEBGL_depth_texture");U?B?d.depth=l(y,P,L,U.UNSIGNED_INT_24_8_WEBGL,y.DEPTH_STENCIL,y.DEPTH_STENCIL_ATTACHMENT):O&&(d.depth=l(y,P,L,y.UNSIGNED_SHORT,y.DEPTH_COMPONENT,y.DEPTH_ATTACHMENT)):O&&B?d._depth_rb=_(y,P,L,y.DEPTH_STENCIL,y.DEPTH_STENCIL_ATTACHMENT):O?d._depth_rb=_(y,P,L,y.DEPTH_COMPONENT16,y.DEPTH_ATTACHMENT):B&&(d._depth_rb=_(y,P,L,y.STENCIL_INDEX,y.STENCIL_ATTACHMENT));var W=y.checkFramebufferStatus(y.FRAMEBUFFER);if(W!==y.FRAMEBUFFER_COMPLETE){d._destroyed=!0,y.bindFramebuffer(y.FRAMEBUFFER,null),y.deleteFramebuffer(d.handle),d.handle=null,d.depth&&(d.depth.dispose(),d.depth=null),d._depth_rb&&(y.deleteRenderbuffer(d._depth_rb),d._depth_rb=null);for(var N=0;NP||y<0||y>P)throw new Error("gl-fbo: Can't resize FBO, invalid dimensions");d._shape[0]=u,d._shape[1]=y;for(var L=h(f),z=0;zL||y<0||y>L)throw new Error("gl-fbo: Parameters are too large for FBO");f=f||{};var z=1;if("color"in f){if(z=Math.max(f.color|0,0),z<0)throw new Error("gl-fbo: Must specify a nonnegative number of colors");if(z>1)if(P){if(z>d.getParameter(P.MAX_COLOR_ATTACHMENTS_WEBGL))throw new Error("gl-fbo: Context does not support "+z+" draw buffers")}else throw new Error("gl-fbo: Multiple draw buffer extension not supported")}var F=d.UNSIGNED_BYTE,B=d.getExtension("OES_texture_float");if(f.float&&z>0){if(!B)throw new Error("gl-fbo: Context does not support floating point textures");F=d.FLOAT}else f.preferFloat&&z>0&&B&&(F=d.FLOAT);var O=!0;"depth"in f&&(O=!!f.depth);var I=!1;return"stencil"in f&&(I=!!f.stencil),new S(d,u,y,F,z,O,I,P)}},2992:function(e,t,r){var o=r(3387).sprintf,a=r(5171),i=r(1848),n=r(1085);e.exports=s;function s(c,h,v){"use strict";var p=i(h)||"of unknown name (see npm glsl-shader-name)",T="unknown type";v!==void 0&&(T=v===a.FRAGMENT_SHADER?"fragment":"vertex");for(var l=o(`Error compiling %s shader %s: +`,T,p),_=o("%s%s",l,c),w=c.split(` +`),S={},E=0;E max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D dashTexture; +uniform float dashScale; +uniform float opacity; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if ( + outOfRange(clipBounds[0], clipBounds[1], worldPosition) || + fragColor.a * opacity == 0. + ) discard; + + float dashWeight = texture2D(dashTexture, vec2(dashScale * pixelArcLength, 0)).r; + if(dashWeight < 0.5) { + discard; + } + gl_FragColor = fragColor * opacity; +} +`]),s=o([`precision highp float; +#define GLSLIFY 1 + +#define FLOAT_MAX 1.70141184e38 +#define FLOAT_MIN 1.17549435e-38 + +// https://github.com/mikolalysenko/glsl-read-float/blob/master/index.glsl +vec4 packFloat(float v) { + float av = abs(v); + + //Handle special cases + if(av < FLOAT_MIN) { + return vec4(0.0, 0.0, 0.0, 0.0); + } else if(v > FLOAT_MAX) { + return vec4(127.0, 128.0, 0.0, 0.0) / 255.0; + } else if(v < -FLOAT_MAX) { + return vec4(255.0, 128.0, 0.0, 0.0) / 255.0; + } + + vec4 c = vec4(0,0,0,0); + + //Compute exponent and mantissa + float e = floor(log2(av)); + float m = av * pow(2.0, -e) - 1.0; + + //Unpack mantissa + c[1] = floor(128.0 * m); + m -= c[1] / 128.0; + c[2] = floor(32768.0 * m); + m -= c[2] / 32768.0; + c[3] = floor(8388608.0 * m); + + //Unpack exponent + float ebias = e + 127.0; + c[0] = floor(ebias / 2.0); + ebias -= c[0] * 2.0; + c[1] += floor(ebias) * 128.0; + + //Unpack sign bit + c[0] += 128.0 * step(0.0, -v); + + //Scale back to range + return c / 255.0; +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform float pickId; +uniform vec3 clipBounds[2]; + +varying vec3 worldPosition; +varying float pixelArcLength; +varying vec4 fragColor; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], worldPosition)) discard; + + gl_FragColor = vec4(pickId/255.0, packFloat(pixelArcLength).xyz); +}`]),c=[{name:"position",type:"vec3"},{name:"nextPosition",type:"vec3"},{name:"arcLength",type:"float"},{name:"lineWidth",type:"float"},{name:"color",type:"vec4"}];t.createShader=function(h){return a(h,i,n,null,c)},t.createPickShader=function(h){return a(h,i,s,null,c)}},5714:function(e,t,r){"use strict";e.exports=d;var o=r(2762),a=r(8116),i=r(7766),n=new Uint8Array(4),s=new Float32Array(n.buffer);function c(u,y,f,P){return n[0]=P,n[1]=f,n[2]=y,n[3]=u,s[0]}var h=r(2478),v=r(9618),p=r(7319),T=p.createShader,l=p.createPickShader,_=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function w(u,y){for(var f=0,P=0;P<3;++P){var L=u[P]-y[P];f+=L*L}return Math.sqrt(f)}function S(u){for(var y=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],f=0;f<3;++f)y[0][f]=Math.max(u[0][f],y[0][f]),y[1][f]=Math.min(u[1][f],y[1][f]);return y}function E(u,y,f,P){this.arcLength=u,this.position=y,this.index=f,this.dataCoordinate=P}function m(u,y,f,P,L,z){this.gl=u,this.shader=y,this.pickShader=f,this.buffer=P,this.vao=L,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.points=[],this.arcLength=[],this.vertexCount=0,this.bounds=[[0,0,0],[0,0,0]],this.pickId=0,this.lineWidth=1,this.texture=z,this.dashScale=1,this.opacity=1,this.hasAlpha=!1,this.dirty=!0,this.pixelRatio=1}var b=m.prototype;b.isTransparent=function(){return this.hasAlpha},b.isOpaque=function(){return!this.hasAlpha},b.pickSlots=1,b.setPickBase=function(u){this.pickId=u},b.drawTransparent=b.draw=function(u){if(this.vertexCount){var y=this.gl,f=this.shader,P=this.vao;f.bind(),f.uniforms={model:u.model||_,view:u.view||_,projection:u.projection||_,clipBounds:S(this.clipBounds),dashTexture:this.texture.bind(),dashScale:this.dashScale/this.arcLength[this.arcLength.length-1],opacity:this.opacity,screenShape:[y.drawingBufferWidth,y.drawingBufferHeight],pixelRatio:this.pixelRatio},P.bind(),P.draw(y.TRIANGLE_STRIP,this.vertexCount),P.unbind()}},b.drawPick=function(u){if(this.vertexCount){var y=this.gl,f=this.pickShader,P=this.vao;f.bind(),f.uniforms={model:u.model||_,view:u.view||_,projection:u.projection||_,pickId:this.pickId,clipBounds:S(this.clipBounds),screenShape:[y.drawingBufferWidth,y.drawingBufferHeight],pixelRatio:this.pixelRatio},P.bind(),P.draw(y.TRIANGLE_STRIP,this.vertexCount),P.unbind()}},b.update=function(u){var y,f;this.dirty=!0;var P=!!u.connectGaps;"dashScale"in u&&(this.dashScale=u.dashScale),this.hasAlpha=!1,"opacity"in u&&(this.opacity=+u.opacity,this.opacity<1&&(this.hasAlpha=!0));var L=[],z=[],F=[],B=0,O=0,I=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],N=u.position||u.positions;if(N){var U=u.color||u.colors||[0,0,0,1],W=u.lineWidth||1,Q=!1;e:for(y=1;y0){for(var he=0;he<24;++he)L.push(L[L.length-12]);O+=2,Q=!0}continue e}I[0][f]=Math.min(I[0][f],ue[f],se[f]),I[1][f]=Math.max(I[1][f],ue[f],se[f])}var G,$;Array.isArray(U[0])?(G=U.length>y-1?U[y-1]:U.length>0?U[U.length-1]:[0,0,0,1],$=U.length>y?U[y]:U.length>0?U[U.length-1]:[0,0,0,1]):G=$=U,G.length===3&&(G=[G[0],G[1],G[2],1]),$.length===3&&($=[$[0],$[1],$[2],1]),!this.hasAlpha&&G[3]<1&&(this.hasAlpha=!0);var J;Array.isArray(W)?J=W.length>y-1?W[y-1]:W.length>0?W[W.length-1]:[0,0,0,1]:J=W;var Z=B;if(B+=w(ue,se),Q){for(f=0;f<2;++f)L.push(ue[0],ue[1],ue[2],se[0],se[1],se[2],Z,J,G[0],G[1],G[2],G[3]);O+=2,Q=!1}L.push(ue[0],ue[1],ue[2],se[0],se[1],se[2],Z,J,G[0],G[1],G[2],G[3],ue[0],ue[1],ue[2],se[0],se[1],se[2],Z,-J,G[0],G[1],G[2],G[3],se[0],se[1],se[2],ue[0],ue[1],ue[2],B,-J,$[0],$[1],$[2],$[3],se[0],se[1],se[2],ue[0],ue[1],ue[2],B,J,$[0],$[1],$[2],$[3]),O+=4}}if(this.buffer.update(L),z.push(B),F.push(N[N.length-1].slice()),this.bounds=I,this.vertexCount=O,this.points=F,this.arcLength=z,"dashes"in u){var re=u.dashes,ne=re.slice();for(ne.unshift(0),y=1;y1.0001)return null;f+=y[E]}return Math.abs(f-1)>.001?null:[m,c(v,y),y]}},840:function(e,t,r){var o=r(3236),a=o([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position, normal; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model + , view + , projection + , inverseModel; +uniform vec3 eyePosition + , lightPosition; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +vec4 project(vec3 p) { + return projection * (view * (model * vec4(p, 1.0))); +} + +void main() { + gl_Position = project(position); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * vec4(position , 1.0); + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + f_color = color; + f_data = position; + f_uv = uv; +} +`]),i=o([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +//#pragma glslify: beckmann = require(glsl-specular-beckmann) // used in gl-surface3d + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness + , fresnel + , kambient + , kdiffuse + , kspecular; +uniform sampler2D texture; + +varying vec3 f_normal + , f_lightDirection + , f_eyeDirection + , f_data; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (f_color.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], f_data) + ) discard; + + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + //float specular = max(0.0, beckmann(L, V, N, roughness)); // used in gl-surface3d + + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = vec4(f_color.rgb, 1.0) * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * f_color.a; +} +`]),n=o([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; + +uniform mat4 model, view, projection; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_color = color; + f_data = position; + f_uv = uv; +}`]),s=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec3 f_data; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_data)) discard; + + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),c=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 uv; +attribute float pointSize; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0 ,0.0 ,0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + } + gl_PointSize = pointSize; + f_color = color; + f_uv = uv; +}`]),h=o([`precision highp float; +#define GLSLIFY 1 + +uniform sampler2D texture; +uniform float opacity; + +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + vec2 pointR = gl_PointCoord.xy - vec2(0.5, 0.5); + if(dot(pointR, pointR) > 0.25) { + discard; + } + gl_FragColor = f_color * texture2D(texture, f_uv) * opacity; +}`]),v=o([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; +attribute vec4 id; + +uniform mat4 model, view, projection; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + f_id = id; + f_position = position; +}`]),p=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]),T=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute float pointSize; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0.0, 0.0, 0.0, 0.0); + } else { + gl_Position = projection * (view * (model * vec4(position, 1.0))); + gl_PointSize = pointSize; + } + f_id = id; + f_position = position; +}`]),l=o([`precision highp float; +#define GLSLIFY 1 + +attribute vec3 position; + +uniform mat4 model, view, projection; + +void main() { + gl_Position = projection * (view * (model * vec4(position, 1.0))); +}`]),_=o([`precision highp float; +#define GLSLIFY 1 + +uniform vec3 contourColor; + +void main() { + gl_FragColor = vec4(contourColor, 1.0); +} +`]);t.meshShader={vertex:a,fragment:i,attributes:[{name:"position",type:"vec3"},{name:"normal",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},t.wireShader={vertex:n,fragment:s,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"}]},t.pointShader={vertex:c,fragment:h,attributes:[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"pointSize",type:"float"}]},t.pickShader={vertex:v,fragment:p,attributes:[{name:"position",type:"vec3"},{name:"id",type:"vec4"}]},t.pointPickShader={vertex:T,fragment:p,attributes:[{name:"position",type:"vec3"},{name:"pointSize",type:"float"},{name:"id",type:"vec4"}]},t.contourShader={vertex:l,fragment:_,attributes:[{name:"position",type:"vec3"}]}},7201:function(e,t,r){"use strict";var o=1e-6,a=1e-6,i=r(9405),n=r(2762),s=r(8116),c=r(7766),h=r(8406),v=r(6760),p=r(7608),T=r(9618),l=r(6729),_=r(7765),w=r(1888),S=r(840),E=r(7626),m=S.meshShader,b=S.wireShader,d=S.pointShader,u=S.pickShader,y=S.pointPickShader,f=S.contourShader,P=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];function L(he,G,$,J,Z,re,ne,j,ee,ie,fe,be,Ae,Be,Ie,Ze,at,it,et,lt,Me,ge,ce,ze,tt,nt,Qe){this.gl=he,this.pixelRatio=1,this.cells=[],this.positions=[],this.intensity=[],this.texture=G,this.dirty=!0,this.triShader=$,this.lineShader=J,this.pointShader=Z,this.pickShader=re,this.pointPickShader=ne,this.contourShader=j,this.trianglePositions=ee,this.triangleColors=fe,this.triangleNormals=Ae,this.triangleUVs=be,this.triangleIds=ie,this.triangleVAO=Be,this.triangleCount=0,this.lineWidth=1,this.edgePositions=Ie,this.edgeColors=at,this.edgeUVs=it,this.edgeIds=Ze,this.edgeVAO=et,this.edgeCount=0,this.pointPositions=lt,this.pointColors=ge,this.pointUVs=ce,this.pointSizes=ze,this.pointIds=Me,this.pointVAO=tt,this.pointCount=0,this.contourLineWidth=1,this.contourPositions=nt,this.contourVAO=Qe,this.contourCount=0,this.contourColor=[0,0,0],this.contourEnable=!0,this.pickVertex=!0,this.pickId=1,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.lightPosition=[1e5,1e5,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.opacity=1,this.hasAlpha=!1,this.opacityscale=!1,this._model=P,this._view=P,this._projection=P,this._resolution=[1,1]}var z=L.prototype;z.isOpaque=function(){return!this.hasAlpha},z.isTransparent=function(){return this.hasAlpha},z.pickSlots=1,z.setPickBase=function(he){this.pickId=he};function F(he,G){if(!G||!G.length)return 1;for(var $=0;$he&&$>0){var J=(G[$][0]-he)/(G[$][0]-G[$-1][0]);return G[$][1]*(1-J)+J*G[$-1][1]}}return 1}function B(he,G){for(var $=l({colormap:he,nshades:256,format:"rgba"}),J=new Uint8Array(256*4),Z=0;Z<256;++Z){for(var re=$[Z],ne=0;ne<3;++ne)J[4*Z+ne]=re[ne];G?J[4*Z+3]=255*F(Z/255,G):J[4*Z+3]=255*re[3]}return T(J,[256,256,4],[4,0,1])}function O(he){for(var G=he.length,$=new Array(G),J=0;J0){var Ae=this.triShader;Ae.bind(),Ae.uniforms=j,this.triangleVAO.bind(),G.drawArrays(G.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()}if(this.edgeCount>0&&this.lineWidth>0){var Ae=this.lineShader;Ae.bind(),Ae.uniforms=j,this.edgeVAO.bind(),G.lineWidth(this.lineWidth*this.pixelRatio),G.drawArrays(G.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()}if(this.pointCount>0){var Ae=this.pointShader;Ae.bind(),Ae.uniforms=j,this.pointVAO.bind(),G.drawArrays(G.POINTS,0,this.pointCount),this.pointVAO.unbind()}if(this.contourEnable&&this.contourCount>0&&this.contourLineWidth>0){var Ae=this.contourShader;Ae.bind(),Ae.uniforms=j,this.contourVAO.bind(),G.drawArrays(G.LINES,0,this.contourCount),this.contourVAO.unbind()}},z.drawPick=function(he){he=he||{};for(var G=this.gl,$=he.model||P,J=he.view||P,Z=he.projection||P,re=[[-1e6,-1e6,-1e6],[1e6,1e6,1e6]],ne=0;ne<3;++ne)re[0][ne]=Math.max(re[0][ne],this.clipBounds[0][ne]),re[1][ne]=Math.min(re[1][ne],this.clipBounds[1][ne]);this._model=[].slice.call($),this._view=[].slice.call(J),this._projection=[].slice.call(Z),this._resolution=[G.drawingBufferWidth,G.drawingBufferHeight];var j={model:$,view:J,projection:Z,clipBounds:re,pickId:this.pickId/255},ee=this.pickShader;if(ee.bind(),ee.uniforms=j,this.triangleCount>0&&(this.triangleVAO.bind(),G.drawArrays(G.TRIANGLES,0,this.triangleCount*3),this.triangleVAO.unbind()),this.edgeCount>0&&(this.edgeVAO.bind(),G.lineWidth(this.lineWidth*this.pixelRatio),G.drawArrays(G.LINES,0,this.edgeCount*2),this.edgeVAO.unbind()),this.pointCount>0){var ee=this.pointPickShader;ee.bind(),ee.uniforms=j,this.pointVAO.bind(),G.drawArrays(G.POINTS,0,this.pointCount),this.pointVAO.unbind()}},z.pick=function(he){if(!he||he.id!==this.pickId)return null;for(var G=he.value[0]+256*he.value[1]+65536*he.value[2],$=this.cells[G],J=this.positions,Z=new Array($.length),re=0;re<$.length;++re)Z[re]=J[$[re]];var ne=he.coord[0],j=he.coord[1];if(!this.pickVertex){var ee=this.positions[$[0]],ie=this.positions[$[1]],fe=this.positions[$[2]],be=[(ee[0]+ie[0]+fe[0])/3,(ee[1]+ie[1]+fe[1])/3,(ee[2]+ie[2]+fe[2])/3];return{_cellCenter:!0,position:[ne,j],index:G,cell:$,cellId:G,intensity:this.intensity[G],dataCoordinate:be}}var Ae=E(Z,[ne*this.pixelRatio,this._resolution[1]-j*this.pixelRatio],this._model,this._view,this._projection,this._resolution);if(!Ae)return null;for(var Be=Ae[2],Ie=0,re=0;re<$.length;++re)Ie+=Be[re]*this.intensity[$[re]];return{position:Ae[1],index:$[Ae[0]],cell:$,cellId:G,intensity:Ie,dataCoordinate:this.positions[$[Ae[0]]]}},z.dispose=function(){this.texture.dispose(),this.triShader.dispose(),this.lineShader.dispose(),this.pointShader.dispose(),this.pickShader.dispose(),this.pointPickShader.dispose(),this.triangleVAO.dispose(),this.trianglePositions.dispose(),this.triangleColors.dispose(),this.triangleUVs.dispose(),this.triangleNormals.dispose(),this.triangleIds.dispose(),this.edgeVAO.dispose(),this.edgePositions.dispose(),this.edgeColors.dispose(),this.edgeUVs.dispose(),this.edgeIds.dispose(),this.pointVAO.dispose(),this.pointPositions.dispose(),this.pointColors.dispose(),this.pointUVs.dispose(),this.pointSizes.dispose(),this.pointIds.dispose(),this.contourVAO.dispose(),this.contourPositions.dispose(),this.contourShader.dispose()};function I(he){var G=i(he,m.vertex,m.fragment);return G.attributes.position.location=0,G.attributes.color.location=2,G.attributes.uv.location=3,G.attributes.normal.location=4,G}function N(he){var G=i(he,b.vertex,b.fragment);return G.attributes.position.location=0,G.attributes.color.location=2,G.attributes.uv.location=3,G}function U(he){var G=i(he,d.vertex,d.fragment);return G.attributes.position.location=0,G.attributes.color.location=2,G.attributes.uv.location=3,G.attributes.pointSize.location=4,G}function W(he){var G=i(he,u.vertex,u.fragment);return G.attributes.position.location=0,G.attributes.id.location=1,G}function Q(he){var G=i(he,y.vertex,y.fragment);return G.attributes.position.location=0,G.attributes.id.location=1,G.attributes.pointSize.location=4,G}function ue(he){var G=i(he,f.vertex,f.fragment);return G.attributes.position.location=0,G}function se(he,G){arguments.length===1&&(G=he,he=G.gl);var $=he.getExtension("OES_standard_derivatives")||he.getExtension("MOZ_OES_standard_derivatives")||he.getExtension("WEBKIT_OES_standard_derivatives");if(!$)throw new Error("derivatives not supported");var J=I(he),Z=N(he),re=U(he),ne=W(he),j=Q(he),ee=ue(he),ie=c(he,T(new Uint8Array([255,255,255,255]),[1,1,4]));ie.generateMipmap(),ie.minFilter=he.LINEAR_MIPMAP_LINEAR,ie.magFilter=he.LINEAR;var fe=n(he),be=n(he),Ae=n(he),Be=n(he),Ie=n(he),Ze=s(he,[{buffer:fe,type:he.FLOAT,size:3},{buffer:Ie,type:he.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:be,type:he.FLOAT,size:4},{buffer:Ae,type:he.FLOAT,size:2},{buffer:Be,type:he.FLOAT,size:3}]),at=n(he),it=n(he),et=n(he),lt=n(he),Me=s(he,[{buffer:at,type:he.FLOAT,size:3},{buffer:lt,type:he.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:it,type:he.FLOAT,size:4},{buffer:et,type:he.FLOAT,size:2}]),ge=n(he),ce=n(he),ze=n(he),tt=n(he),nt=n(he),Qe=s(he,[{buffer:ge,type:he.FLOAT,size:3},{buffer:nt,type:he.UNSIGNED_BYTE,size:4,normalized:!0},{buffer:ce,type:he.FLOAT,size:4},{buffer:ze,type:he.FLOAT,size:2},{buffer:tt,type:he.FLOAT,size:1}]),Ct=n(he),St=s(he,[{buffer:Ct,type:he.FLOAT,size:3}]),Ot=new L(he,ie,J,Z,re,ne,j,ee,fe,Ie,be,Ae,Be,Ze,at,lt,it,et,Me,ge,nt,ce,ze,tt,Qe,Ct,St);return Ot.update(G),Ot}e.exports=se},4437:function(e,t,r){"use strict";e.exports=h;var o=r(3025),a=r(6296),i=r(351),n=r(8512),s=r(24),c=r(7520);function h(v,p){v=v||document.body,p=p||{};var T=[.01,1/0];"distanceLimits"in p&&(T[0]=p.distanceLimits[0],T[1]=p.distanceLimits[1]),"zoomMin"in p&&(T[0]=p.zoomMin),"zoomMax"in p&&(T[1]=p.zoomMax);var l=a({center:p.center||[0,0,0],up:p.up||[0,1,0],eye:p.eye||[0,0,10],mode:p.mode||"orbit",distanceLimits:T}),_=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],w=0,S=v.clientWidth,E=v.clientHeight,m={keyBindingMode:"rotate",enableWheel:!0,view:l,element:v,delay:p.delay||16,rotateSpeed:p.rotateSpeed||1,zoomSpeed:p.zoomSpeed||1,translateSpeed:p.translateSpeed||1,flipX:!!p.flipX,flipY:!!p.flipY,modes:l.modes,_ortho:p._ortho||p.projection&&p.projection.type==="orthographic"||!1,tick:function(){var b=o(),d=this.delay,u=b-2*d;l.idle(b-d),l.recalcMatrix(u),l.flush(b-(100+d*2));for(var y=!0,f=l.computedMatrix,P=0;P<16;++P)y=y&&_[P]===f[P],_[P]=f[P];var L=v.clientWidth===S&&v.clientHeight===E;return S=v.clientWidth,E=v.clientHeight,y?!L:(w=Math.exp(l.computedRadius[0]),!0)},lookAt:function(b,d,u){l.lookAt(l.lastT(),b,d,u)},rotate:function(b,d,u){l.rotate(l.lastT(),b,d,u)},pan:function(b,d,u){l.pan(l.lastT(),b,d,u)},translate:function(b,d,u){l.translate(l.lastT(),b,d,u)}};return Object.defineProperties(m,{matrix:{get:function(){return l.computedMatrix},set:function(b){return l.setMatrix(l.lastT(),b),l.computedMatrix},enumerable:!0},mode:{get:function(){return l.getMode()},set:function(b){var d=l.computedUp.slice(),u=l.computedEye.slice(),y=l.computedCenter.slice();if(l.setMode(b),b==="turntable"){var f=o();l._active.lookAt(f,u,y,d),l._active.lookAt(f+500,u,y,[0,0,1]),l._active.flush(f)}return l.getMode()},enumerable:!0},center:{get:function(){return l.computedCenter},set:function(b){return l.lookAt(l.lastT(),null,b),l.computedCenter},enumerable:!0},eye:{get:function(){return l.computedEye},set:function(b){return l.lookAt(l.lastT(),b),l.computedEye},enumerable:!0},up:{get:function(){return l.computedUp},set:function(b){return l.lookAt(l.lastT(),null,null,b),l.computedUp},enumerable:!0},distance:{get:function(){return w},set:function(b){return l.setDistance(l.lastT(),b),b},enumerable:!0},distanceLimits:{get:function(){return l.getDistanceLimits(T)},set:function(b){return l.setDistanceLimits(b),b},enumerable:!0}}),v.addEventListener("contextmenu",function(b){return b.preventDefault(),!1}),m._lastX=-1,m._lastY=-1,m._lastMods={shift:!1,control:!1,alt:!1,meta:!1},m.enableMouseListeners=function(){m.mouseListener=i(v,b),v.addEventListener("touchstart",function(d){var u=s(d.changedTouches[0],v);b(0,u[0],u[1],m._lastMods),b(1,u[0],u[1],m._lastMods)},c?{passive:!0}:!1),v.addEventListener("touchmove",function(d){var u=s(d.changedTouches[0],v);b(1,u[0],u[1],m._lastMods),d.preventDefault()},c?{passive:!1}:!1),v.addEventListener("touchend",function(d){b(0,m._lastX,m._lastY,m._lastMods)},c?{passive:!0}:!1);function b(d,u,y,f){var P=m.keyBindingMode;if(P!==!1){var L=P==="rotate",z=P==="pan",F=P==="zoom",B=!!f.control,O=!!f.alt,I=!!f.shift,N=!!(d&1),U=!!(d&2),W=!!(d&4),Q=1/v.clientHeight,ue=Q*(u-m._lastX),se=Q*(y-m._lastY),he=m.flipX?1:-1,G=m.flipY?1:-1,$=Math.PI*m.rotateSpeed,J=o();if(m._lastX!==-1&&m._lastY!==-1&&((L&&N&&!B&&!O&&!I||N&&!B&&!O&&I)&&l.rotate(J,he*$*ue,-G*$*se,0),(z&&N&&!B&&!O&&!I||U||N&&B&&!O&&!I)&&l.pan(J,-m.translateSpeed*ue*w,m.translateSpeed*se*w,0),F&&N&&!B&&!O&&!I||W||N&&!B&&O&&!I)){var Z=-m.zoomSpeed*se/window.innerHeight*(J-l.lastT())*100;l.pan(J,0,0,w*(Math.exp(Z)-1))}return m._lastX=u,m._lastY=y,m._lastMods=f,!0}}m.wheelListener=n(v,function(d,u){if(m.keyBindingMode!==!1&&m.enableWheel){var y=m.flipX?1:-1,f=m.flipY?1:-1,P=o();if(Math.abs(d)>Math.abs(u))l.rotate(P,0,0,-d*y*Math.PI*m.rotateSpeed/window.innerWidth);else if(!m._ortho){var L=-m.zoomSpeed*f*u/window.innerHeight*(P-l.lastT())/20;l.pan(P,0,0,w*(Math.exp(L)-1))}}},!0)},m.enableMouseListeners(),m}},799:function(e,t,r){var o=r(3236),a=r(9405),i=o([`precision mediump float; +#define GLSLIFY 1 +attribute vec2 position; +varying vec2 uv; +void main() { + uv = position; + gl_Position = vec4(position, 0, 1); +}`]),n=o([`precision mediump float; +#define GLSLIFY 1 + +uniform sampler2D accumBuffer; +varying vec2 uv; + +void main() { + vec4 accum = texture2D(accumBuffer, 0.5 * (uv + 1.0)); + gl_FragColor = min(vec4(1,1,1,1), accum); +}`]);e.exports=function(s){return a(s,i,n,null,[{name:"position",type:"vec2"}])}},4100:function(e,t,r){"use strict";var o=r(4437),a=r(3837),i=r(5445),n=r(4449),s=r(3589),c=r(2260),h=r(7169),v=r(351),p=r(4772),T=r(4040),l=r(799),_=r(9216)({tablet:!0,featureDetect:!0});e.exports={createScene:b,createCamera:o};function w(){this.mouse=[-1,-1],this.screen=null,this.distance=1/0,this.index=null,this.dataCoordinate=null,this.dataPosition=null,this.object=null,this.data=null}function S(u,y){var f=null;try{f=u.getContext("webgl",y),f||(f=u.getContext("experimental-webgl",y))}catch{return null}return f}function E(u){var y=Math.round(Math.log(Math.abs(u))/Math.log(10));if(y<0){var f=Math.round(Math.pow(10,-y));return Math.ceil(u*f)/f}else if(y>0){var f=Math.round(Math.pow(10,y));return Math.ceil(u/f)*f}return Math.ceil(u)}function m(u){return typeof u=="boolean"?u:!0}function b(u){u=u||{},u.camera=u.camera||{};var y=u.canvas;if(!y)if(y=document.createElement("canvas"),u.container){var f=u.container;f.appendChild(y)}else document.body.appendChild(y);var P=u.gl;if(P||(u.glOptions&&(_=!!u.glOptions.preserveDrawingBuffer),P=S(y,u.glOptions||{premultipliedAlpha:!0,antialias:!0,preserveDrawingBuffer:_})),!P)throw new Error("webgl not supported");var L=u.bounds||[[-10,-10,-10],[10,10,10]],z=new w,F=c(P,P.drawingBufferWidth,P.drawingBufferHeight,{preferFloat:!_}),B=l(P),O=u.cameraObject&&u.cameraObject._ortho===!0||u.camera.projection&&u.camera.projection.type==="orthographic"||!1,I={eye:u.camera.eye||[2,0,0],center:u.camera.center||[0,0,0],up:u.camera.up||[0,1,0],zoomMin:u.camera.zoomMax||.1,zoomMax:u.camera.zoomMin||100,mode:u.camera.mode||"turntable",_ortho:O},N=u.axes||{},U=a(P,N);U.enable=!N.disable;var W=u.spikes||{},Q=n(P,W),ue=[],se=[],he=[],G=[],$=!0,ne=!0,J=new Array(16),Z=new Array(16),re={view:null,projection:J,model:Z,_ortho:!1},ne=!0,j=[P.drawingBufferWidth,P.drawingBufferHeight],ee=u.cameraObject||o(y,I),ie={gl:P,contextLost:!1,pixelRatio:u.pixelRatio||1,canvas:y,selection:z,camera:ee,axes:U,axesPixels:null,spikes:Q,bounds:L,objects:ue,shape:j,aspect:u.aspectRatio||[1,1,1],pickRadius:u.pickRadius||10,zNear:u.zNear||.01,zFar:u.zFar||1e3,fovy:u.fovy||Math.PI/4,clearColor:u.clearColor||[0,0,0,0],autoResize:m(u.autoResize),autoBounds:m(u.autoBounds),autoScale:!!u.autoScale,autoCenter:m(u.autoCenter),clipToBounds:m(u.clipToBounds),snapToData:!!u.snapToData,onselect:u.onselect||null,onrender:u.onrender||null,onclick:u.onclick||null,cameraParams:re,oncontextloss:null,mouseListener:null,_stopped:!1,getAspectratio:function(){return{x:this.aspect[0],y:this.aspect[1],z:this.aspect[2]}},setAspectratio:function(lt){this.aspect[0]=lt.x,this.aspect[1]=lt.y,this.aspect[2]=lt.z,ne=!0},setBounds:function(lt,Me){this.bounds[0][lt]=Me.min,this.bounds[1][lt]=Me.max},setClearColor:function(lt){this.clearColor=lt},clearRGBA:function(){this.gl.clearColor(this.clearColor[0],this.clearColor[1],this.clearColor[2],this.clearColor[3]),this.gl.clear(this.gl.COLOR_BUFFER_BIT|this.gl.DEPTH_BUFFER_BIT)}},fe=[P.drawingBufferWidth/ie.pixelRatio|0,P.drawingBufferHeight/ie.pixelRatio|0];function be(){if(!ie._stopped&&ie.autoResize){var lt=y.parentNode,Me=1,ge=1;lt&<!==document.body?(Me=lt.clientWidth,ge=lt.clientHeight):(Me=window.innerWidth,ge=window.innerHeight);var ce=Math.ceil(Me*ie.pixelRatio)|0,ze=Math.ceil(ge*ie.pixelRatio)|0;if(ce!==y.width||ze!==y.height){y.width=ce,y.height=ze;var tt=y.style;tt.position=tt.position||"absolute",tt.left="0px",tt.top="0px",tt.width=Me+"px",tt.height=ge+"px",$=!0}}}ie.autoResize&&be(),window.addEventListener("resize",be);function Ae(){for(var lt=ue.length,Me=G.length,ge=0;ge0&&he[Me-1]===0;)he.pop(),G.pop().dispose()}ie.update=function(lt){ie._stopped||(lt=lt||{},$=!0,ne=!0)},ie.add=function(lt){ie._stopped||(lt.axes=U,ue.push(lt),se.push(-1),$=!0,ne=!0,Ae())},ie.remove=function(lt){if(!ie._stopped){var Me=ue.indexOf(lt);Me<0||(ue.splice(Me,1),se.pop(),$=!0,ne=!0,Ae())}},ie.dispose=function(){if(!ie._stopped&&(ie._stopped=!0,window.removeEventListener("resize",be),y.removeEventListener("webglcontextlost",Be),ie.mouseListener.enabled=!1,!ie.contextLost)){U.dispose(),Q.dispose();for(var lt=0;ltz.distance)continue;for(var St=0;St1e-6?(_=Math.acos(w),S=Math.sin(_),E=Math.sin((1-i)*_)/S,m=Math.sin(i*_)/S):(E=1-i,m=i),r[0]=E*n+m*v,r[1]=E*s+m*p,r[2]=E*c+m*T,r[3]=E*h+m*l,r}},5964:function(e){"use strict";e.exports=function(t){return!t&&t!==0?"":t.toString()}},9366:function(e,t,r){"use strict";var o=r(4359);e.exports=i;var a={};function i(n,s,c){var h=[s.style,s.weight,s.variant,s.family].join("_"),v=a[h];if(v||(v=a[h]={}),n in v)return v[n];var p={textAlign:"center",textBaseline:"middle",lineHeight:1,font:s.family,fontStyle:s.style,fontWeight:s.weight,fontVariant:s.variant,lineSpacing:1.25,styletags:{breaklines:!0,bolds:!0,italics:!0,subscripts:!0,superscripts:!0}};p.triangles=!0;var T=o(n,p);p.triangles=!1;var l=o(n,p),_,w;if(c&&c!==1){for(_=0;_ max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform vec4 highlightId; +uniform float highlightScale; +uniform mat4 model, view, projection; +uniform vec3 clipBounds[2]; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = 1.0; + if(distance(highlightId, id) < 0.0001) { + scale = highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1); + vec4 viewPosition = view * worldPosition; + viewPosition = viewPosition / viewPosition.w; + vec4 clipPosition = projection * (viewPosition + scale * vec4(glyph.x, -glyph.y, 0, 0)); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),n=a([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float highlightScale, pixelRatio; +uniform vec4 highlightId; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float scale = pixelRatio; + if(distance(highlightId.bgr, id.bgr) < 0.001) { + scale *= highlightScale; + } + + vec4 worldPosition = model * vec4(position, 1.0); + vec4 viewPosition = view * worldPosition; + vec4 clipPosition = projection * viewPosition; + clipPosition /= clipPosition.w; + + gl_Position = clipPosition + vec4(screenSize * scale * vec2(glyph.x, -glyph.y), 0.0, 0.0); + interpColor = color; + pickId = id; + dataCoordinate = position; + } +}`]),s=a([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +attribute vec3 position; +attribute vec4 color; +attribute vec2 glyph; +attribute vec4 id; + +uniform float highlightScale; +uniform vec4 highlightId; +uniform vec3 axes[2]; +uniform mat4 model, view, projection; +uniform vec2 screenSize; +uniform vec3 clipBounds[2]; +uniform float scale, pixelRatio; + +varying vec4 interpColor; +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], position)) { + + gl_Position = vec4(0,0,0,0); + } else { + float lscale = pixelRatio * scale; + if(distance(highlightId, id) < 0.0001) { + lscale *= highlightScale; + } + + vec4 clipCenter = projection * (view * (model * vec4(position, 1))); + vec3 dataPosition = position + 0.5*lscale*(axes[0] * glyph.x + axes[1] * glyph.y) * clipCenter.w * screenSize.y; + vec4 clipPosition = projection * (view * (model * vec4(dataPosition, 1))); + + gl_Position = clipPosition; + interpColor = color; + pickId = id; + dataCoordinate = dataPosition; + } +} +`]),c=a([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float opacity; + +varying vec4 interpColor; +varying vec3 dataCoordinate; + +void main() { + if ( + outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate) || + interpColor.a * opacity == 0. + ) discard; + gl_FragColor = interpColor * opacity; +} +`]),h=a([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 fragClipBounds[2]; +uniform float pickGroup; + +varying vec4 pickId; +varying vec3 dataCoordinate; + +void main() { + if (outOfRange(fragClipBounds[0], fragClipBounds[1], dataCoordinate)) discard; + + gl_FragColor = vec4(pickGroup, pickId.bgr); +}`]),v=[{name:"position",type:"vec3"},{name:"color",type:"vec4"},{name:"glyph",type:"vec2"},{name:"id",type:"vec4"}],p={vertex:i,fragment:c,attributes:v},T={vertex:n,fragment:c,attributes:v},l={vertex:s,fragment:c,attributes:v},_={vertex:i,fragment:h,attributes:v},w={vertex:n,fragment:h,attributes:v},S={vertex:s,fragment:h,attributes:v};function E(m,b){var d=o(m,b),u=d.attributes;return u.position.location=0,u.color.location=1,u.glyph.location=2,u.id.location=3,d}t.createPerspective=function(m){return E(m,p)},t.createOrtho=function(m){return E(m,T)},t.createProject=function(m){return E(m,l)},t.createPickPerspective=function(m){return E(m,_)},t.createPickOrtho=function(m){return E(m,w)},t.createPickProject=function(m){return E(m,S)}},8418:function(e,t,r){"use strict";var o=r(5219),a=r(2762),i=r(8116),n=r(1888),s=r(6760),c=r(1283),h=r(9366),v=r(5964),p=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],T=ArrayBuffer,l=DataView;function _(Z){return T.isView(Z)&&!(Z instanceof l)}function w(Z){return Array.isArray(Z)||_(Z)}e.exports=J;function S(Z,re){var ne=Z[0],j=Z[1],ee=Z[2],ie=Z[3];return Z[0]=re[0]*ne+re[4]*j+re[8]*ee+re[12]*ie,Z[1]=re[1]*ne+re[5]*j+re[9]*ee+re[13]*ie,Z[2]=re[2]*ne+re[6]*j+re[10]*ee+re[14]*ie,Z[3]=re[3]*ne+re[7]*j+re[11]*ee+re[15]*ie,Z}function E(Z,re,ne,j){return S(j,j,ne),S(j,j,re),S(j,j,Z)}function m(Z,re){this.index=Z,this.dataCoordinate=this.position=re}function b(Z){return Z===!0||Z>1?1:Z}function d(Z,re,ne,j,ee,ie,fe,be,Ae,Be,Ie,Ze){this.gl=Z,this.pixelRatio=1,this.shader=re,this.orthoShader=ne,this.projectShader=j,this.pointBuffer=ee,this.colorBuffer=ie,this.glyphBuffer=fe,this.idBuffer=be,this.vao=Ae,this.vertexCount=0,this.lineVertexCount=0,this.opacity=1,this.hasAlpha=!1,this.lineWidth=0,this.projectScale=[.6666666666666666,.6666666666666666,.6666666666666666],this.projectOpacity=[1,1,1],this.projectHasAlpha=!1,this.pickId=0,this.pickPerspectiveShader=Be,this.pickOrthoShader=Ie,this.pickProjectShader=Ze,this.points=[],this._selectResult=new m(0,[0,0,0]),this.useOrtho=!0,this.bounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.axesProject=[!0,!0,!0],this.axesBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.highlightId=[1,1,1,1],this.highlightScale=2,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.dirty=!0}var u=d.prototype;u.pickSlots=1,u.setPickBase=function(Z){this.pickId=Z},u.isTransparent=function(){if(this.hasAlpha)return!0;for(var Z=0;Z<3;++Z)if(this.axesProject[Z]&&this.projectHasAlpha)return!0;return!1},u.isOpaque=function(){if(!this.hasAlpha)return!0;for(var Z=0;Z<3;++Z)if(this.axesProject[Z]&&!this.projectHasAlpha)return!0;return!1};var y=[0,0],f=[0,0,0],P=[0,0,0],L=[0,0,0,1],z=[0,0,0,1],F=p.slice(),B=[0,0,0],O=[[0,0,0],[0,0,0]];function I(Z){return Z[0]=Z[1]=Z[2]=0,Z}function N(Z,re){return Z[0]=re[0],Z[1]=re[1],Z[2]=re[2],Z[3]=1,Z}function U(Z,re,ne,j){return Z[0]=re[0],Z[1]=re[1],Z[2]=re[2],Z[ne]=j,Z}function W(Z){for(var re=O,ne=0;ne<2;++ne)for(var j=0;j<3;++j)re[ne][j]=Math.max(Math.min(Z[ne][j],1e8),-1e8);return re}function Q(Z,re,ne,j){var ee=re.axesProject,ie=re.gl,fe=Z.uniforms,be=ne.model||p,Ae=ne.view||p,Be=ne.projection||p,Ie=re.axesBounds,Ze=W(re.clipBounds),at;re.axes&&re.axes.lastCubeProps?at=re.axes.lastCubeProps.axis:at=[1,1,1],y[0]=2/ie.drawingBufferWidth,y[1]=2/ie.drawingBufferHeight,Z.bind(),fe.view=Ae,fe.projection=Be,fe.screenSize=y,fe.highlightId=re.highlightId,fe.highlightScale=re.highlightScale,fe.clipBounds=Ze,fe.pickGroup=re.pickId/255,fe.pixelRatio=j;for(var it=0;it<3;++it)if(ee[it]){fe.scale=re.projectScale[it],fe.opacity=re.projectOpacity[it];for(var et=F,lt=0;lt<16;++lt)et[lt]=0;for(var lt=0;lt<4;++lt)et[5*lt]=1;et[5*it]=0,at[it]<0?et[12+it]=Ie[0][it]:et[12+it]=Ie[1][it],s(et,be,et),fe.model=et;var Me=(it+1)%3,ge=(it+2)%3,ce=I(f),ze=I(P);ce[Me]=1,ze[ge]=1;var tt=E(Be,Ae,be,N(L,ce)),nt=E(Be,Ae,be,N(z,ze));if(Math.abs(tt[1])>Math.abs(nt[1])){var Qe=tt;tt=nt,nt=Qe,Qe=ce,ce=ze,ze=Qe;var Ct=Me;Me=ge,ge=Ct}tt[0]<0&&(ce[Me]=-1),nt[1]>0&&(ze[ge]=-1);for(var St=0,Ot=0,lt=0;lt<4;++lt)St+=Math.pow(be[4*Me+lt],2),Ot+=Math.pow(be[4*ge+lt],2);ce[Me]/=Math.sqrt(St),ze[ge]/=Math.sqrt(Ot),fe.axes[0]=ce,fe.axes[1]=ze,fe.fragClipBounds[0]=U(B,Ze[0],it,-1e8),fe.fragClipBounds[1]=U(B,Ze[1],it,1e8),re.vao.bind(),re.vao.draw(ie.TRIANGLES,re.vertexCount),re.lineWidth>0&&(ie.lineWidth(re.lineWidth*j),re.vao.draw(ie.LINES,re.lineVertexCount,re.vertexCount)),re.vao.unbind()}}var ue=[-1e8,-1e8,-1e8],se=[1e8,1e8,1e8],he=[ue,se];function G(Z,re,ne,j,ee,ie,fe){var be=ne.gl;if((ie===ne.projectHasAlpha||fe)&&Q(re,ne,j,ee),ie===ne.hasAlpha||fe){Z.bind();var Ae=Z.uniforms;Ae.model=j.model||p,Ae.view=j.view||p,Ae.projection=j.projection||p,y[0]=2/be.drawingBufferWidth,y[1]=2/be.drawingBufferHeight,Ae.screenSize=y,Ae.highlightId=ne.highlightId,Ae.highlightScale=ne.highlightScale,Ae.fragClipBounds=he,Ae.clipBounds=ne.axes.bounds,Ae.opacity=ne.opacity,Ae.pickGroup=ne.pickId/255,Ae.pixelRatio=ee,ne.vao.bind(),ne.vao.draw(be.TRIANGLES,ne.vertexCount),ne.lineWidth>0&&(be.lineWidth(ne.lineWidth*ee),ne.vao.draw(be.LINES,ne.lineVertexCount,ne.vertexCount)),ne.vao.unbind()}}u.draw=function(Z){var re=this.useOrtho?this.orthoShader:this.shader;G(re,this.projectShader,this,Z,this.pixelRatio,!1,!1)},u.drawTransparent=function(Z){var re=this.useOrtho?this.orthoShader:this.shader;G(re,this.projectShader,this,Z,this.pixelRatio,!0,!1)},u.drawPick=function(Z){var re=this.useOrtho?this.pickOrthoShader:this.pickPerspectiveShader;G(re,this.pickProjectShader,this,Z,1,!0,!0)},u.pick=function(Z){if(!Z||Z.id!==this.pickId)return null;var re=Z.value[2]+(Z.value[1]<<8)+(Z.value[0]<<16);if(re>=this.pointCount||re<0)return null;var ne=this.points[re],j=this._selectResult;j.index=re;for(var ee=0;ee<3;++ee)j.position[ee]=j.dataCoordinate[ee]=ne[ee];return j},u.highlight=function(Z){if(!Z)this.highlightId=[1,1,1,1];else{var re=Z.index,ne=re&255,j=re>>8&255,ee=re>>16&255;this.highlightId=[ne/255,j/255,ee/255,0]}};function $(Z,re,ne,j){var ee;w(Z)?re0){var _r=0,yt=ge,Fe=[0,0,0,1],Ke=[0,0,0,1],Ne=w(at)&&w(at[0]),Ee=w(lt)&&w(lt[0]);e:for(var j=0;j0?1-Ot[0][0]:xt<0?1+Ot[1][0]:1,It*=It>0?1-Ot[0][1]:It<0?1+Ot[1][1]:1;for(var Bt=[xt,It],Aa=Ct.cells||[],La=Ct.positions||[],nt=0;ntthis.buffer.length){a.free(this.buffer);for(var w=this.buffer=a.mallocUint8(n(_*l*4)),S=0;S<_*l*4;++S)w[S]=255}return T}}}),v.begin=function(){var T=this.gl,l=this.shape;T&&(this.fbo.bind(),T.clearColor(1,1,1,1),T.clear(T.COLOR_BUFFER_BIT|T.DEPTH_BUFFER_BIT))},v.end=function(){var T=this.gl;T&&(T.bindFramebuffer(T.FRAMEBUFFER,null),this._readTimeout||clearTimeout(this._readTimeout),this._readTimeout=setTimeout(this._readCallback,1))},v.query=function(T,l,_){if(!this.gl)return null;var w=this.fbo.shape.slice();T=T|0,l=l|0,typeof _!="number"&&(_=1);var S=Math.min(Math.max(T-_,0),w[0])|0,E=Math.min(Math.max(T+_,0),w[0])|0,m=Math.min(Math.max(l-_,0),w[1])|0,b=Math.min(Math.max(l+_,0),w[1])|0;if(E<=S||b<=m)return null;var d=[E-S,b-m],u=i(this.buffer,[d[0],d[1],4],[4,w[0]*4,1],4*(S+w[0]*m)),y=s(u.hi(d[0],d[1],1),_,_),f=y[0],P=y[1];if(f<0||Math.pow(this.radius,2)w)for(l=w;l<_;l++)this.gl.enableVertexAttribArray(l);else if(w>_)for(l=_;l=0){for(var O=B.type.charAt(B.type.length-1)|0,I=new Array(O),N=0;N=0;)U+=1;z[F]=U}var W=new Array(w.length);function Q(){m.program=n.program(b,m._vref,m._fref,L,z);for(var ue=0;ue=0){var u=b.charCodeAt(b.length-1)-48;if(u<2||u>4)throw new o("","Invalid data type for attribute "+m+": "+b);s(v,p,d[0],l,u,_,m)}else if(b.indexOf("mat")>=0){var u=b.charCodeAt(b.length-1)-48;if(u<2||u>4)throw new o("","Invalid data type for attribute "+m+": "+b);c(v,p,d,l,u,_,m)}else throw new o("","Unknown data type for attribute "+m+": "+b);break}}return _}},3327:function(e,t,r){"use strict";var o=r(216),a=r(8866);e.exports=s;function i(c){return function(){return c}}function n(c,h){for(var v=new Array(c),p=0;p4)throw new a("","Invalid data type");switch(U.charAt(0)){case"b":case"i":c["uniform"+W+"iv"](p[z],F);break;case"v":c["uniform"+W+"fv"](p[z],F);break;default:throw new a("","Unrecognized data type for vector "+name+": "+U)}}else if(U.indexOf("mat")===0&&U.length===4){if(W=U.charCodeAt(U.length-1)-48,W<2||W>4)throw new a("","Invalid uniform dimension type for matrix "+name+": "+U);c["uniformMatrix"+W+"fv"](p[z],!1,F);break}else throw new a("","Unknown uniform data type for "+name+": "+U)}}}}}function _(b,d){if(typeof d!="object")return[[b,d]];var u=[];for(var y in d){var f=d[y],P=b;parseInt(y)+""===y?P+="["+y+"]":P+="."+y,typeof f=="object"?u.push.apply(u,_(P,f)):u.push([P,f])}return u}function w(b){switch(b){case"bool":return!1;case"int":case"sampler2D":case"samplerCube":return 0;case"float":return 0;default:var d=b.indexOf("vec");if(0<=d&&d<=1&&b.length===4+d){var u=b.charCodeAt(b.length-1)-48;if(u<2||u>4)throw new a("","Invalid data type");return b.charAt(0)==="b"?n(u,!1):n(u,0)}else if(b.indexOf("mat")===0&&b.length===4){var u=b.charCodeAt(b.length-1)-48;if(u<2||u>4)throw new a("","Invalid uniform dimension type for matrix "+name+": "+b);return n(u*u,0)}else throw new a("","Unknown uniform data type for "+name+": "+b)}}function S(b,d,u){if(typeof u=="object"){var y=E(u);Object.defineProperty(b,d,{get:i(y),set:l(u),enumerable:!0,configurable:!1})}else p[u]?Object.defineProperty(b,d,{get:T(u),set:l(u),enumerable:!0,configurable:!1}):b[d]=w(v[u].type)}function E(b){var d;if(Array.isArray(b)){d=new Array(b.length);for(var u=0;u1){v[0]in c||(c[v[0]]=[]),c=c[v[0]];for(var p=1;p1)for(var _=0;_"u"?r(606):WeakMap,n=new i,s=0;function c(S,E,m,b,d,u,y){this.id=S,this.src=E,this.type=m,this.shader=b,this.count=u,this.programs=[],this.cache=y}c.prototype.dispose=function(){if(--this.count===0){for(var S=this.cache,E=S.gl,m=this.programs,b=0,d=m.length;b 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 color, position; +attribute vec2 uv; + +uniform float vectorScale, tubeScale; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 eyePosition, lightPosition; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + // Scale the vector magnitude to stay constant with + // model & view changes. + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * tubePosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + f_lightDirection = lightPosition - cameraCoordinate.xyz; + f_eyeDirection = eyePosition - cameraCoordinate.xyz; + f_normal = normalize((vec4(normal, 0.0) * inverseModel).xyz); + + // vec4 m_position = model * vec4(tubePosition, 1.0); + vec4 t_position = view * tubePosition; + gl_Position = projection * t_position; + + f_color = color; + f_data = tubePosition.xyz; + f_position = position.xyz; + f_uv = uv; +} +`]),i=o([`#extension GL_OES_standard_derivatives : enable + +precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float cookTorranceSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness, + float fresnel) { + + float VdotN = max(dot(viewDirection, surfaceNormal), 0.0); + float LdotN = max(dot(lightDirection, surfaceNormal), 0.0); + + //Half angle vector + vec3 H = normalize(lightDirection + viewDirection); + + //Geometric term + float NdotH = max(dot(surfaceNormal, H), 0.0); + float VdotH = max(dot(viewDirection, H), 0.000001); + float LdotH = max(dot(lightDirection, H), 0.000001); + float G1 = (2.0 * NdotH * VdotN) / VdotH; + float G2 = (2.0 * NdotH * LdotN) / LdotH; + float G = min(1.0, min(G1, G2)); + + //Distribution term + float D = beckmannDistribution(NdotH, roughness); + + //Fresnel term + float F = pow(1.0 - VdotN, fresnel); + + //Multiply terms and done + return G * F * D / max(3.14159265 * VdotN, 0.000001); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform sampler2D texture; + +varying vec3 f_normal, f_lightDirection, f_eyeDirection, f_data, f_position; +varying vec4 f_color; +varying vec2 f_uv; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + vec3 N = normalize(f_normal); + vec3 L = normalize(f_lightDirection); + vec3 V = normalize(f_eyeDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = min(1.0, max(0.0, cookTorranceSpecular(L, V, N, roughness, fresnel))); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + vec4 surfaceColor = f_color * texture2D(texture, f_uv); + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = litColor * opacity; +} +`]),n=o([`precision highp float; + +precision highp float; +#define GLSLIFY 1 + +vec3 getOrthogonalVector(vec3 v) { + // Return up-vector for only-z vector. + // Return ax + by + cz = 0, a point that lies on the plane that has v as a normal and that isn't (0,0,0). + // From the above if-statement we have ||a|| > 0 U ||b|| > 0. + // Assign z = 0, x = -b, y = a: + // a*-b + b*a + c*0 = -ba + ba + 0 = 0 + if (v.x*v.x > v.z*v.z || v.y*v.y > v.z*v.z) { + return normalize(vec3(-v.y, v.x, 0.0)); + } else { + return normalize(vec3(0.0, v.z, -v.y)); + } +} + +// Calculate the tube vertex and normal at the given index. +// +// The returned vertex is for a tube ring with its center at origin, radius of length(d), pointing in the direction of d. +// +// Each tube segment is made up of a ring of vertices. +// These vertices are used to make up the triangles of the tube by connecting them together in the vertex array. +// The indexes of tube segments run from 0 to 8. +// +vec3 getTubePosition(vec3 d, float index, out vec3 normal) { + float segmentCount = 8.0; + + float angle = 2.0 * 3.14159 * (index / segmentCount); + + vec3 u = getOrthogonalVector(d); + vec3 v = normalize(cross(u, d)); + + vec3 x = u * cos(angle) * length(d); + vec3 y = v * sin(angle) * length(d); + vec3 v3 = x + y; + + normal = normalize(v3); + + return v3; +} + +attribute vec4 vector; +attribute vec4 position; +attribute vec4 id; + +uniform mat4 model, view, projection; +uniform float tubeScale; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + vec3 normal; + vec3 XYZ = getTubePosition(mat3(model) * (tubeScale * vector.w * normalize(vector.xyz)), position.w, normal); + vec4 tubePosition = model * vec4(position.xyz, 1.0) + vec4(XYZ, 0.0); + + gl_Position = projection * (view * tubePosition); + f_id = id; + f_position = position.xyz; +} +`]),s=o([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying vec3 f_position; +varying vec4 f_id; + +void main() { + if (outOfRange(clipBounds[0], clipBounds[1], f_position)) discard; + + gl_FragColor = vec4(pickId, f_id.xyz); +}`]);t.meshShader={vertex:a,fragment:i,attributes:[{name:"position",type:"vec4"},{name:"color",type:"vec4"},{name:"uv",type:"vec2"},{name:"vector",type:"vec4"}]},t.pickShader={vertex:n,fragment:s,attributes:[{name:"position",type:"vec4"},{name:"id",type:"vec4"},{name:"vector",type:"vec4"}]}},7815:function(e,t,r){"use strict";var o=r(2931),a=r(9970),i=["xyz","xzy","yxz","yzx","zxy","zyx"],n=function(S,E,m,b){for(var d=S.points,u=S.velocities,y=S.divergences,f=[],P=[],L=[],z=[],F=[],B=[],O=0,I=0,N=a.create(),U=a.create(),W=8,Q=0;Q0)for(var G=0;GE)return b-1}return b},h=function(S,E,m){return Sm?m:S},v=function(S,E,m){var b=E.vectors,d=E.meshgrid,u=S[0],y=S[1],f=S[2],P=d[0].length,L=d[1].length,z=d[2].length,F=c(d[0],u),B=c(d[1],y),O=c(d[2],f),I=F+1,N=B+1,U=O+1;if(F=h(F,0,P-1),I=h(I,0,P-1),B=h(B,0,L-1),N=h(N,0,L-1),O=h(O,0,z-1),U=h(U,0,z-1),F<0||B<0||O<0||I>P-1||N>L-1||U>z-1)return o.create();var W=d[0][F],Q=d[0][I],ue=d[1][B],se=d[1][N],he=d[2][O],G=d[2][U],$=(u-W)/(Q-W),J=(y-ue)/(se-ue),Z=(f-he)/(G-he);isFinite($)||($=.5),isFinite(J)||(J=.5),isFinite(Z)||(Z=.5);var re,ne,j,ee,ie,fe;switch(m.reversedX&&(F=P-1-F,I=P-1-I),m.reversedY&&(B=L-1-B,N=L-1-N),m.reversedZ&&(O=z-1-O,U=z-1-U),m.filled){case 5:ie=O,fe=U,j=B*z,ee=N*z,re=F*z*L,ne=I*z*L;break;case 4:ie=O,fe=U,re=F*z,ne=I*z,j=B*z*P,ee=N*z*P;break;case 3:j=B,ee=N,ie=O*L,fe=U*L,re=F*L*z,ne=I*L*z;break;case 2:j=B,ee=N,re=F*L,ne=I*L,ie=O*L*P,fe=U*L*P;break;case 1:re=F,ne=I,ie=O*P,fe=U*P,j=B*P*z,ee=N*P*z;break;default:re=F,ne=I,j=B*P,ee=N*P,ie=O*P*L,fe=U*P*L;break}var be=b[re+j+ie],Ae=b[re+j+fe],Be=b[re+ee+ie],Ie=b[re+ee+fe],Ze=b[ne+j+ie],at=b[ne+j+fe],it=b[ne+ee+ie],et=b[ne+ee+fe],lt=o.create(),Me=o.create(),ge=o.create(),ce=o.create();o.lerp(lt,be,Ze,$),o.lerp(Me,Ae,at,$),o.lerp(ge,Be,it,$),o.lerp(ce,Ie,et,$);var ze=o.create(),tt=o.create();o.lerp(ze,lt,ge,J),o.lerp(tt,Me,ce,J);var nt=o.create();return o.lerp(nt,ze,tt,Z),nt},p=function(S,E){var m=E[0],b=E[1],d=E[2];return S[0]=m<0?-m:m,S[1]=b<0?-b:b,S[2]=d<0?-d:d,S},T=function(S){var E=1/0;S.sort(function(u,y){return u-y});for(var m=S.length,b=1;bI||etN||ltU)},Q=o.distance(E[0],E[1]),ue=10*Q/b,se=ue*ue,he=1,G=0,$=m.length;$>1&&(he=l(m));for(var J=0;J<$;J++){var Z=o.create();o.copy(Z,m[J]);var re=[Z],ne=[],j=P(Z),ee=Z;ne.push(j);var ie=[],fe=L(Z,j),be=o.length(fe);isFinite(be)&&be>G&&(G=be),ie.push(be),z.push({points:re,velocities:ne,divergences:ie});for(var Ae=0;Aese&&o.scale(Be,Be,ue/Math.sqrt(Ie)),o.add(Be,Be,Z),j=P(Be),o.squaredDistance(ee,Be)-se>-1e-4*se){re.push(Be),ee=Be,ne.push(j);var fe=L(Be,j),be=o.length(fe);isFinite(be)&&be>G&&(G=be),ie.push(be)}Z=Be}}var Ze=s(z,S.colormap,G,he);return u?Ze.tubeScale=u:(G===0&&(G=1),Ze.tubeScale=d*.5*he/G),Ze};var _=r(6740),w=r(6405).createMesh;e.exports.createTubeMesh=function(S,E){return w(S,E,{shaders:_,traceType:"streamtube"})}},990:function(e,t,r){var o=r(9405),a=r(3236),i=a([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute vec3 f; +attribute vec3 normal; + +uniform vec3 objectOffset; +uniform mat4 model, view, projection, inverseModel; +uniform vec3 lightPosition, eyePosition; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 localCoordinate = vec3(uv.zw, f.x); + worldCoordinate = objectOffset + localCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(localCoordinate, 1.0); + vec4 clipPosition = projection * (view * worldPosition); + gl_Position = clipPosition; + kill = f.y; + value = f.z; + planeCoordinate = uv.xy; + + vColor = texture2D(colormap, vec2(value, value)); + + //Lighting geometry parameters + vec4 cameraCoordinate = view * worldPosition; + cameraCoordinate.xyz /= cameraCoordinate.w; + lightDirection = lightPosition - cameraCoordinate.xyz; + eyeDirection = eyePosition - cameraCoordinate.xyz; + surfaceNormal = normalize((vec4(normal,0) * inverseModel).xyz); +} +`]),n=a([`precision highp float; +#define GLSLIFY 1 + +float beckmannDistribution(float x, float roughness) { + float NdotH = max(x, 0.0001); + float cos2Alpha = NdotH * NdotH; + float tan2Alpha = (cos2Alpha - 1.0) / cos2Alpha; + float roughness2 = roughness * roughness; + float denom = 3.141592653589793 * roughness2 * cos2Alpha * cos2Alpha; + return exp(tan2Alpha / roughness2) / denom; +} + +float beckmannSpecular( + vec3 lightDirection, + vec3 viewDirection, + vec3 surfaceNormal, + float roughness) { + return beckmannDistribution(dot(surfaceNormal, normalize(lightDirection + viewDirection)), roughness); +} + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec3 lowerBound, upperBound; +uniform float contourTint; +uniform vec4 contourColor; +uniform sampler2D colormap; +uniform vec3 clipBounds[2]; +uniform float roughness, fresnel, kambient, kdiffuse, kspecular, opacity; +uniform float vertexColor; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + if ( + kill > 0.0 || + vColor.a == 0.0 || + outOfRange(clipBounds[0], clipBounds[1], worldCoordinate) + ) discard; + + vec3 N = normalize(surfaceNormal); + vec3 V = normalize(eyeDirection); + vec3 L = normalize(lightDirection); + + if(gl_FrontFacing) { + N = -N; + } + + float specular = max(beckmannSpecular(L, V, N, roughness), 0.); + float diffuse = min(kambient + kdiffuse * max(dot(N, L), 0.0), 1.0); + + //decide how to interpolate color \u2014 in vertex or in fragment + vec4 surfaceColor = + step(vertexColor, .5) * texture2D(colormap, vec2(value, value)) + + step(.5, vertexColor) * vColor; + + vec4 litColor = surfaceColor.a * vec4(diffuse * surfaceColor.rgb + kspecular * vec3(1,1,1) * specular, 1.0); + + gl_FragColor = mix(litColor, contourColor, contourTint) * opacity; +} +`]),s=a([`precision highp float; +#define GLSLIFY 1 + +attribute vec4 uv; +attribute float f; + +uniform vec3 objectOffset; +uniform mat3 permutation; +uniform mat4 model, view, projection; +uniform float height, zOffset; +uniform sampler2D colormap; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 lightDirection, eyeDirection, surfaceNormal; +varying vec4 vColor; + +void main() { + vec3 dataCoordinate = permutation * vec3(uv.xy, height); + worldCoordinate = objectOffset + dataCoordinate; + mat4 objectOffsetTranslation = mat4(1.0) + mat4(vec4(0), vec4(0), vec4(0), vec4(objectOffset, 0)); + vec4 worldPosition = (model * objectOffsetTranslation) * vec4(dataCoordinate, 1.0); + + vec4 clipPosition = projection * (view * worldPosition); + clipPosition.z += zOffset; + + gl_Position = clipPosition; + value = f + objectOffset.z; + kill = -1.0; + planeCoordinate = uv.zw; + + vColor = texture2D(colormap, vec2(value, value)); + + //Don't do lighting for contours + surfaceNormal = vec3(1,0,0); + eyeDirection = vec3(0,1,0); + lightDirection = vec3(0,0,1); +} +`]),c=a([`precision highp float; +#define GLSLIFY 1 + +bool outOfRange(float a, float b, float p) { + return ((p > max(a, b)) || + (p < min(a, b))); +} + +bool outOfRange(vec2 a, vec2 b, vec2 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y)); +} + +bool outOfRange(vec3 a, vec3 b, vec3 p) { + return (outOfRange(a.x, b.x, p.x) || + outOfRange(a.y, b.y, p.y) || + outOfRange(a.z, b.z, p.z)); +} + +bool outOfRange(vec4 a, vec4 b, vec4 p) { + return outOfRange(a.xyz, b.xyz, p.xyz); +} + +uniform vec2 shape; +uniform vec3 clipBounds[2]; +uniform float pickId; + +varying float value, kill; +varying vec3 worldCoordinate; +varying vec2 planeCoordinate; +varying vec3 surfaceNormal; + +vec2 splitFloat(float v) { + float vh = 255.0 * v; + float upper = floor(vh); + float lower = fract(vh); + return vec2(upper / 255.0, floor(lower * 16.0) / 16.0); +} + +void main() { + if ((kill > 0.0) || + (outOfRange(clipBounds[0], clipBounds[1], worldCoordinate))) discard; + + vec2 ux = splitFloat(planeCoordinate.x / shape.x); + vec2 uy = splitFloat(planeCoordinate.y / shape.y); + gl_FragColor = vec4(pickId, ux.x, uy.x, ux.y + (uy.y/16.0)); +} +`]);t.createShader=function(h){var v=o(h,i,n,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},t.createPickShader=function(h){var v=o(h,i,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"vec3"},{name:"normal",type:"vec3"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v.attributes.normal.location=2,v},t.createContourShader=function(h){var v=o(h,s,n,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v},t.createPickContourShader=function(h){var v=o(h,s,c,null,[{name:"uv",type:"vec4"},{name:"f",type:"float"}]);return v.attributes.uv.location=0,v.attributes.f.location=1,v}},9499:function(e,t,r){"use strict";e.exports=re;var o=r(8828),a=r(2762),i=r(8116),n=r(7766),s=r(1888),c=r(6729),h=r(5298),v=r(9994),p=r(9618),T=r(3711),l=r(6760),_=r(7608),w=r(2478),S=r(6199),E=r(990),m=E.createShader,b=E.createContourShader,d=E.createPickShader,u=E.createPickContourShader,y=4*10,f=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],P=[[0,0],[0,1],[1,0],[1,1],[1,0],[0,1]],L=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]];(function(){for(var ne=0;ne<3;++ne){var j=L[ne],ee=(ne+1)%3,ie=(ne+2)%3;j[ee+0]=1,j[ie+3]=1,j[ne+6]=1}})();function z(ne,j,ee,ie,fe){this.position=ne,this.index=j,this.uv=ee,this.level=ie,this.dataCoordinate=fe}var F=256;function B(ne,j,ee,ie,fe,be,Ae,Be,Ie,Ze,at,it,et,lt,Me){this.gl=ne,this.shape=j,this.bounds=ee,this.objectOffset=Me,this.intensityBounds=[],this._shader=ie,this._pickShader=fe,this._coordinateBuffer=be,this._vao=Ae,this._colorMap=Be,this._contourShader=Ie,this._contourPickShader=Ze,this._contourBuffer=at,this._contourVAO=it,this._contourOffsets=[[],[],[]],this._contourCounts=[[],[],[]],this._vertexCount=0,this._pickResult=new z([0,0,0],[0,0],[0,0],[0,0,0],[0,0,0]),this._dynamicBuffer=et,this._dynamicVAO=lt,this._dynamicOffsets=[0,0,0],this._dynamicCounts=[0,0,0],this.contourWidth=[1,1,1],this.contourLevels=[[1],[1],[1]],this.contourTint=[0,0,0],this.contourColor=[[.5,.5,.5,1],[.5,.5,.5,1],[.5,.5,.5,1]],this.showContour=!0,this.showSurface=!0,this.enableHighlight=[!0,!0,!0],this.highlightColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.highlightTint=[1,1,1],this.highlightLevel=[-1,-1,-1],this.enableDynamic=[!0,!0,!0],this.dynamicLevel=[NaN,NaN,NaN],this.dynamicColor=[[0,0,0,1],[0,0,0,1],[0,0,0,1]],this.dynamicTint=[1,1,1],this.dynamicWidth=[1,1,1],this.axesBounds=[[1/0,1/0,1/0],[-1/0,-1/0,-1/0]],this.surfaceProject=[!1,!1,!1],this.contourProject=[[!1,!1,!1],[!1,!1,!1],[!1,!1,!1]],this.colorBounds=[!1,!1],this._field=[p(s.mallocFloat(1024),[0,0]),p(s.mallocFloat(1024),[0,0]),p(s.mallocFloat(1024),[0,0])],this.pickId=1,this.clipBounds=[[-1/0,-1/0,-1/0],[1/0,1/0,1/0]],this.snapToData=!1,this.pixelRatio=1,this.opacity=1,this.lightPosition=[10,1e4,0],this.ambientLight=.8,this.diffuseLight=.8,this.specularLight=2,this.roughness=.5,this.fresnel=1.5,this.vertexColor=0,this.dirty=!0}var O=B.prototype;O.genColormap=function(ne,j){var ee=!1,ie=v([c({colormap:ne,nshades:F,format:"rgba"}).map(function(fe,be){var Ae=j?I(be/255,j):fe[3];return Ae<1&&(ee=!0),[fe[0],fe[1],fe[2],255*Ae]})]);return h.divseq(ie,255),this.hasAlphaScale=ee,ie},O.isTransparent=function(){return this.opacity<1||this.hasAlphaScale},O.isOpaque=function(){return!this.isTransparent()},O.pickSlots=1,O.setPickBase=function(ne){this.pickId=ne};function I(ne,j){if(!j||!j.length)return 1;for(var ee=0;eene&&ee>0){var ie=(j[ee][0]-ne)/(j[ee][0]-j[ee-1][0]);return j[ee][1]*(1-ie)+ie*j[ee-1][1]}}return 1}var N=[0,0,0],U={showSurface:!1,showContour:!1,projections:[f.slice(),f.slice(),f.slice()],clipBounds:[[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]],[[0,0,0],[0,0,0]]]};function W(ne,j){var ee,ie,fe,be=j.axes&&j.axes.lastCubeProps.axis||N,Ae=j.showSurface,Be=j.showContour;for(ee=0;ee<3;++ee)for(Ae=Ae||j.surfaceProject[ee],ie=0;ie<3;++ie)Be=Be||j.contourProject[ee][ie];for(ee=0;ee<3;++ee){var Ie=U.projections[ee];for(ie=0;ie<16;++ie)Ie[ie]=0;for(ie=0;ie<4;++ie)Ie[5*ie]=1;Ie[5*ee]=0,Ie[12+ee]=j.axesBounds[+(be[ee]>0)][ee],l(Ie,ne.model,Ie);var Ze=U.clipBounds[ee];for(fe=0;fe<2;++fe)for(ie=0;ie<3;++ie)Ze[fe][ie]=ne.clipBounds[fe][ie];Ze[0][ee]=-1e8,Ze[1][ee]=1e8}return U.showSurface=Ae,U.showContour=Be,U}var Q={model:f,view:f,projection:f,inverseModel:f.slice(),lowerBound:[0,0,0],upperBound:[0,0,0],colorMap:0,clipBounds:[[0,0,0],[0,0,0]],height:0,contourTint:0,contourColor:[0,0,0,1],permutation:[1,0,0,0,1,0,0,0,1],zOffset:-1e-4,objectOffset:[0,0,0],kambient:1,kdiffuse:1,kspecular:1,lightPosition:[1e3,1e3,1e3],eyePosition:[0,0,0],roughness:1,fresnel:1,opacity:1,vertexColor:0},ue=f.slice(),se=[1,0,0,0,1,0,0,0,1];function he(ne,j){ne=ne||{};var ee=this.gl;ee.disable(ee.CULL_FACE),this._colorMap.bind(0);var ie=Q;ie.model=ne.model||f,ie.view=ne.view||f,ie.projection=ne.projection||f,ie.lowerBound=[this.bounds[0][0],this.bounds[0][1],this.colorBounds[0]||this.bounds[0][2]],ie.upperBound=[this.bounds[1][0],this.bounds[1][1],this.colorBounds[1]||this.bounds[1][2]],ie.objectOffset=this.objectOffset,ie.contourColor=this.contourColor[0],ie.inverseModel=_(ie.inverseModel,ie.model);for(var fe=0;fe<2;++fe)for(var be=ie.clipBounds[fe],Ae=0;Ae<3;++Ae)be[Ae]=Math.min(Math.max(this.clipBounds[fe][Ae],-1e8),1e8);ie.kambient=this.ambientLight,ie.kdiffuse=this.diffuseLight,ie.kspecular=this.specularLight,ie.roughness=this.roughness,ie.fresnel=this.fresnel,ie.opacity=this.opacity,ie.height=0,ie.permutation=se,ie.vertexColor=this.vertexColor;var Be=ue;for(l(Be,ie.view,ie.model),l(Be,ie.projection,Be),_(Be,Be),fe=0;fe<3;++fe)ie.eyePosition[fe]=Be[12+fe]/Be[15];var Ie=Be[15];for(fe=0;fe<3;++fe)Ie+=this.lightPosition[fe]*Be[4*fe+3];for(fe=0;fe<3;++fe){var Ze=Be[12+fe];for(Ae=0;Ae<3;++Ae)Ze+=Be[4*Ae+fe]*this.lightPosition[Ae];ie.lightPosition[fe]=Ze/Ie}var at=W(ie,this);if(at.showSurface){for(this._shader.bind(),this._shader.uniforms=ie,this._vao.bind(),this.showSurface&&this._vertexCount&&this._vao.draw(ee.TRIANGLES,this._vertexCount),fe=0;fe<3;++fe)!this.surfaceProject[fe]||!this.vertexCount||(this._shader.uniforms.model=at.projections[fe],this._shader.uniforms.clipBounds=at.clipBounds[fe],this._vao.draw(ee.TRIANGLES,this._vertexCount));this._vao.unbind()}if(at.showContour){var it=this._contourShader;ie.kambient=1,ie.kdiffuse=0,ie.kspecular=0,ie.opacity=1,it.bind(),it.uniforms=ie;var et=this._contourVAO;for(et.bind(),fe=0;fe<3;++fe)for(it.uniforms.permutation=L[fe],ee.lineWidth(this.contourWidth[fe]*this.pixelRatio),Ae=0;Ae>4)/16)/255,fe=Math.floor(ie),be=ie-fe,Ae=j[1]*(ne.value[1]+(ne.value[2]&15)/16)/255,Be=Math.floor(Ae),Ie=Ae-Be;fe+=1,Be+=1;var Ze=ee.position;Ze[0]=Ze[1]=Ze[2]=0;for(var at=0;at<2;++at)for(var it=at?be:1-be,et=0;et<2;++et)for(var lt=et?Ie:1-Ie,Me=fe+at,ge=Be+et,ce=it*lt,ze=0;ze<3;++ze)Ze[ze]+=this._field[ze].get(Me,ge)*ce;for(var tt=this._pickResult.level,nt=0;nt<3;++nt)if(tt[nt]=w.le(this.contourLevels[nt],Ze[nt]),tt[nt]<0)this.contourLevels[nt].length>0&&(tt[nt]=0);else if(tt[nt]Math.abs(Ct-Ze[nt])&&(tt[nt]+=1)}for(ee.index[0]=be<.5?fe:fe+1,ee.index[1]=Ie<.5?Be:Be+1,ee.uv[0]=ie/j[0],ee.uv[1]=Ae/j[1],ze=0;ze<3;++ze)ee.dataCoordinate[ze]=this._field[ze].get(ee.index[0],ee.index[1]);return ee},O.padField=function(ne,j){var ee=j.shape.slice(),ie=ne.shape.slice();h.assign(ne.lo(1,1).hi(ee[0],ee[1]),j),h.assign(ne.lo(1).hi(ee[0],1),j.hi(ee[0],1)),h.assign(ne.lo(1,ie[1]-1).hi(ee[0],1),j.lo(0,ee[1]-1).hi(ee[0],1)),h.assign(ne.lo(0,1).hi(1,ee[1]),j.hi(1)),h.assign(ne.lo(ie[0]-1,1).hi(1,ee[1]),j.lo(ee[0]-1)),ne.set(0,0,j.get(0,0)),ne.set(0,ie[1]-1,j.get(0,ee[1]-1)),ne.set(ie[0]-1,0,j.get(ee[0]-1,0)),ne.set(ie[0]-1,ie[1]-1,j.get(ee[0]-1,ee[1]-1))};function $(ne,j){return Array.isArray(ne)?[j(ne[0]),j(ne[1]),j(ne[2])]:[j(ne),j(ne),j(ne)]}function J(ne){return Array.isArray(ne)?ne.length===3?[ne[0],ne[1],ne[2],1]:[ne[0],ne[1],ne[2],ne[3]]:[0,0,0,1]}function Z(ne){if(Array.isArray(ne)){if(Array.isArray(ne))return[J(ne[0]),J(ne[1]),J(ne[2])];var j=J(ne);return[j.slice(),j.slice(),j.slice()]}}O.update=function(ne){ne=ne||{},this.objectOffset=ne.objectOffset||this.objectOffset,this.dirty=!0,"contourWidth"in ne&&(this.contourWidth=$(ne.contourWidth,Number)),"showContour"in ne&&(this.showContour=$(ne.showContour,Boolean)),"showSurface"in ne&&(this.showSurface=!!ne.showSurface),"contourTint"in ne&&(this.contourTint=$(ne.contourTint,Boolean)),"contourColor"in ne&&(this.contourColor=Z(ne.contourColor)),"contourProject"in ne&&(this.contourProject=$(ne.contourProject,function($a){return $($a,Boolean)})),"surfaceProject"in ne&&(this.surfaceProject=ne.surfaceProject),"dynamicColor"in ne&&(this.dynamicColor=Z(ne.dynamicColor)),"dynamicTint"in ne&&(this.dynamicTint=$(ne.dynamicTint,Number)),"dynamicWidth"in ne&&(this.dynamicWidth=$(ne.dynamicWidth,Number)),"opacity"in ne&&(this.opacity=ne.opacity),"opacityscale"in ne&&(this.opacityscale=ne.opacityscale),"colorBounds"in ne&&(this.colorBounds=ne.colorBounds),"vertexColor"in ne&&(this.vertexColor=ne.vertexColor?1:0),"colormap"in ne&&this._colorMap.setPixels(this.genColormap(ne.colormap,this.opacityscale));var j=ne.field||ne.coords&&ne.coords[2]||null,ee=!1;if(j||(this._field[2].shape[0]||this._field[2].shape[2]?j=this._field[2].lo(1,1).hi(this._field[2].shape[0]-2,this._field[2].shape[1]-2):j=this._field[2].hi(0,0)),"field"in ne||"coords"in ne){var ie=(j.shape[0]+2)*(j.shape[1]+2);ie>this._field[2].data.length&&(s.freeFloat(this._field[2].data),this._field[2].data=s.mallocFloat(o.nextPow2(ie))),this._field[2]=p(this._field[2].data,[j.shape[0]+2,j.shape[1]+2]),this.padField(this._field[2],j),this.shape=j.shape.slice();for(var fe=this.shape,be=0;be<2;++be)this._field[2].size>this._field[be].data.length&&(s.freeFloat(this._field[be].data),this._field[be].data=s.mallocFloat(this._field[2].size)),this._field[be]=p(this._field[be].data,[fe[0]+2,fe[1]+2]);if(ne.coords){var Ae=ne.coords;if(!Array.isArray(Ae)||Ae.length!==3)throw new Error("gl-surface: invalid coordinates for x/y");for(be=0;be<2;++be){var Be=Ae[be];for(et=0;et<2;++et)if(Be.shape[et]!==fe[et])throw new Error("gl-surface: coords have incorrect shape");this.padField(this._field[be],Be)}}else if(ne.ticks){var Ie=ne.ticks;if(!Array.isArray(Ie)||Ie.length!==2)throw new Error("gl-surface: invalid ticks");for(be=0;be<2;++be){var Ze=Ie[be];if((Array.isArray(Ze)||Ze.length)&&(Ze=p(Ze)),Ze.shape[0]!==fe[be])throw new Error("gl-surface: invalid tick length");var at=p(Ze.data,fe);at.stride[be]=Ze.stride[0],at.stride[be^1]=0,this.padField(this._field[be],at)}}else{for(be=0;be<2;++be){var it=[0,0];it[be]=1,this._field[be]=p(this._field[be].data,[fe[0]+2,fe[1]+2],it,0)}this._field[0].set(0,0,0);for(var et=0;et0){for(var qa=0;qa<5;++qa)Gt.pop();Ne-=1}continue e}}}Aa.push(Ne)}this._contourOffsets[Kt]=sa,this._contourCounts[Kt]=Aa}var ya=s.mallocFloat(Gt.length);for(be=0;bez||P<0||P>z)throw new Error("gl-texture2d: Invalid texture size");return y._shape=[f,P],y.bind(),L.texImage2D(L.TEXTURE_2D,0,y.format,f,P,0,y.format,y.type,null),y._mipLevels=[0],y}function l(y,f,P,L,z,F){this.gl=y,this.handle=f,this.format=z,this.type=F,this._shape=[P,L],this._mipLevels=[0],this._magFilter=y.NEAREST,this._minFilter=y.NEAREST,this._wrapS=y.CLAMP_TO_EDGE,this._wrapT=y.CLAMP_TO_EDGE,this._anisoSamples=1;var B=this,O=[this._wrapS,this._wrapT];Object.defineProperties(O,[{get:function(){return B._wrapS},set:function(N){return B.wrapS=N}},{get:function(){return B._wrapT},set:function(N){return B.wrapT=N}}]),this._wrapVector=O;var I=[this._shape[0],this._shape[1]];Object.defineProperties(I,[{get:function(){return B._shape[0]},set:function(N){return B.width=N}},{get:function(){return B._shape[1]},set:function(N){return B.height=N}}]),this._shapeVector=I}var _=l.prototype;Object.defineProperties(_,{minFilter:{get:function(){return this._minFilter},set:function(y){this.bind();var f=this.gl;if(this.type===f.FLOAT&&n.indexOf(y)>=0&&(f.getExtension("OES_texture_float_linear")||(y=f.NEAREST)),s.indexOf(y)<0)throw new Error("gl-texture2d: Unknown filter mode "+y);return f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MIN_FILTER,y),this._minFilter=y}},magFilter:{get:function(){return this._magFilter},set:function(y){this.bind();var f=this.gl;if(this.type===f.FLOAT&&n.indexOf(y)>=0&&(f.getExtension("OES_texture_float_linear")||(y=f.NEAREST)),s.indexOf(y)<0)throw new Error("gl-texture2d: Unknown filter mode "+y);return f.texParameteri(f.TEXTURE_2D,f.TEXTURE_MAG_FILTER,y),this._magFilter=y}},mipSamples:{get:function(){return this._anisoSamples},set:function(y){var f=this._anisoSamples;if(this._anisoSamples=Math.max(y,1)|0,f!==this._anisoSamples){var P=this.gl.getExtension("EXT_texture_filter_anisotropic");P&&this.gl.texParameterf(this.gl.TEXTURE_2D,P.TEXTURE_MAX_ANISOTROPY_EXT,this._anisoSamples)}return this._anisoSamples}},wrapS:{get:function(){return this._wrapS},set:function(y){if(this.bind(),c.indexOf(y)<0)throw new Error("gl-texture2d: Unknown wrap mode "+y);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,y),this._wrapS=y}},wrapT:{get:function(){return this._wrapT},set:function(y){if(this.bind(),c.indexOf(y)<0)throw new Error("gl-texture2d: Unknown wrap mode "+y);return this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,y),this._wrapT=y}},wrap:{get:function(){return this._wrapVector},set:function(y){if(Array.isArray(y)||(y=[y,y]),y.length!==2)throw new Error("gl-texture2d: Must specify wrap mode for rows and columns");for(var f=0;f<2;++f)if(c.indexOf(y[f])<0)throw new Error("gl-texture2d: Unknown wrap mode "+y);this._wrapS=y[0],this._wrapT=y[1];var P=this.gl;return this.bind(),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_S,this._wrapS),P.texParameteri(P.TEXTURE_2D,P.TEXTURE_WRAP_T,this._wrapT),y}},shape:{get:function(){return this._shapeVector},set:function(y){if(!Array.isArray(y))y=[y|0,y|0];else if(y.length!==2)throw new Error("gl-texture2d: Invalid texture shape");return T(this,y[0]|0,y[1]|0),[y[0]|0,y[1]|0]}},width:{get:function(){return this._shape[0]},set:function(y){return y=y|0,T(this,y,this._shape[1]),y}},height:{get:function(){return this._shape[1]},set:function(y){return y=y|0,T(this,this._shape[0],y),y}}}),_.bind=function(y){var f=this.gl;return y!==void 0&&f.activeTexture(f.TEXTURE0+(y|0)),f.bindTexture(f.TEXTURE_2D,this.handle),y!==void 0?y|0:f.getParameter(f.ACTIVE_TEXTURE)-f.TEXTURE0},_.dispose=function(){this.gl.deleteTexture(this.handle)},_.generateMipmap=function(){this.bind(),this.gl.generateMipmap(this.gl.TEXTURE_2D);for(var y=Math.min(this._shape[0],this._shape[1]),f=0;y>0;++f,y>>>=1)this._mipLevels.indexOf(f)<0&&this._mipLevels.push(f)},_.setPixels=function(y,f,P,L){var z=this.gl;this.bind(),Array.isArray(f)?(L=P,P=f[1]|0,f=f[0]|0):(f=f||0,P=P||0),L=L||0;var F=v(y)?y:y.raw;if(F){var B=this._mipLevels.indexOf(L)<0;B?(z.texImage2D(z.TEXTURE_2D,0,this.format,this.format,this.type,F),this._mipLevels.push(L)):z.texSubImage2D(z.TEXTURE_2D,L,f,P,this.format,this.type,F)}else if(y.shape&&y.stride&&y.data){if(y.shape.length<2||f+y.shape[1]>this._shape[1]>>>L||P+y.shape[0]>this._shape[0]>>>L||f<0||P<0)throw new Error("gl-texture2d: Texture dimensions are out of bounds");S(z,f,P,L,this.format,this.type,this._mipLevels,y)}else throw new Error("gl-texture2d: Unsupported data type")};function w(y,f){return y.length===3?f[2]===1&&f[1]===y[0]*y[2]&&f[0]===y[2]:f[0]===1&&f[1]===y[0]}function S(y,f,P,L,z,F,B,O){var I=O.dtype,N=O.shape.slice();if(N.length<2||N.length>3)throw new Error("gl-texture2d: Invalid ndarray, must be 2d or 3d");var U=0,W=0,Q=w(N,O.stride.slice());I==="float32"?U=y.FLOAT:I==="float64"?(U=y.FLOAT,Q=!1,I="float32"):I==="uint8"?U=y.UNSIGNED_BYTE:(U=y.UNSIGNED_BYTE,Q=!1,I="uint8");var ue=1;if(N.length===2)W=y.LUMINANCE,N=[N[0],N[1],1],O=o(O.data,N,[O.stride[0],O.stride[1],1],O.offset);else if(N.length===3){if(N[2]===1)W=y.ALPHA;else if(N[2]===2)W=y.LUMINANCE_ALPHA;else if(N[2]===3)W=y.RGB;else if(N[2]===4)W=y.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");ue=N[2]}else throw new Error("gl-texture2d: Invalid shape for texture");if((W===y.LUMINANCE||W===y.ALPHA)&&(z===y.LUMINANCE||z===y.ALPHA)&&(W=z),W!==z)throw new Error("gl-texture2d: Incompatible texture format for setPixels");var se=O.size,he=B.indexOf(L)<0;if(he&&B.push(L),U===F&&Q)O.offset===0&&O.data.length===se?he?y.texImage2D(y.TEXTURE_2D,L,z,N[0],N[1],0,z,F,O.data):y.texSubImage2D(y.TEXTURE_2D,L,f,P,N[0],N[1],z,F,O.data):he?y.texImage2D(y.TEXTURE_2D,L,z,N[0],N[1],0,z,F,O.data.subarray(O.offset,O.offset+se)):y.texSubImage2D(y.TEXTURE_2D,L,f,P,N[0],N[1],z,F,O.data.subarray(O.offset,O.offset+se));else{var G;F===y.FLOAT?G=i.mallocFloat32(se):G=i.mallocUint8(se);var $=o(G,N,[N[2],N[2]*N[0],1]);U===y.FLOAT&&F===y.UNSIGNED_BYTE?p($,O):a.assign($,O),he?y.texImage2D(y.TEXTURE_2D,L,z,N[0],N[1],0,z,F,G.subarray(0,se)):y.texSubImage2D(y.TEXTURE_2D,L,f,P,N[0],N[1],z,F,G.subarray(0,se)),F===y.FLOAT?i.freeFloat32(G):i.freeUint8(G)}}function E(y){var f=y.createTexture();return y.bindTexture(y.TEXTURE_2D,f),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MIN_FILTER,y.NEAREST),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_MAG_FILTER,y.NEAREST),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_S,y.CLAMP_TO_EDGE),y.texParameteri(y.TEXTURE_2D,y.TEXTURE_WRAP_T,y.CLAMP_TO_EDGE),f}function m(y,f,P,L,z){var F=y.getParameter(y.MAX_TEXTURE_SIZE);if(f<0||f>F||P<0||P>F)throw new Error("gl-texture2d: Invalid texture shape");if(z===y.FLOAT&&!y.getExtension("OES_texture_float"))throw new Error("gl-texture2d: Floating point textures not supported on this platform");var B=E(y);return y.texImage2D(y.TEXTURE_2D,0,L,f,P,0,L,z,null),new l(y,B,f,P,L,z)}function b(y,f,P,L,z,F){var B=E(y);return y.texImage2D(y.TEXTURE_2D,0,z,z,F,f),new l(y,B,P,L,z,F)}function d(y,f){var P=f.dtype,L=f.shape.slice(),z=y.getParameter(y.MAX_TEXTURE_SIZE);if(L[0]<0||L[0]>z||L[1]<0||L[1]>z)throw new Error("gl-texture2d: Invalid texture size");var F=w(L,f.stride.slice()),B=0;P==="float32"?B=y.FLOAT:P==="float64"?(B=y.FLOAT,F=!1,P="float32"):P==="uint8"?B=y.UNSIGNED_BYTE:(B=y.UNSIGNED_BYTE,F=!1,P="uint8");var O=0;if(L.length===2)O=y.LUMINANCE,L=[L[0],L[1],1],f=o(f.data,L,[f.stride[0],f.stride[1],1],f.offset);else if(L.length===3)if(L[2]===1)O=y.ALPHA;else if(L[2]===2)O=y.LUMINANCE_ALPHA;else if(L[2]===3)O=y.RGB;else if(L[2]===4)O=y.RGBA;else throw new Error("gl-texture2d: Invalid shape for pixel coords");else throw new Error("gl-texture2d: Invalid shape for texture");B===y.FLOAT&&!y.getExtension("OES_texture_float")&&(B=y.UNSIGNED_BYTE,F=!1);var I,N,U=f.size;if(F)f.offset===0&&f.data.length===U?I=f.data:I=f.data.subarray(f.offset,f.offset+U);else{var W=[L[2],L[2]*L[0],1];N=i.malloc(U,P);var Q=o(N,L,W,0);(P==="float32"||P==="float64")&&B===y.UNSIGNED_BYTE?p(Q,f):a.assign(Q,f),I=N.subarray(0,U)}var ue=E(y);return y.texImage2D(y.TEXTURE_2D,0,O,L[0],L[1],0,O,B,I),F||i.free(N),new l(y,ue,L[0],L[1],O,B)}function u(y){if(arguments.length<=1)throw new Error("gl-texture2d: Missing arguments for texture2d constructor");if(n||h(y),typeof arguments[1]=="number")return m(y,arguments[1],arguments[2],arguments[3]||y.RGBA,arguments[4]||y.UNSIGNED_BYTE);if(Array.isArray(arguments[1]))return m(y,arguments[1][0]|0,arguments[1][1]|0,arguments[2]||y.RGBA,arguments[3]||y.UNSIGNED_BYTE);if(typeof arguments[1]=="object"){var f=arguments[1],P=v(f)?f:f.raw;if(P)return b(y,P,f.width|0,f.height|0,arguments[2]||y.RGBA,arguments[3]||y.UNSIGNED_BYTE);if(f.shape&&f.data&&f.stride)return d(y,f)}throw new Error("gl-texture2d: Invalid arguments for texture2d constructor")}},1433:function(e){"use strict";function t(r,o,a){o?o.bind():r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,null);var i=r.getParameter(r.MAX_VERTEX_ATTRIBS)|0;if(a){if(a.length>i)throw new Error("gl-vao: Too many vertex attributes");for(var n=0;n1?0:Math.acos(p)}},9226:function(e){e.exports=t;function t(r,o){return r[0]=Math.ceil(o[0]),r[1]=Math.ceil(o[1]),r[2]=Math.ceil(o[2]),r}},3126:function(e){e.exports=t;function t(r){var o=new Float32Array(3);return o[0]=r[0],o[1]=r[1],o[2]=r[2],o}},3990:function(e){e.exports=t;function t(r,o){return r[0]=o[0],r[1]=o[1],r[2]=o[2],r}},1091:function(e){e.exports=t;function t(){var r=new Float32Array(3);return r[0]=0,r[1]=0,r[2]=0,r}},5911:function(e){e.exports=t;function t(r,o,a){var i=o[0],n=o[1],s=o[2],c=a[0],h=a[1],v=a[2];return r[0]=n*v-s*h,r[1]=s*c-i*v,r[2]=i*h-n*c,r}},5455:function(e,t,r){e.exports=r(7056)},7056:function(e){e.exports=t;function t(r,o){var a=o[0]-r[0],i=o[1]-r[1],n=o[2]-r[2];return Math.sqrt(a*a+i*i+n*n)}},4008:function(e,t,r){e.exports=r(6690)},6690:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]/a[0],r[1]=o[1]/a[1],r[2]=o[2]/a[2],r}},244:function(e){e.exports=t;function t(r,o){return r[0]*o[0]+r[1]*o[1]+r[2]*o[2]}},2613:function(e){e.exports=1e-6},9922:function(e,t,r){e.exports=a;var o=r(2613);function a(i,n){var s=i[0],c=i[1],h=i[2],v=n[0],p=n[1],T=n[2];return Math.abs(s-v)<=o*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(c-p)<=o*Math.max(1,Math.abs(c),Math.abs(p))&&Math.abs(h-T)<=o*Math.max(1,Math.abs(h),Math.abs(T))}},9265:function(e){e.exports=t;function t(r,o){return r[0]===o[0]&&r[1]===o[1]&&r[2]===o[2]}},2681:function(e){e.exports=t;function t(r,o){return r[0]=Math.floor(o[0]),r[1]=Math.floor(o[1]),r[2]=Math.floor(o[2]),r}},5137:function(e,t,r){e.exports=a;var o=r(1091)();function a(i,n,s,c,h,v){var p,T;for(n||(n=3),s||(s=0),c?T=Math.min(c*n+s,i.length):T=i.length,p=s;p0&&(s=1/Math.sqrt(s),r[0]=o[0]*s,r[1]=o[1]*s,r[2]=o[2]*s),r}},7636:function(e){e.exports=t;function t(r,o){o=o||1;var a=Math.random()*2*Math.PI,i=Math.random()*2-1,n=Math.sqrt(1-i*i)*o;return r[0]=Math.cos(a)*n,r[1]=Math.sin(a)*n,r[2]=i*o,r}},6894:function(e){e.exports=t;function t(r,o,a,i){var n=a[1],s=a[2],c=o[1]-n,h=o[2]-s,v=Math.sin(i),p=Math.cos(i);return r[0]=o[0],r[1]=n+c*p-h*v,r[2]=s+c*v+h*p,r}},109:function(e){e.exports=t;function t(r,o,a,i){var n=a[0],s=a[2],c=o[0]-n,h=o[2]-s,v=Math.sin(i),p=Math.cos(i);return r[0]=n+h*v+c*p,r[1]=o[1],r[2]=s+h*p-c*v,r}},8692:function(e){e.exports=t;function t(r,o,a,i){var n=a[0],s=a[1],c=o[0]-n,h=o[1]-s,v=Math.sin(i),p=Math.cos(i);return r[0]=n+c*p-h*v,r[1]=s+c*v+h*p,r[2]=o[2],r}},2447:function(e){e.exports=t;function t(r,o){return r[0]=Math.round(o[0]),r[1]=Math.round(o[1]),r[2]=Math.round(o[2]),r}},6621:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]*a,r[1]=o[1]*a,r[2]=o[2]*a,r}},8489:function(e){e.exports=t;function t(r,o,a,i){return r[0]=o[0]+a[0]*i,r[1]=o[1]+a[1]*i,r[2]=o[2]+a[2]*i,r}},1463:function(e){e.exports=t;function t(r,o,a,i){return r[0]=o,r[1]=a,r[2]=i,r}},6141:function(e,t,r){e.exports=r(2953)},5486:function(e,t,r){e.exports=r(3066)},2953:function(e){e.exports=t;function t(r,o){var a=o[0]-r[0],i=o[1]-r[1],n=o[2]-r[2];return a*a+i*i+n*n}},3066:function(e){e.exports=t;function t(r){var o=r[0],a=r[1],i=r[2];return o*o+a*a+i*i}},2229:function(e,t,r){e.exports=r(6843)},6843:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]-a[0],r[1]=o[1]-a[1],r[2]=o[2]-a[2],r}},492:function(e){e.exports=t;function t(r,o,a){var i=o[0],n=o[1],s=o[2];return r[0]=i*a[0]+n*a[3]+s*a[6],r[1]=i*a[1]+n*a[4]+s*a[7],r[2]=i*a[2]+n*a[5]+s*a[8],r}},5673:function(e){e.exports=t;function t(r,o,a){var i=o[0],n=o[1],s=o[2],c=a[3]*i+a[7]*n+a[11]*s+a[15];return c=c||1,r[0]=(a[0]*i+a[4]*n+a[8]*s+a[12])/c,r[1]=(a[1]*i+a[5]*n+a[9]*s+a[13])/c,r[2]=(a[2]*i+a[6]*n+a[10]*s+a[14])/c,r}},264:function(e){e.exports=t;function t(r,o,a){var i=o[0],n=o[1],s=o[2],c=a[0],h=a[1],v=a[2],p=a[3],T=p*i+h*s-v*n,l=p*n+v*i-c*s,_=p*s+c*n-h*i,w=-c*i-h*n-v*s;return r[0]=T*p+w*-c+l*-v-_*-h,r[1]=l*p+w*-h+_*-c-T*-v,r[2]=_*p+w*-v+T*-h-l*-c,r}},4361:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]+a[0],r[1]=o[1]+a[1],r[2]=o[2]+a[2],r[3]=o[3]+a[3],r}},2335:function(e){e.exports=t;function t(r){var o=new Float32Array(4);return o[0]=r[0],o[1]=r[1],o[2]=r[2],o[3]=r[3],o}},2933:function(e){e.exports=t;function t(r,o){return r[0]=o[0],r[1]=o[1],r[2]=o[2],r[3]=o[3],r}},7536:function(e){e.exports=t;function t(){var r=new Float32Array(4);return r[0]=0,r[1]=0,r[2]=0,r[3]=0,r}},4691:function(e){e.exports=t;function t(r,o){var a=o[0]-r[0],i=o[1]-r[1],n=o[2]-r[2],s=o[3]-r[3];return Math.sqrt(a*a+i*i+n*n+s*s)}},1373:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]/a[0],r[1]=o[1]/a[1],r[2]=o[2]/a[2],r[3]=o[3]/a[3],r}},3750:function(e){e.exports=t;function t(r,o){return r[0]*o[0]+r[1]*o[1]+r[2]*o[2]+r[3]*o[3]}},3390:function(e){e.exports=t;function t(r,o,a,i){var n=new Float32Array(4);return n[0]=r,n[1]=o,n[2]=a,n[3]=i,n}},9970:function(e,t,r){e.exports={create:r(7536),clone:r(2335),fromValues:r(3390),copy:r(2933),set:r(4578),add:r(4361),subtract:r(6860),multiply:r(3576),divide:r(1373),min:r(2334),max:r(160),scale:r(9288),scaleAndAdd:r(4844),distance:r(4691),squaredDistance:r(7960),length:r(6808),squaredLength:r(483),negate:r(1498),inverse:r(4494),normalize:r(5177),dot:r(3750),lerp:r(2573),random:r(9131),transformMat4:r(5352),transformQuat:r(4041)}},4494:function(e){e.exports=t;function t(r,o){return r[0]=1/o[0],r[1]=1/o[1],r[2]=1/o[2],r[3]=1/o[3],r}},6808:function(e){e.exports=t;function t(r){var o=r[0],a=r[1],i=r[2],n=r[3];return Math.sqrt(o*o+a*a+i*i+n*n)}},2573:function(e){e.exports=t;function t(r,o,a,i){var n=o[0],s=o[1],c=o[2],h=o[3];return r[0]=n+i*(a[0]-n),r[1]=s+i*(a[1]-s),r[2]=c+i*(a[2]-c),r[3]=h+i*(a[3]-h),r}},160:function(e){e.exports=t;function t(r,o,a){return r[0]=Math.max(o[0],a[0]),r[1]=Math.max(o[1],a[1]),r[2]=Math.max(o[2],a[2]),r[3]=Math.max(o[3],a[3]),r}},2334:function(e){e.exports=t;function t(r,o,a){return r[0]=Math.min(o[0],a[0]),r[1]=Math.min(o[1],a[1]),r[2]=Math.min(o[2],a[2]),r[3]=Math.min(o[3],a[3]),r}},3576:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]*a[0],r[1]=o[1]*a[1],r[2]=o[2]*a[2],r[3]=o[3]*a[3],r}},1498:function(e){e.exports=t;function t(r,o){return r[0]=-o[0],r[1]=-o[1],r[2]=-o[2],r[3]=-o[3],r}},5177:function(e){e.exports=t;function t(r,o){var a=o[0],i=o[1],n=o[2],s=o[3],c=a*a+i*i+n*n+s*s;return c>0&&(c=1/Math.sqrt(c),r[0]=a*c,r[1]=i*c,r[2]=n*c,r[3]=s*c),r}},9131:function(e,t,r){var o=r(5177),a=r(9288);e.exports=i;function i(n,s){return s=s||1,n[0]=Math.random(),n[1]=Math.random(),n[2]=Math.random(),n[3]=Math.random(),o(n,n),a(n,n,s),n}},9288:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]*a,r[1]=o[1]*a,r[2]=o[2]*a,r[3]=o[3]*a,r}},4844:function(e){e.exports=t;function t(r,o,a,i){return r[0]=o[0]+a[0]*i,r[1]=o[1]+a[1]*i,r[2]=o[2]+a[2]*i,r[3]=o[3]+a[3]*i,r}},4578:function(e){e.exports=t;function t(r,o,a,i,n){return r[0]=o,r[1]=a,r[2]=i,r[3]=n,r}},7960:function(e){e.exports=t;function t(r,o){var a=o[0]-r[0],i=o[1]-r[1],n=o[2]-r[2],s=o[3]-r[3];return a*a+i*i+n*n+s*s}},483:function(e){e.exports=t;function t(r){var o=r[0],a=r[1],i=r[2],n=r[3];return o*o+a*a+i*i+n*n}},6860:function(e){e.exports=t;function t(r,o,a){return r[0]=o[0]-a[0],r[1]=o[1]-a[1],r[2]=o[2]-a[2],r[3]=o[3]-a[3],r}},5352:function(e){e.exports=t;function t(r,o,a){var i=o[0],n=o[1],s=o[2],c=o[3];return r[0]=a[0]*i+a[4]*n+a[8]*s+a[12]*c,r[1]=a[1]*i+a[5]*n+a[9]*s+a[13]*c,r[2]=a[2]*i+a[6]*n+a[10]*s+a[14]*c,r[3]=a[3]*i+a[7]*n+a[11]*s+a[15]*c,r}},4041:function(e){e.exports=t;function t(r,o,a){var i=o[0],n=o[1],s=o[2],c=a[0],h=a[1],v=a[2],p=a[3],T=p*i+h*s-v*n,l=p*n+v*i-c*s,_=p*s+c*n-h*i,w=-c*i-h*n-v*s;return r[0]=T*p+w*-c+l*-v-_*-h,r[1]=l*p+w*-h+_*-c-T*-v,r[2]=_*p+w*-v+T*-h-l*-c,r[3]=o[3],r}},1848:function(e,t,r){var o=r(4905),a=r(6468);e.exports=i;function i(n){for(var s=Array.isArray(n)?n:o(n),c=0;c0)continue;nt=ce.slice(0,1).join("")}return ee(nt),se+=nt.length,I=I.slice(nt.length),I.length}while(!0)}function et(){return/[^a-fA-F0-9]/.test(B)?(ee(I.join("")),F=c,L):(I.push(B),O=B,L+1)}function lt(){return B==="."||/[eE]/.test(B)?(I.push(B),F=w,O=B,L+1):B==="x"&&I.length===1&&I[0]==="0"?(F=u,I.push(B),O=B,L+1):/[^\d]/.test(B)?(ee(I.join("")),F=c,L):(I.push(B),O=B,L+1)}function Me(){return B==="f"&&(I.push(B),O=B,L+=1),/[eE]/.test(B)||(B==="-"||B==="+")&&/[eE]/.test(O)?(I.push(B),O=B,L+1):/[^\d]/.test(B)?(ee(I.join("")),F=c,L):(I.push(B),O=B,L+1)}function ge(){if(/[^\d\w_]/.test(B)){var ce=I.join("");return j[ce]?F=m:ne[ce]?F=E:F=S,ee(I.join("")),F=c,L}return I.push(B),O=B,L+1}}},3508:function(e,t,r){var o=r(6852);o=o.slice().filter(function(a){return!/^(gl\_|texture)/.test(a)}),e.exports=o.concat(["gl_VertexID","gl_InstanceID","gl_Position","gl_PointSize","gl_FragCoord","gl_FrontFacing","gl_FragDepth","gl_PointCoord","gl_MaxVertexAttribs","gl_MaxVertexUniformVectors","gl_MaxVertexOutputVectors","gl_MaxFragmentInputVectors","gl_MaxVertexTextureImageUnits","gl_MaxCombinedTextureImageUnits","gl_MaxTextureImageUnits","gl_MaxFragmentUniformVectors","gl_MaxDrawBuffers","gl_MinProgramTexelOffset","gl_MaxProgramTexelOffset","gl_DepthRangeParameters","gl_DepthRange","trunc","round","roundEven","isnan","isinf","floatBitsToInt","floatBitsToUint","intBitsToFloat","uintBitsToFloat","packSnorm2x16","unpackSnorm2x16","packUnorm2x16","unpackUnorm2x16","packHalf2x16","unpackHalf2x16","outerProduct","transpose","determinant","inverse","texture","textureSize","textureProj","textureLod","textureOffset","texelFetch","texelFetchOffset","textureProjOffset","textureLodOffset","textureProjLod","textureProjLodOffset","textureGrad","textureGradOffset","textureProjGrad","textureProjGradOffset"])},6852:function(e){e.exports=["abs","acos","all","any","asin","atan","ceil","clamp","cos","cross","dFdx","dFdy","degrees","distance","dot","equal","exp","exp2","faceforward","floor","fract","gl_BackColor","gl_BackLightModelProduct","gl_BackLightProduct","gl_BackMaterial","gl_BackSecondaryColor","gl_ClipPlane","gl_ClipVertex","gl_Color","gl_DepthRange","gl_DepthRangeParameters","gl_EyePlaneQ","gl_EyePlaneR","gl_EyePlaneS","gl_EyePlaneT","gl_Fog","gl_FogCoord","gl_FogFragCoord","gl_FogParameters","gl_FragColor","gl_FragCoord","gl_FragData","gl_FragDepth","gl_FragDepthEXT","gl_FrontColor","gl_FrontFacing","gl_FrontLightModelProduct","gl_FrontLightProduct","gl_FrontMaterial","gl_FrontSecondaryColor","gl_LightModel","gl_LightModelParameters","gl_LightModelProducts","gl_LightProducts","gl_LightSource","gl_LightSourceParameters","gl_MaterialParameters","gl_MaxClipPlanes","gl_MaxCombinedTextureImageUnits","gl_MaxDrawBuffers","gl_MaxFragmentUniformComponents","gl_MaxLights","gl_MaxTextureCoords","gl_MaxTextureImageUnits","gl_MaxTextureUnits","gl_MaxVaryingFloats","gl_MaxVertexAttribs","gl_MaxVertexTextureImageUnits","gl_MaxVertexUniformComponents","gl_ModelViewMatrix","gl_ModelViewMatrixInverse","gl_ModelViewMatrixInverseTranspose","gl_ModelViewMatrixTranspose","gl_ModelViewProjectionMatrix","gl_ModelViewProjectionMatrixInverse","gl_ModelViewProjectionMatrixInverseTranspose","gl_ModelViewProjectionMatrixTranspose","gl_MultiTexCoord0","gl_MultiTexCoord1","gl_MultiTexCoord2","gl_MultiTexCoord3","gl_MultiTexCoord4","gl_MultiTexCoord5","gl_MultiTexCoord6","gl_MultiTexCoord7","gl_Normal","gl_NormalMatrix","gl_NormalScale","gl_ObjectPlaneQ","gl_ObjectPlaneR","gl_ObjectPlaneS","gl_ObjectPlaneT","gl_Point","gl_PointCoord","gl_PointParameters","gl_PointSize","gl_Position","gl_ProjectionMatrix","gl_ProjectionMatrixInverse","gl_ProjectionMatrixInverseTranspose","gl_ProjectionMatrixTranspose","gl_SecondaryColor","gl_TexCoord","gl_TextureEnvColor","gl_TextureMatrix","gl_TextureMatrixInverse","gl_TextureMatrixInverseTranspose","gl_TextureMatrixTranspose","gl_Vertex","greaterThan","greaterThanEqual","inversesqrt","length","lessThan","lessThanEqual","log","log2","matrixCompMult","max","min","mix","mod","normalize","not","notEqual","pow","radians","reflect","refract","sign","sin","smoothstep","sqrt","step","tan","texture2D","texture2DLod","texture2DProj","texture2DProjLod","textureCube","textureCubeLod","texture2DLodEXT","texture2DProjLodEXT","textureCubeLodEXT","texture2DGradEXT","texture2DProjGradEXT","textureCubeGradEXT"]},7932:function(e,t,r){var o=r(620);e.exports=o.slice().concat(["layout","centroid","smooth","case","mat2x2","mat2x3","mat2x4","mat3x2","mat3x3","mat3x4","mat4x2","mat4x3","mat4x4","uvec2","uvec3","uvec4","samplerCubeShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","isampler3D","isamplerCube","isampler2DArray","usampler2D","usampler3D","usamplerCube","usampler2DArray","coherent","restrict","readonly","writeonly","resource","atomic_uint","noperspective","patch","sample","subroutine","common","partition","active","filter","image1D","image2D","image3D","imageCube","iimage1D","iimage2D","iimage3D","iimageCube","uimage1D","uimage2D","uimage3D","uimageCube","image1DArray","image2DArray","iimage1DArray","iimage2DArray","uimage1DArray","uimage2DArray","image1DShadow","image2DShadow","image1DArrayShadow","image2DArrayShadow","imageBuffer","iimageBuffer","uimageBuffer","sampler1DArray","sampler1DArrayShadow","isampler1D","isampler1DArray","usampler1D","usampler1DArray","isampler2DRect","usampler2DRect","samplerBuffer","isamplerBuffer","usamplerBuffer","sampler2DMS","isampler2DMS","usampler2DMS","sampler2DMSArray","isampler2DMSArray","usampler2DMSArray"])},620:function(e){e.exports=["precision","highp","mediump","lowp","attribute","const","uniform","varying","break","continue","do","for","while","if","else","in","out","inout","float","int","uint","void","bool","true","false","discard","return","mat2","mat3","mat4","vec2","vec3","vec4","ivec2","ivec3","ivec4","bvec2","bvec3","bvec4","sampler1D","sampler2D","sampler3D","samplerCube","sampler1DShadow","sampler2DShadow","struct","asm","class","union","enum","typedef","template","this","packed","goto","switch","default","inline","noinline","volatile","public","static","extern","external","interface","long","short","double","half","fixed","unsigned","input","output","hvec2","hvec3","hvec4","dvec2","dvec3","dvec4","fvec2","fvec3","fvec4","sampler2DRect","sampler3DRect","sampler2DRectShadow","sizeof","cast","namespace","using"]},7827:function(e){e.exports=["<<=",">>=","++","--","<<",">>","<=",">=","==","!=","&&","||","+=","-=","*=","/=","%=","&=","^^","^=","|=","(",")","[","]",".","!","~","*","/","%","+","-","<",">","&","^","|","?",":","=",",",";","{","}"]},4905:function(e,t,r){var o=r(5874);e.exports=a;function a(i,n){var s=o(n),c=[];return c=c.concat(s(i)),c=c.concat(s(null)),c}},3236:function(e){e.exports=function(t){typeof t=="string"&&(t=[t]);for(var r=[].slice.call(arguments,1),o=[],a=0;a>1,T=-7,l=a?n-1:0,_=a?-1:1,w=r[o+l];for(l+=_,s=w&(1<<-T)-1,w>>=-T,T+=h;T>0;s=s*256+r[o+l],l+=_,T-=8);for(c=s&(1<<-T)-1,s>>=-T,T+=i;T>0;c=c*256+r[o+l],l+=_,T-=8);if(s===0)s=1-p;else{if(s===v)return c?NaN:(w?-1:1)*(1/0);c=c+Math.pow(2,i),s=s-p}return(w?-1:1)*c*Math.pow(2,s-i)},t.write=function(r,o,a,i,n,s){var c,h,v,p=s*8-n-1,T=(1<>1,_=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,w=i?0:s-1,S=i?1:-1,E=o<0||o===0&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(h=isNaN(o)?1:0,c=T):(c=Math.floor(Math.log(o)/Math.LN2),o*(v=Math.pow(2,-c))<1&&(c--,v*=2),c+l>=1?o+=_/v:o+=_*Math.pow(2,1-l),o*v>=2&&(c++,v/=2),c+l>=T?(h=0,c=T):c+l>=1?(h=(o*v-1)*Math.pow(2,n),c=c+l):(h=o*Math.pow(2,l-1)*Math.pow(2,n),c=0));n>=8;r[a+w]=h&255,w+=S,h/=256,n-=8);for(c=c<0;r[a+w]=c&255,w+=S,c/=256,p-=8);r[a+w-S]|=E*128}},8954:function(e,t,r){"use strict";e.exports=l;var o=r(3250),a=r(6803).Fw;function i(_,w,S){this.vertices=_,this.adjacent=w,this.boundary=S,this.lastVisited=-1}i.prototype.flip=function(){var _=this.vertices[0];this.vertices[0]=this.vertices[1],this.vertices[1]=_;var w=this.adjacent[0];this.adjacent[0]=this.adjacent[1],this.adjacent[1]=w};function n(_,w,S){this.vertices=_,this.cell=w,this.index=S}function s(_,w){return a(_.vertices,w.vertices)}function c(_){return function(){var w=this.tuple;return _.apply(this,w)}}function h(_){var w=o[_+1];return w||(w=o),c(w)}var v=[];function p(_,w,S){this.dimension=_,this.vertices=w,this.simplices=S,this.interior=S.filter(function(b){return!b.boundary}),this.tuple=new Array(_+1);for(var E=0;E<=_;++E)this.tuple[E]=this.vertices[E];var m=v[_];m||(m=v[_]=h(_)),this.orient=m}var T=p.prototype;T.handleBoundaryDegeneracy=function(_,w){var S=this.dimension,E=this.vertices.length-1,m=this.tuple,b=this.vertices,d=[_];for(_.lastVisited=-E;d.length>0;){_=d.pop();for(var u=_.adjacent,y=0;y<=S;++y){var f=u[y];if(!(!f.boundary||f.lastVisited<=-E)){for(var P=f.vertices,L=0;L<=S;++L){var z=P[L];z<0?m[L]=w:m[L]=b[z]}var F=this.orient();if(F>0)return f;f.lastVisited=-E,F===0&&d.push(f)}}}return null},T.walk=function(_,w){var S=this.vertices.length-1,E=this.dimension,m=this.vertices,b=this.tuple,d=w?this.interior.length*Math.random()|0:this.interior.length-1,u=this.interior[d];e:for(;!u.boundary;){for(var y=u.vertices,f=u.adjacent,P=0;P<=E;++P)b[P]=m[y[P]];u.lastVisited=S;for(var P=0;P<=E;++P){var L=f[P];if(!(L.lastVisited>=S)){var z=b[P];b[P]=_;var F=this.orient();if(b[P]=z,F<0){u=L;continue e}else L.boundary?L.lastVisited=-S:L.lastVisited=S}}return}return u},T.addPeaks=function(_,w){var S=this.vertices.length-1,E=this.dimension,m=this.vertices,b=this.tuple,d=this.interior,u=this.simplices,y=[w];w.lastVisited=S,w.vertices[w.vertices.indexOf(-1)]=S,w.boundary=!1,d.push(w);for(var f=[];y.length>0;){var w=y.pop(),P=w.vertices,L=w.adjacent,z=P.indexOf(S);if(!(z<0)){for(var F=0;F<=E;++F)if(F!==z){var B=L[F];if(!(!B.boundary||B.lastVisited>=S)){var O=B.vertices;if(B.lastVisited!==-S){for(var I=0,N=0;N<=E;++N)O[N]<0?(I=N,b[N]=_):b[N]=m[O[N]];var U=this.orient();if(U>0){O[I]=S,B.boundary=!1,d.push(B),y.push(B),B.lastVisited=S;continue}else B.lastVisited=-S}var W=B.adjacent,Q=P.slice(),ue=L.slice(),se=new i(Q,ue,!0);u.push(se);var he=W.indexOf(w);if(!(he<0)){W[he]=se,ue[z]=B,Q[F]=-1,ue[F]=w,L[F]=se,se.flip();for(var N=0;N<=E;++N){var G=Q[N];if(!(G<0||G===S)){for(var $=new Array(E-1),J=0,Z=0;Z<=E;++Z){var re=Q[Z];re<0||Z===N||($[J++]=re)}f.push(new n($,se,N))}}}}}}}f.sort(s);for(var F=0;F+1=0?d[y++]=u[P]:f=P&1;if(f===(_&1)){var L=d[0];d[0]=d[1],d[1]=L}w.push(d)}}return w};function l(_,w){var S=_.length;if(S===0)throw new Error("Must have at least d+1 points");var E=_[0].length;if(S<=E)throw new Error("Must input at least d+1 points");var m=_.slice(0,E+1),b=o.apply(void 0,m);if(b===0)throw new Error("Input not in general position");for(var d=new Array(E+1),u=0;u<=E;++u)d[u]=u;b<0&&(d[0]=1,d[1]=0);for(var y=new i(d,new Array(E+1),!1),f=y.adjacent,P=new Array(E+2),u=0;u<=E;++u){for(var L=d.slice(),z=0;z<=E;++z)z===u&&(L[z]=-1);var F=L[0];L[0]=L[1],L[1]=F;var B=new i(L,new Array(E+1),!0);f[u]=B,P[u]=B}P[E+1]=y;for(var u=0;u<=E;++u)for(var L=f[u].vertices,O=f[u].adjacent,z=0;z<=E;++z){var I=L[z];if(I<0){O[z]=y;continue}for(var N=0;N<=E;++N)f[N].vertices.indexOf(I)<0&&(O[z]=f[N])}for(var U=new p(E,m,P),W=!!w,u=E+1;u3*(P+1)?p(this,f):this.left.insert(f):this.left=b([f]);else if(f[0]>this.mid)this.right?4*(this.right.count+1)>3*(P+1)?p(this,f):this.right.insert(f):this.right=b([f]);else{var L=o.ge(this.leftPoints,f,E),z=o.ge(this.rightPoints,f,m);this.leftPoints.splice(L,0,f),this.rightPoints.splice(z,0,f)}},c.remove=function(f){var P=this.count-this.leftPoints;if(f[1]3*(P-1))return T(this,f);var z=this.left.remove(f);return z===n?(this.left=null,this.count-=1,i):(z===i&&(this.count-=1),z)}else if(f[0]>this.mid){if(!this.right)return a;var F=this.left?this.left.count:0;if(4*F>3*(P-1))return T(this,f);var z=this.right.remove(f);return z===n?(this.right=null,this.count-=1,i):(z===i&&(this.count-=1),z)}else{if(this.count===1)return this.leftPoints[0]===f?n:a;if(this.leftPoints.length===1&&this.leftPoints[0]===f){if(this.left&&this.right){for(var B=this,O=this.left;O.right;)B=O,O=O.right;if(B===this)O.right=this.right;else{var I=this.left,z=this.right;B.count-=O.count,B.right=O.left,O.left=I,O.right=z}h(this,O),this.count=(this.left?this.left.count:0)+(this.right?this.right.count:0)+this.leftPoints.length}else this.left?h(this,this.left):h(this,this.right);return i}for(var I=o.ge(this.leftPoints,f,E);I=0&&f[z][1]>=P;--z){var F=L(f[z]);if(F)return F}}function w(f,P){for(var L=0;Lthis.mid){if(this.right){var L=this.right.queryPoint(f,P);if(L)return L}return _(this.rightPoints,f,P)}else return w(this.leftPoints,P)},c.queryInterval=function(f,P,L){if(fthis.mid&&this.right){var z=this.right.queryInterval(f,P,L);if(z)return z}return Pthis.mid?_(this.rightPoints,f,L):w(this.leftPoints,L)};function S(f,P){return f-P}function E(f,P){var L=f[0]-P[0];return L||f[1]-P[1]}function m(f,P){var L=f[1]-P[1];return L||f[0]-P[0]}function b(f){if(f.length===0)return null;for(var P=[],L=0;L>1],F=[],B=[],O=[],L=0;L13)&&o!==32&&o!==133&&o!==160&&o!==5760&&o!==6158&&(o<8192||o>8205)&&o!==8232&&o!==8233&&o!==8239&&o!==8287&&o!==8288&&o!==12288&&o!==65279)return!1;return!0}},395:function(e){function t(r,o,a){return r*(1-a)+o*a}e.exports=t},2652:function(e,t,r){var o=r(4335),a=r(6864),i=r(1903),n=r(9921),s=r(7608),c=r(5665),h={length:r(1387),normalize:r(3536),dot:r(244),cross:r(5911)},v=a(),p=a(),T=[0,0,0,0],l=[[0,0,0],[0,0,0],[0,0,0]],_=[0,0,0];e.exports=function(b,d,u,y,f,P){if(d||(d=[0,0,0]),u||(u=[0,0,0]),y||(y=[0,0,0]),f||(f=[0,0,0,1]),P||(P=[0,0,0,1]),!o(v,b)||(i(p,v),p[3]=0,p[7]=0,p[11]=0,p[15]=1,Math.abs(n(p)<1e-8)))return!1;var L=v[3],z=v[7],F=v[11],B=v[12],O=v[13],I=v[14],N=v[15];if(L!==0||z!==0||F!==0){T[0]=L,T[1]=z,T[2]=F,T[3]=N;var U=s(p,p);if(!U)return!1;c(p,p),w(f,T,p)}else f[0]=f[1]=f[2]=0,f[3]=1;if(d[0]=B,d[1]=O,d[2]=I,S(l,v),u[0]=h.length(l[0]),h.normalize(l[0],l[0]),y[0]=h.dot(l[0],l[1]),E(l[1],l[1],l[0],1,-y[0]),u[1]=h.length(l[1]),h.normalize(l[1],l[1]),y[0]/=u[1],y[1]=h.dot(l[0],l[2]),E(l[2],l[2],l[0],1,-y[1]),y[2]=h.dot(l[1],l[2]),E(l[2],l[2],l[1],1,-y[2]),u[2]=h.length(l[2]),h.normalize(l[2],l[2]),y[1]/=u[2],y[2]/=u[2],h.cross(_,l[1],l[2]),h.dot(l[0],_)<0)for(var W=0;W<3;W++)u[W]*=-1,l[W][0]*=-1,l[W][1]*=-1,l[W][2]*=-1;return P[0]=.5*Math.sqrt(Math.max(1+l[0][0]-l[1][1]-l[2][2],0)),P[1]=.5*Math.sqrt(Math.max(1-l[0][0]+l[1][1]-l[2][2],0)),P[2]=.5*Math.sqrt(Math.max(1-l[0][0]-l[1][1]+l[2][2],0)),P[3]=.5*Math.sqrt(Math.max(1+l[0][0]+l[1][1]+l[2][2],0)),l[2][1]>l[1][2]&&(P[0]=-P[0]),l[0][2]>l[2][0]&&(P[1]=-P[1]),l[1][0]>l[0][1]&&(P[2]=-P[2]),!0};function w(m,b,d){var u=b[0],y=b[1],f=b[2],P=b[3];return m[0]=d[0]*u+d[4]*y+d[8]*f+d[12]*P,m[1]=d[1]*u+d[5]*y+d[9]*f+d[13]*P,m[2]=d[2]*u+d[6]*y+d[10]*f+d[14]*P,m[3]=d[3]*u+d[7]*y+d[11]*f+d[15]*P,m}function S(m,b){m[0][0]=b[0],m[0][1]=b[1],m[0][2]=b[2],m[1][0]=b[4],m[1][1]=b[5],m[1][2]=b[6],m[2][0]=b[8],m[2][1]=b[9],m[2][2]=b[10]}function E(m,b,d,u,y){m[0]=b[0]*u+d[0]*y,m[1]=b[1]*u+d[1]*y,m[2]=b[2]*u+d[2]*y}},4335:function(e){e.exports=function(r,o){var a=o[15];if(a===0)return!1;for(var i=1/a,n=0;n<16;n++)r[n]=o[n]*i;return!0}},7442:function(e,t,r){var o=r(6658),a=r(7182),i=r(2652),n=r(9921),s=r(8648),c=T(),h=T(),v=T();e.exports=p;function p(w,S,E,m){if(n(S)===0||n(E)===0)return!1;var b=i(S,c.translate,c.scale,c.skew,c.perspective,c.quaternion),d=i(E,h.translate,h.scale,h.skew,h.perspective,h.quaternion);return!b||!d?!1:(o(v.translate,c.translate,h.translate,m),o(v.skew,c.skew,h.skew,m),o(v.scale,c.scale,h.scale,m),o(v.perspective,c.perspective,h.perspective,m),s(v.quaternion,c.quaternion,h.quaternion,m),a(w,v.translate,v.scale,v.skew,v.perspective,v.quaternion),!0)}function T(){return{translate:l(),scale:l(1),skew:l(),perspective:_(),quaternion:_()}}function l(w){return[w||0,w||0,w||0]}function _(){return[0,0,0,1]}},7182:function(e,t,r){var o={identity:r(7894),translate:r(7656),multiply:r(6760),create:r(6864),scale:r(2504),fromRotationTranslation:r(6743)},a=o.create(),i=o.create();e.exports=function(s,c,h,v,p,T){return o.identity(s),o.fromRotationTranslation(s,T,c),s[3]=p[0],s[7]=p[1],s[11]=p[2],s[15]=p[3],o.identity(i),v[2]!==0&&(i[9]=v[2],o.multiply(s,s,i)),v[1]!==0&&(i[9]=0,i[8]=v[1],o.multiply(s,s,i)),v[0]!==0&&(i[8]=0,i[4]=v[0],o.multiply(s,s,i)),o.scale(s,s,h),s}},1811:function(e,t,r){"use strict";var o=r(2478),a=r(7442),i=r(7608),n=r(5567),s=r(2408),c=r(7089),h=r(6582),v=r(7656),p=r(2504),T=r(3536),l=[0,0,0];e.exports=E;function _(m){this._components=m.slice(),this._time=[0],this.prevMatrix=m.slice(),this.nextMatrix=m.slice(),this.computedMatrix=m.slice(),this.computedInverse=m.slice(),this.computedEye=[0,0,0],this.computedUp=[0,0,0],this.computedCenter=[0,0,0],this.computedRadius=[0],this._limits=[-1/0,1/0]}var w=_.prototype;w.recalcMatrix=function(m){var b=this._time,d=o.le(b,m),u=this.computedMatrix;if(!(d<0)){var y=this._components;if(d===b.length-1)for(var f=16*d,P=0;P<16;++P)u[P]=y[f++];else{for(var L=b[d+1]-b[d],f=16*d,z=this.prevMatrix,F=!0,P=0;P<16;++P)z[P]=y[f++];for(var B=this.nextMatrix,P=0;P<16;++P)B[P]=y[f++],F=F&&z[P]===B[P];if(L<1e-6||F)for(var P=0;P<16;++P)u[P]=z[P];else a(u,z,B,(m-b[d])/L)}var O=this.computedUp;O[0]=u[1],O[1]=u[5],O[2]=u[9],T(O,O);var I=this.computedInverse;i(I,u);var N=this.computedEye,U=I[15];N[0]=I[12]/U,N[1]=I[13]/U,N[2]=I[14]/U;for(var W=this.computedCenter,Q=Math.exp(this.computedRadius[0]),P=0;P<3;++P)W[P]=N[P]-u[2+4*P]*Q}},w.idle=function(m){if(!(m1&&o(i[h[l-2]],i[h[l-1]],T)<=0;)l-=1,h.pop();for(h.push(p),l=v.length;l>1&&o(i[v[l-2]],i[v[l-1]],T)>=0;)l-=1,v.pop();v.push(p)}for(var _=new Array(v.length+h.length-2),w=0,s=0,S=h.length;s0;--E)_[w++]=v[E];return _}},351:function(e,t,r){"use strict";e.exports=a;var o=r(4687);function a(i,n){n||(n=i,i=window);var s=0,c=0,h=0,v={shift:!1,alt:!1,control:!1,meta:!1},p=!1;function T(f){var P=!1;return"altKey"in f&&(P=P||f.altKey!==v.alt,v.alt=!!f.altKey),"shiftKey"in f&&(P=P||f.shiftKey!==v.shift,v.shift=!!f.shiftKey),"ctrlKey"in f&&(P=P||f.ctrlKey!==v.control,v.control=!!f.ctrlKey),"metaKey"in f&&(P=P||f.metaKey!==v.meta,v.meta=!!f.metaKey),P}function l(f,P){var L=o.x(P),z=o.y(P);"buttons"in P&&(f=P.buttons|0),(f!==s||L!==c||z!==h||T(P))&&(s=f|0,c=L||0,h=z||0,n&&n(s,c,h,v))}function _(f){l(0,f)}function w(){(s||c||h||v.shift||v.alt||v.meta||v.control)&&(c=h=0,s=0,v.shift=v.alt=v.control=v.meta=!1,n&&n(0,0,0,v))}function S(f){T(f)&&n&&n(s,c,h,v)}function E(f){o.buttons(f)===0?l(0,f):l(s,f)}function m(f){l(s|o.buttons(f),f)}function b(f){l(s&~o.buttons(f),f)}function d(){p||(p=!0,i.addEventListener("mousemove",E),i.addEventListener("mousedown",m),i.addEventListener("mouseup",b),i.addEventListener("mouseleave",_),i.addEventListener("mouseenter",_),i.addEventListener("mouseout",_),i.addEventListener("mouseover",_),i.addEventListener("blur",w),i.addEventListener("keyup",S),i.addEventListener("keydown",S),i.addEventListener("keypress",S),i!==window&&(window.addEventListener("blur",w),window.addEventListener("keyup",S),window.addEventListener("keydown",S),window.addEventListener("keypress",S)))}function u(){p&&(p=!1,i.removeEventListener("mousemove",E),i.removeEventListener("mousedown",m),i.removeEventListener("mouseup",b),i.removeEventListener("mouseleave",_),i.removeEventListener("mouseenter",_),i.removeEventListener("mouseout",_),i.removeEventListener("mouseover",_),i.removeEventListener("blur",w),i.removeEventListener("keyup",S),i.removeEventListener("keydown",S),i.removeEventListener("keypress",S),i!==window&&(window.removeEventListener("blur",w),window.removeEventListener("keyup",S),window.removeEventListener("keydown",S),window.removeEventListener("keypress",S)))}d();var y={element:i};return Object.defineProperties(y,{enabled:{get:function(){return p},set:function(f){f?d():u()},enumerable:!0},buttons:{get:function(){return s},enumerable:!0},x:{get:function(){return c},enumerable:!0},y:{get:function(){return h},enumerable:!0},mods:{get:function(){return v},enumerable:!0}}),y}},24:function(e){var t={left:0,top:0};e.exports=r;function r(a,i,n){i=i||a.currentTarget||a.srcElement,Array.isArray(n)||(n=[0,0]);var s=a.clientX||0,c=a.clientY||0,h=o(i);return n[0]=s-h.left,n[1]=c-h.top,n}function o(a){return a===window||a===document||a===document.body?t:a.getBoundingClientRect()}},4687:function(e,t){"use strict";function r(n){if(typeof n=="object"){if("buttons"in n)return n.buttons;if("which"in n){var s=n.which;if(s===2)return 4;if(s===3)return 2;if(s>0)return 1<=0)return 1<0){if(ue=1,G[J++]=v(d[P],w,S,E),P+=U,m>0)for(Q=1,L=d[P],Z=G[J]=v(L,w,S,E),j=G[J+re],fe=G[J+ee],Be=G[J+be],(Z!==j||Z!==fe||Z!==Be)&&(F=d[P+z],O=d[P+B],N=d[P+I],c(Q,ue,L,F,O,N,Z,j,fe,Be,w,S,E),Ie=$[J]=se++),J+=1,P+=U,Q=2;Q0)for(Q=1,L=d[P],Z=G[J]=v(L,w,S,E),j=G[J+re],fe=G[J+ee],Be=G[J+be],(Z!==j||Z!==fe||Z!==Be)&&(F=d[P+z],O=d[P+B],N=d[P+I],c(Q,ue,L,F,O,N,Z,j,fe,Be,w,S,E),Ie=$[J]=se++,Be!==fe&&h($[J+ee],Ie,O,N,fe,Be,w,S,E)),J+=1,P+=U,Q=2;Q0){if(Q=1,G[J++]=v(d[P],w,S,E),P+=U,b>0)for(ue=1,L=d[P],Z=G[J]=v(L,w,S,E),fe=G[J+ee],j=G[J+re],Be=G[J+be],(Z!==fe||Z!==j||Z!==Be)&&(F=d[P+z],O=d[P+B],N=d[P+I],c(Q,ue,L,F,O,N,Z,fe,j,Be,w,S,E),Ie=$[J]=se++),J+=1,P+=U,ue=2;ue0)for(ue=1,L=d[P],Z=G[J]=v(L,w,S,E),fe=G[J+ee],j=G[J+re],Be=G[J+be],(Z!==fe||Z!==j||Z!==Be)&&(F=d[P+z],O=d[P+B],N=d[P+I],c(Q,ue,L,F,O,N,Z,fe,j,Be,w,S,E),Ie=$[J]=se++,Be!==fe&&h($[J+ee],Ie,N,F,Be,fe,w,S,E)),J+=1,P+=U,ue=2;ue 0"),typeof s.vertex!="function"&&c("Must specify vertex creation function"),typeof s.cell!="function"&&c("Must specify cell creation function"),typeof s.phase!="function"&&c("Must specify phase function");for(var T=s.getters||[],l=new Array(v),_=0;_=0?l[_]=!0:l[_]=!1;return i(s.vertex,s.cell,s.phase,p,h,l)}},6199:function(e,t,r){"use strict";var o=r(1338),a={zero:function(E,m,b,d){var u=E[0],y=b[0];d|=0;var f=0,P=y;for(f=0;f2&&f[1]>2&&d(y.pick(-1,-1).lo(1,1).hi(f[0]-2,f[1]-2),u.pick(-1,-1,0).lo(1,1).hi(f[0]-2,f[1]-2),u.pick(-1,-1,1).lo(1,1).hi(f[0]-2,f[1]-2)),f[1]>2&&(b(y.pick(0,-1).lo(1).hi(f[1]-2),u.pick(0,-1,1).lo(1).hi(f[1]-2)),m(u.pick(0,-1,0).lo(1).hi(f[1]-2))),f[1]>2&&(b(y.pick(f[0]-1,-1).lo(1).hi(f[1]-2),u.pick(f[0]-1,-1,1).lo(1).hi(f[1]-2)),m(u.pick(f[0]-1,-1,0).lo(1).hi(f[1]-2))),f[0]>2&&(b(y.pick(-1,0).lo(1).hi(f[0]-2),u.pick(-1,0,0).lo(1).hi(f[0]-2)),m(u.pick(-1,0,1).lo(1).hi(f[0]-2))),f[0]>2&&(b(y.pick(-1,f[1]-1).lo(1).hi(f[0]-2),u.pick(-1,f[1]-1,0).lo(1).hi(f[0]-2)),m(u.pick(-1,f[1]-1,1).lo(1).hi(f[0]-2))),u.set(0,0,0,0),u.set(0,0,1,0),u.set(f[0]-1,0,0,0),u.set(f[0]-1,0,1,0),u.set(0,f[1]-1,0,0),u.set(0,f[1]-1,1,0),u.set(f[0]-1,f[1]-1,0,0),u.set(f[0]-1,f[1]-1,1,0),u}}function S(E){var m=E.join(),f=v[m];if(f)return f;for(var b=E.length,d=[T,l],u=1;u<=b;++u)d.push(_(u));var y=w,f=y.apply(void 0,d);return v[m]=f,f}e.exports=function(m,b,d){if(Array.isArray(d)||(typeof d=="string"?d=o(b.dimension,d):d=o(b.dimension,"clamp")),b.size===0)return m;if(b.dimension===0)return m.set(0),m;var u=S(d);return u(m,b)}},4317:function(e){"use strict";function t(n,s){var c=Math.floor(s),h=s-c,v=0<=c&&c0;){O<64?(m=O,O=0):(m=64,O-=64);for(var I=v[1]|0;I>0;){I<64?(b=I,I=0):(b=64,I-=64),l=F+O*u+I*y,S=B+O*P+I*L;var N=0,U=0,W=0,Q=f,ue=u-d*f,se=y-m*u,he=z,G=P-d*z,$=L-m*P;for(W=0;W0;){L<64?(m=L,L=0):(m=64,L-=64);for(var z=v[0]|0;z>0;){z<64?(E=z,z=0):(E=64,z-=64),l=f+L*d+z*b,S=P+L*y+z*u;var F=0,B=0,O=d,I=b-m*d,N=y,U=u-m*y;for(B=0;B0;){B<64?(b=B,B=0):(b=64,B-=64);for(var O=v[0]|0;O>0;){O<64?(E=O,O=0):(E=64,O-=64);for(var I=v[1]|0;I>0;){I<64?(m=I,I=0):(m=64,I-=64),l=z+B*y+O*d+I*u,S=F+B*L+O*f+I*P;var N=0,U=0,W=0,Q=y,ue=d-b*y,se=u-E*d,he=L,G=f-b*L,$=P-E*f;for(W=0;W_;){N=0,U=F-m;t:for(O=0;OQ)break t;U+=f,N+=P}for(N=F,U=F-m,O=0;O>1,I=O-z,N=O+z,U=F,W=I,Q=O,ue=N,se=B,he=w+1,G=S-1,$=!0,J,Z,re,ne,j,ee,ie,fe,be,Ae=0,Be=0,Ie=0,Ze,at,it,et,lt,Me,ge,ce,ze,tt,nt,Qe,Ct,St,Ot,jt,ur=y,ar=T(ur),Cr=T(ur);at=b*U,it=b*W,jt=m;e:for(Ze=0;Ze0){Z=U,U=W,W=Z;break e}if(Ie<0)break e;jt+=P}at=b*ue,it=b*se,jt=m;e:for(Ze=0;Ze0){Z=ue,ue=se,se=Z;break e}if(Ie<0)break e;jt+=P}at=b*U,it=b*Q,jt=m;e:for(Ze=0;Ze0){Z=U,U=Q,Q=Z;break e}if(Ie<0)break e;jt+=P}at=b*W,it=b*Q,jt=m;e:for(Ze=0;Ze0){Z=W,W=Q,Q=Z;break e}if(Ie<0)break e;jt+=P}at=b*U,it=b*ue,jt=m;e:for(Ze=0;Ze0){Z=U,U=ue,ue=Z;break e}if(Ie<0)break e;jt+=P}at=b*Q,it=b*ue,jt=m;e:for(Ze=0;Ze0){Z=Q,Q=ue,ue=Z;break e}if(Ie<0)break e;jt+=P}at=b*W,it=b*se,jt=m;e:for(Ze=0;Ze0){Z=W,W=se,se=Z;break e}if(Ie<0)break e;jt+=P}at=b*W,it=b*Q,jt=m;e:for(Ze=0;Ze0){Z=W,W=Q,Q=Z;break e}if(Ie<0)break e;jt+=P}at=b*ue,it=b*se,jt=m;e:for(Ze=0;Ze0){Z=ue,ue=se,se=Z;break e}if(Ie<0)break e;jt+=P}for(at=b*U,it=b*W,et=b*Q,lt=b*ue,Me=b*se,ge=b*F,ce=b*O,ze=b*B,Ot=0,jt=m,Ze=0;Ze0)G--;else if(Ie<0){for(at=b*ee,it=b*he,et=b*G,jt=m,Ze=0;Ze0)for(;;){ie=m+G*b,Ot=0;e:for(Ze=0;Ze0){if(--GB){e:for(;;){for(ie=m+he*b,Ot=0,jt=m,Ze=0;Ze1&&_?S(l,_[0],_[1]):S(l)}var h={"uint32,1,0":function(p,T){return function(l){var _=l.data,w=l.offset|0,S=l.shape,E=l.stride,m=E[0]|0,b=S[0]|0,d=E[1]|0,u=S[1]|0,y=d,f=d,P=1;b<=32?p(0,b-1,_,w,m,d,b,u,y,f,P):T(0,b-1,_,w,m,d,b,u,y,f,P)}}};function v(p,T){var l=[T,p].join(","),_=h[l],w=n(p,T),S=c(p,T,w);return _(w,S)}e.exports=v},446:function(e,t,r){"use strict";var o=r(7640),a={};function i(n){var s=n.order,c=n.dtype,h=[s,c],v=h.join(":"),p=a[v];return p||(a[v]=p=o(s,c)),p(n),n}e.exports=i},9618:function(e,t,r){var o=r(7163),a=typeof Float64Array<"u";function i(T,l){return T[0]-l[0]}function n(){var T=this.stride,l=new Array(T.length),_;for(_=0;_=0&&(d=m|0,b+=y*d,u-=d),new w(this.data,u,y,b)},S.step=function(m){var b=this.shape[0],d=this.stride[0],u=this.offset,y=0,f=Math.ceil;return typeof m=="number"&&(y=m|0,y<0?(u+=d*(b-1),b=f(-b/y)):b=f(b/y),d*=y),new w(this.data,b,d,u)},S.transpose=function(m){m=m===void 0?0:m|0;var b=this.shape,d=this.stride;return new w(this.data,b[m],d[m],this.offset)},S.pick=function(m){var b=[],d=[],u=this.offset;typeof m=="number"&&m>=0?u=u+this.stride[0]*m|0:(b.push(this.shape[0]),d.push(this.stride[0]));var y=l[b.length+1];return y(this.data,b,d,u)},function(m,b,d,u){return new w(m,b[0],d[0],u)}},2:function(T,l,_){function w(E,m,b,d,u,y){this.data=E,this.shape=[m,b],this.stride=[d,u],this.offset=y|0}var S=w.prototype;return S.dtype=T,S.dimension=2,Object.defineProperty(S,"size",{get:function(){return this.shape[0]*this.shape[1]}}),Object.defineProperty(S,"order",{get:function(){return Math.abs(this.stride[0])>Math.abs(this.stride[1])?[1,0]:[0,1]}}),S.set=function(m,b,d){return T==="generic"?this.data.set(this.offset+this.stride[0]*m+this.stride[1]*b,d):this.data[this.offset+this.stride[0]*m+this.stride[1]*b]=d},S.get=function(m,b){return T==="generic"?this.data.get(this.offset+this.stride[0]*m+this.stride[1]*b):this.data[this.offset+this.stride[0]*m+this.stride[1]*b]},S.index=function(m,b){return this.offset+this.stride[0]*m+this.stride[1]*b},S.hi=function(m,b){return new w(this.data,typeof m!="number"||m<0?this.shape[0]:m|0,typeof b!="number"||b<0?this.shape[1]:b|0,this.stride[0],this.stride[1],this.offset)},S.lo=function(m,b){var d=this.offset,u=0,y=this.shape[0],f=this.shape[1],P=this.stride[0],L=this.stride[1];return typeof m=="number"&&m>=0&&(u=m|0,d+=P*u,y-=u),typeof b=="number"&&b>=0&&(u=b|0,d+=L*u,f-=u),new w(this.data,y,f,P,L,d)},S.step=function(m,b){var d=this.shape[0],u=this.shape[1],y=this.stride[0],f=this.stride[1],P=this.offset,L=0,z=Math.ceil;return typeof m=="number"&&(L=m|0,L<0?(P+=y*(d-1),d=z(-d/L)):d=z(d/L),y*=L),typeof b=="number"&&(L=b|0,L<0?(P+=f*(u-1),u=z(-u/L)):u=z(u/L),f*=L),new w(this.data,d,u,y,f,P)},S.transpose=function(m,b){m=m===void 0?0:m|0,b=b===void 0?1:b|0;var d=this.shape,u=this.stride;return new w(this.data,d[m],d[b],u[m],u[b],this.offset)},S.pick=function(m,b){var d=[],u=[],y=this.offset;typeof m=="number"&&m>=0?y=y+this.stride[0]*m|0:(d.push(this.shape[0]),u.push(this.stride[0])),typeof b=="number"&&b>=0?y=y+this.stride[1]*b|0:(d.push(this.shape[1]),u.push(this.stride[1]));var f=l[d.length+1];return f(this.data,d,u,y)},function(m,b,d,u){return new w(m,b[0],b[1],d[0],d[1],u)}},3:function(T,l,_){function w(E,m,b,d,u,y,f,P){this.data=E,this.shape=[m,b,d],this.stride=[u,y,f],this.offset=P|0}var S=w.prototype;return S.dtype=T,S.dimension=3,Object.defineProperty(S,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]}}),Object.defineProperty(S,"order",{get:function(){var m=Math.abs(this.stride[0]),b=Math.abs(this.stride[1]),d=Math.abs(this.stride[2]);return m>b?b>d?[2,1,0]:m>d?[1,2,0]:[1,0,2]:m>d?[2,0,1]:d>b?[0,1,2]:[0,2,1]}}),S.set=function(m,b,d,u){return T==="generic"?this.data.set(this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d,u):this.data[this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d]=u},S.get=function(m,b,d){return T==="generic"?this.data.get(this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d):this.data[this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d]},S.index=function(m,b,d){return this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d},S.hi=function(m,b,d){return new w(this.data,typeof m!="number"||m<0?this.shape[0]:m|0,typeof b!="number"||b<0?this.shape[1]:b|0,typeof d!="number"||d<0?this.shape[2]:d|0,this.stride[0],this.stride[1],this.stride[2],this.offset)},S.lo=function(m,b,d){var u=this.offset,y=0,f=this.shape[0],P=this.shape[1],L=this.shape[2],z=this.stride[0],F=this.stride[1],B=this.stride[2];return typeof m=="number"&&m>=0&&(y=m|0,u+=z*y,f-=y),typeof b=="number"&&b>=0&&(y=b|0,u+=F*y,P-=y),typeof d=="number"&&d>=0&&(y=d|0,u+=B*y,L-=y),new w(this.data,f,P,L,z,F,B,u)},S.step=function(m,b,d){var u=this.shape[0],y=this.shape[1],f=this.shape[2],P=this.stride[0],L=this.stride[1],z=this.stride[2],F=this.offset,B=0,O=Math.ceil;return typeof m=="number"&&(B=m|0,B<0?(F+=P*(u-1),u=O(-u/B)):u=O(u/B),P*=B),typeof b=="number"&&(B=b|0,B<0?(F+=L*(y-1),y=O(-y/B)):y=O(y/B),L*=B),typeof d=="number"&&(B=d|0,B<0?(F+=z*(f-1),f=O(-f/B)):f=O(f/B),z*=B),new w(this.data,u,y,f,P,L,z,F)},S.transpose=function(m,b,d){m=m===void 0?0:m|0,b=b===void 0?1:b|0,d=d===void 0?2:d|0;var u=this.shape,y=this.stride;return new w(this.data,u[m],u[b],u[d],y[m],y[b],y[d],this.offset)},S.pick=function(m,b,d){var u=[],y=[],f=this.offset;typeof m=="number"&&m>=0?f=f+this.stride[0]*m|0:(u.push(this.shape[0]),y.push(this.stride[0])),typeof b=="number"&&b>=0?f=f+this.stride[1]*b|0:(u.push(this.shape[1]),y.push(this.stride[1])),typeof d=="number"&&d>=0?f=f+this.stride[2]*d|0:(u.push(this.shape[2]),y.push(this.stride[2]));var P=l[u.length+1];return P(this.data,u,y,f)},function(m,b,d,u){return new w(m,b[0],b[1],b[2],d[0],d[1],d[2],u)}},4:function(T,l,_){function w(E,m,b,d,u,y,f,P,L,z){this.data=E,this.shape=[m,b,d,u],this.stride=[y,f,P,L],this.offset=z|0}var S=w.prototype;return S.dtype=T,S.dimension=4,Object.defineProperty(S,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]}}),Object.defineProperty(S,"order",{get:_}),S.set=function(m,b,d,u,y){return T==="generic"?this.data.set(this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d+this.stride[3]*u,y):this.data[this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d+this.stride[3]*u]=y},S.get=function(m,b,d,u){return T==="generic"?this.data.get(this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d+this.stride[3]*u):this.data[this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d+this.stride[3]*u]},S.index=function(m,b,d,u){return this.offset+this.stride[0]*m+this.stride[1]*b+this.stride[2]*d+this.stride[3]*u},S.hi=function(m,b,d,u){return new w(this.data,typeof m!="number"||m<0?this.shape[0]:m|0,typeof b!="number"||b<0?this.shape[1]:b|0,typeof d!="number"||d<0?this.shape[2]:d|0,typeof u!="number"||u<0?this.shape[3]:u|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.offset)},S.lo=function(m,b,d,u){var y=this.offset,f=0,P=this.shape[0],L=this.shape[1],z=this.shape[2],F=this.shape[3],B=this.stride[0],O=this.stride[1],I=this.stride[2],N=this.stride[3];return typeof m=="number"&&m>=0&&(f=m|0,y+=B*f,P-=f),typeof b=="number"&&b>=0&&(f=b|0,y+=O*f,L-=f),typeof d=="number"&&d>=0&&(f=d|0,y+=I*f,z-=f),typeof u=="number"&&u>=0&&(f=u|0,y+=N*f,F-=f),new w(this.data,P,L,z,F,B,O,I,N,y)},S.step=function(m,b,d,u){var y=this.shape[0],f=this.shape[1],P=this.shape[2],L=this.shape[3],z=this.stride[0],F=this.stride[1],B=this.stride[2],O=this.stride[3],I=this.offset,N=0,U=Math.ceil;return typeof m=="number"&&(N=m|0,N<0?(I+=z*(y-1),y=U(-y/N)):y=U(y/N),z*=N),typeof b=="number"&&(N=b|0,N<0?(I+=F*(f-1),f=U(-f/N)):f=U(f/N),F*=N),typeof d=="number"&&(N=d|0,N<0?(I+=B*(P-1),P=U(-P/N)):P=U(P/N),B*=N),typeof u=="number"&&(N=u|0,N<0?(I+=O*(L-1),L=U(-L/N)):L=U(L/N),O*=N),new w(this.data,y,f,P,L,z,F,B,O,I)},S.transpose=function(m,b,d,u){m=m===void 0?0:m|0,b=b===void 0?1:b|0,d=d===void 0?2:d|0,u=u===void 0?3:u|0;var y=this.shape,f=this.stride;return new w(this.data,y[m],y[b],y[d],y[u],f[m],f[b],f[d],f[u],this.offset)},S.pick=function(m,b,d,u){var y=[],f=[],P=this.offset;typeof m=="number"&&m>=0?P=P+this.stride[0]*m|0:(y.push(this.shape[0]),f.push(this.stride[0])),typeof b=="number"&&b>=0?P=P+this.stride[1]*b|0:(y.push(this.shape[1]),f.push(this.stride[1])),typeof d=="number"&&d>=0?P=P+this.stride[2]*d|0:(y.push(this.shape[2]),f.push(this.stride[2])),typeof u=="number"&&u>=0?P=P+this.stride[3]*u|0:(y.push(this.shape[3]),f.push(this.stride[3]));var L=l[y.length+1];return L(this.data,y,f,P)},function(m,b,d,u){return new w(m,b[0],b[1],b[2],b[3],d[0],d[1],d[2],d[3],u)}},5:function(l,_,w){function S(m,b,d,u,y,f,P,L,z,F,B,O){this.data=m,this.shape=[b,d,u,y,f],this.stride=[P,L,z,F,B],this.offset=O|0}var E=S.prototype;return E.dtype=l,E.dimension=5,Object.defineProperty(E,"size",{get:function(){return this.shape[0]*this.shape[1]*this.shape[2]*this.shape[3]*this.shape[4]}}),Object.defineProperty(E,"order",{get:w}),E.set=function(b,d,u,y,f,P){return l==="generic"?this.data.set(this.offset+this.stride[0]*b+this.stride[1]*d+this.stride[2]*u+this.stride[3]*y+this.stride[4]*f,P):this.data[this.offset+this.stride[0]*b+this.stride[1]*d+this.stride[2]*u+this.stride[3]*y+this.stride[4]*f]=P},E.get=function(b,d,u,y,f){return l==="generic"?this.data.get(this.offset+this.stride[0]*b+this.stride[1]*d+this.stride[2]*u+this.stride[3]*y+this.stride[4]*f):this.data[this.offset+this.stride[0]*b+this.stride[1]*d+this.stride[2]*u+this.stride[3]*y+this.stride[4]*f]},E.index=function(b,d,u,y,f){return this.offset+this.stride[0]*b+this.stride[1]*d+this.stride[2]*u+this.stride[3]*y+this.stride[4]*f},E.hi=function(b,d,u,y,f){return new S(this.data,typeof b!="number"||b<0?this.shape[0]:b|0,typeof d!="number"||d<0?this.shape[1]:d|0,typeof u!="number"||u<0?this.shape[2]:u|0,typeof y!="number"||y<0?this.shape[3]:y|0,typeof f!="number"||f<0?this.shape[4]:f|0,this.stride[0],this.stride[1],this.stride[2],this.stride[3],this.stride[4],this.offset)},E.lo=function(b,d,u,y,f){var P=this.offset,L=0,z=this.shape[0],F=this.shape[1],B=this.shape[2],O=this.shape[3],I=this.shape[4],N=this.stride[0],U=this.stride[1],W=this.stride[2],Q=this.stride[3],ue=this.stride[4];return typeof b=="number"&&b>=0&&(L=b|0,P+=N*L,z-=L),typeof d=="number"&&d>=0&&(L=d|0,P+=U*L,F-=L),typeof u=="number"&&u>=0&&(L=u|0,P+=W*L,B-=L),typeof y=="number"&&y>=0&&(L=y|0,P+=Q*L,O-=L),typeof f=="number"&&f>=0&&(L=f|0,P+=ue*L,I-=L),new S(this.data,z,F,B,O,I,N,U,W,Q,ue,P)},E.step=function(b,d,u,y,f){var P=this.shape[0],L=this.shape[1],z=this.shape[2],F=this.shape[3],B=this.shape[4],O=this.stride[0],I=this.stride[1],N=this.stride[2],U=this.stride[3],W=this.stride[4],Q=this.offset,ue=0,se=Math.ceil;return typeof b=="number"&&(ue=b|0,ue<0?(Q+=O*(P-1),P=se(-P/ue)):P=se(P/ue),O*=ue),typeof d=="number"&&(ue=d|0,ue<0?(Q+=I*(L-1),L=se(-L/ue)):L=se(L/ue),I*=ue),typeof u=="number"&&(ue=u|0,ue<0?(Q+=N*(z-1),z=se(-z/ue)):z=se(z/ue),N*=ue),typeof y=="number"&&(ue=y|0,ue<0?(Q+=U*(F-1),F=se(-F/ue)):F=se(F/ue),U*=ue),typeof f=="number"&&(ue=f|0,ue<0?(Q+=W*(B-1),B=se(-B/ue)):B=se(B/ue),W*=ue),new S(this.data,P,L,z,F,B,O,I,N,U,W,Q)},E.transpose=function(b,d,u,y,f){b=b===void 0?0:b|0,d=d===void 0?1:d|0,u=u===void 0?2:u|0,y=y===void 0?3:y|0,f=f===void 0?4:f|0;var P=this.shape,L=this.stride;return new S(this.data,P[b],P[d],P[u],P[y],P[f],L[b],L[d],L[u],L[y],L[f],this.offset)},E.pick=function(b,d,u,y,f){var P=[],L=[],z=this.offset;typeof b=="number"&&b>=0?z=z+this.stride[0]*b|0:(P.push(this.shape[0]),L.push(this.stride[0])),typeof d=="number"&&d>=0?z=z+this.stride[1]*d|0:(P.push(this.shape[1]),L.push(this.stride[1])),typeof u=="number"&&u>=0?z=z+this.stride[2]*u|0:(P.push(this.shape[2]),L.push(this.stride[2])),typeof y=="number"&&y>=0?z=z+this.stride[3]*y|0:(P.push(this.shape[3]),L.push(this.stride[3])),typeof f=="number"&&f>=0?z=z+this.stride[4]*f|0:(P.push(this.shape[4]),L.push(this.stride[4]));var F=_[P.length+1];return F(this.data,P,L,z)},function(b,d,u,y){return new S(b,d[0],d[1],d[2],d[3],d[4],u[0],u[1],u[2],u[3],u[4],y)}}};function c(T,l){var _=l===-1?"T":String(l),w=s[_];return l===-1?w(T):l===0?w(T,v[T][0]):w(T,v[T],n)}function h(T){if(o(T))return"buffer";if(a)switch(Object.prototype.toString.call(T)){case"[object Float64Array]":return"float64";case"[object Float32Array]":return"float32";case"[object Int8Array]":return"int8";case"[object Int16Array]":return"int16";case"[object Int32Array]":return"int32";case"[object Uint8ClampedArray]":return"uint8_clamped";case"[object Uint8Array]":return"uint8";case"[object Uint16Array]":return"uint16";case"[object Uint32Array]":return"uint32";case"[object BigInt64Array]":return"bigint64";case"[object BigUint64Array]":return"biguint64"}return Array.isArray(T)?"array":"generic"}var v={generic:[],buffer:[],array:[],float32:[],float64:[],int8:[],int16:[],int32:[],uint8_clamped:[],uint8:[],uint16:[],uint32:[],bigint64:[],biguint64:[]};function p(T,l,_,w){if(T===void 0){var u=v.array[0];return u([])}else typeof T=="number"&&(T=[T]);l===void 0&&(l=[T.length]);var S=l.length;if(_===void 0){_=new Array(S);for(var E=S-1,m=1;E>=0;--E)_[E]=m,m*=l[E]}if(w===void 0){w=0;for(var E=0;E>>0;e.exports=n;function n(s,c){if(isNaN(s)||isNaN(c))return NaN;if(s===c)return s;if(s===0)return c<0?-a:a;var h=o.hi(s),v=o.lo(s);return c>s==s>0?v===i?(h+=1,v=0):v+=1:v===0?(v=i,h-=1):v-=1,o.pack(v,h)}},8406:function(e,t){var r=1e-6,o=1e-6;t.vertexNormals=function(a,i,n){for(var s=i.length,c=new Array(s),h=n===void 0?r:n,v=0;vh)for(var P=c[l],L=1/Math.sqrt(d*y),f=0;f<3;++f){var z=(f+1)%3,F=(f+2)%3;P[f]+=L*(u[z]*b[F]-u[F]*b[z])}}for(var v=0;vh)for(var L=1/Math.sqrt(B),f=0;f<3;++f)P[f]*=L;else for(var f=0;f<3;++f)P[f]=0}return c},t.faceNormals=function(a,i,n){for(var s=a.length,c=new Array(s),h=n===void 0?o:n,v=0;vh?E=1/Math.sqrt(E):E=0;for(var l=0;l<3;++l)S[l]*=E;c[v]=S}return c}},4081:function(e){"use strict";e.exports=t;function t(r,o,a,i,n,s,c,h,v,p){var T=o+s+p;if(l>0){var l=Math.sqrt(T+1);r[0]=.5*(c-v)/l,r[1]=.5*(h-i)/l,r[2]=.5*(a-s)/l,r[3]=.5*l}else{var _=Math.max(o,s,p),l=Math.sqrt(2*_-T+1);o>=_?(r[0]=.5*l,r[1]=.5*(n+a)/l,r[2]=.5*(h+i)/l,r[3]=.5*(c-v)/l):s>=_?(r[0]=.5*(a+n)/l,r[1]=.5*l,r[2]=.5*(v+c)/l,r[3]=.5*(h-i)/l):(r[0]=.5*(i+h)/l,r[1]=.5*(c+v)/l,r[2]=.5*l,r[3]=.5*(a-n)/l)}return r}},9977:function(e,t,r){"use strict";e.exports=l;var o=r(9215),a=r(6582),i=r(7399),n=r(7608),s=r(4081);function c(_,w,S){return Math.sqrt(Math.pow(_,2)+Math.pow(w,2)+Math.pow(S,2))}function h(_,w,S,E){return Math.sqrt(Math.pow(_,2)+Math.pow(w,2)+Math.pow(S,2)+Math.pow(E,2))}function v(_,w){var S=w[0],E=w[1],m=w[2],b=w[3],d=h(S,E,m,b);d>1e-6?(_[0]=S/d,_[1]=E/d,_[2]=m/d,_[3]=b/d):(_[0]=_[1]=_[2]=0,_[3]=1)}function p(_,w,S){this.radius=o([S]),this.center=o(w),this.rotation=o(_),this.computedRadius=this.radius.curve(0),this.computedCenter=this.center.curve(0),this.computedRotation=this.rotation.curve(0),this.computedUp=[.1,0,0],this.computedEye=[.1,0,0],this.computedMatrix=[.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],this.recalcMatrix(0)}var T=p.prototype;T.lastT=function(){return Math.max(this.radius.lastT(),this.center.lastT(),this.rotation.lastT())},T.recalcMatrix=function(_){this.radius.curve(_),this.center.curve(_),this.rotation.curve(_);var w=this.computedRotation;v(w,w);var S=this.computedMatrix;i(S,w);var E=this.computedCenter,m=this.computedEye,b=this.computedUp,d=Math.exp(this.computedRadius[0]);m[0]=E[0]+d*S[2],m[1]=E[1]+d*S[6],m[2]=E[2]+d*S[10],b[0]=S[1],b[1]=S[5],b[2]=S[9];for(var u=0;u<3;++u){for(var y=0,f=0;f<3;++f)y+=S[u+4*f]*m[f];S[12+u]=-y}},T.getMatrix=function(_,w){this.recalcMatrix(_);var S=this.computedMatrix;if(w){for(var E=0;E<16;++E)w[E]=S[E];return w}return S},T.idle=function(_){this.center.idle(_),this.radius.idle(_),this.rotation.idle(_)},T.flush=function(_){this.center.flush(_),this.radius.flush(_),this.rotation.flush(_)},T.pan=function(_,w,S,E){w=w||0,S=S||0,E=E||0,this.recalcMatrix(_);var m=this.computedMatrix,b=m[1],d=m[5],u=m[9],y=c(b,d,u);b/=y,d/=y,u/=y;var f=m[0],P=m[4],L=m[8],z=f*b+P*d+L*u;f-=b*z,P-=d*z,L-=u*z;var F=c(f,P,L);f/=F,P/=F,L/=F;var B=m[2],O=m[6],I=m[10],N=B*b+O*d+I*u,U=B*f+O*P+I*L;B-=N*b+U*f,O-=N*d+U*P,I-=N*u+U*L;var W=c(B,O,I);B/=W,O/=W,I/=W;var Q=f*w+b*S,ue=P*w+d*S,se=L*w+u*S;this.center.move(_,Q,ue,se);var he=Math.exp(this.computedRadius[0]);he=Math.max(1e-4,he+E),this.radius.set(_,Math.log(he))},T.rotate=function(_,w,S,E){this.recalcMatrix(_),w=w||0,S=S||0;var m=this.computedMatrix,b=m[0],d=m[4],u=m[8],y=m[1],f=m[5],P=m[9],L=m[2],z=m[6],F=m[10],B=w*b+S*y,O=w*d+S*f,I=w*u+S*P,N=-(z*I-F*O),U=-(F*B-L*I),W=-(L*O-z*B),Q=Math.sqrt(Math.max(0,1-Math.pow(N,2)-Math.pow(U,2)-Math.pow(W,2))),ue=h(N,U,W,Q);ue>1e-6?(N/=ue,U/=ue,W/=ue,Q/=ue):(N=U=W=0,Q=1);var se=this.computedRotation,he=se[0],G=se[1],$=se[2],J=se[3],Z=he*Q+J*N+G*W-$*U,re=G*Q+J*U+$*N-he*W,ne=$*Q+J*W+he*U-G*N,j=J*Q-he*N-G*U-$*W;if(E){N=L,U=z,W=F;var ee=Math.sin(E)/c(N,U,W);N*=ee,U*=ee,W*=ee,Q=Math.cos(w),Z=Z*Q+j*N+re*W-ne*U,re=re*Q+j*U+ne*N-Z*W,ne=ne*Q+j*W+Z*U-re*N,j=j*Q-Z*N-re*U-ne*W}var ie=h(Z,re,ne,j);ie>1e-6?(Z/=ie,re/=ie,ne/=ie,j/=ie):(Z=re=ne=0,j=1),this.rotation.set(_,Z,re,ne,j)},T.lookAt=function(_,w,S,E){this.recalcMatrix(_),S=S||this.computedCenter,w=w||this.computedEye,E=E||this.computedUp;var m=this.computedMatrix;a(m,w,S,E);var b=this.computedRotation;s(b,m[0],m[1],m[2],m[4],m[5],m[6],m[8],m[9],m[10]),v(b,b),this.rotation.set(_,b[0],b[1],b[2],b[3]);for(var d=0,u=0;u<3;++u)d+=Math.pow(S[u]-w[u],2);this.radius.set(_,.5*Math.log(Math.max(d,1e-6))),this.center.set(_,S[0],S[1],S[2])},T.translate=function(_,w,S,E){this.center.move(_,w||0,S||0,E||0)},T.setMatrix=function(_,w){var S=this.computedRotation;s(S,w[0],w[1],w[2],w[4],w[5],w[6],w[8],w[9],w[10]),v(S,S),this.rotation.set(_,S[0],S[1],S[2],S[3]);var E=this.computedMatrix;n(E,w);var m=E[15];if(Math.abs(m)>1e-6){var b=E[12]/m,d=E[13]/m,u=E[14]/m;this.recalcMatrix(_);var y=Math.exp(this.computedRadius[0]);this.center.set(_,b-E[2]*y,d-E[6]*y,u-E[10]*y),this.radius.idle(_)}else this.center.idle(_),this.radius.idle(_)},T.setDistance=function(_,w){w>0&&this.radius.set(_,Math.log(w))},T.setDistanceLimits=function(_,w){_>0?_=Math.log(_):_=-1/0,w>0?w=Math.log(w):w=1/0,w=Math.max(w,_),this.radius.bounds[0][0]=_,this.radius.bounds[1][0]=w},T.getDistanceLimits=function(_){var w=this.radius.bounds;return _?(_[0]=Math.exp(w[0][0]),_[1]=Math.exp(w[1][0]),_):[Math.exp(w[0][0]),Math.exp(w[1][0])]},T.toJSON=function(){return this.recalcMatrix(this.lastT()),{center:this.computedCenter.slice(),rotation:this.computedRotation.slice(),distance:Math.log(this.computedRadius[0]),zoomMin:this.radius.bounds[0][0],zoomMax:this.radius.bounds[1][0]}},T.fromJSON=function(_){var w=this.lastT(),S=_.center;S&&this.center.set(w,S[0],S[1],S[2]);var E=_.rotation;E&&this.rotation.set(w,E[0],E[1],E[2],E[3]);var m=_.distance;m&&m>0&&this.radius.set(w,Math.log(m)),this.setDistanceLimits(_.zoomMin,_.zoomMax)};function l(_){_=_||{};var w=_.center||[0,0,0],S=_.rotation||[0,0,0,1],E=_.radius||1;w=[].slice.call(w,0,3),S=[].slice.call(S,0,4),v(S,S);var m=new p(S,w,Math.log(E));return m.setDistanceLimits(_.zoomMin,_.zoomMax),("eye"in _||"up"in _)&&m.lookAt(0,_.eye,_.center,_.up),m}},1371:function(e,t,r){"use strict";var o=r(3233);e.exports=function(i,n,s){return s=typeof s<"u"?s+"":" ",o(s,n)+i}},3202:function(e){e.exports=function(r,o){o||(o=[0,""]),r=String(r);var a=parseFloat(r,10);return o[0]=a,o[1]=r.match(/[\d.\-\+]*\s*(.*)/)[1]||"",o}},3088:function(e,t,r){"use strict";e.exports=a;var o=r(3140);function a(i,n){for(var s=n.length|0,c=i.length,h=[new Array(s),new Array(s)],v=0;v0){P=h[F][y][0],z=F;break}L=P[z^1];for(var B=0;B<2;++B)for(var O=h[B][y],I=0;I0&&(P=N,L=U,z=B)}return f||P&&l(P,z),L}function w(u,y){var f=h[y][u][0],P=[u];l(f,y);for(var L=f[y^1],z=y;;){for(;L!==u;)P.push(L),L=_(P[P.length-2],L,!1);if(h[0][u].length+h[1][u].length===0)break;var F=P[P.length-1],B=u,O=P[1],I=_(F,B,!0);if(o(n[F],n[B],n[O],n[I])<0)break;P.push(u),L=_(F,B)}return P}function S(u,y){return y[1]===y[y.length-1]}for(var v=0;v0;){var b=h[0][v].length,d=w(v,E);S(m,d)?m.push.apply(m,d):(m.length>0&&T.push(m),m=d)}m.length>0&&T.push(m)}return T}},5609:function(e,t,r){"use strict";e.exports=a;var o=r(3134);function a(i,n){for(var s=o(i,n.length),c=new Array(n.length),h=new Array(n.length),v=[],p=0;p0;){var l=v.pop();c[l]=!1;for(var _=s[l],p=0;p<_.length;++p){var w=_[p];--h[w]===0&&v.push(w)}}for(var S=new Array(n.length),E=[],p=0;p0}b=b.filter(d);for(var u=b.length,y=new Array(u),f=new Array(u),m=0;m0;){var ie=ne.pop(),fe=ue[ie];c(fe,function(Ze,at){return Ze-at});var be=fe.length,Ae=j[ie],Be;if(Ae===0){var O=b[ie];Be=[O]}for(var m=0;m=0)&&(j[Ie]=Ae^1,ne.push(Ie),Ae===0)){var O=b[Ie];re(O)||(O.reverse(),Be.push(O))}}Ae===0&&ee.push(Be)}return ee}},5085:function(e,t,r){e.exports=_;var o=r(3250)[3],a=r(4209),i=r(3352),n=r(2478);function s(){return!0}function c(w){return function(S,E){var m=w[S];return m?!!m.queryPoint(E,s):!1}}function h(w){for(var S={},E=0;E0&&S[m]===E[0])b=w[m-1];else return 1;for(var d=1;b;){var u=b.key,y=o(E,u[0],u[1]);if(u[0][0]0)d=-1,b=b.right;else return 0;else if(y>0)b=b.left;else if(y<0)d=1,b=b.right;else return 0}return d}}function p(w){return 1}function T(w){return function(E){return w(E[0],E[1])?0:1}}function l(w,S){return function(m){return w(m[0],m[1])?0:S(m)}}function _(w){for(var S=w.length,E=[],m=[],b=0,d=0;d=p?(u=1,f=p+2*_+S):(u=-_/p,f=_*u+S)):(u=0,w>=0?(y=0,f=S):-w>=l?(y=1,f=l+2*w+S):(y=-w/l,f=w*y+S));else if(y<0)y=0,_>=0?(u=0,f=S):-_>=p?(u=1,f=p+2*_+S):(u=-_/p,f=_*u+S);else{var P=1/d;u*=P,y*=P,f=u*(p*u+T*y+2*_)+y*(T*u+l*y+2*w)+S}else{var L,z,F,B;u<0?(L=T+_,z=l+w,z>L?(F=z-L,B=p-2*T+l,F>=B?(u=1,y=0,f=p+2*_+S):(u=F/B,y=1-u,f=u*(p*u+T*y+2*_)+y*(T*u+l*y+2*w)+S)):(u=0,z<=0?(y=1,f=l+2*w+S):w>=0?(y=0,f=S):(y=-w/l,f=w*y+S))):y<0?(L=T+w,z=p+_,z>L?(F=z-L,B=p-2*T+l,F>=B?(y=1,u=0,f=l+2*w+S):(y=F/B,u=1-y,f=u*(p*u+T*y+2*_)+y*(T*u+l*y+2*w)+S)):(y=0,z<=0?(u=1,f=p+2*_+S):_>=0?(u=0,f=S):(u=-_/p,f=_*u+S))):(F=l+w-T-_,F<=0?(u=0,y=1,f=l+2*w+S):(B=p-2*T+l,F>=B?(u=1,y=0,f=p+2*_+S):(u=F/B,y=1-u,f=u*(p*u+T*y+2*_)+y*(T*u+l*y+2*w)+S)))}for(var O=1-u-y,v=0;v0){var l=s[h-1];if(o(p,l)===0&&i(l)!==T){h-=1;continue}}s[h++]=p}}return s.length=h,s}},3233:function(e){"use strict";var t="",r;e.exports=o;function o(a,i){if(typeof a!="string")throw new TypeError("expected a string");if(i===1)return a;if(i===2)return a+a;var n=a.length*i;if(r!==a||typeof r>"u")r=a,t="";else if(t.length>=n)return t.substr(0,n);for(;n>t.length&&i>1;)i&1&&(t+=a),i>>=1,a+=a;return t+=a,t=t.substr(0,n),t}},3025:function(e,t,r){e.exports=r.g.performance&&r.g.performance.now?function(){return performance.now()}:Date.now||function(){return+new Date}},7004:function(e){"use strict";e.exports=t;function t(r){for(var o=r.length,a=r[r.length-1],i=o,n=o-2;n>=0;--n){var s=a,c=r[n];a=s+c;var h=a-s,v=c-h;v&&(r[--i]=a,a=v)}for(var p=0,n=i;n0){if(z<=0)return F;B=L+z}else if(L<0){if(z>=0)return F;B=-(L+z)}else return F;var O=h*B;return F>=O||F<=-O?F:w(y,f,P)},function(y,f,P,L){var z=y[0]-L[0],F=f[0]-L[0],B=P[0]-L[0],O=y[1]-L[1],I=f[1]-L[1],N=P[1]-L[1],U=y[2]-L[2],W=f[2]-L[2],Q=P[2]-L[2],ue=F*N,se=B*I,he=B*O,G=z*N,$=z*I,J=F*O,Z=U*(ue-se)+W*(he-G)+Q*($-J),re=(Math.abs(ue)+Math.abs(se))*Math.abs(U)+(Math.abs(he)+Math.abs(G))*Math.abs(W)+(Math.abs($)+Math.abs(J))*Math.abs(Q),ne=v*re;return Z>ne||-Z>ne?Z:S(y,f,P,L)}];function m(u){var y=E[u.length];return y||(y=E[u.length]=_(u.length)),y.apply(void 0,u)}function b(u,y,f,P,L,z,F){return function(O,I,N,U,W){switch(arguments.length){case 0:case 1:return 0;case 2:return P(O,I);case 3:return L(O,I,N);case 4:return z(O,I,N,U);case 5:return F(O,I,N,U,W)}for(var Q=new Array(arguments.length),ue=0;ue0&&p>0||v<0&&p<0)return!1;var T=o(c,n,s),l=o(h,n,s);return T>0&&l>0||T<0&&l<0?!1:v===0&&p===0&&T===0&&l===0?a(n,s,c,h):!0}},8545:function(e){"use strict";e.exports=r;function t(o,a){var i=o+a,n=i-o,s=i-n,c=a-n,h=o-s,v=h+c;return v?[v,i]:[i]}function r(o,a){var i=o.length|0,n=a.length|0;if(i===1&&n===1)return t(o[0],-a[0]);var s=i+n,c=new Array(s),h=0,v=0,p=0,T=Math.abs,l=o[v],_=T(l),w=-a[p],S=T(w),E,m;_=n?(E=l,v+=1,v=n?(E=l,v+=1,v"u"&&(E=s(_));var m=_.length;if(m===0||E<1)return{cells:[],vertexIds:[],vertexWeights:[]};var b=c(w,+S),d=h(_,E),u=v(d,w,b,+S),y=p(d,w.length|0),f=n(E)(_,d.data,y,b),P=T(d),L=[].slice.call(u.data,0,u.shape[0]);return a.free(b),a.free(d.data),a.free(u.data),a.free(y),{cells:f,vertexIds:P,vertexWeights:L}}},1570:function(e){"use strict";e.exports=r;var t=[function(){function a(n,s,c,h){for(var v=Math.min(c,h)|0,p=Math.max(c,h)|0,T=n[2*v],l=n[2*v+1];T>1,w=s[2*_+1];if(w===p)return _;p>1,w=s[2*_+1];if(w===p)return _;p>1,w=s[2*_+1];if(w===p)return _;p>1,w=s[2*_+1];if(w===p)return _;p>1,B=h(y[F],f);B<=0?(B===0&&(z=F),P=F+1):B>0&&(L=F-1)}return z}o=l;function _(y,f){for(var P=new Array(y.length),L=0,z=P.length;L=y.length||h(y[ue],F)!==0););}return P}o=_;function w(y,f){if(!f)return _(T(E(y,0)),y,0);for(var P=new Array(f),L=0;L>>N&1&&I.push(z[N]);f.push(I)}return p(f)}o=S;function E(y,f){if(f<0)return[];for(var P=[],L=(1<0)-(i<0)},t.abs=function(i){var n=i>>r-1;return(i^n)-n},t.min=function(i,n){return n^(i^n)&-(i65535)<<4,i>>>=n,s=(i>255)<<3,i>>>=s,n|=s,s=(i>15)<<2,i>>>=s,n|=s,s=(i>3)<<1,i>>>=s,n|=s,n|i>>1},t.log10=function(i){return i>=1e9?9:i>=1e8?8:i>=1e7?7:i>=1e6?6:i>=1e5?5:i>=1e4?4:i>=1e3?3:i>=100?2:i>=10?1:0},t.popCount=function(i){return i=i-(i>>>1&1431655765),i=(i&858993459)+(i>>>2&858993459),(i+(i>>>4)&252645135)*16843009>>>24};function o(i){var n=32;return i&=-i,i&&n--,i&65535&&(n-=16),i&16711935&&(n-=8),i&252645135&&(n-=4),i&858993459&&(n-=2),i&1431655765&&(n-=1),n}t.countTrailingZeros=o,t.nextPow2=function(i){return i+=i===0,--i,i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i+1},t.prevPow2=function(i){return i|=i>>>1,i|=i>>>2,i|=i>>>4,i|=i>>>8,i|=i>>>16,i-(i>>>1)},t.parity=function(i){return i^=i>>>16,i^=i>>>8,i^=i>>>4,i&=15,27030>>>i&1};var a=new Array(256);(function(i){for(var n=0;n<256;++n){var s=n,c=n,h=7;for(s>>>=1;s;s>>>=1)c<<=1,c|=s&1,--h;i[n]=c<>>8&255]<<16|a[i>>>16&255]<<8|a[i>>>24&255]},t.interleave2=function(i,n){return i&=65535,i=(i|i<<8)&16711935,i=(i|i<<4)&252645135,i=(i|i<<2)&858993459,i=(i|i<<1)&1431655765,n&=65535,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,i|n<<1},t.deinterleave2=function(i,n){return i=i>>>n&1431655765,i=(i|i>>>1)&858993459,i=(i|i>>>2)&252645135,i=(i|i>>>4)&16711935,i=(i|i>>>16)&65535,i<<16>>16},t.interleave3=function(i,n,s){return i&=1023,i=(i|i<<16)&4278190335,i=(i|i<<8)&251719695,i=(i|i<<4)&3272356035,i=(i|i<<2)&1227133513,n&=1023,n=(n|n<<16)&4278190335,n=(n|n<<8)&251719695,n=(n|n<<4)&3272356035,n=(n|n<<2)&1227133513,i|=n<<1,s&=1023,s=(s|s<<16)&4278190335,s=(s|s<<8)&251719695,s=(s|s<<4)&3272356035,s=(s|s<<2)&1227133513,i|s<<2},t.deinterleave3=function(i,n){return i=i>>>n&1227133513,i=(i|i>>>2)&3272356035,i=(i|i>>>4)&251719695,i=(i|i>>>8)&4278190335,i=(i|i>>>16)&1023,i<<22>>22},t.nextCombination=function(i){var n=i|i-1;return n+1|(~n&-~n)-1>>>o(i)+1}},2014:function(e,t,r){"use strict";"use restrict";var o=r(3105),a=r(4623);function i(u){for(var y=0,f=Math.max,P=0,L=u.length;P>1,F=c(u[z],y);F<=0?(F===0&&(L=z),f=z+1):F>0&&(P=z-1)}return L}t.findCell=T;function l(u,y){for(var f=new Array(u.length),P=0,L=f.length;P=u.length||c(u[Q],z)!==0););}return f}t.incidence=l;function _(u,y){if(!y)return l(p(S(u,0)),u,0);for(var f=new Array(y),P=0;P>>I&1&&O.push(L[I]);y.push(O)}return v(y)}t.explode=w;function S(u,y){if(y<0)return[];for(var f=[],P=(1<>1:(G>>1)-1}function P(G){for(var $=y(G);;){var J=$,Z=2*G+1,re=2*(G+1),ne=G;if(Z0;){var J=f(G);if(J>=0){var Z=y(J);if($0){var G=O[0];return u(0,U-1),U-=1,P(0),G}return-1}function F(G,$){var J=O[G];return _[J]===$?G:(_[J]=-1/0,L(G),z(),_[J]=$,U+=1,L(U-1))}function B(G){if(!w[G]){w[G]=!0;var $=T[G],J=l[G];T[J]>=0&&(T[J]=$),l[$]>=0&&(l[$]=J),I[$]>=0&&F(I[$],d($)),I[J]>=0&&F(I[J],d(J))}}for(var O=[],I=new Array(v),S=0;S>1;S>=0;--S)P(S);for(;;){var W=z();if(W<0||_[W]>h)break;B(W)}for(var Q=[],S=0;S=0&&J>=0&&$!==J){var Z=I[$],re=I[J];Z!==re&&he.push([Z,re])}}),a.unique(a.normalize(he)),{positions:Q,edges:he}}},1303:function(e,t,r){"use strict";e.exports=i;var o=r(3250);function a(n,s){var c,h;if(s[0][0]s[1][0])c=s[1],h=s[0];else{var v=Math.min(n[0][1],n[1][1]),p=Math.max(n[0][1],n[1][1]),T=Math.min(s[0][1],s[1][1]),l=Math.max(s[0][1],s[1][1]);return pl?v-l:p-l}var _,w;n[0][1]s[1][0])c=s[1],h=s[0];else return a(s,n);var v,p;if(n[0][0]n[1][0])v=n[1],p=n[0];else return-a(n,s);var T=o(c,h,p),l=o(c,h,v);if(T<0){if(l<=0)return T}else if(T>0){if(l>=0)return T}else if(l)return l;if(T=o(p,v,h),l=o(p,v,c),T<0){if(l<=0)return T}else if(T>0){if(l>=0)return T}else if(l)return l;return h[0]-p[0]}},4209:function(e,t,r){"use strict";e.exports=l;var o=r(2478),a=r(3840),i=r(3250),n=r(1303);function s(_,w,S){this.slabs=_,this.coordinates=w,this.horizontal=S}var c=s.prototype;function h(_,w){return _.y-w}function v(_,w){for(var S=null;_;){var E=_.key,m,b;E[0][0]0)if(w[0]!==E[1][0])S=_,_=_.right;else{var u=v(_.right,w);if(u)return u;_=_.left}else{if(w[0]!==E[1][0])return _;var u=v(_.right,w);if(u)return u;_=_.left}}return S}c.castUp=function(_){var w=o.le(this.coordinates,_[0]);if(w<0)return-1;var S=this.slabs[w],E=v(this.slabs[w],_),m=-1;if(E&&(m=E.value),this.coordinates[w]===_[0]){var b=null;if(E&&(b=E.key),w>0){var d=v(this.slabs[w-1],_);d&&(b?n(d.key,b)>0&&(b=d.key,m=d.value):(m=d.value,b=d.key))}var u=this.horizontal[w];if(u.length>0){var y=o.ge(u,_[1],h);if(y=u.length)return m;f=u[y]}}if(f.start)if(b){var P=i(b[0],b[1],[_[0],f.y]);b[0][0]>b[1][0]&&(P=-P),P>0&&(m=f.index)}else m=f.index;else f.y!==_[1]&&(m=f.index)}}}return m};function p(_,w,S,E){this.y=_,this.index=w,this.start=S,this.closed=E}function T(_,w,S,E){this.x=_,this.segment=w,this.create=S,this.index=E}function l(_){for(var w=_.length,S=2*w,E=new Array(S),m=0;m1&&(w=1);for(var S=1-w,E=v.length,m=new Array(E),b=0;b0||_>0&&m<0){var b=n(w,m,S,_);T.push(b),l.push(b.slice())}m<0?l.push(S.slice()):m>0?T.push(S.slice()):(T.push(S.slice()),l.push(S.slice())),_=m}return{positive:T,negative:l}}function c(v,p){for(var T=[],l=i(v[v.length-1],p),_=v[v.length-1],w=v[0],S=0;S0||l>0&&E<0)&&T.push(n(_,E,w,l)),E>=0&&T.push(w.slice()),l=E}return T}function h(v,p){for(var T=[],l=i(v[v.length-1],p),_=v[v.length-1],w=v[0],S=0;S0||l>0&&E<0)&&T.push(n(_,E,w,l)),E<=0&&T.push(w.slice()),l=E}return T}},3387:function(e,t,r){var o;(function(){"use strict";var a={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function i(v){return s(h(v),arguments)}function n(v,p){return i.apply(null,[v].concat(p||[]))}function s(v,p){var T=1,l=v.length,_,w="",S,E,m,b,d,u,y,f;for(S=0;S=0),m.type){case"b":_=parseInt(_,10).toString(2);break;case"c":_=String.fromCharCode(parseInt(_,10));break;case"d":case"i":_=parseInt(_,10);break;case"j":_=JSON.stringify(_,null,m.width?parseInt(m.width):0);break;case"e":_=m.precision?parseFloat(_).toExponential(m.precision):parseFloat(_).toExponential();break;case"f":_=m.precision?parseFloat(_).toFixed(m.precision):parseFloat(_);break;case"g":_=m.precision?String(Number(_.toPrecision(m.precision))):parseFloat(_);break;case"o":_=(parseInt(_,10)>>>0).toString(8);break;case"s":_=String(_),_=m.precision?_.substring(0,m.precision):_;break;case"t":_=String(!!_),_=m.precision?_.substring(0,m.precision):_;break;case"T":_=Object.prototype.toString.call(_).slice(8,-1).toLowerCase(),_=m.precision?_.substring(0,m.precision):_;break;case"u":_=parseInt(_,10)>>>0;break;case"v":_=_.valueOf(),_=m.precision?_.substring(0,m.precision):_;break;case"x":_=(parseInt(_,10)>>>0).toString(16);break;case"X":_=(parseInt(_,10)>>>0).toString(16).toUpperCase();break}a.json.test(m.type)?w+=_:(a.number.test(m.type)&&(!y||m.sign)?(f=y?"+":"-",_=_.toString().replace(a.sign,"")):f="",d=m.pad_char?m.pad_char==="0"?"0":m.pad_char.charAt(1):" ",u=m.width-(f+_).length,b=m.width&&u>0?d.repeat(u):"",w+=m.align?f+_+b:d==="0"?f+b+_:b+f+_)}return w}var c=Object.create(null);function h(v){if(c[v])return c[v];for(var p=v,T,l=[],_=0;p;){if((T=a.text.exec(p))!==null)l.push(T[0]);else if((T=a.modulo.exec(p))!==null)l.push("%");else if((T=a.placeholder.exec(p))!==null){if(T[2]){_|=1;var w=[],S=T[2],E=[];if((E=a.key.exec(S))!==null)for(w.push(E[1]);(S=S.substring(E[0].length))!=="";)if((E=a.key_access.exec(S))!==null)w.push(E[1]);else if((E=a.index_access.exec(S))!==null)w.push(E[1]);else throw new SyntaxError("[sprintf] failed to parse named argument key");else throw new SyntaxError("[sprintf] failed to parse named argument key");T[2]=w}else _|=2;if(_===3)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");l.push({placeholder:T[0],param_no:T[1],keys:T[2],sign:T[3],pad_char:T[4],align:T[5],width:T[6],precision:T[7],type:T[8]})}else throw new SyntaxError("[sprintf] unexpected placeholder");p=p.substring(T[0].length)}return c[v]=l}t.sprintf=i,t.vsprintf=n,typeof window<"u"&&(window.sprintf=i,window.vsprintf=n,o=function(){return{sprintf:i,vsprintf:n}}.call(t,r,t,e),o!==void 0&&(e.exports=o))})()},3711:function(e,t,r){"use strict";e.exports=h;var o=r(2640),a=r(781),i={"2d":function(v,p,T){var l=v({order:p,scalarArguments:3,getters:T==="generic"?[0]:void 0,phase:function(w,S,E,m){return w>m|0},vertex:function(w,S,E,m,b,d,u,y,f,P,L,z,F){var B=(u<<0)+(y<<1)+(f<<2)+(P<<3)|0;if(!(B===0||B===15))switch(B){case 0:L.push([w-.5,S-.5]);break;case 1:L.push([w-.25-.25*(m+E-2*F)/(E-m),S-.25-.25*(b+E-2*F)/(E-b)]);break;case 2:L.push([w-.75-.25*(-m-E+2*F)/(m-E),S-.25-.25*(d+m-2*F)/(m-d)]);break;case 3:L.push([w-.5,S-.5-.5*(b+E+d+m-4*F)/(E-b+m-d)]);break;case 4:L.push([w-.25-.25*(d+b-2*F)/(b-d),S-.75-.25*(-b-E+2*F)/(b-E)]);break;case 5:L.push([w-.5-.5*(m+E+d+b-4*F)/(E-m+b-d),S-.5]);break;case 6:L.push([w-.5-.25*(-m-E+d+b)/(m-E+b-d),S-.5-.25*(-b-E+d+m)/(b-E+m-d)]);break;case 7:L.push([w-.75-.25*(d+b-2*F)/(b-d),S-.75-.25*(d+m-2*F)/(m-d)]);break;case 8:L.push([w-.75-.25*(-d-b+2*F)/(d-b),S-.75-.25*(-d-m+2*F)/(d-m)]);break;case 9:L.push([w-.5-.25*(m+E+-d-b)/(E-m+d-b),S-.5-.25*(b+E+-d-m)/(E-b+d-m)]);break;case 10:L.push([w-.5-.5*(-m-E+-d-b+4*F)/(m-E+d-b),S-.5]);break;case 11:L.push([w-.25-.25*(-d-b+2*F)/(d-b),S-.75-.25*(b+E-2*F)/(E-b)]);break;case 12:L.push([w-.5,S-.5-.5*(-b-E+-d-m+4*F)/(b-E+d-m)]);break;case 13:L.push([w-.75-.25*(m+E-2*F)/(E-m),S-.25-.25*(-d-m+2*F)/(d-m)]);break;case 14:L.push([w-.25-.25*(-m-E+2*F)/(m-E),S-.25-.25*(-b-E+2*F)/(b-E)]);break;case 15:L.push([w-.5,S-.5]);break}},cell:function(w,S,E,m,b,d,u,y,f){b?y.push([w,S]):y.push([S,w])}});return function(_,w){var S=[],E=[];return l(_,S,E,w),{positions:S,cells:E}}}};function n(v,p){var T=v.length+"d",l=i[T];if(l)return l(o,v,p)}function s(v,p){for(var T=a(v,p),l=T.length,_=new Array(l),w=new Array(l),S=0;SMath.max(m,b)?d[2]=1:m>Math.max(E,b)?d[0]=1:d[1]=1;for(var u=0,y=0,f=0;f<3;++f)u+=S[f]*S[f],y+=d[f]*S[f];for(var f=0;f<3;++f)d[f]-=y/u*S[f];return s(d,d),d}function T(S,E,m,b,d,u,y,f){this.center=o(m),this.up=o(b),this.right=o(d),this.radius=o([u]),this.angle=o([y,f]),this.angle.bounds=[[-1/0,-Math.PI/2],[1/0,Math.PI/2]],this.setDistanceLimits(S,E),this.computedCenter=this.center.curve(0),this.computedUp=this.up.curve(0),this.computedRight=this.right.curve(0),this.computedRadius=this.radius.curve(0),this.computedAngle=this.angle.curve(0),this.computedToward=[0,0,0],this.computedEye=[0,0,0],this.computedMatrix=new Array(16);for(var P=0;P<16;++P)this.computedMatrix[P]=.5;this.recalcMatrix(0)}var l=T.prototype;l.setDistanceLimits=function(S,E){S>0?S=Math.log(S):S=-1/0,E>0?E=Math.log(E):E=1/0,E=Math.max(E,S),this.radius.bounds[0][0]=S,this.radius.bounds[1][0]=E},l.getDistanceLimits=function(S){var E=this.radius.bounds[0];return S?(S[0]=Math.exp(E[0][0]),S[1]=Math.exp(E[1][0]),S):[Math.exp(E[0][0]),Math.exp(E[1][0])]},l.recalcMatrix=function(S){this.center.curve(S),this.up.curve(S),this.right.curve(S),this.radius.curve(S),this.angle.curve(S);for(var E=this.computedUp,m=this.computedRight,b=0,d=0,u=0;u<3;++u)d+=E[u]*m[u],b+=E[u]*E[u];for(var y=Math.sqrt(b),f=0,u=0;u<3;++u)m[u]-=E[u]*d/b,f+=m[u]*m[u],E[u]/=y;for(var P=Math.sqrt(f),u=0;u<3;++u)m[u]/=P;var L=this.computedToward;n(L,E,m),s(L,L);for(var z=Math.exp(this.computedRadius[0]),F=this.computedAngle[0],B=this.computedAngle[1],O=Math.cos(F),I=Math.sin(F),N=Math.cos(B),U=Math.sin(B),W=this.computedCenter,Q=O*N,ue=I*N,se=U,he=-O*U,G=-I*U,$=N,J=this.computedEye,Z=this.computedMatrix,u=0;u<3;++u){var re=Q*m[u]+ue*L[u]+se*E[u];Z[4*u+1]=he*m[u]+G*L[u]+$*E[u],Z[4*u+2]=re,Z[4*u+3]=0}var ne=Z[1],j=Z[5],ee=Z[9],ie=Z[2],fe=Z[6],be=Z[10],Ae=j*be-ee*fe,Be=ee*ie-ne*be,Ie=ne*fe-j*ie,Ze=h(Ae,Be,Ie);Ae/=Ze,Be/=Ze,Ie/=Ze,Z[0]=Ae,Z[4]=Be,Z[8]=Ie;for(var u=0;u<3;++u)J[u]=W[u]+Z[2+4*u]*z;for(var u=0;u<3;++u){for(var f=0,at=0;at<3;++at)f+=Z[u+4*at]*J[at];Z[12+u]=-f}Z[15]=1},l.getMatrix=function(S,E){this.recalcMatrix(S);var m=this.computedMatrix;if(E){for(var b=0;b<16;++b)E[b]=m[b];return E}return m};var _=[0,0,0];l.rotate=function(S,E,m,b){if(this.angle.move(S,E,m),b){this.recalcMatrix(S);var d=this.computedMatrix;_[0]=d[2],_[1]=d[6],_[2]=d[10];for(var u=this.computedUp,y=this.computedRight,f=this.computedToward,P=0;P<3;++P)d[4*P]=u[P],d[4*P+1]=y[P],d[4*P+2]=f[P];i(d,d,b,_);for(var P=0;P<3;++P)u[P]=d[4*P],y[P]=d[4*P+1];this.up.set(S,u[0],u[1],u[2]),this.right.set(S,y[0],y[1],y[2])}},l.pan=function(S,E,m,b){E=E||0,m=m||0,b=b||0,this.recalcMatrix(S);var d=this.computedMatrix,u=Math.exp(this.computedRadius[0]),y=d[1],f=d[5],P=d[9],L=h(y,f,P);y/=L,f/=L,P/=L;var z=d[0],F=d[4],B=d[8],O=z*y+F*f+B*P;z-=y*O,F-=f*O,B-=P*O;var I=h(z,F,B);z/=I,F/=I,B/=I;var N=z*E+y*m,U=F*E+f*m,W=B*E+P*m;this.center.move(S,N,U,W);var Q=Math.exp(this.computedRadius[0]);Q=Math.max(1e-4,Q+b),this.radius.set(S,Math.log(Q))},l.translate=function(S,E,m,b){this.center.move(S,E||0,m||0,b||0)},l.setMatrix=function(S,E,m,b){var d=1;typeof m=="number"&&(d=m|0),(d<0||d>3)&&(d=1);var u=(d+2)%3,y=(d+1)%3;E||(this.recalcMatrix(S),E=this.computedMatrix);var f=E[d],P=E[d+4],L=E[d+8];if(b){var F=Math.abs(f),B=Math.abs(P),O=Math.abs(L),I=Math.max(F,B,O);F===I?(f=f<0?-1:1,P=L=0):O===I?(L=L<0?-1:1,f=P=0):(P=P<0?-1:1,f=L=0)}else{var z=h(f,P,L);f/=z,P/=z,L/=z}var N=E[u],U=E[u+4],W=E[u+8],Q=N*f+U*P+W*L;N-=f*Q,U-=P*Q,W-=L*Q;var ue=h(N,U,W);N/=ue,U/=ue,W/=ue;var se=P*W-L*U,he=L*N-f*W,G=f*U-P*N,$=h(se,he,G);se/=$,he/=$,G/=$,this.center.jump(S,ge,ce,ze),this.radius.idle(S),this.up.jump(S,f,P,L),this.right.jump(S,N,U,W);var J,Z;if(d===2){var re=E[1],ne=E[5],j=E[9],ee=re*N+ne*U+j*W,ie=re*se+ne*he+j*G;Be<0?J=-Math.PI/2:J=Math.PI/2,Z=Math.atan2(ie,ee)}else{var fe=E[2],be=E[6],Ae=E[10],Be=fe*f+be*P+Ae*L,Ie=fe*N+be*U+Ae*W,Ze=fe*se+be*he+Ae*G;J=Math.asin(v(Be)),Z=Math.atan2(Ze,Ie)}this.angle.jump(S,Z,J),this.recalcMatrix(S);var at=E[2],it=E[6],et=E[10],lt=this.computedMatrix;a(lt,E);var Me=lt[15],ge=lt[12]/Me,ce=lt[13]/Me,ze=lt[14]/Me,tt=Math.exp(this.computedRadius[0]);this.center.jump(S,ge-at*tt,ce-it*tt,ze-et*tt)},l.lastT=function(){return Math.max(this.center.lastT(),this.up.lastT(),this.right.lastT(),this.radius.lastT(),this.angle.lastT())},l.idle=function(S){this.center.idle(S),this.up.idle(S),this.right.idle(S),this.radius.idle(S),this.angle.idle(S)},l.flush=function(S){this.center.flush(S),this.up.flush(S),this.right.flush(S),this.radius.flush(S),this.angle.flush(S)},l.setDistance=function(S,E){E>0&&this.radius.set(S,Math.log(E))},l.lookAt=function(S,E,m,b){this.recalcMatrix(S),E=E||this.computedEye,m=m||this.computedCenter,b=b||this.computedUp;var d=b[0],u=b[1],y=b[2],f=h(d,u,y);if(!(f<1e-6)){d/=f,u/=f,y/=f;var P=E[0]-m[0],L=E[1]-m[1],z=E[2]-m[2],F=h(P,L,z);if(!(F<1e-6)){P/=F,L/=F,z/=F;var B=this.computedRight,O=B[0],I=B[1],N=B[2],U=d*O+u*I+y*N;O-=U*d,I-=U*u,N-=U*y;var W=h(O,I,N);if(!(W<.01&&(O=u*z-y*L,I=y*P-d*z,N=d*L-u*P,W=h(O,I,N),W<1e-6))){O/=W,I/=W,N/=W,this.up.set(S,d,u,y),this.right.set(S,O,I,N),this.center.set(S,m[0],m[1],m[2]),this.radius.set(S,Math.log(F));var Q=u*N-y*I,ue=y*O-d*N,se=d*I-u*O,he=h(Q,ue,se);Q/=he,ue/=he,se/=he;var G=d*P+u*L+y*z,$=O*P+I*L+N*z,J=Q*P+ue*L+se*z,Z=Math.asin(v(G)),re=Math.atan2(J,$),ne=this.angle._state,j=ne[ne.length-1],ee=ne[ne.length-2];j=j%(2*Math.PI);var ie=Math.abs(j+2*Math.PI-re),fe=Math.abs(j-re),be=Math.abs(j-2*Math.PI-re);ie0?N.pop():new ArrayBuffer(O)}t.mallocArrayBuffer=_;function w(B){return new Uint8Array(_(B),0,B)}t.mallocUint8=w;function S(B){return new Uint16Array(_(2*B),0,B)}t.mallocUint16=S;function E(B){return new Uint32Array(_(4*B),0,B)}t.mallocUint32=E;function m(B){return new Int8Array(_(B),0,B)}t.mallocInt8=m;function b(B){return new Int16Array(_(2*B),0,B)}t.mallocInt16=b;function d(B){return new Int32Array(_(4*B),0,B)}t.mallocInt32=d;function u(B){return new Float32Array(_(4*B),0,B)}t.mallocFloat32=t.mallocFloat=u;function y(B){return new Float64Array(_(8*B),0,B)}t.mallocFloat64=t.mallocDouble=y;function f(B){return n?new Uint8ClampedArray(_(B),0,B):w(B)}t.mallocUint8Clamped=f;function P(B){return s?new BigUint64Array(_(8*B),0,B):null}t.mallocBigUint64=P;function L(B){return c?new BigInt64Array(_(8*B),0,B):null}t.mallocBigInt64=L;function z(B){return new DataView(_(B),0,B)}t.mallocDataView=z;function F(B){B=o.nextPow2(B);var O=o.log2(B),I=p[O];return I.length>0?I.pop():new i(B)}t.mallocBuffer=F,t.clearCache=function(){for(var O=0;O<32;++O)h.UINT8[O].length=0,h.UINT16[O].length=0,h.UINT32[O].length=0,h.INT8[O].length=0,h.INT16[O].length=0,h.INT32[O].length=0,h.FLOAT[O].length=0,h.DOUBLE[O].length=0,h.BIGUINT64[O].length=0,h.BIGINT64[O].length=0,h.UINT8C[O].length=0,v[O].length=0,p[O].length=0}},1755:function(e){"use strict";"use restrict";e.exports=t;function t(o){this.roots=new Array(o),this.ranks=new Array(o);for(var a=0;a",N="",U=I.length,W=N.length,Q=F[0]===_||F[0]===E,ue=0,se=-W;ue>-1&&(ue=B.indexOf(I,ue),!(ue===-1||(se=B.indexOf(N,ue+U),se===-1)||se<=ue));){for(var he=ue;he=se)O[he]=null,B=B.substr(0,he)+" "+B.substr(he+1);else if(O[he]!==null){var G=O[he].indexOf(F[0]);G===-1?O[he]+=F:Q&&(O[he]=O[he].substr(0,G+1)+(1+parseInt(O[he][G+1]))+O[he].substr(G+2))}var $=ue+U,J=B.substr($,se-$),Z=J.indexOf(I);Z!==-1?ue=Z:ue=se+W}return O}function d(z,F,B){for(var O=F.textAlign||"start",I=F.textBaseline||"alphabetic",N=[1<<30,1<<30],U=[0,0],W=z.length,Q=0;Q/g,` +`):B=B.replace(/\/g," ");var U="",W=[];for(j=0;j-1?parseInt(ce[1+nt]):0,St=Qe>-1?parseInt(ze[1+Qe]):0;Ct!==St&&(tt=tt.replace(Ie(),"?px "),fe*=Math.pow(.75,St-Ct),tt=tt.replace("?px ",Ie())),ie+=.25*G*(St-Ct)}if(N.superscripts===!0){var Ot=ce.indexOf(_),jt=ze.indexOf(_),ur=Ot>-1?parseInt(ce[1+Ot]):0,ar=jt>-1?parseInt(ze[1+jt]):0;ur!==ar&&(tt=tt.replace(Ie(),"?px "),fe*=Math.pow(.75,ar-ur),tt=tt.replace("?px ",Ie())),ie-=.25*G*(ar-ur)}if(N.bolds===!0){var Cr=ce.indexOf(v)>-1,vr=ze.indexOf(v)>-1;!Cr&&vr&&(_r?tt=tt.replace("italic ","italic bold "):tt="bold "+tt),Cr&&!vr&&(tt=tt.replace("bold ",""))}if(N.italics===!0){var _r=ce.indexOf(T)>-1,yt=ze.indexOf(T)>-1;!_r&&yt&&(tt="italic "+tt),_r&&!yt&&(tt=tt.replace("italic ",""))}F.font=tt}for(ne=0;ne0&&(I=O.size),O.lineSpacing&&O.lineSpacing>0&&(N=O.lineSpacing),O.styletags&&O.styletags.breaklines&&(U.breaklines=!!O.styletags.breaklines),O.styletags&&O.styletags.bolds&&(U.bolds=!!O.styletags.bolds),O.styletags&&O.styletags.italics&&(U.italics=!!O.styletags.italics),O.styletags&&O.styletags.subscripts&&(U.subscripts=!!O.styletags.subscripts),O.styletags&&O.styletags.superscripts&&(U.superscripts=!!O.styletags.superscripts)),B.font=[O.fontStyle,O.fontVariant,O.fontWeight,I+"px",O.font].filter(function(Q){return Q}).join(" "),B.textAlign="start",B.textBaseline="alphabetic",B.direction="ltr";var W=u(F,B,z,I,N,U);return P(W,O,I)}},1538:function(e){(function(){"use strict";if(typeof ses<"u"&&ses.ok&&!ses.ok())return;function r(f){f.permitHostObjects___&&f.permitHostObjects___(r)}typeof ses<"u"&&(ses.weakMapPermitHostObjects=r);var o=!1;if(typeof WeakMap=="function"){var a=WeakMap;if(!(typeof navigator<"u"&&/Firefox/.test(navigator.userAgent))){var i=new a,n=Object.freeze({});if(i.set(n,1),i.get(n)!==1)o=!0;else{e.exports=WeakMap;return}}}var s=Object.prototype.hasOwnProperty,c=Object.getOwnPropertyNames,h=Object.defineProperty,v=Object.isExtensible,p="weakmap:",T=p+"ident:"+Math.random()+"___";if(typeof crypto<"u"&&typeof crypto.getRandomValues=="function"&&typeof ArrayBuffer=="function"&&typeof Uint8Array=="function"){var l=new ArrayBuffer(25),_=new Uint8Array(l);crypto.getRandomValues(_),T=p+"rand:"+Array.prototype.map.call(_,function(f){return(f%36).toString(36)}).join("")+"___"}function w(f){return!(f.substr(0,p.length)==p&&f.substr(f.length-3)==="___")}if(h(Object,"getOwnPropertyNames",{value:function(P){return c(P).filter(w)}}),"getPropertyNames"in Object){var S=Object.getPropertyNames;h(Object,"getPropertyNames",{value:function(P){return S(P).filter(w)}})}function E(f){if(f!==Object(f))throw new TypeError("Not an object: "+f);var P=f[T];if(P&&P.key===f)return P;if(v(f)){P={key:f};try{return h(f,T,{value:P,writable:!1,enumerable:!1,configurable:!1}),P}catch{return}}}(function(){var f=Object.freeze;h(Object,"freeze",{value:function(F){return E(F),f(F)}});var P=Object.seal;h(Object,"seal",{value:function(F){return E(F),P(F)}});var L=Object.preventExtensions;h(Object,"preventExtensions",{value:function(F){return E(F),L(F)}})})();function m(f){return f.prototype=null,Object.freeze(f)}var b=!1;function d(){!b&&typeof console<"u"&&(b=!0,console.warn("WeakMap should be invoked as new WeakMap(), not WeakMap(). This will be an error in the future."))}var u=0,y=function(){this instanceof y||d();var f=[],P=[],L=u++;function z(I,N){var U,W=E(I);return W?L in W?W[L]:N:(U=f.indexOf(I),U>=0?P[U]:N)}function F(I){var N=E(I);return N?L in N:f.indexOf(I)>=0}function B(I,N){var U,W=E(I);return W?W[L]=N:(U=f.indexOf(I),U>=0?P[U]=N:(U=f.length,P[U]=N,f[U]=I)),this}function O(I){var N=E(I),U,W;return N?L in N&&delete N[L]:(U=f.indexOf(I),U<0?!1:(W=f.length-1,f[U]=void 0,P[U]=P[W],f[U]=f[W],f.length=W,P.length=W,!0))}return Object.create(y.prototype,{get___:{value:m(z)},has___:{value:m(F)},set___:{value:m(B)},delete___:{value:m(O)}})};y.prototype=Object.create(Object.prototype,{get:{value:function(P,L){return this.get___(P,L)},writable:!0,configurable:!0},has:{value:function(P){return this.has___(P)},writable:!0,configurable:!0},set:{value:function(P,L){return this.set___(P,L)},writable:!0,configurable:!0},delete:{value:function(P){return this.delete___(P)},writable:!0,configurable:!0}}),typeof a=="function"?function(){o&&typeof Proxy<"u"&&(Proxy=void 0);function f(){this instanceof y||d();var P=new a,L=void 0,z=!1;function F(N,U){return L?P.has(N)?P.get(N):L.get___(N,U):P.get(N,U)}function B(N){return P.has(N)||(L?L.has___(N):!1)}var O;o?O=function(N,U){return P.set(N,U),P.has(N)||(L||(L=new y),L.set(N,U)),this}:O=function(N,U){if(z)try{P.set(N,U)}catch{L||(L=new y),L.set___(N,U)}else P.set(N,U);return this};function I(N){var U=!!P.delete(N);return L&&L.delete___(N)||U}return Object.create(y.prototype,{get___:{value:m(F)},has___:{value:m(B)},set___:{value:m(O)},delete___:{value:m(I)},permitHostObjects___:{value:m(function(N){if(N===r)z=!0;else throw new Error("bogus call to permitHostObjects___")})}})}f.prototype=y.prototype,e.exports=f,Object.defineProperty(WeakMap.prototype,"constructor",{value:WeakMap,enumerable:!1,configurable:!0,writable:!0})}():(typeof Proxy<"u"&&(Proxy=void 0),e.exports=y)})()},236:function(e,t,r){var o=r(8284);e.exports=a;function a(){var i={};return function(n){if((typeof n!="object"||n===null)&&typeof n!="function")throw new Error("Weakmap-shim: Key must be object");var s=n.valueOf(i);return s&&s.identity===i?s:o(n,i)}}},8284:function(e){e.exports=t;function t(r,o){var a={identity:o},i=r.valueOf;return Object.defineProperty(r,"valueOf",{value:function(n){return n!==o?i.apply(this,arguments):a},writable:!0}),a}},606:function(e,t,r){var o=r(236);e.exports=a;function a(){var i=o();return{get:function(n,s){var c=i(n);return c.hasOwnProperty("value")?c.value:s},set:function(n,s){return i(n).value=s,this},has:function(n){return"value"in i(n)},delete:function(n){return delete i(n).value}}}},3349:function(e){"use strict";function t(){return function(s,c,h,v,p,T){var l=s[0],_=h[0],w=[0],S=_;v|=0;var E=0,m=_;for(E=0;E=0!=d>=0&&p.push(w[0]+.5+.5*(b+d)/(b-d))}v+=m,++w[0]}}}function r(){return t()}var o=r;function a(s){var c={};return function(v,p,T){var l=v.dtype,_=v.order,w=[l,_.join()].join(),S=c[w];return S||(c[w]=S=s([l,_])),S(v.shape.slice(0),v.data,v.stride,v.offset|0,p,T)}}function i(s){return a(o.bind(void 0,s))}function n(s){return i({funcName:s.funcName})}e.exports=n({funcName:"zeroCrossings"})},781:function(e,t,r){"use strict";e.exports=a;var o=r(3349);function a(i,n){var s=[];return n=+n||0,o(i.hi(i.shape[0]-1),s,n),s}},7790:function(){}},x={};function A(e){var t=x[e];if(t!==void 0)return t.exports;var r=x[e]={id:e,loaded:!1,exports:{}};return g[e].call(r.exports,r,r.exports,A),r.loaded=!0,r.exports}(function(){A.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}()})(),function(){A.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e}}();var M=A(1964);H.exports=M})()}}),d5=Ye({"node_modules/color-name/index.js"(X,H){"use strict";H.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}}),EN=Ye({"node_modules/color-normalize/node_modules/color-parse/index.js"(X,H){"use strict";var g=d5();H.exports=A;var x={red:0,orange:60,yellow:120,green:180,blue:240,purple:300};function A(M){var e,t=[],r=1,o;if(typeof M=="string")if(M=M.toLowerCase(),g[M])t=g[M].slice(),o="rgb";else if(M==="transparent")r=0,o="rgb",t=[0,0,0];else if(/^#[A-Fa-f0-9]+$/.test(M)){var a=M.slice(1),i=a.length,n=i<=4;r=1,n?(t=[parseInt(a[0]+a[0],16),parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16)],i===4&&(r=parseInt(a[3]+a[3],16)/255)):(t=[parseInt(a[0]+a[1],16),parseInt(a[2]+a[3],16),parseInt(a[4]+a[5],16)],i===8&&(r=parseInt(a[6]+a[7],16)/255)),t[0]||(t[0]=0),t[1]||(t[1]=0),t[2]||(t[2]=0),o="rgb"}else if(e=/^((?:rgb|hs[lvb]|hwb|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms)a?)\s*\(([^\)]*)\)/.exec(M)){var s=e[1],c=s==="rgb",a=s.replace(/a$/,"");o=a;var i=a==="cmyk"?4:a==="gray"?1:3;t=e[2].trim().split(/\s*[,\/]\s*|\s+/).map(function(p,T){if(/%$/.test(p))return T===i?parseFloat(p)/100:a==="rgb"?parseFloat(p)*255/100:parseFloat(p);if(a[T]==="h"){if(/deg$/.test(p))return parseFloat(p);if(x[p]!==void 0)return x[p]}return parseFloat(p)}),s===a&&t.push(1),r=c||t[i]===void 0?1:t[i],t=t.slice(0,i)}else M.length>10&&/[0-9](?:\s|\/)/.test(M)&&(t=M.match(/([0-9]+)/g).map(function(h){return parseFloat(h)}),o=M.match(/([a-z])/ig).join("").toLowerCase());else isNaN(M)?Array.isArray(M)||M.length?(t=[M[0],M[1],M[2]],o="rgb",r=M.length===4?M[3]:1):M instanceof Object&&(M.r!=null||M.red!=null||M.R!=null?(o="rgb",t=[M.r||M.red||M.R||0,M.g||M.green||M.G||0,M.b||M.blue||M.B||0]):(o="hsl",t=[M.h||M.hue||M.H||0,M.s||M.saturation||M.S||0,M.l||M.lightness||M.L||M.b||M.brightness]),r=M.a||M.alpha||M.opacity||1,M.opacity!=null&&(r/=100)):(o="rgb",t=[M>>>16,(M&65280)>>>8,M&255]);return{space:o,values:t,alpha:r}}}}),kN=Ye({"node_modules/color-normalize/node_modules/color-rgba/index.js"(X,H){"use strict";var g=EN();H.exports=function(M){Array.isArray(M)&&M.raw&&(M=String.raw.apply(null,arguments));var e,t,r,o=g(M);if(!o.space)return[];var a=[0,0,0],i=o.space[0]==="h"?[360,100,100]:[255,255,255];return e=Array(3),e[0]=Math.min(Math.max(o.values[0],a[0]),i[0]),e[1]=Math.min(Math.max(o.values[1],a[1]),i[1]),e[2]=Math.min(Math.max(o.values[2],a[2]),i[2]),o.space[0]==="h"&&(e=x(e)),e.push(Math.min(Math.max(o.alpha,0),1)),e};function x(A){var M=A[0]/360,e=A[1]/100,t=A[2]/100,r,o,a,i,n,s=0;if(e===0)return n=t*255,[n,n,n];for(o=t<.5?t*(1+e):t+e-t*e,r=2*t-o,i=[0,0,0];s<3;)a=M+1/3*-(s-1),a<0?a++:a>1&&a--,n=6*a<1?r+(o-r)*6*a:2*a<1?o:3*a<2?r+(o-r)*(2/3-a)*6:r,i[s++]=n*255;return i}}}),dx=Ye({"node_modules/clamp/index.js"(X,H){H.exports=g;function g(x,A,M){return AM?M:x:xA?A:x}}}),$3=Ye({"node_modules/dtype/index.js"(X,H){H.exports=function(g){switch(g){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}}}),hg=Ye({"node_modules/color-normalize/index.js"(X,H){"use strict";var g=kN(),x=dx(),A=$3();H.exports=function(t,r){(r==="float"||!r)&&(r="array"),r==="uint"&&(r="uint8"),r==="uint_clamped"&&(r="uint8_clamped");var o=A(r),a=new o(4),i=r!=="uint8"&&r!=="uint8_clamped";return(!t.length||typeof t=="string")&&(t=g(t),t[0]/=255,t[1]/=255,t[2]/=255),M(t)?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3]!=null?t[3]:255,i&&(a[0]/=255,a[1]/=255,a[2]/=255,a[3]/=255),a):(i?(a[0]=t[0],a[1]=t[1],a[2]=t[2],a[3]=t[3]!=null?t[3]:1):(a[0]=x(Math.floor(t[0]*255),0,255),a[1]=x(Math.floor(t[1]*255),0,255),a[2]=x(Math.floor(t[2]*255),0,255),a[3]=t[3]==null?255:x(Math.floor(t[3]*255),0,255)),a)};function M(e){return!!(e instanceof Uint8Array||e instanceof Uint8ClampedArray||Array.isArray(e)&&(e[0]>1||e[0]===0)&&(e[1]>1||e[1]===0)&&(e[2]>1||e[2]===0)&&(!e[3]||e[3]>1))}}}),Qv=Ye({"src/lib/str2rgbarray.js"(X,H){"use strict";var g=hg();function x(A){return A?g(A):[0,0,0,1]}H.exports=x}}),em=Ye({"src/lib/gl_format_color.js"(X,H){"use strict";var g=jo(),x=bh(),A=hg(),M=Su(),e=Gf().defaultLine,t=xp().isArrayOrTypedArray,r=A(e),o=1;function a(h,v){var p=h;return p[3]*=v,p}function i(h){if(g(h))return r;var v=A(h);return v.length?v:r}function n(h){return g(h)?h:o}function s(h,v,p){var T=h.color;T&&T._inputArray&&(T=T._inputArray);var l=t(T),_=t(v),w=M.extractOpts(h),S=[],E,m,b,d,u;if(w.colorscale!==void 0?E=M.makeColorScaleFuncFromTrace(h):E=i,l?m=function(f,P){return f[P]===void 0?r:A(E(f[P]))}:m=i,_?b=function(f,P){return f[P]===void 0?o:n(f[P])}:b=n,l||_)for(var y=0;y0){var p=o.c2l(h);o._lowerLogErrorBound||(o._lowerLogErrorBound=p),o._lowerErrorBound=Math.min(o._lowerLogErrorBound,p)}}else i[n]=[-s[0]*r,s[1]*r]}return i}function A(e){for(var t=0;t-1?-1:P.indexOf("right")>-1?1:0}function w(P){return P==null?0:P.indexOf("top")>-1?-1:P.indexOf("bottom")>-1?1:0}function S(P){var L=0,z=0,F=[L,z];if(Array.isArray(P))for(var B=0;B=0){var W=T(N.position,N.delaunayColor,N.delaunayAxis);W.opacity=P.opacity,this.delaunayMesh?this.delaunayMesh.update(W):(W.gl=L,this.delaunayMesh=M(W),this.delaunayMesh._trace=this,this.scene.glplot.add(this.delaunayMesh))}else this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose(),this.delaunayMesh=null)},p.dispose=function(){this.linePlot&&(this.scene.glplot.remove(this.linePlot),this.linePlot.dispose()),this.scatterPlot&&(this.scene.glplot.remove(this.scatterPlot),this.scatterPlot.dispose()),this.errorBars&&(this.scene.glplot.remove(this.errorBars),this.errorBars.dispose()),this.textMarkers&&(this.scene.glplot.remove(this.textMarkers),this.textMarkers.dispose()),this.delaunayMesh&&(this.scene.glplot.remove(this.delaunayMesh),this.delaunayMesh.dispose())};function f(P,L){var z=new v(P,L.uid);return z.update(L),z}H.exports=f}}),m5=Ye({"src/traces/scatter3d/attributes.js"(X,H){"use strict";var g=Pc(),x=Au(),A=tu(),M=Cc().axisHoverFormat,e=xs().hovertemplateAttrs,t=xs().texttemplateAttrs,r=Pl(),o=v5(),a=Q3(),i=Oo().extendFlat,n=Ou().overrideAll,s=Km(),c=g.line,h=g.marker,v=h.line,p=i({width:c.width,dash:{valType:"enumerated",values:s(o),dflt:"solid"}},A("line"));function T(_){return{show:{valType:"boolean",dflt:!1},opacity:{valType:"number",min:0,max:1,dflt:1},scale:{valType:"number",min:0,max:10,dflt:2/3}}}var l=H.exports=n({x:g.x,y:g.y,z:{valType:"data_array"},text:i({},g.text,{}),texttemplate:t({},{}),hovertext:i({},g.hovertext,{}),hovertemplate:e(),xhoverformat:M("x"),yhoverformat:M("y"),zhoverformat:M("z"),mode:i({},g.mode,{dflt:"lines+markers"}),surfaceaxis:{valType:"enumerated",values:[-1,0,1,2],dflt:-1},surfacecolor:{valType:"color"},projection:{x:T("x"),y:T("y"),z:T("z")},connectgaps:g.connectgaps,line:p,marker:i({symbol:{valType:"enumerated",values:s(a),dflt:"circle",arrayOk:!0},size:i({},h.size,{dflt:8}),sizeref:h.sizeref,sizemin:h.sizemin,sizemode:h.sizemode,opacity:i({},h.opacity,{arrayOk:!1}),colorbar:h.colorbar,line:i({width:i({},v.width,{arrayOk:!1})},A("marker.line"))},A("marker")),textposition:i({},g.textposition,{dflt:"top center"}),textfont:x({noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,editType:"calc",colorEditType:"style",arrayOk:!0,variantValues:["normal","small-caps"]}),opacity:r.opacity,hoverinfo:i({},r.hoverinfo)},"calc","nested");l.x.editType=l.y.editType=l.z.editType="calc+clearAxisTypes"}}),PN=Ye({"src/traces/scatter3d/defaults.js"(X,H){"use strict";var g=Hn(),x=ta(),A=uu(),M=md(),e=Dd(),t=zd(),r=m5();H.exports=function(i,n,s,c){function h(E,m){return x.coerce(i,n,r,E,m)}var v=o(i,n,h,c);if(!v){n.visible=!1;return}h("text"),h("hovertext"),h("hovertemplate"),h("xhoverformat"),h("yhoverformat"),h("zhoverformat"),h("mode"),A.hasMarkers(n)&&M(i,n,s,c,h,{noSelect:!0,noAngle:!0}),A.hasLines(n)&&(h("connectgaps"),e(i,n,s,c,h)),A.hasText(n)&&(h("texttemplate"),t(i,n,c,h,{noSelect:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0}));var p=(n.line||{}).color,T=(n.marker||{}).color;h("surfaceaxis")>=0&&h("surfacecolor",p||T);for(var l=["x","y","z"],_=0;_<3;++_){var w="projection."+l[_];h(w+".show")&&(h(w+".opacity"),h(w+".scale"))}var S=g.getComponentMethod("errorbars","supplyDefaults");S(i,n,p||T||s,{axis:"z"}),S(i,n,p||T||s,{axis:"y",inherit:"z"}),S(i,n,p||T||s,{axis:"x",inherit:"z"})};function o(a,i,n,s){var c=0,h=n("x"),v=n("y"),p=n("z"),T=g.getComponentMethod("calendars","handleTraceDefaults");return T(a,i,["x","y","z"],s),h&&v&&p&&(c=Math.min(h.length,v.length,p.length),i._length=i._xlength=i._ylength=i._zlength=c),c}}}),IN=Ye({"src/traces/scatter3d/calc.js"(X,H){"use strict";var g=Av(),x=Fd();H.exports=function(M,e){var t=[{x:!1,y:!1,trace:e,t:{}}];return g(t,e),x(M,e),t}}}),RN=Ye({"node_modules/get-canvas-context/index.js"(X,H){H.exports=g;function g(x,A){if(typeof x!="string")throw new TypeError("must specify type string");if(A=A||{},typeof document>"u"&&!A.canvas)return null;var M=A.canvas||document.createElement("canvas");typeof A.width=="number"&&(M.width=A.width),typeof A.height=="number"&&(M.height=A.height);var e=A,t;try{var r=[x];x.indexOf("webgl")===0&&r.push("experimental-"+x);for(var o=0;o/g," "));n[s]=p,c.tickmode=h}}o.ticks=n;for(var s=0;s<3;++s){M[s]=.5*(r.glplot.bounds[0][s]+r.glplot.bounds[1][s]);for(var T=0;T<2;++T)o.bounds[T][s]=r.glplot.bounds[T][s]}r.contourLevels=e(n)}}}),BN=Ye({"src/plots/gl3d/scene.js"(X,H){"use strict";var g=Gh().gl_plot3d,x=g.createCamera,A=g.createScene,M=DN(),e=_2(),t=Hn(),r=ta(),o=r.preserveDrawingBuffer(),a=Co(),i=Lc(),n=Qv(),s=g5(),c=BS(),h=zN(),v=FN(),p=ON(),T=Yd().applyAutorangeOptions,l,_,w=!1;function S(z,F){var B=document.createElement("div"),O=z.container;this.graphDiv=z.graphDiv;var I=document.createElementNS("http://www.w3.org/2000/svg","svg");I.style.position="absolute",I.style.top=I.style.left="0px",I.style.width=I.style.height="100%",I.style["z-index"]=20,I.style["pointer-events"]="none",B.appendChild(I),this.svgContainer=I,B.id=z.id,B.style.position="absolute",B.style.top=B.style.left="0px",B.style.width=B.style.height="100%",O.appendChild(B),this.fullLayout=F,this.id=z.id||"scene",this.fullSceneLayout=F[this.id],this.plotArgs=[[],{},{}],this.axesOptions=h(F,F[this.id]),this.spikeOptions=v(F[this.id]),this.container=B,this.staticMode=!!z.staticPlot,this.pixelRatio=this.pixelRatio||z.plotGlPixelRatio||2,this.dataScale=[1,1,1],this.contourLevels=[[],[],[]],this.convertAnnotations=t.getComponentMethod("annotations3d","convert"),this.drawAnnotations=t.getComponentMethod("annotations3d","draw"),this.initializeGLPlot()}var E=S.prototype;E.prepareOptions=function(){var z=this,F={canvas:z.canvas,gl:z.gl,glOptions:{preserveDrawingBuffer:o,premultipliedAlpha:!0,antialias:!0},container:z.container,axes:z.axesOptions,spikes:z.spikeOptions,pickRadius:10,snapToData:!0,autoScale:!0,autoBounds:!1,cameraObject:z.camera,pixelRatio:z.pixelRatio};if(z.staticMode){if(!_&&(l=document.createElement("canvas"),_=M({canvas:l,preserveDrawingBuffer:!0,premultipliedAlpha:!0,antialias:!0}),!_))throw new Error("error creating static canvas/context for image server");F.gl=_,F.canvas=l}return F};var m=!0;E.tryCreatePlot=function(){var z=this,F=z.prepareOptions(),B=!0;try{z.glplot=A(F)}catch{if(z.staticMode||!m||o)B=!1;else{r.warn(["webgl setup failed possibly due to","false preserveDrawingBuffer config.","The mobile/tablet device may not be detected by is-mobile module.","Enabling preserveDrawingBuffer in second attempt to create webgl scene..."].join(" "));try{o=F.glOptions.preserveDrawingBuffer=!0,z.glplot=A(F)}catch{o=F.glOptions.preserveDrawingBuffer=!1,B=!1}}}return m=!1,B},E.initializeGLCamera=function(){var z=this,F=z.fullSceneLayout.camera,B=F.projection.type==="orthographic";z.camera=x(z.container,{center:[F.center.x,F.center.y,F.center.z],eye:[F.eye.x,F.eye.y,F.eye.z],up:[F.up.x,F.up.y,F.up.z],_ortho:B,zoomMin:.01,zoomMax:100,mode:"orbit"})},E.initializeGLPlot=function(){var z=this;z.initializeGLCamera();var F=z.tryCreatePlot();if(!F)return s(z);z.traces={},z.make4thDimension();var B=z.graphDiv,O=B.layout,I=function(){var U={};return z.isCameraChanged(O)&&(U[z.id+".camera"]=z.getCamera()),z.isAspectChanged(O)&&(U[z.id+".aspectratio"]=z.glplot.getAspectratio(),O[z.id].aspectmode!=="manual"&&(z.fullSceneLayout.aspectmode=O[z.id].aspectmode=U[z.id+".aspectmode"]="manual")),U},N=function(U){if(U.fullSceneLayout.dragmode!==!1){var W=I();U.saveLayout(O),U.graphDiv.emit("plotly_relayout",W)}};return z.glplot.canvas&&(z.glplot.canvas.addEventListener("mouseup",function(){N(z)}),z.glplot.canvas.addEventListener("touchstart",function(){w=!0}),z.glplot.canvas.addEventListener("wheel",function(U){if(B._context._scrollZoom.gl3d){if(z.camera._ortho){var W=U.deltaX>U.deltaY?1.1:.9090909090909091,Q=z.glplot.getAspectratio();z.glplot.setAspectratio({x:W*Q.x,y:W*Q.y,z:W*Q.z})}N(z)}},e?{passive:!1}:!1),z.glplot.canvas.addEventListener("mousemove",function(){if(z.fullSceneLayout.dragmode!==!1&&z.camera.mouseListener.buttons!==0){var U=I();z.graphDiv.emit("plotly_relayouting",U)}}),z.staticMode||z.glplot.canvas.addEventListener("webglcontextlost",function(U){B&&B.emit&&B.emit("plotly_webglcontextlost",{event:U,layer:z.id})},!1)),z.glplot.oncontextloss=function(){z.recoverContext()},z.glplot.onrender=function(){z.render()},!0},E.render=function(){var z=this,F=z.graphDiv,B,O=z.svgContainer,I=z.container.getBoundingClientRect();F._fullLayout._calcInverseTransform(F);var N=F._fullLayout._invScaleX,U=F._fullLayout._invScaleY,W=I.width*N,Q=I.height*U;O.setAttributeNS(null,"viewBox","0 0 "+W+" "+Q),O.setAttributeNS(null,"width",W),O.setAttributeNS(null,"height",Q),p(z),z.glplot.axes.update(z.axesOptions);for(var ue=Object.keys(z.traces),se=null,he=z.glplot.selection,G=0;G")):B.type==="isosurface"||B.type==="volume"?(ne.valueLabel=a.hoverLabelText(z._mockAxis,z._mockAxis.d2l(he.traceCoordinate[3]),B.valuehoverformat),be.push("value: "+ne.valueLabel),he.textLabel&&be.push(he.textLabel),fe=be.join("
")):fe=he.textLabel;var Ae={x:he.traceCoordinate[0],y:he.traceCoordinate[1],z:he.traceCoordinate[2],data:Z._input,fullData:Z,curveNumber:Z.index,pointNumber:re};i.appendArrayPointValue(Ae,Z,re),B._module.eventData&&(Ae=Z._module.eventData(Ae,he,Z,{},re));var Be={points:[Ae]};if(z.fullSceneLayout.hovermode){var Ie=[];i.loneHover({trace:Z,x:(.5+.5*J[0]/J[3])*W,y:(.5-.5*J[1]/J[3])*Q,xLabel:ne.xLabel,yLabel:ne.yLabel,zLabel:ne.zLabel,text:fe,name:se.name,color:i.castHoverOption(Z,re,"bgcolor")||se.color,borderColor:i.castHoverOption(Z,re,"bordercolor"),fontFamily:i.castHoverOption(Z,re,"font.family"),fontSize:i.castHoverOption(Z,re,"font.size"),fontColor:i.castHoverOption(Z,re,"font.color"),nameLength:i.castHoverOption(Z,re,"namelength"),textAlign:i.castHoverOption(Z,re,"align"),hovertemplate:r.castOption(Z,re,"hovertemplate"),hovertemplateLabels:r.extendFlat({},Ae,ne),eventData:[Ae]},{container:O,gd:F,inOut_bbox:Ie}),Ae.bbox=Ie[0]}he.distance<5&&(he.buttons||w)?F.emit("plotly_click",Be):F.emit("plotly_hover",Be),this.oldEventData=Be}else i.loneUnhover(O),this.oldEventData&&F.emit("plotly_unhover",this.oldEventData),this.oldEventData=void 0;z.drawAnnotations(z)},E.recoverContext=function(){var z=this;z.glplot.dispose();var F=function(){if(z.glplot.gl.isContextLost()){requestAnimationFrame(F);return}if(!z.initializeGLPlot()){r.error("Catastrophic and unrecoverable WebGL error. Context lost.");return}z.plot.apply(z,z.plotArgs)};requestAnimationFrame(F)};var b=["xaxis","yaxis","zaxis"];function d(z,F,B){for(var O=z.fullSceneLayout,I=0;I<3;I++){var N=b[I],U=N.charAt(0),W=O[N],Q=F[U],ue=F[U+"calendar"],se=F["_"+U+"length"];if(!r.isArrayOrTypedArray(Q))B[0][I]=Math.min(B[0][I],0),B[1][I]=Math.max(B[1][I],se-1);else for(var he,G=0;G<(se||Q.length);G++)if(r.isArrayOrTypedArray(Q[G]))for(var $=0;$Z[1][U])Z[0][U]=-1,Z[1][U]=1;else{var at=Z[1][U]-Z[0][U];Z[0][U]-=at/32,Z[1][U]+=at/32}if(j=[Z[0][U],Z[1][U]],j=T(j,Q),Z[0][U]=j[0],Z[1][U]=j[1],Q.isReversed()){var it=Z[0][U];Z[0][U]=Z[1][U],Z[1][U]=it}}else j=Q.range,Z[0][U]=Q.r2l(j[0]),Z[1][U]=Q.r2l(j[1]);Z[0][U]===Z[1][U]&&(Z[0][U]-=1,Z[1][U]+=1),re[U]=Z[1][U]-Z[0][U],Q.range=[Z[0][U],Z[1][U]],Q.limitRange(),O.glplot.setBounds(U,{min:Q.range[0]*$[U],max:Q.range[1]*$[U]})}var et,lt=se.aspectmode;if(lt==="cube")et=[1,1,1];else if(lt==="manual"){var Me=se.aspectratio;et=[Me.x,Me.y,Me.z]}else if(lt==="auto"||lt==="data"){var ge=[1,1,1];for(U=0;U<3;++U){Q=se[b[U]],ue=Q.type;var ce=ne[ue];ge[U]=Math.pow(ce.acc,1/ce.count)/$[U]}lt==="data"||Math.max.apply(null,ge)/Math.min.apply(null,ge)<=4?et=ge:et=[1,1,1]}else throw new Error("scene.js aspectRatio was not one of the enumerated types");se.aspectratio.x=he.aspectratio.x=et[0],se.aspectratio.y=he.aspectratio.y=et[1],se.aspectratio.z=he.aspectratio.z=et[2],O.glplot.setAspectratio(se.aspectratio),O.viewInitial.aspectratio||(O.viewInitial.aspectratio={x:se.aspectratio.x,y:se.aspectratio.y,z:se.aspectratio.z}),O.viewInitial.aspectmode||(O.viewInitial.aspectmode=se.aspectmode);var ze=se.domain||null,tt=F._size||null;if(ze&&tt){var nt=O.container.style;nt.position="absolute",nt.left=tt.l+ze.x[0]*tt.w+"px",nt.top=tt.t+(1-ze.y[1])*tt.h+"px",nt.width=tt.w*(ze.x[1]-ze.x[0])+"px",nt.height=tt.h*(ze.y[1]-ze.y[0])+"px"}O.glplot.redraw()}},E.destroy=function(){var z=this;z.glplot&&(z.camera.mouseListener.enabled=!1,z.container.removeEventListener("wheel",z.camera.wheelListener),z.camera=null,z.glplot.dispose(),z.container.parentNode.removeChild(z.container),z.glplot=null)};function y(z){return[[z.eye.x,z.eye.y,z.eye.z],[z.center.x,z.center.y,z.center.z],[z.up.x,z.up.y,z.up.z]]}function f(z){return{up:{x:z.up[0],y:z.up[1],z:z.up[2]},center:{x:z.center[0],y:z.center[1],z:z.center[2]},eye:{x:z.eye[0],y:z.eye[1],z:z.eye[2]},projection:{type:z._ortho===!0?"orthographic":"perspective"}}}E.getCamera=function(){var z=this;return z.camera.view.recalcMatrix(z.camera.view.lastT()),f(z.camera)},E.setViewport=function(z){var F=this,B=z.camera;F.camera.lookAt.apply(this,y(B)),F.glplot.setAspectratio(z.aspectratio);var O=B.projection.type==="orthographic",I=F.camera._ortho;O!==I&&(F.glplot.redraw(),F.glplot.clearRGBA(),F.glplot.dispose(),F.initializeGLPlot())},E.isCameraChanged=function(z){var F=this,B=F.getCamera(),O=r.nestedProperty(z,F.id+".camera"),I=O.get();function N(ue,se,he,G){var $=["up","center","eye"],J=["x","y","z"];return se[$[he]]&&ue[$[he]][J[G]]===se[$[he]][J[G]]}var U=!1;if(I===void 0)U=!0;else{for(var W=0;W<3;W++)for(var Q=0;Q<3;Q++)if(!N(B,I,W,Q)){U=!0;break}(!I.projection||B.projection&&B.projection.type!==I.projection.type)&&(U=!0)}return U},E.isAspectChanged=function(z){var F=this,B=F.glplot.getAspectratio(),O=r.nestedProperty(z,F.id+".aspectratio"),I=O.get();return I===void 0||I.x!==B.x||I.y!==B.y||I.z!==B.z},E.saveLayout=function(z){var F=this,B=F.fullLayout,O,I,N,U,W,Q,ue=F.isCameraChanged(z),se=F.isAspectChanged(z),he=ue||se;if(he){var G={};if(ue&&(O=F.getCamera(),I=r.nestedProperty(z,F.id+".camera"),N=I.get(),G[F.id+".camera"]=N),se&&(U=F.glplot.getAspectratio(),W=r.nestedProperty(z,F.id+".aspectratio"),Q=W.get(),G[F.id+".aspectratio"]=Q),t.call("_storeDirectGUIEdit",z,B._preGUI,G),ue){I.set(O);var $=r.nestedProperty(B,F.id+".camera");$.set(O)}if(se){W.set(U);var J=r.nestedProperty(B,F.id+".aspectratio");J.set(U),F.glplot.redraw()}}return he},E.updateFx=function(z,F){var B=this,O=B.camera;if(O)if(z==="orbit")O.mode="orbit",O.keyBindingMode="rotate";else if(z==="turntable"){O.up=[0,0,1],O.mode="turntable",O.keyBindingMode="rotate";var I=B.graphDiv,N=I._fullLayout,U=B.fullSceneLayout.camera,W=U.up.x,Q=U.up.y,ue=U.up.z;if(ue/Math.sqrt(W*W+Q*Q+ue*ue)<.999){var se=B.id+".camera.up",he={x:0,y:0,z:1},G={};G[se]=he;var $=I.layout;t.call("_storeDirectGUIEdit",$,N._preGUI,G),U.up=he,r.nestedProperty($,se).set(he)}}else O.keyBindingMode=z;B.fullSceneLayout.hovermode=F};function P(z,F,B){for(var O=0,I=B-1;O0)for(var W=255/U,Q=0;Q<3;++Q)z[N+Q]=Math.min(W*z[N+Q],255)}}E.toImage=function(z){var F=this;z||(z="png"),F.staticMode&&F.container.appendChild(l),F.glplot.redraw();var B=F.glplot.gl,O=B.drawingBufferWidth,I=B.drawingBufferHeight;B.bindFramebuffer(B.FRAMEBUFFER,null);var N=new Uint8Array(O*I*4);B.readPixels(0,0,O,I,B.RGBA,B.UNSIGNED_BYTE,N),P(N,O,I),L(N,O,I);var U=document.createElement("canvas");U.width=O,U.height=I;var W=U.getContext("2d",{willReadFrequently:!0}),Q=W.createImageData(O,I);Q.data.set(N),W.putImageData(Q,0,0);var ue;switch(z){case"jpeg":ue=U.toDataURL("image/jpeg");break;case"webp":ue=U.toDataURL("image/webp");break;default:ue=U.toDataURL("image/png")}return F.staticMode&&F.container.removeChild(l),ue},E.setConvert=function(){for(var z=this,F=0;F<3;F++){var B=z.fullSceneLayout[b[F]];a.setConvert(B,z.fullLayout),B.setScale=r.noop}},E.make4thDimension=function(){var z=this,F=z.graphDiv,B=F._fullLayout;z._mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},a.setConvert(z._mockAxis,B)},H.exports=S}}),NN=Ye({"src/plots/gl3d/layout/attributes.js"(X,H){"use strict";H.exports={scene:{valType:"subplotid",dflt:"scene",editType:"calc+clearAxisTypes"}}}}),y5=Ye({"src/plots/gl3d/layout/axis_attributes.js"(X,H){"use strict";var g=Fn(),x=Vh(),A=Oo().extendFlat,M=Ou().overrideAll;H.exports=M({visible:x.visible,showspikes:{valType:"boolean",dflt:!0},spikesides:{valType:"boolean",dflt:!0},spikethickness:{valType:"number",min:0,dflt:2},spikecolor:{valType:"color",dflt:g.defaultLine},showbackground:{valType:"boolean",dflt:!1},backgroundcolor:{valType:"color",dflt:"rgba(204, 204, 204, 0.5)"},showaxeslabels:{valType:"boolean",dflt:!0},color:x.color,categoryorder:x.categoryorder,categoryarray:x.categoryarray,title:{text:x.title.text,font:x.title.font},type:A({},x.type,{values:["-","linear","log","date","category"]}),autotypenumbers:x.autotypenumbers,autorange:x.autorange,autorangeoptions:{minallowed:x.autorangeoptions.minallowed,maxallowed:x.autorangeoptions.maxallowed,clipmin:x.autorangeoptions.clipmin,clipmax:x.autorangeoptions.clipmax,include:x.autorangeoptions.include,editType:"plot"},rangemode:x.rangemode,minallowed:x.minallowed,maxallowed:x.maxallowed,range:A({},x.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],anim:!1}),tickmode:x.minor.tickmode,nticks:x.nticks,tick0:x.tick0,dtick:x.dtick,tickvals:x.tickvals,ticktext:x.ticktext,ticks:x.ticks,mirror:x.mirror,ticklen:x.ticklen,tickwidth:x.tickwidth,tickcolor:x.tickcolor,showticklabels:x.showticklabels,labelalias:x.labelalias,tickfont:x.tickfont,tickangle:x.tickangle,tickprefix:x.tickprefix,showtickprefix:x.showtickprefix,ticksuffix:x.ticksuffix,showticksuffix:x.showticksuffix,showexponent:x.showexponent,exponentformat:x.exponentformat,minexponent:x.minexponent,separatethousands:x.separatethousands,tickformat:x.tickformat,tickformatstops:x.tickformatstops,hoverformat:x.hoverformat,showline:x.showline,linecolor:x.linecolor,linewidth:x.linewidth,showgrid:x.showgrid,gridcolor:A({},x.gridcolor,{dflt:"rgb(204, 204, 204)"}),gridwidth:x.gridwidth,zeroline:x.zeroline,zerolinecolor:x.zerolinecolor,zerolinewidth:x.zerolinewidth},"plot","from-root")}}),_5=Ye({"src/plots/gl3d/layout/layout_attributes.js"(X,H){"use strict";var g=y5(),x=Wu().attributes,A=Oo().extendFlat,M=ta().counterRegex;function e(t,r,o){return{x:{valType:"number",dflt:t,editType:"camera"},y:{valType:"number",dflt:r,editType:"camera"},z:{valType:"number",dflt:o,editType:"camera"},editType:"camera"}}H.exports={_arrayAttrRegexps:[M("scene",".annotations",!0)],bgcolor:{valType:"color",dflt:"rgba(0,0,0,0)",editType:"plot"},camera:{up:A(e(0,0,1),{}),center:A(e(0,0,0),{}),eye:A(e(1.25,1.25,1.25),{}),projection:{type:{valType:"enumerated",values:["perspective","orthographic"],dflt:"perspective",editType:"calc"},editType:"calc"},editType:"camera"},domain:x({name:"scene",editType:"plot"}),aspectmode:{valType:"enumerated",values:["auto","cube","data","manual"],dflt:"auto",editType:"plot",impliedEdits:{"aspectratio.x":void 0,"aspectratio.y":void 0,"aspectratio.z":void 0}},aspectratio:{x:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},y:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},z:{valType:"number",min:0,editType:"plot",impliedEdits:{"^aspectmode":"manual"}},editType:"plot",impliedEdits:{aspectmode:"manual"}},xaxis:g,yaxis:g,zaxis:g,dragmode:{valType:"enumerated",values:["orbit","turntable","zoom","pan",!1],editType:"plot"},hovermode:{valType:"enumerated",values:["closest",!1],dflt:"closest",editType:"modebar"},uirevision:{valType:"any",editType:"none"},editType:"plot"}}}),UN=Ye({"src/plots/gl3d/layout/axis_defaults.js"(X,H){"use strict";var g=bh().mix,x=ta(),A=cl(),M=y5(),e=FS(),t=R_(),r=["xaxis","yaxis","zaxis"],o=100*136/187;H.exports=function(i,n,s){var c,h;function v(l,_){return x.coerce(c,h,M,l,_)}for(var p=0;p1;function v(p){if(!h){var T=g.validate(n[p],t[p]);if(T)return n[p]}}M(n,s,c,{type:o,attributes:t,handleDefaults:a,fullLayout:s,font:s.font,fullData:c,getDfltFromLayout:v,autotypenumbersDflt:s.autotypenumbers,paper_bgcolor:s.paper_bgcolor,calendar:s.calendar})};function a(i,n,s,c){for(var h=s("bgcolor"),v=x.combine(h,c.paper_bgcolor),p=["up","center","eye"],T=0;T.999)&&(E="turntable")}else E="turntable";s("dragmode",E),s("hovermode",c.getDfltFromLayout("hovermode"))}}}),pg=Ye({"src/plots/gl3d/index.js"(X){"use strict";var H=Ou().overrideAll,g=Zm(),x=BN(),A=jh().getSubplotData,M=ta(),e=vd(),t="gl3d",r="scene";X.name=t,X.attr=r,X.idRoot=r,X.idRegex=X.attrRegex=M.counterRegex("scene"),X.attributes=NN(),X.layoutAttributes=_5(),X.baseLayoutAttrOverrides=H({hoverlabel:g.hoverlabel},"plot","nested"),X.supplyLayoutDefaults=jN(),X.plot=function(a){for(var i=a._fullLayout,n=a._fullData,s=i._subplots[t],c=0;c0){P=c[L];break}return P}function T(y,f){if(!(y<1||f<1)){for(var P=v(y),L=v(f),z=1,F=0;FS;)L--,L/=p(L),L++,L1?z:1};function E(y,f,P){var L=P[8]+P[2]*f[0]+P[5]*f[1];return y[0]=(P[6]+P[0]*f[0]+P[3]*f[1])/L,y[1]=(P[7]+P[1]*f[0]+P[4]*f[1])/L,y}function m(y,f,P){return b(y,f,E,P),y}function b(y,f,P,L){for(var z=[0,0],F=y.shape[0],B=y.shape[1],O=0;O0&&this.contourStart[L]!==null&&this.contourEnd[L]!==null&&this.contourEnd[L]>this.contourStart[L]))for(f[L]=!0,z=this.contourStart[L];zQ&&(this.minValues[N]=Q),this.maxValues[N]c&&(o.isomin=null,o.isomax=null);var h=n("x"),v=n("y"),p=n("z"),T=n("value");if(!h||!h.length||!v||!v.length||!p||!p.length||!T||!T.length){o.visible=!1;return}var l=x.getComponentMethod("calendars","handleTraceDefaults");l(r,o,["x","y","z"],i),n("valuehoverformat"),["x","y","z"].forEach(function(E){n(E+"hoverformat");var m="caps."+E,b=n(m+".show");b&&n(m+".fill");var d="slices."+E,u=n(d+".show");u&&(n(d+".fill"),n(d+".locations"))});var _=n("spaceframe.show");_&&n("spaceframe.fill");var w=n("surface.show");w&&(n("surface.count"),n("surface.fill"),n("surface.pattern"));var S=n("contour.show");S&&(n("contour.color"),n("contour.width")),["text","hovertext","hovertemplate","lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","opacity"].forEach(function(E){n(E)}),M(r,o,i,n,{prefix:"",cLetter:"c"}),o._length=null}H.exports={supplyDefaults:e,supplyIsoDefaults:t}}}),tT=Ye({"src/traces/streamtube/calc.js"(X,H){"use strict";var g=ta(),x=jp();function A(r,o){o._len=Math.min(o.u.length,o.v.length,o.w.length,o.x.length,o.y.length,o.z.length),o._u=t(o.u,o._len),o._v=t(o.v,o._len),o._w=t(o.w,o._len),o._x=t(o.x,o._len),o._y=t(o.y,o._len),o._z=t(o.z,o._len);var a=M(o);o._gridFill=a.fill,o._Xs=a.Xs,o._Ys=a.Ys,o._Zs=a.Zs,o._len=a.len;var i=0,n,s,c;o.starts&&(n=t(o.starts.x||[]),s=t(o.starts.y||[]),c=t(o.starts.z||[]),i=Math.min(n.length,s.length,c.length)),o._startsX=n||[],o._startsY=s||[],o._startsZ=c||[];var h=0,v=1/0,p;for(p=0;p1&&(u=o[n-1],f=a[n-1],L=i[n-1]),s=0;su?"-":"+")+"x"),S=S.replace("y",(y>f?"-":"+")+"y"),S=S.replace("z",(P>L?"-":"+")+"z");var O=function(){n=0,z=[],F=[],B=[]};(!n||n0;v--){var p=Math.min(h[v],h[v-1]),T=Math.max(h[v],h[v-1]);if(T>p&&p-1}function ee(yt,Fe){return yt===null?Fe:yt}function ie(yt,Fe,Ke){ue();var Ne=[Fe],Ee=[Ke];if(Z>=1)Ne=[Fe],Ee=[Ke];else if(Z>0){var Ve=ne(Fe,Ke);Ne=Ve.xyzv,Ee=Ve.abc}for(var ke=0;ke-1?Ke[Le]:Q(rt,dt,xt);Bt>-1?Te[Le]=Bt:Te[Le]=he(rt,dt,xt,ee(yt,It))}G(Te[0],Te[1],Te[2])}}function fe(yt,Fe,Ke){var Ne=function(Ee,Ve,ke){ie(yt,[Fe[Ee],Fe[Ve],Fe[ke]],[Ke[Ee],Ke[Ve],Ke[ke]])};Ne(0,1,2),Ne(2,3,0)}function be(yt,Fe,Ke){var Ne=function(Ee,Ve,ke){ie(yt,[Fe[Ee],Fe[Ve],Fe[ke]],[Ke[Ee],Ke[Ve],Ke[ke]])};Ne(0,1,2),Ne(3,0,1),Ne(2,3,0),Ne(1,2,3)}function Ae(yt,Fe,Ke,Ne){var Ee=yt[3];EeNe&&(Ee=Ne);for(var Ve=(yt[3]-Ee)/(yt[3]-Fe[3]+1e-9),ke=[],Te=0;Te<4;Te++)ke[Te]=(1-Ve)*yt[Te]+Ve*Fe[Te];return ke}function Be(yt,Fe,Ke){return yt>=Fe&&yt<=Ke}function Ie(yt){var Fe=.001*(O-B);return yt>=B-Fe&&yt<=O+Fe}function Ze(yt){for(var Fe=[],Ke=0;Ke<4;Ke++){var Ne=yt[Ke];Fe.push([c._x[Ne],c._y[Ne],c._z[Ne],c._value[Ne]])}return Fe}var at=3;function it(yt,Fe,Ke,Ne,Ee,Ve){Ve||(Ve=1),Ke=[-1,-1,-1];var ke=!1,Te=[Be(Fe[0][3],Ne,Ee),Be(Fe[1][3],Ne,Ee),Be(Fe[2][3],Ne,Ee)];if(!Te[0]&&!Te[1]&&!Te[2])return!1;var Le=function(dt,xt,It){return Ie(xt[0][3])&&Ie(xt[1][3])&&Ie(xt[2][3])?(ie(dt,xt,It),!0):VeTe?[z,Ve]:[Ve,F];Ot(Fe,Le[0],Le[1])}}var rt=[[Math.min(B,F),Math.max(B,F)],[Math.min(z,O),Math.max(z,O)]];["x","y","z"].forEach(function(dt){for(var xt=[],It=0;It0&&(Aa.push(Ga.id),dt==="x"?La.push([Ga.distRatio,0,0]):dt==="y"?La.push([0,Ga.distRatio,0]):La.push([0,0,Ga.distRatio]))}else dt==="x"?sa=Cr(1,u-1):dt==="y"?sa=Cr(1,y-1):sa=Cr(1,f-1);Aa.length>0&&(dt==="x"?xt[Bt]=jt(yt,Aa,Gt,Kt,La,xt[Bt]):dt==="y"?xt[Bt]=ur(yt,Aa,Gt,Kt,La,xt[Bt]):xt[Bt]=ar(yt,Aa,Gt,Kt,La,xt[Bt]),Bt++),sa.length>0&&(dt==="x"?xt[Bt]=tt(yt,sa,Gt,Kt,xt[Bt]):dt==="y"?xt[Bt]=nt(yt,sa,Gt,Kt,xt[Bt]):xt[Bt]=Qe(yt,sa,Gt,Kt,xt[Bt]),Bt++)}var Ma=c.caps[dt];Ma.show&&Ma.fill&&(re(Ma.fill),dt==="x"?xt[Bt]=tt(yt,[0,u-1],Gt,Kt,xt[Bt]):dt==="y"?xt[Bt]=nt(yt,[0,y-1],Gt,Kt,xt[Bt]):xt[Bt]=Qe(yt,[0,f-1],Gt,Kt,xt[Bt]),Bt++)}}),w===0&&se(),c._meshX=I,c._meshY=N,c._meshZ=U,c._meshIntensity=W,c._Xs=m,c._Ys=b,c._Zs=d}return _r(),c}function s(c,h){var v=c.glplot.gl,p=g({gl:v}),T=new o(c,p,h.uid);return p._trace=T,T.update(h),c.glplot.add(p),T}H.exports={findNearestOnAxis:r,generateIsoMeshes:n,createIsosurfaceTrace:s}}}),XN=Ye({"src/traces/isosurface/index.js"(X,H){"use strict";H.exports={attributes:eT(),supplyDefaults:b5().supplyDefaults,calc:w5(),colorbar:{min:"cmin",max:"cmax"},plot:rT().createIsosurfaceTrace,moduleType:"trace",name:"isosurface",basePlotModule:pg(),categories:["gl3d","showLegend"],meta:{}}}}),YN=Ye({"lib/isosurface.js"(X,H){"use strict";H.exports=XN()}}),T5=Ye({"src/traces/volume/attributes.js"(X,H){"use strict";var g=tu(),x=eT(),A=vx(),M=Pl(),e=Oo().extendFlat,t=Ou().overrideAll,r=H.exports=t(e({x:x.x,y:x.y,z:x.z,value:x.value,isomin:x.isomin,isomax:x.isomax,surface:x.surface,spaceframe:{show:{valType:"boolean",dflt:!1},fill:{valType:"number",min:0,max:1,dflt:1}},slices:x.slices,caps:x.caps,text:x.text,hovertext:x.hovertext,xhoverformat:x.xhoverformat,yhoverformat:x.yhoverformat,zhoverformat:x.zhoverformat,valuehoverformat:x.valuehoverformat,hovertemplate:x.hovertemplate},g("",{colorAttr:"`value`",showScaleDflt:!0,editTypeOverride:"calc"}),{colorbar:x.colorbar,opacity:x.opacity,opacityscale:A.opacityscale,lightposition:x.lightposition,lighting:x.lighting,flatshading:x.flatshading,contour:x.contour,hoverinfo:e({},M.hoverinfo),showlegend:e({},M.showlegend,{dflt:!1})}),"calc","nested");r.x.editType=r.y.editType=r.z.editType=r.value.editType="calc+clearAxisTypes"}}),KN=Ye({"src/traces/volume/defaults.js"(X,H){"use strict";var g=ta(),x=T5(),A=b5().supplyIsoDefaults,M=x5().opacityscaleDefaults;H.exports=function(t,r,o,a){function i(n,s){return g.coerce(t,r,x,n,s)}A(t,r,o,a,i),M(t,r,a,i)}}}),JN=Ye({"src/traces/volume/convert.js"(X,H){"use strict";var g=Gh().gl_mesh3d,x=em().parseColorScale,A=ta().isArrayOrTypedArray,M=Qv(),e=Su().extractOpts,t=S1(),r=rT().findNearestOnAxis,o=rT().generateIsoMeshes;function a(s,c,h){this.scene=s,this.uid=h,this.mesh=c,this.name="",this.data=null,this.showContour=!1}var i=a.prototype;i.handlePick=function(s){if(s.object===this.mesh){var c=s.data.index,h=this.data._meshX[c],v=this.data._meshY[c],p=this.data._meshZ[c],T=this.data._Ys.length,l=this.data._Zs.length,_=r(h,this.data._Xs).id,w=r(v,this.data._Ys).id,S=r(p,this.data._Zs).id,E=s.index=S+l*w+l*T*_;s.traceCoordinate=[this.data._meshX[E],this.data._meshY[E],this.data._meshZ[E],this.data._value[E]];var m=this.data.hovertext||this.data.text;return A(m)&&m[E]!==void 0?s.textLabel=m[E]:m&&(s.textLabel=m),!0}},i.update=function(s){var c=this.scene,h=c.fullSceneLayout;this.data=o(s);function v(w,S,E,m){return S.map(function(b){return w.d2l(b,0,m)*E})}var p=t(v(h.xaxis,s._meshX,c.dataScale[0],s.xcalendar),v(h.yaxis,s._meshY,c.dataScale[1],s.ycalendar),v(h.zaxis,s._meshZ,c.dataScale[2],s.zcalendar)),T=t(s._meshI,s._meshJ,s._meshK),l={positions:p,cells:T,lightPosition:[s.lightposition.x,s.lightposition.y,s.lightposition.z],ambient:s.lighting.ambient,diffuse:s.lighting.diffuse,specular:s.lighting.specular,roughness:s.lighting.roughness,fresnel:s.lighting.fresnel,vertexNormalsEpsilon:s.lighting.vertexnormalsepsilon,faceNormalsEpsilon:s.lighting.facenormalsepsilon,opacity:s.opacity,opacityscale:s.opacityscale,contourEnable:s.contour.show,contourColor:M(s.contour.color).slice(0,3),contourWidth:s.contour.width,useFacetNormals:s.flatshading},_=e(s);l.vertexIntensity=s._meshIntensity,l.vertexIntensityBounds=[_.min,_.max],l.colormap=x(s),this.mesh.update(l)},i.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function n(s,c){var h=s.glplot.gl,v=g({gl:h}),p=new a(s,v,c.uid);return v._trace=p,p.update(c),s.glplot.add(v),p}H.exports=n}}),$N=Ye({"src/traces/volume/index.js"(X,H){"use strict";H.exports={attributes:T5(),supplyDefaults:KN(),calc:w5(),colorbar:{min:"cmin",max:"cmax"},plot:JN(),moduleType:"trace",name:"volume",basePlotModule:pg(),categories:["gl3d","showLegend"],meta:{}}}}),QN=Ye({"lib/volume.js"(X,H){"use strict";H.exports=$N()}}),eU=Ye({"src/traces/mesh3d/defaults.js"(X,H){"use strict";var g=Hn(),x=ta(),A=sh(),M=A1();H.exports=function(t,r,o,a){function i(v,p){return x.coerce(t,r,M,v,p)}function n(v){var p=v.map(function(T){var l=i(T);return l&&x.isArrayOrTypedArray(l)?l:null});return p.every(function(T){return T&&T.length===p[0].length})&&p}var s=n(["x","y","z"]);if(!s){r.visible=!1;return}if(n(["i","j","k"]),r.i&&(!r.j||!r.k)||r.j&&(!r.k||!r.i)||r.k&&(!r.i||!r.j)){r.visible=!1;return}var c=g.getComponentMethod("calendars","handleTraceDefaults");c(t,r,["x","y","z"],a),["lighting.ambient","lighting.diffuse","lighting.specular","lighting.roughness","lighting.fresnel","lighting.vertexnormalsepsilon","lighting.facenormalsepsilon","lightposition.x","lightposition.y","lightposition.z","flatshading","alphahull","delaunayaxis","opacity"].forEach(function(v){i(v)});var h=i("contour.show");h&&(i("contour.color"),i("contour.width")),"intensity"in t?(i("intensity"),i("intensitymode"),A(t,r,a,i,{prefix:"",cLetter:"c"})):(r.showscale=!1,"facecolor"in t?i("facecolor"):"vertexcolor"in t?i("vertexcolor"):i("color",o)),i("text"),i("hovertext"),i("hovertemplate"),i("xhoverformat"),i("yhoverformat"),i("zhoverformat"),r._length=null}}}),tU=Ye({"src/traces/mesh3d/calc.js"(X,H){"use strict";var g=jp();H.exports=function(A,M){M.intensity&&g(A,M,{vals:M.intensity,containerStr:"",cLetter:"c"})}}}),rU=Ye({"src/traces/mesh3d/convert.js"(X,H){"use strict";var g=Gh().gl_mesh3d,x=Gh().delaunay_triangulate,A=Gh().alpha_shape,M=Gh().convex_hull,e=em().parseColorScale,t=ta().isArrayOrTypedArray,r=Qv(),o=Su().extractOpts,a=S1();function i(l,_,w){this.scene=l,this.uid=w,this.mesh=_,this.name="",this.color="#fff",this.data=null,this.showContour=!1}var n=i.prototype;n.handlePick=function(l){if(l.object===this.mesh){var _=l.index=l.data.index;l.data._cellCenter?l.traceCoordinate=l.data.dataCoordinate:l.traceCoordinate=[this.data.x[_],this.data.y[_],this.data.z[_]];var w=this.data.hovertext||this.data.text;return t(w)&&w[_]!==void 0?l.textLabel=w[_]:w&&(l.textLabel=w),!0}};function s(l){for(var _=[],w=l.length,S=0;S=_-.5)return!1;return!0}n.update=function(l){var _=this.scene,w=_.fullSceneLayout;this.data=l;var S=l.x.length,E=a(c(w.xaxis,l.x,_.dataScale[0],l.xcalendar),c(w.yaxis,l.y,_.dataScale[1],l.ycalendar),c(w.zaxis,l.z,_.dataScale[2],l.zcalendar)),m;if(l.i&&l.j&&l.k){if(l.i.length!==l.j.length||l.j.length!==l.k.length||!p(l.i,S)||!p(l.j,S)||!p(l.k,S))return;m=a(h(l.i),h(l.j),h(l.k))}else l.alphahull===0?m=M(E):l.alphahull>0?m=A(l.alphahull,E):m=v(l.delaunayaxis,E);var b={positions:E,cells:m,lightPosition:[l.lightposition.x,l.lightposition.y,l.lightposition.z],ambient:l.lighting.ambient,diffuse:l.lighting.diffuse,specular:l.lighting.specular,roughness:l.lighting.roughness,fresnel:l.lighting.fresnel,vertexNormalsEpsilon:l.lighting.vertexnormalsepsilon,faceNormalsEpsilon:l.lighting.facenormalsepsilon,opacity:l.opacity,contourEnable:l.contour.show,contourColor:r(l.contour.color).slice(0,3),contourWidth:l.contour.width,useFacetNormals:l.flatshading};if(l.intensity){var d=o(l);this.color="#fff";var u=l.intensitymode;b[u+"Intensity"]=l.intensity,b[u+"IntensityBounds"]=[d.min,d.max],b.colormap=e(l)}else l.vertexcolor?(this.color=l.vertexcolor[0],b.vertexColors=s(l.vertexcolor)):l.facecolor?(this.color=l.facecolor[0],b.cellColors=s(l.facecolor)):(this.color=l.color,b.meshColor=r(l.color));this.mesh.update(b)},n.dispose=function(){this.scene.glplot.remove(this.mesh),this.mesh.dispose()};function T(l,_){var w=l.glplot.gl,S=g({gl:w}),E=new i(l,S,_.uid);return S._trace=E,E.update(_),l.glplot.add(S),E}H.exports=T}}),aU=Ye({"src/traces/mesh3d/index.js"(X,H){"use strict";H.exports={attributes:A1(),supplyDefaults:eU(),calc:tU(),colorbar:{min:"cmin",max:"cmax"},plot:rU(),moduleType:"trace",name:"mesh3d",basePlotModule:pg(),categories:["gl3d","showLegend"],meta:{}}}}),iU=Ye({"lib/mesh3d.js"(X,H){"use strict";H.exports=aU()}}),A5=Ye({"src/traces/cone/attributes.js"(X,H){"use strict";var g=tu(),x=Cc().axisHoverFormat,A=xs().hovertemplateAttrs,M=A1(),e=Pl(),t=Oo().extendFlat,r={x:{valType:"data_array",editType:"calc+clearAxisTypes"},y:{valType:"data_array",editType:"calc+clearAxisTypes"},z:{valType:"data_array",editType:"calc+clearAxisTypes"},u:{valType:"data_array",editType:"calc"},v:{valType:"data_array",editType:"calc"},w:{valType:"data_array",editType:"calc"},sizemode:{valType:"enumerated",values:["scaled","absolute","raw"],editType:"calc",dflt:"scaled"},sizeref:{valType:"number",editType:"calc",min:0},anchor:{valType:"enumerated",editType:"calc",values:["tip","tail","cm","center"],dflt:"cm"},text:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertext:{valType:"string",dflt:"",arrayOk:!0,editType:"calc"},hovertemplate:A({editType:"calc"},{keys:["norm"]}),uhoverformat:x("u",1),vhoverformat:x("v",1),whoverformat:x("w",1),xhoverformat:x("x"),yhoverformat:x("y"),zhoverformat:x("z"),showlegend:t({},e.showlegend,{dflt:!1})};t(r,g("",{colorAttr:"u/v/w norm",showScaleDflt:!0,editTypeOverride:"calc"}));var o=["opacity","lightposition","lighting"];o.forEach(function(a){r[a]=M[a]}),r.hoverinfo=t({},e.hoverinfo,{editType:"calc",flags:["x","y","z","u","v","w","norm","text","name"],dflt:"x+y+z+norm+text+name"}),H.exports=r}}),nU=Ye({"src/traces/cone/defaults.js"(X,H){"use strict";var g=ta(),x=sh(),A=A5();H.exports=function(e,t,r,o){function a(T,l){return g.coerce(e,t,A,T,l)}var i=a("u"),n=a("v"),s=a("w"),c=a("x"),h=a("y"),v=a("z");if(!i||!i.length||!n||!n.length||!s||!s.length||!c||!c.length||!h||!h.length||!v||!v.length){t.visible=!1;return}var p=a("sizemode");a("sizeref",p==="raw"?1:.5),a("anchor"),a("lighting.ambient"),a("lighting.diffuse"),a("lighting.specular"),a("lighting.roughness"),a("lighting.fresnel"),a("lightposition.x"),a("lightposition.y"),a("lightposition.z"),x(e,t,o,a,{prefix:"",cLetter:"c"}),a("text"),a("hovertext"),a("hovertemplate"),a("uhoverformat"),a("vhoverformat"),a("whoverformat"),a("xhoverformat"),a("yhoverformat"),a("zhoverformat"),t._length=null}}}),oU=Ye({"src/traces/cone/calc.js"(X,H){"use strict";var g=jp();H.exports=function(A,M){for(var e=M.u,t=M.v,r=M.w,o=Math.min(M.x.length,M.y.length,M.z.length,e.length,t.length,r.length),a=-1/0,i=1/0,n=0;n2?p=h.slice(1,v-1):v===2?p=[(h[0]+h[1])/2]:p=h,p}function n(h){var v=h.length;return v===1?[.5,.5]:[h[1]-h[0],h[v-1]-h[v-2]]}function s(h,v){var p=h.fullSceneLayout,T=h.dataScale,l=v._len,_={};function w(he,G){var $=p[G],J=T[r[G]];return A.simpleMap(he,function(Z){return $.d2l(Z)*J})}if(_.vectors=t(w(v._u,"xaxis"),w(v._v,"yaxis"),w(v._w,"zaxis"),l),!l)return{positions:[],cells:[]};var S=w(v._Xs,"xaxis"),E=w(v._Ys,"yaxis"),m=w(v._Zs,"zaxis");_.meshgrid=[S,E,m],_.gridFill=v._gridFill;var b=v._slen;if(b)_.startingPositions=t(w(v._startsX,"xaxis"),w(v._startsY,"yaxis"),w(v._startsZ,"zaxis"));else{for(var d=E[0],u=i(S),y=i(m),f=new Array(u.length*y.length),P=0,L=0;Ld&&(d=P[0]),P[1]u&&(u=P[1])}function f(P){switch(P.type){case"GeometryCollection":P.geometries.forEach(f);break;case"Point":y(P.coordinates);break;case"MultiPoint":P.coordinates.forEach(y);break}}w.arcs.forEach(function(P){for(var L=-1,z=P.length,F;++Ld&&(d=F[0]),F[1]u&&(u=F[1])});for(E in w.objects)f(w.objects[E]);return[m,b,d,u]}function e(w,S){for(var E,m=w.length,b=m-S;b<--m;)E=w[b],w[b++]=w[m],w[m]=E}function t(w,S){return typeof S=="string"&&(S=w.objects[S]),S.type==="GeometryCollection"?{type:"FeatureCollection",features:S.geometries.map(function(E){return r(w,E)})}:r(w,S)}function r(w,S){var E=S.id,m=S.bbox,b=S.properties==null?{}:S.properties,d=o(w,S);return E==null&&m==null?{type:"Feature",properties:b,geometry:d}:m==null?{type:"Feature",id:E,properties:b,geometry:d}:{type:"Feature",id:E,bbox:m,properties:b,geometry:d}}function o(w,S){var E=A(w.transform),m=w.arcs;function b(L,z){z.length&&z.pop();for(var F=m[L<0?~L:L],B=0,O=F.length;B1)m=s(w,S,E);else for(b=0,m=new Array(d=w.arcs.length);b1)for(var z=1,F=y(P[0]),B,O;zF&&(O=P[0],P[0]=P[z],P[z]=O,F=B);return P}).filter(function(f){return f.length>0})}}function p(w,S){for(var E=0,m=w.length;E>>1;w[b]=2))throw new Error("n must be \u22652");f=w.bbox||M(w);var E=f[0],m=f[1],b=f[2],d=f[3],u;S={scale:[b-E?(b-E)/(u-1):1,d-m?(d-m)/(u-1):1],translate:[E,m]}}else f=w.bbox;var y=l(S),f,P,L=w.objects,z={};function F(I){return y(I)}function B(I){var N;switch(I.type){case"GeometryCollection":N={type:"GeometryCollection",geometries:I.geometries.map(B)};break;case"Point":N={type:"Point",coordinates:F(I.coordinates)};break;case"MultiPoint":N={type:"MultiPoint",coordinates:I.coordinates.map(F)};break;default:return I}return I.id!=null&&(N.id=I.id),I.bbox!=null&&(N.bbox=I.bbox),I.properties!=null&&(N.properties=I.properties),N}function O(I){var N=0,U=1,W=I.length,Q,ue=new Array(W);for(ue[0]=y(I[0],0);++N0&&(M.push(e),e=[])}return e.length>0&&M.push(e),M},X.makeLine=function(g){return g.length===1?{type:"LineString",coordinates:g[0]}:{type:"MultiLineString",coordinates:g}},X.makePolygon=function(g){if(g.length===1)return{type:"Polygon",coordinates:g};for(var x=new Array(g.length),A=0;Ae(B,z)),F)}function r(L,z,F={}){for(let O of L){if(O.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");if(O[O.length-1].length!==O[0].length)throw new Error("First and last Position are not equivalent.");for(let I=0;Ir(B,z)),F)}function a(L,z,F={}){if(L.length<2)throw new Error("coordinates must be an array of two or more positions");return A({type:"LineString",coordinates:L},z,F)}function i(L,z,F={}){return n(L.map(B=>a(B,z)),F)}function n(L,z={}){let F={type:"FeatureCollection"};return z.id&&(F.id=z.id),z.bbox&&(F.bbox=z.bbox),F.features=L,F}function s(L,z,F={}){return A({type:"MultiLineString",coordinates:L},z,F)}function c(L,z,F={}){return A({type:"MultiPoint",coordinates:L},z,F)}function h(L,z,F={}){return A({type:"MultiPolygon",coordinates:L},z,F)}function v(L,z,F={}){return A({type:"GeometryCollection",geometries:L},z,F)}function p(L,z=0){if(z&&!(z>=0))throw new Error("precision must be a positive number");let F=Math.pow(10,z||0);return Math.round(L*F)/F}function T(L,z="kilometers"){let F=g[z];if(!F)throw new Error(z+" units is invalid");return L*F}function l(L,z="kilometers"){let F=g[z];if(!F)throw new Error(z+" units is invalid");return L/F}function _(L,z){return E(l(L,z))}function w(L){let z=L%360;return z<0&&(z+=360),z}function S(L){return L=L%360,L>0?L>180?L-360:L:L<-180?L+360:L}function E(L){return L%(2*Math.PI)*180/Math.PI}function m(L){return L%360*Math.PI/180}function b(L,z="kilometers",F="kilometers"){if(!(L>=0))throw new Error("length must be a positive number");return T(l(L,z),F)}function d(L,z="meters",F="kilometers"){if(!(L>=0))throw new Error("area must be a positive number");let B=x[z];if(!B)throw new Error("invalid original units");let O=x[F];if(!O)throw new Error("invalid final units");return L/B*O}function u(L){return!isNaN(L)&&L!==null&&!Array.isArray(L)}function y(L){return L!==null&&typeof L=="object"&&!Array.isArray(L)}function f(L){if(!L)throw new Error("bbox is required");if(!Array.isArray(L))throw new Error("bbox must be an Array");if(L.length!==4&&L.length!==6)throw new Error("bbox must be an Array of 4 or 6 numbers");L.forEach(z=>{if(!u(z))throw new Error("bbox must only contain numbers")})}function P(L){if(!L)throw new Error("id is required");if(["string","number"].indexOf(typeof L)===-1)throw new Error("id must be a number or a string")}X.areaFactors=x,X.azimuthToBearing=S,X.bearingToAzimuth=w,X.convertArea=d,X.convertLength=b,X.degreesToRadians=m,X.earthRadius=H,X.factors=g,X.feature=A,X.featureCollection=n,X.geometry=M,X.geometryCollection=v,X.isNumber=u,X.isObject=y,X.lengthToDegrees=_,X.lengthToRadians=l,X.lineString=a,X.lineStrings=i,X.multiLineString=s,X.multiPoint=c,X.multiPolygon=h,X.point=e,X.points=t,X.polygon=r,X.polygons=o,X.radiansToDegrees=E,X.radiansToLength=T,X.round=p,X.validateBBox=f,X.validateId=P}}),oT=Ye({"node_modules/@turf/meta/dist/cjs/index.cjs"(X){"use strict";Object.defineProperty(X,"__esModule",{value:!0});var H=nT();function g(l,_,w){if(l!==null)for(var S,E,m,b,d,u,y,f=0,P=0,L,z=l.type,F=z==="FeatureCollection",B=z==="Feature",O=F?l.features.length:1,I=0;Iu||F>y||B>f){d=P,u=S,y=F,f=B,m=0;return}var O=H.lineString.call(void 0,[d,P],w.properties);if(_(O,S,E,B,m)===!1)return!1;m++,d=P})===!1)return!1}}})}function c(l,_,w){var S=w,E=!1;return s(l,function(m,b,d,u,y){E===!1&&w===void 0?S=m:S=_(S,m,b,d,u,y),E=!0}),S}function h(l,_){if(!l)throw new Error("geojson is required");i(l,function(w,S,E){if(w.geometry!==null){var m=w.geometry.type,b=w.geometry.coordinates;switch(m){case"LineString":if(_(w,S,E,0,0)===!1)return!1;break;case"Polygon":for(var d=0;di+A(n),0)}function A(a){let i=0,n;switch(a.type){case"Polygon":return M(a.coordinates);case"MultiPolygon":for(n=0;n0){i+=Math.abs(r(a[0]));for(let n=1;n=i?(s+2)%i:s+2],p=c[0]*t,T=h[1]*t,l=v[0]*t;n+=(l-p)*Math.sin(T),s++}return n*e}var o=x;X.area=x,X.default=o}}),yU=Ye({"node_modules/@turf/centroid/dist/cjs/index.cjs"(X){"use strict";Object.defineProperty(X,"__esModule",{value:!0});var H=nT(),g=oT();function x(M,e={}){let t=0,r=0,o=0;return g.coordEach.call(void 0,M,function(a){t+=a[0],r+=a[1],o++},!0),H.point.call(void 0,[t/o,r/o],e.properties)}var A=x;X.centroid=x,X.default=A}}),_U=Ye({"node_modules/@turf/bbox/dist/cjs/index.cjs"(X){"use strict";Object.defineProperty(X,"__esModule",{value:!0});var H=oT();function g(A,M={}){if(A.bbox!=null&&M.recompute!==!0)return A.bbox;let e=[1/0,1/0,-1/0,-1/0];return H.coordEach.call(void 0,A,t=>{e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]0&&z[F+1][0]<0)return F;return null}switch(b==="RUS"||b==="FJI"?u=function(z){var F;if(L(z)===null)F=z;else for(F=new Array(z.length),P=0;PF?B[O++]=[z[P][0]+360,z[P][1]]:P===F?(B[O++]=z[P],B[O++]=[z[P][0],-90]):B[O++]=z[P];var I=i.tester(B);I.pts.pop(),d.push(I)}:u=function(z){d.push(i.tester(z))},E.type){case"MultiPolygon":for(y=0;y0?I.properties.ct=l(I):I.properties.ct=[NaN,NaN],B.fIn=z,B.fOut=I,d.push(I)}else r.log(["Location",B.loc,"does not have a valid GeoJSON geometry.","Traces with locationmode *geojson-id* only support","*Polygon* and *MultiPolygon* geometries."].join(" "))}delete b[F]}switch(m.type){case"FeatureCollection":var P=m.features;for(u=0;ud&&(d=f,m=y)}else m=E;return M(m).geometry.coordinates}function _(S){var E=window.PlotlyGeoAssets||{},m=[];function b(P){return new Promise(function(L,z){g.json(P,function(F,B){if(F){delete E[P];var O=F.status===404?'GeoJSON at URL "'+P+'" does not exist.':"Unexpected error while fetching from "+P;return z(new Error(O))}return E[P]=B,L(B)})})}function d(P){return new Promise(function(L,z){var F=0,B=setInterval(function(){if(E[P]&&E[P]!=="pending")return clearInterval(B),L(E[P]);if(F>100)return clearInterval(B),z("Unexpected error while fetching from "+P);F++},50)})}for(var u=0;u")}}}),bU=Ye({"src/traces/scattergeo/event_data.js"(X,H){"use strict";H.exports=function(x,A,M,e,t){x.lon=A.lon,x.lat=A.lat,x.location=A.loc?A.loc:null;var r=e[t];return r.fIn&&r.fIn.properties&&(x.properties=r.fIn.properties),x}}}),wU=Ye({"src/traces/scattergeo/select.js"(X,H){"use strict";var g=uu(),x=ks().BADNUM;H.exports=function(M,e){var t=M.cd,r=M.xaxis,o=M.yaxis,a=[],i=t[0].trace,n,s,c,h,v,p=!g.hasMarkers(i)&&!g.hasText(i);if(p)return[];if(e===!1)for(v=0;vZ?1:J>=Z?0:NaN}function A(J){return J.length===1&&(J=M(J)),{left:function(Z,re,ne,j){for(ne==null&&(ne=0),j==null&&(j=Z.length);ne>>1;J(Z[ee],re)<0?ne=ee+1:j=ee}return ne},right:function(Z,re,ne,j){for(ne==null&&(ne=0),j==null&&(j=Z.length);ne>>1;J(Z[ee],re)>0?j=ee:ne=ee+1}return ne}}}function M(J){return function(Z,re){return x(J(Z),re)}}var e=A(x),t=e.right,r=e.left;function o(J,Z){Z==null&&(Z=a);for(var re=0,ne=J.length-1,j=J[0],ee=new Array(ne<0?0:ne);reJ?1:Z>=J?0:NaN}function s(J){return J===null?NaN:+J}function c(J,Z){var re=J.length,ne=0,j=-1,ee=0,ie,fe,be=0;if(Z==null)for(;++j1)return be/(ne-1)}function h(J,Z){var re=c(J,Z);return re&&Math.sqrt(re)}function v(J,Z){var re=J.length,ne=-1,j,ee,ie;if(Z==null){for(;++ne=j)for(ee=ie=j;++nej&&(ee=j),ie=j)for(ee=ie=j;++nej&&(ee=j),ie0)return[J];if((ne=Z0)for(J=Math.ceil(J/fe),Z=Math.floor(Z/fe),ie=new Array(ee=Math.ceil(Z-J+1));++j=0?(ee>=E?10:ee>=m?5:ee>=b?2:1)*Math.pow(10,j):-Math.pow(10,-j)/(ee>=E?10:ee>=m?5:ee>=b?2:1)}function y(J,Z,re){var ne=Math.abs(Z-J)/Math.max(0,re),j=Math.pow(10,Math.floor(Math.log(ne)/Math.LN10)),ee=ne/j;return ee>=E?j*=10:ee>=m?j*=5:ee>=b&&(j*=2),ZIe;)Ze.pop(),--at;var it=new Array(at+1),et;for(ee=0;ee<=at;++ee)et=it[ee]=[],et.x0=ee>0?Ze[ee-1]:Be,et.x1=ee=1)return+re(J[ne-1],ne-1,J);var ne,j=(ne-1)*Z,ee=Math.floor(j),ie=+re(J[ee],ee,J),fe=+re(J[ee+1],ee+1,J);return ie+(fe-ie)*(j-ee)}}function z(J,Z,re){return J=l.call(J,s).sort(x),Math.ceil((re-Z)/(2*(L(J,.75)-L(J,.25))*Math.pow(J.length,-1/3)))}function F(J,Z,re){return Math.ceil((re-Z)/(3.5*h(J)*Math.pow(J.length,-1/3)))}function B(J,Z){var re=J.length,ne=-1,j,ee;if(Z==null){for(;++ne=j)for(ee=j;++neee&&(ee=j)}else for(;++ne=j)for(ee=j;++neee&&(ee=j);return ee}function O(J,Z){var re=J.length,ne=re,j=-1,ee,ie=0;if(Z==null)for(;++j=0;)for(ie=J[Z],re=ie.length;--re>=0;)ee[--j]=ie[re];return ee}function U(J,Z){var re=J.length,ne=-1,j,ee;if(Z==null){for(;++ne=j)for(ee=j;++nej&&(ee=j)}else for(;++ne=j)for(ee=j;++nej&&(ee=j);return ee}function W(J,Z){for(var re=Z.length,ne=new Array(re);re--;)ne[re]=J[Z[re]];return ne}function Q(J,Z){if(re=J.length){var re,ne=0,j=0,ee,ie=J[j];for(Z==null&&(Z=x);++ne0?1:Zt<0?-1:0},d=Math.sqrt,u=Math.tan;function y(Zt){return Zt>1?0:Zt<-1?a:Math.acos(Zt)}function f(Zt){return Zt>1?i:Zt<-1?-i:Math.asin(Zt)}function P(Zt){return(Zt=m(Zt/2))*Zt}function L(){}function z(Zt,fr){Zt&&B.hasOwnProperty(Zt.type)&&B[Zt.type](Zt,fr)}var F={Feature:function(Zt,fr){z(Zt.geometry,fr)},FeatureCollection:function(Zt,fr){for(var Yr=Zt.features,qr=-1,ba=Yr.length;++qr=0?1:-1,ba=qr*Yr,Ka=l(fr),oi=m(fr),yi=G*oi,ki=he*Ka+yi*l(ba),Bi=yi*qr*m(ba);U.add(T(Bi,ki)),se=Zt,he=Ka,G=oi}function j(Zt){return W.reset(),N(Zt,$),W*2}function ee(Zt){return[T(Zt[1],Zt[0]),f(Zt[2])]}function ie(Zt){var fr=Zt[0],Yr=Zt[1],qr=l(Yr);return[qr*l(fr),qr*m(fr),m(Yr)]}function fe(Zt,fr){return Zt[0]*fr[0]+Zt[1]*fr[1]+Zt[2]*fr[2]}function be(Zt,fr){return[Zt[1]*fr[2]-Zt[2]*fr[1],Zt[2]*fr[0]-Zt[0]*fr[2],Zt[0]*fr[1]-Zt[1]*fr[0]]}function Ae(Zt,fr){Zt[0]+=fr[0],Zt[1]+=fr[1],Zt[2]+=fr[2]}function Be(Zt,fr){return[Zt[0]*fr,Zt[1]*fr,Zt[2]*fr]}function Ie(Zt){var fr=d(Zt[0]*Zt[0]+Zt[1]*Zt[1]+Zt[2]*Zt[2]);Zt[0]/=fr,Zt[1]/=fr,Zt[2]/=fr}var Ze,at,it,et,lt,Me,ge,ce,ze=A(),tt,nt,Qe={point:Ct,lineStart:Ot,lineEnd:jt,polygonStart:function(){Qe.point=ur,Qe.lineStart=ar,Qe.lineEnd=Cr,ze.reset(),$.polygonStart()},polygonEnd:function(){$.polygonEnd(),Qe.point=Ct,Qe.lineStart=Ot,Qe.lineEnd=jt,U<0?(Ze=-(it=180),at=-(et=90)):ze>r?et=90:ze<-r&&(at=-90),nt[0]=Ze,nt[1]=it},sphere:function(){Ze=-(it=180),at=-(et=90)}};function Ct(Zt,fr){tt.push(nt=[Ze=Zt,it=Zt]),fret&&(et=fr)}function St(Zt,fr){var Yr=ie([Zt*h,fr*h]);if(ce){var qr=be(ce,Yr),ba=[qr[1],-qr[0],0],Ka=be(ba,qr);Ie(Ka),Ka=ee(Ka);var oi=Zt-lt,yi=oi>0?1:-1,ki=Ka[0]*c*yi,Bi,li=v(oi)>180;li^(yi*ltet&&(et=Bi)):(ki=(ki+360)%360-180,li^(yi*ltet&&(et=fr))),li?Ztvr(Ze,it)&&(it=Zt):vr(Zt,it)>vr(Ze,it)&&(Ze=Zt):it>=Ze?(Ztit&&(it=Zt)):Zt>lt?vr(Ze,Zt)>vr(Ze,it)&&(it=Zt):vr(Zt,it)>vr(Ze,it)&&(Ze=Zt)}else tt.push(nt=[Ze=Zt,it=Zt]);fret&&(et=fr),ce=Yr,lt=Zt}function Ot(){Qe.point=St}function jt(){nt[0]=Ze,nt[1]=it,Qe.point=Ct,ce=null}function ur(Zt,fr){if(ce){var Yr=Zt-lt;ze.add(v(Yr)>180?Yr+(Yr>0?360:-360):Yr)}else Me=Zt,ge=fr;$.point(Zt,fr),St(Zt,fr)}function ar(){$.lineStart()}function Cr(){ur(Me,ge),$.lineEnd(),v(ze)>r&&(Ze=-(it=180)),nt[0]=Ze,nt[1]=it,ce=null}function vr(Zt,fr){return(fr-=Zt)<0?fr+360:fr}function _r(Zt,fr){return Zt[0]-fr[0]}function yt(Zt,fr){return Zt[0]<=Zt[1]?Zt[0]<=fr&&fr<=Zt[1]:frvr(qr[0],qr[1])&&(qr[1]=ba[1]),vr(ba[0],qr[1])>vr(qr[0],qr[1])&&(qr[0]=ba[0])):Ka.push(qr=ba);for(oi=-1/0,Yr=Ka.length-1,fr=0,qr=Ka[Yr];fr<=Yr;qr=ba,++fr)ba=Ka[fr],(yi=vr(qr[1],ba[0]))>oi&&(oi=yi,Ze=ba[0],it=qr[1])}return tt=nt=null,Ze===1/0||at===1/0?[[NaN,NaN],[NaN,NaN]]:[[Ze,at],[it,et]]}var Ke,Ne,Ee,Ve,ke,Te,Le,rt,dt,xt,It,Bt,Gt,Kt,sr,sa,Aa={sphere:L,point:La,lineStart:Ga,lineEnd:ni,polygonStart:function(){Aa.lineStart=Wt,Aa.lineEnd=zt},polygonEnd:function(){Aa.lineStart=Ga,Aa.lineEnd=ni}};function La(Zt,fr){Zt*=h,fr*=h;var Yr=l(fr);ka(Yr*l(Zt),Yr*m(Zt),m(fr))}function ka(Zt,fr,Yr){++Ke,Ee+=(Zt-Ee)/Ke,Ve+=(fr-Ve)/Ke,ke+=(Yr-ke)/Ke}function Ga(){Aa.point=Ma}function Ma(Zt,fr){Zt*=h,fr*=h;var Yr=l(fr);Kt=Yr*l(Zt),sr=Yr*m(Zt),sa=m(fr),Aa.point=Ua,ka(Kt,sr,sa)}function Ua(Zt,fr){Zt*=h,fr*=h;var Yr=l(fr),qr=Yr*l(Zt),ba=Yr*m(Zt),Ka=m(fr),oi=T(d((oi=sr*Ka-sa*ba)*oi+(oi=sa*qr-Kt*Ka)*oi+(oi=Kt*ba-sr*qr)*oi),Kt*qr+sr*ba+sa*Ka);Ne+=oi,Te+=oi*(Kt+(Kt=qr)),Le+=oi*(sr+(sr=ba)),rt+=oi*(sa+(sa=Ka)),ka(Kt,sr,sa)}function ni(){Aa.point=La}function Wt(){Aa.point=Vt}function zt(){Ut(Bt,Gt),Aa.point=La}function Vt(Zt,fr){Bt=Zt,Gt=fr,Zt*=h,fr*=h,Aa.point=Ut;var Yr=l(fr);Kt=Yr*l(Zt),sr=Yr*m(Zt),sa=m(fr),ka(Kt,sr,sa)}function Ut(Zt,fr){Zt*=h,fr*=h;var Yr=l(fr),qr=Yr*l(Zt),ba=Yr*m(Zt),Ka=m(fr),oi=sr*Ka-sa*ba,yi=sa*qr-Kt*Ka,ki=Kt*ba-sr*qr,Bi=d(oi*oi+yi*yi+ki*ki),li=f(Bi),_i=Bi&&-li/Bi;dt+=_i*oi,xt+=_i*yi,It+=_i*ki,Ne+=li,Te+=li*(Kt+(Kt=qr)),Le+=li*(sr+(sr=ba)),rt+=li*(sa+(sa=Ka)),ka(Kt,sr,sa)}function xr(Zt){Ke=Ne=Ee=Ve=ke=Te=Le=rt=dt=xt=It=0,N(Zt,Aa);var fr=dt,Yr=xt,qr=It,ba=fr*fr+Yr*Yr+qr*qr;return baa?Zt+Math.round(-Zt/s)*s:Zt,fr]}Xr.invert=Xr;function Ea(Zt,fr,Yr){return(Zt%=s)?fr||Yr?pa(qa(Zt),ya(fr,Yr)):qa(Zt):fr||Yr?ya(fr,Yr):Xr}function Fa(Zt){return function(fr,Yr){return fr+=Zt,[fr>a?fr-s:fr<-a?fr+s:fr,Yr]}}function qa(Zt){var fr=Fa(Zt);return fr.invert=Fa(-Zt),fr}function ya(Zt,fr){var Yr=l(Zt),qr=m(Zt),ba=l(fr),Ka=m(fr);function oi(yi,ki){var Bi=l(ki),li=l(yi)*Bi,_i=m(yi)*Bi,vi=m(ki),ti=vi*Yr+li*qr;return[T(_i*ba-ti*Ka,li*Yr-vi*qr),f(ti*ba+_i*Ka)]}return oi.invert=function(yi,ki){var Bi=l(ki),li=l(yi)*Bi,_i=m(yi)*Bi,vi=m(ki),ti=vi*ba-_i*Ka;return[T(_i*ba+vi*Ka,li*Yr+ti*qr),f(ti*Yr-li*qr)]},oi}function $a(Zt){Zt=Ea(Zt[0]*h,Zt[1]*h,Zt.length>2?Zt[2]*h:0);function fr(Yr){return Yr=Zt(Yr[0]*h,Yr[1]*h),Yr[0]*=c,Yr[1]*=c,Yr}return fr.invert=function(Yr){return Yr=Zt.invert(Yr[0]*h,Yr[1]*h),Yr[0]*=c,Yr[1]*=c,Yr},fr}function mt(Zt,fr,Yr,qr,ba,Ka){if(Yr){var oi=l(fr),yi=m(fr),ki=qr*Yr;ba==null?(ba=fr+qr*s,Ka=fr-ki/2):(ba=gt(oi,ba),Ka=gt(oi,Ka),(qr>0?baKa)&&(ba+=qr*s));for(var Bi,li=ba;qr>0?li>Ka:li1&&Zt.push(Zt.pop().concat(Zt.shift()))},result:function(){var Yr=Zt;return Zt=[],fr=null,Yr}}}function br(Zt,fr){return v(Zt[0]-fr[0])=0;--yi)ba.point((_i=li[yi])[0],_i[1]);else qr(vi.x,vi.p.x,-1,ba);vi=vi.p}vi=vi.o,li=vi.z,ti=!ti}while(!vi.v);ba.lineEnd()}}}function Fr(Zt){if(fr=Zt.length){for(var fr,Yr=0,qr=Zt[0],ba;++Yr=0?1:-1,Ms=Xs*bs,Hs=Ms>a,vs=Kn*co;if(Lr.add(T(vs*Xs*m(Ms),Wn*Wo+vs*l(Ms))),oi+=Hs?bs+Xs*s:bs,Hs^ti>=Yr^en>=Yr){var Il=be(ie(vi),ie(no));Ie(Il);var fl=be(Ka,Il);Ie(fl);var tl=(Hs^bs>=0?-1:1)*f(fl[2]);(qr>tl||qr===tl&&(Il[0]||Il[1]))&&(yi+=Hs^bs>=0?1:-1)}}return(oi<-r||oi0){for(ki||(ba.polygonStart(),ki=!0),ba.lineStart(),Wo=0;Wo1&&Ri&2&&co.push(co.pop().concat(co.shift())),li.push(co.filter(kt))}}return vi}}function kt(Zt){return Zt.length>1}function ir(Zt,fr){return((Zt=Zt.x)[0]<0?Zt[1]-i-r:i-Zt[1])-((fr=fr.x)[0]<0?fr[1]-i-r:i-fr[1])}var mr=ca(function(){return!0},$r,Ba,[-a,-i]);function $r(Zt){var fr=NaN,Yr=NaN,qr=NaN,ba;return{lineStart:function(){Zt.lineStart(),ba=1},point:function(Ka,oi){var yi=Ka>0?a:-a,ki=v(Ka-fr);v(ki-a)0?i:-i),Zt.point(qr,Yr),Zt.lineEnd(),Zt.lineStart(),Zt.point(yi,Yr),Zt.point(Ka,Yr),ba=0):qr!==yi&&ki>=a&&(v(fr-qr)r?p((m(fr)*(Ka=l(qr))*m(Yr)-m(qr)*(ba=l(fr))*m(Zt))/(ba*Ka*oi)):(fr+qr)/2}function Ba(Zt,fr,Yr,qr){var ba;if(Zt==null)ba=Yr*i,qr.point(-a,ba),qr.point(0,ba),qr.point(a,ba),qr.point(a,0),qr.point(a,-ba),qr.point(0,-ba),qr.point(-a,-ba),qr.point(-a,0),qr.point(-a,ba);else if(v(Zt[0]-fr[0])>r){var Ka=Zt[0]0,ba=v(fr)>r;function Ka(li,_i,vi,ti){mt(ti,Zt,Yr,vi,li,_i)}function oi(li,_i){return l(li)*l(_i)>fr}function yi(li){var _i,vi,ti,rn,Kn;return{lineStart:function(){rn=ti=!1,Kn=1},point:function(Wn,Jn){var no=[Wn,Jn],en,Ri=oi(Wn,Jn),co=qr?Ri?0:Bi(Wn,Jn):Ri?Bi(Wn+(Wn<0?a:-a),Jn):0;if(!_i&&(rn=ti=Ri)&&li.lineStart(),Ri!==ti&&(en=ki(_i,no),(!en||br(_i,en)||br(no,en))&&(no[2]=1)),Ri!==ti)Kn=0,Ri?(li.lineStart(),en=ki(no,_i),li.point(en[0],en[1])):(en=ki(_i,no),li.point(en[0],en[1],2),li.lineEnd()),_i=en;else if(ba&&_i&&qr^Ri){var Wo;!(co&vi)&&(Wo=ki(no,_i,!0))&&(Kn=0,qr?(li.lineStart(),li.point(Wo[0][0],Wo[0][1]),li.point(Wo[1][0],Wo[1][1]),li.lineEnd()):(li.point(Wo[1][0],Wo[1][1]),li.lineEnd(),li.lineStart(),li.point(Wo[0][0],Wo[0][1],3)))}Ri&&(!_i||!br(_i,no))&&li.point(no[0],no[1]),_i=no,ti=Ri,vi=co},lineEnd:function(){ti&&li.lineEnd(),_i=null},clean:function(){return Kn|(rn&&ti)<<1}}}function ki(li,_i,vi){var ti=ie(li),rn=ie(_i),Kn=[1,0,0],Wn=be(ti,rn),Jn=fe(Wn,Wn),no=Wn[0],en=Jn-no*no;if(!en)return!vi&&li;var Ri=fr*Jn/en,co=-fr*no/en,Wo=be(Kn,Wn),bs=Be(Kn,Ri),Xs=Be(Wn,co);Ae(bs,Xs);var Ms=Wo,Hs=fe(bs,Ms),vs=fe(Ms,Ms),Il=Hs*Hs-vs*(fe(bs,bs)-1);if(!(Il<0)){var fl=d(Il),tl=Be(Ms,(-Hs-fl)/vs);if(Ae(tl,bs),tl=ee(tl),!vi)return tl;var Ln=li[0],Ao=_i[0],js=li[1],Ts=_i[1],nu;Ao0^tl[1]<(v(tl[0]-Ln)a^(Ln<=tl[0]&&tl[0]<=Ao)){var yu=Be(Ms,(-Hs+fl)/vs);return Ae(yu,bs),[tl,ee(yu)]}}}function Bi(li,_i){var vi=qr?Zt:a-Zt,ti=0;return li<-vi?ti|=1:li>vi&&(ti|=2),_i<-vi?ti|=4:_i>vi&&(ti|=8),ti}return ca(oi,yi,Ka,qr?[0,-Zt]:[-a,Zt-a])}function da(Zt,fr,Yr,qr,ba,Ka){var oi=Zt[0],yi=Zt[1],ki=fr[0],Bi=fr[1],li=0,_i=1,vi=ki-oi,ti=Bi-yi,rn;if(rn=Yr-oi,!(!vi&&rn>0)){if(rn/=vi,vi<0){if(rn0){if(rn>_i)return;rn>li&&(li=rn)}if(rn=ba-oi,!(!vi&&rn<0)){if(rn/=vi,vi<0){if(rn>_i)return;rn>li&&(li=rn)}else if(vi>0){if(rn0)){if(rn/=ti,ti<0){if(rn0){if(rn>_i)return;rn>li&&(li=rn)}if(rn=Ka-yi,!(!ti&&rn<0)){if(rn/=ti,ti<0){if(rn>_i)return;rn>li&&(li=rn)}else if(ti>0){if(rn0&&(Zt[0]=oi+li*vi,Zt[1]=yi+li*ti),_i<1&&(fr[0]=oi+_i*vi,fr[1]=yi+_i*ti),!0}}}}}var Sa=1e9,Ti=-Sa;function ai(Zt,fr,Yr,qr){function ba(Bi,li){return Zt<=Bi&&Bi<=Yr&&fr<=li&&li<=qr}function Ka(Bi,li,_i,vi){var ti=0,rn=0;if(Bi==null||(ti=oi(Bi,_i))!==(rn=oi(li,_i))||ki(Bi,li)<0^_i>0)do vi.point(ti===0||ti===3?Zt:Yr,ti>1?qr:fr);while((ti=(ti+_i+4)%4)!==rn);else vi.point(li[0],li[1])}function oi(Bi,li){return v(Bi[0]-Zt)0?0:3:v(Bi[0]-Yr)0?2:1:v(Bi[1]-fr)0?1:0:li>0?3:2}function yi(Bi,li){return ki(Bi.x,li.x)}function ki(Bi,li){var _i=oi(Bi,1),vi=oi(li,1);return _i!==vi?_i-vi:_i===0?li[1]-Bi[1]:_i===1?Bi[0]-li[0]:_i===2?Bi[1]-li[1]:li[0]-Bi[0]}return function(Bi){var li=Bi,_i=kr(),vi,ti,rn,Kn,Wn,Jn,no,en,Ri,co,Wo,bs={point:Xs,lineStart:Il,lineEnd:fl,polygonStart:Hs,polygonEnd:vs};function Xs(Ln,Ao){ba(Ln,Ao)&&li.point(Ln,Ao)}function Ms(){for(var Ln=0,Ao=0,js=ti.length;Aoqr&&(Bc-tf)*(qr-yu)>(Iu-yu)*(Zt-tf)&&++Ln:Iu<=qr&&(Bc-tf)*(qr-yu)<(Iu-yu)*(Zt-tf)&&--Ln;return Ln}function Hs(){li=_i,vi=[],ti=[],Wo=!0}function vs(){var Ln=Ms(),Ao=Wo&&Ln,js=(vi=x.merge(vi)).length;(Ao||js)&&(Bi.polygonStart(),Ao&&(Bi.lineStart(),Ka(null,null,1,Bi),Bi.lineEnd()),js&&Mr(vi,yi,Ln,Ka,Bi),Bi.polygonEnd()),li=Bi,vi=ti=rn=null}function Il(){bs.point=tl,ti&&ti.push(rn=[]),co=!0,Ri=!1,no=en=NaN}function fl(){vi&&(tl(Kn,Wn),Jn&&Ri&&_i.rejoin(),vi.push(_i.result())),bs.point=Xs,Ri&&li.lineEnd()}function tl(Ln,Ao){var js=ba(Ln,Ao);if(ti&&rn.push([Ln,Ao]),co)Kn=Ln,Wn=Ao,Jn=js,co=!1,js&&(li.lineStart(),li.point(Ln,Ao));else if(js&&Ri)li.point(Ln,Ao);else{var Ts=[no=Math.max(Ti,Math.min(Sa,no)),en=Math.max(Ti,Math.min(Sa,en))],nu=[Ln=Math.max(Ti,Math.min(Sa,Ln)),Ao=Math.max(Ti,Math.min(Sa,Ao))];da(Ts,nu,Zt,fr,Yr,qr)?(Ri||(li.lineStart(),li.point(Ts[0],Ts[1])),li.point(nu[0],nu[1]),js||li.lineEnd(),Wo=!1):js&&(li.lineStart(),li.point(Ln,Ao),Wo=!1)}no=Ln,en=Ao,Ri=js}return bs}}function an(){var Zt=0,fr=0,Yr=960,qr=500,ba,Ka,oi;return oi={stream:function(yi){return ba&&Ka===yi?ba:ba=ai(Zt,fr,Yr,qr)(Ka=yi)},extent:function(yi){return arguments.length?(Zt=+yi[0][0],fr=+yi[0][1],Yr=+yi[1][0],qr=+yi[1][1],ba=Ka=null,oi):[[Zt,fr],[Yr,qr]]}}}var sn=A(),Mn,On,$n,Cn={sphere:L,point:L,lineStart:Lo,lineEnd:L,polygonStart:L,polygonEnd:L};function Lo(){Cn.point=Jo,Cn.lineEnd=Xi}function Xi(){Cn.point=Cn.lineEnd=L}function Jo(Zt,fr){Zt*=h,fr*=h,Mn=Zt,On=m(fr),$n=l(fr),Cn.point=zo}function zo(Zt,fr){Zt*=h,fr*=h;var Yr=m(fr),qr=l(fr),ba=v(Zt-Mn),Ka=l(ba),oi=m(ba),yi=qr*oi,ki=$n*Yr-On*qr*Ka,Bi=On*Yr+$n*qr*Ka;sn.add(T(d(yi*yi+ki*ki),Bi)),Mn=Zt,On=Yr,$n=qr}function as(Zt){return sn.reset(),N(Zt,Cn),+sn}var Pn=[null,null],go={type:"LineString",coordinates:Pn};function In(Zt,fr){return Pn[0]=Zt,Pn[1]=fr,as(go)}var Do={Feature:function(Zt,fr){return Qo(Zt.geometry,fr)},FeatureCollection:function(Zt,fr){for(var Yr=Zt.features,qr=-1,ba=Yr.length;++qr0&&(ba=In(Zt[Ka],Zt[Ka-1]),ba>0&&Yr<=ba&&qr<=ba&&(Yr+qr-ba)*(1-Math.pow((Yr-qr)/ba,2))r}).map(vi)).concat(x.range(_(Ka/Bi)*Bi,ba,Bi).filter(function(en){return v(en%_i)>r}).map(ti))}return Jn.lines=function(){return no().map(function(en){return{type:"LineString",coordinates:en}})},Jn.outline=function(){return{type:"Polygon",coordinates:[rn(qr).concat(Kn(oi).slice(1),rn(Yr).reverse().slice(1),Kn(yi).reverse().slice(1))]}},Jn.extent=function(en){return arguments.length?Jn.extentMajor(en).extentMinor(en):Jn.extentMinor()},Jn.extentMajor=function(en){return arguments.length?(qr=+en[0][0],Yr=+en[1][0],yi=+en[0][1],oi=+en[1][1],qr>Yr&&(en=qr,qr=Yr,Yr=en),yi>oi&&(en=yi,yi=oi,oi=en),Jn.precision(Wn)):[[qr,yi],[Yr,oi]]},Jn.extentMinor=function(en){return arguments.length?(fr=+en[0][0],Zt=+en[1][0],Ka=+en[0][1],ba=+en[1][1],fr>Zt&&(en=fr,fr=Zt,Zt=en),Ka>ba&&(en=Ka,Ka=ba,ba=en),Jn.precision(Wn)):[[fr,Ka],[Zt,ba]]},Jn.step=function(en){return arguments.length?Jn.stepMajor(en).stepMinor(en):Jn.stepMinor()},Jn.stepMajor=function(en){return arguments.length?(li=+en[0],_i=+en[1],Jn):[li,_i]},Jn.stepMinor=function(en){return arguments.length?(ki=+en[0],Bi=+en[1],Jn):[ki,Bi]},Jn.precision=function(en){return arguments.length?(Wn=+en,vi=fi(Ka,ba,90),ti=mn(fr,Zt,Wn),rn=fi(yi,oi,90),Kn=mn(qr,Yr,Wn),Jn):Wn},Jn.extentMajor([[-180,-90+r],[180,90-r]]).extentMinor([[-180,-80-r],[180,80+r]])}function Os(){return ol()()}function so(Zt,fr){var Yr=Zt[0]*h,qr=Zt[1]*h,ba=fr[0]*h,Ka=fr[1]*h,oi=l(qr),yi=m(qr),ki=l(Ka),Bi=m(Ka),li=oi*l(Yr),_i=oi*m(Yr),vi=ki*l(ba),ti=ki*m(ba),rn=2*f(d(P(Ka-qr)+oi*ki*P(ba-Yr))),Kn=m(rn),Wn=rn?function(Jn){var no=m(Jn*=rn)/Kn,en=m(rn-Jn)/Kn,Ri=en*li+no*vi,co=en*_i+no*ti,Wo=en*yi+no*Bi;return[T(co,Ri)*c,T(Wo,d(Ri*Ri+co*co))*c]}:function(){return[Yr*c,qr*c]};return Wn.distance=rn,Wn}function Ns(Zt){return Zt}var fs=A(),al=A(),vl,ji,To,Yn,_s={point:L,lineStart:L,lineEnd:L,polygonStart:function(){_s.lineStart=Yo,_s.lineEnd=Zu},polygonEnd:function(){_s.lineStart=_s.lineEnd=_s.point=L,fs.add(v(al)),al.reset()},result:function(){var Zt=fs/2;return fs.reset(),Zt}};function Yo(){_s.point=Nn}function Nn(Zt,fr){_s.point=Wl,vl=To=Zt,ji=Yn=fr}function Wl(Zt,fr){al.add(Yn*Zt-To*fr),To=Zt,Yn=fr}function Zu(){Wl(vl,ji)}var ml=1/0,Bu=ml,El=-ml,qs=El,Jl={point:Nu,lineStart:L,lineEnd:L,polygonStart:L,polygonEnd:L,result:function(){var Zt=[[ml,Bu],[El,qs]];return El=qs=-(Bu=ml=1/0),Zt}};function Nu(Zt,fr){ZtEl&&(El=Zt),frqs&&(qs=fr)}var Ic=0,Xu=0,Th=0,bf=0,Rs=0,Yc=0,If=0,Zl=0,yl=0,oc,_c,Zs,_l,Bs={point:$s,lineStart:sc,lineEnd:Qs,polygonStart:function(){Bs.lineStart=fp,Bs.lineEnd=es},polygonEnd:function(){Bs.point=$s,Bs.lineStart=sc,Bs.lineEnd=Qs},result:function(){var Zt=yl?[If/yl,Zl/yl]:Yc?[bf/Yc,Rs/Yc]:Th?[Ic/Th,Xu/Th]:[NaN,NaN];return Ic=Xu=Th=bf=Rs=Yc=If=Zl=yl=0,Zt}};function $s(Zt,fr){Ic+=Zt,Xu+=fr,++Th}function sc(){Bs.point=zl}function zl(Zt,fr){Bs.point=Yu,$s(Zs=Zt,_l=fr)}function Yu(Zt,fr){var Yr=Zt-Zs,qr=fr-_l,ba=d(Yr*Yr+qr*qr);bf+=ba*(Zs+Zt)/2,Rs+=ba*(_l+fr)/2,Yc+=ba,$s(Zs=Zt,_l=fr)}function Qs(){Bs.point=$s}function fp(){Bs.point=Wh}function es(){Ss(oc,_c)}function Wh(Zt,fr){Bs.point=Ss,$s(oc=Zs=Zt,_c=_l=fr)}function Ss(Zt,fr){var Yr=Zt-Zs,qr=fr-_l,ba=d(Yr*Yr+qr*qr);bf+=ba*(Zs+Zt)/2,Rs+=ba*(_l+fr)/2,Yc+=ba,ba=_l*Zt-Zs*fr,If+=ba*(Zs+Zt),Zl+=ba*(_l+fr),yl+=ba*3,$s(Zs=Zt,_l=fr)}function So(Zt){this._context=Zt}So.prototype={_radius:4.5,pointRadius:function(Zt){return this._radius=Zt,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(Zt,fr){switch(this._point){case 0:{this._context.moveTo(Zt,fr),this._point=1;break}case 1:{this._context.lineTo(Zt,fr);break}default:{this._context.moveTo(Zt+this._radius,fr),this._context.arc(Zt,fr,this._radius,0,s);break}}},result:L};var hf=A(),Ku,cu,Zf,Rc,pf,Fl={point:L,lineStart:function(){Fl.point=lh},lineEnd:function(){Ku&&Xf(cu,Zf),Fl.point=L},polygonStart:function(){Ku=!0},polygonEnd:function(){Ku=null},result:function(){var Zt=+hf;return hf.reset(),Zt}};function lh(Zt,fr){Fl.point=Xf,cu=Rc=Zt,Zf=pf=fr}function Xf(Zt,fr){Rc-=Zt,pf-=fr,hf.add(d(Rc*Rc+pf*pf)),Rc=Zt,pf=fr}function Rf(){this._string=[]}Rf.prototype={_radius:4.5,_circle:Kc(4.5),pointRadius:function(Zt){return(Zt=+Zt)!==this._radius&&(this._radius=Zt,this._circle=null),this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._string.push("Z"),this._point=NaN},point:function(Zt,fr){switch(this._point){case 0:{this._string.push("M",Zt,",",fr),this._point=1;break}case 1:{this._string.push("L",Zt,",",fr);break}default:{this._circle==null&&(this._circle=Kc(this._radius)),this._string.push("M",Zt,",",fr,this._circle);break}}},result:function(){if(this._string.length){var Zt=this._string.join("");return this._string=[],Zt}else return null}};function Kc(Zt){return"m0,"+Zt+"a"+Zt+","+Zt+" 0 1,1 0,"+-2*Zt+"a"+Zt+","+Zt+" 0 1,1 0,"+2*Zt+"z"}function Yf(Zt,fr){var Yr=4.5,qr,ba;function Ka(oi){return oi&&(typeof Yr=="function"&&ba.pointRadius(+Yr.apply(this,arguments)),N(oi,qr(ba))),ba.result()}return Ka.area=function(oi){return N(oi,qr(_s)),_s.result()},Ka.measure=function(oi){return N(oi,qr(Fl)),Fl.result()},Ka.bounds=function(oi){return N(oi,qr(Jl)),Jl.result()},Ka.centroid=function(oi){return N(oi,qr(Bs)),Bs.result()},Ka.projection=function(oi){return arguments.length?(qr=oi==null?(Zt=null,Ns):(Zt=oi).stream,Ka):Zt},Ka.context=function(oi){return arguments.length?(ba=oi==null?(fr=null,new Rf):new So(fr=oi),typeof Yr!="function"&&ba.pointRadius(Yr),Ka):fr},Ka.pointRadius=function(oi){return arguments.length?(Yr=typeof oi=="function"?oi:(ba.pointRadius(+oi),+oi),Ka):Yr},Ka.projection(Zt).context(fr)}function uh(Zt){return{stream:Ju(Zt)}}function Ju(Zt){return function(fr){var Yr=new Df;for(var qr in Zt)Yr[qr]=Zt[qr];return Yr.stream=fr,Yr}}function Df(){}Df.prototype={constructor:Df,point:function(Zt,fr){this.stream.point(Zt,fr)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};function Dc(Zt,fr,Yr){var qr=Zt.clipExtent&&Zt.clipExtent();return Zt.scale(150).translate([0,0]),qr!=null&&Zt.clipExtent(null),N(Yr,Zt.stream(Jl)),fr(Jl.result()),qr!=null&&Zt.clipExtent(qr),Zt}function Jc(Zt,fr,Yr){return Dc(Zt,function(qr){var ba=fr[1][0]-fr[0][0],Ka=fr[1][1]-fr[0][1],oi=Math.min(ba/(qr[1][0]-qr[0][0]),Ka/(qr[1][1]-qr[0][1])),yi=+fr[0][0]+(ba-oi*(qr[1][0]+qr[0][0]))/2,ki=+fr[0][1]+(Ka-oi*(qr[1][1]+qr[0][1]))/2;Zt.scale(150*oi).translate([yi,ki])},Yr)}function Eu(Zt,fr,Yr){return Jc(Zt,[[0,0],fr],Yr)}function wf(Zt,fr,Yr){return Dc(Zt,function(qr){var ba=+fr,Ka=ba/(qr[1][0]-qr[0][0]),oi=(ba-Ka*(qr[1][0]+qr[0][0]))/2,yi=-Ka*qr[0][1];Zt.scale(150*Ka).translate([oi,yi])},Yr)}function zc(Zt,fr,Yr){return Dc(Zt,function(qr){var ba=+fr,Ka=ba/(qr[1][1]-qr[0][1]),oi=-Ka*qr[0][0],yi=(ba-Ka*(qr[1][1]+qr[0][1]))/2;Zt.scale(150*Ka).translate([oi,yi])},Yr)}var Us=16,Kf=l(30*h);function Zh(Zt,fr){return+fr?df(Zt,fr):ch(Zt)}function ch(Zt){return Ju({point:function(fr,Yr){fr=Zt(fr,Yr),this.stream.point(fr[0],fr[1])}})}function df(Zt,fr){function Yr(qr,ba,Ka,oi,yi,ki,Bi,li,_i,vi,ti,rn,Kn,Wn){var Jn=Bi-qr,no=li-ba,en=Jn*Jn+no*no;if(en>4*fr&&Kn--){var Ri=oi+vi,co=yi+ti,Wo=ki+rn,bs=d(Ri*Ri+co*co+Wo*Wo),Xs=f(Wo/=bs),Ms=v(v(Wo)-1)fr||v((Jn*fl+no*tl)/en-.5)>.3||oi*vi+yi*ti+ki*rn2?Ln[2]%360*h:0,fl()):[yi*c,ki*c,Bi*c]},vs.angle=function(Ln){return arguments.length?(_i=Ln%360*h,fl()):_i*c},vs.reflectX=function(Ln){return arguments.length?(vi=Ln?-1:1,fl()):vi<0},vs.reflectY=function(Ln){return arguments.length?(ti=Ln?-1:1,fl()):ti<0},vs.precision=function(Ln){return arguments.length?(Wo=Zh(bs,co=Ln*Ln),tl()):d(co)},vs.fitExtent=function(Ln,Ao){return Jc(vs,Ln,Ao)},vs.fitSize=function(Ln,Ao){return Eu(vs,Ln,Ao)},vs.fitWidth=function(Ln,Ao){return wf(vs,Ln,Ao)},vs.fitHeight=function(Ln,Ao){return zc(vs,Ln,Ao)};function fl(){var Ln=ru(Yr,0,0,vi,ti,_i).apply(null,fr(Ka,oi)),Ao=(_i?ru:fh)(Yr,qr-Ln[0],ba-Ln[1],vi,ti,_i);return li=Ea(yi,ki,Bi),bs=pa(fr,Ao),Xs=pa(li,bs),Wo=Zh(bs,co),tl()}function tl(){return Ms=Hs=null,vs}return function(){return fr=Zt.apply(this,arguments),vs.invert=fr.invert&&Il,fl()}}function kl(Zt){var fr=0,Yr=a/3,qr=xc(Zt),ba=qr(fr,Yr);return ba.parallels=function(Ka){return arguments.length?qr(fr=Ka[0]*h,Yr=Ka[1]*h):[fr*c,Yr*c]},ba}function Fc(Zt){var fr=l(Zt);function Yr(qr,ba){return[qr*fr,m(ba)/fr]}return Yr.invert=function(qr,ba){return[qr/fr,f(ba*fr)]},Yr}function $u(Zt,fr){var Yr=m(Zt),qr=(Yr+m(fr))/2;if(v(qr)=.12&&Wn<.234&&Kn>=-.425&&Kn<-.214?ba:Wn>=.166&&Wn<.234&&Kn>=-.214&&Kn<-.115?oi:Yr).invert(vi)},li.stream=function(vi){return Zt&&fr===vi?Zt:Zt=hh([Yr.stream(fr=vi),ba.stream(vi),oi.stream(vi)])},li.precision=function(vi){return arguments.length?(Yr.precision(vi),ba.precision(vi),oi.precision(vi),_i()):Yr.precision()},li.scale=function(vi){return arguments.length?(Yr.scale(vi),ba.scale(vi*.35),oi.scale(vi),li.translate(Yr.translate())):Yr.scale()},li.translate=function(vi){if(!arguments.length)return Yr.translate();var ti=Yr.scale(),rn=+vi[0],Kn=+vi[1];return qr=Yr.translate(vi).clipExtent([[rn-.455*ti,Kn-.238*ti],[rn+.455*ti,Kn+.238*ti]]).stream(Bi),Ka=ba.translate([rn-.307*ti,Kn+.201*ti]).clipExtent([[rn-.425*ti+r,Kn+.12*ti+r],[rn-.214*ti-r,Kn+.234*ti-r]]).stream(Bi),yi=oi.translate([rn-.205*ti,Kn+.212*ti]).clipExtent([[rn-.214*ti+r,Kn+.166*ti+r],[rn-.115*ti-r,Kn+.234*ti-r]]).stream(Bi),_i()},li.fitExtent=function(vi,ti){return Jc(li,vi,ti)},li.fitSize=function(vi,ti){return Eu(li,vi,ti)},li.fitWidth=function(vi,ti){return wf(li,vi,ti)},li.fitHeight=function(vi,ti){return zc(li,vi,ti)};function _i(){return Zt=fr=null,li}return li.scale(1070)}function Uu(Zt){return function(fr,Yr){var qr=l(fr),ba=l(Yr),Ka=Zt(qr*ba);return[Ka*ba*m(fr),Ka*m(Yr)]}}function bc(Zt){return function(fr,Yr){var qr=d(fr*fr+Yr*Yr),ba=Zt(qr),Ka=m(ba),oi=l(ba);return[T(fr*Ka,qr*oi),f(qr&&Yr*Ka/qr)]}}var lc=Uu(function(Zt){return d(2/(1+Zt))});lc.invert=bc(function(Zt){return 2*f(Zt/2)});function hp(){return Cu(lc).scale(124.75).clipAngle(180-.001)}var vf=Uu(function(Zt){return(Zt=y(Zt))&&Zt/m(Zt)});vf.invert=bc(function(Zt){return Zt});function Tf(){return Cu(vf).scale(79.4188).clipAngle(180-.001)}function Lu(Zt,fr){return[Zt,S(u((i+fr)/2))]}Lu.invert=function(Zt,fr){return[Zt,2*p(w(fr))-i]};function zf(){return au(Lu).scale(961/s)}function au(Zt){var fr=Cu(Zt),Yr=fr.center,qr=fr.scale,ba=fr.translate,Ka=fr.clipExtent,oi=null,yi,ki,Bi;fr.scale=function(_i){return arguments.length?(qr(_i),li()):qr()},fr.translate=function(_i){return arguments.length?(ba(_i),li()):ba()},fr.center=function(_i){return arguments.length?(Yr(_i),li()):Yr()},fr.clipExtent=function(_i){return arguments.length?(_i==null?oi=yi=ki=Bi=null:(oi=+_i[0][0],yi=+_i[0][1],ki=+_i[1][0],Bi=+_i[1][1]),li()):oi==null?null:[[oi,yi],[ki,Bi]]};function li(){var _i=a*qr(),vi=fr($a(fr.rotate()).invert([0,0]));return Ka(oi==null?[[vi[0]-_i,vi[1]-_i],[vi[0]+_i,vi[1]+_i]]:Zt===Lu?[[Math.max(vi[0]-_i,oi),yi],[Math.min(vi[0]+_i,ki),Bi]]:[[oi,Math.max(vi[1]-_i,yi)],[ki,Math.min(vi[1]+_i,Bi)]])}return li()}function $c(Zt){return u((i+Zt)/2)}function Mh(Zt,fr){var Yr=l(Zt),qr=Zt===fr?m(Zt):S(Yr/l(fr))/S($c(fr)/$c(Zt)),ba=Yr*E($c(Zt),qr)/qr;if(!qr)return Lu;function Ka(oi,yi){ba>0?yi<-i+r&&(yi=-i+r):yi>i-r&&(yi=i-r);var ki=ba/E($c(yi),qr);return[ki*m(qr*oi),ba-ki*l(qr*oi)]}return Ka.invert=function(oi,yi){var ki=ba-yi,Bi=b(qr)*d(oi*oi+ki*ki),li=T(oi,v(ki))*b(ki);return ki*qr<0&&(li-=a*b(oi)*b(ki)),[li/qr,2*p(E(ba/Bi,1/qr))-i]},Ka}function Ff(){return kl(Mh).scale(109.5).parallels([30,30])}function il(Zt,fr){return[Zt,fr]}il.invert=il;function mu(){return Cu(il).scale(152.63)}function gu(Zt,fr){var Yr=l(Zt),qr=Zt===fr?m(Zt):(Yr-l(fr))/(fr-Zt),ba=Yr/qr+Zt;if(v(qr)r&&--qr>0);return[Zt/(.8707+(Ka=Yr*Yr)*(-.131979+Ka*(-.013791+Ka*Ka*Ka*(.003971-.001529*Ka)))),Yr]};function cc(){return Cu(Tc).scale(175.295)}function Cl(Zt,fr){return[l(fr)*m(Zt),m(fr)]}Cl.invert=bc(f);function iu(){return Cu(Cl).scale(249.5).clipAngle(90+r)}function fc(Zt,fr){var Yr=l(fr),qr=1+l(Zt)*Yr;return[Yr*m(Zt)/qr,m(fr)/qr]}fc.invert=bc(function(Zt){return 2*p(Zt)});function Oc(){return Cu(fc).scale(250).clipAngle(142)}function Qu(Zt,fr){return[S(u((i+fr)/2)),-Zt]}Qu.invert=function(Zt,fr){return[-fr,2*p(w(Zt))-i]};function ef(){var Zt=au(Qu),fr=Zt.center,Yr=Zt.rotate;return Zt.center=function(qr){return arguments.length?fr([-qr[1],qr[0]]):(qr=fr(),[qr[1],-qr[0]])},Zt.rotate=function(qr){return arguments.length?Yr([qr[0],qr[1],qr.length>2?qr[2]+90:90]):(qr=Yr(),[qr[0],qr[1],qr[2]-90])},Yr([0,0,90]).scale(159.155)}g.geoAlbers=xl,g.geoAlbersUsa=Sh,g.geoArea=j,g.geoAzimuthalEqualArea=hp,g.geoAzimuthalEqualAreaRaw=lc,g.geoAzimuthalEquidistant=Tf,g.geoAzimuthalEquidistantRaw=vf,g.geoBounds=Fe,g.geoCentroid=xr,g.geoCircle=Er,g.geoClipAntimeridian=mr,g.geoClipCircle=Ca,g.geoClipExtent=an,g.geoClipRectangle=ai,g.geoConicConformal=Ff,g.geoConicConformalRaw=Mh,g.geoConicEqualArea=vu,g.geoConicEqualAreaRaw=$u,g.geoConicEquidistant=Jf,g.geoConicEquidistantRaw=gu,g.geoContains=$o,g.geoDistance=In,g.geoEqualEarth=$f,g.geoEqualEarthRaw=Qc,g.geoEquirectangular=mu,g.geoEquirectangularRaw=il,g.geoGnomonic=Qf,g.geoGnomonicRaw=Vl,g.geoGraticule=ol,g.geoGraticule10=Os,g.geoIdentity=Vu,g.geoInterpolate=so,g.geoLength=as,g.geoMercator=zf,g.geoMercatorRaw=Lu,g.geoNaturalEarth1=cc,g.geoNaturalEarth1Raw=Tc,g.geoOrthographic=iu,g.geoOrthographicRaw=Cl,g.geoPath=Yf,g.geoProjection=Cu,g.geoProjectionMutator=xc,g.geoRotation=$a,g.geoStereographic=Oc,g.geoStereographicRaw=fc,g.geoStream=N,g.geoTransform=uh,g.geoTransverseMercator=ef,g.geoTransverseMercatorRaw=Qu,Object.defineProperty(g,"__esModule",{value:!0})})}}),TU=Ye({"node_modules/d3-geo-projection/dist/d3-geo-projection.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X,C5(),gx()):x(g.d3=g.d3||{},g.d3,g.d3)})(X,function(g,x,A){"use strict";var M=Math.abs,e=Math.atan,t=Math.atan2,r=Math.cos,o=Math.exp,a=Math.floor,i=Math.log,n=Math.max,s=Math.min,c=Math.pow,h=Math.round,v=Math.sign||function(qe){return qe>0?1:qe<0?-1:0},p=Math.sin,T=Math.tan,l=1e-6,_=1e-12,w=Math.PI,S=w/2,E=w/4,m=Math.SQRT1_2,b=F(2),d=F(w),u=w*2,y=180/w,f=w/180;function P(qe){return qe?qe/Math.sin(qe):1}function L(qe){return qe>1?S:qe<-1?-S:Math.asin(qe)}function z(qe){return qe>1?0:qe<-1?w:Math.acos(qe)}function F(qe){return qe>0?Math.sqrt(qe):0}function B(qe){return qe=o(2*qe),(qe-1)/(qe+1)}function O(qe){return(o(qe)-o(-qe))/2}function I(qe){return(o(qe)+o(-qe))/2}function N(qe){return i(qe+F(qe*qe+1))}function U(qe){return i(qe+F(qe*qe-1))}function W(qe){var Je=T(qe/2),ot=2*i(r(qe/2))/(Je*Je);function ht(At,_t){var Pt=r(At),er=r(_t),nr=p(_t),pr=er*Pt,Sr=-((1-pr?i((1+pr)/2)/(1-pr):-.5)+ot/(1+pr));return[Sr*er*p(At),Sr*nr]}return ht.invert=function(At,_t){var Pt=F(At*At+_t*_t),er=-qe/2,nr=50,pr;if(!Pt)return[0,0];do{var Sr=er/2,Wr=r(Sr),ha=p(Sr),ga=ha/Wr,Pa=-i(M(Wr));er-=pr=(2/ga*Pa-ot*ga-Pt)/(-Pa/(ha*ha)+1-ot/(2*Wr*Wr))*(Wr<0?.7:1)}while(M(pr)>l&&--nr>0);var Ja=p(er);return[t(At*Ja,Pt*r(er)),L(_t*Ja/Pt)]},ht}function Q(){var qe=S,Je=x.geoProjectionMutator(W),ot=Je(qe);return ot.radius=function(ht){return arguments.length?Je(qe=ht*f):qe*y},ot.scale(179.976).clipAngle(147)}function ue(qe,Je){var ot=r(Je),ht=P(z(ot*r(qe/=2)));return[2*ot*p(qe)*ht,p(Je)*ht]}ue.invert=function(qe,Je){if(!(qe*qe+4*Je*Je>w*w+l)){var ot=qe,ht=Je,At=25;do{var _t=p(ot),Pt=p(ot/2),er=r(ot/2),nr=p(ht),pr=r(ht),Sr=p(2*ht),Wr=nr*nr,ha=pr*pr,ga=Pt*Pt,Pa=1-ha*er*er,Ja=Pa?z(pr*er)*F(di=1/Pa):di=0,di,pi=2*Ja*pr*Pt-qe,Ci=Ja*nr-Je,$i=di*(ha*ga+Ja*pr*er*Wr),Bn=di*(.5*_t*Sr-Ja*2*nr*Pt),Sn=di*.25*(Sr*Pt-Ja*nr*ha*_t),ho=di*(Wr*er+Ja*ga*pr),ts=Bn*Sn-ho*$i;if(!ts)break;var yo=(Ci*Bn-pi*ho)/ts,Vo=(pi*Sn-Ci*$i)/ts;ot-=yo,ht-=Vo}while((M(yo)>l||M(Vo)>l)&&--At>0);return[ot,ht]}};function se(){return x.geoProjection(ue).scale(152.63)}function he(qe){var Je=p(qe),ot=r(qe),ht=qe>=0?1:-1,At=T(ht*qe),_t=(1+Je-ot)/2;function Pt(er,nr){var pr=r(nr),Sr=r(er/=2);return[(1+pr)*p(er),(ht*nr>-t(Sr,At)-.001?0:-ht*10)+_t+p(nr)*ot-(1+pr)*Je*Sr]}return Pt.invert=function(er,nr){var pr=0,Sr=0,Wr=50;do{var ha=r(pr),ga=p(pr),Pa=r(Sr),Ja=p(Sr),di=1+Pa,pi=di*ga-er,Ci=_t+Ja*ot-di*Je*ha-nr,$i=di*ha/2,Bn=-ga*Ja,Sn=Je*di*ga/2,ho=ot*Pa+Je*ha*Ja,ts=Bn*Sn-ho*$i,yo=(Ci*Bn-pi*ho)/ts/2,Vo=(pi*Sn-Ci*$i)/ts;M(Vo)>2&&(Vo/=2),pr-=yo,Sr-=Vo}while((M(yo)>l||M(Vo)>l)&&--Wr>0);return ht*Sr>-t(r(pr),At)-.001?[pr*2,Sr]:null},Pt}function G(){var qe=20*f,Je=qe>=0?1:-1,ot=T(Je*qe),ht=x.geoProjectionMutator(he),At=ht(qe),_t=At.stream;return At.parallel=function(Pt){return arguments.length?(ot=T((Je=(qe=Pt*f)>=0?1:-1)*qe),ht(qe)):qe*y},At.stream=function(Pt){var er=At.rotate(),nr=_t(Pt),pr=(At.rotate([0,0]),_t(Pt)),Sr=At.precision();return At.rotate(er),nr.sphere=function(){pr.polygonStart(),pr.lineStart();for(var Wr=Je*-180;Je*Wr<180;Wr+=Je*90)pr.point(Wr,Je*90);if(qe)for(;Je*(Wr-=3*Je*Sr)>=-180;)pr.point(Wr,Je*-t(r(Wr*f/2),ot)*y);pr.lineEnd(),pr.polygonEnd()},nr},At.scale(218.695).center([0,28.0974])}function $(qe,Je){var ot=T(Je/2),ht=F(1-ot*ot),At=1+ht*r(qe/=2),_t=p(qe)*ht/At,Pt=ot/At,er=_t*_t,nr=Pt*Pt;return[4/3*_t*(3+er-3*nr),4/3*Pt*(3+3*er-nr)]}$.invert=function(qe,Je){if(qe*=3/8,Je*=3/8,!qe&&M(Je)>1)return null;var ot=qe*qe,ht=Je*Je,At=1+ot+ht,_t=F((At-F(At*At-4*Je*Je))/2),Pt=L(_t)/3,er=_t?U(M(Je/_t))/3:N(M(qe))/3,nr=r(Pt),pr=I(er),Sr=pr*pr-nr*nr;return[v(qe)*2*t(O(er)*nr,.25-Sr),v(Je)*2*t(pr*p(Pt),.25+Sr)]};function J(){return x.geoProjection($).scale(66.1603)}var Z=F(8),re=i(1+b);function ne(qe,Je){var ot=M(Je);return ot_&&--ht>0);return[qe/(r(ot)*(Z-1/p(ot))),v(Je)*ot]};function j(){return x.geoProjection(ne).scale(112.314)}function ee(qe){var Je=2*w/qe;function ot(ht,At){var _t=x.geoAzimuthalEquidistantRaw(ht,At);if(M(ht)>S){var Pt=t(_t[1],_t[0]),er=F(_t[0]*_t[0]+_t[1]*_t[1]),nr=Je*h((Pt-S)/Je)+S,pr=t(p(Pt-=nr),2-r(Pt));Pt=nr+L(w/er*p(pr))-pr,_t[0]=er*r(Pt),_t[1]=er*p(Pt)}return _t}return ot.invert=function(ht,At){var _t=F(ht*ht+At*At);if(_t>S){var Pt=t(At,ht),er=Je*h((Pt-S)/Je)+S,nr=Pt>er?-1:1,pr=_t*r(er-Pt),Sr=1/T(nr*z((pr-w)/F(w*(w-2*pr)+_t*_t)));Pt=er+2*e((Sr+nr*F(Sr*Sr-3))/3),ht=_t*r(Pt),At=_t*p(Pt)}return x.geoAzimuthalEquidistantRaw.invert(ht,At)},ot}function ie(){var qe=5,Je=x.geoProjectionMutator(ee),ot=Je(qe),ht=ot.stream,At=.01,_t=-r(At*f),Pt=p(At*f);return ot.lobes=function(er){return arguments.length?Je(qe=+er):qe},ot.stream=function(er){var nr=ot.rotate(),pr=ht(er),Sr=(ot.rotate([0,0]),ht(er));return ot.rotate(nr),pr.sphere=function(){Sr.polygonStart(),Sr.lineStart();for(var Wr=0,ha=360/qe,ga=2*w/qe,Pa=90-180/qe,Ja=S;Wr0&&M(At)>l);return ht<0?NaN:ot}function Ie(qe,Je,ot){return Je===void 0&&(Je=40),ot===void 0&&(ot=_),function(ht,At,_t,Pt){var er,nr,pr;_t=_t===void 0?0:+_t,Pt=Pt===void 0?0:+Pt;for(var Sr=0;Srer){_t-=nr/=2,Pt-=pr/=2;continue}er=Pa;var Ja=(_t>0?-1:1)*ot,di=(Pt>0?-1:1)*ot,pi=qe(_t+Ja,Pt),Ci=qe(_t,Pt+di),$i=(pi[0]-Wr[0])/Ja,Bn=(pi[1]-Wr[1])/Ja,Sn=(Ci[0]-Wr[0])/di,ho=(Ci[1]-Wr[1])/di,ts=ho*$i-Bn*Sn,yo=(M(ts)<.5?.5:1)/ts;if(nr=(ga*Sn-ha*ho)*yo,pr=(ha*Bn-ga*$i)*yo,_t+=nr,Pt+=pr,M(nr)0&&(er[1]*=1+nr/1.5*er[0]*er[0]),er}return ht.invert=Ie(ht),ht}function at(){return x.geoProjection(Ze()).rotate([-16.5,-42]).scale(176.57).center([7.93,.09])}function it(qe,Je){var ot=qe*p(Je),ht=30,At;do Je-=At=(Je+p(Je)-ot)/(1+r(Je));while(M(At)>l&&--ht>0);return Je/2}function et(qe,Je,ot){function ht(At,_t){return[qe*At*r(_t=it(ot,_t)),Je*p(_t)]}return ht.invert=function(At,_t){return _t=L(_t/Je),[At/(qe*r(_t)),L((2*_t+p(2*_t))/ot)]},ht}var lt=et(b/S,b,w);function Me(){return x.geoProjection(lt).scale(169.529)}var ge=2.00276,ce=1.11072;function ze(qe,Je){var ot=it(w,Je);return[ge*qe/(1/r(Je)+ce/r(ot)),(Je+b*p(ot))/ge]}ze.invert=function(qe,Je){var ot=ge*Je,ht=Je<0?-E:E,At=25,_t,Pt;do Pt=ot-b*p(ht),ht-=_t=(p(2*ht)+2*ht-w*p(Pt))/(2*r(2*ht)+2+w*r(Pt)*b*r(ht));while(M(_t)>l&&--At>0);return Pt=ot-b*p(ht),[qe*(1/r(Pt)+ce/r(ht))/ge,Pt]};function tt(){return x.geoProjection(ze).scale(160.857)}function nt(qe){var Je=0,ot=x.geoProjectionMutator(qe),ht=ot(Je);return ht.parallel=function(At){return arguments.length?ot(Je=At*f):Je*y},ht}function Qe(qe,Je){return[qe*r(Je),Je]}Qe.invert=function(qe,Je){return[qe/r(Je),Je]};function Ct(){return x.geoProjection(Qe).scale(152.63)}function St(qe){if(!qe)return Qe;var Je=1/T(qe);function ot(ht,At){var _t=Je+qe-At,Pt=_t&&ht*r(At)/_t;return[_t*p(Pt),Je-_t*r(Pt)]}return ot.invert=function(ht,At){var _t=F(ht*ht+(At=Je-At)*At),Pt=Je+qe-_t;return[_t/r(Pt)*t(ht,At),Pt]},ot}function Ot(){return nt(St).scale(123.082).center([0,26.1441]).parallel(45)}function jt(qe){function Je(ot,ht){var At=S-ht,_t=At&&ot*qe*p(At)/At;return[At*p(_t)/qe,S-At*r(_t)]}return Je.invert=function(ot,ht){var At=ot*qe,_t=S-ht,Pt=F(At*At+_t*_t),er=t(At,_t);return[(Pt?Pt/p(Pt):1)*er/qe,S-Pt]},Je}function ur(){var qe=.5,Je=x.geoProjectionMutator(jt),ot=Je(qe);return ot.fraction=function(ht){return arguments.length?Je(qe=+ht):qe},ot.scale(158.837)}var ar=et(1,4/w,w);function Cr(){return x.geoProjection(ar).scale(152.63)}function vr(qe,Je,ot,ht,At,_t){var Pt=r(_t),er;if(M(qe)>1||M(_t)>1)er=z(ot*At+Je*ht*Pt);else{var nr=p(qe/2),pr=p(_t/2);er=2*L(F(nr*nr+Je*ht*pr*pr))}return M(er)>l?[er,t(ht*p(_t),Je*At-ot*ht*Pt)]:[0,0]}function _r(qe,Je,ot){return z((qe*qe+Je*Je-ot*ot)/(2*qe*Je))}function yt(qe){return qe-2*w*a((qe+w)/(2*w))}function Fe(qe,Je,ot){for(var ht=[[qe[0],qe[1],p(qe[1]),r(qe[1])],[Je[0],Je[1],p(Je[1]),r(Je[1])],[ot[0],ot[1],p(ot[1]),r(ot[1])]],At=ht[2],_t,Pt=0;Pt<3;++Pt,At=_t)_t=ht[Pt],At.v=vr(_t[1]-At[1],At[3],At[2],_t[3],_t[2],_t[0]-At[0]),At.point=[0,0];var er=_r(ht[0].v[0],ht[2].v[0],ht[1].v[0]),nr=_r(ht[0].v[0],ht[1].v[0],ht[2].v[0]),pr=w-er;ht[2].point[1]=0,ht[0].point[0]=-(ht[1].point[0]=ht[0].v[0]/2);var Sr=[ht[2].point[0]=ht[0].point[0]+ht[2].v[0]*r(er),2*(ht[0].point[1]=ht[1].point[1]=ht[2].v[0]*p(er))];function Wr(ha,ga){var Pa=p(ga),Ja=r(ga),di=new Array(3),pi;for(pi=0;pi<3;++pi){var Ci=ht[pi];if(di[pi]=vr(ga-Ci[1],Ci[3],Ci[2],Ja,Pa,ha-Ci[0]),!di[pi][0])return Ci.point;di[pi][1]=yt(di[pi][1]-Ci.v[1])}var $i=Sr.slice();for(pi=0;pi<3;++pi){var Bn=pi==2?0:pi+1,Sn=_r(ht[pi].v[0],di[pi][0],di[Bn][0]);di[pi][1]<0&&(Sn=-Sn),pi?pi==1?(Sn=nr-Sn,$i[0]-=di[pi][0]*r(Sn),$i[1]-=di[pi][0]*p(Sn)):(Sn=pr-Sn,$i[0]+=di[pi][0]*r(Sn),$i[1]+=di[pi][0]*p(Sn)):($i[0]+=di[pi][0]*r(Sn),$i[1]-=di[pi][0]*p(Sn))}return $i[0]/=3,$i[1]/=3,$i}return Wr}function Ke(qe){return qe[0]*=f,qe[1]*=f,qe}function Ne(){return Ee([0,22],[45,22],[22.5,-22]).scale(380).center([22.5,2])}function Ee(qe,Je,ot){var ht=x.geoCentroid({type:"MultiPoint",coordinates:[qe,Je,ot]}),At=[-ht[0],-ht[1]],_t=x.geoRotation(At),Pt=Fe(Ke(_t(qe)),Ke(_t(Je)),Ke(_t(ot)));Pt.invert=Ie(Pt);var er=x.geoProjection(Pt).rotate(At),nr=er.center;return delete er.rotate,er.center=function(pr){return arguments.length?nr(_t(pr)):_t.invert(nr())},er.clipAngle(90)}function Ve(qe,Je){var ot=F(1-p(Je));return[2/d*qe*ot,d*(1-ot)]}Ve.invert=function(qe,Je){var ot=(ot=Je/d-1)*ot;return[ot>0?qe*F(w/ot)/2:0,L(1-ot)]};function ke(){return x.geoProjection(Ve).scale(95.6464).center([0,30])}function Te(qe){var Je=T(qe);function ot(ht,At){return[ht,(ht?ht/p(ht):1)*(p(At)*r(ht)-Je*r(At))]}return ot.invert=Je?function(ht,At){ht&&(At*=p(ht)/ht);var _t=r(ht);return[ht,2*t(F(_t*_t+Je*Je-At*At)-_t,Je-At)]}:function(ht,At){return[ht,L(ht?At*T(ht)/ht:At)]},ot}function Le(){return nt(Te).scale(249.828).clipAngle(90)}var rt=F(3);function dt(qe,Je){return[rt*qe*(2*r(2*Je/3)-1)/d,rt*d*p(Je/3)]}dt.invert=function(qe,Je){var ot=3*L(Je/(rt*d));return[d*qe/(rt*(2*r(2*ot/3)-1)),ot]};function xt(){return x.geoProjection(dt).scale(156.19)}function It(qe){var Je=r(qe);function ot(ht,At){return[ht*Je,p(At)/Je]}return ot.invert=function(ht,At){return[ht/Je,L(At*Je)]},ot}function Bt(){return nt(It).parallel(38.58).scale(195.044)}function Gt(qe){var Je=r(qe);function ot(ht,At){return[ht*Je,(1+Je)*T(At/2)]}return ot.invert=function(ht,At){return[ht/Je,e(At/(1+Je))*2]},ot}function Kt(){return nt(Gt).scale(124.75)}function sr(qe,Je){var ot=F(8/(3*w));return[ot*qe*(1-M(Je)/w),ot*Je]}sr.invert=function(qe,Je){var ot=F(8/(3*w)),ht=Je/ot;return[qe/(ot*(1-M(ht)/w)),ht]};function sa(){return x.geoProjection(sr).scale(165.664)}function Aa(qe,Je){var ot=F(4-3*p(M(Je)));return[2/F(6*w)*qe*ot,v(Je)*F(2*w/3)*(2-ot)]}Aa.invert=function(qe,Je){var ot=2-M(Je)/F(2*w/3);return[qe*F(6*w)/(2*ot),v(Je)*L((4-ot*ot)/3)]};function La(){return x.geoProjection(Aa).scale(165.664)}function ka(qe,Je){var ot=F(w*(4+w));return[2/ot*qe*(1+F(1-4*Je*Je/(w*w))),4/ot*Je]}ka.invert=function(qe,Je){var ot=F(w*(4+w))/2;return[qe*ot/(1+F(1-Je*Je*(4+w)/(4*w))),Je*ot/2]};function Ga(){return x.geoProjection(ka).scale(180.739)}function Ma(qe,Je){var ot=(2+S)*p(Je);Je/=2;for(var ht=0,At=1/0;ht<10&&M(At)>l;ht++){var _t=r(Je);Je-=At=(Je+p(Je)*(_t+2)-ot)/(2*_t*(1+_t))}return[2/F(w*(4+w))*qe*(1+r(Je)),2*F(w/(4+w))*p(Je)]}Ma.invert=function(qe,Je){var ot=Je*F((4+w)/w)/2,ht=L(ot),At=r(ht);return[qe/(2/F(w*(4+w))*(1+At)),L((ht+ot*(At+2))/(2+S))]};function Ua(){return x.geoProjection(Ma).scale(180.739)}function ni(qe,Je){return[qe*(1+r(Je))/F(2+w),2*Je/F(2+w)]}ni.invert=function(qe,Je){var ot=F(2+w),ht=Je*ot/2;return[ot*qe/(1+r(ht)),ht]};function Wt(){return x.geoProjection(ni).scale(173.044)}function zt(qe,Je){for(var ot=(1+S)*p(Je),ht=0,At=1/0;ht<10&&M(At)>l;ht++)Je-=At=(Je+p(Je)-ot)/(1+r(Je));return ot=F(2+w),[qe*(1+r(Je))/ot,2*Je/ot]}zt.invert=function(qe,Je){var ot=1+S,ht=F(ot/2);return[qe*2*ht/(1+r(Je*=ht)),L((Je+p(Je))/ot)]};function Vt(){return x.geoProjection(zt).scale(173.044)}var Ut=3+2*b;function xr(qe,Je){var ot=p(qe/=2),ht=r(qe),At=F(r(Je)),_t=r(Je/=2),Pt=p(Je)/(_t+b*ht*At),er=F(2/(1+Pt*Pt)),nr=F((b*_t+(ht+ot)*At)/(b*_t+(ht-ot)*At));return[Ut*(er*(nr-1/nr)-2*i(nr)),Ut*(er*Pt*(nr+1/nr)-2*e(Pt))]}xr.invert=function(qe,Je){if(!(_t=$.invert(qe/1.2,Je*1.065)))return null;var ot=_t[0],ht=_t[1],At=20,_t;qe/=Ut,Je/=Ut;do{var Pt=ot/2,er=ht/2,nr=p(Pt),pr=r(Pt),Sr=p(er),Wr=r(er),ha=r(ht),ga=F(ha),Pa=Sr/(Wr+b*pr*ga),Ja=Pa*Pa,di=F(2/(1+Ja)),pi=b*Wr+(pr+nr)*ga,Ci=b*Wr+(pr-nr)*ga,$i=pi/Ci,Bn=F($i),Sn=Bn-1/Bn,ho=Bn+1/Bn,ts=di*Sn-2*i(Bn)-qe,yo=di*Pa*ho-2*e(Pa)-Je,Vo=Sr&&m*ga*nr*Ja/Sr,ls=(b*pr*Wr+ga)/(2*(Wr+b*pr*ga)*(Wr+b*pr*ga)*ga),rl=-.5*Pa*di*di*di,Ys=rl*Vo,Zo=rl*ls,Go=(Go=2*Wr+b*ga*(pr-nr))*Go*Bn,Rl=(b*pr*Wr*ga+ha)/Go,Xl=-(b*nr*Sr)/(ga*Go),qu=Sn*Ys-2*Rl/Bn+di*(Rl+Rl/$i),fu=Sn*Zo-2*Xl/Bn+di*(Xl+Xl/$i),bl=Pa*ho*Ys-2*Vo/(1+Ja)+di*ho*Vo+di*Pa*(Rl-Rl/$i),ou=Pa*ho*Zo-2*ls/(1+Ja)+di*ho*ls+di*Pa*(Xl-Xl/$i),Sc=fu*bl-ou*qu;if(!Sc)break;var ql=(yo*fu-ts*ou)/Sc,Hl=(ts*bl-yo*qu)/Sc;ot-=ql,ht=n(-S,s(S,ht-Hl))}while((M(ql)>l||M(Hl)>l)&&--At>0);return M(M(ht)-S)ht){var Wr=F(Sr),ha=t(pr,nr),ga=ot*h(ha/ot),Pa=ha-ga,Ja=qe*r(Pa),di=(qe*p(Pa)-Pa*p(Ja))/(S-Ja),pi=br(Pa,di),Ci=(w-qe)/Tr(pi,Ja,w);nr=Wr;var $i=50,Bn;do nr-=Bn=(qe+Tr(pi,Ja,nr)*Ci-Wr)/(pi(nr)*Ci);while(M(Bn)>l&&--$i>0);pr=Pa*p(nr),nrht){var nr=F(er),pr=t(Pt,_t),Sr=ot*h(pr/ot),Wr=pr-Sr;_t=nr*r(Wr),Pt=nr*p(Wr);for(var ha=_t-S,ga=p(_t),Pa=Pt/ga,Ja=_tl||M(Pa)>l)&&--Ja>0);return[Wr,ha]},nr}var Lr=Fr(2.8284,-1.6988,.75432,-.18071,1.76003,-.38914,.042555);function Jr(){return x.geoProjection(Lr).scale(149.995)}var oa=Fr(2.583819,-.835827,.170354,-.038094,1.543313,-.411435,.082742);function ca(){return x.geoProjection(oa).scale(153.93)}var kt=Fr(5/6*w,-.62636,-.0344,0,1.3493,-.05524,0,.045);function ir(){return x.geoProjection(kt).scale(130.945)}function mr(qe,Je){var ot=qe*qe,ht=Je*Je;return[qe*(1-.162388*ht)*(.87-952426e-9*ot*ot),Je*(1+ht/12)]}mr.invert=function(qe,Je){var ot=qe,ht=Je,At=50,_t;do{var Pt=ht*ht;ht-=_t=(ht*(1+Pt/12)-Je)/(1+Pt/4)}while(M(_t)>l&&--At>0);At=50,qe/=1-.162388*Pt;do{var er=(er=ot*ot)*er;ot-=_t=(ot*(.87-952426e-9*er)-qe)/(.87-.00476213*er)}while(M(_t)>l&&--At>0);return[ot,ht]};function $r(){return x.geoProjection(mr).scale(131.747)}var ma=Fr(2.6516,-.76534,.19123,-.047094,1.36289,-.13965,.031762);function Ba(){return x.geoProjection(ma).scale(131.087)}function Ca(qe){var Je=qe(S,0)[0]-qe(-S,0)[0];function ot(ht,At){var _t=ht>0?-.5:.5,Pt=qe(ht+_t*w,At);return Pt[0]-=_t*Je,Pt}return qe.invert&&(ot.invert=function(ht,At){var _t=ht>0?-.5:.5,Pt=qe.invert(ht+_t*Je,At),er=Pt[0]-_t*w;return er<-w?er+=2*w:er>w&&(er-=2*w),Pt[0]=er,Pt}),ot}function da(qe,Je){var ot=v(qe),ht=v(Je),At=r(Je),_t=r(qe)*At,Pt=p(qe)*At,er=p(ht*Je);qe=M(t(Pt,er)),Je=L(_t),M(qe-S)>l&&(qe%=S);var nr=Sa(qe>w/4?S-qe:qe,Je);return qe>w/4&&(er=nr[0],nr[0]=-nr[1],nr[1]=-er),nr[0]*=ot,nr[1]*=-ht,nr}da.invert=function(qe,Je){M(qe)>1&&(qe=v(qe)*2-qe),M(Je)>1&&(Je=v(Je)*2-Je);var ot=v(qe),ht=v(Je),At=-ot*qe,_t=-ht*Je,Pt=_t/At<1,er=Ti(Pt?_t:At,Pt?At:_t),nr=er[0],pr=er[1],Sr=r(pr);return Pt&&(nr=-S-nr),[ot*(t(p(nr)*Sr,-p(pr))+w),ht*L(r(nr)*Sr)]};function Sa(qe,Je){if(Je===S)return[0,0];var ot=p(Je),ht=ot*ot,At=ht*ht,_t=1+At,Pt=1+3*At,er=1-At,nr=L(1/F(_t)),pr=er+ht*_t*nr,Sr=(1-ot)/pr,Wr=F(Sr),ha=Sr*_t,ga=F(ha),Pa=Wr*er,Ja,di;if(qe===0)return[0,-(Pa+ht*ga)];var pi=r(Je),Ci=1/pi,$i=2*ot*pi,Bn=(-3*ht+nr*Pt)*$i,Sn=(-pr*pi-(1-ot)*Bn)/(pr*pr),ho=.5*Sn/Wr,ts=er*ho-2*ht*Wr*$i,yo=ht*_t*Sn+Sr*Pt*$i,Vo=-Ci*$i,ls=-Ci*yo,rl=-2*Ci*ts,Ys=4*qe/w,Zo;if(qe>.222*w||Je.175*w){if(Ja=(Pa+ht*F(ha*(1+At)-Pa*Pa))/(1+At),qe>w/4)return[Ja,Ja];var Go=Ja,Rl=.5*Ja;Ja=.5*(Rl+Go),di=50;do{var Xl=F(ha-Ja*Ja),qu=Ja*(rl+Vo*Xl)+ls*L(Ja/ga)-Ys;if(!qu)break;qu<0?Rl=Ja:Go=Ja,Ja=.5*(Rl+Go)}while(M(Go-Rl)>l&&--di>0)}else{Ja=l,di=25;do{var fu=Ja*Ja,bl=F(ha-fu),ou=rl+Vo*bl,Sc=Ja*ou+ls*L(Ja/ga)-Ys,ql=ou+(ls-Vo*fu)/bl;Ja-=Zo=bl?Sc/ql:0}while(M(Zo)>l&&--di>0)}return[Ja,-Pa-ht*F(ha-Ja*Ja)]}function Ti(qe,Je){for(var ot=0,ht=1,At=.5,_t=50;;){var Pt=At*At,er=F(At),nr=L(1/F(1+Pt)),pr=1-Pt+At*(1+Pt)*nr,Sr=(1-er)/pr,Wr=F(Sr),ha=Sr*(1+Pt),ga=Wr*(1-Pt),Pa=ha-qe*qe,Ja=F(Pa),di=Je+ga+At*Ja;if(M(ht-ot)<_||--_t===0||di===0)break;di>0?ot=At:ht=At,At=.5*(ot+ht)}if(!_t)return null;var pi=L(er),Ci=r(pi),$i=1/Ci,Bn=2*er*Ci,Sn=(-3*At+nr*(1+3*Pt))*Bn,ho=(-pr*Ci-(1-er)*Sn)/(pr*pr),ts=.5*ho/Wr,yo=(1-Pt)*ts-2*At*Wr*Bn,Vo=-2*$i*yo,ls=-$i*Bn,rl=-$i*(At*(1+Pt)*ho+Sr*(1+3*Pt)*Bn);return[w/4*(qe*(Vo+ls*Ja)+rl*L(qe/F(ha))),pi]}function ai(){return x.geoProjection(Ca(da)).scale(239.75)}function an(qe,Je,ot){var ht,At,_t;return qe?(ht=sn(qe,ot),Je?(At=sn(Je,1-ot),_t=At[1]*At[1]+ot*ht[0]*ht[0]*At[0]*At[0],[[ht[0]*At[2]/_t,ht[1]*ht[2]*At[0]*At[1]/_t],[ht[1]*At[1]/_t,-ht[0]*ht[2]*At[0]*At[2]/_t],[ht[2]*At[1]*At[2]/_t,-ot*ht[0]*ht[1]*At[0]/_t]]):[[ht[0],0],[ht[1],0],[ht[2],0]]):(At=sn(Je,1-ot),[[0,At[0]/At[1]],[1/At[1],0],[At[2]/At[1],0]])}function sn(qe,Je){var ot,ht,At,_t,Pt;if(Je=1-l)return ot=(1-Je)/4,ht=I(qe),_t=B(qe),At=1/ht,Pt=ht*O(qe),[_t+ot*(Pt-qe)/(ht*ht),At-ot*_t*At*(Pt-qe),At+ot*_t*At*(Pt+qe),2*e(o(qe))-S+ot*(Pt-qe)/ht];var er=[1,0,0,0,0,0,0,0,0],nr=[F(Je),0,0,0,0,0,0,0,0],pr=0;for(ht=F(1-Je),Pt=1;M(nr[pr]/er[pr])>l&&pr<8;)ot=er[pr++],nr[pr]=(ot-ht)/2,er[pr]=(ot+ht)/2,ht=F(ot*ht),Pt*=2;At=Pt*er[pr]*qe;do _t=nr[pr]*p(ht=At)/er[pr],At=(L(_t)+At)/2;while(--pr);return[p(At),_t=r(At),_t/r(At-ht),At]}function Mn(qe,Je,ot){var ht=M(qe),At=M(Je),_t=O(At);if(ht){var Pt=1/p(ht),er=1/(T(ht)*T(ht)),nr=-(er+ot*(_t*_t*Pt*Pt)-1+ot),pr=(ot-1)*er,Sr=(-nr+F(nr*nr-4*pr))/2;return[On(e(1/F(Sr)),ot)*v(qe),On(e(F((Sr/er-1)/ot)),1-ot)*v(Je)]}return[0,On(e(_t),1-ot)*v(Je)]}function On(qe,Je){if(!Je)return qe;if(Je===1)return i(T(qe/2+E));for(var ot=1,ht=F(1-Je),At=F(Je),_t=0;M(At)>l;_t++){if(qe%w){var Pt=e(ht*T(qe)/ot);Pt<0&&(Pt+=w),qe+=Pt+~~(qe/w)*w}else qe+=qe;At=(ot+ht)/2,ht=F(ot*ht),At=((ot=At)-ht)/2}return qe/(c(2,_t)*ot)}function $n(qe,Je){var ot=(b-1)/(b+1),ht=F(1-ot*ot),At=On(S,ht*ht),_t=-1,Pt=i(T(w/4+M(Je)/2)),er=o(_t*Pt)/F(ot),nr=Cn(er*r(_t*qe),er*p(_t*qe)),pr=Mn(nr[0],nr[1],ht*ht);return[-pr[1],(Je>=0?1:-1)*(.5*At-pr[0])]}function Cn(qe,Je){var ot=qe*qe,ht=Je+1,At=1-ot-Je*Je;return[.5*((qe>=0?S:-S)-t(At,2*qe)),-.25*i(At*At+4*ot)+.5*i(ht*ht+ot)]}function Lo(qe,Je){var ot=Je[0]*Je[0]+Je[1]*Je[1];return[(qe[0]*Je[0]+qe[1]*Je[1])/ot,(qe[1]*Je[0]-qe[0]*Je[1])/ot]}$n.invert=function(qe,Je){var ot=(b-1)/(b+1),ht=F(1-ot*ot),At=On(S,ht*ht),_t=-1,Pt=an(.5*At-Je,-qe,ht*ht),er=Lo(Pt[0],Pt[1]),nr=t(er[1],er[0])/_t;return[nr,2*e(o(.5/_t*i(ot*er[0]*er[0]+ot*er[1]*er[1])))-S]};function Xi(){return x.geoProjection(Ca($n)).scale(151.496)}function Jo(qe){var Je=p(qe),ot=r(qe),ht=zo(qe);ht.invert=zo(-qe);function At(_t,Pt){var er=ht(_t,Pt);_t=er[0],Pt=er[1];var nr=p(Pt),pr=r(Pt),Sr=r(_t),Wr=z(Je*nr+ot*pr*Sr),ha=p(Wr),ga=M(ha)>l?Wr/ha:1;return[ga*ot*p(_t),(M(_t)>S?ga:-ga)*(Je*pr-ot*nr*Sr)]}return At.invert=function(_t,Pt){var er=F(_t*_t+Pt*Pt),nr=-p(er),pr=r(er),Sr=er*pr,Wr=-Pt*nr,ha=er*Je,ga=F(Sr*Sr+Wr*Wr-ha*ha),Pa=t(Sr*ha+Wr*ga,Wr*ha-Sr*ga),Ja=(er>S?-1:1)*t(_t*nr,er*r(Pa)*pr+Pt*p(Pa)*nr);return ht.invert(Ja,Pa)},At}function zo(qe){var Je=p(qe),ot=r(qe);return function(ht,At){var _t=r(At),Pt=r(ht)*_t,er=p(ht)*_t,nr=p(At);return[t(er,Pt*ot-nr*Je),L(nr*ot+Pt*Je)]}}function as(){var qe=0,Je=x.geoProjectionMutator(Jo),ot=Je(qe),ht=ot.rotate,At=ot.stream,_t=x.geoCircle();return ot.parallel=function(Pt){if(!arguments.length)return qe*y;var er=ot.rotate();return Je(qe=Pt*f).rotate(er)},ot.rotate=function(Pt){return arguments.length?(ht.call(ot,[Pt[0],Pt[1]-qe*y]),_t.center([-Pt[0],-Pt[1]]),ot):(Pt=ht.call(ot),Pt[1]+=qe*y,Pt)},ot.stream=function(Pt){return Pt=At(Pt),Pt.sphere=function(){Pt.polygonStart();var er=.01,nr=_t.radius(90-er)().coordinates[0],pr=nr.length-1,Sr=-1,Wr;for(Pt.lineStart();++Sr=0;)Pt.point((Wr=nr[Sr])[0],Wr[1]);Pt.lineEnd(),Pt.polygonEnd()},Pt},ot.scale(79.4187).parallel(45).clipAngle(180-.001)}var Pn=3,go=L(1-1/Pn)*y,In=It(0);function Do(qe){var Je=go*f,ot=Ve(w,Je)[0]-Ve(-w,Je)[0],ht=In(0,Je)[1],At=Ve(0,Je)[1],_t=d-At,Pt=u/qe,er=4/u,nr=ht+_t*_t*4/u;function pr(Sr,Wr){var ha,ga=M(Wr);if(ga>Je){var Pa=s(qe-1,n(0,a((Sr+w)/Pt)));Sr+=w*(qe-1)/qe-Pa*Pt,ha=Ve(Sr,ga),ha[0]=ha[0]*u/ot-u*(qe-1)/(2*qe)+Pa*u/qe,ha[1]=ht+(ha[1]-At)*4*_t/u,Wr<0&&(ha[1]=-ha[1])}else ha=In(Sr,Wr);return ha[0]*=er,ha[1]/=nr,ha}return pr.invert=function(Sr,Wr){Sr/=er,Wr*=nr;var ha=M(Wr);if(ha>ht){var ga=s(qe-1,n(0,a((Sr+w)/Pt)));Sr=(Sr+w*(qe-1)/qe-ga*Pt)*ot/u;var Pa=Ve.invert(Sr,.25*(ha-ht)*u/_t+At);return Pa[0]-=w*(qe-1)/qe-ga*Pt,Wr<0&&(Pa[1]=-Pa[1]),Pa}return In.invert(Sr,Wr)},pr}function Ho(qe,Je){return[qe,Je&1?90-l:go]}function Qo(qe,Je){return[qe,Je&1?-90+l:-go]}function Xn(qe){return[qe[0]*(1-l),qe[1]]}function po(qe){var Je=[].concat(A.range(-180,180+qe/2,qe).map(Ho),A.range(180,-180-qe/2,-qe).map(Qo));return{type:"Polygon",coordinates:[qe===180?Je.map(Xn):Je]}}function ys(){var qe=4,Je=x.geoProjectionMutator(Do),ot=Je(qe),ht=ot.stream;return ot.lobes=function(At){return arguments.length?Je(qe=+At):qe},ot.stream=function(At){var _t=ot.rotate(),Pt=ht(At),er=(ot.rotate([0,0]),ht(At));return ot.rotate(_t),Pt.sphere=function(){x.geoStream(po(180/qe),er)},Pt},ot.scale(239.75)}function Is(qe){var Je=1+qe,ot=p(1/Je),ht=L(ot),At=2*F(w/(_t=w+4*ht*Je)),_t,Pt=.5*At*(Je+F(qe*(2+qe))),er=qe*qe,nr=Je*Je;function pr(Sr,Wr){var ha=1-p(Wr),ga,Pa;if(ha&&ha<2){var Ja=S-Wr,di=25,pi;do{var Ci=p(Ja),$i=r(Ja),Bn=ht+t(Ci,Je-$i),Sn=1+nr-2*Je*$i;Ja-=pi=(Ja-er*ht-Je*Ci+Sn*Bn-.5*ha*_t)/(2*Je*Ci*Bn)}while(M(pi)>_&&--di>0);ga=At*F(Sn),Pa=Sr*Bn/w}else ga=At*(qe+ha),Pa=Sr*ht/w;return[ga*p(Pa),Pt-ga*r(Pa)]}return pr.invert=function(Sr,Wr){var ha=Sr*Sr+(Wr-=Pt)*Wr,ga=(1+nr-ha/(At*At))/(2*Je),Pa=z(ga),Ja=p(Pa),di=ht+t(Ja,Je-ga);return[L(Sr/F(ha))*w/di,L(1-2*(Pa-er*ht-Je*Ja+(1+nr-2*Je*ga)*di)/_t)]},pr}function Fs(){var qe=1,Je=x.geoProjectionMutator(Is),ot=Je(qe);return ot.ratio=function(ht){return arguments.length?Je(qe=+ht):qe},ot.scale(167.774).center([0,18.67])}var $o=.7109889596207567,fi=.0528035274542;function mn(qe,Je){return Je>-$o?(qe=lt(qe,Je),qe[1]+=fi,qe):Qe(qe,Je)}mn.invert=function(qe,Je){return Je>-$o?lt.invert(qe,Je-fi):Qe.invert(qe,Je)};function ol(){return x.geoProjection(mn).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}function Os(qe,Je){return M(Je)>$o?(qe=lt(qe,Je),qe[1]-=Je>0?fi:-fi,qe):Qe(qe,Je)}Os.invert=function(qe,Je){return M(Je)>$o?lt.invert(qe,Je+(Je>0?fi:-fi)):Qe.invert(qe,Je)};function so(){return x.geoProjection(Os).scale(152.63)}function Ns(qe,Je,ot,ht){var At=F(4*w/(2*ot+(1+qe-Je/2)*p(2*ot)+(qe+Je)/2*p(4*ot)+Je/2*p(6*ot))),_t=F(ht*p(ot)*F((1+qe*r(2*ot)+Je*r(4*ot))/(1+qe+Je))),Pt=ot*nr(1);function er(Wr){return F(1+qe*r(2*Wr)+Je*r(4*Wr))}function nr(Wr){var ha=Wr*ot;return(2*ha+(1+qe-Je/2)*p(2*ha)+(qe+Je)/2*p(4*ha)+Je/2*p(6*ha))/ot}function pr(Wr){return er(Wr)*p(Wr)}var Sr=function(Wr,ha){var ga=ot*Be(nr,Pt*p(ha)/ot,ha/w);isNaN(ga)&&(ga=ot*v(ha));var Pa=At*er(ga);return[Pa*_t*Wr/w*r(ga),Pa/_t*p(ga)]};return Sr.invert=function(Wr,ha){var ga=Be(pr,ha*_t/At);return[Wr*w/(r(ga)*At*_t*er(ga)),L(ot*nr(ga/ot)/Pt)]},ot===0&&(At=F(ht/w),Sr=function(Wr,ha){return[Wr*At,p(ha)/At]},Sr.invert=function(Wr,ha){return[Wr/At,L(ha*At)]}),Sr}function fs(){var qe=1,Je=0,ot=45*f,ht=2,At=x.geoProjectionMutator(Ns),_t=At(qe,Je,ot,ht);return _t.a=function(Pt){return arguments.length?At(qe=+Pt,Je,ot,ht):qe},_t.b=function(Pt){return arguments.length?At(qe,Je=+Pt,ot,ht):Je},_t.psiMax=function(Pt){return arguments.length?At(qe,Je,ot=+Pt*f,ht):ot*y},_t.ratio=function(Pt){return arguments.length?At(qe,Je,ot,ht=+Pt):ht},_t.scale(180.739)}function al(qe,Je,ot,ht,At,_t,Pt,er,nr,pr,Sr){if(Sr.nanEncountered)return NaN;var Wr,ha,ga,Pa,Ja,di,pi,Ci,$i,Bn;if(Wr=ot-Je,ha=qe(Je+Wr*.25),ga=qe(ot-Wr*.25),isNaN(ha)){Sr.nanEncountered=!0;return}if(isNaN(ga)){Sr.nanEncountered=!0;return}return Pa=Wr*(ht+4*ha+At)/12,Ja=Wr*(At+4*ga+_t)/12,di=Pa+Ja,Bn=(di-Pt)/15,pr>nr?(Sr.maxDepthCount++,di+Bn):Math.abs(Bn)>1;do nr[di]>ga?Ja=di:Pa=di,di=Pa+Ja>>1;while(di>Pa);var pi=nr[di+1]-nr[di];return pi&&(pi=(ga-nr[di+1])/pi),(di+1+pi)/Pt}var Wr=2*Sr(1)/w*_t/ot,ha=function(ga,Pa){var Ja=Sr(M(p(Pa))),di=ht(Ja)*ga;return Ja/=Wr,[di,Pa>=0?Ja:-Ja]};return ha.invert=function(ga,Pa){var Ja;return Pa*=Wr,M(Pa)<1&&(Ja=v(Pa)*L(At(M(Pa))*_t)),[ga/ht(M(Pa)),Ja]},ha}function To(){var qe=0,Je=2.5,ot=1.183136,ht=x.geoProjectionMutator(ji),At=ht(qe,Je,ot);return At.alpha=function(_t){return arguments.length?ht(qe=+_t,Je,ot):qe},At.k=function(_t){return arguments.length?ht(qe,Je=+_t,ot):Je},At.gamma=function(_t){return arguments.length?ht(qe,Je,ot=+_t):ot},At.scale(152.63)}function Yn(qe,Je){return M(qe[0]-Je[0])=0;--nr)ot=qe[1][nr],ht=ot[0][0],At=ot[0][1],_t=ot[1][1],Pt=ot[2][0],er=ot[2][1],Je.push(_s([[Pt-l,er-l],[Pt-l,_t+l],[ht+l,_t+l],[ht+l,At-l]],30));return{type:"Polygon",coordinates:[A.merge(Je)]}}function Nn(qe,Je,ot){var ht,At;function _t(nr,pr){for(var Sr=pr<0?-1:1,Wr=Je[+(pr<0)],ha=0,ga=Wr.length-1;haWr[ha][2][0];++ha);var Pa=qe(nr-Wr[ha][1][0],pr);return Pa[0]+=qe(Wr[ha][1][0],Sr*pr>Sr*Wr[ha][0][1]?Wr[ha][0][1]:pr)[0],Pa}ot?_t.invert=ot(_t):qe.invert&&(_t.invert=function(nr,pr){for(var Sr=At[+(pr<0)],Wr=Je[+(pr<0)],ha=0,ga=Sr.length;haPa&&(Ja=ga,ga=Pa,Pa=Ja),[[Wr,ga],[ha,Pa]]})}),Pt):Je.map(function(pr){return pr.map(function(Sr){return[[Sr[0][0]*y,Sr[0][1]*y],[Sr[1][0]*y,Sr[1][1]*y],[Sr[2][0]*y,Sr[2][1]*y]]})})},Je!=null&&Pt.lobes(Je),Pt}var Wl=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Zu(){return Nn(ze,Wl).scale(160.857)}var ml=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function Bu(){return Nn(Os,ml).scale(152.63)}var El=[[[[-180,0],[-100,90],[-40,0]],[[-40,0],[30,90],[180,0]]],[[[-180,0],[-160,-90],[-100,0]],[[-100,0],[-60,-90],[-20,0]],[[-20,0],[20,-90],[80,0]],[[80,0],[140,-90],[180,0]]]];function qs(){return Nn(lt,El).scale(169.529)}var Jl=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function Nu(){return Nn(lt,Jl).scale(169.529).rotate([20,0])}var Ic=[[[[-180,35],[-30,90],[0,35]],[[0,35],[30,90],[180,35]]],[[[-180,-10],[-102,-90],[-65,-10]],[[-65,-10],[5,-90],[77,-10]],[[77,-10],[103,-90],[180,-10]]]];function Xu(){return Nn(mn,Ic,Ie).rotate([-20,-55]).scale(164.263).center([0,-5.4036])}var Th=[[[[-180,0],[-110,90],[-40,0]],[[-40,0],[0,90],[40,0]],[[40,0],[110,90],[180,0]]],[[[-180,0],[-110,-90],[-40,0]],[[-40,0],[0,-90],[40,0]],[[40,0],[110,-90],[180,0]]]];function bf(){return Nn(Qe,Th).scale(152.63).rotate([-20,0])}function Rs(qe,Je){return[3/u*qe*F(w*w/3-Je*Je),Je]}Rs.invert=function(qe,Je){return[u/3*qe/F(w*w/3-Je*Je),Je]};function Yc(){return x.geoProjection(Rs).scale(158.837)}function If(qe){function Je(ot,ht){if(M(M(ht)-S)2)return null;ot/=2,ht/=2;var _t=ot*ot,Pt=ht*ht,er=2*ht/(1+_t+Pt);return er=c((1+er)/(1-er),1/qe),[t(2*ot,1-_t-Pt)/qe,L((er-1)/(er+1))]},Je}function Zl(){var qe=.5,Je=x.geoProjectionMutator(If),ot=Je(qe);return ot.spacing=function(ht){return arguments.length?Je(qe=+ht):qe},ot.scale(124.75)}var yl=w/b;function oc(qe,Je){return[qe*(1+F(r(Je)))/2,Je/(r(Je/2)*r(qe/6))]}oc.invert=function(qe,Je){var ot=M(qe),ht=M(Je),At=l,_t=S;htl||M(di)>l)&&--At>0);return At&&[ot,ht]};function _l(){return x.geoProjection(Zs).scale(139.98)}function Bs(qe,Je){return[p(qe)/r(Je),T(Je)*r(qe)]}Bs.invert=function(qe,Je){var ot=qe*qe,ht=Je*Je,At=ht+1,_t=ot+At,Pt=qe?m*F((_t-F(_t*_t-4*ot))/ot):1/F(At);return[L(qe*Pt),v(Je)*z(Pt)]};function $s(){return x.geoProjection(Bs).scale(144.049).clipAngle(90-.001)}function sc(qe){var Je=r(qe),ot=T(E+qe/2);function ht(At,_t){var Pt=_t-qe,er=M(Pt)=0;)Sr=qe[pr],Wr=Sr[0]+er*(ga=Wr)-nr*ha,ha=Sr[1]+er*ha+nr*ga;return Wr=er*(ga=Wr)-nr*ha,ha=er*ha+nr*ga,[Wr,ha]}return ot.invert=function(ht,At){var _t=20,Pt=ht,er=At;do{for(var nr=Je,pr=qe[nr],Sr=pr[0],Wr=pr[1],ha=0,ga=0,Pa;--nr>=0;)pr=qe[nr],ha=Sr+Pt*(Pa=ha)-er*ga,ga=Wr+Pt*ga+er*Pa,Sr=pr[0]+Pt*(Pa=Sr)-er*Wr,Wr=pr[1]+Pt*Wr+er*Pa;ha=Sr+Pt*(Pa=ha)-er*ga,ga=Wr+Pt*ga+er*Pa,Sr=Pt*(Pa=Sr)-er*Wr-ht,Wr=Pt*Wr+er*Pa-At;var Ja=ha*ha+ga*ga,di,pi;Pt-=di=(Sr*ha+Wr*ga)/Ja,er-=pi=(Wr*ha-Sr*ga)/Ja}while(M(di)+M(pi)>l*l&&--_t>0);if(_t){var Ci=F(Pt*Pt+er*er),$i=2*e(Ci*.5),Bn=p($i);return[t(Pt*Bn,Ci*r($i)),Ci?L(er*Bn/Ci):0]}},ot}var es=[[.9972523,0],[.0052513,-.0041175],[.0074606,.0048125],[-.0153783,-.1968253],[.0636871,-.1408027],[.3660976,-.2937382]],Wh=[[.98879,0],[0,0],[-.050909,0],[0,0],[.075528,0]],Ss=[[.984299,0],[.0211642,.0037608],[-.1036018,-.0575102],[-.0329095,-.0320119],[.0499471,.1223335],[.026046,.0899805],[7388e-7,-.1435792],[.0075848,-.1334108],[-.0216473,.0776645],[-.0225161,.0853673]],So=[[.9245,0],[0,0],[.01943,0]],hf=[[.721316,0],[0,0],[-.00881625,-.00617325]];function Ku(){return Fl(es,[152,-64]).scale(1400).center([-160.908,62.4864]).clipAngle(30).angle(7.8)}function cu(){return Fl(Wh,[95,-38]).scale(1e3).clipAngle(55).center([-96.5563,38.8675])}function Zf(){return Fl(Ss,[120,-45]).scale(359.513).clipAngle(55).center([-117.474,53.0628])}function Rc(){return Fl(So,[-20,-18]).scale(209.091).center([20,16.7214]).clipAngle(82)}function pf(){return Fl(hf,[165,10]).scale(250).clipAngle(130).center([-165,-10])}function Fl(qe,Je){var ot=x.geoProjection(fp(qe)).rotate(Je).clipAngle(90),ht=x.geoRotation(Je),At=ot.center;return delete ot.rotate,ot.center=function(_t){return arguments.length?At(ht(_t)):ht.invert(At())},ot}var lh=F(6),Xf=F(7);function Rf(qe,Je){var ot=L(7*p(Je)/(3*lh));return[lh*qe*(2*r(2*ot/3)-1)/Xf,9*p(ot/3)/Xf]}Rf.invert=function(qe,Je){var ot=3*L(Je*Xf/9);return[qe*Xf/(lh*(2*r(2*ot/3)-1)),L(p(ot)*3*lh/7)]};function Kc(){return x.geoProjection(Rf).scale(164.859)}function Yf(qe,Je){for(var ot=(1+m)*p(Je),ht=Je,At=0,_t;At<25&&(ht-=_t=(p(ht/2)+p(ht)-ot)/(.5*r(ht/2)+r(ht)),!(M(_t)_&&--ht>0);return _t=ot*ot,Pt=_t*_t,er=_t*Pt,[qe/(.84719-.13063*_t+er*er*(-.04515+.05494*_t-.02326*Pt+.00331*er)),ot]};function Jc(){return x.geoProjection(Dc).scale(175.295)}function Eu(qe,Je){return[qe*(1+r(Je))/2,2*(Je-T(Je/2))]}Eu.invert=function(qe,Je){for(var ot=Je/2,ht=0,At=1/0;ht<10&&M(At)>l;++ht){var _t=r(Je/2);Je-=At=(Je-T(Je/2)-ot)/(1-.5/(_t*_t))}return[2*qe/(1+r(Je)),Je]};function wf(){return x.geoProjection(Eu).scale(152.63)}var zc=[[[[-180,0],[-90,90],[0,0]],[[0,0],[90,90],[180,0]]],[[[-180,0],[-90,-90],[0,0]],[[0,0],[90,-90],[180,0]]]];function Us(){return Nn(fe(1/0),zc).rotate([20,0]).scale(152.63)}function Kf(qe,Je){var ot=p(Je),ht=r(Je),At=v(qe);if(qe===0||M(Je)===S)return[0,Je];if(Je===0)return[qe,0];if(M(qe)===S)return[qe*ht,S*ot];var _t=w/(2*qe)-2*qe/w,Pt=2*Je/w,er=(1-Pt*Pt)/(ot-Pt),nr=_t*_t,pr=er*er,Sr=1+nr/pr,Wr=1+pr/nr,ha=(_t*ot/er-_t/2)/Sr,ga=(pr*ot/nr+er/2)/Wr,Pa=ha*ha+ht*ht/Sr,Ja=ga*ga-(pr*ot*ot/nr+er*ot-1)/Wr;return[S*(ha+F(Pa)*At),S*(ga+F(Ja<0?0:Ja)*v(-Je*_t)*At)]}Kf.invert=function(qe,Je){qe/=S,Je/=S;var ot=qe*qe,ht=Je*Je,At=ot+ht,_t=w*w;return[qe?(At-1+F((1-At)*(1-At)+4*ot))/(2*qe)*S:0,Be(function(Pt){return At*(w*p(Pt)-2*Pt)*w+4*Pt*Pt*(Je-p(Pt))+2*w*Pt-_t*Je},0)]};function Zh(){return x.geoProjection(Kf).scale(127.267)}var ch=1.0148,df=.23185,Ah=-.14499,ku=.02406,fh=ch,ru=5*df,Cu=7*Ah,xc=9*ku,kl=1.790857183;function Fc(qe,Je){var ot=Je*Je;return[qe,Je*(ch+ot*ot*(df+ot*(Ah+ku*ot)))]}Fc.invert=function(qe,Je){Je>kl?Je=kl:Je<-kl&&(Je=-kl);var ot=Je,ht;do{var At=ot*ot;ot-=ht=(ot*(ch+At*At*(df+At*(Ah+ku*At)))-Je)/(fh+At*At*(ru+At*(Cu+xc*At)))}while(M(ht)>l);return[qe,ot]};function $u(){return x.geoProjection(Fc).scale(139.319)}function vu(qe,Je){if(M(Je)l&&--At>0);return Pt=T(ht),[(M(Je)=0;)if(ht=Je[er],ot[0]===ht[0]&&ot[1]===ht[1]){if(_t)return[_t,ot];_t=ot}}}function au(qe){for(var Je=qe.length,ot=[],ht=qe[Je-1],At=0;At0?[-ht[0],0]:[180-ht[0],180])};var Je=Ff.map(function(ot){return{face:ot,project:qe(ot)}});return[-1,0,0,1,0,1,4,5].forEach(function(ot,ht){var At=Je[ot];At&&(At.children||(At.children=[])).push(Je[ht])}),vf(Je[0],function(ot,ht){return Je[ot<-w/2?ht<0?6:4:ot<0?ht<0?2:0:otht^ga>ht&&ot<(ha-pr)*(ht-Sr)/(ga-Sr)+pr&&(At=!At)}return At}function Vl(qe,Je){var ot=Je.stream,ht;if(!ot)throw new Error("invalid projection");switch(qe&&qe.type){case"Feature":ht=Vu;break;case"FeatureCollection":ht=Qf;break;default:ht=cc;break}return ht(qe,ot)}function Qf(qe,Je){return{type:"FeatureCollection",features:qe.features.map(function(ot){return Vu(ot,Je)})}}function Vu(qe,Je){return{type:"Feature",id:qe.id,properties:qe.properties,geometry:cc(qe.geometry,Je)}}function Tc(qe,Je){return{type:"GeometryCollection",geometries:qe.geometries.map(function(ot){return cc(ot,Je)})}}function cc(qe,Je){if(!qe)return null;if(qe.type==="GeometryCollection")return Tc(qe,Je);var ot;switch(qe.type){case"Point":ot=fc;break;case"MultiPoint":ot=fc;break;case"LineString":ot=Oc;break;case"MultiLineString":ot=Oc;break;case"Polygon":ot=Qu;break;case"MultiPolygon":ot=Qu;break;case"Sphere":ot=Qu;break;default:return null}return x.geoStream(qe,Je(ot)),ot.result()}var Cl=[],iu=[],fc={point:function(qe,Je){Cl.push([qe,Je])},result:function(){var qe=Cl.length?Cl.length<2?{type:"Point",coordinates:Cl[0]}:{type:"MultiPoint",coordinates:Cl}:null;return Cl=[],qe}},Oc={lineStart:uc,point:function(qe,Je){Cl.push([qe,Je])},lineEnd:function(){Cl.length&&(iu.push(Cl),Cl=[])},result:function(){var qe=iu.length?iu.length<2?{type:"LineString",coordinates:iu[0]}:{type:"MultiLineString",coordinates:iu}:null;return iu=[],qe}},Qu={polygonStart:uc,lineStart:uc,point:function(qe,Je){Cl.push([qe,Je])},lineEnd:function(){var qe=Cl.length;if(qe){do Cl.push(Cl[0].slice());while(++qe<4);iu.push(Cl),Cl=[]}},polygonEnd:uc,result:function(){if(!iu.length)return null;var qe=[],Je=[];return iu.forEach(function(ot){Qc(ot)?qe.push([ot]):Je.push(ot)}),Je.forEach(function(ot){var ht=ot[0];qe.some(function(At){if($f(At[0],ht))return At.push(ot),!0})||qe.push([ot])}),iu=[],qe.length?qe.length>1?{type:"MultiPolygon",coordinates:qe}:{type:"Polygon",coordinates:qe[0]}:null}};function ef(qe){var Je=qe(S,0)[0]-qe(-S,0)[0];function ot(ht,At){var _t=M(ht)0?ht-w:ht+w,At),er=(Pt[0]-Pt[1])*m,nr=(Pt[0]+Pt[1])*m;if(_t)return[er,nr];var pr=Je*m,Sr=er>0^nr>0?-1:1;return[Sr*er-v(nr)*pr,Sr*nr-v(er)*pr]}return qe.invert&&(ot.invert=function(ht,At){var _t=(ht+At)*m,Pt=(At-ht)*m,er=M(_t)<.5*Je&&M(Pt)<.5*Je;if(!er){var nr=Je*m,pr=_t>0^Pt>0?-1:1,Sr=-pr*ht+(Pt>0?1:-1)*nr,Wr=-pr*At+(_t>0?1:-1)*nr;_t=(-Sr-Wr)*m,Pt=(Sr-Wr)*m}var ha=qe.invert(_t,Pt);return er||(ha[0]+=_t>0?w:-w),ha}),x.geoProjection(ot).rotate([-90,-90,45]).clipAngle(180-.001)}function Zt(){return ef(da).scale(176.423)}function fr(){return ef($n).scale(111.48)}function Yr(qe,Je){if(!(0<=(Je=+Je)&&Je<=20))throw new Error("invalid digits");function ot(pr){var Sr=pr.length,Wr=2,ha=new Array(Sr);for(ha[0]=+pr[0].toFixed(Je),ha[1]=+pr[1].toFixed(Je);Wr2||ga[0]!=Sr[0]||ga[1]!=Sr[1])&&(Wr.push(ga),Sr=ga)}return Wr.length===1&&pr.length>1&&Wr.push(ot(pr[pr.length-1])),Wr}function _t(pr){return pr.map(At)}function Pt(pr){if(pr==null)return pr;var Sr;switch(pr.type){case"GeometryCollection":Sr={type:"GeometryCollection",geometries:pr.geometries.map(Pt)};break;case"Point":Sr={type:"Point",coordinates:ot(pr.coordinates)};break;case"MultiPoint":Sr={type:pr.type,coordinates:ht(pr.coordinates)};break;case"LineString":Sr={type:pr.type,coordinates:At(pr.coordinates)};break;case"MultiLineString":case"Polygon":Sr={type:pr.type,coordinates:_t(pr.coordinates)};break;case"MultiPolygon":Sr={type:"MultiPolygon",coordinates:pr.coordinates.map(_t)};break;default:return pr}return pr.bbox!=null&&(Sr.bbox=pr.bbox),Sr}function er(pr){var Sr={type:"Feature",properties:pr.properties,geometry:Pt(pr.geometry)};return pr.id!=null&&(Sr.id=pr.id),pr.bbox!=null&&(Sr.bbox=pr.bbox),Sr}if(qe!=null)switch(qe.type){case"Feature":return er(qe);case"FeatureCollection":{var nr={type:"FeatureCollection",features:qe.features.map(er)};return qe.bbox!=null&&(nr.bbox=qe.bbox),nr}default:return Pt(qe)}return qe}function qr(qe){var Je=p(qe);function ot(ht,At){var _t=Je?T(ht*Je/2)/Je:ht/2;if(!At)return[2*_t,-qe];var Pt=2*e(_t*p(At)),er=1/T(At);return[p(Pt)*er,At+(1-r(Pt))*er-qe]}return ot.invert=function(ht,At){if(M(At+=qe)l&&--er>0);var ha=ht*(pr=T(Pt)),ga=T(M(At)0?S:-S)*(nr+At*(Sr-Pt)/2+At*At*(Sr-2*nr+Pt)/2)]}oi.invert=function(qe,Je){var ot=Je/S,ht=ot*90,At=s(18,M(ht/5)),_t=n(0,a(At));do{var Pt=Ka[_t][1],er=Ka[_t+1][1],nr=Ka[s(19,_t+2)][1],pr=nr-Pt,Sr=nr-2*er+Pt,Wr=2*(M(ot)-er)/pr,ha=Sr/pr,ga=Wr*(1-ha*Wr*(1-2*ha*Wr));if(ga>=0||_t===1){ht=(Je>=0?5:-5)*(ga+At);var Pa=50,Ja;do At=s(18,M(ht)/5),_t=a(At),ga=At-_t,Pt=Ka[_t][1],er=Ka[_t+1][1],nr=Ka[s(19,_t+2)][1],ht-=(Ja=(Je>=0?S:-S)*(er+ga*(nr-Pt)/2+ga*ga*(nr-2*er+Pt)/2)-Je)*y;while(M(Ja)>_&&--Pa>0);break}}while(--_t>=0);var di=Ka[_t][0],pi=Ka[_t+1][0],Ci=Ka[s(19,_t+2)][0];return[qe/(pi+ga*(Ci-di)/2+ga*ga*(Ci-2*pi+di)/2),ht*f]};function yi(){return x.geoProjection(oi).scale(152.63)}function ki(qe){function Je(ot,ht){var At=r(ht),_t=(qe-1)/(qe-At*r(ot));return[_t*At*p(ot),_t*p(ht)]}return Je.invert=function(ot,ht){var At=ot*ot+ht*ht,_t=F(At),Pt=(qe-F(1-At*(qe+1)/(qe-1)))/((qe-1)/_t+_t/(qe-1));return[t(ot*Pt,_t*F(1-Pt*Pt)),_t?L(ht*Pt/_t):0]},Je}function Bi(qe,Je){var ot=ki(qe);if(!Je)return ot;var ht=r(Je),At=p(Je);function _t(Pt,er){var nr=ot(Pt,er),pr=nr[1],Sr=pr*At/(qe-1)+ht;return[nr[0]*ht/Sr,pr/Sr]}return _t.invert=function(Pt,er){var nr=(qe-1)/(qe-1-er*At);return ot.invert(nr*Pt,nr*er*ht)},_t}function li(){var qe=2,Je=0,ot=x.geoProjectionMutator(Bi),ht=ot(qe,Je);return ht.distance=function(At){return arguments.length?ot(qe=+At,Je):qe},ht.tilt=function(At){return arguments.length?ot(qe,Je=At*f):Je*y},ht.scale(432.147).clipAngle(z(1/qe)*y-1e-6)}var _i=1e-4,vi=1e4,ti=-180,rn=ti+_i,Kn=180,Wn=Kn-_i,Jn=-90,no=Jn+_i,en=90,Ri=en-_i;function co(qe){return qe.length>0}function Wo(qe){return Math.floor(qe*vi)/vi}function bs(qe){return qe===Jn||qe===en?[0,qe]:[ti,Wo(qe)]}function Xs(qe){var Je=qe[0],ot=qe[1],ht=!1;return Je<=rn?(Je=ti,ht=!0):Je>=Wn&&(Je=Kn,ht=!0),ot<=no?(ot=Jn,ht=!0):ot>=Ri&&(ot=en,ht=!0),ht?[Je,ot]:qe}function Ms(qe){return qe.map(Xs)}function Hs(qe,Je,ot){for(var ht=0,At=qe.length;ht=Wn||Sr<=no||Sr>=Ri){_t[Pt]=Xs(nr);for(var Wr=Pt+1;Wrrn&&gano&&Pa=er)break;ot.push({index:-1,polygon:Je,ring:_t=_t.slice(Wr-1)}),_t[0]=bs(_t[0][1]),Pt=-1,er=_t.length}}}}function vs(qe){var Je,ot=qe.length,ht={},At={},_t,Pt,er,nr,pr;for(Je=0;Je0?w-er:er)*y],pr=x.geoProjection(qe(Pt)).rotate(nr),Sr=x.geoRotation(nr),Wr=pr.center;return delete pr.rotate,pr.center=function(ha){return arguments.length?Wr(Sr(ha)):Sr.invert(Wr())},pr.clipAngle(90)}function Ts(qe){var Je=r(qe);function ot(ht,At){var _t=x.geoGnomonicRaw(ht,At);return _t[0]*=Je,_t}return ot.invert=function(ht,At){return x.geoGnomonicRaw.invert(ht/Je,At)},ot}function nu(){return Pu([-158,21.5],[-77,39]).clipAngle(60).scale(400)}function Pu(qe,Je){return js(Ts,qe,Je)}function ec(qe){if(!(qe*=2))return x.geoAzimuthalEquidistantRaw;var Je=-qe/2,ot=-Je,ht=qe*qe,At=T(ot),_t=.5/p(ot);function Pt(er,nr){var pr=z(r(nr)*r(er-Je)),Sr=z(r(nr)*r(er-ot)),Wr=nr<0?-1:1;return pr*=pr,Sr*=Sr,[(pr-Sr)/(2*qe),Wr*F(4*ht*Sr-(ht-pr+Sr)*(ht-pr+Sr))/(2*qe)]}return Pt.invert=function(er,nr){var pr=nr*nr,Sr=r(F(pr+(ha=er+Je)*ha)),Wr=r(F(pr+(ha=er+ot)*ha)),ha,ga;return[t(ga=Sr-Wr,ha=(Sr+Wr)*At),(nr<0?-1:1)*z(F(ha*ha+ga*ga)*_t)]},Pt}function tf(){return yu([-158,21.5],[-77,39]).clipAngle(130).scale(122.571)}function yu(qe,Je){return js(ec,qe,Je)}function Bc(qe,Je){if(M(Je)l&&--er>0);return[v(qe)*(F(At*At+4)+At)*w/4,S*Pt]};function pc(){return x.geoProjection(hc).scale(127.16)}function Oe(qe,Je,ot,ht,At){function _t(Pt,er){var nr=ot*p(ht*er),pr=F(1-nr*nr),Sr=F(2/(1+pr*r(Pt*=At)));return[qe*pr*Sr*p(Pt),Je*nr*Sr]}return _t.invert=function(Pt,er){var nr=Pt/qe,pr=er/Je,Sr=F(nr*nr+pr*pr),Wr=2*L(Sr/2);return[t(Pt*T(Wr),qe*Sr)/At,Sr&&L(er*p(Wr)/(Je*ot*Sr))/ht]},_t}function R(qe,Je,ot,ht){var At=w/3;qe=n(qe,l),Je=n(Je,l),qe=s(qe,S),Je=s(Je,w-l),ot=n(ot,0),ot=s(ot,100-l),ht=n(ht,l);var _t=ot/100+1,Pt=ht/100,er=z(_t*r(At))/At,nr=p(qe)/p(er*S),pr=Je/w,Sr=F(Pt*p(qe/2)/p(Je/2)),Wr=Sr/F(pr*nr*er),ha=1/(Sr*F(pr*nr*er));return Oe(Wr,ha,nr,er,pr)}function ae(){var qe=65*f,Je=60*f,ot=20,ht=200,At=x.geoProjectionMutator(R),_t=At(qe,Je,ot,ht);return _t.poleline=function(Pt){return arguments.length?At(qe=+Pt*f,Je,ot,ht):qe*y},_t.parallels=function(Pt){return arguments.length?At(qe,Je=+Pt*f,ot,ht):Je*y},_t.inflation=function(Pt){return arguments.length?At(qe,Je,ot=+Pt,ht):ot},_t.ratio=function(Pt){return arguments.length?At(qe,Je,ot,ht=+Pt):ht},_t.scale(163.775)}function we(){return ae().poleline(65).parallels(60).inflation(0).ratio(200).scale(172.633)}var Se=4*w+3*F(3),De=2*F(2*w*F(3)/Se),ft=et(De*F(3)/w,De,Se/6);function bt(){return x.geoProjection(ft).scale(176.84)}function Dt(qe,Je){return[qe*F(1-3*Je*Je/(w*w)),Je]}Dt.invert=function(qe,Je){return[qe/F(1-3*Je*Je/(w*w)),Je]};function Yt(){return x.geoProjection(Dt).scale(152.63)}function cr(qe,Je){var ot=r(Je),ht=r(qe)*ot,At=1-ht,_t=r(qe=t(p(qe)*ot,-p(Je))),Pt=p(qe);return ot=F(1-ht*ht),[Pt*ot-_t*At,-_t*ot-Pt*At]}cr.invert=function(qe,Je){var ot=(qe*qe+Je*Je)/-2,ht=F(-ot*(2+ot)),At=Je*ot+qe*ht,_t=qe*ot-Je*ht,Pt=F(_t*_t+At*At);return[t(ht*At,Pt*(1+ot)),Pt?-L(ht*_t/Pt):0]};function hr(){return x.geoProjection(cr).rotate([0,-90,45]).scale(124.75).clipAngle(180-.001)}function jr(qe,Je){var ot=ue(qe,Je);return[(ot[0]+qe/S)/2,(ot[1]+Je)/2]}jr.invert=function(qe,Je){var ot=qe,ht=Je,At=25;do{var _t=r(ht),Pt=p(ht),er=p(2*ht),nr=Pt*Pt,pr=_t*_t,Sr=p(ot),Wr=r(ot/2),ha=p(ot/2),ga=ha*ha,Pa=1-pr*Wr*Wr,Ja=Pa?z(_t*Wr)*F(di=1/Pa):di=0,di,pi=.5*(2*Ja*_t*ha+ot/S)-qe,Ci=.5*(Ja*Pt+ht)-Je,$i=.5*di*(pr*ga+Ja*_t*Wr*nr)+.5/S,Bn=di*(Sr*er/4-Ja*Pt*ha),Sn=.125*di*(er*ha-Ja*Pt*pr*Sr),ho=.5*di*(nr*Wr+Ja*ga*_t)+.5,ts=Bn*Sn-ho*$i,yo=(Ci*Bn-pi*ho)/ts,Vo=(pi*Sn-Ci*$i)/ts;ot-=yo,ht-=Vo}while((M(yo)>l||M(Vo)>l)&&--At>0);return[ot,ht]};function ea(){return x.geoProjection(jr).scale(158.837)}g.geoNaturalEarth=x.geoNaturalEarth1,g.geoNaturalEarthRaw=x.geoNaturalEarth1Raw,g.geoAiry=Q,g.geoAiryRaw=W,g.geoAitoff=se,g.geoAitoffRaw=ue,g.geoArmadillo=G,g.geoArmadilloRaw=he,g.geoAugust=J,g.geoAugustRaw=$,g.geoBaker=j,g.geoBakerRaw=ne,g.geoBerghaus=ie,g.geoBerghausRaw=ee,g.geoBertin1953=at,g.geoBertin1953Raw=Ze,g.geoBoggs=tt,g.geoBoggsRaw=ze,g.geoBonne=Ot,g.geoBonneRaw=St,g.geoBottomley=ur,g.geoBottomleyRaw=jt,g.geoBromley=Cr,g.geoBromleyRaw=ar,g.geoChamberlin=Ee,g.geoChamberlinRaw=Fe,g.geoChamberlinAfrica=Ne,g.geoCollignon=ke,g.geoCollignonRaw=Ve,g.geoCraig=Le,g.geoCraigRaw=Te,g.geoCraster=xt,g.geoCrasterRaw=dt,g.geoCylindricalEqualArea=Bt,g.geoCylindricalEqualAreaRaw=It,g.geoCylindricalStereographic=Kt,g.geoCylindricalStereographicRaw=Gt,g.geoEckert1=sa,g.geoEckert1Raw=sr,g.geoEckert2=La,g.geoEckert2Raw=Aa,g.geoEckert3=Ga,g.geoEckert3Raw=ka,g.geoEckert4=Ua,g.geoEckert4Raw=Ma,g.geoEckert5=Wt,g.geoEckert5Raw=ni,g.geoEckert6=Vt,g.geoEckert6Raw=zt,g.geoEisenlohr=Zr,g.geoEisenlohrRaw=xr,g.geoFahey=Ea,g.geoFaheyRaw=Xr,g.geoFoucaut=qa,g.geoFoucautRaw=Fa,g.geoFoucautSinusoidal=$a,g.geoFoucautSinusoidalRaw=ya,g.geoGilbert=Er,g.geoGingery=Mr,g.geoGingeryRaw=kr,g.geoGinzburg4=Jr,g.geoGinzburg4Raw=Lr,g.geoGinzburg5=ca,g.geoGinzburg5Raw=oa,g.geoGinzburg6=ir,g.geoGinzburg6Raw=kt,g.geoGinzburg8=$r,g.geoGinzburg8Raw=mr,g.geoGinzburg9=Ba,g.geoGinzburg9Raw=ma,g.geoGringorten=ai,g.geoGringortenRaw=da,g.geoGuyou=Xi,g.geoGuyouRaw=$n,g.geoHammer=Ae,g.geoHammerRaw=fe,g.geoHammerRetroazimuthal=as,g.geoHammerRetroazimuthalRaw=Jo,g.geoHealpix=ys,g.geoHealpixRaw=Do,g.geoHill=Fs,g.geoHillRaw=Is,g.geoHomolosine=so,g.geoHomolosineRaw=Os,g.geoHufnagel=fs,g.geoHufnagelRaw=Ns,g.geoHyperelliptical=To,g.geoHyperellipticalRaw=ji,g.geoInterrupt=Nn,g.geoInterruptedBoggs=Zu,g.geoInterruptedHomolosine=Bu,g.geoInterruptedMollweide=qs,g.geoInterruptedMollweideHemispheres=Nu,g.geoInterruptedSinuMollweide=Xu,g.geoInterruptedSinusoidal=bf,g.geoKavrayskiy7=Yc,g.geoKavrayskiy7Raw=Rs,g.geoLagrange=Zl,g.geoLagrangeRaw=If,g.geoLarrivee=_c,g.geoLarriveeRaw=oc,g.geoLaskowski=_l,g.geoLaskowskiRaw=Zs,g.geoLittrow=$s,g.geoLittrowRaw=Bs,g.geoLoximuthal=zl,g.geoLoximuthalRaw=sc,g.geoMiller=Qs,g.geoMillerRaw=Yu,g.geoModifiedStereographic=Fl,g.geoModifiedStereographicRaw=fp,g.geoModifiedStereographicAlaska=Ku,g.geoModifiedStereographicGs48=cu,g.geoModifiedStereographicGs50=Zf,g.geoModifiedStereographicMiller=Rc,g.geoModifiedStereographicLee=pf,g.geoMollweide=Me,g.geoMollweideRaw=lt,g.geoMtFlatPolarParabolic=Kc,g.geoMtFlatPolarParabolicRaw=Rf,g.geoMtFlatPolarQuartic=uh,g.geoMtFlatPolarQuarticRaw=Yf,g.geoMtFlatPolarSinusoidal=Df,g.geoMtFlatPolarSinusoidalRaw=Ju,g.geoNaturalEarth2=Jc,g.geoNaturalEarth2Raw=Dc,g.geoNellHammer=wf,g.geoNellHammerRaw=Eu,g.geoInterruptedQuarticAuthalic=Us,g.geoNicolosi=Zh,g.geoNicolosiRaw=Kf,g.geoPatterson=$u,g.geoPattersonRaw=Fc,g.geoPolyconic=xl,g.geoPolyconicRaw=vu,g.geoPolyhedral=vf,g.geoPolyhedralButterfly=il,g.geoPolyhedralCollignon=Jf,g.geoPolyhedralWaterman=el,g.geoProject=Vl,g.geoGringortenQuincuncial=Zt,g.geoPeirceQuincuncial=fr,g.geoPierceQuincuncial=fr,g.geoQuantize=Yr,g.geoQuincuncial=ef,g.geoRectangularPolyconic=ba,g.geoRectangularPolyconicRaw=qr,g.geoRobinson=yi,g.geoRobinsonRaw=oi,g.geoSatellite=li,g.geoSatelliteRaw=Bi,g.geoSinuMollweide=ol,g.geoSinuMollweideRaw=mn,g.geoSinusoidal=Ct,g.geoSinusoidalRaw=Qe,g.geoStitch=tl,g.geoTimes=Ao,g.geoTimesRaw=Ln,g.geoTwoPointAzimuthal=Pu,g.geoTwoPointAzimuthalRaw=Ts,g.geoTwoPointAzimuthalUsa=nu,g.geoTwoPointEquidistant=yu,g.geoTwoPointEquidistantRaw=ec,g.geoTwoPointEquidistantUsa=tf,g.geoVanDerGrinten=Iu,g.geoVanDerGrintenRaw=Bc,g.geoVanDerGrinten2=ro,g.geoVanDerGrinten2Raw=Ac,g.geoVanDerGrinten3=Nc,g.geoVanDerGrinten3Raw=Po,g.geoVanDerGrinten4=pc,g.geoVanDerGrinten4Raw=hc,g.geoWagner=ae,g.geoWagner7=we,g.geoWagnerRaw=R,g.geoWagner4=bt,g.geoWagner4Raw=ft,g.geoWagner6=Yt,g.geoWagner6Raw=Dt,g.geoWiechel=hr,g.geoWiechelRaw=cr,g.geoWinkel3=ea,g.geoWinkel3Raw=jr,Object.defineProperty(g,"__esModule",{value:!0})})}}),AU=Ye({"src/plots/geo/zoom.js"(X,H){"use strict";var g=_n(),x=ta(),A=Hn(),M=Math.PI/180,e=180/Math.PI,t={cursor:"pointer"},r={cursor:"auto"};function o(y,f){var P=y.projection,L;return f._isScoped?L=n:f._isClipped?L=c:L=s,L(y,P)}H.exports=o;function a(y,f){return g.behavior.zoom().translate(f.translate()).scale(f.scale())}function i(y,f,P){var L=y.id,z=y.graphDiv,F=z.layout,B=F[L],O=z._fullLayout,I=O[L],N={},U={};function W(Q,ue){N[L+"."+Q]=x.nestedProperty(B,Q).get(),A.call("_storeDirectGUIEdit",F,O._preGUI,N);var se=x.nestedProperty(I,Q);se.get()!==ue&&(se.set(ue),x.nestedProperty(B,Q).set(ue),U[L+"."+Q]=ue)}P(W),W("projection.scale",f.scale()/y.fitScale),W("fitbounds",!1),z.emit("plotly_relayout",U)}function n(y,f){var P=a(y,f);function L(){g.select(this).style(t)}function z(){f.scale(g.event.scale).translate(g.event.translate),y.render(!0);var O=f.invert(y.midPt);y.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":f.scale()/y.fitScale,"geo.center.lon":O[0],"geo.center.lat":O[1]})}function F(O){var I=f.invert(y.midPt);O("center.lon",I[0]),O("center.lat",I[1])}function B(){g.select(this).style(r),i(y,f,F)}return P.on("zoomstart",L).on("zoom",z).on("zoomend",B),P}function s(y,f){var P=a(y,f),L=2,z,F,B,O,I,N,U,W,Q;function ue(Z){return f.invert(Z)}function se(Z){var re=ue(Z);if(!re)return!0;var ne=f(re);return Math.abs(ne[0]-Z[0])>L||Math.abs(ne[1]-Z[1])>L}function he(){g.select(this).style(t),z=g.mouse(this),F=f.rotate(),B=f.translate(),O=F,I=ue(z)}function G(){if(N=g.mouse(this),se(z)){P.scale(f.scale()),P.translate(f.translate());return}f.scale(g.event.scale),f.translate([B[0],g.event.translate[1]]),I?ue(N)&&(W=ue(N),U=[O[0]+(W[0]-I[0]),F[1],F[2]],f.rotate(U),O=U):(z=N,I=ue(z)),Q=!0,y.render(!0);var Z=f.rotate(),re=f.invert(y.midPt);y.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":f.scale()/y.fitScale,"geo.center.lon":re[0],"geo.center.lat":re[1],"geo.projection.rotation.lon":-Z[0]})}function $(){g.select(this).style(r),Q&&i(y,f,J)}function J(Z){var re=f.rotate(),ne=f.invert(y.midPt);Z("projection.rotation.lon",-re[0]),Z("center.lon",ne[0]),Z("center.lat",ne[1])}return P.on("zoomstart",he).on("zoom",G).on("zoomend",$),P}function c(y,f){var P={r:f.rotate(),k:f.scale()},L=a(y,f),z=u(L,"zoomstart","zoom","zoomend"),F=0,B=L.on,O;L.on("zoomstart",function(){g.select(this).style(t);var Q=g.mouse(this),ue=f.rotate(),se=ue,he=f.translate(),G=v(ue);O=h(f,Q),B.call(L,"zoom",function(){var $=g.mouse(this);if(f.scale(P.k=g.event.scale),!O)Q=$,O=h(f,Q);else if(h(f,$)){f.rotate(ue).translate(he);var J=h(f,$),Z=T(O,J),re=E(p(G,Z)),ne=P.r=l(re,O,se);(!isFinite(ne[0])||!isFinite(ne[1])||!isFinite(ne[2]))&&(ne=se),f.rotate(ne),se=ne}N(z.of(this,arguments))}),I(z.of(this,arguments))}).on("zoomend",function(){g.select(this).style(r),B.call(L,"zoom",null),U(z.of(this,arguments)),i(y,f,W)}).on("zoom.redraw",function(){y.render(!0);var Q=f.rotate();y.graphDiv.emit("plotly_relayouting",{"geo.projection.scale":f.scale()/y.fitScale,"geo.projection.rotation.lon":-Q[0],"geo.projection.rotation.lat":-Q[1]})});function I(Q){F++||Q({type:"zoomstart"})}function N(Q){Q({type:"zoom"})}function U(Q){--F||Q({type:"zoomend"})}function W(Q){var ue=f.rotate();Q("projection.rotation.lon",-ue[0]),Q("projection.rotation.lat",-ue[1])}return g.rebind(L,z,"on")}function h(y,f){var P=y.invert(f);return P&&isFinite(P[0])&&isFinite(P[1])&&m(P)}function v(y){var f=.5*y[0]*M,P=.5*y[1]*M,L=.5*y[2]*M,z=Math.sin(f),F=Math.cos(f),B=Math.sin(P),O=Math.cos(P),I=Math.sin(L),N=Math.cos(L);return[F*O*N+z*B*I,z*O*N-F*B*I,F*B*N+z*O*I,F*O*I-z*B*N]}function p(y,f){var P=y[0],L=y[1],z=y[2],F=y[3],B=f[0],O=f[1],I=f[2],N=f[3];return[P*B-L*O-z*I-F*N,P*O+L*B+z*N-F*I,P*I-L*N+z*B+F*O,P*N+L*I-z*O+F*B]}function T(y,f){if(!(!y||!f)){var P=d(y,f),L=Math.sqrt(b(P,P)),z=.5*Math.acos(Math.max(-1,Math.min(1,b(y,f)))),F=Math.sin(z)/L;return L&&[Math.cos(z),P[2]*F,-P[1]*F,P[0]*F]}}function l(y,f,P){var L=S(f,2,y[0]);L=S(L,1,y[1]),L=S(L,0,y[2]-P[2]);var z=f[0],F=f[1],B=f[2],O=L[0],I=L[1],N=L[2],U=Math.atan2(F,z)*e,W=Math.sqrt(z*z+F*F),Q,ue;Math.abs(I)>W?(ue=(I>0?90:-90)-U,Q=0):(ue=Math.asin(I/W)*e-U,Q=Math.sqrt(W*W-I*I));var se=180-ue-2*U,he=(Math.atan2(N,O)-Math.atan2(B,Q))*e,G=(Math.atan2(N,O)-Math.atan2(B,-Q))*e,$=_(P[0],P[1],ue,he),J=_(P[0],P[1],se,G);return $<=J?[ue,he,P[2]]:[se,G,P[2]]}function _(y,f,P,L){var z=w(P-y),F=w(L-f);return Math.sqrt(z*z+F*F)}function w(y){return(y%360+540)%360-180}function S(y,f,P){var L=P*M,z=y.slice(),F=f===0?1:0,B=f===2?1:2,O=Math.cos(L),I=Math.sin(L);return z[F]=y[F]*O-y[B]*I,z[B]=y[B]*O+y[F]*I,z}function E(y){return[Math.atan2(2*(y[0]*y[1]+y[2]*y[3]),1-2*(y[1]*y[1]+y[2]*y[2]))*e,Math.asin(Math.max(-1,Math.min(1,2*(y[0]*y[2]-y[3]*y[1]))))*e,Math.atan2(2*(y[0]*y[3]+y[1]*y[2]),1-2*(y[2]*y[2]+y[3]*y[3]))*e]}function m(y){var f=y[0]*M,P=y[1]*M,L=Math.cos(P);return[L*Math.cos(f),L*Math.sin(f),Math.sin(P)]}function b(y,f){for(var P=0,L=0,z=y.length;L0&&I._module.calcGeoJSON(O,L)}if(!z){var N=this.updateProjection(P,L);if(N)return;(!this.viewInitial||this.scope!==F.scope)&&this.saveViewInitial(F)}this.scope=F.scope,this.updateBaseLayers(L,F),this.updateDims(L,F),this.updateFx(L,F),s.generalUpdatePerTraceModule(this.graphDiv,this,P,F);var U=this.layers.frontplot.select(".scatterlayer");this.dataPoints.point=U.selectAll(".point"),this.dataPoints.text=U.selectAll("text"),this.dataPaths.line=U.selectAll(".js-line");var W=this.layers.backplot.select(".choroplethlayer");this.dataPaths.choropleth=W.selectAll("path"),this._render()},d.updateProjection=function(P,L){var z=this.graphDiv,F=L[this.id],B=L._size,O=F.domain,I=F.projection,N=F.lonaxis,U=F.lataxis,W=N._ax,Q=U._ax,ue=this.projection=u(F),se=[[B.l+B.w*O.x[0],B.t+B.h*(1-O.y[1])],[B.l+B.w*O.x[1],B.t+B.h*(1-O.y[0])]],he=F.center||{},G=I.rotation||{},$=N.range||[],J=U.range||[];if(F.fitbounds){W._length=se[1][0]-se[0][0],Q._length=se[1][1]-se[0][1],W.range=h(z,W),Q.range=h(z,Q);var Z=(W.range[0]+W.range[1])/2,re=(Q.range[0]+Q.range[1])/2;if(F._isScoped)he={lon:Z,lat:re};else if(F._isClipped){he={lon:Z,lat:re},G={lon:Z,lat:re,roll:G.roll};var ne=I.type,j=w.lonaxisSpan[ne]/2||180,ee=w.lataxisSpan[ne]/2||90;$=[Z-j,Z+j],J=[re-ee,re+ee]}else he={lon:Z,lat:re},G={lon:Z,lat:G.lat,roll:G.roll}}ue.center([he.lon-G.lon,he.lat-G.lat]).rotate([-G.lon,-G.lat,G.roll]).parallels(I.parallels);var ie=f($,J);ue.fitExtent(se,ie);var fe=this.bounds=ue.getBounds(ie),be=this.fitScale=ue.scale(),Ae=ue.translate();if(F.fitbounds){var Be=ue.getBounds(f(W.range,Q.range)),Ie=Math.min((fe[1][0]-fe[0][0])/(Be[1][0]-Be[0][0]),(fe[1][1]-fe[0][1])/(Be[1][1]-Be[0][1]));isFinite(Ie)?ue.scale(Ie*be):r.warn("Something went wrong during"+this.id+"fitbounds computations.")}else ue.scale(I.scale*be);var Ze=this.midPt=[(fe[0][0]+fe[1][0])/2,(fe[0][1]+fe[1][1])/2];if(ue.translate([Ae[0]+(Ze[0]-Ae[0]),Ae[1]+(Ze[1]-Ae[1])]).clipExtent(fe),F._isAlbersUsa){var at=ue([he.lon,he.lat]),it=ue.translate();ue.translate([it[0]-(at[0]-it[0]),it[1]-(at[1]-it[1])])}},d.updateBaseLayers=function(P,L){var z=this,F=z.topojson,B=z.layers,O=z.basePaths;function I(se){return se==="lonaxis"||se==="lataxis"}function N(se){return!!w.lineLayers[se]}function U(se){return!!w.fillLayers[se]}var W=this.hasChoropleth?w.layersForChoropleth:w.layers,Q=W.filter(function(se){return N(se)||U(se)?L["show"+se]:I(se)?L[se].showgrid:!0}),ue=z.framework.selectAll(".layer").data(Q,String);ue.exit().each(function(se){delete B[se],delete O[se],g.select(this).remove()}),ue.enter().append("g").attr("class",function(se){return"layer "+se}).each(function(se){var he=B[se]=g.select(this);se==="bg"?z.bgRect=he.append("rect").style("pointer-events","all"):I(se)?O[se]=he.append("path").style("fill","none"):se==="backplot"?he.append("g").classed("choroplethlayer",!0):se==="frontplot"?he.append("g").classed("scatterlayer",!0):N(se)?O[se]=he.append("path").style("fill","none").style("stroke-miterlimit",2):U(se)&&(O[se]=he.append("path").style("stroke","none"))}),ue.order(),ue.each(function(se){var he=O[se],G=w.layerNameToAdjective[se];se==="frame"?he.datum(w.sphereSVG):N(se)||U(se)?he.datum(m(F,F.objects[se])):I(se)&&he.datum(y(se,L,P)).call(a.stroke,L[se].gridcolor).call(i.dashLine,L[se].griddash,L[se].gridwidth),N(se)?he.call(a.stroke,L[G+"color"]).call(i.dashLine,"",L[G+"width"]):U(se)&&he.call(a.fill,L[G+"color"])})},d.updateDims=function(P,L){var z=this.bounds,F=(L.framewidth||0)/2,B=z[0][0]-F,O=z[0][1]-F,I=z[1][0]-B+F,N=z[1][1]-O+F;i.setRect(this.clipRect,B,O,I,N),this.bgRect.call(i.setRect,B,O,I,N).call(a.fill,L.bgcolor),this.xaxis._offset=B,this.xaxis._length=I,this.yaxis._offset=O,this.yaxis._length=N},d.updateFx=function(P,L){var z=this,F=z.graphDiv,B=z.bgRect,O=P.dragmode,I=P.clickmode;if(z.isStatic)return;function N(){var ue=z.viewInitial,se={};for(var he in ue)se[z.id+"."+he]=ue[he];t.call("_guiRelayout",F,se),F.emit("plotly_doubleclick",null)}function U(ue){return z.projection.invert([ue[0]+z.xaxis._offset,ue[1]+z.yaxis._offset])}var W=function(ue,se){if(se.isRect){var he=ue.range={};he[z.id]=[U([se.xmin,se.ymin]),U([se.xmax,se.ymax])]}else{var G=ue.lassoPoints={};G[z.id]=se.map(U)}},Q={element:z.bgRect.node(),gd:F,plotinfo:{id:z.id,xaxis:z.xaxis,yaxis:z.yaxis,fillRangeItems:W},xaxes:[z.xaxis],yaxes:[z.yaxis],subplot:z.id,clickFn:function(ue){ue===2&&T(F)}};O==="pan"?(B.node().onmousedown=null,B.call(_(z,L)),B.on("dblclick.zoom",N),F._context._scrollZoom.geo||B.on("wheel.zoom",null)):(O==="select"||O==="lasso")&&(B.on(".zoom",null),Q.prepFn=function(ue,se,he){p(ue,se,he,Q,O)},v.init(Q)),B.on("mousemove",function(){var ue=z.projection.invert(r.getPositionFromD3Event());if(!ue)return v.unhover(F,g.event);z.xaxis.p2c=function(){return ue[0]},z.yaxis.p2c=function(){return ue[1]},n.hover(F,g.event,z.id)}),B.on("mouseout",function(){F._dragging||v.unhover(F,g.event)}),B.on("click",function(){O!=="select"&&O!=="lasso"&&(I.indexOf("select")>-1&&l(g.event,F,[z.xaxis],[z.yaxis],z.id,Q),I.indexOf("event")>-1&&n.click(F,g.event))})},d.makeFramework=function(){var P=this,L=P.graphDiv,z=L._fullLayout,F="clip"+z._uid+P.id;P.clipDef=z._clips.append("clipPath").attr("id",F),P.clipRect=P.clipDef.append("rect"),P.framework=g.select(P.container).append("g").attr("class","geo "+P.id).call(i.setClipUrl,F,L),P.project=function(B){var O=P.projection(B);return O?[O[0]-P.xaxis._offset,O[1]-P.yaxis._offset]:[null,null]},P.xaxis={_id:"x",c2p:function(B){return P.project(B)[0]}},P.yaxis={_id:"y",c2p:function(B){return P.project(B)[1]}},P.mockAxis={type:"linear",showexponent:"all",exponentformat:"B"},c.setConvert(P.mockAxis,z)},d.saveViewInitial=function(P){var L=P.center||{},z=P.projection,F=z.rotation||{};this.viewInitial={fitbounds:P.fitbounds,"projection.scale":z.scale};var B;P._isScoped?B={"center.lon":L.lon,"center.lat":L.lat}:P._isClipped?B={"projection.rotation.lon":F.lon,"projection.rotation.lat":F.lat}:B={"center.lon":L.lon,"center.lat":L.lat,"projection.rotation.lon":F.lon},r.extendFlat(this.viewInitial,B)},d.render=function(P){this._hasMarkerAngles&&P?this.plot(this._geoCalcData,this._fullLayout,[],!0):this._render()},d._render=function(){var P=this.projection,L=P.getPath(),z;function F(O){var I=P(O.lonlat);return I?o(I[0],I[1]):null}function B(O){return P.isLonLatOverEdges(O.lonlat)?"none":null}for(z in this.basePaths)this.basePaths[z].attr("d",L);for(z in this.dataPaths)this.dataPaths[z].attr("d",function(O){return L(O.geojson)});for(z in this.dataPoints)this.dataPoints[z].attr("display",B).attr("transform",F)};function u(P){var L=P.projection,z=L.type,F=w.projNames[z];F="geo"+r.titleCase(F);for(var B=x[F]||e[F],O=B(),I=P._isSatellite?Math.acos(1/L.distance)*180/Math.PI:P._isClipped?w.lonaxisSpan[z]/2:null,N=["center","rotate","parallels","clipExtent"],U=function(ue){return ue?O:[]},W=0;WG}else return!1},O.getPath=function(){return A().projection(O)},O.getBounds=function(ue){return O.getPath().bounds(ue)},O.precision(w.precision),P._isSatellite&&O.tilt(L.tilt).distance(L.distance),I&&O.clipAngle(I-w.clipPad),O}function y(P,L,z){var F=1e-6,B=2.5,O=L[P],I=w.scopeDefaults[L.scope],N,U,W;P==="lonaxis"?(N=I.lonaxisRange,U=I.lataxisRange,W=function(re,ne){return[re,ne]}):P==="lataxis"&&(N=I.lataxisRange,U=I.lonaxisRange,W=function(re,ne){return[ne,re]});var Q={type:"linear",range:[N[0],N[1]-F],tick0:O.tick0,dtick:O.dtick};c.setConvert(Q,z);var ue=c.calcTicks(Q);!L.isScoped&&P==="lonaxis"&&ue.pop();for(var se=ue.length,he=new Array(se),G=0;G0&&B<0&&(B+=360);var N=(B-F)/4;return{type:"Polygon",coordinates:[[[F,O],[F,I],[F+N,I],[F+2*N,I],[F+3*N,I],[B,I],[B,O],[B-N,O],[B-2*N,O],[B-3*N,O],[F,O]]]}}}}),L5=Ye({"src/plots/geo/layout_attributes.js"(X,H){"use strict";var g=Gf(),x=Wu().attributes,A=Uh().dash,M=mx(),e=Ou().overrideAll,t=Km(),r={range:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},showgrid:{valType:"boolean",dflt:!1},tick0:{valType:"number",dflt:0},dtick:{valType:"number"},gridcolor:{valType:"color",dflt:g.lightLine},gridwidth:{valType:"number",min:0,dflt:1},griddash:A},o=H.exports=e({domain:x({name:"geo"},{}),fitbounds:{valType:"enumerated",values:[!1,"locations","geojson"],dflt:!1,editType:"plot"},resolution:{valType:"enumerated",values:[110,50],dflt:110,coerceNumber:!0},scope:{valType:"enumerated",values:t(M.scopeDefaults),dflt:"world"},projection:{type:{valType:"enumerated",values:t(M.projNames)},rotation:{lon:{valType:"number"},lat:{valType:"number"},roll:{valType:"number"}},tilt:{valType:"number",dflt:0},distance:{valType:"number",min:1.001,dflt:2},parallels:{valType:"info_array",items:[{valType:"number"},{valType:"number"}]},scale:{valType:"number",min:0,dflt:1}},center:{lon:{valType:"number"},lat:{valType:"number"}},visible:{valType:"boolean",dflt:!0},showcoastlines:{valType:"boolean"},coastlinecolor:{valType:"color",dflt:g.defaultLine},coastlinewidth:{valType:"number",min:0,dflt:1},showland:{valType:"boolean",dflt:!1},landcolor:{valType:"color",dflt:M.landColor},showocean:{valType:"boolean",dflt:!1},oceancolor:{valType:"color",dflt:M.waterColor},showlakes:{valType:"boolean",dflt:!1},lakecolor:{valType:"color",dflt:M.waterColor},showrivers:{valType:"boolean",dflt:!1},rivercolor:{valType:"color",dflt:M.waterColor},riverwidth:{valType:"number",min:0,dflt:1},showcountries:{valType:"boolean"},countrycolor:{valType:"color",dflt:g.defaultLine},countrywidth:{valType:"number",min:0,dflt:1},showsubunits:{valType:"boolean"},subunitcolor:{valType:"color",dflt:g.defaultLine},subunitwidth:{valType:"number",min:0,dflt:1},showframe:{valType:"boolean"},framecolor:{valType:"color",dflt:g.defaultLine},framewidth:{valType:"number",min:0,dflt:1},bgcolor:{valType:"color",dflt:g.background},lonaxis:r,lataxis:r},"plot","from-root");o.uirevision={valType:"any",editType:"none"}}}),MU=Ye({"src/plots/geo/layout_defaults.js"(X,H){"use strict";var g=ta(),x=ig(),A=jh().getSubplotData,M=mx(),e=L5(),t=M.axesNames;H.exports=function(a,i,n){x(a,i,n,{type:"geo",attributes:e,handleDefaults:r,fullData:n,partition:"y"})};function r(o,a,i,n){var s=A(n.fullData,"geo",n.id),c=s.map(function(J){return J.index}),h=i("resolution"),v=i("scope"),p=M.scopeDefaults[v],T=i("projection.type",p.projType),l=a._isAlbersUsa=T==="albers usa";l&&(v=a.scope="usa");var _=a._isScoped=v!=="world",w=a._isSatellite=T==="satellite",S=a._isConic=T.indexOf("conic")!==-1||T==="albers",E=a._isClipped=!!M.lonaxisSpan[T];if(o.visible===!1){var m=g.extendDeep({},a._template);m.showcoastlines=!1,m.showcountries=!1,m.showframe=!1,m.showlakes=!1,m.showland=!1,m.showocean=!1,m.showrivers=!1,m.showsubunits=!1,m.lonaxis&&(m.lonaxis.showgrid=!1),m.lataxis&&(m.lataxis.showgrid=!1),a._template=m}for(var b=i("visible"),d,u=0;u0&&U<0&&(U+=360);var W=(N+U)/2,Q;if(!l){var ue=_?p.projRotate:[W,0,0];Q=i("projection.rotation.lon",ue[0]),i("projection.rotation.lat",ue[1]),i("projection.rotation.roll",ue[2]),d=i("showcoastlines",!_&&b),d&&(i("coastlinecolor"),i("coastlinewidth")),d=i("showocean",b?void 0:!1),d&&i("oceancolor")}var se,he;if(l?(se=-96.6,he=38.7):(se=_?W:Q,he=(I[0]+I[1])/2),i("center.lon",se),i("center.lat",he),w&&(i("projection.tilt"),i("projection.distance")),S){var G=p.projParallels||[0,60];i("projection.parallels",G)}i("projection.scale"),d=i("showland",b?void 0:!1),d&&i("landcolor"),d=i("showlakes",b?void 0:!1),d&&i("lakecolor"),d=i("showrivers",b?void 0:!1),d&&(i("rivercolor"),i("riverwidth")),d=i("showcountries",_&&v!=="usa"&&b),d&&(i("countrycolor"),i("countrywidth")),(v==="usa"||v==="north america"&&h===50)&&(i("showsubunits",b),i("subunitcolor"),i("subunitwidth")),_||(d=i("showframe",b),d&&(i("framecolor"),i("framewidth"))),i("bgcolor");var $=i("fitbounds");$&&(delete a.projection.scale,_?(delete a.center.lon,delete a.center.lat):E?(delete a.center.lon,delete a.center.lat,delete a.projection.rotation.lon,delete a.projection.rotation.lat,delete a.lonaxis.range,delete a.lataxis.range):(delete a.center.lon,delete a.center.lat,delete a.projection.rotation.lon))}}}),P5=Ye({"src/plots/geo/index.js"(X,H){"use strict";var g=jh().getSubplotCalcData,x=ta().counterRegex,A=SU(),M="geo",e=x(M),t={};t[M]={valType:"subplotid",dflt:M,editType:"calc"};function r(i){for(var n=i._fullLayout,s=i.calcdata,c=n._subplots[M],h=0;h")}}}}),cT=Ye({"src/traces/choropleth/event_data.js"(X,H){"use strict";H.exports=function(x,A,M,e,t){x.location=A.location,x.z=A.z;var r=e[t];return r.fIn&&r.fIn.properties&&(x.properties=r.fIn.properties),x.ct=r.ct,x}}}),fT=Ye({"src/traces/choropleth/select.js"(X,H){"use strict";H.exports=function(x,A){var M=x.cd,e=x.xaxis,t=x.yaxis,r=[],o,a,i,n,s;if(A===!1)for(o=0;o=Math.min(U,W)&&T<=Math.max(U,W)?0:1/0}if(L=Math.min(Q,ue)&&l<=Math.max(Q,ue)?0:1/0}B=Math.sqrt(L*L+z*z),u=w[P]}}}else for(P=w.length-1;P>-1;P--)d=w[P],y=v[d],f=p[d],L=c.c2p(y)-T,z=h.c2p(f)-l,F=Math.sqrt(L*L+z*z),F100},X.isDotSymbol=function(g){return typeof g=="string"?H.DOT_RE.test(g):g>200}}}),IU=Ye({"src/traces/scattergl/defaults.js"(X,H){"use strict";var g=ta(),x=Hn(),A=pT(),M=yx(),e=Tv(),t=uu(),r=i1(),o=Qd(),a=md(),i=Dd(),n=ev(),s=zd();H.exports=function(h,v,p,T){function l(u,y){return g.coerce(h,v,M,u,y)}var _=h.marker?A.isOpenSymbol(h.marker.symbol):!1,w=t.isBubble(h),S=r(h,v,T,l);if(!S){v.visible=!1;return}o(h,v,T,l),l("xhoverformat"),l("yhoverformat");var E=S>>1,h=r[c],v=a!==void 0?a(h,o):h-o;v>=0?(s=c,n=c-1):i=c+1}return s}function x(r,o,a,i,n){for(var s=n+1;i<=n;){var c=i+n>>>1,h=r[c],v=a!==void 0?a(h,o):h-o;v>0?(s=c,n=c-1):i=c+1}return s}function A(r,o,a,i,n){for(var s=i-1;i<=n;){var c=i+n>>>1,h=r[c],v=a!==void 0?a(h,o):h-o;v<0?(s=c,i=c+1):n=c-1}return s}function M(r,o,a,i,n){for(var s=i-1;i<=n;){var c=i+n>>>1,h=r[c],v=a!==void 0?a(h,o):h-o;v<=0?(s=c,i=c+1):n=c-1}return s}function e(r,o,a,i,n){for(;i<=n;){var s=i+n>>>1,c=r[s],h=a!==void 0?a(c,o):c-o;if(h===0)return s;h<=0?i=s+1:n=s-1}return-1}function t(r,o,a,i,n,s){return typeof a=="function"?s(r,o,a,i===void 0?0:i|0,n===void 0?r.length-1:n|0):s(r,o,void 0,a===void 0?0:a|0,i===void 0?r.length-1:i|0)}H.exports={ge:function(r,o,a,i,n){return t(r,o,a,i,n,g)},gt:function(r,o,a,i,n){return t(r,o,a,i,n,x)},lt:function(r,o,a,i,n){return t(r,o,a,i,n,A)},le:function(r,o,a,i,n){return t(r,o,a,i,n,M)},eq:function(r,o,a,i,n){return t(r,o,a,i,n,e)}}}}),Ev=Ye({"node_modules/pick-by-alias/index.js"(X,H){"use strict";H.exports=function(M,e,t){var r={},o,a;if(typeof e=="string"&&(e=x(e)),Array.isArray(e)){var i={};for(a=0;a1&&(A=arguments),typeof A=="string"?A=A.split(/\s/).map(parseFloat):typeof A=="number"&&(A=[A]),A.length&&typeof A[0]=="number"?A.length===1?M={width:A[0],height:A[0],x:0,y:0}:A.length===2?M={width:A[0],height:A[1],x:0,y:0}:M={x:A[0],y:A[1],width:A[2]-A[0]||0,height:A[3]-A[1]||0}:A&&(A=g(A,{left:"x l left Left",top:"y t top Top",width:"w width W Width",height:"h height W Width",bottom:"b bottom Bottom",right:"r right Right"}),M={x:A.left||0,y:A.top||0},A.width==null?A.right?M.width=A.right-M.x:M.width=0:M.width=A.width,A.height==null?A.bottom?M.height=A.bottom-M.y:M.height=0:M.height=A.height),M}}}),d0=Ye({"node_modules/array-bounds/index.js"(X,H){"use strict";H.exports=g;function g(x,A){if(!x||x.length==null)throw Error("Argument should be an array");A==null?A=1:A=Math.floor(A);for(var M=Array(A*2),e=0;et&&(t=x[o]),x[o]>>1,w;v.dtype||(v.dtype="array"),typeof v.dtype=="string"?w=new(a(v.dtype))(_):v.dtype&&(w=v.dtype,Array.isArray(w)&&(w.length=_));for(let L=0;L<_;++L)w[L]=L;let S=[],E=[],m=[],b=[];u(0,0,1,w,0,1);let d=0;for(let L=0;Lp||I>n){for(let re=0;reie||W>fe||Q=se||j===ee)return;let be=S[ne];ee===void 0&&(ee=be.length);for(let Me=j;Me=B&&ce<=I&&ze>=O&&ze<=N&&he.push(ge)}let Ae=E[ne],Be=Ae[j*4+0],Ie=Ae[j*4+1],Ze=Ae[j*4+2],at=Ae[j*4+3],it=$(Ae,j+1),et=re*.5,lt=ne+1;G(J,Z,et,lt,Be,Ie||Ze||at||it),G(J,Z+et,et,lt,Ie,Ze||at||it),G(J+et,Z,et,lt,Ze,at||it),G(J+et,Z+et,et,lt,at,it)}function $(J,Z){let re=null,ne=0;for(;re===null;)if(re=J[Z*4+ne],ne++,ne>J.length)return null;return re}return he}function f(L,z,F,B,O){let I=[];for(let N=0;N1&&(h=1),h<-1&&(h=-1),c*Math.acos(h)},t=function(a,i,n,s,c,h,v,p,T,l,_,w){var S=Math.pow(c,2),E=Math.pow(h,2),m=Math.pow(_,2),b=Math.pow(w,2),d=S*E-S*b-E*m;d<0&&(d=0),d/=S*b+E*m,d=Math.sqrt(d)*(v===p?-1:1);var u=d*c/h*w,y=d*-h/c*_,f=l*u-T*y+(a+n)/2,P=T*u+l*y+(i+s)/2,L=(_-u)/c,z=(w-y)/h,F=(-_-u)/c,B=(-w-y)/h,O=e(1,0,L,z),I=e(L,z,F,B);return p===0&&I>0&&(I-=x),p===1&&I<0&&(I+=x),[f,P,O,I]},r=function(a){var i=a.px,n=a.py,s=a.cx,c=a.cy,h=a.rx,v=a.ry,p=a.xAxisRotation,T=p===void 0?0:p,l=a.largeArcFlag,_=l===void 0?0:l,w=a.sweepFlag,S=w===void 0?0:w,E=[];if(h===0||v===0)return[];var m=Math.sin(T*x/360),b=Math.cos(T*x/360),d=b*(i-s)/2+m*(n-c)/2,u=-m*(i-s)/2+b*(n-c)/2;if(d===0&&u===0)return[];h=Math.abs(h),v=Math.abs(v);var y=Math.pow(d,2)/Math.pow(h,2)+Math.pow(u,2)/Math.pow(v,2);y>1&&(h*=Math.sqrt(y),v*=Math.sqrt(y));var f=t(i,n,s,c,h,v,_,S,m,b,d,u),P=g(f,4),L=P[0],z=P[1],F=P[2],B=P[3],O=Math.abs(B)/(x/4);Math.abs(1-O)<1e-7&&(O=1);var I=Math.max(Math.ceil(O),1);B/=I;for(var N=0;N4?(o=l[l.length-4],a=l[l.length-3]):(o=h,a=v),r.push(l)}return r}function A(e,t,r,o){return["C",e,t,r,o,r,o]}function M(e,t,r,o,a,i){return["C",e/3+2/3*r,t/3+2/3*o,a/3+2/3*r,i/3+2/3*o,a,i]}}}),D5=Ye({"node_modules/is-svg-path/index.js"(X,H){"use strict";H.exports=function(x){return typeof x!="string"?!1:(x=x.trim(),!!(/^[mzlhvcsqta]\s*[-+.0-9][^mlhvzcsqta]+/i.test(x)&&/[\dz]$/i.test(x)&&x.length>4))}}}),jU=Ye({"node_modules/svg-path-bounds/index.js"(X,H){"use strict";var g=A_(),x=R5(),A=UU(),M=D5(),e=X_();H.exports=t;function t(r){if(Array.isArray(r)&&r.length===1&&typeof r[0]=="string"&&(r=r[0]),typeof r=="string"&&(e(M(r),"String is not an SVG path."),r=g(r)),e(Array.isArray(r),"Argument should be a string or an array of path segments."),r=x(r),r=A(r),!r.length)return[0,0,0,0];for(var o=[1/0,1/0,-1/0,-1/0],a=0,i=r.length;ao[2]&&(o[2]=n[s+0]),n[s+1]>o[3]&&(o[3]=n[s+1]);return o}}}),VU=Ye({"node_modules/normalize-svg-path/index.js"(X,H){var g=Math.PI,x=o(120);H.exports=A;function A(a){for(var i,n=[],s=0,c=0,h=0,v=0,p=null,T=null,l=0,_=0,w=0,S=a.length;w7&&(n.push(E.splice(0,7)),E.unshift("C"));break;case"S":var b=l,d=_;(i=="C"||i=="S")&&(b+=b-s,d+=d-c),E=["C",b,d,E[1],E[2],E[3],E[4]];break;case"T":i=="Q"||i=="T"?(p=l*2-p,T=_*2-T):(p=l,T=_),E=e(l,_,p,T,E[1],E[2]);break;case"Q":p=E[1],T=E[2],E=e(l,_,E[1],E[2],E[3],E[4]);break;case"L":E=M(l,_,E[1],E[2]);break;case"H":E=M(l,_,E[1],_);break;case"V":E=M(l,_,l,E[1]);break;case"Z":E=M(l,_,h,v);break}i=m,l=E[E.length-2],_=E[E.length-1],E.length>4?(s=E[E.length-4],c=E[E.length-3]):(s=l,c=_),n.push(E)}return n}function M(a,i,n,s){return["C",a,i,n,s,n,s]}function e(a,i,n,s,c,h){return["C",a/3+2/3*n,i/3+2/3*s,c/3+2/3*n,h/3+2/3*s,c,h]}function t(a,i,n,s,c,h,v,p,T,l){if(l)f=l[0],P=l[1],u=l[2],y=l[3];else{var _=r(a,i,-c);a=_.x,i=_.y,_=r(p,T,-c),p=_.x,T=_.y;var w=(a-p)/2,S=(i-T)/2,E=w*w/(n*n)+S*S/(s*s);E>1&&(E=Math.sqrt(E),n=E*n,s=E*s);var m=n*n,b=s*s,d=(h==v?-1:1)*Math.sqrt(Math.abs((m*b-m*S*S-b*w*w)/(m*S*S+b*w*w)));d==1/0&&(d=1);var u=d*n*S/s+(a+p)/2,y=d*-s*w/n+(i+T)/2,f=Math.asin(((i-y)/s).toFixed(9)),P=Math.asin(((T-y)/s).toFixed(9));f=aP&&(f=f-g*2),!v&&P>f&&(P=P-g*2)}if(Math.abs(P-f)>x){var L=P,z=p,F=T;P=f+x*(v&&P>f?1:-1),p=u+n*Math.cos(P),T=y+s*Math.sin(P);var B=t(p,T,n,s,c,0,v,z,F,[P,L,u,y])}var O=Math.tan((P-f)/4),I=4/3*n*O,N=4/3*s*O,U=[2*a-(a+I*Math.sin(f)),2*i-(i-N*Math.cos(f)),p+I*Math.sin(P),T-N*Math.cos(P),p,T];if(l)return U;B&&(U=U.concat(B));for(var W=0;W0?r.strokeStyle="white":r.strokeStyle="black",r.lineWidth=Math.abs(p)),r.translate(c*.5,h*.5),r.scale(_,_),i()){var w=new Path2D(n);r.fill(w),p&&r.stroke(w)}else{var S=x(n);A(r,S),r.fill(),p&&r.stroke()}r.setTransform(1,0,0,1,0,0);var E=e(r,{cutoff:s.cutoff!=null?s.cutoff:.5,radius:s.radius!=null?s.radius:v*.5});return E}var a;function i(){if(a!=null)return a;var n=document.createElement("canvas").getContext("2d");if(n.canvas.width=n.canvas.height=1,!window.Path2D)return a=!1;var s=new Path2D("M0,0h1v1h-1v-1Z");n.fillStyle="black",n.fill(s);var c=n.getImageData(0,0,1,1);return a=c&&c.data&&c.data[3]===255}}}),m0=Ye({"src/traces/scattergl/convert.js"(X,H){"use strict";var g=jo(),x=GU(),A=hg(),M=Hn(),e=ta(),t=e.isArrayOrTypedArray,r=Bo(),o=Xc(),a=em().formatColor,i=uu(),n=t1(),s=pT(),c=mg(),h=Xm().DESELECTDIM,v={start:1,left:1,end:-1,right:-1,middle:0,center:0,bottom:1,top:-1},p=Qp().appendArrayPointValue;function T(B,O){var I,N={marker:void 0,markerSel:void 0,markerUnsel:void 0,line:void 0,fill:void 0,errorX:void 0,errorY:void 0,text:void 0,textSel:void 0,textUnsel:void 0},U=B._context.plotGlPixelRatio;if(O.visible!==!0)return N;if(i.hasText(O)&&(N.text=l(B,O),N.textSel=E(B,O,O.selected),N.textUnsel=E(B,O,O.unselected)),i.hasMarkers(O)&&(N.marker=w(B,O),N.markerSel=S(B,O,O.selected),N.markerUnsel=S(B,O,O.unselected),!O.unselected&&t(O.marker.opacity))){var W=O.marker.opacity;for(N.markerUnsel.opacity=new Array(W.length),I=0;I500?"bold":"normal":B}function w(B,O){var I=O._length,N=O.marker,U={},W,Q=t(N.symbol),ue=t(N.angle),se=t(N.color),he=t(N.line.color),G=t(N.opacity),$=t(N.size),J=t(N.line.width),Z;if(Q||(Z=s.isOpenSymbol(N.symbol)),Q||se||he||G||ue){U.symbols=new Array(I),U.angles=new Array(I),U.colors=new Array(I),U.borderColors=new Array(I);var re=N.symbol,ne=N.angle,j=a(N,N.opacity,I),ee=a(N.line,N.opacity,I);if(!t(ee[0])){var ie=ee;for(ee=Array(I),W=0;Wc.TOO_MANY_POINTS||i.hasMarkers(O)?"rect":"round";if(he&&O.connectgaps){var $=W[0],J=W[1];for(Q=0;Q1?se[Q]:se[0]:se,Z=t(he)?he.length>1?he[Q]:he[0]:he,re=v[J],ne=v[Z],j=G?G/.8+1:0,ee=-ne*j-ne*.5;W.offset[Q]=[re*j/$,ee/$]}}return W}H.exports={style:T,markerStyle:w,markerSelection:S,linePositions:L,errorBarPositions:z,textPosition:F}}}),z5=Ye({"src/traces/scattergl/scene_update.js"(X,H){"use strict";var g=ta();H.exports=function(A,M){var e=M._scene,t={count:0,dirty:!0,lineOptions:[],fillOptions:[],markerOptions:[],markerSelectedOptions:[],markerUnselectedOptions:[],errorXOptions:[],errorYOptions:[],textOptions:[],textSelectedOptions:[],textUnselectedOptions:[],selectBatch:[],unselectBatch:[]},r={fill2d:!1,scatter2d:!1,error2d:!1,line2d:!1,glText:!1,select2d:!1};return M._scene||(e=M._scene={},e.init=function(){g.extendFlat(e,r,t)},e.init(),e.update=function(a){var i=g.repeat(a,e.count);if(e.fill2d&&e.fill2d.update(i),e.scatter2d&&e.scatter2d.update(i),e.line2d&&e.line2d.update(i),e.error2d&&e.error2d.update(i.concat(i)),e.select2d&&e.select2d.update(i),e.glText)for(var n=0;n=h,u=b*2,y={},f,P=S.makeCalcdata(_,"x"),L=E.makeCalcdata(_,"y"),z=e(_,S,"x",P),F=e(_,E,"y",L),B=z.vals,O=F.vals;_._x=B,_._y=O,_.xperiodalignment&&(_._origX=P,_._xStarts=z.starts,_._xEnds=z.ends),_.yperiodalignment&&(_._origY=L,_._yStarts=F.starts,_._yEnds=F.ends);var I=new Array(u),N=new Array(b);for(f=0;f1&&x.extendFlat(m.line,n.linePositions(T,_,w)),m.errorX||m.errorY){var b=n.errorBarPositions(T,_,w,S,E);m.errorX&&x.extendFlat(m.errorX,b.x),m.errorY&&x.extendFlat(m.errorY,b.y)}return m.text&&(x.extendFlat(m.text,{positions:w},n.textPosition(T,_,m.text,m.marker)),x.extendFlat(m.textSel,{positions:w},n.textPosition(T,_,m.text,m.markerSel)),x.extendFlat(m.textUnsel,{positions:w},n.textPosition(T,_,m.text,m.markerUnsel))),m}}}),F5=Ye({"src/traces/scattergl/edit_style.js"(X,H){"use strict";var g=ta(),x=Fn(),A=Xm().DESELECTDIM;function M(e){var t=e[0],r=t.trace,o=t.t,a=o._scene,i=o.index,n=a.selectBatch[i],s=a.unselectBatch[i],c=a.textOptions[i],h=a.textSelectedOptions[i]||{},v=a.textUnselectedOptions[i]||{},p=g.extendFlat({},c),T,l;if(n.length||s.length){var _=h.color,w=v.color,S=c.color,E=g.isArrayOrTypedArray(S);for(p.color=new Array(r._length),T=0;T>>24,r=(M&16711680)>>>16,o=(M&65280)>>>8,a=M&255;return e===!1?[t,r,o,a]:[t/255,r/255,o/255,a/255]}}}),Wf=Ye({"node_modules/object-assign/index.js"(X,H){"use strict";var g=Object.getOwnPropertySymbols,x=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;function M(t){if(t==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}function e(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de",Object.getOwnPropertyNames(t)[0]==="5")return!1;for(var r={},o=0;o<10;o++)r["_"+String.fromCharCode(o)]=o;var a=Object.getOwnPropertyNames(r).map(function(n){return r[n]});if(a.join("")!=="0123456789")return!1;var i={};return"abcdefghijklmnopqrst".split("").forEach(function(n){i[n]=n}),Object.keys(Object.assign({},i)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}H.exports=e()?Object.assign:function(t,r){for(var o,a=M(t),i,n=1;ny.length)&&(f=y.length);for(var P=0,L=new Array(f);P 1.0 + delta) { + discard; + } + + alpha -= smoothstep(1.0 - delta, 1.0 + delta, radius); + + float borderRadius = fragBorderRadius; + float ratio = smoothstep(borderRadius - delta, borderRadius + delta, radius); + vec4 color = mix(fragColor, fragBorderColor, ratio); + color.a *= alpha * opacity; + gl_FragColor = color; +} +`]),se.vert=p([`precision highp float; +#define GLSLIFY 1 + +attribute float x, y, xFract, yFract; +attribute float size, borderSize; +attribute vec4 colorId, borderColorId; +attribute float isActive; + +// \`invariant\` effectively turns off optimizations for the position. +// We need this because -fast-math on M1 Macs is re-ordering +// floating point operations in a way that causes floating point +// precision limits to put points in the wrong locations. +invariant gl_Position; + +uniform bool constPointSize; +uniform float pixelRatio; +uniform vec2 paletteSize, scale, scaleFract, translate, translateFract; +uniform sampler2D paletteTexture; + +const float maxSize = 100.; + +varying vec4 fragColor, fragBorderColor; +varying float fragBorderRadius, fragWidth; + +float pointSizeScale = (constPointSize) ? 2. : pixelRatio; + +bool isDirect = (paletteSize.x < 1.); + +vec4 getColor(vec4 id) { + return isDirect ? id / 255. : texture2D(paletteTexture, + vec2( + (id.x + .5) / paletteSize.x, + (id.y + .5) / paletteSize.y + ) + ); +} + +void main() { + // ignore inactive points + if (isActive == 0.) return; + + vec2 position = vec2(x, y); + vec2 positionFract = vec2(xFract, yFract); + + vec4 color = getColor(colorId); + vec4 borderColor = getColor(borderColorId); + + float size = size * maxSize / 255.; + float borderSize = borderSize * maxSize / 255.; + + gl_PointSize = (size + borderSize) * pointSizeScale; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + gl_Position = vec4(pos * 2. - 1., 0., 1.); + + fragBorderRadius = 1. - 2. * borderSize / (size + borderSize); + fragColor = color; + fragBorderColor = borderColor.a == 0. || borderSize == 0. ? vec4(color.rgb, 0.) : borderColor; + fragWidth = 1. / gl_PointSize; +} +`]),w&&(se.frag=se.frag.replace("smoothstep","smoothStep"),ue.frag=ue.frag.replace("smoothstep","smoothStep")),this.drawCircle=y(se)}b.defaults={color:"black",borderColor:"transparent",borderSize:0,size:12,opacity:1,marker:void 0,viewport:null,range:null,pixelSize:null,count:0,offset:0,bounds:null,positions:[],snap:1e4},b.prototype.render=function(){return arguments.length&&this.update.apply(this,arguments),this.draw(),this},b.prototype.draw=function(){for(var y=this,f=arguments.length,P=new Array(f),L=0;Lge)?lt.tree=h(et,{bounds:Qe}):ge&&ge.length&&(lt.tree=ge),lt.tree){var Ct={primitive:"points",usage:"static",data:lt.tree,type:"uint32"};lt.elements?lt.elements(Ct):lt.elements=B.elements(Ct)}var St=S.float32(et);ce({data:St,usage:"dynamic"});var Ot=S.fract32(et,St);return ze({data:Ot,usage:"dynamic"}),tt({data:new Uint8Array(nt),type:"uint8",usage:"stream"}),et}},{marker:function(et,lt,Me){var ge=lt.activation;if(ge.forEach(function(Ot){return Ot&&Ot.destroy&&Ot.destroy()}),ge.length=0,!et||typeof et[0]=="number"){var ce=y.addMarker(et);ge[ce]=!0}else{for(var ze=[],tt=0,nt=Math.min(et.length,lt.count);tt=0)return z;var F;if(y instanceof Uint8Array||y instanceof Uint8ClampedArray)F=y;else{F=new Uint8Array(y.length);for(var B=0,O=y.length;BL*4&&(this.tooManyColors=!0),this.updatePalette(P),z.length===1?z[0]:z},b.prototype.updatePalette=function(y){if(!this.tooManyColors){var f=this.maxColors,P=this.paletteTexture,L=Math.ceil(y.length*.25/f);if(L>1){y=y.slice();for(var z=y.length*.25%f;z80*I){ue=he=B[0],se=G=B[1];for(var re=I;rehe&&(he=$),J>G&&(G=J);Z=Math.max(he-ue,G-se),Z=Z!==0?32767/Z:0}return M(W,Q,I,ue,se,Z,0),Q}function x(B,O,I,N,U){var W,Q;if(U===F(B,O,I,N)>0)for(W=O;W=O;W-=N)Q=P(W,B[W],B[W+1],Q);return Q&&S(Q,Q.next)&&(L(Q),Q=Q.next),Q}function A(B,O){if(!B)return B;O||(O=B);var I=B,N;do if(N=!1,!I.steiner&&(S(I,I.next)||w(I.prev,I,I.next)===0)){if(L(I),I=O=I.prev,I===I.next)break;N=!0}else I=I.next;while(N||I!==O);return O}function M(B,O,I,N,U,W,Q){if(B){!Q&&W&&h(B,N,U,W);for(var ue=B,se,he;B.prev!==B.next;){if(se=B.prev,he=B.next,W?t(B,N,U,W):e(B)){O.push(se.i/I|0),O.push(B.i/I|0),O.push(he.i/I|0),L(B),B=he.next,ue=he.next;continue}if(B=he,B===ue){Q?Q===1?(B=r(A(B),O,I),M(B,O,I,N,U,W,2)):Q===2&&o(B,O,I,N,U,W):M(A(B),O,I,N,U,W,1);break}}}}function e(B){var O=B.prev,I=B,N=B.next;if(w(O,I,N)>=0)return!1;for(var U=O.x,W=I.x,Q=N.x,ue=O.y,se=I.y,he=N.y,G=UW?U>Q?U:Q:W>Q?W:Q,Z=ue>se?ue>he?ue:he:se>he?se:he,re=N.next;re!==O;){if(re.x>=G&&re.x<=J&&re.y>=$&&re.y<=Z&&l(U,ue,W,se,Q,he,re.x,re.y)&&w(re.prev,re,re.next)>=0)return!1;re=re.next}return!0}function t(B,O,I,N){var U=B.prev,W=B,Q=B.next;if(w(U,W,Q)>=0)return!1;for(var ue=U.x,se=W.x,he=Q.x,G=U.y,$=W.y,J=Q.y,Z=uese?ue>he?ue:he:se>he?se:he,j=G>$?G>J?G:J:$>J?$:J,ee=p(Z,re,O,I,N),ie=p(ne,j,O,I,N),fe=B.prevZ,be=B.nextZ;fe&&fe.z>=ee&&be&&be.z<=ie;){if(fe.x>=Z&&fe.x<=ne&&fe.y>=re&&fe.y<=j&&fe!==U&&fe!==Q&&l(ue,G,se,$,he,J,fe.x,fe.y)&&w(fe.prev,fe,fe.next)>=0||(fe=fe.prevZ,be.x>=Z&&be.x<=ne&&be.y>=re&&be.y<=j&&be!==U&&be!==Q&&l(ue,G,se,$,he,J,be.x,be.y)&&w(be.prev,be,be.next)>=0))return!1;be=be.nextZ}for(;fe&&fe.z>=ee;){if(fe.x>=Z&&fe.x<=ne&&fe.y>=re&&fe.y<=j&&fe!==U&&fe!==Q&&l(ue,G,se,$,he,J,fe.x,fe.y)&&w(fe.prev,fe,fe.next)>=0)return!1;fe=fe.prevZ}for(;be&&be.z<=ie;){if(be.x>=Z&&be.x<=ne&&be.y>=re&&be.y<=j&&be!==U&&be!==Q&&l(ue,G,se,$,he,J,be.x,be.y)&&w(be.prev,be,be.next)>=0)return!1;be=be.nextZ}return!0}function r(B,O,I){var N=B;do{var U=N.prev,W=N.next.next;!S(U,W)&&E(U,N,N.next,W)&&u(U,W)&&u(W,U)&&(O.push(U.i/I|0),O.push(N.i/I|0),O.push(W.i/I|0),L(N),L(N.next),N=B=W),N=N.next}while(N!==B);return A(N)}function o(B,O,I,N,U,W){var Q=B;do{for(var ue=Q.next.next;ue!==Q.prev;){if(Q.i!==ue.i&&_(Q,ue)){var se=f(Q,ue);Q=A(Q,Q.next),se=A(se,se.next),M(Q,O,I,N,U,W,0),M(se,O,I,N,U,W,0);return}ue=ue.next}Q=Q.next}while(Q!==B)}function a(B,O,I,N){var U=[],W,Q,ue,se,he;for(W=0,Q=O.length;W=I.next.y&&I.next.y!==I.y){var ue=I.x+(U-I.y)*(I.next.x-I.x)/(I.next.y-I.y);if(ue<=N&&ue>W&&(W=ue,Q=I.x=I.x&&I.x>=he&&N!==I.x&&l(UQ.x||I.x===Q.x&&c(Q,I)))&&(Q=I,$=J)),I=I.next;while(I!==se);return Q}function c(B,O){return w(B.prev,B,O.prev)<0&&w(O.next,B,B.next)<0}function h(B,O,I,N){var U=B;do U.z===0&&(U.z=p(U.x,U.y,O,I,N)),U.prevZ=U.prev,U.nextZ=U.next,U=U.next;while(U!==B);U.prevZ.nextZ=null,U.prevZ=null,v(U)}function v(B){var O,I,N,U,W,Q,ue,se,he=1;do{for(I=B,B=null,W=null,Q=0;I;){for(Q++,N=I,ue=0,O=0;O0||se>0&&N;)ue!==0&&(se===0||!N||I.z<=N.z)?(U=I,I=I.nextZ,ue--):(U=N,N=N.nextZ,se--),W?W.nextZ=U:B=U,U.prevZ=W,W=U;I=N}W.nextZ=null,he*=2}while(Q>1);return B}function p(B,O,I,N,U){return B=(B-I)*U|0,O=(O-N)*U|0,B=(B|B<<8)&16711935,B=(B|B<<4)&252645135,B=(B|B<<2)&858993459,B=(B|B<<1)&1431655765,O=(O|O<<8)&16711935,O=(O|O<<4)&252645135,O=(O|O<<2)&858993459,O=(O|O<<1)&1431655765,B|O<<1}function T(B){var O=B,I=B;do(O.x=(B-Q)*(W-ue)&&(B-Q)*(N-ue)>=(I-Q)*(O-ue)&&(I-Q)*(W-ue)>=(U-Q)*(N-ue)}function _(B,O){return B.next.i!==O.i&&B.prev.i!==O.i&&!d(B,O)&&(u(B,O)&&u(O,B)&&y(B,O)&&(w(B.prev,B,O.prev)||w(B,O.prev,O))||S(B,O)&&w(B.prev,B,B.next)>0&&w(O.prev,O,O.next)>0)}function w(B,O,I){return(O.y-B.y)*(I.x-O.x)-(O.x-B.x)*(I.y-O.y)}function S(B,O){return B.x===O.x&&B.y===O.y}function E(B,O,I,N){var U=b(w(B,O,I)),W=b(w(B,O,N)),Q=b(w(I,N,B)),ue=b(w(I,N,O));return!!(U!==W&&Q!==ue||U===0&&m(B,I,O)||W===0&&m(B,N,O)||Q===0&&m(I,B,N)||ue===0&&m(I,O,N))}function m(B,O,I){return O.x<=Math.max(B.x,I.x)&&O.x>=Math.min(B.x,I.x)&&O.y<=Math.max(B.y,I.y)&&O.y>=Math.min(B.y,I.y)}function b(B){return B>0?1:B<0?-1:0}function d(B,O){var I=B;do{if(I.i!==B.i&&I.next.i!==B.i&&I.i!==O.i&&I.next.i!==O.i&&E(I,I.next,B,O))return!0;I=I.next}while(I!==B);return!1}function u(B,O){return w(B.prev,B,B.next)<0?w(B,O,B.next)>=0&&w(B,B.prev,O)>=0:w(B,O,B.prev)<0||w(B,B.next,O)<0}function y(B,O){var I=B,N=!1,U=(B.x+O.x)/2,W=(B.y+O.y)/2;do I.y>W!=I.next.y>W&&I.next.y!==I.y&&U<(I.next.x-I.x)*(W-I.y)/(I.next.y-I.y)+I.x&&(N=!N),I=I.next;while(I!==B);return N}function f(B,O){var I=new z(B.i,B.x,B.y),N=new z(O.i,O.x,O.y),U=B.next,W=O.prev;return B.next=O,O.prev=B,I.next=U,U.prev=I,N.next=I,I.prev=N,W.next=N,N.prev=W,N}function P(B,O,I,N){var U=new z(B,O,I);return N?(U.next=N.next,U.prev=N,N.next.prev=U,N.next=U):(U.prev=U,U.next=U),U}function L(B){B.next.prev=B.prev,B.prev.next=B.next,B.prevZ&&(B.prevZ.nextZ=B.nextZ),B.nextZ&&(B.nextZ.prevZ=B.prevZ)}function z(B,O,I){this.i=B,this.x=O,this.y=I,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}g.deviation=function(B,O,I,N){var U=O&&O.length,W=U?O[0]*I:B.length,Q=Math.abs(F(B,0,W,I));if(U)for(var ue=0,se=O.length;ue0&&(N+=B[U-1].length,I.holes.push(N))}return I}}}),$U=Ye({"node_modules/array-normalize/index.js"(X,H){"use strict";var g=d0();H.exports=x;function x(A,M,e){if(!A||A.length==null)throw Error("Argument should be an array");M==null&&(M=1),e==null&&(e=g(A,M));for(var t=0;t-1}}}),G5=Ye({"node_modules/es5-ext/string/#/contains/index.js"(X,H){"use strict";H.exports=fj()()?String.prototype.contains:hj()}}),rm=Ye({"node_modules/d/index.js"(X,H){"use strict";var g=g0(),x=q5(),A=yT(),M=H5(),e=G5(),t=H.exports=function(r,o){var a,i,n,s,c;return arguments.length<2||typeof r!="string"?(s=o,o=r,r=null):s=arguments[2],g(r)?(a=e.call(r,"c"),i=e.call(r,"e"),n=e.call(r,"w")):(a=n=!0,i=!1),c={value:o,configurable:a,enumerable:i,writable:n},s?A(M(s),c):c};t.gs=function(r,o,a){var i,n,s,c;return typeof r!="string"?(s=a,a=o,o=r,r=null):s=arguments[3],g(o)?x(o)?g(a)?x(a)||(s=a,a=void 0):a=void 0:(s=o,o=a=void 0):o=void 0,g(r)?(i=e.call(r,"c"),n=e.call(r,"e")):(i=!0,n=!1),c={get:o,set:a,configurable:i,enumerable:n},s?A(M(s),c):c}}}),_x=Ye({"node_modules/es5-ext/function/is-arguments.js"(X,H){"use strict";var g=Object.prototype.toString,x=g.call(function(){return arguments}());H.exports=function(A){return g.call(A)===x}}}),xx=Ye({"node_modules/es5-ext/string/is-string.js"(X,H){"use strict";var g=Object.prototype.toString,x=g.call("");H.exports=function(A){return typeof A=="string"||A&&typeof A=="object"&&(A instanceof String||g.call(A)===x)||!1}}}),pj=Ye({"node_modules/ext/global-this/is-implemented.js"(X,H){"use strict";H.exports=function(){return typeof globalThis!="object"||!globalThis?!1:globalThis.Array===Array}}}),dj=Ye({"node_modules/ext/global-this/implementation.js"(X,H){var g=function(){if(typeof self=="object"&&self)return self;if(typeof window=="object"&&window)return window;throw new Error("Unable to resolve global `this`")};H.exports=function(){if(this)return this;try{Object.defineProperty(Object.prototype,"__global__",{get:function(){return this},configurable:!0})}catch{return g()}try{return __global__||g()}finally{delete Object.prototype.__global__}}()}}),bx=Ye({"node_modules/ext/global-this/index.js"(X,H){"use strict";H.exports=pj()()?globalThis:dj()}}),vj=Ye({"node_modules/es6-symbol/is-implemented.js"(X,H){"use strict";var g=bx(),x={object:!0,symbol:!0};H.exports=function(){var A=g.Symbol,M;if(typeof A!="function")return!1;M=A("test symbol");try{String(M)}catch{return!1}return!(!x[typeof A.iterator]||!x[typeof A.toPrimitive]||!x[typeof A.toStringTag])}}}),mj=Ye({"node_modules/es6-symbol/is-symbol.js"(X,H){"use strict";H.exports=function(g){return g?typeof g=="symbol"?!0:!g.constructor||g.constructor.name!=="Symbol"?!1:g[g.constructor.toStringTag]==="Symbol":!1}}}),W5=Ye({"node_modules/es6-symbol/validate-symbol.js"(X,H){"use strict";var g=mj();H.exports=function(x){if(!g(x))throw new TypeError(x+" is not a symbol");return x}}}),gj=Ye({"node_modules/es6-symbol/lib/private/generate-name.js"(X,H){"use strict";var g=rm(),x=Object.create,A=Object.defineProperty,M=Object.prototype,e=x(null);H.exports=function(t){for(var r=0,o,a;e[t+(r||"")];)++r;return t+=r||"",e[t]=!0,o="@@"+t,A(M,o,g.gs(null,function(i){a||(a=!0,A(this,o,g(i)),a=!1)})),o}}}),yj=Ye({"node_modules/es6-symbol/lib/private/setup/standard-symbols.js"(X,H){"use strict";var g=rm(),x=bx().Symbol;H.exports=function(A){return Object.defineProperties(A,{hasInstance:g("",x&&x.hasInstance||A("hasInstance")),isConcatSpreadable:g("",x&&x.isConcatSpreadable||A("isConcatSpreadable")),iterator:g("",x&&x.iterator||A("iterator")),match:g("",x&&x.match||A("match")),replace:g("",x&&x.replace||A("replace")),search:g("",x&&x.search||A("search")),species:g("",x&&x.species||A("species")),split:g("",x&&x.split||A("split")),toPrimitive:g("",x&&x.toPrimitive||A("toPrimitive")),toStringTag:g("",x&&x.toStringTag||A("toStringTag")),unscopables:g("",x&&x.unscopables||A("unscopables"))})}}}),_j=Ye({"node_modules/es6-symbol/lib/private/setup/symbol-registry.js"(X,H){"use strict";var g=rm(),x=W5(),A=Object.create(null);H.exports=function(M){return Object.defineProperties(M,{for:g(function(e){return A[e]?A[e]:A[e]=M(String(e))}),keyFor:g(function(e){var t;x(e);for(t in A)if(A[t]===e)return t})})}}}),xj=Ye({"node_modules/es6-symbol/polyfill.js"(X,H){"use strict";var g=rm(),x=W5(),A=bx().Symbol,M=gj(),e=yj(),t=_j(),r=Object.create,o=Object.defineProperties,a=Object.defineProperty,i,n,s;if(typeof A=="function")try{String(A()),s=!0}catch{}else A=null;n=function(h){if(this instanceof n)throw new TypeError("Symbol is not a constructor");return i(h)},H.exports=i=function c(h){var v;if(this instanceof c)throw new TypeError("Symbol is not a constructor");return s?A(h):(v=r(n.prototype),h=h===void 0?"":String(h),o(v,{__description__:g("",h),__name__:g("",M(h))}))},e(i),t(i),o(n.prototype,{constructor:g(i),toString:g("",function(){return this.__name__})}),o(i.prototype,{toString:g(function(){return"Symbol ("+x(this).__description__+")"}),valueOf:g(function(){return x(this)})}),a(i.prototype,i.toPrimitive,g("",function(){var c=x(this);return typeof c=="symbol"?c:c.toString()})),a(i.prototype,i.toStringTag,g("c","Symbol")),a(n.prototype,i.toStringTag,g("c",i.prototype[i.toStringTag])),a(n.prototype,i.toPrimitive,g("c",i.prototype[i.toPrimitive]))}}),yg=Ye({"node_modules/es6-symbol/index.js"(X,H){"use strict";H.exports=vj()()?bx().Symbol:xj()}}),bj=Ye({"node_modules/es5-ext/array/#/clear.js"(X,H){"use strict";var g=tm();H.exports=function(){return g(this).length=0,this}}}),k1=Ye({"node_modules/es5-ext/object/valid-callable.js"(X,H){"use strict";H.exports=function(g){if(typeof g!="function")throw new TypeError(g+" is not a function");return g}}}),wj=Ye({"node_modules/type/string/coerce.js"(X,H){"use strict";var g=g0(),x=gT(),A=Object.prototype.toString;H.exports=function(M){if(!g(M))return null;if(x(M)){var e=M.toString;if(typeof e!="function"||e===A)return null}try{return""+M}catch{return null}}}}),Tj=Ye({"node_modules/type/lib/safe-to-string.js"(X,H){"use strict";H.exports=function(g){try{return g.toString()}catch{try{return String(g)}catch{return null}}}}}),Aj=Ye({"node_modules/type/lib/to-short-string.js"(X,H){"use strict";var g=Tj(),x=/[\n\r\u2028\u2029]/g;H.exports=function(A){var M=g(A);return M===null?"":(M.length>100&&(M=M.slice(0,99)+"\u2026"),M=M.replace(x,function(e){switch(e){case` +`:return"\\n";case"\r":return"\\r";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:throw new Error("Unexpected character")}}),M)}}}),Z5=Ye({"node_modules/type/lib/resolve-exception.js"(X,H){"use strict";var g=g0(),x=gT(),A=wj(),M=Aj(),e=function(t,r){return t.replace("%v",M(r))};H.exports=function(t,r,o){if(!x(o))throw new TypeError(e(r,t));if(!g(t)){if("default"in o)return o.default;if(o.isOptional)return null}var a=A(o.errorMessage);throw g(a)||(a=r),new TypeError(e(a,t))}}}),Sj=Ye({"node_modules/type/value/ensure.js"(X,H){"use strict";var g=Z5(),x=g0();H.exports=function(A){return x(A)?A:g(A,"Cannot use %v",arguments[1])}}}),Mj=Ye({"node_modules/type/plain-function/ensure.js"(X,H){"use strict";var g=Z5(),x=q5();H.exports=function(A){return x(A)?A:g(A,"%v is not a plain function",arguments[1])}}}),Ej=Ye({"node_modules/es5-ext/array/from/is-implemented.js"(X,H){"use strict";H.exports=function(){var g=Array.from,x,A;return typeof g!="function"?!1:(x=["raz","dwa"],A=g(x),!!(A&&A!==x&&A[1]==="dwa"))}}}),kj=Ye({"node_modules/es5-ext/function/is-function.js"(X,H){"use strict";var g=Object.prototype.toString,x=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);H.exports=function(A){return typeof A=="function"&&x(g.call(A))}}}),Cj=Ye({"node_modules/es5-ext/math/sign/is-implemented.js"(X,H){"use strict";H.exports=function(){var g=Math.sign;return typeof g!="function"?!1:g(10)===1&&g(-20)===-1}}}),Lj=Ye({"node_modules/es5-ext/math/sign/shim.js"(X,H){"use strict";H.exports=function(g){return g=Number(g),isNaN(g)||g===0?g:g>0?1:-1}}}),Pj=Ye({"node_modules/es5-ext/math/sign/index.js"(X,H){"use strict";H.exports=Cj()()?Math.sign:Lj()}}),Ij=Ye({"node_modules/es5-ext/number/to-integer.js"(X,H){"use strict";var g=Pj(),x=Math.abs,A=Math.floor;H.exports=function(M){return isNaN(M)?0:(M=Number(M),M===0||!isFinite(M)?M:g(M)*A(x(M)))}}}),Rj=Ye({"node_modules/es5-ext/number/to-pos-integer.js"(X,H){"use strict";var g=Ij(),x=Math.max;H.exports=function(A){return x(0,g(A))}}}),Dj=Ye({"node_modules/es5-ext/array/from/shim.js"(X,H){"use strict";var g=yg().iterator,x=_x(),A=kj(),M=Rj(),e=k1(),t=tm(),r=gg(),o=xx(),a=Array.isArray,i=Function.prototype.call,n={configurable:!0,enumerable:!0,writable:!0,value:null},s=Object.defineProperty;H.exports=function(c){var h=arguments[1],v=arguments[2],p,T,l,_,w,S,E,m,b,d;if(c=Object(t(c)),r(h)&&e(h),!this||this===Array||!A(this)){if(!h){if(x(c))return w=c.length,w!==1?Array.apply(null,c):(_=new Array(1),_[0]=c[0],_);if(a(c)){for(_=new Array(w=c.length),T=0;T=55296&&S<=56319&&(d+=c[++T])),d=h?i.call(h,v,d,l):d,p?(n.value=d,s(_,l,n)):_[l]=d,++l;w=l}}if(w===void 0)for(w=M(c.length),p&&(_=new p(w)),T=0;T=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){o(this,"__redo__",e("c",[n]));return}this.__redo__.forEach(function(s,c){s>=n&&(this.__redo__[c]=++s)},this),this.__redo__.push(n)}}),_onDelete:e(function(n){var s;n>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(s=this.__redo__.indexOf(n),s!==-1&&this.__redo__.splice(s,1),this.__redo__.forEach(function(c,h){c>n&&(this.__redo__[h]=--c)},this)))}),_onClear:e(function(){this.__redo__&&g.call(this.__redo__),this.__nextIndex__=0})}))),o(i.prototype,r.iterator,e(function(){return this}))}}),jj=Ye({"node_modules/es6-iterator/array.js"(X,H){"use strict";var g=mT(),x=G5(),A=rm(),M=yg(),e=X5(),t=Object.defineProperty,r;r=H.exports=function(o,a){if(!(this instanceof r))throw new TypeError("Constructor requires 'new'");e.call(this,o),a?x.call(a,"key+value")?a="key+value":x.call(a,"key")?a="key":a="value":a="value",t(this,"__kind__",A("",a))},g&&g(r,e),delete r.prototype.constructor,r.prototype=Object.create(e.prototype,{_resolve:A(function(o){return this.__kind__==="value"?this.__list__[o]:this.__kind__==="key+value"?[o,this.__list__[o]]:o})}),t(r.prototype,M.toStringTag,A("c","Array Iterator"))}}),Vj=Ye({"node_modules/es6-iterator/string.js"(X,H){"use strict";var g=mT(),x=rm(),A=yg(),M=X5(),e=Object.defineProperty,t;t=H.exports=function(r){if(!(this instanceof t))throw new TypeError("Constructor requires 'new'");r=String(r),M.call(this,r),e(this,"__length__",x("",r.length))},g&&g(t,M),delete t.prototype.constructor,t.prototype=Object.create(M.prototype,{_next:x(function(){if(this.__list__){if(this.__nextIndex__=55296&&a<=56319?o+this.__list__[this.__nextIndex__++]:o)})}),e(t.prototype,A.toStringTag,x("c","String Iterator"))}}),qj=Ye({"node_modules/es6-iterator/is-iterable.js"(X,H){"use strict";var g=_x(),x=gg(),A=xx(),M=yg().iterator,e=Array.isArray;H.exports=function(t){return x(t)?e(t)||A(t)||g(t)?!0:typeof t[M]=="function":!1}}}),Hj=Ye({"node_modules/es6-iterator/valid-iterable.js"(X,H){"use strict";var g=qj();H.exports=function(x){if(!g(x))throw new TypeError(x+" is not iterable");return x}}}),Y5=Ye({"node_modules/es6-iterator/get.js"(X,H){"use strict";var g=_x(),x=xx(),A=jj(),M=Vj(),e=Hj(),t=yg().iterator;H.exports=function(r){return typeof e(r)[t]=="function"?r[t]():g(r)?new A(r):x(r)?new M(r):new A(r)}}}),Gj=Ye({"node_modules/es6-iterator/for-of.js"(X,H){"use strict";var g=_x(),x=k1(),A=xx(),M=Y5(),e=Array.isArray,t=Function.prototype.call,r=Array.prototype.some;H.exports=function(o,a){var i,n=arguments[2],s,c,h,v,p,T,l;if(e(o)||g(o)?i="array":A(o)?i="string":o=M(o),x(a),c=function(){h=!0},i==="array"){r.call(o,function(_){return t.call(a,n,_,c),h});return}if(i==="string"){for(p=o.length,v=0;v=55296&&l<=56319&&(T+=o[++v])),t.call(a,n,T,c),!h);++v);return}for(s=o.next();!s.done;){if(t.call(a,n,s.value,c),h)return;s=o.next()}}}}),Wj=Ye({"node_modules/es6-weak-map/is-native-implemented.js"(X,H){"use strict";H.exports=function(){return typeof WeakMap!="function"?!1:Object.prototype.toString.call(new WeakMap)==="[object WeakMap]"}()}}),Zj=Ye({"node_modules/es6-weak-map/polyfill.js"(X,H){"use strict";var g=gg(),x=mT(),A=rj(),M=tm(),e=aj(),t=rm(),r=Y5(),o=Gj(),a=yg().toStringTag,i=Wj(),n=Array.isArray,s=Object.defineProperty,c=Object.prototype.hasOwnProperty,h=Object.getPrototypeOf,v;H.exports=v=function(){var p=arguments[0],T;if(!(this instanceof v))throw new TypeError("Constructor requires 'new'");return T=i&&x&&WeakMap!==v?x(new WeakMap,h(this)):this,g(p)&&(n(p)||(p=r(p))),s(T,"__weakMapData__",t("c","$weakMap$"+e())),p&&o(p,function(l){M(l),T.set(l[0],l[1])}),T},i&&(x&&x(v,WeakMap),v.prototype=Object.create(WeakMap.prototype,{constructor:t(v)})),Object.defineProperties(v.prototype,{delete:t(function(p){return c.call(A(p),this.__weakMapData__)?(delete p[this.__weakMapData__],!0):!1}),get:t(function(p){if(c.call(A(p),this.__weakMapData__))return p[this.__weakMapData__]}),has:t(function(p){return c.call(A(p),this.__weakMapData__)}),set:t(function(p,T){return s(A(p),this.__weakMapData__,t("c",T)),this}),toString:t(function(){return"[object WeakMap]"})}),s(v.prototype,a,t("c","WeakMap"))}}),K5=Ye({"node_modules/es6-weak-map/index.js"(X,H){"use strict";H.exports=QU()()?WeakMap:Zj()}}),Xj=Ye({"node_modules/array-find-index/index.js"(X,H){"use strict";H.exports=function(g,x,A){if(typeof Array.prototype.findIndex=="function")return g.findIndex(x,A);if(typeof x!="function")throw new TypeError("predicate must be a function");var M=Object(g),e=M.length;if(e===0)return-1;for(var t=0;t 0. && baClipping < length(normalWidth * endBotJoin)) { + //handle miter clipping + bTopCoord -= normalWidth * endTopJoin; + bTopCoord += normalize(endTopJoin * normalWidth) * baClipping; + } + + if (nextReverse) { + //make join rectangular + vec2 miterShift = normalWidth * endJoinDirection * miterLimit * .5; + float normalAdjust = 1. - min(miterLimit / endMiterRatio, 1.); + bBotCoord = bCoord + miterShift - normalAdjust * normalWidth * currNormal * .5; + bTopCoord = bCoord + miterShift + normalAdjust * normalWidth * currNormal * .5; + } + else if (!prevReverse && abClipping > 0. && abClipping < length(normalWidth * startBotJoin)) { + //handle miter clipping + aBotCoord -= normalWidth * startBotJoin; + aBotCoord += normalize(startBotJoin * normalWidth) * abClipping; + } + + vec2 aTopPosition = (aTopCoord) * adjustedScale + translate; + vec2 aBotPosition = (aBotCoord) * adjustedScale + translate; + + vec2 bTopPosition = (bTopCoord) * adjustedScale + translate; + vec2 bBotPosition = (bBotCoord) * adjustedScale + translate; + + //position is normalized 0..1 coord on the screen + vec2 position = (aTopPosition * lineTop + aBotPosition * lineBot) * lineStart + (bTopPosition * lineTop + bBotPosition * lineBot) * lineEnd; + + startCoord = aCoord * scaleRatio + translate * viewport.zw + viewport.xy; + endCoord = bCoord * scaleRatio + translate * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2.0 - 1.0, depth, 1); + + enableStartMiter = step(dot(currTangent, prevTangent), .5); + enableEndMiter = step(dot(currTangent, nextTangent), .5); + + //bevel miter cutoffs + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * miterLimit * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * miterLimit * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } + + //round miter cutoffs + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + vec2 startMiterWidth = vec2(startJoinDirection) * thickness * abs(dot(startJoinDirection, currNormal)) * .5; + startCutoff = vec4(aCoord, aCoord); + startCutoff.zw += vec2(-startJoinDirection.y, startJoinDirection.x) / scaleRatio; + startCutoff = startCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + startCutoff += viewport.xyxy; + startCutoff += startMiterWidth.xyxy; + } + + if (enableEndMiter == 1.) { + vec2 endMiterWidth = vec2(endJoinDirection) * thickness * abs(dot(endJoinDirection, currNormal)) * .5; + endCutoff = vec4(bCoord, bCoord); + endCutoff.zw += vec2(-endJoinDirection.y, endJoinDirection.x) / scaleRatio; + endCutoff = endCutoff * scaleRatio.xyxy + translate.xyxy * viewport.zwzw; + endCutoff += viewport.xyxy; + endCutoff += endMiterWidth.xyxy; + } + } +} +`,l=` +precision highp float; + +uniform float dashLength, pixelRatio, thickness, opacity, id, miterMode; +uniform sampler2D dashTexture; + +varying vec4 fragColor; +varying vec2 tangent; +varying vec4 startCutoff, endCutoff; +varying vec2 startCoord, endCoord; +varying float enableStartMiter, enableEndMiter; + +float distToLine(vec2 p, vec2 a, vec2 b) { + vec2 diff = b - a; + vec2 perp = normalize(vec2(-diff.y, diff.x)); + return dot(p - a, perp); +} + +void main() { + float alpha = 1., distToStart, distToEnd; + float cutoff = thickness * .5; + + //bevel miter + if (miterMode == 1.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < -1.) { + discard; + return; + } + alpha *= min(max(distToStart + 1., 0.), 1.); + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < -1.) { + discard; + return; + } + alpha *= min(max(distToEnd + 1., 0.), 1.); + } + } + + // round miter + else if (miterMode == 2.) { + if (enableStartMiter == 1.) { + distToStart = distToLine(gl_FragCoord.xy, startCutoff.xy, startCutoff.zw); + if (distToStart < 0.) { + float radius = length(gl_FragCoord.xy - startCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + + if (enableEndMiter == 1.) { + distToEnd = distToLine(gl_FragCoord.xy, endCutoff.xy, endCutoff.zw); + if (distToEnd < 0.) { + float radius = length(gl_FragCoord.xy - endCoord); + + if(radius > cutoff + .5) { + discard; + return; + } + + alpha -= smoothstep(cutoff - .5, cutoff + .5, radius); + } + } + } + + float t = fract(dot(tangent, gl_FragCoord.xy) / dashLength) * .5 + .25; + float dash = texture2D(dashTexture, vec2(t, .5)).r; + + gl_FragColor = fragColor; + gl_FragColor.a *= alpha * opacity * dash; +} +`;H.exports=_;function _(w,S){if(!(this instanceof _))return new _(w,S);if(typeof w=="function"?(S||(S={}),S.regl=w):S=w,S.length&&(S.positions=S),w=S.regl,!w.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");this.gl=w._gl,this.regl=w,this.passes=[],this.shaders=_.shaders.has(w)?_.shaders.get(w):_.shaders.set(w,_.createShaders(w)).get(w),this.update(S)}_.dashMult=2,_.maxPatternLength=256,_.precisionThreshold=3e6,_.maxPoints=1e4,_.maxLines=2048,_.shaders=new i,_.createShaders=function(w){let S=w.buffer({usage:"static",type:"float",data:[0,1,0,0,1,1,1,0]}),E={primitive:"triangle strip",instances:w.prop("count"),count:4,offset:0,uniforms:{miterMode:(u,y)=>y.join==="round"?2:1,miterLimit:w.prop("miterLimit"),scale:w.prop("scale"),scaleFract:w.prop("scaleFract"),translateFract:w.prop("translateFract"),translate:w.prop("translate"),thickness:w.prop("thickness"),dashTexture:w.prop("dashTexture"),opacity:w.prop("opacity"),pixelRatio:w.context("pixelRatio"),id:w.prop("id"),dashLength:w.prop("dashLength"),viewport:(u,y)=>[y.viewport.x,y.viewport.y,u.viewportWidth,u.viewportHeight],depth:w.prop("depth")},blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:(u,y)=>!y.overlay},stencil:{enable:!1},scissor:{enable:!0,box:w.prop("viewport")},viewport:w.prop("viewport")},m=w(A({vert:c,frag:h,attributes:{lineEnd:{buffer:S,divisor:0,stride:8,offset:0},lineTop:{buffer:S,divisor:0,stride:8,offset:4},aCoord:{buffer:w.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:w.prop("positionBuffer"),stride:8,offset:16,divisor:1},aCoordFract:{buffer:w.prop("positionFractBuffer"),stride:8,offset:8,divisor:1},bCoordFract:{buffer:w.prop("positionFractBuffer"),stride:8,offset:16,divisor:1},color:{buffer:w.prop("colorBuffer"),stride:4,offset:0,divisor:1}}},E)),b;try{b=w(A({cull:{enable:!0,face:"back"},vert:T,frag:l,attributes:{lineEnd:{buffer:S,divisor:0,stride:8,offset:0},lineTop:{buffer:S,divisor:0,stride:8,offset:4},aColor:{buffer:w.prop("colorBuffer"),stride:4,offset:0,divisor:1},bColor:{buffer:w.prop("colorBuffer"),stride:4,offset:4,divisor:1},prevCoord:{buffer:w.prop("positionBuffer"),stride:8,offset:0,divisor:1},aCoord:{buffer:w.prop("positionBuffer"),stride:8,offset:8,divisor:1},bCoord:{buffer:w.prop("positionBuffer"),stride:8,offset:16,divisor:1},nextCoord:{buffer:w.prop("positionBuffer"),stride:8,offset:24,divisor:1}}},E))}catch{b=m}return{fill:w({primitive:"triangle",elements:(u,y)=>y.triangles,offset:0,vert:v,frag:p,uniforms:{scale:w.prop("scale"),color:w.prop("fill"),scaleFract:w.prop("scaleFract"),translateFract:w.prop("translateFract"),translate:w.prop("translate"),opacity:w.prop("opacity"),pixelRatio:w.context("pixelRatio"),id:w.prop("id"),viewport:(u,y)=>[y.viewport.x,y.viewport.y,u.viewportWidth,u.viewportHeight]},attributes:{position:{buffer:w.prop("positionBuffer"),stride:8,offset:8},positionFract:{buffer:w.prop("positionFractBuffer"),stride:8,offset:8}},blend:E.blend,depth:{enable:!1},scissor:E.scissor,stencil:E.stencil,viewport:E.viewport}),rect:m,miter:b}},_.defaults={dashes:null,join:"miter",miterLimit:1,thickness:10,cap:"square",color:"black",opacity:1,overlay:!1,viewport:null,range:null,close:!1,fill:null},_.prototype.render=function(...w){w.length&&this.update(...w),this.draw()},_.prototype.draw=function(...w){return(w.length?w:this.passes).forEach((S,E)=>{if(S&&Array.isArray(S))return this.draw(...S);typeof S=="number"&&(S=this.passes[S]),S&&S.count>1&&S.opacity&&(this.regl._refresh(),S.fill&&S.triangles&&S.triangles.length>2&&this.shaders.fill(S),S.thickness&&(S.scale[0]*S.viewport.width>_.precisionThreshold||S.scale[1]*S.viewport.height>_.precisionThreshold?this.shaders.rect(S):S.join==="rect"||!S.join&&(S.thickness<=2||S.count>=_.maxPoints)?this.shaders.rect(S):this.shaders.miter(S)))}),this},_.prototype.update=function(w){if(!w)return;w.length!=null?typeof w[0]=="number"&&(w=[{positions:w}]):Array.isArray(w)||(w=[w]);let{regl:S,gl:E}=this;if(w.forEach((b,d)=>{let u=this.passes[d];if(b!==void 0){if(b===null){this.passes[d]=null;return}if(typeof b[0]=="number"&&(b={positions:b}),b=M(b,{positions:"positions points data coords",thickness:"thickness lineWidth lineWidths line-width linewidth width stroke-width strokewidth strokeWidth",join:"lineJoin linejoin join type mode",miterLimit:"miterlimit miterLimit",dashes:"dash dashes dasharray dash-array dashArray",color:"color colour stroke colors colours stroke-color strokeColor",fill:"fill fill-color fillColor",opacity:"alpha opacity",overlay:"overlay crease overlap intersect",close:"closed close closed-path closePath",range:"range dataBox",viewport:"viewport viewBox",hole:"holes hole hollow",splitNull:"splitNull"}),u||(this.passes[d]=u={id:d,scale:null,scaleFract:null,translate:null,translateFract:null,count:0,hole:[],depth:0,dashLength:1,dashTexture:S.texture({channels:1,data:new Uint8Array([255]),width:1,height:1,mag:"linear",min:"linear"}),colorBuffer:S.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array}),positionBuffer:S.buffer({usage:"dynamic",type:"float",data:new Uint8Array}),positionFractBuffer:S.buffer({usage:"dynamic",type:"float",data:new Uint8Array})},b=A({},_.defaults,b)),b.thickness!=null&&(u.thickness=parseFloat(b.thickness)),b.opacity!=null&&(u.opacity=parseFloat(b.opacity)),b.miterLimit!=null&&(u.miterLimit=parseFloat(b.miterLimit)),b.overlay!=null&&(u.overlay=!!b.overlay,d<_.maxLines&&(u.depth=2*(_.maxLines-1-d%_.maxLines)/_.maxLines-1)),b.join!=null&&(u.join=b.join),b.hole!=null&&(u.hole=b.hole),b.fill!=null&&(u.fill=b.fill?g(b.fill,"uint8"):null),b.viewport!=null&&(u.viewport=n(b.viewport)),u.viewport||(u.viewport=n([E.drawingBufferWidth,E.drawingBufferHeight])),b.close!=null&&(u.close=b.close),b.positions===null&&(b.positions=[]),b.positions){let P,L;if(b.positions.x&&b.positions.y){let O=b.positions.x,I=b.positions.y;L=u.count=Math.max(O.length,I.length),P=new Float64Array(L*2);for(let N=0;Nse-he),W=[],Q=0,ue=u.hole!=null?u.hole[0]:null;if(ue!=null){let se=s(U,he=>he>=ue);U=U.slice(0,se),U.push(ue)}for(let se=0;seJ-ue+(U[se]-Q)),$=t(he,G);$=$.map(J=>J+Q+(J+Q{w.colorBuffer.destroy(),w.positionBuffer.destroy(),w.dashTexture.destroy()}),this.passes.length=0,this}}}),Yj=Ye({"node_modules/regl-error2d/index.js"(X,H){"use strict";var g=d0(),x=hg(),A=B5(),M=Ev(),e=Wf(),t=v0(),{float32:r,fract32:o}=vT();H.exports=i;var a=[[1,0,0,1,0,0],[1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,-1,0,0],[-1,0,0,1,0,0],[1,0,0,1,0,0],[1,0,-1,0,0,1],[1,0,-1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,-1],[1,0,1,0,0,1],[1,0,-1,0,0,1],[-1,0,-1,0,0,1],[-1,0,-1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,-1],[-1,0,1,0,0,1],[-1,0,-1,0,0,1],[0,1,1,0,0,0],[0,1,-1,0,0,0],[0,-1,-1,0,0,0],[0,-1,-1,0,0,0],[0,1,1,0,0,0],[0,-1,1,0,0,0],[0,1,0,-1,1,0],[0,1,0,-1,-1,0],[0,1,0,1,-1,0],[0,1,0,1,1,0],[0,1,0,-1,1,0],[0,1,0,1,-1,0],[0,-1,0,-1,1,0],[0,-1,0,-1,-1,0],[0,-1,0,1,-1,0],[0,-1,0,1,1,0],[0,-1,0,-1,1,0],[0,-1,0,1,-1,0]];function i(n,s){if(typeof n=="function"?(s||(s={}),s.regl=n):s=n,s.length&&(s.positions=s),n=s.regl,!n.hasExtension("ANGLE_instanced_arrays"))throw Error("regl-error2d: `ANGLE_instanced_arrays` extension should be enabled");let c=n._gl,h,v,p,T,l,_,w={color:"black",capSize:5,lineWidth:1,opacity:1,viewport:null,range:null,offset:0,count:0,bounds:null,positions:[],errors:[]},S=[];return T=n.buffer({usage:"dynamic",type:"uint8",data:new Uint8Array(0)}),v=n.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),p=n.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),l=n.buffer({usage:"dynamic",type:"float",data:new Uint8Array(0)}),_=n.buffer({usage:"static",type:"float",data:a}),d(s),h=n({vert:` + precision highp float; + + attribute vec2 position, positionFract; + attribute vec4 error; + attribute vec4 color; + + attribute vec2 direction, lineOffset, capOffset; + + uniform vec4 viewport; + uniform float lineWidth, capSize; + uniform vec2 scale, scaleFract, translate, translateFract; + + varying vec4 fragColor; + + void main() { + fragColor = color / 255.; + + vec2 pixelOffset = lineWidth * lineOffset + (capSize + lineWidth) * capOffset; + + vec2 dxy = -step(.5, direction.xy) * error.xz + step(direction.xy, vec2(-.5)) * error.yw; + + vec2 position = position + dxy; + + vec2 pos = (position + translate) * scale + + (positionFract + translateFract) * scale + + (position + translate) * scaleFract + + (positionFract + translateFract) * scaleFract; + + pos += pixelOffset / viewport.zw; + + gl_Position = vec4(pos * 2. - 1., 0, 1); + } + `,frag:` + precision highp float; + + varying vec4 fragColor; + + uniform float opacity; + + void main() { + gl_FragColor = fragColor; + gl_FragColor.a *= opacity; + } + `,uniforms:{range:n.prop("range"),lineWidth:n.prop("lineWidth"),capSize:n.prop("capSize"),opacity:n.prop("opacity"),scale:n.prop("scale"),translate:n.prop("translate"),scaleFract:n.prop("scaleFract"),translateFract:n.prop("translateFract"),viewport:(y,f)=>[f.viewport.x,f.viewport.y,y.viewportWidth,y.viewportHeight]},attributes:{color:{buffer:T,offset:(y,f)=>f.offset*4,divisor:1},position:{buffer:v,offset:(y,f)=>f.offset*8,divisor:1},positionFract:{buffer:p,offset:(y,f)=>f.offset*8,divisor:1},error:{buffer:l,offset:(y,f)=>f.offset*16,divisor:1},direction:{buffer:_,stride:24,offset:0},lineOffset:{buffer:_,stride:24,offset:8},capOffset:{buffer:_,stride:24,offset:16}},primitive:"triangles",blend:{enable:!0,color:[0,0,0,0],equation:{rgb:"add",alpha:"add"},func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},depth:{enable:!1},scissor:{enable:!0,box:n.prop("viewport")},viewport:n.prop("viewport"),stencil:!1,instances:n.prop("count"),count:a.length}),e(E,{update:d,draw:m,destroy:u,regl:n,gl:c,canvas:c.canvas,groups:S}),E;function E(y){y?d(y):y===null&&u(),m()}function m(y){if(typeof y=="number")return b(y);y&&!Array.isArray(y)&&(y=[y]),n._refresh(),S.forEach((f,P)=>{if(f){if(y&&(y[P]?f.draw=!0:f.draw=!1),!f.draw){f.draw=!0;return}b(P)}})}function b(y){typeof y=="number"&&(y=S[y]),y!=null&&y&&y.count&&y.color&&y.opacity&&y.positions&&y.positions.length>1&&(y.scaleRatio=[y.scale[0]*y.viewport.width,y.scale[1]*y.viewport.height],h(y),y.after&&y.after(y))}function d(y){if(!y)return;y.length!=null?typeof y[0]=="number"&&(y=[{positions:y}]):Array.isArray(y)||(y=[y]);let f=0,P=0;if(E.groups=S=y.map((F,B)=>{let O=S[B];if(F)typeof F=="function"?F={after:F}:typeof F[0]=="number"&&(F={positions:F});else return O;return F=M(F,{color:"color colors fill",capSize:"capSize cap capsize cap-size",lineWidth:"lineWidth line-width width line thickness",opacity:"opacity alpha",range:"range dataBox",viewport:"viewport viewBox",errors:"errors error",positions:"positions position data points"}),O||(S[B]=O={id:B,scale:null,translate:null,scaleFract:null,translateFract:null,draw:!0},F=e({},w,F)),A(O,F,[{lineWidth:I=>+I*.5,capSize:I=>+I*.5,opacity:parseFloat,errors:I=>(I=t(I),P+=I.length,I),positions:(I,N)=>(I=t(I,"float64"),N.count=Math.floor(I.length/2),N.bounds=g(I,2),N.offset=f,f+=N.count,I)},{color:(I,N)=>{let U=N.count;if(I||(I="transparent"),!Array.isArray(I)||typeof I[0]=="number"){let Q=I;I=Array(U);for(let ue=0;ue{let W=N.bounds;return I||(I=W),N.scale=[1/(I[2]-I[0]),1/(I[3]-I[1])],N.translate=[-I[0],-I[1]],N.scaleFract=o(N.scale),N.translateFract=o(N.translate),I},viewport:I=>{let N;return Array.isArray(I)?N={x:I[0],y:I[1],width:I[2]-I[0],height:I[3]-I[1]}:I?(N={x:I.x||I.left||0,y:I.y||I.top||0},I.right?N.width=I.right-N.x:N.width=I.w||I.width||0,I.bottom?N.height=I.bottom-N.y:N.height=I.h||I.height||0):N={x:0,y:0,width:c.drawingBufferWidth,height:c.drawingBufferHeight},N}}]),O}),f||P){let F=S.reduce((N,U,W)=>N+(U?U.count:0),0),B=new Float64Array(F*2),O=new Uint8Array(F*4),I=new Float32Array(F*4);S.forEach((N,U)=>{if(!N)return;let{positions:W,count:Q,offset:ue,color:se,errors:he}=N;Q&&(O.set(se,ue*4),I.set(he,ue*4),B.set(W,ue*2))});var L=r(B);v(L);var z=o(B,L);p(z),T(O),l(I)}}function u(){v.destroy(),p.destroy(),T.destroy(),l.destroy(),_.destroy()}}}}),Kj=Ye({"node_modules/unquote/index.js"(X,H){var g=/[\'\"]/;H.exports=function(A){return A?(g.test(A.charAt(0))&&(A=A.substr(1)),g.test(A.charAt(A.length-1))&&(A=A.substr(0,A.length-1)),A):""}}}),$5=Ye({"node_modules/css-global-keywords/index.json"(){}}),Q5=Ye({"node_modules/css-system-font-keywords/index.json"(){}}),ek=Ye({"node_modules/css-font-weight-keywords/index.json"(){}}),tk=Ye({"node_modules/css-font-style-keywords/index.json"(){}}),rk=Ye({"node_modules/css-font-stretch-keywords/index.json"(){}}),Jj=Ye({"node_modules/parenthesis/index.js"(X,H){"use strict";function g(M,e){if(typeof M!="string")return[M];var t=[M];typeof e=="string"||Array.isArray(e)?e={brackets:e}:e||(e={});var r=e.brackets?Array.isArray(e.brackets)?e.brackets:[e.brackets]:["{}","[]","()"],o=e.escape||"___",a=!!e.flat;r.forEach(function(s){var c=new RegExp(["\\",s[0],"[^\\",s[0],"\\",s[1],"]*\\",s[1]].join("")),h=[];function v(p,T,l){var _=t.push(p.slice(s[0].length,-s[1].length))-1;return h.push(_),o+_+o}t.forEach(function(p,T){for(var l,_=0;p!=l;)if(l=p,p=p.replace(c,v),_++>1e4)throw Error("References have circular dependency. Please, check them.");t[T]=p}),h=h.reverse(),t=t.map(function(p){return h.forEach(function(T){p=p.replace(new RegExp("(\\"+o+T+"\\"+o+")","g"),s[0]+"$1"+s[1])}),p})});var i=new RegExp("\\"+o+"([0-9]+)\\"+o);function n(s,c,h){for(var v=[],p,T=0;p=i.exec(s);){if(T++>1e4)throw Error("Circular references in parenthesis");v.push(s.slice(0,p.index)),v.push(n(c[p[1]],c)),s=s.slice(p.index+p[0].length)}return v.push(s),v}return a?t:n(t[0],t)}function x(M,e){if(e&&e.flat){var t=e&&e.escape||"___",r=M[0],o;if(!r)return"";for(var a=new RegExp("\\"+t+"([0-9]+)\\"+t),i=0;r!=o;){if(i++>1e4)throw Error("Circular references in "+M);o=r,r=r.replace(a,n)}return r}return M.reduce(function s(c,h){return Array.isArray(h)&&(h=h.reduce(s,"")),c+h},"");function n(s,c){if(M[c]==null)throw Error("Reference "+c+"is undefined");return M[c]}}function A(M,e){return Array.isArray(M)?x(M,e):g(M,e)}A.parse=g,A.stringify=x,H.exports=A}}),$j=Ye({"node_modules/string-split-by/index.js"(X,H){"use strict";var g=Jj();H.exports=function(A,M,e){if(A==null)throw Error("First argument should be a string");if(M==null)throw Error("Separator should be a string or a RegExp");e?(typeof e=="string"||Array.isArray(e))&&(e={ignore:e}):e={},e.escape==null&&(e.escape=!0),e.ignore==null?e.ignore=["[]","()","{}","<>",'""',"''","``","\u201C\u201D","\xAB\xBB"]:(typeof e.ignore=="string"&&(e.ignore=[e.ignore]),e.ignore=e.ignore.map(function(c){return c.length===1&&(c=c+c),c}));var t=g.parse(A,{flat:!0,brackets:e.ignore}),r=t[0],o=r.split(M);if(e.escape){for(var a=[],i=0;i1&&ra===Ta&&(ra==='"'||ra==="'"))return['"'+r(Qt.substr(1,Qt.length-2))+'"'];var si=/\[(false|true|null|\d+|'[^']*'|"[^"]*")\]/.exec(Qt);if(si)return o(Qt.substr(0,si.index)).concat(o(si[1])).concat(o(Qt.substr(si.index+si[0].length)));var wi=Qt.split(".");if(wi.length===1)return['"'+r(Qt)+'"'];for(var xi=[],bi=0;bi"u"?1:window.devicePixelRatio,Gi=!1,Io={},nn=function(ui){},on=function(){};if(typeof ra=="string"?Ta=document.querySelector(ra):typeof ra=="object"&&(_(ra)?Ta=ra:w(ra)?(xi=ra,wi=xi.canvas):("gl"in ra?xi=ra.gl:"canvas"in ra?wi=E(ra.canvas):"container"in ra&&(si=E(ra.container)),"attributes"in ra&&(bi=ra.attributes),"extensions"in ra&&(Fi=S(ra.extensions)),"optionalExtensions"in ra&&(cn=S(ra.optionalExtensions)),"onDone"in ra&&(nn=ra.onDone),"profile"in ra&&(Gi=!!ra.profile),"pixelRatio"in ra&&(fn=+ra.pixelRatio),"cachedCode"in ra&&(Io=ra.cachedCode))),Ta&&(Ta.nodeName.toLowerCase()==="canvas"?wi=Ta:si=Ta),!xi){if(!wi){var Oi=T(si||document.body,nn,fn);if(!Oi)return null;wi=Oi.canvas,on=Oi.onDestroy}bi.premultipliedAlpha===void 0&&(bi.premultipliedAlpha=!0),xi=l(wi,bi)}return xi?{gl:xi,canvas:wi,container:si,extensions:Fi,optionalExtensions:cn,pixelRatio:fn,profile:Gi,cachedCode:Io,onDone:nn,onDestroy:on}:(on(),nn("webgl not supported, try upgrading your browser or graphics drivers http://get.webgl.org"),null)}function b(Qt,ra){var Ta={};function si(bi){var Fi=bi.toLowerCase(),cn;try{cn=Ta[Fi]=Qt.getExtension(Fi)}catch{}return!!cn}for(var wi=0;wi65535)<<4,Qt>>>=ra,Ta=(Qt>255)<<3,Qt>>>=Ta,ra|=Ta,Ta=(Qt>15)<<2,Qt>>>=Ta,ra|=Ta,Ta=(Qt>3)<<1,Qt>>>=Ta,ra|=Ta,ra|Qt>>1}function I(){var Qt=d(8,function(){return[]});function ra(xi){var bi=B(xi),Fi=Qt[O(bi)>>2];return Fi.length>0?Fi.pop():new ArrayBuffer(bi)}function Ta(xi){Qt[O(xi.byteLength)>>2].push(xi)}function si(xi,bi){var Fi=null;switch(xi){case u:Fi=new Int8Array(ra(bi),0,bi);break;case y:Fi=new Uint8Array(ra(bi),0,bi);break;case f:Fi=new Int16Array(ra(2*bi),0,bi);break;case P:Fi=new Uint16Array(ra(2*bi),0,bi);break;case L:Fi=new Int32Array(ra(4*bi),0,bi);break;case z:Fi=new Uint32Array(ra(4*bi),0,bi);break;case F:Fi=new Float32Array(ra(4*bi),0,bi);break;default:return null}return Fi.length!==bi?Fi.subarray(0,bi):Fi}function wi(xi){Ta(xi.buffer)}return{alloc:ra,free:Ta,allocType:si,freeType:wi}}var N=I();N.zero=I();var U=3408,W=3410,Q=3411,ue=3412,se=3413,he=3414,G=3415,$=33901,J=33902,Z=3379,re=3386,ne=34921,j=36347,ee=36348,ie=35661,fe=35660,be=34930,Ae=36349,Be=34076,Ie=34024,Ze=7936,at=7937,it=7938,et=35724,lt=34047,Me=36063,ge=34852,ce=3553,ze=34067,tt=34069,nt=33984,Qe=6408,Ct=5126,St=5121,Ot=36160,jt=36053,ur=36064,ar=16384,Cr=function(Qt,ra){var Ta=1;ra.ext_texture_filter_anisotropic&&(Ta=Qt.getParameter(lt));var si=1,wi=1;ra.webgl_draw_buffers&&(si=Qt.getParameter(ge),wi=Qt.getParameter(Me));var xi=!!ra.oes_texture_float;if(xi){var bi=Qt.createTexture();Qt.bindTexture(ce,bi),Qt.texImage2D(ce,0,Qe,1,1,0,Qe,Ct,null);var Fi=Qt.createFramebuffer();if(Qt.bindFramebuffer(Ot,Fi),Qt.framebufferTexture2D(Ot,ur,ce,bi,0),Qt.bindTexture(ce,null),Qt.checkFramebufferStatus(Ot)!==jt)xi=!1;else{Qt.viewport(0,0,1,1),Qt.clearColor(1,0,0,1),Qt.clear(ar);var cn=N.allocType(Ct,4);Qt.readPixels(0,0,1,1,Qe,Ct,cn),Qt.getError()?xi=!1:(Qt.deleteFramebuffer(Fi),Qt.deleteTexture(bi),xi=cn[0]===1),N.freeType(cn)}}var fn=typeof navigator<"u"&&(/MSIE/.test(navigator.userAgent)||/Trident\//.test(navigator.appVersion)||/Edge/.test(navigator.userAgent)),Gi=!0;if(!fn){var Io=Qt.createTexture(),nn=N.allocType(St,36);Qt.activeTexture(nt),Qt.bindTexture(ze,Io),Qt.texImage2D(tt,0,Qe,3,3,0,Qe,St,nn),N.freeType(nn),Qt.bindTexture(ze,null),Qt.deleteTexture(Io),Gi=!Qt.getError()}return{colorBits:[Qt.getParameter(W),Qt.getParameter(Q),Qt.getParameter(ue),Qt.getParameter(se)],depthBits:Qt.getParameter(he),stencilBits:Qt.getParameter(G),subpixelBits:Qt.getParameter(U),extensions:Object.keys(ra).filter(function(on){return!!ra[on]}),maxAnisotropic:Ta,maxDrawbuffers:si,maxColorAttachments:wi,pointSizeDims:Qt.getParameter($),lineWidthDims:Qt.getParameter(J),maxViewportDims:Qt.getParameter(re),maxCombinedTextureUnits:Qt.getParameter(ie),maxCubeMapSize:Qt.getParameter(Be),maxRenderbufferSize:Qt.getParameter(Ie),maxTextureUnits:Qt.getParameter(be),maxTextureSize:Qt.getParameter(Z),maxAttributes:Qt.getParameter(ne),maxVertexUniforms:Qt.getParameter(j),maxVertexTextureUnits:Qt.getParameter(fe),maxVaryingVectors:Qt.getParameter(ee),maxFragmentUniforms:Qt.getParameter(Ae),glsl:Qt.getParameter(et),renderer:Qt.getParameter(at),vendor:Qt.getParameter(Ze),version:Qt.getParameter(it),readFloat:xi,npotTextureCube:Gi}},vr=function(Qt){return Qt instanceof Uint8Array||Qt instanceof Uint16Array||Qt instanceof Uint32Array||Qt instanceof Int8Array||Qt instanceof Int16Array||Qt instanceof Int32Array||Qt instanceof Float32Array||Qt instanceof Float64Array||Qt instanceof Uint8ClampedArray};function _r(Qt){return!!Qt&&typeof Qt=="object"&&Array.isArray(Qt.shape)&&Array.isArray(Qt.stride)&&typeof Qt.offset=="number"&&Qt.shape.length===Qt.stride.length&&(Array.isArray(Qt.data)||vr(Qt.data))}var yt=function(Qt){return Object.keys(Qt).map(function(ra){return Qt[ra]})},Fe={shape:Te,flatten:ke};function Ke(Qt,ra,Ta){for(var si=0;si0){var _o;if(Array.isArray(Mi[0])){bn=Ma(Mi);for(var Zi=1,Ui=1;Ui0){if(typeof Zi[0]=="number"){var xn=N.allocType(qi.dtype,Zi.length);xr(xn,Zi),bn(xn,Zn),N.freeType(xn)}else if(Array.isArray(Zi[0])||vr(Zi[0])){Rn=Ma(Zi);var dn=Ga(Zi,Rn,qi.dtype);bn(dn,Zn),N.freeType(dn)}}}else if(_r(Zi)){Rn=Zi.shape;var jn=Zi.stride,Ro=0,rs=0,wn=0,oo=0;Rn.length===1?(Ro=Rn[0],rs=1,wn=jn[0],oo=0):Rn.length===2&&(Ro=Rn[0],rs=Rn[1],wn=jn[0],oo=jn[1]);var Xo=Array.isArray(Zi.data)?qi.dtype:Ut(Zi.data),os=N.allocType(Xo,Ro*rs);Zr(os,Zi.data,Ro,rs,wn,oo,Zi.offset),bn(os,Zn),N.freeType(os)}return Dn}return tn||Dn(ui),Dn._reglType="buffer",Dn._buffer=qi,Dn.subdata=_o,Ta.profile&&(Dn.stats=qi.stats),Dn.destroy=function(){nn(qi)},Dn}function Oi(){yt(xi).forEach(function(ui){ui.buffer=Qt.createBuffer(),Qt.bindBuffer(ui.type,ui.buffer),Qt.bufferData(ui.type,ui.persistentData||ui.byteLength,ui.usage)})}return Ta.profile&&(ra.getTotalBufferSize=function(){var ui=0;return Object.keys(xi).forEach(function(Mi){ui+=xi[Mi].stats.size}),ui}),{create:on,createStream:cn,destroyStream:fn,clear:function(){yt(xi).forEach(nn),Fi.forEach(nn)},getBuffer:function(ui){return ui&&ui._buffer instanceof bi?ui._buffer:null},restore:Oi,_initBuffer:Io}}var Xr=0,Ea=0,Fa=1,qa=1,ya=4,$a=4,mt={points:Xr,point:Ea,lines:Fa,line:qa,triangles:ya,triangle:$a,"line loop":2,"line strip":3,"triangle strip":5,"triangle fan":6},gt=0,Er=1,kr=4,br=5120,Tr=5121,Mr=5122,Fr=5123,Lr=5124,Jr=5125,oa=34963,ca=35040,kt=35044;function ir(Qt,ra,Ta,si){var wi={},xi=0,bi={uint8:Tr,uint16:Fr};ra.oes_element_index_uint&&(bi.uint32=Jr);function Fi(Oi){this.id=xi++,wi[this.id]=this,this.buffer=Oi,this.primType=kr,this.vertCount=0,this.type=0}Fi.prototype.bind=function(){this.buffer.bind()};var cn=[];function fn(Oi){var ui=cn.pop();return ui||(ui=new Fi(Ta.create(null,oa,!0,!1)._buffer)),Io(ui,Oi,ca,-1,-1,0,0),ui}function Gi(Oi){cn.push(Oi)}function Io(Oi,ui,Mi,tn,pn,qi,Dn){Oi.buffer.bind();var bn;if(ui){var _o=Dn;!Dn&&(!vr(ui)||_r(ui)&&!vr(ui.data))&&(_o=ra.oes_element_index_uint?Jr:Fr),Ta._initBuffer(Oi.buffer,ui,Mi,_o,3)}else Qt.bufferData(oa,qi,Mi),Oi.buffer.dtype=bn||Tr,Oi.buffer.usage=Mi,Oi.buffer.dimension=3,Oi.buffer.byteLength=qi;if(bn=Dn,!Dn){switch(Oi.buffer.dtype){case Tr:case br:bn=Tr;break;case Fr:case Mr:bn=Fr;break;case Jr:case Lr:bn=Jr;break;default:}Oi.buffer.dtype=bn}Oi.type=bn;var Zi=pn;Zi<0&&(Zi=Oi.buffer.byteLength,bn===Fr?Zi>>=1:bn===Jr&&(Zi>>=2)),Oi.vertCount=Zi;var Ui=tn;if(tn<0){Ui=kr;var Zn=Oi.buffer.dimension;Zn===1&&(Ui=gt),Zn===2&&(Ui=Er),Zn===3&&(Ui=kr)}Oi.primType=Ui}function nn(Oi){si.elementsCount--,delete wi[Oi.id],Oi.buffer.destroy(),Oi.buffer=null}function on(Oi,ui){var Mi=Ta.create(null,oa,!0),tn=new Fi(Mi._buffer);si.elementsCount++;function pn(qi){if(!qi)Mi(),tn.primType=kr,tn.vertCount=0,tn.type=Tr;else if(typeof qi=="number")Mi(qi),tn.primType=kr,tn.vertCount=qi|0,tn.type=Tr;else{var Dn=null,bn=kt,_o=-1,Zi=-1,Ui=0,Zn=0;Array.isArray(qi)||vr(qi)||_r(qi)?Dn=qi:("data"in qi&&(Dn=qi.data),"usage"in qi&&(bn=ka[qi.usage]),"primitive"in qi&&(_o=mt[qi.primitive]),"count"in qi&&(Zi=qi.count|0),"type"in qi&&(Zn=bi[qi.type]),"length"in qi?Ui=qi.length|0:(Ui=Zi,Zn===Fr||Zn===Mr?Ui*=2:(Zn===Jr||Zn===Lr)&&(Ui*=4))),Io(tn,Dn,bn,_o,Zi,Ui,Zn)}return pn}return pn(Oi),pn._reglType="elements",pn._elements=tn,pn.subdata=function(qi,Dn){return Mi.subdata(qi,Dn),pn},pn.destroy=function(){nn(tn)},pn}return{create:on,createStream:fn,destroyStream:Gi,getElements:function(Oi){return typeof Oi=="function"&&Oi._elements instanceof Fi?Oi._elements:null},clear:function(){yt(wi).forEach(nn)}}}var mr=new Float32Array(1),$r=new Uint32Array(mr.buffer),ma=5123;function Ba(Qt){for(var ra=N.allocType(ma,Qt.length),Ta=0;Ta>>31<<15,xi=(si<<1>>>24)-127,bi=si>>13&1023;if(xi<-24)ra[Ta]=wi;else if(xi<-14){var Fi=-14-xi;ra[Ta]=wi+(bi+1024>>Fi)}else xi>15?ra[Ta]=wi+31744:ra[Ta]=wi+(xi+15<<10)+bi}return ra}function Ca(Qt){return Array.isArray(Qt)||vr(Qt)}var da=34467,Sa=3553,Ti=34067,ai=34069,an=6408,sn=6406,Mn=6407,On=6409,$n=6410,Cn=32854,Lo=32855,Xi=36194,Jo=32819,zo=32820,as=33635,Pn=34042,go=6402,In=34041,Do=35904,Ho=35906,Qo=36193,Xn=33776,po=33777,ys=33778,Is=33779,Fs=35986,$o=35987,fi=34798,mn=35840,ol=35841,Os=35842,so=35843,Ns=36196,fs=5121,al=5123,vl=5125,ji=5126,To=10242,Yn=10243,_s=10497,Yo=33071,Nn=33648,Wl=10240,Zu=10241,ml=9728,Bu=9729,El=9984,qs=9985,Jl=9986,Nu=9987,Ic=33170,Xu=4352,Th=4353,bf=4354,Rs=34046,Yc=3317,If=37440,Zl=37441,yl=37443,oc=37444,_c=33984,Zs=[El,Jl,qs,Nu],_l=[0,On,$n,Mn,an],Bs={};Bs[On]=Bs[sn]=Bs[go]=1,Bs[In]=Bs[$n]=2,Bs[Mn]=Bs[Do]=3,Bs[an]=Bs[Ho]=4;function $s(Qt){return"[object "+Qt+"]"}var sc=$s("HTMLCanvasElement"),zl=$s("OffscreenCanvas"),Yu=$s("CanvasRenderingContext2D"),Qs=$s("ImageBitmap"),fp=$s("HTMLImageElement"),es=$s("HTMLVideoElement"),Wh=Object.keys(Le).concat([sc,zl,Yu,Qs,fp,es]),Ss=[];Ss[fs]=1,Ss[ji]=4,Ss[Qo]=2,Ss[al]=2,Ss[vl]=4;var So=[];So[Cn]=2,So[Lo]=2,So[Xi]=2,So[In]=4,So[Xn]=.5,So[po]=.5,So[ys]=1,So[Is]=1,So[Fs]=.5,So[$o]=1,So[fi]=1,So[mn]=.5,So[ol]=.25,So[Os]=.5,So[so]=.25,So[Ns]=.5;function hf(Qt){return Array.isArray(Qt)&&(Qt.length===0||typeof Qt[0]=="number")}function Ku(Qt){if(!Array.isArray(Qt))return!1;var ra=Qt.length;return!(ra===0||!Ca(Qt[0]))}function cu(Qt){return Object.prototype.toString.call(Qt)}function Zf(Qt){return cu(Qt)===sc}function Rc(Qt){return cu(Qt)===zl}function pf(Qt){return cu(Qt)===Yu}function Fl(Qt){return cu(Qt)===Qs}function lh(Qt){return cu(Qt)===fp}function Xf(Qt){return cu(Qt)===es}function Rf(Qt){if(!Qt)return!1;var ra=cu(Qt);return Wh.indexOf(ra)>=0?!0:hf(Qt)||Ku(Qt)||_r(Qt)}function Kc(Qt){return Le[Object.prototype.toString.call(Qt)]|0}function Yf(Qt,ra){var Ta=ra.length;switch(Qt.type){case fs:case al:case vl:case ji:var si=N.allocType(Qt.type,Ta);si.set(ra),Qt.data=si;break;case Qo:Qt.data=Ba(ra);break;default:}}function uh(Qt,ra){return N.allocType(Qt.type===Qo?ji:Qt.type,ra)}function Ju(Qt,ra){Qt.type===Qo?(Qt.data=Ba(ra),N.freeType(ra)):Qt.data=ra}function Df(Qt,ra,Ta,si,wi,xi){for(var bi=Qt.width,Fi=Qt.height,cn=Qt.channels,fn=bi*Fi*cn,Gi=uh(Qt,fn),Io=0,nn=0;nn=1;)Fi+=bi*cn*cn,cn/=2;return Fi}else return bi*Ta*si}function Jc(Qt,ra,Ta,si,wi,xi,bi){var Fi={"don't care":Xu,"dont care":Xu,nice:bf,fast:Th},cn={repeat:_s,clamp:Yo,mirror:Nn},fn={nearest:ml,linear:Bu},Gi=g({mipmap:Nu,"nearest mipmap nearest":El,"linear mipmap nearest":qs,"nearest mipmap linear":Jl,"linear mipmap linear":Nu},fn),Io={none:0,browser:oc},nn={uint8:fs,rgba4:Jo,rgb565:as,"rgb5 a1":zo},on={alpha:sn,luminance:On,"luminance alpha":$n,rgb:Mn,rgba:an,rgba4:Cn,"rgb5 a1":Lo,rgb565:Xi},Oi={};ra.ext_srgb&&(on.srgb=Do,on.srgba=Ho),ra.oes_texture_float&&(nn.float32=nn.float=ji),ra.oes_texture_half_float&&(nn.float16=nn["half float"]=Qo),ra.webgl_depth_texture&&(g(on,{depth:go,"depth stencil":In}),g(nn,{uint16:al,uint32:vl,"depth stencil":Pn})),ra.webgl_compressed_texture_s3tc&&g(Oi,{"rgb s3tc dxt1":Xn,"rgba s3tc dxt1":po,"rgba s3tc dxt3":ys,"rgba s3tc dxt5":Is}),ra.webgl_compressed_texture_atc&&g(Oi,{"rgb atc":Fs,"rgba atc explicit alpha":$o,"rgba atc interpolated alpha":fi}),ra.webgl_compressed_texture_pvrtc&&g(Oi,{"rgb pvrtc 4bppv1":mn,"rgb pvrtc 2bppv1":ol,"rgba pvrtc 4bppv1":Os,"rgba pvrtc 2bppv1":so}),ra.webgl_compressed_texture_etc1&&(Oi["rgb etc1"]=Ns);var ui=Array.prototype.slice.call(Qt.getParameter(da));Object.keys(Oi).forEach(function(He){var st=Oi[He];ui.indexOf(st)>=0&&(on[He]=st)});var Mi=Object.keys(on);Ta.textureFormats=Mi;var tn=[];Object.keys(on).forEach(function(He){var st=on[He];tn[st]=He});var pn=[];Object.keys(nn).forEach(function(He){var st=nn[He];pn[st]=He});var qi=[];Object.keys(fn).forEach(function(He){var st=fn[He];qi[st]=He});var Dn=[];Object.keys(Gi).forEach(function(He){var st=Gi[He];Dn[st]=He});var bn=[];Object.keys(cn).forEach(function(He){var st=cn[He];bn[st]=He});var _o=Mi.reduce(function(He,st){var Et=on[st];return Et===On||Et===sn||Et===On||Et===$n||Et===go||Et===In||ra.ext_srgb&&(Et===Do||Et===Ho)?He[Et]=Et:Et===Lo||st.indexOf("rgba")>=0?He[Et]=an:He[Et]=Mn,He},{});function Zi(){this.internalformat=an,this.format=an,this.type=fs,this.compressed=!1,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.colorSpace=oc,this.width=0,this.height=0,this.channels=0}function Ui(He,st){He.internalformat=st.internalformat,He.format=st.format,He.type=st.type,He.compressed=st.compressed,He.premultiplyAlpha=st.premultiplyAlpha,He.flipY=st.flipY,He.unpackAlignment=st.unpackAlignment,He.colorSpace=st.colorSpace,He.width=st.width,He.height=st.height,He.channels=st.channels}function Zn(He,st){if(!(typeof st!="object"||!st)){if("premultiplyAlpha"in st&&(He.premultiplyAlpha=st.premultiplyAlpha),"flipY"in st&&(He.flipY=st.flipY),"alignment"in st&&(He.unpackAlignment=st.alignment),"colorSpace"in st&&(He.colorSpace=Io[st.colorSpace]),"type"in st){var Et=st.type;He.type=nn[Et]}var Ht=He.width,yr=He.height,Ir=He.channels,wr=!1;"shape"in st?(Ht=st.shape[0],yr=st.shape[1],st.shape.length===3&&(Ir=st.shape[2],wr=!0)):("radius"in st&&(Ht=yr=st.radius),"width"in st&&(Ht=st.width),"height"in st&&(yr=st.height),"channels"in st&&(Ir=st.channels,wr=!0)),He.width=Ht|0,He.height=yr|0,He.channels=Ir|0;var qt=!1;if("format"in st){var tr=st.format,dr=He.internalformat=on[tr];He.format=_o[dr],tr in nn&&("type"in st||(He.type=nn[tr])),tr in Oi&&(He.compressed=!0),qt=!0}!wr&&qt?He.channels=Bs[He.format]:wr&&!qt&&He.channels!==_l[He.format]&&(He.format=He.internalformat=_l[He.channels])}}function Rn(He){Qt.pixelStorei(If,He.flipY),Qt.pixelStorei(Zl,He.premultiplyAlpha),Qt.pixelStorei(yl,He.colorSpace),Qt.pixelStorei(Yc,He.unpackAlignment)}function xn(){Zi.call(this),this.xOffset=0,this.yOffset=0,this.data=null,this.needsFree=!1,this.element=null,this.needsCopy=!1}function dn(He,st){var Et=null;if(Rf(st)?Et=st:st&&(Zn(He,st),"x"in st&&(He.xOffset=st.x|0),"y"in st&&(He.yOffset=st.y|0),Rf(st.data)&&(Et=st.data)),st.copy){var Ht=wi.viewportWidth,yr=wi.viewportHeight;He.width=He.width||Ht-He.xOffset,He.height=He.height||yr-He.yOffset,He.needsCopy=!0}else if(!Et)He.width=He.width||1,He.height=He.height||1,He.channels=He.channels||4;else if(vr(Et))He.channels=He.channels||4,He.data=Et,!("type"in st)&&He.type===fs&&(He.type=Kc(Et));else if(hf(Et))He.channels=He.channels||4,Yf(He,Et),He.alignment=1,He.needsFree=!0;else if(_r(Et)){var Ir=Et.data;!Array.isArray(Ir)&&He.type===fs&&(He.type=Kc(Ir));var wr=Et.shape,qt=Et.stride,tr,dr,Pr,Vr,Hr,aa;wr.length===3?(Pr=wr[2],aa=qt[2]):(Pr=1,aa=1),tr=wr[0],dr=wr[1],Vr=qt[0],Hr=qt[1],He.alignment=1,He.width=tr,He.height=dr,He.channels=Pr,He.format=He.internalformat=_l[Pr],He.needsFree=!0,Df(He,Ir,Vr,Hr,aa,Et.offset)}else if(Zf(Et)||Rc(Et)||pf(Et))Zf(Et)||Rc(Et)?He.element=Et:He.element=Et.canvas,He.width=He.element.width,He.height=He.element.height,He.channels=4;else if(Fl(Et))He.element=Et,He.width=Et.width,He.height=Et.height,He.channels=4;else if(lh(Et))He.element=Et,He.width=Et.naturalWidth,He.height=Et.naturalHeight,He.channels=4;else if(Xf(Et))He.element=Et,He.width=Et.videoWidth,He.height=Et.videoHeight,He.channels=4;else if(Ku(Et)){var Qr=He.width||Et[0].length,Gr=He.height||Et.length,ia=He.channels;Ca(Et[0][0])?ia=ia||Et[0][0].length:ia=ia||1;for(var Ur=Fe.shape(Et),wa=1,Oa=0;Oa>=yr,Et.height>>=yr,dn(Et,Ht[yr]),He.mipmask|=1<=0&&!("faces"in st)&&(He.genMipmaps=!0)}if("mag"in st){var Ht=st.mag;He.magFilter=fn[Ht]}var yr=He.wrapS,Ir=He.wrapT;if("wrap"in st){var wr=st.wrap;typeof wr=="string"?yr=Ir=cn[wr]:Array.isArray(wr)&&(yr=cn[wr[0]],Ir=cn[wr[1]])}else{if("wrapS"in st){var qt=st.wrapS;yr=cn[qt]}if("wrapT"in st){var tr=st.wrapT;Ir=cn[tr]}}if(He.wrapS=yr,He.wrapT=Ir,"anisotropic"in st){var dr=st.anisotropic;He.anisotropic=st.anisotropic}if("mipmap"in st){var Pr=!1;switch(typeof st.mipmap){case"string":He.mipmapHint=Fi[st.mipmap],He.genMipmaps=!0,Pr=!0;break;case"boolean":Pr=He.genMipmaps=st.mipmap;break;case"object":He.genMipmaps=!1,Pr=!0;break;default:}Pr&&!("min"in st)&&(He.minFilter=El)}}function mc(He,st){Qt.texParameteri(st,Zu,He.minFilter),Qt.texParameteri(st,Wl,He.magFilter),Qt.texParameteri(st,To,He.wrapS),Qt.texParameteri(st,Yn,He.wrapT),ra.ext_texture_filter_anisotropic&&Qt.texParameteri(st,Rs,He.anisotropic),He.genMipmaps&&(Qt.hint(Ic,He.mipmapHint),Qt.generateMipmap(st))}var rf=0,Yl={},Mc=Ta.maxTextureUnits,Vc=Array(Mc).map(function(){return null});function Ds(He){Zi.call(this),this.mipmask=0,this.internalformat=an,this.id=rf++,this.refCount=1,this.target=He,this.texture=Qt.createTexture(),this.unit=-1,this.bindCount=0,this.texInfo=new Ol,bi.profile&&(this.stats={size:0})}function af(He){Qt.activeTexture(_c),Qt.bindTexture(He.target,He.texture)}function Cs(){var He=Vc[0];He?Qt.bindTexture(He.target,He.texture):Qt.bindTexture(Sa,null)}function ve(He){var st=He.texture,Et=He.unit,Ht=He.target;Et>=0&&(Qt.activeTexture(_c+Et),Qt.bindTexture(Ht,null),Vc[Et]=null),Qt.deleteTexture(st),He.texture=null,He.params=null,He.pixels=null,He.refCount=0,delete Yl[He.id],xi.textureCount--}g(Ds.prototype,{bind:function(){var He=this;He.bindCount+=1;var st=He.unit;if(st<0){for(var Et=0;Et0)continue;Ht.unit=-1}Vc[Et]=He,st=Et;break}st>=Mc,bi.profile&&xi.maxTextureUnits>Hr)-Pr,aa.height=aa.height||(Et.height>>Hr)-Vr,af(Et),Ro(aa,Sa,Pr,Vr,Hr),Cs(),oo(aa),Ht}function Ir(wr,qt){var tr=wr|0,dr=qt|0||tr;if(tr===Et.width&&dr===Et.height)return Ht;Ht.width=Et.width=tr,Ht.height=Et.height=dr,af(Et);for(var Pr=0;Et.mipmask>>Pr;++Pr){var Vr=tr>>Pr,Hr=dr>>Pr;if(!Vr||!Hr)break;Qt.texImage2D(Sa,Pr,Et.format,Vr,Hr,0,Et.format,Et.type,null)}return Cs(),bi.profile&&(Et.stats.size=Dc(Et.internalformat,Et.type,tr,dr,!1,!1)),Ht}return Ht(He,st),Ht.subimage=yr,Ht.resize=Ir,Ht._reglType="texture2d",Ht._texture=Et,bi.profile&&(Ht.stats=Et.stats),Ht.destroy=function(){Et.decRef()},Ht}function ye(He,st,Et,Ht,yr,Ir){var wr=new Ds(Ti);Yl[wr.id]=wr,xi.cubeCount++;var qt=new Array(6);function tr(Vr,Hr,aa,Qr,Gr,ia){var Ur,wa=wr.texInfo;for(Ol.call(wa),Ur=0;Ur<6;++Ur)qt[Ur]=Ws();if(typeof Vr=="number"||!Vr){var Oa=Vr|0||1;for(Ur=0;Ur<6;++Ur)os(qt[Ur],Oa,Oa)}else if(typeof Vr=="object")if(Hr)As(qt[0],Vr),As(qt[1],Hr),As(qt[2],aa),As(qt[3],Qr),As(qt[4],Gr),As(qt[5],ia);else if(vc(wa,Vr),Zn(wr,Vr),"faces"in Vr){var ri=Vr.faces;for(Ur=0;Ur<6;++Ur)Ui(qt[Ur],wr),As(qt[Ur],ri[Ur])}else for(Ur=0;Ur<6;++Ur)As(qt[Ur],Vr);for(Ui(wr,qt[0]),wa.genMipmaps?wr.mipmask=(qt[0].width<<1)-1:wr.mipmask=qt[0].mipmask,wr.internalformat=qt[0].internalformat,tr.width=qt[0].width,tr.height=qt[0].height,af(wr),Ur=0;Ur<6;++Ur)$l(qt[Ur],ai+Ur);for(mc(wa,Ti),Cs(),bi.profile&&(wr.stats.size=Dc(wr.internalformat,wr.type,tr.width,tr.height,wa.genMipmaps,!0)),tr.format=tn[wr.internalformat],tr.type=pn[wr.type],tr.mag=qi[wa.magFilter],tr.min=Dn[wa.minFilter],tr.wrapS=bn[wa.wrapS],tr.wrapT=bn[wa.wrapT],Ur=0;Ur<6;++Ur)jc(qt[Ur]);return tr}function dr(Vr,Hr,aa,Qr,Gr){var ia=aa|0,Ur=Qr|0,wa=Gr|0,Oa=wn();return Ui(Oa,wr),Oa.width=0,Oa.height=0,dn(Oa,Hr),Oa.width=Oa.width||(wr.width>>wa)-ia,Oa.height=Oa.height||(wr.height>>wa)-Ur,af(wr),Ro(Oa,ai+Vr,ia,Ur,wa),Cs(),oo(Oa),tr}function Pr(Vr){var Hr=Vr|0;if(Hr!==wr.width){tr.width=wr.width=Hr,tr.height=wr.height=Hr,af(wr);for(var aa=0;aa<6;++aa)for(var Qr=0;wr.mipmask>>Qr;++Qr)Qt.texImage2D(ai+aa,Qr,wr.format,Hr>>Qr,Hr>>Qr,0,wr.format,wr.type,null);return Cs(),bi.profile&&(wr.stats.size=Dc(wr.internalformat,wr.type,tr.width,tr.height,!1,!0)),tr}}return tr(He,st,Et,Ht,yr,Ir),tr.subimage=dr,tr.resize=Pr,tr._reglType="textureCube",tr._texture=wr,bi.profile&&(tr.stats=wr.stats),tr.destroy=function(){wr.decRef()},tr}function te(){for(var He=0;He>Ht,Et.height>>Ht,0,Et.internalformat,Et.type,null);else for(var yr=0;yr<6;++yr)Qt.texImage2D(ai+yr,Ht,Et.internalformat,Et.width>>Ht,Et.height>>Ht,0,Et.internalformat,Et.type,null);mc(Et.texInfo,Et.target)})}function We(){for(var He=0;He=0?jc=!0:cn.indexOf(Ol)>=0&&(jc=!1))),("depthTexture"in Ds||"depthStencilTexture"in Ds)&&(Vc=!!(Ds.depthTexture||Ds.depthStencilTexture)),"depth"in Ds&&(typeof Ds.depth=="boolean"?$l=Ds.depth:(rf=Ds.depth,Uc=!1)),"stencil"in Ds&&(typeof Ds.stencil=="boolean"?Uc=Ds.stencil:(Yl=Ds.stencil,$l=!1)),"depthStencil"in Ds&&(typeof Ds.depthStencil=="boolean"?$l=Uc=Ds.depthStencil:(Mc=Ds.depthStencil,$l=!1,Uc=!1))}var Cs=null,ve=null,K=null,ye=null;if(Array.isArray(Ws))Cs=Ws.map(Oi);else if(Ws)Cs=[Oi(Ws)];else for(Cs=new Array(mc),Xo=0;Xo0&&(oo.depth=dn[0].depth,oo.stencil=dn[0].stencil,oo.depthStencil=dn[0].depthStencil),dn[wn]?dn[wn](oo):dn[wn]=Ui(oo)}return g(jn,{width:Xo,height:Xo,color:Ol})}function Ro(rs){var wn,oo=rs|0;if(oo===jn.width)return jn;var Xo=jn.color;for(wn=0;wn=Xo.byteLength?os.subdata(Xo):(os.destroy(),Ui.buffers[rs]=null)),Ui.buffers[rs]||(os=Ui.buffers[rs]=wi.create(wn,Ff,!1,!0)),oo.buffer=wi.getBuffer(os),oo.size=oo.buffer.dimension|0,oo.normalized=!1,oo.type=oo.buffer.dtype,oo.offset=0,oo.stride=0,oo.divisor=0,oo.state=1,jn[rs]=1}else wi.getBuffer(wn)?(oo.buffer=wi.getBuffer(wn),oo.size=oo.buffer.dimension|0,oo.normalized=!1,oo.type=oo.buffer.dtype,oo.offset=0,oo.stride=0,oo.divisor=0,oo.state=1):wi.getBuffer(wn.buffer)?(oo.buffer=wi.getBuffer(wn.buffer),oo.size=(+wn.size||oo.buffer.dimension)|0,oo.normalized=!!wn.normalized||!1,"type"in wn?oo.type=sa[wn.type]:oo.type=oo.buffer.dtype,oo.offset=(wn.offset||0)|0,oo.stride=(wn.stride||0)|0,oo.divisor=(wn.divisor||0)|0,oo.state=1):"x"in wn&&(oo.x=+wn.x||0,oo.y=+wn.y||0,oo.z=+wn.z||0,oo.w=+wn.w||0,oo.state=2)}for(var As=0;As1)for(var Rn=0;Rnui&&(ui=Mi.stats.uniformsCount)}),ui},Ta.getMaxAttributesCount=function(){var ui=0;return Gi.forEach(function(Mi){Mi.stats.attributesCount>ui&&(ui=Mi.stats.attributesCount)}),ui});function Oi(){wi={},xi={};for(var ui=0;ui16&&(Ta=li(Ta,Qt.length*8));for(var si=Array(16),wi=Array(16),xi=0;xi<16;xi++)si[xi]=Ta[xi]^909522486,wi[xi]=Ta[xi]^1549556828;var bi=li(si.concat(ef(ra)),512+ra.length*8);return Zt(li(wi.concat(bi),768))}function iu(Qt){for(var ra=Qf?"0123456789ABCDEF":"0123456789abcdef",Ta="",si,wi=0;wi>>4&15)+ra.charAt(si&15);return Ta}function fc(Qt){for(var ra="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ta="",si=Qt.length,wi=0;wiQt.length*8?Ta+=Vu:Ta+=ra.charAt(xi>>>6*(3-bi)&63);return Ta}function Oc(Qt,ra){var Ta=ra.length,si=Array(),wi,xi,bi,Fi,cn=Array(Math.ceil(Qt.length/2));for(wi=0;wi0;){for(Fi=Array(),bi=0,wi=0;wi0||xi>0)&&(Fi[Fi.length]=xi);si[si.length]=bi,cn=Fi}var fn="";for(wi=si.length-1;wi>=0;wi--)fn+=ra.charAt(si[wi]);var Gi=Math.ceil(Qt.length*8/(Math.log(ra.length)/Math.log(2)));for(wi=fn.length;wi>>6&31,128|si&63):si<=65535?ra+=String.fromCharCode(224|si>>>12&15,128|si>>>6&63,128|si&63):si<=2097151&&(ra+=String.fromCharCode(240|si>>>18&7,128|si>>>12&63,128|si>>>6&63,128|si&63));return ra}function ef(Qt){for(var ra=Array(Qt.length>>2),Ta=0;Ta>5]|=(Qt.charCodeAt(Ta/8)&255)<<24-Ta%32;return ra}function Zt(Qt){for(var ra="",Ta=0;Ta>5]>>>24-Ta%32&255);return ra}function fr(Qt,ra){return Qt>>>ra|Qt<<32-ra}function Yr(Qt,ra){return Qt>>>ra}function qr(Qt,ra,Ta){return Qt&ra^~Qt&Ta}function ba(Qt,ra,Ta){return Qt&ra^Qt&Ta^ra&Ta}function Ka(Qt){return fr(Qt,2)^fr(Qt,13)^fr(Qt,22)}function oi(Qt){return fr(Qt,6)^fr(Qt,11)^fr(Qt,25)}function yi(Qt){return fr(Qt,7)^fr(Qt,18)^Yr(Qt,3)}function ki(Qt){return fr(Qt,17)^fr(Qt,19)^Yr(Qt,10)}var Bi=new Array(1116352408,1899447441,-1245643825,-373957723,961987163,1508970993,-1841331548,-1424204075,-670586216,310598401,607225278,1426881987,1925078388,-2132889090,-1680079193,-1046744716,-459576895,-272742522,264347078,604807628,770255983,1249150122,1555081692,1996064986,-1740746414,-1473132947,-1341970488,-1084653625,-958395405,-710438585,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,-2117940946,-1838011259,-1564481375,-1474664885,-1035236496,-949202525,-778901479,-694614492,-200395387,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,-2067236844,-1933114872,-1866530822,-1538233109,-1090935817,-965641998);function li(Qt,ra){var Ta=new Array(1779033703,-1150833019,1013904242,-1521486534,1359893119,-1694144372,528734635,1541459225),si=new Array(64),wi,xi,bi,Fi,cn,fn,Gi,Io,nn,on,Oi,ui;for(Qt[ra>>5]|=128<<24-ra%32,Qt[(ra+64>>9<<4)+15]=ra,nn=0;nn>16)+(ra>>16)+(Ta>>16);return si<<16|Ta&65535}function vi(Qt){return Array.prototype.slice.call(Qt)}function ti(Qt){return vi(Qt).join("")}function rn(Qt){var ra=Qt&&Qt.cache,Ta=0,si=[],wi=[],xi=[];function bi(Oi,ui){var Mi=ui&&ui.stable;if(!Mi){for(var tn=0;tn0&&(Oi.push(pn,"="),Oi.push.apply(Oi,vi(arguments)),Oi.push(";")),pn}return g(ui,{def:tn,toString:function(){return ti([Mi.length>0?"var "+Mi.join(",")+";":"",ti(Oi)])}})}function cn(){var Oi=Fi(),ui=Fi(),Mi=Oi.toString,tn=ui.toString;function pn(qi,Dn){ui(qi,Dn,"=",Oi.def(qi,Dn),";")}return g(function(){Oi.apply(Oi,vi(arguments))},{def:Oi.def,entry:Oi,exit:ui,save:pn,set:function(qi,Dn,bn){pn(qi,Dn),Oi(qi,Dn,"=",bn,";")},toString:function(){return Mi()+tn()}})}function fn(){var Oi=ti(arguments),ui=cn(),Mi=cn(),tn=ui.toString,pn=Mi.toString;return g(ui,{then:function(){return ui.apply(ui,vi(arguments)),this},else:function(){return Mi.apply(Mi,vi(arguments)),this},toString:function(){var qi=pn();return qi&&(qi="else{"+qi+"}"),ti(["if(",Oi,"){",tn(),"}",qi])}})}var Gi=Fi(),Io={};function nn(Oi,ui){var Mi=[];function tn(){var _o="a"+Mi.length;return Mi.push(_o),_o}ui=ui||0;for(var pn=0;pn":516,notequal:517,"!=":517,"!==":517,gequal:518,">=":518,always:519},Ra={0:0,zero:0,keep:7680,replace:7681,increment:7682,decrement:7683,"increment wrap":34055,"decrement wrap":34056,invert:5386},Na={cw:$e,ccw:pt};function Qa(Qt){return Array.isArray(Qt)||vr(Qt)||_r(Qt)}function Ya(Qt){return Qt.sort(function(ra,Ta){return ra===Se?-1:Ta===Se?1:ra=1,si>=2,ra)}else if(Ta===bs){var wi=Qt.data;return new Da(wi.thisDep,wi.contextDep,wi.propDep,ra)}else{if(Ta===Xs)return new Da(!1,!1,!1,ra);if(Ta===Ms){for(var xi=!1,bi=!1,Fi=!1,cn=0;cn=1&&(bi=!0),Gi>=2&&(Fi=!0)}else fn.type===bs&&(xi=xi||fn.data.thisDep,bi=bi||fn.data.contextDep,Fi=Fi||fn.data.propDep)}return new Da(xi,bi,Fi,ra)}else return new Da(Ta===Wo,Ta===co,Ta===Ri,ra)}}var hn=new Da(!1,!1,!1,function(){});function Un(Qt,ra,Ta,si,wi,xi,bi,Fi,cn,fn,Gi,Io,nn,on,Oi,ui){var Mi=fn.Record,tn={add:32774,subtract:32778,"reverse subtract":32779};Ta.ext_blend_minmax&&(tn.min=vt,tn.max=wt);var pn=Ta.angle_instanced_arrays,qi=Ta.webgl_draw_buffers,Dn=Ta.oes_vertex_array_object,bn={dirty:!0,profile:ui.profile},_o={},Zi=[],Ui={},Zn={};function Rn(qt){return qt.replace(".","_")}function xn(qt,tr,dr){var Pr=Rn(qt);Zi.push(qt),_o[Pr]=bn[Pr]=!!dr,Ui[Pr]=tr}function dn(qt,tr,dr){var Pr=Rn(qt);Zi.push(qt),Array.isArray(dr)?(bn[Pr]=dr.slice(),_o[Pr]=dr.slice()):bn[Pr]=_o[Pr]=dr,Zn[Pr]=tr}function jn(qt){return!!isNaN(qt)}xn(Hs,Ja),xn(vs,Pa),dn(Il,"blendColor",[0,0,0,0]),dn(fl,"blendEquationSeparate",[Or,Or]),dn(tl,"blendFuncSeparate",[Dr,or,Dr,or]),xn(Ln,pi,!0),dn(Ao,"depthFunc",va),dn(js,"depthRange",[0,1]),dn(Ts,"depthMask",!0),dn(nu,nu,[!0,!0,!0,!0]),xn(Pu,ga),dn(ec,"cullFace",Re),dn(tf,tf,pt),dn(yu,yu,1),xn(Bc,$i),dn(Iu,"polygonOffset",[0,0]),xn(Ac,Bn),xn(ro,Sn),dn(Po,"sampleCoverage",[1,!1]),xn(Nc,di),dn(hc,"stencilMask",-1),dn(pc,"stencilFunc",[Jt,0,-1]),dn(Oe,"stencilOpSeparate",[de,Rt,Rt,Rt]),dn(R,"stencilOpSeparate",[Re,Rt,Rt,Rt]),xn(ae,Ci),dn(we,"scissor",[0,0,Qt.drawingBufferWidth,Qt.drawingBufferHeight]),dn(Se,Se,[0,0,Qt.drawingBufferWidth,Qt.drawingBufferHeight]);var Ro={gl:Qt,context:nn,strings:ra,next:_o,current:bn,draw:Io,elements:xi,buffer:wi,shader:Gi,attributes:fn.state,vao:fn,uniforms:cn,framebuffer:Fi,extensions:Ta,timer:on,isBufferArgs:Qa},rs={primTypes:mt,compareFuncs:_a,blendFuncs:Xa,blendEquations:tn,stencilOps:Ra,glTypes:sa,orientationType:Na};qi&&(rs.backBuffer=[Re],rs.drawBuffer=d(si.maxDrawbuffers,function(qt){return qt===0?[0]:d(qt,function(tr){return Va+tr})}));var wn=0;function oo(){var qt=rn({cache:Oi}),tr=qt.link,dr=qt.global;qt.id=wn++,qt.batchId="0";var Pr=tr(Ro),Vr=qt.shared={props:"a0"};Object.keys(Ro).forEach(function(ia){Vr[ia]=dr.def(Pr,".",ia)});var Hr=qt.next={},aa=qt.current={};Object.keys(Zn).forEach(function(ia){Array.isArray(bn[ia])&&(Hr[ia]=dr.def(Vr.next,".",ia),aa[ia]=dr.def(Vr.current,".",ia))});var Qr=qt.constants={};Object.keys(rs).forEach(function(ia){Qr[ia]=dr.def(JSON.stringify(rs[ia]))}),qt.invoke=function(ia,Ur){switch(Ur.type){case en:var wa=["this",Vr.context,Vr.props,qt.batchId];return ia.def(tr(Ur.data),".call(",wa.slice(0,Math.max(Ur.data.length+1,4)),")");case Ri:return ia.def(Vr.props,Ur.data);case co:return ia.def(Vr.context,Ur.data);case Wo:return ia.def("this",Ur.data);case bs:return Ur.data.append(qt,ia),Ur.data.ref;case Xs:return Ur.data.toString();case Ms:return Ur.data.map(function(Oa){return qt.invoke(ia,Oa)})}},qt.attribCache={};var Gr={};return qt.scopeAttrib=function(ia){var Ur=ra.id(ia);if(Ur in Gr)return Gr[Ur];var wa=fn.scope[Ur];wa||(wa=fn.scope[Ur]=new Mi);var Oa=Gr[Ur]=tr(wa);return Oa},qt}function Xo(qt){var tr=qt.static,dr=qt.dynamic,Pr;if(De in tr){var Vr=!!tr[De];Pr=Ni(function(aa,Qr){return Vr}),Pr.enable=Vr}else if(De in dr){var Hr=dr[De];Pr=Qi(Hr,function(aa,Qr){return aa.invoke(Qr,Hr)})}return Pr}function os(qt,tr){var dr=qt.static,Pr=qt.dynamic;if(ft in dr){var Vr=dr[ft];return Vr?(Vr=Fi.getFramebuffer(Vr),Ni(function(aa,Qr){var Gr=aa.link(Vr),ia=aa.shared;Qr.set(ia.framebuffer,".next",Gr);var Ur=ia.context;return Qr.set(Ur,"."+ht,Gr+".width"),Qr.set(Ur,"."+At,Gr+".height"),Gr})):Ni(function(aa,Qr){var Gr=aa.shared;Qr.set(Gr.framebuffer,".next","null");var ia=Gr.context;return Qr.set(ia,"."+ht,ia+"."+nr),Qr.set(ia,"."+At,ia+"."+pr),"null"})}else if(ft in Pr){var Hr=Pr[ft];return Qi(Hr,function(aa,Qr){var Gr=aa.invoke(Qr,Hr),ia=aa.shared,Ur=ia.framebuffer,wa=Qr.def(Ur,".getFramebuffer(",Gr,")");Qr.set(Ur,".next",wa);var Oa=ia.context;return Qr.set(Oa,"."+ht,wa+"?"+wa+".width:"+Oa+"."+nr),Qr.set(Oa,"."+At,wa+"?"+wa+".height:"+Oa+"."+pr),wa})}else return null}function As(qt,tr,dr){var Pr=qt.static,Vr=qt.dynamic;function Hr(Gr){if(Gr in Pr){var ia=Pr[Gr],Ur=!0,wa=ia.x|0,Oa=ia.y|0,ri,Pi;return"width"in ia?ri=ia.width|0:Ur=!1,"height"in ia?Pi=ia.height|0:Ur=!1,new Da(!Ur&&tr&&tr.thisDep,!Ur&&tr&&tr.contextDep,!Ur&&tr&&tr.propDep,function(An,ln){var Ii=An.shared.context,Wi=ri;"width"in ia||(Wi=ln.def(Ii,".",ht,"-",wa));var Hi=Pi;return"height"in ia||(Hi=ln.def(Ii,".",At,"-",Oa)),[wa,Oa,Wi,Hi]})}else if(Gr in Vr){var mi=Vr[Gr],Di=Qi(mi,function(An,ln){var Ii=An.invoke(ln,mi),Wi=An.shared.context,Hi=ln.def(Ii,".x|0"),yn=ln.def(Ii,".y|0"),zn=ln.def('"width" in ',Ii,"?",Ii,".width|0:","(",Wi,".",ht,"-",Hi,")"),ms=ln.def('"height" in ',Ii,"?",Ii,".height|0:","(",Wi,".",At,"-",yn,")");return[Hi,yn,zn,ms]});return tr&&(Di.thisDep=Di.thisDep||tr.thisDep,Di.contextDep=Di.contextDep||tr.contextDep,Di.propDep=Di.propDep||tr.propDep),Di}else return tr?new Da(tr.thisDep,tr.contextDep,tr.propDep,function(An,ln){var Ii=An.shared.context;return[0,0,ln.def(Ii,".",ht),ln.def(Ii,".",At)]}):null}var aa=Hr(Se);if(aa){var Qr=aa;aa=new Da(aa.thisDep,aa.contextDep,aa.propDep,function(Gr,ia){var Ur=Qr.append(Gr,ia),wa=Gr.shared.context;return ia.set(wa,"."+_t,Ur[2]),ia.set(wa,"."+Pt,Ur[3]),Ur})}return{viewport:aa,scissor_box:Hr(we)}}function $l(qt,tr){var dr=qt.static,Pr=typeof dr[Dt]=="string"&&typeof dr[bt]=="string";if(Pr){if(Object.keys(tr.dynamic).length>0)return null;var Vr=tr.static,Hr=Object.keys(Vr);if(Hr.length>0&&typeof Vr[Hr[0]]=="number"){for(var aa=[],Qr=0;Qr"+Hi+"?"+Ur+".constant["+Hi+"]:0;"}).join(""),"}}else{","if(",ri,"(",Ur,".buffer)){",An,"=",Pi,".createStream(",Wr,",",Ur,".buffer);","}else{",An,"=",Pi,".getBuffer(",Ur,".buffer);","}",ln,'="type" in ',Ur,"?",Oa.glTypes,"[",Ur,".type]:",An,".dtype;",mi.normalized,"=!!",Ur,".normalized;");function Ii(Wi){ia(mi[Wi],"=",Ur,".",Wi,"|0;")}return Ii("size"),Ii("offset"),Ii("stride"),Ii("divisor"),ia("}}"),ia.exit("if(",mi.isStream,"){",Pi,".destroyStream(",An,");","}"),mi}Vr[Hr]=Qi(aa,Qr)}),Vr}function mc(qt){var tr=qt.static,dr=qt.dynamic,Pr={};return Object.keys(tr).forEach(function(Vr){var Hr=tr[Vr];Pr[Vr]=Ni(function(aa,Qr){return typeof Hr=="number"||typeof Hr=="boolean"?""+Hr:aa.link(Hr)})}),Object.keys(dr).forEach(function(Vr){var Hr=dr[Vr];Pr[Vr]=Qi(Hr,function(aa,Qr){return aa.invoke(Qr,Hr)})}),Pr}function rf(qt,tr,dr,Pr,Vr){var Hr=qt.static,aa=qt.dynamic,Qr=$l(qt,tr),Gr=os(qt,Vr),ia=As(qt,Gr,Vr),Ur=Ws(qt,Vr),wa=jc(qt,Vr),Oa=Uc(qt,Vr,Qr);function ri(Ii){var Wi=ia[Ii];Wi&&(wa[Ii]=Wi)}ri(Se),ri(Rn(we));var Pi=Object.keys(wa).length>0,mi={framebuffer:Gr,draw:Ur,shader:Oa,state:wa,dirty:Pi,scopeVAO:null,drawVAO:null,useVAO:!1,attributes:{}};if(mi.profile=Xo(qt,Vr),mi.uniforms=Ol(dr,Vr),mi.drawVAO=mi.scopeVAO=Ur.vao,!mi.drawVAO&&Oa.program&&!Qr&&Ta.angle_instanced_arrays&&Ur.static.elements){var Di=!0,An=Oa.program.attributes.map(function(Ii){var Wi=tr.static[Ii];return Di=Di&&!!Wi,Wi});if(Di&&An.length>0){var ln=fn.getVAO(fn.createVAO({attributes:An,elements:Ur.static.elements}));mi.drawVAO=new Da(null,null,null,function(Ii,Wi){return Ii.link(ln)}),mi.useVAO=!0}}return Qr?mi.useVAO=!0:mi.attributes=vc(tr,Vr),mi.context=mc(Pr,Vr),mi}function Yl(qt,tr,dr){var Pr=qt.shared,Vr=Pr.context,Hr=qt.scope();Object.keys(dr).forEach(function(aa){tr.save(Vr,"."+aa);var Qr=dr[aa],Gr=Qr.append(qt,tr);Array.isArray(Gr)?Hr(Vr,".",aa,"=[",Gr.join(),"];"):Hr(Vr,".",aa,"=",Gr,";")}),tr(Hr)}function Mc(qt,tr,dr,Pr){var Vr=qt.shared,Hr=Vr.gl,aa=Vr.framebuffer,Qr;qi&&(Qr=tr.def(Vr.extensions,".webgl_draw_buffers"));var Gr=qt.constants,ia=Gr.drawBuffer,Ur=Gr.backBuffer,wa;dr?wa=dr.append(qt,tr):wa=tr.def(aa,".next"),Pr||tr("if(",wa,"!==",aa,".cur){"),tr("if(",wa,"){",Hr,".bindFramebuffer(",fa,",",wa,".framebuffer);"),qi&&tr(Qr,".drawBuffersWEBGL(",ia,"[",wa,".colorAttachments.length]);"),tr("}else{",Hr,".bindFramebuffer(",fa,",null);"),qi&&tr(Qr,".drawBuffersWEBGL(",Ur,");"),tr("}",aa,".cur=",wa,";"),Pr||tr("}")}function Vc(qt,tr,dr){var Pr=qt.shared,Vr=Pr.gl,Hr=qt.current,aa=qt.next,Qr=Pr.current,Gr=Pr.next,ia=qt.cond(Qr,".dirty");Zi.forEach(function(Ur){var wa=Rn(Ur);if(!(wa in dr.state)){var Oa,ri;if(wa in aa){Oa=aa[wa],ri=Hr[wa];var Pi=d(bn[wa].length,function(Di){return ia.def(Oa,"[",Di,"]")});ia(qt.cond(Pi.map(function(Di,An){return Di+"!=="+ri+"["+An+"]"}).join("||")).then(Vr,".",Zn[wa],"(",Pi,");",Pi.map(function(Di,An){return ri+"["+An+"]="+Di}).join(";"),";"))}else{Oa=ia.def(Gr,".",wa);var mi=qt.cond(Oa,"!==",Qr,".",wa);ia(mi),wa in Ui?mi(qt.cond(Oa).then(Vr,".enable(",Ui[wa],");").else(Vr,".disable(",Ui[wa],");"),Qr,".",wa,"=",Oa,";"):mi(Vr,".",Zn[wa],"(",Oa,");",Qr,".",wa,"=",Oa,";")}}}),Object.keys(dr.state).length===0&&ia(Qr,".dirty=false;"),tr(ia)}function Ds(qt,tr,dr,Pr){var Vr=qt.shared,Hr=qt.current,aa=Vr.current,Qr=Vr.gl,Gr;Ya(Object.keys(dr)).forEach(function(ia){var Ur=dr[ia];if(!(Pr&&!Pr(Ur))){var wa=Ur.append(qt,tr);if(Ui[ia]){var Oa=Ui[ia];zi(Ur)?(Gr=qt.link(wa,{stable:!0}),tr(qt.cond(Gr).then(Qr,".enable(",Oa,");").else(Qr,".disable(",Oa,");")),tr(aa,".",ia,"=",Gr,";")):(tr(qt.cond(wa).then(Qr,".enable(",Oa,");").else(Qr,".disable(",Oa,");")),tr(aa,".",ia,"=",wa,";"))}else if(Ca(wa)){var ri=Hr[ia];tr(Qr,".",Zn[ia],"(",wa,");",wa.map(function(Pi,mi){return ri+"["+mi+"]="+Pi}).join(";"),";")}else zi(Ur)?(Gr=qt.link(wa,{stable:!0}),tr(Qr,".",Zn[ia],"(",Gr,");",aa,".",ia,"=",Gr,";")):tr(Qr,".",Zn[ia],"(",wa,");",aa,".",ia,"=",wa,";")}})}function af(qt,tr){pn&&(qt.instancing=tr.def(qt.shared.extensions,".angle_instanced_arrays"))}function Cs(qt,tr,dr,Pr,Vr){var Hr=qt.shared,aa=qt.stats,Qr=Hr.current,Gr=Hr.timer,ia=dr.profile;function Ur(){return typeof performance>"u"?"Date.now()":"performance.now()"}var wa,Oa;function ri(Ii){wa=tr.def(),Ii(wa,"=",Ur(),";"),typeof Vr=="string"?Ii(aa,".count+=",Vr,";"):Ii(aa,".count++;"),on&&(Pr?(Oa=tr.def(),Ii(Oa,"=",Gr,".getNumPendingQueries();")):Ii(Gr,".beginQuery(",aa,");"))}function Pi(Ii){Ii(aa,".cpuTime+=",Ur(),"-",wa,";"),on&&(Pr?Ii(Gr,".pushScopeStats(",Oa,",",Gr,".getNumPendingQueries(),",aa,");"):Ii(Gr,".endQuery();"))}function mi(Ii){var Wi=tr.def(Qr,".profile");tr(Qr,".profile=",Ii,";"),tr.exit(Qr,".profile=",Wi,";")}var Di;if(ia){if(zi(ia)){ia.enable?(ri(tr),Pi(tr.exit),mi("true")):mi("false");return}Di=ia.append(qt,tr),mi(Di)}else Di=tr.def(Qr,".profile");var An=qt.block();ri(An),tr("if(",Di,"){",An,"}");var ln=qt.block();Pi(ln),tr.exit("if(",Di,"){",ln,"}")}function ve(qt,tr,dr,Pr,Vr){var Hr=qt.shared;function aa(Gr){switch(Gr){case ts:case rl:case Rl:return 2;case yo:case Ys:case Xl:return 3;case Vo:case Zo:case qu:return 4;default:return 1}}function Qr(Gr,ia,Ur){var wa=Hr.gl,Oa=tr.def(Gr,".location"),ri=tr.def(Hr.attributes,"[",Oa,"]"),Pi=Ur.state,mi=Ur.buffer,Di=[Ur.x,Ur.y,Ur.z,Ur.w],An=["buffer","normalized","offset","stride"];function ln(){tr("if(!",ri,".buffer){",wa,".enableVertexAttribArray(",Oa,");}");var Wi=Ur.type,Hi;if(Ur.size?Hi=tr.def(Ur.size,"||",ia):Hi=ia,tr("if(",ri,".type!==",Wi,"||",ri,".size!==",Hi,"||",An.map(function(zn){return ri+"."+zn+"!=="+Ur[zn]}).join("||"),"){",wa,".bindBuffer(",Wr,",",mi,".buffer);",wa,".vertexAttribPointer(",[Oa,Hi,Wi,Ur.normalized,Ur.stride,Ur.offset],");",ri,".type=",Wi,";",ri,".size=",Hi,";",An.map(function(zn){return ri+"."+zn+"="+Ur[zn]+";"}).join(""),"}"),pn){var yn=Ur.divisor;tr("if(",ri,".divisor!==",yn,"){",qt.instancing,".vertexAttribDivisorANGLE(",[Oa,yn],");",ri,".divisor=",yn,";}")}}function Ii(){tr("if(",ri,".buffer){",wa,".disableVertexAttribArray(",Oa,");",ri,".buffer=null;","}if(",Kn.map(function(Wi,Hi){return ri+"."+Wi+"!=="+Di[Hi]}).join("||"),"){",wa,".vertexAttrib4f(",Oa,",",Di,");",Kn.map(function(Wi,Hi){return ri+"."+Wi+"="+Di[Hi]+";"}).join(""),"}")}Pi===Jn?ln():Pi===no?Ii():(tr("if(",Pi,"===",Jn,"){"),ln(),tr("}else{"),Ii(),tr("}"))}Pr.forEach(function(Gr){var ia=Gr.name,Ur=dr.attributes[ia],wa;if(Ur){if(!Vr(Ur))return;wa=Ur.append(qt,tr)}else{if(!Vr(hn))return;var Oa=qt.scopeAttrib(ia);wa={},Object.keys(new Mi).forEach(function(ri){wa[ri]=tr.def(Oa,".",ri)})}Qr(qt.link(Gr),aa(Gr.info.type),wa)})}function K(qt,tr,dr,Pr,Vr,Hr){for(var aa=qt.shared,Qr=aa.gl,Gr,ia=0;ia1){for(var us=[],Vs=[],qo=0;qo>1)",mi],");")}function yn(){dr(Di,".drawArraysInstancedANGLE(",[Oa,ri,Pi,mi],");")}Ur&&Ur!=="null"?ln?Hi():(dr("if(",Ur,"){"),Hi(),dr("}else{"),yn(),dr("}")):yn()}function Wi(){function Hi(){dr(Hr+".drawElements("+[Oa,Pi,An,ri+"<<(("+An+"-"+Wn+")>>1)"]+");")}function yn(){dr(Hr+".drawArrays("+[Oa,ri,Pi]+");")}Ur&&Ur!=="null"?ln?Hi():(dr("if(",Ur,"){"),Hi(),dr("}else{"),yn(),dr("}")):yn()}pn&&(typeof mi!="number"||mi>=0)?typeof mi=="string"?(dr("if(",mi,">0){"),Ii(),dr("}else if(",mi,"<0){"),Wi(),dr("}")):Ii():Wi()}function te(qt,tr,dr,Pr,Vr){var Hr=oo(),aa=Hr.proc("body",Vr);return pn&&(Hr.instancing=aa.def(Hr.shared.extensions,".angle_instanced_arrays")),qt(Hr,aa,dr,Pr),Hr.compile().body}function xe(qt,tr,dr,Pr){af(qt,tr),dr.useVAO?dr.drawVAO?tr(qt.shared.vao,".setVAO(",dr.drawVAO.append(qt,tr),");"):tr(qt.shared.vao,".setVAO(",qt.shared.vao,".targetVAO);"):(tr(qt.shared.vao,".setVAO(null);"),ve(qt,tr,dr,Pr.attributes,function(){return!0})),K(qt,tr,dr,Pr.uniforms,function(){return!0},!1),ye(qt,tr,tr,dr)}function We(qt,tr){var dr=qt.proc("draw",1);af(qt,dr),Yl(qt,dr,tr.context),Mc(qt,dr,tr.framebuffer),Vc(qt,dr,tr),Ds(qt,dr,tr.state),Cs(qt,dr,tr,!1,!0);var Pr=tr.shader.progVar.append(qt,dr);if(dr(qt.shared.gl,".useProgram(",Pr,".program);"),tr.shader.program)xe(qt,dr,tr,tr.shader.program);else{dr(qt.shared.vao,".setVAO(null);");var Vr=qt.global.def("{}"),Hr=dr.def(Pr,".id"),aa=dr.def(Vr,"[",Hr,"]");dr(qt.cond(aa).then(aa,".call(this,a0);").else(aa,"=",Vr,"[",Hr,"]=",qt.link(function(Qr){return te(xe,qt,tr,Qr,1)}),"(",Pr,");",aa,".call(this,a0);"))}Object.keys(tr.state).length>0&&dr(qt.shared.current,".dirty=true;"),qt.shared.vao&&dr(qt.shared.vao,".setVAO(null);")}function He(qt,tr,dr,Pr){qt.batchId="a1",af(qt,tr);function Vr(){return!0}ve(qt,tr,dr,Pr.attributes,Vr),K(qt,tr,dr,Pr.uniforms,Vr,!1),ye(qt,tr,tr,dr)}function st(qt,tr,dr,Pr){af(qt,tr);var Vr=dr.contextDep,Hr=tr.def(),aa="a0",Qr="a1",Gr=tr.def();qt.shared.props=Gr,qt.batchId=Hr;var ia=qt.scope(),Ur=qt.scope();tr(ia.entry,"for(",Hr,"=0;",Hr,"<",Qr,";++",Hr,"){",Gr,"=",aa,"[",Hr,"];",Ur,"}",ia.exit);function wa(An){return An.contextDep&&Vr||An.propDep}function Oa(An){return!wa(An)}if(dr.needsContext&&Yl(qt,Ur,dr.context),dr.needsFramebuffer&&Mc(qt,Ur,dr.framebuffer),Ds(qt,Ur,dr.state,wa),dr.profile&&wa(dr.profile)&&Cs(qt,Ur,dr,!1,!0),Pr)dr.useVAO?dr.drawVAO?wa(dr.drawVAO)?Ur(qt.shared.vao,".setVAO(",dr.drawVAO.append(qt,Ur),");"):ia(qt.shared.vao,".setVAO(",dr.drawVAO.append(qt,ia),");"):ia(qt.shared.vao,".setVAO(",qt.shared.vao,".targetVAO);"):(ia(qt.shared.vao,".setVAO(null);"),ve(qt,ia,dr,Pr.attributes,Oa),ve(qt,Ur,dr,Pr.attributes,wa)),K(qt,ia,dr,Pr.uniforms,Oa,!1),K(qt,Ur,dr,Pr.uniforms,wa,!0),ye(qt,ia,Ur,dr);else{var ri=qt.global.def("{}"),Pi=dr.shader.progVar.append(qt,Ur),mi=Ur.def(Pi,".id"),Di=Ur.def(ri,"[",mi,"]");Ur(qt.shared.gl,".useProgram(",Pi,".program);","if(!",Di,"){",Di,"=",ri,"[",mi,"]=",qt.link(function(An){return te(He,qt,dr,An,2)}),"(",Pi,");}",Di,".call(this,a0[",Hr,"],",Hr,");")}}function Et(qt,tr){var dr=qt.proc("batch",2);qt.batchId="0",af(qt,dr);var Pr=!1,Vr=!0;Object.keys(tr.context).forEach(function(ri){Pr=Pr||tr.context[ri].propDep}),Pr||(Yl(qt,dr,tr.context),Vr=!1);var Hr=tr.framebuffer,aa=!1;Hr?(Hr.propDep?Pr=aa=!0:Hr.contextDep&&Pr&&(aa=!0),aa||Mc(qt,dr,Hr)):Mc(qt,dr,null),tr.state.viewport&&tr.state.viewport.propDep&&(Pr=!0);function Qr(ri){return ri.contextDep&&Pr||ri.propDep}Vc(qt,dr,tr),Ds(qt,dr,tr.state,function(ri){return!Qr(ri)}),(!tr.profile||!Qr(tr.profile))&&Cs(qt,dr,tr,!1,"a1"),tr.contextDep=Pr,tr.needsContext=Vr,tr.needsFramebuffer=aa;var Gr=tr.shader.progVar;if(Gr.contextDep&&Pr||Gr.propDep)st(qt,dr,tr,null);else{var ia=Gr.append(qt,dr);if(dr(qt.shared.gl,".useProgram(",ia,".program);"),tr.shader.program)st(qt,dr,tr,tr.shader.program);else{dr(qt.shared.vao,".setVAO(null);");var Ur=qt.global.def("{}"),wa=dr.def(ia,".id"),Oa=dr.def(Ur,"[",wa,"]");dr(qt.cond(Oa).then(Oa,".call(this,a0,a1);").else(Oa,"=",Ur,"[",wa,"]=",qt.link(function(ri){return te(st,qt,tr,ri,2)}),"(",ia,");",Oa,".call(this,a0,a1);"))}}Object.keys(tr.state).length>0&&dr(qt.shared.current,".dirty=true;"),qt.shared.vao&&dr(qt.shared.vao,".setVAO(null);")}function Ht(qt,tr){var dr=qt.proc("scope",3);qt.batchId="a2";var Pr=qt.shared,Vr=Pr.current;if(Yl(qt,dr,tr.context),tr.framebuffer&&tr.framebuffer.append(qt,dr),Ya(Object.keys(tr.state)).forEach(function(Qr){var Gr=tr.state[Qr],ia=Gr.append(qt,dr);Ca(ia)?ia.forEach(function(Ur,wa){jn(Ur)?dr.set(qt.next[Qr],"["+wa+"]",Ur):dr.set(qt.next[Qr],"["+wa+"]",qt.link(Ur,{stable:!0}))}):zi(Gr)?dr.set(Pr.next,"."+Qr,qt.link(ia,{stable:!0})):dr.set(Pr.next,"."+Qr,ia)}),Cs(qt,dr,tr,!0,!0),[Yt,jr,hr,ea,cr].forEach(function(Qr){var Gr=tr.draw[Qr];if(Gr){var ia=Gr.append(qt,dr);jn(ia)?dr.set(Pr.draw,"."+Qr,ia):dr.set(Pr.draw,"."+Qr,qt.link(ia),{stable:!0})}}),Object.keys(tr.uniforms).forEach(function(Qr){var Gr=tr.uniforms[Qr].append(qt,dr);Array.isArray(Gr)&&(Gr="["+Gr.map(function(ia){return jn(ia)?ia:qt.link(ia,{stable:!0})})+"]"),dr.set(Pr.uniforms,"["+qt.link(ra.id(Qr),{stable:!0})+"]",Gr)}),Object.keys(tr.attributes).forEach(function(Qr){var Gr=tr.attributes[Qr].append(qt,dr),ia=qt.scopeAttrib(Qr);Object.keys(new Mi).forEach(function(Ur){dr.set(ia,"."+Ur,Gr[Ur])})}),tr.scopeVAO){var Hr=tr.scopeVAO.append(qt,dr);jn(Hr)?dr.set(Pr.vao,".targetVAO",Hr):dr.set(Pr.vao,".targetVAO",qt.link(Hr,{stable:!0}))}function aa(Qr){var Gr=tr.shader[Qr];if(Gr){var ia=Gr.append(qt,dr);jn(ia)?dr.set(Pr.shader,"."+Qr,ia):dr.set(Pr.shader,"."+Qr,qt.link(ia,{stable:!0}))}}aa(bt),aa(Dt),Object.keys(tr.state).length>0&&(dr(Vr,".dirty=true;"),dr.exit(Vr,".dirty=true;")),dr("a1(",qt.shared.context,",a0,",qt.batchId,");")}function yr(qt){if(!(typeof qt!="object"||Ca(qt))){for(var tr=Object.keys(qt),dr=0;dr=0;--te){var xe=Ro[te];xe&&xe(Oi,null,0)}Ta.flush(),Gi&&Gi.update()}function As(){!Xo&&Ro.length>0&&(Xo=h.next(os))}function $l(){Xo&&(h.cancel(os),Xo=null)}function Uc(te){te.preventDefault(),wi=!0,$l(),rs.forEach(function(xe){xe()})}function Ws(te){Ta.getError(),wi=!1,xi.restore(),_o.restore(),pn.restore(),Zi.restore(),Ui.restore(),Zn.restore(),Dn.restore(),Gi&&Gi.restore(),Rn.procs.refresh(),As(),wn.forEach(function(xe){xe()})}jn&&(jn.addEventListener(ns,Uc,!1),jn.addEventListener(hs,Ws,!1));function jc(){Ro.length=0,$l(),jn&&(jn.removeEventListener(ns,Uc),jn.removeEventListener(hs,Ws)),_o.clear(),Zn.clear(),Ui.clear(),Dn.clear(),Zi.clear(),qi.clear(),pn.clear(),Gi&&Gi.clear(),oo.forEach(function(te){te()})}function Ol(te){function xe(Hr){var aa=g({},Hr);delete aa.uniforms,delete aa.attributes,delete aa.context,delete aa.vao,"stencil"in aa&&aa.stencil.op&&(aa.stencil.opBack=aa.stencil.opFront=aa.stencil.op,delete aa.stencil.op);function Qr(Gr){if(Gr in aa){var ia=aa[Gr];delete aa[Gr],Object.keys(ia).forEach(function(Ur){aa[Gr+"."+Ur]=ia[Ur]})}}return Qr("blend"),Qr("depth"),Qr("cull"),Qr("stencil"),Qr("polygonOffset"),Qr("scissor"),Qr("sample"),"vao"in Hr&&(aa.vao=Hr.vao),aa}function We(Hr,aa){var Qr={},Gr={};return Object.keys(Hr).forEach(function(ia){var Ur=Hr[ia];if(c.isDynamic(Ur)){Gr[ia]=c.unbox(Ur,ia);return}else if(aa&&Array.isArray(Ur)){for(var wa=0;wa0)return qt.call(this,Pr(Hr|0),Hr|0)}else if(Array.isArray(Hr)){if(Hr.length)return qt.call(this,Hr,Hr.length)}else return wr.call(this,Hr)}return g(Vr,{stats:yr,destroy:function(){Ir.destroy()}})}var vc=Zn.setFBO=Ol({framebuffer:c.define.call(null,hl,"framebuffer")});function mc(te,xe){var We=0;Rn.procs.poll();var He=xe.color;He&&(Ta.clearColor(+He[0]||0,+He[1]||0,+He[2]||0,+He[3]||0),We|=Gs),"depth"in xe&&(Ta.clearDepth(+xe.depth),We|=sl),"stencil"in xe&&(Ta.clearStencil(xe.stencil|0),We|=Vi),Ta.clear(We)}function rf(te){if("framebuffer"in te)if(te.framebuffer&&te.framebuffer_reglType==="framebufferCube")for(var xe=0;xe<6;++xe)vc(g({framebuffer:te.framebuffer.faces[xe]},te),mc);else vc(te,mc);else mc(null,te)}function Yl(te){Ro.push(te);function xe(){var We=Ll(Ro,te);function He(){var st=Ll(Ro,He);Ro[st]=Ro[Ro.length-1],Ro.length-=1,Ro.length<=0&&$l()}Ro[We]=He}return As(),{cancel:xe}}function Mc(){var te=dn.viewport,xe=dn.scissor_box;te[0]=te[1]=xe[0]=xe[1]=0,Oi.viewportWidth=Oi.framebufferWidth=Oi.drawingBufferWidth=te[2]=xe[2]=Ta.drawingBufferWidth,Oi.viewportHeight=Oi.framebufferHeight=Oi.drawingBufferHeight=te[3]=xe[3]=Ta.drawingBufferHeight}function Vc(){Oi.tick+=1,Oi.time=af(),Mc(),Rn.procs.poll()}function Ds(){Zi.refresh(),Mc(),Rn.procs.refresh(),Gi&&Gi.update()}function af(){return(v()-Io)/1e3}Ds();function Cs(te,xe){var We;switch(te){case"frame":return Yl(xe);case"lost":We=rs;break;case"restore":We=wn;break;case"destroy":We=oo;break;default:}return We.push(xe),{cancel:function(){for(var He=0;He=0},read:xn,destroy:jc,_gl:Ta,_refresh:Ds,poll:function(){Vc(),Gi&&Gi.update()},now:af,stats:Fi,getCachedCode:ve,preloadCachedCode:K});return ra.onDone(null,ye),ye}return dc})}}),rV=Ye({"node_modules/gl-util/context.js"(X,H){"use strict";var g=Ev();H.exports=function(o){if(o?typeof o=="string"&&(o={container:o}):o={},A(o)?o={container:o}:M(o)?o={container:o}:e(o)?o={gl:o}:o=g(o,{container:"container target element el canvas holder parent parentNode wrapper use ref root node",gl:"gl context webgl glContext",attrs:"attributes attrs contextAttributes",pixelRatio:"pixelRatio pxRatio px ratio pxratio pixelratio",width:"w width",height:"h height"},!0),o.pixelRatio||(o.pixelRatio=window.pixelRatio||1),o.gl)return o.gl;if(o.canvas&&(o.container=o.canvas.parentNode),o.container){if(typeof o.container=="string"){var a=document.querySelector(o.container);if(!a)throw Error("Element "+o.container+" is not found");o.container=a}A(o.container)?(o.canvas=o.container,o.container=o.canvas.parentNode):o.canvas||(o.canvas=t(),o.container.appendChild(o.canvas),x(o))}else if(!o.canvas)if(typeof document<"u")o.container=document.body||document.documentElement,o.canvas=t(),o.container.appendChild(o.canvas),x(o);else throw Error("Not DOM environment. Use headless-gl.");return o.gl||["webgl","experimental-webgl","webgl-experimental"].some(function(i){try{o.gl=o.canvas.getContext(i,o.attrs)}catch{}return o.gl}),o.gl};function x(r){if(r.container)if(r.container==document.body)document.body.style.width||(r.canvas.width=r.width||r.pixelRatio*window.innerWidth),document.body.style.height||(r.canvas.height=r.height||r.pixelRatio*window.innerHeight);else{var o=r.container.getBoundingClientRect();r.canvas.width=r.width||o.right-o.left,r.canvas.height=r.height||o.bottom-o.top}}function A(r){return typeof r.getContext=="function"&&"width"in r&&"height"in r}function M(r){return typeof r.nodeName=="string"&&typeof r.appendChild=="function"&&typeof r.getBoundingClientRect=="function"}function e(r){return typeof r.drawArrays=="function"||typeof r.drawElements=="function"}function t(){var r=document.createElement("canvas");return r.style.position="absolute",r.style.top=0,r.style.left=0,r}}}),aV=Ye({"node_modules/font-atlas/index.js"(X,H){"use strict";var g=ik(),x=[32,126];H.exports=A;function A(M){M=M||{};var e=M.shape?M.shape:M.canvas?[M.canvas.width,M.canvas.height]:[512,512],t=M.canvas||document.createElement("canvas"),r=M.font,o=typeof M.step=="number"?[M.step,M.step]:M.step||[32,32],a=M.chars||x;if(r&&typeof r!="string"&&(r=g(r)),!Array.isArray(a))a=String(a).split("");else if(a.length===2&&typeof a[0]=="number"&&typeof a[1]=="number"){for(var i=[],n=a[0],s=0;n<=a[1];n++)i[s++]=String.fromCharCode(n);a=i}e=e.slice(),t.width=e[0],t.height=e[1];var c=t.getContext("2d");c.fillStyle="#000",c.fillRect(0,0,t.width,t.height),c.font=r,c.textAlign="center",c.textBaseline="middle",c.fillStyle="#fff";for(var h=o[0]/2,v=o[1]/2,n=0;ne[0]-o[0]/2&&(h=o[0]/2,v+=o[1]);return t}}}),ok=Ye({"node_modules/bit-twiddle/twiddle.js"(X){"use strict";"use restrict";var H=32;X.INT_BITS=H,X.INT_MAX=2147483647,X.INT_MIN=-1<0)-(A<0)},X.abs=function(A){var M=A>>H-1;return(A^M)-M},X.min=function(A,M){return M^(A^M)&-(A65535)<<4,A>>>=M,e=(A>255)<<3,A>>>=e,M|=e,e=(A>15)<<2,A>>>=e,M|=e,e=(A>3)<<1,A>>>=e,M|=e,M|A>>1},X.log10=function(A){return A>=1e9?9:A>=1e8?8:A>=1e7?7:A>=1e6?6:A>=1e5?5:A>=1e4?4:A>=1e3?3:A>=100?2:A>=10?1:0},X.popCount=function(A){return A=A-(A>>>1&1431655765),A=(A&858993459)+(A>>>2&858993459),(A+(A>>>4)&252645135)*16843009>>>24};function g(A){var M=32;return A&=-A,A&&M--,A&65535&&(M-=16),A&16711935&&(M-=8),A&252645135&&(M-=4),A&858993459&&(M-=2),A&1431655765&&(M-=1),M}X.countTrailingZeros=g,X.nextPow2=function(A){return A+=A===0,--A,A|=A>>>1,A|=A>>>2,A|=A>>>4,A|=A>>>8,A|=A>>>16,A+1},X.prevPow2=function(A){return A|=A>>>1,A|=A>>>2,A|=A>>>4,A|=A>>>8,A|=A>>>16,A-(A>>>1)},X.parity=function(A){return A^=A>>>16,A^=A>>>8,A^=A>>>4,A&=15,27030>>>A&1};var x=new Array(256);(function(A){for(var M=0;M<256;++M){var e=M,t=M,r=7;for(e>>>=1;e;e>>>=1)t<<=1,t|=e&1,--r;A[M]=t<>>8&255]<<16|x[A>>>16&255]<<8|x[A>>>24&255]},X.interleave2=function(A,M){return A&=65535,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,M&=65535,M=(M|M<<8)&16711935,M=(M|M<<4)&252645135,M=(M|M<<2)&858993459,M=(M|M<<1)&1431655765,A|M<<1},X.deinterleave2=function(A,M){return A=A>>>M&1431655765,A=(A|A>>>1)&858993459,A=(A|A>>>2)&252645135,A=(A|A>>>4)&16711935,A=(A|A>>>16)&65535,A<<16>>16},X.interleave3=function(A,M,e){return A&=1023,A=(A|A<<16)&4278190335,A=(A|A<<8)&251719695,A=(A|A<<4)&3272356035,A=(A|A<<2)&1227133513,M&=1023,M=(M|M<<16)&4278190335,M=(M|M<<8)&251719695,M=(M|M<<4)&3272356035,M=(M|M<<2)&1227133513,A|=M<<1,e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,A|e<<2},X.deinterleave3=function(A,M){return A=A>>>M&1227133513,A=(A|A>>>2)&3272356035,A=(A|A>>>4)&251719695,A=(A|A>>>8)&4278190335,A=(A|A>>>16)&1023,A<<22>>22},X.nextCombination=function(A){var M=A|A-1;return M+1|(~M&-~M)-1>>>g(A)+1}}}),iV=Ye({"node_modules/dup/dup.js"(X,H){"use strict";function g(M,e,t){var r=M[t]|0;if(r<=0)return[];var o=new Array(r),a;if(t===M.length-1)for(a=0;a"u"&&(e=0),typeof M){case"number":if(M>0)return x(M|0,e);break;case"object":if(typeof M.length=="number")return g(M,e,0);break}return[]}H.exports=A}}),nV=Ye({"node_modules/typedarray-pool/pool.js"(X){"use strict";var H=ok(),g=iV(),x=t0().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:g([32,0]),UINT16:g([32,0]),UINT32:g([32,0]),BIGUINT64:g([32,0]),INT8:g([32,0]),INT16:g([32,0]),INT32:g([32,0]),BIGINT64:g([32,0]),FLOAT:g([32,0]),DOUBLE:g([32,0]),DATA:g([32,0]),UINT8C:g([32,0]),BUFFER:g([32,0])});var A=typeof Uint8ClampedArray<"u",M=typeof BigUint64Array<"u",e=typeof BigInt64Array<"u",t=window.__TYPEDARRAY_POOL;t.UINT8C||(t.UINT8C=g([32,0])),t.BIGUINT64||(t.BIGUINT64=g([32,0])),t.BIGINT64||(t.BIGINT64=g([32,0])),t.BUFFER||(t.BUFFER=g([32,0]));var r=t.DATA,o=t.BUFFER;X.free=function(u){if(x.isBuffer(u))o[H.log2(u.length)].push(u);else{if(Object.prototype.toString.call(u)!=="[object ArrayBuffer]"&&(u=u.buffer),!u)return;var y=u.length||u.byteLength,f=H.log2(y)|0;r[f].push(u)}};function a(d){if(d){var u=d.length||d.byteLength,y=H.log2(u);r[y].push(d)}}function i(d){a(d.buffer)}X.freeUint8=X.freeUint16=X.freeUint32=X.freeBigUint64=X.freeInt8=X.freeInt16=X.freeInt32=X.freeBigInt64=X.freeFloat32=X.freeFloat=X.freeFloat64=X.freeDouble=X.freeUint8Clamped=X.freeDataView=i,X.freeArrayBuffer=a,X.freeBuffer=function(u){o[H.log2(u.length)].push(u)},X.malloc=function(u,y){if(y===void 0||y==="arraybuffer")return n(u);switch(y){case"uint8":return s(u);case"uint16":return c(u);case"uint32":return h(u);case"int8":return v(u);case"int16":return p(u);case"int32":return T(u);case"float":case"float32":return l(u);case"double":case"float64":return _(u);case"uint8_clamped":return w(u);case"bigint64":return E(u);case"biguint64":return S(u);case"buffer":return b(u);case"data":case"dataview":return m(u);default:return null}return null};function n(u){var u=H.nextPow2(u),y=H.log2(u),f=r[y];return f.length>0?f.pop():new ArrayBuffer(u)}X.mallocArrayBuffer=n;function s(d){return new Uint8Array(n(d),0,d)}X.mallocUint8=s;function c(d){return new Uint16Array(n(2*d),0,d)}X.mallocUint16=c;function h(d){return new Uint32Array(n(4*d),0,d)}X.mallocUint32=h;function v(d){return new Int8Array(n(d),0,d)}X.mallocInt8=v;function p(d){return new Int16Array(n(2*d),0,d)}X.mallocInt16=p;function T(d){return new Int32Array(n(4*d),0,d)}X.mallocInt32=T;function l(d){return new Float32Array(n(4*d),0,d)}X.mallocFloat32=X.mallocFloat=l;function _(d){return new Float64Array(n(8*d),0,d)}X.mallocFloat64=X.mallocDouble=_;function w(d){return A?new Uint8ClampedArray(n(d),0,d):s(d)}X.mallocUint8Clamped=w;function S(d){return M?new BigUint64Array(n(8*d),0,d):null}X.mallocBigUint64=S;function E(d){return e?new BigInt64Array(n(8*d),0,d):null}X.mallocBigInt64=E;function m(d){return new DataView(n(d),0,d)}X.mallocDataView=m;function b(d){d=H.nextPow2(d);var u=H.log2(d),y=o[u];return y.length>0?y.pop():new x(d)}X.mallocBuffer=b,X.clearCache=function(){for(var u=0;u<32;++u)t.UINT8[u].length=0,t.UINT16[u].length=0,t.UINT32[u].length=0,t.INT8[u].length=0,t.INT16[u].length=0,t.INT32[u].length=0,t.FLOAT[u].length=0,t.DOUBLE[u].length=0,t.BIGUINT64[u].length=0,t.BIGINT64[u].length=0,t.UINT8C[u].length=0,r[u].length=0,o[u].length=0}}}),oV=Ye({"node_modules/is-plain-obj/index.js"(X,H){"use strict";var g=Object.prototype.toString;H.exports=function(x){var A;return g.call(x)==="[object Object]"&&(A=Object.getPrototypeOf(x),A===null||A===Object.getPrototypeOf({}))}}}),sk=Ye({"node_modules/parse-unit/index.js"(X,H){H.exports=function(x,A){A||(A=[0,""]),x=String(x);var M=parseFloat(x,10);return A[0]=M,A[1]=x.match(/[\d.\-\+]*\s*(.*)/)[1]||"",A}}}),sV=Ye({"node_modules/to-px/topx.js"(X,H){"use strict";var g=sk();H.exports=e;var x=96;function A(t,r){var o=g(getComputedStyle(t).getPropertyValue(r));return o[0]*e(o[1],t)}function M(t,r){var o=document.createElement("div");o.style["font-size"]="128"+t,r.appendChild(o);var a=A(o,"font-size")/128;return r.removeChild(o),a}function e(t,r){switch(r=r||document.body,t=(t||"px").trim().toLowerCase(),(r===window||r===document)&&(r=document.body),t){case"%":return r.clientHeight/100;case"ch":case"ex":return M(t,r);case"em":return A(r,"font-size");case"rem":return A(document.body,"font-size");case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;case"in":return x;case"cm":return x/2.54;case"mm":return x/25.4;case"pt":return x/72;case"pc":return x/6}return 1}}}),lV=Ye({"node_modules/detect-kerning/index.js"(X,H){"use strict";H.exports=M;var g=M.canvas=document.createElement("canvas"),x=g.getContext("2d"),A=e([32,126]);M.createPairs=e,M.ascii=A;function M(t,r){Array.isArray(t)&&(t=t.join(", "));var o={},a,i=16,n=.05;r&&(r.length===2&&typeof r[0]=="number"?a=e(r):Array.isArray(r)?a=r:(r.o?a=e(r.o):r.pairs&&(a=r.pairs),r.fontSize&&(i=r.fontSize),r.threshold!=null&&(n=r.threshold))),a||(a=A),x.font=i+"px "+t;for(var s=0;si*n){var p=(v-h)/i;o[c]=p*1e3}}return o}function e(t){for(var r=[],o=t[0];o<=t[1];o++)for(var a=String.fromCharCode(o),i=t[0];i0;o-=4)if(r[o]!==0)return Math.floor((o-3)*.25/t)}}}),cV=Ye({"node_modules/gl-text/dist.js"(X,H){"use strict";var g=tV(),x=Ev(),A=nk(),M=rV(),e=K5(),t=hg(),r=aV(),o=nV(),a=E1(),i=oV(),n=sk(),s=sV(),c=lV(),h=Wf(),v=uV(),p=v0(),T=ok(),l=T.nextPow2,_=new e,w=!1;document.body&&(S=document.body.appendChild(document.createElement("div")),S.style.font="italic small-caps bold condensed 16px/2 cursive",getComputedStyle(S).fontStretch&&(w=!0),document.body.removeChild(S));var S,E=function(d){m(d)?(d={regl:d},this.gl=d.regl._gl):this.gl=M(d),this.shader=_.get(this.gl),this.shader?this.regl=this.shader.regl:this.regl=d.regl||A({gl:this.gl}),this.charBuffer=this.regl.buffer({type:"uint8",usage:"stream"}),this.sizeBuffer=this.regl.buffer({type:"float",usage:"stream"}),this.shader||(this.shader=this.createShader(),_.set(this.gl,this.shader)),this.batch=[],this.fontSize=[],this.font=[],this.fontAtlas=[],this.draw=this.shader.draw.bind(this),this.render=function(){this.regl._refresh(),this.draw(this.batch)},this.canvas=this.gl.canvas,this.update(i(d)?d:{})};E.prototype.createShader=function(){var d=this.regl,u=d({blend:{enable:!0,color:[0,0,0,1],func:{srcRGB:"src alpha",dstRGB:"one minus src alpha",srcAlpha:"one minus dst alpha",dstAlpha:"one"}},stencil:{enable:!1},depth:{enable:!1},count:d.prop("count"),offset:d.prop("offset"),attributes:{charOffset:{offset:4,stride:8,buffer:d.this("sizeBuffer")},width:{offset:0,stride:8,buffer:d.this("sizeBuffer")},char:d.this("charBuffer"),position:d.this("position")},uniforms:{atlasSize:function(f,P){return[P.atlas.width,P.atlas.height]},atlasDim:function(f,P){return[P.atlas.cols,P.atlas.rows]},atlas:function(f,P){return P.atlas.texture},charStep:function(f,P){return P.atlas.step},em:function(f,P){return P.atlas.em},color:d.prop("color"),opacity:d.prop("opacity"),viewport:d.this("viewportArray"),scale:d.this("scale"),align:d.prop("align"),baseline:d.prop("baseline"),translate:d.this("translate"),positionOffset:d.prop("positionOffset")},primitive:"points",viewport:d.this("viewport"),vert:` + precision highp float; + attribute float width, charOffset, char; + attribute vec2 position; + uniform float fontSize, charStep, em, align, baseline; + uniform vec4 viewport; + uniform vec4 color; + uniform vec2 atlasSize, atlasDim, scale, translate, positionOffset; + varying vec2 charCoord, charId; + varying float charWidth; + varying vec4 fontColor; + void main () { + vec2 offset = floor(em * (vec2(align + charOffset, baseline) + + vec2(positionOffset.x, -positionOffset.y))) + / (viewport.zw * scale.xy); + + vec2 position = (position + translate) * scale; + position += offset * scale; + + charCoord = position * viewport.zw + viewport.xy; + + gl_Position = vec4(position * 2. - 1., 0, 1); + + gl_PointSize = charStep; + + charId.x = mod(char, atlasDim.x); + charId.y = floor(char / atlasDim.x); + + charWidth = width * em; + + fontColor = color / 255.; + }`,frag:` + precision highp float; + uniform float fontSize, charStep, opacity; + uniform vec2 atlasSize; + uniform vec4 viewport; + uniform sampler2D atlas; + varying vec4 fontColor; + varying vec2 charCoord, charId; + varying float charWidth; + + float lightness(vec4 color) { + return color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + } + + void main () { + vec2 uv = gl_FragCoord.xy - charCoord + charStep * .5; + float halfCharStep = floor(charStep * .5 + .5); + + // invert y and shift by 1px (FF expecially needs that) + uv.y = charStep - uv.y; + + // ignore points outside of character bounding box + float halfCharWidth = ceil(charWidth * .5); + if (floor(uv.x) > halfCharStep + halfCharWidth || + floor(uv.x) < halfCharStep - halfCharWidth) return; + + uv += charId * charStep; + uv = uv / atlasSize; + + vec4 color = fontColor; + vec4 mask = texture2D(atlas, uv); + + float maskY = lightness(mask); + // float colorY = lightness(color); + color.a *= maskY; + color.a *= opacity; + + // color.a += .1; + + // antialiasing, see yiq color space y-channel formula + // color.rgb += (1. - color.rgb) * (1. - mask.rgb); + + gl_FragColor = color; + }`}),y={};return{regl:d,draw:u,atlas:y}},E.prototype.update=function(d){var u=this;if(typeof d=="string")d={text:d};else if(!d)return;d=x(d,{position:"position positions coord coords coordinates",font:"font fontFace fontface typeface cssFont css-font family fontFamily",fontSize:"fontSize fontsize size font-size",text:"text texts chars characters value values symbols",align:"align alignment textAlign textbaseline",baseline:"baseline textBaseline textbaseline",direction:"dir direction textDirection",color:"color colour fill fill-color fillColor textColor textcolor",kerning:"kerning kern",range:"range dataBox",viewport:"vp viewport viewBox viewbox viewPort",opacity:"opacity alpha transparency visible visibility opaque",offset:"offset positionOffset padding shift indent indentation"},!0),d.opacity!=null&&(Array.isArray(d.opacity)?this.opacity=d.opacity.map(function(ce){return parseFloat(ce)}):this.opacity=parseFloat(d.opacity)),d.viewport!=null&&(this.viewport=a(d.viewport),this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),this.viewport==null&&(this.viewport={x:0,y:0,width:this.gl.drawingBufferWidth,height:this.gl.drawingBufferHeight},this.viewportArray=[this.viewport.x,this.viewport.y,this.viewport.width,this.viewport.height]),d.kerning!=null&&(this.kerning=d.kerning),d.offset!=null&&(typeof d.offset=="number"&&(d.offset=[d.offset,0]),this.positionOffset=p(d.offset)),d.direction&&(this.direction=d.direction),d.range&&(this.range=d.range,this.scale=[1/(d.range[2]-d.range[0]),1/(d.range[3]-d.range[1])],this.translate=[-d.range[0],-d.range[1]]),d.scale&&(this.scale=d.scale),d.translate&&(this.translate=d.translate),this.scale||(this.scale=[1/this.viewport.width,1/this.viewport.height]),this.translate||(this.translate=[0,0]),!this.font.length&&!d.font&&(d.font=E.baseFontSize+"px sans-serif");var y=!1,f=!1;if(d.font&&(Array.isArray(d.font)?d.font:[d.font]).forEach(function(ce,ze){if(typeof ce=="string")try{ce=g.parse(ce)}catch{ce=g.parse(E.baseFontSize+"px "+ce)}else{var tt=ce.style,nt=ce.weight,Qe=ce.stretch,Ct=ce.variant;ce=g.parse(g.stringify(ce)),tt&&(ce.style=tt),nt&&(ce.weight=nt),Qe&&(ce.stretch=Qe),Ct&&(ce.variant=Ct)}var St=g.stringify({size:E.baseFontSize,family:ce.family,stretch:w?ce.stretch:void 0,variant:ce.variant,weight:ce.weight,style:ce.style}),Ot=n(ce.size),jt=Math.round(Ot[0]*s(Ot[1]));if(jt!==u.fontSize[ze]&&(f=!0,u.fontSize[ze]=jt),(!u.font[ze]||St!=u.font[ze].baseString)&&(y=!0,u.font[ze]=E.fonts[St],!u.font[ze])){var ur=ce.family.join(", "),ar=[ce.style];ce.style!=ce.variant&&ar.push(ce.variant),ce.variant!=ce.weight&&ar.push(ce.weight),w&&ce.weight!=ce.stretch&&ar.push(ce.stretch),u.font[ze]={baseString:St,family:ur,weight:ce.weight,stretch:ce.stretch,style:ce.style,variant:ce.variant,width:{},kerning:{},metrics:v(ur,{origin:"top",fontSize:E.baseFontSize,fontStyle:ar.join(" ")})},E.fonts[St]=u.font[ze]}}),(y||f)&&this.font.forEach(function(ce,ze){var tt=g.stringify({size:u.fontSize[ze],family:ce.family,stretch:w?ce.stretch:void 0,variant:ce.variant,weight:ce.weight,style:ce.style});if(u.fontAtlas[ze]=u.shader.atlas[tt],!u.fontAtlas[ze]){var nt=ce.metrics;u.shader.atlas[tt]=u.fontAtlas[ze]={fontString:tt,step:Math.ceil(u.fontSize[ze]*nt.bottom*.5)*2,em:u.fontSize[ze],cols:0,rows:0,height:0,width:0,chars:[],ids:{},texture:u.regl.texture()}}d.text==null&&(d.text=u.text)}),typeof d.text=="string"&&d.position&&d.position.length>2){for(var P=Array(d.position.length*.5),L=0;L2){for(var B=!d.position[0].length,O=o.mallocFloat(this.count*2),I=0,N=0;I1?u.align[ze]:u.align[0]:u.align;if(typeof tt=="number")return tt;switch(tt){case"right":case"end":return-ce;case"center":case"centre":case"middle":return-ce*.5}return 0})),this.baseline==null&&d.baseline==null&&(d.baseline=0),d.baseline!=null&&(this.baseline=d.baseline,Array.isArray(this.baseline)||(this.baseline=[this.baseline]),this.baselineOffset=this.baseline.map(function(ce,ze){var tt=(u.font[ze]||u.font[0]).metrics,nt=0;return nt+=tt.bottom*.5,typeof ce=="number"?nt+=ce-tt.baseline:nt+=-tt[ce],nt*=-1,nt})),d.color!=null)if(d.color||(d.color="transparent"),typeof d.color=="string"||!isNaN(d.color))this.color=t(d.color,"uint8");else{var Be;if(typeof d.color[0]=="number"&&d.color.length>this.counts.length){var Ie=d.color.length;Be=o.mallocUint8(Ie);for(var Ze=(d.color.subarray||d.color.slice).bind(d.color),at=0;at4||this.baselineOffset.length>1||this.align&&this.align.length>1||this.fontAtlas.length>1||this.positionOffset.length>2;if(lt){var Me=Math.max(this.position.length*.5||0,this.color.length*.25||0,this.baselineOffset.length||0,this.alignOffset.length||0,this.font.length||0,this.opacity.length||0,this.positionOffset.length*.5||0);this.batch=Array(Me);for(var ge=0;ge1?this.counts[ge]:this.counts[0],offset:this.textOffsets.length>1?this.textOffsets[ge]:this.textOffsets[0],color:this.color?this.color.length<=4?this.color:this.color.subarray(ge*4,ge*4+4):[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[ge]:this.opacity,baseline:this.baselineOffset[ge]!=null?this.baselineOffset[ge]:this.baselineOffset[0],align:this.align?this.alignOffset[ge]!=null?this.alignOffset[ge]:this.alignOffset[0]:0,atlas:this.fontAtlas[ge]||this.fontAtlas[0],positionOffset:this.positionOffset.length>2?this.positionOffset.subarray(ge*2,ge*2+2):this.positionOffset}}else this.count?this.batch=[{count:this.count,offset:0,color:this.color||[0,0,0,255],opacity:Array.isArray(this.opacity)?this.opacity[0]:this.opacity,baseline:this.baselineOffset[0],align:this.alignOffset?this.alignOffset[0]:0,atlas:this.fontAtlas[0],positionOffset:this.positionOffset}]:this.batch=[]}},E.prototype.destroy=function(){},E.prototype.kerning=!0,E.prototype.position={constant:new Float32Array(2)},E.prototype.translate=null,E.prototype.scale=null,E.prototype.font=null,E.prototype.text="",E.prototype.positionOffset=[0,0],E.prototype.opacity=1,E.prototype.color=new Uint8Array([0,0,0,255]),E.prototype.alignOffset=[0,0],E.maxAtlasSize=1024,E.atlasCanvas=document.createElement("canvas"),E.atlasContext=E.atlasCanvas.getContext("2d",{alpha:!1}),E.baseFontSize=64,E.fonts={};function m(b){return typeof b=="function"&&b._gl&&b.prop&&b.texture&&b.buffer}H.exports=E}}),_T=Ye({"src/lib/prepare_regl.js"(X,H){"use strict";var g=g5(),x=nk();H.exports=function(M,e,t){var r=M._fullLayout,o=!0;return r._glcanvas.each(function(a){if(a.regl){a.regl.preloadCachedCode(t);return}if(!(a.pick&&!r._has("parcoords"))){try{a.regl=x({canvas:this,attributes:{antialias:!a.pick,preserveDrawingBuffer:!0},pixelRatio:M._context.plotGlPixelRatio||window.devicePixelRatio,extensions:e||[],cachedCode:t||{}})}catch{o=!1}a.regl||(o=!1),o&&this.addEventListener("webglcontextlost",function(i){M&&M.emit&&M.emit("plotly_webglcontextlost",{event:i,layer:a.key})},!1)}}),o||g({container:r._glcontainer.node()}),o}}}),lk=Ye({"src/traces/scattergl/plot.js"(c,H){"use strict";var g=N5(),x=J5(),A=Yj(),M=cV(),e=ta(),t=Jd().selectMode,r=_T(),o=uu(),a=zS(),i=F5().styleTextSelection,n={};function s(h,v,p,T){var l=h._size,_=h.width*T,w=h.height*T,S=l.l*T,E=l.b*T,m=l.r*T,b=l.t*T,d=l.w*T,u=l.h*T;return[S+v.domain[0]*d,E+p.domain[0]*u,_-m-(1-v.domain[1])*d,w-b-(1-p.domain[1])*u]}var c=H.exports=function(v,p,T){if(T.length){var l=v._fullLayout,_=p._scene,w=p.xaxis,S=p.yaxis,E,m;if(_){var b=r(v,["ANGLE_instanced_arrays","OES_element_index_uint"],n);if(!b){_.init();return}var d=_.count,u=l._glcanvas.data()[0].regl;if(a(v,p,T),_.dirty){if((_.line2d||_.error2d)&&!(_.scatter2d||_.fill2d||_.glText)&&u.clear({}),_.error2d===!0&&(_.error2d=A(u)),_.line2d===!0&&(_.line2d=x(u)),_.scatter2d===!0&&(_.scatter2d=g(u)),_.fill2d===!0&&(_.fill2d=x(u)),_.glText===!0)for(_.glText=new Array(d),E=0;E_.glText.length){var y=d-_.glText.length;for(E=0;Eie&&(isNaN(ee[fe])||isNaN(ee[fe+1]));)fe-=2;j.positions=ee.slice(ie,fe+2)}return j}),_.line2d.update(_.lineOptions)),_.error2d){var L=(_.errorXOptions||[]).concat(_.errorYOptions||[]);_.error2d.update(L)}_.scatter2d&&_.scatter2d.update(_.markerOptions),_.fillOrder=e.repeat(null,d),_.fill2d&&(_.fillOptions=_.fillOptions.map(function(j,ee){var ie=T[ee];if(!(!j||!ie||!ie[0]||!ie[0].trace)){var fe=ie[0],be=fe.trace,Ae=fe.t,Be=_.lineOptions[ee],Ie,Ze,at=[];be._ownfill&&at.push(ee),be._nexttrace&&at.push(ee+1),at.length&&(_.fillOrder[ee]=at);var it=[],et=Be&&Be.positions||Ae.positions,lt,Me;if(be.fill==="tozeroy"){for(lt=0;ltlt&&isNaN(et[Me+1]);)Me-=2;et[lt+1]!==0&&(it=[et[lt],0]),it=it.concat(et.slice(lt,Me+2)),et[Me+1]!==0&&(it=it.concat([et[Me],0]))}else if(be.fill==="tozerox"){for(lt=0;ltlt&&isNaN(et[Me]);)Me-=2;et[lt]!==0&&(it=[0,et[lt+1]]),it=it.concat(et.slice(lt,Me+2)),et[Me]!==0&&(it=it.concat([0,et[Me+1]]))}else if(be.fill==="toself"||be.fill==="tonext"){for(it=[],Ie=0,j.splitNull=!0,Ze=0;Ze-1;for(E=0;Ew&&p||_i,f;for(y?f=p.sizeAvg||Math.max(p.size,3):f=A(c,v),S=0;S<_.length;S++)w=_[S],E=h[w],m=x.getFromId(s,c._diag[w][0])||{},b=x.getFromId(s,c._diag[w][1])||{},M(s,c,m,b,T[S],T[S],f);var P=o(s,c);return P.matrix||(P.matrix=!0),P.matrixOptions=p,P.selectedOptions=t(s,c,c.selected),P.unselectedOptions=t(s,c,c.unselected),[{x:!1,y:!1,t:{},trace:c}]}}}),mV=Ye({"node_modules/performance-now/lib/performance-now.js"(X,H){(function(){var g,x,A,M,e,t;typeof performance<"u"&&performance!==null&&performance.now?H.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(H.exports=function(){return(g()-e)/1e6},x=process.hrtime,g=function(){var r;return r=x(),r[0]*1e9+r[1]},M=g(),t=process.uptime()*1e9,e=M-t):Date.now?(H.exports=function(){return Date.now()-A},A=Date.now()):(H.exports=function(){return new Date().getTime()-A},A=new Date().getTime())}).call(X)}}),gV=Ye({"node_modules/raf/index.js"(X,H){var g=mV(),x=window,A=["moz","webkit"],M="AnimationFrame",e=x["request"+M],t=x["cancel"+M]||x["cancelRequest"+M];for(r=0;!e&&r{this.draw(),this.dirty=!0,this.planned=null})):(this.draw(),this.dirty=!0,M(()=>{this.dirty=!1})),this)},o.prototype.update=function(...s){if(!s.length)return;for(let v=0;vf||!p.lower&&y{c[T+_]=v})}this.scatter.draw(...c)}return this},o.prototype.destroy=function(){return this.traces.forEach(s=>{s.buffer&&s.buffer.destroy&&s.buffer.destroy()}),this.traces=null,this.passes=null,this.scatter.destroy(),this};function a(s,c,h){let v=s.id!=null?s.id:s,p=c,T=h;return v<<16|(p&255)<<8|T&255}function i(s,c,h){let v,p,T,l,_,w,S,E,m=s[c],b=s[h];return m.length>2?(v=m[0],T=m[2],p=m[1],l=m[3]):m.length?(v=p=m[0],T=l=m[1]):(v=m.x,p=m.y,T=m.x+m.width,l=m.y+m.height),b.length>2?(_=b[0],S=b[2],w=b[1],E=b[3]):b.length?(_=w=b[0],S=E=b[1]):(_=b.x,w=b.y,S=b.x+b.width,E=b.y+b.height),[_,p,S,l]}function n(s){if(typeof s=="number")return[s,s,s,s];if(s.length===2)return[s[0],s[1],s[0],s[1]];{let c=t(s);return[c.x,c.y,c.x+c.width,c.y+c.height]}}}}),xV=Ye({"src/traces/splom/plot.js"(X,H){"use strict";var g=_V(),x=ta(),A=Xc(),M=Jd().selectMode;H.exports=function(r,o,a){if(a.length)for(var i=0;i-1,B=M(p)||!!i.selectedpoints||F,O=!0;if(B){var I=i._length;if(i.selectedpoints){s.selectBatch=i.selectedpoints;var N=i.selectedpoints,U={};for(_=0;_=W[Q][0]&&U<=W[Q][1])return!0;return!1}function c(U){U.attr("x",-g.bar.captureWidth/2).attr("width",g.bar.captureWidth)}function h(U){U.attr("visibility","visible").style("visibility","visible").attr("fill","yellow").attr("opacity",0)}function v(U){if(!U.brush.filterSpecified)return"0,"+U.height;for(var W=p(U.brush.filter.getConsolidated(),U.height),Q=[0],ue,se,he,G=W.length?W[0][0]:null,$=0;$U[1]+Q||W=.9*U[1]+.1*U[0]?"n":W<=.9*U[0]+.1*U[1]?"s":"ns"}function l(){x.select(document.body).style("cursor",null)}function _(U){U.attr("stroke-dasharray",v)}function w(U,W){var Q=x.select(U).selectAll(".highlight, .highlight-shadow"),ue=W?Q.transition().duration(g.bar.snapDuration).each("end",W):Q;_(ue)}function S(U,W){var Q=U.brush,ue=Q.filterSpecified,se=NaN,he={},G;if(ue){var $=U.height,J=Q.filter.getConsolidated(),Z=p(J,$),re=NaN,ne=NaN,j=NaN;for(G=0;G<=Z.length;G++){var ee=Z[G];if(ee&&ee[0]<=W&&W<=ee[1]){re=G;break}else if(ne=G?G-1:NaN,ee&&ee[0]>W){j=G;break}}if(se=re,isNaN(se)&&(isNaN(ne)||isNaN(j)?se=isNaN(ne)?j:ne:se=W-Z[ne][1]=Be[0]&&Ae<=Be[1]){he.clickableOrdinalRange=Be;break}}}return he}function E(U,W){x.event.sourceEvent.stopPropagation();var Q=W.height-x.mouse(U)[1]-2*g.verticalPadding,ue=W.unitToPaddedPx.invert(Q),se=W.brush,he=S(W,Q),G=he.interval,$=se.svgBrush;if($.wasDragged=!1,$.grabbingBar=he.region==="ns",$.grabbingBar){var J=G.map(W.unitToPaddedPx);$.grabPoint=Q-J[0]-g.verticalPadding,$.barLength=J[1]-J[0]}$.clickableOrdinalRange=he.clickableOrdinalRange,$.stayingIntervals=W.multiselect&&se.filterSpecified?se.filter.getConsolidated():[],G&&($.stayingIntervals=$.stayingIntervals.filter(function(Z){return Z[0]!==G[0]&&Z[1]!==G[1]})),$.startExtent=he.region?G[he.region==="s"?1:0]:ue,W.parent.inBrushDrag=!0,$.brushStartCallback()}function m(U,W){x.event.sourceEvent.stopPropagation();var Q=W.height-x.mouse(U)[1]-2*g.verticalPadding,ue=W.brush.svgBrush;ue.wasDragged=!0,ue._dragging=!0,ue.grabbingBar?ue.newExtent=[Q-ue.grabPoint,Q+ue.barLength-ue.grabPoint].map(W.unitToPaddedPx.invert):ue.newExtent=[ue.startExtent,W.unitToPaddedPx.invert(Q)].sort(e),W.brush.filterSpecified=!0,ue.extent=ue.stayingIntervals.concat([ue.newExtent]),ue.brushCallback(W),w(U.parentNode)}function b(U,W){var Q=W.brush,ue=Q.filter,se=Q.svgBrush;se._dragging||(d(U,W),m(U,W),W.brush.svgBrush.wasDragged=!1),se._dragging=!1;var he=x.event;he.sourceEvent.stopPropagation();var G=se.grabbingBar;if(se.grabbingBar=!1,se.grabLocation=void 0,W.parent.inBrushDrag=!1,l(),!se.wasDragged){se.wasDragged=void 0,se.clickableOrdinalRange?Q.filterSpecified&&W.multiselect?se.extent.push(se.clickableOrdinalRange):(se.extent=[se.clickableOrdinalRange],Q.filterSpecified=!0):G?(se.extent=se.stayingIntervals,se.extent.length===0&&z(Q)):z(Q),se.brushCallback(W),w(U.parentNode),se.brushEndCallback(Q.filterSpecified?ue.getConsolidated():[]);return}var $=function(){ue.set(ue.getConsolidated())};if(W.ordinal){var J=W.unitTickvals;J[J.length-1]se.newExtent[0];se.extent=se.stayingIntervals.concat(Z?[se.newExtent]:[]),se.extent.length||z(Q),se.brushCallback(W),Z?w(U.parentNode,$):($(),w(U.parentNode))}else $();se.brushEndCallback(Q.filterSpecified?ue.getConsolidated():[])}function d(U,W){var Q=W.height-x.mouse(U)[1]-2*g.verticalPadding,ue=S(W,Q),se="crosshair";ue.clickableOrdinalRange?se="pointer":ue.region&&(se=ue.region+"-resize"),x.select(document.body).style("cursor",se)}function u(U){U.on("mousemove",function(W){x.event.preventDefault(),W.parent.inBrushDrag||d(this,W)}).on("mouseleave",function(W){W.parent.inBrushDrag||l()}).call(x.behavior.drag().on("dragstart",function(W){E(this,W)}).on("drag",function(W){m(this,W)}).on("dragend",function(W){b(this,W)}))}function y(U,W){return U[0]-W[0]}function f(U,W,Q){var ue=Q._context.staticPlot,se=U.selectAll(".background").data(M);se.enter().append("rect").classed("background",!0).call(c).call(h).style("pointer-events",ue?"none":"auto").attr("transform",t(0,g.verticalPadding)),se.call(u).attr("height",function($){return $.height-g.verticalPadding});var he=U.selectAll(".highlight-shadow").data(M);he.enter().append("line").classed("highlight-shadow",!0).attr("x",-g.bar.width/2).attr("stroke-width",g.bar.width+g.bar.strokeWidth).attr("stroke",W).attr("opacity",g.bar.strokeOpacity).attr("stroke-linecap","butt"),he.attr("y1",function($){return $.height}).call(_);var G=U.selectAll(".highlight").data(M);G.enter().append("line").classed("highlight",!0).attr("x",-g.bar.width/2).attr("stroke-width",g.bar.width-g.bar.strokeWidth).attr("stroke",g.bar.fillColor).attr("opacity",g.bar.fillOpacity).attr("stroke-linecap","butt"),G.attr("y1",function($){return $.height}).call(_)}function P(U,W,Q){var ue=U.selectAll("."+g.cn.axisBrush).data(M,A);ue.enter().append("g").classed(g.cn.axisBrush,!0),f(ue,W,Q)}function L(U){return U.svgBrush.extent.map(function(W){return W.slice()})}function z(U){U.filterSpecified=!1,U.svgBrush.extent=[[-1/0,1/0]]}function F(U){return function(Q){var ue=Q.brush,se=L(ue),he=se.slice();ue.filter.set(he),U()}}function B(U){for(var W=U.slice(),Q=[],ue,se=W.shift();se;){for(ue=se.slice();(se=W.shift())&&se[0]<=ue[1];)ue[1]=Math.max(ue[1],se[1]);Q.push(ue)}return Q.length===1&&Q[0][0]>Q[0][1]&&(Q=[]),Q}function O(){var U=[],W,Q;return{set:function(ue){U=ue.map(function(se){return se.slice().sort(e)}).sort(y),U.length===1&&U[0][0]===-1/0&&U[0][1]===1/0&&(U=[[0,-1]]),W=B(U),Q=U.reduce(function(se,he){return[Math.min(se[0],he[0]),Math.max(se[1],he[1])]},[1/0,-1/0])},get:function(){return U.slice()},getConsolidated:function(){return W},getBounds:function(){return Q}}}function I(U,W,Q,ue,se,he){var G=O();return G.set(Q),{filter:G,filterSpecified:W,svgBrush:{extent:[],brushStartCallback:ue,brushCallback:F(se),brushEndCallback:he}}}function N(U,W){if(Array.isArray(U[0])?(U=U.map(function(ue){return ue.sort(e)}),W.multiselect?U=B(U.sort(y)):U=[U[0]]):U=[U.sort(e)],W.tickvals){var Q=W.tickvals.slice().sort(e);if(U=U.map(function(ue){var se=[n(0,Q,ue[0],[]),n(1,Q,ue[1],[])];if(se[1]>se[0])return se}).filter(function(ue){return ue}),!U.length)return}return U.length>1?U:U[0]}H.exports={makeBrush:I,ensureAxisBrush:P,cleanRanges:N}}}),kV=Ye({"src/traces/parcoords/defaults.js"(X,H){"use strict";var g=ta(),x=Up().hasColorscale,A=sh(),M=Wu().defaults,e=up(),t=Co(),r=fk(),o=hk(),a=wx().maxDimensionCount,i=xT();function n(c,h,v,p,T){var l=T("line.color",v);if(x(c,"line")&&g.isArrayOrTypedArray(l)){if(l.length)return T("line.colorscale"),A(c,h,p,T,{prefix:"line.",cLetter:"c"}),l.length;h.line.color=v}return 1/0}function s(c,h,v,p){function T(E,m){return g.coerce(c,h,r.dimensions,E,m)}var l=T("values"),_=T("visible");if(l&&l.length||(_=h.visible=!1),_){T("label"),T("tickvals"),T("ticktext"),T("tickformat");var w=T("range");h._ax={_id:"y",type:"linear",showexponent:"all",exponentformat:"B",range:w},t.setConvert(h._ax,p.layout),T("multiselect");var S=T("constraintrange");S&&(h.constraintrange=o.cleanRanges(S,h))}}H.exports=function(h,v,p,T){function l(m,b){return g.coerce(h,v,r,m,b)}var _=h.dimensions;Array.isArray(_)&&_.length>a&&(g.log("parcoords traces support up to "+a+" dimensions at the moment"),_.splice(a));var w=e(h,v,{name:"dimensions",layout:T,handleItemDefaults:s}),S=n(h,v,p,T,l);M(v,T,l),(!Array.isArray(w)||!w.length)&&(v.visible=!1),i(v,w,"values",S);var E=g.extendFlat({},T.font,{size:Math.round(T.font.size/1.2)});g.coerceFont(l,"labelfont",E),g.coerceFont(l,"tickfont",E,{autoShadowDflt:!0}),g.coerceFont(l,"rangefont",E),l("labelangle"),l("labelside"),l("unselected.line.color"),l("unselected.line.opacity")}}}),CV=Ye({"src/traces/parcoords/calc.js"(X,H){"use strict";var g=ta().isArrayOrTypedArray,x=Su(),A=kv().wrap;H.exports=function(t,r){var o,a;return x.hasColorscale(r,"line")&&g(r.line.color)?(o=r.line.color,a=x.extractOpts(r.line).colorscale,x.calc(t,r,{vals:o,containerStr:"line",cLetter:"c"})):(o=M(r._length),a=[[0,r.line.color],[1,r.line.color]]),A({lineColor:o,cscale:a})};function M(e){for(var t=new Array(e),r=0;r>>16,(X&65280)>>>8,X&255],alpha:1};if(typeof X=="number")return{space:"rgb",values:[X>>>16,(X&65280)>>>8,X&255],alpha:1};if(X=String(X).toLowerCase(),bT.default[X])A=bT.default[X].slice(),e="rgb";else if(X==="transparent")M=0,e="rgb",A=[0,0,0];else if(X[0]==="#"){var t=X.slice(1),r=t.length,o=r<=4;M=1,o?(A=[parseInt(t[0]+t[0],16),parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16)],r===4&&(M=parseInt(t[3]+t[3],16)/255)):(A=[parseInt(t[0]+t[1],16),parseInt(t[2]+t[3],16),parseInt(t[4]+t[5],16)],r===8&&(M=parseInt(t[6]+t[7],16)/255)),A[0]||(A[0]=0),A[1]||(A[1]=0),A[2]||(A[2]=0),e="rgb"}else if(x=/^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\s*\(([^\)]*)\)/.exec(X)){var a=x[1];e=a.replace(/a$/,"");var i=e==="cmyk"?4:e==="gray"?1:3;A=x[2].trim().split(/\s*[,\/]\s*|\s+/),e==="color"&&(e=A.shift()),A=A.map(function(n,s){if(n[n.length-1]==="%")return n=parseFloat(n)/100,s===3?n:e==="rgb"?n*255:e[0]==="h"||e[0]==="l"&&!s?n*100:e==="lab"?n*125:e==="lch"?s<2?n*150:n*360:e[0]==="o"&&!s?n:e==="oklab"?n*.4:e==="oklch"?s<2?n*.4:n*360:n;if(e[s]==="h"||s===2&&e[e.length-1]==="h"){if(wT[n]!==void 0)return wT[n];if(n.endsWith("deg"))return parseFloat(n);if(n.endsWith("turn"))return parseFloat(n)*360;if(n.endsWith("grad"))return parseFloat(n)*360/400;if(n.endsWith("rad"))return parseFloat(n)*180/Math.PI}return n==="none"?0:parseFloat(n)}),M=A.length>i?A.pop():1}else/[0-9](?:\s|\/|,)/.test(X)&&(A=X.match(/([0-9]+)/g).map(function(n){return parseFloat(n)}),e=((g=(H=X.match(/([a-z])/ig))==null?void 0:H.join(""))==null?void 0:g.toLowerCase())||"rgb");return{space:e,values:A,alpha:M}}var bT,pk,wT,PV=Qn({"node_modules/color-parse/index.js"(){bT=Ul(d5(),1),pk=LV,wT={red:0,orange:60,yellow:120,green:180,blue:240,purple:300}}}),Tx,dk=Qn({"node_modules/color-space/rgb.js"(){Tx={name:"rgb",min:[0,0,0],max:[255,255,255],channel:["red","green","blue"],alias:["RGB"]}}}),Ax,IV=Qn({"node_modules/color-space/hsl.js"(){dk(),Ax={name:"hsl",min:[0,0,0],max:[360,100,100],channel:["hue","saturation","lightness"],alias:["HSL"],rgb:function(X){var H=X[0]/360,g=X[1]/100,x=X[2]/100,A,M,e,t,r,o=0;if(g===0)return r=x*255,[r,r,r];for(M=x<.5?x*(1+g):x+g-x*g,A=2*x-M,t=[0,0,0];o<3;)e=H+1/3*-(o-1),e<0?e++:e>1&&e--,r=6*e<1?A+(M-A)*6*e:2*e<1?M:3*e<2?A+(M-A)*(2/3-e)*6:A,t[o++]=r*255;return t}},Tx.hsl=function(X){var H=X[0]/255,g=X[1]/255,x=X[2]/255,A=Math.min(H,g,x),M=Math.max(H,g,x),e=M-A,t,r,o;return M===A?t=0:H===M?t=(g-x)/e:g===M?t=2+(x-H)/e:x===M&&(t=4+(H-g)/e),t=Math.min(t*60,360),t<0&&(t+=360),o=(A+M)/2,M===A?r=0:o<=.5?r=e/(M+A):r=e/(2-M-A),[t,r*100,o*100]}}}),vk={};Ps(vk,{default:()=>RV});function RV(X){Array.isArray(X)&&X.raw&&(X=String.raw(...arguments)),X instanceof Number&&(X=+X);var H,g,x,A=pk(X);if(!A.space)return[];let M=A.space[0]==="h"?Ax.min:Tx.min,e=A.space[0]==="h"?Ax.max:Tx.max;return H=Array(3),H[0]=Math.min(Math.max(A.values[0],M[0]),e[0]),H[1]=Math.min(Math.max(A.values[1],M[1]),e[1]),H[2]=Math.min(Math.max(A.values[2],M[2]),e[2]),A.space[0]==="h"&&(H=Ax.rgb(H)),H.push(Math.min(Math.max(A.alpha,0),1)),H}var DV=Qn({"node_modules/color-rgba/index.js"(){PV(),dk(),IV()}}),mk=Ye({"src/traces/parcoords/helpers.js"(X){"use strict";var H=ta().isTypedArray;X.convertTypedArray=function(g){return H(g)?Array.prototype.slice.call(g):g},X.isOrdinal=function(g){return!!g.tickvals},X.isVisible=function(g){return g.visible||!("visible"in g)}}}),zV=Ye({"src/traces/parcoords/lines.js"(X,H){"use strict";var g=["precision highp float;","","varying vec4 fragColor;","","attribute vec4 p01_04, p05_08, p09_12, p13_16,"," p17_20, p21_24, p25_28, p29_32,"," p33_36, p37_40, p41_44, p45_48,"," p49_52, p53_56, p57_60, colors;","","uniform mat4 dim0A, dim1A, dim0B, dim1B, dim0C, dim1C, dim0D, dim1D,"," loA, hiA, loB, hiB, loC, hiC, loD, hiD;","","uniform vec2 resolution, viewBoxPos, viewBoxSize;","uniform float maskHeight;","uniform float drwLayer; // 0: context, 1: focus, 2: pick","uniform vec4 contextColor;","uniform sampler2D maskTexture, palette;","","bool isPick = (drwLayer > 1.5);","bool isContext = (drwLayer < 0.5);","","const vec4 ZEROS = vec4(0.0, 0.0, 0.0, 0.0);","const vec4 UNITS = vec4(1.0, 1.0, 1.0, 1.0);","","float val(mat4 p, mat4 v) {"," return dot(matrixCompMult(p, v) * UNITS, UNITS);","}","","float axisY(float ratio, mat4 A, mat4 B, mat4 C, mat4 D) {"," float y1 = val(A, dim0A) + val(B, dim0B) + val(C, dim0C) + val(D, dim0D);"," float y2 = val(A, dim1A) + val(B, dim1B) + val(C, dim1C) + val(D, dim1D);"," return y1 * (1.0 - ratio) + y2 * ratio;","}","","int iMod(int a, int b) {"," return a - b * (a / b);","}","","bool fOutside(float p, float lo, float hi) {"," return (lo < hi) && (lo > p || p > hi);","}","","bool vOutside(vec4 p, vec4 lo, vec4 hi) {"," return ("," fOutside(p[0], lo[0], hi[0]) ||"," fOutside(p[1], lo[1], hi[1]) ||"," fOutside(p[2], lo[2], hi[2]) ||"," fOutside(p[3], lo[3], hi[3])"," );","}","","bool mOutside(mat4 p, mat4 lo, mat4 hi) {"," return ("," vOutside(p[0], lo[0], hi[0]) ||"," vOutside(p[1], lo[1], hi[1]) ||"," vOutside(p[2], lo[2], hi[2]) ||"," vOutside(p[3], lo[3], hi[3])"," );","}","","bool outsideBoundingBox(mat4 A, mat4 B, mat4 C, mat4 D) {"," return mOutside(A, loA, hiA) ||"," mOutside(B, loB, hiB) ||"," mOutside(C, loC, hiC) ||"," mOutside(D, loD, hiD);","}","","bool outsideRasterMask(mat4 A, mat4 B, mat4 C, mat4 D) {"," mat4 pnts[4];"," pnts[0] = A;"," pnts[1] = B;"," pnts[2] = C;"," pnts[3] = D;",""," for(int i = 0; i < 4; ++i) {"," for(int j = 0; j < 4; ++j) {"," for(int k = 0; k < 4; ++k) {"," if(0 == iMod("," int(255.0 * texture2D(maskTexture,"," vec2("," (float(i * 2 + j / 2) + 0.5) / 8.0,"," (pnts[i][j][k] * (maskHeight - 1.0) + 1.0) / maskHeight"," ))[3]"," ) / int(pow(2.0, float(iMod(j * 4 + k, 8)))),"," 2"," )) return true;"," }"," }"," }"," return false;","}","","vec4 position(bool isContext, float v, mat4 A, mat4 B, mat4 C, mat4 D) {"," float x = 0.5 * sign(v) + 0.5;"," float y = axisY(x, A, B, C, D);"," float z = 1.0 - abs(v);",""," z += isContext ? 0.0 : 2.0 * float("," outsideBoundingBox(A, B, C, D) ||"," outsideRasterMask(A, B, C, D)"," );",""," return vec4("," 2.0 * (vec2(x, y) * viewBoxSize + viewBoxPos) / resolution - 1.0,"," z,"," 1.0"," );","}","","void main() {"," mat4 A = mat4(p01_04, p05_08, p09_12, p13_16);"," mat4 B = mat4(p17_20, p21_24, p25_28, p29_32);"," mat4 C = mat4(p33_36, p37_40, p41_44, p45_48);"," mat4 D = mat4(p49_52, p53_56, p57_60, ZEROS);",""," float v = colors[3];",""," gl_Position = position(isContext, v, A, B, C, D);",""," fragColor ="," isContext ? vec4(contextColor) :"," isPick ? vec4(colors.rgb, 1.0) : texture2D(palette, vec2(abs(v), 0.5));","}"].join(` +`),x=["precision highp float;","","varying vec4 fragColor;","","void main() {"," gl_FragColor = fragColor;","}"].join(` +`),A=wx().maxDimensionCount,M=ta(),e=1e-6,t=2048,r=new Uint8Array(4),o=new Uint8Array(4),a={shape:[256,1],format:"rgba",type:"uint8",mag:"nearest",min:"nearest"};function i(b){b.read({x:0,y:0,width:1,height:1,data:r})}function n(b,d,u,y,f){var P=b._gl;P.enable(P.SCISSOR_TEST),P.scissor(d,u,y,f),b.clear({color:[0,0,0,0],depth:1})}function s(b,d,u,y,f,P){var L=P.key;function z(F){var B=Math.min(y,f-F*y);F===0&&(window.cancelAnimationFrame(u.currentRafs[L]),delete u.currentRafs[L],n(b,P.scissorX,P.scissorY,P.scissorWidth,P.viewBoxSize[1])),!u.clearOnly&&(P.count=2*B,P.offset=2*F*y,d(P),F*y+B>>8*d)%256/255}function p(b,d,u){for(var y=new Array(b*(A+4)),f=0,P=0;PIe&&(Ie=ne[fe].dim1.canvasX,Ae=fe);ie===0&&n(f,0,0,B.canvasWidth,B.canvasHeight);var Ze=G(u);for(fe=0;fefe._length&&(lt=lt.slice(0,fe._length));var Me=fe.tickvals,ge;function ce(Ct,St){return{val:Ct,text:ge[St]}}function ze(Ct,St){return Ct.val-St.val}if(A(Me)&&Me.length){x.isTypedArray(Me)&&(Me=Array.from(Me)),ge=fe.ticktext,!A(ge)||!ge.length?ge=Me.map(M(fe.tickformat)):ge.length>Me.length?ge=ge.slice(0,Me.length):Me.length>ge.length&&(Me=Me.slice(0,ge.length));for(var tt=1;tt=St||ar>=Ot)return;var Cr=Qe.lineLayer.readPixel(ur,Ot-1-ar),vr=Cr[3]!==0,_r=vr?Cr[2]+256*(Cr[1]+256*Cr[0]):null,yt={x:ur,y:ar,clientX:Ct.clientX,clientY:Ct.clientY,dataIndex:Qe.model.key,curveNumber:_r};_r!==Ae&&(vr?$.hover(yt):$.unhover&&$.unhover(yt),Ae=_r)}}),be.style("opacity",function(Qe){return Qe.pick?0:1}),re.style("background","rgba(255, 255, 255, 0)");var Ie=re.selectAll("."+T.cn.parcoords).data(fe,c);Ie.exit().remove(),Ie.enter().append("g").classed(T.cn.parcoords,!0).style("shape-rendering","crispEdges").style("pointer-events","none"),Ie.attr("transform",function(Qe){return o(Qe.model.translateX,Qe.model.translateY)});var Ze=Ie.selectAll("."+T.cn.parcoordsControlView).data(h,c);Ze.enter().append("g").classed(T.cn.parcoordsControlView,!0),Ze.attr("transform",function(Qe){return o(Qe.model.pad.l,Qe.model.pad.t)});var at=Ze.selectAll("."+T.cn.yAxis).data(function(Qe){return Qe.dimensions},c);at.enter().append("g").classed(T.cn.yAxis,!0),Ze.each(function(Qe){N(at,Qe,j)}),be.each(function(Qe){if(Qe.viewModel){!Qe.lineLayer||$?Qe.lineLayer=_(this,Qe):Qe.lineLayer.update(Qe),(Qe.key||Qe.key===0)&&(Qe.viewModel[Qe.key]=Qe.lineLayer);var Ct=!Qe.context||$;Qe.lineLayer.render(Qe.viewModel.panels,Ct)}}),at.attr("transform",function(Qe){return o(Qe.xScale(Qe.xIndex),0)}),at.call(g.behavior.drag().origin(function(Qe){return Qe}).on("drag",function(Qe){var Ct=Qe.parent;ie.linePickActive(!1),Qe.x=Math.max(-T.overdrag,Math.min(Qe.model.width+T.overdrag,g.event.x)),Qe.canvasX=Qe.x*Qe.model.canvasPixelRatio,at.sort(function(St,Ot){return St.x-Ot.x}).each(function(St,Ot){St.xIndex=Ot,St.x=Qe===St?St.x:St.xScale(St.xIndex),St.canvasX=St.x*St.model.canvasPixelRatio}),N(at,Ct,j),at.filter(function(St){return Math.abs(Qe.xIndex-St.xIndex)!==0}).attr("transform",function(St){return o(St.xScale(St.xIndex),0)}),g.select(this).attr("transform",o(Qe.x,0)),at.each(function(St,Ot,jt){jt===Qe.parent.key&&(Ct.dimensions[Ot]=St)}),Ct.contextLayer&&Ct.contextLayer.render(Ct.panels,!1,!L(Ct)),Ct.focusLayer.render&&Ct.focusLayer.render(Ct.panels)}).on("dragend",function(Qe){var Ct=Qe.parent;Qe.x=Qe.xScale(Qe.xIndex),Qe.canvasX=Qe.x*Qe.model.canvasPixelRatio,N(at,Ct,j),g.select(this).attr("transform",function(St){return o(St.x,0)}),Ct.contextLayer&&Ct.contextLayer.render(Ct.panels,!1,!L(Ct)),Ct.focusLayer&&Ct.focusLayer.render(Ct.panels),Ct.pickLayer&&Ct.pickLayer.render(Ct.panels,!0),ie.linePickActive(!0),$&&$.axesMoved&&$.axesMoved(Ct.key,Ct.dimensions.map(function(St){return St.crossfilterDimensionIndex}))})),at.exit().remove();var it=at.selectAll("."+T.cn.axisOverlays).data(h,c);it.enter().append("g").classed(T.cn.axisOverlays,!0),it.selectAll("."+T.cn.axis).remove();var et=it.selectAll("."+T.cn.axis).data(h,c);et.enter().append("g").classed(T.cn.axis,!0),et.each(function(Qe){var Ct=Qe.model.height/Qe.model.tickDistance,St=Qe.domainScale,Ot=St.domain();g.select(this).call(g.svg.axis().orient("left").tickSize(4).outerTickSize(2).ticks(Ct,Qe.tickFormat).tickValues(Qe.ordinal?Ot:null).tickFormat(function(jt){return p.isOrdinal(Qe)?jt:W(Qe.model.dimensions[Qe.visibleIndex],jt)}).scale(St)),i.font(et.selectAll("text"),Qe.model.tickFont)}),et.selectAll(".domain, .tick>line").attr("fill","none").attr("stroke","black").attr("stroke-opacity",.25).attr("stroke-width","1px"),et.selectAll("text").style("cursor","default");var lt=it.selectAll("."+T.cn.axisHeading).data(h,c);lt.enter().append("g").classed(T.cn.axisHeading,!0);var Me=lt.selectAll("."+T.cn.axisTitle).data(h,c);Me.enter().append("text").classed(T.cn.axisTitle,!0).attr("text-anchor","middle").style("cursor","ew-resize").style("pointer-events",J?"none":"auto"),Me.text(function(Qe){return Qe.label}).each(function(Qe){var Ct=g.select(this);i.font(Ct,Qe.model.labelFont),a.convertToTspans(Ct,se)}).attr("transform",function(Qe){var Ct=I(Qe.model.labelAngle,Qe.model.labelSide),St=T.axisTitleOffset;return(Ct.dir>0?"":o(0,2*St+Qe.model.height))+r(Ct.degrees)+o(-St*Ct.dx,-St*Ct.dy)}).attr("text-anchor",function(Qe){var Ct=I(Qe.model.labelAngle,Qe.model.labelSide),St=Math.abs(Ct.dx),Ot=Math.abs(Ct.dy);return 2*St>Ot?Ct.dir*Ct.dx<0?"start":"end":"middle"});var ge=it.selectAll("."+T.cn.axisExtent).data(h,c);ge.enter().append("g").classed(T.cn.axisExtent,!0);var ce=ge.selectAll("."+T.cn.axisExtentTop).data(h,c);ce.enter().append("g").classed(T.cn.axisExtentTop,!0),ce.attr("transform",o(0,-T.axisExtentOffset));var ze=ce.selectAll("."+T.cn.axisExtentTopText).data(h,c);ze.enter().append("text").classed(T.cn.axisExtentTopText,!0).call(B),ze.text(function(Qe){return Q(Qe,!0)}).each(function(Qe){i.font(g.select(this),Qe.model.rangeFont)});var tt=ge.selectAll("."+T.cn.axisExtentBottom).data(h,c);tt.enter().append("g").classed(T.cn.axisExtentBottom,!0),tt.attr("transform",function(Qe){return o(0,Qe.model.height+T.axisExtentOffset)});var nt=tt.selectAll("."+T.cn.axisExtentBottomText).data(h,c);nt.enter().append("text").classed(T.cn.axisExtentBottomText,!0).attr("dy","0.75em").call(B),nt.text(function(Qe){return Q(Qe,!1)}).each(function(Qe){i.font(g.select(this),Qe.model.rangeFont)}),l.ensureAxisBrush(it,ee,se)}}}),gk=Ye({"src/traces/parcoords/plot.js"(r,H){"use strict";var g=FV(),x=_T(),A=mk().isVisible,M={};function e(o,a,i){var n=a.indexOf(i),s=o.indexOf(n);return s===-1&&(s+=a.length),s}function t(o,a){return function(n,s){return e(o,a,n)-e(o,a,s)}}var r=H.exports=function(a,i){var n=a._fullLayout,s=x(a,[],M);if(s){var c={},h={},v={},p={},T=n._size;i.forEach(function(E,m){var b=E[0].trace;v[m]=b.index;var d=p[m]=b.index;c[m]=a.data[d].dimensions,h[m]=a.data[d].dimensions.slice()});var l=function(E,m,b){var d=h[E][m],u=b.map(function(F){return F.slice()}),y="dimensions["+m+"].constraintrange",f=n._tracePreGUI[a._fullData[v[E]]._fullInput.uid];if(f[y]===void 0){var P=d.constraintrange;f[y]=P||null}var L=a._fullData[v[E]].dimensions[m];u.length?(u.length===1&&(u=u[0]),d.constraintrange=u,L.constraintrange=u.slice(),u=[u]):(delete d.constraintrange,delete L.constraintrange,u=null);var z={};z[y]=u,a.emit("plotly_restyle",[z,[p[E]]])},_=function(E){a.emit("plotly_hover",E)},w=function(E){a.emit("plotly_unhover",E)},S=function(E,m){var b=t(m,h[E].filter(A));c[E].sort(b),h[E].filter(function(d){return!A(d)}).sort(function(d){return h[E].indexOf(d)}).forEach(function(d){c[E].splice(c[E].indexOf(d),1),c[E].splice(h[E].indexOf(d),0,d)}),a.emit("plotly_restyle",[{dimensions:[c[E]]},[p[E]]])};g(a,i,{width:T.w,height:T.h,margin:{t:T.t,r:T.r,b:T.b,l:T.l}},{filterChanged:l,hover:_,unhover:w,axesMoved:S})}};r.reglPrecompiled=M}}),OV=Ye({"src/traces/parcoords/base_plot.js"(X){"use strict";var H=_n(),g=jh().getModuleCalcData,x=gk(),A=vd();X.name="parcoords",X.plot=function(M){var e=g(M.calcdata,"parcoords")[0];e.length&&x(M,e)},X.clean=function(M,e,t,r){var o=r._has&&r._has("parcoords"),a=e._has&&e._has("parcoords");o&&!a&&(r._paperdiv.selectAll(".parcoords").remove(),r._glimages.selectAll("*").remove())},X.toSVG=function(M){var e=M._fullLayout._glimages,t=H.select(M).selectAll(".svg-container"),r=t.filter(function(a,i){return i===t.size()-1}).selectAll(".gl-canvas-context, .gl-canvas-focus");function o(){var a=this,i=a.toDataURL("image/png"),n=e.append("svg:image");n.attr({xmlns:A.svg,"xlink:href":i,preserveAspectRatio:"none",x:0,y:0,width:a.style.width,height:a.style.height})}r.each(o),window.setTimeout(function(){H.selectAll("#filterBarPattern").attr("id","filterBarPattern")},60)}}}),BV=Ye({"src/traces/parcoords/base_index.js"(X,H){"use strict";H.exports={attributes:fk(),supplyDefaults:kV(),calc:CV(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcoords",basePlotModule:OV(),categories:["gl","regl","noOpacity","noHover"],meta:{}}}}),NV=Ye({"src/traces/parcoords/index.js"(X,H){"use strict";var g=BV();g.plot=gk(),H.exports=g}}),UV=Ye({"lib/parcoords.js"(X,H){"use strict";H.exports=NV()}}),yk=Ye({"src/traces/parcats/attributes.js"(X,H){"use strict";var g=Oo().extendFlat,x=Pl(),A=Au(),M=tu(),e=xs().hovertemplateAttrs,t=Wu().attributes,r=g({editType:"calc"},M("line",{editTypeOverride:"calc"}),{shape:{valType:"enumerated",values:["linear","hspline"],dflt:"linear",editType:"plot"},hovertemplate:e({editType:"plot",arrayOk:!1},{keys:["count","probability"]})});H.exports={domain:t({name:"parcats",trace:!0,editType:"calc"}),hoverinfo:g({},x.hoverinfo,{flags:["count","probability"],editType:"plot",arrayOk:!1}),hoveron:{valType:"enumerated",values:["category","color","dimension"],dflt:"category",editType:"plot"},hovertemplate:e({editType:"plot",arrayOk:!1},{keys:["count","probability","category","categorycount","colorcount","bandcolorcount"]}),arrangement:{valType:"enumerated",values:["perpendicular","freeform","fixed"],dflt:"perpendicular",editType:"plot"},bundlecolors:{valType:"boolean",dflt:!0,editType:"plot"},sortpaths:{valType:"enumerated",values:["forward","backward"],dflt:"forward",editType:"plot"},labelfont:A({editType:"calc"}),tickfont:A({autoShadowDflt:!0,editType:"calc"}),dimensions:{_isLinkedToArray:"dimension",label:{valType:"string",editType:"calc"},categoryorder:{valType:"enumerated",values:["trace","category ascending","category descending","array"],dflt:"trace",editType:"calc"},categoryarray:{valType:"data_array",editType:"calc"},ticktext:{valType:"data_array",editType:"calc"},values:{valType:"data_array",dflt:[],editType:"calc"},displayindex:{valType:"integer",editType:"calc"},editType:"calc",visible:{valType:"boolean",dflt:!0,editType:"calc"}},line:r,counts:{valType:"number",min:0,dflt:1,arrayOk:!0,editType:"calc"},customdata:void 0,hoverlabel:void 0,ids:void 0,legend:void 0,legendgroup:void 0,legendrank:void 0,opacity:void 0,selectedpoints:void 0,showlegend:void 0}}}),jV=Ye({"src/traces/parcats/defaults.js"(X,H){"use strict";var g=ta(),x=Up().hasColorscale,A=sh(),M=Wu().defaults,e=up(),t=yk(),r=xT(),o=xp().isTypedArraySpec;function a(n,s,c,h,v){v("line.shape"),v("line.hovertemplate");var p=v("line.color",h.colorway[0]);if(x(n,"line")&&g.isArrayOrTypedArray(p)){if(p.length)return v("line.colorscale"),A(n,s,h,v,{prefix:"line.",cLetter:"c"}),p.length;s.line.color=c}return 1/0}function i(n,s){function c(w,S){return g.coerce(n,s,t.dimensions,w,S)}var h=c("values"),v=c("visible");if(h&&h.length||(v=s.visible=!1),v){c("label"),c("displayindex",s._index);var p=n.categoryarray,T=g.isArrayOrTypedArray(p)&&p.length>0||o(p),l;T&&(l="array");var _=c("categoryorder",l);_==="array"?(c("categoryarray"),c("ticktext")):(delete n.categoryarray,delete n.ticktext),!T&&_==="array"&&(s.categoryorder="trace")}}H.exports=function(s,c,h,v){function p(w,S){return g.coerce(s,c,t,w,S)}var T=e(s,c,{name:"dimensions",handleItemDefaults:i}),l=a(s,c,h,v,p);M(c,v,p),(!Array.isArray(T)||!T.length)&&(c.visible=!1),r(c,T,"values",l),p("hoveron"),p("hovertemplate"),p("arrangement"),p("bundlecolors"),p("sortpaths"),p("counts");var _=v.font;g.coerceFont(p,"labelfont",_,{overrideDflt:{size:Math.round(_.size)}}),g.coerceFont(p,"tickfont",_,{autoShadowDflt:!0,overrideDflt:{size:Math.round(_.size/1.2)}})}}}),VV=Ye({"src/traces/parcats/calc.js"(X,H){"use strict";var g=kv().wrap,x=Up().hasColorscale,A=jp(),M=tS(),e=Bo(),t=ta(),r=jo();H.exports=function(_,w){var S=t.filterVisible(w.dimensions);if(S.length===0)return[];var E=S.map(function(G){var $;if(G.categoryorder==="trace")$=null;else if(G.categoryorder==="array")$=G.categoryarray;else{$=M(G.values);for(var J=!0,Z=0;Z<$.length;Z++)if(!r($[Z])){J=!1;break}$.sort(J?t.sorterAsc:void 0),G.categoryorder==="category descending"&&($=$.reverse())}return h(G.values,$)}),m,b,d;t.isArrayOrTypedArray(w.counts)?m=w.counts:m=[w.counts],v(S),S.forEach(function(G,$){p(G,E[$])});var u=w.line,y;u?(x(w,"line")&&A(_,w,{vals:w.line.color,containerStr:"line",cLetter:"c"}),y=e.tryColorscale(u)):y=t.identity;function f(G){var $,J;return t.isArrayOrTypedArray(u.color)?($=u.color[G%u.color.length],J=$):$=u.color,{color:y($),rawColor:J}}var P=S[0].values.length,L={},z=E.map(function(G){return G.inds});d=0;var F,B;for(F=0;F=l.length||_[l[w]]!==void 0)return!1;_[l[w]]=!0}return!0}}}),qV=Ye({"src/traces/parcats/parcats.js"(X,H){"use strict";var g=_n(),x=(f0(),Hf(fg)).interpolateNumber,A=E2(),M=Lc(),e=ta(),t=e.strTranslate,r=Bo(),o=bh(),a=jl();function i(Z,re,ne,j){var ee=re._context.staticPlot,ie=Z.map(se.bind(0,re,ne)),fe=j.selectAll("g.parcatslayer").data([null]);fe.enter().append("g").attr("class","parcatslayer").style("pointer-events",ee?"none":"all");var be=fe.selectAll("g.trace.parcats").data(ie,n),Ae=be.enter().append("g").attr("class","trace parcats");be.attr("transform",function(ce){return t(ce.x,ce.y)}),Ae.append("g").attr("class","paths");var Be=be.select("g.paths"),Ie=Be.selectAll("path.path").data(function(ce){return ce.paths},n);Ie.attr("fill",function(ce){return ce.model.color});var Ze=Ie.enter().append("path").attr("class","path").attr("stroke-opacity",0).attr("fill",function(ce){return ce.model.color}).attr("fill-opacity",0);_(Ze),Ie.attr("d",function(ce){return ce.svgD}),Ze.empty()||Ie.sort(c),Ie.exit().remove(),Ie.on("mouseover",h).on("mouseout",v).on("click",l),Ae.append("g").attr("class","dimensions");var at=be.select("g.dimensions"),it=at.selectAll("g.dimension").data(function(ce){return ce.dimensions},n);it.enter().append("g").attr("class","dimension"),it.attr("transform",function(ce){return t(ce.x,0)}),it.exit().remove();var et=it.selectAll("g.category").data(function(ce){return ce.categories},n),lt=et.enter().append("g").attr("class","category");et.attr("transform",function(ce){return t(0,ce.y)}),lt.append("rect").attr("class","catrect").attr("pointer-events","none"),et.select("rect.catrect").attr("fill","none").attr("width",function(ce){return ce.width}).attr("height",function(ce){return ce.height}),E(lt);var Me=et.selectAll("rect.bandrect").data(function(ce){return ce.bands},n);Me.each(function(){e.raiseToTop(this)}),Me.attr("fill",function(ce){return ce.color});var ge=Me.enter().append("rect").attr("class","bandrect").attr("stroke-opacity",0).attr("fill",function(ce){return ce.color}).attr("fill-opacity",0);Me.attr("fill",function(ce){return ce.color}).attr("width",function(ce){return ce.width}).attr("height",function(ce){return ce.height}).attr("y",function(ce){return ce.y}).attr("cursor",function(ce){return ce.parcatsViewModel.arrangement==="fixed"?"default":ce.parcatsViewModel.arrangement==="perpendicular"?"ns-resize":"move"}),b(ge),Me.exit().remove(),lt.append("text").attr("class","catlabel").attr("pointer-events","none"),et.select("text.catlabel").attr("text-anchor",function(ce){return s(ce)?"start":"end"}).attr("alignment-baseline","middle").style("fill","rgb(0, 0, 0)").attr("x",function(ce){return s(ce)?ce.width+5:-5}).attr("y",function(ce){return ce.height/2}).text(function(ce){return ce.model.categoryLabel}).each(function(ce){r.font(g.select(this),ce.parcatsViewModel.categorylabelfont),a.convertToTspans(g.select(this),re)}),lt.append("text").attr("class","dimlabel"),et.select("text.dimlabel").attr("text-anchor","middle").attr("alignment-baseline","baseline").attr("cursor",function(ce){return ce.parcatsViewModel.arrangement==="fixed"?"default":"ew-resize"}).attr("x",function(ce){return ce.width/2}).attr("y",-5).text(function(ce,ze){return ze===0?ce.parcatsViewModel.model.dimensions[ce.model.dimensionInd].dimensionLabel:null}).each(function(ce){r.font(g.select(this),ce.parcatsViewModel.labelfont)}),et.selectAll("rect.bandrect").on("mouseover",B).on("mouseout",O),et.exit().remove(),it.call(g.behavior.drag().origin(function(ce){return{x:ce.x,y:0}}).on("dragstart",I).on("drag",N).on("dragend",U)),be.each(function(ce){ce.traceSelection=g.select(this),ce.pathSelection=g.select(this).selectAll("g.paths").selectAll("path.path"),ce.dimensionSelection=g.select(this).selectAll("g.dimensions").selectAll("g.dimension")}),be.exit().remove()}H.exports=function(Z,re,ne,j){i(ne,Z,j,re)};function n(Z){return Z.key}function s(Z){var re=Z.parcatsViewModel.dimensions.length,ne=Z.parcatsViewModel.dimensions[re-1].model.dimensionInd;return Z.model.dimensionInd===ne}function c(Z,re){return Z.model.rawColor>re.model.rawColor?1:Z.model.rawColor"),Qe=g.mouse(ee)[0];M.loneHover({trace:ie,x:et-be.left+Ae.left,y:lt-be.top+Ae.top,text:nt,color:Z.model.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:10,fontColor:Me,idealAlign:Qe1&&Be.displayInd===Ae.dimensions.length-1?(at=fe.left,it="left"):(at=fe.left+fe.width,it="right");var et=be.model.count,lt=be.model.categoryLabel,Me=et/be.parcatsViewModel.model.count,ge={countLabel:et,categoryLabel:lt,probabilityLabel:Me.toFixed(3)},ce=[];be.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&ce.push(["Count:",ge.countLabel].join(" ")),be.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&ce.push(["P("+ge.categoryLabel+"):",ge.probabilityLabel].join(" "));var ze=ce.join("
");return{trace:Ie,x:j*(at-re.left),y:ee*(Ze-re.top),text:ze,color:"lightgray",borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontSize:12,fontColor:"black",idealAlign:it,hovertemplate:Ie.hovertemplate,hovertemplateLabels:ge,eventData:[{data:Ie._input,fullData:Ie,count:et,category:lt,probability:Me}]}}function z(Z,re,ne){var j=[];return g.select(ne.parentNode.parentNode).selectAll("g.category").select("rect.catrect").each(function(){var ee=this;j.push(L(Z,re,ee))}),j}function F(Z,re,ne){Z._fullLayout._calcInverseTransform(Z);var j=Z._fullLayout._invScaleX,ee=Z._fullLayout._invScaleY,ie=ne.getBoundingClientRect(),fe=g.select(ne).datum(),be=fe.categoryViewModel,Ae=be.parcatsViewModel,Be=Ae.model.dimensions[be.model.dimensionInd],Ie=Ae.trace,Ze=ie.y+ie.height/2,at,it;Ae.dimensions.length>1&&Be.displayInd===Ae.dimensions.length-1?(at=ie.left,it="left"):(at=ie.left+ie.width,it="right");var et=be.model.categoryLabel,lt=fe.parcatsViewModel.model.count,Me=0;fe.categoryViewModel.bands.forEach(function(jt){jt.color===fe.color&&(Me+=jt.count)});var ge=be.model.count,ce=0;Ae.pathSelection.each(function(jt){jt.model.color===fe.color&&(ce+=jt.model.count)});var ze=Me/lt,tt=Me/ce,nt=Me/ge,Qe={countLabel:Me,categoryLabel:et,probabilityLabel:ze.toFixed(3)},Ct=[];be.parcatsViewModel.hoverinfoItems.indexOf("count")!==-1&&Ct.push(["Count:",Qe.countLabel].join(" ")),be.parcatsViewModel.hoverinfoItems.indexOf("probability")!==-1&&(Ct.push("P(color \u2229 "+et+"): "+Qe.probabilityLabel),Ct.push("P("+et+" | color): "+tt.toFixed(3)),Ct.push("P(color | "+et+"): "+nt.toFixed(3)));var St=Ct.join("
"),Ot=o.mostReadable(fe.color,["black","white"]);return{trace:Ie,x:j*(at-re.left),y:ee*(Ze-re.top),text:St,color:fe.color,borderColor:"black",fontFamily:'Monaco, "Courier New", monospace',fontColor:Ot,fontSize:10,idealAlign:it,hovertemplate:Ie.hovertemplate,hovertemplateLabels:Qe,eventData:[{data:Ie._input,fullData:Ie,category:et,count:lt,probability:ze,categorycount:ge,colorcount:ce,bandcolorcount:Me}]}}function B(Z){if(!Z.parcatsViewModel.dragDimension&&Z.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1){var re=g.mouse(this)[1];if(re<-1)return;var ne=Z.parcatsViewModel.graphDiv,j=ne._fullLayout,ee=j._paperdiv.node().getBoundingClientRect(),ie=Z.parcatsViewModel.hoveron,fe=this;if(ie==="color"?(y(fe),P(fe,"plotly_hover",g.event)):(u(fe),f(fe,"plotly_hover",g.event)),Z.parcatsViewModel.hoverinfoItems.indexOf("none")===-1){var be;ie==="category"?be=L(ne,ee,fe):ie==="color"?be=F(ne,ee,fe):ie==="dimension"&&(be=z(ne,ee,fe)),be&&M.loneHover(be,{container:j._hoverlayer.node(),outerContainer:j._paper.node(),gd:ne})}}}function O(Z){var re=Z.parcatsViewModel;if(!re.dragDimension&&(_(re.pathSelection),E(re.dimensionSelection.selectAll("g.category")),b(re.dimensionSelection.selectAll("g.category").selectAll("rect.bandrect")),M.loneUnhover(re.graphDiv._fullLayout._hoverlayer.node()),re.pathSelection.sort(c),re.hoverinfoItems.indexOf("skip")===-1)){var ne=Z.parcatsViewModel.hoveron,j=this;ne==="color"?P(j,"plotly_unhover",g.event):f(j,"plotly_unhover",g.event)}}function I(Z){Z.parcatsViewModel.arrangement!=="fixed"&&(Z.dragDimensionDisplayInd=Z.model.displayInd,Z.initialDragDimensionDisplayInds=Z.parcatsViewModel.model.dimensions.map(function(re){return re.displayInd}),Z.dragHasMoved=!1,Z.dragCategoryDisplayInd=null,g.select(this).selectAll("g.category").select("rect.catrect").each(function(re){var ne=g.mouse(this)[0],j=g.mouse(this)[1];-2<=ne&&ne<=re.width+2&&-2<=j&&j<=re.height+2&&(Z.dragCategoryDisplayInd=re.model.displayInd,Z.initialDragCategoryDisplayInds=Z.model.categories.map(function(ee){return ee.displayInd}),re.model.dragY=re.y,e.raiseToTop(this.parentNode),g.select(this.parentNode).selectAll("rect.bandrect").each(function(ee){ee.yIe.y+Ie.height/2&&(ie.model.displayInd=Ie.model.displayInd,Ie.model.displayInd=be),Z.dragCategoryDisplayInd=ie.model.displayInd}if(Z.dragCategoryDisplayInd===null||Z.parcatsViewModel.arrangement==="freeform"){ee.model.dragX=g.event.x;var Ze=Z.parcatsViewModel.dimensions[ne],at=Z.parcatsViewModel.dimensions[j];Ze!==void 0&&ee.model.dragXat.x&&(ee.model.displayInd=at.model.displayInd,at.model.displayInd=Z.dragDimensionDisplayInd),Z.dragDimensionDisplayInd=ee.model.displayInd}$(Z.parcatsViewModel),G(Z.parcatsViewModel),ue(Z.parcatsViewModel),Q(Z.parcatsViewModel)}}function U(Z){if(Z.parcatsViewModel.arrangement!=="fixed"&&Z.dragDimensionDisplayInd!==null){g.select(this).selectAll("text").attr("font-weight","normal");var re={},ne=W(Z.parcatsViewModel),j=Z.parcatsViewModel.model.dimensions.map(function(at){return at.displayInd}),ee=Z.initialDragDimensionDisplayInds.some(function(at,it){return at!==j[it]});ee&&j.forEach(function(at,it){var et=Z.parcatsViewModel.model.dimensions[it].containerInd;re["dimensions["+et+"].displayindex"]=at});var ie=!1;if(Z.dragCategoryDisplayInd!==null){var fe=Z.model.categories.map(function(at){return at.displayInd});if(ie=Z.initialDragCategoryDisplayInds.some(function(at,it){return at!==fe[it]}),ie){var be=Z.model.categories.slice().sort(function(at,it){return at.displayInd-it.displayInd}),Ae=be.map(function(at){return at.categoryValue}),Be=be.map(function(at){return at.categoryLabel});re["dimensions["+Z.model.containerInd+"].categoryarray"]=[Ae],re["dimensions["+Z.model.containerInd+"].ticktext"]=[Be],re["dimensions["+Z.model.containerInd+"].categoryorder"]="array"}}if(Z.parcatsViewModel.hoverinfoItems.indexOf("skip")===-1&&!Z.dragHasMoved&&Z.potentialClickBand&&(Z.parcatsViewModel.hoveron==="color"?P(Z.potentialClickBand,"plotly_click",g.event.sourceEvent):f(Z.potentialClickBand,"plotly_click",g.event.sourceEvent)),Z.model.dragX=null,Z.dragCategoryDisplayInd!==null){var Ie=Z.parcatsViewModel.dimensions[Z.dragDimensionDisplayInd].categories[Z.dragCategoryDisplayInd];Ie.model.dragY=null,Z.dragCategoryDisplayInd=null}Z.dragDimensionDisplayInd=null,Z.parcatsViewModel.dragDimension=null,Z.dragHasMoved=null,Z.potentialClickBand=null,$(Z.parcatsViewModel),G(Z.parcatsViewModel);var Ze=g.transition().duration(300).ease("cubic-in-out");Ze.each(function(){ue(Z.parcatsViewModel,!0),Q(Z.parcatsViewModel,!0)}).each("end",function(){(ee||ie)&&A.restyle(Z.parcatsViewModel.graphDiv,re,[ne])})}}function W(Z){for(var re,ne=Z.graphDiv._fullData,j=0;j=0;Ae--)Be+="C"+fe[Ae]+","+(re[Ae+1]+j)+" "+ie[Ae]+","+(re[Ae]+j)+" "+(Z[Ae]+ne[Ae])+","+(re[Ae]+j),Be+="l-"+ne[Ae]+",0 ";return Be+="Z",Be}function G(Z){var re=Z.dimensions,ne=Z.model,j=re.map(function(Cr){return Cr.categories.map(function(vr){return vr.y})}),ee=Z.model.dimensions.map(function(Cr){return Cr.categories.map(function(vr){return vr.displayInd})}),ie=Z.model.dimensions.map(function(Cr){return Cr.displayInd}),fe=Z.dimensions.map(function(Cr){return Cr.model.dimensionInd}),be=re.map(function(Cr){return Cr.x}),Ae=re.map(function(Cr){return Cr.width}),Be=[];for(var Ie in ne.paths)ne.paths.hasOwnProperty(Ie)&&Be.push(ne.paths[Ie]);function Ze(Cr){var vr=Cr.categoryInds.map(function(yt,Fe){return ee[Fe][yt]}),_r=fe.map(function(yt){return vr[yt]});return _r}Be.sort(function(Cr,vr){var _r=Ze(Cr),yt=Ze(vr);return Z.sortpaths==="backward"&&(_r.reverse(),yt.reverse()),_r.push(Cr.valueInds[0]),yt.push(vr.valueInds[0]),Z.bundlecolors&&(_r.unshift(Cr.rawColor),yt.unshift(vr.rawColor)),_ryt?1:0});for(var at=new Array(Be.length),it=re[0].model.count,et=re[0].categories.map(function(Cr){return Cr.height}).reduce(function(Cr,vr){return Cr+vr}),lt=0;lt0?ge=et*(Me.count/it):ge=0;for(var ce=new Array(j.length),ze=0;ze1?fe=(Z.width-2*ne-j)/(ee-1):fe=0,be=ne,Ae=be+fe*ie;var Be=[],Ie=Z.model.maxCats,Ze=re.categories.length,at=8,it=re.count,et=Z.height-at*(Ie-1),lt,Me,ge,ce,ze,tt=(Ie-Ze)*at/2,nt=re.categories.map(function(Qe){return{displayInd:Qe.displayInd,categoryInd:Qe.categoryInd}});for(nt.sort(function(Qe,Ct){return Qe.displayInd-Ct.displayInd}),ze=0;ze0?lt=Me.count/it*et:lt=0,ge={key:Me.valueInds[0],model:Me,width:j,height:lt,y:Me.dragY!==null?Me.dragY:tt,bands:[],parcatsViewModel:Z},tt=tt+lt+at,Be.push(ge);return{key:re.dimensionInd,x:re.dragX!==null?re.dragX:Ae,y:0,width:j,model:re,categories:Be,parcatsViewModel:Z,dragCategoryDisplayInd:null,dragDimensionDisplayInd:null,initialDragDimensionDisplayInds:null,initialDragCategoryDisplayInds:null,dragHasMoved:null,potentialClickBand:null}}}}),_k=Ye({"src/traces/parcats/plot.js"(X,H){"use strict";var g=qV();H.exports=function(A,M,e,t){var r=A._fullLayout,o=r._paper,a=r._size;g(A,o,M,{width:a.w,height:a.h,margin:{t:a.t,r:a.r,b:a.b,l:a.l}},e,t)}}}),HV=Ye({"src/traces/parcats/base_plot.js"(X){"use strict";var H=jh().getModuleCalcData,g=_k(),x="parcats";X.name=x,X.plot=function(A,M,e,t){var r=H(A.calcdata,x);if(r.length){var o=r[0];g(A,o,e,t)}},X.clean=function(A,M,e,t){var r=t._has&&t._has("parcats"),o=M._has&&M._has("parcats");r&&!o&&t._paperdiv.selectAll(".parcats").remove()}}}),GV=Ye({"src/traces/parcats/index.js"(X,H){"use strict";H.exports={attributes:yk(),supplyDefaults:jV(),calc:VV(),plot:_k(),colorbar:{container:"line",min:"cmin",max:"cmax"},moduleType:"trace",name:"parcats",basePlotModule:HV(),categories:["noOpacity"],meta:{}}}}),WV=Ye({"lib/parcats.js"(X,H){"use strict";H.exports=GV()}}),am=Ye({"src/plots/mapbox/constants.js"(X,H){"use strict";var g=Km(),x="1.13.4",A='\xA9
OpenStreetMap contributors',M=['\xA9 Carto',A].join(" "),e=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under ODbL'].join(" "),t=['Map tiles by Stamen Design','under CC BY 3.0',"|",'Data by OpenStreetMap contributors','under CC BY SA'].join(" "),r={"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:A,tiles:["https://a.tile.openstreetmap.org/{z}/{x}/{y}.png","https://b.tile.openstreetmap.org/{z}/{x}/{y}.png"],tileSize:256}},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}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":{id:"carto-positron",version:8,sources:{"plotly-carto-positron":{type:"raster",attribution:M,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"],tileSize:256}},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":{id:"carto-darkmatter",version:8,sources:{"plotly-carto-darkmatter":{type:"raster",attribution:M,tiles:["https://cartodb-basemaps-c.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png"],tileSize:256}},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":{id:"stamen-terrain",version:8,sources:{"plotly-stamen-terrain":{type:"raster",attribution:e,tiles:["https://tiles.stadiamaps.com/tiles/stamen_terrain/{z}/{x}/{y}.png?api_key="],tileSize:256}},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":{id:"stamen-toner",version:8,sources:{"plotly-stamen-toner":{type:"raster",attribution:e,tiles:["https://tiles.stadiamaps.com/tiles/stamen_toner/{z}/{x}/{y}.png?api_key="],tileSize:256}},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":{id:"stamen-watercolor",version:8,sources:{"plotly-stamen-watercolor":{type:"raster",attribution:t,tiles:["https://tiles.stadiamaps.com/tiles/stamen_watercolor/{z}/{x}/{y}.jpg?api_key="],tileSize:256}},layers:[{id:"plotly-stamen-watercolor",type:"raster",source:"plotly-stamen-watercolor",minzoom:0,maxzoom:22}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"}},o=g(r);H.exports={requiredVersion:x,styleUrlPrefix:"mapbox://styles/mapbox/",styleUrlSuffix:"v9",styleValuesMapbox:["basic","streets","outdoors","light","dark","satellite","satellite-streets"],styleValueDflt:"basic",stylesNonMapbox:r,styleValuesNonMapbox:o,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",wrongVersionErrorMsg:["Your custom plotly.js bundle is not using the correct mapbox-gl version","Please install @plotly/mapbox-gl@"+x+"."].join(` +`),noAccessTokenErrorMsg:["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' });","More info here: https://www.mapbox.com/help/define-access-token/"].join(` +`),missingStyleErrorMsg:["No valid mapbox style found, please set `mapbox.style` to one of:",o.join(", "),"or register a Mapbox access token to use a Mapbox-served style."].join(` +`),multipleTokensErrorMsg:["Set multiple mapbox access token across different mapbox subplot,","using first token found as mapbox-gl does not allow multipleaccess tokens on the same page."].join(` +`),mapOnErrorMsg:"Mapbox error.",mapboxLogo:{path0:"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",path1:"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",path2:"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",polygon:"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"},styleRules:{map:"overflow:hidden;position:relative;","missing-css":"display:none;",canary:"background-color:salmon;","ctrl-bottom-left":"position: absolute; pointer-events: none; z-index: 2; bottom: 0; left: 0;","ctrl-bottom-right":"position: absolute; pointer-events: none; z-index: 2; right: 0; bottom: 0;",ctrl:"clear: both; pointer-events: auto; transform: translate(0, 0);","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-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","ctrl-bottom-left .mapboxgl-ctrl":"margin: 0 0 10px 10px; float: left;","ctrl-bottom-right .mapboxgl-ctrl":"margin: 0 10px 10px 0; float: right;","ctrl-attrib":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a":"color: rgba(0, 0, 0, 0.75); text-decoration: none; font-size: 12px","ctrl-attrib a:hover":"color: inherit; text-decoration: underline;","ctrl-attrib .mapbox-improve-map":"font-weight: bold; margin-left: 2px;","attrib-empty":"display: none;","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')`}}}}),Sx=Ye({"src/plots/mapbox/layout_attributes.js"(X,H){"use strict";var g=ta(),x=Fn().defaultLine,A=Wu().attributes,M=Au(),e=Pc().textposition,t=Ou().overrideAll,r=cl().templatedArray,o=am(),a=M({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});a.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var i=H.exports=t({_arrayAttrRegexps:[g.counterRegex("mapbox",".layers",!0)],domain:A({name:"mapbox"}),accesstoken:{valType:"string",noBlank:!0,strict:!0},style:{valType:"any",values:o.styleValuesMapbox.concat(o.styleValuesNonMapbox),dflt:o.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:r("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:x},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:x}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:a,textposition:g.extendFlat({},e,{arrayOk:!1})}})},"plot","from-root");i.uirevision={valType:"any",editType:"none"}}}),TT=Ye({"src/traces/scattermapbox/attributes.js"(X,H){"use strict";var g=xs().hovertemplateAttrs,x=xs().texttemplateAttrs,A=$d(),M=p0(),e=Pc(),t=Sx(),r=Pl(),o=tu(),a=Oo().extendFlat,i=Ou().overrideAll,n=Sx(),s=M.line,c=M.marker;H.exports=i({lon:M.lon,lat:M.lat,cluster:{enabled:{valType:"boolean"},maxzoom:a({},n.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:a({},c.opacity,{dflt:1})},mode:a({},e.mode,{dflt:"markers"}),text:a({},e.text,{}),texttemplate:x({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:a({},e.hovertext,{}),line:{color:s.color,width:s.width},connectgaps:e.connectgaps,marker:a({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:c.opacity,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode},o("marker")),fill:M.fill,fillcolor:A(),textfont:t.layers.symbol.textfont,textposition:t.layers.symbol.textposition,below:{valType:"string"},selected:{marker:e.selected.marker},unselected:{marker:e.unselected.marker},hoverinfo:a({},r.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:g()},"calc","nested")}}),xk=Ye({"src/traces/scattermapbox/constants.js"(X,H){"use strict";var g=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];H.exports={isSupportedFont:function(x){return g.indexOf(x)!==-1}}}}),ZV=Ye({"src/traces/scattermapbox/defaults.js"(X,H){"use strict";var g=ta(),x=uu(),A=md(),M=Dd(),e=zd(),t=ev(),r=TT(),o=xk().isSupportedFont;H.exports=function(n,s,c,h){function v(y,f){return g.coerce(n,s,r,y,f)}function p(y,f){return g.coerce2(n,s,r,y,f)}var T=a(n,s,v);if(!T){s.visible=!1;return}if(v("text"),v("texttemplate"),v("hovertext"),v("hovertemplate"),v("mode"),v("below"),x.hasMarkers(s)){A(n,s,c,h,v,{noLine:!0,noAngle:!0}),v("marker.allowoverlap"),v("marker.angle");var l=s.marker;l.symbol!=="circle"&&(g.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),g.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}x.hasLines(s)&&(M(n,s,c,h,v,{noDash:!0}),v("connectgaps"));var _=p("cluster.maxzoom"),w=p("cluster.step"),S=p("cluster.color",s.marker&&s.marker.color||c),E=p("cluster.size"),m=p("cluster.opacity"),b=_!==!1||w!==!1||S!==!1||E!==!1||m!==!1,d=v("cluster.enabled",b);if(d||x.hasText(s)){var u=h.font.family;e(n,s,h,v,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:o(u)?u:"Open Sans Regular",weight:h.font.weight,style:h.font.style,size:h.font.size,color:h.font.color}})}v("fill"),s.fill!=="none"&&t(n,s,c,v),g.coerceSelectionMarkerOpacity(s,v)};function a(i,n,s){var c=s("lon")||[],h=s("lat")||[],v=Math.min(c.length,h.length);return n._length=v,v}}}),bk=Ye({"src/traces/scattermapbox/format_labels.js"(X,H){"use strict";var g=Co();H.exports=function(A,M,e){var t={},r=e[M.subplot]._subplot,o=r.mockAxis,a=A.lonlat;return t.lonLabel=g.tickText(o,o.c2l(a[0]),!0).text,t.latLabel=g.tickText(o,o.c2l(a[1]),!0).text,t}}}),wk=Ye({"src/plots/mapbox/convert_text_opts.js"(X,H){"use strict";var g=ta();H.exports=function(A,M){var e=A.split(" "),t=e[0],r=e[1],o=g.isArrayOrTypedArray(M)?g.mean(M):M,a=.5+o/100,i=1.5+o/100,n=["",""],s=[0,0];switch(t){case"top":n[0]="top",s[1]=-i;break;case"bottom":n[0]="bottom",s[1]=i;break}switch(r){case"left":n[1]="right",s[0]=-a;break;case"right":n[1]="left",s[0]=a;break}var c;return n[0]&&n[1]?c=n.join("-"):n[0]?c=n[0]:n[1]?c=n[1]:c="center",{anchor:c,offset:s}}}}),XV=Ye({"src/traces/scattermapbox/convert.js"(X,H){"use strict";var g=jo(),x=ta(),A=ks().BADNUM,M=dg(),e=Su(),t=Bo(),r=t1(),o=uu(),a=xk().isSupportedFont,i=wk(),n=Qp().appendArrayPointValue,s=jl().NEWLINES,c=jl().BR_TAG_ALL;H.exports=function(m,b){var d=b[0].trace,u=d.visible===!0&&d._length!==0,y=d.fill!=="none",f=o.hasLines(d),P=o.hasMarkers(d),L=o.hasText(d),z=P&&d.marker.symbol==="circle",F=P&&d.marker.symbol!=="circle",B=d.cluster&&d.cluster.enabled,O=h("fill"),I=h("line"),N=h("circle"),U=h("symbol"),W={fill:O,line:I,circle:N,symbol:U};if(!u)return W;var Q;if((y||f)&&(Q=M.calcTraceToLineCoords(b)),y&&(O.geojson=M.makePolygon(Q),O.layout.visibility="visible",x.extendFlat(O.paint,{"fill-color":d.fillcolor})),f&&(I.geojson=M.makeLine(Q),I.layout.visibility="visible",x.extendFlat(I.paint,{"line-width":d.line.width,"line-color":d.line.color,"line-opacity":d.opacity})),z){var ue=v(b);N.geojson=ue.geojson,N.layout.visibility="visible",B&&(N.filter=["!",["has","point_count"]],W.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":w(d.cluster.color,d.cluster.step),"circle-radius":w(d.cluster.size,d.cluster.step),"circle-opacity":w(d.cluster.opacity,d.cluster.step)}},W.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":S(d),"text-size":12}}),x.extendFlat(N.paint,{"circle-color":ue.mcc,"circle-radius":ue.mrc,"circle-opacity":ue.mo})}if(z&&B&&(N.filter=["!",["has","point_count"]]),(F||L)&&(U.geojson=p(b,m),x.extendFlat(U.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),F&&(x.extendFlat(U.layout,{"icon-size":d.marker.size/10}),"angle"in d.marker&&d.marker.angle!=="auto"&&x.extendFlat(U.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),U.layout["icon-allow-overlap"]=d.marker.allowoverlap,x.extendFlat(U.paint,{"icon-opacity":d.opacity*d.marker.opacity,"icon-color":d.marker.color})),L)){var se=(d.marker||{}).size,he=i(d.textposition,se);x.extendFlat(U.layout,{"text-size":d.textfont.size,"text-anchor":he.anchor,"text-offset":he.offset,"text-font":S(d)}),x.extendFlat(U.paint,{"text-color":d.textfont.color,"text-opacity":d.opacity})}return W};function h(E){return{type:E,geojson:M.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function v(E){var m=E[0].trace,b=m.marker,d=m.selectedpoints,u=x.isArrayOrTypedArray(b.color),y=x.isArrayOrTypedArray(b.size),f=x.isArrayOrTypedArray(b.opacity),P;function L(se){return m.opacity*se}function z(se){return se/2}var F;u&&(e.hasColorscale(m,"marker")?F=e.makeColorScaleFuncFromTrace(b):F=x.identity);var B;y&&(B=r(m));var O;f&&(O=function(se){var he=g(se)?+x.constrain(se,0,1):0;return L(he)});var I=[];for(P=0;P850?P+=" Black":u>750?P+=" Extra Bold":u>650?P+=" Bold":u>550?P+=" Semi Bold":u>450?P+=" Medium":u>350?P+=" Regular":u>250?P+=" Light":u>150?P+=" Extra Light":P+=" Thin"):y.slice(0,2).join(" ")==="Open Sans"?(P="Open Sans",u>750?P+=" Extrabold":u>650?P+=" Bold":u>550?P+=" Semibold":u>350?P+=" Regular":P+=" Light"):y.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(P="Klokantech Noto Sans",y[3]==="CJK"&&(P+=" CJK"),P+=u>500?" Bold":" Regular")),f&&(P+=" Italic"),P==="Open Sans Regular Italic"?P="Open Sans Italic":P==="Open Sans Regular Bold"?P="Open Sans Bold":P==="Open Sans Regular Bold Italic"?P="Open Sans Bold Italic":P==="Klokantech Noto Sans Regular Italic"&&(P="Klokantech Noto Sans Italic"),a(P)||(P=b);var L=P.split(", ");return L}}}),YV=Ye({"src/traces/scattermapbox/plot.js"(X,H){"use strict";var g=ta(),x=XV(),A=am().traceLayerPrefix,M={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function e(r,o,a,i){this.type="scattermapbox",this.subplot=r,this.uid=o,this.clusterEnabled=a,this.isHidden=i,this.sourceIds={fill:"source-"+o+"-fill",line:"source-"+o+"-line",circle:"source-"+o+"-circle",symbol:"source-"+o+"-symbol",cluster:"source-"+o+"-circle",clusterCount:"source-"+o+"-circle"},this.layerIds={fill:A+o+"-fill",line:A+o+"-line",circle:A+o+"-circle",symbol:A+o+"-symbol",cluster:A+o+"-cluster",clusterCount:A+o+"-cluster-count"},this.below=null}var t=e.prototype;t.addSource=function(r,o,a){var i={type:"geojson",data:o.geojson};a&&a.enabled&&g.extendFlat(i,{cluster:!0,clusterMaxZoom:a.maxzoom});var n=this.subplot.map.getSource(this.sourceIds[r]);n?n.setData(o.geojson):this.subplot.map.addSource(this.sourceIds[r],i)},t.setSourceData=function(r,o){this.subplot.map.getSource(this.sourceIds[r]).setData(o.geojson)},t.addLayer=function(r,o,a){var i={type:o.type,id:this.layerIds[r],source:this.sourceIds[r],layout:o.layout,paint:o.paint};o.filter&&(i.filter=o.filter);for(var n=this.layerIds[r],s,c=this.subplot.getMapLayers(),h=0;h=0;f--){var P=y[f];n.removeLayer(p.layerIds[P])}u||n.removeSource(p.sourceIds.circle)}function _(u){for(var y=M.nonCluster,f=0;f=0;f--){var P=y[f];n.removeLayer(p.layerIds[P]),u||n.removeSource(p.sourceIds[P])}}function S(u){v?l(u):w(u)}function E(u){h?T(u):_(u)}function m(){for(var u=h?M.cluster:M.nonCluster,y=0;y=0;i--){var n=a[i];o.removeLayer(this.layerIds[n]),o.removeSource(this.sourceIds[n])}},H.exports=function(o,a){var i=a[0].trace,n=i.cluster&&i.cluster.enabled,s=i.visible!==!0,c=new e(o,i.uid,n,s),h=x(o.gd,a),v=c.below=o.belowLookup["trace-"+i.uid],p,T,l;if(n)for(c.addSource("circle",h.circle,i.cluster),p=0;p=0?Math.floor((i+180)/360):Math.ceil((i-180)/360),E=S*360,m=i-E;function b(B){var O=B.lonlat;if(O[0]===e||_&&T.indexOf(B.i+1)===-1)return 1/0;var I=x.modHalf(O[0],360),N=O[1],U=p.project([I,N]),W=U.x-h.c2p([m,N]),Q=U.y-v.c2p([I,n]),ue=Math.max(3,B.mrc||0);return Math.max(Math.sqrt(W*W+Q*Q)-ue,1-3/ue)}if(g.getClosest(s,b,a),a.index!==!1){var d=s[a.index],u=d.lonlat,y=[x.modHalf(u[0],360)+E,u[1]],f=h.c2p(y),P=v.c2p(y),L=d.mrc||1;a.x0=f-L,a.x1=f+L,a.y0=P-L,a.y1=P+L;var z={};z[c.subplot]={_subplot:p};var F=c._module.formatLabels(d,c,z);return a.lonLabel=F.lonLabel,a.latLabel=F.latLabel,a.color=A(c,d),a.extraText=o(c,d,s[0].t.labels),a.hovertemplate=c.hovertemplate,[a]}}function o(a,i,n){if(a.hovertemplate)return;var s=i.hi||a.hoverinfo,c=s.split("+"),h=c.indexOf("all")!==-1,v=c.indexOf("lon")!==-1,p=c.indexOf("lat")!==-1,T=i.lonlat,l=[];function _(w){return w+"\xB0"}return h||v&&p?l.push("("+_(T[1])+", "+_(T[0])+")"):v?l.push(n.lon+_(T[0])):p&&l.push(n.lat+_(T[1])),(h||c.indexOf("text")!==-1)&&M(i,a,l),l.join("
")}H.exports={hoverPoints:r,getExtraText:o}}}),KV=Ye({"src/traces/scattermapbox/event_data.js"(X,H){"use strict";H.exports=function(x,A){return x.lon=A.lon,x.lat=A.lat,x}}}),JV=Ye({"src/traces/scattermapbox/select.js"(X,H){"use strict";var g=ta(),x=uu(),A=ks().BADNUM;H.exports=function(e,t){var r=e.cd,o=e.xaxis,a=e.yaxis,i=[],n=r[0].trace,s;if(!x.hasMarkers(n))return[];if(t===!1)for(s=0;s"u"&&(C=1e-6);var V,oe,_e,Pe,je;for(_e=k,je=0;je<8;je++){if(Pe=this.sampleCurveX(_e)-k,Math.abs(Pe)oe)return oe;for(;VPe?V=_e:oe=_e,_e=(oe-V)*.5+V}return _e},a.prototype.solve=function(k,C){return this.sampleCurveY(this.solveCurveX(k,C))};var i=n;function n(k,C){this.x=k,this.y=C}n.prototype={clone:function(){return new n(this.x,this.y)},add:function(k){return this.clone()._add(k)},sub:function(k){return this.clone()._sub(k)},multByPoint:function(k){return this.clone()._multByPoint(k)},divByPoint:function(k){return this.clone()._divByPoint(k)},mult:function(k){return this.clone()._mult(k)},div:function(k){return this.clone()._div(k)},rotate:function(k){return this.clone()._rotate(k)},rotateAround:function(k,C){return this.clone()._rotateAround(k,C)},matMult:function(k){return this.clone()._matMult(k)},unit:function(){return this.clone()._unit()},perp:function(){return this.clone()._perp()},round:function(){return this.clone()._round()},mag:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},equals:function(k){return this.x===k.x&&this.y===k.y},dist:function(k){return Math.sqrt(this.distSqr(k))},distSqr:function(k){var C=k.x-this.x,V=k.y-this.y;return C*C+V*V},angle:function(){return Math.atan2(this.y,this.x)},angleTo:function(k){return Math.atan2(this.y-k.y,this.x-k.x)},angleWith:function(k){return this.angleWithSep(k.x,k.y)},angleWithSep:function(k,C){return Math.atan2(this.x*C-this.y*k,this.x*k+this.y*C)},_matMult:function(k){var C=k[0]*this.x+k[1]*this.y,V=k[2]*this.x+k[3]*this.y;return this.x=C,this.y=V,this},_add:function(k){return this.x+=k.x,this.y+=k.y,this},_sub:function(k){return this.x-=k.x,this.y-=k.y,this},_mult:function(k){return this.x*=k,this.y*=k,this},_div:function(k){return this.x/=k,this.y/=k,this},_multByPoint:function(k){return this.x*=k.x,this.y*=k.y,this},_divByPoint:function(k){return this.x/=k.x,this.y/=k.y,this},_unit:function(){return this._div(this.mag()),this},_perp:function(){var k=this.y;return this.y=this.x,this.x=-k,this},_rotate:function(k){var C=Math.cos(k),V=Math.sin(k),oe=C*this.x-V*this.y,_e=V*this.x+C*this.y;return this.x=oe,this.y=_e,this},_rotateAround:function(k,C){var V=Math.cos(k),oe=Math.sin(k),_e=C.x+V*(this.x-C.x)-oe*(this.y-C.y),Pe=C.y+oe*(this.x-C.x)+V*(this.y-C.y);return this.x=_e,this.y=Pe,this},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},n.convert=function(k){return k instanceof n?k:Array.isArray(k)?new n(k[0],k[1]):k};var s=typeof self<"u"?self:{};function c(k,C){if(Array.isArray(k)){if(!Array.isArray(C)||k.length!==C.length)return!1;for(var V=0;V=1)return 1;var C=k*k,V=C*k;return 4*(k<.5?V:3*(k-C)+V-.75)}function p(k,C,V,oe){var _e=new o(k,C,V,oe);return function(Pe){return _e.solve(Pe)}}var T=p(.25,.1,.25,1);function l(k,C,V){return Math.min(V,Math.max(C,k))}function _(k,C,V){var oe=V-C,_e=((k-C)%oe+oe)%oe+C;return _e===C?V:_e}function w(k,C,V){if(!k.length)return V(null,[]);var oe=k.length,_e=new Array(k.length),Pe=null;k.forEach(function(je,ct){C(je,function(Lt,Nt){Lt&&(Pe=Lt),_e[ct]=Nt,--oe===0&&V(Pe,_e)})})}function S(k){var C=[];for(var V in k)C.push(k[V]);return C}function E(k,C){var V=[];for(var oe in k)oe in C||V.push(oe);return V}function m(k){for(var C=[],V=arguments.length-1;V-- >0;)C[V]=arguments[V+1];for(var oe=0,_e=C;oe<_e.length;oe+=1){var Pe=_e[oe];for(var je in Pe)k[je]=Pe[je]}return k}function b(k,C){for(var V={},oe=0;oe>C/4).toString(16):([1e7]+-[1e3]+-4e3+-8e3+-1e11).replace(/[018]/g,k)}return k()}function f(k){return k<=1?1:Math.pow(2,Math.ceil(Math.log(k)/Math.LN2))}function P(k){return k?/^[0-9a-f]{8}-[0-9a-f]{4}-[4][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(k):!1}function L(k,C){k.forEach(function(V){C[V]&&(C[V]=C[V].bind(C))})}function z(k,C){return k.indexOf(C,k.length-C.length)!==-1}function F(k,C,V){var oe={};for(var _e in k)oe[_e]=C.call(V||this,k[_e],_e,k);return oe}function B(k,C,V){var oe={};for(var _e in k)C.call(V||this,k[_e],_e,k)&&(oe[_e]=k[_e]);return oe}function O(k){return Array.isArray(k)?k.map(O):typeof k=="object"&&k?F(k,O):k}function I(k,C){for(var V=0;V=0)return!0;return!1}var N={};function U(k){N[k]||(typeof console<"u"&&console.warn(k),N[k]=!0)}function W(k,C,V){return(V.y-k.y)*(C.x-k.x)>(C.y-k.y)*(V.x-k.x)}function Q(k){for(var C=0,V=0,oe=k.length,_e=oe-1,Pe=void 0,je=void 0;V@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,V={};if(k.replace(C,function(_e,Pe,je,ct){var Lt=je||ct;return V[Pe]=Lt?Lt.toLowerCase():!0,""}),V["max-age"]){var oe=parseInt(V["max-age"],10);isNaN(oe)?delete V["max-age"]:V["max-age"]=oe}return V}var G=null;function $(k){if(G==null){var C=k.navigator?k.navigator.userAgent:null;G=!!k.safari||!!(C&&(/\b(iPad|iPhone|iPod)\b/.test(C)||C.match("Safari")&&!C.match("Chrome")))}return G}function J(k){try{var C=s[k];return C.setItem("_mapbox_test_",1),C.removeItem("_mapbox_test_"),!0}catch{return!1}}function Z(k){return s.btoa(encodeURIComponent(k).replace(/%([0-9A-F]{2})/g,function(C,V){return String.fromCharCode(+("0x"+V))}))}function re(k){return decodeURIComponent(s.atob(k).split("").map(function(C){return"%"+("00"+C.charCodeAt(0).toString(16)).slice(-2)}).join(""))}var ne=s.performance&&s.performance.now?s.performance.now.bind(s.performance):Date.now.bind(Date),j=s.requestAnimationFrame||s.mozRequestAnimationFrame||s.webkitRequestAnimationFrame||s.msRequestAnimationFrame,ee=s.cancelAnimationFrame||s.mozCancelAnimationFrame||s.webkitCancelAnimationFrame||s.msCancelAnimationFrame,ie,fe,be={now:ne,frame:function(C){var V=j(C);return{cancel:function(){return ee(V)}}},getImageData:function(C,V){V===void 0&&(V=0);var oe=s.document.createElement("canvas"),_e=oe.getContext("2d");if(!_e)throw new Error("failed to create canvas 2d context");return oe.width=C.width,oe.height=C.height,_e.drawImage(C,0,0,C.width,C.height),_e.getImageData(-V,-V,C.width+2*V,C.height+2*V)},resolveURL:function(C){return ie||(ie=s.document.createElement("a")),ie.href=C,ie.href},hardwareConcurrency:s.navigator&&s.navigator.hardwareConcurrency||4,get devicePixelRatio(){return s.devicePixelRatio},get prefersReducedMotion(){return s.matchMedia?(fe==null&&(fe=s.matchMedia("(prefers-reduced-motion: reduce)")),fe.matches):!1}},Ae={API_URL:"https://api.mapbox.com",get EVENTS_URL(){return this.API_URL?this.API_URL.indexOf("https://api.mapbox.cn")===0?"https://events.mapbox.cn/events/v2":this.API_URL.indexOf("https://api.mapbox.com")===0?"https://events.mapbox.com/events/v2":null:null},FEEDBACK_URL:"https://apps.mapbox.com/feedback",REQUIRE_ACCESS_TOKEN:!0,ACCESS_TOKEN:null,MAX_PARALLEL_IMAGE_REQUESTS:16},Be={supported:!1,testSupport:et},Ie,Ze=!1,at,it=!1;s.document&&(at=s.document.createElement("img"),at.onload=function(){Ie&<(Ie),Ie=null,it=!0},at.onerror=function(){Ze=!0,Ie=null},at.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA=");function et(k){Ze||!at||(it?lt(k):Ie=k)}function lt(k){var C=k.createTexture();k.bindTexture(k.TEXTURE_2D,C);try{if(k.texImage2D(k.TEXTURE_2D,0,k.RGBA,k.RGBA,k.UNSIGNED_BYTE,at),k.isContextLost())return;Be.supported=!0}catch{}k.deleteTexture(C),Ze=!0}var Me="01";function ge(){for(var k="1",C="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",V="",oe=0;oe<10;oe++)V+=C[Math.floor(Math.random()*62)];var _e=12*60*60*1e3,Pe=[k,Me,V].join(""),je=Date.now()+_e;return{token:Pe,tokenExpiresAt:je}}var ce=function(C,V){this._transformRequestFn=C,this._customAccessToken=V,this._createSkuToken()};ce.prototype._createSkuToken=function(){var C=ge();this._skuToken=C.token,this._skuTokenExpiresAt=C.tokenExpiresAt},ce.prototype._isSkuTokenExpired=function(){return Date.now()>this._skuTokenExpiresAt},ce.prototype.transformRequest=function(C,V){return this._transformRequestFn?this._transformRequestFn(C,V)||{url:C}:{url:C}},ce.prototype.normalizeStyleURL=function(C,V){if(!ze(C))return C;var oe=Ot(C);return oe.path="/styles/v1"+oe.path,this._makeAPIURL(oe,this._customAccessToken||V)},ce.prototype.normalizeGlyphsURL=function(C,V){if(!ze(C))return C;var oe=Ot(C);return oe.path="/fonts/v1"+oe.path,this._makeAPIURL(oe,this._customAccessToken||V)},ce.prototype.normalizeSourceURL=function(C,V){if(!ze(C))return C;var oe=Ot(C);return oe.path="/v4/"+oe.authority+".json",oe.params.push("secure"),this._makeAPIURL(oe,this._customAccessToken||V)},ce.prototype.normalizeSpriteURL=function(C,V,oe,_e){var Pe=Ot(C);return ze(C)?(Pe.path="/styles/v1"+Pe.path+"/sprite"+V+oe,this._makeAPIURL(Pe,this._customAccessToken||_e)):(Pe.path+=""+V+oe,jt(Pe))},ce.prototype.normalizeTileURL=function(C,V){if(this._isSkuTokenExpired()&&this._createSkuToken(),C&&!ze(C))return C;var oe=Ot(C),_e=/(\.(png|jpg)\d*)(?=$)/,Pe=/^.+\/v4\//,je=be.devicePixelRatio>=2||V===512?"@2x":"",ct=Be.supported?".webp":"$1";oe.path=oe.path.replace(_e,""+je+ct),oe.path=oe.path.replace(Pe,"/"),oe.path="/v4"+oe.path;var Lt=this._customAccessToken||Ct(oe.params)||Ae.ACCESS_TOKEN;return Ae.REQUIRE_ACCESS_TOKEN&&Lt&&this._skuToken&&oe.params.push("sku="+this._skuToken),this._makeAPIURL(oe,Lt)},ce.prototype.canonicalizeTileURL=function(C,V){var oe="/v4/",_e=/\.[\w]+$/,Pe=Ot(C);if(!Pe.path.match(/(^\/v4\/)/)||!Pe.path.match(_e))return C;var je="mapbox://tiles/";je+=Pe.path.replace(oe,"");var ct=Pe.params;return V&&(ct=ct.filter(function(Lt){return!Lt.match(/^access_token=/)})),ct.length&&(je+="?"+ct.join("&")),je},ce.prototype.canonicalizeTileset=function(C,V){for(var oe=V?ze(V):!1,_e=[],Pe=0,je=C.tiles||[];Pe=0&&C.params.splice(Pe,1)}if(_e.path!=="/"&&(C.path=""+_e.path+C.path),!Ae.REQUIRE_ACCESS_TOKEN)return jt(C);if(V=V||Ae.ACCESS_TOKEN,!V)throw new Error("An API access token is required to use Mapbox GL. "+oe);if(V[0]==="s")throw new Error("Use a public access token (pk.*) with Mapbox GL, not a secret access token (sk.*). "+oe);return C.params=C.params.filter(function(je){return je.indexOf("access_token")===-1}),C.params.push("access_token="+V),jt(C)};function ze(k){return k.indexOf("mapbox:")===0}var tt=/^((https?:)?\/\/)?([^\/]+\.)?mapbox\.c(n|om)(\/|\?|$)/i;function nt(k){return tt.test(k)}function Qe(k){return k.indexOf("sku=")>0&&nt(k)}function Ct(k){for(var C=0,V=k;C=1&&s.localStorage.setItem(V,JSON.stringify(this.eventData))}catch{U("Unable to write to LocalStorage")}},Cr.prototype.processRequests=function(C){},Cr.prototype.postEvent=function(C,V,oe,_e){var Pe=this;if(Ae.EVENTS_URL){var je=Ot(Ae.EVENTS_URL);je.params.push("access_token="+(_e||Ae.ACCESS_TOKEN||""));var ct={event:this.type,created:new Date(C).toISOString(),sdkIdentifier:"mapbox-gl-js",sdkVersion:r,skuId:Me,userId:this.anonId},Lt=V?m(ct,V):ct,Nt={url:jt(je),headers:{"Content-Type":"text/plain"},body:JSON.stringify([Lt])};this.pendingRequest=Xr(Nt,function(Xt){Pe.pendingRequest=null,oe(Xt),Pe.saveEventData(),Pe.processRequests(_e)})}},Cr.prototype.queueRequest=function(C,V){this.queue.push(C),this.processRequests(V)};var vr=function(k){function C(){k.call(this,"map.load"),this.success={},this.skuToken=""}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.postMapLoadEvent=function(oe,_e,Pe,je){this.skuToken=Pe,(Ae.EVENTS_URL&&je||Ae.ACCESS_TOKEN&&Array.isArray(oe)&&oe.some(function(ct){return ze(ct)||nt(ct)}))&&this.queueRequest({id:_e,timestamp:Date.now()},je)},C.prototype.processRequests=function(oe){var _e=this;if(!(this.pendingRequest||this.queue.length===0)){var Pe=this.queue.shift(),je=Pe.id,ct=Pe.timestamp;je&&this.success[je]||(this.anonId||this.fetchEventData(),P(this.anonId)||(this.anonId=y()),this.postEvent(ct,{skuToken:this.skuToken},function(Lt){Lt||je&&(_e.success[je]=!0)},oe))}},C}(Cr),_r=function(k){function C(V){k.call(this,"appUserTurnstile"),this._customAccessToken=V}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.postTurnstileEvent=function(oe,_e){Ae.EVENTS_URL&&Ae.ACCESS_TOKEN&&Array.isArray(oe)&&oe.some(function(Pe){return ze(Pe)||nt(Pe)})&&this.queueRequest(Date.now(),_e)},C.prototype.processRequests=function(oe){var _e=this;if(!(this.pendingRequest||this.queue.length===0)){(!this.anonId||!this.eventData.lastSuccess||!this.eventData.tokenU)&&this.fetchEventData();var Pe=ar(Ae.ACCESS_TOKEN),je=Pe?Pe.u:Ae.ACCESS_TOKEN,ct=je!==this.eventData.tokenU;P(this.anonId)||(this.anonId=y(),ct=!0);var Lt=this.queue.shift();if(this.eventData.lastSuccess){var Nt=new Date(this.eventData.lastSuccess),Xt=new Date(Lt),gr=(Lt-this.eventData.lastSuccess)/(24*60*60*1e3);ct=ct||gr>=1||gr<-1||Nt.getDate()!==Xt.getDate()}else ct=!0;if(!ct)return this.processRequests();this.postEvent(Lt,{"enabled.telemetry":!1},function(Br){Br||(_e.eventData.lastSuccess=Lt,_e.eventData.tokenU=je)},oe)}},C}(Cr),yt=new _r,Fe=yt.postTurnstileEvent.bind(yt),Ke=new vr,Ne=Ke.postMapLoadEvent.bind(Ke),Ee="mapbox-tiles",Ve=500,ke=50,Te=1e3*60*7,Le;function rt(){s.caches&&!Le&&(Le=s.caches.open(Ee))}var dt;function xt(k,C){if(dt===void 0)try{new Response(new ReadableStream),dt=!0}catch{dt=!1}dt?C(k.body):k.blob().then(C)}function It(k,C,V){if(rt(),!!Le){var oe={status:C.status,statusText:C.statusText,headers:new s.Headers};C.headers.forEach(function(je,ct){return oe.headers.set(ct,je)});var _e=he(C.headers.get("Cache-Control")||"");if(!_e["no-store"]){_e["max-age"]&&oe.headers.set("Expires",new Date(V+_e["max-age"]*1e3).toUTCString());var Pe=new Date(oe.headers.get("Expires")).getTime()-V;PeDate.now()&&!V["no-cache"]}var sr=1/0;function sa(k){sr++,sr>ke&&(k.getActor().send("enforceCacheSizeLimit",Ve),sr=0)}function Aa(k){rt(),Le&&Le.then(function(C){C.keys().then(function(V){for(var oe=0;oe=200&&V.status<300||V.status===0)&&V.response!==null){var _e=V.response;if(k.type==="json")try{_e=JSON.parse(V.response)}catch(Pe){return C(Pe)}C(null,_e,V.getResponseHeader("Cache-Control"),V.getResponseHeader("Expires"))}else C(new ni(V.statusText,V.status,k.url))},V.send(k.body),{cancel:function(){return V.abort()}}}var xr=function(k,C){if(!zt(k.url)){if(s.fetch&&s.Request&&s.AbortController&&s.Request.prototype.hasOwnProperty("signal"))return Vt(k,C);if(se()&&self.worker&&self.worker.actor){var V=!0;return self.worker.actor.send("getResource",k,C,void 0,V)}}return Ut(k,C)},Zr=function(k,C){return xr(m(k,{type:"json"}),C)},pa=function(k,C){return xr(m(k,{type:"arrayBuffer"}),C)},Xr=function(k,C){return xr(m(k,{method:"POST"}),C)};function Ea(k){var C=s.document.createElement("a");return C.href=k,C.protocol===s.document.location.protocol&&C.host===s.document.location.host}var Fa="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function qa(k,C,V,oe){var _e=new s.Image,Pe=s.URL;_e.onload=function(){C(null,_e),Pe.revokeObjectURL(_e.src),_e.onload=null,s.requestAnimationFrame(function(){_e.src=Fa})},_e.onerror=function(){return C(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))};var je=new s.Blob([new Uint8Array(k)],{type:"image/png"});_e.cacheControl=V,_e.expires=oe,_e.src=k.byteLength?Pe.createObjectURL(je):Fa}function ya(k,C){var V=new s.Blob([new Uint8Array(k)],{type:"image/png"});s.createImageBitmap(V).then(function(oe){C(null,oe)}).catch(function(oe){C(new Error("Could not load image because of "+oe.message+". Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))})}var $a,mt,gt=function(){$a=[],mt=0};gt();var Er=function(k,C){if(Be.supported&&(k.headers||(k.headers={}),k.headers.accept="image/webp,*/*"),mt>=Ae.MAX_PARALLEL_IMAGE_REQUESTS){var V={requestParameters:k,callback:C,cancelled:!1,cancel:function(){this.cancelled=!0}};return $a.push(V),V}mt++;var oe=!1,_e=function(){if(!oe)for(oe=!0,mt--;$a.length&&mt0||this._oneTimeListeners&&this._oneTimeListeners[C]&&this._oneTimeListeners[C].length>0||this._eventedParent&&this._eventedParent.listens(C)},Lr.prototype.setEventedParent=function(C,V){return this._eventedParent=C,this._eventedParentData=V,this};var Jr=8,oa={version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sources:{required:!0,type:"sources"},sprite:{type:"string"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},ca={"*":{type:"source"}},kt=["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],ir={type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},mr={type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},$r={type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{}},default:"mapbox"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},ma={type:{required:!0,type:"enum",values:{geojson:{}}},data:{type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},Ba={type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},Ca={type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},da={id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},Sa=["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],Ti={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},ai={"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},an={"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},sn={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Mn={"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},On={"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},$n={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Cn={visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},Lo={type:"array",value:"*"},Xi={type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{},within:{}}},Jo={type:"enum",values:{Point:{},LineString:{},Polygon:{}}},zo={type:"array",minimum:0,maximum:24,value:["number","color"],length:2},as={type:"array",value:"*",minimum:1},Pn={anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},go=["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],In={"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},Do={"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},Ho={"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},Qo={"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Xn={"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},po={"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},ys={"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Is={"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},Fs={duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},$o={"*":{type:"string"}},fi={$version:Jr,$root:oa,sources:ca,source:kt,source_vector:ir,source_raster:mr,source_raster_dem:$r,source_geojson:ma,source_video:Ba,source_image:Ca,layer:da,layout:Sa,layout_background:Ti,layout_fill:ai,layout_circle:an,layout_heatmap:sn,"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:Mn,layout_symbol:On,layout_raster:$n,layout_hillshade:Cn,filter:Lo,filter_operator:Xi,geometry_type:Jo,function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:zo,expression:as,light:Pn,paint:go,paint_fill:In,"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:Do,paint_circle:Ho,paint_heatmap:Qo,paint_symbol:Xn,paint_raster:po,paint_hillshade:ys,paint_background:Is,transition:Fs,"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:$o},mn=function(C,V,oe,_e){this.message=(C?C+": ":"")+oe,_e&&(this.identifier=_e),V!=null&&V.__line__&&(this.line=V.__line__)};function ol(k){var C=k.key,V=k.value;return V?[new mn(C,V,"constants have been deprecated as of v8")]:[]}function Os(k){for(var C=[],V=arguments.length-1;V-- >0;)C[V]=arguments[V+1];for(var oe=0,_e=C;oe<_e.length;oe+=1){var Pe=_e[oe];for(var je in Pe)k[je]=Pe[je]}return k}function so(k){return k instanceof Number||k instanceof String||k instanceof Boolean?k.valueOf():k}function Ns(k){if(Array.isArray(k))return k.map(Ns);if(k instanceof Object&&!(k instanceof Number||k instanceof String||k instanceof Boolean)){var C={};for(var V in k)C[V]=Ns(k[V]);return C}return so(k)}var fs=function(k){function C(V,oe){k.call(this,oe),this.message=oe,this.key=V}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C}(Error),al=function(C,V){V===void 0&&(V=[]),this.parent=C,this.bindings={};for(var oe=0,_e=V;oe<_e.length;oe+=1){var Pe=_e[oe],je=Pe[0],ct=Pe[1];this.bindings[je]=ct}};al.prototype.concat=function(C){return new al(this,C)},al.prototype.get=function(C){if(this.bindings[C])return this.bindings[C];if(this.parent)return this.parent.get(C);throw new Error(C+" not found in scope.")},al.prototype.has=function(C){return this.bindings[C]?!0:this.parent?this.parent.has(C):!1};var vl={kind:"null"},ji={kind:"number"},To={kind:"string"},Yn={kind:"boolean"},_s={kind:"color"},Yo={kind:"object"},Nn={kind:"value"},Wl={kind:"error"},Zu={kind:"collator"},ml={kind:"formatted"},Bu={kind:"resolvedImage"};function El(k,C){return{kind:"array",itemType:k,N:C}}function qs(k){if(k.kind==="array"){var C=qs(k.itemType);return typeof k.N=="number"?"array<"+C+", "+k.N+">":k.itemType.kind==="value"?"array":"array<"+C+">"}else return k.kind}var Jl=[vl,ji,To,Yn,_s,ml,Yo,El(Nn),Bu];function Nu(k,C){if(C.kind==="error")return null;if(k.kind==="array"){if(C.kind==="array"&&(C.N===0&&C.itemType.kind==="value"||!Nu(k.itemType,C.itemType))&&(typeof k.N!="number"||k.N===C.N))return null}else{if(k.kind===C.kind)return null;if(k.kind==="value")for(var V=0,oe=Jl;V255?255:Nt}function _e(Nt){return Nt<0?0:Nt>1?1:Nt}function Pe(Nt){return Nt[Nt.length-1]==="%"?oe(parseFloat(Nt)/100*255):oe(parseInt(Nt))}function je(Nt){return Nt[Nt.length-1]==="%"?_e(parseFloat(Nt)/100):_e(parseFloat(Nt))}function ct(Nt,Xt,gr){return gr<0?gr+=1:gr>1&&(gr-=1),gr*6<1?Nt+(Xt-Nt)*gr*6:gr*2<1?Xt:gr*3<2?Nt+(Xt-Nt)*(2/3-gr)*6:Nt}function Lt(Nt){var Xt=Nt.replace(/ /g,"").toLowerCase();if(Xt in V)return V[Xt].slice();if(Xt[0]==="#"){if(Xt.length===4){var gr=parseInt(Xt.substr(1),16);return gr>=0&&gr<=4095?[(gr&3840)>>4|(gr&3840)>>8,gr&240|(gr&240)>>4,gr&15|(gr&15)<<4,1]:null}else if(Xt.length===7){var gr=parseInt(Xt.substr(1),16);return gr>=0&&gr<=16777215?[(gr&16711680)>>16,(gr&65280)>>8,gr&255,1]:null}return null}var Br=Xt.indexOf("("),Rr=Xt.indexOf(")");if(Br!==-1&&Rr+1===Xt.length){var na=Xt.substr(0,Br),Ia=Xt.substr(Br+1,Rr-(Br+1)).split(","),ii=1;switch(na){case"rgba":if(Ia.length!==4)return null;ii=je(Ia.pop());case"rgb":return Ia.length!==3?null:[Pe(Ia[0]),Pe(Ia[1]),Pe(Ia[2]),ii];case"hsla":if(Ia.length!==4)return null;ii=je(Ia.pop());case"hsl":if(Ia.length!==3)return null;var Wa=(parseFloat(Ia[0])%360+360)%360/360,Si=je(Ia[1]),ci=je(Ia[2]),Ai=ci<=.5?ci*(Si+1):ci+Si-ci*Si,Li=ci*2-Ai;return[oe(ct(Li,Ai,Wa+1/3)*255),oe(ct(Li,Ai,Wa)*255),oe(ct(Li,Ai,Wa-1/3)*255),ii];default:return null}}return null}try{C.parseCSSColor=Lt}catch{}}),bf=Th.parseCSSColor,Rs=function(C,V,oe,_e){_e===void 0&&(_e=1),this.r=C,this.g=V,this.b=oe,this.a=_e};Rs.parse=function(C){if(C){if(C instanceof Rs)return C;if(typeof C=="string"){var V=bf(C);if(V)return new Rs(V[0]/255*V[3],V[1]/255*V[3],V[2]/255*V[3],V[3])}}},Rs.prototype.toString=function(){var C=this.toArray(),V=C[0],oe=C[1],_e=C[2],Pe=C[3];return"rgba("+Math.round(V)+","+Math.round(oe)+","+Math.round(_e)+","+Pe+")"},Rs.prototype.toArray=function(){var C=this,V=C.r,oe=C.g,_e=C.b,Pe=C.a;return Pe===0?[0,0,0,0]:[V*255/Pe,oe*255/Pe,_e*255/Pe,Pe]},Rs.black=new Rs(0,0,0,1),Rs.white=new Rs(1,1,1,1),Rs.transparent=new Rs(0,0,0,0),Rs.red=new Rs(1,0,0,1);var Yc=function(C,V,oe){C?this.sensitivity=V?"variant":"case":this.sensitivity=V?"accent":"base",this.locale=oe,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})};Yc.prototype.compare=function(C,V){return this.collator.compare(C,V)},Yc.prototype.resolvedLocale=function(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale};var If=function(C,V,oe,_e,Pe){this.text=C,this.image=V,this.scale=oe,this.fontStack=_e,this.textColor=Pe},Zl=function(C){this.sections=C};Zl.fromString=function(C){return new Zl([new If(C,null,null,null,null)])},Zl.prototype.isEmpty=function(){return this.sections.length===0?!0:!this.sections.some(function(C){return C.text.length!==0||C.image&&C.image.name.length!==0})},Zl.factory=function(C){return C instanceof Zl?C:Zl.fromString(C)},Zl.prototype.toString=function(){return this.sections.length===0?"":this.sections.map(function(C){return C.text}).join("")},Zl.prototype.serialize=function(){for(var C=["format"],V=0,oe=this.sections;V=0&&k<=255&&typeof C=="number"&&C>=0&&C<=255&&typeof V=="number"&&V>=0&&V<=255)){var _e=typeof oe=="number"?[k,C,V,oe]:[k,C,V];return"Invalid rgba value ["+_e.join(", ")+"]: 'r', 'g', and 'b' must be between 0 and 255."}return typeof oe>"u"||typeof oe=="number"&&oe>=0&&oe<=1?null:"Invalid rgba value ["+[k,C,V,oe].join(", ")+"]: 'a' must be between 0 and 1."}function _c(k){if(k===null)return!0;if(typeof k=="string")return!0;if(typeof k=="boolean")return!0;if(typeof k=="number")return!0;if(k instanceof Rs)return!0;if(k instanceof Yc)return!0;if(k instanceof Zl)return!0;if(k instanceof yl)return!0;if(Array.isArray(k)){for(var C=0,V=k;C2){var ct=C[1];if(typeof ct!="string"||!(ct in sc)||ct==="object")return V.error('The item type argument of "array" must be one of string, number, boolean',1);je=sc[ct],oe++}else je=Nn;var Lt;if(C.length>3){if(C[2]!==null&&(typeof C[2]!="number"||C[2]<0||C[2]!==Math.floor(C[2])))return V.error('The length argument to "array" must be a positive integer literal',2);Lt=C[2],oe++}_e=El(je,Lt)}else _e=sc[Pe];for(var Nt=[];oe1)&&V.push(_e)}}return V.concat(this.args.map(function(Pe){return Pe.serialize()}))};var Yu=function(C){this.type=ml,this.sections=C};Yu.parse=function(C,V){if(C.length<2)return V.error("Expected at least one argument.");var oe=C[1];if(!Array.isArray(oe)&&typeof oe=="object")return V.error("First argument must be an image or text section.");for(var _e=[],Pe=!1,je=1;je<=C.length-1;++je){var ct=C[je];if(Pe&&typeof ct=="object"&&!Array.isArray(ct)){Pe=!1;var Lt=null;if(ct["font-scale"]&&(Lt=V.parse(ct["font-scale"],1,ji),!Lt))return null;var Nt=null;if(ct["text-font"]&&(Nt=V.parse(ct["text-font"],1,El(To)),!Nt))return null;var Xt=null;if(ct["text-color"]&&(Xt=V.parse(ct["text-color"],1,_s),!Xt))return null;var gr=_e[_e.length-1];gr.scale=Lt,gr.font=Nt,gr.textColor=Xt}else{var Br=V.parse(C[je],1,Nn);if(!Br)return null;var Rr=Br.type.kind;if(Rr!=="string"&&Rr!=="value"&&Rr!=="null"&&Rr!=="resolvedImage")return V.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");Pe=!0,_e.push({content:Br,scale:null,font:null,textColor:null})}}return new Yu(_e)},Yu.prototype.evaluate=function(C){var V=function(oe){var _e=oe.content.evaluate(C);return Zs(_e)===Bu?new If("",_e,null,null,null):new If(_l(_e),null,oe.scale?oe.scale.evaluate(C):null,oe.font?oe.font.evaluate(C).join(","):null,oe.textColor?oe.textColor.evaluate(C):null)};return new Zl(this.sections.map(V))},Yu.prototype.eachChild=function(C){for(var V=0,oe=this.sections;V-1),oe},Qs.prototype.eachChild=function(C){C(this.input)},Qs.prototype.outputDefined=function(){return!1},Qs.prototype.serialize=function(){return["image",this.input.serialize()]};var fp={"to-boolean":Yn,"to-color":_s,"to-number":ji,"to-string":To},es=function(C,V){this.type=C,this.args=V};es.parse=function(C,V){if(C.length<2)return V.error("Expected at least one argument.");var oe=C[0];if((oe==="to-boolean"||oe==="to-string")&&C.length!==2)return V.error("Expected one argument.");for(var _e=fp[oe],Pe=[],je=1;je4?oe="Invalid rbga value "+JSON.stringify(V)+": expected an array containing either three or four numeric values.":oe=oc(V[0],V[1],V[2],V[3]),!oe))return new Rs(V[0]/255,V[1]/255,V[2]/255,V[3])}throw new $s(oe||"Could not parse color from value '"+(typeof V=="string"?V:String(JSON.stringify(V)))+"'")}else if(this.type.kind==="number"){for(var Lt=null,Nt=0,Xt=this.args;Nt=C[2]||k[1]<=C[1]||k[3]>=C[3])}function lh(k,C){var V=Rc(k[0]),oe=pf(k[1]),_e=Math.pow(2,C.z);return[Math.round(V*_e*cu),Math.round(oe*_e*cu)]}function Xf(k,C,V){var oe=k[0]-C[0],_e=k[1]-C[1],Pe=k[0]-V[0],je=k[1]-V[1];return oe*je-Pe*_e===0&&oe*Pe<=0&&_e*je<=0}function Rf(k,C,V){return C[1]>k[1]!=V[1]>k[1]&&k[0]<(V[0]-C[0])*(k[1]-C[1])/(V[1]-C[1])+C[0]}function Kc(k,C){for(var V=!1,oe=0,_e=C.length;oe<_e;oe++)for(var Pe=C[oe],je=0,ct=Pe.length;je0&&gr<0||Xt<0&&gr>0}function Df(k,C,V,oe){var _e=[C[0]-k[0],C[1]-k[1]],Pe=[oe[0]-V[0],oe[1]-V[1]];return uh(Pe,_e)===0?!1:!!(Ju(k,C,V,oe)&&Ju(V,oe,k,C))}function Dc(k,C,V){for(var oe=0,_e=V;oe<_e.length;oe+=1)for(var Pe=_e[oe],je=0;jeV[2]){var _e=oe*.5,Pe=k[0]-V[0]>_e?-oe:V[0]-k[0]>_e?oe:0;Pe===0&&(Pe=k[0]-V[2]>_e?-oe:V[2]-k[0]>_e?oe:0),k[0]+=Pe}Zf(C,k)}function Kf(k){k[0]=k[1]=1/0,k[2]=k[3]=-1/0}function Zh(k,C,V,oe){for(var _e=Math.pow(2,oe.z)*cu,Pe=[oe.x*cu,oe.y*cu],je=[],ct=0,Lt=k;ct=0)return!1;var V=!0;return k.eachChild(function(oe){V&&!Cu(oe,C)&&(V=!1)}),V}var xc=function(C,V){this.type=V.type,this.name=C,this.boundExpression=V};xc.parse=function(C,V){if(C.length!==2||typeof C[1]!="string")return V.error("'var' expression requires exactly one string literal argument.");var oe=C[1];return V.scope.has(oe)?new xc(oe,V.scope.get(oe)):V.error('Unknown variable "'+oe+'". Make sure "'+oe+'" has been bound in an enclosing "let" expression before using it.',1)},xc.prototype.evaluate=function(C){return this.boundExpression.evaluate(C)},xc.prototype.eachChild=function(){},xc.prototype.outputDefined=function(){return!1},xc.prototype.serialize=function(){return["var",this.name]};var kl=function(C,V,oe,_e,Pe){V===void 0&&(V=[]),_e===void 0&&(_e=new al),Pe===void 0&&(Pe=[]),this.registry=C,this.path=V,this.key=V.map(function(je){return"["+je+"]"}).join(""),this.scope=_e,this.errors=Pe,this.expectedType=oe};kl.prototype.parse=function(C,V,oe,_e,Pe){return Pe===void 0&&(Pe={}),V?this.concat(V,oe,_e)._parse(C,Pe):this._parse(C,Pe)},kl.prototype._parse=function(C,V){(C===null||typeof C=="string"||typeof C=="boolean"||typeof C=="number")&&(C=["literal",C]);function oe(Xt,gr,Br){return Br==="assert"?new zl(gr,[Xt]):Br==="coerce"?new es(gr,[Xt]):Xt}if(Array.isArray(C)){if(C.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');var _e=C[0];if(typeof _e!="string")return this.error("Expression name must be a string, but found "+typeof _e+' instead. If you wanted a literal array, use ["literal", [...]].',0),null;var Pe=this.registry[_e];if(Pe){var je=Pe.parse(C,this);if(!je)return null;if(this.expectedType){var ct=this.expectedType,Lt=je.type;if((ct.kind==="string"||ct.kind==="number"||ct.kind==="boolean"||ct.kind==="object"||ct.kind==="array")&&Lt.kind==="value")je=oe(je,ct,V.typeAnnotation||"assert");else if((ct.kind==="color"||ct.kind==="formatted"||ct.kind==="resolvedImage")&&(Lt.kind==="value"||Lt.kind==="string"))je=oe(je,ct,V.typeAnnotation||"coerce");else if(this.checkSubtype(ct,Lt))return null}if(!(je instanceof Bs)&&je.type.kind!=="resolvedImage"&&Fc(je)){var Nt=new Ss;try{je=new Bs(je.type,je.evaluate(Nt))}catch(Xt){return this.error(Xt.message),null}}return je}return this.error('Unknown expression "'+_e+'". If you wanted a literal array, use ["literal", [...]].',0)}else return typeof C>"u"?this.error("'undefined' value invalid. Use null instead."):typeof C=="object"?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error("Expected an array, but found "+typeof C+" instead.")},kl.prototype.concat=function(C,V,oe){var _e=typeof C=="number"?this.path.concat(C):this.path,Pe=oe?this.scope.concat(oe):this.scope;return new kl(this.registry,_e,V||null,Pe,this.errors)},kl.prototype.error=function(C){for(var V=[],oe=arguments.length-1;oe-- >0;)V[oe]=arguments[oe+1];var _e=""+this.key+V.map(function(Pe){return"["+Pe+"]"}).join("");this.errors.push(new fs(_e,C))},kl.prototype.checkSubtype=function(C,V){var oe=Nu(C,V);return oe&&this.error(oe),oe};function Fc(k){if(k instanceof xc)return Fc(k.boundExpression);if(k instanceof So&&k.name==="error")return!1;if(k instanceof Ku)return!1;if(k instanceof ku)return!1;var C=k instanceof es||k instanceof zl,V=!0;return k.eachChild(function(oe){C?V=V&&Fc(oe):V=V&&oe instanceof Bs}),V?fh(k)&&Cu(k,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"]):!1}function $u(k,C){for(var V=k.length-1,oe=0,_e=V,Pe=0,je,ct;oe<=_e;)if(Pe=Math.floor((oe+_e)/2),je=k[Pe],ct=k[Pe+1],je<=C){if(Pe===V||CC)_e=Pe-1;else throw new $s("Input is not a number.");return 0}var vu=function(C,V,oe){this.type=C,this.input=V,this.labels=[],this.outputs=[];for(var _e=0,Pe=oe;_e=ct)return V.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',Nt);var gr=V.parse(Lt,Xt,Pe);if(!gr)return null;Pe=Pe||gr.type,_e.push([ct,gr])}return new vu(Pe,oe,_e)},vu.prototype.evaluate=function(C){var V=this.labels,oe=this.outputs;if(V.length===1)return oe[0].evaluate(C);var _e=this.input.evaluate(C);if(_e<=V[0])return oe[0].evaluate(C);var Pe=V.length;if(_e>=V[Pe-1])return oe[Pe-1].evaluate(C);var je=$u(V,_e);return oe[je].evaluate(C)},vu.prototype.eachChild=function(C){C(this.input);for(var V=0,oe=this.outputs;V0&&C.push(this.labels[V]),C.push(this.outputs[V].serialize());return C};function xl(k,C,V){return k*(1-V)+C*V}function hh(k,C,V){return new Rs(xl(k.r,C.r,V),xl(k.g,C.g,V),xl(k.b,C.b,V),xl(k.a,C.a,V))}function Sh(k,C,V){return k.map(function(oe,_e){return xl(oe,C[_e],V)})}var Uu=Object.freeze({__proto__:null,number:xl,color:hh,array:Sh}),bc=.95047,lc=1,hp=1.08883,vf=4/29,Tf=6/29,Lu=3*Tf*Tf,zf=Tf*Tf*Tf,au=Math.PI/180,$c=180/Math.PI;function Mh(k){return k>zf?Math.pow(k,1/3):k/Lu+vf}function Ff(k){return k>Tf?k*k*k:Lu*(k-vf)}function il(k){return 255*(k<=.0031308?12.92*k:1.055*Math.pow(k,1/2.4)-.055)}function mu(k){return k/=255,k<=.04045?k/12.92:Math.pow((k+.055)/1.055,2.4)}function gu(k){var C=mu(k.r),V=mu(k.g),oe=mu(k.b),_e=Mh((.4124564*C+.3575761*V+.1804375*oe)/bc),Pe=Mh((.2126729*C+.7151522*V+.072175*oe)/lc),je=Mh((.0193339*C+.119192*V+.9503041*oe)/hp);return{l:116*Pe-16,a:500*(_e-Pe),b:200*(Pe-je),alpha:k.a}}function Jf(k){var C=(k.l+16)/116,V=isNaN(k.a)?C:C+k.a/500,oe=isNaN(k.b)?C:C-k.b/200;return C=lc*Ff(C),V=bc*Ff(V),oe=hp*Ff(oe),new Rs(il(3.2404542*V-1.5371385*C-.4985314*oe),il(-.969266*V+1.8760108*C+.041556*oe),il(.0556434*V-.2040259*C+1.0572252*oe),k.alpha)}function el(k,C,V){return{l:xl(k.l,C.l,V),a:xl(k.a,C.a,V),b:xl(k.b,C.b,V),alpha:xl(k.alpha,C.alpha,V)}}function mf(k){var C=gu(k),V=C.l,oe=C.a,_e=C.b,Pe=Math.atan2(_e,oe)*$c;return{h:Pe<0?Pe+360:Pe,c:Math.sqrt(oe*oe+_e*_e),l:V,alpha:k.a}}function wc(k){var C=k.h*au,V=k.c,oe=k.l;return Jf({l:oe,a:Math.cos(C)*V,b:Math.sin(C)*V,alpha:k.alpha})}function ju(k,C,V){var oe=C-k;return k+V*(oe>180||oe<-180?oe-360*Math.round(oe/360):oe)}function Af(k,C,V){return{h:ju(k.h,C.h,V),c:xl(k.c,C.c,V),l:xl(k.l,C.l,V),alpha:xl(k.alpha,C.alpha,V)}}var uc={forward:gu,reverse:Jf,interpolate:el},Qc={forward:mf,reverse:wc,interpolate:Af},$f=Object.freeze({__proto__:null,lab:uc,hcl:Qc}),Vl=function(C,V,oe,_e,Pe){this.type=C,this.operator=V,this.interpolation=oe,this.input=_e,this.labels=[],this.outputs=[];for(var je=0,ct=Pe;je1}))return V.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);_e={name:"cubic-bezier",controlPoints:Lt}}else return V.error("Unknown interpolation type "+String(_e[0]),1,0);if(C.length-1<4)return V.error("Expected at least 4 arguments, but found only "+(C.length-1)+".");if((C.length-1)%2!==0)return V.error("Expected an even number of arguments.");if(Pe=V.parse(Pe,2,ji),!Pe)return null;var Nt=[],Xt=null;oe==="interpolate-hcl"||oe==="interpolate-lab"?Xt=_s:V.expectedType&&V.expectedType.kind!=="value"&&(Xt=V.expectedType);for(var gr=0;gr=Br)return V.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',na);var ii=V.parse(Rr,Ia,Xt);if(!ii)return null;Xt=Xt||ii.type,Nt.push([Br,ii])}return Xt.kind!=="number"&&Xt.kind!=="color"&&!(Xt.kind==="array"&&Xt.itemType.kind==="number"&&typeof Xt.N=="number")?V.error("Type "+qs(Xt)+" is not interpolatable."):new Vl(Xt,oe,_e,Pe,Nt)},Vl.prototype.evaluate=function(C){var V=this.labels,oe=this.outputs;if(V.length===1)return oe[0].evaluate(C);var _e=this.input.evaluate(C);if(_e<=V[0])return oe[0].evaluate(C);var Pe=V.length;if(_e>=V[Pe-1])return oe[Pe-1].evaluate(C);var je=$u(V,_e),ct=V[je],Lt=V[je+1],Nt=Vl.interpolationFactor(this.interpolation,_e,ct,Lt),Xt=oe[je].evaluate(C),gr=oe[je+1].evaluate(C);return this.operator==="interpolate"?Uu[this.type.kind.toLowerCase()](Xt,gr,Nt):this.operator==="interpolate-hcl"?Qc.reverse(Qc.interpolate(Qc.forward(Xt),Qc.forward(gr),Nt)):uc.reverse(uc.interpolate(uc.forward(Xt),uc.forward(gr),Nt))},Vl.prototype.eachChild=function(C){C(this.input);for(var V=0,oe=this.outputs;V=oe.length)throw new $s("Array index out of bounds: "+V+" > "+(oe.length-1)+".");if(V!==Math.floor(V))throw new $s("Array index must be an integer, but found "+V+" instead.");return oe[V]},cc.prototype.eachChild=function(C){C(this.index),C(this.input)},cc.prototype.outputDefined=function(){return!1},cc.prototype.serialize=function(){return["at",this.index.serialize(),this.input.serialize()]};var Cl=function(C,V){this.type=Yn,this.needle=C,this.haystack=V};Cl.parse=function(C,V){if(C.length!==3)return V.error("Expected 2 arguments, but found "+(C.length-1)+" instead.");var oe=V.parse(C[1],1,Nn),_e=V.parse(C[2],2,Nn);return!oe||!_e?null:Ic(oe.type,[Yn,To,ji,vl,Nn])?new Cl(oe,_e):V.error("Expected first argument to be of type boolean, string, number or null, but found "+qs(oe.type)+" instead")},Cl.prototype.evaluate=function(C){var V=this.needle.evaluate(C),oe=this.haystack.evaluate(C);if(!oe)return!1;if(!Xu(V,["boolean","string","number","null"]))throw new $s("Expected first argument to be of type boolean, string, number or null, but found "+qs(Zs(V))+" instead.");if(!Xu(oe,["string","array"]))throw new $s("Expected second argument to be of type array or string, but found "+qs(Zs(oe))+" instead.");return oe.indexOf(V)>=0},Cl.prototype.eachChild=function(C){C(this.needle),C(this.haystack)},Cl.prototype.outputDefined=function(){return!0},Cl.prototype.serialize=function(){return["in",this.needle.serialize(),this.haystack.serialize()]};var iu=function(C,V,oe){this.type=ji,this.needle=C,this.haystack=V,this.fromIndex=oe};iu.parse=function(C,V){if(C.length<=2||C.length>=5)return V.error("Expected 3 or 4 arguments, but found "+(C.length-1)+" instead.");var oe=V.parse(C[1],1,Nn),_e=V.parse(C[2],2,Nn);if(!oe||!_e)return null;if(!Ic(oe.type,[Yn,To,ji,vl,Nn]))return V.error("Expected first argument to be of type boolean, string, number or null, but found "+qs(oe.type)+" instead");if(C.length===4){var Pe=V.parse(C[3],3,ji);return Pe?new iu(oe,_e,Pe):null}else return new iu(oe,_e)},iu.prototype.evaluate=function(C){var V=this.needle.evaluate(C),oe=this.haystack.evaluate(C);if(!Xu(V,["boolean","string","number","null"]))throw new $s("Expected first argument to be of type boolean, string, number or null, but found "+qs(Zs(V))+" instead.");if(!Xu(oe,["string","array"]))throw new $s("Expected second argument to be of type array or string, but found "+qs(Zs(oe))+" instead.");if(this.fromIndex){var _e=this.fromIndex.evaluate(C);return oe.indexOf(V,_e)}return oe.indexOf(V)},iu.prototype.eachChild=function(C){C(this.needle),C(this.haystack),this.fromIndex&&C(this.fromIndex)},iu.prototype.outputDefined=function(){return!1},iu.prototype.serialize=function(){if(this.fromIndex!=null&&this.fromIndex!==void 0){var C=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),C]}return["index-of",this.needle.serialize(),this.haystack.serialize()]};var fc=function(C,V,oe,_e,Pe,je){this.inputType=C,this.type=V,this.input=oe,this.cases=_e,this.outputs=Pe,this.otherwise=je};fc.parse=function(C,V){if(C.length<5)return V.error("Expected at least 4 arguments, but found only "+(C.length-1)+".");if(C.length%2!==1)return V.error("Expected an even number of arguments.");var oe,_e;V.expectedType&&V.expectedType.kind!=="value"&&(_e=V.expectedType);for(var Pe={},je=[],ct=2;ctNumber.MAX_SAFE_INTEGER)return Xt.error("Branch labels must be integers no larger than "+Number.MAX_SAFE_INTEGER+".");if(typeof Rr=="number"&&Math.floor(Rr)!==Rr)return Xt.error("Numeric branch labels must be integer values.");if(!oe)oe=Zs(Rr);else if(Xt.checkSubtype(oe,Zs(Rr)))return null;if(typeof Pe[String(Rr)]<"u")return Xt.error("Branch labels must be unique.");Pe[String(Rr)]=je.length}var na=V.parse(Nt,ct,_e);if(!na)return null;_e=_e||na.type,je.push(na)}var Ia=V.parse(C[1],1,Nn);if(!Ia)return null;var ii=V.parse(C[C.length-1],C.length-1,_e);return!ii||Ia.type.kind!=="value"&&V.concat(1).checkSubtype(oe,Ia.type)?null:new fc(oe,_e,Ia,Pe,je,ii)},fc.prototype.evaluate=function(C){var V=this.input.evaluate(C),oe=Zs(V)===this.inputType&&this.outputs[this.cases[V]]||this.otherwise;return oe.evaluate(C)},fc.prototype.eachChild=function(C){C(this.input),this.outputs.forEach(C),C(this.otherwise)},fc.prototype.outputDefined=function(){return this.outputs.every(function(C){return C.outputDefined()})&&this.otherwise.outputDefined()},fc.prototype.serialize=function(){for(var C=this,V=["match",this.input.serialize()],oe=Object.keys(this.cases).sort(),_e=[],Pe={},je=0,ct=oe;je=5)return V.error("Expected 3 or 4 arguments, but found "+(C.length-1)+" instead.");var oe=V.parse(C[1],1,Nn),_e=V.parse(C[2],2,ji);if(!oe||!_e)return null;if(!Ic(oe.type,[El(Nn),To,Nn]))return V.error("Expected first argument to be of type array or string, but found "+qs(oe.type)+" instead");if(C.length===4){var Pe=V.parse(C[3],3,ji);return Pe?new Qu(oe.type,oe,_e,Pe):null}else return new Qu(oe.type,oe,_e)},Qu.prototype.evaluate=function(C){var V=this.input.evaluate(C),oe=this.beginIndex.evaluate(C);if(!Xu(V,["string","array"]))throw new $s("Expected first argument to be of type array or string, but found "+qs(Zs(V))+" instead.");if(this.endIndex){var _e=this.endIndex.evaluate(C);return V.slice(oe,_e)}return V.slice(oe)},Qu.prototype.eachChild=function(C){C(this.input),C(this.beginIndex),this.endIndex&&C(this.endIndex)},Qu.prototype.outputDefined=function(){return!1},Qu.prototype.serialize=function(){if(this.endIndex!=null&&this.endIndex!==void 0){var C=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),C]}return["slice",this.input.serialize(),this.beginIndex.serialize()]};function ef(k,C){return k==="=="||k==="!="?C.kind==="boolean"||C.kind==="string"||C.kind==="number"||C.kind==="null"||C.kind==="value":C.kind==="string"||C.kind==="number"||C.kind==="value"}function Zt(k,C,V){return C===V}function fr(k,C,V){return C!==V}function Yr(k,C,V){return CV}function ba(k,C,V){return C<=V}function Ka(k,C,V){return C>=V}function oi(k,C,V,oe){return oe.compare(C,V)===0}function yi(k,C,V,oe){return!oi(k,C,V,oe)}function ki(k,C,V,oe){return oe.compare(C,V)<0}function Bi(k,C,V,oe){return oe.compare(C,V)>0}function li(k,C,V,oe){return oe.compare(C,V)<=0}function _i(k,C,V,oe){return oe.compare(C,V)>=0}function vi(k,C,V){var oe=k!=="=="&&k!=="!=";return function(){function _e(Pe,je,ct){this.type=Yn,this.lhs=Pe,this.rhs=je,this.collator=ct,this.hasUntypedArgument=Pe.type.kind==="value"||je.type.kind==="value"}return _e.parse=function(je,ct){if(je.length!==3&&je.length!==4)return ct.error("Expected two or three arguments.");var Lt=je[0],Nt=ct.parse(je[1],1,Nn);if(!Nt)return null;if(!ef(Lt,Nt.type))return ct.concat(1).error('"'+Lt+`" comparisons are not supported for type '`+qs(Nt.type)+"'.");var Xt=ct.parse(je[2],2,Nn);if(!Xt)return null;if(!ef(Lt,Xt.type))return ct.concat(2).error('"'+Lt+`" comparisons are not supported for type '`+qs(Xt.type)+"'.");if(Nt.type.kind!==Xt.type.kind&&Nt.type.kind!=="value"&&Xt.type.kind!=="value")return ct.error("Cannot compare types '"+qs(Nt.type)+"' and '"+qs(Xt.type)+"'.");oe&&(Nt.type.kind==="value"&&Xt.type.kind!=="value"?Nt=new zl(Xt.type,[Nt]):Nt.type.kind!=="value"&&Xt.type.kind==="value"&&(Xt=new zl(Nt.type,[Xt])));var gr=null;if(je.length===4){if(Nt.type.kind!=="string"&&Xt.type.kind!=="string"&&Nt.type.kind!=="value"&&Xt.type.kind!=="value")return ct.error("Cannot use collator to compare non-string types.");if(gr=ct.parse(je[3],3,Zu),!gr)return null}return new _e(Nt,Xt,gr)},_e.prototype.evaluate=function(je){var ct=this.lhs.evaluate(je),Lt=this.rhs.evaluate(je);if(oe&&this.hasUntypedArgument){var Nt=Zs(ct),Xt=Zs(Lt);if(Nt.kind!==Xt.kind||!(Nt.kind==="string"||Nt.kind==="number"))throw new $s('Expected arguments for "'+k+'" to be (string, string) or (number, number), but found ('+Nt.kind+", "+Xt.kind+") instead.")}if(this.collator&&!oe&&this.hasUntypedArgument){var gr=Zs(ct),Br=Zs(Lt);if(gr.kind!=="string"||Br.kind!=="string")return C(je,ct,Lt)}return this.collator?V(je,ct,Lt,this.collator.evaluate(je)):C(je,ct,Lt)},_e.prototype.eachChild=function(je){je(this.lhs),je(this.rhs),this.collator&&je(this.collator)},_e.prototype.outputDefined=function(){return!0},_e.prototype.serialize=function(){var je=[k];return this.eachChild(function(ct){je.push(ct.serialize())}),je},_e}()}var ti=vi("==",Zt,oi),rn=vi("!=",fr,yi),Kn=vi("<",Yr,ki),Wn=vi(">",qr,Bi),Jn=vi("<=",ba,li),no=vi(">=",Ka,_i),en=function(C,V,oe,_e,Pe){this.type=To,this.number=C,this.locale=V,this.currency=oe,this.minFractionDigits=_e,this.maxFractionDigits=Pe};en.parse=function(C,V){if(C.length!==3)return V.error("Expected two arguments.");var oe=V.parse(C[1],1,ji);if(!oe)return null;var _e=C[2];if(typeof _e!="object"||Array.isArray(_e))return V.error("NumberFormat options argument must be an object.");var Pe=null;if(_e.locale&&(Pe=V.parse(_e.locale,1,To),!Pe))return null;var je=null;if(_e.currency&&(je=V.parse(_e.currency,1,To),!je))return null;var ct=null;if(_e["min-fraction-digits"]&&(ct=V.parse(_e["min-fraction-digits"],1,ji),!ct))return null;var Lt=null;return _e["max-fraction-digits"]&&(Lt=V.parse(_e["max-fraction-digits"],1,ji),!Lt)?null:new en(oe,Pe,je,ct,Lt)},en.prototype.evaluate=function(C){return new Intl.NumberFormat(this.locale?this.locale.evaluate(C):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(C):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(C):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(C):void 0}).format(this.number.evaluate(C))},en.prototype.eachChild=function(C){C(this.number),this.locale&&C(this.locale),this.currency&&C(this.currency),this.minFractionDigits&&C(this.minFractionDigits),this.maxFractionDigits&&C(this.maxFractionDigits)},en.prototype.outputDefined=function(){return!1},en.prototype.serialize=function(){var C={};return this.locale&&(C.locale=this.locale.serialize()),this.currency&&(C.currency=this.currency.serialize()),this.minFractionDigits&&(C["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(C["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),C]};var Ri=function(C){this.type=ji,this.input=C};Ri.parse=function(C,V){if(C.length!==2)return V.error("Expected 1 argument, but found "+(C.length-1)+" instead.");var oe=V.parse(C[1],1);return oe?oe.type.kind!=="array"&&oe.type.kind!=="string"&&oe.type.kind!=="value"?V.error("Expected argument of type string or array, but found "+qs(oe.type)+" instead."):new Ri(oe):null},Ri.prototype.evaluate=function(C){var V=this.input.evaluate(C);if(typeof V=="string")return V.length;if(Array.isArray(V))return V.length;throw new $s("Expected value to be of type string or array, but found "+qs(Zs(V))+" instead.")},Ri.prototype.eachChild=function(C){C(this.input)},Ri.prototype.outputDefined=function(){return!1},Ri.prototype.serialize=function(){var C=["length"];return this.eachChild(function(V){C.push(V.serialize())}),C};var co={"==":ti,"!=":rn,">":Wn,"<":Kn,">=":no,"<=":Jn,array:zl,at:cc,boolean:zl,case:Oc,coalesce:Vu,collator:Ku,format:Yu,image:Qs,in:Cl,"index-of":iu,interpolate:Vl,"interpolate-hcl":Vl,"interpolate-lab":Vl,length:Ri,let:Tc,literal:Bs,match:fc,number:zl,"number-format":en,object:zl,slice:Qu,step:vu,string:zl,"to-boolean":es,"to-color":es,"to-number":es,"to-string":es,var:xc,within:ku};function Wo(k,C){var V=C[0],oe=C[1],_e=C[2],Pe=C[3];V=V.evaluate(k),oe=oe.evaluate(k),_e=_e.evaluate(k);var je=Pe?Pe.evaluate(k):1,ct=oc(V,oe,_e,je);if(ct)throw new $s(ct);return new Rs(V/255*je,oe/255*je,_e/255*je,je)}function bs(k,C){return k in C}function Xs(k,C){var V=C[k];return typeof V>"u"?null:V}function Ms(k,C,V,oe){for(;V<=oe;){var _e=V+oe>>1;if(C[_e]===k)return!0;C[_e]>k?oe=_e-1:V=_e+1}return!1}function Hs(k){return{type:k}}So.register(co,{error:[Wl,[To],function(k,C){var V=C[0];throw new $s(V.evaluate(k))}],typeof:[To,[Nn],function(k,C){var V=C[0];return qs(Zs(V.evaluate(k)))}],"to-rgba":[El(ji,4),[_s],function(k,C){var V=C[0];return V.evaluate(k).toArray()}],rgb:[_s,[ji,ji,ji],Wo],rgba:[_s,[ji,ji,ji,ji],Wo],has:{type:Yn,overloads:[[[To],function(k,C){var V=C[0];return bs(V.evaluate(k),k.properties())}],[[To,Yo],function(k,C){var V=C[0],oe=C[1];return bs(V.evaluate(k),oe.evaluate(k))}]]},get:{type:Nn,overloads:[[[To],function(k,C){var V=C[0];return Xs(V.evaluate(k),k.properties())}],[[To,Yo],function(k,C){var V=C[0],oe=C[1];return Xs(V.evaluate(k),oe.evaluate(k))}]]},"feature-state":[Nn,[To],function(k,C){var V=C[0];return Xs(V.evaluate(k),k.featureState||{})}],properties:[Yo,[],function(k){return k.properties()}],"geometry-type":[To,[],function(k){return k.geometryType()}],id:[Nn,[],function(k){return k.id()}],zoom:[ji,[],function(k){return k.globals.zoom}],"heatmap-density":[ji,[],function(k){return k.globals.heatmapDensity||0}],"line-progress":[ji,[],function(k){return k.globals.lineProgress||0}],accumulated:[Nn,[],function(k){return k.globals.accumulated===void 0?null:k.globals.accumulated}],"+":[ji,Hs(ji),function(k,C){for(var V=0,oe=0,_e=C;oe<_e.length;oe+=1){var Pe=_e[oe];V+=Pe.evaluate(k)}return V}],"*":[ji,Hs(ji),function(k,C){for(var V=1,oe=0,_e=C;oe<_e.length;oe+=1){var Pe=_e[oe];V*=Pe.evaluate(k)}return V}],"-":{type:ji,overloads:[[[ji,ji],function(k,C){var V=C[0],oe=C[1];return V.evaluate(k)-oe.evaluate(k)}],[[ji],function(k,C){var V=C[0];return-V.evaluate(k)}]]},"/":[ji,[ji,ji],function(k,C){var V=C[0],oe=C[1];return V.evaluate(k)/oe.evaluate(k)}],"%":[ji,[ji,ji],function(k,C){var V=C[0],oe=C[1];return V.evaluate(k)%oe.evaluate(k)}],ln2:[ji,[],function(){return Math.LN2}],pi:[ji,[],function(){return Math.PI}],e:[ji,[],function(){return Math.E}],"^":[ji,[ji,ji],function(k,C){var V=C[0],oe=C[1];return Math.pow(V.evaluate(k),oe.evaluate(k))}],sqrt:[ji,[ji],function(k,C){var V=C[0];return Math.sqrt(V.evaluate(k))}],log10:[ji,[ji],function(k,C){var V=C[0];return Math.log(V.evaluate(k))/Math.LN10}],ln:[ji,[ji],function(k,C){var V=C[0];return Math.log(V.evaluate(k))}],log2:[ji,[ji],function(k,C){var V=C[0];return Math.log(V.evaluate(k))/Math.LN2}],sin:[ji,[ji],function(k,C){var V=C[0];return Math.sin(V.evaluate(k))}],cos:[ji,[ji],function(k,C){var V=C[0];return Math.cos(V.evaluate(k))}],tan:[ji,[ji],function(k,C){var V=C[0];return Math.tan(V.evaluate(k))}],asin:[ji,[ji],function(k,C){var V=C[0];return Math.asin(V.evaluate(k))}],acos:[ji,[ji],function(k,C){var V=C[0];return Math.acos(V.evaluate(k))}],atan:[ji,[ji],function(k,C){var V=C[0];return Math.atan(V.evaluate(k))}],min:[ji,Hs(ji),function(k,C){return Math.min.apply(Math,C.map(function(V){return V.evaluate(k)}))}],max:[ji,Hs(ji),function(k,C){return Math.max.apply(Math,C.map(function(V){return V.evaluate(k)}))}],abs:[ji,[ji],function(k,C){var V=C[0];return Math.abs(V.evaluate(k))}],round:[ji,[ji],function(k,C){var V=C[0],oe=V.evaluate(k);return oe<0?-Math.round(-oe):Math.round(oe)}],floor:[ji,[ji],function(k,C){var V=C[0];return Math.floor(V.evaluate(k))}],ceil:[ji,[ji],function(k,C){var V=C[0];return Math.ceil(V.evaluate(k))}],"filter-==":[Yn,[To,Nn],function(k,C){var V=C[0],oe=C[1];return k.properties()[V.value]===oe.value}],"filter-id-==":[Yn,[Nn],function(k,C){var V=C[0];return k.id()===V.value}],"filter-type-==":[Yn,[To],function(k,C){var V=C[0];return k.geometryType()===V.value}],"filter-<":[Yn,[To,Nn],function(k,C){var V=C[0],oe=C[1],_e=k.properties()[V.value],Pe=oe.value;return typeof _e==typeof Pe&&_e":[Yn,[To,Nn],function(k,C){var V=C[0],oe=C[1],_e=k.properties()[V.value],Pe=oe.value;return typeof _e==typeof Pe&&_e>Pe}],"filter-id->":[Yn,[Nn],function(k,C){var V=C[0],oe=k.id(),_e=V.value;return typeof oe==typeof _e&&oe>_e}],"filter-<=":[Yn,[To,Nn],function(k,C){var V=C[0],oe=C[1],_e=k.properties()[V.value],Pe=oe.value;return typeof _e==typeof Pe&&_e<=Pe}],"filter-id-<=":[Yn,[Nn],function(k,C){var V=C[0],oe=k.id(),_e=V.value;return typeof oe==typeof _e&&oe<=_e}],"filter->=":[Yn,[To,Nn],function(k,C){var V=C[0],oe=C[1],_e=k.properties()[V.value],Pe=oe.value;return typeof _e==typeof Pe&&_e>=Pe}],"filter-id->=":[Yn,[Nn],function(k,C){var V=C[0],oe=k.id(),_e=V.value;return typeof oe==typeof _e&&oe>=_e}],"filter-has":[Yn,[Nn],function(k,C){var V=C[0];return V.value in k.properties()}],"filter-has-id":[Yn,[],function(k){return k.id()!==null&&k.id()!==void 0}],"filter-type-in":[Yn,[El(To)],function(k,C){var V=C[0];return V.value.indexOf(k.geometryType())>=0}],"filter-id-in":[Yn,[El(Nn)],function(k,C){var V=C[0];return V.value.indexOf(k.id())>=0}],"filter-in-small":[Yn,[To,El(Nn)],function(k,C){var V=C[0],oe=C[1];return oe.value.indexOf(k.properties()[V.value])>=0}],"filter-in-large":[Yn,[To,El(Nn)],function(k,C){var V=C[0],oe=C[1];return Ms(k.properties()[V.value],oe.value,0,oe.value.length-1)}],all:{type:Yn,overloads:[[[Yn,Yn],function(k,C){var V=C[0],oe=C[1];return V.evaluate(k)&&oe.evaluate(k)}],[Hs(Yn),function(k,C){for(var V=0,oe=C;V-1}function Ln(k){return!!k.expression&&k.expression.interpolated}function Ao(k){return k instanceof Number?"number":k instanceof String?"string":k instanceof Boolean?"boolean":Array.isArray(k)?"array":k===null?"null":typeof k}function js(k){return typeof k=="object"&&k!==null&&!Array.isArray(k)}function Ts(k){return k}function nu(k,C){var V=C.type==="color",oe=k.stops&&typeof k.stops[0][0]=="object",_e=oe||k.property!==void 0,Pe=oe||!_e,je=k.type||(Ln(C)?"exponential":"interval");if(V&&(k=Os({},k),k.stops&&(k.stops=k.stops.map(function(Tn){return[Tn[0],Rs.parse(Tn[1])]})),k.default?k.default=Rs.parse(k.default):k.default=Rs.parse(C.default)),k.colorSpace&&k.colorSpace!=="rgb"&&!$f[k.colorSpace])throw new Error("Unknown color space: "+k.colorSpace);var ct,Lt,Nt;if(je==="exponential")ct=yu;else if(je==="interval")ct=tf;else if(je==="categorical"){ct=ec,Lt=Object.create(null);for(var Xt=0,gr=k.stops;Xt=k.stops[oe-1][0])return k.stops[oe-1][1];var _e=$u(k.stops.map(function(Pe){return Pe[0]}),V);return k.stops[_e][1]}function yu(k,C,V){var oe=k.base!==void 0?k.base:1;if(Ao(V)!=="number")return Pu(k.default,C.default);var _e=k.stops.length;if(_e===1||V<=k.stops[0][0])return k.stops[0][1];if(V>=k.stops[_e-1][0])return k.stops[_e-1][1];var Pe=$u(k.stops.map(function(gr){return gr[0]}),V),je=Iu(V,oe,k.stops[Pe][0],k.stops[Pe+1][0]),ct=k.stops[Pe][1],Lt=k.stops[Pe+1][1],Nt=Uu[C.type]||Ts;if(k.colorSpace&&k.colorSpace!=="rgb"){var Xt=$f[k.colorSpace];Nt=function(gr,Br){return Xt.reverse(Xt.interpolate(Xt.forward(gr),Xt.forward(Br),je))}}return typeof ct.evaluate=="function"?{evaluate:function(){for(var Br=[],Rr=arguments.length;Rr--;)Br[Rr]=arguments[Rr];var na=ct.evaluate.apply(void 0,Br),Ia=Lt.evaluate.apply(void 0,Br);if(!(na===void 0||Ia===void 0))return Nt(na,Ia,je)}}:Nt(ct,Lt,je)}function Bc(k,C,V){return C.type==="color"?V=Rs.parse(V):C.type==="formatted"?V=Zl.fromString(V.toString()):C.type==="resolvedImage"?V=yl.fromString(V.toString()):Ao(V)!==C.type&&(C.type!=="enum"||!C.values[V])&&(V=void 0),Pu(V,k.default,C.default)}function Iu(k,C,V,oe){var _e=oe-V,Pe=k-V;return _e===0?0:C===1?Pe/_e:(Math.pow(C,Pe)-1)/(Math.pow(C,_e)-1)}var Ac=function(C,V){this.expression=C,this._warningHistory={},this._evaluator=new Ss,this._defaultValue=V?Se(V):null,this._enumValues=V&&V.type==="enum"?V.values:null};Ac.prototype.evaluateWithoutErrorHandling=function(C,V,oe,_e,Pe,je){return this._evaluator.globals=C,this._evaluator.feature=V,this._evaluator.featureState=oe,this._evaluator.canonical=_e,this._evaluator.availableImages=Pe||null,this._evaluator.formattedSection=je,this.expression.evaluate(this._evaluator)},Ac.prototype.evaluate=function(C,V,oe,_e,Pe,je){this._evaluator.globals=C,this._evaluator.feature=V||null,this._evaluator.featureState=oe||null,this._evaluator.canonical=_e,this._evaluator.availableImages=Pe||null,this._evaluator.formattedSection=je||null;try{var ct=this.expression.evaluate(this._evaluator);if(ct==null||typeof ct=="number"&&ct!==ct)return this._defaultValue;if(this._enumValues&&!(ct in this._enumValues))throw new $s("Expected value to be one of "+Object.keys(this._enumValues).map(function(Lt){return JSON.stringify(Lt)}).join(", ")+", but found "+JSON.stringify(ct)+" instead.");return ct}catch(Lt){return this._warningHistory[Lt.message]||(this._warningHistory[Lt.message]=!0,typeof console<"u"&&console.warn(Lt.message)),this._defaultValue}};function ro(k){return Array.isArray(k)&&k.length>0&&typeof k[0]=="string"&&k[0]in co}function Po(k,C){var V=new kl(co,[],C?we(C):void 0),oe=V.parse(k,void 0,void 0,void 0,C&&C.type==="string"?{typeAnnotation:"coerce"}:void 0);return oe?vs(new Ac(oe,C)):Il(V.errors)}var Nc=function(C,V){this.kind=C,this._styleExpression=V,this.isStateDependent=C!=="constant"&&!ru(V.expression)};Nc.prototype.evaluateWithoutErrorHandling=function(C,V,oe,_e,Pe,je){return this._styleExpression.evaluateWithoutErrorHandling(C,V,oe,_e,Pe,je)},Nc.prototype.evaluate=function(C,V,oe,_e,Pe,je){return this._styleExpression.evaluate(C,V,oe,_e,Pe,je)};var hc=function(C,V,oe,_e){this.kind=C,this.zoomStops=oe,this._styleExpression=V,this.isStateDependent=C!=="camera"&&!ru(V.expression),this.interpolationType=_e};hc.prototype.evaluateWithoutErrorHandling=function(C,V,oe,_e,Pe,je){return this._styleExpression.evaluateWithoutErrorHandling(C,V,oe,_e,Pe,je)},hc.prototype.evaluate=function(C,V,oe,_e,Pe,je){return this._styleExpression.evaluate(C,V,oe,_e,Pe,je)},hc.prototype.interpolationFactor=function(C,V,oe){return this.interpolationType?Vl.interpolationFactor(this.interpolationType,C,V,oe):0};function pc(k,C){if(k=Po(k,C),k.result==="error")return k;var V=k.value.expression,oe=fh(V);if(!oe&&!fl(C))return Il([new fs("","data expressions not supported")]);var _e=Cu(V,["zoom"]);if(!_e&&!tl(C))return Il([new fs("","zoom expressions not supported")]);var Pe=ae(V);if(!Pe&&!_e)return Il([new fs("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(Pe instanceof fs)return Il([Pe]);if(Pe instanceof Vl&&!Ln(C))return Il([new fs("",'"interpolate" expressions cannot be used with this property')]);if(!Pe)return vs(oe?new Nc("constant",k.value):new Nc("source",k.value));var je=Pe instanceof Vl?Pe.interpolation:void 0;return vs(oe?new hc("camera",k.value,Pe.labels,je):new hc("composite",k.value,Pe.labels,je))}var Oe=function(C,V){this._parameters=C,this._specification=V,Os(this,nu(this._parameters,this._specification))};Oe.deserialize=function(C){return new Oe(C._parameters,C._specification)},Oe.serialize=function(C){return{_parameters:C._parameters,_specification:C._specification}};function R(k,C){if(js(k))return new Oe(k,C);if(ro(k)){var V=pc(k,C);if(V.result==="error")throw new Error(V.value.map(function(_e){return _e.key+": "+_e.message}).join(", "));return V.value}else{var oe=k;return typeof k=="string"&&C.type==="color"&&(oe=Rs.parse(k)),{kind:"constant",evaluate:function(){return oe}}}}function ae(k){var C=null;if(k instanceof Tc)C=ae(k.result);else if(k instanceof Vu)for(var V=0,oe=k.args;Voe.maximum?[new mn(C,V,V+" is greater than the maximum value "+oe.maximum)]:[]}function Dt(k){var C=k.valueSpec,V=so(k.value.type),oe,_e={},Pe,je,ct=V!=="categorical"&&k.value.property===void 0,Lt=!ct,Nt=Ao(k.value.stops)==="array"&&Ao(k.value.stops[0])==="array"&&Ao(k.value.stops[0][0])==="object",Xt=De({key:k.key,value:k.value,valueSpec:k.styleSpec.function,style:k.style,styleSpec:k.styleSpec,objectElementValidators:{stops:gr,default:na}});return V==="identity"&&ct&&Xt.push(new mn(k.key,k.value,'missing required property "property"')),V!=="identity"&&!k.value.stops&&Xt.push(new mn(k.key,k.value,'missing required property "stops"')),V==="exponential"&&k.valueSpec.expression&&!Ln(k.valueSpec)&&Xt.push(new mn(k.key,k.value,"exponential functions not supported")),k.styleSpec.$version>=8&&(Lt&&!fl(k.valueSpec)?Xt.push(new mn(k.key,k.value,"property functions not supported")):ct&&!tl(k.valueSpec)&&Xt.push(new mn(k.key,k.value,"zoom functions not supported"))),(V==="categorical"||Nt)&&k.value.property===void 0&&Xt.push(new mn(k.key,k.value,'"property" property is required')),Xt;function gr(Ia){if(V==="identity")return[new mn(Ia.key,Ia.value,'identity function may not have a "stops" property')];var ii=[],Wa=Ia.value;return ii=ii.concat(ft({key:Ia.key,value:Wa,valueSpec:Ia.valueSpec,style:Ia.style,styleSpec:Ia.styleSpec,arrayElementValidator:Br})),Ao(Wa)==="array"&&Wa.length===0&&ii.push(new mn(Ia.key,Wa,"array must have at least one stop")),ii}function Br(Ia){var ii=[],Wa=Ia.value,Si=Ia.key;if(Ao(Wa)!=="array")return[new mn(Si,Wa,"array expected, "+Ao(Wa)+" found")];if(Wa.length!==2)return[new mn(Si,Wa,"array length 2 expected, length "+Wa.length+" found")];if(Nt){if(Ao(Wa[0])!=="object")return[new mn(Si,Wa,"object expected, "+Ao(Wa[0])+" found")];if(Wa[0].zoom===void 0)return[new mn(Si,Wa,"object stop key must have zoom")];if(Wa[0].value===void 0)return[new mn(Si,Wa,"object stop key must have value")];if(je&&je>so(Wa[0].zoom))return[new mn(Si,Wa[0].zoom,"stop zoom values must appear in ascending order")];so(Wa[0].zoom)!==je&&(je=so(Wa[0].zoom),Pe=void 0,_e={}),ii=ii.concat(De({key:Si+"[0]",value:Wa[0],valueSpec:{zoom:{}},style:Ia.style,styleSpec:Ia.styleSpec,objectElementValidators:{zoom:bt,value:Rr}}))}else ii=ii.concat(Rr({key:Si+"[0]",value:Wa[0],valueSpec:{},style:Ia.style,styleSpec:Ia.styleSpec},Wa));return ro(Ns(Wa[1]))?ii.concat([new mn(Si+"[1]",Wa[1],"expressions are not allowed in function stops.")]):ii.concat(yo({key:Si+"[1]",value:Wa[1],valueSpec:C,style:Ia.style,styleSpec:Ia.styleSpec}))}function Rr(Ia,ii){var Wa=Ao(Ia.value),Si=so(Ia.value),ci=Ia.value!==null?Ia.value:ii;if(!oe)oe=Wa;else if(Wa!==oe)return[new mn(Ia.key,ci,Wa+" stop domain type must match previous stop domain type "+oe)];if(Wa!=="number"&&Wa!=="string"&&Wa!=="boolean")return[new mn(Ia.key,ci,"stop domain value must be a number, string, or boolean")];if(Wa!=="number"&&V!=="categorical"){var Ai="number expected, "+Wa+" found";return fl(C)&&V===void 0&&(Ai+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new mn(Ia.key,ci,Ai)]}return V==="categorical"&&Wa==="number"&&(!isFinite(Si)||Math.floor(Si)!==Si)?[new mn(Ia.key,ci,"integer expected, found "+Si)]:V!=="categorical"&&Wa==="number"&&Pe!==void 0&&Si=2&&k[1]!=="$id"&&k[1]!=="$type";case"in":return k.length>=3&&(typeof k[1]!="string"||Array.isArray(k[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return k.length!==3||Array.isArray(k[1])||Array.isArray(k[2]);case"any":case"all":for(var C=0,V=k.slice(1);CC?1:0}function ht(k){if(!Array.isArray(k))return!1;if(k[0]==="within")return!0;for(var C=1;C"||C==="<="||C===">="?_t(k[1],k[2],C):C==="any"?Pt(k.slice(1)):C==="all"?["all"].concat(k.slice(1).map(At)):C==="none"?["all"].concat(k.slice(1).map(At).map(pr)):C==="in"?er(k[1],k.slice(2)):C==="!in"?pr(er(k[1],k.slice(2))):C==="has"?nr(k[1]):C==="!has"?pr(nr(k[1])):C==="within"?k:!0;return V}function _t(k,C,V){switch(k){case"$type":return["filter-type-"+V,C];case"$id":return["filter-id-"+V,C];default:return["filter-"+V,k,C]}}function Pt(k){return["any"].concat(k.map(At))}function er(k,C){if(C.length===0)return!1;switch(k){case"$type":return["filter-type-in",["literal",C]];case"$id":return["filter-id-in",["literal",C]];default:return C.length>200&&!C.some(function(V){return typeof V!=typeof C[0]})?["filter-in-large",k,["literal",C.sort(ot)]]:["filter-in-small",k,["literal",C]]}}function nr(k){switch(k){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",k]}}function pr(k){return["!",k]}function Sr(k){return ea(Ns(k.value))?Yt(Os({},k,{expressionContext:"filter",valueSpec:{value:"boolean"}})):Wr(k)}function Wr(k){var C=k.value,V=k.key;if(Ao(C)!=="array")return[new mn(V,C,"array expected, "+Ao(C)+" found")];var oe=k.styleSpec,_e,Pe=[];if(C.length<1)return[new mn(V,C,"filter array must have at least 1 element")];switch(Pe=Pe.concat(jr({key:V+"[0]",value:C[0],valueSpec:oe.filter_operator,style:k.style,styleSpec:k.styleSpec})),so(C[0])){case"<":case"<=":case">":case">=":C.length>=2&&so(C[1])==="$type"&&Pe.push(new mn(V,C,'"$type" cannot be use with operator "'+C[0]+'"'));case"==":case"!=":C.length!==3&&Pe.push(new mn(V,C,'filter array for operator "'+C[0]+'" must have 3 elements'));case"in":case"!in":C.length>=2&&(_e=Ao(C[1]),_e!=="string"&&Pe.push(new mn(V+"[1]",C[1],"string expected, "+_e+" found")));for(var je=2;je=Xt[Rr+0]&&oe>=Xt[Rr+1])?(je[Br]=!0,Pe.push(Nt[Br])):je[Br]=!1}}},ou.prototype._forEachCell=function(k,C,V,oe,_e,Pe,je,ct){for(var Lt=this._convertToCellCoord(k),Nt=this._convertToCellCoord(C),Xt=this._convertToCellCoord(V),gr=this._convertToCellCoord(oe),Br=Lt;Br<=Xt;Br++)for(var Rr=Nt;Rr<=gr;Rr++){var na=this.d*Rr+Br;if(!(ct&&!ct(this._convertFromCellCoord(Br),this._convertFromCellCoord(Rr),this._convertFromCellCoord(Br+1),this._convertFromCellCoord(Rr+1)))&&_e.call(this,k,C,V,oe,na,Pe,je,ct))return}},ou.prototype._convertFromCellCoord=function(k){return(k-this.padding)/this.scale},ou.prototype._convertToCellCoord=function(k){return Math.max(0,Math.min(this.d-1,Math.floor(k*this.scale)+this.padding))},ou.prototype.toArrayBuffer=function(){if(this.arrayBuffer)return this.arrayBuffer;for(var k=this.cells,C=bl+this.cells.length+1+1,V=0,oe=0;oe=0)){var gr=k[Xt];Nt[Xt]=Hl[Lt].shallow.indexOf(Xt)>=0?gr:vt(gr,C)}k instanceof Error&&(Nt.message=k.message)}if(Nt.$name)throw new Error("$name property is reserved for worker serialization logic.");return Lt!=="Object"&&(Nt.$name=Lt),Nt}throw new Error("can't serialize object of type "+typeof k)}function wt(k){if(k==null||typeof k=="boolean"||typeof k=="number"||typeof k=="string"||k instanceof Boolean||k instanceof Number||k instanceof String||k instanceof Date||k instanceof RegExp||$e(k)||pt(k)||ArrayBuffer.isView(k)||k instanceof Sc)return k;if(Array.isArray(k))return k.map(wt);if(typeof k=="object"){var C=k.$name||"Object",V=Hl[C],oe=V.klass;if(!oe)throw new Error("can't deserialize unregistered class "+C);if(oe.deserialize)return oe.deserialize(k);for(var _e=Object.create(oe.prototype),Pe=0,je=Object.keys(k);Pe=0?Lt:wt(Lt)}}return _e}throw new Error("can't deserialize object of type "+typeof k)}var Jt=function(){this.first=!0};Jt.prototype.update=function(C,V){var oe=Math.floor(C);return this.first?(this.first=!1,this.lastIntegerZoom=oe,this.lastIntegerZoomTime=0,this.lastZoom=C,this.lastFloorZoom=oe,!0):(this.lastFloorZoom>oe?(this.lastIntegerZoom=oe+1,this.lastIntegerZoomTime=V):this.lastFloorZoom=128&&k<=255},Arabic:function(k){return k>=1536&&k<=1791},"Arabic Supplement":function(k){return k>=1872&&k<=1919},"Arabic Extended-A":function(k){return k>=2208&&k<=2303},"Hangul Jamo":function(k){return k>=4352&&k<=4607},"Unified Canadian Aboriginal Syllabics":function(k){return k>=5120&&k<=5759},Khmer:function(k){return k>=6016&&k<=6143},"Unified Canadian Aboriginal Syllabics Extended":function(k){return k>=6320&&k<=6399},"General Punctuation":function(k){return k>=8192&&k<=8303},"Letterlike Symbols":function(k){return k>=8448&&k<=8527},"Number Forms":function(k){return k>=8528&&k<=8591},"Miscellaneous Technical":function(k){return k>=8960&&k<=9215},"Control Pictures":function(k){return k>=9216&&k<=9279},"Optical Character Recognition":function(k){return k>=9280&&k<=9311},"Enclosed Alphanumerics":function(k){return k>=9312&&k<=9471},"Geometric Shapes":function(k){return k>=9632&&k<=9727},"Miscellaneous Symbols":function(k){return k>=9728&&k<=9983},"Miscellaneous Symbols and Arrows":function(k){return k>=11008&&k<=11263},"CJK Radicals Supplement":function(k){return k>=11904&&k<=12031},"Kangxi Radicals":function(k){return k>=12032&&k<=12255},"Ideographic Description Characters":function(k){return k>=12272&&k<=12287},"CJK Symbols and Punctuation":function(k){return k>=12288&&k<=12351},Hiragana:function(k){return k>=12352&&k<=12447},Katakana:function(k){return k>=12448&&k<=12543},Bopomofo:function(k){return k>=12544&&k<=12591},"Hangul Compatibility Jamo":function(k){return k>=12592&&k<=12687},Kanbun:function(k){return k>=12688&&k<=12703},"Bopomofo Extended":function(k){return k>=12704&&k<=12735},"CJK Strokes":function(k){return k>=12736&&k<=12783},"Katakana Phonetic Extensions":function(k){return k>=12784&&k<=12799},"Enclosed CJK Letters and Months":function(k){return k>=12800&&k<=13055},"CJK Compatibility":function(k){return k>=13056&&k<=13311},"CJK Unified Ideographs Extension A":function(k){return k>=13312&&k<=19903},"Yijing Hexagram Symbols":function(k){return k>=19904&&k<=19967},"CJK Unified Ideographs":function(k){return k>=19968&&k<=40959},"Yi Syllables":function(k){return k>=40960&&k<=42127},"Yi Radicals":function(k){return k>=42128&&k<=42191},"Hangul Jamo Extended-A":function(k){return k>=43360&&k<=43391},"Hangul Syllables":function(k){return k>=44032&&k<=55215},"Hangul Jamo Extended-B":function(k){return k>=55216&&k<=55295},"Private Use Area":function(k){return k>=57344&&k<=63743},"CJK Compatibility Ideographs":function(k){return k>=63744&&k<=64255},"Arabic Presentation Forms-A":function(k){return k>=64336&&k<=65023},"Vertical Forms":function(k){return k>=65040&&k<=65055},"CJK Compatibility Forms":function(k){return k>=65072&&k<=65103},"Small Form Variants":function(k){return k>=65104&&k<=65135},"Arabic Presentation Forms-B":function(k){return k>=65136&&k<=65279},"Halfwidth and Fullwidth Forms":function(k){return k>=65280&&k<=65519}};function or(k){for(var C=0,V=k;C=65097&&k<=65103)||Rt["CJK Compatibility Ideographs"](k)||Rt["CJK Compatibility"](k)||Rt["CJK Radicals Supplement"](k)||Rt["CJK Strokes"](k)||Rt["CJK Symbols and Punctuation"](k)&&!(k>=12296&&k<=12305)&&!(k>=12308&&k<=12319)&&k!==12336||Rt["CJK Unified Ideographs Extension A"](k)||Rt["CJK Unified Ideographs"](k)||Rt["Enclosed CJK Letters and Months"](k)||Rt["Hangul Compatibility Jamo"](k)||Rt["Hangul Jamo Extended-A"](k)||Rt["Hangul Jamo Extended-B"](k)||Rt["Hangul Jamo"](k)||Rt["Hangul Syllables"](k)||Rt.Hiragana(k)||Rt["Ideographic Description Characters"](k)||Rt.Kanbun(k)||Rt["Kangxi Radicals"](k)||Rt["Katakana Phonetic Extensions"](k)||Rt.Katakana(k)&&k!==12540||Rt["Halfwidth and Fullwidth Forms"](k)&&k!==65288&&k!==65289&&k!==65293&&!(k>=65306&&k<=65310)&&k!==65339&&k!==65341&&k!==65343&&!(k>=65371&&k<=65503)&&k!==65507&&!(k>=65512&&k<=65519)||Rt["Small Form Variants"](k)&&!(k>=65112&&k<=65118)&&!(k>=65123&&k<=65126)||Rt["Unified Canadian Aboriginal Syllabics"](k)||Rt["Unified Canadian Aboriginal Syllabics Extended"](k)||Rt["Vertical Forms"](k)||Rt["Yijing Hexagram Symbols"](k)||Rt["Yi Syllables"](k)||Rt["Yi Radicals"](k))}function Va(k){return!!(Rt["Latin-1 Supplement"](k)&&(k===167||k===169||k===174||k===177||k===188||k===189||k===190||k===215||k===247)||Rt["General Punctuation"](k)&&(k===8214||k===8224||k===8225||k===8240||k===8241||k===8251||k===8252||k===8258||k===8263||k===8264||k===8265||k===8273)||Rt["Letterlike Symbols"](k)||Rt["Number Forms"](k)||Rt["Miscellaneous Technical"](k)&&(k>=8960&&k<=8967||k>=8972&&k<=8991||k>=8996&&k<=9e3||k===9003||k>=9085&&k<=9114||k>=9150&&k<=9165||k===9167||k>=9169&&k<=9179||k>=9186&&k<=9215)||Rt["Control Pictures"](k)&&k!==9251||Rt["Optical Character Recognition"](k)||Rt["Enclosed Alphanumerics"](k)||Rt["Geometric Shapes"](k)||Rt["Miscellaneous Symbols"](k)&&!(k>=9754&&k<=9759)||Rt["Miscellaneous Symbols and Arrows"](k)&&(k>=11026&&k<=11055||k>=11088&&k<=11097||k>=11192&&k<=11243)||Rt["CJK Symbols and Punctuation"](k)||Rt.Katakana(k)||Rt["Private Use Area"](k)||Rt["CJK Compatibility Forms"](k)||Rt["Small Form Variants"](k)||Rt["Halfwidth and Fullwidth Forms"](k)||k===8734||k===8756||k===8757||k>=9984&&k<=10087||k>=10102&&k<=10131||k===65532||k===65533)}function Xa(k){return!(fa(k)||Va(k))}function _a(k){return Rt.Arabic(k)||Rt["Arabic Supplement"](k)||Rt["Arabic Extended-A"](k)||Rt["Arabic Presentation Forms-A"](k)||Rt["Arabic Presentation Forms-B"](k)}function Ra(k){return k>=1424&&k<=2303||Rt["Arabic Presentation Forms-A"](k)||Rt["Arabic Presentation Forms-B"](k)}function Na(k,C){return!(!C&&Ra(k)||k>=2304&&k<=3583||k>=3840&&k<=4255||Rt.Khmer(k))}function Qa(k){for(var C=0,V=k;C-1&&(Ni=Da.error),zi&&zi(k)};function Un(){Vn.fire(new Mr("pluginStateChange",{pluginStatus:Ni,pluginURL:Qi}))}var Vn=new Lr,No=function(){return Ni},Gn=function(k){return k({pluginStatus:Ni,pluginURL:Qi}),Vn.on("pluginStateChange",k),k},Fo=function(k,C,V){if(V===void 0&&(V=!1),Ni===Da.deferred||Ni===Da.loading||Ni===Da.loaded)throw new Error("setRTLTextPlugin cannot be called multiple times.");Qi=be.resolveURL(k),Ni=Da.deferred,zi=C,Un(),V||Ks()},Ks=function(){if(Ni!==Da.deferred||!Qi)throw new Error("rtl-text-plugin cannot be downloaded unless a pluginURL is specified");Ni=Da.loading,Un(),Qi&&pa({url:Qi},function(k){k?hn(k):(Ni=Da.loaded,Un())})},Gs={applyArabicShaping:null,processBidirectionalText:null,processStyledBidirectionalText:null,isLoaded:function(){return Ni===Da.loaded||Gs.applyArabicShaping!=null},isLoading:function(){return Ni===Da.loading},setState:function(C){Ni=C.pluginStatus,Qi=C.pluginURL},isParsed:function(){return Gs.applyArabicShaping!=null&&Gs.processBidirectionalText!=null&&Gs.processStyledBidirectionalText!=null},getPluginURL:function(){return Qi}},sl=function(){!Gs.isLoading()&&!Gs.isLoaded()&&No()==="deferred"&&Ks()},Vi=function(C,V){this.zoom=C,V?(this.now=V.now,this.fadeDuration=V.fadeDuration,this.zoomHistory=V.zoomHistory,this.transition=V.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new Jt,this.transition={})};Vi.prototype.isSupportedScript=function(C){return Ya(C,Gs.isLoaded())},Vi.prototype.crossFadingFactor=function(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)},Vi.prototype.getCrossfadeParameters=function(){var C=this.zoom,V=C-Math.floor(C),oe=this.crossFadingFactor();return C>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:V+(1-V)*oe}:{fromScale:.5,toScale:1,t:1-(1-oe)*V}};var ao=function(C,V){this.property=C,this.value=V,this.expression=R(V===void 0?C.specification.default:V,C.specification)};ao.prototype.isDataDriven=function(){return this.expression.kind==="source"||this.expression.kind==="composite"},ao.prototype.possiblyEvaluate=function(C,V,oe){return this.property.possiblyEvaluate(this,C,V,oe)};var ns=function(C){this.property=C,this.value=new ao(C,void 0)};ns.prototype.transitioned=function(C,V){return new hl(this.property,this.value,V,m({},C.transition,this.transition),C.now)},ns.prototype.untransitioned=function(){return new hl(this.property,this.value,null,{},0)};var hs=function(C){this._properties=C,this._values=Object.create(C.defaultTransitionablePropertyValues)};hs.prototype.getValue=function(C){return O(this._values[C].value.value)},hs.prototype.setValue=function(C,V){this._values.hasOwnProperty(C)||(this._values[C]=new ns(this._values[C].property)),this._values[C].value=new ao(this._values[C].property,V===null?void 0:O(V))},hs.prototype.getTransition=function(C){return O(this._values[C].transition)},hs.prototype.setTransition=function(C,V){this._values.hasOwnProperty(C)||(this._values[C]=new ns(this._values[C].property)),this._values[C].transition=O(V)||void 0},hs.prototype.serialize=function(){for(var C={},V=0,oe=Object.keys(this._values);Vthis.end)return this.prior=null,Pe;if(this.value.isDataDriven())return this.prior=null,Pe;if(_eje.zoomHistory.lastIntegerZoom?{from:oe,to:_e}:{from:Pe,to:_e}},C.prototype.interpolate=function(oe){return oe},C}(ra),si=function(C){this.specification=C};si.prototype.possiblyEvaluate=function(C,V,oe,_e){if(C.value!==void 0)if(C.expression.kind==="constant"){var Pe=C.expression.evaluate(V,null,{},oe,_e);return this._calculate(Pe,Pe,Pe,V)}else return this._calculate(C.expression.evaluate(new Vi(Math.floor(V.zoom-1),V)),C.expression.evaluate(new Vi(Math.floor(V.zoom),V)),C.expression.evaluate(new Vi(Math.floor(V.zoom+1),V)),V)},si.prototype._calculate=function(C,V,oe,_e){var Pe=_e.zoom;return Pe>_e.zoomHistory.lastIntegerZoom?{from:C,to:V}:{from:oe,to:V}},si.prototype.interpolate=function(C){return C};var wi=function(C){this.specification=C};wi.prototype.possiblyEvaluate=function(C,V,oe,_e){return!!C.expression.evaluate(V,null,{},oe,_e)},wi.prototype.interpolate=function(){return!1};var xi=function(C){this.properties=C,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(var V in C){var oe=C[V];oe.specification.overridable&&this.overridableProperties.push(V);var _e=this.defaultPropertyValues[V]=new ao(oe,void 0),Pe=this.defaultTransitionablePropertyValues[V]=new ns(oe);this.defaultTransitioningPropertyValues[V]=Pe.untransitioned(),this.defaultPossiblyEvaluatedValues[V]=_e.possiblyEvaluate({})}};de("DataDrivenProperty",ra),de("DataConstantProperty",Qt),de("CrossFadedDataDrivenProperty",Ta),de("CrossFadedProperty",si),de("ColorRampProperty",wi);var bi="-transition",Fi=function(k){function C(V,oe){if(k.call(this),this.id=V.id,this.type=V.type,this._featureFilter={filter:function(){return!0},needGeometry:!1},V.type!=="custom"&&(V=V,this.metadata=V.metadata,this.minzoom=V.minzoom,this.maxzoom=V.maxzoom,V.type!=="background"&&(this.source=V.source,this.sourceLayer=V["source-layer"],this.filter=V.filter),oe.layout&&(this._unevaluatedLayout=new hu(oe.layout)),oe.paint)){this._transitionablePaint=new hs(oe.paint);for(var _e in V.paint)this.setPaintProperty(_e,V.paint[_e],{validate:!1});for(var Pe in V.layout)this.setLayoutProperty(Pe,V.layout[Pe],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new dc(oe.paint)}}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.getCrossfadeParameters=function(){return this._crossfadeParameters},C.prototype.getLayoutProperty=function(oe){return oe==="visibility"?this.visibility:this._unevaluatedLayout.getValue(oe)},C.prototype.setLayoutProperty=function(oe,_e,Pe){if(Pe===void 0&&(Pe={}),_e!=null){var je="layers."+this.id+".layout."+oe;if(this._validate(Xl,je,oe,_e,Pe))return}if(oe==="visibility"){this.visibility=_e;return}this._unevaluatedLayout.setValue(oe,_e)},C.prototype.getPaintProperty=function(oe){return z(oe,bi)?this._transitionablePaint.getTransition(oe.slice(0,-bi.length)):this._transitionablePaint.getValue(oe)},C.prototype.setPaintProperty=function(oe,_e,Pe){if(Pe===void 0&&(Pe={}),_e!=null){var je="layers."+this.id+".paint."+oe;if(this._validate(Rl,je,oe,_e,Pe))return!1}if(z(oe,bi))return this._transitionablePaint.setTransition(oe.slice(0,-bi.length),_e||void 0),!1;var ct=this._transitionablePaint._values[oe],Lt=ct.property.specification["property-type"]==="cross-faded-data-driven",Nt=ct.value.isDataDriven(),Xt=ct.value;this._transitionablePaint.setValue(oe,_e),this._handleSpecialPaintPropertyUpdate(oe);var gr=this._transitionablePaint._values[oe].value,Br=gr.isDataDriven();return Br||Nt||Lt||this._handleOverridablePaintPropertyUpdate(oe,Xt,gr)},C.prototype._handleSpecialPaintPropertyUpdate=function(oe){},C.prototype._handleOverridablePaintPropertyUpdate=function(oe,_e,Pe){return!1},C.prototype.isHidden=function(oe){return this.minzoom&&oe=this.maxzoom?!0:this.visibility==="none"},C.prototype.updateTransitions=function(oe){this._transitioningPaint=this._transitionablePaint.transitioned(oe,this._transitioningPaint)},C.prototype.hasTransition=function(){return this._transitioningPaint.hasTransition()},C.prototype.recalculate=function(oe,_e){oe.getCrossfadeParameters&&(this._crossfadeParameters=oe.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(oe,void 0,_e)),this.paint=this._transitioningPaint.possiblyEvaluate(oe,void 0,_e)},C.prototype.serialize=function(){var oe={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(oe.layout=oe.layout||{},oe.layout.visibility=this.visibility),B(oe,function(_e,Pe){return _e!==void 0&&!(Pe==="layout"&&!Object.keys(_e).length)&&!(Pe==="paint"&&!Object.keys(_e).length)})},C.prototype._validate=function(oe,_e,Pe,je,ct){return ct===void 0&&(ct={}),ct&&ct.validate===!1?!1:qu(this,oe.call(Zo,{key:_e,layerType:this.type,objectKey:Pe,value:je,styleSpec:fi,style:{glyphs:!0,sprite:!0}}))},C.prototype.is3D=function(){return!1},C.prototype.isTileClipped=function(){return!1},C.prototype.hasOffscreenPass=function(){return!1},C.prototype.resize=function(){},C.prototype.isStateDependent=function(){for(var oe in this.paint._values){var _e=this.paint.get(oe);if(!(!(_e instanceof Ll)||!fl(_e.property.specification))&&(_e.value.kind==="source"||_e.value.kind==="composite")&&_e.value.isStateDependent)return!0}return!1},C}(Lr),cn={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array},fn=function(C,V){this._structArray=C,this._pos1=V*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8},Gi=128,Io=5,nn=function(){this.isTransferred=!1,this.capacity=-1,this.resize(0)};nn.serialize=function(C,V){return C._trim(),V&&(C.isTransferred=!0,V.push(C.arrayBuffer)),{length:C.length,arrayBuffer:C.arrayBuffer}},nn.deserialize=function(C){var V=Object.create(this.prototype);return V.arrayBuffer=C.arrayBuffer,V.length=C.length,V.capacity=C.arrayBuffer.byteLength/V.bytesPerElement,V._refreshViews(),V},nn.prototype._trim=function(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())},nn.prototype.clear=function(){this.length=0},nn.prototype.resize=function(C){this.reserve(C),this.length=C},nn.prototype.reserve=function(C){if(C>this.capacity){this.capacity=Math.max(C,Math.floor(this.capacity*Io),Gi),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);var V=this.uint8;this._refreshViews(),V&&this.uint8.set(V)}},nn.prototype._refreshViews=function(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")};function on(k,C){C===void 0&&(C=1);var V=0,oe=0,_e=k.map(function(je){var ct=Oi(je.type),Lt=V=ui(V,Math.max(C,ct)),Nt=je.components||1;return oe=Math.max(oe,ct),V+=ct*Nt,{name:je.name,type:je.type,components:Nt,offset:Lt}}),Pe=ui(V,Math.max(oe,C));return{members:_e,size:Pe,alignment:C}}function Oi(k){return cn[k].BYTES_PER_ELEMENT}function ui(k,C){return Math.ceil(k/C)*C}var Mi=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e){var Pe=this.length;return this.resize(Pe+1),this.emplace(Pe,oe,_e)},C.prototype.emplace=function(oe,_e,Pe){var je=oe*2;return this.int16[je+0]=_e,this.int16[je+1]=Pe,oe},C}(nn);Mi.prototype.bytesPerElement=4,de("StructArrayLayout2i4",Mi);var tn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je){var ct=this.length;return this.resize(ct+1),this.emplace(ct,oe,_e,Pe,je)},C.prototype.emplace=function(oe,_e,Pe,je,ct){var Lt=oe*4;return this.int16[Lt+0]=_e,this.int16[Lt+1]=Pe,this.int16[Lt+2]=je,this.int16[Lt+3]=ct,oe},C}(nn);tn.prototype.bytesPerElement=8,de("StructArrayLayout4i8",tn);var pn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt){var Nt=this.length;return this.resize(Nt+1),this.emplace(Nt,oe,_e,Pe,je,ct,Lt)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt){var Xt=oe*6;return this.int16[Xt+0]=_e,this.int16[Xt+1]=Pe,this.int16[Xt+2]=je,this.int16[Xt+3]=ct,this.int16[Xt+4]=Lt,this.int16[Xt+5]=Nt,oe},C}(nn);pn.prototype.bytesPerElement=12,de("StructArrayLayout2i4i12",pn);var qi=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt){var Nt=this.length;return this.resize(Nt+1),this.emplace(Nt,oe,_e,Pe,je,ct,Lt)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt){var Xt=oe*4,gr=oe*8;return this.int16[Xt+0]=_e,this.int16[Xt+1]=Pe,this.uint8[gr+4]=je,this.uint8[gr+5]=ct,this.uint8[gr+6]=Lt,this.uint8[gr+7]=Nt,oe},C}(nn);qi.prototype.bytesPerElement=8,de("StructArrayLayout2i4ub8",qi);var Dn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e){var Pe=this.length;return this.resize(Pe+1),this.emplace(Pe,oe,_e)},C.prototype.emplace=function(oe,_e,Pe){var je=oe*2;return this.float32[je+0]=_e,this.float32[je+1]=Pe,oe},C}(nn);Dn.prototype.bytesPerElement=8,de("StructArrayLayout2f8",Dn);var bn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br){var Rr=this.length;return this.resize(Rr+1),this.emplace(Rr,oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr){var na=oe*10;return this.uint16[na+0]=_e,this.uint16[na+1]=Pe,this.uint16[na+2]=je,this.uint16[na+3]=ct,this.uint16[na+4]=Lt,this.uint16[na+5]=Nt,this.uint16[na+6]=Xt,this.uint16[na+7]=gr,this.uint16[na+8]=Br,this.uint16[na+9]=Rr,oe},C}(nn);bn.prototype.bytesPerElement=20,de("StructArrayLayout10ui20",bn);var _o=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na){var Ia=this.length;return this.resize(Ia+1),this.emplace(Ia,oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia){var ii=oe*12;return this.int16[ii+0]=_e,this.int16[ii+1]=Pe,this.int16[ii+2]=je,this.int16[ii+3]=ct,this.uint16[ii+4]=Lt,this.uint16[ii+5]=Nt,this.uint16[ii+6]=Xt,this.uint16[ii+7]=gr,this.int16[ii+8]=Br,this.int16[ii+9]=Rr,this.int16[ii+10]=na,this.int16[ii+11]=Ia,oe},C}(nn);_o.prototype.bytesPerElement=24,de("StructArrayLayout4i4ui4i24",_o);var Zi=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe){var je=this.length;return this.resize(je+1),this.emplace(je,oe,_e,Pe)},C.prototype.emplace=function(oe,_e,Pe,je){var ct=oe*3;return this.float32[ct+0]=_e,this.float32[ct+1]=Pe,this.float32[ct+2]=je,oe},C}(nn);Zi.prototype.bytesPerElement=12,de("StructArrayLayout3f12",Zi);var Ui=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe){var _e=this.length;return this.resize(_e+1),this.emplace(_e,oe)},C.prototype.emplace=function(oe,_e){var Pe=oe*1;return this.uint32[Pe+0]=_e,oe},C}(nn);Ui.prototype.bytesPerElement=4,de("StructArrayLayout1ul4",Ui);var Zn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr){var Br=this.length;return this.resize(Br+1),this.emplace(Br,oe,_e,Pe,je,ct,Lt,Nt,Xt,gr)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br){var Rr=oe*10,na=oe*5;return this.int16[Rr+0]=_e,this.int16[Rr+1]=Pe,this.int16[Rr+2]=je,this.int16[Rr+3]=ct,this.int16[Rr+4]=Lt,this.int16[Rr+5]=Nt,this.uint32[na+3]=Xt,this.uint16[Rr+8]=gr,this.uint16[Rr+9]=Br,oe},C}(nn);Zn.prototype.bytesPerElement=20,de("StructArrayLayout6i1ul2ui20",Zn);var Rn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt){var Nt=this.length;return this.resize(Nt+1),this.emplace(Nt,oe,_e,Pe,je,ct,Lt)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt){var Xt=oe*6;return this.int16[Xt+0]=_e,this.int16[Xt+1]=Pe,this.int16[Xt+2]=je,this.int16[Xt+3]=ct,this.int16[Xt+4]=Lt,this.int16[Xt+5]=Nt,oe},C}(nn);Rn.prototype.bytesPerElement=12,de("StructArrayLayout2i2i2i12",Rn);var xn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct){var Lt=this.length;return this.resize(Lt+1),this.emplace(Lt,oe,_e,Pe,je,ct)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt){var Nt=oe*4,Xt=oe*8;return this.float32[Nt+0]=_e,this.float32[Nt+1]=Pe,this.float32[Nt+2]=je,this.int16[Xt+6]=ct,this.int16[Xt+7]=Lt,oe},C}(nn);xn.prototype.bytesPerElement=16,de("StructArrayLayout2f1f2i16",xn);var dn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je){var ct=this.length;return this.resize(ct+1),this.emplace(ct,oe,_e,Pe,je)},C.prototype.emplace=function(oe,_e,Pe,je,ct){var Lt=oe*12,Nt=oe*3;return this.uint8[Lt+0]=_e,this.uint8[Lt+1]=Pe,this.float32[Nt+1]=je,this.float32[Nt+2]=ct,oe},C}(nn);dn.prototype.bytesPerElement=12,de("StructArrayLayout2ub2f12",dn);var jn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe){var je=this.length;return this.resize(je+1),this.emplace(je,oe,_e,Pe)},C.prototype.emplace=function(oe,_e,Pe,je){var ct=oe*3;return this.uint16[ct+0]=_e,this.uint16[ct+1]=Pe,this.uint16[ct+2]=je,oe},C}(nn);jn.prototype.bytesPerElement=6,de("StructArrayLayout3ui6",jn);var Ro=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia,ii,Wa,Si,ci){var Ai=this.length;return this.resize(Ai+1),this.emplace(Ai,oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia,ii,Wa,Si,ci)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia,ii,Wa,Si,ci,Ai){var Li=oe*24,Ki=oe*12,kn=oe*48;return this.int16[Li+0]=_e,this.int16[Li+1]=Pe,this.uint16[Li+2]=je,this.uint16[Li+3]=ct,this.uint32[Ki+2]=Lt,this.uint32[Ki+3]=Nt,this.uint32[Ki+4]=Xt,this.uint16[Li+10]=gr,this.uint16[Li+11]=Br,this.uint16[Li+12]=Rr,this.float32[Ki+7]=na,this.float32[Ki+8]=Ia,this.uint8[kn+36]=ii,this.uint8[kn+37]=Wa,this.uint8[kn+38]=Si,this.uint32[Ki+10]=ci,this.int16[Li+22]=Ai,oe},C}(nn);Ro.prototype.bytesPerElement=48,de("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",Ro);var rs=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia,ii,Wa,Si,ci,Ai,Li,Ki,kn,Tn,lo,qn,to,ds,uo,vo){var zs=this.length;return this.resize(zs+1),this.emplace(zs,oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia,ii,Wa,Si,ci,Ai,Li,Ki,kn,Tn,lo,qn,to,ds,uo,vo)},C.prototype.emplace=function(oe,_e,Pe,je,ct,Lt,Nt,Xt,gr,Br,Rr,na,Ia,ii,Wa,Si,ci,Ai,Li,Ki,kn,Tn,lo,qn,to,ds,uo,vo,zs){var cs=oe*34,Tl=oe*17;return this.int16[cs+0]=_e,this.int16[cs+1]=Pe,this.int16[cs+2]=je,this.int16[cs+3]=ct,this.int16[cs+4]=Lt,this.int16[cs+5]=Nt,this.int16[cs+6]=Xt,this.int16[cs+7]=gr,this.uint16[cs+8]=Br,this.uint16[cs+9]=Rr,this.uint16[cs+10]=na,this.uint16[cs+11]=Ia,this.uint16[cs+12]=ii,this.uint16[cs+13]=Wa,this.uint16[cs+14]=Si,this.uint16[cs+15]=ci,this.uint16[cs+16]=Ai,this.uint16[cs+17]=Li,this.uint16[cs+18]=Ki,this.uint16[cs+19]=kn,this.uint16[cs+20]=Tn,this.uint16[cs+21]=lo,this.uint16[cs+22]=qn,this.uint32[Tl+12]=to,this.float32[Tl+13]=ds,this.float32[Tl+14]=uo,this.float32[Tl+15]=vo,this.float32[Tl+16]=zs,oe},C}(nn);rs.prototype.bytesPerElement=68,de("StructArrayLayout8i15ui1ul4f68",rs);var wn=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe){var _e=this.length;return this.resize(_e+1),this.emplace(_e,oe)},C.prototype.emplace=function(oe,_e){var Pe=oe*1;return this.float32[Pe+0]=_e,oe},C}(nn);wn.prototype.bytesPerElement=4,de("StructArrayLayout1f4",wn);var oo=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe){var je=this.length;return this.resize(je+1),this.emplace(je,oe,_e,Pe)},C.prototype.emplace=function(oe,_e,Pe,je){var ct=oe*3;return this.int16[ct+0]=_e,this.int16[ct+1]=Pe,this.int16[ct+2]=je,oe},C}(nn);oo.prototype.bytesPerElement=6,de("StructArrayLayout3i6",oo);var Xo=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe){var je=this.length;return this.resize(je+1),this.emplace(je,oe,_e,Pe)},C.prototype.emplace=function(oe,_e,Pe,je){var ct=oe*2,Lt=oe*4;return this.uint32[ct+0]=_e,this.uint16[Lt+2]=Pe,this.uint16[Lt+3]=je,oe},C}(nn);Xo.prototype.bytesPerElement=8,de("StructArrayLayout1ul2ui8",Xo);var os=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e){var Pe=this.length;return this.resize(Pe+1),this.emplace(Pe,oe,_e)},C.prototype.emplace=function(oe,_e,Pe){var je=oe*2;return this.uint16[je+0]=_e,this.uint16[je+1]=Pe,oe},C}(nn);os.prototype.bytesPerElement=4,de("StructArrayLayout2ui4",os);var As=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe){var _e=this.length;return this.resize(_e+1),this.emplace(_e,oe)},C.prototype.emplace=function(oe,_e){var Pe=oe*1;return this.uint16[Pe+0]=_e,oe},C}(nn);As.prototype.bytesPerElement=2,de("StructArrayLayout1ui2",As);var $l=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._refreshViews=function(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)},C.prototype.emplaceBack=function(oe,_e,Pe,je){var ct=this.length;return this.resize(ct+1),this.emplace(ct,oe,_e,Pe,je)},C.prototype.emplace=function(oe,_e,Pe,je,ct){var Lt=oe*4;return this.float32[Lt+0]=_e,this.float32[Lt+1]=Pe,this.float32[Lt+2]=je,this.float32[Lt+3]=ct,oe},C}(nn);$l.prototype.bytesPerElement=16,de("StructArrayLayout4f16",$l);var Uc=function(k){function C(){k.apply(this,arguments)}k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C;var V={anchorPointX:{configurable:!0},anchorPointY:{configurable:!0},x1:{configurable:!0},y1:{configurable:!0},x2:{configurable:!0},y2:{configurable:!0},featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0},anchorPoint:{configurable:!0}};return V.anchorPointX.get=function(){return this._structArray.int16[this._pos2+0]},V.anchorPointY.get=function(){return this._structArray.int16[this._pos2+1]},V.x1.get=function(){return this._structArray.int16[this._pos2+2]},V.y1.get=function(){return this._structArray.int16[this._pos2+3]},V.x2.get=function(){return this._structArray.int16[this._pos2+4]},V.y2.get=function(){return this._structArray.int16[this._pos2+5]},V.featureIndex.get=function(){return this._structArray.uint32[this._pos4+3]},V.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+8]},V.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+9]},V.anchorPoint.get=function(){return new i(this.anchorPointX,this.anchorPointY)},Object.defineProperties(C.prototype,V),C}(fn);Uc.prototype.size=20;var Ws=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.get=function(oe){return new Uc(this,oe)},C}(Zn);de("CollisionBoxArray",Ws);var jc=function(k){function C(){k.apply(this,arguments)}k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C;var V={anchorX:{configurable:!0},anchorY:{configurable:!0},glyphStartIndex:{configurable:!0},numGlyphs:{configurable:!0},vertexStartIndex:{configurable:!0},lineStartIndex:{configurable:!0},lineLength:{configurable:!0},segment:{configurable:!0},lowerSize:{configurable:!0},upperSize:{configurable:!0},lineOffsetX:{configurable:!0},lineOffsetY:{configurable:!0},writingMode:{configurable:!0},placedOrientation:{configurable:!0},hidden:{configurable:!0},crossTileID:{configurable:!0},associatedIconIndex:{configurable:!0}};return V.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},V.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},V.glyphStartIndex.get=function(){return this._structArray.uint16[this._pos2+2]},V.numGlyphs.get=function(){return this._structArray.uint16[this._pos2+3]},V.vertexStartIndex.get=function(){return this._structArray.uint32[this._pos4+2]},V.lineStartIndex.get=function(){return this._structArray.uint32[this._pos4+3]},V.lineLength.get=function(){return this._structArray.uint32[this._pos4+4]},V.segment.get=function(){return this._structArray.uint16[this._pos2+10]},V.lowerSize.get=function(){return this._structArray.uint16[this._pos2+11]},V.upperSize.get=function(){return this._structArray.uint16[this._pos2+12]},V.lineOffsetX.get=function(){return this._structArray.float32[this._pos4+7]},V.lineOffsetY.get=function(){return this._structArray.float32[this._pos4+8]},V.writingMode.get=function(){return this._structArray.uint8[this._pos1+36]},V.placedOrientation.get=function(){return this._structArray.uint8[this._pos1+37]},V.placedOrientation.set=function(oe){this._structArray.uint8[this._pos1+37]=oe},V.hidden.get=function(){return this._structArray.uint8[this._pos1+38]},V.hidden.set=function(oe){this._structArray.uint8[this._pos1+38]=oe},V.crossTileID.get=function(){return this._structArray.uint32[this._pos4+10]},V.crossTileID.set=function(oe){this._structArray.uint32[this._pos4+10]=oe},V.associatedIconIndex.get=function(){return this._structArray.int16[this._pos2+22]},Object.defineProperties(C.prototype,V),C}(fn);jc.prototype.size=48;var Ol=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.get=function(oe){return new jc(this,oe)},C}(Ro);de("PlacedSymbolArray",Ol);var vc=function(k){function C(){k.apply(this,arguments)}k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C;var V={anchorX:{configurable:!0},anchorY:{configurable:!0},rightJustifiedTextSymbolIndex:{configurable:!0},centerJustifiedTextSymbolIndex:{configurable:!0},leftJustifiedTextSymbolIndex:{configurable:!0},verticalPlacedTextSymbolIndex:{configurable:!0},placedIconSymbolIndex:{configurable:!0},verticalPlacedIconSymbolIndex:{configurable:!0},key:{configurable:!0},textBoxStartIndex:{configurable:!0},textBoxEndIndex:{configurable:!0},verticalTextBoxStartIndex:{configurable:!0},verticalTextBoxEndIndex:{configurable:!0},iconBoxStartIndex:{configurable:!0},iconBoxEndIndex:{configurable:!0},verticalIconBoxStartIndex:{configurable:!0},verticalIconBoxEndIndex:{configurable:!0},featureIndex:{configurable:!0},numHorizontalGlyphVertices:{configurable:!0},numVerticalGlyphVertices:{configurable:!0},numIconVertices:{configurable:!0},numVerticalIconVertices:{configurable:!0},useRuntimeCollisionCircles:{configurable:!0},crossTileID:{configurable:!0},textBoxScale:{configurable:!0},textOffset0:{configurable:!0},textOffset1:{configurable:!0},collisionCircleDiameter:{configurable:!0}};return V.anchorX.get=function(){return this._structArray.int16[this._pos2+0]},V.anchorY.get=function(){return this._structArray.int16[this._pos2+1]},V.rightJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+2]},V.centerJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+3]},V.leftJustifiedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+4]},V.verticalPlacedTextSymbolIndex.get=function(){return this._structArray.int16[this._pos2+5]},V.placedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+6]},V.verticalPlacedIconSymbolIndex.get=function(){return this._structArray.int16[this._pos2+7]},V.key.get=function(){return this._structArray.uint16[this._pos2+8]},V.textBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+9]},V.textBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+10]},V.verticalTextBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+11]},V.verticalTextBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+12]},V.iconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+13]},V.iconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+14]},V.verticalIconBoxStartIndex.get=function(){return this._structArray.uint16[this._pos2+15]},V.verticalIconBoxEndIndex.get=function(){return this._structArray.uint16[this._pos2+16]},V.featureIndex.get=function(){return this._structArray.uint16[this._pos2+17]},V.numHorizontalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+18]},V.numVerticalGlyphVertices.get=function(){return this._structArray.uint16[this._pos2+19]},V.numIconVertices.get=function(){return this._structArray.uint16[this._pos2+20]},V.numVerticalIconVertices.get=function(){return this._structArray.uint16[this._pos2+21]},V.useRuntimeCollisionCircles.get=function(){return this._structArray.uint16[this._pos2+22]},V.crossTileID.get=function(){return this._structArray.uint32[this._pos4+12]},V.crossTileID.set=function(oe){this._structArray.uint32[this._pos4+12]=oe},V.textBoxScale.get=function(){return this._structArray.float32[this._pos4+13]},V.textOffset0.get=function(){return this._structArray.float32[this._pos4+14]},V.textOffset1.get=function(){return this._structArray.float32[this._pos4+15]},V.collisionCircleDiameter.get=function(){return this._structArray.float32[this._pos4+16]},Object.defineProperties(C.prototype,V),C}(fn);vc.prototype.size=68;var mc=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.get=function(oe){return new vc(this,oe)},C}(rs);de("SymbolInstanceArray",mc);var rf=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.getoffsetX=function(oe){return this.float32[oe*1+0]},C}(wn);de("GlyphOffsetArray",rf);var Yl=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.getx=function(oe){return this.int16[oe*3+0]},C.prototype.gety=function(oe){return this.int16[oe*3+1]},C.prototype.gettileUnitDistanceFromAnchor=function(oe){return this.int16[oe*3+2]},C}(oo);de("SymbolLineVertexArray",Yl);var Mc=function(k){function C(){k.apply(this,arguments)}k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C;var V={featureIndex:{configurable:!0},sourceLayerIndex:{configurable:!0},bucketIndex:{configurable:!0}};return V.featureIndex.get=function(){return this._structArray.uint32[this._pos4+0]},V.sourceLayerIndex.get=function(){return this._structArray.uint16[this._pos2+2]},V.bucketIndex.get=function(){return this._structArray.uint16[this._pos2+3]},Object.defineProperties(C.prototype,V),C}(fn);Mc.prototype.size=8;var Vc=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.get=function(oe){return new Mc(this,oe)},C}(Xo);de("FeatureIndexArray",Vc);var Ds=on([{name:"a_pos",components:2,type:"Int16"}],4),af=Ds.members,Cs=function(C){C===void 0&&(C=[]),this.segments=C};Cs.prototype.prepareSegment=function(C,V,oe,_e){var Pe=this.segments[this.segments.length-1];return C>Cs.MAX_VERTEX_ARRAY_LENGTH&&U("Max vertices per segment is "+Cs.MAX_VERTEX_ARRAY_LENGTH+": bucket requested "+C),(!Pe||Pe.vertexLength+C>Cs.MAX_VERTEX_ARRAY_LENGTH||Pe.sortKey!==_e)&&(Pe={vertexOffset:V.length,primitiveOffset:oe.length,vertexLength:0,primitiveLength:0},_e!==void 0&&(Pe.sortKey=_e),this.segments.push(Pe)),Pe},Cs.prototype.get=function(){return this.segments},Cs.prototype.destroy=function(){for(var C=0,V=this.segments;C>>16)*Lt&65535)<<16)&4294967295,Xt=Xt<<15|Xt>>>17,Xt=(Xt&65535)*Nt+(((Xt>>>16)*Nt&65535)<<16)&4294967295,je^=Xt,je=je<<13|je>>>19,ct=(je&65535)*5+(((je>>>16)*5&65535)<<16)&4294967295,je=(ct&65535)+27492+(((ct>>>16)+58964&65535)<<16);switch(Xt=0,_e){case 3:Xt^=(V.charCodeAt(gr+2)&255)<<16;case 2:Xt^=(V.charCodeAt(gr+1)&255)<<8;case 1:Xt^=V.charCodeAt(gr)&255,Xt=(Xt&65535)*Lt+(((Xt>>>16)*Lt&65535)<<16)&4294967295,Xt=Xt<<15|Xt>>>17,Xt=(Xt&65535)*Nt+(((Xt>>>16)*Nt&65535)<<16)&4294967295,je^=Xt}return je^=V.length,je^=je>>>16,je=(je&65535)*2246822507+(((je>>>16)*2246822507&65535)<<16)&4294967295,je^=je>>>13,je=(je&65535)*3266489909+(((je>>>16)*3266489909&65535)<<16)&4294967295,je^=je>>>16,je>>>0}k.exports=C}),te=t(function(k){function C(V,oe){for(var _e=V.length,Pe=oe^_e,je=0,ct;_e>=4;)ct=V.charCodeAt(je)&255|(V.charCodeAt(++je)&255)<<8|(V.charCodeAt(++je)&255)<<16|(V.charCodeAt(++je)&255)<<24,ct=(ct&65535)*1540483477+(((ct>>>16)*1540483477&65535)<<16),ct^=ct>>>24,ct=(ct&65535)*1540483477+(((ct>>>16)*1540483477&65535)<<16),Pe=(Pe&65535)*1540483477+(((Pe>>>16)*1540483477&65535)<<16)^ct,_e-=4,++je;switch(_e){case 3:Pe^=(V.charCodeAt(je+2)&255)<<16;case 2:Pe^=(V.charCodeAt(je+1)&255)<<8;case 1:Pe^=V.charCodeAt(je)&255,Pe=(Pe&65535)*1540483477+(((Pe>>>16)*1540483477&65535)<<16)}return Pe^=Pe>>>13,Pe=(Pe&65535)*1540483477+(((Pe>>>16)*1540483477&65535)<<16),Pe^=Pe>>>15,Pe>>>0}k.exports=C}),xe=ye,We=ye,He=te;xe.murmur3=We,xe.murmur2=He;var st=function(){this.ids=[],this.positions=[],this.indexed=!1};st.prototype.add=function(C,V,oe,_e){this.ids.push(Ht(C)),this.positions.push(V,oe,_e)},st.prototype.getPositions=function(C){for(var V=Ht(C),oe=0,_e=this.ids.length-1;oe<_e;){var Pe=oe+_e>>1;this.ids[Pe]>=V?_e=Pe:oe=Pe+1}for(var je=[];this.ids[oe]===V;){var ct=this.positions[3*oe],Lt=this.positions[3*oe+1],Nt=this.positions[3*oe+2];je.push({index:ct,start:Lt,end:Nt}),oe++}return je},st.serialize=function(C,V){var oe=new Float64Array(C.ids),_e=new Uint32Array(C.positions);return yr(oe,_e,0,oe.length-1),V&&V.push(oe.buffer,_e.buffer),{ids:oe,positions:_e}},st.deserialize=function(C){var V=new st;return V.ids=C.ids,V.positions=C.positions,V.indexed=!0,V};var Et=Math.pow(2,53)-1;function Ht(k){var C=+k;return!isNaN(C)&&C<=Et?C:xe(String(k))}function yr(k,C,V,oe){for(;V>1],Pe=V-1,je=oe+1;;){do Pe++;while(k[Pe]<_e);do je--;while(k[je]>_e);if(Pe>=je)break;Ir(k,Pe,je),Ir(C,3*Pe,3*je),Ir(C,3*Pe+1,3*je+1),Ir(C,3*Pe+2,3*je+2)}je-Vje.x+1||Ltje.y+1)&&U("Geometry exceeds allowed extent, reduce your vector tile buffer size")}return V}function ms(k,C){return{type:k.type,id:k.id,properties:k.properties,geometry:C?zn(k):[]}}function us(k,C,V,oe,_e){k.emplaceBack(C*2+(oe+1)/2,V*2+(_e+1)/2)}var Vs=function(C){this.zoom=C.zoom,this.overscaling=C.overscaling,this.layers=C.layers,this.layerIds=this.layers.map(function(V){return V.id}),this.index=C.index,this.hasPattern=!1,this.layoutVertexArray=new Mi,this.indexArray=new jn,this.segments=new Cs,this.programConfigurations=new mi(C.layers,C.zoom),this.stateDependentLayerIds=this.layers.filter(function(V){return V.isStateDependent()}).map(function(V){return V.id})};Vs.prototype.populate=function(C,V,oe){var _e=this.layers[0],Pe=[],je=null;_e.type==="circle"&&(je=_e.layout.get("circle-sort-key"));for(var ct=0,Lt=C;ct=Ii||Br<0||Br>=Ii)){var Rr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,C.sortKey),na=Rr.vertexLength;us(this.layoutVertexArray,gr,Br,-1,-1),us(this.layoutVertexArray,gr,Br,1,-1),us(this.layoutVertexArray,gr,Br,1,1),us(this.layoutVertexArray,gr,Br,-1,1),this.indexArray.emplaceBack(na,na+1,na+2),this.indexArray.emplaceBack(na,na+3,na+2),Rr.vertexLength+=4,Rr.primitiveLength+=2}}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,C,oe,{},_e)},de("CircleBucket",Vs,{omit:["layers"]});function qo(k,C){for(var V=0;V=3){for(var Pe=0;Pe<_e.length;Pe++)if(kh(k,_e[Pe]))return!0}if(Ap(k,_e,V))return!0}return!1}function Ap(k,C,V){if(k.length>1){if(Sp(k,C))return!0;for(var oe=0;oe1?k.distSqr(V):k.distSqr(V.sub(C)._mult(_e)._add(C))}function td(k,C){for(var V=!1,oe,_e,Pe,je=0;jeC.y!=Pe.y>C.y&&C.x<(Pe.x-_e.x)*(C.y-_e.y)/(Pe.y-_e.y)+_e.x&&(V=!V)}return V}function kh(k,C){for(var V=!1,oe=0,_e=k.length-1;oeC.y!=je.y>C.y&&C.x<(je.x-Pe.x)*(C.y-Pe.y)/(je.y-Pe.y)+Pe.x&&(V=!V)}return V}function rd(k,C,V,oe,_e){for(var Pe=0,je=k;Pe=ct.x&&_e>=ct.y)return!0}var Lt=[new i(C,V),new i(C,_e),new i(oe,_e),new i(oe,V)];if(k.length>2)for(var Nt=0,Xt=Lt;Nt_e.x&&C.x>_e.x||k.y_e.y&&C.y>_e.y)return!1;var Pe=W(k,C,V[0]);return Pe!==W(k,C,V[1])||Pe!==W(k,C,V[2])||Pe!==W(k,C,V[3])}function Ch(k,C,V){var oe=C.paint.get(k).value;return oe.kind==="constant"?oe.value:V.programConfigurations.get(C.id).getMaxValue(k)}function Mp(k){return Math.sqrt(k[0]*k[0]+k[1]*k[1])}function qp(k,C,V,oe,_e){if(!C[0]&&!C[1])return k;var Pe=i.convert(C)._mult(_e);V==="viewport"&&Pe._rotate(-oe);for(var je=[],ct=0;ct0&&(Pe=1/Math.sqrt(Pe)),k[0]=C[0]*Pe,k[1]=C[1]*Pe,k[2]=C[2]*Pe,k}function NT(k,C){return k[0]*C[0]+k[1]*C[1]+k[2]*C[2]}function UT(k,C,V){var oe=C[0],_e=C[1],Pe=C[2],je=V[0],ct=V[1],Lt=V[2];return k[0]=_e*Lt-Pe*ct,k[1]=Pe*je-oe*Lt,k[2]=oe*ct-_e*je,k}function jT(k,C,V){var oe=C[0],_e=C[1],Pe=C[2];return k[0]=oe*V[0]+_e*V[3]+Pe*V[6],k[1]=oe*V[1]+_e*V[4]+Pe*V[7],k[2]=oe*V[2]+_e*V[5]+Pe*V[8],k}var VT=lv,cC=function(){var k=sv();return function(C,V,oe,_e,Pe,je){var ct,Lt;for(V||(V=3),oe||(oe=0),_e?Lt=Math.min(_e*V+oe,C.length):Lt=C.length,ct=oe;ctk.width||_e.height>k.height||V.x>k.width-_e.width||V.y>k.height-_e.height)throw new RangeError("out of range source coordinates for image copy");if(_e.width>C.width||_e.height>C.height||oe.x>C.width-_e.width||oe.y>C.height-_e.height)throw new RangeError("out of range destination coordinates for image copy");for(var je=k.data,ct=C.data,Lt=0;Lt<_e.height;Lt++)for(var Nt=((V.y+Lt)*k.width+V.x)*Pe,Xt=((oe.y+Lt)*C.width+oe.x)*Pe,gr=0;gr<_e.width*Pe;gr++)ct[Xt+gr]=je[Nt+gr];return C}var Cp=function(C,V){Ph(this,C,1,V)};Cp.prototype.resize=function(C){x0(this,C,1)},Cp.prototype.clone=function(){return new Cp({width:this.width,height:this.height},new Uint8Array(this.data))},Cp.copy=function(C,V,oe,_e,Pe){b0(C,V,oe,_e,Pe,1)};var Of=function(C,V){Ph(this,C,4,V)};Of.prototype.resize=function(C){x0(this,C,4)},Of.prototype.replace=function(C,V){V?this.data.set(C):C instanceof Uint8ClampedArray?this.data=new Uint8Array(C.buffer):this.data=C},Of.prototype.clone=function(){return new Of({width:this.width,height:this.height},new Uint8Array(this.data))},Of.copy=function(C,V,oe,_e,Pe){b0(C,V,oe,_e,Pe,4)},de("AlphaImage",Cp),de("RGBAImage",Of);var Tg=new xi({"heatmap-radius":new ra(fi.paint_heatmap["heatmap-radius"]),"heatmap-weight":new ra(fi.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new Qt(fi.paint_heatmap["heatmap-intensity"]),"heatmap-color":new wi(fi.paint_heatmap["heatmap-color"]),"heatmap-opacity":new Qt(fi.paint_heatmap["heatmap-opacity"])}),sm={paint:Tg};function Ag(k){var C={},V=k.resolution||256,oe=k.clips?k.clips.length:1,_e=k.image||new Of({width:V,height:oe}),Pe=function(Si,ci,Ai){C[k.evaluationKey]=Ai;var Li=k.expression.evaluate(C);_e.data[Si+ci+0]=Math.floor(Li.r*255/Li.a),_e.data[Si+ci+1]=Math.floor(Li.g*255/Li.a),_e.data[Si+ci+2]=Math.floor(Li.b*255/Li.a),_e.data[Si+ci+3]=Math.floor(Li.a*255)};if(k.clips)for(var Nt=0,Xt=0;Nt80*V){ct=Nt=k[0],Lt=Xt=k[1];for(var na=V;na<_e;na+=V)gr=k[na],Br=k[na+1],grNt&&(Nt=gr),Br>Xt&&(Xt=Br);Rr=Math.max(Nt-ct,Xt-Lt),Rr=Rr!==0?1/Rr:0}return Sg(Pe,je,V,ct,Lt,Rr),je}function A0(k,C,V,oe,_e){var Pe,je;if(_e===B1(k,C,V,oe)>0)for(Pe=C;Pe=C;Pe-=oe)je=Bx(Pe,k[Pe],k[Pe+1],je);return je&&Eg(je,je.next)&&(Lg(je),je=je.next),je}function uv(k,C){if(!k)return k;C||(C=k);var V=k,oe;do if(oe=!1,!V.steiner&&(Eg(V,V.next)||qc(V.prev,V,V.next)===0)){if(Lg(V),V=C=V.prev,V===V.next)break;oe=!0}else V=V.next;while(oe||V!==C);return C}function Sg(k,C,V,oe,_e,Pe,je){if(k){!je&&Pe&&S0(k,oe,_e,Pe);for(var ct=k,Lt,Nt;k.prev!==k.next;){if(Lt=k.prev,Nt=k.next,Pe?zx(k,oe,_e,Pe):Dx(k)){C.push(Lt.i/V),C.push(k.i/V),C.push(Nt.i/V),Lg(k),k=Nt.next,ct=Nt.next;continue}if(k=Nt,k===ct){je?je===1?(k=Mg(uv(k),C,V),Sg(k,C,V,oe,_e,Pe,2)):je===2&&yd(k,C,V,oe,_e,Pe):Sg(uv(k),C,V,oe,_e,Pe,1);break}}}}function Dx(k){var C=k.prev,V=k,oe=k.next;if(qc(C,V,oe)>=0)return!1;for(var _e=k.next.next;_e!==k.prev;){if(fv(C.x,C.y,V.x,V.y,oe.x,oe.y,_e.x,_e.y)&&qc(_e.prev,_e,_e.next)>=0)return!1;_e=_e.next}return!0}function zx(k,C,V,oe){var _e=k.prev,Pe=k,je=k.next;if(qc(_e,Pe,je)>=0)return!1;for(var ct=_e.xPe.x?_e.x>je.x?_e.x:je.x:Pe.x>je.x?Pe.x:je.x,Xt=_e.y>Pe.y?_e.y>je.y?_e.y:je.y:Pe.y>je.y?Pe.y:je.y,gr=D1(ct,Lt,C,V,oe),Br=D1(Nt,Xt,C,V,oe),Rr=k.prevZ,na=k.nextZ;Rr&&Rr.z>=gr&&na&&na.z<=Br;){if(Rr!==k.prev&&Rr!==k.next&&fv(_e.x,_e.y,Pe.x,Pe.y,je.x,je.y,Rr.x,Rr.y)&&qc(Rr.prev,Rr,Rr.next)>=0||(Rr=Rr.prevZ,na!==k.prev&&na!==k.next&&fv(_e.x,_e.y,Pe.x,Pe.y,je.x,je.y,na.x,na.y)&&qc(na.prev,na,na.next)>=0))return!1;na=na.nextZ}for(;Rr&&Rr.z>=gr;){if(Rr!==k.prev&&Rr!==k.next&&fv(_e.x,_e.y,Pe.x,Pe.y,je.x,je.y,Rr.x,Rr.y)&&qc(Rr.prev,Rr,Rr.next)>=0)return!1;Rr=Rr.prevZ}for(;na&&na.z<=Br;){if(na!==k.prev&&na!==k.next&&fv(_e.x,_e.y,Pe.x,Pe.y,je.x,je.y,na.x,na.y)&&qc(na.prev,na,na.next)>=0)return!1;na=na.nextZ}return!0}function Mg(k,C,V){var oe=k;do{var _e=oe.prev,Pe=oe.next.next;!Eg(_e,Pe)&&M0(_e,oe,oe.next,Pe)&&Cg(_e,Pe)&&Cg(Pe,_e)&&(C.push(_e.i/V),C.push(oe.i/V),C.push(Pe.i/V),Lg(oe),Lg(oe.next),oe=k=Pe),oe=oe.next}while(oe!==k);return uv(oe)}function yd(k,C,V,oe,_e,Pe){var je=k;do{for(var ct=je.next.next;ct!==je.prev;){if(je.i!==ct.i&&um(je,ct)){var Lt=F1(je,ct);je=uv(je,je.next),Lt=uv(Lt,Lt.next),Sg(je,C,V,oe,_e,Pe),Sg(Lt,C,V,oe,_e,Pe);return}ct=ct.next}je=je.next}while(je!==k)}function cv(k,C,V,oe){var _e=[],Pe,je,ct,Lt,Nt;for(Pe=0,je=C.length;Pe=V.next.y&&V.next.y!==V.y){var ct=V.x+(_e-V.y)*(V.next.x-V.x)/(V.next.y-V.y);if(ct<=oe&&ct>Pe){if(Pe=ct,ct===oe){if(_e===V.y)return V;if(_e===V.next.y)return V.next}je=V.x=V.x&&V.x>=Nt&&oe!==V.x&&fv(_eje.x||V.x===je.x&&JT(je,V)))&&(je=V,gr=Br)),V=V.next;while(V!==Lt);return je}function JT(k,C){return qc(k.prev,k,C.prev)<0&&qc(C.next,k,k.next)<0}function S0(k,C,V,oe){var _e=k;do _e.z===null&&(_e.z=D1(_e.x,_e.y,C,V,oe)),_e.prevZ=_e.prev,_e.nextZ=_e.next,_e=_e.next;while(_e!==k);_e.prevZ.nextZ=null,_e.prevZ=null,R1(_e)}function R1(k){var C,V,oe,_e,Pe,je,ct,Lt,Nt=1;do{for(V=k,k=null,Pe=null,je=0;V;){for(je++,oe=V,ct=0,C=0;C0||Lt>0&&oe;)ct!==0&&(Lt===0||!oe||V.z<=oe.z)?(_e=V,V=V.nextZ,ct--):(_e=oe,oe=oe.nextZ,Lt--),Pe?Pe.nextZ=_e:k=_e,_e.prevZ=Pe,Pe=_e;V=oe}Pe.nextZ=null,Nt*=2}while(je>1);return k}function D1(k,C,V,oe,_e){return k=32767*(k-V)*_e,C=32767*(C-oe)*_e,k=(k|k<<8)&16711935,k=(k|k<<4)&252645135,k=(k|k<<2)&858993459,k=(k|k<<1)&1431655765,C=(C|C<<8)&16711935,C=(C|C<<4)&252645135,C=(C|C<<2)&858993459,C=(C|C<<1)&1431655765,k|C<<1}function z1(k){var C=k,V=k;do(C.x=0&&(k-je)*(oe-ct)-(V-je)*(C-ct)>=0&&(V-je)*(Pe-ct)-(_e-je)*(oe-ct)>=0}function um(k,C){return k.next.i!==C.i&&k.prev.i!==C.i&&!Ox(k,C)&&(Cg(k,C)&&Cg(C,k)&&$T(k,C)&&(qc(k.prev,k,C.prev)||qc(k,C.prev,C))||Eg(k,C)&&qc(k.prev,k,k.next)>0&&qc(C.prev,C,C.next)>0)}function qc(k,C,V){return(C.y-k.y)*(V.x-C.x)-(C.x-k.x)*(V.y-C.y)}function Eg(k,C){return k.x===C.x&&k.y===C.y}function M0(k,C,V,oe){var _e=Dv(qc(k,C,V)),Pe=Dv(qc(k,C,oe)),je=Dv(qc(V,oe,k)),ct=Dv(qc(V,oe,C));return!!(_e!==Pe&&je!==ct||_e===0&&kg(k,V,C)||Pe===0&&kg(k,oe,C)||je===0&&kg(V,k,oe)||ct===0&&kg(V,C,oe))}function kg(k,C,V){return C.x<=Math.max(k.x,V.x)&&C.x>=Math.min(k.x,V.x)&&C.y<=Math.max(k.y,V.y)&&C.y>=Math.min(k.y,V.y)}function Dv(k){return k>0?1:k<0?-1:0}function Ox(k,C){var V=k;do{if(V.i!==k.i&&V.next.i!==k.i&&V.i!==C.i&&V.next.i!==C.i&&M0(V,V.next,k,C))return!0;V=V.next}while(V!==k);return!1}function Cg(k,C){return qc(k.prev,k,k.next)<0?qc(k,C,k.next)>=0&&qc(k,k.prev,C)>=0:qc(k,C,k.prev)<0||qc(k,k.next,C)<0}function $T(k,C){var V=k,oe=!1,_e=(k.x+C.x)/2,Pe=(k.y+C.y)/2;do V.y>Pe!=V.next.y>Pe&&V.next.y!==V.y&&_e<(V.next.x-V.x)*(Pe-V.y)/(V.next.y-V.y)+V.x&&(oe=!oe),V=V.next;while(V!==k);return oe}function F1(k,C){var V=new O1(k.i,k.x,k.y),oe=new O1(C.i,C.x,C.y),_e=k.next,Pe=C.prev;return k.next=C,C.prev=k,V.next=_e,_e.prev=V,oe.next=V,V.prev=oe,Pe.next=oe,oe.prev=Pe,oe}function Bx(k,C,V,oe){var _e=new O1(k,C,V);return oe?(_e.next=oe.next,_e.prev=oe,oe.next.prev=_e,oe.next=_e):(_e.prev=_e,_e.next=_e),_e}function Lg(k){k.next.prev=k.prev,k.prev.next=k.next,k.prevZ&&(k.prevZ.nextZ=k.nextZ),k.nextZ&&(k.nextZ.prevZ=k.prevZ)}function O1(k,C,V){this.i=k,this.x=C,this.y=V,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}lm.deviation=function(k,C,V,oe){var _e=C&&C.length,Pe=_e?C[0]*V:k.length,je=Math.abs(B1(k,0,Pe,V));if(_e)for(var ct=0,Lt=C.length;ct0&&(oe+=k[_e-1].length,V.holes.push(oe))}return V},T0.default=Rx;function N1(k,C,V,oe,_e){Gd(k,C,V||0,oe||k.length-1,_e||Nx)}function Gd(k,C,V,oe,_e){for(;oe>V;){if(oe-V>600){var Pe=oe-V+1,je=C-V+1,ct=Math.log(Pe),Lt=.5*Math.exp(2*ct/3),Nt=.5*Math.sqrt(ct*Lt*(Pe-Lt)/Pe)*(je-Pe/2<0?-1:1),Xt=Math.max(V,Math.floor(C-je*Lt/Pe+Nt)),gr=Math.min(oe,Math.floor(C+(Pe-je)*Lt/Pe+Nt));Gd(k,C,Xt,gr,_e)}var Br=k[C],Rr=V,na=oe;for(cm(k,V,C),_e(k[oe],Br)>0&&cm(k,V,oe);Rr0;)na--}_e(k[V],Br)===0?cm(k,V,na):(na++,cm(k,na,oe)),na<=C&&(V=na+1),C<=na&&(oe=na-1)}}function cm(k,C,V){var oe=k[C];k[C]=k[V],k[V]=oe}function Nx(k,C){return kC?1:0}function E0(k,C){var V=k.length;if(V<=1)return[k];for(var oe=[],_e,Pe,je=0;je1)for(var Lt=0;Lt>3}if(oe--,V===1||V===2)_e+=k.readSVarint(),Pe+=k.readSVarint(),V===1&&(ct&&je.push(ct),ct=[]),ct.push(new i(_e,Pe));else if(V===7)ct&&ct.push(ct[0].clone());else throw new Error("unknown command "+V)}return ct&&je.push(ct),je},zv.prototype.bbox=function(){var k=this._pbf;k.pos=this._geometry;for(var C=k.readVarint()+k.pos,V=1,oe=0,_e=0,Pe=0,je=1/0,ct=-1/0,Lt=1/0,Nt=-1/0;k.pos>3}if(oe--,V===1||V===2)_e+=k.readSVarint(),Pe+=k.readSVarint(),_ect&&(ct=_e),PeNt&&(Nt=Pe);else if(V!==7)throw new Error("unknown command "+V)}return[je,Lt,ct,Nt]},zv.prototype.toGeoJSON=function(k,C,V){var oe=this.extent*Math.pow(2,V),_e=this.extent*k,Pe=this.extent*C,je=this.loadGeometry(),ct=zv.types[this.type],Lt,Nt;function Xt(Rr){for(var na=0;na>3;C=oe===1?k.readString():oe===2?k.readFloat():oe===3?k.readDouble():oe===4?k.readVarint64():oe===5?k.readVarint():oe===6?k.readSVarint():oe===7?k.readBoolean():null}return C}V1.prototype.feature=function(k){if(k<0||k>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[k];var C=this._pbf.readVarint()+this._pbf.pos;return new j1(this._pbf,C,this.extent,this._keys,this._values)};var Yx=eA;function eA(k,C){this.layers=k.readFields(tA,{},C)}function tA(k,C,V){if(k===3){var oe=new Wd(V,V.readVarint()+V.pos);oe.length&&(C[oe.name]=oe)}}var Kx=Yx,fm=j1,Jx=Wd,Zd={VectorTile:Kx,VectorTileFeature:fm,VectorTileLayer:Jx},$x=Zd.VectorTileFeature.types,C0=500,hm=Math.pow(2,13);function hv(k,C,V,oe,_e,Pe,je,ct){k.emplaceBack(C,V,Math.floor(oe*hm)*2+je,_e*hm*2,Pe*hm*2,Math.round(ct))}var fd=function(C){this.zoom=C.zoom,this.overscaling=C.overscaling,this.layers=C.layers,this.layerIds=this.layers.map(function(V){return V.id}),this.index=C.index,this.hasPattern=!1,this.layoutVertexArray=new pn,this.indexArray=new jn,this.programConfigurations=new mi(C.layers,C.zoom),this.segments=new Cs,this.stateDependentLayerIds=this.layers.filter(function(V){return V.isStateDependent()}).map(function(V){return V.id})};fd.prototype.populate=function(C,V,oe){this.features=[],this.hasPattern=k0("fill-extrusion",this.layers,V);for(var _e=0,Pe=C;_e=1){var Ai=ii[Si-1];if(!rA(ci,Ai)){Rr.vertexLength+4>Cs.MAX_VERTEX_ARRAY_LENGTH&&(Rr=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));var Li=ci.sub(Ai)._perp()._unit(),Ki=Ai.dist(ci);Wa+Ki>32768&&(Wa=0),hv(this.layoutVertexArray,ci.x,ci.y,Li.x,Li.y,0,0,Wa),hv(this.layoutVertexArray,ci.x,ci.y,Li.x,Li.y,0,1,Wa),Wa+=Ki,hv(this.layoutVertexArray,Ai.x,Ai.y,Li.x,Li.y,0,0,Wa),hv(this.layoutVertexArray,Ai.x,Ai.y,Li.x,Li.y,0,1,Wa);var kn=Rr.vertexLength;this.indexArray.emplaceBack(kn,kn+2,kn+1),this.indexArray.emplaceBack(kn+1,kn+2,kn+3),Rr.vertexLength+=4,Rr.primitiveLength+=2}}}}if(Rr.vertexLength+Nt>Cs.MAX_VERTEX_ARRAY_LENGTH&&(Rr=this.segments.prepareSegment(Nt,this.layoutVertexArray,this.indexArray)),$x[C.type]==="Polygon"){for(var Tn=[],lo=[],qn=Rr.vertexLength,to=0,ds=Lt;toIi)||k.y===C.y&&(k.y<0||k.y>Ii)}function aA(k){return k.every(function(C){return C.x<0})||k.every(function(C){return C.x>Ii})||k.every(function(C){return C.y<0})||k.every(function(C){return C.y>Ii})}var pm=new xi({"fill-extrusion-opacity":new Qt(fi["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new ra(fi["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new Qt(fi["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new Qt(fi["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Ta(fi["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new ra(fi["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new ra(fi["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new Qt(fi["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])}),ph={paint:pm},pv=function(k){function C(V){k.call(this,V,ph)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.createBucket=function(oe){return new fd(oe)},C.prototype.queryRadius=function(){return Mp(this.paint.get("fill-extrusion-translate"))},C.prototype.is3D=function(){return!0},C.prototype.queryIntersectsFeature=function(oe,_e,Pe,je,ct,Lt,Nt,Xt){var gr=qp(oe,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),Lt.angle,Nt),Br=this.paint.get("fill-extrusion-height").evaluate(_e,Pe),Rr=this.paint.get("fill-extrusion-base").evaluate(_e,Pe),na=iA(gr,Xt,Lt,0),Ia=H1(je,Rr,Br,Xt),ii=Ia[0],Wa=Ia[1];return Qx(ii,Wa,na)},C}(Fi);function Fv(k,C){return k.x*C.x+k.y*C.y}function q1(k,C){if(k.length===1){for(var V=0,oe=C[V++],_e;!_e||oe.equals(_e);)if(_e=C[V++],!_e)return 1/0;for(;V=2&&C[Nt-1].equals(C[Nt-2]);)Nt--;for(var Xt=0;Xt0;if(Tn&&Si>Xt){var qn=Rr.dist(na);if(qn>2*gr){var to=Rr.sub(Rr.sub(na)._mult(gr/qn)._round());this.updateDistance(na,to),this.addCurrentVertex(to,ii,0,0,Br),na=to}}var ds=na&&Ia,uo=ds?oe:Lt?"butt":_e;if(ds&&uo==="round"&&(KiPe&&(uo="bevel"),uo==="bevel"&&(Ki>2&&(uo="flipbevel"),Ki100)ci=Wa.mult(-1);else{var vo=Ki*ii.add(Wa).mag()/ii.sub(Wa).mag();ci._perp()._mult(vo*(lo?-1:1))}this.addCurrentVertex(Rr,ci,0,0,Br),this.addCurrentVertex(Rr,ci.mult(-1),0,0,Br)}else if(uo==="bevel"||uo==="fakeround"){var zs=-Math.sqrt(Ki*Ki-1),cs=lo?zs:0,Tl=lo?0:zs;if(na&&this.addCurrentVertex(Rr,ii,cs,Tl,Br),uo==="fakeround")for(var lu=Math.round(kn*180/Math.PI/W1),Al=1;Al2*gr){var Cf=Rr.add(Ia.sub(Rr)._mult(gr/ih)._round());this.updateDistance(Rr,Cf),this.addCurrentVertex(Cf,Wa,0,0,Br),Rr=Cf}}}}},Mf.prototype.addCurrentVertex=function(C,V,oe,_e,Pe,je){je===void 0&&(je=!1);var ct=V.x+V.y*oe,Lt=V.y-V.x*oe,Nt=-V.x+V.y*_e,Xt=-V.y-V.x*_e;this.addHalfVertex(C,ct,Lt,je,!1,oe,Pe),this.addHalfVertex(C,Nt,Xt,je,!0,-_e,Pe),this.distance>zg/2&&this.totalDistance===0&&(this.distance=0,this.addCurrentVertex(C,V,oe,_e,Pe,je))},Mf.prototype.addHalfVertex=function(C,V,oe,_e,Pe,je,ct){var Lt=C.x,Nt=C.y,Xt=this.lineClips?this.scaledDistance*(zg-1):this.scaledDistance,gr=Xt*P0;if(this.layoutVertexArray.emplaceBack((Lt<<1)+(_e?1:0),(Nt<<1)+(Pe?1:0),Math.round(L0*V)+128,Math.round(L0*oe)+128,(je===0?0:je<0?-1:1)+1|(gr&63)<<2,gr>>6),this.lineClips){var Br=this.scaledDistance-this.lineClips.start,Rr=this.lineClips.end-this.lineClips.start,na=Br/Rr;this.layoutVertexArray2.emplaceBack(na,this.lineClipsArray.length)}var Ia=ct.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,Ia),ct.primitiveLength++),Pe?this.e2=Ia:this.e1=Ia},Mf.prototype.updateScaledDistance=function(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance},Mf.prototype.updateDistance=function(C,V){this.distance+=C.dist(V),this.updateScaledDistance()},de("LineBucket",Mf,{omit:["layers","patternFeatures"]});var Z1=new xi({"line-cap":new Qt(fi.layout_line["line-cap"]),"line-join":new ra(fi.layout_line["line-join"]),"line-miter-limit":new Qt(fi.layout_line["line-miter-limit"]),"line-round-limit":new Qt(fi.layout_line["line-round-limit"]),"line-sort-key":new ra(fi.layout_line["line-sort-key"])}),X1=new xi({"line-opacity":new ra(fi.paint_line["line-opacity"]),"line-color":new ra(fi.paint_line["line-color"]),"line-translate":new Qt(fi.paint_line["line-translate"]),"line-translate-anchor":new Qt(fi.paint_line["line-translate-anchor"]),"line-width":new ra(fi.paint_line["line-width"]),"line-gap-width":new ra(fi.paint_line["line-gap-width"]),"line-offset":new ra(fi.paint_line["line-offset"]),"line-blur":new ra(fi.paint_line["line-blur"]),"line-dasharray":new si(fi.paint_line["line-dasharray"]),"line-pattern":new Ta(fi.paint_line["line-pattern"]),"line-gradient":new wi(fi.paint_line["line-gradient"])}),I0={paint:X1,layout:Z1},oA=function(k){function C(){k.apply(this,arguments)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.possiblyEvaluate=function(oe,_e){return _e=new Vi(Math.floor(_e.zoom),{now:_e.now,fadeDuration:_e.fadeDuration,zoomHistory:_e.zoomHistory,transition:_e.transition}),k.prototype.possiblyEvaluate.call(this,oe,_e)},C.prototype.evaluate=function(oe,_e,Pe,je){return _e=m({},_e,{zoom:Math.floor(_e.zoom)}),k.prototype.evaluate.call(this,oe,_e,Pe,je)},C}(ra),q=new oA(I0.paint.properties["line-width"].specification);q.useIntegerZoom=!0;var D=function(k){function C(V){k.call(this,V,I0),this.gradientVersion=0}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype._handleSpecialPaintPropertyUpdate=function(oe){if(oe==="line-gradient"){var _e=this._transitionablePaint._values["line-gradient"].value.expression;this.stepInterpolant=_e._styleExpression.expression instanceof vu,this.gradientVersion=(this.gradientVersion+1)%h}},C.prototype.gradientExpression=function(){return this._transitionablePaint._values["line-gradient"].value.expression},C.prototype.recalculate=function(oe,_e){k.prototype.recalculate.call(this,oe,_e),this.paint._values["line-floorwidth"]=q.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,oe)},C.prototype.createBucket=function(oe){return new Mf(oe)},C.prototype.queryRadius=function(oe){var _e=oe,Pe=Y(Ch("line-width",this,_e),Ch("line-gap-width",this,_e)),je=Ch("line-offset",this,_e);return Pe/2+Math.abs(je)+Mp(this.paint.get("line-translate"))},C.prototype.queryIntersectsFeature=function(oe,_e,Pe,je,ct,Lt,Nt){var Xt=qp(oe,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),Lt.angle,Nt),gr=Nt/2*Y(this.paint.get("line-width").evaluate(_e,Pe),this.paint.get("line-gap-width").evaluate(_e,Pe)),Br=this.paint.get("line-offset").evaluate(_e,Pe);return Br&&(je=pe(je,Br*Nt)),Ru(Xt,je,gr)},C.prototype.isTileClipped=function(){return!0},C}(Fi);function Y(k,C){return C>0?C+2*k:k}function pe(k,C){for(var V=[],oe=new i(0,0),_e=0;_e":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};function hi(k){for(var C="",V=0;V>1,Xt=-7,gr=V?_e-1:0,Br=V?-1:1,Rr=k[C+gr];for(gr+=Br,Pe=Rr&(1<<-Xt)-1,Rr>>=-Xt,Xt+=ct;Xt>0;Pe=Pe*256+k[C+gr],gr+=Br,Xt-=8);for(je=Pe&(1<<-Xt)-1,Pe>>=-Xt,Xt+=oe;Xt>0;je=je*256+k[C+gr],gr+=Br,Xt-=8);if(Pe===0)Pe=1-Nt;else{if(Pe===Lt)return je?NaN:(Rr?-1:1)*(1/0);je=je+Math.pow(2,oe),Pe=Pe-Nt}return(Rr?-1:1)*je*Math.pow(2,Pe-oe)},fo=function(k,C,V,oe,_e,Pe){var je,ct,Lt,Nt=Pe*8-_e-1,Xt=(1<>1,Br=_e===23?Math.pow(2,-24)-Math.pow(2,-77):0,Rr=oe?0:Pe-1,na=oe?1:-1,Ia=C<0||C===0&&1/C<0?1:0;for(C=Math.abs(C),isNaN(C)||C===1/0?(ct=isNaN(C)?1:0,je=Xt):(je=Math.floor(Math.log(C)/Math.LN2),C*(Lt=Math.pow(2,-je))<1&&(je--,Lt*=2),je+gr>=1?C+=Br/Lt:C+=Br*Math.pow(2,1-gr),C*Lt>=2&&(je++,Lt/=2),je+gr>=Xt?(ct=0,je=Xt):je+gr>=1?(ct=(C*Lt-1)*Math.pow(2,_e),je=je+gr):(ct=C*Math.pow(2,gr-1)*Math.pow(2,_e),je=0));_e>=8;k[V+Rr]=ct&255,Rr+=na,ct/=256,_e-=8);for(je=je<<_e|ct,Nt+=_e;Nt>0;k[V+Rr]=je&255,Rr+=na,je/=256,Nt-=8);k[V+Rr-na]|=Ia*128},ss={read:En,write:fo},eo=vn;function vn(k){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(k)?k:new Uint8Array(k||0),this.pos=0,this.type=0,this.length=this.buf.length}vn.Varint=0,vn.Fixed64=1,vn.Bytes=2,vn.Fixed32=5;var Uo=65536*65536,Mo=1/Uo,xo=12,Yi=typeof TextDecoder>"u"?null:new TextDecoder("utf8");vn.prototype={destroy:function(){this.buf=null},readFields:function(k,C,V){for(V=V||this.length;this.pos>3,Pe=this.pos;this.type=oe&7,k(_e,C,this),this.pos===Pe&&this.skip(oe)}return C},readMessage:function(k,C){return this.readFields(k,C,this.readVarint()+this.pos)},readFixed32:function(){var k=th(this.buf,this.pos);return this.pos+=4,k},readSFixed32:function(){var k=Lp(this.buf,this.pos);return this.pos+=4,k},readFixed64:function(){var k=th(this.buf,this.pos)+th(this.buf,this.pos+4)*Uo;return this.pos+=8,k},readSFixed64:function(){var k=th(this.buf,this.pos)+Lp(this.buf,this.pos+4)*Uo;return this.pos+=8,k},readFloat:function(){var k=ss.read(this.buf,this.pos,!0,23,4);return this.pos+=4,k},readDouble:function(){var k=ss.read(this.buf,this.pos,!0,52,8);return this.pos+=8,k},readVarint:function(k){var C=this.buf,V,oe;return oe=C[this.pos++],V=oe&127,oe<128||(oe=C[this.pos++],V|=(oe&127)<<7,oe<128)||(oe=C[this.pos++],V|=(oe&127)<<14,oe<128)||(oe=C[this.pos++],V|=(oe&127)<<21,oe<128)?V:(oe=C[this.pos],V|=(oe&15)<<28,Ko(V,k,this))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var k=this.readVarint();return k%2===1?(k+1)/-2:k/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var k=this.readVarint()+this.pos,C=this.pos;return this.pos=k,k-C>=xo&&Yi?Nl(this.buf,C,k):pp(this.buf,C,k)},readBytes:function(){var k=this.readVarint()+this.pos,C=this.buf.subarray(this.pos,k);return this.pos=k,C},readPackedVarint:function(k,C){if(this.type!==vn.Bytes)return k.push(this.readVarint(C));var V=bo(this);for(k=k||[];this.pos127;);else if(C===vn.Bytes)this.pos=this.readVarint()+this.pos;else if(C===vn.Fixed32)this.pos+=4;else if(C===vn.Fixed64)this.pos+=8;else throw new Error("Unimplemented type: "+C)},writeTag:function(k,C){this.writeVarint(k<<3|C)},realloc:function(k){for(var C=this.length||16;C268435455||k<0){_u(k,this);return}this.realloc(4),this.buf[this.pos++]=k&127|(k>127?128:0),!(k<=127)&&(this.buf[this.pos++]=(k>>>=7)&127|(k>127?128:0),!(k<=127)&&(this.buf[this.pos++]=(k>>>=7)&127|(k>127?128:0),!(k<=127)&&(this.buf[this.pos++]=k>>>7&127)))},writeSVarint:function(k){this.writeVarint(k<0?-k*2-1:k*2)},writeBoolean:function(k){this.writeVarint(!!k)},writeString:function(k){k=String(k),this.realloc(k.length*4),this.pos++;var C=this.pos;this.pos=zu(this.buf,k,this.pos);var V=this.pos-C;V>=128&&Gp(C,V,this),this.pos=C-1,this.writeVarint(V),this.pos+=V},writeFloat:function(k){this.realloc(4),ss.write(this.buf,k,this.pos,!0,23,4),this.pos+=4},writeDouble:function(k){this.realloc(8),ss.write(this.buf,k,this.pos,!0,52,8),this.pos+=8},writeBytes:function(k){var C=k.length;this.writeVarint(C),this.realloc(C);for(var V=0;V=128&&Gp(V,oe,this),this.pos=V-1,this.writeVarint(oe),this.pos+=oe},writeMessage:function(k,C,V){this.writeTag(k,vn.Bytes),this.writeRawMessage(C,V)},writePackedVarint:function(k,C){C.length&&this.writeMessage(k,dh,C)},writePackedSVarint:function(k,C){C.length&&this.writeMessage(k,Nf,C)},writePackedBoolean:function(k,C){C.length&&this.writeMessage(k,Jh,C)},writePackedFloat:function(k,C){C.length&&this.writeMessage(k,Yh,C)},writePackedDouble:function(k,C){C.length&&this.writeMessage(k,Kh,C)},writePackedFixed32:function(k,C){C.length&&this.writeMessage(k,Hc,C)},writePackedSFixed32:function(k,C){C.length&&this.writeMessage(k,Uf,C)},writePackedFixed64:function(k,C){C.length&&this.writeMessage(k,Ih,C)},writePackedSFixed64:function(k,C){C.length&&this.writeMessage(k,vh,C)},writeBytesField:function(k,C){this.writeTag(k,vn.Bytes),this.writeBytes(C)},writeFixed32Field:function(k,C){this.writeTag(k,vn.Fixed32),this.writeFixed32(C)},writeSFixed32Field:function(k,C){this.writeTag(k,vn.Fixed32),this.writeSFixed32(C)},writeFixed64Field:function(k,C){this.writeTag(k,vn.Fixed64),this.writeFixed64(C)},writeSFixed64Field:function(k,C){this.writeTag(k,vn.Fixed64),this.writeSFixed64(C)},writeVarintField:function(k,C){this.writeTag(k,vn.Varint),this.writeVarint(C)},writeSVarintField:function(k,C){this.writeTag(k,vn.Varint),this.writeSVarint(C)},writeStringField:function(k,C){this.writeTag(k,vn.Bytes),this.writeString(C)},writeFloatField:function(k,C){this.writeTag(k,vn.Fixed32),this.writeFloat(C)},writeDoubleField:function(k,C){this.writeTag(k,vn.Fixed64),this.writeDouble(C)},writeBooleanField:function(k,C){this.writeVarintField(k,!!C)}};function Ko(k,C,V){var oe=V.buf,_e,Pe;if(Pe=oe[V.pos++],_e=(Pe&112)>>4,Pe<128||(Pe=oe[V.pos++],_e|=(Pe&127)<<3,Pe<128)||(Pe=oe[V.pos++],_e|=(Pe&127)<<10,Pe<128)||(Pe=oe[V.pos++],_e|=(Pe&127)<<17,Pe<128)||(Pe=oe[V.pos++],_e|=(Pe&127)<<24,Pe<128)||(Pe=oe[V.pos++],_e|=(Pe&1)<<31,Pe<128))return gs(k,_e,C);throw new Error("Expected varint not more than 10 bytes")}function bo(k){return k.type===vn.Bytes?k.readVarint()+k.pos:k.pos+1}function gs(k,C,V){return V?C*4294967296+(k>>>0):(C>>>0)*4294967296+(k>>>0)}function _u(k,C){var V,oe;if(k>=0?(V=k%4294967296|0,oe=k/4294967296|0):(V=~(-k%4294967296),oe=~(-k/4294967296),V^4294967295?V=V+1|0:(V=0,oe=oe+1|0)),k>=18446744073709552e3||k<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");C.realloc(10),pu(V,oe,C),Bf(oe,C)}function pu(k,C,V){V.buf[V.pos++]=k&127|128,k>>>=7,V.buf[V.pos++]=k&127|128,k>>>=7,V.buf[V.pos++]=k&127|128,k>>>=7,V.buf[V.pos++]=k&127|128,k>>>=7,V.buf[V.pos]=k&127}function Bf(k,C){var V=(k&7)<<4;C.buf[C.pos++]|=V|((k>>>=3)?128:0),k&&(C.buf[C.pos++]=k&127|((k>>>=7)?128:0),k&&(C.buf[C.pos++]=k&127|((k>>>=7)?128:0),k&&(C.buf[C.pos++]=k&127|((k>>>=7)?128:0),k&&(C.buf[C.pos++]=k&127|((k>>>=7)?128:0),k&&(C.buf[C.pos++]=k&127)))))}function Gp(k,C,V){var oe=C<=16383?1:C<=2097151?2:C<=268435455?3:Math.floor(Math.log(C)/(Math.LN2*7));V.realloc(oe);for(var _e=V.pos-1;_e>=k;_e--)V.buf[_e+oe]=V.buf[_e]}function dh(k,C){for(var V=0;V>>8,k[V+2]=C>>>16,k[V+3]=C>>>24}function Lp(k,C){return(k[C]|k[C+1]<<8|k[C+2]<<16)+(k[C+3]<<24)}function pp(k,C,V){for(var oe="",_e=C;_e239?4:Pe>223?3:Pe>191?2:1;if(_e+ct>V)break;var Lt,Nt,Xt;ct===1?Pe<128&&(je=Pe):ct===2?(Lt=k[_e+1],(Lt&192)===128&&(je=(Pe&31)<<6|Lt&63,je<=127&&(je=null))):ct===3?(Lt=k[_e+1],Nt=k[_e+2],(Lt&192)===128&&(Nt&192)===128&&(je=(Pe&15)<<12|(Lt&63)<<6|Nt&63,(je<=2047||je>=55296&&je<=57343)&&(je=null))):ct===4&&(Lt=k[_e+1],Nt=k[_e+2],Xt=k[_e+3],(Lt&192)===128&&(Nt&192)===128&&(Xt&192)===128&&(je=(Pe&15)<<18|(Lt&63)<<12|(Nt&63)<<6|Xt&63,(je<=65535||je>=1114112)&&(je=null))),je===null?(je=65533,ct=1):je>65535&&(je-=65536,oe+=String.fromCharCode(je>>>10&1023|55296),je=56320|je&1023),oe+=String.fromCharCode(je),_e+=ct}return oe}function Nl(k,C,V){return Yi.decode(k.subarray(C,V))}function zu(k,C,V){for(var oe=0,_e,Pe;oe55295&&_e<57344)if(Pe)if(_e<56320){k[V++]=239,k[V++]=191,k[V++]=189,Pe=_e;continue}else _e=Pe-55296<<10|_e-56320|65536,Pe=null;else{_e>56319||oe+1===C.length?(k[V++]=239,k[V++]=191,k[V++]=189):Pe=_e;continue}else Pe&&(k[V++]=239,k[V++]=191,k[V++]=189,Pe=null);_e<128?k[V++]=_e:(_e<2048?k[V++]=_e>>6|192:(_e<65536?k[V++]=_e>>12|224:(k[V++]=_e>>18|240,k[V++]=_e>>12&63|128),k[V++]=_e>>6&63|128),k[V++]=_e&63|128)}return V}var xu=3;function Pp(k,C,V){k===1&&V.readMessage(Ec,C)}function Ec(k,C,V){if(k===3){var oe=V.readMessage(dm,{}),_e=oe.id,Pe=oe.bitmap,je=oe.width,ct=oe.height,Lt=oe.left,Nt=oe.top,Xt=oe.advance;C.push({id:_e,bitmap:new Cp({width:je+2*xu,height:ct+2*xu},Pe),metrics:{width:je,height:ct,left:Lt,top:Nt,advance:Xt}})}}function dm(k,C,V){k===1?C.id=V.readVarint():k===2?C.bitmap=V.readBytes():k===3?C.width=V.readVarint():k===4?C.height=V.readVarint():k===5?C.left=V.readSVarint():k===6?C.top=V.readSVarint():k===7&&(C.advance=V.readVarint())}function _d(k){return new eo(k).readFields(Pp,[])}var hd=xu;function Wp(k){for(var C=0,V=0,oe=0,_e=k;oe<_e.length;oe+=1){var Pe=_e[oe];C+=Pe.w*Pe.h,V=Math.max(V,Pe.w)}k.sort(function(ii,Wa){return Wa.h-ii.h});for(var je=Math.max(Math.ceil(Math.sqrt(C/.95)),V),ct=[{x:0,y:0,w:je,h:1/0}],Lt=0,Nt=0,Xt=0,gr=k;Xt=0;Rr--){var na=ct[Rr];if(!(Br.w>na.w||Br.h>na.h)){if(Br.x=na.x,Br.y=na.y,Nt=Math.max(Nt,Br.y+Br.h),Lt=Math.max(Lt,Br.x+Br.w),Br.w===na.w&&Br.h===na.h){var Ia=ct.pop();Rr=0&&_e>=C&&bd[this.text.charCodeAt(_e)];_e--)oe--;this.text=this.text.substring(C,oe),this.sectionIndex=this.sectionIndex.slice(C,oe)},rh.prototype.substring=function(C,V){var oe=new rh;return oe.text=this.text.substring(C,V),oe.sectionIndex=this.sectionIndex.slice(C,V),oe.sections=this.sections,oe},rh.prototype.toString=function(){return this.text},rh.prototype.getMaxScale=function(){var C=this;return this.sectionIndex.reduce(function(V,oe){return Math.max(V,C.sections[oe].scale)},0)},rh.prototype.addTextSection=function(C,V){this.text+=C.text,this.sections.push(Ov.forText(C.scale,C.fontStack||V));for(var oe=this.sections.length-1,_e=0;_e=xd?null:++this.imageSectionID:(this.imageSectionID=R0,this.imageSectionID)};function sA(k,C){for(var V=[],oe=k.text,_e=0,Pe=0,je=C;Pe=0,Xt=0,gr=0;gr0&&Cf>lo&&(lo=Cf)}else{var Sl=V[to.fontStack],pl=Sl&&Sl[uo];if(pl&&pl.rect)cs=pl.rect,zs=pl.metrics;else{var bu=C[to.fontStack],Fu=bu&&bu[uo];if(!Fu)continue;zs=Fu.metrics}vo=(Li-to.scale)*Ei}Al?(k.verticalizable=!0,Tn.push({glyph:uo,imageName:Tl,x:Br,y:Rr+vo,vertical:Al,scale:to.scale,fontStack:to.fontStack,sectionIndex:ds,metrics:zs,rect:cs}),Br+=lu*to.scale+Nt):(Tn.push({glyph:uo,imageName:Tl,x:Br,y:Rr+vo,vertical:Al,scale:to.scale,fontStack:to.fontStack,sectionIndex:ds,metrics:zs,rect:cs}),Br+=zs.advance*to.scale+Nt)}if(Tn.length!==0){var Qh=Br-Nt;na=Math.max(Qh,na),fA(Tn,0,Tn.length-1,ii,lo)}Br=0;var ep=Pe*Li+lo;kn.lineOffset=Math.max(lo,Ki),Rr+=ep,Ia=Math.max(ep,Ia),++Wa}var nh=Rr-vm,mp=K1(je),gp=mp.horizontalAlign,jf=mp.verticalAlign;Rh(k.positionedLines,ii,gp,jf,na,Ia,Pe,nh,_e.length),k.top+=-jf*nh,k.bottom=k.top+nh,k.left+=-gp*na,k.right=k.left+na}function fA(k,C,V,oe,_e){if(!(!oe&&!_e))for(var Pe=k[V],je=Pe.metrics.advance*Pe.scale,ct=(k[V].x+je)*oe,Lt=C;Lt<=V;Lt++)k[Lt].x-=ct,k[Lt].y+=_e}function Rh(k,C,V,oe,_e,Pe,je,ct,Lt){var Nt=(C-V)*_e,Xt=0;Pe!==je?Xt=-ct*oe-vm:Xt=(-oe*Lt+.5)*je;for(var gr=0,Br=k;gr-V/2;){if(je--,je<0)return!1;ct-=k[je].dist(Pe),Pe=k[je]}ct+=k[je].dist(k[je+1]),je++;for(var Lt=[],Nt=0;ctoe;)Nt-=Lt.shift().angleDelta;if(Nt>_e)return!1;je++,ct+=gr.dist(Br)}return!0}function vC(k){for(var C=0,V=0;VNt){var na=(Nt-Lt)/Rr,Ia=xl(gr.x,Br.x,na),ii=xl(gr.y,Br.y,na),Wa=new $h(Ia,ii,Br.angleTo(gr),Xt);return Wa._round(),!je||dC(k,Wa,ct,je,C)?Wa:void 0}Lt+=Rr}}function eW(k,C,V,oe,_e,Pe,je,ct,Lt){var Nt=mC(oe,Pe,je),Xt=gC(oe,_e),gr=Xt*je,Br=k[0].x===0||k[0].x===Lt||k[0].y===0||k[0].y===Lt;C-gr=0&&Ai=0&&Li=0&&Br+Nt<=Xt){var Ki=new $h(Ai,Li,Si,na);Ki._round(),(!oe||dC(k,Ki,Pe,oe,_e))&&Rr.push(Ki)}}gr+=Wa}return!ct&&!Rr.length&&!je&&(Rr=yC(k,gr/2,V,oe,_e,Pe,je,!0,Lt)),Rr}function _C(k,C,V,oe,_e){for(var Pe=[],je=0;je=oe&&gr.x>=oe)&&(Xt.x>=oe?Xt=new i(oe,Xt.y+(gr.y-Xt.y)*((oe-Xt.x)/(gr.x-Xt.x)))._round():gr.x>=oe&&(gr=new i(oe,Xt.y+(gr.y-Xt.y)*((oe-Xt.x)/(gr.x-Xt.x)))._round()),!(Xt.y>=_e&&gr.y>=_e)&&(Xt.y>=_e?Xt=new i(Xt.x+(gr.x-Xt.x)*((_e-Xt.y)/(gr.y-Xt.y)),_e)._round():gr.y>=_e&&(gr=new i(Xt.x+(gr.x-Xt.x)*((_e-Xt.y)/(gr.y-Xt.y)),_e)._round()),(!Lt||!Xt.equals(Lt[Lt.length-1]))&&(Lt=[Xt],Pe.push(Lt)),Lt.push(gr)))))}return Pe}var F0=tc;function xC(k,C,V,oe){var _e=[],Pe=k.image,je=Pe.pixelRatio,ct=Pe.paddedRect.w-2*F0,Lt=Pe.paddedRect.h-2*F0,Nt=k.right-k.left,Xt=k.bottom-k.top,gr=Pe.stretchX||[[0,ct]],Br=Pe.stretchY||[[0,Lt]],Rr=function(Sl,pl){return Sl+pl[1]-pl[0]},na=gr.reduce(Rr,0),Ia=Br.reduce(Rr,0),ii=ct-na,Wa=Lt-Ia,Si=0,ci=na,Ai=0,Li=Ia,Ki=0,kn=ii,Tn=0,lo=Wa;if(Pe.content&&oe){var qn=Pe.content;Si=sb(gr,0,qn[0]),Ai=sb(Br,0,qn[1]),ci=sb(gr,qn[0],qn[2]),Li=sb(Br,qn[1],qn[3]),Ki=qn[0]-Si,Tn=qn[1]-Ai,kn=qn[2]-qn[0]-ci,lo=qn[3]-qn[1]-Li}var to=function(Sl,pl,bu,Fu){var Gc=lb(Sl.stretch-Si,ci,Nt,k.left),of=ub(Sl.fixed-Ki,kn,Sl.stretch,na),ih=lb(pl.stretch-Ai,Li,Xt,k.top),Cf=ub(pl.fixed-Tn,lo,pl.stretch,Ia),Qh=lb(bu.stretch-Si,ci,Nt,k.left),ep=ub(bu.fixed-Ki,kn,bu.stretch,na),nh=lb(Fu.stretch-Ai,Li,Xt,k.top),mp=ub(Fu.fixed-Tn,lo,Fu.stretch,Ia),gp=new i(Gc,ih),jf=new i(Qh,ih),yp=new i(Qh,nh),od=new i(Gc,nh),Uv=new i(of/je,Cf/je),ym=new i(ep/je,mp/je),_m=C*Math.PI/180;if(_m){var xm=Math.sin(_m),H0=Math.cos(_m),wd=[H0,-xm,xm,H0];gp._matMult(wd),jf._matMult(wd),od._matMult(wd),yp._matMult(wd)}var vb=Sl.stretch+Sl.fixed,_A=bu.stretch+bu.fixed,mb=pl.stretch+pl.fixed,xA=Fu.stretch+Fu.fixed,pd={x:Pe.paddedRect.x+F0+vb,y:Pe.paddedRect.y+F0+mb,w:_A-vb,h:xA-mb},G0=kn/je/Nt,gb=lo/je/Xt;return{tl:gp,tr:jf,bl:od,br:yp,tex:pd,writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:Uv,pixelOffsetBR:ym,minFontScaleX:G0,minFontScaleY:gb,isSDF:V}};if(!oe||!Pe.stretchX&&!Pe.stretchY)_e.push(to({fixed:0,stretch:-1},{fixed:0,stretch:-1},{fixed:0,stretch:ct+1},{fixed:0,stretch:Lt+1}));else for(var ds=bC(gr,ii,na),uo=bC(Br,Wa,Ia),vo=0;vo0&&(na=Math.max(10,na),this.circleDiameter=na)}else{var Ia=je.top*ct-Lt,ii=je.bottom*ct+Lt,Wa=je.left*ct-Lt,Si=je.right*ct+Lt,ci=je.collisionPadding;if(ci&&(Wa-=ci[0]*ct,Ia-=ci[1]*ct,Si+=ci[2]*ct,ii+=ci[3]*ct),Xt){var Ai=new i(Wa,Ia),Li=new i(Si,Ia),Ki=new i(Wa,ii),kn=new i(Si,ii),Tn=Xt*Math.PI/180;Ai._rotate(Tn),Li._rotate(Tn),Ki._rotate(Tn),kn._rotate(Tn),Wa=Math.min(Ai.x,Li.x,Ki.x,kn.x),Si=Math.max(Ai.x,Li.x,Ki.x,kn.x),Ia=Math.min(Ai.y,Li.y,Ki.y,kn.y),ii=Math.max(Ai.y,Li.y,Ki.y,kn.y)}C.emplaceBack(V.x,V.y,Wa,Ia,Si,ii,oe,_e,Pe)}this.boxEndIndex=C.length},O0=function(C,V){if(C===void 0&&(C=[]),V===void 0&&(V=rW),this.data=C,this.length=this.data.length,this.compare=V,this.length>0)for(var oe=(this.length>>1)-1;oe>=0;oe--)this._down(oe)};O0.prototype.push=function(C){this.data.push(C),this.length++,this._up(this.length-1)},O0.prototype.pop=function(){if(this.length!==0){var C=this.data[0],V=this.data.pop();return this.length--,this.length>0&&(this.data[0]=V,this._down(0)),C}},O0.prototype.peek=function(){return this.data[0]},O0.prototype._up=function(C){for(var V=this,oe=V.data,_e=V.compare,Pe=oe[C];C>0;){var je=C-1>>1,ct=oe[je];if(_e(Pe,ct)>=0)break;oe[C]=ct,C=je}oe[C]=Pe},O0.prototype._down=function(C){for(var V=this,oe=V.data,_e=V.compare,Pe=this.length>>1,je=oe[C];C=0)break;oe[C]=Lt,C=ct}oe[C]=je};function rW(k,C){return kC?1:0}function aW(k,C,V){C===void 0&&(C=1),V===void 0&&(V=!1);for(var oe=1/0,_e=1/0,Pe=-1/0,je=-1/0,ct=k[0],Lt=0;LtPe)&&(Pe=Nt.x),(!Lt||Nt.y>je)&&(je=Nt.y)}var Xt=Pe-oe,gr=je-_e,Br=Math.min(Xt,gr),Rr=Br/2,na=new O0([],iW);if(Br===0)return new i(oe,_e);for(var Ia=oe;IaWa.d||!Wa.d)&&(Wa=ci,V&&console.log("found best %d after %d probes",Math.round(1e4*ci.d)/1e4,Si)),!(ci.max-Wa.d<=C)&&(Rr=ci.h/2,na.push(new B0(ci.p.x-Rr,ci.p.y-Rr,Rr,k)),na.push(new B0(ci.p.x+Rr,ci.p.y-Rr,Rr,k)),na.push(new B0(ci.p.x-Rr,ci.p.y+Rr,Rr,k)),na.push(new B0(ci.p.x+Rr,ci.p.y+Rr,Rr,k)),Si+=4)}return V&&(console.log("num probes: "+Si),console.log("best distance: "+Wa.d)),Wa.p}function iW(k,C){return C.max-k.max}function B0(k,C,V,oe){this.p=new i(k,C),this.h=V,this.d=nW(this.p,oe),this.max=this.d+this.h*Math.SQRT2}function nW(k,C){for(var V=!1,oe=1/0,_e=0;_ek.y!=Xt.y>k.y&&k.x<(Xt.x-Nt.x)*(k.y-Nt.y)/(Xt.y-Nt.y)+Nt.x&&(V=!V),oe=Math.min(oe,Vd(k,Nt,Xt))}return(V?1:-1)*Math.sqrt(oe)}function oW(k){for(var C=0,V=0,oe=0,_e=k[0],Pe=0,je=_e.length,ct=je-1;Pe=Ii||wd.y<0||wd.y>=Ii||uW(k,wd,H0,V,oe,_e,uo,k.layers[0],k.collisionBoxArray,C.index,C.sourceLayerIndex,k.index,Wa,Li,Tn,Lt,ci,Ki,lo,Rr,C,Pe,Nt,Xt,je)};if(qn==="line")for(var zs=0,cs=_C(C.geometry,0,0,Ii,Ii);zs1){var ih=QG(of,kn,V.vertical||na,oe,Ia,Si);ih&&vo(of,ih)}}else if(C.type==="Polygon")for(var Cf=0,Qh=E0(C.geometry,0);Cfmm&&U(k.layerIds[0]+': Value for "text-size" is >= '+J1+'. Reduce your "text-size".')):ii.kind==="composite"&&(Wa=[Dh*Rr.compositeTextSizes[0].evaluate(je,{},na),Dh*Rr.compositeTextSizes[1].evaluate(je,{},na)],(Wa[0]>mm||Wa[1]>mm)&&U(k.layerIds[0]+': Value for "text-size" is >= '+J1+'. Reduce your "text-size".')),k.addSymbols(k.text,Ia,Wa,ct,Pe,je,Nt,C,Lt.lineStartIndex,Lt.lineLength,Br,na);for(var Si=0,ci=Xt;Simm&&U(k.layerIds[0]+': Value for "icon-size" is >= '+J1+'. Reduce your "icon-size".')):gp.kind==="composite"&&(jf=[Dh*Li.compositeIconSizes[0].evaluate(Ai,{},kn),Dh*Li.compositeIconSizes[1].evaluate(Ai,{},kn)],(jf[0]>mm||jf[1]>mm)&&U(k.layerIds[0]+': Value for "icon-size" is >= '+J1+'. Reduce your "icon-size".')),k.addSymbols(k.icon,nh,jf,ci,Si,Ai,!1,C,qn.lineStartIndex,qn.lineLength,-1,kn),Al=k.icon.placedSymbolArray.length-1,mp&&(cs=mp.length*4,k.addSymbols(k.icon,mp,jf,ci,Si,Ai,dp.vertical,C,qn.lineStartIndex,qn.lineLength,-1,kn),Sl=k.icon.placedSymbolArray.length-1)}for(var yp in oe.horizontal){var od=oe.horizontal[yp];if(!to){bu=xe(od.text);var Uv=ct.layout.get("text-rotate").evaluate(Ai,{},kn);to=new cb(Lt,C,Nt,Xt,gr,od,Br,Rr,na,Uv)}var ym=od.positionedLines.length===1;if(Tl+=TC(k,C,od,Pe,ct,na,Ai,Ia,qn,oe.vertical?dp.horizontal:dp.horizontalOnly,ym?Object.keys(oe.horizontal):[yp],pl,Al,Li,kn),ym)break}oe.vertical&&(lu+=TC(k,C,oe.vertical,Pe,ct,na,Ai,Ia,qn,dp.vertical,["vertical"],pl,Sl,Li,kn));var _m=to?to.boxStartIndex:k.collisionBoxArray.length,xm=to?to.boxEndIndex:k.collisionBoxArray.length,H0=uo?uo.boxStartIndex:k.collisionBoxArray.length,wd=uo?uo.boxEndIndex:k.collisionBoxArray.length,vb=ds?ds.boxStartIndex:k.collisionBoxArray.length,_A=ds?ds.boxEndIndex:k.collisionBoxArray.length,mb=vo?vo.boxStartIndex:k.collisionBoxArray.length,xA=vo?vo.boxEndIndex:k.collisionBoxArray.length,pd=-1,G0=function(e_,UC){return e_&&e_.circleDiameter?Math.max(e_.circleDiameter,UC):UC};pd=G0(to,pd),pd=G0(uo,pd),pd=G0(ds,pd),pd=G0(vo,pd);var gb=pd>-1?1:0;gb&&(pd*=Tn/Ei),k.glyphOffsetArray.length>=su.MAX_GLYPHS&&U("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),Ai.sortKey!==void 0&&k.addToSortKeyRanges(k.symbolInstances.length,Ai.sortKey),k.symbolInstances.emplaceBack(C.x,C.y,pl.right>=0?pl.right:-1,pl.center>=0?pl.center:-1,pl.left>=0?pl.left:-1,pl.vertical||-1,Al,Sl,bu,_m,xm,H0,wd,vb,_A,mb,xA,Nt,Tl,lu,zs,cs,gb,0,Br,Fu,Gc,pd)}function cW(k,C,V,oe){var _e=k.compareText;if(!(C in _e))_e[C]=[];else for(var Pe=_e[C],je=Pe.length-1;je>=0;je--)if(oe.dist(Pe[je])0)&&(je.value.kind!=="constant"||je.value.value.length>0),Xt=Lt.value.kind!=="constant"||!!Lt.value.value||Object.keys(Lt.parameters).length>0,gr=Pe.get("symbol-sort-key");if(this.features=[],!(!Nt&&!Xt)){for(var Br=V.iconDependencies,Rr=V.glyphDependencies,na=V.availableImages,Ia=new Vi(this.zoom),ii=0,Wa=C;ii=0;for(var lu=0,Al=lo.sections;lu=0;Lt--)je[Lt]={x:V[Lt].x,y:V[Lt].y,tileUnitDistanceFromAnchor:Pe},Lt>0&&(Pe+=V[Lt-1].dist(V[Lt]));for(var Nt=0;Nt0},su.prototype.hasIconData=function(){return this.icon.segments.get().length>0},su.prototype.hasDebugData=function(){return this.textCollisionBox&&this.iconCollisionBox},su.prototype.hasTextCollisionBoxData=function(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0},su.prototype.hasIconCollisionBoxData=function(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0},su.prototype.addIndicesForPlacedSymbol=function(C,V){for(var oe=C.placedSymbolArray.get(V),_e=oe.vertexStartIndex+oe.numGlyphs*4,Pe=oe.vertexStartIndex;Pe<_e;Pe+=4)C.indexArray.emplaceBack(Pe,Pe+1,Pe+2),C.indexArray.emplaceBack(Pe+1,Pe+2,Pe+3)},su.prototype.getSortedSymbolIndexes=function(C){if(this.sortedAngle===C&&this.symbolInstanceIndexes!==void 0)return this.symbolInstanceIndexes;for(var V=Math.sin(C),oe=Math.cos(C),_e=[],Pe=[],je=[],ct=0;ct1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(C),this.sortedAngle=C,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(var oe=0,_e=this.symbolInstanceIndexes;oe<_e.length;oe+=1){var Pe=_e[oe],je=this.symbolInstances.get(Pe);this.featureSortOrder.push(je.featureIndex),[je.rightJustifiedTextSymbolIndex,je.centerJustifiedTextSymbolIndex,je.leftJustifiedTextSymbolIndex].forEach(function(ct,Lt,Nt){ct>=0&&Nt.indexOf(ct)===Lt&&V.addIndicesForPlacedSymbol(V.text,ct)}),je.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,je.verticalPlacedTextSymbolIndex),je.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,je.placedIconSymbolIndex),je.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,je.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}},de("SymbolBucket",su,{omit:["layers","collisionBoxArray","features","compareText"]}),su.MAX_GLYPHS=65535,su.addDynamicAttributes=dA;function dW(k,C){return C.replace(/{([^{}]+)}/g,function(V,oe){return oe in k?String(k[oe]):""})}var vW=new xi({"symbol-placement":new Qt(fi.layout_symbol["symbol-placement"]),"symbol-spacing":new Qt(fi.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new Qt(fi.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new ra(fi.layout_symbol["symbol-sort-key"]),"symbol-z-order":new Qt(fi.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new Qt(fi.layout_symbol["icon-allow-overlap"]),"icon-ignore-placement":new Qt(fi.layout_symbol["icon-ignore-placement"]),"icon-optional":new Qt(fi.layout_symbol["icon-optional"]),"icon-rotation-alignment":new Qt(fi.layout_symbol["icon-rotation-alignment"]),"icon-size":new ra(fi.layout_symbol["icon-size"]),"icon-text-fit":new Qt(fi.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new Qt(fi.layout_symbol["icon-text-fit-padding"]),"icon-image":new ra(fi.layout_symbol["icon-image"]),"icon-rotate":new ra(fi.layout_symbol["icon-rotate"]),"icon-padding":new Qt(fi.layout_symbol["icon-padding"]),"icon-keep-upright":new Qt(fi.layout_symbol["icon-keep-upright"]),"icon-offset":new ra(fi.layout_symbol["icon-offset"]),"icon-anchor":new ra(fi.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new Qt(fi.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new Qt(fi.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new Qt(fi.layout_symbol["text-rotation-alignment"]),"text-field":new ra(fi.layout_symbol["text-field"]),"text-font":new ra(fi.layout_symbol["text-font"]),"text-size":new ra(fi.layout_symbol["text-size"]),"text-max-width":new ra(fi.layout_symbol["text-max-width"]),"text-line-height":new Qt(fi.layout_symbol["text-line-height"]),"text-letter-spacing":new ra(fi.layout_symbol["text-letter-spacing"]),"text-justify":new ra(fi.layout_symbol["text-justify"]),"text-radial-offset":new ra(fi.layout_symbol["text-radial-offset"]),"text-variable-anchor":new Qt(fi.layout_symbol["text-variable-anchor"]),"text-anchor":new ra(fi.layout_symbol["text-anchor"]),"text-max-angle":new Qt(fi.layout_symbol["text-max-angle"]),"text-writing-mode":new Qt(fi.layout_symbol["text-writing-mode"]),"text-rotate":new ra(fi.layout_symbol["text-rotate"]),"text-padding":new Qt(fi.layout_symbol["text-padding"]),"text-keep-upright":new Qt(fi.layout_symbol["text-keep-upright"]),"text-transform":new ra(fi.layout_symbol["text-transform"]),"text-offset":new ra(fi.layout_symbol["text-offset"]),"text-allow-overlap":new Qt(fi.layout_symbol["text-allow-overlap"]),"text-ignore-placement":new Qt(fi.layout_symbol["text-ignore-placement"]),"text-optional":new Qt(fi.layout_symbol["text-optional"])}),mW=new xi({"icon-opacity":new ra(fi.paint_symbol["icon-opacity"]),"icon-color":new ra(fi.paint_symbol["icon-color"]),"icon-halo-color":new ra(fi.paint_symbol["icon-halo-color"]),"icon-halo-width":new ra(fi.paint_symbol["icon-halo-width"]),"icon-halo-blur":new ra(fi.paint_symbol["icon-halo-blur"]),"icon-translate":new Qt(fi.paint_symbol["icon-translate"]),"icon-translate-anchor":new Qt(fi.paint_symbol["icon-translate-anchor"]),"text-opacity":new ra(fi.paint_symbol["text-opacity"]),"text-color":new ra(fi.paint_symbol["text-color"],{runtimeType:_s,getOverride:function(k){return k.textColor},hasOverride:function(k){return!!k.textColor}}),"text-halo-color":new ra(fi.paint_symbol["text-halo-color"]),"text-halo-width":new ra(fi.paint_symbol["text-halo-width"]),"text-halo-blur":new ra(fi.paint_symbol["text-halo-blur"]),"text-translate":new Qt(fi.paint_symbol["text-translate"]),"text-translate-anchor":new Qt(fi.paint_symbol["text-translate-anchor"])}),vA={paint:mW,layout:vW},j0=function(C){this.type=C.property.overrides?C.property.overrides.runtimeType:vl,this.defaultValue=C};j0.prototype.evaluate=function(C){if(C.formattedSection){var V=this.defaultValue.property.overrides;if(V&&V.hasOverride(C.formattedSection))return V.getOverride(C.formattedSection)}return C.feature&&C.featureState?this.defaultValue.evaluate(C.feature,C.featureState):this.defaultValue.property.specification.default},j0.prototype.eachChild=function(C){if(!this.defaultValue.isConstant()){var V=this.defaultValue.value;C(V._styleExpression.expression)}},j0.prototype.outputDefined=function(){return!1},j0.prototype.serialize=function(){return null},de("FormatSectionOverride",j0,{omit:["defaultValue"]});var gW=function(k){function C(V){k.call(this,V,vA)}return k&&(C.__proto__=k),C.prototype=Object.create(k&&k.prototype),C.prototype.constructor=C,C.prototype.recalculate=function(oe,_e){if(k.prototype.recalculate.call(this,oe,_e),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["icon-rotation-alignment"]="map":this.layout._values["icon-rotation-alignment"]="viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout.get("symbol-placement")!=="point"?this.layout._values["text-rotation-alignment"]="map":this.layout._values["text-rotation-alignment"]="viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){var Pe=this.layout.get("text-writing-mode");if(Pe){for(var je=[],ct=0,Lt=Pe;ct",targetMapId:_e,sourceMapId:je.mapId})}}},V0.prototype.receive=function(C){var V=C.data,oe=V.id;if(oe&&!(V.targetMapId&&this.mapId!==V.targetMapId))if(V.type===""){delete this.tasks[oe];var _e=this.cancelCallbacks[oe];delete this.cancelCallbacks[oe],_e&&_e()}else se()||V.mustQueue?(this.tasks[oe]=V,this.taskQueue.push(oe),this.invoker.trigger()):this.processTask(oe,V)},V0.prototype.process=function(){if(this.taskQueue.length){var C=this.taskQueue.shift(),V=this.tasks[C];delete this.tasks[C],this.taskQueue.length&&this.invoker.trigger(),V&&this.processTask(C,V)}},V0.prototype.processTask=function(C,V){var oe=this;if(V.type===""){var _e=this.callbacks[C];delete this.callbacks[C],_e&&(V.error?_e(wt(V.error)):_e(null,wt(V.data)))}else{var Pe=!1,je=$(this.globalScope)?void 0:[],ct=V.hasCallback?function(Br,Rr){Pe=!0,delete oe.cancelCallbacks[C],oe.target.postMessage({id:C,type:"",sourceMapId:oe.mapId,error:Br?vt(Br):null,data:vt(Rr,je)},je)}:function(Br){Pe=!0},Lt=null,Nt=wt(V.data);if(this.parent[V.type])Lt=this.parent[V.type](V.sourceMapId,Nt,ct);else if(this.parent.getWorkerSource){var Xt=V.type.split("."),gr=this.parent.getWorkerSource(V.sourceMapId,Xt[0],Nt.source);Lt=gr[Xt[1]](Nt,ct)}else ct(new Error("Could not find function "+V.type));!Pe&&Lt&&Lt.cancel&&(this.cancelCallbacks[C]=Lt.cancel)}},V0.prototype.remove=function(){this.invoker.remove(),this.target.removeEventListener("message",this.receive,!1)};function kW(k,C,V){C=Math.pow(2,V)-C-1;var oe=CC(k*256,C*256,V),_e=CC((k+1)*256,(C+1)*256,V);return oe[0]+","+oe[1]+","+_e[0]+","+_e[1]}function CC(k,C,V){var oe=2*Math.PI*6378137/256/Math.pow(2,V),_e=k*oe-2*Math.PI*6378137/2,Pe=C*oe-2*Math.PI*6378137/2;return[_e,Pe]}var Ef=function(C,V){C&&(V?this.setSouthWest(C).setNorthEast(V):C.length===4?this.setSouthWest([C[0],C[1]]).setNorthEast([C[2],C[3]]):this.setSouthWest(C[0]).setNorthEast(C[1]))};Ef.prototype.setNorthEast=function(C){return this._ne=C instanceof rc?new rc(C.lng,C.lat):rc.convert(C),this},Ef.prototype.setSouthWest=function(C){return this._sw=C instanceof rc?new rc(C.lng,C.lat):rc.convert(C),this},Ef.prototype.extend=function(C){var V=this._sw,oe=this._ne,_e,Pe;if(C instanceof rc)_e=C,Pe=C;else if(C instanceof Ef){if(_e=C._sw,Pe=C._ne,!_e||!Pe)return this}else{if(Array.isArray(C))if(C.length===4||C.every(Array.isArray)){var je=C;return this.extend(Ef.convert(je))}else{var ct=C;return this.extend(rc.convert(ct))}return this}return!V&&!oe?(this._sw=new rc(_e.lng,_e.lat),this._ne=new rc(Pe.lng,Pe.lat)):(V.lng=Math.min(_e.lng,V.lng),V.lat=Math.min(_e.lat,V.lat),oe.lng=Math.max(Pe.lng,oe.lng),oe.lat=Math.max(Pe.lat,oe.lat)),this},Ef.prototype.getCenter=function(){return new rc((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)},Ef.prototype.getSouthWest=function(){return this._sw},Ef.prototype.getNorthEast=function(){return this._ne},Ef.prototype.getNorthWest=function(){return new rc(this.getWest(),this.getNorth())},Ef.prototype.getSouthEast=function(){return new rc(this.getEast(),this.getSouth())},Ef.prototype.getWest=function(){return this._sw.lng},Ef.prototype.getSouth=function(){return this._sw.lat},Ef.prototype.getEast=function(){return this._ne.lng},Ef.prototype.getNorth=function(){return this._ne.lat},Ef.prototype.toArray=function(){return[this._sw.toArray(),this._ne.toArray()]},Ef.prototype.toString=function(){return"LngLatBounds("+this._sw.toString()+", "+this._ne.toString()+")"},Ef.prototype.isEmpty=function(){return!(this._sw&&this._ne)},Ef.prototype.contains=function(C){var V=rc.convert(C),oe=V.lng,_e=V.lat,Pe=this._sw.lat<=_e&&_e<=this._ne.lat,je=this._sw.lng<=oe&&oe<=this._ne.lng;return this._sw.lng>this._ne.lng&&(je=this._sw.lng>=oe&&oe>=this._ne.lng),Pe&&je},Ef.convert=function(C){return!C||C instanceof Ef?C:new Ef(C)};var LC=63710088e-1,rc=function(C,V){if(isNaN(C)||isNaN(V))throw new Error("Invalid LngLat object: ("+C+", "+V+")");if(this.lng=+C,this.lat=+V,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")};rc.prototype.wrap=function(){return new rc(_(this.lng,-180,180),this.lat)},rc.prototype.toArray=function(){return[this.lng,this.lat]},rc.prototype.toString=function(){return"LngLat("+this.lng+", "+this.lat+")"},rc.prototype.distanceTo=function(C){var V=Math.PI/180,oe=this.lat*V,_e=C.lat*V,Pe=Math.sin(oe)*Math.sin(_e)+Math.cos(oe)*Math.cos(_e)*Math.cos((C.lng-this.lng)*V),je=LC*Math.acos(Math.min(Pe,1));return je},rc.prototype.toBounds=function(C){C===void 0&&(C=0);var V=40075017,oe=360*C/V,_e=oe/Math.cos(Math.PI/180*this.lat);return new Ef(new rc(this.lng-_e,this.lat-oe),new rc(this.lng+_e,this.lat+oe))},rc.convert=function(C){if(C instanceof rc)return C;if(Array.isArray(C)&&(C.length===2||C.length===3))return new rc(Number(C[0]),Number(C[1]));if(!Array.isArray(C)&&typeof C=="object"&&C!==null)return new rc(Number("lng"in C?C.lng:C.lon),Number(C.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")};var PC=2*Math.PI*LC;function IC(k){return PC*Math.cos(k*Math.PI/180)}function RC(k){return(180+k)/360}function DC(k){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+k*Math.PI/360)))/360}function zC(k,C){return k/IC(C)}function CW(k){return k*360-180}function gA(k){var C=180-k*360;return 360/Math.PI*Math.atan(Math.exp(C*Math.PI/180))-90}function LW(k,C){return k*IC(gA(C))}function PW(k){return 1/Math.cos(k*Math.PI/180)}var Bg=function(C,V,oe){oe===void 0&&(oe=0),this.x=+C,this.y=+V,this.z=+oe};Bg.fromLngLat=function(C,V){V===void 0&&(V=0);var oe=rc.convert(C);return new Bg(RC(oe.lng),DC(oe.lat),zC(V,oe.lat))},Bg.prototype.toLngLat=function(){return new rc(CW(this.x),gA(this.y))},Bg.prototype.toAltitude=function(){return LW(this.z,this.y)},Bg.prototype.meterInMercatorCoordinateUnits=function(){return 1/PC*PW(gA(this.y))};var Ng=function(C,V,oe){this.z=C,this.x=V,this.y=oe,this.key=Q1(0,C,C,V,oe)};Ng.prototype.equals=function(C){return this.z===C.z&&this.x===C.x&&this.y===C.y},Ng.prototype.url=function(C,V){var oe=kW(this.x,this.y,this.z),_e=IW(this.z,this.x,this.y);return C[(this.x+this.y)%C.length].replace("{prefix}",(this.x%16).toString(16)+(this.y%16).toString(16)).replace("{z}",String(this.z)).replace("{x}",String(this.x)).replace("{y}",String(V==="tms"?Math.pow(2,this.z)-this.y-1:this.y)).replace("{quadkey}",_e).replace("{bbox-epsg-3857}",oe)},Ng.prototype.getTilePoint=function(C){var V=Math.pow(2,this.z);return new i((C.x*V-this.x)*Ii,(C.y*V-this.y)*Ii)},Ng.prototype.toString=function(){return this.z+"/"+this.x+"/"+this.y};var FC=function(C,V){this.wrap=C,this.canonical=V,this.key=Q1(C,V.z,V.z,V.x,V.y)},kf=function(C,V,oe,_e,Pe){this.overscaledZ=C,this.wrap=V,this.canonical=new Ng(oe,+_e,+Pe),this.key=Q1(V,C,oe,_e,Pe)};kf.prototype.equals=function(C){return this.overscaledZ===C.overscaledZ&&this.wrap===C.wrap&&this.canonical.equals(C.canonical)},kf.prototype.scaledTo=function(C){var V=this.canonical.z-C;return C>this.canonical.z?new kf(C,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new kf(C,this.wrap,C,this.canonical.x>>V,this.canonical.y>>V)},kf.prototype.calculateScaledKey=function(C,V){var oe=this.canonical.z-C;return C>this.canonical.z?Q1(this.wrap*+V,C,this.canonical.z,this.canonical.x,this.canonical.y):Q1(this.wrap*+V,C,C,this.canonical.x>>oe,this.canonical.y>>oe)},kf.prototype.isChildOf=function(C){if(C.wrap!==this.wrap)return!1;var V=this.canonical.z-C.canonical.z;return C.overscaledZ===0||C.overscaledZ>V&&C.canonical.y===this.canonical.y>>V},kf.prototype.children=function(C){if(this.overscaledZ>=C)return[new kf(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];var V=this.canonical.z+1,oe=this.canonical.x*2,_e=this.canonical.y*2;return[new kf(V,this.wrap,V,oe,_e),new kf(V,this.wrap,V,oe+1,_e),new kf(V,this.wrap,V,oe,_e+1),new kf(V,this.wrap,V,oe+1,_e+1)]},kf.prototype.isLessThan=function(C){return this.wrapC.wrap?!1:this.overscaledZC.overscaledZ?!1:this.canonical.xC.canonical.x?!1:this.canonical.y0;Pe--)_e=1<=this.dim+1||V<-1||V>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(V+1)*this.stride+(C+1)},Bv.prototype._unpackMapbox=function(C,V,oe){return(C*256*256+V*256+oe)/10-1e4},Bv.prototype._unpackTerrarium=function(C,V,oe){return C*256+V+oe/256-32768},Bv.prototype.getPixels=function(){return new Of({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))},Bv.prototype.backfillBorder=function(C,V,oe){if(this.dim!==C.dim)throw new Error("dem dimension mismatch");var _e=V*this.dim,Pe=V*this.dim+this.dim,je=oe*this.dim,ct=oe*this.dim+this.dim;switch(V){case-1:_e=Pe-1;break;case 1:Pe=_e+1;break}switch(oe){case-1:je=ct-1;break;case 1:ct=je+1;break}for(var Lt=-V*this.dim,Nt=-oe*this.dim,Xt=je;Xt=0&&gr[3]>=0&&Lt.insert(ct,gr[0],gr[1],gr[2],gr[3])}},Nv.prototype.loadVTLayers=function(){return this.vtLayers||(this.vtLayers=new Zd.VectorTile(new eo(this.rawTileData)).layers,this.sourceLayerCoder=new pb(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers},Nv.prototype.query=function(C,V,oe,_e){var Pe=this;this.loadVTLayers();for(var je=C.params||{},ct=Ii/C.tileSize/C.scale,Lt=Je(je.filter),Nt=C.queryGeometry,Xt=C.queryPadding*ct,gr=BC(Nt),Br=this.grid.query(gr.minX-Xt,gr.minY-Xt,gr.maxX+Xt,gr.maxY+Xt),Rr=BC(C.cameraQueryGeometry),na=this.grid3D.query(Rr.minX-Xt,Rr.minY-Xt,Rr.maxX+Xt,Rr.maxY+Xt,function(Ki,kn,Tn,lo){return rd(C.cameraQueryGeometry,Ki-Xt,kn-Xt,Tn+Xt,lo+Xt)}),Ia=0,ii=na;Ia_e)Pe=!1;else if(!V)Pe=!0;else if(this.expirationTime=Jr.maxzoom)&&Jr.visibility!=="none"){c(Lr,this.zoom,Ut);var oa=Fa[Jr.id]=Jr.createBucket({index:Ea.bucketLayerIDs.length,layers:Lr,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:gt,sourceID:this.source});oa.populate(Er,qa,this.tileID.canonical),Ea.bucketLayerIDs.push(Lr.map(function(da){return da.id}))}}}}var ca,kt,ir,mr,$r=e.mapObject(qa.glyphDependencies,function(da){return Object.keys(da).map(Number)});Object.keys($r).length?xr.send("getGlyphs",{uid:this.uid,stacks:$r},function(da,Sa){ca||(ca=da,kt=Sa,Ca.call(pa))}):kt={};var ma=Object.keys(qa.iconDependencies);ma.length?xr.send("getImages",{icons:ma,source:this.source,tileID:this.tileID,type:"icons"},function(da,Sa){ca||(ca=da,ir=Sa,Ca.call(pa))}):ir={};var Ba=Object.keys(qa.patternDependencies);Ba.length?xr.send("getImages",{icons:Ba,source:this.source,tileID:this.tileID,type:"patterns"},function(da,Sa){ca||(ca=da,mr=Sa,Ca.call(pa))}):mr={},Ca.call(this);function Ca(){if(ca)return Zr(ca);if(kt&&ir&&mr){var da=new n(kt),Sa=new e.ImageAtlas(ir,mr);for(var Ti in Fa){var ai=Fa[Ti];ai instanceof e.SymbolBucket?(c(ai.layers,this.zoom,Ut),e.performSymbolLayout(ai,kt,da.positions,ir,Sa.iconPositions,this.showCollisionBoxes,this.tileID.canonical)):ai.hasPattern&&(ai instanceof e.LineBucket||ai instanceof e.FillBucket||ai instanceof e.FillExtrusionBucket)&&(c(ai.layers,this.zoom,Ut),ai.addFeatures(qa,this.tileID.canonical,Sa.patternPositions))}this.status="done",Zr(null,{buckets:e.values(Fa).filter(function(an){return!an.isEmpty()}),featureIndex:Ea,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:da.image,imageAtlas:Sa,glyphMap:this.returnDependencies?kt:null,iconMap:this.returnDependencies?ir:null,glyphPositions:this.returnDependencies?da.positions:null})}}};function c(Wt,zt,Vt){for(var Ut=new e.EvaluationParameters(zt),xr=0,Zr=Wt;xr=0!=!!zt&&Wt.reverse()}var E=e.vectorTile.VectorTileFeature.prototype.toGeoJSON,m=function(zt){this._feature=zt,this.extent=e.EXTENT,this.type=zt.type,this.properties=zt.tags,"id"in zt&&!isNaN(zt.id)&&(this.id=parseInt(zt.id,10))};m.prototype.loadGeometry=function(){if(this._feature.type===1){for(var zt=[],Vt=0,Ut=this._feature.geometry;Vt"u"&&(Ut.push(Xr),Ea=Ut.length-1,Zr[Xr]=Ea),zt.writeVarint(Ea);var Fa=Vt.properties[Xr],qa=typeof Fa;qa!=="string"&&qa!=="boolean"&&qa!=="number"&&(Fa=JSON.stringify(Fa));var ya=qa+":"+Fa,$a=pa[ya];typeof $a>"u"&&(xr.push(Fa),$a=xr.length-1,pa[ya]=$a),zt.writeVarint($a)}}function Q(Wt,zt){return(zt<<3)+(Wt&7)}function ue(Wt){return Wt<<1^Wt>>31}function se(Wt,zt){for(var Vt=Wt.loadGeometry(),Ut=Wt.type,xr=0,Zr=0,pa=Vt.length,Xr=0;Xr>1;$(Wt,zt,pa,Ut,xr,Zr%2),G(Wt,zt,Vt,Ut,pa-1,Zr+1),G(Wt,zt,Vt,pa+1,xr,Zr+1)}}function $(Wt,zt,Vt,Ut,xr,Zr){for(;xr>Ut;){if(xr-Ut>600){var pa=xr-Ut+1,Xr=Vt-Ut+1,Ea=Math.log(pa),Fa=.5*Math.exp(2*Ea/3),qa=.5*Math.sqrt(Ea*Fa*(pa-Fa)/pa)*(Xr-pa/2<0?-1:1),ya=Math.max(Ut,Math.floor(Vt-Xr*Fa/pa+qa)),$a=Math.min(xr,Math.floor(Vt+(pa-Xr)*Fa/pa+qa));$(Wt,zt,Vt,ya,$a,Zr)}var mt=zt[2*Vt+Zr],gt=Ut,Er=xr;for(J(Wt,zt,Ut,Vt),zt[2*xr+Zr]>mt&&J(Wt,zt,Ut,xr);gtmt;)Er--}zt[2*Ut+Zr]===mt?J(Wt,zt,Ut,Er):(Er++,J(Wt,zt,Er,xr)),Er<=Vt&&(Ut=Er+1),Vt<=Er&&(xr=Er-1)}}function J(Wt,zt,Vt,Ut){Z(Wt,Vt,Ut),Z(zt,2*Vt,2*Ut),Z(zt,2*Vt+1,2*Ut+1)}function Z(Wt,zt,Vt){var Ut=Wt[zt];Wt[zt]=Wt[Vt],Wt[Vt]=Ut}function re(Wt,zt,Vt,Ut,xr,Zr,pa){for(var Xr=[0,Wt.length-1,0],Ea=[],Fa,qa;Xr.length;){var ya=Xr.pop(),$a=Xr.pop(),mt=Xr.pop();if($a-mt<=pa){for(var gt=mt;gt<=$a;gt++)Fa=zt[2*gt],qa=zt[2*gt+1],Fa>=Vt&&Fa<=xr&&qa>=Ut&&qa<=Zr&&Ea.push(Wt[gt]);continue}var Er=Math.floor((mt+$a)/2);Fa=zt[2*Er],qa=zt[2*Er+1],Fa>=Vt&&Fa<=xr&&qa>=Ut&&qa<=Zr&&Ea.push(Wt[Er]);var kr=(ya+1)%2;(ya===0?Vt<=Fa:Ut<=qa)&&(Xr.push(mt),Xr.push(Er-1),Xr.push(kr)),(ya===0?xr>=Fa:Zr>=qa)&&(Xr.push(Er+1),Xr.push($a),Xr.push(kr))}return Ea}function ne(Wt,zt,Vt,Ut,xr,Zr){for(var pa=[0,Wt.length-1,0],Xr=[],Ea=xr*xr;pa.length;){var Fa=pa.pop(),qa=pa.pop(),ya=pa.pop();if(qa-ya<=Zr){for(var $a=ya;$a<=qa;$a++)j(zt[2*$a],zt[2*$a+1],Vt,Ut)<=Ea&&Xr.push(Wt[$a]);continue}var mt=Math.floor((ya+qa)/2),gt=zt[2*mt],Er=zt[2*mt+1];j(gt,Er,Vt,Ut)<=Ea&&Xr.push(Wt[mt]);var kr=(Fa+1)%2;(Fa===0?Vt-xr<=gt:Ut-xr<=Er)&&(pa.push(ya),pa.push(mt-1),pa.push(kr)),(Fa===0?Vt+xr>=gt:Ut+xr>=Er)&&(pa.push(mt+1),pa.push(qa),pa.push(kr))}return Xr}function j(Wt,zt,Vt,Ut){var xr=Wt-Vt,Zr=zt-Ut;return xr*xr+Zr*Zr}var ee=function(Wt){return Wt[0]},ie=function(Wt){return Wt[1]},fe=function(zt,Vt,Ut,xr,Zr){Vt===void 0&&(Vt=ee),Ut===void 0&&(Ut=ie),xr===void 0&&(xr=64),Zr===void 0&&(Zr=Float64Array),this.nodeSize=xr,this.points=zt;for(var pa=zt.length<65536?Uint16Array:Uint32Array,Xr=this.ids=new pa(zt.length),Ea=this.coords=new Zr(zt.length*2),Fa=0;Fa=xr;qa--){var ya=+Date.now();Ea=this._cluster(Ea,qa),this.trees[qa]=new fe(Ea,ce,ze,pa,Float32Array),Ut&&console.log("z%d: %d clusters in %dms",qa,Ea.length,+Date.now()-ya)}return Ut&&console.timeEnd("total time"),this},Ae.prototype.getClusters=function(zt,Vt){var Ut=((zt[0]+180)%360+360)%360-180,xr=Math.max(-90,Math.min(90,zt[1])),Zr=zt[2]===180?180:((zt[2]+180)%360+360)%360-180,pa=Math.max(-90,Math.min(90,zt[3]));if(zt[2]-zt[0]>=360)Ut=-180,Zr=180;else if(Ut>Zr){var Xr=this.getClusters([Ut,xr,180,pa],Vt),Ea=this.getClusters([-180,xr,Zr,pa],Vt);return Xr.concat(Ea)}for(var Fa=this.trees[this._limitZoom(Vt)],qa=Fa.range(it(Ut),et(pa),it(Zr),et(xr)),ya=[],$a=0,mt=qa;$aVt&&(Er+=Mr.numPoints||1)}if(Er>=Ea){for(var Fr=ya.x*gt,Lr=ya.y*gt,Jr=Xr&>>1?this._map(ya,!0):null,oa=(qa<<5)+(Vt+1)+this.points.length,ca=0,kt=mt;ca1)for(var ma=0,Ba=mt;ma>5},Ae.prototype._getOriginZoom=function(zt){return(zt-this.points.length)%32},Ae.prototype._map=function(zt,Vt){if(zt.numPoints)return Vt?ge({},zt.properties):zt.properties;var Ut=this.points[zt.index].properties,xr=this.options.map(Ut);return Vt&&xr===Ut?ge({},xr):xr};function Be(Wt,zt,Vt,Ut,xr){return{x:Wt,y:zt,zoom:1/0,id:Vt,parentId:-1,numPoints:Ut,properties:xr}}function Ie(Wt,zt){var Vt=Wt.geometry.coordinates,Ut=Vt[0],xr=Vt[1];return{x:it(Ut),y:et(xr),zoom:1/0,index:zt,parentId:-1}}function Ze(Wt){return{type:"Feature",id:Wt.id,properties:at(Wt),geometry:{type:"Point",coordinates:[lt(Wt.x),Me(Wt.y)]}}}function at(Wt){var zt=Wt.numPoints,Vt=zt>=1e4?Math.round(zt/1e3)+"k":zt>=1e3?Math.round(zt/100)/10+"k":zt;return ge(ge({},Wt.properties),{cluster:!0,cluster_id:Wt.id,point_count:zt,point_count_abbreviated:Vt})}function it(Wt){return Wt/360+.5}function et(Wt){var zt=Math.sin(Wt*Math.PI/180),Vt=.5-.25*Math.log((1+zt)/(1-zt))/Math.PI;return Vt<0?0:Vt>1?1:Vt}function lt(Wt){return(Wt-.5)*360}function Me(Wt){var zt=(180-Wt*360)*Math.PI/180;return 360*Math.atan(Math.exp(zt))/Math.PI-90}function ge(Wt,zt){for(var Vt in zt)Wt[Vt]=zt[Vt];return Wt}function ce(Wt){return Wt.x}function ze(Wt){return Wt.y}function tt(Wt,zt,Vt,Ut){for(var xr=Ut,Zr=Vt-zt>>1,pa=Vt-zt,Xr,Ea=Wt[zt],Fa=Wt[zt+1],qa=Wt[Vt],ya=Wt[Vt+1],$a=zt+3;$axr)Xr=$a,xr=mt;else if(mt===xr){var gt=Math.abs($a-Zr);gtUt&&(Xr-zt>3&&tt(Wt,zt,Xr,Ut),Wt[Xr+2]=xr,Vt-Xr>3&&tt(Wt,Xr,Vt,Ut))}function nt(Wt,zt,Vt,Ut,xr,Zr){var pa=xr-Vt,Xr=Zr-Ut;if(pa!==0||Xr!==0){var Ea=((Wt-Vt)*pa+(zt-Ut)*Xr)/(pa*pa+Xr*Xr);Ea>1?(Vt=xr,Ut=Zr):Ea>0&&(Vt+=pa*Ea,Ut+=Xr*Ea)}return pa=Wt-Vt,Xr=zt-Ut,pa*pa+Xr*Xr}function Qe(Wt,zt,Vt,Ut){var xr={id:typeof Wt>"u"?null:Wt,type:zt,geometry:Vt,tags:Ut,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};return Ct(xr),xr}function Ct(Wt){var zt=Wt.geometry,Vt=Wt.type;if(Vt==="Point"||Vt==="MultiPoint"||Vt==="LineString")St(Wt,zt);else if(Vt==="Polygon"||Vt==="MultiLineString")for(var Ut=0;Ut0&&(Ut?pa+=(xr*Fa-Ea*Zr)/2:pa+=Math.sqrt(Math.pow(Ea-xr,2)+Math.pow(Fa-Zr,2))),xr=Ea,Zr=Fa}var qa=zt.length-3;zt[2]=1,tt(zt,0,qa,Vt),zt[qa+2]=1,zt.size=Math.abs(pa),zt.start=0,zt.end=zt.size}function Cr(Wt,zt,Vt,Ut){for(var xr=0;xr1?1:Vt}function yt(Wt,zt,Vt,Ut,xr,Zr,pa,Xr){if(Vt/=zt,Ut/=zt,Zr>=Vt&&pa=Ut)return null;for(var Ea=[],Fa=0;Fa=Vt&>=Ut)continue;var Er=[];if($a==="Point"||$a==="MultiPoint")Fe(ya,Er,Vt,Ut,xr);else if($a==="LineString")Ke(ya,Er,Vt,Ut,xr,!1,Xr.lineMetrics);else if($a==="MultiLineString")Ee(ya,Er,Vt,Ut,xr,!1);else if($a==="Polygon")Ee(ya,Er,Vt,Ut,xr,!0);else if($a==="MultiPolygon")for(var kr=0;kr=Vt&&pa<=Ut&&(zt.push(Wt[Zr]),zt.push(Wt[Zr+1]),zt.push(Wt[Zr+2]))}}function Ke(Wt,zt,Vt,Ut,xr,Zr,pa){for(var Xr=Ne(Wt),Ea=xr===0?ke:Te,Fa=Wt.start,qa,ya,$a=0;$aVt&&(ya=Ea(Xr,mt,gt,kr,br,Vt),pa&&(Xr.start=Fa+qa*ya)):Tr>Ut?Mr=Vt&&(ya=Ea(Xr,mt,gt,kr,br,Vt),Fr=!0),Mr>Ut&&Tr<=Ut&&(ya=Ea(Xr,mt,gt,kr,br,Ut),Fr=!0),!Zr&&Fr&&(pa&&(Xr.end=Fa+qa*ya),zt.push(Xr),Xr=Ne(Wt)),pa&&(Fa+=qa)}var Lr=Wt.length-3;mt=Wt[Lr],gt=Wt[Lr+1],Er=Wt[Lr+2],Tr=xr===0?mt:gt,Tr>=Vt&&Tr<=Ut&&Ve(Xr,mt,gt,Er),Lr=Xr.length-3,Zr&&Lr>=3&&(Xr[Lr]!==Xr[0]||Xr[Lr+1]!==Xr[1])&&Ve(Xr,Xr[0],Xr[1],Xr[2]),Xr.length&&zt.push(Xr)}function Ne(Wt){var zt=[];return zt.size=Wt.size,zt.start=Wt.start,zt.end=Wt.end,zt}function Ee(Wt,zt,Vt,Ut,xr,Zr){for(var pa=0;papa.maxX&&(pa.maxX=qa),ya>pa.maxY&&(pa.maxY=ya)}return pa}function Gt(Wt,zt,Vt,Ut){var xr=zt.geometry,Zr=zt.type,pa=[];if(Zr==="Point"||Zr==="MultiPoint")for(var Xr=0;Xr0&&zt.size<(xr?pa:Ut)){Vt.numPoints+=zt.length/3;return}for(var Xr=[],Ea=0;Eapa)&&(Vt.numSimplified++,Xr.push(zt[Ea]),Xr.push(zt[Ea+1])),Vt.numPoints++;xr&&sr(Xr,Zr),Wt.push(Xr)}function sr(Wt,zt){for(var Vt=0,Ut=0,xr=Wt.length,Zr=xr-2;Ut0===zt)for(Ut=0,xr=Wt.length;Ut24)throw new Error("maxZoom should be in the 0-24 range");if(zt.promoteId&&zt.generateId)throw new Error("promoteId and generateId cannot be used together.");var Ut=Ot(Wt,zt);this.tiles={},this.tileCoords=[],Vt&&(console.timeEnd("preprocess data"),console.log("index: maxZoom: %d, maxPoints: %d",zt.indexMaxZoom,zt.indexMaxPoints),console.time("generate tiles"),this.stats={},this.total=0),Ut=Le(Ut,zt),Ut.length&&this.splitTile(Ut,0,0,0),Vt&&(Ut.length&&console.log("features: %d, points: %d",this.tiles[0].numFeatures,this.tiles[0].numPoints),console.timeEnd("generate tiles"),console.log("tiles generated:",this.total,JSON.stringify(this.stats)))}Aa.prototype.options={maxZoom:14,indexMaxZoom:5,indexMaxPoints:1e5,tolerance:3,extent:4096,buffer:64,lineMetrics:!1,promoteId:null,generateId:!1,debug:0},Aa.prototype.splitTile=function(Wt,zt,Vt,Ut,xr,Zr,pa){for(var Xr=[Wt,zt,Vt,Ut],Ea=this.options,Fa=Ea.debug;Xr.length;){Ut=Xr.pop(),Vt=Xr.pop(),zt=Xr.pop(),Wt=Xr.pop();var qa=1<1&&console.time("creation"),$a=this.tiles[ya]=Bt(Wt,zt,Vt,Ut,Ea),this.tileCoords.push({z:zt,x:Vt,y:Ut}),Fa)){Fa>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",zt,Vt,Ut,$a.numFeatures,$a.numPoints,$a.numSimplified),console.timeEnd("creation"));var mt="z"+zt;this.stats[mt]=(this.stats[mt]||0)+1,this.total++}if($a.source=Wt,xr){if(zt===Ea.maxZoom||zt===xr)continue;var gt=1<1&&console.time("clipping");var Er=.5*Ea.buffer/Ea.extent,kr=.5-Er,br=.5+Er,Tr=1+Er,Mr,Fr,Lr,Jr,oa,ca;Mr=Fr=Lr=Jr=null,oa=yt(Wt,qa,Vt-Er,Vt+br,0,$a.minX,$a.maxX,Ea),ca=yt(Wt,qa,Vt+kr,Vt+Tr,0,$a.minX,$a.maxX,Ea),Wt=null,oa&&(Mr=yt(oa,qa,Ut-Er,Ut+br,1,$a.minY,$a.maxY,Ea),Fr=yt(oa,qa,Ut+kr,Ut+Tr,1,$a.minY,$a.maxY,Ea),oa=null),ca&&(Lr=yt(ca,qa,Ut-Er,Ut+br,1,$a.minY,$a.maxY,Ea),Jr=yt(ca,qa,Ut+kr,Ut+Tr,1,$a.minY,$a.maxY,Ea),ca=null),Fa>1&&console.timeEnd("clipping"),Xr.push(Mr||[],zt+1,Vt*2,Ut*2),Xr.push(Fr||[],zt+1,Vt*2,Ut*2+1),Xr.push(Lr||[],zt+1,Vt*2+1,Ut*2),Xr.push(Jr||[],zt+1,Vt*2+1,Ut*2+1)}}},Aa.prototype.getTile=function(Wt,zt,Vt){var Ut=this.options,xr=Ut.extent,Zr=Ut.debug;if(Wt<0||Wt>24)return null;var pa=1<1&&console.log("drilling down to z%d-%d-%d",Wt,zt,Vt);for(var Ea=Wt,Fa=zt,qa=Vt,ya;!ya&&Ea>0;)Ea--,Fa=Math.floor(Fa/2),qa=Math.floor(qa/2),ya=this.tiles[La(Ea,Fa,qa)];return!ya||!ya.source?null:(Zr>1&&console.log("found parent tile z%d-%d-%d",Ea,Fa,qa),Zr>1&&console.time("drilling down"),this.splitTile(ya.source,Ea,Fa,qa,Wt,zt,Vt),Zr>1&&console.timeEnd("drilling down"),this.tiles[Xr]?xt(this.tiles[Xr],xr):null)};function La(Wt,zt,Vt){return((1<=0?0:ve.button},r.remove=function(ve){ve.parentNode&&ve.parentNode.removeChild(ve)};function p(ve,K,ye){var te,xe,We,He=e.browser.devicePixelRatio>1?"@2x":"",st=e.getJSON(K.transformRequest(K.normalizeSpriteURL(ve,He,".json"),e.ResourceType.SpriteJSON),function(yr,Ir){st=null,We||(We=yr,te=Ir,Ht())}),Et=e.getImage(K.transformRequest(K.normalizeSpriteURL(ve,He,".png"),e.ResourceType.SpriteImage),function(yr,Ir){Et=null,We||(We=yr,xe=Ir,Ht())});function Ht(){if(We)ye(We);else if(te&&xe){var yr=e.browser.getImageData(xe),Ir={};for(var wr in te){var qt=te[wr],tr=qt.width,dr=qt.height,Pr=qt.x,Vr=qt.y,Hr=qt.sdf,aa=qt.pixelRatio,Qr=qt.stretchX,Gr=qt.stretchY,ia=qt.content,Ur=new e.RGBAImage({width:tr,height:dr});e.RGBAImage.copy(yr,Ur,{x:Pr,y:Vr},{x:0,y:0},{width:tr,height:dr}),Ir[wr]={data:Ur,pixelRatio:aa,sdf:Hr,stretchX:Qr,stretchY:Gr,content:ia}}ye(null,Ir)}}return{cancel:function(){st&&(st.cancel(),st=null),Et&&(Et.cancel(),Et=null)}}}function T(ve){var K=ve.userImage;if(K&&K.render){var ye=K.render();if(ye)return ve.data.replace(new Uint8Array(K.data.buffer)),!0}return!1}var l=1,_=function(ve){function K(){ve.call(this),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new e.RGBAImage({width:1,height:1}),this.dirty=!0}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K.prototype.isLoaded=function(){return this.loaded},K.prototype.setLoaded=function(te){if(this.loaded!==te&&(this.loaded=te,te)){for(var xe=0,We=this.requestors;xe=0?1.2:1))}b.prototype.draw=function(ve){this.ctx.clearRect(0,0,this.size,this.size),this.ctx.fillText(ve,this.buffer,this.middle);for(var K=this.ctx.getImageData(0,0,this.size,this.size),ye=new Uint8ClampedArray(this.size*this.size),te=0;te65535){yr(new Error("glyphs > 65535 not supported"));return}if(qt.ranges[dr]){yr(null,{stack:Ir,id:wr,glyph:tr});return}var Pr=qt.requests[dr];Pr||(Pr=qt.requests[dr]=[],y.loadGlyphRange(Ir,dr,te.url,te.requestManager,function(Vr,Hr){if(Hr){for(var aa in Hr)te._doesCharSupportLocalGlyph(+aa)||(qt.glyphs[+aa]=Hr[+aa]);qt.ranges[dr]=!0}for(var Qr=0,Gr=Pr;Qr1&&(Ht=K[++Et]);var Ir=Math.abs(yr-Ht.left),wr=Math.abs(yr-Ht.right),qt=Math.min(Ir,wr),tr=void 0,dr=We/te*(xe+1);if(Ht.isDash){var Pr=xe-Math.abs(dr);tr=Math.sqrt(qt*qt+Pr*Pr)}else tr=xe-Math.sqrt(qt*qt+dr*dr);this.data[st+yr]=Math.max(0,Math.min(255,tr+128))}},F.prototype.addRegularDash=function(K){for(var ye=K.length-1;ye>=0;--ye){var te=K[ye],xe=K[ye+1];te.zeroLength?K.splice(ye,1):xe&&xe.isDash===te.isDash&&(xe.left=te.left,K.splice(ye,1))}var We=K[0],He=K[K.length-1];We.isDash===He.isDash&&(We.left=He.left-this.width,He.right=We.right+this.width);for(var st=this.width*this.nextRow,Et=0,Ht=K[Et],yr=0;yr1&&(Ht=K[++Et]);var Ir=Math.abs(yr-Ht.left),wr=Math.abs(yr-Ht.right),qt=Math.min(Ir,wr),tr=Ht.isDash?qt:-qt;this.data[st+yr]=Math.max(0,Math.min(255,tr+128))}},F.prototype.addDash=function(K,ye){var te=ye?7:0,xe=2*te+1;if(this.nextRow+xe>this.height)return e.warnOnce("LineAtlas out of space"),null;for(var We=0,He=0;He=te.minX&&K.x=te.minY&&K.y0&&(yr[new e.OverscaledTileID(te.overscaledZ,st,xe.z,He,xe.y-1).key]={backfilled:!1},yr[new e.OverscaledTileID(te.overscaledZ,te.wrap,xe.z,xe.x,xe.y-1).key]={backfilled:!1},yr[new e.OverscaledTileID(te.overscaledZ,Ht,xe.z,Et,xe.y-1).key]={backfilled:!1}),xe.y+10&&(We.resourceTiming=te._resourceTiming,te._resourceTiming=[]),te.fire(new e.Event("data",We))})},K.prototype.onAdd=function(te){this.map=te,this.load()},K.prototype.setData=function(te){var xe=this;return this._data=te,this.fire(new e.Event("dataloading",{dataType:"source"})),this._updateWorkerData(function(We){if(We){xe.fire(new e.ErrorEvent(We));return}var He={dataType:"source",sourceDataType:"content"};xe._collectResourceTiming&&xe._resourceTiming&&xe._resourceTiming.length>0&&(He.resourceTiming=xe._resourceTiming,xe._resourceTiming=[]),xe.fire(new e.Event("data",He))}),this},K.prototype.getClusterExpansionZoom=function(te,xe){return this.actor.send("geojson.getClusterExpansionZoom",{clusterId:te,source:this.id},xe),this},K.prototype.getClusterChildren=function(te,xe){return this.actor.send("geojson.getClusterChildren",{clusterId:te,source:this.id},xe),this},K.prototype.getClusterLeaves=function(te,xe,We,He){return this.actor.send("geojson.getClusterLeaves",{source:this.id,clusterId:te,limit:xe,offset:We},He),this},K.prototype._updateWorkerData=function(te){var xe=this;this._loaded=!1;var We=e.extend({},this.workerOptions),He=this._data;typeof He=="string"?(We.request=this.map._requestManager.transformRequest(e.browser.resolveURL(He),e.ResourceType.Source),We.request.collectResourceTiming=this._collectResourceTiming):We.data=JSON.stringify(He),this.actor.send(this.type+".loadData",We,function(st,Et){xe._removed||Et&&Et.abandoned||(xe._loaded=!0,Et&&Et.resourceTiming&&Et.resourceTiming[xe.id]&&(xe._resourceTiming=Et.resourceTiming[xe.id].slice(0)),xe.actor.send(xe.type+".coalesce",{source:We.source},null),te(st))})},K.prototype.loaded=function(){return this._loaded},K.prototype.loadTile=function(te,xe){var We=this,He=te.actor?"reloadTile":"loadTile";te.actor=this.actor;var st={type:this.type,uid:te.uid,tileID:te.tileID,zoom:te.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:e.browser.devicePixelRatio,showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};te.request=this.actor.send(He,st,function(Et,Ht){return delete te.request,te.unloadVectorData(),te.aborted?xe(null):Et?xe(Et):(te.loadVectorData(Ht,We.map.painter,He==="reloadTile"),xe(null))})},K.prototype.abortTile=function(te){te.request&&(te.request.cancel(),delete te.request),te.aborted=!0},K.prototype.unloadTile=function(te){te.unloadVectorData(),this.actor.send("removeTile",{uid:te.uid,type:this.type,source:this.id})},K.prototype.onRemove=function(){this._removed=!0,this.actor.send("removeSource",{type:this.type,source:this.id})},K.prototype.serialize=function(){return e.extend({},this._options,{type:this.type,data:this._data})},K.prototype.hasTransition=function(){return!1},K}(e.Evented),ue=e.createLayout([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]),se=function(ve){function K(ye,te,xe,We){ve.call(this),this.id=ye,this.dispatcher=xe,this.coordinates=te.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(We),this.options=te}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K.prototype.load=function(te,xe){var We=this;this._loaded=!1,this.fire(new e.Event("dataloading",{dataType:"source"})),this.url=this.options.url,e.getImage(this.map._requestManager.transformRequest(this.url,e.ResourceType.Image),function(He,st){We._loaded=!0,He?We.fire(new e.ErrorEvent(He)):st&&(We.image=st,te&&(We.coordinates=te),xe&&xe(),We._finishLoading())})},K.prototype.loaded=function(){return this._loaded},K.prototype.updateImage=function(te){var xe=this;return!this.image||!te.url?this:(this.options.url=te.url,this.load(te.coordinates,function(){xe.texture=null}),this)},K.prototype._finishLoading=function(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"metadata"})))},K.prototype.onAdd=function(te){this.map=te,this.load()},K.prototype.setCoordinates=function(te){var xe=this;this.coordinates=te;var We=te.map(e.MercatorCoordinate.fromLngLat);this.tileID=he(We),this.minzoom=this.maxzoom=this.tileID.z;var He=We.map(function(st){return xe.tileID.getTilePoint(st)._round()});return this._boundsArray=new e.StructArrayLayout4i8,this._boundsArray.emplaceBack(He[0].x,He[0].y,0,0),this._boundsArray.emplaceBack(He[1].x,He[1].y,e.EXTENT,0),this._boundsArray.emplaceBack(He[3].x,He[3].y,0,e.EXTENT),this._boundsArray.emplaceBack(He[2].x,He[2].y,e.EXTENT,e.EXTENT),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new e.Event("data",{dataType:"source",sourceDataType:"content"})),this},K.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||!this.image)){var te=this.map.painter.context,xe=te.gl;this.boundsBuffer||(this.boundsBuffer=te.createVertexBuffer(this._boundsArray,ue.members)),this.boundsSegments||(this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)),this.texture||(this.texture=new e.Texture(te,this.image,xe.RGBA),this.texture.bind(xe.LINEAR,xe.CLAMP_TO_EDGE));for(var We in this.tiles){var He=this.tiles[We];He.state!=="loaded"&&(He.state="loaded",He.texture=this.texture)}}},K.prototype.loadTile=function(te,xe){this.tileID&&this.tileID.equals(te.tileID.canonical)?(this.tiles[String(te.tileID.wrap)]=te,te.buckets={},xe(null)):(te.state="errored",xe(null))},K.prototype.serialize=function(){return{type:"image",url:this.options.url,coordinates:this.coordinates}},K.prototype.hasTransition=function(){return!1},K}(e.Evented);function he(ve){for(var K=1/0,ye=1/0,te=-1/0,xe=-1/0,We=0,He=ve;Wexe.end(0)?this.fire(new e.ErrorEvent(new e.ValidationError("sources."+this.id,null,"Playback for this video can be set only between the "+xe.start(0)+" and "+xe.end(0)+"-second mark."))):this.video.currentTime=te}},K.prototype.getVideo=function(){return this.video},K.prototype.onAdd=function(te){this.map||(this.map=te,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))},K.prototype.prepare=function(){if(!(Object.keys(this.tiles).length===0||this.video.readyState<2)){var te=this.map.painter.context,xe=te.gl;this.boundsBuffer||(this.boundsBuffer=te.createVertexBuffer(this._boundsArray,ue.members)),this.boundsSegments||(this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(xe.LINEAR,xe.CLAMP_TO_EDGE),xe.texSubImage2D(xe.TEXTURE_2D,0,0,0,xe.RGBA,xe.UNSIGNED_BYTE,this.video)):(this.texture=new e.Texture(te,this.video,xe.RGBA),this.texture.bind(xe.LINEAR,xe.CLAMP_TO_EDGE));for(var We in this.tiles){var He=this.tiles[We];He.state!=="loaded"&&(He.state="loaded",He.texture=this.texture)}}},K.prototype.serialize=function(){return{type:"video",urls:this.urls,coordinates:this.coordinates}},K.prototype.hasTransition=function(){return this.video&&!this.video.paused},K}(se),$=function(ve){function K(ye,te,xe,We){ve.call(this,ye,te,xe,We),te.coordinates?(!Array.isArray(te.coordinates)||te.coordinates.length!==4||te.coordinates.some(function(He){return!Array.isArray(He)||He.length!==2||He.some(function(st){return typeof st!="number"})}))&&this.fire(new e.ErrorEvent(new e.ValidationError("sources."+ye,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new e.ErrorEvent(new e.ValidationError("sources."+ye,null,'missing required property "coordinates"'))),te.animate&&typeof te.animate!="boolean"&&this.fire(new e.ErrorEvent(new e.ValidationError("sources."+ye,null,'optional "animate" property must be a boolean value'))),te.canvas?typeof te.canvas!="string"&&!(te.canvas instanceof e.window.HTMLCanvasElement)&&this.fire(new e.ErrorEvent(new e.ValidationError("sources."+ye,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new e.ErrorEvent(new e.ValidationError("sources."+ye,null,'missing required property "canvas"'))),this.options=te,this.animate=te.animate!==void 0?te.animate:!0}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K.prototype.load=function(){if(this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof e.window.HTMLCanvasElement?this.options.canvas:e.window.document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()){this.fire(new e.ErrorEvent(new Error("Canvas dimensions cannot be less than or equal to zero.")));return}this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading()},K.prototype.getCanvas=function(){return this.canvas},K.prototype.onAdd=function(te){this.map=te,this.load(),this.canvas&&this.animate&&this.play()},K.prototype.onRemove=function(){this.pause()},K.prototype.prepare=function(){var te=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,te=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,te=!0),!this._hasInvalidDimensions()&&Object.keys(this.tiles).length!==0){var xe=this.map.painter.context,We=xe.gl;this.boundsBuffer||(this.boundsBuffer=xe.createVertexBuffer(this._boundsArray,ue.members)),this.boundsSegments||(this.boundsSegments=e.SegmentVector.simpleSegment(0,0,4,2)),this.texture?(te||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new e.Texture(xe,this.canvas,We.RGBA,{premultiply:!0});for(var He in this.tiles){var st=this.tiles[He];st.state!=="loaded"&&(st.state="loaded",st.texture=this.texture)}}},K.prototype.serialize=function(){return{type:"canvas",coordinates:this.coordinates}},K.prototype.hasTransition=function(){return this._playing},K.prototype._hasInvalidDimensions=function(){for(var te=0,xe=[this.canvas.width,this.canvas.height];tethis.max){var st=this._getAndRemoveByKey(this.order[0]);st&&this.onRemove(st)}return this},Ie.prototype.has=function(K){return K.wrapped().key in this.data},Ie.prototype.getAndRemove=function(K){return this.has(K)?this._getAndRemoveByKey(K.wrapped().key):null},Ie.prototype._getAndRemoveByKey=function(K){var ye=this.data[K].shift();return ye.timeout&&clearTimeout(ye.timeout),this.data[K].length===0&&delete this.data[K],this.order.splice(this.order.indexOf(K),1),ye.value},Ie.prototype.getByKey=function(K){var ye=this.data[K];return ye?ye[0].value:null},Ie.prototype.get=function(K){if(!this.has(K))return null;var ye=this.data[K.wrapped().key][0];return ye.value},Ie.prototype.remove=function(K,ye){if(!this.has(K))return this;var te=K.wrapped().key,xe=ye===void 0?0:this.data[te].indexOf(ye),We=this.data[te][xe];return this.data[te].splice(xe,1),We.timeout&&clearTimeout(We.timeout),this.data[te].length===0&&delete this.data[te],this.onRemove(We.value),this.order.splice(this.order.indexOf(te),1),this},Ie.prototype.setMaxSize=function(K){for(this.max=K;this.order.length>this.max;){var ye=this._getAndRemoveByKey(this.order[0]);ye&&this.onRemove(ye)}return this},Ie.prototype.filter=function(K){var ye=[];for(var te in this.data)for(var xe=0,We=this.data[te];xe1||(Math.abs(Ir)>1&&(Math.abs(Ir+qt)===1?Ir+=qt:Math.abs(Ir-qt)===1&&(Ir-=qt)),!(!yr.dem||!Ht.dem)&&(Ht.dem.backfillBorder(yr.dem,Ir,wr),Ht.neighboringTiles&&Ht.neighboringTiles[tr]&&(Ht.neighboringTiles[tr].backfilled=!0)))}},K.prototype.getTile=function(te){return this.getTileByID(te.key)},K.prototype.getTileByID=function(te){return this._tiles[te]},K.prototype._retainLoadedChildren=function(te,xe,We,He){for(var st in this._tiles){var Et=this._tiles[st];if(!(He[st]||!Et.hasData()||Et.tileID.overscaledZ<=xe||Et.tileID.overscaledZ>We)){for(var Ht=Et.tileID;Et&&Et.tileID.overscaledZ>xe+1;){var yr=Et.tileID.scaledTo(Et.tileID.overscaledZ-1);Et=this._tiles[yr.key],Et&&Et.hasData()&&(Ht=yr)}for(var Ir=Ht;Ir.overscaledZ>xe;)if(Ir=Ir.scaledTo(Ir.overscaledZ-1),te[Ir.key]){He[Ht.key]=Ht;break}}}},K.prototype.findLoadedParent=function(te,xe){if(te.key in this._loadedParentTiles){var We=this._loadedParentTiles[te.key];return We&&We.tileID.overscaledZ>=xe?We:null}for(var He=te.overscaledZ-1;He>=xe;He--){var st=te.scaledTo(He),Et=this._getLoadedTile(st);if(Et)return Et}},K.prototype._getLoadedTile=function(te){var xe=this._tiles[te.key];if(xe&&xe.hasData())return xe;var We=this._cache.getByKey(te.wrapped().key);return We},K.prototype.updateCacheSize=function(te){var xe=Math.ceil(te.width/this._source.tileSize)+1,We=Math.ceil(te.height/this._source.tileSize)+1,He=xe*We,st=5,Et=Math.floor(He*st),Ht=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,Et):Et;this._cache.setMaxSize(Ht)},K.prototype.handleWrapJump=function(te){var xe=this._prevLng===void 0?te:this._prevLng,We=te-xe,He=We/360,st=Math.round(He);if(this._prevLng=te,st){var Et={};for(var Ht in this._tiles){var yr=this._tiles[Ht];yr.tileID=yr.tileID.unwrapTo(yr.tileID.wrap+st),Et[yr.tileID.key]=yr}this._tiles=Et;for(var Ir in this._timers)clearTimeout(this._timers[Ir]),delete this._timers[Ir];for(var wr in this._tiles){var qt=this._tiles[wr];this._setTileReloadTimer(wr,qt)}}},K.prototype.update=function(te){var xe=this;if(this.transform=te,!(!this._sourceLoaded||this._paused)){this.updateCacheSize(te),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={};var We;this.used?this._source.tileID?We=te.getVisibleUnwrappedCoordinates(this._source.tileID).map(function(ri){return new e.OverscaledTileID(ri.canonical.z,ri.wrap,ri.canonical.z,ri.canonical.x,ri.canonical.y)}):(We=te.coveringTiles({tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled}),this._source.hasTile&&(We=We.filter(function(ri){return xe._source.hasTile(ri)}))):We=[];var He=te.coveringZoomLevel(this._source),st=Math.max(He-K.maxOverzooming,this._source.minzoom),Et=Math.max(He+K.maxUnderzooming,this._source.minzoom),Ht=this._updateRetainedTiles(We,He);if(Ea(this._source.type)){for(var yr={},Ir={},wr=Object.keys(Ht),qt=0,tr=wr;qtthis._source.maxzoom){var Hr=Pr.children(this._source.maxzoom)[0],aa=this.getTile(Hr);if(aa&&aa.hasData()){We[Hr.key]=Hr;continue}}else{var Qr=Pr.children(this._source.maxzoom);if(We[Qr[0].key]&&We[Qr[1].key]&&We[Qr[2].key]&&We[Qr[3].key])continue}for(var Gr=Vr.wasRequested(),ia=Pr.overscaledZ-1;ia>=st;--ia){var Ur=Pr.scaledTo(ia);if(He[Ur.key]||(He[Ur.key]=!0,Vr=this.getTile(Ur),!Vr&&Gr&&(Vr=this._addTile(Ur)),Vr&&(We[Ur.key]=Ur,Gr=Vr.wasRequested(),Vr.hasData())))break}}}return We},K.prototype._updateLoadedParentTileCache=function(){this._loadedParentTiles={};for(var te in this._tiles){for(var xe=[],We=void 0,He=this._tiles[te].tileID;He.overscaledZ>0;){if(He.key in this._loadedParentTiles){We=this._loadedParentTiles[He.key];break}xe.push(He.key);var st=He.scaledTo(He.overscaledZ-1);if(We=this._getLoadedTile(st),We)break;He=st}for(var Et=0,Ht=xe;Et0)&&(xe.hasData()&&xe.state!=="reloading"?this._cache.add(xe.tileID,xe,xe.getExpiryTimeout()):(xe.aborted=!0,this._abortTile(xe),this._unloadTile(xe))))},K.prototype.clearTiles=function(){this._shouldReloadOnResume=!1,this._paused=!1;for(var te in this._tiles)this._removeTile(te);this._cache.reset()},K.prototype.tilesIn=function(te,xe,We){var He=this,st=[],Et=this.transform;if(!Et)return st;for(var Ht=We?Et.getCameraQueryGeometry(te):te,yr=te.map(function(ia){return Et.pointCoordinate(ia)}),Ir=Ht.map(function(ia){return Et.pointCoordinate(ia)}),wr=this.getIds(),qt=1/0,tr=1/0,dr=-1/0,Pr=-1/0,Vr=0,Hr=Ir;Vr=0&&Pi[1].y+ri>=0){var mi=yr.map(function(An){return wa.getTilePoint(An)}),Di=Ir.map(function(An){return wa.getTilePoint(An)});st.push({tile:Ur,tileID:wa,queryGeometry:mi,cameraQueryGeometry:Di,scale:Oa})}}},Gr=0;Gr=e.browser.now())return!0}return!1},K.prototype.setFeatureState=function(te,xe,We){te=te||"_geojsonTileLayer",this._state.updateState(te,xe,We)},K.prototype.removeFeatureState=function(te,xe,We){te=te||"_geojsonTileLayer",this._state.removeFeatureState(te,xe,We)},K.prototype.getFeatureState=function(te,xe){return te=te||"_geojsonTileLayer",this._state.getState(te,xe)},K.prototype.setDependencies=function(te,xe,We){var He=this._tiles[te];He&&He.setDependencies(xe,We)},K.prototype.reloadTilesForDependencies=function(te,xe){for(var We in this._tiles){var He=this._tiles[We];He.hasDependency(te,xe)&&this._reloadTile(We,"reloading")}this._cache.filter(function(st){return!st.hasDependency(te,xe)})},K}(e.Evented);pa.maxOverzooming=10,pa.maxUnderzooming=3;function Xr(ve,K){var ye=Math.abs(ve.wrap*2)-+(ve.wrap<0),te=Math.abs(K.wrap*2)-+(K.wrap<0);return ve.overscaledZ-K.overscaledZ||te-ye||K.canonical.y-ve.canonical.y||K.canonical.x-ve.canonical.x}function Ea(ve){return ve==="raster"||ve==="image"||ve==="video"}function Fa(){return new e.window.Worker(Cs.workerUrl)}var qa="mapboxgl_preloaded_worker_pool",ya=function(){this.active={}};ya.prototype.acquire=function(K){if(!this.workers)for(this.workers=[];this.workers.length0?(xe-He)/st:0;return this.points[We].mult(1-Et).add(this.points[ye].mult(Et))};var da=function(K,ye,te){var xe=this.boxCells=[],We=this.circleCells=[];this.xCellCount=Math.ceil(K/te),this.yCellCount=Math.ceil(ye/te);for(var He=0;Hethis.width||xe<0||ye>this.height)return We?!1:[];var st=[];if(K<=0&&ye<=0&&this.width<=te&&this.height<=xe){if(We)return!0;for(var Et=0;Et0:st}},da.prototype._queryCircle=function(K,ye,te,xe,We){var He=K-te,st=K+te,Et=ye-te,Ht=ye+te;if(st<0||He>this.width||Ht<0||Et>this.height)return xe?!1:[];var yr=[],Ir={hitTest:xe,circle:{x:K,y:ye,radius:te},seenUids:{box:{},circle:{}}};return this._forEachCell(He,Et,st,Ht,this._queryCellCircle,yr,Ir,We),xe?yr.length>0:yr},da.prototype.query=function(K,ye,te,xe,We){return this._query(K,ye,te,xe,!1,We)},da.prototype.hitTest=function(K,ye,te,xe,We){return this._query(K,ye,te,xe,!0,We)},da.prototype.hitTestCircle=function(K,ye,te,xe){return this._queryCircle(K,ye,te,!0,xe)},da.prototype._queryCell=function(K,ye,te,xe,We,He,st,Et){var Ht=st.seenUids,yr=this.boxCells[We];if(yr!==null)for(var Ir=this.bboxes,wr=0,qt=yr;wr=Ir[dr+0]&&xe>=Ir[dr+1]&&(!Et||Et(this.boxKeys[tr]))){if(st.hitTest)return He.push(!0),!0;He.push({key:this.boxKeys[tr],x1:Ir[dr],y1:Ir[dr+1],x2:Ir[dr+2],y2:Ir[dr+3]})}}}var Pr=this.circleCells[We];if(Pr!==null)for(var Vr=this.circles,Hr=0,aa=Pr;Hrst*st+Et*Et},da.prototype._circleAndRectCollide=function(K,ye,te,xe,We,He,st){var Et=(He-xe)/2,Ht=Math.abs(K-(xe+Et));if(Ht>Et+te)return!1;var yr=(st-We)/2,Ir=Math.abs(ye-(We+yr));if(Ir>yr+te)return!1;if(Ht<=Et||Ir<=yr)return!0;var wr=Ht-Et,qt=Ir-yr;return wr*wr+qt*qt<=te*te};function Sa(ve,K,ye,te,xe){var We=e.create();return K?(e.scale(We,We,[1/xe,1/xe,1]),ye||e.rotateZ(We,We,te.angle)):e.multiply(We,te.labelPlaneMatrix,ve),We}function Ti(ve,K,ye,te,xe){if(K){var We=e.clone(ve);return e.scale(We,We,[xe,xe,1]),ye||e.rotateZ(We,We,-te.angle),We}else return te.glCoordMatrix}function ai(ve,K){var ye=[ve.x,ve.y,0,1];as(ye,ye,K);var te=ye[3];return{point:new e.Point(ye[0]/te,ye[1]/te),signedDistanceFromCamera:te}}function an(ve,K){return .5+.5*(ve/K)}function sn(ve,K){var ye=ve[0]/ve[3],te=ve[1]/ve[3],xe=ye>=-K[0]&&ye<=K[0]&&te>=-K[1]&&te<=K[1];return xe}function Mn(ve,K,ye,te,xe,We,He,st){var Et=te?ve.textSizeData:ve.iconSizeData,Ht=e.evaluateSizeForZoom(Et,ye.transform.zoom),yr=[256/ye.width*2+1,256/ye.height*2+1],Ir=te?ve.text.dynamicLayoutVertexArray:ve.icon.dynamicLayoutVertexArray;Ir.clear();for(var wr=ve.lineVertexArray,qt=te?ve.text.placedSymbolArray:ve.icon.placedSymbolArray,tr=ye.transform.width/ye.transform.height,dr=!1,Pr=0;PrWe)return{useVertical:!0}}return(ve===e.WritingMode.vertical?K.yye.x)?{needsFlipping:!0}:null}function Cn(ve,K,ye,te,xe,We,He,st,Et,Ht,yr,Ir,wr,qt){var tr=K/24,dr=ve.lineOffsetX*tr,Pr=ve.lineOffsetY*tr,Vr;if(ve.numGlyphs>1){var Hr=ve.glyphStartIndex+ve.numGlyphs,aa=ve.lineStartIndex,Qr=ve.lineStartIndex+ve.lineLength,Gr=On(tr,st,dr,Pr,ye,yr,Ir,ve,Et,We,wr);if(!Gr)return{notEnoughRoom:!0};var ia=ai(Gr.first.point,He).point,Ur=ai(Gr.last.point,He).point;if(te&&!ye){var wa=$n(ve.writingMode,ia,Ur,qt);if(wa)return wa}Vr=[Gr.first];for(var Oa=ve.glyphStartIndex+1;Oa0?Di.point:Lo(Ir,mi,ri,1,xe),ln=$n(ve.writingMode,ri,An,qt);if(ln)return ln}var Ii=Xi(tr*st.getoffsetX(ve.glyphStartIndex),dr,Pr,ye,yr,Ir,ve.segment,ve.lineStartIndex,ve.lineStartIndex+ve.lineLength,Et,We,wr);if(!Ii)return{notEnoughRoom:!0};Vr=[Ii]}for(var Wi=0,Hi=Vr;Wi0?1:-1,tr=0;te&&(qt*=-1,tr=Math.PI),qt<0&&(tr+=Math.PI);for(var dr=qt>0?st+He:st+He+1,Pr=xe,Vr=xe,Hr=0,aa=0,Qr=Math.abs(wr),Gr=[];Hr+aa<=Qr;){if(dr+=qt,dr=Et)return null;if(Vr=Pr,Gr.push(Pr),Pr=Ir[dr],Pr===void 0){var ia=new e.Point(Ht.getx(dr),Ht.gety(dr)),Ur=ai(ia,yr);if(Ur.signedDistanceFromCamera>0)Pr=Ir[dr]=Ur.point;else{var wa=dr-qt,Oa=Hr===0?We:new e.Point(Ht.getx(wa),Ht.gety(wa));Pr=Lo(Oa,ia,Vr,Qr-Hr+1,yr)}}Hr+=aa,aa=Vr.dist(Pr)}var ri=(Qr-Hr)/aa,Pi=Pr.sub(Vr),mi=Pi.mult(ri)._add(Vr);mi._add(Pi._unit()._perp()._mult(ye*qt));var Di=tr+Math.atan2(Pr.y-Vr.y,Pr.x-Vr.x);return Gr.push(mi),{point:mi,angle:Di,path:Gr}}var Jo=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function zo(ve,K){for(var ye=0;ye=1;yn--)Hi.push(Ii.path[yn]);for(var zn=1;zn0){for(var qo=Hi[0].clone(),Ls=Hi[0].clone(),wl=1;wl=Di.x&&Ls.x<=An.x&&qo.y>=Di.y&&Ls.y<=An.y?Vs=[Hi]:Ls.xAn.x||Ls.yAn.y?Vs=[]:Vs=e.clipLine([Hi],Di.x,Di.y,An.x,An.y)}for(var Ru=0,Ap=Vs;Ru=this.screenRightBoundary||xethis.screenBottomBoundary},go.prototype.isInsideGrid=function(K,ye,te,xe){return te>=0&&K=0&&ye0){var Qr;return this.prevPlacement&&this.prevPlacement.variableOffsets[wr.crossTileID]&&this.prevPlacement.placements[wr.crossTileID]&&this.prevPlacement.placements[wr.crossTileID].text&&(Qr=this.prevPlacement.variableOffsets[wr.crossTileID].anchor),this.variableOffsets[wr.crossTileID]={textOffset:Pr,width:te,height:xe,anchor:K,textBoxScale:We,prevAnchor:Qr},this.markUsedJustification(qt,K,wr,tr),qt.allowVerticalPlacement&&(this.markUsedOrientation(qt,tr,wr),this.placedOrientations[wr.crossTileID]=tr),{shift:Vr,placedGlyphBoxes:Hr}}},$o.prototype.placeLayerBucketPart=function(K,ye,te){var xe=this,We=K.parameters,He=We.bucket,st=We.layout,Et=We.posMatrix,Ht=We.textLabelPlaneMatrix,yr=We.labelToScreenMatrix,Ir=We.textPixelRatio,wr=We.holdingForFade,qt=We.collisionBoxArray,tr=We.partiallyEvaluatedTextSize,dr=We.collisionGroup,Pr=st.get("text-optional"),Vr=st.get("icon-optional"),Hr=st.get("text-allow-overlap"),aa=st.get("icon-allow-overlap"),Qr=st.get("text-rotation-alignment")==="map",Gr=st.get("text-pitch-alignment")==="map",ia=st.get("icon-text-fit")!=="none",Ur=st.get("symbol-z-order")==="viewport-y",wa=Hr&&(aa||!He.hasIconData()||Vr),Oa=aa&&(Hr||!He.hasTextData()||Pr);!He.collisionArrays&&qt&&He.deserializeCollisionBoxes(qt);var ri=function(Ii,Wi){if(!ye[Ii.crossTileID]){if(wr){xe.placements[Ii.crossTileID]=new Qo(!1,!1,!1);return}var Hi=!1,yn=!1,zn=!0,ms=null,us={box:null,offscreen:null},Vs={box:null,offscreen:null},qo=null,Ls=null,wl=null,Ru=0,Ap=0,Sp=0;Wi.textFeatureIndex?Ru=Wi.textFeatureIndex:Ii.useRuntimeCollisionCircles&&(Ru=Ii.featureIndex),Wi.verticalTextFeatureIndex&&(Ap=Wi.verticalTextFeatureIndex);var Eh=Wi.textBox;if(Eh){var Vp=function(Du){var Bl=e.WritingMode.horizontal;if(He.allowVerticalPlacement&&!Du&&xe.prevPlacement){var Lh=xe.prevPlacement.placedOrientations[Ii.crossTileID];Lh&&(xe.placedOrientations[Ii.crossTileID]=Lh,Bl=Lh,xe.markUsedOrientation(He,Bl,Ii))}return Bl},Vd=function(Du,Bl){if(He.allowVerticalPlacement&&Ii.numVerticalGlyphVertices>0&&Wi.verticalTextBox)for(var Lh=0,Iv=He.writingModes;Lh0&&(Xh=Xh.filter(function(Du){return Du!==Ch.anchor}),Xh.unshift(Ch.anchor))}var Mp=function(Du,Bl,Lh){for(var Iv=Du.x2-Du.x1,om=Du.y2-Du.y1,Ql=Ii.textBoxScale,xg=ia&&!aa?Bl:null,sv={box:[],offscreen:!1},y0=Hr?Xh.length*2:Xh.length,kp=0;kp=Xh.length,bg=xe.attemptAnchorPlacement(lv,Du,Iv,om,Ql,Qr,Gr,Ir,Et,dr,_0,Ii,He,Lh,xg);if(bg&&(sv=bg.placedGlyphBoxes,sv&&sv.box&&sv.box.length)){Hi=!0,ms=bg.shift;break}}return sv},qp=function(){return Mp(Eh,Wi.iconBox,e.WritingMode.horizontal)},Ep=function(){var Du=Wi.verticalTextBox,Bl=us&&us.box&&us.box.length;return He.allowVerticalPlacement&&!Bl&&Ii.numVerticalGlyphVertices>0&&Du?Mp(Du,Wi.verticalIconBox,e.WritingMode.vertical):{box:null,offscreen:null}};Vd(qp,Ep),us&&(Hi=us.box,zn=us.offscreen);var Cv=Vp(us&&us.box);if(!Hi&&xe.prevPlacement){var qd=xe.prevPlacement.variableOffsets[Ii.crossTileID];qd&&(xe.variableOffsets[Ii.crossTileID]=qd,xe.markUsedJustification(He,qd.anchor,Ii,Cv))}}else{var td=function(Du,Bl){var Lh=xe.collisionIndex.placeCollisionBox(Du,Hr,Ir,Et,dr.predicate);return Lh&&Lh.box&&Lh.box.length&&(xe.markUsedOrientation(He,Bl,Ii),xe.placedOrientations[Ii.crossTileID]=Bl),Lh},kh=function(){return td(Eh,e.WritingMode.horizontal)},rd=function(){var Du=Wi.verticalTextBox;return He.allowVerticalPlacement&&Ii.numVerticalGlyphVertices>0&&Du?td(Du,e.WritingMode.vertical):{box:null,offscreen:null}};Vd(kh,rd),Vp(us&&us.box&&us.box.length)}}if(qo=us,Hi=qo&&qo.box&&qo.box.length>0,zn=qo&&qo.offscreen,Ii.useRuntimeCollisionCircles){var Sf=He.text.placedSymbolArray.get(Ii.centerJustifiedTextSymbolIndex),Hd=e.evaluateSizeForFeature(He.textSizeData,tr,Sf),Lv=st.get("text-padding"),eh=Ii.collisionCircleDiameter;Ls=xe.collisionIndex.placeCollisionCircles(Hr,Sf,He.lineVertexArray,He.glyphOffsetArray,Hd,Et,Ht,yr,te,Gr,dr.predicate,eh,Lv),Hi=Hr||Ls.circles.length>0&&!Ls.collisionDetected,zn=zn&&Ls.offscreen}if(Wi.iconFeatureIndex&&(Sp=Wi.iconFeatureIndex),Wi.iconBox){var iv=function(Du){var Bl=ia&&ms?Fs(Du,ms.x,ms.y,Qr,Gr,xe.transform.angle):Du;return xe.collisionIndex.placeCollisionBox(Bl,aa,Ir,Et,dr.predicate)};Vs&&Vs.box&&Vs.box.length&&Wi.verticalIconBox?(wl=iv(Wi.verticalIconBox),yn=wl.box.length>0):(wl=iv(Wi.iconBox),yn=wl.box.length>0),zn=zn&&wl.offscreen}var im=Pr||Ii.numHorizontalGlyphVertices===0&&Ii.numVerticalGlyphVertices===0,nm=Vr||Ii.numIconVertices===0;if(!im&&!nm?yn=Hi=yn&&Hi:nm?im||(yn=yn&&Hi):Hi=yn&&Hi,Hi&&qo&&qo.box&&(Vs&&Vs.box&&Ap?xe.collisionIndex.insertCollisionBox(qo.box,st.get("text-ignore-placement"),He.bucketInstanceId,Ap,dr.ID):xe.collisionIndex.insertCollisionBox(qo.box,st.get("text-ignore-placement"),He.bucketInstanceId,Ru,dr.ID)),yn&&wl&&xe.collisionIndex.insertCollisionBox(wl.box,st.get("icon-ignore-placement"),He.bucketInstanceId,Sp,dr.ID),Ls&&(Hi&&xe.collisionIndex.insertCollisionCircles(Ls.circles,st.get("text-ignore-placement"),He.bucketInstanceId,Ru,dr.ID),te)){var Pv=He.bucketInstanceId,nv=xe.collisionCircleArrays[Pv];nv===void 0&&(nv=xe.collisionCircleArrays[Pv]=new Xn);for(var ov=0;ov=0;--mi){var Di=Pi[mi];ri(He.symbolInstances.get(Di),He.collisionArrays[Di])}else for(var An=K.symbolInstanceStart;An=0&&(He>=0&&yr!==He?K.text.placedSymbolArray.get(yr).crossTileID=0:K.text.placedSymbolArray.get(yr).crossTileID=te.crossTileID)}},$o.prototype.markUsedOrientation=function(K,ye,te){for(var xe=ye===e.WritingMode.horizontal||ye===e.WritingMode.horizontalOnly?ye:0,We=ye===e.WritingMode.vertical?ye:0,He=[te.leftJustifiedTextSymbolIndex,te.centerJustifiedTextSymbolIndex,te.rightJustifiedTextSymbolIndex],st=0,Et=He;st0||Gr>0,ri=aa.numIconVertices>0,Pi=xe.placedOrientations[aa.crossTileID],mi=Pi===e.WritingMode.vertical,Di=Pi===e.WritingMode.horizontal||Pi===e.WritingMode.horizontalOnly;if(Oa){var An=vl(wa.text),ln=mi?ji:An;tr(K.text,Qr,ln);var Ii=Di?ji:An;tr(K.text,Gr,Ii);var Wi=wa.text.isHidden();[aa.rightJustifiedTextSymbolIndex,aa.centerJustifiedTextSymbolIndex,aa.leftJustifiedTextSymbolIndex].forEach(function(Sp){Sp>=0&&(K.text.placedSymbolArray.get(Sp).hidden=Wi||mi?1:0)}),aa.verticalPlacedTextSymbolIndex>=0&&(K.text.placedSymbolArray.get(aa.verticalPlacedTextSymbolIndex).hidden=Wi||Di?1:0);var Hi=xe.variableOffsets[aa.crossTileID];Hi&&xe.markUsedJustification(K,Hi.anchor,aa,Pi);var yn=xe.placedOrientations[aa.crossTileID];yn&&(xe.markUsedJustification(K,"left",aa,yn),xe.markUsedOrientation(K,yn,aa))}if(ri){var zn=vl(wa.icon),ms=!(wr&&aa.verticalPlacedIconSymbolIndex&&mi);if(aa.placedIconSymbolIndex>=0){var us=ms?zn:ji;tr(K.icon,aa.numIconVertices,us),K.icon.placedSymbolArray.get(aa.placedIconSymbolIndex).hidden=wa.icon.isHidden()}if(aa.verticalPlacedIconSymbolIndex>=0){var Vs=ms?ji:zn;tr(K.icon,aa.numVerticalIconVertices,Vs),K.icon.placedSymbolArray.get(aa.verticalPlacedIconSymbolIndex).hidden=wa.icon.isHidden()}}if(K.hasIconCollisionBoxData()||K.hasTextCollisionBoxData()){var qo=K.collisionArrays[Hr];if(qo){var Ls=new e.Point(0,0);if(qo.textBox||qo.verticalTextBox){var wl=!0;if(Ht){var Ru=xe.variableOffsets[ia];Ru?(Ls=Is(Ru.anchor,Ru.width,Ru.height,Ru.textOffset,Ru.textBoxScale),yr&&Ls._rotate(Ir?xe.transform.angle:-xe.transform.angle)):wl=!1}qo.textBox&&fi(K.textCollisionBox.collisionVertexArray,wa.text.placed,!wl||mi,Ls.x,Ls.y),qo.verticalTextBox&&fi(K.textCollisionBox.collisionVertexArray,wa.text.placed,!wl||Di,Ls.x,Ls.y)}var Ap=!!(!Di&&qo.verticalIconBox);qo.iconBox&&fi(K.iconCollisionBox.collisionVertexArray,wa.icon.placed,Ap,wr?Ls.x:0,wr?Ls.y:0),qo.verticalIconBox&&fi(K.iconCollisionBox.collisionVertexArray,wa.icon.placed,!Ap,wr?Ls.x:0,wr?Ls.y:0)}}},Pr=0;PrK},$o.prototype.setStale=function(){this.stale=!0};function fi(ve,K,ye,te,xe){ve.emplaceBack(K?1:0,ye?1:0,te||0,xe||0),ve.emplaceBack(K?1:0,ye?1:0,te||0,xe||0),ve.emplaceBack(K?1:0,ye?1:0,te||0,xe||0),ve.emplaceBack(K?1:0,ye?1:0,te||0,xe||0)}var mn=Math.pow(2,25),ol=Math.pow(2,24),Os=Math.pow(2,17),so=Math.pow(2,16),Ns=Math.pow(2,9),fs=Math.pow(2,8),al=Math.pow(2,1);function vl(ve){if(ve.opacity===0&&!ve.placed)return 0;if(ve.opacity===1&&ve.placed)return 4294967295;var K=ve.placed?1:0,ye=Math.floor(ve.opacity*127);return ye*mn+K*ol+ye*Os+K*so+ye*Ns+K*fs+ye*al+K}var ji=0,To=function(K){this._sortAcrossTiles=K.layout.get("symbol-z-order")!=="viewport-y"&&K.layout.get("symbol-sort-key").constantOr(1)!==void 0,this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]};To.prototype.continuePlacement=function(K,ye,te,xe,We){for(var He=this._bucketParts;this._currentTileIndex2};this._currentPlacementIndex>=0;){var st=K[this._currentPlacementIndex],Et=ye[st],Ht=this.placement.collisionIndex.transform.zoom;if(Et.type==="symbol"&&(!Et.minzoom||Et.minzoom<=Ht)&&(!Et.maxzoom||Et.maxzoom>Ht)){this._inProgressLayer||(this._inProgressLayer=new To(Et));var yr=this._inProgressLayer.continuePlacement(te[Et.source],this.placement,this._showCollisionBoxes,Et,He);if(yr)return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0},Yn.prototype.commit=function(K){return this.placement.commit(K),this.placement};var _s=512/e.EXTENT/2,Yo=function(K,ye,te){this.tileID=K,this.indexedSymbolInstances={},this.bucketInstanceId=te;for(var xe=0;xeK.overscaledZ)for(var Ht in Et){var yr=Et[Ht];yr.tileID.isChildOf(K)&&yr.findMatches(ye.symbolInstances,K,He)}else{var Ir=K.scaledTo(Number(st)),wr=Et[Ir.key];wr&&wr.findMatches(ye.symbolInstances,K,He)}}for(var qt=0;qt0)throw new Error("Unimplemented: "+He.map(function(st){return st.command}).join(", ")+".");return We.forEach(function(st){st.command!=="setTransition"&&xe[st.command].apply(xe,st.args)}),this.stylesheet=te,!0},K.prototype.addImage=function(te,xe){if(this.getImage(te))return this.fire(new e.ErrorEvent(new Error("An image with this name already exists.")));this.imageManager.addImage(te,xe),this._afterImageUpdated(te)},K.prototype.updateImage=function(te,xe){this.imageManager.updateImage(te,xe)},K.prototype.getImage=function(te){return this.imageManager.getImage(te)},K.prototype.removeImage=function(te){if(!this.getImage(te))return this.fire(new e.ErrorEvent(new Error("No image with this name exists.")));this.imageManager.removeImage(te),this._afterImageUpdated(te)},K.prototype._afterImageUpdated=function(te){this._availableImages=this.imageManager.listImages(),this._changedImages[te]=!0,this._changed=!0,this.dispatcher.broadcast("setImages",this._availableImages),this.fire(new e.Event("data",{dataType:"style"}))},K.prototype.listImages=function(){return this._checkLoaded(),this.imageManager.listImages()},K.prototype.addSource=function(te,xe,We){var He=this;if(We===void 0&&(We={}),this._checkLoaded(),this.sourceCaches[te]!==void 0)throw new Error("There is already a source with this ID");if(!xe.type)throw new Error("The type property must be defined, but only the following properties were given: "+Object.keys(xe).join(", ")+".");var st=["vector","raster","geojson","video","image"],Et=st.indexOf(xe.type)>=0;if(!(Et&&this._validate(e.validateStyle.source,"sources."+te,xe,null,We))){this.map&&this.map._collectResourceTiming&&(xe.collectResourceTiming=!0);var Ht=this.sourceCaches[te]=new pa(te,xe,this.dispatcher);Ht.style=this,Ht.setEventedParent(this,function(){return{isSourceLoaded:He.loaded(),source:Ht.serialize(),sourceId:te}}),Ht.onAdd(this.map),this._changed=!0}},K.prototype.removeSource=function(te){if(this._checkLoaded(),this.sourceCaches[te]===void 0)throw new Error("There is no source with this ID");for(var xe in this._layers)if(this._layers[xe].source===te)return this.fire(new e.ErrorEvent(new Error('Source "'+te+'" cannot be removed while layer "'+xe+'" is using it.')));var We=this.sourceCaches[te];delete this.sourceCaches[te],delete this._updatedSources[te],We.fire(new e.Event("data",{sourceDataType:"metadata",dataType:"source",sourceId:te})),We.setEventedParent(null),We.clearTiles(),We.onRemove&&We.onRemove(this.map),this._changed=!0},K.prototype.setGeoJSONSourceData=function(te,xe){this._checkLoaded();var We=this.sourceCaches[te].getSource();We.setData(xe),this._changed=!0},K.prototype.getSource=function(te){return this.sourceCaches[te]&&this.sourceCaches[te].getSource()},K.prototype.addLayer=function(te,xe,We){We===void 0&&(We={}),this._checkLoaded();var He=te.id;if(this.getLayer(He)){this.fire(new e.ErrorEvent(new Error('Layer with id "'+He+'" already exists on this map')));return}var st;if(te.type==="custom"){if(ml(this,e.validateCustomStyleLayer(te)))return;st=e.createStyleLayer(te)}else{if(typeof te.source=="object"&&(this.addSource(He,te.source),te=e.clone$1(te),te=e.extend(te,{source:He})),this._validate(e.validateStyle.layer,"layers."+He,te,{arrayIndex:-1},We))return;st=e.createStyleLayer(te),this._validateLayer(st),st.setEventedParent(this,{layer:{id:He}}),this._serializedLayers[st.id]=st.serialize()}var Et=xe?this._order.indexOf(xe):this._order.length;if(xe&&Et===-1){this.fire(new e.ErrorEvent(new Error('Layer with id "'+xe+'" does not exist on this map.')));return}if(this._order.splice(Et,0,He),this._layerOrderChanged=!0,this._layers[He]=st,this._removedLayers[He]&&st.source&&st.type!=="custom"){var Ht=this._removedLayers[He];delete this._removedLayers[He],Ht.type!==st.type?this._updatedSources[st.source]="clear":(this._updatedSources[st.source]="reload",this.sourceCaches[st.source].pause())}this._updateLayer(st),st.onAdd&&st.onAdd(this.map)},K.prototype.moveLayer=function(te,xe){this._checkLoaded(),this._changed=!0;var We=this._layers[te];if(!We){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style and cannot be moved.")));return}if(te!==xe){var He=this._order.indexOf(te);this._order.splice(He,1);var st=xe?this._order.indexOf(xe):this._order.length;if(xe&&st===-1){this.fire(new e.ErrorEvent(new Error('Layer with id "'+xe+'" does not exist on this map.')));return}this._order.splice(st,0,te),this._layerOrderChanged=!0}},K.prototype.removeLayer=function(te){this._checkLoaded();var xe=this._layers[te];if(!xe){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style and cannot be removed.")));return}xe.setEventedParent(null);var We=this._order.indexOf(te);this._order.splice(We,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[te]=xe,delete this._layers[te],delete this._serializedLayers[te],delete this._updatedLayers[te],delete this._updatedPaintProps[te],xe.onRemove&&xe.onRemove(this.map)},K.prototype.getLayer=function(te){return this._layers[te]},K.prototype.hasLayer=function(te){return te in this._layers},K.prototype.setLayerZoomRange=function(te,xe,We){this._checkLoaded();var He=this.getLayer(te);if(!He){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style and cannot have zoom extent.")));return}He.minzoom===xe&&He.maxzoom===We||(xe!=null&&(He.minzoom=xe),We!=null&&(He.maxzoom=We),this._updateLayer(He))},K.prototype.setFilter=function(te,xe,We){We===void 0&&(We={}),this._checkLoaded();var He=this.getLayer(te);if(!He){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style and cannot be filtered.")));return}if(!e.deepEqual(He.filter,xe)){if(xe==null){He.filter=void 0,this._updateLayer(He);return}this._validate(e.validateStyle.filter,"layers."+He.id+".filter",xe,null,We)||(He.filter=e.clone$1(xe),this._updateLayer(He))}},K.prototype.getFilter=function(te){return e.clone$1(this.getLayer(te).filter)},K.prototype.setLayoutProperty=function(te,xe,We,He){He===void 0&&(He={}),this._checkLoaded();var st=this.getLayer(te);if(!st){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style and cannot be styled.")));return}e.deepEqual(st.getLayoutProperty(xe),We)||(st.setLayoutProperty(xe,We,He),this._updateLayer(st))},K.prototype.getLayoutProperty=function(te,xe){var We=this.getLayer(te);if(!We){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style.")));return}return We.getLayoutProperty(xe)},K.prototype.setPaintProperty=function(te,xe,We,He){He===void 0&&(He={}),this._checkLoaded();var st=this.getLayer(te);if(!st){this.fire(new e.ErrorEvent(new Error("The layer '"+te+"' does not exist in the map's style and cannot be styled.")));return}if(!e.deepEqual(st.getPaintProperty(xe),We)){var Et=st.setPaintProperty(xe,We,He);Et&&this._updateLayer(st),this._changed=!0,this._updatedPaintProps[te]=!0}},K.prototype.getPaintProperty=function(te,xe){return this.getLayer(te).getPaintProperty(xe)},K.prototype.setFeatureState=function(te,xe){this._checkLoaded();var We=te.source,He=te.sourceLayer,st=this.sourceCaches[We];if(st===void 0){this.fire(new e.ErrorEvent(new Error("The source '"+We+"' does not exist in the map's style.")));return}var Et=st.getSource().type;if(Et==="geojson"&&He){this.fire(new e.ErrorEvent(new Error("GeoJSON sources cannot have a sourceLayer parameter.")));return}if(Et==="vector"&&!He){this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}te.id===void 0&&this.fire(new e.ErrorEvent(new Error("The feature id parameter must be provided."))),st.setFeatureState(He,te.id,xe)},K.prototype.removeFeatureState=function(te,xe){this._checkLoaded();var We=te.source,He=this.sourceCaches[We];if(He===void 0){this.fire(new e.ErrorEvent(new Error("The source '"+We+"' does not exist in the map's style.")));return}var st=He.getSource().type,Et=st==="vector"?te.sourceLayer:void 0;if(st==="vector"&&!Et){this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}if(xe&&typeof te.id!="string"&&typeof te.id!="number"){this.fire(new e.ErrorEvent(new Error("A feature id is required to remove its specific state property.")));return}He.removeFeatureState(Et,te.id,xe)},K.prototype.getFeatureState=function(te){this._checkLoaded();var xe=te.source,We=te.sourceLayer,He=this.sourceCaches[xe];if(He===void 0){this.fire(new e.ErrorEvent(new Error("The source '"+xe+"' does not exist in the map's style.")));return}var st=He.getSource().type;if(st==="vector"&&!We){this.fire(new e.ErrorEvent(new Error("The sourceLayer parameter must be provided for vector source types.")));return}return te.id===void 0&&this.fire(new e.ErrorEvent(new Error("The feature id parameter must be provided."))),He.getFeatureState(We,te.id)},K.prototype.getTransition=function(){return e.extend({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)},K.prototype.serialize=function(){return e.filterObject({version:this.stylesheet.version,name:this.stylesheet.name,metadata:this.stylesheet.metadata,light:this.stylesheet.light,center:this.stylesheet.center,zoom:this.stylesheet.zoom,bearing:this.stylesheet.bearing,pitch:this.stylesheet.pitch,sprite:this.stylesheet.sprite,glyphs:this.stylesheet.glyphs,transition:this.stylesheet.transition,sources:e.mapObject(this.sourceCaches,function(te){return te.serialize()}),layers:this._serializeLayers(this._order)},function(te){return te!==void 0})},K.prototype._updateLayer=function(te){this._updatedLayers[te.id]=!0,te.source&&!this._updatedSources[te.source]&&this.sourceCaches[te.source].getSource().type!=="raster"&&(this._updatedSources[te.source]="reload",this.sourceCaches[te.source].pause()),this._changed=!0},K.prototype._flattenAndSortRenderedFeatures=function(te){for(var xe=this,We=function(Di){return xe._layers[Di].type==="fill-extrusion"},He={},st=[],Et=this._order.length-1;Et>=0;Et--){var Ht=this._order[Et];if(We(Ht)){He[Ht]=Et;for(var yr=0,Ir=te;yr=0;Hr--){var aa=this._order[Hr];if(We(aa))for(var Qr=st.length-1;Qr>=0;Qr--){var Gr=st[Qr].feature;if(He[Gr.layer.id] 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`,Fl=`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,lh=`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;base=max(0.0,base);height=max(0.0,height);float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`,Xf=`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Rf="uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}",Kc=`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Yf="uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}",uh=`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Ju=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,Df=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Dc=` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_width2=vec2(outset,inset);}`,Jc=`uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Eu=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`,wf=`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,zc=` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude;float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective;v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`,Us=`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Kf="uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}",Zh=`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,ch=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0),0.0,1.0);v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;v_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));}`,df=`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,Ah=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`,ku=`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,fh=`const float PI=3.141592653589793;attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec4 projectedPoint=u_matrix*vec4(a_pos,0,1);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=u_matrix*vec4(a_pos+vec2(1,0),0,1);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy,0.0,1.0);gl_Position=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale),0.0,1.0);float gamma_scale=gl_Position.w;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(1.0,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`,ru=el(Ic,Xu),Cu=el(Th,bf),xc=el(Rs,Yc),kl=el(If,Zl),Fc=el(yl,oc),$u=el(_c,Zs),vu=el(_l,Bs),xl=el($s,sc),hh=el(zl,Yu),Sh=el(Qs,fp),Uu=el(es,Wh),bc=el(Ss,So),lc=el(hf,Ku),hp=el(cu,Zf),vf=el(Rc,pf),Tf=el(Fl,lh),Lu=el(Xf,Rf),zf=el(Kc,Yf),au=el(uh,Ju),$c=el(Df,Dc),Mh=el(Jc,Eu),Ff=el(wf,zc),il=el(Us,Kf),mu=el(Zh,ch),gu=el(df,Ah),Jf=el(ku,fh);function el(ve,K){var ye=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,te=K.match(/attribute ([\w]+) ([\w]+)/g),xe=ve.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),We=K.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),He=We?We.concat(xe):xe,st={};return ve=ve.replace(ye,function(Et,Ht,yr,Ir,wr){return st[wr]=!0,Ht==="define"?` +#ifndef HAS_UNIFORM_u_`+wr+` +varying `+yr+" "+Ir+" "+wr+`; +#else +uniform `+yr+" "+Ir+" u_"+wr+`; +#endif +`:` +#ifdef HAS_UNIFORM_u_`+wr+` + `+yr+" "+Ir+" "+wr+" = u_"+wr+`; +#endif +`}),K=K.replace(ye,function(Et,Ht,yr,Ir,wr){var qt=Ir==="float"?"vec2":"vec4",tr=wr.match(/color/)?"color":qt;return st[wr]?Ht==="define"?` +#ifndef HAS_UNIFORM_u_`+wr+` +uniform lowp float u_`+wr+`_t; +attribute `+yr+" "+qt+" a_"+wr+`; +varying `+yr+" "+Ir+" "+wr+`; +#else +uniform `+yr+" "+Ir+" u_"+wr+`; +#endif +`:tr==="vec4"?` +#ifndef HAS_UNIFORM_u_`+wr+` + `+wr+" = a_"+wr+`; +#else + `+yr+" "+Ir+" "+wr+" = u_"+wr+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+wr+` + `+wr+" = unpack_mix_"+tr+"(a_"+wr+", u_"+wr+`_t); +#else + `+yr+" "+Ir+" "+wr+" = u_"+wr+`; +#endif +`:Ht==="define"?` +#ifndef HAS_UNIFORM_u_`+wr+` +uniform lowp float u_`+wr+`_t; +attribute `+yr+" "+qt+" a_"+wr+`; +#else +uniform `+yr+" "+Ir+" u_"+wr+`; +#endif +`:tr==="vec4"?` +#ifndef HAS_UNIFORM_u_`+wr+` + `+yr+" "+Ir+" "+wr+" = a_"+wr+`; +#else + `+yr+" "+Ir+" "+wr+" = u_"+wr+`; +#endif +`:` +#ifndef HAS_UNIFORM_u_`+wr+` + `+yr+" "+Ir+" "+wr+" = unpack_mix_"+tr+"(a_"+wr+", u_"+wr+`_t); +#else + `+yr+" "+Ir+" "+wr+" = u_"+wr+`; +#endif +`}),{fragmentSource:ve,vertexSource:K,staticAttributes:te,staticUniforms:He}}var mf=Object.freeze({__proto__:null,prelude:ru,background:Cu,backgroundPattern:xc,circle:kl,clippingMask:Fc,heatmap:$u,heatmapTexture:vu,collisionBox:xl,collisionCircle:hh,debug:Sh,fill:Uu,fillOutline:bc,fillOutlinePattern:lc,fillPattern:hp,fillExtrusion:vf,fillExtrusionPattern:Tf,hillshadePrepare:Lu,hillshade:zf,line:au,lineGradient:$c,linePattern:Mh,lineSDF:Ff,raster:il,symbolIcon:mu,symbolSDF:gu,symbolTextAndIcon:Jf}),wc=function(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null};wc.prototype.bind=function(K,ye,te,xe,We,He,st,Et){this.context=K;for(var Ht=this.boundPaintVertexBuffers.length!==xe.length,yr=0;!Ht&&yr>16,st>>16],u_pixel_coord_lower:[He&65535,st&65535]}}function Qc(ve,K,ye,te){var xe=ye.imageManager.getPattern(ve.from.toString()),We=ye.imageManager.getPattern(ve.to.toString()),He=ye.imageManager.getPixelSize(),st=He.width,Et=He.height,Ht=Math.pow(2,te.tileID.overscaledZ),yr=te.tileSize*Math.pow(2,ye.transform.tileZoom)/Ht,Ir=yr*(te.tileID.canonical.x+te.tileID.wrap*Ht),wr=yr*te.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:xe.tl,u_pattern_br_a:xe.br,u_pattern_tl_b:We.tl,u_pattern_br_b:We.br,u_texsize:[st,Et],u_mix:K.t,u_pattern_size_a:xe.displaySize,u_pattern_size_b:We.displaySize,u_scale_a:K.fromScale,u_scale_b:K.toScale,u_tile_units_to_pixels:1/In(te,1,ye.transform.tileZoom),u_pixel_coord_upper:[Ir>>16,wr>>16],u_pixel_coord_lower:[Ir&65535,wr&65535]}}var $f=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_lightpos:new e.Uniform3f(ve,K.u_lightpos),u_lightintensity:new e.Uniform1f(ve,K.u_lightintensity),u_lightcolor:new e.Uniform3f(ve,K.u_lightcolor),u_vertical_gradient:new e.Uniform1f(ve,K.u_vertical_gradient),u_opacity:new e.Uniform1f(ve,K.u_opacity)}},Vl=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_lightpos:new e.Uniform3f(ve,K.u_lightpos),u_lightintensity:new e.Uniform1f(ve,K.u_lightintensity),u_lightcolor:new e.Uniform3f(ve,K.u_lightcolor),u_vertical_gradient:new e.Uniform1f(ve,K.u_vertical_gradient),u_height_factor:new e.Uniform1f(ve,K.u_height_factor),u_image:new e.Uniform1i(ve,K.u_image),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_pixel_coord_upper:new e.Uniform2f(ve,K.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(ve,K.u_pixel_coord_lower),u_scale:new e.Uniform3f(ve,K.u_scale),u_fade:new e.Uniform1f(ve,K.u_fade),u_opacity:new e.Uniform1f(ve,K.u_opacity)}},Qf=function(ve,K,ye,te){var xe=K.style.light,We=xe.properties.get("position"),He=[We.x,We.y,We.z],st=e.create$1();xe.properties.get("anchor")==="viewport"&&e.fromRotation(st,-K.transform.angle),e.transformMat3(He,He,st);var Et=xe.properties.get("color");return{u_matrix:ve,u_lightpos:He,u_lightintensity:xe.properties.get("intensity"),u_lightcolor:[Et.r,Et.g,Et.b],u_vertical_gradient:+ye,u_opacity:te}},Vu=function(ve,K,ye,te,xe,We,He){return e.extend(Qf(ve,K,ye,te),uc(We,K,He),{u_height_factor:-Math.pow(2,xe.overscaledZ)/He.tileSize/8})},Tc=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix)}},cc=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_image:new e.Uniform1i(ve,K.u_image),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_pixel_coord_upper:new e.Uniform2f(ve,K.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(ve,K.u_pixel_coord_lower),u_scale:new e.Uniform3f(ve,K.u_scale),u_fade:new e.Uniform1f(ve,K.u_fade)}},Cl=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_world:new e.Uniform2f(ve,K.u_world)}},iu=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_world:new e.Uniform2f(ve,K.u_world),u_image:new e.Uniform1i(ve,K.u_image),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_pixel_coord_upper:new e.Uniform2f(ve,K.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(ve,K.u_pixel_coord_lower),u_scale:new e.Uniform3f(ve,K.u_scale),u_fade:new e.Uniform1f(ve,K.u_fade)}},fc=function(ve){return{u_matrix:ve}},Oc=function(ve,K,ye,te){return e.extend(fc(ve),uc(ye,K,te))},Qu=function(ve,K){return{u_matrix:ve,u_world:K}},ef=function(ve,K,ye,te,xe){return e.extend(Oc(ve,K,ye,te),{u_world:xe})},Zt=function(ve,K){return{u_camera_to_center_distance:new e.Uniform1f(ve,K.u_camera_to_center_distance),u_scale_with_map:new e.Uniform1i(ve,K.u_scale_with_map),u_pitch_with_map:new e.Uniform1i(ve,K.u_pitch_with_map),u_extrude_scale:new e.Uniform2f(ve,K.u_extrude_scale),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_matrix:new e.UniformMatrix4f(ve,K.u_matrix)}},fr=function(ve,K,ye,te){var xe=ve.transform,We,He;if(te.paint.get("circle-pitch-alignment")==="map"){var st=In(ye,1,xe.zoom);We=!0,He=[st,st]}else We=!1,He=xe.pixelsToGLUnits;return{u_camera_to_center_distance:xe.cameraToCenterDistance,u_scale_with_map:+(te.paint.get("circle-pitch-scale")==="map"),u_matrix:ve.translatePosMatrix(K.posMatrix,ye,te.paint.get("circle-translate"),te.paint.get("circle-translate-anchor")),u_pitch_with_map:+We,u_device_pixel_ratio:e.browser.devicePixelRatio,u_extrude_scale:He}},Yr=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_camera_to_center_distance:new e.Uniform1f(ve,K.u_camera_to_center_distance),u_pixels_to_tile_units:new e.Uniform1f(ve,K.u_pixels_to_tile_units),u_extrude_scale:new e.Uniform2f(ve,K.u_extrude_scale),u_overscale_factor:new e.Uniform1f(ve,K.u_overscale_factor)}},qr=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_inv_matrix:new e.UniformMatrix4f(ve,K.u_inv_matrix),u_camera_to_center_distance:new e.Uniform1f(ve,K.u_camera_to_center_distance),u_viewport_size:new e.Uniform2f(ve,K.u_viewport_size)}},ba=function(ve,K,ye){var te=In(ye,1,K.zoom),xe=Math.pow(2,K.zoom-ye.tileID.overscaledZ),We=ye.tileID.overscaleFactor();return{u_matrix:ve,u_camera_to_center_distance:K.cameraToCenterDistance,u_pixels_to_tile_units:te,u_extrude_scale:[K.pixelsToGLUnits[0]/(te*xe),K.pixelsToGLUnits[1]/(te*xe)],u_overscale_factor:We}},Ka=function(ve,K,ye){return{u_matrix:ve,u_inv_matrix:K,u_camera_to_center_distance:ye.cameraToCenterDistance,u_viewport_size:[ye.width,ye.height]}},oi=function(ve,K){return{u_color:new e.UniformColor(ve,K.u_color),u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_overlay:new e.Uniform1i(ve,K.u_overlay),u_overlay_scale:new e.Uniform1f(ve,K.u_overlay_scale)}},yi=function(ve,K,ye){return ye===void 0&&(ye=1),{u_matrix:ve,u_color:K,u_overlay:0,u_overlay_scale:ye}},ki=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix)}},Bi=function(ve){return{u_matrix:ve}},li=function(ve,K){return{u_extrude_scale:new e.Uniform1f(ve,K.u_extrude_scale),u_intensity:new e.Uniform1f(ve,K.u_intensity),u_matrix:new e.UniformMatrix4f(ve,K.u_matrix)}},_i=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_world:new e.Uniform2f(ve,K.u_world),u_image:new e.Uniform1i(ve,K.u_image),u_color_ramp:new e.Uniform1i(ve,K.u_color_ramp),u_opacity:new e.Uniform1f(ve,K.u_opacity)}},vi=function(ve,K,ye,te){return{u_matrix:ve,u_extrude_scale:In(K,1,ye),u_intensity:te}},ti=function(ve,K,ye,te){var xe=e.create();e.ortho(xe,0,ve.width,ve.height,0,0,1);var We=ve.context.gl;return{u_matrix:xe,u_world:[We.drawingBufferWidth,We.drawingBufferHeight],u_image:ye,u_color_ramp:te,u_opacity:K.paint.get("heatmap-opacity")}},rn=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_image:new e.Uniform1i(ve,K.u_image),u_latrange:new e.Uniform2f(ve,K.u_latrange),u_light:new e.Uniform2f(ve,K.u_light),u_shadow:new e.UniformColor(ve,K.u_shadow),u_highlight:new e.UniformColor(ve,K.u_highlight),u_accent:new e.UniformColor(ve,K.u_accent)}},Kn=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_image:new e.Uniform1i(ve,K.u_image),u_dimension:new e.Uniform2f(ve,K.u_dimension),u_zoom:new e.Uniform1f(ve,K.u_zoom),u_unpack:new e.Uniform4f(ve,K.u_unpack)}},Wn=function(ve,K,ye){var te=ye.paint.get("hillshade-shadow-color"),xe=ye.paint.get("hillshade-highlight-color"),We=ye.paint.get("hillshade-accent-color"),He=ye.paint.get("hillshade-illumination-direction")*(Math.PI/180);ye.paint.get("hillshade-illumination-anchor")==="viewport"&&(He-=ve.transform.angle);var st=!ve.options.moving;return{u_matrix:ve.transform.calculatePosMatrix(K.tileID.toUnwrapped(),st),u_image:0,u_latrange:no(ve,K.tileID),u_light:[ye.paint.get("hillshade-exaggeration"),He],u_shadow:te,u_highlight:xe,u_accent:We}},Jn=function(ve,K){var ye=K.stride,te=e.create();return e.ortho(te,0,e.EXTENT,-e.EXTENT,0,0,1),e.translate(te,te,[0,-e.EXTENT,0]),{u_matrix:te,u_image:1,u_dimension:[ye,ye],u_zoom:ve.overscaledZ,u_unpack:K.getUnpackVector()}};function no(ve,K){var ye=Math.pow(2,K.canonical.z),te=K.canonical.y;return[new e.MercatorCoordinate(0,te/ye).toLngLat().lat,new e.MercatorCoordinate(0,(te+1)/ye).toLngLat().lat]}var en=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_ratio:new e.Uniform1f(ve,K.u_ratio),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_units_to_pixels:new e.Uniform2f(ve,K.u_units_to_pixels)}},Ri=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_ratio:new e.Uniform1f(ve,K.u_ratio),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_units_to_pixels:new e.Uniform2f(ve,K.u_units_to_pixels),u_image:new e.Uniform1i(ve,K.u_image),u_image_height:new e.Uniform1f(ve,K.u_image_height)}},co=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_ratio:new e.Uniform1f(ve,K.u_ratio),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_image:new e.Uniform1i(ve,K.u_image),u_units_to_pixels:new e.Uniform2f(ve,K.u_units_to_pixels),u_scale:new e.Uniform3f(ve,K.u_scale),u_fade:new e.Uniform1f(ve,K.u_fade)}},Wo=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_ratio:new e.Uniform1f(ve,K.u_ratio),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_units_to_pixels:new e.Uniform2f(ve,K.u_units_to_pixels),u_patternscale_a:new e.Uniform2f(ve,K.u_patternscale_a),u_patternscale_b:new e.Uniform2f(ve,K.u_patternscale_b),u_sdfgamma:new e.Uniform1f(ve,K.u_sdfgamma),u_image:new e.Uniform1i(ve,K.u_image),u_tex_y_a:new e.Uniform1f(ve,K.u_tex_y_a),u_tex_y_b:new e.Uniform1f(ve,K.u_tex_y_b),u_mix:new e.Uniform1f(ve,K.u_mix)}},bs=function(ve,K,ye){var te=ve.transform;return{u_matrix:Il(ve,K,ye),u_ratio:1/In(K,1,te.zoom),u_device_pixel_ratio:e.browser.devicePixelRatio,u_units_to_pixels:[1/te.pixelsToGLUnits[0],1/te.pixelsToGLUnits[1]]}},Xs=function(ve,K,ye,te){return e.extend(bs(ve,K,ye),{u_image:0,u_image_height:te})},Ms=function(ve,K,ye,te){var xe=ve.transform,We=vs(K,xe);return{u_matrix:Il(ve,K,ye),u_texsize:K.imageAtlasTexture.size,u_ratio:1/In(K,1,xe.zoom),u_device_pixel_ratio:e.browser.devicePixelRatio,u_image:0,u_scale:[We,te.fromScale,te.toScale],u_fade:te.t,u_units_to_pixels:[1/xe.pixelsToGLUnits[0],1/xe.pixelsToGLUnits[1]]}},Hs=function(ve,K,ye,te,xe){var We=ve.transform,He=ve.lineAtlas,st=vs(K,We),Et=ye.layout.get("line-cap")==="round",Ht=He.getDash(te.from,Et),yr=He.getDash(te.to,Et),Ir=Ht.width*xe.fromScale,wr=yr.width*xe.toScale;return e.extend(bs(ve,K,ye),{u_patternscale_a:[st/Ir,-Ht.height/2],u_patternscale_b:[st/wr,-yr.height/2],u_sdfgamma:He.width/(Math.min(Ir,wr)*256*e.browser.devicePixelRatio)/2,u_image:0,u_tex_y_a:Ht.y,u_tex_y_b:yr.y,u_mix:xe.t})};function vs(ve,K){return 1/In(ve,1,K.tileZoom)}function Il(ve,K,ye){return ve.translatePosMatrix(K.tileID.posMatrix,K,ye.paint.get("line-translate"),ye.paint.get("line-translate-anchor"))}var fl=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_tl_parent:new e.Uniform2f(ve,K.u_tl_parent),u_scale_parent:new e.Uniform1f(ve,K.u_scale_parent),u_buffer_scale:new e.Uniform1f(ve,K.u_buffer_scale),u_fade_t:new e.Uniform1f(ve,K.u_fade_t),u_opacity:new e.Uniform1f(ve,K.u_opacity),u_image0:new e.Uniform1i(ve,K.u_image0),u_image1:new e.Uniform1i(ve,K.u_image1),u_brightness_low:new e.Uniform1f(ve,K.u_brightness_low),u_brightness_high:new e.Uniform1f(ve,K.u_brightness_high),u_saturation_factor:new e.Uniform1f(ve,K.u_saturation_factor),u_contrast_factor:new e.Uniform1f(ve,K.u_contrast_factor),u_spin_weights:new e.Uniform3f(ve,K.u_spin_weights)}},tl=function(ve,K,ye,te,xe){return{u_matrix:ve,u_tl_parent:K,u_scale_parent:ye,u_buffer_scale:1,u_fade_t:te.mix,u_opacity:te.opacity*xe.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:xe.paint.get("raster-brightness-min"),u_brightness_high:xe.paint.get("raster-brightness-max"),u_saturation_factor:js(xe.paint.get("raster-saturation")),u_contrast_factor:Ao(xe.paint.get("raster-contrast")),u_spin_weights:Ln(xe.paint.get("raster-hue-rotate"))}};function Ln(ve){ve*=Math.PI/180;var K=Math.sin(ve),ye=Math.cos(ve);return[(2*ye+1)/3,(-Math.sqrt(3)*K-ye+1)/3,(Math.sqrt(3)*K-ye+1)/3]}function Ao(ve){return ve>0?1/(1-ve):1+ve}function js(ve){return ve>0?1-1/(1.001-ve):-ve}var Ts=function(ve,K){return{u_is_size_zoom_constant:new e.Uniform1i(ve,K.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(ve,K.u_is_size_feature_constant),u_size_t:new e.Uniform1f(ve,K.u_size_t),u_size:new e.Uniform1f(ve,K.u_size),u_camera_to_center_distance:new e.Uniform1f(ve,K.u_camera_to_center_distance),u_pitch:new e.Uniform1f(ve,K.u_pitch),u_rotate_symbol:new e.Uniform1i(ve,K.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(ve,K.u_aspect_ratio),u_fade_change:new e.Uniform1f(ve,K.u_fade_change),u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(ve,K.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(ve,K.u_coord_matrix),u_is_text:new e.Uniform1i(ve,K.u_is_text),u_pitch_with_map:new e.Uniform1i(ve,K.u_pitch_with_map),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_texture:new e.Uniform1i(ve,K.u_texture)}},nu=function(ve,K){return{u_is_size_zoom_constant:new e.Uniform1i(ve,K.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(ve,K.u_is_size_feature_constant),u_size_t:new e.Uniform1f(ve,K.u_size_t),u_size:new e.Uniform1f(ve,K.u_size),u_camera_to_center_distance:new e.Uniform1f(ve,K.u_camera_to_center_distance),u_pitch:new e.Uniform1f(ve,K.u_pitch),u_rotate_symbol:new e.Uniform1i(ve,K.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(ve,K.u_aspect_ratio),u_fade_change:new e.Uniform1f(ve,K.u_fade_change),u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(ve,K.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(ve,K.u_coord_matrix),u_is_text:new e.Uniform1i(ve,K.u_is_text),u_pitch_with_map:new e.Uniform1i(ve,K.u_pitch_with_map),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_texture:new e.Uniform1i(ve,K.u_texture),u_gamma_scale:new e.Uniform1f(ve,K.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_is_halo:new e.Uniform1i(ve,K.u_is_halo)}},Pu=function(ve,K){return{u_is_size_zoom_constant:new e.Uniform1i(ve,K.u_is_size_zoom_constant),u_is_size_feature_constant:new e.Uniform1i(ve,K.u_is_size_feature_constant),u_size_t:new e.Uniform1f(ve,K.u_size_t),u_size:new e.Uniform1f(ve,K.u_size),u_camera_to_center_distance:new e.Uniform1f(ve,K.u_camera_to_center_distance),u_pitch:new e.Uniform1f(ve,K.u_pitch),u_rotate_symbol:new e.Uniform1i(ve,K.u_rotate_symbol),u_aspect_ratio:new e.Uniform1f(ve,K.u_aspect_ratio),u_fade_change:new e.Uniform1f(ve,K.u_fade_change),u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_label_plane_matrix:new e.UniformMatrix4f(ve,K.u_label_plane_matrix),u_coord_matrix:new e.UniformMatrix4f(ve,K.u_coord_matrix),u_is_text:new e.Uniform1i(ve,K.u_is_text),u_pitch_with_map:new e.Uniform1i(ve,K.u_pitch_with_map),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_texsize_icon:new e.Uniform2f(ve,K.u_texsize_icon),u_texture:new e.Uniform1i(ve,K.u_texture),u_texture_icon:new e.Uniform1i(ve,K.u_texture_icon),u_gamma_scale:new e.Uniform1f(ve,K.u_gamma_scale),u_device_pixel_ratio:new e.Uniform1f(ve,K.u_device_pixel_ratio),u_is_halo:new e.Uniform1i(ve,K.u_is_halo)}},ec=function(ve,K,ye,te,xe,We,He,st,Et,Ht){var yr=xe.transform;return{u_is_size_zoom_constant:+(ve==="constant"||ve==="source"),u_is_size_feature_constant:+(ve==="constant"||ve==="camera"),u_size_t:K?K.uSizeT:0,u_size:K?K.uSize:0,u_camera_to_center_distance:yr.cameraToCenterDistance,u_pitch:yr.pitch/360*2*Math.PI,u_rotate_symbol:+ye,u_aspect_ratio:yr.width/yr.height,u_fade_change:xe.options.fadeDuration?xe.symbolFadeChange:1,u_matrix:We,u_label_plane_matrix:He,u_coord_matrix:st,u_is_text:+Et,u_pitch_with_map:+te,u_texsize:Ht,u_texture:0}},tf=function(ve,K,ye,te,xe,We,He,st,Et,Ht,yr){var Ir=xe.transform;return e.extend(ec(ve,K,ye,te,xe,We,He,st,Et,Ht),{u_gamma_scale:te?Math.cos(Ir._pitch)*Ir.cameraToCenterDistance:1,u_device_pixel_ratio:e.browser.devicePixelRatio,u_is_halo:+yr})},yu=function(ve,K,ye,te,xe,We,He,st,Et,Ht){return e.extend(tf(ve,K,ye,te,xe,We,He,st,!0,Et,!0),{u_texsize_icon:Ht,u_texture_icon:1})},Bc=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_opacity:new e.Uniform1f(ve,K.u_opacity),u_color:new e.UniformColor(ve,K.u_color)}},Iu=function(ve,K){return{u_matrix:new e.UniformMatrix4f(ve,K.u_matrix),u_opacity:new e.Uniform1f(ve,K.u_opacity),u_image:new e.Uniform1i(ve,K.u_image),u_pattern_tl_a:new e.Uniform2f(ve,K.u_pattern_tl_a),u_pattern_br_a:new e.Uniform2f(ve,K.u_pattern_br_a),u_pattern_tl_b:new e.Uniform2f(ve,K.u_pattern_tl_b),u_pattern_br_b:new e.Uniform2f(ve,K.u_pattern_br_b),u_texsize:new e.Uniform2f(ve,K.u_texsize),u_mix:new e.Uniform1f(ve,K.u_mix),u_pattern_size_a:new e.Uniform2f(ve,K.u_pattern_size_a),u_pattern_size_b:new e.Uniform2f(ve,K.u_pattern_size_b),u_scale_a:new e.Uniform1f(ve,K.u_scale_a),u_scale_b:new e.Uniform1f(ve,K.u_scale_b),u_pixel_coord_upper:new e.Uniform2f(ve,K.u_pixel_coord_upper),u_pixel_coord_lower:new e.Uniform2f(ve,K.u_pixel_coord_lower),u_tile_units_to_pixels:new e.Uniform1f(ve,K.u_tile_units_to_pixels)}},Ac=function(ve,K,ye){return{u_matrix:ve,u_opacity:K,u_color:ye}},ro=function(ve,K,ye,te,xe,We){return e.extend(Qc(te,We,ye,xe),{u_matrix:ve,u_opacity:K})},Po={fillExtrusion:$f,fillExtrusionPattern:Vl,fill:Tc,fillPattern:cc,fillOutline:Cl,fillOutlinePattern:iu,circle:Zt,collisionBox:Yr,collisionCircle:qr,debug:oi,clippingMask:ki,heatmap:li,heatmapTexture:_i,hillshade:rn,hillshadePrepare:Kn,line:en,lineGradient:Ri,linePattern:co,lineSDF:Wo,raster:fl,symbolIcon:Ts,symbolSDF:nu,symbolTextAndIcon:Pu,background:Bc,backgroundPattern:Iu},Nc;function hc(ve,K,ye,te,xe,We,He){for(var st=ve.context,Et=st.gl,Ht=ve.useProgram("collisionBox"),yr=[],Ir=0,wr=0,qt=0;qt0){var Qr=e.create(),Gr=Vr;e.mul(Qr,Pr.placementInvProjMatrix,ve.transform.glCoordMatrix),e.mul(Qr,Qr,Pr.placementViewportMatrix),yr.push({circleArray:aa,circleOffset:wr,transform:Gr,invTransform:Qr}),Ir+=aa.length/4,wr=Ir}Hr&&Ht.draw(st,Et.LINES,La.disabled,Ma.disabled,ve.colorModeForRenderPass(),xr.disabled,ba(Vr,ve.transform,dr),ye.id,Hr.layoutVertexBuffer,Hr.indexBuffer,Hr.segments,null,ve.transform.zoom,null,null,Hr.collisionVertexBuffer)}}if(!(!He||!yr.length)){var ia=ve.useProgram("collisionCircle"),Ur=new e.StructArrayLayout2f1f2i16;Ur.resize(Ir*4),Ur._trim();for(var wa=0,Oa=0,ri=yr;Oa=0&&(tr[Pr.associatedIconIndex]={shiftedAnchor:Di,angle:An})}}if(yr){qt.clear();for(var Ii=ve.icon.placedSymbolArray,Wi=0;Wi0){var He=e.browser.now(),st=(He-ve.timeAdded)/We,Et=K?(He-K.timeAdded)/We:-1,Ht=ye.getSource(),yr=xe.coveringZoomLevel({tileSize:Ht.tileSize,roundZoom:Ht.roundZoom}),Ir=!K||Math.abs(K.tileID.overscaledZ-yr)>Math.abs(ve.tileID.overscaledZ-yr),wr=Ir&&ve.refreshedUponExpiration?1:e.clamp(Ir?st:1-Et,0,1);return ve.refreshedUponExpiration&&st>=1&&(ve.refreshedUponExpiration=!1),K?{opacity:1,mix:1-wr}:{opacity:wr,mix:0}}else return{opacity:1,mix:0}}function pr(ve,K,ye){var te=ye.paint.get("background-color"),xe=ye.paint.get("background-opacity");if(xe!==0){var We=ve.context,He=We.gl,st=ve.transform,Et=st.tileSize,Ht=ye.paint.get("background-pattern");if(!ve.isPatternMissing(Ht)){var yr=!Ht&&te.a===1&&xe===1&&ve.opaquePassEnabledForLayer()?"opaque":"translucent";if(ve.renderPass===yr){var Ir=Ma.disabled,wr=ve.depthModeForSublayer(0,yr==="opaque"?La.ReadWrite:La.ReadOnly),qt=ve.colorModeForRenderPass(),tr=ve.useProgram(Ht?"backgroundPattern":"background"),dr=st.coveringTiles({tileSize:Et});Ht&&(We.activeTexture.set(He.TEXTURE0),ve.imageManager.bind(ve.context));for(var Pr=ye.getCrossfadeParameters(),Vr=0,Hr=dr;Vr "+ye.overscaledZ);var Vr=Pr+" "+qt+"kb";ho(ve,Vr),He.draw(te,xe.TRIANGLES,st,Et,zt.alphaBlended,xr.disabled,yi(We,e.Color.transparent,dr),yr,ve.debugBuffer,ve.quadTriangleIndexBuffer,ve.debugSegments)}function ho(ve,K){ve.initDebugOverlayCanvas();var ye=ve.debugOverlayCanvas,te=ve.context.gl,xe=ve.debugOverlayCanvas.getContext("2d");xe.clearRect(0,0,ye.width,ye.height),xe.shadowColor="white",xe.shadowBlur=2,xe.lineWidth=1.5,xe.strokeStyle="white",xe.textBaseline="top",xe.font="bold 36px Open Sans, sans-serif",xe.fillText(K,5,5),xe.strokeText(K,5,5),ve.debugOverlayTexture.update(ye),ve.debugOverlayTexture.bind(te.LINEAR,te.CLAMP_TO_EDGE)}function ts(ve,K,ye){var te=ve.context,xe=ye.implementation;if(ve.renderPass==="offscreen"){var We=xe.prerender;We&&(ve.setCustomLayerDefaults(),te.setColorMode(ve.colorModeForRenderPass()),We.call(xe,te.gl,ve.transform.customLayerMatrix()),te.setDirty(),ve.setBaseState())}else if(ve.renderPass==="translucent"){ve.setCustomLayerDefaults(),te.setColorMode(ve.colorModeForRenderPass()),te.setStencilMode(Ma.disabled);var He=xe.renderingMode==="3d"?new La(ve.context.gl.LEQUAL,La.ReadWrite,ve.depthRangeFor3D):ve.depthModeForSublayer(0,La.ReadOnly);te.setDepthMode(He),xe.render(te.gl,ve.transform.customLayerMatrix()),te.setDirty(),ve.setBaseState(),te.bindFramebuffer.set(null)}}var yo={symbol:R,circle:Dt,heatmap:Yt,line:ea,fill:qe,"fill-extrusion":ot,hillshade:At,raster:er,background:pr,debug:Bn,custom:ts},Vo=function(K,ye){this.context=new Zr(K),this.transform=ye,this._tileTextures={},this.setup(),this.numSublayers=pa.maxUnderzooming+pa.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Zu,this.gpuTimers={}};Vo.prototype.resize=function(K,ye){if(this.width=K*e.browser.devicePixelRatio,this.height=ye*e.browser.devicePixelRatio,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(var te=0,xe=this.style._order;te256&&this.clearStencil(),te.setColorMode(zt.disabled),te.setDepthMode(La.disabled);var We=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(var He=0,st=ye;He256&&this.clearStencil();var K=this.nextStencilID++,ye=this.context.gl;return new Ma({func:ye.NOTEQUAL,mask:255},K,255,ye.KEEP,ye.KEEP,ye.REPLACE)},Vo.prototype.stencilModeForClipping=function(K){var ye=this.context.gl;return new Ma({func:ye.EQUAL,mask:255},this._tileClippingMaskIDs[K.key],0,ye.KEEP,ye.KEEP,ye.REPLACE)},Vo.prototype.stencilConfigForOverlap=function(K){var ye,te=this.context.gl,xe=K.sort(function(Ht,yr){return yr.overscaledZ-Ht.overscaledZ}),We=xe[xe.length-1].overscaledZ,He=xe[0].overscaledZ-We+1;if(He>1){this.currentStencilSource=void 0,this.nextStencilID+He>256&&this.clearStencil();for(var st={},Et=0;Et=0;this.currentLayer--){var Qr=this.style._layers[xe[this.currentLayer]],Gr=We[Qr.source],ia=Et[Qr.source];this._renderTileClippingMasks(Qr,ia),this.renderLayer(this,Gr,Qr,ia)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayer0?ye.pop():null},Vo.prototype.isPatternMissing=function(K){if(!K)return!1;if(!K.from||!K.to)return!0;var ye=this.imageManager.getPattern(K.from.toString()),te=this.imageManager.getPattern(K.to.toString());return!ye||!te},Vo.prototype.useProgram=function(K,ye){this.cache=this.cache||{};var te=""+K+(ye?ye.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"");return this.cache[te]||(this.cache[te]=new Af(this.context,K,mf[K],ye,Po[K],this._showOverdrawInspector)),this.cache[te]},Vo.prototype.setCustomLayerDefaults=function(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()},Vo.prototype.setBaseState=function(){var K=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(K.FUNC_ADD)},Vo.prototype.initDebugOverlayCanvas=function(){if(this.debugOverlayCanvas==null){this.debugOverlayCanvas=e.window.document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512;var K=this.context.gl;this.debugOverlayTexture=new e.Texture(this.context,this.debugOverlayCanvas,K.RGBA)}},Vo.prototype.destroy=function(){this.emptyTexture.destroy(),this.debugOverlayTexture&&this.debugOverlayTexture.destroy()};var ls=function(K,ye){this.points=K,this.planes=ye};ls.fromInvProjectionMatrix=function(K,ye,te){var xe=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]],We=Math.pow(2,te),He=xe.map(function(Ht){return e.transformMat4([],Ht,K)}).map(function(Ht){return e.scale$1([],Ht,1/Ht[3]/ye*We)}),st=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]],Et=st.map(function(Ht){var yr=e.sub([],He[Ht[0]],He[Ht[1]]),Ir=e.sub([],He[Ht[2]],He[Ht[1]]),wr=e.normalize([],e.cross([],yr,Ir)),qt=-e.dot(wr,He[Ht[1]]);return wr.concat(qt)});return new ls(He,Et)};var rl=function(K,ye){this.min=K,this.max=ye,this.center=e.scale$2([],e.add([],this.min,this.max),.5)};rl.prototype.quadrant=function(K){for(var ye=[K%2===0,K<2],te=e.clone$2(this.min),xe=e.clone$2(this.max),We=0;We=0;if(He===0)return 0;He!==ye.length&&(te=!1)}if(te)return 2;for(var Et=0;Et<3;Et++){for(var Ht=Number.MAX_VALUE,yr=-Number.MAX_VALUE,Ir=0;Irthis.max[Et]-this.min[Et])return 0}return 1};var Ys=function(K,ye,te,xe){if(K===void 0&&(K=0),ye===void 0&&(ye=0),te===void 0&&(te=0),xe===void 0&&(xe=0),isNaN(K)||K<0||isNaN(ye)||ye<0||isNaN(te)||te<0||isNaN(xe)||xe<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=K,this.bottom=ye,this.left=te,this.right=xe};Ys.prototype.interpolate=function(K,ye,te){return ye.top!=null&&K.top!=null&&(this.top=e.number(K.top,ye.top,te)),ye.bottom!=null&&K.bottom!=null&&(this.bottom=e.number(K.bottom,ye.bottom,te)),ye.left!=null&&K.left!=null&&(this.left=e.number(K.left,ye.left,te)),ye.right!=null&&K.right!=null&&(this.right=e.number(K.right,ye.right,te)),this},Ys.prototype.getCenter=function(K,ye){var te=e.clamp((this.left+K-this.right)/2,0,K),xe=e.clamp((this.top+ye-this.bottom)/2,0,ye);return new e.Point(te,xe)},Ys.prototype.equals=function(K){return this.top===K.top&&this.bottom===K.bottom&&this.left===K.left&&this.right===K.right},Ys.prototype.clone=function(){return new Ys(this.top,this.bottom,this.left,this.right)},Ys.prototype.toJSON=function(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}};var Zo=function(K,ye,te,xe,We){this.tileSize=512,this.maxValidLatitude=85.051129,this._renderWorldCopies=We===void 0?!0:We,this._minZoom=K||0,this._maxZoom=ye||22,this._minPitch=te??0,this._maxPitch=xe??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new e.LngLat(0,0),this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new Ys,this._posMatrixCache={},this._alignedPosMatrixCache={}},Go={minZoom:{configurable:!0},maxZoom:{configurable:!0},minPitch:{configurable:!0},maxPitch:{configurable:!0},renderWorldCopies:{configurable:!0},worldSize:{configurable:!0},centerOffset:{configurable:!0},size:{configurable:!0},bearing:{configurable:!0},pitch:{configurable:!0},fov:{configurable:!0},zoom:{configurable:!0},center:{configurable:!0},padding:{configurable:!0},centerPoint:{configurable:!0},unmodified:{configurable:!0},point:{configurable:!0}};Zo.prototype.clone=function(){var K=new Zo(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return K.tileSize=this.tileSize,K.latRange=this.latRange,K.width=this.width,K.height=this.height,K._center=this._center,K.zoom=this.zoom,K.angle=this.angle,K._fov=this._fov,K._pitch=this._pitch,K._unmodified=this._unmodified,K._edgeInsets=this._edgeInsets.clone(),K._calcMatrices(),K},Go.minZoom.get=function(){return this._minZoom},Go.minZoom.set=function(ve){this._minZoom!==ve&&(this._minZoom=ve,this.zoom=Math.max(this.zoom,ve))},Go.maxZoom.get=function(){return this._maxZoom},Go.maxZoom.set=function(ve){this._maxZoom!==ve&&(this._maxZoom=ve,this.zoom=Math.min(this.zoom,ve))},Go.minPitch.get=function(){return this._minPitch},Go.minPitch.set=function(ve){this._minPitch!==ve&&(this._minPitch=ve,this.pitch=Math.max(this.pitch,ve))},Go.maxPitch.get=function(){return this._maxPitch},Go.maxPitch.set=function(ve){this._maxPitch!==ve&&(this._maxPitch=ve,this.pitch=Math.min(this.pitch,ve))},Go.renderWorldCopies.get=function(){return this._renderWorldCopies},Go.renderWorldCopies.set=function(ve){ve===void 0?ve=!0:ve===null&&(ve=!1),this._renderWorldCopies=ve},Go.worldSize.get=function(){return this.tileSize*this.scale},Go.centerOffset.get=function(){return this.centerPoint._sub(this.size._div(2))},Go.size.get=function(){return new e.Point(this.width,this.height)},Go.bearing.get=function(){return-this.angle/Math.PI*180},Go.bearing.set=function(ve){var K=-e.wrap(ve,-180,180)*Math.PI/180;this.angle!==K&&(this._unmodified=!1,this.angle=K,this._calcMatrices(),this.rotationMatrix=e.create$2(),e.rotate(this.rotationMatrix,this.rotationMatrix,this.angle))},Go.pitch.get=function(){return this._pitch/Math.PI*180},Go.pitch.set=function(ve){var K=e.clamp(ve,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==K&&(this._unmodified=!1,this._pitch=K,this._calcMatrices())},Go.fov.get=function(){return this._fov/Math.PI*180},Go.fov.set=function(ve){ve=Math.max(.01,Math.min(60,ve)),this._fov!==ve&&(this._unmodified=!1,this._fov=ve/180*Math.PI,this._calcMatrices())},Go.zoom.get=function(){return this._zoom},Go.zoom.set=function(ve){var K=Math.min(Math.max(ve,this.minZoom),this.maxZoom);this._zoom!==K&&(this._unmodified=!1,this._zoom=K,this.scale=this.zoomScale(K),this.tileZoom=Math.floor(K),this.zoomFraction=K-this.tileZoom,this._constrain(),this._calcMatrices())},Go.center.get=function(){return this._center},Go.center.set=function(ve){ve.lat===this._center.lat&&ve.lng===this._center.lng||(this._unmodified=!1,this._center=ve,this._constrain(),this._calcMatrices())},Go.padding.get=function(){return this._edgeInsets.toJSON()},Go.padding.set=function(ve){this._edgeInsets.equals(ve)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,ve,1),this._calcMatrices())},Go.centerPoint.get=function(){return this._edgeInsets.getCenter(this.width,this.height)},Zo.prototype.isPaddingEqual=function(K){return this._edgeInsets.equals(K)},Zo.prototype.interpolatePadding=function(K,ye,te){this._unmodified=!1,this._edgeInsets.interpolate(K,ye,te),this._constrain(),this._calcMatrices()},Zo.prototype.coveringZoomLevel=function(K){var ye=(K.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/K.tileSize));return Math.max(0,ye)},Zo.prototype.getVisibleUnwrappedCoordinates=function(K){var ye=[new e.UnwrappedTileID(0,K)];if(this._renderWorldCopies)for(var te=this.pointCoordinate(new e.Point(0,0)),xe=this.pointCoordinate(new e.Point(this.width,0)),We=this.pointCoordinate(new e.Point(this.width,this.height)),He=this.pointCoordinate(new e.Point(0,this.height)),st=Math.floor(Math.min(te.x,xe.x,We.x,He.x)),Et=Math.floor(Math.max(te.x,xe.x,We.x,He.x)),Ht=1,yr=st-Ht;yr<=Et+Ht;yr++)yr!==0&&ye.push(new e.UnwrappedTileID(yr,K));return ye},Zo.prototype.coveringTiles=function(K){var ye=this.coveringZoomLevel(K),te=ye;if(K.minzoom!==void 0&&yeK.maxzoom&&(ye=K.maxzoom);var xe=e.MercatorCoordinate.fromLngLat(this.center),We=Math.pow(2,ye),He=[We*xe.x,We*xe.y,0],st=ls.fromInvProjectionMatrix(this.invProjMatrix,this.worldSize,ye),Et=K.minzoom||0;this.pitch<=60&&this._edgeInsets.top<.1&&(Et=ye);var Ht=3,yr=function(mi){return{aabb:new rl([mi*We,0,0],[(mi+1)*We,We,0]),zoom:0,x:0,y:0,wrap:mi,fullyVisible:!1}},Ir=[],wr=[],qt=ye,tr=K.reparseOverscaled?te:ye;if(this._renderWorldCopies)for(var dr=1;dr<=3;dr++)Ir.push(yr(-dr)),Ir.push(yr(dr));for(Ir.push(yr(0));Ir.length>0;){var Pr=Ir.pop(),Vr=Pr.x,Hr=Pr.y,aa=Pr.fullyVisible;if(!aa){var Qr=Pr.aabb.intersects(st);if(Qr===0)continue;aa=Qr===2}var Gr=Pr.aabb.distanceX(He),ia=Pr.aabb.distanceY(He),Ur=Math.max(Math.abs(Gr),Math.abs(ia)),wa=Ht+(1<wa&&Pr.zoom>=Et){wr.push({tileID:new e.OverscaledTileID(Pr.zoom===qt?tr:Pr.zoom,Pr.wrap,Pr.zoom,Vr,Hr),distanceSq:e.sqrLen([He[0]-.5-Vr,He[1]-.5-Hr])});continue}for(var Oa=0;Oa<4;Oa++){var ri=(Vr<<1)+Oa%2,Pi=(Hr<<1)+(Oa>>1);Ir.push({aabb:Pr.aabb.quadrant(Oa),zoom:Pr.zoom+1,x:ri,y:Pi,wrap:Pr.wrap,fullyVisible:aa})}}return wr.sort(function(mi,Di){return mi.distanceSq-Di.distanceSq}).map(function(mi){return mi.tileID})},Zo.prototype.resize=function(K,ye){this.width=K,this.height=ye,this.pixelsToGLUnits=[2/K,-2/ye],this._constrain(),this._calcMatrices()},Go.unmodified.get=function(){return this._unmodified},Zo.prototype.zoomScale=function(K){return Math.pow(2,K)},Zo.prototype.scaleZoom=function(K){return Math.log(K)/Math.LN2},Zo.prototype.project=function(K){var ye=e.clamp(K.lat,-this.maxValidLatitude,this.maxValidLatitude);return new e.Point(e.mercatorXfromLng(K.lng)*this.worldSize,e.mercatorYfromLat(ye)*this.worldSize)},Zo.prototype.unproject=function(K){return new e.MercatorCoordinate(K.x/this.worldSize,K.y/this.worldSize).toLngLat()},Go.point.get=function(){return this.project(this.center)},Zo.prototype.setLocationAtPoint=function(K,ye){var te=this.pointCoordinate(ye),xe=this.pointCoordinate(this.centerPoint),We=this.locationCoordinate(K),He=new e.MercatorCoordinate(We.x-(te.x-xe.x),We.y-(te.y-xe.y));this.center=this.coordinateLocation(He),this._renderWorldCopies&&(this.center=this.center.wrap())},Zo.prototype.locationPoint=function(K){return this.coordinatePoint(this.locationCoordinate(K))},Zo.prototype.pointLocation=function(K){return this.coordinateLocation(this.pointCoordinate(K))},Zo.prototype.locationCoordinate=function(K){return e.MercatorCoordinate.fromLngLat(K)},Zo.prototype.coordinateLocation=function(K){return K.toLngLat()},Zo.prototype.pointCoordinate=function(K){var ye=0,te=[K.x,K.y,0,1],xe=[K.x,K.y,1,1];e.transformMat4(te,te,this.pixelMatrixInverse),e.transformMat4(xe,xe,this.pixelMatrixInverse);var We=te[3],He=xe[3],st=te[0]/We,Et=xe[0]/He,Ht=te[1]/We,yr=xe[1]/He,Ir=te[2]/We,wr=xe[2]/He,qt=Ir===wr?0:(ye-Ir)/(wr-Ir);return new e.MercatorCoordinate(e.number(st,Et,qt)/this.worldSize,e.number(Ht,yr,qt)/this.worldSize)},Zo.prototype.coordinatePoint=function(K){var ye=[K.x*this.worldSize,K.y*this.worldSize,0,1];return e.transformMat4(ye,ye,this.pixelMatrix),new e.Point(ye[0]/ye[3],ye[1]/ye[3])},Zo.prototype.getBounds=function(){return new e.LngLatBounds().extend(this.pointLocation(new e.Point(0,0))).extend(this.pointLocation(new e.Point(this.width,0))).extend(this.pointLocation(new e.Point(this.width,this.height))).extend(this.pointLocation(new e.Point(0,this.height)))},Zo.prototype.getMaxBounds=function(){return!this.latRange||this.latRange.length!==2||!this.lngRange||this.lngRange.length!==2?null:new e.LngLatBounds([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]])},Zo.prototype.setMaxBounds=function(K){K?(this.lngRange=[K.getWest(),K.getEast()],this.latRange=[K.getSouth(),K.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-this.maxValidLatitude,this.maxValidLatitude])},Zo.prototype.calculatePosMatrix=function(K,ye){ye===void 0&&(ye=!1);var te=K.key,xe=ye?this._alignedPosMatrixCache:this._posMatrixCache;if(xe[te])return xe[te];var We=K.canonical,He=this.worldSize/this.zoomScale(We.z),st=We.x+Math.pow(2,We.z)*K.wrap,Et=e.identity(new Float64Array(16));return e.translate(Et,Et,[st*He,We.y*He,0]),e.scale(Et,Et,[He/e.EXTENT,He/e.EXTENT,1]),e.multiply(Et,ye?this.alignedProjMatrix:this.projMatrix,Et),xe[te]=new Float32Array(Et),xe[te]},Zo.prototype.customLayerMatrix=function(){return this.mercatorMatrix.slice()},Zo.prototype._constrain=function(){if(!(!this.center||!this.width||!this.height||this._constraining)){this._constraining=!0;var K=-90,ye=90,te=-180,xe=180,We,He,st,Et,Ht=this.size,yr=this._unmodified;if(this.latRange){var Ir=this.latRange;K=e.mercatorYfromLat(Ir[1])*this.worldSize,ye=e.mercatorYfromLat(Ir[0])*this.worldSize,We=ye-Kye&&(Et=ye-Pr)}if(this.lngRange){var Vr=qt.x,Hr=Ht.x/2;Vr-Hrxe&&(st=xe-Hr)}(st!==void 0||Et!==void 0)&&(this.center=this.unproject(new e.Point(st!==void 0?st:qt.x,Et!==void 0?Et:qt.y))),this._unmodified=yr,this._constraining=!1}},Zo.prototype._calcMatrices=function(){if(this.height){var K=this._fov/2,ye=this.centerOffset;this.cameraToCenterDistance=.5/Math.tan(K)*this.height;var te=Math.PI/2+this._pitch,xe=this._fov*(.5+ye.y/this.height),We=Math.sin(xe)*this.cameraToCenterDistance/Math.sin(e.clamp(Math.PI-te-xe,.01,Math.PI-.01)),He=this.point,st=He.x,Et=He.y,Ht=Math.cos(Math.PI/2-this._pitch)*We+this.cameraToCenterDistance,yr=Ht*1.01,Ir=this.height/50,wr=new Float64Array(16);e.perspective(wr,this._fov,this.width/this.height,Ir,yr),wr[8]=-ye.x*2/this.width,wr[9]=ye.y*2/this.height,e.scale(wr,wr,[1,-1,1]),e.translate(wr,wr,[0,0,-this.cameraToCenterDistance]),e.rotateX(wr,wr,this._pitch),e.rotateZ(wr,wr,this.angle),e.translate(wr,wr,[-st,-Et,0]),this.mercatorMatrix=e.scale([],wr,[this.worldSize,this.worldSize,this.worldSize]),e.scale(wr,wr,[1,1,e.mercatorZfromAltitude(1,this.center.lat)*this.worldSize,1]),this.projMatrix=wr,this.invProjMatrix=e.invert([],this.projMatrix);var qt=this.width%2/2,tr=this.height%2/2,dr=Math.cos(this.angle),Pr=Math.sin(this.angle),Vr=st-Math.round(st)+dr*qt+Pr*tr,Hr=Et-Math.round(Et)+dr*tr+Pr*qt,aa=new Float64Array(wr);if(e.translate(aa,aa,[Vr>.5?Vr-1:Vr,Hr>.5?Hr-1:Hr,0]),this.alignedProjMatrix=aa,wr=e.create(),e.scale(wr,wr,[this.width/2,-this.height/2,1]),e.translate(wr,wr,[1,-1,0]),this.labelPlaneMatrix=wr,wr=e.create(),e.scale(wr,wr,[1,-1,1]),e.translate(wr,wr,[-1,-1,0]),e.scale(wr,wr,[2/this.width,2/this.height,1]),this.glCoordMatrix=wr,this.pixelMatrix=e.multiply(new Float64Array(16),this.labelPlaneMatrix,this.projMatrix),wr=e.invert(new Float64Array(16),this.pixelMatrix),!wr)throw new Error("failed to invert matrix");this.pixelMatrixInverse=wr,this._posMatrixCache={},this._alignedPosMatrixCache={}}},Zo.prototype.maxPitchScaleFactor=function(){if(!this.pixelMatrixInverse)return 1;var K=this.pointCoordinate(new e.Point(0,0)),ye=[K.x*this.worldSize,K.y*this.worldSize,0,1],te=e.transformMat4(ye,ye,this.pixelMatrix);return te[3]/this.cameraToCenterDistance},Zo.prototype.getCameraPoint=function(){var K=this._pitch,ye=Math.tan(K)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new e.Point(0,ye))},Zo.prototype.getCameraQueryGeometry=function(K){var ye=this.getCameraPoint();if(K.length===1)return[K[0],ye];for(var te=ye.x,xe=ye.y,We=ye.x,He=ye.y,st=0,Et=K;st=3&&!K.some(function(te){return isNaN(te)})){var ye=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(K[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+K[2],+K[1]],zoom:+K[0],bearing:ye,pitch:+(K[4]||0)}),!0}return!1},Xl.prototype._updateHashUnthrottled=function(){var K=e.window.location.href.replace(/(#.+)?$/,this.getHashString());try{e.window.history.replaceState(e.window.history.state,null,K)}catch{}};var qu={linearity:.3,easing:e.bezier(0,0,.3,1)},fu=e.extend({deceleration:2500,maxSpeed:1400},qu),bl=e.extend({deceleration:20,maxSpeed:1400},qu),ou=e.extend({deceleration:1e3,maxSpeed:360},qu),Sc=e.extend({deceleration:1e3,maxSpeed:90},qu),ql=function(K){this._map=K,this.clear()};ql.prototype.clear=function(){this._inertiaBuffer=[]},ql.prototype.record=function(K){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:e.browser.now(),settings:K})},ql.prototype._drainInertiaBuffer=function(){for(var K=this._inertiaBuffer,ye=e.browser.now(),te=160;K.length>0&&ye-K[0].time>te;)K.shift()},ql.prototype._onMoveEnd=function(K){if(this._drainInertiaBuffer(),!(this._inertiaBuffer.length<2)){for(var ye={zoom:0,bearing:0,pitch:0,pan:new e.Point(0,0),pinchAround:void 0,around:void 0},te=0,xe=this._inertiaBuffer;te=this._clickTolerance||this._map.fire(new Re(K.type,this._map,K))},vt.prototype.dblclick=function(K){return this._firePreventable(new Re(K.type,this._map,K))},vt.prototype.mouseover=function(K){this._map.fire(new Re(K.type,this._map,K))},vt.prototype.mouseout=function(K){this._map.fire(new Re(K.type,this._map,K))},vt.prototype.touchstart=function(K){return this._firePreventable(new $e(K.type,this._map,K))},vt.prototype.touchmove=function(K){this._map.fire(new $e(K.type,this._map,K))},vt.prototype.touchend=function(K){this._map.fire(new $e(K.type,this._map,K))},vt.prototype.touchcancel=function(K){this._map.fire(new $e(K.type,this._map,K))},vt.prototype._firePreventable=function(K){if(this._map.fire(K),K.defaultPrevented)return{}},vt.prototype.isEnabled=function(){return!0},vt.prototype.isActive=function(){return!1},vt.prototype.enable=function(){},vt.prototype.disable=function(){};var wt=function(K){this._map=K};wt.prototype.reset=function(){this._delayContextMenu=!1,delete this._contextMenuEvent},wt.prototype.mousemove=function(K){this._map.fire(new Re(K.type,this._map,K))},wt.prototype.mousedown=function(){this._delayContextMenu=!0},wt.prototype.mouseup=function(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new Re("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)},wt.prototype.contextmenu=function(K){this._delayContextMenu?this._contextMenuEvent=K:this._map.fire(new Re(K.type,this._map,K)),this._map.listens("contextmenu")&&K.preventDefault()},wt.prototype.isEnabled=function(){return!0},wt.prototype.isActive=function(){return!1},wt.prototype.enable=function(){},wt.prototype.disable=function(){};var Jt=function(K,ye){this._map=K,this._el=K.getCanvasContainer(),this._container=K.getContainer(),this._clickTolerance=ye.clickTolerance||1};Jt.prototype.isEnabled=function(){return!!this._enabled},Jt.prototype.isActive=function(){return!!this._active},Jt.prototype.enable=function(){this.isEnabled()||(this._enabled=!0)},Jt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Jt.prototype.mousedown=function(K,ye){this.isEnabled()&&K.shiftKey&&K.button===0&&(r.disableDrag(),this._startPos=this._lastPos=ye,this._active=!0)},Jt.prototype.mousemoveWindow=function(K,ye){if(this._active){var te=ye;if(!(this._lastPos.equals(te)||!this._box&&te.dist(this._startPos)this.numTouches)&&(this.aborted=!0),!this.aborted&&(this.startTime===void 0&&(this.startTime=K.timeStamp),te.length===this.numTouches&&(this.centroid=or(ye),this.touches=Rt(te,ye)))},fa.prototype.touchmove=function(K,ye,te){if(!(this.aborted||!this.centroid)){var xe=Rt(te,ye);for(var We in this.touches){var He=this.touches[We],st=xe[We];(!st||st.dist(He)>va)&&(this.aborted=!0)}}},fa.prototype.touchend=function(K,ye,te){if((!this.centroid||K.timeStamp-this.startTime>Or)&&(this.aborted=!0),te.length===0){var xe=!this.aborted&&this.centroid;if(this.reset(),xe)return xe}};var Va=function(K){this.singleTap=new fa(K),this.numTaps=K.numTaps,this.reset()};Va.prototype.reset=function(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()},Va.prototype.touchstart=function(K,ye,te){this.singleTap.touchstart(K,ye,te)},Va.prototype.touchmove=function(K,ye,te){this.singleTap.touchmove(K,ye,te)},Va.prototype.touchend=function(K,ye,te){var xe=this.singleTap.touchend(K,ye,te);if(xe){var We=K.timeStamp-this.lastTime0&&(this._active=!0);var xe=Rt(te,ye),We=new e.Point(0,0),He=new e.Point(0,0),st=0;for(var Et in xe){var Ht=xe[Et],yr=this._touches[Et];yr&&(We._add(Ht),He._add(Ht.sub(yr)),st++,xe[Et]=Ht)}if(this._touches=xe,!(stMath.abs(ve.x)}var Vi=100,ao=function(ve){function K(){ve.apply(this,arguments)}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K.prototype.reset=function(){ve.prototype.reset.call(this),this._valid=void 0,delete this._firstMove,delete this._lastPoints},K.prototype._start=function(te){this._lastPoints=te,sl(te[0].sub(te[1]))&&(this._valid=!1)},K.prototype._move=function(te,xe,We){var He=te[0].sub(this._lastPoints[0]),st=te[1].sub(this._lastPoints[1]);if(this._valid=this.gestureBeginsVertically(He,st,We.timeStamp),!!this._valid){this._lastPoints=te,this._active=!0;var Et=(He.y+st.y)/2,Ht=-.5;return{pitchDelta:Et*Ht}}},K.prototype.gestureBeginsVertically=function(te,xe,We){if(this._valid!==void 0)return this._valid;var He=2,st=te.mag()>=He,Et=xe.mag()>=He;if(!(!st&&!Et)){if(!st||!Et)return this._firstMove===void 0&&(this._firstMove=We),We-this._firstMove0==xe.y>0;return sl(te)&&sl(xe)&&Ht}},K}(hn),ns={panStep:100,bearingStep:15,pitchStep:10},hs=function(){var K=ns;this._panStep=K.panStep,this._bearingStep=K.bearingStep,this._pitchStep=K.pitchStep,this._rotationDisabled=!1};hs.prototype.reset=function(){this._active=!1},hs.prototype.keydown=function(K){var ye=this;if(!(K.altKey||K.ctrlKey||K.metaKey)){var te=0,xe=0,We=0,He=0,st=0;switch(K.keyCode){case 61:case 107:case 171:case 187:te=1;break;case 189:case 109:case 173:te=-1;break;case 37:K.shiftKey?xe=-1:(K.preventDefault(),He=-1);break;case 39:K.shiftKey?xe=1:(K.preventDefault(),He=1);break;case 38:K.shiftKey?We=1:(K.preventDefault(),st=-1);break;case 40:K.shiftKey?We=-1:(K.preventDefault(),st=1);break;default:return}return this._rotationDisabled&&(xe=0,We=0),{cameraAnimation:function(Et){var Ht=Et.getZoom();Et.easeTo({duration:300,easeId:"keyboardHandler",easing:hl,zoom:te?Math.round(Ht)+te*(K.shiftKey?2:1):Ht,bearing:Et.getBearing()+xe*ye._bearingStep,pitch:Et.getPitch()+We*ye._pitchStep,offset:[-He*ye._panStep,-st*ye._panStep],center:Et.getCenter()},{originalEvent:K})}}}},hs.prototype.enable=function(){this._enabled=!0},hs.prototype.disable=function(){this._enabled=!1,this.reset()},hs.prototype.isEnabled=function(){return this._enabled},hs.prototype.isActive=function(){return this._active},hs.prototype.disableRotation=function(){this._rotationDisabled=!0},hs.prototype.enableRotation=function(){this._rotationDisabled=!1};function hl(ve){return ve*(2-ve)}var Dl=4.000244140625,hu=1/100,Ll=1/450,dc=2,Qt=function(K,ye){this._map=K,this._el=K.getCanvasContainer(),this._handler=ye,this._delta=0,this._defaultZoomRate=hu,this._wheelZoomRate=Ll,e.bindAll(["_onTimeout"],this)};Qt.prototype.setZoomRate=function(K){this._defaultZoomRate=K},Qt.prototype.setWheelZoomRate=function(K){this._wheelZoomRate=K},Qt.prototype.isEnabled=function(){return!!this._enabled},Qt.prototype.isActive=function(){return!!this._active||this._finishTimeout!==void 0},Qt.prototype.isZooming=function(){return!!this._zooming},Qt.prototype.enable=function(K){this.isEnabled()||(this._enabled=!0,this._aroundCenter=K&&K.around==="center")},Qt.prototype.disable=function(){this.isEnabled()&&(this._enabled=!1)},Qt.prototype.wheel=function(K){if(this.isEnabled()){var ye=K.deltaMode===e.window.WheelEvent.DOM_DELTA_LINE?K.deltaY*40:K.deltaY,te=e.browser.now(),xe=te-(this._lastWheelEventTime||0);this._lastWheelEventTime=te,ye!==0&&ye%Dl===0?this._type="wheel":ye!==0&&Math.abs(ye)<4?this._type="trackpad":xe>400?(this._type=null,this._lastValue=ye,this._timeout=setTimeout(this._onTimeout,40,K)):this._type||(this._type=Math.abs(xe*ye)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,ye+=this._lastValue)),K.shiftKey&&ye&&(ye=ye/4),this._type&&(this._lastWheelEvent=K,this._delta-=ye,this._active||this._start(K)),K.preventDefault()}},Qt.prototype._onTimeout=function(K){this._type="wheel",this._delta-=this._lastValue,this._active||this._start(K)},Qt.prototype._start=function(K){if(this._delta){this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);var ye=r.mousePos(this._el,K);this._around=e.LngLat.convert(this._aroundCenter?this._map.getCenter():this._map.unproject(ye)),this._aroundPoint=this._map.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._handler._triggerRenderFrame())}},Qt.prototype.renderFrame=function(){var K=this;if(this._frameId&&(this._frameId=null,!!this.isActive())){var ye=this._map.transform;if(this._delta!==0){var te=this._type==="wheel"&&Math.abs(this._delta)>Dl?this._wheelZoomRate:this._defaultZoomRate,xe=dc/(1+Math.exp(-Math.abs(this._delta*te)));this._delta<0&&xe!==0&&(xe=1/xe);var We=typeof this._targetZoom=="number"?ye.zoomScale(this._targetZoom):ye.scale;this._targetZoom=Math.min(ye.maxZoom,Math.max(ye.minZoom,ye.scaleZoom(We*xe))),this._type==="wheel"&&(this._startZoom=ye.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}var He=typeof this._targetZoom=="number"?this._targetZoom:ye.zoom,st=this._startZoom,Et=this._easing,Ht=!1,yr;if(this._type==="wheel"&&st&&Et){var Ir=Math.min((e.browser.now()-this._lastWheelEventTime)/200,1),wr=Et(Ir);yr=e.number(st,He,wr),Ir<1?this._frameId||(this._frameId=!0):Ht=!0}else yr=He,Ht=!0;return this._active=!0,Ht&&(this._active=!1,this._finishTimeout=setTimeout(function(){K._zooming=!1,K._handler._triggerRenderFrame(),delete K._targetZoom,delete K._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!Ht,zoomDelta:yr-ye.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}},Qt.prototype._smoothOutEasing=function(K){var ye=e.ease;if(this._prevEase){var te=this._prevEase,xe=(e.browser.now()-te.start)/te.duration,We=te.easing(xe+.01)-te.easing(xe),He=.27/Math.sqrt(We*We+1e-4)*.01,st=Math.sqrt(.27*.27-He*He);ye=e.bezier(He,st,.25,1)}return this._prevEase={start:e.browser.now(),duration:K,easing:ye},ye},Qt.prototype.reset=function(){this._active=!1};var ra=function(K,ye){this._clickZoom=K,this._tapZoom=ye};ra.prototype.enable=function(){this._clickZoom.enable(),this._tapZoom.enable()},ra.prototype.disable=function(){this._clickZoom.disable(),this._tapZoom.disable()},ra.prototype.isEnabled=function(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()},ra.prototype.isActive=function(){return this._clickZoom.isActive()||this._tapZoom.isActive()};var Ta=function(){this.reset()};Ta.prototype.reset=function(){this._active=!1},Ta.prototype.dblclick=function(K,ye){return K.preventDefault(),{cameraAnimation:function(te){te.easeTo({duration:300,zoom:te.getZoom()+(K.shiftKey?-1:1),around:te.unproject(ye)},{originalEvent:K})}}},Ta.prototype.enable=function(){this._enabled=!0},Ta.prototype.disable=function(){this._enabled=!1,this.reset()},Ta.prototype.isEnabled=function(){return this._enabled},Ta.prototype.isActive=function(){return this._active};var si=function(){this._tap=new Va({numTouches:1,numTaps:1}),this.reset()};si.prototype.reset=function(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,this._tap.reset()},si.prototype.touchstart=function(K,ye,te){this._swipePoint||(this._tapTime&&K.timeStamp-this._tapTime>Dr&&this.reset(),this._tapTime?te.length>0&&(this._swipePoint=ye[0],this._swipeTouch=te[0].identifier):this._tap.touchstart(K,ye,te))},si.prototype.touchmove=function(K,ye,te){if(!this._tapTime)this._tap.touchmove(K,ye,te);else if(this._swipePoint){if(te[0].identifier!==this._swipeTouch)return;var xe=ye[0],We=xe.y-this._swipePoint.y;return this._swipePoint=xe,K.preventDefault(),this._active=!0,{zoomDelta:We/128}}},si.prototype.touchend=function(K,ye,te){if(this._tapTime)this._swipePoint&&te.length===0&&this.reset();else{var xe=this._tap.touchend(K,ye,te);xe&&(this._tapTime=K.timeStamp)}},si.prototype.touchcancel=function(){this.reset()},si.prototype.enable=function(){this._enabled=!0},si.prototype.disable=function(){this._enabled=!1,this.reset()},si.prototype.isEnabled=function(){return this._enabled},si.prototype.isActive=function(){return this._active};var wi=function(K,ye,te){this._el=K,this._mousePan=ye,this._touchPan=te};wi.prototype.enable=function(K){this._inertiaOptions=K||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("mapboxgl-touch-drag-pan")},wi.prototype.disable=function(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("mapboxgl-touch-drag-pan")},wi.prototype.isEnabled=function(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()},wi.prototype.isActive=function(){return this._mousePan.isActive()||this._touchPan.isActive()};var xi=function(K,ye,te){this._pitchWithRotate=K.pitchWithRotate,this._mouseRotate=ye,this._mousePitch=te};xi.prototype.enable=function(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()},xi.prototype.disable=function(){this._mouseRotate.disable(),this._mousePitch.disable()},xi.prototype.isEnabled=function(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())},xi.prototype.isActive=function(){return this._mouseRotate.isActive()||this._mousePitch.isActive()};var bi=function(K,ye,te,xe){this._el=K,this._touchZoom=ye,this._touchRotate=te,this._tapDragZoom=xe,this._rotationDisabled=!1,this._enabled=!0};bi.prototype.enable=function(K){this._touchZoom.enable(K),this._rotationDisabled||this._touchRotate.enable(K),this._tapDragZoom.enable(),this._el.classList.add("mapboxgl-touch-zoom-rotate")},bi.prototype.disable=function(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("mapboxgl-touch-zoom-rotate")},bi.prototype.isEnabled=function(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()},bi.prototype.isActive=function(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()},bi.prototype.disableRotation=function(){this._rotationDisabled=!0,this._touchRotate.disable()},bi.prototype.enableRotation=function(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()};var Fi=function(ve){return ve.zoom||ve.drag||ve.pitch||ve.rotate},cn=function(ve){function K(){ve.apply(this,arguments)}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K}(e.Event);function fn(ve){return ve.panDelta&&ve.panDelta.mag()||ve.zoomDelta||ve.bearingDelta||ve.pitchDelta}var Gi=function(K,ye){this._map=K,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new ql(K),this._bearingSnap=ye.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(ye),e.bindAll(["handleEvent","handleWindowEvent"],this);var te=this._el;this._listeners=[[te,"touchstart",{passive:!0}],[te,"touchmove",{passive:!1}],[te,"touchend",void 0],[te,"touchcancel",void 0],[te,"mousedown",void 0],[te,"mousemove",void 0],[te,"mouseup",void 0],[e.window.document,"mousemove",{capture:!0}],[e.window.document,"mouseup",void 0],[te,"mouseover",void 0],[te,"mouseout",void 0],[te,"dblclick",void 0],[te,"click",void 0],[te,"keydown",{capture:!1}],[te,"keyup",void 0],[te,"wheel",{passive:!1}],[te,"contextmenu",void 0],[e.window,"blur",void 0]];for(var xe=0,We=this._listeners;xest?Math.min(2,Gr):Math.max(.5,Gr),mi=Math.pow(Pi,1-Oa),Di=He.unproject(aa.add(Qr.mult(Oa*mi)).mult(ri));He.setLocationAtPoint(He.renderWorldCopies?Di.wrap():Di,Pr)}We._fireMoveEvents(xe)},function(Oa){We._afterEase(xe,Oa)},te),this},K.prototype._prepareEase=function(te,xe,We){We===void 0&&(We={}),this._moving=!0,!xe&&!We.moving&&this.fire(new e.Event("movestart",te)),this._zooming&&!We.zooming&&this.fire(new e.Event("zoomstart",te)),this._rotating&&!We.rotating&&this.fire(new e.Event("rotatestart",te)),this._pitching&&!We.pitching&&this.fire(new e.Event("pitchstart",te))},K.prototype._fireMoveEvents=function(te){this.fire(new e.Event("move",te)),this._zooming&&this.fire(new e.Event("zoom",te)),this._rotating&&this.fire(new e.Event("rotate",te)),this._pitching&&this.fire(new e.Event("pitch",te))},K.prototype._afterEase=function(te,xe){if(!(this._easeId&&xe&&this._easeId===xe)){delete this._easeId;var We=this._zooming,He=this._rotating,st=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,We&&this.fire(new e.Event("zoomend",te)),He&&this.fire(new e.Event("rotateend",te)),st&&this.fire(new e.Event("pitchend",te)),this.fire(new e.Event("moveend",te))}},K.prototype.flyTo=function(te,xe){var We=this;if(!te.essential&&e.browser.prefersReducedMotion){var He=e.pick(te,["center","zoom","bearing","pitch","around"]);return this.jumpTo(He,xe)}this.stop(),te=e.extend({offset:[0,0],speed:1.2,curve:1.42,easing:e.ease},te);var st=this.transform,Et=this.getZoom(),Ht=this.getBearing(),yr=this.getPitch(),Ir=this.getPadding(),wr="zoom"in te?e.clamp(+te.zoom,st.minZoom,st.maxZoom):Et,qt="bearing"in te?this._normalizeBearing(te.bearing,Ht):Ht,tr="pitch"in te?+te.pitch:yr,dr="padding"in te?te.padding:st.padding,Pr=st.zoomScale(wr-Et),Vr=e.Point.convert(te.offset),Hr=st.centerPoint.add(Vr),aa=st.pointLocation(Hr),Qr=e.LngLat.convert(te.center||aa);this._normalizeCenter(Qr);var Gr=st.project(aa),ia=st.project(Qr).sub(Gr),Ur=te.curve,wa=Math.max(st.width,st.height),Oa=wa/Pr,ri=ia.mag();if("minZoom"in te){var Pi=e.clamp(Math.min(te.minZoom,Et,wr),st.minZoom,st.maxZoom),mi=wa/st.zoomScale(Pi-Et);Ur=Math.sqrt(mi/ri*2)}var Di=Ur*Ur;function An(qo){var Ls=(Oa*Oa-wa*wa+(qo?-1:1)*Di*Di*ri*ri)/(2*(qo?Oa:wa)*Di*ri);return Math.log(Math.sqrt(Ls*Ls+1)-Ls)}function ln(qo){return(Math.exp(qo)-Math.exp(-qo))/2}function Ii(qo){return(Math.exp(qo)+Math.exp(-qo))/2}function Wi(qo){return ln(qo)/Ii(qo)}var Hi=An(0),yn=function(qo){return Ii(Hi)/Ii(Hi+Ur*qo)},zn=function(qo){return wa*((Ii(Hi)*Wi(Hi+Ur*qo)-ln(Hi))/Di)/ri},ms=(An(1)-Hi)/Ur;if(Math.abs(ri)<1e-6||!isFinite(ms)){if(Math.abs(wa-Oa)<1e-6)return this.easeTo(te,xe);var us=Oate.maxDuration&&(te.duration=0),this._zooming=!0,this._rotating=Ht!==qt,this._pitching=tr!==yr,this._padding=!st.isPaddingEqual(dr),this._prepareEase(xe,!1),this._ease(function(qo){var Ls=qo*ms,wl=1/yn(Ls);st.zoom=qo===1?wr:Et+st.scaleZoom(wl),We._rotating&&(st.bearing=e.number(Ht,qt,qo)),We._pitching&&(st.pitch=e.number(yr,tr,qo)),We._padding&&(st.interpolatePadding(Ir,dr,qo),Hr=st.centerPoint.add(Vr));var Ru=qo===1?Qr:st.unproject(Gr.add(ia.mult(zn(Ls))).mult(wl));st.setLocationAtPoint(st.renderWorldCopies?Ru.wrap():Ru,Hr),We._fireMoveEvents(xe)},function(){return We._afterEase(xe)},te),this},K.prototype.isEasing=function(){return!!this._easeFrameId},K.prototype.stop=function(){return this._stop()},K.prototype._stop=function(te,xe){if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){var We=this._onEaseEnd;delete this._onEaseEnd,We.call(this,xe)}if(!te){var He=this.handlers;He&&He.stop(!1)}return this},K.prototype._ease=function(te,xe,We){We.animate===!1||We.duration===0?(te(1),xe()):(this._easeStart=e.browser.now(),this._easeOptions=We,this._onEaseFrame=te,this._onEaseEnd=xe,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))},K.prototype._renderFrameCallback=function(){var te=Math.min((e.browser.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(te)),te<1?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},K.prototype._normalizeBearing=function(te,xe){te=e.wrap(te,-180,180);var We=Math.abs(te-xe);return Math.abs(te-360-xe)180?-360:We<-180?360:0}},K}(e.Evented),nn=function(K){K===void 0&&(K={}),this.options=K,e.bindAll(["_toggleAttribution","_updateEditLink","_updateData","_updateCompact"],this)};nn.prototype.getDefaultPosition=function(){return"bottom-right"},nn.prototype.onAdd=function(K){var ye=this.options&&this.options.compact;return this._map=K,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-attrib"),this._compactButton=r.create("button","mapboxgl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=r.create("div","mapboxgl-ctrl-attrib-inner",this._container),this._innerContainer.setAttribute("role","list"),ye&&this._container.classList.add("mapboxgl-compact"),this._updateAttributions(),this._updateEditLink(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("moveend",this._updateEditLink),ye===void 0&&(this._map.on("resize",this._updateCompact),this._updateCompact()),this._container},nn.prototype.onRemove=function(){r.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("moveend",this._updateEditLink),this._map.off("resize",this._updateCompact),this._map=void 0,this._attribHTML=void 0},nn.prototype._setElementTitle=function(K,ye){var te=this._map._getUIString("AttributionControl."+ye);K.title=te,K.setAttribute("aria-label",te)},nn.prototype._toggleAttribution=function(){this._container.classList.contains("mapboxgl-compact-show")?(this._container.classList.remove("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","false")):(this._container.classList.add("mapboxgl-compact-show"),this._compactButton.setAttribute("aria-pressed","true"))},nn.prototype._updateEditLink=function(){var K=this._editLink;K||(K=this._editLink=this._container.querySelector(".mapbox-improve-map"));var ye=[{key:"owner",value:this.styleOwner},{key:"id",value:this.styleId},{key:"access_token",value:this._map._requestManager._customAccessToken||e.config.ACCESS_TOKEN}];if(K){var te=ye.reduce(function(xe,We,He){return We.value&&(xe+=We.key+"="+We.value+(He=0)return!1;return!0});var st=K.join(" | ");st!==this._attribHTML&&(this._attribHTML=st,K.length?(this._innerContainer.innerHTML=st,this._container.classList.remove("mapboxgl-attrib-empty")):this._container.classList.add("mapboxgl-attrib-empty"),this._editLink=null)}},nn.prototype._updateCompact=function(){this._map.getCanvasContainer().offsetWidth<=640?this._container.classList.add("mapboxgl-compact"):this._container.classList.remove("mapboxgl-compact","mapboxgl-compact-show")};var on=function(){e.bindAll(["_updateLogo"],this),e.bindAll(["_updateCompact"],this)};on.prototype.onAdd=function(K){this._map=K,this._container=r.create("div","mapboxgl-ctrl");var ye=r.create("a","mapboxgl-ctrl-logo");return ye.target="_blank",ye.rel="noopener nofollow",ye.href="https://www.mapbox.com/",ye.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),ye.setAttribute("rel","noopener nofollow"),this._container.appendChild(ye),this._container.style.display="none",this._map.on("sourcedata",this._updateLogo),this._updateLogo(),this._map.on("resize",this._updateCompact),this._updateCompact(),this._container},on.prototype.onRemove=function(){r.remove(this._container),this._map.off("sourcedata",this._updateLogo),this._map.off("resize",this._updateCompact)},on.prototype.getDefaultPosition=function(){return"bottom-left"},on.prototype._updateLogo=function(K){(!K||K.sourceDataType==="metadata")&&(this._container.style.display=this._logoRequired()?"block":"none")},on.prototype._logoRequired=function(){if(this._map.style){var K=this._map.style.sourceCaches;for(var ye in K){var te=K[ye].getSource();if(te.mapbox_logo)return!0}return!1}},on.prototype._updateCompact=function(){var K=this._container.children;if(K.length){var ye=K[0];this._map.getCanvasContainer().offsetWidth<250?ye.classList.add("mapboxgl-compact"):ye.classList.remove("mapboxgl-compact")}};var Oi=function(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1};Oi.prototype.add=function(K){var ye=++this._id,te=this._queue;return te.push({callback:K,id:ye,cancelled:!1}),ye},Oi.prototype.remove=function(K){for(var ye=this._currentlyRunning,te=ye?this._queue.concat(ye):this._queue,xe=0,We=te;xete.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(te.minPitch!=null&&te.maxPitch!=null&&te.minPitch>te.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(te.minPitch!=null&&te.minPitch_o)throw new Error("maxPitch must be less than or equal to "+_o);var We=new Zo(te.minZoom,te.maxZoom,te.minPitch,te.maxPitch,te.renderWorldCopies);if(ve.call(this,We,te),this._interactive=te.interactive,this._maxTileCacheSize=te.maxTileCacheSize,this._failIfMajorPerformanceCaveat=te.failIfMajorPerformanceCaveat,this._preserveDrawingBuffer=te.preserveDrawingBuffer,this._antialias=te.antialias,this._trackResize=te.trackResize,this._bearingSnap=te.bearingSnap,this._refreshExpiredTiles=te.refreshExpiredTiles,this._fadeDuration=te.fadeDuration,this._crossSourceCollisions=te.crossSourceCollisions,this._crossFadingFactor=1,this._collectResourceTiming=te.collectResourceTiming,this._renderTaskQueue=new Oi,this._controls=[],this._mapId=e.uniqueId(),this._locale=e.extend({},ui,te.locale),this._clickTolerance=te.clickTolerance,this._requestManager=new e.RequestManager(te.transformRequest,te.accessToken),typeof te.container=="string"){if(this._container=e.window.document.getElementById(te.container),!this._container)throw new Error("Container '"+te.container+"' not found.")}else if(te.container instanceof tn)this._container=te.container;else throw new Error("Invalid type: 'container' must be a String or HTMLElement.");if(te.maxBounds&&this.setMaxBounds(te.maxBounds),e.bindAll(["_onWindowOnline","_onWindowResize","_onMapScroll","_contextLost","_contextRestored"],this),this._setupContainer(),this._setupPainter(),this.painter===void 0)throw new Error("Failed to initialize WebGL.");this.on("move",function(){return xe._update(!1)}),this.on("moveend",function(){return xe._update(!1)}),this.on("zoom",function(){return xe._update(!0)}),typeof e.window<"u"&&(e.window.addEventListener("online",this._onWindowOnline,!1),e.window.addEventListener("resize",this._onWindowResize,!1),e.window.addEventListener("orientationchange",this._onWindowResize,!1)),this.handlers=new Gi(this,te);var He=typeof te.hash=="string"&&te.hash||void 0;this._hash=te.hash&&new Xl(He).addTo(this),(!this._hash||!this._hash._onHashChange())&&(this.jumpTo({center:te.center,zoom:te.zoom,bearing:te.bearing,pitch:te.pitch}),te.bounds&&(this.resize(),this.fitBounds(te.bounds,e.extend({},te.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=te.localIdeographFontFamily,te.style&&this.setStyle(te.style,{localIdeographFontFamily:te.localIdeographFontFamily}),te.attributionControl&&this.addControl(new nn({customAttribution:te.customAttribution})),this.addControl(new on,te.logoPosition),this.on("style.load",function(){xe.transform.unmodified&&xe.jumpTo(xe.style.stylesheet)}),this.on("data",function(st){xe._update(st.dataType==="style"),xe.fire(new e.Event(st.dataType+"data",st))}),this.on("dataloading",function(st){xe.fire(new e.Event(st.dataType+"dataloading",st))})}ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K;var ye={showTileBoundaries:{configurable:!0},showPadding:{configurable:!0},showCollisionBoxes:{configurable:!0},showOverdrawInspector:{configurable:!0},repaint:{configurable:!0},vertices:{configurable:!0},version:{configurable:!0}};return K.prototype._getMapId=function(){return this._mapId},K.prototype.addControl=function(xe,We){if(We===void 0&&(xe.getDefaultPosition?We=xe.getDefaultPosition():We="top-right"),!xe||!xe.onAdd)return this.fire(new e.ErrorEvent(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));var He=xe.onAdd(this);this._controls.push(xe);var st=this._controlPositions[We];return We.indexOf("bottom")!==-1?st.insertBefore(He,st.firstChild):st.appendChild(He),this},K.prototype.removeControl=function(xe){if(!xe||!xe.onRemove)return this.fire(new e.ErrorEvent(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));var We=this._controls.indexOf(xe);return We>-1&&this._controls.splice(We,1),xe.onRemove(this),this},K.prototype.hasControl=function(xe){return this._controls.indexOf(xe)>-1},K.prototype.resize=function(xe){var We=this._containerDimensions(),He=We[0],st=We[1];this._resizeCanvas(He,st),this.transform.resize(He,st),this.painter.resize(He,st);var Et=!this._moving;return Et&&(this.stop(),this.fire(new e.Event("movestart",xe)).fire(new e.Event("move",xe))),this.fire(new e.Event("resize",xe)),Et&&this.fire(new e.Event("moveend",xe)),this},K.prototype.getBounds=function(){return this.transform.getBounds()},K.prototype.getMaxBounds=function(){return this.transform.getMaxBounds()},K.prototype.setMaxBounds=function(xe){return this.transform.setMaxBounds(e.LngLatBounds.convert(xe)),this._update()},K.prototype.setMinZoom=function(xe){if(xe=xe??qi,xe>=qi&&xe<=this.transform.maxZoom)return this.transform.minZoom=xe,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=xe,this._update(),this.getZoom()>xe&&this.setZoom(xe),this;throw new Error("maxZoom must be greater than the current minZoom")},K.prototype.getMaxZoom=function(){return this.transform.maxZoom},K.prototype.setMinPitch=function(xe){if(xe=xe??bn,xe=bn&&xe<=this.transform.maxPitch)return this.transform.minPitch=xe,this._update(),this.getPitch()_o)throw new Error("maxPitch must be less than or equal to "+_o);if(xe>=this.transform.minPitch)return this.transform.maxPitch=xe,this._update(),this.getPitch()>xe&&this.setPitch(xe),this;throw new Error("maxPitch must be greater than the current minPitch")},K.prototype.getMaxPitch=function(){return this.transform.maxPitch},K.prototype.getRenderWorldCopies=function(){return this.transform.renderWorldCopies},K.prototype.setRenderWorldCopies=function(xe){return this.transform.renderWorldCopies=xe,this._update()},K.prototype.project=function(xe){return this.transform.locationPoint(e.LngLat.convert(xe))},K.prototype.unproject=function(xe){return this.transform.pointLocation(e.Point.convert(xe))},K.prototype.isMoving=function(){return this._moving||this.handlers.isMoving()},K.prototype.isZooming=function(){return this._zooming||this.handlers.isZooming()},K.prototype.isRotating=function(){return this._rotating||this.handlers.isRotating()},K.prototype._createDelegatedListener=function(xe,We,He){var st=this,Et;if(xe==="mouseenter"||xe==="mouseover"){var Ht=!1,yr=function(Pr){var Vr=st.getLayer(We)?st.queryRenderedFeatures(Pr.point,{layers:[We]}):[];Vr.length?Ht||(Ht=!0,He.call(st,new Re(xe,st,Pr.originalEvent,{features:Vr}))):Ht=!1},Ir=function(){Ht=!1};return{layer:We,listener:He,delegates:{mousemove:yr,mouseout:Ir}}}else if(xe==="mouseleave"||xe==="mouseout"){var wr=!1,qt=function(Pr){var Vr=st.getLayer(We)?st.queryRenderedFeatures(Pr.point,{layers:[We]}):[];Vr.length?wr=!0:wr&&(wr=!1,He.call(st,new Re(xe,st,Pr.originalEvent)))},tr=function(Pr){wr&&(wr=!1,He.call(st,new Re(xe,st,Pr.originalEvent)))};return{layer:We,listener:He,delegates:{mousemove:qt,mouseout:tr}}}else{var dr=function(Pr){var Vr=st.getLayer(We)?st.queryRenderedFeatures(Pr.point,{layers:[We]}):[];Vr.length&&(Pr.features=Vr,He.call(st,Pr),delete Pr.features)};return{layer:We,listener:He,delegates:(Et={},Et[xe]=dr,Et)}}},K.prototype.on=function(xe,We,He){if(He===void 0)return ve.prototype.on.call(this,xe,We);var st=this._createDelegatedListener(xe,We,He);this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[xe]=this._delegatedListeners[xe]||[],this._delegatedListeners[xe].push(st);for(var Et in st.delegates)this.on(Et,st.delegates[Et]);return this},K.prototype.once=function(xe,We,He){if(He===void 0)return ve.prototype.once.call(this,xe,We);var st=this._createDelegatedListener(xe,We,He);for(var Et in st.delegates)this.once(Et,st.delegates[Et]);return this},K.prototype.off=function(xe,We,He){var st=this;if(He===void 0)return ve.prototype.off.call(this,xe,We);var Et=function(Ht){for(var yr=Ht[xe],Ir=0;Ir180;){var He=ye.locationPoint(ve);if(He.x>=0&&He.y>=0&&He.x<=ye.width&&He.y<=ye.height)break;ve.lng>ye.center.lng?ve.lng-=360:ve.lng+=360}return ve}var Ro={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function rs(ve,K,ye){var te=ve.classList;for(var xe in Ro)te.remove("mapboxgl-"+ye+"-anchor-"+xe);te.add("mapboxgl-"+ye+"-anchor-"+K)}var wn=function(ve){function K(ye,te){if(ve.call(this),(ye instanceof e.window.HTMLElement||te)&&(ye=e.extend({element:ye},te)),e.bindAll(["_update","_onMove","_onUp","_addDragHandler","_onMapClick","_onKeyPress"],this),this._anchor=ye&&ye.anchor||"center",this._color=ye&&ye.color||"#3FB1CE",this._scale=ye&&ye.scale||1,this._draggable=ye&&ye.draggable||!1,this._clickTolerance=ye&&ye.clickTolerance||0,this._isDragging=!1,this._state="inactive",this._rotation=ye&&ye.rotation||0,this._rotationAlignment=ye&&ye.rotationAlignment||"auto",this._pitchAlignment=ye&&ye.pitchAlignment&&ye.pitchAlignment!=="auto"?ye.pitchAlignment:this._rotationAlignment,!ye||!ye.element){this._defaultMarker=!0,this._element=r.create("div"),this._element.setAttribute("aria-label","Map marker");var xe=r.createNS("http://www.w3.org/2000/svg","svg"),We=41,He=27;xe.setAttributeNS(null,"display","block"),xe.setAttributeNS(null,"height",We+"px"),xe.setAttributeNS(null,"width",He+"px"),xe.setAttributeNS(null,"viewBox","0 0 "+He+" "+We);var st=r.createNS("http://www.w3.org/2000/svg","g");st.setAttributeNS(null,"stroke","none"),st.setAttributeNS(null,"stroke-width","1"),st.setAttributeNS(null,"fill","none"),st.setAttributeNS(null,"fill-rule","evenodd");var Et=r.createNS("http://www.w3.org/2000/svg","g");Et.setAttributeNS(null,"fill-rule","nonzero");var Ht=r.createNS("http://www.w3.org/2000/svg","g");Ht.setAttributeNS(null,"transform","translate(3.0, 29.0)"),Ht.setAttributeNS(null,"fill","#000000");for(var yr=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}],Ir=0,wr=yr;Ir=xe}this._isDragging&&(this._pos=te.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new e.Event("dragstart"))),this.fire(new e.Event("drag")))},K.prototype._onUp=function(){this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new e.Event("dragend")),this._state="inactive"},K.prototype._addDragHandler=function(te){this._element.contains(te.originalEvent.target)&&(te.preventDefault(),this._positionDelta=te.point.sub(this._pos).add(this._offset),this._pointerdownPos=te.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},K.prototype.setDraggable=function(te){return this._draggable=!!te,this._map&&(te?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this},K.prototype.isDraggable=function(){return this._draggable},K.prototype.setRotation=function(te){return this._rotation=te||0,this._update(),this},K.prototype.getRotation=function(){return this._rotation},K.prototype.setRotationAlignment=function(te){return this._rotationAlignment=te||"auto",this._update(),this},K.prototype.getRotationAlignment=function(){return this._rotationAlignment},K.prototype.setPitchAlignment=function(te){return this._pitchAlignment=te&&te!=="auto"?te:this._rotationAlignment,this._update(),this},K.prototype.getPitchAlignment=function(){return this._pitchAlignment},K}(e.Evented),oo={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},Xo;function os(ve){Xo!==void 0?ve(Xo):e.window.navigator.permissions!==void 0?e.window.navigator.permissions.query({name:"geolocation"}).then(function(K){Xo=K.state!=="denied",ve(Xo)}):(Xo=!!e.window.navigator.geolocation,ve(Xo))}var As=0,$l=!1,Uc=function(ve){function K(ye){ve.call(this),this.options=e.extend({},oo,ye),e.bindAll(["_onSuccess","_onError","_onZoom","_finish","_setupUI","_updateCamera","_updateMarker"],this)}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K.prototype.onAdd=function(te){return this._map=te,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),os(this._setupUI),this._container},K.prototype.onRemove=function(){this._geolocationWatchID!==void 0&&(e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),r.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,As=0,$l=!1},K.prototype._isOutOfMapMaxBounds=function(te){var xe=this._map.getMaxBounds(),We=te.coords;return xe&&(We.longitudexe.getEast()||We.latitudexe.getNorth())},K.prototype._setErrorState=function(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting");break}},K.prototype._onSuccess=function(te){if(this._map){if(this._isOutOfMapMaxBounds(te)){this._setErrorState(),this.fire(new e.Event("outofmaxbounds",te)),this._updateMarker(),this._finish();return}if(this.options.trackUserLocation)switch(this._lastKnownPosition=te,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(te),(!this.options.trackUserLocation||this._watchState==="ACTIVE_LOCK")&&this._updateCamera(te),this.options.showUserLocation&&this._dotElement.classList.remove("mapboxgl-user-location-dot-stale"),this.fire(new e.Event("geolocate",te)),this._finish()}},K.prototype._updateCamera=function(te){var xe=new e.LngLat(te.coords.longitude,te.coords.latitude),We=te.coords.accuracy,He=this._map.getBearing(),st=e.extend({bearing:He},this.options.fitBoundsOptions);this._map.fitBounds(xe.toBounds(We),st,{geolocateSource:!0})},K.prototype._updateMarker=function(te){if(te){var xe=new e.LngLat(te.coords.longitude,te.coords.latitude);this._accuracyCircleMarker.setLngLat(xe).addTo(this._map),this._userLocationDotMarker.setLngLat(xe).addTo(this._map),this._accuracy=te.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},K.prototype._updateCircleRadius=function(){var te=this._map._container.clientHeight/2,xe=this._map.unproject([0,te]),We=this._map.unproject([1,te]),He=xe.distanceTo(We),st=Math.ceil(2*this._accuracy/He);this._circleElement.style.width=st+"px",this._circleElement.style.height=st+"px"},K.prototype._onZoom=function(){this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},K.prototype._onError=function(te){if(this._map){if(this.options.trackUserLocation)if(te.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;var xe=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=xe,this._geolocateButton.setAttribute("aria-label",xe),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(te.code===3&&$l)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("mapboxgl-user-location-dot-stale"),this.fire(new e.Event("error",te)),this._finish()}},K.prototype._finish=function(){this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},K.prototype._setupUI=function(te){var xe=this;if(this._container.addEventListener("contextmenu",function(st){return st.preventDefault()}),this._geolocateButton=r.create("button","mapboxgl-ctrl-geolocate",this._container),r.create("span","mapboxgl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden",!0),this._geolocateButton.type="button",te===!1){e.warnOnce("Geolocation support is not available so the GeolocateControl will be disabled.");var We=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=We,this._geolocateButton.setAttribute("aria-label",We)}else{var He=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.title=He,this._geolocateButton.setAttribute("aria-label",He)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=r.create("div","mapboxgl-user-location-dot"),this._userLocationDotMarker=new wn(this._dotElement),this._circleElement=r.create("div","mapboxgl-user-location-accuracy-circle"),this._accuracyCircleMarker=new wn({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",this.trigger.bind(this)),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",function(st){var Et=st.originalEvent&&st.originalEvent.type==="resize";!st.geolocateSource&&xe._watchState==="ACTIVE_LOCK"&&!Et&&(xe._watchState="BACKGROUND",xe._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background"),xe._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),xe.fire(new e.Event("trackuserlocationend")))})},K.prototype.trigger=function(){if(!this._setup)return e.warnOnce("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new e.Event("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":As--,$l=!1,this._watchState="OFF",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background-error"),this.fire(new e.Event("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new e.Event("trackuserlocationstart"));break}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active");break;case"ACTIVE_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-active-error");break;case"BACKGROUND":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background");break;case"BACKGROUND_ERROR":this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-background-error");break}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){this._geolocateButton.classList.add("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),As++;var te;As>1?(te={maximumAge:6e5,timeout:0},$l=!0):(te=this.options.positionOptions,$l=!1),this._geolocationWatchID=e.window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,te)}}else e.window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0},K.prototype._clearWatch=function(){e.window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("mapboxgl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)},K}(e.Evented),Ws={maxWidth:100,unit:"metric"},jc=function(K){this.options=e.extend({},Ws,K),e.bindAll(["_onMove","setUnit"],this)};jc.prototype.getDefaultPosition=function(){return"bottom-left"},jc.prototype._onMove=function(){Ol(this._map,this._container,this.options)},jc.prototype.onAdd=function(K){return this._map=K,this._container=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-scale",K.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container},jc.prototype.onRemove=function(){r.remove(this._container),this._map.off("move",this._onMove),this._map=void 0},jc.prototype.setUnit=function(K){this.options.unit=K,Ol(this._map,this._container,this.options)};function Ol(ve,K,ye){var te=ye&&ye.maxWidth||100,xe=ve._container.clientHeight/2,We=ve.unproject([0,xe]),He=ve.unproject([te,xe]),st=We.distanceTo(He);if(ye&&ye.unit==="imperial"){var Et=3.2808*st;if(Et>5280){var Ht=Et/5280;vc(K,te,Ht,ve._getUIString("ScaleControl.Miles"))}else vc(K,te,Et,ve._getUIString("ScaleControl.Feet"))}else if(ye&&ye.unit==="nautical"){var yr=st/1852;vc(K,te,yr,ve._getUIString("ScaleControl.NauticalMiles"))}else st>=1e3?vc(K,te,st/1e3,ve._getUIString("ScaleControl.Kilometers")):vc(K,te,st,ve._getUIString("ScaleControl.Meters"))}function vc(ve,K,ye,te){var xe=rf(ye),We=xe/ye;ve.style.width=K*We+"px",ve.innerHTML=xe+" "+te}function mc(ve){var K=Math.pow(10,Math.ceil(-Math.log(ve)/Math.LN10));return Math.round(ve*K)/K}function rf(ve){var K=Math.pow(10,(""+Math.floor(ve)).length-1),ye=ve/K;return ye=ye>=10?10:ye>=5?5:ye>=3?3:ye>=2?2:ye>=1?1:mc(ye),K*ye}var Yl=function(K){this._fullscreen=!1,K&&K.container&&(K.container instanceof e.window.HTMLElement?this._container=K.container:e.warnOnce("Full screen control 'container' must be a DOM element.")),e.bindAll(["_onClickFullscreen","_changeIcon"],this),"onfullscreenchange"in e.window.document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in e.window.document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in e.window.document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in e.window.document&&(this._fullscreenchange="MSFullscreenChange")};Yl.prototype.onAdd=function(K){return this._map=K,this._container||(this._container=this._map.getContainer()),this._controlContainer=r.create("div","mapboxgl-ctrl mapboxgl-ctrl-group"),this._checkFullscreenSupport()?this._setupUI():(this._controlContainer.style.display="none",e.warnOnce("This device does not support fullscreen mode.")),this._controlContainer},Yl.prototype.onRemove=function(){r.remove(this._controlContainer),this._map=null,e.window.document.removeEventListener(this._fullscreenchange,this._changeIcon)},Yl.prototype._checkFullscreenSupport=function(){return!!(e.window.document.fullscreenEnabled||e.window.document.mozFullScreenEnabled||e.window.document.msFullscreenEnabled||e.window.document.webkitFullscreenEnabled)},Yl.prototype._setupUI=function(){var K=this._fullscreenButton=r.create("button","mapboxgl-ctrl-fullscreen",this._controlContainer);r.create("span","mapboxgl-ctrl-icon",K).setAttribute("aria-hidden",!0),K.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),e.window.document.addEventListener(this._fullscreenchange,this._changeIcon)},Yl.prototype._updateTitle=function(){var K=this._getTitle();this._fullscreenButton.setAttribute("aria-label",K),this._fullscreenButton.title=K},Yl.prototype._getTitle=function(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")},Yl.prototype._isFullscreen=function(){return this._fullscreen},Yl.prototype._changeIcon=function(){var K=e.window.document.fullscreenElement||e.window.document.mozFullScreenElement||e.window.document.webkitFullscreenElement||e.window.document.msFullscreenElement;K===this._container!==this._fullscreen&&(this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("mapboxgl-ctrl-shrink"),this._fullscreenButton.classList.toggle("mapboxgl-ctrl-fullscreen"),this._updateTitle())},Yl.prototype._onClickFullscreen=function(){this._isFullscreen()?e.window.document.exitFullscreen?e.window.document.exitFullscreen():e.window.document.mozCancelFullScreen?e.window.document.mozCancelFullScreen():e.window.document.msExitFullscreen?e.window.document.msExitFullscreen():e.window.document.webkitCancelFullScreen&&e.window.document.webkitCancelFullScreen():this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen&&this._container.webkitRequestFullscreen()};var Mc={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px"},Vc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", "),Ds=function(ve){function K(ye){ve.call(this),this.options=e.extend(Object.create(Mc),ye),e.bindAll(["_update","_onClose","remove","_onMouseMove","_onMouseUp","_onDrag"],this)}return ve&&(K.__proto__=ve),K.prototype=Object.create(ve&&ve.prototype),K.prototype.constructor=K,K.prototype.addTo=function(te){return this._map&&this.remove(),this._map=te,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")):this._map.on("move",this._update),this.fire(new e.Event("open")),this},K.prototype.isOpen=function(){return!!this._map},K.prototype.remove=function(){return this._content&&r.remove(this._content),this._container&&(r.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),delete this._map),this.fire(new e.Event("close")),this},K.prototype.getLngLat=function(){return this._lngLat},K.prototype.setLngLat=function(te){return this._lngLat=e.LngLat.convert(te),this._pos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.remove("mapboxgl-track-pointer")),this},K.prototype.trackPointer=function(){return this._trackPointer=!0,this._pos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("mapboxgl-popup-track-pointer"),this._map._canvasContainer.classList.add("mapboxgl-track-pointer")),this},K.prototype.getElement=function(){return this._container},K.prototype.setText=function(te){return this.setDOMContent(e.window.document.createTextNode(te))},K.prototype.setHTML=function(te){var xe=e.window.document.createDocumentFragment(),We=e.window.document.createElement("body"),He;for(We.innerHTML=te;He=We.firstChild,!!He;)xe.appendChild(He);return this.setDOMContent(xe)},K.prototype.getMaxWidth=function(){return this._container&&this._container.style.maxWidth},K.prototype.setMaxWidth=function(te){return this.options.maxWidth=te,this._update(),this},K.prototype.setDOMContent=function(te){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=r.create("div","mapboxgl-popup-content",this._container);return this._content.appendChild(te),this._createCloseButton(),this._update(),this._focusFirstElement(),this},K.prototype.addClassName=function(te){this._container&&this._container.classList.add(te)},K.prototype.removeClassName=function(te){this._container&&this._container.classList.remove(te)},K.prototype.setOffset=function(te){return this.options.offset=te,this._update(),this},K.prototype.toggleClassName=function(te){if(this._container)return this._container.classList.toggle(te)},K.prototype._createCloseButton=function(){this.options.closeButton&&(this._closeButton=r.create("button","mapboxgl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.setAttribute("aria-label","Close popup"),this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))},K.prototype._onMouseUp=function(te){this._update(te.point)},K.prototype._onMouseMove=function(te){this._update(te.point)},K.prototype._onDrag=function(te){this._update(te.point)},K.prototype._update=function(te){var xe=this,We=this._lngLat||this._trackPointer;if(!(!this._map||!We||!this._content)&&(this._container||(this._container=r.create("div","mapboxgl-popup",this._map.getContainer()),this._tip=r.create("div","mapboxgl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className&&this.options.className.split(" ").forEach(function(qt){return xe._container.classList.add(qt)}),this._trackPointer&&this._container.classList.add("mapboxgl-popup-track-pointer")),this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._map.transform.renderWorldCopies&&!this._trackPointer&&(this._lngLat=jn(this._lngLat,this._pos,this._map.transform)),!(this._trackPointer&&!te))){var He=this._pos=this._trackPointer&&te?te:this._map.project(this._lngLat),st=this.options.anchor,Et=af(this.options.offset);if(!st){var Ht=this._container.offsetWidth,yr=this._container.offsetHeight,Ir;He.y+Et.bottom.ythis._map.transform.height-yr?Ir=["bottom"]:Ir=[],He.xthis._map.transform.width-Ht/2&&Ir.push("right"),Ir.length===0?st="bottom":st=Ir.join("-")}var wr=He.add(Et[st]).round();r.setTransform(this._container,Ro[st]+" translate("+wr.x+"px,"+wr.y+"px)"),rs(this._container,st,"popup")}},K.prototype._focusFirstElement=function(){if(!(!this.options.focusAfterOpen||!this._container)){var te=this._container.querySelector(Vc);te&&te.focus()}},K.prototype._onClose=function(){this.remove()},K}(e.Evented);function af(ve){if(ve)if(typeof ve=="number"){var K=Math.round(Math.sqrt(.5*Math.pow(ve,2)));return{center:new e.Point(0,0),top:new e.Point(0,ve),"top-left":new e.Point(K,K),"top-right":new e.Point(-K,K),bottom:new e.Point(0,-ve),"bottom-left":new e.Point(K,-K),"bottom-right":new e.Point(-K,-K),left:new e.Point(ve,0),right:new e.Point(-ve,0)}}else if(ve instanceof e.Point||Array.isArray(ve)){var ye=e.Point.convert(ve);return{center:ye,top:ye,"top-left":ye,"top-right":ye,bottom:ye,"bottom-left":ye,"bottom-right":ye,left:ye,right:ye}}else return{center:e.Point.convert(ve.center||[0,0]),top:e.Point.convert(ve.top||[0,0]),"top-left":e.Point.convert(ve["top-left"]||[0,0]),"top-right":e.Point.convert(ve["top-right"]||[0,0]),bottom:e.Point.convert(ve.bottom||[0,0]),"bottom-left":e.Point.convert(ve["bottom-left"]||[0,0]),"bottom-right":e.Point.convert(ve["bottom-right"]||[0,0]),left:e.Point.convert(ve.left||[0,0]),right:e.Point.convert(ve.right||[0,0])};else return af(new e.Point(0,0))}var Cs={version:e.version,supported:t,setRTLTextPlugin:e.setRTLTextPlugin,getRTLTextPluginStatus:e.getRTLTextPluginStatus,Map:Ui,NavigationControl:xn,GeolocateControl:Uc,AttributionControl:nn,ScaleControl:jc,FullscreenControl:Yl,Popup:Ds,Marker:wn,Style:Jl,LngLat:e.LngLat,LngLatBounds:e.LngLatBounds,Point:e.Point,MercatorCoordinate:e.MercatorCoordinate,Evented:e.Evented,config:e.config,prewarm:Er,clearPrewarmedResources:kr,get accessToken(){return e.config.ACCESS_TOKEN},set accessToken(ve){e.config.ACCESS_TOKEN=ve},get baseApiUrl(){return e.config.API_URL},set baseApiUrl(ve){e.config.API_URL=ve},get workerCount(){return ya.workerCount},set workerCount(ve){ya.workerCount=ve},get maxParallelImageRequests(){return e.config.MAX_PARALLEL_IMAGE_REQUESTS},set maxParallelImageRequests(ve){e.config.MAX_PARALLEL_IMAGE_REQUESTS=ve},clearStorage:function(K){e.clearTileCache(K)},workerUrl:""};return Cs}),A})}}),$V=Ye({"src/plots/mapbox/layers.js"(X,H){"use strict";var g=ta(),x=jl().sanitizeHTML,A=wk(),M=am();function e(i,n){this.subplot=i,this.uid=i.uid+"-"+n,this.index=n,this.idSource="source-"+this.uid,this.idLayer=M.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var t=e.prototype;t.update=function(n){this.visible?this.needsNewImage(n)?this.updateImage(n):this.needsNewSource(n)?(this.removeLayer(),this.updateSource(n),this.updateLayer(n)):this.needsNewLayer(n)?this.updateLayer(n):this.updateStyle(n):(this.updateSource(n),this.updateLayer(n)),this.visible=r(n)},t.needsNewImage=function(i){var n=this.subplot.map;return n.getSource(this.idSource)&&this.sourceType==="image"&&i.sourcetype==="image"&&(this.source!==i.source||JSON.stringify(this.coordinates)!==JSON.stringify(i.coordinates))},t.needsNewSource=function(i){return this.sourceType!==i.sourcetype||JSON.stringify(this.source)!==JSON.stringify(i.source)||this.layerType!==i.type},t.needsNewLayer=function(i){return this.layerType!==i.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},t.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},t.updateImage=function(i){var n=this.subplot.map;n.getSource(this.idSource).updateImage({url:i.source,coordinates:i.coordinates});var s=this.findFollowingMapboxLayerId(this.lookupBelow());s!==null&&this.subplot.map.moveLayer(this.idLayer,s)},t.updateSource=function(i){var n=this.subplot.map;if(n.getSource(this.idSource)&&n.removeSource(this.idSource),this.sourceType=i.sourcetype,this.source=i.source,!!r(i)){var s=a(i);n.addSource(this.idSource,s)}},t.findFollowingMapboxLayerId=function(i){if(i==="traces")for(var n=this.subplot.getMapLayers(),s=0;s0){for(var s=0;s0}function o(i){var n={},s={};switch(i.type){case"circle":g.extendFlat(s,{"circle-radius":i.circle.radius,"circle-color":i.color,"circle-opacity":i.opacity});break;case"line":g.extendFlat(s,{"line-width":i.line.width,"line-color":i.color,"line-opacity":i.opacity,"line-dasharray":i.line.dash});break;case"fill":g.extendFlat(s,{"fill-color":i.color,"fill-outline-color":i.fill.outlinecolor,"fill-opacity":i.opacity});break;case"symbol":var c=i.symbol,h=A(c.textposition,c.iconsize);g.extendFlat(n,{"icon-image":c.icon+"-15","icon-size":c.iconsize/10,"text-field":c.text,"text-size":c.textfont.size,"text-anchor":h.anchor,"text-offset":h.offset,"symbol-placement":c.placement}),g.extendFlat(s,{"icon-color":i.color,"text-color":c.textfont.color,"text-opacity":i.opacity});break;case"raster":g.extendFlat(s,{"raster-fade-duration":0,"raster-opacity":i.opacity});break}return{layout:n,paint:s}}function a(i){var n=i.sourcetype,s=i.source,c={type:n},h;return n==="geojson"?h="data":n==="vector"?h=typeof s=="string"?"url":"tiles":n==="raster"?(h="tiles",c.tileSize=256):n==="image"&&(h="url",c.coordinates=i.coordinates),c[h]=s,i.sourceattribution&&(c.attribution=x(i.sourceattribution)),c}H.exports=function(n,s,c){var h=new e(n,s);return h.update(c),h}}}),QV=Ye({"src/plots/mapbox/mapbox.js"(X,H){"use strict";var g=Tk(),x=ta(),A=vg(),M=Hn(),e=Co(),t=bp(),r=Lc(),o=Jd(),a=o.drawMode,i=o.selectMode,n=ff().prepSelect,s=ff().clearOutline,c=ff().clearSelectionsCache,h=ff().selectOnClick,v=am(),p=$V();function T(m,b){this.id=b,this.gd=m;var d=m._fullLayout,u=m._context;this.container=d._glcontainer.node(),this.isStatic=u.staticPlot,this.uid=d._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(d),this.map=null,this.accessToken=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var l=T.prototype;l.plot=function(m,b,d){var u=this,y=b[u.id];u.map&&y.accesstoken!==u.accessToken&&(u.map.remove(),u.map=null,u.styleObj=null,u.traceHash={},u.layerList=[]);var f;u.map?f=new Promise(function(P,L){u.updateMap(m,b,P,L)}):f=new Promise(function(P,L){u.createMap(m,b,P,L)}),d.push(f)},l.createMap=function(m,b,d,u){var y=this,f=b[y.id],P=y.styleObj=w(f.style,b);y.accessToken=f.accesstoken;var L=f.bounds,z=L?[[L.west,L.south],[L.east,L.north]]:null,F=y.map=new g.Map({container:y.div,style:P.style,center:E(f.center),zoom:f.zoom,bearing:f.bearing,pitch:f.pitch,maxBounds:z,interactive:!y.isStatic,preserveDrawingBuffer:y.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new g.AttributionControl({compact:!0}));F._canvas.style.left="0px",F._canvas.style.top="0px",y.rejectOnError(u),y.isStatic||y.initFx(m,b);var B=[];B.push(new Promise(function(O){F.once("load",O)})),B=B.concat(A.fetchTraceGeoData(m)),Promise.all(B).then(function(){y.fillBelowLookup(m,b),y.updateData(m),y.updateLayout(b),y.resolveOnRender(d)}).catch(u)},l.updateMap=function(m,b,d,u){var y=this,f=y.map,P=b[this.id];y.rejectOnError(u);var L=[],z=w(P.style,b);JSON.stringify(y.styleObj)!==JSON.stringify(z)&&(y.styleObj=z,f.setStyle(z.style),y.traceHash={},L.push(new Promise(function(F){f.once("styledata",F)}))),L=L.concat(A.fetchTraceGeoData(m)),Promise.all(L).then(function(){y.fillBelowLookup(m,b),y.updateData(m),y.updateLayout(b),y.resolveOnRender(d)}).catch(u)},l.fillBelowLookup=function(m,b){var d=b[this.id],u=d.layers,y,f,P=this.belowLookup={},L=!1;for(y=0;y1)for(y=0;y-1&&h(z.originalEvent,u,[d.xaxis],[d.yaxis],d.id,L),F.indexOf("event")>-1&&r.click(u,z.originalEvent)}}},l.updateFx=function(m){var b=this,d=b.map,u=b.gd;if(b.isStatic)return;function y(z){var F=b.map.unproject(z);return[F.lng,F.lat]}var f=m.dragmode,P;P=function(z,F){if(F.isRect){var B=z.range={};B[b.id]=[y([F.xmin,F.ymin]),y([F.xmax,F.ymax])]}else{var O=z.lassoPoints={};O[b.id]=F.map(y)}};var L=b.dragOptions;b.dragOptions=x.extendDeep(L||{},{dragmode:m.dragmode,element:b.div,gd:u,plotinfo:{id:b.id,domain:m[b.id].domain,xaxis:b.xaxis,yaxis:b.yaxis,fillRangeItems:P},xaxes:[b.xaxis],yaxes:[b.yaxis],subplot:b.id}),d.off("click",b.onClickInPanHandler),i(f)||a(f)?(d.dragPan.disable(),d.on("zoomstart",b.clearOutline),b.dragOptions.prepFn=function(z,F,B){n(z,F,B,b.dragOptions,f)},t.init(b.dragOptions)):(d.dragPan.enable(),d.off("zoomstart",b.clearOutline),b.div.onmousedown=null,b.div.ontouchstart=null,b.div.removeEventListener("touchstart",b.div._ontouchstart),b.onClickInPanHandler=b.onClickInPanFn(b.dragOptions),d.on("click",b.onClickInPanHandler))},l.updateFramework=function(m){var b=m[this.id].domain,d=m._size,u=this.div.style;u.width=d.w*(b.x[1]-b.x[0])+"px",u.height=d.h*(b.y[1]-b.y[0])+"px",u.left=d.l+b.x[0]*d.w+"px",u.top=d.t+(1-b.y[1])*d.h+"px",this.xaxis._offset=d.l+b.x[0]*d.w,this.xaxis._length=d.w*(b.x[1]-b.x[0]),this.yaxis._offset=d.t+(1-b.y[1])*d.h,this.yaxis._length=d.h*(b.y[1]-b.y[0])},l.updateLayers=function(m){var b=m[this.id],d=b.layers,u=this.layerList,y;if(d.length!==u.length){for(y=0;yB/2){var O=P.split("|").join("
");z.text(O).attr("data-unformatted",O).call(o.convertToTspans,p),F=r.bBox(z.node())}z.attr("transform",x(-3,-F.height+8)),L.insert("rect",".static-attribution").attr({x:-F.width-6,y:-F.height-3,width:F.width+6,height:F.height+3,fill:"rgba(255, 255, 255, 0.75)"});var I=1;F.width+6>B&&(I=B/(F.width+6));var N=[_.l+_.w*E.x[1],_.t+_.h*(1-E.y[0])];L.attr("transform",x(N[0],N[1])+A(I))}};function h(p,T){var l=p._fullLayout,_=p._context;if(_.mapboxAccessToken==="")return"";for(var w=[],S=[],E=!1,m=!1,b=0;b1&&g.warn(n.multipleTokensErrorMsg),w[0]):(S.length&&g.log(["Listed mapbox access token(s)",S.join(","),"but did not use a Mapbox map style, ignoring token(s)."].join(" ")),"")}function v(p){return typeof p=="string"&&(n.styleValuesMapbox.indexOf(p)!==-1||p.indexOf("mapbox://")===0||p.indexOf("stamen")===0)}X.updateFx=function(p){for(var T=p._fullLayout,l=T._subplots[i],_=0;_=0;o--)t.removeLayer(r[o][1])},e.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},H.exports=function(r,o){var a=o[0].trace,i=new M(r,a.uid),n=i.sourceId,s=g(o),c=i.below=r.belowLookup["trace-"+a.uid];return r.map.addSource(n,{type:"geojson",data:s.geojson}),i._addLayers(s,c),o[0].trace._glTrace=i,i}}}),nq=Ye({"src/traces/choroplethmapbox/index.js"(X,H){"use strict";var g=["*choroplethmapbox* trace is deprecated!","Please consider switching to the *choroplethmap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");H.exports={attributes:Ak(),supplyDefaults:aq(),colorbar:ag(),calc:sT(),plot:iq(),hoverPoints:uT(),eventData:cT(),selectPoints:fT(),styleOnSelect:function(x,A){if(A){var M=A[0].trace;M._glTrace.updateOnSelect(A)}},getBelow:function(x,A){for(var M=A.getMapLayers(),e=M.length-2;e>=0;e--){var t=M[e].id;if(typeof t=="string"&&t.indexOf("water")===0){for(var r=e+1;r0?+p[h]:0),c.push({type:"Feature",geometry:{type:"Point",coordinates:w},properties:S})}}var m=M.extractOpts(a),b=m.reversescale?M.flipScale(m.colorscale):m.colorscale,d=b[0][1],u=A.opacity(d)<1?d:A.addOpacity(d,0),y=["interpolate",["linear"],["heatmap-density"],0,u];for(h=1;h=0;r--)e.removeLayer(t[r][1])},M.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)},H.exports=function(t,r){var o=r[0].trace,a=new A(t,o.uid),i=a.sourceId,n=g(r),s=a.below=t.belowLookup["trace-"+o.uid];return t.map.addSource(i,{type:"geojson",data:n.geojson}),a._addLayers(n,s),a}}}),fq=Ye({"src/traces/densitymapbox/hover.js"(X,H){"use strict";var g=Co(),x=AT().hoverPoints,A=AT().getExtraText;H.exports=function(e,t,r){var o=x(e,t,r);if(o){var a=o[0],i=a.cd,n=i[0].trace,s=i[a.index];if(delete a.color,"z"in s){var c=a.subplot.mockAxis;a.z=s.z,a.zLabel=g.tickText(c,c.c2l(s.z),"hover").text}return a.extraText=A(n,s,i[0].t.labels),[a]}}}}),hq=Ye({"src/traces/densitymapbox/event_data.js"(X,H){"use strict";H.exports=function(x,A){return x.lon=A.lon,x.lat=A.lat,x.z=A.z,x}}}),pq=Ye({"src/traces/densitymapbox/index.js"(X,H){"use strict";var g=["*densitymapbox* trace is deprecated!","Please consider switching to the *densitymap* trace type and `map` subplots.","Learn more at: https://plotly.com/python/maplibre-migration/","as well as https://plotly.com/javascript/maplibre-migration/"].join(" ");H.exports={attributes:Mk(),supplyDefaults:sq(),colorbar:ag(),formatLabels:bk(),calc:lq(),plot:cq(),hoverPoints:fq(),eventData:hq(),getBelow:function(x,A){for(var M=A.getMapLayers(),e=0;eESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}},{id:"waterway_tunnel",type:"line",source:"openmaptiles","source-layer":"waterway",minzoom:14,filter:["all",["in","class","river","stream","canal"],["==","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]},"line-dasharray":[2,4]}},{id:"waterway-other",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["!in","class","canal","river","stream"],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,2]]}}},{id:"waterway-stream-canal",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["in","class","canal","stream"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.3,stops:[[13,.5],[20,6]]}}},{id:"waterway-river",type:"line",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"waterway",filter:["all",["==","class","river"],["!=","brunnel","tunnel"]],layout:{"line-cap":"round"},paint:{"line-color":"#a0c8f0","line-width":{base:1.2,stops:[[10,.8],[20,4]]},"line-opacity":.5}},{id:"water-offset",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",maxzoom:8,filter:["==","$type","Polygon"],layout:{visibility:"visible"},paint:{"fill-opacity":0,"fill-color":"#a0c8f0","fill-translate":{base:1,stops:[[6,[2,0]],[8,[0,0]]]}}},{id:"water",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-color":"hsl(210, 67%, 85%)","fill-opacity":0}},{id:"water-pattern",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"water",layout:{visibility:"visible"},paint:{"fill-translate":[0,2.5],"fill-pattern":"wave","fill-opacity":1}},{id:"landcover-ice-shelf",type:"fill",metadata:{"mapbox:group":"1444849382550.77"},source:"openmaptiles","source-layer":"landcover",filter:["==","subclass","ice_shelf"],layout:{visibility:"visible"},paint:{"fill-color":"#fff","fill-opacity":{base:1,stops:[[0,.9],[10,.3]]}}},{id:"tunnel-service-track-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[15,1],[16,4],[20,11]]}}},{id:"tunnel-minor-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor"]],layout:{"line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,1]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"tunnel-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"tunnel-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.7}},{id:"tunnel-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-dasharray":[.5,.25],"line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"tunnel-path",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"tunnel-service-track",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","service","track"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-width":{base:1.2,stops:[[15.5,0],[16,2],[20,7.5]]}}},{id:"tunnel-minor",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","minor_road"]],layout:{"line-join":"round"},paint:{"line-color":"#fff","line-opacity":1,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"tunnel-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,10]]}}},{id:"tunnel-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fff4c6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-motorway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","motorway"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"#ffdaa6","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"tunnel-railway",type:"line",metadata:{"mapbox:group":"1444849354174.1904"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","tunnel"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]},"line-dasharray":[2,2]}},{id:"ferry",type:"line",source:"openmaptiles","source-layer":"transportation",filter:["all",["in","class","ferry"]],layout:{"line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(108, 159, 182, 1)","line-width":1.1,"line-dasharray":[2,2]}},{id:"aeroway-taxiway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","taxiway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,2],[17,12]]},"line-opacity":1}},{id:"aeroway-runway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:12,filter:["all",["in","class","runway"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(153, 153, 153, 1)","line-width":{base:1.5,stops:[[11,5],[17,55]]},"line-opacity":1}},{id:"aeroway-taxiway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","taxiway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,1],[17,10]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"aeroway-runway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"aeroway",minzoom:4,filter:["all",["in","class","runway"],["==","$type","LineString"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"rgba(255, 255, 255, 1)","line-width":{base:1.5,stops:[[11,4],[17,50]]},"line-opacity":{base:1,stops:[[11,0],[12,1]]}}},{id:"highway-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-link-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"highway-minor-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#cfcdca","line-opacity":{stops:[[12,0],[12.5,0]]},"line-width":{base:1.2,stops:[[12,.5],[13,1],[14,4],[20,15]]}}},{id:"highway-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":.5,"line-width":{base:1.2,stops:[[8,1.5],[20,17]]}}},{id:"highway-primary-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[7,0],[8,.6]]},"line-width":{base:1.2,stops:[[7,0],[8,.6],[9,1.5],[20,22]]}}},{id:"highway-trunk-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-opacity":{stops:[[5,0],[6,.5]]},"line-width":{base:1.2,stops:[[5,0],[6,.6],[7,1.5],[20,22]]}}},{id:"highway-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:4,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]],layout:{"line-cap":"butt","line-join":"round",visibility:"visible"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[4,0],[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":{stops:[[4,0],[5,.5]]}}},{id:"highway-path",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","path"]]],paint:{"line-color":"#cba","line-dasharray":[1.5,.75],"line-width":{base:1.2,stops:[[15,1.2],[20,4]]}}},{id:"highway-motorway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:12,filter:["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway_link"]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-link",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"highway-minor",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!=","brunnel","tunnel"],["in","class","minor","service","track"]]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"#fff","line-opacity":.5,"line-width":{base:1.2,stops:[[13.5,0],[14,2.5],[20,11.5]]}}},{id:"highway-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["!in","brunnel","bridge","tunnel"],["in","class","secondary","tertiary"]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[8,.5],[20,13]]},"line-opacity":.5}},{id:"highway-primary",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","primary"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[8.5,0],[9,.5],[20,18]]},"line-opacity":0}},{id:"highway-trunk",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["in","class","trunk"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"highway-motorway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",minzoom:5,filter:["all",["==","$type","LineString"],["all",["!in","brunnel","bridge","tunnel"],["==","class","motorway"]]],layout:{"line-cap":"round","line-join":"round",visibility:"visible"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"railway-transit",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-transit-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","transit"],["!in","brunnel","tunnel"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway-service",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],paint:{"line-color":"hsla(0, 0%, 73%, 0.77)","line-width":{base:1.4,stops:[[14,.4],[20,1]]}}},{id:"railway-service-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","class","rail"],["has","service"]]],layout:{visibility:"visible"},paint:{"line-color":"hsla(0, 0%, 73%, 0.68)","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,2],[20,6]]}}},{id:"railway",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"railway-hatching",type:"line",metadata:{"mapbox:group":"1444849345966.4436"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["!has","service"],["!in","brunnel","bridge","tunnel"],["==","class","rail"]]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"bridge-motorway-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-link-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[12,1],[13,3],[14,4],[20,15]]}}},{id:"bridge-secondary-tertiary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-opacity":1,"line-width":{base:1.2,stops:[[8,1.5],[20,28]]}}},{id:"bridge-trunk-primary-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"hsl(28, 76%, 67%)","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,26]]}}},{id:"bridge-motorway-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#e9ac77","line-width":{base:1.2,stops:[[5,.4],[6,.6],[7,1.5],[20,22]]},"line-opacity":.5}},{id:"bridge-path-casing",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#f8f4f0","line-width":{base:1.2,stops:[[15,1.2],[20,18]]}}},{id:"bridge-path",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","$type","LineString"],["all",["==","brunnel","bridge"],["==","class","path"]]],paint:{"line-color":"#cba","line-width":{base:1.2,stops:[[15,1.2],[20,4]]},"line-dasharray":[1.5,.75]}},{id:"bridge-motorway-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-link",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary_link","secondary_link","tertiary_link","trunk_link"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[12.5,0],[13,1.5],[14,2.5],[20,11.5]]}}},{id:"bridge-secondary-tertiary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","secondary","tertiary"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,20]]}}},{id:"bridge-trunk-primary",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["in","class","primary","trunk"]],layout:{"line-join":"round"},paint:{"line-color":"#fea","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]}}},{id:"bridge-motorway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","motorway"]],layout:{"line-join":"round"},paint:{"line-color":"#fc8","line-width":{base:1.2,stops:[[6.5,0],[7,.5],[20,18]]},"line-opacity":.5}},{id:"bridge-railway",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-width":{base:1.4,stops:[[14,.4],[15,.75],[20,2]]}}},{id:"bridge-railway-hatching",type:"line",metadata:{"mapbox:group":"1444849334699.1902"},source:"openmaptiles","source-layer":"transportation",filter:["all",["==","brunnel","bridge"],["==","class","rail"]],paint:{"line-color":"#bbb","line-dasharray":[.2,8],"line-width":{base:1.4,stops:[[14.5,0],[15,3],[20,8]]}}},{id:"cablecar",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,1],[19,2.5]]}}},{id:"cablecar-dash",type:"line",source:"openmaptiles","source-layer":"transportation",minzoom:13,filter:["==","class","cable_car"],layout:{visibility:"visible","line-cap":"round"},paint:{"line-color":"hsl(0, 0%, 70%)","line-width":{base:1,stops:[[11,3],[19,5.5]]},"line-dasharray":[2,3]}},{id:"boundary-land-level-4",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",[">=","admin_level",4],["<=","admin_level",8],["!=","maritime",1]],layout:{"line-join":"round"},paint:{"line-color":"#9e9cab","line-dasharray":[3,1,1,1],"line-width":{base:1.4,stops:[[4,.4],[5,1],[12,3]]},"line-opacity":.6}},{id:"boundary-land-level-2",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["==","admin_level",2],["!=","maritime",1],["!=","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 66%)","line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,2]]}}},{id:"boundary-land-disputed",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["!=","maritime",1],["==","disputed",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"hsl(248, 7%, 70%)","line-dasharray":[1,3],"line-width":{base:1,stops:[[0,.6],[4,1.4],[5,2],[12,8]]}}},{id:"boundary-water",type:"line",source:"openmaptiles","source-layer":"boundary",filter:["all",["in","admin_level",2,4],["==","maritime",1]],layout:{"line-cap":"round","line-join":"round"},paint:{"line-color":"rgba(154, 189, 214, 1)","line-width":{base:1,stops:[[0,.6],[4,1],[5,1],[12,1]]},"line-opacity":{stops:[[6,0],[10,0]]}}},{id:"waterway-name",type:"symbol",source:"openmaptiles","source-layer":"waterway",minzoom:13,filter:["all",["==","$type","LineString"],["has","name"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin} {name:nonlatin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","text-letter-spacing":.2,"symbol-spacing":350},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-lakeline",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["==","$type","LineString"],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"line","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-ocean",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["==","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":14,"text-field":"{name:latin}","text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"water-name-other",type:"symbol",source:"openmaptiles","source-layer":"water_name",filter:["all",["==","$type","Point"],["!in","class","ocean"]],layout:{"text-font":["Noto Sans Italic"],"text-size":{stops:[[0,10],[6,14]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":5,"text-rotation-alignment":"map","symbol-placement":"point","symbol-spacing":350,"text-letter-spacing":.2,visibility:"visible"},paint:{"text-color":"#74aee9","text-halo-width":1.5,"text-halo-color":"rgba(255,255,255,0.7)"}},{id:"poi-level-3",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:16,filter:["all",["==","$type","Point"],[">=","rank",25]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-2",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:15,filter:["all",["==","$type","Point"],["<=","rank",24],[">=","rank",15]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"poi-level-1",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:14,filter:["all",["==","$type","Point"],["<=","rank",14],["has","name"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":11,"text-max-width":9},paint:{"text-halo-blur":.5,"text-color":"rgba(191, 228, 172, 1)","text-halo-width":1,"text-halo-color":"rgba(30, 29, 29, 1)"}},{id:"poi-railway",type:"symbol",source:"openmaptiles","source-layer":"poi",minzoom:13,filter:["all",["==","$type","Point"],["has","name"],["==","class","railway"],["==","subclass","station"]],layout:{"text-padding":2,"text-font":["Noto Sans Regular"],"text-anchor":"top","icon-image":"{class}_11","text-field":`{name:latin} +{name:nonlatin}`,"text-offset":[0,.6],"text-size":12,"text-max-width":9,"icon-optional":!1,"icon-ignore-placement":!1,"icon-allow-overlap":!1,"text-ignore-placement":!1,"text-allow-overlap":!1,"text-optional":!0},paint:{"text-halo-blur":.5,"text-color":"#666","text-halo-width":1,"text-halo-color":"#ffffff"}},{id:"road_oneway",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"road_oneway_opposite",type:"symbol",source:"openmaptiles","source-layer":"transportation",minzoom:15,filter:["all",["==","oneway",-1],["in","class","motorway","trunk","primary","secondary","tertiary","minor","service"]],layout:{"symbol-placement":"line","icon-image":"oneway","symbol-spacing":75,"icon-padding":2,"icon-rotation-alignment":"map","icon-rotate":-90,"icon-size":{stops:[[15,.5],[19,1]]}},paint:{"icon-opacity":.5}},{id:"highway-name-path",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15.5,filter:["==","class","path"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-color":"#f8f4f0","text-color":"hsl(30, 23%, 62%)","text-halo-width":.5}},{id:"highway-name-minor",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:15,filter:["all",["==","$type","LineString"],["in","class","minor","service","track"]],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-name-major",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:12.2,filter:["in","class","primary","secondary","tertiary","trunk"],layout:{"text-size":{base:1,stops:[[13,12],[14,13]]},"text-font":["Noto Sans Regular"],"text-field":"{name:latin} {name:nonlatin}","symbol-placement":"line","text-rotation-alignment":"map"},paint:{"text-halo-blur":.5,"text-color":"#765","text-halo-width":1}},{id:"highway-shield",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:8,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["!in","network","us-interstate","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"road_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-opacity":1,"text-color":"rgba(20, 19, 19, 1)","text-halo-color":"rgba(230, 221, 221, 0)","text-halo-width":2,"icon-color":"rgba(183, 18, 18, 1)","icon-opacity":.3,"icon-halo-color":"rgba(183, 55, 55, 0)"}},{id:"highway-shield-us-interstate",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:7,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-interstate"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[7,"point"],[7,"line"],[8,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"highway-shield-us-other",type:"symbol",source:"openmaptiles","source-layer":"transportation_name",minzoom:9,filter:["all",["<=","ref_length",6],["==","$type","LineString"],["in","network","us-highway","us-state"]],layout:{"text-size":10,"icon-image":"{network}_{ref_length}","icon-rotation-alignment":"viewport","symbol-spacing":200,"text-font":["Noto Sans Regular"],"symbol-placement":{base:1,stops:[[10,"point"],[11,"line"]]},"text-rotation-alignment":"viewport","icon-size":1,"text-field":"{ref}"},paint:{"text-color":"rgba(0, 0, 0, 1)"}},{id:"place-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:12,filter:["!in","class","city","town","village","country","continent"],layout:{"text-letter-spacing":.1,"text-size":{base:1.2,stops:[[12,10],[15,14]]},"text-font":["Noto Sans Bold"],"text-field":`{name:latin} +{name:nonlatin}`,"text-transform":"uppercase","text-max-width":9,visibility:"visible"},paint:{"text-color":"rgba(255,255,255,1)","text-halo-width":1.2,"text-halo-color":"rgba(57, 28, 28, 1)"}},{id:"place-village",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",minzoom:10,filter:["==","class","village"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,12],[15,16]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(10, 9, 9, 0.8)"}},{id:"place-town",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["==","class","town"],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[10,14],[15,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(255, 255, 255, 1)","text-halo-width":1.2,"text-halo-color":"rgba(22, 22, 22, 0.8)"}},{id:"place-city",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["!=","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,visibility:"visible"},paint:{"text-color":"rgba(0, 0, 0, 1)","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-city-capital",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","capital",2],["==","class","city"]],layout:{"text-font":["Noto Sans Regular"],"text-size":{base:1.2,stops:[[7,14],[11,24]]},"text-field":`{name:latin} +{name:nonlatin}`,"text-max-width":8,"icon-image":"star_11","text-offset":[.4,0],"icon-size":.8,"text-anchor":"left",visibility:"visible"},paint:{"text-color":"#333","text-halo-width":1.2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-other",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["!has","iso_a2"]],layout:{"text-font":["Noto Sans Italic"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-3",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],[">=","rank",3],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[3,11],[7,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-2",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",2],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[2,11],[5,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-country-1",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",filter:["all",["==","class","country"],["==","rank",1],["has","iso_a2"]],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":{stops:[[1,11],[4,17]]},"text-transform":"uppercase","text-max-width":6.25,visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}},{id:"place-continent",type:"symbol",metadata:{"mapbox:group":"1444849242106.713"},source:"openmaptiles","source-layer":"place",maxzoom:1,filter:["==","class","continent"],layout:{"text-font":["Noto Sans Bold"],"text-field":"{name:latin}","text-size":14,"text-max-width":6.25,"text-transform":"uppercase",visibility:"visible"},paint:{"text-halo-blur":1,"text-color":"#334","text-halo-width":2,"text-halo-color":"rgba(255,255,255,0.8)"}}],id:"qebnlkra6"}}}),mq=Ye({"src/plots/map/styles/arcgis-sat.js"(X,H){H.exports={version:8,name:"orto",metadata:{},center:[1.537786,41.837539],zoom:12,bearing:0,pitch:0,light:{anchor:"viewport",color:"white",intensity:.4,position:[1.15,45,30]},sources:{ortoEsri:{type:"raster",tiles:["https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}"],tileSize:256,maxzoom:18,attribution:"ESRI © ESRI"},ortoInstaMaps:{type:"raster",tiles:["https://tilemaps.icgc.cat/mapfactory/wmts/orto_8_12/CAT3857/{z}/{x}/{y}.png"],tileSize:256,maxzoom:13},ortoICGC:{type:"raster",tiles:["https://geoserveis.icgc.cat/icc_mapesmultibase/noutm/wmts/orto/GRID3857/{z}/{x}/{y}.jpeg"],tileSize:256,minzoom:13.1,maxzoom:20},openmaptiles:{type:"vector",url:"https://geoserveis.icgc.cat/contextmaps/basemap.json"}},sprite:"https://geoserveis.icgc.cat/contextmaps/sprites/sprite@1",glyphs:"https://geoserveis.icgc.cat/contextmaps/glyphs/{fontstack}/{range}.pbf",layers:[{id:"background",type:"background",paint:{"background-color":"#F4F9F4"}},{id:"ortoEsri",type:"raster",source:"ortoEsri",maxzoom:16,layout:{visibility:"visible"}},{id:"ortoICGC",type:"raster",source:"ortoICGC",minzoom:13.1,maxzoom:19,layout:{visibility:"visible"}},{id:"ortoInstaMaps",type:"raster",source:"ortoInstaMaps",maxzoom:13,layout:{visibility:"visible"}}]}}}),_g=Ye({"src/plots/map/constants.js"(X,H){"use strict";var g=Km(),x=vq(),A=mq(),M='\xA9 OpenStreetMap contributors',e="https://basemaps.cartocdn.com/gl/positron-gl-style/style.json",t="https://basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json",r="https://basemaps.cartocdn.com/gl/voyager-gl-style/style.json",o="https://basemaps.cartocdn.com/gl/positron-nolabels-gl-style/style.json",a="https://basemaps.cartocdn.com/gl/dark-matter-nolabels-gl-style/style.json",i="https://basemaps.cartocdn.com/gl/voyager-nolabels-gl-style/style.json",n={basic:r,streets:r,outdoors:r,light:e,dark:t,satellite:A,"satellite-streets":x,"open-street-map":{id:"osm",version:8,sources:{"plotly-osm-tiles":{type:"raster",attribution:M,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}],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}],glyphs:"https://fonts.openmaptiles.org/{fontstack}/{range}.pbf"},"carto-positron":e,"carto-darkmatter":t,"carto-voyager":r,"carto-positron-nolabels":o,"carto-darkmatter-nolabels":a,"carto-voyager-nolabels":i},s=g(n);H.exports={styleValueDflt:"basic",stylesMap:n,styleValuesMap:s,traceLayerPrefix:"plotly-trace-layer-",layoutLayerPrefix:"plotly-layout-layer-",missingStyleErrorMsg:["No valid maplibre style found, please set `map.style` to one of:",s.join(", "),"or use a tile service."].join(` +`),mapOnErrorMsg:"Map error."}}}),Mx=Ye({"src/plots/map/layout_attributes.js"(X,H){"use strict";var g=ta(),x=Fn().defaultLine,A=Wu().attributes,M=Au(),e=Pc().textposition,t=Ou().overrideAll,r=cl().templatedArray,o=_g(),a=M({noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0});a.family.dflt="Open Sans Regular, Arial Unicode MS Regular";var i=H.exports=t({_arrayAttrRegexps:[g.counterRegex("map",".layers",!0)],domain:A({name:"map"}),style:{valType:"any",values:o.styleValuesMap,dflt:o.styleValueDflt},center:{lon:{valType:"number",dflt:0},lat:{valType:"number",dflt:0}},zoom:{valType:"number",dflt:1},bearing:{valType:"number",dflt:0},pitch:{valType:"number",dflt:0},bounds:{west:{valType:"number"},east:{valType:"number"},south:{valType:"number"},north:{valType:"number"}},layers:r("layer",{visible:{valType:"boolean",dflt:!0},sourcetype:{valType:"enumerated",values:["geojson","vector","raster","image"],dflt:"geojson"},source:{valType:"any"},sourcelayer:{valType:"string",dflt:""},sourceattribution:{valType:"string"},type:{valType:"enumerated",values:["circle","line","fill","symbol","raster"],dflt:"circle"},coordinates:{valType:"any"},below:{valType:"string"},color:{valType:"color",dflt:x},opacity:{valType:"number",min:0,max:1,dflt:1},minzoom:{valType:"number",min:0,max:24,dflt:0},maxzoom:{valType:"number",min:0,max:24,dflt:24},circle:{radius:{valType:"number",dflt:15}},line:{width:{valType:"number",dflt:2},dash:{valType:"data_array"}},fill:{outlinecolor:{valType:"color",dflt:x}},symbol:{icon:{valType:"string",dflt:"marker"},iconsize:{valType:"number",dflt:10},text:{valType:"string",dflt:""},placement:{valType:"enumerated",values:["point","line","line-center"],dflt:"point"},textfont:a,textposition:g.extendFlat({},e,{arrayOk:!1})}})},"plot","from-root");i.uirevision={valType:"any",editType:"none"}}}),MT=Ye({"src/traces/scattermap/attributes.js"(X,H){"use strict";var g=xs().hovertemplateAttrs,x=xs().texttemplateAttrs,A=$d(),M=p0(),e=Pc(),t=Mx(),r=Pl(),o=tu(),a=Oo().extendFlat,i=Ou().overrideAll,n=Mx(),s=M.line,c=M.marker;H.exports=i({lon:M.lon,lat:M.lat,cluster:{enabled:{valType:"boolean"},maxzoom:a({},n.layers.maxzoom,{}),step:{valType:"number",arrayOk:!0,dflt:-1,min:-1},size:{valType:"number",arrayOk:!0,dflt:20,min:0},color:{valType:"color",arrayOk:!0},opacity:a({},c.opacity,{dflt:1})},mode:a({},e.mode,{dflt:"markers"}),text:a({},e.text,{}),texttemplate:x({editType:"plot"},{keys:["lat","lon","text"]}),hovertext:a({},e.hovertext,{}),line:{color:s.color,width:s.width},connectgaps:e.connectgaps,marker:a({symbol:{valType:"string",dflt:"circle",arrayOk:!0},angle:{valType:"number",dflt:"auto",arrayOk:!0},allowoverlap:{valType:"boolean",dflt:!1},opacity:c.opacity,size:c.size,sizeref:c.sizeref,sizemin:c.sizemin,sizemode:c.sizemode},o("marker")),fill:M.fill,fillcolor:A(),textfont:t.layers.symbol.textfont,textposition:t.layers.symbol.textposition,below:{valType:"string"},selected:{marker:e.selected.marker},unselected:{marker:e.unselected.marker},hoverinfo:a({},r.hoverinfo,{flags:["lon","lat","text","name"]}),hovertemplate:g()},"calc","nested")}}),Ek=Ye({"src/traces/scattermap/constants.js"(X,H){"use strict";var g=["Metropolis Black Italic","Metropolis Black","Metropolis Bold Italic","Metropolis Bold","Metropolis Extra Bold Italic","Metropolis Extra Bold","Metropolis Extra Light Italic","Metropolis Extra Light","Metropolis Light Italic","Metropolis Light","Metropolis Medium Italic","Metropolis Medium","Metropolis Regular Italic","Metropolis Regular","Metropolis Semi Bold Italic","Metropolis Semi Bold","Metropolis Thin Italic","Metropolis Thin","Open Sans Bold Italic","Open Sans Bold","Open Sans Extrabold Italic","Open Sans Extrabold","Open Sans Italic","Open Sans Light Italic","Open Sans Light","Open Sans Regular","Open Sans Semibold Italic","Open Sans Semibold","Klokantech Noto Sans Bold","Klokantech Noto Sans CJK Bold","Klokantech Noto Sans CJK Regular","Klokantech Noto Sans Italic","Klokantech Noto Sans Regular"];H.exports={isSupportedFont:function(x){return g.indexOf(x)!==-1}}}}),gq=Ye({"src/traces/scattermap/defaults.js"(X,H){"use strict";var g=ta(),x=uu(),A=md(),M=Dd(),e=zd(),t=ev(),r=MT(),o=Ek().isSupportedFont;H.exports=function(n,s,c,h){function v(y,f){return g.coerce(n,s,r,y,f)}function p(y,f){return g.coerce2(n,s,r,y,f)}var T=a(n,s,v);if(!T){s.visible=!1;return}if(v("text"),v("texttemplate"),v("hovertext"),v("hovertemplate"),v("mode"),v("below"),x.hasMarkers(s)){A(n,s,c,h,v,{noLine:!0,noAngle:!0}),v("marker.allowoverlap"),v("marker.angle");var l=s.marker;l.symbol!=="circle"&&(g.isArrayOrTypedArray(l.size)&&(l.size=l.size[0]),g.isArrayOrTypedArray(l.color)&&(l.color=l.color[0]))}x.hasLines(s)&&(M(n,s,c,h,v,{noDash:!0}),v("connectgaps"));var _=p("cluster.maxzoom"),w=p("cluster.step"),S=p("cluster.color",s.marker&&s.marker.color||c),E=p("cluster.size"),m=p("cluster.opacity"),b=_!==!1||w!==!1||S!==!1||E!==!1||m!==!1,d=v("cluster.enabled",b);if(d||x.hasText(s)){var u=h.font.family;e(n,s,h,v,{noSelect:!0,noFontVariant:!0,noFontShadow:!0,noFontLineposition:!0,noFontTextcase:!0,font:{family:o(u)?u:"Open Sans Regular",weight:h.font.weight,style:h.font.style,size:h.font.size,color:h.font.color}})}v("fill"),s.fill!=="none"&&t(n,s,c,v),g.coerceSelectionMarkerOpacity(s,v)};function a(i,n,s){var c=s("lon")||[],h=s("lat")||[],v=Math.min(c.length,h.length);return n._length=v,v}}}),kk=Ye({"src/traces/scattermap/format_labels.js"(X,H){"use strict";var g=Co();H.exports=function(A,M,e){var t={},r=e[M.subplot]._subplot,o=r.mockAxis,a=A.lonlat;return t.lonLabel=g.tickText(o,o.c2l(a[0]),!0).text,t.latLabel=g.tickText(o,o.c2l(a[1]),!0).text,t}}}),Ck=Ye({"src/plots/map/convert_text_opts.js"(X,H){"use strict";var g=ta();H.exports=function(A,M){var e=A.split(" "),t=e[0],r=e[1],o=g.isArrayOrTypedArray(M)?g.mean(M):M,a=.5+o/100,i=1.5+o/100,n=["",""],s=[0,0];switch(t){case"top":n[0]="top",s[1]=-i;break;case"bottom":n[0]="bottom",s[1]=i;break}switch(r){case"left":n[1]="right",s[0]=-a;break;case"right":n[1]="left",s[0]=a;break}var c;return n[0]&&n[1]?c=n.join("-"):n[0]?c=n[0]:n[1]?c=n[1]:c="center",{anchor:c,offset:s}}}}),yq=Ye({"src/traces/scattermap/convert.js"(X,H){"use strict";var g=jo(),x=ta(),A=ks().BADNUM,M=dg(),e=Su(),t=Bo(),r=t1(),o=uu(),a=Ek().isSupportedFont,i=Ck(),n=Qp().appendArrayPointValue,s=jl().NEWLINES,c=jl().BR_TAG_ALL;H.exports=function(m,b){var d=b[0].trace,u=d.visible===!0&&d._length!==0,y=d.fill!=="none",f=o.hasLines(d),P=o.hasMarkers(d),L=o.hasText(d),z=P&&d.marker.symbol==="circle",F=P&&d.marker.symbol!=="circle",B=d.cluster&&d.cluster.enabled,O=h("fill"),I=h("line"),N=h("circle"),U=h("symbol"),W={fill:O,line:I,circle:N,symbol:U};if(!u)return W;var Q;if((y||f)&&(Q=M.calcTraceToLineCoords(b)),y&&(O.geojson=M.makePolygon(Q),O.layout.visibility="visible",x.extendFlat(O.paint,{"fill-color":d.fillcolor})),f&&(I.geojson=M.makeLine(Q),I.layout.visibility="visible",x.extendFlat(I.paint,{"line-width":d.line.width,"line-color":d.line.color,"line-opacity":d.opacity})),z){var ue=v(b);N.geojson=ue.geojson,N.layout.visibility="visible",B&&(N.filter=["!",["has","point_count"]],W.cluster={type:"circle",filter:["has","point_count"],layout:{visibility:"visible"},paint:{"circle-color":w(d.cluster.color,d.cluster.step),"circle-radius":w(d.cluster.size,d.cluster.step),"circle-opacity":w(d.cluster.opacity,d.cluster.step)}},W.clusterCount={type:"symbol",filter:["has","point_count"],paint:{},layout:{"text-field":"{point_count_abbreviated}","text-font":S(d),"text-size":12}}),x.extendFlat(N.paint,{"circle-color":ue.mcc,"circle-radius":ue.mrc,"circle-opacity":ue.mo})}if(z&&B&&(N.filter=["!",["has","point_count"]]),(F||L)&&(U.geojson=p(b,m),x.extendFlat(U.layout,{visibility:"visible","icon-image":"{symbol}-15","text-field":"{text}"}),F&&(x.extendFlat(U.layout,{"icon-size":d.marker.size/10}),"angle"in d.marker&&d.marker.angle!=="auto"&&x.extendFlat(U.layout,{"icon-rotate":{type:"identity",property:"angle"},"icon-rotation-alignment":"map"}),U.layout["icon-allow-overlap"]=d.marker.allowoverlap,x.extendFlat(U.paint,{"icon-opacity":d.opacity*d.marker.opacity,"icon-color":d.marker.color})),L)){var se=(d.marker||{}).size,he=i(d.textposition,se);x.extendFlat(U.layout,{"text-size":d.textfont.size,"text-anchor":he.anchor,"text-offset":he.offset,"text-font":S(d)}),x.extendFlat(U.paint,{"text-color":d.textfont.color,"text-opacity":d.opacity})}return W};function h(E){return{type:E,geojson:M.makeBlank(),layout:{visibility:"none"},filter:null,paint:{}}}function v(E){var m=E[0].trace,b=m.marker,d=m.selectedpoints,u=x.isArrayOrTypedArray(b.color),y=x.isArrayOrTypedArray(b.size),f=x.isArrayOrTypedArray(b.opacity),P;function L(se){return m.opacity*se}function z(se){return se/2}var F;u&&(e.hasColorscale(m,"marker")?F=e.makeColorScaleFuncFromTrace(b):F=x.identity);var B;y&&(B=r(m));var O;f&&(O=function(se){var he=g(se)?+x.constrain(se,0,1):0;return L(he)});var I=[];for(P=0;P850?P+=" Black":u>750?P+=" Extra Bold":u>650?P+=" Bold":u>550?P+=" Semi Bold":u>450?P+=" Medium":u>350?P+=" Regular":u>250?P+=" Light":u>150?P+=" Extra Light":P+=" Thin"):y.slice(0,2).join(" ")==="Open Sans"?(P="Open Sans",u>750?P+=" Extrabold":u>650?P+=" Bold":u>550?P+=" Semibold":u>350?P+=" Regular":P+=" Light"):y.slice(0,3).join(" ")==="Klokantech Noto Sans"&&(P="Klokantech Noto Sans",y[3]==="CJK"&&(P+=" CJK"),P+=u>500?" Bold":" Regular")),f&&(P+=" Italic"),P==="Open Sans Regular Italic"?P="Open Sans Italic":P==="Open Sans Regular Bold"?P="Open Sans Bold":P==="Open Sans Regular Bold Italic"?P="Open Sans Bold Italic":P==="Klokantech Noto Sans Regular Italic"&&(P="Klokantech Noto Sans Italic"),a(P)||(P=b);var L=P.split(", ");return L}}}),_q=Ye({"src/traces/scattermap/plot.js"(X,H){"use strict";var g=ta(),x=yq(),A=_g().traceLayerPrefix,M={cluster:["cluster","clusterCount","circle"],nonCluster:["fill","line","circle","symbol"]};function e(r,o,a,i){this.type="scattermap",this.subplot=r,this.uid=o,this.clusterEnabled=a,this.isHidden=i,this.sourceIds={fill:"source-"+o+"-fill",line:"source-"+o+"-line",circle:"source-"+o+"-circle",symbol:"source-"+o+"-symbol",cluster:"source-"+o+"-circle",clusterCount:"source-"+o+"-circle"},this.layerIds={fill:A+o+"-fill",line:A+o+"-line",circle:A+o+"-circle",symbol:A+o+"-symbol",cluster:A+o+"-cluster",clusterCount:A+o+"-cluster-count"},this.below=null}var t=e.prototype;t.addSource=function(r,o,a){var i={type:"geojson",data:o.geojson};a&&a.enabled&&g.extendFlat(i,{cluster:!0,clusterMaxZoom:a.maxzoom});var n=this.subplot.map.getSource(this.sourceIds[r]);n?n.setData(o.geojson):this.subplot.map.addSource(this.sourceIds[r],i)},t.setSourceData=function(r,o){this.subplot.map.getSource(this.sourceIds[r]).setData(o.geojson)},t.addLayer=function(r,o,a){var i={type:o.type,id:this.layerIds[r],source:this.sourceIds[r],layout:o.layout,paint:o.paint};o.filter&&(i.filter=o.filter);for(var n=this.layerIds[r],s,c=this.subplot.getMapLayers(),h=0;h=0;f--){var P=y[f];n.removeLayer(p.layerIds[P])}u||n.removeSource(p.sourceIds.circle)}function _(u){for(var y=M.nonCluster,f=0;f=0;f--){var P=y[f];n.removeLayer(p.layerIds[P]),u||n.removeSource(p.sourceIds[P])}}function S(u){v?l(u):w(u)}function E(u){h?T(u):_(u)}function m(){for(var u=h?M.cluster:M.nonCluster,y=0;y=0;i--){var n=a[i];o.removeLayer(this.layerIds[n]),o.removeSource(this.sourceIds[n])}},H.exports=function(o,a){var i=a[0].trace,n=i.cluster&&i.cluster.enabled,s=i.visible!==!0,c=new e(o,i.uid,n,s),h=x(o.gd,a),v=c.below=o.belowLookup["trace-"+i.uid],p,T,l;if(n)for(c.addSource("circle",h.circle,i.cluster),p=0;p=0?Math.floor((i+180)/360):Math.ceil((i-180)/360),E=S*360,m=i-E;function b(B){var O=B.lonlat;if(O[0]===e||_&&T.indexOf(B.i+1)===-1)return 1/0;var I=x.modHalf(O[0],360),N=O[1],U=p.project([I,N]),W=U.x-h.c2p([m,N]),Q=U.y-v.c2p([I,n]),ue=Math.max(3,B.mrc||0);return Math.max(Math.sqrt(W*W+Q*Q)-ue,1-3/ue)}if(g.getClosest(s,b,a),a.index!==!1){var d=s[a.index],u=d.lonlat,y=[x.modHalf(u[0],360)+E,u[1]],f=h.c2p(y),P=v.c2p(y),L=d.mrc||1;a.x0=f-L,a.x1=f+L,a.y0=P-L,a.y1=P+L;var z={};z[c.subplot]={_subplot:p};var F=c._module.formatLabels(d,c,z);return a.lonLabel=F.lonLabel,a.latLabel=F.latLabel,a.color=A(c,d),a.extraText=o(c,d,s[0].t.labels),a.hovertemplate=c.hovertemplate,[a]}}function o(a,i,n){if(a.hovertemplate)return;var s=i.hi||a.hoverinfo,c=s.split("+"),h=c.indexOf("all")!==-1,v=c.indexOf("lon")!==-1,p=c.indexOf("lat")!==-1,T=i.lonlat,l=[];function _(w){return w+"\xB0"}return h||v&&p?l.push("("+_(T[1])+", "+_(T[0])+")"):v?l.push(n.lon+_(T[0])):p&&l.push(n.lat+_(T[1])),(h||c.indexOf("text")!==-1)&&M(i,a,l),l.join("
")}H.exports={hoverPoints:r,getExtraText:o}}}),xq=Ye({"src/traces/scattermap/event_data.js"(X,H){"use strict";H.exports=function(x,A){return x.lon=A.lon,x.lat=A.lat,x}}}),bq=Ye({"src/traces/scattermap/select.js"(X,H){"use strict";var g=ta(),x=uu(),A=ks().BADNUM;H.exports=function(e,t){var r=e.cd,o=e.xaxis,a=e.yaxis,i=[],n=r[0].trace,s;if(!x.hasMarkers(n))return[];if(t===!1)for(s=0;s1)return 1;for(var Y=q,pe=0;pe<8;pe++){var Ce=this.sampleCurveX(Y)-q;if(Math.abs(Ce)Ce?Ge=Y:ut=Y,Y=.5*(ut-Ge)+Ge;return Y},solve:function(q,D){return this.sampleCurveY(this.solveCurveX(q,D))}};var c=r(n);let h,v;function p(){return h==null&&(h=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")&&typeof createImageBitmap=="function"),h}function T(){if(v==null&&(v=!1,p())){let D=new OffscreenCanvas(5,5).getContext("2d",{willReadFrequently:!0});if(D){for(let pe=0;pe<5*5;pe++){let Ce=4*pe;D.fillStyle=`rgb(${Ce},${Ce+1},${Ce+2})`,D.fillRect(pe%5,Math.floor(pe/5),1,1)}let Y=D.getImageData(0,0,5,5).data;for(let pe=0;pe<5*5*4;pe++)if(pe%4!=3&&Y[pe]!==pe){v=!0;break}}}return v||!1}function l(q,D,Y,pe){let Ce=new c(q,D,Y,pe);return Ue=>Ce.solve(Ue)}let _=l(.25,.1,.25,1);function w(q,D,Y){return Math.min(Y,Math.max(D,q))}function S(q,D,Y){let pe=Y-D,Ce=((q-D)%pe+pe)%pe+D;return Ce===D?Y:Ce}function E(q,...D){for(let Y of D)for(let pe in Y)q[pe]=Y[pe];return q}let m=1;function b(q,D,Y){let pe={};for(let Ce in q)pe[Ce]=D.call(this,q[Ce],Ce,q);return pe}function d(q,D,Y){let pe={};for(let Ce in q)D.call(this,q[Ce],Ce,q)&&(pe[Ce]=q[Ce]);return pe}function u(q){return Array.isArray(q)?q.map(u):typeof q=="object"&&q?b(q,u):q}let y={};function f(q){y[q]||(typeof console<"u"&&console.warn(q),y[q]=!0)}function P(q,D,Y){return(Y.y-q.y)*(D.x-q.x)>(D.y-q.y)*(Y.x-q.x)}function L(q){return typeof WorkerGlobalScope<"u"&&q!==void 0&&q instanceof WorkerGlobalScope}let z=null;function F(q){return typeof ImageBitmap<"u"&&q instanceof ImageBitmap}let B="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQYV2NgAAIAAAUAAarVyFEAAAAASUVORK5CYII=";function O(q,D,Y,pe,Ce){return t(this,void 0,void 0,function*(){if(typeof VideoFrame>"u")throw new Error("VideoFrame not supported");let Ue=new VideoFrame(q,{timestamp:0});try{let Ge=Ue?.format;if(!Ge||!Ge.startsWith("BGR")&&!Ge.startsWith("RGB"))throw new Error(`Unrecognized format ${Ge}`);let ut=Ge.startsWith("BGR"),Tt=new Uint8ClampedArray(pe*Ce*4);if(yield Ue.copyTo(Tt,function(Ft,$t,lr,Ar,zr){let Kr=4*Math.max(-$t,0),la=(Math.max(0,lr)-lr)*Ar*4+Kr,za=4*Ar,ja=Math.max(0,$t),gi=Math.max(0,lr);return{rect:{x:ja,y:gi,width:Math.min(Ft.width,$t+Ar)-ja,height:Math.min(Ft.height,lr+zr)-gi},layout:[{offset:la,stride:za}]}}(q,D,Y,pe,Ce)),ut)for(let Ft=0;FtL(self)?self.worker&&self.worker.referrer:(window.location.protocol==="blob:"?window.parent:window).location.href,$=function(q,D){if(/:\/\//.test(q.url)&&!/^https?:|^file:/.test(q.url)){let pe=ue(q.url);if(pe)return pe(q,D);if(L(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:q,targetMapId:se},D)}if(!(/^file:/.test(Y=q.url)||/^file:/.test(G())&&!/^\w+:/.test(Y))){if(fetch&&Request&&AbortController&&Object.prototype.hasOwnProperty.call(Request.prototype,"signal"))return function(pe,Ce){return t(this,void 0,void 0,function*(){let Ue=new Request(pe.url,{method:pe.method||"GET",body:pe.body,credentials:pe.credentials,headers:pe.headers,cache:pe.cache,referrer:G(),signal:Ce.signal});pe.type!=="json"||Ue.headers.has("Accept")||Ue.headers.set("Accept","application/json");let Ge=yield fetch(Ue);if(!Ge.ok){let Ft=yield Ge.blob();throw new he(Ge.status,Ge.statusText,pe.url,Ft)}let ut;ut=pe.type==="arrayBuffer"||pe.type==="image"?Ge.arrayBuffer():pe.type==="json"?Ge.json():Ge.text();let Tt=yield ut;if(Ce.signal.aborted)throw W();return{data:Tt,cacheControl:Ge.headers.get("Cache-Control"),expires:Ge.headers.get("Expires")}})}(q,D);if(L(self)&&self.worker&&self.worker.actor)return self.worker.actor.sendAsync({type:"GR",data:q,mustQueue:!0,targetMapId:se},D)}var Y;return function(pe,Ce){return new Promise((Ue,Ge)=>{var ut;let Tt=new XMLHttpRequest;Tt.open(pe.method||"GET",pe.url,!0),pe.type!=="arrayBuffer"&&pe.type!=="image"||(Tt.responseType="arraybuffer");for(let Ft in pe.headers)Tt.setRequestHeader(Ft,pe.headers[Ft]);pe.type==="json"&&(Tt.responseType="text",!((ut=pe.headers)===null||ut===void 0)&&ut.Accept||Tt.setRequestHeader("Accept","application/json")),Tt.withCredentials=pe.credentials==="include",Tt.onerror=()=>{Ge(new Error(Tt.statusText))},Tt.onload=()=>{if(!Ce.signal.aborted)if((Tt.status>=200&&Tt.status<300||Tt.status===0)&&Tt.response!==null){let Ft=Tt.response;if(pe.type==="json")try{Ft=JSON.parse(Tt.response)}catch($t){return void Ge($t)}Ue({data:Ft,cacheControl:Tt.getResponseHeader("Cache-Control"),expires:Tt.getResponseHeader("Expires")})}else{let Ft=new Blob([Tt.response],{type:Tt.getResponseHeader("Content-Type")});Ge(new he(Tt.status,Tt.statusText,pe.url,Ft))}},Ce.signal.addEventListener("abort",()=>{Tt.abort(),Ge(W())}),Tt.send(pe.body)})}(q,D)};function J(q){if(!q||q.indexOf("://")<=0||q.indexOf("data:image/")===0||q.indexOf("blob:")===0)return!0;let D=new URL(q),Y=window.location;return D.protocol===Y.protocol&&D.host===Y.host}function Z(q,D,Y){Y[q]&&Y[q].indexOf(D)!==-1||(Y[q]=Y[q]||[],Y[q].push(D))}function re(q,D,Y){if(Y&&Y[q]){let pe=Y[q].indexOf(D);pe!==-1&&Y[q].splice(pe,1)}}class ne{constructor(D,Y={}){E(this,Y),this.type=D}}class j extends ne{constructor(D,Y={}){super("error",E({error:D},Y))}}class ee{on(D,Y){return this._listeners=this._listeners||{},Z(D,Y,this._listeners),this}off(D,Y){return re(D,Y,this._listeners),re(D,Y,this._oneTimeListeners),this}once(D,Y){return Y?(this._oneTimeListeners=this._oneTimeListeners||{},Z(D,Y,this._oneTimeListeners),this):new Promise(pe=>this.once(D,pe))}fire(D,Y){typeof D=="string"&&(D=new ne(D,Y||{}));let pe=D.type;if(this.listens(pe)){D.target=this;let Ce=this._listeners&&this._listeners[pe]?this._listeners[pe].slice():[];for(let ut of Ce)ut.call(this,D);let Ue=this._oneTimeListeners&&this._oneTimeListeners[pe]?this._oneTimeListeners[pe].slice():[];for(let ut of Ue)re(pe,ut,this._oneTimeListeners),ut.call(this,D);let Ge=this._eventedParent;Ge&&(E(D,typeof this._eventedParentData=="function"?this._eventedParentData():this._eventedParentData),Ge.fire(D))}else D instanceof j&&console.error(D.error);return this}listens(D){return this._listeners&&this._listeners[D]&&this._listeners[D].length>0||this._oneTimeListeners&&this._oneTimeListeners[D]&&this._oneTimeListeners[D].length>0||this._eventedParent&&this._eventedParent.listens(D)}setEventedParent(D,Y){return this._eventedParent=D,this._eventedParentData=Y,this}}var ie={$version:8,$root:{version:{required:!0,type:"enum",values:[8]},name:{type:"string"},metadata:{type:"*"},center:{type:"array",value:"number"},zoom:{type:"number"},bearing:{type:"number",default:0,period:360,units:"degrees"},pitch:{type:"number",default:0,units:"degrees"},light:{type:"light"},sky:{type:"sky"},projection:{type:"projection"},terrain:{type:"terrain"},sources:{required:!0,type:"sources"},sprite:{type:"sprite"},glyphs:{type:"string"},transition:{type:"transition"},layers:{required:!0,type:"array",value:"layer"}},sources:{"*":{type:"source"}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},attribution:{type:"string"},promoteId:{type:"promoteId"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster:{type:{required:!0,type:"enum",values:{raster:{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},scheme:{type:"enum",values:{xyz:{},tms:{}},default:"xyz"},attribution:{type:"string"},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{}}},url:{type:"string"},tiles:{type:"array",value:"string"},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129]},minzoom:{type:"number",default:0},maxzoom:{type:"number",default:22},tileSize:{type:"number",default:512,units:"pixels"},attribution:{type:"string"},encoding:{type:"enum",values:{terrarium:{},mapbox:{},custom:{}},default:"mapbox"},redFactor:{type:"number",default:1},blueFactor:{type:"number",default:1},greenFactor:{type:"number",default:1},baseShift:{type:"number",default:0},volatile:{type:"boolean",default:!1},"*":{type:"*"}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{}}},data:{required:!0,type:"*"},maxzoom:{type:"number",default:18},attribution:{type:"string"},buffer:{type:"number",default:128,maximum:512,minimum:0},filter:{type:"*"},tolerance:{type:"number",default:.375},cluster:{type:"boolean",default:!1},clusterRadius:{type:"number",default:50,minimum:0},clusterMaxZoom:{type:"number"},clusterMinPoints:{type:"number"},clusterProperties:{type:"*"},lineMetrics:{type:"boolean",default:!1},generateId:{type:"boolean",default:!1},promoteId:{type:"promoteId"}},source_video:{type:{required:!0,type:"enum",values:{video:{}}},urls:{required:!0,type:"array",value:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},source_image:{type:{required:!0,type:"enum",values:{image:{}}},url:{required:!0,type:"string"},coordinates:{required:!0,type:"array",length:4,value:{type:"array",length:2,value:"number"}}},layer:{id:{type:"string",required:!0},type:{type:"enum",values:{fill:{},line:{},symbol:{},circle:{},heatmap:{},"fill-extrusion":{},raster:{},hillshade:{},background:{}},required:!0},metadata:{type:"*"},source:{type:"string"},"source-layer":{type:"string"},minzoom:{type:"number",minimum:0,maximum:24},maxzoom:{type:"number",minimum:0,maximum:24},filter:{type:"filter"},layout:{type:"layout"},paint:{type:"paint"}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background"],layout_background:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{},round:{},square:{}},default:"butt",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-join":{type:"enum",values:{bevel:{},round:{},miter:{}},default:"miter",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,requires:[{"line-join":"miter"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,requires:[{"line-join":"round"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{},line:{},"line-center":{}},default:"point",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",requires:[{"symbol-placement":"line"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{},"viewport-y":{},source:{}},default:"auto",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,requires:["icon-image",{"!":"icon-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{},width:{},height:{},both:{}},default:"none",requires:["icon-image","text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"padding",default:[2],units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-keep-upright":{type:"boolean",default:!1,requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{},viewport:{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{},viewport:{},"viewport-glyph":{},auto:{}},default:"auto",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-letter-spacing":{type:"number",default:0,units:"ems",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{},left:{},center:{},right:{}},default:"center",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-variable-anchor-offset":{type:"variableAnchorOffsetCollection",requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-anchor":{type:"enum",values:{center:{},left:{},right:{},top:{},bottom:{},"top-left":{},"top-right":{},"bottom-left":{},"bottom-right":{}},default:"center",requires:["text-field",{"!":"text-variable-anchor"}],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",requires:["text-field",{"symbol-placement":["line","line-center"]}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{},vertical:{}},requires:["text-field",{"symbol-placement":["point"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{},uppercase:{},lowercase:{}},default:"none",requires:["text-field"],expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,requires:["text-field",{"!":"text-overlap"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-overlap":{type:"enum",values:{never:{},always:{},cooperative:{}},requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,requires:["text-field"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,requires:["text-field","icon-image"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{},none:{}},default:"visible","property-type":"constant"}},filter:{type:"array",value:"*"},filter_operator:{type:"enum",values:{"==":{},"!=":{},">":{},">=":{},"<":{},"<=":{},in:{},"!in":{},all:{},any:{},none:{},has:{},"!has":{}}},geometry_type:{type:"enum",values:{Point:{},LineString:{},Polygon:{}}},function:{expression:{type:"expression"},stops:{type:"array",value:"function_stop"},base:{type:"number",default:1,minimum:0},property:{type:"string",default:"$zoom"},type:{type:"enum",values:{identity:{},exponential:{},interval:{},categorical:{}},default:"exponential"},colorSpace:{type:"enum",values:{rgb:{},lab:{},hcl:{}},default:"rgb"},default:{type:"*",required:!1}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2},expression:{type:"array",value:"*",minimum:1},light:{anchor:{type:"enum",default:"viewport",values:{map:{},viewport:{}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},sky:{"sky-color":{type:"color","property-type":"data-constant",default:"#88C6FC",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-color":{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"fog-ground-blend":{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"horizon-fog-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"sky-horizon-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0},"atmosphere-blend":{type:"number","property-type":"data-constant",default:.8,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0}},terrain:{source:{type:"string",required:!0},exaggeration:{type:"number",minimum:0,default:1}},projection:{type:{type:"enum",default:"mercator",values:{mercator:{},globe:{}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["fill-extrusion-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",transition:!0,requires:["fill-extrusion-height"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,transition:!1,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["line-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"line-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",transition:!1,requires:[{"!":"line-dasharray"},{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["circle-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{},viewport:{}},default:"map",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],transition:!1,expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["icon-image"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["icon-image","icon-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",requires:["text-field"],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{},viewport:{}},default:"map",requires:["text-field","text-translate"],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",default:0,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",default:0,minimum:-1,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",values:{linear:{},nearest:{}},default:"linear",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,transition:!1,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{},viewport:{}},default:"viewport",expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",default:.5,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",transition:!0,requires:[{"!":"background-pattern"}],expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,transition:!0,expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds"},delay:{type:"number",default:0,minimum:0,units:"milliseconds"}},"property-type":{"data-driven":{type:"property-type"},"cross-faded":{type:"property-type"},"cross-faded-data-driven":{type:"property-type"},"color-ramp":{type:"property-type"},"data-constant":{type:"property-type"},constant:{type:"property-type"}},promoteId:{"*":{type:"string"}}};let fe=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function be(q,D){let Y={};for(let pe in q)pe!=="ref"&&(Y[pe]=q[pe]);return fe.forEach(pe=>{pe in D&&(Y[pe]=D[pe])}),Y}function Ae(q,D){if(Array.isArray(q)){if(!Array.isArray(D)||q.length!==D.length)return!1;for(let Y=0;Y`:q.itemType.kind==="value"?"array":`array<${D}>`}return q.kind}let Ne=[nt,Qe,Ct,St,Ot,Cr,jt,Fe(ur),vr,_r,yt];function Ee(q,D){if(D.kind==="error")return null;if(q.kind==="array"){if(D.kind==="array"&&(D.N===0&&D.itemType.kind==="value"||!Ee(q.itemType,D.itemType))&&(typeof q.N!="number"||q.N===D.N))return null}else{if(q.kind===D.kind)return null;if(q.kind==="value"){for(let Y of Ne)if(!Ee(Y,D))return null}}return`Expected ${Ke(q)} but found ${Ke(D)} instead.`}function Ve(q,D){return D.some(Y=>Y.kind===q.kind)}function ke(q,D){return D.some(Y=>Y==="null"?q===null:Y==="array"?Array.isArray(q):Y==="object"?q&&!Array.isArray(q)&&typeof q=="object":Y===typeof q)}function Te(q,D){return q.kind==="array"&&D.kind==="array"?q.itemType.kind===D.itemType.kind&&typeof q.N=="number":q.kind===D.kind}let Le=.96422,rt=.82521,dt=4/29,xt=6/29,It=3*xt*xt,Bt=xt*xt*xt,Gt=Math.PI/180,Kt=180/Math.PI;function sr(q){return(q%=360)<0&&(q+=360),q}function sa([q,D,Y,pe]){let Ce,Ue,Ge=La((.2225045*(q=Aa(q))+.7168786*(D=Aa(D))+.0606169*(Y=Aa(Y)))/1);q===D&&D===Y?Ce=Ue=Ge:(Ce=La((.4360747*q+.3850649*D+.1430804*Y)/Le),Ue=La((.0139322*q+.0971045*D+.7141733*Y)/rt));let ut=116*Ge-16;return[ut<0?0:ut,500*(Ce-Ge),200*(Ge-Ue),pe]}function Aa(q){return q<=.04045?q/12.92:Math.pow((q+.055)/1.055,2.4)}function La(q){return q>Bt?Math.pow(q,1/3):q/It+dt}function ka([q,D,Y,pe]){let Ce=(q+16)/116,Ue=isNaN(D)?Ce:Ce+D/500,Ge=isNaN(Y)?Ce:Ce-Y/200;return Ce=1*Ma(Ce),Ue=Le*Ma(Ue),Ge=rt*Ma(Ge),[Ga(3.1338561*Ue-1.6168667*Ce-.4906146*Ge),Ga(-.9787684*Ue+1.9161415*Ce+.033454*Ge),Ga(.0719453*Ue-.2289914*Ce+1.4052427*Ge),pe]}function Ga(q){return(q=q<=.00304?12.92*q:1.055*Math.pow(q,1/2.4)-.055)<0?0:q>1?1:q}function Ma(q){return q>xt?q*q*q:It*(q-dt)}function Ua(q){return parseInt(q.padEnd(2,q),16)/255}function ni(q,D){return Wt(D?q/100:q,0,1)}function Wt(q,D,Y){return Math.min(Math.max(D,q),Y)}function zt(q){return!q.some(Number.isNaN)}let Vt={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};class Ut{constructor(D,Y,pe,Ce=1,Ue=!0){this.r=D,this.g=Y,this.b=pe,this.a=Ce,Ue||(this.r*=Ce,this.g*=Ce,this.b*=Ce,Ce||this.overwriteGetter("rgb",[D,Y,pe,Ce]))}static parse(D){if(D instanceof Ut)return D;if(typeof D!="string")return;let Y=function(pe){if((pe=pe.toLowerCase().trim())==="transparent")return[0,0,0,0];let Ce=Vt[pe];if(Ce){let[Ge,ut,Tt]=Ce;return[Ge/255,ut/255,Tt/255,1]}if(pe.startsWith("#")&&/^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/.test(pe)){let Ge=pe.length<6?1:2,ut=1;return[Ua(pe.slice(ut,ut+=Ge)),Ua(pe.slice(ut,ut+=Ge)),Ua(pe.slice(ut,ut+=Ge)),Ua(pe.slice(ut,ut+Ge)||"ff")]}if(pe.startsWith("rgb")){let Ge=pe.match(/^rgba?\(\s*([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s+|\s*(,)\s*)([\de.+-]+)(%)?(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(Ge){let[ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja,gi]=Ge,ei=[$t||" ",zr||" ",za].join("");if(ei===" "||ei===" /"||ei===",,"||ei===",,,"){let hi=[Ft,Ar,la].join(""),Ei=hi==="%%%"?100:hi===""?255:0;if(Ei){let En=[Wt(+Tt/Ei,0,1),Wt(+lr/Ei,0,1),Wt(+Kr/Ei,0,1),ja?ni(+ja,gi):1];if(zt(En))return En}}return}}let Ue=pe.match(/^hsla?\(\s*([\de.+-]+)(?:deg)?(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s+|\s*(,)\s*)([\de.+-]+)%(?:\s*([,\/])\s*([\de.+-]+)(%)?)?\s*\)$/);if(Ue){let[Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr]=Ue,la=[Tt||" ",$t||" ",Ar].join("");if(la===" "||la===" /"||la===",,"||la===",,,"){let za=[+ut,Wt(+Ft,0,100),Wt(+lr,0,100),zr?ni(+zr,Kr):1];if(zt(za))return function([ja,gi,ei,hi]){function Ei(En){let fo=(En+ja/30)%12,ss=gi*Math.min(ei,1-ei);return ei-ss*Math.max(-1,Math.min(fo-3,9-fo,1))}return ja=sr(ja),gi/=100,ei/=100,[Ei(0),Ei(8),Ei(4),hi]}(za)}}}(D);return Y?new Ut(...Y,!1):void 0}get rgb(){let{r:D,g:Y,b:pe,a:Ce}=this,Ue=Ce||1/0;return this.overwriteGetter("rgb",[D/Ue,Y/Ue,pe/Ue,Ce])}get hcl(){return this.overwriteGetter("hcl",function(D){let[Y,pe,Ce,Ue]=sa(D),Ge=Math.sqrt(pe*pe+Ce*Ce);return[Math.round(1e4*Ge)?sr(Math.atan2(Ce,pe)*Kt):NaN,Ge,Y,Ue]}(this.rgb))}get lab(){return this.overwriteGetter("lab",sa(this.rgb))}overwriteGetter(D,Y){return Object.defineProperty(this,D,{value:Y}),Y}toString(){let[D,Y,pe,Ce]=this.rgb;return`rgba(${[D,Y,pe].map(Ue=>Math.round(255*Ue)).join(",")},${Ce})`}}Ut.black=new Ut(0,0,0,1),Ut.white=new Ut(1,1,1,1),Ut.transparent=new Ut(0,0,0,0),Ut.red=new Ut(1,0,0,1);class xr{constructor(D,Y,pe){this.sensitivity=D?Y?"variant":"case":Y?"accent":"base",this.locale=pe,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(D,Y){return this.collator.compare(D,Y)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Zr{constructor(D,Y,pe,Ce,Ue){this.text=D,this.image=Y,this.scale=pe,this.fontStack=Ce,this.textColor=Ue}}class pa{constructor(D){this.sections=D}static fromString(D){return new pa([new Zr(D,null,null,null,null)])}isEmpty(){return this.sections.length===0||!this.sections.some(D=>D.text.length!==0||D.image&&D.image.name.length!==0)}static factory(D){return D instanceof pa?D:pa.fromString(D)}toString(){return this.sections.length===0?"":this.sections.map(D=>D.text).join("")}}class Xr{constructor(D){this.values=D.slice()}static parse(D){if(D instanceof Xr)return D;if(typeof D=="number")return new Xr([D,D,D,D]);if(Array.isArray(D)&&!(D.length<1||D.length>4)){for(let Y of D)if(typeof Y!="number")return;switch(D.length){case 1:D=[D[0],D[0],D[0],D[0]];break;case 2:D=[D[0],D[1],D[0],D[1]];break;case 3:D=[D[0],D[1],D[2],D[1]]}return new Xr(D)}}toString(){return JSON.stringify(this.values)}}let Ea=new Set(["center","left","right","top","bottom","top-left","top-right","bottom-left","bottom-right"]);class Fa{constructor(D){this.values=D.slice()}static parse(D){if(D instanceof Fa)return D;if(Array.isArray(D)&&!(D.length<1)&&D.length%2==0){for(let Y=0;Y=0&&q<=255&&typeof D=="number"&&D>=0&&D<=255&&typeof Y=="number"&&Y>=0&&Y<=255?pe===void 0||typeof pe=="number"&&pe>=0&&pe<=1?null:`Invalid rgba value [${[q,D,Y,pe].join(", ")}]: 'a' must be between 0 and 1.`:`Invalid rgba value [${(typeof pe=="number"?[q,D,Y,pe]:[q,D,Y]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}function $a(q){if(q===null||typeof q=="string"||typeof q=="boolean"||typeof q=="number"||q instanceof Ut||q instanceof xr||q instanceof pa||q instanceof Xr||q instanceof Fa||q instanceof qa)return!0;if(Array.isArray(q)){for(let D of q)if(!$a(D))return!1;return!0}if(typeof q=="object"){for(let D in q)if(!$a(q[D]))return!1;return!0}return!1}function mt(q){if(q===null)return nt;if(typeof q=="string")return Ct;if(typeof q=="boolean")return St;if(typeof q=="number")return Qe;if(q instanceof Ut)return Ot;if(q instanceof xr)return ar;if(q instanceof pa)return Cr;if(q instanceof Xr)return vr;if(q instanceof Fa)return yt;if(q instanceof qa)return _r;if(Array.isArray(q)){let D=q.length,Y;for(let pe of q){let Ce=mt(pe);if(Y){if(Y===Ce)continue;Y=ur;break}Y=Ce}return Fe(Y||ur,D)}return jt}function gt(q){let D=typeof q;return q===null?"":D==="string"||D==="number"||D==="boolean"?String(q):q instanceof Ut||q instanceof pa||q instanceof Xr||q instanceof Fa||q instanceof qa?q.toString():JSON.stringify(q)}class Er{constructor(D,Y){this.type=D,this.value=Y}static parse(D,Y){if(D.length!==2)return Y.error(`'literal' expression requires exactly one argument, but found ${D.length-1} instead.`);if(!$a(D[1]))return Y.error("invalid value");let pe=D[1],Ce=mt(pe),Ue=Y.expectedType;return Ce.kind!=="array"||Ce.N!==0||!Ue||Ue.kind!=="array"||typeof Ue.N=="number"&&Ue.N!==0||(Ce=Ue),new Er(Ce,pe)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}}class kr{constructor(D){this.name="ExpressionEvaluationError",this.message=D}toJSON(){return this.message}}let br={string:Ct,number:Qe,boolean:St,object:jt};class Tr{constructor(D,Y){this.type=D,this.args=Y}static parse(D,Y){if(D.length<2)return Y.error("Expected at least one argument.");let pe,Ce=1,Ue=D[0];if(Ue==="array"){let ut,Tt;if(D.length>2){let Ft=D[1];if(typeof Ft!="string"||!(Ft in br)||Ft==="object")return Y.error('The item type argument of "array" must be one of string, number, boolean',1);ut=br[Ft],Ce++}else ut=ur;if(D.length>3){if(D[2]!==null&&(typeof D[2]!="number"||D[2]<0||D[2]!==Math.floor(D[2])))return Y.error('The length argument to "array" must be a positive integer literal',2);Tt=D[2],Ce++}pe=Fe(ut,Tt)}else{if(!br[Ue])throw new Error(`Types doesn't contain name = ${Ue}`);pe=br[Ue]}let Ge=[];for(;CeD.outputDefined())}}let Mr={"to-boolean":St,"to-color":Ot,"to-number":Qe,"to-string":Ct};class Fr{constructor(D,Y){this.type=D,this.args=Y}static parse(D,Y){if(D.length<2)return Y.error("Expected at least one argument.");let pe=D[0];if(!Mr[pe])throw new Error(`Can't parse ${pe} as it is not part of the known types`);if((pe==="to-boolean"||pe==="to-string")&&D.length!==2)return Y.error("Expected one argument.");let Ce=Mr[pe],Ue=[];for(let Ge=1;Ge4?`Invalid rbga value ${JSON.stringify(Y)}: expected an array containing either three or four numeric values.`:ya(Y[0],Y[1],Y[2],Y[3]),!pe))return new Ut(Y[0]/255,Y[1]/255,Y[2]/255,Y[3])}throw new kr(pe||`Could not parse color from value '${typeof Y=="string"?Y:JSON.stringify(Y)}'`)}case"padding":{let Y;for(let pe of this.args){Y=pe.evaluate(D);let Ce=Xr.parse(Y);if(Ce)return Ce}throw new kr(`Could not parse padding from value '${typeof Y=="string"?Y:JSON.stringify(Y)}'`)}case"variableAnchorOffsetCollection":{let Y;for(let pe of this.args){Y=pe.evaluate(D);let Ce=Fa.parse(Y);if(Ce)return Ce}throw new kr(`Could not parse variableAnchorOffsetCollection from value '${typeof Y=="string"?Y:JSON.stringify(Y)}'`)}case"number":{let Y=null;for(let pe of this.args){if(Y=pe.evaluate(D),Y===null)return 0;let Ce=Number(Y);if(!isNaN(Ce))return Ce}throw new kr(`Could not convert ${JSON.stringify(Y)} to number.`)}case"formatted":return pa.fromString(gt(this.args[0].evaluate(D)));case"resolvedImage":return qa.fromString(gt(this.args[0].evaluate(D)));default:return gt(this.args[0].evaluate(D))}}eachChild(D){this.args.forEach(D)}outputDefined(){return this.args.every(D=>D.outputDefined())}}let Lr=["Unknown","Point","LineString","Polygon"];class Jr{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null}id(){return this.feature&&"id"in this.feature?this.feature.id:null}geometryType(){return this.feature?typeof this.feature.type=="number"?Lr[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}parseColor(D){let Y=this._parseColorCache[D];return Y||(Y=this._parseColorCache[D]=Ut.parse(D)),Y}}class oa{constructor(D,Y,pe=[],Ce,Ue=new tt,Ge=[]){this.registry=D,this.path=pe,this.key=pe.map(ut=>`[${ut}]`).join(""),this.scope=Ue,this.errors=Ge,this.expectedType=Ce,this._isConstant=Y}parse(D,Y,pe,Ce,Ue={}){return Y?this.concat(Y,pe,Ce)._parse(D,Ue):this._parse(D,Ue)}_parse(D,Y){function pe(Ce,Ue,Ge){return Ge==="assert"?new Tr(Ue,[Ce]):Ge==="coerce"?new Fr(Ue,[Ce]):Ce}if(D!==null&&typeof D!="string"&&typeof D!="boolean"&&typeof D!="number"||(D=["literal",D]),Array.isArray(D)){if(D.length===0)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');let Ce=D[0];if(typeof Ce!="string")return this.error(`Expression name must be a string, but found ${typeof Ce} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;let Ue=this.registry[Ce];if(Ue){let Ge=Ue.parse(D,this);if(!Ge)return null;if(this.expectedType){let ut=this.expectedType,Tt=Ge.type;if(ut.kind!=="string"&&ut.kind!=="number"&&ut.kind!=="boolean"&&ut.kind!=="object"&&ut.kind!=="array"||Tt.kind!=="value")if(ut.kind!=="color"&&ut.kind!=="formatted"&&ut.kind!=="resolvedImage"||Tt.kind!=="value"&&Tt.kind!=="string")if(ut.kind!=="padding"||Tt.kind!=="value"&&Tt.kind!=="number"&&Tt.kind!=="array")if(ut.kind!=="variableAnchorOffsetCollection"||Tt.kind!=="value"&&Tt.kind!=="array"){if(this.checkSubtype(ut,Tt))return null}else Ge=pe(Ge,ut,Y.typeAnnotation||"coerce");else Ge=pe(Ge,ut,Y.typeAnnotation||"coerce");else Ge=pe(Ge,ut,Y.typeAnnotation||"coerce");else Ge=pe(Ge,ut,Y.typeAnnotation||"assert")}if(!(Ge instanceof Er)&&Ge.type.kind!=="resolvedImage"&&this._isConstant(Ge)){let ut=new Jr;try{Ge=new Er(Ge.type,Ge.evaluate(ut))}catch(Tt){return this.error(Tt.message),null}}return Ge}return this.error(`Unknown expression "${Ce}". If you wanted a literal array, use ["literal", [...]].`,0)}return this.error(D===void 0?"'undefined' value invalid. Use null instead.":typeof D=="object"?'Bare objects invalid. Use ["literal", {...}] instead.':`Expected an array, but found ${typeof D} instead.`)}concat(D,Y,pe){let Ce=typeof D=="number"?this.path.concat(D):this.path,Ue=pe?this.scope.concat(pe):this.scope;return new oa(this.registry,this._isConstant,Ce,Y||null,Ue,this.errors)}error(D,...Y){let pe=`${this.key}${Y.map(Ce=>`[${Ce}]`).join("")}`;this.errors.push(new ze(pe,D))}checkSubtype(D,Y){let pe=Ee(D,Y);return pe&&this.error(pe),pe}}class ca{constructor(D,Y){this.type=Y.type,this.bindings=[].concat(D),this.result=Y}evaluate(D){return this.result.evaluate(D)}eachChild(D){for(let Y of this.bindings)D(Y[1]);D(this.result)}static parse(D,Y){if(D.length<4)return Y.error(`Expected at least 3 arguments, but found ${D.length-1} instead.`);let pe=[];for(let Ue=1;Ue=pe.length)throw new kr(`Array index out of bounds: ${Y} > ${pe.length-1}.`);if(Y!==Math.floor(Y))throw new kr(`Array index must be an integer, but found ${Y} instead.`);return pe[Y]}eachChild(D){D(this.index),D(this.input)}outputDefined(){return!1}}class mr{constructor(D,Y){this.type=St,this.needle=D,this.haystack=Y}static parse(D,Y){if(D.length!==3)return Y.error(`Expected 2 arguments, but found ${D.length-1} instead.`);let pe=Y.parse(D[1],1,ur),Ce=Y.parse(D[2],2,ur);return pe&&Ce?Ve(pe.type,[St,Ct,Qe,nt,ur])?new mr(pe,Ce):Y.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ke(pe.type)} instead`):null}evaluate(D){let Y=this.needle.evaluate(D),pe=this.haystack.evaluate(D);if(!pe)return!1;if(!ke(Y,["boolean","string","number","null"]))throw new kr(`Expected first argument to be of type boolean, string, number or null, but found ${Ke(mt(Y))} instead.`);if(!ke(pe,["string","array"]))throw new kr(`Expected second argument to be of type array or string, but found ${Ke(mt(pe))} instead.`);return pe.indexOf(Y)>=0}eachChild(D){D(this.needle),D(this.haystack)}outputDefined(){return!0}}class $r{constructor(D,Y,pe){this.type=Qe,this.needle=D,this.haystack=Y,this.fromIndex=pe}static parse(D,Y){if(D.length<=2||D.length>=5)return Y.error(`Expected 3 or 4 arguments, but found ${D.length-1} instead.`);let pe=Y.parse(D[1],1,ur),Ce=Y.parse(D[2],2,ur);if(!pe||!Ce)return null;if(!Ve(pe.type,[St,Ct,Qe,nt,ur]))return Y.error(`Expected first argument to be of type boolean, string, number or null, but found ${Ke(pe.type)} instead`);if(D.length===4){let Ue=Y.parse(D[3],3,Qe);return Ue?new $r(pe,Ce,Ue):null}return new $r(pe,Ce)}evaluate(D){let Y=this.needle.evaluate(D),pe=this.haystack.evaluate(D);if(!ke(Y,["boolean","string","number","null"]))throw new kr(`Expected first argument to be of type boolean, string, number or null, but found ${Ke(mt(Y))} instead.`);let Ce;if(this.fromIndex&&(Ce=this.fromIndex.evaluate(D)),ke(pe,["string"])){let Ue=pe.indexOf(Y,Ce);return Ue===-1?-1:[...pe.slice(0,Ue)].length}if(ke(pe,["array"]))return pe.indexOf(Y,Ce);throw new kr(`Expected second argument to be of type array or string, but found ${Ke(mt(pe))} instead.`)}eachChild(D){D(this.needle),D(this.haystack),this.fromIndex&&D(this.fromIndex)}outputDefined(){return!1}}class ma{constructor(D,Y,pe,Ce,Ue,Ge){this.inputType=D,this.type=Y,this.input=pe,this.cases=Ce,this.outputs=Ue,this.otherwise=Ge}static parse(D,Y){if(D.length<5)return Y.error(`Expected at least 4 arguments, but found only ${D.length-1}.`);if(D.length%2!=1)return Y.error("Expected an even number of arguments.");let pe,Ce;Y.expectedType&&Y.expectedType.kind!=="value"&&(Ce=Y.expectedType);let Ue={},Ge=[];for(let Ft=2;FtNumber.MAX_SAFE_INTEGER)return Ar.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if(typeof Kr=="number"&&Math.floor(Kr)!==Kr)return Ar.error("Numeric branch labels must be integer values.");if(pe){if(Ar.checkSubtype(pe,mt(Kr)))return null}else pe=mt(Kr);if(Ue[String(Kr)]!==void 0)return Ar.error("Branch labels must be unique.");Ue[String(Kr)]=Ge.length}let zr=Y.parse(lr,Ft,Ce);if(!zr)return null;Ce=Ce||zr.type,Ge.push(zr)}let ut=Y.parse(D[1],1,ur);if(!ut)return null;let Tt=Y.parse(D[D.length-1],D.length-1,Ce);return Tt?ut.type.kind!=="value"&&Y.concat(1).checkSubtype(pe,ut.type)?null:new ma(pe,Ce,ut,Ue,Ge,Tt):null}evaluate(D){let Y=this.input.evaluate(D);return(mt(Y)===this.inputType&&this.outputs[this.cases[Y]]||this.otherwise).evaluate(D)}eachChild(D){D(this.input),this.outputs.forEach(D),D(this.otherwise)}outputDefined(){return this.outputs.every(D=>D.outputDefined())&&this.otherwise.outputDefined()}}class Ba{constructor(D,Y,pe){this.type=D,this.branches=Y,this.otherwise=pe}static parse(D,Y){if(D.length<4)return Y.error(`Expected at least 3 arguments, but found only ${D.length-1}.`);if(D.length%2!=0)return Y.error("Expected an odd number of arguments.");let pe;Y.expectedType&&Y.expectedType.kind!=="value"&&(pe=Y.expectedType);let Ce=[];for(let Ge=1;GeY.outputDefined())&&this.otherwise.outputDefined()}}class Ca{constructor(D,Y,pe,Ce){this.type=D,this.input=Y,this.beginIndex=pe,this.endIndex=Ce}static parse(D,Y){if(D.length<=2||D.length>=5)return Y.error(`Expected 3 or 4 arguments, but found ${D.length-1} instead.`);let pe=Y.parse(D[1],1,ur),Ce=Y.parse(D[2],2,Qe);if(!pe||!Ce)return null;if(!Ve(pe.type,[Fe(ur),Ct,ur]))return Y.error(`Expected first argument to be of type array or string, but found ${Ke(pe.type)} instead`);if(D.length===4){let Ue=Y.parse(D[3],3,Qe);return Ue?new Ca(pe.type,pe,Ce,Ue):null}return new Ca(pe.type,pe,Ce)}evaluate(D){let Y=this.input.evaluate(D),pe=this.beginIndex.evaluate(D),Ce;if(this.endIndex&&(Ce=this.endIndex.evaluate(D)),ke(Y,["string"]))return[...Y].slice(pe,Ce).join("");if(ke(Y,["array"]))return Y.slice(pe,Ce);throw new kr(`Expected first argument to be of type array or string, but found ${Ke(mt(Y))} instead.`)}eachChild(D){D(this.input),D(this.beginIndex),this.endIndex&&D(this.endIndex)}outputDefined(){return!1}}function da(q,D){let Y=q.length-1,pe,Ce,Ue=0,Ge=Y,ut=0;for(;Ue<=Ge;)if(ut=Math.floor((Ue+Ge)/2),pe=q[ut],Ce=q[ut+1],pe<=D){if(ut===Y||DD))throw new kr("Input is not a number.");Ge=ut-1}return 0}class Sa{constructor(D,Y,pe){this.type=D,this.input=Y,this.labels=[],this.outputs=[];for(let[Ce,Ue]of pe)this.labels.push(Ce),this.outputs.push(Ue)}static parse(D,Y){if(D.length-1<4)return Y.error(`Expected at least 4 arguments, but found only ${D.length-1}.`);if((D.length-1)%2!=0)return Y.error("Expected an even number of arguments.");let pe=Y.parse(D[1],1,Qe);if(!pe)return null;let Ce=[],Ue=null;Y.expectedType&&Y.expectedType.kind!=="value"&&(Ue=Y.expectedType);for(let Ge=1;Ge=ut)return Y.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',Ft);let lr=Y.parse(Tt,$t,Ue);if(!lr)return null;Ue=Ue||lr.type,Ce.push([ut,lr])}return new Sa(Ue,pe,Ce)}evaluate(D){let Y=this.labels,pe=this.outputs;if(Y.length===1)return pe[0].evaluate(D);let Ce=this.input.evaluate(D);if(Ce<=Y[0])return pe[0].evaluate(D);let Ue=Y.length;return Ce>=Y[Ue-1]?pe[Ue-1].evaluate(D):pe[da(Y,Ce)].evaluate(D)}eachChild(D){D(this.input);for(let Y of this.outputs)D(Y)}outputDefined(){return this.outputs.every(D=>D.outputDefined())}}function Ti(q){return q&&q.__esModule&&Object.prototype.hasOwnProperty.call(q,"default")?q.default:q}var ai=an;function an(q,D,Y,pe){this.cx=3*q,this.bx=3*(Y-q)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*D,this.by=3*(pe-D)-this.cy,this.ay=1-this.cy-this.by,this.p1x=q,this.p1y=D,this.p2x=Y,this.p2y=pe}an.prototype={sampleCurveX:function(q){return((this.ax*q+this.bx)*q+this.cx)*q},sampleCurveY:function(q){return((this.ay*q+this.by)*q+this.cy)*q},sampleCurveDerivativeX:function(q){return(3*this.ax*q+2*this.bx)*q+this.cx},solveCurveX:function(q,D){if(D===void 0&&(D=1e-6),q<0)return 0;if(q>1)return 1;for(var Y=q,pe=0;pe<8;pe++){var Ce=this.sampleCurveX(Y)-q;if(Math.abs(Ce)Ce?Ge=Y:ut=Y,Y=.5*(ut-Ge)+Ge;return Y},solve:function(q,D){return this.sampleCurveY(this.solveCurveX(q,D))}};var sn=Ti(ai);function Mn(q,D,Y){return q+Y*(D-q)}function On(q,D,Y){return q.map((pe,Ce)=>Mn(pe,D[Ce],Y))}let $n={number:Mn,color:function(q,D,Y,pe="rgb"){switch(pe){case"rgb":{let[Ce,Ue,Ge,ut]=On(q.rgb,D.rgb,Y);return new Ut(Ce,Ue,Ge,ut,!1)}case"hcl":{let[Ce,Ue,Ge,ut]=q.hcl,[Tt,Ft,$t,lr]=D.hcl,Ar,zr;if(isNaN(Ce)||isNaN(Tt))isNaN(Ce)?isNaN(Tt)?Ar=NaN:(Ar=Tt,Ge!==1&&Ge!==0||(zr=Ft)):(Ar=Ce,$t!==1&&$t!==0||(zr=Ue));else{let gi=Tt-Ce;Tt>Ce&&gi>180?gi-=360:Tt180&&(gi+=360),Ar=Ce+Y*gi}let[Kr,la,za,ja]=function([gi,ei,hi,Ei]){return gi=isNaN(gi)?0:gi*Gt,ka([hi,Math.cos(gi)*ei,Math.sin(gi)*ei,Ei])}([Ar,zr??Mn(Ue,Ft,Y),Mn(Ge,$t,Y),Mn(ut,lr,Y)]);return new Ut(Kr,la,za,ja,!1)}case"lab":{let[Ce,Ue,Ge,ut]=ka(On(q.lab,D.lab,Y));return new Ut(Ce,Ue,Ge,ut,!1)}}},array:On,padding:function(q,D,Y){return new Xr(On(q.values,D.values,Y))},variableAnchorOffsetCollection:function(q,D,Y){let pe=q.values,Ce=D.values;if(pe.length!==Ce.length)throw new kr(`Cannot interpolate values of different length. from: ${q.toString()}, to: ${D.toString()}`);let Ue=[];for(let Ge=0;Getypeof $t!="number"||$t<0||$t>1))return Y.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);Ce={name:"cubic-bezier",controlPoints:Ft}}}if(D.length-1<4)return Y.error(`Expected at least 4 arguments, but found only ${D.length-1}.`);if((D.length-1)%2!=0)return Y.error("Expected an even number of arguments.");if(Ue=Y.parse(Ue,2,Qe),!Ue)return null;let ut=[],Tt=null;pe==="interpolate-hcl"||pe==="interpolate-lab"?Tt=Ot:Y.expectedType&&Y.expectedType.kind!=="value"&&(Tt=Y.expectedType);for(let Ft=0;Ft=$t)return Y.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',Ar);let Kr=Y.parse(lr,zr,Tt);if(!Kr)return null;Tt=Tt||Kr.type,ut.push([$t,Kr])}return Te(Tt,Qe)||Te(Tt,Ot)||Te(Tt,vr)||Te(Tt,yt)||Te(Tt,Fe(Qe))?new Cn(Tt,pe,Ce,Ue,ut):Y.error(`Type ${Ke(Tt)} is not interpolatable.`)}evaluate(D){let Y=this.labels,pe=this.outputs;if(Y.length===1)return pe[0].evaluate(D);let Ce=this.input.evaluate(D);if(Ce<=Y[0])return pe[0].evaluate(D);let Ue=Y.length;if(Ce>=Y[Ue-1])return pe[Ue-1].evaluate(D);let Ge=da(Y,Ce),ut=Cn.interpolationFactor(this.interpolation,Ce,Y[Ge],Y[Ge+1]),Tt=pe[Ge].evaluate(D),Ft=pe[Ge+1].evaluate(D);switch(this.operator){case"interpolate":return $n[this.type.kind](Tt,Ft,ut);case"interpolate-hcl":return $n.color(Tt,Ft,ut,"hcl");case"interpolate-lab":return $n.color(Tt,Ft,ut,"lab")}}eachChild(D){D(this.input);for(let Y of this.outputs)D(Y)}outputDefined(){return this.outputs.every(D=>D.outputDefined())}}function Lo(q,D,Y,pe){let Ce=pe-Y,Ue=q-Y;return Ce===0?0:D===1?Ue/Ce:(Math.pow(D,Ue)-1)/(Math.pow(D,Ce)-1)}class Xi{constructor(D,Y){this.type=D,this.args=Y}static parse(D,Y){if(D.length<2)return Y.error("Expectected at least one argument.");let pe=null,Ce=Y.expectedType;Ce&&Ce.kind!=="value"&&(pe=Ce);let Ue=[];for(let ut of D.slice(1)){let Tt=Y.parse(ut,1+Ue.length,pe,void 0,{typeAnnotation:"omit"});if(!Tt)return null;pe=pe||Tt.type,Ue.push(Tt)}if(!pe)throw new Error("No output type");let Ge=Ce&&Ue.some(ut=>Ee(Ce,ut.type));return new Xi(Ge?ur:pe,Ue)}evaluate(D){let Y,pe=null,Ce=0;for(let Ue of this.args)if(Ce++,pe=Ue.evaluate(D),pe&&pe instanceof qa&&!pe.available&&(Y||(Y=pe.name),pe=null,Ce===this.args.length&&(pe=Y)),pe!==null)break;return pe}eachChild(D){this.args.forEach(D)}outputDefined(){return this.args.every(D=>D.outputDefined())}}function Jo(q,D){return q==="=="||q==="!="?D.kind==="boolean"||D.kind==="string"||D.kind==="number"||D.kind==="null"||D.kind==="value":D.kind==="string"||D.kind==="number"||D.kind==="value"}function zo(q,D,Y,pe){return pe.compare(D,Y)===0}function as(q,D,Y){let pe=q!=="=="&&q!=="!=";return class K8{constructor(Ue,Ge,ut){this.type=St,this.lhs=Ue,this.rhs=Ge,this.collator=ut,this.hasUntypedArgument=Ue.type.kind==="value"||Ge.type.kind==="value"}static parse(Ue,Ge){if(Ue.length!==3&&Ue.length!==4)return Ge.error("Expected two or three arguments.");let ut=Ue[0],Tt=Ge.parse(Ue[1],1,ur);if(!Tt)return null;if(!Jo(ut,Tt.type))return Ge.concat(1).error(`"${ut}" comparisons are not supported for type '${Ke(Tt.type)}'.`);let Ft=Ge.parse(Ue[2],2,ur);if(!Ft)return null;if(!Jo(ut,Ft.type))return Ge.concat(2).error(`"${ut}" comparisons are not supported for type '${Ke(Ft.type)}'.`);if(Tt.type.kind!==Ft.type.kind&&Tt.type.kind!=="value"&&Ft.type.kind!=="value")return Ge.error(`Cannot compare types '${Ke(Tt.type)}' and '${Ke(Ft.type)}'.`);pe&&(Tt.type.kind==="value"&&Ft.type.kind!=="value"?Tt=new Tr(Ft.type,[Tt]):Tt.type.kind!=="value"&&Ft.type.kind==="value"&&(Ft=new Tr(Tt.type,[Ft])));let $t=null;if(Ue.length===4){if(Tt.type.kind!=="string"&&Ft.type.kind!=="string"&&Tt.type.kind!=="value"&&Ft.type.kind!=="value")return Ge.error("Cannot use collator to compare non-string types.");if($t=Ge.parse(Ue[3],3,ar),!$t)return null}return new K8(Tt,Ft,$t)}evaluate(Ue){let Ge=this.lhs.evaluate(Ue),ut=this.rhs.evaluate(Ue);if(pe&&this.hasUntypedArgument){let Tt=mt(Ge),Ft=mt(ut);if(Tt.kind!==Ft.kind||Tt.kind!=="string"&&Tt.kind!=="number")throw new kr(`Expected arguments for "${q}" to be (string, string) or (number, number), but found (${Tt.kind}, ${Ft.kind}) instead.`)}if(this.collator&&!pe&&this.hasUntypedArgument){let Tt=mt(Ge),Ft=mt(ut);if(Tt.kind!=="string"||Ft.kind!=="string")return D(Ue,Ge,ut)}return this.collator?Y(Ue,Ge,ut,this.collator.evaluate(Ue)):D(Ue,Ge,ut)}eachChild(Ue){Ue(this.lhs),Ue(this.rhs),this.collator&&Ue(this.collator)}outputDefined(){return!0}}}let Pn=as("==",function(q,D,Y){return D===Y},zo),go=as("!=",function(q,D,Y){return D!==Y},function(q,D,Y,pe){return!zo(0,D,Y,pe)}),In=as("<",function(q,D,Y){return D",function(q,D,Y){return D>Y},function(q,D,Y,pe){return pe.compare(D,Y)>0}),Ho=as("<=",function(q,D,Y){return D<=Y},function(q,D,Y,pe){return pe.compare(D,Y)<=0}),Qo=as(">=",function(q,D,Y){return D>=Y},function(q,D,Y,pe){return pe.compare(D,Y)>=0});class Xn{constructor(D,Y,pe){this.type=ar,this.locale=pe,this.caseSensitive=D,this.diacriticSensitive=Y}static parse(D,Y){if(D.length!==2)return Y.error("Expected one argument.");let pe=D[1];if(typeof pe!="object"||Array.isArray(pe))return Y.error("Collator options argument must be an object.");let Ce=Y.parse(pe["case-sensitive"]!==void 0&&pe["case-sensitive"],1,St);if(!Ce)return null;let Ue=Y.parse(pe["diacritic-sensitive"]!==void 0&&pe["diacritic-sensitive"],1,St);if(!Ue)return null;let Ge=null;return pe.locale&&(Ge=Y.parse(pe.locale,1,Ct),!Ge)?null:new Xn(Ce,Ue,Ge)}evaluate(D){return new xr(this.caseSensitive.evaluate(D),this.diacriticSensitive.evaluate(D),this.locale?this.locale.evaluate(D):null)}eachChild(D){D(this.caseSensitive),D(this.diacriticSensitive),this.locale&&D(this.locale)}outputDefined(){return!1}}class po{constructor(D,Y,pe,Ce,Ue){this.type=Ct,this.number=D,this.locale=Y,this.currency=pe,this.minFractionDigits=Ce,this.maxFractionDigits=Ue}static parse(D,Y){if(D.length!==3)return Y.error("Expected two arguments.");let pe=Y.parse(D[1],1,Qe);if(!pe)return null;let Ce=D[2];if(typeof Ce!="object"||Array.isArray(Ce))return Y.error("NumberFormat options argument must be an object.");let Ue=null;if(Ce.locale&&(Ue=Y.parse(Ce.locale,1,Ct),!Ue))return null;let Ge=null;if(Ce.currency&&(Ge=Y.parse(Ce.currency,1,Ct),!Ge))return null;let ut=null;if(Ce["min-fraction-digits"]&&(ut=Y.parse(Ce["min-fraction-digits"],1,Qe),!ut))return null;let Tt=null;return Ce["max-fraction-digits"]&&(Tt=Y.parse(Ce["max-fraction-digits"],1,Qe),!Tt)?null:new po(pe,Ue,Ge,ut,Tt)}evaluate(D){return new Intl.NumberFormat(this.locale?this.locale.evaluate(D):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(D):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(D):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(D):void 0}).format(this.number.evaluate(D))}eachChild(D){D(this.number),this.locale&&D(this.locale),this.currency&&D(this.currency),this.minFractionDigits&&D(this.minFractionDigits),this.maxFractionDigits&&D(this.maxFractionDigits)}outputDefined(){return!1}}class ys{constructor(D){this.type=Cr,this.sections=D}static parse(D,Y){if(D.length<2)return Y.error("Expected at least one argument.");let pe=D[1];if(!Array.isArray(pe)&&typeof pe=="object")return Y.error("First argument must be an image or text section.");let Ce=[],Ue=!1;for(let Ge=1;Ge<=D.length-1;++Ge){let ut=D[Ge];if(Ue&&typeof ut=="object"&&!Array.isArray(ut)){Ue=!1;let Tt=null;if(ut["font-scale"]&&(Tt=Y.parse(ut["font-scale"],1,Qe),!Tt))return null;let Ft=null;if(ut["text-font"]&&(Ft=Y.parse(ut["text-font"],1,Fe(Ct)),!Ft))return null;let $t=null;if(ut["text-color"]&&($t=Y.parse(ut["text-color"],1,Ot),!$t))return null;let lr=Ce[Ce.length-1];lr.scale=Tt,lr.font=Ft,lr.textColor=$t}else{let Tt=Y.parse(D[Ge],1,ur);if(!Tt)return null;let Ft=Tt.type.kind;if(Ft!=="string"&&Ft!=="value"&&Ft!=="null"&&Ft!=="resolvedImage")return Y.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");Ue=!0,Ce.push({content:Tt,scale:null,font:null,textColor:null})}}return new ys(Ce)}evaluate(D){return new pa(this.sections.map(Y=>{let pe=Y.content.evaluate(D);return mt(pe)===_r?new Zr("",pe,null,null,null):new Zr(gt(pe),null,Y.scale?Y.scale.evaluate(D):null,Y.font?Y.font.evaluate(D).join(","):null,Y.textColor?Y.textColor.evaluate(D):null)}))}eachChild(D){for(let Y of this.sections)D(Y.content),Y.scale&&D(Y.scale),Y.font&&D(Y.font),Y.textColor&&D(Y.textColor)}outputDefined(){return!1}}class Is{constructor(D){this.type=_r,this.input=D}static parse(D,Y){if(D.length!==2)return Y.error("Expected two arguments.");let pe=Y.parse(D[1],1,Ct);return pe?new Is(pe):Y.error("No image name provided.")}evaluate(D){let Y=this.input.evaluate(D),pe=qa.fromString(Y);return pe&&D.availableImages&&(pe.available=D.availableImages.indexOf(Y)>-1),pe}eachChild(D){D(this.input)}outputDefined(){return!1}}class Fs{constructor(D){this.type=Qe,this.input=D}static parse(D,Y){if(D.length!==2)return Y.error(`Expected 1 argument, but found ${D.length-1} instead.`);let pe=Y.parse(D[1],1);return pe?pe.type.kind!=="array"&&pe.type.kind!=="string"&&pe.type.kind!=="value"?Y.error(`Expected argument of type string or array, but found ${Ke(pe.type)} instead.`):new Fs(pe):null}evaluate(D){let Y=this.input.evaluate(D);if(typeof Y=="string")return[...Y].length;if(Array.isArray(Y))return Y.length;throw new kr(`Expected value to be of type string or array, but found ${Ke(mt(Y))} instead.`)}eachChild(D){D(this.input)}outputDefined(){return!1}}let $o=8192;function fi(q,D){let Y=(180+q[0])/360,pe=(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+q[1]*Math.PI/360)))/360,Ce=Math.pow(2,D.z);return[Math.round(Y*Ce*$o),Math.round(pe*Ce*$o)]}function mn(q,D){let Y=Math.pow(2,D.z);return[(Ce=(q[0]/$o+D.x)/Y,360*Ce-180),(pe=(q[1]/$o+D.y)/Y,360/Math.PI*Math.atan(Math.exp((180-360*pe)*Math.PI/180))-90)];var pe,Ce}function ol(q,D){q[0]=Math.min(q[0],D[0]),q[1]=Math.min(q[1],D[1]),q[2]=Math.max(q[2],D[0]),q[3]=Math.max(q[3],D[1])}function Os(q,D){return!(q[0]<=D[0]||q[2]>=D[2]||q[1]<=D[1]||q[3]>=D[3])}function so(q,D,Y){let pe=q[0]-D[0],Ce=q[1]-D[1],Ue=q[0]-Y[0],Ge=q[1]-Y[1];return pe*Ge-Ue*Ce==0&&pe*Ue<=0&&Ce*Ge<=0}function Ns(q,D,Y,pe){return(Ce=[pe[0]-Y[0],pe[1]-Y[1]])[0]*(Ue=[D[0]-q[0],D[1]-q[1]])[1]-Ce[1]*Ue[0]!=0&&!(!Yn(q,D,Y,pe)||!Yn(Y,pe,q,D));var Ce,Ue}function fs(q,D,Y){for(let pe of Y)for(let Ce=0;Ce(Ce=q)[1]!=(Ge=ut[Tt+1])[1]>Ce[1]&&Ce[0]<(Ge[0]-Ue[0])*(Ce[1]-Ue[1])/(Ge[1]-Ue[1])+Ue[0]&&(pe=!pe)}var Ce,Ue,Ge;return pe}function vl(q,D){for(let Y of D)if(al(q,Y))return!0;return!1}function ji(q,D){for(let Y of q)if(!al(Y,D))return!1;for(let Y=0;Y0&&ut<0||Ge<0&&ut>0}function _s(q,D,Y){let pe=[];for(let Ce=0;CeY[2]){let Ce=.5*pe,Ue=q[0]-Y[0]>Ce?-pe:Y[0]-q[0]>Ce?pe:0;Ue===0&&(Ue=q[0]-Y[2]>Ce?-pe:Y[2]-q[0]>Ce?pe:0),q[0]+=Ue}ol(D,q)}function Wl(q,D,Y,pe){let Ce=Math.pow(2,pe.z)*$o,Ue=[pe.x*$o,pe.y*$o],Ge=[];for(let ut of q)for(let Tt of ut){let Ft=[Tt.x+Ue[0],Tt.y+Ue[1]];Nn(Ft,D,Y,Ce),Ge.push(Ft)}return Ge}function Zu(q,D,Y,pe){let Ce=Math.pow(2,pe.z)*$o,Ue=[pe.x*$o,pe.y*$o],Ge=[];for(let Tt of q){let Ft=[];for(let $t of Tt){let lr=[$t.x+Ue[0],$t.y+Ue[1]];ol(D,lr),Ft.push(lr)}Ge.push(Ft)}if(D[2]-D[0]<=Ce/2){(ut=D)[0]=ut[1]=1/0,ut[2]=ut[3]=-1/0;for(let Tt of Ge)for(let Ft of Tt)Nn(Ft,D,Y,Ce)}var ut;return Ge}class ml{constructor(D,Y){this.type=St,this.geojson=D,this.geometries=Y}static parse(D,Y){if(D.length!==2)return Y.error(`'within' expression requires exactly one argument, but found ${D.length-1} instead.`);if($a(D[1])){let pe=D[1];if(pe.type==="FeatureCollection"){let Ce=[];for(let Ue of pe.features){let{type:Ge,coordinates:ut}=Ue.geometry;Ge==="Polygon"&&Ce.push(ut),Ge==="MultiPolygon"&&Ce.push(...ut)}if(Ce.length)return new ml(pe,{type:"MultiPolygon",coordinates:Ce})}else if(pe.type==="Feature"){let Ce=pe.geometry.type;if(Ce==="Polygon"||Ce==="MultiPolygon")return new ml(pe,pe.geometry)}else if(pe.type==="Polygon"||pe.type==="MultiPolygon")return new ml(pe,pe)}return Y.error("'within' expression requires valid geojson object that contains polygon geometry type.")}evaluate(D){if(D.geometry()!=null&&D.canonicalID()!=null){if(D.geometryType()==="Point")return function(Y,pe){let Ce=[1/0,1/0,-1/0,-1/0],Ue=[1/0,1/0,-1/0,-1/0],Ge=Y.canonicalID();if(pe.type==="Polygon"){let ut=_s(pe.coordinates,Ue,Ge),Tt=Wl(Y.geometry(),Ce,Ue,Ge);if(!Os(Ce,Ue))return!1;for(let Ft of Tt)if(!al(Ft,ut))return!1}if(pe.type==="MultiPolygon"){let ut=Yo(pe.coordinates,Ue,Ge),Tt=Wl(Y.geometry(),Ce,Ue,Ge);if(!Os(Ce,Ue))return!1;for(let Ft of Tt)if(!vl(Ft,ut))return!1}return!0}(D,this.geometries);if(D.geometryType()==="LineString")return function(Y,pe){let Ce=[1/0,1/0,-1/0,-1/0],Ue=[1/0,1/0,-1/0,-1/0],Ge=Y.canonicalID();if(pe.type==="Polygon"){let ut=_s(pe.coordinates,Ue,Ge),Tt=Zu(Y.geometry(),Ce,Ue,Ge);if(!Os(Ce,Ue))return!1;for(let Ft of Tt)if(!ji(Ft,ut))return!1}if(pe.type==="MultiPolygon"){let ut=Yo(pe.coordinates,Ue,Ge),Tt=Zu(Y.geometry(),Ce,Ue,Ge);if(!Os(Ce,Ue))return!1;for(let Ft of Tt)if(!To(Ft,ut))return!1}return!0}(D,this.geometries)}return!1}eachChild(){}outputDefined(){return!0}}let Bu=class{constructor(q=[],D=(Y,pe)=>Ype?1:0){if(this.data=q,this.length=this.data.length,this.compare=D,this.length>0)for(let Y=(this.length>>1)-1;Y>=0;Y--)this._down(Y)}push(q){this.data.push(q),this._up(this.length++)}pop(){if(this.length===0)return;let q=this.data[0],D=this.data.pop();return--this.length>0&&(this.data[0]=D,this._down(0)),q}peek(){return this.data[0]}_up(q){let{data:D,compare:Y}=this,pe=D[q];for(;q>0;){let Ce=q-1>>1,Ue=D[Ce];if(Y(pe,Ue)>=0)break;D[q]=Ue,q=Ce}D[q]=pe}_down(q){let{data:D,compare:Y}=this,pe=this.length>>1,Ce=D[q];for(;q=0)break;D[q]=D[Ue],q=Ue}D[q]=Ce}};function El(q,D,Y,pe,Ce){qs(q,D,Y,pe||q.length-1,Ce||Nu)}function qs(q,D,Y,pe,Ce){for(;pe>Y;){if(pe-Y>600){var Ue=pe-Y+1,Ge=D-Y+1,ut=Math.log(Ue),Tt=.5*Math.exp(2*ut/3),Ft=.5*Math.sqrt(ut*Tt*(Ue-Tt)/Ue)*(Ge-Ue/2<0?-1:1);qs(q,D,Math.max(Y,Math.floor(D-Ge*Tt/Ue+Ft)),Math.min(pe,Math.floor(D+(Ue-Ge)*Tt/Ue+Ft)),Ce)}var $t=q[D],lr=Y,Ar=pe;for(Jl(q,Y,D),Ce(q[pe],$t)>0&&Jl(q,Y,pe);lr0;)Ar--}Ce(q[Y],$t)===0?Jl(q,Y,Ar):Jl(q,++Ar,pe),Ar<=D&&(Y=Ar+1),D<=Ar&&(pe=Ar-1)}}function Jl(q,D,Y){var pe=q[D];q[D]=q[Y],q[Y]=pe}function Nu(q,D){return qD?1:0}function Ic(q,D){if(q.length<=1)return[q];let Y=[],pe,Ce;for(let Ue of q){let Ge=Th(Ue);Ge!==0&&(Ue.area=Math.abs(Ge),Ce===void 0&&(Ce=Ge<0),Ce===Ge<0?(pe&&Y.push(pe),pe=[Ue]):pe.push(Ue))}if(pe&&Y.push(pe),D>1)for(let Ue=0;Ue1?(Ft=D[Tt+1][0],$t=D[Tt+1][1]):zr>0&&(Ft+=lr/this.kx*zr,$t+=Ar/this.ky*zr)),lr=this.wrap(Y[0]-Ft)*this.kx,Ar=(Y[1]-$t)*this.ky;let Kr=lr*lr+Ar*Ar;Kr180;)D-=360;return D}}function Zl(q,D){return D[0]-q[0]}function yl(q){return q[1]-q[0]+1}function oc(q,D){return q[1]>=q[0]&&q[1]q[1])return[null,null];let Y=yl(q);if(D){if(Y===2)return[q,null];let Ce=Math.floor(Y/2);return[[q[0],q[0]+Ce],[q[0]+Ce,q[1]]]}if(Y===1)return[q,null];let pe=Math.floor(Y/2)-1;return[[q[0],q[0]+pe],[q[0]+pe+1,q[1]]]}function Zs(q,D){if(!oc(D,q.length))return[1/0,1/0,-1/0,-1/0];let Y=[1/0,1/0,-1/0,-1/0];for(let pe=D[0];pe<=D[1];++pe)ol(Y,q[pe]);return Y}function _l(q){let D=[1/0,1/0,-1/0,-1/0];for(let Y of q)for(let pe of Y)ol(D,pe);return D}function Bs(q){return q[0]!==-1/0&&q[1]!==-1/0&&q[2]!==1/0&&q[3]!==1/0}function $s(q,D,Y){if(!Bs(q)||!Bs(D))return NaN;let pe=0,Ce=0;return q[2]D[2]&&(pe=q[0]-D[2]),q[1]>D[3]&&(Ce=q[1]-D[3]),q[3]=pe)return pe;if(Os(Ce,Ue)){if(Wh(q,D))return 0}else if(Wh(D,q))return 0;let Ge=1/0;for(let ut of q)for(let Tt=0,Ft=ut.length,$t=Ft-1;Tt0;){let Tt=Ge.pop();if(Tt[0]>=Ue)continue;let Ft=Tt[1],$t=D?50:100;if(yl(Ft)<=$t){if(!oc(Ft,q.length))return NaN;if(D){let lr=es(q,Ft,Y,pe);if(isNaN(lr)||lr===0)return lr;Ue=Math.min(Ue,lr)}else for(let lr=Ft[0];lr<=Ft[1];++lr){let Ar=fp(q[lr],Y,pe);if(Ue=Math.min(Ue,Ar),Ue===0)return 0}}else{let lr=_c(Ft,D);So(Ge,Ue,pe,q,ut,lr[0]),So(Ge,Ue,pe,q,ut,lr[1])}}return Ue}function cu(q,D,Y,pe,Ce,Ue=1/0){let Ge=Math.min(Ue,Ce.distance(q[0],Y[0]));if(Ge===0)return Ge;let ut=new Bu([[0,[0,q.length-1],[0,Y.length-1]]],Zl);for(;ut.length>0;){let Tt=ut.pop();if(Tt[0]>=Ge)continue;let Ft=Tt[1],$t=Tt[2],lr=D?50:100,Ar=pe?50:100;if(yl(Ft)<=lr&&yl($t)<=Ar){if(!oc(Ft,q.length)&&oc($t,Y.length))return NaN;let zr;if(D&&pe)zr=Yu(q,Ft,Y,$t,Ce),Ge=Math.min(Ge,zr);else if(D&&!pe){let Kr=q.slice(Ft[0],Ft[1]+1);for(let la=$t[0];la<=$t[1];++la)if(zr=sc(Y[la],Kr,Ce),Ge=Math.min(Ge,zr),Ge===0)return Ge}else if(!D&&pe){let Kr=Y.slice($t[0],$t[1]+1);for(let la=Ft[0];la<=Ft[1];++la)if(zr=sc(q[la],Kr,Ce),Ge=Math.min(Ge,zr),Ge===0)return Ge}else zr=Qs(q,Ft,Y,$t,Ce),Ge=Math.min(Ge,zr)}else{let zr=_c(Ft,D),Kr=_c($t,pe);hf(ut,Ge,Ce,q,Y,zr[0],Kr[0]),hf(ut,Ge,Ce,q,Y,zr[0],Kr[1]),hf(ut,Ge,Ce,q,Y,zr[1],Kr[0]),hf(ut,Ge,Ce,q,Y,zr[1],Kr[1])}}return Ge}function Zf(q){return q.type==="MultiPolygon"?q.coordinates.map(D=>({type:"Polygon",coordinates:D})):q.type==="MultiLineString"?q.coordinates.map(D=>({type:"LineString",coordinates:D})):q.type==="MultiPoint"?q.coordinates.map(D=>({type:"Point",coordinates:D})):[q]}class Rc{constructor(D,Y){this.type=Qe,this.geojson=D,this.geometries=Y}static parse(D,Y){if(D.length!==2)return Y.error(`'distance' expression requires exactly one argument, but found ${D.length-1} instead.`);if($a(D[1])){let pe=D[1];if(pe.type==="FeatureCollection")return new Rc(pe,pe.features.map(Ce=>Zf(Ce.geometry)).flat());if(pe.type==="Feature")return new Rc(pe,Zf(pe.geometry));if("type"in pe&&"coordinates"in pe)return new Rc(pe,Zf(pe))}return Y.error("'distance' expression requires valid geojson object that contains polygon geometry type.")}evaluate(D){if(D.geometry()!=null&&D.canonicalID()!=null){if(D.geometryType()==="Point")return function(Y,pe){let Ce=Y.geometry(),Ue=Ce.flat().map(Tt=>mn([Tt.x,Tt.y],Y.canonical));if(Ce.length===0)return NaN;let Ge=new If(Ue[0][1]),ut=1/0;for(let Tt of pe){switch(Tt.type){case"Point":ut=Math.min(ut,cu(Ue,!1,[Tt.coordinates],!1,Ge,ut));break;case"LineString":ut=Math.min(ut,cu(Ue,!1,Tt.coordinates,!0,Ge,ut));break;case"Polygon":ut=Math.min(ut,Ku(Ue,!1,Tt.coordinates,Ge,ut))}if(ut===0)return ut}return ut}(D,this.geometries);if(D.geometryType()==="LineString")return function(Y,pe){let Ce=Y.geometry(),Ue=Ce.flat().map(Tt=>mn([Tt.x,Tt.y],Y.canonical));if(Ce.length===0)return NaN;let Ge=new If(Ue[0][1]),ut=1/0;for(let Tt of pe){switch(Tt.type){case"Point":ut=Math.min(ut,cu(Ue,!0,[Tt.coordinates],!1,Ge,ut));break;case"LineString":ut=Math.min(ut,cu(Ue,!0,Tt.coordinates,!0,Ge,ut));break;case"Polygon":ut=Math.min(ut,Ku(Ue,!0,Tt.coordinates,Ge,ut))}if(ut===0)return ut}return ut}(D,this.geometries);if(D.geometryType()==="Polygon")return function(Y,pe){let Ce=Y.geometry();if(Ce.length===0||Ce[0].length===0)return NaN;let Ue=Ic(Ce,0).map(Tt=>Tt.map(Ft=>Ft.map($t=>mn([$t.x,$t.y],Y.canonical)))),Ge=new If(Ue[0][0][0][1]),ut=1/0;for(let Tt of pe)for(let Ft of Ue){switch(Tt.type){case"Point":ut=Math.min(ut,Ku([Tt.coordinates],!1,Ft,Ge,ut));break;case"LineString":ut=Math.min(ut,Ku(Tt.coordinates,!0,Ft,Ge,ut));break;case"Polygon":ut=Math.min(ut,Ss(Ft,Tt.coordinates,Ge,ut))}if(ut===0)return ut}return ut}(D,this.geometries)}return NaN}eachChild(){}outputDefined(){return!0}}let pf={"==":Pn,"!=":go,">":Do,"<":In,">=":Qo,"<=":Ho,array:Tr,at:ir,boolean:Tr,case:Ba,coalesce:Xi,collator:Xn,format:ys,image:Is,in:mr,"index-of":$r,interpolate:Cn,"interpolate-hcl":Cn,"interpolate-lab":Cn,length:Fs,let:ca,literal:Er,match:ma,number:Tr,"number-format":po,object:Tr,slice:Ca,step:Sa,string:Tr,"to-boolean":Fr,"to-color":Fr,"to-number":Fr,"to-string":Fr,var:kt,within:ml,distance:Rc};class Fl{constructor(D,Y,pe,Ce){this.name=D,this.type=Y,this._evaluate=pe,this.args=Ce}evaluate(D){return this._evaluate(D,this.args)}eachChild(D){this.args.forEach(D)}outputDefined(){return!1}static parse(D,Y){let pe=D[0],Ce=Fl.definitions[pe];if(!Ce)return Y.error(`Unknown expression "${pe}". If you wanted a literal array, use ["literal", [...]].`,0);let Ue=Array.isArray(Ce)?Ce[0]:Ce.type,Ge=Array.isArray(Ce)?[[Ce[1],Ce[2]]]:Ce.overloads,ut=Ge.filter(([Ft])=>!Array.isArray(Ft)||Ft.length===D.length-1),Tt=null;for(let[Ft,$t]of ut){Tt=new oa(Y.registry,Yf,Y.path,null,Y.scope);let lr=[],Ar=!1;for(let zr=1;zr{return Ar=lr,Array.isArray(Ar)?`(${Ar.map(Ke).join(", ")})`:`(${Ke(Ar.type)}...)`;var Ar}).join(" | "),$t=[];for(let lr=1;lr{Y=D?Y&&Yf(pe):Y&&pe instanceof Er}),!!Y&&uh(q)&&Df(q,["zoom","heatmap-density","line-progress","accumulated","is-supported-script"])}function uh(q){if(q instanceof Fl&&(q.name==="get"&&q.args.length===1||q.name==="feature-state"||q.name==="has"&&q.args.length===1||q.name==="properties"||q.name==="geometry-type"||q.name==="id"||/^filter-/.test(q.name))||q instanceof ml||q instanceof Rc)return!1;let D=!0;return q.eachChild(Y=>{D&&!uh(Y)&&(D=!1)}),D}function Ju(q){if(q instanceof Fl&&q.name==="feature-state")return!1;let D=!0;return q.eachChild(Y=>{D&&!Ju(Y)&&(D=!1)}),D}function Df(q,D){if(q instanceof Fl&&D.indexOf(q.name)>=0)return!1;let Y=!0;return q.eachChild(pe=>{Y&&!Df(pe,D)&&(Y=!1)}),Y}function Dc(q){return{result:"success",value:q}}function Jc(q){return{result:"error",value:q}}function Eu(q){return q["property-type"]==="data-driven"||q["property-type"]==="cross-faded-data-driven"}function wf(q){return!!q.expression&&q.expression.parameters.indexOf("zoom")>-1}function zc(q){return!!q.expression&&q.expression.interpolated}function Us(q){return q instanceof Number?"number":q instanceof String?"string":q instanceof Boolean?"boolean":Array.isArray(q)?"array":q===null?"null":typeof q}function Kf(q){return typeof q=="object"&&q!==null&&!Array.isArray(q)}function Zh(q){return q}function ch(q,D){let Y=D.type==="color",pe=q.stops&&typeof q.stops[0][0]=="object",Ce=pe||!(pe||q.property!==void 0),Ue=q.type||(zc(D)?"exponential":"interval");if(Y||D.type==="padding"){let $t=Y?Ut.parse:Xr.parse;(q=ce({},q)).stops&&(q.stops=q.stops.map(lr=>[lr[0],$t(lr[1])])),q.default=$t(q.default?q.default:D.default)}if(q.colorSpace&&(Ge=q.colorSpace)!=="rgb"&&Ge!=="hcl"&&Ge!=="lab")throw new Error(`Unknown color space: "${q.colorSpace}"`);var Ge;let ut,Tt,Ft;if(Ue==="exponential")ut=fh;else if(Ue==="interval")ut=ku;else if(Ue==="categorical"){ut=Ah,Tt=Object.create(null);for(let $t of q.stops)Tt[$t[0]]=$t[1];Ft=typeof q.stops[0][0]}else{if(Ue!=="identity")throw new Error(`Unknown function type "${Ue}"`);ut=ru}if(pe){let $t={},lr=[];for(let Kr=0;KrKr[0]),evaluate:({zoom:Kr},la)=>fh({stops:Ar,base:q.base},D,Kr).evaluate(Kr,la)}}if(Ce){let $t=Ue==="exponential"?{name:"exponential",base:q.base!==void 0?q.base:1}:null;return{kind:"camera",interpolationType:$t,interpolationFactor:Cn.interpolationFactor.bind(void 0,$t),zoomStops:q.stops.map(lr=>lr[0]),evaluate:({zoom:lr})=>ut(q,D,lr,Tt,Ft)}}return{kind:"source",evaluate($t,lr){let Ar=lr&&lr.properties?lr.properties[q.property]:void 0;return Ar===void 0?df(q.default,D.default):ut(q,D,Ar,Tt,Ft)}}}function df(q,D,Y){return q!==void 0?q:D!==void 0?D:Y!==void 0?Y:void 0}function Ah(q,D,Y,pe,Ce){return df(typeof Y===Ce?pe[Y]:void 0,q.default,D.default)}function ku(q,D,Y){if(Us(Y)!=="number")return df(q.default,D.default);let pe=q.stops.length;if(pe===1||Y<=q.stops[0][0])return q.stops[0][1];if(Y>=q.stops[pe-1][0])return q.stops[pe-1][1];let Ce=da(q.stops.map(Ue=>Ue[0]),Y);return q.stops[Ce][1]}function fh(q,D,Y){let pe=q.base!==void 0?q.base:1;if(Us(Y)!=="number")return df(q.default,D.default);let Ce=q.stops.length;if(Ce===1||Y<=q.stops[0][0])return q.stops[0][1];if(Y>=q.stops[Ce-1][0])return q.stops[Ce-1][1];let Ue=da(q.stops.map($t=>$t[0]),Y),Ge=function($t,lr,Ar,zr){let Kr=zr-Ar,la=$t-Ar;return Kr===0?0:lr===1?la/Kr:(Math.pow(lr,la)-1)/(Math.pow(lr,Kr)-1)}(Y,pe,q.stops[Ue][0],q.stops[Ue+1][0]),ut=q.stops[Ue][1],Tt=q.stops[Ue+1][1],Ft=$n[D.type]||Zh;return typeof ut.evaluate=="function"?{evaluate(...$t){let lr=ut.evaluate.apply(void 0,$t),Ar=Tt.evaluate.apply(void 0,$t);if(lr!==void 0&&Ar!==void 0)return Ft(lr,Ar,Ge,q.colorSpace)}}:Ft(ut,Tt,Ge,q.colorSpace)}function ru(q,D,Y){switch(D.type){case"color":Y=Ut.parse(Y);break;case"formatted":Y=pa.fromString(Y.toString());break;case"resolvedImage":Y=qa.fromString(Y.toString());break;case"padding":Y=Xr.parse(Y);break;default:Us(Y)===D.type||D.type==="enum"&&D.values[Y]||(Y=void 0)}return df(Y,q.default,D.default)}Fl.register(pf,{error:[{kind:"error"},[Ct],(q,[D])=>{throw new kr(D.evaluate(q))}],typeof:[Ct,[ur],(q,[D])=>Ke(mt(D.evaluate(q)))],"to-rgba":[Fe(Qe,4),[Ot],(q,[D])=>{let[Y,pe,Ce,Ue]=D.evaluate(q).rgb;return[255*Y,255*pe,255*Ce,Ue]}],rgb:[Ot,[Qe,Qe,Qe],lh],rgba:[Ot,[Qe,Qe,Qe,Qe],lh],has:{type:St,overloads:[[[Ct],(q,[D])=>Xf(D.evaluate(q),q.properties())],[[Ct,jt],(q,[D,Y])=>Xf(D.evaluate(q),Y.evaluate(q))]]},get:{type:ur,overloads:[[[Ct],(q,[D])=>Rf(D.evaluate(q),q.properties())],[[Ct,jt],(q,[D,Y])=>Rf(D.evaluate(q),Y.evaluate(q))]]},"feature-state":[ur,[Ct],(q,[D])=>Rf(D.evaluate(q),q.featureState||{})],properties:[jt,[],q=>q.properties()],"geometry-type":[Ct,[],q=>q.geometryType()],id:[ur,[],q=>q.id()],zoom:[Qe,[],q=>q.globals.zoom],"heatmap-density":[Qe,[],q=>q.globals.heatmapDensity||0],"line-progress":[Qe,[],q=>q.globals.lineProgress||0],accumulated:[ur,[],q=>q.globals.accumulated===void 0?null:q.globals.accumulated],"+":[Qe,Kc(Qe),(q,D)=>{let Y=0;for(let pe of D)Y+=pe.evaluate(q);return Y}],"*":[Qe,Kc(Qe),(q,D)=>{let Y=1;for(let pe of D)Y*=pe.evaluate(q);return Y}],"-":{type:Qe,overloads:[[[Qe,Qe],(q,[D,Y])=>D.evaluate(q)-Y.evaluate(q)],[[Qe],(q,[D])=>-D.evaluate(q)]]},"/":[Qe,[Qe,Qe],(q,[D,Y])=>D.evaluate(q)/Y.evaluate(q)],"%":[Qe,[Qe,Qe],(q,[D,Y])=>D.evaluate(q)%Y.evaluate(q)],ln2:[Qe,[],()=>Math.LN2],pi:[Qe,[],()=>Math.PI],e:[Qe,[],()=>Math.E],"^":[Qe,[Qe,Qe],(q,[D,Y])=>Math.pow(D.evaluate(q),Y.evaluate(q))],sqrt:[Qe,[Qe],(q,[D])=>Math.sqrt(D.evaluate(q))],log10:[Qe,[Qe],(q,[D])=>Math.log(D.evaluate(q))/Math.LN10],ln:[Qe,[Qe],(q,[D])=>Math.log(D.evaluate(q))],log2:[Qe,[Qe],(q,[D])=>Math.log(D.evaluate(q))/Math.LN2],sin:[Qe,[Qe],(q,[D])=>Math.sin(D.evaluate(q))],cos:[Qe,[Qe],(q,[D])=>Math.cos(D.evaluate(q))],tan:[Qe,[Qe],(q,[D])=>Math.tan(D.evaluate(q))],asin:[Qe,[Qe],(q,[D])=>Math.asin(D.evaluate(q))],acos:[Qe,[Qe],(q,[D])=>Math.acos(D.evaluate(q))],atan:[Qe,[Qe],(q,[D])=>Math.atan(D.evaluate(q))],min:[Qe,Kc(Qe),(q,D)=>Math.min(...D.map(Y=>Y.evaluate(q)))],max:[Qe,Kc(Qe),(q,D)=>Math.max(...D.map(Y=>Y.evaluate(q)))],abs:[Qe,[Qe],(q,[D])=>Math.abs(D.evaluate(q))],round:[Qe,[Qe],(q,[D])=>{let Y=D.evaluate(q);return Y<0?-Math.round(-Y):Math.round(Y)}],floor:[Qe,[Qe],(q,[D])=>Math.floor(D.evaluate(q))],ceil:[Qe,[Qe],(q,[D])=>Math.ceil(D.evaluate(q))],"filter-==":[St,[Ct,ur],(q,[D,Y])=>q.properties()[D.value]===Y.value],"filter-id-==":[St,[ur],(q,[D])=>q.id()===D.value],"filter-type-==":[St,[Ct],(q,[D])=>q.geometryType()===D.value],"filter-<":[St,[Ct,ur],(q,[D,Y])=>{let pe=q.properties()[D.value],Ce=Y.value;return typeof pe==typeof Ce&&pe{let Y=q.id(),pe=D.value;return typeof Y==typeof pe&&Y":[St,[Ct,ur],(q,[D,Y])=>{let pe=q.properties()[D.value],Ce=Y.value;return typeof pe==typeof Ce&&pe>Ce}],"filter-id->":[St,[ur],(q,[D])=>{let Y=q.id(),pe=D.value;return typeof Y==typeof pe&&Y>pe}],"filter-<=":[St,[Ct,ur],(q,[D,Y])=>{let pe=q.properties()[D.value],Ce=Y.value;return typeof pe==typeof Ce&&pe<=Ce}],"filter-id-<=":[St,[ur],(q,[D])=>{let Y=q.id(),pe=D.value;return typeof Y==typeof pe&&Y<=pe}],"filter->=":[St,[Ct,ur],(q,[D,Y])=>{let pe=q.properties()[D.value],Ce=Y.value;return typeof pe==typeof Ce&&pe>=Ce}],"filter-id->=":[St,[ur],(q,[D])=>{let Y=q.id(),pe=D.value;return typeof Y==typeof pe&&Y>=pe}],"filter-has":[St,[ur],(q,[D])=>D.value in q.properties()],"filter-has-id":[St,[],q=>q.id()!==null&&q.id()!==void 0],"filter-type-in":[St,[Fe(Ct)],(q,[D])=>D.value.indexOf(q.geometryType())>=0],"filter-id-in":[St,[Fe(ur)],(q,[D])=>D.value.indexOf(q.id())>=0],"filter-in-small":[St,[Ct,Fe(ur)],(q,[D,Y])=>Y.value.indexOf(q.properties()[D.value])>=0],"filter-in-large":[St,[Ct,Fe(ur)],(q,[D,Y])=>function(pe,Ce,Ue,Ge){for(;Ue<=Ge;){let ut=Ue+Ge>>1;if(Ce[ut]===pe)return!0;Ce[ut]>pe?Ge=ut-1:Ue=ut+1}return!1}(q.properties()[D.value],Y.value,0,Y.value.length-1)],all:{type:St,overloads:[[[St,St],(q,[D,Y])=>D.evaluate(q)&&Y.evaluate(q)],[Kc(St),(q,D)=>{for(let Y of D)if(!Y.evaluate(q))return!1;return!0}]]},any:{type:St,overloads:[[[St,St],(q,[D,Y])=>D.evaluate(q)||Y.evaluate(q)],[Kc(St),(q,D)=>{for(let Y of D)if(Y.evaluate(q))return!0;return!1}]]},"!":[St,[St],(q,[D])=>!D.evaluate(q)],"is-supported-script":[St,[Ct],(q,[D])=>{let Y=q.globals&&q.globals.isSupportedScript;return!Y||Y(D.evaluate(q))}],upcase:[Ct,[Ct],(q,[D])=>D.evaluate(q).toUpperCase()],downcase:[Ct,[Ct],(q,[D])=>D.evaluate(q).toLowerCase()],concat:[Ct,Kc(ur),(q,D)=>D.map(Y=>gt(Y.evaluate(q))).join("")],"resolved-locale":[Ct,[ar],(q,[D])=>D.evaluate(q).resolvedLocale()]});class Cu{constructor(D,Y){var pe;this.expression=D,this._warningHistory={},this._evaluator=new Jr,this._defaultValue=Y?(pe=Y).type==="color"&&Kf(pe.default)?new Ut(0,0,0,0):pe.type==="color"?Ut.parse(pe.default)||null:pe.type==="padding"?Xr.parse(pe.default)||null:pe.type==="variableAnchorOffsetCollection"?Fa.parse(pe.default)||null:pe.default===void 0?null:pe.default:null,this._enumValues=Y&&Y.type==="enum"?Y.values:null}evaluateWithoutErrorHandling(D,Y,pe,Ce,Ue,Ge){return this._evaluator.globals=D,this._evaluator.feature=Y,this._evaluator.featureState=pe,this._evaluator.canonical=Ce,this._evaluator.availableImages=Ue||null,this._evaluator.formattedSection=Ge,this.expression.evaluate(this._evaluator)}evaluate(D,Y,pe,Ce,Ue,Ge){this._evaluator.globals=D,this._evaluator.feature=Y||null,this._evaluator.featureState=pe||null,this._evaluator.canonical=Ce,this._evaluator.availableImages=Ue||null,this._evaluator.formattedSection=Ge||null;try{let ut=this.expression.evaluate(this._evaluator);if(ut==null||typeof ut=="number"&&ut!=ut)return this._defaultValue;if(this._enumValues&&!(ut in this._enumValues))throw new kr(`Expected value to be one of ${Object.keys(this._enumValues).map(Tt=>JSON.stringify(Tt)).join(", ")}, but found ${JSON.stringify(ut)} instead.`);return ut}catch(ut){return this._warningHistory[ut.message]||(this._warningHistory[ut.message]=!0,typeof console<"u"&&console.warn(ut.message)),this._defaultValue}}}function xc(q){return Array.isArray(q)&&q.length>0&&typeof q[0]=="string"&&q[0]in pf}function kl(q,D){let Y=new oa(pf,Yf,[],D?function(Ce){let Ue={color:Ot,string:Ct,number:Qe,enum:Ct,boolean:St,formatted:Cr,padding:vr,resolvedImage:_r,variableAnchorOffsetCollection:yt};return Ce.type==="array"?Fe(Ue[Ce.value]||ur,Ce.length):Ue[Ce.type]}(D):void 0),pe=Y.parse(q,void 0,void 0,void 0,D&&D.type==="string"?{typeAnnotation:"coerce"}:void 0);return pe?Dc(new Cu(pe,D)):Jc(Y.errors)}class Fc{constructor(D,Y){this.kind=D,this._styleExpression=Y,this.isStateDependent=D!=="constant"&&!Ju(Y.expression)}evaluateWithoutErrorHandling(D,Y,pe,Ce,Ue,Ge){return this._styleExpression.evaluateWithoutErrorHandling(D,Y,pe,Ce,Ue,Ge)}evaluate(D,Y,pe,Ce,Ue,Ge){return this._styleExpression.evaluate(D,Y,pe,Ce,Ue,Ge)}}class $u{constructor(D,Y,pe,Ce){this.kind=D,this.zoomStops=pe,this._styleExpression=Y,this.isStateDependent=D!=="camera"&&!Ju(Y.expression),this.interpolationType=Ce}evaluateWithoutErrorHandling(D,Y,pe,Ce,Ue,Ge){return this._styleExpression.evaluateWithoutErrorHandling(D,Y,pe,Ce,Ue,Ge)}evaluate(D,Y,pe,Ce,Ue,Ge){return this._styleExpression.evaluate(D,Y,pe,Ce,Ue,Ge)}interpolationFactor(D,Y,pe){return this.interpolationType?Cn.interpolationFactor(this.interpolationType,D,Y,pe):0}}function vu(q,D){let Y=kl(q,D);if(Y.result==="error")return Y;let pe=Y.value.expression,Ce=uh(pe);if(!Ce&&!Eu(D))return Jc([new ze("","data expressions not supported")]);let Ue=Df(pe,["zoom"]);if(!Ue&&!wf(D))return Jc([new ze("","zoom expressions not supported")]);let Ge=hh(pe);return Ge||Ue?Ge instanceof ze?Jc([Ge]):Ge instanceof Cn&&!zc(D)?Jc([new ze("",'"interpolate" expressions cannot be used with this property')]):Dc(Ge?new $u(Ce?"camera":"composite",Y.value,Ge.labels,Ge instanceof Cn?Ge.interpolation:void 0):new Fc(Ce?"constant":"source",Y.value)):Jc([new ze("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')])}class xl{constructor(D,Y){this._parameters=D,this._specification=Y,ce(this,ch(this._parameters,this._specification))}static deserialize(D){return new xl(D._parameters,D._specification)}static serialize(D){return{_parameters:D._parameters,_specification:D._specification}}}function hh(q){let D=null;if(q instanceof ca)D=hh(q.result);else if(q instanceof Xi){for(let Y of q.args)if(D=hh(Y),D)break}else(q instanceof Sa||q instanceof Cn)&&q.input instanceof Fl&&q.input.name==="zoom"&&(D=q);return D instanceof ze||q.eachChild(Y=>{let pe=hh(Y);pe instanceof ze?D=pe:!D&&pe?D=new ze("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):D&&pe&&D!==pe&&(D=new ze("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),D}function Sh(q){if(q===!0||q===!1)return!0;if(!Array.isArray(q)||q.length===0)return!1;switch(q[0]){case"has":return q.length>=2&&q[1]!=="$id"&&q[1]!=="$type";case"in":return q.length>=3&&(typeof q[1]!="string"||Array.isArray(q[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return q.length!==3||Array.isArray(q[1])||Array.isArray(q[2]);case"any":case"all":for(let D of q.slice(1))if(!Sh(D)&&typeof D!="boolean")return!1;return!0;default:return!0}}let Uu={type:"boolean",default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}};function bc(q){if(q==null)return{filter:()=>!0,needGeometry:!1};Sh(q)||(q=vf(q));let D=kl(q,Uu);if(D.result==="error")throw new Error(D.value.map(Y=>`${Y.key}: ${Y.message}`).join(", "));return{filter:(Y,pe,Ce)=>D.value.evaluate(Y,pe,{},Ce),needGeometry:hp(q)}}function lc(q,D){return qD?1:0}function hp(q){if(!Array.isArray(q))return!1;if(q[0]==="within"||q[0]==="distance")return!0;for(let D=1;D"||D==="<="||D===">="?Tf(q[1],q[2],D):D==="any"?(Y=q.slice(1),["any"].concat(Y.map(vf))):D==="all"?["all"].concat(q.slice(1).map(vf)):D==="none"?["all"].concat(q.slice(1).map(vf).map(au)):D==="in"?Lu(q[1],q.slice(2)):D==="!in"?au(Lu(q[1],q.slice(2))):D==="has"?zf(q[1]):D!=="!has"||au(zf(q[1]));var Y}function Tf(q,D,Y){switch(q){case"$type":return[`filter-type-${Y}`,D];case"$id":return[`filter-id-${Y}`,D];default:return[`filter-${Y}`,q,D]}}function Lu(q,D){if(D.length===0)return!1;switch(q){case"$type":return["filter-type-in",["literal",D]];case"$id":return["filter-id-in",["literal",D]];default:return D.length>200&&!D.some(Y=>typeof Y!=typeof D[0])?["filter-in-large",q,["literal",D.sort(lc)]]:["filter-in-small",q,["literal",D]]}}function zf(q){switch(q){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",q]}}function au(q){return["!",q]}function $c(q){let D=typeof q;if(D==="number"||D==="boolean"||D==="string"||q==null)return JSON.stringify(q);if(Array.isArray(q)){let Ce="[";for(let Ue of q)Ce+=`${$c(Ue)},`;return`${Ce}]`}let Y=Object.keys(q).sort(),pe="{";for(let Ce=0;Cepe.maximum?[new ge(D,Y,`${Y} is greater than the maximum value ${pe.maximum}`)]:[]}function mf(q){let D=q.valueSpec,Y=il(q.value.type),pe,Ce,Ue,Ge={},ut=Y!=="categorical"&&q.value.property===void 0,Tt=!ut,Ft=Us(q.value.stops)==="array"&&Us(q.value.stops[0])==="array"&&Us(q.value.stops[0][0])==="object",$t=gu({key:q.key,value:q.value,valueSpec:q.styleSpec.function,validateSpec:q.validateSpec,style:q.style,styleSpec:q.styleSpec,objectElementValidators:{stops:function(zr){if(Y==="identity")return[new ge(zr.key,zr.value,'identity function may not have a "stops" property')];let Kr=[],la=zr.value;return Kr=Kr.concat(Jf({key:zr.key,value:la,valueSpec:zr.valueSpec,validateSpec:zr.validateSpec,style:zr.style,styleSpec:zr.styleSpec,arrayElementValidator:lr})),Us(la)==="array"&&la.length===0&&Kr.push(new ge(zr.key,la,"array must have at least one stop")),Kr},default:function(zr){return zr.validateSpec({key:zr.key,value:zr.value,valueSpec:D,validateSpec:zr.validateSpec,style:zr.style,styleSpec:zr.styleSpec})}}});return Y==="identity"&&ut&&$t.push(new ge(q.key,q.value,'missing required property "property"')),Y==="identity"||q.value.stops||$t.push(new ge(q.key,q.value,'missing required property "stops"')),Y==="exponential"&&q.valueSpec.expression&&!zc(q.valueSpec)&&$t.push(new ge(q.key,q.value,"exponential functions not supported")),q.styleSpec.$version>=8&&(Tt&&!Eu(q.valueSpec)?$t.push(new ge(q.key,q.value,"property functions not supported")):ut&&!wf(q.valueSpec)&&$t.push(new ge(q.key,q.value,"zoom functions not supported"))),Y!=="categorical"&&!Ft||q.value.property!==void 0||$t.push(new ge(q.key,q.value,'"property" property is required')),$t;function lr(zr){let Kr=[],la=zr.value,za=zr.key;if(Us(la)!=="array")return[new ge(za,la,`array expected, ${Us(la)} found`)];if(la.length!==2)return[new ge(za,la,`array length 2 expected, length ${la.length} found`)];if(Ft){if(Us(la[0])!=="object")return[new ge(za,la,`object expected, ${Us(la[0])} found`)];if(la[0].zoom===void 0)return[new ge(za,la,"object stop key must have zoom")];if(la[0].value===void 0)return[new ge(za,la,"object stop key must have value")];if(Ue&&Ue>il(la[0].zoom))return[new ge(za,la[0].zoom,"stop zoom values must appear in ascending order")];il(la[0].zoom)!==Ue&&(Ue=il(la[0].zoom),Ce=void 0,Ge={}),Kr=Kr.concat(gu({key:`${za}[0]`,value:la[0],valueSpec:{zoom:{}},validateSpec:zr.validateSpec,style:zr.style,styleSpec:zr.styleSpec,objectElementValidators:{zoom:el,value:Ar}}))}else Kr=Kr.concat(Ar({key:`${za}[0]`,value:la[0],valueSpec:{},validateSpec:zr.validateSpec,style:zr.style,styleSpec:zr.styleSpec},la));return xc(mu(la[1]))?Kr.concat([new ge(`${za}[1]`,la[1],"expressions are not allowed in function stops.")]):Kr.concat(zr.validateSpec({key:`${za}[1]`,value:la[1],valueSpec:D,validateSpec:zr.validateSpec,style:zr.style,styleSpec:zr.styleSpec}))}function Ar(zr,Kr){let la=Us(zr.value),za=il(zr.value),ja=zr.value!==null?zr.value:Kr;if(pe){if(la!==pe)return[new ge(zr.key,ja,`${la} stop domain type must match previous stop domain type ${pe}`)]}else pe=la;if(la!=="number"&&la!=="string"&&la!=="boolean")return[new ge(zr.key,ja,"stop domain value must be a number, string, or boolean")];if(la!=="number"&&Y!=="categorical"){let gi=`number expected, ${la} found`;return Eu(D)&&Y===void 0&&(gi+='\nIf you intended to use a categorical function, specify `"type": "categorical"`.'),[new ge(zr.key,ja,gi)]}return Y!=="categorical"||la!=="number"||isFinite(za)&&Math.floor(za)===za?Y!=="categorical"&&la==="number"&&Ce!==void 0&&zanew ge(`${q.key}${pe.key}`,q.value,pe.message));let Y=D.value.expression||D.value._styleExpression.expression;if(q.expressionContext==="property"&&q.propertyKey==="text-font"&&!Y.outputDefined())return[new ge(q.key,q.value,`Invalid data expression for "${q.propertyKey}". Output values must be contained as literals within the expression.`)];if(q.expressionContext==="property"&&q.propertyType==="layout"&&!Ju(Y))return[new ge(q.key,q.value,'"feature-state" data expressions are not supported with layout properties.')];if(q.expressionContext==="filter"&&!Ju(Y))return[new ge(q.key,q.value,'"feature-state" data expressions are not supported with filters.')];if(q.expressionContext&&q.expressionContext.indexOf("cluster")===0){if(!Df(Y,["zoom","feature-state"]))return[new ge(q.key,q.value,'"zoom" and "feature-state" expressions are not supported with cluster properties.')];if(q.expressionContext==="cluster-initial"&&!uh(Y))return[new ge(q.key,q.value,"Feature data expressions are not supported with initial expression part of cluster properties.")]}return[]}function ju(q){let D=q.key,Y=q.value,pe=q.valueSpec,Ce=[];return Array.isArray(pe.values)?pe.values.indexOf(il(Y))===-1&&Ce.push(new ge(D,Y,`expected one of [${pe.values.join(", ")}], ${JSON.stringify(Y)} found`)):Object.keys(pe.values).indexOf(il(Y))===-1&&Ce.push(new ge(D,Y,`expected one of [${Object.keys(pe.values).join(", ")}], ${JSON.stringify(Y)} found`)),Ce}function Af(q){return Sh(mu(q.value))?wc(ce({},q,{expressionContext:"filter",valueSpec:{value:"boolean"}})):uc(q)}function uc(q){let D=q.value,Y=q.key;if(Us(D)!=="array")return[new ge(Y,D,`array expected, ${Us(D)} found`)];let pe=q.styleSpec,Ce,Ue=[];if(D.length<1)return[new ge(Y,D,"filter array must have at least 1 element")];switch(Ue=Ue.concat(ju({key:`${Y}[0]`,value:D[0],valueSpec:pe.filter_operator,style:q.style,styleSpec:q.styleSpec})),il(D[0])){case"<":case"<=":case">":case">=":D.length>=2&&il(D[1])==="$type"&&Ue.push(new ge(Y,D,`"$type" cannot be use with operator "${D[0]}"`));case"==":case"!=":D.length!==3&&Ue.push(new ge(Y,D,`filter array for operator "${D[0]}" must have 3 elements`));case"in":case"!in":D.length>=2&&(Ce=Us(D[1]),Ce!=="string"&&Ue.push(new ge(`${Y}[1]`,D[1],`string expected, ${Ce} found`)));for(let Ge=2;Ge{Ft in Y&&D.push(new ge(pe,Y[Ft],`"${Ft}" is prohibited for ref layers`))}),Ce.layers.forEach(Ft=>{il(Ft.id)===ut&&(Tt=Ft)}),Tt?Tt.ref?D.push(new ge(pe,Y.ref,"ref cannot reference another ref layer")):Ge=il(Tt.type):D.push(new ge(pe,Y.ref,`ref layer "${ut}" not found`))}else if(Ge!=="background")if(Y.source){let Tt=Ce.sources&&Ce.sources[Y.source],Ft=Tt&&il(Tt.type);Tt?Ft==="vector"&&Ge==="raster"?D.push(new ge(pe,Y.source,`layer "${Y.id}" requires a raster source`)):Ft!=="raster-dem"&&Ge==="hillshade"?D.push(new ge(pe,Y.source,`layer "${Y.id}" requires a raster-dem source`)):Ft==="raster"&&Ge!=="raster"?D.push(new ge(pe,Y.source,`layer "${Y.id}" requires a vector source`)):Ft!=="vector"||Y["source-layer"]?Ft==="raster-dem"&&Ge!=="hillshade"?D.push(new ge(pe,Y.source,"raster-dem source can only be used with layer type 'hillshade'.")):Ge!=="line"||!Y.paint||!Y.paint["line-gradient"]||Ft==="geojson"&&Tt.lineMetrics||D.push(new ge(pe,Y,`layer "${Y.id}" specifies a line-gradient, which requires a GeoJSON source with \`lineMetrics\` enabled.`)):D.push(new ge(pe,Y,`layer "${Y.id}" must specify a "source-layer"`)):D.push(new ge(pe,Y.source,`source "${Y.source}" not found`))}else D.push(new ge(pe,Y,'missing required property "source"'));return D=D.concat(gu({key:pe,value:Y,valueSpec:Ue.layer,style:q.style,styleSpec:q.styleSpec,validateSpec:q.validateSpec,objectElementValidators:{"*":()=>[],type:()=>q.validateSpec({key:`${pe}.type`,value:Y.type,valueSpec:Ue.layer.type,style:q.style,styleSpec:q.styleSpec,validateSpec:q.validateSpec,object:Y,objectKey:"type"}),filter:Af,layout:Tt=>gu({layer:Y,key:Tt.key,value:Tt.value,style:Tt.style,styleSpec:Tt.styleSpec,validateSpec:Tt.validateSpec,objectElementValidators:{"*":Ft=>Vl(ce({layerType:Ge},Ft))}}),paint:Tt=>gu({layer:Y,key:Tt.key,value:Tt.value,style:Tt.style,styleSpec:Tt.styleSpec,validateSpec:Tt.validateSpec,objectElementValidators:{"*":Ft=>$f(ce({layerType:Ge},Ft))}})}})),D}function Vu(q){let D=q.value,Y=q.key,pe=Us(D);return pe!=="string"?[new ge(Y,D,`string expected, ${pe} found`)]:[]}let Tc={promoteId:function({key:q,value:D}){if(Us(D)==="string")return Vu({key:q,value:D});{let Y=[];for(let pe in D)Y.push(...Vu({key:`${q}.${pe}`,value:D[pe]}));return Y}}};function cc(q){let D=q.value,Y=q.key,pe=q.styleSpec,Ce=q.style,Ue=q.validateSpec;if(!D.type)return[new ge(Y,D,'"type" is required')];let Ge=il(D.type),ut;switch(Ge){case"vector":case"raster":return ut=gu({key:Y,value:D,valueSpec:pe[`source_${Ge.replace("-","_")}`],style:q.style,styleSpec:pe,objectElementValidators:Tc,validateSpec:Ue}),ut;case"raster-dem":return ut=function(Tt){var Ft;let $t=(Ft=Tt.sourceName)!==null&&Ft!==void 0?Ft:"",lr=Tt.value,Ar=Tt.styleSpec,zr=Ar.source_raster_dem,Kr=Tt.style,la=[],za=Us(lr);if(lr===void 0)return la;if(za!=="object")return la.push(new ge("source_raster_dem",lr,`object expected, ${za} found`)),la;let ja=il(lr.encoding)==="custom",gi=["redFactor","greenFactor","blueFactor","baseShift"],ei=Tt.value.encoding?`"${Tt.value.encoding}"`:"Default";for(let hi in lr)!ja&&gi.includes(hi)?la.push(new ge(hi,lr[hi],`In "${$t}": "${hi}" is only valid when "encoding" is set to "custom". ${ei} encoding found`)):zr[hi]?la=la.concat(Tt.validateSpec({key:hi,value:lr[hi],valueSpec:zr[hi],validateSpec:Tt.validateSpec,style:Kr,styleSpec:Ar})):la.push(new ge(hi,lr[hi],`unknown property "${hi}"`));return la}({sourceName:Y,value:D,style:q.style,styleSpec:pe,validateSpec:Ue}),ut;case"geojson":if(ut=gu({key:Y,value:D,valueSpec:pe.source_geojson,style:Ce,styleSpec:pe,validateSpec:Ue,objectElementValidators:Tc}),D.cluster)for(let Tt in D.clusterProperties){let[Ft,$t]=D.clusterProperties[Tt],lr=typeof Ft=="string"?[Ft,["accumulated"],["get",Tt]]:Ft;ut.push(...wc({key:`${Y}.${Tt}.map`,value:$t,validateSpec:Ue,expressionContext:"cluster-map"})),ut.push(...wc({key:`${Y}.${Tt}.reduce`,value:lr,validateSpec:Ue,expressionContext:"cluster-reduce"}))}return ut;case"video":return gu({key:Y,value:D,valueSpec:pe.source_video,style:Ce,validateSpec:Ue,styleSpec:pe});case"image":return gu({key:Y,value:D,valueSpec:pe.source_image,style:Ce,validateSpec:Ue,styleSpec:pe});case"canvas":return[new ge(Y,null,"Please use runtime APIs to add canvas sources, rather than including them in stylesheets.","source.canvas")];default:return ju({key:`${Y}.type`,value:D.type,valueSpec:{values:["vector","raster","raster-dem","geojson","video","image"]},style:Ce,validateSpec:Ue,styleSpec:pe})}}function Cl(q){let D=q.value,Y=q.styleSpec,pe=Y.light,Ce=q.style,Ue=[],Ge=Us(D);if(D===void 0)return Ue;if(Ge!=="object")return Ue=Ue.concat([new ge("light",D,`object expected, ${Ge} found`)]),Ue;for(let ut in D){let Tt=ut.match(/^(.*)-transition$/);Ue=Ue.concat(Tt&&pe[Tt[1]]&&pe[Tt[1]].transition?q.validateSpec({key:ut,value:D[ut],valueSpec:Y.transition,validateSpec:q.validateSpec,style:Ce,styleSpec:Y}):pe[ut]?q.validateSpec({key:ut,value:D[ut],valueSpec:pe[ut],validateSpec:q.validateSpec,style:Ce,styleSpec:Y}):[new ge(ut,D[ut],`unknown property "${ut}"`)])}return Ue}function iu(q){let D=q.value,Y=q.styleSpec,pe=Y.sky,Ce=q.style,Ue=Us(D);if(D===void 0)return[];if(Ue!=="object")return[new ge("sky",D,`object expected, ${Ue} found`)];let Ge=[];for(let ut in D)Ge=Ge.concat(pe[ut]?q.validateSpec({key:ut,value:D[ut],valueSpec:pe[ut],style:Ce,styleSpec:Y}):[new ge(ut,D[ut],`unknown property "${ut}"`)]);return Ge}function fc(q){let D=q.value,Y=q.styleSpec,pe=Y.terrain,Ce=q.style,Ue=[],Ge=Us(D);if(D===void 0)return Ue;if(Ge!=="object")return Ue=Ue.concat([new ge("terrain",D,`object expected, ${Ge} found`)]),Ue;for(let ut in D)Ue=Ue.concat(pe[ut]?q.validateSpec({key:ut,value:D[ut],valueSpec:pe[ut],validateSpec:q.validateSpec,style:Ce,styleSpec:Y}):[new ge(ut,D[ut],`unknown property "${ut}"`)]);return Ue}function Oc(q){let D=[],Y=q.value,pe=q.key;if(Array.isArray(Y)){let Ce=[],Ue=[];for(let Ge in Y)Y[Ge].id&&Ce.includes(Y[Ge].id)&&D.push(new ge(pe,Y,`all the sprites' ids must be unique, but ${Y[Ge].id} is duplicated`)),Ce.push(Y[Ge].id),Y[Ge].url&&Ue.includes(Y[Ge].url)&&D.push(new ge(pe,Y,`all the sprites' URLs must be unique, but ${Y[Ge].url} is duplicated`)),Ue.push(Y[Ge].url),D=D.concat(gu({key:`${pe}[${Ge}]`,value:Y[Ge],valueSpec:{id:{type:"string",required:!0},url:{type:"string",required:!0}},validateSpec:q.validateSpec}));return D}return Vu({key:pe,value:Y})}let Qu={"*":()=>[],array:Jf,boolean:function(q){let D=q.value,Y=q.key,pe=Us(D);return pe!=="boolean"?[new ge(Y,D,`boolean expected, ${pe} found`)]:[]},number:el,color:function(q){let D=q.key,Y=q.value,pe=Us(Y);return pe!=="string"?[new ge(D,Y,`color expected, ${pe} found`)]:Ut.parse(String(Y))?[]:[new ge(D,Y,`color expected, "${Y}" found`)]},constants:Ff,enum:ju,filter:Af,function:mf,layer:Qf,object:gu,source:cc,light:Cl,sky:iu,terrain:fc,projection:function(q){let D=q.value,Y=q.styleSpec,pe=Y.projection,Ce=q.style,Ue=Us(D);if(D===void 0)return[];if(Ue!=="object")return[new ge("projection",D,`object expected, ${Ue} found`)];let Ge=[];for(let ut in D)Ge=Ge.concat(pe[ut]?q.validateSpec({key:ut,value:D[ut],valueSpec:pe[ut],style:Ce,styleSpec:Y}):[new ge(ut,D[ut],`unknown property "${ut}"`)]);return Ge},string:Vu,formatted:function(q){return Vu(q).length===0?[]:wc(q)},resolvedImage:function(q){return Vu(q).length===0?[]:wc(q)},padding:function(q){let D=q.key,Y=q.value;if(Us(Y)==="array"){if(Y.length<1||Y.length>4)return[new ge(D,Y,`padding requires 1 to 4 values; ${Y.length} values found`)];let pe={type:"number"},Ce=[];for(let Ue=0;Ue[]}})),q.constants&&(Y=Y.concat(Ff({key:"constants",value:q.constants,style:q,styleSpec:D,validateSpec:ef}))),qr(Y)}function Yr(q){return function(D){return q(ps(wo({},D),{validateSpec:ef}))}}function qr(q){return[].concat(q).sort((D,Y)=>D.line-Y.line)}function ba(q){return function(...D){return qr(q.apply(this,D))}}fr.source=ba(Yr(cc)),fr.sprite=ba(Yr(Oc)),fr.glyphs=ba(Yr(Zt)),fr.light=ba(Yr(Cl)),fr.sky=ba(Yr(iu)),fr.terrain=ba(Yr(fc)),fr.layer=ba(Yr(Qf)),fr.filter=ba(Yr(Af)),fr.paintProperty=ba(Yr($f)),fr.layoutProperty=ba(Yr(Vl));let Ka=fr,oi=Ka.light,yi=Ka.sky,ki=Ka.paintProperty,Bi=Ka.layoutProperty;function li(q,D){let Y=!1;if(D&&D.length)for(let pe of D)q.fire(new j(new Error(pe.message))),Y=!0;return Y}class _i{constructor(D,Y,pe){let Ce=this.cells=[];if(D instanceof ArrayBuffer){this.arrayBuffer=D;let Ge=new Int32Array(this.arrayBuffer);D=Ge[0],this.d=(Y=Ge[1])+2*(pe=Ge[2]);for(let Tt=0;Tt=lr[Kr+0]&&Ce>=lr[Kr+1])?(ut[zr]=!0,Ge.push($t[zr])):ut[zr]=!1}}}}_forEachCell(D,Y,pe,Ce,Ue,Ge,ut,Tt){let Ft=this._convertToCellCoord(D),$t=this._convertToCellCoord(Y),lr=this._convertToCellCoord(pe),Ar=this._convertToCellCoord(Ce);for(let zr=Ft;zr<=lr;zr++)for(let Kr=$t;Kr<=Ar;Kr++){let la=this.d*Kr+zr;if((!Tt||Tt(this._convertFromCellCoord(zr),this._convertFromCellCoord(Kr),this._convertFromCellCoord(zr+1),this._convertFromCellCoord(Kr+1)))&&Ue.call(this,D,Y,pe,Ce,la,Ge,ut,Tt))return}}_convertFromCellCoord(D){return(D-this.padding)/this.scale}_convertToCellCoord(D){return Math.max(0,Math.min(this.d-1,Math.floor(D*this.scale)+this.padding))}toArrayBuffer(){if(this.arrayBuffer)return this.arrayBuffer;let D=this.cells,Y=3+this.cells.length+1+1,pe=0;for(let Ge=0;Ge=0)continue;let Ge=q[Ue];Ce[Ue]=vi[Y].shallow.indexOf(Ue)>=0?Ge:Jn(Ge,D)}q instanceof Error&&(Ce.message=q.message)}if(Ce.$name)throw new Error("$name property is reserved for worker serialization logic.");return Y!=="Object"&&(Ce.$name=Y),Ce}function no(q){if(Wn(q))return q;if(Array.isArray(q))return q.map(no);if(typeof q!="object")throw new Error("can't deserialize object of type "+typeof q);let D=Kn(q)||"Object";if(!vi[D])throw new Error(`can't deserialize unregistered class ${D}`);let{klass:Y}=vi[D];if(!Y)throw new Error(`can't deserialize unregistered class ${D}`);if(Y.deserialize)return Y.deserialize(q);let pe=Object.create(Y.prototype);for(let Ce of Object.keys(q)){if(Ce==="$name")continue;let Ue=q[Ce];pe[Ce]=vi[D].shallow.indexOf(Ce)>=0?Ue:no(Ue)}return pe}class en{constructor(){this.first=!0}update(D,Y){let pe=Math.floor(D);return this.first?(this.first=!1,this.lastIntegerZoom=pe,this.lastIntegerZoomTime=0,this.lastZoom=D,this.lastFloorZoom=pe,!0):(this.lastFloorZoom>pe?(this.lastIntegerZoom=pe+1,this.lastIntegerZoomTime=Y):this.lastFloorZoomq>=128&&q<=255,"Hangul Jamo":q=>q>=4352&&q<=4607,Khmer:q=>q>=6016&&q<=6143,"General Punctuation":q=>q>=8192&&q<=8303,"Letterlike Symbols":q=>q>=8448&&q<=8527,"Number Forms":q=>q>=8528&&q<=8591,"Miscellaneous Technical":q=>q>=8960&&q<=9215,"Control Pictures":q=>q>=9216&&q<=9279,"Optical Character Recognition":q=>q>=9280&&q<=9311,"Enclosed Alphanumerics":q=>q>=9312&&q<=9471,"Geometric Shapes":q=>q>=9632&&q<=9727,"Miscellaneous Symbols":q=>q>=9728&&q<=9983,"Miscellaneous Symbols and Arrows":q=>q>=11008&&q<=11263,"Ideographic Description Characters":q=>q>=12272&&q<=12287,"CJK Symbols and Punctuation":q=>q>=12288&&q<=12351,Katakana:q=>q>=12448&&q<=12543,Kanbun:q=>q>=12688&&q<=12703,"CJK Strokes":q=>q>=12736&&q<=12783,"Enclosed CJK Letters and Months":q=>q>=12800&&q<=13055,"CJK Compatibility":q=>q>=13056&&q<=13311,"Yijing Hexagram Symbols":q=>q>=19904&&q<=19967,"Private Use Area":q=>q>=57344&&q<=63743,"Vertical Forms":q=>q>=65040&&q<=65055,"CJK Compatibility Forms":q=>q>=65072&&q<=65103,"Small Form Variants":q=>q>=65104&&q<=65135,"Halfwidth and Fullwidth Forms":q=>q>=65280&&q<=65519};function co(q){for(let D of q)if(vs(D.charCodeAt(0)))return!0;return!1}function Wo(q){for(let D of q)if(!Ms(D.charCodeAt(0)))return!1;return!0}function bs(q){let D=q.map(Y=>{try{return new RegExp(`\\p{sc=${Y}}`,"u").source}catch{return null}}).filter(Y=>Y);return new RegExp(D.join("|"),"u")}let Xs=bs(["Arab","Dupl","Mong","Ougr","Syrc"]);function Ms(q){return!Xs.test(String.fromCodePoint(q))}let Hs=bs(["Bopo","Hani","Hira","Kana","Kits","Nshu","Tang","Yiii"]);function vs(q){return!(q!==746&&q!==747&&(q<4352||!(Ri["CJK Compatibility Forms"](q)&&!(q>=65097&&q<=65103)||Ri["CJK Compatibility"](q)||Ri["CJK Strokes"](q)||!(!Ri["CJK Symbols and Punctuation"](q)||q>=12296&&q<=12305||q>=12308&&q<=12319||q===12336)||Ri["Enclosed CJK Letters and Months"](q)||Ri["Ideographic Description Characters"](q)||Ri.Kanbun(q)||Ri.Katakana(q)&&q!==12540||!(!Ri["Halfwidth and Fullwidth Forms"](q)||q===65288||q===65289||q===65293||q>=65306&&q<=65310||q===65339||q===65341||q===65343||q>=65371&&q<=65503||q===65507||q>=65512&&q<=65519)||!(!Ri["Small Form Variants"](q)||q>=65112&&q<=65118||q>=65123&&q<=65126)||Ri["Vertical Forms"](q)||Ri["Yijing Hexagram Symbols"](q)||new RegExp("\\p{sc=Cans}","u").test(String.fromCodePoint(q))||new RegExp("\\p{sc=Hang}","u").test(String.fromCodePoint(q))||Hs.test(String.fromCodePoint(q)))))}function Il(q){return!(vs(q)||function(D){return!!(Ri["Latin-1 Supplement"](D)&&(D===167||D===169||D===174||D===177||D===188||D===189||D===190||D===215||D===247)||Ri["General Punctuation"](D)&&(D===8214||D===8224||D===8225||D===8240||D===8241||D===8251||D===8252||D===8258||D===8263||D===8264||D===8265||D===8273)||Ri["Letterlike Symbols"](D)||Ri["Number Forms"](D)||Ri["Miscellaneous Technical"](D)&&(D>=8960&&D<=8967||D>=8972&&D<=8991||D>=8996&&D<=9e3||D===9003||D>=9085&&D<=9114||D>=9150&&D<=9165||D===9167||D>=9169&&D<=9179||D>=9186&&D<=9215)||Ri["Control Pictures"](D)&&D!==9251||Ri["Optical Character Recognition"](D)||Ri["Enclosed Alphanumerics"](D)||Ri["Geometric Shapes"](D)||Ri["Miscellaneous Symbols"](D)&&!(D>=9754&&D<=9759)||Ri["Miscellaneous Symbols and Arrows"](D)&&(D>=11026&&D<=11055||D>=11088&&D<=11097||D>=11192&&D<=11243)||Ri["CJK Symbols and Punctuation"](D)||Ri.Katakana(D)||Ri["Private Use Area"](D)||Ri["CJK Compatibility Forms"](D)||Ri["Small Form Variants"](D)||Ri["Halfwidth and Fullwidth Forms"](D)||D===8734||D===8756||D===8757||D>=9984&&D<=10087||D>=10102&&D<=10131||D===65532||D===65533)}(q))}let fl=bs(["Adlm","Arab","Armi","Avst","Chrs","Cprt","Egyp","Elym","Gara","Hatr","Hebr","Hung","Khar","Lydi","Mand","Mani","Mend","Merc","Mero","Narb","Nbat","Nkoo","Orkh","Palm","Phli","Phlp","Phnx","Prti","Rohg","Samr","Sarb","Sogo","Syrc","Thaa","Todr","Yezi"]);function tl(q){return fl.test(String.fromCodePoint(q))}function Ln(q,D){return!(!D&&tl(q)||q>=2304&&q<=3583||q>=3840&&q<=4255||Ri.Khmer(q))}function Ao(q){for(let D of q)if(tl(D.charCodeAt(0)))return!0;return!1}let js=new class{constructor(){this.applyArabicShaping=null,this.processBidirectionalText=null,this.processStyledBidirectionalText=null,this.pluginStatus="unavailable",this.pluginURL=null}setState(q){this.pluginStatus=q.pluginStatus,this.pluginURL=q.pluginURL}getState(){return{pluginStatus:this.pluginStatus,pluginURL:this.pluginURL}}setMethods(q){this.applyArabicShaping=q.applyArabicShaping,this.processBidirectionalText=q.processBidirectionalText,this.processStyledBidirectionalText=q.processStyledBidirectionalText}isParsed(){return this.applyArabicShaping!=null&&this.processBidirectionalText!=null&&this.processStyledBidirectionalText!=null}getPluginURL(){return this.pluginURL}getRTLTextPluginStatus(){return this.pluginStatus}};class Ts{constructor(D,Y){this.zoom=D,Y?(this.now=Y.now,this.fadeDuration=Y.fadeDuration,this.zoomHistory=Y.zoomHistory,this.transition=Y.transition):(this.now=0,this.fadeDuration=0,this.zoomHistory=new en,this.transition={})}isSupportedScript(D){return function(Y,pe){for(let Ce of Y)if(!Ln(Ce.charCodeAt(0),pe))return!1;return!0}(D,js.getRTLTextPluginStatus()==="loaded")}crossFadingFactor(){return this.fadeDuration===0?1:Math.min((this.now-this.zoomHistory.lastIntegerZoomTime)/this.fadeDuration,1)}getCrossfadeParameters(){let D=this.zoom,Y=D-Math.floor(D),pe=this.crossFadingFactor();return D>this.zoomHistory.lastIntegerZoom?{fromScale:2,toScale:1,t:Y+(1-Y)*pe}:{fromScale:.5,toScale:1,t:1-(1-pe)*Y}}}class nu{constructor(D,Y){this.property=D,this.value=Y,this.expression=function(pe,Ce){if(Kf(pe))return new xl(pe,Ce);if(xc(pe)){let Ue=vu(pe,Ce);if(Ue.result==="error")throw new Error(Ue.value.map(Ge=>`${Ge.key}: ${Ge.message}`).join(", "));return Ue.value}{let Ue=pe;return Ce.type==="color"&&typeof pe=="string"?Ue=Ut.parse(pe):Ce.type!=="padding"||typeof pe!="number"&&!Array.isArray(pe)?Ce.type==="variableAnchorOffsetCollection"&&Array.isArray(pe)&&(Ue=Fa.parse(pe)):Ue=Xr.parse(pe),{kind:"constant",evaluate:()=>Ue}}}(Y===void 0?D.specification.default:Y,D.specification)}isDataDriven(){return this.expression.kind==="source"||this.expression.kind==="composite"}possiblyEvaluate(D,Y,pe){return this.property.possiblyEvaluate(this,D,Y,pe)}}class Pu{constructor(D){this.property=D,this.value=new nu(D,void 0)}transitioned(D,Y){return new tf(this.property,this.value,Y,E({},D.transition,this.transition),D.now)}untransitioned(){return new tf(this.property,this.value,null,{},0)}}class ec{constructor(D){this._properties=D,this._values=Object.create(D.defaultTransitionablePropertyValues)}getValue(D){return u(this._values[D].value.value)}setValue(D,Y){Object.prototype.hasOwnProperty.call(this._values,D)||(this._values[D]=new Pu(this._values[D].property)),this._values[D].value=new nu(this._values[D].property,Y===null?void 0:u(Y))}getTransition(D){return u(this._values[D].transition)}setTransition(D,Y){Object.prototype.hasOwnProperty.call(this._values,D)||(this._values[D]=new Pu(this._values[D].property)),this._values[D].transition=u(Y)||void 0}serialize(){let D={};for(let Y of Object.keys(this._values)){let pe=this.getValue(Y);pe!==void 0&&(D[Y]=pe);let Ce=this.getTransition(Y);Ce!==void 0&&(D[`${Y}-transition`]=Ce)}return D}transitioned(D,Y){let pe=new yu(this._properties);for(let Ce of Object.keys(this._values))pe._values[Ce]=this._values[Ce].transitioned(D,Y._values[Ce]);return pe}untransitioned(){let D=new yu(this._properties);for(let Y of Object.keys(this._values))D._values[Y]=this._values[Y].untransitioned();return D}}class tf{constructor(D,Y,pe,Ce,Ue){this.property=D,this.value=Y,this.begin=Ue+Ce.delay||0,this.end=this.begin+Ce.duration||0,D.specification.transition&&(Ce.delay||Ce.duration)&&(this.prior=pe)}possiblyEvaluate(D,Y,pe){let Ce=D.now||0,Ue=this.value.possiblyEvaluate(D,Y,pe),Ge=this.prior;if(Ge){if(Ce>this.end)return this.prior=null,Ue;if(this.value.isDataDriven())return this.prior=null,Ue;if(Ce=1)return 1;let Ft=Tt*Tt,$t=Ft*Tt;return 4*(Tt<.5?$t:3*(Tt-Ft)+$t-.75)}(ut))}}return Ue}}class yu{constructor(D){this._properties=D,this._values=Object.create(D.defaultTransitioningPropertyValues)}possiblyEvaluate(D,Y,pe){let Ce=new Ac(this._properties);for(let Ue of Object.keys(this._values))Ce._values[Ue]=this._values[Ue].possiblyEvaluate(D,Y,pe);return Ce}hasTransition(){for(let D of Object.keys(this._values))if(this._values[D].prior)return!0;return!1}}class Bc{constructor(D){this._properties=D,this._values=Object.create(D.defaultPropertyValues)}hasValue(D){return this._values[D].value!==void 0}getValue(D){return u(this._values[D].value)}setValue(D,Y){this._values[D]=new nu(this._values[D].property,Y===null?void 0:u(Y))}serialize(){let D={};for(let Y of Object.keys(this._values)){let pe=this.getValue(Y);pe!==void 0&&(D[Y]=pe)}return D}possiblyEvaluate(D,Y,pe){let Ce=new Ac(this._properties);for(let Ue of Object.keys(this._values))Ce._values[Ue]=this._values[Ue].possiblyEvaluate(D,Y,pe);return Ce}}class Iu{constructor(D,Y,pe){this.property=D,this.value=Y,this.parameters=pe}isConstant(){return this.value.kind==="constant"}constantOr(D){return this.value.kind==="constant"?this.value.value:D}evaluate(D,Y,pe,Ce){return this.property.evaluate(this.value,this.parameters,D,Y,pe,Ce)}}class Ac{constructor(D){this._properties=D,this._values=Object.create(D.defaultPossiblyEvaluatedValues)}get(D){return this._values[D]}}class ro{constructor(D){this.specification=D}possiblyEvaluate(D,Y){if(D.isDataDriven())throw new Error("Value should not be data driven");return D.expression.evaluate(Y)}interpolate(D,Y,pe){let Ce=$n[this.specification.type];return Ce?Ce(D,Y,pe):D}}class Po{constructor(D,Y){this.specification=D,this.overrides=Y}possiblyEvaluate(D,Y,pe,Ce){return new Iu(this,D.expression.kind==="constant"||D.expression.kind==="camera"?{kind:"constant",value:D.expression.evaluate(Y,null,{},pe,Ce)}:D.expression,Y)}interpolate(D,Y,pe){if(D.value.kind!=="constant"||Y.value.kind!=="constant")return D;if(D.value.value===void 0||Y.value.value===void 0)return new Iu(this,{kind:"constant",value:void 0},D.parameters);let Ce=$n[this.specification.type];if(Ce){let Ue=Ce(D.value.value,Y.value.value,pe);return new Iu(this,{kind:"constant",value:Ue},D.parameters)}return D}evaluate(D,Y,pe,Ce,Ue,Ge){return D.kind==="constant"?D.value:D.evaluate(Y,pe,Ce,Ue,Ge)}}class Nc extends Po{possiblyEvaluate(D,Y,pe,Ce){if(D.value===void 0)return new Iu(this,{kind:"constant",value:void 0},Y);if(D.expression.kind==="constant"){let Ue=D.expression.evaluate(Y,null,{},pe,Ce),Ge=D.property.specification.type==="resolvedImage"&&typeof Ue!="string"?Ue.name:Ue,ut=this._calculate(Ge,Ge,Ge,Y);return new Iu(this,{kind:"constant",value:ut},Y)}if(D.expression.kind==="camera"){let Ue=this._calculate(D.expression.evaluate({zoom:Y.zoom-1}),D.expression.evaluate({zoom:Y.zoom}),D.expression.evaluate({zoom:Y.zoom+1}),Y);return new Iu(this,{kind:"constant",value:Ue},Y)}return new Iu(this,D.expression,Y)}evaluate(D,Y,pe,Ce,Ue,Ge){if(D.kind==="source"){let ut=D.evaluate(Y,pe,Ce,Ue,Ge);return this._calculate(ut,ut,ut,Y)}return D.kind==="composite"?this._calculate(D.evaluate({zoom:Math.floor(Y.zoom)-1},pe,Ce),D.evaluate({zoom:Math.floor(Y.zoom)},pe,Ce),D.evaluate({zoom:Math.floor(Y.zoom)+1},pe,Ce),Y):D.value}_calculate(D,Y,pe,Ce){return Ce.zoom>Ce.zoomHistory.lastIntegerZoom?{from:D,to:Y}:{from:pe,to:Y}}interpolate(D){return D}}class hc{constructor(D){this.specification=D}possiblyEvaluate(D,Y,pe,Ce){if(D.value!==void 0){if(D.expression.kind==="constant"){let Ue=D.expression.evaluate(Y,null,{},pe,Ce);return this._calculate(Ue,Ue,Ue,Y)}return this._calculate(D.expression.evaluate(new Ts(Math.floor(Y.zoom-1),Y)),D.expression.evaluate(new Ts(Math.floor(Y.zoom),Y)),D.expression.evaluate(new Ts(Math.floor(Y.zoom+1),Y)),Y)}}_calculate(D,Y,pe,Ce){return Ce.zoom>Ce.zoomHistory.lastIntegerZoom?{from:D,to:Y}:{from:pe,to:Y}}interpolate(D){return D}}class pc{constructor(D){this.specification=D}possiblyEvaluate(D,Y,pe,Ce){return!!D.expression.evaluate(Y,null,{},pe,Ce)}interpolate(){return!1}}class Oe{constructor(D){this.properties=D,this.defaultPropertyValues={},this.defaultTransitionablePropertyValues={},this.defaultTransitioningPropertyValues={},this.defaultPossiblyEvaluatedValues={},this.overridableProperties=[];for(let Y in D){let pe=D[Y];pe.specification.overridable&&this.overridableProperties.push(Y);let Ce=this.defaultPropertyValues[Y]=new nu(pe,void 0),Ue=this.defaultTransitionablePropertyValues[Y]=new Pu(pe);this.defaultTransitioningPropertyValues[Y]=Ue.untransitioned(),this.defaultPossiblyEvaluatedValues[Y]=Ce.possiblyEvaluate({})}}}ti("DataDrivenProperty",Po),ti("DataConstantProperty",ro),ti("CrossFadedDataDrivenProperty",Nc),ti("CrossFadedProperty",hc),ti("ColorRampProperty",pc);let R="-transition";class ae extends ee{constructor(D,Y){if(super(),this.id=D.id,this.type=D.type,this._featureFilter={filter:()=>!0,needGeometry:!1},D.type!=="custom"&&(this.metadata=D.metadata,this.minzoom=D.minzoom,this.maxzoom=D.maxzoom,D.type!=="background"&&(this.source=D.source,this.sourceLayer=D["source-layer"],this.filter=D.filter),Y.layout&&(this._unevaluatedLayout=new Bc(Y.layout)),Y.paint)){this._transitionablePaint=new ec(Y.paint);for(let pe in D.paint)this.setPaintProperty(pe,D.paint[pe],{validate:!1});for(let pe in D.layout)this.setLayoutProperty(pe,D.layout[pe],{validate:!1});this._transitioningPaint=this._transitionablePaint.untransitioned(),this.paint=new Ac(Y.paint)}}getCrossfadeParameters(){return this._crossfadeParameters}getLayoutProperty(D){return D==="visibility"?this.visibility:this._unevaluatedLayout.getValue(D)}setLayoutProperty(D,Y,pe={}){Y!=null&&this._validate(Bi,`layers.${this.id}.layout.${D}`,D,Y,pe)||(D!=="visibility"?this._unevaluatedLayout.setValue(D,Y):this.visibility=Y)}getPaintProperty(D){return D.endsWith(R)?this._transitionablePaint.getTransition(D.slice(0,-11)):this._transitionablePaint.getValue(D)}setPaintProperty(D,Y,pe={}){if(Y!=null&&this._validate(ki,`layers.${this.id}.paint.${D}`,D,Y,pe))return!1;if(D.endsWith(R))return this._transitionablePaint.setTransition(D.slice(0,-11),Y||void 0),!1;{let Ce=this._transitionablePaint._values[D],Ue=Ce.property.specification["property-type"]==="cross-faded-data-driven",Ge=Ce.value.isDataDriven(),ut=Ce.value;this._transitionablePaint.setValue(D,Y),this._handleSpecialPaintPropertyUpdate(D);let Tt=this._transitionablePaint._values[D].value;return Tt.isDataDriven()||Ge||Ue||this._handleOverridablePaintPropertyUpdate(D,ut,Tt)}}_handleSpecialPaintPropertyUpdate(D){}_handleOverridablePaintPropertyUpdate(D,Y,pe){return!1}isHidden(D){return!!(this.minzoom&&D=this.maxzoom)||this.visibility==="none"}updateTransitions(D){this._transitioningPaint=this._transitionablePaint.transitioned(D,this._transitioningPaint)}hasTransition(){return this._transitioningPaint.hasTransition()}recalculate(D,Y){D.getCrossfadeParameters&&(this._crossfadeParameters=D.getCrossfadeParameters()),this._unevaluatedLayout&&(this.layout=this._unevaluatedLayout.possiblyEvaluate(D,void 0,Y)),this.paint=this._transitioningPaint.possiblyEvaluate(D,void 0,Y)}serialize(){let D={id:this.id,type:this.type,source:this.source,"source-layer":this.sourceLayer,metadata:this.metadata,minzoom:this.minzoom,maxzoom:this.maxzoom,filter:this.filter,layout:this._unevaluatedLayout&&this._unevaluatedLayout.serialize(),paint:this._transitionablePaint&&this._transitionablePaint.serialize()};return this.visibility&&(D.layout=D.layout||{},D.layout.visibility=this.visibility),d(D,(Y,pe)=>!(Y===void 0||pe==="layout"&&!Object.keys(Y).length||pe==="paint"&&!Object.keys(Y).length))}_validate(D,Y,pe,Ce,Ue={}){return(!Ue||Ue.validate!==!1)&&li(this,D.call(Ka,{key:Y,layerType:this.type,objectKey:pe,value:Ce,styleSpec:ie,style:{glyphs:!0,sprite:!0}}))}is3D(){return!1}isTileClipped(){return!1}hasOffscreenPass(){return!1}resize(){}isStateDependent(){for(let D in this.paint._values){let Y=this.paint.get(D);if(Y instanceof Iu&&Eu(Y.property.specification)&&(Y.value.kind==="source"||Y.value.kind==="composite")&&Y.value.isStateDependent)return!0}return!1}}let we={Int8:Int8Array,Uint8:Uint8Array,Int16:Int16Array,Uint16:Uint16Array,Int32:Int32Array,Uint32:Uint32Array,Float32:Float32Array};class Se{constructor(D,Y){this._structArray=D,this._pos1=Y*this.size,this._pos2=this._pos1/2,this._pos4=this._pos1/4,this._pos8=this._pos1/8}}class De{constructor(){this.isTransferred=!1,this.capacity=-1,this.resize(0)}static serialize(D,Y){return D._trim(),Y&&(D.isTransferred=!0,Y.push(D.arrayBuffer)),{length:D.length,arrayBuffer:D.arrayBuffer}}static deserialize(D){let Y=Object.create(this.prototype);return Y.arrayBuffer=D.arrayBuffer,Y.length=D.length,Y.capacity=D.arrayBuffer.byteLength/Y.bytesPerElement,Y._refreshViews(),Y}_trim(){this.length!==this.capacity&&(this.capacity=this.length,this.arrayBuffer=this.arrayBuffer.slice(0,this.length*this.bytesPerElement),this._refreshViews())}clear(){this.length=0}resize(D){this.reserve(D),this.length=D}reserve(D){if(D>this.capacity){this.capacity=Math.max(D,Math.floor(5*this.capacity),128),this.arrayBuffer=new ArrayBuffer(this.capacity*this.bytesPerElement);let Y=this.uint8;this._refreshViews(),Y&&this.uint8.set(Y)}}_refreshViews(){throw new Error("_refreshViews() must be implemented by each concrete StructArray layout")}}function ft(q,D=1){let Y=0,pe=0;return{members:q.map(Ce=>{let Ue=we[Ce.type].BYTES_PER_ELEMENT,Ge=Y=bt(Y,Math.max(D,Ue)),ut=Ce.components||1;return pe=Math.max(pe,Ue),Y+=Ue*ut,{name:Ce.name,type:Ce.type,components:ut,offset:Ge}}),size:bt(Y,Math.max(pe,D)),alignment:D}}function bt(q,D){return Math.ceil(q/D)*D}class Dt extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y){let pe=this.length;return this.resize(pe+1),this.emplace(pe,D,Y)}emplace(D,Y,pe){let Ce=2*D;return this.int16[Ce+0]=Y,this.int16[Ce+1]=pe,D}}Dt.prototype.bytesPerElement=4,ti("StructArrayLayout2i4",Dt);class Yt extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe){let Ce=this.length;return this.resize(Ce+1),this.emplace(Ce,D,Y,pe)}emplace(D,Y,pe,Ce){let Ue=3*D;return this.int16[Ue+0]=Y,this.int16[Ue+1]=pe,this.int16[Ue+2]=Ce,D}}Yt.prototype.bytesPerElement=6,ti("StructArrayLayout3i6",Yt);class cr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce){let Ue=this.length;return this.resize(Ue+1),this.emplace(Ue,D,Y,pe,Ce)}emplace(D,Y,pe,Ce,Ue){let Ge=4*D;return this.int16[Ge+0]=Y,this.int16[Ge+1]=pe,this.int16[Ge+2]=Ce,this.int16[Ge+3]=Ue,D}}cr.prototype.bytesPerElement=8,ti("StructArrayLayout4i8",cr);class hr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge){let ut=this.length;return this.resize(ut+1),this.emplace(ut,D,Y,pe,Ce,Ue,Ge)}emplace(D,Y,pe,Ce,Ue,Ge,ut){let Tt=6*D;return this.int16[Tt+0]=Y,this.int16[Tt+1]=pe,this.int16[Tt+2]=Ce,this.int16[Tt+3]=Ue,this.int16[Tt+4]=Ge,this.int16[Tt+5]=ut,D}}hr.prototype.bytesPerElement=12,ti("StructArrayLayout2i4i12",hr);class jr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge){let ut=this.length;return this.resize(ut+1),this.emplace(ut,D,Y,pe,Ce,Ue,Ge)}emplace(D,Y,pe,Ce,Ue,Ge,ut){let Tt=4*D,Ft=8*D;return this.int16[Tt+0]=Y,this.int16[Tt+1]=pe,this.uint8[Ft+4]=Ce,this.uint8[Ft+5]=Ue,this.uint8[Ft+6]=Ge,this.uint8[Ft+7]=ut,D}}jr.prototype.bytesPerElement=8,ti("StructArrayLayout2i4ub8",jr);class ea extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D,Y){let pe=this.length;return this.resize(pe+1),this.emplace(pe,D,Y)}emplace(D,Y,pe){let Ce=2*D;return this.float32[Ce+0]=Y,this.float32[Ce+1]=pe,D}}ea.prototype.bytesPerElement=8,ti("StructArrayLayout2f8",ea);class qe extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t){let lr=this.length;return this.resize(lr+1),this.emplace(lr,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t)}emplace(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr){let Ar=10*D;return this.uint16[Ar+0]=Y,this.uint16[Ar+1]=pe,this.uint16[Ar+2]=Ce,this.uint16[Ar+3]=Ue,this.uint16[Ar+4]=Ge,this.uint16[Ar+5]=ut,this.uint16[Ar+6]=Tt,this.uint16[Ar+7]=Ft,this.uint16[Ar+8]=$t,this.uint16[Ar+9]=lr,D}}qe.prototype.bytesPerElement=20,ti("StructArrayLayout10ui20",qe);class Je extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar){let zr=this.length;return this.resize(zr+1),this.emplace(zr,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar)}emplace(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr){let Kr=12*D;return this.int16[Kr+0]=Y,this.int16[Kr+1]=pe,this.int16[Kr+2]=Ce,this.int16[Kr+3]=Ue,this.uint16[Kr+4]=Ge,this.uint16[Kr+5]=ut,this.uint16[Kr+6]=Tt,this.uint16[Kr+7]=Ft,this.int16[Kr+8]=$t,this.int16[Kr+9]=lr,this.int16[Kr+10]=Ar,this.int16[Kr+11]=zr,D}}Je.prototype.bytesPerElement=24,ti("StructArrayLayout4i4ui4i24",Je);class ot extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D,Y,pe){let Ce=this.length;return this.resize(Ce+1),this.emplace(Ce,D,Y,pe)}emplace(D,Y,pe,Ce){let Ue=3*D;return this.float32[Ue+0]=Y,this.float32[Ue+1]=pe,this.float32[Ue+2]=Ce,D}}ot.prototype.bytesPerElement=12,ti("StructArrayLayout3f12",ot);class ht extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer)}emplaceBack(D){let Y=this.length;return this.resize(Y+1),this.emplace(Y,D)}emplace(D,Y){return this.uint32[1*D+0]=Y,D}}ht.prototype.bytesPerElement=4,ti("StructArrayLayout1ul4",ht);class At extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft){let $t=this.length;return this.resize($t+1),this.emplace($t,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft)}emplace(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t){let lr=10*D,Ar=5*D;return this.int16[lr+0]=Y,this.int16[lr+1]=pe,this.int16[lr+2]=Ce,this.int16[lr+3]=Ue,this.int16[lr+4]=Ge,this.int16[lr+5]=ut,this.uint32[Ar+3]=Tt,this.uint16[lr+8]=Ft,this.uint16[lr+9]=$t,D}}At.prototype.bytesPerElement=20,ti("StructArrayLayout6i1ul2ui20",At);class _t extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge){let ut=this.length;return this.resize(ut+1),this.emplace(ut,D,Y,pe,Ce,Ue,Ge)}emplace(D,Y,pe,Ce,Ue,Ge,ut){let Tt=6*D;return this.int16[Tt+0]=Y,this.int16[Tt+1]=pe,this.int16[Tt+2]=Ce,this.int16[Tt+3]=Ue,this.int16[Tt+4]=Ge,this.int16[Tt+5]=ut,D}}_t.prototype.bytesPerElement=12,ti("StructArrayLayout2i2i2i12",_t);class Pt extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue){let Ge=this.length;return this.resize(Ge+1),this.emplace(Ge,D,Y,pe,Ce,Ue)}emplace(D,Y,pe,Ce,Ue,Ge){let ut=4*D,Tt=8*D;return this.float32[ut+0]=Y,this.float32[ut+1]=pe,this.float32[ut+2]=Ce,this.int16[Tt+6]=Ue,this.int16[Tt+7]=Ge,D}}Pt.prototype.bytesPerElement=16,ti("StructArrayLayout2f1f2i16",Pt);class er extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge){let ut=this.length;return this.resize(ut+1),this.emplace(ut,D,Y,pe,Ce,Ue,Ge)}emplace(D,Y,pe,Ce,Ue,Ge,ut){let Tt=16*D,Ft=4*D,$t=8*D;return this.uint8[Tt+0]=Y,this.uint8[Tt+1]=pe,this.float32[Ft+1]=Ce,this.float32[Ft+2]=Ue,this.int16[$t+6]=Ge,this.int16[$t+7]=ut,D}}er.prototype.bytesPerElement=16,ti("StructArrayLayout2ub2f2i16",er);class nr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D,Y,pe){let Ce=this.length;return this.resize(Ce+1),this.emplace(Ce,D,Y,pe)}emplace(D,Y,pe,Ce){let Ue=3*D;return this.uint16[Ue+0]=Y,this.uint16[Ue+1]=pe,this.uint16[Ue+2]=Ce,D}}nr.prototype.bytesPerElement=6,ti("StructArrayLayout3ui6",nr);class pr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja){let gi=this.length;return this.resize(gi+1),this.emplace(gi,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja)}emplace(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja,gi){let ei=24*D,hi=12*D,Ei=48*D;return this.int16[ei+0]=Y,this.int16[ei+1]=pe,this.uint16[ei+2]=Ce,this.uint16[ei+3]=Ue,this.uint32[hi+2]=Ge,this.uint32[hi+3]=ut,this.uint32[hi+4]=Tt,this.uint16[ei+10]=Ft,this.uint16[ei+11]=$t,this.uint16[ei+12]=lr,this.float32[hi+7]=Ar,this.float32[hi+8]=zr,this.uint8[Ei+36]=Kr,this.uint8[Ei+37]=la,this.uint8[Ei+38]=za,this.uint32[hi+10]=ja,this.int16[ei+22]=gi,D}}pr.prototype.bytesPerElement=48,ti("StructArrayLayout2i2ui3ul3ui2f3ub1ul1i48",pr);class Sr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.int16=new Int16Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja,gi,ei,hi,Ei,En,fo,ss,eo,vn,Uo,Mo){let xo=this.length;return this.resize(xo+1),this.emplace(xo,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja,gi,ei,hi,Ei,En,fo,ss,eo,vn,Uo,Mo)}emplace(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la,za,ja,gi,ei,hi,Ei,En,fo,ss,eo,vn,Uo,Mo,xo){let Yi=32*D,Ko=16*D;return this.int16[Yi+0]=Y,this.int16[Yi+1]=pe,this.int16[Yi+2]=Ce,this.int16[Yi+3]=Ue,this.int16[Yi+4]=Ge,this.int16[Yi+5]=ut,this.int16[Yi+6]=Tt,this.int16[Yi+7]=Ft,this.uint16[Yi+8]=$t,this.uint16[Yi+9]=lr,this.uint16[Yi+10]=Ar,this.uint16[Yi+11]=zr,this.uint16[Yi+12]=Kr,this.uint16[Yi+13]=la,this.uint16[Yi+14]=za,this.uint16[Yi+15]=ja,this.uint16[Yi+16]=gi,this.uint16[Yi+17]=ei,this.uint16[Yi+18]=hi,this.uint16[Yi+19]=Ei,this.uint16[Yi+20]=En,this.uint16[Yi+21]=fo,this.uint16[Yi+22]=ss,this.uint32[Ko+12]=eo,this.float32[Ko+13]=vn,this.float32[Ko+14]=Uo,this.uint16[Yi+30]=Mo,this.uint16[Yi+31]=xo,D}}Sr.prototype.bytesPerElement=64,ti("StructArrayLayout8i15ui1ul2f2ui64",Sr);class Wr extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D){let Y=this.length;return this.resize(Y+1),this.emplace(Y,D)}emplace(D,Y){return this.float32[1*D+0]=Y,D}}Wr.prototype.bytesPerElement=4,ti("StructArrayLayout1f4",Wr);class ha extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D,Y,pe){let Ce=this.length;return this.resize(Ce+1),this.emplace(Ce,D,Y,pe)}emplace(D,Y,pe,Ce){let Ue=3*D;return this.uint16[6*D+0]=Y,this.float32[Ue+1]=pe,this.float32[Ue+2]=Ce,D}}ha.prototype.bytesPerElement=12,ti("StructArrayLayout1ui2f12",ha);class ga extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint32=new Uint32Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D,Y,pe){let Ce=this.length;return this.resize(Ce+1),this.emplace(Ce,D,Y,pe)}emplace(D,Y,pe,Ce){let Ue=4*D;return this.uint32[2*D+0]=Y,this.uint16[Ue+2]=pe,this.uint16[Ue+3]=Ce,D}}ga.prototype.bytesPerElement=8,ti("StructArrayLayout1ul2ui8",ga);class Pa extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D,Y){let pe=this.length;return this.resize(pe+1),this.emplace(pe,D,Y)}emplace(D,Y,pe){let Ce=2*D;return this.uint16[Ce+0]=Y,this.uint16[Ce+1]=pe,D}}Pa.prototype.bytesPerElement=4,ti("StructArrayLayout2ui4",Pa);class Ja extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.uint16=new Uint16Array(this.arrayBuffer)}emplaceBack(D){let Y=this.length;return this.resize(Y+1),this.emplace(Y,D)}emplace(D,Y){return this.uint16[1*D+0]=Y,D}}Ja.prototype.bytesPerElement=2,ti("StructArrayLayout1ui2",Ja);class di extends De{_refreshViews(){this.uint8=new Uint8Array(this.arrayBuffer),this.float32=new Float32Array(this.arrayBuffer)}emplaceBack(D,Y,pe,Ce){let Ue=this.length;return this.resize(Ue+1),this.emplace(Ue,D,Y,pe,Ce)}emplace(D,Y,pe,Ce,Ue){let Ge=4*D;return this.float32[Ge+0]=Y,this.float32[Ge+1]=pe,this.float32[Ge+2]=Ce,this.float32[Ge+3]=Ue,D}}di.prototype.bytesPerElement=16,ti("StructArrayLayout4f16",di);class pi extends Se{get anchorPointX(){return this._structArray.int16[this._pos2+0]}get anchorPointY(){return this._structArray.int16[this._pos2+1]}get x1(){return this._structArray.int16[this._pos2+2]}get y1(){return this._structArray.int16[this._pos2+3]}get x2(){return this._structArray.int16[this._pos2+4]}get y2(){return this._structArray.int16[this._pos2+5]}get featureIndex(){return this._structArray.uint32[this._pos4+3]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+8]}get bucketIndex(){return this._structArray.uint16[this._pos2+9]}get anchorPoint(){return new i(this.anchorPointX,this.anchorPointY)}}pi.prototype.size=20;class Ci extends At{get(D){return new pi(this,D)}}ti("CollisionBoxArray",Ci);class $i extends Se{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get glyphStartIndex(){return this._structArray.uint16[this._pos2+2]}get numGlyphs(){return this._structArray.uint16[this._pos2+3]}get vertexStartIndex(){return this._structArray.uint32[this._pos4+2]}get lineStartIndex(){return this._structArray.uint32[this._pos4+3]}get lineLength(){return this._structArray.uint32[this._pos4+4]}get segment(){return this._structArray.uint16[this._pos2+10]}get lowerSize(){return this._structArray.uint16[this._pos2+11]}get upperSize(){return this._structArray.uint16[this._pos2+12]}get lineOffsetX(){return this._structArray.float32[this._pos4+7]}get lineOffsetY(){return this._structArray.float32[this._pos4+8]}get writingMode(){return this._structArray.uint8[this._pos1+36]}get placedOrientation(){return this._structArray.uint8[this._pos1+37]}set placedOrientation(D){this._structArray.uint8[this._pos1+37]=D}get hidden(){return this._structArray.uint8[this._pos1+38]}set hidden(D){this._structArray.uint8[this._pos1+38]=D}get crossTileID(){return this._structArray.uint32[this._pos4+10]}set crossTileID(D){this._structArray.uint32[this._pos4+10]=D}get associatedIconIndex(){return this._structArray.int16[this._pos2+22]}}$i.prototype.size=48;class Bn extends pr{get(D){return new $i(this,D)}}ti("PlacedSymbolArray",Bn);class Sn extends Se{get anchorX(){return this._structArray.int16[this._pos2+0]}get anchorY(){return this._structArray.int16[this._pos2+1]}get rightJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+2]}get centerJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+3]}get leftJustifiedTextSymbolIndex(){return this._structArray.int16[this._pos2+4]}get verticalPlacedTextSymbolIndex(){return this._structArray.int16[this._pos2+5]}get placedIconSymbolIndex(){return this._structArray.int16[this._pos2+6]}get verticalPlacedIconSymbolIndex(){return this._structArray.int16[this._pos2+7]}get key(){return this._structArray.uint16[this._pos2+8]}get textBoxStartIndex(){return this._structArray.uint16[this._pos2+9]}get textBoxEndIndex(){return this._structArray.uint16[this._pos2+10]}get verticalTextBoxStartIndex(){return this._structArray.uint16[this._pos2+11]}get verticalTextBoxEndIndex(){return this._structArray.uint16[this._pos2+12]}get iconBoxStartIndex(){return this._structArray.uint16[this._pos2+13]}get iconBoxEndIndex(){return this._structArray.uint16[this._pos2+14]}get verticalIconBoxStartIndex(){return this._structArray.uint16[this._pos2+15]}get verticalIconBoxEndIndex(){return this._structArray.uint16[this._pos2+16]}get featureIndex(){return this._structArray.uint16[this._pos2+17]}get numHorizontalGlyphVertices(){return this._structArray.uint16[this._pos2+18]}get numVerticalGlyphVertices(){return this._structArray.uint16[this._pos2+19]}get numIconVertices(){return this._structArray.uint16[this._pos2+20]}get numVerticalIconVertices(){return this._structArray.uint16[this._pos2+21]}get useRuntimeCollisionCircles(){return this._structArray.uint16[this._pos2+22]}get crossTileID(){return this._structArray.uint32[this._pos4+12]}set crossTileID(D){this._structArray.uint32[this._pos4+12]=D}get textBoxScale(){return this._structArray.float32[this._pos4+13]}get collisionCircleDiameter(){return this._structArray.float32[this._pos4+14]}get textAnchorOffsetStartIndex(){return this._structArray.uint16[this._pos2+30]}get textAnchorOffsetEndIndex(){return this._structArray.uint16[this._pos2+31]}}Sn.prototype.size=64;class ho extends Sr{get(D){return new Sn(this,D)}}ti("SymbolInstanceArray",ho);class ts extends Wr{getoffsetX(D){return this.float32[1*D+0]}}ti("GlyphOffsetArray",ts);class yo extends Yt{getx(D){return this.int16[3*D+0]}gety(D){return this.int16[3*D+1]}gettileUnitDistanceFromAnchor(D){return this.int16[3*D+2]}}ti("SymbolLineVertexArray",yo);class Vo extends Se{get textAnchor(){return this._structArray.uint16[this._pos2+0]}get textOffset0(){return this._structArray.float32[this._pos4+1]}get textOffset1(){return this._structArray.float32[this._pos4+2]}}Vo.prototype.size=12;class ls extends ha{get(D){return new Vo(this,D)}}ti("TextAnchorOffsetArray",ls);class rl extends Se{get featureIndex(){return this._structArray.uint32[this._pos4+0]}get sourceLayerIndex(){return this._structArray.uint16[this._pos2+2]}get bucketIndex(){return this._structArray.uint16[this._pos2+3]}}rl.prototype.size=8;class Ys extends ga{get(D){return new rl(this,D)}}ti("FeatureIndexArray",Ys);class Zo extends Dt{}class Go extends Dt{}class Rl extends Dt{}class Xl extends hr{}class qu extends jr{}class fu extends ea{}class bl extends qe{}class ou extends Je{}class Sc extends ot{}class ql extends ht{}class Hl extends _t{}class de extends er{}class Re extends nr{}class $e extends Pa{}let pt=ft([{name:"a_pos",components:2,type:"Int16"}],4),{members:vt}=pt;class wt{constructor(D=[]){this.segments=D}prepareSegment(D,Y,pe,Ce){let Ue=this.segments[this.segments.length-1];return D>wt.MAX_VERTEX_ARRAY_LENGTH&&f(`Max vertices per segment is ${wt.MAX_VERTEX_ARRAY_LENGTH}: bucket requested ${D}`),(!Ue||Ue.vertexLength+D>wt.MAX_VERTEX_ARRAY_LENGTH||Ue.sortKey!==Ce)&&(Ue={vertexOffset:Y.length,primitiveOffset:pe.length,vertexLength:0,primitiveLength:0},Ce!==void 0&&(Ue.sortKey=Ce),this.segments.push(Ue)),Ue}get(){return this.segments}destroy(){for(let D of this.segments)for(let Y in D.vaos)D.vaos[Y].destroy()}static simpleSegment(D,Y,pe,Ce){return new wt([{vertexOffset:D,primitiveOffset:Y,vertexLength:pe,primitiveLength:Ce,vaos:{},sortKey:0}])}}function Jt(q,D){return 256*(q=w(Math.floor(q),0,255))+w(Math.floor(D),0,255)}wt.MAX_VERTEX_ARRAY_LENGTH=Math.pow(2,16)-1,ti("SegmentVector",wt);let Rt=ft([{name:"a_pattern_from",components:4,type:"Uint16"},{name:"a_pattern_to",components:4,type:"Uint16"},{name:"a_pixel_ratio_from",components:1,type:"Uint16"},{name:"a_pixel_ratio_to",components:1,type:"Uint16"}]);var or={exports:{}},Dr={exports:{}};Dr.exports=function(q,D){var Y,pe,Ce,Ue,Ge,ut,Tt,Ft;for(pe=q.length-(Y=3&q.length),Ce=D,Ge=3432918353,ut=461845907,Ft=0;Ft>>16)*Ge&65535)<<16)&4294967295)<<15|Tt>>>17))*ut+(((Tt>>>16)*ut&65535)<<16)&4294967295)<<13|Ce>>>19))+((5*(Ce>>>16)&65535)<<16)&4294967295))+((58964+(Ue>>>16)&65535)<<16);switch(Tt=0,Y){case 3:Tt^=(255&q.charCodeAt(Ft+2))<<16;case 2:Tt^=(255&q.charCodeAt(Ft+1))<<8;case 1:Ce^=Tt=(65535&(Tt=(Tt=(65535&(Tt^=255&q.charCodeAt(Ft)))*Ge+(((Tt>>>16)*Ge&65535)<<16)&4294967295)<<15|Tt>>>17))*ut+(((Tt>>>16)*ut&65535)<<16)&4294967295}return Ce^=q.length,Ce=2246822507*(65535&(Ce^=Ce>>>16))+((2246822507*(Ce>>>16)&65535)<<16)&4294967295,Ce=3266489909*(65535&(Ce^=Ce>>>13))+((3266489909*(Ce>>>16)&65535)<<16)&4294967295,(Ce^=Ce>>>16)>>>0};var Or=Dr.exports,va={exports:{}};va.exports=function(q,D){for(var Y,pe=q.length,Ce=D^pe,Ue=0;pe>=4;)Y=1540483477*(65535&(Y=255&q.charCodeAt(Ue)|(255&q.charCodeAt(++Ue))<<8|(255&q.charCodeAt(++Ue))<<16|(255&q.charCodeAt(++Ue))<<24))+((1540483477*(Y>>>16)&65535)<<16),Ce=1540483477*(65535&Ce)+((1540483477*(Ce>>>16)&65535)<<16)^(Y=1540483477*(65535&(Y^=Y>>>24))+((1540483477*(Y>>>16)&65535)<<16)),pe-=4,++Ue;switch(pe){case 3:Ce^=(255&q.charCodeAt(Ue+2))<<16;case 2:Ce^=(255&q.charCodeAt(Ue+1))<<8;case 1:Ce=1540483477*(65535&(Ce^=255&q.charCodeAt(Ue)))+((1540483477*(Ce>>>16)&65535)<<16)}return Ce=1540483477*(65535&(Ce^=Ce>>>13))+((1540483477*(Ce>>>16)&65535)<<16),(Ce^=Ce>>>15)>>>0};var fa=Or,Va=va.exports;or.exports=fa,or.exports.murmur3=fa,or.exports.murmur2=Va;var Xa=r(or.exports);class _a{constructor(){this.ids=[],this.positions=[],this.indexed=!1}add(D,Y,pe,Ce){this.ids.push(Ra(D)),this.positions.push(Y,pe,Ce)}getPositions(D){if(!this.indexed)throw new Error("Trying to get index, but feature positions are not indexed");let Y=Ra(D),pe=0,Ce=this.ids.length-1;for(;pe>1;this.ids[Ge]>=Y?Ce=Ge:pe=Ge+1}let Ue=[];for(;this.ids[pe]===Y;)Ue.push({index:this.positions[3*pe],start:this.positions[3*pe+1],end:this.positions[3*pe+2]}),pe++;return Ue}static serialize(D,Y){let pe=new Float64Array(D.ids),Ce=new Uint32Array(D.positions);return Na(pe,Ce,0,pe.length-1),Y&&Y.push(pe.buffer,Ce.buffer),{ids:pe,positions:Ce}}static deserialize(D){let Y=new _a;return Y.ids=D.ids,Y.positions=D.positions,Y.indexed=!0,Y}}function Ra(q){let D=+q;return!isNaN(D)&&D<=Number.MAX_SAFE_INTEGER?D:Xa(String(q))}function Na(q,D,Y,pe){for(;Y>1],Ue=Y-1,Ge=pe+1;for(;;){do Ue++;while(q[Ue]Ce);if(Ue>=Ge)break;Qa(q,Ue,Ge),Qa(D,3*Ue,3*Ge),Qa(D,3*Ue+1,3*Ge+1),Qa(D,3*Ue+2,3*Ge+2)}Ge-Y`u_${Ce}`),this.type=pe}setUniform(D,Y,pe){D.set(pe.constantOr(this.value))}getBinding(D,Y,pe){return this.type==="color"?new Ni(D,Y):new Da(D,Y)}}class Vn{constructor(D,Y){this.uniformNames=Y.map(pe=>`u_${pe}`),this.patternFrom=null,this.patternTo=null,this.pixelRatioFrom=1,this.pixelRatioTo=1}setConstantPatternPositions(D,Y){this.pixelRatioFrom=Y.pixelRatio,this.pixelRatioTo=D.pixelRatio,this.patternFrom=Y.tlbr,this.patternTo=D.tlbr}setUniform(D,Y,pe,Ce){let Ue=Ce==="u_pattern_to"?this.patternTo:Ce==="u_pattern_from"?this.patternFrom:Ce==="u_pixel_ratio_to"?this.pixelRatioTo:Ce==="u_pixel_ratio_from"?this.pixelRatioFrom:null;Ue&&D.set(Ue)}getBinding(D,Y,pe){return pe.substr(0,9)==="u_pattern"?new zi(D,Y):new Da(D,Y)}}class No{constructor(D,Y,pe,Ce){this.expression=D,this.type=pe,this.maxValue=0,this.paintVertexAttributes=Y.map(Ue=>({name:`a_${Ue}`,type:"Float32",components:pe==="color"?2:1,offset:0})),this.paintVertexArray=new Ce}populatePaintArray(D,Y,pe,Ce,Ue){let Ge=this.paintVertexArray.length,ut=this.expression.evaluate(new Ts(0),Y,{},Ce,[],Ue);this.paintVertexArray.resize(D),this._setPaintValue(Ge,D,ut)}updatePaintArray(D,Y,pe,Ce){let Ue=this.expression.evaluate({zoom:0},pe,Ce);this._setPaintValue(D,Y,Ue)}_setPaintValue(D,Y,pe){if(this.type==="color"){let Ce=hn(pe);for(let Ue=D;Ue`u_${ut}_t`),this.type=pe,this.useIntegerZoom=Ce,this.zoom=Ue,this.maxValue=0,this.paintVertexAttributes=Y.map(ut=>({name:`a_${ut}`,type:"Float32",components:pe==="color"?4:2,offset:0})),this.paintVertexArray=new Ge}populatePaintArray(D,Y,pe,Ce,Ue){let Ge=this.expression.evaluate(new Ts(this.zoom),Y,{},Ce,[],Ue),ut=this.expression.evaluate(new Ts(this.zoom+1),Y,{},Ce,[],Ue),Tt=this.paintVertexArray.length;this.paintVertexArray.resize(D),this._setPaintValue(Tt,D,Ge,ut)}updatePaintArray(D,Y,pe,Ce){let Ue=this.expression.evaluate({zoom:this.zoom},pe,Ce),Ge=this.expression.evaluate({zoom:this.zoom+1},pe,Ce);this._setPaintValue(D,Y,Ue,Ge)}_setPaintValue(D,Y,pe,Ce){if(this.type==="color"){let Ue=hn(pe),Ge=hn(Ce);for(let ut=D;ut`#define HAS_UNIFORM_${Ce}`))}return D}getBinderAttributes(){let D=[];for(let Y in this.binders){let pe=this.binders[Y];if(pe instanceof No||pe instanceof Gn)for(let Ce=0;Ce!0){this.programConfigurations={};for(let Ce of D)this.programConfigurations[Ce.id]=new Ks(Ce,Y,pe);this.needsUpload=!1,this._featureMap=new _a,this._bufferOffset=0}populatePaintArrays(D,Y,pe,Ce,Ue,Ge){for(let ut in this.programConfigurations)this.programConfigurations[ut].populatePaintArrays(D,Y,Ce,Ue,Ge);Y.id!==void 0&&this._featureMap.add(Y.id,pe,this._bufferOffset,D),this._bufferOffset=D,this.needsUpload=!0}updatePaintArrays(D,Y,pe,Ce){for(let Ue of pe)this.needsUpload=this.programConfigurations[Ue.id].updatePaintArrays(D,this._featureMap,Y,Ue,Ce)||this.needsUpload}get(D){return this.programConfigurations[D]}upload(D){if(this.needsUpload){for(let Y in this.programConfigurations)this.programConfigurations[Y].upload(D);this.needsUpload=!1}}destroy(){for(let D in this.programConfigurations)this.programConfigurations[D].destroy()}}function sl(q,D){return{"text-opacity":["opacity"],"icon-opacity":["opacity"],"text-color":["fill_color"],"icon-color":["fill_color"],"text-halo-color":["halo_color"],"icon-halo-color":["halo_color"],"text-halo-blur":["halo_blur"],"icon-halo-blur":["halo_blur"],"text-halo-width":["halo_width"],"icon-halo-width":["halo_width"],"line-gap-width":["gapwidth"],"line-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"],"fill-extrusion-pattern":["pattern_to","pattern_from","pixel_ratio_to","pixel_ratio_from"]}[q]||[q.replace(`${D}-`,"").replace(/-/g,"_")]}function Vi(q,D,Y){let pe={color:{source:ea,composite:di},number:{source:Wr,composite:ea}},Ce=function(Ue){return{"line-pattern":{source:bl,composite:bl},"fill-pattern":{source:bl,composite:bl},"fill-extrusion-pattern":{source:bl,composite:bl}}[Ue]}(q);return Ce&&Ce[Y]||pe[D][Y]}ti("ConstantBinder",Un),ti("CrossFadedConstantBinder",Vn),ti("SourceExpressionBinder",No),ti("CrossFadedCompositeBinder",Fo),ti("CompositeExpressionBinder",Gn),ti("ProgramConfiguration",Ks,{omit:["_buffers"]}),ti("ProgramConfigurationSet",Gs);let ao=8192,ns=Math.pow(2,14)-1,hs=-ns-1;function hl(q){let D=ao/q.extent,Y=q.loadGeometry();for(let pe=0;peGe.x+1||TtGe.y+1)&&f("Geometry exceeds allowed extent, reduce your vector tile buffer size")}}return Y}function Dl(q,D){return{type:q.type,id:q.id,properties:q.properties,geometry:D?hl(q):[]}}function hu(q,D,Y,pe,Ce){q.emplaceBack(2*D+(pe+1)/2,2*Y+(Ce+1)/2)}class Ll{constructor(D){this.zoom=D.zoom,this.overscaling=D.overscaling,this.layers=D.layers,this.layerIds=this.layers.map(Y=>Y.id),this.index=D.index,this.hasPattern=!1,this.layoutVertexArray=new Go,this.indexArray=new Re,this.segments=new wt,this.programConfigurations=new Gs(D.layers,D.zoom),this.stateDependentLayerIds=this.layers.filter(Y=>Y.isStateDependent()).map(Y=>Y.id)}populate(D,Y,pe){let Ce=this.layers[0],Ue=[],Ge=null,ut=!1;Ce.type==="circle"&&(Ge=Ce.layout.get("circle-sort-key"),ut=!Ge.isConstant());for(let{feature:Tt,id:Ft,index:$t,sourceLayerIndex:lr}of D){let Ar=this.layers[0]._featureFilter.needGeometry,zr=Dl(Tt,Ar);if(!this.layers[0]._featureFilter.filter(new Ts(this.zoom),zr,pe))continue;let Kr=ut?Ge.evaluate(zr,{},pe):void 0,la={id:Ft,properties:Tt.properties,type:Tt.type,sourceLayerIndex:lr,index:$t,geometry:Ar?zr.geometry:hl(Tt),patterns:{},sortKey:Kr};Ue.push(la)}ut&&Ue.sort((Tt,Ft)=>Tt.sortKey-Ft.sortKey);for(let Tt of Ue){let{geometry:Ft,index:$t,sourceLayerIndex:lr}=Tt,Ar=D[$t].feature;this.addFeature(Tt,Ft,$t,pe),Y.featureIndex.insert(Ar,Ft,$t,lr,this.index)}}update(D,Y,pe){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(D,Y,this.stateDependentLayers,pe)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(D){this.uploaded||(this.layoutVertexBuffer=D.createVertexBuffer(this.layoutVertexArray,vt),this.indexBuffer=D.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(D),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}addFeature(D,Y,pe,Ce){for(let Ue of Y)for(let Ge of Ue){let ut=Ge.x,Tt=Ge.y;if(ut<0||ut>=ao||Tt<0||Tt>=ao)continue;let Ft=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray,D.sortKey),$t=Ft.vertexLength;hu(this.layoutVertexArray,ut,Tt,-1,-1),hu(this.layoutVertexArray,ut,Tt,1,-1),hu(this.layoutVertexArray,ut,Tt,1,1),hu(this.layoutVertexArray,ut,Tt,-1,1),this.indexArray.emplaceBack($t,$t+1,$t+2),this.indexArray.emplaceBack($t,$t+3,$t+2),Ft.vertexLength+=4,Ft.primitiveLength+=2}this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,D,pe,{},Ce)}}function dc(q,D){for(let Y=0;Y1){if(si(q,D))return!0;for(let pe=0;pe1?Y:Y.sub(D)._mult(Ce)._add(D))}function Fi(q,D){let Y,pe,Ce,Ue=!1;for(let Ge=0;GeD.y!=Ce.y>D.y&&D.x<(Ce.x-pe.x)*(D.y-pe.y)/(Ce.y-pe.y)+pe.x&&(Ue=!Ue)}return Ue}function cn(q,D){let Y=!1;for(let pe=0,Ce=q.length-1;peD.y!=Ge.y>D.y&&D.x<(Ge.x-Ue.x)*(D.y-Ue.y)/(Ge.y-Ue.y)+Ue.x&&(Y=!Y)}return Y}function fn(q,D,Y){let pe=Y[0],Ce=Y[2];if(q.xCe.x&&D.x>Ce.x||q.yCe.y&&D.y>Ce.y)return!1;let Ue=P(q,D,Y[0]);return Ue!==P(q,D,Y[1])||Ue!==P(q,D,Y[2])||Ue!==P(q,D,Y[3])}function Gi(q,D,Y){let pe=D.paint.get(q).value;return pe.kind==="constant"?pe.value:Y.programConfigurations.get(D.id).getMaxValue(q)}function Io(q){return Math.sqrt(q[0]*q[0]+q[1]*q[1])}function nn(q,D,Y,pe,Ce){if(!D[0]&&!D[1])return q;let Ue=i.convert(D)._mult(Ce);Y==="viewport"&&Ue._rotate(-pe);let Ge=[];for(let ut=0;utUi(za,la))}(Ft,Tt),zr=lr?$t*ut:$t;for(let Kr of Ce)for(let la of Kr){let za=lr?la:Ui(la,Tt),ja=zr,gi=_o([],[la.x,la.y,0,1],Tt);if(this.paint.get("circle-pitch-scale")==="viewport"&&this.paint.get("circle-pitch-alignment")==="map"?ja*=gi[3]/Ge.cameraToCenterDistance:this.paint.get("circle-pitch-scale")==="map"&&this.paint.get("circle-pitch-alignment")==="viewport"&&(ja*=Ge.cameraToCenterDistance/gi[3]),Qt(Ar,za,ja))return!0}return!1}}function Ui(q,D){let Y=_o([],[q.x,q.y,0,1],D);return new i(Y[0]/Y[3],Y[1]/Y[3])}class Zn extends Ll{}let Rn;ti("HeatmapBucket",Zn,{omit:["layers"]});var xn={get paint(){return Rn=Rn||new Oe({"heatmap-radius":new Po(ie.paint_heatmap["heatmap-radius"]),"heatmap-weight":new Po(ie.paint_heatmap["heatmap-weight"]),"heatmap-intensity":new ro(ie.paint_heatmap["heatmap-intensity"]),"heatmap-color":new pc(ie.paint_heatmap["heatmap-color"]),"heatmap-opacity":new ro(ie.paint_heatmap["heatmap-opacity"])})}};function dn(q,{width:D,height:Y},pe,Ce){if(Ce){if(Ce instanceof Uint8ClampedArray)Ce=new Uint8Array(Ce.buffer);else if(Ce.length!==D*Y*pe)throw new RangeError(`mismatched image size. expected: ${Ce.length} but got: ${D*Y*pe}`)}else Ce=new Uint8Array(D*Y*pe);return q.width=D,q.height=Y,q.data=Ce,q}function jn(q,{width:D,height:Y},pe){if(D===q.width&&Y===q.height)return;let Ce=dn({},{width:D,height:Y},pe);Ro(q,Ce,{x:0,y:0},{x:0,y:0},{width:Math.min(q.width,D),height:Math.min(q.height,Y)},pe),q.width=D,q.height=Y,q.data=Ce.data}function Ro(q,D,Y,pe,Ce,Ue){if(Ce.width===0||Ce.height===0)return D;if(Ce.width>q.width||Ce.height>q.height||Y.x>q.width-Ce.width||Y.y>q.height-Ce.height)throw new RangeError("out of range source coordinates for image copy");if(Ce.width>D.width||Ce.height>D.height||pe.x>D.width-Ce.width||pe.y>D.height-Ce.height)throw new RangeError("out of range destination coordinates for image copy");let Ge=q.data,ut=D.data;if(Ge===ut)throw new Error("srcData equals dstData, so image is already copied");for(let Tt=0;Tt{D[q.evaluationKey]=Tt;let Ft=q.expression.evaluate(D);Ce.data[Ge+ut+0]=Math.floor(255*Ft.r/Ft.a),Ce.data[Ge+ut+1]=Math.floor(255*Ft.g/Ft.a),Ce.data[Ge+ut+2]=Math.floor(255*Ft.b/Ft.a),Ce.data[Ge+ut+3]=Math.floor(255*Ft.a)};if(q.clips)for(let Ge=0,ut=0;Ge80*Y){ut=1/0,Tt=1/0;let $t=-1/0,lr=-1/0;for(let Ar=Y;Ar$t&&($t=zr),Kr>lr&&(lr=Kr)}Ft=Math.max($t-ut,lr-Tt),Ft=Ft!==0?32767/Ft:0}return rf(Ue,Ge,Y,ut,Tt,Ft,0),Ge}function vc(q,D,Y,pe,Ce){let Ue;if(Ce===function(Ge,ut,Tt,Ft){let $t=0;for(let lr=ut,Ar=Tt-Ft;lr0)for(let Ge=D;Ge=D;Ge-=pe)Ue=wr(Ge/pe|0,q[Ge],q[Ge+1],Ue);return Ue&&He(Ue,Ue.next)&&(qt(Ue),Ue=Ue.next),Ue}function mc(q,D){if(!q)return q;D||(D=q);let Y,pe=q;do if(Y=!1,pe.steiner||!He(pe,pe.next)&&We(pe.prev,pe,pe.next)!==0)pe=pe.next;else{if(qt(pe),pe=D=pe.prev,pe===pe.next)break;Y=!0}while(Y||pe!==D);return D}function rf(q,D,Y,pe,Ce,Ue,Ge){if(!q)return;!Ge&&Ue&&function(Tt,Ft,$t,lr){let Ar=Tt;do Ar.z===0&&(Ar.z=K(Ar.x,Ar.y,Ft,$t,lr)),Ar.prevZ=Ar.prev,Ar.nextZ=Ar.next,Ar=Ar.next;while(Ar!==Tt);Ar.prevZ.nextZ=null,Ar.prevZ=null,function(zr){let Kr,la=1;do{let za,ja=zr;zr=null;let gi=null;for(Kr=0;ja;){Kr++;let ei=ja,hi=0;for(let En=0;En0||Ei>0&&ei;)hi!==0&&(Ei===0||!ei||ja.z<=ei.z)?(za=ja,ja=ja.nextZ,hi--):(za=ei,ei=ei.nextZ,Ei--),gi?gi.nextZ=za:zr=za,za.prevZ=gi,gi=za;ja=ei}gi.nextZ=null,la*=2}while(Kr>1)}(Ar)}(q,pe,Ce,Ue);let ut=q;for(;q.prev!==q.next;){let Tt=q.prev,Ft=q.next;if(Ue?Mc(q,pe,Ce,Ue):Yl(q))D.push(Tt.i,q.i,Ft.i),qt(q),q=Ft.next,ut=Ft.next;else if((q=Ft)===ut){Ge?Ge===1?rf(q=Vc(mc(q),D),D,Y,pe,Ce,Ue,2):Ge===2&&Ds(q,D,Y,pe,Ce,Ue):rf(mc(q),D,Y,pe,Ce,Ue,1);break}}}function Yl(q){let D=q.prev,Y=q,pe=q.next;if(We(D,Y,pe)>=0)return!1;let Ce=D.x,Ue=Y.x,Ge=pe.x,ut=D.y,Tt=Y.y,Ft=pe.y,$t=CeUe?Ce>Ge?Ce:Ge:Ue>Ge?Ue:Ge,zr=ut>Tt?ut>Ft?ut:Ft:Tt>Ft?Tt:Ft,Kr=pe.next;for(;Kr!==D;){if(Kr.x>=$t&&Kr.x<=Ar&&Kr.y>=lr&&Kr.y<=zr&&te(Ce,ut,Ue,Tt,Ge,Ft,Kr.x,Kr.y)&&We(Kr.prev,Kr,Kr.next)>=0)return!1;Kr=Kr.next}return!0}function Mc(q,D,Y,pe){let Ce=q.prev,Ue=q,Ge=q.next;if(We(Ce,Ue,Ge)>=0)return!1;let ut=Ce.x,Tt=Ue.x,Ft=Ge.x,$t=Ce.y,lr=Ue.y,Ar=Ge.y,zr=utTt?ut>Ft?ut:Ft:Tt>Ft?Tt:Ft,za=$t>lr?$t>Ar?$t:Ar:lr>Ar?lr:Ar,ja=K(zr,Kr,D,Y,pe),gi=K(la,za,D,Y,pe),ei=q.prevZ,hi=q.nextZ;for(;ei&&ei.z>=ja&&hi&&hi.z<=gi;){if(ei.x>=zr&&ei.x<=la&&ei.y>=Kr&&ei.y<=za&&ei!==Ce&&ei!==Ge&&te(ut,$t,Tt,lr,Ft,Ar,ei.x,ei.y)&&We(ei.prev,ei,ei.next)>=0||(ei=ei.prevZ,hi.x>=zr&&hi.x<=la&&hi.y>=Kr&&hi.y<=za&&hi!==Ce&&hi!==Ge&&te(ut,$t,Tt,lr,Ft,Ar,hi.x,hi.y)&&We(hi.prev,hi,hi.next)>=0))return!1;hi=hi.nextZ}for(;ei&&ei.z>=ja;){if(ei.x>=zr&&ei.x<=la&&ei.y>=Kr&&ei.y<=za&&ei!==Ce&&ei!==Ge&&te(ut,$t,Tt,lr,Ft,Ar,ei.x,ei.y)&&We(ei.prev,ei,ei.next)>=0)return!1;ei=ei.prevZ}for(;hi&&hi.z<=gi;){if(hi.x>=zr&&hi.x<=la&&hi.y>=Kr&&hi.y<=za&&hi!==Ce&&hi!==Ge&&te(ut,$t,Tt,lr,Ft,Ar,hi.x,hi.y)&&We(hi.prev,hi,hi.next)>=0)return!1;hi=hi.nextZ}return!0}function Vc(q,D){let Y=q;do{let pe=Y.prev,Ce=Y.next.next;!He(pe,Ce)&&st(pe,Y,Y.next,Ce)&&yr(pe,Ce)&&yr(Ce,pe)&&(D.push(pe.i,Y.i,Ce.i),qt(Y),qt(Y.next),Y=q=Ce),Y=Y.next}while(Y!==q);return mc(Y)}function Ds(q,D,Y,pe,Ce,Ue){let Ge=q;do{let ut=Ge.next.next;for(;ut!==Ge.prev;){if(Ge.i!==ut.i&&xe(Ge,ut)){let Tt=Ir(Ge,ut);return Ge=mc(Ge,Ge.next),Tt=mc(Tt,Tt.next),rf(Ge,D,Y,pe,Ce,Ue,0),void rf(Tt,D,Y,pe,Ce,Ue,0)}ut=ut.next}Ge=Ge.next}while(Ge!==q)}function af(q,D){return q.x-D.x}function Cs(q,D){let Y=function(Ce,Ue){let Ge=Ue,ut=Ce.x,Tt=Ce.y,Ft,$t=-1/0;do{if(Tt<=Ge.y&&Tt>=Ge.next.y&&Ge.next.y!==Ge.y){let la=Ge.x+(Tt-Ge.y)*(Ge.next.x-Ge.x)/(Ge.next.y-Ge.y);if(la<=ut&&la>$t&&($t=la,Ft=Ge.x=Ge.x&&Ge.x>=Ar&&ut!==Ge.x&&te(TtFt.x||Ge.x===Ft.x&&ve(Ft,Ge)))&&(Ft=Ge,Kr=la)}Ge=Ge.next}while(Ge!==lr);return Ft}(q,D);if(!Y)return D;let pe=Ir(Y,q);return mc(pe,pe.next),mc(Y,Y.next)}function ve(q,D){return We(q.prev,q,D.prev)<0&&We(D.next,q,q.next)<0}function K(q,D,Y,pe,Ce){return(q=1431655765&((q=858993459&((q=252645135&((q=16711935&((q=(q-Y)*Ce|0)|q<<8))|q<<4))|q<<2))|q<<1))|(D=1431655765&((D=858993459&((D=252645135&((D=16711935&((D=(D-pe)*Ce|0)|D<<8))|D<<4))|D<<2))|D<<1))<<1}function ye(q){let D=q,Y=q;do(D.x=(q-Ge)*(Ue-ut)&&(q-Ge)*(pe-ut)>=(Y-Ge)*(D-ut)&&(Y-Ge)*(Ue-ut)>=(Ce-Ge)*(pe-ut)}function xe(q,D){return q.next.i!==D.i&&q.prev.i!==D.i&&!function(Y,pe){let Ce=Y;do{if(Ce.i!==Y.i&&Ce.next.i!==Y.i&&Ce.i!==pe.i&&Ce.next.i!==pe.i&&st(Ce,Ce.next,Y,pe))return!0;Ce=Ce.next}while(Ce!==Y);return!1}(q,D)&&(yr(q,D)&&yr(D,q)&&function(Y,pe){let Ce=Y,Ue=!1,Ge=(Y.x+pe.x)/2,ut=(Y.y+pe.y)/2;do Ce.y>ut!=Ce.next.y>ut&&Ce.next.y!==Ce.y&&Ge<(Ce.next.x-Ce.x)*(ut-Ce.y)/(Ce.next.y-Ce.y)+Ce.x&&(Ue=!Ue),Ce=Ce.next;while(Ce!==Y);return Ue}(q,D)&&(We(q.prev,q,D.prev)||We(q,D.prev,D))||He(q,D)&&We(q.prev,q,q.next)>0&&We(D.prev,D,D.next)>0)}function We(q,D,Y){return(D.y-q.y)*(Y.x-D.x)-(D.x-q.x)*(Y.y-D.y)}function He(q,D){return q.x===D.x&&q.y===D.y}function st(q,D,Y,pe){let Ce=Ht(We(q,D,Y)),Ue=Ht(We(q,D,pe)),Ge=Ht(We(Y,pe,q)),ut=Ht(We(Y,pe,D));return Ce!==Ue&&Ge!==ut||!(Ce!==0||!Et(q,Y,D))||!(Ue!==0||!Et(q,pe,D))||!(Ge!==0||!Et(Y,q,pe))||!(ut!==0||!Et(Y,D,pe))}function Et(q,D,Y){return D.x<=Math.max(q.x,Y.x)&&D.x>=Math.min(q.x,Y.x)&&D.y<=Math.max(q.y,Y.y)&&D.y>=Math.min(q.y,Y.y)}function Ht(q){return q>0?1:q<0?-1:0}function yr(q,D){return We(q.prev,q,q.next)<0?We(q,D,q.next)>=0&&We(q,q.prev,D)>=0:We(q,D,q.prev)<0||We(q,q.next,D)<0}function Ir(q,D){let Y=tr(q.i,q.x,q.y),pe=tr(D.i,D.x,D.y),Ce=q.next,Ue=D.prev;return q.next=D,D.prev=q,Y.next=Ce,Ce.prev=Y,pe.next=Y,Y.prev=pe,Ue.next=pe,pe.prev=Ue,pe}function wr(q,D,Y,pe){let Ce=tr(q,D,Y);return pe?(Ce.next=pe.next,Ce.prev=pe,pe.next.prev=Ce,pe.next=Ce):(Ce.prev=Ce,Ce.next=Ce),Ce}function qt(q){q.next.prev=q.prev,q.prev.next=q.next,q.prevZ&&(q.prevZ.nextZ=q.nextZ),q.nextZ&&(q.nextZ.prevZ=q.prevZ)}function tr(q,D,Y){return{i:q,x:D,y:Y,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function dr(q,D,Y){let pe=Y.patternDependencies,Ce=!1;for(let Ue of D){let Ge=Ue.paint.get(`${q}-pattern`);Ge.isConstant()||(Ce=!0);let ut=Ge.constantOr(null);ut&&(Ce=!0,pe[ut.to]=!0,pe[ut.from]=!0)}return Ce}function Pr(q,D,Y,pe,Ce){let Ue=Ce.patternDependencies;for(let Ge of D){let ut=Ge.paint.get(`${q}-pattern`).value;if(ut.kind!=="constant"){let Tt=ut.evaluate({zoom:pe-1},Y,{},Ce.availableImages),Ft=ut.evaluate({zoom:pe},Y,{},Ce.availableImages),$t=ut.evaluate({zoom:pe+1},Y,{},Ce.availableImages);Tt=Tt&&Tt.name?Tt.name:Tt,Ft=Ft&&Ft.name?Ft.name:Ft,$t=$t&&$t.name?$t.name:$t,Ue[Tt]=!0,Ue[Ft]=!0,Ue[$t]=!0,Y.patterns[Ge.id]={min:Tt,mid:Ft,max:$t}}}return Y}class Vr{constructor(D){this.zoom=D.zoom,this.overscaling=D.overscaling,this.layers=D.layers,this.layerIds=this.layers.map(Y=>Y.id),this.index=D.index,this.hasPattern=!1,this.patternFeatures=[],this.layoutVertexArray=new Rl,this.indexArray=new Re,this.indexArray2=new $e,this.programConfigurations=new Gs(D.layers,D.zoom),this.segments=new wt,this.segments2=new wt,this.stateDependentLayerIds=this.layers.filter(Y=>Y.isStateDependent()).map(Y=>Y.id)}populate(D,Y,pe){this.hasPattern=dr("fill",this.layers,Y);let Ce=this.layers[0].layout.get("fill-sort-key"),Ue=!Ce.isConstant(),Ge=[];for(let{feature:ut,id:Tt,index:Ft,sourceLayerIndex:$t}of D){let lr=this.layers[0]._featureFilter.needGeometry,Ar=Dl(ut,lr);if(!this.layers[0]._featureFilter.filter(new Ts(this.zoom),Ar,pe))continue;let zr=Ue?Ce.evaluate(Ar,{},pe,Y.availableImages):void 0,Kr={id:Tt,properties:ut.properties,type:ut.type,sourceLayerIndex:$t,index:Ft,geometry:lr?Ar.geometry:hl(ut),patterns:{},sortKey:zr};Ge.push(Kr)}Ue&&Ge.sort((ut,Tt)=>ut.sortKey-Tt.sortKey);for(let ut of Ge){let{geometry:Tt,index:Ft,sourceLayerIndex:$t}=ut;if(this.hasPattern){let lr=Pr("fill",this.layers,ut,this.zoom,Y);this.patternFeatures.push(lr)}else this.addFeature(ut,Tt,Ft,pe,{});Y.featureIndex.insert(D[Ft].feature,Tt,Ft,$t,this.index)}}update(D,Y,pe){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(D,Y,this.stateDependentLayers,pe)}addFeatures(D,Y,pe){for(let Ce of this.patternFeatures)this.addFeature(Ce,Ce.geometry,Ce.index,Y,pe)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(D){this.uploaded||(this.layoutVertexBuffer=D.createVertexBuffer(this.layoutVertexArray,jc),this.indexBuffer=D.createIndexBuffer(this.indexArray),this.indexBuffer2=D.createIndexBuffer(this.indexArray2)),this.programConfigurations.upload(D),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.indexBuffer2.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.segments2.destroy())}addFeature(D,Y,pe,Ce,Ue){for(let Ge of Ic(Y,500)){let ut=0;for(let zr of Ge)ut+=zr.length;let Tt=this.segments.prepareSegment(ut,this.layoutVertexArray,this.indexArray),Ft=Tt.vertexLength,$t=[],lr=[];for(let zr of Ge){if(zr.length===0)continue;zr!==Ge[0]&&lr.push($t.length/2);let Kr=this.segments2.prepareSegment(zr.length,this.layoutVertexArray,this.indexArray2),la=Kr.vertexLength;this.layoutVertexArray.emplaceBack(zr[0].x,zr[0].y),this.indexArray2.emplaceBack(la+zr.length-1,la),$t.push(zr[0].x),$t.push(zr[0].y);for(let za=1;za>3}if(Ce--,pe===1||pe===2)Ue+=q.readSVarint(),Ge+=q.readSVarint(),pe===1&&(D&&ut.push(D),D=[]),D.push(new ri(Ue,Ge));else{if(pe!==7)throw new Error("unknown command "+pe);D&&D.push(D[0].clone())}}return D&&ut.push(D),ut},mi.prototype.bbox=function(){var q=this._pbf;q.pos=this._geometry;for(var D=q.readVarint()+q.pos,Y=1,pe=0,Ce=0,Ue=0,Ge=1/0,ut=-1/0,Tt=1/0,Ft=-1/0;q.pos>3}if(pe--,Y===1||Y===2)(Ce+=q.readSVarint())ut&&(ut=Ce),(Ue+=q.readSVarint())Ft&&(Ft=Ue);else if(Y!==7)throw new Error("unknown command "+Y)}return[Ge,Tt,ut,Ft]},mi.prototype.toGeoJSON=function(q,D,Y){var pe,Ce,Ue=this.extent*Math.pow(2,Y),Ge=this.extent*q,ut=this.extent*D,Tt=this.loadGeometry(),Ft=mi.types[this.type];function $t(zr){for(var Kr=0;Kr>3;Ce=Ge===1?pe.readString():Ge===2?pe.readFloat():Ge===3?pe.readDouble():Ge===4?pe.readVarint64():Ge===5?pe.readVarint():Ge===6?pe.readSVarint():Ge===7?pe.readBoolean():null}return Ce}(Y))}Wi.prototype.feature=function(q){if(q<0||q>=this._features.length)throw new Error("feature index out of bounds");this._pbf.pos=this._features[q];var D=this._pbf.readVarint()+this._pbf.pos;return new ln(this._pbf,D,this.extent,this._keys,this._values)};var yn=Ii;function zn(q,D,Y){if(q===3){var pe=new yn(Y,Y.readVarint()+Y.pos);pe.length&&(D[pe.name]=pe)}}Oa.VectorTile=function(q,D){this.layers=q.readFields(zn,{},D)},Oa.VectorTileFeature=Pi,Oa.VectorTileLayer=Ii;let ms=Oa.VectorTileFeature.types,us=Math.pow(2,13);function Vs(q,D,Y,pe,Ce,Ue,Ge,ut){q.emplaceBack(D,Y,2*Math.floor(pe*us)+Ge,Ce*us*2,Ue*us*2,Math.round(ut))}class qo{constructor(D){this.zoom=D.zoom,this.overscaling=D.overscaling,this.layers=D.layers,this.layerIds=this.layers.map(Y=>Y.id),this.index=D.index,this.hasPattern=!1,this.layoutVertexArray=new Xl,this.centroidVertexArray=new Zo,this.indexArray=new Re,this.programConfigurations=new Gs(D.layers,D.zoom),this.segments=new wt,this.stateDependentLayerIds=this.layers.filter(Y=>Y.isStateDependent()).map(Y=>Y.id)}populate(D,Y,pe){this.features=[],this.hasPattern=dr("fill-extrusion",this.layers,Y);for(let{feature:Ce,id:Ue,index:Ge,sourceLayerIndex:ut}of D){let Tt=this.layers[0]._featureFilter.needGeometry,Ft=Dl(Ce,Tt);if(!this.layers[0]._featureFilter.filter(new Ts(this.zoom),Ft,pe))continue;let $t={id:Ue,sourceLayerIndex:ut,index:Ge,geometry:Tt?Ft.geometry:hl(Ce),properties:Ce.properties,type:Ce.type,patterns:{}};this.hasPattern?this.features.push(Pr("fill-extrusion",this.layers,$t,this.zoom,Y)):this.addFeature($t,$t.geometry,Ge,pe,{}),Y.featureIndex.insert(Ce,$t.geometry,Ge,ut,this.index,!0)}}addFeatures(D,Y,pe){for(let Ce of this.features){let{geometry:Ue}=Ce;this.addFeature(Ce,Ue,Ce.index,Y,pe)}}update(D,Y,pe){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(D,Y,this.stateDependentLayers,pe)}isEmpty(){return this.layoutVertexArray.length===0&&this.centroidVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(D){this.uploaded||(this.layoutVertexBuffer=D.createVertexBuffer(this.layoutVertexArray,wa),this.centroidVertexBuffer=D.createVertexBuffer(this.centroidVertexArray,Ur.members,!0),this.indexBuffer=D.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(D),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy(),this.centroidVertexBuffer.destroy())}addFeature(D,Y,pe,Ce,Ue){for(let Ge of Ic(Y,500)){let ut={x:0,y:0,vertexCount:0},Tt=0;for(let Kr of Ge)Tt+=Kr.length;let Ft=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray);for(let Kr of Ge){if(Kr.length===0||wl(Kr))continue;let la=0;for(let za=0;za=1){let gi=Kr[za-1];if(!Ls(ja,gi)){Ft.vertexLength+4>wt.MAX_VERTEX_ARRAY_LENGTH&&(Ft=this.segments.prepareSegment(4,this.layoutVertexArray,this.indexArray));let ei=ja.sub(gi)._perp()._unit(),hi=gi.dist(ja);la+hi>32768&&(la=0),Vs(this.layoutVertexArray,ja.x,ja.y,ei.x,ei.y,0,0,la),Vs(this.layoutVertexArray,ja.x,ja.y,ei.x,ei.y,0,1,la),ut.x+=2*ja.x,ut.y+=2*ja.y,ut.vertexCount+=2,la+=hi,Vs(this.layoutVertexArray,gi.x,gi.y,ei.x,ei.y,0,0,la),Vs(this.layoutVertexArray,gi.x,gi.y,ei.x,ei.y,0,1,la),ut.x+=2*gi.x,ut.y+=2*gi.y,ut.vertexCount+=2;let Ei=Ft.vertexLength;this.indexArray.emplaceBack(Ei,Ei+2,Ei+1),this.indexArray.emplaceBack(Ei+1,Ei+2,Ei+3),Ft.vertexLength+=4,Ft.primitiveLength+=2}}}}if(Ft.vertexLength+Tt>wt.MAX_VERTEX_ARRAY_LENGTH&&(Ft=this.segments.prepareSegment(Tt,this.layoutVertexArray,this.indexArray)),ms[D.type]!=="Polygon")continue;let $t=[],lr=[],Ar=Ft.vertexLength;for(let Kr of Ge)if(Kr.length!==0){Kr!==Ge[0]&&lr.push($t.length/2);for(let la=0;laao)||q.y===D.y&&(q.y<0||q.y>ao)}function wl(q){return q.every(D=>D.x<0)||q.every(D=>D.x>ao)||q.every(D=>D.y<0)||q.every(D=>D.y>ao)}let Ru;ti("FillExtrusionBucket",qo,{omit:["layers","features"]});var Ap={get paint(){return Ru=Ru||new Oe({"fill-extrusion-opacity":new ro(ie["paint_fill-extrusion"]["fill-extrusion-opacity"]),"fill-extrusion-color":new Po(ie["paint_fill-extrusion"]["fill-extrusion-color"]),"fill-extrusion-translate":new ro(ie["paint_fill-extrusion"]["fill-extrusion-translate"]),"fill-extrusion-translate-anchor":new ro(ie["paint_fill-extrusion"]["fill-extrusion-translate-anchor"]),"fill-extrusion-pattern":new Nc(ie["paint_fill-extrusion"]["fill-extrusion-pattern"]),"fill-extrusion-height":new Po(ie["paint_fill-extrusion"]["fill-extrusion-height"]),"fill-extrusion-base":new Po(ie["paint_fill-extrusion"]["fill-extrusion-base"]),"fill-extrusion-vertical-gradient":new ro(ie["paint_fill-extrusion"]["fill-extrusion-vertical-gradient"])})}};class Sp extends ae{constructor(D){super(D,Ap)}createBucket(D){return new qo(D)}queryRadius(){return Io(this.paint.get("fill-extrusion-translate"))}is3D(){return!0}queryIntersectsFeature(D,Y,pe,Ce,Ue,Ge,ut,Tt){let Ft=nn(D,this.paint.get("fill-extrusion-translate"),this.paint.get("fill-extrusion-translate-anchor"),Ge.angle,ut),$t=this.paint.get("fill-extrusion-height").evaluate(Y,pe),lr=this.paint.get("fill-extrusion-base").evaluate(Y,pe),Ar=function(Kr,la,za,ja){let gi=[];for(let ei of Kr){let hi=[ei.x,ei.y,0,1];_o(hi,hi,la),gi.push(new i(hi[0]/hi[3],hi[1]/hi[3]))}return gi}(Ft,Tt),zr=function(Kr,la,za,ja){let gi=[],ei=[],hi=ja[8]*la,Ei=ja[9]*la,En=ja[10]*la,fo=ja[11]*la,ss=ja[8]*za,eo=ja[9]*za,vn=ja[10]*za,Uo=ja[11]*za;for(let Mo of Kr){let xo=[],Yi=[];for(let Ko of Mo){let bo=Ko.x,gs=Ko.y,_u=ja[0]*bo+ja[4]*gs+ja[12],pu=ja[1]*bo+ja[5]*gs+ja[13],Bf=ja[2]*bo+ja[6]*gs+ja[14],Gp=ja[3]*bo+ja[7]*gs+ja[15],dh=Bf+En,Nf=Gp+fo,Yh=_u+ss,Kh=pu+eo,Jh=Bf+vn,Hc=Gp+Uo,Uf=new i((_u+hi)/Nf,(pu+Ei)/Nf);Uf.z=dh/Nf,xo.push(Uf);let Ih=new i(Yh/Hc,Kh/Hc);Ih.z=Jh/Hc,Yi.push(Ih)}gi.push(xo),ei.push(Yi)}return[gi,ei]}(Ce,lr,$t,Tt);return function(Kr,la,za){let ja=1/0;ra(za,la)&&(ja=Vp(za,la[0]));for(let gi=0;giY.id),this.index=D.index,this.hasPattern=!1,this.patternFeatures=[],this.lineClipsArray=[],this.gradients={},this.layers.forEach(Y=>{this.gradients[Y.id]={}}),this.layoutVertexArray=new qu,this.layoutVertexArray2=new fu,this.indexArray=new Re,this.programConfigurations=new Gs(D.layers,D.zoom),this.segments=new wt,this.maxLineLength=0,this.stateDependentLayerIds=this.layers.filter(Y=>Y.isStateDependent()).map(Y=>Y.id)}populate(D,Y,pe){this.hasPattern=dr("line",this.layers,Y);let Ce=this.layers[0].layout.get("line-sort-key"),Ue=!Ce.isConstant(),Ge=[];for(let{feature:ut,id:Tt,index:Ft,sourceLayerIndex:$t}of D){let lr=this.layers[0]._featureFilter.needGeometry,Ar=Dl(ut,lr);if(!this.layers[0]._featureFilter.filter(new Ts(this.zoom),Ar,pe))continue;let zr=Ue?Ce.evaluate(Ar,{},pe):void 0,Kr={id:Tt,properties:ut.properties,type:ut.type,sourceLayerIndex:$t,index:Ft,geometry:lr?Ar.geometry:hl(ut),patterns:{},sortKey:zr};Ge.push(Kr)}Ue&&Ge.sort((ut,Tt)=>ut.sortKey-Tt.sortKey);for(let ut of Ge){let{geometry:Tt,index:Ft,sourceLayerIndex:$t}=ut;if(this.hasPattern){let lr=Pr("line",this.layers,ut,this.zoom,Y);this.patternFeatures.push(lr)}else this.addFeature(ut,Tt,Ft,pe,{});Y.featureIndex.insert(D[Ft].feature,Tt,Ft,$t,this.index)}}update(D,Y,pe){this.stateDependentLayers.length&&this.programConfigurations.updatePaintArrays(D,Y,this.stateDependentLayers,pe)}addFeatures(D,Y,pe){for(let Ce of this.patternFeatures)this.addFeature(Ce,Ce.geometry,Ce.index,Y,pe)}isEmpty(){return this.layoutVertexArray.length===0}uploadPending(){return!this.uploaded||this.programConfigurations.needsUpload}upload(D){this.uploaded||(this.layoutVertexArray2.length!==0&&(this.layoutVertexBuffer2=D.createVertexBuffer(this.layoutVertexArray2,rd)),this.layoutVertexBuffer=D.createVertexBuffer(this.layoutVertexArray,td),this.indexBuffer=D.createIndexBuffer(this.indexArray)),this.programConfigurations.upload(D),this.uploaded=!0}destroy(){this.layoutVertexBuffer&&(this.layoutVertexBuffer.destroy(),this.indexBuffer.destroy(),this.programConfigurations.destroy(),this.segments.destroy())}lineFeatureClips(D){if(D.properties&&Object.prototype.hasOwnProperty.call(D.properties,"mapbox_clip_start")&&Object.prototype.hasOwnProperty.call(D.properties,"mapbox_clip_end"))return{start:+D.properties.mapbox_clip_start,end:+D.properties.mapbox_clip_end}}addFeature(D,Y,pe,Ce,Ue){let Ge=this.layers[0].layout,ut=Ge.get("line-join").evaluate(D,{}),Tt=Ge.get("line-cap"),Ft=Ge.get("line-miter-limit"),$t=Ge.get("line-round-limit");this.lineClips=this.lineFeatureClips(D);for(let lr of Y)this.addLine(lr,D,ut,Tt,Ft,$t);this.programConfigurations.populatePaintArrays(this.layoutVertexArray.length,D,pe,Ue,Ce)}addLine(D,Y,pe,Ce,Ue,Ge){if(this.distance=0,this.scaledDistance=0,this.totalDistance=0,this.lineClips){this.lineClipsArray.push(this.lineClips);for(let ja=0;ja=2&&D[Tt-1].equals(D[Tt-2]);)Tt--;let Ft=0;for(;Ft0;if(fo&&ja>Ft){let Uo=Ar.dist(zr);if(Uo>2*$t){let Mo=Ar.sub(Ar.sub(zr)._mult($t/Uo)._round());this.updateDistance(zr,Mo),this.addCurrentVertex(Mo,la,0,0,lr),zr=Mo}}let eo=zr&&Kr,vn=eo?pe:ut?"butt":Ce;if(eo&&vn==="round"&&(EiUe&&(vn="bevel"),vn==="bevel"&&(Ei>2&&(vn="flipbevel"),Ei100)gi=za.mult(-1);else{let Uo=Ei*la.add(za).mag()/la.sub(za).mag();gi._perp()._mult(Uo*(ss?-1:1))}this.addCurrentVertex(Ar,gi,0,0,lr),this.addCurrentVertex(Ar,gi.mult(-1),0,0,lr)}else if(vn==="bevel"||vn==="fakeround"){let Uo=-Math.sqrt(Ei*Ei-1),Mo=ss?Uo:0,xo=ss?0:Uo;if(zr&&this.addCurrentVertex(Ar,la,Mo,xo,lr),vn==="fakeround"){let Yi=Math.round(180*En/Math.PI/20);for(let Ko=1;Ko2*$t){let Mo=Ar.add(Kr.sub(Ar)._mult($t/Uo)._round());this.updateDistance(Ar,Mo),this.addCurrentVertex(Mo,za,0,0,lr),Ar=Mo}}}}addCurrentVertex(D,Y,pe,Ce,Ue,Ge=!1){let ut=Y.y*Ce-Y.x,Tt=-Y.y-Y.x*Ce;this.addHalfVertex(D,Y.x+Y.y*pe,Y.y-Y.x*pe,Ge,!1,pe,Ue),this.addHalfVertex(D,ut,Tt,Ge,!0,-Ce,Ue),this.distance>Mp/2&&this.totalDistance===0&&(this.distance=0,this.updateScaledDistance(),this.addCurrentVertex(D,Y,pe,Ce,Ue,Ge))}addHalfVertex({x:D,y:Y},pe,Ce,Ue,Ge,ut,Tt){let Ft=.5*(this.lineClips?this.scaledDistance*(Mp-1):this.scaledDistance);this.layoutVertexArray.emplaceBack((D<<1)+(Ue?1:0),(Y<<1)+(Ge?1:0),Math.round(63*pe)+128,Math.round(63*Ce)+128,1+(ut===0?0:ut<0?-1:1)|(63&Ft)<<2,Ft>>6),this.lineClips&&this.layoutVertexArray2.emplaceBack((this.scaledDistance-this.lineClips.start)/(this.lineClips.end-this.lineClips.start),this.lineClipsArray.length);let $t=Tt.vertexLength++;this.e1>=0&&this.e2>=0&&(this.indexArray.emplaceBack(this.e1,this.e2,$t),Tt.primitiveLength++),Ge?this.e2=$t:this.e1=$t}updateScaledDistance(){this.scaledDistance=this.lineClips?this.lineClips.start+(this.lineClips.end-this.lineClips.start)*this.distance/this.totalDistance:this.distance}updateDistance(D,Y){this.distance+=D.dist(Y),this.updateScaledDistance()}}let Ep,Cv;ti("LineBucket",qp,{omit:["layers","patternFeatures"]});var qd={get paint(){return Cv=Cv||new Oe({"line-opacity":new Po(ie.paint_line["line-opacity"]),"line-color":new Po(ie.paint_line["line-color"]),"line-translate":new ro(ie.paint_line["line-translate"]),"line-translate-anchor":new ro(ie.paint_line["line-translate-anchor"]),"line-width":new Po(ie.paint_line["line-width"]),"line-gap-width":new Po(ie.paint_line["line-gap-width"]),"line-offset":new Po(ie.paint_line["line-offset"]),"line-blur":new Po(ie.paint_line["line-blur"]),"line-dasharray":new hc(ie.paint_line["line-dasharray"]),"line-pattern":new Nc(ie.paint_line["line-pattern"]),"line-gradient":new pc(ie.paint_line["line-gradient"])})},get layout(){return Ep=Ep||new Oe({"line-cap":new ro(ie.layout_line["line-cap"]),"line-join":new Po(ie.layout_line["line-join"]),"line-miter-limit":new ro(ie.layout_line["line-miter-limit"]),"line-round-limit":new ro(ie.layout_line["line-round-limit"]),"line-sort-key":new Po(ie.layout_line["line-sort-key"])})}};class Sf extends Po{possiblyEvaluate(D,Y){return Y=new Ts(Math.floor(Y.zoom),{now:Y.now,fadeDuration:Y.fadeDuration,zoomHistory:Y.zoomHistory,transition:Y.transition}),super.possiblyEvaluate(D,Y)}evaluate(D,Y,pe,Ce){return Y=E({},Y,{zoom:Math.floor(Y.zoom)}),super.evaluate(D,Y,pe,Ce)}}let Hd;class Lv extends ae{constructor(D){super(D,qd),this.gradientVersion=0,Hd||(Hd=new Sf(qd.paint.properties["line-width"].specification),Hd.useIntegerZoom=!0)}_handleSpecialPaintPropertyUpdate(D){if(D==="line-gradient"){let Y=this.gradientExpression();this.stepInterpolant=!!function(pe){return pe._styleExpression!==void 0}(Y)&&Y._styleExpression.expression instanceof Sa,this.gradientVersion=(this.gradientVersion+1)%Number.MAX_SAFE_INTEGER}}gradientExpression(){return this._transitionablePaint._values["line-gradient"].value.expression}recalculate(D,Y){super.recalculate(D,Y),this.paint._values["line-floorwidth"]=Hd.possiblyEvaluate(this._transitioningPaint._values["line-width"].value,D)}createBucket(D){return new qp(D)}queryRadius(D){let Y=D,pe=eh(Gi("line-width",this,Y),Gi("line-gap-width",this,Y)),Ce=Gi("line-offset",this,Y);return pe/2+Math.abs(Ce)+Io(this.paint.get("line-translate"))}queryIntersectsFeature(D,Y,pe,Ce,Ue,Ge,ut){let Tt=nn(D,this.paint.get("line-translate"),this.paint.get("line-translate-anchor"),Ge.angle,ut),Ft=ut/2*eh(this.paint.get("line-width").evaluate(Y,pe),this.paint.get("line-gap-width").evaluate(Y,pe)),$t=this.paint.get("line-offset").evaluate(Y,pe);return $t&&(Ce=function(lr,Ar){let zr=[];for(let Kr=0;Kr=3){for(let za=0;za0?D+2*q:q}let iv=ft([{name:"a_pos_offset",components:4,type:"Int16"},{name:"a_data",components:4,type:"Uint16"},{name:"a_pixeloffset",components:4,type:"Int16"}],4),im=ft([{name:"a_projected_pos",components:3,type:"Float32"}],4);ft([{name:"a_fade_opacity",components:1,type:"Uint32"}],4);let nm=ft([{name:"a_placed",components:2,type:"Uint8"},{name:"a_shift",components:2,type:"Float32"},{name:"a_box_real",components:2,type:"Int16"}]);ft([{type:"Int16",name:"anchorPointX"},{type:"Int16",name:"anchorPointY"},{type:"Int16",name:"x1"},{type:"Int16",name:"y1"},{type:"Int16",name:"x2"},{type:"Int16",name:"y2"},{type:"Uint32",name:"featureIndex"},{type:"Uint16",name:"sourceLayerIndex"},{type:"Uint16",name:"bucketIndex"}]);let Pv=ft([{name:"a_pos",components:2,type:"Int16"},{name:"a_anchor_pos",components:2,type:"Int16"},{name:"a_extrude",components:2,type:"Int16"}],4),nv=ft([{name:"a_pos",components:2,type:"Float32"},{name:"a_radius",components:1,type:"Float32"},{name:"a_flags",components:2,type:"Int16"}],4);function ov(q,D,Y){return q.sections.forEach(pe=>{pe.text=function(Ce,Ue,Ge){let ut=Ue.layout.get("text-transform").evaluate(Ge,{});return ut==="uppercase"?Ce=Ce.toLocaleUpperCase():ut==="lowercase"&&(Ce=Ce.toLocaleLowerCase()),js.applyArabicShaping&&(Ce=js.applyArabicShaping(Ce)),Ce}(pe.text,D,Y)}),q}ft([{name:"triangle",components:3,type:"Uint16"}]),ft([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Uint16",name:"glyphStartIndex"},{type:"Uint16",name:"numGlyphs"},{type:"Uint32",name:"vertexStartIndex"},{type:"Uint32",name:"lineStartIndex"},{type:"Uint32",name:"lineLength"},{type:"Uint16",name:"segment"},{type:"Uint16",name:"lowerSize"},{type:"Uint16",name:"upperSize"},{type:"Float32",name:"lineOffsetX"},{type:"Float32",name:"lineOffsetY"},{type:"Uint8",name:"writingMode"},{type:"Uint8",name:"placedOrientation"},{type:"Uint8",name:"hidden"},{type:"Uint32",name:"crossTileID"},{type:"Int16",name:"associatedIconIndex"}]),ft([{type:"Int16",name:"anchorX"},{type:"Int16",name:"anchorY"},{type:"Int16",name:"rightJustifiedTextSymbolIndex"},{type:"Int16",name:"centerJustifiedTextSymbolIndex"},{type:"Int16",name:"leftJustifiedTextSymbolIndex"},{type:"Int16",name:"verticalPlacedTextSymbolIndex"},{type:"Int16",name:"placedIconSymbolIndex"},{type:"Int16",name:"verticalPlacedIconSymbolIndex"},{type:"Uint16",name:"key"},{type:"Uint16",name:"textBoxStartIndex"},{type:"Uint16",name:"textBoxEndIndex"},{type:"Uint16",name:"verticalTextBoxStartIndex"},{type:"Uint16",name:"verticalTextBoxEndIndex"},{type:"Uint16",name:"iconBoxStartIndex"},{type:"Uint16",name:"iconBoxEndIndex"},{type:"Uint16",name:"verticalIconBoxStartIndex"},{type:"Uint16",name:"verticalIconBoxEndIndex"},{type:"Uint16",name:"featureIndex"},{type:"Uint16",name:"numHorizontalGlyphVertices"},{type:"Uint16",name:"numVerticalGlyphVertices"},{type:"Uint16",name:"numIconVertices"},{type:"Uint16",name:"numVerticalIconVertices"},{type:"Uint16",name:"useRuntimeCollisionCircles"},{type:"Uint32",name:"crossTileID"},{type:"Float32",name:"textBoxScale"},{type:"Float32",name:"collisionCircleDiameter"},{type:"Uint16",name:"textAnchorOffsetStartIndex"},{type:"Uint16",name:"textAnchorOffsetEndIndex"}]),ft([{type:"Float32",name:"offsetX"}]),ft([{type:"Int16",name:"x"},{type:"Int16",name:"y"},{type:"Int16",name:"tileUnitDistanceFromAnchor"}]),ft([{type:"Uint16",name:"textAnchor"},{type:"Float32",components:2,name:"textOffset"}]);let Du={"!":"\uFE15","#":"\uFF03",$:"\uFF04","%":"\uFF05","&":"\uFF06","(":"\uFE35",")":"\uFE36","*":"\uFF0A","+":"\uFF0B",",":"\uFE10","-":"\uFE32",".":"\u30FB","/":"\uFF0F",":":"\uFE13",";":"\uFE14","<":"\uFE3F","=":"\uFF1D",">":"\uFE40","?":"\uFE16","@":"\uFF20","[":"\uFE47","\\":"\uFF3C","]":"\uFE48","^":"\uFF3E",_:"\uFE33","`":"\uFF40","{":"\uFE37","|":"\u2015","}":"\uFE38","~":"\uFF5E","\xA2":"\uFFE0","\xA3":"\uFFE1","\xA5":"\uFFE5","\xA6":"\uFFE4","\xAC":"\uFFE2","\xAF":"\uFFE3","\u2013":"\uFE32","\u2014":"\uFE31","\u2018":"\uFE43","\u2019":"\uFE44","\u201C":"\uFE41","\u201D":"\uFE42","\u2026":"\uFE19","\u2027":"\u30FB","\u20A9":"\uFFE6","\u3001":"\uFE11","\u3002":"\uFE12","\u3008":"\uFE3F","\u3009":"\uFE40","\u300A":"\uFE3D","\u300B":"\uFE3E","\u300C":"\uFE41","\u300D":"\uFE42","\u300E":"\uFE43","\u300F":"\uFE44","\u3010":"\uFE3B","\u3011":"\uFE3C","\u3014":"\uFE39","\u3015":"\uFE3A","\u3016":"\uFE17","\u3017":"\uFE18","\uFF01":"\uFE15","\uFF08":"\uFE35","\uFF09":"\uFE36","\uFF0C":"\uFE10","\uFF0D":"\uFE32","\uFF0E":"\u30FB","\uFF1A":"\uFE13","\uFF1B":"\uFE14","\uFF1C":"\uFE3F","\uFF1E":"\uFE40","\uFF1F":"\uFE16","\uFF3B":"\uFE47","\uFF3D":"\uFE48","\uFF3F":"\uFE33","\uFF5B":"\uFE37","\uFF5C":"\u2015","\uFF5D":"\uFE38","\uFF5F":"\uFE35","\uFF60":"\uFE36","\uFF61":"\uFE12","\uFF62":"\uFE41","\uFF63":"\uFE42"};var Bl=24,Lh=Ql,Iv=function(q,D,Y,pe,Ce){var Ue,Ge,ut=8*Ce-pe-1,Tt=(1<>1,$t=-7,lr=Y?Ce-1:0,Ar=Y?-1:1,zr=q[D+lr];for(lr+=Ar,Ue=zr&(1<<-$t)-1,zr>>=-$t,$t+=ut;$t>0;Ue=256*Ue+q[D+lr],lr+=Ar,$t-=8);for(Ge=Ue&(1<<-$t)-1,Ue>>=-$t,$t+=pe;$t>0;Ge=256*Ge+q[D+lr],lr+=Ar,$t-=8);if(Ue===0)Ue=1-Ft;else{if(Ue===Tt)return Ge?NaN:1/0*(zr?-1:1);Ge+=Math.pow(2,pe),Ue-=Ft}return(zr?-1:1)*Ge*Math.pow(2,Ue-pe)},om=function(q,D,Y,pe,Ce,Ue){var Ge,ut,Tt,Ft=8*Ue-Ce-1,$t=(1<>1,Ar=Ce===23?Math.pow(2,-24)-Math.pow(2,-77):0,zr=pe?0:Ue-1,Kr=pe?1:-1,la=D<0||D===0&&1/D<0?1:0;for(D=Math.abs(D),isNaN(D)||D===1/0?(ut=isNaN(D)?1:0,Ge=$t):(Ge=Math.floor(Math.log(D)/Math.LN2),D*(Tt=Math.pow(2,-Ge))<1&&(Ge--,Tt*=2),(D+=Ge+lr>=1?Ar/Tt:Ar*Math.pow(2,1-lr))*Tt>=2&&(Ge++,Tt/=2),Ge+lr>=$t?(ut=0,Ge=$t):Ge+lr>=1?(ut=(D*Tt-1)*Math.pow(2,Ce),Ge+=lr):(ut=D*Math.pow(2,lr-1)*Math.pow(2,Ce),Ge=0));Ce>=8;q[Y+zr]=255&ut,zr+=Kr,ut/=256,Ce-=8);for(Ge=Ge<0;q[Y+zr]=255&Ge,zr+=Kr,Ge/=256,Ft-=8);q[Y+zr-Kr]|=128*la};function Ql(q){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(q)?q:new Uint8Array(q||0),this.pos=0,this.type=0,this.length=this.buf.length}Ql.Varint=0,Ql.Fixed64=1,Ql.Bytes=2,Ql.Fixed32=5;var xg=4294967296,sv=1/xg,y0=typeof TextDecoder>"u"?null:new TextDecoder("utf-8");function kp(q){return q.type===Ql.Bytes?q.readVarint()+q.pos:q.pos+1}function lv(q,D,Y){return Y?4294967296*D+(q>>>0):4294967296*(D>>>0)+(q>>>0)}function _0(q,D,Y){var pe=D<=16383?1:D<=2097151?2:D<=268435455?3:Math.floor(Math.log(D)/(7*Math.LN2));Y.realloc(pe);for(var Ce=Y.pos-1;Ce>=q;Ce--)Y.buf[Ce+pe]=Y.buf[Ce]}function bg(q,D){for(var Y=0;Y>>8,q[Y+2]=D>>>16,q[Y+3]=D>>>24}function kx(q,D){return(q[D]|q[D+1]<<8|q[D+2]<<16)+(q[D+3]<<24)}Ql.prototype={destroy:function(){this.buf=null},readFields:function(q,D,Y){for(Y=Y||this.length;this.pos>3,Ue=this.pos;this.type=7&pe,q(Ce,D,this),this.pos===Ue&&this.skip(pe)}return D},readMessage:function(q,D){return this.readFields(q,D,this.readVarint()+this.pos)},readFixed32:function(){var q=Rv(this.buf,this.pos);return this.pos+=4,q},readSFixed32:function(){var q=kx(this.buf,this.pos);return this.pos+=4,q},readFixed64:function(){var q=Rv(this.buf,this.pos)+Rv(this.buf,this.pos+4)*xg;return this.pos+=8,q},readSFixed64:function(){var q=Rv(this.buf,this.pos)+kx(this.buf,this.pos+4)*xg;return this.pos+=8,q},readFloat:function(){var q=Iv(this.buf,this.pos,!0,23,4);return this.pos+=4,q},readDouble:function(){var q=Iv(this.buf,this.pos,!0,52,8);return this.pos+=8,q},readVarint:function(q){var D,Y,pe=this.buf;return D=127&(Y=pe[this.pos++]),Y<128?D:(D|=(127&(Y=pe[this.pos++]))<<7,Y<128?D:(D|=(127&(Y=pe[this.pos++]))<<14,Y<128?D:(D|=(127&(Y=pe[this.pos++]))<<21,Y<128?D:function(Ce,Ue,Ge){var ut,Tt,Ft=Ge.buf;if(ut=(112&(Tt=Ft[Ge.pos++]))>>4,Tt<128||(ut|=(127&(Tt=Ft[Ge.pos++]))<<3,Tt<128)||(ut|=(127&(Tt=Ft[Ge.pos++]))<<10,Tt<128)||(ut|=(127&(Tt=Ft[Ge.pos++]))<<17,Tt<128)||(ut|=(127&(Tt=Ft[Ge.pos++]))<<24,Tt<128)||(ut|=(1&(Tt=Ft[Ge.pos++]))<<31,Tt<128))return lv(Ce,ut,Ue);throw new Error("Expected varint not more than 10 bytes")}(D|=(15&(Y=pe[this.pos]))<<28,q,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var q=this.readVarint();return q%2==1?(q+1)/-2:q/2},readBoolean:function(){return!!this.readVarint()},readString:function(){var q=this.readVarint()+this.pos,D=this.pos;return this.pos=q,q-D>=12&&y0?function(Y,pe,Ce){return y0.decode(Y.subarray(pe,Ce))}(this.buf,D,q):function(Y,pe,Ce){for(var Ue="",Ge=pe;Ge239?4:$t>223?3:$t>191?2:1;if(Ge+Ar>Ce)break;Ar===1?$t<128&&(lr=$t):Ar===2?(192&(ut=Y[Ge+1]))==128&&(lr=(31&$t)<<6|63&ut)<=127&&(lr=null):Ar===3?(Tt=Y[Ge+2],(192&(ut=Y[Ge+1]))==128&&(192&Tt)==128&&((lr=(15&$t)<<12|(63&ut)<<6|63&Tt)<=2047||lr>=55296&&lr<=57343)&&(lr=null)):Ar===4&&(Tt=Y[Ge+2],Ft=Y[Ge+3],(192&(ut=Y[Ge+1]))==128&&(192&Tt)==128&&(192&Ft)==128&&((lr=(15&$t)<<18|(63&ut)<<12|(63&Tt)<<6|63&Ft)<=65535||lr>=1114112)&&(lr=null)),lr===null?(lr=65533,Ar=1):lr>65535&&(lr-=65536,Ue+=String.fromCharCode(lr>>>10&1023|55296),lr=56320|1023&lr),Ue+=String.fromCharCode(lr),Ge+=Ar}return Ue}(this.buf,D,q)},readBytes:function(){var q=this.readVarint()+this.pos,D=this.buf.subarray(this.pos,q);return this.pos=q,D},readPackedVarint:function(q,D){if(this.type!==Ql.Bytes)return q.push(this.readVarint(D));var Y=kp(this);for(q=q||[];this.pos127;);else if(D===Ql.Bytes)this.pos=this.readVarint()+this.pos;else if(D===Ql.Fixed32)this.pos+=4;else{if(D!==Ql.Fixed64)throw new Error("Unimplemented type: "+D);this.pos+=8}},writeTag:function(q,D){this.writeVarint(q<<3|D)},realloc:function(q){for(var D=this.length||16;D268435455||q<0?function(D,Y){var pe,Ce;if(D>=0?(pe=D%4294967296|0,Ce=D/4294967296|0):(Ce=~(-D/4294967296),4294967295^(pe=~(-D%4294967296))?pe=pe+1|0:(pe=0,Ce=Ce+1|0)),D>=18446744073709552e3||D<-18446744073709552e3)throw new Error("Given varint doesn't fit into 10 bytes");Y.realloc(10),function(Ue,Ge,ut){ut.buf[ut.pos++]=127&Ue|128,Ue>>>=7,ut.buf[ut.pos++]=127&Ue|128,Ue>>>=7,ut.buf[ut.pos++]=127&Ue|128,Ue>>>=7,ut.buf[ut.pos++]=127&Ue|128,ut.buf[ut.pos]=127&(Ue>>>=7)}(pe,0,Y),function(Ue,Ge){var ut=(7&Ue)<<4;Ge.buf[Ge.pos++]|=ut|((Ue>>>=3)?128:0),Ue&&(Ge.buf[Ge.pos++]=127&Ue|((Ue>>>=7)?128:0),Ue&&(Ge.buf[Ge.pos++]=127&Ue|((Ue>>>=7)?128:0),Ue&&(Ge.buf[Ge.pos++]=127&Ue|((Ue>>>=7)?128:0),Ue&&(Ge.buf[Ge.pos++]=127&Ue|((Ue>>>=7)?128:0),Ue&&(Ge.buf[Ge.pos++]=127&Ue)))))}(Ce,Y)}(q,this):(this.realloc(4),this.buf[this.pos++]=127&q|(q>127?128:0),q<=127||(this.buf[this.pos++]=127&(q>>>=7)|(q>127?128:0),q<=127||(this.buf[this.pos++]=127&(q>>>=7)|(q>127?128:0),q<=127||(this.buf[this.pos++]=q>>>7&127))))},writeSVarint:function(q){this.writeVarint(q<0?2*-q-1:2*q)},writeBoolean:function(q){this.writeVarint(!!q)},writeString:function(q){q=String(q),this.realloc(4*q.length),this.pos++;var D=this.pos;this.pos=function(pe,Ce,Ue){for(var Ge,ut,Tt=0;Tt55295&&Ge<57344){if(!ut){Ge>56319||Tt+1===Ce.length?(pe[Ue++]=239,pe[Ue++]=191,pe[Ue++]=189):ut=Ge;continue}if(Ge<56320){pe[Ue++]=239,pe[Ue++]=191,pe[Ue++]=189,ut=Ge;continue}Ge=ut-55296<<10|Ge-56320|65536,ut=null}else ut&&(pe[Ue++]=239,pe[Ue++]=191,pe[Ue++]=189,ut=null);Ge<128?pe[Ue++]=Ge:(Ge<2048?pe[Ue++]=Ge>>6|192:(Ge<65536?pe[Ue++]=Ge>>12|224:(pe[Ue++]=Ge>>18|240,pe[Ue++]=Ge>>12&63|128),pe[Ue++]=Ge>>6&63|128),pe[Ue++]=63&Ge|128)}return Ue}(this.buf,q,this.pos);var Y=this.pos-D;Y>=128&&_0(D,Y,this),this.pos=D-1,this.writeVarint(Y),this.pos+=Y},writeFloat:function(q){this.realloc(4),om(this.buf,q,this.pos,!0,23,4),this.pos+=4},writeDouble:function(q){this.realloc(8),om(this.buf,q,this.pos,!0,52,8),this.pos+=8},writeBytes:function(q){var D=q.length;this.writeVarint(D),this.realloc(D);for(var Y=0;Y=128&&_0(Y,pe,this),this.pos=Y-1,this.writeVarint(pe),this.pos+=pe},writeMessage:function(q,D,Y){this.writeTag(q,Ql.Bytes),this.writeRawMessage(D,Y)},writePackedVarint:function(q,D){D.length&&this.writeMessage(q,bg,D)},writePackedSVarint:function(q,D){D.length&&this.writeMessage(q,NT,D)},writePackedBoolean:function(q,D){D.length&&this.writeMessage(q,VT,D)},writePackedFloat:function(q,D){D.length&&this.writeMessage(q,UT,D)},writePackedDouble:function(q,D){D.length&&this.writeMessage(q,jT,D)},writePackedFixed32:function(q,D){D.length&&this.writeMessage(q,cC,D)},writePackedSFixed32:function(q,D){D.length&&this.writeMessage(q,qT,D)},writePackedFixed64:function(q,D){D.length&&this.writeMessage(q,HT,D)},writePackedSFixed64:function(q,D){D.length&&this.writeMessage(q,GT,D)},writeBytesField:function(q,D){this.writeTag(q,Ql.Bytes),this.writeBytes(D)},writeFixed32Field:function(q,D){this.writeTag(q,Ql.Fixed32),this.writeFixed32(D)},writeSFixed32Field:function(q,D){this.writeTag(q,Ql.Fixed32),this.writeSFixed32(D)},writeFixed64Field:function(q,D){this.writeTag(q,Ql.Fixed64),this.writeFixed64(D)},writeSFixed64Field:function(q,D){this.writeTag(q,Ql.Fixed64),this.writeSFixed64(D)},writeVarintField:function(q,D){this.writeTag(q,Ql.Varint),this.writeVarint(D)},writeSVarintField:function(q,D){this.writeTag(q,Ql.Varint),this.writeSVarint(D)},writeStringField:function(q,D){this.writeTag(q,Ql.Bytes),this.writeString(D)},writeFloatField:function(q,D){this.writeTag(q,Ql.Fixed32),this.writeFloat(D)},writeDoubleField:function(q,D){this.writeTag(q,Ql.Fixed64),this.writeDouble(D)},writeBooleanField:function(q,D){this.writeVarintField(q,!!D)}};var C1=r(Lh);let L1=3;function fC(q,D,Y){q===1&&Y.readMessage(WT,D)}function WT(q,D,Y){if(q===3){let{id:pe,bitmap:Ce,width:Ue,height:Ge,left:ut,top:Tt,advance:Ft}=Y.readMessage(Cx,{});D.push({id:pe,bitmap:new rs({width:Ue+2*L1,height:Ge+2*L1},Ce),metrics:{width:Ue,height:Ge,left:ut,top:Tt,advance:Ft}})}}function Cx(q,D,Y){q===1?D.id=Y.readVarint():q===2?D.bitmap=Y.readBytes():q===3?D.width=Y.readVarint():q===4?D.height=Y.readVarint():q===5?D.left=Y.readSVarint():q===6?D.top=Y.readSVarint():q===7&&(D.advance=Y.readVarint())}let Lx=L1;function P1(q){let D=0,Y=0;for(let Ge of q)D+=Ge.w*Ge.h,Y=Math.max(Y,Ge.w);q.sort((Ge,ut)=>ut.h-Ge.h);let pe=[{x:0,y:0,w:Math.max(Math.ceil(Math.sqrt(D/.95)),Y),h:1/0}],Ce=0,Ue=0;for(let Ge of q)for(let ut=pe.length-1;ut>=0;ut--){let Tt=pe[ut];if(!(Ge.w>Tt.w||Ge.h>Tt.h)){if(Ge.x=Tt.x,Ge.y=Tt.y,Ue=Math.max(Ue,Ge.y+Ge.h),Ce=Math.max(Ce,Ge.x+Ge.w),Ge.w===Tt.w&&Ge.h===Tt.h){let Ft=pe.pop();ut=0&&pe>=D&&w0[this.text.charCodeAt(pe)];pe--)Y--;this.text=this.text.substring(D,Y),this.sectionIndex=this.sectionIndex.slice(D,Y)}substring(D,Y){let pe=new sm;return pe.text=this.text.substring(D,Y),pe.sectionIndex=this.sectionIndex.slice(D,Y),pe.sections=this.sections,pe}toString(){return this.text}getMaxScale(){return this.sectionIndex.reduce((D,Y)=>Math.max(D,this.sections[Y].scale),0)}addTextSection(D,Y){this.text+=D.text,this.sections.push(Tg.forText(D.scale,D.fontStack||Y));let pe=this.sections.length-1;for(let Ce=0;Ce=63743?null:++this.imageSectionID:(this.imageSectionID=57344,this.imageSectionID)}}function Ag(q,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr){let la=sm.fromFeature(q,Ce),za;lr===e.ah.vertical&&la.verticalizePunctuation();let{processBidirectionalText:ja,processStyledBidirectionalText:gi}=js;if(ja&&la.sections.length===1){za=[];let Ei=ja(la.toString(),lm(la,Ft,Ue,D,pe,zr));for(let En of Ei){let fo=new sm;fo.text=En,fo.sections=la.sections;for(let ss=0;ss0&&Zp>nf&&(nf=Zp)}else{let tc=fo[Nl.fontStack],gf=tc&&tc[xu];if(gf&&gf.rect)dm=gf.rect,Ec=gf.metrics;else{let Zp=En[Nl.fontStack],Xd=Zp&&Zp[xu];if(!Xd)continue;Ec=Xd.metrics}Pp=(Uf-Nl.scale)*Bl}Wp?(Ei.verticalizable=!0,th.push({glyph:xu,imageName:_d,x:gs,y:_u+Pp,vertical:Wp,scale:Nl.scale,fontStack:Nl.fontStack,sectionIndex:zu,metrics:Ec,rect:dm}),gs+=hd*Nl.scale+Yi):(th.push({glyph:xu,imageName:_d,x:gs,y:_u+Pp,vertical:Wp,scale:Nl.scale,fontStack:Nl.fontStack,sectionIndex:zu,metrics:Ec,rect:dm}),gs+=Ec.advance*Nl.scale+Yi)}th.length!==0&&(pu=Math.max(gs-Yi,pu),uv(th,0,th.length-1,Gp,nf)),gs=0;let Lp=vn*Uf+nf;vh.lineOffset=Math.max(nf,Ih),_u+=Lp,Bf=Math.max(Lp,Bf),++dh}var Nf;let Yh=_u-Of,{horizontalAlign:Kh,verticalAlign:Jh}=A0(Uo);(function(Hc,Uf,Ih,vh,th,nf,Lp,pp,Nl){let zu=(Uf-Ih)*th,xu=0;xu=nf!==Lp?-pp*vh-Of:(-vh*Nl+.5)*Lp;for(let Pp of Hc)for(let Ec of Pp.positionedGlyphs)Ec.x+=zu,Ec.y+=xu})(Ei.positionedLines,Gp,Kh,Jh,pu,Bf,vn,Yh,eo.length),Ei.top+=-Jh*Yh,Ei.bottom=Ei.top+Yh,Ei.left+=-Kh*pu,Ei.right=Ei.left+pu}(hi,D,Y,pe,za,Ge,ut,Tt,lr,Ft,Ar,Kr),!function(Ei){for(let En of Ei)if(En.positionedGlyphs.length!==0)return!1;return!0}(ei)&&hi}let w0={9:!0,10:!0,11:!0,12:!0,13:!0,32:!0},ZT={10:!0,32:!0,38:!0,41:!0,43:!0,45:!0,47:!0,173:!0,183:!0,8203:!0,8208:!0,8211:!0,8231:!0},XT={40:!0};function Px(q,D,Y,pe,Ce,Ue){if(D.imageName){let Ge=pe[D.imageName];return Ge?Ge.displaySize[0]*D.scale*Bl/Ue+Ce:0}{let Ge=Y[D.fontStack],ut=Ge&&Ge[q];return ut?ut.metrics.advance*D.scale+Ce:0}}function Ix(q,D,Y,pe){let Ce=Math.pow(q-D,2);return pe?q=0,Ft=0;for(let lr=0;lrFt){let $t=Math.ceil(Ue/Ft);Ce*=$t/Ge,Ge=$t}return{x1:pe,y1:Ce,x2:pe+Ue,y2:Ce+Ge}}function zx(q,D,Y,pe,Ce,Ue){let Ge=q.image,ut;if(Ge.content){let za=Ge.content,ja=Ge.pixelRatio||1;ut=[za[0]/ja,za[1]/ja,Ge.displaySize[0]-za[2]/ja,Ge.displaySize[1]-za[3]/ja]}let Tt=D.left*Ue,Ft=D.right*Ue,$t,lr,Ar,zr;Y==="width"||Y==="both"?(zr=Ce[0]+Tt-pe[3],lr=Ce[0]+Ft+pe[1]):(zr=Ce[0]+(Tt+Ft-Ge.displaySize[0])/2,lr=zr+Ge.displaySize[0]);let Kr=D.top*Ue,la=D.bottom*Ue;return Y==="height"||Y==="both"?($t=Ce[1]+Kr-pe[0],Ar=Ce[1]+la+pe[2]):($t=Ce[1]+(Kr+la-Ge.displaySize[1])/2,Ar=$t+Ge.displaySize[1]),{image:Ge,top:$t,right:lr,bottom:Ar,left:zr,collisionPadding:ut}}let Mg=255,yd=128,cv=Mg*yd;function Fx(q,D){let{expression:Y}=D;if(Y.kind==="constant")return{kind:"constant",layoutSize:Y.evaluate(new Ts(q+1))};if(Y.kind==="source")return{kind:"source"};{let{zoomStops:pe,interpolationType:Ce}=Y,Ue=0;for(;UeGe.id),this.index=D.index,this.pixelRatio=D.pixelRatio,this.sourceLayerIndex=D.sourceLayerIndex,this.hasPattern=!1,this.hasRTLText=!1,this.sortKeyRanges=[],this.collisionCircleArray=[],this.placementInvProjMatrix=pn([]),this.placementViewportMatrix=pn([]);let Y=this.layers[0]._unevaluatedLayout._values;this.textSizeData=Fx(this.zoom,Y["text-size"]),this.iconSizeData=Fx(this.zoom,Y["icon-size"]);let pe=this.layers[0].layout,Ce=pe.get("symbol-sort-key"),Ue=pe.get("symbol-z-order");this.canOverlap=I1(pe,"text-overlap","text-allow-overlap")!=="never"||I1(pe,"icon-overlap","icon-allow-overlap")!=="never"||pe.get("text-ignore-placement")||pe.get("icon-ignore-placement"),this.sortFeaturesByKey=Ue!=="viewport-y"&&!Ce.isConstant(),this.sortFeaturesByY=(Ue==="viewport-y"||Ue==="auto"&&!this.sortFeaturesByKey)&&this.canOverlap,pe.get("symbol-placement")==="point"&&(this.writingModes=pe.get("text-writing-mode").map(Ge=>e.ah[Ge])),this.stateDependentLayerIds=this.layers.filter(Ge=>Ge.isStateDependent()).map(Ge=>Ge.id),this.sourceID=D.sourceID}createArrays(){this.text=new z1(new Gs(this.layers,this.zoom,D=>/^text/.test(D))),this.icon=new z1(new Gs(this.layers,this.zoom,D=>/^icon/.test(D))),this.glyphOffsetArray=new ts,this.lineVertexArray=new yo,this.symbolInstances=new ho,this.textAnchorOffsets=new ls}calculateGlyphDependencies(D,Y,pe,Ce,Ue){for(let Ge=0;Ge0)&&(Ge.value.kind!=="constant"||Ge.value.value.length>0),$t=Tt.value.kind!=="constant"||!!Tt.value.value||Object.keys(Tt.parameters).length>0,lr=Ue.get("symbol-sort-key");if(this.features=[],!Ft&&!$t)return;let Ar=Y.iconDependencies,zr=Y.glyphDependencies,Kr=Y.availableImages,la=new Ts(this.zoom);for(let{feature:za,id:ja,index:gi,sourceLayerIndex:ei}of D){let hi=Ce._featureFilter.needGeometry,Ei=Dl(za,hi);if(!Ce._featureFilter.filter(la,Ei,pe))continue;let En,fo;if(hi||(Ei.geometry=hl(za)),Ft){let eo=Ce.getValueAndResolveTokens("text-field",Ei,pe,Kr),vn=pa.factory(eo),Uo=this.hasRTLText=this.hasRTLText||D1(vn);(!Uo||js.getRTLTextPluginStatus()==="unavailable"||Uo&&js.isParsed())&&(En=ov(vn,Ce,Ei))}if($t){let eo=Ce.getValueAndResolveTokens("icon-image",Ei,pe,Kr);fo=eo instanceof qa?eo:qa.fromString(eo)}if(!En&&!fo)continue;let ss=this.sortFeaturesByKey?lr.evaluate(Ei,{},pe):void 0;if(this.features.push({id:ja,text:En,icon:fo,index:gi,sourceLayerIndex:ei,geometry:Ei.geometry,properties:za.properties,type:KT[za.type],sortKey:ss}),fo&&(Ar[fo.name]=!0),En){let eo=Ge.evaluate(Ei,{},pe).join(","),vn=Ue.get("text-rotation-alignment")!=="viewport"&&Ue.get("symbol-placement")!=="point";this.allowVerticalPlacement=this.writingModes&&this.writingModes.indexOf(e.ah.vertical)>=0;for(let Uo of En.sections)if(Uo.image)Ar[Uo.image.name]=!0;else{let Mo=co(En.toString()),xo=Uo.fontStack||eo,Yi=zr[xo]=zr[xo]||{};this.calculateGlyphDependencies(Uo.text,Yi,vn,this.allowVerticalPlacement,Mo)}}}Ue.get("symbol-placement")==="line"&&(this.features=function(za){let ja={},gi={},ei=[],hi=0;function Ei(eo){ei.push(za[eo]),hi++}function En(eo,vn,Uo){let Mo=gi[eo];return delete gi[eo],gi[vn]=Mo,ei[Mo].geometry[0].pop(),ei[Mo].geometry[0]=ei[Mo].geometry[0].concat(Uo[0]),Mo}function fo(eo,vn,Uo){let Mo=ja[vn];return delete ja[vn],ja[eo]=Mo,ei[Mo].geometry[0].shift(),ei[Mo].geometry[0]=Uo[0].concat(ei[Mo].geometry[0]),Mo}function ss(eo,vn,Uo){let Mo=Uo?vn[0][vn[0].length-1]:vn[0][0];return`${eo}:${Mo.x}:${Mo.y}`}for(let eo=0;eoeo.geometry)}(this.features)),this.sortFeaturesByKey&&this.features.sort((za,ja)=>za.sortKey-ja.sortKey)}update(D,Y,pe){this.stateDependentLayers.length&&(this.text.programConfigurations.updatePaintArrays(D,Y,this.layers,pe),this.icon.programConfigurations.updatePaintArrays(D,Y,this.layers,pe))}isEmpty(){return this.symbolInstances.length===0&&!this.hasRTLText}uploadPending(){return!this.uploaded||this.text.programConfigurations.needsUpload||this.icon.programConfigurations.needsUpload}upload(D){!this.uploaded&&this.hasDebugData()&&(this.textCollisionBox.upload(D),this.iconCollisionBox.upload(D)),this.text.upload(D,this.sortFeaturesByY,!this.uploaded,this.text.programConfigurations.needsUpload),this.icon.upload(D,this.sortFeaturesByY,!this.uploaded,this.icon.programConfigurations.needsUpload),this.uploaded=!0}destroyDebugData(){this.textCollisionBox.destroy(),this.iconCollisionBox.destroy()}destroy(){this.text.destroy(),this.icon.destroy(),this.hasDebugData()&&this.destroyDebugData()}addToLineVertexArray(D,Y){let pe=this.lineVertexArray.length;if(D.segment!==void 0){let Ce=D.dist(Y[D.segment+1]),Ue=D.dist(Y[D.segment]),Ge={};for(let ut=D.segment+1;ut=0;ut--)Ge[ut]={x:Y[ut].x,y:Y[ut].y,tileUnitDistanceFromAnchor:Ue},ut>0&&(Ue+=Y[ut-1].dist(Y[ut]));for(let ut=0;ut0}hasIconData(){return this.icon.segments.get().length>0}hasDebugData(){return this.textCollisionBox&&this.iconCollisionBox}hasTextCollisionBoxData(){return this.hasDebugData()&&this.textCollisionBox.segments.get().length>0}hasIconCollisionBoxData(){return this.hasDebugData()&&this.iconCollisionBox.segments.get().length>0}addIndicesForPlacedSymbol(D,Y){let pe=D.placedSymbolArray.get(Y),Ce=pe.vertexStartIndex+4*pe.numGlyphs;for(let Ue=pe.vertexStartIndex;UeCe[ut]-Ce[Tt]||Ue[Tt]-Ue[ut]),Ge}addToSortKeyRanges(D,Y){let pe=this.sortKeyRanges[this.sortKeyRanges.length-1];pe&&pe.sortKey===Y?pe.symbolInstanceEnd=D+1:this.sortKeyRanges.push({sortKey:Y,symbolInstanceStart:D,symbolInstanceEnd:D+1})}sortFeatures(D){if(this.sortFeaturesByY&&this.sortedAngle!==D&&!(this.text.segments.get().length>1||this.icon.segments.get().length>1)){this.symbolInstanceIndexes=this.getSortedSymbolIndexes(D),this.sortedAngle=D,this.text.indexArray.clear(),this.icon.indexArray.clear(),this.featureSortOrder=[];for(let Y of this.symbolInstanceIndexes){let pe=this.symbolInstances.get(Y);this.featureSortOrder.push(pe.featureIndex),[pe.rightJustifiedTextSymbolIndex,pe.centerJustifiedTextSymbolIndex,pe.leftJustifiedTextSymbolIndex].forEach((Ce,Ue,Ge)=>{Ce>=0&&Ge.indexOf(Ce)===Ue&&this.addIndicesForPlacedSymbol(this.text,Ce)}),pe.verticalPlacedTextSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.text,pe.verticalPlacedTextSymbolIndex),pe.placedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,pe.placedIconSymbolIndex),pe.verticalPlacedIconSymbolIndex>=0&&this.addIndicesForPlacedSymbol(this.icon,pe.verticalPlacedIconSymbolIndex)}this.text.indexBuffer&&this.text.indexBuffer.updateData(this.text.indexArray),this.icon.indexBuffer&&this.icon.indexBuffer.updateData(this.icon.indexArray)}}}let qc,Eg;ti("SymbolBucket",um,{omit:["layers","collisionBoxArray","features","compareText"]}),um.MAX_GLYPHS=65535,um.addDynamicAttributes=R1;var M0={get paint(){return Eg=Eg||new Oe({"icon-opacity":new Po(ie.paint_symbol["icon-opacity"]),"icon-color":new Po(ie.paint_symbol["icon-color"]),"icon-halo-color":new Po(ie.paint_symbol["icon-halo-color"]),"icon-halo-width":new Po(ie.paint_symbol["icon-halo-width"]),"icon-halo-blur":new Po(ie.paint_symbol["icon-halo-blur"]),"icon-translate":new ro(ie.paint_symbol["icon-translate"]),"icon-translate-anchor":new ro(ie.paint_symbol["icon-translate-anchor"]),"text-opacity":new Po(ie.paint_symbol["text-opacity"]),"text-color":new Po(ie.paint_symbol["text-color"],{runtimeType:Ot,getOverride:q=>q.textColor,hasOverride:q=>!!q.textColor}),"text-halo-color":new Po(ie.paint_symbol["text-halo-color"]),"text-halo-width":new Po(ie.paint_symbol["text-halo-width"]),"text-halo-blur":new Po(ie.paint_symbol["text-halo-blur"]),"text-translate":new ro(ie.paint_symbol["text-translate"]),"text-translate-anchor":new ro(ie.paint_symbol["text-translate-anchor"])})},get layout(){return qc=qc||new Oe({"symbol-placement":new ro(ie.layout_symbol["symbol-placement"]),"symbol-spacing":new ro(ie.layout_symbol["symbol-spacing"]),"symbol-avoid-edges":new ro(ie.layout_symbol["symbol-avoid-edges"]),"symbol-sort-key":new Po(ie.layout_symbol["symbol-sort-key"]),"symbol-z-order":new ro(ie.layout_symbol["symbol-z-order"]),"icon-allow-overlap":new ro(ie.layout_symbol["icon-allow-overlap"]),"icon-overlap":new ro(ie.layout_symbol["icon-overlap"]),"icon-ignore-placement":new ro(ie.layout_symbol["icon-ignore-placement"]),"icon-optional":new ro(ie.layout_symbol["icon-optional"]),"icon-rotation-alignment":new ro(ie.layout_symbol["icon-rotation-alignment"]),"icon-size":new Po(ie.layout_symbol["icon-size"]),"icon-text-fit":new ro(ie.layout_symbol["icon-text-fit"]),"icon-text-fit-padding":new ro(ie.layout_symbol["icon-text-fit-padding"]),"icon-image":new Po(ie.layout_symbol["icon-image"]),"icon-rotate":new Po(ie.layout_symbol["icon-rotate"]),"icon-padding":new Po(ie.layout_symbol["icon-padding"]),"icon-keep-upright":new ro(ie.layout_symbol["icon-keep-upright"]),"icon-offset":new Po(ie.layout_symbol["icon-offset"]),"icon-anchor":new Po(ie.layout_symbol["icon-anchor"]),"icon-pitch-alignment":new ro(ie.layout_symbol["icon-pitch-alignment"]),"text-pitch-alignment":new ro(ie.layout_symbol["text-pitch-alignment"]),"text-rotation-alignment":new ro(ie.layout_symbol["text-rotation-alignment"]),"text-field":new Po(ie.layout_symbol["text-field"]),"text-font":new Po(ie.layout_symbol["text-font"]),"text-size":new Po(ie.layout_symbol["text-size"]),"text-max-width":new Po(ie.layout_symbol["text-max-width"]),"text-line-height":new ro(ie.layout_symbol["text-line-height"]),"text-letter-spacing":new Po(ie.layout_symbol["text-letter-spacing"]),"text-justify":new Po(ie.layout_symbol["text-justify"]),"text-radial-offset":new Po(ie.layout_symbol["text-radial-offset"]),"text-variable-anchor":new ro(ie.layout_symbol["text-variable-anchor"]),"text-variable-anchor-offset":new Po(ie.layout_symbol["text-variable-anchor-offset"]),"text-anchor":new Po(ie.layout_symbol["text-anchor"]),"text-max-angle":new ro(ie.layout_symbol["text-max-angle"]),"text-writing-mode":new ro(ie.layout_symbol["text-writing-mode"]),"text-rotate":new Po(ie.layout_symbol["text-rotate"]),"text-padding":new ro(ie.layout_symbol["text-padding"]),"text-keep-upright":new ro(ie.layout_symbol["text-keep-upright"]),"text-transform":new Po(ie.layout_symbol["text-transform"]),"text-offset":new Po(ie.layout_symbol["text-offset"]),"text-allow-overlap":new ro(ie.layout_symbol["text-allow-overlap"]),"text-overlap":new ro(ie.layout_symbol["text-overlap"]),"text-ignore-placement":new ro(ie.layout_symbol["text-ignore-placement"]),"text-optional":new ro(ie.layout_symbol["text-optional"])})}};class kg{constructor(D){if(D.property.overrides===void 0)throw new Error("overrides must be provided to instantiate FormatSectionOverride class");this.type=D.property.overrides?D.property.overrides.runtimeType:nt,this.defaultValue=D}evaluate(D){if(D.formattedSection){let Y=this.defaultValue.property.overrides;if(Y&&Y.hasOverride(D.formattedSection))return Y.getOverride(D.formattedSection)}return D.feature&&D.featureState?this.defaultValue.evaluate(D.feature,D.featureState):this.defaultValue.property.specification.default}eachChild(D){this.defaultValue.isConstant()||D(this.defaultValue.value._styleExpression.expression)}outputDefined(){return!1}serialize(){return null}}ti("FormatSectionOverride",kg,{omit:["defaultValue"]});class Dv extends ae{constructor(D){super(D,M0)}recalculate(D,Y){if(super.recalculate(D,Y),this.layout.get("icon-rotation-alignment")==="auto"&&(this.layout._values["icon-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-rotation-alignment")==="auto"&&(this.layout._values["text-rotation-alignment"]=this.layout.get("symbol-placement")!=="point"?"map":"viewport"),this.layout.get("text-pitch-alignment")==="auto"&&(this.layout._values["text-pitch-alignment"]=this.layout.get("text-rotation-alignment")==="map"?"map":"viewport"),this.layout.get("icon-pitch-alignment")==="auto"&&(this.layout._values["icon-pitch-alignment"]=this.layout.get("icon-rotation-alignment")),this.layout.get("symbol-placement")==="point"){let pe=this.layout.get("text-writing-mode");if(pe){let Ce=[];for(let Ue of pe)Ce.indexOf(Ue)<0&&Ce.push(Ue);this.layout._values["text-writing-mode"]=Ce}else this.layout._values["text-writing-mode"]=["horizontal"]}this._setPaintOverrides()}getValueAndResolveTokens(D,Y,pe,Ce){let Ue=this.layout.get(D).evaluate(Y,{},pe,Ce),Ge=this._unevaluatedLayout._values[D];return Ge.isDataDriven()||xc(Ge.value)||!Ue?Ue:function(ut,Tt){return Tt.replace(/{([^{}]+)}/g,(Ft,$t)=>ut&&$t in ut?String(ut[$t]):"")}(Y.properties,Ue)}createBucket(D){return new um(D)}queryRadius(){return 0}queryIntersectsFeature(){throw new Error("Should take a different path in FeatureIndex")}_setPaintOverrides(){for(let D of M0.paint.overridableProperties){if(!Dv.hasPaintOverride(this.layout,D))continue;let Y=this.paint.get(D),pe=new kg(Y),Ce=new Cu(pe,Y.property.specification),Ue=null;Ue=Y.value.kind==="constant"||Y.value.kind==="source"?new Fc("source",Ce):new $u("composite",Ce,Y.value.zoomStops),this.paint._values[D]=new Iu(Y.property,Ue,Y.parameters)}}_handleOverridablePaintPropertyUpdate(D,Y,pe){return!(!this.layout||Y.isDataDriven()||pe.isDataDriven())&&Dv.hasPaintOverride(this.layout,D)}static hasPaintOverride(D,Y){let pe=D.get("text-field"),Ce=M0.paint.properties[Y],Ue=!1,Ge=ut=>{for(let Tt of ut)if(Ce.overrides&&Ce.overrides.hasOverride(Tt))return void(Ue=!0)};if(pe.value.kind==="constant"&&pe.value.value instanceof pa)Ge(pe.value.value.sections);else if(pe.value.kind==="source"){let ut=Ft=>{Ue||(Ft instanceof Er&&mt(Ft.value)===Cr?Ge(Ft.value.sections):Ft instanceof ys?Ge(Ft.sections):Ft.eachChild(ut))},Tt=pe.value;Tt._styleExpression&&ut(Tt._styleExpression.expression)}return Ue}}let Ox;var Cg={get paint(){return Ox=Ox||new Oe({"background-color":new ro(ie.paint_background["background-color"]),"background-pattern":new hc(ie.paint_background["background-pattern"]),"background-opacity":new ro(ie.paint_background["background-opacity"])})}};class $T extends ae{constructor(D){super(D,Cg)}}let F1;var Bx={get paint(){return F1=F1||new Oe({"raster-opacity":new ro(ie.paint_raster["raster-opacity"]),"raster-hue-rotate":new ro(ie.paint_raster["raster-hue-rotate"]),"raster-brightness-min":new ro(ie.paint_raster["raster-brightness-min"]),"raster-brightness-max":new ro(ie.paint_raster["raster-brightness-max"]),"raster-saturation":new ro(ie.paint_raster["raster-saturation"]),"raster-contrast":new ro(ie.paint_raster["raster-contrast"]),"raster-resampling":new ro(ie.paint_raster["raster-resampling"]),"raster-fade-duration":new ro(ie.paint_raster["raster-fade-duration"])})}};class Lg extends ae{constructor(D){super(D,Bx)}}class O1 extends ae{constructor(D){super(D,{}),this.onAdd=Y=>{this.implementation.onAdd&&this.implementation.onAdd(Y,Y.painter.context.gl)},this.onRemove=Y=>{this.implementation.onRemove&&this.implementation.onRemove(Y,Y.painter.context.gl)},this.implementation=D}is3D(){return this.implementation.renderingMode==="3d"}hasOffscreenPass(){return this.implementation.prerender!==void 0}recalculate(){}updateTransitions(){}hasTransition(){return!1}serialize(){throw new Error("Custom layers cannot be serialized")}}class B1{constructor(D){this._methodToThrottle=D,this._triggered=!1,typeof MessageChannel<"u"&&(this._channel=new MessageChannel,this._channel.port2.onmessage=()=>{this._triggered=!1,this._methodToThrottle()})}trigger(){this._triggered||(this._triggered=!0,this._channel?this._channel.port1.postMessage(!0):setTimeout(()=>{this._triggered=!1,this._methodToThrottle()},0))}remove(){delete this._channel,this._methodToThrottle=()=>{}}}let N1=63710088e-1;class Gd{constructor(D,Y){if(isNaN(D)||isNaN(Y))throw new Error(`Invalid LngLat object: (${D}, ${Y})`);if(this.lng=+D,this.lat=+Y,this.lat>90||this.lat<-90)throw new Error("Invalid LngLat latitude value: must be between -90 and 90")}wrap(){return new Gd(S(this.lng,-180,180),this.lat)}toArray(){return[this.lng,this.lat]}toString(){return`LngLat(${this.lng}, ${this.lat})`}distanceTo(D){let Y=Math.PI/180,pe=this.lat*Y,Ce=D.lat*Y,Ue=Math.sin(pe)*Math.sin(Ce)+Math.cos(pe)*Math.cos(Ce)*Math.cos((D.lng-this.lng)*Y);return N1*Math.acos(Math.min(Ue,1))}static convert(D){if(D instanceof Gd)return D;if(Array.isArray(D)&&(D.length===2||D.length===3))return new Gd(Number(D[0]),Number(D[1]));if(!Array.isArray(D)&&typeof D=="object"&&D!==null)return new Gd(Number("lng"in D?D.lng:D.lon),Number(D.lat));throw new Error("`LngLatLike` argument must be specified as a LngLat instance, an object {lng: , lat: }, an object {lon: , lat: }, or an array of [, ]")}}let cm=2*Math.PI*N1;function Nx(q){return cm*Math.cos(q*Math.PI/180)}function E0(q){return(180+q)/360}function Ux(q){return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+q*Math.PI/360)))/360}function k0(q,D){return q/Nx(D)}function Pg(q){return 360/Math.PI*Math.atan(Math.exp((180-360*q)*Math.PI/180))-90}class Ig{constructor(D,Y,pe=0){this.x=+D,this.y=+Y,this.z=+pe}static fromLngLat(D,Y=0){let pe=Gd.convert(D);return new Ig(E0(pe.lng),Ux(pe.lat),k0(Y,pe.lat))}toLngLat(){return new Gd(360*this.x-180,Pg(this.y))}toAltitude(){return this.z*Nx(Pg(this.y))}meterInMercatorCoordinateUnits(){return 1/cm*(D=Pg(this.y),1/Math.cos(D*Math.PI/180));var D}}function ad(q,D,Y){var pe=2*Math.PI*6378137/256/Math.pow(2,Y);return[q*pe-2*Math.PI*6378137/2,D*pe-2*Math.PI*6378137/2]}class U1{constructor(D,Y,pe){if(!function(Ce,Ue,Ge){return!(Ce<0||Ce>25||Ge<0||Ge>=Math.pow(2,Ce)||Ue<0||Ue>=Math.pow(2,Ce))}(D,Y,pe))throw new Error(`x=${Y}, y=${pe}, z=${D} outside of bounds. 0<=x<${Math.pow(2,D)}, 0<=y<${Math.pow(2,D)} 0<=z<=25 `);this.z=D,this.x=Y,this.y=pe,this.key=Rg(0,D,D,Y,pe)}equals(D){return this.z===D.z&&this.x===D.x&&this.y===D.y}url(D,Y,pe){let Ce=(Ge=this.y,ut=this.z,Tt=ad(256*(Ue=this.x),256*(Ge=Math.pow(2,ut)-Ge-1),ut),Ft=ad(256*(Ue+1),256*(Ge+1),ut),Tt[0]+","+Tt[1]+","+Ft[0]+","+Ft[1]);var Ue,Ge,ut,Tt,Ft;let $t=function(lr,Ar,zr){let Kr,la="";for(let za=lr;za>0;za--)Kr=1<1?"@2x":"").replace(/{quadkey}/g,$t).replace(/{bbox-epsg-3857}/g,Ce)}isChildOf(D){let Y=this.z-D.z;return Y>0&&D.x===this.x>>Y&&D.y===this.y>>Y}getTilePoint(D){let Y=Math.pow(2,this.z);return new i((D.x*Y-this.x)*ao,(D.y*Y-this.y)*ao)}toString(){return`${this.z}/${this.x}/${this.y}`}}class jx{constructor(D,Y){this.wrap=D,this.canonical=Y,this.key=Rg(D,Y.z,Y.z,Y.x,Y.y)}}class Hp{constructor(D,Y,pe,Ce,Ue){if(D= z; overscaledZ = ${D}; z = ${pe}`);this.overscaledZ=D,this.wrap=Y,this.canonical=new U1(pe,+Ce,+Ue),this.key=Rg(Y,D,pe,Ce,Ue)}clone(){return new Hp(this.overscaledZ,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)}equals(D){return this.overscaledZ===D.overscaledZ&&this.wrap===D.wrap&&this.canonical.equals(D.canonical)}scaledTo(D){if(D>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${D}; overscaledZ = ${this.overscaledZ}`);let Y=this.canonical.z-D;return D>this.canonical.z?new Hp(D,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y):new Hp(D,this.wrap,D,this.canonical.x>>Y,this.canonical.y>>Y)}calculateScaledKey(D,Y){if(D>this.overscaledZ)throw new Error(`targetZ > this.overscaledZ; targetZ = ${D}; overscaledZ = ${this.overscaledZ}`);let pe=this.canonical.z-D;return D>this.canonical.z?Rg(this.wrap*+Y,D,this.canonical.z,this.canonical.x,this.canonical.y):Rg(this.wrap*+Y,D,D,this.canonical.x>>pe,this.canonical.y>>pe)}isChildOf(D){if(D.wrap!==this.wrap)return!1;let Y=this.canonical.z-D.canonical.z;return D.overscaledZ===0||D.overscaledZ>Y&&D.canonical.y===this.canonical.y>>Y}children(D){if(this.overscaledZ>=D)return[new Hp(this.overscaledZ+1,this.wrap,this.canonical.z,this.canonical.x,this.canonical.y)];let Y=this.canonical.z+1,pe=2*this.canonical.x,Ce=2*this.canonical.y;return[new Hp(Y,this.wrap,Y,pe,Ce),new Hp(Y,this.wrap,Y,pe+1,Ce),new Hp(Y,this.wrap,Y,pe,Ce+1),new Hp(Y,this.wrap,Y,pe+1,Ce+1)]}isLessThan(D){return this.wrapD.wrap)&&(this.overscaledZD.overscaledZ)&&(this.canonical.xD.canonical.x)&&this.canonical.ythis.max&&(this.max=lr),lr=this.dim+1||Y<-1||Y>=this.dim+1)throw new RangeError("out of range source coordinates for DEM data");return(Y+1)*this.stride+(D+1)}unpack(D,Y,pe){return D*this.redFactor+Y*this.greenFactor+pe*this.blueFactor-this.baseShift}getPixels(){return new wn({width:this.stride,height:this.stride},new Uint8Array(this.data.buffer))}backfillBorder(D,Y,pe){if(this.dim!==D.dim)throw new Error("dem dimension mismatch");let Ce=Y*this.dim,Ue=Y*this.dim+this.dim,Ge=pe*this.dim,ut=pe*this.dim+this.dim;switch(Y){case-1:Ce=Ue-1;break;case 1:Ue=Ce+1}switch(pe){case-1:Ge=ut-1;break;case 1:ut=Ge+1}let Tt=-Y*this.dim,Ft=-pe*this.dim;for(let $t=Ge;$t=this._numberToString.length)throw new Error(`Out of bounds. Index requested n=${D} can't be >= this._numberToString.length ${this._numberToString.length}`);return this._numberToString[D]}}class j1{constructor(D,Y,pe,Ce,Ue){this.type="Feature",this._vectorTileFeature=D,D._z=Y,D._x=pe,D._y=Ce,this.properties=D.properties,this.id=Ue}get geometry(){return this._geometry===void 0&&(this._geometry=this._vectorTileFeature.toGeoJSON(this._vectorTileFeature._x,this._vectorTileFeature._y,this._vectorTileFeature._z).geometry),this._geometry}set geometry(D){this._geometry=D}toJSON(){let D={geometry:this.geometry};for(let Y in this)Y!=="_geometry"&&Y!=="_vectorTileFeature"&&(D[Y]=this[Y]);return D}}class zv{constructor(D,Y){this.tileID=D,this.x=D.canonical.x,this.y=D.canonical.y,this.z=D.canonical.z,this.grid=new _i(ao,16,0),this.grid3D=new _i(ao,16,0),this.featureIndexArray=new Ys,this.promoteId=Y}insert(D,Y,pe,Ce,Ue,Ge){let ut=this.featureIndexArray.length;this.featureIndexArray.emplaceBack(pe,Ce,Ue);let Tt=Ge?this.grid3D:this.grid;for(let Ft=0;Ft=0&&lr[3]>=0&&Tt.insert(ut,lr[0],lr[1],lr[2],lr[3])}}loadVTLayers(){return this.vtLayers||(this.vtLayers=new Oa.VectorTile(new C1(this.rawTileData)).layers,this.sourceLayerCoder=new qx(this.vtLayers?Object.keys(this.vtLayers).sort():["_geojsonTileLayer"])),this.vtLayers}query(D,Y,pe,Ce){this.loadVTLayers();let Ue=D.params||{},Ge=ao/D.tileSize/D.scale,ut=bc(Ue.filter),Tt=D.queryGeometry,Ft=D.queryPadding*Ge,$t=Gx(Tt),lr=this.grid.query($t.minX-Ft,$t.minY-Ft,$t.maxX+Ft,$t.maxY+Ft),Ar=Gx(D.cameraQueryGeometry),zr=this.grid3D.query(Ar.minX-Ft,Ar.minY-Ft,Ar.maxX+Ft,Ar.maxY+Ft,(za,ja,gi,ei)=>function(hi,Ei,En,fo,ss){for(let vn of hi)if(Ei<=vn.x&&En<=vn.y&&fo>=vn.x&&ss>=vn.y)return!0;let eo=[new i(Ei,En),new i(Ei,ss),new i(fo,ss),new i(fo,En)];if(hi.length>2){for(let vn of eo)if(cn(hi,vn))return!0}for(let vn=0;vn(ei||(ei=hl(hi)),Ei.queryIntersectsFeature(Tt,hi,En,ei,this.z,D.transform,Ge,D.pixelPosMatrix)))}return Kr}loadMatchingFeature(D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr){let Ar=this.bucketLayerIDs[Y];if(Ge&&!function(za,ja){for(let gi=0;gi=0)return!0;return!1}(Ge,Ar))return;let zr=this.sourceLayerCoder.decode(pe),Kr=this.vtLayers[zr].feature(Ce);if(Ue.needGeometry){let za=Dl(Kr,!0);if(!Ue.filter(new Ts(this.tileID.overscaledZ),za,this.tileID.canonical))return}else if(!Ue.filter(new Ts(this.tileID.overscaledZ),Kr))return;let la=this.getId(Kr,zr);for(let za=0;za{let ut=D instanceof Ac?D.get(Ge):null;return ut&&ut.evaluate?ut.evaluate(Y,pe,Ce):ut})}function Gx(q){let D=1/0,Y=1/0,pe=-1/0,Ce=-1/0;for(let Ue of q)D=Math.min(D,Ue.x),Y=Math.min(Y,Ue.y),pe=Math.max(pe,Ue.x),Ce=Math.max(Ce,Ue.y);return{minX:D,minY:Y,maxX:pe,maxY:Ce}}function QT(q,D){return D-q}function Wx(q,D,Y,pe,Ce){let Ue=[];for(let Ge=0;Ge=pe&&lr.x>=pe||($t.x>=pe?$t=new i(pe,$t.y+(pe-$t.x)/(lr.x-$t.x)*(lr.y-$t.y))._round():lr.x>=pe&&(lr=new i(pe,$t.y+(pe-$t.x)/(lr.x-$t.x)*(lr.y-$t.y))._round()),$t.y>=Ce&&lr.y>=Ce||($t.y>=Ce?$t=new i($t.x+(Ce-$t.y)/(lr.y-$t.y)*(lr.x-$t.x),Ce)._round():lr.y>=Ce&&(lr=new i($t.x+(Ce-$t.y)/(lr.y-$t.y)*(lr.x-$t.x),Ce)._round()),Tt&&$t.equals(Tt[Tt.length-1])||(Tt=[$t],Ue.push(Tt)),Tt.push(lr)))))}}return Ue}ti("FeatureIndex",zv,{omit:["rawTileData","sourceLayerCoder"]});class Wd extends i{constructor(D,Y,pe,Ce){super(D,Y),this.angle=pe,Ce!==void 0&&(this.segment=Ce)}clone(){return new Wd(this.x,this.y,this.angle,this.segment)}}function V1(q,D,Y,pe,Ce){if(D.segment===void 0||Y===0)return!0;let Ue=D,Ge=D.segment+1,ut=0;for(;ut>-Y/2;){if(Ge--,Ge<0)return!1;ut-=q[Ge].dist(Ue),Ue=q[Ge]}ut+=q[Ge].dist(q[Ge+1]),Ge++;let Tt=[],Ft=0;for(;utpe;)Ft-=Tt.shift().angleDelta;if(Ft>Ce)return!1;Ge++,ut+=$t.dist(lr)}return!0}function Zx(q){let D=0;for(let Y=0;YFt){let Kr=(Ft-Tt)/zr,la=$n.number(lr.x,Ar.x,Kr),za=$n.number(lr.y,Ar.y,Kr),ja=new Wd(la,za,Ar.angleTo(lr),$t);return ja._round(),!Ge||V1(q,ja,ut,Ge,D)?ja:void 0}Tt+=zr}}function tA(q,D,Y,pe,Ce,Ue,Ge,ut,Tt){let Ft=Xx(pe,Ue,Ge),$t=Yx(pe,Ce),lr=$t*Ge,Ar=q[0].x===0||q[0].x===Tt||q[0].y===0||q[0].y===Tt;return D-lr=0&&hi=0&&Ei=0&&Ar+Ft<=$t){let En=new Wd(hi,Ei,gi,Kr);En._round(),pe&&!V1(q,En,Ue,pe,Ce)||zr.push(En)}}lr+=ja}return ut||zr.length||Ge||(zr=Kx(q,lr/2,Y,pe,Ce,Ue,Ge,!0,Tt)),zr}ti("Anchor",Wd);let fm=Ph;function Jx(q,D,Y,pe){let Ce=[],Ue=q.image,Ge=Ue.pixelRatio,ut=Ue.paddedRect.w-2*fm,Tt=Ue.paddedRect.h-2*fm,Ft={x1:q.left,y1:q.top,x2:q.right,y2:q.bottom},$t=Ue.stretchX||[[0,ut]],lr=Ue.stretchY||[[0,Tt]],Ar=(Yi,Ko)=>Yi+Ko[1]-Ko[0],zr=$t.reduce(Ar,0),Kr=lr.reduce(Ar,0),la=ut-zr,za=Tt-Kr,ja=0,gi=zr,ei=0,hi=Kr,Ei=0,En=la,fo=0,ss=za;if(Ue.content&&pe){let Yi=Ue.content,Ko=Yi[2]-Yi[0],bo=Yi[3]-Yi[1];(Ue.textFitWidth||Ue.textFitHeight)&&(Ft=Dx(q)),ja=Zd($t,0,Yi[0]),ei=Zd(lr,0,Yi[1]),gi=Zd($t,Yi[0],Yi[2]),hi=Zd(lr,Yi[1],Yi[3]),Ei=Yi[0]-ja,fo=Yi[1]-ei,En=Ko-gi,ss=bo-hi}let eo=Ft.x1,vn=Ft.y1,Uo=Ft.x2-eo,Mo=Ft.y2-vn,xo=(Yi,Ko,bo,gs)=>{let _u=C0(Yi.stretch-ja,gi,Uo,eo),pu=hm(Yi.fixed-Ei,En,Yi.stretch,zr),Bf=C0(Ko.stretch-ei,hi,Mo,vn),Gp=hm(Ko.fixed-fo,ss,Ko.stretch,Kr),dh=C0(bo.stretch-ja,gi,Uo,eo),Nf=hm(bo.fixed-Ei,En,bo.stretch,zr),Yh=C0(gs.stretch-ei,hi,Mo,vn),Kh=hm(gs.fixed-fo,ss,gs.stretch,Kr),Jh=new i(_u,Bf),Hc=new i(dh,Bf),Uf=new i(dh,Yh),Ih=new i(_u,Yh),vh=new i(pu/Ge,Gp/Ge),th=new i(Nf/Ge,Kh/Ge),nf=D*Math.PI/180;if(nf){let Nl=Math.sin(nf),zu=Math.cos(nf),xu=[zu,-Nl,Nl,zu];Jh._matMult(xu),Hc._matMult(xu),Ih._matMult(xu),Uf._matMult(xu)}let Lp=Yi.stretch+Yi.fixed,pp=Ko.stretch+Ko.fixed;return{tl:Jh,tr:Hc,bl:Ih,br:Uf,tex:{x:Ue.paddedRect.x+fm+Lp,y:Ue.paddedRect.y+fm+pp,w:bo.stretch+bo.fixed-Lp,h:gs.stretch+gs.fixed-pp},writingMode:void 0,glyphOffset:[0,0],sectionIndex:0,pixelOffsetTL:vh,pixelOffsetBR:th,minFontScaleX:En/Ge/Uo,minFontScaleY:ss/Ge/Mo,isSDF:Y}};if(pe&&(Ue.stretchX||Ue.stretchY)){let Yi=$x($t,la,zr),Ko=$x(lr,za,Kr);for(let bo=0;bo0&&(la=Math.max(10,la),this.circleDiameter=la)}else{let Ar=!((lr=Ge.image)===null||lr===void 0)&&lr.content&&(Ge.image.textFitWidth||Ge.image.textFitHeight)?Dx(Ge):{x1:Ge.left,y1:Ge.top,x2:Ge.right,y2:Ge.bottom};Ar.y1=Ar.y1*ut-Tt[0],Ar.y2=Ar.y2*ut+Tt[2],Ar.x1=Ar.x1*ut-Tt[3],Ar.x2=Ar.x2*ut+Tt[1];let zr=Ge.collisionPadding;if(zr&&(Ar.x1-=zr[0]*ut,Ar.y1-=zr[1]*ut,Ar.x2+=zr[2]*ut,Ar.y2+=zr[3]*ut),$t){let Kr=new i(Ar.x1,Ar.y1),la=new i(Ar.x2,Ar.y1),za=new i(Ar.x1,Ar.y2),ja=new i(Ar.x2,Ar.y2),gi=$t*Math.PI/180;Kr._rotate(gi),la._rotate(gi),za._rotate(gi),ja._rotate(gi),Ar.x1=Math.min(Kr.x,la.x,za.x,ja.x),Ar.x2=Math.max(Kr.x,la.x,za.x,ja.x),Ar.y1=Math.min(Kr.y,la.y,za.y,ja.y),Ar.y2=Math.max(Kr.y,la.y,za.y,ja.y)}D.emplaceBack(Y.x,Y.y,Ar.x1,Ar.y1,Ar.x2,Ar.y2,pe,Ce,Ue)}this.boxEndIndex=D.length}}class fd{constructor(D=[],Y=(pe,Ce)=>peCe?1:0){if(this.data=D,this.length=this.data.length,this.compare=Y,this.length>0)for(let pe=(this.length>>1)-1;pe>=0;pe--)this._down(pe)}push(D){this.data.push(D),this._up(this.length++)}pop(){if(this.length===0)return;let D=this.data[0],Y=this.data.pop();return--this.length>0&&(this.data[0]=Y,this._down(0)),D}peek(){return this.data[0]}_up(D){let{data:Y,compare:pe}=this,Ce=Y[D];for(;D>0;){let Ue=D-1>>1,Ge=Y[Ue];if(pe(Ce,Ge)>=0)break;Y[D]=Ge,D=Ue}Y[D]=Ce}_down(D){let{data:Y,compare:pe}=this,Ce=this.length>>1,Ue=Y[D];for(;D=0)break;Y[D]=Y[Ge],D=Ge}Y[D]=Ue}}function rA(q,D=1,Y=!1){let pe=1/0,Ce=1/0,Ue=-1/0,Ge=-1/0,ut=q[0];for(let zr=0;zrUe)&&(Ue=Kr.x),(!zr||Kr.y>Ge)&&(Ge=Kr.y)}let Tt=Math.min(Ue-pe,Ge-Ce),Ft=Tt/2,$t=new fd([],aA);if(Tt===0)return new i(pe,Ce);for(let zr=pe;zrlr.d||!lr.d)&&(lr=zr,Y&&console.log("found best %d after %d probes",Math.round(1e4*zr.d)/1e4,Ar)),zr.max-lr.d<=D||(Ft=zr.h/2,$t.push(new pm(zr.p.x-Ft,zr.p.y-Ft,Ft,q)),$t.push(new pm(zr.p.x+Ft,zr.p.y-Ft,Ft,q)),$t.push(new pm(zr.p.x-Ft,zr.p.y+Ft,Ft,q)),$t.push(new pm(zr.p.x+Ft,zr.p.y+Ft,Ft,q)),Ar+=4)}return Y&&(console.log(`num probes: ${Ar}`),console.log(`best distance: ${lr.d}`)),lr.p}function aA(q,D){return D.max-q.max}function pm(q,D,Y,pe){this.p=new i(q,D),this.h=Y,this.d=function(Ce,Ue){let Ge=!1,ut=1/0;for(let Tt=0;TtCe.y!=Kr.y>Ce.y&&Ce.x<(Kr.x-zr.x)*(Ce.y-zr.y)/(Kr.y-zr.y)+zr.x&&(Ge=!Ge),ut=Math.min(ut,bi(Ce,zr,Kr))}}return(Ge?1:-1)*Math.sqrt(ut)}(this.p,pe),this.max=this.d+this.h*Math.SQRT2}var ph;e.aq=void 0,(ph=e.aq||(e.aq={}))[ph.center=1]="center",ph[ph.left=2]="left",ph[ph.right=3]="right",ph[ph.top=4]="top",ph[ph.bottom=5]="bottom",ph[ph["top-left"]=6]="top-left",ph[ph["top-right"]=7]="top-right",ph[ph["bottom-left"]=8]="bottom-left",ph[ph["bottom-right"]=9]="bottom-right";let pv=7,Fv=Number.POSITIVE_INFINITY;function q1(q,D){return D[1]!==Fv?function(Y,pe,Ce){let Ue=0,Ge=0;switch(pe=Math.abs(pe),Ce=Math.abs(Ce),Y){case"top-right":case"top-left":case"top":Ge=Ce-pv;break;case"bottom-right":case"bottom-left":case"bottom":Ge=-Ce+pv}switch(Y){case"top-right":case"bottom-right":case"right":Ue=-pe;break;case"top-left":case"bottom-left":case"left":Ue=pe}return[Ue,Ge]}(q,D[0],D[1]):function(Y,pe){let Ce=0,Ue=0;pe<0&&(pe=0);let Ge=pe/Math.SQRT2;switch(Y){case"top-right":case"top-left":Ue=Ge-pv;break;case"bottom-right":case"bottom-left":Ue=-Ge+pv;break;case"bottom":Ue=-pe+pv;break;case"top":Ue=pe-pv}switch(Y){case"top-right":case"bottom-right":Ce=-Ge;break;case"top-left":case"bottom-left":Ce=Ge;break;case"left":Ce=pe;break;case"right":Ce=-pe}return[Ce,Ue]}(q,D[0])}function Qx(q,D,Y){var pe;let Ce=q.layout,Ue=(pe=Ce.get("text-variable-anchor-offset"))===null||pe===void 0?void 0:pe.evaluate(D,{},Y);if(Ue){let ut=Ue.values,Tt=[];for(let Ft=0;FtAr*Bl);$t.startsWith("top")?lr[1]-=pv:$t.startsWith("bottom")&&(lr[1]+=pv),Tt[Ft+1]=lr}return new Fa(Tt)}let Ge=Ce.get("text-variable-anchor");if(Ge){let ut;ut=q._unevaluatedLayout.getValue("text-radial-offset")!==void 0?[Ce.get("text-radial-offset").evaluate(D,{},Y)*Bl,Fv]:Ce.get("text-offset").evaluate(D,{},Y).map(Ft=>Ft*Bl);let Tt=[];for(let Ft of Ge)Tt.push(Ft,q1(Ft,ut));return new Fa(Tt)}return null}function H1(q){switch(q){case"right":case"top-right":case"bottom-right":return"right";case"left":case"top-left":case"bottom-left":return"left"}return"center"}function iA(q,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t){let lr=Ue.textMaxSize.evaluate(D,{});lr===void 0&&(lr=Ge);let Ar=q.layers[0].layout,zr=Ar.get("icon-offset").evaluate(D,{},$t),Kr=tb(Y.horizontal),la=Ge/24,za=q.tilePixelRatio*la,ja=q.tilePixelRatio*lr/24,gi=q.tilePixelRatio*ut,ei=q.tilePixelRatio*Ar.get("symbol-spacing"),hi=Ar.get("text-padding")*q.tilePixelRatio,Ei=function(Yi,Ko,bo,gs=1){let _u=Yi.get("icon-padding").evaluate(Ko,{},bo),pu=_u&&_u.values;return[pu[0]*gs,pu[1]*gs,pu[2]*gs,pu[3]*gs]}(Ar,D,$t,q.tilePixelRatio),En=Ar.get("text-max-angle")/180*Math.PI,fo=Ar.get("text-rotation-alignment")!=="viewport"&&Ar.get("symbol-placement")!=="point",ss=Ar.get("icon-rotation-alignment")==="map"&&Ar.get("symbol-placement")!=="point",eo=Ar.get("symbol-placement"),vn=ei/2,Uo=Ar.get("icon-text-fit"),Mo;pe&&Uo!=="none"&&(q.allowVerticalPlacement&&Y.vertical&&(Mo=zx(pe,Y.vertical,Uo,Ar.get("icon-text-fit-padding"),zr,la)),Kr&&(pe=zx(pe,Kr,Uo,Ar.get("icon-text-fit-padding"),zr,la)));let xo=(Yi,Ko)=>{Ko.x<0||Ko.x>=ao||Ko.y<0||Ko.y>=ao||function(bo,gs,_u,pu,Bf,Gp,dh,Nf,Yh,Kh,Jh,Hc,Uf,Ih,vh,th,nf,Lp,pp,Nl,zu,xu,Pp,Ec,dm){let _d=bo.addToLineVertexArray(gs,_u),hd,Wp,tc,gf,Zp=0,Xd=0,dp=0,vm=0,Y1=-1,R0=-1,xd={},Ov=Xa("");if(bo.allowVerticalPlacement&&pu.vertical){let Rh=Nf.layout.get("text-rotate").evaluate(zu,{},Ec)+90;tc=new hv(Yh,gs,Kh,Jh,Hc,pu.vertical,Uf,Ih,vh,Rh),dh&&(gf=new hv(Yh,gs,Kh,Jh,Hc,dh,nf,Lp,vh,Rh))}if(Bf){let Rh=Nf.layout.get("icon-rotate").evaluate(zu,{}),Xp=Nf.layout.get("icon-text-fit")!=="none",dv=Jx(Bf,Rh,Pp,Xp),$h=dh?Jx(dh,Rh,Pp,Xp):void 0;Wp=new hv(Yh,gs,Kh,Jh,Hc,Bf,nf,Lp,!1,Rh),Zp=4*dv.length;let Dh=bo.iconSizeData,nd=null;Dh.kind==="source"?(nd=[yd*Nf.layout.get("icon-size").evaluate(zu,{})],nd[0]>cv&&f(`${bo.layerIds[0]}: Value for "icon-size" is >= ${Mg}. Reduce your "icon-size".`)):Dh.kind==="composite"&&(nd=[yd*xu.compositeIconSizes[0].evaluate(zu,{},Ec),yd*xu.compositeIconSizes[1].evaluate(zu,{},Ec)],(nd[0]>cv||nd[1]>cv)&&f(`${bo.layerIds[0]}: Value for "icon-size" is >= ${Mg}. Reduce your "icon-size".`)),bo.addSymbols(bo.icon,dv,nd,Nl,pp,zu,e.ah.none,gs,_d.lineStartIndex,_d.lineLength,-1,Ec),Y1=bo.icon.placedSymbolArray.length-1,$h&&(Xd=4*$h.length,bo.addSymbols(bo.icon,$h,nd,Nl,pp,zu,e.ah.vertical,gs,_d.lineStartIndex,_d.lineLength,-1,Ec),R0=bo.icon.placedSymbolArray.length-1)}let rh=Object.keys(pu.horizontal);for(let Rh of rh){let Xp=pu.horizontal[Rh];if(!hd){Ov=Xa(Xp.text);let $h=Nf.layout.get("text-rotate").evaluate(zu,{},Ec);hd=new hv(Yh,gs,Kh,Jh,Hc,Xp,Uf,Ih,vh,$h)}let dv=Xp.positionedLines.length===1;if(dp+=eb(bo,gs,Xp,Gp,Nf,vh,zu,th,_d,pu.vertical?e.ah.horizontal:e.ah.horizontalOnly,dv?rh:[Rh],xd,Y1,xu,Ec),dv)break}pu.vertical&&(vm+=eb(bo,gs,pu.vertical,Gp,Nf,vh,zu,th,_d,e.ah.vertical,["vertical"],xd,R0,xu,Ec));let sA=hd?hd.boxStartIndex:bo.collisionBoxArray.length,D0=hd?hd.boxEndIndex:bo.collisionBoxArray.length,bd=tc?tc.boxStartIndex:bo.collisionBoxArray.length,vp=tc?tc.boxEndIndex:bo.collisionBoxArray.length,nb=Wp?Wp.boxStartIndex:bo.collisionBoxArray.length,lA=Wp?Wp.boxEndIndex:bo.collisionBoxArray.length,ob=gf?gf.boxStartIndex:bo.collisionBoxArray.length,uA=gf?gf.boxEndIndex:bo.collisionBoxArray.length,id=-1,Fg=(Rh,Xp)=>Rh&&Rh.circleDiameter?Math.max(Rh.circleDiameter,Xp):Xp;id=Fg(hd,id),id=Fg(tc,id),id=Fg(Wp,id),id=Fg(gf,id);let z0=id>-1?1:0;z0&&(id*=dm/Bl),bo.glyphOffsetArray.length>=um.MAX_GLYPHS&&f("Too many glyphs being rendered in a tile. See https://github.com/mapbox/mapbox-gl-js/issues/2907"),zu.sortKey!==void 0&&bo.addToSortKeyRanges(bo.symbolInstances.length,zu.sortKey);let K1=Qx(Nf,zu,Ec),[cA,fA]=function(Rh,Xp){let dv=Rh.length,$h=Xp?.values;if($h?.length>0)for(let Dh=0;Dh<$h.length;Dh+=2){let nd=$h[Dh+1];Rh.emplaceBack(e.aq[$h[Dh]],nd[0],nd[1])}return[dv,Rh.length]}(bo.textAnchorOffsets,K1);bo.symbolInstances.emplaceBack(gs.x,gs.y,xd.right>=0?xd.right:-1,xd.center>=0?xd.center:-1,xd.left>=0?xd.left:-1,xd.vertical||-1,Y1,R0,Ov,sA,D0,bd,vp,nb,lA,ob,uA,Kh,dp,vm,Zp,Xd,z0,0,Uf,id,cA,fA)}(q,Ko,Yi,Y,pe,Ce,Mo,q.layers[0],q.collisionBoxArray,D.index,D.sourceLayerIndex,q.index,za,[hi,hi,hi,hi],fo,Tt,gi,Ei,ss,zr,D,Ue,Ft,$t,Ge)};if(eo==="line")for(let Yi of Wx(D.geometry,0,0,ao,ao)){let Ko=tA(Yi,ei,En,Y.vertical||Kr,pe,24,ja,q.overscaling,ao);for(let bo of Ko)Kr&&nA(q,Kr.text,vn,bo)||xo(Yi,bo)}else if(eo==="line-center"){for(let Yi of D.geometry)if(Yi.length>1){let Ko=eA(Yi,En,Y.vertical||Kr,pe,24,ja);Ko&&xo(Yi,Ko)}}else if(D.type==="Polygon")for(let Yi of Ic(D.geometry,0)){let Ko=rA(Yi,16);xo(Yi[0],new Wd(Ko.x,Ko.y,0))}else if(D.type==="LineString")for(let Yi of D.geometry)xo(Yi,new Wd(Yi[0].x,Yi[0].y,0));else if(D.type==="Point")for(let Yi of D.geometry)for(let Ko of Yi)xo([Ko],new Wd(Ko.x,Ko.y,0))}function eb(q,D,Y,pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr){let la=function(gi,ei,hi,Ei,En,fo,ss,eo){let vn=Ei.layout.get("text-rotate").evaluate(fo,{})*Math.PI/180,Uo=[];for(let Mo of ei.positionedLines)for(let xo of Mo.positionedGlyphs){if(!xo.rect)continue;let Yi=xo.rect||{},Ko=Lx+1,bo=!0,gs=1,_u=0,pu=(En||eo)&&xo.vertical,Bf=xo.metrics.advance*xo.scale/2;if(eo&&ei.verticalizable&&(_u=Mo.lineOffset/2-(xo.imageName?-(Bl-xo.metrics.width*xo.scale)/2:(xo.scale-1)*Bl)),xo.imageName){let Nl=ss[xo.imageName];bo=Nl.sdf,gs=Nl.pixelRatio,Ko=Ph/gs}let Gp=En?[xo.x+Bf,xo.y]:[0,0],dh=En?[0,0]:[xo.x+Bf+hi[0],xo.y+hi[1]-_u],Nf=[0,0];pu&&(Nf=dh,dh=[0,0]);let Yh=xo.metrics.isDoubleResolution?2:1,Kh=(xo.metrics.left-Ko)*xo.scale-Bf+dh[0],Jh=(-xo.metrics.top-Ko)*xo.scale+dh[1],Hc=Kh+Yi.w/Yh*xo.scale/gs,Uf=Jh+Yi.h/Yh*xo.scale/gs,Ih=new i(Kh,Jh),vh=new i(Hc,Jh),th=new i(Kh,Uf),nf=new i(Hc,Uf);if(pu){let Nl=new i(-Bf,Bf-Of),zu=-Math.PI/2,xu=Bl/2-Bf,Pp=new i(5-Of-xu,-(xo.imageName?xu:0)),Ec=new i(...Nf);Ih._rotateAround(zu,Nl)._add(Pp)._add(Ec),vh._rotateAround(zu,Nl)._add(Pp)._add(Ec),th._rotateAround(zu,Nl)._add(Pp)._add(Ec),nf._rotateAround(zu,Nl)._add(Pp)._add(Ec)}if(vn){let Nl=Math.sin(vn),zu=Math.cos(vn),xu=[zu,-Nl,Nl,zu];Ih._matMult(xu),vh._matMult(xu),th._matMult(xu),nf._matMult(xu)}let Lp=new i(0,0),pp=new i(0,0);Uo.push({tl:Ih,tr:vh,bl:th,br:nf,tex:Yi,writingMode:ei.writingMode,glyphOffset:Gp,sectionIndex:xo.sectionIndex,isSDF:bo,pixelOffsetTL:Lp,pixelOffsetBR:pp,minFontScaleX:0,minFontScaleY:0})}return Uo}(0,Y,ut,Ce,Ue,Ge,pe,q.allowVerticalPlacement),za=q.textSizeData,ja=null;za.kind==="source"?(ja=[yd*Ce.layout.get("text-size").evaluate(Ge,{})],ja[0]>cv&&f(`${q.layerIds[0]}: Value for "text-size" is >= ${Mg}. Reduce your "text-size".`)):za.kind==="composite"&&(ja=[yd*zr.compositeTextSizes[0].evaluate(Ge,{},Kr),yd*zr.compositeTextSizes[1].evaluate(Ge,{},Kr)],(ja[0]>cv||ja[1]>cv)&&f(`${q.layerIds[0]}: Value for "text-size" is >= ${Mg}. Reduce your "text-size".`)),q.addSymbols(q.text,la,ja,ut,Ue,Ge,Ft,D,Tt.lineStartIndex,Tt.lineLength,Ar,Kr);for(let gi of $t)lr[gi]=q.text.placedSymbolArray.length-1;return 4*la.length}function tb(q){for(let D in q)return q[D];return null}function nA(q,D,Y,pe){let Ce=q.compareText;if(D in Ce){let Ue=Ce[D];for(let Ge=Ue.length-1;Ge>=0;Ge--)if(pe.dist(Ue[Ge])>4;if(Ce!==1)throw new Error(`Got v${Ce} data when expected v1.`);let Ue=rb[15&pe];if(!Ue)throw new Error("Unrecognized array type.");let[Ge]=new Uint16Array(D,2,1),[ut]=new Uint32Array(D,4,1);return new G1(ut,Ge,Ue,D)}constructor(D,Y=64,pe=Float64Array,Ce){if(isNaN(D)||D<0)throw new Error(`Unpexpected numItems value: ${D}.`);this.numItems=+D,this.nodeSize=Math.min(Math.max(+Y,2),65535),this.ArrayType=pe,this.IndexArrayType=D<65536?Uint16Array:Uint32Array;let Ue=rb.indexOf(this.ArrayType),Ge=2*D*this.ArrayType.BYTES_PER_ELEMENT,ut=D*this.IndexArrayType.BYTES_PER_ELEMENT,Tt=(8-ut%8)%8;if(Ue<0)throw new Error(`Unexpected typed array class: ${pe}.`);Ce&&Ce instanceof ArrayBuffer?(this.data=Ce,this.ids=new this.IndexArrayType(this.data,8,D),this.coords=new this.ArrayType(this.data,8+ut+Tt,2*D),this._pos=2*D,this._finished=!0):(this.data=new ArrayBuffer(8+Ge+ut+Tt),this.ids=new this.IndexArrayType(this.data,8,D),this.coords=new this.ArrayType(this.data,8+ut+Tt,2*D),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+Ue]),new Uint16Array(this.data,2,1)[0]=Y,new Uint32Array(this.data,4,1)[0]=D)}add(D,Y){let pe=this._pos>>1;return this.ids[pe]=pe,this.coords[this._pos++]=D,this.coords[this._pos++]=Y,pe}finish(){let D=this._pos>>1;if(D!==this.numItems)throw new Error(`Added ${D} items when expected ${this.numItems}.`);return L0(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(D,Y,pe,Ce){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:Ue,coords:Ge,nodeSize:ut}=this,Tt=[0,Ue.length-1,0],Ft=[];for(;Tt.length;){let $t=Tt.pop()||0,lr=Tt.pop()||0,Ar=Tt.pop()||0;if(lr-Ar<=ut){for(let za=Ar;za<=lr;za++){let ja=Ge[2*za],gi=Ge[2*za+1];ja>=D&&ja<=pe&&gi>=Y&&gi<=Ce&&Ft.push(Ue[za])}continue}let zr=Ar+lr>>1,Kr=Ge[2*zr],la=Ge[2*zr+1];Kr>=D&&Kr<=pe&&la>=Y&&la<=Ce&&Ft.push(Ue[zr]),($t===0?D<=Kr:Y<=la)&&(Tt.push(Ar),Tt.push(zr-1),Tt.push(1-$t)),($t===0?pe>=Kr:Ce>=la)&&(Tt.push(zr+1),Tt.push(lr),Tt.push(1-$t))}return Ft}within(D,Y,pe){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:Ce,coords:Ue,nodeSize:Ge}=this,ut=[0,Ce.length-1,0],Tt=[],Ft=pe*pe;for(;ut.length;){let $t=ut.pop()||0,lr=ut.pop()||0,Ar=ut.pop()||0;if(lr-Ar<=Ge){for(let za=Ar;za<=lr;za++)ib(Ue[2*za],Ue[2*za+1],D,Y)<=Ft&&Tt.push(Ce[za]);continue}let zr=Ar+lr>>1,Kr=Ue[2*zr],la=Ue[2*zr+1];ib(Kr,la,D,Y)<=Ft&&Tt.push(Ce[zr]),($t===0?D-pe<=Kr:Y-pe<=la)&&(ut.push(Ar),ut.push(zr-1),ut.push(1-$t)),($t===0?D+pe>=Kr:Y+pe>=la)&&(ut.push(zr+1),ut.push(lr),ut.push(1-$t))}return Tt}}function L0(q,D,Y,pe,Ce,Ue){if(Ce-pe<=Y)return;let Ge=pe+Ce>>1;ab(q,D,Ge,pe,Ce,Ue),L0(q,D,Y,pe,Ge-1,1-Ue),L0(q,D,Y,Ge+1,Ce,1-Ue)}function ab(q,D,Y,pe,Ce,Ue){for(;Ce>pe;){if(Ce-pe>600){let Ft=Ce-pe+1,$t=Y-pe+1,lr=Math.log(Ft),Ar=.5*Math.exp(2*lr/3),zr=.5*Math.sqrt(lr*Ar*(Ft-Ar)/Ft)*($t-Ft/2<0?-1:1);ab(q,D,Y,Math.max(pe,Math.floor(Y-$t*Ar/Ft+zr)),Math.min(Ce,Math.floor(Y+(Ft-$t)*Ar/Ft+zr)),Ue)}let Ge=D[2*Y+Ue],ut=pe,Tt=Ce;for(Dg(q,D,pe,Y),D[2*Ce+Ue]>Ge&&Dg(q,D,pe,Ce);utGe;)Tt--}D[2*pe+Ue]===Ge?Dg(q,D,pe,Tt):(Tt++,Dg(q,D,Tt,Ce)),Tt<=Y&&(pe=Tt+1),Y<=Tt&&(Ce=Tt-1)}}function Dg(q,D,Y,pe){W1(q,Y,pe),W1(D,2*Y,2*pe),W1(D,2*Y+1,2*pe+1)}function W1(q,D,Y){let pe=q[D];q[D]=q[Y],q[Y]=pe}function ib(q,D,Y,pe){let Ce=q-Y,Ue=D-pe;return Ce*Ce+Ue*Ue}var P0;e.bg=void 0,(P0=e.bg||(e.bg={})).create="create",P0.load="load",P0.fullLoad="fullLoad";let zg=null,Mf=[],Z1=1e3/60,X1="loadTime",I0="fullLoadTime",oA={mark(q){performance.mark(q)},frame(q){let D=q;zg!=null&&Mf.push(D-zg),zg=D},clearMetrics(){zg=null,Mf=[],performance.clearMeasures(X1),performance.clearMeasures(I0);for(let q in e.bg)performance.clearMarks(e.bg[q])},getPerformanceMetrics(){performance.measure(X1,e.bg.create,e.bg.load),performance.measure(I0,e.bg.create,e.bg.fullLoad);let q=performance.getEntriesByName(X1)[0].duration,D=performance.getEntriesByName(I0)[0].duration,Y=Mf.length,pe=1/(Mf.reduce((Ue,Ge)=>Ue+Ge,0)/Y/1e3),Ce=Mf.filter(Ue=>Ue>Z1).reduce((Ue,Ge)=>Ue+(Ge-Z1)/Z1,0);return{loadTime:q,fullLoadTime:D,fps:pe,percentDroppedFrames:Ce/(Y+Ce)*100,totalFrames:Y}}};e.$=class extends cr{},e.A=tn,e.B=yi,e.C=function(q){if(z==null){let D=q.navigator?q.navigator.userAgent:null;z=!!q.safari||!(!D||!(/\b(iPad|iPhone|iPod)\b/.test(D)||D.match("Safari")&&!D.match("Chrome")))}return z},e.D=ro,e.E=ee,e.F=class{constructor(q,D){this.target=q,this.mapId=D,this.resolveRejects={},this.tasks={},this.taskQueue=[],this.abortControllers={},this.messageHandlers={},this.invoker=new B1(()=>this.process()),this.subscription=function(Y,pe,Ce,Ue){return Y.addEventListener(pe,Ce,!1),{unsubscribe:()=>{Y.removeEventListener(pe,Ce,!1)}}}(this.target,"message",Y=>this.receive(Y)),this.globalScope=L(self)?q:window}registerMessageHandler(q,D){this.messageHandlers[q]=D}sendAsync(q,D){return new Promise((Y,pe)=>{let Ce=Math.round(1e18*Math.random()).toString(36).substring(0,10);this.resolveRejects[Ce]={resolve:Y,reject:pe},D&&D.signal.addEventListener("abort",()=>{delete this.resolveRejects[Ce];let ut={id:Ce,type:"",origin:location.origin,targetMapId:q.targetMapId,sourceMapId:this.mapId};this.target.postMessage(ut)},{once:!0});let Ue=[],Ge=Object.assign(Object.assign({},q),{id:Ce,sourceMapId:this.mapId,origin:location.origin,data:Jn(q.data,Ue)});this.target.postMessage(Ge,{transfer:Ue})})}receive(q){let D=q.data,Y=D.id;if(!(D.origin!=="file://"&&location.origin!=="file://"&&D.origin!=="resource://android"&&location.origin!=="resource://android"&&D.origin!==location.origin||D.targetMapId&&this.mapId!==D.targetMapId)){if(D.type===""){delete this.tasks[Y];let pe=this.abortControllers[Y];return delete this.abortControllers[Y],void(pe&&pe.abort())}if(L(self)||D.mustQueue)return this.tasks[Y]=D,this.taskQueue.push(Y),void this.invoker.trigger();this.processTask(Y,D)}}process(){if(this.taskQueue.length===0)return;let q=this.taskQueue.shift(),D=this.tasks[q];delete this.tasks[q],this.taskQueue.length>0&&this.invoker.trigger(),D&&this.processTask(q,D)}processTask(q,D){return t(this,void 0,void 0,function*(){if(D.type===""){let Ce=this.resolveRejects[q];return delete this.resolveRejects[q],Ce?void(D.error?Ce.reject(no(D.error)):Ce.resolve(no(D.data))):void 0}if(!this.messageHandlers[D.type])return void this.completeTask(q,new Error(`Could not find a registered handler for ${D.type}, map ID: ${this.mapId}, available handlers: ${Object.keys(this.messageHandlers).join(", ")}`));let Y=no(D.data),pe=new AbortController;this.abortControllers[q]=pe;try{let Ce=yield this.messageHandlers[D.type](D.sourceMapId,Y,pe);this.completeTask(q,null,Ce)}catch(Ce){this.completeTask(q,Ce)}})}completeTask(q,D,Y){let pe=[];delete this.abortControllers[q];let Ce={id:q,type:"",sourceMapId:this.mapId,origin:location.origin,error:D?Jn(D):null,data:Jn(Y,pe)};this.target.postMessage(Ce,{transfer:pe})}remove(){this.invoker.remove(),this.subscription.unsubscribe()}},e.G=se,e.H=function(){var q=new tn(16);return tn!=Float32Array&&(q[1]=0,q[2]=0,q[3]=0,q[4]=0,q[6]=0,q[7]=0,q[8]=0,q[9]=0,q[11]=0,q[12]=0,q[13]=0,q[14]=0),q[0]=1,q[5]=1,q[10]=1,q[15]=1,q},e.I=x0,e.J=function(q,D,Y){var pe,Ce,Ue,Ge,ut,Tt,Ft,$t,lr,Ar,zr,Kr,la=Y[0],za=Y[1],ja=Y[2];return D===q?(q[12]=D[0]*la+D[4]*za+D[8]*ja+D[12],q[13]=D[1]*la+D[5]*za+D[9]*ja+D[13],q[14]=D[2]*la+D[6]*za+D[10]*ja+D[14],q[15]=D[3]*la+D[7]*za+D[11]*ja+D[15]):(Ce=D[1],Ue=D[2],Ge=D[3],ut=D[4],Tt=D[5],Ft=D[6],$t=D[7],lr=D[8],Ar=D[9],zr=D[10],Kr=D[11],q[0]=pe=D[0],q[1]=Ce,q[2]=Ue,q[3]=Ge,q[4]=ut,q[5]=Tt,q[6]=Ft,q[7]=$t,q[8]=lr,q[9]=Ar,q[10]=zr,q[11]=Kr,q[12]=pe*la+ut*za+lr*ja+D[12],q[13]=Ce*la+Tt*za+Ar*ja+D[13],q[14]=Ue*la+Ft*za+zr*ja+D[14],q[15]=Ge*la+$t*za+Kr*ja+D[15]),q},e.K=function(q,D,Y){var pe=Y[0],Ce=Y[1],Ue=Y[2];return q[0]=D[0]*pe,q[1]=D[1]*pe,q[2]=D[2]*pe,q[3]=D[3]*pe,q[4]=D[4]*Ce,q[5]=D[5]*Ce,q[6]=D[6]*Ce,q[7]=D[7]*Ce,q[8]=D[8]*Ue,q[9]=D[9]*Ue,q[10]=D[10]*Ue,q[11]=D[11]*Ue,q[12]=D[12],q[13]=D[13],q[14]=D[14],q[15]=D[15],q},e.L=qi,e.M=function(q,D){let Y={};for(let pe=0;pe{let D=window.document.createElement("video");return D.muted=!0,new Promise(Y=>{D.onloadstart=()=>{Y(D)};for(let pe of q){let Ce=window.document.createElement("source");J(pe)||(D.crossOrigin="Anonymous"),Ce.src=pe,D.appendChild(Ce)}})},e.a4=function(){return m++},e.a5=Ci,e.a6=um,e.a7=bc,e.a8=Dl,e.a9=j1,e.aA=function(q){if(q.type==="custom")return new O1(q);switch(q.type){case"background":return new $T(q);case"circle":return new Zi(q);case"fill":return new Gr(q);case"fill-extrusion":return new Sp(q);case"heatmap":return new os(q);case"hillshade":return new Uc(q);case"line":return new Lv(q);case"raster":return new Lg(q);case"symbol":return new Dv(q)}},e.aB=u,e.aC=function(q,D){if(!q)return[{command:"setStyle",args:[D]}];let Y=[];try{if(!Ae(q.version,D.version))return[{command:"setStyle",args:[D]}];Ae(q.center,D.center)||Y.push({command:"setCenter",args:[D.center]}),Ae(q.zoom,D.zoom)||Y.push({command:"setZoom",args:[D.zoom]}),Ae(q.bearing,D.bearing)||Y.push({command:"setBearing",args:[D.bearing]}),Ae(q.pitch,D.pitch)||Y.push({command:"setPitch",args:[D.pitch]}),Ae(q.sprite,D.sprite)||Y.push({command:"setSprite",args:[D.sprite]}),Ae(q.glyphs,D.glyphs)||Y.push({command:"setGlyphs",args:[D.glyphs]}),Ae(q.transition,D.transition)||Y.push({command:"setTransition",args:[D.transition]}),Ae(q.light,D.light)||Y.push({command:"setLight",args:[D.light]}),Ae(q.terrain,D.terrain)||Y.push({command:"setTerrain",args:[D.terrain]}),Ae(q.sky,D.sky)||Y.push({command:"setSky",args:[D.sky]}),Ae(q.projection,D.projection)||Y.push({command:"setProjection",args:[D.projection]});let pe={},Ce=[];(function(Ge,ut,Tt,Ft){let $t;for($t in ut=ut||{},Ge=Ge||{})Object.prototype.hasOwnProperty.call(Ge,$t)&&(Object.prototype.hasOwnProperty.call(ut,$t)||Ze($t,Tt,Ft));for($t in ut)Object.prototype.hasOwnProperty.call(ut,$t)&&(Object.prototype.hasOwnProperty.call(Ge,$t)?Ae(Ge[$t],ut[$t])||(Ge[$t].type==="geojson"&&ut[$t].type==="geojson"&&it(Ge,ut,$t)?Be(Tt,{command:"setGeoJSONSourceData",args:[$t,ut[$t].data]}):at($t,ut,Tt,Ft)):Ie($t,ut,Tt))})(q.sources,D.sources,Ce,pe);let Ue=[];q.layers&&q.layers.forEach(Ge=>{"source"in Ge&&pe[Ge.source]?Y.push({command:"removeLayer",args:[Ge.id]}):Ue.push(Ge)}),Y=Y.concat(Ce),function(Ge,ut,Tt){ut=ut||[];let Ft=(Ge=Ge||[]).map(lt),$t=ut.map(lt),lr=Ge.reduce(Me,{}),Ar=ut.reduce(Me,{}),zr=Ft.slice(),Kr=Object.create(null),la,za,ja,gi,ei;for(let hi=0,Ei=0;hi@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)(?:\=(?:([^\x00-\x20\(\)<>@\,;\:\\"\/\[\]\?\=\{\}\x7F]+)|(?:\"((?:[^"\\]|\\.)*)\")))?/g,(Y,pe,Ce,Ue)=>{let Ge=Ce||Ue;return D[pe]=!Ge||Ge.toLowerCase(),""}),D["max-age"]){let Y=parseInt(D["max-age"],10);isNaN(Y)?delete D["max-age"]:D["max-age"]=Y}return D},e.ab=function(q,D){let Y=[];for(let pe in q)pe in D||Y.push(pe);return Y},e.ac=w,e.ad=function(q,D,Y){var pe=Math.sin(Y),Ce=Math.cos(Y),Ue=D[0],Ge=D[1],ut=D[2],Tt=D[3],Ft=D[4],$t=D[5],lr=D[6],Ar=D[7];return D!==q&&(q[8]=D[8],q[9]=D[9],q[10]=D[10],q[11]=D[11],q[12]=D[12],q[13]=D[13],q[14]=D[14],q[15]=D[15]),q[0]=Ue*Ce+Ft*pe,q[1]=Ge*Ce+$t*pe,q[2]=ut*Ce+lr*pe,q[3]=Tt*Ce+Ar*pe,q[4]=Ft*Ce-Ue*pe,q[5]=$t*Ce-Ge*pe,q[6]=lr*Ce-ut*pe,q[7]=Ar*Ce-Tt*pe,q},e.ae=function(q){var D=new tn(16);return D[0]=q[0],D[1]=q[1],D[2]=q[2],D[3]=q[3],D[4]=q[4],D[5]=q[5],D[6]=q[6],D[7]=q[7],D[8]=q[8],D[9]=q[9],D[10]=q[10],D[11]=q[11],D[12]=q[12],D[13]=q[13],D[14]=q[14],D[15]=q[15],D},e.af=_o,e.ag=function(q,D){let Y=0,pe=0;if(q.kind==="constant")pe=q.layoutSize;else if(q.kind!=="source"){let{interpolationType:Ce,minZoom:Ue,maxZoom:Ge}=q,ut=Ce?w(Cn.interpolationFactor(Ce,D,Ue,Ge),0,1):0;q.kind==="camera"?pe=$n.number(q.minSize,q.maxSize,ut):Y=ut}return{uSizeT:Y,uSize:pe}},e.ai=function(q,{uSize:D,uSizeT:Y},{lowerSize:pe,upperSize:Ce}){return q.kind==="source"?pe/yd:q.kind==="composite"?$n.number(pe/yd,Ce/yd,Y):D},e.aj=R1,e.ak=function(q,D,Y,pe){let Ce=D.y-q.y,Ue=D.x-q.x,Ge=pe.y-Y.y,ut=pe.x-Y.x,Tt=Ge*Ue-ut*Ce;if(Tt===0)return null;let Ft=(ut*(q.y-Y.y)-Ge*(q.x-Y.x))/Tt;return new i(q.x+Ft*Ue,q.y+Ft*Ce)},e.al=Wx,e.am=dc,e.an=pn,e.ao=function(q){let D=1/0,Y=1/0,pe=-1/0,Ce=-1/0;for(let Ue of q)D=Math.min(D,Ue.x),Y=Math.min(Y,Ue.y),pe=Math.max(pe,Ue.x),Ce=Math.max(Ce,Ue.y);return[D,Y,pe,Ce]},e.ap=Bl,e.ar=I1,e.as=function(q,D){var Y=D[0],pe=D[1],Ce=D[2],Ue=D[3],Ge=D[4],ut=D[5],Tt=D[6],Ft=D[7],$t=D[8],lr=D[9],Ar=D[10],zr=D[11],Kr=D[12],la=D[13],za=D[14],ja=D[15],gi=Y*ut-pe*Ge,ei=Y*Tt-Ce*Ge,hi=Y*Ft-Ue*Ge,Ei=pe*Tt-Ce*ut,En=pe*Ft-Ue*ut,fo=Ce*Ft-Ue*Tt,ss=$t*la-lr*Kr,eo=$t*za-Ar*Kr,vn=$t*ja-zr*Kr,Uo=lr*za-Ar*la,Mo=lr*ja-zr*la,xo=Ar*ja-zr*za,Yi=gi*xo-ei*Mo+hi*Uo+Ei*vn-En*eo+fo*ss;return Yi?(q[0]=(ut*xo-Tt*Mo+Ft*Uo)*(Yi=1/Yi),q[1]=(Ce*Mo-pe*xo-Ue*Uo)*Yi,q[2]=(la*fo-za*En+ja*Ei)*Yi,q[3]=(Ar*En-lr*fo-zr*Ei)*Yi,q[4]=(Tt*vn-Ge*xo-Ft*eo)*Yi,q[5]=(Y*xo-Ce*vn+Ue*eo)*Yi,q[6]=(za*hi-Kr*fo-ja*ei)*Yi,q[7]=($t*fo-Ar*hi+zr*ei)*Yi,q[8]=(Ge*Mo-ut*vn+Ft*ss)*Yi,q[9]=(pe*vn-Y*Mo-Ue*ss)*Yi,q[10]=(Kr*En-la*hi+ja*gi)*Yi,q[11]=(lr*hi-$t*En-zr*gi)*Yi,q[12]=(ut*eo-Ge*Uo-Tt*ss)*Yi,q[13]=(Y*Uo-pe*eo+Ce*ss)*Yi,q[14]=(la*ei-Kr*Ei-za*gi)*Yi,q[15]=($t*Ei-lr*ei+Ar*gi)*Yi,q):null},e.at=H1,e.au=A0,e.av=G1,e.aw=function(){let q={},D=ie.$version;for(let Y in ie.$root){let pe=ie.$root[Y];if(pe.required){let Ce=null;Ce=Y==="version"?D:pe.type==="array"?[]:{},Ce!=null&&(q[Y]=Ce)}}return q},e.ax=en,e.ay=G,e.az=function(q){q=q.slice();let D=Object.create(null);for(let Y=0;Y25||pe<0||pe>=1||Y<0||Y>=1)},e.bc=function(q,D){return q[0]=D[0],q[1]=0,q[2]=0,q[3]=0,q[4]=0,q[5]=D[1],q[6]=0,q[7]=0,q[8]=0,q[9]=0,q[10]=D[2],q[11]=0,q[12]=0,q[13]=0,q[14]=0,q[15]=1,q},e.bd=class extends Yt{},e.be=N1,e.bf=oA,e.bh=he,e.bi=function(q,D){Q.REGISTERED_PROTOCOLS[q]=D},e.bj=function(q){delete Q.REGISTERED_PROTOCOLS[q]},e.bk=function(q,D){let Y={};for(let Ce=0;Cexo*Bl)}let eo=Ge?"center":Y.get("text-justify").evaluate(Ft,{},q.canonical),vn=Y.get("symbol-placement")==="point"?Y.get("text-max-width").evaluate(Ft,{},q.canonical)*Bl:1/0,Uo=()=>{q.bucket.allowVerticalPlacement&&co(hi)&&(Kr.vertical=Ag(la,q.glyphMap,q.glyphPositions,q.imagePositions,$t,vn,Ue,fo,"left",En,ja,e.ah.vertical,!0,Ar,lr))};if(!Ge&&ss){let Mo=new Set;if(eo==="auto")for(let Yi=0;Yit(void 0,void 0,void 0,function*(){if(q.byteLength===0)return createImageBitmap(new ImageData(1,1));let D=new Blob([new Uint8Array(q)],{type:"image/png"});try{return createImageBitmap(D)}catch(Y){throw new Error(`Could not load image because of ${Y.message}. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported.`)}}),e.e=E,e.f=q=>new Promise((D,Y)=>{let pe=new Image;pe.onload=()=>{D(pe),URL.revokeObjectURL(pe.src),pe.onload=null,window.requestAnimationFrame(()=>{pe.src=B})},pe.onerror=()=>Y(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."));let Ce=new Blob([new Uint8Array(q)],{type:"image/png"});pe.src=q.byteLength?URL.createObjectURL(Ce):B}),e.g=ue,e.h=(q,D)=>$(E(q,{type:"json"}),D),e.i=L,e.j=j,e.k=ne,e.l=(q,D)=>$(E(q,{type:"arrayBuffer"}),D),e.m=$,e.n=function(q){return new C1(q).readFields(fC,[])},e.o=rs,e.p=P1,e.q=Oe,e.r=oi,e.s=J,e.t=li,e.u=Ka,e.v=ie,e.w=f,e.x=function([q,D,Y]){return D+=90,D*=Math.PI/180,Y*=Math.PI/180,{x:q*Math.cos(D)*Math.sin(Y),y:q*Math.sin(D)*Math.sin(Y),z:q*Math.cos(Y)}},e.y=$n,e.z=Ts}),A("worker",["./shared"],function(e){"use strict";class t{constructor(Fe){this.keyCache={},Fe&&this.replace(Fe)}replace(Fe){this._layerConfigs={},this._layers={},this.update(Fe,[])}update(Fe,Ke){for(let Ee of Fe){this._layerConfigs[Ee.id]=Ee;let Ve=this._layers[Ee.id]=e.aA(Ee);Ve._featureFilter=e.a7(Ve.filter),this.keyCache[Ee.id]&&delete this.keyCache[Ee.id]}for(let Ee of Ke)delete this.keyCache[Ee],delete this._layerConfigs[Ee],delete this._layers[Ee];this.familiesBySource={};let Ne=e.bk(Object.values(this._layerConfigs),this.keyCache);for(let Ee of Ne){let Ve=Ee.map(xt=>this._layers[xt.id]),ke=Ve[0];if(ke.visibility==="none")continue;let Te=ke.source||"",Le=this.familiesBySource[Te];Le||(Le=this.familiesBySource[Te]={});let rt=ke.sourceLayer||"_geojsonTileLayer",dt=Le[rt];dt||(dt=Le[rt]=[]),dt.push(Ve)}}}class r{constructor(Fe){let Ke={},Ne=[];for(let Te in Fe){let Le=Fe[Te],rt=Ke[Te]={};for(let dt in Le){let xt=Le[+dt];if(!xt||xt.bitmap.width===0||xt.bitmap.height===0)continue;let It={x:0,y:0,w:xt.bitmap.width+2,h:xt.bitmap.height+2};Ne.push(It),rt[dt]={rect:It,metrics:xt.metrics}}}let{w:Ee,h:Ve}=e.p(Ne),ke=new e.o({width:Ee||1,height:Ve||1});for(let Te in Fe){let Le=Fe[Te];for(let rt in Le){let dt=Le[+rt];if(!dt||dt.bitmap.width===0||dt.bitmap.height===0)continue;let xt=Ke[Te][rt].rect;e.o.copy(dt.bitmap,ke,{x:0,y:0},{x:xt.x+1,y:xt.y+1},dt.bitmap)}}this.image=ke,this.positions=Ke}}e.bl("GlyphAtlas",r);class o{constructor(Fe){this.tileID=new e.S(Fe.tileID.overscaledZ,Fe.tileID.wrap,Fe.tileID.canonical.z,Fe.tileID.canonical.x,Fe.tileID.canonical.y),this.uid=Fe.uid,this.zoom=Fe.zoom,this.pixelRatio=Fe.pixelRatio,this.tileSize=Fe.tileSize,this.source=Fe.source,this.overscaling=this.tileID.overscaleFactor(),this.showCollisionBoxes=Fe.showCollisionBoxes,this.collectResourceTiming=!!Fe.collectResourceTiming,this.returnDependencies=!!Fe.returnDependencies,this.promoteId=Fe.promoteId,this.inFlightDependencies=[]}parse(Fe,Ke,Ne,Ee){return e._(this,void 0,void 0,function*(){this.status="parsing",this.data=Fe,this.collisionBoxArray=new e.a5;let Ve=new e.bm(Object.keys(Fe.layers).sort()),ke=new e.bn(this.tileID,this.promoteId);ke.bucketLayerIDs=[];let Te={},Le={featureIndex:ke,iconDependencies:{},patternDependencies:{},glyphDependencies:{},availableImages:Ne},rt=Ke.familiesBySource[this.source];for(let Ga in rt){let Ma=Fe.layers[Ga];if(!Ma)continue;Ma.version===1&&e.w(`Vector tile source "${this.source}" layer "${Ga}" does not use vector tile spec v2 and therefore may have some rendering errors.`);let Ua=Ve.encode(Ga),ni=[];for(let Wt=0;Wt=zt.maxzoom||zt.visibility!=="none"&&(a(Wt,this.zoom,Ne),(Te[zt.id]=zt.createBucket({index:ke.bucketLayerIDs.length,layers:Wt,zoom:this.zoom,pixelRatio:this.pixelRatio,overscaling:this.overscaling,collisionBoxArray:this.collisionBoxArray,sourceLayerIndex:Ua,sourceID:this.source})).populate(ni,Le,this.tileID.canonical),ke.bucketLayerIDs.push(Wt.map(Vt=>Vt.id)))}}let dt=e.aF(Le.glyphDependencies,Ga=>Object.keys(Ga).map(Number));this.inFlightDependencies.forEach(Ga=>Ga?.abort()),this.inFlightDependencies=[];let xt=Promise.resolve({});if(Object.keys(dt).length){let Ga=new AbortController;this.inFlightDependencies.push(Ga),xt=Ee.sendAsync({type:"GG",data:{stacks:dt,source:this.source,tileID:this.tileID,type:"glyphs"}},Ga)}let It=Object.keys(Le.iconDependencies),Bt=Promise.resolve({});if(It.length){let Ga=new AbortController;this.inFlightDependencies.push(Ga),Bt=Ee.sendAsync({type:"GI",data:{icons:It,source:this.source,tileID:this.tileID,type:"icons"}},Ga)}let Gt=Object.keys(Le.patternDependencies),Kt=Promise.resolve({});if(Gt.length){let Ga=new AbortController;this.inFlightDependencies.push(Ga),Kt=Ee.sendAsync({type:"GI",data:{icons:Gt,source:this.source,tileID:this.tileID,type:"patterns"}},Ga)}let[sr,sa,Aa]=yield Promise.all([xt,Bt,Kt]),La=new r(sr),ka=new e.bo(sa,Aa);for(let Ga in Te){let Ma=Te[Ga];Ma instanceof e.a6?(a(Ma.layers,this.zoom,Ne),e.bp({bucket:Ma,glyphMap:sr,glyphPositions:La.positions,imageMap:sa,imagePositions:ka.iconPositions,showCollisionBoxes:this.showCollisionBoxes,canonical:this.tileID.canonical})):Ma.hasPattern&&(Ma instanceof e.bq||Ma instanceof e.br||Ma instanceof e.bs)&&(a(Ma.layers,this.zoom,Ne),Ma.addFeatures(Le,this.tileID.canonical,ka.patternPositions))}return this.status="done",{buckets:Object.values(Te).filter(Ga=>!Ga.isEmpty()),featureIndex:ke,collisionBoxArray:this.collisionBoxArray,glyphAtlasImage:La.image,imageAtlas:ka,glyphMap:this.returnDependencies?sr:null,iconMap:this.returnDependencies?sa:null,glyphPositions:this.returnDependencies?La.positions:null}})}}function a(yt,Fe,Ke){let Ne=new e.z(Fe);for(let Ee of yt)Ee.recalculate(Ne,Ke)}class i{constructor(Fe,Ke,Ne){this.actor=Fe,this.layerIndex=Ke,this.availableImages=Ne,this.fetching={},this.loading={},this.loaded={}}loadVectorTile(Fe,Ke){return e._(this,void 0,void 0,function*(){let Ne=yield e.l(Fe.request,Ke);try{return{vectorTile:new e.bt.VectorTile(new e.bu(Ne.data)),rawData:Ne.data,cacheControl:Ne.cacheControl,expires:Ne.expires}}catch(Ee){let Ve=new Uint8Array(Ne.data),ke=`Unable to parse the tile at ${Fe.request.url}, `;throw ke+=Ve[0]===31&&Ve[1]===139?"please make sure the data is not gzipped and that you have configured the relevant header in the server":`got error: ${Ee.message}`,new Error(ke)}})}loadTile(Fe){return e._(this,void 0,void 0,function*(){let Ke=Fe.uid,Ne=!!(Fe&&Fe.request&&Fe.request.collectResourceTiming)&&new e.bv(Fe.request),Ee=new o(Fe);this.loading[Ke]=Ee;let Ve=new AbortController;Ee.abort=Ve;try{let ke=yield this.loadVectorTile(Fe,Ve);if(delete this.loading[Ke],!ke)return null;let Te=ke.rawData,Le={};ke.expires&&(Le.expires=ke.expires),ke.cacheControl&&(Le.cacheControl=ke.cacheControl);let rt={};if(Ne){let xt=Ne.finish();xt&&(rt.resourceTiming=JSON.parse(JSON.stringify(xt)))}Ee.vectorTile=ke.vectorTile;let dt=Ee.parse(ke.vectorTile,this.layerIndex,this.availableImages,this.actor);this.loaded[Ke]=Ee,this.fetching[Ke]={rawTileData:Te,cacheControl:Le,resourceTiming:rt};try{let xt=yield dt;return e.e({rawTileData:Te.slice(0)},xt,Le,rt)}finally{delete this.fetching[Ke]}}catch(ke){throw delete this.loading[Ke],Ee.status="done",this.loaded[Ke]=Ee,ke}})}reloadTile(Fe){return e._(this,void 0,void 0,function*(){let Ke=Fe.uid;if(!this.loaded||!this.loaded[Ke])throw new Error("Should not be trying to reload a tile that was never loaded or has been removed");let Ne=this.loaded[Ke];if(Ne.showCollisionBoxes=Fe.showCollisionBoxes,Ne.status==="parsing"){let Ee=yield Ne.parse(Ne.vectorTile,this.layerIndex,this.availableImages,this.actor),Ve;if(this.fetching[Ke]){let{rawTileData:ke,cacheControl:Te,resourceTiming:Le}=this.fetching[Ke];delete this.fetching[Ke],Ve=e.e({rawTileData:ke.slice(0)},Ee,Te,Le)}else Ve=Ee;return Ve}if(Ne.status==="done"&&Ne.vectorTile)return Ne.parse(Ne.vectorTile,this.layerIndex,this.availableImages,this.actor)})}abortTile(Fe){return e._(this,void 0,void 0,function*(){let Ke=this.loading,Ne=Fe.uid;Ke&&Ke[Ne]&&Ke[Ne].abort&&(Ke[Ne].abort.abort(),delete Ke[Ne])})}removeTile(Fe){return e._(this,void 0,void 0,function*(){this.loaded&&this.loaded[Fe.uid]&&delete this.loaded[Fe.uid]})}}class n{constructor(){this.loaded={}}loadTile(Fe){return e._(this,void 0,void 0,function*(){let{uid:Ke,encoding:Ne,rawImageData:Ee,redFactor:Ve,greenFactor:ke,blueFactor:Te,baseShift:Le}=Fe,rt=Ee.width+2,dt=Ee.height+2,xt=e.b(Ee)?new e.R({width:rt,height:dt},yield e.bw(Ee,-1,-1,rt,dt)):Ee,It=new e.bx(Ke,xt,Ne,Ve,ke,Te,Le);return this.loaded=this.loaded||{},this.loaded[Ke]=It,It})}removeTile(Fe){let Ke=this.loaded,Ne=Fe.uid;Ke&&Ke[Ne]&&delete Ke[Ne]}}function s(yt,Fe){if(yt.length!==0){c(yt[0],Fe);for(var Ke=1;Ke=Math.abs(Te)?Ke-Le+Te:Te-Le+Ke,Ke=Le}Ke+Ne>=0!=!!Fe&&yt.reverse()}var h=e.by(function yt(Fe,Ke){var Ne,Ee=Fe&&Fe.type;if(Ee==="FeatureCollection")for(Ne=0;Ne>31}function L(yt,Fe){for(var Ke=yt.loadGeometry(),Ne=yt.type,Ee=0,Ve=0,ke=Ke.length,Te=0;Teyt},O=Math.fround||(I=new Float32Array(1),yt=>(I[0]=+yt,I[0]));var I;let N=3,U=5,W=6;class Q{constructor(Fe){this.options=Object.assign(Object.create(B),Fe),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(Fe){let{log:Ke,minZoom:Ne,maxZoom:Ee}=this.options;Ke&&console.time("total time");let Ve=`prepare ${Fe.length} points`;Ke&&console.time(Ve),this.points=Fe;let ke=[];for(let Le=0;Le=Ne;Le--){let rt=+Date.now();Te=this.trees[Le]=this._createTree(this._cluster(Te,Le)),Ke&&console.log("z%d: %d clusters in %dms",Le,Te.numItems,+Date.now()-rt)}return Ke&&console.timeEnd("total time"),this}getClusters(Fe,Ke){let Ne=((Fe[0]+180)%360+360)%360-180,Ee=Math.max(-90,Math.min(90,Fe[1])),Ve=Fe[2]===180?180:((Fe[2]+180)%360+360)%360-180,ke=Math.max(-90,Math.min(90,Fe[3]));if(Fe[2]-Fe[0]>=360)Ne=-180,Ve=180;else if(Ne>Ve){let xt=this.getClusters([Ne,Ee,180,ke],Ke),It=this.getClusters([-180,Ee,Ve,ke],Ke);return xt.concat(It)}let Te=this.trees[this._limitZoom(Ke)],Le=Te.range(he(Ne),G(ke),he(Ve),G(Ee)),rt=Te.data,dt=[];for(let xt of Le){let It=this.stride*xt;dt.push(rt[It+U]>1?ue(rt,It,this.clusterProps):this.points[rt[It+N]])}return dt}getChildren(Fe){let Ke=this._getOriginId(Fe),Ne=this._getOriginZoom(Fe),Ee="No cluster with the specified id.",Ve=this.trees[Ne];if(!Ve)throw new Error(Ee);let ke=Ve.data;if(Ke*this.stride>=ke.length)throw new Error(Ee);let Te=this.options.radius/(this.options.extent*Math.pow(2,Ne-1)),Le=Ve.within(ke[Ke*this.stride],ke[Ke*this.stride+1],Te),rt=[];for(let dt of Le){let xt=dt*this.stride;ke[xt+4]===Fe&&rt.push(ke[xt+U]>1?ue(ke,xt,this.clusterProps):this.points[ke[xt+N]])}if(rt.length===0)throw new Error(Ee);return rt}getLeaves(Fe,Ke,Ne){let Ee=[];return this._appendLeaves(Ee,Fe,Ke=Ke||10,Ne=Ne||0,0),Ee}getTile(Fe,Ke,Ne){let Ee=this.trees[this._limitZoom(Fe)],Ve=Math.pow(2,Fe),{extent:ke,radius:Te}=this.options,Le=Te/ke,rt=(Ne-Le)/Ve,dt=(Ne+1+Le)/Ve,xt={features:[]};return this._addTileFeatures(Ee.range((Ke-Le)/Ve,rt,(Ke+1+Le)/Ve,dt),Ee.data,Ke,Ne,Ve,xt),Ke===0&&this._addTileFeatures(Ee.range(1-Le/Ve,rt,1,dt),Ee.data,Ve,Ne,Ve,xt),Ke===Ve-1&&this._addTileFeatures(Ee.range(0,rt,Le/Ve,dt),Ee.data,-1,Ne,Ve,xt),xt.features.length?xt:null}getClusterExpansionZoom(Fe){let Ke=this._getOriginZoom(Fe)-1;for(;Ke<=this.options.maxZoom;){let Ne=this.getChildren(Fe);if(Ke++,Ne.length!==1)break;Fe=Ne[0].properties.cluster_id}return Ke}_appendLeaves(Fe,Ke,Ne,Ee,Ve){let ke=this.getChildren(Ke);for(let Te of ke){let Le=Te.properties;if(Le&&Le.cluster?Ve+Le.point_count<=Ee?Ve+=Le.point_count:Ve=this._appendLeaves(Fe,Le.cluster_id,Ne,Ee,Ve):Ve1,dt,xt,It;if(rt)dt=se(Ke,Le,this.clusterProps),xt=Ke[Le],It=Ke[Le+1];else{let Kt=this.points[Ke[Le+N]];dt=Kt.properties;let[sr,sa]=Kt.geometry.coordinates;xt=he(sr),It=G(sa)}let Bt={type:1,geometry:[[Math.round(this.options.extent*(xt*Ve-Ne)),Math.round(this.options.extent*(It*Ve-Ee))]],tags:dt},Gt;Gt=rt||this.options.generateId?Ke[Le+N]:this.points[Ke[Le+N]].id,Gt!==void 0&&(Bt.id=Gt),ke.features.push(Bt)}}_limitZoom(Fe){return Math.max(this.options.minZoom,Math.min(Math.floor(+Fe),this.options.maxZoom+1))}_cluster(Fe,Ke){let{radius:Ne,extent:Ee,reduce:Ve,minPoints:ke}=this.options,Te=Ne/(Ee*Math.pow(2,Ke)),Le=Fe.data,rt=[],dt=this.stride;for(let xt=0;xtKe&&(sr+=Le[Aa+U])}if(sr>Kt&&sr>=ke){let sa,Aa=It*Kt,La=Bt*Kt,ka=-1,Ga=((xt/dt|0)<<5)+(Ke+1)+this.points.length;for(let Ma of Gt){let Ua=Ma*dt;if(Le[Ua+2]<=Ke)continue;Le[Ua+2]=Ke;let ni=Le[Ua+U];Aa+=Le[Ua]*ni,La+=Le[Ua+1]*ni,Le[Ua+4]=Ga,Ve&&(sa||(sa=this._map(Le,xt,!0),ka=this.clusterProps.length,this.clusterProps.push(sa)),Ve(sa,this._map(Le,Ua)))}Le[xt+4]=Ga,rt.push(Aa/sr,La/sr,1/0,Ga,-1,sr),Ve&&rt.push(ka)}else{for(let sa=0;sa1)for(let sa of Gt){let Aa=sa*dt;if(!(Le[Aa+2]<=Ke)){Le[Aa+2]=Ke;for(let La=0;La>5}_getOriginZoom(Fe){return(Fe-this.points.length)%32}_map(Fe,Ke,Ne){if(Fe[Ke+U]>1){let ke=this.clusterProps[Fe[Ke+W]];return Ne?Object.assign({},ke):ke}let Ee=this.points[Fe[Ke+N]].properties,Ve=this.options.map(Ee);return Ne&&Ve===Ee?Object.assign({},Ve):Ve}}function ue(yt,Fe,Ke){return{type:"Feature",id:yt[Fe+N],properties:se(yt,Fe,Ke),geometry:{type:"Point",coordinates:[(Ne=yt[Fe],360*(Ne-.5)),$(yt[Fe+1])]}};var Ne}function se(yt,Fe,Ke){let Ne=yt[Fe+U],Ee=Ne>=1e4?`${Math.round(Ne/1e3)}k`:Ne>=1e3?Math.round(Ne/100)/10+"k":Ne,Ve=yt[Fe+W],ke=Ve===-1?{}:Object.assign({},Ke[Ve]);return Object.assign(ke,{cluster:!0,cluster_id:yt[Fe+N],point_count:Ne,point_count_abbreviated:Ee})}function he(yt){return yt/360+.5}function G(yt){let Fe=Math.sin(yt*Math.PI/180),Ke=.5-.25*Math.log((1+Fe)/(1-Fe))/Math.PI;return Ke<0?0:Ke>1?1:Ke}function $(yt){let Fe=(180-360*yt)*Math.PI/180;return 360*Math.atan(Math.exp(Fe))/Math.PI-90}function J(yt,Fe,Ke,Ne){let Ee=Ne,Ve=Fe+(Ke-Fe>>1),ke,Te=Ke-Fe,Le=yt[Fe],rt=yt[Fe+1],dt=yt[Ke],xt=yt[Ke+1];for(let It=Fe+3;ItEe)ke=It,Ee=Bt;else if(Bt===Ee){let Gt=Math.abs(It-Ve);GtNe&&(ke-Fe>3&&J(yt,Fe,ke,Ne),yt[ke+2]=Ee,Ke-ke>3&&J(yt,ke,Ke,Ne))}function Z(yt,Fe,Ke,Ne,Ee,Ve){let ke=Ee-Ke,Te=Ve-Ne;if(ke!==0||Te!==0){let Le=((yt-Ke)*ke+(Fe-Ne)*Te)/(ke*ke+Te*Te);Le>1?(Ke=Ee,Ne=Ve):Le>0&&(Ke+=ke*Le,Ne+=Te*Le)}return ke=yt-Ke,Te=Fe-Ne,ke*ke+Te*Te}function re(yt,Fe,Ke,Ne){let Ee={id:yt??null,type:Fe,geometry:Ke,tags:Ne,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0};if(Fe==="Point"||Fe==="MultiPoint"||Fe==="LineString")ne(Ee,Ke);else if(Fe==="Polygon")ne(Ee,Ke[0]);else if(Fe==="MultiLineString")for(let Ve of Ke)ne(Ee,Ve);else if(Fe==="MultiPolygon")for(let Ve of Ke)ne(Ee,Ve[0]);return Ee}function ne(yt,Fe){for(let Ke=0;Ke0&&(ke+=Ne?(Ee*dt-rt*Ve)/2:Math.sqrt(Math.pow(rt-Ee,2)+Math.pow(dt-Ve,2))),Ee=rt,Ve=dt}let Te=Fe.length-3;Fe[2]=1,J(Fe,0,Te,Ke),Fe[Te+2]=1,Fe.size=Math.abs(ke),Fe.start=0,Fe.end=Fe.size}function fe(yt,Fe,Ke,Ne){for(let Ee=0;Ee1?1:Ke}function Be(yt,Fe,Ke,Ne,Ee,Ve,ke,Te){if(Ne/=Fe,Ve>=(Ke/=Fe)&&ke=Ne)return null;let Le=[];for(let rt of yt){let dt=rt.geometry,xt=rt.type,It=Ee===0?rt.minX:rt.minY,Bt=Ee===0?rt.maxX:rt.maxY;if(It>=Ke&&Bt=Ne)continue;let Gt=[];if(xt==="Point"||xt==="MultiPoint")Ie(dt,Gt,Ke,Ne,Ee);else if(xt==="LineString")Ze(dt,Gt,Ke,Ne,Ee,!1,Te.lineMetrics);else if(xt==="MultiLineString")it(dt,Gt,Ke,Ne,Ee,!1);else if(xt==="Polygon")it(dt,Gt,Ke,Ne,Ee,!0);else if(xt==="MultiPolygon")for(let Kt of dt){let sr=[];it(Kt,sr,Ke,Ne,Ee,!0),sr.length&&Gt.push(sr)}if(Gt.length){if(Te.lineMetrics&&xt==="LineString"){for(let Kt of Gt)Le.push(re(rt.id,xt,Kt,rt.tags));continue}xt!=="LineString"&&xt!=="MultiLineString"||(Gt.length===1?(xt="LineString",Gt=Gt[0]):xt="MultiLineString"),xt!=="Point"&&xt!=="MultiPoint"||(xt=Gt.length===3?"Point":"MultiPoint"),Le.push(re(rt.id,xt,Gt,rt.tags))}}return Le.length?Le:null}function Ie(yt,Fe,Ke,Ne,Ee){for(let Ve=0;Ve=Ke&&ke<=Ne&&et(Fe,yt[Ve],yt[Ve+1],yt[Ve+2])}}function Ze(yt,Fe,Ke,Ne,Ee,Ve,ke){let Te=at(yt),Le=Ee===0?lt:Me,rt,dt,xt=yt.start;for(let sr=0;srKe&&(dt=Le(Te,sa,Aa,ka,Ga,Ke),ke&&(Te.start=xt+rt*dt)):Ma>Ne?Ua=Ke&&(dt=Le(Te,sa,Aa,ka,Ga,Ke),ni=!0),Ua>Ne&&Ma<=Ne&&(dt=Le(Te,sa,Aa,ka,Ga,Ne),ni=!0),!Ve&&ni&&(ke&&(Te.end=xt+rt*dt),Fe.push(Te),Te=at(yt)),ke&&(xt+=rt)}let It=yt.length-3,Bt=yt[It],Gt=yt[It+1],Kt=Ee===0?Bt:Gt;Kt>=Ke&&Kt<=Ne&&et(Te,Bt,Gt,yt[It+2]),It=Te.length-3,Ve&&It>=3&&(Te[It]!==Te[0]||Te[It+1]!==Te[1])&&et(Te,Te[0],Te[1],Te[2]),Te.length&&Fe.push(Te)}function at(yt){let Fe=[];return Fe.size=yt.size,Fe.start=yt.start,Fe.end=yt.end,Fe}function it(yt,Fe,Ke,Ne,Ee,Ve){for(let ke of yt)Ze(ke,Fe,Ke,Ne,Ee,Ve,!1)}function et(yt,Fe,Ke,Ne){yt.push(Fe,Ke,Ne)}function lt(yt,Fe,Ke,Ne,Ee,Ve){let ke=(Ve-Fe)/(Ne-Fe);return et(yt,Ve,Ke+(Ee-Ke)*ke,1),ke}function Me(yt,Fe,Ke,Ne,Ee,Ve){let ke=(Ve-Ke)/(Ee-Ke);return et(yt,Fe+(Ne-Fe)*ke,Ve,1),ke}function ge(yt,Fe){let Ke=[];for(let Ne=0;Ne0&&Fe.size<(Ee?ke:Ne))return void(Ke.numPoints+=Fe.length/3);let Te=[];for(let Le=0;Leke)&&(Ke.numSimplified++,Te.push(Fe[Le],Fe[Le+1])),Ke.numPoints++;Ee&&function(Le,rt){let dt=0;for(let xt=0,It=Le.length,Bt=It-2;xt0===rt)for(let xt=0,It=Le.length;xt24)throw new Error("maxZoom should be in the 0-24 range");if(Ke.promoteId&&Ke.generateId)throw new Error("promoteId and generateId cannot be used together.");let Ee=function(Ve,ke){let Te=[];if(Ve.type==="FeatureCollection")for(let Le=0;Le1&&console.time("creation"),Bt=this.tiles[It]=nt(Fe,Ke,Ne,Ee,rt),this.tileCoords.push({z:Ke,x:Ne,y:Ee}),dt)){dt>1&&(console.log("tile z%d-%d-%d (features: %d, points: %d, simplified: %d)",Ke,Ne,Ee,Bt.numFeatures,Bt.numPoints,Bt.numSimplified),console.timeEnd("creation"));let ni=`z${Ke}`;this.stats[ni]=(this.stats[ni]||0)+1,this.total++}if(Bt.source=Fe,Ve==null){if(Ke===rt.indexMaxZoom||Bt.numPoints<=rt.indexMaxPoints)continue}else{if(Ke===rt.maxZoom||Ke===Ve)continue;if(Ve!=null){let ni=Ve-Ke;if(Ne!==ke>>ni||Ee!==Te>>ni)continue}}if(Bt.source=null,Fe.length===0)continue;dt>1&&console.time("clipping");let Gt=.5*rt.buffer/rt.extent,Kt=.5-Gt,sr=.5+Gt,sa=1+Gt,Aa=null,La=null,ka=null,Ga=null,Ma=Be(Fe,xt,Ne-Gt,Ne+sr,0,Bt.minX,Bt.maxX,rt),Ua=Be(Fe,xt,Ne+Kt,Ne+sa,0,Bt.minX,Bt.maxX,rt);Fe=null,Ma&&(Aa=Be(Ma,xt,Ee-Gt,Ee+sr,1,Bt.minY,Bt.maxY,rt),La=Be(Ma,xt,Ee+Kt,Ee+sa,1,Bt.minY,Bt.maxY,rt),Ma=null),Ua&&(ka=Be(Ua,xt,Ee-Gt,Ee+sr,1,Bt.minY,Bt.maxY,rt),Ga=Be(Ua,xt,Ee+Kt,Ee+sa,1,Bt.minY,Bt.maxY,rt),Ua=null),dt>1&&console.timeEnd("clipping"),Le.push(Aa||[],Ke+1,2*Ne,2*Ee),Le.push(La||[],Ke+1,2*Ne,2*Ee+1),Le.push(ka||[],Ke+1,2*Ne+1,2*Ee),Le.push(Ga||[],Ke+1,2*Ne+1,2*Ee+1)}}getTile(Fe,Ke,Ne){Fe=+Fe,Ke=+Ke,Ne=+Ne;let Ee=this.options,{extent:Ve,debug:ke}=Ee;if(Fe<0||Fe>24)return null;let Te=1<1&&console.log("drilling down to z%d-%d-%d",Fe,Ke,Ne);let rt,dt=Fe,xt=Ke,It=Ne;for(;!rt&&dt>0;)dt--,xt>>=1,It>>=1,rt=this.tiles[jt(dt,xt,It)];return rt&&rt.source?(ke>1&&(console.log("found parent tile z%d-%d-%d",dt,xt,It),console.time("drilling down")),this.splitTile(rt.source,dt,xt,It,Fe,Ke,Ne),ke>1&&console.timeEnd("drilling down"),this.tiles[Le]?ze(this.tiles[Le],Ve):null):null}}function jt(yt,Fe,Ke){return 32*((1<{xt.properties=Bt;let Gt={};for(let Kt of It)Gt[Kt]=Le[Kt].evaluate(dt,xt);return Gt},ke.reduce=(Bt,Gt)=>{xt.properties=Gt;for(let Kt of It)dt.accumulated=Bt[Kt],Bt[Kt]=rt[Kt].evaluate(dt,xt)},ke}(Fe)).load((yield this._pendingData).features):(Ee=yield this._pendingData,new Ot(Ee,Fe.geojsonVtOptions)),this.loaded={};let Ve={};if(Ne){let ke=Ne.finish();ke&&(Ve.resourceTiming={},Ve.resourceTiming[Fe.source]=JSON.parse(JSON.stringify(ke)))}return Ve}catch(Ve){if(delete this._pendingRequest,e.bB(Ve))return{abandoned:!0};throw Ve}var Ee})}getData(){return e._(this,void 0,void 0,function*(){return this._pendingData})}reloadTile(Fe){let Ke=this.loaded;return Ke&&Ke[Fe.uid]?super.reloadTile(Fe):this.loadTile(Fe)}loadAndProcessGeoJSON(Fe,Ke){return e._(this,void 0,void 0,function*(){let Ne=yield this.loadGeoJSON(Fe,Ke);if(delete this._pendingRequest,typeof Ne!="object")throw new Error(`Input data given to '${Fe.source}' is not a valid GeoJSON object.`);if(h(Ne,!0),Fe.filter){let Ee=e.bC(Fe.filter,{type:"boolean","property-type":"data-driven",overridable:!1,transition:!1});if(Ee.result==="error")throw new Error(Ee.value.map(ke=>`${ke.key}: ${ke.message}`).join(", "));Ne={type:"FeatureCollection",features:Ne.features.filter(ke=>Ee.value.evaluate({zoom:0},ke))}}return Ne})}loadGeoJSON(Fe,Ke){return e._(this,void 0,void 0,function*(){let{promoteId:Ne}=Fe;if(Fe.request){let Ee=yield e.h(Fe.request,Ke);return this._dataUpdateable=ar(Ee.data,Ne)?Cr(Ee.data,Ne):void 0,Ee.data}if(typeof Fe.data=="string")try{let Ee=JSON.parse(Fe.data);return this._dataUpdateable=ar(Ee,Ne)?Cr(Ee,Ne):void 0,Ee}catch{throw new Error(`Input data given to '${Fe.source}' is not a valid GeoJSON object.`)}if(!Fe.dataDiff)throw new Error(`Input data given to '${Fe.source}' is not a valid GeoJSON object.`);if(!this._dataUpdateable)throw new Error(`Cannot update existing geojson data in ${Fe.source}`);return function(Ee,Ve,ke){var Te,Le,rt,dt;if(Ve.removeAll&&Ee.clear(),Ve.remove)for(let xt of Ve.remove)Ee.delete(xt);if(Ve.add)for(let xt of Ve.add){let It=ur(xt,ke);It!=null&&Ee.set(It,xt)}if(Ve.update)for(let xt of Ve.update){let It=Ee.get(xt.id);if(It==null)continue;let Bt=!xt.removeAllProperties&&(((Te=xt.removeProperties)===null||Te===void 0?void 0:Te.length)>0||((Le=xt.addOrUpdateProperties)===null||Le===void 0?void 0:Le.length)>0);if((xt.newGeometry||xt.removeAllProperties||Bt)&&(It=Object.assign({},It),Ee.set(xt.id,It),Bt&&(It.properties=Object.assign({},It.properties))),xt.newGeometry&&(It.geometry=xt.newGeometry),xt.removeAllProperties)It.properties={};else if(((rt=xt.removeProperties)===null||rt===void 0?void 0:rt.length)>0)for(let Gt of xt.removeProperties)Object.prototype.hasOwnProperty.call(It.properties,Gt)&&delete It.properties[Gt];if(((dt=xt.addOrUpdateProperties)===null||dt===void 0?void 0:dt.length)>0)for(let{key:Gt,value:Kt}of xt.addOrUpdateProperties)It.properties[Gt]=Kt}}(this._dataUpdateable,Fe.dataDiff,Ne),{type:"FeatureCollection",features:Array.from(this._dataUpdateable.values())}})}removeSource(Fe){return e._(this,void 0,void 0,function*(){this._pendingRequest&&this._pendingRequest.abort()})}getClusterExpansionZoom(Fe){return this._geoJSONIndex.getClusterExpansionZoom(Fe.clusterId)}getClusterChildren(Fe){return this._geoJSONIndex.getChildren(Fe.clusterId)}getClusterLeaves(Fe){return this._geoJSONIndex.getLeaves(Fe.clusterId,Fe.limit,Fe.offset)}}class _r{constructor(Fe){this.self=Fe,this.actor=new e.F(Fe),this.layerIndexes={},this.availableImages={},this.workerSources={},this.demWorkerSources={},this.externalWorkerSourceTypes={},this.self.registerWorkerSource=(Ke,Ne)=>{if(this.externalWorkerSourceTypes[Ke])throw new Error(`Worker source with name "${Ke}" already registered.`);this.externalWorkerSourceTypes[Ke]=Ne},this.self.addProtocol=e.bi,this.self.removeProtocol=e.bj,this.self.registerRTLTextPlugin=Ke=>{if(e.bD.isParsed())throw new Error("RTL text plugin already registered.");e.bD.setMethods(Ke)},this.actor.registerMessageHandler("LDT",(Ke,Ne)=>this._getDEMWorkerSource(Ke,Ne.source).loadTile(Ne)),this.actor.registerMessageHandler("RDT",(Ke,Ne)=>e._(this,void 0,void 0,function*(){this._getDEMWorkerSource(Ke,Ne.source).removeTile(Ne)})),this.actor.registerMessageHandler("GCEZ",(Ke,Ne)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(Ke,Ne.type,Ne.source).getClusterExpansionZoom(Ne)})),this.actor.registerMessageHandler("GCC",(Ke,Ne)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(Ke,Ne.type,Ne.source).getClusterChildren(Ne)})),this.actor.registerMessageHandler("GCL",(Ke,Ne)=>e._(this,void 0,void 0,function*(){return this._getWorkerSource(Ke,Ne.type,Ne.source).getClusterLeaves(Ne)})),this.actor.registerMessageHandler("LD",(Ke,Ne)=>this._getWorkerSource(Ke,Ne.type,Ne.source).loadData(Ne)),this.actor.registerMessageHandler("GD",(Ke,Ne)=>this._getWorkerSource(Ke,Ne.type,Ne.source).getData()),this.actor.registerMessageHandler("LT",(Ke,Ne)=>this._getWorkerSource(Ke,Ne.type,Ne.source).loadTile(Ne)),this.actor.registerMessageHandler("RT",(Ke,Ne)=>this._getWorkerSource(Ke,Ne.type,Ne.source).reloadTile(Ne)),this.actor.registerMessageHandler("AT",(Ke,Ne)=>this._getWorkerSource(Ke,Ne.type,Ne.source).abortTile(Ne)),this.actor.registerMessageHandler("RMT",(Ke,Ne)=>this._getWorkerSource(Ke,Ne.type,Ne.source).removeTile(Ne)),this.actor.registerMessageHandler("RS",(Ke,Ne)=>e._(this,void 0,void 0,function*(){if(!this.workerSources[Ke]||!this.workerSources[Ke][Ne.type]||!this.workerSources[Ke][Ne.type][Ne.source])return;let Ee=this.workerSources[Ke][Ne.type][Ne.source];delete this.workerSources[Ke][Ne.type][Ne.source],Ee.removeSource!==void 0&&Ee.removeSource(Ne)})),this.actor.registerMessageHandler("RM",Ke=>e._(this,void 0,void 0,function*(){delete this.layerIndexes[Ke],delete this.availableImages[Ke],delete this.workerSources[Ke],delete this.demWorkerSources[Ke]})),this.actor.registerMessageHandler("SR",(Ke,Ne)=>e._(this,void 0,void 0,function*(){this.referrer=Ne})),this.actor.registerMessageHandler("SRPS",(Ke,Ne)=>this._syncRTLPluginState(Ke,Ne)),this.actor.registerMessageHandler("IS",(Ke,Ne)=>e._(this,void 0,void 0,function*(){this.self.importScripts(Ne)})),this.actor.registerMessageHandler("SI",(Ke,Ne)=>this._setImages(Ke,Ne)),this.actor.registerMessageHandler("UL",(Ke,Ne)=>e._(this,void 0,void 0,function*(){this._getLayerIndex(Ke).update(Ne.layers,Ne.removedIds)})),this.actor.registerMessageHandler("SL",(Ke,Ne)=>e._(this,void 0,void 0,function*(){this._getLayerIndex(Ke).replace(Ne)}))}_setImages(Fe,Ke){return e._(this,void 0,void 0,function*(){this.availableImages[Fe]=Ke;for(let Ne in this.workerSources[Fe]){let Ee=this.workerSources[Fe][Ne];for(let Ve in Ee)Ee[Ve].availableImages=Ke}})}_syncRTLPluginState(Fe,Ke){return e._(this,void 0,void 0,function*(){if(e.bD.isParsed())return e.bD.getState();if(Ke.pluginStatus!=="loading")return e.bD.setState(Ke),Ke;let Ne=Ke.pluginURL;if(this.self.importScripts(Ne),e.bD.isParsed()){let Ee={pluginStatus:"loaded",pluginURL:Ne};return e.bD.setState(Ee),Ee}throw e.bD.setState({pluginStatus:"error",pluginURL:""}),new Error(`RTL Text Plugin failed to import scripts from ${Ne}`)})}_getAvailableImages(Fe){let Ke=this.availableImages[Fe];return Ke||(Ke=[]),Ke}_getLayerIndex(Fe){let Ke=this.layerIndexes[Fe];return Ke||(Ke=this.layerIndexes[Fe]=new t),Ke}_getWorkerSource(Fe,Ke,Ne){if(this.workerSources[Fe]||(this.workerSources[Fe]={}),this.workerSources[Fe][Ke]||(this.workerSources[Fe][Ke]={}),!this.workerSources[Fe][Ke][Ne]){let Ee={sendAsync:(Ve,ke)=>(Ve.targetMapId=Fe,this.actor.sendAsync(Ve,ke))};switch(Ke){case"vector":this.workerSources[Fe][Ke][Ne]=new i(Ee,this._getLayerIndex(Fe),this._getAvailableImages(Fe));break;case"geojson":this.workerSources[Fe][Ke][Ne]=new vr(Ee,this._getLayerIndex(Fe),this._getAvailableImages(Fe));break;default:this.workerSources[Fe][Ke][Ne]=new this.externalWorkerSourceTypes[Ke](Ee,this._getLayerIndex(Fe),this._getAvailableImages(Fe))}}return this.workerSources[Fe][Ke][Ne]}_getDEMWorkerSource(Fe,Ke){return this.demWorkerSources[Fe]||(this.demWorkerSources[Fe]={}),this.demWorkerSources[Fe][Ke]||(this.demWorkerSources[Fe][Ke]=new n),this.demWorkerSources[Fe][Ke]}}return e.i(self)&&(self.worker=new _r(self)),_r}),A("index",["exports","./shared"],function(e,t){"use strict";var r="4.7.1";let o,a,i={now:typeof performance<"u"&&performance&&performance.now?performance.now.bind(performance):Date.now.bind(Date),frameAsync:Oe=>new Promise((R,ae)=>{let we=requestAnimationFrame(R);Oe.signal.addEventListener("abort",()=>{cancelAnimationFrame(we),ae(t.c())})}),getImageData(Oe,R=0){return this.getImageCanvasContext(Oe).getImageData(-R,-R,Oe.width+2*R,Oe.height+2*R)},getImageCanvasContext(Oe){let R=window.document.createElement("canvas"),ae=R.getContext("2d",{willReadFrequently:!0});if(!ae)throw new Error("failed to create canvas 2d context");return R.width=Oe.width,R.height=Oe.height,ae.drawImage(Oe,0,0,Oe.width,Oe.height),ae},resolveURL:Oe=>(o||(o=document.createElement("a")),o.href=Oe,o.href),hardwareConcurrency:typeof navigator<"u"&&navigator.hardwareConcurrency||4,get prefersReducedMotion(){return!!matchMedia&&(a==null&&(a=matchMedia("(prefers-reduced-motion: reduce)")),a.matches)}};class n{static testProp(R){if(!n.docStyle)return R[0];for(let ae=0;ae{window.removeEventListener("click",n.suppressClickInternal,!0)},0)}static getScale(R){let ae=R.getBoundingClientRect();return{x:ae.width/R.offsetWidth||1,y:ae.height/R.offsetHeight||1,boundingClientRect:ae}}static getPoint(R,ae,we){let Se=ae.boundingClientRect;return new t.P((we.clientX-Se.left)/ae.x-R.clientLeft,(we.clientY-Se.top)/ae.y-R.clientTop)}static mousePos(R,ae){let we=n.getScale(R);return n.getPoint(R,we,ae)}static touchPos(R,ae){let we=[],Se=n.getScale(R);for(let De=0;De{c&&T(c),c=null,p=!0},h.onerror=()=>{v=!0,c=null},h.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAQAAAAfQ//73v/+BiOh/AAA="),function(Oe){let R,ae,we,Se;Oe.resetRequestQueue=()=>{R=[],ae=0,we=0,Se={}},Oe.addThrottleControl=Dt=>{let Yt=we++;return Se[Yt]=Dt,Yt},Oe.removeThrottleControl=Dt=>{delete Se[Dt],ft()},Oe.getImage=(Dt,Yt,cr=!0)=>new Promise((hr,jr)=>{s.supported&&(Dt.headers||(Dt.headers={}),Dt.headers.accept="image/webp,*/*"),t.e(Dt,{type:"image"}),R.push({abortController:Yt,requestParameters:Dt,supportImageRefresh:cr,state:"queued",onError:ea=>{jr(ea)},onSuccess:ea=>{hr(ea)}}),ft()});let De=Dt=>t._(this,void 0,void 0,function*(){Dt.state="running";let{requestParameters:Yt,supportImageRefresh:cr,onError:hr,onSuccess:jr,abortController:ea}=Dt,qe=cr===!1&&!t.i(self)&&!t.g(Yt.url)&&(!Yt.headers||Object.keys(Yt.headers).reduce((ht,At)=>ht&&At==="accept",!0));ae++;let Je=qe?bt(Yt,ea):t.m(Yt,ea);try{let ht=yield Je;delete Dt.abortController,Dt.state="completed",ht.data instanceof HTMLImageElement||t.b(ht.data)?jr(ht):ht.data&&jr({data:yield(ot=ht.data,typeof createImageBitmap=="function"?t.d(ot):t.f(ot)),cacheControl:ht.cacheControl,expires:ht.expires})}catch(ht){delete Dt.abortController,hr(ht)}finally{ae--,ft()}var ot}),ft=()=>{let Dt=(()=>{for(let Yt of Object.keys(Se))if(Se[Yt]())return!0;return!1})()?t.a.MAX_PARALLEL_IMAGE_REQUESTS_PER_FRAME:t.a.MAX_PARALLEL_IMAGE_REQUESTS;for(let Yt=ae;Yt0;Yt++){let cr=R.shift();cr.abortController.signal.aborted?Yt--:De(cr)}},bt=(Dt,Yt)=>new Promise((cr,hr)=>{let jr=new Image,ea=Dt.url,qe=Dt.credentials;qe&&qe==="include"?jr.crossOrigin="use-credentials":(qe&&qe==="same-origin"||!t.s(ea))&&(jr.crossOrigin="anonymous"),Yt.signal.addEventListener("abort",()=>{jr.src="",hr(t.c())}),jr.fetchPriority="high",jr.onload=()=>{jr.onerror=jr.onload=null,cr({data:jr})},jr.onerror=()=>{jr.onerror=jr.onload=null,Yt.signal.aborted||hr(new Error("Could not load image. Please make sure to use a supported image type such as PNG or JPEG. Note that SVGs are not supported."))},jr.src=ea})}(l||(l={})),l.resetRequestQueue();class _{constructor(R){this._transformRequestFn=R}transformRequest(R,ae){return this._transformRequestFn&&this._transformRequestFn(R,ae)||{url:R}}setTransformRequest(R){this._transformRequestFn=R}}function w(Oe){var R=new t.A(3);return R[0]=Oe[0],R[1]=Oe[1],R[2]=Oe[2],R}var S,E=function(Oe,R,ae){return Oe[0]=R[0]-ae[0],Oe[1]=R[1]-ae[1],Oe[2]=R[2]-ae[2],Oe};S=new t.A(3),t.A!=Float32Array&&(S[0]=0,S[1]=0,S[2]=0);var m=function(Oe){var R=Oe[0],ae=Oe[1];return R*R+ae*ae};function b(Oe){let R=[];if(typeof Oe=="string")R.push({id:"default",url:Oe});else if(Oe&&Oe.length>0){let ae=[];for(let{id:we,url:Se}of Oe){let De=`${we}${Se}`;ae.indexOf(De)===-1&&(ae.push(De),R.push({id:we,url:Se}))}}return R}function d(Oe,R,ae){let we=Oe.split("?");return we[0]+=`${R}${ae}`,we.join("?")}(function(){var Oe=new t.A(2);t.A!=Float32Array&&(Oe[0]=0,Oe[1]=0)})();class u{constructor(R,ae,we,Se){this.context=R,this.format=we,this.texture=R.gl.createTexture(),this.update(ae,Se)}update(R,ae,we){let{width:Se,height:De}=R,ft=!(this.size&&this.size[0]===Se&&this.size[1]===De||we),{context:bt}=this,{gl:Dt}=bt;if(this.useMipmap=!!(ae&&ae.useMipmap),Dt.bindTexture(Dt.TEXTURE_2D,this.texture),bt.pixelStoreUnpackFlipY.set(!1),bt.pixelStoreUnpack.set(1),bt.pixelStoreUnpackPremultiplyAlpha.set(this.format===Dt.RGBA&&(!ae||ae.premultiply!==!1)),ft)this.size=[Se,De],R instanceof HTMLImageElement||R instanceof HTMLCanvasElement||R instanceof HTMLVideoElement||R instanceof ImageData||t.b(R)?Dt.texImage2D(Dt.TEXTURE_2D,0,this.format,this.format,Dt.UNSIGNED_BYTE,R):Dt.texImage2D(Dt.TEXTURE_2D,0,this.format,Se,De,0,this.format,Dt.UNSIGNED_BYTE,R.data);else{let{x:Yt,y:cr}=we||{x:0,y:0};R instanceof HTMLImageElement||R instanceof HTMLCanvasElement||R instanceof HTMLVideoElement||R instanceof ImageData||t.b(R)?Dt.texSubImage2D(Dt.TEXTURE_2D,0,Yt,cr,Dt.RGBA,Dt.UNSIGNED_BYTE,R):Dt.texSubImage2D(Dt.TEXTURE_2D,0,Yt,cr,Se,De,Dt.RGBA,Dt.UNSIGNED_BYTE,R.data)}this.useMipmap&&this.isSizePowerOfTwo()&&Dt.generateMipmap(Dt.TEXTURE_2D)}bind(R,ae,we){let{context:Se}=this,{gl:De}=Se;De.bindTexture(De.TEXTURE_2D,this.texture),we!==De.LINEAR_MIPMAP_NEAREST||this.isSizePowerOfTwo()||(we=De.LINEAR),R!==this.filter&&(De.texParameteri(De.TEXTURE_2D,De.TEXTURE_MAG_FILTER,R),De.texParameteri(De.TEXTURE_2D,De.TEXTURE_MIN_FILTER,we||R),this.filter=R),ae!==this.wrap&&(De.texParameteri(De.TEXTURE_2D,De.TEXTURE_WRAP_S,ae),De.texParameteri(De.TEXTURE_2D,De.TEXTURE_WRAP_T,ae),this.wrap=ae)}isSizePowerOfTwo(){return this.size[0]===this.size[1]&&Math.log(this.size[0])/Math.LN2%1==0}destroy(){let{gl:R}=this.context;R.deleteTexture(this.texture),this.texture=null}}function y(Oe){let{userImage:R}=Oe;return!!(R&&R.render&&R.render())&&(Oe.data.replace(new Uint8Array(R.data.buffer)),!0)}class f extends t.E{constructor(){super(),this.images={},this.updatedImages={},this.callbackDispatchedThisFrame={},this.loaded=!1,this.requestors=[],this.patterns={},this.atlasImage=new t.R({width:1,height:1}),this.dirty=!0}isLoaded(){return this.loaded}setLoaded(R){if(this.loaded!==R&&(this.loaded=R,R)){for(let{ids:ae,promiseResolve:we}of this.requestors)we(this._getImagesForIds(ae));this.requestors=[]}}getImage(R){let ae=this.images[R];if(ae&&!ae.data&&ae.spriteData){let we=ae.spriteData;ae.data=new t.R({width:we.width,height:we.height},we.context.getImageData(we.x,we.y,we.width,we.height).data),ae.spriteData=null}return ae}addImage(R,ae){if(this.images[R])throw new Error(`Image id ${R} already exist, use updateImage instead`);this._validate(R,ae)&&(this.images[R]=ae)}_validate(R,ae){let we=!0,Se=ae.data||ae.spriteData;return this._validateStretch(ae.stretchX,Se&&Se.width)||(this.fire(new t.j(new Error(`Image "${R}" has invalid "stretchX" value`))),we=!1),this._validateStretch(ae.stretchY,Se&&Se.height)||(this.fire(new t.j(new Error(`Image "${R}" has invalid "stretchY" value`))),we=!1),this._validateContent(ae.content,ae)||(this.fire(new t.j(new Error(`Image "${R}" has invalid "content" value`))),we=!1),we}_validateStretch(R,ae){if(!R)return!0;let we=0;for(let Se of R){if(Se[0]{let Se=!0;if(!this.isLoaded())for(let De of R)this.images[De]||(Se=!1);this.isLoaded()||Se?ae(this._getImagesForIds(R)):this.requestors.push({ids:R,promiseResolve:ae})})}_getImagesForIds(R){let ae={};for(let we of R){let Se=this.getImage(we);Se||(this.fire(new t.k("styleimagemissing",{id:we})),Se=this.getImage(we)),Se?ae[we]={data:Se.data.clone(),pixelRatio:Se.pixelRatio,sdf:Se.sdf,version:Se.version,stretchX:Se.stretchX,stretchY:Se.stretchY,content:Se.content,textFitWidth:Se.textFitWidth,textFitHeight:Se.textFitHeight,hasRenderCallback:!!(Se.userImage&&Se.userImage.render)}:t.w(`Image "${we}" could not be loaded. Please make sure you have added the image with map.addImage() or a "sprite" property in your style. You can provide missing images by listening for the "styleimagemissing" map event.`)}return ae}getPixelSize(){let{width:R,height:ae}=this.atlasImage;return{width:R,height:ae}}getPattern(R){let ae=this.patterns[R],we=this.getImage(R);if(!we)return null;if(ae&&ae.position.version===we.version)return ae.position;if(ae)ae.position.version=we.version;else{let Se={w:we.data.width+2,h:we.data.height+2,x:0,y:0},De=new t.I(Se,we);this.patterns[R]={bin:Se,position:De}}return this._updatePatternAtlas(),this.patterns[R].position}bind(R){let ae=R.gl;this.atlasTexture?this.dirty&&(this.atlasTexture.update(this.atlasImage),this.dirty=!1):this.atlasTexture=new u(R,this.atlasImage,ae.RGBA),this.atlasTexture.bind(ae.LINEAR,ae.CLAMP_TO_EDGE)}_updatePatternAtlas(){let R=[];for(let De in this.patterns)R.push(this.patterns[De].bin);let{w:ae,h:we}=t.p(R),Se=this.atlasImage;Se.resize({width:ae||1,height:we||1});for(let De in this.patterns){let{bin:ft}=this.patterns[De],bt=ft.x+1,Dt=ft.y+1,Yt=this.getImage(De).data,cr=Yt.width,hr=Yt.height;t.R.copy(Yt,Se,{x:0,y:0},{x:bt,y:Dt},{width:cr,height:hr}),t.R.copy(Yt,Se,{x:0,y:hr-1},{x:bt,y:Dt-1},{width:cr,height:1}),t.R.copy(Yt,Se,{x:0,y:0},{x:bt,y:Dt+hr},{width:cr,height:1}),t.R.copy(Yt,Se,{x:cr-1,y:0},{x:bt-1,y:Dt},{width:1,height:hr}),t.R.copy(Yt,Se,{x:0,y:0},{x:bt+cr,y:Dt},{width:1,height:hr})}this.dirty=!0}beginFrame(){this.callbackDispatchedThisFrame={}}dispatchRenderCallbacks(R){for(let ae of R){if(this.callbackDispatchedThisFrame[ae])continue;this.callbackDispatchedThisFrame[ae]=!0;let we=this.getImage(ae);we||t.w(`Image with ID: "${ae}" was not found`),y(we)&&this.updateImage(ae,we)}}}let P=1e20;function L(Oe,R,ae,we,Se,De,ft,bt,Dt){for(let Yt=R;Yt-1);Dt++,De[Dt]=bt,ft[Dt]=Yt,ft[Dt+1]=P}for(let bt=0,Dt=0;bt65535)throw new Error("glyphs > 65535 not supported");if(we.ranges[De])return{stack:R,id:ae,glyph:Se};if(!this.url)throw new Error("glyphsUrl is not set");if(!we.requests[De]){let bt=F.loadGlyphRange(R,De,this.url,this.requestManager);we.requests[De]=bt}let ft=yield we.requests[De];for(let bt in ft)this._doesCharSupportLocalGlyph(+bt)||(we.glyphs[+bt]=ft[+bt]);return we.ranges[De]=!0,{stack:R,id:ae,glyph:ft[ae]||null}})}_doesCharSupportLocalGlyph(R){return!!this.localIdeographFontFamily&&new RegExp("\\p{Ideo}|\\p{sc=Hang}|\\p{sc=Hira}|\\p{sc=Kana}","u").test(String.fromCodePoint(R))}_tinySDF(R,ae,we){let Se=this.localIdeographFontFamily;if(!Se||!this._doesCharSupportLocalGlyph(we))return;let De=R.tinySDF;if(!De){let bt="400";/bold/i.test(ae)?bt="900":/medium/i.test(ae)?bt="500":/light/i.test(ae)&&(bt="200"),De=R.tinySDF=new F.TinySDF({fontSize:48,buffer:6,radius:16,cutoff:.25,fontFamily:Se,fontWeight:bt})}let ft=De.draw(String.fromCharCode(we));return{id:we,bitmap:new t.o({width:ft.width||60,height:ft.height||60},ft.data),metrics:{width:ft.glyphWidth/2||24,height:ft.glyphHeight/2||24,left:ft.glyphLeft/2+.5||0,top:ft.glyphTop/2-27.5||-8,advance:ft.glyphAdvance/2||24,isDoubleResolution:!0}}}}F.loadGlyphRange=function(Oe,R,ae,we){return t._(this,void 0,void 0,function*(){let Se=256*R,De=Se+255,ft=we.transformRequest(ae.replace("{fontstack}",Oe).replace("{range}",`${Se}-${De}`),"Glyphs"),bt=yield t.l(ft,new AbortController);if(!bt||!bt.data)throw new Error(`Could not load glyph range. range: ${R}, ${Se}-${De}`);let Dt={};for(let Yt of t.n(bt.data))Dt[Yt.id]=Yt;return Dt})},F.TinySDF=class{constructor({fontSize:Oe=24,buffer:R=3,radius:ae=8,cutoff:we=.25,fontFamily:Se="sans-serif",fontWeight:De="normal",fontStyle:ft="normal"}={}){this.buffer=R,this.cutoff=we,this.radius=ae;let bt=this.size=Oe+4*R,Dt=this._createCanvas(bt),Yt=this.ctx=Dt.getContext("2d",{willReadFrequently:!0});Yt.font=`${ft} ${De} ${Oe}px ${Se}`,Yt.textBaseline="alphabetic",Yt.textAlign="left",Yt.fillStyle="black",this.gridOuter=new Float64Array(bt*bt),this.gridInner=new Float64Array(bt*bt),this.f=new Float64Array(bt),this.z=new Float64Array(bt+1),this.v=new Uint16Array(bt)}_createCanvas(Oe){let R=document.createElement("canvas");return R.width=R.height=Oe,R}draw(Oe){let{width:R,actualBoundingBoxAscent:ae,actualBoundingBoxDescent:we,actualBoundingBoxLeft:Se,actualBoundingBoxRight:De}=this.ctx.measureText(Oe),ft=Math.ceil(ae),bt=Math.max(0,Math.min(this.size-this.buffer,Math.ceil(De-Se))),Dt=Math.min(this.size-this.buffer,ft+Math.ceil(we)),Yt=bt+2*this.buffer,cr=Dt+2*this.buffer,hr=Math.max(Yt*cr,0),jr=new Uint8ClampedArray(hr),ea={data:jr,width:Yt,height:cr,glyphWidth:bt,glyphHeight:Dt,glyphTop:ft,glyphLeft:0,glyphAdvance:R};if(bt===0||Dt===0)return ea;let{ctx:qe,buffer:Je,gridInner:ot,gridOuter:ht}=this;qe.clearRect(Je,Je,bt,Dt),qe.fillText(Oe,Je,Je+ft);let At=qe.getImageData(Je,Je,bt,Dt);ht.fill(P,0,hr),ot.fill(0,0,hr);for(let _t=0;_t0?pr*pr:0,ot[nr]=pr<0?pr*pr:0}}L(ht,0,0,Yt,cr,Yt,this.f,this.v,this.z),L(ot,Je,Je,bt,Dt,Yt,this.f,this.v,this.z);for(let _t=0;_t1&&(Dt=R[++bt]);let cr=Math.abs(Yt-Dt.left),hr=Math.abs(Yt-Dt.right),jr=Math.min(cr,hr),ea,qe=De/we*(Se+1);if(Dt.isDash){let Je=Se-Math.abs(qe);ea=Math.sqrt(jr*jr+Je*Je)}else ea=Se-Math.sqrt(jr*jr+qe*qe);this.data[ft+Yt]=Math.max(0,Math.min(255,ea+128))}}}addRegularDash(R){for(let bt=R.length-1;bt>=0;--bt){let Dt=R[bt],Yt=R[bt+1];Dt.zeroLength?R.splice(bt,1):Yt&&Yt.isDash===Dt.isDash&&(Yt.left=Dt.left,R.splice(bt,1))}let ae=R[0],we=R[R.length-1];ae.isDash===we.isDash&&(ae.left=we.left-this.width,we.right=ae.right+this.width);let Se=this.width*this.nextRow,De=0,ft=R[De];for(let bt=0;bt1&&(ft=R[++De]);let Dt=Math.abs(bt-ft.left),Yt=Math.abs(bt-ft.right),cr=Math.min(Dt,Yt);this.data[Se+bt]=Math.max(0,Math.min(255,(ft.isDash?cr:-cr)+128))}}addDash(R,ae){let we=ae?7:0,Se=2*we+1;if(this.nextRow+Se>this.height)return t.w("LineAtlas out of space"),null;let De=0;for(let bt=0;bt{ae.terminate()}),this.workers=null)}isPreloaded(){return!!this.active[Q]}numActive(){return Object.keys(this.active).length}}let se=Math.floor(i.hardwareConcurrency/2),he,G;function $(){return he||(he=new ue),he}ue.workerCount=t.C(globalThis)?Math.max(Math.min(se,3),1):1;class J{constructor(R,ae){this.workerPool=R,this.actors=[],this.currentActor=0,this.id=ae;let we=this.workerPool.acquire(ae);for(let Se=0;Se{ae.remove()}),this.actors=[],R&&this.workerPool.release(this.id)}registerMessageHandler(R,ae){for(let we of this.actors)we.registerMessageHandler(R,ae)}}function Z(){return G||(G=new J($(),t.G),G.registerMessageHandler("GR",(Oe,R,ae)=>t.m(R,ae))),G}function re(Oe,R){let ae=t.H();return t.J(ae,ae,[1,1,0]),t.K(ae,ae,[.5*Oe.width,.5*Oe.height,1]),t.L(ae,ae,Oe.calculatePosMatrix(R.toUnwrapped()))}function ne(Oe,R,ae,we,Se,De){let ft=function(hr,jr,ea){if(hr)for(let qe of hr){let Je=jr[qe];if(Je&&Je.source===ea&&Je.type==="fill-extrusion")return!0}else for(let qe in jr){let Je=jr[qe];if(Je.source===ea&&Je.type==="fill-extrusion")return!0}return!1}(Se&&Se.layers,R,Oe.id),bt=De.maxPitchScaleFactor(),Dt=Oe.tilesIn(we,bt,ft);Dt.sort(j);let Yt=[];for(let hr of Dt)Yt.push({wrappedTileID:hr.tileID.wrapped().key,queryResults:hr.tile.queryRenderedFeatures(R,ae,Oe._state,hr.queryGeometry,hr.cameraQueryGeometry,hr.scale,Se,De,bt,re(Oe.transform,hr.tileID))});let cr=function(hr){let jr={},ea={};for(let qe of hr){let Je=qe.queryResults,ot=qe.wrappedTileID,ht=ea[ot]=ea[ot]||{};for(let At in Je){let _t=Je[At],Pt=ht[At]=ht[At]||{},er=jr[At]=jr[At]||[];for(let nr of _t)Pt[nr.featureIndex]||(Pt[nr.featureIndex]=!0,er.push(nr))}}return jr}(Yt);for(let hr in cr)cr[hr].forEach(jr=>{let ea=jr.feature,qe=Oe.getFeatureState(ea.layer["source-layer"],ea.id);ea.source=ea.layer.source,ea.layer["source-layer"]&&(ea.sourceLayer=ea.layer["source-layer"]),ea.state=qe});return cr}function j(Oe,R){let ae=Oe.tileID,we=R.tileID;return ae.overscaledZ-we.overscaledZ||ae.canonical.y-we.canonical.y||ae.wrap-we.wrap||ae.canonical.x-we.canonical.x}function ee(Oe,R,ae){return t._(this,void 0,void 0,function*(){let we=Oe;if(Oe.url?we=(yield t.h(R.transformRequest(Oe.url,"Source"),ae)).data:yield i.frameAsync(ae),!we)return null;let Se=t.M(t.e(we,Oe),["tiles","minzoom","maxzoom","attribution","bounds","scheme","tileSize","encoding"]);return"vector_layers"in we&&we.vector_layers&&(Se.vectorLayerIds=we.vector_layers.map(De=>De.id)),Se})}class ie{constructor(R,ae){R&&(ae?this.setSouthWest(R).setNorthEast(ae):Array.isArray(R)&&(R.length===4?this.setSouthWest([R[0],R[1]]).setNorthEast([R[2],R[3]]):this.setSouthWest(R[0]).setNorthEast(R[1])))}setNorthEast(R){return this._ne=R instanceof t.N?new t.N(R.lng,R.lat):t.N.convert(R),this}setSouthWest(R){return this._sw=R instanceof t.N?new t.N(R.lng,R.lat):t.N.convert(R),this}extend(R){let ae=this._sw,we=this._ne,Se,De;if(R instanceof t.N)Se=R,De=R;else{if(!(R instanceof ie))return Array.isArray(R)?R.length===4||R.every(Array.isArray)?this.extend(ie.convert(R)):this.extend(t.N.convert(R)):R&&("lng"in R||"lon"in R)&&"lat"in R?this.extend(t.N.convert(R)):this;if(Se=R._sw,De=R._ne,!Se||!De)return this}return ae||we?(ae.lng=Math.min(Se.lng,ae.lng),ae.lat=Math.min(Se.lat,ae.lat),we.lng=Math.max(De.lng,we.lng),we.lat=Math.max(De.lat,we.lat)):(this._sw=new t.N(Se.lng,Se.lat),this._ne=new t.N(De.lng,De.lat)),this}getCenter(){return new t.N((this._sw.lng+this._ne.lng)/2,(this._sw.lat+this._ne.lat)/2)}getSouthWest(){return this._sw}getNorthEast(){return this._ne}getNorthWest(){return new t.N(this.getWest(),this.getNorth())}getSouthEast(){return new t.N(this.getEast(),this.getSouth())}getWest(){return this._sw.lng}getSouth(){return this._sw.lat}getEast(){return this._ne.lng}getNorth(){return this._ne.lat}toArray(){return[this._sw.toArray(),this._ne.toArray()]}toString(){return`LngLatBounds(${this._sw.toString()}, ${this._ne.toString()})`}isEmpty(){return!(this._sw&&this._ne)}contains(R){let{lng:ae,lat:we}=t.N.convert(R),Se=this._sw.lng<=ae&&ae<=this._ne.lng;return this._sw.lng>this._ne.lng&&(Se=this._sw.lng>=ae&&ae>=this._ne.lng),this._sw.lat<=we&&we<=this._ne.lat&&Se}static convert(R){return R instanceof ie?R:R&&new ie(R)}static fromLngLat(R,ae=0){let we=360*ae/40075017,Se=we/Math.cos(Math.PI/180*R.lat);return new ie(new t.N(R.lng-Se,R.lat-we),new t.N(R.lng+Se,R.lat+we))}adjustAntiMeridian(){let R=new t.N(this._sw.lng,this._sw.lat),ae=new t.N(this._ne.lng,this._ne.lat);return new ie(R,R.lng>ae.lng?new t.N(ae.lng+360,ae.lat):ae)}}class fe{constructor(R,ae,we){this.bounds=ie.convert(this.validateBounds(R)),this.minzoom=ae||0,this.maxzoom=we||24}validateBounds(R){return Array.isArray(R)&&R.length===4?[Math.max(-180,R[0]),Math.max(-90,R[1]),Math.min(180,R[2]),Math.min(90,R[3])]:[-180,-90,180,90]}contains(R){let ae=Math.pow(2,R.z),we=Math.floor(t.O(this.bounds.getWest())*ae),Se=Math.floor(t.Q(this.bounds.getNorth())*ae),De=Math.ceil(t.O(this.bounds.getEast())*ae),ft=Math.ceil(t.Q(this.bounds.getSouth())*ae);return R.x>=we&&R.x=Se&&R.y{this._options.tiles=R}),this}setUrl(R){return this.setSourceProperty(()=>{this.url=R,this._options.url=R}),this}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}serialize(){return t.e({},this._options)}loadTile(R){return t._(this,void 0,void 0,function*(){let ae=R.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),we={request:this.map._requestManager.transformRequest(ae,"Tile"),uid:R.uid,tileID:R.tileID,zoom:R.tileID.overscaledZ,tileSize:this.tileSize*R.tileID.overscaleFactor(),type:this.type,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};we.request.collectResourceTiming=this._collectResourceTiming;let Se="RT";if(R.actor&&R.state!=="expired"){if(R.state==="loading")return new Promise((De,ft)=>{R.reloadPromise={resolve:De,reject:ft}})}else R.actor=this.dispatcher.getActor(),Se="LT";R.abortController=new AbortController;try{let De=yield R.actor.sendAsync({type:Se,data:we},R.abortController);if(delete R.abortController,R.aborted)return;this._afterTileLoadWorkerResponse(R,De)}catch(De){if(delete R.abortController,R.aborted)return;if(De&&De.status!==404)throw De;this._afterTileLoadWorkerResponse(R,null)}})}_afterTileLoadWorkerResponse(R,ae){if(ae&&ae.resourceTiming&&(R.resourceTiming=ae.resourceTiming),ae&&this.map._refreshExpiredTiles&&R.setExpiryData(ae),R.loadVectorData(ae,this.map.painter),R.reloadPromise){let we=R.reloadPromise;R.reloadPromise=null,this.loadTile(R).then(we.resolve).catch(we.reject)}}abortTile(R){return t._(this,void 0,void 0,function*(){R.abortController&&(R.abortController.abort(),delete R.abortController),R.actor&&(yield R.actor.sendAsync({type:"AT",data:{uid:R.uid,type:this.type,source:this.id}}))})}unloadTile(R){return t._(this,void 0,void 0,function*(){R.unloadVectorData(),R.actor&&(yield R.actor.sendAsync({type:"RMT",data:{uid:R.uid,type:this.type,source:this.id}}))})}hasTransition(){return!1}}class Ae extends t.E{constructor(R,ae,we,Se){super(),this.id=R,this.dispatcher=we,this.setEventedParent(Se),this.type="raster",this.minzoom=0,this.maxzoom=22,this.roundZoom=!0,this.scheme="xyz",this.tileSize=512,this._loaded=!1,this._options=t.e({type:"raster"},ae),t.e(this,t.M(ae,["url","scheme","tileSize"]))}load(){return t._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this._tileJSONRequest=new AbortController;try{let R=yield ee(this._options,this.map._requestManager,this._tileJSONRequest);this._tileJSONRequest=null,this._loaded=!0,R&&(t.e(this,R),R.bounds&&(this.tileBounds=new fe(R.bounds,this.minzoom,this.maxzoom)),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})))}catch(R){this._tileJSONRequest=null,this.fire(new t.j(R))}})}loaded(){return this._loaded}onAdd(R){this.map=R,this.load()}onRemove(){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null)}setSourceProperty(R){this._tileJSONRequest&&(this._tileJSONRequest.abort(),this._tileJSONRequest=null),R(),this.load()}setTiles(R){return this.setSourceProperty(()=>{this._options.tiles=R}),this}setUrl(R){return this.setSourceProperty(()=>{this.url=R,this._options.url=R}),this}serialize(){return t.e({},this._options)}hasTile(R){return!this.tileBounds||this.tileBounds.contains(R.canonical)}loadTile(R){return t._(this,void 0,void 0,function*(){let ae=R.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme);R.abortController=new AbortController;try{let we=yield l.getImage(this.map._requestManager.transformRequest(ae,"Tile"),R.abortController,this.map._refreshExpiredTiles);if(delete R.abortController,R.aborted)return void(R.state="unloaded");if(we&&we.data){this.map._refreshExpiredTiles&&we.cacheControl&&we.expires&&R.setExpiryData({cacheControl:we.cacheControl,expires:we.expires});let Se=this.map.painter.context,De=Se.gl,ft=we.data;R.texture=this.map.painter.getTileTexture(ft.width),R.texture?R.texture.update(ft,{useMipmap:!0}):(R.texture=new u(Se,ft,De.RGBA,{useMipmap:!0}),R.texture.bind(De.LINEAR,De.CLAMP_TO_EDGE,De.LINEAR_MIPMAP_NEAREST)),R.state="loaded"}}catch(we){if(delete R.abortController,R.aborted)R.state="unloaded";else if(we)throw R.state="errored",we}})}abortTile(R){return t._(this,void 0,void 0,function*(){R.abortController&&(R.abortController.abort(),delete R.abortController)})}unloadTile(R){return t._(this,void 0,void 0,function*(){R.texture&&this.map.painter.saveTileTexture(R.texture)})}hasTransition(){return!1}}class Be extends Ae{constructor(R,ae,we,Se){super(R,ae,we,Se),this.type="raster-dem",this.maxzoom=22,this._options=t.e({type:"raster-dem"},ae),this.encoding=ae.encoding||"mapbox",this.redFactor=ae.redFactor,this.greenFactor=ae.greenFactor,this.blueFactor=ae.blueFactor,this.baseShift=ae.baseShift}loadTile(R){return t._(this,void 0,void 0,function*(){let ae=R.tileID.canonical.url(this.tiles,this.map.getPixelRatio(),this.scheme),we=this.map._requestManager.transformRequest(ae,"Tile");R.neighboringTiles=this._getNeighboringTiles(R.tileID),R.abortController=new AbortController;try{let Se=yield l.getImage(we,R.abortController,this.map._refreshExpiredTiles);if(delete R.abortController,R.aborted)return void(R.state="unloaded");if(Se&&Se.data){let De=Se.data;this.map._refreshExpiredTiles&&Se.cacheControl&&Se.expires&&R.setExpiryData({cacheControl:Se.cacheControl,expires:Se.expires});let ft=t.b(De)&&t.U()?De:yield this.readImageNow(De),bt={type:this.type,uid:R.uid,source:this.id,rawImageData:ft,encoding:this.encoding,redFactor:this.redFactor,greenFactor:this.greenFactor,blueFactor:this.blueFactor,baseShift:this.baseShift};if(!R.actor||R.state==="expired"){R.actor=this.dispatcher.getActor();let Dt=yield R.actor.sendAsync({type:"LDT",data:bt});R.dem=Dt,R.needsHillshadePrepare=!0,R.needsTerrainPrepare=!0,R.state="loaded"}}}catch(Se){if(delete R.abortController,R.aborted)R.state="unloaded";else if(Se)throw R.state="errored",Se}})}readImageNow(R){return t._(this,void 0,void 0,function*(){if(typeof VideoFrame<"u"&&t.V()){let ae=R.width+2,we=R.height+2;try{return new t.R({width:ae,height:we},yield t.W(R,-1,-1,ae,we))}catch{}}return i.getImageData(R,1)})}_getNeighboringTiles(R){let ae=R.canonical,we=Math.pow(2,ae.z),Se=(ae.x-1+we)%we,De=ae.x===0?R.wrap-1:R.wrap,ft=(ae.x+1+we)%we,bt=ae.x+1===we?R.wrap+1:R.wrap,Dt={};return Dt[new t.S(R.overscaledZ,De,ae.z,Se,ae.y).key]={backfilled:!1},Dt[new t.S(R.overscaledZ,bt,ae.z,ft,ae.y).key]={backfilled:!1},ae.y>0&&(Dt[new t.S(R.overscaledZ,De,ae.z,Se,ae.y-1).key]={backfilled:!1},Dt[new t.S(R.overscaledZ,R.wrap,ae.z,ae.x,ae.y-1).key]={backfilled:!1},Dt[new t.S(R.overscaledZ,bt,ae.z,ft,ae.y-1).key]={backfilled:!1}),ae.y+10&&t.e(De,{resourceTiming:Se}),this.fire(new t.k("data",Object.assign(Object.assign({},De),{sourceDataType:"metadata"}))),this.fire(new t.k("data",Object.assign(Object.assign({},De),{sourceDataType:"content"})))}catch(we){if(this._pendingLoads--,this._removed)return void this.fire(new t.k("dataabort",{dataType:"source"}));this.fire(new t.j(we))}})}loaded(){return this._pendingLoads===0}loadTile(R){return t._(this,void 0,void 0,function*(){let ae=R.actor?"RT":"LT";R.actor=this.actor;let we={type:this.type,uid:R.uid,tileID:R.tileID,zoom:R.tileID.overscaledZ,maxZoom:this.maxzoom,tileSize:this.tileSize,source:this.id,pixelRatio:this.map.getPixelRatio(),showCollisionBoxes:this.map.showCollisionBoxes,promoteId:this.promoteId};R.abortController=new AbortController;let Se=yield this.actor.sendAsync({type:ae,data:we},R.abortController);delete R.abortController,R.unloadVectorData(),R.aborted||R.loadVectorData(Se,this.map.painter,ae==="RT")})}abortTile(R){return t._(this,void 0,void 0,function*(){R.abortController&&(R.abortController.abort(),delete R.abortController),R.aborted=!0})}unloadTile(R){return t._(this,void 0,void 0,function*(){R.unloadVectorData(),yield this.actor.sendAsync({type:"RMT",data:{uid:R.uid,type:this.type,source:this.id}})})}onRemove(){this._removed=!0,this.actor.sendAsync({type:"RS",data:{type:this.type,source:this.id}})}serialize(){return t.e({},this._options,{type:this.type,data:this._data})}hasTransition(){return!1}}var Ze=t.Y([{name:"a_pos",type:"Int16",components:2},{name:"a_texture_pos",type:"Int16",components:2}]);class at extends t.E{constructor(R,ae,we,Se){super(),this.id=R,this.dispatcher=we,this.coordinates=ae.coordinates,this.type="image",this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.tiles={},this._loaded=!1,this.setEventedParent(Se),this.options=ae}load(R){return t._(this,void 0,void 0,function*(){this._loaded=!1,this.fire(new t.k("dataloading",{dataType:"source"})),this.url=this.options.url,this._request=new AbortController;try{let ae=yield l.getImage(this.map._requestManager.transformRequest(this.url,"Image"),this._request);this._request=null,this._loaded=!0,ae&&ae.data&&(this.image=ae.data,R&&(this.coordinates=R),this._finishLoading())}catch(ae){this._request=null,this._loaded=!0,this.fire(new t.j(ae))}})}loaded(){return this._loaded}updateImage(R){return R.url?(this._request&&(this._request.abort(),this._request=null),this.options.url=R.url,this.load(R.coordinates).finally(()=>{this.texture=null}),this):this}_finishLoading(){this.map&&(this.setCoordinates(this.coordinates),this.fire(new t.k("data",{dataType:"source",sourceDataType:"metadata"})))}onAdd(R){this.map=R,this.load()}onRemove(){this._request&&(this._request.abort(),this._request=null)}setCoordinates(R){this.coordinates=R;let ae=R.map(t.Z.fromLngLat);this.tileID=function(Se){let De=1/0,ft=1/0,bt=-1/0,Dt=-1/0;for(let jr of Se)De=Math.min(De,jr.x),ft=Math.min(ft,jr.y),bt=Math.max(bt,jr.x),Dt=Math.max(Dt,jr.y);let Yt=Math.max(bt-De,Dt-ft),cr=Math.max(0,Math.floor(-Math.log(Yt)/Math.LN2)),hr=Math.pow(2,cr);return new t.a1(cr,Math.floor((De+bt)/2*hr),Math.floor((ft+Dt)/2*hr))}(ae),this.minzoom=this.maxzoom=this.tileID.z;let we=ae.map(Se=>this.tileID.getTilePoint(Se)._round());return this._boundsArray=new t.$,this._boundsArray.emplaceBack(we[0].x,we[0].y,0,0),this._boundsArray.emplaceBack(we[1].x,we[1].y,t.X,0),this._boundsArray.emplaceBack(we[3].x,we[3].y,0,t.X),this._boundsArray.emplaceBack(we[2].x,we[2].y,t.X,t.X),this.boundsBuffer&&(this.boundsBuffer.destroy(),delete this.boundsBuffer),this.fire(new t.k("data",{dataType:"source",sourceDataType:"content"})),this}prepare(){if(Object.keys(this.tiles).length===0||!this.image)return;let R=this.map.painter.context,ae=R.gl;this.boundsBuffer||(this.boundsBuffer=R.createVertexBuffer(this._boundsArray,Ze.members)),this.boundsSegments||(this.boundsSegments=t.a0.simpleSegment(0,0,4,2)),this.texture||(this.texture=new u(R,this.image,ae.RGBA),this.texture.bind(ae.LINEAR,ae.CLAMP_TO_EDGE));let we=!1;for(let Se in this.tiles){let De=this.tiles[Se];De.state!=="loaded"&&(De.state="loaded",De.texture=this.texture,we=!0)}we&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}loadTile(R){return t._(this,void 0,void 0,function*(){this.tileID&&this.tileID.equals(R.tileID.canonical)?(this.tiles[String(R.tileID.wrap)]=R,R.buckets={}):R.state="errored"})}serialize(){return{type:"image",url:this.options.url,coordinates:this.coordinates}}hasTransition(){return!1}}class it extends at{constructor(R,ae,we,Se){super(R,ae,we,Se),this.roundZoom=!0,this.type="video",this.options=ae}load(){return t._(this,void 0,void 0,function*(){this._loaded=!1;let R=this.options;this.urls=[];for(let ae of R.urls)this.urls.push(this.map._requestManager.transformRequest(ae,"Source").url);try{let ae=yield t.a3(this.urls);if(this._loaded=!0,!ae)return;this.video=ae,this.video.loop=!0,this.video.addEventListener("playing",()=>{this.map.triggerRepaint()}),this.map&&this.video.play(),this._finishLoading()}catch(ae){this.fire(new t.j(ae))}})}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}seek(R){if(this.video){let ae=this.video.seekable;Rae.end(0)?this.fire(new t.j(new t.a2(`sources.${this.id}`,null,`Playback for this video can be set only between the ${ae.start(0)} and ${ae.end(0)}-second mark.`))):this.video.currentTime=R}}getVideo(){return this.video}onAdd(R){this.map||(this.map=R,this.load(),this.video&&(this.video.play(),this.setCoordinates(this.coordinates)))}prepare(){if(Object.keys(this.tiles).length===0||this.video.readyState<2)return;let R=this.map.painter.context,ae=R.gl;this.boundsBuffer||(this.boundsBuffer=R.createVertexBuffer(this._boundsArray,Ze.members)),this.boundsSegments||(this.boundsSegments=t.a0.simpleSegment(0,0,4,2)),this.texture?this.video.paused||(this.texture.bind(ae.LINEAR,ae.CLAMP_TO_EDGE),ae.texSubImage2D(ae.TEXTURE_2D,0,0,0,ae.RGBA,ae.UNSIGNED_BYTE,this.video)):(this.texture=new u(R,this.video,ae.RGBA),this.texture.bind(ae.LINEAR,ae.CLAMP_TO_EDGE));let we=!1;for(let Se in this.tiles){let De=this.tiles[Se];De.state!=="loaded"&&(De.state="loaded",De.texture=this.texture,we=!0)}we&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"video",urls:this.urls,coordinates:this.coordinates}}hasTransition(){return this.video&&!this.video.paused}}class et extends at{constructor(R,ae,we,Se){super(R,ae,we,Se),ae.coordinates?Array.isArray(ae.coordinates)&&ae.coordinates.length===4&&!ae.coordinates.some(De=>!Array.isArray(De)||De.length!==2||De.some(ft=>typeof ft!="number"))||this.fire(new t.j(new t.a2(`sources.${R}`,null,'"coordinates" property must be an array of 4 longitude/latitude array pairs'))):this.fire(new t.j(new t.a2(`sources.${R}`,null,'missing required property "coordinates"'))),ae.animate&&typeof ae.animate!="boolean"&&this.fire(new t.j(new t.a2(`sources.${R}`,null,'optional "animate" property must be a boolean value'))),ae.canvas?typeof ae.canvas=="string"||ae.canvas instanceof HTMLCanvasElement||this.fire(new t.j(new t.a2(`sources.${R}`,null,'"canvas" must be either a string representing the ID of the canvas element from which to read, or an HTMLCanvasElement instance'))):this.fire(new t.j(new t.a2(`sources.${R}`,null,'missing required property "canvas"'))),this.options=ae,this.animate=ae.animate===void 0||ae.animate}load(){return t._(this,void 0,void 0,function*(){this._loaded=!0,this.canvas||(this.canvas=this.options.canvas instanceof HTMLCanvasElement?this.options.canvas:document.getElementById(this.options.canvas)),this.width=this.canvas.width,this.height=this.canvas.height,this._hasInvalidDimensions()?this.fire(new t.j(new Error("Canvas dimensions cannot be less than or equal to zero."))):(this.play=function(){this._playing=!0,this.map.triggerRepaint()},this.pause=function(){this._playing&&(this.prepare(),this._playing=!1)},this._finishLoading())})}getCanvas(){return this.canvas}onAdd(R){this.map=R,this.load(),this.canvas&&this.animate&&this.play()}onRemove(){this.pause()}prepare(){let R=!1;if(this.canvas.width!==this.width&&(this.width=this.canvas.width,R=!0),this.canvas.height!==this.height&&(this.height=this.canvas.height,R=!0),this._hasInvalidDimensions()||Object.keys(this.tiles).length===0)return;let ae=this.map.painter.context,we=ae.gl;this.boundsBuffer||(this.boundsBuffer=ae.createVertexBuffer(this._boundsArray,Ze.members)),this.boundsSegments||(this.boundsSegments=t.a0.simpleSegment(0,0,4,2)),this.texture?(R||this._playing)&&this.texture.update(this.canvas,{premultiply:!0}):this.texture=new u(ae,this.canvas,we.RGBA,{premultiply:!0});let Se=!1;for(let De in this.tiles){let ft=this.tiles[De];ft.state!=="loaded"&&(ft.state="loaded",ft.texture=this.texture,Se=!0)}Se&&this.fire(new t.k("data",{dataType:"source",sourceDataType:"idle",sourceId:this.id}))}serialize(){return{type:"canvas",coordinates:this.coordinates}}hasTransition(){return this._playing}_hasInvalidDimensions(){for(let R of[this.canvas.width,this.canvas.height])if(isNaN(R)||R<=0)return!0;return!1}}let lt={},Me=Oe=>{switch(Oe){case"geojson":return Ie;case"image":return at;case"raster":return Ae;case"raster-dem":return Be;case"vector":return be;case"video":return it;case"canvas":return et}return lt[Oe]},ge="RTLPluginLoaded";class ce extends t.E{constructor(){super(...arguments),this.status="unavailable",this.url=null,this.dispatcher=Z()}_syncState(R){return this.status=R,this.dispatcher.broadcast("SRPS",{pluginStatus:R,pluginURL:this.url}).catch(ae=>{throw this.status="error",ae})}getRTLTextPluginStatus(){return this.status}clearRTLTextPlugin(){this.status="unavailable",this.url=null}setRTLTextPlugin(R){return t._(this,arguments,void 0,function*(ae,we=!1){if(this.url)throw new Error("setRTLTextPlugin cannot be called multiple times.");if(this.url=i.resolveURL(ae),!this.url)throw new Error(`requested url ${ae} is invalid`);if(this.status==="unavailable"){if(!we)return this._requestImport();this.status="deferred",this._syncState(this.status)}else if(this.status==="requested")return this._requestImport()})}_requestImport(){return t._(this,void 0,void 0,function*(){yield this._syncState("loading"),this.status="loaded",this.fire(new t.k(ge))})}lazyLoad(){this.status==="unavailable"?this.status="requested":this.status==="deferred"&&this._requestImport()}}let ze=null;function tt(){return ze||(ze=new ce),ze}class nt{constructor(R,ae){this.timeAdded=0,this.fadeEndTime=0,this.tileID=R,this.uid=t.a4(),this.uses=0,this.tileSize=ae,this.buckets={},this.expirationTime=null,this.queryPadding=0,this.hasSymbolBuckets=!1,this.hasRTLText=!1,this.dependencies={},this.rtt=[],this.rttCoords={},this.expiredRequestCount=0,this.state="loading"}registerFadeDuration(R){let ae=R+this.timeAdded;aeDe.getLayer(Yt)).filter(Boolean);if(Dt.length!==0){bt.layers=Dt,bt.stateDependentLayerIds&&(bt.stateDependentLayers=bt.stateDependentLayerIds.map(Yt=>Dt.filter(cr=>cr.id===Yt)[0]));for(let Yt of Dt)ft[Yt.id]=bt}}return ft}(R.buckets,ae.style),this.hasSymbolBuckets=!1;for(let Se in this.buckets){let De=this.buckets[Se];if(De instanceof t.a6){if(this.hasSymbolBuckets=!0,!we)break;De.justReloaded=!0}}if(this.hasRTLText=!1,this.hasSymbolBuckets)for(let Se in this.buckets){let De=this.buckets[Se];if(De instanceof t.a6&&De.hasRTLText){this.hasRTLText=!0,tt().lazyLoad();break}}this.queryPadding=0;for(let Se in this.buckets){let De=this.buckets[Se];this.queryPadding=Math.max(this.queryPadding,ae.style.getLayer(Se).queryRadius(De))}R.imageAtlas&&(this.imageAtlas=R.imageAtlas),R.glyphAtlasImage&&(this.glyphAtlasImage=R.glyphAtlasImage)}else this.collisionBoxArray=new t.a5}unloadVectorData(){for(let R in this.buckets)this.buckets[R].destroy();this.buckets={},this.imageAtlasTexture&&this.imageAtlasTexture.destroy(),this.imageAtlas&&(this.imageAtlas=null),this.glyphAtlasTexture&&this.glyphAtlasTexture.destroy(),this.latestFeatureIndex=null,this.state="unloaded"}getBucket(R){return this.buckets[R.id]}upload(R){for(let we in this.buckets){let Se=this.buckets[we];Se.uploadPending()&&Se.upload(R)}let ae=R.gl;this.imageAtlas&&!this.imageAtlas.uploaded&&(this.imageAtlasTexture=new u(R,this.imageAtlas.image,ae.RGBA),this.imageAtlas.uploaded=!0),this.glyphAtlasImage&&(this.glyphAtlasTexture=new u(R,this.glyphAtlasImage,ae.ALPHA),this.glyphAtlasImage=null)}prepare(R){this.imageAtlas&&this.imageAtlas.patchUpdatedImages(R,this.imageAtlasTexture)}queryRenderedFeatures(R,ae,we,Se,De,ft,bt,Dt,Yt,cr){return this.latestFeatureIndex&&this.latestFeatureIndex.rawTileData?this.latestFeatureIndex.query({queryGeometry:Se,cameraQueryGeometry:De,scale:ft,tileSize:this.tileSize,pixelPosMatrix:cr,transform:Dt,params:bt,queryPadding:this.queryPadding*Yt},R,ae,we):{}}querySourceFeatures(R,ae){let we=this.latestFeatureIndex;if(!we||!we.rawTileData)return;let Se=we.loadVTLayers(),De=ae&&ae.sourceLayer?ae.sourceLayer:"",ft=Se._geojsonTileLayer||Se[De];if(!ft)return;let bt=t.a7(ae&&ae.filter),{z:Dt,x:Yt,y:cr}=this.tileID.canonical,hr={z:Dt,x:Yt,y:cr};for(let jr=0;jrwe)Se=!1;else if(ae)if(this.expirationTime{this.remove(R,De)},we)),this.data[Se].push(De),this.order.push(Se),this.order.length>this.max){let ft=this._getAndRemoveByKey(this.order[0]);ft&&this.onRemove(ft)}return this}has(R){return R.wrapped().key in this.data}getAndRemove(R){return this.has(R)?this._getAndRemoveByKey(R.wrapped().key):null}_getAndRemoveByKey(R){let ae=this.data[R].shift();return ae.timeout&&clearTimeout(ae.timeout),this.data[R].length===0&&delete this.data[R],this.order.splice(this.order.indexOf(R),1),ae.value}getByKey(R){let ae=this.data[R];return ae?ae[0].value:null}get(R){return this.has(R)?this.data[R.wrapped().key][0].value:null}remove(R,ae){if(!this.has(R))return this;let we=R.wrapped().key,Se=ae===void 0?0:this.data[we].indexOf(ae),De=this.data[we][Se];return this.data[we].splice(Se,1),De.timeout&&clearTimeout(De.timeout),this.data[we].length===0&&delete this.data[we],this.onRemove(De.value),this.order.splice(this.order.indexOf(we),1),this}setMaxSize(R){for(this.max=R;this.order.length>this.max;){let ae=this._getAndRemoveByKey(this.order[0]);ae&&this.onRemove(ae)}return this}filter(R){let ae=[];for(let we in this.data)for(let Se of this.data[we])R(Se.value)||ae.push(Se);for(let we of ae)this.remove(we.value.tileID,we)}}class Ct{constructor(){this.state={},this.stateChanges={},this.deletedStates={}}updateState(R,ae,we){let Se=String(ae);if(this.stateChanges[R]=this.stateChanges[R]||{},this.stateChanges[R][Se]=this.stateChanges[R][Se]||{},t.e(this.stateChanges[R][Se],we),this.deletedStates[R]===null){this.deletedStates[R]={};for(let De in this.state[R])De!==Se&&(this.deletedStates[R][De]=null)}else if(this.deletedStates[R]&&this.deletedStates[R][Se]===null){this.deletedStates[R][Se]={};for(let De in this.state[R][Se])we[De]||(this.deletedStates[R][Se][De]=null)}else for(let De in we)this.deletedStates[R]&&this.deletedStates[R][Se]&&this.deletedStates[R][Se][De]===null&&delete this.deletedStates[R][Se][De]}removeFeatureState(R,ae,we){if(this.deletedStates[R]===null)return;let Se=String(ae);if(this.deletedStates[R]=this.deletedStates[R]||{},we&&ae!==void 0)this.deletedStates[R][Se]!==null&&(this.deletedStates[R][Se]=this.deletedStates[R][Se]||{},this.deletedStates[R][Se][we]=null);else if(ae!==void 0)if(this.stateChanges[R]&&this.stateChanges[R][Se])for(we in this.deletedStates[R][Se]={},this.stateChanges[R][Se])this.deletedStates[R][Se][we]=null;else this.deletedStates[R][Se]=null;else this.deletedStates[R]=null}getState(R,ae){let we=String(ae),Se=t.e({},(this.state[R]||{})[we],(this.stateChanges[R]||{})[we]);if(this.deletedStates[R]===null)return{};if(this.deletedStates[R]){let De=this.deletedStates[R][ae];if(De===null)return{};for(let ft in De)delete Se[ft]}return Se}initializeTileState(R,ae){R.setFeatureState(this.state,ae)}coalesceChanges(R,ae){let we={};for(let Se in this.stateChanges){this.state[Se]=this.state[Se]||{};let De={};for(let ft in this.stateChanges[Se])this.state[Se][ft]||(this.state[Se][ft]={}),t.e(this.state[Se][ft],this.stateChanges[Se][ft]),De[ft]=this.state[Se][ft];we[Se]=De}for(let Se in this.deletedStates){this.state[Se]=this.state[Se]||{};let De={};if(this.deletedStates[Se]===null)for(let ft in this.state[Se])De[ft]={},this.state[Se][ft]={};else for(let ft in this.deletedStates[Se]){if(this.deletedStates[Se][ft]===null)this.state[Se][ft]={};else for(let bt of Object.keys(this.deletedStates[Se][ft]))delete this.state[Se][ft][bt];De[ft]=this.state[Se][ft]}we[Se]=we[Se]||{},t.e(we[Se],De)}if(this.stateChanges={},this.deletedStates={},Object.keys(we).length!==0)for(let Se in R)R[Se].setFeatureState(we,ae)}}class St extends t.E{constructor(R,ae,we){super(),this.id=R,this.dispatcher=we,this.on("data",Se=>this._dataHandler(Se)),this.on("dataloading",()=>{this._sourceErrored=!1}),this.on("error",()=>{this._sourceErrored=this._source.loaded()}),this._source=((Se,De,ft,bt)=>{let Dt=new(Me(De.type))(Se,De,ft,bt);if(Dt.id!==Se)throw new Error(`Expected Source id to be ${Se} instead of ${Dt.id}`);return Dt})(R,ae,we,this),this._tiles={},this._cache=new Qe(0,Se=>this._unloadTile(Se)),this._timers={},this._cacheTimers={},this._maxTileCacheSize=null,this._maxTileCacheZoomLevels=null,this._loadedParentTiles={},this._coveredTiles={},this._state=new Ct,this._didEmitContent=!1,this._updated=!1}onAdd(R){this.map=R,this._maxTileCacheSize=R?R._maxTileCacheSize:null,this._maxTileCacheZoomLevels=R?R._maxTileCacheZoomLevels:null,this._source&&this._source.onAdd&&this._source.onAdd(R)}onRemove(R){this.clearTiles(),this._source&&this._source.onRemove&&this._source.onRemove(R)}loaded(){if(this._sourceErrored)return!0;if(!this._sourceLoaded||!this._source.loaded())return!1;if(!(this.used===void 0&&this.usedForTerrain===void 0||this.used||this.usedForTerrain))return!0;if(!this._updated)return!1;for(let R in this._tiles){let ae=this._tiles[R];if(ae.state!=="loaded"&&ae.state!=="errored")return!1}return!0}getSource(){return this._source}pause(){this._paused=!0}resume(){if(!this._paused)return;let R=this._shouldReloadOnResume;this._paused=!1,this._shouldReloadOnResume=!1,R&&this.reload(),this.transform&&this.update(this.transform,this.terrain)}_loadTile(R,ae,we){return t._(this,void 0,void 0,function*(){try{yield this._source.loadTile(R),this._tileLoaded(R,ae,we)}catch(Se){R.state="errored",Se.status!==404?this._source.fire(new t.j(Se,{tile:R})):this.update(this.transform,this.terrain)}})}_unloadTile(R){this._source.unloadTile&&this._source.unloadTile(R)}_abortTile(R){this._source.abortTile&&this._source.abortTile(R),this._source.fire(new t.k("dataabort",{tile:R,coord:R.tileID,dataType:"source"}))}serialize(){return this._source.serialize()}prepare(R){this._source.prepare&&this._source.prepare(),this._state.coalesceChanges(this._tiles,this.map?this.map.painter:null);for(let ae in this._tiles){let we=this._tiles[ae];we.upload(R),we.prepare(this.map.style.imageManager)}}getIds(){return Object.values(this._tiles).map(R=>R.tileID).sort(Ot).map(R=>R.key)}getRenderableIds(R){let ae=[];for(let we in this._tiles)this._isIdRenderable(we,R)&&ae.push(this._tiles[we]);return R?ae.sort((we,Se)=>{let De=we.tileID,ft=Se.tileID,bt=new t.P(De.canonical.x,De.canonical.y)._rotate(this.transform.angle),Dt=new t.P(ft.canonical.x,ft.canonical.y)._rotate(this.transform.angle);return De.overscaledZ-ft.overscaledZ||Dt.y-bt.y||Dt.x-bt.x}).map(we=>we.tileID.key):ae.map(we=>we.tileID).sort(Ot).map(we=>we.key)}hasRenderableParent(R){let ae=this.findLoadedParent(R,0);return!!ae&&this._isIdRenderable(ae.tileID.key)}_isIdRenderable(R,ae){return this._tiles[R]&&this._tiles[R].hasData()&&!this._coveredTiles[R]&&(ae||!this._tiles[R].holdingForFade())}reload(){if(this._paused)this._shouldReloadOnResume=!0;else{this._cache.reset();for(let R in this._tiles)this._tiles[R].state!=="errored"&&this._reloadTile(R,"reloading")}}_reloadTile(R,ae){return t._(this,void 0,void 0,function*(){let we=this._tiles[R];we&&(we.state!=="loading"&&(we.state=ae),yield this._loadTile(we,R,ae))})}_tileLoaded(R,ae,we){R.timeAdded=i.now(),we==="expired"&&(R.refreshedUponExpiration=!0),this._setTileReloadTimer(ae,R),this.getSource().type==="raster-dem"&&R.dem&&this._backfillDEM(R),this._state.initializeTileState(R,this.map?this.map.painter:null),R.aborted||this._source.fire(new t.k("data",{dataType:"source",tile:R,coord:R.tileID}))}_backfillDEM(R){let ae=this.getRenderableIds();for(let Se=0;Se1||(Math.abs(ft)>1&&(Math.abs(ft+Dt)===1?ft+=Dt:Math.abs(ft-Dt)===1&&(ft-=Dt)),De.dem&&Se.dem&&(Se.dem.backfillBorder(De.dem,ft,bt),Se.neighboringTiles&&Se.neighboringTiles[Yt]&&(Se.neighboringTiles[Yt].backfilled=!0)))}}getTile(R){return this.getTileByID(R.key)}getTileByID(R){return this._tiles[R]}_retainLoadedChildren(R,ae,we,Se){for(let De in this._tiles){let ft=this._tiles[De];if(Se[De]||!ft.hasData()||ft.tileID.overscaledZ<=ae||ft.tileID.overscaledZ>we)continue;let bt=ft.tileID;for(;ft&&ft.tileID.overscaledZ>ae+1;){let Yt=ft.tileID.scaledTo(ft.tileID.overscaledZ-1);ft=this._tiles[Yt.key],ft&&ft.hasData()&&(bt=Yt)}let Dt=bt;for(;Dt.overscaledZ>ae;)if(Dt=Dt.scaledTo(Dt.overscaledZ-1),R[Dt.key]){Se[bt.key]=bt;break}}}findLoadedParent(R,ae){if(R.key in this._loadedParentTiles){let we=this._loadedParentTiles[R.key];return we&&we.tileID.overscaledZ>=ae?we:null}for(let we=R.overscaledZ-1;we>=ae;we--){let Se=R.scaledTo(we),De=this._getLoadedTile(Se);if(De)return De}}findLoadedSibling(R){return this._getLoadedTile(R)}_getLoadedTile(R){let ae=this._tiles[R.key];return ae&&ae.hasData()?ae:this._cache.getByKey(R.wrapped().key)}updateCacheSize(R){let ae=Math.ceil(R.width/this._source.tileSize)+1,we=Math.ceil(R.height/this._source.tileSize)+1,Se=Math.floor(ae*we*(this._maxTileCacheZoomLevels===null?t.a.MAX_TILE_CACHE_ZOOM_LEVELS:this._maxTileCacheZoomLevels)),De=typeof this._maxTileCacheSize=="number"?Math.min(this._maxTileCacheSize,Se):Se;this._cache.setMaxSize(De)}handleWrapJump(R){let ae=Math.round((R-(this._prevLng===void 0?R:this._prevLng))/360);if(this._prevLng=R,ae){let we={};for(let Se in this._tiles){let De=this._tiles[Se];De.tileID=De.tileID.unwrapTo(De.tileID.wrap+ae),we[De.tileID.key]=De}this._tiles=we;for(let Se in this._timers)clearTimeout(this._timers[Se]),delete this._timers[Se];for(let Se in this._tiles)this._setTileReloadTimer(Se,this._tiles[Se])}}_updateCoveredAndRetainedTiles(R,ae,we,Se,De,ft){let bt={},Dt={},Yt=Object.keys(R),cr=i.now();for(let hr of Yt){let jr=R[hr],ea=this._tiles[hr];if(!ea||ea.fadeEndTime!==0&&ea.fadeEndTime<=cr)continue;let qe=this.findLoadedParent(jr,ae),Je=this.findLoadedSibling(jr),ot=qe||Je||null;ot&&(this._addTile(ot.tileID),bt[ot.tileID.key]=ot.tileID),Dt[hr]=jr}this._retainLoadedChildren(Dt,Se,we,R);for(let hr in bt)R[hr]||(this._coveredTiles[hr]=!0,R[hr]=bt[hr]);if(ft){let hr={},jr={};for(let ea of De)this._tiles[ea.key].hasData()?hr[ea.key]=ea:jr[ea.key]=ea;for(let ea in jr){let qe=jr[ea].children(this._source.maxzoom);this._tiles[qe[0].key]&&this._tiles[qe[1].key]&&this._tiles[qe[2].key]&&this._tiles[qe[3].key]&&(hr[qe[0].key]=R[qe[0].key]=qe[0],hr[qe[1].key]=R[qe[1].key]=qe[1],hr[qe[2].key]=R[qe[2].key]=qe[2],hr[qe[3].key]=R[qe[3].key]=qe[3],delete jr[ea])}for(let ea in jr){let qe=jr[ea],Je=this.findLoadedParent(qe,this._source.minzoom),ot=this.findLoadedSibling(qe),ht=Je||ot||null;if(ht){hr[ht.tileID.key]=R[ht.tileID.key]=ht.tileID;for(let At in hr)hr[At].isChildOf(ht.tileID)&&delete hr[At]}}for(let ea in this._tiles)hr[ea]||(this._coveredTiles[ea]=!0)}}update(R,ae){if(!this._sourceLoaded||this._paused)return;let we;this.transform=R,this.terrain=ae,this.updateCacheSize(R),this.handleWrapJump(this.transform.center.lng),this._coveredTiles={},this.used||this.usedForTerrain?this._source.tileID?we=R.getVisibleUnwrappedCoordinates(this._source.tileID).map(cr=>new t.S(cr.canonical.z,cr.wrap,cr.canonical.z,cr.canonical.x,cr.canonical.y)):(we=R.coveringTiles({tileSize:this.usedForTerrain?this.tileSize:this._source.tileSize,minzoom:this._source.minzoom,maxzoom:this._source.maxzoom,roundZoom:!this.usedForTerrain&&this._source.roundZoom,reparseOverscaled:this._source.reparseOverscaled,terrain:ae}),this._source.hasTile&&(we=we.filter(cr=>this._source.hasTile(cr)))):we=[];let Se=R.coveringZoomLevel(this._source),De=Math.max(Se-St.maxOverzooming,this._source.minzoom),ft=Math.max(Se+St.maxUnderzooming,this._source.minzoom);if(this.usedForTerrain){let cr={};for(let hr of we)if(hr.canonical.z>this._source.minzoom){let jr=hr.scaledTo(hr.canonical.z-1);cr[jr.key]=jr;let ea=hr.scaledTo(Math.max(this._source.minzoom,Math.min(hr.canonical.z,5)));cr[ea.key]=ea}we=we.concat(Object.values(cr))}let bt=we.length===0&&!this._updated&&this._didEmitContent;this._updated=!0,bt&&this.fire(new t.k("data",{sourceDataType:"idle",dataType:"source",sourceId:this.id}));let Dt=this._updateRetainedTiles(we,Se);jt(this._source.type)&&this._updateCoveredAndRetainedTiles(Dt,De,ft,Se,we,ae);for(let cr in Dt)this._tiles[cr].clearFadeHold();let Yt=t.ab(this._tiles,Dt);for(let cr of Yt){let hr=this._tiles[cr];hr.hasSymbolBuckets&&!hr.holdingForFade()?hr.setHoldDuration(this.map._fadeDuration):hr.hasSymbolBuckets&&!hr.symbolFadeFinished()||this._removeTile(cr)}this._updateLoadedParentTileCache(),this._updateLoadedSiblingTileCache()}releaseSymbolFadeTiles(){for(let R in this._tiles)this._tiles[R].holdingForFade()&&this._removeTile(R)}_updateRetainedTiles(R,ae){var we;let Se={},De={},ft=Math.max(ae-St.maxOverzooming,this._source.minzoom),bt=Math.max(ae+St.maxUnderzooming,this._source.minzoom),Dt={};for(let Yt of R){let cr=this._addTile(Yt);Se[Yt.key]=Yt,cr.hasData()||aethis._source.maxzoom){let jr=Yt.children(this._source.maxzoom)[0],ea=this.getTile(jr);if(ea&&ea.hasData()){Se[jr.key]=jr;continue}}else{let jr=Yt.children(this._source.maxzoom);if(Se[jr[0].key]&&Se[jr[1].key]&&Se[jr[2].key]&&Se[jr[3].key])continue}let hr=cr.wasRequested();for(let jr=Yt.overscaledZ-1;jr>=ft;--jr){let ea=Yt.scaledTo(jr);if(De[ea.key])break;if(De[ea.key]=!0,cr=this.getTile(ea),!cr&&hr&&(cr=this._addTile(ea)),cr){let qe=cr.hasData();if((qe||!(!((we=this.map)===null||we===void 0)&&we.cancelPendingTileRequestsWhileZooming)||hr)&&(Se[ea.key]=ea),hr=cr.wasRequested(),qe)break}}}return Se}_updateLoadedParentTileCache(){this._loadedParentTiles={};for(let R in this._tiles){let ae=[],we,Se=this._tiles[R].tileID;for(;Se.overscaledZ>0;){if(Se.key in this._loadedParentTiles){we=this._loadedParentTiles[Se.key];break}ae.push(Se.key);let De=Se.scaledTo(Se.overscaledZ-1);if(we=this._getLoadedTile(De),we)break;Se=De}for(let De of ae)this._loadedParentTiles[De]=we}}_updateLoadedSiblingTileCache(){this._loadedSiblingTiles={};for(let R in this._tiles){let ae=this._tiles[R].tileID,we=this._getLoadedTile(ae);this._loadedSiblingTiles[ae.key]=we}}_addTile(R){let ae=this._tiles[R.key];if(ae)return ae;ae=this._cache.getAndRemove(R),ae&&(this._setTileReloadTimer(R.key,ae),ae.tileID=R,this._state.initializeTileState(ae,this.map?this.map.painter:null),this._cacheTimers[R.key]&&(clearTimeout(this._cacheTimers[R.key]),delete this._cacheTimers[R.key],this._setTileReloadTimer(R.key,ae)));let we=ae;return ae||(ae=new nt(R,this._source.tileSize*R.overscaleFactor()),this._loadTile(ae,R.key,ae.state)),ae.uses++,this._tiles[R.key]=ae,we||this._source.fire(new t.k("dataloading",{tile:ae,coord:ae.tileID,dataType:"source"})),ae}_setTileReloadTimer(R,ae){R in this._timers&&(clearTimeout(this._timers[R]),delete this._timers[R]);let we=ae.getExpiryTimeout();we&&(this._timers[R]=setTimeout(()=>{this._reloadTile(R,"expired"),delete this._timers[R]},we))}_removeTile(R){let ae=this._tiles[R];ae&&(ae.uses--,delete this._tiles[R],this._timers[R]&&(clearTimeout(this._timers[R]),delete this._timers[R]),ae.uses>0||(ae.hasData()&&ae.state!=="reloading"?this._cache.add(ae.tileID,ae,ae.getExpiryTimeout()):(ae.aborted=!0,this._abortTile(ae),this._unloadTile(ae))))}_dataHandler(R){let ae=R.sourceDataType;R.dataType==="source"&&ae==="metadata"&&(this._sourceLoaded=!0),this._sourceLoaded&&!this._paused&&R.dataType==="source"&&ae==="content"&&(this.reload(),this.transform&&this.update(this.transform,this.terrain),this._didEmitContent=!0)}clearTiles(){this._shouldReloadOnResume=!1,this._paused=!1;for(let R in this._tiles)this._removeTile(R);this._cache.reset()}tilesIn(R,ae,we){let Se=[],De=this.transform;if(!De)return Se;let ft=we?De.getCameraQueryGeometry(R):R,bt=R.map(qe=>De.pointCoordinate(qe,this.terrain)),Dt=ft.map(qe=>De.pointCoordinate(qe,this.terrain)),Yt=this.getIds(),cr=1/0,hr=1/0,jr=-1/0,ea=-1/0;for(let qe of Dt)cr=Math.min(cr,qe.x),hr=Math.min(hr,qe.y),jr=Math.max(jr,qe.x),ea=Math.max(ea,qe.y);for(let qe=0;qe=0&&_t[1].y+At>=0){let Pt=bt.map(nr=>ot.getTilePoint(nr)),er=Dt.map(nr=>ot.getTilePoint(nr));Se.push({tile:Je,tileID:ot,queryGeometry:Pt,cameraQueryGeometry:er,scale:ht})}}return Se}getVisibleCoordinates(R){let ae=this.getRenderableIds(R).map(we=>this._tiles[we].tileID);for(let we of ae)we.posMatrix=this.transform.calculatePosMatrix(we.toUnwrapped());return ae}hasTransition(){if(this._source.hasTransition())return!0;if(jt(this._source.type)){let R=i.now();for(let ae in this._tiles)if(this._tiles[ae].fadeEndTime>=R)return!0}return!1}setFeatureState(R,ae,we){this._state.updateState(R=R||"_geojsonTileLayer",ae,we)}removeFeatureState(R,ae,we){this._state.removeFeatureState(R=R||"_geojsonTileLayer",ae,we)}getFeatureState(R,ae){return this._state.getState(R=R||"_geojsonTileLayer",ae)}setDependencies(R,ae,we){let Se=this._tiles[R];Se&&Se.setDependencies(ae,we)}reloadTilesForDependencies(R,ae){for(let we in this._tiles)this._tiles[we].hasDependency(R,ae)&&this._reloadTile(we,"reloading");this._cache.filter(we=>!we.hasDependency(R,ae))}}function Ot(Oe,R){let ae=Math.abs(2*Oe.wrap)-+(Oe.wrap<0),we=Math.abs(2*R.wrap)-+(R.wrap<0);return Oe.overscaledZ-R.overscaledZ||we-ae||R.canonical.y-Oe.canonical.y||R.canonical.x-Oe.canonical.x}function jt(Oe){return Oe==="raster"||Oe==="image"||Oe==="video"}St.maxOverzooming=10,St.maxUnderzooming=3;class ur{constructor(R,ae){this.reset(R,ae)}reset(R,ae){this.points=R||[],this._distances=[0];for(let we=1;we0?(Se-ft)/bt:0;return this.points[De].mult(1-Dt).add(this.points[ae].mult(Dt))}}function ar(Oe,R){let ae=!0;return Oe==="always"||Oe!=="never"&&R!=="never"||(ae=!1),ae}class Cr{constructor(R,ae,we){let Se=this.boxCells=[],De=this.circleCells=[];this.xCellCount=Math.ceil(R/we),this.yCellCount=Math.ceil(ae/we);for(let ft=0;ftthis.width||Se<0||ae>this.height)return[];let Dt=[];if(R<=0&&ae<=0&&this.width<=we&&this.height<=Se){if(De)return[{key:null,x1:R,y1:ae,x2:we,y2:Se}];for(let Yt=0;Yt0}hitTestCircle(R,ae,we,Se,De){let ft=R-we,bt=R+we,Dt=ae-we,Yt=ae+we;if(bt<0||ft>this.width||Yt<0||Dt>this.height)return!1;let cr=[];return this._forEachCell(ft,Dt,bt,Yt,this._queryCellCircle,cr,{hitTest:!0,overlapMode:Se,circle:{x:R,y:ae,radius:we},seenUids:{box:{},circle:{}}},De),cr.length>0}_queryCell(R,ae,we,Se,De,ft,bt,Dt){let{seenUids:Yt,hitTest:cr,overlapMode:hr}=bt,jr=this.boxCells[De];if(jr!==null){let qe=this.bboxes;for(let Je of jr)if(!Yt.box[Je]){Yt.box[Je]=!0;let ot=4*Je,ht=this.boxKeys[Je];if(R<=qe[ot+2]&&ae<=qe[ot+3]&&we>=qe[ot+0]&&Se>=qe[ot+1]&&(!Dt||Dt(ht))&&(!cr||!ar(hr,ht.overlapMode))&&(ft.push({key:ht,x1:qe[ot],y1:qe[ot+1],x2:qe[ot+2],y2:qe[ot+3]}),cr))return!0}}let ea=this.circleCells[De];if(ea!==null){let qe=this.circles;for(let Je of ea)if(!Yt.circle[Je]){Yt.circle[Je]=!0;let ot=3*Je,ht=this.circleKeys[Je];if(this._circleAndRectCollide(qe[ot],qe[ot+1],qe[ot+2],R,ae,we,Se)&&(!Dt||Dt(ht))&&(!cr||!ar(hr,ht.overlapMode))){let At=qe[ot],_t=qe[ot+1],Pt=qe[ot+2];if(ft.push({key:ht,x1:At-Pt,y1:_t-Pt,x2:At+Pt,y2:_t+Pt}),cr)return!0}}}return!1}_queryCellCircle(R,ae,we,Se,De,ft,bt,Dt){let{circle:Yt,seenUids:cr,overlapMode:hr}=bt,jr=this.boxCells[De];if(jr!==null){let qe=this.bboxes;for(let Je of jr)if(!cr.box[Je]){cr.box[Je]=!0;let ot=4*Je,ht=this.boxKeys[Je];if(this._circleAndRectCollide(Yt.x,Yt.y,Yt.radius,qe[ot+0],qe[ot+1],qe[ot+2],qe[ot+3])&&(!Dt||Dt(ht))&&!ar(hr,ht.overlapMode))return ft.push(!0),!0}}let ea=this.circleCells[De];if(ea!==null){let qe=this.circles;for(let Je of ea)if(!cr.circle[Je]){cr.circle[Je]=!0;let ot=3*Je,ht=this.circleKeys[Je];if(this._circlesCollide(qe[ot],qe[ot+1],qe[ot+2],Yt.x,Yt.y,Yt.radius)&&(!Dt||Dt(ht))&&!ar(hr,ht.overlapMode))return ft.push(!0),!0}}}_forEachCell(R,ae,we,Se,De,ft,bt,Dt){let Yt=this._convertToXCellCoord(R),cr=this._convertToYCellCoord(ae),hr=this._convertToXCellCoord(we),jr=this._convertToYCellCoord(Se);for(let ea=Yt;ea<=hr;ea++)for(let qe=cr;qe<=jr;qe++)if(De.call(this,R,ae,we,Se,this.xCellCount*qe+ea,ft,bt,Dt))return}_convertToXCellCoord(R){return Math.max(0,Math.min(this.xCellCount-1,Math.floor(R*this.xScale)))}_convertToYCellCoord(R){return Math.max(0,Math.min(this.yCellCount-1,Math.floor(R*this.yScale)))}_circlesCollide(R,ae,we,Se,De,ft){let bt=Se-R,Dt=De-ae,Yt=we+ft;return Yt*Yt>bt*bt+Dt*Dt}_circleAndRectCollide(R,ae,we,Se,De,ft,bt){let Dt=(ft-Se)/2,Yt=Math.abs(R-(Se+Dt));if(Yt>Dt+we)return!1;let cr=(bt-De)/2,hr=Math.abs(ae-(De+cr));if(hr>cr+we)return!1;if(Yt<=Dt||hr<=cr)return!0;let jr=Yt-Dt,ea=hr-cr;return jr*jr+ea*ea<=we*we}}function vr(Oe,R,ae,we,Se){let De=t.H();return R?(t.K(De,De,[1/Se,1/Se,1]),ae||t.ad(De,De,we.angle)):t.L(De,we.labelPlaneMatrix,Oe),De}function _r(Oe,R,ae,we,Se){if(R){let De=t.ae(Oe);return t.K(De,De,[Se,Se,1]),ae||t.ad(De,De,-we.angle),De}return we.glCoordMatrix}function yt(Oe,R,ae,we){let Se;we?(Se=[Oe,R,we(Oe,R),1],t.af(Se,Se,ae)):(Se=[Oe,R,0,1],Kt(Se,Se,ae));let De=Se[3];return{point:new t.P(Se[0]/De,Se[1]/De),signedDistanceFromCamera:De,isOccluded:!1}}function Fe(Oe,R){return .5+Oe/R*.5}function Ke(Oe,R){return Oe.x>=-R[0]&&Oe.x<=R[0]&&Oe.y>=-R[1]&&Oe.y<=R[1]}function Ne(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,ea,qe){let Je=we?Oe.textSizeData:Oe.iconSizeData,ot=t.ag(Je,ae.transform.zoom),ht=[256/ae.width*2+1,256/ae.height*2+1],At=we?Oe.text.dynamicLayoutVertexArray:Oe.icon.dynamicLayoutVertexArray;At.clear();let _t=Oe.lineVertexArray,Pt=we?Oe.text.placedSymbolArray:Oe.icon.placedSymbolArray,er=ae.transform.width/ae.transform.height,nr=!1;for(let pr=0;prMath.abs(ae.x-R.x)*we?{useVertical:!0}:(Oe===t.ah.vertical?R.yae.x)?{needsFlipping:!0}:null}function ke(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr){let hr=ae/24,jr=R.lineOffsetX*hr,ea=R.lineOffsetY*hr,qe;if(R.numGlyphs>1){let Je=R.glyphStartIndex+R.numGlyphs,ot=R.lineStartIndex,ht=R.lineStartIndex+R.lineLength,At=Ee(hr,bt,jr,ea,we,R,cr,Oe);if(!At)return{notEnoughRoom:!0};let _t=yt(At.first.point.x,At.first.point.y,ft,Oe.getElevation).point,Pt=yt(At.last.point.x,At.last.point.y,ft,Oe.getElevation).point;if(Se&&!we){let er=Ve(R.writingMode,_t,Pt,Yt);if(er)return er}qe=[At.first];for(let er=R.glyphStartIndex+1;er0?_t.point:function(nr,pr,Sr,Wr,ha,ga){return Te(nr,pr,Sr,1,ha,ga)}(Oe.tileAnchorPoint,At,ot,0,De,Oe),er=Ve(R.writingMode,ot,Pt,Yt);if(er)return er}let Je=It(hr*bt.getoffsetX(R.glyphStartIndex),jr,ea,we,R.segment,R.lineStartIndex,R.lineStartIndex+R.lineLength,Oe,cr);if(!Je||Oe.projectionCache.anyProjectionOccluded)return{notEnoughRoom:!0};qe=[Je]}for(let Je of qe)t.aj(Dt,Je.point,Je.angle);return{}}function Te(Oe,R,ae,we,Se,De){let ft=Oe.add(Oe.sub(R)._unit()),bt=Se!==void 0?yt(ft.x,ft.y,Se,De.getElevation).point:rt(ft.x,ft.y,De).point,Dt=ae.sub(bt);return ae.add(Dt._mult(we/Dt.mag()))}function Le(Oe,R,ae){let we=R.projectionCache;if(we.projections[Oe])return we.projections[Oe];let Se=new t.P(R.lineVertexArray.getx(Oe),R.lineVertexArray.gety(Oe)),De=rt(Se.x,Se.y,R);if(De.signedDistanceFromCamera>0)return we.projections[Oe]=De.point,we.anyProjectionOccluded=we.anyProjectionOccluded||De.isOccluded,De.point;let ft=Oe-ae.direction;return function(bt,Dt,Yt,cr,hr){return Te(bt,Dt,Yt,cr,void 0,hr)}(ae.distanceFromAnchor===0?R.tileAnchorPoint:new t.P(R.lineVertexArray.getx(ft),R.lineVertexArray.gety(ft)),Se,ae.previousVertex,ae.absOffsetX-ae.distanceFromAnchor+1,R)}function rt(Oe,R,ae){let we=Oe+ae.translation[0],Se=R+ae.translation[1],De;return!ae.pitchWithMap&&ae.projection.useSpecialProjectionForSymbols?(De=ae.projection.projectTileCoordinates(we,Se,ae.unwrappedTileID,ae.getElevation),De.point.x=(.5*De.point.x+.5)*ae.width,De.point.y=(.5*-De.point.y+.5)*ae.height):(De=yt(we,Se,ae.labelPlaneMatrix,ae.getElevation),De.isOccluded=!1),De}function dt(Oe,R,ae){return Oe._unit()._perp()._mult(R*ae)}function xt(Oe,R,ae,we,Se,De,ft,bt,Dt){if(bt.projectionCache.offsets[Oe])return bt.projectionCache.offsets[Oe];let Yt=ae.add(R);if(Oe+Dt.direction=Se)return bt.projectionCache.offsets[Oe]=Yt,Yt;let cr=Le(Oe+Dt.direction,bt,Dt),hr=dt(cr.sub(ae),ft,Dt.direction),jr=ae.add(hr),ea=cr.add(hr);return bt.projectionCache.offsets[Oe]=t.ak(De,Yt,jr,ea)||Yt,bt.projectionCache.offsets[Oe]}function It(Oe,R,ae,we,Se,De,ft,bt,Dt){let Yt=we?Oe-R:Oe+R,cr=Yt>0?1:-1,hr=0;we&&(cr*=-1,hr=Math.PI),cr<0&&(hr+=Math.PI);let jr,ea=cr>0?De+Se:De+Se+1;bt.projectionCache.cachedAnchorPoint?jr=bt.projectionCache.cachedAnchorPoint:(jr=rt(bt.tileAnchorPoint.x,bt.tileAnchorPoint.y,bt).point,bt.projectionCache.cachedAnchorPoint=jr);let qe,Je,ot=jr,ht=jr,At=0,_t=0,Pt=Math.abs(Yt),er=[],nr;for(;At+_t<=Pt;){if(ea+=cr,ea=ft)return null;At+=_t,ht=ot,Je=qe;let Wr={absOffsetX:Pt,direction:cr,distanceFromAnchor:At,previousVertex:ht};if(ot=Le(ea,bt,Wr),ae===0)er.push(ht),nr=ot.sub(ht);else{let ha,ga=ot.sub(ht);ha=ga.mag()===0?dt(Le(ea+cr,bt,Wr).sub(ot),ae,cr):dt(ga,ae,cr),Je||(Je=ht.add(ha)),qe=xt(ea,ha,ot,De,ft,Je,ae,bt,Wr),er.push(Je),nr=qe.sub(Je)}_t=nr.mag()}let pr=nr._mult((Pt-At)/_t)._add(Je||ht),Sr=hr+Math.atan2(ot.y-ht.y,ot.x-ht.x);return er.push(pr),{point:pr,angle:Dt?Sr:0,path:er}}let Bt=new Float32Array([-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0,-1/0,-1/0,0]);function Gt(Oe,R){for(let ae=0;ae=1;Sn--)Ci.push(di.path[Sn]);for(let Sn=1;Snho.signedDistanceFromCamera<=0)?[]:Sn.map(ho=>ho.point)}let Bn=[];if(Ci.length>0){let Sn=Ci[0].clone(),ho=Ci[0].clone();for(let ts=1;ts=ga.x&&ho.x<=Pa.x&&Sn.y>=ga.y&&ho.y<=Pa.y?[Ci]:ho.xPa.x||ho.yPa.y?[]:t.al([Ci],ga.x,ga.y,Pa.x,Pa.y)}for(let Sn of Bn){Ja.reset(Sn,.25*ha);let ho=0;ho=Ja.length<=.5*ha?1:Math.ceil(Ja.paddedLength/$i)+1;for(let ts=0;tsyt(Se.x,Se.y,we,ae.getElevation))}queryRenderedSymbols(R){if(R.length===0||this.grid.keysLength()===0&&this.ignoredGrid.keysLength()===0)return{};let ae=[],we=1/0,Se=1/0,De=-1/0,ft=-1/0;for(let cr of R){let hr=new t.P(cr.x+sr,cr.y+sr);we=Math.min(we,hr.x),Se=Math.min(Se,hr.y),De=Math.max(De,hr.x),ft=Math.max(ft,hr.y),ae.push(hr)}let bt=this.grid.query(we,Se,De,ft).concat(this.ignoredGrid.query(we,Se,De,ft)),Dt={},Yt={};for(let cr of bt){let hr=cr.key;if(Dt[hr.bucketInstanceId]===void 0&&(Dt[hr.bucketInstanceId]={}),Dt[hr.bucketInstanceId][hr.featureIndex])continue;let jr=[new t.P(cr.x1,cr.y1),new t.P(cr.x2,cr.y1),new t.P(cr.x2,cr.y2),new t.P(cr.x1,cr.y2)];t.am(ae,jr)&&(Dt[hr.bucketInstanceId][hr.featureIndex]=!0,Yt[hr.bucketInstanceId]===void 0&&(Yt[hr.bucketInstanceId]=[]),Yt[hr.bucketInstanceId].push(hr.featureIndex))}return Yt}insertCollisionBox(R,ae,we,Se,De,ft){(we?this.ignoredGrid:this.grid).insert({bucketInstanceId:Se,featureIndex:De,collisionGroupID:ft,overlapMode:ae},R[0],R[1],R[2],R[3])}insertCollisionCircles(R,ae,we,Se,De,ft){let bt=we?this.ignoredGrid:this.grid,Dt={bucketInstanceId:Se,featureIndex:De,collisionGroupID:ft,overlapMode:ae};for(let Yt=0;Yt=this.screenRightBoundary||Sethis.screenBottomBoundary}isInsideGrid(R,ae,we,Se){return we>=0&&R=0&&aethis.projectAndGetPerspectiveRatio(we,ha.x,ha.y,Se,Yt));Sr=Wr.some(ha=>!ha.isOccluded),pr=Wr.map(ha=>ha.point)}else Sr=!0;return{box:t.ao(pr),allPointsOccluded:!Sr}}}function Aa(Oe,R,ae){return R*(t.X/(Oe.tileSize*Math.pow(2,ae-Oe.tileID.overscaledZ)))}class La{constructor(R,ae,we,Se){this.opacity=R?Math.max(0,Math.min(1,R.opacity+(R.placed?ae:-ae))):Se&&we?1:0,this.placed=we}isHidden(){return this.opacity===0&&!this.placed}}class ka{constructor(R,ae,we,Se,De){this.text=new La(R?R.text:null,ae,we,De),this.icon=new La(R?R.icon:null,ae,Se,De)}isHidden(){return this.text.isHidden()&&this.icon.isHidden()}}class Ga{constructor(R,ae,we){this.text=R,this.icon=ae,this.skipFade=we}}class Ma{constructor(){this.invProjMatrix=t.H(),this.viewportMatrix=t.H(),this.circles=[]}}class Ua{constructor(R,ae,we,Se,De){this.bucketInstanceId=R,this.featureIndex=ae,this.sourceLayerIndex=we,this.bucketIndex=Se,this.tileID=De}}class ni{constructor(R){this.crossSourceCollisions=R,this.maxGroupID=0,this.collisionGroups={}}get(R){if(this.crossSourceCollisions)return{ID:0,predicate:null};if(!this.collisionGroups[R]){let ae=++this.maxGroupID;this.collisionGroups[R]={ID:ae,predicate:we=>we.collisionGroupID===ae}}return this.collisionGroups[R]}}function Wt(Oe,R,ae,we,Se){let{horizontalAlign:De,verticalAlign:ft}=t.au(Oe);return new t.P(-(De-.5)*R+we[0]*Se,-(ft-.5)*ae+we[1]*Se)}class zt{constructor(R,ae,we,Se,De,ft){this.transform=R.clone(),this.terrain=we,this.collisionIndex=new sa(this.transform,ae),this.placements={},this.opacities={},this.variableOffsets={},this.stale=!1,this.commitTime=0,this.fadeDuration=Se,this.retainedQueryData={},this.collisionGroups=new ni(De),this.collisionCircleArrays={},this.collisionBoxArrays=new Map,this.prevPlacement=ft,ft&&(ft.prevPlacement=void 0),this.placedOrientations={}}_getTerrainElevationFunc(R){let ae=this.terrain;return ae?(we,Se)=>ae.getElevation(R,we,Se):null}getBucketParts(R,ae,we,Se){let De=we.getBucket(ae),ft=we.latestFeatureIndex;if(!De||!ft||ae.id!==De.layerIds[0])return;let bt=we.collisionBoxArray,Dt=De.layers[0].layout,Yt=De.layers[0].paint,cr=Math.pow(2,this.transform.zoom-we.tileID.overscaledZ),hr=we.tileSize/t.X,jr=we.tileID.toUnwrapped(),ea=this.transform.calculatePosMatrix(jr),qe=Dt.get("text-pitch-alignment")==="map",Je=Dt.get("text-rotation-alignment")==="map",ot=Aa(we,1,this.transform.zoom),ht=this.collisionIndex.mapProjection.translatePosition(this.transform,we,Yt.get("text-translate"),Yt.get("text-translate-anchor")),At=this.collisionIndex.mapProjection.translatePosition(this.transform,we,Yt.get("icon-translate"),Yt.get("icon-translate-anchor")),_t=vr(ea,qe,Je,this.transform,ot),Pt=null;if(qe){let nr=_r(ea,qe,Je,this.transform,ot);Pt=t.L([],this.transform.labelPlaneMatrix,nr)}this.retainedQueryData[De.bucketInstanceId]=new Ua(De.bucketInstanceId,ft,De.sourceLayerIndex,De.index,we.tileID);let er={bucket:De,layout:Dt,translationText:ht,translationIcon:At,posMatrix:ea,unwrappedTileID:jr,textLabelPlaneMatrix:_t,labelToScreenMatrix:Pt,scale:cr,textPixelRatio:hr,holdingForFade:we.holdingForFade(),collisionBoxArray:bt,partiallyEvaluatedTextSize:t.ag(De.textSizeData,this.transform.zoom),collisionGroup:this.collisionGroups.get(De.sourceID)};if(Se)for(let nr of De.sortKeyRanges){let{sortKey:pr,symbolInstanceStart:Sr,symbolInstanceEnd:Wr}=nr;R.push({sortKey:pr,symbolInstanceStart:Sr,symbolInstanceEnd:Wr,parameters:er})}else R.push({symbolInstanceStart:0,symbolInstanceEnd:De.symbolInstances.length,parameters:er})}attemptAnchorPlacement(R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,ea,qe,Je,ot,ht,At,_t){let Pt=t.aq[R.textAnchor],er=[R.textOffset0,R.textOffset1],nr=Wt(Pt,we,Se,er,De),pr=this.collisionIndex.placeCollisionBox(ae,jr,Dt,Yt,cr,bt,ft,ot,hr.predicate,_t,nr);if((!At||this.collisionIndex.placeCollisionBox(At,jr,Dt,Yt,cr,bt,ft,ht,hr.predicate,_t,nr).placeable)&&pr.placeable){let Sr;if(this.prevPlacement&&this.prevPlacement.variableOffsets[ea.crossTileID]&&this.prevPlacement.placements[ea.crossTileID]&&this.prevPlacement.placements[ea.crossTileID].text&&(Sr=this.prevPlacement.variableOffsets[ea.crossTileID].anchor),ea.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");return this.variableOffsets[ea.crossTileID]={textOffset:er,width:we,height:Se,anchor:Pt,textBoxScale:De,prevAnchor:Sr},this.markUsedJustification(qe,Pt,ea,Je),qe.allowVerticalPlacement&&(this.markUsedOrientation(qe,Je,ea),this.placedOrientations[ea.crossTileID]=Je),{shift:nr,placedGlyphBoxes:pr}}}placeLayerBucketPart(R,ae,we){let{bucket:Se,layout:De,translationText:ft,translationIcon:bt,posMatrix:Dt,unwrappedTileID:Yt,textLabelPlaneMatrix:cr,labelToScreenMatrix:hr,textPixelRatio:jr,holdingForFade:ea,collisionBoxArray:qe,partiallyEvaluatedTextSize:Je,collisionGroup:ot}=R.parameters,ht=De.get("text-optional"),At=De.get("icon-optional"),_t=t.ar(De,"text-overlap","text-allow-overlap"),Pt=_t==="always",er=t.ar(De,"icon-overlap","icon-allow-overlap"),nr=er==="always",pr=De.get("text-rotation-alignment")==="map",Sr=De.get("text-pitch-alignment")==="map",Wr=De.get("icon-text-fit")!=="none",ha=De.get("symbol-z-order")==="viewport-y",ga=Pt&&(nr||!Se.hasIconData()||At),Pa=nr&&(Pt||!Se.hasTextData()||ht);!Se.collisionArrays&&qe&&Se.deserializeCollisionBoxes(qe);let Ja=this._getTerrainElevationFunc(this.retainedQueryData[Se.bucketInstanceId].tileID),di=(pi,Ci,$i)=>{var Bn,Sn;if(ae[pi.crossTileID])return;if(ea)return void(this.placements[pi.crossTileID]=new Ga(!1,!1,!1));let ho=!1,ts=!1,yo=!0,Vo=null,ls={box:null,placeable:!1,offscreen:null},rl={box:null,placeable:!1,offscreen:null},Ys=null,Zo=null,Go=null,Rl=0,Xl=0,qu=0;Ci.textFeatureIndex?Rl=Ci.textFeatureIndex:pi.useRuntimeCollisionCircles&&(Rl=pi.featureIndex),Ci.verticalTextFeatureIndex&&(Xl=Ci.verticalTextFeatureIndex);let fu=Ci.textBox;if(fu){let ql=$e=>{let pt=t.ah.horizontal;if(Se.allowVerticalPlacement&&!$e&&this.prevPlacement){let vt=this.prevPlacement.placedOrientations[pi.crossTileID];vt&&(this.placedOrientations[pi.crossTileID]=vt,pt=vt,this.markUsedOrientation(Se,pt,pi))}return pt},Hl=($e,pt)=>{if(Se.allowVerticalPlacement&&pi.numVerticalGlyphVertices>0&&Ci.verticalTextBox){for(let vt of Se.writingModes)if(vt===t.ah.vertical?(ls=pt(),rl=ls):ls=$e(),ls&&ls.placeable)break}else ls=$e()},de=pi.textAnchorOffsetStartIndex,Re=pi.textAnchorOffsetEndIndex;if(Re===de){let $e=(pt,vt)=>{let wt=this.collisionIndex.placeCollisionBox(pt,_t,jr,Dt,Yt,Sr,pr,ft,ot.predicate,Ja);return wt&&wt.placeable&&(this.markUsedOrientation(Se,vt,pi),this.placedOrientations[pi.crossTileID]=vt),wt};Hl(()=>$e(fu,t.ah.horizontal),()=>{let pt=Ci.verticalTextBox;return Se.allowVerticalPlacement&&pi.numVerticalGlyphVertices>0&&pt?$e(pt,t.ah.vertical):{box:null,offscreen:null}}),ql(ls&&ls.placeable)}else{let $e=t.aq[(Sn=(Bn=this.prevPlacement)===null||Bn===void 0?void 0:Bn.variableOffsets[pi.crossTileID])===null||Sn===void 0?void 0:Sn.anchor],pt=(wt,Jt,Rt)=>{let or=wt.x2-wt.x1,Dr=wt.y2-wt.y1,Or=pi.textBoxScale,va=Wr&&er==="never"?Jt:null,fa=null,Va=_t==="never"?1:2,Xa="never";$e&&Va++;for(let _a=0;_apt(fu,Ci.iconBox,t.ah.horizontal),()=>{let wt=Ci.verticalTextBox;return Se.allowVerticalPlacement&&(!ls||!ls.placeable)&&pi.numVerticalGlyphVertices>0&&wt?pt(wt,Ci.verticalIconBox,t.ah.vertical):{box:null,occluded:!0,offscreen:null}}),ls&&(ho=ls.placeable,yo=ls.offscreen);let vt=ql(ls&&ls.placeable);if(!ho&&this.prevPlacement){let wt=this.prevPlacement.variableOffsets[pi.crossTileID];wt&&(this.variableOffsets[pi.crossTileID]=wt,this.markUsedJustification(Se,wt.anchor,pi,vt))}}}if(Ys=ls,ho=Ys&&Ys.placeable,yo=Ys&&Ys.offscreen,pi.useRuntimeCollisionCircles){let ql=Se.text.placedSymbolArray.get(pi.centerJustifiedTextSymbolIndex),Hl=t.ai(Se.textSizeData,Je,ql),de=De.get("text-padding");Zo=this.collisionIndex.placeCollisionCircles(_t,ql,Se.lineVertexArray,Se.glyphOffsetArray,Hl,Dt,Yt,cr,hr,we,Sr,ot.predicate,pi.collisionCircleDiameter,de,ft,Ja),Zo.circles.length&&Zo.collisionDetected&&!we&&t.w("Collisions detected, but collision boxes are not shown"),ho=Pt||Zo.circles.length>0&&!Zo.collisionDetected,yo=yo&&Zo.offscreen}if(Ci.iconFeatureIndex&&(qu=Ci.iconFeatureIndex),Ci.iconBox){let ql=Hl=>this.collisionIndex.placeCollisionBox(Hl,er,jr,Dt,Yt,Sr,pr,bt,ot.predicate,Ja,Wr&&Vo?Vo:void 0);rl&&rl.placeable&&Ci.verticalIconBox?(Go=ql(Ci.verticalIconBox),ts=Go.placeable):(Go=ql(Ci.iconBox),ts=Go.placeable),yo=yo&&Go.offscreen}let bl=ht||pi.numHorizontalGlyphVertices===0&&pi.numVerticalGlyphVertices===0,ou=At||pi.numIconVertices===0;bl||ou?ou?bl||(ts=ts&&ho):ho=ts&&ho:ts=ho=ts&&ho;let Sc=ts&&Go.placeable;if(ho&&Ys.placeable&&this.collisionIndex.insertCollisionBox(Ys.box,_t,De.get("text-ignore-placement"),Se.bucketInstanceId,rl&&rl.placeable&&Xl?Xl:Rl,ot.ID),Sc&&this.collisionIndex.insertCollisionBox(Go.box,er,De.get("icon-ignore-placement"),Se.bucketInstanceId,qu,ot.ID),Zo&&ho&&this.collisionIndex.insertCollisionCircles(Zo.circles,_t,De.get("text-ignore-placement"),Se.bucketInstanceId,Rl,ot.ID),we&&this.storeCollisionData(Se.bucketInstanceId,$i,Ci,Ys,Go,Zo),pi.crossTileID===0)throw new Error("symbolInstance.crossTileID can't be 0");if(Se.bucketInstanceId===0)throw new Error("bucket.bucketInstanceId can't be 0");this.placements[pi.crossTileID]=new Ga(ho||ga,ts||Pa,yo||Se.justReloaded),ae[pi.crossTileID]=!0};if(ha){if(R.symbolInstanceStart!==0)throw new Error("bucket.bucketInstanceId should be 0");let pi=Se.getSortedSymbolIndexes(this.transform.angle);for(let Ci=pi.length-1;Ci>=0;--Ci){let $i=pi[Ci];di(Se.symbolInstances.get($i),Se.collisionArrays[$i],$i)}}else for(let pi=R.symbolInstanceStart;pi=0&&(R.text.placedSymbolArray.get(bt).crossTileID=De>=0&&bt!==De?0:we.crossTileID)}markUsedOrientation(R,ae,we){let Se=ae===t.ah.horizontal||ae===t.ah.horizontalOnly?ae:0,De=ae===t.ah.vertical?ae:0,ft=[we.leftJustifiedTextSymbolIndex,we.centerJustifiedTextSymbolIndex,we.rightJustifiedTextSymbolIndex];for(let bt of ft)R.text.placedSymbolArray.get(bt).placedOrientation=Se;we.verticalPlacedTextSymbolIndex&&(R.text.placedSymbolArray.get(we.verticalPlacedTextSymbolIndex).placedOrientation=De)}commit(R){this.commitTime=R,this.zoomAtLastRecencyCheck=this.transform.zoom;let ae=this.prevPlacement,we=!1;this.prevZoomAdjustment=ae?ae.zoomAdjustment(this.transform.zoom):0;let Se=ae?ae.symbolFadeChange(R):1,De=ae?ae.opacities:{},ft=ae?ae.variableOffsets:{},bt=ae?ae.placedOrientations:{};for(let Dt in this.placements){let Yt=this.placements[Dt],cr=De[Dt];cr?(this.opacities[Dt]=new ka(cr,Se,Yt.text,Yt.icon),we=we||Yt.text!==cr.text.placed||Yt.icon!==cr.icon.placed):(this.opacities[Dt]=new ka(null,Se,Yt.text,Yt.icon,Yt.skipFade),we=we||Yt.text||Yt.icon)}for(let Dt in De){let Yt=De[Dt];if(!this.opacities[Dt]){let cr=new ka(Yt,Se,!1,!1);cr.isHidden()||(this.opacities[Dt]=cr,we=we||Yt.text.placed||Yt.icon.placed)}}for(let Dt in ft)this.variableOffsets[Dt]||!this.opacities[Dt]||this.opacities[Dt].isHidden()||(this.variableOffsets[Dt]=ft[Dt]);for(let Dt in bt)this.placedOrientations[Dt]||!this.opacities[Dt]||this.opacities[Dt].isHidden()||(this.placedOrientations[Dt]=bt[Dt]);if(ae&&ae.lastPlacementChangeTime===void 0)throw new Error("Last placement time for previous placement is not defined");we?this.lastPlacementChangeTime=R:typeof this.lastPlacementChangeTime!="number"&&(this.lastPlacementChangeTime=ae?ae.lastPlacementChangeTime:R)}updateLayerOpacities(R,ae){let we={};for(let Se of ae){let De=Se.getBucket(R);De&&Se.latestFeatureIndex&&R.id===De.layerIds[0]&&this.updateBucketOpacities(De,Se.tileID,we,Se.collisionBoxArray)}}updateBucketOpacities(R,ae,we,Se){R.hasTextData()&&(R.text.opacityVertexArray.clear(),R.text.hasVisibleVertices=!1),R.hasIconData()&&(R.icon.opacityVertexArray.clear(),R.icon.hasVisibleVertices=!1),R.hasIconCollisionBoxData()&&R.iconCollisionBox.collisionVertexArray.clear(),R.hasTextCollisionBoxData()&&R.textCollisionBox.collisionVertexArray.clear();let De=R.layers[0],ft=De.layout,bt=new ka(null,0,!1,!1,!0),Dt=ft.get("text-allow-overlap"),Yt=ft.get("icon-allow-overlap"),cr=De._unevaluatedLayout.hasValue("text-variable-anchor")||De._unevaluatedLayout.hasValue("text-variable-anchor-offset"),hr=ft.get("text-rotation-alignment")==="map",jr=ft.get("text-pitch-alignment")==="map",ea=ft.get("icon-text-fit")!=="none",qe=new ka(null,0,Dt&&(Yt||!R.hasIconData()||ft.get("icon-optional")),Yt&&(Dt||!R.hasTextData()||ft.get("text-optional")),!0);!R.collisionArrays&&Se&&(R.hasIconCollisionBoxData()||R.hasTextCollisionBoxData())&&R.deserializeCollisionBoxes(Se);let Je=(ht,At,_t)=>{for(let Pt=0;Pt0,Sr=this.placedOrientations[At.crossTileID],Wr=Sr===t.ah.vertical,ha=Sr===t.ah.horizontal||Sr===t.ah.horizontalOnly;if(_t>0||Pt>0){let Pa=qa(nr.text);Je(R.text,_t,Wr?ya:Pa),Je(R.text,Pt,ha?ya:Pa);let Ja=nr.text.isHidden();[At.rightJustifiedTextSymbolIndex,At.centerJustifiedTextSymbolIndex,At.leftJustifiedTextSymbolIndex].forEach(Ci=>{Ci>=0&&(R.text.placedSymbolArray.get(Ci).hidden=Ja||Wr?1:0)}),At.verticalPlacedTextSymbolIndex>=0&&(R.text.placedSymbolArray.get(At.verticalPlacedTextSymbolIndex).hidden=Ja||ha?1:0);let di=this.variableOffsets[At.crossTileID];di&&this.markUsedJustification(R,di.anchor,At,Sr);let pi=this.placedOrientations[At.crossTileID];pi&&(this.markUsedJustification(R,"left",At,pi),this.markUsedOrientation(R,pi,At))}if(pr){let Pa=qa(nr.icon),Ja=!(ea&&At.verticalPlacedIconSymbolIndex&&Wr);At.placedIconSymbolIndex>=0&&(Je(R.icon,At.numIconVertices,Ja?Pa:ya),R.icon.placedSymbolArray.get(At.placedIconSymbolIndex).hidden=nr.icon.isHidden()),At.verticalPlacedIconSymbolIndex>=0&&(Je(R.icon,At.numVerticalIconVertices,Ja?ya:Pa),R.icon.placedSymbolArray.get(At.verticalPlacedIconSymbolIndex).hidden=nr.icon.isHidden())}let ga=ot&&ot.has(ht)?ot.get(ht):{text:null,icon:null};if(R.hasIconCollisionBoxData()||R.hasTextCollisionBoxData()){let Pa=R.collisionArrays[ht];if(Pa){let Ja=new t.P(0,0);if(Pa.textBox||Pa.verticalTextBox){let di=!0;if(cr){let pi=this.variableOffsets[er];pi?(Ja=Wt(pi.anchor,pi.width,pi.height,pi.textOffset,pi.textBoxScale),hr&&Ja._rotate(jr?this.transform.angle:-this.transform.angle)):di=!1}if(Pa.textBox||Pa.verticalTextBox){let pi;Pa.textBox&&(pi=Wr),Pa.verticalTextBox&&(pi=ha),Vt(R.textCollisionBox.collisionVertexArray,nr.text.placed,!di||pi,ga.text,Ja.x,Ja.y)}}if(Pa.iconBox||Pa.verticalIconBox){let di=!!(!ha&&Pa.verticalIconBox),pi;Pa.iconBox&&(pi=di),Pa.verticalIconBox&&(pi=!di),Vt(R.iconCollisionBox.collisionVertexArray,nr.icon.placed,pi,ga.icon,ea?Ja.x:0,ea?Ja.y:0)}}}}if(R.sortFeatures(this.transform.angle),this.retainedQueryData[R.bucketInstanceId]&&(this.retainedQueryData[R.bucketInstanceId].featureSortOrder=R.featureSortOrder),R.hasTextData()&&R.text.opacityVertexBuffer&&R.text.opacityVertexBuffer.updateData(R.text.opacityVertexArray),R.hasIconData()&&R.icon.opacityVertexBuffer&&R.icon.opacityVertexBuffer.updateData(R.icon.opacityVertexArray),R.hasIconCollisionBoxData()&&R.iconCollisionBox.collisionVertexBuffer&&R.iconCollisionBox.collisionVertexBuffer.updateData(R.iconCollisionBox.collisionVertexArray),R.hasTextCollisionBoxData()&&R.textCollisionBox.collisionVertexBuffer&&R.textCollisionBox.collisionVertexBuffer.updateData(R.textCollisionBox.collisionVertexArray),R.text.opacityVertexArray.length!==R.text.layoutVertexArray.length/4)throw new Error(`bucket.text.opacityVertexArray.length (= ${R.text.opacityVertexArray.length}) !== bucket.text.layoutVertexArray.length (= ${R.text.layoutVertexArray.length}) / 4`);if(R.icon.opacityVertexArray.length!==R.icon.layoutVertexArray.length/4)throw new Error(`bucket.icon.opacityVertexArray.length (= ${R.icon.opacityVertexArray.length}) !== bucket.icon.layoutVertexArray.length (= ${R.icon.layoutVertexArray.length}) / 4`);if(R.bucketInstanceId in this.collisionCircleArrays){let ht=this.collisionCircleArrays[R.bucketInstanceId];R.placementInvProjMatrix=ht.invProjMatrix,R.placementViewportMatrix=ht.viewportMatrix,R.collisionCircleArray=ht.circles,delete this.collisionCircleArrays[R.bucketInstanceId]}}symbolFadeChange(R){return this.fadeDuration===0?1:(R-this.commitTime)/this.fadeDuration+this.prevZoomAdjustment}zoomAdjustment(R){return Math.max(0,(this.transform.zoom-R)/1.5)}hasTransitions(R){return this.stale||R-this.lastPlacementChangeTimeR}setStale(){this.stale=!0}}function Vt(Oe,R,ae,we,Se,De){we&&we.length!==0||(we=[0,0,0,0]);let ft=we[0]-sr,bt=we[1]-sr,Dt=we[2]-sr,Yt=we[3]-sr;Oe.emplaceBack(R?1:0,ae?1:0,Se||0,De||0,ft,bt),Oe.emplaceBack(R?1:0,ae?1:0,Se||0,De||0,Dt,bt),Oe.emplaceBack(R?1:0,ae?1:0,Se||0,De||0,Dt,Yt),Oe.emplaceBack(R?1:0,ae?1:0,Se||0,De||0,ft,Yt)}let Ut=Math.pow(2,25),xr=Math.pow(2,24),Zr=Math.pow(2,17),pa=Math.pow(2,16),Xr=Math.pow(2,9),Ea=Math.pow(2,8),Fa=Math.pow(2,1);function qa(Oe){if(Oe.opacity===0&&!Oe.placed)return 0;if(Oe.opacity===1&&Oe.placed)return 4294967295;let R=Oe.placed?1:0,ae=Math.floor(127*Oe.opacity);return ae*Ut+R*xr+ae*Zr+R*pa+ae*Xr+R*Ea+ae*Fa+R}let ya=0;function $a(){return{isOccluded:(Oe,R,ae)=>!1,getPitchedTextCorrection:(Oe,R,ae)=>1,get useSpecialProjectionForSymbols(){return!1},projectTileCoordinates(Oe,R,ae,we){throw new Error("Not implemented.")},translatePosition:(Oe,R,ae,we)=>function(Se,De,ft,bt,Dt=!1){if(!ft[0]&&!ft[1])return[0,0];let Yt=Dt?bt==="map"?Se.angle:0:bt==="viewport"?-Se.angle:0;if(Yt){let cr=Math.sin(Yt),hr=Math.cos(Yt);ft=[ft[0]*hr-ft[1]*cr,ft[0]*cr+ft[1]*hr]}return[Dt?ft[0]:Aa(De,ft[0],Se.zoom),Dt?ft[1]:Aa(De,ft[1],Se.zoom)]}(Oe,R,ae,we),getCircleRadiusCorrection:Oe=>1}}class mt{constructor(R){this._sortAcrossTiles=R.layout.get("symbol-z-order")!=="viewport-y"&&!R.layout.get("symbol-sort-key").isConstant(),this._currentTileIndex=0,this._currentPartIndex=0,this._seenCrossTileIDs={},this._bucketParts=[]}continuePlacement(R,ae,we,Se,De){let ft=this._bucketParts;for(;this._currentTileIndexbt.sortKey-Dt.sortKey));this._currentPartIndex!this._forceFullPlacement&&i.now()-Se>2;for(;this._currentPlacementIndex>=0;){let ft=ae[R[this._currentPlacementIndex]],bt=this.placement.collisionIndex.transform.zoom;if(ft.type==="symbol"&&(!ft.minzoom||ft.minzoom<=bt)&&(!ft.maxzoom||ft.maxzoom>bt)){if(this._inProgressLayer||(this._inProgressLayer=new mt(ft)),this._inProgressLayer.continuePlacement(we[ft.source],this.placement,this._showCollisionBoxes,ft,De))return;delete this._inProgressLayer}this._currentPlacementIndex--}this._done=!0}commit(R){return this.placement.commit(R),this.placement}}let Er=512/t.X/2;class kr{constructor(R,ae,we){this.tileID=R,this.bucketInstanceId=we,this._symbolsByKey={};let Se=new Map;for(let De=0;De({x:Math.floor(Dt.anchorX*Er),y:Math.floor(Dt.anchorY*Er)})),crossTileIDs:ft.map(Dt=>Dt.crossTileID)};if(bt.positions.length>128){let Dt=new t.av(bt.positions.length,16,Uint16Array);for(let{x:Yt,y:cr}of bt.positions)Dt.add(Yt,cr);Dt.finish(),delete bt.positions,bt.index=Dt}this._symbolsByKey[De]=bt}}getScaledCoordinates(R,ae){let{x:we,y:Se,z:De}=this.tileID.canonical,{x:ft,y:bt,z:Dt}=ae.canonical,Yt=Er/Math.pow(2,Dt-De),cr=(bt*t.X+R.anchorY)*Yt,hr=Se*t.X*Er;return{x:Math.floor((ft*t.X+R.anchorX)*Yt-we*t.X*Er),y:Math.floor(cr-hr)}}findMatches(R,ae,we){let Se=this.tileID.canonical.zR)}}class br{constructor(){this.maxCrossTileID=0}generate(){return++this.maxCrossTileID}}class Tr{constructor(){this.indexes={},this.usedCrossTileIDs={},this.lng=0}handleWrapJump(R){let ae=Math.round((R-this.lng)/360);if(ae!==0)for(let we in this.indexes){let Se=this.indexes[we],De={};for(let ft in Se){let bt=Se[ft];bt.tileID=bt.tileID.unwrapTo(bt.tileID.wrap+ae),De[bt.tileID.key]=bt}this.indexes[we]=De}this.lng=R}addBucket(R,ae,we){if(this.indexes[R.overscaledZ]&&this.indexes[R.overscaledZ][R.key]){if(this.indexes[R.overscaledZ][R.key].bucketInstanceId===ae.bucketInstanceId)return!1;this.removeBucketCrossTileIDs(R.overscaledZ,this.indexes[R.overscaledZ][R.key])}for(let De=0;DeR.overscaledZ)for(let bt in ft){let Dt=ft[bt];Dt.tileID.isChildOf(R)&&Dt.findMatches(ae.symbolInstances,R,Se)}else{let bt=ft[R.scaledTo(Number(De)).key];bt&&bt.findMatches(ae.symbolInstances,R,Se)}}for(let De=0;De{ae[we]=!0});for(let we in this.layerIndexes)ae[we]||delete this.layerIndexes[we]}}let Fr=(Oe,R)=>t.t(Oe,R&&R.filter(ae=>ae.identifier!=="source.canvas")),Lr=t.aw();class Jr extends t.E{constructor(R,ae={}){super(),this._rtlPluginLoaded=()=>{for(let we in this.sourceCaches){let Se=this.sourceCaches[we].getSource().type;Se!=="vector"&&Se!=="geojson"||this.sourceCaches[we].reload()}},this.map=R,this.dispatcher=new J($(),R._getMapId()),this.dispatcher.registerMessageHandler("GG",(we,Se)=>this.getGlyphs(we,Se)),this.dispatcher.registerMessageHandler("GI",(we,Se)=>this.getImages(we,Se)),this.imageManager=new f,this.imageManager.setEventedParent(this),this.glyphManager=new F(R._requestManager,ae.localIdeographFontFamily),this.lineAtlas=new W(256,512),this.crossTileSymbolIndex=new Mr,this._spritesImagesIds={},this._layers={},this._order=[],this.sourceCaches={},this.zoomHistory=new t.ax,this._loaded=!1,this._availableImages=[],this._resetUpdates(),this.dispatcher.broadcast("SR",t.ay()),tt().on(ge,this._rtlPluginLoaded),this.on("data",we=>{if(we.dataType!=="source"||we.sourceDataType!=="metadata")return;let Se=this.sourceCaches[we.sourceId];if(!Se)return;let De=Se.getSource();if(De&&De.vectorLayerIds)for(let ft in this._layers){let bt=this._layers[ft];bt.source===De.id&&this._validateLayer(bt)}})}loadURL(R,ae={},we){this.fire(new t.k("dataloading",{dataType:"style"})),ae.validate=typeof ae.validate!="boolean"||ae.validate;let Se=this.map._requestManager.transformRequest(R,"Style");this._loadStyleRequest=new AbortController;let De=this._loadStyleRequest;t.h(Se,this._loadStyleRequest).then(ft=>{this._loadStyleRequest=null,this._load(ft.data,ae,we)}).catch(ft=>{this._loadStyleRequest=null,ft&&!De.signal.aborted&&this.fire(new t.j(ft))})}loadJSON(R,ae={},we){this.fire(new t.k("dataloading",{dataType:"style"})),this._frameRequest=new AbortController,i.frameAsync(this._frameRequest).then(()=>{this._frameRequest=null,ae.validate=ae.validate!==!1,this._load(R,ae,we)}).catch(()=>{})}loadEmpty(){this.fire(new t.k("dataloading",{dataType:"style"})),this._load(Lr,{validate:!1})}_load(R,ae,we){var Se;let De=ae.transformStyle?ae.transformStyle(we,R):R;if(!ae.validate||!Fr(this,t.u(De))){this._loaded=!0,this.stylesheet=De;for(let ft in De.sources)this.addSource(ft,De.sources[ft],{validate:!1});De.sprite?this._loadSprite(De.sprite):this.imageManager.setLoaded(!0),this.glyphManager.setURL(De.glyphs),this._createLayers(),this.light=new I(this.stylesheet.light),this.sky=new U(this.stylesheet.sky),this.map.setTerrain((Se=this.stylesheet.terrain)!==null&&Se!==void 0?Se:null),this.fire(new t.k("data",{dataType:"style"})),this.fire(new t.k("style.load"))}}_createLayers(){let R=t.az(this.stylesheet.layers);this.dispatcher.broadcast("SL",R),this._order=R.map(ae=>ae.id),this._layers={},this._serializedLayers=null;for(let ae of R){let we=t.aA(ae);we.setEventedParent(this,{layer:{id:ae.id}}),this._layers[ae.id]=we}}_loadSprite(R,ae=!1,we=void 0){let Se;this.imageManager.setLoaded(!1),this._spriteRequest=new AbortController,function(De,ft,bt,Dt){return t._(this,void 0,void 0,function*(){let Yt=b(De),cr=bt>1?"@2x":"",hr={},jr={};for(let{id:ea,url:qe}of Yt){let Je=ft.transformRequest(d(qe,cr,".json"),"SpriteJSON");hr[ea]=t.h(Je,Dt);let ot=ft.transformRequest(d(qe,cr,".png"),"SpriteImage");jr[ea]=l.getImage(ot,Dt)}return yield Promise.all([...Object.values(hr),...Object.values(jr)]),function(ea,qe){return t._(this,void 0,void 0,function*(){let Je={};for(let ot in ea){Je[ot]={};let ht=i.getImageCanvasContext((yield qe[ot]).data),At=(yield ea[ot]).data;for(let _t in At){let{width:Pt,height:er,x:nr,y:pr,sdf:Sr,pixelRatio:Wr,stretchX:ha,stretchY:ga,content:Pa,textFitWidth:Ja,textFitHeight:di}=At[_t];Je[ot][_t]={data:null,pixelRatio:Wr,sdf:Sr,stretchX:ha,stretchY:ga,content:Pa,textFitWidth:Ja,textFitHeight:di,spriteData:{width:Pt,height:er,x:nr,y:pr,context:ht}}}}return Je})}(hr,jr)})}(R,this.map._requestManager,this.map.getPixelRatio(),this._spriteRequest).then(De=>{if(this._spriteRequest=null,De)for(let ft in De){this._spritesImagesIds[ft]=[];let bt=this._spritesImagesIds[ft]?this._spritesImagesIds[ft].filter(Dt=>!(Dt in De)):[];for(let Dt of bt)this.imageManager.removeImage(Dt),this._changedImages[Dt]=!0;for(let Dt in De[ft]){let Yt=ft==="default"?Dt:`${ft}:${Dt}`;this._spritesImagesIds[ft].push(Yt),Yt in this.imageManager.images?this.imageManager.updateImage(Yt,De[ft][Dt],!1):this.imageManager.addImage(Yt,De[ft][Dt]),ae&&(this._changedImages[Yt]=!0)}}}).catch(De=>{this._spriteRequest=null,Se=De,this.fire(new t.j(Se))}).finally(()=>{this.imageManager.setLoaded(!0),this._availableImages=this.imageManager.listImages(),ae&&(this._changed=!0),this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.k("data",{dataType:"style"})),we&&we(Se)})}_unloadSprite(){for(let R of Object.values(this._spritesImagesIds).flat())this.imageManager.removeImage(R),this._changedImages[R]=!0;this._spritesImagesIds={},this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.k("data",{dataType:"style"}))}_validateLayer(R){let ae=this.sourceCaches[R.source];if(!ae)return;let we=R.sourceLayer;if(!we)return;let Se=ae.getSource();(Se.type==="geojson"||Se.vectorLayerIds&&Se.vectorLayerIds.indexOf(we)===-1)&&this.fire(new t.j(new Error(`Source layer "${we}" does not exist on source "${Se.id}" as specified by style layer "${R.id}".`)))}loaded(){if(!this._loaded||Object.keys(this._updatedSources).length)return!1;for(let R in this.sourceCaches)if(!this.sourceCaches[R].loaded())return!1;return!!this.imageManager.isLoaded()}_serializeByIds(R,ae=!1){let we=this._serializedAllLayers();if(!R||R.length===0)return Object.values(ae?t.aB(we):we);let Se=[];for(let De of R)if(we[De]){let ft=ae?t.aB(we[De]):we[De];Se.push(ft)}return Se}_serializedAllLayers(){let R=this._serializedLayers;if(R)return R;R=this._serializedLayers={};let ae=Object.keys(this._layers);for(let we of ae){let Se=this._layers[we];Se.type!=="custom"&&(R[we]=Se.serialize())}return R}hasTransitions(){if(this.light&&this.light.hasTransition()||this.sky&&this.sky.hasTransition())return!0;for(let R in this.sourceCaches)if(this.sourceCaches[R].hasTransition())return!0;for(let R in this._layers)if(this._layers[R].hasTransition())return!0;return!1}_checkLoaded(){if(!this._loaded)throw new Error("Style is not done loading.")}update(R){if(!this._loaded)return;let ae=this._changed;if(ae){let Se=Object.keys(this._updatedLayers),De=Object.keys(this._removedLayers);(Se.length||De.length)&&this._updateWorkerLayers(Se,De);for(let ft in this._updatedSources){let bt=this._updatedSources[ft];if(bt==="reload")this._reloadSource(ft);else{if(bt!=="clear")throw new Error(`Invalid action ${bt}`);this._clearSource(ft)}}this._updateTilesForChangedImages(),this._updateTilesForChangedGlyphs();for(let ft in this._updatedPaintProps)this._layers[ft].updateTransitions(R);this.light.updateTransitions(R),this.sky.updateTransitions(R),this._resetUpdates()}let we={};for(let Se in this.sourceCaches){let De=this.sourceCaches[Se];we[Se]=De.used,De.used=!1}for(let Se of this._order){let De=this._layers[Se];De.recalculate(R,this._availableImages),!De.isHidden(R.zoom)&&De.source&&(this.sourceCaches[De.source].used=!0)}for(let Se in we){let De=this.sourceCaches[Se];!!we[Se]!=!!De.used&&De.fire(new t.k("data",{sourceDataType:"visibility",dataType:"source",sourceId:Se}))}this.light.recalculate(R),this.sky.recalculate(R),this.z=R.zoom,ae&&this.fire(new t.k("data",{dataType:"style"}))}_updateTilesForChangedImages(){let R=Object.keys(this._changedImages);if(R.length){for(let ae in this.sourceCaches)this.sourceCaches[ae].reloadTilesForDependencies(["icons","patterns"],R);this._changedImages={}}}_updateTilesForChangedGlyphs(){if(this._glyphsDidChange){for(let R in this.sourceCaches)this.sourceCaches[R].reloadTilesForDependencies(["glyphs"],[""]);this._glyphsDidChange=!1}}_updateWorkerLayers(R,ae){this.dispatcher.broadcast("UL",{layers:this._serializeByIds(R,!1),removedIds:ae})}_resetUpdates(){this._changed=!1,this._updatedLayers={},this._removedLayers={},this._updatedSources={},this._updatedPaintProps={},this._changedImages={},this._glyphsDidChange=!1}setState(R,ae={}){var we;this._checkLoaded();let Se=this.serialize();if(R=ae.transformStyle?ae.transformStyle(Se,R):R,((we=ae.validate)===null||we===void 0||we)&&Fr(this,t.u(R)))return!1;(R=t.aB(R)).layers=t.az(R.layers);let De=t.aC(Se,R),ft=this._getOperationsToPerform(De);if(ft.unimplemented.length>0)throw new Error(`Unimplemented: ${ft.unimplemented.join(", ")}.`);if(ft.operations.length===0)return!1;for(let bt of ft.operations)bt();return this.stylesheet=R,this._serializedLayers=null,!0}_getOperationsToPerform(R){let ae=[],we=[];for(let Se of R)switch(Se.command){case"setCenter":case"setZoom":case"setBearing":case"setPitch":continue;case"addLayer":ae.push(()=>this.addLayer.apply(this,Se.args));break;case"removeLayer":ae.push(()=>this.removeLayer.apply(this,Se.args));break;case"setPaintProperty":ae.push(()=>this.setPaintProperty.apply(this,Se.args));break;case"setLayoutProperty":ae.push(()=>this.setLayoutProperty.apply(this,Se.args));break;case"setFilter":ae.push(()=>this.setFilter.apply(this,Se.args));break;case"addSource":ae.push(()=>this.addSource.apply(this,Se.args));break;case"removeSource":ae.push(()=>this.removeSource.apply(this,Se.args));break;case"setLayerZoomRange":ae.push(()=>this.setLayerZoomRange.apply(this,Se.args));break;case"setLight":ae.push(()=>this.setLight.apply(this,Se.args));break;case"setGeoJSONSourceData":ae.push(()=>this.setGeoJSONSourceData.apply(this,Se.args));break;case"setGlyphs":ae.push(()=>this.setGlyphs.apply(this,Se.args));break;case"setSprite":ae.push(()=>this.setSprite.apply(this,Se.args));break;case"setSky":ae.push(()=>this.setSky.apply(this,Se.args));break;case"setTerrain":ae.push(()=>this.map.setTerrain.apply(this,Se.args));break;case"setTransition":ae.push(()=>{});break;default:we.push(Se.command)}return{operations:ae,unimplemented:we}}addImage(R,ae){if(this.getImage(R))return this.fire(new t.j(new Error(`An image named "${R}" already exists.`)));this.imageManager.addImage(R,ae),this._afterImageUpdated(R)}updateImage(R,ae){this.imageManager.updateImage(R,ae)}getImage(R){return this.imageManager.getImage(R)}removeImage(R){if(!this.getImage(R))return this.fire(new t.j(new Error(`An image named "${R}" does not exist.`)));this.imageManager.removeImage(R),this._afterImageUpdated(R)}_afterImageUpdated(R){this._availableImages=this.imageManager.listImages(),this._changedImages[R]=!0,this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.k("data",{dataType:"style"}))}listImages(){return this._checkLoaded(),this.imageManager.listImages()}addSource(R,ae,we={}){if(this._checkLoaded(),this.sourceCaches[R]!==void 0)throw new Error(`Source "${R}" already exists.`);if(!ae.type)throw new Error(`The type property must be defined, but only the following properties were given: ${Object.keys(ae).join(", ")}.`);if(["vector","raster","geojson","video","image"].indexOf(ae.type)>=0&&this._validate(t.u.source,`sources.${R}`,ae,null,we))return;this.map&&this.map._collectResourceTiming&&(ae.collectResourceTiming=!0);let Se=this.sourceCaches[R]=new St(R,ae,this.dispatcher);Se.style=this,Se.setEventedParent(this,()=>({isSourceLoaded:Se.loaded(),source:Se.serialize(),sourceId:R})),Se.onAdd(this.map),this._changed=!0}removeSource(R){if(this._checkLoaded(),this.sourceCaches[R]===void 0)throw new Error("There is no source with this ID");for(let we in this._layers)if(this._layers[we].source===R)return this.fire(new t.j(new Error(`Source "${R}" cannot be removed while layer "${we}" is using it.`)));let ae=this.sourceCaches[R];delete this.sourceCaches[R],delete this._updatedSources[R],ae.fire(new t.k("data",{sourceDataType:"metadata",dataType:"source",sourceId:R})),ae.setEventedParent(null),ae.onRemove(this.map),this._changed=!0}setGeoJSONSourceData(R,ae){if(this._checkLoaded(),this.sourceCaches[R]===void 0)throw new Error(`There is no source with this ID=${R}`);let we=this.sourceCaches[R].getSource();if(we.type!=="geojson")throw new Error(`geojsonSource.type is ${we.type}, which is !== 'geojson`);we.setData(ae),this._changed=!0}getSource(R){return this.sourceCaches[R]&&this.sourceCaches[R].getSource()}addLayer(R,ae,we={}){this._checkLoaded();let Se=R.id;if(this.getLayer(Se))return void this.fire(new t.j(new Error(`Layer "${Se}" already exists on this map.`)));let De;if(R.type==="custom"){if(Fr(this,t.aD(R)))return;De=t.aA(R)}else{if("source"in R&&typeof R.source=="object"&&(this.addSource(Se,R.source),R=t.aB(R),R=t.e(R,{source:Se})),this._validate(t.u.layer,`layers.${Se}`,R,{arrayIndex:-1},we))return;De=t.aA(R),this._validateLayer(De),De.setEventedParent(this,{layer:{id:Se}})}let ft=ae?this._order.indexOf(ae):this._order.length;if(ae&&ft===-1)this.fire(new t.j(new Error(`Cannot add layer "${Se}" before non-existing layer "${ae}".`)));else{if(this._order.splice(ft,0,Se),this._layerOrderChanged=!0,this._layers[Se]=De,this._removedLayers[Se]&&De.source&&De.type!=="custom"){let bt=this._removedLayers[Se];delete this._removedLayers[Se],bt.type!==De.type?this._updatedSources[De.source]="clear":(this._updatedSources[De.source]="reload",this.sourceCaches[De.source].pause())}this._updateLayer(De),De.onAdd&&De.onAdd(this.map)}}moveLayer(R,ae){if(this._checkLoaded(),this._changed=!0,!this._layers[R])return void this.fire(new t.j(new Error(`The layer '${R}' does not exist in the map's style and cannot be moved.`)));if(R===ae)return;let we=this._order.indexOf(R);this._order.splice(we,1);let Se=ae?this._order.indexOf(ae):this._order.length;ae&&Se===-1?this.fire(new t.j(new Error(`Cannot move layer "${R}" before non-existing layer "${ae}".`))):(this._order.splice(Se,0,R),this._layerOrderChanged=!0)}removeLayer(R){this._checkLoaded();let ae=this._layers[R];if(!ae)return void this.fire(new t.j(new Error(`Cannot remove non-existing layer "${R}".`)));ae.setEventedParent(null);let we=this._order.indexOf(R);this._order.splice(we,1),this._layerOrderChanged=!0,this._changed=!0,this._removedLayers[R]=ae,delete this._layers[R],this._serializedLayers&&delete this._serializedLayers[R],delete this._updatedLayers[R],delete this._updatedPaintProps[R],ae.onRemove&&ae.onRemove(this.map)}getLayer(R){return this._layers[R]}getLayersOrder(){return[...this._order]}hasLayer(R){return R in this._layers}setLayerZoomRange(R,ae,we){this._checkLoaded();let Se=this.getLayer(R);Se?Se.minzoom===ae&&Se.maxzoom===we||(ae!=null&&(Se.minzoom=ae),we!=null&&(Se.maxzoom=we),this._updateLayer(Se)):this.fire(new t.j(new Error(`Cannot set the zoom range of non-existing layer "${R}".`)))}setFilter(R,ae,we={}){this._checkLoaded();let Se=this.getLayer(R);if(Se){if(!t.aE(Se.filter,ae))return ae==null?(Se.filter=void 0,void this._updateLayer(Se)):void(this._validate(t.u.filter,`layers.${Se.id}.filter`,ae,null,we)||(Se.filter=t.aB(ae),this._updateLayer(Se)))}else this.fire(new t.j(new Error(`Cannot filter non-existing layer "${R}".`)))}getFilter(R){return t.aB(this.getLayer(R).filter)}setLayoutProperty(R,ae,we,Se={}){this._checkLoaded();let De=this.getLayer(R);De?t.aE(De.getLayoutProperty(ae),we)||(De.setLayoutProperty(ae,we,Se),this._updateLayer(De)):this.fire(new t.j(new Error(`Cannot style non-existing layer "${R}".`)))}getLayoutProperty(R,ae){let we=this.getLayer(R);if(we)return we.getLayoutProperty(ae);this.fire(new t.j(new Error(`Cannot get style of non-existing layer "${R}".`)))}setPaintProperty(R,ae,we,Se={}){this._checkLoaded();let De=this.getLayer(R);De?t.aE(De.getPaintProperty(ae),we)||(De.setPaintProperty(ae,we,Se)&&this._updateLayer(De),this._changed=!0,this._updatedPaintProps[R]=!0,this._serializedLayers=null):this.fire(new t.j(new Error(`Cannot style non-existing layer "${R}".`)))}getPaintProperty(R,ae){return this.getLayer(R).getPaintProperty(ae)}setFeatureState(R,ae){this._checkLoaded();let we=R.source,Se=R.sourceLayer,De=this.sourceCaches[we];if(De===void 0)return void this.fire(new t.j(new Error(`The source '${we}' does not exist in the map's style.`)));let ft=De.getSource().type;ft==="geojson"&&Se?this.fire(new t.j(new Error("GeoJSON sources cannot have a sourceLayer parameter."))):ft!=="vector"||Se?(R.id===void 0&&this.fire(new t.j(new Error("The feature id parameter must be provided."))),De.setFeatureState(Se,R.id,ae)):this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}removeFeatureState(R,ae){this._checkLoaded();let we=R.source,Se=this.sourceCaches[we];if(Se===void 0)return void this.fire(new t.j(new Error(`The source '${we}' does not exist in the map's style.`)));let De=Se.getSource().type,ft=De==="vector"?R.sourceLayer:void 0;De!=="vector"||ft?ae&&typeof R.id!="string"&&typeof R.id!="number"?this.fire(new t.j(new Error("A feature id is required to remove its specific state property."))):Se.removeFeatureState(ft,R.id,ae):this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")))}getFeatureState(R){this._checkLoaded();let ae=R.source,we=R.sourceLayer,Se=this.sourceCaches[ae];if(Se!==void 0)return Se.getSource().type!=="vector"||we?(R.id===void 0&&this.fire(new t.j(new Error("The feature id parameter must be provided."))),Se.getFeatureState(we,R.id)):void this.fire(new t.j(new Error("The sourceLayer parameter must be provided for vector source types.")));this.fire(new t.j(new Error(`The source '${ae}' does not exist in the map's style.`)))}getTransition(){return t.e({duration:300,delay:0},this.stylesheet&&this.stylesheet.transition)}serialize(){if(!this._loaded)return;let R=t.aF(this.sourceCaches,De=>De.serialize()),ae=this._serializeByIds(this._order,!0),we=this.map.getTerrain()||void 0,Se=this.stylesheet;return t.aG({version:Se.version,name:Se.name,metadata:Se.metadata,light:Se.light,sky:Se.sky,center:Se.center,zoom:Se.zoom,bearing:Se.bearing,pitch:Se.pitch,sprite:Se.sprite,glyphs:Se.glyphs,transition:Se.transition,sources:R,layers:ae,terrain:we},De=>De!==void 0)}_updateLayer(R){this._updatedLayers[R.id]=!0,R.source&&!this._updatedSources[R.source]&&this.sourceCaches[R.source].getSource().type!=="raster"&&(this._updatedSources[R.source]="reload",this.sourceCaches[R.source].pause()),this._serializedLayers=null,this._changed=!0}_flattenAndSortRenderedFeatures(R){let ae=ft=>this._layers[ft].type==="fill-extrusion",we={},Se=[];for(let ft=this._order.length-1;ft>=0;ft--){let bt=this._order[ft];if(ae(bt)){we[bt]=ft;for(let Dt of R){let Yt=Dt[bt];if(Yt)for(let cr of Yt)Se.push(cr)}}}Se.sort((ft,bt)=>bt.intersectionZ-ft.intersectionZ);let De=[];for(let ft=this._order.length-1;ft>=0;ft--){let bt=this._order[ft];if(ae(bt))for(let Dt=Se.length-1;Dt>=0;Dt--){let Yt=Se[Dt].feature;if(we[Yt.layer.id]{let Sr=ht.featureSortOrder;if(Sr){let Wr=Sr.indexOf(nr.featureIndex);return Sr.indexOf(pr.featureIndex)-Wr}return pr.featureIndex-nr.featureIndex});for(let nr of er)Pt.push(nr)}}for(let ht in qe)qe[ht].forEach(At=>{let _t=At.feature,Pt=Yt[bt[ht].source].getFeatureState(_t.layer["source-layer"],_t.id);_t.source=_t.layer.source,_t.layer["source-layer"]&&(_t.sourceLayer=_t.layer["source-layer"]),_t.state=Pt});return qe}(this._layers,ft,this.sourceCaches,R,ae,this.placement.collisionIndex,this.placement.retainedQueryData)),this._flattenAndSortRenderedFeatures(De)}querySourceFeatures(R,ae){ae&&ae.filter&&this._validate(t.u.filter,"querySourceFeatures.filter",ae.filter,null,ae);let we=this.sourceCaches[R];return we?function(Se,De){let ft=Se.getRenderableIds().map(Yt=>Se.getTileByID(Yt)),bt=[],Dt={};for(let Yt=0;Ytjr.getTileByID(ea)).sort((ea,qe)=>qe.tileID.overscaledZ-ea.tileID.overscaledZ||(ea.tileID.isLessThan(qe.tileID)?-1:1))}let hr=this.crossTileSymbolIndex.addLayer(cr,Dt[cr.source],R.center.lng);ft=ft||hr}if(this.crossTileSymbolIndex.pruneUnusedLayers(this._order),((De=De||this._layerOrderChanged||we===0)||!this.pauseablePlacement||this.pauseablePlacement.isDone()&&!this.placement.stillRecent(i.now(),R.zoom))&&(this.pauseablePlacement=new gt(R,this.map.terrain,this._order,De,ae,we,Se,this.placement),this._layerOrderChanged=!1),this.pauseablePlacement.isDone()?this.placement.setStale():(this.pauseablePlacement.continuePlacement(this._order,this._layers,Dt),this.pauseablePlacement.isDone()&&(this.placement=this.pauseablePlacement.commit(i.now()),bt=!0),ft&&this.pauseablePlacement.placement.setStale()),bt||ft)for(let Yt of this._order){let cr=this._layers[Yt];cr.type==="symbol"&&this.placement.updateLayerOpacities(cr,Dt[cr.source])}return!this.pauseablePlacement.isDone()||this.placement.hasTransitions(i.now())}_releaseSymbolFadeTiles(){for(let R in this.sourceCaches)this.sourceCaches[R].releaseSymbolFadeTiles()}getImages(R,ae){return t._(this,void 0,void 0,function*(){let we=yield this.imageManager.getImages(ae.icons);this._updateTilesForChangedImages();let Se=this.sourceCaches[ae.source];return Se&&Se.setDependencies(ae.tileID.key,ae.type,ae.icons),we})}getGlyphs(R,ae){return t._(this,void 0,void 0,function*(){let we=yield this.glyphManager.getGlyphs(ae.stacks),Se=this.sourceCaches[ae.source];return Se&&Se.setDependencies(ae.tileID.key,ae.type,[""]),we})}getGlyphsUrl(){return this.stylesheet.glyphs||null}setGlyphs(R,ae={}){this._checkLoaded(),R&&this._validate(t.u.glyphs,"glyphs",R,null,ae)||(this._glyphsDidChange=!0,this.stylesheet.glyphs=R,this.glyphManager.entries={},this.glyphManager.setURL(R))}addSprite(R,ae,we={},Se){this._checkLoaded();let De=[{id:R,url:ae}],ft=[...b(this.stylesheet.sprite),...De];this._validate(t.u.sprite,"sprite",ft,null,we)||(this.stylesheet.sprite=ft,this._loadSprite(De,!0,Se))}removeSprite(R){this._checkLoaded();let ae=b(this.stylesheet.sprite);if(ae.find(we=>we.id===R)){if(this._spritesImagesIds[R])for(let we of this._spritesImagesIds[R])this.imageManager.removeImage(we),this._changedImages[we]=!0;ae.splice(ae.findIndex(we=>we.id===R),1),this.stylesheet.sprite=ae.length>0?ae:void 0,delete this._spritesImagesIds[R],this._availableImages=this.imageManager.listImages(),this._changed=!0,this.dispatcher.broadcast("SI",this._availableImages),this.fire(new t.k("data",{dataType:"style"}))}else this.fire(new t.j(new Error(`Sprite "${R}" doesn't exists on this map.`)))}getSprite(){return b(this.stylesheet.sprite)}setSprite(R,ae={},we){this._checkLoaded(),R&&this._validate(t.u.sprite,"sprite",R,null,ae)||(this.stylesheet.sprite=R,R?this._loadSprite(R,!0,we):(this._unloadSprite(),we&&we(null)))}}var oa=t.Y([{name:"a_pos",type:"Int16",components:2}]);let ca={prelude:kt(`#ifdef GL_ES +precision mediump float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +`,`#ifdef GL_ES +precision highp float; +#else +#if !defined(lowp) +#define lowp +#endif +#if !defined(mediump) +#define mediump +#endif +#if !defined(highp) +#define highp +#endif +#endif +vec2 unpack_float(const float packedValue) {int packedIntValue=int(packedValue);int v0=packedIntValue/256;return vec2(v0,packedIntValue-v0*256);}vec2 unpack_opacity(const float packedOpacity) {int intOpacity=int(packedOpacity)/2;return vec2(float(intOpacity)/127.0,mod(packedOpacity,2.0));}vec4 decode_color(const vec2 encodedColor) {return vec4(unpack_float(encodedColor[0])/255.0,unpack_float(encodedColor[1])/255.0 +);}float unpack_mix_vec2(const vec2 packedValue,const float t) {return mix(packedValue[0],packedValue[1],t);}vec4 unpack_mix_color(const vec4 packedColors,const float t) {vec4 minColor=decode_color(vec2(packedColors[0],packedColors[1]));vec4 maxColor=decode_color(vec2(packedColors[2],packedColors[3]));return mix(minColor,maxColor,t);}vec2 get_pattern_pos(const vec2 pixel_coord_upper,const vec2 pixel_coord_lower,const vec2 pattern_size,const float tile_units_to_pixels,const vec2 pos) {vec2 offset=mod(mod(mod(pixel_coord_upper,pattern_size)*256.0,pattern_size)*256.0+pixel_coord_lower,pattern_size);return (tile_units_to_pixels*pos+offset)/pattern_size;} +#ifdef TERRAIN3D +uniform sampler2D u_terrain;uniform float u_terrain_dim;uniform mat4 u_terrain_matrix;uniform vec4 u_terrain_unpack;uniform float u_terrain_exaggeration;uniform highp sampler2D u_depth; +#endif +const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitShifts=vec4(1.)/bitSh;highp float unpack(highp vec4 color) {return dot(color,bitShifts);}highp float depthOpacity(vec3 frag) { +#ifdef TERRAIN3D +highp float d=unpack(texture2D(u_depth,frag.xy*0.5+0.5))+0.0001-frag.z;return 1.0-max(0.0,min(1.0,-d*500.0)); +#else +return 1.0; +#endif +}float calculate_visibility(vec4 pos) { +#ifdef TERRAIN3D +vec3 frag=pos.xyz/pos.w;highp float d=depthOpacity(frag);if (d > 0.95) return 1.0;return (d+depthOpacity(frag+vec3(0.0,0.01,0.0)))/2.0; +#else +return 1.0; +#endif +}float ele(vec2 pos) { +#ifdef TERRAIN3D +vec4 rgb=(texture2D(u_terrain,pos)*255.0)*u_terrain_unpack;return rgb.r+rgb.g+rgb.b-u_terrain_unpack.a; +#else +return 0.0; +#endif +}float get_elevation(vec2 pos) { +#ifdef TERRAIN3D +vec2 coord=(u_terrain_matrix*vec4(pos,0.0,1.0)).xy*u_terrain_dim+1.0;vec2 f=fract(coord);vec2 c=(floor(coord)+0.5)/(u_terrain_dim+2.0);float d=1.0/(u_terrain_dim+2.0);float tl=ele(c);float tr=ele(c+vec2(d,0.0));float bl=ele(c+vec2(0.0,d));float br=ele(c+vec2(d,d));float elevation=mix(mix(tl,tr,f.x),mix(bl,br,f.x),f.y);return elevation*u_terrain_exaggeration; +#else +return 0.0; +#endif +}`),background:kt(`uniform vec4 u_color;uniform float u_opacity;void main() {gl_FragColor=u_color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),backgroundPattern:kt(`uniform vec2 u_pattern_tl_a;uniform vec2 u_pattern_br_a;uniform vec2 u_pattern_tl_b;uniform vec2 u_pattern_br_b;uniform vec2 u_texsize;uniform float u_mix;uniform float u_opacity;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(u_pattern_tl_a/u_texsize,u_pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(u_pattern_tl_b/u_texsize,u_pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_mix)*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_pattern_size_a;uniform vec2 u_pattern_size_b;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_scale_a;uniform float u_scale_b;uniform float u_tile_units_to_pixels;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_a*u_pattern_size_a,u_tile_units_to_pixels,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,u_scale_b*u_pattern_size_b,u_tile_units_to_pixels,a_pos);}"),circle:kt(`varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=v_data.xy;float extrude_length=length(extrude);float antialiased_blur=v_data.z;float opacity_t=smoothstep(0.0,antialiased_blur,extrude_length-1.0);float color_t=stroke_width < 0.01 ? 0.0 : smoothstep(antialiased_blur,0.0,extrude_length-radius/(radius+stroke_width));gl_FragColor=v_visibility*opacity_t*mix(color*opacity,stroke_color*stroke_opacity,color_t); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform bool u_scale_with_map;uniform bool u_pitch_with_map;uniform vec2 u_extrude_scale;uniform lowp float u_device_pixel_ratio;uniform highp float u_camera_to_center_distance;attribute vec2 a_pos;varying vec3 v_data;varying float v_visibility; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define mediump float radius +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define highp vec4 stroke_color +#pragma mapbox: define mediump float stroke_width +#pragma mapbox: define lowp float stroke_opacity +void main(void) { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize mediump float radius +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize highp vec4 stroke_color +#pragma mapbox: initialize mediump float stroke_width +#pragma mapbox: initialize lowp float stroke_opacity +vec2 extrude=vec2(mod(a_pos,2.0)*2.0-1.0);vec2 circle_center=floor(a_pos*0.5);float ele=get_elevation(circle_center);v_visibility=calculate_visibility(u_matrix*vec4(circle_center,ele,1.0));if (u_pitch_with_map) {vec2 corner_position=circle_center;if (u_scale_with_map) {corner_position+=extrude*(radius+stroke_width)*u_extrude_scale;} else {vec4 projected_center=u_matrix*vec4(circle_center,0,1);corner_position+=extrude*(radius+stroke_width)*u_extrude_scale*(projected_center.w/u_camera_to_center_distance);}gl_Position=u_matrix*vec4(corner_position,ele,1);} else {gl_Position=u_matrix*vec4(circle_center,ele,1);if (u_scale_with_map) {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*u_camera_to_center_distance;} else {gl_Position.xy+=extrude*(radius+stroke_width)*u_extrude_scale*gl_Position.w;}}float antialiasblur=-max(1.0/u_device_pixel_ratio/(radius+stroke_width),blur);v_data=vec3(extrude.x,extrude.y,antialiasblur);}`),clippingMask:kt("void main() {gl_FragColor=vec4(1.0);}","attribute vec2 a_pos;uniform mat4 u_matrix;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);}"),heatmap:kt(`uniform highp float u_intensity;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#define GAUSS_COEF 0.3989422804014327 +void main() { +#pragma mapbox: initialize highp float weight +float d=-0.5*3.0*3.0*dot(v_extrude,v_extrude);float val=weight*u_intensity*GAUSS_COEF*exp(d);gl_FragColor=vec4(val,1.0,1.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform float u_extrude_scale;uniform float u_opacity;uniform float u_intensity;attribute vec2 a_pos;varying vec2 v_extrude; +#pragma mapbox: define highp float weight +#pragma mapbox: define mediump float radius +const highp float ZERO=1.0/255.0/16.0; +#define GAUSS_COEF 0.3989422804014327 +void main(void) { +#pragma mapbox: initialize highp float weight +#pragma mapbox: initialize mediump float radius +vec2 unscaled_extrude=vec2(mod(a_pos,2.0)*2.0-1.0);float S=sqrt(-2.0*log(ZERO/weight/u_intensity/GAUSS_COEF))/3.0;v_extrude=S*unscaled_extrude;vec2 extrude=v_extrude*radius*u_extrude_scale;vec4 pos=vec4(floor(a_pos*0.5)+extrude,get_elevation(floor(a_pos*0.5)),1);gl_Position=u_matrix*pos;}`),heatmapTexture:kt(`uniform sampler2D u_image;uniform sampler2D u_color_ramp;uniform float u_opacity;varying vec2 v_pos;void main() {float t=texture2D(u_image,v_pos).r;vec4 color=texture2D(u_color_ramp,vec2(t,0.5));gl_FragColor=color*u_opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(0.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_world;attribute vec2 a_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos*u_world,0,1);v_pos.x=a_pos.x;v_pos.y=1.0-a_pos.y;}"),collisionBox:kt("varying float v_placed;varying float v_notUsed;void main() {float alpha=0.5;gl_FragColor=vec4(1.0,0.0,0.0,1.0)*alpha;if (v_placed > 0.5) {gl_FragColor=vec4(0.0,0.0,1.0,0.5)*alpha;}if (v_notUsed > 0.5) {gl_FragColor*=.1;}}","attribute vec2 a_anchor_pos;attribute vec2 a_placed;attribute vec2 a_box_real;uniform mat4 u_matrix;uniform vec2 u_pixel_extrude_scale;varying float v_placed;varying float v_notUsed;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);}void main() {gl_Position=projectTileWithElevation(a_anchor_pos,get_elevation(a_anchor_pos));gl_Position.xy=((a_box_real+0.5)*u_pixel_extrude_scale*2.0-1.0)*vec2(1.0,-1.0)*gl_Position.w;if (gl_Position.z/gl_Position.w < 1.1) {gl_Position.z=0.5;}v_placed=a_placed.x;v_notUsed=a_placed.y;}"),collisionCircle:kt("varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;void main() {float alpha=0.5*min(v_perspective_ratio,1.0);float stroke_radius=0.9*max(v_perspective_ratio,1.0);float distance_to_center=length(v_extrude);float distance_to_edge=abs(distance_to_center-v_radius);float opacity_t=smoothstep(-stroke_radius,0.0,-distance_to_edge);vec4 color=mix(vec4(0.0,0.0,1.0,0.5),vec4(1.0,0.0,0.0,1.0),v_collision);gl_FragColor=color*alpha*opacity_t;}","attribute vec2 a_pos;attribute float a_radius;attribute vec2 a_flags;uniform mat4 u_matrix;uniform mat4 u_inv_matrix;uniform vec2 u_viewport_size;uniform float u_camera_to_center_distance;varying float v_radius;varying vec2 v_extrude;varying float v_perspective_ratio;varying float v_collision;vec3 toTilePosition(vec2 screenPos) {vec4 rayStart=u_inv_matrix*vec4(screenPos,-1.0,1.0);vec4 rayEnd =u_inv_matrix*vec4(screenPos, 1.0,1.0);rayStart.xyz/=rayStart.w;rayEnd.xyz /=rayEnd.w;highp float t=(0.0-rayStart.z)/(rayEnd.z-rayStart.z);return mix(rayStart.xyz,rayEnd.xyz,t);}void main() {vec2 quadCenterPos=a_pos;float radius=a_radius;float collision=a_flags.x;float vertexIdx=a_flags.y;vec2 quadVertexOffset=vec2(mix(-1.0,1.0,float(vertexIdx >=2.0)),mix(-1.0,1.0,float(vertexIdx >=1.0 && vertexIdx <=2.0)));vec2 quadVertexExtent=quadVertexOffset*radius;vec3 tilePos=toTilePosition(quadCenterPos);vec4 clipPos=u_matrix*vec4(tilePos,1.0);highp float camera_to_anchor_distance=clipPos.w;highp float collision_perspective_ratio=clamp(0.5+0.5*(u_camera_to_center_distance/camera_to_anchor_distance),0.0,4.0);float padding_factor=1.2;v_radius=radius;v_extrude=quadVertexExtent*padding_factor;v_perspective_ratio=collision_perspective_ratio;v_collision=collision;gl_Position=vec4(clipPos.xyz/clipPos.w,1.0)+vec4(quadVertexExtent*padding_factor/u_viewport_size*2.0,0.0,0.0);}"),debug:kt("uniform highp vec4 u_color;uniform sampler2D u_overlay;varying vec2 v_uv;void main() {vec4 overlay_color=texture2D(u_overlay,v_uv);gl_FragColor=mix(u_color,overlay_color,overlay_color.a);}","attribute vec2 a_pos;varying vec2 v_uv;uniform mat4 u_matrix;uniform float u_overlay_scale;void main() {v_uv=a_pos/8192.0;gl_Position=u_matrix*vec4(a_pos*u_overlay_scale,get_elevation(a_pos),1);}"),fill:kt(`#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_FragColor=color*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);}`),fillOutline:kt(`varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=outline_color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec2 a_pos;uniform mat4 u_matrix;uniform vec2 u_world;varying vec2 v_pos; +#pragma mapbox: define highp vec4 outline_color +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 outline_color +#pragma mapbox: initialize lowp float opacity +gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillOutlinePattern:kt(`uniform vec2 u_texsize;uniform sampler2D u_image;uniform float u_fade;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);float dist=length(v_pos-gl_FragCoord.xy);float alpha=1.0-smoothstep(0.0,1.0,dist);gl_FragColor=mix(color1,color2,u_fade)*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_world;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec2 v_pos; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;gl_Position=u_matrix*vec4(a_pos,0,1);vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,a_pos);v_pos=(gl_Position.xy/gl_Position.w+1.0)/2.0*u_world;}`),fillPattern:kt(`#ifdef GL_ES +precision highp float; +#endif +uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);gl_FragColor=mix(color1,color2,u_fade)*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform vec3 u_scale;attribute vec2 a_pos;varying vec2 v_pos_a;varying vec2 v_pos_b; +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;gl_Position=u_matrix*vec4(a_pos,0,1);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileZoomRatio,a_pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileZoomRatio,a_pos);}`),fillExtrusion:kt(`varying vec4 v_color;void main() {gl_FragColor=v_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;uniform float u_vertical_gradient;uniform lowp float u_opacity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec4 v_color; +#pragma mapbox: define highp float base +#pragma mapbox: define highp float height +#pragma mapbox: define highp vec4 color +void main() { +#pragma mapbox: initialize highp float base +#pragma mapbox: initialize highp float height +#pragma mapbox: initialize highp vec4 color +vec3 normal=a_normal_ed.xyz; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);gl_Position=u_matrix*vec4(a_pos,t > 0.0 ? height : base,1);float colorvalue=color.r*0.2126+color.g*0.7152+color.b*0.0722;v_color=vec4(0.0,0.0,0.0,1.0);vec4 ambientlight=vec4(0.03,0.03,0.03,1.0);color+=ambientlight;float directional=clamp(dot(normal/16384.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((1.0-colorvalue+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_color.r+=clamp(color.r*directional*u_lightcolor.r,mix(0.0,0.3,1.0-u_lightcolor.r),1.0);v_color.g+=clamp(color.g*directional*u_lightcolor.g,mix(0.0,0.3,1.0-u_lightcolor.g),1.0);v_color.b+=clamp(color.b*directional*u_lightcolor.b,mix(0.0,0.3,1.0-u_lightcolor.b),1.0);v_color*=u_opacity;}`),fillExtrusionPattern:kt(`uniform vec2 u_texsize;uniform float u_fade;uniform sampler2D u_image;varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;vec2 imagecoord=mod(v_pos_a,1.0);vec2 pos=mix(pattern_tl_a/u_texsize,pattern_br_a/u_texsize,imagecoord);vec4 color1=texture2D(u_image,pos);vec2 imagecoord_b=mod(v_pos_b,1.0);vec2 pos2=mix(pattern_tl_b/u_texsize,pattern_br_b/u_texsize,imagecoord_b);vec4 color2=texture2D(u_image,pos2);vec4 mixedColor=mix(color1,color2,u_fade);gl_FragColor=mixedColor*v_lighting; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`uniform mat4 u_matrix;uniform vec2 u_pixel_coord_upper;uniform vec2 u_pixel_coord_lower;uniform float u_height_factor;uniform vec3 u_scale;uniform float u_vertical_gradient;uniform lowp float u_opacity;uniform vec3 u_lightcolor;uniform lowp vec3 u_lightpos;uniform lowp float u_lightintensity;attribute vec2 a_pos;attribute vec4 a_normal_ed; +#ifdef TERRAIN3D +attribute vec2 a_centroid; +#endif +varying vec2 v_pos_a;varying vec2 v_pos_b;varying vec4 v_lighting; +#pragma mapbox: define lowp float base +#pragma mapbox: define lowp float height +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float base +#pragma mapbox: initialize lowp float height +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec3 normal=a_normal_ed.xyz;float edgedistance=a_normal_ed.w;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to; +#ifdef TERRAIN3D +float height_terrain3d_offset=get_elevation(a_centroid);float base_terrain3d_offset=height_terrain3d_offset-(base > 0.0 ? 0.0 : 10.0); +#else +float height_terrain3d_offset=0.0;float base_terrain3d_offset=0.0; +#endif +base=max(0.0,base)+base_terrain3d_offset;height=max(0.0,height)+height_terrain3d_offset;float t=mod(normal.x,2.0);float z=t > 0.0 ? height : base;gl_Position=u_matrix*vec4(a_pos,z,1);vec2 pos=normal.x==1.0 && normal.y==0.0 && normal.z==16384.0 +? a_pos +: vec2(edgedistance,z*u_height_factor);v_pos_a=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,fromScale*display_size_a,tileRatio,pos);v_pos_b=get_pattern_pos(u_pixel_coord_upper,u_pixel_coord_lower,toScale*display_size_b,tileRatio,pos);v_lighting=vec4(0.0,0.0,0.0,1.0);float directional=clamp(dot(normal/16383.0,u_lightpos),0.0,1.0);directional=mix((1.0-u_lightintensity),max((0.5+u_lightintensity),1.0),directional);if (normal.y !=0.0) {directional*=((1.0-u_vertical_gradient)+(u_vertical_gradient*clamp((t+base)*pow(height/150.0,0.5),mix(0.7,0.98,1.0-u_lightintensity),1.0)));}v_lighting.rgb+=clamp(directional*u_lightcolor,mix(vec3(0.0),vec3(0.3),1.0-u_lightcolor),vec3(1.0));v_lighting*=u_opacity;}`),hillshadePrepare:kt(`#ifdef GL_ES +precision highp float; +#endif +uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_dimension;uniform float u_zoom;uniform vec4 u_unpack;float getElevation(vec2 coord,float bias) {vec4 data=texture2D(u_image,coord)*255.0;data.a=-1.0;return dot(data,u_unpack)/4.0;}void main() {vec2 epsilon=1.0/u_dimension;float a=getElevation(v_pos+vec2(-epsilon.x,-epsilon.y),0.0);float b=getElevation(v_pos+vec2(0,-epsilon.y),0.0);float c=getElevation(v_pos+vec2(epsilon.x,-epsilon.y),0.0);float d=getElevation(v_pos+vec2(-epsilon.x,0),0.0);float e=getElevation(v_pos,0.0);float f=getElevation(v_pos+vec2(epsilon.x,0),0.0);float g=getElevation(v_pos+vec2(-epsilon.x,epsilon.y),0.0);float h=getElevation(v_pos+vec2(0,epsilon.y),0.0);float i=getElevation(v_pos+vec2(epsilon.x,epsilon.y),0.0);float exaggerationFactor=u_zoom < 2.0 ? 0.4 : u_zoom < 4.5 ? 0.35 : 0.3;float exaggeration=u_zoom < 15.0 ? (u_zoom-15.0)*exaggerationFactor : 0.0;vec2 deriv=vec2((c+f+f+i)-(a+d+d+g),(g+h+h+i)-(a+b+b+c))/pow(2.0,exaggeration+(19.2562-u_zoom));gl_FragColor=clamp(vec4(deriv.x/2.0+0.5,deriv.y/2.0+0.5,1.0,1.0),0.0,1.0); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_dimension;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);highp vec2 epsilon=1.0/u_dimension;float scale=(u_dimension.x-2.0)/u_dimension.x;v_pos=(a_texture_pos/8192.0)*scale+epsilon;}"),hillshade:kt(`uniform sampler2D u_image;varying vec2 v_pos;uniform vec2 u_latrange;uniform vec2 u_light;uniform vec4 u_shadow;uniform vec4 u_highlight;uniform vec4 u_accent; +#define PI 3.141592653589793 +void main() {vec4 pixel=texture2D(u_image,v_pos);vec2 deriv=((pixel.rg*2.0)-1.0);float scaleFactor=cos(radians((u_latrange[0]-u_latrange[1])*(1.0-v_pos.y)+u_latrange[1]));float slope=atan(1.25*length(deriv)/scaleFactor);float aspect=deriv.x !=0.0 ? atan(deriv.y,-deriv.x) : PI/2.0*(deriv.y > 0.0 ? 1.0 :-1.0);float intensity=u_light.x;float azimuth=u_light.y+PI;float base=1.875-intensity*1.75;float maxValue=0.5*PI;float scaledSlope=intensity !=0.5 ? ((pow(base,slope)-1.0)/(pow(base,maxValue)-1.0))*maxValue : slope;float accent=cos(scaledSlope);vec4 accent_color=(1.0-accent)*u_accent*clamp(intensity*2.0,0.0,1.0);float shade=abs(mod((aspect+azimuth)/PI+0.5,2.0)-1.0);vec4 shade_color=mix(u_shadow,u_highlight,shade)*sin(scaledSlope)*clamp(intensity*2.0,0.0,1.0);gl_FragColor=accent_color*(1.0-shade_color.a)+shade_color; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos=a_texture_pos/8192.0;}"),line:kt(`uniform lowp float u_device_pixel_ratio;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform vec2 u_units_to_pixels;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp float v_linesofar; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;v_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*2.0;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),lineGradient:kt(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;varying vec2 v_width2;varying vec2 v_normal;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);vec4 color=texture2D(u_image,v_uv);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +attribute vec2 a_pos_normal;attribute vec4 a_data;attribute float a_uv_x;attribute float a_split_index;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_units_to_pixels;uniform float u_image_height;varying vec2 v_normal;varying vec2 v_width2;varying float v_gamma_scale;varying highp vec2 v_uv; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;highp float texel_height=1.0/u_image_height;highp float half_texel_height=0.5*texel_height;v_uv=vec2(a_uv_x,a_split_index*texel_height-half_texel_height);vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_width2=vec2(outset,inset);}`),linePattern:kt(`#ifdef GL_ES +precision highp float; +#endif +uniform lowp float u_device_pixel_ratio;uniform vec2 u_texsize;uniform float u_fade;uniform mediump vec3 u_scale;uniform sampler2D u_image;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +vec2 pattern_tl_a=pattern_from.xy;vec2 pattern_br_a=pattern_from.zw;vec2 pattern_tl_b=pattern_to.xy;vec2 pattern_br_b=pattern_to.zw;float tileZoomRatio=u_scale.x;float fromScale=u_scale.y;float toScale=u_scale.z;vec2 display_size_a=(pattern_br_a-pattern_tl_a)/pixel_ratio_from;vec2 display_size_b=(pattern_br_b-pattern_tl_b)/pixel_ratio_to;vec2 pattern_size_a=vec2(display_size_a.x*fromScale/tileZoomRatio,display_size_a.y);vec2 pattern_size_b=vec2(display_size_b.x*toScale/tileZoomRatio,display_size_b.y);float aspect_a=display_size_a.y/v_width;float aspect_b=display_size_b.y/v_width;float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float x_a=mod(v_linesofar/pattern_size_a.x*aspect_a,1.0);float x_b=mod(v_linesofar/pattern_size_b.x*aspect_b,1.0);float y=0.5*v_normal.y+0.5;vec2 texel_size=1.0/u_texsize;vec2 pos_a=mix(pattern_tl_a*texel_size-texel_size,pattern_br_a*texel_size+texel_size,vec2(x_a,y));vec2 pos_b=mix(pattern_tl_b*texel_size-texel_size,pattern_br_b*texel_size+texel_size,vec2(x_b,y));vec4 color=mix(texture2D(u_image,pos_a),texture2D(u_image,pos_b),u_fade);gl_FragColor=color*alpha*opacity; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform vec2 u_units_to_pixels;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;varying vec2 v_normal;varying vec2 v_width2;varying float v_linesofar;varying float v_gamma_scale;varying float v_width; +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +#pragma mapbox: define lowp vec4 pattern_from +#pragma mapbox: define lowp vec4 pattern_to +#pragma mapbox: define lowp float pixel_ratio_from +#pragma mapbox: define lowp float pixel_ratio_to +void main() { +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +#pragma mapbox: initialize mediump vec4 pattern_from +#pragma mapbox: initialize mediump vec4 pattern_to +#pragma mapbox: initialize lowp float pixel_ratio_from +#pragma mapbox: initialize lowp float pixel_ratio_to +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_linesofar=a_linesofar;v_width2=vec2(outset,inset);v_width=floorwidth;}`),lineSDF:kt(`uniform lowp float u_device_pixel_ratio;uniform sampler2D u_image;uniform float u_sdfgamma;uniform float u_mix;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float dist=length(v_normal)*v_width2.s;float blur2=(blur+1.0/u_device_pixel_ratio)*v_gamma_scale;float alpha=clamp(min(dist-(v_width2.t-blur2),v_width2.s-dist)/blur2,0.0,1.0);float sdfdist_a=texture2D(u_image,v_tex_a).a;float sdfdist_b=texture2D(u_image,v_tex_b).a;float sdfdist=mix(sdfdist_a,sdfdist_b,u_mix);alpha*=smoothstep(0.5-u_sdfgamma/floorwidth,0.5+u_sdfgamma/floorwidth,sdfdist);gl_FragColor=color*(alpha*opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,` +#define scale 0.015873016 +#define LINE_DISTANCE_SCALE 2.0 +attribute vec2 a_pos_normal;attribute vec4 a_data;uniform mat4 u_matrix;uniform mediump float u_ratio;uniform lowp float u_device_pixel_ratio;uniform vec2 u_patternscale_a;uniform float u_tex_y_a;uniform vec2 u_patternscale_b;uniform float u_tex_y_b;uniform vec2 u_units_to_pixels;varying vec2 v_normal;varying vec2 v_width2;varying vec2 v_tex_a;varying vec2 v_tex_b;varying float v_gamma_scale; +#pragma mapbox: define highp vec4 color +#pragma mapbox: define lowp float blur +#pragma mapbox: define lowp float opacity +#pragma mapbox: define mediump float gapwidth +#pragma mapbox: define lowp float offset +#pragma mapbox: define mediump float width +#pragma mapbox: define lowp float floorwidth +void main() { +#pragma mapbox: initialize highp vec4 color +#pragma mapbox: initialize lowp float blur +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize mediump float gapwidth +#pragma mapbox: initialize lowp float offset +#pragma mapbox: initialize mediump float width +#pragma mapbox: initialize lowp float floorwidth +float ANTIALIASING=1.0/u_device_pixel_ratio/2.0;vec2 a_extrude=a_data.xy-128.0;float a_direction=mod(a_data.z,4.0)-1.0;float a_linesofar=(floor(a_data.z/4.0)+a_data.w*64.0)*LINE_DISTANCE_SCALE;vec2 pos=floor(a_pos_normal*0.5);mediump vec2 normal=a_pos_normal-2.0*pos;normal.y=normal.y*2.0-1.0;v_normal=normal;gapwidth=gapwidth/2.0;float halfwidth=width/2.0;offset=-1.0*offset;float inset=gapwidth+(gapwidth > 0.0 ? ANTIALIASING : 0.0);float outset=gapwidth+halfwidth*(gapwidth > 0.0 ? 2.0 : 1.0)+(halfwidth==0.0 ? 0.0 : ANTIALIASING);mediump vec2 dist=outset*a_extrude*scale;mediump float u=0.5*a_direction;mediump float t=1.0-abs(u);mediump vec2 offset2=offset*a_extrude*scale*normal.y*mat2(t,-u,u,t);vec4 projected_extrude=u_matrix*vec4(dist/u_ratio,0.0,0.0);gl_Position=u_matrix*vec4(pos+offset2/u_ratio,0.0,1.0)+projected_extrude; +#ifdef TERRAIN3D +v_gamma_scale=1.0; +#else +float extrude_length_without_perspective=length(dist);float extrude_length_with_perspective=length(projected_extrude.xy/gl_Position.w*u_units_to_pixels);v_gamma_scale=extrude_length_without_perspective/extrude_length_with_perspective; +#endif +v_tex_a=vec2(a_linesofar*u_patternscale_a.x/floorwidth,normal.y*u_patternscale_a.y+u_tex_y_a);v_tex_b=vec2(a_linesofar*u_patternscale_b.x/floorwidth,normal.y*u_patternscale_b.y+u_tex_y_b);v_width2=vec2(outset,inset);}`),raster:kt(`uniform float u_fade_t;uniform float u_opacity;uniform sampler2D u_image0;uniform sampler2D u_image1;varying vec2 v_pos0;varying vec2 v_pos1;uniform float u_brightness_low;uniform float u_brightness_high;uniform float u_saturation_factor;uniform float u_contrast_factor;uniform vec3 u_spin_weights;void main() {vec4 color0=texture2D(u_image0,v_pos0);vec4 color1=texture2D(u_image1,v_pos1);if (color0.a > 0.0) {color0.rgb=color0.rgb/color0.a;}if (color1.a > 0.0) {color1.rgb=color1.rgb/color1.a;}vec4 color=mix(color0,color1,u_fade_t);color.a*=u_opacity;vec3 rgb=color.rgb;rgb=vec3(dot(rgb,u_spin_weights.xyz),dot(rgb,u_spin_weights.zxy),dot(rgb,u_spin_weights.yzx));float average=(color.r+color.g+color.b)/3.0;rgb+=(average-rgb)*u_saturation_factor;rgb=(rgb-0.5)*u_contrast_factor+0.5;vec3 u_high_vec=vec3(u_brightness_low,u_brightness_low,u_brightness_low);vec3 u_low_vec=vec3(u_brightness_high,u_brightness_high,u_brightness_high);gl_FragColor=vec4(mix(u_high_vec,u_low_vec,rgb)*color.a,color.a); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,"uniform mat4 u_matrix;uniform vec2 u_tl_parent;uniform float u_scale_parent;uniform float u_buffer_scale;attribute vec2 a_pos;attribute vec2 a_texture_pos;varying vec2 v_pos0;varying vec2 v_pos1;void main() {gl_Position=u_matrix*vec4(a_pos,0,1);v_pos0=(((a_texture_pos/8192.0)-0.5)/u_buffer_scale )+0.5;v_pos1=(v_pos0*u_scale_parent)+u_tl_parent;}"),symbolIcon:kt(`uniform sampler2D u_texture;varying vec2 v_tex;varying float v_fade_opacity; +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +lowp float alpha=opacity*v_fade_opacity;gl_FragColor=texture2D(u_texture,v_tex)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform highp float u_camera_to_center_distance;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform float u_fade_change;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform vec2 u_texsize;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_tex;varying float v_fade_opacity;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define lowp float opacity +void main() { +#pragma mapbox: initialize lowp float opacity +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;vec2 a_minFontScale=a_pixeloffset.zw/256.0;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*max(a_minFontScale,fontScale)+a_pxoffset/16.0)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}gl_Position=finalPos;v_tex=a_tex/u_texsize;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float visibility=calculate_visibility(projectedPoint);v_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));}`),symbolSDF:kt(`#define SDF_PX 8.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;uniform bool u_is_text;varying vec2 v_data0;varying vec3 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float EDGE_GAMMA=0.105/u_device_pixel_ratio;vec2 tex=v_data0.xy;float gamma_scale=v_data1.x;float size=v_data1.y;float fade_opacity=v_data1[2];float fontScale=u_is_text ? size/24.0 : size;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float inner_edge=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);inner_edge=inner_edge+gamma*gamma_scale;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(inner_edge-gamma_scaled,inner_edge+gamma_scaled,dist);if (u_is_halo) {lowp float halo_edge=(6.0-halo_width/fontScale)/SDF_PX;alpha=min(smoothstep(halo_edge-gamma_scaled,halo_edge+gamma_scaled,dist),1.0-alpha);}gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec4 a_pixeloffset;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec2 v_data0;varying vec3 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);vec2 a_pxoffset=a_pixeloffset.xy;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=u_is_text ? size/24.0 : size;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale+a_pxoffset)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0=a_tex/u_texsize;v_data1=vec3(gamma_scale,size,interpolated_fade_opacity);}`),symbolTextAndIcon:kt(`#define SDF_PX 8.0 +#define SDF 1.0 +#define ICON 0.0 +uniform bool u_is_halo;uniform sampler2D u_texture;uniform sampler2D u_texture_icon;uniform highp float u_gamma_scale;uniform lowp float u_device_pixel_ratio;varying vec4 v_data0;varying vec4 v_data1; +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +float fade_opacity=v_data1[2];if (v_data1.w==ICON) {vec2 tex_icon=v_data0.zw;lowp float alpha=opacity*fade_opacity;gl_FragColor=texture2D(u_texture_icon,tex_icon)*alpha; +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +return;}vec2 tex=v_data0.xy;float EDGE_GAMMA=0.105/u_device_pixel_ratio;float gamma_scale=v_data1.x;float size=v_data1.y;float fontScale=size/24.0;lowp vec4 color=fill_color;highp float gamma=EDGE_GAMMA/(fontScale*u_gamma_scale);lowp float buff=(256.0-64.0)/256.0;if (u_is_halo) {color=halo_color;gamma=(halo_blur*1.19/SDF_PX+EDGE_GAMMA)/(fontScale*u_gamma_scale);buff=(6.0-halo_width/fontScale)/SDF_PX;}lowp float dist=texture2D(u_texture,tex).a;highp float gamma_scaled=gamma*gamma_scale;highp float alpha=smoothstep(buff-gamma_scaled,buff+gamma_scaled,dist);gl_FragColor=color*(alpha*opacity*fade_opacity); +#ifdef OVERDRAW_INSPECTOR +gl_FragColor=vec4(1.0); +#endif +}`,`attribute vec4 a_pos_offset;attribute vec4 a_data;attribute vec3 a_projected_pos;attribute float a_fade_opacity;uniform bool u_is_size_zoom_constant;uniform bool u_is_size_feature_constant;uniform highp float u_size_t;uniform highp float u_size;uniform mat4 u_matrix;uniform mat4 u_label_plane_matrix;uniform mat4 u_coord_matrix;uniform bool u_is_text;uniform bool u_pitch_with_map;uniform highp float u_pitch;uniform bool u_rotate_symbol;uniform highp float u_aspect_ratio;uniform highp float u_camera_to_center_distance;uniform float u_fade_change;uniform vec2 u_texsize;uniform vec2 u_texsize_icon;uniform bool u_is_along_line;uniform bool u_is_variable_anchor;uniform vec2 u_translation;uniform float u_pitched_scale;varying vec4 v_data0;varying vec4 v_data1;vec4 projectTileWithElevation(vec2 posInTile,float elevation) {return u_matrix*vec4(posInTile,elevation,1.0);} +#pragma mapbox: define highp vec4 fill_color +#pragma mapbox: define highp vec4 halo_color +#pragma mapbox: define lowp float opacity +#pragma mapbox: define lowp float halo_width +#pragma mapbox: define lowp float halo_blur +void main() { +#pragma mapbox: initialize highp vec4 fill_color +#pragma mapbox: initialize highp vec4 halo_color +#pragma mapbox: initialize lowp float opacity +#pragma mapbox: initialize lowp float halo_width +#pragma mapbox: initialize lowp float halo_blur +vec2 a_pos=a_pos_offset.xy;vec2 a_offset=a_pos_offset.zw;vec2 a_tex=a_data.xy;vec2 a_size=a_data.zw;float a_size_min=floor(a_size[0]*0.5);float is_sdf=a_size[0]-2.0*a_size_min;float ele=get_elevation(a_pos);highp float segment_angle=-a_projected_pos[2];float size;if (!u_is_size_zoom_constant && !u_is_size_feature_constant) {size=mix(a_size_min,a_size[1],u_size_t)/128.0;} else if (u_is_size_zoom_constant && !u_is_size_feature_constant) {size=a_size_min/128.0;} else {size=u_size;}vec2 translated_a_pos=a_pos+u_translation;vec4 projectedPoint=projectTileWithElevation(translated_a_pos,ele);highp float camera_to_anchor_distance=projectedPoint.w;highp float distance_ratio=u_pitch_with_map ? +camera_to_anchor_distance/u_camera_to_center_distance : +u_camera_to_center_distance/camera_to_anchor_distance;highp float perspective_ratio=clamp(0.5+0.5*distance_ratio,0.0,4.0);size*=perspective_ratio;float fontScale=size/24.0;highp float symbol_rotation=0.0;if (u_rotate_symbol) {vec4 offsetProjectedPoint=projectTileWithElevation(translated_a_pos+vec2(1,0),ele);vec2 a=projectedPoint.xy/projectedPoint.w;vec2 b=offsetProjectedPoint.xy/offsetProjectedPoint.w;symbol_rotation=atan((b.y-a.y)/u_aspect_ratio,b.x-a.x);}highp float angle_sin=sin(segment_angle+symbol_rotation);highp float angle_cos=cos(segment_angle+symbol_rotation);mat2 rotation_matrix=mat2(angle_cos,-1.0*angle_sin,angle_sin,angle_cos);vec4 projected_pos;if (u_is_along_line || u_is_variable_anchor) {projected_pos=vec4(a_projected_pos.xy,ele,1.0);} else if (u_pitch_with_map) {projected_pos=u_label_plane_matrix*vec4(a_projected_pos.xy+u_translation,ele,1.0);} else {projected_pos=u_label_plane_matrix*projectTileWithElevation(a_projected_pos.xy+u_translation,ele);}float z=float(u_pitch_with_map)*projected_pos.z/projected_pos.w;float projectionScaling=1.0;vec4 finalPos=u_coord_matrix*vec4(projected_pos.xy/projected_pos.w+rotation_matrix*(a_offset/32.0*fontScale)*projectionScaling,z,1.0);if(u_pitch_with_map) {finalPos=projectTileWithElevation(finalPos.xy,finalPos.z);}float gamma_scale=finalPos.w;gl_Position=finalPos;vec2 fade_opacity=unpack_opacity(a_fade_opacity);float visibility=calculate_visibility(projectedPoint);float fade_change=fade_opacity[1] > 0.5 ? u_fade_change :-u_fade_change;float interpolated_fade_opacity=max(0.0,min(visibility,fade_opacity[0]+fade_change));v_data0.xy=a_tex/u_texsize;v_data0.zw=a_tex/u_texsize_icon;v_data1=vec4(gamma_scale,size,interpolated_fade_opacity,is_sdf);}`),terrain:kt("uniform sampler2D u_texture;uniform vec4 u_fog_color;uniform vec4 u_horizon_color;uniform float u_fog_ground_blend;uniform float u_fog_ground_blend_opacity;uniform float u_horizon_fog_blend;varying vec2 v_texture_pos;varying float v_fog_depth;const float gamma=2.2;vec4 gammaToLinear(vec4 color) {return pow(color,vec4(gamma));}vec4 linearToGamma(vec4 color) {return pow(color,vec4(1.0/gamma));}void main() {vec4 surface_color=texture2D(u_texture,v_texture_pos);if (v_fog_depth > u_fog_ground_blend) {vec4 surface_color_linear=gammaToLinear(surface_color);float blend_color=smoothstep(0.0,1.0,max((v_fog_depth-u_horizon_fog_blend)/(1.0-u_horizon_fog_blend),0.0));vec4 fog_horizon_color_linear=mix(gammaToLinear(u_fog_color),gammaToLinear(u_horizon_color),blend_color);float factor_fog=max(v_fog_depth-u_fog_ground_blend,0.0)/(1.0-u_fog_ground_blend);gl_FragColor=linearToGamma(mix(surface_color_linear,fog_horizon_color_linear,pow(factor_fog,2.0)*u_fog_ground_blend_opacity));} else {gl_FragColor=surface_color;}}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform mat4 u_fog_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;varying float v_fog_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);vec4 pos=u_fog_matrix*vec4(a_pos3d.xy,ele,1.0);v_fog_depth=pos.z/pos.w*0.5+0.5;}"),terrainDepth:kt("varying float v_depth;const highp vec4 bitSh=vec4(256.*256.*256.,256.*256.,256.,1.);const highp vec4 bitMsk=vec4(0.,vec3(1./256.0));highp vec4 pack(highp float value) {highp vec4 comp=fract(value*bitSh);comp-=comp.xxyz*bitMsk;return comp;}void main() {gl_FragColor=pack(v_depth);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying float v_depth;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);v_depth=gl_Position.z/gl_Position.w;}"),terrainCoords:kt("precision mediump float;uniform sampler2D u_texture;uniform float u_terrain_coords_id;varying vec2 v_texture_pos;void main() {vec4 rgba=texture2D(u_texture,v_texture_pos);gl_FragColor=vec4(rgba.r,rgba.g,rgba.b,u_terrain_coords_id);}","attribute vec3 a_pos3d;uniform mat4 u_matrix;uniform float u_ele_delta;varying vec2 v_texture_pos;void main() {float ele=get_elevation(a_pos3d.xy);float ele_delta=a_pos3d.z==1.0 ? u_ele_delta : 0.0;v_texture_pos=a_pos3d.xy/8192.0;gl_Position=u_matrix*vec4(a_pos3d.xy,ele-ele_delta,1.0);}"),sky:kt("uniform vec4 u_sky_color;uniform vec4 u_horizon_color;uniform float u_horizon;uniform float u_sky_horizon_blend;void main() {float y=gl_FragCoord.y;if (y > u_horizon) {float blend=y-u_horizon;if (blend < u_sky_horizon_blend) {gl_FragColor=mix(u_sky_color,u_horizon_color,pow(1.0-blend/u_sky_horizon_blend,2.0));} else {gl_FragColor=u_sky_color;}}}","attribute vec2 a_pos;void main() {gl_Position=vec4(a_pos,1.0,1.0);}")};function kt(Oe,R){let ae=/#pragma mapbox: ([\w]+) ([\w]+) ([\w]+) ([\w]+)/g,we=R.match(/attribute ([\w]+) ([\w]+)/g),Se=Oe.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),De=R.match(/uniform ([\w]+) ([\w]+)([\s]*)([\w]*)/g),ft=De?De.concat(Se):Se,bt={};return{fragmentSource:Oe=Oe.replace(ae,(Dt,Yt,cr,hr,jr)=>(bt[jr]=!0,Yt==="define"?` +#ifndef HAS_UNIFORM_u_${jr} +varying ${cr} ${hr} ${jr}; +#else +uniform ${cr} ${hr} u_${jr}; +#endif +`:` +#ifdef HAS_UNIFORM_u_${jr} + ${cr} ${hr} ${jr} = u_${jr}; +#endif +`)),vertexSource:R=R.replace(ae,(Dt,Yt,cr,hr,jr)=>{let ea=hr==="float"?"vec2":"vec4",qe=jr.match(/color/)?"color":ea;return bt[jr]?Yt==="define"?` +#ifndef HAS_UNIFORM_u_${jr} +uniform lowp float u_${jr}_t; +attribute ${cr} ${ea} a_${jr}; +varying ${cr} ${hr} ${jr}; +#else +uniform ${cr} ${hr} u_${jr}; +#endif +`:qe==="vec4"?` +#ifndef HAS_UNIFORM_u_${jr} + ${jr} = a_${jr}; +#else + ${cr} ${hr} ${jr} = u_${jr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${jr} + ${jr} = unpack_mix_${qe}(a_${jr}, u_${jr}_t); +#else + ${cr} ${hr} ${jr} = u_${jr}; +#endif +`:Yt==="define"?` +#ifndef HAS_UNIFORM_u_${jr} +uniform lowp float u_${jr}_t; +attribute ${cr} ${ea} a_${jr}; +#else +uniform ${cr} ${hr} u_${jr}; +#endif +`:qe==="vec4"?` +#ifndef HAS_UNIFORM_u_${jr} + ${cr} ${hr} ${jr} = a_${jr}; +#else + ${cr} ${hr} ${jr} = u_${jr}; +#endif +`:` +#ifndef HAS_UNIFORM_u_${jr} + ${cr} ${hr} ${jr} = unpack_mix_${qe}(a_${jr}, u_${jr}_t); +#else + ${cr} ${hr} ${jr} = u_${jr}; +#endif +`}),staticAttributes:we,staticUniforms:ft}}class ir{constructor(){this.boundProgram=null,this.boundLayoutVertexBuffer=null,this.boundPaintVertexBuffers=[],this.boundIndexBuffer=null,this.boundVertexOffset=null,this.boundDynamicVertexBuffer=null,this.vao=null}bind(R,ae,we,Se,De,ft,bt,Dt,Yt){this.context=R;let cr=this.boundPaintVertexBuffers.length!==Se.length;for(let hr=0;!cr&&hr({u_matrix:Oe,u_texture:0,u_ele_delta:R,u_fog_matrix:ae,u_fog_color:we?we.properties.get("fog-color"):t.aM.white,u_fog_ground_blend:we?we.properties.get("fog-ground-blend"):1,u_fog_ground_blend_opacity:we?we.calculateFogBlendOpacity(Se):0,u_horizon_color:we?we.properties.get("horizon-color"):t.aM.white,u_horizon_fog_blend:we?we.properties.get("horizon-fog-blend"):1});function $r(Oe){let R=[];for(let ae=0;ae({u_depth:new t.aH(nr,pr.u_depth),u_terrain:new t.aH(nr,pr.u_terrain),u_terrain_dim:new t.aI(nr,pr.u_terrain_dim),u_terrain_matrix:new t.aJ(nr,pr.u_terrain_matrix),u_terrain_unpack:new t.aK(nr,pr.u_terrain_unpack),u_terrain_exaggeration:new t.aI(nr,pr.u_terrain_exaggeration)}))(R,er),this.binderUniforms=we?we.getUniforms(R,er):[]}draw(R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,ea,qe,Je,ot,ht,At){let _t=R.gl;if(this.failedToCreate)return;if(R.program.set(this.program),R.setDepthMode(we),R.setStencilMode(Se),R.setColorMode(De),R.setCullFace(ft),Dt){R.activeTexture.set(_t.TEXTURE2),_t.bindTexture(_t.TEXTURE_2D,Dt.depthTexture),R.activeTexture.set(_t.TEXTURE3),_t.bindTexture(_t.TEXTURE_2D,Dt.texture);for(let er in this.terrainUniforms)this.terrainUniforms[er].set(Dt[er])}for(let er in this.fixedUniforms)this.fixedUniforms[er].set(bt[er]);Je&&Je.setUniforms(R,this.binderUniforms,ea,{zoom:qe});let Pt=0;switch(ae){case _t.LINES:Pt=2;break;case _t.TRIANGLES:Pt=3;break;case _t.LINE_STRIP:Pt=1}for(let er of jr.get()){let nr=er.vaos||(er.vaos={});(nr[Yt]||(nr[Yt]=new ir)).bind(R,this,cr,Je?Je.getPaintVertexBuffers():[],hr,er.vertexOffset,ot,ht,At),_t.drawElements(ae,er.primitiveLength*Pt,_t.UNSIGNED_SHORT,er.primitiveOffset*Pt*2)}}}function Ba(Oe,R,ae){let we=1/Aa(ae,1,R.transform.tileZoom),Se=Math.pow(2,ae.tileID.overscaledZ),De=ae.tileSize*Math.pow(2,R.transform.tileZoom)/Se,ft=De*(ae.tileID.canonical.x+ae.tileID.wrap*Se),bt=De*ae.tileID.canonical.y;return{u_image:0,u_texsize:ae.imageAtlasTexture.size,u_scale:[we,Oe.fromScale,Oe.toScale],u_fade:Oe.t,u_pixel_coord_upper:[ft>>16,bt>>16],u_pixel_coord_lower:[65535&ft,65535&bt]}}let Ca=(Oe,R,ae,we)=>{let Se=R.style.light,De=Se.properties.get("position"),ft=[De.x,De.y,De.z],bt=function(){var Yt=new t.A(9);return t.A!=Float32Array&&(Yt[1]=0,Yt[2]=0,Yt[3]=0,Yt[5]=0,Yt[6]=0,Yt[7]=0),Yt[0]=1,Yt[4]=1,Yt[8]=1,Yt}();Se.properties.get("anchor")==="viewport"&&function(Yt,cr){var hr=Math.sin(cr),jr=Math.cos(cr);Yt[0]=jr,Yt[1]=hr,Yt[2]=0,Yt[3]=-hr,Yt[4]=jr,Yt[5]=0,Yt[6]=0,Yt[7]=0,Yt[8]=1}(bt,-R.transform.angle),function(Yt,cr,hr){var jr=cr[0],ea=cr[1],qe=cr[2];Yt[0]=jr*hr[0]+ea*hr[3]+qe*hr[6],Yt[1]=jr*hr[1]+ea*hr[4]+qe*hr[7],Yt[2]=jr*hr[2]+ea*hr[5]+qe*hr[8]}(ft,ft,bt);let Dt=Se.properties.get("color");return{u_matrix:Oe,u_lightpos:ft,u_lightintensity:Se.properties.get("intensity"),u_lightcolor:[Dt.r,Dt.g,Dt.b],u_vertical_gradient:+ae,u_opacity:we}},da=(Oe,R,ae,we,Se,De,ft)=>t.e(Ca(Oe,R,ae,we),Ba(De,R,ft),{u_height_factor:-Math.pow(2,Se.overscaledZ)/ft.tileSize/8}),Sa=Oe=>({u_matrix:Oe}),Ti=(Oe,R,ae,we)=>t.e(Sa(Oe),Ba(ae,R,we)),ai=(Oe,R)=>({u_matrix:Oe,u_world:R}),an=(Oe,R,ae,we,Se)=>t.e(Ti(Oe,R,ae,we),{u_world:Se}),sn=(Oe,R,ae,we)=>{let Se=Oe.transform,De,ft;if(we.paint.get("circle-pitch-alignment")==="map"){let bt=Aa(ae,1,Se.zoom);De=!0,ft=[bt,bt]}else De=!1,ft=Se.pixelsToGLUnits;return{u_camera_to_center_distance:Se.cameraToCenterDistance,u_scale_with_map:+(we.paint.get("circle-pitch-scale")==="map"),u_matrix:Oe.translatePosMatrix(R.posMatrix,ae,we.paint.get("circle-translate"),we.paint.get("circle-translate-anchor")),u_pitch_with_map:+De,u_device_pixel_ratio:Oe.pixelRatio,u_extrude_scale:ft}},Mn=(Oe,R,ae)=>({u_matrix:Oe,u_inv_matrix:R,u_camera_to_center_distance:ae.cameraToCenterDistance,u_viewport_size:[ae.width,ae.height]}),On=(Oe,R,ae=1)=>({u_matrix:Oe,u_color:R,u_overlay:0,u_overlay_scale:ae}),$n=Oe=>({u_matrix:Oe}),Cn=(Oe,R,ae,we)=>({u_matrix:Oe,u_extrude_scale:Aa(R,1,ae),u_intensity:we}),Lo=(Oe,R,ae,we)=>{let Se=t.H();t.aP(Se,0,Oe.width,Oe.height,0,0,1);let De=Oe.context.gl;return{u_matrix:Se,u_world:[De.drawingBufferWidth,De.drawingBufferHeight],u_image:ae,u_color_ramp:we,u_opacity:R.paint.get("heatmap-opacity")}};function Xi(Oe,R){let ae=Math.pow(2,R.canonical.z),we=R.canonical.y;return[new t.Z(0,we/ae).toLngLat().lat,new t.Z(0,(we+1)/ae).toLngLat().lat]}let Jo=(Oe,R,ae,we)=>{let Se=Oe.transform;return{u_matrix:In(Oe,R,ae,we),u_ratio:1/Aa(R,1,Se.zoom),u_device_pixel_ratio:Oe.pixelRatio,u_units_to_pixels:[1/Se.pixelsToGLUnits[0],1/Se.pixelsToGLUnits[1]]}},zo=(Oe,R,ae,we,Se)=>t.e(Jo(Oe,R,ae,Se),{u_image:0,u_image_height:we}),as=(Oe,R,ae,we,Se)=>{let De=Oe.transform,ft=go(R,De);return{u_matrix:In(Oe,R,ae,Se),u_texsize:R.imageAtlasTexture.size,u_ratio:1/Aa(R,1,De.zoom),u_device_pixel_ratio:Oe.pixelRatio,u_image:0,u_scale:[ft,we.fromScale,we.toScale],u_fade:we.t,u_units_to_pixels:[1/De.pixelsToGLUnits[0],1/De.pixelsToGLUnits[1]]}},Pn=(Oe,R,ae,we,Se,De)=>{let ft=Oe.lineAtlas,bt=go(R,Oe.transform),Dt=ae.layout.get("line-cap")==="round",Yt=ft.getDash(we.from,Dt),cr=ft.getDash(we.to,Dt),hr=Yt.width*Se.fromScale,jr=cr.width*Se.toScale;return t.e(Jo(Oe,R,ae,De),{u_patternscale_a:[bt/hr,-Yt.height/2],u_patternscale_b:[bt/jr,-cr.height/2],u_sdfgamma:ft.width/(256*Math.min(hr,jr)*Oe.pixelRatio)/2,u_image:0,u_tex_y_a:Yt.y,u_tex_y_b:cr.y,u_mix:Se.t})};function go(Oe,R){return 1/Aa(Oe,1,R.tileZoom)}function In(Oe,R,ae,we){return Oe.translatePosMatrix(we?we.posMatrix:R.tileID.posMatrix,R,ae.paint.get("line-translate"),ae.paint.get("line-translate-anchor"))}let Do=(Oe,R,ae,we,Se)=>{return{u_matrix:Oe,u_tl_parent:R,u_scale_parent:ae,u_buffer_scale:1,u_fade_t:we.mix,u_opacity:we.opacity*Se.paint.get("raster-opacity"),u_image0:0,u_image1:1,u_brightness_low:Se.paint.get("raster-brightness-min"),u_brightness_high:Se.paint.get("raster-brightness-max"),u_saturation_factor:(ft=Se.paint.get("raster-saturation"),ft>0?1-1/(1.001-ft):-ft),u_contrast_factor:(De=Se.paint.get("raster-contrast"),De>0?1/(1-De):1+De),u_spin_weights:Ho(Se.paint.get("raster-hue-rotate"))};var De,ft};function Ho(Oe){Oe*=Math.PI/180;let R=Math.sin(Oe),ae=Math.cos(Oe);return[(2*ae+1)/3,(-Math.sqrt(3)*R-ae+1)/3,(Math.sqrt(3)*R-ae+1)/3]}let Qo=(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,ea)=>{let qe=ft.transform;return{u_is_size_zoom_constant:+(Oe==="constant"||Oe==="source"),u_is_size_feature_constant:+(Oe==="constant"||Oe==="camera"),u_size_t:R?R.uSizeT:0,u_size:R?R.uSize:0,u_camera_to_center_distance:qe.cameraToCenterDistance,u_pitch:qe.pitch/360*2*Math.PI,u_rotate_symbol:+ae,u_aspect_ratio:qe.width/qe.height,u_fade_change:ft.options.fadeDuration?ft.symbolFadeChange:1,u_matrix:bt,u_label_plane_matrix:Dt,u_coord_matrix:Yt,u_is_text:+hr,u_pitch_with_map:+we,u_is_along_line:Se,u_is_variable_anchor:De,u_texsize:jr,u_texture:0,u_translation:cr,u_pitched_scale:ea}},Xn=(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,ea,qe)=>{let Je=ft.transform;return t.e(Qo(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,qe),{u_gamma_scale:we?Math.cos(Je._pitch)*Je.cameraToCenterDistance:1,u_device_pixel_ratio:ft.pixelRatio,u_is_halo:+ea})},po=(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr,hr,jr,ea)=>t.e(Xn(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt,cr,!0,hr,!0,ea),{u_texsize_icon:jr,u_texture_icon:1}),ys=(Oe,R,ae)=>({u_matrix:Oe,u_opacity:R,u_color:ae}),Is=(Oe,R,ae,we,Se,De)=>t.e(function(ft,bt,Dt,Yt){let cr=Dt.imageManager.getPattern(ft.from.toString()),hr=Dt.imageManager.getPattern(ft.to.toString()),{width:jr,height:ea}=Dt.imageManager.getPixelSize(),qe=Math.pow(2,Yt.tileID.overscaledZ),Je=Yt.tileSize*Math.pow(2,Dt.transform.tileZoom)/qe,ot=Je*(Yt.tileID.canonical.x+Yt.tileID.wrap*qe),ht=Je*Yt.tileID.canonical.y;return{u_image:0,u_pattern_tl_a:cr.tl,u_pattern_br_a:cr.br,u_pattern_tl_b:hr.tl,u_pattern_br_b:hr.br,u_texsize:[jr,ea],u_mix:bt.t,u_pattern_size_a:cr.displaySize,u_pattern_size_b:hr.displaySize,u_scale_a:bt.fromScale,u_scale_b:bt.toScale,u_tile_units_to_pixels:1/Aa(Yt,1,Dt.transform.tileZoom),u_pixel_coord_upper:[ot>>16,ht>>16],u_pixel_coord_lower:[65535&ot,65535&ht]}}(we,De,ae,Se),{u_matrix:Oe,u_opacity:R}),Fs={fillExtrusion:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_lightpos:new t.aN(Oe,R.u_lightpos),u_lightintensity:new t.aI(Oe,R.u_lightintensity),u_lightcolor:new t.aN(Oe,R.u_lightcolor),u_vertical_gradient:new t.aI(Oe,R.u_vertical_gradient),u_opacity:new t.aI(Oe,R.u_opacity)}),fillExtrusionPattern:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_lightpos:new t.aN(Oe,R.u_lightpos),u_lightintensity:new t.aI(Oe,R.u_lightintensity),u_lightcolor:new t.aN(Oe,R.u_lightcolor),u_vertical_gradient:new t.aI(Oe,R.u_vertical_gradient),u_height_factor:new t.aI(Oe,R.u_height_factor),u_image:new t.aH(Oe,R.u_image),u_texsize:new t.aO(Oe,R.u_texsize),u_pixel_coord_upper:new t.aO(Oe,R.u_pixel_coord_upper),u_pixel_coord_lower:new t.aO(Oe,R.u_pixel_coord_lower),u_scale:new t.aN(Oe,R.u_scale),u_fade:new t.aI(Oe,R.u_fade),u_opacity:new t.aI(Oe,R.u_opacity)}),fill:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix)}),fillPattern:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_image:new t.aH(Oe,R.u_image),u_texsize:new t.aO(Oe,R.u_texsize),u_pixel_coord_upper:new t.aO(Oe,R.u_pixel_coord_upper),u_pixel_coord_lower:new t.aO(Oe,R.u_pixel_coord_lower),u_scale:new t.aN(Oe,R.u_scale),u_fade:new t.aI(Oe,R.u_fade)}),fillOutline:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_world:new t.aO(Oe,R.u_world)}),fillOutlinePattern:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_world:new t.aO(Oe,R.u_world),u_image:new t.aH(Oe,R.u_image),u_texsize:new t.aO(Oe,R.u_texsize),u_pixel_coord_upper:new t.aO(Oe,R.u_pixel_coord_upper),u_pixel_coord_lower:new t.aO(Oe,R.u_pixel_coord_lower),u_scale:new t.aN(Oe,R.u_scale),u_fade:new t.aI(Oe,R.u_fade)}),circle:(Oe,R)=>({u_camera_to_center_distance:new t.aI(Oe,R.u_camera_to_center_distance),u_scale_with_map:new t.aH(Oe,R.u_scale_with_map),u_pitch_with_map:new t.aH(Oe,R.u_pitch_with_map),u_extrude_scale:new t.aO(Oe,R.u_extrude_scale),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_matrix:new t.aJ(Oe,R.u_matrix)}),collisionBox:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_pixel_extrude_scale:new t.aO(Oe,R.u_pixel_extrude_scale)}),collisionCircle:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_inv_matrix:new t.aJ(Oe,R.u_inv_matrix),u_camera_to_center_distance:new t.aI(Oe,R.u_camera_to_center_distance),u_viewport_size:new t.aO(Oe,R.u_viewport_size)}),debug:(Oe,R)=>({u_color:new t.aL(Oe,R.u_color),u_matrix:new t.aJ(Oe,R.u_matrix),u_overlay:new t.aH(Oe,R.u_overlay),u_overlay_scale:new t.aI(Oe,R.u_overlay_scale)}),clippingMask:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix)}),heatmap:(Oe,R)=>({u_extrude_scale:new t.aI(Oe,R.u_extrude_scale),u_intensity:new t.aI(Oe,R.u_intensity),u_matrix:new t.aJ(Oe,R.u_matrix)}),heatmapTexture:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_world:new t.aO(Oe,R.u_world),u_image:new t.aH(Oe,R.u_image),u_color_ramp:new t.aH(Oe,R.u_color_ramp),u_opacity:new t.aI(Oe,R.u_opacity)}),hillshade:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_image:new t.aH(Oe,R.u_image),u_latrange:new t.aO(Oe,R.u_latrange),u_light:new t.aO(Oe,R.u_light),u_shadow:new t.aL(Oe,R.u_shadow),u_highlight:new t.aL(Oe,R.u_highlight),u_accent:new t.aL(Oe,R.u_accent)}),hillshadePrepare:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_image:new t.aH(Oe,R.u_image),u_dimension:new t.aO(Oe,R.u_dimension),u_zoom:new t.aI(Oe,R.u_zoom),u_unpack:new t.aK(Oe,R.u_unpack)}),line:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_ratio:new t.aI(Oe,R.u_ratio),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_units_to_pixels:new t.aO(Oe,R.u_units_to_pixels)}),lineGradient:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_ratio:new t.aI(Oe,R.u_ratio),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_units_to_pixels:new t.aO(Oe,R.u_units_to_pixels),u_image:new t.aH(Oe,R.u_image),u_image_height:new t.aI(Oe,R.u_image_height)}),linePattern:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_texsize:new t.aO(Oe,R.u_texsize),u_ratio:new t.aI(Oe,R.u_ratio),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_image:new t.aH(Oe,R.u_image),u_units_to_pixels:new t.aO(Oe,R.u_units_to_pixels),u_scale:new t.aN(Oe,R.u_scale),u_fade:new t.aI(Oe,R.u_fade)}),lineSDF:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_ratio:new t.aI(Oe,R.u_ratio),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_units_to_pixels:new t.aO(Oe,R.u_units_to_pixels),u_patternscale_a:new t.aO(Oe,R.u_patternscale_a),u_patternscale_b:new t.aO(Oe,R.u_patternscale_b),u_sdfgamma:new t.aI(Oe,R.u_sdfgamma),u_image:new t.aH(Oe,R.u_image),u_tex_y_a:new t.aI(Oe,R.u_tex_y_a),u_tex_y_b:new t.aI(Oe,R.u_tex_y_b),u_mix:new t.aI(Oe,R.u_mix)}),raster:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_tl_parent:new t.aO(Oe,R.u_tl_parent),u_scale_parent:new t.aI(Oe,R.u_scale_parent),u_buffer_scale:new t.aI(Oe,R.u_buffer_scale),u_fade_t:new t.aI(Oe,R.u_fade_t),u_opacity:new t.aI(Oe,R.u_opacity),u_image0:new t.aH(Oe,R.u_image0),u_image1:new t.aH(Oe,R.u_image1),u_brightness_low:new t.aI(Oe,R.u_brightness_low),u_brightness_high:new t.aI(Oe,R.u_brightness_high),u_saturation_factor:new t.aI(Oe,R.u_saturation_factor),u_contrast_factor:new t.aI(Oe,R.u_contrast_factor),u_spin_weights:new t.aN(Oe,R.u_spin_weights)}),symbolIcon:(Oe,R)=>({u_is_size_zoom_constant:new t.aH(Oe,R.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aH(Oe,R.u_is_size_feature_constant),u_size_t:new t.aI(Oe,R.u_size_t),u_size:new t.aI(Oe,R.u_size),u_camera_to_center_distance:new t.aI(Oe,R.u_camera_to_center_distance),u_pitch:new t.aI(Oe,R.u_pitch),u_rotate_symbol:new t.aH(Oe,R.u_rotate_symbol),u_aspect_ratio:new t.aI(Oe,R.u_aspect_ratio),u_fade_change:new t.aI(Oe,R.u_fade_change),u_matrix:new t.aJ(Oe,R.u_matrix),u_label_plane_matrix:new t.aJ(Oe,R.u_label_plane_matrix),u_coord_matrix:new t.aJ(Oe,R.u_coord_matrix),u_is_text:new t.aH(Oe,R.u_is_text),u_pitch_with_map:new t.aH(Oe,R.u_pitch_with_map),u_is_along_line:new t.aH(Oe,R.u_is_along_line),u_is_variable_anchor:new t.aH(Oe,R.u_is_variable_anchor),u_texsize:new t.aO(Oe,R.u_texsize),u_texture:new t.aH(Oe,R.u_texture),u_translation:new t.aO(Oe,R.u_translation),u_pitched_scale:new t.aI(Oe,R.u_pitched_scale)}),symbolSDF:(Oe,R)=>({u_is_size_zoom_constant:new t.aH(Oe,R.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aH(Oe,R.u_is_size_feature_constant),u_size_t:new t.aI(Oe,R.u_size_t),u_size:new t.aI(Oe,R.u_size),u_camera_to_center_distance:new t.aI(Oe,R.u_camera_to_center_distance),u_pitch:new t.aI(Oe,R.u_pitch),u_rotate_symbol:new t.aH(Oe,R.u_rotate_symbol),u_aspect_ratio:new t.aI(Oe,R.u_aspect_ratio),u_fade_change:new t.aI(Oe,R.u_fade_change),u_matrix:new t.aJ(Oe,R.u_matrix),u_label_plane_matrix:new t.aJ(Oe,R.u_label_plane_matrix),u_coord_matrix:new t.aJ(Oe,R.u_coord_matrix),u_is_text:new t.aH(Oe,R.u_is_text),u_pitch_with_map:new t.aH(Oe,R.u_pitch_with_map),u_is_along_line:new t.aH(Oe,R.u_is_along_line),u_is_variable_anchor:new t.aH(Oe,R.u_is_variable_anchor),u_texsize:new t.aO(Oe,R.u_texsize),u_texture:new t.aH(Oe,R.u_texture),u_gamma_scale:new t.aI(Oe,R.u_gamma_scale),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_is_halo:new t.aH(Oe,R.u_is_halo),u_translation:new t.aO(Oe,R.u_translation),u_pitched_scale:new t.aI(Oe,R.u_pitched_scale)}),symbolTextAndIcon:(Oe,R)=>({u_is_size_zoom_constant:new t.aH(Oe,R.u_is_size_zoom_constant),u_is_size_feature_constant:new t.aH(Oe,R.u_is_size_feature_constant),u_size_t:new t.aI(Oe,R.u_size_t),u_size:new t.aI(Oe,R.u_size),u_camera_to_center_distance:new t.aI(Oe,R.u_camera_to_center_distance),u_pitch:new t.aI(Oe,R.u_pitch),u_rotate_symbol:new t.aH(Oe,R.u_rotate_symbol),u_aspect_ratio:new t.aI(Oe,R.u_aspect_ratio),u_fade_change:new t.aI(Oe,R.u_fade_change),u_matrix:new t.aJ(Oe,R.u_matrix),u_label_plane_matrix:new t.aJ(Oe,R.u_label_plane_matrix),u_coord_matrix:new t.aJ(Oe,R.u_coord_matrix),u_is_text:new t.aH(Oe,R.u_is_text),u_pitch_with_map:new t.aH(Oe,R.u_pitch_with_map),u_is_along_line:new t.aH(Oe,R.u_is_along_line),u_is_variable_anchor:new t.aH(Oe,R.u_is_variable_anchor),u_texsize:new t.aO(Oe,R.u_texsize),u_texsize_icon:new t.aO(Oe,R.u_texsize_icon),u_texture:new t.aH(Oe,R.u_texture),u_texture_icon:new t.aH(Oe,R.u_texture_icon),u_gamma_scale:new t.aI(Oe,R.u_gamma_scale),u_device_pixel_ratio:new t.aI(Oe,R.u_device_pixel_ratio),u_is_halo:new t.aH(Oe,R.u_is_halo),u_translation:new t.aO(Oe,R.u_translation),u_pitched_scale:new t.aI(Oe,R.u_pitched_scale)}),background:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_opacity:new t.aI(Oe,R.u_opacity),u_color:new t.aL(Oe,R.u_color)}),backgroundPattern:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_opacity:new t.aI(Oe,R.u_opacity),u_image:new t.aH(Oe,R.u_image),u_pattern_tl_a:new t.aO(Oe,R.u_pattern_tl_a),u_pattern_br_a:new t.aO(Oe,R.u_pattern_br_a),u_pattern_tl_b:new t.aO(Oe,R.u_pattern_tl_b),u_pattern_br_b:new t.aO(Oe,R.u_pattern_br_b),u_texsize:new t.aO(Oe,R.u_texsize),u_mix:new t.aI(Oe,R.u_mix),u_pattern_size_a:new t.aO(Oe,R.u_pattern_size_a),u_pattern_size_b:new t.aO(Oe,R.u_pattern_size_b),u_scale_a:new t.aI(Oe,R.u_scale_a),u_scale_b:new t.aI(Oe,R.u_scale_b),u_pixel_coord_upper:new t.aO(Oe,R.u_pixel_coord_upper),u_pixel_coord_lower:new t.aO(Oe,R.u_pixel_coord_lower),u_tile_units_to_pixels:new t.aI(Oe,R.u_tile_units_to_pixels)}),terrain:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_texture:new t.aH(Oe,R.u_texture),u_ele_delta:new t.aI(Oe,R.u_ele_delta),u_fog_matrix:new t.aJ(Oe,R.u_fog_matrix),u_fog_color:new t.aL(Oe,R.u_fog_color),u_fog_ground_blend:new t.aI(Oe,R.u_fog_ground_blend),u_fog_ground_blend_opacity:new t.aI(Oe,R.u_fog_ground_blend_opacity),u_horizon_color:new t.aL(Oe,R.u_horizon_color),u_horizon_fog_blend:new t.aI(Oe,R.u_horizon_fog_blend)}),terrainDepth:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_ele_delta:new t.aI(Oe,R.u_ele_delta)}),terrainCoords:(Oe,R)=>({u_matrix:new t.aJ(Oe,R.u_matrix),u_texture:new t.aH(Oe,R.u_texture),u_terrain_coords_id:new t.aI(Oe,R.u_terrain_coords_id),u_ele_delta:new t.aI(Oe,R.u_ele_delta)}),sky:(Oe,R)=>({u_sky_color:new t.aL(Oe,R.u_sky_color),u_horizon_color:new t.aL(Oe,R.u_horizon_color),u_horizon:new t.aI(Oe,R.u_horizon),u_sky_horizon_blend:new t.aI(Oe,R.u_sky_horizon_blend)})};class $o{constructor(R,ae,we){this.context=R;let Se=R.gl;this.buffer=Se.createBuffer(),this.dynamicDraw=!!we,this.context.unbindVAO(),R.bindElementBuffer.set(this.buffer),Se.bufferData(Se.ELEMENT_ARRAY_BUFFER,ae.arrayBuffer,this.dynamicDraw?Se.DYNAMIC_DRAW:Se.STATIC_DRAW),this.dynamicDraw||delete ae.arrayBuffer}bind(){this.context.bindElementBuffer.set(this.buffer)}updateData(R){let ae=this.context.gl;if(!this.dynamicDraw)throw new Error("Attempted to update data while not in dynamic mode.");this.context.unbindVAO(),this.bind(),ae.bufferSubData(ae.ELEMENT_ARRAY_BUFFER,0,R.arrayBuffer)}destroy(){this.buffer&&(this.context.gl.deleteBuffer(this.buffer),delete this.buffer)}}let fi={Int8:"BYTE",Uint8:"UNSIGNED_BYTE",Int16:"SHORT",Uint16:"UNSIGNED_SHORT",Int32:"INT",Uint32:"UNSIGNED_INT",Float32:"FLOAT"};class mn{constructor(R,ae,we,Se){this.length=ae.length,this.attributes=we,this.itemSize=ae.bytesPerElement,this.dynamicDraw=Se,this.context=R;let De=R.gl;this.buffer=De.createBuffer(),R.bindVertexBuffer.set(this.buffer),De.bufferData(De.ARRAY_BUFFER,ae.arrayBuffer,this.dynamicDraw?De.DYNAMIC_DRAW:De.STATIC_DRAW),this.dynamicDraw||delete ae.arrayBuffer}bind(){this.context.bindVertexBuffer.set(this.buffer)}updateData(R){if(R.length!==this.length)throw new Error(`Length of new data is ${R.length}, which doesn't match current length of ${this.length}`);let ae=this.context.gl;this.bind(),ae.bufferSubData(ae.ARRAY_BUFFER,0,R.arrayBuffer)}enableAttributes(R,ae){for(let we=0;we0){let nr=t.H();t.aQ(nr,_t.placementInvProjMatrix,Oe.transform.glCoordMatrix),t.aQ(nr,nr,_t.placementViewportMatrix),Dt.push({circleArray:er,circleOffset:cr,transform:At.posMatrix,invTransform:nr,coord:At}),Yt+=er.length/4,cr=Yt}Pt&&bt.draw(De,ft.LINES,es.disabled,Ss.disabled,Oe.colorModeForRenderPass(),So.disabled,{u_matrix:At.posMatrix,u_pixel_extrude_scale:[1/(hr=Oe.transform).width,1/hr.height]},Oe.style.map.terrain&&Oe.style.map.terrain.getTerrainData(At),ae.id,Pt.layoutVertexBuffer,Pt.indexBuffer,Pt.segments,null,Oe.transform.zoom,null,null,Pt.collisionVertexBuffer)}var hr;if(!Se||!Dt.length)return;let jr=Oe.useProgram("collisionCircle"),ea=new t.aR;ea.resize(4*Yt),ea._trim();let qe=0;for(let ht of Dt)for(let At=0;At=0&&(ht[_t.associatedIconIndex]={shiftedAnchor:$i,angle:Bn})}else Gt(_t.numGlyphs,Je)}if(Yt){ot.clear();let At=Oe.icon.placedSymbolArray;for(let _t=0;_tOe.style.map.terrain.getElevation(ga,Rt,or):null,Jt=ae.layout.get("text-rotation-alignment")==="map";Ne(Ja,ga.posMatrix,Oe,Se,Xl,fu,ht,Yt,Jt,Je,ga.toUnwrapped(),qe.width,qe.height,bl,wt)}let ql=ga.posMatrix,Hl=Se&&Sr||Sc,de=At||Hl?cu:Xl,Re=qu,$e=Ci&&ae.paint.get(Se?"text-halo-width":"icon-halo-width").constantOr(1)!==0,pt;pt=Ci?Ja.iconsInText?po($i.kind,ho,_t,ht,At,Hl,Oe,ql,de,Re,bl,yo,Ys,ha):Xn($i.kind,ho,_t,ht,At,Hl,Oe,ql,de,Re,bl,Se,yo,!0,ha):Qo($i.kind,ho,_t,ht,At,Hl,Oe,ql,de,Re,bl,Se,yo,ha);let vt={program:Sn,buffers:di,uniformValues:pt,atlasTexture:Vo,atlasTextureIcon:Zo,atlasInterpolation:ls,atlasInterpolationIcon:rl,isSDF:Ci,hasHalo:$e};if(er&&Ja.canOverlap){nr=!0;let wt=di.segments.get();for(let Jt of wt)Wr.push({segments:new t.a0([Jt]),sortKey:Jt.sortKey,state:vt,terrainData:ts})}else Wr.push({segments:di.segments,sortKey:0,state:vt,terrainData:ts})}nr&&Wr.sort((ga,Pa)=>ga.sortKey-Pa.sortKey);for(let ga of Wr){let Pa=ga.state;if(jr.activeTexture.set(ea.TEXTURE0),Pa.atlasTexture.bind(Pa.atlasInterpolation,ea.CLAMP_TO_EDGE),Pa.atlasTextureIcon&&(jr.activeTexture.set(ea.TEXTURE1),Pa.atlasTextureIcon&&Pa.atlasTextureIcon.bind(Pa.atlasInterpolationIcon,ea.CLAMP_TO_EDGE)),Pa.isSDF){let Ja=Pa.uniformValues;Pa.hasHalo&&(Ja.u_is_halo=1,Xf(Pa.buffers,ga.segments,ae,Oe,Pa.program,pr,cr,hr,Ja,ga.terrainData)),Ja.u_is_halo=0}Xf(Pa.buffers,ga.segments,ae,Oe,Pa.program,pr,cr,hr,Pa.uniformValues,ga.terrainData)}}function Xf(Oe,R,ae,we,Se,De,ft,bt,Dt,Yt){let cr=we.context;Se.draw(cr,cr.gl.TRIANGLES,De,ft,bt,So.disabled,Dt,Yt,ae.id,Oe.layoutVertexBuffer,Oe.indexBuffer,R,ae.paint,we.transform.zoom,Oe.programConfigurations.get(ae.id),Oe.dynamicLayoutVertexBuffer,Oe.opacityVertexBuffer)}function Rf(Oe,R,ae,we){let Se=Oe.context,De=Se.gl,ft=Ss.disabled,bt=new Qs([De.ONE,De.ONE],t.aM.transparent,[!0,!0,!0,!0]),Dt=R.getBucket(ae);if(!Dt)return;let Yt=we.key,cr=ae.heatmapFbos.get(Yt);cr||(cr=Yf(Se,R.tileSize,R.tileSize),ae.heatmapFbos.set(Yt,cr)),Se.bindFramebuffer.set(cr.framebuffer),Se.viewport.set([0,0,R.tileSize,R.tileSize]),Se.clear({color:t.aM.transparent});let hr=Dt.programConfigurations.get(ae.id),jr=Oe.useProgram("heatmap",hr),ea=Oe.style.map.terrain.getTerrainData(we);jr.draw(Se,De.TRIANGLES,es.disabled,ft,bt,So.disabled,Cn(we.posMatrix,R,Oe.transform.zoom,ae.paint.get("heatmap-intensity")),ea,ae.id,Dt.layoutVertexBuffer,Dt.indexBuffer,Dt.segments,ae.paint,Oe.transform.zoom,hr)}function Kc(Oe,R,ae){let we=Oe.context,Se=we.gl;we.setColorMode(Oe.colorModeForRenderPass());let De=uh(we,R),ft=ae.key,bt=R.heatmapFbos.get(ft);bt&&(we.activeTexture.set(Se.TEXTURE0),Se.bindTexture(Se.TEXTURE_2D,bt.colorAttachment.get()),we.activeTexture.set(Se.TEXTURE1),De.bind(Se.LINEAR,Se.CLAMP_TO_EDGE),Oe.useProgram("heatmapTexture").draw(we,Se.TRIANGLES,es.disabled,Ss.disabled,Oe.colorModeForRenderPass(),So.disabled,Lo(Oe,R,0,1),null,R.id,Oe.rasterBoundsBuffer,Oe.quadTriangleIndexBuffer,Oe.rasterBoundsSegments,R.paint,Oe.transform.zoom),bt.destroy(),R.heatmapFbos.delete(ft))}function Yf(Oe,R,ae){var we,Se;let De=Oe.gl,ft=De.createTexture();De.bindTexture(De.TEXTURE_2D,ft),De.texParameteri(De.TEXTURE_2D,De.TEXTURE_WRAP_S,De.CLAMP_TO_EDGE),De.texParameteri(De.TEXTURE_2D,De.TEXTURE_WRAP_T,De.CLAMP_TO_EDGE),De.texParameteri(De.TEXTURE_2D,De.TEXTURE_MIN_FILTER,De.LINEAR),De.texParameteri(De.TEXTURE_2D,De.TEXTURE_MAG_FILTER,De.LINEAR);let bt=(we=Oe.HALF_FLOAT)!==null&&we!==void 0?we:De.UNSIGNED_BYTE,Dt=(Se=Oe.RGBA16F)!==null&&Se!==void 0?Se:De.RGBA;De.texImage2D(De.TEXTURE_2D,0,Dt,R,ae,0,De.RGBA,bt,null);let Yt=Oe.createFramebuffer(R,ae,!1,!1);return Yt.colorAttachment.set(ft),Yt}function uh(Oe,R){return R.colorRampTexture||(R.colorRampTexture=new u(Oe,R.colorRamp,Oe.gl.RGBA)),R.colorRampTexture}function Ju(Oe,R,ae,we,Se){if(!ae||!we||!we.imageAtlas)return;let De=we.imageAtlas.patternPositions,ft=De[ae.to.toString()],bt=De[ae.from.toString()];if(!ft&&bt&&(ft=bt),!bt&&ft&&(bt=ft),!ft||!bt){let Dt=Se.getPaintProperty(R);ft=De[Dt],bt=De[Dt]}ft&&bt&&Oe.setConstantPatternPositions(ft,bt)}function Df(Oe,R,ae,we,Se,De,ft){let bt=Oe.context.gl,Dt="fill-pattern",Yt=ae.paint.get(Dt),cr=Yt&&Yt.constantOr(1),hr=ae.getCrossfadeParameters(),jr,ea,qe,Je,ot;ft?(ea=cr&&!ae.getPaintProperty("fill-outline-color")?"fillOutlinePattern":"fillOutline",jr=bt.LINES):(ea=cr?"fillPattern":"fill",jr=bt.TRIANGLES);let ht=Yt.constantOr(null);for(let At of we){let _t=R.getTile(At);if(cr&&!_t.patternsLoaded())continue;let Pt=_t.getBucket(ae);if(!Pt)continue;let er=Pt.programConfigurations.get(ae.id),nr=Oe.useProgram(ea,er),pr=Oe.style.map.terrain&&Oe.style.map.terrain.getTerrainData(At);cr&&(Oe.context.activeTexture.set(bt.TEXTURE0),_t.imageAtlasTexture.bind(bt.LINEAR,bt.CLAMP_TO_EDGE),er.updatePaintBuffers(hr)),Ju(er,Dt,ht,_t,ae);let Sr=pr?At:null,Wr=Oe.translatePosMatrix(Sr?Sr.posMatrix:At.posMatrix,_t,ae.paint.get("fill-translate"),ae.paint.get("fill-translate-anchor"));if(ft){Je=Pt.indexBuffer2,ot=Pt.segments2;let ha=[bt.drawingBufferWidth,bt.drawingBufferHeight];qe=ea==="fillOutlinePattern"&&cr?an(Wr,Oe,hr,_t,ha):ai(Wr,ha)}else Je=Pt.indexBuffer,ot=Pt.segments,qe=cr?Ti(Wr,Oe,hr,_t):Sa(Wr);nr.draw(Oe.context,jr,Se,Oe.stencilModeForClipping(At),De,So.disabled,qe,pr,ae.id,Pt.layoutVertexBuffer,Je,ot,ae.paint,Oe.transform.zoom,er)}}function Dc(Oe,R,ae,we,Se,De,ft){let bt=Oe.context,Dt=bt.gl,Yt="fill-extrusion-pattern",cr=ae.paint.get(Yt),hr=cr.constantOr(1),jr=ae.getCrossfadeParameters(),ea=ae.paint.get("fill-extrusion-opacity"),qe=cr.constantOr(null);for(let Je of we){let ot=R.getTile(Je),ht=ot.getBucket(ae);if(!ht)continue;let At=Oe.style.map.terrain&&Oe.style.map.terrain.getTerrainData(Je),_t=ht.programConfigurations.get(ae.id),Pt=Oe.useProgram(hr?"fillExtrusionPattern":"fillExtrusion",_t);hr&&(Oe.context.activeTexture.set(Dt.TEXTURE0),ot.imageAtlasTexture.bind(Dt.LINEAR,Dt.CLAMP_TO_EDGE),_t.updatePaintBuffers(jr)),Ju(_t,Yt,qe,ot,ae);let er=Oe.translatePosMatrix(Je.posMatrix,ot,ae.paint.get("fill-extrusion-translate"),ae.paint.get("fill-extrusion-translate-anchor")),nr=ae.paint.get("fill-extrusion-vertical-gradient"),pr=hr?da(er,Oe,nr,ea,Je,jr,ot):Ca(er,Oe,nr,ea);Pt.draw(bt,bt.gl.TRIANGLES,Se,De,ft,So.backCCW,pr,At,ae.id,ht.layoutVertexBuffer,ht.indexBuffer,ht.segments,ae.paint,Oe.transform.zoom,_t,Oe.style.map.terrain&&ht.centroidVertexBuffer)}}function Jc(Oe,R,ae,we,Se,De,ft){let bt=Oe.context,Dt=bt.gl,Yt=ae.fbo;if(!Yt)return;let cr=Oe.useProgram("hillshade"),hr=Oe.style.map.terrain&&Oe.style.map.terrain.getTerrainData(R);bt.activeTexture.set(Dt.TEXTURE0),Dt.bindTexture(Dt.TEXTURE_2D,Yt.colorAttachment.get()),cr.draw(bt,Dt.TRIANGLES,Se,De,ft,So.disabled,((jr,ea,qe,Je)=>{let ot=qe.paint.get("hillshade-shadow-color"),ht=qe.paint.get("hillshade-highlight-color"),At=qe.paint.get("hillshade-accent-color"),_t=qe.paint.get("hillshade-illumination-direction")*(Math.PI/180);qe.paint.get("hillshade-illumination-anchor")==="viewport"&&(_t-=jr.transform.angle);let Pt=!jr.options.moving;return{u_matrix:Je?Je.posMatrix:jr.transform.calculatePosMatrix(ea.tileID.toUnwrapped(),Pt),u_image:0,u_latrange:Xi(0,ea.tileID),u_light:[qe.paint.get("hillshade-exaggeration"),_t],u_shadow:ot,u_highlight:ht,u_accent:At}})(Oe,ae,we,hr?R:null),hr,we.id,Oe.rasterBoundsBuffer,Oe.quadTriangleIndexBuffer,Oe.rasterBoundsSegments)}function Eu(Oe,R,ae,we,Se,De){let ft=Oe.context,bt=ft.gl,Dt=R.dem;if(Dt&&Dt.data){let Yt=Dt.dim,cr=Dt.stride,hr=Dt.getPixels();if(ft.activeTexture.set(bt.TEXTURE1),ft.pixelStoreUnpackPremultiplyAlpha.set(!1),R.demTexture=R.demTexture||Oe.getTileTexture(cr),R.demTexture){let ea=R.demTexture;ea.update(hr,{premultiply:!1}),ea.bind(bt.NEAREST,bt.CLAMP_TO_EDGE)}else R.demTexture=new u(ft,hr,bt.RGBA,{premultiply:!1}),R.demTexture.bind(bt.NEAREST,bt.CLAMP_TO_EDGE);ft.activeTexture.set(bt.TEXTURE0);let jr=R.fbo;if(!jr){let ea=new u(ft,{width:Yt,height:Yt,data:null},bt.RGBA);ea.bind(bt.LINEAR,bt.CLAMP_TO_EDGE),jr=R.fbo=ft.createFramebuffer(Yt,Yt,!0,!1),jr.colorAttachment.set(ea.texture)}ft.bindFramebuffer.set(jr.framebuffer),ft.viewport.set([0,0,Yt,Yt]),Oe.useProgram("hillshadePrepare").draw(ft,bt.TRIANGLES,we,Se,De,So.disabled,((ea,qe)=>{let Je=qe.stride,ot=t.H();return t.aP(ot,0,t.X,-t.X,0,0,1),t.J(ot,ot,[0,-t.X,0]),{u_matrix:ot,u_image:1,u_dimension:[Je,Je],u_zoom:ea.overscaledZ,u_unpack:qe.getUnpackVector()}})(R.tileID,Dt),null,ae.id,Oe.rasterBoundsBuffer,Oe.quadTriangleIndexBuffer,Oe.rasterBoundsSegments),R.needsHillshadePrepare=!1}}function wf(Oe,R,ae,we,Se,De){let ft=we.paint.get("raster-fade-duration");if(!De&&ft>0){let bt=i.now(),Dt=(bt-Oe.timeAdded)/ft,Yt=R?(bt-R.timeAdded)/ft:-1,cr=ae.getSource(),hr=Se.coveringZoomLevel({tileSize:cr.tileSize,roundZoom:cr.roundZoom}),jr=!R||Math.abs(R.tileID.overscaledZ-hr)>Math.abs(Oe.tileID.overscaledZ-hr),ea=jr&&Oe.refreshedUponExpiration?1:t.ac(jr?Dt:1-Yt,0,1);return Oe.refreshedUponExpiration&&Dt>=1&&(Oe.refreshedUponExpiration=!1),R?{opacity:1,mix:1-ea}:{opacity:ea,mix:0}}return{opacity:1,mix:0}}let zc=new t.aM(1,0,0,1),Us=new t.aM(0,1,0,1),Kf=new t.aM(0,0,1,1),Zh=new t.aM(1,0,1,1),ch=new t.aM(0,1,1,1);function df(Oe,R,ae,we){ku(Oe,0,R+ae/2,Oe.transform.width,ae,we)}function Ah(Oe,R,ae,we){ku(Oe,R-ae/2,0,ae,Oe.transform.height,we)}function ku(Oe,R,ae,we,Se,De){let ft=Oe.context,bt=ft.gl;bt.enable(bt.SCISSOR_TEST),bt.scissor(R*Oe.pixelRatio,ae*Oe.pixelRatio,we*Oe.pixelRatio,Se*Oe.pixelRatio),ft.clear({color:De}),bt.disable(bt.SCISSOR_TEST)}function fh(Oe,R,ae){let we=Oe.context,Se=we.gl,De=ae.posMatrix,ft=Oe.useProgram("debug"),bt=es.disabled,Dt=Ss.disabled,Yt=Oe.colorModeForRenderPass(),cr="$debug",hr=Oe.style.map.terrain&&Oe.style.map.terrain.getTerrainData(ae);we.activeTexture.set(Se.TEXTURE0);let jr=R.getTileByID(ae.key).latestRawTileData,ea=Math.floor((jr&&jr.byteLength||0)/1024),qe=R.getTile(ae).tileSize,Je=512/Math.min(qe,512)*(ae.overscaledZ/Oe.transform.zoom)*.5,ot=ae.canonical.toString();ae.overscaledZ!==ae.canonical.z&&(ot+=` => ${ae.overscaledZ}`),function(ht,At){ht.initDebugOverlayCanvas();let _t=ht.debugOverlayCanvas,Pt=ht.context.gl,er=ht.debugOverlayCanvas.getContext("2d");er.clearRect(0,0,_t.width,_t.height),er.shadowColor="white",er.shadowBlur=2,er.lineWidth=1.5,er.strokeStyle="white",er.textBaseline="top",er.font="bold 36px Open Sans, sans-serif",er.fillText(At,5,5),er.strokeText(At,5,5),ht.debugOverlayTexture.update(_t),ht.debugOverlayTexture.bind(Pt.LINEAR,Pt.CLAMP_TO_EDGE)}(Oe,`${ot} ${ea}kB`),ft.draw(we,Se.TRIANGLES,bt,Dt,Qs.alphaBlended,So.disabled,On(De,t.aM.transparent,Je),null,cr,Oe.debugBuffer,Oe.quadTriangleIndexBuffer,Oe.debugSegments),ft.draw(we,Se.LINE_STRIP,bt,Dt,Yt,So.disabled,On(De,t.aM.red),hr,cr,Oe.debugBuffer,Oe.tileBorderIndexBuffer,Oe.debugSegments)}function ru(Oe,R,ae){let we=Oe.context,Se=we.gl,De=Oe.colorModeForRenderPass(),ft=new es(Se.LEQUAL,es.ReadWrite,Oe.depthRangeFor3D),bt=Oe.useProgram("terrain"),Dt=R.getTerrainMesh();we.bindFramebuffer.set(null),we.viewport.set([0,0,Oe.width,Oe.height]);for(let Yt of ae){let cr=Oe.renderToTexture.getTexture(Yt),hr=R.getTerrainData(Yt.tileID);we.activeTexture.set(Se.TEXTURE0),Se.bindTexture(Se.TEXTURE_2D,cr.texture);let jr=Oe.transform.calculatePosMatrix(Yt.tileID.toUnwrapped()),ea=R.getMeshFrameDelta(Oe.transform.zoom),qe=Oe.transform.calculateFogMatrix(Yt.tileID.toUnwrapped()),Je=mr(jr,ea,qe,Oe.style.sky,Oe.transform.pitch);bt.draw(we,Se.TRIANGLES,ft,Ss.disabled,De,So.backCCW,Je,hr,"terrain",Dt.vertexBuffer,Dt.indexBuffer,Dt.segments)}}class Cu{constructor(R,ae,we){this.vertexBuffer=R,this.indexBuffer=ae,this.segments=we}destroy(){this.vertexBuffer.destroy(),this.indexBuffer.destroy(),this.segments.destroy(),this.vertexBuffer=null,this.indexBuffer=null,this.segments=null}}class xc{constructor(R,ae){this.context=new fp(R),this.transform=ae,this._tileTextures={},this.terrainFacilitator={dirty:!0,matrix:t.an(new Float64Array(16)),renderTime:0},this.setup(),this.numSublayers=St.maxUnderzooming+St.maxOverzooming+1,this.depthEpsilon=1/Math.pow(2,16),this.crossTileSymbolIndex=new Mr}resize(R,ae,we){if(this.width=Math.floor(R*we),this.height=Math.floor(ae*we),this.pixelRatio=we,this.context.viewport.set([0,0,this.width,this.height]),this.style)for(let Se of this.style._order)this.style._layers[Se].resize()}setup(){let R=this.context,ae=new t.aX;ae.emplaceBack(0,0),ae.emplaceBack(t.X,0),ae.emplaceBack(0,t.X),ae.emplaceBack(t.X,t.X),this.tileExtentBuffer=R.createVertexBuffer(ae,oa.members),this.tileExtentSegments=t.a0.simpleSegment(0,0,4,2);let we=new t.aX;we.emplaceBack(0,0),we.emplaceBack(t.X,0),we.emplaceBack(0,t.X),we.emplaceBack(t.X,t.X),this.debugBuffer=R.createVertexBuffer(we,oa.members),this.debugSegments=t.a0.simpleSegment(0,0,4,5);let Se=new t.$;Se.emplaceBack(0,0,0,0),Se.emplaceBack(t.X,0,t.X,0),Se.emplaceBack(0,t.X,0,t.X),Se.emplaceBack(t.X,t.X,t.X,t.X),this.rasterBoundsBuffer=R.createVertexBuffer(Se,Ze.members),this.rasterBoundsSegments=t.a0.simpleSegment(0,0,4,2);let De=new t.aX;De.emplaceBack(0,0),De.emplaceBack(1,0),De.emplaceBack(0,1),De.emplaceBack(1,1),this.viewportBuffer=R.createVertexBuffer(De,oa.members),this.viewportSegments=t.a0.simpleSegment(0,0,4,2);let ft=new t.aZ;ft.emplaceBack(0),ft.emplaceBack(1),ft.emplaceBack(3),ft.emplaceBack(2),ft.emplaceBack(0),this.tileBorderIndexBuffer=R.createIndexBuffer(ft);let bt=new t.aY;bt.emplaceBack(0,1,2),bt.emplaceBack(2,1,3),this.quadTriangleIndexBuffer=R.createIndexBuffer(bt);let Dt=this.context.gl;this.stencilClearMode=new Ss({func:Dt.ALWAYS,mask:0},0,255,Dt.ZERO,Dt.ZERO,Dt.ZERO)}clearStencil(){let R=this.context,ae=R.gl;this.nextStencilID=1,this.currentStencilSource=void 0;let we=t.H();t.aP(we,0,this.width,this.height,0,0,1),t.K(we,we,[ae.drawingBufferWidth,ae.drawingBufferHeight,0]),this.useProgram("clippingMask").draw(R,ae.TRIANGLES,es.disabled,this.stencilClearMode,Qs.disabled,So.disabled,$n(we),null,"$clipping",this.viewportBuffer,this.quadTriangleIndexBuffer,this.viewportSegments)}_renderTileClippingMasks(R,ae){if(this.currentStencilSource===R.source||!R.isTileClipped()||!ae||!ae.length)return;this.currentStencilSource=R.source;let we=this.context,Se=we.gl;this.nextStencilID+ae.length>256&&this.clearStencil(),we.setColorMode(Qs.disabled),we.setDepthMode(es.disabled);let De=this.useProgram("clippingMask");this._tileClippingMaskIDs={};for(let ft of ae){let bt=this._tileClippingMaskIDs[ft.key]=this.nextStencilID++,Dt=this.style.map.terrain&&this.style.map.terrain.getTerrainData(ft);De.draw(we,Se.TRIANGLES,es.disabled,new Ss({func:Se.ALWAYS,mask:0},bt,255,Se.KEEP,Se.KEEP,Se.REPLACE),Qs.disabled,So.disabled,$n(ft.posMatrix),Dt,"$clipping",this.tileExtentBuffer,this.quadTriangleIndexBuffer,this.tileExtentSegments)}}stencilModeFor3D(){this.currentStencilSource=void 0,this.nextStencilID+1>256&&this.clearStencil();let R=this.nextStencilID++,ae=this.context.gl;return new Ss({func:ae.NOTEQUAL,mask:255},R,255,ae.KEEP,ae.KEEP,ae.REPLACE)}stencilModeForClipping(R){let ae=this.context.gl;return new Ss({func:ae.EQUAL,mask:255},this._tileClippingMaskIDs[R.key],0,ae.KEEP,ae.KEEP,ae.REPLACE)}stencilConfigForOverlap(R){let ae=this.context.gl,we=R.sort((ft,bt)=>bt.overscaledZ-ft.overscaledZ),Se=we[we.length-1].overscaledZ,De=we[0].overscaledZ-Se+1;if(De>1){this.currentStencilSource=void 0,this.nextStencilID+De>256&&this.clearStencil();let ft={};for(let bt=0;bt({u_sky_color:ht.properties.get("sky-color"),u_horizon_color:ht.properties.get("horizon-color"),u_horizon:(At.height/2+At.getHorizon())*_t,u_sky_horizon_blend:ht.properties.get("sky-horizon-blend")*At.height/2*_t}))(Yt,Dt.style.map.transform,Dt.pixelRatio),ea=new es(hr.LEQUAL,es.ReadWrite,[0,1]),qe=Ss.disabled,Je=Dt.colorModeForRenderPass(),ot=Dt.useProgram("sky");if(!Yt.mesh){let ht=new t.aX;ht.emplaceBack(-1,-1),ht.emplaceBack(1,-1),ht.emplaceBack(1,1),ht.emplaceBack(-1,1);let At=new t.aY;At.emplaceBack(0,1,2),At.emplaceBack(0,2,3),Yt.mesh=new Cu(cr.createVertexBuffer(ht,oa.members),cr.createIndexBuffer(At),t.a0.simpleSegment(0,0,ht.length,At.length))}ot.draw(cr,hr.TRIANGLES,ea,qe,Je,So.disabled,jr,void 0,"sky",Yt.mesh.vertexBuffer,Yt.mesh.indexBuffer,Yt.mesh.segments)}(this,this.style.sky),this._showOverdrawInspector=ae.showOverdrawInspector,this.depthRangeFor3D=[0,1-(R._order.length+2)*this.numSublayers*this.depthEpsilon],!this.renderToTexture)for(this.renderPass="opaque",this.currentLayer=we.length-1;this.currentLayer>=0;this.currentLayer--){let Dt=this.style._layers[we[this.currentLayer]],Yt=Se[Dt.source],cr=De[Dt.source];this._renderTileClippingMasks(Dt,cr),this.renderLayer(this,Yt,Dt,cr)}for(this.renderPass="translucent",this.currentLayer=0;this.currentLayerot.source&&!ot.isHidden(cr)?[Yt.sourceCaches[ot.source]]:[]),ea=jr.filter(ot=>ot.getSource().type==="vector"),qe=jr.filter(ot=>ot.getSource().type!=="vector"),Je=ot=>{(!hr||hr.getSource().maxzoomJe(ot)),hr||qe.forEach(ot=>Je(ot)),hr}(this.style,this.transform.zoom);Dt&&function(Yt,cr,hr){for(let jr=0;jr0),Se&&(t.b0(ae,we),this.terrainFacilitator.renderTime=Date.now(),this.terrainFacilitator.dirty=!1,function(De,ft){let bt=De.context,Dt=bt.gl,Yt=Qs.unblended,cr=new es(Dt.LEQUAL,es.ReadWrite,[0,1]),hr=ft.getTerrainMesh(),jr=ft.sourceCache.getRenderableTiles(),ea=De.useProgram("terrainDepth");bt.bindFramebuffer.set(ft.getFramebuffer("depth").framebuffer),bt.viewport.set([0,0,De.width/devicePixelRatio,De.height/devicePixelRatio]),bt.clear({color:t.aM.transparent,depth:1});for(let qe of jr){let Je=ft.getTerrainData(qe.tileID),ot={u_matrix:De.transform.calculatePosMatrix(qe.tileID.toUnwrapped()),u_ele_delta:ft.getMeshFrameDelta(De.transform.zoom)};ea.draw(bt,Dt.TRIANGLES,cr,Ss.disabled,Yt,So.backCCW,ot,Je,"terrain",hr.vertexBuffer,hr.indexBuffer,hr.segments)}bt.bindFramebuffer.set(null),bt.viewport.set([0,0,De.width,De.height])}(this,this.style.map.terrain),function(De,ft){let bt=De.context,Dt=bt.gl,Yt=Qs.unblended,cr=new es(Dt.LEQUAL,es.ReadWrite,[0,1]),hr=ft.getTerrainMesh(),jr=ft.getCoordsTexture(),ea=ft.sourceCache.getRenderableTiles(),qe=De.useProgram("terrainCoords");bt.bindFramebuffer.set(ft.getFramebuffer("coords").framebuffer),bt.viewport.set([0,0,De.width/devicePixelRatio,De.height/devicePixelRatio]),bt.clear({color:t.aM.transparent,depth:1}),ft.coordsIndex=[];for(let Je of ea){let ot=ft.getTerrainData(Je.tileID);bt.activeTexture.set(Dt.TEXTURE0),Dt.bindTexture(Dt.TEXTURE_2D,jr.texture);let ht={u_matrix:De.transform.calculatePosMatrix(Je.tileID.toUnwrapped()),u_terrain_coords_id:(255-ft.coordsIndex.length)/255,u_texture:0,u_ele_delta:ft.getMeshFrameDelta(De.transform.zoom)};qe.draw(bt,Dt.TRIANGLES,cr,Ss.disabled,Yt,So.backCCW,ht,ot,"terrain",hr.vertexBuffer,hr.indexBuffer,hr.segments),ft.coordsIndex.push(Je.tileID.key)}bt.bindFramebuffer.set(null),bt.viewport.set([0,0,De.width,De.height])}(this,this.style.map.terrain))}renderLayer(R,ae,we,Se){if(!we.isHidden(this.transform.zoom)&&(we.type==="background"||we.type==="custom"||(Se||[]).length))switch(this.id=we.id,we.type){case"symbol":(function(De,ft,bt,Dt,Yt){if(De.renderPass!=="translucent")return;let cr=Ss.disabled,hr=De.colorModeForRenderPass();(bt._unevaluatedLayout.hasValue("text-variable-anchor")||bt._unevaluatedLayout.hasValue("text-variable-anchor-offset"))&&function(jr,ea,qe,Je,ot,ht,At,_t,Pt){let er=ea.transform,nr=$a(),pr=ot==="map",Sr=ht==="map";for(let Wr of jr){let ha=Je.getTile(Wr),ga=ha.getBucket(qe);if(!ga||!ga.text||!ga.text.segments.get().length)continue;let Pa=t.ag(ga.textSizeData,er.zoom),Ja=Aa(ha,1,ea.transform.zoom),di=vr(Wr.posMatrix,Sr,pr,ea.transform,Ja),pi=qe.layout.get("icon-text-fit")!=="none"&&ga.hasIconData();if(Pa){let Ci=Math.pow(2,er.zoom-ha.tileID.overscaledZ),$i=ea.style.map.terrain?(Sn,ho)=>ea.style.map.terrain.getElevation(Wr,Sn,ho):null,Bn=nr.translatePosition(er,ha,At,_t);pf(ga,pr,Sr,Pt,er,di,Wr.posMatrix,Ci,Pa,pi,nr,Bn,Wr.toUnwrapped(),$i)}}}(Dt,De,bt,ft,bt.layout.get("text-rotation-alignment"),bt.layout.get("text-pitch-alignment"),bt.paint.get("text-translate"),bt.paint.get("text-translate-anchor"),Yt),bt.paint.get("icon-opacity").constantOr(1)!==0&&lh(De,ft,bt,Dt,!1,bt.paint.get("icon-translate"),bt.paint.get("icon-translate-anchor"),bt.layout.get("icon-rotation-alignment"),bt.layout.get("icon-pitch-alignment"),bt.layout.get("icon-keep-upright"),cr,hr),bt.paint.get("text-opacity").constantOr(1)!==0&&lh(De,ft,bt,Dt,!0,bt.paint.get("text-translate"),bt.paint.get("text-translate-anchor"),bt.layout.get("text-rotation-alignment"),bt.layout.get("text-pitch-alignment"),bt.layout.get("text-keep-upright"),cr,hr),ft.map.showCollisionBoxes&&(Ku(De,ft,bt,Dt,!0),Ku(De,ft,bt,Dt,!1))})(R,ae,we,Se,this.style.placement.variableOffsets);break;case"circle":(function(De,ft,bt,Dt){if(De.renderPass!=="translucent")return;let Yt=bt.paint.get("circle-opacity"),cr=bt.paint.get("circle-stroke-width"),hr=bt.paint.get("circle-stroke-opacity"),jr=!bt.layout.get("circle-sort-key").isConstant();if(Yt.constantOr(1)===0&&(cr.constantOr(1)===0||hr.constantOr(1)===0))return;let ea=De.context,qe=ea.gl,Je=De.depthModeForSublayer(0,es.ReadOnly),ot=Ss.disabled,ht=De.colorModeForRenderPass(),At=[];for(let _t=0;_t_t.sortKey-Pt.sortKey);for(let _t of At){let{programConfiguration:Pt,program:er,layoutVertexBuffer:nr,indexBuffer:pr,uniformValues:Sr,terrainData:Wr}=_t.state;er.draw(ea,qe.TRIANGLES,Je,ot,ht,So.disabled,Sr,Wr,bt.id,nr,pr,_t.segments,bt.paint,De.transform.zoom,Pt)}})(R,ae,we,Se);break;case"heatmap":(function(De,ft,bt,Dt){if(bt.paint.get("heatmap-opacity")===0)return;let Yt=De.context;if(De.style.map.terrain){for(let cr of Dt){let hr=ft.getTile(cr);ft.hasRenderableParent(cr)||(De.renderPass==="offscreen"?Rf(De,hr,bt,cr):De.renderPass==="translucent"&&Kc(De,bt,cr))}Yt.viewport.set([0,0,De.width,De.height])}else De.renderPass==="offscreen"?function(cr,hr,jr,ea){let qe=cr.context,Je=qe.gl,ot=Ss.disabled,ht=new Qs([Je.ONE,Je.ONE],t.aM.transparent,[!0,!0,!0,!0]);(function(At,_t,Pt){let er=At.gl;At.activeTexture.set(er.TEXTURE1),At.viewport.set([0,0,_t.width/4,_t.height/4]);let nr=Pt.heatmapFbos.get(t.aU);nr?(er.bindTexture(er.TEXTURE_2D,nr.colorAttachment.get()),At.bindFramebuffer.set(nr.framebuffer)):(nr=Yf(At,_t.width/4,_t.height/4),Pt.heatmapFbos.set(t.aU,nr))})(qe,cr,jr),qe.clear({color:t.aM.transparent});for(let At=0;At20&&cr.texParameterf(cr.TEXTURE_2D,Yt.extTextureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,Yt.extTextureFilterAnisotropicMax);let ga=De.style.map.terrain&&De.style.map.terrain.getTerrainData(At),Pa=ga?At:null,Ja=Pa?Pa.posMatrix:De.transform.calculatePosMatrix(At.toUnwrapped(),ht),di=Do(Ja,Wr||[0,0],Sr||1,pr,bt);hr instanceof at?jr.draw(Yt,cr.TRIANGLES,_t,Ss.disabled,ea,So.disabled,di,ga,bt.id,hr.boundsBuffer,De.quadTriangleIndexBuffer,hr.boundsSegments):jr.draw(Yt,cr.TRIANGLES,_t,qe[At.overscaledZ],ea,So.disabled,di,ga,bt.id,De.rasterBoundsBuffer,De.quadTriangleIndexBuffer,De.rasterBoundsSegments)}})(R,ae,we,Se);break;case"background":(function(De,ft,bt,Dt){let Yt=bt.paint.get("background-color"),cr=bt.paint.get("background-opacity");if(cr===0)return;let hr=De.context,jr=hr.gl,ea=De.transform,qe=ea.tileSize,Je=bt.paint.get("background-pattern");if(De.isPatternMissing(Je))return;let ot=!Je&&Yt.a===1&&cr===1&&De.opaquePassEnabledForLayer()?"opaque":"translucent";if(De.renderPass!==ot)return;let ht=Ss.disabled,At=De.depthModeForSublayer(0,ot==="opaque"?es.ReadWrite:es.ReadOnly),_t=De.colorModeForRenderPass(),Pt=De.useProgram(Je?"backgroundPattern":"background"),er=Dt||ea.coveringTiles({tileSize:qe,terrain:De.style.map.terrain});Je&&(hr.activeTexture.set(jr.TEXTURE0),De.imageManager.bind(De.context));let nr=bt.getCrossfadeParameters();for(let pr of er){let Sr=Dt?pr.posMatrix:De.transform.calculatePosMatrix(pr.toUnwrapped()),Wr=Je?Is(Sr,cr,De,Je,{tileID:pr,tileSize:qe},nr):ys(Sr,cr,Yt),ha=De.style.map.terrain&&De.style.map.terrain.getTerrainData(pr);Pt.draw(hr,jr.TRIANGLES,At,ht,_t,So.disabled,Wr,ha,bt.id,De.tileExtentBuffer,De.quadTriangleIndexBuffer,De.tileExtentSegments)}})(R,0,we,Se);break;case"custom":(function(De,ft,bt){let Dt=De.context,Yt=bt.implementation;if(De.renderPass==="offscreen"){let cr=Yt.prerender;cr&&(De.setCustomLayerDefaults(),Dt.setColorMode(De.colorModeForRenderPass()),cr.call(Yt,Dt.gl,De.transform.customLayerMatrix()),Dt.setDirty(),De.setBaseState())}else if(De.renderPass==="translucent"){De.setCustomLayerDefaults(),Dt.setColorMode(De.colorModeForRenderPass()),Dt.setStencilMode(Ss.disabled);let cr=Yt.renderingMode==="3d"?new es(De.context.gl.LEQUAL,es.ReadWrite,De.depthRangeFor3D):De.depthModeForSublayer(0,es.ReadOnly);Dt.setDepthMode(cr),Yt.render(Dt.gl,De.transform.customLayerMatrix(),{farZ:De.transform.farZ,nearZ:De.transform.nearZ,fov:De.transform._fov,modelViewProjectionMatrix:De.transform.modelViewProjectionMatrix,projectionMatrix:De.transform.projectionMatrix}),Dt.setDirty(),De.setBaseState(),Dt.bindFramebuffer.set(null)}})(R,0,we)}}translatePosMatrix(R,ae,we,Se,De){if(!we[0]&&!we[1])return R;let ft=De?Se==="map"?this.transform.angle:0:Se==="viewport"?-this.transform.angle:0;if(ft){let Yt=Math.sin(ft),cr=Math.cos(ft);we=[we[0]*cr-we[1]*Yt,we[0]*Yt+we[1]*cr]}let bt=[De?we[0]:Aa(ae,we[0],this.transform.zoom),De?we[1]:Aa(ae,we[1],this.transform.zoom),0],Dt=new Float32Array(16);return t.J(Dt,R,bt),Dt}saveTileTexture(R){let ae=this._tileTextures[R.size[0]];ae?ae.push(R):this._tileTextures[R.size[0]]=[R]}getTileTexture(R){let ae=this._tileTextures[R];return ae&&ae.length>0?ae.pop():null}isPatternMissing(R){if(!R)return!1;if(!R.from||!R.to)return!0;let ae=this.imageManager.getPattern(R.from.toString()),we=this.imageManager.getPattern(R.to.toString());return!ae||!we}useProgram(R,ae){this.cache=this.cache||{};let we=R+(ae?ae.cacheKey:"")+(this._showOverdrawInspector?"/overdraw":"")+(this.style.map.terrain?"/terrain":"");return this.cache[we]||(this.cache[we]=new ma(this.context,ca[R],ae,Fs[R],this._showOverdrawInspector,this.style.map.terrain)),this.cache[we]}setCustomLayerDefaults(){this.context.unbindVAO(),this.context.cullFace.setDefault(),this.context.activeTexture.setDefault(),this.context.pixelStoreUnpack.setDefault(),this.context.pixelStoreUnpackPremultiplyAlpha.setDefault(),this.context.pixelStoreUnpackFlipY.setDefault()}setBaseState(){let R=this.context.gl;this.context.cullFace.set(!1),this.context.viewport.set([0,0,this.width,this.height]),this.context.blendEquation.set(R.FUNC_ADD)}initDebugOverlayCanvas(){this.debugOverlayCanvas==null&&(this.debugOverlayCanvas=document.createElement("canvas"),this.debugOverlayCanvas.width=512,this.debugOverlayCanvas.height=512,this.debugOverlayTexture=new u(this.context,this.debugOverlayCanvas,this.context.gl.RGBA))}destroy(){this.debugOverlayTexture&&this.debugOverlayTexture.destroy()}overLimit(){let{drawingBufferWidth:R,drawingBufferHeight:ae}=this.context.gl;return this.width!==R||this.height!==ae}}class kl{constructor(R,ae){this.points=R,this.planes=ae}static fromInvProjectionMatrix(R,ae,we){let Se=Math.pow(2,we),De=[[-1,1,-1,1],[1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[-1,1,1,1],[1,1,1,1],[1,-1,1,1],[-1,-1,1,1]].map(bt=>{let Dt=1/(bt=t.af([],bt,R))[3]/ae*Se;return t.b1(bt,bt,[Dt,Dt,1/bt[3],Dt])}),ft=[[0,1,2],[6,5,4],[0,3,7],[2,1,5],[3,2,6],[0,4,5]].map(bt=>{let Dt=function(jr,ea){var qe=ea[0],Je=ea[1],ot=ea[2],ht=qe*qe+Je*Je+ot*ot;return ht>0&&(ht=1/Math.sqrt(ht)),jr[0]=ea[0]*ht,jr[1]=ea[1]*ht,jr[2]=ea[2]*ht,jr}([],function(jr,ea,qe){var Je=ea[0],ot=ea[1],ht=ea[2],At=qe[0],_t=qe[1],Pt=qe[2];return jr[0]=ot*Pt-ht*_t,jr[1]=ht*At-Je*Pt,jr[2]=Je*_t-ot*At,jr}([],E([],De[bt[0]],De[bt[1]]),E([],De[bt[2]],De[bt[1]]))),Yt=-((cr=Dt)[0]*(hr=De[bt[1]])[0]+cr[1]*hr[1]+cr[2]*hr[2]);var cr,hr;return Dt.concat(Yt)});return new kl(De,ft)}}class Fc{constructor(R,ae){this.min=R,this.max=ae,this.center=function(we,Se,De){return we[0]=.5*Se[0],we[1]=.5*Se[1],we[2]=.5*Se[2],we}([],function(we,Se,De){return we[0]=Se[0]+De[0],we[1]=Se[1]+De[1],we[2]=Se[2]+De[2],we}([],this.min,this.max))}quadrant(R){let ae=[R%2==0,R<2],we=w(this.min),Se=w(this.max);for(let De=0;De=0&&ft++;if(ft===0)return 0;ft!==ae.length&&(we=!1)}if(we)return 2;for(let Se=0;Se<3;Se++){let De=Number.MAX_VALUE,ft=-Number.MAX_VALUE;for(let bt=0;btthis.max[Se]-this.min[Se])return 0}return 1}}class $u{constructor(R=0,ae=0,we=0,Se=0){if(isNaN(R)||R<0||isNaN(ae)||ae<0||isNaN(we)||we<0||isNaN(Se)||Se<0)throw new Error("Invalid value for edge-insets, top, bottom, left and right must all be numbers");this.top=R,this.bottom=ae,this.left=we,this.right=Se}interpolate(R,ae,we){return ae.top!=null&&R.top!=null&&(this.top=t.y.number(R.top,ae.top,we)),ae.bottom!=null&&R.bottom!=null&&(this.bottom=t.y.number(R.bottom,ae.bottom,we)),ae.left!=null&&R.left!=null&&(this.left=t.y.number(R.left,ae.left,we)),ae.right!=null&&R.right!=null&&(this.right=t.y.number(R.right,ae.right,we)),this}getCenter(R,ae){let we=t.ac((this.left+R-this.right)/2,0,R),Se=t.ac((this.top+ae-this.bottom)/2,0,ae);return new t.P(we,Se)}equals(R){return this.top===R.top&&this.bottom===R.bottom&&this.left===R.left&&this.right===R.right}clone(){return new $u(this.top,this.bottom,this.left,this.right)}toJSON(){return{top:this.top,bottom:this.bottom,left:this.left,right:this.right}}}let vu=85.051129;class xl{constructor(R,ae,we,Se,De){this.tileSize=512,this._renderWorldCopies=De===void 0||!!De,this._minZoom=R||0,this._maxZoom=ae||22,this._minPitch=we??0,this._maxPitch=Se??60,this.setMaxBounds(),this.width=0,this.height=0,this._center=new t.N(0,0),this._elevation=0,this.zoom=0,this.angle=0,this._fov=.6435011087932844,this._pitch=0,this._unmodified=!0,this._edgeInsets=new $u,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={},this.minElevationForCurrentTile=0}clone(){let R=new xl(this._minZoom,this._maxZoom,this._minPitch,this.maxPitch,this._renderWorldCopies);return R.apply(this),R}apply(R){this.tileSize=R.tileSize,this.latRange=R.latRange,this.lngRange=R.lngRange,this.width=R.width,this.height=R.height,this._center=R._center,this._elevation=R._elevation,this.minElevationForCurrentTile=R.minElevationForCurrentTile,this.zoom=R.zoom,this.angle=R.angle,this._fov=R._fov,this._pitch=R._pitch,this._unmodified=R._unmodified,this._edgeInsets=R._edgeInsets.clone(),this._calcMatrices()}get minZoom(){return this._minZoom}set minZoom(R){this._minZoom!==R&&(this._minZoom=R,this.zoom=Math.max(this.zoom,R))}get maxZoom(){return this._maxZoom}set maxZoom(R){this._maxZoom!==R&&(this._maxZoom=R,this.zoom=Math.min(this.zoom,R))}get minPitch(){return this._minPitch}set minPitch(R){this._minPitch!==R&&(this._minPitch=R,this.pitch=Math.max(this.pitch,R))}get maxPitch(){return this._maxPitch}set maxPitch(R){this._maxPitch!==R&&(this._maxPitch=R,this.pitch=Math.min(this.pitch,R))}get renderWorldCopies(){return this._renderWorldCopies}set renderWorldCopies(R){R===void 0?R=!0:R===null&&(R=!1),this._renderWorldCopies=R}get worldSize(){return this.tileSize*this.scale}get centerOffset(){return this.centerPoint._sub(this.size._div(2))}get size(){return new t.P(this.width,this.height)}get bearing(){return-this.angle/Math.PI*180}set bearing(R){let ae=-t.b3(R,-180,180)*Math.PI/180;this.angle!==ae&&(this._unmodified=!1,this.angle=ae,this._calcMatrices(),this.rotationMatrix=function(){var we=new t.A(4);return t.A!=Float32Array&&(we[1]=0,we[2]=0),we[0]=1,we[3]=1,we}(),function(we,Se,De){var ft=Se[0],bt=Se[1],Dt=Se[2],Yt=Se[3],cr=Math.sin(De),hr=Math.cos(De);we[0]=ft*hr+Dt*cr,we[1]=bt*hr+Yt*cr,we[2]=ft*-cr+Dt*hr,we[3]=bt*-cr+Yt*hr}(this.rotationMatrix,this.rotationMatrix,this.angle))}get pitch(){return this._pitch/Math.PI*180}set pitch(R){let ae=t.ac(R,this.minPitch,this.maxPitch)/180*Math.PI;this._pitch!==ae&&(this._unmodified=!1,this._pitch=ae,this._calcMatrices())}get fov(){return this._fov/Math.PI*180}set fov(R){R=Math.max(.01,Math.min(60,R)),this._fov!==R&&(this._unmodified=!1,this._fov=R/180*Math.PI,this._calcMatrices())}get zoom(){return this._zoom}set zoom(R){let ae=Math.min(Math.max(R,this.minZoom),this.maxZoom);this._zoom!==ae&&(this._unmodified=!1,this._zoom=ae,this.tileZoom=Math.max(0,Math.floor(ae)),this.scale=this.zoomScale(ae),this._constrain(),this._calcMatrices())}get center(){return this._center}set center(R){R.lat===this._center.lat&&R.lng===this._center.lng||(this._unmodified=!1,this._center=R,this._constrain(),this._calcMatrices())}get elevation(){return this._elevation}set elevation(R){R!==this._elevation&&(this._elevation=R,this._constrain(),this._calcMatrices())}get padding(){return this._edgeInsets.toJSON()}set padding(R){this._edgeInsets.equals(R)||(this._unmodified=!1,this._edgeInsets.interpolate(this._edgeInsets,R,1),this._calcMatrices())}get centerPoint(){return this._edgeInsets.getCenter(this.width,this.height)}isPaddingEqual(R){return this._edgeInsets.equals(R)}interpolatePadding(R,ae,we){this._unmodified=!1,this._edgeInsets.interpolate(R,ae,we),this._constrain(),this._calcMatrices()}coveringZoomLevel(R){let ae=(R.roundZoom?Math.round:Math.floor)(this.zoom+this.scaleZoom(this.tileSize/R.tileSize));return Math.max(0,ae)}getVisibleUnwrappedCoordinates(R){let ae=[new t.b4(0,R)];if(this._renderWorldCopies){let we=this.pointCoordinate(new t.P(0,0)),Se=this.pointCoordinate(new t.P(this.width,0)),De=this.pointCoordinate(new t.P(this.width,this.height)),ft=this.pointCoordinate(new t.P(0,this.height)),bt=Math.floor(Math.min(we.x,Se.x,De.x,ft.x)),Dt=Math.floor(Math.max(we.x,Se.x,De.x,ft.x)),Yt=1;for(let cr=bt-Yt;cr<=Dt+Yt;cr++)cr!==0&&ae.push(new t.b4(cr,R))}return ae}coveringTiles(R){var ae,we;let Se=this.coveringZoomLevel(R),De=Se;if(R.minzoom!==void 0&&SeR.maxzoom&&(Se=R.maxzoom);let ft=this.pointCoordinate(this.getCameraPoint()),bt=t.Z.fromLngLat(this.center),Dt=Math.pow(2,Se),Yt=[Dt*ft.x,Dt*ft.y,0],cr=[Dt*bt.x,Dt*bt.y,0],hr=kl.fromInvProjectionMatrix(this.invModelViewProjectionMatrix,this.worldSize,Se),jr=R.minzoom||0;!R.terrain&&this.pitch<=60&&this._edgeInsets.top<.1&&(jr=Se);let ea=R.terrain?2/Math.min(this.tileSize,R.tileSize)*this.tileSize:3,qe=_t=>({aabb:new Fc([_t*Dt,0,0],[(_t+1)*Dt,Dt,0]),zoom:0,x:0,y:0,wrap:_t,fullyVisible:!1}),Je=[],ot=[],ht=Se,At=R.reparseOverscaled?De:Se;if(this._renderWorldCopies)for(let _t=1;_t<=3;_t++)Je.push(qe(-_t)),Je.push(qe(_t));for(Je.push(qe(0));Je.length>0;){let _t=Je.pop(),Pt=_t.x,er=_t.y,nr=_t.fullyVisible;if(!nr){let ga=_t.aabb.intersects(hr);if(ga===0)continue;nr=ga===2}let pr=R.terrain?Yt:cr,Sr=_t.aabb.distanceX(pr),Wr=_t.aabb.distanceY(pr),ha=Math.max(Math.abs(Sr),Math.abs(Wr));if(_t.zoom===ht||ha>ea+(1<=jr){let ga=ht-_t.zoom,Pa=Yt[0]-.5-(Pt<>1),di=_t.zoom+1,pi=_t.aabb.quadrant(ga);if(R.terrain){let Ci=new t.S(di,_t.wrap,di,Pa,Ja),$i=R.terrain.getMinMaxElevation(Ci),Bn=(ae=$i.minElevation)!==null&&ae!==void 0?ae:this.elevation,Sn=(we=$i.maxElevation)!==null&&we!==void 0?we:this.elevation;pi=new Fc([pi.min[0],pi.min[1],Bn],[pi.max[0],pi.max[1],Sn])}Je.push({aabb:pi,zoom:di,x:Pa,y:Ja,wrap:_t.wrap,fullyVisible:nr})}}return ot.sort((_t,Pt)=>_t.distanceSq-Pt.distanceSq).map(_t=>_t.tileID)}resize(R,ae){this.width=R,this.height=ae,this.pixelsToGLUnits=[2/R,-2/ae],this._constrain(),this._calcMatrices()}get unmodified(){return this._unmodified}zoomScale(R){return Math.pow(2,R)}scaleZoom(R){return Math.log(R)/Math.LN2}project(R){let ae=t.ac(R.lat,-85.051129,vu);return new t.P(t.O(R.lng)*this.worldSize,t.Q(ae)*this.worldSize)}unproject(R){return new t.Z(R.x/this.worldSize,R.y/this.worldSize).toLngLat()}get point(){return this.project(this.center)}getCameraPosition(){return{lngLat:this.pointLocation(this.getCameraPoint()),altitude:Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter+this.elevation}}recalculateZoom(R){let ae=this.elevation,we=Math.cos(this._pitch)*this.cameraToCenterDistance/this._pixelPerMeter,Se=this.pointLocation(this.centerPoint,R),De=R.getElevationForLngLatZoom(Se,this.tileZoom);if(!(this.elevation-De))return;let ft=we+ae-De,bt=Math.cos(this._pitch)*this.cameraToCenterDistance/ft/t.b5(1,Se.lat),Dt=this.scaleZoom(bt/this.tileSize);this._elevation=De,this._center=Se,this.zoom=Dt}setLocationAtPoint(R,ae){let we=this.pointCoordinate(ae),Se=this.pointCoordinate(this.centerPoint),De=this.locationCoordinate(R),ft=new t.Z(De.x-(we.x-Se.x),De.y-(we.y-Se.y));this.center=this.coordinateLocation(ft),this._renderWorldCopies&&(this.center=this.center.wrap())}locationPoint(R,ae){return ae?this.coordinatePoint(this.locationCoordinate(R),ae.getElevationForLngLatZoom(R,this.tileZoom),this.pixelMatrix3D):this.coordinatePoint(this.locationCoordinate(R))}pointLocation(R,ae){return this.coordinateLocation(this.pointCoordinate(R,ae))}locationCoordinate(R){return t.Z.fromLngLat(R)}coordinateLocation(R){return R&&R.toLngLat()}pointCoordinate(R,ae){if(ae){let jr=ae.pointCoordinate(R);if(jr!=null)return jr}let we=[R.x,R.y,0,1],Se=[R.x,R.y,1,1];t.af(we,we,this.pixelMatrixInverse),t.af(Se,Se,this.pixelMatrixInverse);let De=we[3],ft=Se[3],bt=we[1]/De,Dt=Se[1]/ft,Yt=we[2]/De,cr=Se[2]/ft,hr=Yt===cr?0:(0-Yt)/(cr-Yt);return new t.Z(t.y.number(we[0]/De,Se[0]/ft,hr)/this.worldSize,t.y.number(bt,Dt,hr)/this.worldSize)}coordinatePoint(R,ae=0,we=this.pixelMatrix){let Se=[R.x*this.worldSize,R.y*this.worldSize,ae,1];return t.af(Se,Se,we),new t.P(Se[0]/Se[3],Se[1]/Se[3])}getBounds(){let R=Math.max(0,this.height/2-this.getHorizon());return new ie().extend(this.pointLocation(new t.P(0,R))).extend(this.pointLocation(new t.P(this.width,R))).extend(this.pointLocation(new t.P(this.width,this.height))).extend(this.pointLocation(new t.P(0,this.height)))}getMaxBounds(){return this.latRange&&this.latRange.length===2&&this.lngRange&&this.lngRange.length===2?new ie([this.lngRange[0],this.latRange[0]],[this.lngRange[1],this.latRange[1]]):null}getHorizon(){return Math.tan(Math.PI/2-this._pitch)*this.cameraToCenterDistance*.85}setMaxBounds(R){R?(this.lngRange=[R.getWest(),R.getEast()],this.latRange=[R.getSouth(),R.getNorth()],this._constrain()):(this.lngRange=null,this.latRange=[-85.051129,vu])}calculateTileMatrix(R){let ae=R.canonical,we=this.worldSize/this.zoomScale(ae.z),Se=ae.x+Math.pow(2,ae.z)*R.wrap,De=t.an(new Float64Array(16));return t.J(De,De,[Se*we,ae.y*we,0]),t.K(De,De,[we/t.X,we/t.X,1]),De}calculatePosMatrix(R,ae=!1){let we=R.key,Se=ae?this._alignedPosMatrixCache:this._posMatrixCache;if(Se[we])return Se[we];let De=this.calculateTileMatrix(R);return t.L(De,ae?this.alignedModelViewProjectionMatrix:this.modelViewProjectionMatrix,De),Se[we]=new Float32Array(De),Se[we]}calculateFogMatrix(R){let ae=R.key,we=this._fogMatrixCache;if(we[ae])return we[ae];let Se=this.calculateTileMatrix(R);return t.L(Se,this.fogMatrix,Se),we[ae]=new Float32Array(Se),we[ae]}customLayerMatrix(){return this.mercatorMatrix.slice()}getConstrained(R,ae){ae=t.ac(+ae,this.minZoom,this.maxZoom);let we={center:new t.N(R.lng,R.lat),zoom:ae},Se=this.lngRange;if(!this._renderWorldCopies&&Se===null){let _t=179.9999999999;Se=[-_t,_t]}let De=this.tileSize*this.zoomScale(we.zoom),ft=0,bt=De,Dt=0,Yt=De,cr=0,hr=0,{x:jr,y:ea}=this.size;if(this.latRange){let _t=this.latRange;ft=t.Q(_t[1])*De,bt=t.Q(_t[0])*De,bt-ftbt&&(ht=bt-_t)}if(Se){let _t=(Dt+Yt)/2,Pt=qe;this._renderWorldCopies&&(Pt=t.b3(qe,_t-De/2,_t+De/2));let er=jr/2;Pt-erYt&&(ot=Yt-er)}if(ot!==void 0||ht!==void 0){let _t=new t.P(ot??qe,ht??Je);we.center=this.unproject.call({worldSize:De},_t).wrap()}return we}_constrain(){if(!this.center||!this.width||!this.height||this._constraining)return;this._constraining=!0;let R=this._unmodified,{center:ae,zoom:we}=this.getConstrained(this.center,this.zoom);this.center=ae,this.zoom=we,this._unmodified=R,this._constraining=!1}_calcMatrices(){if(!this.height)return;let R=this.centerOffset,ae=this.point.x,we=this.point.y;this.cameraToCenterDistance=.5/Math.tan(this._fov/2)*this.height,this._pixelPerMeter=t.b5(1,this.center.lat)*this.worldSize;let Se=t.an(new Float64Array(16));t.K(Se,Se,[this.width/2,-this.height/2,1]),t.J(Se,Se,[1,-1,0]),this.labelPlaneMatrix=Se,Se=t.an(new Float64Array(16)),t.K(Se,Se,[1,-1,1]),t.J(Se,Se,[-1,-1,0]),t.K(Se,Se,[2/this.width,2/this.height,1]),this.glCoordMatrix=Se;let De=this.cameraToCenterDistance+this._elevation*this._pixelPerMeter/Math.cos(this._pitch),ft=Math.min(this.elevation,this.minElevationForCurrentTile),bt=De-ft*this._pixelPerMeter/Math.cos(this._pitch),Dt=ft<0?bt:De,Yt=Math.PI/2+this._pitch,cr=this._fov*(.5+R.y/this.height),hr=Math.sin(cr)*Dt/Math.sin(t.ac(Math.PI-Yt-cr,.01,Math.PI-.01)),jr=this.getHorizon(),ea=2*Math.atan(jr/this.cameraToCenterDistance)*(.5+R.y/(2*jr)),qe=Math.sin(ea)*Dt/Math.sin(t.ac(Math.PI-Yt-ea,.01,Math.PI-.01)),Je=Math.min(hr,qe);this.farZ=1.01*(Math.cos(Math.PI/2-this._pitch)*Je+Dt),this.nearZ=this.height/50,Se=new Float64Array(16),t.b6(Se,this._fov,this.width/this.height,this.nearZ,this.farZ),Se[8]=2*-R.x/this.width,Se[9]=2*R.y/this.height,this.projectionMatrix=t.ae(Se),t.K(Se,Se,[1,-1,1]),t.J(Se,Se,[0,0,-this.cameraToCenterDistance]),t.b7(Se,Se,this._pitch),t.ad(Se,Se,this.angle),t.J(Se,Se,[-ae,-we,0]),this.mercatorMatrix=t.K([],Se,[this.worldSize,this.worldSize,this.worldSize]),t.K(Se,Se,[1,1,this._pixelPerMeter]),this.pixelMatrix=t.L(new Float64Array(16),this.labelPlaneMatrix,Se),t.J(Se,Se,[0,0,-this.elevation]),this.modelViewProjectionMatrix=Se,this.invModelViewProjectionMatrix=t.as([],Se),this.fogMatrix=new Float64Array(16),t.b6(this.fogMatrix,this._fov,this.width/this.height,De,this.farZ),this.fogMatrix[8]=2*-R.x/this.width,this.fogMatrix[9]=2*R.y/this.height,t.K(this.fogMatrix,this.fogMatrix,[1,-1,1]),t.J(this.fogMatrix,this.fogMatrix,[0,0,-this.cameraToCenterDistance]),t.b7(this.fogMatrix,this.fogMatrix,this._pitch),t.ad(this.fogMatrix,this.fogMatrix,this.angle),t.J(this.fogMatrix,this.fogMatrix,[-ae,-we,0]),t.K(this.fogMatrix,this.fogMatrix,[1,1,this._pixelPerMeter]),t.J(this.fogMatrix,this.fogMatrix,[0,0,-this.elevation]),this.pixelMatrix3D=t.L(new Float64Array(16),this.labelPlaneMatrix,Se);let ot=this.width%2/2,ht=this.height%2/2,At=Math.cos(this.angle),_t=Math.sin(this.angle),Pt=ae-Math.round(ae)+At*ot+_t*ht,er=we-Math.round(we)+At*ht+_t*ot,nr=new Float64Array(Se);if(t.J(nr,nr,[Pt>.5?Pt-1:Pt,er>.5?er-1:er,0]),this.alignedModelViewProjectionMatrix=nr,Se=t.as(new Float64Array(16),this.pixelMatrix),!Se)throw new Error("failed to invert matrix");this.pixelMatrixInverse=Se,this._posMatrixCache={},this._alignedPosMatrixCache={},this._fogMatrixCache={}}maxPitchScaleFactor(){if(!this.pixelMatrixInverse)return 1;let R=this.pointCoordinate(new t.P(0,0)),ae=[R.x*this.worldSize,R.y*this.worldSize,0,1];return t.af(ae,ae,this.pixelMatrix)[3]/this.cameraToCenterDistance}getCameraPoint(){let R=Math.tan(this._pitch)*(this.cameraToCenterDistance||1);return this.centerPoint.add(new t.P(0,R))}getCameraQueryGeometry(R){let ae=this.getCameraPoint();if(R.length===1)return[R[0],ae];{let we=ae.x,Se=ae.y,De=ae.x,ft=ae.y;for(let bt of R)we=Math.min(we,bt.x),Se=Math.min(Se,bt.y),De=Math.max(De,bt.x),ft=Math.max(ft,bt.y);return[new t.P(we,Se),new t.P(De,Se),new t.P(De,ft),new t.P(we,ft),new t.P(we,Se)]}}lngLatToCameraDepth(R,ae){let we=this.locationCoordinate(R),Se=[we.x*this.worldSize,we.y*this.worldSize,ae,1];return t.af(Se,Se,this.modelViewProjectionMatrix),Se[2]/Se[3]}}function hh(Oe,R){let ae,we=!1,Se=null,De=null,ft=()=>{Se=null,we&&(Oe.apply(De,ae),Se=setTimeout(ft,R),we=!1)};return(...bt)=>(we=!0,De=this,ae=bt,Se||ft(),Se)}class Sh{constructor(R){this._getCurrentHash=()=>{let ae=window.location.hash.replace("#","");if(this._hashName){let we;return ae.split("&").map(Se=>Se.split("=")).forEach(Se=>{Se[0]===this._hashName&&(we=Se)}),(we&&we[1]||"").split("/")}return ae.split("/")},this._onHashChange=()=>{let ae=this._getCurrentHash();if(ae.length>=3&&!ae.some(we=>isNaN(we))){let we=this._map.dragRotate.isEnabled()&&this._map.touchZoomRotate.isEnabled()?+(ae[3]||0):this._map.getBearing();return this._map.jumpTo({center:[+ae[2],+ae[1]],zoom:+ae[0],bearing:we,pitch:+(ae[4]||0)}),!0}return!1},this._updateHashUnthrottled=()=>{let ae=window.location.href.replace(/(#.*)?$/,this.getHashString());window.history.replaceState(window.history.state,null,ae)},this._removeHash=()=>{let ae=this._getCurrentHash();if(ae.length===0)return;let we=ae.join("/"),Se=we;Se.split("&").length>0&&(Se=Se.split("&")[0]),this._hashName&&(Se=`${this._hashName}=${we}`);let De=window.location.hash.replace(Se,"");De.startsWith("#&")?De=De.slice(0,1)+De.slice(2):De==="#"&&(De="");let ft=window.location.href.replace(/(#.+)?$/,De);ft=ft.replace("&&","&"),window.history.replaceState(window.history.state,null,ft)},this._updateHash=hh(this._updateHashUnthrottled,300),this._hashName=R&&encodeURIComponent(R)}addTo(R){return this._map=R,addEventListener("hashchange",this._onHashChange,!1),this._map.on("moveend",this._updateHash),this}remove(){return removeEventListener("hashchange",this._onHashChange,!1),this._map.off("moveend",this._updateHash),clearTimeout(this._updateHash()),this._removeHash(),delete this._map,this}getHashString(R){let ae=this._map.getCenter(),we=Math.round(100*this._map.getZoom())/100,Se=Math.ceil((we*Math.LN2+Math.log(512/360/.5))/Math.LN10),De=Math.pow(10,Se),ft=Math.round(ae.lng*De)/De,bt=Math.round(ae.lat*De)/De,Dt=this._map.getBearing(),Yt=this._map.getPitch(),cr="";if(cr+=R?`/${ft}/${bt}/${we}`:`${we}/${bt}/${ft}`,(Dt||Yt)&&(cr+="/"+Math.round(10*Dt)/10),Yt&&(cr+=`/${Math.round(Yt)}`),this._hashName){let hr=this._hashName,jr=!1,ea=window.location.hash.slice(1).split("&").map(qe=>{let Je=qe.split("=")[0];return Je===hr?(jr=!0,`${Je}=${cr}`):qe}).filter(qe=>qe);return jr||ea.push(`${hr}=${cr}`),`#${ea.join("&")}`}return`#${cr}`}}let Uu={linearity:.3,easing:t.b8(0,0,.3,1)},bc=t.e({deceleration:2500,maxSpeed:1400},Uu),lc=t.e({deceleration:20,maxSpeed:1400},Uu),hp=t.e({deceleration:1e3,maxSpeed:360},Uu),vf=t.e({deceleration:1e3,maxSpeed:90},Uu);class Tf{constructor(R){this._map=R,this.clear()}clear(){this._inertiaBuffer=[]}record(R){this._drainInertiaBuffer(),this._inertiaBuffer.push({time:i.now(),settings:R})}_drainInertiaBuffer(){let R=this._inertiaBuffer,ae=i.now();for(;R.length>0&&ae-R[0].time>160;)R.shift()}_onMoveEnd(R){if(this._drainInertiaBuffer(),this._inertiaBuffer.length<2)return;let ae={zoom:0,bearing:0,pitch:0,pan:new t.P(0,0),pinchAround:void 0,around:void 0};for(let{settings:De}of this._inertiaBuffer)ae.zoom+=De.zoomDelta||0,ae.bearing+=De.bearingDelta||0,ae.pitch+=De.pitchDelta||0,De.panDelta&&ae.pan._add(De.panDelta),De.around&&(ae.around=De.around),De.pinchAround&&(ae.pinchAround=De.pinchAround);let we=this._inertiaBuffer[this._inertiaBuffer.length-1].time-this._inertiaBuffer[0].time,Se={};if(ae.pan.mag()){let De=zf(ae.pan.mag(),we,t.e({},bc,R||{}));Se.offset=ae.pan.mult(De.amount/ae.pan.mag()),Se.center=this._map.transform.center,Lu(Se,De)}if(ae.zoom){let De=zf(ae.zoom,we,lc);Se.zoom=this._map.transform.zoom+De.amount,Lu(Se,De)}if(ae.bearing){let De=zf(ae.bearing,we,hp);Se.bearing=this._map.transform.bearing+t.ac(De.amount,-179,179),Lu(Se,De)}if(ae.pitch){let De=zf(ae.pitch,we,vf);Se.pitch=this._map.transform.pitch+De.amount,Lu(Se,De)}if(Se.zoom||Se.bearing){let De=ae.pinchAround===void 0?ae.around:ae.pinchAround;Se.around=De?this._map.unproject(De):this._map.getCenter()}return this.clear(),t.e(Se,{noMoveStart:!0})}}function Lu(Oe,R){(!Oe.duration||Oe.durationae.unproject(Dt)),bt=De.reduce((Dt,Yt,cr,hr)=>Dt.add(Yt.div(hr.length)),new t.P(0,0));super(R,{points:De,point:bt,lngLats:ft,lngLat:ae.unproject(bt),originalEvent:we}),this._defaultPrevented=!1}}class Mh extends t.k{preventDefault(){this._defaultPrevented=!0}get defaultPrevented(){return this._defaultPrevented}constructor(R,ae,we){super(R,{originalEvent:we}),this._defaultPrevented=!1}}class Ff{constructor(R,ae){this._map=R,this._clickTolerance=ae.clickTolerance}reset(){delete this._mousedownPos}wheel(R){return this._firePreventable(new Mh(R.type,this._map,R))}mousedown(R,ae){return this._mousedownPos=ae,this._firePreventable(new au(R.type,this._map,R))}mouseup(R){this._map.fire(new au(R.type,this._map,R))}click(R,ae){this._mousedownPos&&this._mousedownPos.dist(ae)>=this._clickTolerance||this._map.fire(new au(R.type,this._map,R))}dblclick(R){return this._firePreventable(new au(R.type,this._map,R))}mouseover(R){this._map.fire(new au(R.type,this._map,R))}mouseout(R){this._map.fire(new au(R.type,this._map,R))}touchstart(R){return this._firePreventable(new $c(R.type,this._map,R))}touchmove(R){this._map.fire(new $c(R.type,this._map,R))}touchend(R){this._map.fire(new $c(R.type,this._map,R))}touchcancel(R){this._map.fire(new $c(R.type,this._map,R))}_firePreventable(R){if(this._map.fire(R),R.defaultPrevented)return{}}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class il{constructor(R){this._map=R}reset(){this._delayContextMenu=!1,this._ignoreContextMenu=!0,delete this._contextMenuEvent}mousemove(R){this._map.fire(new au(R.type,this._map,R))}mousedown(){this._delayContextMenu=!0,this._ignoreContextMenu=!1}mouseup(){this._delayContextMenu=!1,this._contextMenuEvent&&(this._map.fire(new au("contextmenu",this._map,this._contextMenuEvent)),delete this._contextMenuEvent)}contextmenu(R){this._delayContextMenu?this._contextMenuEvent=R:this._ignoreContextMenu||this._map.fire(new au(R.type,this._map,R)),this._map.listens("contextmenu")&&R.preventDefault()}isEnabled(){return!0}isActive(){return!1}enable(){}disable(){}}class mu{constructor(R){this._map=R}get transform(){return this._map._requestedCameraState||this._map.transform}get center(){return{lng:this.transform.center.lng,lat:this.transform.center.lat}}get zoom(){return this.transform.zoom}get pitch(){return this.transform.pitch}get bearing(){return this.transform.bearing}unproject(R){return this.transform.pointLocation(t.P.convert(R),this._map.terrain)}}class gu{constructor(R,ae){this._map=R,this._tr=new mu(R),this._el=R.getCanvasContainer(),this._container=R.getContainer(),this._clickTolerance=ae.clickTolerance||1}isEnabled(){return!!this._enabled}isActive(){return!!this._active}enable(){this.isEnabled()||(this._enabled=!0)}disable(){this.isEnabled()&&(this._enabled=!1)}mousedown(R,ae){this.isEnabled()&&R.shiftKey&&R.button===0&&(n.disableDrag(),this._startPos=this._lastPos=ae,this._active=!0)}mousemoveWindow(R,ae){if(!this._active)return;let we=ae;if(this._lastPos.equals(we)||!this._box&&we.dist(this._startPos)De.fitScreenCoordinates(we,Se,this._tr.bearing,{linear:!0})};this._fireEvent("boxzoomcancel",R)}keydown(R){this._active&&R.keyCode===27&&(this.reset(),this._fireEvent("boxzoomcancel",R))}reset(){this._active=!1,this._container.classList.remove("maplibregl-crosshair"),this._box&&(n.remove(this._box),this._box=null),n.enableDrag(),delete this._startPos,delete this._lastPos}_fireEvent(R,ae){return this._map.fire(new t.k(R,{originalEvent:ae}))}}function Jf(Oe,R){if(Oe.length!==R.length)throw new Error(`The number of touches and points are not equal - touches ${Oe.length}, points ${R.length}`);let ae={};for(let we=0;wethis.numTouches)&&(this.aborted=!0),this.aborted||(this.startTime===void 0&&(this.startTime=R.timeStamp),we.length===this.numTouches&&(this.centroid=function(Se){let De=new t.P(0,0);for(let ft of Se)De._add(ft);return De.div(Se.length)}(ae),this.touches=Jf(we,ae)))}touchmove(R,ae,we){if(this.aborted||!this.centroid)return;let Se=Jf(we,ae);for(let De in this.touches){let ft=Se[De];(!ft||ft.dist(this.touches[De])>30)&&(this.aborted=!0)}}touchend(R,ae,we){if((!this.centroid||R.timeStamp-this.startTime>500)&&(this.aborted=!0),we.length===0){let Se=!this.aborted&&this.centroid;if(this.reset(),Se)return Se}}}class mf{constructor(R){this.singleTap=new el(R),this.numTaps=R.numTaps,this.reset()}reset(){this.lastTime=1/0,delete this.lastTap,this.count=0,this.singleTap.reset()}touchstart(R,ae,we){this.singleTap.touchstart(R,ae,we)}touchmove(R,ae,we){this.singleTap.touchmove(R,ae,we)}touchend(R,ae,we){let Se=this.singleTap.touchend(R,ae,we);if(Se){let De=R.timeStamp-this.lastTime<500,ft=!this.lastTap||this.lastTap.dist(Se)<30;if(De&&ft||this.reset(),this.count++,this.lastTime=R.timeStamp,this.lastTap=Se,this.count===this.numTaps)return this.reset(),Se}}}class wc{constructor(R){this._tr=new mu(R),this._zoomIn=new mf({numTouches:1,numTaps:2}),this._zoomOut=new mf({numTouches:2,numTaps:1}),this.reset()}reset(){this._active=!1,this._zoomIn.reset(),this._zoomOut.reset()}touchstart(R,ae,we){this._zoomIn.touchstart(R,ae,we),this._zoomOut.touchstart(R,ae,we)}touchmove(R,ae,we){this._zoomIn.touchmove(R,ae,we),this._zoomOut.touchmove(R,ae,we)}touchend(R,ae,we){let Se=this._zoomIn.touchend(R,ae,we),De=this._zoomOut.touchend(R,ae,we),ft=this._tr;return Se?(this._active=!0,R.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:bt=>bt.easeTo({duration:300,zoom:ft.zoom+1,around:ft.unproject(Se)},{originalEvent:R})}):De?(this._active=!0,R.preventDefault(),setTimeout(()=>this.reset(),0),{cameraAnimation:bt=>bt.easeTo({duration:300,zoom:ft.zoom-1,around:ft.unproject(De)},{originalEvent:R})}):void 0}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ju{constructor(R){this._enabled=!!R.enable,this._moveStateManager=R.moveStateManager,this._clickTolerance=R.clickTolerance||1,this._moveFunction=R.move,this._activateOnStart=!!R.activateOnStart,R.assignEvents(this),this.reset()}reset(R){this._active=!1,this._moved=!1,delete this._lastPoint,this._moveStateManager.endMove(R)}_move(...R){let ae=this._moveFunction(...R);if(ae.bearingDelta||ae.pitchDelta||ae.around||ae.panDelta)return this._active=!0,ae}dragStart(R,ae){this.isEnabled()&&!this._lastPoint&&this._moveStateManager.isValidStartEvent(R)&&(this._moveStateManager.startMove(R),this._lastPoint=ae.length?ae[0]:ae,this._activateOnStart&&this._lastPoint&&(this._active=!0))}dragMove(R,ae){if(!this.isEnabled())return;let we=this._lastPoint;if(!we)return;if(R.preventDefault(),!this._moveStateManager.isValidMoveEvent(R))return void this.reset(R);let Se=ae.length?ae[0]:ae;return!this._moved&&Se.dist(we){Oe.mousedown=Oe.dragStart,Oe.mousemoveWindow=Oe.dragMove,Oe.mouseup=Oe.dragEnd,Oe.contextmenu=R=>{R.preventDefault()}},Vl=({enable:Oe,clickTolerance:R,bearingDegreesPerPixelMoved:ae=.8})=>{let we=new uc({checkCorrectEvent:Se=>n.mouseButton(Se)===0&&Se.ctrlKey||n.mouseButton(Se)===2});return new ju({clickTolerance:R,move:(Se,De)=>({bearingDelta:(De.x-Se.x)*ae}),moveStateManager:we,enable:Oe,assignEvents:$f})},Qf=({enable:Oe,clickTolerance:R,pitchDegreesPerPixelMoved:ae=-.5})=>{let we=new uc({checkCorrectEvent:Se=>n.mouseButton(Se)===0&&Se.ctrlKey||n.mouseButton(Se)===2});return new ju({clickTolerance:R,move:(Se,De)=>({pitchDelta:(De.y-Se.y)*ae}),moveStateManager:we,enable:Oe,assignEvents:$f})};class Vu{constructor(R,ae){this._clickTolerance=R.clickTolerance||1,this._map=ae,this.reset()}reset(){this._active=!1,this._touches={},this._sum=new t.P(0,0)}_shouldBePrevented(R){return R<(this._map.cooperativeGestures.isEnabled()?2:1)}touchstart(R,ae,we){return this._calculateTransform(R,ae,we)}touchmove(R,ae,we){if(this._active){if(!this._shouldBePrevented(we.length))return R.preventDefault(),this._calculateTransform(R,ae,we);this._map.cooperativeGestures.notifyGestureBlocked("touch_pan",R)}}touchend(R,ae,we){this._calculateTransform(R,ae,we),this._active&&this._shouldBePrevented(we.length)&&this.reset()}touchcancel(){this.reset()}_calculateTransform(R,ae,we){we.length>0&&(this._active=!0);let Se=Jf(we,ae),De=new t.P(0,0),ft=new t.P(0,0),bt=0;for(let Yt in Se){let cr=Se[Yt],hr=this._touches[Yt];hr&&(De._add(cr),ft._add(cr.sub(hr)),bt++,Se[Yt]=cr)}if(this._touches=Se,this._shouldBePrevented(bt)||!ft.mag())return;let Dt=ft.div(bt);return this._sum._add(Dt),this._sum.mag()Math.abs(Oe.x)}class ef extends Tc{constructor(R){super(),this._currentTouchCount=0,this._map=R}reset(){super.reset(),this._valid=void 0,delete this._firstMove,delete this._lastPoints}touchstart(R,ae,we){super.touchstart(R,ae,we),this._currentTouchCount=we.length}_start(R){this._lastPoints=R,Qu(R[0].sub(R[1]))&&(this._valid=!1)}_move(R,ae,we){if(this._map.cooperativeGestures.isEnabled()&&this._currentTouchCount<3)return;let Se=R[0].sub(this._lastPoints[0]),De=R[1].sub(this._lastPoints[1]);return this._valid=this.gestureBeginsVertically(Se,De,we.timeStamp),this._valid?(this._lastPoints=R,this._active=!0,{pitchDelta:(Se.y+De.y)/2*-.5}):void 0}gestureBeginsVertically(R,ae,we){if(this._valid!==void 0)return this._valid;let Se=R.mag()>=2,De=ae.mag()>=2;if(!Se&&!De)return;if(!Se||!De)return this._firstMove===void 0&&(this._firstMove=we),we-this._firstMove<100&&void 0;let ft=R.y>0==ae.y>0;return Qu(R)&&Qu(ae)&&ft}}let Zt={panStep:100,bearingStep:15,pitchStep:10};class fr{constructor(R){this._tr=new mu(R);let ae=Zt;this._panStep=ae.panStep,this._bearingStep=ae.bearingStep,this._pitchStep=ae.pitchStep,this._rotationDisabled=!1}reset(){this._active=!1}keydown(R){if(R.altKey||R.ctrlKey||R.metaKey)return;let ae=0,we=0,Se=0,De=0,ft=0;switch(R.keyCode){case 61:case 107:case 171:case 187:ae=1;break;case 189:case 109:case 173:ae=-1;break;case 37:R.shiftKey?we=-1:(R.preventDefault(),De=-1);break;case 39:R.shiftKey?we=1:(R.preventDefault(),De=1);break;case 38:R.shiftKey?Se=1:(R.preventDefault(),ft=-1);break;case 40:R.shiftKey?Se=-1:(R.preventDefault(),ft=1);break;default:return}return this._rotationDisabled&&(we=0,Se=0),{cameraAnimation:bt=>{let Dt=this._tr;bt.easeTo({duration:300,easeId:"keyboardHandler",easing:Yr,zoom:ae?Math.round(Dt.zoom)+ae*(R.shiftKey?2:1):Dt.zoom,bearing:Dt.bearing+we*this._bearingStep,pitch:Dt.pitch+Se*this._pitchStep,offset:[-De*this._panStep,-ft*this._panStep],center:Dt.center},{originalEvent:R})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}disableRotation(){this._rotationDisabled=!0}enableRotation(){this._rotationDisabled=!1}}function Yr(Oe){return Oe*(2-Oe)}let qr=4.000244140625;class ba{constructor(R,ae){this._onTimeout=we=>{this._type="wheel",this._delta-=this._lastValue,this._active||this._start(we)},this._map=R,this._tr=new mu(R),this._triggerRenderFrame=ae,this._delta=0,this._defaultZoomRate=.01,this._wheelZoomRate=.0022222222222222222}setZoomRate(R){this._defaultZoomRate=R}setWheelZoomRate(R){this._wheelZoomRate=R}isEnabled(){return!!this._enabled}isActive(){return!!this._active||this._finishTimeout!==void 0}isZooming(){return!!this._zooming}enable(R){this.isEnabled()||(this._enabled=!0,this._aroundCenter=!!R&&R.around==="center")}disable(){this.isEnabled()&&(this._enabled=!1)}_shouldBePrevented(R){return!!this._map.cooperativeGestures.isEnabled()&&!(R.ctrlKey||this._map.cooperativeGestures.isBypassed(R))}wheel(R){if(!this.isEnabled())return;if(this._shouldBePrevented(R))return void this._map.cooperativeGestures.notifyGestureBlocked("wheel_zoom",R);let ae=R.deltaMode===WheelEvent.DOM_DELTA_LINE?40*R.deltaY:R.deltaY,we=i.now(),Se=we-(this._lastWheelEventTime||0);this._lastWheelEventTime=we,ae!==0&&ae%qr==0?this._type="wheel":ae!==0&&Math.abs(ae)<4?this._type="trackpad":Se>400?(this._type=null,this._lastValue=ae,this._timeout=setTimeout(this._onTimeout,40,R)):this._type||(this._type=Math.abs(Se*ae)<200?"trackpad":"wheel",this._timeout&&(clearTimeout(this._timeout),this._timeout=null,ae+=this._lastValue)),R.shiftKey&&ae&&(ae/=4),this._type&&(this._lastWheelEvent=R,this._delta-=ae,this._active||this._start(R)),R.preventDefault()}_start(R){if(!this._delta)return;this._frameId&&(this._frameId=null),this._active=!0,this.isZooming()||(this._zooming=!0),this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout);let ae=n.mousePos(this._map.getCanvas(),R),we=this._tr;this._around=ae.y>we.transform.height/2-we.transform.getHorizon()?t.N.convert(this._aroundCenter?we.center:we.unproject(ae)):t.N.convert(we.center),this._aroundPoint=we.transform.locationPoint(this._around),this._frameId||(this._frameId=!0,this._triggerRenderFrame())}renderFrame(){if(!this._frameId||(this._frameId=null,!this.isActive()))return;let R=this._tr.transform;if(this._delta!==0){let Dt=this._type==="wheel"&&Math.abs(this._delta)>qr?this._wheelZoomRate:this._defaultZoomRate,Yt=2/(1+Math.exp(-Math.abs(this._delta*Dt)));this._delta<0&&Yt!==0&&(Yt=1/Yt);let cr=typeof this._targetZoom=="number"?R.zoomScale(this._targetZoom):R.scale;this._targetZoom=Math.min(R.maxZoom,Math.max(R.minZoom,R.scaleZoom(cr*Yt))),this._type==="wheel"&&(this._startZoom=R.zoom,this._easing=this._smoothOutEasing(200)),this._delta=0}let ae=typeof this._targetZoom=="number"?this._targetZoom:R.zoom,we=this._startZoom,Se=this._easing,De,ft=!1,bt=i.now()-this._lastWheelEventTime;if(this._type==="wheel"&&we&&Se&&bt){let Dt=Math.min(bt/200,1),Yt=Se(Dt);De=t.y.number(we,ae,Yt),Dt<1?this._frameId||(this._frameId=!0):ft=!0}else De=ae,ft=!0;return this._active=!0,ft&&(this._active=!1,this._finishTimeout=setTimeout(()=>{this._zooming=!1,this._triggerRenderFrame(),delete this._targetZoom,delete this._finishTimeout},200)),{noInertia:!0,needsRenderFrame:!ft,zoomDelta:De-R.zoom,around:this._aroundPoint,originalEvent:this._lastWheelEvent}}_smoothOutEasing(R){let ae=t.b9;if(this._prevEase){let we=this._prevEase,Se=(i.now()-we.start)/we.duration,De=we.easing(Se+.01)-we.easing(Se),ft=.27/Math.sqrt(De*De+1e-4)*.01,bt=Math.sqrt(.0729-ft*ft);ae=t.b8(ft,bt,.25,1)}return this._prevEase={start:i.now(),duration:R,easing:ae},ae}reset(){this._active=!1,this._zooming=!1,delete this._targetZoom,this._finishTimeout&&(clearTimeout(this._finishTimeout),delete this._finishTimeout)}}class Ka{constructor(R,ae){this._clickZoom=R,this._tapZoom=ae}enable(){this._clickZoom.enable(),this._tapZoom.enable()}disable(){this._clickZoom.disable(),this._tapZoom.disable()}isEnabled(){return this._clickZoom.isEnabled()&&this._tapZoom.isEnabled()}isActive(){return this._clickZoom.isActive()||this._tapZoom.isActive()}}class oi{constructor(R){this._tr=new mu(R),this.reset()}reset(){this._active=!1}dblclick(R,ae){return R.preventDefault(),{cameraAnimation:we=>{we.easeTo({duration:300,zoom:this._tr.zoom+(R.shiftKey?-1:1),around:this._tr.unproject(ae)},{originalEvent:R})}}}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class yi{constructor(){this._tap=new mf({numTouches:1,numTaps:1}),this.reset()}reset(){this._active=!1,delete this._swipePoint,delete this._swipeTouch,delete this._tapTime,delete this._tapPoint,this._tap.reset()}touchstart(R,ae,we){if(!this._swipePoint)if(this._tapTime){let Se=ae[0],De=R.timeStamp-this._tapTime<500,ft=this._tapPoint.dist(Se)<30;De&&ft?we.length>0&&(this._swipePoint=Se,this._swipeTouch=we[0].identifier):this.reset()}else this._tap.touchstart(R,ae,we)}touchmove(R,ae,we){if(this._tapTime){if(this._swipePoint){if(we[0].identifier!==this._swipeTouch)return;let Se=ae[0],De=Se.y-this._swipePoint.y;return this._swipePoint=Se,R.preventDefault(),this._active=!0,{zoomDelta:De/128}}}else this._tap.touchmove(R,ae,we)}touchend(R,ae,we){if(this._tapTime)this._swipePoint&&we.length===0&&this.reset();else{let Se=this._tap.touchend(R,ae,we);Se&&(this._tapTime=R.timeStamp,this._tapPoint=Se)}}touchcancel(){this.reset()}enable(){this._enabled=!0}disable(){this._enabled=!1,this.reset()}isEnabled(){return this._enabled}isActive(){return this._active}}class ki{constructor(R,ae,we){this._el=R,this._mousePan=ae,this._touchPan=we}enable(R){this._inertiaOptions=R||{},this._mousePan.enable(),this._touchPan.enable(),this._el.classList.add("maplibregl-touch-drag-pan")}disable(){this._mousePan.disable(),this._touchPan.disable(),this._el.classList.remove("maplibregl-touch-drag-pan")}isEnabled(){return this._mousePan.isEnabled()&&this._touchPan.isEnabled()}isActive(){return this._mousePan.isActive()||this._touchPan.isActive()}}class Bi{constructor(R,ae,we){this._pitchWithRotate=R.pitchWithRotate,this._mouseRotate=ae,this._mousePitch=we}enable(){this._mouseRotate.enable(),this._pitchWithRotate&&this._mousePitch.enable()}disable(){this._mouseRotate.disable(),this._mousePitch.disable()}isEnabled(){return this._mouseRotate.isEnabled()&&(!this._pitchWithRotate||this._mousePitch.isEnabled())}isActive(){return this._mouseRotate.isActive()||this._mousePitch.isActive()}}class li{constructor(R,ae,we,Se){this._el=R,this._touchZoom=ae,this._touchRotate=we,this._tapDragZoom=Se,this._rotationDisabled=!1,this._enabled=!0}enable(R){this._touchZoom.enable(R),this._rotationDisabled||this._touchRotate.enable(R),this._tapDragZoom.enable(),this._el.classList.add("maplibregl-touch-zoom-rotate")}disable(){this._touchZoom.disable(),this._touchRotate.disable(),this._tapDragZoom.disable(),this._el.classList.remove("maplibregl-touch-zoom-rotate")}isEnabled(){return this._touchZoom.isEnabled()&&(this._rotationDisabled||this._touchRotate.isEnabled())&&this._tapDragZoom.isEnabled()}isActive(){return this._touchZoom.isActive()||this._touchRotate.isActive()||this._tapDragZoom.isActive()}disableRotation(){this._rotationDisabled=!0,this._touchRotate.disable()}enableRotation(){this._rotationDisabled=!1,this._touchZoom.isEnabled()&&this._touchRotate.enable()}}class _i{constructor(R,ae){this._bypassKey=navigator.userAgent.indexOf("Mac")!==-1?"metaKey":"ctrlKey",this._map=R,this._options=ae,this._enabled=!1}isActive(){return!1}reset(){}_setupUI(){if(this._container)return;let R=this._map.getCanvasContainer();R.classList.add("maplibregl-cooperative-gestures"),this._container=n.create("div","maplibregl-cooperative-gesture-screen",R);let ae=this._map._getUIString("CooperativeGesturesHandler.WindowsHelpText");this._bypassKey==="metaKey"&&(ae=this._map._getUIString("CooperativeGesturesHandler.MacHelpText"));let we=this._map._getUIString("CooperativeGesturesHandler.MobileHelpText"),Se=document.createElement("div");Se.className="maplibregl-desktop-message",Se.textContent=ae,this._container.appendChild(Se);let De=document.createElement("div");De.className="maplibregl-mobile-message",De.textContent=we,this._container.appendChild(De),this._container.setAttribute("aria-hidden","true")}_destroyUI(){this._container&&(n.remove(this._container),this._map.getCanvasContainer().classList.remove("maplibregl-cooperative-gestures")),delete this._container}enable(){this._setupUI(),this._enabled=!0}disable(){this._enabled=!1,this._destroyUI()}isEnabled(){return this._enabled}isBypassed(R){return R[this._bypassKey]}notifyGestureBlocked(R,ae){this._enabled&&(this._map.fire(new t.k("cooperativegestureprevented",{gestureType:R,originalEvent:ae})),this._container.classList.add("maplibregl-show"),setTimeout(()=>{this._container.classList.remove("maplibregl-show")},100))}}let vi=Oe=>Oe.zoom||Oe.drag||Oe.pitch||Oe.rotate;class ti extends t.k{}function rn(Oe){return Oe.panDelta&&Oe.panDelta.mag()||Oe.zoomDelta||Oe.bearingDelta||Oe.pitchDelta}class Kn{constructor(R,ae){this.handleWindowEvent=Se=>{this.handleEvent(Se,`${Se.type}Window`)},this.handleEvent=(Se,De)=>{if(Se.type==="blur")return void this.stop(!0);this._updatingCamera=!0;let ft=Se.type==="renderFrame"?void 0:Se,bt={needsRenderFrame:!1},Dt={},Yt={},cr=Se.touches,hr=cr?this._getMapTouches(cr):void 0,jr=hr?n.touchPos(this._map.getCanvas(),hr):n.mousePos(this._map.getCanvas(),Se);for(let{handlerName:Je,handler:ot,allowed:ht}of this._handlers){if(!ot.isEnabled())continue;let At;this._blockedByActive(Yt,ht,Je)?ot.reset():ot[De||Se.type]&&(At=ot[De||Se.type](Se,jr,hr),this.mergeHandlerResult(bt,Dt,At,Je,ft),At&&At.needsRenderFrame&&this._triggerRenderFrame()),(At||ot.isActive())&&(Yt[Je]=ot)}let ea={};for(let Je in this._previousActiveHandlers)Yt[Je]||(ea[Je]=ft);this._previousActiveHandlers=Yt,(Object.keys(ea).length||rn(bt))&&(this._changes.push([bt,Dt,ea]),this._triggerRenderFrame()),(Object.keys(Yt).length||rn(bt))&&this._map._stop(!0),this._updatingCamera=!1;let{cameraAnimation:qe}=bt;qe&&(this._inertia.clear(),this._fireEvents({},{},!0),this._changes=[],qe(this._map))},this._map=R,this._el=this._map.getCanvasContainer(),this._handlers=[],this._handlersById={},this._changes=[],this._inertia=new Tf(R),this._bearingSnap=ae.bearingSnap,this._previousActiveHandlers={},this._eventsInProgress={},this._addDefaultHandlers(ae);let we=this._el;this._listeners=[[we,"touchstart",{passive:!0}],[we,"touchmove",{passive:!1}],[we,"touchend",void 0],[we,"touchcancel",void 0],[we,"mousedown",void 0],[we,"mousemove",void 0],[we,"mouseup",void 0],[document,"mousemove",{capture:!0}],[document,"mouseup",void 0],[we,"mouseover",void 0],[we,"mouseout",void 0],[we,"dblclick",void 0],[we,"click",void 0],[we,"keydown",{capture:!1}],[we,"keyup",void 0],[we,"wheel",{passive:!1}],[we,"contextmenu",void 0],[window,"blur",void 0]];for(let[Se,De,ft]of this._listeners)n.addEventListener(Se,De,Se===document?this.handleWindowEvent:this.handleEvent,ft)}destroy(){for(let[R,ae,we]of this._listeners)n.removeEventListener(R,ae,R===document?this.handleWindowEvent:this.handleEvent,we)}_addDefaultHandlers(R){let ae=this._map,we=ae.getCanvasContainer();this._add("mapEvent",new Ff(ae,R));let Se=ae.boxZoom=new gu(ae,R);this._add("boxZoom",Se),R.interactive&&R.boxZoom&&Se.enable();let De=ae.cooperativeGestures=new _i(ae,R.cooperativeGestures);this._add("cooperativeGestures",De),R.cooperativeGestures&&De.enable();let ft=new wc(ae),bt=new oi(ae);ae.doubleClickZoom=new Ka(bt,ft),this._add("tapZoom",ft),this._add("clickZoom",bt),R.interactive&&R.doubleClickZoom&&ae.doubleClickZoom.enable();let Dt=new yi;this._add("tapDragZoom",Dt);let Yt=ae.touchPitch=new ef(ae);this._add("touchPitch",Yt),R.interactive&&R.touchPitch&&ae.touchPitch.enable(R.touchPitch);let cr=Vl(R),hr=Qf(R);ae.dragRotate=new Bi(R,cr,hr),this._add("mouseRotate",cr,["mousePitch"]),this._add("mousePitch",hr,["mouseRotate"]),R.interactive&&R.dragRotate&&ae.dragRotate.enable();let jr=(({enable:At,clickTolerance:_t})=>{let Pt=new uc({checkCorrectEvent:er=>n.mouseButton(er)===0&&!er.ctrlKey});return new ju({clickTolerance:_t,move:(er,nr)=>({around:nr,panDelta:nr.sub(er)}),activateOnStart:!0,moveStateManager:Pt,enable:At,assignEvents:$f})})(R),ea=new Vu(R,ae);ae.dragPan=new ki(we,jr,ea),this._add("mousePan",jr),this._add("touchPan",ea,["touchZoom","touchRotate"]),R.interactive&&R.dragPan&&ae.dragPan.enable(R.dragPan);let qe=new Oc,Je=new iu;ae.touchZoomRotate=new li(we,Je,qe,Dt),this._add("touchRotate",qe,["touchPan","touchZoom"]),this._add("touchZoom",Je,["touchPan","touchRotate"]),R.interactive&&R.touchZoomRotate&&ae.touchZoomRotate.enable(R.touchZoomRotate);let ot=ae.scrollZoom=new ba(ae,()=>this._triggerRenderFrame());this._add("scrollZoom",ot,["mousePan"]),R.interactive&&R.scrollZoom&&ae.scrollZoom.enable(R.scrollZoom);let ht=ae.keyboard=new fr(ae);this._add("keyboard",ht),R.interactive&&R.keyboard&&ae.keyboard.enable(),this._add("blockableMapEvent",new il(ae))}_add(R,ae,we){this._handlers.push({handlerName:R,handler:ae,allowed:we}),this._handlersById[R]=ae}stop(R){if(!this._updatingCamera){for(let{handler:ae}of this._handlers)ae.reset();this._inertia.clear(),this._fireEvents({},{},R),this._changes=[]}}isActive(){for(let{handler:R}of this._handlers)if(R.isActive())return!0;return!1}isZooming(){return!!this._eventsInProgress.zoom||this._map.scrollZoom.isZooming()}isRotating(){return!!this._eventsInProgress.rotate}isMoving(){return!!vi(this._eventsInProgress)||this.isZooming()}_blockedByActive(R,ae,we){for(let Se in R)if(Se!==we&&(!ae||ae.indexOf(Se)<0))return!0;return!1}_getMapTouches(R){let ae=[];for(let we of R)this._el.contains(we.target)&&ae.push(we);return ae}mergeHandlerResult(R,ae,we,Se,De){if(!we)return;t.e(R,we);let ft={handlerName:Se,originalEvent:we.originalEvent||De};we.zoomDelta!==void 0&&(ae.zoom=ft),we.panDelta!==void 0&&(ae.drag=ft),we.pitchDelta!==void 0&&(ae.pitch=ft),we.bearingDelta!==void 0&&(ae.rotate=ft)}_applyChanges(){let R={},ae={},we={};for(let[Se,De,ft]of this._changes)Se.panDelta&&(R.panDelta=(R.panDelta||new t.P(0,0))._add(Se.panDelta)),Se.zoomDelta&&(R.zoomDelta=(R.zoomDelta||0)+Se.zoomDelta),Se.bearingDelta&&(R.bearingDelta=(R.bearingDelta||0)+Se.bearingDelta),Se.pitchDelta&&(R.pitchDelta=(R.pitchDelta||0)+Se.pitchDelta),Se.around!==void 0&&(R.around=Se.around),Se.pinchAround!==void 0&&(R.pinchAround=Se.pinchAround),Se.noInertia&&(R.noInertia=Se.noInertia),t.e(ae,De),t.e(we,ft);this._updateMapTransform(R,ae,we),this._changes=[]}_updateMapTransform(R,ae,we){let Se=this._map,De=Se._getTransformForUpdate(),ft=Se.terrain;if(!(rn(R)||ft&&this._terrainMovement))return this._fireEvents(ae,we,!0);let{panDelta:bt,zoomDelta:Dt,bearingDelta:Yt,pitchDelta:cr,around:hr,pinchAround:jr}=R;jr!==void 0&&(hr=jr),Se._stop(!0),hr=hr||Se.transform.centerPoint;let ea=De.pointLocation(bt?hr.sub(bt):hr);Yt&&(De.bearing+=Yt),cr&&(De.pitch+=cr),Dt&&(De.zoom+=Dt),ft?this._terrainMovement||!ae.drag&&!ae.zoom?ae.drag&&this._terrainMovement?De.center=De.pointLocation(De.centerPoint.sub(bt)):De.setLocationAtPoint(ea,hr):(this._terrainMovement=!0,this._map._elevationFreeze=!0,De.setLocationAtPoint(ea,hr)):De.setLocationAtPoint(ea,hr),Se._applyUpdatedTransform(De),this._map._update(),R.noInertia||this._inertia.record(R),this._fireEvents(ae,we,!0)}_fireEvents(R,ae,we){let Se=vi(this._eventsInProgress),De=vi(R),ft={};for(let hr in R){let{originalEvent:jr}=R[hr];this._eventsInProgress[hr]||(ft[`${hr}start`]=jr),this._eventsInProgress[hr]=R[hr]}!Se&&De&&this._fireEvent("movestart",De.originalEvent);for(let hr in ft)this._fireEvent(hr,ft[hr]);De&&this._fireEvent("move",De.originalEvent);for(let hr in R){let{originalEvent:jr}=R[hr];this._fireEvent(hr,jr)}let bt={},Dt;for(let hr in this._eventsInProgress){let{handlerName:jr,originalEvent:ea}=this._eventsInProgress[hr];this._handlersById[jr].isActive()||(delete this._eventsInProgress[hr],Dt=ae[jr]||ea,bt[`${hr}end`]=Dt)}for(let hr in bt)this._fireEvent(hr,bt[hr]);let Yt=vi(this._eventsInProgress),cr=(Se||De)&&!Yt;if(cr&&this._terrainMovement){this._map._elevationFreeze=!1,this._terrainMovement=!1;let hr=this._map._getTransformForUpdate();hr.recalculateZoom(this._map.terrain),this._map._applyUpdatedTransform(hr)}if(we&&cr){this._updatingCamera=!0;let hr=this._inertia._onMoveEnd(this._map.dragPan._inertiaOptions),jr=ea=>ea!==0&&-this._bearingSnap{delete this._frameId,this.handleEvent(new ti("renderFrame",{timeStamp:R})),this._applyChanges()})}_triggerRenderFrame(){this._frameId===void 0&&(this._frameId=this._requestFrame())}}class Wn extends t.E{constructor(R,ae){super(),this._renderFrameCallback=()=>{let we=Math.min((i.now()-this._easeStart)/this._easeOptions.duration,1);this._onEaseFrame(this._easeOptions.easing(we)),we<1&&this._easeFrameId?this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback):this.stop()},this._moving=!1,this._zooming=!1,this.transform=R,this._bearingSnap=ae.bearingSnap,this.on("moveend",()=>{delete this._requestedCameraState})}getCenter(){return new t.N(this.transform.center.lng,this.transform.center.lat)}setCenter(R,ae){return this.jumpTo({center:R},ae)}panBy(R,ae,we){return R=t.P.convert(R).mult(-1),this.panTo(this.transform.center,t.e({offset:R},ae),we)}panTo(R,ae,we){return this.easeTo(t.e({center:R},ae),we)}getZoom(){return this.transform.zoom}setZoom(R,ae){return this.jumpTo({zoom:R},ae),this}zoomTo(R,ae,we){return this.easeTo(t.e({zoom:R},ae),we)}zoomIn(R,ae){return this.zoomTo(this.getZoom()+1,R,ae),this}zoomOut(R,ae){return this.zoomTo(this.getZoom()-1,R,ae),this}getBearing(){return this.transform.bearing}setBearing(R,ae){return this.jumpTo({bearing:R},ae),this}getPadding(){return this.transform.padding}setPadding(R,ae){return this.jumpTo({padding:R},ae),this}rotateTo(R,ae,we){return this.easeTo(t.e({bearing:R},ae),we)}resetNorth(R,ae){return this.rotateTo(0,t.e({duration:1e3},R),ae),this}resetNorthPitch(R,ae){return this.easeTo(t.e({bearing:0,pitch:0,duration:1e3},R),ae),this}snapToNorth(R,ae){return Math.abs(this.getBearing()){if(this._zooming&&(Se.zoom=t.y.number(De,ot,pr)),this._rotating&&(Se.bearing=t.y.number(ft,Yt,pr)),this._pitching&&(Se.pitch=t.y.number(bt,cr,pr)),this._padding&&(Se.interpolatePadding(Dt,hr,pr),ea=Se.centerPoint.add(jr)),this.terrain&&!R.freezeElevation&&this._updateElevation(pr),Pt)Se.setLocationAtPoint(Pt,er);else{let Sr=Se.zoomScale(Se.zoom-De),Wr=ot>De?Math.min(2,_t):Math.max(.5,_t),ha=Math.pow(Wr,1-pr),ga=Se.unproject(ht.add(At.mult(pr*ha)).mult(Sr));Se.setLocationAtPoint(Se.renderWorldCopies?ga.wrap():ga,ea)}this._applyUpdatedTransform(Se),this._fireMoveEvents(ae)},pr=>{this.terrain&&R.freezeElevation&&this._finalizeElevation(),this._afterEase(ae,pr)},R),this}_prepareEase(R,ae,we={}){this._moving=!0,ae||we.moving||this.fire(new t.k("movestart",R)),this._zooming&&!we.zooming&&this.fire(new t.k("zoomstart",R)),this._rotating&&!we.rotating&&this.fire(new t.k("rotatestart",R)),this._pitching&&!we.pitching&&this.fire(new t.k("pitchstart",R))}_prepareElevation(R){this._elevationCenter=R,this._elevationStart=this.transform.elevation,this._elevationTarget=this.terrain.getElevationForLngLatZoom(R,this.transform.tileZoom),this._elevationFreeze=!0}_updateElevation(R){this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);let ae=this.terrain.getElevationForLngLatZoom(this._elevationCenter,this.transform.tileZoom);if(R<1&&ae!==this._elevationTarget){let we=this._elevationTarget-this._elevationStart;this._elevationStart+=R*(we-(ae-(we*R+this._elevationStart))/(1-R)),this._elevationTarget=ae}this.transform.elevation=t.y.number(this._elevationStart,this._elevationTarget,R)}_finalizeElevation(){this._elevationFreeze=!1,this.transform.recalculateZoom(this.terrain)}_getTransformForUpdate(){return this.transformCameraUpdate||this.terrain?(this._requestedCameraState||(this._requestedCameraState=this.transform.clone()),this._requestedCameraState):this.transform}_elevateCameraIfInsideTerrain(R){let ae=R.getCameraPosition(),we=this.terrain.getElevationForLngLatZoom(ae.lngLat,R.zoom);if(ae.altitudethis._elevateCameraIfInsideTerrain(Se)),this.transformCameraUpdate&&ae.push(Se=>this.transformCameraUpdate(Se)),!ae.length)return;let we=R.clone();for(let Se of ae){let De=we.clone(),{center:ft,zoom:bt,pitch:Dt,bearing:Yt,elevation:cr}=Se(De);ft&&(De.center=ft),bt!==void 0&&(De.zoom=bt),Dt!==void 0&&(De.pitch=Dt),Yt!==void 0&&(De.bearing=Yt),cr!==void 0&&(De.elevation=cr),we.apply(De)}this.transform.apply(we)}_fireMoveEvents(R){this.fire(new t.k("move",R)),this._zooming&&this.fire(new t.k("zoom",R)),this._rotating&&this.fire(new t.k("rotate",R)),this._pitching&&this.fire(new t.k("pitch",R))}_afterEase(R,ae){if(this._easeId&&ae&&this._easeId===ae)return;delete this._easeId;let we=this._zooming,Se=this._rotating,De=this._pitching;this._moving=!1,this._zooming=!1,this._rotating=!1,this._pitching=!1,this._padding=!1,we&&this.fire(new t.k("zoomend",R)),Se&&this.fire(new t.k("rotateend",R)),De&&this.fire(new t.k("pitchend",R)),this.fire(new t.k("moveend",R))}flyTo(R,ae){var we;if(!R.essential&&i.prefersReducedMotion){let Ci=t.M(R,["center","zoom","bearing","pitch","around"]);return this.jumpTo(Ci,ae)}this.stop(),R=t.e({offset:[0,0],speed:1.2,curve:1.42,easing:t.b9},R);let Se=this._getTransformForUpdate(),De=Se.zoom,ft=Se.bearing,bt=Se.pitch,Dt=Se.padding,Yt="bearing"in R?this._normalizeBearing(R.bearing,ft):ft,cr="pitch"in R?+R.pitch:bt,hr="padding"in R?R.padding:Se.padding,jr=t.P.convert(R.offset),ea=Se.centerPoint.add(jr),qe=Se.pointLocation(ea),{center:Je,zoom:ot}=Se.getConstrained(t.N.convert(R.center||qe),(we=R.zoom)!==null&&we!==void 0?we:De);this._normalizeCenter(Je,Se);let ht=Se.zoomScale(ot-De),At=Se.project(qe),_t=Se.project(Je).sub(At),Pt=R.curve,er=Math.max(Se.width,Se.height),nr=er/ht,pr=_t.mag();if("minZoom"in R){let Ci=t.ac(Math.min(R.minZoom,De,ot),Se.minZoom,Se.maxZoom),$i=er/Se.zoomScale(Ci-De);Pt=Math.sqrt($i/pr*2)}let Sr=Pt*Pt;function Wr(Ci){let $i=(nr*nr-er*er+(Ci?-1:1)*Sr*Sr*pr*pr)/(2*(Ci?nr:er)*Sr*pr);return Math.log(Math.sqrt($i*$i+1)-$i)}function ha(Ci){return(Math.exp(Ci)-Math.exp(-Ci))/2}function ga(Ci){return(Math.exp(Ci)+Math.exp(-Ci))/2}let Pa=Wr(!1),Ja=function(Ci){return ga(Pa)/ga(Pa+Pt*Ci)},di=function(Ci){return er*((ga(Pa)*(ha($i=Pa+Pt*Ci)/ga($i))-ha(Pa))/Sr)/pr;var $i},pi=(Wr(!0)-Pa)/Pt;if(Math.abs(pr)<1e-6||!isFinite(pi)){if(Math.abs(er-nr)<1e-6)return this.easeTo(R,ae);let Ci=nr0,Ja=$i=>Math.exp(Ci*Pt*$i)}return R.duration="duration"in R?+R.duration:1e3*pi/("screenSpeed"in R?+R.screenSpeed/Pt:+R.speed),R.maxDuration&&R.duration>R.maxDuration&&(R.duration=0),this._zooming=!0,this._rotating=ft!==Yt,this._pitching=cr!==bt,this._padding=!Se.isPaddingEqual(hr),this._prepareEase(ae,!1),this.terrain&&this._prepareElevation(Je),this._ease(Ci=>{let $i=Ci*pi,Bn=1/Ja($i);Se.zoom=Ci===1?ot:De+Se.scaleZoom(Bn),this._rotating&&(Se.bearing=t.y.number(ft,Yt,Ci)),this._pitching&&(Se.pitch=t.y.number(bt,cr,Ci)),this._padding&&(Se.interpolatePadding(Dt,hr,Ci),ea=Se.centerPoint.add(jr)),this.terrain&&!R.freezeElevation&&this._updateElevation(Ci);let Sn=Ci===1?Je:Se.unproject(At.add(_t.mult(di($i))).mult(Bn));Se.setLocationAtPoint(Se.renderWorldCopies?Sn.wrap():Sn,ea),this._applyUpdatedTransform(Se),this._fireMoveEvents(ae)},()=>{this.terrain&&R.freezeElevation&&this._finalizeElevation(),this._afterEase(ae)},R),this}isEasing(){return!!this._easeFrameId}stop(){return this._stop()}_stop(R,ae){var we;if(this._easeFrameId&&(this._cancelRenderFrame(this._easeFrameId),delete this._easeFrameId,delete this._onEaseFrame),this._onEaseEnd){let Se=this._onEaseEnd;delete this._onEaseEnd,Se.call(this,ae)}return R||(we=this.handlers)===null||we===void 0||we.stop(!1),this}_ease(R,ae,we){we.animate===!1||we.duration===0?(R(1),ae()):(this._easeStart=i.now(),this._easeOptions=we,this._onEaseFrame=R,this._onEaseEnd=ae,this._easeFrameId=this._requestRenderFrame(this._renderFrameCallback))}_normalizeBearing(R,ae){R=t.b3(R,-180,180);let we=Math.abs(R-ae);return Math.abs(R-360-ae)180?-360:we<-180?360:0}queryTerrainElevation(R){return this.terrain?this.terrain.getElevationForLngLatZoom(t.N.convert(R),this.transform.tileZoom)-this.transform.elevation:null}}let Jn={compact:!0,customAttribution:'MapLibre'};class no{constructor(R=Jn){this._toggleAttribution=()=>{this._container.classList.contains("maplibregl-compact")&&(this._container.classList.contains("maplibregl-compact-show")?(this._container.setAttribute("open",""),this._container.classList.remove("maplibregl-compact-show")):(this._container.classList.add("maplibregl-compact-show"),this._container.removeAttribute("open")))},this._updateData=ae=>{!ae||ae.sourceDataType!=="metadata"&&ae.sourceDataType!=="visibility"&&ae.dataType!=="style"&&ae.type!=="terrain"||this._updateAttributions()},this._updateCompact=()=>{this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact===!1?this._container.setAttribute("open",""):this._container.classList.contains("maplibregl-compact")||this._container.classList.contains("maplibregl-attrib-empty")||(this._container.setAttribute("open",""),this._container.classList.add("maplibregl-compact","maplibregl-compact-show")):(this._container.setAttribute("open",""),this._container.classList.contains("maplibregl-compact")&&this._container.classList.remove("maplibregl-compact","maplibregl-compact-show"))},this._updateCompactMinimize=()=>{this._container.classList.contains("maplibregl-compact")&&this._container.classList.contains("maplibregl-compact-show")&&this._container.classList.remove("maplibregl-compact-show")},this.options=R}getDefaultPosition(){return"bottom-right"}onAdd(R){return this._map=R,this._compact=this.options.compact,this._container=n.create("details","maplibregl-ctrl maplibregl-ctrl-attrib"),this._compactButton=n.create("summary","maplibregl-ctrl-attrib-button",this._container),this._compactButton.addEventListener("click",this._toggleAttribution),this._setElementTitle(this._compactButton,"ToggleAttribution"),this._innerContainer=n.create("div","maplibregl-ctrl-attrib-inner",this._container),this._updateAttributions(),this._updateCompact(),this._map.on("styledata",this._updateData),this._map.on("sourcedata",this._updateData),this._map.on("terrain",this._updateData),this._map.on("resize",this._updateCompact),this._map.on("drag",this._updateCompactMinimize),this._container}onRemove(){n.remove(this._container),this._map.off("styledata",this._updateData),this._map.off("sourcedata",this._updateData),this._map.off("terrain",this._updateData),this._map.off("resize",this._updateCompact),this._map.off("drag",this._updateCompactMinimize),this._map=void 0,this._compact=void 0,this._attribHTML=void 0}_setElementTitle(R,ae){let we=this._map._getUIString(`AttributionControl.${ae}`);R.title=we,R.setAttribute("aria-label",we)}_updateAttributions(){if(!this._map.style)return;let R=[];if(this.options.customAttribution&&(Array.isArray(this.options.customAttribution)?R=R.concat(this.options.customAttribution.map(Se=>typeof Se!="string"?"":Se)):typeof this.options.customAttribution=="string"&&R.push(this.options.customAttribution)),this._map.style.stylesheet){let Se=this._map.style.stylesheet;this.styleOwner=Se.owner,this.styleId=Se.id}let ae=this._map.style.sourceCaches;for(let Se in ae){let De=ae[Se];if(De.used||De.usedForTerrain){let ft=De.getSource();ft.attribution&&R.indexOf(ft.attribution)<0&&R.push(ft.attribution)}}R=R.filter(Se=>String(Se).trim()),R.sort((Se,De)=>Se.length-De.length),R=R.filter((Se,De)=>{for(let ft=De+1;ft=0)return!1;return!0});let we=R.join(" | ");we!==this._attribHTML&&(this._attribHTML=we,R.length?(this._innerContainer.innerHTML=we,this._container.classList.remove("maplibregl-attrib-empty")):this._container.classList.add("maplibregl-attrib-empty"),this._updateCompact(),this._editLink=null)}}class en{constructor(R={}){this._updateCompact=()=>{let ae=this._container.children;if(ae.length){let we=ae[0];this._map.getCanvasContainer().offsetWidth<=640||this._compact?this._compact!==!1&&we.classList.add("maplibregl-compact"):we.classList.remove("maplibregl-compact")}},this.options=R}getDefaultPosition(){return"bottom-left"}onAdd(R){this._map=R,this._compact=this.options&&this.options.compact,this._container=n.create("div","maplibregl-ctrl");let ae=n.create("a","maplibregl-ctrl-logo");return ae.target="_blank",ae.rel="noopener nofollow",ae.href="https://maplibre.org/",ae.setAttribute("aria-label",this._map._getUIString("LogoControl.Title")),ae.setAttribute("rel","noopener nofollow"),this._container.appendChild(ae),this._container.style.display="block",this._map.on("resize",this._updateCompact),this._updateCompact(),this._container}onRemove(){n.remove(this._container),this._map.off("resize",this._updateCompact),this._map=void 0,this._compact=void 0}}class Ri{constructor(){this._queue=[],this._id=0,this._cleared=!1,this._currentlyRunning=!1}add(R){let ae=++this._id;return this._queue.push({callback:R,id:ae,cancelled:!1}),ae}remove(R){let ae=this._currentlyRunning,we=ae?this._queue.concat(ae):this._queue;for(let Se of we)if(Se.id===R)return void(Se.cancelled=!0)}run(R=0){if(this._currentlyRunning)throw new Error("Attempting to run(), but is already running.");let ae=this._currentlyRunning=this._queue;this._queue=[];for(let we of ae)if(!we.cancelled&&(we.callback(R),this._cleared))break;this._cleared=!1,this._currentlyRunning=!1}clear(){this._currentlyRunning&&(this._cleared=!0),this._queue=[]}}var co=t.Y([{name:"a_pos3d",type:"Int16",components:3}]);class Wo extends t.E{constructor(R){super(),this.sourceCache=R,this._tiles={},this._renderableTilesKeys=[],this._sourceTileCache={},this.minzoom=0,this.maxzoom=22,this.tileSize=512,this.deltaZoom=1,R.usedForTerrain=!0,R.tileSize=this.tileSize*2**this.deltaZoom}destruct(){this.sourceCache.usedForTerrain=!1,this.sourceCache.tileSize=null}update(R,ae){this.sourceCache.update(R,ae),this._renderableTilesKeys=[];let we={};for(let Se of R.coveringTiles({tileSize:this.tileSize,minzoom:this.minzoom,maxzoom:this.maxzoom,reparseOverscaled:!1,terrain:ae}))we[Se.key]=!0,this._renderableTilesKeys.push(Se.key),this._tiles[Se.key]||(Se.posMatrix=new Float64Array(16),t.aP(Se.posMatrix,0,t.X,0,t.X,0,1),this._tiles[Se.key]=new nt(Se,this.tileSize));for(let Se in this._tiles)we[Se]||delete this._tiles[Se]}freeRtt(R){for(let ae in this._tiles){let we=this._tiles[ae];(!R||we.tileID.equals(R)||we.tileID.isChildOf(R)||R.isChildOf(we.tileID))&&(we.rtt=[])}}getRenderableTiles(){return this._renderableTilesKeys.map(R=>this.getTileByID(R))}getTileByID(R){return this._tiles[R]}getTerrainCoords(R){let ae={};for(let we of this._renderableTilesKeys){let Se=this._tiles[we].tileID;if(Se.canonical.equals(R.canonical)){let De=R.clone();De.posMatrix=new Float64Array(16),t.aP(De.posMatrix,0,t.X,0,t.X,0,1),ae[we]=De}else if(Se.canonical.isChildOf(R.canonical)){let De=R.clone();De.posMatrix=new Float64Array(16);let ft=Se.canonical.z-R.canonical.z,bt=Se.canonical.x-(Se.canonical.x>>ft<>ft<>ft;t.aP(De.posMatrix,0,Yt,0,Yt,0,1),t.J(De.posMatrix,De.posMatrix,[-bt*Yt,-Dt*Yt,0]),ae[we]=De}else if(R.canonical.isChildOf(Se.canonical)){let De=R.clone();De.posMatrix=new Float64Array(16);let ft=R.canonical.z-Se.canonical.z,bt=R.canonical.x-(R.canonical.x>>ft<>ft<>ft;t.aP(De.posMatrix,0,t.X,0,t.X,0,1),t.J(De.posMatrix,De.posMatrix,[bt*Yt,Dt*Yt,0]),t.K(De.posMatrix,De.posMatrix,[1/2**ft,1/2**ft,0]),ae[we]=De}}return ae}getSourceTile(R,ae){let we=this.sourceCache._source,Se=R.overscaledZ-this.deltaZoom;if(Se>we.maxzoom&&(Se=we.maxzoom),Se=we.minzoom&&(!De||!De.dem);)De=this.sourceCache.getTileByID(R.scaledTo(Se--).key);return De}tilesAfterTime(R=Date.now()){return Object.values(this._tiles).filter(ae=>ae.timeAdded>=R)}}class bs{constructor(R,ae,we){this.painter=R,this.sourceCache=new Wo(ae),this.options=we,this.exaggeration=typeof we.exaggeration=="number"?we.exaggeration:1,this.qualityFactor=2,this.meshSize=128,this._demMatrixCache={},this.coordsIndex=[],this._coordsTextureSize=1024}getDEMElevation(R,ae,we,Se=t.X){var De;if(!(ae>=0&&ae=0&&weR.canonical.z&&(R.canonical.z>=Se?De=R.canonical.z-Se:t.w("cannot calculate elevation if elevation maxzoom > source.maxzoom"));let ft=R.canonical.x-(R.canonical.x>>De<>De<>8<<4|De>>8,ae[ft+3]=0;let we=new t.R({width:this._coordsTextureSize,height:this._coordsTextureSize},new Uint8Array(ae.buffer)),Se=new u(R,we,R.gl.RGBA,{premultiply:!1});return Se.bind(R.gl.NEAREST,R.gl.CLAMP_TO_EDGE),this._coordsTexture=Se,Se}pointCoordinate(R){this.painter.maybeDrawDepthAndCoords(!0);let ae=new Uint8Array(4),we=this.painter.context,Se=we.gl,De=Math.round(R.x*this.painter.pixelRatio/devicePixelRatio),ft=Math.round(R.y*this.painter.pixelRatio/devicePixelRatio),bt=Math.round(this.painter.height/devicePixelRatio);we.bindFramebuffer.set(this.getFramebuffer("coords").framebuffer),Se.readPixels(De,bt-ft-1,1,1,Se.RGBA,Se.UNSIGNED_BYTE,ae),we.bindFramebuffer.set(null);let Dt=ae[0]+(ae[2]>>4<<8),Yt=ae[1]+((15&ae[2])<<8),cr=this.coordsIndex[255-ae[3]],hr=cr&&this.sourceCache.getTileByID(cr);if(!hr)return null;let jr=this._coordsTextureSize,ea=(1<R.id!==ae),this._recentlyUsed.push(R.id)}stampObject(R){R.stamp=++this._stamp}getOrCreateFreeObject(){for(let ae of this._recentlyUsed)if(!this._objects[ae].inUse)return this._objects[ae];if(this._objects.length>=this._size)throw new Error("No free RenderPool available, call freeAllObjects() required!");let R=this._createObject(this._objects.length);return this._objects.push(R),R}freeObject(R){R.inUse=!1}freeAllObjects(){for(let R of this._objects)this.freeObject(R)}isFull(){return!(this._objects.length!R.inUse)===!1}}let Ms={background:!0,fill:!0,line:!0,raster:!0,hillshade:!0};class Hs{constructor(R,ae){this.painter=R,this.terrain=ae,this.pool=new Xs(R.context,30,ae.sourceCache.tileSize*ae.qualityFactor)}destruct(){this.pool.destruct()}getTexture(R){return this.pool.getObjectForId(R.rtt[this._stacks.length-1].id).texture}prepareForRender(R,ae){this._stacks=[],this._prevType=null,this._rttTiles=[],this._renderableTiles=this.terrain.sourceCache.getRenderableTiles(),this._renderableLayerIds=R._order.filter(we=>!R._layers[we].isHidden(ae)),this._coordsDescendingInv={};for(let we in R.sourceCaches){this._coordsDescendingInv[we]={};let Se=R.sourceCaches[we].getVisibleCoordinates();for(let De of Se){let ft=this.terrain.sourceCache.getTerrainCoords(De);for(let bt in ft)this._coordsDescendingInv[we][bt]||(this._coordsDescendingInv[we][bt]=[]),this._coordsDescendingInv[we][bt].push(ft[bt])}}this._coordsDescendingInvStr={};for(let we of R._order){let Se=R._layers[we],De=Se.source;if(Ms[Se.type]&&!this._coordsDescendingInvStr[De]){this._coordsDescendingInvStr[De]={};for(let ft in this._coordsDescendingInv[De])this._coordsDescendingInvStr[De][ft]=this._coordsDescendingInv[De][ft].map(bt=>bt.key).sort().join()}}for(let we of this._renderableTiles)for(let Se in this._coordsDescendingInvStr){let De=this._coordsDescendingInvStr[Se][we.tileID.key];De&&De!==we.rttCoords[Se]&&(we.rtt=[])}}renderLayer(R){if(R.isHidden(this.painter.transform.zoom))return!1;let ae=R.type,we=this.painter,Se=this._renderableLayerIds[this._renderableLayerIds.length-1]===R.id;if(Ms[ae]&&(this._prevType&&Ms[this._prevType]||this._stacks.push([]),this._prevType=ae,this._stacks[this._stacks.length-1].push(R.id),!Se))return!0;if(Ms[this._prevType]||Ms[ae]&&Se){this._prevType=ae;let De=this._stacks.length-1,ft=this._stacks[De]||[];for(let bt of this._renderableTiles){if(this.pool.isFull()&&(ru(this.painter,this.terrain,this._rttTiles),this._rttTiles=[],this.pool.freeAllObjects()),this._rttTiles.push(bt),bt.rtt[De]){let Yt=this.pool.getObjectForId(bt.rtt[De].id);if(Yt.stamp===bt.rtt[De].stamp){this.pool.useObject(Yt);continue}}let Dt=this.pool.getOrCreateFreeObject();this.pool.useObject(Dt),this.pool.stampObject(Dt),bt.rtt[De]={id:Dt.id,stamp:Dt.stamp},we.context.bindFramebuffer.set(Dt.fbo.framebuffer),we.context.clear({color:t.aM.transparent,stencil:0}),we.currentStencilSource=void 0;for(let Yt=0;Yt{Oe.touchstart=Oe.dragStart,Oe.touchmoveWindow=Oe.dragMove,Oe.touchend=Oe.dragEnd},Ln={showCompass:!0,showZoom:!0,visualizePitch:!1};class Ao{constructor(R,ae,we=!1){this.mousedown=ft=>{this.startMouse(t.e({},ft,{ctrlKey:!0,preventDefault:()=>ft.preventDefault()}),n.mousePos(this.element,ft)),n.addEventListener(window,"mousemove",this.mousemove),n.addEventListener(window,"mouseup",this.mouseup)},this.mousemove=ft=>{this.moveMouse(ft,n.mousePos(this.element,ft))},this.mouseup=ft=>{this.mouseRotate.dragEnd(ft),this.mousePitch&&this.mousePitch.dragEnd(ft),this.offTemp()},this.touchstart=ft=>{ft.targetTouches.length!==1?this.reset():(this._startPos=this._lastPos=n.touchPos(this.element,ft.targetTouches)[0],this.startTouch(ft,this._startPos),n.addEventListener(window,"touchmove",this.touchmove,{passive:!1}),n.addEventListener(window,"touchend",this.touchend))},this.touchmove=ft=>{ft.targetTouches.length!==1?this.reset():(this._lastPos=n.touchPos(this.element,ft.targetTouches)[0],this.moveTouch(ft,this._lastPos))},this.touchend=ft=>{ft.targetTouches.length===0&&this._startPos&&this._lastPos&&this._startPos.dist(this._lastPos){this.mouseRotate.reset(),this.mousePitch&&this.mousePitch.reset(),this.touchRotate.reset(),this.touchPitch&&this.touchPitch.reset(),delete this._startPos,delete this._lastPos,this.offTemp()},this._clickTolerance=10;let Se=R.dragRotate._mouseRotate.getClickTolerance(),De=R.dragRotate._mousePitch.getClickTolerance();this.element=ae,this.mouseRotate=Vl({clickTolerance:Se,enable:!0}),this.touchRotate=(({enable:ft,clickTolerance:bt,bearingDegreesPerPixelMoved:Dt=.8})=>{let Yt=new Qc;return new ju({clickTolerance:bt,move:(cr,hr)=>({bearingDelta:(hr.x-cr.x)*Dt}),moveStateManager:Yt,enable:ft,assignEvents:tl})})({clickTolerance:Se,enable:!0}),this.map=R,we&&(this.mousePitch=Qf({clickTolerance:De,enable:!0}),this.touchPitch=(({enable:ft,clickTolerance:bt,pitchDegreesPerPixelMoved:Dt=-.5})=>{let Yt=new Qc;return new ju({clickTolerance:bt,move:(cr,hr)=>({pitchDelta:(hr.y-cr.y)*Dt}),moveStateManager:Yt,enable:ft,assignEvents:tl})})({clickTolerance:De,enable:!0})),n.addEventListener(ae,"mousedown",this.mousedown),n.addEventListener(ae,"touchstart",this.touchstart,{passive:!1}),n.addEventListener(ae,"touchcancel",this.reset)}startMouse(R,ae){this.mouseRotate.dragStart(R,ae),this.mousePitch&&this.mousePitch.dragStart(R,ae),n.disableDrag()}startTouch(R,ae){this.touchRotate.dragStart(R,ae),this.touchPitch&&this.touchPitch.dragStart(R,ae),n.disableDrag()}moveMouse(R,ae){let we=this.map,{bearingDelta:Se}=this.mouseRotate.dragMove(R,ae)||{};if(Se&&we.setBearing(we.getBearing()+Se),this.mousePitch){let{pitchDelta:De}=this.mousePitch.dragMove(R,ae)||{};De&&we.setPitch(we.getPitch()+De)}}moveTouch(R,ae){let we=this.map,{bearingDelta:Se}=this.touchRotate.dragMove(R,ae)||{};if(Se&&we.setBearing(we.getBearing()+Se),this.touchPitch){let{pitchDelta:De}=this.touchPitch.dragMove(R,ae)||{};De&&we.setPitch(we.getPitch()+De)}}off(){let R=this.element;n.removeEventListener(R,"mousedown",this.mousedown),n.removeEventListener(R,"touchstart",this.touchstart,{passive:!1}),n.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),n.removeEventListener(window,"touchend",this.touchend),n.removeEventListener(R,"touchcancel",this.reset),this.offTemp()}offTemp(){n.enableDrag(),n.removeEventListener(window,"mousemove",this.mousemove),n.removeEventListener(window,"mouseup",this.mouseup),n.removeEventListener(window,"touchmove",this.touchmove,{passive:!1}),n.removeEventListener(window,"touchend",this.touchend)}}let js;function Ts(Oe,R,ae){let we=new t.N(Oe.lng,Oe.lat);if(Oe=new t.N(Oe.lng,Oe.lat),R){let Se=new t.N(Oe.lng-360,Oe.lat),De=new t.N(Oe.lng+360,Oe.lat),ft=ae.locationPoint(Oe).distSqr(R);ae.locationPoint(Se).distSqr(R)180;){let Se=ae.locationPoint(Oe);if(Se.x>=0&&Se.y>=0&&Se.x<=ae.width&&Se.y<=ae.height)break;Oe.lng>ae.center.lng?Oe.lng-=360:Oe.lng+=360}return Oe.lng!==we.lng&&ae.locationPoint(Oe).y>ae.height/2-ae.getHorizon()?Oe:we}let nu={center:"translate(-50%,-50%)",top:"translate(-50%,0)","top-left":"translate(0,0)","top-right":"translate(-100%,0)",bottom:"translate(-50%,-100%)","bottom-left":"translate(0,-100%)","bottom-right":"translate(-100%,-100%)",left:"translate(0,-50%)",right:"translate(-100%,-50%)"};function Pu(Oe,R,ae){let we=Oe.classList;for(let Se in nu)we.remove(`maplibregl-${ae}-anchor-${Se}`);we.add(`maplibregl-${ae}-anchor-${R}`)}class ec extends t.E{constructor(R){if(super(),this._onKeyPress=ae=>{let we=ae.code,Se=ae.charCode||ae.keyCode;we!=="Space"&&we!=="Enter"&&Se!==32&&Se!==13||this.togglePopup()},this._onMapClick=ae=>{let we=ae.originalEvent.target,Se=this._element;this._popup&&(we===Se||Se.contains(we))&&this.togglePopup()},this._update=ae=>{var we;if(!this._map)return;let Se=this._map.loaded()&&!this._map.isMoving();(ae?.type==="terrain"||ae?.type==="render"&&!Se)&&this._map.once("render",this._update),this._lngLat=this._map.transform.renderWorldCopies?Ts(this._lngLat,this._flatPos,this._map.transform):(we=this._lngLat)===null||we===void 0?void 0:we.wrap(),this._flatPos=this._pos=this._map.project(this._lngLat)._add(this._offset),this._map.terrain&&(this._flatPos=this._map.transform.locationPoint(this._lngLat)._add(this._offset));let De="";this._rotationAlignment==="viewport"||this._rotationAlignment==="auto"?De=`rotateZ(${this._rotation}deg)`:this._rotationAlignment==="map"&&(De=`rotateZ(${this._rotation-this._map.getBearing()}deg)`);let ft="";this._pitchAlignment==="viewport"||this._pitchAlignment==="auto"?ft="rotateX(0deg)":this._pitchAlignment==="map"&&(ft=`rotateX(${this._map.getPitch()}deg)`),this._subpixelPositioning||ae&&ae.type!=="moveend"||(this._pos=this._pos.round()),n.setTransform(this._element,`${nu[this._anchor]} translate(${this._pos.x}px, ${this._pos.y}px) ${ft} ${De}`),i.frameAsync(new AbortController).then(()=>{this._updateOpacity(ae&&ae.type==="moveend")}).catch(()=>{})},this._onMove=ae=>{if(!this._isDragging){let we=this._clickTolerance||this._map._clickTolerance;this._isDragging=ae.point.dist(this._pointerdownPos)>=we}this._isDragging&&(this._pos=ae.point.sub(this._positionDelta),this._lngLat=this._map.unproject(this._pos),this.setLngLat(this._lngLat),this._element.style.pointerEvents="none",this._state==="pending"&&(this._state="active",this.fire(new t.k("dragstart"))),this.fire(new t.k("drag")))},this._onUp=()=>{this._element.style.pointerEvents="auto",this._positionDelta=null,this._pointerdownPos=null,this._isDragging=!1,this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),this._state==="active"&&this.fire(new t.k("dragend")),this._state="inactive"},this._addDragHandler=ae=>{this._element.contains(ae.originalEvent.target)&&(ae.preventDefault(),this._positionDelta=ae.point.sub(this._pos).add(this._offset),this._pointerdownPos=ae.point,this._state="pending",this._map.on("mousemove",this._onMove),this._map.on("touchmove",this._onMove),this._map.once("mouseup",this._onUp),this._map.once("touchend",this._onUp))},this._anchor=R&&R.anchor||"center",this._color=R&&R.color||"#3FB1CE",this._scale=R&&R.scale||1,this._draggable=R&&R.draggable||!1,this._clickTolerance=R&&R.clickTolerance||0,this._subpixelPositioning=R&&R.subpixelPositioning||!1,this._isDragging=!1,this._state="inactive",this._rotation=R&&R.rotation||0,this._rotationAlignment=R&&R.rotationAlignment||"auto",this._pitchAlignment=R&&R.pitchAlignment&&R.pitchAlignment!=="auto"?R.pitchAlignment:this._rotationAlignment,this.setOpacity(),this.setOpacity(R?.opacity,R?.opacityWhenCovered),R&&R.element)this._element=R.element,this._offset=t.P.convert(R&&R.offset||[0,0]);else{this._defaultMarker=!0,this._element=n.create("div");let ae=n.createNS("http://www.w3.org/2000/svg","svg"),we=41,Se=27;ae.setAttributeNS(null,"display","block"),ae.setAttributeNS(null,"height",`${we}px`),ae.setAttributeNS(null,"width",`${Se}px`),ae.setAttributeNS(null,"viewBox",`0 0 ${Se} ${we}`);let De=n.createNS("http://www.w3.org/2000/svg","g");De.setAttributeNS(null,"stroke","none"),De.setAttributeNS(null,"stroke-width","1"),De.setAttributeNS(null,"fill","none"),De.setAttributeNS(null,"fill-rule","evenodd");let ft=n.createNS("http://www.w3.org/2000/svg","g");ft.setAttributeNS(null,"fill-rule","nonzero");let bt=n.createNS("http://www.w3.org/2000/svg","g");bt.setAttributeNS(null,"transform","translate(3.0, 29.0)"),bt.setAttributeNS(null,"fill","#000000");let Dt=[{rx:"10.5",ry:"5.25002273"},{rx:"10.5",ry:"5.25002273"},{rx:"9.5",ry:"4.77275007"},{rx:"8.5",ry:"4.29549936"},{rx:"7.5",ry:"3.81822308"},{rx:"6.5",ry:"3.34094679"},{rx:"5.5",ry:"2.86367051"},{rx:"4.5",ry:"2.38636864"}];for(let ht of Dt){let At=n.createNS("http://www.w3.org/2000/svg","ellipse");At.setAttributeNS(null,"opacity","0.04"),At.setAttributeNS(null,"cx","10.5"),At.setAttributeNS(null,"cy","5.80029008"),At.setAttributeNS(null,"rx",ht.rx),At.setAttributeNS(null,"ry",ht.ry),bt.appendChild(At)}let Yt=n.createNS("http://www.w3.org/2000/svg","g");Yt.setAttributeNS(null,"fill",this._color);let cr=n.createNS("http://www.w3.org/2000/svg","path");cr.setAttributeNS(null,"d","M27,13.5 C27,19.074644 20.250001,27.000002 14.75,34.500002 C14.016665,35.500004 12.983335,35.500004 12.25,34.500002 C6.7499993,27.000002 0,19.222562 0,13.5 C0,6.0441559 6.0441559,0 13.5,0 C20.955844,0 27,6.0441559 27,13.5 Z"),Yt.appendChild(cr);let hr=n.createNS("http://www.w3.org/2000/svg","g");hr.setAttributeNS(null,"opacity","0.25"),hr.setAttributeNS(null,"fill","#000000");let jr=n.createNS("http://www.w3.org/2000/svg","path");jr.setAttributeNS(null,"d","M13.5,0 C6.0441559,0 0,6.0441559 0,13.5 C0,19.222562 6.7499993,27 12.25,34.5 C13,35.522727 14.016664,35.500004 14.75,34.5 C20.250001,27 27,19.074644 27,13.5 C27,6.0441559 20.955844,0 13.5,0 Z M13.5,1 C20.415404,1 26,6.584596 26,13.5 C26,15.898657 24.495584,19.181431 22.220703,22.738281 C19.945823,26.295132 16.705119,30.142167 13.943359,33.908203 C13.743445,34.180814 13.612715,34.322738 13.5,34.441406 C13.387285,34.322738 13.256555,34.180814 13.056641,33.908203 C10.284481,30.127985 7.4148684,26.314159 5.015625,22.773438 C2.6163816,19.232715 1,15.953538 1,13.5 C1,6.584596 6.584596,1 13.5,1 Z"),hr.appendChild(jr);let ea=n.createNS("http://www.w3.org/2000/svg","g");ea.setAttributeNS(null,"transform","translate(6.0, 7.0)"),ea.setAttributeNS(null,"fill","#FFFFFF");let qe=n.createNS("http://www.w3.org/2000/svg","g");qe.setAttributeNS(null,"transform","translate(8.0, 8.0)");let Je=n.createNS("http://www.w3.org/2000/svg","circle");Je.setAttributeNS(null,"fill","#000000"),Je.setAttributeNS(null,"opacity","0.25"),Je.setAttributeNS(null,"cx","5.5"),Je.setAttributeNS(null,"cy","5.5"),Je.setAttributeNS(null,"r","5.4999962");let ot=n.createNS("http://www.w3.org/2000/svg","circle");ot.setAttributeNS(null,"fill","#FFFFFF"),ot.setAttributeNS(null,"cx","5.5"),ot.setAttributeNS(null,"cy","5.5"),ot.setAttributeNS(null,"r","5.4999962"),qe.appendChild(Je),qe.appendChild(ot),ft.appendChild(bt),ft.appendChild(Yt),ft.appendChild(hr),ft.appendChild(ea),ft.appendChild(qe),ae.appendChild(ft),ae.setAttributeNS(null,"height",we*this._scale+"px"),ae.setAttributeNS(null,"width",Se*this._scale+"px"),this._element.appendChild(ae),this._offset=t.P.convert(R&&R.offset||[0,-14])}if(this._element.classList.add("maplibregl-marker"),this._element.addEventListener("dragstart",ae=>{ae.preventDefault()}),this._element.addEventListener("mousedown",ae=>{ae.preventDefault()}),Pu(this._element,this._anchor,"marker"),R&&R.className)for(let ae of R.className.split(" "))this._element.classList.add(ae);this._popup=null}addTo(R){return this.remove(),this._map=R,this._element.setAttribute("aria-label",R._getUIString("Marker.Title")),R.getCanvasContainer().appendChild(this._element),R.on("move",this._update),R.on("moveend",this._update),R.on("terrain",this._update),this.setDraggable(this._draggable),this._update(),this._map.on("click",this._onMapClick),this}remove(){return this._opacityTimeout&&(clearTimeout(this._opacityTimeout),delete this._opacityTimeout),this._map&&(this._map.off("click",this._onMapClick),this._map.off("move",this._update),this._map.off("moveend",this._update),this._map.off("terrain",this._update),this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler),this._map.off("mouseup",this._onUp),this._map.off("touchend",this._onUp),this._map.off("mousemove",this._onMove),this._map.off("touchmove",this._onMove),delete this._map),n.remove(this._element),this._popup&&this._popup.remove(),this}getLngLat(){return this._lngLat}setLngLat(R){return this._lngLat=t.N.convert(R),this._pos=null,this._popup&&this._popup.setLngLat(this._lngLat),this._update(),this}getElement(){return this._element}setPopup(R){if(this._popup&&(this._popup.remove(),this._popup=null,this._element.removeEventListener("keypress",this._onKeyPress),this._originalTabIndex||this._element.removeAttribute("tabindex")),R){if(!("offset"in R.options)){let Se=Math.abs(13.5)/Math.SQRT2;R.options.offset=this._defaultMarker?{top:[0,0],"top-left":[0,0],"top-right":[0,0],bottom:[0,-38.1],"bottom-left":[Se,-1*(38.1-13.5+Se)],"bottom-right":[-Se,-1*(38.1-13.5+Se)],left:[13.5,-1*(38.1-13.5)],right:[-13.5,-1*(38.1-13.5)]}:this._offset}this._popup=R,this._originalTabIndex=this._element.getAttribute("tabindex"),this._originalTabIndex||this._element.setAttribute("tabindex","0"),this._element.addEventListener("keypress",this._onKeyPress)}return this}setSubpixelPositioning(R){return this._subpixelPositioning=R,this}getPopup(){return this._popup}togglePopup(){let R=this._popup;return this._element.style.opacity===this._opacityWhenCovered?this:R?(R.isOpen()?R.remove():(R.setLngLat(this._lngLat),R.addTo(this._map)),this):this}_updateOpacity(R=!1){var ae,we;if(!(!((ae=this._map)===null||ae===void 0)&&ae.terrain))return void(this._element.style.opacity!==this._opacity&&(this._element.style.opacity=this._opacity));if(R)this._opacityTimeout=null;else{if(this._opacityTimeout)return;this._opacityTimeout=setTimeout(()=>{this._opacityTimeout=null},100)}let Se=this._map,De=Se.terrain.depthAtPoint(this._pos),ft=Se.terrain.getElevationForLngLatZoom(this._lngLat,Se.transform.tileZoom);if(Se.transform.lngLatToCameraDepth(this._lngLat,ft)-De<.006)return void(this._element.style.opacity=this._opacity);let bt=-this._offset.y/Se.transform._pixelPerMeter,Dt=Math.sin(Se.getPitch()*Math.PI/180)*bt,Yt=Se.terrain.depthAtPoint(new t.P(this._pos.x,this._pos.y-this._offset.y)),cr=Se.transform.lngLatToCameraDepth(this._lngLat,ft+Dt)-Yt>.006;!((we=this._popup)===null||we===void 0)&&we.isOpen()&&cr&&this._popup.remove(),this._element.style.opacity=cr?this._opacityWhenCovered:this._opacity}getOffset(){return this._offset}setOffset(R){return this._offset=t.P.convert(R),this._update(),this}addClassName(R){this._element.classList.add(R)}removeClassName(R){this._element.classList.remove(R)}toggleClassName(R){return this._element.classList.toggle(R)}setDraggable(R){return this._draggable=!!R,this._map&&(R?(this._map.on("mousedown",this._addDragHandler),this._map.on("touchstart",this._addDragHandler)):(this._map.off("mousedown",this._addDragHandler),this._map.off("touchstart",this._addDragHandler))),this}isDraggable(){return this._draggable}setRotation(R){return this._rotation=R||0,this._update(),this}getRotation(){return this._rotation}setRotationAlignment(R){return this._rotationAlignment=R||"auto",this._update(),this}getRotationAlignment(){return this._rotationAlignment}setPitchAlignment(R){return this._pitchAlignment=R&&R!=="auto"?R:this._rotationAlignment,this._update(),this}getPitchAlignment(){return this._pitchAlignment}setOpacity(R,ae){return R===void 0&&ae===void 0&&(this._opacity="1",this._opacityWhenCovered="0.2"),R!==void 0&&(this._opacity=R),ae!==void 0&&(this._opacityWhenCovered=ae),this._map&&this._updateOpacity(!0),this}}let tf={positionOptions:{enableHighAccuracy:!1,maximumAge:0,timeout:6e3},fitBoundsOptions:{maxZoom:15},trackUserLocation:!1,showAccuracyCircle:!0,showUserLocation:!0},yu=0,Bc=!1,Iu={maxWidth:100,unit:"metric"};function Ac(Oe,R,ae){let we=ae&&ae.maxWidth||100,Se=Oe._container.clientHeight/2,De=Oe.unproject([0,Se]),ft=Oe.unproject([we,Se]),bt=De.distanceTo(ft);if(ae&&ae.unit==="imperial"){let Dt=3.2808*bt;Dt>5280?ro(R,we,Dt/5280,Oe._getUIString("ScaleControl.Miles")):ro(R,we,Dt,Oe._getUIString("ScaleControl.Feet"))}else ae&&ae.unit==="nautical"?ro(R,we,bt/1852,Oe._getUIString("ScaleControl.NauticalMiles")):bt>=1e3?ro(R,we,bt/1e3,Oe._getUIString("ScaleControl.Kilometers")):ro(R,we,bt,Oe._getUIString("ScaleControl.Meters"))}function ro(Oe,R,ae,we){let Se=function(De){let ft=Math.pow(10,`${Math.floor(De)}`.length-1),bt=De/ft;return bt=bt>=10?10:bt>=5?5:bt>=3?3:bt>=2?2:bt>=1?1:function(Dt){let Yt=Math.pow(10,Math.ceil(-Math.log(Dt)/Math.LN10));return Math.round(Dt*Yt)/Yt}(bt),ft*bt}(ae);Oe.style.width=R*(Se/ae)+"px",Oe.innerHTML=`${Se} ${we}`}let Po={closeButton:!0,closeOnClick:!0,focusAfterOpen:!0,className:"",maxWidth:"240px",subpixelPositioning:!1},Nc=["a[href]","[tabindex]:not([tabindex='-1'])","[contenteditable]:not([contenteditable='false'])","button:not([disabled])","input:not([disabled])","select:not([disabled])","textarea:not([disabled])"].join(", ");function hc(Oe){if(Oe){if(typeof Oe=="number"){let R=Math.round(Math.abs(Oe)/Math.SQRT2);return{center:new t.P(0,0),top:new t.P(0,Oe),"top-left":new t.P(R,R),"top-right":new t.P(-R,R),bottom:new t.P(0,-Oe),"bottom-left":new t.P(R,-R),"bottom-right":new t.P(-R,-R),left:new t.P(Oe,0),right:new t.P(-Oe,0)}}if(Oe instanceof t.P||Array.isArray(Oe)){let R=t.P.convert(Oe);return{center:R,top:R,"top-left":R,"top-right":R,bottom:R,"bottom-left":R,"bottom-right":R,left:R,right:R}}return{center:t.P.convert(Oe.center||[0,0]),top:t.P.convert(Oe.top||[0,0]),"top-left":t.P.convert(Oe["top-left"]||[0,0]),"top-right":t.P.convert(Oe["top-right"]||[0,0]),bottom:t.P.convert(Oe.bottom||[0,0]),"bottom-left":t.P.convert(Oe["bottom-left"]||[0,0]),"bottom-right":t.P.convert(Oe["bottom-right"]||[0,0]),left:t.P.convert(Oe.left||[0,0]),right:t.P.convert(Oe.right||[0,0])}}return hc(new t.P(0,0))}let pc=r;e.AJAXError=t.bh,e.Evented=t.E,e.LngLat=t.N,e.MercatorCoordinate=t.Z,e.Point=t.P,e.addProtocol=t.bi,e.config=t.a,e.removeProtocol=t.bj,e.AttributionControl=no,e.BoxZoomHandler=gu,e.CanvasSource=et,e.CooperativeGesturesHandler=_i,e.DoubleClickZoomHandler=Ka,e.DragPanHandler=ki,e.DragRotateHandler=Bi,e.EdgeInsets=$u,e.FullscreenControl=class extends t.E{constructor(Oe={}){super(),this._onFullscreenChange=()=>{var R;let ae=window.document.fullscreenElement||window.document.mozFullScreenElement||window.document.webkitFullscreenElement||window.document.msFullscreenElement;for(;!((R=ae?.shadowRoot)===null||R===void 0)&&R.fullscreenElement;)ae=ae.shadowRoot.fullscreenElement;ae===this._container!==this._fullscreen&&this._handleFullscreenChange()},this._onClickFullscreen=()=>{this._isFullscreen()?this._exitFullscreen():this._requestFullscreen()},this._fullscreen=!1,Oe&&Oe.container&&(Oe.container instanceof HTMLElement?this._container=Oe.container:t.w("Full screen control 'container' must be a DOM element.")),"onfullscreenchange"in document?this._fullscreenchange="fullscreenchange":"onmozfullscreenchange"in document?this._fullscreenchange="mozfullscreenchange":"onwebkitfullscreenchange"in document?this._fullscreenchange="webkitfullscreenchange":"onmsfullscreenchange"in document&&(this._fullscreenchange="MSFullscreenChange")}onAdd(Oe){return this._map=Oe,this._container||(this._container=this._map.getContainer()),this._controlContainer=n.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),this._controlContainer}onRemove(){n.remove(this._controlContainer),this._map=null,window.document.removeEventListener(this._fullscreenchange,this._onFullscreenChange)}_setupUI(){let Oe=this._fullscreenButton=n.create("button","maplibregl-ctrl-fullscreen",this._controlContainer);n.create("span","maplibregl-ctrl-icon",Oe).setAttribute("aria-hidden","true"),Oe.type="button",this._updateTitle(),this._fullscreenButton.addEventListener("click",this._onClickFullscreen),window.document.addEventListener(this._fullscreenchange,this._onFullscreenChange)}_updateTitle(){let Oe=this._getTitle();this._fullscreenButton.setAttribute("aria-label",Oe),this._fullscreenButton.title=Oe}_getTitle(){return this._map._getUIString(this._isFullscreen()?"FullscreenControl.Exit":"FullscreenControl.Enter")}_isFullscreen(){return this._fullscreen}_handleFullscreenChange(){this._fullscreen=!this._fullscreen,this._fullscreenButton.classList.toggle("maplibregl-ctrl-shrink"),this._fullscreenButton.classList.toggle("maplibregl-ctrl-fullscreen"),this._updateTitle(),this._fullscreen?(this.fire(new t.k("fullscreenstart")),this._prevCooperativeGesturesEnabled=this._map.cooperativeGestures.isEnabled(),this._map.cooperativeGestures.disable()):(this.fire(new t.k("fullscreenend")),this._prevCooperativeGesturesEnabled&&this._map.cooperativeGestures.enable())}_exitFullscreen(){window.document.exitFullscreen?window.document.exitFullscreen():window.document.mozCancelFullScreen?window.document.mozCancelFullScreen():window.document.msExitFullscreen?window.document.msExitFullscreen():window.document.webkitCancelFullScreen?window.document.webkitCancelFullScreen():this._togglePseudoFullScreen()}_requestFullscreen(){this._container.requestFullscreen?this._container.requestFullscreen():this._container.mozRequestFullScreen?this._container.mozRequestFullScreen():this._container.msRequestFullscreen?this._container.msRequestFullscreen():this._container.webkitRequestFullscreen?this._container.webkitRequestFullscreen():this._togglePseudoFullScreen()}_togglePseudoFullScreen(){this._container.classList.toggle("maplibregl-pseudo-fullscreen"),this._handleFullscreenChange(),this._map.resize()}},e.GeoJSONSource=Ie,e.GeolocateControl=class extends t.E{constructor(Oe){super(),this._onSuccess=R=>{if(this._map){if(this._isOutOfMapMaxBounds(R))return this._setErrorState(),this.fire(new t.k("outofmaxbounds",R)),this._updateMarker(),void this._finish();if(this.options.trackUserLocation)switch(this._lastKnownPosition=R,this._watchState){case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"BACKGROUND":case"BACKGROUND_ERROR":this._watchState="BACKGROUND",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background");break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}this.options.showUserLocation&&this._watchState!=="OFF"&&this._updateMarker(R),this.options.trackUserLocation&&this._watchState!=="ACTIVE_LOCK"||this._updateCamera(R),this.options.showUserLocation&&this._dotElement.classList.remove("maplibregl-user-location-dot-stale"),this.fire(new t.k("geolocate",R)),this._finish()}},this._updateCamera=R=>{let ae=new t.N(R.coords.longitude,R.coords.latitude),we=R.coords.accuracy,Se=this._map.getBearing(),De=t.e({bearing:Se},this.options.fitBoundsOptions),ft=ie.fromLngLat(ae,we);this._map.fitBounds(ft,De,{geolocateSource:!0})},this._updateMarker=R=>{if(R){let ae=new t.N(R.coords.longitude,R.coords.latitude);this._accuracyCircleMarker.setLngLat(ae).addTo(this._map),this._userLocationDotMarker.setLngLat(ae).addTo(this._map),this._accuracy=R.coords.accuracy,this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()}else this._userLocationDotMarker.remove(),this._accuracyCircleMarker.remove()},this._onZoom=()=>{this.options.showUserLocation&&this.options.showAccuracyCircle&&this._updateCircleRadius()},this._onError=R=>{if(this._map){if(this.options.trackUserLocation)if(R.code===1){this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.disabled=!0;let ae=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.title=ae,this._geolocateButton.setAttribute("aria-label",ae),this._geolocationWatchID!==void 0&&this._clearWatch()}else{if(R.code===3&&Bc)return;this._setErrorState()}this._watchState!=="OFF"&&this.options.showUserLocation&&this._dotElement.classList.add("maplibregl-user-location-dot-stale"),this.fire(new t.k("error",R)),this._finish()}},this._finish=()=>{this._timeoutId&&clearTimeout(this._timeoutId),this._timeoutId=void 0},this._setupUI=()=>{this._map&&(this._container.addEventListener("contextmenu",R=>R.preventDefault()),this._geolocateButton=n.create("button","maplibregl-ctrl-geolocate",this._container),n.create("span","maplibregl-ctrl-icon",this._geolocateButton).setAttribute("aria-hidden","true"),this._geolocateButton.type="button",this._geolocateButton.disabled=!0)},this._finishSetupUI=R=>{if(this._map){if(R===!1){t.w("Geolocation support is not available so the GeolocateControl will be disabled.");let ae=this._map._getUIString("GeolocateControl.LocationNotAvailable");this._geolocateButton.disabled=!0,this._geolocateButton.title=ae,this._geolocateButton.setAttribute("aria-label",ae)}else{let ae=this._map._getUIString("GeolocateControl.FindMyLocation");this._geolocateButton.disabled=!1,this._geolocateButton.title=ae,this._geolocateButton.setAttribute("aria-label",ae)}this.options.trackUserLocation&&(this._geolocateButton.setAttribute("aria-pressed","false"),this._watchState="OFF"),this.options.showUserLocation&&(this._dotElement=n.create("div","maplibregl-user-location-dot"),this._userLocationDotMarker=new ec({element:this._dotElement}),this._circleElement=n.create("div","maplibregl-user-location-accuracy-circle"),this._accuracyCircleMarker=new ec({element:this._circleElement,pitchAlignment:"map"}),this.options.trackUserLocation&&(this._watchState="OFF"),this._map.on("zoom",this._onZoom)),this._geolocateButton.addEventListener("click",()=>this.trigger()),this._setup=!0,this.options.trackUserLocation&&this._map.on("movestart",ae=>{ae.geolocateSource||this._watchState!=="ACTIVE_LOCK"||ae.originalEvent&&ae.originalEvent.type==="resize"||(this._watchState="BACKGROUND",this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this.fire(new t.k("trackuserlocationend")),this.fire(new t.k("userlocationlostfocus")))})}},this.options=t.e({},tf,Oe)}onAdd(Oe){return this._map=Oe,this._container=n.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._setupUI(),function(){return t._(this,arguments,void 0,function*(R=!1){if(js!==void 0&&!R)return js;if(window.navigator.permissions===void 0)return js=!!window.navigator.geolocation,js;try{js=(yield window.navigator.permissions.query({name:"geolocation"})).state!=="denied"}catch{js=!!window.navigator.geolocation}return js})}().then(R=>this._finishSetupUI(R)),this._container}onRemove(){this._geolocationWatchID!==void 0&&(window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0),this.options.showUserLocation&&this._userLocationDotMarker&&this._userLocationDotMarker.remove(),this.options.showAccuracyCircle&&this._accuracyCircleMarker&&this._accuracyCircleMarker.remove(),n.remove(this._container),this._map.off("zoom",this._onZoom),this._map=void 0,yu=0,Bc=!1}_isOutOfMapMaxBounds(Oe){let R=this._map.getMaxBounds(),ae=Oe.coords;return R&&(ae.longitudeR.getEast()||ae.latitudeR.getNorth())}_setErrorState(){switch(this._watchState){case"WAITING_ACTIVE":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error");break;case"ACTIVE_LOCK":this._watchState="ACTIVE_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"BACKGROUND":this._watchState="BACKGROUND_ERROR",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-background-error"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting");break;case"ACTIVE_ERROR":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}}_updateCircleRadius(){let Oe=this._map.getBounds(),R=Oe.getSouthEast(),ae=Oe.getNorthEast(),we=R.distanceTo(ae),Se=Math.ceil(this._accuracy/(we/this._map._container.clientHeight)*2);this._circleElement.style.width=`${Se}px`,this._circleElement.style.height=`${Se}px`}trigger(){if(!this._setup)return t.w("Geolocate control triggered before added to a map"),!1;if(this.options.trackUserLocation){switch(this._watchState){case"OFF":this._watchState="WAITING_ACTIVE",this.fire(new t.k("trackuserlocationstart"));break;case"WAITING_ACTIVE":case"ACTIVE_LOCK":case"ACTIVE_ERROR":case"BACKGROUND_ERROR":yu--,Bc=!1,this._watchState="OFF",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-active-error"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background-error"),this.fire(new t.k("trackuserlocationend"));break;case"BACKGROUND":this._watchState="ACTIVE_LOCK",this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-background"),this._lastKnownPosition&&this._updateCamera(this._lastKnownPosition),this.fire(new t.k("trackuserlocationstart")),this.fire(new t.k("userlocationfocus"));break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}switch(this._watchState){case"WAITING_ACTIVE":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"ACTIVE_LOCK":this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-active");break;case"OFF":break;default:throw new Error(`Unexpected watchState ${this._watchState}`)}if(this._watchState==="OFF"&&this._geolocationWatchID!==void 0)this._clearWatch();else if(this._geolocationWatchID===void 0){let Oe;this._geolocateButton.classList.add("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","true"),yu++,yu>1?(Oe={maximumAge:6e5,timeout:0},Bc=!0):(Oe=this.options.positionOptions,Bc=!1),this._geolocationWatchID=window.navigator.geolocation.watchPosition(this._onSuccess,this._onError,Oe)}}else window.navigator.geolocation.getCurrentPosition(this._onSuccess,this._onError,this.options.positionOptions),this._timeoutId=setTimeout(this._finish,1e4);return!0}_clearWatch(){window.navigator.geolocation.clearWatch(this._geolocationWatchID),this._geolocationWatchID=void 0,this._geolocateButton.classList.remove("maplibregl-ctrl-geolocate-waiting"),this._geolocateButton.setAttribute("aria-pressed","false"),this.options.showUserLocation&&this._updateMarker(null)}},e.Hash=Sh,e.ImageSource=at,e.KeyboardHandler=fr,e.LngLatBounds=ie,e.LogoControl=en,e.Map=class extends Wn{constructor(Oe){t.bf.mark(t.bg.create);let R=Object.assign(Object.assign({},fl),Oe);if(R.minZoom!=null&&R.maxZoom!=null&&R.minZoom>R.maxZoom)throw new Error("maxZoom must be greater than or equal to minZoom");if(R.minPitch!=null&&R.maxPitch!=null&&R.minPitch>R.maxPitch)throw new Error("maxPitch must be greater than or equal to minPitch");if(R.minPitch!=null&&R.minPitch<0)throw new Error("minPitch must be greater than or equal to 0");if(R.maxPitch!=null&&R.maxPitch>85)throw new Error("maxPitch must be less than or equal to 85");if(super(new xl(R.minZoom,R.maxZoom,R.minPitch,R.maxPitch,R.renderWorldCopies),{bearingSnap:R.bearingSnap}),this._idleTriggered=!1,this._crossFadingFactor=1,this._renderTaskQueue=new Ri,this._controls=[],this._mapId=t.a4(),this._contextLost=ae=>{ae.preventDefault(),this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this.fire(new t.k("webglcontextlost",{originalEvent:ae}))},this._contextRestored=ae=>{this._setupPainter(),this.resize(),this._update(),this.fire(new t.k("webglcontextrestored",{originalEvent:ae}))},this._onMapScroll=ae=>{if(ae.target===this._container)return this._container.scrollTop=0,this._container.scrollLeft=0,!1},this._onWindowOnline=()=>{this._update()},this._interactive=R.interactive,this._maxTileCacheSize=R.maxTileCacheSize,this._maxTileCacheZoomLevels=R.maxTileCacheZoomLevels,this._failIfMajorPerformanceCaveat=R.failIfMajorPerformanceCaveat===!0,this._preserveDrawingBuffer=R.preserveDrawingBuffer===!0,this._antialias=R.antialias===!0,this._trackResize=R.trackResize===!0,this._bearingSnap=R.bearingSnap,this._refreshExpiredTiles=R.refreshExpiredTiles===!0,this._fadeDuration=R.fadeDuration,this._crossSourceCollisions=R.crossSourceCollisions===!0,this._collectResourceTiming=R.collectResourceTiming===!0,this._locale=Object.assign(Object.assign({},vs),R.locale),this._clickTolerance=R.clickTolerance,this._overridePixelRatio=R.pixelRatio,this._maxCanvasSize=R.maxCanvasSize,this.transformCameraUpdate=R.transformCameraUpdate,this.cancelPendingTileRequestsWhileZooming=R.cancelPendingTileRequestsWhileZooming===!0,this._imageQueueHandle=l.addThrottleControl(()=>this.isMoving()),this._requestManager=new _(R.transformRequest),typeof R.container=="string"){if(this._container=document.getElementById(R.container),!this._container)throw new Error(`Container '${R.container}' not found.`)}else{if(!(R.container instanceof HTMLElement))throw new Error("Invalid type: 'container' must be a String or HTMLElement.");this._container=R.container}if(R.maxBounds&&this.setMaxBounds(R.maxBounds),this._setupContainer(),this._setupPainter(),this.on("move",()=>this._update(!1)).on("moveend",()=>this._update(!1)).on("zoom",()=>this._update(!0)).on("terrain",()=>{this.painter.terrainFacilitator.dirty=!0,this._update(!0)}).once("idle",()=>{this._idleTriggered=!0}),typeof window<"u"){addEventListener("online",this._onWindowOnline,!1);let ae=!1,we=hh(Se=>{this._trackResize&&!this._removed&&(this.resize(Se),this.redraw())},50);this._resizeObserver=new ResizeObserver(Se=>{ae?we(Se):ae=!0}),this._resizeObserver.observe(this._container)}this.handlers=new Kn(this,R),this._hash=R.hash&&new Sh(typeof R.hash=="string"&&R.hash||void 0).addTo(this),this._hash&&this._hash._onHashChange()||(this.jumpTo({center:R.center,zoom:R.zoom,bearing:R.bearing,pitch:R.pitch}),R.bounds&&(this.resize(),this.fitBounds(R.bounds,t.e({},R.fitBoundsOptions,{duration:0})))),this.resize(),this._localIdeographFontFamily=R.localIdeographFontFamily,this._validateStyle=R.validateStyle,R.style&&this.setStyle(R.style,{localIdeographFontFamily:R.localIdeographFontFamily}),R.attributionControl&&this.addControl(new no(typeof R.attributionControl=="boolean"?void 0:R.attributionControl)),R.maplibreLogo&&this.addControl(new en,R.logoPosition),this.on("style.load",()=>{this.transform.unmodified&&this.jumpTo(this.style.stylesheet)}),this.on("data",ae=>{this._update(ae.dataType==="style"),this.fire(new t.k(`${ae.dataType}data`,ae))}),this.on("dataloading",ae=>{this.fire(new t.k(`${ae.dataType}dataloading`,ae))}),this.on("dataabort",ae=>{this.fire(new t.k("sourcedataabort",ae))})}_getMapId(){return this._mapId}addControl(Oe,R){if(R===void 0&&(R=Oe.getDefaultPosition?Oe.getDefaultPosition():"top-right"),!Oe||!Oe.onAdd)return this.fire(new t.j(new Error("Invalid argument to map.addControl(). Argument must be a control with onAdd and onRemove methods.")));let ae=Oe.onAdd(this);this._controls.push(Oe);let we=this._controlPositions[R];return R.indexOf("bottom")!==-1?we.insertBefore(ae,we.firstChild):we.appendChild(ae),this}removeControl(Oe){if(!Oe||!Oe.onRemove)return this.fire(new t.j(new Error("Invalid argument to map.removeControl(). Argument must be a control with onAdd and onRemove methods.")));let R=this._controls.indexOf(Oe);return R>-1&&this._controls.splice(R,1),Oe.onRemove(this),this}hasControl(Oe){return this._controls.indexOf(Oe)>-1}calculateCameraOptionsFromTo(Oe,R,ae,we){return we==null&&this.terrain&&(we=this.terrain.getElevationForLngLatZoom(ae,this.transform.tileZoom)),super.calculateCameraOptionsFromTo(Oe,R,ae,we)}resize(Oe){var R;let ae=this._containerDimensions(),we=ae[0],Se=ae[1],De=this._getClampedPixelRatio(we,Se);if(this._resizeCanvas(we,Se,De),this.painter.resize(we,Se,De),this.painter.overLimit()){let bt=this.painter.context.gl;this._maxCanvasSize=[bt.drawingBufferWidth,bt.drawingBufferHeight];let Dt=this._getClampedPixelRatio(we,Se);this._resizeCanvas(we,Se,Dt),this.painter.resize(we,Se,Dt)}this.transform.resize(we,Se),(R=this._requestedCameraState)===null||R===void 0||R.resize(we,Se);let ft=!this._moving;return ft&&(this.stop(),this.fire(new t.k("movestart",Oe)).fire(new t.k("move",Oe))),this.fire(new t.k("resize",Oe)),ft&&this.fire(new t.k("moveend",Oe)),this}_getClampedPixelRatio(Oe,R){let{0:ae,1:we}=this._maxCanvasSize,Se=this.getPixelRatio(),De=Oe*Se,ft=R*Se;return Math.min(De>ae?ae/De:1,ft>we?we/ft:1)*Se}getPixelRatio(){var Oe;return(Oe=this._overridePixelRatio)!==null&&Oe!==void 0?Oe:devicePixelRatio}setPixelRatio(Oe){this._overridePixelRatio=Oe,this.resize()}getBounds(){return this.transform.getBounds()}getMaxBounds(){return this.transform.getMaxBounds()}setMaxBounds(Oe){return this.transform.setMaxBounds(ie.convert(Oe)),this._update()}setMinZoom(Oe){if((Oe=Oe??-2)>=-2&&Oe<=this.transform.maxZoom)return this.transform.minZoom=Oe,this._update(),this.getZoom()=this.transform.minZoom)return this.transform.maxZoom=Oe,this._update(),this.getZoom()>Oe&&this.setZoom(Oe),this;throw new Error("maxZoom must be greater than the current minZoom")}getMaxZoom(){return this.transform.maxZoom}setMinPitch(Oe){if((Oe=Oe??0)<0)throw new Error("minPitch must be greater than or equal to 0");if(Oe>=0&&Oe<=this.transform.maxPitch)return this.transform.minPitch=Oe,this._update(),this.getPitch()85)throw new Error("maxPitch must be less than or equal to 85");if(Oe>=this.transform.minPitch)return this.transform.maxPitch=Oe,this._update(),this.getPitch()>Oe&&this.setPitch(Oe),this;throw new Error("maxPitch must be greater than the current minPitch")}getMaxPitch(){return this.transform.maxPitch}getRenderWorldCopies(){return this.transform.renderWorldCopies}setRenderWorldCopies(Oe){return this.transform.renderWorldCopies=Oe,this._update()}project(Oe){return this.transform.locationPoint(t.N.convert(Oe),this.style&&this.terrain)}unproject(Oe){return this.transform.pointLocation(t.P.convert(Oe),this.terrain)}isMoving(){var Oe;return this._moving||((Oe=this.handlers)===null||Oe===void 0?void 0:Oe.isMoving())}isZooming(){var Oe;return this._zooming||((Oe=this.handlers)===null||Oe===void 0?void 0:Oe.isZooming())}isRotating(){var Oe;return this._rotating||((Oe=this.handlers)===null||Oe===void 0?void 0:Oe.isRotating())}_createDelegatedListener(Oe,R,ae){if(Oe==="mouseenter"||Oe==="mouseover"){let we=!1;return{layers:R,listener:ae,delegates:{mousemove:De=>{let ft=R.filter(Dt=>this.getLayer(Dt)),bt=ft.length!==0?this.queryRenderedFeatures(De.point,{layers:ft}):[];bt.length?we||(we=!0,ae.call(this,new au(Oe,this,De.originalEvent,{features:bt}))):we=!1},mouseout:()=>{we=!1}}}}if(Oe==="mouseleave"||Oe==="mouseout"){let we=!1;return{layers:R,listener:ae,delegates:{mousemove:ft=>{let bt=R.filter(Dt=>this.getLayer(Dt));(bt.length!==0?this.queryRenderedFeatures(ft.point,{layers:bt}):[]).length?we=!0:we&&(we=!1,ae.call(this,new au(Oe,this,ft.originalEvent)))},mouseout:ft=>{we&&(we=!1,ae.call(this,new au(Oe,this,ft.originalEvent)))}}}}{let we=Se=>{let De=R.filter(bt=>this.getLayer(bt)),ft=De.length!==0?this.queryRenderedFeatures(Se.point,{layers:De}):[];ft.length&&(Se.features=ft,ae.call(this,Se),delete Se.features)};return{layers:R,listener:ae,delegates:{[Oe]:we}}}}_saveDelegatedListener(Oe,R){this._delegatedListeners=this._delegatedListeners||{},this._delegatedListeners[Oe]=this._delegatedListeners[Oe]||[],this._delegatedListeners[Oe].push(R)}_removeDelegatedListener(Oe,R,ae){if(!this._delegatedListeners||!this._delegatedListeners[Oe])return;let we=this._delegatedListeners[Oe];for(let Se=0;SeR.includes(ft))){for(let ft in De.delegates)this.off(ft,De.delegates[ft]);return void we.splice(Se,1)}}}on(Oe,R,ae){if(ae===void 0)return super.on(Oe,R);let we=this._createDelegatedListener(Oe,typeof R=="string"?[R]:R,ae);this._saveDelegatedListener(Oe,we);for(let Se in we.delegates)this.on(Se,we.delegates[Se]);return this}once(Oe,R,ae){if(ae===void 0)return super.once(Oe,R);let we=typeof R=="string"?[R]:R,Se=this._createDelegatedListener(Oe,we,ae);for(let De in Se.delegates){let ft=Se.delegates[De];Se.delegates[De]=(...bt)=>{this._removeDelegatedListener(Oe,we,ae),ft(...bt)}}this._saveDelegatedListener(Oe,Se);for(let De in Se.delegates)this.once(De,Se.delegates[De]);return this}off(Oe,R,ae){return ae===void 0?super.off(Oe,R):(this._removeDelegatedListener(Oe,typeof R=="string"?[R]:R,ae),this)}queryRenderedFeatures(Oe,R){if(!this.style)return[];let ae,we=Oe instanceof t.P||Array.isArray(Oe),Se=we?Oe:[[0,0],[this.transform.width,this.transform.height]];if(R=R||(we?{}:Oe)||{},Se instanceof t.P||typeof Se[0]=="number")ae=[t.P.convert(Se)];else{let De=t.P.convert(Se[0]),ft=t.P.convert(Se[1]);ae=[De,new t.P(ft.x,De.y),ft,new t.P(De.x,ft.y),De]}return this.style.queryRenderedFeatures(ae,R,this.transform)}querySourceFeatures(Oe,R){return this.style.querySourceFeatures(Oe,R)}setStyle(Oe,R){return(R=t.e({},{localIdeographFontFamily:this._localIdeographFontFamily,validate:this._validateStyle},R)).diff!==!1&&R.localIdeographFontFamily===this._localIdeographFontFamily&&this.style&&Oe?(this._diffStyle(Oe,R),this):(this._localIdeographFontFamily=R.localIdeographFontFamily,this._updateStyle(Oe,R))}setTransformRequest(Oe){return this._requestManager.setTransformRequest(Oe),this}_getUIString(Oe){let R=this._locale[Oe];if(R==null)throw new Error(`Missing UI string '${Oe}'`);return R}_updateStyle(Oe,R){if(R.transformStyle&&this.style&&!this.style._loaded)return void this.style.once("style.load",()=>this._updateStyle(Oe,R));let ae=this.style&&R.transformStyle?this.style.serialize():void 0;return this.style&&(this.style.setEventedParent(null),this.style._remove(!Oe)),Oe?(this.style=new Jr(this,R||{}),this.style.setEventedParent(this,{style:this.style}),typeof Oe=="string"?this.style.loadURL(Oe,R,ae):this.style.loadJSON(Oe,R,ae),this):(delete this.style,this)}_lazyInitEmptyStyle(){this.style||(this.style=new Jr(this,{}),this.style.setEventedParent(this,{style:this.style}),this.style.loadEmpty())}_diffStyle(Oe,R){if(typeof Oe=="string"){let ae=this._requestManager.transformRequest(Oe,"Style");t.h(ae,new AbortController).then(we=>{this._updateDiff(we.data,R)}).catch(we=>{we&&this.fire(new t.j(we))})}else typeof Oe=="object"&&this._updateDiff(Oe,R)}_updateDiff(Oe,R){try{this.style.setState(Oe,R)&&this._update(!0)}catch(ae){t.w(`Unable to perform style diff: ${ae.message||ae.error||ae}. Rebuilding the style from scratch.`),this._updateStyle(Oe,R)}}getStyle(){if(this.style)return this.style.serialize()}isStyleLoaded(){return this.style?this.style.loaded():t.w("There is no style added to the map.")}addSource(Oe,R){return this._lazyInitEmptyStyle(),this.style.addSource(Oe,R),this._update(!0)}isSourceLoaded(Oe){let R=this.style&&this.style.sourceCaches[Oe];if(R!==void 0)return R.loaded();this.fire(new t.j(new Error(`There is no source with ID '${Oe}'`)))}setTerrain(Oe){if(this.style._checkLoaded(),this._terrainDataCallback&&this.style.off("data",this._terrainDataCallback),Oe){let R=this.style.sourceCaches[Oe.source];if(!R)throw new Error(`cannot load terrain, because there exists no source with ID: ${Oe.source}`);this.terrain===null&&R.reload();for(let ae in this.style._layers){let we=this.style._layers[ae];we.type==="hillshade"&&we.source===Oe.source&&t.w("You are using the same source for a hillshade layer and for 3D terrain. Please consider using two separate sources to improve rendering quality.")}this.terrain=new bs(this.painter,R,Oe),this.painter.renderToTexture=new Hs(this.painter,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._terrainDataCallback=ae=>{ae.dataType==="style"?this.terrain.sourceCache.freeRtt():ae.dataType==="source"&&ae.tile&&(ae.sourceId!==Oe.source||this._elevationFreeze||(this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom)),this.terrain.sourceCache.freeRtt(ae.tile.tileID))},this.style.on("data",this._terrainDataCallback)}else this.terrain&&this.terrain.sourceCache.destruct(),this.terrain=null,this.painter.renderToTexture&&this.painter.renderToTexture.destruct(),this.painter.renderToTexture=null,this.transform.minElevationForCurrentTile=0,this.transform.elevation=0;return this.fire(new t.k("terrain",{terrain:Oe})),this}getTerrain(){var Oe,R;return(R=(Oe=this.terrain)===null||Oe===void 0?void 0:Oe.options)!==null&&R!==void 0?R:null}areTilesLoaded(){let Oe=this.style&&this.style.sourceCaches;for(let R in Oe){let ae=Oe[R]._tiles;for(let we in ae){let Se=ae[we];if(Se.state!=="loaded"&&Se.state!=="errored")return!1}}return!0}removeSource(Oe){return this.style.removeSource(Oe),this._update(!0)}getSource(Oe){return this.style.getSource(Oe)}addImage(Oe,R,ae={}){let{pixelRatio:we=1,sdf:Se=!1,stretchX:De,stretchY:ft,content:bt,textFitWidth:Dt,textFitHeight:Yt}=ae;if(this._lazyInitEmptyStyle(),!(R instanceof HTMLImageElement||t.b(R))){if(R.width===void 0||R.height===void 0)return this.fire(new t.j(new Error("Invalid arguments to map.addImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));{let{width:cr,height:hr,data:jr}=R,ea=R;return this.style.addImage(Oe,{data:new t.R({width:cr,height:hr},new Uint8Array(jr)),pixelRatio:we,stretchX:De,stretchY:ft,content:bt,textFitWidth:Dt,textFitHeight:Yt,sdf:Se,version:0,userImage:ea}),ea.onAdd&&ea.onAdd(this,Oe),this}}{let{width:cr,height:hr,data:jr}=i.getImageData(R);this.style.addImage(Oe,{data:new t.R({width:cr,height:hr},jr),pixelRatio:we,stretchX:De,stretchY:ft,content:bt,textFitWidth:Dt,textFitHeight:Yt,sdf:Se,version:0})}}updateImage(Oe,R){let ae=this.style.getImage(Oe);if(!ae)return this.fire(new t.j(new Error("The map has no image with that id. If you are adding a new image use `map.addImage(...)` instead.")));let we=R instanceof HTMLImageElement||t.b(R)?i.getImageData(R):R,{width:Se,height:De,data:ft}=we;if(Se===void 0||De===void 0)return this.fire(new t.j(new Error("Invalid arguments to map.updateImage(). The second argument must be an `HTMLImageElement`, `ImageData`, `ImageBitmap`, or object with `width`, `height`, and `data` properties with the same format as `ImageData`")));if(Se!==ae.data.width||De!==ae.data.height)return this.fire(new t.j(new Error("The width and height of the updated image must be that same as the previous version of the image")));let bt=!(R instanceof HTMLImageElement||t.b(R));return ae.data.replace(ft,bt),this.style.updateImage(Oe,ae),this}getImage(Oe){return this.style.getImage(Oe)}hasImage(Oe){return Oe?!!this.style.getImage(Oe):(this.fire(new t.j(new Error("Missing required image id"))),!1)}removeImage(Oe){this.style.removeImage(Oe)}loadImage(Oe){return l.getImage(this._requestManager.transformRequest(Oe,"Image"),new AbortController)}listImages(){return this.style.listImages()}addLayer(Oe,R){return this._lazyInitEmptyStyle(),this.style.addLayer(Oe,R),this._update(!0)}moveLayer(Oe,R){return this.style.moveLayer(Oe,R),this._update(!0)}removeLayer(Oe){return this.style.removeLayer(Oe),this._update(!0)}getLayer(Oe){return this.style.getLayer(Oe)}getLayersOrder(){return this.style.getLayersOrder()}setLayerZoomRange(Oe,R,ae){return this.style.setLayerZoomRange(Oe,R,ae),this._update(!0)}setFilter(Oe,R,ae={}){return this.style.setFilter(Oe,R,ae),this._update(!0)}getFilter(Oe){return this.style.getFilter(Oe)}setPaintProperty(Oe,R,ae,we={}){return this.style.setPaintProperty(Oe,R,ae,we),this._update(!0)}getPaintProperty(Oe,R){return this.style.getPaintProperty(Oe,R)}setLayoutProperty(Oe,R,ae,we={}){return this.style.setLayoutProperty(Oe,R,ae,we),this._update(!0)}getLayoutProperty(Oe,R){return this.style.getLayoutProperty(Oe,R)}setGlyphs(Oe,R={}){return this._lazyInitEmptyStyle(),this.style.setGlyphs(Oe,R),this._update(!0)}getGlyphs(){return this.style.getGlyphsUrl()}addSprite(Oe,R,ae={}){return this._lazyInitEmptyStyle(),this.style.addSprite(Oe,R,ae,we=>{we||this._update(!0)}),this}removeSprite(Oe){return this._lazyInitEmptyStyle(),this.style.removeSprite(Oe),this._update(!0)}getSprite(){return this.style.getSprite()}setSprite(Oe,R={}){return this._lazyInitEmptyStyle(),this.style.setSprite(Oe,R,ae=>{ae||this._update(!0)}),this}setLight(Oe,R={}){return this._lazyInitEmptyStyle(),this.style.setLight(Oe,R),this._update(!0)}getLight(){return this.style.getLight()}setSky(Oe){return this._lazyInitEmptyStyle(),this.style.setSky(Oe),this._update(!0)}getSky(){return this.style.getSky()}setFeatureState(Oe,R){return this.style.setFeatureState(Oe,R),this._update()}removeFeatureState(Oe,R){return this.style.removeFeatureState(Oe,R),this._update()}getFeatureState(Oe){return this.style.getFeatureState(Oe)}getContainer(){return this._container}getCanvasContainer(){return this._canvasContainer}getCanvas(){return this._canvas}_containerDimensions(){let Oe=0,R=0;return this._container&&(Oe=this._container.clientWidth||400,R=this._container.clientHeight||300),[Oe,R]}_setupContainer(){let Oe=this._container;Oe.classList.add("maplibregl-map");let R=this._canvasContainer=n.create("div","maplibregl-canvas-container",Oe);this._interactive&&R.classList.add("maplibregl-interactive"),this._canvas=n.create("canvas","maplibregl-canvas",R),this._canvas.addEventListener("webglcontextlost",this._contextLost,!1),this._canvas.addEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.setAttribute("tabindex",this._interactive?"0":"-1"),this._canvas.setAttribute("aria-label",this._getUIString("Map.Title")),this._canvas.setAttribute("role","region");let ae=this._containerDimensions(),we=this._getClampedPixelRatio(ae[0],ae[1]);this._resizeCanvas(ae[0],ae[1],we);let Se=this._controlContainer=n.create("div","maplibregl-control-container",Oe),De=this._controlPositions={};["top-left","top-right","bottom-left","bottom-right"].forEach(ft=>{De[ft]=n.create("div",`maplibregl-ctrl-${ft} `,Se)}),this._container.addEventListener("scroll",this._onMapScroll,!1)}_resizeCanvas(Oe,R,ae){this._canvas.width=Math.floor(ae*Oe),this._canvas.height=Math.floor(ae*R),this._canvas.style.width=`${Oe}px`,this._canvas.style.height=`${R}px`}_setupPainter(){let Oe={alpha:!0,stencil:!0,depth:!0,failIfMajorPerformanceCaveat:this._failIfMajorPerformanceCaveat,preserveDrawingBuffer:this._preserveDrawingBuffer,antialias:this._antialias||!1},R=null;this._canvas.addEventListener("webglcontextcreationerror",we=>{R={requestedAttributes:Oe},we&&(R.statusMessage=we.statusMessage,R.type=we.type)},{once:!0});let ae=this._canvas.getContext("webgl2",Oe)||this._canvas.getContext("webgl",Oe);if(!ae){let we="Failed to initialize WebGL";throw R?(R.message=we,new Error(JSON.stringify(R))):new Error(we)}this.painter=new xc(ae,this.transform),s.testSupport(ae)}loaded(){return!this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()}_update(Oe){return this.style&&this.style._loaded?(this._styleDirty=this._styleDirty||Oe,this._sourcesDirty=!0,this.triggerRepaint(),this):this}_requestRenderFrame(Oe){return this._update(),this._renderTaskQueue.add(Oe)}_cancelRenderFrame(Oe){this._renderTaskQueue.remove(Oe)}_render(Oe){let R=this._idleTriggered?this._fadeDuration:0;if(this.painter.context.setDirty(),this.painter.setBaseState(),this._renderTaskQueue.run(Oe),this._removed)return;let ae=!1;if(this.style&&this._styleDirty){this._styleDirty=!1;let Se=this.transform.zoom,De=i.now();this.style.zoomHistory.update(Se,De);let ft=new t.z(Se,{now:De,fadeDuration:R,zoomHistory:this.style.zoomHistory,transition:this.style.getTransition()}),bt=ft.crossFadingFactor();bt===1&&bt===this._crossFadingFactor||(ae=!0,this._crossFadingFactor=bt),this.style.update(ft)}this.style&&this._sourcesDirty&&(this._sourcesDirty=!1,this.style._updateSources(this.transform)),this.terrain?(this.terrain.sourceCache.update(this.transform,this.terrain),this.transform.minElevationForCurrentTile=this.terrain.getMinTileElevationForLngLatZoom(this.transform.center,this.transform.tileZoom),this._elevationFreeze||(this.transform.elevation=this.terrain.getElevationForLngLatZoom(this.transform.center,this.transform.tileZoom))):(this.transform.minElevationForCurrentTile=0,this.transform.elevation=0),this._placementDirty=this.style&&this.style._updatePlacement(this.painter.transform,this.showCollisionBoxes,R,this._crossSourceCollisions),this.painter.render(this.style,{showTileBoundaries:this.showTileBoundaries,showOverdrawInspector:this._showOverdrawInspector,rotating:this.isRotating(),zooming:this.isZooming(),moving:this.isMoving(),fadeDuration:R,showPadding:this.showPadding}),this.fire(new t.k("render")),this.loaded()&&!this._loaded&&(this._loaded=!0,t.bf.mark(t.bg.load),this.fire(new t.k("load"))),this.style&&(this.style.hasTransitions()||ae)&&(this._styleDirty=!0),this.style&&!this._placementDirty&&this.style._releaseSymbolFadeTiles();let we=this._sourcesDirty||this._styleDirty||this._placementDirty;return we||this._repaint?this.triggerRepaint():!this.isMoving()&&this.loaded()&&this.fire(new t.k("idle")),!this._loaded||this._fullyLoaded||we||(this._fullyLoaded=!0,t.bf.mark(t.bg.fullLoad)),this}redraw(){return this.style&&(this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._render(0)),this}remove(){var Oe;this._hash&&this._hash.remove();for(let ae of this._controls)ae.onRemove(this);this._controls=[],this._frameRequest&&(this._frameRequest.abort(),this._frameRequest=null),this._renderTaskQueue.clear(),this.painter.destroy(),this.handlers.destroy(),delete this.handlers,this.setStyle(null),typeof window<"u"&&removeEventListener("online",this._onWindowOnline,!1),l.removeThrottleControl(this._imageQueueHandle),(Oe=this._resizeObserver)===null||Oe===void 0||Oe.disconnect();let R=this.painter.context.gl.getExtension("WEBGL_lose_context");R?.loseContext&&R.loseContext(),this._canvas.removeEventListener("webglcontextrestored",this._contextRestored,!1),this._canvas.removeEventListener("webglcontextlost",this._contextLost,!1),n.remove(this._canvasContainer),n.remove(this._controlContainer),this._container.classList.remove("maplibregl-map"),t.bf.clearMetrics(),this._removed=!0,this.fire(new t.k("remove"))}triggerRepaint(){this.style&&!this._frameRequest&&(this._frameRequest=new AbortController,i.frameAsync(this._frameRequest).then(Oe=>{t.bf.frame(Oe),this._frameRequest=null,this._render(Oe)}).catch(()=>{}))}get showTileBoundaries(){return!!this._showTileBoundaries}set showTileBoundaries(Oe){this._showTileBoundaries!==Oe&&(this._showTileBoundaries=Oe,this._update())}get showPadding(){return!!this._showPadding}set showPadding(Oe){this._showPadding!==Oe&&(this._showPadding=Oe,this._update())}get showCollisionBoxes(){return!!this._showCollisionBoxes}set showCollisionBoxes(Oe){this._showCollisionBoxes!==Oe&&(this._showCollisionBoxes=Oe,Oe?this.style._generateCollisionBoxes():this._update())}get showOverdrawInspector(){return!!this._showOverdrawInspector}set showOverdrawInspector(Oe){this._showOverdrawInspector!==Oe&&(this._showOverdrawInspector=Oe,this._update())}get repaint(){return!!this._repaint}set repaint(Oe){this._repaint!==Oe&&(this._repaint=Oe,this.triggerRepaint())}get vertices(){return!!this._vertices}set vertices(Oe){this._vertices=Oe,this._update()}get version(){return Il}getCameraTargetElevation(){return this.transform.elevation}},e.MapMouseEvent=au,e.MapTouchEvent=$c,e.MapWheelEvent=Mh,e.Marker=ec,e.NavigationControl=class{constructor(Oe){this._updateZoomButtons=()=>{let R=this._map.getZoom(),ae=R===this._map.getMaxZoom(),we=R===this._map.getMinZoom();this._zoomInButton.disabled=ae,this._zoomOutButton.disabled=we,this._zoomInButton.setAttribute("aria-disabled",ae.toString()),this._zoomOutButton.setAttribute("aria-disabled",we.toString())},this._rotateCompassArrow=()=>{let R=this.options.visualizePitch?`scale(${1/Math.pow(Math.cos(this._map.transform.pitch*(Math.PI/180)),.5)}) rotateX(${this._map.transform.pitch}deg) rotateZ(${this._map.transform.angle*(180/Math.PI)}deg)`:`rotate(${this._map.transform.angle*(180/Math.PI)}deg)`;this._compassIcon.style.transform=R},this._setButtonTitle=(R,ae)=>{let we=this._map._getUIString(`NavigationControl.${ae}`);R.title=we,R.setAttribute("aria-label",we)},this.options=t.e({},Ln,Oe),this._container=n.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._container.addEventListener("contextmenu",R=>R.preventDefault()),this.options.showZoom&&(this._zoomInButton=this._createButton("maplibregl-ctrl-zoom-in",R=>this._map.zoomIn({},{originalEvent:R})),n.create("span","maplibregl-ctrl-icon",this._zoomInButton).setAttribute("aria-hidden","true"),this._zoomOutButton=this._createButton("maplibregl-ctrl-zoom-out",R=>this._map.zoomOut({},{originalEvent:R})),n.create("span","maplibregl-ctrl-icon",this._zoomOutButton).setAttribute("aria-hidden","true")),this.options.showCompass&&(this._compass=this._createButton("maplibregl-ctrl-compass",R=>{this.options.visualizePitch?this._map.resetNorthPitch({},{originalEvent:R}):this._map.resetNorth({},{originalEvent:R})}),this._compassIcon=n.create("span","maplibregl-ctrl-icon",this._compass),this._compassIcon.setAttribute("aria-hidden","true"))}onAdd(Oe){return this._map=Oe,this.options.showZoom&&(this._setButtonTitle(this._zoomInButton,"ZoomIn"),this._setButtonTitle(this._zoomOutButton,"ZoomOut"),this._map.on("zoom",this._updateZoomButtons),this._updateZoomButtons()),this.options.showCompass&&(this._setButtonTitle(this._compass,"ResetBearing"),this.options.visualizePitch&&this._map.on("pitch",this._rotateCompassArrow),this._map.on("rotate",this._rotateCompassArrow),this._rotateCompassArrow(),this._handler=new Ao(this._map,this._compass,this.options.visualizePitch)),this._container}onRemove(){n.remove(this._container),this.options.showZoom&&this._map.off("zoom",this._updateZoomButtons),this.options.showCompass&&(this.options.visualizePitch&&this._map.off("pitch",this._rotateCompassArrow),this._map.off("rotate",this._rotateCompassArrow),this._handler.off(),delete this._handler),delete this._map}_createButton(Oe,R){let ae=n.create("button",Oe,this._container);return ae.type="button",ae.addEventListener("click",R),ae}},e.Popup=class extends t.E{constructor(Oe){super(),this.remove=()=>(this._content&&n.remove(this._content),this._container&&(n.remove(this._container),delete this._container),this._map&&(this._map.off("move",this._update),this._map.off("move",this._onClose),this._map.off("click",this._onClose),this._map.off("remove",this.remove),this._map.off("mousemove",this._onMouseMove),this._map.off("mouseup",this._onMouseUp),this._map.off("drag",this._onDrag),this._map._canvasContainer.classList.remove("maplibregl-track-pointer"),delete this._map,this.fire(new t.k("close"))),this),this._onMouseUp=R=>{this._update(R.point)},this._onMouseMove=R=>{this._update(R.point)},this._onDrag=R=>{this._update(R.point)},this._update=R=>{var ae;if(!this._map||!this._lngLat&&!this._trackPointer||!this._content)return;if(!this._container){if(this._container=n.create("div","maplibregl-popup",this._map.getContainer()),this._tip=n.create("div","maplibregl-popup-tip",this._container),this._container.appendChild(this._content),this.options.className)for(let bt of this.options.className.split(" "))this._container.classList.add(bt);this._closeButton&&this._closeButton.setAttribute("aria-label",this._map._getUIString("Popup.Close")),this._trackPointer&&this._container.classList.add("maplibregl-popup-track-pointer")}if(this.options.maxWidth&&this._container.style.maxWidth!==this.options.maxWidth&&(this._container.style.maxWidth=this.options.maxWidth),this._lngLat=this._map.transform.renderWorldCopies&&!this._trackPointer?Ts(this._lngLat,this._flatPos,this._map.transform):(ae=this._lngLat)===null||ae===void 0?void 0:ae.wrap(),this._trackPointer&&!R)return;let we=this._flatPos=this._pos=this._trackPointer&&R?R:this._map.project(this._lngLat);this._map.terrain&&(this._flatPos=this._trackPointer&&R?R:this._map.transform.locationPoint(this._lngLat));let Se=this.options.anchor,De=hc(this.options.offset);if(!Se){let bt=this._container.offsetWidth,Dt=this._container.offsetHeight,Yt;Yt=we.y+De.bottom.ythis._map.transform.height-Dt?["bottom"]:[],we.xthis._map.transform.width-bt/2&&Yt.push("right"),Se=Yt.length===0?"bottom":Yt.join("-")}let ft=we.add(De[Se]);this.options.subpixelPositioning||(ft=ft.round()),n.setTransform(this._container,`${nu[Se]} translate(${ft.x}px,${ft.y}px)`),Pu(this._container,Se,"popup")},this._onClose=()=>{this.remove()},this.options=t.e(Object.create(Po),Oe)}addTo(Oe){return this._map&&this.remove(),this._map=Oe,this.options.closeOnClick&&this._map.on("click",this._onClose),this.options.closeOnMove&&this._map.on("move",this._onClose),this._map.on("remove",this.remove),this._update(),this._focusFirstElement(),this._trackPointer?(this._map.on("mousemove",this._onMouseMove),this._map.on("mouseup",this._onMouseUp),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")):this._map.on("move",this._update),this.fire(new t.k("open")),this}isOpen(){return!!this._map}getLngLat(){return this._lngLat}setLngLat(Oe){return this._lngLat=t.N.convert(Oe),this._pos=null,this._flatPos=null,this._trackPointer=!1,this._update(),this._map&&(this._map.on("move",this._update),this._map.off("mousemove",this._onMouseMove),this._container&&this._container.classList.remove("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.remove("maplibregl-track-pointer")),this}trackPointer(){return this._trackPointer=!0,this._pos=null,this._flatPos=null,this._update(),this._map&&(this._map.off("move",this._update),this._map.on("mousemove",this._onMouseMove),this._map.on("drag",this._onDrag),this._container&&this._container.classList.add("maplibregl-popup-track-pointer"),this._map._canvasContainer.classList.add("maplibregl-track-pointer")),this}getElement(){return this._container}setText(Oe){return this.setDOMContent(document.createTextNode(Oe))}setHTML(Oe){let R=document.createDocumentFragment(),ae=document.createElement("body"),we;for(ae.innerHTML=Oe;we=ae.firstChild,we;)R.appendChild(we);return this.setDOMContent(R)}getMaxWidth(){var Oe;return(Oe=this._container)===null||Oe===void 0?void 0:Oe.style.maxWidth}setMaxWidth(Oe){return this.options.maxWidth=Oe,this._update(),this}setDOMContent(Oe){if(this._content)for(;this._content.hasChildNodes();)this._content.firstChild&&this._content.removeChild(this._content.firstChild);else this._content=n.create("div","maplibregl-popup-content",this._container);return this._content.appendChild(Oe),this._createCloseButton(),this._update(),this._focusFirstElement(),this}addClassName(Oe){return this._container&&this._container.classList.add(Oe),this}removeClassName(Oe){return this._container&&this._container.classList.remove(Oe),this}setOffset(Oe){return this.options.offset=Oe,this._update(),this}toggleClassName(Oe){if(this._container)return this._container.classList.toggle(Oe)}setSubpixelPositioning(Oe){this.options.subpixelPositioning=Oe}_createCloseButton(){this.options.closeButton&&(this._closeButton=n.create("button","maplibregl-popup-close-button",this._content),this._closeButton.type="button",this._closeButton.innerHTML="×",this._closeButton.addEventListener("click",this._onClose))}_focusFirstElement(){if(!this.options.focusAfterOpen||!this._container)return;let Oe=this._container.querySelector(Nc);Oe&&Oe.focus()}},e.RasterDEMTileSource=Be,e.RasterTileSource=Ae,e.ScaleControl=class{constructor(Oe){this._onMove=()=>{Ac(this._map,this._container,this.options)},this.setUnit=R=>{this.options.unit=R,Ac(this._map,this._container,this.options)},this.options=Object.assign(Object.assign({},Iu),Oe)}getDefaultPosition(){return"bottom-left"}onAdd(Oe){return this._map=Oe,this._container=n.create("div","maplibregl-ctrl maplibregl-ctrl-scale",Oe.getContainer()),this._map.on("move",this._onMove),this._onMove(),this._container}onRemove(){n.remove(this._container),this._map.off("move",this._onMove),this._map=void 0}},e.ScrollZoomHandler=ba,e.Style=Jr,e.TerrainControl=class{constructor(Oe){this._toggleTerrain=()=>{this._map.getTerrain()?this._map.setTerrain(null):this._map.setTerrain(this.options),this._updateTerrainIcon()},this._updateTerrainIcon=()=>{this._terrainButton.classList.remove("maplibregl-ctrl-terrain"),this._terrainButton.classList.remove("maplibregl-ctrl-terrain-enabled"),this._map.terrain?(this._terrainButton.classList.add("maplibregl-ctrl-terrain-enabled"),this._terrainButton.title=this._map._getUIString("TerrainControl.Disable")):(this._terrainButton.classList.add("maplibregl-ctrl-terrain"),this._terrainButton.title=this._map._getUIString("TerrainControl.Enable"))},this.options=Oe}onAdd(Oe){return this._map=Oe,this._container=n.create("div","maplibregl-ctrl maplibregl-ctrl-group"),this._terrainButton=n.create("button","maplibregl-ctrl-terrain",this._container),n.create("span","maplibregl-ctrl-icon",this._terrainButton).setAttribute("aria-hidden","true"),this._terrainButton.type="button",this._terrainButton.addEventListener("click",this._toggleTerrain),this._updateTerrainIcon(),this._map.on("terrain",this._updateTerrainIcon),this._container}onRemove(){n.remove(this._container),this._map.off("terrain",this._updateTerrainIcon),this._map=void 0}},e.TwoFingersTouchPitchHandler=ef,e.TwoFingersTouchRotateHandler=Oc,e.TwoFingersTouchZoomHandler=iu,e.TwoFingersTouchZoomRotateHandler=li,e.VectorTileSource=be,e.VideoSource=it,e.addSourceType=(Oe,R)=>t._(void 0,void 0,void 0,function*(){if(Me(Oe))throw new Error(`A source type called "${Oe}" already exists.`);((ae,we)=>{lt[ae]=we})(Oe,R)}),e.clearPrewarmedResources=function(){let Oe=he;Oe&&(Oe.isPreloaded()&&Oe.numActive()===1?(Oe.release(Q),he=null):console.warn("Could not clear WebWorkers since there are active Map instances that still reference it. The pre-warmed WebWorker pool can only be cleared when all map instances have been removed with map.remove()"))},e.getMaxParallelImageRequests=function(){return t.a.MAX_PARALLEL_IMAGE_REQUESTS},e.getRTLTextPluginStatus=function(){return tt().getRTLTextPluginStatus()},e.getVersion=function(){return pc},e.getWorkerCount=function(){return ue.workerCount},e.getWorkerUrl=function(){return t.a.WORKER_URL},e.importScriptInWorkers=function(Oe){return Z().broadcast("IS",Oe)},e.prewarm=function(){$().acquire(Q)},e.setMaxParallelImageRequests=function(Oe){t.a.MAX_PARALLEL_IMAGE_REQUESTS=Oe},e.setRTLTextPlugin=function(Oe,R){return tt().setRTLTextPlugin(Oe,R)},e.setWorkerCount=function(Oe){ue.workerCount=Oe},e.setWorkerUrl=function(Oe){t.a.WORKER_URL=Oe}});var M=g;return M})}}),Tq=Ye({"src/plots/map/layers.js"(X,H){"use strict";var g=ta(),x=jl().sanitizeHTML,A=Ck(),M=_g();function e(i,n){this.subplot=i,this.uid=i.uid+"-"+n,this.index=n,this.idSource="source-"+this.uid,this.idLayer=M.layoutLayerPrefix+this.uid,this.sourceType=null,this.source=null,this.layerType=null,this.below=null,this.visible=!1}var t=e.prototype;t.update=function(n){this.visible?this.needsNewImage(n)?this.updateImage(n):this.needsNewSource(n)?(this.removeLayer(),this.updateSource(n),this.updateLayer(n)):this.needsNewLayer(n)?this.updateLayer(n):this.updateStyle(n):(this.updateSource(n),this.updateLayer(n)),this.visible=r(n)},t.needsNewImage=function(i){var n=this.subplot.map;return n.getSource(this.idSource)&&this.sourceType==="image"&&i.sourcetype==="image"&&(this.source!==i.source||JSON.stringify(this.coordinates)!==JSON.stringify(i.coordinates))},t.needsNewSource=function(i){return this.sourceType!==i.sourcetype||JSON.stringify(this.source)!==JSON.stringify(i.source)||this.layerType!==i.type},t.needsNewLayer=function(i){return this.layerType!==i.type||this.below!==this.subplot.belowLookup["layout-"+this.index]},t.lookupBelow=function(){return this.subplot.belowLookup["layout-"+this.index]},t.updateImage=function(i){var n=this.subplot.map;n.getSource(this.idSource).updateImage({url:i.source,coordinates:i.coordinates});var s=this.findFollowingMapLayerId(this.lookupBelow());s!==null&&this.subplot.map.moveLayer(this.idLayer,s)},t.updateSource=function(i){var n=this.subplot.map;if(n.getSource(this.idSource)&&n.removeSource(this.idSource),this.sourceType=i.sourcetype,this.source=i.source,!!r(i)){var s=a(i);n.addSource(this.idSource,s)}},t.findFollowingMapLayerId=function(i){if(i==="traces")for(var n=this.subplot.getMapLayers(),s=0;s0){for(var s=0;s0}function o(i){var n={},s={};switch(i.type){case"circle":g.extendFlat(s,{"circle-radius":i.circle.radius,"circle-color":i.color,"circle-opacity":i.opacity});break;case"line":g.extendFlat(s,{"line-width":i.line.width,"line-color":i.color,"line-opacity":i.opacity,"line-dasharray":i.line.dash});break;case"fill":g.extendFlat(s,{"fill-color":i.color,"fill-outline-color":i.fill.outlinecolor,"fill-opacity":i.opacity});break;case"symbol":var c=i.symbol,h=A(c.textposition,c.iconsize);g.extendFlat(n,{"icon-image":c.icon+"-15","icon-size":c.iconsize/10,"text-field":c.text,"text-size":c.textfont.size,"text-anchor":h.anchor,"text-offset":h.offset,"symbol-placement":c.placement}),g.extendFlat(s,{"icon-color":i.color,"text-color":c.textfont.color,"text-opacity":i.opacity});break;case"raster":g.extendFlat(s,{"raster-fade-duration":0,"raster-opacity":i.opacity});break}return{layout:n,paint:s}}function a(i){var n=i.sourcetype,s=i.source,c={type:n},h;return n==="geojson"?h="data":n==="vector"?h=typeof s=="string"?"url":"tiles":n==="raster"?(h="tiles",c.tileSize=256):n==="image"&&(h="url",c.coordinates=i.coordinates),c[h]=s,i.sourceattribution&&(c.attribution=x(i.sourceattribution)),c}H.exports=function(n,s,c){var h=new e(n,s);return h.update(c),h}}}),Aq=Ye({"src/plots/map/map.js"(X,H){"use strict";var g=wq(),x=ta(),A=vg(),M=Hn(),e=Co(),t=bp(),r=Lc(),o=Jd(),a=o.drawMode,i=o.selectMode,n=ff().prepSelect,s=ff().clearOutline,c=ff().clearSelectionsCache,h=ff().selectOnClick,v=_g(),p=Tq();function T(m,b){this.id=b,this.gd=m;var d=m._fullLayout,u=m._context;this.container=d._glcontainer.node(),this.isStatic=u.staticPlot,this.uid=d._uid+"-"+this.id,this.div=null,this.xaxis=null,this.yaxis=null,this.createFramework(d),this.map=null,this.styleObj=null,this.traceHash={},this.layerList=[],this.belowLookup={},this.dragging=!1,this.wheeling=!1}var l=T.prototype;l.plot=function(m,b,d){var u=this,y;u.map?y=new Promise(function(f,P){u.updateMap(m,b,f,P)}):y=new Promise(function(f,P){u.createMap(m,b,f,P)}),d.push(y)},l.createMap=function(m,b,d,u){var y=this,f=b[y.id],P=y.styleObj=w(f.style),L=f.bounds,z=L?[[L.west,L.south],[L.east,L.north]]:null,F=y.map=new g.Map({container:y.div,style:P.style,center:E(f.center),zoom:f.zoom,bearing:f.bearing,pitch:f.pitch,maxBounds:z,interactive:!y.isStatic,preserveDrawingBuffer:y.isStatic,doubleClickZoom:!1,boxZoom:!1,attributionControl:!1}).addControl(new g.AttributionControl({compact:!0})),B={};F.on("styleimagemissing",function(I){var N=I.id;if(!B[N]&&N.includes("-15")){B[N]=!0;var U=new Image(15,15);U.onload=function(){F.addImage(N,U)},U.crossOrigin="Anonymous",U.src="https://unpkg.com/maki@2.1.0/icons/"+N+".svg"}}),F.setTransformRequest(function(I){return I=I.replace("https://fonts.openmaptiles.org/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),I=I.replace("https://tiles.basemaps.cartocdn.com/fonts/Open Sans Extrabold","https://fonts.openmaptiles.org/Open Sans Extra Bold"),I=I.replace("https://fonts.openmaptiles.org/Open Sans Regular,Arial Unicode MS Regular","https://fonts.openmaptiles.org/Klokantech Noto Sans Regular"),{url:I}}),F._canvas.style.left="0px",F._canvas.style.top="0px",y.rejectOnError(u),y.isStatic||y.initFx(m,b);var O=[];O.push(new Promise(function(I){F.once("load",I)})),O=O.concat(A.fetchTraceGeoData(m)),Promise.all(O).then(function(){y.fillBelowLookup(m,b),y.updateData(m),y.updateLayout(b),y.resolveOnRender(d)}).catch(u)},l.updateMap=function(m,b,d,u){var y=this,f=y.map,P=b[this.id];y.rejectOnError(u);var L=[],z=w(P.style);JSON.stringify(y.styleObj)!==JSON.stringify(z)&&(y.styleObj=z,f.setStyle(z.style),y.traceHash={},L.push(new Promise(function(F){f.once("styledata",F)}))),L=L.concat(A.fetchTraceGeoData(m)),Promise.all(L).then(function(){y.fillBelowLookup(m,b),y.updateData(m),y.updateLayout(b),y.resolveOnRender(d)}).catch(u)},l.fillBelowLookup=function(m,b){var d=b[this.id],u=d.layers,y,f,P=this.belowLookup={},L=!1;for(y=0;y1)for(y=0;y-1&&h(z.originalEvent,u,[d.xaxis],[d.yaxis],d.id,L),F.indexOf("event")>-1&&r.click(u,z.originalEvent)}}},l.updateFx=function(m){var b=this,d=b.map,u=b.gd;if(b.isStatic)return;function y(z){var F=b.map.unproject(z);return[F.lng,F.lat]}var f=m.dragmode,P;P=function(z,F){if(F.isRect){var B=z.range={};B[b.id]=[y([F.xmin,F.ymin]),y([F.xmax,F.ymax])]}else{var O=z.lassoPoints={};O[b.id]=F.map(y)}};var L=b.dragOptions;b.dragOptions=x.extendDeep(L||{},{dragmode:m.dragmode,element:b.div,gd:u,plotinfo:{id:b.id,domain:m[b.id].domain,xaxis:b.xaxis,yaxis:b.yaxis,fillRangeItems:P},xaxes:[b.xaxis],yaxes:[b.yaxis],subplot:b.id}),d.off("click",b.onClickInPanHandler),i(f)||a(f)?(d.dragPan.disable(),d.on("zoomstart",b.clearOutline),b.dragOptions.prepFn=function(z,F,B){n(z,F,B,b.dragOptions,f)},t.init(b.dragOptions)):(d.dragPan.enable(),d.off("zoomstart",b.clearOutline),b.div.onmousedown=null,b.div.ontouchstart=null,b.div.removeEventListener("touchstart",b.div._ontouchstart),b.onClickInPanHandler=b.onClickInPanFn(b.dragOptions),d.on("click",b.onClickInPanHandler))},l.updateFramework=function(m){var b=m[this.id].domain,d=m._size,u=this.div.style;u.width=d.w*(b.x[1]-b.x[0])+"px",u.height=d.h*(b.y[1]-b.y[0])+"px",u.left=d.l+b.x[0]*d.w+"px",u.top=d.t+(1-b.y[1])*d.h+"px",this.xaxis._offset=d.l+b.x[0]*d.w,this.xaxis._length=d.w*(b.x[1]-b.x[0]),this.yaxis._offset=d.t+(1-b.y[1])*d.h,this.yaxis._length=d.h*(b.y[1]-b.y[0])},l.updateLayers=function(m){var b=m[this.id],d=b.layers,u=this.layerList,y;if(d.length!==u.length){for(y=0;yd/2){var u=S.split("|").join("
");m.text(u).attr("data-unformatted",u).call(r.convertToTspans,i),b=t.bBox(m.node())}m.attr("transform",g(-3,-b.height+8)),E.insert("rect",".static-attribution").attr({x:-b.width-6,y:-b.height-3,width:b.width+6,height:b.height+3,fill:"rgba(255, 255, 255, 0.75)"});var y=1;b.width+6>d&&(y=d/(b.width+6));var f=[c.l+c.w*p.x[1],c.t+c.h*(1-p.y[0])];E.attr("transform",g(f[0],f[1])+x(y))}},X.updateFx=function(i){for(var n=i._fullLayout,s=n._subplots[a],c=0;c=0;o--)t.removeLayer(r[o][1])},e.dispose=function(){var t=this.subplot.map;this._removeLayers(),t.removeSource(this.sourceId)},H.exports=function(r,o){var a=o[0].trace,i=new M(r,a.uid),n=i.sourceId,s=g(o),c=i.below=r.belowLookup["trace-"+a.uid];return r.map.addSource(n,{type:"geojson",data:s.geojson}),i._addLayers(s,c),o[0].trace._glTrace=i,i}}}),Lq=Ye({"src/traces/choroplethmap/index.js"(X,H){"use strict";H.exports={attributes:Lk(),supplyDefaults:kq(),colorbar:ag(),calc:sT(),plot:Cq(),hoverPoints:uT(),eventData:cT(),selectPoints:fT(),styleOnSelect:function(g,x){if(x){var A=x[0].trace;A._glTrace.updateOnSelect(x)}},getBelow:function(g,x){for(var A=x.getMapLayers(),M=A.length-2;M>=0;M--){var e=A[M].id;if(typeof e=="string"&&e.indexOf("water")===0){for(var t=M+1;t0?+p[h]:0),c.push({type:"Feature",geometry:{type:"Point",coordinates:w},properties:S})}}var m=M.extractOpts(a),b=m.reversescale?M.flipScale(m.colorscale):m.colorscale,d=b[0][1],u=A.opacity(d)<1?d:A.addOpacity(d,0),y=["interpolate",["linear"],["heatmap-density"],0,u];for(h=1;h=0;r--)e.removeLayer(t[r][1])},M.dispose=function(){var e=this.subplot.map;this._removeLayers(),e.removeSource(this.sourceId)},H.exports=function(t,r){var o=r[0].trace,a=new A(t,o.uid),i=a.sourceId,n=g(r),s=a.below=t.belowLookup["trace-"+o.uid];return t.map.addSource(i,{type:"geojson",data:n.geojson}),a._addLayers(n,s),a}}}),Fq=Ye({"src/traces/densitymap/hover.js"(X,H){"use strict";var g=Co(),x=ET().hoverPoints,A=ET().getExtraText;H.exports=function(e,t,r){var o=x(e,t,r);if(o){var a=o[0],i=a.cd,n=i[0].trace,s=i[a.index];if(delete a.color,"z"in s){var c=a.subplot.mockAxis;a.z=s.z,a.zLabel=g.tickText(c,c.c2l(s.z),"hover").text}return a.extraText=A(n,s,i[0].t.labels),[a]}}}}),Oq=Ye({"src/traces/densitymap/event_data.js"(X,H){"use strict";H.exports=function(x,A){return x.lon=A.lon,x.lat=A.lat,x.z=A.z,x}}}),Bq=Ye({"src/traces/densitymap/index.js"(X,H){"use strict";H.exports={attributes:Ik(),supplyDefaults:Iq(),colorbar:ag(),formatLabels:kk(),calc:Rq(),plot:zq(),hoverPoints:Fq(),eventData:Oq(),getBelow:function(g,x){for(var A=x.getMapLayers(),M=0;M0;){l=w[w.length-1];var S=x[l];if(r[l]=0&&a[l].push(o[m])}r[l]=E}else{if(e[l]===M[l]){for(var b=[],d=[],u=0,E=_.length-1;E>=0;--E){var y=_[E];if(t[y]=!1,b.push(y),d.push(a[y]),u+=a[y].length,o[y]=s.length,y===l){_.length=E;break}}s.push(b);for(var f=new Array(u),E=0;Em&&(m=n.source[_]),n.target[_]>m&&(m=n.target[_]);var b=m+1;a.node._count=b;var d,u=a.node.groups,y={};for(_=0;_0&&e(B,b)&&e(O,b)&&!(y.hasOwnProperty(B)&&y.hasOwnProperty(O)&&y[B]===y[O])){y.hasOwnProperty(O)&&(O=y[O]),y.hasOwnProperty(B)&&(B=y[B]),B=+B,O=+O,p[B]=p[O]=!0;var I="";n.label&&n.label[_]&&(I=n.label[_]);var N=null;I&&T.hasOwnProperty(I)&&(N=T[I]),s.push({pointNumber:_,label:I,color:c?n.color[_]:n.color,hovercolor:h?n.hovercolor[_]:n.hovercolor,customdata:v?n.customdata[_]:n.customdata,concentrationscale:N,source:B,target:O,value:+F}),z.source.push(B),z.target.push(O)}}var U=b+u.length,W=M(i.color),Q=M(i.customdata),ue=[];for(_=0;_b-1,childrenNodes:[],pointNumber:_,label:se,color:W?i.color[_]:i.color,customdata:Q?i.customdata[_]:i.customdata})}var he=!1;return o(U,z.source,z.target)&&(he=!0),{circular:he,links:s,nodes:ue,groups:u,groupLookup:y}}function o(a,i,n){for(var s=x.init2dArray(a,0),c=0;c1})}H.exports=function(i,n){var s=r(n);return A({circular:s.circular,_nodes:s.nodes,_links:s.links,_groups:s.groups,_groupLookup:s.groupLookup})}}}),Vq=Ye({"node_modules/d3-quadtree/dist/d3-quadtree.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X):(g=g||self,x(g.d3=g.d3||{}))})(X,function(g){"use strict";function x(b){var d=+this._x.call(null,b),u=+this._y.call(null,b);return A(this.cover(d,u),d,u,b)}function A(b,d,u,y){if(isNaN(d)||isNaN(u))return b;var f,P=b._root,L={data:y},z=b._x0,F=b._y0,B=b._x1,O=b._y1,I,N,U,W,Q,ue,se,he;if(!P)return b._root=L,b;for(;P.length;)if((Q=d>=(I=(z+B)/2))?z=I:B=I,(ue=u>=(N=(F+O)/2))?F=N:O=N,f=P,!(P=P[se=ue<<1|Q]))return f[se]=L,b;if(U=+b._x.call(null,P.data),W=+b._y.call(null,P.data),d===U&&u===W)return L.next=P,f?f[se]=L:b._root=L,b;do f=f?f[se]=new Array(4):b._root=new Array(4),(Q=d>=(I=(z+B)/2))?z=I:B=I,(ue=u>=(N=(F+O)/2))?F=N:O=N;while((se=ue<<1|Q)===(he=(W>=N)<<1|U>=I));return f[he]=P,f[se]=L,b}function M(b){var d,u,y=b.length,f,P,L=new Array(y),z=new Array(y),F=1/0,B=1/0,O=-1/0,I=-1/0;for(u=0;uO&&(O=f),PI&&(I=P));if(F>O||B>I)return this;for(this.cover(F,B).cover(O,I),u=0;ub||b>=f||y>d||d>=P;)switch(B=(dO||(z=W.y0)>I||(F=W.x1)=se)<<1|b>=ue)&&(W=N[N.length-1],N[N.length-1]=N[N.length-1-Q],N[N.length-1-Q]=W)}else{var he=b-+this._x.call(null,U.data),G=d-+this._y.call(null,U.data),$=he*he+G*G;if($=(N=(L+F)/2))?L=N:F=N,(Q=I>=(U=(z+B)/2))?z=U:B=U,d=u,!(u=u[ue=Q<<1|W]))return this;if(!u.length)break;(d[ue+1&3]||d[ue+2&3]||d[ue+3&3])&&(y=d,se=ue)}for(;u.data!==b;)if(f=u,!(u=u.next))return this;return(P=u.next)&&delete u.next,f?(P?f.next=P:delete f.next,this):d?(P?d[ue]=P:delete d[ue],(u=d[0]||d[1]||d[2]||d[3])&&u===(d[3]||d[2]||d[1]||d[0])&&!u.length&&(y?y[se]=u:this._root=u),this):(this._root=P,this)}function n(b){for(var d=0,u=b.length;d=p.length)return l!=null&&m.sort(l),_!=null?_(m):m;for(var y=-1,f=m.length,P=p[b++],L,z,F=M(),B,O=d();++yp.length)return m;var d,u=T[b-1];return _!=null&&b>=p.length?d=m.entries():(d=[],m.each(function(y,f){d.push({key:f,values:E(y,b)})})),u!=null?d.sort(function(y,f){return u(y.key,f.key)}):d}return w={object:function(m){return S(m,0,t,r)},map:function(m){return S(m,0,o,a)},entries:function(m){return E(S(m,0,o,a),0)},key:function(m){return p.push(m),w},sortKeys:function(m){return T[p.length-1]=m,w},sortValues:function(m){return l=m,w},rollup:function(m){return _=m,w}}}function t(){return{}}function r(p,T,l){p[T]=l}function o(){return M()}function a(p,T,l){p.set(T,l)}function i(){}var n=M.prototype;i.prototype=s.prototype={constructor:i,has:n.has,add:function(p){return p+="",this[x+p]=p,this},remove:n.remove,clear:n.clear,values:n.keys,size:n.size,empty:n.empty,each:n.each};function s(p,T){var l=new i;if(p instanceof i)p.each(function(S){l.add(S)});else if(p){var _=-1,w=p.length;if(T==null)for(;++_=0&&(n=i.slice(s+1),i=i.slice(0,s)),i&&!a.hasOwnProperty(i))throw new Error("unknown type: "+i);return{type:i,name:n}})}M.prototype=A.prototype={constructor:M,on:function(o,a){var i=this._,n=e(o+"",i),s,c=-1,h=n.length;if(arguments.length<2){for(;++c0)for(var i=new Array(s),n=0,s,c;n=0&&b._call.call(null,d),b=b._next;--x}function l(){a=(o=n.now())+i,x=A=0;try{T()}finally{x=0,w(),a=0}}function _(){var b=n.now(),d=b-o;d>e&&(i-=d,o=b)}function w(){for(var b,d=t,u,y=1/0;d;)d._call?(y>d._time&&(y=d._time),b=d,d=d._next):(u=d._next,d._next=null,d=b?b._next=u:t=u);r=b,S(y)}function S(b){if(!x){A&&(A=clearTimeout(A));var d=b-a;d>24?(b<1/0&&(A=setTimeout(l,b-n.now()-i)),M&&(M=clearInterval(M))):(M||(o=n.now(),M=setInterval(_,e)),x=1,s(l))}}function E(b,d,u){var y=new v;return d=d==null?0:+d,y.restart(function(f){y.stop(),b(f+d)},d,u),y}function m(b,d,u){var y=new v,f=d;return d==null?(y.restart(b,d,u),y):(d=+d,u=u==null?c():+u,y.restart(function P(L){L+=f,y.restart(P,f+=d,u),b(L)},d,u),y)}g.interval=m,g.now=c,g.timeout=E,g.timer=p,g.timerFlush=T,Object.defineProperty(g,"__esModule",{value:!0})})}}),Gq=Ye({"node_modules/d3-force/dist/d3-force.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X,Vq(),CT(),qq(),Hq()):x(g.d3=g.d3||{},g.d3,g.d3,g.d3,g.d3)})(X,function(g,x,A,M,e){"use strict";function t(b,d){var u;b==null&&(b=0),d==null&&(d=0);function y(){var f,P=u.length,L,z=0,F=0;for(f=0;fI.index){var ee=N-re.x-re.vx,ie=U-re.y-re.vy,fe=ee*ee+ie*ie;feN+j||JU+j||ZF.r&&(F.r=F[B].r)}function z(){if(d){var F,B=d.length,O;for(u=new Array(B),F=0;F1?(Q==null?z.remove(W):z.set(W,U(Q)),d):z.get(W)},find:function(W,Q,ue){var se=0,he=b.length,G,$,J,Z,re;for(ue==null?ue=1/0:ue*=ue,se=0;se1?(B.on(W,Q),d):B.on(W)}}}function w(){var b,d,u,y=r(-30),f,P=1,L=1/0,z=.81;function F(N){var U,W=b.length,Q=x.quadtree(b,v,p).visitAfter(O);for(u=N,U=0;U=L)return;(N.data!==d||N.next)&&(ue===0&&(ue=o(),G+=ue*ue),se===0&&(se=o(),G+=se*se),GM)if(!(Math.abs(l*v-p*T)>M)||!s)this._+="L"+(this._x1=o)+","+(this._y1=a);else{var w=i-c,S=n-h,E=v*v+p*p,m=w*w+S*S,b=Math.sqrt(E),d=Math.sqrt(_),u=s*Math.tan((x-Math.acos((E+_-m)/(2*b*d)))/2),y=u/d,f=u/b;Math.abs(y-1)>M&&(this._+="L"+(o+y*T)+","+(a+y*l)),this._+="A"+s+","+s+",0,0,"+ +(l*w>T*S)+","+(this._x1=o+f*v)+","+(this._y1=a+f*p)}},arc:function(o,a,i,n,s,c){o=+o,a=+a,i=+i,c=!!c;var h=i*Math.cos(n),v=i*Math.sin(n),p=o+h,T=a+v,l=1^c,_=c?n-s:s-n;if(i<0)throw new Error("negative radius: "+i);this._x1===null?this._+="M"+p+","+T:(Math.abs(this._x1-p)>M||Math.abs(this._y1-T)>M)&&(this._+="L"+p+","+T),i&&(_<0&&(_=_%A+A),_>e?this._+="A"+i+","+i+",0,1,"+l+","+(o-h)+","+(a-v)+"A"+i+","+i+",0,1,"+l+","+(this._x1=p)+","+(this._y1=T):_>M&&(this._+="A"+i+","+i+",0,"+ +(_>=x)+","+l+","+(this._x1=o+i*Math.cos(s))+","+(this._y1=a+i*Math.sin(s))))},rect:function(o,a,i,n){this._+="M"+(this._x0=this._x1=+o)+","+(this._y0=this._y1=+a)+"h"+ +i+"v"+ +n+"h"+-i+"Z"},toString:function(){return this._}},g.path=r,Object.defineProperty(g,"__esModule",{value:!0})})}}),zk=Ye({"node_modules/d3-shape/dist/d3-shape.js"(X,H){(function(g,x){typeof X=="object"&&typeof H<"u"?x(X,Wq()):(g=g||self,x(g.d3=g.d3||{},g.d3))})(X,function(g,x){"use strict";function A(kt){return function(){return kt}}var M=Math.abs,e=Math.atan2,t=Math.cos,r=Math.max,o=Math.min,a=Math.sin,i=Math.sqrt,n=1e-12,s=Math.PI,c=s/2,h=2*s;function v(kt){return kt>1?0:kt<-1?s:Math.acos(kt)}function p(kt){return kt>=1?c:kt<=-1?-c:Math.asin(kt)}function T(kt){return kt.innerRadius}function l(kt){return kt.outerRadius}function _(kt){return kt.startAngle}function w(kt){return kt.endAngle}function S(kt){return kt&&kt.padAngle}function E(kt,ir,mr,$r,ma,Ba,Ca,da){var Sa=mr-kt,Ti=$r-ir,ai=Ca-ma,an=da-Ba,sn=an*Sa-ai*Ti;if(!(sn*snys*ys+Is*Is&&(In=Ho,Do=Qo),{cx:In,cy:Do,x01:-ai,y01:-an,x11:In*(ma/as-1),y11:Do*(ma/as-1)}}function b(){var kt=T,ir=l,mr=A(0),$r=null,ma=_,Ba=w,Ca=S,da=null;function Sa(){var Ti,ai,an=+kt.apply(this,arguments),sn=+ir.apply(this,arguments),Mn=ma.apply(this,arguments)-c,On=Ba.apply(this,arguments)-c,$n=M(On-Mn),Cn=On>Mn;if(da||(da=Ti=x.path()),snn))da.moveTo(0,0);else if($n>h-n)da.moveTo(sn*t(Mn),sn*a(Mn)),da.arc(0,0,sn,Mn,On,!Cn),an>n&&(da.moveTo(an*t(On),an*a(On)),da.arc(0,0,an,On,Mn,Cn));else{var Lo=Mn,Xi=On,Jo=Mn,zo=On,as=$n,Pn=$n,go=Ca.apply(this,arguments)/2,In=go>n&&($r?+$r.apply(this,arguments):i(an*an+sn*sn)),Do=o(M(sn-an)/2,+mr.apply(this,arguments)),Ho=Do,Qo=Do,Xn,po;if(In>n){var ys=p(In/an*a(go)),Is=p(In/sn*a(go));(as-=ys*2)>n?(ys*=Cn?1:-1,Jo+=ys,zo-=ys):(as=0,Jo=zo=(Mn+On)/2),(Pn-=Is*2)>n?(Is*=Cn?1:-1,Lo+=Is,Xi-=Is):(Pn=0,Lo=Xi=(Mn+On)/2)}var Fs=sn*t(Lo),$o=sn*a(Lo),fi=an*t(zo),mn=an*a(zo);if(Do>n){var ol=sn*t(Xi),Os=sn*a(Xi),so=an*t(Jo),Ns=an*a(Jo),fs;if($nn?Qo>n?(Xn=m(so,Ns,Fs,$o,sn,Qo,Cn),po=m(ol,Os,fi,mn,sn,Qo,Cn),da.moveTo(Xn.cx+Xn.x01,Xn.cy+Xn.y01),Qon)||!(as>n)?da.lineTo(fi,mn):Ho>n?(Xn=m(fi,mn,ol,Os,an,-Ho,Cn),po=m(Fs,$o,so,Ns,an,-Ho,Cn),da.lineTo(Xn.cx+Xn.x01,Xn.cy+Xn.y01),Ho=sn;--Mn)da.point(Xi[Mn],Jo[Mn]);da.lineEnd(),da.areaEnd()}Cn&&(Xi[an]=+kt($n,an,ai),Jo[an]=+mr($n,an,ai),da.point(ir?+ir($n,an,ai):Xi[an],$r?+$r($n,an,ai):Jo[an]))}if(Lo)return da=null,Lo+""||null}function Ti(){return P().defined(ma).curve(Ca).context(Ba)}return Sa.x=function(ai){return arguments.length?(kt=typeof ai=="function"?ai:A(+ai),ir=null,Sa):kt},Sa.x0=function(ai){return arguments.length?(kt=typeof ai=="function"?ai:A(+ai),Sa):kt},Sa.x1=function(ai){return arguments.length?(ir=ai==null?null:typeof ai=="function"?ai:A(+ai),Sa):ir},Sa.y=function(ai){return arguments.length?(mr=typeof ai=="function"?ai:A(+ai),$r=null,Sa):mr},Sa.y0=function(ai){return arguments.length?(mr=typeof ai=="function"?ai:A(+ai),Sa):mr},Sa.y1=function(ai){return arguments.length?($r=ai==null?null:typeof ai=="function"?ai:A(+ai),Sa):$r},Sa.lineX0=Sa.lineY0=function(){return Ti().x(kt).y(mr)},Sa.lineY1=function(){return Ti().x(kt).y($r)},Sa.lineX1=function(){return Ti().x(ir).y(mr)},Sa.defined=function(ai){return arguments.length?(ma=typeof ai=="function"?ai:A(!!ai),Sa):ma},Sa.curve=function(ai){return arguments.length?(Ca=ai,Ba!=null&&(da=Ca(Ba)),Sa):Ca},Sa.context=function(ai){return arguments.length?(ai==null?Ba=da=null:da=Ca(Ba=ai),Sa):Ba},Sa}function z(kt,ir){return irkt?1:ir>=kt?0:NaN}function F(kt){return kt}function B(){var kt=F,ir=z,mr=null,$r=A(0),ma=A(h),Ba=A(0);function Ca(da){var Sa,Ti=da.length,ai,an,sn=0,Mn=new Array(Ti),On=new Array(Ti),$n=+$r.apply(this,arguments),Cn=Math.min(h,Math.max(-h,ma.apply(this,arguments)-$n)),Lo,Xi=Math.min(Math.abs(Cn)/Ti,Ba.apply(this,arguments)),Jo=Xi*(Cn<0?-1:1),zo;for(Sa=0;Sa0&&(sn+=zo);for(ir!=null?Mn.sort(function(as,Pn){return ir(On[as],On[Pn])}):mr!=null&&Mn.sort(function(as,Pn){return mr(da[as],da[Pn])}),Sa=0,an=sn?(Cn-Ti*Jo)/sn:0;Sa0?zo*an:0)+Jo,On[ai]={data:da[ai],index:Sa,value:zo,startAngle:$n,endAngle:Lo,padAngle:Xi};return On}return Ca.value=function(da){return arguments.length?(kt=typeof da=="function"?da:A(+da),Ca):kt},Ca.sortValues=function(da){return arguments.length?(ir=da,mr=null,Ca):ir},Ca.sort=function(da){return arguments.length?(mr=da,ir=null,Ca):mr},Ca.startAngle=function(da){return arguments.length?($r=typeof da=="function"?da:A(+da),Ca):$r},Ca.endAngle=function(da){return arguments.length?(ma=typeof da=="function"?da:A(+da),Ca):ma},Ca.padAngle=function(da){return arguments.length?(Ba=typeof da=="function"?da:A(+da),Ca):Ba},Ca}var O=N(u);function I(kt){this._curve=kt}I.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(kt,ir){this._curve.point(ir*Math.sin(kt),ir*-Math.cos(kt))}};function N(kt){function ir(mr){return new I(kt(mr))}return ir._curve=kt,ir}function U(kt){var ir=kt.curve;return kt.angle=kt.x,delete kt.x,kt.radius=kt.y,delete kt.y,kt.curve=function(mr){return arguments.length?ir(N(mr)):ir()._curve},kt}function W(){return U(P().curve(O))}function Q(){var kt=L().curve(O),ir=kt.curve,mr=kt.lineX0,$r=kt.lineX1,ma=kt.lineY0,Ba=kt.lineY1;return kt.angle=kt.x,delete kt.x,kt.startAngle=kt.x0,delete kt.x0,kt.endAngle=kt.x1,delete kt.x1,kt.radius=kt.y,delete kt.y,kt.innerRadius=kt.y0,delete kt.y0,kt.outerRadius=kt.y1,delete kt.y1,kt.lineStartAngle=function(){return U(mr())},delete kt.lineX0,kt.lineEndAngle=function(){return U($r())},delete kt.lineX1,kt.lineInnerRadius=function(){return U(ma())},delete kt.lineY0,kt.lineOuterRadius=function(){return U(Ba())},delete kt.lineY1,kt.curve=function(Ca){return arguments.length?ir(N(Ca)):ir()._curve},kt}function ue(kt,ir){return[(ir=+ir)*Math.cos(kt-=Math.PI/2),ir*Math.sin(kt)]}var se=Array.prototype.slice;function he(kt){return kt.source}function G(kt){return kt.target}function $(kt){var ir=he,mr=G,$r=y,ma=f,Ba=null;function Ca(){var da,Sa=se.call(arguments),Ti=ir.apply(this,Sa),ai=mr.apply(this,Sa);if(Ba||(Ba=da=x.path()),kt(Ba,+$r.apply(this,(Sa[0]=Ti,Sa)),+ma.apply(this,Sa),+$r.apply(this,(Sa[0]=ai,Sa)),+ma.apply(this,Sa)),da)return Ba=null,da+""||null}return Ca.source=function(da){return arguments.length?(ir=da,Ca):ir},Ca.target=function(da){return arguments.length?(mr=da,Ca):mr},Ca.x=function(da){return arguments.length?($r=typeof da=="function"?da:A(+da),Ca):$r},Ca.y=function(da){return arguments.length?(ma=typeof da=="function"?da:A(+da),Ca):ma},Ca.context=function(da){return arguments.length?(Ba=da??null,Ca):Ba},Ca}function J(kt,ir,mr,$r,ma){kt.moveTo(ir,mr),kt.bezierCurveTo(ir=(ir+$r)/2,mr,ir,ma,$r,ma)}function Z(kt,ir,mr,$r,ma){kt.moveTo(ir,mr),kt.bezierCurveTo(ir,mr=(mr+ma)/2,$r,mr,$r,ma)}function re(kt,ir,mr,$r,ma){var Ba=ue(ir,mr),Ca=ue(ir,mr=(mr+ma)/2),da=ue($r,mr),Sa=ue($r,ma);kt.moveTo(Ba[0],Ba[1]),kt.bezierCurveTo(Ca[0],Ca[1],da[0],da[1],Sa[0],Sa[1])}function ne(){return $(J)}function j(){return $(Z)}function ee(){var kt=$(re);return kt.angle=kt.x,delete kt.x,kt.radius=kt.y,delete kt.y,kt}var ie={draw:function(kt,ir){var mr=Math.sqrt(ir/s);kt.moveTo(mr,0),kt.arc(0,0,mr,0,h)}},fe={draw:function(kt,ir){var mr=Math.sqrt(ir/5)/2;kt.moveTo(-3*mr,-mr),kt.lineTo(-mr,-mr),kt.lineTo(-mr,-3*mr),kt.lineTo(mr,-3*mr),kt.lineTo(mr,-mr),kt.lineTo(3*mr,-mr),kt.lineTo(3*mr,mr),kt.lineTo(mr,mr),kt.lineTo(mr,3*mr),kt.lineTo(-mr,3*mr),kt.lineTo(-mr,mr),kt.lineTo(-3*mr,mr),kt.closePath()}},be=Math.sqrt(1/3),Ae=be*2,Be={draw:function(kt,ir){var mr=Math.sqrt(ir/Ae),$r=mr*be;kt.moveTo(0,-mr),kt.lineTo($r,0),kt.lineTo(0,mr),kt.lineTo(-$r,0),kt.closePath()}},Ie=.8908130915292852,Ze=Math.sin(s/10)/Math.sin(7*s/10),at=Math.sin(h/10)*Ze,it=-Math.cos(h/10)*Ze,et={draw:function(kt,ir){var mr=Math.sqrt(ir*Ie),$r=at*mr,ma=it*mr;kt.moveTo(0,-mr),kt.lineTo($r,ma);for(var Ba=1;Ba<5;++Ba){var Ca=h*Ba/5,da=Math.cos(Ca),Sa=Math.sin(Ca);kt.lineTo(Sa*mr,-da*mr),kt.lineTo(da*$r-Sa*ma,Sa*$r+da*ma)}kt.closePath()}},lt={draw:function(kt,ir){var mr=Math.sqrt(ir),$r=-mr/2;kt.rect($r,$r,mr,mr)}},Me=Math.sqrt(3),ge={draw:function(kt,ir){var mr=-Math.sqrt(ir/(Me*3));kt.moveTo(0,mr*2),kt.lineTo(-Me*mr,-mr),kt.lineTo(Me*mr,-mr),kt.closePath()}},ce=-.5,ze=Math.sqrt(3)/2,tt=1/Math.sqrt(12),nt=(tt/2+1)*3,Qe={draw:function(kt,ir){var mr=Math.sqrt(ir/nt),$r=mr/2,ma=mr*tt,Ba=$r,Ca=mr*tt+mr,da=-Ba,Sa=Ca;kt.moveTo($r,ma),kt.lineTo(Ba,Ca),kt.lineTo(da,Sa),kt.lineTo(ce*$r-ze*ma,ze*$r+ce*ma),kt.lineTo(ce*Ba-ze*Ca,ze*Ba+ce*Ca),kt.lineTo(ce*da-ze*Sa,ze*da+ce*Sa),kt.lineTo(ce*$r+ze*ma,ce*ma-ze*$r),kt.lineTo(ce*Ba+ze*Ca,ce*Ca-ze*Ba),kt.lineTo(ce*da+ze*Sa,ce*Sa-ze*da),kt.closePath()}},Ct=[ie,fe,Be,lt,et,ge,Qe];function St(){var kt=A(ie),ir=A(64),mr=null;function $r(){var ma;if(mr||(mr=ma=x.path()),kt.apply(this,arguments).draw(mr,+ir.apply(this,arguments)),ma)return mr=null,ma+""||null}return $r.type=function(ma){return arguments.length?(kt=typeof ma=="function"?ma:A(ma),$r):kt},$r.size=function(ma){return arguments.length?(ir=typeof ma=="function"?ma:A(+ma),$r):ir},$r.context=function(ma){return arguments.length?(mr=ma??null,$r):mr},$r}function Ot(){}function jt(kt,ir,mr){kt._context.bezierCurveTo((2*kt._x0+kt._x1)/3,(2*kt._y0+kt._y1)/3,(kt._x0+2*kt._x1)/3,(kt._y0+2*kt._y1)/3,(kt._x0+4*kt._x1+ir)/6,(kt._y0+4*kt._y1+mr)/6)}function ur(kt){this._context=kt}ur.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:jt(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1,this._line?this._context.lineTo(kt,ir):this._context.moveTo(kt,ir);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:jt(this,kt,ir);break}this._x0=this._x1,this._x1=kt,this._y0=this._y1,this._y1=ir}};function ar(kt){return new ur(kt)}function Cr(kt){this._context=kt}Cr.prototype={areaStart:Ot,areaEnd:Ot,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1,this._x2=kt,this._y2=ir;break;case 1:this._point=2,this._x3=kt,this._y3=ir;break;case 2:this._point=3,this._x4=kt,this._y4=ir,this._context.moveTo((this._x0+4*this._x1+kt)/6,(this._y0+4*this._y1+ir)/6);break;default:jt(this,kt,ir);break}this._x0=this._x1,this._x1=kt,this._y0=this._y1,this._y1=ir}};function vr(kt){return new Cr(kt)}function _r(kt){this._context=kt}_r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var mr=(this._x0+4*this._x1+kt)/6,$r=(this._y0+4*this._y1+ir)/6;this._line?this._context.lineTo(mr,$r):this._context.moveTo(mr,$r);break;case 3:this._point=4;default:jt(this,kt,ir);break}this._x0=this._x1,this._x1=kt,this._y0=this._y1,this._y1=ir}};function yt(kt){return new _r(kt)}function Fe(kt,ir){this._basis=new ur(kt),this._beta=ir}Fe.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var kt=this._x,ir=this._y,mr=kt.length-1;if(mr>0)for(var $r=kt[0],ma=ir[0],Ba=kt[mr]-$r,Ca=ir[mr]-ma,da=-1,Sa;++da<=mr;)Sa=da/mr,this._basis.point(this._beta*kt[da]+(1-this._beta)*($r+Sa*Ba),this._beta*ir[da]+(1-this._beta)*(ma+Sa*Ca));this._x=this._y=null,this._basis.lineEnd()},point:function(kt,ir){this._x.push(+kt),this._y.push(+ir)}};var Ke=function kt(ir){function mr($r){return ir===1?new ur($r):new Fe($r,ir)}return mr.beta=function($r){return kt(+$r)},mr}(.85);function Ne(kt,ir,mr){kt._context.bezierCurveTo(kt._x1+kt._k*(kt._x2-kt._x0),kt._y1+kt._k*(kt._y2-kt._y0),kt._x2+kt._k*(kt._x1-ir),kt._y2+kt._k*(kt._y1-mr),kt._x2,kt._y2)}function Ee(kt,ir){this._context=kt,this._k=(1-ir)/6}Ee.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ne(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1,this._line?this._context.lineTo(kt,ir):this._context.moveTo(kt,ir);break;case 1:this._point=2,this._x1=kt,this._y1=ir;break;case 2:this._point=3;default:Ne(this,kt,ir);break}this._x0=this._x1,this._x1=this._x2,this._x2=kt,this._y0=this._y1,this._y1=this._y2,this._y2=ir}};var Ve=function kt(ir){function mr($r){return new Ee($r,ir)}return mr.tension=function($r){return kt(+$r)},mr}(0);function ke(kt,ir){this._context=kt,this._k=(1-ir)/6}ke.prototype={areaStart:Ot,areaEnd:Ot,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1,this._x3=kt,this._y3=ir;break;case 1:this._point=2,this._context.moveTo(this._x4=kt,this._y4=ir);break;case 2:this._point=3,this._x5=kt,this._y5=ir;break;default:Ne(this,kt,ir);break}this._x0=this._x1,this._x1=this._x2,this._x2=kt,this._y0=this._y1,this._y1=this._y2,this._y2=ir}};var Te=function kt(ir){function mr($r){return new ke($r,ir)}return mr.tension=function($r){return kt(+$r)},mr}(0);function Le(kt,ir){this._context=kt,this._k=(1-ir)/6}Le.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ne(this,kt,ir);break}this._x0=this._x1,this._x1=this._x2,this._x2=kt,this._y0=this._y1,this._y1=this._y2,this._y2=ir}};var rt=function kt(ir){function mr($r){return new Le($r,ir)}return mr.tension=function($r){return kt(+$r)},mr}(0);function dt(kt,ir,mr){var $r=kt._x1,ma=kt._y1,Ba=kt._x2,Ca=kt._y2;if(kt._l01_a>n){var da=2*kt._l01_2a+3*kt._l01_a*kt._l12_a+kt._l12_2a,Sa=3*kt._l01_a*(kt._l01_a+kt._l12_a);$r=($r*da-kt._x0*kt._l12_2a+kt._x2*kt._l01_2a)/Sa,ma=(ma*da-kt._y0*kt._l12_2a+kt._y2*kt._l01_2a)/Sa}if(kt._l23_a>n){var Ti=2*kt._l23_2a+3*kt._l23_a*kt._l12_a+kt._l12_2a,ai=3*kt._l23_a*(kt._l23_a+kt._l12_a);Ba=(Ba*Ti+kt._x1*kt._l23_2a-ir*kt._l12_2a)/ai,Ca=(Ca*Ti+kt._y1*kt._l23_2a-mr*kt._l12_2a)/ai}kt._context.bezierCurveTo($r,ma,Ba,Ca,kt._x2,kt._y2)}function xt(kt,ir){this._context=kt,this._alpha=ir}xt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){if(kt=+kt,ir=+ir,this._point){var mr=this._x2-kt,$r=this._y2-ir;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(mr*mr+$r*$r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(kt,ir):this._context.moveTo(kt,ir);break;case 1:this._point=2;break;case 2:this._point=3;default:dt(this,kt,ir);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=kt,this._y0=this._y1,this._y1=this._y2,this._y2=ir}};var It=function kt(ir){function mr($r){return ir?new xt($r,ir):new Ee($r,0)}return mr.alpha=function($r){return kt(+$r)},mr}(.5);function Bt(kt,ir){this._context=kt,this._alpha=ir}Bt.prototype={areaStart:Ot,areaEnd:Ot,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(kt,ir){if(kt=+kt,ir=+ir,this._point){var mr=this._x2-kt,$r=this._y2-ir;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(mr*mr+$r*$r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=kt,this._y3=ir;break;case 1:this._point=2,this._context.moveTo(this._x4=kt,this._y4=ir);break;case 2:this._point=3,this._x5=kt,this._y5=ir;break;default:dt(this,kt,ir);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=kt,this._y0=this._y1,this._y1=this._y2,this._y2=ir}};var Gt=function kt(ir){function mr($r){return ir?new Bt($r,ir):new ke($r,0)}return mr.alpha=function($r){return kt(+$r)},mr}(.5);function Kt(kt,ir){this._context=kt,this._alpha=ir}Kt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){if(kt=+kt,ir=+ir,this._point){var mr=this._x2-kt,$r=this._y2-ir;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(mr*mr+$r*$r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:dt(this,kt,ir);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=kt,this._y0=this._y1,this._y1=this._y2,this._y2=ir}};var sr=function kt(ir){function mr($r){return ir?new Kt($r,ir):new Le($r,0)}return mr.alpha=function($r){return kt(+$r)},mr}(.5);function sa(kt){this._context=kt}sa.prototype={areaStart:Ot,areaEnd:Ot,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(kt,ir){kt=+kt,ir=+ir,this._point?this._context.lineTo(kt,ir):(this._point=1,this._context.moveTo(kt,ir))}};function Aa(kt){return new sa(kt)}function La(kt){return kt<0?-1:1}function ka(kt,ir,mr){var $r=kt._x1-kt._x0,ma=ir-kt._x1,Ba=(kt._y1-kt._y0)/($r||ma<0&&-0),Ca=(mr-kt._y1)/(ma||$r<0&&-0),da=(Ba*ma+Ca*$r)/($r+ma);return(La(Ba)+La(Ca))*Math.min(Math.abs(Ba),Math.abs(Ca),.5*Math.abs(da))||0}function Ga(kt,ir){var mr=kt._x1-kt._x0;return mr?(3*(kt._y1-kt._y0)/mr-ir)/2:ir}function Ma(kt,ir,mr){var $r=kt._x0,ma=kt._y0,Ba=kt._x1,Ca=kt._y1,da=(Ba-$r)/3;kt._context.bezierCurveTo($r+da,ma+da*ir,Ba-da,Ca-da*mr,Ba,Ca)}function Ua(kt){this._context=kt}Ua.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Ma(this,this._t0,Ga(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(kt,ir){var mr=NaN;if(kt=+kt,ir=+ir,!(kt===this._x1&&ir===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(kt,ir):this._context.moveTo(kt,ir);break;case 1:this._point=2;break;case 2:this._point=3,Ma(this,Ga(this,mr=ka(this,kt,ir)),mr);break;default:Ma(this,this._t0,mr=ka(this,kt,ir));break}this._x0=this._x1,this._x1=kt,this._y0=this._y1,this._y1=ir,this._t0=mr}}};function ni(kt){this._context=new Wt(kt)}(ni.prototype=Object.create(Ua.prototype)).point=function(kt,ir){Ua.prototype.point.call(this,ir,kt)};function Wt(kt){this._context=kt}Wt.prototype={moveTo:function(kt,ir){this._context.moveTo(ir,kt)},closePath:function(){this._context.closePath()},lineTo:function(kt,ir){this._context.lineTo(ir,kt)},bezierCurveTo:function(kt,ir,mr,$r,ma,Ba){this._context.bezierCurveTo(ir,kt,$r,mr,Ba,ma)}};function zt(kt){return new Ua(kt)}function Vt(kt){return new ni(kt)}function Ut(kt){this._context=kt}Ut.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var kt=this._x,ir=this._y,mr=kt.length;if(mr)if(this._line?this._context.lineTo(kt[0],ir[0]):this._context.moveTo(kt[0],ir[0]),mr===2)this._context.lineTo(kt[1],ir[1]);else for(var $r=xr(kt),ma=xr(ir),Ba=0,Ca=1;Ca=0;--ir)ma[ir]=(Ca[ir]-ma[ir+1])/Ba[ir];for(Ba[mr-1]=(kt[mr]+ma[mr-1])/2,ir=0;ir=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(kt,ir){switch(kt=+kt,ir=+ir,this._point){case 0:this._point=1,this._line?this._context.lineTo(kt,ir):this._context.moveTo(kt,ir);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,ir),this._context.lineTo(kt,ir);else{var mr=this._x*(1-this._t)+kt*this._t;this._context.lineTo(mr,this._y),this._context.lineTo(mr,ir)}break}}this._x=kt,this._y=ir}};function Xr(kt){return new pa(kt,.5)}function Ea(kt){return new pa(kt,0)}function Fa(kt){return new pa(kt,1)}function qa(kt,ir){if((Ca=kt.length)>1)for(var mr=1,$r,ma,Ba=kt[ir[0]],Ca,da=Ba.length;mr=0;)mr[ir]=ir;return mr}function $a(kt,ir){return kt[ir]}function mt(){var kt=A([]),ir=ya,mr=qa,$r=$a;function ma(Ba){var Ca=kt.apply(this,arguments),da,Sa=Ba.length,Ti=Ca.length,ai=new Array(Ti),an;for(da=0;da0){for(var mr,$r,ma=0,Ba=kt[0].length,Ca;ma0)for(var mr,$r=0,ma,Ba,Ca,da,Sa,Ti=kt[ir[0]].length;$r0?(ma[0]=Ca,ma[1]=Ca+=Ba):Ba<0?(ma[1]=da,ma[0]=da+=Ba):(ma[0]=0,ma[1]=Ba)}function kr(kt,ir){if((ma=kt.length)>0){for(var mr=0,$r=kt[ir[0]],ma,Ba=$r.length;mr0)||!((Ba=(ma=kt[ir[0]]).length)>0))){for(var mr=0,$r=1,ma,Ba,Ca;$rBa&&(Ba=ma,mr=ir);return mr}function Fr(kt){var ir=kt.map(Lr);return ya(kt).sort(function(mr,$r){return ir[mr]-ir[$r]})}function Lr(kt){for(var ir=0,mr=-1,$r=kt.length,ma;++mr<$r;)(ma=+kt[mr][1])&&(ir+=ma);return ir}function Jr(kt){return Fr(kt).reverse()}function oa(kt){var ir=kt.length,mr,$r,ma=kt.map(Lr),Ba=Tr(kt),Ca=0,da=0,Sa=[],Ti=[];for(mr=0;mr0;--re)ee(Z*=.99),ie(),j(Z),ie();function ne(){var fe=x.max(J,function(Be){return Be.length}),be=U*(P-y)/(fe-1);z>be&&(z=be);var Ae=x.min(J,function(Be){return(P-y-(Be.length-1)*z)/x.sum(Be,h)});J.forEach(function(Be){Be.forEach(function(Ie,Ze){Ie.y1=(Ie.y0=Ze)+Ie.value*Ae})}),$.links.forEach(function(Be){Be.width=Be.value*Ae})}function j(fe){J.forEach(function(be){be.forEach(function(Ae){if(Ae.targetLinks.length){var Be=(x.sum(Ae.targetLinks,p)/x.sum(Ae.targetLinks,h)-v(Ae))*fe;Ae.y0+=Be,Ae.y1+=Be}})})}function ee(fe){J.slice().reverse().forEach(function(be){be.forEach(function(Ae){if(Ae.sourceLinks.length){var Be=(x.sum(Ae.sourceLinks,T)/x.sum(Ae.sourceLinks,h)-v(Ae))*fe;Ae.y0+=Be,Ae.y1+=Be}})})}function ie(){J.forEach(function(fe){var be,Ae,Be=y,Ie=fe.length,Ze;for(fe.sort(c),Ze=0;Ze0&&(be.y0+=Ae,be.y1+=Ae),Be=be.y1+z;if(Ae=Be-z-P,Ae>0)for(Be=be.y0-=Ae,be.y1-=Ae,Ze=Ie-2;Ze>=0;--Ze)be=fe[Ze],Ae=be.y1+z-Be,Ae>0&&(be.y0-=Ae,be.y1-=Ae),Be=be.y0})}}function G($){$.nodes.forEach(function(J){J.sourceLinks.sort(s),J.targetLinks.sort(n)}),$.nodes.forEach(function(J){var Z=J.y0,re=Z;J.sourceLinks.forEach(function(ne){ne.y0=Z+ne.width/2,Z+=ne.width}),J.targetLinks.forEach(function(ne){ne.y1=re+ne.width/2,re+=ne.width})})}return W};function m(u){return[u.source.x1,u.y0]}function b(u){return[u.target.x0,u.y1]}var d=function(){return M.linkHorizontal().source(m).target(b)};g.sankey=E,g.sankeyCenter=a,g.sankeyLeft=t,g.sankeyRight=r,g.sankeyJustify=o,g.sankeyLinkHorizontal=d,Object.defineProperty(g,"__esModule",{value:!0})})}}),Xq=Ye({"node_modules/elementary-circuits-directed-graph/johnson.js"(X,H){var g=Dk();H.exports=function(A,M){var e=[],t=[],r=[],o={},a=[],i;function n(S){r[S]=!1,o.hasOwnProperty(S)&&Object.keys(o[S]).forEach(function(E){delete o[S][E],r[E]&&n(E)})}function s(S){var E=!1;t.push(S),r[S]=!0;var m,b;for(m=0;m=S})}function v(S){h(S);for(var E=A,m=g(E),b=m.components.filter(function(z){return z.length>1}),d=1/0,u,y=0;y"u"?"undefined":s(Ee))!=="object"&&(Ee=Ke.source=m(Fe,Ee)),(typeof Ve>"u"?"undefined":s(Ve))!=="object"&&(Ve=Ke.target=m(Fe,Ve)),Ee.sourceLinks.push(Ke),Ve.targetLinks.push(Ke)}),yt}function jt(yt){yt.nodes.forEach(function(Fe){Fe.partOfCycle=!1,Fe.value=Math.max(x.sum(Fe.sourceLinks,p),x.sum(Fe.targetLinks,p)),Fe.sourceLinks.forEach(function(Ke){Ke.circular&&(Fe.partOfCycle=!0,Fe.circularLinkType=Ke.circularLinkType)}),Fe.targetLinks.forEach(function(Ke){Ke.circular&&(Fe.partOfCycle=!0,Fe.circularLinkType=Ke.circularLinkType)})})}function ur(yt){var Fe=0,Ke=0,Ne=0,Ee=0,Ve=x.max(yt.nodes,function(ke){return ke.column});return yt.links.forEach(function(ke){ke.circular&&(ke.circularLinkType=="top"?Fe=Fe+ke.width:Ke=Ke+ke.width,ke.target.column==0&&(Ee=Ee+ke.width),ke.source.column==Ve&&(Ne=Ne+ke.width))}),Fe=Fe>0?Fe+d+u:Fe,Ke=Ke>0?Ke+d+u:Ke,Ne=Ne>0?Ne+d+u:Ne,Ee=Ee>0?Ee+d+u:Ee,{top:Fe,bottom:Ke,left:Ee,right:Ne}}function ar(yt,Fe){var Ke=x.max(yt.nodes,function(rt){return rt.column}),Ne=at-Ie,Ee=it-Ze,Ve=Ne+Fe.right+Fe.left,ke=Ee+Fe.top+Fe.bottom,Te=Ne/Ve,Le=Ee/ke;return Ie=Ie*Te+Fe.left,at=Fe.right==0?at:at*Te,Ze=Ze*Le+Fe.top,it=it*Le,yt.nodes.forEach(function(rt){rt.x0=Ie+rt.column*((at-Ie-et)/Ke),rt.x1=rt.x0+et}),Le}function Cr(yt){var Fe,Ke,Ne;for(Fe=yt.nodes,Ke=[],Ne=0;Fe.length;++Ne,Fe=Ke,Ke=[])Fe.forEach(function(Ee){Ee.depth=Ne,Ee.sourceLinks.forEach(function(Ve){Ke.indexOf(Ve.target)<0&&!Ve.circular&&Ke.push(Ve.target)})});for(Fe=yt.nodes,Ke=[],Ne=0;Fe.length;++Ne,Fe=Ke,Ke=[])Fe.forEach(function(Ee){Ee.height=Ne,Ee.targetLinks.forEach(function(Ve){Ke.indexOf(Ve.source)<0&&!Ve.circular&&Ke.push(Ve.source)})});yt.nodes.forEach(function(Ee){Ee.column=Math.floor(ge.call(null,Ee,Ne))})}function vr(yt,Fe,Ke){var Ne=A.nest().key(function(rt){return rt.column}).sortKeys(x.ascending).entries(yt.nodes).map(function(rt){return rt.values});ke(Ke),Le();for(var Ee=1,Ve=Fe;Ve>0;--Ve)Te(Ee*=.99,Ke),Le();function ke(rt){if(Qe){var dt=1/0;Ne.forEach(function(Gt){var Kt=it*Qe/(Gt.length+1);dt=Kt0))if(Gt==0&&Bt==1)sr=Kt.y1-Kt.y0,Kt.y0=it/2-sr/2,Kt.y1=it/2+sr/2;else if(Gt==xt-1&&Bt==1)sr=Kt.y1-Kt.y0,Kt.y0=it/2-sr/2,Kt.y1=it/2+sr/2;else{var sa=0,Aa=x.mean(Kt.sourceLinks,_),La=x.mean(Kt.targetLinks,l);Aa&&La?sa=(Aa+La)/2:sa=Aa||La;var ka=(sa-T(Kt))*rt;Kt.y0+=ka,Kt.y1+=ka}})})}function Le(){Ne.forEach(function(rt){var dt,xt,It=Ze,Bt=rt.length,Gt;for(rt.sort(v),Gt=0;Gt0&&(dt.y0+=xt,dt.y1+=xt),It=dt.y1+lt;if(xt=It-lt-it,xt>0)for(It=dt.y0-=xt,dt.y1-=xt,Gt=Bt-2;Gt>=0;--Gt)dt=rt[Gt],xt=dt.y1+lt-It,xt>0&&(dt.y0-=xt,dt.y1-=xt),It=dt.y0})}}function _r(yt){yt.nodes.forEach(function(Fe){Fe.sourceLinks.sort(h),Fe.targetLinks.sort(c)}),yt.nodes.forEach(function(Fe){var Ke=Fe.y0,Ne=Ke,Ee=Fe.y1,Ve=Ee;Fe.sourceLinks.forEach(function(ke){ke.circular?(ke.y0=Ee-ke.width/2,Ee=Ee-ke.width):(ke.y0=Ke+ke.width/2,Ke+=ke.width)}),Fe.targetLinks.forEach(function(ke){ke.circular?(ke.y1=Ve-ke.width/2,Ve=Ve-ke.width):(ke.y1=Ne+ke.width/2,Ne+=ke.width)})})}return St}function P(Ie,Ze,at){var it=0;if(at===null){for(var et=[],lt=0;ltZe.source.column)}function B(Ie,Ze){var at=0;Ie.sourceLinks.forEach(function(et){at=et.circular&&!Ae(et,Ze)?at+1:at});var it=0;return Ie.targetLinks.forEach(function(et){it=et.circular&&!Ae(et,Ze)?it+1:it}),at+it}function O(Ie){var Ze=Ie.source.sourceLinks,at=0;Ze.forEach(function(lt){at=lt.circular?at+1:at});var it=Ie.target.targetLinks,et=0;return it.forEach(function(lt){et=lt.circular?et+1:et}),!(at>1||et>1)}function I(Ie,Ze,at){return Ie.sort(W),Ie.forEach(function(it,et){var lt=0;if(Ae(it,at)&&O(it))it.circularPathData.verticalBuffer=lt+it.width/2;else{var Me=0;for(Me;Melt?ge:lt}it.circularPathData.verticalBuffer=lt+it.width/2}}),Ie}function N(Ie,Ze,at,it){var et=5,lt=x.min(Ie.links,function(ce){return ce.source.y0});Ie.links.forEach(function(ce){ce.circular&&(ce.circularPathData={})});var Me=Ie.links.filter(function(ce){return ce.circularLinkType=="top"});I(Me,Ze,it);var ge=Ie.links.filter(function(ce){return ce.circularLinkType=="bottom"});I(ge,Ze,it),Ie.links.forEach(function(ce){if(ce.circular){if(ce.circularPathData.arcRadius=ce.width+u,ce.circularPathData.leftNodeBuffer=et,ce.circularPathData.rightNodeBuffer=et,ce.circularPathData.sourceWidth=ce.source.x1-ce.source.x0,ce.circularPathData.sourceX=ce.source.x0+ce.circularPathData.sourceWidth,ce.circularPathData.targetX=ce.target.x0,ce.circularPathData.sourceY=ce.y0,ce.circularPathData.targetY=ce.y1,Ae(ce,it)&&O(ce))ce.circularPathData.leftSmallArcRadius=u+ce.width/2,ce.circularPathData.leftLargeArcRadius=u+ce.width/2,ce.circularPathData.rightSmallArcRadius=u+ce.width/2,ce.circularPathData.rightLargeArcRadius=u+ce.width/2,ce.circularLinkType=="bottom"?(ce.circularPathData.verticalFullExtent=ce.source.y1+d+ce.circularPathData.verticalBuffer,ce.circularPathData.verticalLeftInnerExtent=ce.circularPathData.verticalFullExtent-ce.circularPathData.leftLargeArcRadius,ce.circularPathData.verticalRightInnerExtent=ce.circularPathData.verticalFullExtent-ce.circularPathData.rightLargeArcRadius):(ce.circularPathData.verticalFullExtent=ce.source.y0-d-ce.circularPathData.verticalBuffer,ce.circularPathData.verticalLeftInnerExtent=ce.circularPathData.verticalFullExtent+ce.circularPathData.leftLargeArcRadius,ce.circularPathData.verticalRightInnerExtent=ce.circularPathData.verticalFullExtent+ce.circularPathData.rightLargeArcRadius);else{var ze=ce.source.column,tt=ce.circularLinkType,nt=Ie.links.filter(function(St){return St.source.column==ze&&St.circularLinkType==tt});ce.circularLinkType=="bottom"?nt.sort(ue):nt.sort(Q);var Qe=0;nt.forEach(function(St,Ot){St.circularLinkID==ce.circularLinkID&&(ce.circularPathData.leftSmallArcRadius=u+ce.width/2+Qe,ce.circularPathData.leftLargeArcRadius=u+ce.width/2+Ot*Ze+Qe),Qe=Qe+St.width}),ze=ce.target.column,nt=Ie.links.filter(function(St){return St.target.column==ze&&St.circularLinkType==tt}),ce.circularLinkType=="bottom"?nt.sort(he):nt.sort(se),Qe=0,nt.forEach(function(St,Ot){St.circularLinkID==ce.circularLinkID&&(ce.circularPathData.rightSmallArcRadius=u+ce.width/2+Qe,ce.circularPathData.rightLargeArcRadius=u+ce.width/2+Ot*Ze+Qe),Qe=Qe+St.width}),ce.circularLinkType=="bottom"?(ce.circularPathData.verticalFullExtent=Math.max(at,ce.source.y1,ce.target.y1)+d+ce.circularPathData.verticalBuffer,ce.circularPathData.verticalLeftInnerExtent=ce.circularPathData.verticalFullExtent-ce.circularPathData.leftLargeArcRadius,ce.circularPathData.verticalRightInnerExtent=ce.circularPathData.verticalFullExtent-ce.circularPathData.rightLargeArcRadius):(ce.circularPathData.verticalFullExtent=lt-d-ce.circularPathData.verticalBuffer,ce.circularPathData.verticalLeftInnerExtent=ce.circularPathData.verticalFullExtent+ce.circularPathData.leftLargeArcRadius,ce.circularPathData.verticalRightInnerExtent=ce.circularPathData.verticalFullExtent+ce.circularPathData.rightLargeArcRadius)}ce.circularPathData.leftInnerExtent=ce.circularPathData.sourceX+ce.circularPathData.leftNodeBuffer,ce.circularPathData.rightInnerExtent=ce.circularPathData.targetX-ce.circularPathData.rightNodeBuffer,ce.circularPathData.leftFullExtent=ce.circularPathData.sourceX+ce.circularPathData.leftLargeArcRadius+ce.circularPathData.leftNodeBuffer,ce.circularPathData.rightFullExtent=ce.circularPathData.targetX-ce.circularPathData.rightLargeArcRadius-ce.circularPathData.rightNodeBuffer}if(ce.circular)ce.path=U(ce);else{var Ct=M.linkHorizontal().source(function(St){var Ot=St.source.x0+(St.source.x1-St.source.x0),jt=St.y0;return[Ot,jt]}).target(function(St){var Ot=St.target.x0,jt=St.y1;return[Ot,jt]});ce.path=Ct(ce)}})}function U(Ie){var Ze="";return Ie.circularLinkType=="top"?Ze="M"+Ie.circularPathData.sourceX+" "+Ie.circularPathData.sourceY+" L"+Ie.circularPathData.leftInnerExtent+" "+Ie.circularPathData.sourceY+" A"+Ie.circularPathData.leftLargeArcRadius+" "+Ie.circularPathData.leftSmallArcRadius+" 0 0 0 "+Ie.circularPathData.leftFullExtent+" "+(Ie.circularPathData.sourceY-Ie.circularPathData.leftSmallArcRadius)+" L"+Ie.circularPathData.leftFullExtent+" "+Ie.circularPathData.verticalLeftInnerExtent+" A"+Ie.circularPathData.leftLargeArcRadius+" "+Ie.circularPathData.leftLargeArcRadius+" 0 0 0 "+Ie.circularPathData.leftInnerExtent+" "+Ie.circularPathData.verticalFullExtent+" L"+Ie.circularPathData.rightInnerExtent+" "+Ie.circularPathData.verticalFullExtent+" A"+Ie.circularPathData.rightLargeArcRadius+" "+Ie.circularPathData.rightLargeArcRadius+" 0 0 0 "+Ie.circularPathData.rightFullExtent+" "+Ie.circularPathData.verticalRightInnerExtent+" L"+Ie.circularPathData.rightFullExtent+" "+(Ie.circularPathData.targetY-Ie.circularPathData.rightSmallArcRadius)+" A"+Ie.circularPathData.rightLargeArcRadius+" "+Ie.circularPathData.rightSmallArcRadius+" 0 0 0 "+Ie.circularPathData.rightInnerExtent+" "+Ie.circularPathData.targetY+" L"+Ie.circularPathData.targetX+" "+Ie.circularPathData.targetY:Ze="M"+Ie.circularPathData.sourceX+" "+Ie.circularPathData.sourceY+" L"+Ie.circularPathData.leftInnerExtent+" "+Ie.circularPathData.sourceY+" A"+Ie.circularPathData.leftLargeArcRadius+" "+Ie.circularPathData.leftSmallArcRadius+" 0 0 1 "+Ie.circularPathData.leftFullExtent+" "+(Ie.circularPathData.sourceY+Ie.circularPathData.leftSmallArcRadius)+" L"+Ie.circularPathData.leftFullExtent+" "+Ie.circularPathData.verticalLeftInnerExtent+" A"+Ie.circularPathData.leftLargeArcRadius+" "+Ie.circularPathData.leftLargeArcRadius+" 0 0 1 "+Ie.circularPathData.leftInnerExtent+" "+Ie.circularPathData.verticalFullExtent+" L"+Ie.circularPathData.rightInnerExtent+" "+Ie.circularPathData.verticalFullExtent+" A"+Ie.circularPathData.rightLargeArcRadius+" "+Ie.circularPathData.rightLargeArcRadius+" 0 0 1 "+Ie.circularPathData.rightFullExtent+" "+Ie.circularPathData.verticalRightInnerExtent+" L"+Ie.circularPathData.rightFullExtent+" "+(Ie.circularPathData.targetY+Ie.circularPathData.rightSmallArcRadius)+" A"+Ie.circularPathData.rightLargeArcRadius+" "+Ie.circularPathData.rightSmallArcRadius+" 0 0 1 "+Ie.circularPathData.rightInnerExtent+" "+Ie.circularPathData.targetY+" L"+Ie.circularPathData.targetX+" "+Ie.circularPathData.targetY,Ze}function W(Ie,Ze){return G(Ie)==G(Ze)?Ie.circularLinkType=="bottom"?ue(Ie,Ze):Q(Ie,Ze):G(Ze)-G(Ie)}function Q(Ie,Ze){return Ie.y0-Ze.y0}function ue(Ie,Ze){return Ze.y0-Ie.y0}function se(Ie,Ze){return Ie.y1-Ze.y1}function he(Ie,Ze){return Ze.y1-Ie.y1}function G(Ie){return Ie.target.column-Ie.source.column}function $(Ie){return Ie.target.x0-Ie.source.x1}function J(Ie,Ze){var at=z(Ie),it=$(Ze)/Math.tan(at),et=be(Ie)=="up"?Ie.y1+it:Ie.y1-it;return et}function Z(Ie,Ze){var at=z(Ie),it=$(Ze)/Math.tan(at),et=be(Ie)=="up"?Ie.y1-it:Ie.y1+it;return et}function re(Ie,Ze,at,it){Ie.links.forEach(function(et){if(!et.circular&&et.target.column-et.source.column>1){var lt=et.source.column+1,Me=et.target.column-1,ge=1,ce=Me-lt+1;for(ge=1;lt<=Me;lt++,ge++)Ie.nodes.forEach(function(ze){if(ze.column==lt){var tt=ge/(ce+1),nt=Math.pow(1-tt,3),Qe=3*tt*Math.pow(1-tt,2),Ct=3*Math.pow(tt,2)*(1-tt),St=Math.pow(tt,3),Ot=nt*et.y0+Qe*et.y0+Ct*et.y1+St*et.y1,jt=Ot-et.width/2,ur=Ot+et.width/2,ar;jt>ze.y0&&jtze.y0&&urze.y1&&j(Cr,ar,Ze,at)})):jtze.y1&&(ar=ur-ze.y0+10,ze=j(ze,ar,Ze,at),Ie.nodes.forEach(function(Cr){b(Cr,it)==b(ze,it)||Cr.column!=ze.column||Cr.y0ze.y1&&j(Cr,ar,Ze,at)}))}})}})}function ne(Ie,Ze){return Ie.y0>Ze.y0&&Ie.y0Ze.y0&&Ie.y1Ze.y1}function j(Ie,Ze,at,it){return Ie.y0+Ze>=at&&Ie.y1+Ze<=it&&(Ie.y0=Ie.y0+Ze,Ie.y1=Ie.y1+Ze,Ie.targetLinks.forEach(function(et){et.y1=et.y1+Ze}),Ie.sourceLinks.forEach(function(et){et.y0=et.y0+Ze})),Ie}function ee(Ie,Ze,at,it){Ie.nodes.forEach(function(et){it&&et.y+(et.y1-et.y0)>Ze&&(et.y=et.y-(et.y+(et.y1-et.y0)-Ze));var lt=Ie.links.filter(function(ce){return b(ce.source,at)==b(et,at)}),Me=lt.length;Me>1&<.sort(function(ce,ze){if(!ce.circular&&!ze.circular){if(ce.target.column==ze.target.column)return ce.y1-ze.y1;if(fe(ce,ze)){if(ce.target.column>ze.target.column){var tt=Z(ze,ce);return ce.y1-tt}if(ze.target.column>ce.target.column){var nt=Z(ce,ze);return nt-ze.y1}}else return ce.y1-ze.y1}if(ce.circular&&!ze.circular)return ce.circularLinkType=="top"?-1:1;if(ze.circular&&!ce.circular)return ze.circularLinkType=="top"?1:-1;if(ce.circular&&ze.circular)return ce.circularLinkType===ze.circularLinkType&&ce.circularLinkType=="top"?ce.target.column===ze.target.column?ce.target.y1-ze.target.y1:ze.target.column-ce.target.column:ce.circularLinkType===ze.circularLinkType&&ce.circularLinkType=="bottom"?ce.target.column===ze.target.column?ze.target.y1-ce.target.y1:ce.target.column-ze.target.column:ce.circularLinkType=="top"?-1:1});var ge=et.y0;lt.forEach(function(ce){ce.y0=ge+ce.width/2,ge=ge+ce.width}),lt.forEach(function(ce,ze){if(ce.circularLinkType=="bottom"){var tt=ze+1,nt=0;for(tt;tt1&&et.sort(function(ge,ce){if(!ge.circular&&!ce.circular){if(ge.source.column==ce.source.column)return ge.y0-ce.y0;if(fe(ge,ce)){if(ce.source.column0?"up":"down"}function Ae(Ie,Ze){return b(Ie.source,Ze)==b(Ie.target,Ze)}function Be(Ie,Ze,at){var it=Ie.nodes,et=Ie.links,lt=!1,Me=!1;if(et.forEach(function(Qe){Qe.circularLinkType=="top"?lt=!0:Qe.circularLinkType=="bottom"&&(Me=!0)}),lt==!1||Me==!1){var ge=x.min(it,function(Qe){return Qe.y0}),ce=x.max(it,function(Qe){return Qe.y1}),ze=ce-ge,tt=at-Ze,nt=tt/ze;it.forEach(function(Qe){var Ct=(Qe.y1-Qe.y0)*nt;Qe.y0=(Qe.y0-ge)*nt,Qe.y1=Qe.y0+Ct}),et.forEach(function(Qe){Qe.y0=(Qe.y0-ge)*nt,Qe.y1=(Qe.y1-ge)*nt,Qe.width=Qe.width*nt})}}g.sankeyCircular=f,g.sankeyCenter=i,g.sankeyLeft=r,g.sankeyRight=o,g.sankeyJustify=a,Object.defineProperty(g,"__esModule",{value:!0})})}}),Fk=Ye({"src/traces/sankey/constants.js"(X,H){"use strict";H.exports={nodeTextOffsetHorizontal:4,nodeTextOffsetVertical:3,nodePadAcross:10,sankeyIterations:50,forceIterations:5,forceTicksPerFrame:10,duration:500,ease:"linear",cn:{sankey:"sankey",sankeyLinks:"sankey-links",sankeyLink:"sankey-link",sankeyNodeSet:"sankey-node-set",sankeyNode:"sankey-node",nodeRect:"node-rect",nodeLabel:"node-label"}}}}),Kq=Ye({"src/traces/sankey/render.js"(X,H){"use strict";var g=Gq(),x=(f0(),Hf(fg)).interpolateNumber,A=_n(),M=Zq(),e=Yq(),t=Fk(),r=bh(),o=Fn(),a=Bo(),i=ta(),n=i.strTranslate,s=i.strRotate,c=kv(),h=c.keyFun,v=c.repeat,p=c.unwrap,T=jl(),l=Hn(),_=oh(),w=_.CAP_SHIFT,S=_.LINE_SPACING,E=3;function m(J,Z,re){var ne=p(Z),j=ne.trace,ee=j.domain,ie=j.orientation==="h",fe=j.node.pad,be=j.node.thickness,Ae={justify:M.sankeyJustify,left:M.sankeyLeft,right:M.sankeyRight,center:M.sankeyCenter}[j.node.align],Be=J.width*(ee.x[1]-ee.x[0]),Ie=J.height*(ee.y[1]-ee.y[0]),Ze=ne._nodes,at=ne._links,it=ne.circular,et;it?et=e.sankeyCircular().circularLinkGap(0):et=M.sankey(),et.iterations(t.sankeyIterations).size(ie?[Be,Ie]:[Ie,Be]).nodeWidth(be).nodePadding(fe).nodeId(function(Cr){return Cr.pointNumber}).nodeAlign(Ae).nodes(Ze).links(at);var lt=et();et.nodePadding()=Fe||(yt=Fe-_r.y0,yt>1e-6&&(_r.y0+=yt,_r.y1+=yt)),Fe=_r.y1+fe})}function Ot(Cr){var vr=Cr.map(function(Ve,ke){return{x0:Ve.x0,index:ke}}).sort(function(Ve,ke){return Ve.x0-ke.x0}),_r=[],yt=-1,Fe,Ke=-1/0,Ne;for(Me=0;MeKe+be&&(yt+=1,Fe=Ee.x0),Ke=Ee.x0,_r[yt]||(_r[yt]=[]),_r[yt].push(Ee),Ne=Fe-Ee.x0,Ee.x0+=Ne,Ee.x1+=Ne}return _r}if(j.node.x.length&&j.node.y.length){for(Me=0;Me0?" L "+j.targetX+" "+j.targetY:"")+"Z"):(re="M "+(j.targetX-Z)+" "+(j.targetY-ne)+" L "+(j.rightInnerExtent-Z)+" "+(j.targetY-ne)+" A "+(j.rightLargeArcRadius+ne)+" "+(j.rightSmallArcRadius+ne)+" 0 0 0 "+(j.rightFullExtent-ne-Z)+" "+(j.targetY+j.rightSmallArcRadius)+" L "+(j.rightFullExtent-ne-Z)+" "+j.verticalRightInnerExtent,ee&&ie?re+=" A "+(j.rightLargeArcRadius+ne)+" "+(j.rightLargeArcRadius+ne)+" 0 0 0 "+(j.rightInnerExtent-ne-Z)+" "+(j.verticalFullExtent+ne)+" L "+(j.rightFullExtent+ne-Z-(j.rightLargeArcRadius-ne))+" "+(j.verticalFullExtent+ne)+" A "+(j.rightLargeArcRadius+ne)+" "+(j.rightLargeArcRadius+ne)+" 0 0 0 "+(j.leftFullExtent+ne)+" "+j.verticalLeftInnerExtent:ee?re+=" A "+(j.rightLargeArcRadius-ne)+" "+(j.rightSmallArcRadius-ne)+" 0 0 1 "+(j.rightFullExtent-Z-ne-(j.rightLargeArcRadius-ne))+" "+(j.verticalFullExtent-ne)+" L "+(j.leftFullExtent+ne+(j.rightLargeArcRadius-ne))+" "+(j.verticalFullExtent-ne)+" A "+(j.rightLargeArcRadius-ne)+" "+(j.rightSmallArcRadius-ne)+" 0 0 1 "+(j.leftFullExtent+ne)+" "+j.verticalLeftInnerExtent:re+=" A "+(j.rightLargeArcRadius+ne)+" "+(j.rightLargeArcRadius+ne)+" 0 0 0 "+(j.rightInnerExtent-Z)+" "+(j.verticalFullExtent+ne)+" L "+j.leftInnerExtent+" "+(j.verticalFullExtent+ne)+" A "+(j.leftLargeArcRadius+ne)+" "+(j.leftLargeArcRadius+ne)+" 0 0 0 "+(j.leftFullExtent+ne)+" "+j.verticalLeftInnerExtent,re+=" L "+(j.leftFullExtent+ne)+" "+(j.sourceY+j.leftSmallArcRadius)+" A "+(j.leftLargeArcRadius+ne)+" "+(j.leftSmallArcRadius+ne)+" 0 0 0 "+j.leftInnerExtent+" "+(j.sourceY-ne)+" L "+j.sourceX+" "+(j.sourceY-ne)+" L "+j.sourceX+" "+(j.sourceY+ne)+" L "+j.leftInnerExtent+" "+(j.sourceY+ne)+" A "+(j.leftLargeArcRadius-ne)+" "+(j.leftSmallArcRadius-ne)+" 0 0 1 "+(j.leftFullExtent-ne)+" "+(j.sourceY+j.leftSmallArcRadius)+" L "+(j.leftFullExtent-ne)+" "+j.verticalLeftInnerExtent,ee&&ie?re+=" A "+(j.rightLargeArcRadius-ne)+" "+(j.rightSmallArcRadius-ne)+" 0 0 1 "+(j.leftFullExtent-ne-(j.rightLargeArcRadius-ne))+" "+(j.verticalFullExtent-ne)+" L "+(j.rightFullExtent+ne-Z+(j.rightLargeArcRadius-ne))+" "+(j.verticalFullExtent-ne)+" A "+(j.rightLargeArcRadius-ne)+" "+(j.rightSmallArcRadius-ne)+" 0 0 1 "+(j.rightFullExtent+ne-Z)+" "+j.verticalRightInnerExtent:ee?re+=" A "+(j.rightLargeArcRadius+ne)+" "+(j.rightLargeArcRadius+ne)+" 0 0 0 "+(j.leftFullExtent+ne)+" "+(j.verticalFullExtent+ne)+" L "+(j.rightFullExtent-Z-ne)+" "+(j.verticalFullExtent+ne)+" A "+(j.rightLargeArcRadius+ne)+" "+(j.rightLargeArcRadius+ne)+" 0 0 0 "+(j.rightFullExtent+ne-Z)+" "+j.verticalRightInnerExtent:re+=" A "+(j.leftLargeArcRadius-ne)+" "+(j.leftLargeArcRadius-ne)+" 0 0 1 "+j.leftInnerExtent+" "+(j.verticalFullExtent-ne)+" L "+(j.rightInnerExtent-Z)+" "+(j.verticalFullExtent-ne)+" A "+(j.rightLargeArcRadius-ne)+" "+(j.rightLargeArcRadius-ne)+" 0 0 1 "+(j.rightFullExtent+ne-Z)+" "+j.verticalRightInnerExtent,re+=" L "+(j.rightFullExtent+ne-Z)+" "+(j.targetY+j.rightSmallArcRadius)+" A "+(j.rightLargeArcRadius-ne)+" "+(j.rightSmallArcRadius-ne)+" 0 0 1 "+(j.rightInnerExtent-Z)+" "+(j.targetY+ne)+" L "+(j.targetX-Z)+" "+(j.targetY+ne)+(Z>0?" L "+j.targetX+" "+j.targetY:"")+"Z"),re}function u(){var J=.5;function Z(re){var ne=re.linkArrowLength;if(re.link.circular)return d(re.link,ne);var j=Math.abs((re.link.target.x0-re.link.source.x1)/2);ne>j&&(ne=j);var ee=re.link.source.x1,ie=re.link.target.x0-ne,fe=x(ee,ie),be=fe(J),Ae=fe(1-J),Be=re.link.y0-re.link.width/2,Ie=re.link.y0+re.link.width/2,Ze=re.link.y1-re.link.width/2,at=re.link.y1+re.link.width/2,it="M"+ee+","+Be,et="C"+be+","+Be+" "+Ae+","+Ze+" "+ie+","+Ze,lt="C"+Ae+","+at+" "+be+","+Ie+" "+ee+","+Ie,Me=ne>0?"L"+(ie+ne)+","+(Ze+re.link.width/2):"";return Me+="L"+ie+","+at,it+et+Me+lt+"Z"}return Z}function y(J,Z){var re=r(Z.color),ne=t.nodePadAcross,j=J.nodePad/2;Z.dx=Z.x1-Z.x0,Z.dy=Z.y1-Z.y0;var ee=Z.dx,ie=Math.max(.5,Z.dy),fe="node_"+Z.pointNumber;return Z.group&&(fe=i.randstr()),Z.trace=J.trace,Z.curveNumber=J.trace.index,{index:Z.pointNumber,key:fe,partOfGroup:Z.partOfGroup||!1,group:Z.group,traceId:J.key,trace:J.trace,node:Z,nodePad:J.nodePad,nodeLineColor:J.nodeLineColor,nodeLineWidth:J.nodeLineWidth,textFont:J.textFont,size:J.horizontal?J.height:J.width,visibleWidth:Math.ceil(ee),visibleHeight:ie,zoneX:-ne,zoneY:-j,zoneWidth:ee+2*ne,zoneHeight:ie+2*j,labelY:J.horizontal?Z.dy/2+1:Z.dx/2+1,left:Z.originalLayer===1,sizeAcross:J.width,forceLayouts:J.forceLayouts,horizontal:J.horizontal,darkBackground:re.getBrightness()<=128,tinyColorHue:o.tinyRGB(re),tinyColorAlpha:re.getAlpha(),valueFormat:J.valueFormat,valueSuffix:J.valueSuffix,sankey:J.sankey,graph:J.graph,arrangement:J.arrangement,uniqueNodeLabelPathId:[J.guid,J.key,fe].join("_"),interactionState:J.interactionState,figure:J}}function f(J){J.attr("transform",function(Z){return n(Z.node.x0.toFixed(3),Z.node.y0.toFixed(3))})}function P(J){J.call(f)}function L(J,Z){J.call(P),Z.attr("d",u())}function z(J){J.attr("width",function(Z){return Z.node.x1-Z.node.x0}).attr("height",function(Z){return Z.visibleHeight})}function F(J){return J.link.width>1||J.linkLineWidth>0}function B(J){var Z=n(J.translateX,J.translateY);return Z+(J.horizontal?"matrix(1 0 0 1 0 0)":"matrix(0 1 1 0 0 0)")}function O(J,Z,re){J.on(".basic",null).on("mouseover.basic",function(ne){!ne.interactionState.dragInProgress&&!ne.partOfGroup&&(re.hover(this,ne,Z),ne.interactionState.hovered=[this,ne])}).on("mousemove.basic",function(ne){!ne.interactionState.dragInProgress&&!ne.partOfGroup&&(re.follow(this,ne),ne.interactionState.hovered=[this,ne])}).on("mouseout.basic",function(ne){!ne.interactionState.dragInProgress&&!ne.partOfGroup&&(re.unhover(this,ne,Z),ne.interactionState.hovered=!1)}).on("click.basic",function(ne){ne.interactionState.hovered&&(re.unhover(this,ne,Z),ne.interactionState.hovered=!1),!ne.interactionState.dragInProgress&&!ne.partOfGroup&&re.select(this,ne,Z)})}function I(J,Z,re,ne){var j=A.behavior.drag().origin(function(ee){return{x:ee.node.x0+ee.visibleWidth/2,y:ee.node.y0+ee.visibleHeight/2}}).on("dragstart",function(ee){if(ee.arrangement!=="fixed"&&(i.ensureSingle(ne._fullLayout._infolayer,"g","dragcover",function(fe){ne._fullLayout._dragCover=fe}),i.raiseToTop(this),ee.interactionState.dragInProgress=ee.node,se(ee.node),ee.interactionState.hovered&&(re.nodeEvents.unhover.apply(0,ee.interactionState.hovered),ee.interactionState.hovered=!1),ee.arrangement==="snap")){var ie=ee.traceId+"|"+ee.key;ee.forceLayouts[ie]?ee.forceLayouts[ie].alpha(1):N(J,ie,ee,ne),U(J,Z,ee,ie,ne)}}).on("drag",function(ee){if(ee.arrangement!=="fixed"){var ie=A.event.x,fe=A.event.y;ee.arrangement==="snap"?(ee.node.x0=ie-ee.visibleWidth/2,ee.node.x1=ie+ee.visibleWidth/2,ee.node.y0=fe-ee.visibleHeight/2,ee.node.y1=fe+ee.visibleHeight/2):(ee.arrangement==="freeform"&&(ee.node.x0=ie-ee.visibleWidth/2,ee.node.x1=ie+ee.visibleWidth/2),fe=Math.max(0,Math.min(ee.size-ee.visibleHeight/2,fe)),ee.node.y0=fe-ee.visibleHeight/2,ee.node.y1=fe+ee.visibleHeight/2),se(ee.node),ee.arrangement!=="snap"&&(ee.sankey.update(ee.graph),L(J.filter(he(ee)),Z))}}).on("dragend",function(ee){if(ee.arrangement!=="fixed"){ee.interactionState.dragInProgress=!1;for(var ie=0;ie0)window.requestAnimationFrame(ee);else{var be=re.node.originalX;re.node.x0=be-re.visibleWidth/2,re.node.x1=be+re.visibleWidth/2,Q(re,j)}})}function W(J,Z,re,ne){return function(){for(var ee=0,ie=0;ie0&&ne.forceLayouts[Z].alpha(0)}}function Q(J,Z){for(var re=[],ne=[],j=0;j"),color:_(G,"bgcolor")||t.addOpacity(ne.color,1),borderColor:_(G,"bordercolor"),fontFamily:_(G,"font.family"),fontSize:_(G,"font.size"),fontColor:_(G,"font.color"),fontWeight:_(G,"font.weight"),fontStyle:_(G,"font.style"),fontVariant:_(G,"font.variant"),fontTextcase:_(G,"font.textcase"),fontLineposition:_(G,"font.lineposition"),fontShadow:_(G,"font.shadow"),nameLength:_(G,"namelength"),textAlign:_(G,"align"),idealAlign:g.event.x"),color:_(G,"bgcolor")||he.tinyColorHue,borderColor:_(G,"bordercolor"),fontFamily:_(G,"font.family"),fontSize:_(G,"font.size"),fontColor:_(G,"font.color"),fontWeight:_(G,"font.weight"),fontStyle:_(G,"font.style"),fontVariant:_(G,"font.variant"),fontTextcase:_(G,"font.textcase"),fontLineposition:_(G,"font.lineposition"),fontShadow:_(G,"font.shadow"),nameLength:_(G,"namelength"),textAlign:_(G,"align"),idealAlign:"left",hovertemplate:G.hovertemplate,hovertemplateLabels:ee,eventData:[he.node]},{container:m._hoverlayer.node(),outerContainer:m._paper.node(),gd:S});n(be,.85),s(be)}}},ue=function(se,he,G){S._fullLayout.hovermode!==!1&&(g.select(se).call(p,he,G),he.node.trace.node.hoverinfo!=="skip"&&(he.node.fullData=he.node.trace,S.emit("plotly_unhover",{event:g.event,points:[he.node]})),e.loneUnhover(m._hoverlayer.node()))};M(S,b,E,{width:d.w,height:d.h,margin:{t:d.t,r:d.r,b:d.b,l:d.l}},{linkEvents:{hover:P,follow:I,unhover:N,select:f},nodeEvents:{hover:W,follow:Q,unhover:ue,select:U}})}}}),Jq=Ye({"src/traces/sankey/base_plot.js"(X){"use strict";var H=Ou().overrideAll,g=jh().getModuleCalcData,x=Ok(),A=Zm(),M=Kd(),e=bp(),t=ff().prepSelect,r=ta(),o=Hn(),a="sankey";X.name=a,X.baseLayoutAttrOverrides=H({hoverlabel:A.hoverlabel},"plot","nested"),X.plot=function(n){var s=g(n.calcdata,a)[0];x(n,s),X.updateFx(n)},X.clean=function(n,s,c,h){var v=h._has&&h._has(a),p=s._has&&s._has(a);v&&!p&&(h._paperdiv.selectAll(".sankey").remove(),h._paperdiv.selectAll(".bgsankey").remove())},X.updateFx=function(n){for(var s=0;s0}H.exports=function(F,B,O,I){var N=F._fullLayout,U;w(O)&&I&&(U=I()),M.makeTraceGroups(N._indicatorlayer,B,"trace").each(function(W){var Q=W[0],ue=Q.trace,se=g.select(this),he=ue._hasGauge,G=ue._isAngular,$=ue._isBullet,J=ue.domain,Z={w:N._size.w*(J.x[1]-J.x[0]),h:N._size.h*(J.y[1]-J.y[0]),l:N._size.l+N._size.w*J.x[0],r:N._size.r+N._size.w*(1-J.x[1]),t:N._size.t+N._size.h*(1-J.y[1]),b:N._size.b+N._size.h*J.y[0]},re=Z.l+Z.w/2,ne=Z.t+Z.h/2,j=Math.min(Z.w/2,Z.h),ee=i.innerRadius*j,ie,fe,be,Ae=ue.align||"center";if(fe=ne,!he)ie=Z.l+l[Ae]*Z.w,be=function(ce){return y(ce,Z.w,Z.h)};else if(G&&(ie=re,fe=ne+j/2,be=function(ce){return f(ce,.9*ee)}),$){var Be=i.bulletPadding,Ie=1-i.bulletNumberDomainSize+Be;ie=Z.l+(Ie+(1-Ie)*l[Ae])*Z.w,be=function(ce){return y(ce,(i.bulletNumberDomainSize-Be)*Z.w,Z.h)}}m(F,se,W,{numbersX:ie,numbersY:fe,numbersScaler:be,transitionOpts:O,onComplete:U});var Ze,at;he&&(Ze={range:ue.gauge.axis.range,color:ue.gauge.bgcolor,line:{color:ue.gauge.bordercolor,width:0},thickness:1},at={range:ue.gauge.axis.range,color:"rgba(0, 0, 0, 0)",line:{color:ue.gauge.bordercolor,width:ue.gauge.borderwidth},thickness:1});var it=se.selectAll("g.angular").data(G?W:[]);it.exit().remove();var et=se.selectAll("g.angularaxis").data(G?W:[]);et.exit().remove(),G&&E(F,se,W,{radius:j,innerRadius:ee,gauge:it,layer:et,size:Z,gaugeBg:Ze,gaugeOutline:at,transitionOpts:O,onComplete:U});var lt=se.selectAll("g.bullet").data($?W:[]);lt.exit().remove();var Me=se.selectAll("g.bulletaxis").data($?W:[]);Me.exit().remove(),$&&S(F,se,W,{gauge:lt,layer:Me,size:Z,gaugeBg:Ze,gaugeOutline:at,transitionOpts:O,onComplete:U});var ge=se.selectAll("text.title").data(W);ge.exit().remove(),ge.enter().append("text").classed("title",!0),ge.attr("text-anchor",function(){return $?T.right:T[ue.title.align]}).text(ue.title.text).call(a.font,ue.title.font).call(n.convertToTspans,F),ge.attr("transform",function(){var ce=Z.l+Z.w*l[ue.title.align],ze,tt=i.titlePadding,nt=a.bBox(ge.node());if(he){if(G)if(ue.gauge.axis.visible){var Qe=a.bBox(et.node());ze=Qe.top-tt-nt.bottom}else ze=Z.t+Z.h/2-j/2-nt.bottom-tt;$&&(ze=fe-(nt.top+nt.bottom)/2,ce=Z.l-i.bulletPadding*Z.w)}else ze=ue._numbersTop-tt-nt.bottom;return t(ce,ze)})})};function S(z,F,B,O){var I=B[0].trace,N=O.gauge,U=O.layer,W=O.gaugeBg,Q=O.gaugeOutline,ue=O.size,se=I.domain,he=O.transitionOpts,G=O.onComplete,$,J,Z,re,ne;N.enter().append("g").classed("bullet",!0),N.attr("transform",t(ue.l,ue.t)),U.enter().append("g").classed("bulletaxis",!0).classed("crisp",!0),U.selectAll("g.xbulletaxistick,path,text").remove();var j=ue.h,ee=I.gauge.bar.thickness*j,ie=se.x[0],fe=se.x[0]+(se.x[1]-se.x[0])*(I._hasNumber||I._hasDelta?1-i.bulletNumberDomainSize:1);$=u(z,I.gauge.axis),$._id="xbulletaxis",$.domain=[ie,fe],$.setScale(),J=s.calcTicks($),Z=s.makeTransTickFn($),re=s.getTickSigns($)[2],ne=ue.t+ue.h,$.visible&&(s.drawTicks(z,$,{vals:$.ticks==="inside"?s.clipEnds($,J):J,layer:U,path:s.makeTickPath($,ne,re),transFn:Z}),s.drawLabels(z,$,{vals:J,layer:U,transFn:Z,labelFns:s.makeLabelFns($,ne)}));function be(et){et.attr("width",function(lt){return Math.max(0,$.c2p(lt.range[1])-$.c2p(lt.range[0]))}).attr("x",function(lt){return $.c2p(lt.range[0])}).attr("y",function(lt){return .5*(1-lt.thickness)*j}).attr("height",function(lt){return lt.thickness*j})}var Ae=[W].concat(I.gauge.steps),Be=N.selectAll("g.bg-bullet").data(Ae);Be.enter().append("g").classed("bg-bullet",!0).append("rect"),Be.select("rect").call(be).call(b),Be.exit().remove();var Ie=N.selectAll("g.value-bullet").data([I.gauge.bar]);Ie.enter().append("g").classed("value-bullet",!0).append("rect"),Ie.select("rect").attr("height",ee).attr("y",(j-ee)/2).call(b),w(he)?Ie.select("rect").transition().duration(he.duration).ease(he.easing).each("end",function(){G&&G()}).each("interrupt",function(){G&&G()}).attr("width",Math.max(0,$.c2p(Math.min(I.gauge.axis.range[1],B[0].y)))):Ie.select("rect").attr("width",typeof B[0].y=="number"?Math.max(0,$.c2p(Math.min(I.gauge.axis.range[1],B[0].y))):0),Ie.exit().remove();var Ze=B.filter(function(){return I.gauge.threshold.value||I.gauge.threshold.value===0}),at=N.selectAll("g.threshold-bullet").data(Ze);at.enter().append("g").classed("threshold-bullet",!0).append("line"),at.select("line").attr("x1",$.c2p(I.gauge.threshold.value)).attr("x2",$.c2p(I.gauge.threshold.value)).attr("y1",(1-I.gauge.threshold.thickness)/2*j).attr("y2",(1-(1-I.gauge.threshold.thickness)/2)*j).call(p.stroke,I.gauge.threshold.line.color).style("stroke-width",I.gauge.threshold.line.width),at.exit().remove();var it=N.selectAll("g.gauge-outline").data([Q]);it.enter().append("g").classed("gauge-outline",!0).append("rect"),it.select("rect").call(be).call(b),it.exit().remove()}function E(z,F,B,O){var I=B[0].trace,N=O.size,U=O.radius,W=O.innerRadius,Q=O.gaugeBg,ue=O.gaugeOutline,se=[N.l+N.w/2,N.t+N.h/2+U/2],he=O.gauge,G=O.layer,$=O.transitionOpts,J=O.onComplete,Z=Math.PI/2;function re(Ct){var St=I.gauge.axis.range[0],Ot=I.gauge.axis.range[1],jt=(Ct-St)/(Ot-St)*Math.PI-Z;return jt<-Z?-Z:jt>Z?Z:jt}function ne(Ct){return g.svg.arc().innerRadius((W+U)/2-Ct/2*(U-W)).outerRadius((W+U)/2+Ct/2*(U-W)).startAngle(-Z)}function j(Ct){Ct.attr("d",function(St){return ne(St.thickness).startAngle(re(St.range[0])).endAngle(re(St.range[1]))()})}var ee,ie,fe,be;he.enter().append("g").classed("angular",!0),he.attr("transform",t(se[0],se[1])),G.enter().append("g").classed("angularaxis",!0).classed("crisp",!0),G.selectAll("g.xangularaxistick,path,text").remove(),ee=u(z,I.gauge.axis),ee.type="linear",ee.range=I.gauge.axis.range,ee._id="xangularaxis",ee.ticklabeloverflow="allow",ee.setScale();var Ae=function(Ct){return(ee.range[0]-Ct.x)/(ee.range[1]-ee.range[0])*Math.PI+Math.PI},Be={},Ie=s.makeLabelFns(ee,0),Ze=Ie.labelStandoff;Be.xFn=function(Ct){var St=Ae(Ct);return Math.cos(St)*Ze},Be.yFn=function(Ct){var St=Ae(Ct),Ot=Math.sin(St)>0?.2:1;return-Math.sin(St)*(Ze+Ct.fontSize*Ot)+Math.abs(Math.cos(St))*(Ct.fontSize*o)},Be.anchorFn=function(Ct){var St=Ae(Ct),Ot=Math.cos(St);return Math.abs(Ot)<.1?"middle":Ot>0?"start":"end"},Be.heightFn=function(Ct,St,Ot){var jt=Ae(Ct);return-.5*(1+Math.sin(jt))*Ot};var at=function(Ct){return t(se[0]+U*Math.cos(Ct),se[1]-U*Math.sin(Ct))};fe=function(Ct){return at(Ae(Ct))};var it=function(Ct){var St=Ae(Ct);return at(St)+"rotate("+-r(St)+")"};if(ie=s.calcTicks(ee),be=s.getTickSigns(ee)[2],ee.visible){be=ee.ticks==="inside"?-1:1;var et=(ee.linewidth||1)/2;s.drawTicks(z,ee,{vals:ie,layer:G,path:"M"+be*et+",0h"+be*ee.ticklen,transFn:it}),s.drawLabels(z,ee,{vals:ie,layer:G,transFn:fe,labelFns:Be})}var lt=[Q].concat(I.gauge.steps),Me=he.selectAll("g.bg-arc").data(lt);Me.enter().append("g").classed("bg-arc",!0).append("path"),Me.select("path").call(j).call(b),Me.exit().remove();var ge=ne(I.gauge.bar.thickness),ce=he.selectAll("g.value-arc").data([I.gauge.bar]);ce.enter().append("g").classed("value-arc",!0).append("path");var ze=ce.select("path");w($)?(ze.transition().duration($.duration).ease($.easing).each("end",function(){J&&J()}).each("interrupt",function(){J&&J()}).attrTween("d",d(ge,re(B[0].lastY),re(B[0].y))),I._lastValue=B[0].y):ze.attr("d",typeof B[0].y=="number"?ge.endAngle(re(B[0].y)):"M0,0Z"),ze.call(b),ce.exit().remove(),lt=[];var tt=I.gauge.threshold.value;(tt||tt===0)&<.push({range:[tt,tt],color:I.gauge.threshold.color,line:{color:I.gauge.threshold.line.color,width:I.gauge.threshold.line.width},thickness:I.gauge.threshold.thickness});var nt=he.selectAll("g.threshold-arc").data(lt);nt.enter().append("g").classed("threshold-arc",!0).append("path"),nt.select("path").call(j).call(b),nt.exit().remove();var Qe=he.selectAll("g.gauge-outline").data([ue]);Qe.enter().append("g").classed("gauge-outline",!0).append("path"),Qe.select("path").call(j).call(b),Qe.exit().remove()}function m(z,F,B,O){var I=B[0].trace,N=O.numbersX,U=O.numbersY,W=I.align||"center",Q=T[W],ue=O.transitionOpts,se=O.onComplete,he=M.ensureSingle(F,"g","numbers"),G,$,J,Z=[];I._hasNumber&&Z.push("number"),I._hasDelta&&(Z.push("delta"),I.delta.position==="left"&&Z.reverse());var re=he.selectAll("text").data(Z);re.enter().append("text"),re.attr("text-anchor",function(){return Q}).attr("class",function(at){return at}).attr("x",null).attr("y",null).attr("dx",null).attr("dy",null),re.exit().remove();function ne(at,it,et,lt){if(at.match("s")&&et>=0!=lt>=0&&!it(et).slice(-1).match(_)&&!it(lt).slice(-1).match(_)){var Me=at.slice().replace("s","f").replace(/\d+/,function(ce){return parseInt(ce)-1}),ge=u(z,{tickformat:Me});return function(ce){return Math.abs(ce)<1?s.tickText(ge,ce).text:it(ce)}}else return it}function j(){var at=u(z,{tickformat:I.number.valueformat},I._range);at.setScale(),s.prepTicks(at);var it=function(ce){return s.tickText(at,ce).text},et=I.number.suffix,lt=I.number.prefix,Me=he.select("text.number");function ge(){var ce=typeof B[0].y=="number"?lt+it(B[0].y)+et:"-";Me.text(ce).call(a.font,I.number.font).call(n.convertToTspans,z)}return w(ue)?Me.transition().duration(ue.duration).ease(ue.easing).each("end",function(){ge(),se&&se()}).each("interrupt",function(){ge(),se&&se()}).attrTween("text",function(){var ce=g.select(this),ze=A(B[0].lastY,B[0].y);I._lastValue=B[0].y;var tt=ne(I.number.valueformat,it,B[0].lastY,B[0].y);return function(nt){ce.text(lt+tt(ze(nt))+et)}}):ge(),G=P(lt+it(B[0].y)+et,I.number.font,Q,z),Me}function ee(){var at=u(z,{tickformat:I.delta.valueformat},I._range);at.setScale(),s.prepTicks(at);var it=function(nt){return s.tickText(at,nt).text},et=I.delta.suffix,lt=I.delta.prefix,Me=function(nt){var Qe=I.delta.relative?nt.relativeDelta:nt.delta;return Qe},ge=function(nt,Qe){return nt===0||typeof nt!="number"||isNaN(nt)?"-":(nt>0?I.delta.increasing.symbol:I.delta.decreasing.symbol)+lt+Qe(nt)+et},ce=function(nt){return nt.delta>=0?I.delta.increasing.color:I.delta.decreasing.color};I._deltaLastValue===void 0&&(I._deltaLastValue=Me(B[0]));var ze=he.select("text.delta");ze.call(a.font,I.delta.font).call(p.fill,ce({delta:I._deltaLastValue}));function tt(){ze.text(ge(Me(B[0]),it)).call(p.fill,ce(B[0])).call(n.convertToTspans,z)}return w(ue)?ze.transition().duration(ue.duration).ease(ue.easing).tween("text",function(){var nt=g.select(this),Qe=Me(B[0]),Ct=I._deltaLastValue,St=ne(I.delta.valueformat,it,Ct,Qe),Ot=A(Ct,Qe);return I._deltaLastValue=Qe,function(jt){nt.text(ge(Ot(jt),St)),nt.call(p.fill,ce({delta:Ot(jt)}))}}).each("end",function(){tt(),se&&se()}).each("interrupt",function(){tt(),se&&se()}):tt(),$=P(ge(Me(B[0]),it),I.delta.font,Q,z),ze}var ie=I.mode+I.align,fe;if(I._hasDelta&&(fe=ee(),ie+=I.delta.position+I.delta.font.size+I.delta.font.family+I.delta.valueformat,ie+=I.delta.increasing.symbol+I.delta.decreasing.symbol,J=$),I._hasNumber&&(j(),ie+=I.number.font.size+I.number.font.family+I.number.valueformat+I.number.suffix+I.number.prefix,J=G),I._hasDelta&&I._hasNumber){var be=[(G.left+G.right)/2,(G.top+G.bottom)/2],Ae=[($.left+$.right)/2,($.top+$.bottom)/2],Be,Ie,Ze=.75*I.delta.font.size;I.delta.position==="left"&&(Be=L(I,"deltaPos",0,-1*(G.width*l[I.align]+$.width*(1-l[I.align])+Ze),ie,Math.min),Ie=be[1]-Ae[1],J={width:G.width+$.width+Ze,height:Math.max(G.height,$.height),left:$.left+Be,right:G.right,top:Math.min(G.top,$.top+Ie),bottom:Math.max(G.bottom,$.bottom+Ie)}),I.delta.position==="right"&&(Be=L(I,"deltaPos",0,G.width*(1-l[I.align])+$.width*l[I.align]+Ze,ie,Math.max),Ie=be[1]-Ae[1],J={width:G.width+$.width+Ze,height:Math.max(G.height,$.height),left:G.left,right:$.right+Be,top:Math.min(G.top,$.top+Ie),bottom:Math.max(G.bottom,$.bottom+Ie)}),I.delta.position==="bottom"&&(Be=null,Ie=$.height,J={width:Math.max(G.width,$.width),height:G.height+$.height,left:Math.min(G.left,$.left),right:Math.max(G.right,$.right),top:G.bottom-G.height,bottom:G.bottom+$.height}),I.delta.position==="top"&&(Be=null,Ie=G.top,J={width:Math.max(G.width,$.width),height:G.height+$.height,left:Math.min(G.left,$.left),right:Math.max(G.right,$.right),top:G.bottom-G.height-$.height,bottom:G.bottom}),fe.attr({dx:Be,dy:Ie})}(I._hasNumber||I._hasDelta)&&he.attr("transform",function(){var at=O.numbersScaler(J);ie+=at[2];var it=L(I,"numbersScale",1,at[0],ie,Math.min),et;I._scaleNumbers||(it=1),I._isAngular?et=U-it*J.bottom:et=U-it*(J.top+J.bottom)/2,I._numbersTop=it*J.top+et;var lt=J[W];W==="center"&&(lt=(J.left+J.right)/2);var Me=N-it*lt;return Me=L(I,"numbersTranslate",0,Me,ie,Math.max),t(Me,et)+e(it)})}function b(z){z.each(function(F){p.stroke(g.select(this),F.line.color)}).each(function(F){p.fill(g.select(this),F.color)}).style("stroke-width",function(F){return F.line.width})}function d(z,F,B){return function(){var O=x(F,B);return function(I){return z.endAngle(O(I))()}}}function u(z,F,B){var O=z._fullLayout,I=M.extendFlat({type:"linear",ticks:"outside",range:B,showline:!0},F),N={type:"linear",_id:"x"+F._id},U={letter:"x",font:O.font,noAutotickangles:!0,noHover:!0,noTickson:!0};function W(Q,ue){return M.coerce(I,N,v,Q,ue)}return c(I,N,W,U,O),h(I,N,W,U),N}function y(z,F,B){var O=Math.min(F/z.width,B/z.height);return[O,z,F+"x"+B]}function f(z,F){var B=Math.sqrt(z.width/2*(z.width/2)+z.height*z.height),O=F/B;return[O,z,F]}function P(z,F,B,O){var I=document.createElementNS("http://www.w3.org/2000/svg","text"),N=g.select(I);return N.text(z).attr("x",0).attr("y",0).attr("text-anchor",B).attr("data-unformatted",z).call(n.convertToTspans,O).call(a.font,F),a.bBox(N.node())}function L(z,F,B,O,I,N){var U="_cache"+F;z[U]&&z[U].key===I||(z[U]={key:I,value:B});var W=M.aggNums(N,null,[z[U].value,O],2);return z[U].value=W,W}}}),nH=Ye({"src/traces/indicator/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"indicator",basePlotModule:tH(),categories:["svg","noOpacity","noHover"],animatable:!0,attributes:Bk(),supplyDefaults:rH().supplyDefaults,calc:aH().calc,plot:iH(),meta:{}}}}),oH=Ye({"lib/indicator.js"(X,H){"use strict";H.exports=nH()}}),Uk=Ye({"src/traces/table/attributes.js"(X,H){"use strict";var g=Kg(),x=Oo().extendFlat,A=Ou().overrideAll,M=Au(),e=Wu().attributes,t=Cc().descriptionOnlyNumbers,r=H.exports=A({domain:e({name:"table",trace:!0}),columnwidth:{valType:"number",arrayOk:!0,dflt:null},columnorder:{valType:"data_array"},header:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:t("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:28},align:x({},g.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:x({},M({arrayOk:!0}))},cells:{values:{valType:"data_array",dflt:[]},format:{valType:"data_array",dflt:[],description:t("cell value")},prefix:{valType:"string",arrayOk:!0,dflt:null},suffix:{valType:"string",arrayOk:!0,dflt:null},height:{valType:"number",dflt:20},align:x({},g.align,{arrayOk:!0}),line:{width:{valType:"number",arrayOk:!0,dflt:1},color:{valType:"color",arrayOk:!0,dflt:"grey"}},fill:{color:{valType:"color",arrayOk:!0,dflt:"white"}},font:x({},M({arrayOk:!0}))}},"calc","from-root")}}),sH=Ye({"src/traces/table/defaults.js"(X,H){"use strict";var g=ta(),x=Uk(),A=Wu().defaults;function M(e,t){for(var r=e.columnorder||[],o=e.header.values.length,a=r.slice(0,o),i=a.slice().sort(function(c,h){return c-h}),n=a.map(function(c){return i.indexOf(c)}),s=n.length;s",maxDimensionCount:60,overdrag:45,releaseTransitionDuration:120,releaseTransitionEase:"cubic-out",scrollbarCaptureWidth:18,scrollbarHideDelay:1e3,scrollbarHideDuration:1e3,scrollbarOffset:5,scrollbarWidth:8,transitionDuration:100,transitionEase:"cubic-out",uplift:5,wrapSpacer:" ",wrapSplitCharacter:" ",cn:{table:"table",tableControlView:"table-control-view",scrollBackground:"scroll-background",yColumn:"y-column",columnBlock:"column-block",scrollAreaClip:"scroll-area-clip",scrollAreaClipRect:"scroll-area-clip-rect",columnBoundary:"column-boundary",columnBoundaryClippath:"column-boundary-clippath",columnBoundaryRect:"column-boundary-rect",columnCells:"column-cells",columnCell:"column-cell",cellRect:"cell-rect",cellText:"cell-text",cellTextHolder:"cell-text-holder",scrollbarKit:"scrollbar-kit",scrollbar:"scrollbar",scrollbarSlider:"scrollbar-slider",scrollbarGlyph:"scrollbar-glyph",scrollbarCaptureZone:"scrollbar-capture-zone"}}}}),uH=Ye({"src/traces/table/data_preparation_helper.js"(X,H){"use strict";var g=jk(),x=Oo().extendFlat,A=jo(),M=xp().isTypedArray,e=xp().isArrayOrTypedArray;H.exports=function(v,p){var T=o(p.cells.values),l=function(Q){return Q.slice(p.header.values.length,Q.length)},_=o(p.header.values);_.length&&!_[0].length&&(_[0]=[""],_=o(_));var w=_.concat(l(T).map(function(){return a((_[0]||[""]).length)})),S=p.domain,E=Math.floor(v._fullLayout._size.w*(S.x[1]-S.x[0])),m=Math.floor(v._fullLayout._size.h*(S.y[1]-S.y[0])),b=p.header.values.length?w[0].map(function(){return p.header.height}):[g.emptyHeaderHeight],d=T.length?T[0].map(function(){return p.cells.height}):[],u=b.reduce(r,0),y=m-u,f=y+g.uplift,P=s(d,f),L=s(b,u),z=n(L,[]),F=n(P,z),B={},O=p._fullInput.columnorder;e(O)&&(O=Array.from(O)),O=O.concat(l(T.map(function(Q,ue){return ue})));var I=w.map(function(Q,ue){var se=e(p.columnwidth)?p.columnwidth[Math.min(ue,p.columnwidth.length-1)]:p.columnwidth;return A(se)?Number(se):1}),N=I.reduce(r,0);I=I.map(function(Q){return Q/N*E});var U=Math.max(t(p.header.line.width),t(p.cells.line.width)),W={key:p.uid+v._context.staticPlot,translateX:S.x[0]*v._fullLayout._size.w,translateY:v._fullLayout._size.h*(1-S.y[1]),size:v._fullLayout._size,width:E,maxLineWidth:U,height:m,columnOrder:O,groupHeight:m,rowBlocks:F,headerRowBlocks:z,scrollY:0,cells:x({},p.cells,{values:T}),headerCells:x({},p.header,{values:w}),gdColumns:w.map(function(Q){return Q[0]}),gdColumnsOriginalOrder:w.map(function(Q){return Q[0]}),prevPages:[0,0],scrollbarState:{scrollbarScrollInProgress:!1},columns:w.map(function(Q,ue){var se=B[Q];B[Q]=(se||0)+1;var he=Q+"__"+B[Q];return{key:he,label:Q,specIndex:ue,xIndex:O[ue],xScale:i,x:void 0,calcdata:void 0,columnWidth:I[ue]}})};return W.columns.forEach(function(Q){Q.calcdata=W,Q.x=i(Q)}),W};function t(h){if(e(h)){for(var v=0,p=0;p=v||m===h.length-1)&&(p[l]=w,w.key=E++,w.firstRowIndex=S,w.lastRowIndex=m,w=c(),l+=_,S=m+1,_=0);return p}function c(){return{firstRowIndex:null,lastRowIndex:null,rows:[]}}}}),cH=Ye({"src/traces/table/data_split_helpers.js"(X){"use strict";var H=Oo().extendFlat;X.splitToPanels=function(x){var A=[0,0],M=H({},x,{key:"header",type:"header",page:0,prevPages:A,currentRepaint:[null,null],dragHandle:!0,values:x.calcdata.headerCells.values[x.specIndex],rowBlocks:x.calcdata.headerRowBlocks,calcdata:H({},x.calcdata,{cells:x.calcdata.headerCells})}),e=H({},x,{key:"cells1",type:"cells",page:0,prevPages:A,currentRepaint:[null,null],dragHandle:!1,values:x.calcdata.cells.values[x.specIndex],rowBlocks:x.calcdata.rowBlocks}),t=H({},x,{key:"cells2",type:"cells",page:1,prevPages:A,currentRepaint:[null,null],dragHandle:!1,values:x.calcdata.cells.values[x.specIndex],rowBlocks:x.calcdata.rowBlocks});return[e,t,M]},X.splitToCells=function(x){var A=g(x);return(x.values||[]).slice(A[0],A[1]).map(function(M,e){var t=typeof M=="string"&&M.match(/[<$&> ]/)?"_keybuster_"+Math.random():"";return{keyWithinBlock:e+t,key:A[0]+e,column:x,calcdata:x.calcdata,page:x.page,rowBlocks:x.rowBlocks,value:M}})};function g(x){var A=x.rowBlocks[x.page],M=A?A.rows[0].rowIndex:0,e=A?M+A.rows.length:0;return[M,e]}}}),Vk=Ye({"src/traces/table/plot.js"(X,H){"use strict";var g=jk(),x=_n(),A=ta(),M=A.numberFormat,e=kv(),t=Bo(),r=jl(),o=ta().raiseToTop,a=ta().strTranslate,i=ta().cancelTransition,n=uH(),s=cH(),c=Fn();H.exports=function(ie,fe){var be=!ie._context.staticPlot,Ae=ie._fullLayout._paper.selectAll("."+g.cn.table).data(fe.map(function(Qe){var Ct=e.unwrap(Qe),St=Ct.trace;return n(ie,St)}),e.keyFun);Ae.exit().remove(),Ae.enter().append("g").classed(g.cn.table,!0).attr("overflow","visible").style("box-sizing","content-box").style("position","absolute").style("left",0).style("overflow","visible").style("shape-rendering","crispEdges").style("pointer-events","all"),Ae.attr("width",function(Qe){return Qe.width+Qe.size.l+Qe.size.r}).attr("height",function(Qe){return Qe.height+Qe.size.t+Qe.size.b}).attr("transform",function(Qe){return a(Qe.translateX,Qe.translateY)});var Be=Ae.selectAll("."+g.cn.tableControlView).data(e.repeat,e.keyFun),Ie=Be.enter().append("g").classed(g.cn.tableControlView,!0).style("box-sizing","content-box");if(be){var Ze="onwheel"in document?"wheel":"mousewheel";Ie.on("mousemove",function(Qe){Be.filter(function(Ct){return Qe===Ct}).call(l,ie)}).on(Ze,function(Qe){if(!Qe.scrollbarState.wheeling){Qe.scrollbarState.wheeling=!0;var Ct=Qe.scrollY+x.event.deltaY,St=Q(ie,Be,null,Ct)(Qe);St||(x.event.stopPropagation(),x.event.preventDefault()),Qe.scrollbarState.wheeling=!1}}).call(l,ie,!0)}Be.attr("transform",function(Qe){return a(Qe.size.l,Qe.size.t)});var at=Be.selectAll("."+g.cn.scrollBackground).data(e.repeat,e.keyFun);at.enter().append("rect").classed(g.cn.scrollBackground,!0).attr("fill","none"),at.attr("width",function(Qe){return Qe.width}).attr("height",function(Qe){return Qe.height}),Be.each(function(Qe){t.setClipUrl(x.select(this),v(ie,Qe),ie)});var it=Be.selectAll("."+g.cn.yColumn).data(function(Qe){return Qe.columns},e.keyFun);it.enter().append("g").classed(g.cn.yColumn,!0),it.exit().remove(),it.attr("transform",function(Qe){return a(Qe.x,0)}),be&&it.call(x.behavior.drag().origin(function(Qe){var Ct=x.select(this);return B(Ct,Qe,-g.uplift),o(this),Qe.calcdata.columnDragInProgress=!0,l(Be.filter(function(St){return Qe.calcdata.key===St.key}),ie),Qe}).on("drag",function(Qe){var Ct=x.select(this),St=function(ur){return(Qe===ur?x.event.x:ur.x)+ur.columnWidth/2};Qe.x=Math.max(-g.overdrag,Math.min(Qe.calcdata.width+g.overdrag-Qe.columnWidth,x.event.x));var Ot=T(it).filter(function(ur){return ur.calcdata.key===Qe.calcdata.key}),jt=Ot.sort(function(ur,ar){return St(ur)-St(ar)});jt.forEach(function(ur,ar){ur.xIndex=ar,ur.x=Qe===ur?ur.x:ur.xScale(ur)}),it.filter(function(ur){return Qe!==ur}).transition().ease(g.transitionEase).duration(g.transitionDuration).attr("transform",function(ur){return a(ur.x,0)}),Ct.call(i).attr("transform",a(Qe.x,-g.uplift))}).on("dragend",function(Qe){var Ct=x.select(this),St=Qe.calcdata;Qe.x=Qe.xScale(Qe),Qe.calcdata.columnDragInProgress=!1,B(Ct,Qe,0),z(ie,St,St.columns.map(function(Ot){return Ot.xIndex}))})),it.each(function(Qe){t.setClipUrl(x.select(this),p(ie,Qe),ie)});var et=it.selectAll("."+g.cn.columnBlock).data(s.splitToPanels,e.keyFun);et.enter().append("g").classed(g.cn.columnBlock,!0).attr("id",function(Qe){return Qe.key}),et.style("cursor",function(Qe){return Qe.dragHandle?"ew-resize":Qe.calcdata.scrollbarState.barWiggleRoom?"ns-resize":"default"});var lt=et.filter(I),Me=et.filter(O);be&&Me.call(x.behavior.drag().origin(function(Qe){return x.event.stopPropagation(),Qe}).on("drag",Q(ie,Be,-1)).on("dragend",function(){})),_(ie,Be,lt,et),_(ie,Be,Me,et);var ge=Be.selectAll("."+g.cn.scrollAreaClip).data(e.repeat,e.keyFun);ge.enter().append("clipPath").classed(g.cn.scrollAreaClip,!0).attr("id",function(Qe){return v(ie,Qe)});var ce=ge.selectAll("."+g.cn.scrollAreaClipRect).data(e.repeat,e.keyFun);ce.enter().append("rect").classed(g.cn.scrollAreaClipRect,!0).attr("x",-g.overdrag).attr("y",-g.uplift).attr("fill","none"),ce.attr("width",function(Qe){return Qe.width+2*g.overdrag}).attr("height",function(Qe){return Qe.height+g.uplift});var ze=it.selectAll("."+g.cn.columnBoundary).data(e.repeat,e.keyFun);ze.enter().append("g").classed(g.cn.columnBoundary,!0);var tt=it.selectAll("."+g.cn.columnBoundaryClippath).data(e.repeat,e.keyFun);tt.enter().append("clipPath").classed(g.cn.columnBoundaryClippath,!0),tt.attr("id",function(Qe){return p(ie,Qe)});var nt=tt.selectAll("."+g.cn.columnBoundaryRect).data(e.repeat,e.keyFun);nt.enter().append("rect").classed(g.cn.columnBoundaryRect,!0).attr("fill","none"),nt.attr("width",function(Qe){return Qe.columnWidth+2*h(Qe)}).attr("height",function(Qe){return Qe.calcdata.height+2*h(Qe)+g.uplift}).attr("x",function(Qe){return-h(Qe)}).attr("y",function(Qe){return-h(Qe)}),W(null,Me,Be)};function h(ee){return Math.ceil(ee.calcdata.maxLineWidth/2)}function v(ee,ie){return"clip"+ee._fullLayout._uid+"_scrollAreaBottomClip_"+ie.key}function p(ee,ie){return"clip"+ee._fullLayout._uid+"_columnBoundaryClippath_"+ie.calcdata.key+"_"+ie.specIndex}function T(ee){return[].concat.apply([],ee.map(function(ie){return ie})).map(function(ie){return ie.__data__})}function l(ee,ie,fe){function be(it){var et=it.rowBlocks;return J(et,et.length-1)+(et.length?Z(et[et.length-1],1/0):1)}var Ae=ee.selectAll("."+g.cn.scrollbarKit).data(e.repeat,e.keyFun);Ae.enter().append("g").classed(g.cn.scrollbarKit,!0).style("shape-rendering","geometricPrecision"),Ae.each(function(it){var et=it.scrollbarState;et.totalHeight=be(it),et.scrollableAreaHeight=it.groupHeight-N(it),et.currentlyVisibleHeight=Math.min(et.totalHeight,et.scrollableAreaHeight),et.ratio=et.currentlyVisibleHeight/et.totalHeight,et.barLength=Math.max(et.ratio*et.currentlyVisibleHeight,g.goldenRatio*g.scrollbarWidth),et.barWiggleRoom=et.currentlyVisibleHeight-et.barLength,et.wiggleRoom=Math.max(0,et.totalHeight-et.scrollableAreaHeight),et.topY=et.barWiggleRoom===0?0:it.scrollY/et.wiggleRoom*et.barWiggleRoom,et.bottomY=et.topY+et.barLength,et.dragMultiplier=et.wiggleRoom/et.barWiggleRoom}).attr("transform",function(it){var et=it.width+g.scrollbarWidth/2+g.scrollbarOffset;return a(et,N(it))});var Be=Ae.selectAll("."+g.cn.scrollbar).data(e.repeat,e.keyFun);Be.enter().append("g").classed(g.cn.scrollbar,!0);var Ie=Be.selectAll("."+g.cn.scrollbarSlider).data(e.repeat,e.keyFun);Ie.enter().append("g").classed(g.cn.scrollbarSlider,!0),Ie.attr("transform",function(it){return a(0,it.scrollbarState.topY||0)});var Ze=Ie.selectAll("."+g.cn.scrollbarGlyph).data(e.repeat,e.keyFun);Ze.enter().append("line").classed(g.cn.scrollbarGlyph,!0).attr("stroke","black").attr("stroke-width",g.scrollbarWidth).attr("stroke-linecap","round").attr("y1",g.scrollbarWidth/2),Ze.attr("y2",function(it){return it.scrollbarState.barLength-g.scrollbarWidth/2}).attr("stroke-opacity",function(it){return it.columnDragInProgress||!it.scrollbarState.barWiggleRoom||fe?0:.4}),Ze.transition().delay(0).duration(0),Ze.transition().delay(g.scrollbarHideDelay).duration(g.scrollbarHideDuration).attr("stroke-opacity",0);var at=Be.selectAll("."+g.cn.scrollbarCaptureZone).data(e.repeat,e.keyFun);at.enter().append("line").classed(g.cn.scrollbarCaptureZone,!0).attr("stroke","white").attr("stroke-opacity",.01).attr("stroke-width",g.scrollbarCaptureWidth).attr("stroke-linecap","butt").attr("y1",0).on("mousedown",function(it){var et=x.event.y,lt=this.getBoundingClientRect(),Me=it.scrollbarState,ge=et-lt.top,ce=x.scale.linear().domain([0,Me.scrollableAreaHeight]).range([0,Me.totalHeight]).clamp(!0);Me.topY<=ge&&ge<=Me.bottomY||Q(ie,ee,null,ce(ge-Me.barLength/2))(it)}).call(x.behavior.drag().origin(function(it){return x.event.stopPropagation(),it.scrollbarState.scrollbarScrollInProgress=!0,it}).on("drag",Q(ie,ee)).on("dragend",function(){})),at.attr("y2",function(it){return it.scrollbarState.scrollableAreaHeight}),ie._context.staticPlot&&(Ze.remove(),at.remove())}function _(ee,ie,fe,be){var Ae=w(fe),Be=S(Ae);d(Be);var Ie=E(Be);y(Ie);var Ze=b(Be),at=m(Ze);u(at),f(at,ie,be,ee),$(Be)}function w(ee){var ie=ee.selectAll("."+g.cn.columnCells).data(e.repeat,e.keyFun);return ie.enter().append("g").classed(g.cn.columnCells,!0),ie.exit().remove(),ie}function S(ee){var ie=ee.selectAll("."+g.cn.columnCell).data(s.splitToCells,function(fe){return fe.keyWithinBlock});return ie.enter().append("g").classed(g.cn.columnCell,!0),ie.exit().remove(),ie}function E(ee){var ie=ee.selectAll("."+g.cn.cellRect).data(e.repeat,function(fe){return fe.keyWithinBlock});return ie.enter().append("rect").classed(g.cn.cellRect,!0),ie}function m(ee){var ie=ee.selectAll("."+g.cn.cellText).data(e.repeat,function(fe){return fe.keyWithinBlock});return ie.enter().append("text").classed(g.cn.cellText,!0).style("cursor",function(){return"auto"}).on("mousedown",function(){x.event.stopPropagation()}),ie}function b(ee){var ie=ee.selectAll("."+g.cn.cellTextHolder).data(e.repeat,function(fe){return fe.keyWithinBlock});return ie.enter().append("g").classed(g.cn.cellTextHolder,!0).style("shape-rendering","geometricPrecision"),ie}function d(ee){ee.each(function(ie,fe){var be=ie.calcdata.cells.font,Ae=ie.column.specIndex,Be={size:F(be.size,Ae,fe),color:F(be.color,Ae,fe),family:F(be.family,Ae,fe),weight:F(be.weight,Ae,fe),style:F(be.style,Ae,fe),variant:F(be.variant,Ae,fe),textcase:F(be.textcase,Ae,fe),lineposition:F(be.lineposition,Ae,fe),shadow:F(be.shadow,Ae,fe)};ie.rowNumber=ie.key,ie.align=F(ie.calcdata.cells.align,Ae,fe),ie.cellBorderWidth=F(ie.calcdata.cells.line.width,Ae,fe),ie.font=Be})}function u(ee){ee.each(function(ie){t.font(x.select(this),ie.font)})}function y(ee){ee.attr("width",function(ie){return ie.column.columnWidth}).attr("stroke-width",function(ie){return ie.cellBorderWidth}).each(function(ie){var fe=x.select(this);c.stroke(fe,F(ie.calcdata.cells.line.color,ie.column.specIndex,ie.rowNumber)),c.fill(fe,F(ie.calcdata.cells.fill.color,ie.column.specIndex,ie.rowNumber))})}function f(ee,ie,fe,be){ee.text(function(Ae){var Be=Ae.column.specIndex,Ie=Ae.rowNumber,Ze=Ae.value,at=typeof Ze=="string",it=at&&Ze.match(/
/i),et=!at||it;Ae.mayHaveMarkup=at&&Ze.match(/[<&>]/);var lt=P(Ze);Ae.latex=lt;var Me=lt?"":F(Ae.calcdata.cells.prefix,Be,Ie)||"",ge=lt?"":F(Ae.calcdata.cells.suffix,Be,Ie)||"",ce=lt?null:F(Ae.calcdata.cells.format,Be,Ie)||null,ze=Me+(ce?M(ce)(Ae.value):Ae.value)+ge,tt;Ae.wrappingNeeded=!Ae.wrapped&&!et&&!lt&&(tt=L(ze)),Ae.cellHeightMayIncrease=it||lt||Ae.mayHaveMarkup||(tt===void 0?L(ze):tt),Ae.needsConvertToTspans=Ae.mayHaveMarkup||Ae.wrappingNeeded||Ae.latex;var nt;if(Ae.wrappingNeeded){var Qe=g.wrapSplitCharacter===" "?ze.replace(/Ae&&be.push(Be),Ae+=at}return be}function W(ee,ie,fe){var be=T(ie)[0];if(be!==void 0){var Ae=be.rowBlocks,Be=be.calcdata,Ie=J(Ae,Ae.length),Ze=be.calcdata.groupHeight-N(be),at=Be.scrollY=Math.max(0,Math.min(Ie-Ze,Be.scrollY)),it=U(Ae,at,Ze);it.length===1&&(it[0]===Ae.length-1?it.unshift(it[0]-1):it.push(it[0]+1)),it[0]%2&&it.reverse(),ie.each(function(et,lt){et.page=it[lt],et.scrollY=at}),ie.attr("transform",function(et){var lt=J(et.rowBlocks,et.page)-et.scrollY;return a(0,lt)}),ee&&(ue(ee,fe,ie,it,be.prevPages,be,0),ue(ee,fe,ie,it,be.prevPages,be,1),l(fe,ee))}}function Q(ee,ie,fe,be){return function(Be){var Ie=Be.calcdata?Be.calcdata:Be,Ze=ie.filter(function(lt){return Ie.key===lt.key}),at=fe||Ie.scrollbarState.dragMultiplier,it=Ie.scrollY;Ie.scrollY=be===void 0?Ie.scrollY+at*x.event.dy:be;var et=Ze.selectAll("."+g.cn.yColumn).selectAll("."+g.cn.columnBlock).filter(O);return W(ee,et,Ze),Ie.scrollY===it}}function ue(ee,ie,fe,be,Ae,Be,Ie){var Ze=be[Ie]!==Ae[Ie];Ze&&(clearTimeout(Be.currentRepaint[Ie]),Be.currentRepaint[Ie]=setTimeout(function(){var at=fe.filter(function(it,et){return et===Ie&&be[et]!==Ae[et]});_(ee,ie,at,fe),Ae[Ie]=be[Ie]}))}function se(ee,ie,fe,be){return function(){var Be=x.select(ie.parentNode);Be.each(function(Ie){var Ze=Ie.fragments;Be.selectAll("tspan.line").each(function(ze,tt){Ze[tt].width=this.getComputedTextLength()});var at=Ze[Ze.length-1].width,it=Ze.slice(0,-1),et=[],lt,Me,ge=0,ce=Ie.column.columnWidth-2*g.cellPad;for(Ie.value="";it.length;)lt=it.shift(),Me=lt.width+at,ge+Me>ce&&(Ie.value+=et.join(g.wrapSpacer)+g.lineBreaker,et=[],ge=0),et.push(lt.text),ge+=Me;ge&&(Ie.value+=et.join(g.wrapSpacer)),Ie.wrapped=!0}),Be.selectAll("tspan.line").remove(),f(Be.select("."+g.cn.cellText),fe,ee,be),x.select(ie.parentNode.parentNode).call($)}}function he(ee,ie,fe,be,Ae){return function(){if(!Ae.settledY){var Ie=x.select(ie.parentNode),Ze=ne(Ae),at=Ae.key-Ze.firstRowIndex,it=Ze.rows[at].rowHeight,et=Ae.cellHeightMayIncrease?ie.parentNode.getBoundingClientRect().height+2*g.cellPad:it,lt=Math.max(et,it),Me=lt-Ze.rows[at].rowHeight;Me&&(Ze.rows[at].rowHeight=lt,ee.selectAll("."+g.cn.columnCell).call($),W(null,ee.filter(O),0),l(fe,be,!0)),Ie.attr("transform",function(){var ge=this,ce=ge.parentNode,ze=ce.getBoundingClientRect(),tt=x.select(ge.parentNode).select("."+g.cn.cellRect).node().getBoundingClientRect(),nt=ge.transform.baseVal.consolidate(),Qe=tt.top-ze.top+(nt?nt.matrix.f:g.cellPad);return a(G(Ae,x.select(ge.parentNode).select("."+g.cn.cellTextHolder).node().getBoundingClientRect().width),Qe)}),Ae.settledY=!0}}}function G(ee,ie){switch(ee.align){case"left":return g.cellPad;case"right":return ee.column.columnWidth-(ie||0)-g.cellPad;case"center":return(ee.column.columnWidth-(ie||0))/2;default:return g.cellPad}}function $(ee){ee.attr("transform",function(ie){var fe=ie.rowBlocks[0].auxiliaryBlocks.reduce(function(Ie,Ze){return Ie+Z(Ze,1/0)},0),be=ne(ie),Ae=Z(be,ie.key),Be=Ae+fe;return a(0,Be)}).selectAll("."+g.cn.cellRect).attr("height",function(ie){return j(ne(ie),ie.key).rowHeight})}function J(ee,ie){for(var fe=0,be=ie-1;be>=0;be--)fe+=re(ee[be]);return fe}function Z(ee,ie){for(var fe=0,be=0;beM.length&&(A=A.slice(0,M.length)):A=[],t=0;t90&&(v-=180,i=-i),{angle:v,flip:i,p:x.c2p(e,A,M),offsetMultplier:n}}}}),xH=Ye({"src/traces/carpet/plot.js"(X,H){"use strict";var g=_n(),x=Bo(),A=qk(),M=Hk(),e=_H(),t=jl(),r=ta(),o=r.strRotate,a=r.strTranslate,i=oh();H.exports=function(_,w,S,E){var m=_._context.staticPlot,b=w.xaxis,d=w.yaxis,u=_._fullLayout,y=u._clips;r.makeTraceGroups(E,S,"trace").each(function(f){var P=g.select(this),L=f[0],z=L.trace,F=z.aaxis,B=z.baxis,O=r.ensureSingle(P,"g","minorlayer"),I=r.ensureSingle(P,"g","majorlayer"),N=r.ensureSingle(P,"g","boundarylayer"),U=r.ensureSingle(P,"g","labellayer");P.style("opacity",z.opacity),s(b,d,I,F,"a",F._gridlines,!0,m),s(b,d,I,B,"b",B._gridlines,!0,m),s(b,d,O,F,"a",F._minorgridlines,!0,m),s(b,d,O,B,"b",B._minorgridlines,!0,m),s(b,d,N,F,"a-boundary",F._boundarylines,m),s(b,d,N,B,"b-boundary",B._boundarylines,m);var W=c(_,b,d,z,L,U,F._labels,"a-label"),Q=c(_,b,d,z,L,U,B._labels,"b-label");h(_,U,z,L,b,d,W,Q),n(z,L,y,b,d)})};function n(l,_,w,S,E){var m,b,d,u,y=w.select("#"+l._clipPathId);y.size()||(y=w.append("clipPath").classed("carpetclip",!0));var f=r.ensureSingle(y,"path","carpetboundary"),P=_.clipsegments,L=[];for(u=0;u0?"start":"end","data-notex":1}).call(x.font,P.font).text(P.text).call(t.convertToTspans,l),I=x.bBox(this);O.attr("transform",a(z.p[0],z.p[1])+o(z.angle)+a(P.axis.labelpadding*B,I.height*.3)),y=Math.max(y,I.width+P.axis.labelpadding)}),u.exit().remove(),f.maxExtent=y,f}function h(l,_,w,S,E,m,b,d){var u,y,f,P,L=r.aggNums(Math.min,null,w.a),z=r.aggNums(Math.max,null,w.a),F=r.aggNums(Math.min,null,w.b),B=r.aggNums(Math.max,null,w.b);u=.5*(L+z),y=F,f=w.ab2xy(u,y,!0),P=w.dxyda_rough(u,y),b.angle===void 0&&r.extendFlat(b,e(w,E,m,f,w.dxydb_rough(u,y))),T(l,_,w,S,f,P,w.aaxis,E,m,b,"a-title"),u=L,y=.5*(F+B),f=w.ab2xy(u,y,!0),P=w.dxydb_rough(u,y),d.angle===void 0&&r.extendFlat(d,e(w,E,m,f,w.dxyda_rough(u,y))),T(l,_,w,S,f,P,w.baxis,E,m,d,"b-title")}var v=i.LINE_SPACING,p=(1-i.MID_SHIFT)/v+1;function T(l,_,w,S,E,m,b,d,u,y,f){var P=[];b.title.text&&P.push(b.title.text);var L=_.selectAll("text."+f).data(P),z=y.maxExtent;L.enter().append("text").classed(f,!0),L.each(function(){var F=e(w,d,u,E,m);["start","both"].indexOf(b.showticklabels)===-1&&(z=0);var B=b.title.font.size;z+=B+b.title.offset;var O=y.angle+(y.flip<0?180:0),I=(O-F.angle+450)%360,N=I>90&&I<270,U=g.select(this);U.text(b.title.text).call(t.convertToTspans,l),N&&(z=(-t.lineCount(U)+p)*v*B-z),U.attr("transform",a(F.p[0],F.p[1])+o(F.angle)+a(0,z)).attr("text-anchor","middle").call(x.font,b.title.font)}),L.exit().remove()}}}),bH=Ye({"src/traces/carpet/cheater_basis.js"(X,H){"use strict";var g=ta().isArrayOrTypedArray;H.exports=function(x,A,M){var e,t,r,o,a,i,n=[],s=g(x)?x.length:x,c=g(A)?A.length:A,h=g(x)?x:null,v=g(A)?A:null;h&&(r=(h.length-1)/(h[h.length-1]-h[0])/(s-1)),v&&(o=(v.length-1)/(v[v.length-1]-v[0])/(c-1));var p,T=1/0,l=-1/0;for(t=0;t=10)return null;for(var e=1/0,t=-1/0,r=A.length,o=0;o0&&(Z=M.dxydi([],W-1,ue,0,se),ee.push(he[0]+Z[0]/3),ie.push(he[1]+Z[1]/3),re=M.dxydi([],W-1,ue,1,se),ee.push(J[0]-re[0]/3),ie.push(J[1]-re[1]/3)),ee.push(J[0]),ie.push(J[1]),he=J;else for(W=M.a2i(U),G=Math.floor(Math.max(0,Math.min(F-2,W))),$=W-G,fe.length=F,fe.crossLength=B,fe.xy=function(be){return M.evalxy([],W,be)},fe.dxy=function(be,Ae){return M.dxydj([],G,be,$,Ae)},Q=0;Q0&&(ne=M.dxydj([],G,Q-1,$,0),ee.push(he[0]+ne[0]/3),ie.push(he[1]+ne[1]/3),j=M.dxydj([],G,Q-1,$,1),ee.push(J[0]-j[0]/3),ie.push(J[1]-j[1]/3)),ee.push(J[0]),ie.push(J[1]),he=J;return fe.axisLetter=e,fe.axis=E,fe.crossAxis=y,fe.value=U,fe.constvar=t,fe.index=h,fe.x=ee,fe.y=ie,fe.smoothing=y.smoothing,fe}function N(U){var W,Q,ue,se,he,G=[],$=[],J={};if(J.length=S.length,J.crossLength=u.length,e==="b")for(ue=Math.max(0,Math.min(B-2,U)),he=Math.min(1,Math.max(0,U-ue)),J.xy=function(Z){return M.evalxy([],Z,U)},J.dxy=function(Z,re){return M.dxydi([],Z,ue,re,he)},W=0;WS.length-1)&&m.push(x(N(o),{color:E.gridcolor,width:E.gridwidth,dash:E.griddash}));for(h=s;hS.length-1)&&!(T<0||T>S.length-1))for(l=S[a],_=S[T],r=0;rS[S.length-1])&&b.push(x(I(p),{color:E.minorgridcolor,width:E.minorgridwidth,dash:E.minorgriddash})));E.startline&&d.push(x(N(0),{color:E.startlinecolor,width:E.startlinewidth})),E.endline&&d.push(x(N(S.length-1),{color:E.endlinecolor,width:E.endlinewidth}))}else{for(i=5e-15,n=[Math.floor((S[S.length-1]-E.tick0)/E.dtick*(1+i)),Math.ceil((S[0]-E.tick0)/E.dtick/(1+i))].sort(function(U,W){return U-W}),s=n[0],c=n[1],h=s;h<=c;h++)v=E.tick0+E.dtick*h,m.push(x(I(v),{color:E.gridcolor,width:E.gridwidth,dash:E.griddash}));for(h=s-1;hS[S.length-1])&&b.push(x(I(p),{color:E.minorgridcolor,width:E.minorgridwidth,dash:E.minorgriddash}));E.startline&&d.push(x(I(S[0]),{color:E.startlinecolor,width:E.startlinewidth})),E.endline&&d.push(x(I(S[S.length-1]),{color:E.endlinecolor,width:E.endlinewidth}))}}}}),AH=Ye({"src/traces/carpet/calc_labels.js"(X,H){"use strict";var g=Co(),x=Oo().extendFlat;H.exports=function(M,e){var t,r,o,a,i,n=e._labels=[],s=e._gridlines;for(t=0;t=0;t--)r[s-t]=x[c][t],o[s-t]=A[c][t];for(a.push({x:r,y:o,bicubic:i}),t=c,r=[],o=[];t>=0;t--)r[c-t]=x[t][0],o[c-t]=A[t][0];return a.push({x:r,y:o,bicubic:n}),a}}}),MH=Ye({"src/traces/carpet/smooth_fill_2d_array.js"(X,H){"use strict";var g=ta();H.exports=function(A,M,e){var t,r,o,a=[],i=[],n=A[0].length,s=A.length;function c(Q,ue){var se=0,he,G=0;return Q>0&&(he=A[ue][Q-1])!==void 0&&(G++,se+=he),Q0&&(he=A[ue-1][Q])!==void 0&&(G++,se+=he),ue0&&r0&&tu);return g.log("Smoother converged to",y,"after",P,"iterations"),A}}}),EH=Ye({"src/traces/carpet/constants.js"(X,H){"use strict";H.exports={RELATIVE_CULL_TOLERANCE:1e-6}}}),kH=Ye({"src/traces/carpet/catmull_rom.js"(X,H){"use strict";var g=.5;H.exports=function(A,M,e,t){var r=A[0]-M[0],o=A[1]-M[1],a=e[0]-M[0],i=e[1]-M[1],n=Math.pow(r*r+o*o,g/2),s=Math.pow(a*a+i*i,g/2),c=(s*s*r-n*n*a)*t,h=(s*s*o-n*n*i)*t,v=s*(n+s)*3,p=n*(n+s)*3;return[[M[0]+(v&&c/v),M[1]+(v&&h/v)],[M[0]-(p&&c/p),M[1]-(p&&h/p)]]}}}),CH=Ye({"src/traces/carpet/compute_control_points.js"(X,H){"use strict";var g=kH(),x=ta().ensureArray;function A(M,e,t){var r=-.5*t[0]+1.5*e[0],o=-.5*t[1]+1.5*e[1];return[(2*r+M[0])/3,(2*o+M[1])/3]}H.exports=function(e,t,r,o,a,i){var n,s,c,h,v,p,T,l,_,w,S=r[0].length,E=r.length,m=a?3*S-2:S,b=i?3*E-2:E;for(e=x(e,b),t=x(t,b),c=0;cv&&mT&&bp||bl},o.setScale=function(){var m=o._x,b=o._y,d=A(o._xctrl,o._yctrl,m,b,c.smoothing,h.smoothing);o._xctrl=d[0],o._yctrl=d[1],o.evalxy=M([o._xctrl,o._yctrl],n,s,c.smoothing,h.smoothing),o.dxydi=e([o._xctrl,o._yctrl],c.smoothing,h.smoothing),o.dxydj=t([o._xctrl,o._yctrl],c.smoothing,h.smoothing)},o.i2a=function(m){var b=Math.max(0,Math.floor(m[0]),n-2),d=m[0]-b;return(1-d)*a[b]+d*a[b+1]},o.j2b=function(m){var b=Math.max(0,Math.floor(m[1]),n-2),d=m[1]-b;return(1-d)*i[b]+d*i[b+1]},o.ij2ab=function(m){return[o.i2a(m[0]),o.j2b(m[1])]},o.a2i=function(m){var b=Math.max(0,Math.min(x(m,a),n-2)),d=a[b],u=a[b+1];return Math.max(0,Math.min(n-1,b+(m-d)/(u-d)))},o.b2j=function(m){var b=Math.max(0,Math.min(x(m,i),s-2)),d=i[b],u=i[b+1];return Math.max(0,Math.min(s-1,b+(m-d)/(u-d)))},o.ab2ij=function(m){return[o.a2i(m[0]),o.b2j(m[1])]},o.i2c=function(m,b){return o.evalxy([],m,b)},o.ab2xy=function(m,b,d){if(!d&&(ma[n-1]|bi[s-1]))return[!1,!1];var u=o.a2i(m),y=o.b2j(b),f=o.evalxy([],u,y);if(d){var P=0,L=0,z=[],F,B,O,I;ma[n-1]?(F=n-2,B=1,P=(m-a[n-1])/(a[n-1]-a[n-2])):(F=Math.max(0,Math.min(n-2,Math.floor(u))),B=u-F),bi[s-1]?(O=s-2,I=1,L=(b-i[s-1])/(i[s-1]-i[s-2])):(O=Math.max(0,Math.min(s-2,Math.floor(y))),I=y-O),P&&(o.dxydi(z,F,O,B,I),f[0]+=z[0]*P,f[1]+=z[1]*P),L&&(o.dxydj(z,F,O,B,I),f[0]+=z[0]*L,f[1]+=z[1]*L)}return f},o.c2p=function(m,b,d){return[b.c2p(m[0]),d.c2p(m[1])]},o.p2x=function(m,b,d){return[b.p2c(m[0]),d.p2c(m[1])]},o.dadi=function(m){var b=Math.max(0,Math.min(a.length-2,m));return a[b+1]-a[b]},o.dbdj=function(m){var b=Math.max(0,Math.min(i.length-2,m));return i[b+1]-i[b]},o.dxyda=function(m,b,d,u){var y=o.dxydi(null,m,b,d,u),f=o.dadi(m,d);return[y[0]/f,y[1]/f]},o.dxydb=function(m,b,d,u){var y=o.dxydj(null,m,b,d,u),f=o.dbdj(b,u);return[y[0]/f,y[1]/f]},o.dxyda_rough=function(m,b,d){var u=_*(d||.1),y=o.ab2xy(m+u,b,!0),f=o.ab2xy(m-u,b,!0);return[(y[0]-f[0])*.5/u,(y[1]-f[1])*.5/u]},o.dxydb_rough=function(m,b,d){var u=w*(d||.1),y=o.ab2xy(m,b+u,!0),f=o.ab2xy(m,b-u,!0);return[(y[0]-f[0])*.5/u,(y[1]-f[1])*.5/u]},o.dpdx=function(m){return m._m},o.dpdy=function(m){return m._m}}}}),DH=Ye({"src/traces/carpet/calc.js"(X,H){"use strict";var g=Co(),x=ta().isArray1D,A=bH(),M=wH(),e=TH(),t=AH(),r=SH(),o=X2(),a=MH(),i=Z2(),n=RH();H.exports=function(c,h){var v=g.getFromId(c,h.xaxis),p=g.getFromId(c,h.yaxis),T=h.aaxis,l=h.baxis,_=h.x,w=h.y,S=[];_&&x(_)&&S.push("x"),w&&x(w)&&S.push("y"),S.length&&i(h,T,l,"a","b",S);var E=h._a=h._a||h.a,m=h._b=h._b||h.b;_=h._x||h.x,w=h._y||h.y;var b={};if(h._cheater){var d=T.cheatertype==="index"?E.length:E,u=l.cheatertype==="index"?m.length:m;_=A(d,u,h.cheaterslope)}h._x=_=o(_),h._y=w=o(w),a(_,E,m),a(w,E,m),n(h),h.setScale();var y=M(_),f=M(w),P=.5*(y[1]-y[0]),L=.5*(y[1]+y[0]),z=.5*(f[1]-f[0]),F=.5*(f[1]+f[0]),B=1.3;return y=[L-P*B,L+P*B],f=[F-z*B,F+z*B],h._extremes[v._id]=g.findExtremes(v,y,{padded:!0}),h._extremes[p._id]=g.findExtremes(p,f,{padded:!0}),e(h,"a","b"),e(h,"b","a"),t(h,T),t(h,l),b.clipsegments=r(h._xctrl,h._yctrl,T,l),b.x=_,b.y=w,b.a=E,b.b=m,[b]}}}),zH=Ye({"src/traces/carpet/index.js"(X,H){"use strict";H.exports={attributes:LT(),supplyDefaults:yH(),plot:xH(),calc:DH(),animatable:!0,isContainer:!0,moduleType:"trace",name:"carpet",basePlotModule:Pf(),categories:["cartesian","svg","carpet","carpetAxis","notLegendIsolatable","noMultiCategory","noHover","noSortingByValue"],meta:{}}}}),FH=Ye({"lib/carpet.js"(X,H){"use strict";H.exports=zH()}}),Gk=Ye({"src/traces/scattercarpet/attributes.js"(X,H){"use strict";var g=$d(),x=Pc(),A=Pl(),M=xs().hovertemplateAttrs,e=xs().texttemplateAttrs,t=tu(),r=Oo().extendFlat,o=x.marker,a=x.line,i=o.line;H.exports={carpet:{valType:"string",editType:"calc"},a:{valType:"data_array",editType:"calc"},b:{valType:"data_array",editType:"calc"},mode:r({},x.mode,{dflt:"markers"}),text:r({},x.text,{}),texttemplate:e({editType:"plot"},{keys:["a","b","text"]}),hovertext:r({},x.hovertext,{}),line:{color:a.color,width:a.width,dash:a.dash,backoff:a.backoff,shape:r({},a.shape,{values:["linear","spline"]}),smoothing:a.smoothing,editType:"calc"},connectgaps:x.connectgaps,fill:r({},x.fill,{values:["none","toself","tonext"],dflt:"none"}),fillcolor:g(),marker:r({symbol:o.symbol,opacity:o.opacity,maxdisplayed:o.maxdisplayed,angle:o.angle,angleref:o.angleref,standoff:o.standoff,size:o.size,sizeref:o.sizeref,sizemin:o.sizemin,sizemode:o.sizemode,line:r({width:i.width,editType:"calc"},t("marker.line")),gradient:o.gradient,editType:"calc"},t("marker")),textfont:x.textfont,textposition:x.textposition,selected:x.selected,unselected:x.unselected,hoverinfo:r({},A.hoverinfo,{flags:["a","b","text","name"]}),hoveron:x.hoveron,hovertemplate:M(),zorder:x.zorder}}}),OH=Ye({"src/traces/scattercarpet/defaults.js"(X,H){"use strict";var g=ta(),x=Tv(),A=uu(),M=md(),e=Dd(),t=n1(),r=zd(),o=ev(),a=Gk();H.exports=function(n,s,c,h){function v(E,m){return g.coerce(n,s,a,E,m)}v("carpet"),s.xaxis="x",s.yaxis="y";var p=v("a"),T=v("b"),l=Math.min(p.length,T.length);if(!l){s.visible=!1;return}s._length=l,v("text"),v("texttemplate"),v("hovertext");var _=l0?b=E.labelprefix.replace(/ = $/,""):b=E._hovertitle,l.push(b+": "+m.toFixed(3)+E.labelsuffix)}if(!v.hovertemplate){var w=h.hi||v.hoverinfo,S=w.split("+");S.indexOf("all")!==-1&&(S=["a","b","text"]),S.indexOf("a")!==-1&&_(p.aaxis,h.a),S.indexOf("b")!==-1&&_(p.baxis,h.b),l.push("y: "+a.yLabel),S.indexOf("text")!==-1&&x(h,v,l),a.extraText=l.join("
")}return o}}}),VH=Ye({"src/traces/scattercarpet/event_data.js"(X,H){"use strict";H.exports=function(x,A,M,e,t){var r=e[t];return x.a=r.a,x.b=r.b,x.y=r.y,x}}}),qH=Ye({"src/traces/scattercarpet/index.js"(X,H){"use strict";H.exports={attributes:Gk(),supplyDefaults:OH(),colorbar:cp(),formatLabels:BH(),calc:NH(),plot:UH(),style:ed().style,styleOnSelect:ed().styleOnSelect,hoverPoints:jH(),selectPoints:u1(),eventData:VH(),moduleType:"trace",name:"scattercarpet",basePlotModule:Pf(),categories:["svg","carpet","symbols","showLegend","carpetDependent","zoomScale"],meta:{}}}}),HH=Ye({"lib/scattercarpet.js"(X,H){"use strict";H.exports=qH()}}),Wk=Ye({"src/traces/contourcarpet/attributes.js"(X,H){"use strict";var g=h1(),x=U_(),A=tu(),M=Oo().extendFlat,e=x.contours;H.exports=M({carpet:{valType:"string",editType:"calc"},z:g.z,a:g.x,a0:g.x0,da:g.dx,b:g.y,b0:g.y0,db:g.dy,text:g.text,hovertext:g.hovertext,transpose:g.transpose,atype:g.xtype,btype:g.ytype,fillcolor:x.fillcolor,autocontour:x.autocontour,ncontours:x.ncontours,contours:{type:e.type,start:e.start,end:e.end,size:e.size,coloring:{valType:"enumerated",values:["fill","lines","none"],dflt:"fill",editType:"calc"},showlines:e.showlines,showlabels:e.showlabels,labelfont:e.labelfont,labelformat:e.labelformat,operation:e.operation,value:e.value,editType:"calc",impliedEdits:{autocontour:!1}},line:{color:x.line.color,width:x.line.width,dash:x.line.dash,smoothing:x.line.smoothing,editType:"plot"},zorder:x.zorder},A("",{cLetter:"z",autoColorDflt:!1}))}}),Zk=Ye({"src/traces/contourcarpet/defaults.js"(X,H){"use strict";var g=ta(),x=W2(),A=Wk(),M=bM(),e=o3(),t=s3();H.exports=function(o,a,i,n){function s(p,T){return g.coerce(o,a,A,p,T)}function c(p){return g.coerce2(o,a,A,p)}if(s("carpet"),o.a&&o.b){var h=x(o,a,s,n,"a","b");if(!h){a.visible=!1;return}s("text");var v=s("contours.type")==="constraint";v?M(o,a,s,n,i,{hasHover:!1}):(e(o,a,s,c),t(o,a,s,n,{hasHover:!1}))}else a._defaultColor=i,a._length=null;s("zorder")}}}),GH=Ye({"src/traces/contourcarpet/calc.js"(X,H){"use strict";var g=jp(),x=ta(),A=Z2(),M=X2(),e=Y2(),t=K2(),r=nM(),o=Zk(),a=PT(),i=hM();H.exports=function(c,h){var v=h._carpetTrace=a(c,h);if(!(!v||!v.visible||v.visible==="legendonly")){if(!h.a||!h.b){var p=c.data[v.index],T=c.data[h.index];T.a||(T.a=p.a),T.b||(T.b=p.b),o(T,h,h._defaultColor,c._fullLayout)}var l=n(c,h);return i(h,h._z),l}};function n(s,c){var h=c._carpetTrace,v=h.aaxis,p=h.baxis,T,l,_,w,S,E,m;v._minDtick=0,p._minDtick=0,x.isArray1D(c.z)&&A(c,v,p,"a","b",["z"]),T=c._a=c._a||c.a,w=c._b=c._b||c.b,T=T?v.makeCalcdata(c,"_a"):[],w=w?p.makeCalcdata(c,"_b"):[],l=c.a0||0,_=c.da||1,S=c.b0||0,E=c.db||1,m=c._z=M(c._z||c.z,c.transpose),c._emptypoints=t(m),e(m,c._emptypoints);var b=x.maxRowLength(m),d=c.xtype==="scaled"?"":T,u=r(c,d,l,_,b,v),y=c.ytype==="scaled"?"":w,f=r(c,y,S,E,m.length,p),P={a:u,b:f,z:m};return c.contours.type==="levels"&&c.contours.coloring!=="none"&&g(s,c,{vals:m,containerStr:"",cLetter:"z"}),[P]}}}),WH=Ye({"src/traces/carpet/axis_aligned_line.js"(X,H){"use strict";var g=ta().isArrayOrTypedArray;H.exports=function(x,A,M,e){var t,r,o,a,i,n,s,c,h,v,p,T,l,_=g(M)?"a":"b",w=_==="a"?x.aaxis:x.baxis,S=w.smoothing,E=_==="a"?x.a2i:x.b2j,m=_==="a"?M:e,b=_==="a"?e:M,d=_==="a"?A.a.length:A.b.length,u=_==="a"?A.b.length:A.a.length,y=Math.floor(_==="a"?x.b2j(b):x.a2i(b)),f=_==="a"?function(ue){return x.evalxy([],ue,y)}:function(ue){return x.evalxy([],y,ue)};S&&(o=Math.max(0,Math.min(u-2,y)),a=y-o,r=_==="a"?function(ue,se){return x.dxydi([],ue,o,se,a)}:function(ue,se){return x.dxydj([],o,ue,a,se)});var P=E(m[0]),L=E(m[1]),z=P0?Math.floor:Math.ceil,O=z>0?Math.ceil:Math.floor,I=z>0?Math.min:Math.max,N=z>0?Math.max:Math.min,U=B(P+F),W=O(L-F);s=f(P);var Q=[[s]];for(t=U;t*z=0;fe--)j=N.clipsegments[fe],ee=x([],j.x,P.c2p),ie=x([],j.y,L.c2p),ee.reverse(),ie.reverse(),be.push(A(ee,ie,j.bicubic));var Ae="M"+be.join("L")+"Z";S(F,N.clipsegments,P,L,se,G),E(O,F,P,L,ne,J,$,I,N,G,Ae),p(F,ue,d,B,Q,u,I),M.setClipUrl(F,I._clipPathId,d)})};function v(b,d){var u,y,f,P,L,z,F,B,O;for(u=0;uue&&(y.max=ue),y.len=y.max-y.min}function l(b,d,u){var y=b.getPointAtLength(d),f=b.getPointAtLength(u),P=f.x-y.x,L=f.y-y.y,z=Math.sqrt(P*P+L*L);return[P/z,L/z]}function _(b){var d=Math.sqrt(b[0]*b[0]+b[1]*b[1]);return[b[0]/d,b[1]/d]}function w(b,d){var u=Math.abs(b[0]*d[0]+b[1]*d[1]),y=Math.sqrt(1-u*u);return y/u}function S(b,d,u,y,f,P){var L,z,F,B,O=e.ensureSingle(b,"g","contourbg"),I=O.selectAll("path").data(P==="fill"&&!f?[0]:[]);I.enter().append("path"),I.exit().remove();var N=[];for(B=0;B=0&&(U=ee,Q=ue):Math.abs(N[1]-U[1])=0&&(U=ee,Q=ue):e.log("endpt to newendpt is not vert. or horz.",N,U,ee)}if(Q>=0)break;B+=ne(N,U),N=U}if(Q===d.edgepaths.length){e.log("unclosed perimeter path");break}F=Q,I=O.indexOf(F)===-1,I&&(F=O[0],B+=ne(N,U)+"Z",N=null)}for(F=0;Fm):E=z>f,m=z;var F=v(f,P,L,z);F.pos=y,F.yc=(f+z)/2,F.i=u,F.dir=E?"increasing":"decreasing",F.x=F.pos,F.y=[L,P],b&&(F.orig_p=s[u]),w&&(F.tx=n.text[u]),S&&(F.htx=n.hovertext[u]),d.push(F)}else d.push({pos:y,empty:!0})}return n._extremes[h._id]=A.findExtremes(h,g.concat(l,T),{padded:!0}),d.length&&(d[0].t={labels:{open:x(i,"open:")+" ",high:x(i,"high:")+" ",low:x(i,"low:")+" ",close:x(i,"close:")+" "}}),d}function a(i,n,s){var c=s._minDiff;if(!c){var h=i._fullData,v=[];c=1/0;var p;for(p=0;p"+_.labels[z]+g.hoverLabelText(T,F,l.yhoverformat)):(O=x.extendFlat({},S),O.y0=O.y1=B,O.yLabelVal=F,O.yLabel=_.labels[z]+g.hoverLabelText(T,F,l.yhoverformat),O.name="",w.push(O),P[F]=O)}return w}function n(s,c,h,v){var p=s.cd,T=s.ya,l=p[0].trace,_=p[0].t,w=a(s,c,h,v);if(!w)return[];var S=w.index,E=p[S],m=w.index=E.i,b=E.dir;function d(F){return _.labels[F]+g.hoverLabelText(T,l[F][m],l.yhoverformat)}var u=E.hi||l.hoverinfo,y=u.split("+"),f=u==="all",P=f||y.indexOf("y")!==-1,L=f||y.indexOf("text")!==-1,z=P?[d("open"),d("high"),d("low"),d("close")+" "+r[b]]:[];return L&&e(E,l,z),w.extraText=z.join("
"),w.y0=w.y1=T.c2p(E.yc,!0),[w]}H.exports={hoverPoints:o,hoverSplit:i,hoverOnPoints:n}}}),Jk=Ye({"src/traces/ohlc/select.js"(X,H){"use strict";H.exports=function(x,A){var M=x.cd,e=x.xaxis,t=x.yaxis,r=[],o,a=M[0].t.bPos||0;if(A===!1)for(o=0;oc?function(l){return l<=0}:function(l){return l>=0};a.c2g=function(l){var _=a.c2l(l)-s;return(T(_)?_:0)+p},a.g2c=function(l){return a.l2c(l+s-p)},a.g2p=function(l){return l*v},a.c2p=function(l){return a.g2p(a.c2g(l))}}}function t(a,i){return i==="degrees"?A(a):a}function r(a,i){return i==="degrees"?M(a):a}function o(a,i){var n=a.type;if(n==="linear"){var s=a.d2c,c=a.c2d;a.d2c=function(h,v){return t(s(h),v)},a.c2d=function(h,v){return c(r(h,v))}}a.makeCalcdata=function(h,v){var p=h[v],T=h._length,l,_,w=function(d){return a.d2c(d,h.thetaunit)};if(p)for(l=new Array(T),_=0;_0?d:1/0},E=A(w,S),m=g.mod(E+1,w.length);return[w[E],w[m]]}function v(_){return Math.abs(_)>1e-10?_:0}function p(_,w,S){w=w||0,S=S||0;for(var E=_.length,m=new Array(E),b=0;b0?1:0}function x(r){var o=r[0],a=r[1];if(!isFinite(o)||!isFinite(a))return[1,0];var i=(o+1)*(o+1)+a*a;return[(o*o+a*a-1)/i,2*a/i]}function A(r,o){var a=o[0],i=o[1];return[a*r.radius+r.cx,-i*r.radius+r.cy]}function M(r,o){return o*r.radius}function e(r,o,a,i){var n=A(r,x([a,o])),s=n[0],c=n[1],h=A(r,x([i,o])),v=h[0],p=h[1];if(o===0)return["M"+s+","+c,"L"+v+","+p].join(" ");var T=M(r,1/Math.abs(o));return["M"+s+","+c,"A"+T+","+T+" 0 0,"+(o<0?1:0)+" "+v+","+p].join(" ")}function t(r,o,a,i){var n=M(r,1/(o+1)),s=A(r,x([o,a])),c=s[0],h=s[1],v=A(r,x([o,i])),p=v[0],T=v[1];if(g(a)!==g(i)){var l=A(r,x([o,0])),_=l[0],w=l[1];return["M"+c+","+h,"A"+n+","+n+" 0 0,"+(0at?(it=ie,et=ie*at,ge=(fe-et)/Z.h/2,lt=[j[0],j[1]],Me=[ee[0]+ge,ee[1]-ge]):(it=fe/at,et=fe,ge=(ie-it)/Z.w/2,lt=[j[0]+ge,j[1]-ge],Me=[ee[0],ee[1]]),$.xLength2=it,$.yLength2=et,$.xDomain2=lt,$.yDomain2=Me;var ce=$.xOffset2=Z.l+Z.w*lt[0],ze=$.yOffset2=Z.t+Z.h*(1-Me[1]),tt=$.radius=it/Be,nt=$.innerRadius=$.getHole(G)*tt,Qe=$.cx=ce-tt*Ae[0],Ct=$.cy=ze+tt*Ae[3],St=$.cxx=Qe-ce,Ot=$.cyy=Ct-ze,jt=re.side,ur;jt==="counterclockwise"?(ur=jt,jt="top"):jt==="clockwise"&&(ur=jt,jt="bottom"),$.radialAxis=$.mockAxis(he,G,re,{_id:"x",side:jt,_trueSide:ur,domain:[nt/Z.w,tt/Z.w]}),$.angularAxis=$.mockAxis(he,G,ne,{side:"right",domain:[0,Math.PI],autorange:!1}),$.doAutoRange(he,G),$.updateAngularAxis(he,G),$.updateRadialAxis(he,G),$.updateRadialAxisTitle(he,G),$.xaxis=$.mockCartesianAxis(he,G,{_id:"x",domain:lt}),$.yaxis=$.mockCartesianAxis(he,G,{_id:"y",domain:Me});var ar=$.pathSubplot();$.clipPaths.forTraces.select("path").attr("d",ar).attr("transform",t(St,Ot)),J.frontplot.attr("transform",t(ce,ze)).call(o.setClipUrl,$._hasClipOnAxisFalse?null:$.clipIds.forTraces,$.gd),J.bg.attr("d",ar).attr("transform",t(Qe,Ct)).call(r.fill,G.bgcolor)},U.mockAxis=function(he,G,$,J){var Z=M.extendFlat({},$,J);return s(Z,G,he),Z},U.mockCartesianAxis=function(he,G,$){var J=this,Z=J.isSmith,re=$._id,ne=M.extendFlat({type:"linear"},$);n(ne,he);var j={x:[0,2],y:[1,3]};return ne.setRange=function(){var ee=J.sectorBBox,ie=j[re],fe=J.radialAxis._rl,be=(fe[1]-fe[0])/(1-J.getHole(G));ne.range=[ee[ie[0]]*be,ee[ie[1]]*be]},ne.isPtWithinRange=re==="x"&&!Z?function(ee){return J.isPtInside(ee)}:function(){return!0},ne.setRange(),ne.setScale(),ne},U.doAutoRange=function(he,G){var $=this,J=$.gd,Z=$.radialAxis,re=$.getRadial(G);c(J,Z);var ne=Z.range;if(re.range=ne.slice(),re._input.range=ne.slice(),Z._rl=[Z.r2l(ne[0],null,"gregorian"),Z.r2l(ne[1],null,"gregorian")],Z.minallowed!==void 0){var j=Z.r2l(Z.minallowed);Z._rl[0]>Z._rl[1]?Z._rl[1]=Math.max(Z._rl[1],j):Z._rl[0]=Math.max(Z._rl[0],j)}if(Z.maxallowed!==void 0){var ee=Z.r2l(Z.maxallowed);Z._rl[0]90&&fe<=270&&(be.tickangle=180);var Ie=Be?function(tt){var nt=z($,f([tt.x,0]));return t(nt[0]-j,nt[1]-ee)}:function(tt){return t(be.l2p(tt.x)+ne,0)},Ze=Be?function(tt){return L($,tt.x,-1/0,1/0)}:function(tt){return $.pathArc(be.r2p(tt.x)+ne)},at=W(ie);if($.radialTickLayout!==at&&(Z["radial-axis"].selectAll(".xtick").remove(),$.radialTickLayout=at),Ae){be.setScale();var it=0,et=Be?(be.tickvals||[]).filter(function(tt){return tt>=0}).map(function(tt){return i.tickText(be,tt,!0,!1)}):i.calcTicks(be),lt=Be?et:i.clipEnds(be,et),Me=i.getTickSigns(be)[2];Be&&((be.ticks==="top"&&be.side==="bottom"||be.ticks==="bottom"&&be.side==="top")&&(Me=-Me),be.ticks==="top"&&be.side==="top"&&(it=-be.ticklen),be.ticks==="bottom"&&be.side==="bottom"&&(it=be.ticklen)),i.drawTicks(J,be,{vals:et,layer:Z["radial-axis"],path:i.makeTickPath(be,0,Me),transFn:Ie,crisp:!1}),i.drawGrid(J,be,{vals:lt,layer:Z["radial-grid"],path:Ze,transFn:M.noop,crisp:!1}),i.drawLabels(J,be,{vals:et,layer:Z["radial-axis"],transFn:Ie,labelFns:i.makeLabelFns(be,it)})}var ge=$.radialAxisAngle=$.vangles?I(ue(O(ie.angle),$.vangles)):ie.angle,ce=t(j,ee),ze=ce+e(-ge);se(Z["radial-axis"],Ae&&(ie.showticklabels||ie.ticks),{transform:ze}),se(Z["radial-grid"],Ae&&ie.showgrid,{transform:Be?"":ce}),se(Z["radial-line"].select("line"),Ae&&ie.showline,{x1:Be?-re:ne,y1:0,x2:re,y2:0,transform:ze}).attr("stroke-width",ie.linewidth).call(r.stroke,ie.linecolor)},U.updateRadialAxisTitle=function(he,G,$){if(!this.isSmith){var J=this,Z=J.gd,re=J.radius,ne=J.cx,j=J.cy,ee=J.getRadial(G),ie=J.id+"title",fe=0;if(ee.title){var be=o.bBox(J.layers["radial-axis"].node()).height,Ae=ee.title.font.size,Be=ee.side;fe=Be==="top"?Ae:Be==="counterclockwise"?-(be+Ae*.4):be+Ae*.8}var Ie=$!==void 0?$:J.radialAxisAngle,Ze=O(Ie),at=Math.cos(Ze),it=Math.sin(Ze),et=ne+re/2*at+fe*it,lt=j-re/2*it+fe*at;J.layers["radial-axis-title"]=T.draw(Z,ie,{propContainer:ee,propName:J.id+".radialaxis.title",placeholder:F(Z,"Click to enter radial axis title"),attributes:{x:et,y:lt,"text-anchor":"middle"},transform:{rotate:-Ie}})}},U.updateAngularAxis=function(he,G){var $=this,J=$.gd,Z=$.layers,re=$.radius,ne=$.innerRadius,j=$.cx,ee=$.cy,ie=$.getAngular(G),fe=$.angularAxis,be=$.isSmith;be||($.fillViewInitialKey("angularaxis.rotation",ie.rotation),fe.setGeometry(),fe.setScale());var Ae=be?function(nt){var Qe=z($,f([0,nt.x]));return Math.atan2(Qe[0]-j,Qe[1]-ee)-Math.PI/2}:function(nt){return fe.t2g(nt.x)};fe.type==="linear"&&fe.thetaunit==="radians"&&(fe.tick0=I(fe.tick0),fe.dtick=I(fe.dtick));var Be=function(nt){return t(j+re*Math.cos(nt),ee-re*Math.sin(nt))},Ie=be?function(nt){var Qe=z($,f([0,nt.x]));return t(Qe[0],Qe[1])}:function(nt){return Be(Ae(nt))},Ze=be?function(nt){var Qe=z($,f([0,nt.x])),Ct=Math.atan2(Qe[0]-j,Qe[1]-ee)-Math.PI/2;return t(Qe[0],Qe[1])+e(-I(Ct))}:function(nt){var Qe=Ae(nt);return Be(Qe)+e(-I(Qe))},at=be?function(nt){return P($,nt.x,0,1/0)}:function(nt){var Qe=Ae(nt),Ct=Math.cos(Qe),St=Math.sin(Qe);return"M"+[j+ne*Ct,ee-ne*St]+"L"+[j+re*Ct,ee-re*St]},it=i.makeLabelFns(fe,0),et=it.labelStandoff,lt={};lt.xFn=function(nt){var Qe=Ae(nt);return Math.cos(Qe)*et},lt.yFn=function(nt){var Qe=Ae(nt),Ct=Math.sin(Qe)>0?.2:1;return-Math.sin(Qe)*(et+nt.fontSize*Ct)+Math.abs(Math.cos(Qe))*(nt.fontSize*b)},lt.anchorFn=function(nt){var Qe=Ae(nt),Ct=Math.cos(Qe);return Math.abs(Ct)<.1?"middle":Ct>0?"start":"end"},lt.heightFn=function(nt,Qe,Ct){var St=Ae(nt);return-.5*(1+Math.sin(St))*Ct};var Me=W(ie);$.angularTickLayout!==Me&&(Z["angular-axis"].selectAll("."+fe._id+"tick").remove(),$.angularTickLayout=Me);var ge=be?[1/0].concat(fe.tickvals||[]).map(function(nt){return i.tickText(fe,nt,!0,!1)}):i.calcTicks(fe);be&&(ge[0].text="\u221E",ge[0].fontSize*=1.75);var ce;if(G.gridshape==="linear"?(ce=ge.map(Ae),M.angleDelta(ce[0],ce[1])<0&&(ce=ce.slice().reverse())):ce=null,$.vangles=ce,fe.type==="category"&&(ge=ge.filter(function(nt){return M.isAngleInsideSector(Ae(nt),$.sectorInRad)})),fe.visible){var ze=fe.ticks==="inside"?-1:1,tt=(fe.linewidth||1)/2;i.drawTicks(J,fe,{vals:ge,layer:Z["angular-axis"],path:"M"+ze*tt+",0h"+ze*fe.ticklen,transFn:Ze,crisp:!1}),i.drawGrid(J,fe,{vals:ge,layer:Z["angular-grid"],path:at,transFn:M.noop,crisp:!1}),i.drawLabels(J,fe,{vals:ge,layer:Z["angular-axis"],repositionOnUpdate:!0,transFn:Ie,labelFns:lt})}se(Z["angular-line"].select("path"),ie.showline,{d:$.pathSubplot(),transform:t(j,ee)}).attr("stroke-width",ie.linewidth).call(r.stroke,ie.linecolor)},U.updateFx=function(he,G){if(!this.gd._context.staticPlot){var $=!this.isSmith;$&&(this.updateAngularDrag(he),this.updateRadialDrag(he,G,0),this.updateRadialDrag(he,G,1)),this.updateHoverAndMainDrag(he)}},U.updateHoverAndMainDrag=function(he){var G=this,$=G.isSmith,J=G.gd,Z=G.layers,re=he._zoomlayer,ne=d.MINZOOM,j=d.OFFEDGE,ee=G.radius,ie=G.innerRadius,fe=G.cx,be=G.cy,Ae=G.cxx,Be=G.cyy,Ie=G.sectorInRad,Ze=G.vangles,at=G.radialAxis,it=u.clampTiny,et=u.findXYatLength,lt=u.findEnclosingVertexAngles,Me=d.cornerHalfWidth,ge=d.cornerLen/2,ce,ze,tt=h.makeDragger(Z,"path","maindrag",he.dragmode===!1?"none":"crosshair");g.select(tt).attr("d",G.pathSubplot()).attr("transform",t(fe,be)),tt.onmousemove=function(Gt){p.hover(J,Gt,G.id),J._fullLayout._lasthover=tt,J._fullLayout._hoversubplot=G.id},tt.onmouseout=function(Gt){J._dragging||v.unhover(J,Gt)};var nt={element:tt,gd:J,subplot:G.id,plotinfo:{id:G.id,xaxis:G.xaxis,yaxis:G.yaxis},xaxes:[G.xaxis],yaxes:[G.yaxis]},Qe,Ct,St,Ot,jt,ur,ar,Cr,vr;function _r(Gt,Kt){return Math.sqrt(Gt*Gt+Kt*Kt)}function yt(Gt,Kt){return _r(Gt-Ae,Kt-Be)}function Fe(Gt,Kt){return Math.atan2(Be-Kt,Gt-Ae)}function Ke(Gt,Kt){return[Gt*Math.cos(Kt),Gt*Math.sin(-Kt)]}function Ne(Gt,Kt){if(Gt===0)return G.pathSector(2*Me);var sr=ge/Gt,sa=Kt-sr,Aa=Kt+sr,La=Math.max(0,Math.min(Gt,ee)),ka=La-Me,Ga=La+Me;return"M"+Ke(ka,sa)+"A"+[ka,ka]+" 0,0,0 "+Ke(ka,Aa)+"L"+Ke(Ga,Aa)+"A"+[Ga,Ga]+" 0,0,1 "+Ke(Ga,sa)+"Z"}function Ee(Gt,Kt,sr){if(Gt===0)return G.pathSector(2*Me);var sa=Ke(Gt,Kt),Aa=Ke(Gt,sr),La=it((sa[0]+Aa[0])/2),ka=it((sa[1]+Aa[1])/2),Ga,Ma;if(La&&ka){var Ua=ka/La,ni=-1/Ua,Wt=et(Me,Ua,La,ka);Ga=et(ge,ni,Wt[0][0],Wt[0][1]),Ma=et(ge,ni,Wt[1][0],Wt[1][1])}else{var zt,Vt;ka?(zt=ge,Vt=Me):(zt=Me,Vt=ge),Ga=[[La-zt,ka-Vt],[La+zt,ka-Vt]],Ma=[[La-zt,ka+Vt],[La+zt,ka+Vt]]}return"M"+Ga.join("L")+"L"+Ma.reverse().join("L")+"Z"}function Ve(){St=null,Ot=null,jt=G.pathSubplot(),ur=!1;var Gt=J._fullLayout[G.id];ar=x(Gt.bgcolor).getLuminance(),Cr=h.makeZoombox(re,ar,fe,be,jt),Cr.attr("fill-rule","evenodd"),vr=h.makeCorners(re,fe,be),w(J)}function ke(Gt,Kt){return Kt=Math.max(Math.min(Kt,ee),ie),Gtne?(Gt-1&&Gt===1&&_(Kt,J,[G.xaxis],[G.yaxis],G.id,nt),sr.indexOf("event")>-1&&p.click(J,Kt,G.id)}nt.prepFn=function(Gt,Kt,sr){var sa=J._fullLayout.dragmode,Aa=tt.getBoundingClientRect();J._fullLayout._calcInverseTransform(J);var La=J._fullLayout._invTransform;ce=J._fullLayout._invScaleX,ze=J._fullLayout._invScaleY;var ka=M.apply3DTransform(La)(Kt-Aa.left,sr-Aa.top);if(Qe=ka[0],Ct=ka[1],Ze){var Ga=u.findPolygonOffset(ee,Ie[0],Ie[1],Ze);Qe+=Ae+Ga[0],Ct+=Be+Ga[1]}switch(sa){case"zoom":nt.clickFn=Bt,$||(Ze?nt.moveFn=dt:nt.moveFn=Le,nt.doneFn=xt,Ve(Gt,Kt,sr));break;case"select":case"lasso":l(Gt,Kt,sr,nt,sa);break}},v.init(nt)},U.updateRadialDrag=function(he,G,$){var J=this,Z=J.gd,re=J.layers,ne=J.radius,j=J.innerRadius,ee=J.cx,ie=J.cy,fe=J.radialAxis,be=d.radialDragBoxSize,Ae=be/2;if(!fe.visible)return;var Be=O(J.radialAxisAngle),Ie=fe._rl,Ze=Ie[0],at=Ie[1],it=Ie[$],et=.75*(Ie[1]-Ie[0])/(1-J.getHole(G))/ne,lt,Me,ge;$?(lt=ee+(ne+Ae)*Math.cos(Be),Me=ie-(ne+Ae)*Math.sin(Be),ge="radialdrag"):(lt=ee+(j-Ae)*Math.cos(Be),Me=ie-(j-Ae)*Math.sin(Be),ge="radialdrag-inner");var ce=h.makeRectDragger(re,ge,"crosshair",-Ae,-Ae,be,be),ze={element:ce,gd:Z};he.dragmode===!1&&(ze.dragmode=!1),se(g.select(ce),fe.visible&&j0!=($?Qe>Ze:Qe=90||Z>90&&re>=450?Be=1:j<=0&&ie<=0?Be=0:Be=Math.max(j,ie),Z<=180&&re>=180||Z>180&&re>=540?fe=-1:ne>=0&&ee>=0?fe=0:fe=Math.min(ne,ee),Z<=270&&re>=270||Z>270&&re>=630?be=-1:j>=0&&ie>=0?be=0:be=Math.min(j,ie),re>=360?Ae=1:ne<=0&&ee<=0?Ae=0:Ae=Math.max(ne,ee),[fe,be,Ae,Be]}function ue(he,G){var $=function(Z){return M.angleDist(he,Z)},J=M.findIndexOfMin(G,$);return G[J]}function se(he,G,$){return G?(he.attr("display",null),he.attr($)):he&&he.attr("display","none"),he}}}),rC=Ye({"src/plots/polar/layout_attributes.js"(X,H){"use strict";var g=Gf(),x=Vh(),A=Wu().attributes,M=ta().extendFlat,e=Ou().overrideAll,t=e({color:x.color,showline:M({},x.showline,{dflt:!0}),linecolor:x.linecolor,linewidth:x.linewidth,showgrid:M({},x.showgrid,{dflt:!0}),gridcolor:x.gridcolor,gridwidth:x.gridwidth,griddash:x.griddash},"plot","from-root"),r=e({tickmode:x.minor.tickmode,nticks:x.nticks,tick0:x.tick0,dtick:x.dtick,tickvals:x.tickvals,ticktext:x.ticktext,ticks:x.ticks,ticklen:x.ticklen,tickwidth:x.tickwidth,tickcolor:x.tickcolor,ticklabelstep:x.ticklabelstep,showticklabels:x.showticklabels,labelalias:x.labelalias,showtickprefix:x.showtickprefix,tickprefix:x.tickprefix,showticksuffix:x.showticksuffix,ticksuffix:x.ticksuffix,showexponent:x.showexponent,exponentformat:x.exponentformat,minexponent:x.minexponent,separatethousands:x.separatethousands,tickfont:x.tickfont,tickangle:x.tickangle,tickformat:x.tickformat,tickformatstops:x.tickformatstops,layer:x.layer},"plot","from-root"),o={visible:M({},x.visible,{dflt:!0}),type:M({},x.type,{values:["-","linear","log","date","category"]}),autotypenumbers:x.autotypenumbers,autorangeoptions:{minallowed:x.autorangeoptions.minallowed,maxallowed:x.autorangeoptions.maxallowed,clipmin:x.autorangeoptions.clipmin,clipmax:x.autorangeoptions.clipmax,include:x.autorangeoptions.include,editType:"plot"},autorange:M({},x.autorange,{editType:"plot"}),rangemode:{valType:"enumerated",values:["tozero","nonnegative","normal"],dflt:"tozero",editType:"calc"},minallowed:M({},x.minallowed,{editType:"plot"}),maxallowed:M({},x.maxallowed,{editType:"plot"}),range:M({},x.range,{items:[{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}},{valType:"any",editType:"plot",impliedEdits:{"^autorange":!1}}],editType:"plot"}),categoryorder:x.categoryorder,categoryarray:x.categoryarray,angle:{valType:"angle",editType:"plot"},autotickangles:x.autotickangles,side:{valType:"enumerated",values:["clockwise","counterclockwise"],dflt:"clockwise",editType:"plot"},title:{text:M({},x.title.text,{editType:"plot",dflt:""}),font:M({},x.title.font,{editType:"plot"}),editType:"plot"},hoverformat:x.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};M(o,t,r);var a={visible:M({},x.visible,{dflt:!0}),type:{valType:"enumerated",values:["-","linear","category"],dflt:"-",editType:"calc",_noTemplating:!0},autotypenumbers:x.autotypenumbers,categoryorder:x.categoryorder,categoryarray:x.categoryarray,thetaunit:{valType:"enumerated",values:["radians","degrees"],dflt:"degrees",editType:"calc"},period:{valType:"number",editType:"calc",min:0},direction:{valType:"enumerated",values:["counterclockwise","clockwise"],dflt:"counterclockwise",editType:"calc"},rotation:{valType:"angle",editType:"calc"},hoverformat:x.hoverformat,uirevision:{valType:"any",editType:"none"},editType:"calc"};M(a,t,r),H.exports={domain:A({name:"polar",editType:"plot"}),sector:{valType:"info_array",items:[{valType:"number",editType:"plot"},{valType:"number",editType:"plot"}],dflt:[0,360],editType:"plot"},hole:{valType:"number",min:0,max:1,dflt:0,editType:"plot"},bgcolor:{valType:"color",editType:"plot",dflt:g.background},radialaxis:o,angularaxis:a,gridshape:{valType:"enumerated",values:["circular","linear"],dflt:"circular",editType:"plot"},uirevision:{valType:"any",editType:"none"},editType:"calc"}}}),nG=Ye({"src/plots/polar/layout_defaults.js"(X,H){"use strict";var g=ta(),x=Fn(),A=cl(),M=ig(),e=jh().getSubplotData,t=Zg(),r=e1(),o=$m(),a=Qm(),i=P2(),n=I_(),s=cS(),c=r1(),h=rC(),v=Qk(),p=RT(),T=p.axisNames;function l(w,S,E,m){var b=E("bgcolor");m.bgColor=x.combine(b,m.paper_bgcolor);var d=E("sector");E("hole");var u=e(m.fullData,p.name,m.id),y=m.layoutOut,f;function P(be,Ae){return E(f+"."+be,Ae)}for(var L=0;L")}}H.exports={hoverPoints:x,makeHoverPointText:A}}}),lG=Ye({"src/traces/scatterpolar/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"scatterpolar",basePlotModule:zT(),categories:["polar","symbols","showLegend","scatter-like"],attributes:Ex(),supplyDefaults:FT().supplyDefaults,colorbar:cp(),formatLabels:OT(),calc:oG(),plot:sG(),style:ed().style,styleOnSelect:ed().styleOnSelect,hoverPoints:BT().hoverPoints,selectPoints:u1(),meta:{}}}}),uG=Ye({"lib/scatterpolar.js"(X,H){"use strict";H.exports=lG()}}),aC=Ye({"src/traces/scatterpolargl/attributes.js"(X,H){"use strict";var g=Ex(),x=yx(),A=xs().texttemplateAttrs;H.exports={mode:g.mode,r:g.r,theta:g.theta,r0:g.r0,dr:g.dr,theta0:g.theta0,dtheta:g.dtheta,thetaunit:g.thetaunit,text:g.text,texttemplate:A({editType:"plot"},{keys:["r","theta","text"]}),hovertext:g.hovertext,hovertemplate:g.hovertemplate,line:{color:x.line.color,width:x.line.width,dash:x.line.dash,editType:"calc"},connectgaps:x.connectgaps,marker:x.marker,fill:x.fill,fillcolor:x.fillcolor,textposition:x.textposition,textfont:x.textfont,hoverinfo:g.hoverinfo,selected:g.selected,unselected:g.unselected}}}),cG=Ye({"src/traces/scatterpolargl/defaults.js"(X,H){"use strict";var g=ta(),x=uu(),A=FT().handleRThetaDefaults,M=md(),e=Dd(),t=zd(),r=ev(),o=Tv().PTS_LINESONLY,a=aC();H.exports=function(n,s,c,h){function v(T,l){return g.coerce(n,s,a,T,l)}var p=A(n,s,h,v);if(!p){s.visible=!1;return}v("thetaunit"),v("mode",p=r&&(m.marker.cluster=_.tree),m.marker&&(m.markerSel.positions=m.markerUnsel.positions=m.marker.positions=y),m.line&&y.length>1&&t.extendFlat(m.line,e.linePositions(i,l,y)),m.text&&(t.extendFlat(m.text,{positions:y},e.textPosition(i,l,m.text,m.marker)),t.extendFlat(m.textSel,{positions:y},e.textPosition(i,l,m.text,m.markerSel)),t.extendFlat(m.textUnsel,{positions:y},e.textPosition(i,l,m.text,m.markerUnsel))),m.fill&&!v.fill2d&&(v.fill2d=!0),m.marker&&!v.scatter2d&&(v.scatter2d=!0),m.line&&!v.line2d&&(v.line2d=!0),m.text&&!v.glText&&(v.glText=!0),v.lineOptions.push(m.line),v.fillOptions.push(m.fill),v.markerOptions.push(m.marker),v.markerSelectedOptions.push(m.markerSel),v.markerUnselectedOptions.push(m.markerUnsel),v.textOptions.push(m.text),v.textSelectedOptions.push(m.textSel),v.textUnselectedOptions.push(m.textUnsel),v.selectBatch.push([]),v.unselectBatch.push([]),_.x=f,_.y=P,_.rawx=f,_.rawy=P,_.r=S,_.theta=E,_.positions=y,_._scene=v,_.index=v.count,v.count++}}),A(i,n,s)}},H.exports.reglPrecompiled=o}}),mG=Ye({"src/traces/scatterpolargl/index.js"(X,H){"use strict";var g=dG();g.plot=vG(),H.exports=g}}),gG=Ye({"lib/scatterpolargl.js"(X,H){"use strict";H.exports=mG()}}),iC=Ye({"src/traces/barpolar/attributes.js"(X,H){"use strict";var g=xs().hovertemplateAttrs,x=Oo().extendFlat,A=Ex(),M=Sv();H.exports={r:A.r,theta:A.theta,r0:A.r0,dr:A.dr,theta0:A.theta0,dtheta:A.dtheta,thetaunit:A.thetaunit,base:x({},M.base,{}),offset:x({},M.offset,{}),width:x({},M.width,{}),text:x({},M.text,{}),hovertext:x({},M.hovertext,{}),marker:e(),hoverinfo:A.hoverinfo,hovertemplate:g(),selected:M.selected,unselected:M.unselected};function e(){var t=x({},M.marker);return delete t.cornerradius,t}}}),nC=Ye({"src/traces/barpolar/layout_attributes.js"(X,H){"use strict";H.exports={barmode:{valType:"enumerated",values:["stack","overlay"],dflt:"stack",editType:"calc"},bargap:{valType:"number",dflt:.1,min:0,max:1,editType:"calc"}}}}),yG=Ye({"src/traces/barpolar/defaults.js"(X,H){"use strict";var g=ta(),x=FT().handleRThetaDefaults,A=U2(),M=iC();H.exports=function(t,r,o,a){function i(s,c){return g.coerce(t,r,M,s,c)}var n=x(t,r,a,i);if(!n){r.visible=!1;return}i("thetaunit"),i("base"),i("offset"),i("width"),i("text"),i("hovertext"),i("hovertemplate"),A(t,r,i,o,a),g.coerceSelectionMarkerOpacity(r,i)}}}),_G=Ye({"src/traces/barpolar/layout_defaults.js"(X,H){"use strict";var g=ta(),x=nC();H.exports=function(A,M,e){var t={},r;function o(n,s){return g.coerce(A[r]||{},M[r],x,n,s)}for(var a=0;a0?(h=s,v=c):(h=c,v=s);var p=e.findEnclosingVertexAngles(h,r.vangles)[0],T=e.findEnclosingVertexAngles(v,r.vangles)[1],l=[p,(h+v)/2,T];return e.pathPolygonAnnulus(i,n,h,v,l,o,a)}:function(i,n,s,c){return A.pathAnnulus(i,n,s,c,o,a)}}}}),bG=Ye({"src/traces/barpolar/hover.js"(X,H){"use strict";var g=Lc(),x=ta(),A=c1().getTraceColor,M=x.fillText,e=BT().makeHoverPointText,t=DT().isPtInsidePolygon;H.exports=function(o,a,i){var n=o.cd,s=n[0].trace,c=o.subplot,h=c.radialAxis,v=c.angularAxis,p=c.vangles,T=p?t:x.isPtInsideSector,l=o.maxHoverDistance,_=v._period||2*Math.PI,w=Math.abs(h.g2p(Math.sqrt(a*a+i*i))),S=Math.atan2(i,a);h.range[0]>h.range[1]&&(S+=Math.PI);var E=function(u){return T(w,S,[u.rp0,u.rp1],[u.thetag0,u.thetag1],p)?l+Math.min(1,Math.abs(u.thetag1-u.thetag0)/_)-1+(u.rp1-w)/(u.rp1-u.rp0)-1:1/0};if(g.getClosest(n,E,o),o.index!==!1){var m=o.index,b=n[m];o.x0=o.x1=b.ct[0],o.y0=o.y1=b.ct[1];var d=x.extendFlat({},b,{r:b.s,theta:b.p});return M(b,s,o),e(d,s,c,o),o.hovertemplate=s.hovertemplate,o.color=A(s,b),o.xLabelVal=o.yLabelVal=void 0,b.s<0&&(o.idealAlign="left"),[o]}}}}),wG=Ye({"src/traces/barpolar/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"barpolar",basePlotModule:zT(),categories:["polar","bar","showLegend"],attributes:iC(),layoutAttributes:nC(),supplyDefaults:yG(),supplyLayoutDefaults:_G(),calc:oC().calc,crossTraceCalc:oC().crossTraceCalc,plot:xG(),colorbar:cp(),formatLabels:OT(),style:Nd().style,styleOnSelect:Nd().styleOnSelect,hoverPoints:bG(),selectPoints:f1(),meta:{}}}}),TG=Ye({"lib/barpolar.js"(X,H){"use strict";H.exports=wG()}}),sC=Ye({"src/plots/smith/constants.js"(X,H){"use strict";H.exports={attr:"subplot",name:"smith",axisNames:["realaxis","imaginaryaxis"],axisName2dataArray:{imaginaryaxis:"imag",realaxis:"real"}}}}),lC=Ye({"src/plots/smith/layout_attributes.js"(X,H){"use strict";var g=Gf(),x=Vh(),A=Wu().attributes,M=ta().extendFlat,e=Ou().overrideAll,t=e({color:x.color,showline:M({},x.showline,{dflt:!0}),linecolor:x.linecolor,linewidth:x.linewidth,showgrid:M({},x.showgrid,{dflt:!0}),gridcolor:x.gridcolor,gridwidth:x.gridwidth,griddash:x.griddash},"plot","from-root"),r=e({ticklen:x.ticklen,tickwidth:M({},x.tickwidth,{dflt:2}),tickcolor:x.tickcolor,showticklabels:x.showticklabels,labelalias:x.labelalias,showtickprefix:x.showtickprefix,tickprefix:x.tickprefix,showticksuffix:x.showticksuffix,ticksuffix:x.ticksuffix,tickfont:x.tickfont,tickformat:x.tickformat,hoverformat:x.hoverformat,layer:x.layer},"plot","from-root"),o=M({visible:M({},x.visible,{dflt:!0}),tickvals:{dflt:[.2,.5,1,2,5],valType:"data_array",editType:"plot"},tickangle:M({},x.tickangle,{dflt:90}),ticks:{valType:"enumerated",values:["top","bottom",""],editType:"ticks"},side:{valType:"enumerated",values:["top","bottom"],dflt:"top",editType:"plot"},editType:"calc"},t,r),a=M({visible:M({},x.visible,{dflt:!0}),tickvals:{valType:"data_array",editType:"plot"},ticks:x.ticks,editType:"calc"},t,r);H.exports={domain:A({name:"smith",editType:"plot"}),bgcolor:{valType:"color",editType:"plot",dflt:g.background},realaxis:o,imaginaryaxis:a,editType:"calc"}}}),AG=Ye({"src/plots/smith/layout_defaults.js"(X,H){"use strict";var g=ta(),x=Fn(),A=cl(),M=ig(),e=jh().getSubplotData,t=Qm(),r=$m(),o=I_(),a=wv(),i=lC(),n=sC(),s=n.axisNames,c=v(function(p){return g.isTypedArray(p)&&(p=Array.from(p)),p.slice().reverse().map(function(T){return-T}).concat([0]).concat(p)},String);function h(p,T,l,_){var w=l("bgcolor");_.bgColor=x.combine(w,_.paper_bgcolor);var S=e(_.fullData,n.name,_.id),E=_.layoutOut,m;function b(U,W){return l(m+"."+U,W)}for(var d=0;d")}}H.exports={hoverPoints:x,makeHoverPointText:A}}}),PG=Ye({"src/traces/scattersmith/index.js"(X,H){"use strict";H.exports={moduleType:"trace",name:"scattersmith",basePlotModule:SG(),categories:["smith","symbols","showLegend","scatter-like"],attributes:uC(),supplyDefaults:MG(),colorbar:cp(),formatLabels:EG(),calc:kG(),plot:CG(),style:ed().style,styleOnSelect:ed().styleOnSelect,hoverPoints:LG().hoverPoints,selectPoints:u1(),meta:{}}}}),IG=Ye({"lib/scattersmith.js"(X,H){"use strict";H.exports=PG()}}),Tp=Ye({"node_modules/world-calendars/dist/main.js"(X,H){var g=Wf();function x(){this.regionalOptions=[],this.regionalOptions[""]={invalidCalendar:"Calendar {0} not found",invalidDate:"Invalid {0} date",invalidMonth:"Invalid {0} month",invalidYear:"Invalid {0} year",differentCalendars:"Cannot mix {0} and {1} dates"},this.local=this.regionalOptions[""],this.calendars={},this._localCals={}}g(x.prototype,{instance:function(o,a){o=(o||"gregorian").toLowerCase(),a=a||"";var i=this._localCals[o+"-"+a];if(!i&&this.calendars[o]&&(i=new this.calendars[o](a),this._localCals[o+"-"+a]=i),!i)throw(this.local.invalidCalendar||this.regionalOptions[""].invalidCalendar).replace(/\{0\}/,o);return i},newDate:function(o,a,i,n,s){return n=(o!=null&&o.year?o.calendar():typeof n=="string"?this.instance(n,s):n)||this.instance(),n.newDate(o,a,i)},substituteDigits:function(o){return function(a){return(a+"").replace(/[0-9]/g,function(i){return o[i]})}},substituteChineseDigits:function(o,a){return function(i){for(var n="",s=0;i>0;){var c=i%10;n=(c===0?"":o[c]+a[s])+n,s++,i=Math.floor(i/10)}return n.indexOf(o[1]+a[1])===0&&(n=n.substr(1)),n||o[0]}}});function A(o,a,i,n){if(this._calendar=o,this._year=a,this._month=i,this._day=n,this._calendar._validateLevel===0&&!this._calendar.isValid(this._year,this._month,this._day))throw(r.local.invalidDate||r.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name)}function M(o,a){return o=""+o,"000000".substring(0,a-o.length)+o}g(A.prototype,{newDate:function(o,a,i){return this._calendar.newDate(o??this,a,i)},year:function(o){return arguments.length===0?this._year:this.set(o,"y")},month:function(o){return arguments.length===0?this._month:this.set(o,"m")},day:function(o){return arguments.length===0?this._day:this.set(o,"d")},date:function(o,a,i){if(!this._calendar.isValid(o,a,i))throw(r.local.invalidDate||r.regionalOptions[""].invalidDate).replace(/\{0\}/,this._calendar.local.name);return this._year=o,this._month=a,this._day=i,this},leapYear:function(){return this._calendar.leapYear(this)},epoch:function(){return this._calendar.epoch(this)},formatYear:function(){return this._calendar.formatYear(this)},monthOfYear:function(){return this._calendar.monthOfYear(this)},weekOfYear:function(){return this._calendar.weekOfYear(this)},daysInYear:function(){return this._calendar.daysInYear(this)},dayOfYear:function(){return this._calendar.dayOfYear(this)},daysInMonth:function(){return this._calendar.daysInMonth(this)},dayOfWeek:function(){return this._calendar.dayOfWeek(this)},weekDay:function(){return this._calendar.weekDay(this)},extraInfo:function(){return this._calendar.extraInfo(this)},add:function(o,a){return this._calendar.add(this,o,a)},set:function(o,a){return this._calendar.set(this,o,a)},compareTo:function(o){if(this._calendar.name!==o._calendar.name)throw(r.local.differentCalendars||r.regionalOptions[""].differentCalendars).replace(/\{0\}/,this._calendar.local.name).replace(/\{1\}/,o._calendar.local.name);var a=this._year!==o._year?this._year-o._year:this._month!==o._month?this.monthOfYear()-o.monthOfYear():this._day-o._day;return a===0?0:a<0?-1:1},calendar:function(){return this._calendar},toJD:function(){return this._calendar.toJD(this)},fromJD:function(o){return this._calendar.fromJD(o)},toJSDate:function(){return this._calendar.toJSDate(this)},fromJSDate:function(o){return this._calendar.fromJSDate(o)},toString:function(){return(this.year()<0?"-":"")+M(Math.abs(this.year()),4)+"-"+M(this.month(),2)+"-"+M(this.day(),2)}});function e(){this.shortYearCutoff="+10"}g(e.prototype,{_validateLevel:0,newDate:function(o,a,i){return o==null?this.today():(o.year&&(this._validate(o,a,i,r.local.invalidDate||r.regionalOptions[""].invalidDate),i=o.day(),a=o.month(),o=o.year()),new A(this,o,a,i))},today:function(){return this.fromJSDate(new Date)},epoch:function(o){var a=this._validate(o,this.minMonth,this.minDay,r.local.invalidYear||r.regionalOptions[""].invalidYear);return a.year()<0?this.local.epochs[0]:this.local.epochs[1]},formatYear:function(o){var a=this._validate(o,this.minMonth,this.minDay,r.local.invalidYear||r.regionalOptions[""].invalidYear);return(a.year()<0?"-":"")+M(Math.abs(a.year()),4)},monthsInYear:function(o){return this._validate(o,this.minMonth,this.minDay,r.local.invalidYear||r.regionalOptions[""].invalidYear),12},monthOfYear:function(o,a){var i=this._validate(o,a,this.minDay,r.local.invalidMonth||r.regionalOptions[""].invalidMonth);return(i.month()+this.monthsInYear(i)-this.firstMonth)%this.monthsInYear(i)+this.minMonth},fromMonthOfYear:function(o,a){var i=(a+this.firstMonth-2*this.minMonth)%this.monthsInYear(o)+this.minMonth;return this._validate(o,i,this.minDay,r.local.invalidMonth||r.regionalOptions[""].invalidMonth),i},daysInYear:function(o){var a=this._validate(o,this.minMonth,this.minDay,r.local.invalidYear||r.regionalOptions[""].invalidYear);return this.leapYear(a)?366:365},dayOfYear:function(o,a,i){var n=this._validate(o,a,i,r.local.invalidDate||r.regionalOptions[""].invalidDate);return n.toJD()-this.newDate(n.year(),this.fromMonthOfYear(n.year(),this.minMonth),this.minDay).toJD()+1},daysInWeek:function(){return 7},dayOfWeek:function(o,a,i){var n=this._validate(o,a,i,r.local.invalidDate||r.regionalOptions[""].invalidDate);return(Math.floor(this.toJD(n))+2)%this.daysInWeek()},extraInfo:function(o,a,i){return this._validate(o,a,i,r.local.invalidDate||r.regionalOptions[""].invalidDate),{}},add:function(o,a,i){return this._validate(o,this.minMonth,this.minDay,r.local.invalidDate||r.regionalOptions[""].invalidDate),this._correctAdd(o,this._add(o,a,i),a,i)},_add:function(o,a,i){if(this._validateLevel++,i==="d"||i==="w"){var n=o.toJD()+a*(i==="w"?this.daysInWeek():1),s=o.calendar().fromJD(n);return this._validateLevel--,[s.year(),s.month(),s.day()]}try{var c=o.year()+(i==="y"?a:0),h=o.monthOfYear()+(i==="m"?a:0),s=o.day(),v=function(l){for(;h_-1+l.minMonth;)c++,h-=_,_=l.monthsInYear(c)};i==="y"?(o.month()!==this.fromMonthOfYear(c,h)&&(h=this.newDate(c,o.month(),this.minDay).monthOfYear()),h=Math.min(h,this.monthsInYear(c)),s=Math.min(s,this.daysInMonth(c,this.fromMonthOfYear(c,h)))):i==="m"&&(v(this),s=Math.min(s,this.daysInMonth(c,this.fromMonthOfYear(c,h))));var p=[c,this.fromMonthOfYear(c,h),s];return this._validateLevel--,p}catch(T){throw this._validateLevel--,T}},_correctAdd:function(o,a,i,n){if(!this.hasYearZero&&(n==="y"||n==="m")&&(a[0]===0||o.year()>0!=a[0]>0)){var s={y:[1,1,"y"],m:[1,this.monthsInYear(-1),"m"],w:[this.daysInWeek(),this.daysInYear(-1),"d"],d:[1,this.daysInYear(-1),"d"]}[n],c=i<0?-1:1;a=this._add(o,i*s[0]+c*s[1],s[2])}return o.date(a[0],a[1],a[2])},set:function(o,a,i){this._validate(o,this.minMonth,this.minDay,r.local.invalidDate||r.regionalOptions[""].invalidDate);var n=i==="y"?a:o.year(),s=i==="m"?a:o.month(),c=i==="d"?a:o.day();return(i==="y"||i==="m")&&(c=Math.min(c,this.daysInMonth(n,s))),o.date(n,s,c)},isValid:function(o,a,i){this._validateLevel++;var n=this.hasYearZero||o!==0;if(n){var s=this.newDate(o,a,this.minDay);n=a>=this.minMonth&&a-this.minMonth=this.minDay&&i-this.minDay13.5?13:1),T=s-(p>2.5?4716:4715);return T<=0&&T--,this.newDate(T,p,v)},toJSDate:function(o,a,i){var n=this._validate(o,a,i,r.local.invalidDate||r.regionalOptions[""].invalidDate),s=new Date(n.year(),n.month()-1,n.day());return s.setHours(0),s.setMinutes(0),s.setSeconds(0),s.setMilliseconds(0),s.setHours(s.getHours()>12?s.getHours()+2:0),s},fromJSDate:function(o){return this.newDate(o.getFullYear(),o.getMonth()+1,o.getDate())}});var r=H.exports=new x;r.cdate=A,r.baseCalendar=e,r.calendars.gregorian=t}}),RG=Ye({"node_modules/world-calendars/dist/plus.js"(){var X=Wf(),H=Tp();X(H.regionalOptions[""],{invalidArguments:"Invalid arguments",invalidFormat:"Cannot format a date from another calendar",missingNumberAt:"Missing number at position {0}",unknownNameAt:"Unknown name at position {0}",unexpectedLiteralAt:"Unexpected literal at position {0}",unexpectedText:"Additional text found at end"}),H.local=H.regionalOptions[""],X(H.cdate.prototype,{formatDate:function(g,x){return typeof g!="string"&&(x=g,g=""),this._calendar.formatDate(g||"",this,x)}}),X(H.baseCalendar.prototype,{UNIX_EPOCH:H.instance().newDate(1970,1,1).toJD(),SECS_PER_DAY:24*60*60,TICKS_EPOCH:H.instance().jdEpoch,TICKS_PER_DAY:24*60*60*1e7,ATOM:"yyyy-mm-dd",COOKIE:"D, dd M yyyy",FULL:"DD, MM d, yyyy",ISO_8601:"yyyy-mm-dd",JULIAN:"J",RFC_822:"D, d M yy",RFC_850:"DD, dd-M-yy",RFC_1036:"D, d M yy",RFC_1123:"D, d M yyyy",RFC_2822:"D, d M yyyy",RSS:"D, d M yy",TICKS:"!",TIMESTAMP:"@",W3C:"yyyy-mm-dd",formatDate:function(g,x,A){if(typeof g!="string"&&(A=x,x=g,g=""),!x)return"";if(x.calendar()!==this)throw H.local.invalidFormat||H.regionalOptions[""].invalidFormat;g=g||this.local.dateFormat,A=A||{};for(var M=A.dayNamesShort||this.local.dayNamesShort,e=A.dayNames||this.local.dayNames,t=A.monthNumbers||this.local.monthNumbers,r=A.monthNamesShort||this.local.monthNamesShort,o=A.monthNames||this.local.monthNames,a=A.calculateWeek||this.local.calculateWeek,i=function(S,E){for(var m=1;w+m1},n=function(S,E,m,b){var d=""+E;if(i(S,b))for(;d.length1},_=function(P,L){var z=l(P,L),F=[2,3,z?4:2,z?4:2,10,11,20]["oyYJ@!".indexOf(P)+1],B=new RegExp("^-?\\d{1,"+F+"}"),O=x.substring(d).match(B);if(!O)throw(H.local.missingNumberAt||H.regionalOptions[""].missingNumberAt).replace(/\{0\}/,d);return d+=O[0].length,parseInt(O[0],10)},w=this,S=function(){if(typeof o=="function"){l("m");var P=o.call(w,x.substring(d));return d+=P.length,P}return _("m")},E=function(P,L,z,F){for(var B=l(P,F)?z:L,O=0;O-1){c=1,h=v;for(var f=this.daysInMonth(s,c);h>f;f=this.daysInMonth(s,c))c++,h-=f}return n>-1?this.fromJD(n):this.newDate(s,c,h)},determineDate:function(g,x,A,M,e){A&&typeof A!="object"&&(e=M,M=A,A=null),typeof M!="string"&&(e=M,M="");var t=this,r=function(o){try{return t.parseDate(M,o,e)}catch{}o=o.toLowerCase();for(var a=(o.match(/^c/)&&A?A.newDate():null)||t.today(),i=/([+-]?[0-9]+)\s*(d|w|m|y)?/g,n=i.exec(o);n;)a.add(parseInt(n[1],10),n[2]||"d"),n=i.exec(o);return a};return x=x?x.newDate():null,g=g==null?x:typeof g=="string"?r(g):typeof g=="number"?isNaN(g)||g===1/0||g===-1/0?x:t.today().add(g,"d"):t.newDate(g),g}})}}),DG=Ye({"node_modules/world-calendars/dist/calendars/chinese.js"(){var X=Tp(),H=Wf(),g=X.instance();function x(n){this.local=this.regionalOptions[n||""]||this.regionalOptions[""]}x.prototype=new X.baseCalendar,H(x.prototype,{name:"Chinese",jdEpoch:17214255e-1,hasYearZero:!1,minMonth:0,firstMonth:0,minDay:1,regionalOptions:{"":{name:"Chinese",epochs:["BEC","EC"],monthNumbers:function(n,s){if(typeof n=="string"){var c=n.match(M);return c?c[0]:""}var h=this._validateYear(n),v=n.month(),p=""+this.toChineseMonth(h,v);return s&&p.length<2&&(p="0"+p),this.isIntercalaryMonth(h,v)&&(p+="i"),p},monthNames:function(n){if(typeof n=="string"){var s=n.match(e);return s?s[0]:""}var c=this._validateYear(n),h=n.month(),v=this.toChineseMonth(c,h),p=["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"][v-1];return this.isIntercalaryMonth(c,h)&&(p="\u95F0"+p),p},monthNamesShort:function(n){if(typeof n=="string"){var s=n.match(t);return s?s[0]:""}var c=this._validateYear(n),h=n.month(),v=this.toChineseMonth(c,h),p=["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"][v-1];return this.isIntercalaryMonth(c,h)&&(p="\u95F0"+p),p},parseMonth:function(n,s){n=this._validateYear(n);var c=parseInt(s),h;if(isNaN(c))s[0]==="\u95F0"&&(h=!0,s=s.substring(1)),s[s.length-1]==="\u6708"&&(s=s.substring(0,s.length-1)),c=1+["\u4E00","\u4E8C","\u4E09","\u56DB","\u4E94","\u516D","\u4E03","\u516B","\u4E5D","\u5341","\u5341\u4E00","\u5341\u4E8C"].indexOf(s);else{var v=s[s.length-1];h=v==="i"||v==="I"}var p=this.toMonthIndex(n,c,h);return p},dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},_validateYear:function(n,s){if(n.year&&(n=n.year()),typeof n!="number"||n<1888||n>2111)throw s.replace(/\{0\}/,this.local.name);return n},toMonthIndex:function(n,s,c){var h=this.intercalaryMonth(n),v=c&&s!==h;if(v||s<1||s>12)throw X.local.invalidMonth.replace(/\{0\}/,this.local.name);var p;return h?!c&&s<=h?p=s-1:p=s:p=s-1,p},toChineseMonth:function(n,s){n.year&&(n=n.year(),s=n.month());var c=this.intercalaryMonth(n),h=c?12:11;if(s<0||s>h)throw X.local.invalidMonth.replace(/\{0\}/,this.local.name);var v;return c?s>13;return c},isIntercalaryMonth:function(n,s){n.year&&(n=n.year(),s=n.month());var c=this.intercalaryMonth(n);return!!c&&c===s},leapYear:function(n){return this.intercalaryMonth(n)!==0},weekOfYear:function(n,s,c){var h=this._validateYear(n,X.local.invalidyear),v=o[h-o[0]],p=v>>9&4095,T=v>>5&15,l=v&31,_;_=g.newDate(p,T,l),_.add(4-(_.dayOfWeek()||7),"d");var w=this.toJD(n,s,c)-_.toJD();return 1+Math.floor(w/7)},monthsInYear:function(n){return this.leapYear(n)?13:12},daysInMonth:function(n,s){n.year&&(s=n.month(),n=n.year()),n=this._validateYear(n);var c=r[n-r[0]],h=c>>13,v=h?12:11;if(s>v)throw X.local.invalidMonth.replace(/\{0\}/,this.local.name);var p=c&1<<12-s?30:29;return p},weekDay:function(n,s,c){return(this.dayOfWeek(n,s,c)||7)<6},toJD:function(n,s,c){var h=this._validate(n,p,c,X.local.invalidDate);n=this._validateYear(h.year()),s=h.month(),c=h.day();var v=this.isIntercalaryMonth(n,s),p=this.toChineseMonth(n,s),T=i(n,p,c,v);return g.toJD(T.year,T.month,T.day)},fromJD:function(n){var s=g.fromJD(n),c=a(s.year(),s.month(),s.day()),h=this.toMonthIndex(c.year,c.month,c.isIntercalary);return this.newDate(c.year,h,c.day)},fromString:function(n){var s=n.match(A),c=this._validateYear(+s[1]),h=+s[2],v=!!s[3],p=this.toMonthIndex(c,h,v),T=+s[4];return this.newDate(c,p,T)},add:function(n,s,c){var h=n.year(),v=n.month(),p=this.isIntercalaryMonth(h,v),T=this.toChineseMonth(h,v),l=Object.getPrototypeOf(x.prototype).add.call(this,n,s,c);if(c==="y"){var _=l.year(),w=l.month(),S=this.isIntercalaryMonth(_,T),E=p&&S?this.toMonthIndex(_,T,!0):this.toMonthIndex(_,T,!1);E!==w&&l.month(E)}return l}});var A=/^\s*(-?\d\d\d\d|\d\d)[-/](\d?\d)([iI]?)[-/](\d?\d)/m,M=/^\d?\d[iI]?/m,e=/^闰?十?[一二三四五六七八九]?月/m,t=/^闰?十?[一二三四五六七八九]?/m;X.calendars.chinese=x;var r=[1887,5780,5802,19157,2742,50359,1198,2646,46378,7466,3412,30122,5482,67949,2396,5294,43597,6732,6954,36181,2772,4954,18781,2396,54427,5274,6730,47781,5800,6868,21210,4790,59703,2350,5270,46667,3402,3496,38325,1388,4782,18735,2350,52374,6804,7498,44457,2906,1388,29294,4700,63789,6442,6804,56138,5802,2772,38235,1210,4698,22827,5418,63125,3476,5802,43701,2484,5302,27223,2646,70954,7466,3412,54698,5482,2412,38062,5294,2636,32038,6954,60245,2772,4826,43357,2394,5274,39501,6730,72357,5800,5844,53978,4790,2358,38039,5270,87627,3402,3496,54708,5484,4782,43311,2350,3222,27978,7498,68965,2904,5484,45677,4700,6444,39573,6804,6986,19285,2772,62811,1210,4698,47403,5418,5780,38570,5546,76469,2420,5302,51799,2646,5414,36501,3412,5546,18869,2412,54446,5276,6732,48422,6822,2900,28010,4826,92509,2394,5274,55883,6730,6820,47956,5812,2778,18779,2358,62615,5270,5450,46757,3492,5556,27318,4718,67887,2350,3222,52554,7498,3428,38252,5468,4700,31022,6444,64149,6804,6986,43861,2772,5338,35421,2650,70955,5418,5780,54954,5546,2740,38074,5302,2646,29991,3366,61011,3412,5546,43445,2412,5294,35406,6732,72998,6820,6996,52586,2778,2396,38045,5274,6698,23333,6820,64338,5812,2746,43355,2358,5270,39499,5450,79525,3492,5548],o=[1887,966732,967231,967733,968265,968766,969297,969798,970298,970829,971330,971830,972362,972863,973395,973896,974397,974928,975428,975929,976461,976962,977462,977994,978494,979026,979526,980026,980558,981059,981559,982091,982593,983124,983624,984124,984656,985157,985656,986189,986690,987191,987722,988222,988753,989254,989754,990286,990788,991288,991819,992319,992851,993352,993851,994383,994885,995385,995917,996418,996918,997450,997949,998481,998982,999483,1000014,1000515,1001016,1001548,1002047,1002578,1003080,1003580,1004111,1004613,1005113,1005645,1006146,1006645,1007177,1007678,1008209,1008710,1009211,1009743,1010243,1010743,1011275,1011775,1012306,1012807,1013308,1013840,1014341,1014841,1015373,1015874,1016404,1016905,1017405,1017937,1018438,1018939,1019471,1019972,1020471,1021002,1021503,1022035,1022535,1023036,1023568,1024069,1024568,1025100,1025601,1026102,1026633,1027133,1027666,1028167,1028666,1029198,1029699,1030199,1030730,1031231,1031763,1032264,1032764,1033296,1033797,1034297,1034828,1035329,1035830,1036362,1036861,1037393,1037894,1038394,1038925,1039427,1039927,1040459,1040959,1041491,1041992,1042492,1043023,1043524,1044024,1044556,1045057,1045558,1046090,1046590,1047121,1047622,1048122,1048654,1049154,1049655,1050187,1050689,1051219,1051720,1052220,1052751,1053252,1053752,1054284,1054786,1055285,1055817,1056317,1056849,1057349,1057850,1058382,1058883,1059383,1059915,1060415,1060947,1061447,1061947,1062479,1062981,1063480,1064012,1064514,1065014,1065545,1066045,1066577,1067078,1067578,1068110,1068611,1069112,1069642,1070142,1070674,1071175,1071675,1072207,1072709,1073209,1073740,1074241,1074741,1075273,1075773,1076305,1076807,1077308,1077839,1078340,1078840,1079372,1079871,1080403,1080904];function a(n,s,c,h){var v,p;if(typeof n=="object")v=n,p=s||{};else{var T=typeof n=="number"&&n>=1888&&n<=2111;if(!T)throw new Error("Solar year outside range 1888-2111");var l=typeof s=="number"&&s>=1&&s<=12;if(!l)throw new Error("Solar month outside range 1 - 12");var _=typeof c=="number"&&c>=1&&c<=31;if(!_)throw new Error("Solar day outside range 1 - 31");v={year:n,month:s,day:c},p=h||{}}var w=o[v.year-o[0]],S=v.year<<9|v.month<<5|v.day;p.year=S>=w?v.year:v.year-1,w=o[p.year-o[0]];var E=w>>9&4095,m=w>>5&15,b=w&31,d,u=new Date(E,m-1,b),y=new Date(v.year,v.month-1,v.day);d=Math.round((y-u)/(24*3600*1e3));var f=r[p.year-r[0]],P;for(P=0;P<13;P++){var L=f&1<<12-P?30:29;if(d>13;return!z||P=1888&&n<=2111;if(!l)throw new Error("Lunar year outside range 1888-2111");var _=typeof s=="number"&&s>=1&&s<=12;if(!_)throw new Error("Lunar month outside range 1 - 12");var w=typeof c=="number"&&c>=1&&c<=30;if(!w)throw new Error("Lunar day outside range 1 - 30");var S;typeof h=="object"?(S=!1,p=h):(S=!!h,p=v||{}),T={year:n,month:s,day:c,isIntercalary:S}}var E;E=T.day-1;var m=r[T.year-r[0]],b=m>>13,d;b&&(T.month>b||T.isIntercalary)?d=T.month:d=T.month-1;for(var u=0;u>9&4095,L=f>>5&15,z=f&31,F=new Date(P,L-1,z+E);return p.year=F.getFullYear(),p.month=1+F.getMonth(),p.day=F.getDate(),p}}}),zG=Ye({"node_modules/world-calendars/dist/calendars/coptic.js"(){var X=Tp(),H=Wf();function g(x){this.local=this.regionalOptions[x||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Coptic",jdEpoch:18250295e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Coptic",epochs:["BAM","AM"],monthNames:["Thout","Paopi","Hathor","Koiak","Tobi","Meshir","Paremhat","Paremoude","Pashons","Paoni","Epip","Mesori","Pi Kogi Enavot"],monthNamesShort:["Tho","Pao","Hath","Koi","Tob","Mesh","Pat","Pad","Pash","Pao","Epi","Meso","PiK"],dayNames:["Tkyriaka","Pesnau","Pshoment","Peftoou","Ptiou","Psoou","Psabbaton"],dayNamesShort:["Tky","Pes","Psh","Pef","Pti","Pso","Psa"],dayNamesMin:["Tk","Pes","Psh","Pef","Pt","Pso","Psa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(M){var A=this._validate(M,this.minMonth,this.minDay,X.local.invalidYear),M=A.year()+(A.year()<0?1:0);return M%4===3||M%4===-1},monthsInYear:function(x){return this._validate(x,this.minMonth,this.minDay,X.local.invalidYear||X.regionalOptions[""].invalidYear),13},weekOfYear:function(x,A,M){var e=this.newDate(x,A,M);return e.add(-e.dayOfWeek(),"d"),Math.floor((e.dayOfYear()-1)/7)+1},daysInMonth:function(x,A){var M=this._validate(x,A,this.minDay,X.local.invalidMonth);return this.daysPerMonth[M.month()-1]+(M.month()===13&&this.leapYear(M.year())?1:0)},weekDay:function(x,A,M){return(this.dayOfWeek(x,A,M)||7)<6},toJD:function(x,A,M){var e=this._validate(x,A,M,X.local.invalidDate);return x=e.year(),x<0&&x++,e.day()+(e.month()-1)*30+(x-1)*365+Math.floor(x/4)+this.jdEpoch-1},fromJD:function(x){var A=Math.floor(x)+.5-this.jdEpoch,M=Math.floor((A-Math.floor((A+366)/1461))/365)+1;M<=0&&M--,A=Math.floor(x)+.5-this.newDate(M,1,1).toJD();var e=Math.floor(A/30)+1,t=A-(e-1)*30+1;return this.newDate(M,e,t)}}),X.calendars.coptic=g}}),FG=Ye({"node_modules/world-calendars/dist/calendars/discworld.js"(){var X=Tp(),H=Wf();function g(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Discworld",jdEpoch:17214255e-1,daysPerMonth:[16,32,32,32,32,32,32,32,32,32,32,32,32],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Discworld",epochs:["BUC","UC"],monthNames:["Ick","Offle","February","March","April","May","June","Grune","August","Spune","Sektober","Ember","December"],monthNamesShort:["Ick","Off","Feb","Mar","Apr","May","Jun","Gru","Aug","Spu","Sek","Emb","Dec"],dayNames:["Sunday","Octeday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Oct","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Oc","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:2,isRTL:!1}},leapYear:function(A){return this._validate(A,this.minMonth,this.minDay,X.local.invalidYear),!1},monthsInYear:function(A){return this._validate(A,this.minMonth,this.minDay,X.local.invalidYear),13},daysInYear:function(A){return this._validate(A,this.minMonth,this.minDay,X.local.invalidYear),400},weekOfYear:function(A,M,e){var t=this.newDate(A,M,e);return t.add(-t.dayOfWeek(),"d"),Math.floor((t.dayOfYear()-1)/8)+1},daysInMonth:function(A,M){var e=this._validate(A,M,this.minDay,X.local.invalidMonth);return this.daysPerMonth[e.month()-1]},daysInWeek:function(){return 8},dayOfWeek:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate);return(t.day()+1)%8},weekDay:function(A,M,e){var t=this.dayOfWeek(A,M,e);return t>=2&&t<=6},extraInfo:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate);return{century:x[Math.floor((t.year()-1)/100)+1]||""}},toJD:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate);return A=t.year()+(t.year()<0?1:0),M=t.month(),e=t.day(),e+(M>1?16:0)+(M>2?(M-2)*32:0)+(A-1)*400+this.jdEpoch-1},fromJD:function(A){A=Math.floor(A+.5)-Math.floor(this.jdEpoch)-1;var M=Math.floor(A/400)+1;A-=(M-1)*400,A+=A>15?16:0;var e=Math.floor(A/32)+1,t=A-(e-1)*32+1;return this.newDate(M<=0?M-1:M,e,t)}});var x={20:"Fruitbat",21:"Anchovy"};X.calendars.discworld=g}}),OG=Ye({"node_modules/world-calendars/dist/calendars/ethiopian.js"(){var X=Tp(),H=Wf();function g(x){this.local=this.regionalOptions[x||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Ethiopian",jdEpoch:17242205e-1,daysPerMonth:[30,30,30,30,30,30,30,30,30,30,30,30,5],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Ethiopian",epochs:["BEE","EE"],monthNames:["Meskerem","Tikemet","Hidar","Tahesas","Tir","Yekatit","Megabit","Miazia","Genbot","Sene","Hamle","Nehase","Pagume"],monthNamesShort:["Mes","Tik","Hid","Tah","Tir","Yek","Meg","Mia","Gen","Sen","Ham","Neh","Pag"],dayNames:["Ehud","Segno","Maksegno","Irob","Hamus","Arb","Kidame"],dayNamesShort:["Ehu","Seg","Mak","Iro","Ham","Arb","Kid"],dayNamesMin:["Eh","Se","Ma","Ir","Ha","Ar","Ki"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(M){var A=this._validate(M,this.minMonth,this.minDay,X.local.invalidYear),M=A.year()+(A.year()<0?1:0);return M%4===3||M%4===-1},monthsInYear:function(x){return this._validate(x,this.minMonth,this.minDay,X.local.invalidYear||X.regionalOptions[""].invalidYear),13},weekOfYear:function(x,A,M){var e=this.newDate(x,A,M);return e.add(-e.dayOfWeek(),"d"),Math.floor((e.dayOfYear()-1)/7)+1},daysInMonth:function(x,A){var M=this._validate(x,A,this.minDay,X.local.invalidMonth);return this.daysPerMonth[M.month()-1]+(M.month()===13&&this.leapYear(M.year())?1:0)},weekDay:function(x,A,M){return(this.dayOfWeek(x,A,M)||7)<6},toJD:function(x,A,M){var e=this._validate(x,A,M,X.local.invalidDate);return x=e.year(),x<0&&x++,e.day()+(e.month()-1)*30+(x-1)*365+Math.floor(x/4)+this.jdEpoch-1},fromJD:function(x){var A=Math.floor(x)+.5-this.jdEpoch,M=Math.floor((A-Math.floor((A+366)/1461))/365)+1;M<=0&&M--,A=Math.floor(x)+.5-this.newDate(M,1,1).toJD();var e=Math.floor(A/30)+1,t=A-(e-1)*30+1;return this.newDate(M,e,t)}}),X.calendars.ethiopian=g}}),BG=Ye({"node_modules/world-calendars/dist/calendars/hebrew.js"(){var X=Tp(),H=Wf();function g(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Hebrew",jdEpoch:347995.5,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29,29],hasYearZero:!1,minMonth:1,firstMonth:7,minDay:1,regionalOptions:{"":{name:"Hebrew",epochs:["BAM","AM"],monthNames:["Nisan","Iyar","Sivan","Tammuz","Av","Elul","Tishrei","Cheshvan","Kislev","Tevet","Shevat","Adar","Adar II"],monthNamesShort:["Nis","Iya","Siv","Tam","Av","Elu","Tis","Che","Kis","Tev","She","Ada","Ad2"],dayNames:["Yom Rishon","Yom Sheni","Yom Shlishi","Yom Revi'i","Yom Chamishi","Yom Shishi","Yom Shabbat"],dayNamesShort:["Ris","She","Shl","Rev","Cha","Shi","Sha"],dayNamesMin:["Ri","She","Shl","Re","Ch","Shi","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(A){var M=this._validate(A,this.minMonth,this.minDay,X.local.invalidYear);return this._leapYear(M.year())},_leapYear:function(A){return A=A<0?A+1:A,x(A*7+1,19)<7},monthsInYear:function(A){return this._validate(A,this.minMonth,this.minDay,X.local.invalidYear),this._leapYear(A.year?A.year():A)?13:12},weekOfYear:function(A,M,e){var t=this.newDate(A,M,e);return t.add(-t.dayOfWeek(),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInYear:function(A){var M=this._validate(A,this.minMonth,this.minDay,X.local.invalidYear);return A=M.year(),this.toJD(A===-1?1:A+1,7,1)-this.toJD(A,7,1)},daysInMonth:function(A,M){return A.year&&(M=A.month(),A=A.year()),this._validate(A,M,this.minDay,X.local.invalidMonth),M===12&&this.leapYear(A)||M===8&&x(this.daysInYear(A),10)===5?30:M===9&&x(this.daysInYear(A),10)===3?29:this.daysPerMonth[M-1]},weekDay:function(A,M,e){return this.dayOfWeek(A,M,e)!==6},extraInfo:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate);return{yearType:(this.leapYear(t)?"embolismic":"common")+" "+["deficient","regular","complete"][this.daysInYear(t)%10-3]}},toJD:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate);A=t.year(),M=t.month(),e=t.day();var r=A<=0?A+1:A,o=this.jdEpoch+this._delay1(r)+this._delay2(r)+e+1;if(M<7){for(var a=7;a<=this.monthsInYear(A);a++)o+=this.daysInMonth(A,a);for(var a=1;a=this.toJD(M===-1?1:M+1,7,1);)M++;for(var e=Athis.toJD(M,e,this.daysInMonth(M,e));)e++;var t=A-this.toJD(M,e,1)+1;return this.newDate(M,e,t)}});function x(A,M){return A-M*Math.floor(A/M)}X.calendars.hebrew=g}}),NG=Ye({"node_modules/world-calendars/dist/calendars/islamic.js"(){var X=Tp(),H=Wf();function g(x){this.local=this.regionalOptions[x||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Islamic",jdEpoch:19484395e-1,daysPerMonth:[30,29,30,29,30,29,30,29,30,29,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Islamic",epochs:["BH","AH"],monthNames:["Muharram","Safar","Rabi' al-awwal","Rabi' al-thani","Jumada al-awwal","Jumada al-thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-ahad","Yawm al-ithnayn","Yawm ath-thulaathaa'","Yawm al-arbi'aa'","Yawm al-kham\u012Bs","Yawm al-jum'a","Yawm as-sabt"],dayNamesShort:["Aha","Ith","Thu","Arb","Kha","Jum","Sab"],dayNamesMin:["Ah","It","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(x){var A=this._validate(x,this.minMonth,this.minDay,X.local.invalidYear);return(A.year()*11+14)%30<11},weekOfYear:function(x,A,M){var e=this.newDate(x,A,M);return e.add(-e.dayOfWeek(),"d"),Math.floor((e.dayOfYear()-1)/7)+1},daysInYear:function(x){return this.leapYear(x)?355:354},daysInMonth:function(x,A){var M=this._validate(x,A,this.minDay,X.local.invalidMonth);return this.daysPerMonth[M.month()-1]+(M.month()===12&&this.leapYear(M.year())?1:0)},weekDay:function(x,A,M){return this.dayOfWeek(x,A,M)!==5},toJD:function(x,A,M){var e=this._validate(x,A,M,X.local.invalidDate);return x=e.year(),A=e.month(),M=e.day(),x=x<=0?x+1:x,M+Math.ceil(29.5*(A-1))+(x-1)*354+Math.floor((3+11*x)/30)+this.jdEpoch-1},fromJD:function(x){x=Math.floor(x)+.5;var A=Math.floor((30*(x-this.jdEpoch)+10646)/10631);A=A<=0?A-1:A;var M=Math.min(12,Math.ceil((x-29-this.toJD(A,1,1))/29.5)+1),e=x-this.toJD(A,M,1)+1;return this.newDate(A,M,e)}}),X.calendars.islamic=g}}),UG=Ye({"node_modules/world-calendars/dist/calendars/julian.js"(){var X=Tp(),H=Wf();function g(x){this.local=this.regionalOptions[x||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Julian",jdEpoch:17214235e-1,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Julian",epochs:["BC","AD"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"mm/dd/yyyy",firstDay:0,isRTL:!1}},leapYear:function(M){var A=this._validate(M,this.minMonth,this.minDay,X.local.invalidYear),M=A.year()<0?A.year()+1:A.year();return M%4===0},weekOfYear:function(x,A,M){var e=this.newDate(x,A,M);return e.add(4-(e.dayOfWeek()||7),"d"),Math.floor((e.dayOfYear()-1)/7)+1},daysInMonth:function(x,A){var M=this._validate(x,A,this.minDay,X.local.invalidMonth);return this.daysPerMonth[M.month()-1]+(M.month()===2&&this.leapYear(M.year())?1:0)},weekDay:function(x,A,M){return(this.dayOfWeek(x,A,M)||7)<6},toJD:function(x,A,M){var e=this._validate(x,A,M,X.local.invalidDate);return x=e.year(),A=e.month(),M=e.day(),x<0&&x++,A<=2&&(x--,A+=12),Math.floor(365.25*(x+4716))+Math.floor(30.6001*(A+1))+M-1524.5},fromJD:function(x){var A=Math.floor(x+.5),M=A+1524,e=Math.floor((M-122.1)/365.25),t=Math.floor(365.25*e),r=Math.floor((M-t)/30.6001),o=r-Math.floor(r<14?1:13),a=e-Math.floor(o>2?4716:4715),i=M-t-Math.floor(30.6001*r);return a<=0&&a--,this.newDate(a,o,i)}}),X.calendars.julian=g}}),jG=Ye({"node_modules/world-calendars/dist/calendars/mayan.js"(){var X=Tp(),H=Wf();function g(M){this.local=this.regionalOptions[M||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Mayan",jdEpoch:584282.5,hasYearZero:!0,minMonth:0,firstMonth:0,minDay:0,regionalOptions:{"":{name:"Mayan",epochs:["",""],monthNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],monthNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17"],dayNames:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesShort:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],dayNamesMin:["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19"],digits:null,dateFormat:"YYYY.m.d",firstDay:0,isRTL:!1,haabMonths:["Pop","Uo","Zip","Zotz","Tzec","Xul","Yaxkin","Mol","Chen","Yax","Zac","Ceh","Mac","Kankin","Muan","Pax","Kayab","Cumku","Uayeb"],tzolkinMonths:["Imix","Ik","Akbal","Kan","Chicchan","Cimi","Manik","Lamat","Muluc","Oc","Chuen","Eb","Ben","Ix","Men","Cib","Caban","Etznab","Cauac","Ahau"]}},leapYear:function(M){return this._validate(M,this.minMonth,this.minDay,X.local.invalidYear),!1},formatYear:function(M){var e=this._validate(M,this.minMonth,this.minDay,X.local.invalidYear);M=e.year();var t=Math.floor(M/400);M=M%400,M+=M<0?400:0;var r=Math.floor(M/20);return t+"."+r+"."+M%20},forYear:function(M){if(M=M.split("."),M.length<3)throw"Invalid Mayan year";for(var e=0,t=0;t19||t>0&&r<0)throw"Invalid Mayan year";e=e*20+r}return e},monthsInYear:function(M){return this._validate(M,this.minMonth,this.minDay,X.local.invalidYear),18},weekOfYear:function(M,e,t){return this._validate(M,e,t,X.local.invalidDate),0},daysInYear:function(M){return this._validate(M,this.minMonth,this.minDay,X.local.invalidYear),360},daysInMonth:function(M,e){return this._validate(M,e,this.minDay,X.local.invalidMonth),20},daysInWeek:function(){return 5},dayOfWeek:function(M,e,t){var r=this._validate(M,e,t,X.local.invalidDate);return r.day()},weekDay:function(M,e,t){return this._validate(M,e,t,X.local.invalidDate),!0},extraInfo:function(M,e,t){var r=this._validate(M,e,t,X.local.invalidDate),o=r.toJD(),a=this._toHaab(o),i=this._toTzolkin(o);return{haabMonthName:this.local.haabMonths[a[0]-1],haabMonth:a[0],haabDay:a[1],tzolkinDayName:this.local.tzolkinMonths[i[0]-1],tzolkinDay:i[0],tzolkinTrecena:i[1]}},_toHaab:function(M){M-=this.jdEpoch;var e=x(M+8+17*20,365);return[Math.floor(e/20)+1,x(e,20)]},_toTzolkin:function(M){return M-=this.jdEpoch,[A(M+20,20),A(M+4,13)]},toJD:function(M,e,t){var r=this._validate(M,e,t,X.local.invalidDate);return r.day()+r.month()*20+r.year()*360+this.jdEpoch},fromJD:function(M){M=Math.floor(M)+.5-this.jdEpoch;var e=Math.floor(M/360);M=M%360,M+=M<0?360:0;var t=Math.floor(M/20),r=M%20;return this.newDate(e,t,r)}});function x(M,e){return M-e*Math.floor(M/e)}function A(M,e){return x(M-1,e)+1}X.calendars.mayan=g}}),VG=Ye({"node_modules/world-calendars/dist/calendars/nanakshahi.js"(){var X=Tp(),H=Wf();function g(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar;var x=X.instance("gregorian");H(g.prototype,{name:"Nanakshahi",jdEpoch:22576735e-1,daysPerMonth:[31,31,31,31,31,30,30,30,30,30,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Nanakshahi",epochs:["BN","AN"],monthNames:["Chet","Vaisakh","Jeth","Harh","Sawan","Bhadon","Assu","Katak","Maghar","Poh","Magh","Phagun"],monthNamesShort:["Che","Vai","Jet","Har","Saw","Bha","Ass","Kat","Mgr","Poh","Mgh","Pha"],dayNames:["Somvaar","Mangalvar","Budhvaar","Veervaar","Shukarvaar","Sanicharvaar","Etvaar"],dayNamesShort:["Som","Mangal","Budh","Veer","Shukar","Sanichar","Et"],dayNamesMin:["So","Ma","Bu","Ve","Sh","Sa","Et"],digits:null,dateFormat:"dd-mm-yyyy",firstDay:0,isRTL:!1}},leapYear:function(A){var M=this._validate(A,this.minMonth,this.minDay,X.local.invalidYear||X.regionalOptions[""].invalidYear);return x.leapYear(M.year()+(M.year()<1?1:0)+1469)},weekOfYear:function(A,M,e){var t=this.newDate(A,M,e);return t.add(1-(t.dayOfWeek()||7),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInMonth:function(A,M){var e=this._validate(A,M,this.minDay,X.local.invalidMonth);return this.daysPerMonth[e.month()-1]+(e.month()===12&&this.leapYear(e.year())?1:0)},weekDay:function(A,M,e){return(this.dayOfWeek(A,M,e)||7)<6},toJD:function(r,M,e){var t=this._validate(r,M,e,X.local.invalidMonth),r=t.year();r<0&&r++;for(var o=t.day(),a=1;a=this.toJD(M+1,1,1);)M++;for(var e=A-Math.floor(this.toJD(M,1,1)+.5)+1,t=1;e>this.daysInMonth(M,t);)e-=this.daysInMonth(M,t),t++;return this.newDate(M,t,e)}}),X.calendars.nanakshahi=g}}),qG=Ye({"node_modules/world-calendars/dist/calendars/nepali.js"(){var X=Tp(),H=Wf();function g(x){this.local=this.regionalOptions[x||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Nepali",jdEpoch:17007095e-1,daysPerMonth:[31,31,32,32,31,30,30,29,30,29,30,30],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,daysPerYear:365,regionalOptions:{"":{name:"Nepali",epochs:["BBS","ABS"],monthNames:["Baisakh","Jestha","Ashadh","Shrawan","Bhadra","Ashwin","Kartik","Mangsir","Paush","Mangh","Falgun","Chaitra"],monthNamesShort:["Bai","Je","As","Shra","Bha","Ash","Kar","Mang","Pau","Ma","Fal","Chai"],dayNames:["Aaitabaar","Sombaar","Manglbaar","Budhabaar","Bihibaar","Shukrabaar","Shanibaar"],dayNamesShort:["Aaita","Som","Mangl","Budha","Bihi","Shukra","Shani"],dayNamesMin:["Aai","So","Man","Bu","Bi","Shu","Sha"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:1,isRTL:!1}},leapYear:function(x){return this.daysInYear(x)!==this.daysPerYear},weekOfYear:function(x,A,M){var e=this.newDate(x,A,M);return e.add(-e.dayOfWeek(),"d"),Math.floor((e.dayOfYear()-1)/7)+1},daysInYear:function(x){var A=this._validate(x,this.minMonth,this.minDay,X.local.invalidYear);if(x=A.year(),typeof this.NEPALI_CALENDAR_DATA[x]>"u")return this.daysPerYear;for(var M=0,e=this.minMonth;e<=12;e++)M+=this.NEPALI_CALENDAR_DATA[x][e];return M},daysInMonth:function(x,A){return x.year&&(A=x.month(),x=x.year()),this._validate(x,A,this.minDay,X.local.invalidMonth),typeof this.NEPALI_CALENDAR_DATA[x]>"u"?this.daysPerMonth[A-1]:this.NEPALI_CALENDAR_DATA[x][A]},weekDay:function(x,A,M){return this.dayOfWeek(x,A,M)!==6},toJD:function(x,A,M){var e=this._validate(x,A,M,X.local.invalidDate);x=e.year(),A=e.month(),M=e.day();var t=X.instance(),r=0,o=A,a=x;this._createMissingCalendarData(x);var i=x-(o>9||o===9&&M>=this.NEPALI_CALENDAR_DATA[a][0]?56:57);for(A!==9&&(r=M,o--);o!==9;)o<=0&&(o=12,a--),r+=this.NEPALI_CALENDAR_DATA[a][o],o--;return A===9?(r+=M-this.NEPALI_CALENDAR_DATA[a][0],r<0&&(r+=t.daysInYear(i))):r+=this.NEPALI_CALENDAR_DATA[a][9]-this.NEPALI_CALENDAR_DATA[a][0],t.newDate(i,1,1).add(r,"d").toJD()},fromJD:function(x){var A=X.instance(),M=A.fromJD(x),e=M.year(),t=M.dayOfYear(),r=e+56;this._createMissingCalendarData(r);for(var o=9,a=this.NEPALI_CALENDAR_DATA[r][0],i=this.NEPALI_CALENDAR_DATA[r][o]-a+1;t>i;)o++,o>12&&(o=1,r++),i+=this.NEPALI_CALENDAR_DATA[r][o];var n=this.NEPALI_CALENDAR_DATA[r][o]-(i-t);return this.newDate(r,o,n)},_createMissingCalendarData:function(x){var A=this.daysPerMonth.slice(0);A.unshift(17);for(var M=x-1;M"u"&&(this.NEPALI_CALENDAR_DATA[M]=A)},NEPALI_CALENDAR_DATA:{1970:[18,31,31,32,31,31,31,30,29,30,29,30,30],1971:[18,31,31,32,31,32,30,30,29,30,29,30,30],1972:[17,31,32,31,32,31,30,30,30,29,29,30,30],1973:[19,30,32,31,32,31,30,30,30,29,30,29,31],1974:[19,31,31,32,30,31,31,30,29,30,29,30,30],1975:[18,31,31,32,32,30,31,30,29,30,29,30,30],1976:[17,31,32,31,32,31,30,30,30,29,29,30,31],1977:[18,31,32,31,32,31,31,29,30,29,30,29,31],1978:[18,31,31,32,31,31,31,30,29,30,29,30,30],1979:[18,31,31,32,32,31,30,30,29,30,29,30,30],1980:[17,31,32,31,32,31,30,30,30,29,29,30,31],1981:[18,31,31,31,32,31,31,29,30,30,29,30,30],1982:[18,31,31,32,31,31,31,30,29,30,29,30,30],1983:[18,31,31,32,32,31,30,30,29,30,29,30,30],1984:[17,31,32,31,32,31,30,30,30,29,29,30,31],1985:[18,31,31,31,32,31,31,29,30,30,29,30,30],1986:[18,31,31,32,31,31,31,30,29,30,29,30,30],1987:[18,31,32,31,32,31,30,30,29,30,29,30,30],1988:[17,31,32,31,32,31,30,30,30,29,29,30,31],1989:[18,31,31,31,32,31,31,30,29,30,29,30,30],1990:[18,31,31,32,31,31,31,30,29,30,29,30,30],1991:[18,31,32,31,32,31,30,30,29,30,29,30,30],1992:[17,31,32,31,32,31,30,30,30,29,30,29,31],1993:[18,31,31,31,32,31,31,30,29,30,29,30,30],1994:[18,31,31,32,31,31,31,30,29,30,29,30,30],1995:[17,31,32,31,32,31,30,30,30,29,29,30,30],1996:[17,31,32,31,32,31,30,30,30,29,30,29,31],1997:[18,31,31,32,31,31,31,30,29,30,29,30,30],1998:[18,31,31,32,31,31,31,30,29,30,29,30,30],1999:[17,31,32,31,32,31,30,30,30,29,29,30,31],2e3:[17,30,32,31,32,31,30,30,30,29,30,29,31],2001:[18,31,31,32,31,31,31,30,29,30,29,30,30],2002:[18,31,31,32,32,31,30,30,29,30,29,30,30],2003:[17,31,32,31,32,31,30,30,30,29,29,30,31],2004:[17,30,32,31,32,31,30,30,30,29,30,29,31],2005:[18,31,31,32,31,31,31,30,29,30,29,30,30],2006:[18,31,31,32,32,31,30,30,29,30,29,30,30],2007:[17,31,32,31,32,31,30,30,30,29,29,30,31],2008:[17,31,31,31,32,31,31,29,30,30,29,29,31],2009:[18,31,31,32,31,31,31,30,29,30,29,30,30],2010:[18,31,31,32,32,31,30,30,29,30,29,30,30],2011:[17,31,32,31,32,31,30,30,30,29,29,30,31],2012:[17,31,31,31,32,31,31,29,30,30,29,30,30],2013:[18,31,31,32,31,31,31,30,29,30,29,30,30],2014:[18,31,31,32,32,31,30,30,29,30,29,30,30],2015:[17,31,32,31,32,31,30,30,30,29,29,30,31],2016:[17,31,31,31,32,31,31,29,30,30,29,30,30],2017:[18,31,31,32,31,31,31,30,29,30,29,30,30],2018:[18,31,32,31,32,31,30,30,29,30,29,30,30],2019:[17,31,32,31,32,31,30,30,30,29,30,29,31],2020:[17,31,31,31,32,31,31,30,29,30,29,30,30],2021:[18,31,31,32,31,31,31,30,29,30,29,30,30],2022:[17,31,32,31,32,31,30,30,30,29,29,30,30],2023:[17,31,32,31,32,31,30,30,30,29,30,29,31],2024:[17,31,31,31,32,31,31,30,29,30,29,30,30],2025:[18,31,31,32,31,31,31,30,29,30,29,30,30],2026:[17,31,32,31,32,31,30,30,30,29,29,30,31],2027:[17,30,32,31,32,31,30,30,30,29,30,29,31],2028:[17,31,31,32,31,31,31,30,29,30,29,30,30],2029:[18,31,31,32,31,32,30,30,29,30,29,30,30],2030:[17,31,32,31,32,31,30,30,30,30,30,30,31],2031:[17,31,32,31,32,31,31,31,31,31,31,31,31],2032:[17,32,32,32,32,32,32,32,32,32,32,32,32],2033:[18,31,31,32,32,31,30,30,29,30,29,30,30],2034:[17,31,32,31,32,31,30,30,30,29,29,30,31],2035:[17,30,32,31,32,31,31,29,30,30,29,29,31],2036:[17,31,31,32,31,31,31,30,29,30,29,30,30],2037:[18,31,31,32,32,31,30,30,29,30,29,30,30],2038:[17,31,32,31,32,31,30,30,30,29,29,30,31],2039:[17,31,31,31,32,31,31,29,30,30,29,30,30],2040:[17,31,31,32,31,31,31,30,29,30,29,30,30],2041:[18,31,31,32,32,31,30,30,29,30,29,30,30],2042:[17,31,32,31,32,31,30,30,30,29,29,30,31],2043:[17,31,31,31,32,31,31,29,30,30,29,30,30],2044:[17,31,31,32,31,31,31,30,29,30,29,30,30],2045:[18,31,32,31,32,31,30,30,29,30,29,30,30],2046:[17,31,32,31,32,31,30,30,30,29,29,30,31],2047:[17,31,31,31,32,31,31,30,29,30,29,30,30],2048:[17,31,31,32,31,31,31,30,29,30,29,30,30],2049:[17,31,32,31,32,31,30,30,30,29,29,30,30],2050:[17,31,32,31,32,31,30,30,30,29,30,29,31],2051:[17,31,31,31,32,31,31,30,29,30,29,30,30],2052:[17,31,31,32,31,31,31,30,29,30,29,30,30],2053:[17,31,32,31,32,31,30,30,30,29,29,30,30],2054:[17,31,32,31,32,31,30,30,30,29,30,29,31],2055:[17,31,31,32,31,31,31,30,29,30,30,29,30],2056:[17,31,31,32,31,32,30,30,29,30,29,30,30],2057:[17,31,32,31,32,31,30,30,30,29,29,30,31],2058:[17,30,32,31,32,31,30,30,30,29,30,29,31],2059:[17,31,31,32,31,31,31,30,29,30,29,30,30],2060:[17,31,31,32,32,31,30,30,29,30,29,30,30],2061:[17,31,32,31,32,31,30,30,30,29,29,30,31],2062:[17,30,32,31,32,31,31,29,30,29,30,29,31],2063:[17,31,31,32,31,31,31,30,29,30,29,30,30],2064:[17,31,31,32,32,31,30,30,29,30,29,30,30],2065:[17,31,32,31,32,31,30,30,30,29,29,30,31],2066:[17,31,31,31,32,31,31,29,30,30,29,29,31],2067:[17,31,31,32,31,31,31,30,29,30,29,30,30],2068:[17,31,31,32,32,31,30,30,29,30,29,30,30],2069:[17,31,32,31,32,31,30,30,30,29,29,30,31],2070:[17,31,31,31,32,31,31,29,30,30,29,30,30],2071:[17,31,31,32,31,31,31,30,29,30,29,30,30],2072:[17,31,32,31,32,31,30,30,29,30,29,30,30],2073:[17,31,32,31,32,31,30,30,30,29,29,30,31],2074:[17,31,31,31,32,31,31,30,29,30,29,30,30],2075:[17,31,31,32,31,31,31,30,29,30,29,30,30],2076:[16,31,32,31,32,31,30,30,30,29,29,30,30],2077:[17,31,32,31,32,31,30,30,30,29,30,29,31],2078:[17,31,31,31,32,31,31,30,29,30,29,30,30],2079:[17,31,31,32,31,31,31,30,29,30,29,30,30],2080:[16,31,32,31,32,31,30,30,30,29,29,30,30],2081:[17,31,31,32,32,31,30,30,30,29,30,30,30],2082:[17,31,32,31,32,31,30,30,30,29,30,30,30],2083:[17,31,31,32,31,31,30,30,30,29,30,30,30],2084:[17,31,31,32,31,31,30,30,30,29,30,30,30],2085:[17,31,32,31,32,31,31,30,30,29,30,30,30],2086:[17,31,32,31,32,31,30,30,30,29,30,30,30],2087:[16,31,31,32,31,31,31,30,30,29,30,30,30],2088:[16,30,31,32,32,30,31,30,30,29,30,30,30],2089:[17,31,32,31,32,31,30,30,30,29,30,30,30],2090:[17,31,32,31,32,31,30,30,30,29,30,30,30],2091:[16,31,31,32,31,31,31,30,30,29,30,30,30],2092:[16,31,31,32,32,31,30,30,30,29,30,30,30],2093:[17,31,32,31,32,31,30,30,30,29,30,30,30],2094:[17,31,31,32,31,31,30,30,30,29,30,30,30],2095:[17,31,31,32,31,31,31,30,29,30,30,30,30],2096:[17,30,31,32,32,31,30,30,29,30,29,30,30],2097:[17,31,32,31,32,31,30,30,30,29,30,30,30],2098:[17,31,31,32,31,31,31,29,30,29,30,30,31],2099:[17,31,31,32,31,31,31,30,29,29,30,30,30],2100:[17,31,32,31,32,30,31,30,29,30,29,30,30]}}),X.calendars.nepali=g}}),HG=Ye({"node_modules/world-calendars/dist/calendars/persian.js"(){var X=Tp(),H=Wf();function g(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"Persian",jdEpoch:19483205e-1,daysPerMonth:[31,31,31,31,31,31,30,30,30,30,30,29],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Persian",epochs:["BP","AP"],monthNames:["Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar","Mehr","Aban","Azar","Day","Bahman","Esfand"],monthNamesShort:["Far","Ord","Kho","Tir","Mor","Sha","Meh","Aba","Aza","Day","Bah","Esf"],dayNames:["Yekshambe","Doshambe","Seshambe","Ch\xE6harshambe","Panjshambe","Jom'e","Shambe"],dayNamesShort:["Yek","Do","Se","Ch\xE6","Panj","Jom","Sha"],dayNamesMin:["Ye","Do","Se","Ch","Pa","Jo","Sh"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!1}},leapYear:function(A){var M=this._validate(A,this.minMonth,this.minDay,X.local.invalidYear);return((M.year()-(M.year()>0?474:473))%2820+474+38)*682%2816<682},weekOfYear:function(A,M,e){var t=this.newDate(A,M,e);return t.add(-((t.dayOfWeek()+1)%7),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInMonth:function(A,M){var e=this._validate(A,M,this.minDay,X.local.invalidMonth);return this.daysPerMonth[e.month()-1]+(e.month()===12&&this.leapYear(e.year())?1:0)},weekDay:function(A,M,e){return this.dayOfWeek(A,M,e)!==5},toJD:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate);A=t.year(),M=t.month(),e=t.day();var r=A-(A>=0?474:473),o=474+x(r,2820);return e+(M<=7?(M-1)*31:(M-1)*30+6)+Math.floor((o*682-110)/2816)+(o-1)*365+Math.floor(r/2820)*1029983+this.jdEpoch-1},fromJD:function(A){A=Math.floor(A)+.5;var M=A-this.toJD(475,1,1),e=Math.floor(M/1029983),t=x(M,1029983),r=2820;if(t!==1029982){var o=Math.floor(t/366),a=x(t,366);r=Math.floor((2134*o+2816*a+2815)/1028522)+o+1}var i=r+2820*e+474;i=i<=0?i-1:i;var n=A-this.toJD(i,1,1)+1,s=n<=186?Math.ceil(n/31):Math.ceil((n-6)/30),c=A-this.toJD(i,s,1)+1;return this.newDate(i,s,c)}});function x(A,M){return A-M*Math.floor(A/M)}X.calendars.persian=g,X.calendars.jalali=g}}),GG=Ye({"node_modules/world-calendars/dist/calendars/taiwan.js"(){var X=Tp(),H=Wf(),g=X.instance();function x(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}x.prototype=new X.baseCalendar,H(x.prototype,{name:"Taiwan",jdEpoch:24194025e-1,yearsOffset:1911,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Taiwan",epochs:["BROC","ROC"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:1,isRTL:!1}},leapYear:function(e){var M=this._validate(e,this.minMonth,this.minDay,X.local.invalidYear),e=this._t2gYear(M.year());return g.leapYear(e)},weekOfYear:function(r,M,e){var t=this._validate(r,this.minMonth,this.minDay,X.local.invalidYear),r=this._t2gYear(t.year());return g.weekOfYear(r,t.month(),t.day())},daysInMonth:function(A,M){var e=this._validate(A,M,this.minDay,X.local.invalidMonth);return this.daysPerMonth[e.month()-1]+(e.month()===2&&this.leapYear(e.year())?1:0)},weekDay:function(A,M,e){return(this.dayOfWeek(A,M,e)||7)<6},toJD:function(r,M,e){var t=this._validate(r,M,e,X.local.invalidDate),r=this._t2gYear(t.year());return g.toJD(r,t.month(),t.day())},fromJD:function(A){var M=g.fromJD(A),e=this._g2tYear(M.year());return this.newDate(e,M.month(),M.day())},_t2gYear:function(A){return A+this.yearsOffset+(A>=-this.yearsOffset&&A<=-1?1:0)},_g2tYear:function(A){return A-this.yearsOffset-(A>=1&&A<=this.yearsOffset?1:0)}}),X.calendars.taiwan=x}}),WG=Ye({"node_modules/world-calendars/dist/calendars/thai.js"(){var X=Tp(),H=Wf(),g=X.instance();function x(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}x.prototype=new X.baseCalendar,H(x.prototype,{name:"Thai",jdEpoch:15230985e-1,yearsOffset:543,daysPerMonth:[31,28,31,30,31,30,31,31,30,31,30,31],hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Thai",epochs:["BBE","BE"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],digits:null,dateFormat:"dd/mm/yyyy",firstDay:0,isRTL:!1}},leapYear:function(e){var M=this._validate(e,this.minMonth,this.minDay,X.local.invalidYear),e=this._t2gYear(M.year());return g.leapYear(e)},weekOfYear:function(r,M,e){var t=this._validate(r,this.minMonth,this.minDay,X.local.invalidYear),r=this._t2gYear(t.year());return g.weekOfYear(r,t.month(),t.day())},daysInMonth:function(A,M){var e=this._validate(A,M,this.minDay,X.local.invalidMonth);return this.daysPerMonth[e.month()-1]+(e.month()===2&&this.leapYear(e.year())?1:0)},weekDay:function(A,M,e){return(this.dayOfWeek(A,M,e)||7)<6},toJD:function(r,M,e){var t=this._validate(r,M,e,X.local.invalidDate),r=this._t2gYear(t.year());return g.toJD(r,t.month(),t.day())},fromJD:function(A){var M=g.fromJD(A),e=this._g2tYear(M.year());return this.newDate(e,M.month(),M.day())},_t2gYear:function(A){return A-this.yearsOffset-(A>=1&&A<=this.yearsOffset?1:0)},_g2tYear:function(A){return A+this.yearsOffset+(A>=-this.yearsOffset&&A<=-1?1:0)}}),X.calendars.thai=x}}),ZG=Ye({"node_modules/world-calendars/dist/calendars/ummalqura.js"(){var X=Tp(),H=Wf();function g(A){this.local=this.regionalOptions[A||""]||this.regionalOptions[""]}g.prototype=new X.baseCalendar,H(g.prototype,{name:"UmmAlQura",hasYearZero:!1,minMonth:1,firstMonth:1,minDay:1,regionalOptions:{"":{name:"Umm al-Qura",epochs:["BH","AH"],monthNames:["Al-Muharram","Safar","Rabi' al-awwal","Rabi' Al-Thani","Jumada Al-Awwal","Jumada Al-Thani","Rajab","Sha'aban","Ramadan","Shawwal","Dhu al-Qi'dah","Dhu al-Hijjah"],monthNamesShort:["Muh","Saf","Rab1","Rab2","Jum1","Jum2","Raj","Sha'","Ram","Shaw","DhuQ","DhuH"],dayNames:["Yawm al-Ahad","Yawm al-Ithnain","Yawm al-Thal\u0101th\u0101\u2019","Yawm al-Arba\u2018\u0101\u2019","Yawm al-Kham\u012Bs","Yawm al-Jum\u2018a","Yawm al-Sabt"],dayNamesMin:["Ah","Ith","Th","Ar","Kh","Ju","Sa"],digits:null,dateFormat:"yyyy/mm/dd",firstDay:6,isRTL:!0}},leapYear:function(A){var M=this._validate(A,this.minMonth,this.minDay,X.local.invalidYear);return this.daysInYear(M.year())===355},weekOfYear:function(A,M,e){var t=this.newDate(A,M,e);return t.add(-t.dayOfWeek(),"d"),Math.floor((t.dayOfYear()-1)/7)+1},daysInYear:function(A){for(var M=0,e=1;e<=12;e++)M+=this.daysInMonth(A,e);return M},daysInMonth:function(A,M){for(var e=this._validate(A,M,this.minDay,X.local.invalidMonth),t=e.toJD()-24e5+.5,r=0,o=0;ot)return x[r]-x[r-1];r++}return 30},weekDay:function(A,M,e){return this.dayOfWeek(A,M,e)!==5},toJD:function(A,M,e){var t=this._validate(A,M,e,X.local.invalidDate),r=12*(t.year()-1)+t.month()-15292,o=t.day()+x[r-1]-1;return o+24e5-.5},fromJD:function(A){for(var M=A-24e5+.5,e=0,t=0;tM);t++)e++;var r=e+15292,o=Math.floor((r-1)/12),a=o+1,i=r-12*o,n=M-x[e-1]+1;return this.newDate(a,i,n)},isValid:function(A,M,e){var t=X.baseCalendar.prototype.isValid.apply(this,arguments);return t&&(A=A.year!=null?A.year:A,t=A>=1276&&A<=1500),t},_validate:function(A,M,e,t){var r=X.baseCalendar.prototype._validate.apply(this,arguments);if(r.year<1276||r.year>1500)throw t.replace(/\{0\}/,this.local.name);return r}}),X.calendars.ummalqura=g;var x=[20,50,79,109,138,168,197,227,256,286,315,345,374,404,433,463,492,522,551,581,611,641,670,700,729,759,788,818,847,877,906,936,965,995,1024,1054,1083,1113,1142,1172,1201,1231,1260,1290,1320,1350,1379,1409,1438,1468,1497,1527,1556,1586,1615,1645,1674,1704,1733,1763,1792,1822,1851,1881,1910,1940,1969,1999,2028,2058,2087,2117,2146,2176,2205,2235,2264,2294,2323,2353,2383,2413,2442,2472,2501,2531,2560,2590,2619,2649,2678,2708,2737,2767,2796,2826,2855,2885,2914,2944,2973,3003,3032,3062,3091,3121,3150,3180,3209,3239,3268,3298,3327,3357,3386,3416,3446,3476,3505,3535,3564,3594,3623,3653,3682,3712,3741,3771,3800,3830,3859,3889,3918,3948,3977,4007,4036,4066,4095,4125,4155,4185,4214,4244,4273,4303,4332,4362,4391,4421,4450,4480,4509,4539,4568,4598,4627,4657,4686,4716,4745,4775,4804,4834,4863,4893,4922,4952,4981,5011,5040,5070,5099,5129,5158,5188,5218,5248,5277,5307,5336,5366,5395,5425,5454,5484,5513,5543,5572,5602,5631,5661,5690,5720,5749,5779,5808,5838,5867,5897,5926,5956,5985,6015,6044,6074,6103,6133,6162,6192,6221,6251,6281,6311,6340,6370,6399,6429,6458,6488,6517,6547,6576,6606,6635,6665,6694,6724,6753,6783,6812,6842,6871,6901,6930,6960,6989,7019,7048,7078,7107,7137,7166,7196,7225,7255,7284,7314,7344,7374,7403,7433,7462,7492,7521,7551,7580,7610,7639,7669,7698,7728,7757,7787,7816,7846,7875,7905,7934,7964,7993,8023,8053,8083,8112,8142,8171,8201,8230,8260,8289,8319,8348,8378,8407,8437,8466,8496,8525,8555,8584,8614,8643,8673,8702,8732,8761,8791,8821,8850,8880,8909,8938,8968,8997,9027,9056,9086,9115,9145,9175,9205,9234,9264,9293,9322,9352,9381,9410,9440,9470,9499,9529,9559,9589,9618,9648,9677,9706,9736,9765,9794,9824,9853,9883,9913,9943,9972,10002,10032,10061,10090,10120,10149,10178,10208,10237,10267,10297,10326,10356,10386,10415,10445,10474,10504,10533,10562,10592,10621,10651,10680,10710,10740,10770,10799,10829,10858,10888,10917,10947,10976,11005,11035,11064,11094,11124,11153,11183,11213,11242,11272,11301,11331,11360,11389,11419,11448,11478,11507,11537,11567,11596,11626,11655,11685,11715,11744,11774,11803,11832,11862,11891,11921,11950,11980,12010,12039,12069,12099,12128,12158,12187,12216,12246,12275,12304,12334,12364,12393,12423,12453,12483,12512,12542,12571,12600,12630,12659,12688,12718,12747,12777,12807,12837,12866,12896,12926,12955,12984,13014,13043,13072,13102,13131,13161,13191,13220,13250,13280,13310,13339,13368,13398,13427,13456,13486,13515,13545,13574,13604,13634,13664,13693,13723,13752,13782,13811,13840,13870,13899,13929,13958,13988,14018,14047,14077,14107,14136,14166,14195,14224,14254,14283,14313,14342,14372,14401,14431,14461,14490,14520,14550,14579,14609,14638,14667,14697,14726,14756,14785,14815,14844,14874,14904,14933,14963,14993,15021,15051,15081,15110,15140,15169,15199,15228,15258,15287,15317,15347,15377,15406,15436,15465,15494,15524,15553,15582,15612,15641,15671,15701,15731,15760,15790,15820,15849,15878,15908,15937,15966,15996,16025,16055,16085,16114,16144,16174,16204,16233,16262,16292,16321,16350,16380,16409,16439,16468,16498,16528,16558,16587,16617,16646,16676,16705,16734,16764,16793,16823,16852,16882,16912,16941,16971,17001,17030,17060,17089,17118,17148,17177,17207,17236,17266,17295,17325,17355,17384,17414,17444,17473,17502,17532,17561,17591,17620,17650,17679,17709,17738,17768,17798,17827,17857,17886,17916,17945,17975,18004,18034,18063,18093,18122,18152,18181,18211,18241,18270,18300,18330,18359,18388,18418,18447,18476,18506,18535,18565,18595,18625,18654,18684,18714,18743,18772,18802,18831,18860,18890,18919,18949,18979,19008,19038,19068,19098,19127,19156,19186,19215,19244,19274,19303,19333,19362,19392,19422,19452,19481,19511,19540,19570,19599,19628,19658,19687,19717,19746,19776,19806,19836,19865,19895,19924,19954,19983,20012,20042,20071,20101,20130,20160,20190,20219,20249,20279,20308,20338,20367,20396,20426,20455,20485,20514,20544,20573,20603,20633,20662,20692,20721,20751,20780,20810,20839,20869,20898,20928,20957,20987,21016,21046,21076,21105,21135,21164,21194,21223,21253,21282,21312,21341,21371,21400,21430,21459,21489,21519,21548,21578,21607,21637,21666,21696,21725,21754,21784,21813,21843,21873,21902,21932,21962,21991,22021,22050,22080,22109,22138,22168,22197,22227,22256,22286,22316,22346,22375,22405,22434,22464,22493,22522,22552,22581,22611,22640,22670,22700,22730,22759,22789,22818,22848,22877,22906,22936,22965,22994,23024,23054,23083,23113,23143,23173,23202,23232,23261,23290,23320,23349,23379,23408,23438,23467,23497,23527,23556,23586,23616,23645,23674,23704,23733,23763,23792,23822,23851,23881,23910,23940,23970,23999,24029,24058,24088,24117,24147,24176,24206,24235,24265,24294,24324,24353,24383,24413,24442,24472,24501,24531,24560,24590,24619,24648,24678,24707,24737,24767,24796,24826,24856,24885,24915,24944,24974,25003,25032,25062,25091,25121,25150,25180,25210,25240,25269,25299,25328,25358,25387,25416,25446,25475,25505,25534,25564,25594,25624,25653,25683,25712,25742,25771,25800,25830,25859,25888,25918,25948,25977,26007,26037,26067,26096,26126,26155,26184,26214,26243,26272,26302,26332,26361,26391,26421,26451,26480,26510,26539,26568,26598,26627,26656,26686,26715,26745,26775,26805,26834,26864,26893,26923,26952,26982,27011,27041,27070,27099,27129,27159,27188,27218,27248,27277,27307,27336,27366,27395,27425,27454,27484,27513,27542,27572,27602,27631,27661,27691,27720,27750,27779,27809,27838,27868,27897,27926,27956,27985,28015,28045,28074,28104,28134,28163,28193,28222,28252,28281,28310,28340,28369,28399,28428,28458,28488,28517,28547,28577,28607,28636,28665,28695,28724,28754,28783,28813,28843,28872,28901,28931,28960,28990,29019,29049,29078,29108,29137,29167,29196,29226,29255,29285,29315,29345,29375,29404,29434,29463,29492,29522,29551,29580,29610,29640,29669,29699,29729,29759,29788,29818,29847,29876,29906,29935,29964,29994,30023,30053,30082,30112,30141,30171,30200,30230,30259,30289,30318,30348,30378,30408,30437,30467,30496,30526,30555,30585,30614,30644,30673,30703,30732,30762,30791,30821,30850,30880,30909,30939,30968,30998,31027,31057,31086,31116,31145,31175,31204,31234,31263,31293,31322,31352,31381,31411,31441,31471,31500,31530,31559,31589,31618,31648,31676,31706,31736,31766,31795,31825,31854,31884,31913,31943,31972,32002,32031,32061,32090,32120,32150,32180,32209,32239,32268,32298,32327,32357,32386,32416,32445,32475,32504,32534,32563,32593,32622,32652,32681,32711,32740,32770,32799,32829,32858,32888,32917,32947,32976,33006,33035,33065,33094,33124,33153,33183,33213,33243,33272,33302,33331,33361,33390,33420,33450,33479,33509,33539,33568,33598,33627,33657,33686,33716,33745,33775,33804,33834,33863,33893,33922,33952,33981,34011,34040,34069,34099,34128,34158,34187,34217,34247,34277,34306,34336,34365,34395,34424,34454,34483,34512,34542,34571,34601,34631,34660,34690,34719,34749,34778,34808,34837,34867,34896,34926,34955,34985,35015,35044,35074,35103,35133,35162,35192,35222,35251,35280,35310,35340,35370,35399,35429,35458,35488,35517,35547,35576,35605,35635,35665,35694,35723,35753,35782,35811,35841,35871,35901,35930,35960,35989,36019,36048,36078,36107,36136,36166,36195,36225,36254,36284,36314,36343,36373,36403,36433,36462,36492,36521,36551,36580,36610,36639,36669,36698,36728,36757,36786,36816,36845,36875,36904,36934,36963,36993,37022,37052,37081,37111,37141,37170,37200,37229,37259,37288,37318,37347,37377,37406,37436,37465,37495,37524,37554,37584,37613,37643,37672,37701,37731,37760,37790,37819,37849,37878,37908,37938,37967,37997,38027,38056,38085,38115,38144,38174,38203,38233,38262,38292,38322,38351,38381,38410,38440,38469,38499,38528,38558,38587,38617,38646,38676,38705,38735,38764,38794,38823,38853,38882,38912,38941,38971,39001,39030,39059,39089,39118,39148,39178,39208,39237,39267,39297,39326,39355,39385,39414,39444,39473,39503,39532,39562,39592,39621,39650,39680,39709,39739,39768,39798,39827,39857,39886,39916,39946,39975,40005,40035,40064,40094,40123,40153,40182,40212,40241,40271,40300,40330,40359,40389,40418,40448,40477,40507,40536,40566,40595,40625,40655,40685,40714,40744,40773,40803,40832,40862,40892,40921,40951,40980,41009,41039,41068,41098,41127,41157,41186,41216,41245,41275,41304,41334,41364,41393,41422,41452,41481,41511,41540,41570,41599,41629,41658,41688,41718,41748,41777,41807,41836,41865,41894,41924,41953,41983,42012,42042,42072,42102,42131,42161,42190,42220,42249,42279,42308,42337,42367,42397,42426,42456,42485,42515,42545,42574,42604,42633,42662,42692,42721,42751,42780,42810,42839,42869,42899,42929,42958,42988,43017,43046,43076,43105,43135,43164,43194,43223,43253,43283,43312,43342,43371,43401,43430,43460,43489,43519,43548,43578,43607,43637,43666,43696,43726,43755,43785,43814,43844,43873,43903,43932,43962,43991,44021,44050,44080,44109,44139,44169,44198,44228,44258,44287,44317,44346,44375,44405,44434,44464,44493,44523,44553,44582,44612,44641,44671,44700,44730,44759,44788,44818,44847,44877,44906,44936,44966,44996,45025,45055,45084,45114,45143,45172,45202,45231,45261,45290,45320,45350,45380,45409,45439,45468,45498,45527,45556,45586,45615,45644,45674,45704,45733,45763,45793,45823,45852,45882,45911,45940,45970,45999,46028,46058,46088,46117,46147,46177,46206,46236,46265,46295,46324,46354,46383,46413,46442,46472,46501,46531,46560,46590,46620,46649,46679,46708,46738,46767,46797,46826,46856,46885,46915,46944,46974,47003,47033,47063,47092,47122,47151,47181,47210,47240,47269,47298,47328,47357,47387,47417,47446,47476,47506,47535,47565,47594,47624,47653,47682,47712,47741,47771,47800,47830,47860,47890,47919,47949,47978,48008,48037,48066,48096,48125,48155,48184,48214,48244,48273,48303,48333,48362,48392,48421,48450,48480,48509,48538,48568,48598,48627,48657,48687,48717,48746,48776,48805,48834,48864,48893,48922,48952,48982,49011,49041,49071,49100,49130,49160,49189,49218,49248,49277,49306,49336,49365,49395,49425,49455,49484,49514,49543,49573,49602,49632,49661,49690,49720,49749,49779,49809,49838,49868,49898,49927,49957,49986,50016,50045,50075,50104,50133,50163,50192,50222,50252,50281,50311,50340,50370,50400,50429,50459,50488,50518,50547,50576,50606,50635,50665,50694,50724,50754,50784,50813,50843,50872,50902,50931,50960,50990,51019,51049,51078,51108,51138,51167,51197,51227,51256,51286,51315,51345,51374,51403,51433,51462,51492,51522,51552,51582,51611,51641,51670,51699,51729,51758,51787,51816,51846,51876,51906,51936,51965,51995,52025,52054,52083,52113,52142,52171,52200,52230,52260,52290,52319,52349,52379,52408,52438,52467,52497,52526,52555,52585,52614,52644,52673,52703,52733,52762,52792,52822,52851,52881,52910,52939,52969,52998,53028,53057,53087,53116,53146,53176,53205,53235,53264,53294,53324,53353,53383,53412,53441,53471,53500,53530,53559,53589,53619,53648,53678,53708,53737,53767,53796,53825,53855,53884,53913,53943,53973,54003,54032,54062,54092,54121,54151,54180,54209,54239,54268,54297,54327,54357,54387,54416,54446,54476,54505,54535,54564,54593,54623,54652,54681,54711,54741,54770,54800,54830,54859,54889,54919,54948,54977,55007,55036,55066,55095,55125,55154,55184,55213,55243,55273,55302,55332,55361,55391,55420,55450,55479,55508,55538,55567,55597,55627,55657,55686,55716,55745,55775,55804,55834,55863,55892,55922,55951,55981,56011,56040,56070,56100,56129,56159,56188,56218,56247,56276,56306,56335,56365,56394,56424,56454,56483,56513,56543,56572,56601,56631,56660,56690,56719,56749,56778,56808,56837,56867,56897,56926,56956,56985,57015,57044,57074,57103,57133,57162,57192,57221,57251,57280,57310,57340,57369,57399,57429,57458,57487,57517,57546,57576,57605,57634,57664,57694,57723,57753,57783,57813,57842,57871,57901,57930,57959,57989,58018,58048,58077,58107,58137,58167,58196,58226,58255,58285,58314,58343,58373,58402,58432,58461,58491,58521,58551,58580,58610,58639,58669,58698,58727,58757,58786,58816,58845,58875,58905,58934,58964,58994,59023,59053,59082,59111,59141,59170,59200,59229,59259,59288,59318,59348,59377,59407,59436,59466,59495,59525,59554,59584,59613,59643,59672,59702,59731,59761,59791,59820,59850,59879,59909,59939,59968,59997,60027,60056,60086,60115,60145,60174,60204,60234,60264,60293,60323,60352,60381,60411,60440,60469,60499,60528,60558,60588,60618,60648,60677,60707,60736,60765,60795,60824,60853,60883,60912,60942,60972,61002,61031,61061,61090,61120,61149,61179,61208,61237,61267,61296,61326,61356,61385,61415,61445,61474,61504,61533,61563,61592,61621,61651,61680,61710,61739,61769,61799,61828,61858,61888,61917,61947,61976,62006,62035,62064,62094,62123,62153,62182,62212,62242,62271,62301,62331,62360,62390,62419,62448,62478,62507,62537,62566,62596,62625,62655,62685,62715,62744,62774,62803,62832,62862,62891,62921,62950,62980,63009,63039,63069,63099,63128,63157,63187,63216,63246,63275,63305,63334,63363,63393,63423,63453,63482,63512,63541,63571,63600,63630,63659,63689,63718,63747,63777,63807,63836,63866,63895,63925,63955,63984,64014,64043,64073,64102,64131,64161,64190,64220,64249,64279,64309,64339,64368,64398,64427,64457,64486,64515,64545,64574,64603,64633,64663,64692,64722,64752,64782,64811,64841,64870,64899,64929,64958,64987,65017,65047,65076,65106,65136,65166,65195,65225,65254,65283,65313,65342,65371,65401,65431,65460,65490,65520,65549,65579,65608,65638,65667,65697,65726,65755,65785,65815,65844,65874,65903,65933,65963,65992,66022,66051,66081,66110,66140,66169,66199,66228,66258,66287,66317,66346,66376,66405,66435,66465,66494,66524,66553,66583,66612,66641,66671,66700,66730,66760,66789,66819,66849,66878,66908,66937,66967,66996,67025,67055,67084,67114,67143,67173,67203,67233,67262,67292,67321,67351,67380,67409,67439,67468,67497,67527,67557,67587,67617,67646,67676,67705,67735,67764,67793,67823,67852,67882,67911,67941,67971,68e3,68030,68060,68089,68119,68148,68177,68207,68236,68266,68295,68325,68354,68384,68414,68443,68473,68502,68532,68561,68591,68620,68650,68679,68708,68738,68768,68797,68827,68857,68886,68916,68946,68975,69004,69034,69063,69092,69122,69152,69181,69211,69240,69270,69300,69330,69359,69388,69418,69447,69476,69506,69535,69565,69595,69624,69654,69684,69713,69743,69772,69802,69831,69861,69890,69919,69949,69978,70008,70038,70067,70097,70126,70156,70186,70215,70245,70274,70303,70333,70362,70392,70421,70451,70481,70510,70540,70570,70599,70629,70658,70687,70717,70746,70776,70805,70835,70864,70894,70924,70954,70983,71013,71042,71071,71101,71130,71159,71189,71218,71248,71278,71308,71337,71367,71397,71426,71455,71485,71514,71543,71573,71602,71632,71662,71691,71721,71751,71781,71810,71839,71869,71898,71927,71957,71986,72016,72046,72075,72105,72135,72164,72194,72223,72253,72282,72311,72341,72370,72400,72429,72459,72489,72518,72548,72577,72607,72637,72666,72695,72725,72754,72784,72813,72843,72872,72902,72931,72961,72991,73020,73050,73080,73109,73139,73168,73197,73227,73256,73286,73315,73345,73375,73404,73434,73464,73493,73523,73552,73581,73611,73640,73669,73699,73729,73758,73788,73818,73848,73877,73907,73936,73965,73995,74024,74053,74083,74113,74142,74172,74202,74231,74261,74291,74320,74349,74379,74408,74437,74467,74497,74526,74556,74586,74615,74645,74675,74704,74733,74763,74792,74822,74851,74881,74910,74940,74969,74999,75029,75058,75088,75117,75147,75176,75206,75235,75264,75294,75323,75353,75383,75412,75442,75472,75501,75531,75560,75590,75619,75648,75678,75707,75737,75766,75796,75826,75856,75885,75915,75944,75974,76003,76032,76062,76091,76121,76150,76180,76210,76239,76269,76299,76328,76358,76387,76416,76446,76475,76505,76534,76564,76593,76623,76653,76682,76712,76741,76771,76801,76830,76859,76889,76918,76948,76977,77007,77036,77066,77096,77125,77155,77185,77214,77243,77273,77302,77332,77361,77390,77420,77450,77479,77509,77539,77569,77598,77627,77657,77686,77715,77745,77774,77804,77833,77863,77893,77923,77952,77982,78011,78041,78070,78099,78129,78158,78188,78217,78247,78277,78307,78336,78366,78395,78425,78454,78483,78513,78542,78572,78601,78631,78661,78690,78720,78750,78779,78808,78838,78867,78897,78926,78956,78985,79015,79044,79074,79104,79133,79163,79192,79222,79251,79281,79310,79340,79369,79399,79428,79458,79487,79517,79546,79576,79606,79635,79665,79695,79724,79753,79783,79812,79841,79871,79900,79930,79960,79990]}}),XG=Ye({"src/components/calendars/calendars.js"(X,H){"use strict";H.exports=Tp(),RG(),DG(),zG(),FG(),OG(),BG(),NG(),UG(),jG(),VG(),qG(),HG(),GG(),WG(),ZG()}}),YG=Ye({"src/components/calendars/index.js"(X,H){"use strict";var g=XG(),x=ta(),A=ks(),M=A.EPOCHJD,e=A.ONEDAY,t={valType:"enumerated",values:x.sortObjectKeys(g.calendars),editType:"calc",dflt:"gregorian"},r=function(m,b,d,u){var y={};return y[d]=t,x.coerce(m,b,y,d,u)},o=function(m,b,d,u){for(var y=0;y0){if(++me>=wX)return arguments[0]}else me=0;return le.apply(void 0,arguments)}}var Cb=SX;var MX=Cb(wb),Lb=MX;var EX=/\{\n\/\* \[wrapped with (.+)\] \*/,kX=/,? & /;function CX(le){var me=le.match(EX);return me?me[1].split(kX):[]}var nL=CX;var LX=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function PX(le,me){var Xe=me.length;if(!Xe)return le;var Mt=Xe-1;return me[Mt]=(Xe>1?"& ":"")+me[Mt],me=me.join(Xe>2?", ":" "),le.replace(LX,`{ +/* [wrapped with `+me+`] */ +`)}var oL=PX;function IX(le){return function(){return le}}var J0=IX;var RX=function(){try{var le=ld(Object,"defineProperty");return le({},"",{}),le}catch{}}(),$0=RX;var DX=$0?function(le,me){return $0(le,"toString",{configurable:!0,enumerable:!1,value:J0(me),writable:!0})}:ic,sL=DX;var zX=Cb(sL),Q0=zX;function FX(le,me){for(var Xe=-1,Mt=le==null?0:le.length;++Xe-1}var Sm=jX;var VX=1,qX=2,HX=8,GX=16,WX=32,ZX=64,XX=128,YX=256,KX=512,JX=[["ary",XX],["bind",VX],["bindKey",qX],["curry",HX],["curryRight",GX],["flip",KX],["partial",WX],["partialRight",ZX],["rearg",YX]];function $X(le,me){return zh(JX,function(Xe){var Mt="_."+Xe[0];me&Xe[1]&&!Sm(le,Mt)&&le.push(Mt)}),le.sort()}var uL=$X;function QX(le,me,Xe){var Mt=me+"";return Q0(le,oL(Mt,uL(nL(Mt),Xe)))}var Ib=QX;var eY=1,tY=2,rY=4,aY=8,cL=32,fL=64;function iY(le,me,Xe,Mt,rr,Nr,xa,Ha,Za,un){var Ji=me&aY,gn=Ji?xa:void 0,wo=Ji?void 0:xa,ps=Ji?Nr:void 0,Qn=Ji?void 0:Nr;me|=Ji?cL:fL,me&=~(Ji?fL:cL),me&rY||(me&=~(eY|tY));var Ye=[le,me,rr,ps,gn,Qn,wo,Ha,Za,un],Ps=Xe.apply(void 0,Ye);return r_(le)&&Lb(Ps,Ye),Ps.placeholder=Mt,Ib(Ps,le,me)}var Rb=iY;function nY(le){var me=le;return me.placeholder}var Sd=nY;var oY=9007199254740991,sY=/^(?:0|[1-9]\d*)$/;function lY(le,me){var Xe=typeof le;return me=me??oY,!!me&&(Xe=="number"||Xe!="symbol"&&sY.test(le))&&le>-1&&le%1==0&&le1&&Ul.reverse(),Ji&&Za-1&&le%1==0&&le<=BY}var Mm=NY;function UY(le){return le!=null&&Mm(le.length)&&!tp(le)}var gc=UY;function jY(le,me,Xe){if(!ll(Xe))return!1;var Mt=typeof me;return(Mt=="number"?gc(Xe)&&rp(me,Xe.length):Mt=="string"&&me in Xe)?qf(Xe[me],le):!1}var nc=jY;function VY(le){return ko(function(me,Xe){var Mt=-1,rr=Xe.length,Nr=rr>1?Xe[rr-1]:void 0,xa=rr>2?Xe[2]:void 0;for(Nr=le.length>3&&typeof Nr=="function"?(rr--,Nr):void 0,xa&&nc(Xe[0],Xe[1],xa)&&(Nr=rr<3?void 0:Nr,rr=1),me=Object(me);++Mt-1}var GL=gJ;function yJ(le,me){var Xe=this.__data__,Mt=km(Xe,le);return Mt<0?(++this.size,Xe.push([le,me])):Xe[Mt][1]=me,this}var WL=yJ;function oy(le){var me=-1,Xe=le==null?0:le.length;for(this.clear();++me0&&Xe(Ha)?me>1?rP(Ha,me-1,Xe,Mt,rr):Dp(rr,Ha):Mt||(rr[rr.length]=Ha)}return rr}var wu=rP;function VJ(le){var me=le==null?0:le.length;return me?wu(le,1):[]}var Ub=VJ;function qJ(le){return Q0(zb(le,void 0,Ub),le+"")}var op=qJ;var HJ=op(uy),aP=HJ;var GJ=Ob(Object.getPrototypeOf,Object),Im=GJ;var WJ="[object Object]",ZJ=Function.prototype,XJ=Object.prototype,iP=ZJ.toString,YJ=XJ.hasOwnProperty,KJ=iP.call(Object);function JJ(le){if(!ul(le)||ac(le)!=WJ)return!1;var me=Im(le);if(me===null)return!0;var Xe=YJ.call(me,"constructor")&&me.constructor;return typeof Xe=="function"&&Xe instanceof Xe&&iP.call(Xe)==KJ}var gv=JJ;var $J="[object DOMException]",QJ="[object Error]";function e$(le){if(!ul(le))return!1;var me=ac(le);return me==QJ||me==$J||typeof le.message=="string"&&typeof le.name=="string"&&!gv(le)}var cy=e$;var t$=ko(function(le,me){try{return sf(le,void 0,me)}catch(Xe){return cy(Xe)?Xe:new Error(Xe)}}),jb=t$;var r$="Expected a function";function a$(le,me){var Xe;if(typeof me!="function")throw new TypeError(r$);return le=Eo(le),function(){return--le>0&&(Xe=me.apply(this,arguments)),le<=1&&(me=void 0),Xe}}var Vb=a$;var i$=1,n$=32,LA=ko(function(le,me,Xe){var Mt=i$;if(Xe.length){var rr=Yp(Xe,Sd(LA));Mt|=n$}return ap(le,Mt,me,Xe,rr)});LA.placeholder={};var qb=LA;var o$=op(function(le,me){return zh(me,function(Xe){Xe=yh(Xe),ip(le,Xe,qb(le[Xe],le))}),le}),nP=o$;var s$=1,l$=2,u$=32,PA=ko(function(le,me,Xe){var Mt=s$|l$;if(Xe.length){var rr=Yp(Xe,Sd(PA));Mt|=u$}return ap(me,Mt,le,Xe,rr)});PA.placeholder={};var oP=PA;function c$(le,me,Xe){var Mt=-1,rr=le.length;me<0&&(me=-me>rr?0:rr+me),Xe=Xe>rr?rr:Xe,Xe<0&&(Xe+=rr),rr=me>Xe?0:Xe-me>>>0,me>>>=0;for(var Nr=Array(rr);++Mt=Mt?le:Lf(le,me,Xe)}var zp=f$;var h$="\\ud800-\\udfff",p$="\\u0300-\\u036f",d$="\\ufe20-\\ufe2f",v$="\\u20d0-\\u20ff",m$=p$+d$+v$,g$="\\ufe0e\\ufe0f",y$="\\u200d",_$=RegExp("["+y$+h$+m$+g$+"]");function x$(le){return _$.test(le)}var kd=x$;function b$(le){return le.split("")}var sP=b$;var lP="\\ud800-\\udfff",w$="\\u0300-\\u036f",T$="\\ufe20-\\ufe2f",A$="\\u20d0-\\u20ff",S$=w$+T$+A$,M$="\\ufe0e\\ufe0f",E$="["+lP+"]",IA="["+S$+"]",RA="\\ud83c[\\udffb-\\udfff]",k$="(?:"+IA+"|"+RA+")",uP="[^"+lP+"]",cP="(?:\\ud83c[\\udde6-\\uddff]){2}",fP="[\\ud800-\\udbff][\\udc00-\\udfff]",C$="\\u200d",hP=k$+"?",pP="["+M$+"]?",L$="(?:"+C$+"(?:"+[uP,cP,fP].join("|")+")"+pP+hP+")*",P$=pP+hP+L$,I$="(?:"+[uP+IA+"?",IA,cP,fP,E$].join("|")+")",R$=RegExp(RA+"(?="+RA+")|"+I$+P$,"g");function D$(le){return le.match(R$)||[]}var dP=D$;function z$(le){return kd(le)?dP(le):sP(le)}var Fh=z$;function F$(le){return function(me){me=ws(me);var Xe=kd(me)?Fh(me):void 0,Mt=Xe?Xe[0]:me.charAt(0),rr=Xe?zp(Xe,1).join(""):me.slice(1);return Mt[le]()+rr}}var Hb=F$;var O$=Hb("toUpperCase"),fy=O$;function B$(le){return fy(ws(le).toLowerCase())}var Gb=B$;function N$(le,me,Xe,Mt){var rr=-1,Nr=le==null?0:le.length;for(Mt&&Nr&&(Xe=le[++rr]);++rr=me?le:me)),le}var cd=BQ;function NQ(le,me,Xe){return Xe===void 0&&(Xe=me,me=void 0),Xe!==void 0&&(Xe=mh(Xe),Xe=Xe===Xe?Xe:0),me!==void 0&&(me=mh(me),me=me===me?me:0),cd(mh(le),me,Xe)}var UP=NQ;function UQ(){this.__data__=new Cm,this.size=0}var jP=UQ;function jQ(le){var me=this.__data__,Xe=me.delete(le);return this.size=me.size,Xe}var VP=jQ;function VQ(le){return this.__data__.get(le)}var qP=VQ;function qQ(le){return this.__data__.has(le)}var HP=qQ;var HQ=200;function GQ(le,me){var Xe=this.__data__;if(Xe instanceof Cm){var Mt=Xe.__data__;if(!Lm||Mt.lengthHa))return!1;var un=Nr.get(le),Ji=Nr.get(me);if(un&&Ji)return un==me&&Ji==le;var gn=-1,wo=!0,ps=Xe&Gte?new Dm:void 0;for(Nr.set(le,me),Nr.set(me,le);++gn=me||$p<0||gn&&Np>=Nr}function Ml(){var _n=Cy();if(Ps(_n))return Ul(_n);Ha=setTimeout(Ml,Ye(_n))}function Ul(_n){return Ha=void 0,wo&&Mt?ps(_n):(Mt=rr=void 0,xa)}function Hf(){Ha!==void 0&&clearTimeout(Ha),un=0,Mt=Za=rr=Ha=void 0}function xh(){return Ha===void 0?xa:Ul(Cy())}function Bp(){var _n=Cy(),$p=Ps(_n);if(Mt=arguments,rr=this,Za=_n,$p){if(Ha===void 0)return Qn(Za);if(gn)return clearTimeout(Ha),Ha=setTimeout(Ml,me),ps(Za)}return Ha===void 0&&(Ha=setTimeout(Ml,me)),xa}return Bp.cancel=Hf,Bp.flush=xh,Bp}var yw=iae;function nae(le,me){return le==null||le!==le?me:le}var X6=nae;var Y6=Object.prototype,oae=Y6.hasOwnProperty,sae=ko(function(le,me){le=Object(le);var Xe=-1,Mt=me.length,rr=Mt>2?me[2]:void 0;for(rr&&nc(me[0],me[1],rr)&&(Mt=1);++Xe=xae&&(Nr=Hv,xa=!1,me=new Dm(me));e:for(;++rr=0&&le.slice(Xe,rr)==me}var pI=Nae;function Uae(le,me){return nl(me,function(Xe){return[Xe,le[Xe]]})}var dI=Uae;function jae(le){var me=-1,Xe=Array(le.size);return le.forEach(function(Mt){Xe[++me]=[Mt,Mt]}),Xe}var vI=jae;var Vae="[object Map]",qae="[object Set]";function Hae(le){return function(me){var Xe=Oh(me);return Xe==Vae?Ty(me):Xe==qae?vI(me):dI(me,le(me))}}var Aw=Hae;var Gae=Aw(Gl),f_=Gae;var Wae=Aw(yc),h_=Wae;var Zae={"&":"&","<":"<",">":">",'"':""","'":"'"},Xae=py(Zae),mI=Xae;var gI=/[&<>"']/g,Yae=RegExp(gI.source);function Kae(le){return le=ws(le),le&&Yae.test(le)?le.replace(gI,mI):le}var Sw=Kae;var yI=/[\\^$.*+?()[\]{}|]/g,Jae=RegExp(yI.source);function $ae(le){return le=ws(le),le&&Jae.test(le)?le.replace(yI,"\\$&"):le}var _I=$ae;function Qae(le,me){for(var Xe=-1,Mt=le==null?0:le.length;++Xerr?0:rr+Xe),Mt=Mt===void 0||Mt>rr?rr:Eo(Mt),Mt<0&&(Mt+=rr),Mt=Xe>Mt?0:Ew(Mt);Xe-1?rr[Nr?me[xa]:xa]:void 0}}var Cw=lie;var uie=Math.max;function cie(le,me,Xe){var Mt=le==null?0:le.length;if(!Mt)return-1;var rr=Xe==null?0:Eo(Xe);return rr<0&&(rr=uie(Mt+rr,0)),Am(le,io(me,3),rr)}var Lw=cie;var fie=Cw(Lw),SI=fie;function hie(le,me,Xe){var Mt;return Xe(le,function(rr,Nr,xa){if(me(rr,Nr,xa))return Mt=Nr,!1}),Mt}var Pw=hie;function pie(le,me){return Pw(le,io(me,3),lp)}var MI=pie;var die=Math.max,vie=Math.min;function mie(le,me,Xe){var Mt=le==null?0:le.length;if(!Mt)return-1;var rr=Mt-1;return Xe!==void 0&&(rr=Eo(Xe),rr=Xe<0?die(Mt+rr,0):vie(rr,Mt-1)),Am(le,io(me,3),rr,!0)}var Iw=mie;var gie=Cw(Iw),EI=gie;function yie(le,me){return Pw(le,io(me,3),Iy)}var kI=yie;function _ie(le){return le&&le.length?le[0]:void 0}var p_=_ie;function xie(le,me){var Xe=-1,Mt=gc(le)?Array(le.length):[];return Op(le,function(rr,Nr,xa){Mt[++Xe]=me(rr,Nr,xa)}),Mt}var Rw=xie;function bie(le,me){var Xe=mo(le)?nl:Rw;return Xe(le,io(me,3))}var Nm=bie;function wie(le,me){return wu(Nm(le,me),1)}var CI=wie;var Tie=1/0;function Aie(le,me){return wu(Nm(le,me),Tie)}var LI=Aie;function Sie(le,me,Xe){return Xe=Xe===void 0?1:Eo(Xe),wu(Nm(le,me),Xe)}var PI=Sie;var Mie=1/0;function Eie(le){var me=le==null?0:le.length;return me?wu(le,Mie):[]}var II=Eie;function kie(le,me){var Xe=le==null?0:le.length;return Xe?(me=me===void 0?1:Eo(me),wu(le,me)):[]}var RI=kie;var Cie=512;function Lie(le){return ap(le,Cie)}var DI=Lie;var Pie=vy("floor"),zI=Pie;var Iie="Expected a function",Rie=8,Die=32,zie=128,Fie=256;function Oie(le){return op(function(me){var Xe=me.length,Mt=Xe,rr=Ip.prototype.thru;for(le&&me.reverse();Mt--;){var Nr=me[Mt];if(typeof Nr!="function")throw new TypeError(Iie);if(rr&&!xa&&K0(Nr)=="wrapper")var xa=new Ip([],!0)}for(Mt=xa?Mt:Xe;++Mtme}var Ry=Jie;function $ie(le){return function(me,Xe){return typeof me=="string"&&typeof Xe=="string"||(me=mh(me),Xe=mh(Xe)),le(me,Xe)}}var jm=$ie;var Qie=jm(Ry),WI=Qie;var ene=jm(function(le,me){return le>=me}),ZI=ene;var tne=Object.prototype,rne=tne.hasOwnProperty;function ane(le,me){return le!=null&&rne.call(le,me)}var XI=ane;function ine(le,me){return le!=null&&hw(le,me,XI)}var YI=ine;var nne=Math.max,one=Math.min;function sne(le,me,Xe){return le>=one(me,Xe)&&le-1:!!rr&&Ad(le,me,Xe)>-1}var $I=dne;var vne=Math.max;function mne(le,me,Xe){var Mt=le==null?0:le.length;if(!Mt)return-1;var rr=Xe==null?0:Eo(Xe);return rr<0&&(rr=vne(Mt+rr,0)),Ad(le,me,rr)}var QI=mne;function gne(le){var me=le==null?0:le.length;return me?Lf(le,0,-1):[]}var eR=gne;var yne=Math.min;function _ne(le,me,Xe){for(var Mt=Xe?Py:Sm,rr=le[0].length,Nr=le.length,xa=Nr,Ha=Array(Nr),Za=1/0,un=[];xa--;){var Ji=le[xa];xa&&me&&(Ji=nl(Ji,uf(me))),Za=yne(Ji.length,Za),Ha[xa]=!Xe&&(me||rr>=120&&Ji.length>=120)?new Dm(xa&&Ji):void 0}Ji=le[0];var gn=-1,wo=Ha[0];e:for(;++gn=-PR&&le<=PR}var IR=doe;function voe(le){return le===void 0}var RR=voe;var moe="[object WeakMap]";function goe(le){return ul(le)&&Oh(le)==moe}var DR=goe;var yoe="[object WeakSet]";function _oe(le){return ul(le)&&ac(le)==yoe}var zR=_oe;var xoe=1;function boe(le){return io(typeof le=="function"?le:sp(le,xoe))}var FR=boe;var woe=Array.prototype,Toe=woe.join;function Aoe(le,me){return le==null?"":Toe.call(le,me)}var OR=Aoe;var Soe=Cd(function(le,me,Xe){return le+(Xe?"-":"")+me.toLowerCase()}),BR=Soe;var Moe=Om(function(le,me,Xe){ip(le,Xe,me)}),NR=Moe;function Eoe(le,me,Xe){for(var Mt=Xe+1;Mt--;)if(le[Mt]===me)return Mt;return Mt}var UR=Eoe;var koe=Math.max,Coe=Math.min;function Loe(le,me,Xe){var Mt=le==null?0:le.length;if(!Mt)return-1;var rr=Mt;return Xe!==void 0&&(rr=Eo(Xe),rr=rr<0?koe(Mt+rr,0):Coe(rr,Mt-1)),me===me?UR(le,me,rr):Am(le,Pb,rr,!0)}var jR=Loe;var Poe=Cd(function(le,me,Xe){return le+(Xe?" ":"")+me.toLowerCase()}),VR=Poe;var Ioe=Hb("toLowerCase"),qR=Ioe;function Roe(le,me){return le=this.__values__.length,me=le?void 0:this.__values__[this.__index__++];return{done:le,value:me}}var sD=use;function cse(le,me){var Xe=le.length;if(Xe)return me+=me<0?Xe:0,rp(me,Xe)?le[me]:void 0}var Vw=cse;function fse(le,me){return le&&le.length?Vw(le,Eo(me)):void 0}var lD=fse;function hse(le){return le=Eo(le),ko(function(me){return Vw(me,le)})}var uD=hse;function pse(le,me){return me=Rp(me,le),le=Fw(le,me),le==null||delete le[yh(cf(me))]}var Uy=pse;function dse(le){return gv(le)?void 0:le}var cD=dse;var vse=1,mse=2,gse=4,yse=op(function(le,me){var Xe={};if(le==null)return Xe;var Mt=!1;me=nl(me,function(Nr){return Nr=Rp(Nr,le),Mt||(Mt=Nr.length>1),Nr}),gh(le,_y(le),Xe),Mt&&(Xe=sp(Xe,vse|mse|gse,cD));for(var rr=me.length;rr--;)Uy(Xe,me[rr]);return Xe}),fD=yse;function _se(le,me,Xe,Mt){if(!ll(le))return le;me=Rp(me,le);for(var rr=-1,Nr=me.length,xa=Nr-1,Ha=le;Ha!=null&&++rrme||Nr&&xa&&Za&&!Ha&&!un||Mt&&xa&&Za||!Xe&&Za||!rr)return 1;if(!Mt&&!Nr&&!un&&le=Ha)return Za;var un=Xe[Mt];return Za*(un=="desc"?-1:1)}}return le.index-me.index}var vD=Mse;function Ese(le,me,Xe){me.length?me=nl(me,function(Nr){return mo(Nr)?function(xa){return ud(xa,Nr.length===1?Nr[0]:Nr)}:Nr}):me=[ic];var Mt=-1;me=nl(me,uf(io));var rr=Rw(le,function(Nr,xa,Ha){var Za=nl(me,function(un){return un(Nr)});return{criteria:Za,index:++Mt,value:Nr}});return dD(rr,function(Nr,xa){return vD(Nr,xa,Xe)})}var Ww=Ese;function kse(le,me,Xe,Mt){return le==null?[]:(mo(me)||(me=me==null?[]:[me]),Xe=Mt?void 0:Xe,mo(Xe)||(Xe=Xe==null?[]:[Xe]),Ww(le,me,Xe))}var mD=kse;function Cse(le){return op(function(me){return me=nl(me,uf(io)),ko(function(Xe){var Mt=this;return le(me,function(rr){return sf(rr,Mt,Xe)})})})}var jy=Cse;var Lse=jy(nl),gD=Lse;var Pse=ko,yD=Pse;var Ise=Math.min,Rse=yD(function(le,me){me=me.length==1&&mo(me[0])?nl(me[0],uf(io)):nl(wu(me,1),uf(io));var Xe=me.length;return ko(function(Mt){for(var rr=-1,Nr=Ise(Mt.length,Xe);++rrFse)return Xe;do me%2&&(Xe+=le),me=Ose(me/2),me&&(le+=le);while(me);return Xe}var d_=Bse;var Nse=Ey("length"),wD=Nse;var AD="\\ud800-\\udfff",Use="\\u0300-\\u036f",jse="\\ufe20-\\ufe2f",Vse="\\u20d0-\\u20ff",qse=Use+jse+Vse,Hse="\\ufe0e\\ufe0f",Gse="["+AD+"]",BA="["+qse+"]",NA="\\ud83c[\\udffb-\\udfff]",Wse="(?:"+BA+"|"+NA+")",SD="[^"+AD+"]",MD="(?:\\ud83c[\\udde6-\\uddff]){2}",ED="[\\ud800-\\udbff][\\udc00-\\udfff]",Zse="\\u200d",kD=Wse+"?",CD="["+Hse+"]?",Xse="(?:"+Zse+"(?:"+[SD,MD,ED].join("|")+")"+CD+kD+")*",Yse=CD+kD+Xse,Kse="(?:"+[SD+BA+"?",BA,MD,ED,Gse].join("|")+")",TD=RegExp(NA+"(?="+NA+")|"+Kse+Yse,"g");function Jse(le){for(var me=TD.lastIndex=0;TD.test(le);)++me;return me}var LD=Jse;function $se(le){return kd(le)?LD(le):wD(le)}var Pd=$se;var Qse=Math.ceil;function ele(le,me){me=me===void 0?" ":Vf(me);var Xe=me.length;if(Xe<2)return Xe?d_(me,le):me;var Mt=d_(me,Qse(le/Pd(me)));return kd(me)?zp(Fh(Mt),0,le).join(""):Mt.slice(0,le)}var qg=ele;var tle=Math.ceil,rle=Math.floor;function ale(le,me,Xe){le=ws(le),me=Eo(me);var Mt=me?Pd(le):0;if(!me||Mt>=me)return le;var rr=(me-Mt)/2;return qg(rle(rr),Xe)+le+qg(tle(rr),Xe)}var PD=ale;function ile(le,me,Xe){le=ws(le),me=Eo(me);var Mt=me?Pd(le):0;return me&&Mt-1;)Ha!==le&&VD.call(Ha,Za,1),VD.call(le,Za,1);return le}var Vy=yle;function _le(le,me){return le&&le.length&&me&&me.length?Vy(le,me):le}var Xw=_le;var xle=ko(Xw),qD=xle;function ble(le,me,Xe){return le&&le.length&&me&&me.length?Vy(le,me,io(Xe,2)):le}var HD=ble;function wle(le,me,Xe){return le&&le.length&&me&&me.length?Vy(le,me,void 0,Xe):le}var GD=wle;var Tle=Array.prototype,Ale=Tle.splice;function Sle(le,me){for(var Xe=le?me.length:0,Mt=Xe-1;Xe--;){var rr=me[Xe];if(Xe==Mt||rr!==Nr){var Nr=rr;rp(rr)?Ale.call(le,rr,1):Uy(le,rr)}}return le}var Yw=Sle;var Mle=op(function(le,me){var Xe=le==null?0:le.length,Mt=uy(le,me);return Yw(le,nl(me,function(rr){return rp(rr,Xe)?+rr:rr}).sort(Gw)),Mt}),WD=Mle;var Ele=Math.floor,kle=Math.random;function Cle(le,me){return le+Ele(kle()*(me-le+1))}var qy=Cle;var Lle=parseFloat,Ple=Math.min,Ile=Math.random;function Rle(le,me,Xe){if(Xe&&typeof Xe!="boolean"&&nc(le,me,Xe)&&(me=Xe=void 0),Xe===void 0&&(typeof me=="boolean"?(Xe=me,me=void 0):typeof le=="boolean"&&(Xe=le,le=void 0)),le===void 0&&me===void 0?(le=0,me=1):(le=sd(le),me===void 0?(me=le,le=0):me=sd(me)),le>me){var Mt=le;le=me,me=Mt}if(Xe||le%1||me%1){var rr=Ile();return Ple(le+rr*(me-le+Lle("1e-"+((rr+"").length-1))),me)}return qy(le,me)}var ZD=Rle;var Dle=Math.ceil,zle=Math.max;function Fle(le,me,Xe,Mt){for(var rr=-1,Nr=zle(Dle((me-le)/(Xe||1)),0),xa=Array(Nr);Nr--;)xa[Mt?Nr:++rr]=le,le+=Xe;return xa}var XD=Fle;function Ole(le){return function(me,Xe,Mt){return Mt&&typeof Mt!="number"&&nc(me,Xe,Mt)&&(Xe=Mt=void 0),me=sd(me),Xe===void 0?(Xe=me,me=0):Xe=sd(Xe),Mt=Mt===void 0?me1&&nc(le,me[0],me[1])?me=[]:Xe>2&&nc(me[0],me[1],me[2])&&(me=[me[0]]),Ww(le,wu(me,1),[])}),Tz=wue;var Tue=4294967295,Aue=Tue-1,Sue=Math.floor,Mue=Math.min;function Eue(le,me,Xe,Mt){var rr=0,Nr=le==null?0:le.length;if(Nr===0)return 0;me=Xe(me);for(var xa=me!==me,Ha=me===null,Za=_f(me),un=me===void 0;rr>>1;function Lue(le,me,Xe){var Mt=0,rr=le==null?Mt:le.length;if(typeof me=="number"&&me===me&&rr<=Cue){for(;Mt>>1,xa=le[Nr];xa!==null&&!_f(xa)&&(Xe?xa<=me:xa>>0,Xe?(le=ws(le),le&&(typeof me=="string"||me!=null&&!Oy(me))&&(me=Vf(me),!me&&kd(le))?zp(Fh(le),0,Xe):le.split(me,Xe)):[]}var Iz=jue;var Vue="Expected a function",que=Math.max;function Hue(le,me){if(typeof le!="function")throw new TypeError(Vue);return me=me==null?0:que(Eo(me),0),ko(function(Xe){var Mt=Xe[me],rr=zp(Xe,0,me);return Mt&&Dp(rr,Mt),sf(le,this,rr)})}var Rz=Hue;var Gue=Cd(function(le,me,Xe){return le+(Xe?" ":"")+fy(me)}),Dz=Gue;function Wue(le,me,Xe){return le=ws(le),Xe=Xe==null?0:cd(Eo(Xe),0,le.length),me=Vf(me),le.slice(Xe,Xe+me.length)==me}var zz=Wue;function Zue(){return{}}var Fz=Zue;function Xue(){return""}var Oz=Xue;function Yue(){return!0}var Bz=Yue;var Kue=bm(function(le,me){return le-me},0),Nz=Kue;function Jue(le){return le&&le.length?Ny(le,ic):0}var Uz=Jue;function $ue(le,me){return le&&le.length?Ny(le,io(me,2)):0}var jz=$ue;function Que(le){var me=le==null?0:le.length;return me?Lf(le,1,me):[]}var Vz=Que;function ece(le,me,Xe){return le&&le.length?(me=Xe||me===void 0?1:Eo(me),Lf(le,0,me<0?0:me)):[]}var qz=ece;function tce(le,me,Xe){var Mt=le==null?0:le.length;return Mt?(me=Xe||me===void 0?1:Eo(me),me=Mt-me,Lf(le,me<0?0:me,Mt)):[]}var Hz=tce;function rce(le,me){return le&&le.length?Bm(le,io(me,3),!1,!0):[]}var Gz=rce;function ace(le,me){return le&&le.length?Bm(le,io(me,3)):[]}var Wz=ace;function ice(le,me){return me(le),le}var Zz=ice;var Xz=Object.prototype,nce=Xz.hasOwnProperty;function oce(le,me,Xe,Mt){return le===void 0||qf(le,Xz[Xe])&&!nce.call(Mt,Xe)?me:le}var VA=oce;var sce={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"};function lce(le){return"\\"+sce[le]}var Yz=lce;var uce=/<%=([\s\S]+?)%>/g,e2=uce;var cce=/<%-([\s\S]+?)%>/g,Kz=cce;var fce=/<%([\s\S]+?)%>/g,Jz=fce;var hce={escape:Kz,evaluate:Jz,interpolate:e2,variable:"",imports:{_:{escape:Sw}}},m_=hce;var pce="Invalid `variable` option passed into `_.template`",dce=/\b__p \+= '';/g,vce=/\b(__p \+=) '' \+/g,mce=/(__e\(.*?\)|\b__t\)) \+\n'';/g,gce=/[()=,{}\[\]\/\s]/,yce=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,t2=/($^)/,_ce=/['\n\r\u2028\u2029\\]/g,xce=Object.prototype,$z=xce.hasOwnProperty;function bce(le,me,Xe){var Mt=m_.imports._.templateSettings||m_;Xe&&nc(le,me,Xe)&&(me=void 0),le=ws(le),me=Em({},me,Mt,VA);var rr=Em({},me.imports,Mt.imports,VA),Nr=Gl(rr),xa=Dy(rr,Nr),Ha,Za,un=0,Ji=me.interpolate||t2,gn="__p += '",wo=RegExp((me.escape||t2).source+"|"+Ji.source+"|"+(Ji===e2?yce:t2).source+"|"+(me.evaluate||t2).source+"|$","g"),ps=$z.call(me,"sourceURL")?"//# sourceURL="+(me.sourceURL+"").replace(/\s/g," ")+` +`:"";le.replace(wo,function(Ps,Ml,Ul,Hf,xh,Bp){return Ul||(Ul=Hf),gn+=le.slice(un,Bp).replace(_ce,Yz),Ml&&(Ha=!0,gn+=`' + +__e(`+Ml+`) + +'`),xh&&(Za=!0,gn+=`'; +`+xh+`; +__p += '`),Ul&&(gn+=`' + +((__t = (`+Ul+`)) == null ? '' : __t) + +'`),un=Bp+Ps.length,Ps}),gn+=`'; +`;var Qn=$z.call(me,"variable")&&me.variable;if(!Qn)gn=`with (obj) { +`+gn+` +} +`;else if(gce.test(Qn))throw new Error(pce);gn=(Za?gn.replace(dce,""):gn).replace(vce,"$1").replace(mce,"$1;"),gn="function("+(Qn||"obj")+`) { +`+(Qn?"":`obj || (obj = {}); +`)+"var __t, __p = ''"+(Ha?", __e = _.escape":"")+(Za?`, __j = Array.prototype.join; +function print() { __p += __j.call(arguments, '') } +`:`; +`)+gn+`return __p +}`;var Ye=jb(function(){return Function(Nr,ps+"return "+gn).apply(void 0,xa)});if(Ye.source=gn,cy(Ye))throw Ye;return Ye}var Qz=bce;var wce="Expected a function";function Tce(le,me,Xe){var Mt=!0,rr=!0;if(typeof le!="function")throw new TypeError(wce);return ll(Xe)&&(Mt="leading"in Xe?!!Xe.leading:Mt,rr="trailing"in Xe?!!Xe.trailing:rr),yw(le,me,{leading:Mt,maxWait:me,trailing:rr})}var e8=Tce;function Ace(le,me){return me(le)}var Wv=Ace;var Sce=9007199254740991,qA=4294967295,Mce=Math.min;function Ece(le,me){if(le=Eo(le),le<1||le>Sce)return[];var Xe=qA,Mt=Mce(le,qA);me=_h(me),le-=qA;for(var rr=ty(Mt,me);++Xe-1;);return Xe}var a2=Fce;function Oce(le,me){for(var Xe=-1,Mt=le.length;++Xe-1;);return Xe}var i2=Oce;function Bce(le,me,Xe){if(le=ws(le),le&&(Xe||me===void 0))return xb(le);if(!le||!(me=Vf(me)))return le;var Mt=Fh(le),rr=Fh(me),Nr=i2(Mt,rr),xa=a2(Mt,rr)+1;return zp(Mt,Nr,xa).join("")}var u8=Bce;function Nce(le,me,Xe){if(le=ws(le),le&&(Xe||me===void 0))return le.slice(0,_b(le)+1);if(!le||!(me=Vf(me)))return le;var Mt=Fh(le),rr=a2(Mt,Fh(me))+1;return zp(Mt,0,rr).join("")}var c8=Nce;var Uce=/^\s+/;function jce(le,me,Xe){if(le=ws(le),le&&(Xe||me===void 0))return le.replace(Uce,"");if(!le||!(me=Vf(me)))return le;var Mt=Fh(le),rr=i2(Mt,Fh(me));return zp(Mt,rr).join("")}var f8=jce;var Vce=30,qce="...",Hce=/\w*$/;function Gce(le,me){var Xe=Vce,Mt=qce;if(ll(me)){var rr="separator"in me?me.separator:rr;Xe="length"in me?Eo(me.length):Xe,Mt="omission"in me?Vf(me.omission):Mt}le=ws(le);var Nr=le.length;if(kd(le)){var xa=Fh(le);Nr=xa.length}if(Xe>=Nr)return le;var Ha=Xe-Pd(Mt);if(Ha<1)return Mt;var Za=xa?zp(xa,0,Ha).join(""):le.slice(0,Ha);if(rr===void 0)return Za+Mt;if(xa&&(Ha+=Za.length-Ha),Oy(rr)){if(le.slice(Ha).search(rr)){var un,Ji=Za;for(rr.global||(rr=RegExp(rr.source,ws(Hce.exec(rr))+"g")),rr.lastIndex=0;un=rr.exec(Ji);)var gn=un.index;Za=Za.slice(0,gn===void 0?Ha:gn)}}else if(le.indexOf(Vf(rr),Ha)!=Ha){var wo=Za.lastIndexOf(rr);wo>-1&&(Za=Za.slice(0,wo))}return Za+Mt}var h8=Gce;function Wce(le){return Db(le,1)}var p8=Wce;var Zce={"&":"&","<":"<",">":">",""":'"',"'":"'"},Xce=py(Zce),d8=Xce;var v8=/&(?:amp|lt|gt|quot|#39);/g,Yce=RegExp(v8.source);function Kce(le){return le=ws(le),le&&Yce.test(le)?le.replace(v8,d8):le}var m8=Kce;var Jce=1/0,$ce=Rm&&1/zm(new Rm([,-0]))[1]==Jce?function(le){return new Rm(le)}:X0,g8=$ce;var Qce=200;function efe(le,me,Xe){var Mt=-1,rr=Sm,Nr=le.length,xa=!0,Ha=[],Za=Ha;if(Xe)xa=!1,rr=Py;else if(Nr>=Qce){var un=me?null:g8(le);if(un)return zm(un);xa=!1,rr=Hv,Za=new Dm}else Za=me?[]:Ha;e:for(;++Mt1||this.__actions__.length||!(Mt instanceof dl)||!rp(Xe)?this.thru(rr):(Mt=Mt.slice(Xe,+Xe+(me?1:0)),Mt.__actions__.push({func:Wv,args:[rr],thisArg:void 0}),new Ip(Mt,this.__chain__).thru(function(Nr){return me&&!Nr.length&&Nr.push(void 0),Nr}))}),I8=xfe;function bfe(){return Xb(this)}var R8=bfe;function wfe(){var le=this.__wrapped__;if(le instanceof dl){var me=le;return this.__actions__.length&&(me=new dl(this)),me=me.reverse(),me.__actions__.push({func:Wv,args:[v_],thisArg:void 0}),new Ip(me,this.__chain__)}return this.thru(v_)}var D8=wfe;function Tfe(le,me,Xe){var Mt=le.length;if(Mt<2)return Mt?Jp(le[0]):[];for(var rr=-1,Nr=Array(Mt);++rr1?le[me-1]:void 0;return Xe=typeof Xe=="function"?(le.pop(),Xe):void 0,n2(le,Xe)}),j8=Pfe;var is={chunk:NP,compact:A6,concat:S6,difference:iI,differenceBy:nI,differenceWith:oI,drop:lI,dropRight:uI,dropRightWhile:cI,dropWhile:fI,fill:TI,findIndex:Lw,findLastIndex:Iw,first:p_,flatten:Ub,flattenDeep:II,flattenDepth:RI,fromPairs:VI,head:p_,indexOf:QI,initial:eR,intersection:tR,intersectionBy:rR,intersectionWith:aR,join:OR,last:cf,lastIndexOf:jR,nth:lD,pull:qD,pullAll:Xw,pullAllBy:HD,pullAllWith:GD,pullAt:WD,remove:rz,reverse:v_,slice:_z,sortedIndex:Az,sortedIndexBy:Sz,sortedIndexOf:Mz,sortedLastIndex:Ez,sortedLastIndexBy:kz,sortedLastIndexOf:Cz,sortedUniq:Lz,sortedUniqBy:Pz,tail:Vz,take:qz,takeRight:Hz,takeRightWhile:Gz,takeWhile:Wz,union:y8,unionBy:_8,unionWith:x8,uniq:b8,uniqBy:w8,uniqWith:T8,unzip:Gy,unzipWith:n2,without:L8,xor:z8,xorBy:F8,xorWith:O8,zip:B8,zipObject:N8,zipObjectDeep:U8,zipWith:j8};var Hu={countBy:H6,each:u_,eachRight:c_,every:bI,filter:AI,find:SI,findLast:EI,flatMap:CI,flatMapDeep:LI,flatMapDepth:PI,forEach:u_,forEachRight:c_,groupBy:GI,includes:$I,invokeMap:uR,keyBy:NR,map:Nm,orderBy:mD,partition:FD,reduce:$D,reduceRight:ez,reject:tz,sample:uz,sampleSize:hz,shuffle:gz,size:yz,some:wz,sortBy:Tz};var HA={now:Cy};var xf={after:$C,ary:Db,before:Vb,bind:qb,bindKey:oP,curry:W6,curryRight:Z6,debounce:yw,defer:rI,delay:aI,flip:DI,memoize:Bb,negate:Gv,once:pD,overArgs:_D,partial:Zw,partialRight:zD,rearg:JD,rest:nz,spread:Rz,throttle:e8,unary:p8,wrap:P8};var Es={castArray:OP,clone:_6,cloneDeep:x6,cloneDeepWith:b6,cloneWith:w6,conformsTo:j6,eq:qf,gt:WI,gte:ZI,isArguments:dd,isArray:mo,isArrayBuffer:hR,isArrayLike:gc,isArrayLikeObject:eu,isBoolean:pR,isBuffer:Kp,isDate:mR,isElement:gR,isEmpty:yR,isEqual:_R,isEqualWith:xR,isError:cy,isFinite:bR,isFunction:tp,isInteger:Ow,isLength:Mm,isMap:aw,isMatch:wR,isMatchWith:TR,isNaN:AR,isNative:MR,isNil:ER,isNull:kR,isNumber:Bw,isObject:ll,isObjectLike:ul,isPlainObject:gv,isRegExp:Oy,isSafeInteger:IR,isSet:iw,isString:Vm,isSymbol:_f,isTypedArray:Ed,isUndefined:RR,isWeakMap:DR,isWeakSet:zR,lt:HR,lte:GR,toArray:jw,toFinite:sd,toInteger:Eo,toLength:Ew,toNumber:mh,toPlainObject:_w,toSafeInteger:o8,toString:ws};var _p={add:YC,ceil:BP,divide:sI,floor:zI,max:KR,maxBy:JR,mean:$R,meanBy:QR,min:aD,minBy:iD,multiply:nD,round:sz,subtract:Nz,sum:Uz,sumBy:jz};var g_={clamp:UP,inRange:JI,random:ZD};var Js={assign:RL,assignIn:n_,assignInWith:Em,assignWith:FL,at:aP,create:G6,defaults:K6,defaultsDeep:tI,entries:f_,entriesIn:h_,extend:n_,extendWith:Em,findKey:MI,findLastKey:kI,forIn:BI,forInRight:NI,forOwn:UI,forOwnRight:jI,functions:qI,functionsIn:HI,get:ly,has:YI,hasIn:My,invert:nR,invertBy:sR,invoke:lR,keys:Gl,keysIn:yc,mapKeys:WR,mapValues:ZR,merge:eD,mergeWith:xw,omit:fD,omitBy:hD,pick:BD,pickBy:Hw,result:oz,set:pz,setWith:dz,toPairs:f_,toPairsIn:h_,transform:l8,unset:S8,update:M8,updateWith:E8,values:Ld,valuesIn:C8};var Id={at:I8,chain:Xb,commit:T6,lodash:ua,next:sD,plant:ND,reverse:D8,tap:Zz,thru:Wv,toIterator:r8,toJSON:Wm,value:Wm,valueOf:Wm,wrapperChain:R8};var du={camelCase:FP,capitalize:Gb,deburr:Wb,endsWith:pI,escape:Sw,escapeRegExp:_I,kebabCase:BR,lowerCase:VR,lowerFirst:qR,pad:PD,padEnd:ID,padStart:RD,parseInt:DD,repeat:az,replace:iz,snakeCase:xz,split:Iz,startCase:Dz,startsWith:zz,template:Qz,templateSettings:m_,toLower:a8,toUpper:s8,trim:u8,trimEnd:c8,trimStart:f8,truncate:h8,unescape:m8,upperCase:k8,upperFirst:fy,words:Zb};var Tu={attempt:jb,bindAll:nP,cond:B6,conforms:U6,constant:J0,defaultTo:X6,flow:FI,flowRight:OI,identity:ic,iteratee:FR,matches:XR,matchesProperty:YR,method:tD,methodOf:rD,mixin:Uw,noop:X0,nthArg:uD,over:gD,overEvery:xD,overSome:bD,property:dw,propertyOf:UD,range:YD,rangeRight:KD,stubArray:gy,stubFalse:ry,stubObject:Fz,stubString:Oz,stubTrue:Bz,times:t8,toPath:i8,uniqueId:A8};function Ife(){var le=new dl(this.__wrapped__);return le.__actions__=Wc(this.__actions__),le.__dir__=this.__dir__,le.__filtered__=this.__filtered__,le.__iteratees__=Wc(this.__iteratees__),le.__takeCount__=this.__takeCount__,le.__views__=Wc(this.__views__),le}var V8=Ife;function Rfe(){if(this.__filtered__){var le=new dl(this);le.__dir__=-1,le.__filtered__=!0}else le=this.clone(),le.__dir__*=-1;return le}var q8=Rfe;var Dfe=Math.max,zfe=Math.min;function Ffe(le,me,Xe){for(var Mt=-1,rr=Xe.length;++Mt0||me<0)?new dl(Xe):(le<0?Xe=Xe.takeRight(-le):le&&(Xe=Xe.drop(le)),me!==void 0&&(me=Eo(me),Xe=me<0?Xe.dropRight(-me):Xe.take(me-le)),Xe)};dl.prototype.takeRightWhile=function(le){return this.reverse().takeWhile(le).reverse()};dl.prototype.toArray=function(){return this.take(X8)};lp(dl.prototype,function(le,me){var Xe=/^(?:filter|find|map|reject)|While$/.test(me),Mt=/^(?:head|last)$/.test(me),rr=ua[Mt?"take"+(me=="last"?"Right":""):me],Nr=Mt||/^find/.test(me);rr&&(ua.prototype[me]=function(){var xa=this.__wrapped__,Ha=Mt?[1]:arguments,Za=xa instanceof dl,un=Ha[0],Ji=Za||mo(xa),gn=function(Ml){var Ul=rr.apply(ua,Dp([Ml],Ha));return Mt&&wo?Ul[0]:Ul};Ji&&Xe&&typeof un=="function"&&un.length!=1&&(Za=Ji=!1);var wo=this.__chain__,ps=!!this.__actions__.length,Qn=Nr&&!wo,Ye=Za&&!ps;if(!Nr&&Ji){xa=Ye?xa:new dl(this);var Ps=le.apply(xa,Ha);return Ps.__actions__.push({func:Wv,args:[gn],thisArg:void 0}),new Ip(Ps,wo)}return Qn&&Ye?le.apply(this,Ha):(Ps=this.thru(gn),Qn?Mt?Ps.value()[0]:Ps.value():Ps)})});zh(["pop","push","shift","sort","splice","unshift"],function(le){var me=Gfe[le],Xe=/^(?:push|sort|unshift)$/.test(le)?"tap":"thru",Mt=/^(?:pop|shift)$/.test(le);ua.prototype[le]=function(){var rr=arguments;if(Mt&&!this.__chain__){var Nr=this.value();return me.apply(mo(Nr)?Nr:[],rr)}return this[Xe](function(xa){return me.apply(mo(xa)?xa:[],rr)})}});lp(dl.prototype,function(le,me){var Xe=ua[me];if(Xe){var Mt=Xe.name+"";Y8.call(Tm,Mt)||(Tm[Mt]=[]),Tm[Mt].push({name:me,func:Xe})}});Tm[ey(void 0,Vfe).name]=[{name:"wrapper",func:void 0}];dl.prototype.clone=V8;dl.prototype.reverse=q8;dl.prototype.value=G8;ua.prototype.at=Id.at;ua.prototype.chain=Id.wrapperChain;ua.prototype.commit=Id.commit;ua.prototype.next=Id.next;ua.prototype.plant=Id.plant;ua.prototype.reverse=Id.reverse;ua.prototype.toJSON=ua.prototype.valueOf=ua.prototype.value=Id.value;ua.prototype.first=ua.prototype.head;W8&&(ua.prototype[W8]=Id.toIterator);var kc=ua;var Rd=HW($8());window.PlotlyConfig={MathJaxConfig:"local"};var WA=class{constructor(me,Xe){this.model=me,this.serializers=Xe}get(me){let Xe=this.serializers[me],Mt=this.model.get(me);return Xe?.deserialize?Xe.deserialize(Mt):Mt}set(me,Xe){let Mt=this.serializers[me];Mt?.serialize&&(Xe=Mt.serialize(Xe)),this.model.set(me,Xe)}on(me,Xe){this.model.on(me,Xe)}save_changes(){this.model.save_changes()}defaults(){return{_widget_data:[],_widget_layout:{},_config:{},_py2js_addTraces:null,_py2js_deleteTraces:null,_py2js_moveTraces:null,_py2js_restyle:null,_py2js_relayout:null,_py2js_update:null,_py2js_animate:null,_py2js_removeLayoutProps:null,_py2js_removeTraceProps:null,_js2py_restyle:null,_js2py_relayout:null,_js2py_update:null,_js2py_layoutDelta:null,_js2py_traceDeltas:null,_js2py_pointsCallback:null,_last_layout_edit_id:0,_last_trace_edit_id:0}}initialize(){this.model.on("change:_widget_data",()=>this.do_data()),this.model.on("change:_widget_layout",()=>this.do_layout()),this.model.on("change:_py2js_addTraces",()=>this.do_addTraces()),this.model.on("change:_py2js_deleteTraces",()=>this.do_deleteTraces()),this.model.on("change:_py2js_moveTraces",()=>this.do_moveTraces()),this.model.on("change:_py2js_restyle",()=>this.do_restyle()),this.model.on("change:_py2js_relayout",()=>this.do_relayout()),this.model.on("change:_py2js_update",()=>this.do_update()),this.model.on("change:_py2js_animate",()=>this.do_animate()),this.model.on("change:_py2js_removeLayoutProps",()=>this.do_removeLayoutProps()),this.model.on("change:_py2js_removeTraceProps",()=>this.do_removeTraceProps())}_normalize_trace_indexes(me){if(me==null){var Xe=this.model.get("_widget_data").length;me=kc.range(Xe)}return Array.isArray(me)||(me=[me]),me}do_data(){}do_layout(){}do_addTraces(){var me=this.model.get("_py2js_addTraces");if(me!==null){var Xe=this.model.get("_widget_data"),Mt=me.trace_data;kc.forEach(Mt,function(rr){Xe.push(rr)})}}do_deleteTraces(){var me=this.model.get("_py2js_deleteTraces");if(me!==null){var Xe=me.delete_inds,Mt=this.model.get("_widget_data");Xe.slice().reverse().forEach(function(rr){Mt.splice(rr,1)})}}do_moveTraces(){var me=this.model.get("_py2js_moveTraces");if(me!==null){var Xe=this.model.get("_widget_data"),Mt=me.current_trace_inds,rr=me.new_trace_inds;$fe(Xe,Mt,rr)}}do_restyle(){var me=this.model.get("_py2js_restyle");if(me!==null){var Xe=me.restyle_data,Mt=this._normalize_trace_indexes(me.restyle_traces);eF(this.model.get("_widget_data"),Xe,Mt)}}do_relayout(){var me=this.model.get("_py2js_relayout");me!==null&&u2(this.model.get("_widget_layout"),me.relayout_data)}do_update(){var me=this.model.get("_py2js_update");if(me!==null){var Xe=me.style_data,Mt=me.layout_data,rr=this._normalize_trace_indexes(me.style_traces);eF(this.model.get("_widget_data"),Xe,rr),u2(this.model.get("_widget_layout"),Mt)}}do_animate(){var me=this.model.get("_py2js_animate");if(me!==null){for(var Xe=me.style_data,Mt=me.layout_data,rr=this._normalize_trace_indexes(me.style_traces),Nr=0;Nrthis.do_addTraces()),this.model.on("change:_py2js_deleteTraces",()=>this.do_deleteTraces()),this.model.on("change:_py2js_moveTraces",()=>this.do_moveTraces()),this.model.on("change:_py2js_restyle",()=>this.do_restyle()),this.model.on("change:_py2js_relayout",()=>this.do_relayout()),this.model.on("change:_py2js_update",()=>this.do_update()),this.model.on("change:_py2js_animate",()=>this.do_animate()),window?.MathJax?.Hub?.Config?.({SVG:{font:"STIX-Web"}});var Xe=this.model.get("_last_layout_edit_id"),Mt=this.model.get("_last_trace_edit_id");this.viewID=rF();var rr=kc.cloneDeep(this.model.get("_widget_data")),Nr=kc.cloneDeep(this.model.get("_widget_layout"));Nr.height||(Nr.height=360);var xa=this.model.get("_config");xa.editSelection=!1,Rd.default.newPlot(me.el,rr,Nr,xa).then(function(){me._sendTraceDeltas(Mt),me._sendLayoutDelta(Xe),me.el.on("plotly_restyle",function(Za){me.handle_plotly_restyle(Za)}),me.el.on("plotly_relayout",function(Za){me.handle_plotly_relayout(Za)}),me.el.on("plotly_update",function(Za){me.handle_plotly_update(Za)}),me.el.on("plotly_click",function(Za){me.handle_plotly_click(Za)}),me.el.on("plotly_hover",function(Za){me.handle_plotly_hover(Za)}),me.el.on("plotly_unhover",function(Za){me.handle_plotly_unhover(Za)}),me.el.on("plotly_selected",function(Za){me.handle_plotly_selected(Za)}),me.el.on("plotly_deselect",function(Za){me.handle_plotly_deselect(Za)}),me.el.on("plotly_doubleclick",function(Za){me.handle_plotly_doubleclick(Za)});var Ha=new CustomEvent("plotlywidget-after-render",{detail:{element:me.el,viewID:me.viewID}});document.dispatchEvent(Ha)})}_processLuminoMessage(me,Xe){Xe.apply(this,arguments);var Mt=this;switch(me.type){case"before-attach":var rr={showgrid:!1,showline:!1,tickvals:[]};Rd.default.newPlot(Mt.el,[],{xaxis:rr,yaxis:rr}),this.resizeEventListener=()=>{this.autosizeFigure()},window.addEventListener("resize",this.resizeEventListener);break;case"after-attach":this.perform_render();break;case"after-show":case"resize":this.autosizeFigure();break}}autosizeFigure(){var me=this,Xe=me.model.get("_widget_layout");(kc.isNil(Xe)||kc.isNil(Xe.width))&&Rd.default.Plots.resize(me.el).then(function(){var Mt=me.model.get("_last_layout_edit_id");me._sendLayoutDelta(Mt)})}remove(){Rd.default.purge(this.el),window.removeEventListener("resize",this.resizeEventListener)}getFullData(){return kc.mergeWith({},this.el._fullData,this.el.data,Q8)}getFullLayout(){return kc.mergeWith({},this.el._fullLayout,this.el.layout,Q8)}buildPointsObject(me){var Xe;if(me.hasOwnProperty("points")){var Mt=me.points,rr=Mt.length,Nr=!0;for(let Ji=0;Ji=0;rr--)Mt.splice(0,0,le[me[rr]]),le.splice(me[rr],1);var Nr=kc(Xe).zip(Mt).sortBy(0).unzip().value();Xe=Nr[0],Mt=Nr[1];for(var xa=0;xa0&&typeof Nr[0]=="object"){Xe[Mt]=new Array(Nr.length);for(var xa=0;xa0&&(Xe[Mt]=Ha)}else typeof Nr=="object"&&!Array.isArray(Nr)?Xe[Mt]=y_(Nr,{}):Nr!==void 0&&typeof Nr!="function"&&(Xe[Mt]=Nr)}}return Xe}function rF(le,me,Xe,Mt){if(Xe||(Xe=16),me===void 0&&(me=24),me<=0)return"0";var rr=Math.log(Math.pow(2,me))/Math.log(Xe),Nr="",xa,Ha,Za;for(xa=2;rr===1/0;xa*=2)rr=Math.log(Math.pow(2,me/xa))/Math.log(Xe)*xa;var un=rr-Math.floor(rr);for(xa=0;xa=Math.pow(2,me)?Mt>10?(console.warn("randstr failed uniqueness"),Nr):rF(le,me,Xe,(Mt||0)+1):Nr}var lGe=()=>{let le;return{initialize(me){le=new WA(me.model,Xfe),le.initialize()},render({el:me}){let Xe=new ZA(le,me);return Xe.perform_render(),()=>Xe.remove()}}};export{WA as FigureModel,ZA as FigureView,lGe as default}; +/*! Bundled license information: + +plotly.js/dist/plotly.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + (*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + *) + (*! + * pad-left + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT license. + *) + (*! + * repeat-string + * + * Copyright (c) 2014-2015, Jon Schlinkert. + * Licensed under the MIT License. + *) + (*! Bundled license information: + + native-promise-only/lib/npo.src.js: + (*! Native Promise Only + v0.8.1 (c) Kyle Simpson + MIT License: http://getify.mit-license.org + *) + + polybooljs/index.js: + (* + * @copyright 2016 Sean Connelly (@voidqk), http://syntheti.cc + * @license MIT + * @preserve Project Home: https://github.com/voidqk/polybooljs + *) + + ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh *) + + buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + + safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh *) + + assert/build/internal/util/comparisons.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + *) + + object-assign/index.js: + (* + object-assign + (c) Sindre Sorhus + @license MIT + *) + + maplibre-gl/dist/maplibre-gl.js: + (** + * MapLibre GL JS + * @license 3-Clause BSD. Full text of license: https://github.com/maplibre/maplibre-gl-js/blob/v4.7.1/LICENSE.txt + *) + *) + +lodash-es/lodash.default.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) + +lodash-es/lodash.js: + (** + * @license + * Lodash (Custom Build) + * Build: `lodash modularize exports="es" -o ./` + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + *) +*/ diff --git a/venv/lib/python3.8/site-packages/plotly/serializers.py b/venv/lib/python3.8/site-packages/plotly/serializers.py new file mode 100644 index 0000000..56b4b43 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/serializers.py @@ -0,0 +1,105 @@ +from .basedatatypes import Undefined +from .optional_imports import get_module + +np = get_module("numpy") + + +def _py_to_js(v, widget_manager): + """ + Python -> Javascript ipywidget serializer + + This function must repalce all objects that the ipywidget library + can't serialize natively (e.g. numpy arrays) with serializable + representations + + Parameters + ---------- + v + Object to be serialized + widget_manager + ipywidget widget_manager (unused) + + Returns + ------- + any + Value that the ipywidget library can serialize natively + """ + + # Handle dict recursively + # ----------------------- + if isinstance(v, dict): + return {k: _py_to_js(v, widget_manager) for k, v in v.items()} + + # Handle list/tuple recursively + # ----------------------------- + elif isinstance(v, (list, tuple)): + return [_py_to_js(v, widget_manager) for v in v] + + # Handle numpy array + # ------------------ + elif np is not None and isinstance(v, np.ndarray): + # Convert 1D numpy arrays with numeric types to memoryviews with + # datatype and shape metadata. + if ( + v.ndim == 1 + and v.dtype.kind in ["u", "i", "f"] + and v.dtype != "int64" + and v.dtype != "uint64" + ): + # We have a numpy array the we can directly map to a JavaScript + # Typed array + return {"buffer": memoryview(v), "dtype": str(v.dtype), "shape": v.shape} + else: + # Convert all other numpy arrays to lists + return v.tolist() + + # Handle Undefined + # ---------------- + if v is Undefined: + return "_undefined_" + + # Handle simple value + # ------------------- + else: + return v + + +def _js_to_py(v, widget_manager): + """ + Javascript -> Python ipywidget deserializer + + Parameters + ---------- + v + Object to be deserialized + widget_manager + ipywidget widget_manager (unused) + + Returns + ------- + any + Deserialized object for use by the Python side of the library + """ + # Handle dict + # ----------- + if isinstance(v, dict): + return {k: _js_to_py(v, widget_manager) for k, v in v.items()} + + # Handle list/tuple + # ----------------- + elif isinstance(v, (list, tuple)): + return [_js_to_py(v, widget_manager) for v in v] + + # Handle Undefined + # ---------------- + elif isinstance(v, str) and v == "_undefined_": + return Undefined + + # Handle simple value + # ------------------- + else: + return v + + +# Custom serializer dict for use in ipywidget traitlet definitions +custom_serializers = {"from_json": _js_to_py, "to_json": _py_to_js} diff --git a/venv/lib/python3.8/site-packages/plotly/shapeannotation.py b/venv/lib/python3.8/site-packages/plotly/shapeannotation.py new file mode 100644 index 0000000..a2323ed --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/shapeannotation.py @@ -0,0 +1,246 @@ +# some functions defined here to avoid numpy import + + +def _mean(x): + if len(x) == 0: + raise ValueError("x must have positive length") + return float(sum(x)) / len(x) + + +def _argmin(x): + return sorted(enumerate(x), key=lambda t: t[1])[0][0] + + +def _argmax(x): + return sorted(enumerate(x), key=lambda t: t[1], reverse=True)[0][0] + + +def _df_anno(xanchor, yanchor, x, y): + """Default annotation parameters""" + return dict(xanchor=xanchor, yanchor=yanchor, x=x, y=y, showarrow=False) + + +def _add_inside_to_position(pos): + if not ("inside" in pos or "outside" in pos): + pos.add("inside") + return pos + + +def _prepare_position(position, prepend_inside=False): + if position is None: + position = "top right" + pos_str = position + position = set(position.split(" ")) + if prepend_inside: + position = _add_inside_to_position(position) + return position, pos_str + + +def annotation_params_for_line(shape_type, shape_args, position): + # all x0, x1, y0, y1 are used to place the annotation, that way it could + # work with a slanted line + # even with a slanted line, there are the horizontal and vertical + # conventions of placing a shape + x0 = shape_args["x0"] + x1 = shape_args["x1"] + y0 = shape_args["y0"] + y1 = shape_args["y1"] + X = [x0, x1] + Y = [y0, y1] + R = "right" + T = "top" + L = "left" + C = "center" + B = "bottom" + M = "middle" + aY = max(Y) + iY = min(Y) + eY = _mean(Y) + aaY = _argmax(Y) + aiY = _argmin(Y) + aX = max(X) + iX = min(X) + eX = _mean(X) + aaX = _argmax(X) + aiX = _argmin(X) + position, pos_str = _prepare_position(position) + if shape_type == "vline": + if position == set(["top", "left"]): + return _df_anno(R, T, X[aaY], aY) + if position == set(["top", "right"]): + return _df_anno(L, T, X[aaY], aY) + if position == set(["top"]): + return _df_anno(C, B, X[aaY], aY) + if position == set(["bottom", "left"]): + return _df_anno(R, B, X[aiY], iY) + if position == set(["bottom", "right"]): + return _df_anno(L, B, X[aiY], iY) + if position == set(["bottom"]): + return _df_anno(C, T, X[aiY], iY) + if position == set(["left"]): + return _df_anno(R, M, eX, eY) + if position == set(["right"]): + return _df_anno(L, M, eX, eY) + elif shape_type == "hline": + if position == set(["top", "left"]): + return _df_anno(L, B, iX, Y[aiX]) + if position == set(["top", "right"]): + return _df_anno(R, B, aX, Y[aaX]) + if position == set(["top"]): + return _df_anno(C, B, eX, eY) + if position == set(["bottom", "left"]): + return _df_anno(L, T, iX, Y[aiX]) + if position == set(["bottom", "right"]): + return _df_anno(R, T, aX, Y[aaX]) + if position == set(["bottom"]): + return _df_anno(C, T, eX, eY) + if position == set(["left"]): + return _df_anno(R, M, iX, Y[aiX]) + if position == set(["right"]): + return _df_anno(L, M, aX, Y[aaX]) + raise ValueError('Invalid annotation position "%s"' % (pos_str,)) + + +def annotation_params_for_rect(shape_type, shape_args, position): + x0 = shape_args["x0"] + x1 = shape_args["x1"] + y0 = shape_args["y0"] + y1 = shape_args["y1"] + + position, pos_str = _prepare_position(position, prepend_inside=True) + if position == set(["inside", "top", "left"]): + return _df_anno("left", "top", min([x0, x1]), max([y0, y1])) + if position == set(["inside", "top", "right"]): + return _df_anno("right", "top", max([x0, x1]), max([y0, y1])) + if position == set(["inside", "top"]): + return _df_anno("center", "top", _mean([x0, x1]), max([y0, y1])) + if position == set(["inside", "bottom", "left"]): + return _df_anno("left", "bottom", min([x0, x1]), min([y0, y1])) + if position == set(["inside", "bottom", "right"]): + return _df_anno("right", "bottom", max([x0, x1]), min([y0, y1])) + if position == set(["inside", "bottom"]): + return _df_anno("center", "bottom", _mean([x0, x1]), min([y0, y1])) + if position == set(["inside", "left"]): + return _df_anno("left", "middle", min([x0, x1]), _mean([y0, y1])) + if position == set(["inside", "right"]): + return _df_anno("right", "middle", max([x0, x1]), _mean([y0, y1])) + if position == set(["inside"]): + # TODO: Do we want this? + return _df_anno("center", "middle", _mean([x0, x1]), _mean([y0, y1])) + if position == set(["outside", "top", "left"]): + return _df_anno( + "right" if shape_type == "vrect" else "left", + "bottom" if shape_type == "hrect" else "top", + min([x0, x1]), + max([y0, y1]), + ) + if position == set(["outside", "top", "right"]): + return _df_anno( + "left" if shape_type == "vrect" else "right", + "bottom" if shape_type == "hrect" else "top", + max([x0, x1]), + max([y0, y1]), + ) + if position == set(["outside", "top"]): + return _df_anno("center", "bottom", _mean([x0, x1]), max([y0, y1])) + if position == set(["outside", "bottom", "left"]): + return _df_anno( + "right" if shape_type == "vrect" else "left", + "top" if shape_type == "hrect" else "bottom", + min([x0, x1]), + min([y0, y1]), + ) + if position == set(["outside", "bottom", "right"]): + return _df_anno( + "left" if shape_type == "vrect" else "right", + "top" if shape_type == "hrect" else "bottom", + max([x0, x1]), + min([y0, y1]), + ) + if position == set(["outside", "bottom"]): + return _df_anno("center", "top", _mean([x0, x1]), min([y0, y1])) + if position == set(["outside", "left"]): + return _df_anno("right", "middle", min([x0, x1]), _mean([y0, y1])) + if position == set(["outside", "right"]): + return _df_anno("left", "middle", max([x0, x1]), _mean([y0, y1])) + raise ValueError("Invalid annotation position %s" % (pos_str,)) + + +def axis_spanning_shape_annotation(annotation, shape_type, shape_args, kwargs): + """ + annotation: a go.layout.Annotation object, a dict describing an annotation, or None + shape_type: one of 'vline', 'hline', 'vrect', 'hrect' and determines how the + x, y, xanchor, and yanchor values are set. + shape_args: the parameters used to draw the shape, which are used to place the annotation + kwargs: a dictionary that was the kwargs of a + _process_multiple_axis_spanning_shapes spanning shapes call. Items in this + dict whose keys start with 'annotation_' will be extracted and the keys with + the 'annotation_' part stripped off will be used to assign properties of the + new annotation. + + Property precedence: + The annotation's x, y, xanchor, and yanchor properties are set based on the + shape_type argument. Each property already specified in the annotation or + through kwargs will be left as is (not replaced by the value computed using + shape_type). Note that the xref and yref properties will in general get + overwritten if the result of this function is passed to an add_annotation + called with the row and col parameters specified. + + Returns an annotation populated with fields based on the + annotation_position, annotation_ prefixed kwargs or the original annotation + passed in to this function. + """ + # set properties based on annotation_ prefixed kwargs + prefix = "annotation_" + len_prefix = len(prefix) + annotation_keys = list(filter(lambda k: k.startswith(prefix), kwargs.keys())) + # If no annotation or annotation-key is specified, return None as we don't + # want an annotation in this case + if annotation is None and len(annotation_keys) == 0: + return None + # TODO: Would it be better if annotation were initialized to an instance of + # go.layout.Annotation ? + if annotation is None: + annotation = dict() + for k in annotation_keys: + if k == "annotation_position": + # don't set so that Annotation constructor doesn't complain + continue + subk = k[len_prefix:] + annotation[subk] = kwargs[k] + # set x, y, xanchor, yanchor based on shape_type and position + annotation_position = None + if "annotation_position" in kwargs.keys(): + annotation_position = kwargs["annotation_position"] + if shape_type.endswith("line"): + shape_dict = annotation_params_for_line( + shape_type, shape_args, annotation_position + ) + elif shape_type.endswith("rect"): + shape_dict = annotation_params_for_rect( + shape_type, shape_args, annotation_position + ) + for k in shape_dict.keys(): + # only set property derived from annotation_position if it hasn't already been set + # see above: this would be better as a go.layout.Annotation then the key + # would be checked for validity here (otherwise it is checked later, + # which I guess is ok too) + if (k not in annotation) or (annotation[k] is None): + annotation[k] = shape_dict[k] + return annotation + + +def split_dict_by_key_prefix(d, prefix): + """ + Returns two dictionaries, one containing all the items whose keys do not + start with a prefix and another containing all the items whose keys do start + with the prefix. Note that the prefix is not removed from the keys. + """ + no_prefix = dict() + with_prefix = dict() + for k in d.keys(): + if k.startswith(prefix): + with_prefix[k] = d[k] + else: + no_prefix[k] = d[k] + return (no_prefix, with_prefix) diff --git a/venv/lib/python3.8/site-packages/plotly/subplots.py b/venv/lib/python3.8/site-packages/plotly/subplots.py new file mode 100644 index 0000000..e418390 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/subplots.py @@ -0,0 +1,325 @@ +import plotly.graph_objects as go +from . import _subplots as _sub +from ._subplots import SubplotXY, SubplotDomain, SubplotRef # noqa: F401 + + +def make_subplots( + rows=1, + cols=1, + shared_xaxes=False, + shared_yaxes=False, + start_cell="top-left", + print_grid=False, + horizontal_spacing=None, + vertical_spacing=None, + subplot_titles=None, + column_widths=None, + row_heights=None, + specs=None, + insets=None, + column_titles=None, + row_titles=None, + x_title=None, + y_title=None, + figure=None, + **kwargs, +) -> go.Figure: + """ + Return an instance of plotly.graph_objs.Figure with predefined subplots + configured in 'layout'. + + Parameters + ---------- + rows: int (default 1) + Number of rows in the subplot grid. Must be greater than zero. + + cols: int (default 1) + Number of columns in the subplot grid. Must be greater than zero. + + shared_xaxes: boolean or str (default False) + Assign shared (linked) x-axes for 2D cartesian subplots + + - True or 'columns': Share axes among subplots in the same column + - 'rows': Share axes among subplots in the same row + - 'all': Share axes across all subplots in the grid. + + shared_yaxes: boolean or str (default False) + Assign shared (linked) y-axes for 2D cartesian subplots + + - 'columns': Share axes among subplots in the same column + - True or 'rows': Share axes among subplots in the same row + - 'all': Share axes across all subplots in the grid. + + start_cell: 'bottom-left' or 'top-left' (default 'top-left') + Choose the starting cell in the subplot grid used to set the + domains_grid of the subplots. + + - 'top-left': Subplots are numbered with (1, 1) in the top + left corner + - 'bottom-left': Subplots are numbererd with (1, 1) in the bottom + left corner + + print_grid: boolean (default False): + If True, prints a string representation of the plot grid. Grid may + also be printed using the `Figure.print_grid()` method on the + resulting figure. + + horizontal_spacing: float (default 0.2 / cols) + Space between subplot columns in normalized plot coordinates. Must be + a float between 0 and 1. + + Applies to all columns (use 'specs' subplot-dependents spacing) + + vertical_spacing: float (default 0.3 / rows) + Space between subplot rows in normalized plot coordinates. Must be + a float between 0 and 1. + + Applies to all rows (use 'specs' subplot-dependents spacing) + + subplot_titles: list of str or None (default None) + Title of each subplot as a list in row-major ordering. + + Empty strings ("") can be included in the list if no subplot title + is desired in that space so that the titles are properly indexed. + + specs: list of lists of dict or None (default None) + Per subplot specifications of subplot type, row/column spanning, and + spacing. + + ex1: specs=[[{}, {}], [{'colspan': 2}, None]] + + ex2: specs=[[{'rowspan': 2}, {}], [None, {}]] + + - Indices of the outer list correspond to subplot grid rows + starting from the top, if start_cell='top-left', + or bottom, if start_cell='bottom-left'. + The number of rows in 'specs' must be equal to 'rows'. + + - Indices of the inner lists correspond to subplot grid columns + starting from the left. The number of columns in 'specs' + must be equal to 'cols'. + + - Each item in the 'specs' list corresponds to one subplot + in a subplot grid. (N.B. The subplot grid has exactly 'rows' + times 'cols' cells.) + + - Use None for a blank a subplot cell (or to move past a col/row span). + + - Note that specs[0][0] has the specs of the 'start_cell' subplot. + + - Each item in 'specs' is a dictionary. + The available keys are: + * type (string, default 'xy'): Subplot type. One of + - 'xy': 2D Cartesian subplot type for scatter, bar, etc. + - 'scene': 3D Cartesian subplot for scatter3d, cone, etc. + - 'polar': Polar subplot for scatterpolar, barpolar, etc. + - 'ternary': Ternary subplot for scatterternary + - 'map': Map subplot for scattermap + - 'mapbox': Mapbox subplot for scattermapbox + - 'domain': Subplot type for traces that are individually + positioned. pie, parcoords, parcats, etc. + - trace type: A trace type which will be used to determine + the appropriate subplot type for that trace + + * secondary_y (bool, default False): If True, create a secondary + y-axis positioned on the right side of the subplot. Only valid + if type='xy'. + * colspan (int, default 1): number of subplot columns + for this subplot to span. + * rowspan (int, default 1): number of subplot rows + for this subplot to span. + * l (float, default 0.0): padding left of cell + * r (float, default 0.0): padding right of cell + * t (float, default 0.0): padding right of cell + * b (float, default 0.0): padding bottom of cell + + - Note: Use 'horizontal_spacing' and 'vertical_spacing' to adjust + the spacing in between the subplots. + + insets: list of dict or None (default None): + Inset specifications. Insets are subplots that overlay grid subplots + + - Each item in 'insets' is a dictionary. + The available keys are: + + * cell (tuple, default=(1,1)): (row, col) index of the + subplot cell to overlay inset axes onto. + * type (string, default 'xy'): Subplot type + * l (float, default=0.0): padding left of inset + in fraction of cell width + * w (float or 'to_end', default='to_end') inset width + in fraction of cell width ('to_end': to cell right edge) + * b (float, default=0.0): padding bottom of inset + in fraction of cell height + * h (float or 'to_end', default='to_end') inset height + in fraction of cell height ('to_end': to cell top edge) + + column_widths: list of numbers or None (default None) + list of length `cols` of the relative widths of each column of subplots. + Values are normalized internally and used to distribute overall width + of the figure (excluding padding) among the columns. + + For backward compatibility, may also be specified using the + `column_width` keyword argument. + + row_heights: list of numbers or None (default None) + list of length `rows` of the relative heights of each row of subplots. + If start_cell='top-left' then row heights are applied top to bottom. + Otherwise, if start_cell='bottom-left' then row heights are applied + bottom to top. + + For backward compatibility, may also be specified using the + `row_width` kwarg. If specified as `row_width`, then the width values + are applied from bottom to top regardless of the value of start_cell. + This matches the legacy behavior of the `row_width` argument. + + column_titles: list of str or None (default None) + list of length `cols` of titles to place above the top subplot in + each column. + + row_titles: list of str or None (default None) + list of length `rows` of titles to place on the right side of each + row of subplots. If start_cell='top-left' then row titles are + applied top to bottom. Otherwise, if start_cell='bottom-left' then + row titles are applied bottom to top. + + x_title: str or None (default None) + Title to place below the bottom row of subplots, + centered horizontally + + y_title: str or None (default None) + Title to place to the left of the left column of subplots, + centered vertically + + figure: go.Figure or None (default None) + If None, a new go.Figure instance will be created and its axes will be + populated with those corresponding to the requested subplot geometry and + this new figure will be returned. + If a go.Figure instance, the axes will be added to the + layout of this figure and this figure will be returned. If the figure + already contains axes, they will be overwritten. + + Examples + -------- + + Example 1: + + >>> # Stack two subplots vertically, and add a scatter trace to each + >>> from plotly.subplots import make_subplots + >>> import plotly.graph_objects as go + >>> fig = make_subplots(rows=2) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] + [ (2,1) xaxis2,yaxis2 ] + + >>> fig.add_scatter(y=[2, 1, 3], row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_scatter(y=[1, 3, 2], row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + or see Figure.add_trace + + Example 2: + + >>> # Stack a scatter plot + >>> fig = make_subplots(rows=2, shared_xaxes=True) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] + [ (2,1) xaxis2,yaxis2 ] + + >>> fig.add_scatter(y=[2, 1, 3], row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_scatter(y=[1, 3, 2], row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + Example 3: + + >>> # irregular subplot layout (more examples below under 'specs') + >>> fig = make_subplots(rows=2, cols=2, + ... specs=[[{}, {}], + ... [{'colspan': 2}, None]]) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] [ (1,2) xaxis2,yaxis2 ] + [ (2,1) xaxis3,yaxis3 - ] + + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=1, col=2) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_trace(go.Scatter(x=[1,2,3], y=[2,1,2]), row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + Example 4: + + >>> # insets + >>> fig = make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}]) + + This is the format of your plot grid: + [ (1,1) xaxis1,yaxis1 ] + + With insets: + [ xaxis2,yaxis2 ] over [ (1,1) xaxis1,yaxis1 ] + + >>> fig.add_scatter(x=[1,2,3], y=[2,1,1]) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2') # doctest: +ELLIPSIS + Figure(...) + + Example 5: + + >>> # include subplot titles + >>> fig = make_subplots(rows=2, subplot_titles=('Plot 1','Plot 2')) + + This is the format of your plot grid: + [ (1,1) x1,y1 ] + [ (2,1) x2,y2 ] + + >>> fig.add_scatter(x=[1,2,3], y=[2,1,2], row=1, col=1) # doctest: +ELLIPSIS + Figure(...) + >>> fig.add_bar(x=[1,2,3], y=[2,1,2], row=2, col=1) # doctest: +ELLIPSIS + Figure(...) + + Example 6: + + Subplot with mixed subplot types + + >>> fig = make_subplots(rows=2, cols=2, + ... specs=[[{'type': 'xy'}, {'type': 'polar'}], + ... [{'type': 'scene'}, {'type': 'ternary'}]]) + + >>> fig.add_traces( + ... [go.Scatter(y=[2, 3, 1]), + ... go.Scatterpolar(r=[1, 3, 2], theta=[0, 45, 90]), + ... go.Scatter3d(x=[1, 2, 1], y=[2, 3, 1], z=[0, 3, 5]), + ... go.Scatterternary(a=[0.1, 0.2, 0.1], + ... b=[0.2, 0.3, 0.1], + ... c=[0.7, 0.5, 0.8])], + ... rows=[1, 1, 2, 2], + ... cols=[1, 2, 1, 2]) # doctest: +ELLIPSIS + Figure(...) + """ + + return _sub.make_subplots( + rows, + cols, + shared_xaxes, + shared_yaxes, + start_cell, + print_grid, + horizontal_spacing, + vertical_spacing, + subplot_titles, + column_widths, + row_heights, + specs, + insets, + column_titles, + row_titles, + x_title, + y_title, + figure, + **kwargs, + ) diff --git a/venv/lib/python3.8/site-packages/plotly/tools.py b/venv/lib/python3.8/site-packages/plotly/tools.py new file mode 100644 index 0000000..67f8282 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/tools.py @@ -0,0 +1,710 @@ +""" +tools +===== + +Functions that USERS will possibly want access to. + +""" + +import json +import warnings + +import os + +from plotly import exceptions, optional_imports +from plotly.files import PLOTLY_DIR + +DEFAULT_PLOTLY_COLORS = [ + "rgb(31, 119, 180)", + "rgb(255, 127, 14)", + "rgb(44, 160, 44)", + "rgb(214, 39, 40)", + "rgb(148, 103, 189)", + "rgb(140, 86, 75)", + "rgb(227, 119, 194)", + "rgb(127, 127, 127)", + "rgb(188, 189, 34)", + "rgb(23, 190, 207)", +] + + +REQUIRED_GANTT_KEYS = ["Task", "Start", "Finish"] +PLOTLY_SCALES = { + "Greys": ["rgb(0,0,0)", "rgb(255,255,255)"], + "YlGnBu": ["rgb(8,29,88)", "rgb(255,255,217)"], + "Greens": ["rgb(0,68,27)", "rgb(247,252,245)"], + "YlOrRd": ["rgb(128,0,38)", "rgb(255,255,204)"], + "Bluered": ["rgb(0,0,255)", "rgb(255,0,0)"], + "RdBu": ["rgb(5,10,172)", "rgb(178,10,28)"], + "Reds": ["rgb(220,220,220)", "rgb(178,10,28)"], + "Blues": ["rgb(5,10,172)", "rgb(220,220,220)"], + "Picnic": ["rgb(0,0,255)", "rgb(255,0,0)"], + "Rainbow": ["rgb(150,0,90)", "rgb(255,0,0)"], + "Portland": ["rgb(12,51,131)", "rgb(217,30,30)"], + "Jet": ["rgb(0,0,131)", "rgb(128,0,0)"], + "Hot": ["rgb(0,0,0)", "rgb(255,255,255)"], + "Blackbody": ["rgb(0,0,0)", "rgb(160,200,255)"], + "Earth": ["rgb(0,0,130)", "rgb(255,255,255)"], + "Electric": ["rgb(0,0,0)", "rgb(255,250,220)"], + "Viridis": ["rgb(68,1,84)", "rgb(253,231,37)"], +} + +# color constants for violin plot +DEFAULT_FILLCOLOR = "#1f77b4" +DEFAULT_HISTNORM = "probability density" +ALTERNATIVE_HISTNORM = "probability" + + +# Warning format +def warning_on_one_line(message, category, filename, lineno, file=None, line=None): + return "%s:%s: %s:\n\n%s\n\n" % (filename, lineno, category.__name__, message) + + +warnings.formatwarning = warning_on_one_line + + +### mpl-related tools ### +def mpl_to_plotly(fig, resize=False, strip_style=False, verbose=False): + """Convert a matplotlib figure to plotly dictionary and send. + + All available information about matplotlib visualizations are stored + within a matplotlib.figure.Figure object. You can create a plot in python + using matplotlib, store the figure object, and then pass this object to + the fig_to_plotly function. In the background, mplexporter is used to + crawl through the mpl figure object for appropriate information. This + information is then systematically sent to the PlotlyRenderer which + creates the JSON structure used to make plotly visualizations. Finally, + these dictionaries are sent to plotly and your browser should open up a + new tab for viewing! Optionally, if you're working in IPython, you can + set notebook=True and the PlotlyRenderer will call plotly.iplot instead + of plotly.plot to have the graph appear directly in the IPython notebook. + + Note, this function gives the user access to a simple, one-line way to + render an mpl figure in plotly. If you need to trouble shoot, you can do + this step manually by NOT running this fuction and entereing the following: + + =========================================================================== + from plotly.matplotlylib import mplexporter, PlotlyRenderer + + # create an mpl figure and store it under a varialble 'fig' + + renderer = PlotlyRenderer() + exporter = mplexporter.Exporter(renderer) + exporter.run(fig) + =========================================================================== + + You can then inspect the JSON structures by accessing these: + + renderer.layout -- a plotly layout dictionary + renderer.data -- a list of plotly data dictionaries + """ + matplotlylib = optional_imports.get_module("plotly.matplotlylib") + if matplotlylib: + renderer = matplotlylib.PlotlyRenderer() + matplotlylib.Exporter(renderer).run(fig) + if resize: + renderer.resize() + if strip_style: + renderer.strip_style() + if verbose: + print(renderer.msg) + return renderer.plotly_fig + else: + warnings.warn( + "To use Plotly's matplotlylib functionality, you'll need to have " + "matplotlib successfully installed with all of its dependencies. " + "You're getting this error because matplotlib or one of its " + "dependencies doesn't seem to be installed correctly." + ) + + +### graph_objs related tools ### + + +def get_subplots(rows=1, columns=1, print_grid=False, **kwargs): + """Return a dictionary instance with the subplots set in 'layout'. + + Example 1: + # stack two subplots vertically + fig = tools.get_subplots(rows=2) + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x1', yaxis='y1')] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')] + + Example 2: + # print out string showing the subplot grid you've put in the layout + fig = tools.get_subplots(rows=3, columns=2, print_grid=True) + + Keywords arguments with constant defaults: + + rows (kwarg, int greater than 0, default=1): + Number of rows, evenly spaced vertically on the figure. + + columns (kwarg, int greater than 0, default=1): + Number of columns, evenly spaced horizontally on the figure. + + horizontal_spacing (kwarg, float in [0,1], default=0.1): + Space between subplot columns. Applied to all columns. + + vertical_spacing (kwarg, float in [0,1], default=0.05): + Space between subplot rows. Applied to all rows. + + print_grid (kwarg, True | False, default=False): + If True, prints a tab-delimited string representation + of your plot grid. + + Keyword arguments with variable defaults: + + horizontal_spacing (kwarg, float in [0,1], default=0.2 / columns): + Space between subplot columns. + + vertical_spacing (kwarg, float in [0,1], default=0.3 / rows): + Space between subplot rows. + + """ + # TODO: protected until #282 + from plotly.graph_objs import graph_objs + + warnings.warn( + "tools.get_subplots is depreciated. Please use tools.make_subplots instead." + ) + + # Throw exception for non-integer rows and columns + if not isinstance(rows, int) or rows <= 0: + raise Exception("Keyword argument 'rows' must be an int greater than 0") + if not isinstance(columns, int) or columns <= 0: + raise Exception("Keyword argument 'columns' must be an int greater than 0") + + # Throw exception if non-valid kwarg is sent + VALID_KWARGS = ["horizontal_spacing", "vertical_spacing"] + for key in kwargs.keys(): + if key not in VALID_KWARGS: + raise Exception("Invalid keyword argument: '{0}'".format(key)) + + # Set 'horizontal_spacing' / 'vertical_spacing' w.r.t. rows / columns + try: + horizontal_spacing = float(kwargs["horizontal_spacing"]) + except KeyError: + horizontal_spacing = 0.2 / columns + try: + vertical_spacing = float(kwargs["vertical_spacing"]) + except KeyError: + vertical_spacing = 0.3 / rows + + fig = dict(layout=graph_objs.Layout()) # will return this at the end + plot_width = (1 - horizontal_spacing * (columns - 1)) / columns + plot_height = (1 - vertical_spacing * (rows - 1)) / rows + plot_num = 0 + for rrr in range(rows): + for ccc in range(columns): + xaxis_name = "xaxis{0}".format(plot_num + 1) + x_anchor = "y{0}".format(plot_num + 1) + x_start = (plot_width + horizontal_spacing) * ccc + x_end = x_start + plot_width + + yaxis_name = "yaxis{0}".format(plot_num + 1) + y_anchor = "x{0}".format(plot_num + 1) + y_start = (plot_height + vertical_spacing) * rrr + y_end = y_start + plot_height + + xaxis = dict(domain=[x_start, x_end], anchor=x_anchor) + fig["layout"][xaxis_name] = xaxis + yaxis = dict(domain=[y_start, y_end], anchor=y_anchor) + fig["layout"][yaxis_name] = yaxis + plot_num += 1 + + if print_grid: + print("This is the format of your plot grid!") + grid_string = "" + plot = 1 + for rrr in range(rows): + grid_line = "" + for ccc in range(columns): + grid_line += "[{0}]\t".format(plot) + plot += 1 + grid_string = grid_line + "\n" + grid_string + print(grid_string) + + return graph_objs.Figure(fig) # forces us to validate what we just did... + + +def make_subplots( + rows=1, + cols=1, + shared_xaxes=False, + shared_yaxes=False, + start_cell="top-left", + print_grid=None, + **kwargs, +): + """Return an instance of plotly.graph_objs.Figure + with the subplots domain set in 'layout'. + + Example 1: + # stack two subplots vertically + fig = tools.make_subplots(rows=2) + + This is the format of your plot grid: + [ (1,1) x1,y1 ] + [ (2,1) x2,y2 ] + + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')] + + # or see Figure.add_trace + + Example 2: + # subplots with shared x axes + fig = tools.make_subplots(rows=2, shared_xaxes=True) + + This is the format of your plot grid: + [ (1,1) x1,y1 ] + [ (2,1) x1,y2 ] + + + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], yaxis='y2')] + + Example 3: + # irregular subplot layout (more examples below under 'specs') + fig = tools.make_subplots(rows=2, cols=2, + specs=[[{}, {}], + [{'colspan': 2}, None]]) + + This is the format of your plot grid! + [ (1,1) x1,y1 ] [ (1,2) x2,y2 ] + [ (2,1) x3,y3 - ] + + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x3', yaxis='y3')] + + Example 4: + # insets + fig = tools.make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}]) + + This is the format of your plot grid! + [ (1,1) x1,y1 ] + + With insets: + [ x2,y2 ] over [ (1,1) x1,y1 ] + + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')] + + Example 5: + # include subplot titles + fig = tools.make_subplots(rows=2, subplot_titles=('Plot 1','Plot 2')) + + This is the format of your plot grid: + [ (1,1) x1,y1 ] + [ (2,1) x2,y2 ] + + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')] + + Example 6: + # Include subplot title on one plot (but not all) + fig = tools.make_subplots(insets=[{'cell': (1,1), 'l': 0.7, 'b': 0.3}], + subplot_titles=('','Inset')) + + This is the format of your plot grid! + [ (1,1) x1,y1 ] + + With insets: + [ x2,y2 ] over [ (1,1) x1,y1 ] + + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2])] + fig['data'] += [Scatter(x=[1,2,3], y=[2,1,2], xaxis='x2', yaxis='y2')] + + Keywords arguments with constant defaults: + + rows (kwarg, int greater than 0, default=1): + Number of rows in the subplot grid. + + cols (kwarg, int greater than 0, default=1): + Number of columns in the subplot grid. + + shared_xaxes (kwarg, boolean or list, default=False) + Assign shared x axes. + If True, subplots in the same grid column have one common + shared x-axis at the bottom of the gird. + + To assign shared x axes per subplot grid cell (see 'specs'), + send list (or list of lists, one list per shared x axis) + of cell index tuples. + + shared_yaxes (kwarg, boolean or list, default=False) + Assign shared y axes. + If True, subplots in the same grid row have one common + shared y-axis on the left-hand side of the gird. + + To assign shared y axes per subplot grid cell (see 'specs'), + send list (or list of lists, one list per shared y axis) + of cell index tuples. + + start_cell (kwarg, 'bottom-left' or 'top-left', default='top-left') + Choose the starting cell in the subplot grid used to set the + domains of the subplots. + + print_grid (kwarg, boolean, default=True): + If True, prints a tab-delimited string representation of + your plot grid. + + Keyword arguments with variable defaults: + + horizontal_spacing (kwarg, float in [0,1], default=0.2 / cols): + Space between subplot columns. + Applies to all columns (use 'specs' subplot-dependents spacing) + + vertical_spacing (kwarg, float in [0,1], default=0.3 / rows): + Space between subplot rows. + Applies to all rows (use 'specs' subplot-dependents spacing) + + subplot_titles (kwarg, list of strings, default=empty list): + Title of each subplot. + "" can be included in the list if no subplot title is desired in + that space so that the titles are properly indexed. + + specs (kwarg, list of lists of dictionaries): + Subplot specifications. + + ex1: specs=[[{}, {}], [{'colspan': 2}, None]] + + ex2: specs=[[{'rowspan': 2}, {}], [None, {}]] + + - Indices of the outer list correspond to subplot grid rows + starting from the bottom. The number of rows in 'specs' + must be equal to 'rows'. + + - Indices of the inner lists correspond to subplot grid columns + starting from the left. The number of columns in 'specs' + must be equal to 'cols'. + + - Each item in the 'specs' list corresponds to one subplot + in a subplot grid. (N.B. The subplot grid has exactly 'rows' + times 'cols' cells.) + + - Use None for blank a subplot cell (or to move pass a col/row span). + + - Note that specs[0][0] has the specs of the 'start_cell' subplot. + + - Each item in 'specs' is a dictionary. + The available keys are: + + * is_3d (boolean, default=False): flag for 3d scenes + * colspan (int, default=1): number of subplot columns + for this subplot to span. + * rowspan (int, default=1): number of subplot rows + for this subplot to span. + * l (float, default=0.0): padding left of cell + * r (float, default=0.0): padding right of cell + * t (float, default=0.0): padding right of cell + * b (float, default=0.0): padding bottom of cell + + - Use 'horizontal_spacing' and 'vertical_spacing' to adjust + the spacing in between the subplots. + + insets (kwarg, list of dictionaries): + Inset specifications. + + - Each item in 'insets' is a dictionary. + The available keys are: + + * cell (tuple, default=(1,1)): (row, col) index of the + subplot cell to overlay inset axes onto. + * is_3d (boolean, default=False): flag for 3d scenes + * l (float, default=0.0): padding left of inset + in fraction of cell width + * w (float or 'to_end', default='to_end') inset width + in fraction of cell width ('to_end': to cell right edge) + * b (float, default=0.0): padding bottom of inset + in fraction of cell height + * h (float or 'to_end', default='to_end') inset height + in fraction of cell height ('to_end': to cell top edge) + + column_width (kwarg, list of numbers) + Column_width specifications + + - Functions similarly to `column_width` of `plotly.graph_objs.Table`. + Specify a list that contains numbers where the amount of numbers in + the list is equal to `cols`. + + - The numbers in the list indicate the proportions that each column + domains take across the full horizontal domain excluding padding. + + - For example, if columns_width=[3, 1], horizontal_spacing=0, and + cols=2, the domains for each column would be [0. 0.75] and [0.75, 1] + + row_width (kwargs, list of numbers) + Row_width specifications + + - Functions similarly to `column_width`. Specify a list that contains + numbers where the amount of numbers in the list is equal to `rows`. + + - The numbers in the list indicate the proportions that each row + domains take along the full vertical domain excluding padding. + + - For example, if row_width=[3, 1], vertical_spacing=0, and + cols=2, the domains for each row from top to botton would be + [0. 0.75] and [0.75, 1] + """ + import plotly.subplots + + warnings.warn( + "plotly.tools.make_subplots is deprecated, " + "please use plotly.subplots.make_subplots instead", + DeprecationWarning, + stacklevel=1, + ) + + return plotly.subplots.make_subplots( + rows=rows, + cols=cols, + shared_xaxes=shared_xaxes, + shared_yaxes=shared_yaxes, + start_cell=start_cell, + print_grid=print_grid, + **kwargs, + ) + + +warnings.filterwarnings( + "default", r"plotly\.tools\.make_subplots is deprecated", DeprecationWarning +) + + +def get_graph_obj(obj, obj_type=None): + """Returns a new graph object. + + OLD FUNCTION: this will *silently* strip out invalid pieces of the object. + NEW FUNCTION: no striping of invalid pieces anymore - only raises error + on unrecognized graph_objs + """ + # TODO: Deprecate or move. #283 + from plotly.graph_objs import graph_objs + + try: + cls = getattr(graph_objs, obj_type) + except (AttributeError, KeyError): + raise exceptions.PlotlyError( + "'{}' is not a recognized graph_obj.".format(obj_type) + ) + return cls(obj) + + +def _replace_newline(obj): + """Replaces '\n' with '
' for all strings in a collection.""" + if isinstance(obj, dict): + d = dict() + for key, val in list(obj.items()): + d[key] = _replace_newline(val) + return d + elif isinstance(obj, list): + temp = list() + for index, entry in enumerate(obj): + temp += [_replace_newline(entry)] + return temp + elif isinstance(obj, str): + s = obj.replace("\n", "
") + if s != obj: + warnings.warn( + "Looks like you used a newline character: '\\n'.\n\n" + "Plotly uses a subset of HTML escape characters\n" + "to do things like newline (
), bold (),\n" + "italics (), etc. Your newline characters \n" + "have been converted to '
' so they will show \n" + "up right on your Plotly figure!" + ) + return s + else: + return obj # we return the actual reference... but DON'T mutate. + + +def return_figure_from_figure_or_data(figure_or_data, validate_figure): + from plotly.graph_objs import Figure + from plotly.basedatatypes import BaseFigure + + validated = False + if isinstance(figure_or_data, dict): + figure = figure_or_data + elif isinstance(figure_or_data, list): + figure = {"data": figure_or_data} + elif isinstance(figure_or_data, BaseFigure): + figure = figure_or_data.to_dict() + validated = True + else: + raise exceptions.PlotlyError( + "The `figure_or_data` positional " + "argument must be " + "`dict`-like, `list`-like, or an instance of plotly.graph_objs.Figure" + ) + + if validate_figure and not validated: + try: + figure = Figure(**figure).to_dict() + except exceptions.PlotlyError as err: + raise exceptions.PlotlyError( + "Invalid 'figure_or_data' argument. " + "Plotly will not be able to properly " + "parse the resulting JSON. If you " + "want to send this 'figure_or_data' " + "to Plotly anyway (not recommended), " + "you can set 'validate=False' as a " + "plot option.\nHere's why you're " + "seeing this error:\n\n{0}" + "".format(err) + ) + if not figure["data"]: + raise exceptions.PlotlyEmptyDataError( + "Empty data list found. Make sure that you populated the " + "list of data objects you're sending and try again.\n" + "Questions? Visit support.plot.ly" + ) + + return figure + + +# Default colours for finance charts +_DEFAULT_INCREASING_COLOR = "#3D9970" # http://clrs.cc +_DEFAULT_DECREASING_COLOR = "#FF4136" + +DIAG_CHOICES = ["scatter", "histogram", "box"] +VALID_COLORMAP_TYPES = ["cat", "seq"] + + +# Deprecations +class FigureFactory(object): + @staticmethod + def _deprecated(old_method, new_method=None): + if new_method is None: + # The method name stayed the same. + new_method = old_method + warnings.warn( + "plotly.tools.FigureFactory.{} is deprecated. " + "Use plotly.figure_factory.{}".format(old_method, new_method) + ) + + @staticmethod + def create_2D_density(*args, **kwargs): + FigureFactory._deprecated("create_2D_density", "create_2d_density") + from plotly.figure_factory import create_2d_density + + return create_2d_density(*args, **kwargs) + + @staticmethod + def create_annotated_heatmap(*args, **kwargs): + FigureFactory._deprecated("create_annotated_heatmap") + from plotly.figure_factory import create_annotated_heatmap + + return create_annotated_heatmap(*args, **kwargs) + + @staticmethod + def create_candlestick(*args, **kwargs): + FigureFactory._deprecated("create_candlestick") + from plotly.figure_factory import create_candlestick + + return create_candlestick(*args, **kwargs) + + @staticmethod + def create_dendrogram(*args, **kwargs): + FigureFactory._deprecated("create_dendrogram") + from plotly.figure_factory import create_dendrogram + + return create_dendrogram(*args, **kwargs) + + @staticmethod + def create_distplot(*args, **kwargs): + FigureFactory._deprecated("create_distplot") + from plotly.figure_factory import create_distplot + + return create_distplot(*args, **kwargs) + + @staticmethod + def create_facet_grid(*args, **kwargs): + FigureFactory._deprecated("create_facet_grid") + from plotly.figure_factory import create_facet_grid + + return create_facet_grid(*args, **kwargs) + + @staticmethod + def create_gantt(*args, **kwargs): + FigureFactory._deprecated("create_gantt") + from plotly.figure_factory import create_gantt + + return create_gantt(*args, **kwargs) + + @staticmethod + def create_ohlc(*args, **kwargs): + FigureFactory._deprecated("create_ohlc") + from plotly.figure_factory import create_ohlc + + return create_ohlc(*args, **kwargs) + + @staticmethod + def create_quiver(*args, **kwargs): + FigureFactory._deprecated("create_quiver") + from plotly.figure_factory import create_quiver + + return create_quiver(*args, **kwargs) + + @staticmethod + def create_scatterplotmatrix(*args, **kwargs): + FigureFactory._deprecated("create_scatterplotmatrix") + from plotly.figure_factory import create_scatterplotmatrix + + return create_scatterplotmatrix(*args, **kwargs) + + @staticmethod + def create_streamline(*args, **kwargs): + FigureFactory._deprecated("create_streamline") + from plotly.figure_factory import create_streamline + + return create_streamline(*args, **kwargs) + + @staticmethod + def create_table(*args, **kwargs): + FigureFactory._deprecated("create_table") + from plotly.figure_factory import create_table + + return create_table(*args, **kwargs) + + @staticmethod + def create_trisurf(*args, **kwargs): + FigureFactory._deprecated("create_trisurf") + from plotly.figure_factory import create_trisurf + + return create_trisurf(*args, **kwargs) + + @staticmethod + def create_violin(*args, **kwargs): + FigureFactory._deprecated("create_violin") + from plotly.figure_factory import create_violin + + return create_violin(*args, **kwargs) + + +def get_config_plotly_server_url(): + """ + Function to get the .config file's 'plotly_domain' without importing + the chart_studio package. This property is needed to compute the default + value of the plotly.js config plotlyServerURL, so it is independent of + the chart_studio integration and still needs to live in + + Returns + ------- + str + """ + config_file = os.path.join(PLOTLY_DIR, ".config") + default_server_url = "https://plot.ly" + if not os.path.exists(config_file): + return default_server_url + with open(config_file, "rt") as f: + try: + config_dict = json.load(f) + if not isinstance(config_dict, dict): + config_dict = {} + except Exception: + # TODO: issue a warning and bubble it up + config_dict = {} + + return config_dict.get("plotly_domain", default_server_url) diff --git a/venv/lib/python3.8/site-packages/plotly/utils.py b/venv/lib/python3.8/site-packages/plotly/utils.py new file mode 100644 index 0000000..f2ecc84 --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/utils.py @@ -0,0 +1,208 @@ +import textwrap +from pprint import PrettyPrinter + +from _plotly_utils.utils import NotEncodable, PlotlyJSONEncoder, get_module # noqa: F401 +from _plotly_utils.data_utils import image_array_to_data_uri # noqa: F401 + + +# Pretty printing +def _list_repr_elided(v, threshold=200, edgeitems=3, indent=0, width=80): + """ + Return a string representation for of a list where list is elided if + it has more than n elements + + Parameters + ---------- + v : list + Input list + threshold : + Maximum number of elements to display + + Returns + ------- + str + """ + if isinstance(v, list): + open_char, close_char = "[", "]" + elif isinstance(v, tuple): + open_char, close_char = "(", ")" + else: + raise ValueError("Invalid value of type: %s" % type(v)) + + if len(v) <= threshold: + disp_v = v + else: + disp_v = list(v[:edgeitems]) + ["..."] + list(v[-edgeitems:]) + + v_str = open_char + ", ".join([str(e) for e in disp_v]) + close_char + + v_wrapped = "\n".join( + textwrap.wrap( + v_str, + width=width, + initial_indent=" " * (indent + 1), + subsequent_indent=" " * (indent + 1), + ) + ).strip() + return v_wrapped + + +class ElidedWrapper(object): + """ + Helper class that wraps values of certain types and produces a custom + __repr__() that may be elided and is suitable for use during pretty + printing + """ + + def __init__(self, v, threshold, indent): + self.v = v + self.indent = indent + self.threshold = threshold + + @staticmethod + def is_wrappable(v): + numpy = get_module("numpy") + if isinstance(v, (list, tuple)) and len(v) > 0 and not isinstance(v[0], dict): + return True + elif numpy and isinstance(v, numpy.ndarray): + return True + elif isinstance(v, str): + return True + else: + return False + + def __repr__(self): + numpy = get_module("numpy") + if isinstance(self.v, (list, tuple)): + # Handle lists/tuples + res = _list_repr_elided( + self.v, threshold=self.threshold, indent=self.indent + ) + return res + elif numpy and isinstance(self.v, numpy.ndarray): + # Handle numpy arrays + + # Get original print opts + orig_opts = numpy.get_printoptions() + + # Set threshold to self.max_list_elements + numpy.set_printoptions( + **dict(orig_opts, threshold=self.threshold, edgeitems=3, linewidth=80) + ) + + res = self.v.__repr__() + + # Add indent to all but the first line + res_lines = res.split("\n") + res = ("\n" + " " * self.indent).join(res_lines) + + # Restore print opts + numpy.set_printoptions(**orig_opts) + return res + elif isinstance(self.v, str): + # Handle strings + if len(self.v) > 80: + return "(" + repr(self.v[:30]) + " ... " + repr(self.v[-30:]) + ")" + else: + return self.v.__repr__() + else: + return self.v.__repr__() + + +class ElidedPrettyPrinter(PrettyPrinter): + """ + PrettyPrinter subclass that elides long lists/arrays/strings + """ + + def __init__(self, *args, **kwargs): + self.threshold = kwargs.pop("threshold", 200) + PrettyPrinter.__init__(self, *args, **kwargs) + + def _format(self, val, stream, indent, allowance, context, level): + if ElidedWrapper.is_wrappable(val): + elided_val = ElidedWrapper(val, self.threshold, indent) + + return self._format(elided_val, stream, indent, allowance, context, level) + else: + return PrettyPrinter._format( + self, val, stream, indent, allowance, context, level + ) + + +def node_generator(node, path=()): + """ + General, node-yielding generator. + + Yields (node, path) tuples when it finds values that are dict + instances. + + A path is a sequence of hashable values that can be used as either keys to + a mapping (dict) or indices to a sequence (list). A path is always wrt to + some object. Given an object, a path explains how to get from the top level + of that object to a nested value in the object. + + :param (dict) node: Part of a dict to be traversed. + :param (tuple[str]) path: Defines the path of the current node. + :return: (Generator) + + Example: + + >>> for node, path in node_generator({'a': {'b': 5}}): + ... print(node, path) + {'a': {'b': 5}} () + {'b': 5} ('a',) + + """ + if not isinstance(node, dict): + return # in case it's called with a non-dict node at top level + yield node, path + for key, val in node.items(): + if isinstance(val, dict): + for item in node_generator(val, path + (key,)): + yield item + + +def get_by_path(obj, path): + """ + Iteratively get on obj for each key in path. + + :param (list|dict) obj: The top-level object. + :param (tuple[str]|tuple[int]) path: Keys to access parts of obj. + + :return: (*) + + Example: + + >>> figure = {'data': [{'x': [5]}]} + >>> path = ('data', 0, 'x') + >>> get_by_path(figure, path) + [5] + """ + for key in path: + obj = obj[key] + return obj + + +def decode_unicode(coll): + if isinstance(coll, list): + for no, entry in enumerate(coll): + if isinstance(entry, (dict, list)): + coll[no] = decode_unicode(entry) + else: + if isinstance(entry, str): + try: + coll[no] = str(entry) + except UnicodeEncodeError: + pass + elif isinstance(coll, dict): + keys, vals = list(coll.keys()), list(coll.values()) + for key, val in zip(keys, vals): + if isinstance(val, (dict, list)): + coll[key] = decode_unicode(val) + elif isinstance(val, str): + try: + coll[key] = str(val) + except UnicodeEncodeError: + pass + coll[str(key)] = coll.pop(key) + return coll diff --git a/venv/lib/python3.8/site-packages/plotly/validator_cache.py b/venv/lib/python3.8/site-packages/plotly/validator_cache.py new file mode 100644 index 0000000..7f7f74c --- /dev/null +++ b/venv/lib/python3.8/site-packages/plotly/validator_cache.py @@ -0,0 +1,66 @@ +from _plotly_utils.basevalidators import LiteralValidator +import _plotly_utils.basevalidators as basevalidators +import json +import os.path as opath + +DERIVED_CLASSES = { + "DataValidator": "data", + "LayoutValidator": "layout", +} + + +class ValidatorCache(object): + _cache = {} + _json_cache = None + + @staticmethod + def get_validator(parent_path, prop_name): + if ValidatorCache._json_cache is None: + # Load the JSON validator params from the file + validator_json_path = opath.join( + opath.dirname(__file__), "validators", "_validators.json" + ) + if not opath.exists(validator_json_path): + raise FileNotFoundError( + f"Validator JSON file not found: {validator_json_path}" + ) + with open(validator_json_path, "r") as f: + ValidatorCache._json_cache = json.load(f) + + key = (parent_path, prop_name) + if key not in ValidatorCache._cache: + if "." not in parent_path and prop_name == "type": + # Special case for .type property of traces + validator = LiteralValidator("type", parent_path, parent_path) + else: + lookup_name = None + if parent_path == "layout": + from .graph_objects import Layout + + match = Layout._subplotid_prop_re.match(prop_name) + if match: + lookup_name = match.group(1) + + lookup_name = lookup_name or prop_name + lookup = f"{parent_path}.{lookup_name}" if parent_path else lookup_name + + validator_item = ValidatorCache._json_cache.get(lookup) + validator_classname = validator_item["superclass"] + if validator_classname in DERIVED_CLASSES: + # If the superclass is a derived class, we need to get the base class + # and pass the derived class name as a parameter + base_item = ValidatorCache._json_cache.get( + DERIVED_CLASSES[validator_classname] + ) + validator_params = base_item["params"] + validator_params.update(validator_item["params"]) + validator_classname = base_item["superclass"] + else: + validator_params = validator_item["params"] + validator_params["plotly_name"] = prop_name + validator_class = getattr(basevalidators, validator_classname) + + validator = validator_class(**validator_params) + ValidatorCache._cache[key] = validator + + return ValidatorCache._cache[key] -- cgit v1.2.3-70-g09d2